← All changes
|
assets/js/packages/editor-panels/editor-panels.js
+366
-2
4.1.0-dev3
→
trunk
View file →
| @@ -1,3 +1,367 @@ | ||
| 1 | -/*! For license information please see editor-panels.js.LICENSE.txt */ | |
| 2 | -!function(){"use strict";var e={"./packages/packages/core/editor-panels/src/api.ts":function(e,n,t){t.r(n),t.d(n,{createPanel:function(){return createPanel},registerPanel:function(){return registerPanel}});var r=t("@elementor/editor-v1-adapters"),a=t("@elementor/store"),o=t("./packages/packages/core/editor-panels/src/location.ts"),c=t("./packages/packages/core/editor-panels/src/store/index.ts"),s=t("./packages/packages/core/editor-panels/src/sync.ts");function createPanel({id:e,component:n,onOpen:t,onClose:o,allowedEditModes:i,blockOnKitRoutes:l,isOpenPreviousElement:p=!1}){const u=function createUseStatus(e,n={}){return()=>{const t=(0,a.__useSelector)(c.selectOpenId),o=(0,r.__privateUseRouteStatus)(s.V2_PANEL,n);return{isOpen:t===e&&o.isActive,isBlocked:o.isBlocked}}}(e,{allowedEditModes:i,blockOnKitRoutes:l}),d=function createUseActions(e,n,t={},o){let s=null,i=null;return()=>{const l=(0,a.__useDispatch)(),{isBlocked:p}=n();return{open:async()=>{p||(o&&(i=window.elementor?.selection?.getElements?.()[0]?.model.get("id")??null),l(c.slice.actions.open(e)),s=t.onOpen?.()??null)},close:async()=>{if(!p&&(l(c.slice.actions.close(e)),await(t.onClose?.(s)),i)){try{const e=window.elementor?.getContainer?.(i);(0,r.__privateRunCommand)("document/elements/select",{container:e})}catch{}i=null}}}}}(e,u,{onOpen:t,onClose:o},p);return{panel:{id:e,component:n},usePanelStatus:u,usePanelActions:d}}function registerPanel({id:e,component:n}){(0,o.injectIntoPanels)({id:e,component:n})}},"./packages/packages/core/editor-panels/src/components/external/index.ts":function(e,n,t){t.r(n),t.d(n,{Panel:function(){return r.default},PanelBody:function(){return c.default},PanelFooter:function(){return s.default},PanelHeader:function(){return a.default},PanelHeaderTitle:function(){return o.default}});var r=t("./packages/packages/core/editor-panels/src/components/external/panel.tsx"),a=t("./packages/packages/core/editor-panels/src/components/external/panel-header.tsx"),o=t("./packages/packages/core/editor-panels/src/components/external/panel-header-title.tsx"),c=t("./packages/packages/core/editor-panels/src/components/external/panel-body.tsx"),s=t("./packages/packages/core/editor-panels/src/components/external/panel-footer.tsx")},"./packages/packages/core/editor-panels/src/components/external/panel-body.tsx":function(e,n,t){t.r(n),t.d(n,{default:function(){return PanelBody}});var r=t("react"),a=t("@elementor/ui");function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)({}).hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},_extends.apply(null,arguments)}function PanelBody({children:e,sx:n,...t}){return r.createElement(a.Box,_extends({component:"main",sx:{overflowY:"auto",height:"100%",...n}},t),e)}},"./packages/packages/core/editor-panels/src/components/external/panel-footer.tsx":function(e,n,t){t.r(n),t.d(n,{default:function(){return PanelFooter}});var r=t("react"),a=t("@elementor/ui");function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)({}).hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},_extends.apply(null,arguments)}function PanelFooter({children:e,sx:n,...t}){return r.createElement(r.Fragment,null,r.createElement(a.Divider,null),r.createElement(a.Box,_extends({component:"footer",sx:{display:"flex",position:"sticky",bottom:0,px:2,py:1.5}},t),e))}},"./packages/packages/core/editor-panels/src/components/external/panel-header-title.tsx":function(e,n,t){t.r(n);var r=t("react"),a=t("@elementor/ui");function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)({}).hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},_extends.apply(null,arguments)}const o=(0,a.styled)(a.Typography)(({theme:e,variant:n="body1"})=>"inherit"===n?{}:{"&.MuiTypography-root":{...e.typography[n]}}),c=(0,r.forwardRef)(({children:e,...n},t)=>r.createElement(o,_extends({ref:t,component:"h2",variant:"subtitle1"},n),e));n.default=c},"./packages/packages/core/editor-panels/src/components/external/panel-header.tsx":function(e,n,t){t.r(n),t.d(n,{default:function(){return PanelHeader}});var r=t("react"),a=t("@elementor/ui");function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)({}).hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},_extends.apply(null,arguments)}const o=(0,a.styled)(a.Box)(({theme:e})=>({height:e?.spacing(6)||"48px",display:"flex",alignItems:"center",justifyContent:"center",gap:e?.spacing(.5)||"4px"}));function PanelHeader({children:e,...n}){return r.createElement(r.Fragment,null,r.createElement(o,_extends({component:"header"},n),e))}},"./packages/packages/core/editor-panels/src/components/external/panel.tsx":function(e,n,t){t.r(n),t.d(n,{default:function(){return Panel}});var r=t("react"),a=t("@elementor/ui");function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)({}).hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},_extends.apply(null,arguments)}function Panel({children:e,sx:n,...t}){return r.createElement(a.Drawer,_extends({open:!0,variant:"persistent",anchor:"left",PaperProps:{sx:{position:"relative",width:"100%",bgcolor:"background.default",border:"none"}},sx:{height:"100%",...n}},t),e)}},"./packages/packages/core/editor-panels/src/components/internal/panels.tsx":function(e,n,t){t.r(n),t.d(n,{default:function(){return Panels}});var r=t("react"),a=t("./packages/packages/core/editor-panels/src/hooks/use-open-panel-injection.ts"),o=t("./packages/packages/core/editor-panels/src/components/internal/portal.tsx");function Panels(){const e=(0,a.default)(),n=e?.component??null;return n?r.createElement(o.default,null,r.createElement(n,null)):null}},"./packages/packages/core/editor-panels/src/components/internal/portal.tsx":function(e,n,t){t.r(n),t.d(n,{default:function(){return Portal}});var r=t("react"),a=t("@elementor/ui"),o=t("./packages/packages/core/editor-panels/src/sync.ts");function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)({}).hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},_extends.apply(null,arguments)}function Portal(e){const n=(0,r.useRef)(o.getPortalContainer);return n.current?r.createElement(a.Portal,_extends({container:n.current},e)):null}},"./packages/packages/core/editor-panels/src/hooks/use-open-panel-injection.ts":function(e,n,t){t.r(n),t.d(n,{default:function(){return useOpenPanelInjection}});var r=t("react"),a=t("@elementor/store"),o=t("./packages/packages/core/editor-panels/src/location.ts"),c=t("./packages/packages/core/editor-panels/src/store/index.ts");function useOpenPanelInjection(){const e=(0,o.usePanelsInjections)(),n=(0,a.__useSelector)(c.selectOpenId);return(0,r.useMemo)(()=>e.find(e=>n===e.id),[e,n])}},"./packages/packages/core/editor-panels/src/init.ts":function(e,n,t){t.r(n),t.d(n,{init:function(){return init}});var r=t("@elementor/editor"),a=t("@elementor/store"),o=t("./packages/packages/core/editor-panels/src/components/internal/panels.tsx"),c=t("./packages/packages/core/editor-panels/src/store/index.ts"),s=t("./packages/packages/core/editor-panels/src/sync.ts");function init(){(0,s.sync)(),(0,a.__registerSlice)(c.slice),(0,r.injectIntoTop)({id:"panels",component:o.default})}},"./packages/packages/core/editor-panels/src/location.ts":function(e,n,t){t.r(n),t.d(n,{injectIntoPanels:function(){return a},usePanelsInjections:function(){return o}});var r=t("@elementor/locations");const{inject:a,useInjections:o}=(0,r.createLocation)()},"./packages/packages/core/editor-panels/src/store/index.ts":function(e,n,t){t.r(n),t.d(n,{selectOpenId:function(){return r.selectOpenId},slice:function(){return a.default}});var r=t("./packages/packages/core/editor-panels/src/store/selectors.ts"),a=t("./packages/packages/core/editor-panels/src/store/slice.ts")},"./packages/packages/core/editor-panels/src/store/selectors.ts":function(e,n,t){t.r(n),t.d(n,{selectOpenId:function(){return selectOpenId}});const selectOpenId=e=>e.panels.openId},"./packages/packages/core/editor-panels/src/store/slice.ts":function(e,n,t){t.r(n);var r=t("@elementor/store");n.default=(0,r.__createSlice)({name:"panels",initialState:{openId:null},reducers:{open(e,n){e.openId=n.payload},close(e,n){n.payload&&e.openId!==n.payload||(e.openId=null)}}})},"./packages/packages/core/editor-panels/src/sync.ts":function(e,n,t){t.r(n),t.d(n,{V2_PANEL:function(){return c},getPortalContainer:function(){return getPortalContainer},sync:function(){return sync}});var r=t("@elementor/editor-v1-adapters"),a=t("@elementor/store"),o=t("./packages/packages/core/editor-panels/src/store/index.ts");const c="panel/v2";function getPortalContainer(){return document.querySelector("#elementor-panel-inner")}function sync(){(0,r.__privateListenTo)((0,r.windowEvent)("elementor/panel/init"),()=>(0,r.__privateRegisterRoute)(c)),(0,r.__privateListenTo)((0,r.routeOpenEvent)(c),()=>{getV1PanelElements().forEach(e=>{e.setAttribute("hidden","hidden"),e.setAttribute("inert","true")})}),(0,r.__privateListenTo)((0,r.routeCloseEvent)(c),()=>(0,o.selectOpenId)((0,a.__getState)())&&(0,a.__dispatch)(o.slice.actions.close())),(0,r.__privateListenTo)((0,r.routeCloseEvent)(c),()=>{getV1PanelElements().forEach(e=>{e.removeAttribute("hidden"),e.removeAttribute("inert")})}),(0,r.__privateListenTo)((0,r.windowEvent)("elementor/panel/init"),()=>subscribe({on:e=>(0,o.selectOpenId)(e),when:({prev:e,current:n})=>!(e||!n),callback:()=>(0,r.__privateOpenRoute)(c)})),(0,r.__privateListenTo)((0,r.windowEvent)("elementor/panel/init"),()=>subscribe({on:e=>(0,o.selectOpenId)(e),when:({prev:e,current:n})=>!(n||!e),callback:()=>(0,r.__privateIsRouteActive)(c)&&(0,r.__privateOpenRoute)(function getDefaultRoute(){const e=window?.elementor?.documents?.getCurrent?.()?.config?.panel?.default_route;return e||"panel/elements/categories"}())}))}function getV1PanelElements(){const e=["#elementor-panel-header-wrapper","#elementor-panel-content-wrapper","#elementor-panel-state-loading","#elementor-panel-footer"].join(", ");return document.querySelectorAll(e)}function subscribe({on:e,when:n,callback:t}){let r;(0,a.__subscribe)(()=>{const o=e((0,a.__getState)());n({prev:r,current:o})&&t({prev:r,current:o}),r=o})}},"@elementor/editor":function(e){e.exports=window.elementorV2.editor},"@elementor/editor-v1-adapters":function(e){e.exports=window.elementorV2.editorV1Adapters},"@elementor/locations":function(e){e.exports=window.elementorV2.locations},"@elementor/store":function(e){e.exports=window.elementorV2.store},"@elementor/ui":function(e){e.exports=window.elementorV2.ui},react:function(e){e.exports=window.React}},n={};function __webpack_require__(t){var r=n[t];if(void 0!==r)return r.exports;var a=n[t]={exports:{}};return e[t](a,a.exports,__webpack_require__),a.exports}__webpack_require__.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(n,{a:n}),n},__webpack_require__.d=function(e,n){for(var t in n)__webpack_require__.o(n,t)&&!__webpack_require__.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},__webpack_require__.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var t={};!function(){__webpack_require__.r(t),__webpack_require__.d(t,{Panel:function(){return r.Panel},PanelBody:function(){return r.PanelBody},PanelFooter:function(){return r.PanelFooter},PanelHeader:function(){return r.PanelHeader},PanelHeaderTitle:function(){return r.PanelHeaderTitle},__createPanel:function(){return n.createPanel},__registerPanel:function(){return n.registerPanel},init:function(){return e.init}});var e=__webpack_require__("./packages/packages/core/editor-panels/src/init.ts"),n=__webpack_require__("./packages/packages/core/editor-panels/src/api.ts"),r=__webpack_require__("./packages/packages/core/editor-panels/src/components/external/index.ts")}(),(window.elementorV2=window.elementorV2||{}).editorPanels=t}(),window.elementorV2.editorPanels?.init?.(); | |
| 1 | +(function(_elementor_editor, _elementor_store, react, _elementor_locations, _elementor_ui, _elementor_editor_v1_adapters) { | |
| 2 | + | |
| 3 | +//#region \0rolldown/runtime.js | |
| 4 | + var __create = Object.create; | |
| 5 | + var __defProp = Object.defineProperty; | |
| 6 | + var __name = (target, value) => __defProp(target, "name", { | |
| 7 | + value, | |
| 8 | + configurable: true | |
| 9 | + }); | |
| 10 | + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; | |
| 11 | + var __getOwnPropNames = Object.getOwnPropertyNames; | |
| 12 | + var __getProtoOf = Object.getPrototypeOf; | |
| 13 | + var __hasOwnProp = Object.prototype.hasOwnProperty; | |
| 14 | + var __exportAll = (all, no_symbols) => { | |
| 15 | + let target = {}; | |
| 16 | + for (var name in all) { | |
| 17 | + __defProp(target, name, { | |
| 18 | + get: all[name], | |
| 19 | + enumerable: true | |
| 20 | + }); | |
| 21 | + } | |
| 22 | + if (!no_symbols) { | |
| 23 | + __defProp(target, Symbol.toStringTag, { value: "Module" }); | |
| 24 | + } | |
| 25 | + return target; | |
| 26 | + }; | |
| 27 | + var __copyProps = (to, from, except, desc) => { | |
| 28 | + if (from && typeof from === "object" || typeof from === "function") { | |
| 29 | + for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) { | |
| 30 | + key = keys[i]; | |
| 31 | + if (!__hasOwnProp.call(to, key) && key !== except) { | |
| 32 | + __defProp(to, key, { | |
| 33 | + get: ((k) => from[k]).bind(null, key), | |
| 34 | + enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable | |
| 35 | + }); | |
| 36 | + } | |
| 37 | + } | |
| 38 | + } | |
| 39 | + return to; | |
| 40 | + }; | |
| 41 | + var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { | |
| 42 | + value: mod, | |
| 43 | + enumerable: true | |
| 44 | + }) : target, mod)); | |
| 45 | + | |
| 46 | +//#endregion | |
| 47 | +react = __toESM(react); | |
| 48 | + | |
| 49 | +//#region packages/packages/core/editor-panels/src/location.ts | |
| 50 | + var panelsMeta = /* @__PURE__ */ new Map(); | |
| 51 | + var { inject: baseInject, useInjections: baseUseInjections, getInjections } = (0, _elementor_locations.createLocation)(); | |
| 52 | + (0, _elementor_locations.__registerFlushInjections)(() => { | |
| 53 | + panelsMeta.clear(); | |
| 54 | + }); | |
| 55 | + function injectIntoPanels({ id, component, keepMounted }) { | |
| 56 | + const existedBefore = getInjections().some((injection) => injection.id === id); | |
| 57 | + baseInject({ | |
| 58 | + id, | |
| 59 | + component | |
| 60 | + }); | |
| 61 | + if (!existedBefore) panelsMeta.set(id, { keepMounted }); | |
| 62 | + } | |
| 63 | + function usePanelsInjections() { | |
| 64 | + return baseUseInjections().map((injection) => ({ | |
| 65 | + ...injection, | |
| 66 | + keepMounted: panelsMeta.get(injection.id)?.keepMounted ?? false | |
| 67 | + })); | |
| 68 | + } | |
| 69 | + | |
| 70 | +//#endregion | |
| 71 | +//#region packages/packages/core/editor-panels/src/store/selectors.ts | |
| 72 | + var selectOpenId = (state) => state.panels.openId; | |
| 73 | + | |
| 74 | +//#endregion | |
| 75 | +//#region packages/packages/core/editor-panels/src/store/slice.ts | |
| 76 | + var initialState = { openId: null }; | |
| 77 | + var slice_default = (0, _elementor_store.__createSlice)({ | |
| 78 | + name: "panels", | |
| 79 | + initialState, | |
| 80 | + reducers: { | |
| 81 | + open(state, action) { | |
| 82 | + state.openId = action.payload; | |
| 83 | + }, | |
| 84 | + close(state, action) { | |
| 85 | + if (!action.payload || state.openId === action.payload) state.openId = null; | |
| 86 | + } | |
| 87 | + } | |
| 88 | + }); | |
| 89 | + | |
| 90 | +//#endregion | |
| 91 | +//#region packages/packages/core/editor-panels/src/sync.ts | |
| 92 | + var V2_PANEL = "panel/v2"; | |
| 93 | + function getPortalContainer() { | |
| 94 | + return document.querySelector("#elementor-panel-inner"); | |
| 95 | + } | |
| 96 | + function sync() { | |
| 97 | + (0, _elementor_editor_v1_adapters.__privateListenTo)((0, _elementor_editor_v1_adapters.windowEvent)("elementor/panel/init"), () => (0, _elementor_editor_v1_adapters.__privateRegisterRoute)(V2_PANEL)); | |
| 98 | + (0, _elementor_editor_v1_adapters.__privateListenTo)((0, _elementor_editor_v1_adapters.routeOpenEvent)(V2_PANEL), () => { | |
| 99 | + getV1PanelElements().forEach((el) => { | |
| 100 | + el.setAttribute("hidden", "hidden"); | |
| 101 | + el.setAttribute("inert", "true"); | |
| 102 | + }); | |
| 103 | + }); | |
| 104 | + (0, _elementor_editor_v1_adapters.__privateListenTo)((0, _elementor_editor_v1_adapters.routeCloseEvent)(V2_PANEL), () => selectOpenId((0, _elementor_store.__getState)()) && (0, _elementor_store.__dispatch)(slice_default.actions.close())); | |
| 105 | + (0, _elementor_editor_v1_adapters.__privateListenTo)((0, _elementor_editor_v1_adapters.routeCloseEvent)(V2_PANEL), () => { | |
| 106 | + getV1PanelElements().forEach((el) => { | |
| 107 | + el.removeAttribute("hidden"); | |
| 108 | + el.removeAttribute("inert"); | |
| 109 | + }); | |
| 110 | + }); | |
| 111 | + (0, _elementor_editor_v1_adapters.__privateListenTo)((0, _elementor_editor_v1_adapters.windowEvent)("elementor/panel/init"), () => subscribe({ | |
| 112 | + on: (state) => selectOpenId(state), | |
| 113 | + when: ({ prev, current }) => !!(!prev && current), | |
| 114 | + callback: () => (0, _elementor_editor_v1_adapters.__privateOpenRoute)(V2_PANEL) | |
| 115 | + })); | |
| 116 | + (0, _elementor_editor_v1_adapters.__privateListenTo)((0, _elementor_editor_v1_adapters.windowEvent)("elementor/panel/init"), () => subscribe({ | |
| 117 | + on: (state) => selectOpenId(state), | |
| 118 | + when: ({ prev, current }) => !!(!current && prev), | |
| 119 | + callback: () => (0, _elementor_editor_v1_adapters.__privateIsRouteActive)("panel/v2") && (0, _elementor_editor_v1_adapters.__privateOpenRoute)(getDefaultRoute()) | |
| 120 | + })); | |
| 121 | + } | |
| 122 | + function getV1PanelElements() { | |
| 123 | + const v1ElementsSelector = [ | |
| 124 | + "#elementor-panel-header-wrapper", | |
| 125 | + "#elementor-panel-content-wrapper", | |
| 126 | + "#elementor-panel-state-loading" | |
| 127 | + ].join(", "); | |
| 128 | + return document.querySelectorAll(v1ElementsSelector); | |
| 129 | + } | |
| 130 | + function getDefaultRoute() { | |
| 131 | + return window?.elementor?.documents?.getCurrent?.()?.config?.panel?.default_route || "panel/elements/categories"; | |
| 132 | + } | |
| 133 | + function subscribe({ on, when, callback }) { | |
| 134 | + let prev; | |
| 135 | + (0, _elementor_store.__subscribe)(() => { | |
| 136 | + const current = on((0, _elementor_store.__getState)()); | |
| 137 | + if (when({ | |
| 138 | + prev, | |
| 139 | + current | |
| 140 | + })) callback({ | |
| 141 | + prev, | |
| 142 | + current | |
| 143 | + }); | |
| 144 | + prev = current; | |
| 145 | + }); | |
| 146 | + } | |
| 147 | + | |
| 148 | +//#endregion | |
| 149 | +//#region packages/packages/core/editor-panels/src/components/internal/portal.tsx | |
| 150 | + function Portal(props) { | |
| 151 | + const [container, setContainer] = (0, react.useState)(() => getPortalContainer()); | |
| 152 | + (0, react.useEffect)(() => { | |
| 153 | + if (container) return; | |
| 154 | + const resolveContainer = () => { | |
| 155 | + const portalContainer = getPortalContainer(); | |
| 156 | + if (portalContainer) setContainer(portalContainer); | |
| 157 | + }; | |
| 158 | + window.addEventListener("elementor/panel/init", resolveContainer); | |
| 159 | + resolveContainer(); | |
| 160 | + return () => { | |
| 161 | + window.removeEventListener("elementor/panel/init", resolveContainer); | |
| 162 | + }; | |
| 163 | + }, [container]); | |
| 164 | + if (!container) return null; | |
| 165 | + return /* @__PURE__ */ react.createElement(_elementor_ui.Portal, { | |
| 166 | + container, | |
| 167 | + ...props | |
| 168 | + }); | |
| 169 | + } | |
| 170 | + | |
| 171 | +//#endregion | |
| 172 | +//#region packages/packages/core/editor-panels/src/components/internal/panels.tsx | |
| 173 | + function Panels() { | |
| 174 | + const injections = usePanelsInjections(); | |
| 175 | + const openId = (0, _elementor_store.__useSelector)(selectOpenId); | |
| 176 | + const persistentInjections = injections.filter((injection) => injection.keepMounted); | |
| 177 | + const openInjection = injections.find((injection) => openId === injection.id); | |
| 178 | + if (!persistentInjections.length && !openInjection) return null; | |
| 179 | + return /* @__PURE__ */ react.createElement(Portal, null, persistentInjections.map(({ id, component: Component }) => /* @__PURE__ */ react.createElement("div", { | |
| 180 | + key: id, | |
| 181 | + style: { display: openId === id ? "contents" : "none" } | |
| 182 | + }, /* @__PURE__ */ react.createElement(Component, null))), openInjection && !openInjection.keepMounted && /* @__PURE__ */ react.createElement(openInjection.component, null)); | |
| 183 | + } | |
| 184 | + | |
| 185 | +//#endregion | |
| 186 | +//#region packages/packages/core/editor-panels/src/init.ts | |
| 187 | + function init() { | |
| 188 | + sync(); | |
| 189 | + (0, _elementor_store.__registerSlice)(slice_default); | |
| 190 | + (0, _elementor_editor.injectIntoTop)({ | |
| 191 | + id: "panels", | |
| 192 | + component: Panels | |
| 193 | + }); | |
| 194 | + } | |
| 195 | + | |
| 196 | +//#endregion | |
| 197 | +//#region packages/packages/core/editor-panels/src/api.ts | |
| 198 | + function createPanel({ id, component, onOpen, onClose, allowedEditModes, blockOnKitRoutes, isOpenPreviousElement = false, keepMounted = false }) { | |
| 199 | + const usePanelStatus = createUseStatus(id, { | |
| 200 | + allowedEditModes, | |
| 201 | + blockOnKitRoutes | |
| 202 | + }); | |
| 203 | + const usePanelActions = createUseActions(id, usePanelStatus, { | |
| 204 | + onOpen, | |
| 205 | + onClose | |
| 206 | + }, isOpenPreviousElement); | |
| 207 | + return { | |
| 208 | + panel: { | |
| 209 | + id, | |
| 210 | + component, | |
| 211 | + keepMounted | |
| 212 | + }, | |
| 213 | + usePanelStatus, | |
| 214 | + usePanelActions | |
| 215 | + }; | |
| 216 | + } | |
| 217 | + function registerPanel({ id, component, keepMounted }) { | |
| 218 | + injectIntoPanels({ | |
| 219 | + id, | |
| 220 | + component, | |
| 221 | + keepMounted | |
| 222 | + }); | |
| 223 | + } | |
| 224 | + function createUseStatus(id, options = {}) { | |
| 225 | + return () => { | |
| 226 | + const openPanelId = (0, _elementor_store.__useSelector)(selectOpenId); | |
| 227 | + const v1PanelStatus = (0, _elementor_editor_v1_adapters.__privateUseRouteStatus)(V2_PANEL, options); | |
| 228 | + return { | |
| 229 | + isOpen: openPanelId === id && v1PanelStatus.isActive, | |
| 230 | + isBlocked: v1PanelStatus.isBlocked | |
| 231 | + }; | |
| 232 | + }; | |
| 233 | + } | |
| 234 | + function createUseActions(id, useStatus, options = {}, isOpenPreviousElement) { | |
| 235 | + let stateSnapshot = null; | |
| 236 | + let previousSelectedElement = null; | |
| 237 | + return () => { | |
| 238 | + const dispatch = (0, _elementor_store.__useDispatch)(); | |
| 239 | + const { isBlocked } = useStatus(); | |
| 240 | + return { | |
| 241 | + open: async () => { | |
| 242 | + if (isBlocked) return; | |
| 243 | + if (isOpenPreviousElement) previousSelectedElement = window.elementor?.selection?.getElements?.()[0]?.model.get("id") ?? null; | |
| 244 | + dispatch(slice_default.actions.open(id)); | |
| 245 | + stateSnapshot = options.onOpen?.() ?? null; | |
| 246 | + }, | |
| 247 | + close: async () => { | |
| 248 | + if (isBlocked) return; | |
| 249 | + dispatch(slice_default.actions.close(id)); | |
| 250 | + await options.onClose?.(stateSnapshot); | |
| 251 | + if (previousSelectedElement) { | |
| 252 | + try { | |
| 253 | + const container = window.elementor?.getContainer?.(previousSelectedElement); | |
| 254 | + (0, _elementor_editor_v1_adapters.__privateRunCommand)("document/elements/select", { container }); | |
| 255 | + } catch {} | |
| 256 | + previousSelectedElement = null; | |
| 257 | + } | |
| 258 | + } | |
| 259 | + }; | |
| 260 | + }; | |
| 261 | + } | |
| 262 | + | |
| 263 | +//#endregion | |
| 264 | +//#region packages/packages/core/editor-panels/src/components/external/panel.tsx | |
| 265 | + function Panel({ children, sx, ...props }) { | |
| 266 | + return /* @__PURE__ */ react.createElement(_elementor_ui.Drawer, { | |
| 267 | + open: true, | |
| 268 | + variant: "persistent", | |
| 269 | + anchor: "left", | |
| 270 | + PaperProps: { sx: { | |
| 271 | + position: "relative", | |
| 272 | + width: "100%", | |
| 273 | + bgcolor: "background.default", | |
| 274 | + border: "none" | |
| 275 | + } }, | |
| 276 | + sx: { | |
| 277 | + height: "100%", | |
| 278 | + ...sx | |
| 279 | + }, | |
| 280 | + ...props | |
| 281 | + }, children); | |
| 282 | + } | |
| 283 | + | |
| 284 | +//#endregion | |
| 285 | +//#region packages/packages/core/editor-panels/src/components/external/panel-header.tsx | |
| 286 | + var Header = (0, _elementor_ui.styled)(_elementor_ui.Box)(({ theme }) => ({ | |
| 287 | + height: theme?.spacing(6) || "48px", | |
| 288 | + display: "flex", | |
| 289 | + alignItems: "center", | |
| 290 | + justifyContent: "center", | |
| 291 | + gap: theme?.spacing(.5) || "4px" | |
| 292 | + })); | |
| 293 | + function PanelHeader({ children, ...props }) { | |
| 294 | + return /* @__PURE__ */ react.createElement(react.Fragment, null, /* @__PURE__ */ react.createElement(Header, { | |
| 295 | + component: "header", | |
| 296 | + ...props | |
| 297 | + }, children)); | |
| 298 | + } | |
| 299 | + | |
| 300 | +//#endregion | |
| 301 | +//#region packages/packages/core/editor-panels/src/components/external/panel-header-title.tsx | |
| 302 | + var Typography = (0, _elementor_ui.styled)(_elementor_ui.Typography)(({ theme, variant = "body1" }) => { | |
| 303 | + if (variant === "inherit") return {}; | |
| 304 | + return { "&.MuiTypography-root": { ...theme.typography[variant] } }; | |
| 305 | + }); | |
| 306 | + var PanelHeaderTitle = (0, react.forwardRef)(({ children, ...props }, ref) => { | |
| 307 | + return /* @__PURE__ */ react.createElement(Typography, { | |
| 308 | + ref, | |
| 309 | + component: "h2", | |
| 310 | + variant: "subtitle1", | |
| 311 | + ...props | |
| 312 | + }, children); | |
| 313 | + }); | |
| 314 | + | |
| 315 | +//#endregion | |
| 316 | +//#region packages/packages/core/editor-panels/src/components/external/panel-body.tsx | |
| 317 | + function PanelBody({ children, sx, ...props }) { | |
| 318 | + return /* @__PURE__ */ react.createElement(_elementor_ui.Box, { | |
| 319 | + component: "main", | |
| 320 | + sx: { | |
| 321 | + overflowY: "auto", | |
| 322 | + height: "100%", | |
| 323 | + ...sx | |
| 324 | + }, | |
| 325 | + ...props | |
| 326 | + }, children); | |
| 327 | + } | |
| 328 | + | |
| 329 | +//#endregion | |
| 330 | +//#region packages/packages/core/editor-panels/src/components/external/panel-footer.tsx | |
| 331 | + function PanelFooter({ children, sx, ...props }) { | |
| 332 | + return /* @__PURE__ */ react.createElement(react.Fragment, null, /* @__PURE__ */ react.createElement(_elementor_ui.Divider, null), /* @__PURE__ */ react.createElement(_elementor_ui.Box, { | |
| 333 | + component: "footer", | |
| 334 | + sx: { | |
| 335 | + display: "flex", | |
| 336 | + position: "sticky", | |
| 337 | + bottom: 0, | |
| 338 | + px: 2, | |
| 339 | + py: 1.5 | |
| 340 | + }, | |
| 341 | + ...props | |
| 342 | + }, children)); | |
| 343 | + } | |
| 344 | + | |
| 345 | +//#endregion | |
| 346 | +//#region packages/packages/core/editor-panels/src/index.ts | |
| 347 | + var src_exports = /* @__PURE__ */ __exportAll({ | |
| 348 | + Panel: () => Panel, | |
| 349 | + PanelBody: () => PanelBody, | |
| 350 | + PanelFooter: () => PanelFooter, | |
| 351 | + PanelHeader: () => PanelHeader, | |
| 352 | + PanelHeaderTitle: () => PanelHeaderTitle, | |
| 353 | + __createPanel: () => createPanel, | |
| 354 | + __registerPanel: () => registerPanel, | |
| 355 | + createPanel: () => createPanel, | |
| 356 | + init: () => init, | |
| 357 | + registerPanel: () => registerPanel | |
| 358 | + }); | |
| 359 | + | |
| 360 | +//#endregion | |
| 361 | +//#region \0elementor-package-library-entry | |
| 362 | + (window.elementorV2 = window.elementorV2 || {}).editorPanels = src_exports; | |
| 363 | + | |
| 364 | +//#endregion | |
| 365 | +})(elementorV2.editor, elementorV2.store, React, elementorV2.locations, elementorV2.ui, elementorV2.editorV1Adapters); | |
| 366 | +window.elementorV2.editorPanels?.init?.(); | |
| 3 | 367 | //# sourceMappingURL=editor-panels.js.map |