@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.
Files changed (52) hide show
  1. package/README.md +33 -21
  2. package/dist/cjs/WixInteractElement.js +61 -17
  3. package/dist/cjs/WixInteractElement.js.map +1 -1
  4. package/dist/cjs/__tests__/interact.spec.js +761 -109
  5. package/dist/cjs/__tests__/interact.spec.js.map +1 -1
  6. package/dist/cjs/core/Interact.js +190 -0
  7. package/dist/cjs/core/Interact.js.map +1 -0
  8. package/dist/cjs/core/add.js +231 -0
  9. package/dist/cjs/core/add.js.map +1 -0
  10. package/dist/cjs/core/remove.js +37 -0
  11. package/dist/cjs/core/remove.js.map +1 -0
  12. package/dist/cjs/handlers/click.js +1 -1
  13. package/dist/cjs/handlers/click.js.map +1 -1
  14. package/dist/cjs/handlers/hover.js +1 -1
  15. package/dist/cjs/handlers/hover.js.map +1 -1
  16. package/dist/cjs/index.js +6 -4
  17. package/dist/cjs/index.js.map +1 -1
  18. package/dist/cjs/types.js.map +1 -1
  19. package/dist/cjs/utils.js +12 -10
  20. package/dist/cjs/utils.js.map +1 -1
  21. package/dist/esm/WixInteractElement.js +61 -17
  22. package/dist/esm/WixInteractElement.js.map +1 -1
  23. package/dist/esm/__tests__/interact.spec.js +743 -91
  24. package/dist/esm/__tests__/interact.spec.js.map +1 -1
  25. package/dist/esm/core/Interact.js +186 -0
  26. package/dist/esm/core/Interact.js.map +1 -0
  27. package/dist/esm/core/add.js +226 -0
  28. package/dist/esm/core/add.js.map +1 -0
  29. package/dist/esm/core/remove.js +32 -0
  30. package/dist/esm/core/remove.js.map +1 -0
  31. package/dist/esm/handlers/click.js +1 -1
  32. package/dist/esm/handlers/click.js.map +1 -1
  33. package/dist/esm/handlers/hover.js +1 -1
  34. package/dist/esm/handlers/hover.js.map +1 -1
  35. package/dist/esm/index.js +3 -1
  36. package/dist/esm/index.js.map +1 -1
  37. package/dist/esm/types.js.map +1 -1
  38. package/dist/esm/utils.js +12 -10
  39. package/dist/esm/utils.js.map +1 -1
  40. package/dist/types/WixInteractElement.d.ts +5 -2
  41. package/dist/types/core/Interact.d.ts +24 -0
  42. package/dist/types/core/add.d.ts +6 -0
  43. package/dist/types/core/remove.d.ts +5 -0
  44. package/dist/types/index.d.ts +3 -1
  45. package/dist/types/types.d.ts +22 -9
  46. package/dist/types/utils.d.ts +1 -1
  47. package/package.json +7 -6
  48. package/dist/cjs/interact.js +0 -308
  49. package/dist/cjs/interact.js.map +0 -1
  50. package/dist/esm/interact.js +0 -301
  51. package/dist/esm/interact.js.map +0 -1
  52. package/dist/types/interact.d.ts +0 -26
@@ -1 +1 @@
1
- {"version":3,"names":["_interact","require","_utilities","jest","mock","getWebAnimation","fn","mockReturnValue","play","cancel","onFinish","getScrubScene","getEasing","mockImplementation","v","getAnimation","target","options","trigger","reducedMotion","Pointer","start","destroy","Scroll","end","describe","element","mockConfig","interactions","source","params","threshold","effects","effectId","hitArea","type","method","namedEffect","direction","power","duration","distance","value","axis","transitionDuration","transitionEasing","centeredToTarget","distanceFactor","range","opacity","rangeStart","name","offset","rangeEnd","transition","styleProperties","beforeEach","document","createElement","div","append","window","KeyframeEffect","constructor","keyframes","ViewTimeline","Animation","effect","timeline","IntersectionObserver","callback","observe","unobserve","CSSStyleSheet","_","replace","adoptedStyleSheets","mockMatchMedia","matchingQueries","queryRule","join","mockMQL","query","matches","media","onchange","addEventListener","removeEventListener","dispatchEvent","Object","defineProperty","writable","createCascadingTestConfig","conditions","matchingConditions","desktop","predicate","mobile","tablet","afterEach","clearAllMocks","remove","Interact","instances","length","elementCache","clear","it","create","expect","customElements","get","toBeDefined","forceReducedMotion","add","toHaveBeenCalledWith","any","undefined","addEventListenerSpy","spyOn","toHaveBeenCalledTimes","Function","objectContaining","passive","HTMLElement","elementClick","divClick","pointerInstance","effectToAnimationOptions","toHaveBeenCalled","scrollInstance","setTimeout","removeEventListenerSpy","not","toThrow","config","sourceElement","sourceDiv","targetElement","targetDiv","firstElementChild","complexConfig","target1Element","target1Div","target2Element","target2Div","multiConditionConfig","configWithMissingCondition","configWithEmptyConditions"],"sources":["../../../src/__tests__/interact.spec.ts"],"sourcesContent":["import { Interact, add, remove } from '../interact';\nimport type {\n InteractConfig,\n ScrubEffect,\n IWixInteractElement,\n} from '../types';\nimport type { NamedEffect } from '@wix/motion';\nimport { effectToAnimationOptions } from '../handlers/utilities';\n\n// Mock @wix/motion module\njest.mock('@wix/motion', () => {\n const mock: any = {\n getWebAnimation: jest.fn().mockReturnValue({\n play: jest.fn(),\n cancel: jest.fn(),\n onFinish: jest.fn(),\n }),\n getScrubScene: jest.fn().mockReturnValue({}),\n getEasing: jest.fn().mockImplementation((v) => v),\n getAnimation: jest.fn().mockImplementation((target, options, trigger, reducedMotion) => {\n return mock.getWebAnimation(target, options, trigger, { reducedMotion });\n }),\n };\n\n return mock;\n});\n\n// Mock kuliso module\njest.mock('kuliso', () => ({\n Pointer: jest.fn().mockImplementation(() => ({\n start: jest.fn(),\n destroy: jest.fn(),\n })),\n}));\n\n// Mock fizban module\njest.mock('fizban', () => ({\n Scroll: jest.fn().mockImplementation(() => ({\n start: jest.fn(),\n end: jest.fn(),\n })),\n}));\n\ndescribe('interact', () => {\n let element: IWixInteractElement;\n const mockConfig: InteractConfig = {\n interactions: [\n {\n trigger: 'viewEnter',\n source: '#logo-entrance',\n params: {\n threshold: 0.2,\n },\n effects: [\n {\n target: '#logo-entrance',\n effectId: 'logo-arc-in',\n },\n {\n target: '#logo-click',\n effectId: 'logo-bounce',\n },\n ],\n },\n {\n trigger: 'pageVisible',\n source: '#logo-loop',\n effects: [\n {\n target: '#logo-loop',\n effectId: 'logo-poke',\n },\n ],\n },\n {\n trigger: 'animationEnd',\n source: '#logo-animation-end',\n params: {\n effectId: 'logo-arc-in',\n },\n effects: [\n {\n target: '#logo-animation-end',\n effectId: 'logo-poke',\n },\n ],\n },\n {\n trigger: 'pointerMove',\n source: '#logo-mouse',\n params: {\n hitArea: 'root',\n },\n effects: [\n {\n target: '#logo-mouse',\n effectId: 'logo-track-mouse',\n },\n ],\n },\n {\n trigger: 'click',\n source: '#logo-click',\n params: {\n type: 'alternate',\n },\n effects: [\n {\n target: '#logo-click',\n effectId: 'logo-bounce',\n },\n ],\n },\n {\n trigger: 'click',\n source: '#logo-click',\n params: {\n method: 'toggle',\n },\n effects: [\n {\n target: '#logo-click',\n effectId: 'logo-transition-hover',\n },\n ],\n },\n {\n trigger: 'hover',\n source: '#logo-hover',\n params: {\n type: 'alternate',\n },\n effects: [\n {\n target: '#logo-hover',\n effectId: 'logo-arc-in',\n },\n {\n target: '#logo-hover',\n effectId: 'logo-arc-in',\n namedEffect: {\n type: 'ArcIn',\n direction: 'left',\n power: 'hard',\n } as NamedEffect,\n },\n ],\n },\n {\n trigger: 'hover',\n source: '#logo-hover',\n params: {\n method: 'toggle',\n },\n effects: [\n {\n target: '#logo-hover',\n effectId: 'logo-transition-hover',\n },\n ],\n },\n {\n trigger: 'viewProgress',\n source: '#logo-scroll',\n effects: [\n {\n target: '#logo-scroll',\n effectId: 'logo-fade-scroll',\n },\n ],\n },\n ],\n effects: {\n 'logo-arc-in': {\n namedEffect: {\n type: 'ArcIn',\n direction: 'right',\n power: 'medium',\n } as NamedEffect,\n duration: 1200,\n },\n 'logo-arc-in-with-target': {\n target: '#logo-hover',\n namedEffect: {\n type: 'ArcIn',\n direction: 'right',\n power: 'medium',\n } as NamedEffect,\n duration: 1200,\n },\n 'logo-track-mouse': {\n namedEffect: {\n type: 'TrackMouse',\n distance: { value: 20, type: 'px' },\n axis: 'both',\n power: 'medium',\n } as NamedEffect,\n transitionDuration: 300,\n transitionEasing: 'easeOut',\n centeredToTarget: true,\n },\n 'logo-bounce': {\n namedEffect: {\n type: 'BounceIn',\n power: 'hard',\n direction: 'center',\n distanceFactor: 1.2,\n } as NamedEffect,\n duration: 500,\n },\n 'logo-fade-scroll': {\n namedEffect: {\n type: 'FadeScroll',\n range: 'in',\n opacity: 0,\n } as NamedEffect,\n rangeStart: {\n name: 'contain',\n offset: { value: -10, type: 'percentage' },\n },\n rangeEnd: {\n name: 'contain',\n offset: { value: 110, type: 'percentage' },\n },\n },\n 'logo-transition-hover': {\n transition: {\n duration: 300,\n styleProperties: [{ name: 'opacity', value: '0' }],\n },\n },\n 'logo-poke': {\n namedEffect: {\n type: 'Poke',\n direction: 'left',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n };\n\n beforeEach(() => {\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n // Mock Web Animations API\n (window as any).KeyframeEffect = class KeyframeEffect {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n constructor(element: Element | null, keyframes: any[], options: any) {\n return { element, keyframes, options };\n }\n };\n\n // Mock ViewTimeline\n (window as any).ViewTimeline = class ViewTimeline {\n constructor(options: any) {\n return { ...options };\n }\n };\n\n // Mock Animation\n (window as any).Animation = class Animation {\n constructor(effect: any, timeline: any) {\n return { effect, timeline, play: jest.fn() };\n }\n };\n\n // Mock IntersectionObserver\n (window as any).IntersectionObserver = class IntersectionObserver {\n constructor(callback: any, options: any) {\n return { callback, options, observe: jest.fn(), unobserve: jest.fn() };\n }\n };\n\n // Mock CSSStyleSheet\n (window as any).CSSStyleSheet = class CSSStyleSheet {\n constructor(_: string) {\n return { replace: jest.fn() };\n }\n };\n\n // Mock adoptedStyleSheets\n if (!document.adoptedStyleSheets) {\n document.adoptedStyleSheets = [];\n }\n\n // Mock matchMedia for condition testing\n mockMatchMedia();\n });\n\n function mockMatchMedia(matchingQueries: string[] = []) {\n const queryRule = `(${matchingQueries.join(') and (')})`;\n const mockMQL = (query: string) => {\n return {\n matches: queryRule === query,\n media: query,\n onchange: null,\n addEventListener: jest.fn(),\n removeEventListener: jest.fn(),\n dispatchEvent: jest.fn(),\n };\n };\n\n Object.defineProperty(window, 'matchMedia', {\n writable: true,\n value: jest.fn().mockImplementation(mockMQL),\n });\n }\n\n function createCascadingTestConfig(\n conditions: Record<string, any> = {},\n matchingConditions: string[] = [],\n ): InteractConfig {\n mockMatchMedia(matchingConditions);\n\n return {\n conditions: {\n desktop: {\n type: 'media',\n predicate: 'min-width: 1024px',\n },\n mobile: {\n type: 'media',\n predicate: 'max-width: 767px',\n },\n tablet: {\n type: 'media',\n predicate: '(min-width: 768px) and (max-width: 1023px)',\n },\n ...conditions,\n },\n interactions: [\n {\n trigger: 'click',\n source: '#cascade-source',\n effects: [\n {\n target: '#cascade-target',\n effectId: 'default-effect',\n },\n {\n target: '#cascade-target',\n effectId: 'default-effect',\n conditions: ['desktop'],\n namedEffect: {\n type: 'SlideIn',\n direction: 'right',\n power: 'medium',\n } as NamedEffect,\n duration: 800,\n },\n {\n target: '#cascade-target',\n effectId: 'default-effect',\n conditions: ['mobile'],\n namedEffect: {\n type: 'BounceIn',\n direction: 'center',\n power: 'hard',\n } as NamedEffect,\n duration: 600,\n },\n ],\n },\n ],\n effects: {\n 'default-effect': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n };\n }\n\n afterEach(() => {\n jest.clearAllMocks();\n\n remove('#logo-entrance');\n remove('#logo-loop');\n remove('#logo-animation-end');\n remove('#logo-mouse');\n remove('#logo-click');\n remove('#logo-hover');\n remove('#logo-scroll');\n // Clean up cascading test elements\n remove('#cascade-source');\n remove('#cascade-target');\n remove('#cascade-target-1');\n remove('#cascade-target-2');\n remove('#multi-source-1');\n remove('#multi-source-2');\n // Clear Interact instances to ensure test isolation\n Interact.instances.length = 0;\n Interact.elementCache.clear();\n });\n\n describe('init Interact', () => {\n it('should initialize with valid config', () => {\n Interact.create({} as InteractConfig);\n expect(customElements.get('wix-interact-element')).toBeDefined();\n });\n });\n\n describe('reduced motion', () => {\n it('should pass reducedMotion=true to getWebAnimation when forceReducedMotion is true', () => {\n const { getWebAnimation } = require('@wix/motion');\n Interact.forceReducedMotion = true;\n Interact.create({\n interactions: [\n {\n trigger: 'hover',\n source: '#logo-hover',\n effects: [\n {\n target: '#logo-hover',\n effectId: 'logo-arc-in',\n },\n ],\n },\n ],\n effects: {\n 'logo-arc-in': {\n namedEffect: {\n type: 'ArcIn',\n direction: 'right',\n power: 'medium',\n } as NamedEffect,\n duration: 1200,\n },\n },\n });\n\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, '#logo-hover');\n\n expect(getWebAnimation).toHaveBeenCalledWith(\n div,\n expect.any(Object),\n undefined,\n { reducedMotion: true },\n );\n\n Interact.forceReducedMotion = false;\n\n remove('#logo-hover');\n });\n });\n\n describe('add interaction', () => {\n beforeEach(() => {\n Interact.create(mockConfig);\n });\n\n describe('hover', () => {\n it('should add handler for hover trigger with alternate type', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(element, '#logo-hover');\n\n expect(addEventListenerSpy).toHaveBeenCalledTimes(4);\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'mouseenter',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'mouseleave',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n div,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'ArcIn',\n direction: 'left',\n power: 'hard',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('click', () => {\n it('should add handler for click trigger', () => {\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(element, '#logo-click');\n\n expect(addEventListenerSpy).toHaveBeenCalledTimes(2);\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n });\n });\n\n describe('viewEnter', () => {\n it('should add handler for viewEnter trigger', () => {\n const { getWebAnimation } = require('@wix/motion');\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, '#logo-entrance');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.any(Object),\n undefined,\n { reducedMotion: false }\n );\n });\n\n it('should add handler for viewEnter trigger when target is added before source', () => {\n const { getWebAnimation } = require('@wix/motion');\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n const elementClick = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const divClick = document.createElement('div');\n element.append(divClick);\n\n add(elementClick, '#logo-click');\n add(element, '#logo-entrance');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.any(Object),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('pageVisible', () => {\n it('should add handler for pageVisible trigger', () => {\n const { getWebAnimation } = require('@wix/motion');\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, '#logo-loop');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.any(Object),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('animationEnd', () => {\n it('should add handler for animationEnd trigger', () => {\n const { getWebAnimation } = require('@wix/motion');\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, '#logo-animation-end');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.any(Object),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('pointerMove', () => {\n it('should add handler for pointerMove trigger', () => {\n const { getScrubScene } = require('@wix/motion');\n const { Pointer } = require('kuliso');\n const pointerInstance = {\n start: jest.fn(),\n destroy: jest.fn(),\n };\n Pointer.mockImplementation(() => pointerInstance);\n\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, '#logo-mouse');\n\n expect(getScrubScene).toHaveBeenCalledTimes(1);\n expect(getScrubScene).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.objectContaining(\n effectToAnimationOptions(\n mockConfig.effects['logo-track-mouse'] as ScrubEffect,\n ),\n ),\n expect.objectContaining({\n trigger: 'pointer-move',\n }),\n );\n expect(pointerInstance.start).toHaveBeenCalled();\n });\n });\n\n describe('viewProgress', () => {\n it('should add handler for viewProgress trigger with native ViewTimeline support', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, '#logo-scroll');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.objectContaining(\n effectToAnimationOptions(\n mockConfig.effects['logo-fade-scroll'] as ScrubEffect,\n ),\n ),\n expect.objectContaining({\n trigger: 'view-progress',\n }),\n );\n });\n\n it('should add handler for viewProgress trigger with fizban polyfill', () => {\n // Remove ViewTimeline support\n delete (window as any).ViewTimeline;\n const { getScrubScene } = require('@wix/motion');\n const { Scroll } = require('fizban');\n const scrollInstance = {\n start: jest.fn(),\n destroy: jest.fn(),\n };\n Scroll.mockImplementation(() => scrollInstance);\n\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, '#logo-scroll');\n\n expect(getScrubScene).toHaveBeenCalledTimes(1);\n expect(getScrubScene).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.objectContaining(\n effectToAnimationOptions(\n mockConfig.effects['logo-fade-scroll'] as ScrubEffect,\n ),\n ),\n expect.objectContaining({\n trigger: 'view-progress',\n }),\n );\n setTimeout(() => {\n expect(scrollInstance.start).toHaveBeenCalled();\n }, 0);\n });\n });\n });\n\n describe('remove interaction', () => {\n beforeEach(() => {\n Interact.create(mockConfig);\n });\n\n it('should remove event listeners', () => {\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n const removeEventListenerSpy = jest.spyOn(div, 'removeEventListener');\n\n add(element, '#logo-click');\n remove('#logo-click');\n\n expect(removeEventListenerSpy).toHaveBeenCalledTimes(2);\n expect(removeEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n );\n });\n\n it('should do nothing if key does not exist', () => {\n expect(() => remove('non-existent-key')).not.toThrow();\n });\n\n it('should cleanup pointer effects', () => {\n const { Pointer } = require('kuliso');\n const pointerInstance = {\n start: jest.fn(),\n destroy: jest.fn(),\n };\n Pointer.mockImplementation(() => pointerInstance);\n\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, '#logo-mouse');\n remove('#logo-mouse');\n\n expect(pointerInstance.destroy).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('effect cascading logic', () => {\n describe('basic cascading behavior', () => {\n it('should apply only first matching effect for same target', () => {\n const { getWebAnimation } = require('@wix/motion');\n const config = createCascadingTestConfig({}, ['min-width: 1024px']);\n\n Interact.create(config);\n\n const sourceElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n const addEventListenerSpy = jest.spyOn(sourceDiv, 'addEventListener');\n\n add(sourceElement, '#cascade-source');\n add(targetElement, '#cascade-target');\n\n expect(addEventListenerSpy).toHaveBeenCalledTimes(1);\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n\n // Should create animation with desktop effect (first matching condition)\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'SlideIn',\n direction: 'right',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should apply default effect when no conditions match', () => {\n const { getWebAnimation } = require('@wix/motion');\n const config = createCascadingTestConfig({}, []); // No matching conditions\n\n Interact.create(config);\n\n const sourceElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n add(sourceElement, '#cascade-source');\n add(targetElement, '#cascade-target');\n\n // Should create animation with default effect\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'FadeIn',\n power: 'medium',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should apply mobile effect when mobile condition matches', () => {\n const { getWebAnimation } = require('@wix/motion');\n const config = createCascadingTestConfig({}, ['max-width: 767px']);\n\n Interact.create(config);\n\n const sourceElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n add(sourceElement, '#cascade-source');\n add(targetElement, '#cascade-target');\n\n // Should create animation with mobile effect\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'BounceIn',\n direction: 'center',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('element addition order', () => {\n it('should work when source is added before target', () => {\n const { getWebAnimation } = require('@wix/motion');\n const config = createCascadingTestConfig({}, ['min-width: 1024px']);\n\n Interact.create(config);\n\n const sourceElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n // Add source first\n add(sourceElement, '#cascade-source');\n // Add target second\n add(targetElement, '#cascade-target');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'SlideIn',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should work when target is added before source', () => {\n const { getWebAnimation } = require('@wix/motion');\n const config = createCascadingTestConfig({}, ['min-width: 1024px']);\n\n Interact.create(config);\n\n const sourceElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n // Add target first\n add(targetElement, '#cascade-target');\n // Add source second\n add(sourceElement, '#cascade-source');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'SlideIn',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('complex cascading scenarios', () => {\n it('should handle multiple targets with different conditions', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n const complexConfig: InteractConfig = {\n conditions: {\n desktop: {\n type: 'media',\n predicate: 'min-width: 1024px',\n },\n mobile: {\n type: 'media',\n predicate: 'max-width: 767px',\n },\n },\n interactions: [\n {\n trigger: 'click',\n source: '#multi-source-1',\n effects: [\n {\n target: '#cascade-target-1',\n effectId: 'desktop-effect',\n conditions: ['desktop'],\n },\n {\n target: '#cascade-target-2',\n effectId: 'mobile-effect',\n conditions: ['mobile'],\n },\n ],\n },\n ],\n effects: {\n 'desktop-effect': {\n namedEffect: {\n type: 'SlideIn',\n direction: 'right',\n power: 'medium',\n } as NamedEffect,\n duration: 800,\n },\n 'mobile-effect': {\n namedEffect: {\n type: 'BounceIn',\n direction: 'center',\n power: 'hard',\n } as NamedEffect,\n duration: 600,\n },\n },\n };\n\n mockMatchMedia(['min-width: 1024px']); // Only desktop matches\n Interact.create(complexConfig);\n\n const sourceElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const target1Element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const target1Div = document.createElement('div');\n target1Element.append(target1Div);\n\n const target2Element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const target2Div = document.createElement('div');\n target2Element.append(target2Div);\n\n add(sourceElement, '#multi-source-1');\n add(target1Element, '#cascade-target-1');\n add(target2Element, '#cascade-target-2');\n\n // Only desktop effect should be applied (mobile condition doesn't match)\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n target1Element.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'SlideIn',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n\n // Should not be called for mobile effect since condition doesn't match\n expect(getWebAnimation).not.toHaveBeenCalledWith(\n target2Element.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'BounceIn',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should handle effects with multiple conditions', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n const multiConditionConfig: InteractConfig = {\n conditions: {\n desktop: {\n type: 'media',\n predicate: 'min-width: 1024px',\n },\n 'high-res': {\n type: 'media',\n predicate: 'min-resolution: 2dppx',\n },\n },\n interactions: [\n {\n trigger: 'click',\n source: '#cascade-source',\n effects: [\n {\n target: '#cascade-target',\n effectId: 'premium-effect',\n },\n {\n target: '#cascade-target',\n effectId: 'premium-effect',\n conditions: ['desktop', 'high-res'],\n },\n ],\n },\n ],\n effects: {\n 'premium-effect': {\n namedEffect: {\n type: 'Poke',\n direction: 'left',\n power: 'hard',\n } as NamedEffect,\n duration: 1000,\n },\n },\n };\n\n // Both conditions match\n mockMatchMedia(['min-width: 1024px', 'min-resolution: 2dppx']);\n Interact.create(multiConditionConfig);\n\n const sourceElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n add(sourceElement, '#cascade-source');\n add(targetElement, '#cascade-target');\n\n // Premium effect should be applied since both conditions match\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'Poke',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('condition matching edge cases', () => {\n it('should handle missing conditions gracefully', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n const configWithMissingCondition: InteractConfig = {\n conditions: {\n desktop: {\n type: 'media',\n predicate: 'min-width: 1024px',\n },\n },\n interactions: [\n {\n trigger: 'click',\n source: '#cascade-source',\n effects: [\n {\n target: '#cascade-target',\n effectId: 'default-effect',\n },\n {\n target: '#cascade-target',\n effectId: 'default-effect',\n conditions: ['nonexistent-condition'],\n },\n ],\n },\n ],\n effects: {\n 'default-effect': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n };\n\n mockMatchMedia(['min-width: 1024px']);\n Interact.create(configWithMissingCondition);\n\n const sourceElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n add(sourceElement, '#cascade-source');\n add(targetElement, '#cascade-target');\n\n // Should fall back to default effect since condition doesn't exist\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'FadeIn',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should handle empty conditions array', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n const configWithEmptyConditions: InteractConfig = {\n conditions: {},\n interactions: [\n {\n trigger: 'click',\n source: '#cascade-source',\n effects: [\n {\n target: '#cascade-target',\n effectId: 'always-applied-effect',\n conditions: [],\n },\n ],\n },\n ],\n effects: {\n 'always-applied-effect': {\n namedEffect: {\n type: 'Spin',\n direction: 'clockwise',\n power: 'medium',\n } as NamedEffect,\n duration: 1000,\n },\n },\n };\n\n mockMatchMedia([]);\n Interact.create(configWithEmptyConditions);\n\n const sourceElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n add(sourceElement, '#cascade-source');\n add(targetElement, '#cascade-target');\n\n // Effect should be applied since empty conditions array should always match\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'Spin',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_Interact","require","_add","_remove","_utilities","jest","mock","getWebAnimation","fn","mockReturnValue","play","cancel","onFinish","getScrubScene","getEasing","mockImplementation","v","getAnimation","target","options","trigger","reducedMotion","Pointer","start","destroy","Scroll","end","describe","element","mockConfig","interactions","key","params","threshold","effects","effectId","hitArea","type","method","namedEffect","direction","power","listContainer","duration","distance","value","axis","transitionDuration","transitionEasing","centeredToTarget","distanceFactor","range","opacity","rangeStart","name","offset","rangeEnd","transition","styleProperties","beforeEach","document","createElement","div","append","window","KeyframeEffect","constructor","keyframes","ViewTimeline","Animation","effect","timeline","IntersectionObserver","callback","observe","unobserve","CSSStyleSheet","_","replace","insertRule","adoptedStyleSheets","mockMatchMedia","matchingQueries","queryRule","join","mockMQL","query","matches","media","onchange","addEventListener","removeEventListener","dispatchEvent","Object","defineProperty","writable","createCascadingTestConfig","conditions","matchingConditions","desktop","predicate","mobile","tablet","afterEach","clearAllMocks","remove","Interact","instances","length","elementCache","clear","forceReducedMotion","it","create","expect","customElements","get","toBeDefined","add","toHaveBeenCalledWith","any","undefined","addEventListenerSpy","spyOn","toHaveBeenCalledTimes","Function","objectContaining","passive","HTMLElement","id","elementClick","divClick","calls","toBe","toMatchObject","pointerInstance","effectToAnimationOptions","toHaveBeenCalled","scrollInstance","setTimeout","ul","li","li2","cloneNode","addEventListenerSpy2","li3","addEventListenerSpy3","addListItems","targetElement","divTarget","removeEventListenerSpy","not","toThrow","config","sourceElement","sourceDiv","targetDiv","firstElementChild","complexConfig","target1Element","target1Div","target2Element","target2Div","multiConditionConfig","configWithMissingCondition","configWithEmptyConditions","innerHTML","keyframeEffect","selector","triggerButton","querySelector","firstChild","triggerSpy","firstChildSpy","animationTarget","transform","listItems","Array","from","querySelectorAll","spies","map","item","forEach","spy","_sourceElement$queryS","containerChildren","children","child","consoleSpy","console","mockRestore","color","deepTarget","buttonWithData","setAttribute","backgroundColor","targetFirstChild"],"sources":["../../../src/__tests__/interact.spec.ts"],"sourcesContent":["import { Interact } from '../core/Interact';\nimport { add, addListItems } from '../core/add';\nimport { remove } from '../core/remove';\nimport type {\n InteractConfig,\n ScrubEffect,\n IWixInteractElement,\n} from '../types';\nimport type { NamedEffect } from '@wix/motion';\nimport { effectToAnimationOptions } from '../handlers/utilities';\n\n// Mock @wix/motion module\njest.mock('@wix/motion', () => {\n const mock: any = {\n getWebAnimation: jest.fn().mockReturnValue({\n play: jest.fn(),\n cancel: jest.fn(),\n onFinish: jest.fn(),\n }),\n getScrubScene: jest.fn().mockReturnValue({}),\n getEasing: jest.fn().mockImplementation((v) => v),\n getAnimation: jest\n .fn()\n .mockImplementation((target, options, trigger, reducedMotion) => {\n return mock.getWebAnimation(target, options, trigger, {\n reducedMotion,\n });\n }),\n };\n\n return mock;\n});\n\n// Mock kuliso module\njest.mock('kuliso', () => ({\n Pointer: jest.fn().mockImplementation(() => ({\n start: jest.fn(),\n destroy: jest.fn(),\n })),\n}));\n\n// Mock fizban module\njest.mock('fizban', () => ({\n Scroll: jest.fn().mockImplementation(() => ({\n start: jest.fn(),\n end: jest.fn(),\n })),\n}));\n\ndescribe('interact', () => {\n let element: IWixInteractElement;\n const mockConfig: InteractConfig = {\n interactions: [\n {\n trigger: 'viewEnter',\n key: 'logo-entrance',\n params: {\n threshold: 0.2,\n },\n effects: [\n {\n key: 'logo-entrance',\n effectId: 'logo-arc-in',\n },\n {\n key: 'logo-click',\n effectId: 'logo-bounce',\n },\n ],\n },\n {\n trigger: 'pageVisible',\n key: 'logo-loop',\n effects: [\n {\n key: 'logo-loop',\n effectId: 'logo-poke',\n },\n ],\n },\n {\n trigger: 'animationEnd',\n key: 'logo-animation-end',\n params: {\n effectId: 'logo-arc-in',\n },\n effects: [\n {\n key: 'logo-animation-end',\n effectId: 'logo-poke',\n },\n ],\n },\n {\n trigger: 'pointerMove',\n key: 'logo-mouse',\n params: {\n hitArea: 'root',\n },\n effects: [\n {\n key: 'logo-mouse',\n effectId: 'logo-track-mouse',\n },\n ],\n },\n {\n trigger: 'click',\n key: 'logo-click',\n params: {\n type: 'alternate',\n },\n effects: [\n {\n key: 'logo-click',\n effectId: 'logo-bounce',\n },\n ],\n },\n {\n trigger: 'click',\n key: 'logo-click',\n params: {\n method: 'toggle',\n },\n effects: [\n {\n key: 'logo-click',\n effectId: 'logo-transition-hover',\n },\n ],\n },\n {\n trigger: 'hover',\n key: 'logo-hover',\n params: {\n type: 'alternate',\n },\n effects: [\n {\n key: 'logo-hover',\n effectId: 'logo-arc-in',\n },\n {\n key: 'logo-hover',\n effectId: 'logo-arc-in',\n namedEffect: {\n type: 'ArcIn',\n direction: 'left',\n power: 'hard',\n } as NamedEffect,\n },\n ],\n },\n {\n trigger: 'hover',\n key: 'logo-hover',\n params: {\n method: 'toggle',\n },\n effects: [\n {\n key: 'logo-hover',\n effectId: 'logo-transition-hover',\n },\n ],\n },\n {\n trigger: 'viewProgress',\n key: 'logo-scroll',\n effects: [\n {\n key: 'logo-scroll',\n effectId: 'logo-fade-scroll',\n },\n ],\n },\n {\n trigger: 'click',\n key: 'logo-click-container',\n listContainer: '#logo-list',\n effects: [\n {\n effectId: 'logo-bounce',\n },\n ],\n },\n {\n trigger: 'viewEnter',\n key: 'logo-view-container',\n effects: [\n {\n listContainer: '#logo-list',\n effectId: 'logo-bounce',\n },\n ],\n },\n {\n trigger: 'viewProgress',\n key: 'logo-scroll-container',\n listContainer: '#logo-scroll-list',\n effects: [\n {\n listContainer: '#logo-scroll-list',\n effectId: 'logo-fade-scroll',\n },\n ],\n },\n {\n trigger: 'viewProgress',\n key: 'logo-scroll-container',\n effects: [\n {\n key: 'logo-scroll-items',\n listContainer: '#logo-scroll-list',\n effectId: 'logo-fade-scroll',\n },\n ],\n },\n ],\n effects: {\n 'logo-arc-in': {\n namedEffect: {\n type: 'ArcIn',\n direction: 'right',\n power: 'medium',\n } as NamedEffect,\n duration: 1200,\n },\n 'logo-arc-in-with-target': {\n key: 'logo-hover',\n namedEffect: {\n type: 'ArcIn',\n direction: 'right',\n power: 'medium',\n } as NamedEffect,\n duration: 1200,\n },\n 'logo-track-mouse': {\n namedEffect: {\n type: 'TrackMouse',\n distance: { value: 20, type: 'px' },\n axis: 'both',\n power: 'medium',\n } as NamedEffect,\n transitionDuration: 300,\n transitionEasing: 'easeOut',\n centeredToTarget: true,\n },\n 'logo-bounce': {\n namedEffect: {\n type: 'BounceIn',\n power: 'hard',\n direction: 'center',\n distanceFactor: 1.2,\n } as NamedEffect,\n duration: 500,\n },\n 'logo-fade-scroll': {\n namedEffect: {\n type: 'FadeScroll',\n range: 'in',\n opacity: 0,\n } as NamedEffect,\n rangeStart: {\n name: 'contain',\n offset: { value: -10, type: 'percentage' },\n },\n rangeEnd: {\n name: 'contain',\n offset: { value: 110, type: 'percentage' },\n },\n },\n 'logo-transition-hover': {\n transition: {\n duration: 300,\n styleProperties: [{ name: 'opacity', value: '0' }],\n },\n },\n 'logo-poke': {\n namedEffect: {\n type: 'Poke',\n direction: 'left',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n };\n\n beforeEach(() => {\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n // Mock Web Animations API\n (window as any).KeyframeEffect = class KeyframeEffect {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n constructor(element: Element | null, keyframes: any[], options: any) {\n return { element, keyframes, options };\n }\n };\n\n // Mock ViewTimeline\n (window as any).ViewTimeline = class ViewTimeline {\n constructor(options: any) {\n return { ...options };\n }\n };\n\n // Mock Animation\n (window as any).Animation = class Animation {\n constructor(effect: any, timeline: any) {\n return { effect, timeline, play: jest.fn() };\n }\n };\n\n // Mock IntersectionObserver\n (window as any).IntersectionObserver = class IntersectionObserver {\n constructor(callback: any, options: any) {\n return { callback, options, observe: jest.fn(), unobserve: jest.fn() };\n }\n };\n\n // Mock CSSStyleSheet\n (window as any).CSSStyleSheet = class CSSStyleSheet {\n constructor(_: string) {\n return { replace: jest.fn(), insertRule: jest.fn() };\n }\n };\n\n // Mock adoptedStyleSheets\n if (!document.adoptedStyleSheets) {\n document.adoptedStyleSheets = [];\n }\n\n // Mock matchMedia for condition testing\n mockMatchMedia();\n });\n\n function mockMatchMedia(matchingQueries: string[] = []) {\n const queryRule = `(${matchingQueries.join(') and (')})`;\n const mockMQL = (query: string) => {\n return {\n matches: queryRule === query,\n media: query,\n onchange: null,\n addEventListener: jest.fn(),\n removeEventListener: jest.fn(),\n dispatchEvent: jest.fn(),\n };\n };\n\n Object.defineProperty(window, 'matchMedia', {\n writable: true,\n value: jest.fn().mockImplementation(mockMQL),\n });\n }\n\n function createCascadingTestConfig(\n conditions: Record<string, any> = {},\n matchingConditions: string[] = [],\n ): InteractConfig {\n mockMatchMedia(matchingConditions);\n\n return {\n conditions: {\n desktop: {\n type: 'media',\n predicate: 'min-width: 1024px',\n },\n mobile: {\n type: 'media',\n predicate: 'max-width: 767px',\n },\n tablet: {\n type: 'media',\n predicate: '(min-width: 768px) and (max-width: 1023px)',\n },\n ...conditions,\n },\n interactions: [\n {\n trigger: 'click',\n key: 'cascade-source',\n effects: [\n {\n key: 'cascade-target',\n effectId: 'default-effect',\n },\n {\n key: 'cascade-target',\n effectId: 'default-effect',\n conditions: ['desktop'],\n namedEffect: {\n type: 'SlideIn',\n direction: 'right',\n power: 'medium',\n } as NamedEffect,\n duration: 800,\n },\n {\n key: 'cascade-target',\n effectId: 'default-effect',\n conditions: ['mobile'],\n namedEffect: {\n type: 'BounceIn',\n direction: 'center',\n power: 'hard',\n } as NamedEffect,\n duration: 600,\n },\n ],\n },\n ],\n effects: {\n 'default-effect': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n };\n }\n\n afterEach(() => {\n jest.clearAllMocks();\n\n remove('logo-entrance');\n remove('logo-loop');\n remove('logo-animation-end');\n remove('logo-mouse');\n remove('logo-click');\n remove('logo-hover');\n remove('logo-scroll');\n // Clean up cascading test elements\n remove('cascade-source');\n remove('cascade-target');\n remove('cascade-target-1');\n remove('cascade-target-2');\n remove('multi-source-1');\n remove('multi-source-2');\n // Clear Interact instances to ensure test isolation\n Interact.instances.length = 0;\n Interact.elementCache.clear();\n // Reset forceReducedMotion to default\n Interact.forceReducedMotion = false;\n });\n\n describe('init Interact', () => {\n it('should initialize with valid config', () => {\n Interact.create({} as InteractConfig);\n expect(customElements.get('wix-interact-element')).toBeDefined();\n });\n });\n\n describe('reduced motion', () => {\n it('should pass reducedMotion=true to getWebAnimation when forceReducedMotion is true', () => {\n const { getWebAnimation } = require('@wix/motion');\n Interact.forceReducedMotion = true;\n Interact.create({\n interactions: [\n {\n trigger: 'hover',\n key: 'logo-hover',\n effects: [\n {\n key: 'logo-hover',\n effectId: 'logo-arc-in',\n },\n ],\n },\n ],\n effects: {\n 'logo-arc-in': {\n namedEffect: {\n type: 'ArcIn',\n direction: 'right',\n power: 'medium',\n } as NamedEffect,\n duration: 1200,\n },\n },\n });\n\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-hover');\n\n expect(getWebAnimation).toHaveBeenCalledWith(\n div,\n expect.any(Object),\n undefined,\n { reducedMotion: true },\n );\n\n Interact.forceReducedMotion = false;\n\n remove('logo-hover');\n });\n });\n\n describe('add interaction', () => {\n beforeEach(() => {\n Interact.create(mockConfig);\n });\n\n describe('hover', () => {\n it('should add handler for hover trigger with alternate type', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(element, 'logo-hover');\n\n expect(addEventListenerSpy).toHaveBeenCalledTimes(4);\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'mouseenter',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'mouseleave',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n div,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'ArcIn',\n direction: 'left',\n power: 'hard',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('click', () => {\n it('should add handler for click trigger', () => {\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(element, 'logo-click');\n\n expect(addEventListenerSpy).toHaveBeenCalledTimes(2);\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n });\n });\n\n describe('viewEnter', () => {\n it('should add handler for viewEnter trigger', () => {\n const { getWebAnimation } = require('@wix/motion');\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-entrance');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.any(Object),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should add handler for viewEnter trigger when target is added before source', () => {\n const { getWebAnimation } = require('@wix/motion');\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n div.id = 'logo-entrance';\n element.append(div);\n\n const elementClick = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const divClick = document.createElement('div');\n divClick.id = 'logo-click';\n elementClick.append(divClick);\n\n add(elementClick, 'logo-click');\n add(element, 'logo-entrance');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(3);\n expect(getWebAnimation.mock.calls[0][0]).toBe(divClick);\n expect(getWebAnimation.mock.calls[1][0]).toBe(div);\n expect(getWebAnimation.mock.calls[2][0]).toBe(divClick);\n expect(getWebAnimation.mock.calls[0][3]).toMatchObject({\n reducedMotion: false,\n });\n expect(getWebAnimation.mock.calls[1][3]).toMatchObject({\n reducedMotion: false,\n });\n expect(getWebAnimation.mock.calls[2][3]).toMatchObject({\n reducedMotion: false,\n });\n });\n });\n\n describe('pageVisible', () => {\n it('should add handler for pageVisible trigger', () => {\n const { getWebAnimation } = require('@wix/motion');\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-loop');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.any(Object),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('animationEnd', () => {\n it('should add handler for animationEnd trigger', () => {\n const { getWebAnimation } = require('@wix/motion');\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-animation-end');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.any(Object),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('pointerMove', () => {\n it('should add handler for pointerMove trigger', () => {\n const { getScrubScene } = require('@wix/motion');\n const { Pointer } = require('kuliso');\n const pointerInstance = {\n start: jest.fn(),\n destroy: jest.fn(),\n };\n Pointer.mockImplementation(() => pointerInstance);\n\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-mouse');\n\n expect(getScrubScene).toHaveBeenCalledTimes(1);\n expect(getScrubScene).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.objectContaining(\n effectToAnimationOptions(\n mockConfig.effects['logo-track-mouse'] as ScrubEffect,\n ),\n ),\n expect.objectContaining({\n trigger: 'pointer-move',\n }),\n );\n expect(pointerInstance.start).toHaveBeenCalled();\n });\n });\n\n describe('viewProgress', () => {\n it('should add handler for viewProgress trigger with native ViewTimeline support', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-scroll');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.objectContaining(\n effectToAnimationOptions(\n mockConfig.effects['logo-fade-scroll'] as ScrubEffect,\n ),\n ),\n expect.objectContaining({\n trigger: 'view-progress',\n }),\n );\n });\n\n it('should add handler for viewProgress trigger with fizban polyfill', () => {\n // Remove ViewTimeline support\n delete (window as any).ViewTimeline;\n const { getScrubScene } = require('@wix/motion');\n const { Scroll } = require('fizban');\n const scrollInstance = {\n start: jest.fn(),\n destroy: jest.fn(),\n };\n Scroll.mockImplementation(() => scrollInstance);\n\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-scroll');\n\n expect(getScrubScene).toHaveBeenCalledTimes(1);\n expect(getScrubScene).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.objectContaining(\n effectToAnimationOptions(\n mockConfig.effects['logo-fade-scroll'] as ScrubEffect,\n ),\n ),\n expect.objectContaining({\n trigger: 'view-progress',\n }),\n );\n setTimeout(() => {\n expect(scrollInstance.start).toHaveBeenCalled();\n }, 0);\n });\n });\n\n describe('listContainer', () => {\n it('should add a handler per list item for click trigger with listContainer', () => {\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n const ul = document.createElement('ul');\n ul.id = 'logo-list';\n div.append(ul);\n const li = document.createElement('li');\n const li2 = li.cloneNode(true);\n ul.append(li);\n ul.append(li2);\n element.append(div);\n\n const addEventListenerSpy = jest.spyOn(li, 'addEventListener');\n const addEventListenerSpy2 = jest.spyOn(li2, 'addEventListener');\n\n add(element, 'logo-click-container');\n\n expect(addEventListenerSpy).toHaveBeenCalledTimes(1);\n expect(addEventListenerSpy2).toHaveBeenCalledTimes(1);\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n expect(addEventListenerSpy2).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n });\n\n it('should add a handler per list item for viewEnter trigger with listContainer in effect', () => {\n const { getWebAnimation } = require('@wix/motion');\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n const ul = document.createElement('ul');\n ul.id = 'logo-list';\n div.append(ul);\n const li = document.createElement('li');\n const li2 = li.cloneNode(true);\n ul.append(li);\n ul.append(li2);\n element.append(div);\n\n add(element, 'logo-view-container');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(2);\n expect(getWebAnimation.mock.calls[0][0]).toBe(li);\n expect(getWebAnimation.mock.calls[1][0]).toBe(li2);\n });\n\n it('should add a handler per newly added list item for click trigger with listContainer', () => {\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n const ul = document.createElement('ul');\n ul.id = 'logo-list';\n div.append(ul);\n const li = document.createElement('li');\n const li2 = li.cloneNode(true);\n ul.append(li);\n ul.append(li2);\n element.append(div);\n\n const addEventListenerSpy = jest.spyOn(li, 'addEventListener');\n const addEventListenerSpy2 = jest.spyOn(li2, 'addEventListener');\n\n add(element, 'logo-click-container');\n\n expect(addEventListenerSpy).toHaveBeenCalledTimes(1);\n expect(addEventListenerSpy2).toHaveBeenCalledTimes(1);\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n expect(addEventListenerSpy2).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n\n const li3 = document.createElement('li');\n ul.append(li3);\n const addEventListenerSpy3 = jest.spyOn(li3, 'addEventListener');\n\n addListItems(element, 'logo-click-container', '#logo-list', [li3]);\n\n expect(addEventListenerSpy3).toHaveBeenCalledTimes(1);\n expect(addEventListenerSpy3).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n });\n\n it('should add a handler per newly added list item for viewProgress trigger but not add same interaction twice', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n const targetElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const divTarget = document.createElement('div');\n const ul = document.createElement('ul');\n ul.id = 'logo-scroll-list';\n divTarget.append(ul);\n const li = document.createElement('li');\n const li2 = li.cloneNode(true);\n ul.append(li);\n ul.append(li2);\n element.append(div);\n targetElement.append(divTarget);\n\n add(element, 'logo-scroll-container');\n expect(getWebAnimation).toHaveBeenCalledTimes(0);\n\n add(targetElement, 'logo-scroll-items');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(2);\n expect(getWebAnimation).toHaveBeenCalledWith(\n li,\n expect.objectContaining(\n effectToAnimationOptions(\n mockConfig.effects['logo-fade-scroll'] as ScrubEffect,\n ),\n ),\n expect.objectContaining({\n trigger: 'view-progress',\n }),\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n li2,\n expect.objectContaining(\n effectToAnimationOptions(\n mockConfig.effects['logo-fade-scroll'] as ScrubEffect,\n ),\n ),\n expect.objectContaining({\n trigger: 'view-progress',\n }),\n );\n\n const li3 = document.createElement('li');\n ul.append(li3);\n\n addListItems(targetElement, 'logo-scroll-items', '#logo-scroll-list', [\n li3,\n ]);\n\n expect(getWebAnimation).toHaveBeenCalledTimes(3);\n expect(getWebAnimation).toHaveBeenCalledWith(\n li3,\n expect.objectContaining(\n effectToAnimationOptions(\n mockConfig.effects['logo-fade-scroll'] as ScrubEffect,\n ),\n ),\n expect.objectContaining({\n trigger: 'view-progress',\n }),\n );\n });\n });\n });\n\n describe('remove interaction', () => {\n beforeEach(() => {\n Interact.create(mockConfig);\n });\n\n it('should remove event listeners', () => {\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n const removeEventListenerSpy = jest.spyOn(div, 'removeEventListener');\n\n add(element, 'logo-click');\n remove('logo-click');\n\n expect(removeEventListenerSpy).toHaveBeenCalledTimes(2);\n expect(removeEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n );\n });\n\n it('should do nothing if key does not exist', () => {\n expect(() => remove('non-existent-key')).not.toThrow();\n });\n\n it('should cleanup pointer effects', () => {\n const { Pointer } = require('kuliso');\n const pointerInstance = {\n start: jest.fn(),\n destroy: jest.fn(),\n };\n Pointer.mockImplementation(() => pointerInstance);\n\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-mouse');\n remove('logo-mouse');\n\n expect(pointerInstance.destroy).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('effect cascading logic', () => {\n describe('basic cascading behavior', () => {\n it('should apply only first matching effect for same target', () => {\n const { getWebAnimation } = require('@wix/motion');\n const config = createCascadingTestConfig({}, ['min-width: 1024px']);\n\n Interact.create(config);\n\n const sourceElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n const addEventListenerSpy = jest.spyOn(sourceDiv, 'addEventListener');\n\n add(sourceElement, 'cascade-source');\n add(targetElement, 'cascade-target');\n\n expect(addEventListenerSpy).toHaveBeenCalledTimes(1);\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n\n // Should create animation with desktop effect (first matching condition)\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'SlideIn',\n direction: 'right',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should apply default effect when no conditions match', () => {\n const { getWebAnimation } = require('@wix/motion');\n const config = createCascadingTestConfig({}, []); // No matching conditions\n\n Interact.create(config);\n\n const sourceElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n add(sourceElement, 'cascade-source');\n add(targetElement, 'cascade-target');\n\n // Should create animation with default effect\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'FadeIn',\n power: 'medium',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should apply mobile effect when mobile condition matches', () => {\n const { getWebAnimation } = require('@wix/motion');\n const config = createCascadingTestConfig({}, ['max-width: 767px']);\n\n Interact.create(config);\n\n const sourceElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n add(sourceElement, 'cascade-source');\n add(targetElement, 'cascade-target');\n\n // Should create animation with mobile effect\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'BounceIn',\n direction: 'center',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('element addition order', () => {\n it('should work when source is added before target', () => {\n const { getWebAnimation } = require('@wix/motion');\n const config = createCascadingTestConfig({}, ['min-width: 1024px']);\n\n Interact.create(config);\n\n const sourceElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n // Add source first\n add(sourceElement, 'cascade-source');\n // Add target second\n add(targetElement, 'cascade-target');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'SlideIn',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should work when target is added before source', () => {\n const { getWebAnimation } = require('@wix/motion');\n const config = createCascadingTestConfig({}, ['min-width: 1024px']);\n\n Interact.create(config);\n\n const sourceElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n // Add target first\n add(targetElement, 'cascade-target');\n // Add source second\n add(sourceElement, 'cascade-source');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'SlideIn',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('complex cascading scenarios', () => {\n it('should handle multiple targets with different conditions', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n const complexConfig: InteractConfig = {\n conditions: {\n desktop: {\n type: 'media',\n predicate: 'min-width: 1024px',\n },\n mobile: {\n type: 'media',\n predicate: 'max-width: 767px',\n },\n },\n interactions: [\n {\n trigger: 'click',\n key: 'multi-source-1',\n effects: [\n {\n key: 'cascade-target-1',\n effectId: 'desktop-effect',\n conditions: ['desktop'],\n },\n {\n key: 'cascade-target-2',\n effectId: 'mobile-effect',\n conditions: ['mobile'],\n },\n ],\n },\n ],\n effects: {\n 'desktop-effect': {\n namedEffect: {\n type: 'SlideIn',\n direction: 'right',\n power: 'medium',\n } as NamedEffect,\n duration: 800,\n },\n 'mobile-effect': {\n namedEffect: {\n type: 'BounceIn',\n direction: 'center',\n power: 'hard',\n } as NamedEffect,\n duration: 600,\n },\n },\n };\n\n mockMatchMedia(['min-width: 1024px']); // Only desktop matches\n Interact.create(complexConfig);\n\n const sourceElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const target1Element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const target1Div = document.createElement('div');\n target1Element.append(target1Div);\n\n const target2Element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const target2Div = document.createElement('div');\n target2Element.append(target2Div);\n\n add(sourceElement, 'multi-source-1');\n add(target1Element, 'cascade-target-1');\n add(target2Element, 'cascade-target-2');\n\n // Only desktop effect should be applied (mobile condition doesn't match)\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n target1Element.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'SlideIn',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n\n // Should not be called for mobile effect since condition doesn't match\n expect(getWebAnimation).not.toHaveBeenCalledWith(\n target2Element.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'BounceIn',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should handle effects with multiple conditions', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n const multiConditionConfig: InteractConfig = {\n conditions: {\n desktop: {\n type: 'media',\n predicate: 'min-width: 1024px',\n },\n 'high-res': {\n type: 'media',\n predicate: 'min-resolution: 2dppx',\n },\n },\n interactions: [\n {\n trigger: 'click',\n key: 'cascade-source',\n effects: [\n {\n key: 'cascade-target',\n effectId: 'premium-effect',\n },\n {\n key: 'cascade-target',\n effectId: 'premium-effect',\n conditions: ['desktop', 'high-res'],\n },\n ],\n },\n ],\n effects: {\n 'premium-effect': {\n namedEffect: {\n type: 'Poke',\n direction: 'left',\n power: 'hard',\n } as NamedEffect,\n duration: 1000,\n },\n },\n };\n\n // Both conditions match\n mockMatchMedia(['min-width: 1024px', 'min-resolution: 2dppx']);\n Interact.create(multiConditionConfig);\n\n const sourceElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n add(sourceElement, 'cascade-source');\n add(targetElement, 'cascade-target');\n\n // Premium effect should be applied since both conditions match\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'Poke',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('condition matching edge cases', () => {\n it('should handle missing conditions gracefully', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n const configWithMissingCondition: InteractConfig = {\n conditions: {\n desktop: {\n type: 'media',\n predicate: 'min-width: 1024px',\n },\n },\n interactions: [\n {\n trigger: 'click',\n key: 'cascade-source',\n effects: [\n {\n key: 'cascade-target',\n effectId: 'default-effect',\n },\n {\n key: 'cascade-target',\n effectId: 'default-effect',\n conditions: ['nonexistent-condition'],\n },\n ],\n },\n ],\n effects: {\n 'default-effect': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n };\n\n mockMatchMedia(['min-width: 1024px']);\n Interact.create(configWithMissingCondition);\n\n const sourceElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n add(sourceElement, 'cascade-source');\n add(targetElement, 'cascade-target');\n\n // Should fall back to default effect since condition doesn't exist\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'FadeIn',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should handle empty conditions array', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n const configWithEmptyConditions: InteractConfig = {\n conditions: {},\n interactions: [\n {\n trigger: 'click',\n key: 'cascade-source',\n effects: [\n {\n key: 'cascade-target',\n effectId: 'always-applied-effect',\n conditions: [],\n },\n ],\n },\n ],\n effects: {\n 'always-applied-effect': {\n namedEffect: {\n type: 'Spin',\n direction: 'clockwise',\n power: 'medium',\n } as NamedEffect,\n duration: 1000,\n },\n },\n };\n\n mockMatchMedia([]);\n Interact.create(configWithEmptyConditions);\n\n const sourceElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n add(sourceElement, 'cascade-source');\n add(targetElement, 'cascade-target');\n\n // Effect should be applied since empty conditions array should always match\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'Spin',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n });\n\n describe('selector functionality', () => {\n let sourceElement: IWixInteractElement;\n let targetElement: IWixInteractElement;\n\n beforeEach(() => {\n // Create source element with multiple child elements\n sourceElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n sourceElement.innerHTML = `\n <div class=\"first-child\">First Child</div>\n <button class=\"trigger-button\">Click Me</button>\n <div class=\"other-element\">Other</div>\n <div class=\"list-container\">\n <div class=\"list-item\">Item 1</div>\n <div class=\"list-item\">Item 2</div>\n <div class=\"list-item\">Item 3</div>\n </div>\n `;\n\n // Create target element with multiple child elements\n targetElement = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n targetElement.innerHTML = `\n <div class=\"first-child\">Target First</div>\n <div class=\"animation-target\">Animation Target</div>\n <div class=\"overlay\">Overlay</div>\n <div class=\"nested\">\n <span class=\"deep-target\">Deep Target</span>\n </div>\n `;\n });\n\n describe('basic selector functionality', () => {\n it('should use selector instead of firstElementChild for source', () => {\n const config: InteractConfig = {\n effects: {\n 'test-effect': {\n keyframeEffect: {\n name: 'test',\n keyframes: [{ opacity: '0' }, { opacity: '1' }],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'selector-source',\n selector: '.trigger-button',\n trigger: 'click',\n effects: [\n {\n key: 'selector-target',\n effectId: 'test-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n const triggerButton = sourceElement.querySelector(\n '.trigger-button',\n ) as HTMLElement;\n const firstChild = sourceElement.querySelector(\n '.first-child',\n ) as HTMLElement;\n\n const triggerSpy = jest.spyOn(triggerButton, 'addEventListener');\n const firstChildSpy = jest.spyOn(firstChild, 'addEventListener');\n\n add(sourceElement, 'selector-source');\n add(targetElement, 'selector-target');\n\n // Should add event listener to the selected element, not firstElementChild\n expect(triggerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n expect(firstChildSpy).not.toHaveBeenCalled();\n });\n\n it('should use selector instead of firstElementChild for target', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n const config: InteractConfig = {\n effects: {\n 'test-effect': {\n keyframeEffect: {\n name: 'test',\n keyframes: [{ opacity: '0' }, { opacity: '1' }],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'selector-source',\n trigger: 'click',\n effects: [\n {\n key: 'selector-target',\n selector: '.animation-target',\n effectId: 'test-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n add(sourceElement, 'selector-source');\n add(targetElement, 'selector-target');\n\n const animationTarget = targetElement.querySelector(\n '.animation-target',\n ) as HTMLElement;\n\n // Should create animation on the selected element, not firstElementChild\n expect(getWebAnimation).toHaveBeenCalledWith(\n animationTarget,\n expect.any(Object),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should fall back to firstElementChild when no selector is provided', () => {\n const config: InteractConfig = {\n effects: {\n 'test-effect': {\n keyframeEffect: {\n name: 'test',\n keyframes: [{ opacity: '0' }, { opacity: '1' }],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'fallback-source',\n trigger: 'click',\n effects: [\n {\n key: 'fallback-target',\n effectId: 'test-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n const firstChild = sourceElement.querySelector(\n '.first-child',\n ) as HTMLElement;\n const firstChildSpy = jest.spyOn(firstChild, 'addEventListener');\n\n add(sourceElement, 'fallback-source');\n add(targetElement, 'fallback-target');\n\n // Should fall back to firstElementChild\n expect(firstChildSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n });\n });\n\n describe('selector with listContainer', () => {\n it('should use selector within listContainer items', () => {\n const config: InteractConfig = {\n effects: {\n 'list-effect': {\n keyframeEffect: {\n name: 'list-test',\n keyframes: [\n { transform: 'scale(1)' },\n { transform: 'scale(1.1)' },\n ],\n },\n duration: 200,\n },\n },\n interactions: [\n {\n key: 'list-source',\n listContainer: '.list-container',\n selector: '.list-item',\n trigger: 'hover',\n effects: [\n {\n listContainer: '.list-container',\n selector: '.list-item',\n effectId: 'list-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n // Set up spies before adding interactions\n const listItems = Array.from(\n sourceElement.querySelectorAll('.list-item'),\n ) as HTMLElement[];\n\n const spies = listItems.map((item) =>\n jest.spyOn(item, 'addEventListener'),\n );\n\n add(sourceElement, 'list-source');\n\n // Should add event listeners to each list item\n spies.forEach((spy) => {\n expect(spy).toHaveBeenCalledWith(\n 'mouseenter',\n expect.any(Function),\n expect.any(Object),\n );\n });\n });\n\n it('should handle listContainer without selector (all children)', () => {\n const config: InteractConfig = {\n effects: {\n 'container-effect': {\n keyframeEffect: {\n name: 'container-test',\n keyframes: [{ opacity: '0.5' }, { opacity: '1' }],\n },\n duration: 150,\n },\n },\n interactions: [\n {\n key: 'container-source',\n listContainer: '.list-container',\n trigger: 'click',\n effects: [\n {\n listContainer: '.list-container',\n effectId: 'container-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n // Set up spies before adding interactions\n const containerChildren = Array.from(\n sourceElement.querySelector('.list-container')?.children || [],\n ) as HTMLElement[];\n\n const spies = containerChildren.map((child) =>\n jest.spyOn(child, 'addEventListener'),\n );\n\n add(sourceElement, 'container-source');\n\n // Should add event listeners to all children of the container\n spies.forEach((spy) => {\n expect(spy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n });\n });\n });\n\n describe('selector error handling', () => {\n let consoleSpy: jest.SpyInstance;\n\n beforeEach(() => {\n consoleSpy = jest.spyOn(console, 'warn').mockImplementation();\n });\n\n afterEach(() => {\n consoleSpy.mockRestore();\n });\n\n it('should warn when selector does not match any elements', () => {\n const config: InteractConfig = {\n effects: {\n 'test-effect': {\n keyframeEffect: {\n name: 'test',\n keyframes: [{ opacity: '0' }, { opacity: '1' }],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'invalid-source',\n selector: '.non-existent-element',\n trigger: 'click',\n effects: [\n {\n key: 'invalid-target',\n effectId: 'test-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n add(sourceElement, 'invalid-source');\n add(targetElement, 'invalid-target');\n\n expect(consoleSpy).toHaveBeenCalledWith(\n 'WixInteract: No element found for selector \".non-existent-element\"',\n );\n });\n\n it('should warn when listContainer selector does not match', () => {\n const config: InteractConfig = {\n effects: {\n 'test-effect': {\n keyframeEffect: {\n name: 'test',\n keyframes: [{ opacity: '0' }, { opacity: '1' }],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'invalid-container-source',\n listContainer: '.non-existent-container',\n trigger: 'click',\n effects: [\n {\n key: 'invalid-container-target',\n effectId: 'test-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n add(sourceElement, 'invalid-container-source');\n add(targetElement, 'invalid-container-target');\n\n expect(consoleSpy).toHaveBeenCalledWith(\n 'WixInteract: No container found for list container \".non-existent-container\"',\n );\n });\n\n it('should gracefully handle invalid selectors without breaking interactions', () => {\n const config: InteractConfig = {\n effects: {\n 'valid-effect': {\n keyframeEffect: {\n name: 'valid',\n keyframes: [{ opacity: '0' }, { opacity: '1' }],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'mixed-source',\n selector: '.non-existent',\n trigger: 'click',\n effects: [\n {\n key: 'mixed-target',\n effectId: 'valid-effect',\n },\n ],\n },\n {\n key: 'valid-source',\n selector: '.trigger-button',\n trigger: 'click',\n effects: [\n {\n key: 'valid-target',\n effectId: 'valid-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n // Set up spy before adding interactions\n const triggerButton = sourceElement.querySelector(\n '.trigger-button',\n ) as HTMLElement;\n const spy = jest.spyOn(triggerButton, 'addEventListener');\n\n // This should not throw and should allow other interactions to work\n expect(() => {\n add(sourceElement, 'mixed-source');\n add(sourceElement, 'valid-source');\n add(targetElement, 'mixed-target');\n add(targetElement, 'valid-target');\n }).not.toThrow();\n\n // Valid interaction should still work\n expect(spy).toHaveBeenCalled();\n });\n });\n\n describe('complex selector scenarios', () => {\n it('should handle nested selectors', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n const config: InteractConfig = {\n effects: {\n 'nested-effect': {\n keyframeEffect: {\n name: 'nested',\n keyframes: [{ color: 'black' }, { color: 'blue' }],\n },\n duration: 200,\n },\n },\n interactions: [\n {\n key: 'nested-source',\n selector: '.other-element',\n trigger: 'click',\n effects: [\n {\n key: 'nested-target',\n selector: '.nested .deep-target',\n effectId: 'nested-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n const addEventListenerSpy = jest.spyOn(\n sourceElement.querySelector('.other-element') as HTMLElement,\n 'addEventListener',\n );\n\n add(sourceElement, 'nested-source');\n add(targetElement, 'nested-target');\n\n const deepTarget = targetElement.querySelector(\n '.nested .deep-target',\n ) as HTMLElement;\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n\n expect(getWebAnimation).toHaveBeenCalledWith(\n deepTarget,\n expect.any(Object),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should handle attribute selectors', () => {\n // Add data attributes to test elements\n const buttonWithData = sourceElement.querySelector(\n '.trigger-button',\n ) as HTMLElement;\n buttonWithData.setAttribute('data-interactive', 'true');\n buttonWithData.setAttribute('data-category', 'primary');\n\n const config: InteractConfig = {\n effects: {\n 'attr-effect': {\n keyframeEffect: {\n name: 'attr',\n keyframes: [\n { backgroundColor: 'white' },\n { backgroundColor: 'lightblue' },\n ],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'attr-source',\n selector: '[data-interactive=\"true\"][data-category=\"primary\"]',\n trigger: 'click',\n effects: [\n {\n key: 'attr-target',\n selector: '[class*=\"animation\"]',\n effectId: 'attr-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n // Set up spy before adding interactions\n const spy = jest.spyOn(buttonWithData, 'addEventListener');\n\n add(sourceElement, 'attr-source');\n add(targetElement, 'attr-target');\n\n expect(spy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n });\n });\n\n describe('selector inheritance and priority', () => {\n it('should not inherit selector from interaction to effect', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n const config: InteractConfig = {\n effects: {\n 'inherit-effect': {\n keyframeEffect: {\n name: 'inherit',\n keyframes: [{ opacity: '0' }, { opacity: '1' }],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'inherit-source',\n selector: '.trigger-button', // Interaction has selector\n trigger: 'click',\n effects: [\n {\n key: 'inherit-target',\n // Effect has no selector - should use firstElementChild, not inherit\n effectId: 'inherit-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n add(sourceElement, 'inherit-source');\n add(targetElement, 'inherit-target');\n\n // Effect should target firstElementChild, not the interaction's selector\n const targetFirstChild = targetElement.firstElementChild as HTMLElement;\n\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetFirstChild,\n expect.any(Object),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('selector cleanup', () => {\n it('should clean up selector-based interactions on remove', () => {\n const config: InteractConfig = {\n effects: {\n 'cleanup-effect': {\n keyframeEffect: {\n name: 'cleanup',\n keyframes: [{ opacity: '0' }, { opacity: '1' }],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'cleanup-source',\n selector: '.trigger-button',\n trigger: 'click',\n effects: [\n {\n key: 'cleanup-target',\n selector: '.animation-target',\n effectId: 'cleanup-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n const triggerButton = sourceElement.querySelector(\n '.trigger-button',\n ) as HTMLElement;\n const removeEventListenerSpy = jest.spyOn(\n triggerButton,\n 'removeEventListener',\n );\n\n add(sourceElement, 'cleanup-source');\n add(targetElement, 'cleanup-target');\n\n remove('cleanup-source');\n\n // Should remove event listeners from the selected element\n expect(removeEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n );\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}