PluginProbe
Elementor Website Builder – more than just a page builder / 3.35.0-dev2
Elementor Website Builder – more than just a page builder v3.35.0-dev2
4.3.2 4.3.1 4.3.0 4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 All 455 releases
← All changes | assets/js/common-modules.js +2296 -12 4.1.0-beta2 → 3.35.0-dev2 View file →
@@ -1,7 +1,2071 @@
1 1 /******/ (() => { // webpackBootstrap
2 2 /******/ var __webpack_modules__ = ({
3 3
4 +/***/ "../app/assets/js/event-track/apps-event-tracking.js":
5 +/*!***********************************************************!*\
6 + !*** ../app/assets/js/event-track/apps-event-tracking.js ***!
7 + \***********************************************************/
8 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9 +
10 +"use strict";
11 +
12 +
13 +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
14 +Object.defineProperty(exports, "__esModule", ({
15 + value: true
16 +}));
17 +exports.appsEventTrackingDispatch = exports.AppsEventTracking = void 0;
18 +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
19 +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js"));
20 +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js"));
21 +var _eventsConfig = _interopRequireDefault(__webpack_require__(/*! ../../../../core/common/modules/events-manager/assets/js/events-config */ "../core/common/modules/events-manager/assets/js/events-config.js"));
22 +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
23 +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
24 +function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
25 +function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
26 +function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
27 +var EVENTS_MAP = {
28 + PAGE_VIEWS_WEBSITE_TEMPLATES: 'page_views_website_templates',
29 + KITS_CLOUD_UPGRADE_CLICKED: 'kits_cloud_upgrade_clicked',
30 + EXPORT_KIT_CUSTOMIZATION: 'export_kit_customization',
31 + IMPORT_KIT_CUSTOMIZATION: 'import_kit_customization',
32 + KIT_IMPORT_STATUS: 'kit_import_status',
33 + KIT_CLOUD_LIBRARY_APPLY: 'kit_cloud_library_apply',
34 + KIT_CLOUD_LIBRARY_DELETE: 'kit_cloud_library_delete',
35 + IMPORT_EXPORT_ADMIN_ACTION: 'ie_admin_action',
36 + KIT_IMPORT_UPLOAD_FILE: 'kit_import_upload_file'
37 +};
38 +var appsEventTrackingDispatch = exports.appsEventTrackingDispatch = function appsEventTrackingDispatch(command, eventParams) {
39 + // Add existing eventParams key value pair to the data/details object.
40 + var objectCreator = function objectCreator(array, obj) {
41 + var _iterator = _createForOfIteratorHelper(array),
42 + _step;
43 + try {
44 + for (_iterator.s(); !(_step = _iterator.n()).done;) {
45 + var key = _step.value;
46 + if (eventParams.hasOwnProperty(key) && eventParams[key] !== null) {
47 + obj[key] = eventParams[key];
48 + }
49 + }
50 + } catch (err) {
51 + _iterator.e(err);
52 + } finally {
53 + _iterator.f();
54 + }
55 + return obj;
56 + };
57 + var dataKeys = [];
58 + var 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'];
59 + var data = {};
60 + var details = {};
61 + var init = function init() {
62 + objectCreator(detailsKeys, details);
63 + objectCreator(dataKeys, data);
64 + var commandSplit = command.split('/');
65 + data.placement = commandSplit[0];
66 + data.event = commandSplit[1];
67 +
68 + // If 'details' is not empty, add the details object to the data object.
69 + if (Object.keys(details).length) {
70 + data.details = details;
71 + }
72 + };
73 + init();
74 + $e.run(command, data);
75 +};
76 +var AppsEventTracking = exports.AppsEventTracking = /*#__PURE__*/function () {
77 + function AppsEventTracking() {
78 + (0, _classCallCheck2.default)(this, AppsEventTracking);
79 + }
80 + return (0, _createClass2.default)(AppsEventTracking, null, [{
81 + key: "dispatchEvent",
82 + value: function dispatchEvent(eventName, payload) {
83 + return elementorCommon.eventsManager.dispatchEvent(eventName, payload);
84 + }
85 + }, {
86 + key: "sendPageViewsWebsiteTemplates",
87 + value: function sendPageViewsWebsiteTemplates(page) {
88 + return this.dispatchEvent(EVENTS_MAP.PAGE_VIEWS_WEBSITE_TEMPLATES, {
89 + trigger: _eventsConfig.default.triggers.pageLoaded,
90 + page_loaded: page,
91 + secondary_location: page
92 + });
93 + }
94 + }, {
95 + key: "sendKitsCloudUpgradeClicked",
96 + value: function sendKitsCloudUpgradeClicked(upgradeLocation) {
97 + return this.dispatchEvent(EVENTS_MAP.KITS_CLOUD_UPGRADE_CLICKED, {
98 + trigger: _eventsConfig.default.triggers.click,
99 + secondary_location: upgradeLocation,
100 + upgrade_location: upgradeLocation
101 + });
102 + }
103 + }, {
104 + key: "sendExportKitCustomization",
105 + value: function sendExportKitCustomization(payload) {
106 + return this.dispatchEvent(EVENTS_MAP.EXPORT_KIT_CUSTOMIZATION, _objectSpread({
107 + trigger: _eventsConfig.default.triggers.click
108 + }, payload));
109 + }
110 + }, {
111 + key: "sendImportKitCustomization",
112 + value: function sendImportKitCustomization(payload) {
113 + return this.dispatchEvent(EVENTS_MAP.IMPORT_KIT_CUSTOMIZATION, _objectSpread({
114 + trigger: _eventsConfig.default.triggers.click
115 + }, payload));
116 + }
117 + }, {
118 + key: "sendKitImportStatus",
119 + value: function sendKitImportStatus() {
120 + var error = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
121 + var isError = !!error;
122 + return this.dispatchEvent(EVENTS_MAP.KIT_IMPORT_STATUS, _objectSpread({
123 + kit_import_status: !isError
124 + }, isError && {
125 + kit_import_error: error.message
126 + }));
127 + }
128 + }, {
129 + key: "sendKitCloudLibraryApply",
130 + value: function sendKitCloudLibraryApply(kitId, kitApplyUrl) {
131 + return this.dispatchEvent(EVENTS_MAP.KIT_CLOUD_LIBRARY_APPLY, _objectSpread({
132 + trigger: _eventsConfig.default.triggers.click,
133 + kit_cloud_id: kitId
134 + }, kitApplyUrl && {
135 + kit_apply_url: kitApplyUrl
136 + }));
137 + }
138 + }, {
139 + key: "sendKitCloudLibraryDelete",
140 + value: function sendKitCloudLibraryDelete() {
141 + return this.dispatchEvent(EVENTS_MAP.KIT_CLOUD_LIBRARY_DELETE, {
142 + trigger: _eventsConfig.default.triggers.click
143 + });
144 + }
145 + }, {
146 + key: "sendImportExportAdminAction",
147 + value: function sendImportExportAdminAction(actionType) {
148 + return this.dispatchEvent(EVENTS_MAP.IMPORT_EXPORT_ADMIN_ACTION, {
149 + trigger: _eventsConfig.default.triggers.click,
150 + action_type: actionType
151 + });
152 + }
153 + }, {
154 + key: "sendKitImportUploadFile",
155 + value: function sendKitImportUploadFile(status) {
156 + return this.dispatchEvent(EVENTS_MAP.KIT_IMPORT_UPLOAD_FILE, {
157 + kit_import_upload_file_status: status
158 + });
159 + }
160 + }]);
161 +}();
162 +
163 +/***/ }),
164 +
165 +/***/ "../app/assets/js/event-track/dashboard/action-controls.js":
166 +/*!*****************************************************************!*\
167 + !*** ../app/assets/js/event-track/dashboard/action-controls.js ***!
168 + \*****************************************************************/
169 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
170 +
171 +"use strict";
172 +
173 +
174 +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
175 +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
176 +Object.defineProperty(exports, "__esModule", ({
177 + value: true
178 +}));
179 +exports["default"] = void 0;
180 +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js"));
181 +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js"));
182 +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js"));
183 +var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js"));
184 +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js"));
185 +var _wpDashboardTracking = _interopRequireWildcard(__webpack_require__(/*! ../wp-dashboard-tracking */ "../app/assets/js/event-track/wp-dashboard-tracking.js"));
186 +var _utils = __webpack_require__(/*! ./utils */ "../app/assets/js/event-track/dashboard/utils.js");
187 +var _baseTracking = _interopRequireDefault(__webpack_require__(/*! ./base-tracking */ "../app/assets/js/event-track/dashboard/base-tracking.js"));
188 +function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(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 (var _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); }
189 +function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
190 +function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
191 +function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
192 +function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
193 +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
194 +var EXCLUDED_SELECTORS = {
195 + ADMIN_MENU: '#adminmenu',
196 + TOP_BAR: '.e-admin-top-bar',
197 + TOP_BAR_EDITOR_ONE: '#editor-one-top-bar',
198 + WP_ADMIN_BAR: '#wpadminbar',
199 + SUBMENU: '.wp-submenu',
200 + PROMO_PAGE: '.e-feature-promotion',
201 + PROMO_BLANK_STATE: '.elementor-blank_state',
202 + APP: '.e-app',
203 + SIDEBAR_NAVIGATION: '#editor-one-sidebar-navigation',
204 + FLYOUT_MENU: '.elementor-submenu-flyout'
205 +};
206 +var ActionControlTracking = /*#__PURE__*/function (_BaseTracking) {
207 + function ActionControlTracking() {
208 + (0, _classCallCheck2.default)(this, ActionControlTracking);
209 + return _callSuper(this, ActionControlTracking, arguments);
210 + }
211 + (0, _inherits2.default)(ActionControlTracking, _BaseTracking);
212 + return (0, _createClass2.default)(ActionControlTracking, null, [{
213 + key: "init",
214 + value: function init() {
215 + if (!_utils.DashboardUtils.isElementorPage()) {
216 + return;
217 + }
218 + this.attachDelegatedHandlers();
219 + this.addTrackingAttributesToFilterButtons();
220 + this.initializeLinkDataIds();
221 + }
222 + }, {
223 + key: "initializeLinkDataIds",
224 + value: function initializeLinkDataIds() {
225 + var _this = this;
226 + var initializeLinks = function initializeLinks() {
227 + var links = document.querySelectorAll('a[href]');
228 + links.forEach(function (link) {
229 + if (_this.isExcludedElement(link) || _this.isNavigationLink(link) || link.hasAttribute('data-id')) {
230 + return;
231 + }
232 + var href = link.getAttribute('href');
233 + if (!href) {
234 + return;
235 + }
236 + var cleanedHref = _this.removeNonceFromUrl(href);
237 + if (cleanedHref) {
238 + link.setAttribute('data-id', cleanedHref);
239 + }
240 + });
241 + };
242 + if ('loading' === document.readyState) {
243 + document.addEventListener('DOMContentLoaded', initializeLinks);
244 + } else {
245 + initializeLinks();
246 + }
247 + }
248 + }, {
249 + key: "addTrackingAttributesToFilterButtons",
250 + value: function addTrackingAttributesToFilterButtons() {
251 + var body = document.body;
252 + if (!body) {
253 + return;
254 + }
255 + var screenPrefix = '';
256 + switch (true) {
257 + case body.classList.contains('post-type-elementor_library'):
258 + screenPrefix = 'elementor_library-library';
259 + break;
260 + case body.classList.contains('post-type-e-floating-buttons'):
261 + screenPrefix = 'e-floating-buttons';
262 + break;
263 + default:
264 + return;
265 + }
266 + var addDataIdToListTableButtons = function addDataIdToListTableButtons() {
267 + var buttonConfigs = [{
268 + id: 'post-query-submit',
269 + suffix: 'filter'
270 + }, {
271 + id: 'search-submit',
272 + suffix: 'search'
273 + }, {
274 + id: 'doaction',
275 + suffix: 'apply'
276 + }, {
277 + id: 'doaction2',
278 + suffix: 'apply-bottom'
279 + }];
280 + buttonConfigs.forEach(function (config) {
281 + var button = document.getElementById(config.id);
282 + if (!button || button.hasAttribute('data-id')) {
283 + return;
284 + }
285 + button.setAttribute('data-id', "".concat(screenPrefix, "-button-").concat(config.suffix));
286 + });
287 + };
288 + if ('loading' === document.readyState) {
289 + document.addEventListener('DOMContentLoaded', addDataIdToListTableButtons);
290 + } else {
291 + addDataIdToListTableButtons();
292 + }
293 + }
294 + }, {
295 + key: "isExcludedElement",
296 + value: function isExcludedElement(element) {
297 + for (var _i = 0, _Object$values = Object.values(EXCLUDED_SELECTORS); _i < _Object$values.length; _i++) {
298 + var selector = _Object$values[_i];
299 + if (element.closest(selector)) {
300 + return true;
301 + }
302 + }
303 + if (element.classList.contains('go-pro')) {
304 + return true;
305 + }
306 + return false;
307 + }
308 + }, {
309 + key: "attachDelegatedHandlers",
310 + value: function attachDelegatedHandlers() {
311 + var _this2 = this;
312 + var FILTER_BUTTON_IDS = ['search-submit', 'post-query-submit'];
313 + this.addEventListenerTracked(document, 'click', function (event) {
314 + var _event$target;
315 + var base = event.target && 1 === event.target.nodeType ? event.target : (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.parentElement;
316 + if (!base) {
317 + return;
318 + }
319 + var toggle = base.closest('.elementor-role-toggle');
320 + if (toggle && !_this2.isExcludedElement(toggle)) {
321 + _this2.trackControl(toggle, _wpDashboardTracking.CONTROL_TYPES.TOGGLE);
322 + return;
323 + }
324 + var button = base.closest('button, input[type="submit"], input[type="button"], .button, .e-btn');
325 + if (button && !_this2.isExcludedElement(button)) {
326 + if (FILTER_BUTTON_IDS.includes(button.id)) {
327 + _this2.trackControl(button, _wpDashboardTracking.CONTROL_TYPES.FILTER);
328 + return;
329 + }
330 + _this2.trackControl(button, _wpDashboardTracking.CONTROL_TYPES.BUTTON);
331 + return;
332 + }
333 + var link = base.closest('a');
334 + if (link && !_this2.isExcludedElement(link) && !_this2.isNavigationLink(link)) {
335 + _this2.trackControl(link, _wpDashboardTracking.CONTROL_TYPES.LINK);
336 + }
337 + }, {
338 + capture: false
339 + });
340 + this.addEventListenerTracked(document, 'change', function (event) {
341 + var _event$target2;
342 + var base = event.target && 1 === event.target.nodeType ? event.target : (_event$target2 = event.target) === null || _event$target2 === void 0 ? void 0 : _event$target2.parentElement;
343 + if (!base) {
344 + return;
345 + }
346 + var toggle = null;
347 + if (_wpDashboardTracking.default.isEditorOneActive()) {
348 + toggle = base.closest('.MuiSwitch-switchBase');
349 + } else {
350 + toggle = base.closest('.components-toggle-control');
351 + }
352 + if (toggle && !_this2.isExcludedElement(toggle)) {
353 + _this2.trackControl(toggle, _wpDashboardTracking.CONTROL_TYPES.TOGGLE);
354 + return;
355 + }
356 + var checkbox = base.closest('input[type="checkbox"]');
357 + if (checkbox && !_this2.isExcludedElement(checkbox)) {
358 + _this2.trackControl(checkbox, _wpDashboardTracking.CONTROL_TYPES.CHECKBOX);
359 + return;
360 + }
361 + var radio = base.closest('input[type="radio"]');
362 + if (radio && !_this2.isExcludedElement(radio)) {
363 + _this2.trackControl(radio, _wpDashboardTracking.CONTROL_TYPES.RADIO);
364 + return;
365 + }
366 + var select = base.closest('select');
367 + if (select && !_this2.isExcludedElement(select)) {
368 + _this2.trackControl(select, _wpDashboardTracking.CONTROL_TYPES.SELECT);
369 + }
370 + });
371 + }
372 + }, {
373 + key: "isNavigationLink",
374 + value: function isNavigationLink(link) {
375 + var href = link.getAttribute('href');
376 + if (!href) {
377 + return false;
378 + }
379 + if (href.startsWith('#') && href.includes('tab')) {
380 + return true;
381 + }
382 + if (link.classList.contains('nav-tab')) {
383 + return true;
384 + }
385 + var isInNavigation = link.closest('.wp-submenu, #adminmenu, .e-admin-top-bar, #wpadminbar');
386 + return !!isInNavigation;
387 + }
388 + }, {
389 + key: "trackControl",
390 + value: function trackControl(element, controlType) {
391 + var controlIdentifier = this.extractControlIdentifier(element, controlType);
392 + if (!controlIdentifier) {
393 + return;
394 + }
395 + _wpDashboardTracking.default.trackActionControl(controlIdentifier, controlType);
396 + }
397 + }, {
398 + key: "extractControlIdentifier",
399 + value: function extractControlIdentifier(element, controlType) {
400 + if (_wpDashboardTracking.CONTROL_TYPES.RADIO === controlType) {
401 + var name = element.getAttribute('name');
402 + var value = element.value || element.getAttribute('value');
403 + if (name && value) {
404 + return "".concat(name, "-").concat(value);
405 + }
406 + if (name) {
407 + return name;
408 + }
409 + }
410 + if (_wpDashboardTracking.CONTROL_TYPES.SELECT === controlType) {
411 + var _name = element.getAttribute('name');
412 + if (_name) {
413 + return _name;
414 + }
415 + }
416 + if (_wpDashboardTracking.CONTROL_TYPES.CHECKBOX === controlType) {
417 + var _name2 = element.getAttribute('name');
418 + if (_name2) {
419 + var checkboxesWithSameName = document.querySelectorAll("input[type=\"checkbox\"][name=\"".concat(CSS.escape(_name2), "\"]"));
420 + if (checkboxesWithSameName.length > 1) {
421 + var _value = element.value || element.getAttribute('value');
422 + if (_value) {
423 + return "".concat(_name2, "-").concat(_value);
424 + }
425 + }
426 + return _name2;
427 + }
428 + }
429 + if (_wpDashboardTracking.CONTROL_TYPES.LINK === controlType) {
430 + var dataId = element.getAttribute('data-id');
431 + if (dataId) {
432 + return dataId;
433 + }
434 + var href = element.getAttribute('href');
435 + if (href) {
436 + return this.removeNonceFromUrl(href);
437 + }
438 + }
439 + if (_wpDashboardTracking.CONTROL_TYPES.BUTTON === controlType || _wpDashboardTracking.CONTROL_TYPES.TOGGLE === controlType || _wpDashboardTracking.CONTROL_TYPES.FILTER === controlType) {
440 + var _dataId = element.getAttribute('data-id');
441 + if (_dataId) {
442 + return _dataId;
443 + }
444 + var classIdMatch = this.extractClassId(element);
445 + if (classIdMatch) {
446 + return classIdMatch;
447 + }
448 + }
449 + return '';
450 + }
451 + }, {
452 + key: "extractClassId",
453 + value: function extractClassId(element) {
454 + var classes = element.className;
455 + if (!classes || 'string' !== typeof classes) {
456 + return '';
457 + }
458 + var classList = classes.split(' ');
459 + var _iterator = _createForOfIteratorHelper(classList),
460 + _step;
461 + try {
462 + for (_iterator.s(); !(_step = _iterator.n()).done;) {
463 + var cls = _step.value;
464 + if (cls.startsWith('e-id-')) {
465 + return cls.substring(5);
466 + }
467 + }
468 + } catch (err) {
469 + _iterator.e(err);
470 + } finally {
471 + _iterator.f();
472 + }
473 + return '';
474 + }
475 + }, {
476 + key: "removeNonceFromUrl",
477 + value: function removeNonceFromUrl(url) {
478 + try {
479 + var urlObj = new URL(url, window.location.origin);
480 + urlObj.searchParams.delete('_wpnonce');
481 + var postParam = urlObj.searchParams.get('post');
482 + if (postParam !== null && /^[0-9]+$/.test(postParam)) {
483 + urlObj.searchParams.delete('post');
484 + }
485 + return urlObj.pathname + urlObj.search + urlObj.hash;
486 + } catch (e) {
487 + return url;
488 + }
489 + }
490 + }]);
491 +}(_baseTracking.default);
492 +var _default = exports["default"] = ActionControlTracking;
493 +
494 +/***/ }),
495 +
496 +/***/ "../app/assets/js/event-track/dashboard/base-tracking.js":
497 +/*!***************************************************************!*\
498 + !*** ../app/assets/js/event-track/dashboard/base-tracking.js ***!
499 + \***************************************************************/
500 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
501 +
502 +"use strict";
503 +
504 +
505 +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
506 +Object.defineProperty(exports, "__esModule", ({
507 + value: true
508 +}));
509 +exports["default"] = void 0;
510 +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js"));
511 +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js"));
512 +var BaseTracking = /*#__PURE__*/function () {
513 + function BaseTracking() {
514 + (0, _classCallCheck2.default)(this, BaseTracking);
515 + }
516 + return (0, _createClass2.default)(BaseTracking, null, [{
517 + key: "ensureOwnArrays",
518 + value: function ensureOwnArrays() {
519 + if (!Object.prototype.hasOwnProperty.call(this, 'observers')) {
520 + this.observers = [];
521 + }
522 + if (!Object.prototype.hasOwnProperty.call(this, 'eventListeners')) {
523 + this.eventListeners = [];
524 + }
525 + }
526 + }, {
527 + key: "destroy",
528 + value: function destroy() {
529 + this.ensureOwnArrays();
530 + this.observers.forEach(function (observer) {
531 + return observer.disconnect();
532 + });
533 + this.observers = [];
534 + this.eventListeners.forEach(function (_ref) {
535 + var target = _ref.target,
536 + type = _ref.type,
537 + handler = _ref.handler,
538 + options = _ref.options;
539 + target.removeEventListener(type, handler, options);
540 + });
541 + this.eventListeners = [];
542 + }
543 + }, {
544 + key: "addObserver",
545 + value: function addObserver(target, options, callback) {
546 + this.ensureOwnArrays();
547 + var observer = new MutationObserver(callback);
548 + observer.observe(target, options);
549 + this.observers.push(observer);
550 + return observer;
551 + }
552 + }, {
553 + key: "addEventListenerTracked",
554 + value: function addEventListenerTracked(target, type, handler) {
555 + var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
556 + this.ensureOwnArrays();
557 + target.addEventListener(type, handler, options);
558 + this.eventListeners.push({
559 + target: target,
560 + type: type,
561 + handler: handler,
562 + options: options
563 + });
564 + }
565 + }]);
566 +}();
567 +var _default = exports["default"] = BaseTracking;
568 +
569 +/***/ }),
570 +
571 +/***/ "../app/assets/js/event-track/dashboard/menu-promotion.js":
572 +/*!****************************************************************!*\
573 + !*** ../app/assets/js/event-track/dashboard/menu-promotion.js ***!
574 + \****************************************************************/
575 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
576 +
577 +"use strict";
578 +
579 +
580 +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
581 +Object.defineProperty(exports, "__esModule", ({
582 + value: true
583 +}));
584 +exports["default"] = void 0;
585 +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js"));
586 +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js"));
587 +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js"));
588 +var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js"));
589 +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js"));
590 +var _wpDashboardTracking = _interopRequireDefault(__webpack_require__(/*! ../wp-dashboard-tracking */ "../app/assets/js/event-track/wp-dashboard-tracking.js"));
591 +var _baseTracking = _interopRequireDefault(__webpack_require__(/*! ./base-tracking */ "../app/assets/js/event-track/dashboard/base-tracking.js"));
592 +function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
593 +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
594 +var PROMO_MENU_ITEMS = {
595 + go_elementor_pro: 'Upgrade'
596 +};
597 +var MenuPromotionTracking = /*#__PURE__*/function (_BaseTracking) {
598 + function MenuPromotionTracking() {
599 + (0, _classCallCheck2.default)(this, MenuPromotionTracking);
600 + return _callSuper(this, MenuPromotionTracking, arguments);
601 + }
602 + (0, _inherits2.default)(MenuPromotionTracking, _BaseTracking);
603 + return (0, _createClass2.default)(MenuPromotionTracking, null, [{
604 + key: "init",
605 + value: function init() {
606 + this.attachDelegatedTracking();
607 + }
608 + }, {
609 + key: "attachDelegatedTracking",
610 + value: function attachDelegatedTracking() {
611 + var _this = this;
612 + this.addEventListenerTracked(document, 'click', function (event) {
613 + var target = event.target;
614 + if (!target) {
615 + return;
616 + }
617 + var link = target.closest('a');
618 + if (!link) {
619 + return;
620 + }
621 + var href = link.getAttribute('href');
622 + if (!href) {
623 + return;
624 + }
625 + var menuItemKey = _this.extractPromoMenuKey(href);
626 + if (!menuItemKey) {
627 + return;
628 + }
629 + _this.handleMenuPromoClick(link, menuItemKey);
630 + }, {
631 + capture: true
632 + });
633 + }
634 + }, {
635 + key: "extractPromoMenuKey",
636 + value: function extractPromoMenuKey(href) {
637 + for (var _i = 0, _Object$keys = Object.keys(PROMO_MENU_ITEMS); _i < _Object$keys.length; _i++) {
638 + var menuItemKey = _Object$keys[_i];
639 + if (href.includes("page=".concat(menuItemKey))) {
640 + return menuItemKey;
641 + }
642 + }
643 + return null;
644 + }
645 + }, {
646 + key: "handleMenuPromoClick",
647 + value: function handleMenuPromoClick(menuItem, menuItemKey) {
648 + var destination = menuItem.getAttribute('href');
649 + var promoName = PROMO_MENU_ITEMS[menuItemKey];
650 + var path = menuItemKey.replace('elementor_', '').replace(/_/g, '/');
651 + _wpDashboardTracking.default.trackPromoClicked(promoName, destination, path);
652 + }
653 + }]);
654 +}(_baseTracking.default);
655 +var _default = exports["default"] = MenuPromotionTracking;
656 +
657 +/***/ }),
658 +
659 +/***/ "../app/assets/js/event-track/dashboard/navigation.js":
660 +/*!************************************************************!*\
661 + !*** ../app/assets/js/event-track/dashboard/navigation.js ***!
662 + \************************************************************/
663 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
664 +
665 +"use strict";
666 +
667 +
668 +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
669 +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
670 +Object.defineProperty(exports, "__esModule", ({
671 + value: true
672 +}));
673 +exports["default"] = void 0;
674 +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js"));
675 +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js"));
676 +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js"));
677 +var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js"));
678 +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js"));
679 +var _wpDashboardTracking = _interopRequireWildcard(__webpack_require__(/*! ../wp-dashboard-tracking */ "../app/assets/js/event-track/wp-dashboard-tracking.js"));
680 +var _baseTracking = _interopRequireDefault(__webpack_require__(/*! ./base-tracking */ "../app/assets/js/event-track/dashboard/base-tracking.js"));
681 +function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(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 (var _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); }
682 +function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
683 +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
684 +var ELEMENTOR_MENU_SELECTORS = {
685 + ELEMENTOR_TOP_LEVEL: 'li#toplevel_page_elementor',
686 + TEMPLATES_TOP_LEVEL: 'li#menu-posts-elementor_library',
687 + ELEMENTOR_HOME_TOP_LEVEL: 'li#toplevel_page_elementor-home',
688 + ADMIN_MENU: '#adminmenu',
689 + TOP_LEVEL_LINK: '.wp-menu-name',
690 + SUBMENU_CONTAINER: '.wp-submenu',
691 + SUBMENU_ITEM: '.wp-submenu li a',
692 + SUBMENU_ITEM_TOP_LEVEL: '.wp-has-submenu',
693 + SIDEBAR_NAVIGATION: '#editor-one-sidebar-navigation'
694 +};
695 +var NavigationTracking = /*#__PURE__*/function (_BaseTracking) {
696 + function NavigationTracking() {
697 + (0, _classCallCheck2.default)(this, NavigationTracking);
698 + return _callSuper(this, NavigationTracking, arguments);
699 + }
700 + (0, _inherits2.default)(NavigationTracking, _BaseTracking);
701 + return (0, _createClass2.default)(NavigationTracking, null, [{
702 + key: "init",
703 + value: function init() {
704 + if (_wpDashboardTracking.default.isEditorOneActive()) {
705 + this.attachSidebarNavigationTracking();
706 + this.attachElementorHomeMenuTracking();
707 + } else {
708 + this.attachElementorMenuTracking();
709 + this.attachTemplatesMenuTracking();
710 + }
711 + }
712 + }, {
713 + key: "attachTemplatesMenuTracking",
714 + value: function attachTemplatesMenuTracking() {
715 + var templatesMenu = document.querySelector(ELEMENTOR_MENU_SELECTORS.TEMPLATES_TOP_LEVEL);
716 + if (!templatesMenu) {
717 + return;
718 + }
719 + this.attachMenuTracking(templatesMenu, 'Templates');
720 + }
721 + }, {
722 + key: "attachElementorHomeMenuTracking",
723 + value: function attachElementorHomeMenuTracking() {
724 + var elementorHomeMenu = document.querySelector(ELEMENTOR_MENU_SELECTORS.ELEMENTOR_HOME_TOP_LEVEL);
725 + if (!elementorHomeMenu) {
726 + return;
727 + }
728 + this.attachMenuTracking(elementorHomeMenu, 'Elementor');
729 + }
730 + }, {
731 + key: "attachElementorMenuTracking",
732 + value: function attachElementorMenuTracking() {
733 + var elementorMenu = document.querySelector(ELEMENTOR_MENU_SELECTORS.ELEMENTOR_TOP_LEVEL);
734 + if (!elementorMenu) {
735 + return;
736 + }
737 + this.attachMenuTracking(elementorMenu, 'Elementor');
738 + }
739 + }, {
740 + key: "attachSidebarNavigationTracking",
741 + value: function attachSidebarNavigationTracking() {
742 + var sidebar = document.querySelector(ELEMENTOR_MENU_SELECTORS.SIDEBAR_NAVIGATION);
743 + if (sidebar) {
744 + this.attachSidebarClickListener(sidebar);
745 + }
746 + }
747 + }, {
748 + key: "attachSidebarClickListener",
749 + value: function attachSidebarClickListener(sidebar) {
750 + var _this = this;
751 + this.addEventListenerTracked(sidebar, 'click', function (event) {
752 + _this.handleSidebarClick(event);
753 + }, {
754 + capture: true
755 + });
756 + }
757 + }, {
758 + key: "attachMenuTracking",
759 + value: function attachMenuTracking(menuElement, menuName) {
760 + var _this2 = this;
761 + this.addEventListenerTracked(menuElement, 'click', function (event) {
762 + _this2.handleMenuClick(event, menuName);
763 + });
764 + }
765 + }, {
766 + key: "handleMenuClick",
767 + value: function handleMenuClick(event, menuName) {
768 + var link = event.target.closest('a');
769 + if (!link) {
770 + return;
771 + }
772 + var isTopLevel = link.classList.contains('menu-top');
773 + var itemId = this.extractItemId(link);
774 + var area = this.determineNavArea(link);
775 + _wpDashboardTracking.default.trackNavClicked(itemId, isTopLevel ? null : menuName, area);
776 + }
777 + }, {
778 + key: "handleSidebarClick",
779 + value: function handleSidebarClick(event) {
780 + var clickedElement = event.target.closest('a, button, [role="button"]');
781 + if (!clickedElement) {
782 + return;
783 + }
784 + var itemId = this.extractSidebarItemId(clickedElement);
785 + _wpDashboardTracking.default.trackNavClicked(itemId, null, _wpDashboardTracking.NAV_AREAS.SIDEBAR_MENU);
786 + }
787 + }, {
788 + key: "extractSidebarItemId",
789 + value: function extractSidebarItemId(element) {
790 + var paragraph = element.querySelector('p');
791 + if (paragraph) {
792 + return paragraph.textContent.trim();
793 + }
794 + var textContent = element.textContent.trim();
795 + if (textContent) {
796 + return textContent;
797 + }
798 + return 'unknown';
799 + }
800 + }, {
801 + key: "extractPageFromUrl",
802 + value: function extractPageFromUrl(href) {
803 + var urlParams = new URLSearchParams(href.split('?')[1] || '');
804 + var page = urlParams.get('page');
805 + if (page) {
806 + return page;
807 + }
808 + var postType = urlParams.get('post_type');
809 + if (postType) {
810 + return postType;
811 + }
812 + return 'unknown';
813 + }
814 + }, {
815 + key: "extractItemId",
816 + value: function extractItemId(link) {
817 + var textContent = link.textContent.trim();
818 + if (textContent) {
819 + return textContent;
820 + }
821 + var href = link.getAttribute('href');
822 + if (href) {
823 + return this.extractPageFromUrl(href);
824 + }
825 + var linkId = link.getAttribute('id');
826 + if (linkId) {
827 + return linkId;
828 + }
829 + return 'unknown';
830 + }
831 + }, {
832 + key: "determineNavArea",
833 + value: function determineNavArea(link) {
834 + var parentMenu = link.closest('li.menu-top');
835 + if (parentMenu) {
836 + var isSubmenuItem = link.closest(ELEMENTOR_MENU_SELECTORS.SUBMENU_CONTAINER);
837 + if (isSubmenuItem) {
838 + var submenuElement = link.closest(ELEMENTOR_MENU_SELECTORS.SUBMENU_ITEM_TOP_LEVEL);
839 + if (submenuElement.classList.contains('wp-not-current-submenu')) {
840 + return _wpDashboardTracking.NAV_AREAS.HOVER_MENU;
841 + }
842 + return _wpDashboardTracking.NAV_AREAS.SUBMENU;
843 + }
844 + return _wpDashboardTracking.NAV_AREAS.LEFT_MENU;
845 + }
846 + return _wpDashboardTracking.NAV_AREAS.LEFT_MENU;
847 + }
848 + }]);
849 +}(_baseTracking.default);
850 +var _default = exports["default"] = NavigationTracking;
851 +
852 +/***/ }),
853 +
854 +/***/ "../app/assets/js/event-track/dashboard/plugin-actions.js":
855 +/*!****************************************************************!*\
856 + !*** ../app/assets/js/event-track/dashboard/plugin-actions.js ***!
857 + \****************************************************************/
858 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
859 +
860 +"use strict";
861 +
862 +
863 +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
864 +Object.defineProperty(exports, "__esModule", ({
865 + value: true
866 +}));
867 +exports["default"] = void 0;
868 +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js"));
869 +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js"));
870 +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js"));
871 +var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js"));
872 +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js"));
873 +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
874 +var _wpDashboardTracking = _interopRequireDefault(__webpack_require__(/*! ../wp-dashboard-tracking */ "../app/assets/js/event-track/wp-dashboard-tracking.js"));
875 +var _baseTracking = _interopRequireDefault(__webpack_require__(/*! ./base-tracking */ "../app/assets/js/event-track/dashboard/base-tracking.js"));
876 +function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
877 +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
878 +var PLUGIN_TYPE = {
879 + ELEMENTOR: 'core',
880 + ELEMENTOR_PRO: 'pro'
881 +};
882 +var PluginActions = /*#__PURE__*/function (_BaseTracking) {
883 + function PluginActions() {
884 + (0, _classCallCheck2.default)(this, PluginActions);
885 + return _callSuper(this, PluginActions, arguments);
886 + }
887 + (0, _inherits2.default)(PluginActions, _BaseTracking);
888 + return (0, _createClass2.default)(PluginActions, null, [{
889 + key: "init",
890 + value: function init() {
891 + this.attachCoreDeactivationTracking();
892 + this.attachProDeactivationTracking();
893 + this.attachProDeletionTracking();
894 + }
895 + }, {
896 + key: "attachCoreDeactivationTracking",
897 + value: function attachCoreDeactivationTracking() {
898 + var _this = this;
899 + var dialogForm = document.querySelector('#elementor-deactivate-feedback-dialog-form');
900 + if (!dialogForm) {
901 + return;
902 + }
903 + this.addEventListenerTracked(dialogForm, 'change', function (event) {
904 + var target = event.target;
905 + if (target.classList.contains('elementor-deactivate-feedback-dialog-input')) {
906 + _this.selectedReason = target.value;
907 + }
908 + });
909 + this.observeModalButtons();
910 + }
911 + }, {
912 + key: "attachProDeactivationTracking",
913 + value: function attachProDeactivationTracking() {
914 + var _this2 = this;
915 + var pluginsTable = document.querySelector('.plugins');
916 + if (!pluginsTable) {
917 + return;
918 + }
919 + this.addEventListenerTracked(pluginsTable, 'click', function (event) {
920 + var link = event.target.closest('a');
921 + if (link && 'deactivate-elementor-pro' === link.id) {
922 + _this2.trackProDeactivation();
923 + }
924 + }, {
925 + capture: true
926 + });
927 + }
928 + }, {
929 + key: "observeModalButtons",
930 + value: function observeModalButtons() {
931 + var _this3 = this;
932 + var checkAndAttachDelegation = function checkAndAttachDelegation() {
933 + var modal = document.querySelector('#elementor-deactivate-feedback-modal');
934 + if (!modal) {
935 + return false;
936 + }
937 + _this3.addEventListenerTracked(modal, 'click', function (event) {
938 + var submitButton = event.target.closest('.dialog-submit');
939 + var skipButton = event.target.closest('.dialog-skip');
940 + if (submitButton) {
941 + _this3.trackCoreDeactivation('submit&deactivate');
942 + } else if (skipButton) {
943 + _this3.trackCoreDeactivation('skip&deactivate');
944 + }
945 + }, {
946 + capture: true
947 + });
948 + return true;
949 + };
950 + if (checkAndAttachDelegation()) {
951 + return;
952 + }
953 + this.addObserver(document.body, {
954 + childList: true,
955 + subtree: true
956 + }, function (mutations, observer) {
957 + if (checkAndAttachDelegation()) {
958 + observer.disconnect();
959 + }
960 + });
961 + }
962 + }, {
963 + key: "getUserInput",
964 + value: function getUserInput() {
965 + var reasonsWithInput = ['found_a_better_plugin', 'other'];
966 + if (!this.selectedReason || !reasonsWithInput.includes(this.selectedReason)) {
967 + return null;
968 + }
969 + var inputField = document.querySelector("input[name=\"reason_".concat(this.selectedReason, "\"]"));
970 + if (inputField && inputField.value) {
971 + return inputField.value;
972 + }
973 + return null;
974 + }
975 + }, {
976 + key: "trackCoreDeactivation",
977 + value: function trackCoreDeactivation(action) {
978 + var properties = {
979 + deactivate_form_submit: action,
980 + deactivate_plugin_type: PLUGIN_TYPE.ELEMENTOR
981 + };
982 + if (this.selectedReason) {
983 + properties.deactivate_feedback_reason = this.selectedReason;
984 + }
985 + var userInput = this.getUserInput();
986 + if (userInput) {
987 + properties.deactivate_feedback_reason += "/".concat(userInput);
988 + }
989 + _wpDashboardTracking.default.dispatchEvent('wpdash_deactivate_plugin', properties, {
990 + send_immediately: true
991 + });
992 + }
993 + }, {
994 + key: "trackProDeactivation",
995 + value: function trackProDeactivation() {
996 + this.trackProAction('deactivate');
997 + }
998 + }, {
999 + key: "attachProDeletionTracking",
1000 + value: function attachProDeletionTracking() {
1001 + var _this4 = this;
1002 + if ('undefined' === typeof jQuery) {
1003 + return;
1004 + }
1005 + jQuery(document).on('wp-plugin-deleting', function (event, args) {
1006 + if ('elementor-pro' === (args === null || args === void 0 ? void 0 : args.slug)) {
1007 + _this4.trackProAction('delete');
1008 + }
1009 + });
1010 + }
1011 + }, {
1012 + key: "destroy",
1013 + value: function destroy() {
1014 + if ('undefined' !== typeof jQuery) {
1015 + jQuery(document).off('wp-plugin-deleting');
1016 + }
1017 + _baseTracking.default.destroy.call(this);
1018 + }
1019 + }, {
1020 + key: "trackProAction",
1021 + value: function trackProAction(action) {
1022 + var eventMap = {
1023 + deactivate: {
1024 + eventName: 'wpdash_deactivate_plugin',
1025 + propertyKey: 'deactivate_plugin_type'
1026 + },
1027 + delete: {
1028 + eventName: 'wpdash_delete_plugin',
1029 + propertyKey: 'plugin_delete'
1030 + }
1031 + };
1032 + var config = eventMap[action];
1033 + if (!config) {
1034 + return;
1035 + }
1036 + var properties = (0, _defineProperty2.default)({}, config.propertyKey, PLUGIN_TYPE.ELEMENTOR_PRO);
1037 + _wpDashboardTracking.default.dispatchEvent(config.eventName, properties, {
1038 + send_immediately: true
1039 + });
1040 + }
1041 + }]);
1042 +}(_baseTracking.default);
1043 +(0, _defineProperty2.default)(PluginActions, "selectedReason", null);
1044 +var _default = exports["default"] = PluginActions;
1045 +
1046 +/***/ }),
1047 +
1048 +/***/ "../app/assets/js/event-track/dashboard/promotion.js":
1049 +/*!***********************************************************!*\
1050 + !*** ../app/assets/js/event-track/dashboard/promotion.js ***!
1051 + \***********************************************************/
1052 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1053 +
1054 +"use strict";
1055 +
1056 +
1057 +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1058 +Object.defineProperty(exports, "__esModule", ({
1059 + value: true
1060 +}));
1061 +exports["default"] = void 0;
1062 +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js"));
1063 +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js"));
1064 +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js"));
1065 +var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js"));
1066 +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js"));
1067 +var _wpDashboardTracking = _interopRequireDefault(__webpack_require__(/*! ../wp-dashboard-tracking */ "../app/assets/js/event-track/wp-dashboard-tracking.js"));
1068 +var _baseTracking = _interopRequireDefault(__webpack_require__(/*! ./base-tracking */ "../app/assets/js/event-track/dashboard/base-tracking.js"));
1069 +function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
1070 +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
1071 +var PROMO_SELECTORS = {
1072 + PROMO_PAGE: '.e-feature-promotion, .elementor-settings-form-page, #elementor-element-manager-wrap',
1073 + PROMO_BLANK_STATE: '.elementor-blank_state',
1074 + CTA_BUTTON: '.go-pro',
1075 + TITLE: 'h3'
1076 +};
1077 +var PromotionTracking = /*#__PURE__*/function (_BaseTracking) {
1078 + function PromotionTracking() {
1079 + (0, _classCallCheck2.default)(this, PromotionTracking);
1080 + return _callSuper(this, PromotionTracking, arguments);
1081 + }
1082 + (0, _inherits2.default)(PromotionTracking, _BaseTracking);
1083 + return (0, _createClass2.default)(PromotionTracking, null, [{
1084 + key: "init",
1085 + value: function init() {
1086 + this.attachDelegatedTracking();
1087 + }
1088 + }, {
1089 + key: "attachDelegatedTracking",
1090 + value: function attachDelegatedTracking() {
1091 + var _this = this;
1092 + this.addEventListenerTracked(document, 'click', function (event) {
1093 + var target = event.target;
1094 + if (!target) {
1095 + return;
1096 + }
1097 + var button = target.closest("a".concat(PROMO_SELECTORS.CTA_BUTTON));
1098 + if (!button) {
1099 + return;
1100 + }
1101 + var promoPage = button.closest("".concat(PROMO_SELECTORS.PROMO_PAGE, ", ").concat(PROMO_SELECTORS.PROMO_BLANK_STATE));
1102 + if (!promoPage) {
1103 + return;
1104 + }
1105 + _this.handlePromoClick(button, promoPage);
1106 + }, {
1107 + capture: true
1108 + });
1109 + }
1110 + }, {
1111 + key: "handlePromoClick",
1112 + value: function handlePromoClick(button, promoPage) {
1113 + var promoTitle = this.extractPromoTitle(promoPage, button);
1114 + var destination = button.getAttribute('href');
1115 + var path = this.extractPromoPath();
1116 + _wpDashboardTracking.default.trackPromoClicked(promoTitle, destination, path);
1117 + }
1118 + }, {
1119 + key: "extractPromoTitle",
1120 + value: function extractPromoTitle(promoPage, button) {
1121 + var titleElement = promoPage.querySelector(PROMO_SELECTORS.TITLE);
1122 + return titleElement ? titleElement.textContent.trim() : button.textContent.trim();
1123 + }
1124 + }, {
1125 + key: "extractPromoPath",
1126 + value: function extractPromoPath() {
1127 + var urlParams = new URLSearchParams(window.location.search);
1128 + var page = urlParams.get('page');
1129 + if (!page) {
1130 + return 'elementor';
1131 + }
1132 + return page.replace('elementor_', '').replace(/_/g, '/');
1133 + }
1134 + }]);
1135 +}(_baseTracking.default);
1136 +var _default = exports["default"] = PromotionTracking;
1137 +
1138 +/***/ }),
1139 +
1140 +/***/ "../app/assets/js/event-track/dashboard/screen-view.js":
1141 +/*!*************************************************************!*\
1142 + !*** ../app/assets/js/event-track/dashboard/screen-view.js ***!
1143 + \*************************************************************/
1144 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1145 +
1146 +"use strict";
1147 +
1148 +
1149 +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1150 +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
1151 +Object.defineProperty(exports, "__esModule", ({
1152 + value: true
1153 +}));
1154 +exports["default"] = void 0;
1155 +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js"));
1156 +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js"));
1157 +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js"));
1158 +var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js"));
1159 +var _get2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/get */ "../node_modules/@babel/runtime/helpers/get.js"));
1160 +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js"));
1161 +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
1162 +var _wpDashboardTracking = _interopRequireWildcard(__webpack_require__(/*! ../wp-dashboard-tracking */ "../app/assets/js/event-track/wp-dashboard-tracking.js"));
1163 +var _utils = __webpack_require__(/*! ./utils */ "../app/assets/js/event-track/dashboard/utils.js");
1164 +var _baseTracking = _interopRequireDefault(__webpack_require__(/*! ./base-tracking */ "../app/assets/js/event-track/dashboard/base-tracking.js"));
1165 +function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(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 (var _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); }
1166 +function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
1167 +function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
1168 +function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
1169 +function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
1170 +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
1171 +function _superPropGet(t, o, e, r) { var p = (0, _get2.default)((0, _getPrototypeOf2.default)(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; }
1172 +var SCREEN_SELECTORS = {
1173 + NAV_TAB_WRAPPER: '.nav-tab-wrapper',
1174 + NAV_TAB: '.nav-tab',
1175 + NAV_TAB_ACTIVE: '.nav-tab-active',
1176 + SETTINGS_FORM_PAGE: '.elementor-settings-form-page',
1177 + SETTINGS_FORM_PAGE_ACTIVE: '.elementor-settings-form-page.elementor-active',
1178 + FLOATING_ELEMENTS_MODAL: '#elementor-new-floating-elements-modal',
1179 + TEMPLATE_DIALOG_MODAL: '#elementor-new-template-dialog-content'
1180 +};
1181 +var TRACKED_MODALS = [SCREEN_SELECTORS.FLOATING_ELEMENTS_MODAL, SCREEN_SELECTORS.TEMPLATE_DIALOG_MODAL];
1182 +var ScreenViewTracking = /*#__PURE__*/function (_BaseTracking) {
1183 + function ScreenViewTracking() {
1184 + (0, _classCallCheck2.default)(this, ScreenViewTracking);
1185 + return _callSuper(this, ScreenViewTracking, arguments);
1186 + }
1187 + (0, _inherits2.default)(ScreenViewTracking, _BaseTracking);
1188 + return (0, _createClass2.default)(ScreenViewTracking, null, [{
1189 + key: "init",
1190 + value: function init() {
1191 + if (!_utils.DashboardUtils.isElementorPage()) {
1192 + return;
1193 + }
1194 + this.attachTabChangeTracking();
1195 + }
1196 + }, {
1197 + key: "destroy",
1198 + value: function destroy() {
1199 + _superPropGet(ScreenViewTracking, "destroy", this, 2)([]);
1200 + this.trackedScreens.clear();
1201 + }
1202 + }, {
1203 + key: "getScreenData",
1204 + value: function getScreenData() {
1205 + var urlParams = new URLSearchParams(window.location.search);
1206 + var page = urlParams.get('page');
1207 + var postType = urlParams.get('post_type');
1208 + var hash = window.location.hash;
1209 + var screenId = '';
1210 + var screenType = '';
1211 + if (page) {
1212 + screenId = page;
1213 + } else if (postType) {
1214 + screenId = postType;
1215 + } else {
1216 + screenId = this.getScreenIdFromBody();
1217 + }
1218 + if (this.isElementorAppPage()) {
1219 + var appScreenData = this.getAppScreenData(hash);
1220 + if (appScreenData) {
1221 + return appScreenData;
1222 + }
1223 + }
1224 + var hasNavTabs = document.querySelector(SCREEN_SELECTORS.NAV_TAB_WRAPPER);
1225 + var hasSettingsTabs = document.querySelectorAll(SCREEN_SELECTORS.SETTINGS_FORM_PAGE).length > 1;
1226 + if (hasNavTabs || hasSettingsTabs || hash && !this.isElementorAppPage()) {
1227 + screenType = _wpDashboardTracking.SCREEN_TYPES.TAB;
1228 + if (hash) {
1229 + var tabId = hash.replace(/^#(tab-)?/, '');
1230 + screenId = "".concat(screenId, "-").concat(tabId);
1231 + } else if (hasNavTabs) {
1232 + var activeTab = document.querySelector(SCREEN_SELECTORS.NAV_TAB_ACTIVE);
1233 + if (activeTab) {
1234 + var tabText = activeTab.textContent.trim();
1235 + var tabHref = activeTab.getAttribute('href');
1236 + if (tabText) {
1237 + screenId = "".concat(screenId, "-").concat(this.sanitizeScreenId(tabText));
1238 + } else if (tabHref && tabHref.includes('#')) {
1239 + var _tabId = tabHref.split('#')[1];
1240 + screenId = "".concat(screenId, "-").concat(_tabId);
1241 + }
1242 + }
1243 + } else if (hasSettingsTabs) {
1244 + var activeSettingsTab = document.querySelector(SCREEN_SELECTORS.SETTINGS_FORM_PAGE_ACTIVE);
1245 + if (activeSettingsTab) {
1246 + var _tabId2 = activeSettingsTab.id;
1247 + if (_tabId2) {
1248 + screenId = "".concat(screenId, "-").concat(_tabId2);
1249 + }
1250 + }
1251 + }
1252 + }
1253 + return {
1254 + screenId: screenId,
1255 + screenType: screenType
1256 + };
1257 + }
1258 + }, {
1259 + key: "isElementorAppPage",
1260 + value: function isElementorAppPage() {
1261 + var urlParams = new URLSearchParams(window.location.search);
1262 + return 'elementor-app' === urlParams.get('page');
1263 + }
1264 + }, {
1265 + key: "getAppScreenData",
1266 + value: function getAppScreenData(hash) {
1267 + if (!hash) {
1268 + return null;
1269 + }
1270 + var cleanHash = hash.replace(/^#/, '');
1271 + if (!cleanHash.startsWith('/')) {
1272 + return null;
1273 + }
1274 + var pathParts = cleanHash.split('/').filter(Boolean);
1275 + if (0 === pathParts.length) {
1276 + return null;
1277 + }
1278 + var screenId = pathParts.join('/');
1279 + var screenType = _wpDashboardTracking.SCREEN_TYPES.APP_SCREEN;
1280 + return {
1281 + screenId: screenId,
1282 + screenType: screenType
1283 + };
1284 + }
1285 + }, {
1286 + key: "getScreenIdFromBody",
1287 + value: function getScreenIdFromBody() {
1288 + var body = document.body;
1289 + var bodyClasses = body.className.split(' ');
1290 + var _iterator = _createForOfIteratorHelper(bodyClasses),
1291 + _step;
1292 + try {
1293 + for (_iterator.s(); !(_step = _iterator.n()).done;) {
1294 + var cls = _step.value;
1295 + if (cls.startsWith('elementor') && (cls.includes('page') || cls.includes('post-type'))) {
1296 + return cls;
1297 + }
1298 + }
1299 + } catch (err) {
1300 + _iterator.e(err);
1301 + } finally {
1302 + _iterator.f();
1303 + }
1304 + return 'elementor-unknown';
1305 + }
1306 + }, {
1307 + key: "sanitizeScreenId",
1308 + value: function sanitizeScreenId(text) {
1309 + return text.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');
1310 + }
1311 + }, {
1312 + key: "attachTabChangeTracking",
1313 + value: function attachTabChangeTracking() {
1314 + this.attachNavTabTracking();
1315 + this.attachHashChangeTracking();
1316 + this.attachSettingsTabTracking();
1317 + this.attachModalTracking();
1318 + }
1319 + }, {
1320 + key: "attachNavTabTracking",
1321 + value: function attachNavTabTracking() {
1322 + var _this = this;
1323 + var wrapper = document.querySelector(SCREEN_SELECTORS.NAV_TAB_WRAPPER);
1324 + if (!wrapper) {
1325 + return;
1326 + }
1327 + this.addEventListenerTracked(wrapper, 'click', function (event) {
1328 + var navTab = event.target.closest(SCREEN_SELECTORS.NAV_TAB);
1329 + if (navTab && !navTab.classList.contains('nav-tab-active')) {
1330 + var screenData = _this.getScreenData();
1331 + if (screenData) {
1332 + _this.trackScreen(screenData.screenId, screenData.screenType);
1333 + }
1334 + }
1335 + });
1336 + }
1337 + }, {
1338 + key: "attachHashChangeTracking",
1339 + value: function attachHashChangeTracking() {
1340 + var _this2 = this;
1341 + this.addEventListenerTracked(window, 'hashchange', function () {
1342 + var screenData = _this2.getScreenData();
1343 + if (screenData) {
1344 + _this2.trackScreen(screenData.screenId, screenData.screenType);
1345 + }
1346 + });
1347 + }
1348 + }, {
1349 + key: "attachSettingsTabTracking",
1350 + value: function attachSettingsTabTracking() {
1351 + var _this3 = this;
1352 + var settingsPages = document.querySelectorAll(SCREEN_SELECTORS.SETTINGS_FORM_PAGE);
1353 + if (0 === settingsPages.length) {
1354 + return;
1355 + }
1356 + settingsPages.forEach(function (page) {
1357 + _this3.addObserver(page, {
1358 + attributes: true,
1359 + attributeFilter: ['class']
1360 + }, function () {
1361 + var screenData = _this3.getScreenData();
1362 + if (screenData) {
1363 + _this3.trackScreen(screenData.screenId, screenData.screenType);
1364 + }
1365 + });
1366 + });
1367 + }
1368 + }, {
1369 + key: "attachModalTracking",
1370 + value: function attachModalTracking() {
1371 + var _this4 = this;
1372 + this.addObserver(document.body, {
1373 + childList: true,
1374 + subtree: true
1375 + }, function (mutations) {
1376 + var _iterator2 = _createForOfIteratorHelper(mutations),
1377 + _step2;
1378 + try {
1379 + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
1380 + var mutation = _step2.value;
1381 + if ('childList' === mutation.type) {
1382 + TRACKED_MODALS.forEach(function (modalSelector) {
1383 + var modal = document.querySelector(modalSelector);
1384 + if (modal && _this4.isModalVisible(modal)) {
1385 + var modalId = modalSelector.replace('#', '');
1386 + _this4.trackScreen(modalId, _wpDashboardTracking.SCREEN_TYPES.POPUP);
1387 + }
1388 + });
1389 + }
1390 + }
1391 + } catch (err) {
1392 + _iterator2.e(err);
1393 + } finally {
1394 + _iterator2.f();
1395 + }
1396 + });
1397 + }
1398 + }, {
1399 + key: "isModalVisible",
1400 + value: function isModalVisible(element) {
1401 + if (!element) {
1402 + return false;
1403 + }
1404 + var style = window.getComputedStyle(element);
1405 + return 'none' !== style.display && 0 !== parseFloat(style.opacity);
1406 + }
1407 + }, {
1408 + key: "trackScreen",
1409 + value: function trackScreen(screenId) {
1410 + var screenType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _wpDashboardTracking.SCREEN_TYPES.TOP_LEVEL_PAGE;
1411 + var trackingKey = "".concat(screenId, "-").concat(screenType);
1412 + if (this.trackedScreens.has(trackingKey)) {
1413 + return;
1414 + }
1415 + this.trackedScreens.add(trackingKey);
1416 + _wpDashboardTracking.default.trackScreenViewed(screenId, screenType);
1417 + }
1418 + }]);
1419 +}(_baseTracking.default);
1420 +(0, _defineProperty2.default)(ScreenViewTracking, "trackedScreens", new Set());
1421 +var _default = exports["default"] = ScreenViewTracking;
1422 +
1423 +/***/ }),
1424 +
1425 +/***/ "../app/assets/js/event-track/dashboard/top-bar.js":
1426 +/*!*********************************************************!*\
1427 + !*** ../app/assets/js/event-track/dashboard/top-bar.js ***!
1428 + \*********************************************************/
1429 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1430 +
1431 +"use strict";
1432 +
1433 +
1434 +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1435 +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
1436 +Object.defineProperty(exports, "__esModule", ({
1437 + value: true
1438 +}));
1439 +exports["default"] = void 0;
1440 +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js"));
1441 +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js"));
1442 +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js"));
1443 +var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js"));
1444 +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js"));
1445 +var _wpDashboardTracking = _interopRequireWildcard(__webpack_require__(/*! ../wp-dashboard-tracking */ "../app/assets/js/event-track/wp-dashboard-tracking.js"));
1446 +var _baseTracking = _interopRequireDefault(__webpack_require__(/*! ./base-tracking */ "../app/assets/js/event-track/dashboard/base-tracking.js"));
1447 +function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(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 (var _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); }
1448 +function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
1449 +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
1450 +var TOP_BAR_SELECTORS = {
1451 + TOP_BAR_ROOT: '.e-admin-top-bar',
1452 + BAR_BUTTON: '.e-admin-top-bar__bar-button',
1453 + BUTTON_TITLE: '.e-admin-top-bar__bar-button-title',
1454 + MAIN_AREA: '.e-admin-top-bar__main-area',
1455 + SECONDARY_AREA: '.e-admin-top-bar__secondary-area'
1456 +};
1457 +var TopBarTracking = /*#__PURE__*/function (_BaseTracking) {
1458 + function TopBarTracking() {
1459 + (0, _classCallCheck2.default)(this, TopBarTracking);
1460 + return _callSuper(this, TopBarTracking, arguments);
1461 + }
1462 + (0, _inherits2.default)(TopBarTracking, _BaseTracking);
1463 + return (0, _createClass2.default)(TopBarTracking, null, [{
1464 + key: "init",
1465 + value: function init() {
1466 + this.waitForTopBar();
1467 + }
1468 + }, {
1469 + key: "waitForTopBar",
1470 + value: function waitForTopBar() {
1471 + var _this = this;
1472 + var topBar = document.querySelector(TOP_BAR_SELECTORS.TOP_BAR_ROOT);
1473 + if (topBar) {
1474 + this.attachTopBarTracking(topBar);
1475 + return;
1476 + }
1477 + var observer = this.addObserver(document.body, {
1478 + childList: true,
1479 + subtree: true
1480 + }, function () {
1481 + var foundTopBar = document.querySelector(TOP_BAR_SELECTORS.TOP_BAR_ROOT);
1482 + if (foundTopBar) {
1483 + _this.attachTopBarTracking(foundTopBar);
1484 + observer.disconnect();
1485 + clearTimeout(timeoutId);
1486 + }
1487 + });
1488 + var timeoutId = setTimeout(function () {
1489 + observer.disconnect();
1490 + }, 10000);
1491 + }
1492 + }, {
1493 + key: "attachTopBarTracking",
1494 + value: function attachTopBarTracking(topBar) {
1495 + var _this2 = this;
1496 + var buttons = topBar.querySelectorAll(TOP_BAR_SELECTORS.BAR_BUTTON);
1497 + buttons.forEach(function (button) {
1498 + _this2.addEventListenerTracked(button, 'click', function (event) {
1499 + _this2.handleTopBarClick(event);
1500 + });
1501 + });
1502 + this.observeTopBarChanges(topBar);
1503 + }
1504 + }, {
1505 + key: "observeTopBarChanges",
1506 + value: function observeTopBarChanges(topBar) {
1507 + var _this3 = this;
1508 + this.addObserver(topBar, {
1509 + childList: true,
1510 + subtree: true
1511 + }, function (mutations) {
1512 + mutations.forEach(function (mutation) {
1513 + if ('childList' === mutation.type) {
1514 + mutation.addedNodes.forEach(function (node) {
1515 + if (1 === node.nodeType) {
1516 + if (node.matches && node.matches(TOP_BAR_SELECTORS.BAR_BUTTON)) {
1517 + _this3.addEventListenerTracked(node, 'click', function (event) {
1518 + _this3.handleTopBarClick(event);
1519 + });
1520 + } else {
1521 + var buttons = node.querySelectorAll ? node.querySelectorAll(TOP_BAR_SELECTORS.BAR_BUTTON) : [];
1522 + buttons.forEach(function (button) {
1523 + _this3.addEventListenerTracked(button, 'click', function (event) {
1524 + _this3.handleTopBarClick(event);
1525 + });
1526 + });
1527 + }
1528 + }
1529 + });
1530 + }
1531 + });
1532 + });
1533 + }
1534 + }, {
1535 + key: "handleTopBarClick",
1536 + value: function handleTopBarClick(event) {
1537 + var button = event.currentTarget;
1538 + var itemId = this.extractItemId(button);
1539 + _wpDashboardTracking.default.trackNavClicked(itemId, null, _wpDashboardTracking.NAV_AREAS.TOP_BAR);
1540 + }
1541 + }, {
1542 + key: "extractItemId",
1543 + value: function extractItemId(button) {
1544 + var titleElement = button.querySelector(TOP_BAR_SELECTORS.BUTTON_TITLE);
1545 + if (titleElement && titleElement.textContent.trim()) {
1546 + return titleElement.textContent.trim();
1547 + }
1548 + var textContent = button.textContent.trim();
1549 + if (textContent) {
1550 + return textContent;
1551 + }
1552 + var href = button.getAttribute('href');
1553 + if (href) {
1554 + var urlParams = new URLSearchParams(href.split('?')[1] || '');
1555 + var page = urlParams.get('page');
1556 + if (page) {
1557 + return page;
1558 + }
1559 + if (href.includes('/wp-admin/')) {
1560 + var pathParts = href.split('/wp-admin/')[1];
1561 + if (pathParts) {
1562 + return pathParts.split('?')[0];
1563 + }
1564 + }
1565 + try {
1566 + var url = new URL(href, window.location.origin);
1567 + return url.pathname.split('/').filter(Boolean).pop() || url.hostname;
1568 + } catch (error) {
1569 + return href;
1570 + }
1571 + }
1572 + var dataInfo = button.getAttribute('data-info');
1573 + if (dataInfo) {
1574 + return dataInfo;
1575 + }
1576 + var classes = button.className.split(' ').filter(function (cls) {
1577 + return cls && 'e-admin-top-bar__bar-button' !== cls;
1578 + });
1579 + if (classes.length > 0) {
1580 + return classes.join('-');
1581 + }
1582 + return 'unknown-top-bar-button';
1583 + }
1584 + }]);
1585 +}(_baseTracking.default);
1586 +var _default = exports["default"] = TopBarTracking;
1587 +
1588 +/***/ }),
1589 +
1590 +/***/ "../app/assets/js/event-track/dashboard/utils.js":
1591 +/*!*******************************************************!*\
1592 + !*** ../app/assets/js/event-track/dashboard/utils.js ***!
1593 + \*******************************************************/
1594 +/***/ ((__unused_webpack_module, exports) => {
1595 +
1596 +"use strict";
1597 +
1598 +
1599 +Object.defineProperty(exports, "__esModule", ({
1600 + value: true
1601 +}));
1602 +exports.DashboardUtils = void 0;
1603 +var DashboardUtils = exports.DashboardUtils = {
1604 + isElementorPage: function isElementorPage() {
1605 + var urlParams = new URLSearchParams(window.location.search);
1606 + var page = urlParams.get('page');
1607 + if (page && (page.startsWith('elementor') || page.includes('elementor'))) {
1608 + return true;
1609 + }
1610 + var postType = urlParams.get('post_type');
1611 + if ('elementor_library' === postType || 'e-floating-buttons' === postType) {
1612 + return true;
1613 + }
1614 + var body = document.body;
1615 + var bodyClasses = body.className.split(' ');
1616 + return bodyClasses.some(function (cls) {
1617 + return cls.includes('elementor') && (cls.includes('page') || cls.includes('post-type'));
1618 + });
1619 + }
1620 +};
1621 +
1622 +/***/ }),
1623 +
1624 +/***/ "../app/assets/js/event-track/wp-dashboard-tracking.js":
1625 +/*!*************************************************************!*\
1626 + !*** ../app/assets/js/event-track/wp-dashboard-tracking.js ***!
1627 + \*************************************************************/
1628 +/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1629 +
1630 +"use strict";
1631 +
1632 +
1633 +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
1634 +Object.defineProperty(exports, "__esModule", ({
1635 + value: true
1636 +}));
1637 +exports["default"] = exports.SCREEN_TYPES = exports.NAV_AREAS = exports.CONTROL_TYPES = void 0;
1638 +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js"));
1639 +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js"));
1640 +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
1641 +var _navigation = _interopRequireDefault(__webpack_require__(/*! ./dashboard/navigation */ "../app/assets/js/event-track/dashboard/navigation.js"));
1642 +var _pluginActions = _interopRequireDefault(__webpack_require__(/*! ./dashboard/plugin-actions */ "../app/assets/js/event-track/dashboard/plugin-actions.js"));
1643 +var _promotion = _interopRequireDefault(__webpack_require__(/*! ./dashboard/promotion */ "../app/assets/js/event-track/dashboard/promotion.js"));
1644 +var _screenView = _interopRequireDefault(__webpack_require__(/*! ./dashboard/screen-view */ "../app/assets/js/event-track/dashboard/screen-view.js"));
1645 +var _menuPromotion = _interopRequireDefault(__webpack_require__(/*! ./dashboard/menu-promotion */ "../app/assets/js/event-track/dashboard/menu-promotion.js"));
1646 +var _actionControls = _interopRequireDefault(__webpack_require__(/*! ./dashboard/action-controls */ "../app/assets/js/event-track/dashboard/action-controls.js"));
1647 +var _topBar = _interopRequireDefault(__webpack_require__(/*! ./dashboard/top-bar */ "../app/assets/js/event-track/dashboard/top-bar.js"));
1648 +var SESSION_TIMEOUT_MINUTES = 30;
1649 +var MINUTE_MS = 60 * 1000;
1650 +var SESSION_TIMEOUT = SESSION_TIMEOUT_MINUTES * MINUTE_MS;
1651 +var ACTIVITY_CHECK_INTERVAL = 1 * MINUTE_MS;
1652 +var SESSION_STORAGE_KEY = 'elementor_wpdash_session';
1653 +var PENDING_NAV_CLICK_KEY = 'elementor_wpdash_pending_nav';
1654 +var CONTROL_TYPES = exports.CONTROL_TYPES = {
1655 + BUTTON: 'button',
1656 + CHECKBOX: 'checkbox',
1657 + RADIO: 'radio',
1658 + LINK: 'link',
1659 + SELECT: 'select',
1660 + TOGGLE: 'toggle',
1661 + FILTER: 'filter'
1662 +};
1663 +var NAV_AREAS = exports.NAV_AREAS = {
1664 + LEFT_MENU: 'left_menu',
1665 + SUBMENU: 'submenu',
1666 + HOVER_MENU: 'hover_menu',
1667 + TOP_BAR: 'top_bar',
1668 + SIDEBAR_MENU: 'sidebar'
1669 +};
1670 +var SCREEN_TYPES = exports.SCREEN_TYPES = {
1671 + TAB: 'tab',
1672 + POPUP: 'popup',
1673 + APP_SCREEN: 'app_screen'
1674 +};
1675 +var WpDashboardTracking = exports["default"] = /*#__PURE__*/function () {
1676 + function WpDashboardTracking() {
1677 + (0, _classCallCheck2.default)(this, WpDashboardTracking);
1678 + }
1679 + return (0, _createClass2.default)(WpDashboardTracking, null, [{
1680 + key: "init",
1681 + value: function init() {
1682 + if (this.initialized) {
1683 + return;
1684 + }
1685 + this.restoreOrCreateSession();
1686 + if (this.isEventsManagerAvailable()) {
1687 + this.startSessionMonitoring();
1688 + this.attachActivityListeners();
1689 + this.attachNavigationListener();
1690 + this.initialized = true;
1691 + }
1692 + }
1693 + }, {
1694 + key: "restoreOrCreateSession",
1695 + value: function restoreOrCreateSession() {
1696 + var storedSession = this.getStoredSession();
1697 + if (storedSession) {
1698 + this.sessionStartTime = storedSession.sessionStartTime;
1699 + this.navItemsVisited = new Set(storedSession.navItemsVisited);
1700 + this.lastActivityTime = Date.now();
1701 + this.sessionEnded = false;
1702 + } else {
1703 + this.sessionStartTime = Date.now();
1704 + this.lastActivityTime = Date.now();
1705 + this.sessionEnded = false;
1706 + this.navItemsVisited = new Set();
1707 + }
1708 + this.processPendingNavClick();
1709 + this.saveSessionToStorage();
1710 + }
1711 + }, {
1712 + key: "isEditorOneActive",
1713 + value: function isEditorOneActive() {
1714 + var _elementorCommon$conf, _elementorCommon;
1715 + return (_elementorCommon$conf = (_elementorCommon = elementorCommon) === null || _elementorCommon === void 0 || (_elementorCommon = _elementorCommon.config) === null || _elementorCommon === void 0 || (_elementorCommon = _elementorCommon.editor_events) === null || _elementorCommon === void 0 ? void 0 : _elementorCommon.isEditorOneActive) !== null && _elementorCommon$conf !== void 0 ? _elementorCommon$conf : false;
1716 + }
1717 + }, {
1718 + key: "processPendingNavClick",
1719 + value: function processPendingNavClick() {
1720 + try {
1721 + var pendingNav = sessionStorage.getItem(PENDING_NAV_CLICK_KEY);
1722 + if (pendingNav) {
1723 + var _JSON$parse = JSON.parse(pendingNav),
1724 + itemId = _JSON$parse.itemId,
1725 + rootItem = _JSON$parse.rootItem,
1726 + area = _JSON$parse.area;
1727 + this.navItemsVisited.add(itemId);
1728 + var properties = {
1729 + wpdash_nav_item_id: itemId,
1730 + wpdash_nav_area: area
1731 + };
1732 + if (rootItem) {
1733 + properties.wpdash_nav_item_root = rootItem;
1734 + }
1735 + this.dispatchEvent('wpdash_nav_clicked', properties, {
1736 + send_immediately: true
1737 + });
1738 + sessionStorage.removeItem(PENDING_NAV_CLICK_KEY);
1739 + }
1740 + } catch (error) {
1741 + sessionStorage.removeItem(PENDING_NAV_CLICK_KEY);
1742 + }
1743 + }
1744 + }, {
1745 + key: "getStoredSession",
1746 + value: function getStoredSession() {
1747 + try {
1748 + var stored = sessionStorage.getItem(SESSION_STORAGE_KEY);
1749 + return stored ? JSON.parse(stored) : null;
1750 + } catch (error) {
1751 + return null;
1752 + }
1753 + }
1754 + }, {
1755 + key: "saveSessionToStorage",
1756 + value: function saveSessionToStorage() {
1757 + var sessionData = {
1758 + sessionStartTime: this.sessionStartTime,
1759 + navItemsVisited: Array.from(this.navItemsVisited)
1760 + };
1761 + sessionStorage.setItem(SESSION_STORAGE_KEY, JSON.stringify(sessionData));
1762 + }
1763 + }, {
1764 + key: "clearStoredSession",
1765 + value: function clearStoredSession() {
1766 + sessionStorage.removeItem(SESSION_STORAGE_KEY);
1767 + }
1768 + }, {
1769 + key: "isEventsManagerAvailable",
1770 + value: function isEventsManagerAvailable() {
1771 + var _elementorCommon2;
1772 + return ((_elementorCommon2 = elementorCommon) === null || _elementorCommon2 === void 0 ? void 0 : _elementorCommon2.eventsManager) && 'function' === typeof elementorCommon.eventsManager.dispatchEvent;
1773 + }
1774 + }, {
1775 + key: "canSendEvents",
1776 + value: function canSendEvents() {
1777 + var _elementorCommon3;
1778 + return ((_elementorCommon3 = elementorCommon) === null || _elementorCommon3 === void 0 || (_elementorCommon3 = _elementorCommon3.config) === null || _elementorCommon3 === void 0 || (_elementorCommon3 = _elementorCommon3.editor_events) === null || _elementorCommon3 === void 0 ? void 0 : _elementorCommon3.can_send_events) || false;
1779 + }
1780 + }, {
1781 + key: "dispatchEvent",
1782 + value: function dispatchEvent(eventName) {
1783 + var properties = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1784 + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
1785 + if (!this.isEventsManagerAvailable() || !this.canSendEvents()) {
1786 + return;
1787 + }
1788 + elementorCommon.eventsManager.dispatchEvent(eventName, properties, options);
1789 + }
1790 + }, {
1791 + key: "updateActivity",
1792 + value: function updateActivity() {
1793 + this.lastActivityTime = Date.now();
1794 + }
1795 + }, {
1796 + key: "startSessionMonitoring",
1797 + value: function startSessionMonitoring() {
1798 + var _this = this;
1799 + this.activityCheckInterval = setInterval(function () {
1800 + _this.checkSessionTimeout();
1801 + }, ACTIVITY_CHECK_INTERVAL);
1802 + window.addEventListener('beforeunload', function () {
1803 + if (!_this.sessionEnded && !_this.isNavigatingToElementor) {
1804 + _this.trackSessionEnd('tab_closed');
1805 + }
1806 + });
1807 + document.addEventListener('visibilitychange', function () {
1808 + if (!_this.sessionEnded && document.hidden) {
1809 + var timeSinceLastActivity = Date.now() - _this.lastActivityTime;
1810 + if (timeSinceLastActivity > SESSION_TIMEOUT) {
1811 + _this.trackSessionEnd('tab_inactive');
1812 + }
1813 + }
1814 + });
1815 + }
1816 + }, {
1817 + key: "isElementorPage",
1818 + value: function isElementorPage(url) {
1819 + try {
1820 + var urlObj = new URL(url, window.location.origin);
1821 + var params = urlObj.searchParams;
1822 + var page = params.get('page');
1823 + var postType = params.get('post_type');
1824 + var action = params.get('action');
1825 + var elementorPages = ['elementor', 'go_knowledge_base_site', 'e-form-submissions'];
1826 + var elementorPostTypes = ['elementor_library', 'e-floating-buttons'];
1827 + return page && elementorPages.some(function (p) {
1828 + return page.includes(p);
1829 + }) || postType && elementorPostTypes.includes(postType) || action && action.includes('elementor');
1830 + } catch (error) {
1831 + return false;
1832 + }
1833 + }
1834 + }, {
1835 + key: "isPluginsPage",
1836 + value: function isPluginsPage(url) {
1837 + try {
1838 + var urlObj = new URL(url, window.location.origin);
1839 + return urlObj.pathname.includes('plugins.php');
1840 + } catch (error) {
1841 + return false;
1842 + }
1843 + }
1844 + }, {
1845 + key: "isNavigatingAwayFromElementor",
1846 + value: function isNavigatingAwayFromElementor(targetUrl) {
1847 + if (!targetUrl) {
1848 + return false;
1849 + }
1850 + if (targetUrl.startsWith('#')) {
1851 + return false;
1852 + }
1853 + return !this.isElementorPage(targetUrl);
1854 + }
1855 + }, {
1856 + key: "isLinkOpeningInNewTab",
1857 + value: function isLinkOpeningInNewTab(link) {
1858 + var target = link.getAttribute('target');
1859 + return '_blank' === target || '_new' === target;
1860 + }
1861 + }, {
1862 + key: "attachNavigationListener",
1863 + value: function attachNavigationListener() {
1864 + var _this2 = this;
1865 + var handleLinkClick = function handleLinkClick(event) {
1866 + var link = event.target.closest('a');
1867 + if (link && link.href) {
1868 + if (_this2.isLinkOpeningInNewTab(link)) {
1869 + return;
1870 + }
1871 + if (!_this2.sessionEnded && _this2.isNavigatingAwayFromElementor(link.href)) {
1872 + _this2.trackSessionEnd('navigate_away');
1873 + } else if (_this2.isElementorPage(link.href)) {
1874 + _this2.isNavigatingToElementor = true;
1875 + }
1876 + }
1877 + var isSidebar = event.target.closest('#editor-one-sidebar-navigation');
1878 + if (isSidebar) {
1879 + _this2.isNavigatingToElementor = true;
1880 + }
1881 + };
1882 + var handleFormSubmit = function handleFormSubmit(event) {
1883 + var form = event.target;
1884 + if (form.action) {
1885 + if (!_this2.sessionEnded && _this2.isNavigatingAwayFromElementor(form.action)) {
1886 + _this2.trackSessionEnd('navigate_away');
1887 + } else if (_this2.isElementorPage(form.action)) {
1888 + _this2.isNavigatingToElementor = true;
1889 + }
1890 + }
1891 + };
1892 + document.addEventListener('click', handleLinkClick, true);
1893 + document.addEventListener('submit', handleFormSubmit, true);
1894 + this.navigationListeners.push({
1895 + type: 'click',
1896 + handler: handleLinkClick
1897 + }, {
1898 + type: 'submit',
1899 + handler: handleFormSubmit
1900 + });
1901 + }
1902 + }, {
1903 + key: "checkSessionTimeout",
1904 + value: function checkSessionTimeout() {
1905 + var timeSinceLastActivity = Date.now() - this.lastActivityTime;
1906 + if (timeSinceLastActivity > SESSION_TIMEOUT && !this.sessionEnded) {
1907 + this.trackSessionEnd('timeout');
1908 + }
1909 + }
1910 + }, {
1911 + key: "attachActivityListeners",
1912 + value: function attachActivityListeners() {
1913 + var _this3 = this;
1914 + var events = ['mousedown', 'keydown', 'scroll', 'touchstart', 'click'];
1915 + events.forEach(function (event) {
1916 + document.addEventListener(event, function () {
1917 + _this3.updateActivity();
1918 + }, {
1919 + capture: true,
1920 + passive: true
1921 + });
1922 + });
1923 + }
1924 + }, {
1925 + key: "formatDuration",
1926 + value: function formatDuration(milliseconds) {
1927 + var totalSeconds = Math.floor(milliseconds / 1000);
1928 + return Number(totalSeconds.toFixed(2));
1929 + }
1930 + }, {
1931 + key: "trackNavClicked",
1932 + value: function trackNavClicked(itemId) {
1933 + var rootItem = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
1934 + var area = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : NAV_AREAS.LEFT_MENU;
1935 + if (!this.initialized) {
1936 + var pendingNav = {
1937 + itemId: itemId,
1938 + rootItem: rootItem,
1939 + area: area
1940 + };
1941 + sessionStorage.setItem(PENDING_NAV_CLICK_KEY, JSON.stringify(pendingNav));
1942 + return;
1943 + }
1944 + this.updateActivity();
1945 + this.navItemsVisited.add(itemId);
1946 + this.saveSessionToStorage();
1947 + var properties = {
1948 + wpdash_nav_item_id: itemId,
1949 + wpdash_nav_area: area
1950 + };
1951 + if (rootItem) {
1952 + properties.wpdash_nav_item_root = rootItem;
1953 + }
1954 + this.dispatchEvent('wpdash_nav_clicked', properties);
1955 + }
1956 + }, {
1957 + key: "trackScreenViewed",
1958 + value: function trackScreenViewed(screenId) {
1959 + var screenType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SCREEN_TYPES.TAB;
1960 + this.updateActivity();
1961 + var properties = {
1962 + wpdash_screen_id: screenId,
1963 + wpdash_screen_type: screenType
1964 + };
1965 + this.dispatchEvent('wpdash_screen_viewed', properties);
1966 + }
1967 + }, {
1968 + key: "trackActionControl",
1969 + value: function trackActionControl(controlIdentifier, controlType) {
1970 + this.updateActivity();
1971 + var properties = {
1972 + wpdash_action_control_interacted: controlIdentifier,
1973 + wpdash_control_type: controlType
1974 + };
1975 + this.dispatchEvent('wpdash_action_control', properties);
1976 + }
1977 + }, {
1978 + key: "trackPromoClicked",
1979 + value: function trackPromoClicked(promoName, destination, clickPath) {
1980 + this.updateActivity();
1981 + var properties = {
1982 + wpdash_promo_name: promoName,
1983 + wpdash_promo_destination: destination,
1984 + wpdash_promo_clicked_path: clickPath
1985 + };
1986 + this.dispatchEvent('wpdash_promo_clicked', properties);
1987 + }
1988 + }, {
1989 + key: "trackSessionEnd",
1990 + value: function trackSessionEnd() {
1991 + var reason = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'timeout';
1992 + if (this.sessionEnded) {
1993 + return;
1994 + }
1995 + this.sessionEnded = true;
1996 + if (this.activityCheckInterval) {
1997 + clearInterval(this.activityCheckInterval);
1998 + this.activityCheckInterval = null;
1999 + }
2000 + var duration = Date.now() - this.sessionStartTime;
2001 + var properties = {
2002 + wpdash_endstate_nav_summary: Array.from(this.navItemsVisited),
2003 + wpdash_endstate_nav_count: this.navItemsVisited.size,
2004 + wpdash_endstate_duration: this.formatDuration(duration),
2005 + reason: reason
2006 + };
2007 + this.dispatchEvent('wpdash_session_end_state', properties);
2008 + this.clearStoredSession();
2009 + }
2010 + }, {
2011 + key: "destroy",
2012 + value: function destroy() {
2013 + if (this.activityCheckInterval) {
2014 + clearInterval(this.activityCheckInterval);
2015 + }
2016 + this.navigationListeners.forEach(function (_ref) {
2017 + var type = _ref.type,
2018 + handler = _ref.handler;
2019 + document.removeEventListener(type, handler, true);
2020 + });
2021 + this.navigationListeners = [];
2022 + _screenView.default.destroy();
2023 + _promotion.default.destroy();
2024 + _menuPromotion.default.destroy();
2025 + _actionControls.default.destroy();
2026 + if (!WpDashboardTracking.isEditorOneActive()) {
2027 + _topBar.default.destroy();
2028 + }
2029 + this.initialized = false;
2030 + }
2031 + }]);
2032 +}();
2033 +(0, _defineProperty2.default)(WpDashboardTracking, "sessionStartTime", Date.now());
2034 +(0, _defineProperty2.default)(WpDashboardTracking, "lastActivityTime", Date.now());
2035 +(0, _defineProperty2.default)(WpDashboardTracking, "sessionEnded", false);
2036 +(0, _defineProperty2.default)(WpDashboardTracking, "navItemsVisited", new Set());
2037 +(0, _defineProperty2.default)(WpDashboardTracking, "activityCheckInterval", null);
2038 +(0, _defineProperty2.default)(WpDashboardTracking, "initialized", false);
2039 +(0, _defineProperty2.default)(WpDashboardTracking, "navigationListeners", []);
2040 +(0, _defineProperty2.default)(WpDashboardTracking, "isNavigatingToElementor", false);
2041 +window.addEventListener('elementor/admin/init', function () {
2042 + var currentUrl = window.location.href;
2043 + var isPluginsPage = WpDashboardTracking.isPluginsPage(currentUrl);
2044 + var isElementorPage = WpDashboardTracking.isElementorPage(currentUrl);
2045 + if (isPluginsPage) {
2046 + _pluginActions.default.init();
2047 + }
2048 + _navigation.default.init();
2049 + if (isElementorPage) {
2050 + WpDashboardTracking.init();
2051 + _screenView.default.init();
2052 + _promotion.default.init();
2053 + _menuPromotion.default.init();
2054 + _actionControls.default.init();
2055 + if (!WpDashboardTracking.isEditorOneActive()) {
2056 + _topBar.default.init();
2057 + }
2058 + }
2059 +});
2060 +window.addEventListener('beforeunload', function () {
2061 + _navigation.default.destroy();
2062 + _pluginActions.default.destroy();
2063 + WpDashboardTracking.destroy();
2064 +});
2065 +
2066 +/***/ }),
2067 +
4 2068 /***/ "../app/modules/import-export-customization/assets/js/shared/registry/base.js":
5 2069 /*!************************************************************************************!*\
6 2070 !*** ../app/modules/import-export-customization/assets/js/shared/registry/base.js ***!
7 2071 \************************************************************************************/
@@ -883,9 +2947,11 @@
883 2947 var _scroll = _interopRequireDefault(__webpack_require__(/*! ./imports/utils/scroll */ "../assets/dev/js/modules/imports/utils/scroll.js"));
884 2948 var _forceMethodImplementation = _interopRequireDefault(__webpack_require__(/*! ./imports/force-method-implementation */ "../assets/dev/js/modules/imports/force-method-implementation.js"));
885 2949 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");
886 2950 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");
887 -var baseModules = {
2951 +var _appsEventTracking = __webpack_require__(/*! elementor-app/event-track/apps-event-tracking */ "../app/assets/js/event-track/apps-event-tracking.js");
2952 +var _wpDashboardTracking = _interopRequireDefault(__webpack_require__(/*! elementor-app/event-track/wp-dashboard-tracking */ "../app/assets/js/event-track/wp-dashboard-tracking.js"));
2953 +var _default = exports["default"] = window.elementorModules = {
888 2954 Module: _module.default,
889 2955 ViewModule: _viewModule.default,
890 2956 ArgsObject: _argsObject.default,
891 2957 ForceMethodImplementation: _forceMethodImplementation.default,
@@ -895,16 +2961,16 @@
895 2961 },
896 2962 importExport: {
897 2963 createGetInitialState: _templateRegistryHelpers.createGetInitialState,
898 2964 customizationDialogsRegistry: _customizationDialogs.customizationDialogsRegistry
2965 + },
2966 + appsEventTracking: {
2967 + AppsEventTracking: _appsEventTracking.AppsEventTracking
2968 + },
2969 + wpDashboardTracking: {
2970 + WpDashboardTracking: _wpDashboardTracking.default
899 2971 }
900 2972 };
901 -if (!window.elementorModules) {
902 - window.elementorModules = baseModules;
903 -} else {
904 - Object.assign(window.elementorModules, baseModules);
905 -}
906 -var _default = exports["default"] = window.elementorModules;
907 2973
908 2974 /***/ }),
909 2975
910 2976 /***/ "../core/common/assets/js/views/modal/header.js":
@@ -934,13 +3000,8 @@
934 3000 return _callSuper(this, _default, arguments);
935 3001 }
936 3002 (0, _inherits2.default)(_default, _Marionette$LayoutVie);
937 3003 return (0, _createClass2.default)(_default, [{
938 - key: "tagName",
939 - value: function tagName() {
940 - return 'header';
941 - }
942 - }, {
943 3004 key: "className",
944 3005 value: function className() {
945 3006 return 'elementor-templates-modal__header';
946 3007 }
@@ -1282,8 +3343,231 @@
1282 3343 }
1283 3344 }
1284 3345 }]);
1285 3346 }(Marionette.ItemView);
3347 +
3348 +/***/ }),
3349 +
3350 +/***/ "../core/common/modules/events-manager/assets/js/events-config.js":
3351 +/*!************************************************************************!*\
3352 + !*** ../core/common/modules/events-manager/assets/js/events-config.js ***!
3353 + \************************************************************************/
3354 +/***/ ((__unused_webpack_module, exports) => {
3355 +
3356 +"use strict";
3357 +
3358 +
3359 +Object.defineProperty(exports, "__esModule", ({
3360 + value: true
3361 +}));
3362 +exports["default"] = void 0;
3363 +var eventsConfig = {
3364 + triggers: {
3365 + click: 'Click',
3366 + rightClick: 'Right Click',
3367 + doubleClick: 'Double Click',
3368 + accordionClick: 'Accordion Click',
3369 + toggleClick: 'Toggle Click',
3370 + dropdownClick: 'Click Dropdown',
3371 + editorLoaded: 'Editor Loaded',
3372 + visible: 'Visible',
3373 + pageLoaded: 'Page Loaded'
3374 + },
3375 + locations: {
3376 + widgetPanel: 'Widget Panel',
3377 + topBar: 'Top Bar',
3378 + elementorEditor: 'Elementor Editor',
3379 + templatesLibrary: {
3380 + library: 'Templates Library'
3381 + },
3382 + app: {
3383 + import: 'Import Kit',
3384 + export: 'Export Kit',
3385 + kitLibrary: 'Kit Library',
3386 + cloudKitLibrary: 'Cloud Kit Library'
3387 + },
3388 + variables: 'Variables Panel',
3389 + variablesManager: 'Variables Manager',
3390 + admin: 'WP admin',
3391 + structurePanel: 'Structure Panel',
3392 + canvas: 'Canvas'
3393 + },
3394 + secondaryLocations: {
3395 + layout: 'Layout Section',
3396 + basic: 'Basic Section',
3397 + 'pro-elements': 'Pro Section',
3398 + general: 'General Section',
3399 + 'theme-elements': 'Site Section',
3400 + 'theme-elements-single': 'Single Section',
3401 + 'woocommerce-elements': 'WooCommerce Section',
3402 + wordpress: 'WordPress Section',
3403 + categories: 'Widgets Tab',
3404 + global: 'Globals Tab',
3405 + 'whats-new': 'What\'s New',
3406 + 'document-settings': 'Document Settings icon',
3407 + 'preview-page': 'Preview Page',
3408 + 'publish-button': 'Publish Button',
3409 + 'widget-panel': 'Widget Panel Icon',
3410 + finder: 'Finder',
3411 + help: 'Help',
3412 + elementorLogoDropdown: 'top_bar_elementor_logo_dropdown',
3413 + elementorLogo: 'Elementor Logo',
3414 + eLogoMenu: 'E-logo Menu',
3415 + notes: 'Notes',
3416 + siteSettings: 'Site Settings',
3417 + structure: 'Structure',
3418 + documentNameDropdown: 'Document Name dropdown',
3419 + responsiveControls: 'Responsive controls',
3420 + launchpad: 'launchpad',
3421 + checklistHeader: 'Checklist Header',
3422 + checklistSteps: 'Checklist Steps',
3423 + userPreferences: 'User Preferences',
3424 + contextMenu: 'Context Menu',
3425 + templateLibrary: {
3426 + saveModal: 'Save to Modal',
3427 + moveModal: 'Move to Modal',
3428 + bulkMoveModal: 'Bulk Move to Modal',
3429 + copyModal: 'Copy to Modal',
3430 + bulkCopyModal: 'Bulk Copy to Modal',
3431 + saveModalSelectFolder: 'Save to Modal - select folder',
3432 + saveModalSelectConnect: 'Save to Modal - connect',
3433 + saveModalSelectUpgrade: 'Save to Modal - upgrade',
3434 + importModal: 'Import Modal',
3435 + newFolderModal: 'New Folder Modal',
3436 + deleteDialog: 'Delete Dialog',
3437 + deleteFolderDialog: 'Delete Folder Dialog',
3438 + renameDialog: 'Rename Dialog',
3439 + createFolderDialog: 'Create Folder Dialog',
3440 + applySettingsDialog: 'Apply Settings Dialog',
3441 + cloudTab: 'Cloud Tab',
3442 + siteTab: 'Site Tab',
3443 + cloudTabFolder: 'Cloud Tab - Folder',
3444 + cloudTabConnect: 'Cloud Tab - Connect',
3445 + cloudTabUpgrade: 'Cloud Tab - Upgrade',
3446 + morePopup: 'Context Menu',
3447 + quotaBar: 'Quota Bar'
3448 + },
3449 + kitLibrary: {
3450 + cloudKitLibrary: 'kits_cloud_library',
3451 + cloudKitLibraryConnect: 'kits_cloud_library_connect',
3452 + cloudKitLibraryUpgrade: 'kits_cloud_library_upgrade',
3453 + kitExportCustomization: 'kit_export_customization',
3454 + kitExport: 'kit_export',
3455 + kitExportCustomizationEdit: 'kit_export_customization_edit',
3456 + kitExportSummary: 'kit_export_summary',
3457 + kitImportUploadBox: 'kit_import_upload_box',
3458 + kitImportCustomization: 'kit_import_customization',
3459 + kitImportSummary: 'kit_import_summary'
3460 + },
3461 + variablesPopover: 'Variables Popover',
3462 + admin: {
3463 + pluginToolsTab: 'plugin_tools_tab',
3464 + pluginWebsiteTemplatesTab: 'plugin_website_templates_tab'
3465 + },
3466 + componentsTab: 'Components Tab',
3467 + canvasElement: 'Canvas Element'
3468 + },
3469 + elements: {
3470 + accordionSection: 'Accordion section',
3471 + buttonIcon: 'Button Icon',
3472 + mainCta: 'Main CTA',
3473 + button: 'Button',
3474 + link: 'Link',
3475 + dropdown: 'Dropdown',
3476 + toggle: 'Toggle',
3477 + launchpadChecklist: 'Checklist popup'
3478 + },
3479 + names: {
3480 + v1: {
3481 + layout: 'v1_widgets_tab_layout_section',
3482 + basic: 'v1_widgets_tab_basic_section',
3483 + 'pro-elements': 'v1_widgets_tab_pro_section',
3484 + general: 'v1_widgets_tab_general_section',
3485 + 'theme-elements': 'v1_widgets_tab_site_section',
3486 + 'theme-elements-single': 'v1_widgets_tab_single_section',
3487 + 'woocommerce-elements': 'v1_widgets_tab_woocommerce_section',
3488 + wordpress: 'v1_widgets_tab_wordpress_section',
3489 + categories: 'v1_widgets_tab',
3490 + global: 'v1_globals_tab'
3491 + },
3492 + topBar: {
3493 + whatsNew: 'top_bar_whats_new',
3494 + documentSettings: 'top_bar_document_settings_icon',
3495 + previewPage: 'top_bar_preview_page',
3496 + publishButton: 'top_bar_publish_button',
3497 + widgetPanel: 'top_bar_widget_panel_icon',
3498 + finder: 'top_bar_finder',
3499 + help: 'top_bar_help',
3500 + history: 'top_bar_elementor_logo_dropdown_history',
3501 + userPreferences: 'top_bar_elementor_logo_dropdown_user_preferences',
3502 + keyboardShortcuts: 'top_bar_elementor_logo_dropdown_keyboard_shortcuts',
3503 + exitToWordpress: 'top_bar_elementor_logo_dropdown_exit_to_wordpress',
3504 + themeBuilder: 'top_bar_elementor_logo_dropdown_theme_builder',
3505 + notes: 'top_bar_notes',
3506 + siteSettings: 'top_bar_site_setting',
3507 + structure: 'top_bar_structure',
3508 + documentNameDropdown: 'top_bar_document_name_dropdown',
3509 + responsiveControls: 'top_bar_responsive_controls',
3510 + launchpadOn: 'top_bar_checklist_icon_show',
3511 + launchpadOff: 'top_bar_checklist_icon_hide',
3512 + elementorLogoDropdown: 'open_e_menu',
3513 + connectAccount: 'connect_account',
3514 + accountConnected: 'account_connected'
3515 + },
3516 + // ChecklistSteps event names are generated dynamically, based on stepId and action type taken: title, action, done, undone, upgrade
3517 + elementorEditor: {
3518 + checklist: {
3519 + checklistHeaderClose: 'checklist_header_close_icon',
3520 + checklistFirstPopup: 'checklist popup triggered'
3521 + },
3522 + userPreferences: {
3523 + checklistShow: 'checklist_userpreferences_toggle_show',
3524 + checklistHide: 'checklist_userpreferences_toggle_hide'
3525 + }
3526 + },
3527 + variables: {
3528 + open: 'open_variables_popover',
3529 + add: 'add_new_variable',
3530 + connect: 'connect_variable',
3531 + save: 'save_new_variable',
3532 + openManager: 'open_variables_manager',
3533 + saveChanges: 'save_variables_changes',
3534 + delete: 'delete_variable'
3535 + },
3536 + components: {
3537 + createClicked: 'component_create_clicked',
3538 + createCancelled: 'component_creation_cancelled',
3539 + created: 'component_created',
3540 + instanceAdded: 'component_instance_added',
3541 + edited: 'component_edited',
3542 + propertiesPanelOpened: 'component_properties_panel_opened',
3543 + propertiesGroupCreated: 'component_properties_group_created',
3544 + propertyExposed: 'component_property_exposed',
3545 + propertyRemoved: 'component_property_removed'
3546 + },
3547 + global_classes: {
3548 + classApplied: 'class_applied',
3549 + classRemoved: 'class_removed',
3550 + classManagerFilterCleared: 'class_manager_filter_cleared',
3551 + classDeleted: 'class_deleted',
3552 + classPublishConflict: 'class_publish_conflict',
3553 + classRenamed: 'class_renamed',
3554 + classCreated: 'class_created',
3555 + classManagerSearched: 'class_manager_searched',
3556 + classManagerFiltersOpened: 'class_manager_filters_opened',
3557 + classManagerOpened: 'class_manager_opened',
3558 + classManagerReorder: 'class_manager_reorder',
3559 + classManagerFilterUsed: 'class_manager_filter_used',
3560 + classUsageLocate: 'class_usage_locate',
3561 + classUsageHovered: 'class_usage_hovered',
3562 + classStyled: 'class_styled',
3563 + classStateClicked: 'class_state_clicked',
3564 + classUsageClicked: 'class_usage_clicked',
3565 + classDuplicate: 'class_duplicate'
3566 + }
3567 + }
3568 +};
3569 +var _default = exports["default"] = eventsConfig;
1286 3570
1287 3571 /***/ }),
1288 3572
1289 3573 /***/ "../modules/web-cli/assets/js/modules/command-base.js":