PluginProbe
Elementor Website Builder – more than just a page builder / 4.3.0-beta3
Elementor Website Builder – more than just a page builder v4.3.0-beta3
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.3.0-beta3, at assets/js/editor-interactions.js

678 lines 26.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 'use strict';
2
3 (function() {
4
5 //#region \0rolldown/runtime.js
6 var __defProp = Object.defineProperty;
7 var __name = (target, value) => __defProp(target, "name", {
8 value,
9 configurable: true
10 });
11
12 //#endregion
13
14 //#region node_modules/@babel/runtime/helpers/esm/typeof.js
15 function _typeof(o) {
16 "@babel/helpers - typeof";
17 return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
18 return typeof o;
19 } : function(o) {
20 return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
21 }, _typeof(o);
22 }
23
24 //#endregion
25 //#region node_modules/@babel/runtime/helpers/esm/toPrimitive.js
26 function toPrimitive(t, r) {
27 if ("object" != _typeof(t) || !t) return t;
28 var e = t[Symbol.toPrimitive];
29 if (void 0 !== e) {
30 var i = e.call(t, r || "default");
31 if ("object" != _typeof(i)) return i;
32 throw new TypeError("@@toPrimitive must return a primitive value.");
33 }
34 return ("string" === r ? String : Number)(t);
35 }
36
37 //#endregion
38 //#region node_modules/@babel/runtime/helpers/esm/toPropertyKey.js
39 function toPropertyKey(t) {
40 var i = toPrimitive(t, "string");
41 return "symbol" == _typeof(i) ? i : i + "";
42 }
43
44 //#endregion
45 //#region node_modules/@babel/runtime/helpers/esm/defineProperty.js
46 function _defineProperty(e, r, t) {
47 return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
48 value: t,
49 enumerable: !0,
50 configurable: !0,
51 writable: !0
52 }) : e[r] = t, e;
53 }
54
55 //#endregion
56 //#region node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js
57 function _arrayWithHoles(r) {
58 if (Array.isArray(r)) return r;
59 }
60
61 //#endregion
62 //#region node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js
63 function _iterableToArrayLimit(r, l) {
64 var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
65 if (null != t) {
66 var e;
67 var n;
68 var i;
69 var u;
70 var a = [];
71 var f = !0;
72 var o = !1;
73 try {
74 if (i = (t = t.call(r)).next, 0 === l) {
75 if (Object(t) !== t) return;
76 f = !1;
77 } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
78 } catch (r) {
79 o = !0, n = r;
80 } finally {
81 try {
82 if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
83 } finally {
84 if (o) throw n;
85 }
86 }
87 return a;
88 }
89 }
90
91 //#endregion
92 //#region node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js
93 function _arrayLikeToArray$1(r, a) {
94 (null == a || a > r.length) && (a = r.length);
95 for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
96 return n;
97 }
98 __name(_arrayLikeToArray$1, "_arrayLikeToArray");
99
100 //#endregion
101 //#region node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js
102 function _unsupportedIterableToArray$1(r, a) {
103 if (r) {
104 if ("string" == typeof r) return _arrayLikeToArray$1(r, a);
105 var t = {}.toString.call(r).slice(8, -1);
106 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$1(r, a) : void 0;
107 }
108 }
109 __name(_unsupportedIterableToArray$1, "_unsupportedIterableToArray");
110
111 //#endregion
112 //#region node_modules/@babel/runtime/helpers/esm/nonIterableRest.js
113 function _nonIterableRest() {
114 throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
115 }
116
117 //#endregion
118 //#region node_modules/@babel/runtime/helpers/esm/slicedToArray.js
119 function _slicedToArray(r, e) {
120 return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray$1(r, e) || _nonIterableRest();
121 }
122
123 //#endregion
124 //#region modules/interactions/assets/js/interactions-breakpoints.js
125 var breakpoints = {
126 list: {},
127 active: {},
128 onChange: function onChange() {}
129 };
130 function getActiveBreakpoint() {
131 return breakpoints.active;
132 }
133
134 //#endregion
135 //#region modules/interactions/assets/js/interactions-shared-utils.js
136 function ownKeys$1(e, r) {
137 var t = Object.keys(e);
138 if (Object.getOwnPropertySymbols) {
139 var o = Object.getOwnPropertySymbols(e);
140 r && (o = o.filter(function(r) {
141 return Object.getOwnPropertyDescriptor(e, r).enumerable;
142 })), t.push.apply(t, o);
143 }
144 return t;
145 }
146 __name(ownKeys$1, "ownKeys");
147 function _objectSpread$1(e) {
148 for (var r = 1; r < arguments.length; r++) {
149 var t = null != arguments[r] ? arguments[r] : {};
150 r % 2 ? ownKeys$1(Object(t), !0).forEach(function(r) {
151 _defineProperty(e, r, t[r]);
152 }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function(r) {
153 Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
154 });
155 }
156 return e;
157 }
158 __name(_objectSpread$1, "_objectSpread");
159 function _createForOfIteratorHelper(r, e) {
160 var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
161 if (!t) {
162 if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {
163 t && (r = t);
164 var _n = 0;
165 var F = function F() {};
166 return {
167 s: F,
168 n: function n() {
169 return _n >= r.length ? { done: !0 } : {
170 done: !1,
171 value: r[_n++]
172 };
173 },
174 e: function e(r) {
175 throw r;
176 },
177 f: F
178 };
179 }
180 throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
181 }
182 var o;
183 var a = !0;
184 var u = !1;
185 return {
186 s: function s() {
187 t = t.call(r);
188 },
189 n: function n() {
190 var r = t.next();
191 return a = r.done, r;
192 },
193 e: function e(r) {
194 u = !0, o = r;
195 },
196 f: function f() {
197 try {
198 a || null == t.return || t.return();
199 } finally {
200 if (u) throw o;
201 }
202 }
203 };
204 }
205 function _unsupportedIterableToArray(r, a) {
206 if (r) {
207 if ("string" == typeof r) return _arrayLikeToArray(r, a);
208 var t = {}.toString.call(r).slice(8, -1);
209 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;
210 }
211 }
212 function _arrayLikeToArray(r, a) {
213 (null == a || a > r.length) && (a = r.length);
214 for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
215 return n;
216 }
217 function config() {
218 var _window$ElementorInte;
219 var _window$ElementorInte2;
220 return (_window$ElementorInte = (_window$ElementorInte2 = window.ElementorInteractionsConfig) === null || _window$ElementorInte2 === void 0 ? void 0 : _window$ElementorInte2.constants) !== null && _window$ElementorInte !== void 0 ? _window$ElementorInte : {};
221 }
222 function skipInteraction(interaction) {
223 var _interaction$breakpoi;
224 var breakpoint = getActiveBreakpoint();
225 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);
226 }
227 function extractInteractionId(interaction) {
228 if ("interaction-item" === (interaction === null || interaction === void 0 ? void 0 : interaction.$$type) && interaction !== null && interaction !== void 0 && interaction.value) {
229 var _interaction$value$in;
230 return ((_interaction$value$in = interaction.value.interaction_id) === null || _interaction$value$in === void 0 ? void 0 : _interaction$value$in.value) || null;
231 }
232 return null;
233 }
234 function motionFunc(name) {
235 var _window;
236 var _window2;
237 if ("function" !== typeof ((_window = window) === null || _window === void 0 || (_window = _window.Motion) === null || _window === void 0 ? void 0 : _window[name])) return;
238 return (_window2 = window) === null || _window2 === void 0 || (_window2 = _window2.Motion) === null || _window2 === void 0 ? void 0 : _window2[name];
239 }
240 function getAnimateFunction() {
241 return motionFunc("animate");
242 }
243 function getInViewFunction() {
244 return motionFunc("inView");
245 }
246 function waitForAnimateFunction(callback) {
247 var maxAttempts = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 10;
248 if (getAnimateFunction()) {
249 callback();
250 return;
251 }
252 if (maxAttempts > 0) setTimeout(function() {
253 return waitForAnimateFunction(callback, maxAttempts - 1);
254 }, 100);
255 }
256 function parseInteractionsData(data) {
257 if ("string" === typeof data) try {
258 return JSON.parse(data);
259 } catch (_unused) {
260 return null;
261 }
262 return data;
263 }
264 function unwrapInteractionValue(propValue) {
265 var fallback = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null;
266 if (propValue && "object" === _typeof(propValue) && "$$type" in propValue) return propValue.value;
267 return propValue !== null && propValue !== void 0 ? propValue : fallback;
268 }
269 function timingValueToMs(timingValue, fallbackMs) {
270 if (null === timingValue || void 0 === timingValue) return fallbackMs;
271 var unwrapped = unwrapInteractionValue(timingValue);
272 if ("number" === typeof unwrapped) return unwrapped;
273 var sizeObj = unwrapInteractionValue(unwrapped);
274 var size = sizeObj === null || sizeObj === void 0 ? void 0 : sizeObj.size;
275 var unit = (sizeObj === null || sizeObj === void 0 ? void 0 : sizeObj.unit) || "ms";
276 if ("number" !== typeof size) return fallbackMs;
277 if ("s" === unit) return size * 1e3;
278 return size;
279 }
280 function resetElementStyles(element) {
281 if (!element) return;
282 element.style.transition = "";
283 element.style.transform = "";
284 element.style.opacity = "";
285 }
286 var TRANSFORM_EPSILON = .001;
287 var radiansToDegrees = function radiansToDegrees(radians) {
288 return radians * (180 / Math.PI);
289 };
290 var isNear = function isNear(value, expected) {
291 return Math.abs(value - expected) <= TRANSFORM_EPSILON;
292 };
293 var isNearZero = function isNearZero(value) {
294 return isNear(value, 0);
295 };
296 var isNearOne = function isNearOne(value) {
297 return isNear(value, 1);
298 };
299 function parseMatrixValues(transformValue) {
300 var match = transformValue.match(/^matrix(3d)?\((.+)\)$/);
301 if (!match) return null;
302 return match[2].split(",").map(function(token) {
303 return Number.parseFloat(token.trim());
304 }).filter(function(value) {
305 return Number.isFinite(value);
306 });
307 }
308 function createMatrixFromTransform(transformValue) {
309 if (!transformValue || "none" === transformValue) return null;
310 var _iterator = _createForOfIteratorHelper([window.DOMMatrixReadOnly, window.DOMMatrix].filter(function(Factory) {
311 return "function" === typeof Factory;
312 }));
313 var _step;
314 try {
315 for (_iterator.s(); !(_step = _iterator.n()).done;) {
316 var MatrixFactory = _step.value;
317 try {
318 var _ref;
319 var _matrix$a;
320 var _ref2;
321 var _matrix$b;
322 var _ref3;
323 var _matrix$c;
324 var _ref4;
325 var _matrix$d;
326 var _ref5;
327 var _matrix$e;
328 var _ref6;
329 var _matrix$f;
330 var matrix = new MatrixFactory(transformValue);
331 var compactMatrix = {
332 matrixXfromX: (_ref = (_matrix$a = matrix.a) !== null && _matrix$a !== void 0 ? _matrix$a : matrix.m11) !== null && _ref !== void 0 ? _ref : 1,
333 matrixYfromX: (_ref2 = (_matrix$b = matrix.b) !== null && _matrix$b !== void 0 ? _matrix$b : matrix.m12) !== null && _ref2 !== void 0 ? _ref2 : 0,
334 matrixXfromY: (_ref3 = (_matrix$c = matrix.c) !== null && _matrix$c !== void 0 ? _matrix$c : matrix.m21) !== null && _ref3 !== void 0 ? _ref3 : 0,
335 matrixYfromY: (_ref4 = (_matrix$d = matrix.d) !== null && _matrix$d !== void 0 ? _matrix$d : matrix.m22) !== null && _ref4 !== void 0 ? _ref4 : 1,
336 matrixTranslateX: (_ref5 = (_matrix$e = matrix.e) !== null && _matrix$e !== void 0 ? _matrix$e : matrix.m41) !== null && _ref5 !== void 0 ? _ref5 : 0,
337 matrixTranslateY: (_ref6 = (_matrix$f = matrix.f) !== null && _matrix$f !== void 0 ? _matrix$f : matrix.m42) !== null && _ref6 !== void 0 ? _ref6 : 0
338 };
339 if (Object.values(compactMatrix).every(Number.isFinite)) return compactMatrix;
340 } catch (_unused2) {}
341 }
342 } catch (err) {
343 _iterator.e(err);
344 } finally {
345 _iterator.f();
346 }
347 var parsedValues = parseMatrixValues(transformValue);
348 if (!parsedValues) return null;
349 if (6 === parsedValues.length) {
350 var _parsedValues = _slicedToArray(parsedValues, 6);
351 return {
352 matrixXfromX: _parsedValues[0],
353 matrixYfromX: _parsedValues[1],
354 matrixXfromY: _parsedValues[2],
355 matrixYfromY: _parsedValues[3],
356 matrixTranslateX: _parsedValues[4],
357 matrixTranslateY: _parsedValues[5]
358 };
359 }
360 if (16 === parsedValues.length) {
361 var _parsedValues2 = _slicedToArray(parsedValues, 14);
362 return {
363 matrixXfromX: _parsedValues2[0],
364 matrixYfromX: _parsedValues2[1],
365 matrixXfromY: _parsedValues2[4],
366 matrixYfromY: _parsedValues2[5],
367 matrixTranslateX: _parsedValues2[12],
368 matrixTranslateY: _parsedValues2[13]
369 };
370 }
371 return null;
372 }
373 function getTransformBaselineFromComputedStyle(element) {
374 if (!element) return null;
375 var computedStyle = window.getComputedStyle(element);
376 var matrix = createMatrixFromTransform((computedStyle === null || computedStyle === void 0 ? void 0 : computedStyle.transform) || "");
377 if (!matrix) return null;
378 var matrixXfromX = matrix.matrixXfromX;
379 var matrixYfromX = matrix.matrixYfromX;
380 var matrixXfromY = matrix.matrixXfromY;
381 var matrixYfromY = matrix.matrixYfromY;
382 var matrixTranslateX = matrix.matrixTranslateX;
383 var matrixTranslateY = matrix.matrixTranslateY;
384 var scaleX = Math.hypot(matrixXfromX, matrixYfromX);
385 var determinant = matrixXfromX * matrixYfromY - matrixYfromX * matrixXfromY;
386 var scaleY = scaleX ? determinant / scaleX : Math.hypot(matrixXfromY, matrixYfromY);
387 var rotate = radiansToDegrees(Math.atan2(matrixYfromX, matrixXfromX));
388 var shear = scaleX ? (matrixXfromX * matrixXfromY + matrixYfromX * matrixYfromY) / (scaleX * scaleX) : 0;
389 var skewX = radiansToDegrees(Math.atan(shear));
390 return {
391 x: matrixTranslateX,
392 y: matrixTranslateY,
393 scaleX: Number.isFinite(scaleX) ? scaleX : 1,
394 scaleY: Number.isFinite(scaleY) ? scaleY : 1,
395 rotate: Number.isFinite(rotate) ? rotate : 0,
396 skewX: Number.isFinite(skewX) ? skewX : 0
397 };
398 }
399 function preserveTransformKeyframes(keyframes, baseline) {
400 if (!baseline) return keyframes;
401 var mergedKeyframes = _objectSpread$1({}, keyframes);
402 var hasScaleShorthand = mergedKeyframes.scale !== void 0;
403 var canSetScaleX = mergedKeyframes.scaleX === void 0 && !isNearOne(baseline.scaleX);
404 var canSetScaleY = mergedKeyframes.scaleY === void 0 && !isNearOne(baseline.scaleY);
405 if (mergedKeyframes.x === void 0 && !isNearZero(baseline.x)) mergedKeyframes.x = [baseline.x, baseline.x];
406 if (mergedKeyframes.y === void 0 && !isNearZero(baseline.y)) mergedKeyframes.y = [baseline.y, baseline.y];
407 if (!hasScaleShorthand) if (canSetScaleX && canSetScaleY && isNear(baseline.scaleX, baseline.scaleY)) mergedKeyframes.scale = [baseline.scaleX, baseline.scaleX];
408 else {
409 if (canSetScaleX) mergedKeyframes.scaleX = [baseline.scaleX, baseline.scaleX];
410 if (canSetScaleY) mergedKeyframes.scaleY = [baseline.scaleY, baseline.scaleY];
411 }
412 if (mergedKeyframes.rotate === void 0 && mergedKeyframes.rotateZ === void 0 && !isNearZero(baseline.rotate)) mergedKeyframes.rotate = [baseline.rotate, baseline.rotate];
413 if (mergedKeyframes.skew === void 0 && mergedKeyframes.skewX === void 0 && !isNearZero(baseline.skewX)) mergedKeyframes.skewX = [baseline.skewX, baseline.skewX];
414 return mergedKeyframes;
415 }
416 window.elementorModules = window.elementorModules || {};
417 window.elementorModules.interactions = {
418 config,
419 skipInteraction,
420 extractInteractionId,
421 getAnimateFunction,
422 getInViewFunction,
423 waitForAnimateFunction,
424 parseInteractionsData,
425 unwrapInteractionValue,
426 timingValueToMs,
427 resetElementStyles,
428 getTransformBaselineFromComputedStyle,
429 preserveTransformKeyframes
430 };
431
432 //#endregion
433 //#region modules/interactions/assets/js/interactions-utils.js
434 function getKeyframes(effect, type, direction) {
435 var isIn = "in" === type;
436 var keyframes = {};
437 if ("fade" === effect) keyframes.opacity = isIn ? [0, 1] : [1, 0];
438 var config$1 = config();
439 if ("scale" === effect) keyframes.scale = isIn ? [config$1.scaleStart, 1] : [1, config$1.scaleStart];
440 if (direction && "string" === typeof direction) {
441 var distance = config$1.slideDistance;
442 var movement = {
443 left: { x: isIn ? [-distance, 0] : [0, -distance] },
444 right: { x: isIn ? [distance, 0] : [0, distance] },
445 top: { y: isIn ? [-distance, 0] : [0, -distance] },
446 bottom: { y: isIn ? [distance, 0] : [0, distance] }
447 };
448 direction.split("-").forEach(function(part) {
449 if (movement[part]) Object.assign(keyframes, movement[part]);
450 });
451 }
452 return keyframes;
453 }
454 function parseAnimationName(name) {
455 var _name$split2 = _slicedToArray(name.split("-"), 8);
456 var trigger = _name$split2[0];
457 var effect = _name$split2[1];
458 var type = _name$split2[2];
459 var direction = _name$split2[3];
460 var duration = _name$split2[4];
461 var delay = _name$split2[5];
462 var config$2 = config();
463 return {
464 trigger,
465 effect,
466 type,
467 direction: direction || null,
468 duration: duration ? parseInt(duration, 10) : config$2.defaultDuration,
469 delay: delay ? parseInt(delay, 10) : config$2.defaultDelay,
470 replay: false,
471 easing: config$2.defaultEasing
472 };
473 }
474 function unwrapInteractionBreakpoints(propValue) {
475 var breakpointsConfig = unwrapInteractionValue(propValue, {});
476 var excluded = unwrapInteractionValue(breakpointsConfig === null || breakpointsConfig === void 0 ? void 0 : breakpointsConfig.excluded, []);
477 if (1 > excluded.length) return {};
478 return { excluded: excluded.map(function(breakpoint) {
479 return unwrapInteractionValue(breakpoint, "");
480 }) };
481 }
482 function extractAnimationConfig(interaction) {
483 var _payload$animation;
484 if ("string" === typeof interaction) return parseAnimationName(interaction);
485 var payload = "interaction-item" === (interaction === null || interaction === void 0 ? void 0 : interaction.$$type) && interaction !== null && interaction !== void 0 && interaction.value ? interaction.value : interaction;
486 if (!payload) return null;
487 if (payload !== null && payload !== void 0 && (_payload$animation = payload.animation) !== null && _payload$animation !== void 0 && _payload$animation.animation_id) return parseAnimationName(payload.animation.animation_id);
488 var trigger = unwrapInteractionValue(payload.trigger) || payload.trigger || "load";
489 var animation = payload.animation;
490 animation = unwrapInteractionValue(animation);
491 if (!animation) return null;
492 var breakpoints = unwrapInteractionBreakpoints(payload.breakpoints);
493 var config$3 = config();
494 var effect = unwrapInteractionValue(animation.effect) || animation.effect || "fade";
495 var type = unwrapInteractionValue(animation.type) || animation.type || "in";
496 var directionUnwrapped = unwrapInteractionValue(animation.direction);
497 var direction = "string" === typeof directionUnwrapped ? directionUnwrapped : "";
498 var easing = config$3.defaultEasing;
499 var replay = false;
500 var timingConfig = unwrapInteractionValue(animation.timing_config) || animation.timing_config || {};
501 return {
502 trigger,
503 breakpoints,
504 effect,
505 type,
506 direction,
507 duration: timingValueToMs(timingConfig === null || timingConfig === void 0 ? void 0 : timingConfig.duration, config$3.defaultDuration),
508 delay: timingValueToMs(timingConfig === null || timingConfig === void 0 ? void 0 : timingConfig.delay, config$3.defaultDelay),
509 easing,
510 replay
511 };
512 }
513
514 //#endregion
515 //#region modules/interactions/assets/js/editor-interactions.js
516 function ownKeys(e, r) {
517 var t = Object.keys(e);
518 if (Object.getOwnPropertySymbols) {
519 var o = Object.getOwnPropertySymbols(e);
520 r && (o = o.filter(function(r) {
521 return Object.getOwnPropertyDescriptor(e, r).enumerable;
522 })), t.push.apply(t, o);
523 }
524 return t;
525 }
526 function _objectSpread(e) {
527 for (var r = 1; r < arguments.length; r++) {
528 var t = null != arguments[r] ? arguments[r] : {};
529 r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {
530 _defineProperty(e, r, t[r]);
531 }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {
532 Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
533 });
534 }
535 return e;
536 }
537 /**
538 * @type {Record<string, Promise<void> & { cancel: () => void }>}
539 */
540 var playingInteractionsToStop = {};
541 function applyAnimation(element, animConfig, animateFunc) {
542 var id = element.id;
543 if (playingInteractionsToStop[id]) {
544 playingInteractionsToStop[id].cancel();
545 delete playingInteractionsToStop[id];
546 }
547 var baseline = getTransformBaselineFromComputedStyle(element);
548 var keyframes = preserveTransformKeyframes(getKeyframes(animConfig.effect, animConfig.type, animConfig.direction), baseline);
549 var options = {
550 duration: animConfig.duration / 1e3,
551 delay: animConfig.delay / 1e3,
552 ease: config().defaultEasing
553 };
554 var initialKeyframes = {};
555 Object.keys(keyframes).forEach(function(key) {
556 initialKeyframes[key] = keyframes[key][0];
557 });
558 animateFunc(element, initialKeyframes, { duration: 0 }).then(function() {
559 var animation = animateFunc(element, keyframes, options);
560 playingInteractionsToStop[id] = animation;
561 animation.then(function() {
562 requestAnimationFrame(function() {
563 resetElementStyles(element);
564 });
565 delete playingInteractionsToStop[id];
566 });
567 });
568 }
569 function getInteractionsData() {
570 var scriptTag = document.querySelector("script[data-e-interactions=\"true\"]");
571 if (!scriptTag) return [];
572 try {
573 return JSON.parse(scriptTag.textContent || "[]");
574 } catch (_unused) {
575 return [];
576 }
577 }
578 function findElementByInteractionId(interactionId) {
579 return document.querySelector("[data-interaction-id=\"" + interactionId + "\"]");
580 }
581 function applyInteractionsToElement(element, interactionsData) {
582 var animateFunc = getAnimateFunction();
583 if (!animateFunc) return;
584 var parsedData = parseInteractionsData(interactionsData);
585 if (!parsedData) return;
586 Object.values((parsedData === null || parsedData === void 0 ? void 0 : parsedData.items) || []).forEach(function(interaction) {
587 var animConfig = extractAnimationConfig(interaction);
588 if (animConfig) applyAnimation(element, animConfig, animateFunc);
589 });
590 }
591 var previousInteractionsData = [];
592 function handleInteractionsUpdate() {
593 var currentInteractionsData = getInteractionsData();
594 currentInteractionsData.filter(function(currentItem) {
595 var _currentItem$interact;
596 var _previousItem$interac;
597 var previousItem = previousInteractionsData.find(function(prev) {
598 return prev.dataId === currentItem.dataId;
599 });
600 if (!previousItem) return true;
601 return (((_currentItem$interact = currentItem.interactions) === null || _currentItem$interact === void 0 ? void 0 : _currentItem$interact.items) || []).map(extractInteractionId).filter(Boolean).sort().join(",") !== (((_previousItem$interac = previousItem.interactions) === null || _previousItem$interac === void 0 ? void 0 : _previousItem$interac.items) || []).map(extractInteractionId).filter(Boolean).sort().join(",");
602 }).forEach(function(item) {
603 var _previousInteractions;
604 var _item$interactions;
605 var element = findElementByInteractionId(item.dataId);
606 var prevInteractions = (_previousInteractions = previousInteractionsData.find(function(prev) {
607 return prev.dataId === item.dataId;
608 })) === null || _previousInteractions === void 0 ? void 0 : _previousInteractions.interactions;
609 if (!element || !((_item$interactions = item.interactions) !== null && _item$interactions !== void 0 && (_item$interactions = _item$interactions.items) !== null && _item$interactions !== void 0 && _item$interactions.length)) return;
610 var prevIds = new Set(((prevInteractions === null || prevInteractions === void 0 ? void 0 : prevInteractions.items) || []).map(extractInteractionId).filter(Boolean));
611 var changedInteractions = item.interactions.items.filter(function(interaction) {
612 var id = extractInteractionId(interaction);
613 return !id || !prevIds.has(id);
614 });
615 if (changedInteractions.length > 0) applyInteractionsToElement(element, _objectSpread(_objectSpread({}, item.interactions), {}, { items: changedInteractions }));
616 });
617 previousInteractionsData = currentInteractionsData;
618 }
619 function initEditorInteractionsHandler() {
620 waitForAnimateFunction(function() {
621 var head = document.head;
622 var scriptTag = null;
623 var observer = null;
624 function setupObserver(tag) {
625 if (observer) observer.disconnect();
626 observer = new MutationObserver(function() {
627 handleInteractionsUpdate();
628 });
629 observer.observe(tag, {
630 childList: true,
631 characterData: true,
632 subtree: true
633 });
634 handleInteractionsUpdate();
635 registerWindowEvents();
636 }
637 var headObserver = new MutationObserver(function() {
638 var foundScriptTag = document.querySelector("script[data-e-interactions=\"true\"]");
639 if (foundScriptTag && foundScriptTag !== scriptTag) {
640 scriptTag = foundScriptTag;
641 setupObserver(scriptTag);
642 headObserver.disconnect();
643 }
644 });
645 headObserver.observe(head, {
646 childList: true,
647 subtree: true
648 });
649 scriptTag = document.querySelector("script[data-e-interactions=\"true\"]");
650 if (scriptTag) {
651 setupObserver(scriptTag);
652 headObserver.disconnect();
653 }
654 });
655 }
656 function registerWindowEvents() {
657 window.top.addEventListener("atomic/play_interactions", handlePlayInteractions);
658 }
659 function handlePlayInteractions(event) {
660 var _event$detail = event.detail;
661 var elementId = _event$detail.elementId;
662 var interactionId = _event$detail.interactionId;
663 var item = getInteractionsData().find(function(elementItemData) {
664 return elementItemData.dataId === elementId;
665 });
666 if (!item) return;
667 var element = findElementByInteractionId(elementId);
668 if (!element) return;
669 applyInteractionsToElement(element, _objectSpread(_objectSpread({}, item.interactions), {}, { items: item.interactions.items.filter(function(interactionItem) {
670 return extractInteractionId(interactionItem) === interactionId;
671 }) }));
672 }
673 if ("loading" === document.readyState) document.addEventListener("DOMContentLoaded", initEditorInteractionsHandler);
674 else initEditorInteractionsHandler();
675
676 //#endregion
677 })();
678 //# sourceMappingURL=editor-interactions.js.map