PluginProbe
Elementor Website Builder – more than just a page builder / 3.34.0-beta1
Elementor Website Builder – more than just a page builder v3.34.0-beta1
4.3.4 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 All 457 releases
← All changes | assets/js/frontend-modules.js +1887 -7 4.2.0-dev2 → 3.34.0-beta1 View file →
@@ -1,6 +1,1608 @@
1 1 (self["webpackChunkelementorFrontend"] = self["webpackChunkelementorFrontend"] || []).push([["frontend-modules"],{
2 2
3 +/***/ "../app/assets/js/event-track/apps-event-tracking.js":
4 +/*!***********************************************************!*\
5 + !*** ../app/assets/js/event-track/apps-event-tracking.js ***!
6 + \***********************************************************/
7 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
8 +
9 +"use strict";
10 +
11 +
12 +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
13 +Object.defineProperty(exports, "__esModule", ({
14 + value: true
15 +}));
16 +exports.appsEventTrackingDispatch = exports.AppsEventTracking = void 0;
17 +var _eventsConfig = _interopRequireDefault(__webpack_require__(/*! ../../../../core/common/modules/events-manager/assets/js/events-config */ "../core/common/modules/events-manager/assets/js/events-config.js"));
18 +const EVENTS_MAP = {
19 + PAGE_VIEWS_WEBSITE_TEMPLATES: 'page_views_website_templates',
20 + KITS_CLOUD_UPGRADE_CLICKED: 'kits_cloud_upgrade_clicked',
21 + EXPORT_KIT_CUSTOMIZATION: 'export_kit_customization',
22 + IMPORT_KIT_CUSTOMIZATION: 'import_kit_customization',
23 + KIT_IMPORT_STATUS: 'kit_import_status',
24 + KIT_CLOUD_LIBRARY_APPLY: 'kit_cloud_library_apply',
25 + KIT_CLOUD_LIBRARY_DELETE: 'kit_cloud_library_delete',
26 + IMPORT_EXPORT_ADMIN_ACTION: 'ie_admin_action',
27 + KIT_IMPORT_UPLOAD_FILE: 'kit_import_upload_file'
28 +};
29 +const appsEventTrackingDispatch = (command, eventParams) => {
30 + // Add existing eventParams key value pair to the data/details object.
31 + const objectCreator = (array, obj) => {
32 + for (const key of array) {
33 + if (eventParams.hasOwnProperty(key) && eventParams[key] !== null) {
34 + obj[key] = eventParams[key];
35 + }
36 + }
37 + return obj;
38 + };
39 + const dataKeys = [];
40 + const detailsKeys = ['layout', 'site_part', 'error', 'document_name', 'document_type', 'view_type_clicked', 'tag', 'sort_direction', 'sort_type', 'action', 'grid_location', 'kit_name', 'page_source', 'element_position', 'element', 'event_type', 'modal_type', 'method', 'status', 'step', 'item', 'category', 'element_location', 'search_term', 'section', 'site_area'];
41 + const data = {};
42 + const details = {};
43 + const init = () => {
44 + objectCreator(detailsKeys, details);
45 + objectCreator(dataKeys, data);
46 + const commandSplit = command.split('/');
47 + data.placement = commandSplit[0];
48 + data.event = commandSplit[1];
49 +
50 + // If 'details' is not empty, add the details object to the data object.
51 + if (Object.keys(details).length) {
52 + data.details = details;
53 + }
54 + };
55 + init();
56 + $e.run(command, data);
57 +};
58 +exports.appsEventTrackingDispatch = appsEventTrackingDispatch;
59 +class AppsEventTracking {
60 + static dispatchEvent(eventName, payload) {
61 + return elementorCommon.eventsManager.dispatchEvent(eventName, payload);
62 + }
63 + static sendPageViewsWebsiteTemplates(page) {
64 + return this.dispatchEvent(EVENTS_MAP.PAGE_VIEWS_WEBSITE_TEMPLATES, {
65 + trigger: _eventsConfig.default.triggers.pageLoaded,
66 + page_loaded: page,
67 + secondary_location: page
68 + });
69 + }
70 + static sendKitsCloudUpgradeClicked(upgradeLocation) {
71 + return this.dispatchEvent(EVENTS_MAP.KITS_CLOUD_UPGRADE_CLICKED, {
72 + trigger: _eventsConfig.default.triggers.click,
73 + secondary_location: upgradeLocation,
74 + upgrade_location: upgradeLocation
75 + });
76 + }
77 + static sendExportKitCustomization(payload) {
78 + return this.dispatchEvent(EVENTS_MAP.EXPORT_KIT_CUSTOMIZATION, {
79 + trigger: _eventsConfig.default.triggers.click,
80 + ...payload
81 + });
82 + }
83 + static sendImportKitCustomization(payload) {
84 + return this.dispatchEvent(EVENTS_MAP.IMPORT_KIT_CUSTOMIZATION, {
85 + trigger: _eventsConfig.default.triggers.click,
86 + ...payload
87 + });
88 + }
89 + static sendKitImportStatus(error = null) {
90 + const isError = !!error;
91 + return this.dispatchEvent(EVENTS_MAP.KIT_IMPORT_STATUS, {
92 + kit_import_status: !isError,
93 + ...(isError && {
94 + kit_import_error: error.message
95 + })
96 + });
97 + }
98 + static sendKitCloudLibraryApply(kitId, kitApplyUrl) {
99 + return this.dispatchEvent(EVENTS_MAP.KIT_CLOUD_LIBRARY_APPLY, {
100 + trigger: _eventsConfig.default.triggers.click,
101 + kit_cloud_id: kitId,
102 + ...(kitApplyUrl && {
103 + kit_apply_url: kitApplyUrl
104 + })
105 + });
106 + }
107 + static sendKitCloudLibraryDelete() {
108 + return this.dispatchEvent(EVENTS_MAP.KIT_CLOUD_LIBRARY_DELETE, {
109 + trigger: _eventsConfig.default.triggers.click
110 + });
111 + }
112 + static sendImportExportAdminAction(actionType) {
113 + return this.dispatchEvent(EVENTS_MAP.IMPORT_EXPORT_ADMIN_ACTION, {
114 + trigger: _eventsConfig.default.triggers.click,
115 + action_type: actionType
116 + });
117 + }
118 + static sendKitImportUploadFile(status) {
119 + return this.dispatchEvent(EVENTS_MAP.KIT_IMPORT_UPLOAD_FILE, {
120 + kit_import_upload_file_status: status
121 + });
122 + }
123 +}
124 +exports.AppsEventTracking = AppsEventTracking;
125 +
126 +/***/ }),
127 +
128 +/***/ "../app/assets/js/event-track/dashboard/action-controls.js":
129 +/*!*****************************************************************!*\
130 + !*** ../app/assets/js/event-track/dashboard/action-controls.js ***!
131 + \*****************************************************************/
132 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
133 +
134 +"use strict";
135 +
136 +
137 +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
138 +Object.defineProperty(exports, "__esModule", ({
139 + value: true
140 +}));
141 +exports["default"] = void 0;
142 +__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
143 +__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js");
144 +var _wpDashboardTracking = _interopRequireWildcard(__webpack_require__(/*! ../wp-dashboard-tracking */ "../app/assets/js/event-track/wp-dashboard-tracking.js"));
145 +var _utils = __webpack_require__(/*! ./utils */ "../app/assets/js/event-track/dashboard/utils.js");
146 +var _baseTracking = _interopRequireDefault(__webpack_require__(/*! ./base-tracking */ "../app/assets/js/event-track/dashboard/base-tracking.js"));
147 +function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
148 +const EXCLUDED_SELECTORS = {
149 + ADMIN_MENU: '#adminmenu',
150 + TOP_BAR: '.e-admin-top-bar',
151 + WP_ADMIN_BAR: '#wpadminbar',
152 + SUBMENU: '.wp-submenu',
153 + PROMO_PAGE: '.e-feature-promotion',
154 + PROMO_BLANK_STATE: '.elementor-blank_state',
155 + APP: '.e-app'
156 +};
157 +class ActionControlTracking extends _baseTracking.default {
158 + static init() {
159 + if (!_utils.DashboardUtils.isElementorPage()) {
160 + return;
161 + }
162 + this.attachDelegatedHandlers();
163 + this.addTrackingAttributesToFilterButtons();
164 + this.initializeLinkDataIds();
165 + }
166 + static initializeLinkDataIds() {
167 + const initializeLinks = () => {
168 + const links = document.querySelectorAll('a[href]');
169 + links.forEach(link => {
170 + if (this.isExcludedElement(link) || this.isNavigationLink(link) || link.hasAttribute('data-id')) {
171 + return;
172 + }
173 + const href = link.getAttribute('href');
174 + if (!href) {
175 + return;
176 + }
177 + const cleanedHref = this.removeNonceFromUrl(href);
178 + if (cleanedHref) {
179 + link.setAttribute('data-id', cleanedHref);
180 + }
181 + });
182 + };
183 + if ('loading' === document.readyState) {
184 + document.addEventListener('DOMContentLoaded', initializeLinks);
185 + } else {
186 + initializeLinks();
187 + }
188 + }
189 + static addTrackingAttributesToFilterButtons() {
190 + const body = document.body;
191 + if (!body) {
192 + return;
193 + }
194 + let screenPrefix = '';
195 + switch (true) {
196 + case body.classList.contains('post-type-elementor_library'):
197 + screenPrefix = 'elementor_library-library';
198 + break;
199 + case body.classList.contains('post-type-e-floating-buttons'):
200 + screenPrefix = 'e-floating-buttons';
201 + break;
202 + default:
203 + return;
204 + }
205 + const addDataIdToListTableButtons = () => {
206 + const buttonConfigs = [{
207 + id: 'post-query-submit',
208 + suffix: 'filter'
209 + }, {
210 + id: 'search-submit',
211 + suffix: 'search'
212 + }, {
213 + id: 'doaction',
214 + suffix: 'apply'
215 + }, {
216 + id: 'doaction2',
217 + suffix: 'apply-bottom'
218 + }];
219 + buttonConfigs.forEach(config => {
220 + const button = document.getElementById(config.id);
221 + if (!button || button.hasAttribute('data-id')) {
222 + return;
223 + }
224 + button.setAttribute('data-id', `${screenPrefix}-button-${config.suffix}`);
225 + });
226 + };
227 + if ('loading' === document.readyState) {
228 + document.addEventListener('DOMContentLoaded', addDataIdToListTableButtons);
229 + } else {
230 + addDataIdToListTableButtons();
231 + }
232 + }
233 + static isExcludedElement(element) {
234 + for (const selector of Object.values(EXCLUDED_SELECTORS)) {
235 + if (element.closest(selector)) {
236 + return true;
237 + }
238 + }
239 + if (element.classList.contains('go-pro')) {
240 + return true;
241 + }
242 + return false;
243 + }
244 + static attachDelegatedHandlers() {
245 + const FILTER_BUTTON_IDS = ['search-submit', 'post-query-submit'];
246 + this.addEventListenerTracked(document, 'click', event => {
247 + const base = event.target && 1 === event.target.nodeType ? event.target : event.target?.parentElement;
248 + if (!base) {
249 + return;
250 + }
251 + const button = base.closest('button, input[type="submit"], input[type="button"], .button, .e-btn');
252 + if (button && !this.isExcludedElement(button)) {
253 + if (FILTER_BUTTON_IDS.includes(button.id)) {
254 + this.trackControl(button, _wpDashboardTracking.CONTROL_TYPES.FILTER);
255 + return;
256 + }
257 + this.trackControl(button, _wpDashboardTracking.CONTROL_TYPES.BUTTON);
258 + return;
259 + }
260 + const link = base.closest('a');
261 + if (link && !this.isExcludedElement(link) && !this.isNavigationLink(link)) {
262 + this.trackControl(link, _wpDashboardTracking.CONTROL_TYPES.LINK);
263 + }
264 + }, {
265 + capture: false
266 + });
267 + this.addEventListenerTracked(document, 'change', event => {
268 + const base = event.target && 1 === event.target.nodeType ? event.target : event.target?.parentElement;
269 + if (!base) {
270 + return;
271 + }
272 + const toggle = base.closest('.components-toggle-control');
273 + if (toggle && !this.isExcludedElement(toggle)) {
274 + this.trackControl(toggle, _wpDashboardTracking.CONTROL_TYPES.TOGGLE);
275 + return;
276 + }
277 + const checkbox = base.closest('input[type="checkbox"]');
278 + if (checkbox && !this.isExcludedElement(checkbox)) {
279 + this.trackControl(checkbox, _wpDashboardTracking.CONTROL_TYPES.CHECKBOX);
280 + return;
281 + }
282 + const radio = base.closest('input[type="radio"]');
283 + if (radio && !this.isExcludedElement(radio)) {
284 + this.trackControl(radio, _wpDashboardTracking.CONTROL_TYPES.RADIO);
285 + return;
286 + }
287 + const select = base.closest('select');
288 + if (select && !this.isExcludedElement(select)) {
289 + this.trackControl(select, _wpDashboardTracking.CONTROL_TYPES.SELECT);
290 + }
291 + });
292 + }
293 + static isNavigationLink(link) {
294 + const href = link.getAttribute('href');
295 + if (!href) {
296 + return false;
297 + }
298 + if (href.startsWith('#') && href.includes('tab')) {
299 + return true;
300 + }
301 + if (link.classList.contains('nav-tab')) {
302 + return true;
303 + }
304 + const isInNavigation = link.closest('.wp-submenu, #adminmenu, .e-admin-top-bar, #wpadminbar');
305 + return !!isInNavigation;
306 + }
307 + static trackControl(element, controlType) {
308 + const controlIdentifier = this.extractControlIdentifier(element, controlType);
309 + if (!controlIdentifier) {
310 + return;
311 + }
312 + _wpDashboardTracking.default.trackActionControl(controlIdentifier, controlType);
313 + }
314 + static extractControlIdentifier(element, controlType) {
315 + if (_wpDashboardTracking.CONTROL_TYPES.RADIO === controlType) {
316 + const name = element.getAttribute('name');
317 + const value = element.value || element.getAttribute('value');
318 + if (name && value) {
319 + return `${name}-${value}`;
320 + }
321 + if (name) {
322 + return name;
323 + }
324 + }
325 + if (_wpDashboardTracking.CONTROL_TYPES.SELECT === controlType) {
326 + const name = element.getAttribute('name');
327 + if (name) {
328 + return name;
329 + }
330 + }
331 + if (_wpDashboardTracking.CONTROL_TYPES.CHECKBOX === controlType) {
332 + const name = element.getAttribute('name');
333 + if (name) {
334 + const checkboxesWithSameName = document.querySelectorAll(`input[type="checkbox"][name="${CSS.escape(name)}"]`);
335 + if (checkboxesWithSameName.length > 1) {
336 + const value = element.value || element.getAttribute('value');
337 + if (value) {
338 + return `${name}-${value}`;
339 + }
340 + }
341 + return name;
342 + }
343 + }
344 + if (_wpDashboardTracking.CONTROL_TYPES.LINK === controlType) {
345 + const dataId = element.getAttribute('data-id');
346 + if (dataId) {
347 + return dataId;
348 + }
349 + const href = element.getAttribute('href');
350 + if (href) {
351 + return this.removeNonceFromUrl(href);
352 + }
353 + }
354 + if (_wpDashboardTracking.CONTROL_TYPES.BUTTON === controlType || _wpDashboardTracking.CONTROL_TYPES.TOGGLE === controlType || _wpDashboardTracking.CONTROL_TYPES.FILTER === controlType) {
355 + const dataId = element.getAttribute('data-id');
356 + if (dataId) {
357 + return dataId;
358 + }
359 + const classIdMatch = this.extractClassId(element);
360 + if (classIdMatch) {
361 + return classIdMatch;
362 + }
363 + }
364 + return '';
365 + }
366 + static extractClassId(element) {
367 + const classes = element.className;
368 + if (!classes || 'string' !== typeof classes) {
369 + return '';
370 + }
371 + const classList = classes.split(' ');
372 + for (const cls of classList) {
373 + if (cls.startsWith('e-id-')) {
374 + return cls.substring(5);
375 + }
376 + }
377 + return '';
378 + }
379 + static removeNonceFromUrl(url) {
380 + try {
381 + const urlObj = new URL(url, window.location.origin);
382 + urlObj.searchParams.delete('_wpnonce');
383 + const postParam = urlObj.searchParams.get('post');
384 + if (postParam !== null && /^[0-9]+$/.test(postParam)) {
385 + urlObj.searchParams.delete('post');
386 + }
387 + return urlObj.pathname + urlObj.search + urlObj.hash;
388 + } catch (e) {
389 + return url;
390 + }
391 + }
392 +}
393 +var _default = exports["default"] = ActionControlTracking;
394 +
395 +/***/ }),
396 +
397 +/***/ "../app/assets/js/event-track/dashboard/base-tracking.js":
398 +/*!***************************************************************!*\
399 + !*** ../app/assets/js/event-track/dashboard/base-tracking.js ***!
400 + \***************************************************************/
401 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
402 +
403 +"use strict";
404 +
405 +
406 +Object.defineProperty(exports, "__esModule", ({
407 + value: true
408 +}));
409 +exports["default"] = void 0;
410 +__webpack_require__(/*! core-js/modules/es.array.push.js */ "../node_modules/core-js/modules/es.array.push.js");
411 +__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
412 +__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js");
413 +class BaseTracking {
414 + static ensureOwnArrays() {
415 + if (!Object.prototype.hasOwnProperty.call(this, 'observers')) {
416 + this.observers = [];
417 + }
418 + if (!Object.prototype.hasOwnProperty.call(this, 'eventListeners')) {
419 + this.eventListeners = [];
420 + }
421 + }
422 + static destroy() {
423 + this.ensureOwnArrays();
424 + this.observers.forEach(observer => observer.disconnect());
425 + this.observers = [];
426 + this.eventListeners.forEach(({
427 + target,
428 + type,
429 + handler,
430 + options
431 + }) => {
432 + target.removeEventListener(type, handler, options);
433 + });
434 + this.eventListeners = [];
435 + }
436 + static addObserver(target, options, callback) {
437 + this.ensureOwnArrays();
438 + const observer = new MutationObserver(callback);
439 + observer.observe(target, options);
440 + this.observers.push(observer);
441 + return observer;
442 + }
443 + static addEventListenerTracked(target, type, handler, options = {}) {
444 + this.ensureOwnArrays();
445 + target.addEventListener(type, handler, options);
446 + this.eventListeners.push({
447 + target,
448 + type,
449 + handler,
450 + options
451 + });
452 + }
453 +}
454 +var _default = exports["default"] = BaseTracking;
455 +
456 +/***/ }),
457 +
458 +/***/ "../app/assets/js/event-track/dashboard/menu-promotion.js":
459 +/*!****************************************************************!*\
460 + !*** ../app/assets/js/event-track/dashboard/menu-promotion.js ***!
461 + \****************************************************************/
462 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
463 +
464 +"use strict";
465 +
466 +
467 +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
468 +Object.defineProperty(exports, "__esModule", ({
469 + value: true
470 +}));
471 +exports["default"] = void 0;
472 +var _wpDashboardTracking = _interopRequireDefault(__webpack_require__(/*! ../wp-dashboard-tracking */ "../app/assets/js/event-track/wp-dashboard-tracking.js"));
473 +var _baseTracking = _interopRequireDefault(__webpack_require__(/*! ./base-tracking */ "../app/assets/js/event-track/dashboard/base-tracking.js"));
474 +const PROMO_MENU_ITEMS = {
475 + go_elementor_pro: 'Upgrade'
476 +};
477 +class MenuPromotionTracking extends _baseTracking.default {
478 + static init() {
479 + this.attachDelegatedTracking();
480 + }
481 + static attachDelegatedTracking() {
482 + this.addEventListenerTracked(document, 'click', event => {
483 + const target = event.target;
484 + if (!target) {
485 + return;
486 + }
487 + const link = target.closest('a');
488 + if (!link) {
489 + return;
490 + }
491 + const href = link.getAttribute('href');
492 + if (!href) {
493 + return;
494 + }
495 + const menuItemKey = this.extractPromoMenuKey(href);
496 + if (!menuItemKey) {
497 + return;
498 + }
499 + this.handleMenuPromoClick(link, menuItemKey);
500 + }, {
501 + capture: true
502 + });
503 + }
504 + static extractPromoMenuKey(href) {
505 + for (const menuItemKey of Object.keys(PROMO_MENU_ITEMS)) {
506 + if (href.includes(`page=${menuItemKey}`)) {
507 + return menuItemKey;
508 + }
509 + }
510 + return null;
511 + }
512 + static handleMenuPromoClick(menuItem, menuItemKey) {
513 + const destination = menuItem.getAttribute('href');
514 + const promoName = PROMO_MENU_ITEMS[menuItemKey];
515 + const path = menuItemKey.replace('elementor_', '').replace(/_/g, '/');
516 + _wpDashboardTracking.default.trackPromoClicked(promoName, destination, path);
517 + }
518 +}
519 +var _default = exports["default"] = MenuPromotionTracking;
520 +
521 +/***/ }),
522 +
523 +/***/ "../app/assets/js/event-track/dashboard/navigation.js":
524 +/*!************************************************************!*\
525 + !*** ../app/assets/js/event-track/dashboard/navigation.js ***!
526 + \************************************************************/
527 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
528 +
529 +"use strict";
530 +
531 +
532 +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
533 +Object.defineProperty(exports, "__esModule", ({
534 + value: true
535 +}));
536 +exports["default"] = void 0;
537 +var _wpDashboardTracking = _interopRequireWildcard(__webpack_require__(/*! ../wp-dashboard-tracking */ "../app/assets/js/event-track/wp-dashboard-tracking.js"));
538 +var _baseTracking = _interopRequireDefault(__webpack_require__(/*! ./base-tracking */ "../app/assets/js/event-track/dashboard/base-tracking.js"));
539 +function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
540 +const ELEMENTOR_MENU_SELECTORS = {
541 + ELEMENTOR_TOP_LEVEL: 'li#toplevel_page_elementor',
542 + TEMPLATES_TOP_LEVEL: 'li#menu-posts-elementor_library',
543 + ADMIN_MENU: '#adminmenu',
544 + TOP_LEVEL_LINK: '.wp-menu-name',
545 + SUBMENU_CONTAINER: '.wp-submenu',
546 + SUBMENU_ITEM: '.wp-submenu li a',
547 + SUBMENU_ITEM_TOP_LEVEL: '.wp-has-submenu'
548 +};
549 +class NavigationTracking extends _baseTracking.default {
550 + static init() {
551 + this.attachElementorMenuTracking();
552 + this.attachTemplatesMenuTracking();
553 + }
554 + static attachElementorMenuTracking() {
555 + const elementorMenu = document.querySelector(ELEMENTOR_MENU_SELECTORS.ELEMENTOR_TOP_LEVEL);
556 + if (!elementorMenu) {
557 + return;
558 + }
559 + this.attachMenuTracking(elementorMenu, 'Elementor');
560 + }
561 + static attachTemplatesMenuTracking() {
562 + const templatesMenu = document.querySelector(ELEMENTOR_MENU_SELECTORS.TEMPLATES_TOP_LEVEL);
563 + if (!templatesMenu) {
564 + return;
565 + }
566 + this.attachMenuTracking(templatesMenu, 'Templates');
567 + }
568 + static attachMenuTracking(menuElement, menuName) {
569 + this.addEventListenerTracked(menuElement, 'click', event => {
570 + this.handleMenuClick(event, menuName);
571 + });
572 + }
573 + static handleMenuClick(event, menuName) {
574 + const link = event.target.closest('a');
575 + if (!link) {
576 + return;
577 + }
578 + const isTopLevel = link.classList.contains('menu-top');
579 + const itemId = this.extractItemId(link);
580 + const area = this.determineNavArea(link);
581 + _wpDashboardTracking.default.trackNavClicked(itemId, isTopLevel ? null : menuName, area);
582 + }
583 + static extractItemId(link) {
584 + const textContent = link.textContent.trim();
585 + if (textContent) {
586 + return textContent;
587 + }
588 + const href = link.getAttribute('href');
589 + if (href) {
590 + const urlParams = new URLSearchParams(href.split('?')[1] || '');
591 + const page = urlParams.get('page');
592 + const postType = urlParams.get('post_type');
593 + if (page) {
594 + return page;
595 + }
596 + if (postType) {
597 + return postType;
598 + }
599 + }
600 + const id = link.getAttribute('id');
601 + if (id) {
602 + return id;
603 + }
604 + return 'unknown';
605 + }
606 + static determineNavArea(link) {
607 + const parentMenu = link.closest('li.menu-top');
608 + if (parentMenu) {
609 + const isSubmenuItem = link.closest(ELEMENTOR_MENU_SELECTORS.SUBMENU_CONTAINER);
610 + if (isSubmenuItem) {
611 + const submenuElement = link.closest(ELEMENTOR_MENU_SELECTORS.SUBMENU_ITEM_TOP_LEVEL);
612 + if (submenuElement.classList.contains('wp-not-current-submenu')) {
613 + return _wpDashboardTracking.NAV_AREAS.HOVER_MENU;
614 + }
615 + return _wpDashboardTracking.NAV_AREAS.SUBMENU;
616 + }
617 + return _wpDashboardTracking.NAV_AREAS.LEFT_MENU;
618 + }
619 + return _wpDashboardTracking.NAV_AREAS.LEFT_MENU;
620 + }
621 +}
622 +var _default = exports["default"] = NavigationTracking;
623 +
624 +/***/ }),
625 +
626 +/***/ "../app/assets/js/event-track/dashboard/plugin-actions.js":
627 +/*!****************************************************************!*\
628 + !*** ../app/assets/js/event-track/dashboard/plugin-actions.js ***!
629 + \****************************************************************/
630 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
631 +
632 +"use strict";
633 +
634 +
635 +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
636 +Object.defineProperty(exports, "__esModule", ({
637 + value: true
638 +}));
639 +exports["default"] = void 0;
640 +var _wpDashboardTracking = _interopRequireDefault(__webpack_require__(/*! ../wp-dashboard-tracking */ "../app/assets/js/event-track/wp-dashboard-tracking.js"));
641 +var _baseTracking = _interopRequireDefault(__webpack_require__(/*! ./base-tracking */ "../app/assets/js/event-track/dashboard/base-tracking.js"));
642 +const PLUGIN_TYPE = {
643 + ELEMENTOR: 'core',
644 + ELEMENTOR_PRO: 'pro'
645 +};
646 +class PluginActions extends _baseTracking.default {
647 + static selectedReason = null;
648 + static init() {
649 + this.attachCoreDeactivationTracking();
650 + this.attachProDeactivationTracking();
651 + this.attachProDeletionTracking();
652 + }
653 + static attachCoreDeactivationTracking() {
654 + const dialogForm = document.querySelector('#elementor-deactivate-feedback-dialog-form');
655 + if (!dialogForm) {
656 + return;
657 + }
658 + this.addEventListenerTracked(dialogForm, 'change', event => {
659 + const target = event.target;
660 + if (target.classList.contains('elementor-deactivate-feedback-dialog-input')) {
661 + this.selectedReason = target.value;
662 + }
663 + });
664 + this.observeModalButtons();
665 + }
666 + static attachProDeactivationTracking() {
667 + const pluginsTable = document.querySelector('.plugins');
668 + if (!pluginsTable) {
669 + return;
670 + }
671 + this.addEventListenerTracked(pluginsTable, 'click', event => {
672 + const link = event.target.closest('a');
673 + if (link && 'deactivate-elementor-pro' === link.id) {
674 + this.trackProDeactivation();
675 + }
676 + }, {
677 + capture: true
678 + });
679 + }
680 + static observeModalButtons() {
681 + const checkAndAttachDelegation = () => {
682 + const modal = document.querySelector('#elementor-deactivate-feedback-modal');
683 + if (!modal) {
684 + return false;
685 + }
686 + this.addEventListenerTracked(modal, 'click', event => {
687 + const submitButton = event.target.closest('.dialog-submit');
688 + const skipButton = event.target.closest('.dialog-skip');
689 + if (submitButton) {
690 + this.trackCoreDeactivation('submit&deactivate');
691 + } else if (skipButton) {
692 + this.trackCoreDeactivation('skip&deactivate');
693 + }
694 + }, {
695 + capture: true
696 + });
697 + return true;
698 + };
699 + if (checkAndAttachDelegation()) {
700 + return;
701 + }
702 + this.addObserver(document.body, {
703 + childList: true,
704 + subtree: true
705 + }, (mutations, observer) => {
706 + if (checkAndAttachDelegation()) {
707 + observer.disconnect();
708 + }
709 + });
710 + }
711 + static getUserInput() {
712 + const reasonsWithInput = ['found_a_better_plugin', 'other'];
713 + if (!this.selectedReason || !reasonsWithInput.includes(this.selectedReason)) {
714 + return null;
715 + }
716 + const inputField = document.querySelector(`input[name="reason_${this.selectedReason}"]`);
717 + if (inputField && inputField.value) {
718 + return inputField.value;
719 + }
720 + return null;
721 + }
722 + static trackCoreDeactivation(action) {
723 + const properties = {
724 + deactivate_form_submit: action,
725 + deactivate_plugin_type: PLUGIN_TYPE.ELEMENTOR
726 + };
727 + if (this.selectedReason) {
728 + properties.deactivate_feedback_reason = this.selectedReason;
729 + }
730 + const userInput = this.getUserInput();
731 + if (userInput) {
732 + properties.deactivate_feedback_reason += `/${userInput}`;
733 + }
734 + _wpDashboardTracking.default.dispatchEvent('wpdash_deactivate_plugin', properties, {
735 + send_immediately: true
736 + });
737 + }
738 + static trackProDeactivation() {
739 + this.trackProAction('deactivate');
740 + }
741 + static attachProDeletionTracking() {
742 + if ('undefined' === typeof jQuery) {
743 + return;
744 + }
745 + jQuery(document).on('wp-plugin-deleting', (event, args) => {
746 + if ('elementor-pro' === args?.slug) {
747 + this.trackProAction('delete');
748 + }
749 + });
750 + }
751 + static destroy() {
752 + if ('undefined' !== typeof jQuery) {
753 + jQuery(document).off('wp-plugin-deleting');
754 + }
755 + _baseTracking.default.destroy.call(this);
756 + }
757 + static trackProAction(action) {
758 + const eventMap = {
759 + deactivate: {
760 + eventName: 'wpdash_deactivate_plugin',
761 + propertyKey: 'deactivate_plugin_type'
762 + },
763 + delete: {
764 + eventName: 'wpdash_delete_plugin',
765 + propertyKey: 'plugin_delete'
766 + }
767 + };
768 + const config = eventMap[action];
769 + if (!config) {
770 + return;
771 + }
772 + const properties = {
773 + [config.propertyKey]: PLUGIN_TYPE.ELEMENTOR_PRO
774 + };
775 + _wpDashboardTracking.default.dispatchEvent(config.eventName, properties, {
776 + send_immediately: true
777 + });
778 + }
779 +}
780 +var _default = exports["default"] = PluginActions;
781 +
782 +/***/ }),
783 +
784 +/***/ "../app/assets/js/event-track/dashboard/promotion.js":
785 +/*!***********************************************************!*\
786 + !*** ../app/assets/js/event-track/dashboard/promotion.js ***!
787 + \***********************************************************/
788 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
789 +
790 +"use strict";
791 +
792 +
793 +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
794 +Object.defineProperty(exports, "__esModule", ({
795 + value: true
796 +}));
797 +exports["default"] = void 0;
798 +var _wpDashboardTracking = _interopRequireDefault(__webpack_require__(/*! ../wp-dashboard-tracking */ "../app/assets/js/event-track/wp-dashboard-tracking.js"));
799 +var _baseTracking = _interopRequireDefault(__webpack_require__(/*! ./base-tracking */ "../app/assets/js/event-track/dashboard/base-tracking.js"));
800 +const PROMO_SELECTORS = {
801 + PROMO_PAGE: '.e-feature-promotion, .elementor-settings-form-page, #elementor-element-manager-wrap',
802 + PROMO_BLANK_STATE: '.elementor-blank_state',
803 + CTA_BUTTON: '.go-pro',
804 + TITLE: 'h3'
805 +};
806 +class PromotionTracking extends _baseTracking.default {
807 + static init() {
808 + this.attachDelegatedTracking();
809 + }
810 + static attachDelegatedTracking() {
811 + this.addEventListenerTracked(document, 'click', event => {
812 + const target = event.target;
813 + if (!target) {
814 + return;
815 + }
816 + const button = target.closest(`a${PROMO_SELECTORS.CTA_BUTTON}`);
817 + if (!button) {
818 + return;
819 + }
820 + const promoPage = button.closest(`${PROMO_SELECTORS.PROMO_PAGE}, ${PROMO_SELECTORS.PROMO_BLANK_STATE}`);
821 + if (!promoPage) {
822 + return;
823 + }
824 + this.handlePromoClick(button, promoPage);
825 + }, {
826 + capture: true
827 + });
828 + }
829 + static handlePromoClick(button, promoPage) {
830 + const promoTitle = this.extractPromoTitle(promoPage, button);
831 + const destination = button.getAttribute('href');
832 + const path = this.extractPromoPath();
833 + _wpDashboardTracking.default.trackPromoClicked(promoTitle, destination, path);
834 + }
835 + static extractPromoTitle(promoPage, button) {
836 + const titleElement = promoPage.querySelector(PROMO_SELECTORS.TITLE);
837 + return titleElement ? titleElement.textContent.trim() : button.textContent.trim();
838 + }
839 + static extractPromoPath() {
840 + const urlParams = new URLSearchParams(window.location.search);
841 + const page = urlParams.get('page');
842 + if (!page) {
843 + return 'elementor';
844 + }
845 + return page.replace('elementor_', '').replace(/_/g, '/');
846 + }
847 +}
848 +var _default = exports["default"] = PromotionTracking;
849 +
850 +/***/ }),
851 +
852 +/***/ "../app/assets/js/event-track/dashboard/screen-view.js":
853 +/*!*************************************************************!*\
854 + !*** ../app/assets/js/event-track/dashboard/screen-view.js ***!
855 + \*************************************************************/
856 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
857 +
858 +"use strict";
859 +
860 +
861 +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
862 +Object.defineProperty(exports, "__esModule", ({
863 + value: true
864 +}));
865 +exports["default"] = void 0;
866 +__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
867 +__webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ "../node_modules/core-js/modules/esnext.iterator.filter.js");
868 +__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js");
869 +var _wpDashboardTracking = _interopRequireWildcard(__webpack_require__(/*! ../wp-dashboard-tracking */ "../app/assets/js/event-track/wp-dashboard-tracking.js"));
870 +var _utils = __webpack_require__(/*! ./utils */ "../app/assets/js/event-track/dashboard/utils.js");
871 +var _baseTracking = _interopRequireDefault(__webpack_require__(/*! ./base-tracking */ "../app/assets/js/event-track/dashboard/base-tracking.js"));
872 +function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
873 +const SCREEN_SELECTORS = {
874 + NAV_TAB_WRAPPER: '.nav-tab-wrapper',
875 + NAV_TAB: '.nav-tab',
876 + NAV_TAB_ACTIVE: '.nav-tab-active',
877 + SETTINGS_FORM_PAGE: '.elementor-settings-form-page',
878 + SETTINGS_FORM_PAGE_ACTIVE: '.elementor-settings-form-page.elementor-active',
879 + FLOATING_ELEMENTS_MODAL: '#elementor-new-floating-elements-modal',
880 + TEMPLATE_DIALOG_MODAL: '#elementor-new-template-dialog-content'
881 +};
882 +const TRACKED_MODALS = [SCREEN_SELECTORS.FLOATING_ELEMENTS_MODAL, SCREEN_SELECTORS.TEMPLATE_DIALOG_MODAL];
883 +class ScreenViewTracking extends _baseTracking.default {
884 + static trackedScreens = new Set();
885 + static init() {
886 + if (!_utils.DashboardUtils.isElementorPage()) {
887 + return;
888 + }
889 + this.attachTabChangeTracking();
890 + }
891 + static destroy() {
892 + super.destroy();
893 + this.trackedScreens.clear();
894 + }
895 + static getScreenData() {
896 + const urlParams = new URLSearchParams(window.location.search);
897 + const page = urlParams.get('page');
898 + const postType = urlParams.get('post_type');
899 + const hash = window.location.hash;
900 + let screenId = '';
901 + let screenType = '';
902 + if (page) {
903 + screenId = page;
904 + } else if (postType) {
905 + screenId = postType;
906 + } else {
907 + screenId = this.getScreenIdFromBody();
908 + }
909 + if (this.isElementorAppPage()) {
910 + const appScreenData = this.getAppScreenData(hash);
911 + if (appScreenData) {
912 + return appScreenData;
913 + }
914 + }
915 + const hasNavTabs = document.querySelector(SCREEN_SELECTORS.NAV_TAB_WRAPPER);
916 + const hasSettingsTabs = document.querySelectorAll(SCREEN_SELECTORS.SETTINGS_FORM_PAGE).length > 1;
917 + if (hasNavTabs || hasSettingsTabs || hash && !this.isElementorAppPage()) {
918 + screenType = _wpDashboardTracking.SCREEN_TYPES.TAB;
919 + if (hash) {
920 + const tabId = hash.replace(/^#(tab-)?/, '');
921 + screenId = `${screenId}-${tabId}`;
922 + } else if (hasNavTabs) {
923 + const activeTab = document.querySelector(SCREEN_SELECTORS.NAV_TAB_ACTIVE);
924 + if (activeTab) {
925 + const tabText = activeTab.textContent.trim();
926 + const tabHref = activeTab.getAttribute('href');
927 + if (tabText) {
928 + screenId = `${screenId}-${this.sanitizeScreenId(tabText)}`;
929 + } else if (tabHref && tabHref.includes('#')) {
930 + const tabId = tabHref.split('#')[1];
931 + screenId = `${screenId}-${tabId}`;
932 + }
933 + }
934 + } else if (hasSettingsTabs) {
935 + const activeSettingsTab = document.querySelector(SCREEN_SELECTORS.SETTINGS_FORM_PAGE_ACTIVE);
936 + if (activeSettingsTab) {
937 + const tabId = activeSettingsTab.id;
938 + if (tabId) {
939 + screenId = `${screenId}-${tabId}`;
940 + }
941 + }
942 + }
943 + }
944 + return {
945 + screenId,
946 + screenType
947 + };
948 + }
949 + static isElementorAppPage() {
950 + const urlParams = new URLSearchParams(window.location.search);
951 + return 'elementor-app' === urlParams.get('page');
952 + }
953 + static getAppScreenData(hash) {
954 + if (!hash) {
955 + return null;
956 + }
957 + const cleanHash = hash.replace(/^#/, '');
958 + if (!cleanHash.startsWith('/')) {
959 + return null;
960 + }
961 + const pathParts = cleanHash.split('/').filter(Boolean);
962 + if (0 === pathParts.length) {
963 + return null;
964 + }
965 + const screenId = pathParts.join('/');
966 + const screenType = _wpDashboardTracking.SCREEN_TYPES.APP_SCREEN;
967 + return {
968 + screenId,
969 + screenType
970 + };
971 + }
972 + static getScreenIdFromBody() {
973 + const body = document.body;
974 + const bodyClasses = body.className.split(' ');
975 + for (const cls of bodyClasses) {
976 + if (cls.startsWith('elementor') && (cls.includes('page') || cls.includes('post-type'))) {
977 + return cls;
978 + }
979 + }
980 + return 'elementor-unknown';
981 + }
982 + static sanitizeScreenId(text) {
983 + return text.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');
984 + }
985 + static attachTabChangeTracking() {
986 + this.attachNavTabTracking();
987 + this.attachHashChangeTracking();
988 + this.attachSettingsTabTracking();
989 + this.attachModalTracking();
990 + }
991 + static attachNavTabTracking() {
992 + const wrapper = document.querySelector(SCREEN_SELECTORS.NAV_TAB_WRAPPER);
993 + if (!wrapper) {
994 + return;
995 + }
996 + this.addEventListenerTracked(wrapper, 'click', event => {
997 + const navTab = event.target.closest(SCREEN_SELECTORS.NAV_TAB);
998 + if (navTab && !navTab.classList.contains('nav-tab-active')) {
999 + const screenData = this.getScreenData();
1000 + if (screenData) {
1001 + this.trackScreen(screenData.screenId, screenData.screenType);
1002 + }
1003 + }
1004 + });
1005 + }
1006 + static attachHashChangeTracking() {
1007 + this.addEventListenerTracked(window, 'hashchange', () => {
1008 + const screenData = this.getScreenData();
1009 + if (screenData) {
1010 + this.trackScreen(screenData.screenId, screenData.screenType);
1011 + }
1012 + });
1013 + }
1014 + static attachSettingsTabTracking() {
1015 + const settingsPages = document.querySelectorAll(SCREEN_SELECTORS.SETTINGS_FORM_PAGE);
1016 + if (0 === settingsPages.length) {
1017 + return;
1018 + }
1019 + settingsPages.forEach(page => {
1020 + this.addObserver(page, {
1021 + attributes: true,
1022 + attributeFilter: ['class']
1023 + }, () => {
1024 + const screenData = this.getScreenData();
1025 + if (screenData) {
1026 + this.trackScreen(screenData.screenId, screenData.screenType);
1027 + }
1028 + });
1029 + });
1030 + }
1031 + static attachModalTracking() {
1032 + this.addObserver(document.body, {
1033 + childList: true,
1034 + subtree: true
1035 + }, mutations => {
1036 + for (const mutation of mutations) {
1037 + if ('childList' === mutation.type) {
1038 + TRACKED_MODALS.forEach(modalSelector => {
1039 + const modal = document.querySelector(modalSelector);
1040 + if (modal && this.isModalVisible(modal)) {
1041 + const modalId = modalSelector.replace('#', '');
1042 + this.trackScreen(modalId, _wpDashboardTracking.SCREEN_TYPES.POPUP);
1043 + }
1044 + });
1045 + }
1046 + }
1047 + });
1048 + }
1049 + static isModalVisible(element) {
1050 + if (!element) {
1051 + return false;
1052 + }
1053 + const style = window.getComputedStyle(element);
1054 + return 'none' !== style.display && 0 !== parseFloat(style.opacity);
1055 + }
1056 + static trackScreen(screenId, screenType = _wpDashboardTracking.SCREEN_TYPES.TOP_LEVEL_PAGE) {
1057 + const trackingKey = `${screenId}-${screenType}`;
1058 + if (this.trackedScreens.has(trackingKey)) {
1059 + return;
1060 + }
1061 + this.trackedScreens.add(trackingKey);
1062 + _wpDashboardTracking.default.trackScreenViewed(screenId, screenType);
1063 + }
1064 +}
1065 +var _default = exports["default"] = ScreenViewTracking;
1066 +
1067 +/***/ }),
1068 +
1069 +/***/ "../app/assets/js/event-track/dashboard/top-bar.js":
1070 +/*!*********************************************************!*\
1071 + !*** ../app/assets/js/event-track/dashboard/top-bar.js ***!
1072 + \*********************************************************/
1073 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1074 +
1075 +"use strict";
1076 +
1077 +
1078 +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1079 +Object.defineProperty(exports, "__esModule", ({
1080 + value: true
1081 +}));
1082 +exports["default"] = void 0;
1083 +__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
1084 +__webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ "../node_modules/core-js/modules/esnext.iterator.filter.js");
1085 +__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js");
1086 +var _wpDashboardTracking = _interopRequireWildcard(__webpack_require__(/*! ../wp-dashboard-tracking */ "../app/assets/js/event-track/wp-dashboard-tracking.js"));
1087 +var _baseTracking = _interopRequireDefault(__webpack_require__(/*! ./base-tracking */ "../app/assets/js/event-track/dashboard/base-tracking.js"));
1088 +function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
1089 +const TOP_BAR_SELECTORS = {
1090 + TOP_BAR_ROOT: '.e-admin-top-bar',
1091 + BAR_BUTTON: '.e-admin-top-bar__bar-button',
1092 + BUTTON_TITLE: '.e-admin-top-bar__bar-button-title',
1093 + MAIN_AREA: '.e-admin-top-bar__main-area',
1094 + SECONDARY_AREA: '.e-admin-top-bar__secondary-area'
1095 +};
1096 +class TopBarTracking extends _baseTracking.default {
1097 + static init() {
1098 + this.waitForTopBar();
1099 + }
1100 + static waitForTopBar() {
1101 + const topBar = document.querySelector(TOP_BAR_SELECTORS.TOP_BAR_ROOT);
1102 + if (topBar) {
1103 + this.attachTopBarTracking(topBar);
1104 + return;
1105 + }
1106 + const observer = this.addObserver(document.body, {
1107 + childList: true,
1108 + subtree: true
1109 + }, () => {
1110 + const foundTopBar = document.querySelector(TOP_BAR_SELECTORS.TOP_BAR_ROOT);
1111 + if (foundTopBar) {
1112 + this.attachTopBarTracking(foundTopBar);
1113 + observer.disconnect();
1114 + clearTimeout(timeoutId);
1115 + }
1116 + });
1117 + const timeoutId = setTimeout(() => {
1118 + observer.disconnect();
1119 + }, 10000);
1120 + }
1121 + static attachTopBarTracking(topBar) {
1122 + const buttons = topBar.querySelectorAll(TOP_BAR_SELECTORS.BAR_BUTTON);
1123 + buttons.forEach(button => {
1124 + this.addEventListenerTracked(button, 'click', event => {
1125 + this.handleTopBarClick(event);
1126 + });
1127 + });
1128 + this.observeTopBarChanges(topBar);
1129 + }
1130 + static observeTopBarChanges(topBar) {
1131 + this.addObserver(topBar, {
1132 + childList: true,
1133 + subtree: true
1134 + }, mutations => {
1135 + mutations.forEach(mutation => {
1136 + if ('childList' === mutation.type) {
1137 + mutation.addedNodes.forEach(node => {
1138 + if (1 === node.nodeType) {
1139 + if (node.matches && node.matches(TOP_BAR_SELECTORS.BAR_BUTTON)) {
1140 + this.addEventListenerTracked(node, 'click', event => {
1141 + this.handleTopBarClick(event);
1142 + });
1143 + } else {
1144 + const buttons = node.querySelectorAll ? node.querySelectorAll(TOP_BAR_SELECTORS.BAR_BUTTON) : [];
1145 + buttons.forEach(button => {
1146 + this.addEventListenerTracked(button, 'click', event => {
1147 + this.handleTopBarClick(event);
1148 + });
1149 + });
1150 + }
1151 + }
1152 + });
1153 + }
1154 + });
1155 + });
1156 + }
1157 + static handleTopBarClick(event) {
1158 + const button = event.currentTarget;
1159 + const itemId = this.extractItemId(button);
1160 + _wpDashboardTracking.default.trackNavClicked(itemId, null, _wpDashboardTracking.NAV_AREAS.TOP_BAR);
1161 + }
1162 + static extractItemId(button) {
1163 + const titleElement = button.querySelector(TOP_BAR_SELECTORS.BUTTON_TITLE);
1164 + if (titleElement && titleElement.textContent.trim()) {
1165 + return titleElement.textContent.trim();
1166 + }
1167 + const textContent = button.textContent.trim();
1168 + if (textContent) {
1169 + return textContent;
1170 + }
1171 + const href = button.getAttribute('href');
1172 + if (href) {
1173 + const urlParams = new URLSearchParams(href.split('?')[1] || '');
1174 + const page = urlParams.get('page');
1175 + if (page) {
1176 + return page;
1177 + }
1178 + if (href.includes('/wp-admin/')) {
1179 + const pathParts = href.split('/wp-admin/')[1];
1180 + if (pathParts) {
1181 + return pathParts.split('?')[0];
1182 + }
1183 + }
1184 + try {
1185 + const url = new URL(href, window.location.origin);
1186 + return url.pathname.split('/').filter(Boolean).pop() || url.hostname;
1187 + } catch (error) {
1188 + return href;
1189 + }
1190 + }
1191 + const dataInfo = button.getAttribute('data-info');
1192 + if (dataInfo) {
1193 + return dataInfo;
1194 + }
1195 + const classes = button.className.split(' ').filter(cls => cls && 'e-admin-top-bar__bar-button' !== cls);
1196 + if (classes.length > 0) {
1197 + return classes.join('-');
1198 + }
1199 + return 'unknown-top-bar-button';
1200 + }
1201 +}
1202 +var _default = exports["default"] = TopBarTracking;
1203 +
1204 +/***/ }),
1205 +
1206 +/***/ "../app/assets/js/event-track/dashboard/utils.js":
1207 +/*!*******************************************************!*\
1208 + !*** ../app/assets/js/event-track/dashboard/utils.js ***!
1209 + \*******************************************************/
1210 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1211 +
1212 +"use strict";
1213 +
1214 +
1215 +Object.defineProperty(exports, "__esModule", ({
1216 + value: true
1217 +}));
1218 +exports.DashboardUtils = void 0;
1219 +__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
1220 +__webpack_require__(/*! core-js/modules/esnext.iterator.some.js */ "../node_modules/core-js/modules/esnext.iterator.some.js");
1221 +const DashboardUtils = exports.DashboardUtils = {
1222 + isElementorPage() {
1223 + const urlParams = new URLSearchParams(window.location.search);
1224 + const page = urlParams.get('page');
1225 + if (page && (page.startsWith('elementor') || page.includes('elementor'))) {
1226 + return true;
1227 + }
1228 + const postType = urlParams.get('post_type');
1229 + if ('elementor_library' === postType || 'e-floating-buttons' === postType) {
1230 + return true;
1231 + }
1232 + const body = document.body;
1233 + const bodyClasses = body.className.split(' ');
1234 + return bodyClasses.some(cls => cls.includes('elementor') && (cls.includes('page') || cls.includes('post-type')));
1235 + }
1236 +};
1237 +
1238 +/***/ }),
1239 +
1240 +/***/ "../app/assets/js/event-track/wp-dashboard-tracking.js":
1241 +/*!*************************************************************!*\
1242 + !*** ../app/assets/js/event-track/wp-dashboard-tracking.js ***!
1243 + \*************************************************************/
1244 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1245 +
1246 +"use strict";
1247 +
1248 +
1249 +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1250 +Object.defineProperty(exports, "__esModule", ({
1251 + value: true
1252 +}));
1253 +exports["default"] = exports.SCREEN_TYPES = exports.NAV_AREAS = exports.CONTROL_TYPES = void 0;
1254 +__webpack_require__(/*! core-js/modules/es.array.push.js */ "../node_modules/core-js/modules/es.array.push.js");
1255 +__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
1256 +__webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js");
1257 +var _navigation = _interopRequireDefault(__webpack_require__(/*! ./dashboard/navigation */ "../app/assets/js/event-track/dashboard/navigation.js"));
1258 +var _pluginActions = _interopRequireDefault(__webpack_require__(/*! ./dashboard/plugin-actions */ "../app/assets/js/event-track/dashboard/plugin-actions.js"));
1259 +var _promotion = _interopRequireDefault(__webpack_require__(/*! ./dashboard/promotion */ "../app/assets/js/event-track/dashboard/promotion.js"));
1260 +var _screenView = _interopRequireDefault(__webpack_require__(/*! ./dashboard/screen-view */ "../app/assets/js/event-track/dashboard/screen-view.js"));
1261 +var _topBar = _interopRequireDefault(__webpack_require__(/*! ./dashboard/top-bar */ "../app/assets/js/event-track/dashboard/top-bar.js"));
1262 +var _menuPromotion = _interopRequireDefault(__webpack_require__(/*! ./dashboard/menu-promotion */ "../app/assets/js/event-track/dashboard/menu-promotion.js"));
1263 +var _actionControls = _interopRequireDefault(__webpack_require__(/*! ./dashboard/action-controls */ "../app/assets/js/event-track/dashboard/action-controls.js"));
1264 +const SESSION_TIMEOUT_MINUTES = 30;
1265 +const MINUTE_MS = 60 * 1000;
1266 +const SESSION_TIMEOUT = SESSION_TIMEOUT_MINUTES * MINUTE_MS;
1267 +const ACTIVITY_CHECK_INTERVAL = 1 * MINUTE_MS;
1268 +const SESSION_STORAGE_KEY = 'elementor_wpdash_session';
1269 +const PENDING_NAV_CLICK_KEY = 'elementor_wpdash_pending_nav';
1270 +const CONTROL_TYPES = exports.CONTROL_TYPES = {
1271 + BUTTON: 'button',
1272 + CHECKBOX: 'checkbox',
1273 + RADIO: 'radio',
1274 + LINK: 'link',
1275 + SELECT: 'select',
1276 + TOGGLE: 'toggle',
1277 + FILTER: 'filter'
1278 +};
1279 +const NAV_AREAS = exports.NAV_AREAS = {
1280 + LEFT_MENU: 'left_menu',
1281 + SUBMENU: 'submenu',
1282 + HOVER_MENU: 'hover_menu',
1283 + TOP_BAR: 'top_bar'
1284 +};
1285 +const SCREEN_TYPES = exports.SCREEN_TYPES = {
1286 + TAB: 'tab',
1287 + POPUP: 'popup',
1288 + APP_SCREEN: 'app_screen'
1289 +};
1290 +class WpDashboardTracking {
1291 + static sessionStartTime = Date.now();
1292 + static lastActivityTime = Date.now();
1293 + static sessionEnded = false;
1294 + static navItemsVisited = new Set();
1295 + static activityCheckInterval = null;
1296 + static initialized = false;
1297 + static navigationListeners = [];
1298 + static isNavigatingToElementor = false;
1299 + static init() {
1300 + if (this.initialized) {
1301 + return;
1302 + }
1303 + this.restoreOrCreateSession();
1304 + if (this.isEventsManagerAvailable()) {
1305 + this.startSessionMonitoring();
1306 + this.attachActivityListeners();
1307 + this.attachNavigationListener();
1308 + this.initialized = true;
1309 + }
1310 + }
1311 + static restoreOrCreateSession() {
1312 + const storedSession = this.getStoredSession();
1313 + if (storedSession) {
1314 + this.sessionStartTime = storedSession.sessionStartTime;
1315 + this.navItemsVisited = new Set(storedSession.navItemsVisited);
1316 + this.lastActivityTime = Date.now();
1317 + this.sessionEnded = false;
1318 + } else {
1319 + this.sessionStartTime = Date.now();
1320 + this.lastActivityTime = Date.now();
1321 + this.sessionEnded = false;
1322 + this.navItemsVisited = new Set();
1323 + }
1324 + this.processPendingNavClick();
1325 + this.saveSessionToStorage();
1326 + }
1327 + static processPendingNavClick() {
1328 + try {
1329 + const pendingNav = sessionStorage.getItem(PENDING_NAV_CLICK_KEY);
1330 + if (pendingNav) {
1331 + const {
1332 + itemId,
1333 + rootItem,
1334 + area
1335 + } = JSON.parse(pendingNav);
1336 + this.navItemsVisited.add(itemId);
1337 + const properties = {
1338 + wpdash_nav_item_id: itemId,
1339 + wpdash_nav_area: area
1340 + };
1341 + if (rootItem) {
1342 + properties.wpdash_nav_item_root = rootItem;
1343 + }
1344 + this.dispatchEvent('wpdash_nav_clicked', properties, {
1345 + send_immediately: true
1346 + });
1347 + sessionStorage.removeItem(PENDING_NAV_CLICK_KEY);
1348 + }
1349 + } catch (error) {
1350 + sessionStorage.removeItem(PENDING_NAV_CLICK_KEY);
1351 + }
1352 + }
1353 + static getStoredSession() {
1354 + try {
1355 + const stored = sessionStorage.getItem(SESSION_STORAGE_KEY);
1356 + return stored ? JSON.parse(stored) : null;
1357 + } catch (error) {
1358 + return null;
1359 + }
1360 + }
1361 + static saveSessionToStorage() {
1362 + const sessionData = {
1363 + sessionStartTime: this.sessionStartTime,
1364 + navItemsVisited: Array.from(this.navItemsVisited)
1365 + };
1366 + sessionStorage.setItem(SESSION_STORAGE_KEY, JSON.stringify(sessionData));
1367 + }
1368 + static clearStoredSession() {
1369 + sessionStorage.removeItem(SESSION_STORAGE_KEY);
1370 + }
1371 + static isEventsManagerAvailable() {
1372 + return elementorCommon?.eventsManager && 'function' === typeof elementorCommon.eventsManager.dispatchEvent;
1373 + }
1374 + static canSendEvents() {
1375 + return elementorCommon?.config?.editor_events?.can_send_events || false;
1376 + }
1377 + static dispatchEvent(eventName, properties = {}, options = {}) {
1378 + if (!this.isEventsManagerAvailable() || !this.canSendEvents()) {
1379 + return;
1380 + }
1381 + elementorCommon.eventsManager.dispatchEvent(eventName, properties, options);
1382 + }
1383 + static updateActivity() {
1384 + this.lastActivityTime = Date.now();
1385 + }
1386 + static startSessionMonitoring() {
1387 + this.activityCheckInterval = setInterval(() => {
1388 + this.checkSessionTimeout();
1389 + }, ACTIVITY_CHECK_INTERVAL);
1390 + window.addEventListener('beforeunload', () => {
1391 + if (!this.sessionEnded && !this.isNavigatingToElementor) {
1392 + this.trackSessionEnd('tab_closed');
1393 + }
1394 + });
1395 + document.addEventListener('visibilitychange', () => {
1396 + if (!this.sessionEnded && document.hidden) {
1397 + const timeSinceLastActivity = Date.now() - this.lastActivityTime;
1398 + if (timeSinceLastActivity > SESSION_TIMEOUT) {
1399 + this.trackSessionEnd('tab_inactive');
1400 + }
1401 + }
1402 + });
1403 + }
1404 + static isElementorPage(url) {
1405 + try {
1406 + const urlObj = new URL(url, window.location.origin);
1407 + const params = urlObj.searchParams;
1408 + const page = params.get('page');
1409 + const postType = params.get('post_type');
1410 + const action = params.get('action');
1411 + const elementorPages = ['elementor', 'go_knowledge_base_site', 'e-form-submissions'];
1412 + const elementorPostTypes = ['elementor_library', 'e-floating-buttons'];
1413 + return page && elementorPages.some(p => page.includes(p)) || postType && elementorPostTypes.includes(postType) || action && action.includes('elementor');
1414 + } catch (error) {
1415 + return false;
1416 + }
1417 + }
1418 + static isPluginsPage(url) {
1419 + try {
1420 + const urlObj = new URL(url, window.location.origin);
1421 + return urlObj.pathname.includes('plugins.php');
1422 + } catch (error) {
1423 + return false;
1424 + }
1425 + }
1426 + static isNavigatingAwayFromElementor(targetUrl) {
1427 + if (!targetUrl) {
1428 + return false;
1429 + }
1430 + if (targetUrl.startsWith('#')) {
1431 + return false;
1432 + }
1433 + return !this.isElementorPage(targetUrl);
1434 + }
1435 + static isLinkOpeningInNewTab(link) {
1436 + const target = link.getAttribute('target');
1437 + return '_blank' === target || '_new' === target;
1438 + }
1439 + static attachNavigationListener() {
1440 + const handleLinkClick = event => {
1441 + const link = event.target.closest('a');
1442 + if (link && link.href) {
1443 + if (this.isLinkOpeningInNewTab(link)) {
1444 + return;
1445 + }
1446 + if (!this.sessionEnded && this.isNavigatingAwayFromElementor(link.href)) {
1447 + this.trackSessionEnd('navigate_away');
1448 + } else if (this.isElementorPage(link.href)) {
1449 + this.isNavigatingToElementor = true;
1450 + }
1451 + }
1452 + };
1453 + const handleFormSubmit = event => {
1454 + const form = event.target;
1455 + if (form.action) {
1456 + if (!this.sessionEnded && this.isNavigatingAwayFromElementor(form.action)) {
1457 + this.trackSessionEnd('navigate_away');
1458 + } else if (this.isElementorPage(form.action)) {
1459 + this.isNavigatingToElementor = true;
1460 + }
1461 + }
1462 + };
1463 + document.addEventListener('click', handleLinkClick, true);
1464 + document.addEventListener('submit', handleFormSubmit, true);
1465 + this.navigationListeners.push({
1466 + type: 'click',
1467 + handler: handleLinkClick
1468 + }, {
1469 + type: 'submit',
1470 + handler: handleFormSubmit
1471 + });
1472 + }
1473 + static checkSessionTimeout() {
1474 + const timeSinceLastActivity = Date.now() - this.lastActivityTime;
1475 + if (timeSinceLastActivity > SESSION_TIMEOUT && !this.sessionEnded) {
1476 + this.trackSessionEnd('timeout');
1477 + }
1478 + }
1479 + static attachActivityListeners() {
1480 + const events = ['mousedown', 'keydown', 'scroll', 'touchstart', 'click'];
1481 + events.forEach(event => {
1482 + document.addEventListener(event, () => {
1483 + this.updateActivity();
1484 + }, {
1485 + capture: true,
1486 + passive: true
1487 + });
1488 + });
1489 + }
1490 + static formatDuration(milliseconds) {
1491 + const totalSeconds = Math.floor(milliseconds / 1000);
1492 + return Number(totalSeconds.toFixed(2));
1493 + }
1494 + static trackNavClicked(itemId, rootItem = null, area = NAV_AREAS.LEFT_MENU) {
1495 + if (!this.initialized) {
1496 + const pendingNav = {
1497 + itemId,
1498 + rootItem,
1499 + area
1500 + };
1501 + sessionStorage.setItem(PENDING_NAV_CLICK_KEY, JSON.stringify(pendingNav));
1502 + return;
1503 + }
1504 + this.updateActivity();
1505 + this.navItemsVisited.add(itemId);
1506 + this.saveSessionToStorage();
1507 + const properties = {
1508 + wpdash_nav_item_id: itemId,
1509 + wpdash_nav_area: area
1510 + };
1511 + if (rootItem) {
1512 + properties.wpdash_nav_item_root = rootItem;
1513 + }
1514 + this.dispatchEvent('wpdash_nav_clicked', properties);
1515 + }
1516 + static trackScreenViewed(screenId, screenType = SCREEN_TYPES.TAB) {
1517 + this.updateActivity();
1518 + const properties = {
1519 + wpdash_screen_id: screenId,
1520 + wpdash_screen_type: screenType
1521 + };
1522 + this.dispatchEvent('wpdash_screen_viewed', properties);
1523 + }
1524 + static trackActionControl(controlIdentifier, controlType) {
1525 + this.updateActivity();
1526 + const properties = {
1527 + wpdash_action_control_interacted: controlIdentifier,
1528 + wpdash_control_type: controlType
1529 + };
1530 + this.dispatchEvent('wpdash_action_control', properties);
1531 + }
1532 + static trackPromoClicked(promoName, destination, clickPath) {
1533 + this.updateActivity();
1534 + const properties = {
1535 + wpdash_promo_name: promoName,
1536 + wpdash_promo_destination: destination,
1537 + wpdash_promo_clicked_path: clickPath
1538 + };
1539 + this.dispatchEvent('wpdash_promo_clicked', properties);
1540 + }
1541 + static trackSessionEnd(reason = 'timeout') {
1542 + if (this.sessionEnded) {
1543 + return;
1544 + }
1545 + this.sessionEnded = true;
1546 + if (this.activityCheckInterval) {
1547 + clearInterval(this.activityCheckInterval);
1548 + this.activityCheckInterval = null;
1549 + }
1550 + const duration = Date.now() - this.sessionStartTime;
1551 + const properties = {
1552 + wpdash_endstate_nav_summary: Array.from(this.navItemsVisited),
1553 + wpdash_endstate_nav_count: this.navItemsVisited.size,
1554 + wpdash_endstate_duration: this.formatDuration(duration),
1555 + reason
1556 + };
1557 + this.dispatchEvent('wpdash_session_end_state', properties);
1558 + this.clearStoredSession();
1559 + }
1560 + static destroy() {
1561 + if (this.activityCheckInterval) {
1562 + clearInterval(this.activityCheckInterval);
1563 + }
1564 + this.navigationListeners.forEach(({
1565 + type,
1566 + handler
1567 + }) => {
1568 + document.removeEventListener(type, handler, true);
1569 + });
1570 + this.navigationListeners = [];
1571 + _topBar.default.destroy();
1572 + _screenView.default.destroy();
1573 + _promotion.default.destroy();
1574 + _menuPromotion.default.destroy();
1575 + _actionControls.default.destroy();
1576 + this.initialized = false;
1577 + }
1578 +}
1579 +exports["default"] = WpDashboardTracking;
1580 +window.addEventListener('elementor/admin/init', () => {
1581 + const currentUrl = window.location.href;
1582 + const isPluginsPage = WpDashboardTracking.isPluginsPage(currentUrl);
1583 + const isElementorPage = WpDashboardTracking.isElementorPage(currentUrl);
1584 + if (isPluginsPage) {
1585 + _pluginActions.default.init();
1586 + }
1587 + _navigation.default.init();
1588 + if (isElementorPage) {
1589 + WpDashboardTracking.init();
1590 + _topBar.default.init();
1591 + _screenView.default.init();
1592 + _promotion.default.init();
1593 + _menuPromotion.default.init();
1594 + _actionControls.default.init();
1595 + }
1596 +});
1597 +window.addEventListener('beforeunload', () => {
1598 + _navigation.default.destroy();
1599 + _pluginActions.default.destroy();
1600 + WpDashboardTracking.destroy();
1601 +});
1602 +
1603 +/***/ }),
1604 +
3 1605 /***/ "../app/modules/import-export-customization/assets/js/shared/registry/base.js":
4 1606 /*!************************************************************************************!*\
5 1607 !*** ../app/modules/import-export-customization/assets/js/shared/registry/base.js ***!
6 1608 \************************************************************************************/
@@ -1683,9 +3285,11 @@
1683 3285 var _scroll = _interopRequireDefault(__webpack_require__(/*! ./imports/utils/scroll */ "../assets/dev/js/modules/imports/utils/scroll.js"));
1684 3286 var _forceMethodImplementation = _interopRequireDefault(__webpack_require__(/*! ./imports/force-method-implementation */ "../assets/dev/js/modules/imports/force-method-implementation.js"));
1685 3287 var _templateRegistryHelpers = __webpack_require__(/*! ../../../../app/modules/import-export-customization/assets/js/shared/utils/template-registry-helpers */ "../app/modules/import-export-customization/assets/js/shared/utils/template-registry-helpers.js");
1686 3288 var _customizationDialogs = __webpack_require__(/*! ../../../../app/modules/import-export-customization/assets/js/shared/registry/customization-dialogs */ "../app/modules/import-export-customization/assets/js/shared/registry/customization-dialogs.js");
1687 -const baseModules = {
3289 +var _appsEventTracking = __webpack_require__(/*! elementor-app/event-track/apps-event-tracking */ "../app/assets/js/event-track/apps-event-tracking.js");
3290 +var _wpDashboardTracking = _interopRequireDefault(__webpack_require__(/*! elementor-app/event-track/wp-dashboard-tracking */ "../app/assets/js/event-track/wp-dashboard-tracking.js"));
3291 +var _default = exports["default"] = window.elementorModules = {
1688 3292 Module: _module.default,
1689 3293 ViewModule: _viewModule.default,
1690 3294 ArgsObject: _argsObject.default,
1691 3295 ForceMethodImplementation: _forceMethodImplementation.default,
@@ -1695,19 +3299,238 @@
1695 3299 },
1696 3300 importExport: {
1697 3301 createGetInitialState: _templateRegistryHelpers.createGetInitialState,
1698 3302 customizationDialogsRegistry: _customizationDialogs.customizationDialogsRegistry
3303 + },
3304 + appsEventTracking: {
3305 + AppsEventTracking: _appsEventTracking.AppsEventTracking
3306 + },
3307 + wpDashboardTracking: {
3308 + WpDashboardTracking: _wpDashboardTracking.default
1699 3309 }
1700 3310 };
1701 -if (!window.elementorModules) {
1702 - window.elementorModules = baseModules;
1703 -} else {
1704 - Object.assign(window.elementorModules, baseModules);
1705 -}
1706 -var _default = exports["default"] = window.elementorModules;
1707 3311
1708 3312 /***/ }),
1709 3313
3314 +/***/ "../core/common/modules/events-manager/assets/js/events-config.js":
3315 +/*!************************************************************************!*\
3316 + !*** ../core/common/modules/events-manager/assets/js/events-config.js ***!
3317 + \************************************************************************/
3318 +/***/ ((__unused_webpack_module, exports) => {
3319 +
3320 +"use strict";
3321 +
3322 +
3323 +Object.defineProperty(exports, "__esModule", ({
3324 + value: true
3325 +}));
3326 +exports["default"] = void 0;
3327 +const eventsConfig = {
3328 + triggers: {
3329 + click: 'Click',
3330 + rightClick: 'Right Click',
3331 + doubleClick: 'Double Click',
3332 + accordionClick: 'Accordion Click',
3333 + toggleClick: 'Toggle Click',
3334 + dropdownClick: 'Click Dropdown',
3335 + editorLoaded: 'Editor Loaded',
3336 + visible: 'Visible',
3337 + pageLoaded: 'Page Loaded'
3338 + },
3339 + locations: {
3340 + widgetPanel: 'Widget Panel',
3341 + topBar: 'Top Bar',
3342 + elementorEditor: 'Elementor Editor',
3343 + templatesLibrary: {
3344 + library: 'Templates Library'
3345 + },
3346 + app: {
3347 + import: 'Import Kit',
3348 + export: 'Export Kit',
3349 + kitLibrary: 'Kit Library',
3350 + cloudKitLibrary: 'Cloud Kit Library'
3351 + },
3352 + variables: 'Variables Panel',
3353 + variablesManager: 'Variables Manager',
3354 + admin: 'WP admin',
3355 + structurePanel: 'Structure Panel',
3356 + canvas: 'Canvas'
3357 + },
3358 + secondaryLocations: {
3359 + layout: 'Layout Section',
3360 + basic: 'Basic Section',
3361 + 'pro-elements': 'Pro Section',
3362 + general: 'General Section',
3363 + 'theme-elements': 'Site Section',
3364 + 'theme-elements-single': 'Single Section',
3365 + 'woocommerce-elements': 'WooCommerce Section',
3366 + wordpress: 'WordPress Section',
3367 + categories: 'Widgets Tab',
3368 + global: 'Globals Tab',
3369 + 'whats-new': 'What\'s New',
3370 + 'document-settings': 'Document Settings icon',
3371 + 'preview-page': 'Preview Page',
3372 + 'publish-button': 'Publish Button',
3373 + 'widget-panel': 'Widget Panel Icon',
3374 + finder: 'Finder',
3375 + help: 'Help',
3376 + elementorLogoDropdown: 'top_bar_elementor_logo_dropdown',
3377 + elementorLogo: 'Elementor Logo',
3378 + eLogoMenu: 'E-logo Menu',
3379 + notes: 'Notes',
3380 + siteSettings: 'Site Settings',
3381 + structure: 'Structure',
3382 + documentNameDropdown: 'Document Name dropdown',
3383 + responsiveControls: 'Responsive controls',
3384 + launchpad: 'launchpad',
3385 + checklistHeader: 'Checklist Header',
3386 + checklistSteps: 'Checklist Steps',
3387 + userPreferences: 'User Preferences',
3388 + contextMenu: 'Context Menu',
3389 + templateLibrary: {
3390 + saveModal: 'Save to Modal',
3391 + moveModal: 'Move to Modal',
3392 + bulkMoveModal: 'Bulk Move to Modal',
3393 + copyModal: 'Copy to Modal',
3394 + bulkCopyModal: 'Bulk Copy to Modal',
3395 + saveModalSelectFolder: 'Save to Modal - select folder',
3396 + saveModalSelectConnect: 'Save to Modal - connect',
3397 + saveModalSelectUpgrade: 'Save to Modal - upgrade',
3398 + importModal: 'Import Modal',
3399 + newFolderModal: 'New Folder Modal',
3400 + deleteDialog: 'Delete Dialog',
3401 + deleteFolderDialog: 'Delete Folder Dialog',
3402 + renameDialog: 'Rename Dialog',
3403 + createFolderDialog: 'Create Folder Dialog',
3404 + applySettingsDialog: 'Apply Settings Dialog',
3405 + cloudTab: 'Cloud Tab',
3406 + siteTab: 'Site Tab',
3407 + cloudTabFolder: 'Cloud Tab - Folder',
3408 + cloudTabConnect: 'Cloud Tab - Connect',
3409 + cloudTabUpgrade: 'Cloud Tab - Upgrade',
3410 + morePopup: 'Context Menu',
3411 + quotaBar: 'Quota Bar'
3412 + },
3413 + kitLibrary: {
3414 + cloudKitLibrary: 'kits_cloud_library',
3415 + cloudKitLibraryConnect: 'kits_cloud_library_connect',
3416 + cloudKitLibraryUpgrade: 'kits_cloud_library_upgrade',
3417 + kitExportCustomization: 'kit_export_customization',
3418 + kitExport: 'kit_export',
3419 + kitExportCustomizationEdit: 'kit_export_customization_edit',
3420 + kitExportSummary: 'kit_export_summary',
3421 + kitImportUploadBox: 'kit_import_upload_box',
3422 + kitImportCustomization: 'kit_import_customization',
3423 + kitImportSummary: 'kit_import_summary'
3424 + },
3425 + variablesPopover: 'Variables Popover',
3426 + admin: {
3427 + pluginToolsTab: 'plugin_tools_tab',
3428 + pluginWebsiteTemplatesTab: 'plugin_website_templates_tab'
3429 + },
3430 + componentsTab: 'Components Tab',
3431 + canvasElement: 'Canvas Element'
3432 + },
3433 + elements: {
3434 + accordionSection: 'Accordion section',
3435 + buttonIcon: 'Button Icon',
3436 + mainCta: 'Main CTA',
3437 + button: 'Button',
3438 + link: 'Link',
3439 + dropdown: 'Dropdown',
3440 + toggle: 'Toggle',
3441 + launchpadChecklist: 'Checklist popup'
3442 + },
3443 + names: {
3444 + v1: {
3445 + layout: 'v1_widgets_tab_layout_section',
3446 + basic: 'v1_widgets_tab_basic_section',
3447 + 'pro-elements': 'v1_widgets_tab_pro_section',
3448 + general: 'v1_widgets_tab_general_section',
3449 + 'theme-elements': 'v1_widgets_tab_site_section',
3450 + 'theme-elements-single': 'v1_widgets_tab_single_section',
3451 + 'woocommerce-elements': 'v1_widgets_tab_woocommerce_section',
3452 + wordpress: 'v1_widgets_tab_wordpress_section',
3453 + categories: 'v1_widgets_tab',
3454 + global: 'v1_globals_tab'
3455 + },
3456 + topBar: {
3457 + whatsNew: 'top_bar_whats_new',
3458 + documentSettings: 'top_bar_document_settings_icon',
3459 + previewPage: 'top_bar_preview_page',
3460 + publishButton: 'top_bar_publish_button',
3461 + widgetPanel: 'top_bar_widget_panel_icon',
3462 + finder: 'top_bar_finder',
3463 + help: 'top_bar_help',
3464 + history: 'top_bar_elementor_logo_dropdown_history',
3465 + userPreferences: 'top_bar_elementor_logo_dropdown_user_preferences',
3466 + keyboardShortcuts: 'top_bar_elementor_logo_dropdown_keyboard_shortcuts',
3467 + exitToWordpress: 'top_bar_elementor_logo_dropdown_exit_to_wordpress',
3468 + themeBuilder: 'top_bar_elementor_logo_dropdown_theme_builder',
3469 + notes: 'top_bar_notes',
3470 + siteSettings: 'top_bar_site_setting',
3471 + structure: 'top_bar_structure',
3472 + documentNameDropdown: 'top_bar_document_name_dropdown',
3473 + responsiveControls: 'top_bar_responsive_controls',
3474 + launchpadOn: 'top_bar_checklist_icon_show',
3475 + launchpadOff: 'top_bar_checklist_icon_hide',
3476 + elementorLogoDropdown: 'open_e_menu',
3477 + connectAccount: 'connect_account',
3478 + accountConnected: 'account_connected'
3479 + },
3480 + // ChecklistSteps event names are generated dynamically, based on stepId and action type taken: title, action, done, undone, upgrade
3481 + elementorEditor: {
3482 + checklist: {
3483 + checklistHeaderClose: 'checklist_header_close_icon',
3484 + checklistFirstPopup: 'checklist popup triggered'
3485 + },
3486 + userPreferences: {
3487 + checklistShow: 'checklist_userpreferences_toggle_show',
3488 + checklistHide: 'checklist_userpreferences_toggle_hide'
3489 + }
3490 + },
3491 + variables: {
3492 + open: 'open_variables_popover',
3493 + add: 'add_new_variable',
3494 + connect: 'connect_variable',
3495 + save: 'save_new_variable',
3496 + openManager: 'open_variables_manager',
3497 + saveChanges: 'save_variables_changes',
3498 + delete: 'delete_variable'
3499 + },
3500 + components: {
3501 + createClicked: 'component_create_clicked',
3502 + createCancelled: 'component_creation_cancelled',
3503 + created: 'component_created',
3504 + instanceAdded: 'component_instance_added',
3505 + edited: 'component_edited'
3506 + },
3507 + global_classes: {
3508 + classApplied: 'class_applied',
3509 + classRemoved: 'class_removed',
3510 + classManagerFilterCleared: 'class_manager_filter_cleared',
3511 + classDeleted: 'class_deleted',
3512 + classPublishConflict: 'class_publish_conflict',
3513 + classRenamed: 'class_renamed',
3514 + classCreated: 'class_created',
3515 + classManagerSearched: 'class_manager_searched',
3516 + classManagerFiltersOpened: 'class_manager_filters_opened',
3517 + classManagerOpened: 'class_manager_opened',
3518 + classManagerReorder: 'class_manager_reorder',
3519 + classManagerFilterUsed: 'class_manager_filter_used',
3520 + classUsageLocate: 'class_usage_locate',
3521 + classUsageHovered: 'class_usage_hovered',
3522 + classStyled: 'class_styled',
3523 + classStateClicked: 'class_state_clicked',
3524 + classUsageClicked: 'class_usage_clicked',
3525 + classDuplicate: 'class_duplicate'
3526 + }
3527 + }
3528 +};
3529 +var _default = exports["default"] = eventsConfig;
3530 +
3531 +/***/ }),
3532 +
1710 3533 /***/ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js":
1711 3534 /*!***********************************************************************!*\
1712 3535 !*** ../node_modules/@babel/runtime/helpers/interopRequireDefault.js ***!
1713 3536 \***********************************************************************/
@@ -4736,8 +6559,51 @@
4736 6559
4737 6560
4738 6561 /***/ }),
4739 6562
6563 +/***/ "../node_modules/core-js/modules/es.iterator.some.js":
6564 +/*!***********************************************************!*\
6565 + !*** ../node_modules/core-js/modules/es.iterator.some.js ***!
6566 + \***********************************************************/
6567 +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
6568 +
6569 +"use strict";
6570 +
6571 +var $ = __webpack_require__(/*! ../internals/export */ "../node_modules/core-js/internals/export.js");
6572 +var call = __webpack_require__(/*! ../internals/function-call */ "../node_modules/core-js/internals/function-call.js");
6573 +var iterate = __webpack_require__(/*! ../internals/iterate */ "../node_modules/core-js/internals/iterate.js");
6574 +var aCallable = __webpack_require__(/*! ../internals/a-callable */ "../node_modules/core-js/internals/a-callable.js");
6575 +var anObject = __webpack_require__(/*! ../internals/an-object */ "../node_modules/core-js/internals/an-object.js");
6576 +var getIteratorDirect = __webpack_require__(/*! ../internals/get-iterator-direct */ "../node_modules/core-js/internals/get-iterator-direct.js");
6577 +var iteratorClose = __webpack_require__(/*! ../internals/iterator-close */ "../node_modules/core-js/internals/iterator-close.js");
6578 +var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(/*! ../internals/iterator-helper-without-closing-on-early-error */ "../node_modules/core-js/internals/iterator-helper-without-closing-on-early-error.js");
6579 +
6580 +var someWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('some', TypeError);
6581 +
6582 +// `Iterator.prototype.some` method
6583 +// https://tc39.es/ecma262/#sec-iterator.prototype.some
6584 +$({ target: 'Iterator', proto: true, real: true, forced: someWithoutClosingOnEarlyError }, {
6585 + some: function some(predicate) {
6586 + anObject(this);
6587 + try {
6588 + aCallable(predicate);
6589 + } catch (error) {
6590 + iteratorClose(this, 'throw', error);
6591 + }
6592 +
6593 + if (someWithoutClosingOnEarlyError) return call(someWithoutClosingOnEarlyError, this, predicate);
6594 +
6595 + var record = getIteratorDirect(this);
6596 + var counter = 0;
6597 + return iterate(record, function (value, stop) {
6598 + if (predicate(value, counter++)) return stop();
6599 + }, { IS_RECORD: true, INTERRUPTED: true }).stopped;
6600 + }
6601 +});
6602 +
6603 +
6604 +/***/ }),
6605 +
4740 6606 /***/ "../node_modules/core-js/modules/esnext.iterator.constructor.js":
4741 6607 /*!**********************************************************************!*\
4742 6608 !*** ../node_modules/core-js/modules/esnext.iterator.constructor.js ***!
4743 6609 \**********************************************************************/
@@ -4802,8 +6668,22 @@
4802 6668 "use strict";
4803 6669
4804 6670 // TODO: Remove from `core-js@4`
4805 6671 __webpack_require__(/*! ../modules/es.iterator.map */ "../node_modules/core-js/modules/es.iterator.map.js");
6672 +
6673 +
6674 +/***/ }),
6675 +
6676 +/***/ "../node_modules/core-js/modules/esnext.iterator.some.js":
6677 +/*!***************************************************************!*\
6678 + !*** ../node_modules/core-js/modules/esnext.iterator.some.js ***!
6679 + \***************************************************************/
6680 +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
6681 +
6682 +"use strict";
6683 +
6684 +// TODO: Remove from `core-js@4`
6685 +__webpack_require__(/*! ../modules/es.iterator.some */ "../node_modules/core-js/modules/es.iterator.some.js");
4806 6686
4807 6687
4808 6688 /***/ })
4809 6689