@wix/interact 1.85.0 → 1.89.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +7 -7
  2. package/dist/cjs/{WixInteractElement.js → InteractElement.js} +14 -14
  3. package/dist/cjs/InteractElement.js.map +1 -0
  4. package/dist/cjs/__tests__/interact.spec.js +81 -55
  5. package/dist/cjs/__tests__/interact.spec.js.map +1 -1
  6. package/dist/cjs/__tests__/viewEnter.spec.js +207 -0
  7. package/dist/cjs/__tests__/viewEnter.spec.js.map +1 -0
  8. package/dist/cjs/core/Interact.js +19 -7
  9. package/dist/cjs/core/Interact.js.map +1 -1
  10. package/dist/cjs/core/add.js +3 -3
  11. package/dist/cjs/core/add.js.map +1 -1
  12. package/dist/cjs/handlers/click.js +3 -3
  13. package/dist/cjs/handlers/click.js.map +1 -1
  14. package/dist/cjs/handlers/hover.js +4 -4
  15. package/dist/cjs/handlers/hover.js.map +1 -1
  16. package/dist/cjs/handlers/pointerMove.js +8 -2
  17. package/dist/cjs/handlers/pointerMove.js.map +1 -1
  18. package/dist/cjs/handlers/utilities.js +0 -2
  19. package/dist/cjs/handlers/utilities.js.map +1 -1
  20. package/dist/cjs/handlers/viewEnter.js +63 -11
  21. package/dist/cjs/handlers/viewEnter.js.map +1 -1
  22. package/dist/cjs/handlers/viewProgress.js +9 -3
  23. package/dist/cjs/handlers/viewProgress.js.map +1 -1
  24. package/dist/cjs/types.js.map +1 -1
  25. package/dist/cjs/utils.js +2 -2
  26. package/dist/cjs/utils.js.map +1 -1
  27. package/dist/esm/{WixInteractElement.js → InteractElement.js} +12 -12
  28. package/dist/esm/InteractElement.js.map +1 -0
  29. package/dist/esm/__tests__/interact.spec.js +80 -55
  30. package/dist/esm/__tests__/interact.spec.js.map +1 -1
  31. package/dist/esm/__tests__/viewEnter.spec.js +210 -0
  32. package/dist/esm/__tests__/viewEnter.spec.js.map +1 -0
  33. package/dist/esm/core/Interact.js +19 -7
  34. package/dist/esm/core/Interact.js.map +1 -1
  35. package/dist/esm/core/add.js +3 -3
  36. package/dist/esm/core/add.js.map +1 -1
  37. package/dist/esm/handlers/click.js +3 -3
  38. package/dist/esm/handlers/click.js.map +1 -1
  39. package/dist/esm/handlers/hover.js +4 -4
  40. package/dist/esm/handlers/hover.js.map +1 -1
  41. package/dist/esm/handlers/pointerMove.js +8 -2
  42. package/dist/esm/handlers/pointerMove.js.map +1 -1
  43. package/dist/esm/handlers/utilities.js +0 -2
  44. package/dist/esm/handlers/utilities.js.map +1 -1
  45. package/dist/esm/handlers/viewEnter.js +65 -11
  46. package/dist/esm/handlers/viewEnter.js.map +1 -1
  47. package/dist/esm/handlers/viewProgress.js +9 -3
  48. package/dist/esm/handlers/viewProgress.js.map +1 -1
  49. package/dist/esm/types.js.map +1 -1
  50. package/dist/esm/utils.js +2 -2
  51. package/dist/esm/utils.js.map +1 -1
  52. package/dist/types/{WixInteractElement.d.ts → InteractElement.d.ts} +2 -2
  53. package/dist/types/__tests__/viewEnter.spec.d.ts +0 -0
  54. package/dist/types/core/Interact.d.ts +11 -6
  55. package/dist/types/core/add.d.ts +3 -3
  56. package/dist/types/handlers/pointerMove.d.ts +2 -0
  57. package/dist/types/handlers/viewEnter.d.ts +2 -0
  58. package/dist/types/handlers/viewProgress.d.ts +2 -0
  59. package/dist/types/types.d.ts +8 -3
  60. package/package.json +7 -6
  61. package/dist/cjs/WixInteractElement.js.map +0 -1
  62. package/dist/esm/WixInteractElement.js.map +0 -1
package/README.md CHANGED
@@ -56,10 +56,10 @@ const interact = Interact.create(config);
56
56
  ### 2. HTML Setup
57
57
 
58
58
  ```html
59
- <!-- Wrap your target element with wix-interact-element -->
60
- <wix-interact-element data-wix-path="my-element">
59
+ <!-- Wrap your target element with interact-element -->
60
+ <interact-element data-interact-key="my-element">
61
61
  <div>This will fade in when it enters the viewport!</div>
62
- </wix-interact-element>
62
+ </interact-element>
63
63
  ```
64
64
 
65
65
  ### 3. Framework Integration
@@ -70,11 +70,11 @@ import React from 'react';
70
70
 
71
71
  function MyComponent() {
72
72
  return (
73
- <wix-interact-element data-wix-path="my-element">
73
+ <interact-element data-interact-key="my-element">
74
74
  <div className="animated-content">
75
75
  Hello, animated world!
76
76
  </div>
77
- </wix-interact-element>
77
+ </interact-element>
78
78
  );
79
79
  }
80
80
  ```
@@ -140,13 +140,13 @@ Interact.create(config: InteractConfig): Interact
140
140
  Interact.getInstance(key: string): Interact | undefined
141
141
 
142
142
  // Get cached element by key
143
- Interact.getElement(key: string): IWixInteractElement | undefined
143
+ Interact.getElement(key: string): IInteractElement | undefined
144
144
  ```
145
145
 
146
146
  ### Standalone Functions
147
147
  ```typescript
148
148
  // Add interactions to an element
149
- add(element: IWixInteractElement, key: string): boolean
149
+ add(element: IInteractElement, key: string): boolean
150
150
 
151
151
  // Remove all interactions from an element
152
152
  remove(key: string): void
@@ -2,16 +2,16 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
  exports.__esModule = true;
5
- exports.WIX_INTERACT_EFFECT_DATA_ATTR = void 0;
6
- exports.getWixInteractElement = getWixInteractElement;
5
+ exports.INTERACT_EFFECT_DATA_ATTR = void 0;
6
+ exports.getInteractElement = getInteractElement;
7
7
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
8
8
  var _add = require("./core/add");
9
9
  var _remove = require("./core/remove");
10
- const WIX_INTERACT_EFFECT_DATA_ATTR = exports.WIX_INTERACT_EFFECT_DATA_ATTR = 'wixInteractEffect';
11
- function getWixInteractElement() {
10
+ const INTERACT_EFFECT_DATA_ATTR = exports.INTERACT_EFFECT_DATA_ATTR = 'interactEffect';
11
+ function getInteractElement() {
12
12
  let checkedForLegacyStateSyntax = false;
13
13
  let isLegacyStateSyntax = false;
14
- return class WixInteractElement extends HTMLElement {
14
+ return class InteractElement extends HTMLElement {
15
15
  constructor() {
16
16
  super();
17
17
  (0, _defineProperty2.default)(this, "_internals", void 0);
@@ -44,7 +44,7 @@ function getWixInteractElement() {
44
44
  this.disconnect();
45
45
  }
46
46
  disconnect() {
47
- const key = this.dataset.wixPath;
47
+ const key = this.dataset.interactKey;
48
48
  if (key) {
49
49
  (0, _remove.remove)(key);
50
50
  }
@@ -59,9 +59,9 @@ function getWixInteractElement() {
59
59
  if (this.connected) {
60
60
  return;
61
61
  }
62
- key = key || this.dataset.wixPath;
62
+ key = key || this.dataset.interactKey;
63
63
  if (!key) {
64
- console.warn('WixInteractElement: No key provided');
64
+ console.warn('InteractElement: No key provided');
65
65
  return;
66
66
  }
67
67
  this.connected = (0, _add.add)(this, key);
@@ -101,8 +101,8 @@ function getWixInteractElement() {
101
101
  this._internals.states.clear();
102
102
  }
103
103
  } else {
104
- var _this$dataset$WIX_INT;
105
- const currentEffects = new Set(((_this$dataset$WIX_INT = this.dataset[WIX_INTERACT_EFFECT_DATA_ATTR]) == null ? void 0 : _this$dataset$WIX_INT.split(' ')) || []);
104
+ var _this$dataset$INTERAC;
105
+ const currentEffects = new Set(((_this$dataset$INTERAC = this.dataset[INTERACT_EFFECT_DATA_ATTR]) == null ? void 0 : _this$dataset$INTERAC.split(' ')) || []);
106
106
  if (method === 'toggle') {
107
107
  currentEffects.has(effectId) ? currentEffects.delete(effectId) : currentEffects.add(effectId);
108
108
  } else if (method === 'add') {
@@ -112,7 +112,7 @@ function getWixInteractElement() {
112
112
  } else if (method === 'clear') {
113
113
  currentEffects.clear();
114
114
  }
115
- (item || this).dataset[WIX_INTERACT_EFFECT_DATA_ATTR] = Array.from(currentEffects).join(' ');
115
+ (item || this).dataset[INTERACT_EFFECT_DATA_ATTR] = Array.from(currentEffects).join(' ');
116
116
  }
117
117
  }
118
118
  getActiveEffects() {
@@ -120,7 +120,7 @@ function getWixInteractElement() {
120
120
  const effects = Array.from(this._internals.states);
121
121
  return isLegacyStateSyntax ? effects.map(effect => effect.replace(/^--/g, '')) : effects;
122
122
  }
123
- const raw = this.dataset[WIX_INTERACT_EFFECT_DATA_ATTR] || '';
123
+ const raw = this.dataset[INTERACT_EFFECT_DATA_ATTR] || '';
124
124
  const trimmed = raw.trim();
125
125
  return trimmed ? trimmed.split(/\s+/) : [];
126
126
  }
@@ -139,7 +139,7 @@ function getWixInteractElement() {
139
139
  }
140
140
  }
141
141
  _childListChangeHandler(listContainer, entries) {
142
- const key = this.dataset.wixPath;
142
+ const key = this.dataset.interactKey;
143
143
  const removedElements = [];
144
144
  const addedElements = [];
145
145
  entries.forEach(entry => {
@@ -159,4 +159,4 @@ function getWixInteractElement() {
159
159
  }
160
160
  };
161
161
  }
162
- //# sourceMappingURL=WixInteractElement.js.map
162
+ //# sourceMappingURL=InteractElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_add","require","_remove","INTERACT_EFFECT_DATA_ATTR","exports","getInteractElement","checkedForLegacyStateSyntax","isLegacyStateSyntax","InteractElement","HTMLElement","constructor","_defineProperty2","default","connected","sheet","_observers","WeakMap","attachInternals","_internals","states","add","delete","e","connectedCallback","connect","disconnectedCallback","disconnect","key","dataset","interactKey","remove","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","removeListItems","addListItems"],"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":[]}
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  var _Interact = require("../core/Interact");
4
5
  var _add = require("../core/add");
5
6
  var _remove = require("../core/remove");
6
7
  var _utilities = require("../handlers/utilities");
8
+ var _handlers = _interopRequireDefault(require("../handlers"));
7
9
  // Mock @wix/motion module
8
10
  jest.mock('@wix/motion', () => {
9
11
  const mock = {
@@ -250,7 +252,7 @@ describe('interact', () => {
250
252
  }
251
253
  });
252
254
  beforeEach(() => {
253
- element = document.createElement('wix-interact-element');
255
+ element = document.createElement('interact-element');
254
256
  const div = document.createElement('div');
255
257
  element.append(div);
256
258
 
@@ -400,14 +402,14 @@ describe('interact', () => {
400
402
  describe('init Interact instance', () => {
401
403
  it('should initialize with valid config', () => {
402
404
  _Interact.Interact.create({});
403
- expect(customElements.get('wix-interact-element')).toBeDefined();
405
+ expect(customElements.get('interact-element')).toBeDefined();
404
406
  });
405
407
  });
406
408
  describe('destroy Interact instance', () => {
407
409
  it('should clear an instance entire cache', () => {
408
410
  const instance = _Interact.Interact.create(getMockConfig());
409
- element = document.createElement('wix-interact-element');
410
- element.dataset.wixPath = 'logo-entrance';
411
+ element = document.createElement('interact-element');
412
+ element.dataset.interactKey = 'logo-entrance';
411
413
  const div = document.createElement('div');
412
414
  element.append(div);
413
415
  (0, _add.add)(element, 'logo-entrance');
@@ -431,7 +433,7 @@ describe('interact', () => {
431
433
  });
432
434
  it('should clear all elements from cache', () => {
433
435
  _Interact.Interact.create(getMockConfig());
434
- element = document.createElement('wix-interact-element');
436
+ element = document.createElement('interact-element');
435
437
  const div = document.createElement('div');
436
438
  element.append(div);
437
439
  (0, _add.add)(element, 'logo-hover');
@@ -441,10 +443,10 @@ describe('interact', () => {
441
443
  });
442
444
  it('should call disconnect on all cached elements', () => {
443
445
  _Interact.Interact.create(getMockConfig());
444
- const element1 = document.createElement('wix-interact-element');
446
+ const element1 = document.createElement('interact-element');
445
447
  const div1 = document.createElement('div');
446
448
  element1.append(div1);
447
- const element2 = document.createElement('wix-interact-element');
449
+ const element2 = document.createElement('interact-element');
448
450
  const div2 = document.createElement('div');
449
451
  element2.append(div2);
450
452
  (0, _add.add)(element1, 'logo-hover');
@@ -457,7 +459,7 @@ describe('interact', () => {
457
459
  });
458
460
  it('should clean up interactions after destroy', () => {
459
461
  _Interact.Interact.create(getMockConfig());
460
- element = document.createElement('wix-interact-element');
462
+ element = document.createElement('interact-element');
461
463
  const div = document.createElement('div');
462
464
  element.append(div);
463
465
  (0, _add.add)(element, 'logo-click');
@@ -468,7 +470,7 @@ describe('interact', () => {
468
470
 
469
471
  // Re-create instance and verify it works independently
470
472
  _Interact.Interact.create(getMockConfig());
471
- const newElement = document.createElement('wix-interact-element');
473
+ const newElement = document.createElement('interact-element');
472
474
  const newDiv = document.createElement('div');
473
475
  newElement.append(newDiv);
474
476
  const newAddEventListenerSpy = jest.spyOn(newDiv, 'addEventListener');
@@ -482,9 +484,9 @@ describe('interact', () => {
482
484
  // Interact.create(mockConfig);
483
485
 
484
486
  // element = document.createElement(
485
- // 'wix-interact-element',
486
- // ) as IWixInteractElement;
487
- // element.dataset.wixPath = 'logo-click';
487
+ // 'interact-element',
488
+ // ) as IInteractElement;
489
+ // element.dataset.interactKey = 'logo-click';
488
490
  // const div = document.createElement('div');
489
491
  // element.append(div);
490
492
 
@@ -527,7 +529,7 @@ describe('interact', () => {
527
529
  }
528
530
  }
529
531
  });
530
- element = document.createElement('wix-interact-element');
532
+ element = document.createElement('interact-element');
531
533
  const div = document.createElement('div');
532
534
  element.append(div);
533
535
  (0, _add.add)(element, 'logo-hover');
@@ -552,7 +554,7 @@ describe('interact', () => {
552
554
  const {
553
555
  getWebAnimation
554
556
  } = require('@wix/motion');
555
- element = document.createElement('wix-interact-element');
557
+ element = document.createElement('interact-element');
556
558
  const div = document.createElement('div');
557
559
  element.append(div);
558
560
  const addEventListenerSpy = jest.spyOn(div, 'addEventListener');
@@ -579,7 +581,7 @@ describe('interact', () => {
579
581
  });
580
582
  describe('click', () => {
581
583
  it('should add handler for click trigger', () => {
582
- element = document.createElement('wix-interact-element');
584
+ element = document.createElement('interact-element');
583
585
  const div = document.createElement('div');
584
586
  element.append(div);
585
587
  const addEventListenerSpy = jest.spyOn(div, 'addEventListener');
@@ -595,7 +597,7 @@ describe('interact', () => {
595
597
  const {
596
598
  getWebAnimation
597
599
  } = require('@wix/motion');
598
- element = document.createElement('wix-interact-element');
600
+ element = document.createElement('interact-element');
599
601
  const div = document.createElement('div');
600
602
  element.append(div);
601
603
  (0, _add.add)(element, 'logo-entrance');
@@ -608,15 +610,15 @@ describe('interact', () => {
608
610
  const {
609
611
  getWebAnimation
610
612
  } = require('@wix/motion');
611
- element = document.createElement('wix-interact-element');
613
+ element = document.createElement('interact-element');
612
614
  const div = document.createElement('div');
613
615
  div.id = 'logo-entrance';
614
- element.dataset.wixPath = 'logo-entrance';
616
+ element.dataset.interactKey = 'logo-entrance';
615
617
  element.append(div);
616
- const elementClick = document.createElement('wix-interact-element');
618
+ const elementClick = document.createElement('interact-element');
617
619
  const divClick = document.createElement('div');
618
620
  divClick.id = 'logo-click';
619
- elementClick.dataset.wixPath = 'logo-click';
621
+ elementClick.dataset.interactKey = 'logo-click';
620
622
  elementClick.append(divClick);
621
623
  (0, _add.add)(elementClick, 'logo-click');
622
624
  (0, _add.add)(element, 'logo-entrance');
@@ -640,7 +642,7 @@ describe('interact', () => {
640
642
  const {
641
643
  getWebAnimation
642
644
  } = require('@wix/motion');
643
- element = document.createElement('wix-interact-element');
645
+ element = document.createElement('interact-element');
644
646
  const div = document.createElement('div');
645
647
  element.append(div);
646
648
  (0, _add.add)(element, 'logo-loop');
@@ -655,7 +657,7 @@ describe('interact', () => {
655
657
  const {
656
658
  getWebAnimation
657
659
  } = require('@wix/motion');
658
- element = document.createElement('wix-interact-element');
660
+ element = document.createElement('interact-element');
659
661
  const div = document.createElement('div');
660
662
  element.append(div);
661
663
  (0, _add.add)(element, 'logo-animation-end');
@@ -678,7 +680,7 @@ describe('interact', () => {
678
680
  destroy: jest.fn()
679
681
  };
680
682
  Pointer.mockImplementation(() => pointerInstance);
681
- element = document.createElement('wix-interact-element');
683
+ element = document.createElement('interact-element');
682
684
  const div = document.createElement('div');
683
685
  element.append(div);
684
686
  (0, _add.add)(element, 'logo-mouse');
@@ -694,7 +696,7 @@ describe('interact', () => {
694
696
  const {
695
697
  getWebAnimation
696
698
  } = require('@wix/motion');
697
- element = document.createElement('wix-interact-element');
699
+ element = document.createElement('interact-element');
698
700
  const div = document.createElement('div');
699
701
  element.append(div);
700
702
  (0, _add.add)(element, 'logo-scroll');
@@ -717,7 +719,7 @@ describe('interact', () => {
717
719
  destroy: jest.fn()
718
720
  };
719
721
  Scroll.mockImplementation(() => scrollInstance);
720
- element = document.createElement('wix-interact-element');
722
+ element = document.createElement('interact-element');
721
723
  const div = document.createElement('div');
722
724
  element.append(div);
723
725
  (0, _add.add)(element, 'logo-scroll');
@@ -732,7 +734,7 @@ describe('interact', () => {
732
734
  });
733
735
  describe('listContainer', () => {
734
736
  it('should add a handler per list item for click trigger with listContainer', () => {
735
- element = document.createElement('wix-interact-element');
737
+ element = document.createElement('interact-element');
736
738
  const div = document.createElement('div');
737
739
  const ul = document.createElement('ul');
738
740
  ul.id = 'logo-list';
@@ -758,7 +760,7 @@ describe('interact', () => {
758
760
  const {
759
761
  getWebAnimation
760
762
  } = require('@wix/motion');
761
- element = document.createElement('wix-interact-element');
763
+ element = document.createElement('interact-element');
762
764
  const div = document.createElement('div');
763
765
  const ul = document.createElement('ul');
764
766
  ul.id = 'logo-list';
@@ -774,7 +776,7 @@ describe('interact', () => {
774
776
  expect(getWebAnimation.mock.calls[1][0]).toBe(li2);
775
777
  });
776
778
  it('should add a handler per newly added list item for click trigger with listContainer', () => {
777
- element = document.createElement('wix-interact-element');
779
+ element = document.createElement('interact-element');
778
780
  const div = document.createElement('div');
779
781
  const ul = document.createElement('ul');
780
782
  ul.id = 'logo-list';
@@ -808,9 +810,9 @@ describe('interact', () => {
808
810
  const {
809
811
  getWebAnimation
810
812
  } = require('@wix/motion');
811
- element = document.createElement('wix-interact-element');
813
+ element = document.createElement('interact-element');
812
814
  const div = document.createElement('div');
813
- const targetElement = document.createElement('wix-interact-element');
815
+ const targetElement = document.createElement('interact-element');
814
816
  const divTarget = document.createElement('div');
815
817
  const ul = document.createElement('ul');
816
818
  ul.id = 'logo-scroll-list';
@@ -849,7 +851,7 @@ describe('interact', () => {
849
851
  _Interact.Interact.destroy();
850
852
  });
851
853
  it('should remove event listeners', () => {
852
- element = document.createElement('wix-interact-element');
854
+ element = document.createElement('interact-element');
853
855
  const div = document.createElement('div');
854
856
  element.append(div);
855
857
  const removeEventListenerSpy = jest.spyOn(div, 'removeEventListener');
@@ -870,7 +872,7 @@ describe('interact', () => {
870
872
  destroy: jest.fn()
871
873
  };
872
874
  Pointer.mockImplementation(() => pointerInstance);
873
- element = document.createElement('wix-interact-element');
875
+ element = document.createElement('interact-element');
874
876
  const div = document.createElement('div');
875
877
  element.append(div);
876
878
  (0, _add.add)(element, 'logo-mouse');
@@ -886,10 +888,10 @@ describe('interact', () => {
886
888
  } = require('@wix/motion');
887
889
  const config = createCascadingTestConfig({}, ['min-width: 1024px']);
888
890
  _Interact.Interact.create(config);
889
- const sourceElement = document.createElement('wix-interact-element');
891
+ const sourceElement = document.createElement('interact-element');
890
892
  const sourceDiv = document.createElement('div');
891
893
  sourceElement.append(sourceDiv);
892
- const targetElement = document.createElement('wix-interact-element');
894
+ const targetElement = document.createElement('interact-element');
893
895
  const targetDiv = document.createElement('div');
894
896
  targetElement.append(targetDiv);
895
897
  const addEventListenerSpy = jest.spyOn(sourceDiv, 'addEventListener');
@@ -918,10 +920,10 @@ describe('interact', () => {
918
920
  const config = createCascadingTestConfig({}, []); // No matching conditions
919
921
 
920
922
  _Interact.Interact.create(config);
921
- const sourceElement = document.createElement('wix-interact-element');
923
+ const sourceElement = document.createElement('interact-element');
922
924
  const sourceDiv = document.createElement('div');
923
925
  sourceElement.append(sourceDiv);
924
- const targetElement = document.createElement('wix-interact-element');
926
+ const targetElement = document.createElement('interact-element');
925
927
  const targetDiv = document.createElement('div');
926
928
  targetElement.append(targetDiv);
927
929
  (0, _add.add)(sourceElement, 'cascade-source');
@@ -944,10 +946,10 @@ describe('interact', () => {
944
946
  } = require('@wix/motion');
945
947
  const config = createCascadingTestConfig({}, ['max-width: 767px']);
946
948
  _Interact.Interact.create(config);
947
- const sourceElement = document.createElement('wix-interact-element');
949
+ const sourceElement = document.createElement('interact-element');
948
950
  const sourceDiv = document.createElement('div');
949
951
  sourceElement.append(sourceDiv);
950
- const targetElement = document.createElement('wix-interact-element');
952
+ const targetElement = document.createElement('interact-element');
951
953
  const targetDiv = document.createElement('div');
952
954
  targetElement.append(targetDiv);
953
955
  (0, _add.add)(sourceElement, 'cascade-source');
@@ -972,10 +974,10 @@ describe('interact', () => {
972
974
  } = require('@wix/motion');
973
975
  const config = createCascadingTestConfig({}, ['min-width: 1024px']);
974
976
  _Interact.Interact.create(config);
975
- const sourceElement = document.createElement('wix-interact-element');
977
+ const sourceElement = document.createElement('interact-element');
976
978
  const sourceDiv = document.createElement('div');
977
979
  sourceElement.append(sourceDiv);
978
- const targetElement = document.createElement('wix-interact-element');
980
+ const targetElement = document.createElement('interact-element');
979
981
  const targetDiv = document.createElement('div');
980
982
  targetElement.append(targetDiv);
981
983
 
@@ -998,10 +1000,10 @@ describe('interact', () => {
998
1000
  } = require('@wix/motion');
999
1001
  const config = createCascadingTestConfig({}, ['min-width: 1024px']);
1000
1002
  _Interact.Interact.create(config);
1001
- const sourceElement = document.createElement('wix-interact-element');
1003
+ const sourceElement = document.createElement('interact-element');
1002
1004
  const sourceDiv = document.createElement('div');
1003
1005
  sourceElement.append(sourceDiv);
1004
- const targetElement = document.createElement('wix-interact-element');
1006
+ const targetElement = document.createElement('interact-element');
1005
1007
  const targetDiv = document.createElement('div');
1006
1008
  targetElement.append(targetDiv);
1007
1009
 
@@ -1069,13 +1071,13 @@ describe('interact', () => {
1069
1071
  };
1070
1072
  mockMatchMedia(['min-width: 1024px']); // Only desktop matches
1071
1073
  _Interact.Interact.create(complexConfig);
1072
- const sourceElement = document.createElement('wix-interact-element');
1074
+ const sourceElement = document.createElement('interact-element');
1073
1075
  const sourceDiv = document.createElement('div');
1074
1076
  sourceElement.append(sourceDiv);
1075
- const target1Element = document.createElement('wix-interact-element');
1077
+ const target1Element = document.createElement('interact-element');
1076
1078
  const target1Div = document.createElement('div');
1077
1079
  target1Element.append(target1Div);
1078
- const target2Element = document.createElement('wix-interact-element');
1080
+ const target2Element = document.createElement('interact-element');
1079
1081
  const target2Div = document.createElement('div');
1080
1082
  target2Element.append(target2Div);
1081
1083
  (0, _add.add)(sourceElement, 'multi-source-1');
@@ -1143,10 +1145,10 @@ describe('interact', () => {
1143
1145
  // Both conditions match
1144
1146
  mockMatchMedia(['min-width: 1024px', 'min-resolution: 2dppx']);
1145
1147
  _Interact.Interact.create(multiConditionConfig);
1146
- const sourceElement = document.createElement('wix-interact-element');
1148
+ const sourceElement = document.createElement('interact-element');
1147
1149
  const sourceDiv = document.createElement('div');
1148
1150
  sourceElement.append(sourceDiv);
1149
- const targetElement = document.createElement('wix-interact-element');
1151
+ const targetElement = document.createElement('interact-element');
1150
1152
  const targetDiv = document.createElement('div');
1151
1153
  targetElement.append(targetDiv);
1152
1154
  (0, _add.add)(sourceElement, 'cascade-source');
@@ -1199,10 +1201,10 @@ describe('interact', () => {
1199
1201
  };
1200
1202
  mockMatchMedia(['min-width: 1024px']);
1201
1203
  _Interact.Interact.create(configWithMissingCondition);
1202
- const sourceElement = document.createElement('wix-interact-element');
1204
+ const sourceElement = document.createElement('interact-element');
1203
1205
  const sourceDiv = document.createElement('div');
1204
1206
  sourceElement.append(sourceDiv);
1205
- const targetElement = document.createElement('wix-interact-element');
1207
+ const targetElement = document.createElement('interact-element');
1206
1208
  const targetDiv = document.createElement('div');
1207
1209
  targetElement.append(targetDiv);
1208
1210
  (0, _add.add)(sourceElement, 'cascade-source');
@@ -1246,10 +1248,10 @@ describe('interact', () => {
1246
1248
  };
1247
1249
  mockMatchMedia([]);
1248
1250
  _Interact.Interact.create(configWithEmptyConditions);
1249
- const sourceElement = document.createElement('wix-interact-element');
1251
+ const sourceElement = document.createElement('interact-element');
1250
1252
  const sourceDiv = document.createElement('div');
1251
1253
  sourceElement.append(sourceDiv);
1252
- const targetElement = document.createElement('wix-interact-element');
1254
+ const targetElement = document.createElement('interact-element');
1253
1255
  const targetDiv = document.createElement('div');
1254
1256
  targetElement.append(targetDiv);
1255
1257
  (0, _add.add)(sourceElement, 'cascade-source');
@@ -1272,7 +1274,7 @@ describe('interact', () => {
1272
1274
  let targetElement;
1273
1275
  beforeEach(() => {
1274
1276
  // Create source element with multiple child elements
1275
- sourceElement = document.createElement('wix-interact-element');
1277
+ sourceElement = document.createElement('interact-element');
1276
1278
  sourceElement.innerHTML = `
1277
1279
  <div class="first-child">First Child</div>
1278
1280
  <button class="trigger-button">Click Me</button>
@@ -1285,7 +1287,7 @@ describe('interact', () => {
1285
1287
  `;
1286
1288
 
1287
1289
  // Create target element with multiple child elements
1288
- targetElement = document.createElement('wix-interact-element');
1290
+ targetElement = document.createElement('interact-element');
1289
1291
  targetElement.innerHTML = `
1290
1292
  <div class="first-child">Target First</div>
1291
1293
  <div class="animation-target">Animation Target</div>
@@ -1520,7 +1522,7 @@ describe('interact', () => {
1520
1522
  _Interact.Interact.create(config);
1521
1523
  (0, _add.add)(sourceElement, 'invalid-source');
1522
1524
  (0, _add.add)(targetElement, 'invalid-target');
1523
- expect(consoleSpy).toHaveBeenCalledWith('WixInteract: No element found for selector ".non-existent-element"');
1525
+ expect(consoleSpy).toHaveBeenCalledWith('Interact: No element found for selector ".non-existent-element"');
1524
1526
  });
1525
1527
  it('should warn when listContainer selector does not match', () => {
1526
1528
  const config = {
@@ -1550,7 +1552,7 @@ describe('interact', () => {
1550
1552
  _Interact.Interact.create(config);
1551
1553
  (0, _add.add)(sourceElement, 'invalid-container-source');
1552
1554
  (0, _add.add)(targetElement, 'invalid-container-target');
1553
- expect(consoleSpy).toHaveBeenCalledWith('WixInteract: No container found for list container ".non-existent-container"');
1555
+ expect(consoleSpy).toHaveBeenCalledWith('Interact: No container found for list container ".non-existent-container"');
1554
1556
  });
1555
1557
  it('should gracefully handle invalid selectors without breaking interactions', () => {
1556
1558
  const config = {
@@ -1771,5 +1773,29 @@ describe('interact', () => {
1771
1773
  expect(_Interact.Interact.elementCache.get(keyWithoutInstance)).toBe(element);
1772
1774
  });
1773
1775
  });
1776
+ describe('setup', () => {
1777
+ afterEach(() => {
1778
+ _Interact.Interact.setup({
1779
+ scrollOptionsGetter: () => ({}),
1780
+ pointerOptionsGetter: () => ({})
1781
+ });
1782
+ });
1783
+ it('should register scroll options getter', () => {
1784
+ const scrollOptionsGetter = jest.fn().mockReturnValue({});
1785
+ const spy = jest.spyOn(_handlers.default.viewProgress, 'registerOptionsGetter');
1786
+ _Interact.Interact.setup({
1787
+ scrollOptionsGetter
1788
+ });
1789
+ expect(spy).toHaveBeenCalledWith(scrollOptionsGetter);
1790
+ });
1791
+ it('should register pointer options getter', () => {
1792
+ const pointerOptionsGetter = jest.fn().mockReturnValue({});
1793
+ const spy = jest.spyOn(_handlers.default.pointerMove, 'registerOptionsGetter');
1794
+ _Interact.Interact.setup({
1795
+ pointerOptionsGetter
1796
+ });
1797
+ expect(spy).toHaveBeenCalledWith(pointerOptionsGetter);
1798
+ });
1799
+ });
1774
1800
  });
1775
1801
  //# sourceMappingURL=interact.spec.js.map