@wix/interact 1.74.0 → 1.76.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/README.md +33 -21
- package/dist/cjs/WixInteractElement.js +61 -17
- package/dist/cjs/WixInteractElement.js.map +1 -1
- package/dist/cjs/__tests__/interact.spec.js +761 -109
- package/dist/cjs/__tests__/interact.spec.js.map +1 -1
- package/dist/cjs/core/Interact.js +190 -0
- package/dist/cjs/core/Interact.js.map +1 -0
- package/dist/cjs/core/add.js +231 -0
- package/dist/cjs/core/add.js.map +1 -0
- package/dist/cjs/core/remove.js +37 -0
- package/dist/cjs/core/remove.js.map +1 -0
- package/dist/cjs/handlers/click.js +1 -1
- package/dist/cjs/handlers/click.js.map +1 -1
- package/dist/cjs/handlers/hover.js +1 -1
- package/dist/cjs/handlers/hover.js.map +1 -1
- package/dist/cjs/index.js +6 -4
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/utils.js +12 -10
- package/dist/cjs/utils.js.map +1 -1
- package/dist/esm/WixInteractElement.js +61 -17
- package/dist/esm/WixInteractElement.js.map +1 -1
- package/dist/esm/__tests__/interact.spec.js +743 -91
- package/dist/esm/__tests__/interact.spec.js.map +1 -1
- package/dist/esm/core/Interact.js +186 -0
- package/dist/esm/core/Interact.js.map +1 -0
- package/dist/esm/core/add.js +226 -0
- package/dist/esm/core/add.js.map +1 -0
- package/dist/esm/core/remove.js +32 -0
- package/dist/esm/core/remove.js.map +1 -0
- package/dist/esm/handlers/click.js +1 -1
- package/dist/esm/handlers/click.js.map +1 -1
- package/dist/esm/handlers/hover.js +1 -1
- package/dist/esm/handlers/hover.js.map +1 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/utils.js +12 -10
- package/dist/esm/utils.js.map +1 -1
- package/dist/types/WixInteractElement.d.ts +5 -2
- package/dist/types/core/Interact.d.ts +24 -0
- package/dist/types/core/add.d.ts +6 -0
- package/dist/types/core/remove.d.ts +5 -0
- package/dist/types/index.d.ts +3 -1
- package/dist/types/types.d.ts +22 -9
- package/dist/types/utils.d.ts +1 -1
- package/package.json +7 -6
- package/dist/cjs/interact.js +0 -308
- package/dist/cjs/interact.js.map +0 -1
- package/dist/esm/interact.js +0 -301
- package/dist/esm/interact.js.map +0 -1
- package/dist/types/interact.d.ts +0 -26
package/dist/cjs/interact.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_WixInteractElement","require","_utils","_handlers","_interopRequireDefault","_Interact","registerWixInteractElement","customElements","get","wixInteractElement","getWixInteractElement","define","Interact","constructor","_defineProperty2","default","dataCache","effects","conditions","interactions","addedInteractions","init","config","window","parseConfig","didRegister","elementCache","forEach","element","path","connect","has","clearInteractionStateForPath","_this$dataCache$inter","interactionIds","interactionId","create","instance","instances","push","getInstance","find","getElement","setElement","set","exports","Map","interactionIdCounter","_config$interactions","interaction","_interaction$effects","_interaction$effects2","source","interactionIdx","console","error","triggers","Set","reverse","effect","target","effectId","referencedEffect","generateId","add","rest","_addInteraction","sourceElement","interactionVariations","effectOptions","mql","getMediaQuery","matches","_instance$dataCache$e","_Interact$getElement","targetElement","firstElementChild","addInteraction","trigger","params","hasTriggers","length","triggerSourceElement","hasEffects","addEffectsForTarget","_instance$dataCache$i","Object","keys","effectVariations","some","options","_Interact$getElement2","_TRIGGER_TO_HANDLER_M","transition","transitionProperties","args","properties","id","childSelector","parentElement","renderStyle","createTransitionCSS","TRIGGER_TO_HANDLER_MODULE_MAP","forceReducedMotion","remove","_Interact$getElement3","_Interact$getInstance","values","module","delete"],"sources":["../../src/interact.ts"],"sourcesContent":["import type {\n InteractConfig,\n Effect,\n TriggerType,\n InteractCache,\n EffectRef,\n InteractionParamsTypes,\n TransitionEffect,\n IWixInteractElement,\n Interaction,\n CreateTransitionCSSParams,\n} from './types';\nimport { getWixInteractElement } from './WixInteractElement';\nimport { generateId, createTransitionCSS, getMediaQuery } from './utils';\nimport TRIGGER_TO_HANDLER_MODULE_MAP from './handlers';\n\nfunction registerWixInteractElement() {\n if (!customElements.get('wix-interact-element')) {\n const wixInteractElement = getWixInteractElement();\n customElements.define('wix-interact-element', wixInteractElement);\n\n return true;\n }\n\n return false;\n}\n\nexport class Interact {\n dataCache: InteractCache;\n addedInteractions: { [interactionId: string]: boolean };\n static forceReducedMotion: boolean = false;\n static instances: Interact[] = [];\n static elementCache = new Map<string, IWixInteractElement>();\n\n constructor() {\n this.dataCache = { effects: {}, conditions: {}, interactions: {} };\n this.addedInteractions = {};\n }\n\n init(config: InteractConfig): void {\n if (typeof window === 'undefined' || !window.customElements) {\n return;\n }\n\n this.dataCache = parseConfig(config);\n\n const didRegister = registerWixInteractElement();\n\n if (!didRegister) {\n Interact.elementCache.forEach((element: IWixInteractElement, path) =>\n element.connect(path),\n );\n }\n }\n\n has(path: string): boolean {\n return !!this.dataCache.interactions[path];\n }\n\n clearInteractionStateForPath(path: string): void {\n const interactionIds =\n this.dataCache.interactions[path]?.interactionIds || [];\n\n interactionIds.forEach((interactionId) => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.addedInteractions[interactionId];\n });\n }\n\n static create(config: InteractConfig): Interact {\n const instance = new Interact();\n Interact.instances.push(instance);\n\n instance.init(config);\n\n return instance;\n }\n\n static getInstance(path: string): Interact | undefined {\n return Interact.instances.find((instance) => instance.has(path));\n }\n\n static getElement(path: string): IWixInteractElement | undefined {\n return Interact.elementCache.get(path);\n }\n\n static setElement(path: string, element: IWixInteractElement): void {\n Interact.elementCache.set(path, element);\n }\n}\n\nlet interactionIdCounter = 0;\n\n/**\n * Parses the config object and caches interactions, effects, and conditions\n */\nfunction parseConfig(config: InteractConfig): InteractCache {\n const conditions = config.conditions || {};\n const interactions: InteractCache['interactions'] = {};\n\n config.interactions?.forEach((interaction) => {\n const source = interaction.source;\n const interactionIdx = ++interactionIdCounter;\n\n if (!source) {\n console.error(\n `Interaction ${interactionIdx} is missing a source element.`,\n );\n return;\n }\n\n if (!interactions[source]) {\n interactions[source] = {\n triggers: [],\n effects: {},\n interactionIds: new Set(),\n };\n }\n\n /*\n * Cache interaction trigger by source element\n */\n interaction.effects?.reverse(); // reverse to ensure the first effect is the one that will be applied first\n\n interactions[source].triggers.push(interaction);\n\n interaction.effects?.forEach((effect) => {\n /*\n * Target cascade order is the first of:\n * -> Config.interactions.effects.effect.target\n * -> Config.effects.effect.target\n * -> Config.interactions.interaction.source\n */\n let target = effect.target;\n\n if (!target && (effect as EffectRef).effectId) {\n const referencedEffect = config.effects[(effect as EffectRef).effectId];\n\n if (referencedEffect) {\n target = referencedEffect.target;\n }\n }\n\n if (!(effect as EffectRef).effectId) {\n (effect as EffectRef).effectId = generateId();\n }\n\n // if no target is specified, use the source element as the target\n target = target || source;\n effect.target = target;\n const effectId = (effect as EffectRef).effectId;\n\n const interactionId = `${target}::${effectId}::${interactionIdx}`;\n effect.interactionId = interactionId;\n interactions[source].interactionIds.add(interactionId);\n\n if (target === source) {\n // if target is the source element, no need to add an interaction to `effects`\n return;\n }\n\n /*\n * Cache interaction effect by target element\n */\n if (!interactions[target]) {\n interactions[target] = {\n triggers: [],\n effects: {\n [interactionId]: [],\n },\n interactionIds: new Set(),\n };\n } else if (!interactions[target].effects[interactionId]) {\n interactions[target].effects[interactionId] = [];\n interactions[target].interactionIds.add(interactionId);\n }\n\n const { effects, ...rest } = interaction;\n\n interactions[target].effects[interactionId].push({ ...rest, effect });\n });\n });\n\n return {\n effects: config.effects || {},\n conditions,\n interactions,\n };\n}\n\nfunction _addInteraction(\n instance: Interact,\n interaction: Interaction,\n sourceElement: HTMLElement,\n) {\n const interactionVariations: Record<string, boolean> = {};\n\n interaction.effects.forEach((effect) => {\n const effectId = (effect as EffectRef).effectId;\n const interactionId = effect.interactionId;\n\n if (interactionVariations[interactionId!]) {\n // Skip this effect if it has already been added\n return;\n }\n\n const effectOptions = {\n ...(instance.dataCache.effects[effectId] || {}),\n ...effect,\n effectId,\n };\n\n if (instance.addedInteractions[effectOptions.interactionId!]) {\n // Skip this interaction if it has already been added\n return;\n }\n\n // TODO: implement watching for condition `change` events and add/remove interactions accordingly\n const mql = getMediaQuery(\n effectOptions.conditions || [],\n instance.dataCache.conditions,\n );\n\n if (!mql || mql.matches) {\n interactionVariations[effect.interactionId!] = true;\n\n const target =\n effect.target ||\n (effectId &&\n instance.dataCache.effects[(effect as EffectRef).effectId]?.target) ||\n interaction.source;\n\n const targetElement = Interact.getElement(target)\n ?.firstElementChild as HTMLElement;\n\n if (!targetElement) {\n // Bail out :: no target element in cache\n return;\n }\n\n instance.addedInteractions[effectOptions.interactionId!] = true;\n\n addInteraction(\n target,\n sourceElement,\n interaction.trigger,\n targetElement,\n effectOptions as Effect,\n interaction.params!,\n );\n }\n });\n}\n\n/**\n * Adds all events and effects to an element based on config\n */\nexport function add(element: IWixInteractElement, path: string): boolean {\n const instance = Interact.getInstance(path);\n\n const { triggers = [] } = instance?.dataCache.interactions[path] || {};\n const hasTriggers = triggers.length > 0;\n\n // even if we don't find a matching instance, we still want to cache the element\n Interact.setElement(path, element);\n\n const triggerSourceElement = element.firstElementChild as HTMLElement;\n\n triggers.forEach((interaction) => {\n const mql = getMediaQuery(\n interaction.conditions,\n instance!.dataCache.conditions,\n );\n\n // TODO: implement watching for condition `change` events and add/remove interactions accordingly\n if (!mql || mql.matches) {\n _addInteraction(instance!, interaction, triggerSourceElement);\n }\n });\n\n let hasEffects = false;\n if (instance) {\n hasEffects = addEffectsForTarget(path, element, instance);\n }\n\n return hasTriggers || hasEffects;\n}\n\nfunction addEffectsForTarget(\n path: string,\n element: IWixInteractElement,\n instance: Interact,\n) {\n const effects = instance.dataCache.interactions[path]?.effects || {};\n const interactionIds = Object.keys(effects);\n\n interactionIds.forEach((interactionId) => {\n if (instance.addedInteractions[interactionId]) {\n // Skip this interaction if it has already been added\n return;\n }\n\n const effectVariations = effects[interactionId];\n\n // use `some` to short-circuit after the first effect that matches the conditions\n // eslint-disable-next-line array-callback-return\n effectVariations.some(({ effect, ...options }) => {\n const effectId = (effect as EffectRef).effectId;\n\n const effectOptions = {\n ...(instance!.dataCache.effects[effectId] || {}),\n ...effect,\n effectId,\n };\n\n // TODO: implement watching for condition `change` events and add/remove interactions accordingly\n const mql = getMediaQuery(\n effectOptions.conditions || [],\n instance!.dataCache.conditions,\n );\n\n if (!mql || mql.matches) {\n const targetElement = element.firstElementChild as HTMLElement;\n const sourceElement = Interact.getElement(options.source)\n ?.firstElementChild as HTMLElement;\n\n if (!sourceElement) {\n // Bail out :: no source or target elements in cache\n return true;\n }\n\n instance!.addedInteractions[interactionId] = true;\n\n addInteraction(\n path,\n sourceElement,\n options.trigger,\n targetElement,\n effectOptions as Effect,\n options.params!,\n );\n\n // short-circuit the loop since we have a match\n return true;\n }\n });\n });\n\n return interactionIds.length > 0;\n}\n\n/**\n * Registers a handler to an event on a given element.\n */\nfunction addInteraction<T extends TriggerType>(\n path: string,\n source: HTMLElement,\n trigger: T,\n target: HTMLElement,\n effect: Effect,\n options: InteractionParamsTypes[T],\n): void {\n if (\n (effect as TransitionEffect).transition ||\n (effect as TransitionEffect).transitionProperties\n ) {\n const args: CreateTransitionCSSParams = {\n path,\n effectId: (effect as Effect & { effectId: string }).effectId!,\n transition: (effect as TransitionEffect).transition,\n properties: (effect as TransitionEffect).transitionProperties,\n };\n\n if (target.id) {\n // temporarily allow using the target's id as the element selector to override default styles in cases ids are used\n args.childSelector = `#${target.id}`;\n }\n\n (target.parentElement as IWixInteractElement).renderStyle(\n createTransitionCSS(args),\n );\n }\n\n TRIGGER_TO_HANDLER_MODULE_MAP[trigger]?.add(source, target, effect, options, Interact.forceReducedMotion);\n}\n\n/**\n * Removes all events and effects from an element based on config\n */\nexport function remove(path: string): void {\n const element = Interact.getElement(path)?.firstElementChild as HTMLElement;\n\n if (!element) {\n return;\n }\n\n Object.values(TRIGGER_TO_HANDLER_MODULE_MAP).forEach((module) =>\n module.remove(element),\n );\n\n Interact.getInstance(path)?.clearInteractionStateForPath(path);\n Interact.elementCache.delete(path);\n}\n"],"mappings":";;;;;;;;AAYA,IAAAA,mBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAC,sBAAA,CAAAH,OAAA;AAAuD,IAAAI,SAAA;AAEvD,SAASC,0BAA0BA,CAAA,EAAG;EACpC,IAAI,CAACC,cAAc,CAACC,GAAG,CAAC,sBAAsB,CAAC,EAAE;IAC/C,MAAMC,kBAAkB,GAAG,IAAAC,yCAAqB,EAAC,CAAC;IAClDH,cAAc,CAACI,MAAM,CAAC,sBAAsB,EAAEF,kBAAkB,CAAC;IAEjE,OAAO,IAAI;EACb;EAEA,OAAO,KAAK;AACd;AAEO,MAAMG,QAAQ,CAAC;EAOpBC,WAAWA,CAAA,EAAG;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IACZ,IAAI,CAACC,SAAS,GAAG;MAAEC,OAAO,EAAE,CAAC,CAAC;MAAEC,UAAU,EAAE,CAAC,CAAC;MAAEC,YAAY,EAAE,CAAC;IAAE,CAAC;IAClE,IAAI,CAACC,iBAAiB,GAAG,CAAC,CAAC;EAC7B;EAEAC,IAAIA,CAACC,MAAsB,EAAQ;IACjC,IAAI,OAAOC,MAAM,KAAK,WAAW,IAAI,CAACA,MAAM,CAAChB,cAAc,EAAE;MAC3D;IACF;IAEA,IAAI,CAACS,SAAS,GAAGQ,WAAW,CAACF,MAAM,CAAC;IAEpC,MAAMG,WAAW,GAAGnB,0BAA0B,CAAC,CAAC;IAEhD,IAAI,CAACmB,WAAW,EAAE;MAChBb,QAAQ,CAACc,YAAY,CAACC,OAAO,CAAC,CAACC,OAA4B,EAAEC,IAAI,KAC/DD,OAAO,CAACE,OAAO,CAACD,IAAI,CACtB,CAAC;IACH;EACF;EAEAE,GAAGA,CAACF,IAAY,EAAW;IACzB,OAAO,CAAC,CAAC,IAAI,CAACb,SAAS,CAACG,YAAY,CAACU,IAAI,CAAC;EAC5C;EAEAG,4BAA4BA,CAACH,IAAY,EAAQ;IAAA,IAAAI,qBAAA;IAC/C,MAAMC,cAAc,GAClB,EAAAD,qBAAA,OAAI,CAACjB,SAAS,CAACG,YAAY,CAACU,IAAI,CAAC,qBAAjCI,qBAAA,CAAmCC,cAAc,KAAI,EAAE;IAEzDA,cAAc,CAACP,OAAO,CAAEQ,aAAa,IAAK;MACxC;MACA,OAAO,IAAI,CAACf,iBAAiB,CAACe,aAAa,CAAC;IAC9C,CAAC,CAAC;EACJ;EAEA,OAAOC,MAAMA,CAACd,MAAsB,EAAY;IAC9C,MAAMe,QAAQ,GAAG,IAAIzB,QAAQ,CAAC,CAAC;IAC/BA,QAAQ,CAAC0B,SAAS,CAACC,IAAI,CAACF,QAAQ,CAAC;IAEjCA,QAAQ,CAAChB,IAAI,CAACC,MAAM,CAAC;IAErB,OAAOe,QAAQ;EACjB;EAEA,OAAOG,WAAWA,CAACX,IAAY,EAAwB;IACrD,OAAOjB,QAAQ,CAAC0B,SAAS,CAACG,IAAI,CAAEJ,QAAQ,IAAKA,QAAQ,CAACN,GAAG,CAACF,IAAI,CAAC,CAAC;EAClE;EAEA,OAAOa,UAAUA,CAACb,IAAY,EAAmC;IAC/D,OAAOjB,QAAQ,CAACc,YAAY,CAAClB,GAAG,CAACqB,IAAI,CAAC;EACxC;EAEA,OAAOc,UAAUA,CAACd,IAAY,EAAED,OAA4B,EAAQ;IAClEhB,QAAQ,CAACc,YAAY,CAACkB,GAAG,CAACf,IAAI,EAAED,OAAO,CAAC;EAC1C;AACF;AAACiB,OAAA,CAAAjC,QAAA,GAAAA,QAAA;AAAAP,SAAA,GA9DYO,QAAQ;AAAA,IAAAE,gBAAA,CAAAC,OAAA,EAARH,QAAQ,wBAGkB,KAAK;AAAA,IAAAE,gBAAA,CAAAC,OAAA,EAH/BH,QAAQ,eAIY,EAAE;AAAA,IAAAE,gBAAA,CAAAC,OAAA,EAJtBH,QAAQ,kBAKG,IAAIkC,GAAG,CAA8B,CAAC;AA2D9D,IAAIC,oBAAoB,GAAG,CAAC;;AAE5B;AACA;AACA;AACA,SAASvB,WAAWA,CAACF,MAAsB,EAAiB;EAAA,IAAA0B,oBAAA;EAC1D,MAAM9B,UAAU,GAAGI,MAAM,CAACJ,UAAU,IAAI,CAAC,CAAC;EAC1C,MAAMC,YAA2C,GAAG,CAAC,CAAC;EAEtD,CAAA6B,oBAAA,GAAA1B,MAAM,CAACH,YAAY,aAAnB6B,oBAAA,CAAqBrB,OAAO,CAAEsB,WAAW,IAAK;IAAA,IAAAC,oBAAA,EAAAC,qBAAA;IAC5C,MAAMC,MAAM,GAAGH,WAAW,CAACG,MAAM;IACjC,MAAMC,cAAc,GAAG,EAAEN,oBAAoB;IAE7C,IAAI,CAACK,MAAM,EAAE;MACXE,OAAO,CAACC,KAAK,CACX,eAAeF,cAAc,+BAC/B,CAAC;MACD;IACF;IAEA,IAAI,CAAClC,YAAY,CAACiC,MAAM,CAAC,EAAE;MACzBjC,YAAY,CAACiC,MAAM,CAAC,GAAG;QACrBI,QAAQ,EAAE,EAAE;QACZvC,OAAO,EAAE,CAAC,CAAC;QACXiB,cAAc,EAAE,IAAIuB,GAAG,CAAC;MAC1B,CAAC;IACH;;IAEA;AACJ;AACA;IACI,CAAAP,oBAAA,GAAAD,WAAW,CAAChC,OAAO,aAAnBiC,oBAAA,CAAqBQ,OAAO,CAAC,CAAC,CAAC,CAAC;;IAEhCvC,YAAY,CAACiC,MAAM,CAAC,CAACI,QAAQ,CAACjB,IAAI,CAACU,WAAW,CAAC;IAE/C,CAAAE,qBAAA,GAAAF,WAAW,CAAChC,OAAO,aAAnBkC,qBAAA,CAAqBxB,OAAO,CAAEgC,MAAM,IAAK;MACvC;AACN;AACA;AACA;AACA;AACA;MACM,IAAIC,MAAM,GAAGD,MAAM,CAACC,MAAM;MAE1B,IAAI,CAACA,MAAM,IAAKD,MAAM,CAAeE,QAAQ,EAAE;QAC7C,MAAMC,gBAAgB,GAAGxC,MAAM,CAACL,OAAO,CAAE0C,MAAM,CAAeE,QAAQ,CAAC;QAEvE,IAAIC,gBAAgB,EAAE;UACpBF,MAAM,GAAGE,gBAAgB,CAACF,MAAM;QAClC;MACF;MAEA,IAAI,CAAED,MAAM,CAAeE,QAAQ,EAAE;QAClCF,MAAM,CAAeE,QAAQ,GAAG,IAAAE,iBAAU,EAAC,CAAC;MAC/C;;MAEA;MACAH,MAAM,GAAGA,MAAM,IAAIR,MAAM;MACzBO,MAAM,CAACC,MAAM,GAAGA,MAAM;MACtB,MAAMC,QAAQ,GAAIF,MAAM,CAAeE,QAAQ;MAE/C,MAAM1B,aAAa,GAAG,GAAGyB,MAAM,KAAKC,QAAQ,KAAKR,cAAc,EAAE;MACjEM,MAAM,CAACxB,aAAa,GAAGA,aAAa;MACpChB,YAAY,CAACiC,MAAM,CAAC,CAAClB,cAAc,CAAC8B,GAAG,CAAC7B,aAAa,CAAC;MAEtD,IAAIyB,MAAM,KAAKR,MAAM,EAAE;QACrB;QACA;MACF;;MAEA;AACN;AACA;MACM,IAAI,CAACjC,YAAY,CAACyC,MAAM,CAAC,EAAE;QACzBzC,YAAY,CAACyC,MAAM,CAAC,GAAG;UACrBJ,QAAQ,EAAE,EAAE;UACZvC,OAAO,EAAE;YACP,CAACkB,aAAa,GAAG;UACnB,CAAC;UACDD,cAAc,EAAE,IAAIuB,GAAG,CAAC;QAC1B,CAAC;MACH,CAAC,MAAM,IAAI,CAACtC,YAAY,CAACyC,MAAM,CAAC,CAAC3C,OAAO,CAACkB,aAAa,CAAC,EAAE;QACvDhB,YAAY,CAACyC,MAAM,CAAC,CAAC3C,OAAO,CAACkB,aAAa,CAAC,GAAG,EAAE;QAChDhB,YAAY,CAACyC,MAAM,CAAC,CAAC1B,cAAc,CAAC8B,GAAG,CAAC7B,aAAa,CAAC;MACxD;MAEA,MAAM;QAAElB,OAAO;QAAE,GAAGgD;MAAK,CAAC,GAAGhB,WAAW;MAExC9B,YAAY,CAACyC,MAAM,CAAC,CAAC3C,OAAO,CAACkB,aAAa,CAAC,CAACI,IAAI,CAAC;QAAE,GAAG0B,IAAI;QAAEN;MAAO,CAAC,CAAC;IACvE,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,OAAO;IACL1C,OAAO,EAAEK,MAAM,CAACL,OAAO,IAAI,CAAC,CAAC;IAC7BC,UAAU;IACVC;EACF,CAAC;AACH;AAEA,SAAS+C,eAAeA,CACtB7B,QAAkB,EAClBY,WAAwB,EACxBkB,aAA0B,EAC1B;EACA,MAAMC,qBAA8C,GAAG,CAAC,CAAC;EAEzDnB,WAAW,CAAChC,OAAO,CAACU,OAAO,CAAEgC,MAAM,IAAK;IACtC,MAAME,QAAQ,GAAIF,MAAM,CAAeE,QAAQ;IAC/C,MAAM1B,aAAa,GAAGwB,MAAM,CAACxB,aAAa;IAE1C,IAAIiC,qBAAqB,CAACjC,aAAa,CAAE,EAAE;MACzC;MACA;IACF;IAEA,MAAMkC,aAAa,GAAG;MACpB,IAAIhC,QAAQ,CAACrB,SAAS,CAACC,OAAO,CAAC4C,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;MAC/C,GAAGF,MAAM;MACTE;IACF,CAAC;IAED,IAAIxB,QAAQ,CAACjB,iBAAiB,CAACiD,aAAa,CAAClC,aAAa,CAAE,EAAE;MAC5D;MACA;IACF;;IAEA;IACA,MAAMmC,GAAG,GAAG,IAAAC,oBAAa,EACvBF,aAAa,CAACnD,UAAU,IAAI,EAAE,EAC9BmB,QAAQ,CAACrB,SAAS,CAACE,UACrB,CAAC;IAED,IAAI,CAACoD,GAAG,IAAIA,GAAG,CAACE,OAAO,EAAE;MAAA,IAAAC,qBAAA,EAAAC,oBAAA;MACvBN,qBAAqB,CAACT,MAAM,CAACxB,aAAa,CAAE,GAAG,IAAI;MAEnD,MAAMyB,MAAM,GACVD,MAAM,CAACC,MAAM,IACZC,QAAQ,MAAAY,qBAAA,GACPpC,QAAQ,CAACrB,SAAS,CAACC,OAAO,CAAE0C,MAAM,CAAeE,QAAQ,CAAC,qBAA1DY,qBAAA,CAA4Db,MAAM,CAAC,IACrEX,WAAW,CAACG,MAAM;MAEpB,MAAMuB,aAAa,IAAAD,oBAAA,GAAG9D,QAAQ,CAAC8B,UAAU,CAACkB,MAAM,CAAC,qBAA3Bc,oBAAA,CAClBE,iBAAgC;MAEpC,IAAI,CAACD,aAAa,EAAE;QAClB;QACA;MACF;MAEAtC,QAAQ,CAACjB,iBAAiB,CAACiD,aAAa,CAAClC,aAAa,CAAE,GAAG,IAAI;MAE/D0C,cAAc,CACZjB,MAAM,EACNO,aAAa,EACblB,WAAW,CAAC6B,OAAO,EACnBH,aAAa,EACbN,aAAa,EACbpB,WAAW,CAAC8B,MACd,CAAC;IACH;EACF,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACO,SAASf,GAAGA,CAACpC,OAA4B,EAAEC,IAAY,EAAW;EACvE,MAAMQ,QAAQ,GAAGzB,QAAQ,CAAC4B,WAAW,CAACX,IAAI,CAAC;EAE3C,MAAM;IAAE2B,QAAQ,GAAG;EAAG,CAAC,GAAG,CAAAnB,QAAQ,oBAARA,QAAQ,CAAErB,SAAS,CAACG,YAAY,CAACU,IAAI,CAAC,KAAI,CAAC,CAAC;EACtE,MAAMmD,WAAW,GAAGxB,QAAQ,CAACyB,MAAM,GAAG,CAAC;;EAEvC;EACArE,QAAQ,CAAC+B,UAAU,CAACd,IAAI,EAAED,OAAO,CAAC;EAElC,MAAMsD,oBAAoB,GAAGtD,OAAO,CAACgD,iBAAgC;EAErEpB,QAAQ,CAAC7B,OAAO,CAAEsB,WAAW,IAAK;IAChC,MAAMqB,GAAG,GAAG,IAAAC,oBAAa,EACvBtB,WAAW,CAAC/B,UAAU,EACtBmB,QAAQ,CAAErB,SAAS,CAACE,UACtB,CAAC;;IAED;IACA,IAAI,CAACoD,GAAG,IAAIA,GAAG,CAACE,OAAO,EAAE;MACvBN,eAAe,CAAC7B,QAAQ,EAAGY,WAAW,EAAEiC,oBAAoB,CAAC;IAC/D;EACF,CAAC,CAAC;EAEF,IAAIC,UAAU,GAAG,KAAK;EACtB,IAAI9C,QAAQ,EAAE;IACZ8C,UAAU,GAAGC,mBAAmB,CAACvD,IAAI,EAAED,OAAO,EAAES,QAAQ,CAAC;EAC3D;EAEA,OAAO2C,WAAW,IAAIG,UAAU;AAClC;AAEA,SAASC,mBAAmBA,CAC1BvD,IAAY,EACZD,OAA4B,EAC5BS,QAAkB,EAClB;EAAA,IAAAgD,qBAAA;EACA,MAAMpE,OAAO,GAAG,EAAAoE,qBAAA,GAAAhD,QAAQ,CAACrB,SAAS,CAACG,YAAY,CAACU,IAAI,CAAC,qBAArCwD,qBAAA,CAAuCpE,OAAO,KAAI,CAAC,CAAC;EACpE,MAAMiB,cAAc,GAAGoD,MAAM,CAACC,IAAI,CAACtE,OAAO,CAAC;EAE3CiB,cAAc,CAACP,OAAO,CAAEQ,aAAa,IAAK;IACxC,IAAIE,QAAQ,CAACjB,iBAAiB,CAACe,aAAa,CAAC,EAAE;MAC7C;MACA;IACF;IAEA,MAAMqD,gBAAgB,GAAGvE,OAAO,CAACkB,aAAa,CAAC;;IAE/C;IACA;IACAqD,gBAAgB,CAACC,IAAI,CAAC,CAAC;MAAE9B,MAAM;MAAE,GAAG+B;IAAQ,CAAC,KAAK;MAChD,MAAM7B,QAAQ,GAAIF,MAAM,CAAeE,QAAQ;MAE/C,MAAMQ,aAAa,GAAG;QACpB,IAAIhC,QAAQ,CAAErB,SAAS,CAACC,OAAO,CAAC4C,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,GAAGF,MAAM;QACTE;MACF,CAAC;;MAED;MACA,MAAMS,GAAG,GAAG,IAAAC,oBAAa,EACvBF,aAAa,CAACnD,UAAU,IAAI,EAAE,EAC9BmB,QAAQ,CAAErB,SAAS,CAACE,UACtB,CAAC;MAED,IAAI,CAACoD,GAAG,IAAIA,GAAG,CAACE,OAAO,EAAE;QAAA,IAAAmB,qBAAA;QACvB,MAAMhB,aAAa,GAAG/C,OAAO,CAACgD,iBAAgC;QAC9D,MAAMT,aAAa,IAAAwB,qBAAA,GAAG/E,QAAQ,CAAC8B,UAAU,CAACgD,OAAO,CAACtC,MAAM,CAAC,qBAAnCuC,qBAAA,CAClBf,iBAAgC;QAEpC,IAAI,CAACT,aAAa,EAAE;UAClB;UACA,OAAO,IAAI;QACb;QAEA9B,QAAQ,CAAEjB,iBAAiB,CAACe,aAAa,CAAC,GAAG,IAAI;QAEjD0C,cAAc,CACZhD,IAAI,EACJsC,aAAa,EACbuB,OAAO,CAACZ,OAAO,EACfH,aAAa,EACbN,aAAa,EACbqB,OAAO,CAACX,MACV,CAAC;;QAED;QACA,OAAO,IAAI;MACb;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,OAAO7C,cAAc,CAAC+C,MAAM,GAAG,CAAC;AAClC;;AAEA;AACA;AACA;AACA,SAASJ,cAAcA,CACrBhD,IAAY,EACZuB,MAAmB,EACnB0B,OAAU,EACVlB,MAAmB,EACnBD,MAAc,EACd+B,OAAkC,EAC5B;EAAA,IAAAE,qBAAA;EACN,IACGjC,MAAM,CAAsBkC,UAAU,IACtClC,MAAM,CAAsBmC,oBAAoB,EACjD;IACA,MAAMC,IAA+B,GAAG;MACtClE,IAAI;MACJgC,QAAQ,EAAGF,MAAM,CAAmCE,QAAS;MAC7DgC,UAAU,EAAGlC,MAAM,CAAsBkC,UAAU;MACnDG,UAAU,EAAGrC,MAAM,CAAsBmC;IAC3C,CAAC;IAED,IAAIlC,MAAM,CAACqC,EAAE,EAAE;MACb;MACAF,IAAI,CAACG,aAAa,GAAG,IAAItC,MAAM,CAACqC,EAAE,EAAE;IACtC;IAECrC,MAAM,CAACuC,aAAa,CAAyBC,WAAW,CACvD,IAAAC,0BAAmB,EAACN,IAAI,CAC1B,CAAC;EACH;EAEA,CAAAH,qBAAA,GAAAU,iBAA6B,CAACxB,OAAO,CAAC,aAAtCc,qBAAA,CAAwC5B,GAAG,CAACZ,MAAM,EAAEQ,MAAM,EAAED,MAAM,EAAE+B,OAAO,EAAE9E,QAAQ,CAAC2F,kBAAkB,CAAC;AAC3G;;AAEA;AACA;AACA;AACO,SAASC,MAAMA,CAAC3E,IAAY,EAAQ;EAAA,IAAA4E,qBAAA,EAAAC,qBAAA;EACzC,MAAM9E,OAAO,IAAA6E,qBAAA,GAAG7F,QAAQ,CAAC8B,UAAU,CAACb,IAAI,CAAC,qBAAzB4E,qBAAA,CAA2B7B,iBAAgC;EAE3E,IAAI,CAAChD,OAAO,EAAE;IACZ;EACF;EAEA0D,MAAM,CAACqB,MAAM,CAACL,iBAA6B,CAAC,CAAC3E,OAAO,CAAEiF,MAAM,IAC1DA,MAAM,CAACJ,MAAM,CAAC5E,OAAO,CACvB,CAAC;EAED,CAAA8E,qBAAA,GAAA9F,QAAQ,CAAC4B,WAAW,CAACX,IAAI,CAAC,aAA1B6E,qBAAA,CAA4B1E,4BAA4B,CAACH,IAAI,CAAC;EAC9DjB,QAAQ,CAACc,YAAY,CAACmF,MAAM,CAAChF,IAAI,CAAC;AACpC","ignoreList":[]}
|
package/dist/esm/interact.js
DELETED
|
@@ -1,301 +0,0 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
var _Interact;
|
|
3
|
-
import { getWixInteractElement } from './WixInteractElement';
|
|
4
|
-
import { generateId, createTransitionCSS, getMediaQuery } from './utils';
|
|
5
|
-
import TRIGGER_TO_HANDLER_MODULE_MAP from './handlers';
|
|
6
|
-
function registerWixInteractElement() {
|
|
7
|
-
if (!customElements.get('wix-interact-element')) {
|
|
8
|
-
const wixInteractElement = getWixInteractElement();
|
|
9
|
-
customElements.define('wix-interact-element', wixInteractElement);
|
|
10
|
-
return true;
|
|
11
|
-
}
|
|
12
|
-
return false;
|
|
13
|
-
}
|
|
14
|
-
export class Interact {
|
|
15
|
-
constructor() {
|
|
16
|
-
_defineProperty(this, "dataCache", void 0);
|
|
17
|
-
_defineProperty(this, "addedInteractions", void 0);
|
|
18
|
-
this.dataCache = {
|
|
19
|
-
effects: {},
|
|
20
|
-
conditions: {},
|
|
21
|
-
interactions: {}
|
|
22
|
-
};
|
|
23
|
-
this.addedInteractions = {};
|
|
24
|
-
}
|
|
25
|
-
init(config) {
|
|
26
|
-
if (typeof window === 'undefined' || !window.customElements) {
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
this.dataCache = parseConfig(config);
|
|
30
|
-
const didRegister = registerWixInteractElement();
|
|
31
|
-
if (!didRegister) {
|
|
32
|
-
Interact.elementCache.forEach((element, path) => element.connect(path));
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
has(path) {
|
|
36
|
-
return !!this.dataCache.interactions[path];
|
|
37
|
-
}
|
|
38
|
-
clearInteractionStateForPath(path) {
|
|
39
|
-
var _this$dataCache$inter;
|
|
40
|
-
const interactionIds = ((_this$dataCache$inter = this.dataCache.interactions[path]) == null ? void 0 : _this$dataCache$inter.interactionIds) || [];
|
|
41
|
-
interactionIds.forEach(interactionId => {
|
|
42
|
-
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
43
|
-
delete this.addedInteractions[interactionId];
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
static create(config) {
|
|
47
|
-
const instance = new Interact();
|
|
48
|
-
Interact.instances.push(instance);
|
|
49
|
-
instance.init(config);
|
|
50
|
-
return instance;
|
|
51
|
-
}
|
|
52
|
-
static getInstance(path) {
|
|
53
|
-
return Interact.instances.find(instance => instance.has(path));
|
|
54
|
-
}
|
|
55
|
-
static getElement(path) {
|
|
56
|
-
return Interact.elementCache.get(path);
|
|
57
|
-
}
|
|
58
|
-
static setElement(path, element) {
|
|
59
|
-
Interact.elementCache.set(path, element);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
_Interact = Interact;
|
|
63
|
-
_defineProperty(Interact, "forceReducedMotion", false);
|
|
64
|
-
_defineProperty(Interact, "instances", []);
|
|
65
|
-
_defineProperty(Interact, "elementCache", new Map());
|
|
66
|
-
let interactionIdCounter = 0;
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Parses the config object and caches interactions, effects, and conditions
|
|
70
|
-
*/
|
|
71
|
-
function parseConfig(config) {
|
|
72
|
-
var _config$interactions;
|
|
73
|
-
const conditions = config.conditions || {};
|
|
74
|
-
const interactions = {};
|
|
75
|
-
(_config$interactions = config.interactions) == null || _config$interactions.forEach(interaction => {
|
|
76
|
-
var _interaction$effects, _interaction$effects2;
|
|
77
|
-
const source = interaction.source;
|
|
78
|
-
const interactionIdx = ++interactionIdCounter;
|
|
79
|
-
if (!source) {
|
|
80
|
-
console.error(`Interaction ${interactionIdx} is missing a source element.`);
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
if (!interactions[source]) {
|
|
84
|
-
interactions[source] = {
|
|
85
|
-
triggers: [],
|
|
86
|
-
effects: {},
|
|
87
|
-
interactionIds: new Set()
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/*
|
|
92
|
-
* Cache interaction trigger by source element
|
|
93
|
-
*/
|
|
94
|
-
(_interaction$effects = interaction.effects) == null || _interaction$effects.reverse(); // reverse to ensure the first effect is the one that will be applied first
|
|
95
|
-
|
|
96
|
-
interactions[source].triggers.push(interaction);
|
|
97
|
-
(_interaction$effects2 = interaction.effects) == null || _interaction$effects2.forEach(effect => {
|
|
98
|
-
/*
|
|
99
|
-
* Target cascade order is the first of:
|
|
100
|
-
* -> Config.interactions.effects.effect.target
|
|
101
|
-
* -> Config.effects.effect.target
|
|
102
|
-
* -> Config.interactions.interaction.source
|
|
103
|
-
*/
|
|
104
|
-
let target = effect.target;
|
|
105
|
-
if (!target && effect.effectId) {
|
|
106
|
-
const referencedEffect = config.effects[effect.effectId];
|
|
107
|
-
if (referencedEffect) {
|
|
108
|
-
target = referencedEffect.target;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
if (!effect.effectId) {
|
|
112
|
-
effect.effectId = generateId();
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// if no target is specified, use the source element as the target
|
|
116
|
-
target = target || source;
|
|
117
|
-
effect.target = target;
|
|
118
|
-
const effectId = effect.effectId;
|
|
119
|
-
const interactionId = `${target}::${effectId}::${interactionIdx}`;
|
|
120
|
-
effect.interactionId = interactionId;
|
|
121
|
-
interactions[source].interactionIds.add(interactionId);
|
|
122
|
-
if (target === source) {
|
|
123
|
-
// if target is the source element, no need to add an interaction to `effects`
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/*
|
|
128
|
-
* Cache interaction effect by target element
|
|
129
|
-
*/
|
|
130
|
-
if (!interactions[target]) {
|
|
131
|
-
interactions[target] = {
|
|
132
|
-
triggers: [],
|
|
133
|
-
effects: {
|
|
134
|
-
[interactionId]: []
|
|
135
|
-
},
|
|
136
|
-
interactionIds: new Set()
|
|
137
|
-
};
|
|
138
|
-
} else if (!interactions[target].effects[interactionId]) {
|
|
139
|
-
interactions[target].effects[interactionId] = [];
|
|
140
|
-
interactions[target].interactionIds.add(interactionId);
|
|
141
|
-
}
|
|
142
|
-
const {
|
|
143
|
-
effects,
|
|
144
|
-
...rest
|
|
145
|
-
} = interaction;
|
|
146
|
-
interactions[target].effects[interactionId].push({
|
|
147
|
-
...rest,
|
|
148
|
-
effect
|
|
149
|
-
});
|
|
150
|
-
});
|
|
151
|
-
});
|
|
152
|
-
return {
|
|
153
|
-
effects: config.effects || {},
|
|
154
|
-
conditions,
|
|
155
|
-
interactions
|
|
156
|
-
};
|
|
157
|
-
}
|
|
158
|
-
function _addInteraction(instance, interaction, sourceElement) {
|
|
159
|
-
const interactionVariations = {};
|
|
160
|
-
interaction.effects.forEach(effect => {
|
|
161
|
-
const effectId = effect.effectId;
|
|
162
|
-
const interactionId = effect.interactionId;
|
|
163
|
-
if (interactionVariations[interactionId]) {
|
|
164
|
-
// Skip this effect if it has already been added
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
|
-
const effectOptions = {
|
|
168
|
-
...(instance.dataCache.effects[effectId] || {}),
|
|
169
|
-
...effect,
|
|
170
|
-
effectId
|
|
171
|
-
};
|
|
172
|
-
if (instance.addedInteractions[effectOptions.interactionId]) {
|
|
173
|
-
// Skip this interaction if it has already been added
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
// TODO: implement watching for condition `change` events and add/remove interactions accordingly
|
|
178
|
-
const mql = getMediaQuery(effectOptions.conditions || [], instance.dataCache.conditions);
|
|
179
|
-
if (!mql || mql.matches) {
|
|
180
|
-
var _instance$dataCache$e, _Interact$getElement;
|
|
181
|
-
interactionVariations[effect.interactionId] = true;
|
|
182
|
-
const target = effect.target || effectId && ((_instance$dataCache$e = instance.dataCache.effects[effect.effectId]) == null ? void 0 : _instance$dataCache$e.target) || interaction.source;
|
|
183
|
-
const targetElement = (_Interact$getElement = Interact.getElement(target)) == null ? void 0 : _Interact$getElement.firstElementChild;
|
|
184
|
-
if (!targetElement) {
|
|
185
|
-
// Bail out :: no target element in cache
|
|
186
|
-
return;
|
|
187
|
-
}
|
|
188
|
-
instance.addedInteractions[effectOptions.interactionId] = true;
|
|
189
|
-
addInteraction(target, sourceElement, interaction.trigger, targetElement, effectOptions, interaction.params);
|
|
190
|
-
}
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
* Adds all events and effects to an element based on config
|
|
196
|
-
*/
|
|
197
|
-
export function add(element, path) {
|
|
198
|
-
const instance = Interact.getInstance(path);
|
|
199
|
-
const {
|
|
200
|
-
triggers = []
|
|
201
|
-
} = (instance == null ? void 0 : instance.dataCache.interactions[path]) || {};
|
|
202
|
-
const hasTriggers = triggers.length > 0;
|
|
203
|
-
|
|
204
|
-
// even if we don't find a matching instance, we still want to cache the element
|
|
205
|
-
Interact.setElement(path, element);
|
|
206
|
-
const triggerSourceElement = element.firstElementChild;
|
|
207
|
-
triggers.forEach(interaction => {
|
|
208
|
-
const mql = getMediaQuery(interaction.conditions, instance.dataCache.conditions);
|
|
209
|
-
|
|
210
|
-
// TODO: implement watching for condition `change` events and add/remove interactions accordingly
|
|
211
|
-
if (!mql || mql.matches) {
|
|
212
|
-
_addInteraction(instance, interaction, triggerSourceElement);
|
|
213
|
-
}
|
|
214
|
-
});
|
|
215
|
-
let hasEffects = false;
|
|
216
|
-
if (instance) {
|
|
217
|
-
hasEffects = addEffectsForTarget(path, element, instance);
|
|
218
|
-
}
|
|
219
|
-
return hasTriggers || hasEffects;
|
|
220
|
-
}
|
|
221
|
-
function addEffectsForTarget(path, element, instance) {
|
|
222
|
-
var _instance$dataCache$i;
|
|
223
|
-
const effects = ((_instance$dataCache$i = instance.dataCache.interactions[path]) == null ? void 0 : _instance$dataCache$i.effects) || {};
|
|
224
|
-
const interactionIds = Object.keys(effects);
|
|
225
|
-
interactionIds.forEach(interactionId => {
|
|
226
|
-
if (instance.addedInteractions[interactionId]) {
|
|
227
|
-
// Skip this interaction if it has already been added
|
|
228
|
-
return;
|
|
229
|
-
}
|
|
230
|
-
const effectVariations = effects[interactionId];
|
|
231
|
-
|
|
232
|
-
// use `some` to short-circuit after the first effect that matches the conditions
|
|
233
|
-
// eslint-disable-next-line array-callback-return
|
|
234
|
-
effectVariations.some(_ref => {
|
|
235
|
-
let {
|
|
236
|
-
effect,
|
|
237
|
-
...options
|
|
238
|
-
} = _ref;
|
|
239
|
-
const effectId = effect.effectId;
|
|
240
|
-
const effectOptions = {
|
|
241
|
-
...(instance.dataCache.effects[effectId] || {}),
|
|
242
|
-
...effect,
|
|
243
|
-
effectId
|
|
244
|
-
};
|
|
245
|
-
|
|
246
|
-
// TODO: implement watching for condition `change` events and add/remove interactions accordingly
|
|
247
|
-
const mql = getMediaQuery(effectOptions.conditions || [], instance.dataCache.conditions);
|
|
248
|
-
if (!mql || mql.matches) {
|
|
249
|
-
var _Interact$getElement2;
|
|
250
|
-
const targetElement = element.firstElementChild;
|
|
251
|
-
const sourceElement = (_Interact$getElement2 = Interact.getElement(options.source)) == null ? void 0 : _Interact$getElement2.firstElementChild;
|
|
252
|
-
if (!sourceElement) {
|
|
253
|
-
// Bail out :: no source or target elements in cache
|
|
254
|
-
return true;
|
|
255
|
-
}
|
|
256
|
-
instance.addedInteractions[interactionId] = true;
|
|
257
|
-
addInteraction(path, sourceElement, options.trigger, targetElement, effectOptions, options.params);
|
|
258
|
-
|
|
259
|
-
// short-circuit the loop since we have a match
|
|
260
|
-
return true;
|
|
261
|
-
}
|
|
262
|
-
});
|
|
263
|
-
});
|
|
264
|
-
return interactionIds.length > 0;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
/**
|
|
268
|
-
* Registers a handler to an event on a given element.
|
|
269
|
-
*/
|
|
270
|
-
function addInteraction(path, source, trigger, target, effect, options) {
|
|
271
|
-
var _TRIGGER_TO_HANDLER_M;
|
|
272
|
-
if (effect.transition || effect.transitionProperties) {
|
|
273
|
-
const args = {
|
|
274
|
-
path,
|
|
275
|
-
effectId: effect.effectId,
|
|
276
|
-
transition: effect.transition,
|
|
277
|
-
properties: effect.transitionProperties
|
|
278
|
-
};
|
|
279
|
-
if (target.id) {
|
|
280
|
-
// temporarily allow using the target's id as the element selector to override default styles in cases ids are used
|
|
281
|
-
args.childSelector = `#${target.id}`;
|
|
282
|
-
}
|
|
283
|
-
target.parentElement.renderStyle(createTransitionCSS(args));
|
|
284
|
-
}
|
|
285
|
-
(_TRIGGER_TO_HANDLER_M = TRIGGER_TO_HANDLER_MODULE_MAP[trigger]) == null || _TRIGGER_TO_HANDLER_M.add(source, target, effect, options, Interact.forceReducedMotion);
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
/**
|
|
289
|
-
* Removes all events and effects from an element based on config
|
|
290
|
-
*/
|
|
291
|
-
export function remove(path) {
|
|
292
|
-
var _Interact$getElement3, _Interact$getInstance;
|
|
293
|
-
const element = (_Interact$getElement3 = Interact.getElement(path)) == null ? void 0 : _Interact$getElement3.firstElementChild;
|
|
294
|
-
if (!element) {
|
|
295
|
-
return;
|
|
296
|
-
}
|
|
297
|
-
Object.values(TRIGGER_TO_HANDLER_MODULE_MAP).forEach(module => module.remove(element));
|
|
298
|
-
(_Interact$getInstance = Interact.getInstance(path)) == null || _Interact$getInstance.clearInteractionStateForPath(path);
|
|
299
|
-
Interact.elementCache.delete(path);
|
|
300
|
-
}
|
|
301
|
-
//# sourceMappingURL=interact.js.map
|
package/dist/esm/interact.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["getWixInteractElement","generateId","createTransitionCSS","getMediaQuery","TRIGGER_TO_HANDLER_MODULE_MAP","registerWixInteractElement","customElements","get","wixInteractElement","define","Interact","constructor","_defineProperty","dataCache","effects","conditions","interactions","addedInteractions","init","config","window","parseConfig","didRegister","elementCache","forEach","element","path","connect","has","clearInteractionStateForPath","_this$dataCache$inter","interactionIds","interactionId","create","instance","instances","push","getInstance","find","getElement","setElement","set","_Interact","Map","interactionIdCounter","_config$interactions","interaction","_interaction$effects","_interaction$effects2","source","interactionIdx","console","error","triggers","Set","reverse","effect","target","effectId","referencedEffect","add","rest","_addInteraction","sourceElement","interactionVariations","effectOptions","mql","matches","_instance$dataCache$e","_Interact$getElement","targetElement","firstElementChild","addInteraction","trigger","params","hasTriggers","length","triggerSourceElement","hasEffects","addEffectsForTarget","_instance$dataCache$i","Object","keys","effectVariations","some","_ref","options","_Interact$getElement2","_TRIGGER_TO_HANDLER_M","transition","transitionProperties","args","properties","id","childSelector","parentElement","renderStyle","forceReducedMotion","remove","_Interact$getElement3","_Interact$getInstance","values","module","delete"],"sources":["../../src/interact.ts"],"sourcesContent":["import type {\n InteractConfig,\n Effect,\n TriggerType,\n InteractCache,\n EffectRef,\n InteractionParamsTypes,\n TransitionEffect,\n IWixInteractElement,\n Interaction,\n CreateTransitionCSSParams,\n} from './types';\nimport { getWixInteractElement } from './WixInteractElement';\nimport { generateId, createTransitionCSS, getMediaQuery } from './utils';\nimport TRIGGER_TO_HANDLER_MODULE_MAP from './handlers';\n\nfunction registerWixInteractElement() {\n if (!customElements.get('wix-interact-element')) {\n const wixInteractElement = getWixInteractElement();\n customElements.define('wix-interact-element', wixInteractElement);\n\n return true;\n }\n\n return false;\n}\n\nexport class Interact {\n dataCache: InteractCache;\n addedInteractions: { [interactionId: string]: boolean };\n static forceReducedMotion: boolean = false;\n static instances: Interact[] = [];\n static elementCache = new Map<string, IWixInteractElement>();\n\n constructor() {\n this.dataCache = { effects: {}, conditions: {}, interactions: {} };\n this.addedInteractions = {};\n }\n\n init(config: InteractConfig): void {\n if (typeof window === 'undefined' || !window.customElements) {\n return;\n }\n\n this.dataCache = parseConfig(config);\n\n const didRegister = registerWixInteractElement();\n\n if (!didRegister) {\n Interact.elementCache.forEach((element: IWixInteractElement, path) =>\n element.connect(path),\n );\n }\n }\n\n has(path: string): boolean {\n return !!this.dataCache.interactions[path];\n }\n\n clearInteractionStateForPath(path: string): void {\n const interactionIds =\n this.dataCache.interactions[path]?.interactionIds || [];\n\n interactionIds.forEach((interactionId) => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.addedInteractions[interactionId];\n });\n }\n\n static create(config: InteractConfig): Interact {\n const instance = new Interact();\n Interact.instances.push(instance);\n\n instance.init(config);\n\n return instance;\n }\n\n static getInstance(path: string): Interact | undefined {\n return Interact.instances.find((instance) => instance.has(path));\n }\n\n static getElement(path: string): IWixInteractElement | undefined {\n return Interact.elementCache.get(path);\n }\n\n static setElement(path: string, element: IWixInteractElement): void {\n Interact.elementCache.set(path, element);\n }\n}\n\nlet interactionIdCounter = 0;\n\n/**\n * Parses the config object and caches interactions, effects, and conditions\n */\nfunction parseConfig(config: InteractConfig): InteractCache {\n const conditions = config.conditions || {};\n const interactions: InteractCache['interactions'] = {};\n\n config.interactions?.forEach((interaction) => {\n const source = interaction.source;\n const interactionIdx = ++interactionIdCounter;\n\n if (!source) {\n console.error(\n `Interaction ${interactionIdx} is missing a source element.`,\n );\n return;\n }\n\n if (!interactions[source]) {\n interactions[source] = {\n triggers: [],\n effects: {},\n interactionIds: new Set(),\n };\n }\n\n /*\n * Cache interaction trigger by source element\n */\n interaction.effects?.reverse(); // reverse to ensure the first effect is the one that will be applied first\n\n interactions[source].triggers.push(interaction);\n\n interaction.effects?.forEach((effect) => {\n /*\n * Target cascade order is the first of:\n * -> Config.interactions.effects.effect.target\n * -> Config.effects.effect.target\n * -> Config.interactions.interaction.source\n */\n let target = effect.target;\n\n if (!target && (effect as EffectRef).effectId) {\n const referencedEffect = config.effects[(effect as EffectRef).effectId];\n\n if (referencedEffect) {\n target = referencedEffect.target;\n }\n }\n\n if (!(effect as EffectRef).effectId) {\n (effect as EffectRef).effectId = generateId();\n }\n\n // if no target is specified, use the source element as the target\n target = target || source;\n effect.target = target;\n const effectId = (effect as EffectRef).effectId;\n\n const interactionId = `${target}::${effectId}::${interactionIdx}`;\n effect.interactionId = interactionId;\n interactions[source].interactionIds.add(interactionId);\n\n if (target === source) {\n // if target is the source element, no need to add an interaction to `effects`\n return;\n }\n\n /*\n * Cache interaction effect by target element\n */\n if (!interactions[target]) {\n interactions[target] = {\n triggers: [],\n effects: {\n [interactionId]: [],\n },\n interactionIds: new Set(),\n };\n } else if (!interactions[target].effects[interactionId]) {\n interactions[target].effects[interactionId] = [];\n interactions[target].interactionIds.add(interactionId);\n }\n\n const { effects, ...rest } = interaction;\n\n interactions[target].effects[interactionId].push({ ...rest, effect });\n });\n });\n\n return {\n effects: config.effects || {},\n conditions,\n interactions,\n };\n}\n\nfunction _addInteraction(\n instance: Interact,\n interaction: Interaction,\n sourceElement: HTMLElement,\n) {\n const interactionVariations: Record<string, boolean> = {};\n\n interaction.effects.forEach((effect) => {\n const effectId = (effect as EffectRef).effectId;\n const interactionId = effect.interactionId;\n\n if (interactionVariations[interactionId!]) {\n // Skip this effect if it has already been added\n return;\n }\n\n const effectOptions = {\n ...(instance.dataCache.effects[effectId] || {}),\n ...effect,\n effectId,\n };\n\n if (instance.addedInteractions[effectOptions.interactionId!]) {\n // Skip this interaction if it has already been added\n return;\n }\n\n // TODO: implement watching for condition `change` events and add/remove interactions accordingly\n const mql = getMediaQuery(\n effectOptions.conditions || [],\n instance.dataCache.conditions,\n );\n\n if (!mql || mql.matches) {\n interactionVariations[effect.interactionId!] = true;\n\n const target =\n effect.target ||\n (effectId &&\n instance.dataCache.effects[(effect as EffectRef).effectId]?.target) ||\n interaction.source;\n\n const targetElement = Interact.getElement(target)\n ?.firstElementChild as HTMLElement;\n\n if (!targetElement) {\n // Bail out :: no target element in cache\n return;\n }\n\n instance.addedInteractions[effectOptions.interactionId!] = true;\n\n addInteraction(\n target,\n sourceElement,\n interaction.trigger,\n targetElement,\n effectOptions as Effect,\n interaction.params!,\n );\n }\n });\n}\n\n/**\n * Adds all events and effects to an element based on config\n */\nexport function add(element: IWixInteractElement, path: string): boolean {\n const instance = Interact.getInstance(path);\n\n const { triggers = [] } = instance?.dataCache.interactions[path] || {};\n const hasTriggers = triggers.length > 0;\n\n // even if we don't find a matching instance, we still want to cache the element\n Interact.setElement(path, element);\n\n const triggerSourceElement = element.firstElementChild as HTMLElement;\n\n triggers.forEach((interaction) => {\n const mql = getMediaQuery(\n interaction.conditions,\n instance!.dataCache.conditions,\n );\n\n // TODO: implement watching for condition `change` events and add/remove interactions accordingly\n if (!mql || mql.matches) {\n _addInteraction(instance!, interaction, triggerSourceElement);\n }\n });\n\n let hasEffects = false;\n if (instance) {\n hasEffects = addEffectsForTarget(path, element, instance);\n }\n\n return hasTriggers || hasEffects;\n}\n\nfunction addEffectsForTarget(\n path: string,\n element: IWixInteractElement,\n instance: Interact,\n) {\n const effects = instance.dataCache.interactions[path]?.effects || {};\n const interactionIds = Object.keys(effects);\n\n interactionIds.forEach((interactionId) => {\n if (instance.addedInteractions[interactionId]) {\n // Skip this interaction if it has already been added\n return;\n }\n\n const effectVariations = effects[interactionId];\n\n // use `some` to short-circuit after the first effect that matches the conditions\n // eslint-disable-next-line array-callback-return\n effectVariations.some(({ effect, ...options }) => {\n const effectId = (effect as EffectRef).effectId;\n\n const effectOptions = {\n ...(instance!.dataCache.effects[effectId] || {}),\n ...effect,\n effectId,\n };\n\n // TODO: implement watching for condition `change` events and add/remove interactions accordingly\n const mql = getMediaQuery(\n effectOptions.conditions || [],\n instance!.dataCache.conditions,\n );\n\n if (!mql || mql.matches) {\n const targetElement = element.firstElementChild as HTMLElement;\n const sourceElement = Interact.getElement(options.source)\n ?.firstElementChild as HTMLElement;\n\n if (!sourceElement) {\n // Bail out :: no source or target elements in cache\n return true;\n }\n\n instance!.addedInteractions[interactionId] = true;\n\n addInteraction(\n path,\n sourceElement,\n options.trigger,\n targetElement,\n effectOptions as Effect,\n options.params!,\n );\n\n // short-circuit the loop since we have a match\n return true;\n }\n });\n });\n\n return interactionIds.length > 0;\n}\n\n/**\n * Registers a handler to an event on a given element.\n */\nfunction addInteraction<T extends TriggerType>(\n path: string,\n source: HTMLElement,\n trigger: T,\n target: HTMLElement,\n effect: Effect,\n options: InteractionParamsTypes[T],\n): void {\n if (\n (effect as TransitionEffect).transition ||\n (effect as TransitionEffect).transitionProperties\n ) {\n const args: CreateTransitionCSSParams = {\n path,\n effectId: (effect as Effect & { effectId: string }).effectId!,\n transition: (effect as TransitionEffect).transition,\n properties: (effect as TransitionEffect).transitionProperties,\n };\n\n if (target.id) {\n // temporarily allow using the target's id as the element selector to override default styles in cases ids are used\n args.childSelector = `#${target.id}`;\n }\n\n (target.parentElement as IWixInteractElement).renderStyle(\n createTransitionCSS(args),\n );\n }\n\n TRIGGER_TO_HANDLER_MODULE_MAP[trigger]?.add(source, target, effect, options, Interact.forceReducedMotion);\n}\n\n/**\n * Removes all events and effects from an element based on config\n */\nexport function remove(path: string): void {\n const element = Interact.getElement(path)?.firstElementChild as HTMLElement;\n\n if (!element) {\n return;\n }\n\n Object.values(TRIGGER_TO_HANDLER_MODULE_MAP).forEach((module) =>\n module.remove(element),\n );\n\n Interact.getInstance(path)?.clearInteractionStateForPath(path);\n Interact.elementCache.delete(path);\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/types/interact.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type { InteractConfig, InteractCache, IWixInteractElement } from './types';
|
|
2
|
-
export declare class Interact {
|
|
3
|
-
dataCache: InteractCache;
|
|
4
|
-
addedInteractions: {
|
|
5
|
-
[interactionId: string]: boolean;
|
|
6
|
-
};
|
|
7
|
-
static forceReducedMotion: boolean;
|
|
8
|
-
static instances: Interact[];
|
|
9
|
-
static elementCache: Map<string, IWixInteractElement>;
|
|
10
|
-
constructor();
|
|
11
|
-
init(config: InteractConfig): void;
|
|
12
|
-
has(path: string): boolean;
|
|
13
|
-
clearInteractionStateForPath(path: string): void;
|
|
14
|
-
static create(config: InteractConfig): Interact;
|
|
15
|
-
static getInstance(path: string): Interact | undefined;
|
|
16
|
-
static getElement(path: string): IWixInteractElement | undefined;
|
|
17
|
-
static setElement(path: string, element: IWixInteractElement): void;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Adds all events and effects to an element based on config
|
|
21
|
-
*/
|
|
22
|
-
export declare function add(element: IWixInteractElement, path: string): boolean;
|
|
23
|
-
/**
|
|
24
|
-
* Removes all events and effects from an element based on config
|
|
25
|
-
*/
|
|
26
|
-
export declare function remove(path: string): void;
|