@silexlabs/silex 3.0.0-alpha.49 → 3.0.0-alpha.51
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/dist/client/client/config.d.ts +14 -1
- package/dist/client/client/grapesjs/PublicationManager.d.ts +2 -7
- package/dist/client/client/publication-transformers.d.ts +41 -0
- package/dist/client/css/admin.css +4 -1
- package/dist/client/js/main.js +3 -3
- package/dist/client/types.d.ts +18 -16
- package/dist/plugins/client/client/api.d.ts +83 -0
- package/dist/plugins/client/client/api.js +105 -0
- package/dist/plugins/client/client/api.js.map +1 -0
- package/dist/plugins/client/client/config.d.ts +58 -0
- package/dist/plugins/client/client/config.js +80 -0
- package/dist/plugins/client/client/config.js.map +1 -0
- package/dist/plugins/client/client/events.js +2 -0
- package/dist/plugins/client/client/events.js.map +1 -1
- package/dist/plugins/client/client/grapesjs/LoginDialog.d.ts +15 -0
- package/dist/plugins/client/client/grapesjs/LoginDialog.js +193 -0
- package/dist/plugins/client/client/grapesjs/LoginDialog.js.map +1 -0
- package/dist/plugins/client/client/grapesjs/PublicationManager.d.ts +70 -0
- package/dist/plugins/client/client/grapesjs/PublicationManager.js +310 -0
- package/dist/plugins/client/client/grapesjs/PublicationManager.js.map +1 -0
- package/dist/plugins/client/client/grapesjs/PublicationUi.d.ts +61 -0
- package/dist/plugins/client/client/grapesjs/PublicationUi.js +324 -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/index.d.ts +5 -0
- package/dist/plugins/client/client/grapesjs/index.js +264 -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 +220 -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 +106 -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 +197 -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 +124 -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 +165 -0
- package/dist/plugins/client/client/publication-transformers.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/plugins/client/11ty.d.ts +17 -0
- package/dist/plugins/client/plugins/client/11ty.js +70 -0
- package/dist/plugins/client/plugins/client/11ty.js.map +1 -0
- package/dist/plugins/client/plugins/client/publicationRenderer.js +59 -21
- package/dist/plugins/client/plugins/client/publicationRenderer.js.map +1 -1
- package/dist/plugins/client/plugins/client/website-info.js +1 -1
- package/dist/plugins/client/plugins/client/website-info.js.map +1 -1
- package/dist/plugins/client/types.d.ts +18 -16
- package/dist/plugins/client/types.js.map +1 -1
- package/dist/plugins/server/plugins/server/FtpConnector.d.ts +2 -1
- package/dist/plugins/server/plugins/server/FtpConnector.js +5 -6
- package/dist/plugins/server/plugins/server/FtpConnector.js.map +1 -1
- package/dist/plugins/server/plugins/server/GitlabConnector.d.ts +1 -7
- package/dist/plugins/server/plugins/server/GitlabConnector.js +124 -112
- package/dist/plugins/server/plugins/server/GitlabConnector.js.map +1 -1
- package/dist/plugins/server/server/connectors/FsHosting.d.ts +2 -1
- package/dist/plugins/server/server/connectors/FsHosting.js +4 -5
- package/dist/plugins/server/server/connectors/FsHosting.js.map +1 -1
- package/dist/plugins/server/server/connectors/FsStorage.js +1 -0
- package/dist/plugins/server/server/connectors/FsStorage.js.map +1 -1
- package/dist/plugins/server/server/connectors/connectors.d.ts +2 -1
- package/dist/plugins/server/server/connectors/connectors.js.map +1 -1
- package/dist/plugins/server/server/jobs.d.ts +6 -0
- package/dist/plugins/server/server/jobs.js +3 -1
- package/dist/plugins/server/server/jobs.js.map +1 -1
- package/dist/plugins/server/types.d.ts +18 -16
- package/dist/plugins/server/types.js.map +1 -1
- package/dist/server/server/api/publicationApi.js +14 -20
- package/dist/server/server/connectors/FsHosting.js +4 -5
- package/dist/server/server/connectors/FsStorage.js +1 -0
- package/dist/server/server/jobs.js +2 -1
- package/package.json +1 -1
- package/public/silex.js +23 -0
- package/src/css/website-info.scss +4 -1
- package/src/ts/client/config.ts +22 -2
- package/src/ts/client/events.ts +3 -0
- package/src/ts/client/grapesjs/PublicationManager.ts +23 -3
- package/src/ts/client/grapesjs/internal-links.ts +0 -2
- package/src/ts/client/grapesjs/storage.ts +1 -1
- package/src/ts/client/index.ts +4 -0
- package/src/ts/client/publication-transformers.test.ts +146 -0
- package/src/ts/client/publication-transformers.ts +188 -0
- package/src/ts/plugins/client/11ty.ts +89 -0
- package/src/ts/plugins/client/publicationRenderer.ts +64 -22
- package/src/ts/plugins/client/website-info.ts +1 -1
- package/src/ts/plugins/server/FtpConnector.ts +3 -3
- package/src/ts/plugins/server/GitlabConnector.ts +128 -109
- package/src/ts/server/api/publicationApi.ts +16 -23
- package/src/ts/server/connectors/FsHosting.ts +2 -2
- package/src/ts/server/connectors/FsStorage.ts +1 -0
- package/src/ts/server/connectors/connectors.ts +3 -1
- package/src/ts/server/jobs.ts +10 -0
- package/src/ts/server/utils/BackwardCompat.ts +530 -529
- package/src/ts/types.ts +20 -17
|
@@ -0,0 +1,324 @@
|
|
|
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
|
+
/**
|
|
64
|
+
* Initialize the dialog and the publish button
|
|
65
|
+
*/
|
|
66
|
+
constructor(editor, options) {
|
|
67
|
+
this.editor = editor;
|
|
68
|
+
this.options = options;
|
|
69
|
+
// Reference to the dialog element
|
|
70
|
+
this.el = this.createDialogElements();
|
|
71
|
+
// Add the publish command to the editor
|
|
72
|
+
const openDialog = () => this.openDialog();
|
|
73
|
+
const closeDialog = () => this.closeDialog();
|
|
74
|
+
editor.Commands.add(cmdPublish, {
|
|
75
|
+
run(editor) { openDialog(); },
|
|
76
|
+
stop(editor) { closeDialog(); },
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
// **
|
|
80
|
+
// Convenient state checkers
|
|
81
|
+
isSuccess(status) {
|
|
82
|
+
return status === PublicationStatus.STATUS_SUCCESS;
|
|
83
|
+
}
|
|
84
|
+
isPending(status) {
|
|
85
|
+
return status === PublicationStatus.STATUS_PENDING;
|
|
86
|
+
}
|
|
87
|
+
isError(status) {
|
|
88
|
+
return status === PublicationStatus.STATUS_ERROR;
|
|
89
|
+
}
|
|
90
|
+
isLoggedOut(status) {
|
|
91
|
+
return status === PublicationStatus.STATUS_LOGGED_OUT;
|
|
92
|
+
}
|
|
93
|
+
isReady(status) {
|
|
94
|
+
return status === PublicationStatus.STATUS_NONE;
|
|
95
|
+
}
|
|
96
|
+
// **
|
|
97
|
+
// Functions to open and close the dialog
|
|
98
|
+
getDialogElements() {
|
|
99
|
+
const el = document.querySelector('#publish-dialog');
|
|
100
|
+
const primary = el?.querySelector('#publish-button--primary');
|
|
101
|
+
const secondary = el?.querySelector('#publish-button--secondary');
|
|
102
|
+
if (!el || !primary || !secondary)
|
|
103
|
+
throw new Error('Publication dialog elements not found');
|
|
104
|
+
return { el, primary, secondary };
|
|
105
|
+
}
|
|
106
|
+
createDialogElements() {
|
|
107
|
+
// Create the dialog element
|
|
108
|
+
const el = document.createElement('div');
|
|
109
|
+
el.id = 'publish-dialog';
|
|
110
|
+
el.className = 'silex-dialog-inline silex-dialog gjs-two-color';
|
|
111
|
+
document.body.append(el);
|
|
112
|
+
// Create the publish button
|
|
113
|
+
this.editor.Panels.addButton(this.options.appendTo, {
|
|
114
|
+
id: 'publish-button',
|
|
115
|
+
className: 'silex-button--size publish-button',
|
|
116
|
+
command: cmdPublish,
|
|
117
|
+
attributes: { title: 'Publish' },
|
|
118
|
+
label: '<span class="fa-solid fa-upload"></span><span class="silex-button--small">Publish</span>',
|
|
119
|
+
});
|
|
120
|
+
return el;
|
|
121
|
+
}
|
|
122
|
+
move(rect) {
|
|
123
|
+
Object.keys(rect).forEach(key => this.el.style[key] = rect[key] + 'px');
|
|
124
|
+
}
|
|
125
|
+
// **
|
|
126
|
+
// Functions to render the dialog
|
|
127
|
+
async renderDialog(job, status) {
|
|
128
|
+
try {
|
|
129
|
+
if (this.isOpen && (!status || !this.settings))
|
|
130
|
+
throw new Error('PublicationUi: open but no status or settings');
|
|
131
|
+
render(html `
|
|
132
|
+
${!this.isOpen ? '' : this.settings.connector ? await this.renderOpenDialog(job, status) : await this.renderLoginDialog(status)}
|
|
133
|
+
`, this.el);
|
|
134
|
+
if (this.isOpen) {
|
|
135
|
+
this.el.classList.remove('silex-dialog-hide');
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
this.el.classList.add('silex-dialog-hide');
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
catch (err) {
|
|
142
|
+
console.error('Error while rendering the dialog', err);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
async renderOpenDialog(job, status) {
|
|
146
|
+
return html `
|
|
147
|
+
<main>
|
|
148
|
+
${this.isPending(status) ? html `
|
|
149
|
+
<p>Publication in progress</p>
|
|
150
|
+
` : ''}
|
|
151
|
+
${this.isReady(status) ? html `
|
|
152
|
+
<p>You are connected to ${this.settings.connector.displayName}</p><p>Click on the publish button to publish your website</p>
|
|
153
|
+
${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>`}
|
|
154
|
+
` : ''}
|
|
155
|
+
${this.isSuccess(status) ? html `
|
|
156
|
+
<p>Publication success</p>
|
|
157
|
+
${this.settings.url ? html `<p><a href="${this.settings.url}" target="_blank">Click here to view the published website</a></p>` : ''}
|
|
158
|
+
` : ''}
|
|
159
|
+
${this.isError(status) || this.isLoggedOut(status) ? html `
|
|
160
|
+
<p>Publication error</p>
|
|
161
|
+
<div>${unsafeHTML(this.errorMessage)}</div>
|
|
162
|
+
` : ''}
|
|
163
|
+
${job && job.message ? html `
|
|
164
|
+
<p>${unsafeHTML(job.message)}</p>
|
|
165
|
+
` : ''}
|
|
166
|
+
${this.isPending(status) ? html `
|
|
167
|
+
<progress
|
|
168
|
+
value=""
|
|
169
|
+
style="width: 100%;"
|
|
170
|
+
></progress>
|
|
171
|
+
` : ''}
|
|
172
|
+
${job && job.logs?.length && job.logs[0].length ? html `
|
|
173
|
+
<br><details>
|
|
174
|
+
<summary>Logs</summary>
|
|
175
|
+
<pre style="
|
|
176
|
+
max-width: 100%;
|
|
177
|
+
max-height: 50vh;
|
|
178
|
+
overflow: auto;
|
|
179
|
+
font-size: x-small;
|
|
180
|
+
"
|
|
181
|
+
>${unsafeHTML(cleanupLogEntry(job.logs))}
|
|
182
|
+
</pre>
|
|
183
|
+
</details>
|
|
184
|
+
` : ''}
|
|
185
|
+
${job && job.errors?.length && job.errors[0].length ? html `
|
|
186
|
+
<br><details>
|
|
187
|
+
<summary>Errors</summary>
|
|
188
|
+
<pre style="
|
|
189
|
+
max-width: 100%;
|
|
190
|
+
max-height: 50vh;
|
|
191
|
+
overflow: auto;
|
|
192
|
+
font-size: x-small;
|
|
193
|
+
"
|
|
194
|
+
>${unsafeHTML(cleanupLogEntry(job.errors))}
|
|
195
|
+
</pre>
|
|
196
|
+
</details>
|
|
197
|
+
` : ''}
|
|
198
|
+
</main>
|
|
199
|
+
<footer>
|
|
200
|
+
${this.isPending(status) || this.isLoggedOut(status) ? '' : html `
|
|
201
|
+
<button
|
|
202
|
+
class="silex-button silex-button--primary"
|
|
203
|
+
id="publish-button--primary"
|
|
204
|
+
@click=${() => this.editor.Commands.run(cmdPublicationStart)}
|
|
205
|
+
>Publish</button>
|
|
206
|
+
`}
|
|
207
|
+
${this.isLoggedOut(status) ? html `
|
|
208
|
+
<button
|
|
209
|
+
class="silex-button silex-button--primary"
|
|
210
|
+
id="publish-button--primary"
|
|
211
|
+
@click=${() => this.editor.Commands.run(cmdPublicationLogin, this.settings.connector)}
|
|
212
|
+
>Login</button>
|
|
213
|
+
` : this.settings.connector.disableLogout ? '' : html `
|
|
214
|
+
<button
|
|
215
|
+
class="silex-button silex-button--secondary"
|
|
216
|
+
id="publish-button--secondary"
|
|
217
|
+
@click=${() => this.editor.Commands.run(cmdPublicationLogout)}
|
|
218
|
+
>Logout</button>
|
|
219
|
+
`}
|
|
220
|
+
<button
|
|
221
|
+
class="silex-button silex-button--secondary"
|
|
222
|
+
id="publish-button--secondary"
|
|
223
|
+
@click=${() => this.editor.Commands.stop(cmdPublish)}
|
|
224
|
+
>Close</button>
|
|
225
|
+
</footer>
|
|
226
|
+
`;
|
|
227
|
+
}
|
|
228
|
+
async renderLoginDialog(status) {
|
|
229
|
+
try {
|
|
230
|
+
render(html `<main><p>Loading</p></main>`, this.el);
|
|
231
|
+
const hostingConnectors = await connectorList({ type: ConnectorType.HOSTING });
|
|
232
|
+
const loggedConnector = hostingConnectors.find(connector => connector.isLoggedIn);
|
|
233
|
+
if (loggedConnector) {
|
|
234
|
+
this.settings.connector = loggedConnector;
|
|
235
|
+
return this.renderOpenDialog(null, PublicationStatus.STATUS_NONE);
|
|
236
|
+
}
|
|
237
|
+
return html `
|
|
238
|
+
<main>
|
|
239
|
+
<p>You need to login to publish your website</p>
|
|
240
|
+
${this.isError(status) || this.isLoggedOut(status) ? html `
|
|
241
|
+
<p>Login error</p>
|
|
242
|
+
<div>${unsafeHTML(this.errorMessage)}</div>
|
|
243
|
+
` : ''}
|
|
244
|
+
${hostingConnectors.map(connector => html `
|
|
245
|
+
<button
|
|
246
|
+
class="silex-button silex-button--primary"
|
|
247
|
+
id="publish-button--primary"
|
|
248
|
+
@click=${() => this.editor.Commands.run(cmdPublicationLogin, connector)}
|
|
249
|
+
>Login with ${connector.connectorId}</button>
|
|
250
|
+
`)}
|
|
251
|
+
</main>
|
|
252
|
+
<footer>
|
|
253
|
+
<button
|
|
254
|
+
class="silex-button silex-button--secondary"
|
|
255
|
+
id="publish-button--secondary"
|
|
256
|
+
@click=${() => this.editor.Commands.stop(cmdPublish)}
|
|
257
|
+
>Close</button>
|
|
258
|
+
</footer>
|
|
259
|
+
`;
|
|
260
|
+
}
|
|
261
|
+
catch (err) {
|
|
262
|
+
console.error(err);
|
|
263
|
+
return html `
|
|
264
|
+
<header>
|
|
265
|
+
<h3>Oops</h3>
|
|
266
|
+
</header>
|
|
267
|
+
<main>
|
|
268
|
+
<p>Unable to load hosting connectors</p>
|
|
269
|
+
<p>Something went wrong: ${err.message}</p>
|
|
270
|
+
</main>
|
|
271
|
+
<footer>
|
|
272
|
+
<button
|
|
273
|
+
class="silex-button silex-button--secondary"
|
|
274
|
+
id="publish-button--secondary"
|
|
275
|
+
@click=${() => this.editor.Commands.stop(cmdPublish)}
|
|
276
|
+
>Close</button>
|
|
277
|
+
</footer>
|
|
278
|
+
`;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
displayPending(job, status) {
|
|
282
|
+
this.errorMessage = null;
|
|
283
|
+
this.renderDialog(job, status);
|
|
284
|
+
}
|
|
285
|
+
displayError(message, job, status) {
|
|
286
|
+
console.info(message);
|
|
287
|
+
this.errorMessage = message;
|
|
288
|
+
this.renderDialog(job, status);
|
|
289
|
+
}
|
|
290
|
+
async closeDialog() {
|
|
291
|
+
this.isOpen = false;
|
|
292
|
+
this.renderDialog(null, null);
|
|
293
|
+
}
|
|
294
|
+
async toggleDialog() {
|
|
295
|
+
if (this.isOpen)
|
|
296
|
+
this.closeDialog();
|
|
297
|
+
else
|
|
298
|
+
this.openDialog();
|
|
299
|
+
}
|
|
300
|
+
async openDialog() {
|
|
301
|
+
this.isOpen = true;
|
|
302
|
+
// Position
|
|
303
|
+
const buttonEl = this.editor.Panels.getPanel('options')?.view.el.querySelector('.publish-button');
|
|
304
|
+
if (buttonEl) {
|
|
305
|
+
const rect = buttonEl.getBoundingClientRect();
|
|
306
|
+
const width = 450;
|
|
307
|
+
const padding = 10 * 2;
|
|
308
|
+
const minHeight = 50;
|
|
309
|
+
this.move({
|
|
310
|
+
left: rect.right - width - padding,
|
|
311
|
+
top: rect.bottom + 10,
|
|
312
|
+
width,
|
|
313
|
+
minHeight,
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
console.error('Unable to find publish button');
|
|
318
|
+
}
|
|
319
|
+
// Publication
|
|
320
|
+
//this.editor.Commands.run(cmdPublicationStart)
|
|
321
|
+
this.renderDialog(null, PublicationStatus.STATUS_NONE);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
//# 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,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;
|
|
@@ -0,0 +1,264 @@
|
|
|
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 { pagePanelPlugin, cmdTogglePages, cmdAddPage } from './page-panel';
|
|
37
|
+
import { newPageDialog, cmdOpenNewPageDialog } from './new-page-dialog';
|
|
38
|
+
import { projectBarPlugin } from './project-bar';
|
|
39
|
+
import { settingsDialog, cmdOpenSettings } from './settings';
|
|
40
|
+
import { blocksPlugin } from './blocks';
|
|
41
|
+
import { semanticPlugin } from './semantic';
|
|
42
|
+
import { richTextPlugin } from './rich-text';
|
|
43
|
+
import { internalLinksPlugin } from './internal-links';
|
|
44
|
+
import publicationManagerPlugin from './PublicationManager';
|
|
45
|
+
import { storagePlugin } from './storage';
|
|
46
|
+
import { API_PATH, API_WEBSITE_ASSETS_WRITE, API_WEBSITE_PATH } from '../../constants';
|
|
47
|
+
const plugins = [
|
|
48
|
+
{ name: './project-bar', value: projectBarPlugin },
|
|
49
|
+
{ name: './settings', value: settingsDialog },
|
|
50
|
+
{ name: '@silexlabs/grapesjs-fonts', value: fontsDialogPlugin },
|
|
51
|
+
{ name: './new-page-dialog', value: newPageDialog },
|
|
52
|
+
{ name: './page-panel', value: pagePanelPlugin },
|
|
53
|
+
{ name: 'grapesjs-blocks-basic', value: blocksBasicPlugin },
|
|
54
|
+
{ name: './blocks', value: blocksPlugin },
|
|
55
|
+
{ name: './semantic', value: semanticPlugin },
|
|
56
|
+
{ name: './rich-text', value: richTextPlugin },
|
|
57
|
+
{ name: 'grapesjs-style-filter', value: styleFilterPlugin },
|
|
58
|
+
{ name: 'grapesjs-plugin-forms', value: formPlugin },
|
|
59
|
+
{ name: 'grapesjs-custom-code', value: codePlugin },
|
|
60
|
+
{ name: './internal-links', value: internalLinksPlugin },
|
|
61
|
+
{ name: '@silexlabs/grapesjs-ui-suggest-classes', value: uiSuggestClasses },
|
|
62
|
+
{ name: './symbolDialogs', value: symbolDialogsPlugin },
|
|
63
|
+
{ name: '@silexlabs/grapesjs-symbols', value: symbolsPlugin },
|
|
64
|
+
{ name: './PublicationManager', value: publicationManagerPlugin },
|
|
65
|
+
{ name: './storage', value: storagePlugin },
|
|
66
|
+
{ name: './LoginDialog', value: loginDialogPlugin },
|
|
67
|
+
{ name: '@silexlabs/grapesjs-loading', value: loadingPlugin },
|
|
68
|
+
];
|
|
69
|
+
// Check that all plugins are loaded correctly
|
|
70
|
+
plugins
|
|
71
|
+
.filter(p => typeof p.value !== 'function')
|
|
72
|
+
.forEach(p => {
|
|
73
|
+
throw new Error(`Plugin ${p.name} could not be loaded correctly (${p.value})`);
|
|
74
|
+
});
|
|
75
|
+
// ////////////////////
|
|
76
|
+
// Config
|
|
77
|
+
// ////////////////////
|
|
78
|
+
const catBasic = 'Containers';
|
|
79
|
+
const catComponents = 'Components';
|
|
80
|
+
export function getEditorConfig(id, connectorId, rootUrl) {
|
|
81
|
+
return {
|
|
82
|
+
container: '#gjs',
|
|
83
|
+
height: '100%',
|
|
84
|
+
showOffsets: true,
|
|
85
|
+
showDevices: true,
|
|
86
|
+
//pageManager: {},
|
|
87
|
+
layerManager: {
|
|
88
|
+
appendTo: '.layer-manager-container',
|
|
89
|
+
},
|
|
90
|
+
blockManager: {
|
|
91
|
+
appendTo: '.block-manager-container',
|
|
92
|
+
},
|
|
93
|
+
assetManager: {
|
|
94
|
+
upload: `${rootUrl}${API_PATH}${API_WEBSITE_PATH}${API_WEBSITE_ASSETS_WRITE}/?websiteId=${id}${connectorId ? `&connectorId=${connectorId}` : ''}`,
|
|
95
|
+
},
|
|
96
|
+
storageManager: {
|
|
97
|
+
autoload: false,
|
|
98
|
+
//type: 'remote',
|
|
99
|
+
type: 'connector',
|
|
100
|
+
options: {
|
|
101
|
+
connector: {
|
|
102
|
+
id,
|
|
103
|
+
connectorId,
|
|
104
|
+
},
|
|
105
|
+
//remote: {
|
|
106
|
+
// urlStore: `${rootUrl}/${API_WEBSITE_WRITE}?id=${id}`,
|
|
107
|
+
// urlLoad: `${rootUrl}/${API_WEBSITE_READ}?id=${id}`,
|
|
108
|
+
//},
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
cssIcons: '/css/all.min.css',
|
|
112
|
+
plugins: plugins.map(p => p.value),
|
|
113
|
+
pluginsOpts: {
|
|
114
|
+
[blocksBasicPlugin]: {
|
|
115
|
+
blocks: ['text', 'image', 'video', 'map'],
|
|
116
|
+
category: catBasic,
|
|
117
|
+
//flexGrid: true,
|
|
118
|
+
},
|
|
119
|
+
[projectBarPlugin]: {
|
|
120
|
+
panels: [
|
|
121
|
+
{
|
|
122
|
+
id: 'dash',
|
|
123
|
+
className: 'logo',
|
|
124
|
+
attributes: { title: 'Go to your dashboard' },
|
|
125
|
+
link: '/',
|
|
126
|
+
command: 'open-dash',
|
|
127
|
+
}, {
|
|
128
|
+
id: 'block-manager-btn',
|
|
129
|
+
className: 'block-manager-btn fa fa-fw fa-plus',
|
|
130
|
+
attributes: { title: 'Blocks', containerClassName: 'block-manager-container', },
|
|
131
|
+
command: 'open-blocks',
|
|
132
|
+
}, {
|
|
133
|
+
id: 'symbols-btn',
|
|
134
|
+
className: 'symbols-btn fa-regular fa-gem',
|
|
135
|
+
attributes: { title: 'Symbols', containerClassName: 'symbols-list-container', },
|
|
136
|
+
command: 'open-symbols',
|
|
137
|
+
buttons: [
|
|
138
|
+
{
|
|
139
|
+
id: 'symbol-create-button',
|
|
140
|
+
className: 'pages__add-page fa-solid fa-plus',
|
|
141
|
+
label: 'Create symbol from selection',
|
|
142
|
+
command: cmdPromptAddSymbol,
|
|
143
|
+
},
|
|
144
|
+
],
|
|
145
|
+
}, {
|
|
146
|
+
id: 'page-panel-btn',
|
|
147
|
+
className: 'page-panel-btn fa fa-fw fa-file',
|
|
148
|
+
attributes: { title: 'Pages', containerClassName: 'page-panel-container', },
|
|
149
|
+
command: cmdTogglePages,
|
|
150
|
+
buttons: [{
|
|
151
|
+
className: 'pages__add-page fa fa-file',
|
|
152
|
+
command: cmdAddPage,
|
|
153
|
+
text: '+',
|
|
154
|
+
}],
|
|
155
|
+
}, {
|
|
156
|
+
id: 'layer-manager-btn',
|
|
157
|
+
className: 'layer-manager-btn fa-solid fa-layer-group',
|
|
158
|
+
attributes: { title: 'Layers', containerClassName: 'layer-manager-container', },
|
|
159
|
+
command: 'open-layers',
|
|
160
|
+
}, {
|
|
161
|
+
id: 'font-dialog-btn',
|
|
162
|
+
className: 'font-manager-btn fa-solid fa-font',
|
|
163
|
+
attributes: { title: 'Fonts' },
|
|
164
|
+
command: cmdOpenFonts,
|
|
165
|
+
}, {
|
|
166
|
+
id: 'settings-dialog-btn',
|
|
167
|
+
className: 'page-panel-btn fa-solid fa-gears',
|
|
168
|
+
attributes: { title: 'Settings' },
|
|
169
|
+
command: cmdOpenSettings,
|
|
170
|
+
}, {
|
|
171
|
+
id: 'spacer',
|
|
172
|
+
attributes: {},
|
|
173
|
+
className: 'project-bar-spacer',
|
|
174
|
+
}, {
|
|
175
|
+
id: 'logout-button',
|
|
176
|
+
className: 'page-panel-btn fa fa-fw fa-sign-out',
|
|
177
|
+
attributes: { title: 'Sign out' },
|
|
178
|
+
command: cmdLogout,
|
|
179
|
+
},
|
|
180
|
+
],
|
|
181
|
+
},
|
|
182
|
+
[publicationManagerPlugin]: {
|
|
183
|
+
appendTo: 'options',
|
|
184
|
+
websiteId: id,
|
|
185
|
+
},
|
|
186
|
+
[pagePanelPlugin]: {
|
|
187
|
+
cmdOpenNewPageDialog,
|
|
188
|
+
cmdOpenSettings,
|
|
189
|
+
appendTo: '.page-panel-container',
|
|
190
|
+
},
|
|
191
|
+
[uiSuggestClasses]: {
|
|
192
|
+
enableCount: false,
|
|
193
|
+
enablePerformance: false,
|
|
194
|
+
},
|
|
195
|
+
[internalLinksPlugin]: {
|
|
196
|
+
// FIXME: warn the user about links in error
|
|
197
|
+
onError: (errors) => console.log('Links errors:', errors),
|
|
198
|
+
},
|
|
199
|
+
[codePlugin]: {
|
|
200
|
+
blockLabel: 'HTML',
|
|
201
|
+
blockCustomCode: {
|
|
202
|
+
category: catComponents,
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
[symbolsPlugin]: {
|
|
206
|
+
appendTo: '.symbols-list-container',
|
|
207
|
+
},
|
|
208
|
+
[fontsDialogPlugin]: {
|
|
209
|
+
api_key: 'AIzaSyAdJTYSLPlKz4w5Iqyy-JAF2o8uQKd1FKc',
|
|
210
|
+
},
|
|
211
|
+
[loginDialogPlugin]: {
|
|
212
|
+
id,
|
|
213
|
+
},
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
// ////////////////////
|
|
218
|
+
// Initialize editor
|
|
219
|
+
// ////////////////////
|
|
220
|
+
// Keep a ref to the editor singleton
|
|
221
|
+
let editor;
|
|
222
|
+
export async function initEditor(config) {
|
|
223
|
+
if (editor)
|
|
224
|
+
throw new Error('Grapesjs editor already created');
|
|
225
|
+
return new Promise((resolve, reject) => {
|
|
226
|
+
try {
|
|
227
|
+
editor = grapesjs.init(config);
|
|
228
|
+
}
|
|
229
|
+
catch (e) {
|
|
230
|
+
console.error('Error initializing GrapesJs with plugins:', plugins, e);
|
|
231
|
+
reject(e);
|
|
232
|
+
}
|
|
233
|
+
// customize the editor
|
|
234
|
+
['text']
|
|
235
|
+
.forEach(id => editor.Blocks.get(id)?.set('category', 'Basics'));
|
|
236
|
+
['image', 'video']
|
|
237
|
+
.forEach(id => editor.Blocks.get(id)?.set('category', 'Media'));
|
|
238
|
+
['map']
|
|
239
|
+
.forEach(id => editor.Blocks.get(id)?.set('category', 'Components'));
|
|
240
|
+
editor.Blocks.render([]);
|
|
241
|
+
editor.Commands.add('gjs-open-import-webpage', openImport(editor, {
|
|
242
|
+
modalImportLabel: '',
|
|
243
|
+
modalImportContent: 'Paste a web page HTML code here.',
|
|
244
|
+
modalImportButton: 'Import',
|
|
245
|
+
modalImportTitle: 'Import from website',
|
|
246
|
+
}));
|
|
247
|
+
editor.on('load', () => {
|
|
248
|
+
// remove blocks and layers buttons from the properties
|
|
249
|
+
editor.Panels.getPanel('views').buttons.remove('open-blocks');
|
|
250
|
+
editor.Panels.getPanel('views').buttons.remove('open-layers');
|
|
251
|
+
editor.Panels.getPanel('views').view.el.firstChild.style.justifyContent = 'initial'; // align left
|
|
252
|
+
editor.Panels.getPanel('options').buttons.remove('export-template');
|
|
253
|
+
editor.BlockManager.render(null);
|
|
254
|
+
// use the style filter plugin
|
|
255
|
+
editor.StyleManager.addProperty('extra', { extend: 'filter' });
|
|
256
|
+
// GrapesJs editor is ready
|
|
257
|
+
resolve(editor);
|
|
258
|
+
});
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
export function getEditor() {
|
|
262
|
+
return editor;
|
|
263
|
+
}
|
|
264
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/ts/client/grapesjs/index.ts"],"names":[],"mappings":"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"}
|