@elementor/editor-templates 4.1.0-729 → 4.1.0-730

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/index.d.mts CHANGED
@@ -4,4 +4,6 @@ declare function init(): void;
4
4
 
5
5
  declare function useLoadedTemplates(): _elementor_editor_elements.V1ElementData[][];
6
6
 
7
- export { init, useLoadedTemplates };
7
+ declare const isHandlingTemplateStyles: () => boolean;
8
+
9
+ export { init, isHandlingTemplateStyles, useLoadedTemplates };
package/dist/index.d.ts CHANGED
@@ -4,4 +4,6 @@ declare function init(): void;
4
4
 
5
5
  declare function useLoadedTemplates(): _elementor_editor_elements.V1ElementData[][];
6
6
 
7
- export { init, useLoadedTemplates };
7
+ declare const isHandlingTemplateStyles: () => boolean;
8
+
9
+ export { init, isHandlingTemplateStyles, useLoadedTemplates };
package/dist/index.js CHANGED
@@ -21,6 +21,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  var index_exports = {};
22
22
  __export(index_exports, {
23
23
  init: () => init,
24
+ isHandlingTemplateStyles: () => isHandlingTemplateStyles,
24
25
  useLoadedTemplates: () => useLoadedTemplates
25
26
  });
26
27
  module.exports = __toCommonJS(index_exports);
@@ -160,8 +161,16 @@ function extractStylesFromElement(element) {
160
161
  ];
161
162
  }
162
163
 
164
+ // src/utils.ts
165
+ var import_utils = require("@elementor/utils");
166
+ var MIN_PRO_VERSION_FOR_SELF_HANDLED_STYLES = "4.1";
167
+ var isHandlingTemplateStyles = () => (0, import_utils.isProActive)() && !(0, import_utils.isProAtLeast)(MIN_PRO_VERSION_FOR_SELF_HANDLED_STYLES);
168
+
163
169
  // src/init.ts
164
170
  function init() {
171
+ if (!isHandlingTemplateStyles()) {
172
+ return;
173
+ }
165
174
  (0, import_store6.__registerSlice)(slice);
166
175
  import_editor_styles_repository2.stylesRepository.register(templatesStylesProvider);
167
176
  (0, import_editor_v1_adapters2.registerDataHook)("after", "editor/documents/attach-preview", async () => {
@@ -177,6 +186,7 @@ function init() {
177
186
  // Annotate the CommonJS export names for ESM import in node:
178
187
  0 && (module.exports = {
179
188
  init,
189
+ isHandlingTemplateStyles,
180
190
  useLoadedTemplates
181
191
  });
182
192
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/init.ts","../src/load-templates.ts","../src/store.ts","../src/render-template-styles.tsx","../src/templates-styles-provider.ts","../src/use-loaded-templates.ts"],"sourcesContent":["export { init } from './init';\nexport { useLoadedTemplates } from './use-loaded-templates';\n","import { injectIntoLogic } from '@elementor/editor';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\nimport { registerDataHook } from '@elementor/editor-v1-adapters';\nimport { __registerSlice as registerSlice } from '@elementor/store';\n\nimport { loadTemplates, unloadTemplates } from './load-templates';\nimport { RenderTemplateStyles } from './render-template-styles';\nimport { slice } from './store';\nimport { clearTemplatesStyles, templatesStylesProvider } from './templates-styles-provider';\n\nexport function init() {\n\tregisterSlice( slice );\n\tstylesRepository.register( templatesStylesProvider );\n\n\tregisterDataHook( 'after', 'editor/documents/attach-preview', async () => {\n\t\tunloadTemplates();\n\t\tclearTemplatesStyles();\n\n\t\tawait loadTemplates();\n\t} );\n\n\tinjectIntoLogic( {\n\t\tid: 'templates-styles',\n\t\tcomponent: RenderTemplateStyles,\n\t} );\n}\n","import { type Document, getV1CurrentDocument } from '@elementor/editor-documents';\nimport { ajax, getCanvasIframeDocument } from '@elementor/editor-v1-adapters';\nimport { __dispatch as dispatch } from '@elementor/store';\n\nimport { slice } from './store';\n\nconst TEMPLATE_ATTRIBUTE = 'data-elementor-post-type=\"elementor_library\"';\nconst DOCUMENT_WRAPPER_ATTR = 'data-elementor-id';\n\nexport async function loadTemplates() {\n\tconst iframeDocument = getCanvasIframeDocument();\n\n\tif ( ! iframeDocument ) {\n\t\treturn;\n\t}\n\n\tconst currentDocumentId = getV1CurrentDocument()?.id;\n\tconst templateIds = getTemplateIds( iframeDocument, currentDocumentId );\n\n\tif ( ! templateIds.length ) {\n\t\treturn;\n\t}\n\n\tconst documents = await fetchDocuments( templateIds );\n\n\tdispatch( slice.actions.setTemplates( documents ) );\n}\n\nexport function unloadTemplates() {\n\tdispatch( slice.actions.clearTemplates() );\n}\n\nfunction getTemplateIds( iframeDocument: globalThis.Document, currentDocumentId?: number ): number[] {\n\tconst elements = [ ...iframeDocument.body.querySelectorAll< HTMLElement >( `[${ TEMPLATE_ATTRIBUTE }]` ) ];\n\n\tconst ids = elements\n\t\t.map( ( el ) => Number( el.getAttribute( DOCUMENT_WRAPPER_ATTR ) ) )\n\t\t.filter( ( id ) => ! isNaN( id ) && id !== currentDocumentId );\n\n\treturn [ ...new Set( ids ) ];\n}\n\nasync function fetchDocuments( ids: number[] ): Promise< Document[] > {\n\tconst results = await Promise.all(\n\t\tids.map( async ( id ) => {\n\t\t\ttry {\n\t\t\t\t// using ajax.load instead of the document-manager as the latter causes an issue when trying to edit a template\n\t\t\t\treturn await ajax.load< { id: number }, Document >( {\n\t\t\t\t\tdata: { id },\n\t\t\t\t\taction: 'get_document_config',\n\t\t\t\t\tunique_id: `template-${ id }`,\n\t\t\t\t} );\n\t\t\t} catch {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t} )\n\t);\n\n\treturn results.filter( ( doc ): doc is Document => doc !== null );\n}\n","import { type Document } from '@elementor/editor-documents';\nimport { type V1ElementData } from '@elementor/editor-elements';\nimport { __createSelector, __createSlice, type PayloadAction, type SliceState } from '@elementor/store';\n\ntype State = {\n\tentities: Record< Document[ 'id' ], V1ElementData[] >;\n};\n\nconst initialState: State = {\n\tentities: {},\n};\n\nexport const slice = __createSlice( {\n\tname: 'templates',\n\tinitialState,\n\treducers: {\n\t\tsetTemplates( state, action: PayloadAction< Document[] > ) {\n\t\t\taction.payload.forEach( ( doc ) => {\n\t\t\t\tstate.entities[ doc.id ] = doc.elements ?? [];\n\t\t\t} );\n\t\t},\n\n\t\tclearTemplates( state ) {\n\t\t\tstate.entities = {};\n\t\t},\n\t},\n} );\n\nexport type Slice = SliceState< typeof slice >;\n\nconst selectEntities = ( state: Slice ) => state.templates.entities;\n\nexport const selectTemplates = __createSelector( [ selectEntities ], ( entities ): V1ElementData[][] =>\n\tObject.values( entities )\n);\n","import { useEffect } from 'react';\nimport { type V1ElementData } from '@elementor/editor-elements';\nimport { type StyleDefinition } from '@elementor/editor-styles';\n\nimport { addTemplateStyles } from './templates-styles-provider';\nimport { useLoadedTemplates } from './use-loaded-templates';\n\nexport const RenderTemplateStyles = () => {\n\tconst templates = useLoadedTemplates();\n\n\tuseEffect( () => {\n\t\tconst styles = templates.flatMap( extractStylesFromDocument );\n\n\t\taddTemplateStyles( styles );\n\t}, [ templates ] );\n\n\treturn null;\n};\n\nfunction extractStylesFromDocument( elements: V1ElementData[] ): StyleDefinition[] {\n\tif ( ! elements.length ) {\n\t\treturn [];\n\t}\n\n\treturn elements.flatMap( extractStylesFromElement );\n}\n\nfunction extractStylesFromElement( element: V1ElementData ): StyleDefinition[] {\n\treturn [\n\t\t...Object.values( element.styles ?? {} ),\n\t\t...( element.elements ?? [] ).flatMap( extractStylesFromElement ),\n\t];\n}\n","import { type StyleDefinition } from '@elementor/editor-styles';\nimport { createStylesProvider } from '@elementor/editor-styles-repository';\n\nlet styles: StyleDefinition[] = [];\nconst listeners = new Set< () => void >();\n\nexport function addTemplateStyles( newStyles: StyleDefinition[] ) {\n\tstyles = [ ...styles, ...newStyles ];\n\tlisteners.forEach( ( cb ) => cb() );\n}\n\nexport function clearTemplatesStyles() {\n\tstyles = [];\n\tlisteners.forEach( ( cb ) => cb() );\n}\n\nexport const templatesStylesProvider = createStylesProvider( {\n\tkey: 'templates-styles',\n\tpriority: 50,\n\tsubscribe: ( cb ) => {\n\t\tlisteners.add( cb );\n\n\t\treturn () => {\n\t\t\tlisteners.delete( cb );\n\t\t};\n\t},\n\tactions: {\n\t\tall: () => styles,\n\t\tget: ( id ) => styles.find( ( style ) => style.id === id ) ?? null,\n\t},\n} );\n","import { __useSelector as useSelector } from '@elementor/store';\n\nimport { selectTemplates } from './store';\n\nexport function useLoadedTemplates() {\n\treturn useSelector( selectTemplates );\n}\n"],"mappings":"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","names":["import_editor_styles_repository","import_editor_v1_adapters","import_store","import_store","dispatch","import_store","useSelector","styles","registerSlice"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/init.ts","../src/load-templates.ts","../src/store.ts","../src/render-template-styles.tsx","../src/templates-styles-provider.ts","../src/use-loaded-templates.ts","../src/utils.ts"],"sourcesContent":["export { init } from './init';\nexport { useLoadedTemplates } from './use-loaded-templates';\nexport { isHandlingTemplateStyles } from './utils';\n","import { injectIntoLogic } from '@elementor/editor';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\nimport { registerDataHook } from '@elementor/editor-v1-adapters';\nimport { __registerSlice as registerSlice } from '@elementor/store';\n\nimport { loadTemplates, unloadTemplates } from './load-templates';\nimport { RenderTemplateStyles } from './render-template-styles';\nimport { slice } from './store';\nimport { clearTemplatesStyles, templatesStylesProvider } from './templates-styles-provider';\nimport { isHandlingTemplateStyles } from './utils';\n\nexport function init() {\n\tif ( ! isHandlingTemplateStyles() ) {\n\t\treturn;\n\t}\n\n\tregisterSlice( slice );\n\tstylesRepository.register( templatesStylesProvider );\n\n\tregisterDataHook( 'after', 'editor/documents/attach-preview', async () => {\n\t\tunloadTemplates();\n\t\tclearTemplatesStyles();\n\n\t\tawait loadTemplates();\n\t} );\n\n\tinjectIntoLogic( {\n\t\tid: 'templates-styles',\n\t\tcomponent: RenderTemplateStyles,\n\t} );\n}\n","import { type Document, getV1CurrentDocument } from '@elementor/editor-documents';\nimport { ajax, getCanvasIframeDocument } from '@elementor/editor-v1-adapters';\nimport { __dispatch as dispatch } from '@elementor/store';\n\nimport { slice } from './store';\n\nconst TEMPLATE_ATTRIBUTE = 'data-elementor-post-type=\"elementor_library\"';\nconst DOCUMENT_WRAPPER_ATTR = 'data-elementor-id';\n\nexport async function loadTemplates() {\n\tconst iframeDocument = getCanvasIframeDocument();\n\n\tif ( ! iframeDocument ) {\n\t\treturn;\n\t}\n\n\tconst currentDocumentId = getV1CurrentDocument()?.id;\n\tconst templateIds = getTemplateIds( iframeDocument, currentDocumentId );\n\n\tif ( ! templateIds.length ) {\n\t\treturn;\n\t}\n\n\tconst documents = await fetchDocuments( templateIds );\n\n\tdispatch( slice.actions.setTemplates( documents ) );\n}\n\nexport function unloadTemplates() {\n\tdispatch( slice.actions.clearTemplates() );\n}\n\nfunction getTemplateIds( iframeDocument: globalThis.Document, currentDocumentId?: number ): number[] {\n\tconst elements = [ ...iframeDocument.body.querySelectorAll< HTMLElement >( `[${ TEMPLATE_ATTRIBUTE }]` ) ];\n\n\tconst ids = elements\n\t\t.map( ( el ) => Number( el.getAttribute( DOCUMENT_WRAPPER_ATTR ) ) )\n\t\t.filter( ( id ) => ! isNaN( id ) && id !== currentDocumentId );\n\n\treturn [ ...new Set( ids ) ];\n}\n\nasync function fetchDocuments( ids: number[] ): Promise< Document[] > {\n\tconst results = await Promise.all(\n\t\tids.map( async ( id ) => {\n\t\t\ttry {\n\t\t\t\t// using ajax.load instead of the document-manager as the latter causes an issue when trying to edit a template\n\t\t\t\treturn await ajax.load< { id: number }, Document >( {\n\t\t\t\t\tdata: { id },\n\t\t\t\t\taction: 'get_document_config',\n\t\t\t\t\tunique_id: `template-${ id }`,\n\t\t\t\t} );\n\t\t\t} catch {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t} )\n\t);\n\n\treturn results.filter( ( doc ): doc is Document => doc !== null );\n}\n","import { type Document } from '@elementor/editor-documents';\nimport { type V1ElementData } from '@elementor/editor-elements';\nimport { __createSelector, __createSlice, type PayloadAction, type SliceState } from '@elementor/store';\n\ntype State = {\n\tentities: Record< Document[ 'id' ], V1ElementData[] >;\n};\n\nconst initialState: State = {\n\tentities: {},\n};\n\nexport const slice = __createSlice( {\n\tname: 'templates',\n\tinitialState,\n\treducers: {\n\t\tsetTemplates( state, action: PayloadAction< Document[] > ) {\n\t\t\taction.payload.forEach( ( doc ) => {\n\t\t\t\tstate.entities[ doc.id ] = doc.elements ?? [];\n\t\t\t} );\n\t\t},\n\n\t\tclearTemplates( state ) {\n\t\t\tstate.entities = {};\n\t\t},\n\t},\n} );\n\nexport type Slice = SliceState< typeof slice >;\n\nconst selectEntities = ( state: Slice ) => state.templates.entities;\n\nexport const selectTemplates = __createSelector( [ selectEntities ], ( entities ): V1ElementData[][] =>\n\tObject.values( entities )\n);\n","import { useEffect } from 'react';\nimport { type V1ElementData } from '@elementor/editor-elements';\nimport { type StyleDefinition } from '@elementor/editor-styles';\n\nimport { addTemplateStyles } from './templates-styles-provider';\nimport { useLoadedTemplates } from './use-loaded-templates';\n\nexport const RenderTemplateStyles = () => {\n\tconst templates = useLoadedTemplates();\n\n\tuseEffect( () => {\n\t\tconst styles = templates.flatMap( extractStylesFromDocument );\n\n\t\taddTemplateStyles( styles );\n\t}, [ templates ] );\n\n\treturn null;\n};\n\nfunction extractStylesFromDocument( elements: V1ElementData[] ): StyleDefinition[] {\n\tif ( ! elements.length ) {\n\t\treturn [];\n\t}\n\n\treturn elements.flatMap( extractStylesFromElement );\n}\n\nfunction extractStylesFromElement( element: V1ElementData ): StyleDefinition[] {\n\treturn [\n\t\t...Object.values( element.styles ?? {} ),\n\t\t...( element.elements ?? [] ).flatMap( extractStylesFromElement ),\n\t];\n}\n","import { type StyleDefinition } from '@elementor/editor-styles';\nimport { createStylesProvider } from '@elementor/editor-styles-repository';\n\nlet styles: StyleDefinition[] = [];\nconst listeners = new Set< () => void >();\n\nexport function addTemplateStyles( newStyles: StyleDefinition[] ) {\n\tstyles = [ ...styles, ...newStyles ];\n\tlisteners.forEach( ( cb ) => cb() );\n}\n\nexport function clearTemplatesStyles() {\n\tstyles = [];\n\tlisteners.forEach( ( cb ) => cb() );\n}\n\nexport const templatesStylesProvider = createStylesProvider( {\n\tkey: 'templates-styles',\n\tpriority: 50,\n\tsubscribe: ( cb ) => {\n\t\tlisteners.add( cb );\n\n\t\treturn () => {\n\t\t\tlisteners.delete( cb );\n\t\t};\n\t},\n\tactions: {\n\t\tall: () => styles,\n\t\tget: ( id ) => styles.find( ( style ) => style.id === id ) ?? null,\n\t},\n} );\n","import { __useSelector as useSelector } from '@elementor/store';\n\nimport { selectTemplates } from './store';\n\nexport function useLoadedTemplates() {\n\treturn useSelector( selectTemplates );\n}\n","import { isProActive, isProAtLeast } from '@elementor/utils';\n\nconst MIN_PRO_VERSION_FOR_SELF_HANDLED_STYLES = '4.1';\n\nexport const isHandlingTemplateStyles = () =>\n\tisProActive() && ! isProAtLeast( MIN_PRO_VERSION_FOR_SELF_HANDLED_STYLES );\n"],"mappings":"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","names":["import_editor_styles_repository","import_editor_v1_adapters","import_store","import_store","dispatch","import_store","useSelector","styles","registerSlice"]}
package/dist/index.mjs CHANGED
@@ -133,8 +133,16 @@ function extractStylesFromElement(element) {
133
133
  ];
134
134
  }
135
135
 
136
+ // src/utils.ts
137
+ import { isProActive, isProAtLeast } from "@elementor/utils";
138
+ var MIN_PRO_VERSION_FOR_SELF_HANDLED_STYLES = "4.1";
139
+ var isHandlingTemplateStyles = () => isProActive() && !isProAtLeast(MIN_PRO_VERSION_FOR_SELF_HANDLED_STYLES);
140
+
136
141
  // src/init.ts
137
142
  function init() {
143
+ if (!isHandlingTemplateStyles()) {
144
+ return;
145
+ }
138
146
  registerSlice(slice);
139
147
  stylesRepository.register(templatesStylesProvider);
140
148
  registerDataHook("after", "editor/documents/attach-preview", async () => {
@@ -149,6 +157,7 @@ function init() {
149
157
  }
150
158
  export {
151
159
  init,
160
+ isHandlingTemplateStyles,
152
161
  useLoadedTemplates
153
162
  };
154
163
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/init.ts","../src/load-templates.ts","../src/store.ts","../src/render-template-styles.tsx","../src/templates-styles-provider.ts","../src/use-loaded-templates.ts"],"sourcesContent":["import { injectIntoLogic } from '@elementor/editor';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\nimport { registerDataHook } from '@elementor/editor-v1-adapters';\nimport { __registerSlice as registerSlice } from '@elementor/store';\n\nimport { loadTemplates, unloadTemplates } from './load-templates';\nimport { RenderTemplateStyles } from './render-template-styles';\nimport { slice } from './store';\nimport { clearTemplatesStyles, templatesStylesProvider } from './templates-styles-provider';\n\nexport function init() {\n\tregisterSlice( slice );\n\tstylesRepository.register( templatesStylesProvider );\n\n\tregisterDataHook( 'after', 'editor/documents/attach-preview', async () => {\n\t\tunloadTemplates();\n\t\tclearTemplatesStyles();\n\n\t\tawait loadTemplates();\n\t} );\n\n\tinjectIntoLogic( {\n\t\tid: 'templates-styles',\n\t\tcomponent: RenderTemplateStyles,\n\t} );\n}\n","import { type Document, getV1CurrentDocument } from '@elementor/editor-documents';\nimport { ajax, getCanvasIframeDocument } from '@elementor/editor-v1-adapters';\nimport { __dispatch as dispatch } from '@elementor/store';\n\nimport { slice } from './store';\n\nconst TEMPLATE_ATTRIBUTE = 'data-elementor-post-type=\"elementor_library\"';\nconst DOCUMENT_WRAPPER_ATTR = 'data-elementor-id';\n\nexport async function loadTemplates() {\n\tconst iframeDocument = getCanvasIframeDocument();\n\n\tif ( ! iframeDocument ) {\n\t\treturn;\n\t}\n\n\tconst currentDocumentId = getV1CurrentDocument()?.id;\n\tconst templateIds = getTemplateIds( iframeDocument, currentDocumentId );\n\n\tif ( ! templateIds.length ) {\n\t\treturn;\n\t}\n\n\tconst documents = await fetchDocuments( templateIds );\n\n\tdispatch( slice.actions.setTemplates( documents ) );\n}\n\nexport function unloadTemplates() {\n\tdispatch( slice.actions.clearTemplates() );\n}\n\nfunction getTemplateIds( iframeDocument: globalThis.Document, currentDocumentId?: number ): number[] {\n\tconst elements = [ ...iframeDocument.body.querySelectorAll< HTMLElement >( `[${ TEMPLATE_ATTRIBUTE }]` ) ];\n\n\tconst ids = elements\n\t\t.map( ( el ) => Number( el.getAttribute( DOCUMENT_WRAPPER_ATTR ) ) )\n\t\t.filter( ( id ) => ! isNaN( id ) && id !== currentDocumentId );\n\n\treturn [ ...new Set( ids ) ];\n}\n\nasync function fetchDocuments( ids: number[] ): Promise< Document[] > {\n\tconst results = await Promise.all(\n\t\tids.map( async ( id ) => {\n\t\t\ttry {\n\t\t\t\t// using ajax.load instead of the document-manager as the latter causes an issue when trying to edit a template\n\t\t\t\treturn await ajax.load< { id: number }, Document >( {\n\t\t\t\t\tdata: { id },\n\t\t\t\t\taction: 'get_document_config',\n\t\t\t\t\tunique_id: `template-${ id }`,\n\t\t\t\t} );\n\t\t\t} catch {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t} )\n\t);\n\n\treturn results.filter( ( doc ): doc is Document => doc !== null );\n}\n","import { type Document } from '@elementor/editor-documents';\nimport { type V1ElementData } from '@elementor/editor-elements';\nimport { __createSelector, __createSlice, type PayloadAction, type SliceState } from '@elementor/store';\n\ntype State = {\n\tentities: Record< Document[ 'id' ], V1ElementData[] >;\n};\n\nconst initialState: State = {\n\tentities: {},\n};\n\nexport const slice = __createSlice( {\n\tname: 'templates',\n\tinitialState,\n\treducers: {\n\t\tsetTemplates( state, action: PayloadAction< Document[] > ) {\n\t\t\taction.payload.forEach( ( doc ) => {\n\t\t\t\tstate.entities[ doc.id ] = doc.elements ?? [];\n\t\t\t} );\n\t\t},\n\n\t\tclearTemplates( state ) {\n\t\t\tstate.entities = {};\n\t\t},\n\t},\n} );\n\nexport type Slice = SliceState< typeof slice >;\n\nconst selectEntities = ( state: Slice ) => state.templates.entities;\n\nexport const selectTemplates = __createSelector( [ selectEntities ], ( entities ): V1ElementData[][] =>\n\tObject.values( entities )\n);\n","import { useEffect } from 'react';\nimport { type V1ElementData } from '@elementor/editor-elements';\nimport { type StyleDefinition } from '@elementor/editor-styles';\n\nimport { addTemplateStyles } from './templates-styles-provider';\nimport { useLoadedTemplates } from './use-loaded-templates';\n\nexport const RenderTemplateStyles = () => {\n\tconst templates = useLoadedTemplates();\n\n\tuseEffect( () => {\n\t\tconst styles = templates.flatMap( extractStylesFromDocument );\n\n\t\taddTemplateStyles( styles );\n\t}, [ templates ] );\n\n\treturn null;\n};\n\nfunction extractStylesFromDocument( elements: V1ElementData[] ): StyleDefinition[] {\n\tif ( ! elements.length ) {\n\t\treturn [];\n\t}\n\n\treturn elements.flatMap( extractStylesFromElement );\n}\n\nfunction extractStylesFromElement( element: V1ElementData ): StyleDefinition[] {\n\treturn [\n\t\t...Object.values( element.styles ?? {} ),\n\t\t...( element.elements ?? [] ).flatMap( extractStylesFromElement ),\n\t];\n}\n","import { type StyleDefinition } from '@elementor/editor-styles';\nimport { createStylesProvider } from '@elementor/editor-styles-repository';\n\nlet styles: StyleDefinition[] = [];\nconst listeners = new Set< () => void >();\n\nexport function addTemplateStyles( newStyles: StyleDefinition[] ) {\n\tstyles = [ ...styles, ...newStyles ];\n\tlisteners.forEach( ( cb ) => cb() );\n}\n\nexport function clearTemplatesStyles() {\n\tstyles = [];\n\tlisteners.forEach( ( cb ) => cb() );\n}\n\nexport const templatesStylesProvider = createStylesProvider( {\n\tkey: 'templates-styles',\n\tpriority: 50,\n\tsubscribe: ( cb ) => {\n\t\tlisteners.add( cb );\n\n\t\treturn () => {\n\t\t\tlisteners.delete( cb );\n\t\t};\n\t},\n\tactions: {\n\t\tall: () => styles,\n\t\tget: ( id ) => styles.find( ( style ) => style.id === id ) ?? null,\n\t},\n} );\n","import { __useSelector as useSelector } from '@elementor/store';\n\nimport { selectTemplates } from './store';\n\nexport function useLoadedTemplates() {\n\treturn useSelector( selectTemplates );\n}\n"],"mappings":"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","names":["styles"]}
1
+ {"version":3,"sources":["../src/init.ts","../src/load-templates.ts","../src/store.ts","../src/render-template-styles.tsx","../src/templates-styles-provider.ts","../src/use-loaded-templates.ts","../src/utils.ts"],"sourcesContent":["import { injectIntoLogic } from '@elementor/editor';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\nimport { registerDataHook } from '@elementor/editor-v1-adapters';\nimport { __registerSlice as registerSlice } from '@elementor/store';\n\nimport { loadTemplates, unloadTemplates } from './load-templates';\nimport { RenderTemplateStyles } from './render-template-styles';\nimport { slice } from './store';\nimport { clearTemplatesStyles, templatesStylesProvider } from './templates-styles-provider';\nimport { isHandlingTemplateStyles } from './utils';\n\nexport function init() {\n\tif ( ! isHandlingTemplateStyles() ) {\n\t\treturn;\n\t}\n\n\tregisterSlice( slice );\n\tstylesRepository.register( templatesStylesProvider );\n\n\tregisterDataHook( 'after', 'editor/documents/attach-preview', async () => {\n\t\tunloadTemplates();\n\t\tclearTemplatesStyles();\n\n\t\tawait loadTemplates();\n\t} );\n\n\tinjectIntoLogic( {\n\t\tid: 'templates-styles',\n\t\tcomponent: RenderTemplateStyles,\n\t} );\n}\n","import { type Document, getV1CurrentDocument } from '@elementor/editor-documents';\nimport { ajax, getCanvasIframeDocument } from '@elementor/editor-v1-adapters';\nimport { __dispatch as dispatch } from '@elementor/store';\n\nimport { slice } from './store';\n\nconst TEMPLATE_ATTRIBUTE = 'data-elementor-post-type=\"elementor_library\"';\nconst DOCUMENT_WRAPPER_ATTR = 'data-elementor-id';\n\nexport async function loadTemplates() {\n\tconst iframeDocument = getCanvasIframeDocument();\n\n\tif ( ! iframeDocument ) {\n\t\treturn;\n\t}\n\n\tconst currentDocumentId = getV1CurrentDocument()?.id;\n\tconst templateIds = getTemplateIds( iframeDocument, currentDocumentId );\n\n\tif ( ! templateIds.length ) {\n\t\treturn;\n\t}\n\n\tconst documents = await fetchDocuments( templateIds );\n\n\tdispatch( slice.actions.setTemplates( documents ) );\n}\n\nexport function unloadTemplates() {\n\tdispatch( slice.actions.clearTemplates() );\n}\n\nfunction getTemplateIds( iframeDocument: globalThis.Document, currentDocumentId?: number ): number[] {\n\tconst elements = [ ...iframeDocument.body.querySelectorAll< HTMLElement >( `[${ TEMPLATE_ATTRIBUTE }]` ) ];\n\n\tconst ids = elements\n\t\t.map( ( el ) => Number( el.getAttribute( DOCUMENT_WRAPPER_ATTR ) ) )\n\t\t.filter( ( id ) => ! isNaN( id ) && id !== currentDocumentId );\n\n\treturn [ ...new Set( ids ) ];\n}\n\nasync function fetchDocuments( ids: number[] ): Promise< Document[] > {\n\tconst results = await Promise.all(\n\t\tids.map( async ( id ) => {\n\t\t\ttry {\n\t\t\t\t// using ajax.load instead of the document-manager as the latter causes an issue when trying to edit a template\n\t\t\t\treturn await ajax.load< { id: number }, Document >( {\n\t\t\t\t\tdata: { id },\n\t\t\t\t\taction: 'get_document_config',\n\t\t\t\t\tunique_id: `template-${ id }`,\n\t\t\t\t} );\n\t\t\t} catch {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t} )\n\t);\n\n\treturn results.filter( ( doc ): doc is Document => doc !== null );\n}\n","import { type Document } from '@elementor/editor-documents';\nimport { type V1ElementData } from '@elementor/editor-elements';\nimport { __createSelector, __createSlice, type PayloadAction, type SliceState } from '@elementor/store';\n\ntype State = {\n\tentities: Record< Document[ 'id' ], V1ElementData[] >;\n};\n\nconst initialState: State = {\n\tentities: {},\n};\n\nexport const slice = __createSlice( {\n\tname: 'templates',\n\tinitialState,\n\treducers: {\n\t\tsetTemplates( state, action: PayloadAction< Document[] > ) {\n\t\t\taction.payload.forEach( ( doc ) => {\n\t\t\t\tstate.entities[ doc.id ] = doc.elements ?? [];\n\t\t\t} );\n\t\t},\n\n\t\tclearTemplates( state ) {\n\t\t\tstate.entities = {};\n\t\t},\n\t},\n} );\n\nexport type Slice = SliceState< typeof slice >;\n\nconst selectEntities = ( state: Slice ) => state.templates.entities;\n\nexport const selectTemplates = __createSelector( [ selectEntities ], ( entities ): V1ElementData[][] =>\n\tObject.values( entities )\n);\n","import { useEffect } from 'react';\nimport { type V1ElementData } from '@elementor/editor-elements';\nimport { type StyleDefinition } from '@elementor/editor-styles';\n\nimport { addTemplateStyles } from './templates-styles-provider';\nimport { useLoadedTemplates } from './use-loaded-templates';\n\nexport const RenderTemplateStyles = () => {\n\tconst templates = useLoadedTemplates();\n\n\tuseEffect( () => {\n\t\tconst styles = templates.flatMap( extractStylesFromDocument );\n\n\t\taddTemplateStyles( styles );\n\t}, [ templates ] );\n\n\treturn null;\n};\n\nfunction extractStylesFromDocument( elements: V1ElementData[] ): StyleDefinition[] {\n\tif ( ! elements.length ) {\n\t\treturn [];\n\t}\n\n\treturn elements.flatMap( extractStylesFromElement );\n}\n\nfunction extractStylesFromElement( element: V1ElementData ): StyleDefinition[] {\n\treturn [\n\t\t...Object.values( element.styles ?? {} ),\n\t\t...( element.elements ?? [] ).flatMap( extractStylesFromElement ),\n\t];\n}\n","import { type StyleDefinition } from '@elementor/editor-styles';\nimport { createStylesProvider } from '@elementor/editor-styles-repository';\n\nlet styles: StyleDefinition[] = [];\nconst listeners = new Set< () => void >();\n\nexport function addTemplateStyles( newStyles: StyleDefinition[] ) {\n\tstyles = [ ...styles, ...newStyles ];\n\tlisteners.forEach( ( cb ) => cb() );\n}\n\nexport function clearTemplatesStyles() {\n\tstyles = [];\n\tlisteners.forEach( ( cb ) => cb() );\n}\n\nexport const templatesStylesProvider = createStylesProvider( {\n\tkey: 'templates-styles',\n\tpriority: 50,\n\tsubscribe: ( cb ) => {\n\t\tlisteners.add( cb );\n\n\t\treturn () => {\n\t\t\tlisteners.delete( cb );\n\t\t};\n\t},\n\tactions: {\n\t\tall: () => styles,\n\t\tget: ( id ) => styles.find( ( style ) => style.id === id ) ?? null,\n\t},\n} );\n","import { __useSelector as useSelector } from '@elementor/store';\n\nimport { selectTemplates } from './store';\n\nexport function useLoadedTemplates() {\n\treturn useSelector( selectTemplates );\n}\n","import { isProActive, isProAtLeast } from '@elementor/utils';\n\nconst MIN_PRO_VERSION_FOR_SELF_HANDLED_STYLES = '4.1';\n\nexport const isHandlingTemplateStyles = () =>\n\tisProActive() && ! isProAtLeast( MIN_PRO_VERSION_FOR_SELF_HANDLED_STYLES );\n"],"mappings":";AAAA,SAAS,uBAAuB;AAChC,SAAS,wBAAwB;AACjC,SAAS,wBAAwB;AACjC,SAAS,mBAAmB,qBAAqB;;;ACHjD,SAAwB,4BAA4B;AACpD,SAAS,MAAM,+BAA+B;AAC9C,SAAS,cAAc,gBAAgB;;;ACAvC,SAAS,kBAAkB,qBAA0D;AAMrF,IAAM,eAAsB;AAAA,EAC3B,UAAU,CAAC;AACZ;AAEO,IAAM,QAAQ,cAAe;AAAA,EACnC,MAAM;AAAA,EACN;AAAA,EACA,UAAU;AAAA,IACT,aAAc,OAAO,QAAsC;AAC1D,aAAO,QAAQ,QAAS,CAAE,QAAS;AAClC,cAAM,SAAU,IAAI,EAAG,IAAI,IAAI,YAAY,CAAC;AAAA,MAC7C,CAAE;AAAA,IACH;AAAA,IAEA,eAAgB,OAAQ;AACvB,YAAM,WAAW,CAAC;AAAA,IACnB;AAAA,EACD;AACD,CAAE;AAIF,IAAM,iBAAiB,CAAE,UAAkB,MAAM,UAAU;AAEpD,IAAM,kBAAkB;AAAA,EAAkB,CAAE,cAAe;AAAA,EAAG,CAAE,aACtE,OAAO,OAAQ,QAAS;AACzB;;;AD5BA,IAAM,qBAAqB;AAC3B,IAAM,wBAAwB;AAE9B,eAAsB,gBAAgB;AACrC,QAAM,iBAAiB,wBAAwB;AAE/C,MAAK,CAAE,gBAAiB;AACvB;AAAA,EACD;AAEA,QAAM,oBAAoB,qBAAqB,GAAG;AAClD,QAAM,cAAc,eAAgB,gBAAgB,iBAAkB;AAEtE,MAAK,CAAE,YAAY,QAAS;AAC3B;AAAA,EACD;AAEA,QAAM,YAAY,MAAM,eAAgB,WAAY;AAEpD,WAAU,MAAM,QAAQ,aAAc,SAAU,CAAE;AACnD;AAEO,SAAS,kBAAkB;AACjC,WAAU,MAAM,QAAQ,eAAe,CAAE;AAC1C;AAEA,SAAS,eAAgB,gBAAqC,mBAAuC;AACpG,QAAM,WAAW,CAAE,GAAG,eAAe,KAAK,iBAAiC,IAAK,kBAAmB,GAAI,CAAE;AAEzG,QAAM,MAAM,SACV,IAAK,CAAE,OAAQ,OAAQ,GAAG,aAAc,qBAAsB,CAAE,CAAE,EAClE,OAAQ,CAAE,OAAQ,CAAE,MAAO,EAAG,KAAK,OAAO,iBAAkB;AAE9D,SAAO,CAAE,GAAG,IAAI,IAAK,GAAI,CAAE;AAC5B;AAEA,eAAe,eAAgB,KAAuC;AACrE,QAAM,UAAU,MAAM,QAAQ;AAAA,IAC7B,IAAI,IAAK,OAAQ,OAAQ;AACxB,UAAI;AAEH,eAAO,MAAM,KAAK,KAAkC;AAAA,UACnD,MAAM,EAAE,GAAG;AAAA,UACX,QAAQ;AAAA,UACR,WAAW,YAAa,EAAG;AAAA,QAC5B,CAAE;AAAA,MACH,QAAQ;AACP,eAAO;AAAA,MACR;AAAA,IACD,CAAE;AAAA,EACH;AAEA,SAAO,QAAQ,OAAQ,CAAE,QAA0B,QAAQ,IAAK;AACjE;;;AE3DA,SAAS,iBAAiB;;;ACC1B,SAAS,4BAA4B;AAErC,IAAI,SAA4B,CAAC;AACjC,IAAM,YAAY,oBAAI,IAAkB;AAEjC,SAAS,kBAAmB,WAA+B;AACjE,WAAS,CAAE,GAAG,QAAQ,GAAG,SAAU;AACnC,YAAU,QAAS,CAAE,OAAQ,GAAG,CAAE;AACnC;AAEO,SAAS,uBAAuB;AACtC,WAAS,CAAC;AACV,YAAU,QAAS,CAAE,OAAQ,GAAG,CAAE;AACnC;AAEO,IAAM,0BAA0B,qBAAsB;AAAA,EAC5D,KAAK;AAAA,EACL,UAAU;AAAA,EACV,WAAW,CAAE,OAAQ;AACpB,cAAU,IAAK,EAAG;AAElB,WAAO,MAAM;AACZ,gBAAU,OAAQ,EAAG;AAAA,IACtB;AAAA,EACD;AAAA,EACA,SAAS;AAAA,IACR,KAAK,MAAM;AAAA,IACX,KAAK,CAAE,OAAQ,OAAO,KAAM,CAAE,UAAW,MAAM,OAAO,EAAG,KAAK;AAAA,EAC/D;AACD,CAAE;;;AC9BF,SAAS,iBAAiB,mBAAmB;AAItC,SAAS,qBAAqB;AACpC,SAAO,YAAa,eAAgB;AACrC;;;AFCO,IAAM,uBAAuB,MAAM;AACzC,QAAM,YAAY,mBAAmB;AAErC,YAAW,MAAM;AAChB,UAAMA,UAAS,UAAU,QAAS,yBAA0B;AAE5D,sBAAmBA,OAAO;AAAA,EAC3B,GAAG,CAAE,SAAU,CAAE;AAEjB,SAAO;AACR;AAEA,SAAS,0BAA2B,UAA+C;AAClF,MAAK,CAAE,SAAS,QAAS;AACxB,WAAO,CAAC;AAAA,EACT;AAEA,SAAO,SAAS,QAAS,wBAAyB;AACnD;AAEA,SAAS,yBAA0B,SAA4C;AAC9E,SAAO;AAAA,IACN,GAAG,OAAO,OAAQ,QAAQ,UAAU,CAAC,CAAE;AAAA,IACvC,IAAK,QAAQ,YAAY,CAAC,GAAI,QAAS,wBAAyB;AAAA,EACjE;AACD;;;AGhCA,SAAS,aAAa,oBAAoB;AAE1C,IAAM,0CAA0C;AAEzC,IAAM,2BAA2B,MACvC,YAAY,KAAK,CAAE,aAAc,uCAAwC;;;ANMnE,SAAS,OAAO;AACtB,MAAK,CAAE,yBAAyB,GAAI;AACnC;AAAA,EACD;AAEA,gBAAe,KAAM;AACrB,mBAAiB,SAAU,uBAAwB;AAEnD,mBAAkB,SAAS,mCAAmC,YAAY;AACzE,oBAAgB;AAChB,yBAAqB;AAErB,UAAM,cAAc;AAAA,EACrB,CAAE;AAEF,kBAAiB;AAAA,IAChB,IAAI;AAAA,IACJ,WAAW;AAAA,EACZ,CAAE;AACH;","names":["styles"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elementor/editor-templates",
3
- "version": "4.1.0-729",
3
+ "version": "4.1.0-730",
4
4
  "private": false,
5
5
  "author": "Elementor Team",
6
6
  "homepage": "https://elementor.com/",
@@ -39,11 +39,12 @@
39
39
  "dev": "tsup --config=../../tsup.dev.ts"
40
40
  },
41
41
  "dependencies": {
42
- "@elementor/editor": "4.1.0-729",
43
- "@elementor/editor-documents": "4.1.0-729",
44
- "@elementor/editor-styles-repository": "4.1.0-729",
45
- "@elementor/editor-v1-adapters": "4.1.0-729",
46
- "@elementor/store": "4.1.0-729"
42
+ "@elementor/editor": "4.1.0-730",
43
+ "@elementor/editor-documents": "4.1.0-730",
44
+ "@elementor/editor-styles-repository": "4.1.0-730",
45
+ "@elementor/editor-v1-adapters": "4.1.0-730",
46
+ "@elementor/store": "4.1.0-730",
47
+ "@elementor/utils": "4.1.0-730"
47
48
  },
48
49
  "devDependencies": {
49
50
  "tsup": "^8.3.5"
package/src/index.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export { init } from './init';
2
2
  export { useLoadedTemplates } from './use-loaded-templates';
3
+ export { isHandlingTemplateStyles } from './utils';
package/src/init.ts CHANGED
@@ -7,8 +7,13 @@ import { loadTemplates, unloadTemplates } from './load-templates';
7
7
  import { RenderTemplateStyles } from './render-template-styles';
8
8
  import { slice } from './store';
9
9
  import { clearTemplatesStyles, templatesStylesProvider } from './templates-styles-provider';
10
+ import { isHandlingTemplateStyles } from './utils';
10
11
 
11
12
  export function init() {
13
+ if ( ! isHandlingTemplateStyles() ) {
14
+ return;
15
+ }
16
+
12
17
  registerSlice( slice );
13
18
  stylesRepository.register( templatesStylesProvider );
14
19
 
package/src/utils.ts ADDED
@@ -0,0 +1,6 @@
1
+ import { isProActive, isProAtLeast } from '@elementor/utils';
2
+
3
+ const MIN_PRO_VERSION_FOR_SELF_HANDLED_STYLES = '4.1';
4
+
5
+ export const isHandlingTemplateStyles = () =>
6
+ isProActive() && ! isProAtLeast( MIN_PRO_VERSION_FOR_SELF_HANDLED_STYLES );