PluginProbe
Elementor Website Builder – more than just a page builder / 4.2.0-dev2
Elementor Website Builder – more than just a page builder v4.2.0-dev2
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 4.0.7 All 451 releases
elementor / assets / js / interactions.js

interactions.js in Elementor Website Builder – more than just a page builder 4.2.0-dev2, at assets/js/interactions.js

970 lines 39.8 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.getTransformBaselineFromComputedStyle = getTransformBaselineFromComputedStyle;
94 exports.parseInteractionsData = parseInteractionsData;
95 exports.preserveTransformKeyframes = preserveTransformKeyframes;
96 exports.resetElementStyles = resetElementStyles;
97 exports.skipInteraction = skipInteraction;
98 exports.timingValueToMs = timingValueToMs;
99 exports.unwrapInteractionValue = unwrapInteractionValue;
100 exports.waitForAnimateFunction = waitForAnimateFunction;
101 var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
102 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
103 var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"));
104 var _interactionsBreakpoints = __webpack_require__(/*! ./interactions-breakpoints.js */ "../modules/interactions/assets/js/interactions-breakpoints.js");
105 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; }
106 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; }
107 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; } } }; }
108 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; } }
109 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; }
110 function config() {
111 var _window$ElementorInte, _window$ElementorInte2;
112 return (_window$ElementorInte = (_window$ElementorInte2 = window.ElementorInteractionsConfig) === null || _window$ElementorInte2 === void 0 ? void 0 : _window$ElementorInte2.constants) !== null && _window$ElementorInte !== void 0 ? _window$ElementorInte : {};
113 }
114 function skipInteraction(interaction) {
115 var _interaction$breakpoi;
116 var breakpoint = (0, _interactionsBreakpoints.getActiveBreakpoint)();
117 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);
118 }
119 function extractInteractionId(interaction) {
120 if ('interaction-item' === (interaction === null || interaction === void 0 ? void 0 : interaction.$$type) && interaction !== null && interaction !== void 0 && interaction.value) {
121 var _interaction$value$in;
122 return ((_interaction$value$in = interaction.value.interaction_id) === null || _interaction$value$in === void 0 ? void 0 : _interaction$value$in.value) || null;
123 }
124 return null;
125 }
126 function motionFunc(name) {
127 var _window, _window2;
128 if ('function' !== typeof ((_window = window) === null || _window === void 0 || (_window = _window.Motion) === null || _window === void 0 ? void 0 : _window[name])) {
129 return undefined;
130 }
131 return (_window2 = window) === null || _window2 === void 0 || (_window2 = _window2.Motion) === null || _window2 === void 0 ? void 0 : _window2[name];
132 }
133 function getAnimateFunction() {
134 return motionFunc('animate');
135 }
136 function getInViewFunction() {
137 return motionFunc('inView');
138 }
139 function waitForAnimateFunction(callback) {
140 var maxAttempts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10;
141 if (getAnimateFunction()) {
142 callback();
143 return;
144 }
145 if (maxAttempts > 0) {
146 setTimeout(function () {
147 return waitForAnimateFunction(callback, maxAttempts - 1);
148 }, 100);
149 }
150 }
151 function parseInteractionsData(data) {
152 if ('string' === typeof data) {
153 try {
154 return JSON.parse(data);
155 } catch (_unused) {
156 return null;
157 }
158 }
159 return data;
160 }
161 function unwrapInteractionValue(propValue) {
162 var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
163 // Supports Elementor's typed wrapper shape: { $$type: '...', value: ... }.
164 if (propValue && 'object' === (0, _typeof2.default)(propValue) && '$$type' in propValue) {
165 return propValue.value;
166 }
167 return propValue !== null && propValue !== void 0 ? propValue : fallback;
168 }
169 function timingValueToMs(timingValue, fallbackMs) {
170 if (null === timingValue || undefined === timingValue) {
171 return fallbackMs;
172 }
173 var unwrapped = unwrapInteractionValue(timingValue);
174 if ('number' === typeof unwrapped) {
175 return unwrapped;
176 }
177 var sizeObj = unwrapInteractionValue(unwrapped);
178 var size = sizeObj === null || sizeObj === void 0 ? void 0 : sizeObj.size;
179 var unit = (sizeObj === null || sizeObj === void 0 ? void 0 : sizeObj.unit) || 'ms';
180 if ('number' !== typeof size) {
181 return fallbackMs;
182 }
183 if ('s' === unit) {
184 return size * 1000;
185 }
186 return size;
187 }
188 function resetElementStyles(element) {
189 if (!element) {
190 return;
191 }
192 element.style.transition = '';
193 element.style.transform = '';
194 element.style.opacity = '';
195 }
196 var TRANSFORM_EPSILON = 0.001;
197 var radiansToDegrees = function radiansToDegrees(radians) {
198 return radians * (180 / Math.PI);
199 };
200 var isNear = function isNear(value, expected) {
201 return Math.abs(value - expected) <= TRANSFORM_EPSILON;
202 };
203 var isNearZero = function isNearZero(value) {
204 return isNear(value, 0);
205 };
206 var isNearOne = function isNearOne(value) {
207 return isNear(value, 1);
208 };
209 function parseMatrixValues(transformValue) {
210 var match = transformValue.match(/^matrix(3d)?\((.+)\)$/);
211 if (!match) {
212 return null;
213 }
214 return match[2].split(',').map(function (token) {
215 return Number.parseFloat(token.trim());
216 }).filter(function (value) {
217 return Number.isFinite(value);
218 });
219 }
220 function createMatrixFromTransform(transformValue) {
221 if (!transformValue || 'none' === transformValue) {
222 return null;
223 }
224 var matrixFactories = [window.DOMMatrixReadOnly, window.DOMMatrix].filter(function (Factory) {
225 return 'function' === typeof Factory;
226 });
227 var _iterator = _createForOfIteratorHelper(matrixFactories),
228 _step;
229 try {
230 for (_iterator.s(); !(_step = _iterator.n()).done;) {
231 var MatrixFactory = _step.value;
232 try {
233 var _ref, _matrix$a, _ref2, _matrix$b, _ref3, _matrix$c, _ref4, _matrix$d, _ref5, _matrix$e, _ref6, _matrix$f;
234 var matrix = new MatrixFactory(transformValue);
235 // CSS matrix(a,b,c,d,e,f): x' = ax + cy + e, y' = bx + dy + f
236 // matrixXfromY = how much input Y contributes to output X (etc.)
237 var compactMatrix = {
238 matrixXfromX: (_ref = (_matrix$a = matrix.a) !== null && _matrix$a !== void 0 ? _matrix$a : matrix.m11) !== null && _ref !== void 0 ? _ref : 1,
239 matrixYfromX: (_ref2 = (_matrix$b = matrix.b) !== null && _matrix$b !== void 0 ? _matrix$b : matrix.m12) !== null && _ref2 !== void 0 ? _ref2 : 0,
240 matrixXfromY: (_ref3 = (_matrix$c = matrix.c) !== null && _matrix$c !== void 0 ? _matrix$c : matrix.m21) !== null && _ref3 !== void 0 ? _ref3 : 0,
241 matrixYfromY: (_ref4 = (_matrix$d = matrix.d) !== null && _matrix$d !== void 0 ? _matrix$d : matrix.m22) !== null && _ref4 !== void 0 ? _ref4 : 1,
242 matrixTranslateX: (_ref5 = (_matrix$e = matrix.e) !== null && _matrix$e !== void 0 ? _matrix$e : matrix.m41) !== null && _ref5 !== void 0 ? _ref5 : 0,
243 matrixTranslateY: (_ref6 = (_matrix$f = matrix.f) !== null && _matrix$f !== void 0 ? _matrix$f : matrix.m42) !== null && _ref6 !== void 0 ? _ref6 : 0
244 };
245 if (Object.values(compactMatrix).every(Number.isFinite)) {
246 return compactMatrix;
247 }
248 } catch (_unused2) {}
249 }
250 } catch (err) {
251 _iterator.e(err);
252 } finally {
253 _iterator.f();
254 }
255 var parsedValues = parseMatrixValues(transformValue);
256 if (!parsedValues) {
257 return null;
258 }
259 if (6 === parsedValues.length) {
260 var _parsedValues = (0, _slicedToArray2.default)(parsedValues, 6),
261 matrixXfromX = _parsedValues[0],
262 matrixYfromX = _parsedValues[1],
263 matrixXfromY = _parsedValues[2],
264 matrixYfromY = _parsedValues[3],
265 matrixTranslateX = _parsedValues[4],
266 matrixTranslateY = _parsedValues[5];
267 return {
268 matrixXfromX: matrixXfromX,
269 matrixYfromX: matrixYfromX,
270 matrixXfromY: matrixXfromY,
271 matrixYfromY: matrixYfromY,
272 matrixTranslateX: matrixTranslateX,
273 matrixTranslateY: matrixTranslateY
274 };
275 }
276 if (16 === parsedValues.length) {
277 var _parsedValues2 = (0, _slicedToArray2.default)(parsedValues, 14),
278 _matrixXfromX = _parsedValues2[0],
279 _matrixYfromX = _parsedValues2[1],
280 _matrixXfromY = _parsedValues2[4],
281 _matrixYfromY = _parsedValues2[5],
282 _matrixTranslateX = _parsedValues2[12],
283 _matrixTranslateY = _parsedValues2[13];
284 return {
285 matrixXfromX: _matrixXfromX,
286 matrixYfromX: _matrixYfromX,
287 matrixXfromY: _matrixXfromY,
288 matrixYfromY: _matrixYfromY,
289 matrixTranslateX: _matrixTranslateX,
290 matrixTranslateY: _matrixTranslateY
291 };
292 }
293 return null;
294 }
295 function getTransformBaselineFromComputedStyle(element) {
296 if (!element) {
297 return null;
298 }
299 var computedStyle = window.getComputedStyle(element);
300 var matrix = createMatrixFromTransform((computedStyle === null || computedStyle === void 0 ? void 0 : computedStyle.transform) || '');
301 if (!matrix) {
302 return null;
303 }
304 var matrixXfromX = matrix.matrixXfromX,
305 matrixYfromX = matrix.matrixYfromX,
306 matrixXfromY = matrix.matrixXfromY,
307 matrixYfromY = matrix.matrixYfromY,
308 matrixTranslateX = matrix.matrixTranslateX,
309 matrixTranslateY = matrix.matrixTranslateY;
310 var scaleX = Math.hypot(matrixXfromX, matrixYfromX);
311 var determinant = matrixXfromX * matrixYfromY - matrixYfromX * matrixXfromY;
312 var scaleY = scaleX ? determinant / scaleX : Math.hypot(matrixXfromY, matrixYfromY);
313 var rotate = radiansToDegrees(Math.atan2(matrixYfromX, matrixXfromX));
314 var shear = scaleX ? (matrixXfromX * matrixXfromY + matrixYfromX * matrixYfromY) / (scaleX * scaleX) : 0;
315 var skewX = radiansToDegrees(Math.atan(shear));
316 return {
317 x: matrixTranslateX,
318 y: matrixTranslateY,
319 scaleX: Number.isFinite(scaleX) ? scaleX : 1,
320 scaleY: Number.isFinite(scaleY) ? scaleY : 1,
321 rotate: Number.isFinite(rotate) ? rotate : 0,
322 skewX: Number.isFinite(skewX) ? skewX : 0
323 };
324 }
325 function preserveTransformKeyframes(keyframes, baseline) {
326 if (!baseline) {
327 return keyframes;
328 }
329 var mergedKeyframes = _objectSpread({}, keyframes);
330 var hasScaleShorthand = mergedKeyframes.scale !== undefined;
331 var canSetScaleX = mergedKeyframes.scaleX === undefined && !isNearOne(baseline.scaleX);
332 var canSetScaleY = mergedKeyframes.scaleY === undefined && !isNearOne(baseline.scaleY);
333 if (mergedKeyframes.x === undefined && !isNearZero(baseline.x)) {
334 mergedKeyframes.x = [baseline.x, baseline.x];
335 }
336 if (mergedKeyframes.y === undefined && !isNearZero(baseline.y)) {
337 mergedKeyframes.y = [baseline.y, baseline.y];
338 }
339 if (!hasScaleShorthand) {
340 if (canSetScaleX && canSetScaleY && isNear(baseline.scaleX, baseline.scaleY)) {
341 mergedKeyframes.scale = [baseline.scaleX, baseline.scaleX];
342 } else {
343 if (canSetScaleX) {
344 mergedKeyframes.scaleX = [baseline.scaleX, baseline.scaleX];
345 }
346 if (canSetScaleY) {
347 mergedKeyframes.scaleY = [baseline.scaleY, baseline.scaleY];
348 }
349 }
350 }
351 if (mergedKeyframes.rotate === undefined && mergedKeyframes.rotateZ === undefined && !isNearZero(baseline.rotate)) {
352 mergedKeyframes.rotate = [baseline.rotate, baseline.rotate];
353 }
354 if (mergedKeyframes.skew === undefined && mergedKeyframes.skewX === undefined && !isNearZero(baseline.skewX)) {
355 mergedKeyframes.skewX = [baseline.skewX, baseline.skewX];
356 }
357 return mergedKeyframes;
358 }
359
360 // Expose on elementorModules for Pro and other consumers.
361 window.elementorModules = window.elementorModules || {};
362 window.elementorModules.interactions = {
363 config: config,
364 skipInteraction: skipInteraction,
365 extractInteractionId: extractInteractionId,
366 getAnimateFunction: getAnimateFunction,
367 getInViewFunction: getInViewFunction,
368 waitForAnimateFunction: waitForAnimateFunction,
369 parseInteractionsData: parseInteractionsData,
370 unwrapInteractionValue: unwrapInteractionValue,
371 timingValueToMs: timingValueToMs,
372 resetElementStyles: resetElementStyles,
373 getTransformBaselineFromComputedStyle: getTransformBaselineFromComputedStyle,
374 preserveTransformKeyframes: preserveTransformKeyframes
375 };
376
377 /***/ }),
378
379 /***/ "../modules/interactions/assets/js/interactions-utils.js":
380 /*!***************************************************************!*\
381 !*** ../modules/interactions/assets/js/interactions-utils.js ***!
382 \***************************************************************/
383 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
384
385 "use strict";
386
387
388 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
389 Object.defineProperty(exports, "__esModule", ({
390 value: true
391 }));
392 Object.defineProperty(exports, "config", ({
393 enumerable: true,
394 get: function get() {
395 return _interactionsSharedUtils.config;
396 }
397 }));
398 exports.extractAnimationConfig = extractAnimationConfig;
399 Object.defineProperty(exports, "extractInteractionId", ({
400 enumerable: true,
401 get: function get() {
402 return _interactionsSharedUtils.extractInteractionId;
403 }
404 }));
405 exports.findElementByDataId = findElementByDataId;
406 Object.defineProperty(exports, "getAnimateFunction", ({
407 enumerable: true,
408 get: function get() {
409 return _interactionsSharedUtils.getAnimateFunction;
410 }
411 }));
412 Object.defineProperty(exports, "getInViewFunction", ({
413 enumerable: true,
414 get: function get() {
415 return _interactionsSharedUtils.getInViewFunction;
416 }
417 }));
418 exports.getInteractionsData = getInteractionsData;
419 exports.getKeyframes = getKeyframes;
420 Object.defineProperty(exports, "getTransformBaselineFromComputedStyle", ({
421 enumerable: true,
422 get: function get() {
423 return _interactionsSharedUtils.getTransformBaselineFromComputedStyle;
424 }
425 }));
426 exports.parseAnimationName = parseAnimationName;
427 Object.defineProperty(exports, "parseInteractionsData", ({
428 enumerable: true,
429 get: function get() {
430 return _interactionsSharedUtils.parseInteractionsData;
431 }
432 }));
433 Object.defineProperty(exports, "preserveTransformKeyframes", ({
434 enumerable: true,
435 get: function get() {
436 return _interactionsSharedUtils.preserveTransformKeyframes;
437 }
438 }));
439 Object.defineProperty(exports, "resetElementStyles", ({
440 enumerable: true,
441 get: function get() {
442 return _interactionsSharedUtils.resetElementStyles;
443 }
444 }));
445 exports.skipInteraction = skipInteraction;
446 Object.defineProperty(exports, "timingValueToMs", ({
447 enumerable: true,
448 get: function get() {
449 return _interactionsSharedUtils.timingValueToMs;
450 }
451 }));
452 Object.defineProperty(exports, "unwrapInteractionValue", ({
453 enumerable: true,
454 get: function get() {
455 return _interactionsSharedUtils.unwrapInteractionValue;
456 }
457 }));
458 Object.defineProperty(exports, "waitForAnimateFunction", ({
459 enumerable: true,
460 get: function get() {
461 return _interactionsSharedUtils.waitForAnimateFunction;
462 }
463 }));
464 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
465 var _interactionsSharedUtils = __webpack_require__(/*! ./interactions-shared-utils.js */ "../modules/interactions/assets/js/interactions-shared-utils.js");
466 function isSupportedInteraction(animationConfig) {
467 if (!['load', 'scrollIn', 'scrollOut'].includes(animationConfig.trigger)) {
468 return false;
469 }
470 if ('custom' === animationConfig.effect) {
471 return false;
472 }
473 return true;
474 }
475 function skipInteraction(animationConfig) {
476 if (!isSupportedInteraction(animationConfig)) {
477 return true;
478 }
479 return (0, _interactionsSharedUtils.skipInteraction)(animationConfig);
480 }
481 function getKeyframes(effect, type, direction) {
482 var isIn = 'in' === type;
483 var keyframes = {};
484 if ('fade' === effect) {
485 keyframes.opacity = isIn ? [0, 1] : [1, 0];
486 }
487 var config = (0, _interactionsSharedUtils.config)();
488 if ('scale' === effect) {
489 keyframes.scale = isIn ? [config.scaleStart, 1] : [1, config.scaleStart];
490 }
491 if (direction && 'string' === typeof direction) {
492 var distance = config.slideDistance;
493 var movement = {
494 left: {
495 x: isIn ? [-distance, 0] : [0, -distance]
496 },
497 right: {
498 x: isIn ? [distance, 0] : [0, distance]
499 },
500 top: {
501 y: isIn ? [-distance, 0] : [0, -distance]
502 },
503 bottom: {
504 y: isIn ? [distance, 0] : [0, distance]
505 }
506 };
507 direction.split('-').forEach(function (part) {
508 if (movement[part]) {
509 Object.assign(keyframes, movement[part]);
510 }
511 });
512 }
513 return keyframes;
514 }
515 function parseAnimationName(name) {
516 var _name$split = name.split('-'),
517 _name$split2 = (0, _slicedToArray2.default)(_name$split, 8),
518 trigger = _name$split2[0],
519 effect = _name$split2[1],
520 type = _name$split2[2],
521 direction = _name$split2[3],
522 duration = _name$split2[4],
523 delay = _name$split2[5];
524 var config = (0, _interactionsSharedUtils.config)();
525 return {
526 trigger: trigger,
527 effect: effect,
528 type: type,
529 direction: direction || null,
530 duration: duration ? parseInt(duration, 10) : config.defaultDuration,
531 delay: delay ? parseInt(delay, 10) : config.defaultDelay,
532 replay: false,
533 easing: config.defaultEasing
534 };
535 }
536
537 /**
538 * Get interactions data from the script tag injected by PHP.
539 * Returns array of { elementId, dataId, interactions: [...] }
540 */
541 function getInteractionsData() {
542 var scriptTag = document.getElementById('elementor-interactions-data');
543 if (!scriptTag) {
544 return null;
545 }
546 try {
547 return JSON.parse(scriptTag.textContent);
548 } catch (_unused) {
549 return null;
550 }
551 }
552 function findElementByDataId(dataId) {
553 return document.querySelector("[data-interaction-id=\"".concat(dataId, "\"]"));
554 }
555 function unwrapInteractionBreakpoints(propValue) {
556 var breakpointsConfig = (0, _interactionsSharedUtils.unwrapInteractionValue)(propValue, {});
557 var excluded = (0, _interactionsSharedUtils.unwrapInteractionValue)(breakpointsConfig === null || breakpointsConfig === void 0 ? void 0 : breakpointsConfig.excluded, []);
558 if (1 > excluded.length) {
559 return {};
560 }
561 var breakpoints = {
562 excluded: excluded.map(function (breakpoint) {
563 return (0, _interactionsSharedUtils.unwrapInteractionValue)(breakpoint, '');
564 })
565 };
566 return breakpoints;
567 }
568 function extractAnimationConfig(interaction) {
569 var _payload$animation;
570 if ('string' === typeof interaction) {
571 return parseAnimationName(interaction);
572 }
573 var payload = 'interaction-item' === (interaction === null || interaction === void 0 ? void 0 : interaction.$$type) && interaction !== null && interaction !== void 0 && interaction.value ? interaction.value : interaction;
574 if (!payload) {
575 return null;
576 }
577 if (payload !== null && payload !== void 0 && (_payload$animation = payload.animation) !== null && _payload$animation !== void 0 && _payload$animation.animation_id) {
578 return parseAnimationName(payload.animation.animation_id);
579 }
580 var trigger = (0, _interactionsSharedUtils.unwrapInteractionValue)(payload.trigger) || payload.trigger || 'load';
581 var animation = payload.animation;
582 animation = (0, _interactionsSharedUtils.unwrapInteractionValue)(animation);
583 if (!animation) {
584 return null;
585 }
586 var breakpoints = unwrapInteractionBreakpoints(payload.breakpoints);
587 var config = (0, _interactionsSharedUtils.config)();
588 var effect = (0, _interactionsSharedUtils.unwrapInteractionValue)(animation.effect) || animation.effect || 'fade';
589 var type = (0, _interactionsSharedUtils.unwrapInteractionValue)(animation.type) || animation.type || 'in';
590 var directionUnwrapped = (0, _interactionsSharedUtils.unwrapInteractionValue)(animation.direction);
591 var direction = 'string' === typeof directionUnwrapped ? directionUnwrapped : '';
592 var easing = config.defaultEasing;
593 var replay = false;
594 var timingConfig = (0, _interactionsSharedUtils.unwrapInteractionValue)(animation.timing_config) || animation.timing_config || {};
595 var duration = (0, _interactionsSharedUtils.timingValueToMs)(timingConfig === null || timingConfig === void 0 ? void 0 : timingConfig.duration, config.defaultDuration);
596 var delay = (0, _interactionsSharedUtils.timingValueToMs)(timingConfig === null || timingConfig === void 0 ? void 0 : timingConfig.delay, config.defaultDelay);
597 return {
598 trigger: trigger,
599 breakpoints: breakpoints,
600 effect: effect,
601 type: type,
602 direction: direction,
603 duration: duration,
604 delay: delay,
605 easing: easing,
606 replay: replay
607 };
608 }
609
610 /***/ }),
611
612 /***/ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js":
613 /*!******************************************************************!*\
614 !*** ../node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***!
615 \******************************************************************/
616 /***/ ((module) => {
617
618 function _arrayLikeToArray(r, a) {
619 (null == a || a > r.length) && (a = r.length);
620 for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
621 return n;
622 }
623 module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
624
625 /***/ }),
626
627 /***/ "../node_modules/@babel/runtime/helpers/arrayWithHoles.js":
628 /*!****************************************************************!*\
629 !*** ../node_modules/@babel/runtime/helpers/arrayWithHoles.js ***!
630 \****************************************************************/
631 /***/ ((module) => {
632
633 function _arrayWithHoles(r) {
634 if (Array.isArray(r)) return r;
635 }
636 module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;
637
638 /***/ }),
639
640 /***/ "../node_modules/@babel/runtime/helpers/defineProperty.js":
641 /*!****************************************************************!*\
642 !*** ../node_modules/@babel/runtime/helpers/defineProperty.js ***!
643 \****************************************************************/
644 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
645
646 var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ "../node_modules/@babel/runtime/helpers/toPropertyKey.js");
647 function _defineProperty(e, r, t) {
648 return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
649 value: t,
650 enumerable: !0,
651 configurable: !0,
652 writable: !0
653 }) : e[r] = t, e;
654 }
655 module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports;
656
657 /***/ }),
658
659 /***/ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js":
660 /*!***********************************************************************!*\
661 !*** ../node_modules/@babel/runtime/helpers/interopRequireDefault.js ***!
662 \***********************************************************************/
663 /***/ ((module) => {
664
665 function _interopRequireDefault(e) {
666 return e && e.__esModule ? e : {
667 "default": e
668 };
669 }
670 module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports;
671
672 /***/ }),
673
674 /***/ "../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js":
675 /*!**********************************************************************!*\
676 !*** ../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js ***!
677 \**********************************************************************/
678 /***/ ((module) => {
679
680 function _iterableToArrayLimit(r, l) {
681 var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
682 if (null != t) {
683 var e,
684 n,
685 i,
686 u,
687 a = [],
688 f = !0,
689 o = !1;
690 try {
691 if (i = (t = t.call(r)).next, 0 === l) {
692 if (Object(t) !== t) return;
693 f = !1;
694 } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
695 } catch (r) {
696 o = !0, n = r;
697 } finally {
698 try {
699 if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
700 } finally {
701 if (o) throw n;
702 }
703 }
704 return a;
705 }
706 }
707 module.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports["default"] = module.exports;
708
709 /***/ }),
710
711 /***/ "../node_modules/@babel/runtime/helpers/nonIterableRest.js":
712 /*!*****************************************************************!*\
713 !*** ../node_modules/@babel/runtime/helpers/nonIterableRest.js ***!
714 \*****************************************************************/
715 /***/ ((module) => {
716
717 function _nonIterableRest() {
718 throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
719 }
720 module.exports = _nonIterableRest, module.exports.__esModule = true, module.exports["default"] = module.exports;
721
722 /***/ }),
723
724 /***/ "../node_modules/@babel/runtime/helpers/slicedToArray.js":
725 /*!***************************************************************!*\
726 !*** ../node_modules/@babel/runtime/helpers/slicedToArray.js ***!
727 \***************************************************************/
728 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
729
730 var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ "../node_modules/@babel/runtime/helpers/arrayWithHoles.js");
731 var iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ "../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js");
732 var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js");
733 var nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ "../node_modules/@babel/runtime/helpers/nonIterableRest.js");
734 function _slicedToArray(r, e) {
735 return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();
736 }
737 module.exports = _slicedToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
738
739 /***/ }),
740
741 /***/ "../node_modules/@babel/runtime/helpers/toPrimitive.js":
742 /*!*************************************************************!*\
743 !*** ../node_modules/@babel/runtime/helpers/toPrimitive.js ***!
744 \*************************************************************/
745 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
746
747 var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]);
748 function toPrimitive(t, r) {
749 if ("object" != _typeof(t) || !t) return t;
750 var e = t[Symbol.toPrimitive];
751 if (void 0 !== e) {
752 var i = e.call(t, r || "default");
753 if ("object" != _typeof(i)) return i;
754 throw new TypeError("@@toPrimitive must return a primitive value.");
755 }
756 return ("string" === r ? String : Number)(t);
757 }
758 module.exports = toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports;
759
760 /***/ }),
761
762 /***/ "../node_modules/@babel/runtime/helpers/toPropertyKey.js":
763 /*!***************************************************************!*\
764 !*** ../node_modules/@babel/runtime/helpers/toPropertyKey.js ***!
765 \***************************************************************/
766 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
767
768 var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]);
769 var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ "../node_modules/@babel/runtime/helpers/toPrimitive.js");
770 function toPropertyKey(t) {
771 var i = toPrimitive(t, "string");
772 return "symbol" == _typeof(i) ? i : i + "";
773 }
774 module.exports = toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports;
775
776 /***/ }),
777
778 /***/ "../node_modules/@babel/runtime/helpers/typeof.js":
779 /*!********************************************************!*\
780 !*** ../node_modules/@babel/runtime/helpers/typeof.js ***!
781 \********************************************************/
782 /***/ ((module) => {
783
784 function _typeof(o) {
785 "@babel/helpers - typeof";
786
787 return module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
788 return typeof o;
789 } : function (o) {
790 return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
791 }, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof(o);
792 }
793 module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
794
795 /***/ }),
796
797 /***/ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js":
798 /*!****************************************************************************!*\
799 !*** ../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***!
800 \****************************************************************************/
801 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
802
803 var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js");
804 function _unsupportedIterableToArray(r, a) {
805 if (r) {
806 if ("string" == typeof r) return arrayLikeToArray(r, a);
807 var t = {}.toString.call(r).slice(8, -1);
808 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;
809 }
810 }
811 module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
812
813 /***/ })
814
815 /******/ });
816 /************************************************************************/
817 /******/ // The module cache
818 /******/ var __webpack_module_cache__ = {};
819 /******/
820 /******/ // The require function
821 /******/ function __webpack_require__(moduleId) {
822 /******/ // Check if module is in cache
823 /******/ var cachedModule = __webpack_module_cache__[moduleId];
824 /******/ if (cachedModule !== undefined) {
825 /******/ return cachedModule.exports;
826 /******/ }
827 /******/ // Create a new module (and put it into the cache)
828 /******/ var module = __webpack_module_cache__[moduleId] = {
829 /******/ // no module.id needed
830 /******/ // no module.loaded needed
831 /******/ exports: {}
832 /******/ };
833 /******/
834 /******/ // Execute the module function
835 /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
836 /******/
837 /******/ // Return the exports of the module
838 /******/ return module.exports;
839 /******/ }
840 /******/
841 /************************************************************************/
842 var __webpack_exports__ = {};
843 // This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
844 (() => {
845 "use strict";
846 /*!*********************************************************!*\
847 !*** ../modules/interactions/assets/js/interactions.js ***!
848 \*********************************************************/
849
850
851 var _interactionsUtils = __webpack_require__(/*! ./interactions-utils.js */ "../modules/interactions/assets/js/interactions-utils.js");
852 var _interactionsBreakpoints = __webpack_require__(/*! ./interactions-breakpoints.js */ "../modules/interactions/assets/js/interactions-breakpoints.js");
853 function scrollOutAnimation(element, transition, keyframes, resetKeyframes, options, animateFunc, inViewFunc) {
854 var viewOptions = {
855 amount: 0.85,
856 root: null
857 };
858 animateFunc(element, resetKeyframes, {
859 duration: 0
860 });
861 var stop = inViewFunc(element, function () {
862 return function () {
863 animateFunc(element, keyframes, options).then(function () {
864 element.style.transition = transition;
865 });
866 if (false === animConfig.replay) {
867 stop();
868 }
869 };
870 }, viewOptions);
871 }
872 function scrollInAnimation(element, transition, animConfig, keyframes, options, animateFunc, inViewFunc) {
873 var viewOptions = {
874 amount: 0,
875 root: null
876 };
877 var stop = inViewFunc(element, function () {
878 animateFunc(element, keyframes, options).then(function () {
879 element.style.transition = transition;
880 });
881 if (false === animConfig.replay) {
882 stop();
883 }
884 }, viewOptions);
885 }
886 function defaultAnimation(element, transition, keyframes, options, animateFunc) {
887 animateFunc(element, keyframes, options).then(function () {
888 element.style.transition = transition;
889 });
890 }
891 function applyAnimation(element, animConfig, animateFunc, inViewFunc) {
892 var baseline = (0, _interactionsUtils.getTransformBaselineFromComputedStyle)(element);
893 var keyframes = (0, _interactionsUtils.preserveTransformKeyframes)((0, _interactionsUtils.getKeyframes)(animConfig.effect, animConfig.type, animConfig.direction), baseline);
894 var resetKeyframes = (0, _interactionsUtils.preserveTransformKeyframes)((0, _interactionsUtils.getKeyframes)(animConfig.effect, 'in', animConfig.direction), baseline);
895 var options = {
896 duration: animConfig.duration / 1000,
897 delay: animConfig.delay / 1000,
898 ease: (0, _interactionsUtils.config)().defaultEasing
899 };
900
901 // WHY - Transition can be set on elements but once it sets it destroys all animations, so we basically put it aside.
902 var transition = element.style.transition;
903 element.style.transition = 'none';
904 if ('scrollOut' === animConfig.trigger) {
905 scrollOutAnimation(element, transition, keyframes, resetKeyframes, options, animateFunc, inViewFunc);
906 } else if ('scrollIn' === animConfig.trigger) {
907 scrollInAnimation(element, transition, animConfig, keyframes, options, animateFunc, inViewFunc);
908 } else {
909 defaultAnimation(element, transition, keyframes, options, animateFunc);
910 }
911 }
912 function processElementInteractions(element, interactions, animateFunc, inViewFunc) {
913 if (!interactions || !Array.isArray(interactions)) {
914 return;
915 }
916 interactions.forEach(function (interaction) {
917 var animConfig = (0, _interactionsUtils.extractAnimationConfig)(interaction);
918 if (animConfig && !(0, _interactionsUtils.skipInteraction)(animConfig)) {
919 applyAnimation(element, animConfig, animateFunc, inViewFunc);
920 }
921 });
922 }
923 function initInteractions() {
924 (0, _interactionsUtils.waitForAnimateFunction)(function () {
925 var animateFunc = (0, _interactionsUtils.getAnimateFunction)();
926 var inViewFunc = (0, _interactionsUtils.getInViewFunction)();
927 if (!inViewFunc || !animateFunc) {
928 return;
929 }
930
931 // New method: Read centralized interactions data from script tag
932 var dataScript = document.getElementById('elementor-interactions-data');
933 if (dataScript) {
934 var elementsData = JSON.parse(dataScript.textContent);
935 elementsData.forEach(function (elementData) {
936 var elementId = elementData.elementId,
937 interactions = elementData.interactions;
938 if (!elementId || !interactions || !Array.isArray(interactions)) {
939 return;
940 }
941 document.querySelectorAll("[data-interaction-id=\"".concat(elementId, "\"]")).forEach(function (element) {
942 processElementInteractions(element, interactions, animateFunc, inViewFunc);
943 });
944 });
945 return;
946 }
947
948 // Legacy fallback: parse data-interactions attributes
949 var elements = document.querySelectorAll('[data-interactions]');
950 elements.forEach(function (element) {
951 var interactionsData = element.getAttribute('data-interactions');
952 var parsedData = (0, _interactionsUtils.parseInteractionsData)(interactionsData);
953 processElementInteractions(element, parsedData, animateFunc, inViewFunc);
954 });
955 });
956 }
957 function init() {
958 (0, _interactionsBreakpoints.initBreakpoints)();
959 initInteractions();
960 }
961 if ('loading' === document.readyState) {
962 document.addEventListener('DOMContentLoaded', init);
963 } else {
964 init();
965 }
966 })();
967
968 /******/ })()
969 ;
970 //# sourceMappingURL=interactions.js.map