@superrb/react-addons 3.0.0-9 → 3.0.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 (131) hide show
  1. package/.pnp.cjs +11252 -0
  2. package/.pnp.loader.mjs +2126 -0
  3. package/.yarn/install-state.gz +0 -0
  4. package/components/accordion.d.ts +9 -0
  5. package/components/accordion.d.ts.map +1 -0
  6. package/components/accordion.js +44 -0
  7. package/components/back-to-top.d.ts +1 -2
  8. package/components/back-to-top.d.ts.map +1 -1
  9. package/components/back-to-top.js +2 -3
  10. package/components/button.d.ts.map +1 -1
  11. package/components/button.js +3 -3
  12. package/components/context-wrapper.d.ts +1 -2
  13. package/components/context-wrapper.d.ts.map +1 -1
  14. package/components/context-wrapper.js +3 -2
  15. package/components/cookie-banner.d.ts +8 -3
  16. package/components/cookie-banner.d.ts.map +1 -1
  17. package/components/cookie-banner.js +6 -7
  18. package/components/form/error-message.d.ts +1 -2
  19. package/components/form/error-message.d.ts.map +1 -1
  20. package/components/form/error-message.js +2 -3
  21. package/components/form/field.d.ts +11 -3
  22. package/components/form/field.d.ts.map +1 -1
  23. package/components/form/field.js +18 -7
  24. package/components/form/file-field.d.ts +15 -0
  25. package/components/form/file-field.d.ts.map +1 -0
  26. package/components/form/file-field.js +24 -0
  27. package/components/form/submit-button.d.ts +3 -3
  28. package/components/form/submit-button.d.ts.map +1 -1
  29. package/components/form/submit-button.js +3 -4
  30. package/components/form/success-message.d.ts +3 -2
  31. package/components/form/success-message.d.ts.map +1 -1
  32. package/components/form/success-message.js +9 -2
  33. package/components/form.d.ts +22 -6
  34. package/components/form.d.ts.map +1 -1
  35. package/components/form.js +72 -55
  36. package/components/menu-toggle.d.ts +4 -4
  37. package/components/menu-toggle.d.ts.map +1 -1
  38. package/components/menu-toggle.js +4 -13
  39. package/components/modal.d.ts +3 -2
  40. package/components/modal.d.ts.map +1 -1
  41. package/components/modal.js +10 -6
  42. package/components/skip-to.d.ts +1 -2
  43. package/components/skip-to.d.ts.map +1 -1
  44. package/components/skip-to.js +2 -3
  45. package/components/slideshow-buttons.d.ts +2 -3
  46. package/components/slideshow-buttons.d.ts.map +1 -1
  47. package/components/slideshow-buttons.js +2 -3
  48. package/components/slideshow-pagination.d.ts +5 -0
  49. package/components/slideshow-pagination.d.ts.map +1 -0
  50. package/components/slideshow-pagination.js +4 -0
  51. package/components.d.ts +3 -1
  52. package/components.d.ts.map +1 -1
  53. package/components.js +3 -1
  54. package/context/cookies-context-provider.d.ts.map +1 -1
  55. package/context/modal-context-provider.d.ts +1 -1
  56. package/context/modal-context-provider.d.ts.map +1 -1
  57. package/context/modal-context-provider.js +2 -2
  58. package/context/nav-context-provider.d.ts +1 -1
  59. package/context/nav-context-provider.d.ts.map +1 -1
  60. package/context/nav-context-provider.js +2 -2
  61. package/hooks/use-async.d.ts +3 -2
  62. package/hooks/use-async.d.ts.map +1 -1
  63. package/hooks/use-async.js +3 -4
  64. package/hooks/use-draggable-scroll.d.ts +3 -3
  65. package/hooks/use-draggable-scroll.d.ts.map +1 -1
  66. package/hooks/use-draggable-scroll.js +2 -3
  67. package/hooks/use-escape.d.ts +3 -0
  68. package/hooks/use-escape.d.ts.map +1 -0
  69. package/hooks/use-escape.js +11 -0
  70. package/hooks/use-event-listener.d.ts +2 -2
  71. package/hooks/use-event-listener.d.ts.map +1 -1
  72. package/hooks/use-event-listener.js +4 -12
  73. package/hooks/use-hide-on-scroll.d.ts +1 -2
  74. package/hooks/use-hide-on-scroll.d.ts.map +1 -1
  75. package/hooks/use-hide-on-scroll.js +2 -3
  76. package/hooks/use-id.d.ts +1 -2
  77. package/hooks/use-id.d.ts.map +1 -1
  78. package/hooks/use-id.js +2 -3
  79. package/hooks/use-is-in-viewport.d.ts +2 -3
  80. package/hooks/use-is-in-viewport.d.ts.map +1 -1
  81. package/hooks/use-is-in-viewport.js +17 -15
  82. package/hooks/use-is-mobile.d.ts +1 -2
  83. package/hooks/use-is-mobile.d.ts.map +1 -1
  84. package/hooks/use-is-mobile.js +2 -3
  85. package/hooks/use-is-overflowing.d.ts +1 -2
  86. package/hooks/use-is-overflowing.d.ts.map +1 -1
  87. package/hooks/use-is-overflowing.js +5 -4
  88. package/hooks/use-lock-body-scroll.d.ts +1 -2
  89. package/hooks/use-lock-body-scroll.d.ts.map +1 -1
  90. package/hooks/use-lock-body-scroll.js +1 -2
  91. package/hooks/use-modal.d.ts +1 -2
  92. package/hooks/use-modal.d.ts.map +1 -1
  93. package/hooks/use-modal.js +2 -3
  94. package/hooks/use-motion-allowed.d.ts +1 -2
  95. package/hooks/use-motion-allowed.d.ts.map +1 -1
  96. package/hooks/use-motion-allowed.js +2 -3
  97. package/hooks/use-parallax.d.ts +1 -2
  98. package/hooks/use-parallax.d.ts.map +1 -1
  99. package/hooks/use-parallax.js +2 -3
  100. package/hooks/use-slideshow.d.ts +5 -4
  101. package/hooks/use-slideshow.d.ts.map +1 -1
  102. package/hooks/use-slideshow.js +86 -41
  103. package/hooks.d.ts +2 -1
  104. package/hooks.d.ts.map +1 -1
  105. package/hooks.js +2 -1
  106. package/package.json +5 -3
  107. package/store/cookies.d.ts.map +1 -1
  108. package/store/cookies.js +7 -3
  109. package/store/modal.d.ts.map +1 -1
  110. package/store/modal.js +4 -0
  111. package/store/nav.d.ts.map +1 -1
  112. package/store/nav.js +4 -0
  113. package/tsconfig.tsbuildinfo +1 -1
  114. package/utils/animate.d.ts +1 -2
  115. package/utils/animate.d.ts.map +1 -1
  116. package/utils/animate.js +24 -23
  117. package/utils/extend-class.d.ts +1 -2
  118. package/utils/extend-class.d.ts.map +1 -1
  119. package/utils/extend-class.js +8 -7
  120. package/utils/get-y-pos.d.ts +1 -2
  121. package/utils/get-y-pos.d.ts.map +1 -1
  122. package/utils/get-y-pos.js +2 -3
  123. package/utils/get.d.ts +2 -2
  124. package/utils/get.d.ts.map +1 -1
  125. package/utils/get.js +1 -2
  126. package/utils/is-external-link.d.ts +1 -2
  127. package/utils/is-external-link.d.ts.map +1 -1
  128. package/utils/is-external-link.js +6 -7
  129. package/utils/scroll-to-hash.d.ts +1 -2
  130. package/utils/scroll-to-hash.d.ts.map +1 -1
  131. package/utils/scroll-to-hash.js +2 -3
@@ -1,6 +1,6 @@
1
1
  import { useEffect, useRef } from 'react';
2
2
  // Hook
3
- const useEventListener = (eventName, handler, options = {}, element, flag = true) => {
3
+ export default function useEventListener(eventName, handler, options = {}, element, flag = true) {
4
4
  // Create a ref that stores handler
5
5
  const savedHandler = useRef();
6
6
  const elementRef = useRef();
@@ -13,7 +13,7 @@ const useEventListener = (eventName, handler, options = {}, element, flag = true
13
13
  // ... and potentially cause effect to re-run every render.
14
14
  useEffect(() => {
15
15
  savedHandler.current = handler;
16
- }, [handler, elementRef.current]);
16
+ }, [handler]);
17
17
  useEffect(() => {
18
18
  // Make sure element supports addEventListener
19
19
  // On
@@ -33,13 +33,5 @@ const useEventListener = (eventName, handler, options = {}, element, flag = true
33
33
  return () => {
34
34
  elementRef.current.removeEventListener(eventName, eventListener);
35
35
  };
36
- }, [
37
- eventName,
38
- handler,
39
- savedHandler.current,
40
- element,
41
- elementRef.current,
42
- flag,
43
- ]);
44
- };
45
- export default useEventListener;
36
+ }, [eventName, handler, options, element, flag]);
37
+ }
@@ -1,3 +1,2 @@
1
- declare const useHideOnScroll: (hiddenOnLoad?: boolean) => boolean;
2
- export default useHideOnScroll;
1
+ export default function useHideOnScroll(hiddenOnLoad?: boolean): boolean;
3
2
  //# sourceMappingURL=use-hide-on-scroll.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-hide-on-scroll.d.ts","sourceRoot":"","sources":["../src/hooks/use-hide-on-scroll.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,eAAe,kBAAkB,OAAO,KAAW,OA+DxD,CAAA;AAED,eAAe,eAAe,CAAA"}
1
+ {"version":3,"file":"use-hide-on-scroll.d.ts","sourceRoot":"","sources":["../src/hooks/use-hide-on-scroll.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,UAAU,eAAe,CACrC,YAAY,GAAE,OAAe,GAC5B,OAAO,CA+DT"}
@@ -1,6 +1,6 @@
1
1
  import { useEventListener } from '../hooks';
2
2
  import { useCallback, useEffect, useState } from 'react';
3
- const useHideOnScroll = (hiddenOnLoad = false) => {
3
+ export default function useHideOnScroll(hiddenOnLoad = false) {
4
4
  const [hidden, setHidden] = useState(hiddenOnLoad);
5
5
  const handleScroll = useCallback(() => {
6
6
  const previousY = window.scrollY;
@@ -31,5 +31,4 @@ const useHideOnScroll = (hiddenOnLoad = false) => {
31
31
  useEventListener('popstate', handleLoad, { passive: true }, typeof window !== 'undefined' ? window : undefined);
32
32
  useEventListener('pageshow', handleLoad, { passive: true }, typeof window !== 'undefined' ? window : undefined);
33
33
  return hidden;
34
- };
35
- export default useHideOnScroll;
34
+ }
package/hooks/use-id.d.ts CHANGED
@@ -1,3 +1,2 @@
1
- declare const useId: (prefix: string) => string;
2
- export default useId;
1
+ export default function useId(prefix: string): string;
3
2
  //# sourceMappingURL=use-id.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-id.d.ts","sourceRoot":"","sources":["../src/hooks/use-id.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,KAAK,WAAY,MAAM,WAU5B,CAAA;AAED,eAAe,KAAK,CAAA"}
1
+ {"version":3,"file":"use-id.d.ts","sourceRoot":"","sources":["../src/hooks/use-id.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,MAAM,EAAE,MAAM,UAU3C"}
package/hooks/use-id.js CHANGED
@@ -1,9 +1,8 @@
1
1
  import { useEffect, useState } from 'react';
2
- const useId = (prefix) => {
2
+ export default function useId(prefix) {
3
3
  const [id, setId] = useState(`${prefix}-${Math.random().toString(36).substring(2, 9)}`);
4
4
  useEffect(() => {
5
5
  setId(`${prefix}-${Math.random().toString(36).substring(2, 9)}`);
6
6
  }, [prefix]);
7
7
  return id;
8
- };
9
- export default useId;
8
+ }
@@ -1,6 +1,5 @@
1
- declare const useIsInViewport: (initial?: boolean, rootMargin?: string, threshold?: number[]) => {
1
+ export default function useIsInViewport(initial?: boolean, rootMargin?: string, threshold?: number[]): {
2
2
  isInViewport: boolean;
3
- setRef: (ref: HTMLElement | null) => Promise<void>;
3
+ setRef: (ref: HTMLElement | null) => void;
4
4
  };
5
- export default useIsInViewport;
6
5
  //# sourceMappingURL=use-is-in-viewport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-is-in-viewport.d.ts","sourceRoot":"","sources":["../src/hooks/use-is-in-viewport.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,eAAe;;kBAgEQ,WAAW,GAAG,IAAI;CAe9C,CAAA;AAED,eAAe,eAAe,CAAA"}
1
+ {"version":3,"file":"use-is-in-viewport.d.ts","sourceRoot":"","sources":["../src/hooks/use-is-in-viewport.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,eAAe,CACrC,OAAO,UAAQ,EACf,UAAU,SAAY,EACtB,SAAS,WAA0B;;kBA6Dd,WAAW,GAAG,IAAI;EAiBxC"}
@@ -1,5 +1,5 @@
1
1
  import { useEffect, useRef, useState } from 'react';
2
- const useIsInViewport = (initial = false, rootMargin = '0px 0px', threshold = [0, 0.25, 0.5, 0.75, 1]) => {
2
+ export default function useIsInViewport(initial = false, rootMargin = '0px 0px', threshold = [0, 0.25, 0.5, 0.75, 1]) {
3
3
  const [isInViewport, setIsInViewport] = useState(initial);
4
4
  const element = useRef();
5
5
  const observer = useRef();
@@ -45,20 +45,22 @@ const useIsInViewport = (initial = false, rootMargin = '0px 0px', threshold = [0
45
45
  wait();
46
46
  });
47
47
  };
48
- const setRef = async (ref) => {
49
- element.current = ref;
50
- if (ref) {
51
- try {
52
- const observer = await waitForObserver();
53
- observer.observe(ref);
54
- }
55
- catch (error) {
56
- // If IntersectionObserver fails, just set isInViewport to true
57
- console.error(error);
58
- setIsInViewport(true);
48
+ const setRef = (ref) => {
49
+ ;
50
+ (async () => {
51
+ element.current = ref;
52
+ if (ref) {
53
+ try {
54
+ const observer = await waitForObserver();
55
+ observer.observe(ref);
56
+ }
57
+ catch (error) {
58
+ // If IntersectionObserver fails, just set isInViewport to true
59
+ console.error(error);
60
+ setIsInViewport(true);
61
+ }
59
62
  }
60
- }
63
+ })();
61
64
  };
62
65
  return { isInViewport, setRef };
63
- };
64
- export default useIsInViewport;
66
+ }
@@ -1,3 +1,2 @@
1
- declare const useIsMobile: (initial?: boolean, size?: string) => boolean;
2
- export default useIsMobile;
1
+ export default function useIsMobile(initial?: boolean, size?: string): boolean;
3
2
  //# sourceMappingURL=use-is-mobile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-is-mobile.d.ts","sourceRoot":"","sources":["../src/hooks/use-is-mobile.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,WAAW,+CAiBhB,CAAA;AAED,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"use-is-mobile.d.ts","sourceRoot":"","sources":["../src/hooks/use-is-mobile.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,OAAO,UAAO,EAAE,IAAI,SAAY,WAiBnE"}
@@ -1,5 +1,5 @@
1
1
  import { useCallback, useEffect, useState } from 'react';
2
- const useIsMobile = (initial = true, size = '63.75em') => {
2
+ export default function useIsMobile(initial = true, size = '63.75em') {
3
3
  const [isMobile, setIsMobile] = useState(initial);
4
4
  const setScreenSize = useCallback(() => {
5
5
  setIsMobile(!window.matchMedia(`(min-width: ${size})`).matches);
@@ -12,5 +12,4 @@ const useIsMobile = (initial = true, size = '63.75em') => {
12
12
  };
13
13
  }, [setScreenSize]);
14
14
  return isMobile;
15
- };
16
- export default useIsMobile;
15
+ }
@@ -1,4 +1,3 @@
1
1
  import { MutableRefObject } from 'react';
2
- declare const useIsOverflowing: ({ current }: MutableRefObject<HTMLElement>) => boolean;
3
- export default useIsOverflowing;
2
+ export default function useIsOverflowing({ current, }: MutableRefObject<HTMLElement>): boolean;
4
3
  //# sourceMappingURL=use-is-overflowing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-is-overflowing.d.ts","sourceRoot":"","sources":["../src/hooks/use-is-overflowing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AAExC,QAAA,MAAM,gBAAgB,gBAAiB,iBAAiB,WAAW,CAAC,YAGpB,CAAA;AAEhD,eAAe,gBAAgB,CAAA"}
1
+ {"version":3,"file":"use-is-overflowing.d.ts","sourceRoot":"","sources":["../src/hooks/use-is-overflowing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AAExC,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,OAAO,GACR,EAAE,gBAAgB,CAAC,WAAW,CAAC,WAM/B"}
@@ -1,4 +1,5 @@
1
- const useIsOverflowing = ({ current }) => current &&
2
- (current.scrollWidth > current.clientWidth ||
3
- current.scrollHeight > current.clientHeight);
4
- export default useIsOverflowing;
1
+ export default function useIsOverflowing({ current, }) {
2
+ return (current &&
3
+ (current.scrollWidth > current.clientWidth ||
4
+ current.scrollHeight > current.clientHeight));
5
+ }
@@ -1,3 +1,2 @@
1
- declare function useLockBodyScroll(toggle: boolean): void;
2
- export default useLockBodyScroll;
1
+ export default function useLockBodyScroll(toggle: boolean): void;
3
2
  //# sourceMappingURL=use-lock-body-scroll.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-lock-body-scroll.d.ts","sourceRoot":"","sources":["../src/hooks/use-lock-body-scroll.ts"],"names":[],"mappings":"AAEA,iBAAS,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAOhD;AAED,eAAe,iBAAiB,CAAA"}
1
+ {"version":3,"file":"use-lock-body-scroll.d.ts","sourceRoot":"","sources":["../src/hooks/use-lock-body-scroll.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAO/D"}
@@ -1,5 +1,5 @@
1
1
  import { useEffect } from 'react';
2
- function useLockBodyScroll(toggle) {
2
+ export default function useLockBodyScroll(toggle) {
3
3
  useEffect(() => {
4
4
  document.body.style.overflow = toggle ? 'hidden' : 'unset';
5
5
  return () => {
@@ -7,4 +7,3 @@ function useLockBodyScroll(toggle) {
7
7
  };
8
8
  }, [toggle]);
9
9
  }
10
- export default useLockBodyScroll;
@@ -1,7 +1,6 @@
1
- declare const useModal: (name: string) => {
1
+ export default function useModal(name: string): {
2
2
  isOpen: boolean;
3
3
  openModal: () => void;
4
4
  closeModal: () => void;
5
5
  };
6
- export default useModal;
7
6
  //# sourceMappingURL=use-modal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-modal.d.ts","sourceRoot":"","sources":["../src/hooks/use-modal.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,QAAQ,SAAU,MAAM;;;;CAU7B,CAAA;AAED,eAAe,QAAQ,CAAA"}
1
+ {"version":3,"file":"use-modal.d.ts","sourceRoot":"","sources":["../src/hooks/use-modal.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,IAAI,EAAE,MAAM;;;;EAU5C"}
@@ -1,5 +1,5 @@
1
1
  import useModalStore from '../store/modal';
2
- const useModal = (name) => {
2
+ export default function useModal(name) {
3
3
  const isOpen = useModalStore((state) => state.openState[name]);
4
4
  const openModal = useModalStore((state) => state.openModal);
5
5
  const closeModal = useModalStore((state) => state.closeModal);
@@ -8,5 +8,4 @@ const useModal = (name) => {
8
8
  openModal: () => openModal(name),
9
9
  closeModal: () => closeModal(name),
10
10
  };
11
- };
12
- export default useModal;
11
+ }
@@ -1,3 +1,2 @@
1
- declare const useMotionAllowed: () => boolean;
2
- export default useMotionAllowed;
1
+ export default function useMotionAllowed(): boolean;
3
2
  //# sourceMappingURL=use-motion-allowed.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-motion-allowed.d.ts","sourceRoot":"","sources":["../src/hooks/use-motion-allowed.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,gBAAgB,eAUrB,CAAA;AAED,eAAe,gBAAgB,CAAA"}
1
+ {"version":3,"file":"use-motion-allowed.d.ts","sourceRoot":"","sources":["../src/hooks/use-motion-allowed.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,gBAAgB,YAUvC"}
@@ -1,9 +1,8 @@
1
1
  import { useEffect, useState } from 'react';
2
- const useMotionAllowed = () => {
2
+ export default function useMotionAllowed() {
3
3
  const [motionAllowed, setMotionAllowed] = useState(true);
4
4
  useEffect(() => {
5
5
  setMotionAllowed(!window.matchMedia('(prefers-reduced-motion: reduce)').matches);
6
6
  }, [setMotionAllowed]);
7
7
  return motionAllowed;
8
- };
9
- export default useMotionAllowed;
8
+ }
@@ -1,3 +1,2 @@
1
- declare const useParallax: (items: HTMLElement[], flag?: boolean) => void;
2
- export default useParallax;
1
+ export default function useParallax(items: HTMLElement[], flag?: boolean): void;
3
2
  //# sourceMappingURL=use-parallax.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-parallax.d.ts","sourceRoot":"","sources":["../src/hooks/use-parallax.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,WAAW,UAAW,WAAW,EAAE,SAAQ,OAAO,SA6BvD,CAAA;AAED,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"use-parallax.d.ts","sourceRoot":"","sources":["../src/hooks/use-parallax.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,UAAU,WAAW,CACjC,KAAK,EAAE,WAAW,EAAE,EACpB,IAAI,GAAE,OAAc,QA4BrB"}
@@ -1,6 +1,6 @@
1
1
  import { useEventListener, useMotionAllowed } from '../hooks';
2
2
  import { useCallback } from 'react';
3
- const useParallax = (items, flag = true) => {
3
+ export default function useParallax(items, flag = true) {
4
4
  const isMotionAllowed = useMotionAllowed();
5
5
  const onScroll = useCallback((event) => {
6
6
  items.forEach((item, index) => {
@@ -14,5 +14,4 @@ const useParallax = (items, flag = true) => {
14
14
  });
15
15
  }, [items]);
16
16
  useEventListener('scroll', onScroll, { passive: true }, undefined, flag && isMotionAllowed);
17
- };
18
- export default useParallax;
17
+ }
@@ -10,8 +10,9 @@ export type Slideshow = {
10
10
  atStart: boolean;
11
11
  atEnd: boolean;
12
12
  };
13
- export declare const getScrollProgress: (target: SlideshowElement) => number;
14
- export declare const getCurrentSlideIndex: (element: SlideshowElement, currentIndex: number) => number;
15
- declare const useSlideshow: (slideshow: MutableRefObject<SlideshowElement>) => Slideshow;
16
- export default useSlideshow;
13
+ export declare function isHorizontal(element: SlideshowElement): boolean;
14
+ export declare function isCentered(element: SlideshowElement): boolean;
15
+ export declare function getScrollProgress(target: SlideshowElement): number;
16
+ export declare function getCurrentSlideIndex(element: SlideshowElement, currentIndex: number): number;
17
+ export default function useSlideshow(slideshow: MutableRefObject<SlideshowElement>): Slideshow;
17
18
  //# sourceMappingURL=use-slideshow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-slideshow.d.ts","sourceRoot":"","sources":["../src/hooks/use-slideshow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAuB,MAAM,OAAO,CAAA;AAE7D,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAA;IAChD,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,eAAO,MAAM,iBAAiB,WAAY,gBAAgB,WAMzD,CAAA;AAED,eAAO,MAAM,oBAAoB,YACtB,gBAAgB,gBACX,MAAM,KACnB,MAyDF,CAAA;AAED,QAAA,MAAM,YAAY,cACL,iBAAiB,gBAAgB,CAAC,KAC5C,SA+CF,CAAA;AAED,eAAe,YAAY,CAAA"}
1
+ {"version":3,"file":"use-slideshow.d.ts","sourceRoot":"","sources":["../src/hooks/use-slideshow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAuB,MAAM,OAAO,CAAA;AAG7D,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAA;IAChD,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAE/D;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAK7D;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,UAMzD;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,MAAM,GACnB,MAAM,CAkER;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,SAAS,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,GAC5C,SAAS,CAqGX"}
@@ -1,11 +1,19 @@
1
1
  import { useEffect, useState } from 'react';
2
- export const getScrollProgress = (target) => {
2
+ import useEventListener from './use-event-listener';
3
+ export function isHorizontal(element) {
4
+ return window.getComputedStyle(element).scrollSnapType.startsWith('x');
5
+ }
6
+ export function isCentered(element) {
7
+ return (window.getComputedStyle(element.firstElementChild)
8
+ ?.scrollSnapAlign === 'center');
9
+ }
10
+ export function getScrollProgress(target) {
3
11
  if (!target || target.scrollWidth === target.clientWidth) {
4
12
  return -1;
5
13
  }
6
14
  return target.scrollLeft / (target.scrollWidth - target.clientWidth);
7
- };
8
- export const getCurrentSlideIndex = (element, currentIndex) => {
15
+ }
16
+ export function getCurrentSlideIndex(element, currentIndex) {
9
17
  if (!element) {
10
18
  return currentIndex;
11
19
  }
@@ -13,76 +21,113 @@ export const getCurrentSlideIndex = (element, currentIndex) => {
13
21
  element.previousScroll = element.scrollLeft;
14
22
  return currentIndex;
15
23
  }
16
- const direction = element.scrollLeft > element.previousScroll ? 'right' : 'left';
24
+ const centered = isCentered(element);
25
+ const horizontal = isHorizontal(element);
26
+ const direction = element.scrollLeft > (element.previousScroll || 0) ? 'right' : 'left';
27
+ const offset = 25;
17
28
  let gap = parseFloat(window.getComputedStyle(element).gap) || 0;
18
29
  if (isNaN(gap)) {
19
30
  gap = 0;
20
31
  }
21
- const horizontal = window
22
- .getComputedStyle(element)
23
- .scrollSnapType.startsWith('x');
24
- const centered = window.getComputedStyle(element.firstElementChild)
25
- ?.scrollSnapAlign === 'center';
26
- const containerEdge = element.getBoundingClientRect()[horizontal ? 'left' : 'top'];
32
+ let padding = parseFloat(window.getComputedStyle(element)[horizontal ? 'paddingLeft' : 'paddingTop']) || 0;
33
+ if (isNaN(padding)) {
34
+ padding = 0;
35
+ }
36
+ const containerEdge = element.getBoundingClientRect()[horizontal ? 'left' : 'top'] + padding;
27
37
  let newIndex = currentIndex;
28
38
  let i = 0;
29
39
  for (const child of element.children) {
30
40
  const edge = child.getBoundingClientRect()[horizontal ? 'left' : 'top'] - containerEdge;
31
41
  if (centered) {
42
+ const centeredEdge = edge - child.clientWidth / 2;
32
43
  const threshold = horizontal
33
44
  ? element.clientWidth / 2
34
45
  : element.clientHeight / 2;
35
- if (edge >= 0 && edge < threshold) {
36
- return i;
46
+ if (centeredEdge >= 0 && centeredEdge < threshold) {
47
+ newIndex = i;
48
+ break;
37
49
  }
38
50
  }
39
51
  else {
40
52
  const threshold = direction === 'right'
41
- ? (horizontal ? child.clientWidth : child.clientHeight) - gap
42
- : 0 + gap;
53
+ ? (horizontal ? child.clientWidth : child.clientHeight) - gap - offset
54
+ : 0 + gap + offset;
43
55
  if (edge >= 0 - threshold) {
44
- return i;
56
+ newIndex = i;
57
+ break;
45
58
  }
46
59
  }
47
60
  i++;
48
61
  }
49
62
  element.previousScroll = element.scrollLeft;
50
63
  return newIndex;
51
- };
52
- const useSlideshow = (slideshow) => {
64
+ }
65
+ export default function useSlideshow(slideshow) {
53
66
  const [currentSlide, setCurrentSlide] = useState(0);
67
+ const [progress, setProgress] = useState(-1);
68
+ const [ready, setReady] = useState(false);
69
+ const update = () => {
70
+ if (!slideshow.current) {
71
+ return;
72
+ }
73
+ setCurrentSlide((current) => getCurrentSlideIndex(slideshow.current, current));
74
+ setProgress(getScrollProgress(slideshow.current));
75
+ };
76
+ useEventListener('scroll', update, { passive: true }, slideshow.current, !!slideshow.current && ready);
77
+ useEventListener('resize', update, { passive: true }, slideshow.current, !!slideshow.current && ready);
54
78
  useEffect(() => {
79
+ setReady(true);
55
80
  if (slideshow.current) {
56
- setCurrentSlide((current) => getCurrentSlideIndex(slideshow.current, current));
57
- slideshow.current.addEventListener('scroll', () => {
58
- setCurrentSlide((current) => getCurrentSlideIndex(slideshow.current, current));
59
- });
60
- slideshow.current.addEventListener('resize', () => setCurrentSlide((current) => getCurrentSlideIndex(slideshow.current, current)));
81
+ update();
82
+ slideshow.current.setAttribute('role', 'region');
83
+ slideshow.current.setAttribute('aria-label', 'carousel');
84
+ slideshow.current.setAttribute('aria-live', 'polite');
61
85
  }
62
- }, [slideshow]);
63
- if (!slideshow.current) {
64
- return {
65
- slideshowRef: slideshow,
66
- currentSlide: 0,
67
- slideCount: 0,
68
- goTo: () => { },
69
- atStart: true,
70
- atEnd: true,
71
- };
72
- }
86
+ }, [slideshow]); // eslint-disable-line react-hooks/exhaustive-deps
87
+ useEffect(() => {
88
+ ;
89
+ [...slideshow.current?.children].forEach((child) => child.setAttribute('aria-hidden', 'true'));
90
+ slideshow.current?.children[currentSlide].setAttribute('aria-hidden', 'false');
91
+ }, [currentSlide, slideshow]);
73
92
  return {
74
93
  slideshowRef: slideshow,
75
94
  currentSlide,
76
95
  slideCount: slideshow.current?.children.length || 0,
77
- goTo: (index) => {
78
- slideshow.current?.children[index]?.scrollIntoView({
96
+ goTo(index) {
97
+ index = Math.min(slideshow.current?.children.length - 1, Math.max(0, index));
98
+ const newElement = slideshow.current?.children[index];
99
+ newElement.scrollIntoView({
79
100
  behavior: 'smooth',
80
- block: 'nearest',
81
- inline: 'nearest',
101
+ block: isHorizontal(slideshow.current)
102
+ ? 'nearest'
103
+ : isCentered(slideshow.current)
104
+ ? 'center'
105
+ : 'start',
106
+ inline: isHorizontal(slideshow.current)
107
+ ? isCentered(slideshow.current)
108
+ ? 'center'
109
+ : 'start'
110
+ : 'nearest',
82
111
  });
112
+ // const scrollOpts: ScrollToOptions = {
113
+ // behavior: 'smooth',
114
+ // }
115
+ // if (isHorizontal(slideshow.current)) {
116
+ // if (isCentered(slideshow.current)) {
117
+ // scrollOpts.left = newElement?.offsetLeft + newElement?.clientWidth / 2
118
+ // } else {
119
+ // scrollOpts.left = newElement?.offsetLeft
120
+ // }
121
+ // } else {
122
+ // if (isCentered(slideshow.current)) {
123
+ // scrollOpts.top = newElement?.offsetTop + newElement?.clientHeight / 2
124
+ // } else {
125
+ // scrollOpts.top = newElement?.offsetTop
126
+ // }
127
+ // }
128
+ // slideshow.current?.scrollTo(scrollOpts)
83
129
  },
84
- atStart: getScrollProgress(slideshow.current) <= 0,
85
- atEnd: getScrollProgress(slideshow.current) >= 1,
130
+ atStart: progress <= 0 || progress === -1,
131
+ atEnd: progress >= 1 || progress === -1,
86
132
  };
87
- };
88
- export default useSlideshow;
133
+ }
package/hooks.d.ts CHANGED
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import useAsync from './hooks/use-async';
5
5
  import useDraggableScroll from './hooks/use-draggable-scroll';
6
+ import useEscape from './hooks/use-escape';
6
7
  import useEventListener from './hooks/use-event-listener';
7
8
  import useHideOnScroll from './hooks/use-hide-on-scroll';
8
9
  import useId from './hooks/use-id';
@@ -14,5 +15,5 @@ import useModal from './hooks/use-modal';
14
15
  import useMotionAllowed from './hooks/use-motion-allowed';
15
16
  import useParallax from './hooks/use-parallax';
16
17
  import useSlideshow from './hooks/use-slideshow';
17
- export { useAsync, useDraggableScroll, useEventListener, useHideOnScroll, useId, useIsOverflowing, useIsInViewport, useIsMobile, useLockBodyScroll, useModal, useMotionAllowed, useParallax, useSlideshow, };
18
+ export { useAsync, useDraggableScroll, useEscape, useEventListener, useHideOnScroll, useId, useIsOverflowing, useIsInViewport, useIsMobile, useLockBodyScroll, useModal, useMotionAllowed, useParallax, useSlideshow, };
18
19
  //# sourceMappingURL=hooks.d.ts.map
package/hooks.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["src/hooks.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,QAAQ,MAAM,mBAAmB,CAAA;AACxC,OAAO,kBAAkB,MAAM,8BAA8B,CAAA;AAC7D,OAAO,gBAAgB,MAAM,4BAA4B,CAAA;AACzD,OAAO,eAAe,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,MAAM,gBAAgB,CAAA;AAClC,OAAO,eAAe,MAAM,4BAA4B,CAAA;AACxD,OAAO,gBAAgB,MAAM,4BAA4B,CAAA;AACzD,OAAO,WAAW,MAAM,uBAAuB,CAAA;AAC/C,OAAO,iBAAiB,MAAM,8BAA8B,CAAA;AAC5D,OAAO,QAAQ,MAAM,mBAAmB,CAAA;AACxC,OAAO,gBAAgB,MAAM,4BAA4B,CAAA;AACzD,OAAO,WAAW,MAAM,sBAAsB,CAAA;AAC9C,OAAO,YAAY,MAAM,uBAAuB,CAAA;AAEhD,OAAO,EACL,QAAQ,EACR,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,KAAK,EACL,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,QAAQ,EACR,gBAAgB,EAChB,WAAW,EACX,YAAY,GACb,CAAA"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["src/hooks.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,QAAQ,MAAM,mBAAmB,CAAA;AACxC,OAAO,kBAAkB,MAAM,8BAA8B,CAAA;AAC7D,OAAO,SAAS,MAAM,oBAAoB,CAAA;AAC1C,OAAO,gBAAgB,MAAM,4BAA4B,CAAA;AACzD,OAAO,eAAe,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,MAAM,gBAAgB,CAAA;AAClC,OAAO,eAAe,MAAM,4BAA4B,CAAA;AACxD,OAAO,gBAAgB,MAAM,4BAA4B,CAAA;AACzD,OAAO,WAAW,MAAM,uBAAuB,CAAA;AAC/C,OAAO,iBAAiB,MAAM,8BAA8B,CAAA;AAC5D,OAAO,QAAQ,MAAM,mBAAmB,CAAA;AACxC,OAAO,gBAAgB,MAAM,4BAA4B,CAAA;AACzD,OAAO,WAAW,MAAM,sBAAsB,CAAA;AAC9C,OAAO,YAAY,MAAM,uBAAuB,CAAA;AAEhD,OAAO,EACL,QAAQ,EACR,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,KAAK,EACL,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,QAAQ,EACR,gBAAgB,EAChB,WAAW,EACX,YAAY,GACb,CAAA"}
package/hooks.js CHANGED
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import useAsync from './hooks/use-async';
5
5
  import useDraggableScroll from './hooks/use-draggable-scroll';
6
+ import useEscape from './hooks/use-escape';
6
7
  import useEventListener from './hooks/use-event-listener';
7
8
  import useHideOnScroll from './hooks/use-hide-on-scroll';
8
9
  import useId from './hooks/use-id';
@@ -14,4 +15,4 @@ import useModal from './hooks/use-modal';
14
15
  import useMotionAllowed from './hooks/use-motion-allowed';
15
16
  import useParallax from './hooks/use-parallax';
16
17
  import useSlideshow from './hooks/use-slideshow';
17
- export { useAsync, useDraggableScroll, useEventListener, useHideOnScroll, useId, useIsOverflowing, useIsInViewport, useIsMobile, useLockBodyScroll, useModal, useMotionAllowed, useParallax, useSlideshow, };
18
+ export { useAsync, useDraggableScroll, useEscape, useEventListener, useHideOnScroll, useId, useIsOverflowing, useIsInViewport, useIsMobile, useLockBodyScroll, useModal, useMotionAllowed, useParallax, useSlideshow, };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@superrb/react-addons",
3
3
  "type": "module",
4
- "version": "3.0.0-9",
4
+ "version": "3.0.0",
5
5
  "main": "index.js",
6
6
  "repository": "https://github.com/superrbstudio/react-addons",
7
7
  "author": "@molovo",
@@ -14,7 +14,8 @@
14
14
  "js-cookie": "^3.0.5",
15
15
  "react-google-recaptcha-v3": "^1.10.1",
16
16
  "react-hook-form": "^7.46.1",
17
- "react-use-draggable-scroll": "^0.4.7"
17
+ "react-use-draggable-scroll": "^0.4.7",
18
+ "simple-zustand-devtools": "^1.1.0"
18
19
  },
19
20
  "peerDependencies": {
20
21
  "react": "^18.2.0",
@@ -41,5 +42,6 @@
41
42
  "prettier": "^3.2.2",
42
43
  "typescript-eslint": "^0.0.1-alpha.0",
43
44
  "watch": "^1.0.2"
44
- }
45
+ },
46
+ "packageManager": "yarn@1.22.22+sha1.ac34549e6aa8e7ead463a7407e1c7390f61a6610"
45
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cookies.d.ts","sourceRoot":"","sources":["../src/store/cookies.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,eAAe,EAAE,OAAO,CAAA;IACxB,uBAAuB,EAAE,OAAO,CAAA;IAChC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/C,0BAA0B,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;IACvD,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,UAAU,EAAE,MAAM,IAAI,CAAA;CACvB;AAED,QAAA,MAAM,cAAc,0EAyBlB,CAAA;AAEF,eAAe,cAAc,CAAA"}
1
+ {"version":3,"file":"cookies.d.ts","sourceRoot":"","sources":["../src/store/cookies.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,eAAe,EAAE,OAAO,CAAA;IACxB,uBAAuB,EAAE,OAAO,CAAA;IAChC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/C,0BAA0B,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;IACvD,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,UAAU,EAAE,MAAM,IAAI,CAAA;CACvB;AAED,QAAA,MAAM,cAAc,0EAyBlB,CAAA;AAMF,eAAe,cAAc,CAAA"}
package/store/cookies.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { create } from 'zustand';
2
+ import { mountStoreDevtool } from 'simple-zustand-devtools';
2
3
  import Cookies from 'js-cookie';
3
4
  const useCookieStore = create()((set) => {
4
5
  const cookiesAccepted = !!Cookies.get('accepted-cookies') || false;
@@ -10,19 +11,22 @@ const useCookieStore = create()((set) => {
10
11
  Cookies.set('accepted-cookies', accepted.toString(), {
11
12
  expires: 30,
12
13
  });
13
- return set((state) => ({ cookiesAccepted: accepted }));
14
+ return set({ cookiesAccepted: accepted });
14
15
  },
15
16
  setTrackingCookiesAccepted: (accepted) => {
16
17
  Cookies.set('accepted-tracking-cookies', accepted.toString(), {
17
18
  expires: 30,
18
19
  });
19
- return set((state) => ({
20
+ return set({
20
21
  trackingCookiesAccepted: accepted,
21
- }));
22
+ });
22
23
  },
23
24
  popupOpen: false,
24
25
  openPopup: () => set({ popupOpen: true }),
25
26
  closePopup: () => set({ popupOpen: false }),
26
27
  };
27
28
  });
29
+ if (process.env.NODE_ENV === 'development') {
30
+ mountStoreDevtool('CookieStore', useCookieStore);
31
+ }
28
32
  export default useCookieStore;
@@ -1 +1 @@
1
- {"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../src/store/modal.ts"],"names":[],"mappings":"AAEA,UAAU,UAAU;IAClB,SAAS,EAAE;QACT,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACvB,CAAA;IACD,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;IACjC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAED,QAAA,MAAM,aAAa,yEASjB,CAAA;AAEF,eAAe,aAAa,CAAA"}
1
+ {"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../src/store/modal.ts"],"names":[],"mappings":"AAGA,UAAU,UAAU;IAClB,SAAS,EAAE;QACT,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACvB,CAAA;IACD,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;IACjC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAED,QAAA,MAAM,aAAa,yEASjB,CAAA;AAMF,eAAe,aAAa,CAAA"}
package/store/modal.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { create } from 'zustand';
2
+ import { mountStoreDevtool } from 'simple-zustand-devtools';
2
3
  const useModalStore = create()((set, get) => {
3
4
  return {
4
5
  openState: {},
@@ -7,4 +8,7 @@ const useModalStore = create()((set, get) => {
7
8
  closeModal: (name) => set((state) => ({ openState: { ...state.openState, [name]: false } })),
8
9
  };
9
10
  });
11
+ if (process.env.NODE_ENV === 'development') {
12
+ mountStoreDevtool('ModalStore', useModalStore);
13
+ }
10
14
  export default useModalStore;