@silexlabs/silex 3.0.1-alpha.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/.env.default +20 -0
  2. package/.silex.js +67 -8
  3. package/LICENSE +661 -203
  4. package/README.md +37 -35
  5. package/dist/client/client/api.d.ts +90 -0
  6. package/dist/client/client/assetUrl.d.ts +54 -0
  7. package/dist/client/client/config.d.ts +102 -0
  8. package/dist/client/client/events.d.ts +23 -0
  9. package/dist/client/client/expose.d.ts +8 -0
  10. package/dist/client/client/grapesjs/LoginDialog.d.ts +15 -0
  11. package/dist/client/client/grapesjs/PublicationManager.d.ts +73 -0
  12. package/dist/client/client/grapesjs/PublicationUi.d.ts +59 -0
  13. package/dist/client/client/grapesjs/blocks.d.ts +1 -0
  14. package/dist/client/client/grapesjs/breadcrumbs.d.ts +1 -0
  15. package/dist/client/client/grapesjs/css-props.d.ts +6 -0
  16. package/dist/client/client/grapesjs/footer.d.ts +2 -0
  17. package/dist/client/client/grapesjs/img.d.ts +6 -0
  18. package/dist/client/client/grapesjs/index.d.ts +9 -0
  19. package/dist/client/client/grapesjs/internal-links.d.ts +1 -0
  20. package/dist/client/client/grapesjs/keymaps.d.ts +123 -0
  21. package/dist/client/client/grapesjs/new-page-dialog.d.ts +2 -0
  22. package/dist/client/client/grapesjs/openImport.d.ts +9 -0
  23. package/dist/client/client/grapesjs/page-panel.d.ts +9 -0
  24. package/dist/client/client/grapesjs/project-bar.d.ts +21 -0
  25. package/dist/client/client/grapesjs/resize-panel.d.ts +1 -0
  26. package/dist/client/client/grapesjs/rich-text.d.ts +4 -0
  27. package/dist/client/client/grapesjs/semantic.d.ts +1 -0
  28. package/dist/client/client/grapesjs/settings-sections.d.ts +16 -0
  29. package/dist/client/client/grapesjs/settings.d.ts +4 -0
  30. package/dist/client/client/grapesjs/storage.d.ts +2 -0
  31. package/dist/client/client/grapesjs/symbolDialogs.d.ts +3 -0
  32. package/dist/client/client/grapesjs/view-buttons.d.ts +1 -0
  33. package/dist/client/client/index.d.ts +10 -0
  34. package/dist/client/client/publication-transformers.d.ts +42 -0
  35. package/dist/client/client/publish-custom-code-block.d.ts +4 -0
  36. package/dist/client/client/publish-fonts.d.ts +4 -0
  37. package/dist/client/client/utils.d.ts +22 -0
  38. package/dist/client/constants.d.ts +32 -0
  39. package/dist/client/css/admin.css +1114 -328
  40. package/dist/client/css/admin.css.map +1 -0
  41. package/dist/client/grapesjs-filter-styles/dist/index.d.ts +4 -0
  42. package/dist/client/grapesjs-fonts/dist/index.d.ts +4 -0
  43. package/dist/client/grapesjs-fonts/src/commands.d.ts +3 -0
  44. package/dist/client/grapesjs-fonts/src/fonts.d.ts +4 -0
  45. package/dist/client/grapesjs-storage-rate-limit/dist/index.d.ts +4 -0
  46. package/dist/client/grapesjs-ui-suggest-classes/dist/index.d.ts +4 -0
  47. package/dist/client/index.html +3 -2
  48. package/dist/client/js/main.js +356 -131
  49. package/dist/client/js/main.js.LICENSE.txt +15 -1
  50. package/dist/client/page.d.ts +2 -0
  51. package/dist/client/silex-lib/src/ts/client/api.d.ts +90 -0
  52. package/dist/client/silex-lib/src/ts/client/assetUrl.d.ts +54 -0
  53. package/dist/client/silex-lib/src/ts/client/config.d.ts +102 -0
  54. package/dist/client/silex-lib/src/ts/client/events.d.ts +23 -0
  55. package/dist/client/silex-lib/src/ts/client/expose.d.ts +8 -0
  56. package/dist/client/silex-lib/src/ts/client/grapesjs/LoginDialog.d.ts +15 -0
  57. package/dist/client/silex-lib/src/ts/client/grapesjs/PublicationManager.d.ts +73 -0
  58. package/dist/client/silex-lib/src/ts/client/grapesjs/PublicationUi.d.ts +59 -0
  59. package/dist/client/silex-lib/src/ts/client/grapesjs/blocks.d.ts +1 -0
  60. package/dist/client/silex-lib/src/ts/client/grapesjs/breadcrumbs.d.ts +1 -0
  61. package/dist/client/silex-lib/src/ts/client/grapesjs/css-props.d.ts +6 -0
  62. package/dist/client/silex-lib/src/ts/client/grapesjs/footer.d.ts +2 -0
  63. package/dist/client/silex-lib/src/ts/client/grapesjs/img.d.ts +6 -0
  64. package/dist/client/silex-lib/src/ts/client/grapesjs/index.d.ts +9 -0
  65. package/dist/client/silex-lib/src/ts/client/grapesjs/internal-links.d.ts +1 -0
  66. package/dist/client/silex-lib/src/ts/client/grapesjs/keymaps.d.ts +123 -0
  67. package/dist/client/silex-lib/src/ts/client/grapesjs/new-page-dialog.d.ts +2 -0
  68. package/dist/client/silex-lib/src/ts/client/grapesjs/openImport.d.ts +9 -0
  69. package/dist/client/silex-lib/src/ts/client/grapesjs/page-panel.d.ts +9 -0
  70. package/dist/client/silex-lib/src/ts/client/grapesjs/project-bar.d.ts +21 -0
  71. package/dist/client/silex-lib/src/ts/client/grapesjs/resize-panel.d.ts +1 -0
  72. package/dist/client/silex-lib/src/ts/client/grapesjs/rich-text.d.ts +4 -0
  73. package/dist/client/silex-lib/src/ts/client/grapesjs/semantic.d.ts +1 -0
  74. package/dist/client/silex-lib/src/ts/client/grapesjs/settings-sections.d.ts +16 -0
  75. package/dist/client/silex-lib/src/ts/client/grapesjs/settings.d.ts +4 -0
  76. package/dist/client/silex-lib/src/ts/client/grapesjs/storage.d.ts +2 -0
  77. package/dist/client/silex-lib/src/ts/client/grapesjs/symbolDialogs.d.ts +3 -0
  78. package/dist/client/silex-lib/src/ts/client/grapesjs/view-buttons.d.ts +1 -0
  79. package/dist/client/silex-lib/src/ts/client/index.d.ts +10 -0
  80. package/dist/client/silex-lib/src/ts/client/publication-transformers.d.ts +42 -0
  81. package/dist/client/silex-lib/src/ts/client/publish-custom-code-block.d.ts +4 -0
  82. package/dist/client/silex-lib/src/ts/client/publish-fonts.d.ts +4 -0
  83. package/dist/client/silex-lib/src/ts/client/utils.d.ts +22 -0
  84. package/dist/client/silex-lib/src/ts/constants.d.ts +32 -0
  85. package/dist/client/silex-lib/src/ts/page.d.ts +2 -0
  86. package/dist/client/silex-lib/src/ts/types.d.ts +339 -0
  87. package/dist/client/types.d.ts +339 -0
  88. package/dist/plugins/client/client/events.d.ts +23 -0
  89. package/dist/plugins/client/client/events.js +43 -0
  90. package/dist/plugins/client/client/events.js.map +1 -0
  91. package/dist/plugins/client/plugins/client/template.d.ts +2 -0
  92. package/dist/plugins/client/plugins/client/template.js +234 -0
  93. package/dist/plugins/client/plugins/client/template.js.map +1 -0
  94. package/dist/plugins/client/plugins/client/website-info.d.ts +1 -0
  95. package/dist/plugins/client/plugins/client/website-info.js +72 -0
  96. package/dist/plugins/client/plugins/client/website-info.js.map +1 -0
  97. package/dist/plugins/client/types.d.ts +339 -0
  98. package/dist/plugins/client/types.js +80 -0
  99. package/dist/plugins/client/types.js.map +1 -0
  100. package/dist/plugins/server/constants.d.ts +32 -0
  101. package/dist/plugins/server/constants.js +76 -0
  102. package/dist/plugins/server/constants.js.map +1 -0
  103. package/dist/plugins/server/plugins/server/Cache.d.ts +2 -0
  104. package/dist/plugins/server/plugins/server/Cache.js +36 -0
  105. package/dist/plugins/server/plugins/server/Cache.js.map +1 -0
  106. package/dist/plugins/server/plugins/server/DownloadConnector.d.ts +29 -0
  107. package/dist/plugins/server/plugins/server/DownloadConnector.js +127 -0
  108. package/dist/plugins/server/plugins/server/DownloadConnector.js.map +1 -0
  109. package/dist/plugins/server/plugins/server/FtpConnector.d.ts +86 -0
  110. package/dist/plugins/server/plugins/server/FtpConnector.js +536 -0
  111. package/dist/plugins/server/plugins/server/FtpConnector.js.map +1 -0
  112. package/dist/plugins/server/plugins/server/GitlabConnector.d.ts +135 -0
  113. package/dist/plugins/server/plugins/server/GitlabConnector.js +649 -0
  114. package/dist/plugins/server/plugins/server/GitlabConnector.js.map +1 -0
  115. package/dist/plugins/server/plugins/server/GitlabHostingConnector.d.ts +16 -0
  116. package/dist/plugins/server/plugins/server/GitlabHostingConnector.js +209 -0
  117. package/dist/plugins/server/plugins/server/GitlabHostingConnector.js.map +1 -0
  118. package/dist/plugins/server/plugins/server/PublicationOptimizer.d.ts +0 -0
  119. package/dist/plugins/server/plugins/server/PublicationOptimizer.js +14 -0
  120. package/dist/plugins/server/plugins/server/PublicationOptimizer.js.map +1 -0
  121. package/dist/plugins/server/plugins/server/SslPlugin.d.ts +1 -0
  122. package/dist/plugins/server/plugins/server/SslPlugin.js +86 -0
  123. package/dist/plugins/server/plugins/server/SslPlugin.js.map +1 -0
  124. package/dist/plugins/server/plugins/server/StaticPlugin.d.ts +8 -0
  125. package/dist/plugins/server/plugins/server/StaticPlugin.js +45 -0
  126. package/dist/plugins/server/plugins/server/StaticPlugin.js.map +1 -0
  127. package/dist/plugins/server/server/config.d.ts +59 -0
  128. package/dist/plugins/server/server/config.js +181 -0
  129. package/dist/plugins/server/server/config.js.map +1 -0
  130. package/dist/plugins/server/server/connectors/FsHosting.d.ts +14 -0
  131. package/dist/plugins/server/server/connectors/FsHosting.js +66 -0
  132. package/dist/plugins/server/server/connectors/FsHosting.js.map +1 -0
  133. package/dist/plugins/server/server/connectors/FsStorage.d.ts +44 -0
  134. package/dist/plugins/server/server/connectors/FsStorage.js +261 -0
  135. package/dist/plugins/server/server/connectors/FsStorage.js.map +1 -0
  136. package/dist/plugins/server/server/connectors/connectors.d.ts +86 -0
  137. package/dist/plugins/server/server/connectors/connectors.js +126 -0
  138. package/dist/plugins/server/server/connectors/connectors.js.map +1 -0
  139. package/dist/plugins/server/server/events.d.ts +26 -0
  140. package/dist/plugins/server/server/events.js +31 -0
  141. package/dist/plugins/server/server/events.js.map +1 -0
  142. package/dist/plugins/server/server/jobs.d.ts +12 -0
  143. package/dist/plugins/server/server/jobs.js +79 -0
  144. package/dist/plugins/server/server/jobs.js.map +1 -0
  145. package/dist/plugins/server/server/utils/validation.d.ts +7 -0
  146. package/dist/plugins/server/server/utils/validation.js +37 -0
  147. package/dist/plugins/server/server/utils/validation.js.map +1 -0
  148. package/dist/plugins/server/types.d.ts +339 -0
  149. package/dist/plugins/server/types.js +84 -0
  150. package/dist/plugins/server/types.js.map +1 -0
  151. package/dist/server/constants.js +55 -0
  152. package/dist/server/plugins/server/Cache.js +19 -0
  153. package/dist/server/server/api/api.js +20 -0
  154. package/dist/server/server/api/connectorApi.js +334 -0
  155. package/dist/server/server/api/publicationApi.js +106 -0
  156. package/dist/server/server/api/websiteApi.js +315 -0
  157. package/dist/server/server/cli.js +71 -0
  158. package/dist/server/server/config.js +120 -0
  159. package/dist/server/server/connectors/FsHosting.js +47 -0
  160. package/dist/server/server/connectors/FsStorage.js +228 -0
  161. package/dist/server/server/connectors/connectors.js +88 -0
  162. package/dist/server/server/events.js +14 -0
  163. package/dist/server/server/expose.js +27 -0
  164. package/dist/server/server/express.js +46 -0
  165. package/dist/server/server/index.js +94 -0
  166. package/dist/server/server/jobs.js +50 -0
  167. package/dist/server/server/utils/validation.js +14 -0
  168. package/dist/server/types.js +40 -0
  169. package/package.json +99 -49
  170. package/public/assets/download.png +0 -0
  171. package/public/assets/favicon.ico +0 -0
  172. package/public/assets/favicon.png +0 -0
  173. package/public/assets/ftp.png +0 -0
  174. package/public/assets/gitlab.png +0 -0
  175. package/public/assets/gitlab2.png +0 -0
  176. package/public/assets/laptop.png +0 -0
  177. package/public/assets/logo-silex-small.png +0 -0
  178. package/public/silex.js +22 -23
  179. package/src/css/_variables.scss +24 -20
  180. package/src/css/dialog.scss +35 -2
  181. package/src/css/fonts.scss +31 -0
  182. package/src/css/footer.scss +12 -0
  183. package/src/css/grapesjs-light.scss +180 -0
  184. package/src/css/grapesjs-plugins.scss +227 -0
  185. package/src/css/grapesjs.scss +159 -1
  186. package/src/css/index.scss +12 -1
  187. package/src/css/light.scss +7 -0
  188. package/src/css/loader.scss +2 -0
  189. package/src/css/project-bar.scss +32 -16
  190. package/src/css/silex.scss +79 -5
  191. package/src/css/website-info.scss +14 -0
  192. package/src/html/index.pug +3 -3
  193. package/src/html/templates/includes.pug +0 -1
  194. package/src/ts/client/api.ts +156 -0
  195. package/src/ts/client/assetUrl.test.ts +164 -0
  196. package/src/ts/client/assetUrl.ts +254 -0
  197. package/src/ts/client/config.ts +175 -13
  198. package/src/ts/client/events.ts +43 -0
  199. package/src/ts/client/expose.ts +27 -1
  200. package/src/ts/client/grapesjs/LoginDialog.ts +204 -0
  201. package/src/ts/client/grapesjs/PublicationManager.ts +433 -0
  202. package/src/ts/client/grapesjs/PublicationUi.ts +366 -0
  203. package/src/ts/client/grapesjs/blocks.ts +17 -0
  204. package/src/ts/client/grapesjs/breadcrumbs.ts +79 -0
  205. package/src/ts/client/grapesjs/css-props.ts +910 -0
  206. package/src/ts/client/grapesjs/eleventy.ts +30 -7
  207. package/src/ts/client/grapesjs/footer.ts +42 -0
  208. package/src/ts/client/grapesjs/img.ts +147 -0
  209. package/src/ts/client/grapesjs/index.ts +311 -122
  210. package/src/ts/client/grapesjs/internal-links.test.ts +19 -1
  211. package/src/ts/client/grapesjs/internal-links.ts +31 -7
  212. package/src/ts/client/grapesjs/keymaps.ts +207 -0
  213. package/src/ts/client/grapesjs/new-page-dialog.ts +19 -3
  214. package/src/ts/client/grapesjs/openImport.ts +22 -0
  215. package/src/ts/client/grapesjs/page-panel.ts +109 -7
  216. package/src/ts/client/grapesjs/project-bar.ts +133 -72
  217. package/src/ts/client/grapesjs/resize-panel.ts +20 -0
  218. package/src/ts/client/grapesjs/rich-text.ts +38 -13
  219. package/src/ts/client/grapesjs/semantic.ts +20 -3
  220. package/src/ts/client/grapesjs/settings-sections.ts +117 -0
  221. package/src/ts/client/grapesjs/settings.ts +191 -96
  222. package/src/ts/client/grapesjs/storage.ts +187 -0
  223. package/src/ts/client/grapesjs/symbolDialogs.ts +21 -5
  224. package/src/ts/client/grapesjs/view-buttons.ts +42 -0
  225. package/src/ts/client/index.ts +80 -21
  226. package/src/ts/client/publication-transformers.test.ts +207 -0
  227. package/src/ts/client/publication-transformers.ts +280 -0
  228. package/src/ts/client/publish-custom-code-block.ts +31 -0
  229. package/src/ts/client/publish-fonts.ts +36 -0
  230. package/src/ts/client/utils.ts +70 -1
  231. package/src/ts/constants.ts +78 -0
  232. package/src/ts/externs.ts +17 -0
  233. package/src/ts/page.ts +20 -3
  234. package/src/ts/plugins/client/template.ts +246 -0
  235. package/src/ts/plugins/client/website-info.ts +84 -0
  236. package/src/ts/plugins/server/Cache.ts +32 -0
  237. package/src/ts/plugins/server/DownloadConnector.ts +146 -0
  238. package/src/ts/plugins/server/FtpConnector.test.ts +82 -0
  239. package/src/ts/plugins/server/FtpConnector.ts +621 -0
  240. package/src/ts/plugins/server/GitlabConnector.ts +749 -0
  241. package/src/ts/plugins/server/GitlabHostingConnector.ts +215 -0
  242. package/src/ts/plugins/server/PublicationOptimizer.ts +14 -0
  243. package/src/ts/plugins/server/SslPlugin.ts +84 -0
  244. package/src/ts/plugins/server/StaticPlugin.ts +45 -0
  245. package/src/ts/server/api/api.ts +19 -0
  246. package/src/ts/server/api/connectorApi.ts +464 -0
  247. package/src/ts/server/api/publicationApi.ts +159 -0
  248. package/src/ts/server/api/websiteApi.ts +462 -0
  249. package/src/ts/server/cli.ts +48 -14
  250. package/src/ts/server/config.ts +158 -60
  251. package/src/ts/server/connectors/FsHosting.ts +66 -0
  252. package/src/ts/server/connectors/FsStorage.test.ts +51 -0
  253. package/src/ts/server/connectors/FsStorage.ts +290 -0
  254. package/src/ts/server/connectors/connectors.ts +203 -0
  255. package/src/ts/server/events.ts +37 -0
  256. package/src/ts/server/expose.ts +19 -0
  257. package/src/ts/server/express.ts +57 -5
  258. package/src/ts/server/index.ts +79 -16
  259. package/src/ts/server/jobs.test.ts +75 -0
  260. package/src/ts/server/jobs.ts +89 -0
  261. package/src/ts/server/utils/BackwardCompat.ts +546 -528
  262. package/src/ts/server/utils/validation.ts +34 -0
  263. package/src/ts/types.ts +295 -85
  264. package/.dockerignore +0 -5
  265. package/.editorconfig +0 -14
  266. package/.eslintrc.json +0 -43
  267. package/.github/FUNDING.yml +0 -13
  268. package/.github/workflows/docker-hub-publish.yml +0 -36
  269. package/.github/workflows/npm-publish.yml +0 -19
  270. package/.github/workflows/test.yml +0 -26
  271. package/.nvmrc +0 -1
  272. package/.silex/default/.silex.data.json +0 -1
  273. package/CODE_OF_CONDUCT.md +0 -128
  274. package/CONTRIBUTING.md +0 -131
  275. package/Dockerfile +0 -15
  276. package/directus.silex.js +0 -7
  277. package/dist/constants.js +0 -4
  278. package/dist/events.js +0 -5
  279. package/dist/page.js +0 -15
  280. package/dist/server/cli.js +0 -43
  281. package/dist/server/config.js +0 -70
  282. package/dist/server/express.js +0 -18
  283. package/dist/server/index.js +0 -58
  284. package/dist/types.js +0 -34
  285. package/jest.config.js +0 -10
  286. package/logos/logo_by_ceubri/silex-icon-2018@200px.png +0 -0
  287. package/logos/logo_by_ceubri/silex-icon-2018@4x.png +0 -0
  288. package/logos/logo_by_ceubri/silex-logo-2018-white-transp.pdf +0 -0
  289. package/logos/logo_by_ceubri/silex-logo-2018-white.jpg +0 -0
  290. package/logos/logo_by_ceubri/silex-logo-2018-white.pdf +0 -0
  291. package/logos/logo_by_ceubri/silex-logo-2018-white.png +0 -0
  292. package/logos/logo_by_ceubri/silex-logo-2018-white@0.5x.png +0 -0
  293. package/logos/logo_by_ceubri/silex-logo-2018-white@0.75x.png +0 -0
  294. package/logos/logo_by_ceubri/silex-logo-2018-white@4x.jpg +0 -0
  295. package/logos/logo_by_ceubri/silex-logo-2018-white@4x.png +0 -0
  296. package/logos/logo_by_ceubri/silex-logo-2018.ai +5 -2521
  297. package/logos/logo_by_ceubri/silex-logo-2018.jpg +0 -0
  298. package/logos/logo_by_ceubri/silex-logo-2018.pdf +0 -0
  299. package/logos/logo_by_ceubri/silex-logo-2018.png +0 -0
  300. package/logos/logo_by_ceubri/silex-logo-2018@0.5x.png +0 -0
  301. package/logos/logo_by_ceubri/silex-logo-2018@0.75x.png +0 -0
  302. package/logos/logo_by_ceubri/silex-logo-2018@4x.jpg +0 -0
  303. package/logos/logo_by_ceubri/silex-logo-2018@4x.png +0 -0
  304. package/logos/silexlabs.png +0 -0
  305. package/src/example-client-config.js +0 -47
  306. package/src/plugins/AuthPlugin.js +0 -21
  307. package/src/plugins/Cache.js +0 -11
  308. package/src/plugins/DefaultBackend.js +0 -149
  309. package/src/plugins/ExpressPlugin.js +0 -39
  310. package/src/plugins/HooksPlugin.js +0 -58
  311. package/src/plugins/PublishPlugin.js +0 -69
  312. package/src/plugins/SslPlugin.js +0 -66
  313. package/src/plugins/StaticPlugin.js +0 -48
  314. package/src/plugins/WebsitePlugin.js +0 -207
  315. package/src/ts/client/grapesjs/publish.ts +0 -386
  316. package/src/ts/client/grapesjs/template.ts +0 -166
  317. package/src/ts/events.ts +0 -2
  318. package/tsconfig-server-debug.json +0 -19
  319. package/tsconfig-server-release.json +0 -19
  320. package/tsconfig.jest.json +0 -9
  321. package/tsconfig.json +0 -26
  322. package/webpack.config.js +0 -28
  323. package/webpack.debug.config.js +0 -8
@@ -0,0 +1,339 @@
1
+ /**
2
+ * @fileoverview define types for Silex client and server
3
+ */
4
+ export interface PublicationSettings {
5
+ connector?: ConnectorData;
6
+ options?: ConnectorOptions;
7
+ }
8
+ export interface WebsiteFile {
9
+ html: string;
10
+ css: string;
11
+ htmlPath: string;
12
+ cssPath: string;
13
+ }
14
+ export declare class ApiError extends Error {
15
+ readonly httpStatusCode: number;
16
+ constructor(message: string, httpStatusCode: number);
17
+ }
18
+ export type ApiResponseError = {
19
+ message: string;
20
+ };
21
+ export type ApiPublicationPublishBody = WebsiteData;
22
+ export type ApiPublicationPublishQuery = {
23
+ websiteId: WebsiteId;
24
+ hostingId: ConnectorId;
25
+ storageId: ConnectorId;
26
+ options: ConnectorOptions;
27
+ };
28
+ export type ApiPublicationPublishResponse = {
29
+ url: string;
30
+ job: PublicationJobData;
31
+ };
32
+ export type ApiPublicationStatusQuery = {
33
+ jobId: JobId;
34
+ };
35
+ export type ApiPublicationStatusResponse = PublicationJobData;
36
+ export type ApiWebsiteReadQuery = {
37
+ websiteId: WebsiteId;
38
+ connectorId?: ConnectorId;
39
+ };
40
+ export type ApiWebsiteReadResponse = WebsiteData;
41
+ export type ApiWebsiteListQuery = {
42
+ connectorId?: ConnectorId;
43
+ };
44
+ export type ApiWebsiteListResponse = WebsiteMeta[];
45
+ export type ApiWebsiteWriteQuery = {
46
+ websiteId: WebsiteId;
47
+ connectorId?: ConnectorId;
48
+ };
49
+ export type ApiWebsiteWriteBody = WebsiteData;
50
+ export type ApiWebsiteWriteResponse = {
51
+ message: string;
52
+ };
53
+ export type ApiWebsiteCreateQuery = {
54
+ connectorId?: ConnectorId;
55
+ };
56
+ export type ApiWebsiteCreateBody = WebsiteMetaFileContent;
57
+ export type ApiWebsiteCreateResponse = {
58
+ message: string;
59
+ };
60
+ export type ApiWebsiteDeleteQuery = {
61
+ websiteId: WebsiteId;
62
+ connectorId?: ConnectorId;
63
+ };
64
+ export type ApiWebsiteDuplicateQuery = {
65
+ websiteId: WebsiteId;
66
+ connectorId?: ConnectorId;
67
+ };
68
+ export type ApiWebsiteMetaReadQuery = {
69
+ websiteId: WebsiteId;
70
+ connectorId?: ConnectorId;
71
+ };
72
+ export type ApiWebsiteMetaReadResponse = WebsiteMeta;
73
+ export type ApiWebsiteMetaWriteQuery = {
74
+ websiteId: WebsiteId;
75
+ connectorId?: ConnectorId;
76
+ };
77
+ export type ApiWebsiteMetaWriteBody = WebsiteMetaFileContent;
78
+ export type ApiWebsiteMetaWriteResponse = {
79
+ message: string;
80
+ };
81
+ export type ApiWebsiteAssetsReadQuery = {
82
+ websiteId: WebsiteId;
83
+ connectorId?: ConnectorId;
84
+ };
85
+ export type ApiWebsiteAssetsReadParams = {
86
+ path: string;
87
+ };
88
+ export type ApiWebsiteAssetsReadResponse = string;
89
+ export type ApiWebsiteAssetsWriteQuery = {
90
+ websiteId: WebsiteId;
91
+ connectorId?: ConnectorId;
92
+ };
93
+ export type ApiWebsiteAssetsWriteBody = ClientSideFile[];
94
+ export type ApiWebsiteAssetsWriteResponse = {
95
+ data: string[];
96
+ };
97
+ export type ApiConnectorListQuery = {
98
+ type: ConnectorType;
99
+ };
100
+ export type ApiConnectorListResponse = ConnectorData[];
101
+ export type ApiConnectorLoginQuery = {
102
+ connectorId: ConnectorId;
103
+ type: ConnectorType;
104
+ };
105
+ export type ApiConnectorLoggedInPostMessage = {
106
+ type: string;
107
+ error: boolean;
108
+ message: string;
109
+ connectorId: ConnectorId;
110
+ options: ConnectorOptions;
111
+ };
112
+ export type ApiConnectorLoginCbkQuery = {
113
+ connectorId?: ConnectorId;
114
+ type: ConnectorType;
115
+ error?: string;
116
+ };
117
+ export type ApiConnectorLoginCbkBody = object;
118
+ export type ApiConnectorSettingsQuery = {
119
+ connectorId?: ConnectorId;
120
+ type: ConnectorType;
121
+ };
122
+ export type ApiConnectorSettingsResponse = string;
123
+ export type ApiConnectorSettingsPostQuery = {
124
+ connectorId?: ConnectorId;
125
+ type: ConnectorType;
126
+ };
127
+ export type ApiConnectorSettingsPostBody = ConnectorUserSettings;
128
+ export type ApiConnectorSettingsPostResponse = {
129
+ message: string;
130
+ };
131
+ export type ApiConnectorLogoutQuery = {
132
+ connectorId?: ConnectorId;
133
+ type: ConnectorType;
134
+ };
135
+ export type ApiConnectorUserQuery = {
136
+ connectorId?: ConnectorId;
137
+ type: ConnectorType;
138
+ };
139
+ export type ApiConnectorUserResponse = ConnectorUser;
140
+ export declare const defaultWebsiteData: WebsiteData;
141
+ export interface Component {
142
+ type: string;
143
+ content?: string;
144
+ attributes: {
145
+ [key: string]: string;
146
+ };
147
+ components: Component[];
148
+ }
149
+ export interface Page {
150
+ id: string;
151
+ name: string;
152
+ slug: string;
153
+ settings: WebsiteSettings;
154
+ frames: {
155
+ component: Component;
156
+ }[];
157
+ }
158
+ export interface WebsiteData {
159
+ pages: Page[];
160
+ assets: Asset[];
161
+ styles: Style[];
162
+ settings: WebsiteSettings;
163
+ fonts: Font[];
164
+ symbols: symbol[];
165
+ publication: PublicationSettings;
166
+ }
167
+ export interface PublicationData extends WebsiteData {
168
+ files?: ClientSideFile[];
169
+ }
170
+ export interface WebsiteSettings {
171
+ description?: string;
172
+ title?: string;
173
+ lang?: string;
174
+ head?: string;
175
+ favicon?: string;
176
+ 'og:title'?: string;
177
+ 'og:description'?: string;
178
+ 'og:image'?: string;
179
+ }
180
+ export interface Font {
181
+ name: string;
182
+ value: string;
183
+ variants: string[];
184
+ }
185
+ export declare enum Unit {
186
+ PX = "px"
187
+ }
188
+ export interface Asset {
189
+ type: string;
190
+ src: string;
191
+ unitDim: Unit;
192
+ height: number;
193
+ width: number;
194
+ name: string;
195
+ path?: string;
196
+ }
197
+ export interface Style {
198
+ selectors: Selector[];
199
+ style: {
200
+ [key: string]: string;
201
+ };
202
+ }
203
+ export type Selector = string | {
204
+ name: string;
205
+ type: number;
206
+ };
207
+ /**
208
+ * Type for a connector id
209
+ */
210
+ export type ConnectorId = string;
211
+ export type ConnectorOptions = {
212
+ websiteUrl?: string;
213
+ [key: string]: any;
214
+ };
215
+ export declare enum ClientSideFileType {
216
+ HTML = "html",
217
+ ASSET = "asset",
218
+ CSS = "css",
219
+ OTHER = "other"
220
+ }
221
+ export declare enum Initiator {
222
+ HTML = "html",
223
+ CSS = "css"
224
+ }
225
+ /**
226
+ * Type for a client side file when the content is not available, used to handle file names and paths and urls
227
+ */
228
+ export interface ClientSideFileWithPermalink {
229
+ path: string;
230
+ permalink?: string;
231
+ type: ClientSideFileType;
232
+ }
233
+ /**
234
+ * Type for a client side file when the content is available as a string
235
+ */
236
+ export interface ClientSideFileWithContent extends ClientSideFileWithPermalink {
237
+ content: string;
238
+ }
239
+ /**
240
+ * Type for a client side file when the content is in the connector
241
+ */
242
+ export interface ClientSideFileWithSrc extends ClientSideFileWithPermalink {
243
+ src: string;
244
+ }
245
+ /**
246
+ * Type for a client side file
247
+ * @see connector/File
248
+ */
249
+ export type ClientSideFile = ClientSideFileWithContent | ClientSideFileWithSrc;
250
+ /**
251
+ * Type for file listing
252
+ */
253
+ export interface FileMeta {
254
+ name: string;
255
+ isDir: boolean;
256
+ size: number;
257
+ createdAt: Date;
258
+ updatedAt: Date;
259
+ metadata?: object;
260
+ }
261
+ /**
262
+ * Enum to express if the connector is a storage or a hosting
263
+ */
264
+ export declare enum ConnectorType {
265
+ STORAGE = "STORAGE",
266
+ HOSTING = "HOSTING"
267
+ }
268
+ /**
269
+ * Type for a website id
270
+ */
271
+ export type WebsiteId = string;
272
+ /**
273
+ * Back end data shared with the front end
274
+ */
275
+ export interface ConnectorData {
276
+ connectorId: ConnectorId;
277
+ type: ConnectorType;
278
+ displayName: string;
279
+ icon: string;
280
+ disableLogout: boolean;
281
+ isLoggedIn: boolean;
282
+ oauthUrl: string | null;
283
+ color: string;
284
+ background: string;
285
+ }
286
+ /**
287
+ * User settings for a connector and for a given website
288
+ */
289
+ export type ConnectorUserSettings = {
290
+ [websiteId: string]: object;
291
+ };
292
+ /**
293
+ * Back end data shared with the front end
294
+ */
295
+ export interface ConnectorUser {
296
+ name: string;
297
+ email?: string;
298
+ picture?: string;
299
+ storage: ConnectorData;
300
+ }
301
+ export interface WebsiteMetaFileContent {
302
+ name: string;
303
+ imageUrl?: string;
304
+ connectorUserSettings: ConnectorUserSettings;
305
+ }
306
+ /**
307
+ * Back end data sent to the front end
308
+ * Meta data can be the root path of the websites, or the bucket name, etc.
309
+ */
310
+ export interface WebsiteMeta extends WebsiteMetaFileContent {
311
+ websiteId: WebsiteId;
312
+ createdAt?: Date;
313
+ updatedAt?: Date;
314
+ }
315
+ /**
316
+ * Enum to express if the job is in progress or finished or errored
317
+ */
318
+ export declare enum JobStatus {
319
+ IN_PROGRESS = "IN_PROGRESS",
320
+ SUCCESS = "SUCCESS",
321
+ ERROR = "ERROR"
322
+ }
323
+ /**
324
+ * Id used to track the progress of a publication
325
+ */
326
+ export type JobId = string;
327
+ /**
328
+ * Data structure which is sent to the client to display the progress of a job
329
+ */
330
+ export interface JobData {
331
+ jobId: JobId;
332
+ status: JobStatus;
333
+ message: string;
334
+ _timeout?: ReturnType<typeof setTimeout>;
335
+ }
336
+ export interface PublicationJobData extends JobData {
337
+ logs: string[][];
338
+ errors: string[][];
339
+ }
@@ -0,0 +1,23 @@
1
+ export declare enum ClientEvent {
2
+ STARTUP_START = "silex:startup:start",/* Loading is over and Silex is starting */
3
+ STARTUP_END = "silex:startup:end",/* Silex is ready to be used */
4
+ GRAPESJS_START = "silex:grapesjs:start",/* GrapesJS is about to be initialized, it is time to edit config.grapesJsConfig */
5
+ GRAPESJS_END = "silex:grapesjs:end",/* GrapesJS is ready to be used, `editor` is passed as an argument */
6
+ PUBLICATION_UI_OPEN = "silex:publication-ui:open",/* The publication UI is opened, you can access it with { publicationUi } */
7
+ PUBLICATION_UI_CLOSE = "silex:publication-ui:close",/* The publication UI is closed, you can access it with { publicationUi } */
8
+ PUBLISH_BEFORE = "silex:publish:before",/* Publication is about to start, you can read+write {projectData, siteSettings} */
9
+ PUBLISH_START = "silex:publish:start",/* Publication starts, you can read+write project data/settings, use publication manager/ui, prevent publication {projectData, siteSettings, publicationManager, prenventDefault} */
10
+ PUBLISH_PAGE = "silex:publish:page",/* Publication of a page, read+write settings and page data, use publication manager and prevent publication { siteSettings, pageSettings, page, publicationManager, preventDefault } */
11
+ PUBLISH_DATA = "silex:publish:data",/* Just before we send the published data to the server, read+write all publication data, check PublicationData type in types.ts { data, publicationManager } */
12
+ PUBLISH_END = "silex:publish:end",/* Publication is over, the argument is the publication result with {success: boolean, message: string} */
13
+ PUBLISH_ERROR = "silex:publish:error",/* Publication failed, the argument is the publication result with {success: boolean, message: string} */
14
+ PUBLISH_LOGIN_START = "silex:publish:login:start",/* The user is about to login before publication, you can read+write connector data and use publication manager and prevent publication {connector, publicationManager, preventDefault} */
15
+ PUBLISH_LOGIN_END = "silex:publish:login:end",
16
+ ASSET_WRITE_END = "silex:asset:write:end",
17
+ WRITE_END = "silex:write:end",
18
+ SETTINGS_OPEN = "silex:settings:open",/* The settings dialog is opened */
19
+ SETTINGS_CLOSE = "silex:settings:close",/* The settings dialog is closed */
20
+ SETTINGS_SAVE_START = "silex:settings:save:start",/* The settings dialog is closed and the settings are about to be saved */
21
+ SETTINGS_SAVE_END = "silex:settings:save:end",/* The settings dialog is closed and the settings are saved */
22
+ SETTINGS_SECTION_CHANGE = "silex:settings:section-change"
23
+ }
@@ -0,0 +1,43 @@
1
+ /*
2
+ * Silex website builder, free/libre no-code tool for makers.
3
+ * Copyright (c) 2023 lexoyo and Silex Labs foundation
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU Affero General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or any later version.
8
+ *
9
+ * This program is distributed in the hope that it will be useful,
10
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ * GNU Affero General Public License for more details.
13
+ *
14
+ * You should have received a copy of the GNU Affero General Public License
15
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
16
+ */
17
+ export var ClientEvent;
18
+ (function (ClientEvent) {
19
+ // Sent on the config object
20
+ ClientEvent["STARTUP_START"] = "silex:startup:start";
21
+ ClientEvent["STARTUP_END"] = "silex:startup:end";
22
+ ClientEvent["GRAPESJS_START"] = "silex:grapesjs:start";
23
+ ClientEvent["GRAPESJS_END"] = "silex:grapesjs:end";
24
+ // Sent on GrapesJs editor object (returned by silex.getEditor())
25
+ ClientEvent["PUBLICATION_UI_OPEN"] = "silex:publication-ui:open";
26
+ ClientEvent["PUBLICATION_UI_CLOSE"] = "silex:publication-ui:close";
27
+ ClientEvent["PUBLISH_BEFORE"] = "silex:publish:before";
28
+ ClientEvent["PUBLISH_START"] = "silex:publish:start";
29
+ ClientEvent["PUBLISH_PAGE"] = "silex:publish:page";
30
+ ClientEvent["PUBLISH_DATA"] = "silex:publish:data";
31
+ ClientEvent["PUBLISH_END"] = "silex:publish:end";
32
+ ClientEvent["PUBLISH_ERROR"] = "silex:publish:error";
33
+ ClientEvent["PUBLISH_LOGIN_START"] = "silex:publish:login:start";
34
+ ClientEvent["PUBLISH_LOGIN_END"] = "silex:publish:login:end";
35
+ ClientEvent["ASSET_WRITE_END"] = "silex:asset:write:end";
36
+ ClientEvent["WRITE_END"] = "silex:write:end";
37
+ ClientEvent["SETTINGS_OPEN"] = "silex:settings:open";
38
+ ClientEvent["SETTINGS_CLOSE"] = "silex:settings:close";
39
+ ClientEvent["SETTINGS_SAVE_START"] = "silex:settings:save:start";
40
+ ClientEvent["SETTINGS_SAVE_END"] = "silex:settings:save:end";
41
+ ClientEvent["SETTINGS_SECTION_CHANGE"] = "silex:settings:section-change";
42
+ })(ClientEvent || (ClientEvent = {}));
43
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../../src/ts/client/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,CAAN,IAAY,WAyBX;AAzBD,WAAY,WAAW;IACrB,4BAA4B;IAC5B,oDAAqC,CAAA;IACrC,gDAAiC,CAAA;IACjC,sDAAuC,CAAA;IACvC,kDAAmC,CAAA;IAEnC,iEAAiE;IACjE,gEAAiD,CAAA;IACjD,kEAAmD,CAAA;IACnD,sDAAuC,CAAA;IACvC,oDAAqC,CAAA;IACrC,kDAAmC,CAAA;IACnC,kDAAmC,CAAA;IACnC,gDAAiC,CAAA;IACjC,oDAAqC,CAAA;IACrC,gEAAiD,CAAA;IACjD,4DAA6C,CAAA;IAC7C,wDAAyC,CAAA;IACzC,4CAA6B,CAAA;IAC7B,oDAAqC,CAAA;IACrC,sDAAuC,CAAA;IACvC,gEAAiD,CAAA;IACjD,4DAA6C,CAAA;IAC7C,wEAAyD,CAAA;AAC3D,CAAC,EAzBW,WAAW,KAAX,WAAW,QAyBtB"}
@@ -0,0 +1,2 @@
1
+ declare const _default: (config: any, opts?: any) => Promise<void>;
2
+ export default _default;
@@ -0,0 +1,234 @@
1
+ /*
2
+ * Silex website builder, free/libre no-code tool for makers.
3
+ * Copyright (c) 2023 lexoyo and Silex Labs foundation
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU Affero General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or any later version.
8
+ *
9
+ * This program is distributed in the hope that it will be useful,
10
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ * GNU Affero General Public License for more details.
13
+ *
14
+ * You should have received a copy of the GNU Affero General Public License
15
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
16
+ */
17
+ throw new Error('This file is obsolete, templates have been replaced by Silex CMS plugin: https://github.com/silexlabs/silex-cms/');
18
+ // Silex serves /clients
19
+ // @ts-ignore
20
+ import { onAll } from '../client/utils.js';
21
+ // @ts-ignore
22
+ import { ClientEvent } from '../client/events.js';
23
+ // You need to serve lit-html at /js/lit-html/
24
+ // @ts-ignore
25
+ import { html, render } from '../js/lit-html/lit-html.js';
26
+ // @ts-ignore
27
+ import { styleMap } from '../js/lit-html/directives/style-map.js';
28
+ const silex = window['silex'];
29
+ const pluginName = 'template';
30
+ const templateType = 'templateType';
31
+ const templateKey = 'template';
32
+ function createCodeEditor(editor, mode = 'htmlmixed', singleLine = false) {
33
+ const options = {
34
+ readOnly: false,
35
+ codeName: mode,
36
+ };
37
+ if (singleLine) {
38
+ options.lineWrapping = false;
39
+ options.lineNumbers = false;
40
+ options.indentWithTabs = false;
41
+ }
42
+ else {
43
+ options.lineNumbers = true;
44
+ options.lineWrapping = true;
45
+ }
46
+ return editor.CodeManager.createViewer(options);
47
+ }
48
+ export default async (config, opts = {}) => {
49
+ config.on(ClientEvent.GRAPESJS_END, () => {
50
+ const editor = silex.getEditor();
51
+ // Get the necessary code editors
52
+ const editors = {
53
+ before: createCodeEditor(editor),
54
+ replace: createCodeEditor(editor),
55
+ after: createCodeEditor(editor),
56
+ attributes: createCodeEditor(editor, 'text', true),
57
+ classname: createCodeEditor(editor, 'text', true),
58
+ style: createCodeEditor(editor, 'css', true),
59
+ };
60
+ const is1line = {
61
+ before: false,
62
+ replace: false,
63
+ after: false,
64
+ attributes: true,
65
+ classname: true,
66
+ style: true,
67
+ };
68
+ // Add the new trait to all component types
69
+ editor.DomComponents.getTypes().map(type => {
70
+ const originalType = editor.DomComponents.getType(type.id);
71
+ editor.DomComponents.addType(type.id, {
72
+ model: {
73
+ defaults: {
74
+ traits: [
75
+ // Keep the type original traits
76
+ ...originalType.model.prototype.defaults.traits,
77
+ // Add the new trait
78
+ {
79
+ label: false,
80
+ type: templateType,
81
+ name: pluginName,
82
+ },
83
+ ]
84
+ }
85
+ }
86
+ });
87
+ });
88
+ function doRender(el) {
89
+ const template = editor.getSelected()?.get(templateKey) || {};
90
+ const taStyle = opts.styles?.textarea ?? styleMap({
91
+ xxbackgroundColor: 'var(--darkerPrimaryColor)',
92
+ });
93
+ const sepStyle = opts.styles?.sep ?? styleMap({ height: '10px' });
94
+ const labels = {
95
+ before: html `<strong>Before</strong> the element`,
96
+ replace: html `<strong>Replace</strong> the element's children`,
97
+ after: html `<strong>After</strong> the element`,
98
+ attributes: html `HTML attributes`,
99
+ classname: html `CSS classes`,
100
+ style: html `CSS styles`,
101
+ };
102
+ render(html `
103
+ <style>
104
+ .CodeMirror {
105
+ height: 100%;
106
+ }
107
+ </style>
108
+ <div>
109
+ <h3>Template</h3>
110
+ <p>This will be inserted in the published version</p>
111
+ </div>
112
+ ${[
113
+ 'classname',
114
+ 'attributes',
115
+ 'style',
116
+ 'before',
117
+ 'replace',
118
+ 'after',
119
+ ].map(id => html `
120
+ <label data-contain="${id}" class="template-wrapper-${id}">
121
+ ${labels[id]}
122
+ </label>
123
+ `)}
124
+ `, el);
125
+ el.querySelectorAll('[data-contain]').forEach(container => {
126
+ const id = container.getAttribute('data-contain');
127
+ const codeEditor = editors[id];
128
+ container.appendChild(codeEditor.getElement());
129
+ codeEditor.getElement().style.display = 'block';
130
+ codeEditor.getElement().style.height = is1line[id] ? '' : '200px';
131
+ codeEditor.getElement().style.width = '100%';
132
+ codeEditor.setContent(template[id] ?? '');
133
+ codeEditor.refresh();
134
+ });
135
+ // Make sure we apply the changes when the user presses any key
136
+ // The events should be triggered by the trait manager (call onEvent) but it doesn't work for "delete" key for example
137
+ el.onkeyup = () => {
138
+ applyChanges(editor.getSelected());
139
+ };
140
+ }
141
+ function applyChanges(component) {
142
+ const template = {
143
+ before: editors.before.getContent(),
144
+ replace: editors.replace.getContent(),
145
+ after: editors.after.getContent(),
146
+ attributes: editors.attributes.getContent(),
147
+ classname: editors.classname.getContent(),
148
+ style: editors.style.getContent(),
149
+ };
150
+ // Store the new template
151
+ if (Object.values(template).filter(val => !!val && !!cleanup(val)).length > 0) {
152
+ component.set(templateKey, template);
153
+ }
154
+ else {
155
+ component.set(templateKey);
156
+ }
157
+ }
158
+ editor.TraitManager.addType(templateType, {
159
+ createInput({ trait }) {
160
+ // Create a new element container and add some content
161
+ const el = document.createElement('div');
162
+ el.classList.add('gjs-one-bg');
163
+ // update the UI when a page is added/renamed/removed
164
+ editor.on('page', () => doRender(el));
165
+ doRender(el);
166
+ // this will be the element passed to onEvent and onUpdate
167
+ return el;
168
+ },
169
+ // Update the component based on UI changes
170
+ // `elInput` is the result HTMLElement you get from `createInput`
171
+ onEvent({ elInput, component, event }) {
172
+ applyChanges(component);
173
+ },
174
+ // Update UI on the component change
175
+ onUpdate({ elInput, component }) {
176
+ doRender(elInput);
177
+ },
178
+ });
179
+ // Make html attribute
180
+ // Quote strings, no values for boolean
181
+ function makeAttribute(key, value) {
182
+ switch (typeof value) {
183
+ case 'boolean': return value ? key : '';
184
+ default: return `${key}="${value}"`;
185
+ }
186
+ }
187
+ // Remove empty lines in templates
188
+ function cleanup(template) {
189
+ return template
190
+ // split in lines
191
+ .split('\n')
192
+ // remove lines with only spaces
193
+ .map(line => line.trim())
194
+ .filter(line => !!line)
195
+ // put back together
196
+ .join('\n');
197
+ }
198
+ if (opts.publication !== false) {
199
+ editor.on(ClientEvent.PUBLISH_START, () => {
200
+ // Insert templates
201
+ onAll(editor, c => {
202
+ const template = c.get(templateKey);
203
+ const toHTML = c.toHTML;
204
+ const classes = c.getClasses();
205
+ const before = cleanup(template?.before || '');
206
+ const replace = cleanup(template?.replace || '');
207
+ const after = cleanup(template?.after || '');
208
+ const classname = cleanup(template?.classname || '');
209
+ const style = cleanup(template?.style || '');
210
+ const attributes = cleanup(template?.attributes || '');
211
+ // Store the initial method
212
+ if (!c.has('tmpHtml'))
213
+ c.set('tmpHtml', toHTML);
214
+ // Override the method
215
+ c.toHTML = () => {
216
+ return `${before}${c.get('tagName') ? `<${c.get('tagName')}
217
+ ${Object.entries(c.get('attributes')).map(([key, value]) => makeAttribute(key, value)).join(' ')}
218
+ ${classes.length || classname ? `class="${classes.join(' ')} ${classname}"` : ''}
219
+ ${attributes}
220
+ ${style ? `style="${style}"` : ''}
221
+ >` : ''}${replace || c.getInnerHTML()}${c.get('tagName') ? `</${c.get('tagName')}>` : ''}${after}`;
222
+ };
223
+ });
224
+ });
225
+ editor.on(ClientEvent.PUBLISH_END, () => {
226
+ onAll(editor, c => {
227
+ // Restore the original method
228
+ c.toHTML = c.get('tmpHtml');
229
+ });
230
+ });
231
+ }
232
+ });
233
+ };
234
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../../src/ts/plugins/client/template.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export default function (config: any): Promise<void>;