PluginProbe
Elementor Website Builder – more than just a page builder / 3.17.2
Elementor Website Builder – more than just a page builder v3.17.2
4.3.3 4.3.2 4.3.1 4.3.0 4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 All 456 releases
elementor / assets / js / packages / editor-panels / editor-panels.js

editor-panels.js in Elementor Website Builder – more than just a page builder 3.17.2, at assets/js/packages/editor-panels/editor-panels.js

441 lines 14.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /******/ (function() { // webpackBootstrap
2 /******/ "use strict";
3 /******/ var __webpack_modules__ = ({
4
5 /***/ "react":
6 /*!**************************!*\
7 !*** external ["React"] ***!
8 \**************************/
9 /***/ (function(module) {
10
11 module.exports = window["React"];
12
13 /***/ }),
14
15 /***/ "@elementor/editor":
16 /*!*****************************************!*\
17 !*** external ["elementorV2","editor"] ***!
18 \*****************************************/
19 /***/ (function(module) {
20
21 module.exports = window["elementorV2"]["editor"];
22
23 /***/ }),
24
25 /***/ "@elementor/editor-v1-adapters":
26 /*!***************************************************!*\
27 !*** external ["elementorV2","editorV1Adapters"] ***!
28 \***************************************************/
29 /***/ (function(module) {
30
31 module.exports = window["elementorV2"]["editorV1Adapters"];
32
33 /***/ }),
34
35 /***/ "@elementor/locations":
36 /*!********************************************!*\
37 !*** external ["elementorV2","locations"] ***!
38 \********************************************/
39 /***/ (function(module) {
40
41 module.exports = window["elementorV2"]["locations"];
42
43 /***/ }),
44
45 /***/ "@elementor/store":
46 /*!****************************************!*\
47 !*** external ["elementorV2","store"] ***!
48 \****************************************/
49 /***/ (function(module) {
50
51 module.exports = window["elementorV2"]["store"];
52
53 /***/ }),
54
55 /***/ "@elementor/ui":
56 /*!*************************************!*\
57 !*** external ["elementorV2","ui"] ***!
58 \*************************************/
59 /***/ (function(module) {
60
61 module.exports = window["elementorV2"]["ui"];
62
63 /***/ })
64
65 /******/ });
66 /************************************************************************/
67 /******/ // The module cache
68 /******/ var __webpack_module_cache__ = {};
69 /******/
70 /******/ // The require function
71 /******/ function __webpack_require__(moduleId) {
72 /******/ // Check if module is in cache
73 /******/ var cachedModule = __webpack_module_cache__[moduleId];
74 /******/ if (cachedModule !== undefined) {
75 /******/ return cachedModule.exports;
76 /******/ }
77 /******/ // Create a new module (and put it into the cache)
78 /******/ var module = __webpack_module_cache__[moduleId] = {
79 /******/ // no module.id needed
80 /******/ // no module.loaded needed
81 /******/ exports: {}
82 /******/ };
83 /******/
84 /******/ // Execute the module function
85 /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
86 /******/
87 /******/ // Return the exports of the module
88 /******/ return module.exports;
89 /******/ }
90 /******/
91 /************************************************************************/
92 /******/ /* webpack/runtime/define property getters */
93 /******/ !function() {
94 /******/ // define getter functions for harmony exports
95 /******/ __webpack_require__.d = function(exports, definition) {
96 /******/ for(var key in definition) {
97 /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
98 /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
99 /******/ }
100 /******/ }
101 /******/ };
102 /******/ }();
103 /******/
104 /******/ /* webpack/runtime/hasOwnProperty shorthand */
105 /******/ !function() {
106 /******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
107 /******/ }();
108 /******/
109 /******/ /* webpack/runtime/make namespace object */
110 /******/ !function() {
111 /******/ // define __esModule on exports
112 /******/ __webpack_require__.r = function(exports) {
113 /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
114 /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
115 /******/ }
116 /******/ Object.defineProperty(exports, '__esModule', { value: true });
117 /******/ };
118 /******/ }();
119 /******/
120 /************************************************************************/
121 var __webpack_exports__ = {};
122 // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
123 !function() {
124 /*!**************************************************************!*\
125 !*** ./node_modules/@elementor/editor-panels/dist/index.mjs ***!
126 \**************************************************************/
127 __webpack_require__.r(__webpack_exports__);
128 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
129 /* harmony export */ Panel: function() { return /* binding */ Panel; },
130 /* harmony export */ PanelBody: function() { return /* binding */ PanelBody; },
131 /* harmony export */ PanelHeader: function() { return /* binding */ PanelHeader; },
132 /* harmony export */ PanelHeaderTitle: function() { return /* binding */ PanelHeaderTitle; },
133 /* harmony export */ __createPanel: function() { return /* binding */ createPanel; },
134 /* harmony export */ __registerPanel: function() { return /* binding */ registerPanel; }
135 /* harmony export */ });
136 /* harmony import */ var _elementor_editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor */ "@elementor/editor");
137 /* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
138 /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");
139 /* harmony import */ var _elementor_locations__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @elementor/locations */ "@elementor/locations");
140 /* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
141 /* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @elementor/editor-v1-adapters */ "@elementor/editor-v1-adapters");
142 // src/init.ts
143
144
145
146 // src/components/internal/panels.tsx
147
148
149 // src/hooks/use-open-panel-injection.ts
150
151
152 // src/location.ts
153
154 var {
155 inject: injectIntoPanels,
156 useInjections: usePanelsInjections
157 } = (0,_elementor_locations__WEBPACK_IMPORTED_MODULE_3__.createLocation)();
158
159 // src/store/selectors.ts
160 var selectOpenId = (state) => state.panels.openId;
161
162 // src/store/slice.ts
163
164 var initialState = {
165 openId: null
166 };
167 var slice_default = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_1__.__createSlice)({
168 name: "panels",
169 initialState,
170 reducers: {
171 open(state, action) {
172 state.openId = action.payload;
173 },
174 close(state, action) {
175 if (!action.payload || state.openId === action.payload) {
176 state.openId = null;
177 }
178 }
179 }
180 });
181
182 // src/hooks/use-open-panel-injection.ts
183
184 function useOpenPanelInjection() {
185 const injections = usePanelsInjections();
186 const openId = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_1__.__useSelector)(selectOpenId);
187 return (0,react__WEBPACK_IMPORTED_MODULE_2__.useMemo)(
188 () => injections.find((injection) => openId === injection.id),
189 [injections, openId]
190 );
191 }
192
193 // src/components/internal/portal.tsx
194
195
196
197
198 // src/sync.ts
199
200
201 var V2_PANEL = "panel/v2";
202 function getPortalContainer() {
203 return document.querySelector("#elementor-panel-inner");
204 }
205 function useV1PanelStatus() {
206 return (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_5__.__privateUseRouteStatus)(V2_PANEL, {
207 blockOnKitRoutes: true,
208 blockOnPreviewMode: true
209 });
210 }
211 function sync() {
212 (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_5__.__privateListenTo)(
213 (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_5__.windowEvent)("elementor/panel/init"),
214 () => (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_5__.__privateRegisterRoute)(V2_PANEL)
215 );
216 (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_5__.__privateListenTo)(
217 (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_5__.routeOpenEvent)(V2_PANEL),
218 () => {
219 getV1PanelElements().forEach((el) => {
220 el.setAttribute("hidden", "hidden");
221 el.setAttribute("aria-hidden", "true");
222 });
223 }
224 );
225 (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_5__.__privateListenTo)(
226 (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_5__.routeCloseEvent)(V2_PANEL),
227 () => selectOpenId((0,_elementor_store__WEBPACK_IMPORTED_MODULE_1__.__getState)()) && (0,_elementor_store__WEBPACK_IMPORTED_MODULE_1__.__dispatch)(slice_default.actions.close())
228 );
229 (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_5__.__privateListenTo)(
230 (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_5__.routeCloseEvent)(V2_PANEL),
231 () => {
232 getV1PanelElements().forEach((el) => {
233 el.removeAttribute("hidden");
234 el.removeAttribute("aria-hidden");
235 });
236 }
237 );
238 (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_5__.__privateListenTo)(
239 (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_5__.windowEvent)("elementor/panel/init"),
240 () => subscribe({
241 on: (state) => selectOpenId(state),
242 when: ({ prev, current }) => !!(!prev && current),
243 // is panel opened
244 callback: () => (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_5__.__privateOpenRoute)(V2_PANEL)
245 })
246 );
247 (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_5__.__privateListenTo)(
248 (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_5__.windowEvent)("elementor/panel/init"),
249 () => subscribe({
250 on: (state) => selectOpenId(state),
251 when: ({ prev, current }) => !!(!current && prev),
252 // is panel closed
253 callback: () => (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_5__.__privateIsRouteActive)(V2_PANEL) && (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_5__.__privateOpenRoute)(getDefaultRoute())
254 })
255 );
256 }
257 function getV1PanelElements() {
258 const v1ElementsSelector = [
259 "#elementor-panel-header-wrapper",
260 "#elementor-panel-content-wrapper",
261 "#elementor-panel-state-loading",
262 "#elementor-panel-footer"
263 ].join(", ");
264 return document.querySelectorAll(v1ElementsSelector);
265 }
266 function getDefaultRoute() {
267 const defaultRoute = window?.elementor?.documents?.getCurrent?.()?.config?.panel?.default_route;
268 return defaultRoute || "panel/elements/categories";
269 }
270 function subscribe({
271 on,
272 when,
273 callback
274 }) {
275 let prev;
276 (0,_elementor_store__WEBPACK_IMPORTED_MODULE_1__.__subscribe)(() => {
277 const current = on((0,_elementor_store__WEBPACK_IMPORTED_MODULE_1__.__getState)());
278 if (when({ prev, current })) {
279 callback({ prev, current });
280 }
281 prev = current;
282 });
283 }
284
285 // src/components/internal/portal.tsx
286 function Portal(props) {
287 const containerRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(getPortalContainer);
288 if (!containerRef.current) {
289 return null;
290 }
291 return /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_2__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_4__.Portal, { container: containerRef.current, ...props });
292 }
293
294 // src/components/internal/panels.tsx
295 function Panels() {
296 const openPanel = useOpenPanelInjection();
297 const Component = openPanel?.component ?? null;
298 if (!Component) {
299 return null;
300 }
301 return /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_2__.createElement(Portal, null, /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_2__.createElement(Component, null));
302 }
303
304 // src/init.ts
305 function init() {
306 sync();
307 (0,_elementor_store__WEBPACK_IMPORTED_MODULE_1__.__registerSlice)(slice_default);
308 (0,_elementor_editor__WEBPACK_IMPORTED_MODULE_0__.injectIntoTop)({ id: "panels", component: Panels });
309 }
310
311 // src/api.ts
312
313 function createPanel({ id, component }) {
314 const usePanelStatus = createUseStatus(id);
315 const usePanelActions = createUseActions(id, usePanelStatus);
316 return {
317 panel: {
318 id,
319 component
320 },
321 usePanelStatus,
322 usePanelActions
323 };
324 }
325 function registerPanel({ id, component }) {
326 injectIntoPanels({
327 id,
328 component
329 });
330 }
331 function createUseStatus(id) {
332 return () => {
333 const openPanelId = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_1__.__useSelector)(selectOpenId);
334 const v1PanelStatus = useV1PanelStatus();
335 return {
336 isOpen: openPanelId === id && v1PanelStatus.isActive,
337 isBlocked: v1PanelStatus.isBlocked
338 };
339 };
340 }
341 function createUseActions(id, useStatus) {
342 return () => {
343 const dispatch = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_1__.__useDispatch)();
344 const { isBlocked } = useStatus();
345 return {
346 open: async () => {
347 if (isBlocked) {
348 return;
349 }
350 dispatch(slice_default.actions.open(id));
351 },
352 close: async () => {
353 if (isBlocked) {
354 return;
355 }
356 dispatch(slice_default.actions.close(id));
357 }
358 };
359 };
360 }
361
362 // src/components/external/panel.tsx
363
364
365 function Panel({ children, sx, ...props }) {
366 return /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_2__.createElement(
367 _elementor_ui__WEBPACK_IMPORTED_MODULE_4__.Drawer,
368 {
369 open: true,
370 variant: "persistent",
371 anchor: "left",
372 PaperProps: {
373 sx: {
374 position: "relative",
375 width: "100%",
376 bgcolor: "background.default",
377 border: "none"
378 }
379 },
380 sx: { height: "100%", ...sx },
381 ...props
382 },
383 children
384 );
385 }
386
387 // src/components/external/panel-header.tsx
388
389
390 var Header = (0,_elementor_ui__WEBPACK_IMPORTED_MODULE_4__.styled)(_elementor_ui__WEBPACK_IMPORTED_MODULE_4__.Box)(({ theme }) => ({
391 height: theme?.spacing(6) || "48px",
392 display: "flex",
393 alignItems: "center",
394 justifyContent: "center"
395 }));
396 function PanelHeader({ children, ...props }) {
397 return /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_2__.createElement(react__WEBPACK_IMPORTED_MODULE_2__.Fragment, null, /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_2__.createElement(Header, { component: "header", ...props }, children), /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_2__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_4__.Divider, null));
398 }
399
400 // src/components/external/panel-header-title.tsx
401
402
403 function PanelHeaderTitle({ children, ...props }) {
404 return /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_2__.createElement(
405 _elementor_ui__WEBPACK_IMPORTED_MODULE_4__.Typography,
406 {
407 component: "h2",
408 variant: "h6",
409 ...props
410 },
411 children
412 );
413 }
414
415 // src/components/external/panel-body.tsx
416
417
418 function PanelBody({ children, sx, ...props }) {
419 return /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_2__.createElement(
420 _elementor_ui__WEBPACK_IMPORTED_MODULE_4__.Box,
421 {
422 component: "main",
423 sx: {
424 overflowY: "auto",
425 height: "100%",
426 ...sx
427 },
428 ...props
429 },
430 children
431 );
432 }
433
434 // src/index.ts
435 init();
436
437 //# sourceMappingURL=index.mjs.map
438 }();
439 (window.elementorV2 = window.elementorV2 || {}).editorPanels = __webpack_exports__;
440 /******/ })()
441 ;