@wix/interact 1.93.0 → 1.94.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 (32) hide show
  1. package/dist/cjs/__tests__/interact.spec.js +170 -0
  2. package/dist/cjs/__tests__/interact.spec.js.map +1 -1
  3. package/dist/cjs/__tests__/viewEnter.spec.js +23 -6
  4. package/dist/cjs/__tests__/viewEnter.spec.js.map +1 -1
  5. package/dist/cjs/core/add.js.map +1 -1
  6. package/dist/cjs/handlers/animationEnd.js +6 -1
  7. package/dist/cjs/handlers/animationEnd.js.map +1 -1
  8. package/dist/cjs/handlers/click.js +12 -2
  9. package/dist/cjs/handlers/click.js.map +1 -1
  10. package/dist/cjs/handlers/hover.js +13 -3
  11. package/dist/cjs/handlers/hover.js.map +1 -1
  12. package/dist/cjs/handlers/viewEnter.js +7 -2
  13. package/dist/cjs/handlers/viewEnter.js.map +1 -1
  14. package/dist/cjs/handlers/viewProgress.js +3 -1
  15. package/dist/cjs/handlers/viewProgress.js.map +1 -1
  16. package/dist/esm/__tests__/interact.spec.js +170 -0
  17. package/dist/esm/__tests__/interact.spec.js.map +1 -1
  18. package/dist/esm/__tests__/viewEnter.spec.js +23 -6
  19. package/dist/esm/__tests__/viewEnter.spec.js.map +1 -1
  20. package/dist/esm/core/add.js.map +1 -1
  21. package/dist/esm/handlers/animationEnd.js +6 -1
  22. package/dist/esm/handlers/animationEnd.js.map +1 -1
  23. package/dist/esm/handlers/click.js +12 -2
  24. package/dist/esm/handlers/click.js.map +1 -1
  25. package/dist/esm/handlers/hover.js +13 -3
  26. package/dist/esm/handlers/hover.js.map +1 -1
  27. package/dist/esm/handlers/viewEnter.js +7 -2
  28. package/dist/esm/handlers/viewEnter.js.map +1 -1
  29. package/dist/esm/handlers/viewProgress.js +3 -1
  30. package/dist/esm/handlers/viewProgress.js.map +1 -1
  31. package/dist/types/__tests__/viewEnter.spec.d.ts +7 -0
  32. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"names":["Interact","add","addListItems","remove","effectToAnimationOptions","TRIGGER_TO_HANDLER_MODULE_MAP","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","getMockConfig","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","PointerEvent","MouseEvent","_defineProperty","pointerType","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","forceReducedMotion","allowA11yTriggers","it","create","expect","customElements","get","toBeDefined","instance","dataset","interactKey","keys","dataCache","length","toBe","elements","size","instances","elementCache","toBeGreaterThan","element1","div1","element2","div2","disconnectSpy1","spyOn","disconnectSpy2","toHaveBeenCalled","getInstance","toBeUndefined","newElement","newDiv","newAddEventListenerSpy","require","toHaveBeenCalledWith","any","undefined","addEventListenerSpy","toHaveBeenCalledTimes","Function","objectContaining","passive","HTMLElement","id","elementClick","divClick","calls","toMatchObject","pointerInstance","scrollInstance","setTimeout","ul","li","li2","cloneNode","addEventListenerSpy2","li3","addEventListenerSpy3","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","keyWithoutInstance","has","setup","scrollOptionsGetter","pointerOptionsGetter","viewProgress","pointerMove","a11yElement","getA11yConfig","mockPlay","mockClear","button","KeyboardEvent","code","bubbles","active","testElement","mockAnimation","reverse","progress","playState","isCSS","classList"],"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 IInteractElement,\n TriggerType,\n} from '../types';\nimport type { NamedEffect } from '@wix/motion';\nimport { effectToAnimationOptions } from '../handlers/utilities';\nimport TRIGGER_TO_HANDLER_MODULE_MAP from '../handlers';\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: IInteractElement;\n let mockConfig: InteractConfig;\n const getMockConfig: () => 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('interact-element') as IInteractElement;\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 PointerEvent (not available in JSDOM)\n (window as any).PointerEvent = class PointerEvent extends MouseEvent {\n pointerType: string;\n constructor(type: string, params: PointerEventInit = {}) {\n super(type, params);\n this.pointerType = params.pointerType || '';\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 // Clear Interact instances to ensure test isolation\n Interact.destroy();\n // Reset static flags to default\n Interact.forceReducedMotion = false;\n Interact.allowA11yTriggers = false;\n });\n\n describe('init Interact instance', () => {\n it('should initialize with valid config', () => {\n Interact.create({} as InteractConfig);\n expect(customElements.get('interact-element')).toBeDefined();\n });\n });\n\n describe('destroy Interact instance', () => {\n it('should clear an instance entire cache', () => {\n const instance = Interact.create(getMockConfig());\n\n element = document.createElement('interact-element') as IInteractElement;\n element.dataset.interactKey = 'logo-entrance';\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-entrance');\n\n expect(Object.keys(instance.dataCache.interactions).length).toBe(11);\n expect(instance.elements.size).toBe(1);\n expect(Interact.instances.length).toBe(1);\n\n instance.destroy();\n\n expect(Object.keys(instance.dataCache.interactions).length).toBe(0);\n expect(instance.elements.size).toBe(0);\n expect(Interact.instances.length).toBe(0);\n expect(Interact.elementCache.size).toBe(0);\n });\n });\n\n describe('destroy Interact', () => {\n it('should clear all instances', () => {\n Interact.create(getMockConfig());\n Interact.create(getMockConfig());\n\n expect(Interact.instances.length).toBe(2);\n\n Interact.destroy();\n\n expect(Interact.instances.length).toBe(0);\n });\n\n it('should clear all elements from cache', () => {\n Interact.create(getMockConfig());\n\n element = document.createElement('interact-element') as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-hover');\n\n expect(Interact.elementCache.size).toBeGreaterThan(0);\n\n Interact.destroy();\n\n expect(Interact.elementCache.size).toBe(0);\n });\n\n it('should call disconnect on all cached elements', () => {\n Interact.create(getMockConfig());\n\n const element1 = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div1 = document.createElement('div');\n element1.append(div1);\n\n const element2 = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div2 = document.createElement('div');\n element2.append(div2);\n\n add(element1, 'logo-hover');\n add(element2, 'logo-click');\n\n const disconnectSpy1 = jest.spyOn(element1, 'disconnect');\n const disconnectSpy2 = jest.spyOn(element2, 'disconnect');\n\n Interact.destroy();\n\n expect(disconnectSpy1).toHaveBeenCalled();\n expect(disconnectSpy2).toHaveBeenCalled();\n });\n\n it('should clean up interactions after destroy', () => {\n Interact.create(getMockConfig());\n\n element = document.createElement('interact-element') as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-click');\n\n Interact.destroy();\n\n // After destroy, getInstance should return undefined\n expect(Interact.getInstance('logo-click')).toBeUndefined();\n\n // Re-create instance and verify it works independently\n Interact.create(getMockConfig());\n const newElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const newDiv = document.createElement('div');\n newElement.append(newDiv);\n\n const newAddEventListenerSpy = jest.spyOn(newDiv, 'addEventListener');\n add(newElement, 'logo-click');\n\n expect(newAddEventListenerSpy).toHaveBeenCalled();\n expect(Interact.getInstance('logo-click')).toBeDefined();\n });\n\n // TODO: fix this test - when adding this test it causes 2 other tests to fail\n // it('should remove event listeners and styles when disconnect is called', () => {\n // Interact.create(mockConfig);\n\n // element = document.createElement(\n // 'interact-element',\n // ) as IInteractElement;\n // element.dataset.interactKey = 'logo-click';\n // const div = document.createElement('div');\n // element.append(div);\n\n // add(element, 'logo-click');\n\n // const removeEventListenerSpy = jest.spyOn(div, 'removeEventListener');\n\n // Interact.destroy();\n\n // expect(removeEventListenerSpy).toHaveBeenCalled();\n // expect(removeEventListenerSpy).toHaveBeenCalledWith(\n // 'click',\n // expect.any(Function),\n // );\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('interact-element') as IInteractElement;\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 Interact.destroy();\n });\n });\n\n describe('add interaction', () => {\n beforeEach(() => {\n mockConfig = getMockConfig();\n Interact.create(mockConfig);\n });\n afterEach(() => {\n Interact.destroy();\n jest.clearAllMocks();\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 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n expect(getWebAnimation).toHaveBeenCalledTimes(0);\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 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n div.id = 'logo-entrance';\n element.dataset.interactKey = 'logo-entrance';\n element.append(div);\n\n const elementClick = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const divClick = document.createElement('div');\n divClick.id = 'logo-click';\n elementClick.dataset.interactKey = '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(divClick);\n expect(getWebAnimation.mock.calls[2][0]).toBe(div);\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 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\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 getMockConfig().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 'interact-element',\n ) as IInteractElement;\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 getMockConfig().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 'interact-element',\n ) as IInteractElement;\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 getMockConfig().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 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\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 getMockConfig().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 getMockConfig().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 getMockConfig().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(getMockConfig());\n });\n afterEach(() => {\n Interact.destroy();\n });\n\n it('should remove event listeners', () => {\n element = document.createElement('interact-element') as IInteractElement;\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('interact-element') as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const target1Element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const target1Div = document.createElement('div');\n target1Element.append(target1Div);\n\n const target2Element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\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: IInteractElement;\n let targetElement: IInteractElement;\n\n beforeEach(() => {\n // Create source element with multiple child elements\n sourceElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\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 'Interact: 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 'Interact: 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 describe('element caching', () => {\n it('should cache element in elementCache even when no instance was found for it', () => {\n const keyWithoutInstance = 'key-without-instance';\n add(element, keyWithoutInstance);\n\n expect(Interact.elementCache.has(keyWithoutInstance)).toBe(true);\n expect(Interact.elementCache.get(keyWithoutInstance)).toBe(element);\n });\n });\n\n describe('setup', () => {\n afterEach(() => {\n Interact.setup({\n scrollOptionsGetter: () => ({}),\n pointerOptionsGetter: () => ({}),\n });\n });\n\n it('should register scroll options getter', () => {\n const scrollOptionsGetter = jest.fn().mockReturnValue({});\n const spy = jest.spyOn(\n TRIGGER_TO_HANDLER_MODULE_MAP.viewProgress,\n 'registerOptionsGetter',\n );\n\n Interact.setup({ scrollOptionsGetter });\n\n expect(spy).toHaveBeenCalledWith(scrollOptionsGetter);\n });\n\n it('should register pointer options getter', () => {\n const pointerOptionsGetter = jest.fn().mockReturnValue({});\n const spy = jest.spyOn(\n TRIGGER_TO_HANDLER_MODULE_MAP.pointerMove,\n 'registerOptionsGetter',\n );\n\n Interact.setup({ pointerOptionsGetter });\n\n expect(spy).toHaveBeenCalledWith(pointerOptionsGetter);\n });\n });\n\n describe('a11y - accessible triggers', () => {\n let a11yElement: IInteractElement;\n\n function getA11yConfig(trigger: TriggerType, key: string): InteractConfig {\n return {\n interactions: [\n {\n trigger,\n key,\n effects: [{ effectId: 'test-effect' }],\n },\n ],\n effects: {\n 'test-effect': {\n namedEffect: { type: 'BounceIn', power: 'medium' } as NamedEffect,\n duration: 500,\n },\n },\n };\n }\n\n afterEach(() => {\n Interact.destroy();\n });\n\n describe('activate trigger', () => {\n it('should add both click and keydown listeners', () => {\n Interact.create(getA11yConfig('activate', 'activate-div'));\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const div = document.createElement('div');\n a11yElement.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(a11yElement, 'activate-div');\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'keydown',\n expect.any(Function),\n expect.any(Object),\n );\n });\n\n it('should not double-invoke handler when Enter triggers both keydown and click', () => {\n const { getWebAnimation } = require('@wix/motion');\n const mockPlay = getWebAnimation().play;\n mockPlay.mockClear();\n\n Interact.create(getA11yConfig('activate', 'activate-handler-test'));\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const button = document.createElement('button');\n a11yElement.append(button);\n\n add(a11yElement, 'activate-handler-test');\n\n // Simulate browser behavior: Enter key triggers keydown AND synthesized click with no pointerType\n button.dispatchEvent(\n new KeyboardEvent('keydown', { code: 'Enter', bubbles: true }),\n );\n button.dispatchEvent(new MouseEvent('click', { bubbles: true }));\n\n expect(mockPlay).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('interest trigger', () => {\n it('should add focusin listener alongside mouseenter', () => {\n Interact.create(getA11yConfig('interest', 'interest-test'));\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const div = document.createElement('div');\n a11yElement.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(a11yElement, 'interest-test');\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'mouseenter',\n expect.any(Function),\n expect.any(Object),\n );\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'focusin',\n expect.any(Function),\n expect.any(Object),\n );\n });\n });\n\n describe('click trigger with allowA11yTriggers flag', () => {\n it('should NOT add keydown listener when flag is false', () => {\n Interact.create(getA11yConfig('click', 'click-no-flag'));\n Interact.setup({ allowA11yTriggers: false });\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const div = document.createElement('div');\n a11yElement.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(a11yElement, 'click-no-flag');\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n expect(addEventListenerSpy).not.toHaveBeenCalledWith(\n 'keydown',\n expect.any(Function),\n expect.any(Object),\n );\n });\n\n it('should add keydown listener when flag is true', () => {\n Interact.setup({ allowA11yTriggers: true });\n Interact.create(getA11yConfig('click', 'click-with-flag'));\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const div = document.createElement('div');\n a11yElement.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(a11yElement, 'click-with-flag');\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'keydown',\n expect.any(Function),\n expect.any(Object),\n );\n });\n });\n\n describe('hover trigger with allowA11yTriggers flag', () => {\n it('should NOT add focusin listener when flag is false', () => {\n Interact.setup({ allowA11yTriggers: false });\n Interact.create(getA11yConfig('hover', 'hover-no-flag'));\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const div = document.createElement('div');\n a11yElement.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(a11yElement, 'hover-no-flag');\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'mouseenter',\n expect.any(Function),\n expect.any(Object),\n );\n expect(addEventListenerSpy).not.toHaveBeenCalledWith(\n 'focusin',\n expect.any(Function),\n expect.any(Object),\n );\n });\n\n it('should add focusin listener when flag is true', () => {\n Interact.setup({ allowA11yTriggers: true });\n Interact.create(getA11yConfig('hover', 'hover-with-flag'));\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const div = document.createElement('div');\n a11yElement.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(a11yElement, 'hover-with-flag');\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'mouseenter',\n expect.any(Function),\n expect.any(Object),\n );\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'focusin',\n expect.any(Function),\n expect.any(Object),\n );\n });\n });\n });\n describe('selector condition type', () => {\n it('should pass selectorCondition to handler when condition type is selector', async () => {\n const config: InteractConfig = {\n conditions: {\n active: {\n type: 'selector',\n predicate: '.active',\n },\n },\n interactions: [\n {\n trigger: 'click',\n key: 'selector-test',\n effects: [\n {\n key: 'selector-test',\n effectId: 'test-effect',\n conditions: ['active'],\n },\n ],\n },\n ],\n effects: {\n 'test-effect': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n };\n\n Interact.create(config);\n\n const testElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n testElement.append(div);\n\n add(testElement, 'selector-test');\n\n // The handler should have received selectorCondition\n // We verify by checking the animation is created (condition doesn't block setup)\n const { getWebAnimation } = await import('@wix/motion');\n expect(getWebAnimation).toHaveBeenCalled();\n });\n\n it('should skip handler execution when element does not match selector condition', async () => {\n const { getWebAnimation } = await import('@wix/motion');\n const mockAnimation = {\n play: jest.fn(),\n cancel: jest.fn(),\n onFinish: jest.fn(),\n reverse: jest.fn(),\n progress: jest.fn(),\n playState: 'idle',\n isCSS: false,\n };\n (getWebAnimation as any).mockReturnValue(mockAnimation);\n\n const config: InteractConfig = {\n conditions: {\n active: {\n type: 'selector',\n predicate: '.active',\n },\n },\n interactions: [\n {\n trigger: 'click',\n key: 'selector-skip-test',\n effects: [\n {\n key: 'selector-skip-test',\n effectId: 'skip-effect',\n conditions: ['active'],\n },\n ],\n },\n ],\n effects: {\n 'skip-effect': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n };\n\n Interact.create(config);\n\n const testElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n // div does NOT have .active class\n testElement.append(div);\n\n add(testElement, 'selector-skip-test');\n\n // Simulate click - animation should NOT play because element doesn't match .active\n // Must use PointerEvent with pointerType because click handler filters by pointerType\n div.dispatchEvent(\n new PointerEvent('click', { bubbles: true, pointerType: 'mouse' }),\n );\n\n expect(mockAnimation.play).not.toHaveBeenCalled();\n });\n\n it('should execute handler when element matches selector condition', async () => {\n const { getWebAnimation } = await import('@wix/motion');\n const mockAnimation = {\n play: jest.fn(),\n cancel: jest.fn(),\n onFinish: jest.fn(),\n reverse: jest.fn(),\n progress: jest.fn(),\n playState: 'idle',\n isCSS: false,\n };\n (getWebAnimation as any).mockReturnValue(mockAnimation);\n\n const config: InteractConfig = {\n conditions: {\n active: {\n type: 'selector',\n predicate: '.active',\n },\n },\n interactions: [\n {\n trigger: 'click',\n key: 'selector-match-test',\n effects: [\n {\n key: 'selector-match-test',\n effectId: 'match-effect',\n conditions: ['active'],\n },\n ],\n },\n ],\n effects: {\n 'match-effect': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n };\n\n Interact.create(config);\n\n const testElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n div.classList.add('active'); // div HAS .active class\n testElement.append(div);\n\n add(testElement, 'selector-match-test');\n\n // Simulate click - animation SHOULD play because element matches .active\n // Must use PointerEvent with pointerType because click handler filters by pointerType\n div.dispatchEvent(\n new PointerEvent('click', { bubbles: true, pointerType: 'mouse' }),\n );\n\n expect(mockAnimation.play).toHaveBeenCalled();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Interact","add","addListItems","remove","effectToAnimationOptions","TRIGGER_TO_HANDLER_MODULE_MAP","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","getMockConfig","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","PointerEvent","MouseEvent","_defineProperty","pointerType","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","forceReducedMotion","allowA11yTriggers","it","create","expect","customElements","get","toBeDefined","instance","dataset","interactKey","keys","dataCache","length","toBe","elements","size","instances","elementCache","toBeGreaterThan","element1","div1","element2","div2","disconnectSpy1","spyOn","disconnectSpy2","toHaveBeenCalled","getInstance","toBeUndefined","newElement","newDiv","newAddEventListenerSpy","require","toHaveBeenCalledWith","any","undefined","addEventListenerSpy","toHaveBeenCalledTimes","Function","objectContaining","passive","HTMLElement","id","elementClick","divClick","calls","toMatchObject","mockReturnValueOnce","not","pointerInstance","scrollInstance","setTimeout","ul","li","li2","cloneNode","addEventListenerSpy2","li3","addEventListenerSpy3","targetElement","divTarget","removeEventListenerSpy","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","keyWithoutInstance","has","setup","scrollOptionsGetter","pointerOptionsGetter","viewProgress","pointerMove","a11yElement","getA11yConfig","mockPlay","mockClear","button","KeyboardEvent","code","bubbles","active","testElement","mockAnimation","reverse","progress","playState","isCSS","classList"],"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 IInteractElement,\n TriggerType,\n} from '../types';\nimport type { NamedEffect } from '@wix/motion';\nimport { effectToAnimationOptions } from '../handlers/utilities';\nimport TRIGGER_TO_HANDLER_MODULE_MAP from '../handlers';\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: IInteractElement;\n let mockConfig: InteractConfig;\n const getMockConfig: () => 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('interact-element') as IInteractElement;\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 PointerEvent (not available in JSDOM)\n (window as any).PointerEvent = class PointerEvent extends MouseEvent {\n pointerType: string;\n constructor(type: string, params: PointerEventInit = {}) {\n super(type, params);\n this.pointerType = params.pointerType || '';\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 // Clear Interact instances to ensure test isolation\n Interact.destroy();\n // Reset static flags to default\n Interact.forceReducedMotion = false;\n Interact.allowA11yTriggers = false;\n });\n\n describe('init Interact instance', () => {\n it('should initialize with valid config', () => {\n Interact.create({} as InteractConfig);\n expect(customElements.get('interact-element')).toBeDefined();\n });\n });\n\n describe('destroy Interact instance', () => {\n it('should clear an instance entire cache', () => {\n const instance = Interact.create(getMockConfig());\n\n element = document.createElement('interact-element') as IInteractElement;\n element.dataset.interactKey = 'logo-entrance';\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-entrance');\n\n expect(Object.keys(instance.dataCache.interactions).length).toBe(11);\n expect(instance.elements.size).toBe(1);\n expect(Interact.instances.length).toBe(1);\n\n instance.destroy();\n\n expect(Object.keys(instance.dataCache.interactions).length).toBe(0);\n expect(instance.elements.size).toBe(0);\n expect(Interact.instances.length).toBe(0);\n expect(Interact.elementCache.size).toBe(0);\n });\n });\n\n describe('destroy Interact', () => {\n it('should clear all instances', () => {\n Interact.create(getMockConfig());\n Interact.create(getMockConfig());\n\n expect(Interact.instances.length).toBe(2);\n\n Interact.destroy();\n\n expect(Interact.instances.length).toBe(0);\n });\n\n it('should clear all elements from cache', () => {\n Interact.create(getMockConfig());\n\n element = document.createElement('interact-element') as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-hover');\n\n expect(Interact.elementCache.size).toBeGreaterThan(0);\n\n Interact.destroy();\n\n expect(Interact.elementCache.size).toBe(0);\n });\n\n it('should call disconnect on all cached elements', () => {\n Interact.create(getMockConfig());\n\n const element1 = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div1 = document.createElement('div');\n element1.append(div1);\n\n const element2 = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div2 = document.createElement('div');\n element2.append(div2);\n\n add(element1, 'logo-hover');\n add(element2, 'logo-click');\n\n const disconnectSpy1 = jest.spyOn(element1, 'disconnect');\n const disconnectSpy2 = jest.spyOn(element2, 'disconnect');\n\n Interact.destroy();\n\n expect(disconnectSpy1).toHaveBeenCalled();\n expect(disconnectSpy2).toHaveBeenCalled();\n });\n\n it('should clean up interactions after destroy', () => {\n Interact.create(getMockConfig());\n\n element = document.createElement('interact-element') as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-click');\n\n Interact.destroy();\n\n // After destroy, getInstance should return undefined\n expect(Interact.getInstance('logo-click')).toBeUndefined();\n\n // Re-create instance and verify it works independently\n Interact.create(getMockConfig());\n const newElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const newDiv = document.createElement('div');\n newElement.append(newDiv);\n\n const newAddEventListenerSpy = jest.spyOn(newDiv, 'addEventListener');\n add(newElement, 'logo-click');\n\n expect(newAddEventListenerSpy).toHaveBeenCalled();\n expect(Interact.getInstance('logo-click')).toBeDefined();\n });\n\n // TODO: fix this test - when adding this test it causes 2 other tests to fail\n // it('should remove event listeners and styles when disconnect is called', () => {\n // Interact.create(mockConfig);\n\n // element = document.createElement(\n // 'interact-element',\n // ) as IInteractElement;\n // element.dataset.interactKey = 'logo-click';\n // const div = document.createElement('div');\n // element.append(div);\n\n // add(element, 'logo-click');\n\n // const removeEventListenerSpy = jest.spyOn(div, 'removeEventListener');\n\n // Interact.destroy();\n\n // expect(removeEventListenerSpy).toHaveBeenCalled();\n // expect(removeEventListenerSpy).toHaveBeenCalledWith(\n // 'click',\n // expect.any(Function),\n // );\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('interact-element') as IInteractElement;\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 Interact.destroy();\n });\n });\n\n describe('add interaction', () => {\n beforeEach(() => {\n mockConfig = getMockConfig();\n Interact.create(mockConfig);\n });\n afterEach(() => {\n Interact.destroy();\n jest.clearAllMocks();\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 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n expect(getWebAnimation).toHaveBeenCalledTimes(0);\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 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n div.id = 'logo-entrance';\n element.dataset.interactKey = 'logo-entrance';\n element.append(div);\n\n const elementClick = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const divClick = document.createElement('div');\n divClick.id = 'logo-click';\n elementClick.dataset.interactKey = '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(divClick);\n expect(getWebAnimation.mock.calls[2][0]).toBe(div);\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 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\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('null animation handling', () => {\n it('should not add click handler when getAnimation returns null', () => {\n Interact.destroy();\n const { getWebAnimation } = require('@wix/motion');\n\n Interact.create({\n interactions: [\n {\n trigger: 'click',\n key: 'null-click-test',\n effects: [{ effectId: 'null-test-effect' }],\n },\n ],\n effects: {\n 'null-test-effect': {\n namedEffect: { type: 'FadeIn' } as NamedEffect,\n duration: 500,\n },\n },\n });\n\n getWebAnimation.mockReturnValueOnce(null);\n\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(element, 'null-click-test');\n\n expect(addEventListenerSpy).not.toHaveBeenCalled();\n });\n\n it('should not add hover handler when getAnimation returns null', () => {\n Interact.destroy();\n const { getWebAnimation } = require('@wix/motion');\n\n Interact.create({\n interactions: [\n {\n trigger: 'hover',\n key: 'null-hover-test',\n effects: [{ effectId: 'null-test-effect' }],\n },\n ],\n effects: {\n 'null-test-effect': {\n namedEffect: { type: 'FadeIn' } as NamedEffect,\n duration: 500,\n },\n },\n });\n\n getWebAnimation.mockReturnValueOnce(null);\n\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(element, 'null-hover-test');\n\n expect(addEventListenerSpy).not.toHaveBeenCalled();\n });\n\n it('should not add animationEnd handler when getAnimation returns null', () => {\n Interact.destroy();\n const { getWebAnimation } = require('@wix/motion');\n\n Interact.create({\n interactions: [\n {\n trigger: 'animationEnd',\n key: 'null-animationend-test',\n params: { effectId: 'trigger-effect' },\n effects: [{ effectId: 'null-test-effect' }],\n },\n ],\n effects: {\n 'null-test-effect': {\n namedEffect: { type: 'FadeIn' } as NamedEffect,\n duration: 500,\n },\n },\n });\n\n getWebAnimation.mockReturnValueOnce(null);\n\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(element, 'null-animationend-test');\n\n expect(addEventListenerSpy).not.toHaveBeenCalled();\n });\n\n it('should not add viewProgress handler when getWebAnimation returns null (ViewTimeline)', () => {\n Interact.destroy();\n const { getWebAnimation } = require('@wix/motion');\n\n Interact.create({\n interactions: [\n {\n trigger: 'viewProgress',\n key: 'null-viewprogress-test',\n effects: [{ effectId: 'null-scroll-effect' }],\n },\n ],\n effects: {\n 'null-scroll-effect': {\n namedEffect: {\n type: 'FadeScroll',\n range: 'in',\n opacity: 0,\n } as NamedEffect,\n },\n },\n });\n\n getWebAnimation.mockReturnValueOnce(null);\n\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'null-viewprogress-test');\n\n // getWebAnimation should have been called\n expect(getWebAnimation).toHaveBeenCalled();\n });\n\n it('should not add viewProgress handler when getScrubScene returns null (polyfill)', () => {\n // Remove ViewTimeline support to use polyfill path\n delete (window as any).ViewTimeline;\n\n Interact.destroy();\n const { getScrubScene } = require('@wix/motion');\n\n Interact.create({\n interactions: [\n {\n trigger: 'viewProgress',\n key: 'null-viewprogress-polyfill-test',\n effects: [{ effectId: 'null-scroll-effect' }],\n },\n ],\n effects: {\n 'null-scroll-effect': {\n namedEffect: {\n type: 'FadeScroll',\n range: 'in',\n opacity: 0,\n } as NamedEffect,\n },\n },\n });\n\n getScrubScene.mockReturnValueOnce(null);\n\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'null-viewprogress-polyfill-test');\n\n // getScrubScene should have been called\n expect(getScrubScene).toHaveBeenCalled();\n\n // Restore ViewTimeline\n (window as any).ViewTimeline = class ViewTimeline {\n constructor(options: any) {\n return { ...options };\n }\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 'interact-element',\n ) as IInteractElement;\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 getMockConfig().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 'interact-element',\n ) as IInteractElement;\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 getMockConfig().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 'interact-element',\n ) as IInteractElement;\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 getMockConfig().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 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\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 getMockConfig().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 getMockConfig().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 getMockConfig().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(getMockConfig());\n });\n afterEach(() => {\n Interact.destroy();\n });\n\n it('should remove event listeners', () => {\n element = document.createElement('interact-element') as IInteractElement;\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('interact-element') as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const target1Element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const target1Div = document.createElement('div');\n target1Element.append(target1Div);\n\n const target2Element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\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: IInteractElement;\n let targetElement: IInteractElement;\n\n beforeEach(() => {\n // Create source element with multiple child elements\n sourceElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\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 'interact-element',\n ) as IInteractElement;\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 'Interact: 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 'Interact: 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 describe('element caching', () => {\n it('should cache element in elementCache even when no instance was found for it', () => {\n const keyWithoutInstance = 'key-without-instance';\n add(element, keyWithoutInstance);\n\n expect(Interact.elementCache.has(keyWithoutInstance)).toBe(true);\n expect(Interact.elementCache.get(keyWithoutInstance)).toBe(element);\n });\n });\n\n describe('setup', () => {\n afterEach(() => {\n Interact.setup({\n scrollOptionsGetter: () => ({}),\n pointerOptionsGetter: () => ({}),\n });\n });\n\n it('should register scroll options getter', () => {\n const scrollOptionsGetter = jest.fn().mockReturnValue({});\n const spy = jest.spyOn(\n TRIGGER_TO_HANDLER_MODULE_MAP.viewProgress,\n 'registerOptionsGetter',\n );\n\n Interact.setup({ scrollOptionsGetter });\n\n expect(spy).toHaveBeenCalledWith(scrollOptionsGetter);\n });\n\n it('should register pointer options getter', () => {\n const pointerOptionsGetter = jest.fn().mockReturnValue({});\n const spy = jest.spyOn(\n TRIGGER_TO_HANDLER_MODULE_MAP.pointerMove,\n 'registerOptionsGetter',\n );\n\n Interact.setup({ pointerOptionsGetter });\n\n expect(spy).toHaveBeenCalledWith(pointerOptionsGetter);\n });\n });\n\n describe('a11y - accessible triggers', () => {\n let a11yElement: IInteractElement;\n\n function getA11yConfig(trigger: TriggerType, key: string): InteractConfig {\n return {\n interactions: [\n {\n trigger,\n key,\n effects: [{ effectId: 'test-effect' }],\n },\n ],\n effects: {\n 'test-effect': {\n namedEffect: { type: 'BounceIn', power: 'medium' } as NamedEffect,\n duration: 500,\n },\n },\n };\n }\n\n afterEach(() => {\n Interact.destroy();\n });\n\n describe('activate trigger', () => {\n it('should add both click and keydown listeners', () => {\n Interact.create(getA11yConfig('activate', 'activate-div'));\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const div = document.createElement('div');\n a11yElement.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(a11yElement, 'activate-div');\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'keydown',\n expect.any(Function),\n expect.any(Object),\n );\n });\n\n it('should not double-invoke handler when Enter triggers both keydown and click', () => {\n const { getWebAnimation } = require('@wix/motion');\n const mockPlay = getWebAnimation().play;\n mockPlay.mockClear();\n\n Interact.create(getA11yConfig('activate', 'activate-handler-test'));\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const button = document.createElement('button');\n a11yElement.append(button);\n\n add(a11yElement, 'activate-handler-test');\n\n // Simulate browser behavior: Enter key triggers keydown AND synthesized click with no pointerType\n button.dispatchEvent(\n new KeyboardEvent('keydown', { code: 'Enter', bubbles: true }),\n );\n button.dispatchEvent(new MouseEvent('click', { bubbles: true }));\n\n expect(mockPlay).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('interest trigger', () => {\n it('should add focusin listener alongside mouseenter', () => {\n Interact.create(getA11yConfig('interest', 'interest-test'));\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const div = document.createElement('div');\n a11yElement.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(a11yElement, 'interest-test');\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'mouseenter',\n expect.any(Function),\n expect.any(Object),\n );\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'focusin',\n expect.any(Function),\n expect.any(Object),\n );\n });\n });\n\n describe('click trigger with allowA11yTriggers flag', () => {\n it('should NOT add keydown listener when flag is false', () => {\n Interact.create(getA11yConfig('click', 'click-no-flag'));\n Interact.setup({ allowA11yTriggers: false });\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const div = document.createElement('div');\n a11yElement.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(a11yElement, 'click-no-flag');\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n expect(addEventListenerSpy).not.toHaveBeenCalledWith(\n 'keydown',\n expect.any(Function),\n expect.any(Object),\n );\n });\n\n it('should add keydown listener when flag is true', () => {\n Interact.setup({ allowA11yTriggers: true });\n Interact.create(getA11yConfig('click', 'click-with-flag'));\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const div = document.createElement('div');\n a11yElement.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(a11yElement, 'click-with-flag');\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'keydown',\n expect.any(Function),\n expect.any(Object),\n );\n });\n });\n\n describe('hover trigger with allowA11yTriggers flag', () => {\n it('should NOT add focusin listener when flag is false', () => {\n Interact.setup({ allowA11yTriggers: false });\n Interact.create(getA11yConfig('hover', 'hover-no-flag'));\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const div = document.createElement('div');\n a11yElement.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(a11yElement, 'hover-no-flag');\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'mouseenter',\n expect.any(Function),\n expect.any(Object),\n );\n expect(addEventListenerSpy).not.toHaveBeenCalledWith(\n 'focusin',\n expect.any(Function),\n expect.any(Object),\n );\n });\n\n it('should add focusin listener when flag is true', () => {\n Interact.setup({ allowA11yTriggers: true });\n Interact.create(getA11yConfig('hover', 'hover-with-flag'));\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const div = document.createElement('div');\n a11yElement.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(a11yElement, 'hover-with-flag');\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'mouseenter',\n expect.any(Function),\n expect.any(Object),\n );\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'focusin',\n expect.any(Function),\n expect.any(Object),\n );\n });\n });\n });\n describe('selector condition type', () => {\n it('should pass selectorCondition to handler when condition type is selector', async () => {\n const config: InteractConfig = {\n conditions: {\n active: {\n type: 'selector',\n predicate: '.active',\n },\n },\n interactions: [\n {\n trigger: 'click',\n key: 'selector-test',\n effects: [\n {\n key: 'selector-test',\n effectId: 'test-effect',\n conditions: ['active'],\n },\n ],\n },\n ],\n effects: {\n 'test-effect': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n };\n\n Interact.create(config);\n\n const testElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n testElement.append(div);\n\n add(testElement, 'selector-test');\n\n // The handler should have received selectorCondition\n // We verify by checking the animation is created (condition doesn't block setup)\n const { getWebAnimation } = await import('@wix/motion');\n expect(getWebAnimation).toHaveBeenCalled();\n });\n\n it('should skip handler execution when element does not match selector condition', async () => {\n const { getWebAnimation } = await import('@wix/motion');\n const mockAnimation = {\n play: jest.fn(),\n cancel: jest.fn(),\n onFinish: jest.fn(),\n reverse: jest.fn(),\n progress: jest.fn(),\n playState: 'idle',\n isCSS: false,\n };\n (getWebAnimation as any).mockReturnValue(mockAnimation);\n\n const config: InteractConfig = {\n conditions: {\n active: {\n type: 'selector',\n predicate: '.active',\n },\n },\n interactions: [\n {\n trigger: 'click',\n key: 'selector-skip-test',\n effects: [\n {\n key: 'selector-skip-test',\n effectId: 'skip-effect',\n conditions: ['active'],\n },\n ],\n },\n ],\n effects: {\n 'skip-effect': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n };\n\n Interact.create(config);\n\n const testElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n // div does NOT have .active class\n testElement.append(div);\n\n add(testElement, 'selector-skip-test');\n\n // Simulate click - animation should NOT play because element doesn't match .active\n // Must use PointerEvent with pointerType because click handler filters by pointerType\n div.dispatchEvent(\n new PointerEvent('click', { bubbles: true, pointerType: 'mouse' }),\n );\n\n expect(mockAnimation.play).not.toHaveBeenCalled();\n });\n\n it('should execute handler when element matches selector condition', async () => {\n const { getWebAnimation } = await import('@wix/motion');\n const mockAnimation = {\n play: jest.fn(),\n cancel: jest.fn(),\n onFinish: jest.fn(),\n reverse: jest.fn(),\n progress: jest.fn(),\n playState: 'idle',\n isCSS: false,\n };\n (getWebAnimation as any).mockReturnValue(mockAnimation);\n\n const config: InteractConfig = {\n conditions: {\n active: {\n type: 'selector',\n predicate: '.active',\n },\n },\n interactions: [\n {\n trigger: 'click',\n key: 'selector-match-test',\n effects: [\n {\n key: 'selector-match-test',\n effectId: 'match-effect',\n conditions: ['active'],\n },\n ],\n },\n ],\n effects: {\n 'match-effect': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n };\n\n Interact.create(config);\n\n const testElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n div.classList.add('active'); // div HAS .active class\n testElement.append(div);\n\n add(testElement, 'selector-match-test');\n\n // Simulate click - animation SHOULD play because element matches .active\n // Must use PointerEvent with pointerType because click handler filters by pointerType\n div.dispatchEvent(\n new PointerEvent('click', { bubbles: true, pointerType: 'mouse' }),\n );\n\n expect(mockAnimation.play).toHaveBeenCalled();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}