← All changes
|
assets/js/packages/editor-templates/editor-templates.js
+2
-164
4.3.3
→
4.0.0-dev4
View file →
| @@ -1,165 +1,3 @@ | ||
| 1 | -(function(_elementor_editor, _elementor_editor_styles_repository, _elementor_editor_v1_adapters, _elementor_store, _elementor_editor_documents, react, _elementor_utils) { | |
| 2 | - | |
| 3 | -//#region \0rolldown/runtime.js | |
| 4 | - var __defProp = Object.defineProperty; | |
| 5 | - var __name = (target, value) => __defProp(target, "name", { | |
| 6 | - value, | |
| 7 | - configurable: true | |
| 8 | - }); | |
| 9 | - var __exportAll = (all, no_symbols) => { | |
| 10 | - let target = {}; | |
| 11 | - for (var name in all) { | |
| 12 | - __defProp(target, name, { | |
| 13 | - get: all[name], | |
| 14 | - enumerable: true | |
| 15 | - }); | |
| 16 | - } | |
| 17 | - if (!no_symbols) { | |
| 18 | - __defProp(target, Symbol.toStringTag, { value: "Module" }); | |
| 19 | - } | |
| 20 | - return target; | |
| 21 | - }; | |
| 22 | - | |
| 23 | -//#endregion | |
| 24 | - | |
| 25 | -//#region packages/packages/core/editor-templates/src/store.ts | |
| 26 | - var initialState = { entities: {} }; | |
| 27 | - var slice = (0, _elementor_store.__createSlice)({ | |
| 28 | - name: "templates", | |
| 29 | - initialState, | |
| 30 | - reducers: { | |
| 31 | - setTemplates(state, action) { | |
| 32 | - action.payload.forEach((doc) => { | |
| 33 | - state.entities[doc.id] = doc.elements ?? []; | |
| 34 | - }); | |
| 35 | - }, | |
| 36 | - clearTemplates(state) { | |
| 37 | - state.entities = {}; | |
| 38 | - } | |
| 39 | - } | |
| 40 | - }); | |
| 41 | - var selectEntities = (state) => state.templates.entities; | |
| 42 | - var selectTemplates = (0, _elementor_store.__createSelector)([selectEntities], (entities) => Object.values(entities)); | |
| 43 | - | |
| 44 | -//#endregion | |
| 45 | -//#region packages/packages/core/editor-templates/src/load-templates.ts | |
| 46 | - var TEMPLATE_ATTRIBUTE = "data-elementor-post-type=\"elementor_library\""; | |
| 47 | - var DOCUMENT_WRAPPER_ATTR = "data-elementor-id"; | |
| 48 | - async function loadTemplates() { | |
| 49 | - const iframeDocument = (0, _elementor_editor_v1_adapters.getCanvasIframeDocument)(); | |
| 50 | - if (!iframeDocument) return; | |
| 51 | - const currentDocumentId = (0, _elementor_editor_documents.getV1CurrentDocument)()?.id; | |
| 52 | - const templateIds = getTemplateIds(iframeDocument, currentDocumentId); | |
| 53 | - if (!templateIds.length) return; | |
| 54 | - const documents = await fetchDocuments(templateIds); | |
| 55 | - (0, _elementor_store.__dispatch)(slice.actions.setTemplates(documents)); | |
| 56 | - } | |
| 57 | - function unloadTemplates() { | |
| 58 | - (0, _elementor_store.__dispatch)(slice.actions.clearTemplates()); | |
| 59 | - } | |
| 60 | - function getTemplateIds(iframeDocument, currentDocumentId) { | |
| 61 | - const ids = [...iframeDocument.body.querySelectorAll(`[${TEMPLATE_ATTRIBUTE}]`)].map((el) => Number(el.getAttribute(DOCUMENT_WRAPPER_ATTR))).filter((id) => !isNaN(id) && id !== currentDocumentId); | |
| 62 | - return [...new Set(ids)]; | |
| 63 | - } | |
| 64 | - async function fetchDocuments(ids) { | |
| 65 | - return (await Promise.all(ids.map(async (id) => { | |
| 66 | - try { | |
| 67 | - return await _elementor_editor_v1_adapters.ajax.load({ | |
| 68 | - data: { id }, | |
| 69 | - action: "get_document_config", | |
| 70 | - unique_id: `template-${id}` | |
| 71 | - }); | |
| 72 | - } catch { | |
| 73 | - return null; | |
| 74 | - } | |
| 75 | - }))).filter((doc) => doc !== null); | |
| 76 | - } | |
| 77 | - | |
| 78 | -//#endregion | |
| 79 | -//#region packages/packages/core/editor-templates/src/templates-styles-provider.ts | |
| 80 | - var styles = []; | |
| 81 | - var listeners = /* @__PURE__ */ new Set(); | |
| 82 | - function addTemplateStyles(newStyles) { | |
| 83 | - styles = [...styles, ...newStyles]; | |
| 84 | - listeners.forEach((cb) => cb()); | |
| 85 | - } | |
| 86 | - function clearTemplatesStyles() { | |
| 87 | - styles = []; | |
| 88 | - listeners.forEach((cb) => cb()); | |
| 89 | - } | |
| 90 | - var templatesStylesProvider = (0, _elementor_editor_styles_repository.createStylesProvider)({ | |
| 91 | - key: "templates-styles", | |
| 92 | - priority: 50, | |
| 93 | - subscribe: (cb) => { | |
| 94 | - listeners.add(cb); | |
| 95 | - return () => { | |
| 96 | - listeners.delete(cb); | |
| 97 | - }; | |
| 98 | - }, | |
| 99 | - actions: { | |
| 100 | - all: () => styles, | |
| 101 | - get: (id) => styles.find((style) => style.id === id) ?? null | |
| 102 | - } | |
| 103 | - }); | |
| 104 | - | |
| 105 | -//#endregion | |
| 106 | -//#region packages/packages/core/editor-templates/src/use-loaded-templates.ts | |
| 107 | - function useLoadedTemplates() { | |
| 108 | - return (0, _elementor_store.__useSelector)(selectTemplates); | |
| 109 | - } | |
| 110 | - | |
| 111 | -//#endregion | |
| 112 | -//#region packages/packages/core/editor-templates/src/render-template-styles.tsx | |
| 113 | - var RenderTemplateStyles = () => { | |
| 114 | - const templates = useLoadedTemplates(); | |
| 115 | - (0, react.useEffect)(() => { | |
| 116 | - addTemplateStyles(templates.flatMap(extractStylesFromDocument)); | |
| 117 | - }, [templates]); | |
| 118 | - return null; | |
| 119 | - }; | |
| 120 | - function extractStylesFromDocument(elements) { | |
| 121 | - if (!elements.length) return []; | |
| 122 | - return elements.flatMap(extractStylesFromElement); | |
| 123 | - } | |
| 124 | - function extractStylesFromElement(element) { | |
| 125 | - return [...Object.values(element.styles ?? {}), ...(element.elements ?? []).flatMap(extractStylesFromElement)]; | |
| 126 | - } | |
| 127 | - | |
| 128 | -//#endregion | |
| 129 | -//#region packages/packages/core/editor-templates/src/utils.ts | |
| 130 | - var MIN_PRO_VERSION_FOR_SELF_HANDLED_STYLES = "4.1"; | |
| 131 | - var isHandlingTemplateStyles = () => (0, _elementor_utils.isProActive)() && !(0, _elementor_utils.isProAtLeast)(MIN_PRO_VERSION_FOR_SELF_HANDLED_STYLES); | |
| 132 | - | |
| 133 | -//#endregion | |
| 134 | -//#region packages/packages/core/editor-templates/src/init.ts | |
| 135 | - function init() { | |
| 136 | - if (!isHandlingTemplateStyles()) return; | |
| 137 | - (0, _elementor_store.__registerSlice)(slice); | |
| 138 | - _elementor_editor_styles_repository.stylesRepository.register(templatesStylesProvider); | |
| 139 | - (0, _elementor_editor_v1_adapters.registerDataHook)("after", "editor/documents/attach-preview", async () => { | |
| 140 | - unloadTemplates(); | |
| 141 | - clearTemplatesStyles(); | |
| 142 | - await loadTemplates(); | |
| 143 | - }); | |
| 144 | - (0, _elementor_editor.injectIntoLogic)({ | |
| 145 | - id: "templates-styles", | |
| 146 | - component: RenderTemplateStyles | |
| 147 | - }); | |
| 148 | - } | |
| 149 | - | |
| 150 | -//#endregion | |
| 151 | -//#region packages/packages/core/editor-templates/src/index.ts | |
| 152 | - var src_exports = /* @__PURE__ */ __exportAll({ | |
| 153 | - init: () => init, | |
| 154 | - isHandlingTemplateStyles: () => isHandlingTemplateStyles, | |
| 155 | - useLoadedTemplates: () => useLoadedTemplates | |
| 156 | - }); | |
| 157 | - | |
| 158 | -//#endregion | |
| 159 | -//#region \0elementor-package-library-entry | |
| 160 | - (window.elementorV2 = window.elementorV2 || {}).editorTemplates = src_exports; | |
| 161 | - | |
| 162 | -//#endregion | |
| 163 | -})(elementorV2.editor, elementorV2.editorStylesRepository, elementorV2.editorV1Adapters, elementorV2.store, elementorV2.editorDocuments, React, elementorV2.utils); | |
| 164 | -window.elementorV2.editorTemplates?.init?.(); | |
| 1 | +/*! For license information please see editor-templates.js.LICENSE.txt */ | |
| 2 | +!function(){"use strict";var e={"./packages/packages/core/editor-templates/src/init.ts":function(e,t,r){r.r(t),r.d(t,{init:function(){return init}});var a=r("@elementor/editor"),s=r("@elementor/editor-styles-repository"),o=r("@elementor/editor-v1-adapters"),n=r("@elementor/store"),c=r("./packages/packages/core/editor-templates/src/load-templates.ts"),l=r("./packages/packages/core/editor-templates/src/render-template-styles.tsx"),i=r("./packages/packages/core/editor-templates/src/store.ts"),p=r("./packages/packages/core/editor-templates/src/templates-styles-provider.ts");function init(){(0,n.__registerSlice)(i.slice),s.stylesRepository.register(p.templatesStylesProvider),(0,o.registerDataHook)("after","editor/documents/attach-preview",async()=>{(0,c.unloadTemplates)(),(0,p.clearTemplatesStyles)(),await(0,c.loadTemplates)()}),(0,a.injectIntoLogic)({id:"templates-styles",component:l.RenderTemplateStyles})}},"./packages/packages/core/editor-templates/src/load-templates.ts":function(e,t,r){r.r(t),r.d(t,{loadTemplates:function(){return loadTemplates},unloadTemplates:function(){return unloadTemplates}});var a=r("@elementor/editor-documents"),s=r("@elementor/editor-v1-adapters"),o=r("@elementor/store"),n=r("./packages/packages/core/editor-templates/src/store.ts");const c='data-elementor-post-type="elementor_library"',l="data-elementor-id";async function loadTemplates(){const e=(0,s.getCanvasIframeDocument)();if(!e)return;const t=(0,a.getV1CurrentDocument)()?.id,r=function getTemplateIds(e,t){const r=[...e.body.querySelectorAll(`[${c}]`)],a=r.map(e=>Number(e.getAttribute(l))).filter(e=>!isNaN(e)&&e!==t);return[...new Set(a)]}(e,t);if(!r.length)return;const i=await async function fetchDocuments(e){return(await Promise.all(e.map(async e=>{try{return await s.ajax.load({data:{id:e},action:"get_document_config",unique_id:`template-${e}`})}catch{return null}}))).filter(e=>null!==e)}(r);(0,o.__dispatch)(n.slice.actions.setTemplates(i))}function unloadTemplates(){(0,o.__dispatch)(n.slice.actions.clearTemplates())}},"./packages/packages/core/editor-templates/src/render-template-styles.tsx":function(e,t,r){r.r(t),r.d(t,{RenderTemplateStyles:function(){return RenderTemplateStyles}});var a=r("react"),s=r("./packages/packages/core/editor-templates/src/templates-styles-provider.ts"),o=r("./packages/packages/core/editor-templates/src/use-loaded-templates.ts");const RenderTemplateStyles=()=>{const e=(0,o.useLoadedTemplates)();return(0,a.useEffect)(()=>{const t=e.flatMap(extractStylesFromDocument);(0,s.addTemplateStyles)(t)},[e]),null};function extractStylesFromDocument(e){return e.length?e.flatMap(extractStylesFromElement):[]}function extractStylesFromElement(e){return[...Object.values(e.styles??{}),...(e.elements??[]).flatMap(extractStylesFromElement)]}},"./packages/packages/core/editor-templates/src/store.ts":function(e,t,r){r.r(t),r.d(t,{selectTemplates:function(){return o},slice:function(){return s}});var a=r("@elementor/store");const s=(0,a.__createSlice)({name:"templates",initialState:{entities:{}},reducers:{setTemplates(e,t){t.payload.forEach(t=>{e.entities[t.id]=t.elements??[]})},clearTemplates(e){e.entities={}}}}),o=(0,a.__createSelector)([e=>e.templates.entities],e=>Object.values(e))},"./packages/packages/core/editor-templates/src/templates-styles-provider.ts":function(e,t,r){r.r(t),r.d(t,{addTemplateStyles:function(){return addTemplateStyles},clearTemplatesStyles:function(){return clearTemplatesStyles},templatesStylesProvider:function(){return n}});var a=r("@elementor/editor-styles-repository");let s=[];const o=new Set;function addTemplateStyles(e){s=[...s,...e],o.forEach(e=>e())}function clearTemplatesStyles(){s=[],o.forEach(e=>e())}const n=(0,a.createStylesProvider)({key:"templates-styles",priority:50,subscribe:e=>(o.add(e),()=>{o.delete(e)}),actions:{all:()=>s,get:e=>s.find(t=>t.id===e)??null}})},"./packages/packages/core/editor-templates/src/use-loaded-templates.ts":function(e,t,r){r.r(t),r.d(t,{useLoadedTemplates:function(){return useLoadedTemplates}});var a=r("@elementor/store"),s=r("./packages/packages/core/editor-templates/src/store.ts");function useLoadedTemplates(){return(0,a.__useSelector)(s.selectTemplates)}},"@elementor/editor":function(e){e.exports=window.elementorV2.editor},"@elementor/editor-documents":function(e){e.exports=window.elementorV2.editorDocuments},"@elementor/editor-styles-repository":function(e){e.exports=window.elementorV2.editorStylesRepository},"@elementor/editor-v1-adapters":function(e){e.exports=window.elementorV2.editorV1Adapters},"@elementor/store":function(e){e.exports=window.elementorV2.store},react:function(e){e.exports=window.React}},t={};function __webpack_require__(r){var a=t[r];if(void 0!==a)return a.exports;var s=t[r]={exports:{}};return e[r](s,s.exports,__webpack_require__),s.exports}__webpack_require__.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=function(e,t){for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},__webpack_require__.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};!function(){__webpack_require__.r(r),__webpack_require__.d(r,{init:function(){return e.init},useLoadedTemplates:function(){return t.useLoadedTemplates}});var e=__webpack_require__("./packages/packages/core/editor-templates/src/init.ts"),t=__webpack_require__("./packages/packages/core/editor-templates/src/use-loaded-templates.ts")}(),(window.elementorV2=window.elementorV2||{}).editorTemplates=r}(),window.elementorV2.editorTemplates?.init?.(); | |
| 165 | 3 | //# sourceMappingURL=editor-templates.js.map |