@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,336 @@
|
|
|
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 { unsafeHTML } from 'lit-html/directives/unsafe-html.js';
|
|
19
|
+
//import { map } from 'lit-html/directives/map.js'
|
|
20
|
+
import { cmdPublicationLogin, cmdPublicationLogout, cmdPublicationStart, PublicationStatus } from './PublicationManager';
|
|
21
|
+
import { ConnectorType } from '../../types';
|
|
22
|
+
import { connectorList } from '../api';
|
|
23
|
+
/**
|
|
24
|
+
* @fileoverview define the publication dialog
|
|
25
|
+
* This is the UI of the publication feature
|
|
26
|
+
* It is a dialog which allows the user to login to a connector and publish the website
|
|
27
|
+
* It also displays the publication status and logs during the publication process
|
|
28
|
+
* This class is used by the PublicationManager
|
|
29
|
+
* This is optional, you can use the PublicationManager without this UI
|
|
30
|
+
* @TODO Use publication events instead of calls from the PublicationManager
|
|
31
|
+
*/
|
|
32
|
+
// **
|
|
33
|
+
// Constants
|
|
34
|
+
export const cmdPublish = 'publish-open-dialog';
|
|
35
|
+
// **
|
|
36
|
+
// Utils
|
|
37
|
+
function cleanupLogEntry(arr) {
|
|
38
|
+
return arr[arr.length - 1]
|
|
39
|
+
?.map(str => str.replace(/\[.*\]/g, '').trim())
|
|
40
|
+
?.filter(str => !!str)
|
|
41
|
+
?.join('\n');
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Class to manage the publication dialog
|
|
45
|
+
*/
|
|
46
|
+
export class PublicationUi {
|
|
47
|
+
editor;
|
|
48
|
+
options;
|
|
49
|
+
/**
|
|
50
|
+
* Dialog state
|
|
51
|
+
*/
|
|
52
|
+
isOpen = false;
|
|
53
|
+
/**
|
|
54
|
+
* Dialog content
|
|
55
|
+
*/
|
|
56
|
+
errorMessage = '';
|
|
57
|
+
/**
|
|
58
|
+
* Dialog element
|
|
59
|
+
* This is the DOM element of the dialog
|
|
60
|
+
*/
|
|
61
|
+
el;
|
|
62
|
+
settings;
|
|
63
|
+
sender = null;
|
|
64
|
+
/**
|
|
65
|
+
* Initialize the dialog and the publish button
|
|
66
|
+
*/
|
|
67
|
+
constructor(editor, options) {
|
|
68
|
+
this.editor = editor;
|
|
69
|
+
this.options = options;
|
|
70
|
+
// Reference to the dialog element
|
|
71
|
+
this.el = this.createDialogElements();
|
|
72
|
+
// Add the publish command to the editor
|
|
73
|
+
const openDialog = () => this.openDialog();
|
|
74
|
+
const closeDialog = () => this.closeDialog();
|
|
75
|
+
const setSender = sender => this.sender = sender;
|
|
76
|
+
editor.Commands.add(cmdPublish, {
|
|
77
|
+
run(editor, sender) {
|
|
78
|
+
setSender(sender);
|
|
79
|
+
openDialog();
|
|
80
|
+
},
|
|
81
|
+
stop(editor) { closeDialog(); },
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
// **
|
|
85
|
+
// Convenient state checkers
|
|
86
|
+
isSuccess(status) {
|
|
87
|
+
return status === PublicationStatus.STATUS_SUCCESS;
|
|
88
|
+
}
|
|
89
|
+
isPending(status) {
|
|
90
|
+
return status === PublicationStatus.STATUS_PENDING;
|
|
91
|
+
}
|
|
92
|
+
isError(status) {
|
|
93
|
+
return status === PublicationStatus.STATUS_ERROR;
|
|
94
|
+
}
|
|
95
|
+
isLoggedOut(status) {
|
|
96
|
+
return status === PublicationStatus.STATUS_LOGGED_OUT;
|
|
97
|
+
}
|
|
98
|
+
isReady(status) {
|
|
99
|
+
return status === PublicationStatus.STATUS_NONE;
|
|
100
|
+
}
|
|
101
|
+
// **
|
|
102
|
+
// Functions to open and close the dialog
|
|
103
|
+
getDialogElements() {
|
|
104
|
+
const el = document.querySelector('#publish-dialog');
|
|
105
|
+
const primary = el?.querySelector('#publish-button--primary');
|
|
106
|
+
const secondary = el?.querySelector('#publish-button--secondary');
|
|
107
|
+
if (!el || !primary || !secondary)
|
|
108
|
+
throw new Error('Publication dialog elements not found');
|
|
109
|
+
return { el, primary, secondary };
|
|
110
|
+
}
|
|
111
|
+
createDialogElements() {
|
|
112
|
+
// Create the dialog element
|
|
113
|
+
const el = document.createElement('div');
|
|
114
|
+
el.id = 'publish-dialog';
|
|
115
|
+
el.className = 'silex-dialog-inline silex-dialog gjs-two-color';
|
|
116
|
+
document.body.append(el);
|
|
117
|
+
// Create the publish button
|
|
118
|
+
this.editor.Panels.addButton(this.options.appendTo, {
|
|
119
|
+
id: 'publish-button',
|
|
120
|
+
className: 'silex-button--size publish-button',
|
|
121
|
+
command: cmdPublish,
|
|
122
|
+
attributes: { title: 'Publish' },
|
|
123
|
+
label: '<span class="fa-solid fa-upload"></span><span class="silex-button--small">Publish</span>',
|
|
124
|
+
});
|
|
125
|
+
return el;
|
|
126
|
+
}
|
|
127
|
+
move(rect) {
|
|
128
|
+
Object.keys(rect).forEach(key => this.el.style[key] = rect[key] + 'px');
|
|
129
|
+
}
|
|
130
|
+
// **
|
|
131
|
+
// Functions to render the dialog
|
|
132
|
+
async renderDialog(job, status) {
|
|
133
|
+
try {
|
|
134
|
+
if (this.isOpen && (!status || !this.settings))
|
|
135
|
+
throw new Error('PublicationUi: open but no status or settings');
|
|
136
|
+
render(html `
|
|
137
|
+
${!this.isOpen ? '' : this.settings.connector ? await this.renderOpenDialog(job, status) : await this.renderLoginDialog(status)}
|
|
138
|
+
`, this.el);
|
|
139
|
+
if (this.isOpen) {
|
|
140
|
+
this.el.classList.remove('silex-dialog-hide');
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
this.el.classList.add('silex-dialog-hide');
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
catch (err) {
|
|
147
|
+
console.error('Error while rendering the dialog', err);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
async renderOpenDialog(job, status) {
|
|
151
|
+
return html `
|
|
152
|
+
<main>
|
|
153
|
+
${this.isPending(status) ? html `
|
|
154
|
+
<p>Publication in progress</p>
|
|
155
|
+
` : ''}
|
|
156
|
+
${this.isReady(status) ? html `
|
|
157
|
+
<p>You are connected to ${this.settings.connector.displayName}</p><p>Click on the publish button to publish your website</p>
|
|
158
|
+
${this.settings.options && Object.entries(this.settings.options).length && html `<p>Publication options: <ul>${Object.entries(this.settings.options).map(([key, value]) => html `<li>${key}: ${value}</li>`)}</ul></p>`}
|
|
159
|
+
` : ''}
|
|
160
|
+
${this.isSuccess(status) ? html `
|
|
161
|
+
<p>Publication success</p>
|
|
162
|
+
${this.settings.options?.websiteUrl ? html `<p><a href="${this.settings.options.websiteUrl}" target="_blank">Click here to view the published website</a></p>` : ''}
|
|
163
|
+
` : ''}
|
|
164
|
+
${this.isError(status) || this.isLoggedOut(status) ? html `
|
|
165
|
+
<p>Publication error</p>
|
|
166
|
+
<div>${unsafeHTML(this.errorMessage)}</div>
|
|
167
|
+
` : ''}
|
|
168
|
+
${job?.message ? html `
|
|
169
|
+
<p>${unsafeHTML(job.message)}</p>
|
|
170
|
+
` : ''}
|
|
171
|
+
${this.isPending(status) ? html `
|
|
172
|
+
<progress
|
|
173
|
+
value=""
|
|
174
|
+
style="width: 100%;"
|
|
175
|
+
></progress>
|
|
176
|
+
` : ''}
|
|
177
|
+
${job?.logs?.length && job.logs[0].length ? html `
|
|
178
|
+
<br><details>
|
|
179
|
+
<summary>Logs</summary>
|
|
180
|
+
<pre style="
|
|
181
|
+
max-width: 100%;
|
|
182
|
+
max-height: 50vh;
|
|
183
|
+
overflow: auto;
|
|
184
|
+
font-size: x-small;
|
|
185
|
+
" >${unsafeHTML(cleanupLogEntry(job.logs))}
|
|
186
|
+
</pre>
|
|
187
|
+
</details>
|
|
188
|
+
` : ''}
|
|
189
|
+
${job?.errors?.length && job.errors[0].length ? html `
|
|
190
|
+
<br><details>
|
|
191
|
+
<summary>Errors</summary>
|
|
192
|
+
<pre style="
|
|
193
|
+
max-width: 100%;
|
|
194
|
+
max-height: 50vh;
|
|
195
|
+
overflow: auto;
|
|
196
|
+
font-size: x-small;
|
|
197
|
+
"
|
|
198
|
+
>${unsafeHTML(cleanupLogEntry(job.errors))}
|
|
199
|
+
</pre>
|
|
200
|
+
</details>
|
|
201
|
+
` : ''}
|
|
202
|
+
</main>
|
|
203
|
+
<footer>
|
|
204
|
+
${this.isPending(status) || this.isLoggedOut(status) ? '' : html `
|
|
205
|
+
<button
|
|
206
|
+
class="silex-button silex-button--primary"
|
|
207
|
+
id="publish-button--primary"
|
|
208
|
+
@click=${() => this.editor.Commands.run(cmdPublicationStart)}
|
|
209
|
+
>Publish</button>
|
|
210
|
+
`}
|
|
211
|
+
${this.isLoggedOut(status) ? html `
|
|
212
|
+
<button
|
|
213
|
+
class="silex-button silex-button--primary"
|
|
214
|
+
id="publish-button--primary"
|
|
215
|
+
@click=${() => this.editor.Commands.run(cmdPublicationLogin, this.settings.connector)}
|
|
216
|
+
>Connect</button>
|
|
217
|
+
` : this.settings.connector.disableLogout ? '' : html `
|
|
218
|
+
<button
|
|
219
|
+
class="silex-button silex-button--secondary"
|
|
220
|
+
id="publish-button--secondary"
|
|
221
|
+
@click=${() => this.editor.Commands.run(cmdPublicationLogout)}
|
|
222
|
+
>Disconnect</button>
|
|
223
|
+
`}
|
|
224
|
+
<button
|
|
225
|
+
class="silex-button silex-button--secondary"
|
|
226
|
+
id="publish-button--secondary"
|
|
227
|
+
@click=${() => this.editor.Commands.stop(cmdPublish)}
|
|
228
|
+
>Close</button>
|
|
229
|
+
</footer>
|
|
230
|
+
`;
|
|
231
|
+
}
|
|
232
|
+
async renderLoginDialog(status) {
|
|
233
|
+
try {
|
|
234
|
+
render(html `<main><p>Loading</p></main>`, this.el);
|
|
235
|
+
const hostingConnectors = await connectorList({ type: ConnectorType.HOSTING });
|
|
236
|
+
const loggedConnectors = hostingConnectors.filter(connector => connector.isLoggedIn);
|
|
237
|
+
if (hostingConnectors.length === 1 && loggedConnectors.length === 1) {
|
|
238
|
+
this.settings.connector = loggedConnectors[0];
|
|
239
|
+
return this.renderOpenDialog(null, PublicationStatus.STATUS_NONE);
|
|
240
|
+
}
|
|
241
|
+
//const loggedConnector: ConnectorData = hostingConnectors.find(connector => connector.isLoggedIn)
|
|
242
|
+
//if (loggedConnector) {
|
|
243
|
+
// this.settings.connector = loggedConnector
|
|
244
|
+
// return this.renderOpenDialog(null, PublicationStatus.STATUS_NONE)
|
|
245
|
+
//}
|
|
246
|
+
return html `
|
|
247
|
+
<main>
|
|
248
|
+
<p>You need to connect a hosting connector to publish your website</p>
|
|
249
|
+
${this.isError(status) || this.isLoggedOut(status) ? html `
|
|
250
|
+
<p>Login error</p>
|
|
251
|
+
<div>${unsafeHTML(this.errorMessage)}</div>
|
|
252
|
+
` : ''}
|
|
253
|
+
${hostingConnectors.map(connector => html `
|
|
254
|
+
<button
|
|
255
|
+
class="silex-button silex-button--primary"
|
|
256
|
+
id="publish-button--primary"
|
|
257
|
+
@click=${() => this.editor.Commands.run(cmdPublicationLogin, connector)}
|
|
258
|
+
>${connector.displayName}</button>
|
|
259
|
+
`)}
|
|
260
|
+
</main>
|
|
261
|
+
<footer>
|
|
262
|
+
<button
|
|
263
|
+
class="silex-button silex-button--secondary"
|
|
264
|
+
id="publish-button--secondary"
|
|
265
|
+
@click=${() => this.editor.Commands.stop(cmdPublish)}
|
|
266
|
+
>Close</button>
|
|
267
|
+
</footer>
|
|
268
|
+
`;
|
|
269
|
+
}
|
|
270
|
+
catch (err) {
|
|
271
|
+
console.error(err);
|
|
272
|
+
return html `
|
|
273
|
+
<header>
|
|
274
|
+
<h3>Oops</h3>
|
|
275
|
+
</header>
|
|
276
|
+
<main>
|
|
277
|
+
<p>Unable to load hosting connectors</p>
|
|
278
|
+
<p>Something went wrong: ${err.message}</p>
|
|
279
|
+
</main>
|
|
280
|
+
<footer>
|
|
281
|
+
<button
|
|
282
|
+
class="silex-button silex-button--secondary"
|
|
283
|
+
id="publish-button--secondary"
|
|
284
|
+
@click=${() => this.editor.Commands.stop(cmdPublish)}
|
|
285
|
+
>Close</button>
|
|
286
|
+
</footer>
|
|
287
|
+
`;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
displayPending(job, status) {
|
|
291
|
+
this.errorMessage = null;
|
|
292
|
+
this.renderDialog(job, status);
|
|
293
|
+
}
|
|
294
|
+
displayError(message, job, status) {
|
|
295
|
+
console.info(message);
|
|
296
|
+
this.errorMessage = message;
|
|
297
|
+
this.renderDialog(job, status);
|
|
298
|
+
}
|
|
299
|
+
async closeDialog() {
|
|
300
|
+
this.isOpen = false;
|
|
301
|
+
this.renderDialog(null, null);
|
|
302
|
+
if (this.sender)
|
|
303
|
+
this.sender.set('active', 0); // Deactivate the button to make it ready to be clicked again
|
|
304
|
+
this.sender = null;
|
|
305
|
+
}
|
|
306
|
+
async toggleDialog() {
|
|
307
|
+
if (this.isOpen)
|
|
308
|
+
this.closeDialog();
|
|
309
|
+
else
|
|
310
|
+
this.openDialog();
|
|
311
|
+
}
|
|
312
|
+
async openDialog() {
|
|
313
|
+
this.isOpen = true;
|
|
314
|
+
// Position
|
|
315
|
+
const buttonEl = this.editor.Panels.getPanel('options')?.view.el.querySelector('.publish-button');
|
|
316
|
+
if (buttonEl) {
|
|
317
|
+
const rect = buttonEl.getBoundingClientRect();
|
|
318
|
+
const width = 450;
|
|
319
|
+
const padding = 10 * 2;
|
|
320
|
+
const minHeight = 50;
|
|
321
|
+
this.move({
|
|
322
|
+
left: rect.right - width - padding,
|
|
323
|
+
top: rect.bottom + 10,
|
|
324
|
+
width,
|
|
325
|
+
minHeight,
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
else {
|
|
329
|
+
console.error('Unable to find publish button');
|
|
330
|
+
}
|
|
331
|
+
// Publication
|
|
332
|
+
//this.editor.Commands.run(cmdPublicationStart)
|
|
333
|
+
this.renderDialog(null, PublicationStatus.STATUS_NONE);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
//# sourceMappingURL=PublicationUi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PublicationUi.js","sourceRoot":"","sources":["../../../../../src/ts/client/grapesjs/PublicationUi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const blocksPlugin: (editor: any, opts: any) => void;
|
|
@@ -0,0 +1,37 @@
|
|
|
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 const blocksPlugin = (editor, opts) => {
|
|
18
|
+
// Defaults
|
|
19
|
+
const options = {
|
|
20
|
+
...opts,
|
|
21
|
+
};
|
|
22
|
+
// Container block
|
|
23
|
+
const containerId = 'container';
|
|
24
|
+
editor.BlockManager.add(containerId, {
|
|
25
|
+
label: 'Container',
|
|
26
|
+
category: 'Basics',
|
|
27
|
+
attributes: { class: 'container-png' },
|
|
28
|
+
content: {
|
|
29
|
+
type: containerId,
|
|
30
|
+
style: {
|
|
31
|
+
'min-height': '100px',
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
editor.DomComponents.addType(containerId, {});
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=blocks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../../../../src/ts/client/grapesjs/blocks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;IAC3C,WAAW;IACX,MAAM,OAAO,GAAG;QACd,GAAG,IAAI;KACR,CAAA;IACD,kBAAkB;IAClB,MAAM,WAAW,GAAG,WAAW,CAAA;IAC/B,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE;QACnC,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,QAAQ;QAClB,UAAU,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE;QACtC,OAAO,EAAE;YACP,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE;gBACL,YAAY,EAAE,OAAO;aACtB;SACF;KACF,CAAC,CAAA;IACF,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;AAC/C,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function (editor: any, options: any): void;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { onFooter } from './footer';
|
|
2
|
+
export default function (editor, options) {
|
|
3
|
+
let breadcrumbsContainer;
|
|
4
|
+
onFooter(footer => {
|
|
5
|
+
// Initialize the breadcrumbs container
|
|
6
|
+
breadcrumbsContainer = document.createElement('div');
|
|
7
|
+
breadcrumbsContainer.id = 'breadcrumbs-container';
|
|
8
|
+
footer.prepend(breadcrumbsContainer);
|
|
9
|
+
// Add breadcrumbs styles
|
|
10
|
+
const breadcrumbsStyles = document.createElement('style');
|
|
11
|
+
breadcrumbsStyles.innerHTML = `
|
|
12
|
+
#breadcrumbs-container {
|
|
13
|
+
display: flex;
|
|
14
|
+
align-items: center;
|
|
15
|
+
height: 100%;
|
|
16
|
+
padding: 0 10px;
|
|
17
|
+
font-size: 12px;
|
|
18
|
+
color: #999;
|
|
19
|
+
overflow-x: auto;
|
|
20
|
+
overflow-y: hidden;
|
|
21
|
+
}
|
|
22
|
+
#breadcrumbs-container h3 {
|
|
23
|
+
font-size: inherit;
|
|
24
|
+
margin: 0;
|
|
25
|
+
}
|
|
26
|
+
#breadcrumbs-container .breadcrumb {
|
|
27
|
+
margin: 0 5px;
|
|
28
|
+
font-size: 14px;
|
|
29
|
+
line-height: 1;
|
|
30
|
+
cursor: pointer;
|
|
31
|
+
white-space: nowrap;
|
|
32
|
+
}
|
|
33
|
+
#breadcrumbs-container .breadcrumb::after {
|
|
34
|
+
content: "➔";
|
|
35
|
+
margin-left: 10px;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
#breadcrumbs-container .breadcrumb:last-child::after {
|
|
39
|
+
content: "";
|
|
40
|
+
}
|
|
41
|
+
`;
|
|
42
|
+
footer.prepend(breadcrumbsStyles);
|
|
43
|
+
renderBreadcrumbs();
|
|
44
|
+
});
|
|
45
|
+
// Append the breadcrumbs container to the editor's container
|
|
46
|
+
editor.on('component:selected style:target component:drag:end', () => renderBreadcrumbs());
|
|
47
|
+
function renderBreadcrumbs() {
|
|
48
|
+
let component = editor.getSelected() ?? editor.Pages.getSelected().getMainComponent();
|
|
49
|
+
if (!breadcrumbsContainer)
|
|
50
|
+
return;
|
|
51
|
+
// Clear the breadcrumbs container
|
|
52
|
+
breadcrumbsContainer.innerHTML = '';
|
|
53
|
+
// Traverse up the tree of components, prepending each to the breadcrumbs
|
|
54
|
+
while (component) {
|
|
55
|
+
const breadcrumb = createBreadcrumb(component);
|
|
56
|
+
breadcrumbsContainer.prepend(breadcrumb);
|
|
57
|
+
component = component.parent();
|
|
58
|
+
}
|
|
59
|
+
// Label
|
|
60
|
+
const label = document.createElement('span');
|
|
61
|
+
label.innerHTML = '<h3>Selection: </h3>';
|
|
62
|
+
breadcrumbsContainer.prepend(label);
|
|
63
|
+
}
|
|
64
|
+
function createBreadcrumb(component) {
|
|
65
|
+
const breadcrumb = document.createElement('span');
|
|
66
|
+
const model = component.model;
|
|
67
|
+
breadcrumb.onclick = () => {
|
|
68
|
+
editor.select(component);
|
|
69
|
+
};
|
|
70
|
+
breadcrumb.classList.add('breadcrumb');
|
|
71
|
+
breadcrumb.innerHTML = `<span>${component.getName() ?? component.get('tagName')}</span>`;
|
|
72
|
+
return breadcrumb;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=breadcrumbs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breadcrumbs.js","sourceRoot":"","sources":["../../../../../src/ts/client/grapesjs/breadcrumbs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAEnC,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,OAAO;IACtC,IAAI,oBAAoB,CAAA;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,uCAAuC;QACvC,oBAAoB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QACpD,oBAAoB,CAAC,EAAE,GAAG,uBAAuB,CAAA;QACjD,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAA;QACpC,yBAAyB;QACzB,MAAM,iBAAiB,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QACzD,iBAAiB,CAAC,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8B7B,CAAA;QACD,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;QACjC,iBAAiB,EAAE,CAAA;IACrB,CAAC,CAAC,CAAA;IACF,6DAA6D;IAE7D,MAAM,CAAC,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAA;IAC1F,SAAS,iBAAiB;QACxB,IAAI,SAAS,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,gBAAgB,EAAE,CAAA;QAErF,IAAG,CAAC,oBAAoB;YAAE,OAAM;QAEhC,kCAAkC;QAClC,oBAAoB,CAAC,SAAS,GAAG,EAAE,CAAA;QAEnC,yEAAyE;QACzE,OAAO,SAAS,EAAE;YAChB,MAAM,UAAU,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAA;YAC9C,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;YACxC,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,CAAA;SAC/B;QAED,QAAQ;QACR,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAC5C,KAAK,CAAC,SAAS,GAAG,2BAA2B,CAAA;QAC7C,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACrC,CAAC;IACD,SAAS,gBAAgB,CAAC,SAAS;QACjC,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QACjD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAA;QAC7B,UAAU,CAAC,OAAO,GAAG,GAAG,EAAE;YACxB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QAC1B,CAAC,CAAA;QACD,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QACtC,UAAU,CAAC,SAAS,GAAG,SAAS,SAAS,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAA;QACxF,OAAO,UAAU,CAAA;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// Styles are in: src/scss/footer.scss
|
|
2
|
+
let _onFooter = [];
|
|
3
|
+
let footer;
|
|
4
|
+
export default function (editor, options) {
|
|
5
|
+
const panel = editor.Panels.addPanel({
|
|
6
|
+
id: 'footer',
|
|
7
|
+
visible: true,
|
|
8
|
+
buttons: [{
|
|
9
|
+
id: 'myNewButton',
|
|
10
|
+
className: 'someClass',
|
|
11
|
+
command: 'someCommand',
|
|
12
|
+
attributes: { title: 'Some title' },
|
|
13
|
+
active: false,
|
|
14
|
+
}],
|
|
15
|
+
});
|
|
16
|
+
setTimeout(() => {
|
|
17
|
+
footer = panel.view?.el;
|
|
18
|
+
_onFooter.forEach(cbk => cbk(footer));
|
|
19
|
+
_onFooter = [];
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
export function onFooter(fn) {
|
|
23
|
+
if (footer)
|
|
24
|
+
fn(footer);
|
|
25
|
+
else
|
|
26
|
+
_onFooter.push(fn);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=footer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"footer.js","sourceRoot":"","sources":["../../../../../src/ts/client/grapesjs/footer.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,IAAI,SAAS,GAAG,EAAE,CAAA;AAClB,IAAI,MAAM,CAAA;AACV,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,OAAO;IACtC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACnC,EAAE,EAAE,QAAQ;QACZ,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,CAAC;gBACR,EAAE,EAAE,aAAa;gBACjB,SAAS,EAAE,WAAW;gBACtB,OAAO,EAAE,aAAa;gBACtB,UAAU,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;gBACnC,MAAM,EAAE,KAAK;aAEd,CAAC;KACH,CAAC,CAAA;IACF,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,CAAA;QACvB,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;QACrC,SAAS,GAAG,EAAE,CAAA;IAChB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAE;IACzB,IAAG,MAAM;QAAE,EAAE,CAAC,MAAM,CAAC,CAAA;;QAChB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACzB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Editor, EditorConfig } from 'grapesjs';
|
|
2
|
+
import { ConnectorId, WebsiteId } from '../../types';
|
|
3
|
+
export declare function getEditorConfig(id: WebsiteId, connectorId: ConnectorId, rootUrl: string): EditorConfig;
|
|
4
|
+
export declare function initEditor(config: EditorConfig): Promise<Editor>;
|
|
5
|
+
export declare function getEditor(): Editor;
|