PluginProbe
Elementor Website Builder – more than just a page builder / 4.0.0-dev3
Elementor Website Builder – more than just a page builder v4.0.0-dev3
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 4.0.8 4.1.0-beta1 4.1.0-dev1 All 452 releases
elementor / assets / js / editor-interactions.js

editor-interactions.js in Elementor Website Builder – more than just a page builder 4.0.0-dev3, at assets/js/editor-interactions.js

840 lines 33.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /******/ (() => { // webpackBootstrap
2 /******/ var __webpack_modules__ = ({
3
4 /***/ "../modules/interactions/assets/js/interactions-breakpoints.js":
5 /*!*********************************************************************!*\
6 !*** ../modules/interactions/assets/js/interactions-breakpoints.js ***!
7 \*********************************************************************/
8 /***/ ((__unused_webpack_module, exports) => {
9
10 "use strict";
11
12
13 Object.defineProperty(exports, "__esModule", ({
14 value: true
15 }));
16 exports.getActiveBreakpoint = getActiveBreakpoint;
17 exports.initBreakpoints = initBreakpoints;
18 var RESIZE_DEBOUNCE_TIMEOUT = 100;
19 var breakpoints = {
20 list: {},
21 active: {},
22 onChange: function onChange() {}
23 };
24 function getActiveBreakpoint() {
25 return breakpoints.active;
26 }
27 function matchBreakpoint(width) {
28 for (var label in breakpoints.list) {
29 var breakpoint = breakpoints.list[label];
30 if ('min' === breakpoint.direction && width >= breakpoint.value) {
31 return label;
32 }
33 if ('max' === breakpoint.direction && breakpoint.value >= width) {
34 return label;
35 }
36 }
37 return 'desktop';
38 }
39 function attachEventListeners() {
40 var timeout = null;
41 var onResize = function onResize() {
42 if (timeout) {
43 window.clearTimeout(timeout);
44 timeout = null;
45 }
46 timeout = window.setTimeout(function () {
47 var currentBreakpoint = matchBreakpoint(window.innerWidth);
48 if (currentBreakpoint === breakpoints.active) {
49 return;
50 }
51 breakpoints.active = currentBreakpoint;
52 if ('function' === typeof breakpoints.onChange) {
53 breakpoints.onChange(breakpoints.active);
54 }
55 }, RESIZE_DEBOUNCE_TIMEOUT);
56 };
57 window.addEventListener('resize', onResize);
58 }
59 function getBreakpointsList() {
60 var _ElementorInteraction;
61 return ((_ElementorInteraction = ElementorInteractionsConfig) === null || _ElementorInteraction === void 0 ? void 0 : _ElementorInteraction.breakpoints) || {};
62 }
63 function initBreakpoints() {
64 var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
65 onChange = _ref.onChange;
66 breakpoints.list = getBreakpointsList();
67 breakpoints.active = matchBreakpoint(window.innerWidth);
68 if ('function' === typeof onChange) {
69 breakpoints.onChange = onChange;
70 }
71 attachEventListeners();
72 }
73
74 /***/ }),
75
76 /***/ "../modules/interactions/assets/js/interactions-shared-utils.js":
77 /*!**********************************************************************!*\
78 !*** ../modules/interactions/assets/js/interactions-shared-utils.js ***!
79 \**********************************************************************/
80 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
81
82 "use strict";
83
84
85 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
86 Object.defineProperty(exports, "__esModule", ({
87 value: true
88 }));
89 exports.config = config;
90 exports.extractInteractionId = extractInteractionId;
91 exports.getAnimateFunction = getAnimateFunction;
92 exports.getInViewFunction = getInViewFunction;
93 exports.parseInteractionsData = parseInteractionsData;
94 exports.skipInteraction = skipInteraction;
95 exports.timingValueToMs = timingValueToMs;
96 exports.unwrapInteractionValue = unwrapInteractionValue;
97 exports.waitForAnimateFunction = waitForAnimateFunction;
98 var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"));
99 var _interactionsBreakpoints = __webpack_require__(/*! ./interactions-breakpoints.js */ "../modules/interactions/assets/js/interactions-breakpoints.js");
100 function config() {
101 var _window$ElementorInte, _window$ElementorInte2;
102 return (_window$ElementorInte = (_window$ElementorInte2 = window.ElementorInteractionsConfig) === null || _window$ElementorInte2 === void 0 ? void 0 : _window$ElementorInte2.constants) !== null && _window$ElementorInte !== void 0 ? _window$ElementorInte : {};
103 }
104 function skipInteraction(interaction) {
105 var _interaction$breakpoi;
106 var breakpoint = (0, _interactionsBreakpoints.getActiveBreakpoint)();
107 return interaction === null || interaction === void 0 || (_interaction$breakpoi = interaction.breakpoints) === null || _interaction$breakpoi === void 0 || (_interaction$breakpoi = _interaction$breakpoi.excluded) === null || _interaction$breakpoi === void 0 ? void 0 : _interaction$breakpoi.includes(breakpoint);
108 }
109 function extractInteractionId(interaction) {
110 if ('interaction-item' === (interaction === null || interaction === void 0 ? void 0 : interaction.$$type) && interaction !== null && interaction !== void 0 && interaction.value) {
111 var _interaction$value$in;
112 return ((_interaction$value$in = interaction.value.interaction_id) === null || _interaction$value$in === void 0 ? void 0 : _interaction$value$in.value) || null;
113 }
114 return null;
115 }
116 function motionFunc(name) {
117 var _window, _window2;
118 if ('function' !== typeof ((_window = window) === null || _window === void 0 || (_window = _window.Motion) === null || _window === void 0 ? void 0 : _window[name])) {
119 return undefined;
120 }
121 return (_window2 = window) === null || _window2 === void 0 || (_window2 = _window2.Motion) === null || _window2 === void 0 ? void 0 : _window2[name];
122 }
123 function getAnimateFunction() {
124 return motionFunc('animate');
125 }
126 function getInViewFunction() {
127 return motionFunc('inView');
128 }
129 function waitForAnimateFunction(callback) {
130 var maxAttempts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10;
131 if (getAnimateFunction()) {
132 callback();
133 return;
134 }
135 if (maxAttempts > 0) {
136 setTimeout(function () {
137 return waitForAnimateFunction(callback, maxAttempts - 1);
138 }, 100);
139 }
140 }
141 function parseInteractionsData(data) {
142 if ('string' === typeof data) {
143 try {
144 return JSON.parse(data);
145 } catch (_unused) {
146 return null;
147 }
148 }
149 return data;
150 }
151 function unwrapInteractionValue(propValue) {
152 var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
153 // Supports Elementor's typed wrapper shape: { $$type: '...', value: ... }.
154 if (propValue && 'object' === (0, _typeof2.default)(propValue) && '$$type' in propValue) {
155 return propValue.value;
156 }
157 return propValue !== null && propValue !== void 0 ? propValue : fallback;
158 }
159 function timingValueToMs(timingValue, fallbackMs) {
160 if (null === timingValue || undefined === timingValue) {
161 return fallbackMs;
162 }
163 var unwrapped = unwrapInteractionValue(timingValue);
164 if ('number' === typeof unwrapped) {
165 return unwrapped;
166 }
167 var sizeObj = unwrapInteractionValue(unwrapped);
168 var size = sizeObj === null || sizeObj === void 0 ? void 0 : sizeObj.size;
169 var unit = (sizeObj === null || sizeObj === void 0 ? void 0 : sizeObj.unit) || 'ms';
170 if ('number' !== typeof size) {
171 return fallbackMs;
172 }
173 if ('s' === unit) {
174 return size * 1000;
175 }
176 return size;
177 }
178
179 // Expose on elementorModules for Pro and other consumers.
180 window.elementorModules = window.elementorModules || {};
181 window.elementorModules.interactions = {
182 config: config,
183 skipInteraction: skipInteraction,
184 extractInteractionId: extractInteractionId,
185 getAnimateFunction: getAnimateFunction,
186 getInViewFunction: getInViewFunction,
187 waitForAnimateFunction: waitForAnimateFunction,
188 parseInteractionsData: parseInteractionsData,
189 unwrapInteractionValue: unwrapInteractionValue,
190 timingValueToMs: timingValueToMs
191 };
192
193 /***/ }),
194
195 /***/ "../modules/interactions/assets/js/interactions-utils.js":
196 /*!***************************************************************!*\
197 !*** ../modules/interactions/assets/js/interactions-utils.js ***!
198 \***************************************************************/
199 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
200
201 "use strict";
202
203
204 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
205 Object.defineProperty(exports, "__esModule", ({
206 value: true
207 }));
208 Object.defineProperty(exports, "config", ({
209 enumerable: true,
210 get: function get() {
211 return _interactionsSharedUtils.config;
212 }
213 }));
214 exports.extractAnimationConfig = extractAnimationConfig;
215 Object.defineProperty(exports, "extractInteractionId", ({
216 enumerable: true,
217 get: function get() {
218 return _interactionsSharedUtils.extractInteractionId;
219 }
220 }));
221 exports.findElementByDataId = findElementByDataId;
222 Object.defineProperty(exports, "getAnimateFunction", ({
223 enumerable: true,
224 get: function get() {
225 return _interactionsSharedUtils.getAnimateFunction;
226 }
227 }));
228 Object.defineProperty(exports, "getInViewFunction", ({
229 enumerable: true,
230 get: function get() {
231 return _interactionsSharedUtils.getInViewFunction;
232 }
233 }));
234 exports.getInteractionsData = getInteractionsData;
235 exports.getKeyframes = getKeyframes;
236 exports.isFreeFrontendSupportedTrigger = isFreeFrontendSupportedTrigger;
237 exports.parseAnimationName = parseAnimationName;
238 Object.defineProperty(exports, "parseInteractionsData", ({
239 enumerable: true,
240 get: function get() {
241 return _interactionsSharedUtils.parseInteractionsData;
242 }
243 }));
244 Object.defineProperty(exports, "skipInteraction", ({
245 enumerable: true,
246 get: function get() {
247 return _interactionsSharedUtils.skipInteraction;
248 }
249 }));
250 Object.defineProperty(exports, "timingValueToMs", ({
251 enumerable: true,
252 get: function get() {
253 return _interactionsSharedUtils.timingValueToMs;
254 }
255 }));
256 Object.defineProperty(exports, "unwrapInteractionValue", ({
257 enumerable: true,
258 get: function get() {
259 return _interactionsSharedUtils.unwrapInteractionValue;
260 }
261 }));
262 Object.defineProperty(exports, "waitForAnimateFunction", ({
263 enumerable: true,
264 get: function get() {
265 return _interactionsSharedUtils.waitForAnimateFunction;
266 }
267 }));
268 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
269 var _interactionsSharedUtils = __webpack_require__(/*! ./interactions-shared-utils.js */ "../modules/interactions/assets/js/interactions-shared-utils.js");
270 /**
271 * Triggers the Core `interactions.js` / `editor-interactions.js` bundles run. Pro-only triggers
272 * (e.g. hover, click) must not fall through to the load-time default path.
273 */
274 var FREE_FRONTEND_SUPPORTED_TRIGGERS = ['load', 'scrollIn', 'scrollOut'];
275 function isFreeFrontendSupportedTrigger(trigger) {
276 return FREE_FRONTEND_SUPPORTED_TRIGGERS.includes(trigger);
277 }
278 function getKeyframes(effect, type, direction) {
279 var isIn = 'in' === type;
280 var keyframes = {};
281 if ('fade' === effect) {
282 keyframes.opacity = isIn ? [0, 1] : [1, 0];
283 }
284 var config = (0, _interactionsSharedUtils.config)();
285 if ('scale' === effect) {
286 keyframes.scale = isIn ? [config.scaleStart, 1] : [1, config.scaleStart];
287 }
288 if (direction) {
289 var distance = config.slideDistance;
290 var movement = {
291 left: {
292 x: isIn ? [-distance, 0] : [0, -distance]
293 },
294 right: {
295 x: isIn ? [distance, 0] : [0, distance]
296 },
297 top: {
298 y: isIn ? [-distance, 0] : [0, -distance]
299 },
300 bottom: {
301 y: isIn ? [distance, 0] : [0, distance]
302 }
303 };
304 Object.assign(keyframes, movement[direction]);
305 }
306 return keyframes;
307 }
308 function parseAnimationName(name) {
309 var _name$split = name.split('-'),
310 _name$split2 = (0, _slicedToArray2.default)(_name$split, 8),
311 trigger = _name$split2[0],
312 effect = _name$split2[1],
313 type = _name$split2[2],
314 direction = _name$split2[3],
315 duration = _name$split2[4],
316 delay = _name$split2[5];
317 var config = (0, _interactionsSharedUtils.config)();
318 return {
319 trigger: trigger,
320 effect: effect,
321 type: type,
322 direction: direction || null,
323 duration: duration ? parseInt(duration, 10) : config.defaultDuration,
324 delay: delay ? parseInt(delay, 10) : config.defaultDelay,
325 replay: false,
326 easing: config.defaultEasing
327 };
328 }
329
330 /**
331 * Get interactions data from the script tag injected by PHP.
332 * Returns array of { elementId, dataId, interactions: [...] }
333 */
334 function getInteractionsData() {
335 var scriptTag = document.getElementById('elementor-interactions-data');
336 if (!scriptTag) {
337 return null;
338 }
339 try {
340 return JSON.parse(scriptTag.textContent);
341 } catch (_unused) {
342 return null;
343 }
344 }
345 function findElementByDataId(dataId) {
346 return document.querySelector("[data-interaction-id=\"".concat(dataId, "\"]"));
347 }
348 function unwrapInteractionBreakpoints(propValue) {
349 var breakpointsConfig = (0, _interactionsSharedUtils.unwrapInteractionValue)(propValue, {});
350 var excluded = (0, _interactionsSharedUtils.unwrapInteractionValue)(breakpointsConfig === null || breakpointsConfig === void 0 ? void 0 : breakpointsConfig.excluded, []);
351 if (1 > excluded.length) {
352 return {};
353 }
354 var breakpoints = {
355 excluded: excluded.map(function (breakpoint) {
356 return (0, _interactionsSharedUtils.unwrapInteractionValue)(breakpoint, '');
357 })
358 };
359 return breakpoints;
360 }
361 function extractAnimationConfig(interaction) {
362 var _payload$animation;
363 if ('string' === typeof interaction) {
364 return parseAnimationName(interaction);
365 }
366 var payload = 'interaction-item' === (interaction === null || interaction === void 0 ? void 0 : interaction.$$type) && interaction !== null && interaction !== void 0 && interaction.value ? interaction.value : interaction;
367 if (!payload) {
368 return null;
369 }
370 if (payload !== null && payload !== void 0 && (_payload$animation = payload.animation) !== null && _payload$animation !== void 0 && _payload$animation.animation_id) {
371 return parseAnimationName(payload.animation.animation_id);
372 }
373 var trigger = (0, _interactionsSharedUtils.unwrapInteractionValue)(payload.trigger) || payload.trigger || 'load';
374 var animation = payload.animation;
375 animation = (0, _interactionsSharedUtils.unwrapInteractionValue)(animation);
376 if (!animation) {
377 return null;
378 }
379 var breakpoints = unwrapInteractionBreakpoints(payload.breakpoints);
380 var config = (0, _interactionsSharedUtils.config)();
381 var effect = (0, _interactionsSharedUtils.unwrapInteractionValue)(animation.effect) || animation.effect || 'fade';
382 var type = (0, _interactionsSharedUtils.unwrapInteractionValue)(animation.type) || animation.type || 'in';
383 var direction = (0, _interactionsSharedUtils.unwrapInteractionValue)(animation.direction) || animation.direction || '';
384 var easing = config.defaultEasing;
385 var replay = false;
386 var timingConfig = (0, _interactionsSharedUtils.unwrapInteractionValue)(animation.timing_config) || animation.timing_config || {};
387 var duration = (0, _interactionsSharedUtils.timingValueToMs)(timingConfig === null || timingConfig === void 0 ? void 0 : timingConfig.duration, config.defaultDuration);
388 var delay = (0, _interactionsSharedUtils.timingValueToMs)(timingConfig === null || timingConfig === void 0 ? void 0 : timingConfig.delay, config.defaultDelay);
389 return {
390 trigger: trigger,
391 breakpoints: breakpoints,
392 effect: effect,
393 type: type,
394 direction: direction,
395 duration: duration,
396 delay: delay,
397 easing: easing,
398 replay: replay
399 };
400 }
401
402 /***/ }),
403
404 /***/ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js":
405 /*!******************************************************************!*\
406 !*** ../node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***!
407 \******************************************************************/
408 /***/ ((module) => {
409
410 function _arrayLikeToArray(r, a) {
411 (null == a || a > r.length) && (a = r.length);
412 for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
413 return n;
414 }
415 module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
416
417 /***/ }),
418
419 /***/ "../node_modules/@babel/runtime/helpers/arrayWithHoles.js":
420 /*!****************************************************************!*\
421 !*** ../node_modules/@babel/runtime/helpers/arrayWithHoles.js ***!
422 \****************************************************************/
423 /***/ ((module) => {
424
425 function _arrayWithHoles(r) {
426 if (Array.isArray(r)) return r;
427 }
428 module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;
429
430 /***/ }),
431
432 /***/ "../node_modules/@babel/runtime/helpers/defineProperty.js":
433 /*!****************************************************************!*\
434 !*** ../node_modules/@babel/runtime/helpers/defineProperty.js ***!
435 \****************************************************************/
436 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
437
438 var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ "../node_modules/@babel/runtime/helpers/toPropertyKey.js");
439 function _defineProperty(e, r, t) {
440 return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
441 value: t,
442 enumerable: !0,
443 configurable: !0,
444 writable: !0
445 }) : e[r] = t, e;
446 }
447 module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports;
448
449 /***/ }),
450
451 /***/ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js":
452 /*!***********************************************************************!*\
453 !*** ../node_modules/@babel/runtime/helpers/interopRequireDefault.js ***!
454 \***********************************************************************/
455 /***/ ((module) => {
456
457 function _interopRequireDefault(e) {
458 return e && e.__esModule ? e : {
459 "default": e
460 };
461 }
462 module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports;
463
464 /***/ }),
465
466 /***/ "../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js":
467 /*!**********************************************************************!*\
468 !*** ../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js ***!
469 \**********************************************************************/
470 /***/ ((module) => {
471
472 function _iterableToArrayLimit(r, l) {
473 var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
474 if (null != t) {
475 var e,
476 n,
477 i,
478 u,
479 a = [],
480 f = !0,
481 o = !1;
482 try {
483 if (i = (t = t.call(r)).next, 0 === l) {
484 if (Object(t) !== t) return;
485 f = !1;
486 } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
487 } catch (r) {
488 o = !0, n = r;
489 } finally {
490 try {
491 if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
492 } finally {
493 if (o) throw n;
494 }
495 }
496 return a;
497 }
498 }
499 module.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports["default"] = module.exports;
500
501 /***/ }),
502
503 /***/ "../node_modules/@babel/runtime/helpers/nonIterableRest.js":
504 /*!*****************************************************************!*\
505 !*** ../node_modules/@babel/runtime/helpers/nonIterableRest.js ***!
506 \*****************************************************************/
507 /***/ ((module) => {
508
509 function _nonIterableRest() {
510 throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
511 }
512 module.exports = _nonIterableRest, module.exports.__esModule = true, module.exports["default"] = module.exports;
513
514 /***/ }),
515
516 /***/ "../node_modules/@babel/runtime/helpers/slicedToArray.js":
517 /*!***************************************************************!*\
518 !*** ../node_modules/@babel/runtime/helpers/slicedToArray.js ***!
519 \***************************************************************/
520 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
521
522 var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ "../node_modules/@babel/runtime/helpers/arrayWithHoles.js");
523 var iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ "../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js");
524 var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js");
525 var nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ "../node_modules/@babel/runtime/helpers/nonIterableRest.js");
526 function _slicedToArray(r, e) {
527 return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();
528 }
529 module.exports = _slicedToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
530
531 /***/ }),
532
533 /***/ "../node_modules/@babel/runtime/helpers/toPrimitive.js":
534 /*!*************************************************************!*\
535 !*** ../node_modules/@babel/runtime/helpers/toPrimitive.js ***!
536 \*************************************************************/
537 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
538
539 var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]);
540 function toPrimitive(t, r) {
541 if ("object" != _typeof(t) || !t) return t;
542 var e = t[Symbol.toPrimitive];
543 if (void 0 !== e) {
544 var i = e.call(t, r || "default");
545 if ("object" != _typeof(i)) return i;
546 throw new TypeError("@@toPrimitive must return a primitive value.");
547 }
548 return ("string" === r ? String : Number)(t);
549 }
550 module.exports = toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports;
551
552 /***/ }),
553
554 /***/ "../node_modules/@babel/runtime/helpers/toPropertyKey.js":
555 /*!***************************************************************!*\
556 !*** ../node_modules/@babel/runtime/helpers/toPropertyKey.js ***!
557 \***************************************************************/
558 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
559
560 var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]);
561 var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ "../node_modules/@babel/runtime/helpers/toPrimitive.js");
562 function toPropertyKey(t) {
563 var i = toPrimitive(t, "string");
564 return "symbol" == _typeof(i) ? i : i + "";
565 }
566 module.exports = toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports;
567
568 /***/ }),
569
570 /***/ "../node_modules/@babel/runtime/helpers/typeof.js":
571 /*!********************************************************!*\
572 !*** ../node_modules/@babel/runtime/helpers/typeof.js ***!
573 \********************************************************/
574 /***/ ((module) => {
575
576 function _typeof(o) {
577 "@babel/helpers - typeof";
578
579 return module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
580 return typeof o;
581 } : function (o) {
582 return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
583 }, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof(o);
584 }
585 module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
586
587 /***/ }),
588
589 /***/ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js":
590 /*!****************************************************************************!*\
591 !*** ../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***!
592 \****************************************************************************/
593 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
594
595 var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js");
596 function _unsupportedIterableToArray(r, a) {
597 if (r) {
598 if ("string" == typeof r) return arrayLikeToArray(r, a);
599 var t = {}.toString.call(r).slice(8, -1);
600 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;
601 }
602 }
603 module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
604
605 /***/ })
606
607 /******/ });
608 /************************************************************************/
609 /******/ // The module cache
610 /******/ var __webpack_module_cache__ = {};
611 /******/
612 /******/ // The require function
613 /******/ function __webpack_require__(moduleId) {
614 /******/ // Check if module is in cache
615 /******/ var cachedModule = __webpack_module_cache__[moduleId];
616 /******/ if (cachedModule !== undefined) {
617 /******/ return cachedModule.exports;
618 /******/ }
619 /******/ // Create a new module (and put it into the cache)
620 /******/ var module = __webpack_module_cache__[moduleId] = {
621 /******/ // no module.id needed
622 /******/ // no module.loaded needed
623 /******/ exports: {}
624 /******/ };
625 /******/
626 /******/ // Execute the module function
627 /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
628 /******/
629 /******/ // Return the exports of the module
630 /******/ return module.exports;
631 /******/ }
632 /******/
633 /************************************************************************/
634 var __webpack_exports__ = {};
635 // This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
636 (() => {
637 "use strict";
638 /*!****************************************************************!*\
639 !*** ../modules/interactions/assets/js/editor-interactions.js ***!
640 \****************************************************************/
641
642
643 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
644 var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
645 var _interactionsUtils = __webpack_require__(/*! ./interactions-utils.js */ "../modules/interactions/assets/js/interactions-utils.js");
646 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; }
647 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; }
648 /**
649 * @type {Record<string, Promise<void> & { cancel: () => void }>}
650 */
651 var playingInteractionsToStop = {};
652 function applyAnimation(element, animConfig, animateFunc) {
653 var id = element.id;
654 if (playingInteractionsToStop[id]) {
655 playingInteractionsToStop[id].cancel();
656 delete playingInteractionsToStop[id];
657 }
658 var keyframes = (0, _interactionsUtils.getKeyframes)(animConfig.effect, animConfig.type, animConfig.direction);
659 var options = {
660 duration: animConfig.duration / 1000,
661 delay: animConfig.delay / 1000,
662 ease: (0, _interactionsUtils.config)().defaultEasing
663 };
664 var initialKeyframes = {};
665 Object.keys(keyframes).forEach(function (key) {
666 initialKeyframes[key] = keyframes[key][0];
667 });
668
669 // WHY - Transition can be set on elements but once it sets it destroys all animations, so we basically put it aside.
670 var transition = element.style.transition;
671 element.style.transition = 'none';
672 animateFunc(element, initialKeyframes, {
673 duration: 0
674 }).then(function () {
675 var animations = animateFunc(element, keyframes, options);
676 playingInteractionsToStop[id] = animations;
677 animations.then(function () {
678 if ('out' === animConfig.type) {
679 var resetValues = {
680 opacity: 1,
681 scale: 1,
682 x: 0,
683 y: 0
684 };
685 var resetKeyframes = {};
686 Object.keys(keyframes).forEach(function (key) {
687 resetKeyframes[key] = resetValues[key];
688 });
689 element.style.transition = transition;
690 animateFunc(element, resetKeyframes, {
691 duration: 0
692 });
693 }
694 delete playingInteractionsToStop[id];
695 });
696 });
697 }
698 function getInteractionsData() {
699 var scriptTag = document.querySelector('script[data-e-interactions="true"]');
700 if (!scriptTag) {
701 return [];
702 }
703 try {
704 return JSON.parse(scriptTag.textContent || '[]');
705 } catch (_unused) {
706 return [];
707 }
708 }
709 function findElementByInteractionId(interactionId) {
710 return document.querySelector('[data-interaction-id="' + interactionId + '"]');
711 }
712 function applyInteractionsToElement(element, interactionsData) {
713 var animateFunc = (0, _interactionsUtils.getAnimateFunction)();
714 if (!animateFunc) {
715 return;
716 }
717 var parsedData = (0, _interactionsUtils.parseInteractionsData)(interactionsData);
718 if (!parsedData) {
719 return;
720 }
721 var interactions = Object.values((parsedData === null || parsedData === void 0 ? void 0 : parsedData.items) || []);
722 interactions.forEach(function (interaction) {
723 var animConfig = (0, _interactionsUtils.extractAnimationConfig)(interaction);
724 if (animConfig) {
725 applyAnimation(element, animConfig, animateFunc);
726 }
727 });
728 }
729 var previousInteractionsData = [];
730 function handleInteractionsUpdate() {
731 var currentInteractionsData = getInteractionsData();
732 var changedItems = currentInteractionsData.filter(function (currentItem) {
733 var _currentItem$interact, _previousItem$interac;
734 var previousItem = previousInteractionsData.find(function (prev) {
735 return prev.dataId === currentItem.dataId;
736 });
737 if (!previousItem) {
738 return true;
739 }
740 var currentIds = (((_currentItem$interact = currentItem.interactions) === null || _currentItem$interact === void 0 ? void 0 : _currentItem$interact.items) || []).map(_interactionsUtils.extractInteractionId).filter(Boolean).sort().join(',');
741 var prevIds = (((_previousItem$interac = previousItem.interactions) === null || _previousItem$interac === void 0 ? void 0 : _previousItem$interac.items) || []).map(_interactionsUtils.extractInteractionId).filter(Boolean).sort().join(',');
742 return currentIds !== prevIds;
743 });
744 changedItems.forEach(function (item) {
745 var _previousInteractions, _item$interactions;
746 var element = findElementByInteractionId(item.dataId);
747 var prevInteractions = (_previousInteractions = previousInteractionsData.find(function (prev) {
748 return prev.dataId === item.dataId;
749 })) === null || _previousInteractions === void 0 ? void 0 : _previousInteractions.interactions;
750 if (!element || !((_item$interactions = item.interactions) !== null && _item$interactions !== void 0 && (_item$interactions = _item$interactions.items) !== null && _item$interactions !== void 0 && _item$interactions.length)) {
751 return;
752 }
753 var prevIds = new Set(((prevInteractions === null || prevInteractions === void 0 ? void 0 : prevInteractions.items) || []).map(_interactionsUtils.extractInteractionId).filter(Boolean));
754 var changedInteractions = item.interactions.items.filter(function (interaction) {
755 var id = (0, _interactionsUtils.extractInteractionId)(interaction);
756 return !id || !prevIds.has(id);
757 });
758 if (changedInteractions.length > 0) {
759 applyInteractionsToElement(element, _objectSpread(_objectSpread({}, item.interactions), {}, {
760 items: changedInteractions
761 }));
762 }
763 });
764 previousInteractionsData = currentInteractionsData;
765 }
766 function initEditorInteractionsHandler() {
767 (0, _interactionsUtils.waitForAnimateFunction)(function () {
768 var head = document.head;
769 var scriptTag = null;
770 var observer = null;
771 function setupObserver(tag) {
772 if (observer) {
773 observer.disconnect();
774 }
775 observer = new MutationObserver(function () {
776 handleInteractionsUpdate();
777 });
778 observer.observe(tag, {
779 childList: true,
780 characterData: true,
781 subtree: true
782 });
783 handleInteractionsUpdate();
784 registerWindowEvents();
785 }
786 var headObserver = new MutationObserver(function () {
787 var foundScriptTag = document.querySelector('script[data-e-interactions="true"]');
788 if (foundScriptTag && foundScriptTag !== scriptTag) {
789 scriptTag = foundScriptTag;
790 setupObserver(scriptTag);
791 headObserver.disconnect();
792 }
793 });
794 headObserver.observe(head, {
795 childList: true,
796 subtree: true
797 });
798 scriptTag = document.querySelector('script[data-e-interactions="true"]');
799 if (scriptTag) {
800 setupObserver(scriptTag);
801 headObserver.disconnect();
802 }
803 });
804 }
805 function registerWindowEvents() {
806 window.top.addEventListener('atomic/play_interactions', handlePlayInteractions);
807 }
808 function handlePlayInteractions(event) {
809 var _event$detail = event.detail,
810 elementId = _event$detail.elementId,
811 interactionId = _event$detail.interactionId;
812 var interactionsData = getInteractionsData();
813 var item = interactionsData.find(function (elementItemData) {
814 return elementItemData.dataId === elementId;
815 });
816 if (!item) {
817 return;
818 }
819 var element = findElementByInteractionId(elementId);
820 if (!element) {
821 return;
822 }
823 var interactionsCopy = _objectSpread(_objectSpread({}, item.interactions), {}, {
824 items: item.interactions.items.filter(function (interactionItem) {
825 var itemId = (0, _interactionsUtils.extractInteractionId)(interactionItem);
826 return itemId === interactionId;
827 })
828 });
829 applyInteractionsToElement(element, interactionsCopy);
830 }
831 if ('loading' === document.readyState) {
832 document.addEventListener('DOMContentLoaded', initEditorInteractionsHandler);
833 } else {
834 initEditorInteractionsHandler();
835 }
836 })();
837
838 /******/ })()
839 ;
840 //# sourceMappingURL=editor-interactions.js.map