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