@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.
- package/.env.default +19 -0
- package/.silex.js +37 -0
- package/LICENSE +661 -0
- package/README.md +96 -0
- package/dist/client/client/api.d.ts +85 -0
- package/dist/client/client/assetUrl.d.ts +51 -0
- package/dist/client/client/config.d.ts +58 -0
- package/dist/client/client/events.d.ts +14 -0
- package/dist/client/client/expose.d.ts +8 -0
- package/dist/client/client/grapesjs/LoginDialog.d.ts +15 -0
- package/dist/client/client/grapesjs/PublicationManager.d.ts +72 -0
- package/dist/client/client/grapesjs/PublicationUi.d.ts +62 -0
- package/dist/client/client/grapesjs/blocks.d.ts +1 -0
- package/dist/client/client/grapesjs/breadcrumbs.d.ts +1 -0
- package/dist/client/client/grapesjs/footer.d.ts +2 -0
- package/dist/client/client/grapesjs/index.d.ts +5 -0
- package/dist/client/client/grapesjs/internal-links.d.ts +1 -0
- package/dist/client/client/grapesjs/new-page-dialog.d.ts +2 -0
- package/dist/client/client/grapesjs/openImport.d.ts +9 -0
- package/dist/client/client/grapesjs/page-panel.d.ts +3 -0
- package/dist/client/client/grapesjs/project-bar.d.ts +1 -0
- package/dist/client/client/grapesjs/rich-text.d.ts +1 -0
- package/dist/client/client/grapesjs/semantic.d.ts +1 -0
- package/dist/client/client/grapesjs/settings.d.ts +2 -0
- package/dist/client/client/grapesjs/storage.d.ts +1 -0
- package/dist/client/client/grapesjs/symbolDialogs.d.ts +3 -0
- package/dist/client/client/index.d.ts +5 -0
- package/dist/client/client/publication-transformers.d.ts +41 -0
- package/dist/client/client/utils.d.ts +2 -0
- package/dist/client/constants.d.ts +29 -0
- package/dist/client/css/admin.css +4491 -0
- package/dist/client/index.html +9 -0
- package/dist/client/js/main.js +321 -0
- package/dist/client/js/main.js.LICENSE.txt +24 -0
- package/dist/client/page.d.ts +2 -0
- package/dist/client/types.d.ts +334 -0
- package/dist/plugins/client/client/api.d.ts +85 -0
- package/dist/plugins/client/client/api.js +114 -0
- package/dist/plugins/client/client/api.js.map +1 -0
- package/dist/plugins/client/client/assetUrl.d.ts +51 -0
- package/dist/plugins/client/client/assetUrl.js +224 -0
- package/dist/plugins/client/client/assetUrl.js.map +1 -0
- package/dist/plugins/client/client/config.d.ts +58 -0
- package/dist/plugins/client/client/config.js +90 -0
- package/dist/plugins/client/client/config.js.map +1 -0
- package/dist/plugins/client/client/events.d.ts +14 -0
- package/dist/plugins/client/client/events.js +34 -0
- package/dist/plugins/client/client/events.js.map +1 -0
- package/dist/plugins/client/client/grapesjs/LoginDialog.d.ts +15 -0
- package/dist/plugins/client/client/grapesjs/LoginDialog.js +195 -0
- package/dist/plugins/client/client/grapesjs/LoginDialog.js.map +1 -0
- package/dist/plugins/client/client/grapesjs/PublicationManager.d.ts +72 -0
- package/dist/plugins/client/client/grapesjs/PublicationManager.js +356 -0
- package/dist/plugins/client/client/grapesjs/PublicationManager.js.map +1 -0
- package/dist/plugins/client/client/grapesjs/PublicationUi.d.ts +62 -0
- package/dist/plugins/client/client/grapesjs/PublicationUi.js +336 -0
- package/dist/plugins/client/client/grapesjs/PublicationUi.js.map +1 -0
- package/dist/plugins/client/client/grapesjs/blocks.d.ts +1 -0
- package/dist/plugins/client/client/grapesjs/blocks.js +37 -0
- package/dist/plugins/client/client/grapesjs/blocks.js.map +1 -0
- package/dist/plugins/client/client/grapesjs/breadcrumbs.d.ts +1 -0
- package/dist/plugins/client/client/grapesjs/breadcrumbs.js +75 -0
- package/dist/plugins/client/client/grapesjs/breadcrumbs.js.map +1 -0
- package/dist/plugins/client/client/grapesjs/footer.d.ts +2 -0
- package/dist/plugins/client/client/grapesjs/footer.js +28 -0
- package/dist/plugins/client/client/grapesjs/footer.js.map +1 -0
- package/dist/plugins/client/client/grapesjs/index.d.ts +5 -0
- package/dist/plugins/client/client/grapesjs/index.js +313 -0
- package/dist/plugins/client/client/grapesjs/index.js.map +1 -0
- package/dist/plugins/client/client/grapesjs/internal-links.d.ts +1 -0
- package/dist/plugins/client/client/grapesjs/internal-links.js +219 -0
- package/dist/plugins/client/client/grapesjs/internal-links.js.map +1 -0
- package/dist/plugins/client/client/grapesjs/new-page-dialog.d.ts +2 -0
- package/dist/plugins/client/client/grapesjs/new-page-dialog.js +83 -0
- package/dist/plugins/client/client/grapesjs/new-page-dialog.js.map +1 -0
- package/dist/plugins/client/client/grapesjs/openImport.d.ts +9 -0
- package/dist/plugins/client/client/grapesjs/openImport.js +74 -0
- package/dist/plugins/client/client/grapesjs/openImport.js.map +1 -0
- package/dist/plugins/client/client/grapesjs/page-panel.d.ts +3 -0
- package/dist/plugins/client/client/grapesjs/page-panel.js +113 -0
- package/dist/plugins/client/client/grapesjs/page-panel.js.map +1 -0
- package/dist/plugins/client/client/grapesjs/project-bar.d.ts +1 -0
- package/dist/plugins/client/client/grapesjs/project-bar.js +104 -0
- package/dist/plugins/client/client/grapesjs/project-bar.js.map +1 -0
- package/dist/plugins/client/client/grapesjs/rich-text.d.ts +1 -0
- package/dist/plugins/client/client/grapesjs/rich-text.js +31 -0
- package/dist/plugins/client/client/grapesjs/rich-text.js.map +1 -0
- package/dist/plugins/client/client/grapesjs/semantic.d.ts +1 -0
- package/dist/plugins/client/client/grapesjs/semantic.js +110 -0
- package/dist/plugins/client/client/grapesjs/semantic.js.map +1 -0
- package/dist/plugins/client/client/grapesjs/settings.d.ts +2 -0
- package/dist/plugins/client/client/grapesjs/settings.js +198 -0
- package/dist/plugins/client/client/grapesjs/settings.js.map +1 -0
- package/dist/plugins/client/client/grapesjs/storage.d.ts +1 -0
- package/dist/plugins/client/client/grapesjs/storage.js +126 -0
- package/dist/plugins/client/client/grapesjs/storage.js.map +1 -0
- package/dist/plugins/client/client/grapesjs/symbolDialogs.d.ts +3 -0
- package/dist/plugins/client/client/grapesjs/symbolDialogs.js +36 -0
- package/dist/plugins/client/client/grapesjs/symbolDialogs.js.map +1 -0
- package/dist/plugins/client/client/publication-transformers.d.ts +41 -0
- package/dist/plugins/client/client/publication-transformers.js +238 -0
- package/dist/plugins/client/client/publication-transformers.js.map +1 -0
- package/dist/plugins/client/client/utils.d.ts +2 -0
- package/dist/plugins/client/client/utils.js +25 -0
- package/dist/plugins/client/client/utils.js.map +1 -0
- package/dist/plugins/client/constants.d.ts +29 -0
- package/dist/plugins/client/constants.js +46 -0
- package/dist/plugins/client/constants.js.map +1 -0
- package/dist/plugins/client/page.d.ts +2 -0
- package/dist/plugins/client/page.js +31 -0
- package/dist/plugins/client/page.js.map +1 -0
- package/dist/plugins/client/plugins/client/11ty.d.ts +17 -0
- package/dist/plugins/client/plugins/client/11ty.js +86 -0
- package/dist/plugins/client/plugins/client/11ty.js.map +1 -0
- package/dist/plugins/client/plugins/client/publicationRenderer.d.ts +2 -0
- package/dist/plugins/client/plugins/client/publicationRenderer.js +170 -0
- package/dist/plugins/client/plugins/client/publicationRenderer.js.map +1 -0
- package/dist/plugins/client/plugins/client/template.d.ts +2 -0
- package/dist/plugins/client/plugins/client/template.js +183 -0
- package/dist/plugins/client/plugins/client/template.js.map +1 -0
- package/dist/plugins/client/plugins/client/website-info.d.ts +1 -0
- package/dist/plugins/client/plugins/client/website-info.js +72 -0
- package/dist/plugins/client/plugins/client/website-info.js.map +1 -0
- package/dist/plugins/client/types.d.ts +334 -0
- package/dist/plugins/client/types.js +74 -0
- package/dist/plugins/client/types.js.map +1 -0
- package/dist/plugins/server/constants.d.ts +29 -0
- package/dist/plugins/server/constants.js +49 -0
- package/dist/plugins/server/constants.js.map +1 -0
- package/dist/plugins/server/plugins/server/AuthPlugin.d.ts +1 -0
- package/dist/plugins/server/plugins/server/AuthPlugin.js +40 -0
- package/dist/plugins/server/plugins/server/AuthPlugin.js.map +1 -0
- package/dist/plugins/server/plugins/server/Cache.d.ts +2 -0
- package/dist/plugins/server/plugins/server/Cache.js +32 -0
- package/dist/plugins/server/plugins/server/Cache.js.map +1 -0
- package/dist/plugins/server/plugins/server/DownloadConnector.d.ts +29 -0
- package/dist/plugins/server/plugins/server/DownloadConnector.js +129 -0
- package/dist/plugins/server/plugins/server/DownloadConnector.js.map +1 -0
- package/dist/plugins/server/plugins/server/FtpConnector.d.ts +86 -0
- package/dist/plugins/server/plugins/server/FtpConnector.js +526 -0
- package/dist/plugins/server/plugins/server/FtpConnector.js.map +1 -0
- package/dist/plugins/server/plugins/server/GitlabConnector.d.ts +87 -0
- package/dist/plugins/server/plugins/server/GitlabConnector.js +564 -0
- package/dist/plugins/server/plugins/server/GitlabConnector.js.map +1 -0
- package/dist/plugins/server/plugins/server/PublicationOptimizer.d.ts +0 -0
- package/dist/plugins/server/plugins/server/PublicationOptimizer.js +14 -0
- package/dist/plugins/server/plugins/server/PublicationOptimizer.js.map +1 -0
- package/dist/plugins/server/plugins/server/SslPlugin.d.ts +1 -0
- package/dist/plugins/server/plugins/server/SslPlugin.js +86 -0
- package/dist/plugins/server/plugins/server/SslPlugin.js.map +1 -0
- package/dist/plugins/server/plugins/server/StaticPlugin.d.ts +1 -0
- package/dist/plugins/server/plugins/server/StaticPlugin.js +78 -0
- package/dist/plugins/server/plugins/server/StaticPlugin.js.map +1 -0
- package/dist/plugins/server/server/config.d.ts +59 -0
- package/dist/plugins/server/server/config.js +181 -0
- package/dist/plugins/server/server/config.js.map +1 -0
- package/dist/plugins/server/server/connectors/FsHosting.d.ts +13 -0
- package/dist/plugins/server/server/connectors/FsHosting.js +54 -0
- package/dist/plugins/server/server/connectors/FsHosting.js.map +1 -0
- package/dist/plugins/server/server/connectors/FsStorage.d.ts +43 -0
- package/dist/plugins/server/server/connectors/FsStorage.js +257 -0
- package/dist/plugins/server/server/connectors/FsStorage.js.map +1 -0
- package/dist/plugins/server/server/connectors/connectors.d.ts +87 -0
- package/dist/plugins/server/server/connectors/connectors.js +127 -0
- package/dist/plugins/server/server/connectors/connectors.js.map +1 -0
- package/dist/plugins/server/server/events.d.ts +26 -0
- package/dist/plugins/server/server/events.js +31 -0
- package/dist/plugins/server/server/events.js.map +1 -0
- package/dist/plugins/server/server/jobs.d.ts +12 -0
- package/dist/plugins/server/server/jobs.js +77 -0
- package/dist/plugins/server/server/jobs.js.map +1 -0
- package/dist/plugins/server/server/utils/validation.d.ts +7 -0
- package/dist/plugins/server/server/utils/validation.js +38 -0
- package/dist/plugins/server/server/utils/validation.js.map +1 -0
- package/dist/plugins/server/types.d.ts +334 -0
- package/dist/plugins/server/types.js +78 -0
- package/dist/plugins/server/types.js.map +1 -0
- package/dist/server/constants.js +29 -0
- package/dist/server/plugins/server/Cache.js +15 -0
- package/dist/server/server/api/api.js +20 -0
- package/dist/server/server/api/connectorApi.js +216 -0
- package/dist/server/server/api/publicationApi.js +108 -0
- package/dist/server/server/api/websiteApi.js +296 -0
- package/dist/server/server/cli.js +68 -0
- package/dist/server/server/config.js +120 -0
- package/dist/server/server/connectors/FsHosting.js +35 -0
- package/dist/server/server/connectors/FsStorage.js +225 -0
- package/dist/server/server/connectors/connectors.js +89 -0
- package/dist/server/server/events.js +14 -0
- package/dist/server/server/expose.js +27 -0
- package/dist/server/server/express.js +47 -0
- package/dist/server/server/index.js +90 -0
- package/dist/server/server/jobs.js +48 -0
- package/dist/server/server/utils/validation.js +15 -0
- package/dist/server/types.js +34 -0
- package/package.json +209 -0
- package/public/assets/container.png +0 -0
- package/public/assets/favicon.png +0 -0
- package/public/assets/logo-silex-small.png +0 -0
- package/public/robots.txt +2 -0
- package/public/silex.js +24 -0
- package/src/css/_mixins.scss +8 -0
- package/src/css/_variables.scss +33 -0
- package/src/css/dialog.scss +41 -0
- package/src/css/footer.scss +12 -0
- package/src/css/grapesjs-light.scss +180 -0
- package/src/css/grapesjs.scss +152 -0
- package/src/css/index.scss +32 -0
- package/src/css/light.scss +7 -0
- package/src/css/loader.scss +12 -0
- package/src/css/page-panel.scss +65 -0
- package/src/css/project-bar.scss +102 -0
- package/src/css/silex.scss +189 -0
- package/src/css/website-info.scss +14 -0
- package/src/html/debug.pug +8 -0
- package/src/html/index.pug +39 -0
- package/src/html/templates/includes.pug +1 -0
- package/src/html/templates/workspace.pug +2 -0
- package/src/ts/client/api.ts +144 -0
- package/src/ts/client/assetUrl.test.ts +125 -0
- package/src/ts/client/assetUrl.ts +235 -0
- package/src/ts/client/config.ts +105 -0
- package/src/ts/client/events.ts +34 -0
- package/src/ts/client/expose.ts +30 -0
- package/src/ts/client/grapesjs/LoginDialog.ts +204 -0
- package/src/ts/client/grapesjs/PublicationManager.ts +370 -0
- package/src/ts/client/grapesjs/PublicationUi.ts +342 -0
- package/src/ts/client/grapesjs/blocks.ts +37 -0
- package/src/ts/client/grapesjs/breadcrumbs.ts +79 -0
- package/src/ts/client/grapesjs/eleventy.ts +47 -0
- package/src/ts/client/grapesjs/footer.ts +27 -0
- package/src/ts/client/grapesjs/index.ts +335 -0
- package/src/ts/client/grapesjs/internal-links.test.ts +105 -0
- package/src/ts/client/grapesjs/internal-links.ts +225 -0
- package/src/ts/client/grapesjs/new-page-dialog.ts +90 -0
- package/src/ts/client/grapesjs/openImport.ts +81 -0
- package/src/ts/client/grapesjs/page-panel.ts +118 -0
- package/src/ts/client/grapesjs/project-bar.ts +107 -0
- package/src/ts/client/grapesjs/rich-text.ts +33 -0
- package/src/ts/client/grapesjs/semantic.ts +114 -0
- package/src/ts/client/grapesjs/settings.ts +208 -0
- package/src/ts/client/grapesjs/storage.ts +121 -0
- package/src/ts/client/grapesjs/symbolDialogs.ts +38 -0
- package/src/ts/client/index.ts +98 -0
- package/src/ts/client/publication-transformers.test.ts +199 -0
- package/src/ts/client/publication-transformers.ts +263 -0
- package/src/ts/client/utils.ts +28 -0
- package/src/ts/constants.ts +52 -0
- package/src/ts/externs.ts +18 -0
- package/src/ts/page.ts +31 -0
- package/src/ts/plugins/client/11ty.ts +104 -0
- package/src/ts/plugins/client/publicationRenderer.ts +174 -0
- package/src/ts/plugins/client/template.ts +192 -0
- package/src/ts/plugins/client/website-info.ts +84 -0
- package/src/ts/plugins/server/AuthPlugin.ts +38 -0
- package/src/ts/plugins/server/Cache.ts +28 -0
- package/src/ts/plugins/server/DownloadConnector.ts +148 -0
- package/src/ts/plugins/server/FtpConnector.test.ts +82 -0
- package/src/ts/plugins/server/FtpConnector.ts +609 -0
- package/src/ts/plugins/server/GitlabConnector.ts +644 -0
- package/src/ts/plugins/server/PublicationOptimizer.ts +14 -0
- package/src/ts/plugins/server/SslPlugin.ts +84 -0
- package/src/ts/plugins/server/StaticPlugin.ts +79 -0
- package/src/ts/server/api/api.ts +19 -0
- package/src/ts/server/api/connectorApi.ts +345 -0
- package/src/ts/server/api/publicationApi.ts +159 -0
- package/src/ts/server/api/websiteApi.ts +432 -0
- package/src/ts/server/cli.ts +65 -0
- package/src/ts/server/config.ts +189 -0
- package/src/ts/server/connectors/FsHosting.ts +60 -0
- package/src/ts/server/connectors/FsStorage.test.ts +51 -0
- package/src/ts/server/connectors/FsStorage.ts +261 -0
- package/src/ts/server/connectors/connectors.ts +203 -0
- package/src/ts/server/events.ts +37 -0
- package/src/ts/server/expose.ts +19 -0
- package/src/ts/server/express.ts +70 -0
- package/src/ts/server/index.ts +100 -0
- package/src/ts/server/jobs.test.ts +75 -0
- package/src/ts/server/jobs.ts +87 -0
- package/src/ts/server/utils/BackwardCompat.ts +552 -0
- package/src/ts/server/utils/validation.ts +34 -0
- package/src/ts/types.ts +339 -0
|
@@ -0,0 +1,74 @@
|
|
|
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
|
+
* @fileoverview Import feature
|
|
19
|
+
* Let the user import HTML code when she creates a new page
|
|
20
|
+
*
|
|
21
|
+
*/
|
|
22
|
+
// from https://github.com/artf/grapesjs-preset-webpage/blob/3e5a9e12998c9a32b6f1199953084163678e6c17/src/commands/openImport.js
|
|
23
|
+
export default function openImport(editor, config) {
|
|
24
|
+
const pfx = editor.getConfig('stylePrefix');
|
|
25
|
+
const modal = editor.Modal;
|
|
26
|
+
const codeViewer = editor.CodeManager.getViewer('CodeMirror').clone();
|
|
27
|
+
const container = document.createElement('div');
|
|
28
|
+
const importLabel = config.modalImportLabel;
|
|
29
|
+
const importCnt = config.modalImportContent;
|
|
30
|
+
let viewerEditor = codeViewer.editor;
|
|
31
|
+
// Init import button
|
|
32
|
+
const btnImp = document.createElement('button');
|
|
33
|
+
btnImp.type = 'button';
|
|
34
|
+
btnImp.innerHTML = config.modalImportButton;
|
|
35
|
+
btnImp.className = `${pfx}btn-prim ${pfx}btn-import`;
|
|
36
|
+
btnImp.onclick = e => {
|
|
37
|
+
editor.setComponents(viewerEditor.getValue().trim());
|
|
38
|
+
modal.close();
|
|
39
|
+
};
|
|
40
|
+
// Init code viewer
|
|
41
|
+
codeViewer.set({ ...{
|
|
42
|
+
codeName: 'htmlmixed',
|
|
43
|
+
theme: 'hopscotch',
|
|
44
|
+
readOnly: 0
|
|
45
|
+
}, ...config.importViewerOptions });
|
|
46
|
+
return {
|
|
47
|
+
run(_) {
|
|
48
|
+
if (!viewerEditor) {
|
|
49
|
+
const txtarea = document.createElement('textarea');
|
|
50
|
+
if (importLabel) {
|
|
51
|
+
const labelEl = document.createElement('div');
|
|
52
|
+
labelEl.className = `${pfx}import-label`;
|
|
53
|
+
labelEl.innerHTML = importLabel;
|
|
54
|
+
container.appendChild(labelEl);
|
|
55
|
+
}
|
|
56
|
+
container.appendChild(txtarea);
|
|
57
|
+
container.appendChild(btnImp);
|
|
58
|
+
codeViewer.init(txtarea);
|
|
59
|
+
viewerEditor = codeViewer.editor;
|
|
60
|
+
}
|
|
61
|
+
modal.setTitle(config.modalImportTitle);
|
|
62
|
+
modal.setContent(container);
|
|
63
|
+
const cnt = typeof importCnt === 'function' ? importCnt(editor) : importCnt;
|
|
64
|
+
codeViewer.setContent(cnt || '');
|
|
65
|
+
modal.open().getModel()
|
|
66
|
+
.once('change:open', () => editor.stopCommand(this.id));
|
|
67
|
+
viewerEditor.refresh();
|
|
68
|
+
},
|
|
69
|
+
stop() {
|
|
70
|
+
modal.close();
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=openImport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openImport.js","sourceRoot":"","sources":["../../../../../src/ts/client/grapesjs/openImport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;;GAIG;AACH,gIAAgI;AAChI,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,MAAM,EAAE,MAAM;IAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;IAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;IAC1B,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAA;IACrE,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC/C,MAAM,WAAW,GAAG,MAAM,CAAC,gBAAgB,CAAA;IAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,kBAAkB,CAAA;IAC3C,IAAI,YAAY,GAAG,UAAU,CAAC,MAAM,CAAA;IAEpC,qBAAqB;IACrB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IAC/C,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAA;IACtB,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,iBAAiB,CAAA;IAC3C,MAAM,CAAC,SAAS,GAAG,GAAG,GAAG,YAAY,GAAG,YAAY,CAAA;IACpD,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE;QACnB,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;QACpD,KAAK,CAAC,KAAK,EAAE,CAAA;IACf,CAAC,CAAA;IAED,mBAAmB;IACnB,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG;YAClB,QAAQ,EAAE,WAAW;YACrB,KAAK,EAAE,WAAW;YAClB,QAAQ,EAAE,CAAC;SACZ,EAAE,GAAG,MAAM,CAAC,mBAAmB,EAAC,CAAC,CAAA;IAElC,OAAO;QACL,GAAG,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,EAAE;gBACjB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;gBAElD,IAAI,WAAW,EAAE;oBACf,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;oBAC7C,OAAO,CAAC,SAAS,GAAG,GAAG,GAAG,cAAc,CAAA;oBACxC,OAAO,CAAC,SAAS,GAAG,WAAW,CAAA;oBAC/B,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;iBAC/B;gBAED,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;gBAC9B,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;gBAC7B,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACxB,YAAY,GAAG,UAAU,CAAC,MAAM,CAAA;aACjC;YAED,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;YACvC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;YAC3B,MAAM,GAAG,GAAG,OAAO,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YAC3E,UAAU,CAAC,UAAU,CAAC,GAAG,IAAI,EAAE,CAAC,CAAA;YAChC,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;iBACpB,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;YACzD,YAAY,CAAC,OAAO,EAAE,CAAA;QACxB,CAAC;QAED,IAAI;YACF,KAAK,CAAC,KAAK,EAAE,CAAA;QACf,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
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 * as grapesjs from 'grapesjs/dist/grapes.min.js';
|
|
18
|
+
import { html, render } from 'lit-html';
|
|
19
|
+
const pluginName = 'page-panel';
|
|
20
|
+
let open;
|
|
21
|
+
export const cmdTogglePages = 'pages:open-panel';
|
|
22
|
+
export const cmdAddPage = 'pages:add';
|
|
23
|
+
function selectPage(editor, page) {
|
|
24
|
+
editor.Pages.select(page);
|
|
25
|
+
}
|
|
26
|
+
function addPage(editor, config) {
|
|
27
|
+
const pages = editor.Pages.getAll();
|
|
28
|
+
let idx = 1;
|
|
29
|
+
const newPageName = config.newPageName || 'New page';
|
|
30
|
+
let pageName = newPageName;
|
|
31
|
+
while (pages.find(p => p.getName() === pageName)) {
|
|
32
|
+
pageName = `${newPageName} ${idx++}`;
|
|
33
|
+
}
|
|
34
|
+
const page = editor.Pages.add({ name: pageName });
|
|
35
|
+
editor.runCommand(config.cmdOpenNewPageDialog, { page });
|
|
36
|
+
}
|
|
37
|
+
function removePage(editor, page) {
|
|
38
|
+
if (editor.Pages.getAll().length === 1) {
|
|
39
|
+
console.error('can not delete the only page');
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
const isMain = page.get('type') === 'main';
|
|
43
|
+
const isSelected = editor.Pages.getSelected() === page;
|
|
44
|
+
editor.Pages.remove(page.id);
|
|
45
|
+
const firstPage = editor.Pages.getAll()[0];
|
|
46
|
+
if (isMain)
|
|
47
|
+
firstPage.set('type', 'main');
|
|
48
|
+
if (isSelected)
|
|
49
|
+
selectPage(editor, firstPage);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function settingsPage(editor, config, page) {
|
|
53
|
+
editor.runCommand(config.cmdOpenSettings, { page });
|
|
54
|
+
}
|
|
55
|
+
function renderPages(editor, config) {
|
|
56
|
+
const pages = editor.Pages.getAll();
|
|
57
|
+
const selected = editor.Pages.getSelected();
|
|
58
|
+
const getPageFromEvent = (e) => {
|
|
59
|
+
const el = e.target.hasAttribute('data-page-id') ? e.target : e.target.parentNode;
|
|
60
|
+
e.stopPropagation();
|
|
61
|
+
return editor.Pages.get(el.getAttribute('data-page-id'));
|
|
62
|
+
};
|
|
63
|
+
return html `<section class="pages">
|
|
64
|
+
<main class="pages__main ${pages.length === 1 ? 'pages__single-page' : ''}">
|
|
65
|
+
<div class="pages__list">
|
|
66
|
+
${pages.map(page => {
|
|
67
|
+
const name = page.getName() || page.attributes.type;
|
|
68
|
+
// keep the same structure as the layers panel
|
|
69
|
+
return html `
|
|
70
|
+
<div class="pages__page ${selected === page ? 'pages__page-selected' : ''}" data-page-id=${page.id} @click=${e => selectPage(editor, getPageFromEvent(e))}>
|
|
71
|
+
<div class="pages__page-name">
|
|
72
|
+
${name}
|
|
73
|
+
</div>
|
|
74
|
+
<i class="pages__icon pages__remove-btn fa fa-trash" @click=${e => removePage(editor, getPageFromEvent(e))}></i>
|
|
75
|
+
<i class="pages__icon fa fa-cog" @click=${e => settingsPage(editor, config, getPageFromEvent(e))}></i>
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
`;
|
|
79
|
+
})}
|
|
80
|
+
</div>
|
|
81
|
+
${pages.length ? '' : html `<div class="flex-row">
|
|
82
|
+
No page yet.
|
|
83
|
+
</div>
|
|
84
|
+
`}
|
|
85
|
+
</main></section>`;
|
|
86
|
+
}
|
|
87
|
+
export const pagePanelPlugin = grapesjs.plugins.add(pluginName, (editor, opts) => {
|
|
88
|
+
// create wrapper
|
|
89
|
+
const el = document.createElement('div');
|
|
90
|
+
el.classList.add('pages__wrapper');
|
|
91
|
+
// update
|
|
92
|
+
const doRender = () => render(renderPages(editor, opts), el);
|
|
93
|
+
editor.on('page', () => {
|
|
94
|
+
doRender();
|
|
95
|
+
});
|
|
96
|
+
editor.on('load', () => {
|
|
97
|
+
open = false;
|
|
98
|
+
document.querySelector(opts.appendTo)
|
|
99
|
+
.appendChild(el);
|
|
100
|
+
doRender();
|
|
101
|
+
// click anywhere close it
|
|
102
|
+
// const close = (event) => {
|
|
103
|
+
// if(open) {
|
|
104
|
+
// editor.stopCommand(cmdTogglePages)
|
|
105
|
+
// //event.preventDefault()
|
|
106
|
+
// }
|
|
107
|
+
// }
|
|
108
|
+
// document.addEventListener('mousedown', close)
|
|
109
|
+
// add command to add pages
|
|
110
|
+
editor.Commands.add(cmdAddPage, () => addPage(editor, opts));
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
//# sourceMappingURL=page-panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-panel.js","sourceRoot":"","sources":["../../../../../src/ts/client/grapesjs/page-panel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const projectBarPlugin: (editor: any, opts: any) => void;
|
|
@@ -0,0 +1,104 @@
|
|
|
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 { html, render } from 'lit-html';
|
|
18
|
+
const panelId = 'project-bar-panel';
|
|
19
|
+
const containerPanelId = 'project-bar-container';
|
|
20
|
+
export const projectBarPlugin = (editor, opts) => {
|
|
21
|
+
// create the panels container for all panels in grapesjs
|
|
22
|
+
const containerPanel = editor.Panels.addPanel({
|
|
23
|
+
id: containerPanelId,
|
|
24
|
+
visible: false,
|
|
25
|
+
});
|
|
26
|
+
// create the project bar panel in grapesjs
|
|
27
|
+
editor.Panels.addPanel({
|
|
28
|
+
id: panelId,
|
|
29
|
+
buttons: opts.panels,
|
|
30
|
+
visible: true,
|
|
31
|
+
});
|
|
32
|
+
const panelsEl = opts.panels.map(panel => {
|
|
33
|
+
const el = document.createElement('div');
|
|
34
|
+
// create container for panel
|
|
35
|
+
if (panel.attributes.containerClassName) {
|
|
36
|
+
el.classList.add('project-bar__panel', panel.attributes.containerClassName, 'gjs-hidden');
|
|
37
|
+
// add header
|
|
38
|
+
if (panel.attributes.title) {
|
|
39
|
+
render(html `
|
|
40
|
+
<header class="project-bar__panel-header">
|
|
41
|
+
<h3 class="project-bar__panel-header-title">${panel.attributes.title}</h3>
|
|
42
|
+
${panel.buttons?.map(button => {
|
|
43
|
+
return html `
|
|
44
|
+
<div
|
|
45
|
+
class="project-bar__panel-header-button ${button.className}"
|
|
46
|
+
@click=${e => editor.runCommand(button.command)}
|
|
47
|
+
><span>${button.text}</span></div>
|
|
48
|
+
`;
|
|
49
|
+
})}
|
|
50
|
+
</header>
|
|
51
|
+
`, el);
|
|
52
|
+
}
|
|
53
|
+
// temporarily attach it to the body
|
|
54
|
+
// this lets the block manager and other plugins attach to their container
|
|
55
|
+
document.body.appendChild(el);
|
|
56
|
+
// on load attach the panels to the main container
|
|
57
|
+
// this is when the main containerPanel has an element
|
|
58
|
+
editor.on('load', () => {
|
|
59
|
+
const containerPanelEl = containerPanel.view.el;
|
|
60
|
+
containerPanelEl.appendChild(el);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
// commands for show / hide panels
|
|
64
|
+
// handle the case where command is a normal command, then let the Panel handle it
|
|
65
|
+
typeof panel.command === 'string' && editor.Commands.add(panel.command, {
|
|
66
|
+
run() {
|
|
67
|
+
if (panel.attributes.containerClassName) {
|
|
68
|
+
containerPanel.set('visible', true);
|
|
69
|
+
el.classList.remove('gjs-hidden');
|
|
70
|
+
editor.Canvas.getFrameEl().classList.add('silex-squeeze-left');
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
stop() {
|
|
74
|
+
if (panel.attributes.containerClassName) {
|
|
75
|
+
containerPanel.set('visible', false);
|
|
76
|
+
el.classList.add('gjs-hidden');
|
|
77
|
+
editor.Canvas.getFrameEl().classList.remove('silex-squeeze-left');
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
function updateSqueez() {
|
|
83
|
+
const containerPanelEl = containerPanel.view.el;
|
|
84
|
+
const iframe = editor.Canvas.getFrameEl();
|
|
85
|
+
iframe.classList.remove('enable-squeeze');
|
|
86
|
+
setTimeout(() => {
|
|
87
|
+
const left = iframe.getClientRects()[0]?.left;
|
|
88
|
+
const right = containerPanelEl.getClientRects()[0]?.right;
|
|
89
|
+
if (left < right || !right)
|
|
90
|
+
iframe.classList.add('enable-squeeze');
|
|
91
|
+
else
|
|
92
|
+
iframe.classList.remove('enable-squeeze');
|
|
93
|
+
}, 400); // More than the transition duration
|
|
94
|
+
// make sure the squeez corresponds to the state (reset when change page)
|
|
95
|
+
if (containerPanel.get('visible'))
|
|
96
|
+
iframe.classList.add('silex-squeeze-left');
|
|
97
|
+
else
|
|
98
|
+
iframe.classList.remove('silex-squeeze-left');
|
|
99
|
+
}
|
|
100
|
+
editor.on('load device:select page', () => {
|
|
101
|
+
updateSqueez();
|
|
102
|
+
});
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=project-bar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-bar.js","sourceRoot":"","sources":["../../../../../src/ts/client/grapesjs/project-bar.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const richTextPlugin: any;
|
|
@@ -0,0 +1,31 @@
|
|
|
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 * as grapesjs from 'grapesjs/dist/grapes.min.js';
|
|
18
|
+
const pluginName = 'richText';
|
|
19
|
+
export const richTextPlugin = grapesjs.plugins.add(pluginName, (editor, opts) => {
|
|
20
|
+
editor.RichTextEditor.add('orderedList', {
|
|
21
|
+
icon: '1.',
|
|
22
|
+
attributes: { title: 'Ordered List' },
|
|
23
|
+
result: rte => rte.exec('insertOrderedList'),
|
|
24
|
+
});
|
|
25
|
+
editor.RichTextEditor.add('unorderedList', {
|
|
26
|
+
icon: '<i class="fa fa-list-ul"></i>',
|
|
27
|
+
attributes: { title: 'Unordered List' },
|
|
28
|
+
result: rte => rte.exec('insertUnorderedList'),
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=rich-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rich-text.js","sourceRoot":"","sources":["../../../../../src/ts/client/grapesjs/rich-text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,QAAQ,MAAM,6BAA6B,CAAA;AAEvD,MAAM,UAAU,GAAG,UAAU,CAAA;AAE7B,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;IAC9E,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,EAAE;QACvC,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,EAAC,KAAK,EAAE,cAAc,EAAC;QACnC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC;KAC7C,CAAC,CAAA;IACF,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,eAAe,EAAE;QACzC,IAAI,EAAE,+BAA+B;QACrC,UAAU,EAAE,EAAC,KAAK,EAAE,gBAAgB,EAAC;QACrC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC;KAC/C,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const semanticPlugin: any;
|
|
@@ -0,0 +1,110 @@
|
|
|
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 { html, render } from 'lit-html';
|
|
18
|
+
import { map } from 'lit-html/directives/map.js';
|
|
19
|
+
import grapesjs from 'grapesjs/dist/grapes.min.js';
|
|
20
|
+
// constants
|
|
21
|
+
const pluginName = 'semantic';
|
|
22
|
+
const tags = [
|
|
23
|
+
'DIV',
|
|
24
|
+
'P',
|
|
25
|
+
'H1',
|
|
26
|
+
'H2',
|
|
27
|
+
'H3',
|
|
28
|
+
'H4',
|
|
29
|
+
'H5',
|
|
30
|
+
'H6',
|
|
31
|
+
'SPAN',
|
|
32
|
+
'MAIN',
|
|
33
|
+
'ASIDE',
|
|
34
|
+
'SECTION',
|
|
35
|
+
'ADDRESS',
|
|
36
|
+
'ARTICLE',
|
|
37
|
+
'BUTTON',
|
|
38
|
+
'NAV',
|
|
39
|
+
'HEADER',
|
|
40
|
+
'FOOTER',
|
|
41
|
+
'DETAILS',
|
|
42
|
+
'SUMMARY',
|
|
43
|
+
'PRE',
|
|
44
|
+
'BLOCKQUOTE',
|
|
45
|
+
];
|
|
46
|
+
// plugin code
|
|
47
|
+
export const semanticPlugin = grapesjs.plugins.add(pluginName, (editor, opts) => {
|
|
48
|
+
// Add the new trait to all component types
|
|
49
|
+
editor.DomComponents.getTypes().map(type => {
|
|
50
|
+
editor.DomComponents.addType(type.id, {
|
|
51
|
+
model: {
|
|
52
|
+
defaults: {
|
|
53
|
+
traits: [
|
|
54
|
+
// Keep the type original traits
|
|
55
|
+
...editor.DomComponents.getType(type.id).model.prototype.defaults.traits,
|
|
56
|
+
// Add the new trait
|
|
57
|
+
{
|
|
58
|
+
label: 'Tag name',
|
|
59
|
+
type: 'tag-name',
|
|
60
|
+
},
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
function doRender(el, tagName) {
|
|
67
|
+
const tagsWithCurrent = tags.includes(tagName.toUpperCase()) ? tags : tags.concat(tagName.toUpperCase());
|
|
68
|
+
render(html `
|
|
69
|
+
<label for="semantic__select" class="gjs-one-bg silex-label">Type</label>
|
|
70
|
+
<select id="semantic__select" @change=${event => doRender(el, event.target.value)}>
|
|
71
|
+
${map(tagsWithCurrent, tag => html `
|
|
72
|
+
<option value="${tag}" ?selected=${tagName.toUpperCase() === tag}>${tag}</option>
|
|
73
|
+
`)}
|
|
74
|
+
</select>
|
|
75
|
+
`, el);
|
|
76
|
+
}
|
|
77
|
+
function doRenderCurrent(el) {
|
|
78
|
+
doRender(el, editor.getSelected()?.get('tagName') || '');
|
|
79
|
+
}
|
|
80
|
+
// Add semantic traits
|
|
81
|
+
// inspired by https://github.com/olivmonnier/grapesjs-plugin-header/blob/master/src/components.js
|
|
82
|
+
editor.TraitManager.addType('tag-name', {
|
|
83
|
+
createInput({ trait }) {
|
|
84
|
+
// Create a new element container and add some content
|
|
85
|
+
const el = document.createElement('div');
|
|
86
|
+
// update the UI when a page is added/renamed/removed
|
|
87
|
+
editor.on('page', () => doRenderCurrent(el));
|
|
88
|
+
doRenderCurrent(el);
|
|
89
|
+
// this will be the element passed to onEvent and onUpdate
|
|
90
|
+
return el;
|
|
91
|
+
},
|
|
92
|
+
// Update the component based on UI changes
|
|
93
|
+
// `elInput` is the result HTMLElement you get from `createInput`
|
|
94
|
+
onEvent({ elInput, component, event }) {
|
|
95
|
+
const value = elInput.querySelector('#semantic__select').value;
|
|
96
|
+
if (component.get('tagName').toUpperCase() === value.toUpperCase()) {
|
|
97
|
+
// Already done
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
component.set('tagName', value);
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
// Update UI on the component change
|
|
104
|
+
onUpdate({ elInput, component }) {
|
|
105
|
+
const tagName = component.get('tagName');
|
|
106
|
+
doRender(elInput, tagName);
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
//# sourceMappingURL=semantic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../../../../src/ts/client/grapesjs/semantic.ts"],"names":[],"mappings":"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"}
|