@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 +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +9 -0
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -6
- package/src/index.ts +1 -0
- package/src/init.ts +5 -0
- package/src/utils.ts +6 -0
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
|
-
|
|
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
|
-
|
|
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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
|
|
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
|
package/dist/index.mjs.map
CHANGED
|
@@ -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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
|
|
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":"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","names":["styles"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elementor/editor-templates",
|
|
3
|
-
"version": "4.1.0-
|
|
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-
|
|
43
|
-
"@elementor/editor-documents": "4.1.0-
|
|
44
|
-
"@elementor/editor-styles-repository": "4.1.0-
|
|
45
|
-
"@elementor/editor-v1-adapters": "4.1.0-
|
|
46
|
-
"@elementor/store": "4.1.0-
|
|
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
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