1/******/ (function() { // webpackBootstrap 2/******/ "use strict"; 3/******/ var __webpack_modules__ = ({ 4
5/***/ "./packages/packages/core/frontend-handlers/src/handlers-registry.ts": 6/*!***************************************************************************!*\ 7 !*** ./packages/packages/core/frontend-handlers/src/handlers-registry.ts ***! 8 \***************************************************************************/ 9/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 10 11__webpack_require__.r(__webpack_exports__); 12/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13/* harmony export */ elementSelectorHandlers: function() { return /* binding */ elementSelectorHandlers; }, 14/* harmony export */ elementTypeHandlers: function() { return /* binding */ elementTypeHandlers; }, 15/* harmony export */ register: function() { return /* binding */ register; }, 16/* harmony export */ registerBySelector: function() { return /* binding */ registerBySelector; }, 17/* harmony export */ unregister: function() { return /* binding */ unregister; }, 18/* harmony export */ unregisterBySelector: function() { return /* binding */ unregisterBySelector; } 19/* harmony export */ }); 20const elementTypeHandlers = new Map(); 21const elementSelectorHandlers = new Map(); 22const register = ({ 23 elementType, 24 id, 25 callback 26}) => { 27 if (!elementTypeHandlers.has(elementType)) { 28 elementTypeHandlers.set(elementType, new Map()); 29 } 30 if (!elementTypeHandlers.get(elementType)?.has(id)) { 31 elementTypeHandlers.get(elementType)?.set(id, callback); 32 } 33}; 34Object.defineProperty(window, 'registerElementorElement', { 35 value: register, 36 enumerable: true 37}); 38const unregister = ({ 39 elementType, 40 id 41}) => { 42 if (!elementTypeHandlers.has(elementType)) { 43 return; 44 } 45 if (id) { 46 elementTypeHandlers.get(elementType)?.delete(id); 47 if (elementTypeHandlers.get(elementType)?.size === 0) { 48 elementTypeHandlers.delete(elementType); 49 } 50 } else { 51 elementTypeHandlers.delete(elementType); 52 } 53}; 54const registerBySelector = ({ 55 id, 56 selector, 57 callback 58}) => { 59 if (!elementSelectorHandlers.has(selector)) { 60 elementSelectorHandlers.set(selector, new Map()); 61 } 62 if (!elementSelectorHandlers.get(selector)?.has(id)) { 63 elementSelectorHandlers.get(selector)?.set(id, callback); 64 } 65}; 66const unregisterBySelector = ({ 67 selector, 68 id 69}) => { 70 if (!elementSelectorHandlers.has(selector)) { 71 return; 72 } 73 if (id) { 74 elementSelectorHandlers.get(selector)?.delete(id); 75 if (elementSelectorHandlers.get(selector)?.size === 0) { 76 elementSelectorHandlers.delete(selector); 77 } 78 } else { 79 elementSelectorHandlers.delete(selector); 80 } 81}; 82 83/***/ }), 84
85/***/ "./packages/packages/core/frontend-handlers/src/init.ts": 86/*!**************************************************************!*\ 87 !*** ./packages/packages/core/frontend-handlers/src/init.ts ***! 88 \**************************************************************/ 89/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 90 91__webpack_require__.r(__webpack_exports__); 92/* harmony export */ __webpack_require__.d(__webpack_exports__, { 93/* harmony export */ init: function() { return /* binding */ init; } 94/* harmony export */ }); 95/* harmony import */ var _lifecycle_events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lifecycle-events */ "./packages/packages/core/frontend-handlers/src/lifecycle-events.ts"); 96 97const ATOMIC_SELECTOR = '[data-e-type]'; 98let domMutationObserverStarted = false; 99const pendingMutationNodes = new Set(); 100let pendingMutationsRafId = 0; 101function init() { 102 window.addEventListener('elementor/element/render', _event => { 103 const event = _event; 104 const { 105 id, 106 type, 107 element 108 } = event.detail; 109 (0,_lifecycle_events__WEBPACK_IMPORTED_MODULE_0__.onElementRender)({ 110 element, 111 elementType: type, 112 elementId: id 113 }); 114 }); 115 window.addEventListener('elementor/element/destroy', _event => { 116 const event = _event; 117 const { 118 id, 119 type, 120 element 121 } = event.detail; 122 (0,_lifecycle_events__WEBPACK_IMPORTED_MODULE_0__.onElementDestroy)({ 123 elementType: type, 124 elementId: id, 125 element 126 }); 127 }); 128 const bootDomHandlers = () => { 129 scanDocumentForAtomicElements(); 130 startObservingDomForNewAtomicElements(); 131 }; 132 document.addEventListener('DOMContentLoaded', bootDomHandlers); 133 if ('loading' !== document.readyState) { 134 bootDomHandlers(); 135 } 136} 137function triggerAtomicRender(atom) { 138 const eType = atom.dataset.eType; 139 const id = atom.dataset.id; 140 if (!eType || !id) { 141 return; 142 } 143 (0,_lifecycle_events__WEBPACK_IMPORTED_MODULE_0__.onElementRender)({ 144 element: atom, 145 elementType: eType, 146 elementId: id 147 }); 148} 149function collectAtomicElementsInSubtree(root) { 150 const found = []; 151 if (root.matches(ATOMIC_SELECTOR)) { 152 found.push(root); 153 } 154 root.querySelectorAll(ATOMIC_SELECTOR).forEach(el => { 155 found.push(el); 156 }); 157 return found; 158} 159function scanDocumentForAtomicElements() { 160 document.querySelectorAll(ATOMIC_SELECTOR).forEach(el => { 161 const atom = el; 162 const { 163 eType, 164 id 165 } = atom.dataset; 166 if (!eType || !id) { 167 return; 168 } 169 triggerAtomicRender(atom); 170 }); 171} 172function startObservingDomForNewAtomicElements() { 173 if (domMutationObserverStarted || 'undefined' === typeof MutationObserver) { 174 return; 175 } 176 domMutationObserverStarted = true; 177 const observer = new MutationObserver(mutations => { 178 for (const mutation of mutations) { 179 mutation.addedNodes.forEach(node => { 180 pendingMutationNodes.add(node); 181 }); 182 } 183 queueProcessPendingMutationNodes(); 184 }); 185 observer.observe(document.documentElement, { 186 childList: true, 187 subtree: true 188 }); 189} 190function queueProcessPendingMutationNodes() { 191 if (pendingMutationsRafId || !pendingMutationNodes.size) { 192 return; 193 } 194 pendingMutationsRafId = requestAnimationFrame(() => { 195 pendingMutationsRafId = 0; 196 const roots = Array.from(pendingMutationNodes); 197 pendingMutationNodes.clear(); 198 const atoms = new Set(); 199 for (const node of roots) { 200 if (Node.ELEMENT_NODE !== node.nodeType) { 201 continue; 202 } 203 collectAtomicElementsInSubtree(node).forEach(atom => { 204 atoms.add(atom); 205 }); 206 } 207 atoms.forEach(atom => triggerAtomicRender(atom)); 208 }); 209} 210 211/***/ }), 212
213/***/ "./packages/packages/core/frontend-handlers/src/lifecycle-events.ts": 214/*!**************************************************************************!*\ 215 !*** ./packages/packages/core/frontend-handlers/src/lifecycle-events.ts ***! 216 \**************************************************************************/ 217/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 218 219__webpack_require__.r(__webpack_exports__); 220/* harmony export */ __webpack_require__.d(__webpack_exports__, { 221/* harmony export */ onElementDestroy: function() { return /* binding */ onElementDestroy; }, 222/* harmony export */ onElementRender: function() { return /* binding */ onElementRender; }, 223/* harmony export */ onElementSelectorRender: function() { return /* binding */ onElementSelectorRender; } 224/* harmony export */ }); 225/* harmony import */ var _handlers_registry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./handlers-registry */ "./packages/packages/core/frontend-handlers/src/handlers-registry.ts"); 226 227const unmountCallbacks = new WeakMap(); 228const ELEMENT_RENDERED_EVENT_NAME = 'elementor/element/rendered'; 229const ELEMENT_DESTROYED_EVENT_NAME = 'elementor/element/destroyed'; 230const dispatchDestroyedEvent = params => { 231 params.element.dispatchEvent(new CustomEvent(ELEMENT_DESTROYED_EVENT_NAME, { 232 bubbles: true, 233 detail: params 234 })); 235}; 236const onElementRender = ({ 237 element, 238 elementType, 239 elementId 240}) => { 241 cleanupOnUnmount(element); 242 const controller = new AbortController(); 243 const manualUnmount = []; 244 const dispatchRenderedEvent = () => { 245 onElementSelectorRender({ 246 element, 247 controller 248 }); 249 element.dispatchEvent(new CustomEvent(ELEMENT_RENDERED_EVENT_NAME, { 250 bubbles: true, 251 detail: { 252 element, 253 elementType, 254 elementId 255 } 256 })); 257 }; 258 259 // When the rendered event is dispatched, the element is not yet connected to the DOM (marionette view case) 260 if (!element.isConnected) { 261 requestAnimationFrame(() => { 262 dispatchRenderedEvent(); 263 }); 264 } else { 265 dispatchRenderedEvent(); 266 } 267 if (!_handlers_registry__WEBPACK_IMPORTED_MODULE_0__.elementTypeHandlers.has(elementType)) { 268 return; 269 } 270 setUnmountEntry({ 271 element, 272 controller, 273 manualUnmount 274 }); 275 Array.from(_handlers_registry__WEBPACK_IMPORTED_MODULE_0__.elementTypeHandlers.get(elementType)?.values() ?? []).forEach(handler => { 276 const settings = element.getAttribute('data-e-settings'); 277 const listenToChildren = elementTypes => ({ 278 render: callback => { 279 const listener = event => { 280 const { 281 elementType: childType 282 } = event.detail; 283 if (!elementTypes.includes(childType)) { 284 return; 285 } 286 callback(event); 287 }; 288 element.addEventListener(ELEMENT_RENDERED_EVENT_NAME, listener, { 289 signal: controller.signal 290 }); 291 element.addEventListener(ELEMENT_DESTROYED_EVENT_NAME, listener, { 292 signal: controller.signal 293 }); 294 } 295 }); 296 const unmount = handler({ 297 element, 298 signal: controller.signal, 299 settings: settings ? JSON.parse(settings) : {}, 300 listenToChildren 301 }); 302 if (typeof unmount === 'function') { 303 manualUnmount.push(unmount); 304 } 305 }); 306}; 307const onElementSelectorRender = ({ 308 element, 309 controller 310}) => { 311 let requiresCleanup = false; 312 const manualUnmount = []; 313 Array.from(_handlers_registry__WEBPACK_IMPORTED_MODULE_0__.elementSelectorHandlers.entries() ?? []).forEach(([selector, handlers]) => { 314 if (!element.matches(selector)) { 315 return; 316 } 317 requiresCleanup = true; 318 Array.from(handlers.values() ?? []).forEach(handler => { 319 const settings = element.getAttribute('data-e-settings'); 320 const unmount = handler({ 321 element, 322 signal: controller.signal, 323 settings: settings ? JSON.parse(settings) : {} 324 }); 325 if (typeof unmount === 'function') { 326 manualUnmount.push(unmount); 327 } 328 }); 329 }); 330 if (requiresCleanup) { 331 setUnmountEntry({ 332 element, 333 controller, 334 manualUnmount 335 }); 336 } 337}; 338const onElementDestroy = ({ 339 elementType, 340 elementId, 341 element 342}) => { 343 if (!element) { 344 return; 345 } 346 cleanupOnUnmount(element); 347 dispatchDestroyedEvent({ 348 element, 349 elementType, 350 elementId 351 }); 352}; 353const setUnmountEntry = ({ 354 element, 355 controller, 356 manualUnmount 357}) => { 358 const existingEntry = unmountCallbacks.get(element); 359 if (existingEntry) { 360 existingEntry.manualUnmount.push(...manualUnmount); 361 } else { 362 unmountCallbacks.set(element, { 363 controller, 364 manualUnmount 365 }); 366 } 367}; 368const cleanupOnUnmount = element => { 369 const entry = unmountCallbacks.get(element); 370 if (entry) { 371 entry.controller.abort(); 372 entry.manualUnmount.forEach(callback => callback()); 373 unmountCallbacks.delete(element); 374 } 375}; 376 377/***/ })
vendor: 4,048 bytes, lines 377-458
377 378 379/******/ }); 380/************************************************************************/ 381/******/ // The module cache 382/******/ var __webpack_module_cache__ = {}; 383/******/ 384/******/ // The require function 385/******/ function __webpack_require__(moduleId) { 386/******/ // Check if module is in cache 387/******/ var cachedModule = __webpack_module_cache__[moduleId]; 388/******/ if (cachedModule !== undefined) { 389/******/ return cachedModule.exports; 390/******/ } 391/******/ // Create a new module (and put it into the cache) 392/******/ var module = __webpack_module_cache__[moduleId] = { 393/******/ // no module.id needed 394/******/ // no module.loaded needed 395/******/ exports: {} 396/******/ }; 397/******/ 398/******/ // Execute the module function 399/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); 400/******/ 401/******/ // Return the exports of the module 402/******/ return module.exports; 403/******/ } 404/******/ 405/************************************************************************/ 406/******/ /* webpack/runtime/define property getters */ 407/******/ !function() { 408/******/ // define getter functions for harmony exports 409/******/ __webpack_require__.d = function(exports, definition) { 410/******/ for(var key in definition) { 411/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { 412/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); 413/******/ } 414/******/ } 415/******/ }; 416/******/ }(); 417/******/ 418/******/ /* webpack/runtime/hasOwnProperty shorthand */ 419/******/ !function() { 420/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } 421/******/ }(); 422/******/ 423/******/ /* webpack/runtime/make namespace object */ 424/******/ !function() { 425/******/ // define __esModule on exports 426/******/ __webpack_require__.r = function(exports) { 427/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 428/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 429/******/ } 430/******/ Object.defineProperty(exports, '__esModule', { value: true }); 431/******/ }; 432/******/ }(); 433/******/ 434/************************************************************************/ 435var __webpack_exports__ = {}; 436// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk. 437!function() { 438/*!***************************************************************!*\ 439 !*** ./packages/packages/core/frontend-handlers/src/index.ts ***! 440 \***************************************************************/ 441__webpack_require__.r(__webpack_exports__); 442/* harmony export */ __webpack_require__.d(__webpack_exports__, { 443/* harmony export */ init: function() { return /* reexport safe */ _init__WEBPACK_IMPORTED_MODULE_1__.init; }, 444/* harmony export */ register: function() { return /* reexport safe */ _handlers_registry__WEBPACK_IMPORTED_MODULE_0__.register; }, 445/* harmony export */ registerBySelector: function() { return /* reexport safe */ _handlers_registry__WEBPACK_IMPORTED_MODULE_0__.registerBySelector; }, 446/* harmony export */ unregister: function() { return /* reexport safe */ _handlers_registry__WEBPACK_IMPORTED_MODULE_0__.unregister; }, 447/* harmony export */ unregisterBySelector: function() { return /* reexport safe */ _handlers_registry__WEBPACK_IMPORTED_MODULE_0__.unregisterBySelector; } 448/* harmony export */ }); 449/* harmony import */ var _handlers_registry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./handlers-registry */ "./packages/packages/core/frontend-handlers/src/handlers-registry.ts"); 450/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./init */ "./packages/packages/core/frontend-handlers/src/init.ts"); 451 452 453}(); 454(window.elementorV2 = window.elementorV2 || {}).frontendHandlers = __webpack_exports__; 455/******/ })() 456; 457window.elementorV2.frontendHandlers?.init?.(); 458//# sourceMappingURL=frontend-handlers.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.