@silexlabs/silex 3.0.0-alpha.100

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 (282) hide show
  1. package/.env.default +19 -0
  2. package/.silex.js +37 -0
  3. package/LICENSE +661 -0
  4. package/README.md +96 -0
  5. package/dist/client/client/api.d.ts +85 -0
  6. package/dist/client/client/assetUrl.d.ts +51 -0
  7. package/dist/client/client/config.d.ts +58 -0
  8. package/dist/client/client/events.d.ts +14 -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 +72 -0
  12. package/dist/client/client/grapesjs/PublicationUi.d.ts +62 -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/footer.d.ts +2 -0
  16. package/dist/client/client/grapesjs/index.d.ts +5 -0
  17. package/dist/client/client/grapesjs/internal-links.d.ts +1 -0
  18. package/dist/client/client/grapesjs/new-page-dialog.d.ts +2 -0
  19. package/dist/client/client/grapesjs/openImport.d.ts +9 -0
  20. package/dist/client/client/grapesjs/page-panel.d.ts +3 -0
  21. package/dist/client/client/grapesjs/project-bar.d.ts +1 -0
  22. package/dist/client/client/grapesjs/rich-text.d.ts +1 -0
  23. package/dist/client/client/grapesjs/semantic.d.ts +1 -0
  24. package/dist/client/client/grapesjs/settings.d.ts +2 -0
  25. package/dist/client/client/grapesjs/storage.d.ts +1 -0
  26. package/dist/client/client/grapesjs/symbolDialogs.d.ts +3 -0
  27. package/dist/client/client/index.d.ts +5 -0
  28. package/dist/client/client/publication-transformers.d.ts +41 -0
  29. package/dist/client/client/utils.d.ts +2 -0
  30. package/dist/client/constants.d.ts +29 -0
  31. package/dist/client/css/admin.css +4491 -0
  32. package/dist/client/index.html +9 -0
  33. package/dist/client/js/main.js +321 -0
  34. package/dist/client/js/main.js.LICENSE.txt +24 -0
  35. package/dist/client/page.d.ts +2 -0
  36. package/dist/client/types.d.ts +334 -0
  37. package/dist/plugins/client/client/api.d.ts +85 -0
  38. package/dist/plugins/client/client/api.js +114 -0
  39. package/dist/plugins/client/client/api.js.map +1 -0
  40. package/dist/plugins/client/client/assetUrl.d.ts +51 -0
  41. package/dist/plugins/client/client/assetUrl.js +224 -0
  42. package/dist/plugins/client/client/assetUrl.js.map +1 -0
  43. package/dist/plugins/client/client/config.d.ts +58 -0
  44. package/dist/plugins/client/client/config.js +90 -0
  45. package/dist/plugins/client/client/config.js.map +1 -0
  46. package/dist/plugins/client/client/events.d.ts +14 -0
  47. package/dist/plugins/client/client/events.js +34 -0
  48. package/dist/plugins/client/client/events.js.map +1 -0
  49. package/dist/plugins/client/client/grapesjs/LoginDialog.d.ts +15 -0
  50. package/dist/plugins/client/client/grapesjs/LoginDialog.js +195 -0
  51. package/dist/plugins/client/client/grapesjs/LoginDialog.js.map +1 -0
  52. package/dist/plugins/client/client/grapesjs/PublicationManager.d.ts +72 -0
  53. package/dist/plugins/client/client/grapesjs/PublicationManager.js +356 -0
  54. package/dist/plugins/client/client/grapesjs/PublicationManager.js.map +1 -0
  55. package/dist/plugins/client/client/grapesjs/PublicationUi.d.ts +62 -0
  56. package/dist/plugins/client/client/grapesjs/PublicationUi.js +336 -0
  57. package/dist/plugins/client/client/grapesjs/PublicationUi.js.map +1 -0
  58. package/dist/plugins/client/client/grapesjs/blocks.d.ts +1 -0
  59. package/dist/plugins/client/client/grapesjs/blocks.js +37 -0
  60. package/dist/plugins/client/client/grapesjs/blocks.js.map +1 -0
  61. package/dist/plugins/client/client/grapesjs/breadcrumbs.d.ts +1 -0
  62. package/dist/plugins/client/client/grapesjs/breadcrumbs.js +75 -0
  63. package/dist/plugins/client/client/grapesjs/breadcrumbs.js.map +1 -0
  64. package/dist/plugins/client/client/grapesjs/footer.d.ts +2 -0
  65. package/dist/plugins/client/client/grapesjs/footer.js +28 -0
  66. package/dist/plugins/client/client/grapesjs/footer.js.map +1 -0
  67. package/dist/plugins/client/client/grapesjs/index.d.ts +5 -0
  68. package/dist/plugins/client/client/grapesjs/index.js +313 -0
  69. package/dist/plugins/client/client/grapesjs/index.js.map +1 -0
  70. package/dist/plugins/client/client/grapesjs/internal-links.d.ts +1 -0
  71. package/dist/plugins/client/client/grapesjs/internal-links.js +219 -0
  72. package/dist/plugins/client/client/grapesjs/internal-links.js.map +1 -0
  73. package/dist/plugins/client/client/grapesjs/new-page-dialog.d.ts +2 -0
  74. package/dist/plugins/client/client/grapesjs/new-page-dialog.js +83 -0
  75. package/dist/plugins/client/client/grapesjs/new-page-dialog.js.map +1 -0
  76. package/dist/plugins/client/client/grapesjs/openImport.d.ts +9 -0
  77. package/dist/plugins/client/client/grapesjs/openImport.js +74 -0
  78. package/dist/plugins/client/client/grapesjs/openImport.js.map +1 -0
  79. package/dist/plugins/client/client/grapesjs/page-panel.d.ts +3 -0
  80. package/dist/plugins/client/client/grapesjs/page-panel.js +113 -0
  81. package/dist/plugins/client/client/grapesjs/page-panel.js.map +1 -0
  82. package/dist/plugins/client/client/grapesjs/project-bar.d.ts +1 -0
  83. package/dist/plugins/client/client/grapesjs/project-bar.js +104 -0
  84. package/dist/plugins/client/client/grapesjs/project-bar.js.map +1 -0
  85. package/dist/plugins/client/client/grapesjs/rich-text.d.ts +1 -0
  86. package/dist/plugins/client/client/grapesjs/rich-text.js +31 -0
  87. package/dist/plugins/client/client/grapesjs/rich-text.js.map +1 -0
  88. package/dist/plugins/client/client/grapesjs/semantic.d.ts +1 -0
  89. package/dist/plugins/client/client/grapesjs/semantic.js +110 -0
  90. package/dist/plugins/client/client/grapesjs/semantic.js.map +1 -0
  91. package/dist/plugins/client/client/grapesjs/settings.d.ts +2 -0
  92. package/dist/plugins/client/client/grapesjs/settings.js +198 -0
  93. package/dist/plugins/client/client/grapesjs/settings.js.map +1 -0
  94. package/dist/plugins/client/client/grapesjs/storage.d.ts +1 -0
  95. package/dist/plugins/client/client/grapesjs/storage.js +126 -0
  96. package/dist/plugins/client/client/grapesjs/storage.js.map +1 -0
  97. package/dist/plugins/client/client/grapesjs/symbolDialogs.d.ts +3 -0
  98. package/dist/plugins/client/client/grapesjs/symbolDialogs.js +36 -0
  99. package/dist/plugins/client/client/grapesjs/symbolDialogs.js.map +1 -0
  100. package/dist/plugins/client/client/publication-transformers.d.ts +41 -0
  101. package/dist/plugins/client/client/publication-transformers.js +238 -0
  102. package/dist/plugins/client/client/publication-transformers.js.map +1 -0
  103. package/dist/plugins/client/client/utils.d.ts +2 -0
  104. package/dist/plugins/client/client/utils.js +25 -0
  105. package/dist/plugins/client/client/utils.js.map +1 -0
  106. package/dist/plugins/client/constants.d.ts +29 -0
  107. package/dist/plugins/client/constants.js +46 -0
  108. package/dist/plugins/client/constants.js.map +1 -0
  109. package/dist/plugins/client/page.d.ts +2 -0
  110. package/dist/plugins/client/page.js +31 -0
  111. package/dist/plugins/client/page.js.map +1 -0
  112. package/dist/plugins/client/plugins/client/11ty.d.ts +17 -0
  113. package/dist/plugins/client/plugins/client/11ty.js +86 -0
  114. package/dist/plugins/client/plugins/client/11ty.js.map +1 -0
  115. package/dist/plugins/client/plugins/client/publicationRenderer.d.ts +2 -0
  116. package/dist/plugins/client/plugins/client/publicationRenderer.js +170 -0
  117. package/dist/plugins/client/plugins/client/publicationRenderer.js.map +1 -0
  118. package/dist/plugins/client/plugins/client/template.d.ts +2 -0
  119. package/dist/plugins/client/plugins/client/template.js +183 -0
  120. package/dist/plugins/client/plugins/client/template.js.map +1 -0
  121. package/dist/plugins/client/plugins/client/website-info.d.ts +1 -0
  122. package/dist/plugins/client/plugins/client/website-info.js +72 -0
  123. package/dist/plugins/client/plugins/client/website-info.js.map +1 -0
  124. package/dist/plugins/client/types.d.ts +334 -0
  125. package/dist/plugins/client/types.js +74 -0
  126. package/dist/plugins/client/types.js.map +1 -0
  127. package/dist/plugins/server/constants.d.ts +29 -0
  128. package/dist/plugins/server/constants.js +49 -0
  129. package/dist/plugins/server/constants.js.map +1 -0
  130. package/dist/plugins/server/plugins/server/AuthPlugin.d.ts +1 -0
  131. package/dist/plugins/server/plugins/server/AuthPlugin.js +40 -0
  132. package/dist/plugins/server/plugins/server/AuthPlugin.js.map +1 -0
  133. package/dist/plugins/server/plugins/server/Cache.d.ts +2 -0
  134. package/dist/plugins/server/plugins/server/Cache.js +32 -0
  135. package/dist/plugins/server/plugins/server/Cache.js.map +1 -0
  136. package/dist/plugins/server/plugins/server/DownloadConnector.d.ts +29 -0
  137. package/dist/plugins/server/plugins/server/DownloadConnector.js +129 -0
  138. package/dist/plugins/server/plugins/server/DownloadConnector.js.map +1 -0
  139. package/dist/plugins/server/plugins/server/FtpConnector.d.ts +86 -0
  140. package/dist/plugins/server/plugins/server/FtpConnector.js +526 -0
  141. package/dist/plugins/server/plugins/server/FtpConnector.js.map +1 -0
  142. package/dist/plugins/server/plugins/server/GitlabConnector.d.ts +87 -0
  143. package/dist/plugins/server/plugins/server/GitlabConnector.js +564 -0
  144. package/dist/plugins/server/plugins/server/GitlabConnector.js.map +1 -0
  145. package/dist/plugins/server/plugins/server/PublicationOptimizer.d.ts +0 -0
  146. package/dist/plugins/server/plugins/server/PublicationOptimizer.js +14 -0
  147. package/dist/plugins/server/plugins/server/PublicationOptimizer.js.map +1 -0
  148. package/dist/plugins/server/plugins/server/SslPlugin.d.ts +1 -0
  149. package/dist/plugins/server/plugins/server/SslPlugin.js +86 -0
  150. package/dist/plugins/server/plugins/server/SslPlugin.js.map +1 -0
  151. package/dist/plugins/server/plugins/server/StaticPlugin.d.ts +1 -0
  152. package/dist/plugins/server/plugins/server/StaticPlugin.js +78 -0
  153. package/dist/plugins/server/plugins/server/StaticPlugin.js.map +1 -0
  154. package/dist/plugins/server/server/config.d.ts +59 -0
  155. package/dist/plugins/server/server/config.js +181 -0
  156. package/dist/plugins/server/server/config.js.map +1 -0
  157. package/dist/plugins/server/server/connectors/FsHosting.d.ts +13 -0
  158. package/dist/plugins/server/server/connectors/FsHosting.js +54 -0
  159. package/dist/plugins/server/server/connectors/FsHosting.js.map +1 -0
  160. package/dist/plugins/server/server/connectors/FsStorage.d.ts +43 -0
  161. package/dist/plugins/server/server/connectors/FsStorage.js +257 -0
  162. package/dist/plugins/server/server/connectors/FsStorage.js.map +1 -0
  163. package/dist/plugins/server/server/connectors/connectors.d.ts +87 -0
  164. package/dist/plugins/server/server/connectors/connectors.js +127 -0
  165. package/dist/plugins/server/server/connectors/connectors.js.map +1 -0
  166. package/dist/plugins/server/server/events.d.ts +26 -0
  167. package/dist/plugins/server/server/events.js +31 -0
  168. package/dist/plugins/server/server/events.js.map +1 -0
  169. package/dist/plugins/server/server/jobs.d.ts +12 -0
  170. package/dist/plugins/server/server/jobs.js +77 -0
  171. package/dist/plugins/server/server/jobs.js.map +1 -0
  172. package/dist/plugins/server/server/utils/validation.d.ts +7 -0
  173. package/dist/plugins/server/server/utils/validation.js +38 -0
  174. package/dist/plugins/server/server/utils/validation.js.map +1 -0
  175. package/dist/plugins/server/types.d.ts +334 -0
  176. package/dist/plugins/server/types.js +78 -0
  177. package/dist/plugins/server/types.js.map +1 -0
  178. package/dist/server/constants.js +29 -0
  179. package/dist/server/plugins/server/Cache.js +15 -0
  180. package/dist/server/server/api/api.js +20 -0
  181. package/dist/server/server/api/connectorApi.js +216 -0
  182. package/dist/server/server/api/publicationApi.js +108 -0
  183. package/dist/server/server/api/websiteApi.js +296 -0
  184. package/dist/server/server/cli.js +68 -0
  185. package/dist/server/server/config.js +120 -0
  186. package/dist/server/server/connectors/FsHosting.js +35 -0
  187. package/dist/server/server/connectors/FsStorage.js +225 -0
  188. package/dist/server/server/connectors/connectors.js +89 -0
  189. package/dist/server/server/events.js +14 -0
  190. package/dist/server/server/expose.js +27 -0
  191. package/dist/server/server/express.js +47 -0
  192. package/dist/server/server/index.js +90 -0
  193. package/dist/server/server/jobs.js +48 -0
  194. package/dist/server/server/utils/validation.js +15 -0
  195. package/dist/server/types.js +34 -0
  196. package/package.json +209 -0
  197. package/public/assets/container.png +0 -0
  198. package/public/assets/favicon.png +0 -0
  199. package/public/assets/logo-silex-small.png +0 -0
  200. package/public/robots.txt +2 -0
  201. package/public/silex.js +24 -0
  202. package/src/css/_mixins.scss +8 -0
  203. package/src/css/_variables.scss +33 -0
  204. package/src/css/dialog.scss +41 -0
  205. package/src/css/footer.scss +12 -0
  206. package/src/css/grapesjs-light.scss +180 -0
  207. package/src/css/grapesjs.scss +152 -0
  208. package/src/css/index.scss +32 -0
  209. package/src/css/light.scss +7 -0
  210. package/src/css/loader.scss +12 -0
  211. package/src/css/page-panel.scss +65 -0
  212. package/src/css/project-bar.scss +102 -0
  213. package/src/css/silex.scss +189 -0
  214. package/src/css/website-info.scss +14 -0
  215. package/src/html/debug.pug +8 -0
  216. package/src/html/index.pug +39 -0
  217. package/src/html/templates/includes.pug +1 -0
  218. package/src/html/templates/workspace.pug +2 -0
  219. package/src/ts/client/api.ts +144 -0
  220. package/src/ts/client/assetUrl.test.ts +125 -0
  221. package/src/ts/client/assetUrl.ts +235 -0
  222. package/src/ts/client/config.ts +105 -0
  223. package/src/ts/client/events.ts +34 -0
  224. package/src/ts/client/expose.ts +30 -0
  225. package/src/ts/client/grapesjs/LoginDialog.ts +204 -0
  226. package/src/ts/client/grapesjs/PublicationManager.ts +370 -0
  227. package/src/ts/client/grapesjs/PublicationUi.ts +342 -0
  228. package/src/ts/client/grapesjs/blocks.ts +37 -0
  229. package/src/ts/client/grapesjs/breadcrumbs.ts +79 -0
  230. package/src/ts/client/grapesjs/eleventy.ts +47 -0
  231. package/src/ts/client/grapesjs/footer.ts +27 -0
  232. package/src/ts/client/grapesjs/index.ts +335 -0
  233. package/src/ts/client/grapesjs/internal-links.test.ts +105 -0
  234. package/src/ts/client/grapesjs/internal-links.ts +225 -0
  235. package/src/ts/client/grapesjs/new-page-dialog.ts +90 -0
  236. package/src/ts/client/grapesjs/openImport.ts +81 -0
  237. package/src/ts/client/grapesjs/page-panel.ts +118 -0
  238. package/src/ts/client/grapesjs/project-bar.ts +107 -0
  239. package/src/ts/client/grapesjs/rich-text.ts +33 -0
  240. package/src/ts/client/grapesjs/semantic.ts +114 -0
  241. package/src/ts/client/grapesjs/settings.ts +208 -0
  242. package/src/ts/client/grapesjs/storage.ts +121 -0
  243. package/src/ts/client/grapesjs/symbolDialogs.ts +38 -0
  244. package/src/ts/client/index.ts +98 -0
  245. package/src/ts/client/publication-transformers.test.ts +199 -0
  246. package/src/ts/client/publication-transformers.ts +263 -0
  247. package/src/ts/client/utils.ts +28 -0
  248. package/src/ts/constants.ts +52 -0
  249. package/src/ts/externs.ts +18 -0
  250. package/src/ts/page.ts +31 -0
  251. package/src/ts/plugins/client/11ty.ts +104 -0
  252. package/src/ts/plugins/client/publicationRenderer.ts +174 -0
  253. package/src/ts/plugins/client/template.ts +192 -0
  254. package/src/ts/plugins/client/website-info.ts +84 -0
  255. package/src/ts/plugins/server/AuthPlugin.ts +38 -0
  256. package/src/ts/plugins/server/Cache.ts +28 -0
  257. package/src/ts/plugins/server/DownloadConnector.ts +148 -0
  258. package/src/ts/plugins/server/FtpConnector.test.ts +82 -0
  259. package/src/ts/plugins/server/FtpConnector.ts +609 -0
  260. package/src/ts/plugins/server/GitlabConnector.ts +644 -0
  261. package/src/ts/plugins/server/PublicationOptimizer.ts +14 -0
  262. package/src/ts/plugins/server/SslPlugin.ts +84 -0
  263. package/src/ts/plugins/server/StaticPlugin.ts +79 -0
  264. package/src/ts/server/api/api.ts +19 -0
  265. package/src/ts/server/api/connectorApi.ts +345 -0
  266. package/src/ts/server/api/publicationApi.ts +159 -0
  267. package/src/ts/server/api/websiteApi.ts +432 -0
  268. package/src/ts/server/cli.ts +65 -0
  269. package/src/ts/server/config.ts +189 -0
  270. package/src/ts/server/connectors/FsHosting.ts +60 -0
  271. package/src/ts/server/connectors/FsStorage.test.ts +51 -0
  272. package/src/ts/server/connectors/FsStorage.ts +261 -0
  273. package/src/ts/server/connectors/connectors.ts +203 -0
  274. package/src/ts/server/events.ts +37 -0
  275. package/src/ts/server/expose.ts +19 -0
  276. package/src/ts/server/express.ts +70 -0
  277. package/src/ts/server/index.ts +100 -0
  278. package/src/ts/server/jobs.test.ts +75 -0
  279. package/src/ts/server/jobs.ts +87 -0
  280. package/src/ts/server/utils/BackwardCompat.ts +552 -0
  281. package/src/ts/server/utils/validation.ts +34 -0
  282. package/src/ts/types.ts +339 -0
@@ -0,0 +1,170 @@
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
+ /**
18
+ * @deprecated
19
+ * This plugin is deprecated. Use the publication renderer plugin instead.
20
+ */
21
+ console.warn('This plugin is deprecated. Use the publication renderer plugin instead.');
22
+ throw 'This plugin is deprecated. Use the publication renderer plugin instead.';
23
+ /* Usage:
24
+ import publicationRenderer from 'https://unpkg.com/@silexlabs/silex@latest/dist/plugins/client/plugins/client/publicationRenderer'
25
+ await config.addPlugin(publicationRenderer, {
26
+ css: {
27
+ frontMatter: true,
28
+ ext: '.css.liquid',
29
+ path: '../../../pages'
30
+ },
31
+ html: {
32
+ frontMatter: false,
33
+ path: '../../../_includes'
34
+ },
35
+ assets: {
36
+ path: '../../../',
37
+ url: '/',
38
+ },
39
+ })
40
+ */
41
+ import { getPageSlug } from '../../page.js';
42
+ import { onAll } from '../../client/utils.js';
43
+ import { ClientEvent } from '../../client/events.js';
44
+ export default (config, opts = {}) => {
45
+ const options = {
46
+ autoHomePage: false,
47
+ ...opts,
48
+ html: {
49
+ frontMatter: false,
50
+ ext: '.html',
51
+ url: '/',
52
+ path: './',
53
+ ...opts.html,
54
+ },
55
+ css: {
56
+ frontMatter: false,
57
+ ext: '.css',
58
+ url: '/css',
59
+ path: './css',
60
+ ...opts.css,
61
+ },
62
+ assets: {
63
+ url: '/',
64
+ path: './',
65
+ ...opts.assets,
66
+ },
67
+ };
68
+ config.on(ClientEvent.STARTUP_END, ({ editor }) => {
69
+ editor.on(ClientEvent.PUBLISH_START, () => {
70
+ // Update assets URL to display outside the editor
71
+ const assetsFolderUrl = options.assets.url;
72
+ if (assetsFolderUrl) {
73
+ // Concat the paths, handles the trailing and leading slashes
74
+ const publishedUrl = path => `${assetsFolderUrl.replace(/\/+$/, '')}/${path.replace(/^\/+/, '')}`;
75
+ // New URLs for assets, according to site config
76
+ onAll(editor, c => {
77
+ // Attributes
78
+ if (c.get('type') === 'image') {
79
+ const src = c.get('src');
80
+ c.set('tmp-src', src);
81
+ c.set('src', publishedUrl(src));
82
+ }
83
+ //// Inline styles
84
+ //// This is handled by the editor.Css.getAll loop
85
+ //const bgUrl = c.getStyle()['background-image']?.match(/url\('(.*)'\)/)?.pop()
86
+ //if(bgUrl) {
87
+ // c.set('tmp-bg-url', bgUrl)
88
+ // c.setStyle({
89
+ // ...c.getStyle(),
90
+ // 'background-image': `url('${publishedUrl(bgUrl)}')`,
91
+ // })
92
+ //}
93
+ });
94
+ editor.Css.getAll()
95
+ .forEach(c => {
96
+ const bgUrl = c.getStyle()['background-image']?.match(/url\('(.*)'\)/)?.pop();
97
+ if (bgUrl) {
98
+ c.setStyle({
99
+ ...c.getStyle(),
100
+ 'background-image': `url('${publishedUrl(bgUrl)}')`,
101
+ });
102
+ c.set('tmp-bg-url-css', bgUrl);
103
+ }
104
+ });
105
+ }
106
+ editor.Pages.getAll().forEach(page => {
107
+ if (page.get('type') === 'main' && options?.autoHomePage) {
108
+ page.set('slug', 'index');
109
+ }
110
+ else {
111
+ page.set('slug', getPageSlug(page.get('name') || page.get('type')));
112
+ }
113
+ });
114
+ });
115
+ editor.on(ClientEvent.PUBLISH_END, () => {
116
+ const assetsFolderUrl = options.assets.url;
117
+ // Reset asset URLs
118
+ if (assetsFolderUrl) {
119
+ onAll(editor, c => {
120
+ if (c.get('type') === 'image' && c.has('tmp-src')) {
121
+ c.set('src', c.get('tmp-src'));
122
+ c.set('tmp-src');
123
+ }
124
+ //// This is handled by the editor.Css.getAll loop
125
+ //if(c.getStyle()['background-image'] && c.has('tmp-bg-url')) {
126
+ // c.setStyle({
127
+ // ...c.getStyle(),
128
+ // 'background-image': `url('${c.get('tmp-bg-url')}')`,
129
+ // })
130
+ // c.set('tmp-bg-url')
131
+ //}
132
+ });
133
+ editor.Css.getAll()
134
+ .forEach(c => {
135
+ if (c.has('tmp-bg-url-css')) {
136
+ c.setStyle({
137
+ ...c.getStyle(),
138
+ 'background-image': `url('${c.get('tmp-bg-url-css')}')`,
139
+ });
140
+ c.set('tmp-bg-url-css');
141
+ }
142
+ });
143
+ }
144
+ });
145
+ //editor.on(ClientEvent.PUBLISH_DATA, data => {
146
+ // data.pages.forEach((page: Page, idx) => {
147
+ // const file = data.files[idx] as ClientSideFile
148
+ // console.log('Silex: publication renderer: page', page, file)
149
+ // // CSS
150
+ // if(file.type === 'css') {
151
+ // file.cssPath = file.cssPath.replace(/\.css$/, options.css.ext)
152
+ // file.cssPath = options.css.path + file.cssPath
153
+ // if (options.css.frontMatter) {
154
+ // file.css = `---\npermalink: ${options.css.url}/${page.slug}.css\n---\n${file.css}`
155
+ // }
156
+ // // HTML
157
+ // file.htmlPath = file.htmlPath.replace(/\.html$/, options.html.ext)
158
+ // file.htmlPath = options.html.path + file.htmlPath
159
+ // if (options.html.frontMatter) {
160
+ // file.html = `---\npermalink: ${options.html.url}/${page.slug}.html\n---\n${file.html}`
161
+ // }
162
+ // })
163
+ // data.assets.forEach((asset, idx) => {
164
+ // asset.path = options.assets.path + asset.src
165
+ // // The rest is handled by the editor.Css.getAll loop
166
+ // })
167
+ //})
168
+ });
169
+ };
170
+ //# sourceMappingURL=publicationRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publicationRenderer.js","sourceRoot":"","sources":["../../../../../src/ts/plugins/client/publicationRenderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;GAGG;AACH,OAAO,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAA;AACvF,MAAM,yEAAyE,CAAA;AAE/E;;;;;;;;;;;;;;;;;EAiBE;AAEF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAGpD,eAAe,CAAC,MAAM,EAAE,OAAY,EAAE,EAAE,EAAE;IACxC,MAAM,OAAO,GAAG;QACd,YAAY,EAAE,KAAK;QACnB,GAAG,IAAI;QACP,IAAI,EAAE;YACJ,WAAW,EAAE,KAAK;YAClB,GAAG,EAAE,OAAO;YACZ,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,IAAI;YACV,GAAG,IAAI,CAAC,IAAI;SACb;QACD,GAAG,EAAE;YACH,WAAW,EAAE,KAAK;YAClB,GAAG,EAAE,MAAM;YACX,GAAG,EAAE,MAAM;YACX,IAAI,EAAE,OAAO;YACb,GAAG,IAAI,CAAC,GAAG;SACZ;QACD,MAAM,EAAE;YACN,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,IAAI;YACV,GAAG,IAAI,CAAC,MAAM;SACf;KACF,CAAA;IACD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QAChD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,aAAa,EAAE,GAAG,EAAE;YACxC,kDAAkD;YAClD,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAA;YAC1C,IAAI,eAAe,EAAE;gBACnB,6DAA6D;gBAC7D,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAA;gBACjG,gDAAgD;gBAChD,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE;oBAChB,aAAa;oBACb,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE;wBAC7B,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;wBACxB,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;wBACrB,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAA;qBAChC;oBACD,kBAAkB;oBAClB,kDAAkD;oBAClD,+EAA+E;oBAC/E,aAAa;oBACb,8BAA8B;oBAC9B,gBAAgB;oBAChB,sBAAsB;oBACtB,0DAA0D;oBAC1D,MAAM;oBACN,GAAG;gBACL,CAAC,CAAC,CAAA;gBACF,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE;qBAChB,OAAO,CAAC,CAAC,CAAC,EAAE;oBACX,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,CAAA;oBAC7E,IAAI,KAAK,EAAE;wBACT,CAAC,CAAC,QAAQ,CAAC;4BACT,GAAG,CAAC,CAAC,QAAQ,EAAE;4BACf,kBAAkB,EAAE,QAAQ,YAAY,CAAC,KAAK,CAAC,IAAI;yBACpD,CAAC,CAAA;wBACF,CAAC,CAAC,GAAG,CAAC,gBAAuB,EAAE,KAAK,CAAC,CAAA;qBACtC;gBACH,CAAC,CAAC,CAAA;aACL;YACD,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACnC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,EAAE,YAAY,EAAE;oBACxD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;iBAC1B;qBAAM;oBACL,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;iBACpE;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,EAAE;YACtC,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAA;YAC1C,mBAAmB;YACnB,IAAI,eAAe,EAAE;gBACnB,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE;oBAChB,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;wBACjD,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA;wBAC9B,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;qBACjB;oBACH,kDAAkD;oBAClD,+DAA+D;oBAC/D,gBAAgB;oBAChB,sBAAsB;oBACtB,0DAA0D;oBAC1D,MAAM;oBACN,uBAAuB;oBACvB,GAAG;gBACH,CAAC,CAAC,CAAA;gBACF,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE;qBAChB,OAAO,CAAC,CAAC,CAAC,EAAE;oBACX,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAuB,CAAC,EAAE;wBAClC,CAAC,CAAC,QAAQ,CAAC;4BACT,GAAG,CAAC,CAAC,QAAQ,EAAE;4BACf,kBAAkB,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAuB,CAAC,IAAI;yBAC/D,CAAC,CAAA;wBACF,CAAC,CAAC,GAAG,CAAC,gBAAuB,CAAC,CAAA;qBAC/B;gBACH,CAAC,CAAC,CAAA;aACL;QACH,CAAC,CAAC,CAAA;QACF,+CAA+C;QAC/C,6CAA6C;QAC7C,oDAAoD;QACpD,kEAAkE;QAClE,YAAY;QACZ,+BAA+B;QAC/B,oEAAoE;QACpE,oDAAoD;QACpD,oCAAoC;QACpC,0FAA0F;QAC1F,OAAO;QACP,aAAa;QACb,wEAAwE;QACxE,uDAAuD;QACvD,qCAAqC;QACrC,8FAA8F;QAC9F,OAAO;QACP,MAAM;QACN,yCAAyC;QACzC,kDAAkD;QAClD,0DAA0D;QAC1D,MAAM;QACN,IAAI;IACN,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ declare const _default: (config: any, opts?: any) => Promise<void>;
2
+ export default _default;
@@ -0,0 +1,183 @@
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
+ // Silex serves /clients
18
+ // @ts-ignore
19
+ import { onAll } from '../client/utils.js';
20
+ // @ts-ignore
21
+ import { ClientEvent } from '../client/events.js';
22
+ // You need to serve lit-html at /js/lit-html/
23
+ // @ts-ignore
24
+ import { html, render } from '../js/lit-html/lit-html.js';
25
+ // @ts-ignore
26
+ import { styleMap } from '../js/lit-html/directives/style-map.js';
27
+ const silex = window['silex'];
28
+ const pluginName = 'template';
29
+ const templateType = 'templateType';
30
+ const templateKey = 'template';
31
+ export default async (config, opts = {}) => {
32
+ config.on(ClientEvent.GRAPESJS_END, () => {
33
+ const editor = silex.getEditor();
34
+ // Add the new trait to all component types
35
+ editor.DomComponents.getTypes().map(type => {
36
+ const originalType = editor.DomComponents.getType(type.id);
37
+ editor.DomComponents.addType(type.id, {
38
+ model: {
39
+ defaults: {
40
+ traits: [
41
+ // Keep the type original traits
42
+ ...originalType.model.prototype.defaults.traits,
43
+ // Add the new trait
44
+ {
45
+ label: false,
46
+ type: templateType,
47
+ name: pluginName,
48
+ },
49
+ ]
50
+ }
51
+ }
52
+ });
53
+ });
54
+ function doRender(el) {
55
+ const template = editor.getSelected()?.get(templateKey) || {};
56
+ const taStyle = opts.styles?.textarea ?? styleMap({
57
+ backgroundColor: 'var(--darkerPrimaryColor)',
58
+ });
59
+ const sepStyle = opts.styles?.sep ?? styleMap({ height: '10px' });
60
+ const labels = {
61
+ before: html `<strong>Before</strong> the element`,
62
+ replace: html `<strong>Replace</strong> the element's children`,
63
+ after: html `<strong>After</strong> the element`,
64
+ attributes: html `HTML attributes`,
65
+ classname: html `CSS classes`,
66
+ style: html `CSS styles`,
67
+ };
68
+ render(html `
69
+ <div>
70
+ <h3>Template</h3>
71
+ <p>This will be inserted in the published version</p>
72
+ </div>
73
+ ${['classname', 'attributes', 'style'].map(id => html `
74
+ <label>
75
+ ${labels[id]}
76
+ <input
77
+ id="template-${id}"
78
+ .value=${template[id] || ''}
79
+ style=${taStyle}
80
+ />
81
+ </label>
82
+ `)}
83
+ ${['before', 'replace', 'after'].map(id => html `
84
+ <label
85
+ for="template-${id}"
86
+ >${labels[id]}</label>
87
+ <textarea
88
+ id="template-${id}"
89
+ style=${taStyle}
90
+ .value=${template[id] || ''}
91
+ ></textarea>
92
+ `)}
93
+ `, el);
94
+ }
95
+ editor.TraitManager.addType(templateType, {
96
+ createInput({ trait }) {
97
+ // Create a new element container and add some content
98
+ const el = document.createElement('div');
99
+ el.classList.add('gjs-one-bg');
100
+ // update the UI when a page is added/renamed/removed
101
+ editor.on('page', () => doRender(el));
102
+ doRender(el);
103
+ // this will be the element passed to onEvent and onUpdate
104
+ return el;
105
+ },
106
+ // Update the component based on UI changes
107
+ // `elInput` is the result HTMLElement you get from `createInput`
108
+ onEvent({ elInput, component, event }) {
109
+ const template = {
110
+ before: elInput.querySelector('#template-before').value,
111
+ replace: elInput.querySelector('#template-replace').value,
112
+ after: elInput.querySelector('#template-after').value,
113
+ attributes: elInput.querySelector('#template-attributes').value,
114
+ classname: elInput.querySelector('#template-classname').value,
115
+ style: elInput.querySelector('#template-style').value,
116
+ };
117
+ // Store the new template
118
+ if (Object.values(template).filter(val => !!val && !!cleanup(val)).length > 0) {
119
+ component.set(templateKey, template);
120
+ }
121
+ else {
122
+ component.set(templateKey);
123
+ }
124
+ },
125
+ // Update UI on the component change
126
+ onUpdate({ elInput, component }) {
127
+ doRender(elInput);
128
+ },
129
+ });
130
+ // Make html attribute
131
+ // Quote strings, no values for boolean
132
+ function makeAttribute(key, value) {
133
+ switch (typeof value) {
134
+ case 'boolean': return value ? key : '';
135
+ default: return `${key}="${value}"`;
136
+ }
137
+ }
138
+ // Remove empty lines in templates
139
+ function cleanup(template) {
140
+ return template
141
+ // split in lines
142
+ .split('\n')
143
+ // remove lines with only spaces
144
+ .map(line => line.trim())
145
+ .filter(line => !!line)
146
+ // put back together
147
+ .join('\n');
148
+ }
149
+ editor.on(ClientEvent.PUBLISH_START, () => {
150
+ // Insert templates
151
+ onAll(editor, c => {
152
+ const template = c.get(templateKey);
153
+ const toHTML = c.toHTML;
154
+ const classes = c.getClasses();
155
+ const before = cleanup(template?.before || '');
156
+ const replace = cleanup(template?.replace || '');
157
+ const after = cleanup(template?.after || '');
158
+ const classname = cleanup(template?.classname || '');
159
+ const style = cleanup(template?.style || '');
160
+ const attributes = cleanup(template?.attributes || '');
161
+ // Store the initial method
162
+ if (!c.has('tmpHtml'))
163
+ c.set('tmpHtml', toHTML);
164
+ // Override the method
165
+ c.toHTML = () => {
166
+ return `${before}${c.get('tagName') ? `<${c.get('tagName')}
167
+ ${Object.entries(c.get('attributes')).map(([key, value]) => makeAttribute(key, value)).join(' ')}
168
+ ${classes.length || classname ? `class="${classes.join(' ')} ${classname}"` : ''}
169
+ ${attributes}
170
+ ${style ? `style="${style}"` : ''}
171
+ >` : ''}${replace || c.getInnerHTML()}${c.get('tagName') ? `</${c.get('tagName')}>` : ''}${after}`;
172
+ };
173
+ });
174
+ });
175
+ editor.on(ClientEvent.PUBLISH_END, () => {
176
+ onAll(editor, c => {
177
+ // Restore the original method
178
+ c.toHTML = c.get('tmpHtml');
179
+ });
180
+ });
181
+ });
182
+ };
183
+ //# 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>;
@@ -0,0 +1,72 @@
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
+ import { ClientEvent } from '../../client/events.js';
18
+ // Silex plugin
19
+ export default async function (config) {
20
+ let websiteMeta = null;
21
+ config.on(ClientEvent.GRAPESJS_START, async () => {
22
+ // GrapesJs plugin
23
+ const grapesPlugin = (editor, opts) => {
24
+ const options = {
25
+ appendTo: 'commands',
26
+ ...opts,
27
+ };
28
+ editor.on('storage:end:load', async () => {
29
+ // Get website meta data
30
+ const { websiteId, connectorId } = options;
31
+ // Get the website meta data
32
+ websiteMeta = await config.api.websiteMetaRead({ websiteId, connectorId });
33
+ displayWebsiteMeta();
34
+ });
35
+ return {};
36
+ };
37
+ // Add the plugin to the GrapeJS
38
+ config.grapesJsConfig.plugins.push(grapesPlugin);
39
+ config.grapesJsConfig.pluginsOpts[grapesPlugin.toString()] = {
40
+ websiteId: config.websiteId,
41
+ connectorId: config.storageId,
42
+ };
43
+ });
44
+ config.on(ClientEvent.GRAPESJS_END, async ({ editor }) => {
45
+ // Detect when the page changes
46
+ editor.on('page:select', async () => {
47
+ displayWebsiteMeta();
48
+ });
49
+ });
50
+ // Display the website meta data
51
+ function displayWebsiteMeta() {
52
+ // Get or create the container
53
+ const container = document.querySelector('#gjs-website-meta') ?? (function () {
54
+ const c = document.createElement('div');
55
+ c.id = 'gjs-website-meta';
56
+ c.classList.add('gjs-website-meta');
57
+ // Add the container to the UI
58
+ // Add the name of the website in the top bar
59
+ const topBar = document.querySelector('.gjs-pn-devices-c');
60
+ topBar?.appendChild(c);
61
+ return c;
62
+ })();
63
+ // Get the current page
64
+ const currentPage = config.getEditor().Pages?.getSelected();
65
+ // Display the website meta data
66
+ container.innerHTML = `
67
+ ${websiteMeta?.imageUrl ? `<div class="gjs-website-meta-image" style="background: url(${websiteMeta?.imageUrl});"></div>` : ''}
68
+ <div class="gjs-website-meta-name">${websiteMeta?.name ?? 'Unknown'} | ${currentPage.get('name') ?? currentPage.get('type')}</div>
69
+ `;
70
+ }
71
+ }
72
+ //# sourceMappingURL=website-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"website-info.js","sourceRoot":"","sources":["../../../../../src/ts/plugins/client/website-info.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AASpD,eAAe;AACf,MAAM,CAAC,OAAO,CAAC,KAAK,WAAU,MAAM;IAClC,IAAI,WAAW,GAAuB,IAAI,CAAA;IAC1C,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC/C,kBAAkB;QAClB,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,IAAiC,EAAE,EAAE;YACjE,MAAM,OAAO,GAAG;gBACd,QAAQ,EAAE,UAAU;gBACpB,GAAG,IAAI;aACc,CAAA;YACvB,MAAM,CAAC,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;gBACvC,wBAAwB;gBACxB,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,OAAO,CAAA;gBAC1C,4BAA4B;gBAC5B,WAAW,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAA;gBAC1E,kBAAkB,EAAE,CAAA;YACtB,CAAC,CAAC,CAAA;YACF,OAAO,EAAE,CAAA;QACX,CAAC,CAAA;QAED,gCAAgC;QAChC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAChD,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,GAAG;YAC3D,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,WAAW,EAAE,MAAM,CAAC,SAAS;SAC9B,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,EAAC,MAAM,EAAC,EAAE,EAAE;QACrD,+BAA+B;QAC/B,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;YAClC,kBAAkB,EAAE,CAAA;QACtB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAGF,gCAAgC;IAChC,SAAS,kBAAkB;QACzB,8BAA8B;QAC9B,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAChE,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;YACvC,CAAC,CAAC,EAAE,GAAG,kBAAkB,CAAA;YACzB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;YACnC,8BAA8B;YAC9B,6CAA6C;YAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAA;YAC1D,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;YACtB,OAAO,CAAC,CAAA;QACV,CAAC,CAAC,EAAE,CAAA;QACJ,uBAAuB;QACvB,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,CAAA;QAC3D,gCAAgC;QAChC,SAAS,CAAC,SAAS,GAAG;UAChB,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,8DAA8D,WAAW,EAAE,QAAQ,YAAY,CAAC,CAAC,CAAC,EAAE;6CACzF,WAAW,EAAE,IAAI,IAAI,SAAS,MAAM,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;OAC5H,CAAA;IACL,CAAC;AACH,CAAC"}