@wix/interact 1.84.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 +9 -2
- package/dist/cjs/handlers/click.js.map +1 -1
- package/dist/cjs/handlers/hover.js +10 -3
- package/dist/cjs/handlers/hover.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 +9 -2
- package/dist/esm/handlers/click.js.map +1 -1
- package/dist/esm/handlers/hover.js +10 -3
- package/dist/esm/handlers/hover.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
|
@@ -83,11 +83,14 @@ function getWixInteractElement() {
|
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
|
-
toggleEffect(effectId, method) {
|
|
86
|
+
toggleEffect(effectId, method, item) {
|
|
87
|
+
if (item === null) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
87
90
|
if (isLegacyStateSyntax) {
|
|
88
91
|
effectId = `--${effectId}`;
|
|
89
92
|
}
|
|
90
|
-
if (this._internals) {
|
|
93
|
+
if (this._internals && !item) {
|
|
91
94
|
if (method === 'toggle') {
|
|
92
95
|
this._internals.states.has(effectId) ? this._internals.states.delete(effectId) : this._internals.states.add(effectId);
|
|
93
96
|
} else if (method === 'add') {
|
|
@@ -109,7 +112,7 @@ function getWixInteractElement() {
|
|
|
109
112
|
} else if (method === 'clear') {
|
|
110
113
|
currentEffects.clear();
|
|
111
114
|
}
|
|
112
|
-
this.dataset[WIX_INTERACT_EFFECT_DATA_ATTR] = Array.from(currentEffects).join(' ');
|
|
115
|
+
(item || this).dataset[WIX_INTERACT_EFFECT_DATA_ATTR] = Array.from(currentEffects).join(' ');
|
|
113
116
|
}
|
|
114
117
|
}
|
|
115
118
|
getActiveEffects() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_add","require","_remove","WIX_INTERACT_EFFECT_DATA_ATTR","exports","getWixInteractElement","checkedForLegacyStateSyntax","isLegacyStateSyntax","WixInteractElement","HTMLElement","constructor","_defineProperty2","default","connected","sheet","_observers","WeakMap","attachInternals","_internals","states","add","delete","e","connectedCallback","connect","disconnectedCallback","disconnect","key","dataset","wixPath","remove","index","document","adoptedStyleSheets","indexOf","splice","console","warn","renderStyle","cssRules","CSSStyleSheet","replace","join","push","position","length","cssRule","insertRule","error","toggleEffect","effectId","method","has","clear","_this$dataset$WIX_INT","currentEffects","Set","split","Array","from","getActiveEffects","effects","map","effect","raw","trimmed","trim","watchChildList","listContainer","list","querySelector","observer","get","MutationObserver","_childListChangeHandler","bind","set","observe","childList","entries","removedElements","addedElements","forEach","entry","removedNodes","el","addedNodes","removeListItems","addListItems"],"sources":["../../src/WixInteractElement.ts"],"sourcesContent":["import type { StateParams } from './types';\nimport { add, addListItems } from './core/add';\nimport { remove, removeListItems } from './core/remove';\n\nexport const WIX_INTERACT_EFFECT_DATA_ATTR = 'wixInteractEffect';\n\nexport function getWixInteractElement() {\n let checkedForLegacyStateSyntax = false;\n let isLegacyStateSyntax = false;\n\n return class WixInteractElement extends HTMLElement {\n _internals: (ElementInternals & { states: Set<string> }) | null;\n connected: boolean;\n sheet: CSSStyleSheet | null;\n _observers: WeakMap<HTMLElement, MutationObserver>;\n\n constructor() {\n super();\n\n this.connected = false;\n this.sheet = null;\n this._observers = new WeakMap();\n\n if (this.attachInternals) {\n this._internals = this.attachInternals() as ElementInternals & {\n states: Set<string>;\n };\n\n if (!checkedForLegacyStateSyntax) {\n checkedForLegacyStateSyntax = true;\n\n try {\n this._internals.states.add('test');\n this._internals.states.delete('test');\n } catch (e) {\n isLegacyStateSyntax = true;\n }\n }\n } else {\n checkedForLegacyStateSyntax = true; // custom states not supported - skip syntax check\n this._internals = null;\n }\n }\n connectedCallback() {\n this.connect();\n }\n\n disconnectedCallback() {\n this.disconnect();\n }\n\n disconnect() {\n const key = this.dataset.wixPath;\n\n if (key) {\n remove(key);\n }\n\n if (this.sheet) {\n const index = document.adoptedStyleSheets.indexOf(this.sheet);\n document.adoptedStyleSheets.splice(index, 1);\n }\n\n this._observers = new WeakMap();\n\n this.connected = false;\n }\n\n connect(key?: string) {\n if (this.connected) {\n return;\n }\n\n key = key || this.dataset.wixPath;\n\n if (!key) {\n console.warn('WixInteractElement: No key provided');\n return;\n }\n\n this.connected = add(this, key);\n }\n\n renderStyle(cssRules: string[]) {\n if (!this.sheet) {\n this.sheet = new CSSStyleSheet();\n void this.sheet.replace(cssRules.join('\\n'));\n\n document.adoptedStyleSheets.push(this.sheet);\n } else {\n let position = this.sheet.cssRules.length;\n\n for (const cssRule of cssRules) {\n try {\n this.sheet.insertRule(cssRule, position);\n position++;\n } catch (e) {\n console.error(e);\n }\n }\n }\n }\n\n toggleEffect(effectId: string, method: StateParams['method']) {\n if (isLegacyStateSyntax) {\n effectId = `--${effectId}`;\n }\n\n if (this._internals) {\n if (method === 'toggle') {\n this._internals.states.has(effectId)\n ? this._internals.states.delete(effectId)\n : this._internals.states.add(effectId);\n } else if (method === 'add') {\n this._internals.states.add(effectId);\n } else if (method === 'remove') {\n this._internals.states.delete(effectId);\n } else if (method === 'clear') {\n this._internals.states.clear();\n }\n } else {\n const currentEffects = new Set(\n this.dataset[WIX_INTERACT_EFFECT_DATA_ATTR]?.split(' ') || [],\n );\n\n if (method === 'toggle') {\n currentEffects.has(effectId)\n ? currentEffects.delete(effectId)\n : currentEffects.add(effectId);\n } else if (method === 'add') {\n currentEffects.add(effectId);\n } else if (method === 'remove') {\n currentEffects.delete(effectId);\n } else if (method === 'clear') {\n currentEffects.clear();\n }\n\n this.dataset[WIX_INTERACT_EFFECT_DATA_ATTR] =\n Array.from(currentEffects).join(' ');\n }\n }\n\n getActiveEffects(): string[] {\n if (this._internals) {\n const effects = Array.from(this._internals.states);\n return isLegacyStateSyntax\n ? effects.map((effect) => effect.replace(/^--/g, ''))\n : effects;\n }\n\n const raw = this.dataset[WIX_INTERACT_EFFECT_DATA_ATTR] || '';\n const trimmed = raw.trim();\n return trimmed ? trimmed.split(/\\s+/) : [];\n }\n\n watchChildList(listContainer: string): void {\n const list = this.querySelector(listContainer);\n\n if (list) {\n // TODO: we can probably improve this and use less observers, this impl. uses one per container element\n let observer = this._observers.get(list as HTMLElement);\n\n if (!observer) {\n observer = new MutationObserver(\n this._childListChangeHandler.bind(this, listContainer),\n );\n\n this._observers.set(list as HTMLElement, observer);\n\n observer.observe(list as HTMLElement, { childList: true });\n }\n }\n }\n\n _childListChangeHandler(listContainer: string, entries: MutationRecord[]) {\n const key = this.dataset.wixPath;\n const removedElements: HTMLElement[] = [];\n const addedElements: HTMLElement[] = [];\n\n entries.forEach((entry) => {\n entry.removedNodes.forEach((el) => {\n if (el instanceof HTMLElement) {\n removedElements.push(el);\n }\n });\n\n entry.addedNodes.forEach((el) => {\n if (el instanceof HTMLElement) {\n addedElements.push(el);\n }\n });\n });\n\n removeListItems(removedElements);\n key && addListItems(this, key, listContainer, addedElements);\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_add","require","_remove","WIX_INTERACT_EFFECT_DATA_ATTR","exports","getWixInteractElement","checkedForLegacyStateSyntax","isLegacyStateSyntax","WixInteractElement","HTMLElement","constructor","_defineProperty2","default","connected","sheet","_observers","WeakMap","attachInternals","_internals","states","add","delete","e","connectedCallback","connect","disconnectedCallback","disconnect","key","dataset","wixPath","remove","index","document","adoptedStyleSheets","indexOf","splice","console","warn","renderStyle","cssRules","CSSStyleSheet","replace","join","push","position","length","cssRule","insertRule","error","toggleEffect","effectId","method","item","has","clear","_this$dataset$WIX_INT","currentEffects","Set","split","Array","from","getActiveEffects","effects","map","effect","raw","trimmed","trim","watchChildList","listContainer","list","querySelector","observer","get","MutationObserver","_childListChangeHandler","bind","set","observe","childList","entries","removedElements","addedElements","forEach","entry","removedNodes","el","addedNodes","removeListItems","addListItems"],"sources":["../../src/WixInteractElement.ts"],"sourcesContent":["import type { StateParams } from './types';\nimport { add, addListItems } from './core/add';\nimport { remove, removeListItems } from './core/remove';\n\nexport const WIX_INTERACT_EFFECT_DATA_ATTR = 'wixInteractEffect';\n\nexport function getWixInteractElement() {\n let checkedForLegacyStateSyntax = false;\n let isLegacyStateSyntax = false;\n\n return class WixInteractElement extends HTMLElement {\n _internals: (ElementInternals & { states: Set<string> }) | null;\n connected: boolean;\n sheet: CSSStyleSheet | null;\n _observers: WeakMap<HTMLElement, MutationObserver>;\n\n constructor() {\n super();\n\n this.connected = false;\n this.sheet = null;\n this._observers = new WeakMap();\n\n if (this.attachInternals) {\n this._internals = this.attachInternals() as ElementInternals & {\n states: Set<string>;\n };\n\n if (!checkedForLegacyStateSyntax) {\n checkedForLegacyStateSyntax = true;\n\n try {\n this._internals.states.add('test');\n this._internals.states.delete('test');\n } catch (e) {\n isLegacyStateSyntax = true;\n }\n }\n } else {\n checkedForLegacyStateSyntax = true; // custom states not supported - skip syntax check\n this._internals = null;\n }\n }\n connectedCallback() {\n this.connect();\n }\n\n disconnectedCallback() {\n this.disconnect();\n }\n\n disconnect() {\n const key = this.dataset.wixPath;\n\n if (key) {\n remove(key);\n }\n\n if (this.sheet) {\n const index = document.adoptedStyleSheets.indexOf(this.sheet);\n document.adoptedStyleSheets.splice(index, 1);\n }\n\n this._observers = new WeakMap();\n\n this.connected = false;\n }\n\n connect(key?: string) {\n if (this.connected) {\n return;\n }\n\n key = key || this.dataset.wixPath;\n\n if (!key) {\n console.warn('WixInteractElement: No key provided');\n return;\n }\n\n this.connected = add(this, key);\n }\n\n renderStyle(cssRules: string[]) {\n if (!this.sheet) {\n this.sheet = new CSSStyleSheet();\n void this.sheet.replace(cssRules.join('\\n'));\n\n document.adoptedStyleSheets.push(this.sheet);\n } else {\n let position = this.sheet.cssRules.length;\n\n for (const cssRule of cssRules) {\n try {\n this.sheet.insertRule(cssRule, position);\n position++;\n } catch (e) {\n console.error(e);\n }\n }\n }\n }\n\n toggleEffect(\n effectId: string,\n method: StateParams['method'],\n item?: HTMLElement | null,\n ) {\n if (item === null) {\n return;\n }\n if (isLegacyStateSyntax) {\n effectId = `--${effectId}`;\n }\n\n if (this._internals && !item) {\n if (method === 'toggle') {\n this._internals.states.has(effectId)\n ? this._internals.states.delete(effectId)\n : this._internals.states.add(effectId);\n } else if (method === 'add') {\n this._internals.states.add(effectId);\n } else if (method === 'remove') {\n this._internals.states.delete(effectId);\n } else if (method === 'clear') {\n this._internals.states.clear();\n }\n } else {\n const currentEffects = new Set(\n this.dataset[WIX_INTERACT_EFFECT_DATA_ATTR]?.split(' ') || [],\n );\n\n if (method === 'toggle') {\n currentEffects.has(effectId)\n ? currentEffects.delete(effectId)\n : currentEffects.add(effectId);\n } else if (method === 'add') {\n currentEffects.add(effectId);\n } else if (method === 'remove') {\n currentEffects.delete(effectId);\n } else if (method === 'clear') {\n currentEffects.clear();\n }\n\n (item || this).dataset[WIX_INTERACT_EFFECT_DATA_ATTR] =\n Array.from(currentEffects).join(' ');\n }\n }\n\n getActiveEffects(): string[] {\n if (this._internals) {\n const effects = Array.from(this._internals.states);\n return isLegacyStateSyntax\n ? effects.map((effect) => effect.replace(/^--/g, ''))\n : effects;\n }\n\n const raw = this.dataset[WIX_INTERACT_EFFECT_DATA_ATTR] || '';\n const trimmed = raw.trim();\n return trimmed ? trimmed.split(/\\s+/) : [];\n }\n\n watchChildList(listContainer: string): void {\n const list = this.querySelector(listContainer);\n\n if (list) {\n // TODO: we can probably improve this and use less observers, this impl. uses one per container element\n let observer = this._observers.get(list as HTMLElement);\n\n if (!observer) {\n observer = new MutationObserver(\n this._childListChangeHandler.bind(this, listContainer),\n );\n\n this._observers.set(list as HTMLElement, observer);\n\n observer.observe(list as HTMLElement, { childList: true });\n }\n }\n }\n\n _childListChangeHandler(listContainer: string, entries: MutationRecord[]) {\n const key = this.dataset.wixPath;\n const removedElements: HTMLElement[] = [];\n const addedElements: HTMLElement[] = [];\n\n entries.forEach((entry) => {\n entry.removedNodes.forEach((el) => {\n if (el instanceof HTMLElement) {\n removedElements.push(el);\n }\n });\n\n entry.addedNodes.forEach((el) => {\n if (el instanceof HTMLElement) {\n addedElements.push(el);\n }\n });\n });\n\n removeListItems(removedElements);\n key && addListItems(this, key, listContainer, addedElements);\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,6 +5,7 @@ exports.__esModule = true;
|
|
|
5
5
|
exports.Interact = void 0;
|
|
6
6
|
exports.getSelector = getSelector;
|
|
7
7
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
8
|
+
var _utilities = require("./utilities");
|
|
8
9
|
var _WixInteractElement = require("../WixInteractElement");
|
|
9
10
|
var _utils = require("../utils");
|
|
10
11
|
var _Interact;
|
|
@@ -16,6 +17,9 @@ function registerWixInteractElement() {
|
|
|
16
17
|
}
|
|
17
18
|
return false;
|
|
18
19
|
}
|
|
20
|
+
function _convertToKeyTemplate(key) {
|
|
21
|
+
return key.replace(/\[([-\w]+)]/g, '[]');
|
|
22
|
+
}
|
|
19
23
|
class Interact {
|
|
20
24
|
constructor() {
|
|
21
25
|
(0, _defineProperty2.default)(this, "dataCache", void 0);
|
|
@@ -68,12 +72,17 @@ class Interact {
|
|
|
68
72
|
}
|
|
69
73
|
}
|
|
70
74
|
has(key) {
|
|
71
|
-
return !!this.
|
|
75
|
+
return !!this.get(key);
|
|
76
|
+
}
|
|
77
|
+
get(key) {
|
|
78
|
+
const processedKey = _convertToKeyTemplate(key);
|
|
79
|
+
return this.dataCache.interactions[processedKey];
|
|
72
80
|
}
|
|
73
81
|
clearInteractionStateForKey(key) {
|
|
74
|
-
var _this$
|
|
75
|
-
const interactionIds = ((_this$
|
|
76
|
-
interactionIds.forEach(
|
|
82
|
+
var _this$get;
|
|
83
|
+
const interactionIds = ((_this$get = this.get(key)) == null ? void 0 : _this$get.interactionIds) || [];
|
|
84
|
+
interactionIds.forEach(interactionId_ => {
|
|
85
|
+
const interactionId = (0, _utilities.getInterpolatedKey)(interactionId_, key);
|
|
77
86
|
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
78
87
|
delete this.addedInteractions[interactionId];
|
|
79
88
|
});
|
|
@@ -95,7 +104,7 @@ class Interact {
|
|
|
95
104
|
return Interact.instances.find(instance => instance.has(key));
|
|
96
105
|
}
|
|
97
106
|
static getElement(key) {
|
|
98
|
-
return Interact.elementCache.get(key);
|
|
107
|
+
return key ? Interact.elementCache.get(key) : undefined;
|
|
99
108
|
}
|
|
100
109
|
static setElement(key, element) {
|
|
101
110
|
Interact.elementCache.set(key, element);
|
|
@@ -107,12 +116,16 @@ _Interact = Interact;
|
|
|
107
116
|
(0, _defineProperty2.default)(Interact, "instances", []);
|
|
108
117
|
(0, _defineProperty2.default)(Interact, "elementCache", new Map());
|
|
109
118
|
let interactionIdCounter = 0;
|
|
110
|
-
function getSelector(d,
|
|
119
|
+
function getSelector(d, {
|
|
120
|
+
asCombinator = false,
|
|
121
|
+
addItemFilter = false
|
|
122
|
+
} = {}) {
|
|
111
123
|
if (d.listContainer) {
|
|
124
|
+
const itemFilter = `${addItemFilter && d.listItemSelector ? ` > ${d.listItemSelector}` : ''}`;
|
|
112
125
|
if (d.selector) {
|
|
113
|
-
return `${d.listContainer} ${d.selector}`;
|
|
126
|
+
return `${d.listContainer}${itemFilter} ${d.selector}`;
|
|
114
127
|
}
|
|
115
|
-
return `${d.listContainer} >
|
|
128
|
+
return `${d.listContainer}${itemFilter || ' > *'}`;
|
|
116
129
|
} else if (d.selector) {
|
|
117
130
|
return d.selector;
|
|
118
131
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_WixInteractElement","require","_utils","_Interact","registerWixInteractElement","customElements","get","wixInteractElement","getWixInteractElement","define","Interact","constructor","_defineProperty2","default","dataCache","effects","conditions","interactions","addedInteractions","listInteractionsCache","elements","Set","init","config","window","parseConfig","didRegister","elementCache","forEach","element","key","connect","destroy","disconnect","clear","instances","splice","indexOf","setElement","add","deleteElement","clearInteractionStateForKey","delete","has","_this$dataCache$inter","interactionIds","interactionId","create","instance","push","length","getInstance","find","getElement","set","exports","Map","interactionIdCounter","getSelector","d","asCombinator","listContainer","selector","_config$interactions","interaction_","source","interactionIdx","effects_","rest","console","error","triggers","selectors","Array","from","reverse","interaction","effect","target","effectId","referencedEffect","generateId"],"sources":["../../../src/core/Interact.ts"],"sourcesContent":["import {\n InteractCache,\n IWixInteractElement,\n InteractConfig,\n EffectRef,\n Effect,\n Interaction,\n} from '../types';\nimport { getWixInteractElement } from '../WixInteractElement';\nimport { generateId } from '../utils';\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 listInteractionsCache: {\n [listContainer: string]: { [interactionId: string]: boolean };\n };\n elements: Set<IWixInteractElement>;\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 this.listInteractionsCache = {};\n this.elements = new Set();\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, key) =>\n element.connect(key),\n );\n }\n }\n\n destroy(): void {\n for (let element of this.elements) {\n element.disconnect();\n }\n this.addedInteractions = {};\n this.listInteractionsCache = {};\n this.elements.clear();\n this.dataCache = { effects: {}, conditions: {}, interactions: {} };\n Interact.instances.splice(Interact.instances.indexOf(this), 1);\n }\n\n setElement(key: string, element: IWixInteractElement) {\n this.elements.add(element);\n\n Interact.setElement(key, element);\n }\n\n deleteElement(key: string) {\n const element = Interact.elementCache.get(key);\n\n this.clearInteractionStateForKey(key);\n\n if (element) {\n this.elements.delete(element);\n Interact.elementCache.delete(key);\n }\n }\n\n has(key: string): boolean {\n return !!this.dataCache.interactions[key];\n }\n\n clearInteractionStateForKey(key: string): void {\n const interactionIds =\n this.dataCache.interactions[key]?.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 destroy(): void {\n Interact.elementCache.forEach((element: IWixInteractElement) => {\n element.disconnect();\n });\n Interact.instances.length = 0;\n Interact.elementCache.clear();\n }\n\n static getInstance(key: string): Interact | undefined {\n return Interact.instances.find((instance) => instance.has(key));\n }\n\n static getElement(key: string): IWixInteractElement | undefined {\n return Interact.elementCache.get(key);\n }\n\n static setElement(key: string, element: IWixInteractElement): void {\n Interact.elementCache.set(key, element);\n }\n}\n\nlet interactionIdCounter = 0;\n\nexport function getSelector(\n d: Interaction | Effect,\n asCombinator: boolean = false,\n): string {\n if (d.listContainer) {\n if (d.selector) {\n return `${d.listContainer} ${d.selector}`;\n }\n\n return `${d.listContainer} > *`;\n } else if (d.selector) {\n return d.selector;\n }\n\n // TODO: consider moving :scope to be configurable since it may lead to unexpected results in some cases\n return asCombinator ? '> :first-child' : ':scope > :first-child';\n}\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_.key;\n const interactionIdx = ++interactionIdCounter;\n const { effects: effects_, ...rest } = interaction_;\n\n if (!source) {\n console.error(\n `Interaction ${interactionIdx} is missing a key for source element.`,\n );\n return;\n }\n\n if (!interactions[source]) {\n interactions[source] = {\n triggers: [],\n effects: {},\n interactionIds: new Set(),\n selectors: new Set(),\n };\n }\n\n /*\n * Cache interaction trigger by source element\n */\n const effects = Array.from(effects_);\n effects.reverse(); // reverse to ensure the first effect is the one that will be applied first\n const interaction = { ...rest, effects };\n\n interactions[source].triggers.push(interaction);\n interactions[source].selectors.add(getSelector(interaction));\n\n const listContainer = interaction.listContainer;\n\n effects.forEach((effect) => {\n /*\n * Target cascade order is the first of:\n * -> Config.interactions.effects.effect.key\n * -> Config.effects.effect.key\n * -> Config.interactions.interaction.key\n */\n let target = effect.key;\n\n if (!target && (effect as EffectRef).effectId) {\n const referencedEffect = config.effects[(effect as EffectRef).effectId];\n\n if (referencedEffect) {\n target = referencedEffect.key;\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.key = target;\n const effectId = (effect as EffectRef).effectId;\n\n if (listContainer && effect.listContainer) {\n // we do not support having 2 separate lists for same interaction\n if (target !== source || effect.listContainer !== listContainer) {\n return;\n }\n }\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 selectors: new Set(),\n };\n } else if (!interactions[target].effects[interactionId]) {\n interactions[target].effects[interactionId] = [];\n interactions[target].interactionIds.add(interactionId);\n }\n\n interactions[target].effects[interactionId].push({ ...rest, effect });\n interactions[target].selectors.add(getSelector(effect));\n });\n });\n\n return {\n effects: config.effects || {},\n conditions,\n interactions,\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_utilities","require","_WixInteractElement","_utils","_Interact","registerWixInteractElement","customElements","get","wixInteractElement","getWixInteractElement","define","_convertToKeyTemplate","key","replace","Interact","constructor","_defineProperty2","default","dataCache","effects","conditions","interactions","addedInteractions","listInteractionsCache","elements","Set","init","config","window","parseConfig","didRegister","elementCache","forEach","element","connect","destroy","disconnect","clear","instances","splice","indexOf","setElement","add","deleteElement","clearInteractionStateForKey","delete","has","processedKey","_this$get","interactionIds","interactionId_","interactionId","getInterpolatedKey","create","instance","push","length","getInstance","find","getElement","undefined","set","exports","Map","interactionIdCounter","getSelector","d","asCombinator","addItemFilter","listContainer","itemFilter","listItemSelector","selector","_config$interactions","interaction_","source","interactionIdx","effects_","rest","console","error","triggers","selectors","Array","from","reverse","interaction","effect","target","effectId","referencedEffect","generateId"],"sources":["../../../src/core/Interact.ts"],"sourcesContent":["import {\n InteractCache,\n IWixInteractElement,\n InteractConfig,\n EffectRef,\n Effect,\n Interaction,\n} from '../types';\nimport { getInterpolatedKey } from './utilities';\nimport { getWixInteractElement } from '../WixInteractElement';\nimport { generateId } from '../utils';\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\nfunction _convertToKeyTemplate(key: string) {\n return key.replace(/\\[([-\\w]+)]/g, '[]');\n}\n\nexport class Interact {\n dataCache: InteractCache;\n addedInteractions: { [interactionId: string]: boolean };\n listInteractionsCache: {\n [listContainer: string]: { [interactionId: string]: boolean };\n };\n elements: Set<IWixInteractElement>;\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 this.listInteractionsCache = {};\n this.elements = new Set();\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, key) =>\n element.connect(key),\n );\n }\n }\n\n destroy(): void {\n for (let element of this.elements) {\n element.disconnect();\n }\n this.addedInteractions = {};\n this.listInteractionsCache = {};\n this.elements.clear();\n this.dataCache = { effects: {}, conditions: {}, interactions: {} };\n Interact.instances.splice(Interact.instances.indexOf(this), 1);\n }\n\n setElement(key: string, element: IWixInteractElement) {\n this.elements.add(element);\n\n Interact.setElement(key, element);\n }\n\n deleteElement(key: string) {\n const element = Interact.elementCache.get(key);\n\n this.clearInteractionStateForKey(key);\n\n if (element) {\n this.elements.delete(element);\n Interact.elementCache.delete(key);\n }\n }\n\n has(key: string): boolean {\n return !!this.get(key);\n }\n\n get(key: string): InteractCache['interactions'][string] | undefined {\n const processedKey = _convertToKeyTemplate(key);\n return this.dataCache.interactions[processedKey];\n }\n\n clearInteractionStateForKey(key: string): void {\n const interactionIds = this.get(key)?.interactionIds || [];\n\n interactionIds.forEach((interactionId_) => {\n const interactionId = getInterpolatedKey(interactionId_, key);\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 destroy(): void {\n Interact.elementCache.forEach((element: IWixInteractElement) => {\n element.disconnect();\n });\n Interact.instances.length = 0;\n Interact.elementCache.clear();\n }\n\n static getInstance(key: string): Interact | undefined {\n return Interact.instances.find((instance) => instance.has(key));\n }\n\n static getElement(key: string | undefined): IWixInteractElement | undefined {\n return key ? Interact.elementCache.get(key) : undefined;\n }\n\n static setElement(key: string, element: IWixInteractElement): void {\n Interact.elementCache.set(key, element);\n }\n}\n\nlet interactionIdCounter = 0;\n\nexport function getSelector(\n d: Interaction | Effect,\n {\n asCombinator = false,\n addItemFilter = false,\n }: { asCombinator?: boolean; addItemFilter?: boolean } = {},\n): string {\n if (d.listContainer) {\n const itemFilter = `${\n addItemFilter && d.listItemSelector ? ` > ${d.listItemSelector}` : ''\n }`;\n\n if (d.selector) {\n return `${d.listContainer}${itemFilter} ${d.selector}`;\n }\n\n return `${d.listContainer}${itemFilter || ' > *'}`;\n } else if (d.selector) {\n return d.selector;\n }\n\n // TODO: consider moving :scope to be configurable since it may lead to unexpected results in some cases\n return asCombinator ? '> :first-child' : ':scope > :first-child';\n}\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_.key;\n const interactionIdx = ++interactionIdCounter;\n const { effects: effects_, ...rest } = interaction_;\n\n if (!source) {\n console.error(\n `Interaction ${interactionIdx} is missing a key for source element.`,\n );\n return;\n }\n\n if (!interactions[source]) {\n interactions[source] = {\n triggers: [],\n effects: {},\n interactionIds: new Set(),\n selectors: new Set(),\n };\n }\n\n /*\n * Cache interaction trigger by source element\n */\n const effects = Array.from(effects_);\n effects.reverse(); // reverse to ensure the first effect is the one that will be applied first\n const interaction = { ...rest, effects };\n\n interactions[source].triggers.push(interaction);\n interactions[source].selectors.add(getSelector(interaction));\n\n const listContainer = interaction.listContainer;\n\n effects.forEach((effect) => {\n /*\n * Target cascade order is the first of:\n * -> Config.interactions.effects.effect.key\n * -> Config.effects.effect.key\n * -> Config.interactions.interaction.key\n */\n let target = effect.key;\n\n if (!target && (effect as EffectRef).effectId) {\n const referencedEffect = config.effects[(effect as EffectRef).effectId];\n\n if (referencedEffect) {\n target = referencedEffect.key;\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.key = target;\n const effectId = (effect as EffectRef).effectId;\n\n if (listContainer && effect.listContainer) {\n // we do not support having 2 separate lists for same interaction\n if (target !== source || effect.listContainer !== listContainer) {\n return;\n }\n }\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 selectors: new Set(),\n };\n } else if (!interactions[target].effects[interactionId]) {\n interactions[target].effects[interactionId] = [];\n interactions[target].interactionIds.add(interactionId);\n }\n\n interactions[target].effects[interactionId].push({ ...rest, effect });\n interactions[target].selectors.add(getSelector(effect));\n });\n });\n\n return {\n effects: config.effects || {},\n conditions,\n interactions,\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/cjs/core/add.js
CHANGED
|
@@ -5,6 +5,7 @@ exports.__esModule = true;
|
|
|
5
5
|
exports.add = add;
|
|
6
6
|
exports.addListItems = addListItems;
|
|
7
7
|
var _utils = require("../utils");
|
|
8
|
+
var _utilities = require("./utilities");
|
|
8
9
|
var _Interact = require("./Interact");
|
|
9
10
|
var _handlers = _interopRequireDefault(require("../handlers"));
|
|
10
11
|
function _getElementsFromData(data, root) {
|
|
@@ -31,44 +32,45 @@ function _getElementsFromData(data, root) {
|
|
|
31
32
|
}
|
|
32
33
|
function _queryItemElement(data, elements) {
|
|
33
34
|
return elements.map(element => {
|
|
34
|
-
return
|
|
35
|
+
return data.selector ? element.querySelector(data.selector) : element;
|
|
35
36
|
}).filter(Boolean);
|
|
36
37
|
}
|
|
37
38
|
function _getInteractionElements(interaction, effect, source, target, sourceElements, targetElements) {
|
|
38
39
|
return [sourceElements ? _queryItemElement(interaction, sourceElements) : _getElementsFromData(interaction, source), targetElements ? _queryItemElement(effect, targetElements) : _getElementsFromData(effect, target)];
|
|
39
40
|
}
|
|
40
|
-
function _applyInteraction(key, interaction, effect, sourceElements, targetElements
|
|
41
|
+
function _applyInteraction(key, interaction, effect, sourceElements, targetElements) {
|
|
41
42
|
const isSourceArray = Array.isArray(sourceElements);
|
|
42
43
|
const isTargetArray = Array.isArray(targetElements);
|
|
43
44
|
if (isSourceArray) {
|
|
44
45
|
sourceElements.forEach((sourceEl, index) => {
|
|
45
46
|
const targetEl = isTargetArray ? targetElements[index] : targetElements;
|
|
46
47
|
if (targetEl) {
|
|
47
|
-
addInteraction(key, sourceEl, interaction.trigger, targetEl, effect, interaction.params
|
|
48
|
+
addInteraction(key, sourceEl, interaction.trigger, targetEl, effect, interaction.params);
|
|
48
49
|
}
|
|
49
50
|
});
|
|
50
51
|
} else {
|
|
51
52
|
const targets = isTargetArray ? targetElements : [targetElements];
|
|
52
53
|
targets.forEach(targetEl => {
|
|
53
|
-
addInteraction(key, sourceElements, interaction.trigger, targetEl, effect, interaction.params
|
|
54
|
+
addInteraction(key, sourceElements, interaction.trigger, targetEl, effect, interaction.params);
|
|
54
55
|
});
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
|
-
function _addInteraction(instance, interaction,
|
|
58
|
+
function _addInteraction(sourceKey, sourceRoot, instance, interaction, elements) {
|
|
58
59
|
const interactionVariations = {};
|
|
59
60
|
interaction.effects.forEach(effect => {
|
|
60
61
|
const effectId = effect.effectId;
|
|
61
|
-
const interactionId = effect.interactionId;
|
|
62
|
-
if (interactionVariations[interactionId]) {
|
|
63
|
-
// Skip this effect if it has already been added
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
62
|
const effectOptions = {
|
|
67
63
|
...(instance.dataCache.effects[effectId] || {}),
|
|
68
64
|
...effect,
|
|
69
65
|
effectId
|
|
70
66
|
};
|
|
71
|
-
|
|
67
|
+
const targetKey_ = effectOptions.key;
|
|
68
|
+
const interactionId = (0, _utilities.getInterpolatedKey)(effect.interactionId, sourceKey);
|
|
69
|
+
if (interactionVariations[interactionId]) {
|
|
70
|
+
// Skip this effect if it has already been added
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
if (instance.addedInteractions[interactionId] && !elements) {
|
|
72
74
|
// Skip this interaction if it has already been added
|
|
73
75
|
return;
|
|
74
76
|
}
|
|
@@ -76,8 +78,8 @@ function _addInteraction(instance, interaction, sourceRoot, elements) {
|
|
|
76
78
|
// TODO: implement watching for condition `change` events and add/remove interactions accordingly
|
|
77
79
|
const mql = (0, _utils.getMediaQuery)(effectOptions.conditions || [], instance.dataCache.conditions);
|
|
78
80
|
if (!mql || mql.matches) {
|
|
79
|
-
interactionVariations[
|
|
80
|
-
const target =
|
|
81
|
+
interactionVariations[interactionId] = true;
|
|
82
|
+
const target = targetKey_ && (0, _utilities.getInterpolatedKey)(targetKey_, sourceKey);
|
|
81
83
|
let targetElement;
|
|
82
84
|
if (target) {
|
|
83
85
|
targetElement = _Interact.Interact.getElement(target);
|
|
@@ -96,22 +98,23 @@ function _addInteraction(instance, interaction, sourceRoot, elements) {
|
|
|
96
98
|
if (!sourceElements || !targetElements) {
|
|
97
99
|
return;
|
|
98
100
|
}
|
|
99
|
-
instance.addedInteractions[
|
|
101
|
+
instance.addedInteractions[interactionId] = true;
|
|
100
102
|
const key = target || interaction.key;
|
|
101
|
-
_applyInteraction(key, interaction, effectOptions, sourceElements, targetElements
|
|
103
|
+
_applyInteraction(key, interaction, effectOptions, sourceElements, targetElements);
|
|
102
104
|
}
|
|
103
105
|
});
|
|
104
106
|
}
|
|
105
|
-
function addEffectsForTarget(
|
|
106
|
-
var _instance$
|
|
107
|
-
const effects = ((_instance$
|
|
107
|
+
function addEffectsForTarget(targetKey, element, instance, listContainer, elements) {
|
|
108
|
+
var _instance$get;
|
|
109
|
+
const effects = ((_instance$get = instance.get(targetKey)) == null ? void 0 : _instance$get.effects) || {};
|
|
108
110
|
const interactionIds = Object.keys(effects);
|
|
109
|
-
interactionIds.forEach(
|
|
111
|
+
interactionIds.forEach(interactionId_ => {
|
|
112
|
+
const interactionId = (0, _utilities.getInterpolatedKey)(interactionId_, targetKey);
|
|
110
113
|
if (instance.addedInteractions[interactionId] && !elements) {
|
|
111
114
|
// Skip this interaction if it has already been added
|
|
112
115
|
return;
|
|
113
116
|
}
|
|
114
|
-
const effectVariations = effects[
|
|
117
|
+
const effectVariations = effects[interactionId_];
|
|
115
118
|
|
|
116
119
|
// use `some` to short-circuit after the first effect that matches the conditions
|
|
117
120
|
// eslint-disable-next-line array-callback-return
|
|
@@ -133,7 +136,8 @@ function addEffectsForTarget(key, element, instance, listContainer, elements) {
|
|
|
133
136
|
// TODO: implement watching for condition `change` events and add/remove interactions accordingly
|
|
134
137
|
const mql = (0, _utils.getMediaQuery)(effectOptions.conditions || [], instance.dataCache.conditions);
|
|
135
138
|
if (!mql || mql.matches) {
|
|
136
|
-
const
|
|
139
|
+
const sourceKey = interaction.key && (0, _utilities.getInterpolatedKey)(interaction.key, targetKey);
|
|
140
|
+
const sourceElement = _Interact.Interact.getElement(sourceKey);
|
|
137
141
|
if (!sourceElement) {
|
|
138
142
|
// Bail out :: no source or target elements in cache
|
|
139
143
|
return true;
|
|
@@ -147,7 +151,7 @@ function addEffectsForTarget(key, element, instance, listContainer, elements) {
|
|
|
147
151
|
return true;
|
|
148
152
|
}
|
|
149
153
|
instance.addedInteractions[interactionId] = true;
|
|
150
|
-
_applyInteraction(
|
|
154
|
+
_applyInteraction(targetKey, interaction, effectOptions, sourceElements, targetElements);
|
|
151
155
|
|
|
152
156
|
// short-circuit the loop since we have a match
|
|
153
157
|
return true;
|
|
@@ -160,7 +164,7 @@ function addEffectsForTarget(key, element, instance, listContainer, elements) {
|
|
|
160
164
|
/**
|
|
161
165
|
* Registers a handler to an event on a given element.
|
|
162
166
|
*/
|
|
163
|
-
function addInteraction(key, source, trigger, target, effect, options
|
|
167
|
+
function addInteraction(key, source, trigger, target, effect, options) {
|
|
164
168
|
var _TRIGGER_TO_HANDLER_M;
|
|
165
169
|
if (effect.transition || effect.transitionProperties) {
|
|
166
170
|
const args = {
|
|
@@ -168,7 +172,10 @@ function addInteraction(key, source, trigger, target, effect, options, listConta
|
|
|
168
172
|
effectId: effect.effectId,
|
|
169
173
|
transition: effect.transition,
|
|
170
174
|
properties: effect.transitionProperties,
|
|
171
|
-
childSelector: (0, _Interact.getSelector)(effect,
|
|
175
|
+
childSelector: (0, _Interact.getSelector)(effect, {
|
|
176
|
+
asCombinator: true,
|
|
177
|
+
addItemFilter: true
|
|
178
|
+
})
|
|
172
179
|
};
|
|
173
180
|
const root = target.closest('wix-interact-element');
|
|
174
181
|
if (!root) {
|
|
@@ -193,7 +200,7 @@ function add(element, key) {
|
|
|
193
200
|
}
|
|
194
201
|
const {
|
|
195
202
|
triggers = []
|
|
196
|
-
} = (instance == null ? void 0 : instance.
|
|
203
|
+
} = (instance == null ? void 0 : instance.get(key)) || {};
|
|
197
204
|
const hasTriggers = triggers.length > 0;
|
|
198
205
|
instance.setElement(key, element);
|
|
199
206
|
triggers.forEach(interaction => {
|
|
@@ -204,7 +211,7 @@ function add(element, key) {
|
|
|
204
211
|
if (interaction.listContainer) {
|
|
205
212
|
element.watchChildList(interaction.listContainer);
|
|
206
213
|
}
|
|
207
|
-
_addInteraction(instance, interaction
|
|
214
|
+
_addInteraction(key, element, instance, interaction);
|
|
208
215
|
}
|
|
209
216
|
});
|
|
210
217
|
let hasEffects = false;
|
|
@@ -218,7 +225,7 @@ function addListItems(root, key, listContainer, elements) {
|
|
|
218
225
|
if (instance) {
|
|
219
226
|
const {
|
|
220
227
|
triggers = []
|
|
221
|
-
} = (instance == null ? void 0 : instance.
|
|
228
|
+
} = (instance == null ? void 0 : instance.get(key)) || {};
|
|
222
229
|
triggers.forEach(interaction => {
|
|
223
230
|
if (interaction.listContainer !== listContainer) {
|
|
224
231
|
return;
|
|
@@ -227,7 +234,7 @@ function addListItems(root, key, listContainer, elements) {
|
|
|
227
234
|
|
|
228
235
|
// TODO: implement watching for condition `change` events and add/remove interactions accordingly
|
|
229
236
|
if (!mql || mql.matches) {
|
|
230
|
-
_addInteraction(instance, interaction,
|
|
237
|
+
_addInteraction(key, root, instance, interaction, elements);
|
|
231
238
|
}
|
|
232
239
|
});
|
|
233
240
|
addEffectsForTarget(key, root, instance, listContainer, elements);
|
package/dist/cjs/core/add.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_utils","require","_Interact","_handlers","_interopRequireDefault","_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","getMediaQuery","conditions","targetElement","Interact","getElement","watchChildList","addEffectsForTarget","_instance$dataCache$i","interactions","interactionIds","Object","keys","effectVariations","some","sourceElement","undefined","length","options","_TRIGGER_TO_HANDLER_M","transition","transitionProperties","args","properties","childSelector","getSelector","closest","renderStyle","createTransitionCSS","TRIGGER_TO_HANDLER_MODULE_MAP","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,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAC,sBAAA,CAAAH,OAAA;AAEA,SAASI,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,GAAG,IAAAC,oBAAa,EACvBJ,aAAa,CAACK,UAAU,IAAI,EAAE,EAC9BX,QAAQ,CAACO,SAAS,CAACI,UACrB,CAAC;IAED,IAAI,CAACF,GAAG,IAAIA,GAAG,CAACjC,OAAO,EAAE;MACvB0B,qBAAqB,CAACrB,MAAM,CAACwB,aAAa,CAAE,GAAG,IAAI;MAEnD,MAAMtB,MAAM,GAAGuB,aAAa,CAACnB,GAAG;MAEhC,IAAIyB,aAAa;MACjB,IAAI7B,MAAM,EAAE;QACV6B,aAAa,GAAGC,kBAAQ,CAACC,UAAU,CAAC/B,MAAM,CAAC;QAE3C,IAAI,CAAC6B,aAAa,EAAE;UAClB;UACA;QACF;QAEA,IAAIN,aAAa,CAAC7C,aAAa,EAAE;UAC/BmD,aAAa,CAACG,cAAc,CAACT,aAAa,CAAC7C,aAAa,CAAC;QAC3D;MACF,CAAC,MAAM;QACL;QACAmD,aAAa,GAAGX,UAAU;MAC5B;MAEA,MAAM,CAACjB,cAAc,EAAEC,cAAc,CAAC,GAAGN,uBAAuB,CAC9DC,WAAW,EACX0B,aAAa,EACbL,UAAU,EACVW,aAAa,EACbtC,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,SAASuD,mBAAmBA,CAC1B7B,GAAW,EACXhB,OAA4B,EAC5B6B,QAAkB,EAClBvC,aAAsB,EACtBa,QAAwB,EACxB;EAAA,IAAA2C,qBAAA;EACA,MAAMd,OAAO,GAAG,EAAAc,qBAAA,GAAAjB,QAAQ,CAACO,SAAS,CAACW,YAAY,CAAC/B,GAAG,CAAC,qBAApC8B,qBAAA,CAAsCd,OAAO,KAAI,CAAC,CAAC;EACnE,MAAMgB,cAAc,GAAGC,MAAM,CAACC,IAAI,CAAClB,OAAO,CAAC;EAE3CgB,cAAc,CAAC5B,OAAO,CAAEc,aAAa,IAAK;IACxC,IAAIL,QAAQ,CAACQ,iBAAiB,CAACH,aAAa,CAAC,IAAI,CAAC/B,QAAQ,EAAE;MAC1D;MACA;IACF;IAEA,MAAMgD,gBAAgB,GAAGnB,OAAO,CAACE,aAAa,CAAC;;IAE/C;IACA;IACAiB,gBAAgB,CAACC,IAAI,CAAC,CAAC;MAAE1C,MAAM;MAAE,GAAGD;IAAY,CAAC,KAAK;MACpD,MAAMwB,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,GAAG,IAAAC,oBAAa,EACvBJ,aAAa,CAACK,UAAU,IAAI,EAAE,EAC9BX,QAAQ,CAAEO,SAAS,CAACI,UACtB,CAAC;MAED,IAAI,CAACF,GAAG,IAAIA,GAAG,CAACjC,OAAO,EAAE;QACvB,MAAMgD,aAAa,GAAGX,kBAAQ,CAACC,UAAU,CAAClC,WAAW,CAACO,GAAG,CAAC;QAE1D,IAAI,CAACqC,aAAa,EAAE;UAClB;UACA,OAAO,IAAI;QACb;QAEA,IAAIlB,aAAa,CAAC7C,aAAa,EAAE;UAC/BU,OAAO,CAAC4C,cAAc,CAACT,aAAa,CAAC7C,aAAa,CAAC;QACrD;QAEA,MAAM,CAACuB,cAAc,EAAEC,cAAc,CAAC,GAAGN,uBAAuB,CAC9DC,WAAW,EACX0B,aAAa,EACbkB,aAAa,EACbrD,OAAO,EACPsD,SAAS,EACTnD,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,OAAO0D,cAAc,CAACO,MAAM,GAAG,CAAC;AAClC;;AAEA;AACA;AACA;AACA,SAAS/B,cAAcA,CACrBR,GAAW,EACXL,MAAmB,EACnBc,OAAU,EACVb,MAAmB,EACnBF,MAAc,EACd8C,OAAkC,EAClClE,aAAiC,EAC3B;EAAA,IAAAmE,qBAAA;EACN,IACG/C,MAAM,CAAsBgD,UAAU,IACtChD,MAAM,CAAsBiD,oBAAoB,EACjD;IACA,MAAMC,IAA+B,GAAG;MACtC5C,GAAG;MACHiB,QAAQ,EAAGvB,MAAM,CAAmCuB,QAAS;MAC7DyB,UAAU,EAAGhD,MAAM,CAAsBgD,UAAU;MACnDG,UAAU,EAAGnD,MAAM,CAAsBiD,oBAAoB;MAC7DG,aAAa,EAAE,IAAAC,qBAAW,EAACrD,MAAM,EAAE,IAAI;IACzC,CAAC;IAED,MAAMrB,IAAI,GAAGuB,MAAM,CAACoD,OAAO,CAAC,sBAAsB,CAAwB;IAC1E,IAAI,CAAC3E,IAAI,EAAE;MACT;IACF;IAEAA,IAAI,CAAC4E,WAAW,CAAC,IAAAC,0BAAmB,EAACN,IAAI,CAAC,CAAC;EAC7C;EAEA,CAAAH,qBAAA,GAAAU,iBAA6B,CAAC1C,OAAO,CAAC,aAAtCgC,qBAAA,CAAwCW,GAAG,CACzCzD,MAAM,EACNC,MAAM,EACNF,MAAM,EACN8C,OAAO,EACPd,kBAAQ,CAAC2B,kBACX,CAAC;AACH;;AAEA;AACA;AACA;AACO,SAASD,GAAGA,CAACpE,OAA4B,EAAEgB,GAAW,EAAW;EACtE,MAAMa,QAAQ,GAAGa,kBAAQ,CAAC4B,WAAW,CAACtD,GAAG,CAAC;EAE1C,IAAI,CAACa,QAAQ,EAAE;IACbpC,OAAO,CAACC,IAAI,CAAC,8BAA8BsB,GAAG,EAAE,CAAC;;IAEjD;IACA0B,kBAAQ,CAAC6B,UAAU,CAACvD,GAAG,EAAEhB,OAAO,CAAC;IACjC,OAAO,KAAK;EACd;EAEA,MAAM;IAAEwE,QAAQ,GAAG;EAAG,CAAC,GAAG,CAAA3C,QAAQ,oBAARA,QAAQ,CAAEO,SAAS,CAACW,YAAY,CAAC/B,GAAG,CAAC,KAAI,CAAC,CAAC;EACrE,MAAMyD,WAAW,GAAGD,QAAQ,CAACjB,MAAM,GAAG,CAAC;EAEvC1B,QAAQ,CAAC0C,UAAU,CAACvD,GAAG,EAAEhB,OAAO,CAAC;EAEjCwE,QAAQ,CAACpD,OAAO,CAAEX,WAAW,IAAK;IAChC,MAAM6B,GAAG,GAAG,IAAAC,oBAAa,EACvB9B,WAAW,CAAC+B,UAAU,EACtBX,QAAQ,CAAEO,SAAS,CAACI,UACtB,CAAC;;IAED;IACA,IAAI,CAACF,GAAG,IAAIA,GAAG,CAACjC,OAAO,EAAE;MACvB,IAAII,WAAW,CAACnB,aAAa,EAAE;QAC7BU,OAAO,CAAC4C,cAAc,CAACnC,WAAW,CAACnB,aAAa,CAAC;MACnD;MAEAsC,eAAe,CAACC,QAAQ,EAAGpB,WAAW,EAAET,OAAO,CAAC;IAClD;EACF,CAAC,CAAC;EAEF,IAAI0E,UAAU,GAAG,KAAK;EACtB,IAAI7C,QAAQ,EAAE;IACZ6C,UAAU,GAAG7B,mBAAmB,CAAC7B,GAAG,EAAEhB,OAAO,EAAE6B,QAAQ,CAAC;EAC1D;EAEA,OAAO4C,WAAW,IAAIC,UAAU;AAClC;AAEO,SAASC,YAAYA,CAC1BtF,IAAyB,EACzB2B,GAAW,EACX1B,aAAqB,EACrBa,QAAuB,EACvB;EACA,MAAM0B,QAAQ,GAAGa,kBAAQ,CAAC4B,WAAW,CAACtD,GAAG,CAAC;EAE1C,IAAIa,QAAQ,EAAE;IACZ,MAAM;MAAE2C,QAAQ,GAAG;IAAG,CAAC,GAAG,CAAA3C,QAAQ,oBAARA,QAAQ,CAAEO,SAAS,CAACW,YAAY,CAAC/B,GAAG,CAAC,KAAI,CAAC,CAAC;IAErEwD,QAAQ,CAACpD,OAAO,CAAEX,WAAW,IAAK;MAChC,IAAIA,WAAW,CAACnB,aAAa,KAAKA,aAAa,EAAE;QAC/C;MACF;MAEA,MAAMgD,GAAG,GAAG,IAAAC,oBAAa,EACvB9B,WAAW,CAAC+B,UAAU,EACtBX,QAAQ,CAAEO,SAAS,CAACI,UACtB,CAAC;;MAED;MACA,IAAI,CAACF,GAAG,IAAIA,GAAG,CAACjC,OAAO,EAAE;QACvBuB,eAAe,CAACC,QAAQ,EAAGpB,WAAW,EAAEpB,IAAI,EAAEc,QAAQ,CAAC;MACzD;IACF,CAAC,CAAC;IAEF0C,mBAAmB,CAAC7B,GAAG,EAAE3B,IAAI,EAAEwC,QAAQ,EAAEvC,aAAa,EAAEa,QAAQ,CAAC;EACnE;AACF","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_utils","require","_utilities","_Interact","_handlers","_interopRequireDefault","_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","getInterpolatedKey","addedInteractions","mql","getMediaQuery","conditions","matches","targetElement","Interact","getElement","watchChildList","addEffectsForTarget","targetKey","_instance$get","get","interactionIds","Object","keys","interactionId_","effectVariations","some","sourceElement","undefined","length","options","_TRIGGER_TO_HANDLER_M","transition","transitionProperties","args","properties","childSelector","getSelector","asCombinator","addItemFilter","closest","renderStyle","createTransitionCSS","TRIGGER_TO_HANDLER_MODULE_MAP","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/cjs/core/remove.js
CHANGED
|
@@ -10,7 +10,7 @@ var _handlers = _interopRequireDefault(require("../handlers"));
|
|
|
10
10
|
* Removes all events and effects from an element based on config
|
|
11
11
|
*/
|
|
12
12
|
function remove(key) {
|
|
13
|
-
var _instance$
|
|
13
|
+
var _instance$get;
|
|
14
14
|
const instance = _Interact.Interact.getInstance(key);
|
|
15
15
|
if (!instance) {
|
|
16
16
|
return;
|
|
@@ -19,18 +19,17 @@ function remove(key) {
|
|
|
19
19
|
if (!root) {
|
|
20
20
|
return;
|
|
21
21
|
}
|
|
22
|
-
const selectors = [...((_instance$
|
|
22
|
+
const selectors = [...(((_instance$get = instance.get(key)) == null ? void 0 : _instance$get.selectors.values()) || [])].join(',');
|
|
23
23
|
const elements = root.querySelectorAll(selectors);
|
|
24
|
-
|
|
25
|
-
Object.values(_handlers.default).forEach(module => {
|
|
26
|
-
module.remove(element);
|
|
27
|
-
});
|
|
28
|
-
}
|
|
24
|
+
removeListItems(Array.from(elements));
|
|
29
25
|
instance == null || instance.deleteElement(key);
|
|
30
26
|
}
|
|
31
27
|
function removeListItems(elements) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
const modules = Object.values(_handlers.default);
|
|
29
|
+
for (const element of elements) {
|
|
30
|
+
for (const module of modules) {
|
|
31
|
+
module.remove(element);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
35
34
|
}
|
|
36
35
|
//# sourceMappingURL=remove.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_Interact","require","_handlers","_interopRequireDefault","remove","key","_instance$
|
|
1
|
+
{"version":3,"names":["_Interact","require","_handlers","_interopRequireDefault","remove","key","_instance$get","instance","Interact","getInstance","root","getElement","selectors","get","values","join","elements","querySelectorAll","removeListItems","Array","from","deleteElement","modules","Object","TRIGGER_TO_HANDLER_MODULE_MAP","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,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEA;AACA;AACA;AACO,SAASG,MAAMA,CAACC,GAAW,EAAQ;EAAA,IAAAC,aAAA;EACxC,MAAMC,QAAQ,GAAGC,kBAAQ,CAACC,WAAW,CAACJ,GAAG,CAAC;EAE1C,IAAI,CAACE,QAAQ,EAAE;IACb;EACF;EAEA,MAAMG,IAAI,GAAGF,kBAAQ,CAACG,UAAU,CAACN,GAAG,CAAC;EACrC,IAAI,CAACK,IAAI,EAAE;IACT;EACF;EAEA,MAAME,SAAS,GAAG,CAAC,IAAI,EAAAN,aAAA,GAAAC,QAAQ,CAACM,GAAG,CAACR,GAAG,CAAC,qBAAjBC,aAAA,CAAmBM,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;EAEtDT,QAAQ,YAARA,QAAQ,CAAEc,aAAa,CAAChB,GAAG,CAAC;AAC9B;AAEO,SAASa,eAAeA,CAACF,QAAuB,EAAE;EACvD,MAAMM,OAAO,GAAGC,MAAM,CAACT,MAAM,CAACU,iBAA6B,CAAC;EAE5D,KAAK,MAAMC,OAAO,IAAIT,QAAQ,EAAE;IAC9B,KAAK,MAAMU,MAAM,IAAIJ,OAAO,EAAE;MAC5BI,MAAM,CAACtB,MAAM,CAACqB,OAAO,CAAC;IACxB;EACF;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports._processKeysForInterpolation = _processKeysForInterpolation;
|
|
5
|
+
exports.getInterpolatedKey = getInterpolatedKey;
|
|
6
|
+
function _processKeysForInterpolation(key) {
|
|
7
|
+
return [...key.matchAll(/\[([-\w]+)]/g)].map(([_, _instanceKey]) => _instanceKey);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// TODO: currently only supports simple one-to-one mapping, e.g. item[0] -> item[0], item[1] -> item[1]
|
|
11
|
+
function getInterpolatedKey(template, key) {
|
|
12
|
+
const keys = _processKeysForInterpolation(key);
|
|
13
|
+
let index = 0;
|
|
14
|
+
return keys.length ? template.replace(/\[]/g, () => `[${keys[index++]}]` || '[]') : template;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=utilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_processKeysForInterpolation","key","matchAll","map","_","_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":";;;;;AAAO,SAASA,4BAA4BA,CAACC,GAAW,EAAE;EACxD,OAAO,CAAC,GAAGA,GAAG,CAACC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAACC,GAAG,CAC1C,CAAC,CAACC,CAAC,EAAEC,YAAY,CAAC,KAAKA,YACzB,CAAC;AACH;;AAEA;AACO,SAASC,kBAAkBA,CAACC,QAAgB,EAAEN,GAAW,EAAE;EAChE,MAAMO,IAAI,GAAGR,4BAA4B,CAACC,GAAG,CAAC;EAC9C,IAAIQ,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":[]}
|
|
@@ -43,14 +43,21 @@ function createTimeEffectHandler(element, effect, options, reducedMotion = false
|
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
45
|
function createTransitionHandler(element, {
|
|
46
|
-
effectId
|
|
46
|
+
effectId,
|
|
47
|
+
listContainer,
|
|
48
|
+
listItemSelector
|
|
47
49
|
}, options) {
|
|
50
|
+
const shouldSetStateOnElement = !!listContainer;
|
|
48
51
|
return __ => {
|
|
49
52
|
const wixInteractElement = element.closest('wix-interact-element');
|
|
50
53
|
if (!wixInteractElement) {
|
|
51
54
|
return;
|
|
52
55
|
}
|
|
53
|
-
|
|
56
|
+
let item;
|
|
57
|
+
if (shouldSetStateOnElement) {
|
|
58
|
+
item = element.closest(`${listContainer} > ${listItemSelector || ''}:has(:scope)`);
|
|
59
|
+
}
|
|
60
|
+
wixInteractElement.toggleEffect(effectId, options.method || 'toggle', item);
|
|
54
61
|
};
|
|
55
62
|
}
|
|
56
63
|
function addClickHandler(source, target, effect, options = {}, reducedMotion = false) {
|