@wix/interact 1.72.0 → 1.74.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/__tests__/interact.spec.js +86 -17
- package/dist/cjs/__tests__/interact.spec.js.map +1 -1
- package/dist/cjs/handlers/animationEnd.js +2 -2
- package/dist/cjs/handlers/animationEnd.js.map +1 -1
- package/dist/cjs/handlers/click.js +4 -4
- package/dist/cjs/handlers/click.js.map +1 -1
- package/dist/cjs/handlers/hover.js +4 -4
- package/dist/cjs/handlers/hover.js.map +1 -1
- package/dist/cjs/handlers/pointerMove.js +4 -1
- package/dist/cjs/handlers/pointerMove.js.map +1 -1
- package/dist/cjs/handlers/viewEnter.js +6 -4
- package/dist/cjs/handlers/viewEnter.js.map +1 -1
- package/dist/cjs/handlers/viewProgress.js +4 -1
- package/dist/cjs/handlers/viewProgress.js.map +1 -1
- package/dist/cjs/interact.js +2 -4
- package/dist/cjs/interact.js.map +1 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/utils.js +2 -2
- package/dist/cjs/utils.js.map +1 -1
- package/dist/esm/__tests__/interact.spec.js +86 -17
- package/dist/esm/__tests__/interact.spec.js.map +1 -1
- package/dist/esm/handlers/animationEnd.js +5 -2
- package/dist/esm/handlers/animationEnd.js.map +1 -1
- package/dist/esm/handlers/click.js +10 -4
- package/dist/esm/handlers/click.js.map +1 -1
- package/dist/esm/handlers/hover.js +10 -4
- package/dist/esm/handlers/hover.js.map +1 -1
- package/dist/esm/handlers/pointerMove.js +7 -1
- package/dist/esm/handlers/pointerMove.js.map +1 -1
- package/dist/esm/handlers/viewEnter.js +9 -4
- package/dist/esm/handlers/viewEnter.js.map +1 -1
- package/dist/esm/handlers/viewProgress.js +7 -1
- package/dist/esm/handlers/viewProgress.js.map +1 -1
- package/dist/esm/interact.js +2 -4
- package/dist/esm/interact.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/utils.js +2 -2
- package/dist/esm/utils.js.map +1 -1
- package/dist/types/handlers/animationEnd.d.ts +1 -1
- package/dist/types/handlers/click.d.ts +1 -1
- package/dist/types/handlers/hover.d.ts +1 -1
- package/dist/types/handlers/pointerMove.d.ts +1 -1
- package/dist/types/handlers/viewEnter.d.ts +1 -1
- package/dist/types/handlers/viewProgress.d.ts +1 -1
- package/dist/types/interact.d.ts +1 -0
- package/dist/types/types.d.ts +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_motion","require","_utilities","handlerMap","WeakMap","createTimeEffectHandler","element","effect","options","animation","getAnimation","effectToAnimationOptions","initialPlay","type","__","play","reverse","playState","pause","progress","createTransitionHandler","effectId","wixInteractElement","parentElement","toggleEffect","method","addClickHandler","source","target","handler","once","transition","transitionProperties","cleanup","removeEventListener","handlerObj","addHandlerToMap","addEventListener","passive","removeClickHandler","removeElementFromHandlerMap","_default","exports","default","add","remove"],"sources":["../../../src/handlers/click.ts"],"sourcesContent":["import { getAnimation } from '@wix/motion';\nimport type { AnimationGroup } from '@wix/motion';\nimport type {\n TimeEffect,\n TransitionEffect,\n StateParams,\n HandlerObjectMap,\n IWixInteractElement,\n PointerTriggerParams,\n} from '../types';\nimport {\n effectToAnimationOptions,\n addHandlerToMap,\n removeElementFromHandlerMap,\n} from './utilities';\n\nconst handlerMap = new WeakMap() as HandlerObjectMap;\n\nfunction createTimeEffectHandler(\n element: HTMLElement,\n effect: TimeEffect,\n options: PointerTriggerParams,\n) {\n const animation = getAnimation(\n element,\n effectToAnimationOptions(effect),\n ) as AnimationGroup;\n let initialPlay = true;\n const type = options.type || 'alternate';\n\n return (__: MouseEvent) => {\n if (type === 'alternate') {\n if (initialPlay) {\n initialPlay = false;\n animation.play();\n } else {\n animation.reverse();\n }\n } else if (type === 'state') {\n if (initialPlay) {\n initialPlay = false;\n animation.play();\n } else {\n if (animation.playState === 'running') {\n animation.pause();\n } else if (animation.playState !== 'finished') {\n // 'idle' OR 'paused'\n animation.play();\n }\n }\n } else {\n // type === 'repeat'\n // type === 'once'\n animation.progress(0);\n animation.play();\n }\n };\n}\n\nfunction createTransitionHandler(\n element: HTMLElement,\n { effectId }: TransitionEffect & { effectId: string },\n options: StateParams,\n) {\n return (__: MouseEvent) => {\n const wixInteractElement = element.parentElement as IWixInteractElement;\n if (!wixInteractElement) {\n return;\n }\n\n wixInteractElement.toggleEffect(effectId, options.method || 'toggle');\n };\n}\n\nfunction addClickHandler(\n source: HTMLElement,\n target: HTMLElement,\n effect: TimeEffect | TransitionEffect,\n options: StateParams | PointerTriggerParams = {} as StateParams,\n) {\n let handler: (event: MouseEvent) => void;\n let once = false;\n\n if (\n (effect as TransitionEffect).transition ||\n (effect as TransitionEffect).transitionProperties\n ) {\n handler = createTransitionHandler(\n target,\n effect as TransitionEffect & { effectId: string },\n options as StateParams,\n );\n } else {\n handler = createTimeEffectHandler(\n target,\n effect as TimeEffect,\n options as PointerTriggerParams,\n );\n once = (options as PointerTriggerParams).type === 'once';\n }\n\n const cleanup = () => {\n source.removeEventListener('click', handler);\n };\n\n const handlerObj = { source, target, cleanup };\n\n addHandlerToMap(handlerMap, source, handlerObj);\n addHandlerToMap(handlerMap, target, handlerObj);\n\n source.addEventListener('click', handler, { passive: true, once });\n}\n\nfunction removeClickHandler(element: HTMLElement) {\n removeElementFromHandlerMap(handlerMap, element);\n}\n\nexport default {\n add: addClickHandler,\n remove: removeClickHandler,\n};\n"],"mappings":";;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAUA,IAAAC,UAAA,GAAAD,OAAA;AAMA,MAAME,UAAU,GAAG,IAAIC,OAAO,CAAC,CAAqB;AAEpD,SAASC,uBAAuBA,CAC9BC,OAAoB,EACpBC,MAAkB,EAClBC,OAA6B,
|
|
1
|
+
{"version":3,"names":["_motion","require","_utilities","handlerMap","WeakMap","createTimeEffectHandler","element","effect","options","reducedMotion","animation","getAnimation","effectToAnimationOptions","undefined","initialPlay","type","__","play","reverse","playState","pause","progress","createTransitionHandler","effectId","wixInteractElement","parentElement","toggleEffect","method","addClickHandler","source","target","handler","once","transition","transitionProperties","cleanup","removeEventListener","handlerObj","addHandlerToMap","addEventListener","passive","removeClickHandler","removeElementFromHandlerMap","_default","exports","default","add","remove"],"sources":["../../../src/handlers/click.ts"],"sourcesContent":["import { getAnimation } from '@wix/motion';\nimport type { AnimationGroup } from '@wix/motion';\nimport type {\n TimeEffect,\n TransitionEffect,\n StateParams,\n HandlerObjectMap,\n IWixInteractElement,\n PointerTriggerParams,\n} from '../types';\nimport {\n effectToAnimationOptions,\n addHandlerToMap,\n removeElementFromHandlerMap,\n} from './utilities';\n\nconst handlerMap = new WeakMap() as HandlerObjectMap;\n\nfunction createTimeEffectHandler(\n element: HTMLElement,\n effect: TimeEffect,\n options: PointerTriggerParams,\n reducedMotion: boolean = false,\n) {\n const animation = getAnimation(\n element,\n effectToAnimationOptions(effect),\n undefined,\n reducedMotion,\n ) as AnimationGroup;\n let initialPlay = true;\n const type = options.type || 'alternate';\n\n return (__: MouseEvent) => {\n if (type === 'alternate') {\n if (initialPlay) {\n initialPlay = false;\n animation.play();\n } else {\n animation.reverse();\n }\n } else if (type === 'state') {\n if (initialPlay) {\n initialPlay = false;\n animation.play();\n } else {\n if (animation.playState === 'running') {\n animation.pause();\n } else if (animation.playState !== 'finished') {\n // 'idle' OR 'paused'\n animation.play();\n }\n }\n } else {\n // type === 'repeat'\n // type === 'once'\n animation.progress(0);\n animation.play();\n }\n };\n}\n\nfunction createTransitionHandler(\n element: HTMLElement,\n { effectId }: TransitionEffect & { effectId: string },\n options: StateParams,\n) {\n return (__: MouseEvent) => {\n const wixInteractElement = element.parentElement as IWixInteractElement;\n if (!wixInteractElement) {\n return;\n }\n\n wixInteractElement.toggleEffect(effectId, options.method || 'toggle');\n };\n}\n\nfunction addClickHandler(\n source: HTMLElement,\n target: HTMLElement,\n effect: TimeEffect | TransitionEffect,\n options: StateParams | PointerTriggerParams = {} as StateParams,\n reducedMotion: boolean = false,\n) {\n let handler: (event: MouseEvent) => void;\n let once = false;\n\n if (\n (effect as TransitionEffect).transition ||\n (effect as TransitionEffect).transitionProperties\n ) {\n handler = createTransitionHandler(\n target,\n effect as TransitionEffect & { effectId: string },\n options as StateParams,\n );\n } else {\n handler = createTimeEffectHandler(\n target,\n effect as TimeEffect,\n options as PointerTriggerParams,\n reducedMotion,\n );\n once = (options as PointerTriggerParams).type === 'once';\n }\n\n const cleanup = () => {\n source.removeEventListener('click', handler);\n };\n\n const handlerObj = { source, target, cleanup };\n\n addHandlerToMap(handlerMap, source, handlerObj);\n addHandlerToMap(handlerMap, target, handlerObj);\n\n source.addEventListener('click', handler, { passive: true, once });\n}\n\nfunction removeClickHandler(element: HTMLElement) {\n removeElementFromHandlerMap(handlerMap, element);\n}\n\nexport default {\n add: addClickHandler,\n remove: removeClickHandler,\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,8 +5,8 @@ exports.default = void 0;
|
|
|
5
5
|
var _motion = require("@wix/motion");
|
|
6
6
|
var _utilities = require("./utilities");
|
|
7
7
|
const handlerMap = new WeakMap();
|
|
8
|
-
function createTimeEffectHandler(element, effect, options) {
|
|
9
|
-
const animation = (0, _motion.getAnimation)(element, (0, _utilities.effectToAnimationOptions)(effect));
|
|
8
|
+
function createTimeEffectHandler(element, effect, options, reducedMotion = false) {
|
|
9
|
+
const animation = (0, _motion.getAnimation)(element, (0, _utilities.effectToAnimationOptions)(effect), undefined, reducedMotion);
|
|
10
10
|
const type = options.type || 'alternate';
|
|
11
11
|
let initialPlay = true;
|
|
12
12
|
return event => {
|
|
@@ -60,7 +60,7 @@ function createTransitionHandler(element, {
|
|
|
60
60
|
}
|
|
61
61
|
};
|
|
62
62
|
}
|
|
63
|
-
function addHoverHandler(source, target, effect, options = {}) {
|
|
63
|
+
function addHoverHandler(source, target, effect, options = {}, reducedMotion = false) {
|
|
64
64
|
let handler;
|
|
65
65
|
let isStateTrigger = false;
|
|
66
66
|
let once = false;
|
|
@@ -68,7 +68,7 @@ function addHoverHandler(source, target, effect, options = {}) {
|
|
|
68
68
|
handler = createTransitionHandler(target, effect, options);
|
|
69
69
|
isStateTrigger = true;
|
|
70
70
|
} else {
|
|
71
|
-
handler = createTimeEffectHandler(target, effect, options);
|
|
71
|
+
handler = createTimeEffectHandler(target, effect, options, reducedMotion);
|
|
72
72
|
once = options.type === 'once';
|
|
73
73
|
}
|
|
74
74
|
const cleanup = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_motion","require","_utilities","handlerMap","WeakMap","createTimeEffectHandler","element","effect","options","animation","getAnimation","effectToAnimationOptions","type","initialPlay","event","play","reverse","playState","progress","cancel","pause","createTransitionHandler","effectId","method","isToggle","wixInteractElement","parentElement","method_","toggleEffect","addHoverHandler","source","target","handler","isStateTrigger","once","transition","transitionProperties","cleanup","removeEventListener","handlerObj","addHandlerToMap","addEventListener","passive","addLeave","removeHoverHandler","removeElementFromHandlerMap","_default","exports","default","add","remove"],"sources":["../../../src/handlers/hover.ts"],"sourcesContent":["import type { AnimationGroup } from '@wix/motion';\nimport { getAnimation } from '@wix/motion';\nimport type {\n TimeEffect,\n TransitionEffect,\n StateParams,\n HandlerObjectMap,\n IWixInteractElement,\n PointerTriggerParams,\n} from '../types';\nimport {\n effectToAnimationOptions,\n addHandlerToMap,\n removeElementFromHandlerMap,\n} from './utilities';\n\nconst handlerMap = new WeakMap() as HandlerObjectMap;\n\nfunction createTimeEffectHandler(\n element: HTMLElement,\n effect: TimeEffect,\n options: PointerTriggerParams,\n) {\n const animation = getAnimation(\n element,\n effectToAnimationOptions(effect),\n ) as AnimationGroup;\n const type = options.type || 'alternate';\n let initialPlay = true;\n\n return (event: MouseEvent) => {\n if (event.type === 'mouseenter') {\n if (type === 'alternate') {\n if (initialPlay) {\n initialPlay = false;\n animation.play();\n } else {\n animation.reverse();\n }\n } else if (type === 'state') {\n if (animation.playState !== 'finished') {\n // 'idle' OR 'paused'\n animation.play();\n }\n } else {\n // type === 'repeat'\n // type === 'once'\n animation.progress(0);\n animation.play();\n }\n } else if (event.type === 'mouseleave') {\n if (type === 'alternate') {\n animation.reverse();\n } else if (type === 'repeat') {\n animation.cancel();\n } else if (type === 'state') {\n if (animation.playState === 'running') {\n animation.pause();\n }\n }\n }\n };\n}\n\nfunction createTransitionHandler(\n element: HTMLElement,\n { effectId }: TransitionEffect & { effectId: string },\n options: StateParams,\n) {\n const method = options.method || 'toggle';\n const isToggle = method === 'toggle';\n\n return (event: MouseEvent) => {\n const wixInteractElement = element.parentElement as IWixInteractElement;\n if (!wixInteractElement) {\n return;\n }\n\n if (event.type === 'mouseenter') {\n const method_ = isToggle ? 'add' : method;\n wixInteractElement.toggleEffect(effectId, method_);\n } else if (event.type === 'mouseleave' && isToggle) {\n wixInteractElement.toggleEffect(effectId, 'remove');\n }\n };\n}\n\nfunction addHoverHandler(\n source: HTMLElement,\n target: HTMLElement,\n effect: TransitionEffect | TimeEffect,\n options: StateParams | PointerTriggerParams = {},\n) {\n let handler: (event: MouseEvent) => void;\n let isStateTrigger = false;\n let once = false;\n\n if (\n (effect as TransitionEffect).transition ||\n (effect as TransitionEffect).transitionProperties\n ) {\n handler = createTransitionHandler(\n target,\n effect as TransitionEffect & { effectId: string },\n options as StateParams,\n );\n isStateTrigger = true;\n } else {\n handler = createTimeEffectHandler(\n target,\n effect as TimeEffect,\n options as PointerTriggerParams,\n );\n once = (options as PointerTriggerParams).type === 'once';\n }\n\n const cleanup = () => {\n source.removeEventListener('mouseenter', handler);\n source.removeEventListener('mouseleave', handler);\n };\n\n const handlerObj = { source, target, cleanup };\n\n addHandlerToMap(handlerMap, source, handlerObj);\n addHandlerToMap(handlerMap, target, handlerObj);\n\n source.addEventListener('mouseenter', handler, { passive: true, once });\n\n const addLeave = isStateTrigger\n ? ((options as StateParams).method || 'toggle') === 'toggle'\n : (options as PointerTriggerParams).type !== 'once';\n if (addLeave) {\n source.addEventListener('mouseleave', handler, { passive: true });\n }\n}\n\nfunction removeHoverHandler(element: HTMLElement) {\n removeElementFromHandlerMap(handlerMap, element);\n}\n\nexport default {\n add: addHoverHandler,\n remove: removeHoverHandler,\n};\n"],"mappings":";;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AASA,IAAAC,UAAA,GAAAD,OAAA;AAMA,MAAME,UAAU,GAAG,IAAIC,OAAO,CAAC,CAAqB;AAEpD,SAASC,uBAAuBA,CAC9BC,OAAoB,EACpBC,MAAkB,EAClBC,OAA6B,
|
|
1
|
+
{"version":3,"names":["_motion","require","_utilities","handlerMap","WeakMap","createTimeEffectHandler","element","effect","options","reducedMotion","animation","getAnimation","effectToAnimationOptions","undefined","type","initialPlay","event","play","reverse","playState","progress","cancel","pause","createTransitionHandler","effectId","method","isToggle","wixInteractElement","parentElement","method_","toggleEffect","addHoverHandler","source","target","handler","isStateTrigger","once","transition","transitionProperties","cleanup","removeEventListener","handlerObj","addHandlerToMap","addEventListener","passive","addLeave","removeHoverHandler","removeElementFromHandlerMap","_default","exports","default","add","remove"],"sources":["../../../src/handlers/hover.ts"],"sourcesContent":["import type { AnimationGroup } from '@wix/motion';\nimport { getAnimation } from '@wix/motion';\nimport type {\n TimeEffect,\n TransitionEffect,\n StateParams,\n HandlerObjectMap,\n IWixInteractElement,\n PointerTriggerParams,\n} from '../types';\nimport {\n effectToAnimationOptions,\n addHandlerToMap,\n removeElementFromHandlerMap,\n} from './utilities';\n\nconst handlerMap = new WeakMap() as HandlerObjectMap;\n\nfunction createTimeEffectHandler(\n element: HTMLElement,\n effect: TimeEffect,\n options: PointerTriggerParams,\n reducedMotion: boolean = false,\n) {\n const animation = getAnimation(\n element,\n effectToAnimationOptions(effect),\n undefined,\n reducedMotion,\n ) as AnimationGroup;\n const type = options.type || 'alternate';\n let initialPlay = true;\n\n return (event: MouseEvent) => {\n if (event.type === 'mouseenter') {\n if (type === 'alternate') {\n if (initialPlay) {\n initialPlay = false;\n animation.play();\n } else {\n animation.reverse();\n }\n } else if (type === 'state') {\n if (animation.playState !== 'finished') {\n // 'idle' OR 'paused'\n animation.play();\n }\n } else {\n // type === 'repeat'\n // type === 'once'\n animation.progress(0);\n animation.play();\n }\n } else if (event.type === 'mouseleave') {\n if (type === 'alternate') {\n animation.reverse();\n } else if (type === 'repeat') {\n animation.cancel();\n } else if (type === 'state') {\n if (animation.playState === 'running') {\n animation.pause();\n }\n }\n }\n };\n}\n\nfunction createTransitionHandler(\n element: HTMLElement,\n { effectId }: TransitionEffect & { effectId: string },\n options: StateParams,\n) {\n const method = options.method || 'toggle';\n const isToggle = method === 'toggle';\n\n return (event: MouseEvent) => {\n const wixInteractElement = element.parentElement as IWixInteractElement;\n if (!wixInteractElement) {\n return;\n }\n\n if (event.type === 'mouseenter') {\n const method_ = isToggle ? 'add' : method;\n wixInteractElement.toggleEffect(effectId, method_);\n } else if (event.type === 'mouseleave' && isToggle) {\n wixInteractElement.toggleEffect(effectId, 'remove');\n }\n };\n}\n\nfunction addHoverHandler(\n source: HTMLElement,\n target: HTMLElement,\n effect: TransitionEffect | TimeEffect,\n options: StateParams | PointerTriggerParams = {},\n reducedMotion: boolean = false,\n) {\n let handler: (event: MouseEvent) => void;\n let isStateTrigger = false;\n let once = false;\n\n if (\n (effect as TransitionEffect).transition ||\n (effect as TransitionEffect).transitionProperties\n ) {\n handler = createTransitionHandler(\n target,\n effect as TransitionEffect & { effectId: string },\n options as StateParams,\n );\n isStateTrigger = true;\n } else {\n handler = createTimeEffectHandler(\n target,\n effect as TimeEffect,\n options as PointerTriggerParams,\n reducedMotion,\n );\n once = (options as PointerTriggerParams).type === 'once';\n }\n\n const cleanup = () => {\n source.removeEventListener('mouseenter', handler);\n source.removeEventListener('mouseleave', handler);\n };\n\n const handlerObj = { source, target, cleanup };\n\n addHandlerToMap(handlerMap, source, handlerObj);\n addHandlerToMap(handlerMap, target, handlerObj);\n\n source.addEventListener('mouseenter', handler, { passive: true, once });\n\n const addLeave = isStateTrigger\n ? ((options as StateParams).method || 'toggle') === 'toggle'\n : (options as PointerTriggerParams).type !== 'once';\n if (addLeave) {\n source.addEventListener('mouseleave', handler, { passive: true });\n }\n}\n\nfunction removeHoverHandler(element: HTMLElement) {\n removeElementFromHandlerMap(handlerMap, element);\n}\n\nexport default {\n add: addHoverHandler,\n remove: removeHoverHandler,\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,7 +6,10 @@ var _motion = require("@wix/motion");
|
|
|
6
6
|
var _kuliso = require("kuliso");
|
|
7
7
|
var _utilities = require("./utilities");
|
|
8
8
|
const pointerManagerMap = new WeakMap();
|
|
9
|
-
function addPointerMoveHandler(source, target, effect, options = {}) {
|
|
9
|
+
function addPointerMoveHandler(source, target, effect, options = {}, reducedMotion = false) {
|
|
10
|
+
if (reducedMotion) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
10
13
|
const triggerParams = {
|
|
11
14
|
trigger: 'pointer-move',
|
|
12
15
|
element: source
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_motion","require","_kuliso","_utilities","pointerManagerMap","WeakMap","addPointerMoveHandler","source","target","effect","options","triggerParams","trigger","element","scene","getScrubScene","effectToAnimationOptions","pointer","Pointer","root","hitArea","document","documentElement","scenes","Array","isArray","cleanup","destroy","handlerObj","addHandlerToMap","start","removePointerMoveHandler","removeElementFromHandlerMap","_default","exports","default","add","remove"],"sources":["../../../src/handlers/pointerMove.ts"],"sourcesContent":["import { getScrubScene } from '@wix/motion';\nimport { Pointer } from 'kuliso';\nimport type {\n PointerMoveParams,\n ScrubEffect,\n HandlerObjectMap,\n} from '../types';\nimport {\n effectToAnimationOptions,\n addHandlerToMap,\n removeElementFromHandlerMap,\n} from './utilities';\n\nconst pointerManagerMap = new WeakMap() as HandlerObjectMap;\n\nfunction addPointerMoveHandler(\n source: HTMLElement,\n target: HTMLElement,\n effect: ScrubEffect,\n options: PointerMoveParams = {},\n) {\n const triggerParams = {\n trigger: 'pointer-move' as const,\n element: source,\n };\n\n const scene = getScrubScene(\n target,\n effectToAnimationOptions(effect),\n triggerParams,\n );\n\n if (scene) {\n const pointer = new Pointer({\n root: options.hitArea === 'root' ? document.documentElement : source,\n scenes: Array.isArray(scene) ? scene : [scene],\n });\n const cleanup = () => {\n pointer.destroy();\n };\n\n const handlerObj = { source, target, cleanup };\n\n addHandlerToMap(pointerManagerMap, source, handlerObj);\n addHandlerToMap(pointerManagerMap, target, handlerObj);\n\n pointer.start();\n }\n}\n\nfunction removePointerMoveHandler(element: HTMLElement) {\n removeElementFromHandlerMap(pointerManagerMap, element);\n}\n\nexport default {\n add: addPointerMoveHandler,\n remove: removePointerMoveHandler,\n};\n"],"mappings":";;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAMA,IAAAE,UAAA,GAAAF,OAAA;AAMA,MAAMG,iBAAiB,GAAG,IAAIC,OAAO,CAAC,CAAqB;AAE3D,SAASC,qBAAqBA,CAC5BC,MAAmB,EACnBC,MAAmB,EACnBC,MAAmB,EACnBC,OAA0B,GAAG,CAAC,CAAC,EAC/
|
|
1
|
+
{"version":3,"names":["_motion","require","_kuliso","_utilities","pointerManagerMap","WeakMap","addPointerMoveHandler","source","target","effect","options","reducedMotion","triggerParams","trigger","element","scene","getScrubScene","effectToAnimationOptions","pointer","Pointer","root","hitArea","document","documentElement","scenes","Array","isArray","cleanup","destroy","handlerObj","addHandlerToMap","start","removePointerMoveHandler","removeElementFromHandlerMap","_default","exports","default","add","remove"],"sources":["../../../src/handlers/pointerMove.ts"],"sourcesContent":["import { getScrubScene } from '@wix/motion';\nimport { Pointer } from 'kuliso';\nimport type {\n PointerMoveParams,\n ScrubEffect,\n HandlerObjectMap,\n} from '../types';\nimport {\n effectToAnimationOptions,\n addHandlerToMap,\n removeElementFromHandlerMap,\n} from './utilities';\n\nconst pointerManagerMap = new WeakMap() as HandlerObjectMap;\n\nfunction addPointerMoveHandler(\n source: HTMLElement,\n target: HTMLElement,\n effect: ScrubEffect,\n options: PointerMoveParams = {},\n reducedMotion: boolean = false,\n) {\n if (reducedMotion) {\n return;\n }\n\n const triggerParams = {\n trigger: 'pointer-move' as const,\n element: source,\n };\n\n const scene = getScrubScene(\n target,\n effectToAnimationOptions(effect),\n triggerParams,\n );\n\n if (scene) {\n const pointer = new Pointer({\n root: options.hitArea === 'root' ? document.documentElement : source,\n scenes: Array.isArray(scene) ? scene : [scene],\n });\n const cleanup = () => {\n pointer.destroy();\n };\n\n const handlerObj = { source, target, cleanup };\n\n addHandlerToMap(pointerManagerMap, source, handlerObj);\n addHandlerToMap(pointerManagerMap, target, handlerObj);\n\n pointer.start();\n }\n}\n\nfunction removePointerMoveHandler(element: HTMLElement) {\n removeElementFromHandlerMap(pointerManagerMap, element);\n}\n\nexport default {\n add: addPointerMoveHandler,\n remove: removePointerMoveHandler,\n};\n"],"mappings":";;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAMA,IAAAE,UAAA,GAAAF,OAAA;AAMA,MAAMG,iBAAiB,GAAG,IAAIC,OAAO,CAAC,CAAqB;AAE3D,SAASC,qBAAqBA,CAC5BC,MAAmB,EACnBC,MAAmB,EACnBC,MAAmB,EACnBC,OAA0B,GAAG,CAAC,CAAC,EAC/BC,aAAsB,GAAG,KAAK,EAC9B;EACA,IAAIA,aAAa,EAAE;IACjB;EACF;EAEA,MAAMC,aAAa,GAAG;IACpBC,OAAO,EAAE,cAAuB;IAChCC,OAAO,EAAEP;EACX,CAAC;EAED,MAAMQ,KAAK,GAAG,IAAAC,qBAAa,EACzBR,MAAM,EACN,IAAAS,mCAAwB,EAACR,MAAM,CAAC,EAChCG,aACF,CAAC;EAED,IAAIG,KAAK,EAAE;IACT,MAAMG,OAAO,GAAG,IAAIC,eAAO,CAAC;MAC1BC,IAAI,EAAEV,OAAO,CAACW,OAAO,KAAK,MAAM,GAAGC,QAAQ,CAACC,eAAe,GAAGhB,MAAM;MACpEiB,MAAM,EAAEC,KAAK,CAACC,OAAO,CAACX,KAAK,CAAC,GAAGA,KAAK,GAAG,CAACA,KAAK;IAC/C,CAAC,CAAC;IACF,MAAMY,OAAO,GAAGA,CAAA,KAAM;MACpBT,OAAO,CAACU,OAAO,CAAC,CAAC;IACnB,CAAC;IAED,MAAMC,UAAU,GAAG;MAAEtB,MAAM;MAAEC,MAAM;MAAEmB;IAAQ,CAAC;IAE9C,IAAAG,0BAAe,EAAC1B,iBAAiB,EAAEG,MAAM,EAAEsB,UAAU,CAAC;IACtD,IAAAC,0BAAe,EAAC1B,iBAAiB,EAAEI,MAAM,EAAEqB,UAAU,CAAC;IAEtDX,OAAO,CAACa,KAAK,CAAC,CAAC;EACjB;AACF;AAEA,SAASC,wBAAwBA,CAAClB,OAAoB,EAAE;EACtD,IAAAmB,sCAA2B,EAAC7B,iBAAiB,EAAEU,OAAO,CAAC;AACzD;AAAC,IAAAoB,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc;EACbC,GAAG,EAAE/B,qBAAqB;EAC1BgC,MAAM,EAAEN;AACV,CAAC","ignoreList":[]}
|
|
@@ -36,9 +36,9 @@ function getObserver(options) {
|
|
|
36
36
|
observers[key] = observer;
|
|
37
37
|
return observer;
|
|
38
38
|
}
|
|
39
|
-
function addViewEnterHandler(source, target, effect, options = {}) {
|
|
39
|
+
function addViewEnterHandler(source, target, effect, options = {}, reducedMotion = false) {
|
|
40
40
|
const observer = getObserver(options);
|
|
41
|
-
const animation = (0, _motion.getAnimation)(target, (0, _utilities.effectToAnimationOptions)(effect));
|
|
41
|
+
const animation = (0, _motion.getAnimation)(target, (0, _utilities.effectToAnimationOptions)(effect), undefined, reducedMotion);
|
|
42
42
|
if (animation) {
|
|
43
43
|
animation.onFinish(() => {
|
|
44
44
|
const endEvent = new Event('animationend');
|
|
@@ -47,8 +47,10 @@ function addViewEnterHandler(source, target, effect, options = {}) {
|
|
|
47
47
|
}
|
|
48
48
|
const handler = () => {
|
|
49
49
|
animation.play(() => {
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
if (animation.animations[0] instanceof Animation) {
|
|
51
|
+
// hack this here until we solve initial state properly
|
|
52
|
+
target.dataset.motionEnter = 'done';
|
|
53
|
+
}
|
|
52
54
|
});
|
|
53
55
|
};
|
|
54
56
|
const cleanup = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_motion","require","_utilities","observers","handlerMap","WeakMap","getObserver","options","key","JSON","stringify","observer","IntersectionObserver","entries","forEach","entry","isIntersecting","handlers","get","target","source","handler","type","unobserve","root","rootMargin","inset","threshold","addViewEnterHandler","effect","animation","getAnimation","effectToAnimationOptions","onFinish","endEvent","Event","dispatchEvent","play","dataset","motionEnter","cleanup","cancel","handlerObj","addHandlerToMap","observe","removeViewEnterHandler","element","removeElementFromHandlerMap","_default","exports","default","add","remove"],"sources":["../../../src/handlers/viewEnter.ts"],"sourcesContent":["import type { AnimationGroup } from '@wix/motion';\nimport { getAnimation } from '@wix/motion';\nimport type { TimeEffect, HandlerObjectMap, ViewEnterParams } from '../types';\nimport {\n effectToAnimationOptions,\n addHandlerToMap,\n removeElementFromHandlerMap,\n} from './utilities';\n\nconst observers: Record<string, IntersectionObserver> = {};\nconst handlerMap = new WeakMap() as HandlerObjectMap;\n\nfunction getObserver(options: ViewEnterParams) {\n const key = JSON.stringify(options);\n\n if (observers[key]) {\n return observers[key];\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n const handlers = handlerMap.get(entry.target as HTMLElement);\n\n handlers?.forEach(({ source, handler }) => {\n if (source === entry.target) {\n handler!();\n }\n });\n\n if (options.type === 'once') {\n observer.unobserve(entry.target);\n }\n }\n });\n },\n {\n root: null,\n rootMargin: options.inset\n ? `${options.inset} 0px ${options.inset}`\n : '0px',\n threshold: options.threshold,\n },\n );\n\n observers[key] = observer;\n\n return observer;\n}\n\nfunction addViewEnterHandler(\n source: HTMLElement,\n target: HTMLElement,\n effect: TimeEffect,\n options: ViewEnterParams = {},\n) {\n const observer = getObserver(options);\n const animation = getAnimation(\n target,\n effectToAnimationOptions(effect),\n ) as AnimationGroup;\n\n if (animation) {\n animation.onFinish(() => {\n const endEvent = new Event('animationend');\n target.dispatchEvent(endEvent);\n });\n }\n\n const handler = () => {\n animation.play(() => {\n // hack this here until we solve initial state properly\n
|
|
1
|
+
{"version":3,"names":["_motion","require","_utilities","observers","handlerMap","WeakMap","getObserver","options","key","JSON","stringify","observer","IntersectionObserver","entries","forEach","entry","isIntersecting","handlers","get","target","source","handler","type","unobserve","root","rootMargin","inset","threshold","addViewEnterHandler","effect","reducedMotion","animation","getAnimation","effectToAnimationOptions","undefined","onFinish","endEvent","Event","dispatchEvent","play","animations","Animation","dataset","motionEnter","cleanup","cancel","handlerObj","addHandlerToMap","observe","removeViewEnterHandler","element","removeElementFromHandlerMap","_default","exports","default","add","remove"],"sources":["../../../src/handlers/viewEnter.ts"],"sourcesContent":["import type { AnimationGroup } from '@wix/motion';\nimport { getAnimation } from '@wix/motion';\nimport type { TimeEffect, HandlerObjectMap, ViewEnterParams } from '../types';\nimport {\n effectToAnimationOptions,\n addHandlerToMap,\n removeElementFromHandlerMap,\n} from './utilities';\n\nconst observers: Record<string, IntersectionObserver> = {};\nconst handlerMap = new WeakMap() as HandlerObjectMap;\n\nfunction getObserver(options: ViewEnterParams) {\n const key = JSON.stringify(options);\n\n if (observers[key]) {\n return observers[key];\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n const handlers = handlerMap.get(entry.target as HTMLElement);\n\n handlers?.forEach(({ source, handler }) => {\n if (source === entry.target) {\n handler!();\n }\n });\n\n if (options.type === 'once') {\n observer.unobserve(entry.target);\n }\n }\n });\n },\n {\n root: null,\n rootMargin: options.inset\n ? `${options.inset} 0px ${options.inset}`\n : '0px',\n threshold: options.threshold,\n },\n );\n\n observers[key] = observer;\n\n return observer;\n}\n\nfunction addViewEnterHandler(\n source: HTMLElement,\n target: HTMLElement,\n effect: TimeEffect,\n options: ViewEnterParams = {},\n reducedMotion: boolean = false,\n) {\n const observer = getObserver(options);\n const animation = getAnimation(\n target,\n effectToAnimationOptions(effect),\n undefined,\n reducedMotion,\n ) as AnimationGroup;\n\n if (animation) {\n animation.onFinish(() => {\n const endEvent = new Event('animationend');\n target.dispatchEvent(endEvent);\n });\n }\n\n const handler = () => {\n animation.play(() => {\n if (animation.animations[0] instanceof Animation) {\n // hack this here until we solve initial state properly\n target.dataset.motionEnter = 'done';\n }\n });\n };\n const cleanup = () => {\n observer.unobserve(source);\n animation.cancel();\n };\n const handlerObj = { source, target, handler, cleanup };\n\n addHandlerToMap(handlerMap, source, handlerObj);\n addHandlerToMap(handlerMap, target, handlerObj);\n\n observer.observe(source);\n}\n\nfunction removeViewEnterHandler(element: HTMLElement) {\n removeElementFromHandlerMap(handlerMap, element);\n}\n\nexport default {\n add: addViewEnterHandler,\n remove: removeViewEnterHandler,\n};\n"],"mappings":";;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AAMA,MAAME,SAA+C,GAAG,CAAC,CAAC;AAC1D,MAAMC,UAAU,GAAG,IAAIC,OAAO,CAAC,CAAqB;AAEpD,SAASC,WAAWA,CAACC,OAAwB,EAAE;EAC7C,MAAMC,GAAG,GAAGC,IAAI,CAACC,SAAS,CAACH,OAAO,CAAC;EAEnC,IAAIJ,SAAS,CAACK,GAAG,CAAC,EAAE;IAClB,OAAOL,SAAS,CAACK,GAAG,CAAC;EACvB;EAEA,MAAMG,QAAQ,GAAG,IAAIC,oBAAoB,CACtCC,OAAO,IAAK;IACXA,OAAO,CAACC,OAAO,CAAEC,KAAK,IAAK;MACzB,IAAIA,KAAK,CAACC,cAAc,EAAE;QACxB,MAAMC,QAAQ,GAAGb,UAAU,CAACc,GAAG,CAACH,KAAK,CAACI,MAAqB,CAAC;QAE5DF,QAAQ,YAARA,QAAQ,CAAEH,OAAO,CAAC,CAAC;UAAEM,MAAM;UAAEC;QAAQ,CAAC,KAAK;UACzC,IAAID,MAAM,KAAKL,KAAK,CAACI,MAAM,EAAE;YAC3BE,OAAO,CAAE,CAAC;UACZ;QACF,CAAC,CAAC;QAEF,IAAId,OAAO,CAACe,IAAI,KAAK,MAAM,EAAE;UAC3BX,QAAQ,CAACY,SAAS,CAACR,KAAK,CAACI,MAAM,CAAC;QAClC;MACF;IACF,CAAC,CAAC;EACJ,CAAC,EACD;IACEK,IAAI,EAAE,IAAI;IACVC,UAAU,EAAElB,OAAO,CAACmB,KAAK,GACrB,GAAGnB,OAAO,CAACmB,KAAK,QAAQnB,OAAO,CAACmB,KAAK,EAAE,GACvC,KAAK;IACTC,SAAS,EAAEpB,OAAO,CAACoB;EACrB,CACF,CAAC;EAEDxB,SAAS,CAACK,GAAG,CAAC,GAAGG,QAAQ;EAEzB,OAAOA,QAAQ;AACjB;AAEA,SAASiB,mBAAmBA,CAC1BR,MAAmB,EACnBD,MAAmB,EACnBU,MAAkB,EAClBtB,OAAwB,GAAG,CAAC,CAAC,EAC7BuB,aAAsB,GAAG,KAAK,EAC9B;EACA,MAAMnB,QAAQ,GAAGL,WAAW,CAACC,OAAO,CAAC;EACrC,MAAMwB,SAAS,GAAG,IAAAC,oBAAY,EAC5Bb,MAAM,EACN,IAAAc,mCAAwB,EAACJ,MAAM,CAAC,EAChCK,SAAS,EACTJ,aACF,CAAmB;EAEnB,IAAIC,SAAS,EAAE;IACbA,SAAS,CAACI,QAAQ,CAAC,MAAM;MACvB,MAAMC,QAAQ,GAAG,IAAIC,KAAK,CAAC,cAAc,CAAC;MAC1ClB,MAAM,CAACmB,aAAa,CAACF,QAAQ,CAAC;IAChC,CAAC,CAAC;EACJ;EAEA,MAAMf,OAAO,GAAGA,CAAA,KAAM;IACpBU,SAAS,CAACQ,IAAI,CAAC,MAAM;MACnB,IAAIR,SAAS,CAACS,UAAU,CAAC,CAAC,CAAC,YAAYC,SAAS,EAAE;QAChD;QACAtB,MAAM,CAACuB,OAAO,CAACC,WAAW,GAAG,MAAM;MACrC;IACF,CAAC,CAAC;EACJ,CAAC;EACD,MAAMC,OAAO,GAAGA,CAAA,KAAM;IACpBjC,QAAQ,CAACY,SAAS,CAACH,MAAM,CAAC;IAC1BW,SAAS,CAACc,MAAM,CAAC,CAAC;EACpB,CAAC;EACD,MAAMC,UAAU,GAAG;IAAE1B,MAAM;IAAED,MAAM;IAAEE,OAAO;IAAEuB;EAAQ,CAAC;EAEvD,IAAAG,0BAAe,EAAC3C,UAAU,EAAEgB,MAAM,EAAE0B,UAAU,CAAC;EAC/C,IAAAC,0BAAe,EAAC3C,UAAU,EAAEe,MAAM,EAAE2B,UAAU,CAAC;EAE/CnC,QAAQ,CAACqC,OAAO,CAAC5B,MAAM,CAAC;AAC1B;AAEA,SAAS6B,sBAAsBA,CAACC,OAAoB,EAAE;EACpD,IAAAC,sCAA2B,EAAC/C,UAAU,EAAE8C,OAAO,CAAC;AAClD;AAAC,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc;EACbC,GAAG,EAAE3B,mBAAmB;EACxB4B,MAAM,EAAEP;AACV,CAAC","ignoreList":[]}
|
|
@@ -6,7 +6,10 @@ var _motion = require("@wix/motion");
|
|
|
6
6
|
var _fizban = require("fizban");
|
|
7
7
|
var _utilities = require("./utilities");
|
|
8
8
|
const scrollManagerMap = new WeakMap();
|
|
9
|
-
function addViewProgressHandler(source, target, effect, __) {
|
|
9
|
+
function addViewProgressHandler(source, target, effect, __, reducedMotion = false) {
|
|
10
|
+
if (reducedMotion) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
10
13
|
const triggerParams = {
|
|
11
14
|
trigger: 'view-progress',
|
|
12
15
|
element: source
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_motion","require","_fizban","_utilities","scrollManagerMap","WeakMap","addViewProgressHandler","source","target","effect","__","triggerParams","trigger","element","effectOptions","effectToAnimationOptions","window","animationGroup","getWebAnimation","play","scene","getScrubScene","scenes","Array","isArray","scroll","Scroll","viewSource","observeViewportEntry","observeViewportResize","observeSourcesResize","root","document","documentElement","cleanup","destroy","handlerObj","addHandlerToMap","Promise","all","map","s","ready","resolve","then","start","removeViewProgressHandler","removeElementFromHandlerMap","_default","exports","default","add","remove"],"sources":["../../../src/handlers/viewProgress.ts"],"sourcesContent":["import type { ScrubScrollScene } from '@wix/motion';\nimport { getWebAnimation, getScrubScene } from '@wix/motion';\nimport { Scroll } from 'fizban';\nimport type { ViewEnterParams, ScrubEffect, HandlerObjectMap } from '../types';\nimport {\n effectToAnimationOptions,\n addHandlerToMap,\n removeElementFromHandlerMap,\n} from './utilities';\n\nconst scrollManagerMap = new WeakMap() as HandlerObjectMap;\n\nfunction addViewProgressHandler(\n source: HTMLElement,\n target: HTMLElement,\n effect: ScrubEffect,\n __: ViewEnterParams,\n): void {\n const triggerParams = {\n trigger: 'view-progress' as const,\n element: source,\n };\n\n const effectOptions = effectToAnimationOptions(effect);\n\n if ('ViewTimeline' in window) {\n // Use ViewTimeline for modern browsers\n const animationGroup = getWebAnimation(\n target,\n effectOptions,\n triggerParams,\n );\n\n if (animationGroup) {\n (animationGroup as any).play();\n }\n } else {\n const scene = getScrubScene(target, effectOptions, triggerParams);\n\n if (scene) {\n const scenes = Array.isArray(scene) ? scene : [scene];\n const scroll = new Scroll({\n viewSource: source,\n scenes,\n observeViewportEntry: false,\n observeViewportResize: false,\n observeSourcesResize: false,\n root: document.documentElement,\n });\n\n const cleanup = () => {\n scroll.destroy();\n };\n\n const handlerObj = { source, target, cleanup };\n\n addHandlerToMap(scrollManagerMap, source, handlerObj);\n addHandlerToMap(scrollManagerMap, target, handlerObj);\n\n Promise.all(\n (scenes as ScrubScrollScene[]).map((s) => s.ready || Promise.resolve()),\n ).then(() => {\n scroll.start();\n });\n }\n }\n}\n\nfunction removeViewProgressHandler(element: HTMLElement): void {\n removeElementFromHandlerMap(scrollManagerMap, element);\n}\n\nexport default {\n add: addViewProgressHandler,\n remove: removeViewProgressHandler,\n};\n"],"mappings":";;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAEA,IAAAE,UAAA,GAAAF,OAAA;AAMA,MAAMG,gBAAgB,GAAG,IAAIC,OAAO,CAAC,CAAqB;AAE1D,SAASC,sBAAsBA,CAC7BC,MAAmB,EACnBC,MAAmB,EACnBC,MAAmB,EACnBC,EAAmB,
|
|
1
|
+
{"version":3,"names":["_motion","require","_fizban","_utilities","scrollManagerMap","WeakMap","addViewProgressHandler","source","target","effect","__","reducedMotion","triggerParams","trigger","element","effectOptions","effectToAnimationOptions","window","animationGroup","getWebAnimation","play","scene","getScrubScene","scenes","Array","isArray","scroll","Scroll","viewSource","observeViewportEntry","observeViewportResize","observeSourcesResize","root","document","documentElement","cleanup","destroy","handlerObj","addHandlerToMap","Promise","all","map","s","ready","resolve","then","start","removeViewProgressHandler","removeElementFromHandlerMap","_default","exports","default","add","remove"],"sources":["../../../src/handlers/viewProgress.ts"],"sourcesContent":["import type { ScrubScrollScene } from '@wix/motion';\nimport { getWebAnimation, getScrubScene } from '@wix/motion';\nimport { Scroll } from 'fizban';\nimport type { ViewEnterParams, ScrubEffect, HandlerObjectMap } from '../types';\nimport {\n effectToAnimationOptions,\n addHandlerToMap,\n removeElementFromHandlerMap,\n} from './utilities';\n\nconst scrollManagerMap = new WeakMap() as HandlerObjectMap;\n\nfunction addViewProgressHandler(\n source: HTMLElement,\n target: HTMLElement,\n effect: ScrubEffect,\n __: ViewEnterParams,\n reducedMotion: boolean = false,\n): void {\n if (reducedMotion) {\n return;\n }\n\n const triggerParams = {\n trigger: 'view-progress' as const,\n element: source,\n };\n\n const effectOptions = effectToAnimationOptions(effect);\n\n if ('ViewTimeline' in window) {\n // Use ViewTimeline for modern browsers\n const animationGroup = getWebAnimation(\n target,\n effectOptions,\n triggerParams,\n );\n\n if (animationGroup) {\n (animationGroup as any).play();\n }\n } else {\n const scene = getScrubScene(target, effectOptions, triggerParams);\n\n if (scene) {\n const scenes = Array.isArray(scene) ? scene : [scene];\n const scroll = new Scroll({\n viewSource: source,\n scenes,\n observeViewportEntry: false,\n observeViewportResize: false,\n observeSourcesResize: false,\n root: document.documentElement,\n });\n\n const cleanup = () => {\n scroll.destroy();\n };\n\n const handlerObj = { source, target, cleanup };\n\n addHandlerToMap(scrollManagerMap, source, handlerObj);\n addHandlerToMap(scrollManagerMap, target, handlerObj);\n\n Promise.all(\n (scenes as ScrubScrollScene[]).map((s) => s.ready || Promise.resolve()),\n ).then(() => {\n scroll.start();\n });\n }\n }\n}\n\nfunction removeViewProgressHandler(element: HTMLElement): void {\n removeElementFromHandlerMap(scrollManagerMap, element);\n}\n\nexport default {\n add: addViewProgressHandler,\n remove: removeViewProgressHandler,\n};\n"],"mappings":";;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAEA,IAAAE,UAAA,GAAAF,OAAA;AAMA,MAAMG,gBAAgB,GAAG,IAAIC,OAAO,CAAC,CAAqB;AAE1D,SAASC,sBAAsBA,CAC7BC,MAAmB,EACnBC,MAAmB,EACnBC,MAAmB,EACnBC,EAAmB,EACnBC,aAAsB,GAAG,KAAK,EACxB;EACN,IAAIA,aAAa,EAAE;IACjB;EACF;EAEA,MAAMC,aAAa,GAAG;IACpBC,OAAO,EAAE,eAAwB;IACjCC,OAAO,EAAEP;EACX,CAAC;EAED,MAAMQ,aAAa,GAAG,IAAAC,mCAAwB,EAACP,MAAM,CAAC;EAEtD,IAAI,cAAc,IAAIQ,MAAM,EAAE;IAC5B;IACA,MAAMC,cAAc,GAAG,IAAAC,uBAAe,EACpCX,MAAM,EACNO,aAAa,EACbH,aACF,CAAC;IAED,IAAIM,cAAc,EAAE;MACjBA,cAAc,CAASE,IAAI,CAAC,CAAC;IAChC;EACF,CAAC,MAAM;IACL,MAAMC,KAAK,GAAG,IAAAC,qBAAa,EAACd,MAAM,EAAEO,aAAa,EAAEH,aAAa,CAAC;IAEjE,IAAIS,KAAK,EAAE;MACT,MAAME,MAAM,GAAGC,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,GAAGA,KAAK,GAAG,CAACA,KAAK,CAAC;MACrD,MAAMK,MAAM,GAAG,IAAIC,cAAM,CAAC;QACxBC,UAAU,EAAErB,MAAM;QAClBgB,MAAM;QACNM,oBAAoB,EAAE,KAAK;QAC3BC,qBAAqB,EAAE,KAAK;QAC5BC,oBAAoB,EAAE,KAAK;QAC3BC,IAAI,EAAEC,QAAQ,CAACC;MACjB,CAAC,CAAC;MAEF,MAAMC,OAAO,GAAGA,CAAA,KAAM;QACpBT,MAAM,CAACU,OAAO,CAAC,CAAC;MAClB,CAAC;MAED,MAAMC,UAAU,GAAG;QAAE9B,MAAM;QAAEC,MAAM;QAAE2B;MAAQ,CAAC;MAE9C,IAAAG,0BAAe,EAAClC,gBAAgB,EAAEG,MAAM,EAAE8B,UAAU,CAAC;MACrD,IAAAC,0BAAe,EAAClC,gBAAgB,EAAEI,MAAM,EAAE6B,UAAU,CAAC;MAErDE,OAAO,CAACC,GAAG,CACRjB,MAAM,CAAwBkB,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,KAAK,IAAIJ,OAAO,CAACK,OAAO,CAAC,CAAC,CACxE,CAAC,CAACC,IAAI,CAAC,MAAM;QACXnB,MAAM,CAACoB,KAAK,CAAC,CAAC;MAChB,CAAC,CAAC;IACJ;EACF;AACF;AAEA,SAASC,yBAAyBA,CAACjC,OAAoB,EAAQ;EAC7D,IAAAkC,sCAA2B,EAAC5C,gBAAgB,EAAEU,OAAO,CAAC;AACxD;AAAC,IAAAmC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc;EACbC,GAAG,EAAE9C,sBAAsB;EAC3B+C,MAAM,EAAEN;AACV,CAAC","ignoreList":[]}
|
package/dist/cjs/interact.js
CHANGED
|
@@ -68,6 +68,7 @@ class Interact {
|
|
|
68
68
|
}
|
|
69
69
|
exports.Interact = Interact;
|
|
70
70
|
_Interact = Interact;
|
|
71
|
+
(0, _defineProperty2.default)(Interact, "forceReducedMotion", false);
|
|
71
72
|
(0, _defineProperty2.default)(Interact, "instances", []);
|
|
72
73
|
(0, _defineProperty2.default)(Interact, "elementCache", new Map());
|
|
73
74
|
let interactionIdCounter = 0;
|
|
@@ -176,9 +177,6 @@ function _addInteraction(instance, interaction, sourceElement) {
|
|
|
176
177
|
...effect,
|
|
177
178
|
effectId
|
|
178
179
|
};
|
|
179
|
-
if (effectId === 'logo-arc-in') {
|
|
180
|
-
console.log(effect);
|
|
181
|
-
}
|
|
182
180
|
if (instance.addedInteractions[effectOptions.interactionId]) {
|
|
183
181
|
// Skip this interaction if it has already been added
|
|
184
182
|
return;
|
|
@@ -291,7 +289,7 @@ function addInteraction(path, source, trigger, target, effect, options) {
|
|
|
291
289
|
}
|
|
292
290
|
target.parentElement.renderStyle((0, _utils.createTransitionCSS)(args));
|
|
293
291
|
}
|
|
294
|
-
(_TRIGGER_TO_HANDLER_M = _handlers.default[trigger]) == null || _TRIGGER_TO_HANDLER_M.add(source, target, effect, options);
|
|
292
|
+
(_TRIGGER_TO_HANDLER_M = _handlers.default[trigger]) == null || _TRIGGER_TO_HANDLER_M.add(source, target, effect, options, Interact.forceReducedMotion);
|
|
295
293
|
}
|
|
296
294
|
|
|
297
295
|
/**
|
package/dist/cjs/interact.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_WixInteractElement","require","_utils","_handlers","_interopRequireDefault","_Interact","registerWixInteractElement","customElements","get","wixInteractElement","getWixInteractElement","define","Interact","constructor","_defineProperty2","default","dataCache","effects","conditions","interactions","addedInteractions","init","config","window","parseConfig","didRegister","elementCache","forEach","element","path","connect","has","clearInteractionStateForPath","_this$dataCache$inter","interactionIds","interactionId","create","instance","instances","push","getInstance","find","getElement","setElement","set","exports","Map","interactionIdCounter","_config$interactions","interaction","_interaction$effects","_interaction$effects2","source","interactionIdx","console","error","triggers","Set","reverse","effect","target","effectId","referencedEffect","generateId","add","rest","_addInteraction","sourceElement","interactionVariations","effectOptions","log","mql","getMediaQuery","matches","_instance$dataCache$e","_Interact$getElement","targetElement","firstElementChild","addInteraction","trigger","params","hasTriggers","length","triggerSourceElement","hasEffects","addEffectsForTarget","_instance$dataCache$i","Object","keys","effectVariations","some","options","_Interact$getElement2","_TRIGGER_TO_HANDLER_M","transition","transitionProperties","args","properties","id","childSelector","parentElement","renderStyle","createTransitionCSS","TRIGGER_TO_HANDLER_MODULE_MAP","remove","_Interact$getElement3","_Interact$getInstance","values","module","delete"],"sources":["../../src/interact.ts"],"sourcesContent":["import type {\n InteractConfig,\n Effect,\n TriggerType,\n InteractCache,\n EffectRef,\n InteractionParamsTypes,\n TransitionEffect,\n IWixInteractElement,\n Interaction,\n CreateTransitionCSSParams,\n} from './types';\nimport { getWixInteractElement } from './WixInteractElement';\nimport { generateId, createTransitionCSS, getMediaQuery } from './utils';\nimport TRIGGER_TO_HANDLER_MODULE_MAP from './handlers';\n\nfunction registerWixInteractElement() {\n if (!customElements.get('wix-interact-element')) {\n const wixInteractElement = getWixInteractElement();\n customElements.define('wix-interact-element', wixInteractElement);\n\n return true;\n }\n\n return false;\n}\n\nexport class Interact {\n dataCache: InteractCache;\n addedInteractions: { [interactionId: string]: boolean };\n static instances: Interact[] = [];\n static elementCache = new Map<string, IWixInteractElement>();\n\n constructor() {\n this.dataCache = { effects: {}, conditions: {}, interactions: {} };\n this.addedInteractions = {};\n }\n\n init(config: InteractConfig): void {\n if (typeof window === 'undefined' || !window.customElements) {\n return;\n }\n\n this.dataCache = parseConfig(config);\n\n const didRegister = registerWixInteractElement();\n\n if (!didRegister) {\n Interact.elementCache.forEach((element: IWixInteractElement, path) =>\n element.connect(path),\n );\n }\n }\n\n has(path: string): boolean {\n return !!this.dataCache.interactions[path];\n }\n\n clearInteractionStateForPath(path: string): void {\n const interactionIds =\n this.dataCache.interactions[path]?.interactionIds || [];\n\n interactionIds.forEach((interactionId) => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.addedInteractions[interactionId];\n });\n }\n\n static create(config: InteractConfig): Interact {\n const instance = new Interact();\n Interact.instances.push(instance);\n\n instance.init(config);\n\n return instance;\n }\n\n static getInstance(path: string): Interact | undefined {\n return Interact.instances.find((instance) => instance.has(path));\n }\n\n static getElement(path: string): IWixInteractElement | undefined {\n return Interact.elementCache.get(path);\n }\n\n static setElement(path: string, element: IWixInteractElement): void {\n Interact.elementCache.set(path, element);\n }\n}\n\nlet interactionIdCounter = 0;\n\n/**\n * Parses the config object and caches interactions, effects, and conditions\n */\nfunction parseConfig(config: InteractConfig): InteractCache {\n const conditions = config.conditions || {};\n const interactions: InteractCache['interactions'] = {};\n\n config.interactions?.forEach((interaction) => {\n const source = interaction.source;\n const interactionIdx = ++interactionIdCounter;\n\n if (!source) {\n console.error(\n `Interaction ${interactionIdx} is missing a source element.`,\n );\n return;\n }\n\n if (!interactions[source]) {\n interactions[source] = {\n triggers: [],\n effects: {},\n interactionIds: new Set(),\n };\n }\n\n /*\n * Cache interaction trigger by source element\n */\n interaction.effects?.reverse(); // reverse to ensure the first effect is the one that will be applied first\n\n interactions[source].triggers.push(interaction);\n\n interaction.effects?.forEach((effect) => {\n /*\n * Target cascade order is the first of:\n * -> Config.interactions.effects.effect.target\n * -> Config.effects.effect.target\n * -> Config.interactions.interaction.source\n */\n let target = effect.target;\n\n if (!target && (effect as EffectRef).effectId) {\n const referencedEffect = config.effects[(effect as EffectRef).effectId];\n\n if (referencedEffect) {\n target = referencedEffect.target;\n }\n }\n\n if (!(effect as EffectRef).effectId) {\n (effect as EffectRef).effectId = generateId();\n }\n\n // if no target is specified, use the source element as the target\n target = target || source;\n effect.target = target;\n const effectId = (effect as EffectRef).effectId;\n\n const interactionId = `${target}::${effectId}::${interactionIdx}`;\n effect.interactionId = interactionId;\n interactions[source].interactionIds.add(interactionId);\n\n if (target === source) {\n // if target is the source element, no need to add an interaction to `effects`\n return;\n }\n\n /*\n * Cache interaction effect by target element\n */\n if (!interactions[target]) {\n interactions[target] = {\n triggers: [],\n effects: {\n [interactionId]: [],\n },\n interactionIds: new Set(),\n };\n } else if (!interactions[target].effects[interactionId]) {\n interactions[target].effects[interactionId] = [];\n interactions[target].interactionIds.add(interactionId);\n }\n\n const { effects, ...rest } = interaction;\n\n interactions[target].effects[interactionId].push({ ...rest, effect });\n });\n });\n\n return {\n effects: config.effects || {},\n conditions,\n interactions,\n };\n}\n\nfunction _addInteraction(\n instance: Interact,\n interaction: Interaction,\n sourceElement: HTMLElement,\n) {\n const interactionVariations: Record<string, boolean> = {};\n\n interaction.effects.forEach((effect) => {\n const effectId = (effect as EffectRef).effectId;\n const interactionId = effect.interactionId;\n\n if (interactionVariations[interactionId!]) {\n // Skip this effect if it has already been added\n return;\n }\n\n const effectOptions = {\n ...(instance.dataCache.effects[effectId] || {}),\n ...effect,\n effectId,\n };\n if (effectId === 'logo-arc-in') {\n console.log(effect);\n }\n\n if (instance.addedInteractions[effectOptions.interactionId!]) {\n // Skip this interaction if it has already been added\n return;\n }\n\n // TODO: implement watching for condition `change` events and add/remove interactions accordingly\n const mql = getMediaQuery(\n effectOptions.conditions || [],\n instance.dataCache.conditions,\n );\n\n if (!mql || mql.matches) {\n interactionVariations[effect.interactionId!] = true;\n\n const target =\n effect.target ||\n (effectId &&\n instance.dataCache.effects[(effect as EffectRef).effectId]?.target) ||\n interaction.source;\n\n const targetElement = Interact.getElement(target)\n ?.firstElementChild as HTMLElement;\n\n if (!targetElement) {\n // Bail out :: no target element in cache\n return;\n }\n\n instance.addedInteractions[effectOptions.interactionId!] = true;\n\n addInteraction(\n target,\n sourceElement,\n interaction.trigger,\n targetElement,\n effectOptions as Effect,\n interaction.params!,\n );\n }\n });\n}\n\n/**\n * Adds all events and effects to an element based on config\n */\nexport function add(element: IWixInteractElement, path: string): boolean {\n const instance = Interact.getInstance(path);\n\n const { triggers = [] } = instance?.dataCache.interactions[path] || {};\n const hasTriggers = triggers.length > 0;\n\n // even if we don't find a matching instance, we still want to cache the element\n Interact.setElement(path, element);\n\n const triggerSourceElement = element.firstElementChild as HTMLElement;\n\n triggers.forEach((interaction) => {\n const mql = getMediaQuery(\n interaction.conditions,\n instance!.dataCache.conditions,\n );\n\n // TODO: implement watching for condition `change` events and add/remove interactions accordingly\n if (!mql || mql.matches) {\n _addInteraction(instance!, interaction, triggerSourceElement);\n }\n });\n\n let hasEffects = false;\n if (instance) {\n hasEffects = addEffectsForTarget(path, element, instance);\n }\n\n return hasTriggers || hasEffects;\n}\n\nfunction addEffectsForTarget(\n path: string,\n element: IWixInteractElement,\n instance: Interact,\n) {\n const effects = instance.dataCache.interactions[path]?.effects || {};\n const interactionIds = Object.keys(effects);\n\n interactionIds.forEach((interactionId) => {\n if (instance.addedInteractions[interactionId]) {\n // Skip this interaction if it has already been added\n return;\n }\n\n const effectVariations = effects[interactionId];\n\n // use `some` to short-circuit after the first effect that matches the conditions\n // eslint-disable-next-line array-callback-return\n effectVariations.some(({ effect, ...options }) => {\n const effectId = (effect as EffectRef).effectId;\n\n const effectOptions = {\n ...(instance!.dataCache.effects[effectId] || {}),\n ...effect,\n effectId,\n };\n\n // TODO: implement watching for condition `change` events and add/remove interactions accordingly\n const mql = getMediaQuery(\n effectOptions.conditions || [],\n instance!.dataCache.conditions,\n );\n\n if (!mql || mql.matches) {\n const targetElement = element.firstElementChild as HTMLElement;\n const sourceElement = Interact.getElement(options.source)\n ?.firstElementChild as HTMLElement;\n\n if (!sourceElement) {\n // Bail out :: no source or target elements in cache\n return true;\n }\n\n instance!.addedInteractions[interactionId] = true;\n\n addInteraction(\n path,\n sourceElement,\n options.trigger,\n targetElement,\n effectOptions as Effect,\n options.params!,\n );\n\n // short-circuit the loop since we have a match\n return true;\n }\n });\n });\n\n return interactionIds.length > 0;\n}\n\n/**\n * Registers a handler to an event on a given element.\n */\nfunction addInteraction<T extends TriggerType>(\n path: string,\n source: HTMLElement,\n trigger: T,\n target: HTMLElement,\n effect: Effect,\n options: InteractionParamsTypes[T],\n): void {\n if (\n (effect as TransitionEffect).transition ||\n (effect as TransitionEffect).transitionProperties\n ) {\n const args: CreateTransitionCSSParams = {\n path,\n effectId: (effect as Effect & { effectId: string }).effectId!,\n transition: (effect as TransitionEffect).transition,\n properties: (effect as TransitionEffect).transitionProperties,\n };\n\n if (target.id) {\n // temporarily allow using the target's id as the element selector to override default styles in cases ids are used\n args.childSelector = `#${target.id}`;\n }\n\n (target.parentElement as IWixInteractElement).renderStyle(\n createTransitionCSS(args),\n );\n }\n\n TRIGGER_TO_HANDLER_MODULE_MAP[trigger]?.add(source, target, effect, options);\n}\n\n/**\n * Removes all events and effects from an element based on config\n */\nexport function remove(path: string): void {\n const element = Interact.getElement(path)?.firstElementChild as HTMLElement;\n\n if (!element) {\n return;\n }\n\n Object.values(TRIGGER_TO_HANDLER_MODULE_MAP).forEach((module) =>\n module.remove(element),\n );\n\n Interact.getInstance(path)?.clearInteractionStateForPath(path);\n Interact.elementCache.delete(path);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_WixInteractElement","require","_utils","_handlers","_interopRequireDefault","_Interact","registerWixInteractElement","customElements","get","wixInteractElement","getWixInteractElement","define","Interact","constructor","_defineProperty2","default","dataCache","effects","conditions","interactions","addedInteractions","init","config","window","parseConfig","didRegister","elementCache","forEach","element","path","connect","has","clearInteractionStateForPath","_this$dataCache$inter","interactionIds","interactionId","create","instance","instances","push","getInstance","find","getElement","setElement","set","exports","Map","interactionIdCounter","_config$interactions","interaction","_interaction$effects","_interaction$effects2","source","interactionIdx","console","error","triggers","Set","reverse","effect","target","effectId","referencedEffect","generateId","add","rest","_addInteraction","sourceElement","interactionVariations","effectOptions","mql","getMediaQuery","matches","_instance$dataCache$e","_Interact$getElement","targetElement","firstElementChild","addInteraction","trigger","params","hasTriggers","length","triggerSourceElement","hasEffects","addEffectsForTarget","_instance$dataCache$i","Object","keys","effectVariations","some","options","_Interact$getElement2","_TRIGGER_TO_HANDLER_M","transition","transitionProperties","args","properties","id","childSelector","parentElement","renderStyle","createTransitionCSS","TRIGGER_TO_HANDLER_MODULE_MAP","forceReducedMotion","remove","_Interact$getElement3","_Interact$getInstance","values","module","delete"],"sources":["../../src/interact.ts"],"sourcesContent":["import type {\n InteractConfig,\n Effect,\n TriggerType,\n InteractCache,\n EffectRef,\n InteractionParamsTypes,\n TransitionEffect,\n IWixInteractElement,\n Interaction,\n CreateTransitionCSSParams,\n} from './types';\nimport { getWixInteractElement } from './WixInteractElement';\nimport { generateId, createTransitionCSS, getMediaQuery } from './utils';\nimport TRIGGER_TO_HANDLER_MODULE_MAP from './handlers';\n\nfunction registerWixInteractElement() {\n if (!customElements.get('wix-interact-element')) {\n const wixInteractElement = getWixInteractElement();\n customElements.define('wix-interact-element', wixInteractElement);\n\n return true;\n }\n\n return false;\n}\n\nexport class Interact {\n dataCache: InteractCache;\n addedInteractions: { [interactionId: string]: boolean };\n static forceReducedMotion: boolean = false;\n static instances: Interact[] = [];\n static elementCache = new Map<string, IWixInteractElement>();\n\n constructor() {\n this.dataCache = { effects: {}, conditions: {}, interactions: {} };\n this.addedInteractions = {};\n }\n\n init(config: InteractConfig): void {\n if (typeof window === 'undefined' || !window.customElements) {\n return;\n }\n\n this.dataCache = parseConfig(config);\n\n const didRegister = registerWixInteractElement();\n\n if (!didRegister) {\n Interact.elementCache.forEach((element: IWixInteractElement, path) =>\n element.connect(path),\n );\n }\n }\n\n has(path: string): boolean {\n return !!this.dataCache.interactions[path];\n }\n\n clearInteractionStateForPath(path: string): void {\n const interactionIds =\n this.dataCache.interactions[path]?.interactionIds || [];\n\n interactionIds.forEach((interactionId) => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.addedInteractions[interactionId];\n });\n }\n\n static create(config: InteractConfig): Interact {\n const instance = new Interact();\n Interact.instances.push(instance);\n\n instance.init(config);\n\n return instance;\n }\n\n static getInstance(path: string): Interact | undefined {\n return Interact.instances.find((instance) => instance.has(path));\n }\n\n static getElement(path: string): IWixInteractElement | undefined {\n return Interact.elementCache.get(path);\n }\n\n static setElement(path: string, element: IWixInteractElement): void {\n Interact.elementCache.set(path, element);\n }\n}\n\nlet interactionIdCounter = 0;\n\n/**\n * Parses the config object and caches interactions, effects, and conditions\n */\nfunction parseConfig(config: InteractConfig): InteractCache {\n const conditions = config.conditions || {};\n const interactions: InteractCache['interactions'] = {};\n\n config.interactions?.forEach((interaction) => {\n const source = interaction.source;\n const interactionIdx = ++interactionIdCounter;\n\n if (!source) {\n console.error(\n `Interaction ${interactionIdx} is missing a source element.`,\n );\n return;\n }\n\n if (!interactions[source]) {\n interactions[source] = {\n triggers: [],\n effects: {},\n interactionIds: new Set(),\n };\n }\n\n /*\n * Cache interaction trigger by source element\n */\n interaction.effects?.reverse(); // reverse to ensure the first effect is the one that will be applied first\n\n interactions[source].triggers.push(interaction);\n\n interaction.effects?.forEach((effect) => {\n /*\n * Target cascade order is the first of:\n * -> Config.interactions.effects.effect.target\n * -> Config.effects.effect.target\n * -> Config.interactions.interaction.source\n */\n let target = effect.target;\n\n if (!target && (effect as EffectRef).effectId) {\n const referencedEffect = config.effects[(effect as EffectRef).effectId];\n\n if (referencedEffect) {\n target = referencedEffect.target;\n }\n }\n\n if (!(effect as EffectRef).effectId) {\n (effect as EffectRef).effectId = generateId();\n }\n\n // if no target is specified, use the source element as the target\n target = target || source;\n effect.target = target;\n const effectId = (effect as EffectRef).effectId;\n\n const interactionId = `${target}::${effectId}::${interactionIdx}`;\n effect.interactionId = interactionId;\n interactions[source].interactionIds.add(interactionId);\n\n if (target === source) {\n // if target is the source element, no need to add an interaction to `effects`\n return;\n }\n\n /*\n * Cache interaction effect by target element\n */\n if (!interactions[target]) {\n interactions[target] = {\n triggers: [],\n effects: {\n [interactionId]: [],\n },\n interactionIds: new Set(),\n };\n } else if (!interactions[target].effects[interactionId]) {\n interactions[target].effects[interactionId] = [];\n interactions[target].interactionIds.add(interactionId);\n }\n\n const { effects, ...rest } = interaction;\n\n interactions[target].effects[interactionId].push({ ...rest, effect });\n });\n });\n\n return {\n effects: config.effects || {},\n conditions,\n interactions,\n };\n}\n\nfunction _addInteraction(\n instance: Interact,\n interaction: Interaction,\n sourceElement: HTMLElement,\n) {\n const interactionVariations: Record<string, boolean> = {};\n\n interaction.effects.forEach((effect) => {\n const effectId = (effect as EffectRef).effectId;\n const interactionId = effect.interactionId;\n\n if (interactionVariations[interactionId!]) {\n // Skip this effect if it has already been added\n return;\n }\n\n const effectOptions = {\n ...(instance.dataCache.effects[effectId] || {}),\n ...effect,\n effectId,\n };\n\n if (instance.addedInteractions[effectOptions.interactionId!]) {\n // Skip this interaction if it has already been added\n return;\n }\n\n // TODO: implement watching for condition `change` events and add/remove interactions accordingly\n const mql = getMediaQuery(\n effectOptions.conditions || [],\n instance.dataCache.conditions,\n );\n\n if (!mql || mql.matches) {\n interactionVariations[effect.interactionId!] = true;\n\n const target =\n effect.target ||\n (effectId &&\n instance.dataCache.effects[(effect as EffectRef).effectId]?.target) ||\n interaction.source;\n\n const targetElement = Interact.getElement(target)\n ?.firstElementChild as HTMLElement;\n\n if (!targetElement) {\n // Bail out :: no target element in cache\n return;\n }\n\n instance.addedInteractions[effectOptions.interactionId!] = true;\n\n addInteraction(\n target,\n sourceElement,\n interaction.trigger,\n targetElement,\n effectOptions as Effect,\n interaction.params!,\n );\n }\n });\n}\n\n/**\n * Adds all events and effects to an element based on config\n */\nexport function add(element: IWixInteractElement, path: string): boolean {\n const instance = Interact.getInstance(path);\n\n const { triggers = [] } = instance?.dataCache.interactions[path] || {};\n const hasTriggers = triggers.length > 0;\n\n // even if we don't find a matching instance, we still want to cache the element\n Interact.setElement(path, element);\n\n const triggerSourceElement = element.firstElementChild as HTMLElement;\n\n triggers.forEach((interaction) => {\n const mql = getMediaQuery(\n interaction.conditions,\n instance!.dataCache.conditions,\n );\n\n // TODO: implement watching for condition `change` events and add/remove interactions accordingly\n if (!mql || mql.matches) {\n _addInteraction(instance!, interaction, triggerSourceElement);\n }\n });\n\n let hasEffects = false;\n if (instance) {\n hasEffects = addEffectsForTarget(path, element, instance);\n }\n\n return hasTriggers || hasEffects;\n}\n\nfunction addEffectsForTarget(\n path: string,\n element: IWixInteractElement,\n instance: Interact,\n) {\n const effects = instance.dataCache.interactions[path]?.effects || {};\n const interactionIds = Object.keys(effects);\n\n interactionIds.forEach((interactionId) => {\n if (instance.addedInteractions[interactionId]) {\n // Skip this interaction if it has already been added\n return;\n }\n\n const effectVariations = effects[interactionId];\n\n // use `some` to short-circuit after the first effect that matches the conditions\n // eslint-disable-next-line array-callback-return\n effectVariations.some(({ effect, ...options }) => {\n const effectId = (effect as EffectRef).effectId;\n\n const effectOptions = {\n ...(instance!.dataCache.effects[effectId] || {}),\n ...effect,\n effectId,\n };\n\n // TODO: implement watching for condition `change` events and add/remove interactions accordingly\n const mql = getMediaQuery(\n effectOptions.conditions || [],\n instance!.dataCache.conditions,\n );\n\n if (!mql || mql.matches) {\n const targetElement = element.firstElementChild as HTMLElement;\n const sourceElement = Interact.getElement(options.source)\n ?.firstElementChild as HTMLElement;\n\n if (!sourceElement) {\n // Bail out :: no source or target elements in cache\n return true;\n }\n\n instance!.addedInteractions[interactionId] = true;\n\n addInteraction(\n path,\n sourceElement,\n options.trigger,\n targetElement,\n effectOptions as Effect,\n options.params!,\n );\n\n // short-circuit the loop since we have a match\n return true;\n }\n });\n });\n\n return interactionIds.length > 0;\n}\n\n/**\n * Registers a handler to an event on a given element.\n */\nfunction addInteraction<T extends TriggerType>(\n path: string,\n source: HTMLElement,\n trigger: T,\n target: HTMLElement,\n effect: Effect,\n options: InteractionParamsTypes[T],\n): void {\n if (\n (effect as TransitionEffect).transition ||\n (effect as TransitionEffect).transitionProperties\n ) {\n const args: CreateTransitionCSSParams = {\n path,\n effectId: (effect as Effect & { effectId: string }).effectId!,\n transition: (effect as TransitionEffect).transition,\n properties: (effect as TransitionEffect).transitionProperties,\n };\n\n if (target.id) {\n // temporarily allow using the target's id as the element selector to override default styles in cases ids are used\n args.childSelector = `#${target.id}`;\n }\n\n (target.parentElement as IWixInteractElement).renderStyle(\n createTransitionCSS(args),\n );\n }\n\n TRIGGER_TO_HANDLER_MODULE_MAP[trigger]?.add(source, target, effect, options, Interact.forceReducedMotion);\n}\n\n/**\n * Removes all events and effects from an element based on config\n */\nexport function remove(path: string): void {\n const element = Interact.getElement(path)?.firstElementChild as HTMLElement;\n\n if (!element) {\n return;\n }\n\n Object.values(TRIGGER_TO_HANDLER_MODULE_MAP).forEach((module) =>\n module.remove(element),\n );\n\n Interact.getInstance(path)?.clearInteractionStateForPath(path);\n Interact.elementCache.delete(path);\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/cjs/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["../../src/types.ts"],"sourcesContent":["import type {\n NamedEffect,\n MotionKeyframeEffect,\n CustomEffect,\n RangeOffset,\n ScrubTransitionEasing,\n MotionAnimationOptions,\n} from '@wix/motion';\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n 'wix-interact-element': React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLElement>,\n HTMLElement\n > & {\n 'data-wix-path'?: string;\n };\n }\n }\n}\n\nexport type TriggerType =\n | 'hover'\n | 'click'\n | 'viewEnter'\n | 'pageVisible'\n | 'animationEnd'\n | 'viewProgress'\n | 'pointerMove';\n\nexport type ViewEnterType = 'once' | 'repeat' | 'alternate';\n\nexport type TransitionMethod = 'add' | 'remove' | 'toggle' | 'clear';\n\nexport type StateParams = {\n method: TransitionMethod;\n};\n\nexport type PointerTriggerParams = {\n type?: ViewEnterType | 'state';\n};\n\nexport type ViewEnterParams = {\n type?: ViewEnterType;\n threshold?: number;\n inset?: string;\n};\n\nexport type PointerMoveParams = {\n hitArea?: 'root' | 'self';\n};\n\nexport type AnimationEndParams = {\n effectId: string;\n};\n\nexport type TriggerParams =\n | StateParams\n | PointerTriggerParams\n | ViewEnterParams\n | PointerMoveParams\n | AnimationEndParams;\n\ntype Fill = 'none' | 'forwards' | 'backwards' | 'both';\n\ntype EffectEffectProperty =\n | {\n keyframeEffect: MotionKeyframeEffect;\n }\n | {\n namedEffect: NamedEffect;\n }\n | {\n customEffect: CustomEffect;\n };\n\nexport type TimeEffect = {\n target?: string;\n duration: number;\n easing?: string;\n iterations?: number;\n alternate?: boolean;\n fill?: Fill;\n reversed?: boolean;\n delay?: number;\n effectId?: string;\n} & EffectEffectProperty;\n\nexport type ScrubEffect = {\n target?: string;\n easing?: string;\n iterations?: number;\n alternate?: boolean;\n fill?: Fill;\n reversed?: boolean;\n rangeStart?: RangeOffset;\n rangeEnd?: RangeOffset;\n centeredToTarget?: boolean;\n transitionDuration?: number;\n transitionDelay?: number;\n transitionEasing?: ScrubTransitionEasing;\n} & EffectEffectProperty;\n\nexport type TransitionOptions = {\n duration?: number;\n delay?: number;\n easing?: string;\n};\n\nexport type StyleProperty = {\n name: string;\n value: string;\n};\n\nexport type TransitionProperty = StyleProperty & TransitionOptions;\n\nexport type TransitionEffect = {\n target?: string;\n effectId?: string;\n} & {\n transition?: TransitionOptions & {\n styleProperties: StyleProperty[];\n };\n transitionProperties?: TransitionProperty[];\n};\n\nexport type EffectRef = {\n target?: string;\n effectId: string;\n conditions?: string[];\n};\n\nexport type Effect = (TimeEffect | ScrubEffect | TransitionEffect) & {\n conditions?: string[];\n};\n\nexport type Condition = {\n type: 'media' | 'container';\n predicate?: string;\n};\n\ntype InteractionTrigger = {\n source: string;\n trigger: TriggerType;\n params?: TriggerParams;\n conditions?: string[];\n};\n\nexport type Interaction = InteractionTrigger & {\n effects: ((Effect | EffectRef) & { interactionId?: string })[];\n};\n\nexport type InteractConfig = {\n effects: Record<string, Effect>;\n conditions?: Record<string, Condition>;\n interactions: Interaction[];\n};\n\nexport type AnimationOptions<T extends 'time' | 'scrub'> =\n MotionAnimationOptions<T> & EffectEffectProperty;\n\n/// ////////////////////////////////////////////////////////\n/// ////////////////////////////////////////////////////////\n/// ////////////////////////////////////////////////////////\n\nexport interface IWixInteractElement extends HTMLElement {\n _internals: (ElementInternals & { states: Set<string> }) | null;\n connected: boolean;\n sheet: CSSStyleSheet | null;\n connectedCallback(): void;\n disconnectedCallback(): void;\n connect(path?: string): void;\n renderStyle(cssText: string): void;\n toggleEffect(effectId: string, method: StateParams['method']): void;\n}\n\nexport type InteractionParamsTypes = {\n hover: StateParams | PointerTriggerParams;\n click: StateParams | PointerTriggerParams;\n viewEnter: ViewEnterParams;\n pageVisible: ViewEnterParams;\n animationEnd: AnimationEndParams;\n viewProgress: ViewEnterParams;\n pointerMove: PointerMoveParams;\n};\n\nexport type InteractionHandlerModule<T extends TriggerType> = {\n add: (\n source: HTMLElement,\n target: HTMLElement,\n effect: Effect,\n options: InteractionParamsTypes[T],\n ) => void;\n remove: (element: HTMLElement) => void;\n};\n\nexport type TriggerHandlerMap<T extends TriggerType> = {\n [K in T]: InteractionHandlerModule<K>;\n};\n\nexport type HandlerObject = {\n source: HTMLElement;\n target: HTMLElement;\n cleanup: () => void;\n handler?: () => void;\n};\n\nexport type HandlerObjectMap = WeakMap<HTMLElement, Set<HandlerObject>>;\n\nexport type InteractCache = {\n effects: {\n [effectId: string]: Effect;\n };\n conditions: {\n [conditionId: string]: Condition;\n };\n interactions: {\n [path: string]: {\n triggers: Interaction[];\n effects: Record<\n string,\n (InteractionTrigger & { effect: Effect | EffectRef })[]\n >;\n interactionIds: Set<string>;\n };\n };\n};\n\nexport type CreateTransitionCSSParams = {\n path: string;\n effectId: string;\n transition?: TransitionEffect['transition'];\n properties?: TransitionProperty[];\n childSelector?: string;\n};\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["../../src/types.ts"],"sourcesContent":["import type {\n NamedEffect,\n MotionKeyframeEffect,\n CustomEffect,\n RangeOffset,\n ScrubTransitionEasing,\n MotionAnimationOptions,\n} from '@wix/motion';\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n 'wix-interact-element': React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLElement>,\n HTMLElement\n > & {\n 'data-wix-path'?: string;\n };\n }\n }\n}\n\nexport type TriggerType =\n | 'hover'\n | 'click'\n | 'viewEnter'\n | 'pageVisible'\n | 'animationEnd'\n | 'viewProgress'\n | 'pointerMove';\n\nexport type ViewEnterType = 'once' | 'repeat' | 'alternate';\n\nexport type TransitionMethod = 'add' | 'remove' | 'toggle' | 'clear';\n\nexport type StateParams = {\n method: TransitionMethod;\n};\n\nexport type PointerTriggerParams = {\n type?: ViewEnterType | 'state';\n};\n\nexport type ViewEnterParams = {\n type?: ViewEnterType;\n threshold?: number;\n inset?: string;\n};\n\nexport type PointerMoveParams = {\n hitArea?: 'root' | 'self';\n};\n\nexport type AnimationEndParams = {\n effectId: string;\n};\n\nexport type TriggerParams =\n | StateParams\n | PointerTriggerParams\n | ViewEnterParams\n | PointerMoveParams\n | AnimationEndParams;\n\ntype Fill = 'none' | 'forwards' | 'backwards' | 'both';\n\ntype EffectEffectProperty =\n | {\n keyframeEffect: MotionKeyframeEffect;\n }\n | {\n namedEffect: NamedEffect;\n }\n | {\n customEffect: CustomEffect;\n };\n\nexport type TimeEffect = {\n target?: string;\n duration: number;\n easing?: string;\n iterations?: number;\n alternate?: boolean;\n fill?: Fill;\n reversed?: boolean;\n delay?: number;\n effectId?: string;\n} & EffectEffectProperty;\n\nexport type ScrubEffect = {\n target?: string;\n easing?: string;\n iterations?: number;\n alternate?: boolean;\n fill?: Fill;\n reversed?: boolean;\n rangeStart?: RangeOffset;\n rangeEnd?: RangeOffset;\n centeredToTarget?: boolean;\n transitionDuration?: number;\n transitionDelay?: number;\n transitionEasing?: ScrubTransitionEasing;\n} & EffectEffectProperty;\n\nexport type TransitionOptions = {\n duration?: number;\n delay?: number;\n easing?: string;\n};\n\nexport type StyleProperty = {\n name: string;\n value: string;\n};\n\nexport type TransitionProperty = StyleProperty & TransitionOptions;\n\nexport type TransitionEffect = {\n target?: string;\n effectId?: string;\n} & {\n transition?: TransitionOptions & {\n styleProperties: StyleProperty[];\n };\n transitionProperties?: TransitionProperty[];\n};\n\nexport type EffectRef = {\n target?: string;\n effectId: string;\n conditions?: string[];\n};\n\nexport type Effect = (TimeEffect | ScrubEffect | TransitionEffect) & {\n conditions?: string[];\n};\n\nexport type Condition = {\n type: 'media' | 'container';\n predicate?: string;\n};\n\ntype InteractionTrigger = {\n source: string;\n trigger: TriggerType;\n params?: TriggerParams;\n conditions?: string[];\n};\n\nexport type Interaction = InteractionTrigger & {\n effects: ((Effect | EffectRef) & { interactionId?: string })[];\n};\n\nexport type InteractConfig = {\n effects: Record<string, Effect>;\n conditions?: Record<string, Condition>;\n interactions: Interaction[];\n};\n\nexport type AnimationOptions<T extends 'time' | 'scrub'> =\n MotionAnimationOptions<T> & EffectEffectProperty;\n\n/// ////////////////////////////////////////////////////////\n/// ////////////////////////////////////////////////////////\n/// ////////////////////////////////////////////////////////\n\nexport interface IWixInteractElement extends HTMLElement {\n _internals: (ElementInternals & { states: Set<string> }) | null;\n connected: boolean;\n sheet: CSSStyleSheet | null;\n connectedCallback(): void;\n disconnectedCallback(): void;\n connect(path?: string): void;\n renderStyle(cssText: string): void;\n toggleEffect(effectId: string, method: StateParams['method']): void;\n}\n\nexport type InteractionParamsTypes = {\n hover: StateParams | PointerTriggerParams;\n click: StateParams | PointerTriggerParams;\n viewEnter: ViewEnterParams;\n pageVisible: ViewEnterParams;\n animationEnd: AnimationEndParams;\n viewProgress: ViewEnterParams;\n pointerMove: PointerMoveParams;\n};\n\nexport type InteractionHandlerModule<T extends TriggerType> = {\n add: (\n source: HTMLElement,\n target: HTMLElement,\n effect: Effect,\n options: InteractionParamsTypes[T],\n reducedMotion?: boolean,\n ) => void;\n remove: (element: HTMLElement) => void;\n};\n\nexport type TriggerHandlerMap<T extends TriggerType> = {\n [K in T]: InteractionHandlerModule<K>;\n};\n\nexport type HandlerObject = {\n source: HTMLElement;\n target: HTMLElement;\n cleanup: () => void;\n handler?: () => void;\n};\n\nexport type HandlerObjectMap = WeakMap<HTMLElement, Set<HandlerObject>>;\n\nexport type InteractCache = {\n effects: {\n [effectId: string]: Effect;\n };\n conditions: {\n [conditionId: string]: Condition;\n };\n interactions: {\n [path: string]: {\n triggers: Interaction[];\n effects: Record<\n string,\n (InteractionTrigger & { effect: Effect | EffectRef })[]\n >;\n interactionIds: Set<string>;\n };\n };\n};\n\nexport type CreateTransitionCSSParams = {\n path: string;\n effectId: string;\n transition?: TransitionEffect['transition'];\n properties?: TransitionProperty[];\n childSelector?: string;\n};\n"],"mappings":"","ignoreList":[]}
|
package/dist/cjs/utils.js
CHANGED
|
@@ -41,9 +41,9 @@ function createTransitionCSS({
|
|
|
41
41
|
const styleProperties = ((_properties2 = properties) == null ? void 0 : _properties2.map(property => `${property.name}: ${property.value};`)) || [];
|
|
42
42
|
const escapedPath = path.replace(/"/g, "'");
|
|
43
43
|
return `
|
|
44
|
-
${transitions.length ?
|
|
44
|
+
${transitions.length ? `@media (prefers-reduced-motion: no-preference) { [data-wix-path="${escapedPath}"] > ${childSelector} {
|
|
45
45
|
transition: ${transitions.join(', ')};
|
|
46
|
-
}` : ''}
|
|
46
|
+
} }` : ''}
|
|
47
47
|
:is(:state(${effectId}), :--${effectId}) > ${childSelector},
|
|
48
48
|
[data-wix-interact-effect~="${effectId}"] > ${childSelector} {
|
|
49
49
|
${styleProperties.join(`
|
package/dist/cjs/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_motion","require","generateId","replace","c","String","fromCharCode","crypto","getRandomValues","Uint8Array","createTransitionCSS","path","effectId","transition","properties","childSelector","_properties2","transitions","styleProperties","duration","easing","delay","hasCustomPropertiesTransition","some","styleProperty","name","startsWith","getEasing","map","_properties","filter","property","value","escapedPath","length","join","getMediaQuery","conditionNames","conditions","conditionContent","conditionName","_conditions$condition","type","predicate","condition","mql","window","matchMedia"],"sources":["../../src/utils.ts"],"sourcesContent":["import { getEasing } from '@wix/motion';\nimport type { Condition, CreateTransitionCSSParams } from './types';\n\nexport function generateId() {\n return 'wi-12343210'.replace(\n /\\d/g,\n (c) =>\n String.fromCharCode(\n (+c ^\n (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (+c / 4)))) +\n 97,\n ), // 97 for \"a\"\n );\n}\n\nexport function createTransitionCSS({\n path,\n effectId,\n transition,\n properties,\n childSelector = ':first-child',\n}: CreateTransitionCSSParams): string {\n let transitions: string[] = [];\n\n if (transition?.styleProperties) {\n const { duration, easing, delay } = transition;\n\n if (duration) {\n const hasCustomPropertiesTransition = transition.styleProperties.some(\n (styleProperty) => styleProperty.name.startsWith('--'),\n );\n\n if (hasCustomPropertiesTransition) {\n // If there are custom properties in the transition, we need to fall back to Viewer's legacy implementation\n transitions = [\n `all ${duration}ms ${getEasing(easing || 'ease')}${\n delay ? ` ${delay}ms` : ''\n }`,\n 'visibility 0s',\n ];\n } else {\n transitions = transition.styleProperties.map(\n (styleProperty) =>\n `${styleProperty.name} ${duration}ms ${getEasing(\n easing || 'ease',\n )}${delay ? ` ${delay}ms` : ''}`,\n );\n }\n }\n\n properties = transition.styleProperties;\n } else {\n transitions =\n properties\n ?.filter((property) => property.duration)\n .map(\n (property) =>\n `${property.name} ${property.duration}ms ${\n getEasing(property.easing) || 'ease'\n }${property.delay ? ` ${property.delay}ms` : ''}`,\n ) || [];\n }\n\n const styleProperties =\n properties?.map((property) => `${property.name}: ${property.value};`) || [];\n const escapedPath = path.replace(/\"/g, \"'\");\n\n return `\n ${\n transitions.length\n ?
|
|
1
|
+
{"version":3,"names":["_motion","require","generateId","replace","c","String","fromCharCode","crypto","getRandomValues","Uint8Array","createTransitionCSS","path","effectId","transition","properties","childSelector","_properties2","transitions","styleProperties","duration","easing","delay","hasCustomPropertiesTransition","some","styleProperty","name","startsWith","getEasing","map","_properties","filter","property","value","escapedPath","length","join","getMediaQuery","conditionNames","conditions","conditionContent","conditionName","_conditions$condition","type","predicate","condition","mql","window","matchMedia"],"sources":["../../src/utils.ts"],"sourcesContent":["import { getEasing } from '@wix/motion';\nimport type { Condition, CreateTransitionCSSParams } from './types';\n\nexport function generateId() {\n return 'wi-12343210'.replace(\n /\\d/g,\n (c) =>\n String.fromCharCode(\n (+c ^\n (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (+c / 4)))) +\n 97,\n ), // 97 for \"a\"\n );\n}\n\nexport function createTransitionCSS({\n path,\n effectId,\n transition,\n properties,\n childSelector = ':first-child',\n}: CreateTransitionCSSParams): string {\n let transitions: string[] = [];\n\n if (transition?.styleProperties) {\n const { duration, easing, delay } = transition;\n\n if (duration) {\n const hasCustomPropertiesTransition = transition.styleProperties.some(\n (styleProperty) => styleProperty.name.startsWith('--'),\n );\n\n if (hasCustomPropertiesTransition) {\n // If there are custom properties in the transition, we need to fall back to Viewer's legacy implementation\n transitions = [\n `all ${duration}ms ${getEasing(easing || 'ease')}${\n delay ? ` ${delay}ms` : ''\n }`,\n 'visibility 0s',\n ];\n } else {\n transitions = transition.styleProperties.map(\n (styleProperty) =>\n `${styleProperty.name} ${duration}ms ${getEasing(\n easing || 'ease',\n )}${delay ? ` ${delay}ms` : ''}`,\n );\n }\n }\n\n properties = transition.styleProperties;\n } else {\n transitions =\n properties\n ?.filter((property) => property.duration)\n .map(\n (property) =>\n `${property.name} ${property.duration}ms ${\n getEasing(property.easing) || 'ease'\n }${property.delay ? ` ${property.delay}ms` : ''}`,\n ) || [];\n }\n\n const styleProperties =\n properties?.map((property) => `${property.name}: ${property.value};`) || [];\n const escapedPath = path.replace(/\"/g, \"'\");\n\n return `\n ${\n transitions.length\n ? `@media (prefers-reduced-motion: no-preference) { [data-wix-path=\"${escapedPath}\"] > ${childSelector} {\n transition: ${transitions.join(', ')};\n } }`\n : ''\n }\n :is(:state(${effectId}), :--${effectId}) > ${childSelector},\n [data-wix-interact-effect~=\"${effectId}\"] > ${childSelector} {\n ${styleProperties.join(`\n `)}\n }`;\n}\n\nexport function getMediaQuery(\n conditionNames: string[] | undefined,\n conditions: Record<string, Condition>,\n) {\n const conditionContent = (conditionNames || [])\n .filter((conditionName) => {\n return (\n conditions[conditionName]?.type === 'media' &&\n conditions[conditionName].predicate\n );\n })\n .map((conditionName) => {\n return conditions[conditionName].predicate;\n })\n .join(') and (');\n\n const condition = conditionContent && `(${conditionContent})`;\n const mql = condition && window.matchMedia(condition);\n\n if (mql) {\n return mql;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|