@silexlabs/silex 3.0.0-alpha.96 → 3.0.0
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 +2 -1
- package/README.md +31 -9
- package/dist/client/client/api.d.ts +5 -0
- package/dist/client/client/assetUrl.d.ts +3 -0
- package/dist/client/client/config.d.ts +31 -0
- package/dist/client/client/events.d.ts +7 -1
- package/dist/client/client/grapesjs/PublicationManager.d.ts +2 -1
- package/dist/client/client/grapesjs/css-props.d.ts +6 -0
- package/dist/client/client/grapesjs/img.d.ts +6 -0
- package/dist/client/client/grapesjs/index.d.ts +2 -2
- package/dist/client/client/grapesjs/new-page-dialog.d.ts +1 -1
- package/dist/client/client/grapesjs/page-panel.d.ts +1 -1
- package/dist/client/client/grapesjs/project-bar.d.ts +16 -0
- package/dist/client/client/grapesjs/resize-panel.d.ts +1 -0
- package/dist/client/client/grapesjs/rich-text.d.ts +4 -1
- package/dist/client/client/grapesjs/semantic.d.ts +1 -1
- package/dist/client/client/grapesjs/settings-sections.d.ts +15 -0
- package/dist/client/client/grapesjs/settings.d.ts +3 -1
- package/dist/client/client/grapesjs/symbolDialogs.d.ts +1 -1
- package/dist/client/client/grapesjs/view-buttons.d.ts +1 -0
- package/dist/client/client/index.d.ts +10 -0
- package/dist/client/client/publication-transformers.d.ts +4 -3
- package/dist/client/client/publish-custom-code-block.d.ts +4 -0
- package/dist/client/client/publish-fonts.d.ts +4 -0
- package/dist/client/client/utils.d.ts +4 -0
- package/dist/client/constants.d.ts +1 -0
- package/dist/client/css/admin.css +273 -32
- package/dist/client/index.html +2 -1
- package/dist/client/js/main.js +164 -123
- package/dist/client/js/main.js.LICENSE.txt +15 -1
- package/dist/client/types.d.ts +12 -7
- package/dist/plugins/client/client/events.d.ts +7 -1
- package/dist/plugins/client/client/events.js +7 -1
- package/dist/plugins/client/client/events.js.map +1 -1
- package/dist/plugins/client/plugins/client/template.js +108 -58
- package/dist/plugins/client/plugins/client/template.js.map +1 -1
- package/dist/plugins/client/types.d.ts +12 -7
- package/dist/plugins/client/types.js +6 -0
- package/dist/plugins/client/types.js.map +1 -1
- package/dist/plugins/server/constants.d.ts +1 -0
- package/dist/plugins/server/constants.js +2 -1
- package/dist/plugins/server/constants.js.map +1 -1
- package/dist/plugins/server/plugins/server/FtpConnector.d.ts +1 -0
- package/dist/plugins/server/plugins/server/FtpConnector.js +12 -1
- package/dist/plugins/server/plugins/server/FtpConnector.js.map +1 -1
- package/dist/plugins/server/plugins/server/GitlabConnector.d.ts +3 -0
- package/dist/plugins/server/plugins/server/GitlabConnector.js +72 -35
- package/dist/plugins/server/plugins/server/GitlabConnector.js.map +1 -1
- package/dist/plugins/server/server/config.js +3 -3
- package/dist/plugins/server/server/config.js.map +1 -1
- package/dist/plugins/server/server/connectors/FsHosting.d.ts +1 -0
- package/dist/plugins/server/server/connectors/FsHosting.js +13 -1
- package/dist/plugins/server/server/connectors/FsHosting.js.map +1 -1
- package/dist/plugins/server/server/connectors/FsStorage.d.ts +2 -1
- package/dist/plugins/server/server/connectors/FsStorage.js +29 -25
- package/dist/plugins/server/server/connectors/FsStorage.js.map +1 -1
- package/dist/plugins/server/server/connectors/connectors.d.ts +1 -0
- package/dist/plugins/server/server/jobs.js +4 -2
- package/dist/plugins/server/server/jobs.js.map +1 -1
- package/dist/plugins/server/types.d.ts +12 -7
- package/dist/plugins/server/types.js +7 -1
- package/dist/plugins/server/types.js.map +1 -1
- package/dist/server/constants.js +2 -1
- package/dist/server/server/api/publicationApi.js +3 -5
- package/dist/server/server/api/websiteApi.js +26 -7
- package/dist/server/server/cli.js +9 -6
- package/dist/server/server/config.js +3 -3
- package/dist/server/server/connectors/FsHosting.js +13 -1
- package/dist/server/server/connectors/FsStorage.js +28 -25
- package/dist/server/server/jobs.js +4 -2
- package/dist/server/types.js +7 -1
- package/package.json +35 -31
- package/public/assets/favicon.ico +0 -0
- package/public/assets/favicon.png +0 -0
- package/public/assets/logo-silex-small.png +0 -0
- package/src/css/_variables.scss +5 -3
- package/src/css/dialog.scss +22 -1
- package/src/css/fonts.scss +31 -0
- package/src/css/footer.scss +1 -1
- package/src/css/grapesjs-plugins.scss +34 -0
- package/src/css/grapesjs.scss +26 -11
- package/src/css/index.scss +1 -0
- package/src/css/project-bar.scss +11 -7
- package/src/css/silex.scss +58 -5
- package/src/html/index.pug +2 -2
- package/src/ts/client/api.ts +14 -9
- package/src/ts/client/assetUrl.test.ts +145 -42
- package/src/ts/client/assetUrl.ts +29 -10
- package/src/ts/client/config.ts +85 -4
- package/src/ts/client/events.ts +15 -9
- package/src/ts/client/grapesjs/PublicationManager.ts +71 -38
- package/src/ts/client/grapesjs/PublicationUi.ts +13 -11
- package/src/ts/client/grapesjs/css-props.ts +544 -0
- package/src/ts/client/grapesjs/eleventy.ts +2 -5
- package/src/ts/client/grapesjs/footer.ts +24 -9
- package/src/ts/client/grapesjs/img.ts +147 -0
- package/src/ts/client/grapesjs/index.ts +63 -25
- package/src/ts/client/grapesjs/internal-links.test.ts +2 -1
- package/src/ts/client/grapesjs/internal-links.ts +0 -1
- package/src/ts/client/grapesjs/new-page-dialog.ts +2 -3
- package/src/ts/client/grapesjs/page-panel.ts +28 -3
- package/src/ts/client/grapesjs/project-bar.ts +83 -64
- package/src/ts/client/grapesjs/resize-panel.ts +20 -0
- package/src/ts/client/grapesjs/rich-text.ts +21 -13
- package/src/ts/client/grapesjs/semantic.ts +3 -3
- package/src/ts/client/grapesjs/settings-sections.ts +117 -0
- package/src/ts/client/grapesjs/settings.ts +120 -77
- package/src/ts/client/grapesjs/symbolDialogs.ts +2 -3
- package/src/ts/client/grapesjs/view-buttons.ts +42 -0
- package/src/ts/client/index.ts +13 -6
- package/src/ts/client/publication-transformers.test.ts +13 -5
- package/src/ts/client/publication-transformers.ts +60 -47
- package/{dist/plugins/client/client/utils.js → src/ts/client/publish-custom-code-block.ts} +14 -8
- package/{dist/plugins/client/page.js → src/ts/client/publish-fonts.ts} +19 -14
- package/src/ts/client/utils.ts +18 -0
- package/src/ts/constants.ts +1 -0
- package/src/ts/plugins/client/template.ts +112 -60
- package/src/ts/plugins/server/FtpConnector.ts +14 -2
- package/src/ts/plugins/server/GitlabConnector.ts +71 -32
- package/src/ts/server/api/publicationApi.ts +5 -5
- package/src/ts/server/api/websiteApi.ts +51 -17
- package/src/ts/server/cli.ts +7 -5
- package/src/ts/server/config.ts +4 -4
- package/src/ts/server/connectors/FsHosting.ts +11 -5
- package/src/ts/server/connectors/FsStorage.ts +33 -4
- package/src/ts/server/connectors/connectors.ts +1 -1
- package/src/ts/server/jobs.ts +4 -2
- package/src/ts/types.ts +10 -7
- package/dist/plugins/client/client/api.d.ts +0 -85
- package/dist/plugins/client/client/api.js +0 -114
- package/dist/plugins/client/client/api.js.map +0 -1
- package/dist/plugins/client/client/assetUrl.d.ts +0 -51
- package/dist/plugins/client/client/assetUrl.js +0 -224
- package/dist/plugins/client/client/assetUrl.js.map +0 -1
- package/dist/plugins/client/client/config.d.ts +0 -58
- package/dist/plugins/client/client/config.js +0 -90
- package/dist/plugins/client/client/config.js.map +0 -1
- package/dist/plugins/client/client/grapesjs/LoginDialog.d.ts +0 -15
- package/dist/plugins/client/client/grapesjs/LoginDialog.js +0 -195
- package/dist/plugins/client/client/grapesjs/LoginDialog.js.map +0 -1
- package/dist/plugins/client/client/grapesjs/PublicationManager.d.ts +0 -72
- package/dist/plugins/client/client/grapesjs/PublicationManager.js +0 -356
- package/dist/plugins/client/client/grapesjs/PublicationManager.js.map +0 -1
- package/dist/plugins/client/client/grapesjs/PublicationUi.d.ts +0 -62
- package/dist/plugins/client/client/grapesjs/PublicationUi.js +0 -336
- package/dist/plugins/client/client/grapesjs/PublicationUi.js.map +0 -1
- package/dist/plugins/client/client/grapesjs/blocks.d.ts +0 -1
- package/dist/plugins/client/client/grapesjs/blocks.js +0 -37
- package/dist/plugins/client/client/grapesjs/blocks.js.map +0 -1
- package/dist/plugins/client/client/grapesjs/breadcrumbs.d.ts +0 -1
- package/dist/plugins/client/client/grapesjs/breadcrumbs.js +0 -75
- package/dist/plugins/client/client/grapesjs/breadcrumbs.js.map +0 -1
- package/dist/plugins/client/client/grapesjs/footer.d.ts +0 -2
- package/dist/plugins/client/client/grapesjs/footer.js +0 -28
- package/dist/plugins/client/client/grapesjs/footer.js.map +0 -1
- package/dist/plugins/client/client/grapesjs/index.d.ts +0 -5
- package/dist/plugins/client/client/grapesjs/index.js +0 -313
- package/dist/plugins/client/client/grapesjs/index.js.map +0 -1
- package/dist/plugins/client/client/grapesjs/internal-links.d.ts +0 -1
- package/dist/plugins/client/client/grapesjs/internal-links.js +0 -219
- package/dist/plugins/client/client/grapesjs/internal-links.js.map +0 -1
- package/dist/plugins/client/client/grapesjs/new-page-dialog.d.ts +0 -2
- package/dist/plugins/client/client/grapesjs/new-page-dialog.js +0 -83
- package/dist/plugins/client/client/grapesjs/new-page-dialog.js.map +0 -1
- package/dist/plugins/client/client/grapesjs/openImport.d.ts +0 -9
- package/dist/plugins/client/client/grapesjs/openImport.js +0 -74
- package/dist/plugins/client/client/grapesjs/openImport.js.map +0 -1
- package/dist/plugins/client/client/grapesjs/page-panel.d.ts +0 -3
- package/dist/plugins/client/client/grapesjs/page-panel.js +0 -113
- package/dist/plugins/client/client/grapesjs/page-panel.js.map +0 -1
- package/dist/plugins/client/client/grapesjs/project-bar.d.ts +0 -1
- package/dist/plugins/client/client/grapesjs/project-bar.js +0 -104
- package/dist/plugins/client/client/grapesjs/project-bar.js.map +0 -1
- package/dist/plugins/client/client/grapesjs/rich-text.d.ts +0 -1
- package/dist/plugins/client/client/grapesjs/rich-text.js +0 -31
- package/dist/plugins/client/client/grapesjs/rich-text.js.map +0 -1
- package/dist/plugins/client/client/grapesjs/semantic.d.ts +0 -1
- package/dist/plugins/client/client/grapesjs/semantic.js +0 -110
- package/dist/plugins/client/client/grapesjs/semantic.js.map +0 -1
- package/dist/plugins/client/client/grapesjs/settings.d.ts +0 -2
- package/dist/plugins/client/client/grapesjs/settings.js +0 -198
- package/dist/plugins/client/client/grapesjs/settings.js.map +0 -1
- package/dist/plugins/client/client/grapesjs/storage.d.ts +0 -1
- package/dist/plugins/client/client/grapesjs/storage.js +0 -126
- package/dist/plugins/client/client/grapesjs/storage.js.map +0 -1
- package/dist/plugins/client/client/grapesjs/symbolDialogs.d.ts +0 -3
- package/dist/plugins/client/client/grapesjs/symbolDialogs.js +0 -36
- package/dist/plugins/client/client/grapesjs/symbolDialogs.js.map +0 -1
- package/dist/plugins/client/client/publication-transformers.d.ts +0 -41
- package/dist/plugins/client/client/publication-transformers.js +0 -238
- package/dist/plugins/client/client/publication-transformers.js.map +0 -1
- package/dist/plugins/client/client/utils.d.ts +0 -2
- package/dist/plugins/client/client/utils.js.map +0 -1
- package/dist/plugins/client/constants.d.ts +0 -29
- package/dist/plugins/client/constants.js +0 -46
- package/dist/plugins/client/constants.js.map +0 -1
- package/dist/plugins/client/page.d.ts +0 -2
- package/dist/plugins/client/page.js.map +0 -1
- package/dist/plugins/client/plugins/client/11ty.d.ts +0 -17
- package/dist/plugins/client/plugins/client/11ty.js +0 -86
- package/dist/plugins/client/plugins/client/11ty.js.map +0 -1
- package/dist/plugins/client/plugins/client/publicationRenderer.d.ts +0 -2
- package/dist/plugins/client/plugins/client/publicationRenderer.js +0 -170
- package/dist/plugins/client/plugins/client/publicationRenderer.js.map +0 -1
- package/src/ts/plugins/client/11ty.ts +0 -104
- package/src/ts/plugins/client/publicationRenderer.ts +0 -174
|
@@ -1,313 +0,0 @@
|
|
|
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 grapesjs from 'grapesjs';
|
|
18
|
-
import openImport from './openImport';
|
|
19
|
-
/**
|
|
20
|
-
* @fileoverview This is where grapes config gets created
|
|
21
|
-
* Handle plugins, options and initialization of the editor
|
|
22
|
-
*/
|
|
23
|
-
// ////////////////////
|
|
24
|
-
// Plugins
|
|
25
|
-
// ////////////////////
|
|
26
|
-
import blocksBasicPlugin from 'grapesjs-blocks-basic';
|
|
27
|
-
import styleFilterPlugin from 'grapesjs-style-filter';
|
|
28
|
-
import formPlugin from 'grapesjs-plugin-forms';
|
|
29
|
-
import codePlugin from 'grapesjs-custom-code';
|
|
30
|
-
import uiSuggestClasses from '@silexlabs/grapesjs-ui-suggest-classes';
|
|
31
|
-
import symbolsPlugin from '@silexlabs/grapesjs-symbols';
|
|
32
|
-
import loadingPlugin from '@silexlabs/grapesjs-loading';
|
|
33
|
-
import fontsDialogPlugin, { cmdOpenFonts } from '@silexlabs/grapesjs-fonts';
|
|
34
|
-
import symbolDialogsPlugin, { cmdPromptAddSymbol } from './symbolDialogs';
|
|
35
|
-
import loginDialogPlugin, { cmdLogout } from './LoginDialog';
|
|
36
|
-
import footerPlugin from './footer';
|
|
37
|
-
import breadcrumbsPlugin from './breadcrumbs';
|
|
38
|
-
import rateLimitPlugin from '@silexlabs/grapesjs-storage-rate-limit';
|
|
39
|
-
import { pagePanelPlugin, cmdTogglePages, cmdAddPage } from './page-panel';
|
|
40
|
-
import { newPageDialog, cmdOpenNewPageDialog } from './new-page-dialog';
|
|
41
|
-
import { projectBarPlugin } from './project-bar';
|
|
42
|
-
import { settingsDialog, cmdOpenSettings } from './settings';
|
|
43
|
-
import { blocksPlugin } from './blocks';
|
|
44
|
-
import { semanticPlugin } from './semantic';
|
|
45
|
-
import { richTextPlugin } from './rich-text';
|
|
46
|
-
import { internalLinksPlugin } from './internal-links';
|
|
47
|
-
import publicationManagerPlugin from './PublicationManager';
|
|
48
|
-
import { storagePlugin } from './storage';
|
|
49
|
-
import { API_PATH, API_WEBSITE_ASSETS_WRITE, API_WEBSITE_PATH } from '../../constants';
|
|
50
|
-
const plugins = [
|
|
51
|
-
{ name: './project-bar', value: projectBarPlugin },
|
|
52
|
-
{ name: './settings', value: settingsDialog },
|
|
53
|
-
{ name: '@silexlabs/grapesjs-fonts', value: fontsDialogPlugin },
|
|
54
|
-
{ name: './new-page-dialog', value: newPageDialog },
|
|
55
|
-
{ name: './page-panel', value: pagePanelPlugin },
|
|
56
|
-
{ name: 'grapesjs-blocks-basic', value: blocksBasicPlugin },
|
|
57
|
-
{ name: './blocks', value: blocksPlugin },
|
|
58
|
-
{ name: './semantic', value: semanticPlugin },
|
|
59
|
-
{ name: './rich-text', value: richTextPlugin },
|
|
60
|
-
{ name: 'grapesjs-style-filter', value: styleFilterPlugin },
|
|
61
|
-
{ name: 'grapesjs-plugin-forms', value: formPlugin },
|
|
62
|
-
{ name: 'grapesjs-custom-code', value: codePlugin },
|
|
63
|
-
{ name: './internal-links', value: internalLinksPlugin },
|
|
64
|
-
{ name: '@silexlabs/grapesjs-ui-suggest-classes', value: uiSuggestClasses },
|
|
65
|
-
{ name: './symbolDialogs', value: symbolDialogsPlugin },
|
|
66
|
-
{ name: '@silexlabs/grapesjs-symbols', value: symbolsPlugin },
|
|
67
|
-
{ name: './PublicationManager', value: publicationManagerPlugin },
|
|
68
|
-
{ name: './storage', value: storagePlugin },
|
|
69
|
-
{ name: './LoginDialog', value: loginDialogPlugin },
|
|
70
|
-
{ name: '@silexlabs/grapesjs-loading', value: loadingPlugin },
|
|
71
|
-
{ name: './breadcrumbs', value: breadcrumbsPlugin },
|
|
72
|
-
{ name: './footer', value: footerPlugin },
|
|
73
|
-
{ name: '@silexlabs/grapesjs-storage-rate-limit', value: rateLimitPlugin },
|
|
74
|
-
];
|
|
75
|
-
// Check that all plugins are loaded correctly
|
|
76
|
-
plugins
|
|
77
|
-
.filter(p => typeof p.value !== 'function')
|
|
78
|
-
.forEach(p => {
|
|
79
|
-
throw new Error(`Plugin ${p.name} could not be loaded correctly (${p.value})`);
|
|
80
|
-
});
|
|
81
|
-
// Constants
|
|
82
|
-
const PRIMARY_COLOR = '#333333';
|
|
83
|
-
const SECONDARY_COLOR = '#ddd';
|
|
84
|
-
const TERTIARY_COLOR = '#8873FE';
|
|
85
|
-
const QUATERNARY_COLOR = '#A291FF';
|
|
86
|
-
const DARKER_PRIMARY_COLOR = '#363636';
|
|
87
|
-
const LIGHTER_PRIMARY_COLOR = '#575757';
|
|
88
|
-
// ////////////////////
|
|
89
|
-
// Config
|
|
90
|
-
// ////////////////////
|
|
91
|
-
const catBasic = 'Containers';
|
|
92
|
-
const catComponents = 'Components';
|
|
93
|
-
export function getEditorConfig(id, connectorId, rootUrl) {
|
|
94
|
-
return {
|
|
95
|
-
container: '#gjs',
|
|
96
|
-
height: '100%',
|
|
97
|
-
showOffsets: true,
|
|
98
|
-
showDevices: true,
|
|
99
|
-
//pageManager: {},
|
|
100
|
-
layerManager: {
|
|
101
|
-
appendTo: '.layer-manager-container',
|
|
102
|
-
},
|
|
103
|
-
blockManager: {
|
|
104
|
-
appendTo: '.block-manager-container',
|
|
105
|
-
},
|
|
106
|
-
assetManager: {
|
|
107
|
-
upload: `${rootUrl}${API_PATH}${API_WEBSITE_PATH}${API_WEBSITE_ASSETS_WRITE}/?websiteId=${id}${connectorId ? `&connectorId=${connectorId}` : ''}`,
|
|
108
|
-
},
|
|
109
|
-
storageManager: {
|
|
110
|
-
autoload: false,
|
|
111
|
-
type: 'connector',
|
|
112
|
-
options: {
|
|
113
|
-
connector: {
|
|
114
|
-
id,
|
|
115
|
-
connectorId,
|
|
116
|
-
},
|
|
117
|
-
},
|
|
118
|
-
},
|
|
119
|
-
cssIcons: './css/all.min.css',
|
|
120
|
-
canvasCss: `
|
|
121
|
-
:root {
|
|
122
|
-
--primaryColor: ${PRIMARY_COLOR};
|
|
123
|
-
--secondaryColor: ${SECONDARY_COLOR};
|
|
124
|
-
--tertiaryColor: ${TERTIARY_COLOR};
|
|
125
|
-
--quaternaryColor: ${QUATERNARY_COLOR};
|
|
126
|
-
--darkerPrimaryColor: ${DARKER_PRIMARY_COLOR};
|
|
127
|
-
--lighterPrimaryColor: ${LIGHTER_PRIMARY_COLOR};
|
|
128
|
-
}
|
|
129
|
-
.gjs-frame-selected {
|
|
130
|
-
box-shadow: 0 0 0 2px rgba(255, 0, 0, 0.5) !important; // Change to red border
|
|
131
|
-
}
|
|
132
|
-
.gjs-selected {
|
|
133
|
-
outline: 2px solid var(--tertiaryColor) !important;
|
|
134
|
-
outline-offset: -2px;
|
|
135
|
-
}
|
|
136
|
-
`,
|
|
137
|
-
plugins: plugins.map(p => p.value),
|
|
138
|
-
pluginsOpts: {
|
|
139
|
-
[blocksBasicPlugin]: {
|
|
140
|
-
blocks: ['text', 'image', 'video', 'map'],
|
|
141
|
-
category: catBasic,
|
|
142
|
-
//flexGrid: true,
|
|
143
|
-
},
|
|
144
|
-
[projectBarPlugin]: {
|
|
145
|
-
panels: [
|
|
146
|
-
{
|
|
147
|
-
id: 'dash',
|
|
148
|
-
className: 'logo',
|
|
149
|
-
attributes: { title: 'Dashboard' },
|
|
150
|
-
command: () => {
|
|
151
|
-
window.location.href = '/';
|
|
152
|
-
},
|
|
153
|
-
}, {
|
|
154
|
-
id: 'block-manager-btn',
|
|
155
|
-
className: 'block-manager-btn fa fa-fw fa-plus',
|
|
156
|
-
attributes: { title: 'Blocks', containerClassName: 'block-manager-container', },
|
|
157
|
-
command: 'open-blocks',
|
|
158
|
-
}, {
|
|
159
|
-
id: 'symbols-btn',
|
|
160
|
-
className: 'symbols-btn fa-regular fa-gem',
|
|
161
|
-
attributes: { title: 'Symbols', containerClassName: 'symbols-list-container', },
|
|
162
|
-
command: 'open-symbols',
|
|
163
|
-
buttons: [
|
|
164
|
-
{
|
|
165
|
-
id: 'symbol-create-button',
|
|
166
|
-
className: 'pages__add-page fa-solid fa-plus',
|
|
167
|
-
label: 'Create symbol from selection',
|
|
168
|
-
command: cmdPromptAddSymbol,
|
|
169
|
-
},
|
|
170
|
-
],
|
|
171
|
-
}, {
|
|
172
|
-
id: 'page-panel-btn',
|
|
173
|
-
className: 'page-panel-btn fa fa-fw fa-file',
|
|
174
|
-
attributes: { title: 'Pages', containerClassName: 'page-panel-container', },
|
|
175
|
-
command: cmdTogglePages,
|
|
176
|
-
buttons: [{
|
|
177
|
-
className: 'pages__add-page fa fa-file',
|
|
178
|
-
command: cmdAddPage,
|
|
179
|
-
text: '+',
|
|
180
|
-
}],
|
|
181
|
-
}, {
|
|
182
|
-
id: 'layer-manager-btn',
|
|
183
|
-
className: 'layer-manager-btn fa-solid fa-layer-group',
|
|
184
|
-
attributes: { title: 'Layers', containerClassName: 'layer-manager-container', },
|
|
185
|
-
command: 'open-layers',
|
|
186
|
-
}, {
|
|
187
|
-
id: 'font-dialog-btn',
|
|
188
|
-
className: 'font-manager-btn fa-solid fa-font',
|
|
189
|
-
attributes: { title: 'Fonts' },
|
|
190
|
-
command: () => {
|
|
191
|
-
editor.runCommand(cmdOpenFonts);
|
|
192
|
-
},
|
|
193
|
-
}, {
|
|
194
|
-
id: 'settings-dialog-btn',
|
|
195
|
-
className: 'page-panel-btn fa-solid fa-gears',
|
|
196
|
-
attributes: { title: 'Settings' },
|
|
197
|
-
command: cmdOpenSettings,
|
|
198
|
-
}, {
|
|
199
|
-
id: 'spacer',
|
|
200
|
-
attributes: {},
|
|
201
|
-
className: 'project-bar-spacer',
|
|
202
|
-
}, {
|
|
203
|
-
id: 'dash2',
|
|
204
|
-
className: 'fa-solid fa-house',
|
|
205
|
-
attributes: { title: 'Dashboard' },
|
|
206
|
-
command: () => {
|
|
207
|
-
window.location.href = '/';
|
|
208
|
-
},
|
|
209
|
-
}, {
|
|
210
|
-
id: 'help',
|
|
211
|
-
className: 'fa fa-fw fa-question-circle',
|
|
212
|
-
attributes: { title: 'Documentation' },
|
|
213
|
-
command: () => {
|
|
214
|
-
window.open('https://docs.silex.me/', '_blank');
|
|
215
|
-
},
|
|
216
|
-
}, {
|
|
217
|
-
id: 'logout-button',
|
|
218
|
-
className: 'page-panel-btn fa fa-fw fa-sign-out',
|
|
219
|
-
attributes: { title: 'Sign out' },
|
|
220
|
-
command: cmdLogout,
|
|
221
|
-
},
|
|
222
|
-
],
|
|
223
|
-
},
|
|
224
|
-
[publicationManagerPlugin]: {
|
|
225
|
-
appendTo: 'options',
|
|
226
|
-
websiteId: id,
|
|
227
|
-
},
|
|
228
|
-
[pagePanelPlugin]: {
|
|
229
|
-
cmdOpenNewPageDialog,
|
|
230
|
-
cmdOpenSettings,
|
|
231
|
-
appendTo: '.page-panel-container',
|
|
232
|
-
},
|
|
233
|
-
[uiSuggestClasses]: {
|
|
234
|
-
enableCount: false,
|
|
235
|
-
enablePerformance: false,
|
|
236
|
-
},
|
|
237
|
-
[internalLinksPlugin]: {
|
|
238
|
-
// FIXME: warn the user about links in error
|
|
239
|
-
onError: (errors) => console.warn('Links errors:', errors),
|
|
240
|
-
},
|
|
241
|
-
[codePlugin]: {
|
|
242
|
-
blockLabel: 'HTML',
|
|
243
|
-
blockCustomCode: {
|
|
244
|
-
category: catComponents,
|
|
245
|
-
}
|
|
246
|
-
},
|
|
247
|
-
[symbolsPlugin]: {
|
|
248
|
-
appendTo: '.symbols-list-container',
|
|
249
|
-
emptyText: 'No symbol yet.',
|
|
250
|
-
primaryColor: PRIMARY_COLOR,
|
|
251
|
-
secondaryColor: SECONDARY_COLOR,
|
|
252
|
-
highlightColor: TERTIARY_COLOR,
|
|
253
|
-
},
|
|
254
|
-
[fontsDialogPlugin]: {
|
|
255
|
-
api_key: 'AIzaSyAdJTYSLPlKz4w5Iqyy-JAF2o8uQKd1FKc',
|
|
256
|
-
},
|
|
257
|
-
[loginDialogPlugin]: {
|
|
258
|
-
id,
|
|
259
|
-
},
|
|
260
|
-
[rateLimitPlugin]: {
|
|
261
|
-
time: 5000,
|
|
262
|
-
},
|
|
263
|
-
},
|
|
264
|
-
};
|
|
265
|
-
}
|
|
266
|
-
// ////////////////////
|
|
267
|
-
// Initialize editor
|
|
268
|
-
// ////////////////////
|
|
269
|
-
// Keep a ref to the editor singleton
|
|
270
|
-
let editor;
|
|
271
|
-
export async function initEditor(config) {
|
|
272
|
-
if (editor)
|
|
273
|
-
throw new Error('Grapesjs editor already created');
|
|
274
|
-
return new Promise((resolve, reject) => {
|
|
275
|
-
try {
|
|
276
|
-
editor = grapesjs.init(config);
|
|
277
|
-
}
|
|
278
|
-
catch (e) {
|
|
279
|
-
console.error('Error initializing GrapesJs with plugins:', plugins, e);
|
|
280
|
-
reject(e);
|
|
281
|
-
}
|
|
282
|
-
// customize the editor
|
|
283
|
-
['text']
|
|
284
|
-
.forEach(id => editor.Blocks.get(id)?.set('category', 'Basics'));
|
|
285
|
-
['image', 'video']
|
|
286
|
-
.forEach(id => editor.Blocks.get(id)?.set('category', 'Media'));
|
|
287
|
-
['map']
|
|
288
|
-
.forEach(id => editor.Blocks.get(id)?.set('category', 'Components'));
|
|
289
|
-
editor.Blocks.render([]);
|
|
290
|
-
editor.Commands.add('gjs-open-import-webpage', openImport(editor, {
|
|
291
|
-
modalImportLabel: '',
|
|
292
|
-
modalImportContent: 'Paste a web page HTML code here.',
|
|
293
|
-
modalImportButton: 'Import',
|
|
294
|
-
modalImportTitle: 'Import from website',
|
|
295
|
-
}));
|
|
296
|
-
editor.on('load', () => {
|
|
297
|
-
// remove blocks and layers buttons from the properties
|
|
298
|
-
editor.Panels.getPanel('views').buttons.remove('open-blocks');
|
|
299
|
-
editor.Panels.getPanel('views').buttons.remove('open-layers');
|
|
300
|
-
editor.Panels.getPanel('views').view.el.firstChild.style.justifyContent = 'initial'; // align left
|
|
301
|
-
editor.Panels.getPanel('options').buttons.remove('export-template');
|
|
302
|
-
editor.BlockManager.render(null);
|
|
303
|
-
// use the style filter plugin
|
|
304
|
-
editor.StyleManager.addProperty('extra', { extend: 'filter' });
|
|
305
|
-
// GrapesJs editor is ready
|
|
306
|
-
resolve(editor);
|
|
307
|
-
});
|
|
308
|
-
});
|
|
309
|
-
}
|
|
310
|
-
export function getEditor() {
|
|
311
|
-
return editor;
|
|
312
|
-
}
|
|
313
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/ts/client/grapesjs/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const internalLinksPlugin: (editor: any, opts: any) => void;
|
|
@@ -1,219 +0,0 @@
|
|
|
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 { getPageLink } from '../../page';
|
|
20
|
-
// constants
|
|
21
|
-
const pluginName = 'internal-links';
|
|
22
|
-
const options = [
|
|
23
|
-
{ id: '', name: '-' },
|
|
24
|
-
{ id: 'url', name: 'URL' },
|
|
25
|
-
{ id: 'email', name: 'Email' },
|
|
26
|
-
{ id: 'page', name: 'Page' },
|
|
27
|
-
];
|
|
28
|
-
// plugin code
|
|
29
|
-
export const internalLinksPlugin = (editor, opts) => {
|
|
30
|
-
// update links when a page link changes
|
|
31
|
-
function onAll(cbk) {
|
|
32
|
-
editor.Pages.getAll()
|
|
33
|
-
.forEach(page => {
|
|
34
|
-
page.getMainComponent()
|
|
35
|
-
.onAll(cbk);
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
editor.on('page', ({ event, page }) => {
|
|
39
|
-
if (!page)
|
|
40
|
-
return; // fixes UT
|
|
41
|
-
switch (event) {
|
|
42
|
-
case 'change:name':
|
|
43
|
-
// update all links to this page
|
|
44
|
-
onAll(component => {
|
|
45
|
-
if (component.getAttributes().href === getPageLink(page.previous('name'))) {
|
|
46
|
-
component.setAttributes({
|
|
47
|
-
href: getPageLink(page.get('name')),
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
break;
|
|
52
|
-
case 'remove':
|
|
53
|
-
// mark all links as issues
|
|
54
|
-
const issues = [];
|
|
55
|
-
onAll(component => {
|
|
56
|
-
console.log(component.getAttributes().href, getPageLink(page.previous('name')), page.previous('name'));
|
|
57
|
-
if (component.getAttributes().href === getPageLink(page.previous('name'))) {
|
|
58
|
-
issues.push(component);
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
opts?.onError(issues);
|
|
62
|
-
break;
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
// utility functions to render the UI
|
|
66
|
-
function getUi(type, href) {
|
|
67
|
-
switch (type) {
|
|
68
|
-
case 'email':
|
|
69
|
-
const mailTo = href.replace('mailto:', '').split('?');
|
|
70
|
-
const email = mailTo[0];
|
|
71
|
-
const params = (mailTo[1] || '').split('&').reduce((acc, item) => {
|
|
72
|
-
const items = item.split('=');
|
|
73
|
-
acc[items[0]] = items[1];
|
|
74
|
-
return acc;
|
|
75
|
-
}, {});
|
|
76
|
-
return html `<div class="href-next__email-inputs">
|
|
77
|
-
<label for="href-next__email" class="gjs-one-bg silex-label">Email address</label>
|
|
78
|
-
<input class="href-next__email" placeholder="Insert email" type="email" value=${email || ''}/>
|
|
79
|
-
<label for="href-next__email-subject" class="gjs-one-bg silex-label">Subject</label>
|
|
80
|
-
<input class="href-next__email-subject" placeholder="Insert subject" value=${params.subject || ''}/>
|
|
81
|
-
</div>`;
|
|
82
|
-
case 'page':
|
|
83
|
-
return html `<div class="href-next__page-inputs">
|
|
84
|
-
<label for="href-next__page" class="gjs-one-bg silex-label">Page name</label>
|
|
85
|
-
<select id="href-next__page" class="href-next__page">
|
|
86
|
-
${map(editor.Pages.getAll(), page => html `<option
|
|
87
|
-
?selected=${getPageLink(page.getName()) === href}
|
|
88
|
-
value=${getPageLink(page.getName())}>
|
|
89
|
-
${page.getName() || 'Main'}
|
|
90
|
-
</option>`)}
|
|
91
|
-
</select>
|
|
92
|
-
</div>`;
|
|
93
|
-
case 'url':
|
|
94
|
-
return html `<div class="href-next__url-inputs">
|
|
95
|
-
<label for="href-next__url" class="gjs-one-bg silex-label">URL</label>
|
|
96
|
-
<input class="href-next__url" placeholder="Insert URL" type="url" value=${href}/>
|
|
97
|
-
</div>`;
|
|
98
|
-
default:
|
|
99
|
-
return '';
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
function getDefaultHref(type) {
|
|
103
|
-
switch (type) {
|
|
104
|
-
case 'email': return 'mailto:';
|
|
105
|
-
case 'page': return getPageLink(null);
|
|
106
|
-
case 'url': return 'https://';
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
function doRender(el, href = '') {
|
|
110
|
-
const type = getType(href);
|
|
111
|
-
const ui = getUi(type, href);
|
|
112
|
-
render(html `
|
|
113
|
-
<label for="href-next__type" class="gjs-one-bg silex-label">Type</label>
|
|
114
|
-
<select id="href-next__type" class="href-next__type" @change=${event => doRender(el, getDefaultHref(event.target.value))}>
|
|
115
|
-
${map(options, opt => html `
|
|
116
|
-
<option value="${opt.id}" ?selected=${type === opt.id}>${opt.name}</option>
|
|
117
|
-
`)}
|
|
118
|
-
</select>
|
|
119
|
-
${ui}
|
|
120
|
-
`, el);
|
|
121
|
-
}
|
|
122
|
-
function getType(href) {
|
|
123
|
-
if (href.indexOf('mailto:') === 0) {
|
|
124
|
-
return 'email';
|
|
125
|
-
}
|
|
126
|
-
else if (href.indexOf('./') === 0) {
|
|
127
|
-
return 'page';
|
|
128
|
-
}
|
|
129
|
-
else if (href) {
|
|
130
|
-
return 'url';
|
|
131
|
-
}
|
|
132
|
-
return '';
|
|
133
|
-
}
|
|
134
|
-
function doRenderCurrent(el) {
|
|
135
|
-
doRender(el, editor.getSelected()?.getAttributes().href || '');
|
|
136
|
-
}
|
|
137
|
-
// Add the new trait to all component types
|
|
138
|
-
editor.DomComponents.getTypes().map(type => {
|
|
139
|
-
editor.DomComponents.addType(type.id, {
|
|
140
|
-
model: {
|
|
141
|
-
defaults: {
|
|
142
|
-
traits: [
|
|
143
|
-
// Keep the type original traits
|
|
144
|
-
...editor.DomComponents.getType(type.id).model.prototype.defaults.traits
|
|
145
|
-
// Filter original href trait
|
|
146
|
-
.filter(trait => trait.name ? trait.name !== 'href' : trait !== 'href'),
|
|
147
|
-
// Add the new trait
|
|
148
|
-
{
|
|
149
|
-
label: 'Link',
|
|
150
|
-
type: 'href-next',
|
|
151
|
-
name: 'href',
|
|
152
|
-
},
|
|
153
|
-
]
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
editor.TraitManager.addType('href-next', {
|
|
159
|
-
createInput({ trait }) {
|
|
160
|
-
// Create a new element container and add some content
|
|
161
|
-
const el = document.createElement('div');
|
|
162
|
-
// update the UI when a page is added/renamed/removed
|
|
163
|
-
editor.on('page', () => doRenderCurrent(el));
|
|
164
|
-
doRenderCurrent(el);
|
|
165
|
-
// this will be the element passed to onEvent and onUpdate
|
|
166
|
-
return el;
|
|
167
|
-
},
|
|
168
|
-
// Update the component based on UI changes
|
|
169
|
-
// `elInput` is the result HTMLElement you get from `createInput`
|
|
170
|
-
onEvent({ elInput, component, event }) {
|
|
171
|
-
const inputType = elInput.querySelector('.href-next__type');
|
|
172
|
-
let href = '';
|
|
173
|
-
// Compute the new HREF value
|
|
174
|
-
switch (inputType.value) {
|
|
175
|
-
case 'page':
|
|
176
|
-
const valPage = elInput.querySelector('.href-next__page')?.value;
|
|
177
|
-
href = valPage || getDefaultHref('page');
|
|
178
|
-
break;
|
|
179
|
-
case 'url':
|
|
180
|
-
const valUrl = elInput.querySelector('.href-next__url')?.value;
|
|
181
|
-
href = valUrl || getDefaultHref('url');
|
|
182
|
-
break;
|
|
183
|
-
case 'email':
|
|
184
|
-
const valEmail = elInput.querySelector('.href-next__email')?.value;
|
|
185
|
-
const valSubj = elInput.querySelector('.href-next__email-subject')?.value;
|
|
186
|
-
href = valEmail ? `mailto:${valEmail}${valSubj ? `?subject=${valSubj}` : ''}` : getDefaultHref('email');
|
|
187
|
-
break;
|
|
188
|
-
default:
|
|
189
|
-
href = '';
|
|
190
|
-
}
|
|
191
|
-
// Store the new HREF value
|
|
192
|
-
component.addAttributes({ href });
|
|
193
|
-
// Handle the tag name
|
|
194
|
-
if (href === '') {
|
|
195
|
-
// Not a link
|
|
196
|
-
if (component.get('tagName').toUpperCase() === 'A') {
|
|
197
|
-
// Retrieve the original stored value
|
|
198
|
-
const original = component.get('originalTagName') ?? 'DIV';
|
|
199
|
-
// Case of the inline A tags inserted by the text bar
|
|
200
|
-
const value = original.toUpperCase() === 'A' ? 'SPAN' : original;
|
|
201
|
-
component.set('tagName', value);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
else {
|
|
205
|
-
// Link
|
|
206
|
-
if (component.get('tagName').toUpperCase() !== 'A') {
|
|
207
|
-
component.set('originalTagName', component.get('tagName'));
|
|
208
|
-
component.set('tagName', 'A');
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
},
|
|
212
|
-
// Update UI on the component change
|
|
213
|
-
onUpdate({ elInput, component }) {
|
|
214
|
-
const href = component.getAttributes().href || '';
|
|
215
|
-
doRender(elInput, href);
|
|
216
|
-
},
|
|
217
|
-
});
|
|
218
|
-
};
|
|
219
|
-
//# sourceMappingURL=internal-links.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"internal-links.js","sourceRoot":"","sources":["../../../../../src/ts/client/grapesjs/internal-links.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,83 +0,0 @@
|
|
|
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
|
-
import { live } from 'lit-html/directives/live.js';
|
|
20
|
-
const name = 'new-page-dialog';
|
|
21
|
-
const el = document.createElement('div');
|
|
22
|
-
let modal;
|
|
23
|
-
export const cmdOpenNewPageDialog = 'new-page-dialog';
|
|
24
|
-
export const newPageDialog = grapesjs.plugins.add(name, (editor, opts) => {
|
|
25
|
-
editor.Commands.add(cmdOpenNewPageDialog, {
|
|
26
|
-
run: (_, sender, { page }) => {
|
|
27
|
-
modal = editor.Modal.open({
|
|
28
|
-
title: 'New Page',
|
|
29
|
-
content: '',
|
|
30
|
-
attributes: { class: 'new-page-dialog' },
|
|
31
|
-
})
|
|
32
|
-
.onceClose(() => {
|
|
33
|
-
editor.stopCommand(cmdOpenNewPageDialog); // apparently this is needed to be able to run the command several times
|
|
34
|
-
});
|
|
35
|
-
displayDialog(editor, opts, page);
|
|
36
|
-
modal.setContent(el);
|
|
37
|
-
const form = el.querySelector('form');
|
|
38
|
-
form.onsubmit = event => {
|
|
39
|
-
event.preventDefault();
|
|
40
|
-
saveDialog(editor, opts, page);
|
|
41
|
-
editor.stopCommand(cmdOpenNewPageDialog);
|
|
42
|
-
};
|
|
43
|
-
form.querySelector('input')?.focus();
|
|
44
|
-
return modal;
|
|
45
|
-
},
|
|
46
|
-
stop: () => {
|
|
47
|
-
modal.close();
|
|
48
|
-
// el.innerHTML = ''
|
|
49
|
-
},
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
function onImport(editor, page) {
|
|
53
|
-
editor.Pages.select(page);
|
|
54
|
-
editor.runCommand('gjs-open-import-webpage');
|
|
55
|
-
}
|
|
56
|
-
function displayDialog(editor, config, page) {
|
|
57
|
-
render(html `
|
|
58
|
-
<form class="silex-form">
|
|
59
|
-
<label class="silex-form__element">
|
|
60
|
-
<h3>Name</h3>
|
|
61
|
-
<input type="text" name="name" .value=${live(page.getName() || '')}/>
|
|
62
|
-
</label>
|
|
63
|
-
<footer>
|
|
64
|
-
<input class="silex-button" type="button" @click=${e => onImport(editor, page)} value="Import from website">
|
|
65
|
-
<input class="silex-button" type="button" @click=${e => editor.stopCommand(cmdOpenNewPageDialog)} value="Cancel">
|
|
66
|
-
<input class="silex-button" type="submit" value="Ok">
|
|
67
|
-
</footer>
|
|
68
|
-
</form>
|
|
69
|
-
`, el);
|
|
70
|
-
}
|
|
71
|
-
function saveDialog(editor, config, page) {
|
|
72
|
-
const form = el.querySelector('form');
|
|
73
|
-
const formData = new FormData(form);
|
|
74
|
-
const data = Array.from(formData)
|
|
75
|
-
.reduce((aggregate, [key, value]) => {
|
|
76
|
-
aggregate[key] = value;
|
|
77
|
-
return aggregate;
|
|
78
|
-
}, {});
|
|
79
|
-
page.set(data);
|
|
80
|
-
// save if auto save is on
|
|
81
|
-
editor.getModel().set('changesCount', editor.getDirtyCount() + 1);
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=new-page-dialog.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"new-page-dialog.js","sourceRoot":"","sources":["../../../../../src/ts/client/grapesjs/new-page-dialog.ts"],"names":[],"mappings":"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"}
|