@siberiacancode/reactuse 0.0.44 → 0.0.45
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/dist/cjs/{_rollupPluginBabelHelpers-Bx9oEugz.js → _rollupPluginBabelHelpers-Cgdvu90u.js} +2 -2
- package/dist/cjs/_rollupPluginBabelHelpers-Cgdvu90u.js.map +1 -0
- package/dist/cjs/hooks/index.js +2 -2
- package/dist/cjs/hooks/useBattery/useBattery.js +2 -2
- package/dist/cjs/hooks/useBoolean/useBoolean.js +2 -2
- package/dist/cjs/hooks/useBrowserLanguage/useBrowserLanguage.js +1 -1
- package/dist/cjs/hooks/useClickOutside/useClickOutside.js +2 -2
- package/dist/cjs/hooks/useClickOutside/useClickOutside.js.map +1 -1
- package/dist/cjs/hooks/useClipboard/useClipboard.js +3 -0
- package/dist/cjs/hooks/useClipboard/useClipboard.js.map +1 -0
- package/dist/cjs/hooks/useCounter/useCounter.js +2 -2
- package/dist/cjs/hooks/useCounter/useCounter.js.map +1 -1
- package/dist/cjs/hooks/useDebounceCallback/useDebounceCallback.js +1 -1
- package/dist/cjs/hooks/useDebounceValue/useDebounceValue.js +2 -2
- package/dist/cjs/hooks/useDefault/useDefault.js +2 -2
- package/dist/cjs/hooks/useDidUpdate/useDidUpdate.js +1 -1
- package/dist/cjs/hooks/useDisclosure/useDisclosure.js +2 -2
- package/dist/cjs/hooks/useDocumentEvent/useDocumentEvent.js +2 -2
- package/dist/cjs/hooks/useDocumentEvent/useDocumentEvent.js.map +1 -1
- package/dist/cjs/hooks/useDocumentTitle/useDocumentTitle.js +2 -2
- package/dist/cjs/hooks/useDocumentVisibility/useDocumentVisibility.js +1 -1
- package/dist/cjs/hooks/useEvent/useEvent.js +2 -2
- package/dist/cjs/hooks/useEvent/useEvent.js.map +1 -1
- package/dist/cjs/hooks/useEventListener/useEventListener.js +2 -2
- package/dist/cjs/hooks/useEventListener/useEventListener.js.map +1 -1
- package/dist/cjs/hooks/useEyeDropper/useEyeDropper.js +2 -2
- package/dist/cjs/hooks/useFavicon/useFavicon.js +2 -2
- package/dist/cjs/hooks/useField/useField.js +2 -2
- package/dist/cjs/hooks/useFileDialog/useFileDialog.js +2 -2
- package/dist/cjs/hooks/useFileDialog/useFileDialog.js.map +1 -1
- package/dist/cjs/hooks/useFps/useFps.js +2 -2
- package/dist/cjs/hooks/useFullscreen/useFullscreen.js +2 -2
- package/dist/cjs/hooks/useGeolocation/useGeolocation.js +2 -2
- package/dist/cjs/hooks/useHash/useHash.js +2 -2
- package/dist/cjs/hooks/useHotkeys/useHotkeys.js +2 -2
- package/dist/cjs/hooks/useHover/useHover.js +2 -2
- package/dist/cjs/hooks/useHover/useHover.js.map +1 -1
- package/dist/cjs/hooks/useIdle/useIdle.js +2 -2
- package/dist/cjs/hooks/useImage/useImage.js +2 -2
- package/dist/cjs/hooks/useIntersectionObserver/useIntersectionObserver.js +2 -2
- package/dist/cjs/hooks/useIntersectionObserver/useIntersectionObserver.js.map +1 -1
- package/dist/cjs/hooks/useInterval/useInterval.js +2 -2
- package/dist/cjs/hooks/useInterval/useInterval.js.map +1 -1
- package/dist/cjs/hooks/useIsFirstRender/useIsFirstRender.js +1 -1
- package/dist/cjs/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.js +1 -1
- package/dist/cjs/hooks/useKeyPress/useKeyPress.js +2 -2
- package/dist/cjs/hooks/useKeyPress/useKeyPress.js.map +1 -1
- package/dist/cjs/hooks/useKeyPressEvent/useKeyPressEvent.js +2 -2
- package/dist/cjs/hooks/useKeyPressEvent/useKeyPressEvent.js.map +1 -1
- package/dist/cjs/hooks/useKeyboard/useKeyboard.js +2 -2
- package/dist/cjs/hooks/useKeyboard/useKeyboard.js.map +1 -1
- package/dist/cjs/hooks/useKeysPressed/useKeysPressed.js +2 -2
- package/dist/cjs/hooks/useList/useList.js +2 -2
- package/dist/cjs/hooks/useLocalStorage/useLocalStorage.js +2 -2
- package/dist/cjs/hooks/useLogger/useLogger.js +2 -2
- package/dist/cjs/hooks/useLongPress/useLongPress.js +2 -2
- package/dist/cjs/hooks/useLongPress/useLongPress.js.map +1 -1
- package/dist/cjs/hooks/useMap/useMap.js +2 -2
- package/dist/cjs/hooks/useMeasure/useMeasure.js +2 -2
- package/dist/cjs/hooks/useMediaQuery/useMediaQuery.js +1 -1
- package/dist/cjs/hooks/useMemory/useMemory.js +2 -2
- package/dist/cjs/hooks/useMemory/useMemory.js.map +1 -1
- package/dist/cjs/hooks/useMount/useMount.js +1 -1
- package/dist/cjs/hooks/useMouse/useMouse.js +2 -2
- package/dist/cjs/hooks/useMutation/useMutation.js +2 -2
- package/dist/cjs/hooks/useMutationObserver.js +1 -1
- package/dist/cjs/hooks/useNetwork/useNetwork.js +2 -2
- package/dist/cjs/hooks/useOnline/useOnline.js +1 -1
- package/dist/cjs/hooks/useOperatingSystem/useOperatingSystem.js +1 -1
- package/dist/cjs/hooks/useOrientation/useOrientation.js +2 -2
- package/dist/cjs/hooks/usePageLeave/usePageLeave.js +2 -2
- package/dist/cjs/hooks/usePageLeave/usePageLeave.js.map +1 -1
- package/dist/cjs/hooks/usePaint/helpers/Paint.js +2 -2
- package/dist/cjs/hooks/usePaint/helpers/Pointer.js +2 -2
- package/dist/cjs/hooks/usePaint/usePaint.js +2 -2
- package/dist/cjs/hooks/usePaint/usePaint.js.map +1 -1
- package/dist/cjs/hooks/usePermission/usePermission.js +2 -2
- package/dist/cjs/hooks/usePermission/usePermission.js.map +1 -1
- package/dist/cjs/hooks/usePreferredColorScheme/usePreferredColorScheme.js +1 -1
- package/dist/cjs/hooks/usePreferredLanguages/usePreferredLanguages.js +1 -1
- package/dist/cjs/hooks/usePrevious/usePrevious.js +1 -1
- package/dist/cjs/hooks/useQuery/useQuery.js +2 -2
- package/dist/cjs/hooks/useQueue/useQueue.js +2 -2
- package/dist/cjs/hooks/useRenderCount/useRenderCount.js +1 -1
- package/dist/cjs/hooks/useRenderInfo/useRenderInfo.js +1 -1
- package/dist/cjs/hooks/useRerender/useRerender.js +2 -2
- package/dist/cjs/hooks/useResizeObserver/useResizeObserver.js +3 -0
- package/dist/cjs/hooks/useResizeObserver/useResizeObserver.js.map +1 -0
- package/dist/cjs/hooks/useScript/useScript.js +2 -2
- package/dist/cjs/hooks/useSessionStorage/useSessionStorage.js +2 -2
- package/dist/cjs/hooks/useSet/useSet.js +2 -2
- package/dist/cjs/hooks/useShare/useShare.js +2 -2
- package/dist/cjs/hooks/useStep/useStep.js +2 -2
- package/dist/cjs/hooks/useStopwatch/useStopwatch.js +2 -2
- package/dist/cjs/hooks/useStopwatch/useStopwatch.js.map +1 -1
- package/dist/cjs/hooks/useStorage/useStorage.js +2 -2
- package/dist/cjs/hooks/useTextSelection/useTextSelection.js +2 -2
- package/dist/cjs/hooks/useTime/useTime.js +2 -2
- package/dist/cjs/hooks/useTime/useTime.js.map +1 -1
- package/dist/cjs/hooks/useTimeout/useTimeout.js +2 -2
- package/dist/cjs/hooks/useTimeout/useTimeout.js.map +1 -1
- package/dist/cjs/hooks/useToggle/useToggle.js +2 -2
- package/dist/cjs/hooks/useUnmount/useUnmount.js +1 -1
- package/dist/cjs/hooks/useUnmount/useUnmount.js.map +1 -1
- package/dist/cjs/hooks/useWebSocket/useWebSocket.js +2 -2
- package/dist/cjs/hooks/useWebSocket/useWebSocket.js.map +1 -1
- package/dist/cjs/hooks/useWindowEvent/useWindowEvent.js +2 -2
- package/dist/cjs/hooks/useWindowEvent/useWindowEvent.js.map +1 -1
- package/dist/cjs/hooks/useWindowSize/useWindowSize.js +2 -2
- package/dist/cjs/hooks/useWizard/useWizard.js +2 -2
- package/dist/cjs/{index-P7gOty8T.js → index-CzItxmKR.js} +2 -2
- package/dist/cjs/{index-P7gOty8T.js.map → index-CzItxmKR.js.map} +1 -1
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/utils/helpers/debounce.js +1 -1
- package/dist/cjs/utils/helpers/getRetry.js +1 -1
- package/dist/cjs/utils/helpers/index.js +2 -2
- package/dist/cjs/utils/helpers/isClient.js +1 -1
- package/dist/cjs/utils/helpers/isPermissionAllowed.js +3 -0
- package/dist/cjs/utils/helpers/isPermissionAllowed.js.map +1 -0
- package/dist/cjs/utils/helpers/throttle.js +1 -1
- package/dist/cjs/utils/helpers/time/getDate.js +1 -1
- package/dist/cjs/utils/types/index.js +1 -1
- package/dist/esm/{_rollupPluginBabelHelpers-CePHKKZk.js → _rollupPluginBabelHelpers-1nJS3N_r.js} +2 -2
- package/dist/esm/_rollupPluginBabelHelpers-1nJS3N_r.js.map +1 -0
- package/dist/esm/hooks/index.js +2 -2
- package/dist/esm/hooks/useBattery/useBattery.js +2 -2
- package/dist/esm/hooks/useBoolean/useBoolean.js +2 -2
- package/dist/esm/hooks/useBrowserLanguage/useBrowserLanguage.js +1 -1
- package/dist/esm/hooks/useClickOutside/useClickOutside.js +2 -2
- package/dist/esm/hooks/useClickOutside/useClickOutside.js.map +1 -1
- package/dist/esm/hooks/useClipboard/useClipboard.js +3 -0
- package/dist/esm/hooks/useClipboard/useClipboard.js.map +1 -0
- package/dist/esm/hooks/useCounter/useCounter.js +2 -2
- package/dist/esm/hooks/useCounter/useCounter.js.map +1 -1
- package/dist/esm/hooks/useDebounceCallback/useDebounceCallback.js +1 -1
- package/dist/esm/hooks/useDebounceValue/useDebounceValue.js +2 -2
- package/dist/esm/hooks/useDefault/useDefault.js +2 -2
- package/dist/esm/hooks/useDidUpdate/useDidUpdate.js +1 -1
- package/dist/esm/hooks/useDisclosure/useDisclosure.js +2 -2
- package/dist/esm/hooks/useDocumentEvent/useDocumentEvent.js +2 -2
- package/dist/esm/hooks/useDocumentEvent/useDocumentEvent.js.map +1 -1
- package/dist/esm/hooks/useDocumentTitle/useDocumentTitle.js +2 -2
- package/dist/esm/hooks/useDocumentVisibility/useDocumentVisibility.js +1 -1
- package/dist/esm/hooks/useEvent/useEvent.js +2 -2
- package/dist/esm/hooks/useEvent/useEvent.js.map +1 -1
- package/dist/esm/hooks/useEventListener/useEventListener.js +2 -2
- package/dist/esm/hooks/useEventListener/useEventListener.js.map +1 -1
- package/dist/esm/hooks/useEyeDropper/useEyeDropper.js +2 -2
- package/dist/esm/hooks/useFavicon/useFavicon.js +2 -2
- package/dist/esm/hooks/useField/useField.js +2 -2
- package/dist/esm/hooks/useFileDialog/useFileDialog.js +2 -2
- package/dist/esm/hooks/useFileDialog/useFileDialog.js.map +1 -1
- package/dist/esm/hooks/useFps/useFps.js +2 -2
- package/dist/esm/hooks/useFullscreen/useFullscreen.js +2 -2
- package/dist/esm/hooks/useGeolocation/useGeolocation.js +2 -2
- package/dist/esm/hooks/useHash/useHash.js +2 -2
- package/dist/esm/hooks/useHotkeys/useHotkeys.js +2 -2
- package/dist/esm/hooks/useHover/useHover.js +2 -2
- package/dist/esm/hooks/useHover/useHover.js.map +1 -1
- package/dist/esm/hooks/useIdle/useIdle.js +2 -2
- package/dist/esm/hooks/useImage/useImage.js +2 -2
- package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.js +2 -2
- package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.js.map +1 -1
- package/dist/esm/hooks/useInterval/useInterval.js +2 -2
- package/dist/esm/hooks/useInterval/useInterval.js.map +1 -1
- package/dist/esm/hooks/useIsFirstRender/useIsFirstRender.js +1 -1
- package/dist/esm/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.js +1 -1
- package/dist/esm/hooks/useKeyPress/useKeyPress.js +2 -2
- package/dist/esm/hooks/useKeyPress/useKeyPress.js.map +1 -1
- package/dist/esm/hooks/useKeyPressEvent/useKeyPressEvent.js +2 -2
- package/dist/esm/hooks/useKeyPressEvent/useKeyPressEvent.js.map +1 -1
- package/dist/esm/hooks/useKeyboard/useKeyboard.js +2 -2
- package/dist/esm/hooks/useKeyboard/useKeyboard.js.map +1 -1
- package/dist/esm/hooks/useKeysPressed/useKeysPressed.js +2 -2
- package/dist/esm/hooks/useList/useList.js +2 -2
- package/dist/esm/hooks/useLocalStorage/useLocalStorage.js +2 -2
- package/dist/esm/hooks/useLogger/useLogger.js +2 -2
- package/dist/esm/hooks/useLongPress/useLongPress.js +2 -2
- package/dist/esm/hooks/useLongPress/useLongPress.js.map +1 -1
- package/dist/esm/hooks/useMap/useMap.js +2 -2
- package/dist/esm/hooks/useMeasure/useMeasure.js +2 -2
- package/dist/esm/hooks/useMediaQuery/useMediaQuery.js +1 -1
- package/dist/esm/hooks/useMemory/useMemory.js +2 -2
- package/dist/esm/hooks/useMemory/useMemory.js.map +1 -1
- package/dist/esm/hooks/useMount/useMount.js +1 -1
- package/dist/esm/hooks/useMouse/useMouse.js +2 -2
- package/dist/esm/hooks/useMutation/useMutation.js +2 -2
- package/dist/esm/hooks/useMutationObserver.js +1 -1
- package/dist/esm/hooks/useNetwork/useNetwork.js +2 -2
- package/dist/esm/hooks/useOnline/useOnline.js +1 -1
- package/dist/esm/hooks/useOperatingSystem/useOperatingSystem.js +1 -1
- package/dist/esm/hooks/useOrientation/useOrientation.js +2 -2
- package/dist/esm/hooks/usePageLeave/usePageLeave.js +2 -2
- package/dist/esm/hooks/usePageLeave/usePageLeave.js.map +1 -1
- package/dist/esm/hooks/usePaint/helpers/Paint.js +2 -2
- package/dist/esm/hooks/usePaint/helpers/Pointer.js +2 -2
- package/dist/esm/hooks/usePaint/usePaint.js +2 -2
- package/dist/esm/hooks/usePaint/usePaint.js.map +1 -1
- package/dist/esm/hooks/usePermission/usePermission.js +2 -2
- package/dist/esm/hooks/usePermission/usePermission.js.map +1 -1
- package/dist/esm/hooks/usePreferredColorScheme/usePreferredColorScheme.js +1 -1
- package/dist/esm/hooks/usePreferredLanguages/usePreferredLanguages.js +1 -1
- package/dist/esm/hooks/usePrevious/usePrevious.js +1 -1
- package/dist/esm/hooks/useQuery/useQuery.js +2 -2
- package/dist/esm/hooks/useQueue/useQueue.js +2 -2
- package/dist/esm/hooks/useRenderCount/useRenderCount.js +1 -1
- package/dist/esm/hooks/useRenderInfo/useRenderInfo.js +1 -1
- package/dist/esm/hooks/useRerender/useRerender.js +2 -2
- package/dist/esm/hooks/useResizeObserver/useResizeObserver.js +3 -0
- package/dist/esm/hooks/useResizeObserver/useResizeObserver.js.map +1 -0
- package/dist/esm/hooks/useScript/useScript.js +2 -2
- package/dist/esm/hooks/useSessionStorage/useSessionStorage.js +2 -2
- package/dist/esm/hooks/useSet/useSet.js +2 -2
- package/dist/esm/hooks/useShare/useShare.js +2 -2
- package/dist/esm/hooks/useStep/useStep.js +2 -2
- package/dist/esm/hooks/useStopwatch/useStopwatch.js +2 -2
- package/dist/esm/hooks/useStopwatch/useStopwatch.js.map +1 -1
- package/dist/esm/hooks/useStorage/useStorage.js +2 -2
- package/dist/esm/hooks/useTextSelection/useTextSelection.js +2 -2
- package/dist/esm/hooks/useTime/useTime.js +2 -2
- package/dist/esm/hooks/useTime/useTime.js.map +1 -1
- package/dist/esm/hooks/useTimeout/useTimeout.js +2 -2
- package/dist/esm/hooks/useTimeout/useTimeout.js.map +1 -1
- package/dist/esm/hooks/useToggle/useToggle.js +2 -2
- package/dist/esm/hooks/useUnmount/useUnmount.js +1 -1
- package/dist/esm/hooks/useUnmount/useUnmount.js.map +1 -1
- package/dist/esm/hooks/useWebSocket/useWebSocket.js +2 -2
- package/dist/esm/hooks/useWebSocket/useWebSocket.js.map +1 -1
- package/dist/esm/hooks/useWindowEvent/useWindowEvent.js +2 -2
- package/dist/esm/hooks/useWindowEvent/useWindowEvent.js.map +1 -1
- package/dist/esm/hooks/useWindowSize/useWindowSize.js +2 -2
- package/dist/esm/hooks/useWizard/useWizard.js +2 -2
- package/dist/esm/{index-D_PnqV6k.js → index-Bk2X3AFm.js} +2 -2
- package/dist/esm/{index-D_PnqV6k.js.map → index-Bk2X3AFm.js.map} +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/utils/helpers/debounce.js +1 -1
- package/dist/esm/utils/helpers/getRetry.js +1 -1
- package/dist/esm/utils/helpers/index.js +2 -2
- package/dist/esm/utils/helpers/isClient.js +1 -1
- package/dist/esm/utils/helpers/isPermissionAllowed.js +3 -0
- package/dist/esm/utils/helpers/isPermissionAllowed.js.map +1 -0
- package/dist/esm/utils/helpers/throttle.js +1 -1
- package/dist/esm/utils/helpers/time/getDate.js +1 -1
- package/dist/esm/utils/types/index.js +1 -1
- package/dist/index.d.ts +86 -16
- package/package.json +1 -1
- package/dist/cjs/_rollupPluginBabelHelpers-Bx9oEugz.js.map +0 -1
- package/dist/cjs/hooks/useCopyToClipboard/useCopyToClipboard.js +0 -3
- package/dist/cjs/hooks/useCopyToClipboard/useCopyToClipboard.js.map +0 -1
- package/dist/esm/_rollupPluginBabelHelpers-CePHKKZk.js.map +0 -1
- package/dist/esm/hooks/useCopyToClipboard/useCopyToClipboard.js +0 -3
- package/dist/esm/hooks/useCopyToClipboard/useCopyToClipboard.js.map +0 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
2
|
-
import{c as n,_ as e,b as t}from"../../_rollupPluginBabelHelpers-
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
|
+
import{c as n,_ as e,b as t}from"../../_rollupPluginBabelHelpers-1nJS3N_r.js";import{useState as o,useRef as r,useEffect as i}from"react";var l=function(){var l,u="object"!==n(arguments.length<=0?void 0:arguments[0])||"current"in(arguments.length<=0?void 0:arguments[0])?arguments.length<=0?void 0:arguments[0]:void 0,c=u?arguments.length<=1?void 0:arguments[1]:arguments.length<=0?void 0:arguments[0],v=null===(l=null==c?void 0:c.enabled)||void 0===l||l,d=o(),a=e(d,2),s=a[0],f=a[1],g=r(null),h=r();return h.current=null==c?void 0:c.onChange,i((function(){if(v){var n=u?function(n){return"function"==typeof n?n():n instanceof Element?n:n.current}(u):g.current;if(n){var o,r=new IntersectionObserver((function(n){var t,o=e(n,1)[0];f(o),null===(t=h.current)||void 0===t||t.call(h,o)}),t(t({},c),{},{root:(o=null==c?void 0:c.root,o?o instanceof Element||o instanceof Document?o:o.current:document)}));return r.observe(n),function(){r.disconnect()}}}}),[u,null==c?void 0:c.rootMargin,null==c?void 0:c.threshold,null==c?void 0:c.root,v]),u?{entry:s,inView:!(null==s||!s.isIntersecting)}:{ref:g,entry:s,inView:!(null==s||!s.isIntersecting)}};export{l as useIntersectionObserver};
|
|
3
3
|
//# sourceMappingURL=useIntersectionObserver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIntersectionObserver.js","sources":["../../../../src/hooks/useIntersectionObserver/useIntersectionObserver.ts"],"sourcesContent":["import type { RefObject } from 'react';\nimport { useEffect, useRef, useState } from 'react';\n\nexport type UseIntersectionObserverTarget = RefObject<Element | null> | (() => Element) | Element;\n\nexport interface UseIntersectionObserverOptions extends Omit<IntersectionObserverInit, 'root'> {\n enabled?: boolean;\n onChange?: (entry: IntersectionObserverEntry) => void;\n root?: IntersectionObserverInit['root'] | RefObject<Element | null>;\n}\n\nconst getTargetElement = (target: UseIntersectionObserverTarget) => {\n if (typeof target === 'function') {\n return target();\n }\n\n if (target instanceof Element) {\n return target;\n }\n\n return target.current;\n};\n\nconst getRootElement = (root: UseIntersectionObserverOptions['root']) => {\n if (!root) return document;\n\n if (root instanceof Element) {\n return root;\n }\n\n if (root instanceof Document) {\n return root;\n }\n\n return root.current;\n};\n\nexport interface UseIntersectionObserverReturn {\n inView: boolean;\n entry?: IntersectionObserverEntry;\n}\n\nexport type UseIntersectionObserver = {\n <Target extends UseIntersectionObserverTarget>(\n target: Target,\n options?: UseIntersectionObserverOptions\n ): UseIntersectionObserverReturn;\n\n <Target extends UseIntersectionObserverTarget>(\n options?: UseIntersectionObserverOptions,\n target?: never\n ): UseIntersectionObserverReturn & { ref: RefObject<Target> };\n};\n\nexport const useIntersectionObserver = ((...params: any[]) => {\n const target = (\n typeof params[0] === 'object' && !('current' in params[0]) ? undefined : params[0]\n ) as UseIntersectionObserverTarget | undefined;\n const options = (target ? params[1] : params[0]) as UseIntersectionObserverOptions | undefined;\n const enabled = options?.enabled ?? true;\n\n const [entry, setEntry] = useState<IntersectionObserverEntry>();\n\n const internalRef = useRef<Element>(null);\n const
|
|
1
|
+
{"version":3,"file":"useIntersectionObserver.js","sources":["../../../../src/hooks/useIntersectionObserver/useIntersectionObserver.ts"],"sourcesContent":["import type { RefObject } from 'react';\nimport { useEffect, useRef, useState } from 'react';\n\n/** The intersection observer target element type */\nexport type UseIntersectionObserverTarget = RefObject<Element | null> | (() => Element) | Element;\n\n/** The intersection observer options type */\nexport interface UseIntersectionObserverOptions extends Omit<IntersectionObserverInit, 'root'> {\n enabled?: boolean;\n onChange?: (entry: IntersectionObserverEntry) => void;\n root?: IntersectionObserverInit['root'] | RefObject<Element | null>;\n}\n\nconst getTargetElement = (target: UseIntersectionObserverTarget) => {\n if (typeof target === 'function') {\n return target();\n }\n\n if (target instanceof Element) {\n return target;\n }\n\n return target.current;\n};\n\nconst getRootElement = (root: UseIntersectionObserverOptions['root']) => {\n if (!root) return document;\n\n if (root instanceof Element) {\n return root;\n }\n\n if (root instanceof Document) {\n return root;\n }\n\n return root.current;\n};\n\n/** The intersection observer return type */\nexport interface UseIntersectionObserverReturn {\n inView: boolean;\n entry?: IntersectionObserverEntry;\n}\n\nexport type UseIntersectionObserver = {\n <Target extends UseIntersectionObserverTarget>(\n target: Target,\n options?: UseIntersectionObserverOptions\n ): UseIntersectionObserverReturn;\n\n <Target extends UseIntersectionObserverTarget>(\n options?: UseIntersectionObserverOptions,\n target?: never\n ): UseIntersectionObserverReturn & { ref: RefObject<Target> };\n};\n\n/**\n * @name useIntersectionObserver\n * @description - Hook that gives you intersection observer state\n * @category Browser\n *\n * @overload\n * @template Target The target element\n * @param {Target} target The target element to detect intersection\n * @param {boolean} [options.enabled=true] The IntersectionObserver options\n * @param {((entries: IntersectionObserverEntry[], observer: IntersectionObserver) => void) | undefined} [options.onChange] The callback to execute when intersection is detected\n * @param {IntersectionObserverInit['root'] | RefObject<Element | null>} [options.root] The root element to observe\n * @returns {UseIntersectionObserverReturn} An object containing the state and the supported status\n *\n * @example\n * const { ref, entry, inView } = useIntersectionObserver();\n *\n * @overload\n * @template Target The target element\n * @param {boolean} [options.enabled=true] The IntersectionObserver options\n * @param {((entries: IntersectionObserverEntry[], observer: IntersectionObserver) => void) | undefined} [options.onChange] The callback to execute when intersection is detected\n * @param {IntersectionObserverInit['root'] | RefObject<Element | null>} [options.root] The root element to observe\n * @returns {UseIntersectionObserverReturn & { ref: RefObject<Target> }} A React ref to attach to the target element\n *\n * @example\n * const { entry, inView } = useIntersectionObserver(ref);\n */\nexport const useIntersectionObserver = ((...params: any[]) => {\n const target = (\n typeof params[0] === 'object' && !('current' in params[0]) ? undefined : params[0]\n ) as UseIntersectionObserverTarget | undefined;\n const options = (target ? params[1] : params[0]) as UseIntersectionObserverOptions | undefined;\n const enabled = options?.enabled ?? true;\n\n const [entry, setEntry] = useState<IntersectionObserverEntry>();\n\n const internalRef = useRef<Element>(null);\n const internalOnChangeRef = useRef<UseIntersectionObserverOptions['onChange']>();\n internalOnChangeRef.current = options?.onChange;\n\n useEffect(() => {\n if (!enabled) return;\n\n const element = target ? getTargetElement(target) : internalRef.current;\n if (!element) return;\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n setEntry(entry);\n internalOnChangeRef.current?.(entry);\n },\n {\n ...options,\n root: getRootElement(options?.root)\n }\n );\n\n observer.observe(element);\n\n return () => {\n observer.disconnect();\n };\n }, [target, options?.rootMargin, options?.threshold, options?.root, enabled]);\n\n if (target) return { entry, inView: !!entry?.isIntersecting };\n return { ref: internalRef, entry, inView: !!entry?.isIntersecting };\n}) as UseIntersectionObserver;\n"],"names":["useIntersectionObserver","_options$enabled","target","_typeof","arguments","length","undefined","options","enabled","_useState","useState","_useState2","_slicedToArray","entry","setEntry","internalRef","useRef","internalOnChangeRef","current","onChange","useEffect","element","Element","getTargetElement","root","observer","IntersectionObserver","_ref","_internalOnChangeRef$","call","_objectSpread","Document","document","observe","disconnect","rootMargin","threshold","inView","isIntersecting","ref"],"mappings":";0IAaA,IAsEaA,EAA2B,WAAsB,IAAAC,EACtDC,EACiB,WAArBC,EAAAC,UAAAC,QAAA,OAAAC,EAAAF,UAAqB,KAAc,YAASA,UAAAC,eAAAC,EAAAF,UAAA,IAA0BA,UAAAC,QAAA,OAAAC,EAAAF,UAC1B,QADiBE,EAEzDC,EAAWL,EAAME,UAAAC,QAAAC,OAAAA,EAAAF,UAAA,GAAAA,UAAAC,eAAAC,EAAAF,UAAuE,GACxFI,EAA0BP,QAAnBA,EAAGM,aAAO,EAAPA,EAASC,eAAOP,IAAAA,GAAAA,EAEhCQ,EAA0BC,IAAqCC,EAAAC,EAAAH,EAAA,GAAxDI,EAAKF,EAAA,GAAEG,EAAQH,EAAA,GAEhBI,EAAcC,EAAgB,MAC9BC,EAAsBD,IA2B5B,OA1BAC,EAAoBC,QAAUX,aAAO,EAAPA,EAASY,SAEvCC,GAAU,WACR,GAAKZ,EAAL,CAEA,IAAMa,EAAUnB,EAtFK,SAACA,GACxB,MAAsB,mBAAXA,EACFA,IAGLA,aAAkBoB,QACbpB,EAGFA,EAAOgB,OAChB,CA4E6BK,CAAiBrB,GAAUa,EAAYG,QAChE,GAAKG,EAAL,CAEA,IA7EoBG,EA6EdC,EAAW,IAAIC,sBACnB,SAAAC,GAAa,IAAAC,EAAXf,EAAWD,EAAAe,EAAA,GAAN,GACLb,EAASD,GACkBe,QAA3BA,EAAAX,EAAoBC,eAApBU,IAA2BA,GAA3BA,EAAAC,KAAAZ,EAA8BJ,EAC/B,GAAAiB,EAAAA,KAEIvB,GAAO,CAAA,EAAA,CACViB,MApFgBA,EAoFKjB,aAAO,EAAPA,EAASiB,KAnF/BA,EAEDA,aAAgBF,SAIhBE,aAAgBO,SAHXP,EAOFA,EAAKN,QAVMc,aAyFhB,OAFAP,EAASQ,QAAQZ,GAEV,WACLI,EAASS,aAhBG,CAHA,CAqBf,GAAE,CAAChC,EAAQK,aAAO,EAAPA,EAAS4B,WAAY5B,aAAAA,EAAAA,EAAS6B,UAAW7B,aAAAA,EAAAA,EAASiB,KAAMhB,IAEhEN,EAAe,CAAEW,MAAAA,EAAOwB,SAAUxB,UAAAA,EAAOyB,iBACtC,CAAEC,IAAKxB,EAAaF,MAAAA,EAAOwB,SAAUxB,UAAAA,EAAOyB,gBACrD"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
2
|
-
import{c as
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
|
+
import{c as r,_ as e}from"../../_rollupPluginBabelHelpers-1nJS3N_r.js";import{useState as n,useRef as t,useEffect as l}from"react";import{useEvent as u}from"../useEvent/useEvent.js";var a=function(){for(var a,o,c=arguments.length,i=new Array(c),v=0;v<c;v++)i[v]=arguments[v];var s=i[0],f=null!==(a="number"==typeof i[1]?i[1]:i[1].interval)&&void 0!==a?a:1e3,m="object"===r(i[1])?i[1]:i[2],p=null===(o=null==m?void 0:m.enabled)||void 0===o||o,I=n(null==p||p),b=e(I,2),d=b[0],j=b[1],g=t(),y=u(s);l((function(){if(p)return g.current=setInterval(y,f),function(){clearInterval(g.current)}}),[p,f]);return{isActive:d,pause:function(){j(!1),clearInterval(g.current)},resume:function(){f<=0||(j(!0),clearInterval(g.current),g.current=setInterval(y,f))}}};export{a as useInterval};
|
|
3
3
|
//# sourceMappingURL=useInterval.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInterval.js","sources":["../../../../src/hooks/useInterval/useInterval.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport { useEvent } from '../useEvent/useEvent';\n\n/** The use interval options */\nexport interface UseIntervalOptions {\n /** Start the interval immediately */\n enabled?: boolean;\n}\n\n/** The use interval return type */\nexport interface UseIntervalReturn {\n /** Is the interval active */\n isActive: boolean;\n /** Pause the interval */\n pause: () => void;\n /** Resume the interval */\n resume: () => void;\n}\n\ntype UseInterval = {\n (callback: () => void, interval?: number, options?: UseIntervalOptions): UseIntervalReturn;\n (callback: () => void, options?: UseIntervalOptions & { interval?: number }): UseIntervalReturn;\n};\n\n/**\n * @name useInterval\n * @description - Hook that makes and interval and returns controlling functions\n * @category Time\n *\n * @overload\n * @param {() => void} callback Any callback function\n * @param {number} [interval=1000] Time in milliseconds\n * @param {boolean} [options.immediate=true] Start the interval immediately\n * @returns {UseIntervalReturn}\n *\n * @example\n * const { isActive, pause, resume } = useInterval(() => console.log('inside interval'), 2500);\n *\n * @overload\n * @param {() => void} callback Any callback function\n * @param {number} [options.interval=1000] Time in milliseconds\n * @param {boolean} [options.immediate=true] Start the interval immediately\n *\n * @example\n * const { isActive, pause, resume } = useInterval(() => console.log('inside interval'), { interval: 2500 });\n */\nexport const useInterval = ((...params: any[]): UseIntervalReturn => {\n const callback = params[0] as () => void;\n const interval =\n ((typeof params[1] === 'number'\n ? params[1]\n : (params[1] as UseIntervalOptions & { interval?: number }).interval) as number) ?? 1000;\n const options =\n typeof params[1] === 'object'\n ? (params[1] as (UseIntervalOptions & { interval?: number }) | undefined)\n : (params[2] as UseIntervalOptions | undefined);\n const enabled = options?.enabled ?? true;\n\n const [isActive, setIsActive] = useState<boolean>(enabled ?? true);\n\n const intervalIdRef = useRef<ReturnType<typeof setInterval>>();\n const internalCallback = useEvent(callback);\n\n useEffect(() => {\n if (!enabled) return;\n\n intervalIdRef.current = setInterval(internalCallback, interval);\n return () => {\n clearInterval(intervalIdRef.current);\n };\n }, [enabled, interval]);\n\n const pause = () => {\n setIsActive(false);\n clearInterval(intervalIdRef.current);\n };\n\n const resume = () => {\n if (interval <= 0) return;\n setIsActive(true);\n clearInterval(intervalIdRef.current);\n intervalIdRef.current = setInterval(internalCallback, interval);\n };\n\n return {\n isActive,\n pause,\n resume\n };\n}) as UseInterval;\n"],"names":["useInterval","_ref","_options$enabled","_len","arguments","length","params","Array","_key","callback","interval","options","_typeof","enabled","_useState","useState","_useState2","_slicedToArray","isActive","setIsActive","intervalIdRef","useRef","internalCallback","useEvent","useEffect","current","setInterval","clearInterval","pause","resume"],"mappings":";
|
|
1
|
+
{"version":3,"file":"useInterval.js","sources":["../../../../src/hooks/useInterval/useInterval.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport { useEvent } from '../useEvent/useEvent';\n\n/** The use interval options */\nexport interface UseIntervalOptions {\n /** Start the interval immediately */\n enabled?: boolean;\n}\n\n/** The use interval return type */\nexport interface UseIntervalReturn {\n /** Is the interval active */\n isActive: boolean;\n /** Pause the interval */\n pause: () => void;\n /** Resume the interval */\n resume: () => void;\n}\n\ntype UseInterval = {\n (callback: () => void, interval?: number, options?: UseIntervalOptions): UseIntervalReturn;\n (callback: () => void, options?: UseIntervalOptions & { interval?: number }): UseIntervalReturn;\n};\n\n/**\n * @name useInterval\n * @description - Hook that makes and interval and returns controlling functions\n * @category Time\n *\n * @overload\n * @param {() => void} callback Any callback function\n * @param {number} [interval=1000] Time in milliseconds\n * @param {boolean} [options.immediate=true] Start the interval immediately\n * @returns {UseIntervalReturn}\n *\n * @example\n * const { isActive, pause, resume } = useInterval(() => console.log('inside interval'), 2500);\n *\n * @overload\n * @param {() => void} callback Any callback function\n * @param {number} [options.interval=1000] Time in milliseconds\n * @param {boolean} [options.immediate=true] Start the interval immediately\n *\n * @example\n * const { isActive, pause, resume } = useInterval(() => console.log('inside interval'), { interval: 2500 });\n */\nexport const useInterval = ((...params: any[]): UseIntervalReturn => {\n const callback = params[0] as () => void;\n const interval =\n ((typeof params[1] === 'number'\n ? params[1]\n : (params[1] as UseIntervalOptions & { interval?: number }).interval) as number) ?? 1000;\n const options =\n typeof params[1] === 'object'\n ? (params[1] as (UseIntervalOptions & { interval?: number }) | undefined)\n : (params[2] as UseIntervalOptions | undefined);\n const enabled = options?.enabled ?? true;\n\n const [isActive, setIsActive] = useState<boolean>(enabled ?? true);\n\n const intervalIdRef = useRef<ReturnType<typeof setInterval>>();\n const internalCallback = useEvent(callback);\n\n useEffect(() => {\n if (!enabled) return;\n\n intervalIdRef.current = setInterval(internalCallback, interval);\n return () => {\n clearInterval(intervalIdRef.current);\n };\n }, [enabled, interval]);\n\n const pause = () => {\n setIsActive(false);\n clearInterval(intervalIdRef.current);\n };\n\n const resume = () => {\n if (interval <= 0) return;\n setIsActive(true);\n clearInterval(intervalIdRef.current);\n intervalIdRef.current = setInterval(internalCallback, interval);\n };\n\n return {\n isActive,\n pause,\n resume\n };\n}) as UseInterval;\n"],"names":["useInterval","_ref","_options$enabled","_len","arguments","length","params","Array","_key","callback","interval","options","_typeof","enabled","_useState","useState","_useState2","_slicedToArray","isActive","setIsActive","intervalIdRef","useRef","internalCallback","useEvent","useEffect","current","setInterval","clearInterval","pause","resume"],"mappings":";0LA+CaA,EAAe,WAAyC,IAAA,IAAAC,EAAAC,EAAAC,EAAAC,UAAAC,OAArCC,EAAMC,IAAAA,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAANF,EAAME,GAAAJ,UAAAI,GACpC,IAAMC,EAAWH,EAAO,GAClBI,EAGkE,QAH1DT,EACW,iBAAdK,EAAO,GACZA,EAAO,GACNA,EAAO,GAAkDI,gBAAQ,IAAAT,EAAAA,EAAgB,IAClFU,EACiB,WAArBC,EAAON,EAAO,IACTA,EAAO,GACPA,EAAO,GACRO,EAA0BX,QAAnBA,EAAGS,aAAO,EAAPA,EAASE,eAAOX,IAAAA,GAAAA,EAEhCY,EAAgCC,EAAkBF,SAAAA,GAAgBG,EAAAC,EAAAH,EAAA,GAA3DI,EAAQF,EAAA,GAAEG,EAAWH,EAAA,GAEtBI,EAAgBC,IAChBC,EAAmBC,EAASd,GAElCe,GAAU,WACR,GAAKX,EAGL,OADAO,EAAcK,QAAUC,YAAYJ,EAAkBZ,GAC/C,WACLiB,cAAcP,EAAcK,SAEhC,GAAG,CAACZ,EAASH,IAcb,MAAO,CACLQ,SAAAA,EACAU,MAdY,WACZT,GAAY,GACZQ,cAAcP,EAAcK,UAa5BI,OAVa,WACTnB,GAAY,IAChBS,GAAY,GACZQ,cAAcP,EAAcK,SAC5BL,EAAcK,QAAUC,YAAYJ,EAAkBZ,KAQ1D"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
2
|
import{useRef as r}from"react";var t=function(){var t=r(!0);return!0===t.current?(t.current=!1,!0):t.current};export{t as useIsFirstRender};
|
|
3
3
|
//# sourceMappingURL=useIsFirstRender.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
2
|
import{useLayoutEffect as r,useEffect as t}from"react";import{isClient as e}from"../../utils/helpers/isClient.js";var i=e?r:t;export{i as useIsomorphicLayoutEffect};
|
|
3
3
|
//# sourceMappingURL=useIsomorphicLayoutEffect.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
2
|
-
import{_ as e}from"../../_rollupPluginBabelHelpers-
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
|
+
import{_ as e}from"../../_rollupPluginBabelHelpers-1nJS3N_r.js";import{useState as r}from"react";import{useEventListener as n}from"../useEventListener/useEventListener.js";import"../useEvent/useEvent.js";var i=function(i,t){var o,u,l=r(!1),s=e(l,2),a=s[0],v=s[1];return n(null!==(o=null==t?void 0:t.target)&&void 0!==o?o:window,"keydown",(function(e){(Array.isArray(i)?i.includes(e.key):e.key===i)&&v(!0)})),n(null!==(u=null==t?void 0:t.target)&&void 0!==u?u:window,"keyup",(function(e){(Array.isArray(i)?i.includes(e.key):e.key===i)&&v(!1)})),a};export{i as useKeyPress};
|
|
3
3
|
//# sourceMappingURL=useKeyPress.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useKeyPress.js","sources":["../../../../src/hooks/useKeyPress/useKeyPress.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport type { UseEventListenerTarget } from '../useEventListener/useEventListener';\nimport { useEventListener } from '../useEventListener/useEventListener';\n\n/** The key or keys to listen for */\nexport type UseKeyPressKey = string | string[];\n\n/** The use key press options type */\nexport type UseKeyPressOptions = {\n /** The target to attach the event listeners to */\n target?: UseEventListenerTarget;\n};\n\n/**\n * @name useKeyPress\n * @description - Hook that listens for key press events\n * @category Sensors\n *\n * @param {UseKeyPressKey} key The key or keys to listen for\n * @param {UseEventListenerTarget} [options.target=window] The target to attach the event listeners to\n * @returns {useKeyPressReturns} Return boolean type (`true` if the specified keys are currently pressed)\n *\n * @example\n * const isKeyPressed = useKeyPress('a');\n */\nexport const useKeyPress = (key: UseKeyPressKey, options?: UseKeyPressOptions) => {\n const [pressed, setPressed] = useState(false);\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (Array.isArray(key) ? key.includes(event.key) : event.key === key) setPressed(true);\n };\n\n const onKeyUp = (event: KeyboardEvent) => {\n if (Array.isArray(key) ? key.includes(event.key) : event.key === key) setPressed(false);\n };\n\n useEventListener(options?.target ?? window, 'keydown', onKeyDown);\n useEventListener(options?.target ?? window, 'keyup', onKeyUp);\n\n return pressed;\n};\n"],"names":["useKeyPress","key","options","_options$target","_options$target2","_useState","useState","_useState2","_slicedToArray","pressed","setPressed","useEventListener","target","window","event","Array","isArray","includes"],"mappings":";
|
|
1
|
+
{"version":3,"file":"useKeyPress.js","sources":["../../../../src/hooks/useKeyPress/useKeyPress.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport type { UseEventListenerTarget } from '../useEventListener/useEventListener';\nimport { useEventListener } from '../useEventListener/useEventListener';\n\n/** The key or keys to listen for */\nexport type UseKeyPressKey = string | string[];\n\n/** The use key press options type */\nexport type UseKeyPressOptions = {\n /** The target to attach the event listeners to */\n target?: UseEventListenerTarget;\n};\n\n/**\n * @name useKeyPress\n * @description - Hook that listens for key press events\n * @category Sensors\n *\n * @param {UseKeyPressKey} key The key or keys to listen for\n * @param {UseEventListenerTarget} [options.target=window] The target to attach the event listeners to\n * @returns {useKeyPressReturns} Return boolean type (`true` if the specified keys are currently pressed)\n *\n * @example\n * const isKeyPressed = useKeyPress('a');\n */\nexport const useKeyPress = (key: UseKeyPressKey, options?: UseKeyPressOptions) => {\n const [pressed, setPressed] = useState(false);\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (Array.isArray(key) ? key.includes(event.key) : event.key === key) setPressed(true);\n };\n\n const onKeyUp = (event: KeyboardEvent) => {\n if (Array.isArray(key) ? key.includes(event.key) : event.key === key) setPressed(false);\n };\n\n useEventListener(options?.target ?? window, 'keydown', onKeyDown);\n useEventListener(options?.target ?? window, 'keyup', onKeyUp);\n\n return pressed;\n};\n"],"names":["useKeyPress","key","options","_options$target","_options$target2","_useState","useState","_useState2","_slicedToArray","pressed","setPressed","useEventListener","target","window","event","Array","isArray","includes"],"mappings":";4MA0BO,IAAMA,EAAc,SAACC,EAAqBC,GAAiC,IAAAC,EAAAC,EAChFC,EAA8BC,GAAS,GAAMC,EAAAC,EAAAH,EAAA,GAAtCI,EAAOF,EAAA,GAAEG,EAAUH,EAAA,GAa1B,OAHAI,UAAgBR,EAACD,aAAO,EAAPA,EAASU,cAAM,IAAAT,EAAAA,EAAIU,OAAQ,WAR1B,SAACC,IACbC,MAAMC,QAAQf,GAAOA,EAAIgB,SAASH,EAAMb,KAAOa,EAAMb,MAAQA,IAAKS,GAAW,MAQnFC,UAAgBP,EAACF,aAAO,EAAPA,EAASU,cAAM,IAAAR,EAAAA,EAAIS,OAAQ,SAL5B,SAACC,IACXC,MAAMC,QAAQf,GAAOA,EAAIgB,SAASH,EAAMb,KAAOa,EAAMb,MAAQA,IAAKS,GAAW,MAM5ED,CACT"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
2
|
-
import{useEventListener as
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
|
+
import{useEventListener as n}from"../useEventListener/useEventListener.js";import"react";import"../useEvent/useEvent.js";var e=function(){var e=Array.isArray(arguments.length<=0?void 0:arguments[0])?arguments.length<=0?void 0:arguments[0]:[arguments.length<=0?void 0:arguments[0]],t=(arguments.length<=1?void 0:arguments[1])instanceof Function?null:arguments.length<=1?void 0:arguments[1],i=t?arguments.length<=2?void 0:arguments[2]:arguments.length<=1?void 0:arguments[1];n(null!=t?t:window,"keydown",(function(n){e.includes(n.key)&&i(n)}),t?arguments.length<=3?void 0:arguments[3]:arguments.length<=2?void 0:arguments[2])};export{e as useKeyPressEvent};
|
|
3
3
|
//# sourceMappingURL=useKeyPressEvent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useKeyPressEvent.js","sources":["../../../../src/hooks/useKeyPressEvent/useKeyPressEvent.ts"],"sourcesContent":["import type {\n UseEventListenerOptions,\n UseEventListenerTarget\n} from '../useEventListener/useEventListener';\nimport { useEventListener } from '../useEventListener/useEventListener';\n\nexport type UseKeyPressEventKey = string | string[];\n\nexport type UseKeyPressEvent = {\n (\n key: UseKeyPressEventKey,\n target: Window,\n listener: (this: Window, event: WindowEventMap['keydown']) => void,\n options?: UseEventListenerOptions\n ): void;\n\n (\n key: UseKeyPressEventKey,\n target: Document,\n listener: (this: Document, event: DocumentEventMap['keydown']) => void,\n options?: UseEventListenerOptions\n ): void;\n\n <Target extends UseEventListenerTarget>(\n key: UseKeyPressEventKey,\n target: Target,\n listener: (this: Target, event: HTMLElementEventMap['keydown']) => void,\n options?: UseEventListenerOptions\n ): void;\n\n <Target extends Element>(\n key: UseKeyPressEventKey,\n listener: (this: Target, event: HTMLElementEventMap['keydown']) => void,\n options?: UseEventListenerOptions,\n target?: never\n ): void;\n};\n\nexport const useKeyPressEvent = ((...params: any[]) => {\n const keys = (Array.isArray(params[0]) ? params[0] : [params[0]]) as UseKeyPressEventKey;\n const target = (params[1] instanceof Function ? null : params[1]) as\n | UseEventListenerTarget\n | undefined;\n const callback = (target ? params[2] : params[1]) as (...arg: any[]) => void;\n const options: UseEventListenerOptions | undefined = target ? params[3] : params[2];\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (keys.includes(event.key)) callback(event);\n };\n\n useEventListener(target ?? window, 'keydown', onKeyDown, options);\n}) as UseKeyPressEvent;\n"],"names":["useKeyPressEvent","keys","Array","isArray","arguments","length","undefined","target","Function","callback","useEventListener","window","event","includes","key"],"mappings":";
|
|
1
|
+
{"version":3,"file":"useKeyPressEvent.js","sources":["../../../../src/hooks/useKeyPressEvent/useKeyPressEvent.ts"],"sourcesContent":["import type {\n UseEventListenerOptions,\n UseEventListenerTarget\n} from '../useEventListener/useEventListener';\nimport { useEventListener } from '../useEventListener/useEventListener';\n\nexport type UseKeyPressEventKey = string | string[];\n\nexport type UseKeyPressEvent = {\n (\n key: UseKeyPressEventKey,\n target: Window,\n listener: (this: Window, event: WindowEventMap['keydown']) => void,\n options?: UseEventListenerOptions\n ): void;\n\n (\n key: UseKeyPressEventKey,\n target: Document,\n listener: (this: Document, event: DocumentEventMap['keydown']) => void,\n options?: UseEventListenerOptions\n ): void;\n\n <Target extends UseEventListenerTarget>(\n key: UseKeyPressEventKey,\n target: Target,\n listener: (this: Target, event: HTMLElementEventMap['keydown']) => void,\n options?: UseEventListenerOptions\n ): void;\n\n <Target extends Element>(\n key: UseKeyPressEventKey,\n listener: (this: Target, event: HTMLElementEventMap['keydown']) => void,\n options?: UseEventListenerOptions,\n target?: never\n ): void;\n};\n\nexport const useKeyPressEvent = ((...params: any[]) => {\n const keys = (Array.isArray(params[0]) ? params[0] : [params[0]]) as UseKeyPressEventKey;\n const target = (params[1] instanceof Function ? null : params[1]) as\n | UseEventListenerTarget\n | undefined;\n const callback = (target ? params[2] : params[1]) as (...arg: any[]) => void;\n const options: UseEventListenerOptions | undefined = target ? params[3] : params[2];\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (keys.includes(event.key)) callback(event);\n };\n\n useEventListener(target ?? window, 'keydown', onKeyDown, options);\n}) as UseKeyPressEvent;\n"],"names":["useKeyPressEvent","keys","Array","isArray","arguments","length","undefined","target","Function","callback","useEventListener","window","event","includes","key"],"mappings":";6HAsCaA,EAAoB,WAC/B,IAAMC,EAAQC,MAAMC,QAAOC,UAAAC,QAAAC,OAAAA,EAAAF,cAAWA,UAAAC,QAAA,OAAAC,EAAAF,UAAe,GAAA,CAAAA,UAAAC,QAAA,OAAAC,EAAAF,UAAmC,IAClFG,GAAUH,UAAAC,QAAA,OAAAC,EAAAF,UAAA,cAAqBI,SAAW,KAAIJ,UAAAC,QAAAC,OAAAA,EAAAF,UAEvC,GACPK,EAAYF,EAAMH,UAAAC,QAAAC,OAAAA,EAAAF,UAAA,GAAAA,UAAAC,eAAAC,EAAAF,UAAoD,GAO5EM,EAAiBH,QAAAA,EAAUI,OAAQ,WAJjB,SAACC,GACbX,EAAKY,SAASD,EAAME,MAAML,EAASG,KAHYL,EAAMH,UAAAC,QAAAC,OAAAA,EAAAF,UAAA,GAAAA,UAAAC,eAAAC,EAAAF,UAAwB,GAOrF"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
2
|
-
import{useEventListener as
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
|
+
import{useEventListener as n}from"../useEventListener/useEventListener.js";import"react";import"../useEvent/useEvent.js";var e=function(e){var o,l;n(null!==(o=null==e?void 0:e.target)&&void 0!==o?o:window,"keydown",(function(n){var o;return null==e||null===(o=e.onKeyDown)||void 0===o?void 0:o.call(e,n)})),n(null!==(l=null==e?void 0:e.target)&&void 0!==l?l:window,"keyup",(function(n){var o;return null==e||null===(o=e.onKeyUp)||void 0===o?void 0:o.call(e,n)}))};export{e as useKeyboard};
|
|
3
3
|
//# sourceMappingURL=useKeyboard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useKeyboard.js","sources":["../../../../src/hooks/useKeyboard/useKeyboard.ts"],"sourcesContent":["import type { UseEventListenerTarget } from '../useEventListener/useEventListener';\nimport { useEventListener } from '../useEventListener/useEventListener';\n\n/** The use key press options type */\nexport type UseKeyboardParams = {\n /** The target to attach the event listeners to */\n target?: UseEventListenerTarget;\n /** The callback function to be invoked on key down */\n onKeyDown?: (event: KeyboardEvent) => void;\n /** The callback function to be invoked on key up */\n onKeyUp?: (event: KeyboardEvent) => void;\n};\n\n/**\n * @name useKeyboard\n * @description - Hook that help to listen for keyboard events\n * @category Sensors\n *\n * @param {UseEventListenerTarget} [target=window] The target to attach the event listeners to\n * @param {(event: KeyboardEvent) => void} [onKeyDown] The callback function to be invoked on key down\n * @param {(event: KeyboardEvent) => void} [onKeyUp] The callback function to be invoked on key up\n *\n * @example\n * useKeyboard({ onKeyDown: () => console.log('key down'), onKeyUp: () => console.log('key up') })\n */\nexport const useKeyboard = (params?: UseKeyboardParams) => {\n const onKeyDown = (event: KeyboardEvent) => params?.onKeyDown?.(event);\n const onKeyUp = (event: KeyboardEvent) => params?.onKeyUp?.(event);\n\n useEventListener(params?.target ?? window, 'keydown', onKeyDown);\n useEventListener(params?.target ?? window, 'keyup', onKeyUp);\n};\n"],"names":["useKeyboard","params","_params$target","_params$target2","useEventListener","target","window","event","_params$onKeyDown","onKeyDown","call","_params$onKeyUp","onKeyUp"],"mappings":";
|
|
1
|
+
{"version":3,"file":"useKeyboard.js","sources":["../../../../src/hooks/useKeyboard/useKeyboard.ts"],"sourcesContent":["import type { UseEventListenerTarget } from '../useEventListener/useEventListener';\nimport { useEventListener } from '../useEventListener/useEventListener';\n\n/** The use key press options type */\nexport type UseKeyboardParams = {\n /** The target to attach the event listeners to */\n target?: UseEventListenerTarget;\n /** The callback function to be invoked on key down */\n onKeyDown?: (event: KeyboardEvent) => void;\n /** The callback function to be invoked on key up */\n onKeyUp?: (event: KeyboardEvent) => void;\n};\n\n/**\n * @name useKeyboard\n * @description - Hook that help to listen for keyboard events\n * @category Sensors\n *\n * @param {UseEventListenerTarget} [target=window] The target to attach the event listeners to\n * @param {(event: KeyboardEvent) => void} [onKeyDown] The callback function to be invoked on key down\n * @param {(event: KeyboardEvent) => void} [onKeyUp] The callback function to be invoked on key up\n *\n * @example\n * useKeyboard({ onKeyDown: () => console.log('key down'), onKeyUp: () => console.log('key up') })\n */\nexport const useKeyboard = (params?: UseKeyboardParams) => {\n const onKeyDown = (event: KeyboardEvent) => params?.onKeyDown?.(event);\n const onKeyUp = (event: KeyboardEvent) => params?.onKeyUp?.(event);\n\n useEventListener(params?.target ?? window, 'keydown', onKeyDown);\n useEventListener(params?.target ?? window, 'keyup', onKeyUp);\n};\n"],"names":["useKeyboard","params","_params$target","_params$target2","useEventListener","target","window","event","_params$onKeyDown","onKeyDown","call","_params$onKeyUp","onKeyUp"],"mappings":";6HAyBaA,EAAc,SAACC,GAA+B,IAAAC,EAAAC,EAIzDC,UAAgBF,EAACD,aAAM,EAANA,EAAQI,cAAM,IAAAH,EAAAA,EAAII,OAAQ,WAHzB,SAACC,GAAoB,IAAAC,EAAA,OAAKP,iBAAMO,EAANP,EAAQQ,iBAAS,IAAAD,OAAA,EAAjBA,EAAAE,KAAAT,EAAoBM,EAAM,IAItEH,UAAgBD,EAACF,aAAM,EAANA,EAAQI,cAAM,IAAAF,EAAAA,EAAIG,OAAQ,SAH3B,SAACC,GAAoB,IAAAI,EAAA,OAAKV,iBAAMU,EAANV,EAAQW,eAAO,IAAAD,OAAA,EAAfA,EAAAD,KAAAT,EAAkBM,EAAM,GAIpE"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
2
|
-
import{_ as e,a as o}from"../../_rollupPluginBabelHelpers-
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
|
+
import{_ as e,a as o}from"../../_rollupPluginBabelHelpers-1nJS3N_r.js";import{useState as t}from"react";import{useDidUpdate as n}from"../useDidUpdate/useDidUpdate.js";import{useEventListener as r}from"../useEventListener/useEventListener.js";import"../useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.js";import"../../utils/helpers/isClient.js";import"../useEvent/useEvent.js";var i=function(i){var u,s,l,c=null===(u=null==i?void 0:i.enabled)||void 0===u||u,d=t([]),f=e(d,2),p=f[0],a=f[1];return n((function(){a([])}),[c]),r(null!==(s=null==i?void 0:i.target)&&void 0!==s?s:window,"keydown",(function(e){c&&a((function(t){return t.some((function(o){return o.code===e.code}))?t:[].concat(o(t),[{key:e.key,code:e.code}])}))})),r(null!==(l=null==i?void 0:i.target)&&void 0!==l?l:window,"keyup",(function(e){c&&a((function(o){return o.filter((function(o){return o.code!==e.code}))}))})),p};export{i as useKeysPressed};
|
|
3
3
|
//# sourceMappingURL=useKeysPressed.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
2
|
-
import{_ as n,a as t}from"../../_rollupPluginBabelHelpers-
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
|
+
import{_ as n,a as t}from"../../_rollupPluginBabelHelpers-1nJS3N_r.js";import{useState as r}from"react";var e=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],u=r(e),c=n(u,2),o=c[0],i=c[1];return{value:o,set:function(n){return i(n)},push:function(n){return i((function(r){return[].concat(t(r),[n])}))},removeAt:function(n){return i((function(r){return[].concat(t(r.slice(0,n)),t(r.slice(n+1)))}))},insertAt:function(n,r){return i((function(e){return[].concat(t(e.slice(0,n)),[r],t(e.slice(n)))}))},updateAt:function(n,t){return i((function(r){return r.map((function(r,e){return e===n?t:r}))}))},clear:function(){return i([])},reset:function(){return i(e)}}};export{e as useList};
|
|
3
3
|
//# sourceMappingURL=useList.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
2
|
-
import{b as o}from"../../_rollupPluginBabelHelpers-
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
|
+
import{b as o}from"../../_rollupPluginBabelHelpers-1nJS3N_r.js";import{useStorage as r}from"../useStorage/useStorage.js";import"react";import"../../utils/helpers/isClient.js";import"../useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.js";var e=function(e,t,i){return r(e,o({initialValue:t,storage:window.localStorage},i))};export{e as useLocalStorage};
|
|
3
3
|
//# sourceMappingURL=useLocalStorage.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
2
|
-
import{a as o}from"../../_rollupPluginBabelHelpers-
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
|
+
import{a as o}from"../../_rollupPluginBabelHelpers-1nJS3N_r.js";import{useEffect as t}from"react";import{useDidUpdate as e}from"../useDidUpdate/useDidUpdate.js";import"../useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.js";import"../../utils/helpers/isClient.js";var n=function(n,c){t((function(){var t;return(t=console).log.apply(t,["".concat(n," mounted")].concat(o(c))),function(){return console.log("".concat(n," unmounted"))}}),[]),e((function(){var t;(t=console).log.apply(t,["".concat(n," updated")].concat(o(c)))}),c)};export{n as useLogger};
|
|
3
3
|
//# sourceMappingURL=useLogger.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
2
|
-
import{_ as n}from"../../_rollupPluginBabelHelpers-
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
|
+
import{_ as n}from"../../_rollupPluginBabelHelpers-1nJS3N_r.js";import{useState as l,useRef as e}from"react";import{useEventListener as t}from"../useEventListener/useEventListener.js";import"../useEvent/useEvent.js";var u=function(){var u=(arguments.length<=0?void 0:arguments[0])instanceof Function||!("current"in(arguments.length<=0?void 0:arguments[0]))||arguments.length<=0?void 0:arguments[0],o=u?arguments.length<=1?void 0:arguments[1]:arguments.length<=0?void 0:arguments[0],r=u?arguments.length<=2?void 0:arguments[2]:arguments.length<=1?void 0:arguments[1],i=l(!1),c=n(i,2),v=c[0],s=c[1],a=e(null),d=e(),h=e(!1),m=function(n){var l,e;null==r||null===(l=r.onStart)||void 0===l||l.call(r,n),h.current=!0,d.current=setTimeout((function(){o(n),s(!0)}),null!==(e=null==r?void 0:r.threshold)&&void 0!==e?e:400)},f=function(n){var l;if(v)null==r||null===(l=r.onFinish)||void 0===l||l.call(r,n);else if(h.current){var e;null==r||null===(e=r.onCancel)||void 0===e||e.call(r,n)}s(!1),h.current=!1,d.current&&clearTimeout(d.current)};return t(null!=u?u:a,"mousedown",m),t(null!=u?u:a,"touchstart",m),t(null!=u?u:a,"mouseup",f),t(null!=u?u:a,"touchend",f),u?v:[a,v]};export{u as useLongPress};
|
|
3
3
|
//# sourceMappingURL=useLongPress.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLongPress.js","sources":["../../../../src/hooks/useLongPress/useLongPress.ts"],"sourcesContent":["import type { RefObject } from 'react';\nimport { useRef, useState } from 'react';\n\nimport { useEventListener } from '../useEventListener/useEventListener';\n\n// * The use long press target type */\nexport type UseLongPressTarget = RefObject<Element | null> | (() => Element) | Element;\n\n// * The use long press options type */\ninterface UseLongPressOptions {\n // * The threshold time in milliseconds\n threshold?: number;\n // * The callback function to be invoked on long press start\n onStart?: (event: Event) => void;\n // * The callback function to be invoked on long press end\n onFinish?: (event: Event) => void;\n // * The callback function to be invoked on long press cancel\n onCancel?: (event: Event) => void;\n}\n\n// * The use long press return type */\nexport type UseLongPressReturn<Target extends UseLongPressTarget> = [RefObject<Target>, boolean];\n\nexport type UseLongPress = {\n <Target extends UseLongPressTarget>(\n target: Target,\n callback: (event: Event) => void,\n options?: UseLongPressOptions\n ): boolean;\n\n <Target extends UseLongPressTarget>(\n callback: (event: Event) => void,\n options?: UseLongPressOptions,\n target?: never\n ): UseLongPressReturn<Target>;\n};\n\nconst DEFAULT_THRESHOLD_TIME = 400;\n\n/**\n * @name useLongPress\n * @description - Hook that defines the logic when long pressing an element\n * @category Sensors\n *\n * @overload\n * @template Target The target element\n * @param {Target} target The target element to be long pressed\n * @param {(event: Event) => void} callback The callback function to be invoked on long press\n * @param {number} [options.threshold=400] The threshold time in milliseconds\n * @param {(event: Event) => void} [options.onStart] The callback function to be invoked on long press start\n * @param {(event: Event) => void} [options.onFinish] The callback function to be invoked on long press finish\n * @param {(event: Event) => void} [options.onCancel] The callback function to be invoked on long press cancel\n * @returns {void}\n *\n * @example\n * const longPressing = useLongPress(ref, () => console.log('callback'));\n *\n * @overload\n * @template Target The target element\n * @param {Target} target The target element to be long pressed\n * @param {(event: Event) => void} callback The callback function to be invoked on long press\n * @param {number} [options.threshold=400] The threshold time in milliseconds\n * @param {(event: Event) => void} [options.onStart] The callback function to be invoked on long press start\n * @param {(event: Event) => void} [options.onFinish] The callback function to be invoked on long press finish\n * @param {(event: Event) => void} [options.onCancel] The callback function to be invoked on long press cancel\n * @returns {UseLongPressReturn<Target>} The ref of the target element\n *\n * @example\n * const [ref, longPressing] = useLongPress(() => console.log('callback'));\n */\nexport const useLongPress = ((...params: any[]) => {\n const target = (\n params[0] instanceof Function || !('current' in params[0]) ? undefined : params[0]\n ) as UseLongPressTarget | undefined;\n const callback = (target ? params[1] : params[0]) as (event: Event) => void;\n const options = (target ? params[2] : params[1]) as UseLongPressOptions | undefined;\n\n const [isLongPressActive, setIsLongPressActive] = useState(false);\n const internalRef = useRef<Element>(null);\n const timeoutIdRef = useRef<ReturnType<typeof setTimeout>>();\n const isPressed = useRef(false);\n\n const start = (event: Event) => {\n options?.onStart?.(event);\n\n isPressed.current = true;\n timeoutIdRef.current = setTimeout(() => {\n callback(event);\n setIsLongPressActive(true);\n }, options?.threshold ?? DEFAULT_THRESHOLD_TIME);\n };\n\n const cancel = (event: Event) => {\n if (isLongPressActive) {\n options?.onFinish?.(event);\n } else if (isPressed.current) {\n options?.onCancel?.(event);\n }\n\n setIsLongPressActive(false);\n isPressed.current = false;\n\n if (timeoutIdRef.current) clearTimeout(timeoutIdRef.current);\n };\n\n useEventListener(target ?? internalRef, 'mousedown', start);\n useEventListener(target ?? internalRef, 'touchstart', start);\n useEventListener(target ?? internalRef, 'mouseup', cancel);\n useEventListener(target ?? internalRef, 'touchend', cancel);\n\n if (target) return isLongPressActive;\n return [internalRef, isLongPressActive];\n}) as UseLongPress;\n"],"names":["useLongPress","target","arguments","length","undefined","Function","callback","options","_useState","useState","_useState2","_slicedToArray","isLongPressActive","setIsLongPressActive","internalRef","useRef","timeoutIdRef","isPressed","start","event","_options$onStart","_options$threshold","onStart","call","current","setTimeout","threshold","cancel","_options$onFinish","onFinish","_options$onCancel","onCancel","clearTimeout","useEventListener"],"mappings":";
|
|
1
|
+
{"version":3,"file":"useLongPress.js","sources":["../../../../src/hooks/useLongPress/useLongPress.ts"],"sourcesContent":["import type { RefObject } from 'react';\nimport { useRef, useState } from 'react';\n\nimport { useEventListener } from '../useEventListener/useEventListener';\n\n// * The use long press target type */\nexport type UseLongPressTarget = RefObject<Element | null> | (() => Element) | Element;\n\n// * The use long press options type */\ninterface UseLongPressOptions {\n // * The threshold time in milliseconds\n threshold?: number;\n // * The callback function to be invoked on long press start\n onStart?: (event: Event) => void;\n // * The callback function to be invoked on long press end\n onFinish?: (event: Event) => void;\n // * The callback function to be invoked on long press cancel\n onCancel?: (event: Event) => void;\n}\n\n// * The use long press return type */\nexport type UseLongPressReturn<Target extends UseLongPressTarget> = [RefObject<Target>, boolean];\n\nexport type UseLongPress = {\n <Target extends UseLongPressTarget>(\n target: Target,\n callback: (event: Event) => void,\n options?: UseLongPressOptions\n ): boolean;\n\n <Target extends UseLongPressTarget>(\n callback: (event: Event) => void,\n options?: UseLongPressOptions,\n target?: never\n ): UseLongPressReturn<Target>;\n};\n\nconst DEFAULT_THRESHOLD_TIME = 400;\n\n/**\n * @name useLongPress\n * @description - Hook that defines the logic when long pressing an element\n * @category Sensors\n *\n * @overload\n * @template Target The target element\n * @param {Target} target The target element to be long pressed\n * @param {(event: Event) => void} callback The callback function to be invoked on long press\n * @param {number} [options.threshold=400] The threshold time in milliseconds\n * @param {(event: Event) => void} [options.onStart] The callback function to be invoked on long press start\n * @param {(event: Event) => void} [options.onFinish] The callback function to be invoked on long press finish\n * @param {(event: Event) => void} [options.onCancel] The callback function to be invoked on long press cancel\n * @returns {void}\n *\n * @example\n * const longPressing = useLongPress(ref, () => console.log('callback'));\n *\n * @overload\n * @template Target The target element\n * @param {Target} target The target element to be long pressed\n * @param {(event: Event) => void} callback The callback function to be invoked on long press\n * @param {number} [options.threshold=400] The threshold time in milliseconds\n * @param {(event: Event) => void} [options.onStart] The callback function to be invoked on long press start\n * @param {(event: Event) => void} [options.onFinish] The callback function to be invoked on long press finish\n * @param {(event: Event) => void} [options.onCancel] The callback function to be invoked on long press cancel\n * @returns {UseLongPressReturn<Target>} The ref of the target element\n *\n * @example\n * const [ref, longPressing] = useLongPress(() => console.log('callback'));\n */\nexport const useLongPress = ((...params: any[]) => {\n const target = (\n params[0] instanceof Function || !('current' in params[0]) ? undefined : params[0]\n ) as UseLongPressTarget | undefined;\n const callback = (target ? params[1] : params[0]) as (event: Event) => void;\n const options = (target ? params[2] : params[1]) as UseLongPressOptions | undefined;\n\n const [isLongPressActive, setIsLongPressActive] = useState(false);\n const internalRef = useRef<Element>(null);\n const timeoutIdRef = useRef<ReturnType<typeof setTimeout>>();\n const isPressed = useRef(false);\n\n const start = (event: Event) => {\n options?.onStart?.(event);\n\n isPressed.current = true;\n timeoutIdRef.current = setTimeout(() => {\n callback(event);\n setIsLongPressActive(true);\n }, options?.threshold ?? DEFAULT_THRESHOLD_TIME);\n };\n\n const cancel = (event: Event) => {\n if (isLongPressActive) {\n options?.onFinish?.(event);\n } else if (isPressed.current) {\n options?.onCancel?.(event);\n }\n\n setIsLongPressActive(false);\n isPressed.current = false;\n\n if (timeoutIdRef.current) clearTimeout(timeoutIdRef.current);\n };\n\n useEventListener(target ?? internalRef, 'mousedown', start);\n useEventListener(target ?? internalRef, 'touchstart', start);\n useEventListener(target ?? internalRef, 'mouseup', cancel);\n useEventListener(target ?? internalRef, 'touchend', cancel);\n\n if (target) return isLongPressActive;\n return [internalRef, isLongPressActive];\n}) as UseLongPress;\n"],"names":["useLongPress","target","arguments","length","undefined","Function","callback","options","_useState","useState","_useState2","_slicedToArray","isLongPressActive","setIsLongPressActive","internalRef","useRef","timeoutIdRef","isPressed","start","event","_options$onStart","_options$threshold","onStart","call","current","setTimeout","threshold","cancel","_options$onFinish","onFinish","_options$onCancel","onCancel","clearTimeout","useEventListener"],"mappings":";wNAqCA,IAiCaA,EAAgB,WAC3B,IAAMC,GACJC,UAAAC,QAAA,OAAAC,EAAAF,UAAqBG,cAAAA,YAAc,YAASH,UAAAC,eAAAC,EAAAF,UAAA,MAA0BA,UAAAC,QAAA,OAATC,EAASF,UACrC,GAC7BI,EAAYL,EAAMC,UAAAC,QAAAC,OAAAA,EAAAF,UAAA,GAAAA,UAAAC,eAAAC,EAAAF,UAAmD,GACrEK,EAAWN,EAAMC,UAAAC,QAAAC,OAAAA,EAAAF,UAAA,GAAAA,UAAAC,eAAAC,EAAAF,UAA4D,GAEnFM,EAAkDC,GAAS,GAAMC,EAAAC,EAAAH,EAAA,GAA1DI,EAAiBF,EAAA,GAAEG,EAAoBH,EAAA,GACxCI,EAAcC,EAAgB,MAC9BC,EAAeD,IACfE,EAAYF,GAAO,GAEnBG,EAAQ,SAACC,GAAiB,IAAAC,EAAAC,EAC9Bd,SAAgB,QAATa,EAAPb,EAASe,eAAO,IAAAF,GAAhBA,EAAAG,KAAAhB,EAAmBY,GAEnBF,EAAUO,SAAU,EACpBR,EAAaQ,QAAUC,YAAW,WAChCnB,EAASa,GACTN,GAAqB,EACvB,WAACQ,EAAEd,aAAAA,EAAAA,EAASmB,iBAAS,IAAAL,EAAAA,EApDM,MAuDvBM,EAAS,SAACR,GACS,IAAAS,EAAvB,GAAIhB,EACFL,SAAiB,QAAVqB,EAAPrB,EAASsB,gBAAQ,IAAAD,GAAjBA,EAAAL,KAAAhB,EAAoBY,QACf,GAAIF,EAAUO,QAAS,CAAA,IAAAM,EAC5BvB,SAAiB,QAAVuB,EAAPvB,EAASwB,gBAAQ,IAAAD,GAAjBA,EAAAP,KAAAhB,EAAoBY,EACtB,CAEAN,GAAqB,GACrBI,EAAUO,SAAU,EAEhBR,EAAaQ,SAASQ,aAAahB,EAAaQ,UAQtD,OALAS,EAAiBhC,QAAAA,EAAUa,EAAa,YAAaI,GACrDe,EAAiBhC,QAAAA,EAAUa,EAAa,aAAcI,GACtDe,EAAiBhC,QAAAA,EAAUa,EAAa,UAAWa,GACnDM,EAAiBhC,QAAAA,EAAUa,EAAa,WAAYa,GAEhD1B,EAAeW,EACZ,CAACE,EAAaF,EACvB"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
2
|
-
import{_ as e}from"../../_rollupPluginBabelHelpers-
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
|
+
import{_ as e}from"../../_rollupPluginBabelHelpers-1nJS3N_r.js";import{useState as r}from"react";var n=function(n){var t=r(new Map(n)),u=e(t,2),a=u[0],o=u[1];return{value:a,size:a.size,set:function(e,r){return o((function(n){return new Map(n).set(e,r)}))},has:function(e){return a.has(e)},remove:function(e){return o((function(r){if(!r.has(e))return r;var n=new Map(r);return n.delete(e),n}))},clear:function(){return o(new Map)},reset:function(){return o(new Map(n))}}};export{n as useMap};
|
|
3
3
|
//# sourceMappingURL=useMap.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
2
|
-
import{_ as t,b as e}from"../../_rollupPluginBabelHelpers-
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
|
+
import{_ as t,b as e}from"../../_rollupPluginBabelHelpers-1nJS3N_r.js";import{useRef as o,useState as r}from"react";import{useIsomorphicLayoutEffect as n}from"../useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.js";import"../../utils/helpers/isClient.js";var i=function(i){var f=o(null),c=r({x:0,y:0,width:0,height:0,top:0,left:0,bottom:0,right:0}),u=t(c,2),s=u[0],l=u[1];return n((function(){var e=i?function(t){return"function"==typeof t?t():t instanceof Element?t:t.current}(i):f.current;if(console.log("@element",f.current),e){var o=new window.ResizeObserver((function(e){var o=t(e,1)[0];if(o){var r=o.contentRect,n=r.x,i=r.y,f=r.width,c=r.height,u=r.top,s=r.left,h=r.bottom,m=r.right;l({x:n,y:i,width:f,height:c,top:u,left:s,bottom:h,right:m})}}));return o.observe(e),function(){o.disconnect()}}}),[i]),i?s:e({ref:f},s)};export{i as useMeasure};
|
|
3
3
|
//# sourceMappingURL=useMeasure.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
2
|
import{useCallback as n,useSyncExternalStore as e}from"react";var t=function(){return!1},r=function(r){var a=n((function(n){var e=window.matchMedia(r);return e.addEventListener("change",n),function(){e.removeEventListener("change",n)}}),[r]);return e(a,(function(){return window.matchMedia(r).matches}),t)};export{r as useMediaQuery};
|
|
3
3
|
//# sourceMappingURL=useMediaQuery.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
2
|
-
import{_ as e}from"../../_rollupPluginBabelHelpers-
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
|
+
import{_ as e}from"../../_rollupPluginBabelHelpers-1nJS3N_r.js";import{useState as r}from"react";import{isClient as t}from"../../utils/helpers/isClient.js";import{useInterval as o}from"../useInterval/useInterval.js";import"../useEvent/useEvent.js";var i=function(){var i=!!t&&"memory"in performance,m=r({jsHeapSizeLimit:0,totalJSHeapSize:0,usedJSHeapSize:0}),n=e(m,2),p=n[0],s=n[1];return o((function(){return s(performance.memory)}),1e3,{enabled:i}),{supported:i,value:p}};export{i as useMemory};
|
|
3
3
|
//# sourceMappingURL=useMemory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMemory.js","sources":["../../../../src/hooks/useMemory/useMemory.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { isClient } from '@/utils/helpers';\n\nimport { useInterval } from '../useInterval/useInterval';\n\ndeclare global {\n interface Performance {\n memory: {\n readonly jsHeapSizeLimit: number;\n readonly totalJSHeapSize: number;\n readonly usedJSHeapSize: number;\n };\n }\n}\n\nexport interface UseMemoryReturn {\n supported: boolean;\n value: Performance['memory'];\n}\n\n/**\n * @name useMemory\n * @description - Hook that gives you current memory usage\n * @category Browser\n *\n * @returns {UseMemoryReturn} An object containing the current memory usage\n *\n * @example\n * const { supported, value } = useMemory();\n */\nexport const useMemory = (): UseMemoryReturn => {\n const supported = isClient ? 'memory' in performance : false;\n const [value, setValue] = useState<Performance['memory']>({\n jsHeapSizeLimit: 0,\n totalJSHeapSize: 0,\n usedJSHeapSize: 0\n });\n\n useInterval(() => setValue(performance.memory), 1000, { enabled: supported });\n\n return { supported, value };\n};\n"],"names":["useMemory","supported","isClient","performance","_useState","useState","jsHeapSizeLimit","totalJSHeapSize","usedJSHeapSize","_useState2","_slicedToArray","value","setValue","useInterval","memory","enabled"],"mappings":";
|
|
1
|
+
{"version":3,"file":"useMemory.js","sources":["../../../../src/hooks/useMemory/useMemory.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { isClient } from '@/utils/helpers';\n\nimport { useInterval } from '../useInterval/useInterval';\n\ndeclare global {\n interface Performance {\n memory: {\n readonly jsHeapSizeLimit: number;\n readonly totalJSHeapSize: number;\n readonly usedJSHeapSize: number;\n };\n }\n}\n\nexport interface UseMemoryReturn {\n supported: boolean;\n value: Performance['memory'];\n}\n\n/**\n * @name useMemory\n * @description - Hook that gives you current memory usage\n * @category Browser\n *\n * @returns {UseMemoryReturn} An object containing the current memory usage\n *\n * @example\n * const { supported, value } = useMemory();\n */\nexport const useMemory = (): UseMemoryReturn => {\n const supported = isClient ? 'memory' in performance : false;\n const [value, setValue] = useState<Performance['memory']>({\n jsHeapSizeLimit: 0,\n totalJSHeapSize: 0,\n usedJSHeapSize: 0\n });\n\n useInterval(() => setValue(performance.memory), 1000, { enabled: supported });\n\n return { supported, value };\n};\n"],"names":["useMemory","supported","isClient","performance","_useState","useState","jsHeapSizeLimit","totalJSHeapSize","usedJSHeapSize","_useState2","_slicedToArray","value","setValue","useInterval","memory","enabled"],"mappings":";4PA+BaA,EAAY,WACvB,IAAMC,IAAYC,GAAW,WAAYC,YACzCC,EAA0BC,EAAgC,CACxDC,gBAAiB,EACjBC,gBAAiB,EACjBC,eAAgB,IAChBC,EAAAC,EAAAN,EAAA,GAJKO,EAAKF,EAAA,GAAEG,EAAQH,EAAA,GAQtB,OAFAI,GAAY,WAAA,OAAMD,EAAST,YAAYW,OAAO,GAAE,IAAM,CAAEC,QAASd,IAE1D,CAAEA,UAAAA,EAAWU,MAAAA,EACtB"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
2
|
-
import{_ as e,b as t}from"../../_rollupPluginBabelHelpers-
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
|
+
import{_ as e,b as t}from"../../_rollupPluginBabelHelpers-1nJS3N_r.js";import{useState as n,useRef as o}from"react";import{useIsomorphicLayoutEffect as r}from"../useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.js";import"../../utils/helpers/isClient.js";var i=function(){for(var i=arguments.length,l=new Array(i),u=0;u<i;u++)l[u]=arguments[u];var m=l[0],s=n({x:0,y:0,elementX:0,elementY:0,elementPositionX:0,elementPositionY:0}),c=e(s,2),f=c[0],a=c[1],p=o(null);return r((function(){var e=function(e){var n=m?function(e){return"function"==typeof e?e():e instanceof Element?e:e.current}(m):p.current;if(n){var o={x:e.pageX,y:e.pageY},r=n.getBoundingClientRect(),i=r.left,l=r.top,u=i+window.scrollX,s=l+window.scrollY,c=e.pageX-u,f=e.pageY-s;o.elementX=c,o.elementY=f,o.elementPositionX=u,o.elementPositionY=s,a((function(e){return t(t({},e),o)}))}};return document.addEventListener("mousemove",e),function(){document.removeEventListener("mousemove",e)}}),[]),m?f:t(t({},f),{},{ref:p})};export{i as useMouse};
|
|
3
3
|
//# sourceMappingURL=useMouse.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
2
|
-
import{_ as r,d as n,e as t}from"../../_rollupPluginBabelHelpers-
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
|
+
import{_ as r,d as n,e as t}from"../../_rollupPluginBabelHelpers-1nJS3N_r.js";import{useRef as e,useState as u}from"react";import{getRetry as l}from"../../utils/helpers/getRetry.js";import"../../utils/helpers/isClient.js";var o=function(o,i){var c=e(null!=i&&i.retry?l(i.retry):0),s=u(!1),a=r(s,2),p=a[0],f=a[1],m=u(!1),v=r(m,2),y=v[0],d=v[1],h=u(!1),g=r(h,2),j=g[0],b=g[1],w=u(null),x=r(w,2),E=x[0],S=x[1],_=u(null),k=r(_,2),A=k[0],B=k[1],C=function r(n){return f(!0),o(n).then((function(r){var n;return null==i||null===(n=i.onSuccess)||void 0===n||n.call(i,r),B(r),b(!0),f(!1),S(null),d(!1),r})).catch((function(t){var e;if(c.current>0)return c.current-=1,r(n);null==i||null===(e=i.onError)||void 0===e||e.call(i,t),B(null),b(!1),f(!1),S(t),d(!0),c.current=null!=i&&i.retry?l(i.retry):0}))},H=function(){var r=n(t().mark((function r(n){return t().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",C(n));case 1:case"end":return r.stop()}}),r)})));return function(n){return r.apply(this,arguments)}}();return{data:A,error:E,mutate:function(r){C(r)},mutateAsync:H,isLoading:p,isError:y,isSuccess:j}};export{o as useMutation};
|
|
3
3
|
//# sourceMappingURL=useMutation.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
2
|
import{useRef as r,useEffect as n}from"react";function t(t,e,u){var c=r(),o=r(null);return n((function(){var r="function"==typeof u?u():u;return(r||o.current)&&(c.current=new MutationObserver(t),c.current.observe(r||o.current,e)),function(){var r;null===(r=c.current)||void 0===r||r.disconnect()}}),[t,e]),o}export{t as useMutationObserver};
|
|
3
3
|
//# sourceMappingURL=useMutationObserver.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
2
|
-
import{_ as n}from"../../_rollupPluginBabelHelpers-
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
|
+
import{_ as n}from"../../_rollupPluginBabelHelpers-1nJS3N_r.js";import{useState as e,useEffect as i}from"react";import{isClient as o}from"../../utils/helpers/isClient.js";var t=function(){var n,e,i;return(null===(n=navigator)||void 0===n?void 0:n.connection)||(null===(e=navigator)||void 0===e?void 0:e.mozConnection)||(null===(i=navigator)||void 0===i?void 0:i.webkitConnection)},l=function(){var l=e((function(){if(!o)return{online:!1,type:void 0,effectiveType:void 0,saveData:!1,downlink:0,downlinkMax:0,rtt:0};var n=navigator.onLine,e=t();return{online:n,downlink:null==e?void 0:e.downlink,downlinkMax:null==e?void 0:e.downlinkMax,effectiveType:null==e?void 0:e.effectiveType,rtt:null==e?void 0:e.rtt,saveData:null==e?void 0:e.saveData,type:null==e?void 0:e.type}})),v=n(l,2),a=v[0],r=v[1];return i((function(){var n=function(){var n=navigator.onLine,e=t();r({online:n,downlink:null==e?void 0:e.downlink,downlinkMax:null==e?void 0:e.downlinkMax,effectiveType:null==e?void 0:e.effectiveType,rtt:null==e?void 0:e.rtt,saveData:null==e?void 0:e.saveData,type:null==e?void 0:e.type})};window.addEventListener("online",n,{passive:!0}),window.addEventListener("offline",n,{passive:!0});var e=t();return e&&e.addEventListener("change",n,{passive:!0}),function(){window.removeEventListener("online",n),window.removeEventListener("offline",n),e&&e.removeEventListener("change",n)}})),a};export{t as getConnection,l as useNetwork};
|
|
3
3
|
//# sourceMappingURL=useNetwork.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
2
|
import{useSyncExternalStore as n}from"react";var e=function(){return navigator.onLine},t=function(){return!1},i=function(n){return window.addEventListener("online",n),window.addEventListener("offline",n),function(){window.removeEventListener("online",n),window.removeEventListener("offline",n)}},o=function(){return n(i,e,t)};export{o as useOnline};
|
|
3
3
|
//# sourceMappingURL=useOnline.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
2
|
import{useRef as n}from"react";var i=function(){if("undefined"==typeof window)return"undetermined";var n=window.navigator.userAgent;return/(Macintosh)|(MacIntel)|(MacPPC)|(Mac68K)/i.test(n)?"macos":/(iPhone)|(iPad)|(iPod)/i.test(n)?"ios":/(Win32)|(Win64)|(Windows)|(WinCE)/i.test(n)?"windows":/Android/i.test(n)?"android":/Linux/i.test(n)?"linux":"undetermined"},t=function(){return n(i()).current};export{i as getOperatingSystem,t as useOperatingSystem};
|
|
3
3
|
//# sourceMappingURL=useOperatingSystem.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
2
|
-
import{_ as e}from"../../_rollupPluginBabelHelpers-
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
|
+
import{_ as e}from"../../_rollupPluginBabelHelpers-1nJS3N_r.js";import{useState as n}from"react";import{useIsomorphicLayoutEffect as r}from"../useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.js";import"../../utils/helpers/isClient.js";var o=function(){var o=n({angle:0,type:"landscape-primary"}),t=e(o,2),i=t[0],a=t[1];return r((function(){var e,n=function(){var e=window.screen.orientation,n=e.angle,r=e.type;a({angle:n,type:r})};return null===(e=window.screen.orientation)||void 0===e||e.addEventListener("change",n),function(){var e;return null===(e=window.screen.orientation)||void 0===e?void 0:e.removeEventListener("change",n)}}),[]),i};export{o as useOrientation};
|
|
3
3
|
//# sourceMappingURL=useOrientation.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
2
|
-
import{_ as e}from"../../_rollupPluginBabelHelpers-
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
|
+
import{_ as e}from"../../_rollupPluginBabelHelpers-1nJS3N_r.js";import{useState as n,useEffect as t}from"react";import{useEvent as r}from"../useEvent/useEvent.js";var o=function(o){var u=n(!1),s=e(u,2),m=s[0],i=s[1],v=r((function(){if(m)return i(!1);null==o||o(),i(!0)}));return t((function(){return document.addEventListener("mouseleave",v,{passive:!0}),document.addEventListener("mouseenter",v,{passive:!0}),function(){document.removeEventListener("mouseenter",v),document.removeEventListener("mouseleave",v)}}),[]),m};export{o as usePageLeave};
|
|
3
3
|
//# sourceMappingURL=usePageLeave.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePageLeave.js","sources":["../../../../src/hooks/usePageLeave/usePageLeave.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { useEvent } from '../useEvent/useEvent';\n\n/**\n * @name usePageLeave\n * @description - Hook what calls given function when mouse leaves the page\n * @category Sensors\n *\n * @param {() => void} [callback] The callback function what calls then mouse leaves the page\n * @returns {boolean} A boolean which determines if the mouse left the page\n *\n * @example\n * const isLeft = usePageLeave(() => console.log('on leave'))\n */\nexport const usePageLeave = (callback?: () => void) => {\n const [isLeft, setIsLeft] = useState(false);\n\n const onMouse = useEvent(() => {\n if (isLeft) return setIsLeft(false);\n callback?.();\n setIsLeft(true);\n });\n\n useEffect(() => {\n document.addEventListener('mouseleave', onMouse, { passive: true });\n document.addEventListener('mouseenter', onMouse, { passive: true });\n\n return () => {\n document.removeEventListener('mouseenter', onMouse);\n document.removeEventListener('mouseleave', onMouse);\n };\n }, []);\n\n return isLeft;\n};\n"],"names":["usePageLeave","callback","_useState","useState","_useState2","_slicedToArray","isLeft","setIsLeft","onMouse","useEvent","useEffect","document","addEventListener","passive","removeEventListener"],"mappings":";
|
|
1
|
+
{"version":3,"file":"usePageLeave.js","sources":["../../../../src/hooks/usePageLeave/usePageLeave.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { useEvent } from '../useEvent/useEvent';\n\n/**\n * @name usePageLeave\n * @description - Hook what calls given function when mouse leaves the page\n * @category Sensors\n *\n * @param {() => void} [callback] The callback function what calls then mouse leaves the page\n * @returns {boolean} A boolean which determines if the mouse left the page\n *\n * @example\n * const isLeft = usePageLeave(() => console.log('on leave'))\n */\nexport const usePageLeave = (callback?: () => void) => {\n const [isLeft, setIsLeft] = useState(false);\n\n const onMouse = useEvent(() => {\n if (isLeft) return setIsLeft(false);\n callback?.();\n setIsLeft(true);\n });\n\n useEffect(() => {\n document.addEventListener('mouseleave', onMouse, { passive: true });\n document.addEventListener('mouseenter', onMouse, { passive: true });\n\n return () => {\n document.removeEventListener('mouseenter', onMouse);\n document.removeEventListener('mouseleave', onMouse);\n };\n }, []);\n\n return isLeft;\n};\n"],"names":["usePageLeave","callback","_useState","useState","_useState2","_slicedToArray","isLeft","setIsLeft","onMouse","useEvent","useEffect","document","addEventListener","passive","removeEventListener"],"mappings":";uKAeaA,EAAe,SAACC,GAC3B,IAAAC,EAA4BC,GAAS,GAAMC,EAAAC,EAAAH,EAAA,GAApCI,EAAMF,EAAA,GAAEG,EAASH,EAAA,GAElBI,EAAUC,GAAS,WACvB,GAAIH,EAAQ,OAAOC,GAAU,GAC7BN,SAAAA,IACAM,GAAU,EACZ,IAYA,OAVAG,GAAU,WAIR,OAHAC,SAASC,iBAAiB,aAAcJ,EAAS,CAAEK,SAAS,IAC5DF,SAASC,iBAAiB,aAAcJ,EAAS,CAAEK,SAAS,IAErD,WACLF,SAASG,oBAAoB,aAAcN,GAC3CG,SAASG,oBAAoB,aAAcN,GAE9C,GAAE,IAEIF,CACT"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
2
|
-
import{g as t,h as s,i}from"../../../_rollupPluginBabelHelpers-
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
|
+
import{g as t,h as s,i}from"../../../_rollupPluginBabelHelpers-1nJS3N_r.js";import{Pointer as r}from"./Pointer.js";var h=function(){return t((function t(h){var e=h.x,o=h.y,n=h.radius,u=h.smooth;s(this,t),i(this,"smooth",!1),i(this,"points",[]),i(this,"lines",[]),this.smooth=u,this.pointer=new r(e,o),this.brush=new r(e,o),this.radius=n,this.points=[],this.lines=[]}),[{key:"getBrushCoordinates",value:function(){return{x:this.brush.x,y:this.brush.y}}},{key:"getPointerCoordinates",value:function(){return{x:this.pointer.x,y:this.pointer.y}}},{key:"update",value:function(t){if(this.pointer.equalsTo(t))return!1;if(this.pointer.update(t),!this.smooth)return this.brush.update(t),this.points.push(this.getBrushCoordinates()),!0;var s=this.pointer.getDistanceTo(this.brush),i=this.pointer.getAngleTo(this.brush);if(Math.round(10*(s-this.radius))/10>0){var r=i+Math.PI/2;return this.brush.update({x:this.brush.x+Math.sin(r)*(s-this.radius),y:this.brush.y-Math.cos(r)*(s-this.radius)}),this.points.push(this.getBrushCoordinates()),!0}return!1}}])}();export{h as Paint};
|
|
3
3
|
//# sourceMappingURL=Paint.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
2
|
-
import{g as t,h as e}from"../../../_rollupPluginBabelHelpers-
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
|
+
import{g as t,h as e}from"../../../_rollupPluginBabelHelpers-1nJS3N_r.js";var n=function(){function n(t,i){e(this,n),this.x=t,this.y=i}return t(n,[{key:"update",value:function(t){this.x=t.x,this.y=t.y}},{key:"getDifferenceTo",value:function(t){return new n(this.x-t.x,this.y-t.y)}},{key:"getDistanceTo",value:function(t){var e=this.getDifferenceTo(t);return Math.sqrt(Math.pow(e.x,2)+Math.pow(e.y,2))}},{key:"getAngleTo",value:function(t){var e=this.getDifferenceTo(t);return Math.atan2(e.y,e.x)}},{key:"equalsTo",value:function(t){return this.x===t.x&&this.y===t.y}},{key:"moveByAngle",value:function(t,e){var n=t+Math.PI/2;return this.x+=Math.sin(n)*e,this.y-=Math.cos(n)*e,this}}])}();export{n as Pointer};
|
|
3
3
|
//# sourceMappingURL=Pointer.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
2
|
-
import{c as n,_ as r}from"../../_rollupPluginBabelHelpers-
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
|
+
import{c as n,_ as r}from"../../_rollupPluginBabelHelpers-1nJS3N_r.js";import{useRef as e,useState as t,useEffect as o}from"react";import{useEvent as u}from"../useEvent/useEvent.js";import{Paint as i}from"./helpers/Paint.js";import"./helpers/Pointer.js";var c=function(n){return"function"==typeof n?n():n instanceof Element?n:n.current},l=function(){var l,s,a,v,d,f="object"!==n(arguments.length<=0?void 0:arguments[0])||"current"in(arguments.length<=0?void 0:arguments[0])?arguments.length<=0?void 0:arguments[0]:void 0,p=f?arguments.length<=1?void 0:arguments[1]:arguments.length<=0?void 0:arguments[0],h=null!==(l=null==p?void 0:p.color)&&void 0!==l?l:"black",m=null!==(s=null==p?void 0:p.opacity)&&void 0!==s?s:1,y=null!==(a=null==p?void 0:p.radius)&&void 0!==a?a:10,g=e(new i({x:0,y:0,radius:null!==(v=null==p?void 0:p.radius)&&void 0!==v?v:10,smooth:null!==(d=null==p?void 0:p.smooth)&&void 0!==d&&d})),x=t(!1),E=r(x,2),w=E[0],L=E[1],b=e(null),j=e(null),M=function(n,r,e,t){if(j.current){j.current.globalAlpha=e,j.current.strokeStyle=r,j.current.lineWidth=2*t,j.current.lineCap="round",j.current.lineJoin="round";var o=n[0],u=n[1];j.current.beginPath();for(var i=1;i<n.length;i+=1){var c={x:o.x+(u.x-o.x)/2,y:o.y+(u.y-o.y)/2};j.current.quadraticCurveTo(o.x,o.y,c.x,c.y),o=n[i],u=n[i+1]}j.current.lineTo(o.x,o.y),j.current.stroke()}},P=function(){j.current&&j.current.clearRect(0,0,j.current.canvas.width,j.current.canvas.height)},k=u((function(n){var r;if(w){null==p||null===(r=p.onMouseMove)||void 0===r||r.call(p,n,g.current);var e={x:n.offsetX,y:n.offsetY};g.current.update(e)&&j.current&&(P(),j.current.clearRect(0,0,j.current.canvas.width,j.current.canvas.height),g.current.lines.forEach((function(n){var r=n.points,e=n.color,t=n.opacity,o=n.radius;return M(r,e,t,o)})),M(g.current.points,h,m,y))}})),C=u((function(n){var r;if(j.current){var e={x:n.offsetX,y:n.offsetY};g.current.brush.update(e),g.current.points.push(e),M(g.current.points,h,m,y),null==p||null===(r=p.onMouseDown)||void 0===r||r.call(p,n,g.current),L(!0)}})),R=u((function(n){var r;j.current&&(g.current.points.length&&(g.current.lines.push({points:g.current.points,color:h,opacity:m,radius:y}),g.current.points=[]),null==p||null===(r=p.onMouseUp)||void 0===r||r.call(p,n,g.current),L(!1))})),T=function(){j.current&&(P(),g.current.lines=[],g.current.points=[])},X=function(){j.current&&(P(),g.current.lines.pop(),g.current.lines.forEach((function(n){var r=n.points,e=n.color,t=n.opacity,o=n.radius;return M(r,e,t,o)})))};return o((function(){var n=f?c(f):b.current;if(n)return j.current=n.getContext("2d"),null!=p&&p.initialLines&&(g.current.lines=p.initialLines,p.initialLines.forEach((function(n){var r=n.points,e=n.color,t=n.opacity,o=n.radius;return M(r,e,t,o)}))),n.addEventListener("mousedown",C),n.addEventListener("mousemove",k),n.addEventListener("mouseup",R),function(){n&&(n.removeEventListener("mousedown",C),n.removeEventListener("mousemove",k),n.removeEventListener("mouseup",R))}}),[]),f?{drawing:w,clear:T,undo:X,draw:M,lines:g.current.lines}:{ref:b,drawing:w,clear:T,undo:X,draw:M,lines:g.current.lines}};export{c as getTargetElement,l as usePaint};
|
|
3
3
|
//# sourceMappingURL=usePaint.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePaint.js","sources":["../../../../src/hooks/usePaint/usePaint.ts"],"sourcesContent":["import type { RefObject } from 'react';\nimport { useEffect, useRef, useState } from 'react';\n\nimport { useEvent } from '../useEvent/useEvent';\n\nimport { Paint } from './helpers/Paint';\nimport type { Point } from './helpers/Pointer';\n\nconst DEFAULT_BRUSH_RADIUS = 10;\n\nexport interface UsePaintOptions {\n /** Brush color */\n color?: string;\n /** Brush radius */\n radius?: number;\n /** Smooth brush movement */\n smooth?: boolean;\n /** Brush opacity */\n opacity?: number;\n /** Initial lines */\n initialLines?: Paint['lines'];\n /** Callback when the mouse is down */\n onMouseDown?: (event: MouseEvent, paint: Paint) => void;\n /** Callback when the mouse is moved */\n onMouseMove?: (event: MouseEvent, paint: Paint) => void;\n /** Callback when the mouse is up */\n onMouseUp?: (event: MouseEvent, paint: Paint) => void;\n}\n\nexport interface UsePaintReturn {\n drawing: boolean;\n clear: () => void;\n undo: () => void;\n draw: (points: Point[], color: string, opacity: number, radius: number) => void;\n lines: Paint['lines'];\n}\n\n/** The use paint return type */\nexport type UsePaintTarget =\n | RefObject<HTMLCanvasElement>\n | (() => HTMLCanvasElement)\n | HTMLCanvasElement;\n\nexport const getTargetElement = (target: UsePaintTarget) => {\n if (typeof target === 'function') {\n return target();\n }\n\n if (target instanceof Element) {\n return target;\n }\n\n return target.current;\n};\n\nexport type UsePaint = {\n <Target extends UsePaintTarget>(target: Target, options?: UsePaintOptions): UsePaintReturn;\n\n (\n options?: UsePaintOptions,\n target?: never\n ): { ref: RefObject<HTMLCanvasElement> } & UsePaintReturn;\n};\n\n/**\n * @name usePaint\n * @description - Hook that allows you to draw in a specific area\n * @category Browser\n *\n * @overload\n * @template Target The target element\n * @param {Target} target The target element to be painted\n * @param {UsePaintOptions} [options] The options to be used\n * @returns {UsePaintReturn} An object containing the current pencil options and functions to interact with the paint\n *\n * @example\n * const drawing = usePaint(canvasRef);\n *\n * @overload\n * @param {UsePaintOptions} [options] The options to be used\n * @returns {UsePaintReturn & { ref: RefObject<HTMLCanvasElement> }} An object containing the current pencil options and functions to interact with the paint\n *\n * @example\n * const { ref, drawing } = usePaint();\n */\n\nexport const usePaint = ((...params: any[]) => {\n const target = (\n typeof params[0] === 'object' && !('current' in params[0]) ? undefined : params[0]\n ) as UsePaintTarget | undefined;\n const options = (target ? params[1] : params[0]) as UsePaintOptions | undefined;\n\n const color = options?.color ?? 'black';\n const opacity = options?.opacity ?? 1;\n const radius = options?.radius ?? DEFAULT_BRUSH_RADIUS;\n\n const paintRef = useRef<Paint>(\n new Paint({\n x: 0,\n y: 0,\n radius: options?.radius ?? DEFAULT_BRUSH_RADIUS,\n smooth: options?.smooth ?? false\n })\n );\n const [drawing, setIsDrawing] = useState(false);\n const internalRef = useRef<HTMLCanvasElement>(null);\n const contextRef = useRef<CanvasRenderingContext2D | null>(null);\n\n const draw = (points: Point[], color: string, opacity: number, radius: number) => {\n if (!contextRef.current) return;\n\n contextRef.current.globalAlpha = opacity;\n contextRef.current.strokeStyle = color;\n contextRef.current.lineWidth = radius * 2;\n contextRef.current.lineCap = 'round';\n contextRef.current.lineJoin = 'round';\n\n let p1 = points[0];\n let p2 = points[1];\n\n contextRef.current.beginPath();\n\n for (let i = 1; i < points.length; i += 1) {\n const midPoint = {\n x: p1.x + (p2.x - p1.x) / 2,\n y: p1.y + (p2.y - p1.y) / 2\n };\n contextRef.current.quadraticCurveTo(p1.x, p1.y, midPoint.x, midPoint.y);\n p1 = points[i];\n p2 = points[i + 1];\n }\n contextRef.current.lineTo(p1.x, p1.y);\n contextRef.current.stroke();\n };\n\n const clearCanvas = () => {\n if (!contextRef.current) return;\n contextRef.current.clearRect(\n 0,\n 0,\n contextRef.current.canvas.width,\n contextRef.current.canvas.height\n );\n };\n\n const onMouseMove = useEvent((event: MouseEvent) => {\n if (!drawing) return;\n options?.onMouseMove?.(event, paintRef.current);\n\n const point = { x: event.offsetX, y: event.offsetY };\n\n const isUpdated = paintRef.current.update(point);\n\n if (!isUpdated) return;\n if (!contextRef.current) return;\n clearCanvas();\n contextRef.current.clearRect(\n 0,\n 0,\n contextRef.current.canvas.width,\n contextRef.current.canvas.height\n );\n\n // const brush = paintRef.current.getBrushCoordinates();\n // // Draw brush point\n // contextRef.current.beginPath();\n // contextRef.current.fillStyle = 'red';\n // contextRef.current.arc(brush.x, brush.y, radius, 0, Math.PI * 2, true);\n // contextRef.current.fill();\n\n // // Draw the lazy radius.\n // contextRef.current.beginPath();\n // contextRef.current.strokeStyle = '#ccc';\n // contextRef.current.arc(brush.x, brush.y, radius * 2, 0, Math.PI * 2, true);\n // contextRef.current.stroke();\n\n paintRef.current.lines.forEach(({ points, color, opacity, radius }) =>\n draw(points, color, opacity, radius)\n );\n draw(paintRef.current.points, color, opacity, radius);\n });\n\n const onMouseDown = useEvent((event: MouseEvent) => {\n if (!contextRef.current) return;\n\n const point = { x: event.offsetX, y: event.offsetY };\n paintRef.current.brush.update(point);\n paintRef.current.points.push(point);\n draw(paintRef.current.points, color, opacity, radius);\n\n options?.onMouseDown?.(event, paintRef.current);\n setIsDrawing(true);\n });\n\n const onMouseUp = useEvent((event: MouseEvent) => {\n if (!contextRef.current) return;\n\n if (paintRef.current.points.length) {\n paintRef.current.lines.push({ points: paintRef.current.points, color, opacity, radius });\n paintRef.current.points = [];\n }\n\n options?.onMouseUp?.(event, paintRef.current);\n setIsDrawing(false);\n });\n\n const clear = () => {\n if (!contextRef.current) return;\n clearCanvas();\n paintRef.current.lines = [];\n paintRef.current.points = [];\n };\n\n const undo = () => {\n if (!contextRef.current) return;\n clearCanvas();\n\n paintRef.current.lines.pop();\n paintRef.current.lines.forEach(({ points, color, opacity, radius }) =>\n draw(points, color, opacity, radius)\n );\n };\n\n useEffect(() => {\n const element = target ? getTargetElement(target) : internalRef.current;\n if (!element) return;\n contextRef.current = element.getContext('2d');\n\n if (options?.initialLines) {\n paintRef.current.lines = options.initialLines;\n options.initialLines.forEach(({ points, color, opacity, radius }) =>\n draw(points, color, opacity, radius)\n );\n }\n\n element.addEventListener('mousedown', onMouseDown);\n element.addEventListener('mousemove', onMouseMove);\n element.addEventListener('mouseup', onMouseUp);\n\n return () => {\n if (!element) return;\n element.removeEventListener('mousedown', onMouseDown);\n element.removeEventListener('mousemove', onMouseMove);\n element.removeEventListener('mouseup', onMouseUp);\n };\n }, []);\n\n if (target) return { drawing, clear, undo, draw, lines: paintRef.current.lines };\n return { ref: internalRef, drawing, clear, undo, draw, lines: paintRef.current.lines };\n}) as UsePaint;\n"],"names":["getTargetElement","target","Element","current","usePaint","_options$color","_options$opacity","_options$radius","_options$radius2","_options$smooth","_typeof","arguments","length","undefined","options","color","opacity","radius","paintRef","useRef","Paint","x","y","smooth","_useState","useState","_useState2","_slicedToArray","drawing","setIsDrawing","internalRef","contextRef","draw","points","globalAlpha","strokeStyle","lineWidth","lineCap","lineJoin","p1","p2","beginPath","i","midPoint","quadraticCurveTo","lineTo","stroke","clearCanvas","clearRect","canvas","width","height","onMouseMove","useEvent","event","_options$onMouseMove","call","point","offsetX","offsetY","update","lines","forEach","_ref","onMouseDown","_options$onMouseDown","brush","push","onMouseUp","_options$onMouseUp","clear","undo","pop","_ref2","useEffect","element","getContext","initialLines","_ref3","addEventListener","removeEventListener","ref"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"usePaint.js","sources":["../../../../src/hooks/usePaint/usePaint.ts"],"sourcesContent":["import type { RefObject } from 'react';\nimport { useEffect, useRef, useState } from 'react';\n\nimport { useEvent } from '../useEvent/useEvent';\n\nimport { Paint } from './helpers/Paint';\nimport type { Point } from './helpers/Pointer';\n\nconst DEFAULT_BRUSH_RADIUS = 10;\n\nexport interface UsePaintOptions {\n /** Brush color */\n color?: string;\n /** Brush radius */\n radius?: number;\n /** Smooth brush movement */\n smooth?: boolean;\n /** Brush opacity */\n opacity?: number;\n /** Initial lines */\n initialLines?: Paint['lines'];\n /** Callback when the mouse is down */\n onMouseDown?: (event: MouseEvent, paint: Paint) => void;\n /** Callback when the mouse is moved */\n onMouseMove?: (event: MouseEvent, paint: Paint) => void;\n /** Callback when the mouse is up */\n onMouseUp?: (event: MouseEvent, paint: Paint) => void;\n}\n\nexport interface UsePaintReturn {\n drawing: boolean;\n clear: () => void;\n undo: () => void;\n draw: (points: Point[], color: string, opacity: number, radius: number) => void;\n lines: Paint['lines'];\n}\n\n/** The use paint return type */\nexport type UsePaintTarget =\n | RefObject<HTMLCanvasElement>\n | (() => HTMLCanvasElement)\n | HTMLCanvasElement;\n\nexport const getTargetElement = (target: UsePaintTarget) => {\n if (typeof target === 'function') {\n return target();\n }\n\n if (target instanceof Element) {\n return target;\n }\n\n return target.current;\n};\n\nexport type UsePaint = {\n <Target extends UsePaintTarget>(target: Target, options?: UsePaintOptions): UsePaintReturn;\n\n (\n options?: UsePaintOptions,\n target?: never\n ): { ref: RefObject<HTMLCanvasElement> } & UsePaintReturn;\n};\n\n/**\n * @name usePaint\n * @description - Hook that allows you to draw in a specific area\n * @category Browser\n *\n * @overload\n * @template Target The target element\n * @param {Target} target The target element to be painted\n * @param {UsePaintOptions} [options] The options to be used\n * @returns {UsePaintReturn} An object containing the current pencil options and functions to interact with the paint\n *\n * @example\n * const drawing = usePaint(canvasRef);\n *\n * @overload\n * @param {UsePaintOptions} [options] The options to be used\n * @returns {UsePaintReturn & { ref: RefObject<HTMLCanvasElement> }} An object containing the current pencil options and functions to interact with the paint\n *\n * @example\n * const { ref, drawing } = usePaint();\n */\n\nexport const usePaint = ((...params: any[]) => {\n const target = (\n typeof params[0] === 'object' && !('current' in params[0]) ? undefined : params[0]\n ) as UsePaintTarget | undefined;\n const options = (target ? params[1] : params[0]) as UsePaintOptions | undefined;\n\n const color = options?.color ?? 'black';\n const opacity = options?.opacity ?? 1;\n const radius = options?.radius ?? DEFAULT_BRUSH_RADIUS;\n\n const paintRef = useRef<Paint>(\n new Paint({\n x: 0,\n y: 0,\n radius: options?.radius ?? DEFAULT_BRUSH_RADIUS,\n smooth: options?.smooth ?? false\n })\n );\n const [drawing, setIsDrawing] = useState(false);\n const internalRef = useRef<HTMLCanvasElement>(null);\n const contextRef = useRef<CanvasRenderingContext2D | null>(null);\n\n const draw = (points: Point[], color: string, opacity: number, radius: number) => {\n if (!contextRef.current) return;\n\n contextRef.current.globalAlpha = opacity;\n contextRef.current.strokeStyle = color;\n contextRef.current.lineWidth = radius * 2;\n contextRef.current.lineCap = 'round';\n contextRef.current.lineJoin = 'round';\n\n let p1 = points[0];\n let p2 = points[1];\n\n contextRef.current.beginPath();\n\n for (let i = 1; i < points.length; i += 1) {\n const midPoint = {\n x: p1.x + (p2.x - p1.x) / 2,\n y: p1.y + (p2.y - p1.y) / 2\n };\n contextRef.current.quadraticCurveTo(p1.x, p1.y, midPoint.x, midPoint.y);\n p1 = points[i];\n p2 = points[i + 1];\n }\n contextRef.current.lineTo(p1.x, p1.y);\n contextRef.current.stroke();\n };\n\n const clearCanvas = () => {\n if (!contextRef.current) return;\n contextRef.current.clearRect(\n 0,\n 0,\n contextRef.current.canvas.width,\n contextRef.current.canvas.height\n );\n };\n\n const onMouseMove = useEvent((event: MouseEvent) => {\n if (!drawing) return;\n options?.onMouseMove?.(event, paintRef.current);\n\n const point = { x: event.offsetX, y: event.offsetY };\n\n const isUpdated = paintRef.current.update(point);\n\n if (!isUpdated) return;\n if (!contextRef.current) return;\n clearCanvas();\n contextRef.current.clearRect(\n 0,\n 0,\n contextRef.current.canvas.width,\n contextRef.current.canvas.height\n );\n\n // const brush = paintRef.current.getBrushCoordinates();\n // // Draw brush point\n // contextRef.current.beginPath();\n // contextRef.current.fillStyle = 'red';\n // contextRef.current.arc(brush.x, brush.y, radius, 0, Math.PI * 2, true);\n // contextRef.current.fill();\n\n // // Draw the lazy radius.\n // contextRef.current.beginPath();\n // contextRef.current.strokeStyle = '#ccc';\n // contextRef.current.arc(brush.x, brush.y, radius * 2, 0, Math.PI * 2, true);\n // contextRef.current.stroke();\n\n paintRef.current.lines.forEach(({ points, color, opacity, radius }) =>\n draw(points, color, opacity, radius)\n );\n draw(paintRef.current.points, color, opacity, radius);\n });\n\n const onMouseDown = useEvent((event: MouseEvent) => {\n if (!contextRef.current) return;\n\n const point = { x: event.offsetX, y: event.offsetY };\n paintRef.current.brush.update(point);\n paintRef.current.points.push(point);\n draw(paintRef.current.points, color, opacity, radius);\n\n options?.onMouseDown?.(event, paintRef.current);\n setIsDrawing(true);\n });\n\n const onMouseUp = useEvent((event: MouseEvent) => {\n if (!contextRef.current) return;\n\n if (paintRef.current.points.length) {\n paintRef.current.lines.push({ points: paintRef.current.points, color, opacity, radius });\n paintRef.current.points = [];\n }\n\n options?.onMouseUp?.(event, paintRef.current);\n setIsDrawing(false);\n });\n\n const clear = () => {\n if (!contextRef.current) return;\n clearCanvas();\n paintRef.current.lines = [];\n paintRef.current.points = [];\n };\n\n const undo = () => {\n if (!contextRef.current) return;\n clearCanvas();\n\n paintRef.current.lines.pop();\n paintRef.current.lines.forEach(({ points, color, opacity, radius }) =>\n draw(points, color, opacity, radius)\n );\n };\n\n useEffect(() => {\n const element = target ? getTargetElement(target) : internalRef.current;\n if (!element) return;\n contextRef.current = element.getContext('2d');\n\n if (options?.initialLines) {\n paintRef.current.lines = options.initialLines;\n options.initialLines.forEach(({ points, color, opacity, radius }) =>\n draw(points, color, opacity, radius)\n );\n }\n\n element.addEventListener('mousedown', onMouseDown);\n element.addEventListener('mousemove', onMouseMove);\n element.addEventListener('mouseup', onMouseUp);\n\n return () => {\n if (!element) return;\n element.removeEventListener('mousedown', onMouseDown);\n element.removeEventListener('mousemove', onMouseMove);\n element.removeEventListener('mouseup', onMouseUp);\n };\n }, []);\n\n if (target) return { drawing, clear, undo, draw, lines: paintRef.current.lines };\n return { ref: internalRef, drawing, clear, undo, draw, lines: paintRef.current.lines };\n}) as UsePaint;\n"],"names":["getTargetElement","target","Element","current","usePaint","_options$color","_options$opacity","_options$radius","_options$radius2","_options$smooth","_typeof","arguments","length","undefined","options","color","opacity","radius","paintRef","useRef","Paint","x","y","smooth","_useState","useState","_useState2","_slicedToArray","drawing","setIsDrawing","internalRef","contextRef","draw","points","globalAlpha","strokeStyle","lineWidth","lineCap","lineJoin","p1","p2","beginPath","i","midPoint","quadraticCurveTo","lineTo","stroke","clearCanvas","clearRect","canvas","width","height","onMouseMove","useEvent","event","_options$onMouseMove","call","point","offsetX","offsetY","update","lines","forEach","_ref","onMouseDown","_options$onMouseDown","brush","push","onMouseUp","_options$onMouseUp","clear","undo","pop","_ref2","useEffect","element","getContext","initialLines","_ref3","addEventListener","removeEventListener","ref"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @license @siberiacancode/reactuse v0.0.
|
|
2
|
-
import{_ as r,d as e,e as t}from"../../_rollupPluginBabelHelpers-
|
|
1
|
+
/* @license @siberiacancode/reactuse v0.0.45 */
|
|
2
|
+
import{_ as r,d as e,e as t}from"../../_rollupPluginBabelHelpers-1nJS3N_r.js";import{useState as n,useEffect as s}from"react";import{isClient as a}from"../../utils/helpers/isClient.js";import{useEvent as o}from"../useEvent/useEvent.js";var i=function(i){var p=n("prompt"),u=r(p,2),c=u[0],m=u[1],v=!!a&&(navigator&&"permissions"in navigator),f={name:i},l=o(e(t().mark((function r(){var e;return t().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,navigator.permissions.query(f);case 3:return e=r.sent,m(e.state),r.abrupt("return",e.state);case 8:return r.prev=8,r.t0=r.catch(0),m("prompt"),r.abrupt("return","prompt");case 12:case"end":return r.stop()}}),r,null,[[0,8]])}))));return s((function(){if(v)return l(),window.addEventListener("change",l),function(){window.removeEventListener("change",l)}}),[i]),{state:c,supported:v,query:l}};export{i as usePermission};
|
|
3
3
|
//# sourceMappingURL=usePermission.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePermission.js","sources":["../../../../src/hooks/usePermission/usePermission.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { isClient } from '@/utils/helpers';\n\nimport { useEvent } from '../useEvent/useEvent';\n\nexport type UsePermissionName =\n | PermissionName\n | 'accelerometer'\n | 'accessibility-events'\n | 'ambient-light-sensor'\n | 'background-sync'\n | 'camera'\n | 'clipboard-read'\n | 'clipboard-write'\n | 'gyroscope'\n | 'magnetometer'\n | 'microphone'\n | 'notifications'\n | 'payment-handler'\n | 'persistent-storage'\n | 'push'\n | 'speaker';\n\nexport interface UsePermissionReturn {\n state: PermissionState;\n supported: boolean;\n query: () => Promise<PermissionState>;\n}\n\n/**\n * @name usePermission\n * @description - Hook that gives you the state of permission\n * @category Browser\n *\n * @returns {UsePermissionReturn} An object containing the state and the supported status\n *\n * @example\n * const { state, supported, query } = usePermission('microphone');\n */\nexport const usePermission = (permissionDescriptorName: UsePermissionName) => {\n const [state, setState] = useState<PermissionState>('prompt');\n const supported = isClient ? navigator && 'permissions' in navigator : false;\n\n const permissionDescriptor = { name: permissionDescriptorName };\n\n const query = useEvent(async () => {\n try {\n const permissionStatus = await navigator.permissions.query(\n permissionDescriptor as PermissionDescriptor\n );\n setState(permissionStatus.state);\n return permissionStatus.state;\n } catch (error) {\n setState('prompt');\n return 'prompt';\n }\n });\n\n useEffect(() => {\n if (!supported) return;\n query();\n window.addEventListener('change', query);\n return () => {\n window.removeEventListener('change', query);\n };\n }, [permissionDescriptorName]);\n\n return {\n state,\n supported,\n query\n };\n};\n"],"names":["usePermission","permissionDescriptorName","_useState","useState","_useState2","_slicedToArray","state","setState","supported","isClient","navigator","permissionDescriptor","name","query","useEvent","_asyncToGenerator","_regeneratorRuntime","mark","_callee","permissionStatus","wrap","_context","prev","next","permissions","sent","abrupt","t0","stop","useEffect","window","addEventListener","removeEventListener"],"mappings":";
|
|
1
|
+
{"version":3,"file":"usePermission.js","sources":["../../../../src/hooks/usePermission/usePermission.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { isClient } from '@/utils/helpers';\n\nimport { useEvent } from '../useEvent/useEvent';\n\nexport type UsePermissionName =\n | PermissionName\n | 'accelerometer'\n | 'accessibility-events'\n | 'ambient-light-sensor'\n | 'background-sync'\n | 'camera'\n | 'clipboard-read'\n | 'clipboard-write'\n | 'gyroscope'\n | 'magnetometer'\n | 'microphone'\n | 'notifications'\n | 'payment-handler'\n | 'persistent-storage'\n | 'push'\n | 'speaker';\n\nexport interface UsePermissionReturn {\n state: PermissionState;\n supported: boolean;\n query: () => Promise<PermissionState>;\n}\n\n/**\n * @name usePermission\n * @description - Hook that gives you the state of permission\n * @category Browser\n *\n * @returns {UsePermissionReturn} An object containing the state and the supported status\n *\n * @example\n * const { state, supported, query } = usePermission('microphone');\n */\nexport const usePermission = (permissionDescriptorName: UsePermissionName) => {\n const [state, setState] = useState<PermissionState>('prompt');\n const supported = isClient ? navigator && 'permissions' in navigator : false;\n\n const permissionDescriptor = { name: permissionDescriptorName };\n\n const query = useEvent(async () => {\n try {\n const permissionStatus = await navigator.permissions.query(\n permissionDescriptor as PermissionDescriptor\n );\n setState(permissionStatus.state);\n return permissionStatus.state;\n } catch (error) {\n setState('prompt');\n return 'prompt';\n }\n });\n\n useEffect(() => {\n if (!supported) return;\n query();\n window.addEventListener('change', query);\n return () => {\n window.removeEventListener('change', query);\n };\n }, [permissionDescriptorName]);\n\n return {\n state,\n supported,\n query\n };\n};\n"],"names":["usePermission","permissionDescriptorName","_useState","useState","_useState2","_slicedToArray","state","setState","supported","isClient","navigator","permissionDescriptor","name","query","useEvent","_asyncToGenerator","_regeneratorRuntime","mark","_callee","permissionStatus","wrap","_context","prev","next","permissions","sent","abrupt","t0","stop","useEffect","window","addEventListener","removeEventListener"],"mappings":";gPAwCaA,EAAgB,SAACC,GAC5B,IAAAC,EAA0BC,EAA0B,UAASC,EAAAC,EAAAH,EAAA,GAAtDI,EAAKF,EAAA,GAAEG,EAAQH,EAAA,GAChBI,IAAYC,IAAWC,WAAa,gBAAiBA,WAErDC,EAAuB,CAAEC,KAAMX,GAE/BY,EAAQC,EAAQC,EAAAC,IAAAC,MAAC,SAAAC,IAAA,IAAAC,EAAA,OAAAH,IAAAI,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,OAAAF,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAEYb,UAAUc,YAAYX,MACnDF,GACD,KAAA,EACgC,OAH3BQ,EAAgBE,EAAAI,KAGtBlB,EAASY,EAAiBb,OAAOe,EAAAK,OAC1BP,SAAAA,EAAiBb,OAAK,KAAA,EAEV,OAFUe,EAAAC,KAAA,EAAAD,EAAAM,GAAAN,EAAA,MAAA,GAE7Bd,EAAS,UAAUc,EAAAK,OAAA,SACZ,UAAQ,KAAA,GAAA,IAAA,MAAA,OAAAL,EAAAO,OAAA,GAAAV,EAAA,KAAA,CAAA,CAAA,EAAA,IAElB,MAWD,OATAW,GAAU,WACR,GAAKrB,EAGL,OAFAK,IACAiB,OAAOC,iBAAiB,SAAUlB,GAC3B,WACLiB,OAAOE,oBAAoB,SAAUnB,GAEzC,GAAG,CAACZ,IAEG,CACLK,MAAAA,EACAE,UAAAA,EACAK,MAAAA,EAEJ"}
|