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