@silexlabs/silex 3.3.1-3 → 3.3.1-4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/client/css/admin.css +26 -9
  2. package/dist/client/index.html +3 -3
  3. package/dist/client/js/main.js +119 -51
  4. package/dist/client/js/main.js.LICENSE.txt +1 -1
  5. package/dist/client/page.d.ts +1 -1
  6. package/dist/client/types.d.ts +1 -17
  7. package/dist/plugins/client/types.d.ts +1 -17
  8. package/dist/plugins/client/types.js.map +1 -1
  9. package/dist/plugins/server/page.d.ts +1 -1
  10. package/dist/plugins/server/page.js.map +1 -1
  11. package/dist/plugins/server/plugins/server/GitlabConnector.js +94 -28
  12. package/dist/plugins/server/plugins/server/GitlabConnector.js.map +1 -1
  13. package/dist/plugins/server/types.d.ts +1 -17
  14. package/dist/plugins/server/types.js.map +1 -1
  15. package/dist/server/server/cli.js +0 -0
  16. package/package.json +6 -6
  17. package/src/css/_variables.scss +4 -0
  18. package/src/css/grapesjs-plugins.scss +5 -0
  19. package/src/css/grapesjs.scss +8 -2
  20. package/src/css/loader.scss +9 -6
  21. package/src/css/page-panel.scss +3 -2
  22. package/src/css/project-bar.scss +0 -1
  23. package/src/html/index.pug +1 -1
  24. package/src/ts/client/assetUrl.ts +1 -1
  25. package/src/ts/client/grapesjs/css-props.ts +4 -3
  26. package/src/ts/client/grapesjs/flex.ts +8 -4
  27. package/src/ts/client/grapesjs/img.ts +9 -3
  28. package/src/ts/client/grapesjs/li.ts +3 -1
  29. package/src/ts/client/grapesjs/sectors.ts +3 -1
  30. package/src/ts/client/grapesjs/storage.ts +25 -27
  31. package/src/ts/client/index.ts +3 -2
  32. package/src/ts/page.ts +1 -1
  33. package/src/ts/plugins/server/GitlabConnector.ts +99 -31
  34. package/src/ts/types.ts +2 -20
  35. package/dist/client/css/admin.css.map +0 -1
  36. package/dist/client/grapesjs-filter-styles/dist/index.d.ts +0 -4
  37. package/dist/client/grapesjs-fonts/dist/index.d.ts +0 -4
  38. package/dist/client/grapesjs-fonts/src/commands.d.ts +0 -3
  39. package/dist/client/grapesjs-fonts/src/fonts.d.ts +0 -4
  40. package/dist/client/grapesjs-storage-rate-limit/dist/index.d.ts +0 -4
  41. package/dist/client/grapesjs-ui-suggest-classes/dist/index.d.ts +0 -4
  42. package/dist/client/silex-lib/src/ts/client/api.d.ts +0 -90
  43. package/dist/client/silex-lib/src/ts/client/assetUrl.d.ts +0 -46
  44. package/dist/client/silex-lib/src/ts/client/config.d.ts +0 -102
  45. package/dist/client/silex-lib/src/ts/client/events.d.ts +0 -23
  46. package/dist/client/silex-lib/src/ts/client/expose.d.ts +0 -8
  47. package/dist/client/silex-lib/src/ts/client/grapesjs/LoginDialog.d.ts +0 -15
  48. package/dist/client/silex-lib/src/ts/client/grapesjs/PublicationManager.d.ts +0 -74
  49. package/dist/client/silex-lib/src/ts/client/grapesjs/PublicationUi.d.ts +0 -59
  50. package/dist/client/silex-lib/src/ts/client/grapesjs/blocks.d.ts +0 -1
  51. package/dist/client/silex-lib/src/ts/client/grapesjs/breadcrumbs.d.ts +0 -1
  52. package/dist/client/silex-lib/src/ts/client/grapesjs/css-props.d.ts +0 -6
  53. package/dist/client/silex-lib/src/ts/client/grapesjs/flex.d.ts +0 -7
  54. package/dist/client/silex-lib/src/ts/client/grapesjs/footer.d.ts +0 -2
  55. package/dist/client/silex-lib/src/ts/client/grapesjs/img.d.ts +0 -6
  56. package/dist/client/silex-lib/src/ts/client/grapesjs/index.d.ts +0 -9
  57. package/dist/client/silex-lib/src/ts/client/grapesjs/internal-links.d.ts +0 -1
  58. package/dist/client/silex-lib/src/ts/client/grapesjs/keymaps.d.ts +0 -123
  59. package/dist/client/silex-lib/src/ts/client/grapesjs/li.d.ts +0 -7
  60. package/dist/client/silex-lib/src/ts/client/grapesjs/new-page-dialog.d.ts +0 -2
  61. package/dist/client/silex-lib/src/ts/client/grapesjs/openImport.d.ts +0 -9
  62. package/dist/client/silex-lib/src/ts/client/grapesjs/page-panel.d.ts +0 -9
  63. package/dist/client/silex-lib/src/ts/client/grapesjs/project-bar.d.ts +0 -21
  64. package/dist/client/silex-lib/src/ts/client/grapesjs/resize-panel.d.ts +0 -1
  65. package/dist/client/silex-lib/src/ts/client/grapesjs/rich-text.d.ts +0 -4
  66. package/dist/client/silex-lib/src/ts/client/grapesjs/scroll.d.ts +0 -7
  67. package/dist/client/silex-lib/src/ts/client/grapesjs/sectors.d.ts +0 -11
  68. package/dist/client/silex-lib/src/ts/client/grapesjs/semantic.d.ts +0 -1
  69. package/dist/client/silex-lib/src/ts/client/grapesjs/settings-sections.d.ts +0 -16
  70. package/dist/client/silex-lib/src/ts/client/grapesjs/settings.d.ts +0 -4
  71. package/dist/client/silex-lib/src/ts/client/grapesjs/storage.d.ts +0 -3
  72. package/dist/client/silex-lib/src/ts/client/grapesjs/symbolDialogs.d.ts +0 -3
  73. package/dist/client/silex-lib/src/ts/client/grapesjs/upload-progress.d.ts +0 -2
  74. package/dist/client/silex-lib/src/ts/client/grapesjs/view-buttons.d.ts +0 -1
  75. package/dist/client/silex-lib/src/ts/client/index.d.ts +0 -10
  76. package/dist/client/silex-lib/src/ts/client/publication-transformers.d.ts +0 -42
  77. package/dist/client/silex-lib/src/ts/client/publish-custom-code-block.d.ts +0 -4
  78. package/dist/client/silex-lib/src/ts/client/publish-fonts.d.ts +0 -4
  79. package/dist/client/silex-lib/src/ts/client/utils.d.ts +0 -22
  80. package/dist/client/silex-lib/src/ts/constants.d.ts +0 -33
  81. package/dist/client/silex-lib/src/ts/page.d.ts +0 -2
  82. package/dist/client/silex-lib/src/ts/types.d.ts +0 -341
@@ -1,5 +1,5 @@
1
1
  import { API_PATH, API_WEBSITE_ASSET_READ, API_WEBSITE_PATH } from '../constants'
2
- import { Asset, ClientSideFileType, Component, ConnectorId, Page, Style, WebsiteId } from '../types'
2
+ import { Asset, ClientSideFileType, ConnectorId, Style, WebsiteId } from '../types'
3
3
 
4
4
  /**
5
5
  * @fileoverview Helpers to manage assets URL
@@ -128,19 +128,20 @@ export default (editor: Editor, opts) => {
128
128
  name: 'Content',
129
129
  property: 'content',
130
130
  type: 'text',
131
- defaults: '',
131
+ defaults: '"Content in double quotes"',
132
132
  info: 'Generates content for an element.',
133
133
  full: true,
134
134
  visible: false,
135
135
  }],
136
136
  shouldShow: async () => {
137
137
  return new Promise<boolean>((resolve, reject) => {
138
+
138
139
  requestAnimationFrame(() => {
139
140
  try {
140
141
  const state = editor.StyleManager
141
142
  .getSelected()
142
- .get('state')
143
- if (['before', 'after'].includes(state)) {
143
+ ?.get('state')
144
+ if (state && ['before', 'after'].includes(state)) {
144
145
  return resolve(true)
145
146
  }
146
147
  return resolve(false)
@@ -15,7 +15,6 @@
15
15
  * along with this program. If not, see <https://www.gnu.org/licenses/>.
16
16
  */
17
17
  import { Component, Editor } from 'grapesjs'
18
- import { SectorConfig, registerSector } from './sectors'
19
18
 
20
19
  /**
21
20
  * @fileoverview This plugin adds CSS properties for the UL, OL and LI elements
@@ -54,12 +53,16 @@ export default (editor: Editor) => {
54
53
  // })
55
54
  // }
56
55
  // })
57
- // Update the visibility
58
- // This is a workaround grapesjs behavior: https://github.com/GrapesJS/grapesjs/issues/3123
59
- sector.on('change:visible', () => applyVisibility())
56
+ // Listen to the events that should trigger a visibility check
60
57
  editor.on('component:selected', comp => applyVisibility(comp))
58
+ // `change:visible` is a workaround grapesjs behavior: https://github.com/GrapesJS/grapesjs/issues/3123
59
+ editor.on('change:visible', applyVisibility)
60
+ // `style:property:update` is useful for instantly display the flex sector when selecting display: inline-flex;
61
+ editor.on('style:property:update', () => applyVisibility())
61
62
  function applyVisibility(comp: Component = editor.getSelected()) {
63
+ editor.off('change:visible', applyVisibility) // Avoid infinite loop
62
64
  requestAnimationFrame(() => {
65
+ if(!comp) return // No selection yet
63
66
  const computedDisplay = comp?.view?.el && getComputedStyle(comp.view.el)['display'] as string || ''
64
67
  const isFlex = computedDisplay === 'flex' || computedDisplay === 'inline-flex'
65
68
  const parent = comp.parent()
@@ -78,6 +81,7 @@ export default (editor: Editor) => {
78
81
  sector.getProperties()
79
82
  .forEach(p => p.set('visible', FLEX_ITEM_PROPS.includes(p.getId())))
80
83
  }
84
+ editor.on('change:visible', applyVisibility)
81
85
  })
82
86
  }
83
87
  })
@@ -144,9 +144,15 @@ export default (editor: Editor, opts) => {
144
144
  }
145
145
  })
146
146
  // Watch changes made by grapesjs and revert them if needed
147
- sector.on('change:visible', () => {
148
- if(sector.get('visible') !== showSector) sector.set('visible', showSector)
149
- })
147
+ function doubleCheck() {
148
+ if(sector.get('visible') !== showSector){
149
+ sector.off('change:visible', doubleCheck)
150
+ sector.set('visible', showSector)
151
+ sector.on('change:visible', doubleCheck)
152
+ }
153
+ }
154
+ sector.on('change:visible', doubleCheck)
155
+
150
156
  // Add a new image type that handles the storage URL vs displayed URL
151
157
  domc.addType('image', {
152
158
  ...imgType,
@@ -68,7 +68,9 @@ export default (editor: Editor) => {
68
68
  defaults: '',
69
69
  },
70
70
  ],
71
- shouldShow: comp => ['ul', 'ol', 'li'].includes(comp.get('tagName')?.toLowerCase() || ''),
71
+ shouldShow: comp => {
72
+ return comp && ['ul', 'ol', 'li'].includes(comp.get('tagName')?.toLowerCase() || '')
73
+ },
72
74
  },
73
75
  ]
74
76
 
@@ -46,12 +46,14 @@ export function registerSector(editor: Editor, config: SectorConfig, at?: number
46
46
  async function applyVisibility(comp: Component = editor.getSelected()) {
47
47
  const shouldShow = await config.shouldShow(comp)
48
48
  if (sector.get('visible') !== shouldShow) {
49
+ sector.off('change:visible', applyVisibility)
49
50
  sector.set('visible', shouldShow)
51
+ sector.on('change:visible', applyVisibility)
50
52
  // sector.getProperties()
51
53
  // .forEach(p => p.set('visible', shouldShow))
52
54
  }
53
55
  }
54
56
 
55
- sector.on('change:visible', () => applyVisibility())
57
+ sector.on('change:visible', applyVisibility)
56
58
  editor.on('component:selected', comp => applyVisibility(comp))
57
59
  }
@@ -21,7 +21,7 @@ import { cmdLogin, eventLoggedIn, eventLoggedOut, getCurrentUser, updateUser } f
21
21
  import { addTempDataToAssetUrl, addTempDataToStyles, removeTempDataFromAssetUrl, removeTempDataFromStyles } from '../assetUrl'
22
22
  import { PublicationStatus, PublishableEditor } from './PublicationManager'
23
23
  import { ClientEvent } from '../events'
24
- import { ProjectData } from 'grapesjs'
24
+ import { Page, PageProperties, ProjectData } from 'grapesjs'
25
25
  import { html, render, TemplateResult } from 'lit-html'
26
26
  import { unsafeHTML } from 'lit-html/directives/unsafe-html.js'
27
27
 
@@ -62,10 +62,11 @@ export const storagePlugin = (editor: PublishableEditor) => {
62
62
  // Add useful commands
63
63
  editor.Commands.add(cmdPauseAutoSave, {
64
64
  run: () => {
65
- if(!editor.StorageManager.isAutosave()) throw new Error('Autosave is not enabled')
65
+ if(!editor.StorageManager.isAutosave()) console.warn('Autosave is not enabled')
66
66
  editor.StorageManager.setAutosave(false)
67
67
  },
68
68
  stop: () => {
69
+ if(editor.StorageManager.isAutosave()) console.warn('Autosave is already enabled')
69
70
  editor.editor.set('changesCount', 0)
70
71
  editor.UndoManager.clear()
71
72
  editor.StorageManager.setAutosave(true)
@@ -80,13 +81,27 @@ export const storagePlugin = (editor: PublishableEditor) => {
80
81
  const data = await websiteLoad({ websiteId: options.id, connectorId: user.storage.connectorId }) as WebsiteData
81
82
  if (data.assets) data.assets = addTempDataToAssetUrl(data.assets, options.id, user.storage.connectorId)
82
83
  if (data.styles) data.styles = addTempDataToStyles(data.styles, options.id, user.storage.connectorId)
83
- //setTimeout(() => progressiveLoadPages(editor, data))
84
84
  if (!data.pages) {
85
85
  // This happens when the website was just created
86
86
  // Let grapesjs create the pages in the frontend
87
87
  return data
88
88
  } else {
89
- await progressiveLoadPages(editor, data)
89
+ const { pages, ...rest } = data
90
+ // Load any additional project data, e.g. symbols, but not the ones we progressive load
91
+ loader && render(getLoaderHtml('Loading styles, assets and symbols', 0, pages.length + 1), loader)
92
+ if (Object.keys(rest).length > 0) {
93
+ editor.loadProjectData(rest)
94
+ }
95
+ // Load the rest of the data
96
+ await progressiveLoadPages(editor, pages)
97
+ await nextFrame()
98
+ // Select the first page
99
+ const firstPage = editor.Pages.getAll()[0]
100
+ if (firstPage) editor.Pages.select(firstPage)
101
+ loader && render(getLoaderHtml('Starting', 1, 1), loader)
102
+ await nextFrame()
103
+ editor.trigger('storage:end:load', data)
104
+ editor.trigger('canvas:frame:load', editor)
90
105
  return {}
91
106
  }
92
107
  } catch (err) {
@@ -115,7 +130,7 @@ export const storagePlugin = (editor: PublishableEditor) => {
115
130
  return await this.addToQueue(myData, options)
116
131
  },
117
132
 
118
- async addToQueue(data: WebsiteData, options) {
133
+ async addToQueue(data: WebsiteData, options: { id: WebsiteId, connectorId: ConnectorId }) {
119
134
  // Handle concurrent saving
120
135
  if (lastPendingSaving && lastPendingSaving !== data) {
121
136
  // Cancel previous saving
@@ -125,7 +140,7 @@ export const storagePlugin = (editor: PublishableEditor) => {
125
140
  return this.doStore(lastPendingSaving, options)
126
141
  },
127
142
 
128
- async doStore(data, options) {
143
+ async doStore(data: WebsiteData, options: { id: WebsiteId, connectorId: ConnectorId }) {
129
144
  if (editor.PublicationManager.status === PublicationStatus.STATUS_PENDING) {
130
145
  // Publication is pending, save is delayed
131
146
  return new Promise((resolve) => {
@@ -217,32 +232,15 @@ export const storagePlugin = (editor: PublishableEditor) => {
217
232
  }
218
233
  }
219
234
 
220
- async function progressiveLoadPages(editor: PublishableEditor, data: ProjectData) {
235
+ async function progressiveLoadPages(editor: PublishableEditor, pages: Page[]) {
221
236
  editor.Pages.getAll().forEach(page => editor.Pages.remove(page))
222
- const max = data.pages.length + 1
223
237
  let i = 0
224
- for (const page of data.pages) {
225
- loader && render(getLoaderHtml(`Loading page <strong>${++i}</strong> / ${data.pages.length}`, i, max), loader)
238
+ for (const page of pages) {
239
+ loader && render(getLoaderHtml(`Loading page <strong>${++i}</strong> / ${pages.length + 1}`, i, pages.length + 1), loader)
226
240
  //await new Promise(resolve => setTimeout(resolve, 1000 * 60 * 1000))
227
241
  await nextFrame()
228
242
  const newPage = editor.Pages.add({
229
243
  ...page,
230
- })
244
+ } as PageProperties)
231
245
  }
232
-
233
- // Charger les styles, assets, etc. après les pages
234
- loader && render(getLoaderHtml('Loading styles and assets', data.pages.length + 1, max), loader)
235
- if (data.styles) editor.setStyle(data.styles)
236
- if (data.assets) editor.AssetManager.add(data.assets)
237
-
238
- await nextFrame()
239
- setTimeout(() => {
240
- // FIXME: Why is this setTimeout needed?
241
- editor.trigger('storage:end:load', data)
242
- editor.trigger('canvas:frame:load', editor)
243
- })
244
-
245
- // Sélectionner la première page
246
- const firstPage = editor.Pages.getAll()[0]
247
- if (firstPage) editor.Pages.select(firstPage)
248
246
  }
@@ -21,6 +21,7 @@
21
21
  *
22
22
  */
23
23
 
24
+ import { Editor } from 'grapesjs'
24
25
  import { DEV_MESSAGE } from '../constants'
25
26
  import { ClientConfig } from './config'
26
27
  import { ClientEvent } from './events'
@@ -86,8 +87,8 @@ export async function start(options = {}): Promise<void> {
86
87
  // Load the site
87
88
  try {
88
89
  editor.runCommand(cmdPauseAutoSave)
90
+ editor.once('canvas:frame:load storage:after:load', () => editor.stopCommand(cmdPauseAutoSave))
89
91
  await editor.load(null)
90
- editor.once('canvas:frame:load', () => editor.stopCommand(cmdPauseAutoSave))
91
92
  } catch(e) {
92
93
  if(e.httpStatusCode === 401) {
93
94
  // Unauthorized, will try to login
@@ -103,7 +104,7 @@ export async function start(options = {}): Promise<void> {
103
104
  }
104
105
  }
105
106
 
106
- function loaded(editor) {
107
+ function loaded(editor: Editor) {
107
108
  document.querySelector('.silex-loader').classList.add('silex-dialog-hide')
108
109
  document.querySelector('#gjs').classList.remove('silex-dialog-hide')
109
110
  config.emit(ClientEvent.STARTUP_END, { editor, config })
package/src/ts/page.ts CHANGED
@@ -17,7 +17,7 @@
17
17
 
18
18
  // Page related functions
19
19
  // This is used on the client and the server
20
- export function getPageSlug(pageName) {
20
+ export function getPageSlug(pageName: string | undefined) {
21
21
  return (pageName || 'index')
22
22
  .toLowerCase()
23
23
  .replace(/[^a-z0-9 -]/g, '')
@@ -18,7 +18,7 @@
18
18
  import { API_CONNECTOR_LOGIN_CALLBACK, API_CONNECTOR_PATH, API_PATH, WEBSITE_DATA_FILE, WEBSITE_PAGES_FOLDER } from '../../constants'
19
19
  import { ServerConfig } from '../../server/config'
20
20
  import { ConnectorFile, ConnectorFileContent, StatusCallback, StorageConnector, contentToBuffer, contentToString, toConnectorData } from '../../server/connectors/connectors'
21
- import { ApiError, ConnectorType, ConnectorUser, WebsiteData, WebsiteId, WebsiteMeta, WebsiteMetaFileContent, JobStatus, Page } from '../../types'
21
+ import { ApiError, ConnectorType, ConnectorUser, WebsiteData, WebsiteId, WebsiteMeta, WebsiteMetaFileContent, JobStatus } from '../../types'
22
22
  import fetch from 'node-fetch'
23
23
  import crypto, { createHash } from 'crypto'
24
24
  import { join } from 'path'
@@ -26,6 +26,7 @@ import { Agent } from 'https'
26
26
  import { getPageSlug } from '../../page'
27
27
  import e from 'express'
28
28
  import { fork } from 'child_process'
29
+ import { Page } from 'grapesjs'
29
30
 
30
31
  /**
31
32
  * Gitlab connector
@@ -220,6 +221,10 @@ function sanitizeGitlabPath(name: string): string {
220
221
  .toLowerCase()
221
222
  }
222
223
 
224
+ function getPageName(page: Page | GitlabPage) {
225
+ return (page as any).getName ? (page as Page).getName() : (page as GitlabPage).name
226
+ }
227
+
223
228
  export default class GitlabConnector implements StorageConnector {
224
229
  connectorId = 'gitlab'
225
230
  connectorType = ConnectorType.STORAGE
@@ -327,15 +332,21 @@ export default class GitlabConnector implements StorageConnector {
327
332
  'Content-Type': 'application/json',
328
333
  }
329
334
  if (method === 'GET' && requestBody) {
330
- console.error('Gitlab API error (4) - GET request with body', { url, method, body: requestBody, params })
335
+ console.error('[GitlabConnector] Invalid GET request: GET requests should not have a body', { url, method, body: requestBody, params })
331
336
  }
332
337
  // With or without body
333
- let response
338
+ let response: Response
334
339
  const body = requestBody ? JSON.stringify(requestBody) : undefined
335
340
  try {
336
- if(body && Buffer.byteLength(body) > MAX_BODY_SIZE_KB * 1024) {
337
- // TODO: warn the end user
338
- console.warn('Gitlab API warning - body too big', Buffer.byteLength(body), 'bytes', { url, method, params })
341
+ if (body && Buffer.byteLength(body) > MAX_BODY_SIZE_KB * 1024) {
342
+ console.warn('[GitlabConnector] Request body size exceeds Gitlab API limit', {
343
+ size: Buffer.byteLength(body),
344
+ maxAllowed: MAX_BODY_SIZE_KB * 1024,
345
+ url,
346
+ method,
347
+ params,
348
+ session,
349
+ })
339
350
  }
340
351
  response = await fetch(url, requestBody && method !== 'GET' ? {
341
352
  agent: this.getAgent(),
@@ -348,8 +359,16 @@ export default class GitlabConnector implements StorageConnector {
348
359
  headers,
349
360
  })
350
361
  } catch (e) {
351
- console.error('Gitlab API error (0)', e)
352
- throw new ApiError(`Gitlab API error (0): ${e.message} ${e.text} ${e.code} ${e.name} ${e.type}`, 500)
362
+ console.error('[GitlabConnector] Failed to reach Gitlab API endpoint', {
363
+ error: e,
364
+ url,
365
+ method,
366
+ body: requestBody,
367
+ params,
368
+ session,
369
+ stack: e?.stack || new Error().stack,
370
+ })
371
+ throw new ApiError(`Could not reach Gitlab API: ${e.message || e}`, 500)
353
372
  }
354
373
  // Pass the response headers to the caller
355
374
  response.headers.forEach((value, name) => responseHeaders[name] = value)
@@ -358,14 +377,30 @@ export default class GitlabConnector implements StorageConnector {
358
377
  try {
359
378
  return await response.text()
360
379
  } catch (e) {
361
- console.error('Gitlab API error (6) - could not parse response', response.status, response.statusText, { url, method, body: requestBody, params }, e)
362
- throw new ApiError(`Gitlab API error (6): response body not available. ${e.message}`, 500)
380
+ console.error('[GitlabConnector] Failed to read response body from Gitlab API', {
381
+ status: response.status,
382
+ statusText: response.statusText,
383
+ url,
384
+ method,
385
+ body: requestBody,
386
+ params,
387
+ error: e
388
+ })
389
+ throw new ApiError(`Gitlab API: Could not read response body (${e.message})`, 500)
363
390
  }
364
391
  }()
365
392
  if (!response.ok) {
366
- console.error('Gitlab API error (7) - response not ok', response.status, response.statusText, { url, method, body: requestBody, params, text: text })
393
+ console.error('[GitlabConnector] Gitlab API responded with error status', {
394
+ status: response.status,
395
+ statusText: response.statusText,
396
+ url,
397
+ method,
398
+ body: requestBody,
399
+ params,
400
+ responseText: text
401
+ })
367
402
  if (text.includes('A file with this name doesn\'t exist')) {
368
- throw new ApiError('Gitlab API error (5): Not Found', 404)
403
+ throw new ApiError('Gitlab API: File not found', 404)
369
404
  } else if (response.status === 401 && this.getSessionToken(session).token?.refresh_token) {
370
405
  // Refresh the token
371
406
  const token = this.getSessionToken(session).token
@@ -401,17 +436,28 @@ export default class GitlabConnector implements StorageConnector {
401
436
  })
402
437
  } else {
403
438
  const message = typeof refreshJson?.message === 'object' ? Object.entries(refreshJson.message).map(entry => entry.join(' ')).join(' ') : refreshJson?.message ?? refreshJson?.error ?? response.statusText
404
- console.error('Gitlab API error (2) - could not refresh token', response.status, response.statusText, { message }, 'refresh_token:', token?.refresh_token)
405
- // Workaround for when the token is invalid
406
- // It happens often which is not normal (refresh token should last 6 months)
439
+ console.error('[GitlabConnector] Failed to refresh Gitlab OAuth token', {
440
+ status: response.status,
441
+ statusText: response.statusText,
442
+ message,
443
+ refresh_token: token?.refresh_token
444
+ })
407
445
  this.logout(session)
408
- // Notify the user
409
- throw new ApiError(`Gitlab API error (2): ${message}`, response.status)
446
+ throw new ApiError(`Gitlab API: Could not refresh token (${message})`, response.status)
410
447
  }
411
448
  } else {
412
449
  const message = response.statusText
413
- console.error('Gitlab API error (1)', response.status, response.statusText, { url, method, body: requestBody, params, text: text, message })
414
- throw new ApiError(`Gitlab API error (1): ${message} (${text})`, response.status)
450
+ console.error('[GitlabConnector] Unhandled Gitlab API error response', {
451
+ status: response.status,
452
+ statusText: response.statusText,
453
+ url,
454
+ method,
455
+ body: requestBody,
456
+ params,
457
+ responseText: text,
458
+ message
459
+ })
460
+ throw new ApiError(`Gitlab API error: ${message} (${text})`, response.status)
415
461
  }
416
462
  }
417
463
  let json: { message: string, error: string } | any
@@ -419,11 +465,19 @@ export default class GitlabConnector implements StorageConnector {
419
465
  json = JSON.parse(text)
420
466
  } catch (e) {
421
467
  if (!response.ok) {
422
- // A real error
423
468
  throw e
424
469
  } else {
425
- // Useless error linked to the fact that the response is not JSON
426
- console.error('Gitlab API error (3) - could not parse response', response.status, response.statusText, { url, method, body: requestBody, params, text: text })
470
+ console.error('[GitlabConnector] Response from Gitlab API is not valid JSON', {
471
+ statusText: response.statusText,
472
+ url,
473
+ method,
474
+ body: requestBody,
475
+ params,
476
+ responseText: text,
477
+ error: e,
478
+ session,
479
+ stack: e?.stack || new Error().stack,
480
+ })
427
481
  return text
428
482
  }
429
483
  }
@@ -451,18 +505,30 @@ export default class GitlabConnector implements StorageConnector {
451
505
  if (!fileRes.ok) {
452
506
  const errText = await fileRes.text()
453
507
  if (errText.includes('not found') || fileRes.status === 404) {
454
- throw new ApiError('GitLab raw error (5): Not Found', 404)
508
+ console.error('[GitlabConnector] GitLab raw file not found', {
509
+ status: fileRes.status,
510
+ statusText: fileRes.statusText,
511
+ url: rawUrl,
512
+ responseText: errText
513
+ })
514
+ throw new ApiError(`GitLab raw file not found: filePath="${filePath}" (status ${fileRes.status})`, 404)
455
515
  }
456
- console.error('GitLab raw error (1)', fileRes.status, fileRes.statusText, { rawUrl, errText })
457
- throw new ApiError(`GitLab raw error (1): ${fileRes.statusText} (${errText})`, fileRes.status)
516
+ console.error('[GitlabConnector] Failed to fetch raw file from GitLab', {
517
+ filePath,
518
+ url: rawUrl,
519
+ status: fileRes.status,
520
+ statusText: fileRes.statusText,
521
+ responseText: errText
522
+ })
523
+ throw new ApiError(`Failed to fetch raw file from GitLab: filePath="${filePath}" - ${fileRes.statusText} (${errText})`, fileRes.status)
458
524
  }
459
525
 
460
526
  try {
461
527
  const buffer = await fileRes.buffer()
462
528
  return buffer
463
529
  } catch (e) {
464
- console.error('GitLab raw error (3): could not read buffer', e)
465
- throw new ApiError('GitLab raw error (3): failed to read binary content', 500)
530
+ console.error('[GitlabConnector] Error reading binary content from GitLab raw file', e)
531
+ throw new ApiError('Failed to read binary content from GitLab raw file', 500)
466
532
  }
467
533
  }
468
534
 
@@ -691,8 +757,9 @@ export default class GitlabConnector implements StorageConnector {
691
757
  // Load each page in parallel
692
758
  const pages = await Promise.all(websiteData.pages.map(async (page: GitlabPage | Page) => {
693
759
  if ((page as GitlabPage).isFile) {
694
- const name = getPageSlug(page.name)
695
- const fileName = (`${name}-${page.id}`)
760
+ const name = getPageName(page)
761
+ const slug = getPageSlug(name)
762
+ const fileName = (`${slug}-${page.id}`)
696
763
  const filePath = `${WEBSITE_PAGES_FOLDER}/${fileName}.json`
697
764
  const pageContent = await this.downloadRawFile(session, websiteId, filePath)
698
765
  const res = JSON.parse(pageContent.toString('utf8')) as Page
@@ -747,7 +814,8 @@ export default class GitlabConnector implements StorageConnector {
747
814
  // **
748
815
  // Create the pages for batch upload
749
816
  const pages = websiteData.pages.map((page: Page) => {
750
- const fileName = encodeURIComponent(`${getPageSlug(page.name)}-${page.id}`)
817
+ /* @ts-ignore */
818
+ const fileName = encodeURIComponent(`${getPageSlug(getPageName(page))}-${page.id}`)
751
819
  const filePath = `${WEBSITE_PAGES_FOLDER}/${fileName}.json`
752
820
  const content = JSON.stringify(page)
753
821
  const newSha = computeGitBlobSha(content, false)
@@ -771,7 +839,7 @@ export default class GitlabConnector implements StorageConnector {
771
839
  }
772
840
 
773
841
  return {
774
- name: page.name,
842
+ name: getPageName(page),
775
843
  id: page.id,
776
844
  isFile: true,
777
845
  }
package/src/ts/types.ts CHANGED
@@ -15,6 +15,8 @@
15
15
  * along with this program. If not, see <https://www.gnu.org/licenses/>.
16
16
  */
17
17
 
18
+ import { Page } from 'grapesjs'
19
+
18
20
  /**
19
21
  * @fileoverview define types for Silex client and server
20
22
  */
@@ -98,26 +100,6 @@ export const defaultWebsiteData: WebsiteData = {
98
100
  } as WebsiteData
99
101
 
100
102
 
101
- // **
102
- // Grapesjs types
103
- // From grapesjs, not imported because it breaks the build on the server side
104
- export interface Component {
105
- type: string,
106
- content?: string,
107
- attributes: { [key: string]: string },
108
- components: Component[],
109
- }
110
-
111
- export interface Page {
112
- id: string,
113
- name: string,
114
- slug: string,
115
- settings: WebsiteSettings, // TODO: why is this here? It is used in the publication manager
116
- frames: {
117
- component: Component,
118
- }[]
119
- }
120
-
121
103
  export interface WebsiteData {
122
104
  pages: Page[],
123
105
  assets: Asset[],
@@ -1 +0,0 @@
1
- {"version":3,"sourceRoot":"","sources":["../../../src/css/index.scss","../../../../../node_modules/normalize.css/normalize.css","../../../src/css/_variables.scss","../../../../../node_modules/grapesjs/src/styles/scss/main.scss","../../../../../node_modules/codemirror/lib/codemirror.css","../../../../../node_modules/codemirror/theme/hopscotch.css","../../../../../node_modules/grapesjs/src/styles/scss/_gjs_vars.scss","../../../../../node_modules/grapesjs/src/styles/scss/_gjs_status.scss","../../../../../node_modules/grapesjs/src/styles/scss/_gjs_main_mixins.scss","../../../../../node_modules/grapesjs/src/styles/scss/_gjs_root.scss","../../../../../node_modules/grapesjs/src/styles/scss/_gjs_category_general.scss","../../../../../node_modules/grapesjs/src/styles/scss/_gjs_traits.scss","../../../../../node_modules/grapesjs/src/styles/scss/_gjs_canvas.scss","../../../../../node_modules/grapesjs/src/styles/scss/_gjs_commands.scss","../../../../../node_modules/grapesjs/src/styles/scss/_gjs_panels.scss","../../../../../node_modules/grapesjs/src/styles/scss/_gjs_inputs.scss","../../../../../node_modules/grapesjs/src/styles/scss/_gjs_devices.scss","../../../../../node_modules/grapesjs/src/styles/scss/_gjs_style_manager.scss","../../../../../node_modules/grapesjs/src/styles/scss/_gjs_blocks.scss","../../../../../node_modules/grapesjs/src/styles/scss/_gjs_layers.scss","../../../../../node_modules/grapesjs/src/styles/scss/_gjs_selectors.scss","../../../../../node_modules/grapesjs/src/styles/scss/_gjs_modal.scss","../../../../../node_modules/grapesjs/src/styles/scss/_gjs_assets.scss","../../../../../node_modules/grapesjs/src/styles/scss/_gjs_file_uploader.scss","../../../../../node_modules/grapesjs/src/styles/scss/_gjs_code_manager.scss","../../../../../node_modules/grapesjs/src/styles/scss/_gjs_rte.scss","../../../../../node_modules/grapesjs/src/styles/scss/spectrum.scss","../../../../../node_modules/grapesjs/src/styles/scss/_gjs_spectrum.scss","../../../src/css/silex.scss","../../../src/css/_mixins.scss","../../../src/css/loader.scss","../../../src/css/footer.scss","../../../src/css/dialog.scss","../../../src/css/fonts.scss","../../../src/css/project-bar.scss","../../../src/css/page-panel.scss","../../../src/css/website-info.scss","../../../../../node_modules/grapick/dist/grapick.min.css","../../../src/css/grapesjs-plugins.scss","../../../src/css/grapesjs.scss","../../../../../node_modules/@fontsource/ubuntu/index.css"],"names":[],"mappings":"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EAEE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAMR;EACE;;AAGE;EACE;;AAGF;EACE;EACA;;AAEA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAOV;EACE;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGJ;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE,YACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAEA;EACE;;;AASJ;EACE;EACA;EACA;;AAEF;EACE;;AAEF;EACE;EACA;EACA;;AAEF;EACE;;;AAKN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAyEA;AAKA;;AA5EA;EACE;;AAGF;EACE;EACA;EACA;;AAKA;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EJ5NF,SI8NmC;EJ7NnC;;AIgOA;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;;AAaJ;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA,YACE;EAEF;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;;AAIJ;EAGE;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAAA;EJnUE,SIyUiC;EJxUjC;EI0UA;EACA;;;AAGF;AAAA;EJ/UE,SIiViC;EJhVjC;;;AImVF;AAAA;EAEE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAIA;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;AAAA;EAEE;EACA;;AAGF;AAAA;EAEE;EACA;;;AAIJ;AAAA;EAEE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AC7eF;AAAA;EAEE;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAQF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;AAAA;AAAA;EAGE;EACA;EACA;EACA;;;AAGF;AAAA;EAEE;EACA;EACA;EACA,YACE;;;AAMJ;AAAA;AAAA;EAGE;EACA;EACA;;;AAGF;AAAA;AAAA;EAGE;EACA;EACA;;;AAGF;AAAA;AAAA;EAGE;EACA;EACA;EACA;EACA;EACA;EACA;;;AC/EA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EAEE;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;;ACrEN;AAmBE;EACE;;AAGF;EACE;;AAGF;EACE;EACA;;AAEA;EACE;;AAIJ;EAEE;EACA;;AAGF;EAKE;;AAIA;AAAA;AAAA;EPxBF,oBO2BwC;EP1BxC,iBO0BwC;EPzBxC,YOyBwC;EAEpC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EACE;;AAIJ;EACE;;AAEA;EAEE;EACA;;AAIJ;EACE;;AAIA;EACE;;;AAMR;AAAA;AAAA;AAAA;AAAA;AAAA;EAME;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EAEE;;;AAKF;EACE;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AAIJ;EAGE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AACA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;AAqBA;;AAnBA;EACE;;AAGF;EACE;EACA;EAnTJ;EACA;EACA;EACA;EACA;EACA;;AAmTE;EAxTF;EACA;EACA;EACA;EACA;EACA;;AAuTE;EA5TF;EACA;EACA;EACA;EACA;EACA;;AA4TE;EAxTF;EACA;EACA;EACA;;AAyTE;EA5TF;EACA;EACA;EACA;;AA6TE;EAhUF;EACA;EACA;EACA;;;AAoUA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;;;AAIJ;EPrUE,eOsUmC;EPrUnC,mBOqUmC;EPpUnC,gBOoUmC;EPnUnC,WOmUmC;EAEnC;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EPhWA,SOkWiC;EPjWjC;;AOmWA;EPpWA,SOqWmC;EPpWnC;;AOuWA;EACE;;;ACjYJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;ACdF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAIF;EACE;EACA;EACA;;AAEA;EAEE;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAMA;EACE;;AAKN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACE;EACA;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EThDA,SSkDiC;ETjDjC;;ASmDA;ETpDA,SSqDmC;ETpDnC;;;ASwDF;AAEA;EACE;EACA;;AAEA;AAAA;AAAA;AAAA;EAEE;EACA,OX1DW;EW2DX;EACA;;AAGF;EACE;;AAGF;EACE;EACA;ETxEF,oBS0EsC;ETzEtC,iBSyEsC;ETxEtC,YSwEsC;;AAEpC;EACE;;AAIJ;EACE;EACA;;AAGF;AAAA;AAAA;AAAA;EAEE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAIE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;EACA;;AAGF;AAAA;AAAA;AAAA;EAEE;;AAGF;EAKE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAKJ;EACE;EACA;;;AAIJ;AAEA;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;AAII;EACE;;;AAKN;EACE;EACA;EACA;EACA;EACA;;AAEA;EAOE;;AAGF;EACE;EACA;EACA,YACE;EAEF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ETpRF,SSsRmC;ETrRnC;;ASwRA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EAGE;EACA;EACA;;;AAMJ;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EAGE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;ET/XF,SSiYmC;EThYnC;;ASkYE;ETnYF,SSoYqC;ETnYrC;;;ASwYF;AAEA;EACE;;;AAGF;EAGE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;ET9ZA,SS+ZmC;ET9ZnC;;;ASkaF;EAGE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;AAAA;EAEE;EACA;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;ET/cE,SSgdiC;ET/cjC;ESidA;EACA;EACA;EACA;;AAEA;ETvdA,SSwdmC;ETvdnC;;;AUvBF;EACE;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;AAUA;EACE;;;AAIJ;EVdE,kBUeqC;EVdrC,oBUcqC;EVbrC,qBUaqC;EVZrC,iBUYqC;EVXrC,gBUWqC;EVVrC,aUUqC;EAErC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;ACvFA;EACE;;AAGF;EXeA,SWdmC;EXenC;;AWZA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEE;EACA;EACA;;AAGF;EACE;;AAIJ;EXlBF,SWmBqC;EXlBrC;;AWqBE;EACE;EACA;EACA;;AAEA;EAEE;EACA;EACA;;AAGF;EACE;;AAIA;EACE;;AAEF;EACE;;AAKN;EACE;EACA;EACA;EACA;EACA;EACA;EXtDJ,SWuDqC;EXtDrC;;AWwDI;EXzDJ,SW0DuC;EXzDvC;;AW6DE;EACE;;AAGF;EAGE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAIJ;EACE;EACA;EACA,WAhHU;EAiHV,YAjHU;EAkHV;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAGA;EACE;;AAIJ;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;;AAKN;EACE;EACA;;AAEA;EACE;EACA;;AAEA;EACE;EACA;;AAEA;EACE;;;AC1KR;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIA;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEE;EACA;EACA;;AAEA;EACE;EACA;;AAKN;EACE;EACA;;AAGF;EACE;EZ5CF,SY6CmC;EZ5CnC;;AY+CA;EACE;EACA;;;AAIJ;EACE;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EAGE;EACA;EACA;;AAGF;EZ3FA,SY4FmC;EZ3FnC;EY4FE;EACA;EACA;EACA;;AAGA;EZnGF,SYoGqC;EZnGrC;;AYuGA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AC1IF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EAGE;EACA;EACA;;AAGF;EACE;;AAGF;EAEE;EACA;;AAGF;EACE;EACA;EACA;;;AAIJ;EACE;EACA;EACA;EACA;;;AC1DF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIA;EACE;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAIA;EACE;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;Ed5CE,Sc6CiC;Ed5CjC;Ec8CA;EACA;EACA;EACA;;;AAGF;EdrDE,ScsDiC;EdrDjC;EcuDA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAIJ;EAGE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAIJ;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACjIF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAGF;EfEF,SeDqC;EfErC;EeDI;EACA;EACA;;AAIJ;EACE;EACA;EACA;;;ACjCJ;EACE;EACA;EACA;;AAEA;EACE;;;AAGJ;EACE;;AAEA;EACE;EACA;;AACA;EACE;;AAGJ;EACE;;AACA;EACE;;AAGJ;EACE;EACA;EACA;EACA;;;AC3BF;EAGE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAIJ;EACE;;AAEF;EACE;EACA;;AACA;EACE;;;AC/CN;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;EACE;EACA;EACA;EACA;AACA;EACA;EACA;;;AAEF;EACE;;;AAGF;AACA;AAAA;EAEE;EACA;EACA;;;AAGF;AACA;EACE;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAEF;AAAA;EAEE;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAUE;EACA;EACA;EACA;;;AAGF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;;;AAGF;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EAUA;EAUA;EAUA;EAYA;EAUA;;;AAYF;AAAA;AAAA;AAAA;AAIA;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAGF;EACE;;;AAGF;AACA;AAAA;EAEE;EACA;;;AAEF;EACE;;;AAGF;AACA;EACE;IACE;;EAEF;IACE;;EAEF;IACE;;;AAGJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAMA;EACE;EACA;EACA;EACA;;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EAME,MACE;EAMF;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;AAAA;AAAA;EAGE;;;AAGF;AACA;EACE;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;AAAA;EAEE;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;;;AAGF;AACA;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;AAAA;EAEE;;;AAEF;EACE;;;AAGF;AACA;EACE;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;AACA;AAAA;EAEE;;;AAGF;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;AAAA;EAEE;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAEF;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA,oBACE;EAEF,iBACE;EAEF,gBACE;EAEF,eACE;EAEF,YACE;;;AAGJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;;;AAGF;AAAA;EAEE;;;AAGF;AAAA;AAAA;EAGE;EACA;;;AAEF;AAAA;AAAA;EAGE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AC5lBF;EACE;EACA;EACA;;;AAIA;AAAA;EAEE;;AAEF;AAAA;EAEE;;AAEF;AAAA;EAEE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;;AAEF;AAAA;EAEE;;AAEF;EACE;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;;AAEF;EACE;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EAGE;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE;EACA;EACA;EACA;;AAEF;AAAA;EAEE;;AAGF;AAAA;EAEE;;;AxBxDE;EACE,kBAPI;;AAUN;EACE,OAXI;;AAaJ;EACE,OAdE;;AAMN;EACE,kBAPI;;AAUN;EACE,OAXI;;AAaJ;EACE,OAdE;;AAMN;EACE,kBAPI;;AAUN;EACE,OAXI;;AAaJ;EACE,OAdE;;AAMN;EACE,kBAPI;;AAUN;EACE,OAXI;;AAaJ;EACE,OAdE;;AAMN;EACE,kBAPI;;AAUN;EACE,OAXI;;AAaJ;EACE,OAdE;;;AAqBZ;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EAIE;EACA;;;AAGF;EACE;;;AAGF;EAGE;EACA;EACA;EACA;;;AAIF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;AAQE;EACE;;AAGF;EKrGA,kBLsGuC;EKrGvC,oBLqGuC;EKpGvC,qBLoGuC;EKnGvC,iBLmGuC;EKlGvC,gBLkGuC;EKjGvC,aLiGuC;EK7FvC,SL8FmC;EK7FnC;;ALgGA;EACE;EACA;EACA;EACA;EACA;;;AAIJ;AAAA;EK1GE,SL4GiC;EK3GjC;EL4GA;;;AAGF;EACE;;;AAGF;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAIJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAIJ;EACE;;;AH9JF;A4BJA;ECFE;EACA;EACA;EACA;EACA;EDAA;;AACA;EACE,a1BkBS;;A0BhBX;EACE;;AAEF;EACE;EACA,Y1BPkB;E0BQlB;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;;AAGF;EACE,kB1BrBiB;;A0BuBnB;EACE,O1B3Ba;;;A0B+BjB;EACE;;;AAKA;EACI,S1BlBoB;E0BmBpB;EACA;;AAEA;EACE;;;AAKR;AACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIF;EACE;EACA;EACA;EACA;;AACA;EACE;;AACA;EACE;;AAGJ;EACE;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA,kB1BpFW;;A0BqFX;EACE;;AAEF;EACE;EACA;EACA;;AAGJ;EACE;EACA;;;AAIJ;AAAA;AAAA;EAGE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,kB1B5GoB;E0B6GpB;EACA;;AACA;AAAA;AAAA;EACE;EACA;;AAEF;AAAA;AAAA;EACE,kB1BrHiB;;;A0ByHrB;AAAA;EAEE;EACA;;;AAGF;EACE,kB1B/HoB;;;A0BkItB;EACE,kB1BxIa;;;A0B2If;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;AAAA;EAEE;;AACA;AAAA;EACE;;AAEF;AAAA;EACE;;;AAIJ;AAAA;EAEE;EACA;EACA;;AAEA;AAAA;EACE;EACA;EAEA;;AAEF;AAAA;EACE,c1BhLkB;;A0BkLpB;AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEF;AAAA;EACE;;AAEF;AAAA;EACE;EACA;;AACA;AAAA;EACE;EACA;EACA;;;AAOJ;AAAA;EACE;EACA;EACA;EACA,qB1B/MkB;E0BgNlB;EACA;;AAEF;AAAA;EACE,kB1BpNkB;;A0BsNpB;AAAA;AAAA;EAEE,O1B3NY;E0B4NZ,kB1B1NiB;;;A0B8NrB;EACE;EACA;;AACA;EACE;EACA;EACA;EACA;;AAEF;EACE,kB1BxOiB;E0ByOjB,O1B5Oa;E0B6Ob;EACA;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;EACA;;AAEF;EACE;;;AE3PJ;EDFE;EACA;EACA;EACA;EACA;ECAA;EACA,O5BHe;E4BIf;EACA;EACA,kB5BPa;E4BQb,S5BYS;E4BXT;EACA;EACA;;AACA;EACE;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;EACA,kB5BrBS;E4BsBT;EACA;EACA;;AACA;EACE,kB5BzBS;E4B0BT;;AAEF;EACE,kB5B9BO;E4B+BP;;AAEF;EACE,kB5BjCS;E4BkCT;;AAKJ;EACE;;AACA;EACE;EACA;EACA;EACA;;;AC9CR;EACE;EACA,M7BMgB;E6BLhB;EACA;EACA;EACA;EACA;EACA,Q7BKa;;;A8BZf;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;;;AAGF;EACE;EACA,kB9Bfa;E8BgBb,S9BGgB;E8BFhB;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;;AAEF;EACE;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;;AAEF;EACE,O9BnCc;;A8BqChB;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA,kB9B7CoB;E8B8CpB,O9BlDe;E8BmDf;;AACA;EACE;;AAEF;EACE,O9BtDc;;;A8B0DlB;EACE;EACA;;;AC/DA;EACE;EACA;EACA;EACA;EACA;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;EACA;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA,kB/B1BW;;;AgCKf;EACE;EACA;EACA;;;AAKF;EACE,OhCNgB;EgCOhB;;AACA;EACE;EACA;EACA;;AACA;EACE;;AAEF;EACE;EACA;;AACA;EACE,kBhCtBc;EgCuBd,OhCpBU;EgCqBV;;AAGJ;EACE,kBhC9BY;EgC+BZ;;AAGJ;EACE;EACA;EACA;EACA;EACA;;;AAKJ;EACE;;;AAEF;EACE,ShC9BwB;EgC+BxB;EACA;;;AAGF;EACE;;;AAIF;EACE,KhCvDa;EgCwDb,OhCtDkB;EgCuDlB,WhCtDqB;EgCuDrB;EACA,kBhC7DoB;;AgC8DpB;EACE;EACA;;AAEF;EACE;EACA;EACA;EACA,kBhC3EW;EgC4EX;;AACA;EACE,kBhC9ES;;AgCiFb;EACE;EACA;;AAED;EACG;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;;AACA;EACE;EACA;EACA;EACA;;AAGJ;EACE,OhC5GU;;;AiCFhB;EACE;;AAEF;EACE;EACA;EACA;;AACA;EACE;EACA;EACA,kBjCXS;;AiCaX;EACE;EACA;EACA,kBjCZe;EiCaf;EACA;;AACA;EACE,kBjCpBO;;AiCqBP;EACE,OjCnBQ;;AiCuBd;EACE,kBjCtBgB;EiCuBhB;;AACA;EACE,OjC3BU;;AiC8Bd;EACE;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;;AAEF;EACE,OjCjDY;;AiCoDhB;EACE;;ACxDJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,kBlCNmB;;;AmCNrB;EAAa;;;AAA+J;EAAa;EAAkB;EAAM;EAAO;EAAW;EAAY;;;AAAiB;EAAa;EAAU;EAAiB;EAAiB;EAAyB;EAAsB;;;AAAY;EAAmB;EAAsB;EAAmB;EAAuC;EAAsB;EAAkB;EAAW;EAAY;EAAiB;EAAiB;EAAe;;;AAAe;EAAqB;EAAkB;;;AAAU;EAAkB;EAAiC;EAAkB;EAAW;;;AAAY;EAAwC;;;AAAuC;EAAkB;;;AAAa;EAAwC;;;AAAc;EAAqB;EAAW;EAAY;EAAiB;EAAsB;EAAuC;EAAgB;EAAmB;;;AAAe;EAAuC;EAAU;;;ACcpmC;EAPE;EACA;EACA;EACA;EACA;EACA;EAIA,cpCbe;;;AoCejB;EAXE;EACA;EACA;EACA;EACA;EACA;EAQA,kBpCjBe;;;AoCmBjB;EAfE;EACA;EACA;EACA;EACA;EACA;EAYA,qBpCrBe;;;AoCuBjB;EAnBE;EACA;EACA;EACA;EACA;EACA;EAgBA,mBpCzBe;;;AoC2BjB;EAvBE;EACA;EACA;EACA;EACA;EACA;EAoBA,oBpC7Be;;;AoCiCjB;EACE;EACA;;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOE;EACA;;;AAEF;AAAA;EAEE;EACA;;;AAGF;EACE;;;AAIF;EACE;IACE;;EAEF;IACE;;;AAKF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA,kBpChFY;;AoCmFd;EACE,kBpCpFY;;AoCuFd;EACE,kBpCxFY;;AoC2Fd;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA,OpChHW;;AoCmHb;EACE,OpClHY;;AoCsHhB;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAKN;EACE;EACA,cpCnLc;EoCoLd,kBpCrLa;;AoCwLf;EACE;;AAIJ;EACE;;AAGF;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAIJ;EACE,kBpClNU;;;AoCwNhB;EACE;EACA;EACA;EACA;EACA;;;AC9NF;EACE;;;AAOI;EACE,kBAHgB;;AAMlB;EACE,OAPgB;;AAShB;EACE,OAVc;;AAElB;EACE,kBAHgB;;AAMlB;EACE,OAPgB;;AAShB;EACE,OAVc;;AAElB;EACE,kBAHgB;;AAMlB;EACE,OAPgB;;AAShB;EACE,OAVc;;AAElB;EACE,kBAHgB;;AAMlB;EACE,OAPgB;;AAShB;EACE,OAVc;;;AAiBxB;AAAA;AAAA;EAGE,MrCnBgB;;;AqCqBlB;AAAA;AAAA;AAAA;EAIE;;;AAEF;EACE;;;AAEF;EACE;;AACA;EACE;;;AAMJ;EACE,arCzBW;EqC0BX;;;AAIF;EACE,kBrCtDa;EqCuDb,OrCtDe;EqCuDf;EACA;;AACA;EACE;;;AAKJ;EACE,kBrC/Dc;;;AqCiEhB;EACE,crClEc;;;AqCoEhB;EACI,kBrCrEY;;;AqCuEhB;EACI;;;AAIJ;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAIF;EACE;EACA;EACA;EACA,kBrCnGa;EqCoGb;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAGF;AAAA;AAIA;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACA;EACC;;;AAGD;EACC;;;AAID;EACE;;;AAGF;EACE;;;AAGF;EACC;EACC;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAIF;EACI;;;AAEJ;AAAA;EAEI;EACA;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AC5NJ;AACA;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;AACA;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;AACA;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;AACA;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;AACA;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;AACA;EACE;EACA;EACA;EACA;EACA;EACA;;AxClCF;EACE;EACA;EACA;EACA;EACA;EACA;EACA","file":"admin.css"}
@@ -1,4 +0,0 @@
1
- declare const _exports: {
2
- "@silexlabs/grapesjs-filter-styles": {};
3
- };
4
- export = _exports;
@@ -1,4 +0,0 @@
1
- declare const _exports: {
2
- "@silexlabs/grapesjs-fonts": {};
3
- };
4
- export = _exports;
@@ -1,3 +0,0 @@
1
- export default function _default(editor: any): void;
2
- export const cmdGetCss: "get-fonts-css";
3
- export const cmdGetHtml: "get-fonts-html";
@@ -1,4 +0,0 @@
1
- export function refresh(editor: any, opts: any): void;
2
- export function getHtml(fonts: any, attr?: string): string;
3
- export const cmdOpenFonts: "open-fonts";
4
- export function fontsDialogPlugin(editor: any, opts: any): void;
@@ -1,4 +0,0 @@
1
- declare const _exports: {
2
- "@silexlabs/grapesjs-storage-rate-limit": {};
3
- };
4
- export = _exports;
@@ -1,4 +0,0 @@
1
- declare const _exports: {
2
- "@silexlabs/grapesjs-ui-suggest-classes": {};
3
- };
4
- export = _exports;