@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","require","_add","_remove","_utilities","jest","mock","getWebAnimation","fn","mockReturnValue","play","cancel","onFinish","getScrubScene","getEasing","mockImplementation","v","getAnimation","target","options","trigger","reducedMotion","Pointer","start","destroy","Scroll","end","describe","element","mockConfig","interactions","key","params","threshold","effects","effectId","hitArea","type","method","namedEffect","direction","power","listContainer","duration","distance","value","axis","transitionDuration","transitionEasing","centeredToTarget","distanceFactor","range","opacity","rangeStart","name","offset","rangeEnd","transition","styleProperties","beforeEach","document","createElement","div","append","window","KeyframeEffect","constructor","keyframes","ViewTimeline","Animation","effect","timeline","IntersectionObserver","callback","observe","unobserve","CSSStyleSheet","_","replace","insertRule","adoptedStyleSheets","mockMatchMedia","matchingQueries","queryRule","join","mockMQL","query","matches","media","onchange","addEventListener","removeEventListener","dispatchEvent","Object","defineProperty","writable","createCascadingTestConfig","conditions","matchingConditions","desktop","predicate","mobile","tablet","afterEach","clearAllMocks","Interact","forceReducedMotion","it","create","expect","customElements","get","toBeDefined","instances","length","toBe","add","elementCache","size","toBeGreaterThan","element1","div1","element2","div2","disconnectSpy1","spyOn","disconnectSpy2","toHaveBeenCalled","getInstance","toBeUndefined","newElement","newDiv","newAddEventListenerSpy","toHaveBeenCalledWith","any","undefined","remove","addEventListenerSpy","toHaveBeenCalledTimes","Function","objectContaining","passive","HTMLElement","dataset","wixPath","elementClick","divClick","calls","toMatchObject","pointerInstance","effectToAnimationOptions","scrollInstance","setTimeout","ul","id","li","li2","cloneNode","addEventListenerSpy2","li3","addEventListenerSpy3","addListItems","targetElement","divTarget","removeEventListenerSpy","not","toThrow","config","sourceElement","sourceDiv","targetDiv","firstElementChild","complexConfig","target1Element","target1Div","target2Element","target2Div","multiConditionConfig","configWithMissingCondition","configWithEmptyConditions","innerHTML","keyframeEffect","selector","triggerButton","querySelector","firstChild","triggerSpy","firstChildSpy","animationTarget","transform","listItems","Array","from","querySelectorAll","spies","map","item","forEach","spy","_sourceElement$queryS","containerChildren","children","child","consoleSpy","console","mockRestore","color","deepTarget","buttonWithData","setAttribute","backgroundColor","targetFirstChild"],"sources":["../../../src/__tests__/interact.spec.ts"],"sourcesContent":["import { Interact } from '../core/Interact';\nimport { add, addListItems } from '../core/add';\nimport { remove } from '../core/remove';\nimport type {\n InteractConfig,\n ScrubEffect,\n IWixInteractElement,\n} from '../types';\nimport type { NamedEffect } from '@wix/motion';\nimport { effectToAnimationOptions } from '../handlers/utilities';\n\n// Mock @wix/motion module\njest.mock('@wix/motion', () => {\n const mock: any = {\n getWebAnimation: jest.fn().mockReturnValue({\n play: jest.fn(),\n cancel: jest.fn(),\n onFinish: jest.fn(),\n }),\n getScrubScene: jest.fn().mockReturnValue({}),\n getEasing: jest.fn().mockImplementation((v) => v),\n getAnimation: jest\n .fn()\n .mockImplementation((target, options, trigger, reducedMotion) => {\n return mock.getWebAnimation(target, options, trigger, {\n reducedMotion,\n });\n }),\n };\n\n return mock;\n});\n\n// Mock kuliso module\njest.mock('kuliso', () => ({\n Pointer: jest.fn().mockImplementation(() => ({\n start: jest.fn(),\n destroy: jest.fn(),\n })),\n}));\n\n// Mock fizban module\njest.mock('fizban', () => ({\n Scroll: jest.fn().mockImplementation(() => ({\n start: jest.fn(),\n end: jest.fn(),\n })),\n}));\n\ndescribe('interact', () => {\n let element: IWixInteractElement;\n const mockConfig: InteractConfig = {\n interactions: [\n {\n trigger: 'viewEnter',\n key: 'logo-entrance',\n params: {\n threshold: 0.2,\n },\n effects: [\n {\n key: 'logo-entrance',\n effectId: 'logo-arc-in',\n },\n {\n key: 'logo-click',\n effectId: 'logo-bounce',\n },\n ],\n },\n {\n trigger: 'pageVisible',\n key: 'logo-loop',\n effects: [\n {\n key: 'logo-loop',\n effectId: 'logo-poke',\n },\n ],\n },\n {\n trigger: 'animationEnd',\n key: 'logo-animation-end',\n params: {\n effectId: 'logo-arc-in',\n },\n effects: [\n {\n key: 'logo-animation-end',\n effectId: 'logo-poke',\n },\n ],\n },\n {\n trigger: 'pointerMove',\n key: 'logo-mouse',\n params: {\n hitArea: 'root',\n },\n effects: [\n {\n key: 'logo-mouse',\n effectId: 'logo-track-mouse',\n },\n ],\n },\n {\n trigger: 'click',\n key: 'logo-click',\n params: {\n type: 'alternate',\n },\n effects: [\n {\n key: 'logo-click',\n effectId: 'logo-bounce',\n },\n ],\n },\n {\n trigger: 'click',\n key: 'logo-click',\n params: {\n method: 'toggle',\n },\n effects: [\n {\n key: 'logo-click',\n effectId: 'logo-transition-hover',\n },\n ],\n },\n {\n trigger: 'hover',\n key: 'logo-hover',\n params: {\n type: 'alternate',\n },\n effects: [\n {\n key: 'logo-hover',\n effectId: 'logo-arc-in',\n },\n {\n key: 'logo-hover',\n effectId: 'logo-arc-in',\n namedEffect: {\n type: 'ArcIn',\n direction: 'left',\n power: 'hard',\n } as NamedEffect,\n },\n ],\n },\n {\n trigger: 'hover',\n key: 'logo-hover',\n params: {\n method: 'toggle',\n },\n effects: [\n {\n key: 'logo-hover',\n effectId: 'logo-transition-hover',\n },\n ],\n },\n {\n trigger: 'viewProgress',\n key: 'logo-scroll',\n effects: [\n {\n key: 'logo-scroll',\n effectId: 'logo-fade-scroll',\n },\n ],\n },\n {\n trigger: 'click',\n key: 'logo-click-container',\n listContainer: '#logo-list',\n effects: [\n {\n effectId: 'logo-bounce',\n },\n ],\n },\n {\n trigger: 'viewEnter',\n key: 'logo-view-container',\n effects: [\n {\n listContainer: '#logo-list',\n effectId: 'logo-bounce',\n },\n ],\n },\n {\n trigger: 'viewProgress',\n key: 'logo-scroll-container',\n listContainer: '#logo-scroll-list',\n effects: [\n {\n listContainer: '#logo-scroll-list',\n effectId: 'logo-fade-scroll',\n },\n ],\n },\n {\n trigger: 'viewProgress',\n key: 'logo-scroll-container',\n effects: [\n {\n key: 'logo-scroll-items',\n listContainer: '#logo-scroll-list',\n effectId: 'logo-fade-scroll',\n },\n ],\n },\n ],\n effects: {\n 'logo-arc-in': {\n namedEffect: {\n type: 'ArcIn',\n direction: 'right',\n power: 'medium',\n } as NamedEffect,\n duration: 1200,\n },\n 'logo-arc-in-with-target': {\n key: 'logo-hover',\n namedEffect: {\n type: 'ArcIn',\n direction: 'right',\n power: 'medium',\n } as NamedEffect,\n duration: 1200,\n },\n 'logo-track-mouse': {\n namedEffect: {\n type: 'TrackMouse',\n distance: { value: 20, type: 'px' },\n axis: 'both',\n power: 'medium',\n } as NamedEffect,\n transitionDuration: 300,\n transitionEasing: 'easeOut',\n centeredToTarget: true,\n },\n 'logo-bounce': {\n namedEffect: {\n type: 'BounceIn',\n power: 'hard',\n direction: 'center',\n distanceFactor: 1.2,\n } as NamedEffect,\n duration: 500,\n },\n 'logo-fade-scroll': {\n namedEffect: {\n type: 'FadeScroll',\n range: 'in',\n opacity: 0,\n } as NamedEffect,\n rangeStart: {\n name: 'contain',\n offset: { value: -10, type: 'percentage' },\n },\n rangeEnd: {\n name: 'contain',\n offset: { value: 110, type: 'percentage' },\n },\n },\n 'logo-transition-hover': {\n transition: {\n duration: 300,\n styleProperties: [{ name: 'opacity', value: '0' }],\n },\n },\n 'logo-poke': {\n namedEffect: {\n type: 'Poke',\n direction: 'left',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n };\n\n beforeEach(() => {\n element = document.createElement(\n 'wix-interact-element',\n ) as IWixInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n // Mock Web Animations API\n (window as any).KeyframeEffect = class KeyframeEffect {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n constructor(element: Element | null, keyframes: any[], options: any) {\n return { element, keyframes, options };\n }\n };\n\n // Mock ViewTimeline\n (window as any).ViewTimeline = class ViewTimeline {\n constructor(options: any) {\n return { ...options };\n }\n };\n\n // Mock Animation\n (window as any).Animation = class Animation {\n constructor(effect: any, timeline: any) {\n return { effect, timeline, play: jest.fn() };\n }\n };\n\n // Mock IntersectionObserver\n (window as any).IntersectionObserver = class IntersectionObserver {\n constructor(callback: any, options: any) {\n return { callback, options, observe: jest.fn(), unobserve: jest.fn() };\n }\n };\n\n // Mock CSSStyleSheet\n (window as any).CSSStyleSheet = class CSSStyleSheet {\n constructor(_: string) {\n return { replace: jest.fn(), insertRule: jest.fn() };\n }\n };\n\n // Mock adoptedStyleSheets\n if (!document.adoptedStyleSheets) {\n document.adoptedStyleSheets = [];\n }\n\n // Mock matchMedia for condition testing\n mockMatchMedia();\n });\n\n function mockMatchMedia(matchingQueries: string[] = []) {\n const queryRule = `(${matchingQueries.join(') and (')})`;\n const mockMQL = (query: string) => {\n return {\n matches: queryRule === query,\n media: query,\n onchange: null,\n addEventListener: jest.fn(),\n removeEventListener: jest.fn(),\n dispatchEvent: jest.fn(),\n };\n };\n\n Object.defineProperty(window, 'matchMedia', {\n writable: true,\n value: jest.fn().mockImplementation(mockMQL),\n });\n }\n\n function createCascadingTestConfig(\n conditions: Record<string, any> = {},\n matchingConditions: string[] = [],\n ): InteractConfig {\n mockMatchMedia(matchingConditions);\n\n return {\n conditions: {\n desktop: {\n type: 'media',\n predicate: 'min-width: 1024px',\n },\n mobile: {\n type: 'media',\n predicate: 'max-width: 767px',\n },\n tablet: {\n type: 'media',\n predicate: '(min-width: 768px) and (max-width: 1023px)',\n },\n ...conditions,\n },\n interactions: [\n {\n trigger: 'click',\n key: 'cascade-source',\n effects: [\n {\n key: 'cascade-target',\n effectId: 'default-effect',\n },\n {\n key: 'cascade-target',\n effectId: 'default-effect',\n conditions: ['desktop'],\n namedEffect: {\n type: 'SlideIn',\n direction: 'right',\n power: 'medium',\n } as NamedEffect,\n duration: 800,\n },\n {\n key: 'cascade-target',\n effectId: 'default-effect',\n conditions: ['mobile'],\n namedEffect: {\n type: 'BounceIn',\n direction: 'center',\n power: 'hard',\n } as NamedEffect,\n duration: 600,\n },\n ],\n },\n ],\n effects: {\n 'default-effect': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n };\n }\n\n afterEach(() => {\n jest.clearAllMocks();\n // 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","require","_add","_remove","_utilities","jest","mock","getWebAnimation","fn","mockReturnValue","play","cancel","onFinish","getScrubScene","getEasing","mockImplementation","v","getAnimation","target","options","trigger","reducedMotion","Pointer","start","destroy","Scroll","end","describe","element","mockConfig","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","Interact","forceReducedMotion","it","create","expect","customElements","get","toBeDefined","instance","dataset","wixPath","add","keys","dataCache","length","toBe","elements","size","instances","elementCache","toBeGreaterThan","element1","div1","element2","div2","disconnectSpy1","spyOn","disconnectSpy2","toHaveBeenCalled","getInstance","toBeUndefined","newElement","newDiv","newAddEventListenerSpy","toHaveBeenCalledWith","any","undefined","addEventListenerSpy","toHaveBeenCalledTimes","Function","objectContaining","passive","HTMLElement","id","elementClick","divClick","calls","toMatchObject","pointerInstance","effectToAnimationOptions","scrollInstance","setTimeout","ul","li","li2","cloneNode","addEventListenerSpy2","li3","addEventListenerSpy3","addListItems","targetElement","divTarget","removeEventListenerSpy","remove","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":[]}