@wix/interact 1.93.0 → 1.95.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 (34) hide show
  1. package/dist/cjs/__tests__/interact.spec.js +171 -2
  2. package/dist/cjs/__tests__/interact.spec.js.map +1 -1
  3. package/dist/cjs/__tests__/viewEnter.spec.js +23 -6
  4. package/dist/cjs/__tests__/viewEnter.spec.js.map +1 -1
  5. package/dist/cjs/core/add.js.map +1 -1
  6. package/dist/cjs/handlers/animationEnd.js +6 -1
  7. package/dist/cjs/handlers/animationEnd.js.map +1 -1
  8. package/dist/cjs/handlers/click.js +12 -2
  9. package/dist/cjs/handlers/click.js.map +1 -1
  10. package/dist/cjs/handlers/hover.js +13 -3
  11. package/dist/cjs/handlers/hover.js.map +1 -1
  12. package/dist/cjs/handlers/viewEnter.js +7 -2
  13. package/dist/cjs/handlers/viewEnter.js.map +1 -1
  14. package/dist/cjs/handlers/viewProgress.js +3 -1
  15. package/dist/cjs/handlers/viewProgress.js.map +1 -1
  16. package/dist/cjs/types.js +2 -0
  17. package/dist/esm/__tests__/interact.spec.js +170 -0
  18. package/dist/esm/__tests__/interact.spec.js.map +1 -1
  19. package/dist/esm/__tests__/viewEnter.spec.js +23 -6
  20. package/dist/esm/__tests__/viewEnter.spec.js.map +1 -1
  21. package/dist/esm/core/add.js.map +1 -1
  22. package/dist/esm/handlers/animationEnd.js +6 -1
  23. package/dist/esm/handlers/animationEnd.js.map +1 -1
  24. package/dist/esm/handlers/click.js +12 -2
  25. package/dist/esm/handlers/click.js.map +1 -1
  26. package/dist/esm/handlers/hover.js +13 -3
  27. package/dist/esm/handlers/hover.js.map +1 -1
  28. package/dist/esm/handlers/viewEnter.js +7 -2
  29. package/dist/esm/handlers/viewEnter.js.map +1 -1
  30. package/dist/esm/handlers/viewProgress.js +3 -1
  31. package/dist/esm/handlers/viewProgress.js.map +1 -1
  32. package/dist/esm/types.js +1 -1
  33. package/dist/types/__tests__/viewEnter.spec.d.ts +7 -0
  34. package/package.json +3 -3
@@ -7,8 +7,7 @@ var _add = require("../core/add");
7
7
  var _remove = require("../core/remove");
8
8
  var _utilities = require("../handlers/utilities");
9
9
  var _handlers = _interopRequireDefault(require("../handlers"));
10
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
11
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
10
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
12
11
  // Mock @wix/motion module
13
12
  jest.mock('@wix/motion', () => {
14
13
  const mock = {
@@ -680,6 +679,176 @@ describe('interact', () => {
680
679
  });
681
680
  });
682
681
  });
682
+ describe('null animation handling', () => {
683
+ it('should not add click handler when getAnimation returns null', () => {
684
+ _Interact.Interact.destroy();
685
+ const {
686
+ getWebAnimation
687
+ } = require('@wix/motion');
688
+ _Interact.Interact.create({
689
+ interactions: [{
690
+ trigger: 'click',
691
+ key: 'null-click-test',
692
+ effects: [{
693
+ effectId: 'null-test-effect'
694
+ }]
695
+ }],
696
+ effects: {
697
+ 'null-test-effect': {
698
+ namedEffect: {
699
+ type: 'FadeIn'
700
+ },
701
+ duration: 500
702
+ }
703
+ }
704
+ });
705
+ getWebAnimation.mockReturnValueOnce(null);
706
+ element = document.createElement('interact-element');
707
+ const div = document.createElement('div');
708
+ element.append(div);
709
+ const addEventListenerSpy = jest.spyOn(div, 'addEventListener');
710
+ (0, _add.add)(element, 'null-click-test');
711
+ expect(addEventListenerSpy).not.toHaveBeenCalled();
712
+ });
713
+ it('should not add hover handler when getAnimation returns null', () => {
714
+ _Interact.Interact.destroy();
715
+ const {
716
+ getWebAnimation
717
+ } = require('@wix/motion');
718
+ _Interact.Interact.create({
719
+ interactions: [{
720
+ trigger: 'hover',
721
+ key: 'null-hover-test',
722
+ effects: [{
723
+ effectId: 'null-test-effect'
724
+ }]
725
+ }],
726
+ effects: {
727
+ 'null-test-effect': {
728
+ namedEffect: {
729
+ type: 'FadeIn'
730
+ },
731
+ duration: 500
732
+ }
733
+ }
734
+ });
735
+ getWebAnimation.mockReturnValueOnce(null);
736
+ element = document.createElement('interact-element');
737
+ const div = document.createElement('div');
738
+ element.append(div);
739
+ const addEventListenerSpy = jest.spyOn(div, 'addEventListener');
740
+ (0, _add.add)(element, 'null-hover-test');
741
+ expect(addEventListenerSpy).not.toHaveBeenCalled();
742
+ });
743
+ it('should not add animationEnd handler when getAnimation returns null', () => {
744
+ _Interact.Interact.destroy();
745
+ const {
746
+ getWebAnimation
747
+ } = require('@wix/motion');
748
+ _Interact.Interact.create({
749
+ interactions: [{
750
+ trigger: 'animationEnd',
751
+ key: 'null-animationend-test',
752
+ params: {
753
+ effectId: 'trigger-effect'
754
+ },
755
+ effects: [{
756
+ effectId: 'null-test-effect'
757
+ }]
758
+ }],
759
+ effects: {
760
+ 'null-test-effect': {
761
+ namedEffect: {
762
+ type: 'FadeIn'
763
+ },
764
+ duration: 500
765
+ }
766
+ }
767
+ });
768
+ getWebAnimation.mockReturnValueOnce(null);
769
+ element = document.createElement('interact-element');
770
+ const div = document.createElement('div');
771
+ element.append(div);
772
+ const addEventListenerSpy = jest.spyOn(div, 'addEventListener');
773
+ (0, _add.add)(element, 'null-animationend-test');
774
+ expect(addEventListenerSpy).not.toHaveBeenCalled();
775
+ });
776
+ it('should not add viewProgress handler when getWebAnimation returns null (ViewTimeline)', () => {
777
+ _Interact.Interact.destroy();
778
+ const {
779
+ getWebAnimation
780
+ } = require('@wix/motion');
781
+ _Interact.Interact.create({
782
+ interactions: [{
783
+ trigger: 'viewProgress',
784
+ key: 'null-viewprogress-test',
785
+ effects: [{
786
+ effectId: 'null-scroll-effect'
787
+ }]
788
+ }],
789
+ effects: {
790
+ 'null-scroll-effect': {
791
+ namedEffect: {
792
+ type: 'FadeScroll',
793
+ range: 'in',
794
+ opacity: 0
795
+ }
796
+ }
797
+ }
798
+ });
799
+ getWebAnimation.mockReturnValueOnce(null);
800
+ element = document.createElement('interact-element');
801
+ const div = document.createElement('div');
802
+ element.append(div);
803
+ (0, _add.add)(element, 'null-viewprogress-test');
804
+
805
+ // getWebAnimation should have been called
806
+ expect(getWebAnimation).toHaveBeenCalled();
807
+ });
808
+ it('should not add viewProgress handler when getScrubScene returns null (polyfill)', () => {
809
+ // Remove ViewTimeline support to use polyfill path
810
+ delete window.ViewTimeline;
811
+ _Interact.Interact.destroy();
812
+ const {
813
+ getScrubScene
814
+ } = require('@wix/motion');
815
+ _Interact.Interact.create({
816
+ interactions: [{
817
+ trigger: 'viewProgress',
818
+ key: 'null-viewprogress-polyfill-test',
819
+ effects: [{
820
+ effectId: 'null-scroll-effect'
821
+ }]
822
+ }],
823
+ effects: {
824
+ 'null-scroll-effect': {
825
+ namedEffect: {
826
+ type: 'FadeScroll',
827
+ range: 'in',
828
+ opacity: 0
829
+ }
830
+ }
831
+ }
832
+ });
833
+ getScrubScene.mockReturnValueOnce(null);
834
+ element = document.createElement('interact-element');
835
+ const div = document.createElement('div');
836
+ element.append(div);
837
+ (0, _add.add)(element, 'null-viewprogress-polyfill-test');
838
+
839
+ // getScrubScene should have been called
840
+ expect(getScrubScene).toHaveBeenCalled();
841
+
842
+ // Restore ViewTimeline
843
+ window.ViewTimeline = class ViewTimeline {
844
+ constructor(options) {
845
+ return {
846
+ ...options
847
+ };
848
+ }
849
+ };
850
+ });
851
+ });
683
852
  describe('pointerMove', () => {
684
853
  it('should add handler for pointerMove trigger', () => {
685
854
  const {