@wix/interact 1.83.0 → 1.85.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/WixInteractElement.js +6 -3
- package/dist/cjs/WixInteractElement.js.map +1 -1
- package/dist/cjs/core/Interact.js +21 -8
- package/dist/cjs/core/Interact.js.map +1 -1
- package/dist/cjs/core/add.js +35 -28
- package/dist/cjs/core/add.js.map +1 -1
- package/dist/cjs/core/remove.js +9 -10
- package/dist/cjs/core/remove.js.map +1 -1
- package/dist/cjs/core/utilities.js +16 -0
- package/dist/cjs/core/utilities.js.map +1 -0
- package/dist/cjs/handlers/click.js +14 -2
- package/dist/cjs/handlers/click.js.map +1 -1
- package/dist/cjs/handlers/hover.js +16 -3
- package/dist/cjs/handlers/hover.js.map +1 -1
- package/dist/cjs/handlers/viewEnter.js +3 -5
- package/dist/cjs/handlers/viewEnter.js.map +1 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/WixInteractElement.js +6 -3
- package/dist/esm/WixInteractElement.js.map +1 -1
- package/dist/esm/core/Interact.js +22 -11
- package/dist/esm/core/Interact.js.map +1 -1
- package/dist/esm/core/add.js +35 -28
- package/dist/esm/core/add.js.map +1 -1
- package/dist/esm/core/remove.js +9 -10
- package/dist/esm/core/remove.js.map +1 -1
- package/dist/esm/core/utilities.js +14 -0
- package/dist/esm/core/utilities.js.map +1 -0
- package/dist/esm/handlers/click.js +14 -2
- package/dist/esm/handlers/click.js.map +1 -1
- package/dist/esm/handlers/hover.js +16 -3
- package/dist/esm/handlers/hover.js.map +1 -1
- package/dist/esm/handlers/viewEnter.js +3 -5
- package/dist/esm/handlers/viewEnter.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/types/WixInteractElement.d.ts +1 -1
- package/dist/types/core/Interact.d.ts +6 -2
- package/dist/types/core/utilities.d.ts +2 -0
- package/dist/types/handlers/click.d.ts +2 -2
- package/dist/types/handlers/hover.d.ts +2 -2
- package/dist/types/types.d.ts +9 -11
- package/package.json +3 -3
package/dist/esm/core/add.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createTransitionCSS, getMediaQuery } from '../utils';
|
|
2
|
+
import { getInterpolatedKey } from './utilities';
|
|
2
3
|
import { Interact, getSelector } from './Interact';
|
|
3
4
|
import TRIGGER_TO_HANDLER_MODULE_MAP from '../handlers';
|
|
4
5
|
function _getElementsFromData(data, root) {
|
|
@@ -25,44 +26,45 @@ function _getElementsFromData(data, root) {
|
|
|
25
26
|
}
|
|
26
27
|
function _queryItemElement(data, elements) {
|
|
27
28
|
return elements.map(element => {
|
|
28
|
-
return
|
|
29
|
+
return data.selector ? element.querySelector(data.selector) : element;
|
|
29
30
|
}).filter(Boolean);
|
|
30
31
|
}
|
|
31
32
|
function _getInteractionElements(interaction, effect, source, target, sourceElements, targetElements) {
|
|
32
33
|
return [sourceElements ? _queryItemElement(interaction, sourceElements) : _getElementsFromData(interaction, source), targetElements ? _queryItemElement(effect, targetElements) : _getElementsFromData(effect, target)];
|
|
33
34
|
}
|
|
34
|
-
function _applyInteraction(key, interaction, effect, sourceElements, targetElements
|
|
35
|
+
function _applyInteraction(key, interaction, effect, sourceElements, targetElements) {
|
|
35
36
|
const isSourceArray = Array.isArray(sourceElements);
|
|
36
37
|
const isTargetArray = Array.isArray(targetElements);
|
|
37
38
|
if (isSourceArray) {
|
|
38
39
|
sourceElements.forEach((sourceEl, index) => {
|
|
39
40
|
const targetEl = isTargetArray ? targetElements[index] : targetElements;
|
|
40
41
|
if (targetEl) {
|
|
41
|
-
addInteraction(key, sourceEl, interaction.trigger, targetEl, effect, interaction.params
|
|
42
|
+
addInteraction(key, sourceEl, interaction.trigger, targetEl, effect, interaction.params);
|
|
42
43
|
}
|
|
43
44
|
});
|
|
44
45
|
} else {
|
|
45
46
|
const targets = isTargetArray ? targetElements : [targetElements];
|
|
46
47
|
targets.forEach(targetEl => {
|
|
47
|
-
addInteraction(key, sourceElements, interaction.trigger, targetEl, effect, interaction.params
|
|
48
|
+
addInteraction(key, sourceElements, interaction.trigger, targetEl, effect, interaction.params);
|
|
48
49
|
});
|
|
49
50
|
}
|
|
50
51
|
}
|
|
51
|
-
function _addInteraction(instance, interaction,
|
|
52
|
+
function _addInteraction(sourceKey, sourceRoot, instance, interaction, elements) {
|
|
52
53
|
const interactionVariations = {};
|
|
53
54
|
interaction.effects.forEach(effect => {
|
|
54
55
|
const effectId = effect.effectId;
|
|
55
|
-
const interactionId = effect.interactionId;
|
|
56
|
-
if (interactionVariations[interactionId]) {
|
|
57
|
-
// Skip this effect if it has already been added
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
56
|
const effectOptions = {
|
|
61
57
|
...(instance.dataCache.effects[effectId] || {}),
|
|
62
58
|
...effect,
|
|
63
59
|
effectId
|
|
64
60
|
};
|
|
65
|
-
|
|
61
|
+
const targetKey_ = effectOptions.key;
|
|
62
|
+
const interactionId = getInterpolatedKey(effect.interactionId, sourceKey);
|
|
63
|
+
if (interactionVariations[interactionId]) {
|
|
64
|
+
// Skip this effect if it has already been added
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (instance.addedInteractions[interactionId] && !elements) {
|
|
66
68
|
// Skip this interaction if it has already been added
|
|
67
69
|
return;
|
|
68
70
|
}
|
|
@@ -70,8 +72,8 @@ function _addInteraction(instance, interaction, sourceRoot, elements) {
|
|
|
70
72
|
// TODO: implement watching for condition `change` events and add/remove interactions accordingly
|
|
71
73
|
const mql = getMediaQuery(effectOptions.conditions || [], instance.dataCache.conditions);
|
|
72
74
|
if (!mql || mql.matches) {
|
|
73
|
-
interactionVariations[
|
|
74
|
-
const target =
|
|
75
|
+
interactionVariations[interactionId] = true;
|
|
76
|
+
const target = targetKey_ && getInterpolatedKey(targetKey_, sourceKey);
|
|
75
77
|
let targetElement;
|
|
76
78
|
if (target) {
|
|
77
79
|
targetElement = Interact.getElement(target);
|
|
@@ -90,22 +92,23 @@ function _addInteraction(instance, interaction, sourceRoot, elements) {
|
|
|
90
92
|
if (!sourceElements || !targetElements) {
|
|
91
93
|
return;
|
|
92
94
|
}
|
|
93
|
-
instance.addedInteractions[
|
|
95
|
+
instance.addedInteractions[interactionId] = true;
|
|
94
96
|
const key = target || interaction.key;
|
|
95
|
-
_applyInteraction(key, interaction, effectOptions, sourceElements, targetElements
|
|
97
|
+
_applyInteraction(key, interaction, effectOptions, sourceElements, targetElements);
|
|
96
98
|
}
|
|
97
99
|
});
|
|
98
100
|
}
|
|
99
|
-
function addEffectsForTarget(
|
|
100
|
-
var _instance$
|
|
101
|
-
const effects = ((_instance$
|
|
101
|
+
function addEffectsForTarget(targetKey, element, instance, listContainer, elements) {
|
|
102
|
+
var _instance$get;
|
|
103
|
+
const effects = ((_instance$get = instance.get(targetKey)) == null ? void 0 : _instance$get.effects) || {};
|
|
102
104
|
const interactionIds = Object.keys(effects);
|
|
103
|
-
interactionIds.forEach(
|
|
105
|
+
interactionIds.forEach(interactionId_ => {
|
|
106
|
+
const interactionId = getInterpolatedKey(interactionId_, targetKey);
|
|
104
107
|
if (instance.addedInteractions[interactionId] && !elements) {
|
|
105
108
|
// Skip this interaction if it has already been added
|
|
106
109
|
return;
|
|
107
110
|
}
|
|
108
|
-
const effectVariations = effects[
|
|
111
|
+
const effectVariations = effects[interactionId_];
|
|
109
112
|
|
|
110
113
|
// use `some` to short-circuit after the first effect that matches the conditions
|
|
111
114
|
// eslint-disable-next-line array-callback-return
|
|
@@ -128,7 +131,8 @@ function addEffectsForTarget(key, element, instance, listContainer, elements) {
|
|
|
128
131
|
// TODO: implement watching for condition `change` events and add/remove interactions accordingly
|
|
129
132
|
const mql = getMediaQuery(effectOptions.conditions || [], instance.dataCache.conditions);
|
|
130
133
|
if (!mql || mql.matches) {
|
|
131
|
-
const
|
|
134
|
+
const sourceKey = interaction.key && getInterpolatedKey(interaction.key, targetKey);
|
|
135
|
+
const sourceElement = Interact.getElement(sourceKey);
|
|
132
136
|
if (!sourceElement) {
|
|
133
137
|
// Bail out :: no source or target elements in cache
|
|
134
138
|
return true;
|
|
@@ -142,7 +146,7 @@ function addEffectsForTarget(key, element, instance, listContainer, elements) {
|
|
|
142
146
|
return true;
|
|
143
147
|
}
|
|
144
148
|
instance.addedInteractions[interactionId] = true;
|
|
145
|
-
_applyInteraction(
|
|
149
|
+
_applyInteraction(targetKey, interaction, effectOptions, sourceElements, targetElements);
|
|
146
150
|
|
|
147
151
|
// short-circuit the loop since we have a match
|
|
148
152
|
return true;
|
|
@@ -155,7 +159,7 @@ function addEffectsForTarget(key, element, instance, listContainer, elements) {
|
|
|
155
159
|
/**
|
|
156
160
|
* Registers a handler to an event on a given element.
|
|
157
161
|
*/
|
|
158
|
-
function addInteraction(key, source, trigger, target, effect, options
|
|
162
|
+
function addInteraction(key, source, trigger, target, effect, options) {
|
|
159
163
|
var _TRIGGER_TO_HANDLER_M;
|
|
160
164
|
if (effect.transition || effect.transitionProperties) {
|
|
161
165
|
const args = {
|
|
@@ -163,7 +167,10 @@ function addInteraction(key, source, trigger, target, effect, options, listConta
|
|
|
163
167
|
effectId: effect.effectId,
|
|
164
168
|
transition: effect.transition,
|
|
165
169
|
properties: effect.transitionProperties,
|
|
166
|
-
childSelector: getSelector(effect,
|
|
170
|
+
childSelector: getSelector(effect, {
|
|
171
|
+
asCombinator: true,
|
|
172
|
+
addItemFilter: true
|
|
173
|
+
})
|
|
167
174
|
};
|
|
168
175
|
const root = target.closest('wix-interact-element');
|
|
169
176
|
if (!root) {
|
|
@@ -188,7 +195,7 @@ export function add(element, key) {
|
|
|
188
195
|
}
|
|
189
196
|
const {
|
|
190
197
|
triggers = []
|
|
191
|
-
} = (instance == null ? void 0 : instance.
|
|
198
|
+
} = (instance == null ? void 0 : instance.get(key)) || {};
|
|
192
199
|
const hasTriggers = triggers.length > 0;
|
|
193
200
|
instance.setElement(key, element);
|
|
194
201
|
triggers.forEach(interaction => {
|
|
@@ -199,7 +206,7 @@ export function add(element, key) {
|
|
|
199
206
|
if (interaction.listContainer) {
|
|
200
207
|
element.watchChildList(interaction.listContainer);
|
|
201
208
|
}
|
|
202
|
-
_addInteraction(instance, interaction
|
|
209
|
+
_addInteraction(key, element, instance, interaction);
|
|
203
210
|
}
|
|
204
211
|
});
|
|
205
212
|
let hasEffects = false;
|
|
@@ -213,7 +220,7 @@ export function addListItems(root, key, listContainer, elements) {
|
|
|
213
220
|
if (instance) {
|
|
214
221
|
const {
|
|
215
222
|
triggers = []
|
|
216
|
-
} = (instance == null ? void 0 : instance.
|
|
223
|
+
} = (instance == null ? void 0 : instance.get(key)) || {};
|
|
217
224
|
triggers.forEach(interaction => {
|
|
218
225
|
if (interaction.listContainer !== listContainer) {
|
|
219
226
|
return;
|
|
@@ -222,7 +229,7 @@ export function addListItems(root, key, listContainer, elements) {
|
|
|
222
229
|
|
|
223
230
|
// TODO: implement watching for condition `change` events and add/remove interactions accordingly
|
|
224
231
|
if (!mql || mql.matches) {
|
|
225
|
-
_addInteraction(instance, interaction,
|
|
232
|
+
_addInteraction(key, root, instance, interaction, elements);
|
|
226
233
|
}
|
|
227
234
|
});
|
|
228
235
|
addEffectsForTarget(key, root, instance, listContainer, elements);
|
package/dist/esm/core/add.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createTransitionCSS","getMediaQuery","Interact","getSelector","TRIGGER_TO_HANDLER_MODULE_MAP","_getElementsFromData","data","root","listContainer","container","querySelector","console","warn","selector","Array","from","querySelectorAll","children","element","firstElementChild","_queryItemElement","elements","map","matches","filter","Boolean","_getInteractionElements","interaction","effect","source","target","sourceElements","targetElements","_applyInteraction","key","isSourceArray","isArray","isTargetArray","forEach","sourceEl","index","targetEl","addInteraction","trigger","params","targets","_addInteraction","instance","sourceRoot","interactionVariations","effects","effectId","interactionId","effectOptions","dataCache","addedInteractions","mql","conditions","targetElement","getElement","watchChildList","addEffectsForTarget","_instance$dataCache$i","interactions","interactionIds","Object","keys","effectVariations","some","_ref","sourceElement","undefined","length","options","_TRIGGER_TO_HANDLER_M","transition","transitionProperties","args","properties","childSelector","closest","renderStyle","add","forceReducedMotion","getInstance","setElement","triggers","hasTriggers","hasEffects","addListItems"],"sources":["../../../src/core/add.ts"],"sourcesContent":["import type {\n Effect,\n TriggerType,\n EffectRef,\n InteractionParamsTypes,\n TransitionEffect,\n IWixInteractElement,\n Interaction,\n InteractionTrigger,\n CreateTransitionCSSParams,\n} from '../types';\nimport { createTransitionCSS, getMediaQuery } from '../utils';\nimport { Interact, getSelector } from './Interact';\nimport TRIGGER_TO_HANDLER_MODULE_MAP from '../handlers';\n\nfunction _getElementsFromData(\n data: Interaction | Effect,\n root: IWixInteractElement,\n): HTMLElement | HTMLElement[] | null {\n if (data.listContainer) {\n const container = root.querySelector(data.listContainer);\n\n if (!container) {\n console.warn(\n `WixInteract: No container found for list container \"${data.listContainer}\"`,\n );\n\n return [];\n }\n\n if (data.selector) {\n return Array.from(\n container.querySelectorAll(data.selector),\n ) as HTMLElement[];\n }\n\n return Array.from(container.children) as HTMLElement[];\n }\n\n if (data.selector) {\n const element = root.querySelector(data.selector);\n\n if (element) {\n return element as HTMLElement;\n } else {\n console.warn(\n `WixInteract: No element found for selector \"${data.selector}\"`,\n );\n }\n }\n\n return root.firstElementChild as HTMLElement | null;\n}\n\nfunction _queryItemElement(\n data: Interaction | Effect,\n elements: HTMLElement[],\n): HTMLElement[] {\n return elements\n .map((element) => {\n return !data.selector || element.matches(data.selector)\n ? element\n : element.querySelector(data.selector);\n })\n .filter(Boolean) as HTMLElement[];\n}\n\nfunction _getInteractionElements(\n interaction: InteractionTrigger,\n effect: Effect,\n source: IWixInteractElement,\n target: IWixInteractElement,\n sourceElements?: HTMLElement[],\n targetElements?: HTMLElement[],\n): [HTMLElement | HTMLElement[] | null, HTMLElement | HTMLElement[] | null] {\n return [\n sourceElements\n ? _queryItemElement(interaction, sourceElements)\n : _getElementsFromData(interaction, source),\n targetElements\n ? _queryItemElement(effect, targetElements)\n : _getElementsFromData(effect, target),\n ];\n}\n\nfunction _applyInteraction(\n key: string,\n interaction: InteractionTrigger,\n effect: Effect,\n sourceElements: HTMLElement | HTMLElement[],\n targetElements: HTMLElement | HTMLElement[],\n listContainer: string | undefined,\n) {\n const isSourceArray = Array.isArray(sourceElements);\n const isTargetArray = Array.isArray(targetElements);\n\n if (isSourceArray) {\n sourceElements.forEach((sourceEl, index) => {\n const targetEl = isTargetArray ? targetElements[index] : targetElements;\n\n if (targetEl) {\n addInteraction(\n key,\n sourceEl,\n interaction.trigger,\n targetEl,\n effect as Effect,\n interaction.params!,\n listContainer,\n );\n }\n });\n } else {\n const targets = isTargetArray ? targetElements : [targetElements];\n targets.forEach((targetEl) => {\n addInteraction(\n key,\n sourceElements,\n interaction.trigger,\n targetEl,\n effect as Effect,\n interaction.params!,\n listContainer,\n );\n });\n }\n}\n\nfunction _addInteraction(\n instance: Interact,\n interaction: Interaction,\n sourceRoot: IWixInteractElement,\n elements?: 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!] && !elements) {\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 = effectOptions.key;\n\n let targetElement;\n if (target) {\n targetElement = Interact.getElement(target);\n\n if (!targetElement) {\n // Bail out :: no target element in cache\n return;\n }\n\n if (effectOptions.listContainer) {\n targetElement.watchChildList(effectOptions.listContainer);\n }\n } else {\n // target is not specified - fallback to same as source\n targetElement = sourceRoot;\n }\n\n const [sourceElements, targetElements] = _getInteractionElements(\n interaction,\n effectOptions,\n sourceRoot,\n targetElement!,\n elements,\n );\n\n if (!sourceElements || !targetElements) {\n return;\n }\n\n instance.addedInteractions[effectOptions.interactionId!] = true;\n\n const key = target || interaction.key;\n\n _applyInteraction(\n key,\n interaction,\n effectOptions,\n sourceElements,\n targetElements,\n effectOptions.listContainer || '',\n );\n }\n });\n}\n\nfunction addEffectsForTarget(\n key: string,\n element: IWixInteractElement,\n instance: Interact,\n listContainer?: string,\n elements?: HTMLElement[],\n) {\n const effects = instance.dataCache.interactions[key]?.effects || {};\n const interactionIds = Object.keys(effects);\n\n interactionIds.forEach((interactionId) => {\n if (instance.addedInteractions[interactionId] && !elements) {\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, ...interaction }) => {\n const effectId = (effect as EffectRef).effectId;\n\n const effectOptions = {\n ...(instance!.dataCache.effects[effectId] || {}),\n ...effect,\n effectId,\n };\n\n if (listContainer && effectOptions.listContainer !== listContainer) {\n // skip this effect if a listContainer was provided and it's not matching this effect.listContainer\n return false;\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 sourceElement = Interact.getElement(interaction.key);\n\n if (!sourceElement) {\n // Bail out :: no source or target elements in cache\n return true;\n }\n\n if (effectOptions.listContainer) {\n element.watchChildList(effectOptions.listContainer);\n }\n\n const [sourceElements, targetElements] = _getInteractionElements(\n interaction,\n effectOptions,\n sourceElement,\n element,\n undefined,\n elements,\n );\n\n if (!sourceElements || !targetElements) {\n // Bail out :: no source or target elements found in DOM\n return true;\n }\n\n instance!.addedInteractions[interactionId] = true;\n\n _applyInteraction(\n key,\n interaction,\n effectOptions as Effect,\n sourceElements,\n targetElements,\n effectOptions.listContainer || '',\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 key: string,\n source: HTMLElement,\n trigger: T,\n target: HTMLElement,\n effect: Effect,\n options: InteractionParamsTypes[T],\n listContainer: string | undefined,\n): void {\n if (\n (effect as TransitionEffect).transition ||\n (effect as TransitionEffect).transitionProperties\n ) {\n const args: CreateTransitionCSSParams = {\n key,\n effectId: (effect as Effect & { effectId: string }).effectId!,\n transition: (effect as TransitionEffect).transition,\n properties: (effect as TransitionEffect).transitionProperties,\n childSelector: getSelector(effect, true),\n };\n\n const root = target.closest('wix-interact-element') as IWixInteractElement;\n if (!root) {\n return;\n }\n\n root.renderStyle(createTransitionCSS(args));\n }\n\n TRIGGER_TO_HANDLER_MODULE_MAP[trigger]?.add(\n source,\n target,\n effect,\n options,\n Interact.forceReducedMotion,\n );\n}\n\n/**\n * Adds all events and effects to an element based on config\n */\nexport function add(element: IWixInteractElement, key: string): boolean {\n const instance = Interact.getInstance(key);\n\n if (!instance) {\n console.warn(`No instance found for key: ${key}`);\n\n // even if we don't find a matching instance, we still want to cache the element\n Interact.setElement(key, element);\n return false;\n }\n\n const { triggers = [] } = instance?.dataCache.interactions[key] || {};\n const hasTriggers = triggers.length > 0;\n\n instance.setElement(key, element);\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 if (interaction.listContainer) {\n element.watchChildList(interaction.listContainer);\n }\n\n _addInteraction(instance!, interaction, element);\n }\n });\n\n let hasEffects = false;\n if (instance) {\n hasEffects = addEffectsForTarget(key, element, instance);\n }\n\n return hasTriggers || hasEffects;\n}\n\nexport function addListItems(\n root: IWixInteractElement,\n key: string,\n listContainer: string,\n elements: HTMLElement[],\n) {\n const instance = Interact.getInstance(key);\n\n if (instance) {\n const { triggers = [] } = instance?.dataCache.interactions[key] || {};\n\n triggers.forEach((interaction) => {\n if (interaction.listContainer !== listContainer) {\n return;\n }\n\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, root, elements);\n }\n });\n\n addEffectsForTarget(key, root, instance, listContainer, elements);\n }\n}\n"],"mappings":"AAWA,SAASA,mBAAmB,EAAEC,aAAa,QAAQ,UAAU;AAC7D,SAASC,QAAQ,EAAEC,WAAW,QAAQ,YAAY;AAClD,OAAOC,6BAA6B,MAAM,aAAa;AAEvD,SAASC,oBAAoBA,CAC3BC,IAA0B,EAC1BC,IAAyB,EACW;EACpC,IAAID,IAAI,CAACE,aAAa,EAAE;IACtB,MAAMC,SAAS,GAAGF,IAAI,CAACG,aAAa,CAACJ,IAAI,CAACE,aAAa,CAAC;IAExD,IAAI,CAACC,SAAS,EAAE;MACdE,OAAO,CAACC,IAAI,CACV,uDAAuDN,IAAI,CAACE,aAAa,GAC3E,CAAC;MAED,OAAO,EAAE;IACX;IAEA,IAAIF,IAAI,CAACO,QAAQ,EAAE;MACjB,OAAOC,KAAK,CAACC,IAAI,CACfN,SAAS,CAACO,gBAAgB,CAACV,IAAI,CAACO,QAAQ,CAC1C,CAAC;IACH;IAEA,OAAOC,KAAK,CAACC,IAAI,CAACN,SAAS,CAACQ,QAAQ,CAAC;EACvC;EAEA,IAAIX,IAAI,CAACO,QAAQ,EAAE;IACjB,MAAMK,OAAO,GAAGX,IAAI,CAACG,aAAa,CAACJ,IAAI,CAACO,QAAQ,CAAC;IAEjD,IAAIK,OAAO,EAAE;MACX,OAAOA,OAAO;IAChB,CAAC,MAAM;MACLP,OAAO,CAACC,IAAI,CACV,+CAA+CN,IAAI,CAACO,QAAQ,GAC9D,CAAC;IACH;EACF;EAEA,OAAON,IAAI,CAACY,iBAAiB;AAC/B;AAEA,SAASC,iBAAiBA,CACxBd,IAA0B,EAC1Be,QAAuB,EACR;EACf,OAAOA,QAAQ,CACZC,GAAG,CAAEJ,OAAO,IAAK;IAChB,OAAO,CAACZ,IAAI,CAACO,QAAQ,IAAIK,OAAO,CAACK,OAAO,CAACjB,IAAI,CAACO,QAAQ,CAAC,GACnDK,OAAO,GACPA,OAAO,CAACR,aAAa,CAACJ,IAAI,CAACO,QAAQ,CAAC;EAC1C,CAAC,CAAC,CACDW,MAAM,CAACC,OAAO,CAAC;AACpB;AAEA,SAASC,uBAAuBA,CAC9BC,WAA+B,EAC/BC,MAAc,EACdC,MAA2B,EAC3BC,MAA2B,EAC3BC,cAA8B,EAC9BC,cAA8B,EAC4C;EAC1E,OAAO,CACLD,cAAc,GACVX,iBAAiB,CAACO,WAAW,EAAEI,cAAc,CAAC,GAC9C1B,oBAAoB,CAACsB,WAAW,EAAEE,MAAM,CAAC,EAC7CG,cAAc,GACVZ,iBAAiB,CAACQ,MAAM,EAAEI,cAAc,CAAC,GACzC3B,oBAAoB,CAACuB,MAAM,EAAEE,MAAM,CAAC,CACzC;AACH;AAEA,SAASG,iBAAiBA,CACxBC,GAAW,EACXP,WAA+B,EAC/BC,MAAc,EACdG,cAA2C,EAC3CC,cAA2C,EAC3CxB,aAAiC,EACjC;EACA,MAAM2B,aAAa,GAAGrB,KAAK,CAACsB,OAAO,CAACL,cAAc,CAAC;EACnD,MAAMM,aAAa,GAAGvB,KAAK,CAACsB,OAAO,CAACJ,cAAc,CAAC;EAEnD,IAAIG,aAAa,EAAE;IACjBJ,cAAc,CAACO,OAAO,CAAC,CAACC,QAAQ,EAAEC,KAAK,KAAK;MAC1C,MAAMC,QAAQ,GAAGJ,aAAa,GAAGL,cAAc,CAACQ,KAAK,CAAC,GAAGR,cAAc;MAEvE,IAAIS,QAAQ,EAAE;QACZC,cAAc,CACZR,GAAG,EACHK,QAAQ,EACRZ,WAAW,CAACgB,OAAO,EACnBF,QAAQ,EACRb,MAAM,EACND,WAAW,CAACiB,MAAM,EAClBpC,aACF,CAAC;MACH;IACF,CAAC,CAAC;EACJ,CAAC,MAAM;IACL,MAAMqC,OAAO,GAAGR,aAAa,GAAGL,cAAc,GAAG,CAACA,cAAc,CAAC;IACjEa,OAAO,CAACP,OAAO,CAAEG,QAAQ,IAAK;MAC5BC,cAAc,CACZR,GAAG,EACHH,cAAc,EACdJ,WAAW,CAACgB,OAAO,EACnBF,QAAQ,EACRb,MAAM,EACND,WAAW,CAACiB,MAAM,EAClBpC,aACF,CAAC;IACH,CAAC,CAAC;EACJ;AACF;AAEA,SAASsC,eAAeA,CACtBC,QAAkB,EAClBpB,WAAwB,EACxBqB,UAA+B,EAC/B3B,QAAwB,EACxB;EACA,MAAM4B,qBAA8C,GAAG,CAAC,CAAC;EAEzDtB,WAAW,CAACuB,OAAO,CAACZ,OAAO,CAAEV,MAAM,IAAK;IACtC,MAAMuB,QAAQ,GAAIvB,MAAM,CAAeuB,QAAQ;IAC/C,MAAMC,aAAa,GAAGxB,MAAM,CAACwB,aAAa;IAE1C,IAAIH,qBAAqB,CAACG,aAAa,CAAE,EAAE;MACzC;MACA;IACF;IAEA,MAAMC,aAAa,GAAG;MACpB,IAAIN,QAAQ,CAACO,SAAS,CAACJ,OAAO,CAACC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;MAC/C,GAAGvB,MAAM;MACTuB;IACF,CAAC;IAED,IAAIJ,QAAQ,CAACQ,iBAAiB,CAACF,aAAa,CAACD,aAAa,CAAE,IAAI,CAAC/B,QAAQ,EAAE;MACzE;MACA;IACF;;IAEA;IACA,MAAMmC,GAAG,GAAGvD,aAAa,CACvBoD,aAAa,CAACI,UAAU,IAAI,EAAE,EAC9BV,QAAQ,CAACO,SAAS,CAACG,UACrB,CAAC;IAED,IAAI,CAACD,GAAG,IAAIA,GAAG,CAACjC,OAAO,EAAE;MACvB0B,qBAAqB,CAACrB,MAAM,CAACwB,aAAa,CAAE,GAAG,IAAI;MAEnD,MAAMtB,MAAM,GAAGuB,aAAa,CAACnB,GAAG;MAEhC,IAAIwB,aAAa;MACjB,IAAI5B,MAAM,EAAE;QACV4B,aAAa,GAAGxD,QAAQ,CAACyD,UAAU,CAAC7B,MAAM,CAAC;QAE3C,IAAI,CAAC4B,aAAa,EAAE;UAClB;UACA;QACF;QAEA,IAAIL,aAAa,CAAC7C,aAAa,EAAE;UAC/BkD,aAAa,CAACE,cAAc,CAACP,aAAa,CAAC7C,aAAa,CAAC;QAC3D;MACF,CAAC,MAAM;QACL;QACAkD,aAAa,GAAGV,UAAU;MAC5B;MAEA,MAAM,CAACjB,cAAc,EAAEC,cAAc,CAAC,GAAGN,uBAAuB,CAC9DC,WAAW,EACX0B,aAAa,EACbL,UAAU,EACVU,aAAa,EACbrC,QACF,CAAC;MAED,IAAI,CAACU,cAAc,IAAI,CAACC,cAAc,EAAE;QACtC;MACF;MAEAe,QAAQ,CAACQ,iBAAiB,CAACF,aAAa,CAACD,aAAa,CAAE,GAAG,IAAI;MAE/D,MAAMlB,GAAG,GAAGJ,MAAM,IAAIH,WAAW,CAACO,GAAG;MAErCD,iBAAiB,CACfC,GAAG,EACHP,WAAW,EACX0B,aAAa,EACbtB,cAAc,EACdC,cAAc,EACdqB,aAAa,CAAC7C,aAAa,IAAI,EACjC,CAAC;IACH;EACF,CAAC,CAAC;AACJ;AAEA,SAASqD,mBAAmBA,CAC1B3B,GAAW,EACXhB,OAA4B,EAC5B6B,QAAkB,EAClBvC,aAAsB,EACtBa,QAAwB,EACxB;EAAA,IAAAyC,qBAAA;EACA,MAAMZ,OAAO,GAAG,EAAAY,qBAAA,GAAAf,QAAQ,CAACO,SAAS,CAACS,YAAY,CAAC7B,GAAG,CAAC,qBAApC4B,qBAAA,CAAsCZ,OAAO,KAAI,CAAC,CAAC;EACnE,MAAMc,cAAc,GAAGC,MAAM,CAACC,IAAI,CAAChB,OAAO,CAAC;EAE3Cc,cAAc,CAAC1B,OAAO,CAAEc,aAAa,IAAK;IACxC,IAAIL,QAAQ,CAACQ,iBAAiB,CAACH,aAAa,CAAC,IAAI,CAAC/B,QAAQ,EAAE;MAC1D;MACA;IACF;IAEA,MAAM8C,gBAAgB,GAAGjB,OAAO,CAACE,aAAa,CAAC;;IAE/C;IACA;IACAe,gBAAgB,CAACC,IAAI,CAACC,IAAA,IAAgC;MAAA,IAA/B;QAAEzC,MAAM;QAAE,GAAGD;MAAY,CAAC,GAAA0C,IAAA;MAC/C,MAAMlB,QAAQ,GAAIvB,MAAM,CAAeuB,QAAQ;MAE/C,MAAME,aAAa,GAAG;QACpB,IAAIN,QAAQ,CAAEO,SAAS,CAACJ,OAAO,CAACC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,GAAGvB,MAAM;QACTuB;MACF,CAAC;MAED,IAAI3C,aAAa,IAAI6C,aAAa,CAAC7C,aAAa,KAAKA,aAAa,EAAE;QAClE;QACA,OAAO,KAAK;MACd;;MAEA;MACA,MAAMgD,GAAG,GAAGvD,aAAa,CACvBoD,aAAa,CAACI,UAAU,IAAI,EAAE,EAC9BV,QAAQ,CAAEO,SAAS,CAACG,UACtB,CAAC;MAED,IAAI,CAACD,GAAG,IAAIA,GAAG,CAACjC,OAAO,EAAE;QACvB,MAAM+C,aAAa,GAAGpE,QAAQ,CAACyD,UAAU,CAAChC,WAAW,CAACO,GAAG,CAAC;QAE1D,IAAI,CAACoC,aAAa,EAAE;UAClB;UACA,OAAO,IAAI;QACb;QAEA,IAAIjB,aAAa,CAAC7C,aAAa,EAAE;UAC/BU,OAAO,CAAC0C,cAAc,CAACP,aAAa,CAAC7C,aAAa,CAAC;QACrD;QAEA,MAAM,CAACuB,cAAc,EAAEC,cAAc,CAAC,GAAGN,uBAAuB,CAC9DC,WAAW,EACX0B,aAAa,EACbiB,aAAa,EACbpD,OAAO,EACPqD,SAAS,EACTlD,QACF,CAAC;QAED,IAAI,CAACU,cAAc,IAAI,CAACC,cAAc,EAAE;UACtC;UACA,OAAO,IAAI;QACb;QAEAe,QAAQ,CAAEQ,iBAAiB,CAACH,aAAa,CAAC,GAAG,IAAI;QAEjDnB,iBAAiB,CACfC,GAAG,EACHP,WAAW,EACX0B,aAAa,EACbtB,cAAc,EACdC,cAAc,EACdqB,aAAa,CAAC7C,aAAa,IAAI,EACjC,CAAC;;QAED;QACA,OAAO,IAAI;MACb;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,OAAOwD,cAAc,CAACQ,MAAM,GAAG,CAAC;AAClC;;AAEA;AACA;AACA;AACA,SAAS9B,cAAcA,CACrBR,GAAW,EACXL,MAAmB,EACnBc,OAAU,EACVb,MAAmB,EACnBF,MAAc,EACd6C,OAAkC,EAClCjE,aAAiC,EAC3B;EAAA,IAAAkE,qBAAA;EACN,IACG9C,MAAM,CAAsB+C,UAAU,IACtC/C,MAAM,CAAsBgD,oBAAoB,EACjD;IACA,MAAMC,IAA+B,GAAG;MACtC3C,GAAG;MACHiB,QAAQ,EAAGvB,MAAM,CAAmCuB,QAAS;MAC7DwB,UAAU,EAAG/C,MAAM,CAAsB+C,UAAU;MACnDG,UAAU,EAAGlD,MAAM,CAAsBgD,oBAAoB;MAC7DG,aAAa,EAAE5E,WAAW,CAACyB,MAAM,EAAE,IAAI;IACzC,CAAC;IAED,MAAMrB,IAAI,GAAGuB,MAAM,CAACkD,OAAO,CAAC,sBAAsB,CAAwB;IAC1E,IAAI,CAACzE,IAAI,EAAE;MACT;IACF;IAEAA,IAAI,CAAC0E,WAAW,CAACjF,mBAAmB,CAAC6E,IAAI,CAAC,CAAC;EAC7C;EAEA,CAAAH,qBAAA,GAAAtE,6BAA6B,CAACuC,OAAO,CAAC,aAAtC+B,qBAAA,CAAwCQ,GAAG,CACzCrD,MAAM,EACNC,MAAM,EACNF,MAAM,EACN6C,OAAO,EACPvE,QAAQ,CAACiF,kBACX,CAAC;AACH;;AAEA;AACA;AACA;AACA,OAAO,SAASD,GAAGA,CAAChE,OAA4B,EAAEgB,GAAW,EAAW;EACtE,MAAMa,QAAQ,GAAG7C,QAAQ,CAACkF,WAAW,CAAClD,GAAG,CAAC;EAE1C,IAAI,CAACa,QAAQ,EAAE;IACbpC,OAAO,CAACC,IAAI,CAAC,8BAA8BsB,GAAG,EAAE,CAAC;;IAEjD;IACAhC,QAAQ,CAACmF,UAAU,CAACnD,GAAG,EAAEhB,OAAO,CAAC;IACjC,OAAO,KAAK;EACd;EAEA,MAAM;IAAEoE,QAAQ,GAAG;EAAG,CAAC,GAAG,CAAAvC,QAAQ,oBAARA,QAAQ,CAAEO,SAAS,CAACS,YAAY,CAAC7B,GAAG,CAAC,KAAI,CAAC,CAAC;EACrE,MAAMqD,WAAW,GAAGD,QAAQ,CAACd,MAAM,GAAG,CAAC;EAEvCzB,QAAQ,CAACsC,UAAU,CAACnD,GAAG,EAAEhB,OAAO,CAAC;EAEjCoE,QAAQ,CAAChD,OAAO,CAAEX,WAAW,IAAK;IAChC,MAAM6B,GAAG,GAAGvD,aAAa,CACvB0B,WAAW,CAAC8B,UAAU,EACtBV,QAAQ,CAAEO,SAAS,CAACG,UACtB,CAAC;;IAED;IACA,IAAI,CAACD,GAAG,IAAIA,GAAG,CAACjC,OAAO,EAAE;MACvB,IAAII,WAAW,CAACnB,aAAa,EAAE;QAC7BU,OAAO,CAAC0C,cAAc,CAACjC,WAAW,CAACnB,aAAa,CAAC;MACnD;MAEAsC,eAAe,CAACC,QAAQ,EAAGpB,WAAW,EAAET,OAAO,CAAC;IAClD;EACF,CAAC,CAAC;EAEF,IAAIsE,UAAU,GAAG,KAAK;EACtB,IAAIzC,QAAQ,EAAE;IACZyC,UAAU,GAAG3B,mBAAmB,CAAC3B,GAAG,EAAEhB,OAAO,EAAE6B,QAAQ,CAAC;EAC1D;EAEA,OAAOwC,WAAW,IAAIC,UAAU;AAClC;AAEA,OAAO,SAASC,YAAYA,CAC1BlF,IAAyB,EACzB2B,GAAW,EACX1B,aAAqB,EACrBa,QAAuB,EACvB;EACA,MAAM0B,QAAQ,GAAG7C,QAAQ,CAACkF,WAAW,CAAClD,GAAG,CAAC;EAE1C,IAAIa,QAAQ,EAAE;IACZ,MAAM;MAAEuC,QAAQ,GAAG;IAAG,CAAC,GAAG,CAAAvC,QAAQ,oBAARA,QAAQ,CAAEO,SAAS,CAACS,YAAY,CAAC7B,GAAG,CAAC,KAAI,CAAC,CAAC;IAErEoD,QAAQ,CAAChD,OAAO,CAAEX,WAAW,IAAK;MAChC,IAAIA,WAAW,CAACnB,aAAa,KAAKA,aAAa,EAAE;QAC/C;MACF;MAEA,MAAMgD,GAAG,GAAGvD,aAAa,CACvB0B,WAAW,CAAC8B,UAAU,EACtBV,QAAQ,CAAEO,SAAS,CAACG,UACtB,CAAC;;MAED;MACA,IAAI,CAACD,GAAG,IAAIA,GAAG,CAACjC,OAAO,EAAE;QACvBuB,eAAe,CAACC,QAAQ,EAAGpB,WAAW,EAAEpB,IAAI,EAAEc,QAAQ,CAAC;MACzD;IACF,CAAC,CAAC;IAEFwC,mBAAmB,CAAC3B,GAAG,EAAE3B,IAAI,EAAEwC,QAAQ,EAAEvC,aAAa,EAAEa,QAAQ,CAAC;EACnE;AACF","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["createTransitionCSS","getMediaQuery","getInterpolatedKey","Interact","getSelector","TRIGGER_TO_HANDLER_MODULE_MAP","_getElementsFromData","data","root","listContainer","container","querySelector","console","warn","selector","Array","from","querySelectorAll","children","element","firstElementChild","_queryItemElement","elements","map","filter","Boolean","_getInteractionElements","interaction","effect","source","target","sourceElements","targetElements","_applyInteraction","key","isSourceArray","isArray","isTargetArray","forEach","sourceEl","index","targetEl","addInteraction","trigger","params","targets","_addInteraction","sourceKey","sourceRoot","instance","interactionVariations","effects","effectId","effectOptions","dataCache","targetKey_","interactionId","addedInteractions","mql","conditions","matches","targetElement","getElement","watchChildList","addEffectsForTarget","targetKey","_instance$get","get","interactionIds","Object","keys","interactionId_","effectVariations","some","_ref","sourceElement","undefined","length","options","_TRIGGER_TO_HANDLER_M","transition","transitionProperties","args","properties","childSelector","asCombinator","addItemFilter","closest","renderStyle","add","forceReducedMotion","getInstance","setElement","triggers","hasTriggers","hasEffects","addListItems"],"sources":["../../../src/core/add.ts"],"sourcesContent":["import type {\n Effect,\n TriggerType,\n EffectRef,\n InteractionParamsTypes,\n TransitionEffect,\n IWixInteractElement,\n Interaction,\n InteractionTrigger,\n CreateTransitionCSSParams,\n} from '../types';\nimport { createTransitionCSS, getMediaQuery } from '../utils';\nimport { getInterpolatedKey } from './utilities';\nimport { Interact, getSelector } from './Interact';\nimport TRIGGER_TO_HANDLER_MODULE_MAP from '../handlers';\n\nfunction _getElementsFromData(\n data: Interaction | Effect,\n root: IWixInteractElement,\n): HTMLElement | HTMLElement[] | null {\n if (data.listContainer) {\n const container = root.querySelector(data.listContainer);\n\n if (!container) {\n console.warn(\n `WixInteract: No container found for list container \"${data.listContainer}\"`,\n );\n\n return [];\n }\n\n if (data.selector) {\n return Array.from(\n container.querySelectorAll(data.selector),\n ) as HTMLElement[];\n }\n\n return Array.from(container.children) as HTMLElement[];\n }\n\n if (data.selector) {\n const element = root.querySelector(data.selector);\n\n if (element) {\n return element as HTMLElement;\n } else {\n console.warn(\n `WixInteract: No element found for selector \"${data.selector}\"`,\n );\n }\n }\n\n return root.firstElementChild as HTMLElement | null;\n}\n\nfunction _queryItemElement(\n data: Interaction | Effect,\n elements: HTMLElement[],\n): HTMLElement[] {\n return elements\n .map((element) => {\n return data.selector ? element.querySelector(data.selector) : element;\n })\n .filter(Boolean) as HTMLElement[];\n}\n\nfunction _getInteractionElements(\n interaction: InteractionTrigger,\n effect: Effect,\n source: IWixInteractElement,\n target: IWixInteractElement,\n sourceElements?: HTMLElement[],\n targetElements?: HTMLElement[],\n): [HTMLElement | HTMLElement[] | null, HTMLElement | HTMLElement[] | null] {\n return [\n sourceElements\n ? _queryItemElement(interaction, sourceElements)\n : _getElementsFromData(interaction, source),\n targetElements\n ? _queryItemElement(effect, targetElements)\n : _getElementsFromData(effect, target),\n ];\n}\n\nfunction _applyInteraction(\n key: string,\n interaction: InteractionTrigger,\n effect: Effect,\n sourceElements: HTMLElement | HTMLElement[],\n targetElements: HTMLElement | HTMLElement[],\n) {\n const isSourceArray = Array.isArray(sourceElements);\n const isTargetArray = Array.isArray(targetElements);\n\n if (isSourceArray) {\n sourceElements.forEach((sourceEl, index) => {\n const targetEl = isTargetArray ? targetElements[index] : targetElements;\n\n if (targetEl) {\n addInteraction(\n key,\n sourceEl,\n interaction.trigger,\n targetEl,\n effect as Effect,\n interaction.params!,\n );\n }\n });\n } else {\n const targets = isTargetArray ? targetElements : [targetElements];\n targets.forEach((targetEl) => {\n addInteraction(\n key,\n sourceElements,\n interaction.trigger,\n targetEl,\n effect as Effect,\n interaction.params!,\n );\n });\n }\n}\n\nfunction _addInteraction(\n sourceKey: string,\n sourceRoot: IWixInteractElement,\n instance: Interact,\n interaction: Interaction,\n elements?: HTMLElement[],\n) {\n const interactionVariations: Record<string, boolean> = {};\n\n interaction.effects.forEach((effect) => {\n const effectId = (effect as EffectRef).effectId;\n\n const effectOptions = {\n ...(instance.dataCache.effects[effectId] || {}),\n ...effect,\n effectId,\n };\n const targetKey_ = effectOptions.key;\n\n const interactionId = getInterpolatedKey(effect.interactionId!, sourceKey);\n\n if (interactionVariations[interactionId!]) {\n // Skip this effect if it has already been added\n return;\n }\n\n if (instance.addedInteractions[interactionId!] && !elements) {\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[interactionId!] = true;\n\n const target = targetKey_ && getInterpolatedKey(targetKey_, sourceKey);\n\n let targetElement;\n if (target) {\n targetElement = Interact.getElement(target);\n\n if (!targetElement) {\n // Bail out :: no target element in cache\n return;\n }\n\n if (effectOptions.listContainer) {\n targetElement.watchChildList(effectOptions.listContainer);\n }\n } else {\n // target is not specified - fallback to same as source\n targetElement = sourceRoot;\n }\n\n const [sourceElements, targetElements] = _getInteractionElements(\n interaction,\n effectOptions,\n sourceRoot,\n targetElement!,\n elements,\n );\n\n if (!sourceElements || !targetElements) {\n return;\n }\n\n instance.addedInteractions[interactionId!] = true;\n\n const key = target || interaction.key;\n\n _applyInteraction(\n key,\n interaction,\n effectOptions,\n sourceElements,\n targetElements,\n );\n }\n });\n}\n\nfunction addEffectsForTarget(\n targetKey: string,\n element: IWixInteractElement,\n instance: Interact,\n listContainer?: string,\n elements?: HTMLElement[],\n) {\n const effects = instance.get(targetKey)?.effects || {};\n const interactionIds = Object.keys(effects);\n\n interactionIds.forEach((interactionId_) => {\n const interactionId = getInterpolatedKey(interactionId_, targetKey);\n\n if (instance.addedInteractions[interactionId] && !elements) {\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, ...interaction }) => {\n const effectId = (effect as EffectRef).effectId;\n\n const effectOptions = {\n ...(instance!.dataCache.effects[effectId] || {}),\n ...effect,\n effectId,\n };\n\n if (listContainer && effectOptions.listContainer !== listContainer) {\n // skip this effect if a listContainer was provided and it's not matching this effect.listContainer\n return false;\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 sourceKey =\n interaction.key && getInterpolatedKey(interaction.key, targetKey);\n const sourceElement = Interact.getElement(sourceKey);\n\n if (!sourceElement) {\n // Bail out :: no source or target elements in cache\n return true;\n }\n\n if (effectOptions.listContainer) {\n element.watchChildList(effectOptions.listContainer);\n }\n\n const [sourceElements, targetElements] = _getInteractionElements(\n interaction,\n effectOptions,\n sourceElement,\n element,\n undefined,\n elements,\n );\n\n if (!sourceElements || !targetElements) {\n // Bail out :: no source or target elements found in DOM\n return true;\n }\n\n instance!.addedInteractions[interactionId] = true;\n\n _applyInteraction(\n targetKey,\n interaction,\n effectOptions as Effect,\n sourceElements,\n targetElements,\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 key: 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 key,\n effectId: (effect as Effect).effectId!,\n transition: (effect as TransitionEffect).transition,\n properties: (effect as TransitionEffect).transitionProperties,\n childSelector: getSelector(effect, {\n asCombinator: true,\n addItemFilter: true,\n }),\n };\n\n const root = target.closest('wix-interact-element') as IWixInteractElement;\n if (!root) {\n return;\n }\n\n root.renderStyle(createTransitionCSS(args));\n }\n\n TRIGGER_TO_HANDLER_MODULE_MAP[trigger]?.add(\n source,\n target,\n effect,\n options,\n Interact.forceReducedMotion,\n );\n}\n\n/**\n * Adds all events and effects to an element based on config\n */\nexport function add(element: IWixInteractElement, key: string): boolean {\n const instance = Interact.getInstance(key);\n\n if (!instance) {\n console.warn(`No instance found for key: ${key}`);\n\n // even if we don't find a matching instance, we still want to cache the element\n Interact.setElement(key, element);\n return false;\n }\n\n const { triggers = [] } = instance?.get(key) || {};\n const hasTriggers = triggers.length > 0;\n\n instance.setElement(key, element);\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 if (interaction.listContainer) {\n element.watchChildList(interaction.listContainer);\n }\n\n _addInteraction(key, element, instance!, interaction);\n }\n });\n\n let hasEffects = false;\n if (instance) {\n hasEffects = addEffectsForTarget(key, element, instance);\n }\n\n return hasTriggers || hasEffects;\n}\n\nexport function addListItems(\n root: IWixInteractElement,\n key: string,\n listContainer: string,\n elements: HTMLElement[],\n) {\n const instance = Interact.getInstance(key);\n\n if (instance) {\n const { triggers = [] } = instance?.get(key) || {};\n\n triggers.forEach((interaction) => {\n if (interaction.listContainer !== listContainer) {\n return;\n }\n\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(key, root, instance!, interaction, elements);\n }\n });\n\n addEffectsForTarget(key, root, instance, listContainer, elements);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/esm/core/remove.js
CHANGED
|
@@ -5,7 +5,7 @@ import TRIGGER_TO_HANDLER_MODULE_MAP from '../handlers';
|
|
|
5
5
|
* Removes all events and effects from an element based on config
|
|
6
6
|
*/
|
|
7
7
|
export function remove(key) {
|
|
8
|
-
var _instance$
|
|
8
|
+
var _instance$get;
|
|
9
9
|
const instance = Interact.getInstance(key);
|
|
10
10
|
if (!instance) {
|
|
11
11
|
return;
|
|
@@ -14,18 +14,17 @@ export function remove(key) {
|
|
|
14
14
|
if (!root) {
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
17
|
-
const selectors = [...((_instance$
|
|
17
|
+
const selectors = [...(((_instance$get = instance.get(key)) == null ? void 0 : _instance$get.selectors.values()) || [])].join(',');
|
|
18
18
|
const elements = root.querySelectorAll(selectors);
|
|
19
|
-
|
|
20
|
-
Object.values(TRIGGER_TO_HANDLER_MODULE_MAP).forEach(module => {
|
|
21
|
-
module.remove(element);
|
|
22
|
-
});
|
|
23
|
-
}
|
|
19
|
+
removeListItems(Array.from(elements));
|
|
24
20
|
instance == null || instance.deleteElement(key);
|
|
25
21
|
}
|
|
26
22
|
export function removeListItems(elements) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
const modules = Object.values(TRIGGER_TO_HANDLER_MODULE_MAP);
|
|
24
|
+
for (const element of elements) {
|
|
25
|
+
for (const module of modules) {
|
|
26
|
+
module.remove(element);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
30
29
|
}
|
|
31
30
|
//# sourceMappingURL=remove.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Interact","TRIGGER_TO_HANDLER_MODULE_MAP","remove","key","_instance$
|
|
1
|
+
{"version":3,"names":["Interact","TRIGGER_TO_HANDLER_MODULE_MAP","remove","key","_instance$get","instance","getInstance","root","getElement","selectors","get","values","join","elements","querySelectorAll","removeListItems","Array","from","deleteElement","modules","Object","element","module"],"sources":["../../../src/core/remove.ts"],"sourcesContent":["import { Interact } from './Interact';\nimport TRIGGER_TO_HANDLER_MODULE_MAP from '../handlers';\n\n/**\n * Removes all events and effects from an element based on config\n */\nexport function remove(key: string): void {\n const instance = Interact.getInstance(key);\n\n if (!instance) {\n return;\n }\n\n const root = Interact.getElement(key);\n if (!root) {\n return;\n }\n\n const selectors = [...(instance.get(key)?.selectors.values() || [])].join(\n ',',\n );\n const elements = root.querySelectorAll(selectors);\n\n removeListItems(Array.from(elements) as HTMLElement[]);\n\n instance?.deleteElement(key);\n}\n\nexport function removeListItems(elements: HTMLElement[]) {\n const modules = Object.values(TRIGGER_TO_HANDLER_MODULE_MAP);\n\n for (const element of elements) {\n for (const module of modules) {\n module.remove(element);\n }\n }\n}\n"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,YAAY;AACrC,OAAOC,6BAA6B,MAAM,aAAa;;AAEvD;AACA;AACA;AACA,OAAO,SAASC,MAAMA,CAACC,GAAW,EAAQ;EAAA,IAAAC,aAAA;EACxC,MAAMC,QAAQ,GAAGL,QAAQ,CAACM,WAAW,CAACH,GAAG,CAAC;EAE1C,IAAI,CAACE,QAAQ,EAAE;IACb;EACF;EAEA,MAAME,IAAI,GAAGP,QAAQ,CAACQ,UAAU,CAACL,GAAG,CAAC;EACrC,IAAI,CAACI,IAAI,EAAE;IACT;EACF;EAEA,MAAME,SAAS,GAAG,CAAC,IAAI,EAAAL,aAAA,GAAAC,QAAQ,CAACK,GAAG,CAACP,GAAG,CAAC,qBAAjBC,aAAA,CAAmBK,SAAS,CAACE,MAAM,CAAC,CAAC,KAAI,EAAE,CAAC,CAAC,CAACC,IAAI,CACvE,GACF,CAAC;EACD,MAAMC,QAAQ,GAAGN,IAAI,CAACO,gBAAgB,CAACL,SAAS,CAAC;EAEjDM,eAAe,CAACC,KAAK,CAACC,IAAI,CAACJ,QAAQ,CAAkB,CAAC;EAEtDR,QAAQ,YAARA,QAAQ,CAAEa,aAAa,CAACf,GAAG,CAAC;AAC9B;AAEA,OAAO,SAASY,eAAeA,CAACF,QAAuB,EAAE;EACvD,MAAMM,OAAO,GAAGC,MAAM,CAACT,MAAM,CAACV,6BAA6B,CAAC;EAE5D,KAAK,MAAMoB,OAAO,IAAIR,QAAQ,EAAE;IAC9B,KAAK,MAAMS,MAAM,IAAIH,OAAO,EAAE;MAC5BG,MAAM,CAACpB,MAAM,CAACmB,OAAO,CAAC;IACxB;EACF;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function _processKeysForInterpolation(key) {
|
|
2
|
+
return [...key.matchAll(/\[([-\w]+)]/g)].map(_ref => {
|
|
3
|
+
let [_, _instanceKey] = _ref;
|
|
4
|
+
return _instanceKey;
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
// TODO: currently only supports simple one-to-one mapping, e.g. item[0] -> item[0], item[1] -> item[1]
|
|
9
|
+
export function getInterpolatedKey(template, key) {
|
|
10
|
+
const keys = _processKeysForInterpolation(key);
|
|
11
|
+
let index = 0;
|
|
12
|
+
return keys.length ? template.replace(/\[]/g, () => `[${keys[index++]}]` || '[]') : template;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=utilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_processKeysForInterpolation","key","matchAll","map","_ref","_","_instanceKey","getInterpolatedKey","template","keys","index","length","replace"],"sources":["../../../src/core/utilities.ts"],"sourcesContent":["export function _processKeysForInterpolation(key: string) {\n return [...key.matchAll(/\\[([-\\w]+)]/g)].map(\n ([_, _instanceKey]) => _instanceKey,\n );\n}\n\n// TODO: currently only supports simple one-to-one mapping, e.g. item[0] -> item[0], item[1] -> item[1]\nexport function getInterpolatedKey(template: string, key: string) {\n const keys = _processKeysForInterpolation(key);\n let index = 0;\n return keys.length\n ? template.replace(/\\[]/g, () => `[${keys[index++]}]` || '[]')\n : template;\n}\n"],"mappings":"AAAA,OAAO,SAASA,4BAA4BA,CAACC,GAAW,EAAE;EACxD,OAAO,CAAC,GAAGA,GAAG,CAACC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAACC,GAAG,CAC1CC,IAAA;IAAA,IAAC,CAACC,CAAC,EAAEC,YAAY,CAAC,GAAAF,IAAA;IAAA,OAAKE,YAAY;EAAA,CACrC,CAAC;AACH;;AAEA;AACA,OAAO,SAASC,kBAAkBA,CAACC,QAAgB,EAAEP,GAAW,EAAE;EAChE,MAAMQ,IAAI,GAAGT,4BAA4B,CAACC,GAAG,CAAC;EAC9C,IAAIS,KAAK,GAAG,CAAC;EACb,OAAOD,IAAI,CAACE,MAAM,GACdH,QAAQ,CAACI,OAAO,CAAC,MAAM,EAAE,MAAM,IAAIH,IAAI,CAACC,KAAK,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,GAC5DF,QAAQ;AACd","ignoreList":[]}
|
|
@@ -32,20 +32,32 @@ function createTimeEffectHandler(element, effect, options, reducedMotion) {
|
|
|
32
32
|
// type === 'repeat'
|
|
33
33
|
// type === 'once'
|
|
34
34
|
animation.progress(0);
|
|
35
|
+
if (animation.isCSS) {
|
|
36
|
+
animation.onFinish(() => {
|
|
37
|
+
element.dataset.motionEnter = 'done';
|
|
38
|
+
});
|
|
39
|
+
}
|
|
35
40
|
animation.play();
|
|
36
41
|
}
|
|
37
42
|
};
|
|
38
43
|
}
|
|
39
44
|
function createTransitionHandler(element, _ref, options) {
|
|
40
45
|
let {
|
|
41
|
-
effectId
|
|
46
|
+
effectId,
|
|
47
|
+
listContainer,
|
|
48
|
+
listItemSelector
|
|
42
49
|
} = _ref;
|
|
50
|
+
const shouldSetStateOnElement = !!listContainer;
|
|
43
51
|
return __ => {
|
|
44
52
|
const wixInteractElement = element.closest('wix-interact-element');
|
|
45
53
|
if (!wixInteractElement) {
|
|
46
54
|
return;
|
|
47
55
|
}
|
|
48
|
-
|
|
56
|
+
let item;
|
|
57
|
+
if (shouldSetStateOnElement) {
|
|
58
|
+
item = element.closest(`${listContainer} > ${listItemSelector || ''}:has(:scope)`);
|
|
59
|
+
}
|
|
60
|
+
wixInteractElement.toggleEffect(effectId, options.method || 'toggle', item);
|
|
49
61
|
};
|
|
50
62
|
}
|
|
51
63
|
function addClickHandler(source, target, effect, options, reducedMotion) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getAnimation","effectToAnimationOptions","addHandlerToMap","removeElementFromHandlerMap","handlerMap","WeakMap","createTimeEffectHandler","element","effect","options","reducedMotion","animation","undefined","initialPlay","type","__","play","reverse","playState","pause","progress","createTransitionHandler","_ref","effectId","wixInteractElement","closest","toggleEffect","method","addClickHandler","source","target","handler","once","transition","transitionProperties","cleanup","removeEventListener","handlerObj","addEventListener","passive","removeClickHandler","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 {
|
|
1
|
+
{"version":3,"names":["getAnimation","effectToAnimationOptions","addHandlerToMap","removeElementFromHandlerMap","handlerMap","WeakMap","createTimeEffectHandler","element","effect","options","reducedMotion","animation","undefined","initialPlay","type","__","play","reverse","playState","pause","progress","isCSS","onFinish","dataset","motionEnter","createTransitionHandler","_ref","effectId","listContainer","listItemSelector","shouldSetStateOnElement","wixInteractElement","closest","item","toggleEffect","method","addClickHandler","source","target","handler","once","transition","transitionProperties","cleanup","removeEventListener","handlerObj","addEventListener","passive","removeClickHandler","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 EffectBase,\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 & EffectBase,\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\n if (animation.isCSS) {\n animation.onFinish(() => {\n element.dataset.motionEnter = 'done';\n });\n }\n\n animation.play();\n }\n };\n}\n\nfunction createTransitionHandler(\n element: HTMLElement,\n {\n effectId,\n listContainer,\n listItemSelector,\n }: TransitionEffect & EffectBase & { effectId: string },\n options: StateParams,\n) {\n const shouldSetStateOnElement = !!listContainer;\n\n return (__: MouseEvent) => {\n const wixInteractElement = element.closest(\n 'wix-interact-element',\n ) as IWixInteractElement;\n if (!wixInteractElement) {\n return;\n }\n\n let item;\n if (shouldSetStateOnElement) {\n item = element.closest(\n `${listContainer} > ${listItemSelector || ''}:has(:scope)`,\n ) as HTMLElement | null;\n }\n\n wixInteractElement.toggleEffect(effectId, options.method || 'toggle', item);\n };\n}\n\nfunction addClickHandler(\n source: HTMLElement,\n target: HTMLElement,\n effect: (TimeEffect | TransitionEffect) & EffectBase,\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 & EffectBase & { effectId: string },\n options as StateParams,\n );\n } else {\n handler = createTimeEffectHandler(\n target,\n effect as TimeEffect & EffectBase,\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":[]}
|
|
@@ -26,6 +26,11 @@ function createTimeEffectHandler(element, effect, options, reducedMotion) {
|
|
|
26
26
|
// type === 'repeat'
|
|
27
27
|
// type === 'once'
|
|
28
28
|
animation.progress(0);
|
|
29
|
+
if (animation.isCSS) {
|
|
30
|
+
animation.onFinish(() => {
|
|
31
|
+
element.dataset.motionEnter = 'done';
|
|
32
|
+
});
|
|
33
|
+
}
|
|
29
34
|
animation.play();
|
|
30
35
|
}
|
|
31
36
|
} else if (event.type === 'mouseleave') {
|
|
@@ -33,6 +38,7 @@ function createTimeEffectHandler(element, effect, options, reducedMotion) {
|
|
|
33
38
|
animation.reverse();
|
|
34
39
|
} else if (type === 'repeat') {
|
|
35
40
|
animation.cancel();
|
|
41
|
+
delete element.dataset.motionEnter;
|
|
36
42
|
} else if (type === 'state') {
|
|
37
43
|
if (animation.playState === 'running') {
|
|
38
44
|
animation.pause();
|
|
@@ -43,20 +49,27 @@ function createTimeEffectHandler(element, effect, options, reducedMotion) {
|
|
|
43
49
|
}
|
|
44
50
|
function createTransitionHandler(element, _ref, options) {
|
|
45
51
|
let {
|
|
46
|
-
effectId
|
|
52
|
+
effectId,
|
|
53
|
+
listContainer,
|
|
54
|
+
listItemSelector
|
|
47
55
|
} = _ref;
|
|
48
56
|
const method = options.method || 'toggle';
|
|
49
57
|
const isToggle = method === 'toggle';
|
|
58
|
+
const shouldSetStateOnElement = !!listContainer;
|
|
50
59
|
return event => {
|
|
51
60
|
const wixInteractElement = element.closest('wix-interact-element');
|
|
52
61
|
if (!wixInteractElement) {
|
|
53
62
|
return;
|
|
54
63
|
}
|
|
64
|
+
let item;
|
|
65
|
+
if (shouldSetStateOnElement) {
|
|
66
|
+
item = element.closest(`${listContainer} > ${listItemSelector || ''}:has(:scope)`);
|
|
67
|
+
}
|
|
55
68
|
if (event.type === 'mouseenter') {
|
|
56
69
|
const method_ = isToggle ? 'add' : method;
|
|
57
|
-
wixInteractElement.toggleEffect(effectId, method_);
|
|
70
|
+
wixInteractElement.toggleEffect(effectId, method_, item);
|
|
58
71
|
} else if (event.type === 'mouseleave' && isToggle) {
|
|
59
|
-
wixInteractElement.toggleEffect(effectId, 'remove');
|
|
72
|
+
wixInteractElement.toggleEffect(effectId, 'remove', item);
|
|
60
73
|
}
|
|
61
74
|
};
|
|
62
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getAnimation","effectToAnimationOptions","addHandlerToMap","removeElementFromHandlerMap","handlerMap","WeakMap","createTimeEffectHandler","element","effect","options","reducedMotion","animation","undefined","type","initialPlay","event","play","reverse","playState","progress","cancel","pause","createTransitionHandler","_ref","effectId","method","isToggle","wixInteractElement","closest","method_","toggleEffect","addHoverHandler","source","target","handler","isStateTrigger","once","transition","transitionProperties","cleanup","removeEventListener","handlerObj","addEventListener","passive","addLeave","removeHoverHandler","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 {
|
|
1
|
+
{"version":3,"names":["getAnimation","effectToAnimationOptions","addHandlerToMap","removeElementFromHandlerMap","handlerMap","WeakMap","createTimeEffectHandler","element","effect","options","reducedMotion","animation","undefined","type","initialPlay","event","play","reverse","playState","progress","isCSS","onFinish","dataset","motionEnter","cancel","pause","createTransitionHandler","_ref","effectId","listContainer","listItemSelector","method","isToggle","shouldSetStateOnElement","wixInteractElement","closest","item","method_","toggleEffect","addHoverHandler","source","target","handler","isStateTrigger","once","transition","transitionProperties","cleanup","removeEventListener","handlerObj","addEventListener","passive","addLeave","removeHoverHandler","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 EffectBase,\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 & EffectBase,\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\n if (animation.isCSS) {\n animation.onFinish(() => {\n element.dataset.motionEnter = 'done';\n });\n }\n\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 delete element.dataset.motionEnter;\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 {\n effectId,\n listContainer,\n listItemSelector,\n }: TransitionEffect & EffectBase & { effectId: string },\n options: StateParams,\n) {\n const method = options.method || 'toggle';\n const isToggle = method === 'toggle';\n const shouldSetStateOnElement = !!listContainer;\n\n return (event: MouseEvent) => {\n const wixInteractElement = element.closest(\n 'wix-interact-element',\n ) as IWixInteractElement;\n if (!wixInteractElement) {\n return;\n }\n\n let item;\n if (shouldSetStateOnElement) {\n item = element.closest(\n `${listContainer} > ${listItemSelector || ''}:has(:scope)`,\n ) as HTMLElement | null;\n }\n\n if (event.type === 'mouseenter') {\n const method_ = isToggle ? 'add' : method;\n wixInteractElement.toggleEffect(effectId, method_, item);\n } else if (event.type === 'mouseleave' && isToggle) {\n wixInteractElement.toggleEffect(effectId, 'remove', item);\n }\n };\n}\n\nfunction addHoverHandler(\n source: HTMLElement,\n target: HTMLElement,\n effect: (TransitionEffect | TimeEffect) & EffectBase,\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 & EffectBase & { effectId: string },\n options as StateParams,\n );\n isStateTrigger = true;\n } else {\n handler = createTimeEffectHandler(\n target,\n effect as TimeEffect & EffectBase,\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":[]}
|
|
@@ -42,16 +42,14 @@ function addViewEnterHandler(source, target, effect, options, reducedMotion) {
|
|
|
42
42
|
}
|
|
43
43
|
const observer = getObserver(options);
|
|
44
44
|
const animation = getAnimation(target, effectToAnimationOptions(effect), undefined, reducedMotion);
|
|
45
|
-
if (animation) {
|
|
45
|
+
if (animation != null && animation.isCSS && options.type === 'once') {
|
|
46
46
|
animation.onFinish(() => {
|
|
47
|
-
|
|
48
|
-
target.dispatchEvent(endEvent);
|
|
47
|
+
target.dataset.motionEnter = 'done';
|
|
49
48
|
});
|
|
50
49
|
}
|
|
51
50
|
const handler = () => {
|
|
52
51
|
animation.play(() => {
|
|
53
|
-
if (animation.
|
|
54
|
-
// hack this here until we solve initial state properly
|
|
52
|
+
if (!animation.isCSS) {
|
|
55
53
|
target.dataset.motionEnter = 'done';
|
|
56
54
|
}
|
|
57
55
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getAnimation","effectToAnimationOptions","addHandlerToMap","removeElementFromHandlerMap","observers","handlerMap","WeakMap","getObserver","options","key","JSON","stringify","observer","IntersectionObserver","entries","forEach","entry","isIntersecting","handlers","get","target","_ref","source","handler","type","unobserve","root","rootMargin","inset","threshold","addViewEnterHandler","effect","reducedMotion","animation","undefined","
|
|
1
|
+
{"version":3,"names":["getAnimation","effectToAnimationOptions","addHandlerToMap","removeElementFromHandlerMap","observers","handlerMap","WeakMap","getObserver","options","key","JSON","stringify","observer","IntersectionObserver","entries","forEach","entry","isIntersecting","handlers","get","target","_ref","source","handler","type","unobserve","root","rootMargin","inset","threshold","addViewEnterHandler","effect","reducedMotion","animation","undefined","isCSS","onFinish","dataset","motionEnter","play","cleanup","cancel","handlerObj","observe","removeViewEnterHandler","element","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?.isCSS && options.type === 'once') {\n animation.onFinish(() => {\n target.dataset.motionEnter = 'done';\n });\n }\n\n const handler = () => {\n animation.play(() => {\n if (!animation.isCSS) {\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":"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","ignoreList":[]}
|