PageSourceSearch

https://www.uba.com.ua/wp-content/plugins/elementor/assets/js/pack…/frontend-handlers.js?ver=4.2.4

js uba.com.ua collected 2026-10-08 12:26:03 UTC 15,411 bytes, 458 lines download raw bytes

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.