@wix/interact 1.85.0 → 1.86.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/README.md +7 -7
- package/dist/cjs/{WixInteractElement.js → InteractElement.js} +14 -14
- package/dist/cjs/InteractElement.js.map +1 -0
- package/dist/cjs/__tests__/interact.spec.js +55 -55
- package/dist/cjs/__tests__/interact.spec.js.map +1 -1
- package/dist/cjs/core/Interact.js +7 -7
- package/dist/cjs/core/Interact.js.map +1 -1
- package/dist/cjs/core/add.js +3 -3
- package/dist/cjs/core/add.js.map +1 -1
- package/dist/cjs/handlers/click.js +3 -3
- package/dist/cjs/handlers/click.js.map +1 -1
- package/dist/cjs/handlers/hover.js +4 -4
- package/dist/cjs/handlers/hover.js.map +1 -1
- package/dist/cjs/handlers/utilities.js +0 -2
- package/dist/cjs/handlers/utilities.js.map +1 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/utils.js +2 -2
- package/dist/cjs/utils.js.map +1 -1
- package/dist/esm/{WixInteractElement.js → InteractElement.js} +12 -12
- package/dist/esm/InteractElement.js.map +1 -0
- package/dist/esm/__tests__/interact.spec.js +55 -55
- package/dist/esm/__tests__/interact.spec.js.map +1 -1
- package/dist/esm/core/Interact.js +7 -7
- package/dist/esm/core/Interact.js.map +1 -1
- package/dist/esm/core/add.js +3 -3
- package/dist/esm/core/add.js.map +1 -1
- package/dist/esm/handlers/click.js +3 -3
- package/dist/esm/handlers/click.js.map +1 -1
- package/dist/esm/handlers/hover.js +4 -4
- package/dist/esm/handlers/hover.js.map +1 -1
- package/dist/esm/handlers/utilities.js +0 -2
- package/dist/esm/handlers/utilities.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/utils.js +2 -2
- package/dist/esm/utils.js.map +1 -1
- package/dist/types/{WixInteractElement.d.ts → InteractElement.d.ts} +2 -2
- package/dist/types/core/Interact.d.ts +6 -6
- package/dist/types/core/add.d.ts +3 -3
- package/dist/types/types.d.ts +3 -3
- package/package.json +3 -3
- package/dist/cjs/WixInteractElement.js.map +0 -1
- package/dist/esm/WixInteractElement.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["add","addListItems","remove","removeListItems","INTERACT_EFFECT_DATA_ATTR","getInteractElement","checkedForLegacyStateSyntax","isLegacyStateSyntax","InteractElement","HTMLElement","constructor","_defineProperty","connected","sheet","_observers","WeakMap","attachInternals","_internals","states","delete","e","connectedCallback","connect","disconnectedCallback","disconnect","key","dataset","interactKey","index","document","adoptedStyleSheets","indexOf","splice","console","warn","renderStyle","cssRules","CSSStyleSheet","replace","join","push","position","length","cssRule","insertRule","error","toggleEffect","effectId","method","item","has","clear","_this$dataset$INTERAC","currentEffects","Set","split","Array","from","getActiveEffects","effects","map","effect","raw","trimmed","trim","watchChildList","listContainer","list","querySelector","observer","get","MutationObserver","_childListChangeHandler","bind","set","observe","childList","entries","removedElements","addedElements","forEach","entry","removedNodes","el","addedNodes"],"sources":["../../src/InteractElement.ts"],"sourcesContent":["import type { StateParams } from './types';\nimport { add, addListItems } from './core/add';\nimport { remove, removeListItems } from './core/remove';\n\nexport const INTERACT_EFFECT_DATA_ATTR = 'interactEffect';\n\nexport function getInteractElement() {\n let checkedForLegacyStateSyntax = false;\n let isLegacyStateSyntax = false;\n\n return class InteractElement extends HTMLElement {\n _internals: (ElementInternals & { states: Set<string> }) | null;\n connected: boolean;\n sheet: CSSStyleSheet | null;\n _observers: WeakMap<HTMLElement, MutationObserver>;\n\n constructor() {\n super();\n\n this.connected = false;\n this.sheet = null;\n this._observers = new WeakMap();\n\n if (this.attachInternals) {\n this._internals = this.attachInternals() as ElementInternals & {\n states: Set<string>;\n };\n\n if (!checkedForLegacyStateSyntax) {\n checkedForLegacyStateSyntax = true;\n\n try {\n this._internals.states.add('test');\n this._internals.states.delete('test');\n } catch (e) {\n isLegacyStateSyntax = true;\n }\n }\n } else {\n checkedForLegacyStateSyntax = true; // custom states not supported - skip syntax check\n this._internals = null;\n }\n }\n connectedCallback() {\n this.connect();\n }\n\n disconnectedCallback() {\n this.disconnect();\n }\n\n disconnect() {\n const key = this.dataset.interactKey;\n\n if (key) {\n remove(key);\n }\n\n if (this.sheet) {\n const index = document.adoptedStyleSheets.indexOf(this.sheet);\n document.adoptedStyleSheets.splice(index, 1);\n }\n\n this._observers = new WeakMap();\n\n this.connected = false;\n }\n\n connect(key?: string) {\n if (this.connected) {\n return;\n }\n\n key = key || this.dataset.interactKey;\n\n if (!key) {\n console.warn('InteractElement: No key provided');\n return;\n }\n\n this.connected = add(this, key);\n }\n\n renderStyle(cssRules: string[]) {\n if (!this.sheet) {\n this.sheet = new CSSStyleSheet();\n void this.sheet.replace(cssRules.join('\\n'));\n\n document.adoptedStyleSheets.push(this.sheet);\n } else {\n let position = this.sheet.cssRules.length;\n\n for (const cssRule of cssRules) {\n try {\n this.sheet.insertRule(cssRule, position);\n position++;\n } catch (e) {\n console.error(e);\n }\n }\n }\n }\n\n toggleEffect(\n effectId: string,\n method: StateParams['method'],\n item?: HTMLElement | null,\n ) {\n if (item === null) {\n return;\n }\n if (isLegacyStateSyntax) {\n effectId = `--${effectId}`;\n }\n\n if (this._internals && !item) {\n if (method === 'toggle') {\n this._internals.states.has(effectId)\n ? this._internals.states.delete(effectId)\n : this._internals.states.add(effectId);\n } else if (method === 'add') {\n this._internals.states.add(effectId);\n } else if (method === 'remove') {\n this._internals.states.delete(effectId);\n } else if (method === 'clear') {\n this._internals.states.clear();\n }\n } else {\n const currentEffects = new Set(\n this.dataset[INTERACT_EFFECT_DATA_ATTR]?.split(' ') || [],\n );\n\n if (method === 'toggle') {\n currentEffects.has(effectId)\n ? currentEffects.delete(effectId)\n : currentEffects.add(effectId);\n } else if (method === 'add') {\n currentEffects.add(effectId);\n } else if (method === 'remove') {\n currentEffects.delete(effectId);\n } else if (method === 'clear') {\n currentEffects.clear();\n }\n\n (item || this).dataset[INTERACT_EFFECT_DATA_ATTR] =\n Array.from(currentEffects).join(' ');\n }\n }\n\n getActiveEffects(): string[] {\n if (this._internals) {\n const effects = Array.from(this._internals.states);\n return isLegacyStateSyntax\n ? effects.map((effect) => effect.replace(/^--/g, ''))\n : effects;\n }\n\n const raw = this.dataset[INTERACT_EFFECT_DATA_ATTR] || '';\n const trimmed = raw.trim();\n return trimmed ? trimmed.split(/\\s+/) : [];\n }\n\n watchChildList(listContainer: string): void {\n const list = this.querySelector(listContainer);\n\n if (list) {\n // TODO: we can probably improve this and use less observers, this impl. uses one per container element\n let observer = this._observers.get(list as HTMLElement);\n\n if (!observer) {\n observer = new MutationObserver(\n this._childListChangeHandler.bind(this, listContainer),\n );\n\n this._observers.set(list as HTMLElement, observer);\n\n observer.observe(list as HTMLElement, { childList: true });\n }\n }\n }\n\n _childListChangeHandler(listContainer: string, entries: MutationRecord[]) {\n const key = this.dataset.interactKey;\n const removedElements: HTMLElement[] = [];\n const addedElements: HTMLElement[] = [];\n\n entries.forEach((entry) => {\n entry.removedNodes.forEach((el) => {\n if (el instanceof HTMLElement) {\n removedElements.push(el);\n }\n });\n\n entry.addedNodes.forEach((el) => {\n if (el instanceof HTMLElement) {\n addedElements.push(el);\n }\n });\n });\n\n removeListItems(removedElements);\n key && addListItems(this, key, listContainer, addedElements);\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -249,7 +249,7 @@ describe('interact', () => {
|
|
|
249
249
|
}
|
|
250
250
|
});
|
|
251
251
|
beforeEach(() => {
|
|
252
|
-
element = document.createElement('
|
|
252
|
+
element = document.createElement('interact-element');
|
|
253
253
|
const div = document.createElement('div');
|
|
254
254
|
element.append(div);
|
|
255
255
|
|
|
@@ -408,14 +408,14 @@ describe('interact', () => {
|
|
|
408
408
|
describe('init Interact instance', () => {
|
|
409
409
|
it('should initialize with valid config', () => {
|
|
410
410
|
Interact.create({});
|
|
411
|
-
expect(customElements.get('
|
|
411
|
+
expect(customElements.get('interact-element')).toBeDefined();
|
|
412
412
|
});
|
|
413
413
|
});
|
|
414
414
|
describe('destroy Interact instance', () => {
|
|
415
415
|
it('should clear an instance entire cache', () => {
|
|
416
416
|
const instance = Interact.create(getMockConfig());
|
|
417
|
-
element = document.createElement('
|
|
418
|
-
element.dataset.
|
|
417
|
+
element = document.createElement('interact-element');
|
|
418
|
+
element.dataset.interactKey = 'logo-entrance';
|
|
419
419
|
const div = document.createElement('div');
|
|
420
420
|
element.append(div);
|
|
421
421
|
add(element, 'logo-entrance');
|
|
@@ -439,7 +439,7 @@ describe('interact', () => {
|
|
|
439
439
|
});
|
|
440
440
|
it('should clear all elements from cache', () => {
|
|
441
441
|
Interact.create(getMockConfig());
|
|
442
|
-
element = document.createElement('
|
|
442
|
+
element = document.createElement('interact-element');
|
|
443
443
|
const div = document.createElement('div');
|
|
444
444
|
element.append(div);
|
|
445
445
|
add(element, 'logo-hover');
|
|
@@ -449,10 +449,10 @@ describe('interact', () => {
|
|
|
449
449
|
});
|
|
450
450
|
it('should call disconnect on all cached elements', () => {
|
|
451
451
|
Interact.create(getMockConfig());
|
|
452
|
-
const element1 = document.createElement('
|
|
452
|
+
const element1 = document.createElement('interact-element');
|
|
453
453
|
const div1 = document.createElement('div');
|
|
454
454
|
element1.append(div1);
|
|
455
|
-
const element2 = document.createElement('
|
|
455
|
+
const element2 = document.createElement('interact-element');
|
|
456
456
|
const div2 = document.createElement('div');
|
|
457
457
|
element2.append(div2);
|
|
458
458
|
add(element1, 'logo-hover');
|
|
@@ -465,7 +465,7 @@ describe('interact', () => {
|
|
|
465
465
|
});
|
|
466
466
|
it('should clean up interactions after destroy', () => {
|
|
467
467
|
Interact.create(getMockConfig());
|
|
468
|
-
element = document.createElement('
|
|
468
|
+
element = document.createElement('interact-element');
|
|
469
469
|
const div = document.createElement('div');
|
|
470
470
|
element.append(div);
|
|
471
471
|
add(element, 'logo-click');
|
|
@@ -476,7 +476,7 @@ describe('interact', () => {
|
|
|
476
476
|
|
|
477
477
|
// Re-create instance and verify it works independently
|
|
478
478
|
Interact.create(getMockConfig());
|
|
479
|
-
const newElement = document.createElement('
|
|
479
|
+
const newElement = document.createElement('interact-element');
|
|
480
480
|
const newDiv = document.createElement('div');
|
|
481
481
|
newElement.append(newDiv);
|
|
482
482
|
const newAddEventListenerSpy = jest.spyOn(newDiv, 'addEventListener');
|
|
@@ -490,9 +490,9 @@ describe('interact', () => {
|
|
|
490
490
|
// Interact.create(mockConfig);
|
|
491
491
|
|
|
492
492
|
// element = document.createElement(
|
|
493
|
-
// '
|
|
494
|
-
// ) as
|
|
495
|
-
// element.dataset.
|
|
493
|
+
// 'interact-element',
|
|
494
|
+
// ) as IInteractElement;
|
|
495
|
+
// element.dataset.interactKey = 'logo-click';
|
|
496
496
|
// const div = document.createElement('div');
|
|
497
497
|
// element.append(div);
|
|
498
498
|
|
|
@@ -535,7 +535,7 @@ describe('interact', () => {
|
|
|
535
535
|
}
|
|
536
536
|
}
|
|
537
537
|
});
|
|
538
|
-
element = document.createElement('
|
|
538
|
+
element = document.createElement('interact-element');
|
|
539
539
|
const div = document.createElement('div');
|
|
540
540
|
element.append(div);
|
|
541
541
|
add(element, 'logo-hover');
|
|
@@ -560,7 +560,7 @@ describe('interact', () => {
|
|
|
560
560
|
const {
|
|
561
561
|
getWebAnimation
|
|
562
562
|
} = require('@wix/motion');
|
|
563
|
-
element = document.createElement('
|
|
563
|
+
element = document.createElement('interact-element');
|
|
564
564
|
const div = document.createElement('div');
|
|
565
565
|
element.append(div);
|
|
566
566
|
const addEventListenerSpy = jest.spyOn(div, 'addEventListener');
|
|
@@ -587,7 +587,7 @@ describe('interact', () => {
|
|
|
587
587
|
});
|
|
588
588
|
describe('click', () => {
|
|
589
589
|
it('should add handler for click trigger', () => {
|
|
590
|
-
element = document.createElement('
|
|
590
|
+
element = document.createElement('interact-element');
|
|
591
591
|
const div = document.createElement('div');
|
|
592
592
|
element.append(div);
|
|
593
593
|
const addEventListenerSpy = jest.spyOn(div, 'addEventListener');
|
|
@@ -603,7 +603,7 @@ describe('interact', () => {
|
|
|
603
603
|
const {
|
|
604
604
|
getWebAnimation
|
|
605
605
|
} = require('@wix/motion');
|
|
606
|
-
element = document.createElement('
|
|
606
|
+
element = document.createElement('interact-element');
|
|
607
607
|
const div = document.createElement('div');
|
|
608
608
|
element.append(div);
|
|
609
609
|
add(element, 'logo-entrance');
|
|
@@ -616,15 +616,15 @@ describe('interact', () => {
|
|
|
616
616
|
const {
|
|
617
617
|
getWebAnimation
|
|
618
618
|
} = require('@wix/motion');
|
|
619
|
-
element = document.createElement('
|
|
619
|
+
element = document.createElement('interact-element');
|
|
620
620
|
const div = document.createElement('div');
|
|
621
621
|
div.id = 'logo-entrance';
|
|
622
|
-
element.dataset.
|
|
622
|
+
element.dataset.interactKey = 'logo-entrance';
|
|
623
623
|
element.append(div);
|
|
624
|
-
const elementClick = document.createElement('
|
|
624
|
+
const elementClick = document.createElement('interact-element');
|
|
625
625
|
const divClick = document.createElement('div');
|
|
626
626
|
divClick.id = 'logo-click';
|
|
627
|
-
elementClick.dataset.
|
|
627
|
+
elementClick.dataset.interactKey = 'logo-click';
|
|
628
628
|
elementClick.append(divClick);
|
|
629
629
|
add(elementClick, 'logo-click');
|
|
630
630
|
add(element, 'logo-entrance');
|
|
@@ -648,7 +648,7 @@ describe('interact', () => {
|
|
|
648
648
|
const {
|
|
649
649
|
getWebAnimation
|
|
650
650
|
} = require('@wix/motion');
|
|
651
|
-
element = document.createElement('
|
|
651
|
+
element = document.createElement('interact-element');
|
|
652
652
|
const div = document.createElement('div');
|
|
653
653
|
element.append(div);
|
|
654
654
|
add(element, 'logo-loop');
|
|
@@ -663,7 +663,7 @@ describe('interact', () => {
|
|
|
663
663
|
const {
|
|
664
664
|
getWebAnimation
|
|
665
665
|
} = require('@wix/motion');
|
|
666
|
-
element = document.createElement('
|
|
666
|
+
element = document.createElement('interact-element');
|
|
667
667
|
const div = document.createElement('div');
|
|
668
668
|
element.append(div);
|
|
669
669
|
add(element, 'logo-animation-end');
|
|
@@ -686,7 +686,7 @@ describe('interact', () => {
|
|
|
686
686
|
destroy: jest.fn()
|
|
687
687
|
};
|
|
688
688
|
Pointer.mockImplementation(() => pointerInstance);
|
|
689
|
-
element = document.createElement('
|
|
689
|
+
element = document.createElement('interact-element');
|
|
690
690
|
const div = document.createElement('div');
|
|
691
691
|
element.append(div);
|
|
692
692
|
add(element, 'logo-mouse');
|
|
@@ -702,7 +702,7 @@ describe('interact', () => {
|
|
|
702
702
|
const {
|
|
703
703
|
getWebAnimation
|
|
704
704
|
} = require('@wix/motion');
|
|
705
|
-
element = document.createElement('
|
|
705
|
+
element = document.createElement('interact-element');
|
|
706
706
|
const div = document.createElement('div');
|
|
707
707
|
element.append(div);
|
|
708
708
|
add(element, 'logo-scroll');
|
|
@@ -725,7 +725,7 @@ describe('interact', () => {
|
|
|
725
725
|
destroy: jest.fn()
|
|
726
726
|
};
|
|
727
727
|
Scroll.mockImplementation(() => scrollInstance);
|
|
728
|
-
element = document.createElement('
|
|
728
|
+
element = document.createElement('interact-element');
|
|
729
729
|
const div = document.createElement('div');
|
|
730
730
|
element.append(div);
|
|
731
731
|
add(element, 'logo-scroll');
|
|
@@ -740,7 +740,7 @@ describe('interact', () => {
|
|
|
740
740
|
});
|
|
741
741
|
describe('listContainer', () => {
|
|
742
742
|
it('should add a handler per list item for click trigger with listContainer', () => {
|
|
743
|
-
element = document.createElement('
|
|
743
|
+
element = document.createElement('interact-element');
|
|
744
744
|
const div = document.createElement('div');
|
|
745
745
|
const ul = document.createElement('ul');
|
|
746
746
|
ul.id = 'logo-list';
|
|
@@ -766,7 +766,7 @@ describe('interact', () => {
|
|
|
766
766
|
const {
|
|
767
767
|
getWebAnimation
|
|
768
768
|
} = require('@wix/motion');
|
|
769
|
-
element = document.createElement('
|
|
769
|
+
element = document.createElement('interact-element');
|
|
770
770
|
const div = document.createElement('div');
|
|
771
771
|
const ul = document.createElement('ul');
|
|
772
772
|
ul.id = 'logo-list';
|
|
@@ -782,7 +782,7 @@ describe('interact', () => {
|
|
|
782
782
|
expect(getWebAnimation.mock.calls[1][0]).toBe(li2);
|
|
783
783
|
});
|
|
784
784
|
it('should add a handler per newly added list item for click trigger with listContainer', () => {
|
|
785
|
-
element = document.createElement('
|
|
785
|
+
element = document.createElement('interact-element');
|
|
786
786
|
const div = document.createElement('div');
|
|
787
787
|
const ul = document.createElement('ul');
|
|
788
788
|
ul.id = 'logo-list';
|
|
@@ -816,9 +816,9 @@ describe('interact', () => {
|
|
|
816
816
|
const {
|
|
817
817
|
getWebAnimation
|
|
818
818
|
} = require('@wix/motion');
|
|
819
|
-
element = document.createElement('
|
|
819
|
+
element = document.createElement('interact-element');
|
|
820
820
|
const div = document.createElement('div');
|
|
821
|
-
const targetElement = document.createElement('
|
|
821
|
+
const targetElement = document.createElement('interact-element');
|
|
822
822
|
const divTarget = document.createElement('div');
|
|
823
823
|
const ul = document.createElement('ul');
|
|
824
824
|
ul.id = 'logo-scroll-list';
|
|
@@ -857,7 +857,7 @@ describe('interact', () => {
|
|
|
857
857
|
Interact.destroy();
|
|
858
858
|
});
|
|
859
859
|
it('should remove event listeners', () => {
|
|
860
|
-
element = document.createElement('
|
|
860
|
+
element = document.createElement('interact-element');
|
|
861
861
|
const div = document.createElement('div');
|
|
862
862
|
element.append(div);
|
|
863
863
|
const removeEventListenerSpy = jest.spyOn(div, 'removeEventListener');
|
|
@@ -878,7 +878,7 @@ describe('interact', () => {
|
|
|
878
878
|
destroy: jest.fn()
|
|
879
879
|
};
|
|
880
880
|
Pointer.mockImplementation(() => pointerInstance);
|
|
881
|
-
element = document.createElement('
|
|
881
|
+
element = document.createElement('interact-element');
|
|
882
882
|
const div = document.createElement('div');
|
|
883
883
|
element.append(div);
|
|
884
884
|
add(element, 'logo-mouse');
|
|
@@ -894,10 +894,10 @@ describe('interact', () => {
|
|
|
894
894
|
} = require('@wix/motion');
|
|
895
895
|
const config = createCascadingTestConfig({}, ['min-width: 1024px']);
|
|
896
896
|
Interact.create(config);
|
|
897
|
-
const sourceElement = document.createElement('
|
|
897
|
+
const sourceElement = document.createElement('interact-element');
|
|
898
898
|
const sourceDiv = document.createElement('div');
|
|
899
899
|
sourceElement.append(sourceDiv);
|
|
900
|
-
const targetElement = document.createElement('
|
|
900
|
+
const targetElement = document.createElement('interact-element');
|
|
901
901
|
const targetDiv = document.createElement('div');
|
|
902
902
|
targetElement.append(targetDiv);
|
|
903
903
|
const addEventListenerSpy = jest.spyOn(sourceDiv, 'addEventListener');
|
|
@@ -926,10 +926,10 @@ describe('interact', () => {
|
|
|
926
926
|
const config = createCascadingTestConfig({}, []); // No matching conditions
|
|
927
927
|
|
|
928
928
|
Interact.create(config);
|
|
929
|
-
const sourceElement = document.createElement('
|
|
929
|
+
const sourceElement = document.createElement('interact-element');
|
|
930
930
|
const sourceDiv = document.createElement('div');
|
|
931
931
|
sourceElement.append(sourceDiv);
|
|
932
|
-
const targetElement = document.createElement('
|
|
932
|
+
const targetElement = document.createElement('interact-element');
|
|
933
933
|
const targetDiv = document.createElement('div');
|
|
934
934
|
targetElement.append(targetDiv);
|
|
935
935
|
add(sourceElement, 'cascade-source');
|
|
@@ -952,10 +952,10 @@ describe('interact', () => {
|
|
|
952
952
|
} = require('@wix/motion');
|
|
953
953
|
const config = createCascadingTestConfig({}, ['max-width: 767px']);
|
|
954
954
|
Interact.create(config);
|
|
955
|
-
const sourceElement = document.createElement('
|
|
955
|
+
const sourceElement = document.createElement('interact-element');
|
|
956
956
|
const sourceDiv = document.createElement('div');
|
|
957
957
|
sourceElement.append(sourceDiv);
|
|
958
|
-
const targetElement = document.createElement('
|
|
958
|
+
const targetElement = document.createElement('interact-element');
|
|
959
959
|
const targetDiv = document.createElement('div');
|
|
960
960
|
targetElement.append(targetDiv);
|
|
961
961
|
add(sourceElement, 'cascade-source');
|
|
@@ -980,10 +980,10 @@ describe('interact', () => {
|
|
|
980
980
|
} = require('@wix/motion');
|
|
981
981
|
const config = createCascadingTestConfig({}, ['min-width: 1024px']);
|
|
982
982
|
Interact.create(config);
|
|
983
|
-
const sourceElement = document.createElement('
|
|
983
|
+
const sourceElement = document.createElement('interact-element');
|
|
984
984
|
const sourceDiv = document.createElement('div');
|
|
985
985
|
sourceElement.append(sourceDiv);
|
|
986
|
-
const targetElement = document.createElement('
|
|
986
|
+
const targetElement = document.createElement('interact-element');
|
|
987
987
|
const targetDiv = document.createElement('div');
|
|
988
988
|
targetElement.append(targetDiv);
|
|
989
989
|
|
|
@@ -1006,10 +1006,10 @@ describe('interact', () => {
|
|
|
1006
1006
|
} = require('@wix/motion');
|
|
1007
1007
|
const config = createCascadingTestConfig({}, ['min-width: 1024px']);
|
|
1008
1008
|
Interact.create(config);
|
|
1009
|
-
const sourceElement = document.createElement('
|
|
1009
|
+
const sourceElement = document.createElement('interact-element');
|
|
1010
1010
|
const sourceDiv = document.createElement('div');
|
|
1011
1011
|
sourceElement.append(sourceDiv);
|
|
1012
|
-
const targetElement = document.createElement('
|
|
1012
|
+
const targetElement = document.createElement('interact-element');
|
|
1013
1013
|
const targetDiv = document.createElement('div');
|
|
1014
1014
|
targetElement.append(targetDiv);
|
|
1015
1015
|
|
|
@@ -1077,13 +1077,13 @@ describe('interact', () => {
|
|
|
1077
1077
|
};
|
|
1078
1078
|
mockMatchMedia(['min-width: 1024px']); // Only desktop matches
|
|
1079
1079
|
Interact.create(complexConfig);
|
|
1080
|
-
const sourceElement = document.createElement('
|
|
1080
|
+
const sourceElement = document.createElement('interact-element');
|
|
1081
1081
|
const sourceDiv = document.createElement('div');
|
|
1082
1082
|
sourceElement.append(sourceDiv);
|
|
1083
|
-
const target1Element = document.createElement('
|
|
1083
|
+
const target1Element = document.createElement('interact-element');
|
|
1084
1084
|
const target1Div = document.createElement('div');
|
|
1085
1085
|
target1Element.append(target1Div);
|
|
1086
|
-
const target2Element = document.createElement('
|
|
1086
|
+
const target2Element = document.createElement('interact-element');
|
|
1087
1087
|
const target2Div = document.createElement('div');
|
|
1088
1088
|
target2Element.append(target2Div);
|
|
1089
1089
|
add(sourceElement, 'multi-source-1');
|
|
@@ -1151,10 +1151,10 @@ describe('interact', () => {
|
|
|
1151
1151
|
// Both conditions match
|
|
1152
1152
|
mockMatchMedia(['min-width: 1024px', 'min-resolution: 2dppx']);
|
|
1153
1153
|
Interact.create(multiConditionConfig);
|
|
1154
|
-
const sourceElement = document.createElement('
|
|
1154
|
+
const sourceElement = document.createElement('interact-element');
|
|
1155
1155
|
const sourceDiv = document.createElement('div');
|
|
1156
1156
|
sourceElement.append(sourceDiv);
|
|
1157
|
-
const targetElement = document.createElement('
|
|
1157
|
+
const targetElement = document.createElement('interact-element');
|
|
1158
1158
|
const targetDiv = document.createElement('div');
|
|
1159
1159
|
targetElement.append(targetDiv);
|
|
1160
1160
|
add(sourceElement, 'cascade-source');
|
|
@@ -1207,10 +1207,10 @@ describe('interact', () => {
|
|
|
1207
1207
|
};
|
|
1208
1208
|
mockMatchMedia(['min-width: 1024px']);
|
|
1209
1209
|
Interact.create(configWithMissingCondition);
|
|
1210
|
-
const sourceElement = document.createElement('
|
|
1210
|
+
const sourceElement = document.createElement('interact-element');
|
|
1211
1211
|
const sourceDiv = document.createElement('div');
|
|
1212
1212
|
sourceElement.append(sourceDiv);
|
|
1213
|
-
const targetElement = document.createElement('
|
|
1213
|
+
const targetElement = document.createElement('interact-element');
|
|
1214
1214
|
const targetDiv = document.createElement('div');
|
|
1215
1215
|
targetElement.append(targetDiv);
|
|
1216
1216
|
add(sourceElement, 'cascade-source');
|
|
@@ -1254,10 +1254,10 @@ describe('interact', () => {
|
|
|
1254
1254
|
};
|
|
1255
1255
|
mockMatchMedia([]);
|
|
1256
1256
|
Interact.create(configWithEmptyConditions);
|
|
1257
|
-
const sourceElement = document.createElement('
|
|
1257
|
+
const sourceElement = document.createElement('interact-element');
|
|
1258
1258
|
const sourceDiv = document.createElement('div');
|
|
1259
1259
|
sourceElement.append(sourceDiv);
|
|
1260
|
-
const targetElement = document.createElement('
|
|
1260
|
+
const targetElement = document.createElement('interact-element');
|
|
1261
1261
|
const targetDiv = document.createElement('div');
|
|
1262
1262
|
targetElement.append(targetDiv);
|
|
1263
1263
|
add(sourceElement, 'cascade-source');
|
|
@@ -1280,7 +1280,7 @@ describe('interact', () => {
|
|
|
1280
1280
|
let targetElement;
|
|
1281
1281
|
beforeEach(() => {
|
|
1282
1282
|
// Create source element with multiple child elements
|
|
1283
|
-
sourceElement = document.createElement('
|
|
1283
|
+
sourceElement = document.createElement('interact-element');
|
|
1284
1284
|
sourceElement.innerHTML = `
|
|
1285
1285
|
<div class="first-child">First Child</div>
|
|
1286
1286
|
<button class="trigger-button">Click Me</button>
|
|
@@ -1293,7 +1293,7 @@ describe('interact', () => {
|
|
|
1293
1293
|
`;
|
|
1294
1294
|
|
|
1295
1295
|
// Create target element with multiple child elements
|
|
1296
|
-
targetElement = document.createElement('
|
|
1296
|
+
targetElement = document.createElement('interact-element');
|
|
1297
1297
|
targetElement.innerHTML = `
|
|
1298
1298
|
<div class="first-child">Target First</div>
|
|
1299
1299
|
<div class="animation-target">Animation Target</div>
|
|
@@ -1528,7 +1528,7 @@ describe('interact', () => {
|
|
|
1528
1528
|
Interact.create(config);
|
|
1529
1529
|
add(sourceElement, 'invalid-source');
|
|
1530
1530
|
add(targetElement, 'invalid-target');
|
|
1531
|
-
expect(consoleSpy).toHaveBeenCalledWith('
|
|
1531
|
+
expect(consoleSpy).toHaveBeenCalledWith('Interact: No element found for selector ".non-existent-element"');
|
|
1532
1532
|
});
|
|
1533
1533
|
it('should warn when listContainer selector does not match', () => {
|
|
1534
1534
|
const config = {
|
|
@@ -1558,7 +1558,7 @@ describe('interact', () => {
|
|
|
1558
1558
|
Interact.create(config);
|
|
1559
1559
|
add(sourceElement, 'invalid-container-source');
|
|
1560
1560
|
add(targetElement, 'invalid-container-target');
|
|
1561
|
-
expect(consoleSpy).toHaveBeenCalledWith('
|
|
1561
|
+
expect(consoleSpy).toHaveBeenCalledWith('Interact: No container found for list container ".non-existent-container"');
|
|
1562
1562
|
});
|
|
1563
1563
|
it('should gracefully handle invalid selectors without breaking interactions', () => {
|
|
1564
1564
|
const config = {
|