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