@siberiacancode/reactuse 0.3.2 → 0.3.3

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.
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react"),h=(i,r={})=>{const[l,s]=u.useState(!1),[m,d]=u.useState(r.volume??1),[v,y]=u.useState(r.playbackRate??1),t=u.useRef(null);u.useEffect(()=>{const e=new Audio(i);e.volume=m,e.playbackRate=v,t.current=e,r.immediately&&e.play();const n=()=>s(!0),c=()=>s(!1),a=()=>s(!1),p=()=>{},f=()=>d(e.volume),E=()=>y(e.playbackRate);return e.addEventListener("play",n),e.addEventListener("pause",c),e.addEventListener("ended",a),e.addEventListener("timeupdate",p),e.addEventListener("volumechange",f),e.addEventListener("ratechange",E),()=>{e.removeEventListener("play",n),e.removeEventListener("pause",c),e.removeEventListener("ended",a),e.removeEventListener("timeupdate",p),e.removeEventListener("volumechange",f),e.removeEventListener("ratechange",E),e.pause(),e.remove()}},[i]);const o=()=>{t.current&&(t.current.pause(),t.current.currentTime=0)};return{play:async e=>{if(!t.current)return;if(r.interrupt&&o(),!e||!r.sprite?.[e]){await t.current.play();return}const[n,c]=r.sprite[e];t.current.currentTime=n,await t.current.play();const a=()=>{t.current&&(t.current.currentTime>=c&&o(),l&&requestAnimationFrame(a))};requestAnimationFrame(a)},pause:()=>t.current?.pause(),stop:o,playing:l,setVolume:e=>{if(!t.current)return;const n=Math.max(0,Math.min(1,e));t.current.volume=n,d(n)},volume:m,changePlaybackRate:e=>{if(!t.current)return;const n=Math.max(.5,Math.min(2,e));t.current.playbackRate=n,y(n)},playbackRate:v}};exports.useAudio=h;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react"),h=(i,a={})=>{const[l,r]=c.useState(!1),[m,d]=c.useState(a.volume??1),[v,y]=c.useState(a.playbackRate??1),t=c.useRef(null);c.useEffect(()=>{const e=new Audio(i);if(e.volume=m,e.playbackRate=v,t.current=e,a.immediately)try{r(!0),e.play()}catch{r(!1)}const n=()=>r(!0),s=()=>r(!1),u=()=>r(!1),f=()=>d(e.volume),p=()=>y(e.playbackRate);return e.addEventListener("play",n),e.addEventListener("pause",s),e.addEventListener("ended",u),e.addEventListener("volumechange",f),e.addEventListener("ratechange",p),()=>{e.removeEventListener("play",n),e.removeEventListener("pause",s),e.removeEventListener("ended",u),e.removeEventListener("volumechange",f),e.removeEventListener("ratechange",p),e.pause(),e.remove()}},[i]);const o=()=>{t.current&&(t.current.pause(),t.current.currentTime=0,r(!1))};return{play:async e=>{if(!t.current)return;if(a.interrupt&&o(),r(!0),!e||!a.sprite?.[e]){await t.current.play();return}const[n,s]=a.sprite[e];t.current.currentTime=n,await t.current.play();const u=()=>{t.current&&(t.current.currentTime>=s&&o(),l&&requestAnimationFrame(u))};requestAnimationFrame(u)},pause:()=>{t.current&&(t.current.pause(),r(!1))},stop:o,playing:l,setVolume:e=>{if(!t.current)return;const n=Math.max(0,Math.min(1,e));t.current.volume=n,d(n)},volume:m,changePlaybackRate:e=>{if(!t.current)return;const n=Math.max(.5,Math.min(2,e));t.current.playbackRate=n,y(n)},playbackRate:v}};exports.useAudio=h;
2
2
  //# sourceMappingURL=useAudio.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAudio.cjs","sources":["../../../../src/hooks/useAudio/useAudio.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/** Type sprite map */\nexport interface SpriteMap {\n /** [start time in seconds, end time in seconds] */\n [key: string]: [number, number];\n}\n\n/** Type use audio options */\nexport interface UseAudioOptions {\n /** Whether audio playback is initially enabled */\n immediately?: boolean;\n /** Whether to stop current playback when starting a new one */\n interrupt?: boolean;\n /** Initial playback speed (0.5 to 2) */\n playbackRate?: number;\n /** Map of named audio segments for sprite-based playback */\n sprite?: SpriteMap;\n /** Initial volume level (0 to 1) */\n volume?: number;\n}\n\n/** Type use audio return type */\nexport interface UseAudioReturn {\n /** Current playback speed (0.5 to 2) */\n playbackRate: number;\n /** Whether audio is currently playing */\n playing: boolean;\n /** Current volume level (0 to 1) */\n volume: number;\n /** Set playback speed (0.5 to 2) */\n changePlaybackRate: (value: number) => void;\n /** Pause audio playback at current position */\n pause: () => void;\n /** Start audio playback from the beginning or specified sprite segment */\n play: (sprite?: string) => Promise<void>;\n /** Set audio volume level (0 to 1) */\n setVolume: (value: number) => void;\n /** Stop audio playback and reset position to start */\n stop: () => void;\n}\n\n/**\n * @name useAudio\n * @description - Hook that manages audio playback with sprite support\n * @category Browser\n * @usage low\n\n * @browserapi Audio https://developer.mozilla.org/en-US/docs/Web/API/Audio\n *\n * @template Value The type of the value\n * @param {string} url The URL of the audio file to play\n * @param {UseAudioOptions} [options] Audio configuration options\n * @param {number} [options.volume=1] Initial volume level (0 to 1)\n * @param {number} [options.playbackRate=1] Initial playback speed (0.5 to 2)\n * @param {boolean} [options.interrupt=false] Whether to stop current playback when starting a new one\n * @param {boolean} [options.soundEnabled=true] Whether audio playback is initially enabled\n * @param {SpriteMap} [options.sprite] Map of named audio segments for sprite-based playback\n * @returns {UseAudioReturn} An object containing audio controls and state\n *\n * @example\n * const audio = useAudio(\"/path/to/sound.mp3\");\n */\nexport const useAudio = (src: string, options: UseAudioOptions = {}): UseAudioReturn => {\n const [playing, setPlaying] = useState(false);\n const [volume, setCurrentVolume] = useState(options.volume ?? 1);\n const [playbackRate, setPlaybackRate] = useState(options.playbackRate ?? 1);\n\n const audioRef = useRef<HTMLAudioElement | null>(null);\n\n useEffect(() => {\n const audio = new Audio(src);\n\n audio.volume = volume;\n audio.playbackRate = playbackRate;\n audioRef.current = audio;\n\n if (options.immediately) audio.play();\n\n const onPlay = () => setPlaying(true);\n const onPause = () => setPlaying(false);\n const onEnded = () => setPlaying(false);\n const onTimeUpdate = () => {};\n const onVolumeChange = () => setCurrentVolume(audio.volume);\n const onRateChange = () => setPlaybackRate(audio.playbackRate);\n\n audio.addEventListener('play', onPlay);\n audio.addEventListener('pause', onPause);\n audio.addEventListener('ended', onEnded);\n audio.addEventListener('timeupdate', onTimeUpdate);\n audio.addEventListener('volumechange', onVolumeChange);\n audio.addEventListener('ratechange', onRateChange);\n\n return () => {\n audio.removeEventListener('play', onPlay);\n audio.removeEventListener('pause', onPause);\n audio.removeEventListener('ended', onEnded);\n audio.removeEventListener('timeupdate', onTimeUpdate);\n audio.removeEventListener('volumechange', onVolumeChange);\n audio.removeEventListener('ratechange', onRateChange);\n\n audio.pause();\n audio.remove();\n };\n }, [src]);\n\n const stop = () => {\n if (!audioRef.current) return;\n audioRef.current.pause();\n audioRef.current.currentTime = 0;\n };\n\n const play = async (spriteName?: string) => {\n if (!audioRef.current) return;\n if (options.interrupt) stop();\n\n if (!spriteName || !options.sprite?.[spriteName]) {\n await audioRef.current.play();\n return;\n }\n\n const [start, end] = options.sprite[spriteName];\n audioRef.current.currentTime = start;\n await audioRef.current.play();\n\n const checkTime = () => {\n if (!audioRef.current) return;\n if (audioRef.current.currentTime >= end) {\n stop();\n }\n\n if (!playing) return;\n\n requestAnimationFrame(checkTime);\n };\n\n requestAnimationFrame(checkTime);\n };\n\n const pause = () => audioRef.current?.pause();\n\n const setVolume = (value: number) => {\n if (!audioRef.current) return;\n const newVolume = Math.max(0, Math.min(1, value));\n audioRef.current.volume = newVolume;\n setCurrentVolume(newVolume);\n };\n\n const changePlaybackRate = (value: number) => {\n if (!audioRef.current) return;\n const newRate = Math.max(0.5, Math.min(2, value));\n audioRef.current.playbackRate = newRate;\n setPlaybackRate(newRate);\n };\n\n return {\n play,\n pause,\n stop,\n playing,\n setVolume,\n volume,\n changePlaybackRate,\n playbackRate\n };\n};\n"],"names":["useAudio","src","options","playing","setPlaying","useState","volume","setCurrentVolume","playbackRate","setPlaybackRate","audioRef","useRef","useEffect","audio","onPlay","onPause","onEnded","onTimeUpdate","onVolumeChange","onRateChange","stop","spriteName","start","end","checkTime","value","newVolume","newRate"],"mappings":"yGA+DaA,EAAW,CAACC,EAAaC,EAA2B,KAAuB,CACtF,KAAM,CAACC,EAASC,CAAU,EAAIC,EAAAA,SAAS,EAAK,EACtC,CAACC,EAAQC,CAAgB,EAAIF,EAAAA,SAASH,EAAQ,QAAU,CAAC,EACzD,CAACM,EAAcC,CAAe,EAAIJ,EAAAA,SAASH,EAAQ,cAAgB,CAAC,EAEpEQ,EAAWC,EAAAA,OAAgC,IAAI,EAErDC,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAQ,IAAI,MAAMZ,CAAG,EAE3BY,EAAM,OAASP,EACfO,EAAM,aAAeL,EACrBE,EAAS,QAAUG,EAEfX,EAAQ,aAAaW,EAAM,KAAA,EAE/B,MAAMC,EAAS,IAAMV,EAAW,EAAI,EAC9BW,EAAU,IAAMX,EAAW,EAAK,EAChCY,EAAU,IAAMZ,EAAW,EAAK,EAChCa,EAAe,IAAM,CAAA,EACrBC,EAAiB,IAAMX,EAAiBM,EAAM,MAAM,EACpDM,EAAe,IAAMV,EAAgBI,EAAM,YAAY,EAE7D,OAAAA,EAAM,iBAAiB,OAAQC,CAAM,EACrCD,EAAM,iBAAiB,QAASE,CAAO,EACvCF,EAAM,iBAAiB,QAASG,CAAO,EACvCH,EAAM,iBAAiB,aAAcI,CAAY,EACjDJ,EAAM,iBAAiB,eAAgBK,CAAc,EACrDL,EAAM,iBAAiB,aAAcM,CAAY,EAE1C,IAAM,CACXN,EAAM,oBAAoB,OAAQC,CAAM,EACxCD,EAAM,oBAAoB,QAASE,CAAO,EAC1CF,EAAM,oBAAoB,QAASG,CAAO,EAC1CH,EAAM,oBAAoB,aAAcI,CAAY,EACpDJ,EAAM,oBAAoB,eAAgBK,CAAc,EACxDL,EAAM,oBAAoB,aAAcM,CAAY,EAEpDN,EAAM,MAAA,EACNA,EAAM,OAAA,CAAO,CACf,EACC,CAACZ,CAAG,CAAC,EAER,MAAMmB,EAAO,IAAM,CACZV,EAAS,UACdA,EAAS,QAAQ,MAAA,EACjBA,EAAS,QAAQ,YAAc,EAAA,EA8CjC,MAAO,CACL,KA5CW,MAAOW,GAAwB,CAC1C,GAAI,CAACX,EAAS,QAAS,OAGvB,GAFIR,EAAQ,WAAWkB,EAAA,EAEnB,CAACC,GAAc,CAACnB,EAAQ,SAASmB,CAAU,EAAG,CAChD,MAAMX,EAAS,QAAQ,KAAA,EACvB,MAAA,CAGF,KAAM,CAACY,EAAOC,CAAG,EAAIrB,EAAQ,OAAOmB,CAAU,EAC9CX,EAAS,QAAQ,YAAcY,EAC/B,MAAMZ,EAAS,QAAQ,KAAA,EAEvB,MAAMc,EAAY,IAAM,CACjBd,EAAS,UACVA,EAAS,QAAQ,aAAea,GAClCH,EAAA,EAGGjB,GAEL,sBAAsBqB,CAAS,EAAA,EAGjC,sBAAsBA,CAAS,CAAA,EAqB/B,MAlBY,IAAMd,EAAS,SAAS,MAAA,EAmBpC,KAAAU,EACA,QAAAjB,EACA,UAnBiBsB,GAAkB,CACnC,GAAI,CAACf,EAAS,QAAS,OACvB,MAAMgB,EAAY,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGD,CAAK,CAAC,EAChDf,EAAS,QAAQ,OAASgB,EAC1BnB,EAAiBmB,CAAS,CAAA,EAgB1B,OAAApB,EACA,mBAd0BmB,GAAkB,CAC5C,GAAI,CAACf,EAAS,QAAS,OACvB,MAAMiB,EAAU,KAAK,IAAI,GAAK,KAAK,IAAI,EAAGF,CAAK,CAAC,EAChDf,EAAS,QAAQ,aAAeiB,EAChClB,EAAgBkB,CAAO,CAAA,EAWvB,aAAAnB,CAAA,CAEJ"}
1
+ {"version":3,"file":"useAudio.cjs","sources":["../../../../src/hooks/useAudio/useAudio.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/** Type sprite map */\nexport interface SpriteMap {\n /** [start time in seconds, end time in seconds] */\n [key: string]: [number, number];\n}\n\n/** Type use audio options */\nexport interface UseAudioOptions {\n /** Whether audio playback is initially enabled */\n immediately?: boolean;\n /** Whether to stop current playback when starting a new one */\n interrupt?: boolean;\n /** Initial playback speed (0.5 to 2) */\n playbackRate?: number;\n /** Map of named audio segments for sprite-based playback */\n sprite?: SpriteMap;\n /** Initial volume level (0 to 1) */\n volume?: number;\n}\n\n/** Type use audio return type */\nexport interface UseAudioReturn {\n /** Current playback speed (0.5 to 2) */\n playbackRate: number;\n /** Whether audio is currently playing */\n playing: boolean;\n /** Current volume level (0 to 1) */\n volume: number;\n /** Set playback speed (0.5 to 2) */\n changePlaybackRate: (value: number) => void;\n /** Pause audio playback at current position */\n pause: () => void;\n /** Start audio playback from the beginning or specified sprite segment */\n play: (sprite?: string) => Promise<void>;\n /** Set audio volume level (0 to 1) */\n setVolume: (value: number) => void;\n /** Stop audio playback and reset position to start */\n stop: () => void;\n}\n\n/**\n * @name useAudio\n * @description - Hook that manages audio playback with sprite support\n * @category Browser\n * @usage low\n\n * @browserapi Audio https://developer.mozilla.org/en-US/docs/Web/API/Audio\n *\n * @template Value The type of the value\n * @param {string} url The URL of the audio file to play\n * @param {UseAudioOptions} [options] Audio configuration options\n * @param {number} [options.volume=1] Initial volume level (0 to 1)\n * @param {number} [options.playbackRate=1] Initial playback speed (0.5 to 2)\n * @param {boolean} [options.interrupt=false] Whether to stop current playback when starting a new one\n * @param {boolean} [options.soundEnabled=true] Whether audio playback is initially enabled\n * @param {SpriteMap} [options.sprite] Map of named audio segments for sprite-based playback\n * @returns {UseAudioReturn} An object containing audio controls and state\n *\n * @example\n * const audio = useAudio(\"/path/to/sound.mp3\");\n */\nexport const useAudio = (src: string, options: UseAudioOptions = {}): UseAudioReturn => {\n const [playing, setPlaying] = useState(false);\n const [volume, setCurrentVolume] = useState(options.volume ?? 1);\n const [playbackRate, setPlaybackRate] = useState(options.playbackRate ?? 1);\n\n const audioRef = useRef<HTMLAudioElement | null>(null);\n\n useEffect(() => {\n const audio = new Audio(src);\n\n audio.volume = volume;\n audio.playbackRate = playbackRate;\n audioRef.current = audio;\n\n if (options.immediately) {\n try {\n setPlaying(true);\n audio.play();\n } catch {\n setPlaying(false);\n }\n }\n\n const onPlay = () => setPlaying(true);\n const onPause = () => setPlaying(false);\n const onEnded = () => setPlaying(false);\n const onVolumeChange = () => setCurrentVolume(audio.volume);\n const onRateChange = () => setPlaybackRate(audio.playbackRate);\n\n audio.addEventListener('play', onPlay);\n audio.addEventListener('pause', onPause);\n audio.addEventListener('ended', onEnded);\n audio.addEventListener('volumechange', onVolumeChange);\n audio.addEventListener('ratechange', onRateChange);\n\n return () => {\n audio.removeEventListener('play', onPlay);\n audio.removeEventListener('pause', onPause);\n audio.removeEventListener('ended', onEnded);\n audio.removeEventListener('volumechange', onVolumeChange);\n audio.removeEventListener('ratechange', onRateChange);\n\n audio.pause();\n audio.remove();\n };\n }, [src]);\n\n const stop = () => {\n if (!audioRef.current) return;\n audioRef.current.pause();\n audioRef.current.currentTime = 0;\n setPlaying(false);\n };\n\n const play = async (spriteName?: string) => {\n if (!audioRef.current) return;\n if (options.interrupt) stop();\n\n setPlaying(true);\n\n if (!spriteName || !options.sprite?.[spriteName]) {\n await audioRef.current.play();\n return;\n }\n\n const [start, end] = options.sprite[spriteName];\n audioRef.current.currentTime = start;\n await audioRef.current.play();\n\n const checkTime = () => {\n if (!audioRef.current) return;\n if (audioRef.current.currentTime >= end) {\n stop();\n }\n\n if (!playing) return;\n\n requestAnimationFrame(checkTime);\n };\n\n requestAnimationFrame(checkTime);\n };\n\n const pause = () => {\n if (!audioRef.current) return;\n audioRef.current.pause();\n setPlaying(false);\n };\n\n const setVolume = (value: number) => {\n if (!audioRef.current) return;\n const newVolume = Math.max(0, Math.min(1, value));\n audioRef.current.volume = newVolume;\n setCurrentVolume(newVolume);\n };\n\n const changePlaybackRate = (value: number) => {\n if (!audioRef.current) return;\n const newRate = Math.max(0.5, Math.min(2, value));\n audioRef.current.playbackRate = newRate;\n setPlaybackRate(newRate);\n };\n\n return {\n play,\n pause,\n stop,\n playing,\n setVolume,\n volume,\n changePlaybackRate,\n playbackRate\n };\n};\n"],"names":["useAudio","src","options","playing","setPlaying","useState","volume","setCurrentVolume","playbackRate","setPlaybackRate","audioRef","useRef","useEffect","audio","onPlay","onPause","onEnded","onVolumeChange","onRateChange","stop","spriteName","start","end","checkTime","value","newVolume","newRate"],"mappings":"yGA+DaA,EAAW,CAACC,EAAaC,EAA2B,KAAuB,CACtF,KAAM,CAACC,EAASC,CAAU,EAAIC,EAAAA,SAAS,EAAK,EACtC,CAACC,EAAQC,CAAgB,EAAIF,EAAAA,SAASH,EAAQ,QAAU,CAAC,EACzD,CAACM,EAAcC,CAAe,EAAIJ,EAAAA,SAASH,EAAQ,cAAgB,CAAC,EAEpEQ,EAAWC,EAAAA,OAAgC,IAAI,EAErDC,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAQ,IAAI,MAAMZ,CAAG,EAM3B,GAJAY,EAAM,OAASP,EACfO,EAAM,aAAeL,EACrBE,EAAS,QAAUG,EAEfX,EAAQ,YACV,GAAI,CACFE,EAAW,EAAI,EACfS,EAAM,KAAA,CAAK,MACL,CACNT,EAAW,EAAK,CAAA,CAIpB,MAAMU,EAAS,IAAMV,EAAW,EAAI,EAC9BW,EAAU,IAAMX,EAAW,EAAK,EAChCY,EAAU,IAAMZ,EAAW,EAAK,EAChCa,EAAiB,IAAMV,EAAiBM,EAAM,MAAM,EACpDK,EAAe,IAAMT,EAAgBI,EAAM,YAAY,EAE7D,OAAAA,EAAM,iBAAiB,OAAQC,CAAM,EACrCD,EAAM,iBAAiB,QAASE,CAAO,EACvCF,EAAM,iBAAiB,QAASG,CAAO,EACvCH,EAAM,iBAAiB,eAAgBI,CAAc,EACrDJ,EAAM,iBAAiB,aAAcK,CAAY,EAE1C,IAAM,CACXL,EAAM,oBAAoB,OAAQC,CAAM,EACxCD,EAAM,oBAAoB,QAASE,CAAO,EAC1CF,EAAM,oBAAoB,QAASG,CAAO,EAC1CH,EAAM,oBAAoB,eAAgBI,CAAc,EACxDJ,EAAM,oBAAoB,aAAcK,CAAY,EAEpDL,EAAM,MAAA,EACNA,EAAM,OAAA,CAAO,CACf,EACC,CAACZ,CAAG,CAAC,EAER,MAAMkB,EAAO,IAAM,CACZT,EAAS,UACdA,EAAS,QAAQ,MAAA,EACjBA,EAAS,QAAQ,YAAc,EAC/BN,EAAW,EAAK,EAAA,EAoDlB,MAAO,CACL,KAlDW,MAAOgB,GAAwB,CAC1C,GAAI,CAACV,EAAS,QAAS,OAKvB,GAJIR,EAAQ,WAAWiB,EAAA,EAEvBf,EAAW,EAAI,EAEX,CAACgB,GAAc,CAAClB,EAAQ,SAASkB,CAAU,EAAG,CAChD,MAAMV,EAAS,QAAQ,KAAA,EACvB,MAAA,CAGF,KAAM,CAACW,EAAOC,CAAG,EAAIpB,EAAQ,OAAOkB,CAAU,EAC9CV,EAAS,QAAQ,YAAcW,EAC/B,MAAMX,EAAS,QAAQ,KAAA,EAEvB,MAAMa,EAAY,IAAM,CACjBb,EAAS,UACVA,EAAS,QAAQ,aAAeY,GAClCH,EAAA,EAGGhB,GAEL,sBAAsBoB,CAAS,EAAA,EAGjC,sBAAsBA,CAAS,CAAA,EAyB/B,MAtBY,IAAM,CACbb,EAAS,UACdA,EAAS,QAAQ,MAAA,EACjBN,EAAW,EAAK,EAAA,EAoBhB,KAAAe,EACA,QAAAhB,EACA,UAnBiBqB,GAAkB,CACnC,GAAI,CAACd,EAAS,QAAS,OACvB,MAAMe,EAAY,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGD,CAAK,CAAC,EAChDd,EAAS,QAAQ,OAASe,EAC1BlB,EAAiBkB,CAAS,CAAA,EAgB1B,OAAAnB,EACA,mBAd0BkB,GAAkB,CAC5C,GAAI,CAACd,EAAS,QAAS,OACvB,MAAMgB,EAAU,KAAK,IAAI,GAAK,KAAK,IAAI,EAAGF,CAAK,CAAC,EAChDd,EAAS,QAAQ,aAAegB,EAChCjB,EAAgBiB,CAAO,CAAA,EAWvB,aAAAlB,CAAA,CAEJ"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react"),y=require("../useRefState/useRefState.cjs"),v=require("../../utils/helpers/isTarget.cjs"),H=(...n)=>{const i=v.isTarget(n[0])?n[0]:void 0,r=i?n[1]:typeof n[0]=="string"?{initialValue:n[0]}:n[0],[a,g]=c.useState(r?.initialValue??""),u=y.useRefState(),o=c.useRef(null),s=()=>{const e=o.current;if(!e)return;const t=e.style.minHeight,l=e.style.maxHeight;e.style.height="auto",e.style.minHeight="auto",e.style.maxHeight="none";const f=e.scrollHeight;e.style.height=`${f}px`,e.style.minHeight=t,e.style.maxHeight=l,r?.onResize?.()};c.useEffect(()=>{if(!i&&!u.state)return;const e=i?v.isTarget.getElement(i):u.current;if(!e)return;o.current=e,r?.initialValue&&(e.value=r.initialValue),s();const t=f=>{const x=f.target.value;g(x),requestAnimationFrame(()=>{s()})},l=()=>{requestAnimationFrame(()=>{s()})};return e.addEventListener("input",t),e.addEventListener("resize",l),()=>{e.removeEventListener("input",t),e.removeEventListener("resize",l)}},[i,u.state,r?.initialValue]),c.useEffect(()=>{const e=o.current;e&&(e.value=a,requestAnimationFrame(()=>{s()}))},[a]);const h=e=>{g(e);const t=o.current;t&&(t.value=e,requestAnimationFrame(()=>{s()}))},m=()=>g("");return i?{value:a,setValue:h,clear:m}:{ref:u,value:a,setValue:h,clear:m}};exports.useTextareaAutosize=H;
2
+ //# sourceMappingURL=useTextareaAutosize.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTextareaAutosize.cjs","sources":["../../../../src/hooks/useTextareaAutosize/useTextareaAutosize.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use textarea autosize options */\nexport interface UseTextareaAutosizeOptions {\n /** The initial value for the textarea */\n initialValue?: string;\n /** Callback function called when the textarea size changes */\n onResize?: () => void;\n}\n\n/** The use textarea autosize return type */\nexport interface UseTextareaAutosizeReturn {\n /** The current value of the textarea */\n value: string;\n /** Function to clear the textarea value */\n clear: () => void;\n /** Function to set the textarea value */\n setValue: (value: string) => void;\n}\n\nexport interface UseTextareaAutosize {\n (target: HookTarget, options?: UseTextareaAutosizeOptions): UseTextareaAutosizeReturn;\n\n <Target extends HTMLTextAreaElement = HTMLTextAreaElement>(\n initialValue: string,\n target?: never\n ): UseTextareaAutosizeReturn & {\n ref: StateRef<Target>;\n };\n\n <Target extends HTMLTextAreaElement = HTMLTextAreaElement>(\n options?: UseTextareaAutosizeOptions,\n target?: never\n ): UseTextareaAutosizeReturn & {\n ref: StateRef<Target>;\n };\n}\n\n/**\n * @name useTextareaAutosize\n * @description - Hook that automatically adjusts textarea height based on content\n * @category Elements\n * @usage medium\n *\n * @overload\n * @param {HookTarget} target The target textarea element\n * @param {string} [options.initialValue] The initial value for the textarea\n * @param {Function} [options.onResize] Callback function called when the textarea size changes\n * @returns {UseTextareaAutosizeReturn} An object containing value, setValue and clear\n *\n * @example\n * const { value, setValue, clear } = useTextareaAutosize(ref);\n *\n * @overload\n * @template Target The textarea element type\n * @param {string} initialValue The initial value for the textarea\n * @returns {UseTextareaAutosizeReturn & { ref: StateRef<Target> }} An object containing ref, value, setValue and clear\n *\n * @example\n * const { ref, value, setValue, clear } = useTextareaAutosize('initial');\n *\n * @overload\n * @template Target The textarea element type\n * @param {string} [options.initialValue] The initial value for the textarea\n * @param {Function} [options.onResize] Callback function called when the textarea size changes\n * @returns {UseTextareaAutosizeReturn & { ref: StateRef<Target> }} An object containing ref, value, setValue and clear\n *\n * @example\n * const { ref, value, setValue, clear } = useTextareaAutosize();\n */\nexport const useTextareaAutosize = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n\n const options = (\n target ? params[1] : typeof params[0] === 'string' ? { initialValue: params[0] } : params[0]\n ) as UseTextareaAutosizeOptions | undefined;\n\n const [value, setValue] = useState(options?.initialValue ?? '');\n const internalRef = useRefState<HTMLTextAreaElement>();\n const textareaRef = useRef<HTMLTextAreaElement | null>(null);\n\n const onTextareaResize = () => {\n const textarea = textareaRef.current;\n if (!textarea) return;\n\n const originalMinHeight = textarea.style.minHeight;\n const originalMaxHeight = textarea.style.maxHeight;\n\n textarea.style.height = 'auto';\n textarea.style.minHeight = 'auto';\n textarea.style.maxHeight = 'none';\n\n const scrollHeight = textarea.scrollHeight;\n\n textarea.style.height = `${scrollHeight}px`;\n textarea.style.minHeight = originalMinHeight;\n textarea.style.maxHeight = originalMaxHeight;\n\n options?.onResize?.();\n };\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n\n const element = (\n target ? isTarget.getElement(target) : internalRef.current\n ) as HTMLTextAreaElement;\n if (!element) return;\n\n textareaRef.current = element;\n if (options?.initialValue) element.value = options.initialValue;\n\n onTextareaResize();\n\n const onInput = (event: InputEvent) => {\n const newValue = (event.target as HTMLTextAreaElement).value;\n setValue(newValue);\n\n requestAnimationFrame(() => {\n onTextareaResize();\n });\n };\n\n const onResize = () => {\n requestAnimationFrame(() => {\n onTextareaResize();\n });\n };\n\n element.addEventListener('input', onInput as EventListener);\n element.addEventListener('resize', onResize as EventListener);\n\n return () => {\n element.removeEventListener('input', onInput as EventListener);\n element.removeEventListener('resize', onResize as EventListener);\n };\n }, [target, internalRef.state, options?.initialValue]);\n\n useEffect(() => {\n const textarea = textareaRef.current;\n if (!textarea) return;\n textarea.value = value;\n requestAnimationFrame(() => {\n onTextareaResize();\n });\n }, [value]);\n\n const setTextareaValue = (newValue: string) => {\n setValue(newValue);\n const textarea = textareaRef.current;\n if (textarea) {\n textarea.value = newValue;\n requestAnimationFrame(() => {\n onTextareaResize();\n });\n }\n };\n\n const clear = () => setValue('');\n\n if (target)\n return {\n value,\n setValue: setTextareaValue,\n clear\n };\n return {\n ref: internalRef,\n value,\n setValue: setTextareaValue,\n clear\n };\n}) as UseTextareaAutosize;\n"],"names":["useTextareaAutosize","params","target","isTarget","options","value","setValue","useState","internalRef","useRefState","textareaRef","useRef","onTextareaResize","textarea","originalMinHeight","originalMaxHeight","scrollHeight","useEffect","element","onInput","event","newValue","onResize","setTextareaValue","clear"],"mappings":"mMA8EaA,EAAuB,IAAIC,IAAkB,CACxD,MAAMC,EAAUC,EAAAA,SAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAE5CG,EACJF,EAASD,EAAO,CAAC,EAAI,OAAOA,EAAO,CAAC,GAAM,SAAW,CAAE,aAAcA,EAAO,CAAC,CAAA,EAAMA,EAAO,CAAC,EAGvF,CAACI,EAAOC,CAAQ,EAAIC,EAAAA,SAASH,GAAS,cAAgB,EAAE,EACxDI,EAAcC,EAAAA,YAAA,EACdC,EAAcC,EAAAA,OAAmC,IAAI,EAErDC,EAAmB,IAAM,CAC7B,MAAMC,EAAWH,EAAY,QAC7B,GAAI,CAACG,EAAU,OAEf,MAAMC,EAAoBD,EAAS,MAAM,UACnCE,EAAoBF,EAAS,MAAM,UAEzCA,EAAS,MAAM,OAAS,OACxBA,EAAS,MAAM,UAAY,OAC3BA,EAAS,MAAM,UAAY,OAE3B,MAAMG,EAAeH,EAAS,aAE9BA,EAAS,MAAM,OAAS,GAAGG,CAAY,KACvCH,EAAS,MAAM,UAAYC,EAC3BD,EAAS,MAAM,UAAYE,EAE3BX,GAAS,WAAA,CAAW,EAGtBa,EAAAA,UAAU,IAAM,CACd,GAAI,CAACf,GAAU,CAACM,EAAY,MAAO,OAEnC,MAAMU,EACJhB,EAASC,EAAAA,SAAS,WAAWD,CAAM,EAAIM,EAAY,QAErD,GAAI,CAACU,EAAS,OAEdR,EAAY,QAAUQ,EAClBd,GAAS,eAAcc,EAAQ,MAAQd,EAAQ,cAEnDQ,EAAA,EAEA,MAAMO,EAAWC,GAAsB,CACrC,MAAMC,EAAYD,EAAM,OAA+B,MACvDd,EAASe,CAAQ,EAEjB,sBAAsB,IAAM,CAC1BT,EAAA,CAAiB,CAClB,CAAA,EAGGU,EAAW,IAAM,CACrB,sBAAsB,IAAM,CAC1BV,EAAA,CAAiB,CAClB,CAAA,EAGH,OAAAM,EAAQ,iBAAiB,QAASC,CAAwB,EAC1DD,EAAQ,iBAAiB,SAAUI,CAAyB,EAErD,IAAM,CACXJ,EAAQ,oBAAoB,QAASC,CAAwB,EAC7DD,EAAQ,oBAAoB,SAAUI,CAAyB,CAAA,CACjE,EACC,CAACpB,EAAQM,EAAY,MAAOJ,GAAS,YAAY,CAAC,EAErDa,EAAAA,UAAU,IAAM,CACd,MAAMJ,EAAWH,EAAY,QACxBG,IACLA,EAAS,MAAQR,EACjB,sBAAsB,IAAM,CAC1BO,EAAA,CAAiB,CAClB,EAAA,EACA,CAACP,CAAK,CAAC,EAEV,MAAMkB,EAAoBF,GAAqB,CAC7Cf,EAASe,CAAQ,EACjB,MAAMR,EAAWH,EAAY,QACzBG,IACFA,EAAS,MAAQQ,EACjB,sBAAsB,IAAM,CAC1BT,EAAA,CAAiB,CAClB,EACH,EAGIY,EAAQ,IAAMlB,EAAS,EAAE,EAE/B,OAAIJ,EACK,CACL,MAAAG,EACA,SAAUkB,EACV,MAAAC,CAAA,EAEG,CACL,IAAKhB,EACL,MAAAH,EACA,SAAUkB,EACV,MAAAC,CAAA,CAEJ"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const O=require("./helpers/createContext/createContext.cjs"),k=require("./helpers/createEventEmitter/createEventEmitter.cjs"),v=require("./helpers/createReactiveContext/createReactiveContext.cjs"),h=require("./helpers/createStore/createStore.cjs"),A=require("./hooks/useAsync/useAsync.cjs"),b=require("./hooks/useLockCallback/useLockCallback.cjs"),f=require("./hooks/useMutation/useMutation.cjs"),D=require("./hooks/useOptimistic/useOptimistic.cjs"),L=require("./hooks/useQuery/useQuery.cjs"),M=require("./hooks/useAudio/useAudio.cjs"),_=require("./hooks/useBattery/useBattery.cjs"),N=require("./hooks/useBluetooth/useBluetooth.cjs"),B=require("./hooks/useBroadcastChannel/useBroadcastChannel.cjs"),F=require("./hooks/useClipboard/useClipboard.cjs"),K=require("./hooks/useCopy/useCopy.cjs"),V=require("./hooks/useCssVar/useCssVar.cjs"),U=require("./hooks/useDisplayMedia/useDisplayMedia.cjs"),w=require("./hooks/useDocumentTitle/useDocumentTitle.cjs"),H=require("./hooks/useEventSource/useEventSource.cjs"),W=require("./hooks/useEyeDropper/useEyeDropper.cjs"),x=require("./hooks/useFavicon/useFavicon.cjs"),Q=require("./hooks/useFps/useFps.cjs"),z=require("./hooks/useFullscreen/useFullscreen.cjs"),n=require("./hooks/useGamepad/useGamepad.cjs"),G=require("./hooks/useGeolocation/useGeolocation.cjs"),c=require("./hooks/useMediaControls/useMediaControls.cjs"),X=require("./hooks/useMemory/useMemory.cjs"),a=require("./hooks/useNetwork/useNetwork.cjs"),Z=require("./hooks/useOnline/useOnline.cjs"),j=require("./hooks/useOtpCredential/useOtpCredential.cjs"),J=require("./hooks/usePermission/usePermission.cjs"),Y=require("./hooks/usePictureInPicture/usePictureInPicture.cjs"),$=require("./hooks/usePointerLock/usePointerLock.cjs"),ee=require("./hooks/usePostMessage/usePostMessage.cjs"),se=require("./hooks/useRaf/useRaf.cjs"),ue=require("./hooks/useShare/useShare.cjs"),l=require("./hooks/useSpeechRecognition/useSpeechRecognition.cjs"),re=require("./hooks/useSpeechSynthesis/useSpeechSynthesis.cjs"),te=require("./hooks/useVibrate/useVibrate.cjs"),oe=require("./hooks/useVirtualKeyboard/useVirtualKeyboard.cjs"),ie=require("./hooks/useWakeLock/useWakeLock.cjs"),ne=require("./hooks/useWebSocket/useWebSocket.cjs"),ce=require("./hooks/useLogger/useLogger.cjs"),ae=require("./hooks/useRenderCount/useRenderCount.cjs"),le=require("./hooks/useRenderInfo/useRenderInfo.cjs"),Se=require("./hooks/useRerender/useRerender.cjs"),qe=require("./hooks/useActiveElement/useActiveElement.cjs"),de=require("./hooks/useAutoScroll/useAutoScroll.cjs"),ge=require("./hooks/useClickOutside/useClickOutside.cjs"),S=require("./hooks/useDoubleClick/useDoubleClick.cjs"),Ee=require("./hooks/useDropZone/useDropZone.cjs"),Te=require("./hooks/useFileDialog/useFileDialog.cjs"),Ce=require("./hooks/useFocus/useFocus.cjs"),q=require("./hooks/useFocusTrap/useFocusTrap.cjs"),Pe=require("./hooks/useHover/useHover.cjs"),Re=require("./hooks/useImage/useImage.cjs"),me=require("./hooks/useLongPress/useLongPress.cjs"),r=require("./hooks/usePaint/usePaint.cjs"),ye=require("./hooks/useRightClick/useRightClick.cjs"),d=require("./hooks/useScript/useScript.cjs"),pe=require("./hooks/useSticky/useSticky.cjs"),Ie=require("./hooks/useTextDirection/useTextDirection.cjs"),Oe=require("./hooks/useFul/useFul.cjs"),ke=require("./hooks/useLess/useLess.cjs"),ve=require("./hooks/useOnce/useOnce.cjs"),he=require("./hooks/useAsyncEffect/useAsyncEffect.cjs"),Ae=require("./hooks/useDidUpdate/useDidUpdate.cjs"),be=require("./hooks/useIsFirstRender/useIsFirstRender.cjs"),fe=require("./hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs"),De=require("./hooks/useMount/useMount.cjs"),g=require("./hooks/useShallowEffect/useShallowEffect.cjs"),Le=require("./hooks/useUnmount/useUnmount.cjs"),e=require("./hooks/useBreakpoints/useBreakpoints.cjs"),Me=require("./hooks/useDeviceMotion/useDeviceMotion.cjs"),_e=require("./hooks/useDeviceOrientation/useDeviceOrientation.cjs"),Ne=require("./hooks/useDevicePixelRatio/useDevicePixelRatio.cjs"),Be=require("./hooks/useDocumentEvent/useDocumentEvent.cjs"),Fe=require("./hooks/useDocumentVisibility/useDocumentVisibility.cjs"),Ke=require("./hooks/useElementSize/useElementSize.cjs"),Ve=require("./hooks/useEventListener/useEventListener.cjs"),E=require("./hooks/useHotkeys/useHotkeys.cjs"),Ue=require("./hooks/useIdle/useIdle.cjs"),we=require("./hooks/useInfiniteScroll/useInfiniteScroll.cjs"),He=require("./hooks/useIntersectionObserver/useIntersectionObserver.cjs"),We=require("./hooks/useKeyboard/useKeyboard.cjs"),xe=require("./hooks/useKeyPress/useKeyPress.cjs"),Qe=require("./hooks/useKeyPressEvent/useKeyPressEvent.cjs"),ze=require("./hooks/useKeysPressed/useKeysPressed.cjs"),Ge=require("./hooks/useLockScroll/useLockScroll.cjs"),Xe=require("./hooks/useMeasure/useMeasure.cjs"),Ze=require("./hooks/useMediaQuery/useMediaQuery.cjs"),je=require("./hooks/useMouse/useMouse.cjs"),Je=require("./hooks/useMutationObserver/useMutationObserver.cjs"),Ye=require("./hooks/useOrientation/useOrientation.cjs"),$e=require("./hooks/usePageLeave/usePageLeave.cjs"),es=require("./hooks/useParallax/useParallax.cjs"),ss=require("./hooks/usePerformanceObserver/usePerformanceObserver.cjs"),us=require("./hooks/useResizeObserver/useResizeObserver.cjs"),rs=require("./hooks/useScroll/useScroll.cjs"),ts=require("./hooks/useScrollIntoView/useScrollIntoView.cjs"),os=require("./hooks/useScrollTo/useScrollTo.cjs"),T=require("./hooks/useTextSelection/useTextSelection.cjs"),is=require("./hooks/useVisibility/useVisibility.cjs"),ns=require("./hooks/useWindowEvent/useWindowEvent.cjs"),cs=require("./hooks/useWindowFocus/useWindowFocus.cjs"),C=require("./hooks/useWindowScroll/useWindowScroll.cjs"),as=require("./hooks/useWindowSize/useWindowSize.cjs"),ls=require("./hooks/useBoolean/useBoolean.cjs"),Ss=require("./hooks/useControllableState/useControllableState.cjs"),s=require("./hooks/useCookie/useCookie.cjs"),P=require("./hooks/useCookies/useCookies.cjs"),qs=require("./hooks/useCounter/useCounter.cjs"),ds=require("./hooks/useDefault/useDefault.cjs"),gs=require("./hooks/useDisclosure/useDisclosure.cjs"),Es=require("./hooks/useField/useField.cjs"),R=require("./hooks/useHash/useHash.cjs"),Ts=require("./hooks/useList/useList.cjs"),Cs=require("./hooks/useLocalStorage/useLocalStorage.cjs"),Ps=require("./hooks/useMap/useMap.cjs"),t=require("./hooks/useMergedRef/useMergedRef.cjs"),Rs=require("./hooks/useOffsetPagination/useOffsetPagination.cjs"),ms=require("./hooks/useQueue/useQueue.cjs"),ys=require("./hooks/useRafState/useRafState.cjs"),ps=require("./hooks/useRefState/useRefState.cjs"),Is=require("./hooks/useSessionStorage/useSessionStorage.cjs"),Os=require("./hooks/useSet/useSet.cjs"),m=require("./hooks/useStateHistory/useStateHistory.cjs"),ks=require("./hooks/useStep/useStep.cjs"),o=require("./hooks/useStorage/useStorage.cjs"),vs=require("./hooks/useToggle/useToggle.cjs"),u=require("./hooks/useUrlSearchParam/useUrlSearchParam.cjs"),hs=require("./hooks/useUrlSearchParams/useUrlSearchParams.cjs"),As=require("./hooks/useWizard/useWizard.cjs"),bs=require("./hooks/useInterval/useInterval.cjs"),fs=require("./hooks/useStopwatch/useStopwatch.cjs"),Ds=require("./hooks/useTime/useTime.cjs"),Ls=require("./hooks/useTimeout/useTimeout.cjs"),y=require("./hooks/useTimer/useTimer.cjs"),Ms=require("./hooks/useBrowserLanguage/useBrowserLanguage.cjs"),p=require("./hooks/useOperatingSystem/useOperatingSystem.cjs"),_s=require("./hooks/usePreferredColorScheme/usePreferredColorScheme.cjs"),Ns=require("./hooks/usePreferredContrast/usePreferredContrast.cjs"),Bs=require("./hooks/usePreferredDark/usePreferredDark.cjs"),Fs=require("./hooks/usePreferredLanguages/usePreferredLanguages.cjs"),Ks=require("./hooks/usePreferredReducedMotion/usePreferredReducedMotion.cjs"),Vs=require("./hooks/useConst/useConst.cjs"),Us=require("./hooks/useDebounceCallback/useDebounceCallback.cjs"),ws=require("./hooks/useDebounceState/useDebounceState.cjs"),Hs=require("./hooks/useDebounceValue/useDebounceValue.cjs"),Ws=require("./hooks/useEvent/useEvent.cjs"),xs=require("./hooks/useLastChanged/useLastChanged.cjs"),Qs=require("./hooks/useLatest/useLatest.cjs"),zs=require("./hooks/usePrevious/usePrevious.cjs"),Gs=require("./hooks/useThrottleCallback/useThrottleCallback.cjs"),Xs=require("./hooks/useThrottleState/useThrottleState.cjs"),Zs=require("./hooks/useThrottleValue/useThrottleValue.cjs"),I=require("./utils/helpers/copy.cjs"),js=require("./utils/helpers/debounce.cjs"),Js=require("./utils/helpers/getDate.cjs"),Ys=require("./utils/helpers/getRetry.cjs"),i=require("./utils/helpers/isTarget.cjs"),$s=require("./utils/helpers/throttle.cjs");exports.createContext=O.createContext;exports.createEventEmitter=k.createEventEmitter;exports.createReactiveContext=v.createReactiveContext;exports.createStore=h.createStore;exports.useAsync=A.useAsync;exports.useLockCallback=b.useLockCallback;exports.useMutation=f.useMutation;exports.useOptimistic=D.useOptimistic;exports.useQuery=L.useQuery;exports.useAudio=M.useAudio;exports.useBattery=_.useBattery;exports.useBluetooth=N.useBluetooth;exports.useBroadcastChannel=B.useBroadcastChannel;exports.useClipboard=F.useClipboard;exports.useCopy=K.useCopy;exports.useCssVar=V.useCssVar;exports.useDisplayMedia=U.useDisplayMedia;exports.useDocumentTitle=w.useDocumentTitle;exports.useEventSource=H.useEventSource;exports.useEyeDropper=W.useEyeDropper;exports.useFavicon=x.useFavicon;exports.useFps=Q.useFps;exports.useFullscreen=z.useFullscreen;exports.mapGamepadToXbox360Controller=n.mapGamepadToXbox360Controller;exports.useGamepad=n.useGamepad;exports.useGeolocation=G.useGeolocation;exports.timeRangeToArray=c.timeRangeToArray;exports.useMediaControls=c.useMediaControls;exports.useMemory=X.useMemory;exports.getConnection=a.getConnection;exports.useNetwork=a.useNetwork;exports.useOnline=Z.useOnline;exports.useOtpCredential=j.useOtpCredential;exports.usePermission=J.usePermission;exports.usePictureInPicture=Y.usePictureInPicture;exports.usePointerLock=$.usePointerLock;exports.usePostMessage=ee.usePostMessage;exports.useRaf=se.useRaf;exports.useShare=ue.useShare;exports.getSpeechRecognition=l.getSpeechRecognition;exports.useSpeechRecognition=l.useSpeechRecognition;exports.useSpeechSynthesis=re.useSpeechSynthesis;exports.useVibrate=te.useVibrate;exports.useVirtualKeyboard=oe.useVirtualKeyboard;exports.useWakeLock=ie.useWakeLock;exports.useWebSocket=ne.useWebSocket;exports.useLogger=ce.useLogger;exports.useRenderCount=ae.useRenderCount;exports.useRenderInfo=le.useRenderInfo;exports.useRerender=Se.useRerender;exports.useActiveElement=qe.useActiveElement;exports.useAutoScroll=de.useAutoScroll;exports.useClickOutside=ge.useClickOutside;exports.DEFAULT_THRESHOLD_TIME=S.DEFAULT_THRESHOLD_TIME;exports.useDoubleClick=S.useDoubleClick;exports.useDropZone=Ee.useDropZone;exports.useFileDialog=Te.useFileDialog;exports.useFocus=Ce.useFocus;exports.FOCUS_SELECTOR=q.FOCUS_SELECTOR;exports.useFocusTrap=q.useFocusTrap;exports.useHover=Pe.useHover;exports.useImage=Re.useImage;exports.useLongPress=me.useLongPress;exports.Paint=r.Paint;exports.Pointer=r.Pointer;exports.usePaint=r.usePaint;exports.useRightClick=ye.useRightClick;exports.SCRIPT_STATUS_ATTRIBUTE_NAME=d.SCRIPT_STATUS_ATTRIBUTE_NAME;exports.useScript=d.useScript;exports.useSticky=pe.useSticky;exports.useTextDirection=Ie.useTextDirection;exports.useFul=Oe.useFul;exports.useLess=ke.useLess;exports.useOnce=ve.useOnce;exports.useAsyncEffect=he.useAsyncEffect;exports.useDidUpdate=Ae.useDidUpdate;exports.useIsFirstRender=be.useIsFirstRender;exports.useIsomorphicLayoutEffect=fe.useIsomorphicLayoutEffect;exports.useMount=De.useMount;exports.deepEqual=g.deepEqual;exports.useShallowEffect=g.useShallowEffect;exports.useUnmount=Le.useUnmount;exports.BREAKPOINTS_ANT_DESIGN=e.BREAKPOINTS_ANT_DESIGN;exports.BREAKPOINTS_BOOTSTRAP_V5=e.BREAKPOINTS_BOOTSTRAP_V5;exports.BREAKPOINTS_MANTINE=e.BREAKPOINTS_MANTINE;exports.BREAKPOINTS_MASTER_CSS=e.BREAKPOINTS_MASTER_CSS;exports.BREAKPOINTS_MATERIAL_UI=e.BREAKPOINTS_MATERIAL_UI;exports.BREAKPOINTS_PRIME_FLEX=e.BREAKPOINTS_PRIME_FLEX;exports.BREAKPOINTS_QUASAR_V2=e.BREAKPOINTS_QUASAR_V2;exports.BREAKPOINTS_SEMANTIC=e.BREAKPOINTS_SEMANTIC;exports.BREAKPOINTS_TAILWIND=e.BREAKPOINTS_TAILWIND;exports.useBreakpoints=e.useBreakpoints;exports.useDeviceMotion=Me.useDeviceMotion;exports.useDeviceOrientation=_e.useDeviceOrientation;exports.useDevicePixelRatio=Ne.useDevicePixelRatio;exports.useDocumentEvent=Be.useDocumentEvent;exports.useDocumentVisibility=Fe.useDocumentVisibility;exports.useElementSize=Ke.useElementSize;exports.useEventListener=Ve.useEventListener;exports.isHotkeyMatch=E.isHotkeyMatch;exports.useHotkeys=E.useHotkeys;exports.useIdle=Ue.useIdle;exports.useInfiniteScroll=we.useInfiniteScroll;exports.useIntersectionObserver=He.useIntersectionObserver;exports.useKeyboard=We.useKeyboard;exports.useKeyPress=xe.useKeyPress;exports.useKeyPressEvent=Qe.useKeyPressEvent;exports.useKeysPressed=ze.useKeysPressed;exports.useLockScroll=Ge.useLockScroll;exports.useMeasure=Xe.useMeasure;exports.useMediaQuery=Ze.useMediaQuery;exports.useMouse=je.useMouse;exports.useMutationObserver=Je.useMutationObserver;exports.useOrientation=Ye.useOrientation;exports.usePageLeave=$e.usePageLeave;exports.useParallax=es.useParallax;exports.usePerformanceObserver=ss.usePerformanceObserver;exports.useResizeObserver=us.useResizeObserver;exports.useScroll=rs.useScroll;exports.useScrollIntoView=ts.useScrollIntoView;exports.useScrollTo=os.useScrollTo;exports.getRangesSelection=T.getRangesSelection;exports.useTextSelection=T.useTextSelection;exports.useVisibility=is.useVisibility;exports.useWindowEvent=ns.useWindowEvent;exports.useWindowFocus=cs.useWindowFocus;exports.scrollTo=C.scrollTo;exports.useWindowScroll=C.useWindowScroll;exports.useWindowSize=as.useWindowSize;exports.useBoolean=ls.useBoolean;exports.useControllableState=Ss.useControllableState;exports.COOKIE_EVENT=s.COOKIE_EVENT;exports.dispatchCookieEvent=s.dispatchCookieEvent;exports.getCookie=s.getCookie;exports.getCookies=s.getCookies;exports.removeCookie=s.removeCookie;exports.removeCookieItem=s.removeCookieItem;exports.setCookie=s.setCookie;exports.setCookieItem=s.setCookieItem;exports.useCookie=s.useCookie;exports.clearCookies=P.clearCookies;exports.useCookies=P.useCookies;exports.useCounter=qs.useCounter;exports.useDefault=ds.useDefault;exports.useDisclosure=gs.useDisclosure;exports.useField=Es.useField;exports.getHash=R.getHash;exports.useHash=R.useHash;exports.useList=Ts.useList;exports.useLocalStorage=Cs.useLocalStorage;exports.useMap=Ps.useMap;exports.assignRef=t.assignRef;exports.mergeRefs=t.mergeRefs;exports.useMergedRef=t.useMergedRef;exports.useOffsetPagination=Rs.useOffsetPagination;exports.useQueue=ms.useQueue;exports.useRafState=ys.useRafState;exports.useRefState=ps.useRefState;exports.useSessionStorage=Is.useSessionStorage;exports.useSet=Os.useSet;exports.stateHistoryReducer=m.stateHistoryReducer;exports.useStateHistory=m.useStateHistory;exports.useStep=ks.useStep;exports.STORAGE_EVENT=o.STORAGE_EVENT;exports.dispatchStorageEvent=o.dispatchStorageEvent;exports.useStorage=o.useStorage;exports.useToggle=vs.useToggle;exports.URL_SEARCH_PARAMS_EVENT=u.URL_SEARCH_PARAMS_EVENT;exports.createQueryString=u.createQueryString;exports.dispatchUrlSearchParamsEvent=u.dispatchUrlSearchParamsEvent;exports.getUrlSearchParams=u.getUrlSearchParams;exports.useUrlSearchParam=u.useUrlSearchParam;exports.useUrlSearchParams=hs.useUrlSearchParams;exports.useWizard=As.useWizard;exports.useInterval=bs.useInterval;exports.useStopwatch=fs.useStopwatch;exports.useTime=Ds.useTime;exports.useTimeout=Ls.useTimeout;exports.getTimeFromSeconds=y.getTimeFromSeconds;exports.useTimer=y.useTimer;exports.useBrowserLanguage=Ms.useBrowserLanguage;exports.getOperatingSystem=p.getOperatingSystem;exports.useOperatingSystem=p.useOperatingSystem;exports.usePreferredColorScheme=_s.usePreferredColorScheme;exports.usePreferredContrast=Ns.usePreferredContrast;exports.usePreferredDark=Bs.usePreferredDark;exports.usePreferredLanguages=Fs.usePreferredLanguages;exports.usePreferredReducedMotion=Ks.usePreferredReducedMotion;exports.useConst=Vs.useConst;exports.useDebounceCallback=Us.useDebounceCallback;exports.useDebounceState=ws.useDebounceState;exports.useDebounceValue=Hs.useDebounceValue;exports.useEvent=Ws.useEvent;exports.useLastChanged=xs.useLastChanged;exports.useLatest=Qs.useLatest;exports.usePrevious=zs.usePrevious;exports.useThrottleCallback=Gs.useThrottleCallback;exports.useThrottleState=Xs.useThrottleState;exports.useThrottleValue=Zs.useThrottleValue;exports.copy=I.copy;exports.legacyCopyToClipboard=I.legacyCopyToClipboard;exports.debounce=js.debounce;exports.getDate=Js.getDate;exports.getRetry=Ys.getRetry;exports.isTarget=i.isTarget;exports.target=i.target;exports.targetSymbol=i.targetSymbol;exports.throttle=$s.throttle;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const O=require("./helpers/createContext/createContext.cjs"),k=require("./helpers/createEventEmitter/createEventEmitter.cjs"),v=require("./helpers/createReactiveContext/createReactiveContext.cjs"),A=require("./helpers/createStore/createStore.cjs"),h=require("./hooks/useAsync/useAsync.cjs"),b=require("./hooks/useLockCallback/useLockCallback.cjs"),f=require("./hooks/useMutation/useMutation.cjs"),D=require("./hooks/useOptimistic/useOptimistic.cjs"),L=require("./hooks/useQuery/useQuery.cjs"),M=require("./hooks/useAudio/useAudio.cjs"),_=require("./hooks/useBattery/useBattery.cjs"),N=require("./hooks/useBluetooth/useBluetooth.cjs"),B=require("./hooks/useBroadcastChannel/useBroadcastChannel.cjs"),F=require("./hooks/useClipboard/useClipboard.cjs"),K=require("./hooks/useCopy/useCopy.cjs"),V=require("./hooks/useCssVar/useCssVar.cjs"),U=require("./hooks/useDisplayMedia/useDisplayMedia.cjs"),w=require("./hooks/useDocumentTitle/useDocumentTitle.cjs"),H=require("./hooks/useEventSource/useEventSource.cjs"),x=require("./hooks/useEyeDropper/useEyeDropper.cjs"),W=require("./hooks/useFavicon/useFavicon.cjs"),z=require("./hooks/useFps/useFps.cjs"),Q=require("./hooks/useFullscreen/useFullscreen.cjs"),n=require("./hooks/useGamepad/useGamepad.cjs"),G=require("./hooks/useGeolocation/useGeolocation.cjs"),c=require("./hooks/useMediaControls/useMediaControls.cjs"),X=require("./hooks/useMemory/useMemory.cjs"),a=require("./hooks/useNetwork/useNetwork.cjs"),Z=require("./hooks/useOnline/useOnline.cjs"),j=require("./hooks/useOtpCredential/useOtpCredential.cjs"),J=require("./hooks/usePermission/usePermission.cjs"),Y=require("./hooks/usePictureInPicture/usePictureInPicture.cjs"),$=require("./hooks/usePointerLock/usePointerLock.cjs"),ee=require("./hooks/usePostMessage/usePostMessage.cjs"),se=require("./hooks/useRaf/useRaf.cjs"),ue=require("./hooks/useShare/useShare.cjs"),l=require("./hooks/useSpeechRecognition/useSpeechRecognition.cjs"),re=require("./hooks/useSpeechSynthesis/useSpeechSynthesis.cjs"),te=require("./hooks/useVibrate/useVibrate.cjs"),oe=require("./hooks/useVirtualKeyboard/useVirtualKeyboard.cjs"),ie=require("./hooks/useWakeLock/useWakeLock.cjs"),ne=require("./hooks/useWebSocket/useWebSocket.cjs"),ce=require("./hooks/useLogger/useLogger.cjs"),ae=require("./hooks/useRenderCount/useRenderCount.cjs"),le=require("./hooks/useRenderInfo/useRenderInfo.cjs"),Se=require("./hooks/useRerender/useRerender.cjs"),qe=require("./hooks/useActiveElement/useActiveElement.cjs"),de=require("./hooks/useAutoScroll/useAutoScroll.cjs"),ge=require("./hooks/useClickOutside/useClickOutside.cjs"),S=require("./hooks/useDoubleClick/useDoubleClick.cjs"),Te=require("./hooks/useDropZone/useDropZone.cjs"),Ee=require("./hooks/useFileDialog/useFileDialog.cjs"),Ce=require("./hooks/useFocus/useFocus.cjs"),q=require("./hooks/useFocusTrap/useFocusTrap.cjs"),Pe=require("./hooks/useHover/useHover.cjs"),Re=require("./hooks/useImage/useImage.cjs"),me=require("./hooks/useLongPress/useLongPress.cjs"),r=require("./hooks/usePaint/usePaint.cjs"),ye=require("./hooks/useRightClick/useRightClick.cjs"),d=require("./hooks/useScript/useScript.cjs"),pe=require("./hooks/useSticky/useSticky.cjs"),Ie=require("./hooks/useTextareaAutosize/useTextareaAutosize.cjs"),Oe=require("./hooks/useTextDirection/useTextDirection.cjs"),ke=require("./hooks/useFul/useFul.cjs"),ve=require("./hooks/useLess/useLess.cjs"),Ae=require("./hooks/useOnce/useOnce.cjs"),he=require("./hooks/useAsyncEffect/useAsyncEffect.cjs"),be=require("./hooks/useDidUpdate/useDidUpdate.cjs"),fe=require("./hooks/useIsFirstRender/useIsFirstRender.cjs"),De=require("./hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs"),Le=require("./hooks/useMount/useMount.cjs"),g=require("./hooks/useShallowEffect/useShallowEffect.cjs"),Me=require("./hooks/useUnmount/useUnmount.cjs"),e=require("./hooks/useBreakpoints/useBreakpoints.cjs"),_e=require("./hooks/useDeviceMotion/useDeviceMotion.cjs"),Ne=require("./hooks/useDeviceOrientation/useDeviceOrientation.cjs"),Be=require("./hooks/useDevicePixelRatio/useDevicePixelRatio.cjs"),Fe=require("./hooks/useDocumentEvent/useDocumentEvent.cjs"),Ke=require("./hooks/useDocumentVisibility/useDocumentVisibility.cjs"),Ve=require("./hooks/useElementSize/useElementSize.cjs"),Ue=require("./hooks/useEventListener/useEventListener.cjs"),T=require("./hooks/useHotkeys/useHotkeys.cjs"),we=require("./hooks/useIdle/useIdle.cjs"),He=require("./hooks/useInfiniteScroll/useInfiniteScroll.cjs"),xe=require("./hooks/useIntersectionObserver/useIntersectionObserver.cjs"),We=require("./hooks/useKeyboard/useKeyboard.cjs"),ze=require("./hooks/useKeyPress/useKeyPress.cjs"),Qe=require("./hooks/useKeyPressEvent/useKeyPressEvent.cjs"),Ge=require("./hooks/useKeysPressed/useKeysPressed.cjs"),Xe=require("./hooks/useLockScroll/useLockScroll.cjs"),Ze=require("./hooks/useMeasure/useMeasure.cjs"),je=require("./hooks/useMediaQuery/useMediaQuery.cjs"),Je=require("./hooks/useMouse/useMouse.cjs"),Ye=require("./hooks/useMutationObserver/useMutationObserver.cjs"),$e=require("./hooks/useOrientation/useOrientation.cjs"),es=require("./hooks/usePageLeave/usePageLeave.cjs"),ss=require("./hooks/useParallax/useParallax.cjs"),us=require("./hooks/usePerformanceObserver/usePerformanceObserver.cjs"),rs=require("./hooks/useResizeObserver/useResizeObserver.cjs"),ts=require("./hooks/useScroll/useScroll.cjs"),os=require("./hooks/useScrollIntoView/useScrollIntoView.cjs"),is=require("./hooks/useScrollTo/useScrollTo.cjs"),E=require("./hooks/useTextSelection/useTextSelection.cjs"),ns=require("./hooks/useVisibility/useVisibility.cjs"),cs=require("./hooks/useWindowEvent/useWindowEvent.cjs"),as=require("./hooks/useWindowFocus/useWindowFocus.cjs"),C=require("./hooks/useWindowScroll/useWindowScroll.cjs"),ls=require("./hooks/useWindowSize/useWindowSize.cjs"),Ss=require("./hooks/useBoolean/useBoolean.cjs"),qs=require("./hooks/useControllableState/useControllableState.cjs"),s=require("./hooks/useCookie/useCookie.cjs"),P=require("./hooks/useCookies/useCookies.cjs"),ds=require("./hooks/useCounter/useCounter.cjs"),gs=require("./hooks/useDefault/useDefault.cjs"),Ts=require("./hooks/useDisclosure/useDisclosure.cjs"),Es=require("./hooks/useField/useField.cjs"),R=require("./hooks/useHash/useHash.cjs"),Cs=require("./hooks/useList/useList.cjs"),Ps=require("./hooks/useLocalStorage/useLocalStorage.cjs"),Rs=require("./hooks/useMap/useMap.cjs"),t=require("./hooks/useMergedRef/useMergedRef.cjs"),ms=require("./hooks/useOffsetPagination/useOffsetPagination.cjs"),ys=require("./hooks/useQueue/useQueue.cjs"),ps=require("./hooks/useRafState/useRafState.cjs"),Is=require("./hooks/useRefState/useRefState.cjs"),Os=require("./hooks/useSessionStorage/useSessionStorage.cjs"),ks=require("./hooks/useSet/useSet.cjs"),m=require("./hooks/useStateHistory/useStateHistory.cjs"),vs=require("./hooks/useStep/useStep.cjs"),o=require("./hooks/useStorage/useStorage.cjs"),As=require("./hooks/useToggle/useToggle.cjs"),u=require("./hooks/useUrlSearchParam/useUrlSearchParam.cjs"),hs=require("./hooks/useUrlSearchParams/useUrlSearchParams.cjs"),bs=require("./hooks/useWizard/useWizard.cjs"),fs=require("./hooks/useInterval/useInterval.cjs"),Ds=require("./hooks/useStopwatch/useStopwatch.cjs"),Ls=require("./hooks/useTime/useTime.cjs"),Ms=require("./hooks/useTimeout/useTimeout.cjs"),y=require("./hooks/useTimer/useTimer.cjs"),_s=require("./hooks/useBrowserLanguage/useBrowserLanguage.cjs"),p=require("./hooks/useOperatingSystem/useOperatingSystem.cjs"),Ns=require("./hooks/usePreferredColorScheme/usePreferredColorScheme.cjs"),Bs=require("./hooks/usePreferredContrast/usePreferredContrast.cjs"),Fs=require("./hooks/usePreferredDark/usePreferredDark.cjs"),Ks=require("./hooks/usePreferredLanguages/usePreferredLanguages.cjs"),Vs=require("./hooks/usePreferredReducedMotion/usePreferredReducedMotion.cjs"),Us=require("./hooks/useConst/useConst.cjs"),ws=require("./hooks/useDebounceCallback/useDebounceCallback.cjs"),Hs=require("./hooks/useDebounceState/useDebounceState.cjs"),xs=require("./hooks/useDebounceValue/useDebounceValue.cjs"),Ws=require("./hooks/useEvent/useEvent.cjs"),zs=require("./hooks/useLastChanged/useLastChanged.cjs"),Qs=require("./hooks/useLatest/useLatest.cjs"),Gs=require("./hooks/usePrevious/usePrevious.cjs"),Xs=require("./hooks/useThrottleCallback/useThrottleCallback.cjs"),Zs=require("./hooks/useThrottleState/useThrottleState.cjs"),js=require("./hooks/useThrottleValue/useThrottleValue.cjs"),I=require("./utils/helpers/copy.cjs"),Js=require("./utils/helpers/debounce.cjs"),Ys=require("./utils/helpers/getDate.cjs"),$s=require("./utils/helpers/getRetry.cjs"),i=require("./utils/helpers/isTarget.cjs"),eu=require("./utils/helpers/throttle.cjs");exports.createContext=O.createContext;exports.createEventEmitter=k.createEventEmitter;exports.createReactiveContext=v.createReactiveContext;exports.createStore=A.createStore;exports.useAsync=h.useAsync;exports.useLockCallback=b.useLockCallback;exports.useMutation=f.useMutation;exports.useOptimistic=D.useOptimistic;exports.useQuery=L.useQuery;exports.useAudio=M.useAudio;exports.useBattery=_.useBattery;exports.useBluetooth=N.useBluetooth;exports.useBroadcastChannel=B.useBroadcastChannel;exports.useClipboard=F.useClipboard;exports.useCopy=K.useCopy;exports.useCssVar=V.useCssVar;exports.useDisplayMedia=U.useDisplayMedia;exports.useDocumentTitle=w.useDocumentTitle;exports.useEventSource=H.useEventSource;exports.useEyeDropper=x.useEyeDropper;exports.useFavicon=W.useFavicon;exports.useFps=z.useFps;exports.useFullscreen=Q.useFullscreen;exports.mapGamepadToXbox360Controller=n.mapGamepadToXbox360Controller;exports.useGamepad=n.useGamepad;exports.useGeolocation=G.useGeolocation;exports.timeRangeToArray=c.timeRangeToArray;exports.useMediaControls=c.useMediaControls;exports.useMemory=X.useMemory;exports.getConnection=a.getConnection;exports.useNetwork=a.useNetwork;exports.useOnline=Z.useOnline;exports.useOtpCredential=j.useOtpCredential;exports.usePermission=J.usePermission;exports.usePictureInPicture=Y.usePictureInPicture;exports.usePointerLock=$.usePointerLock;exports.usePostMessage=ee.usePostMessage;exports.useRaf=se.useRaf;exports.useShare=ue.useShare;exports.getSpeechRecognition=l.getSpeechRecognition;exports.useSpeechRecognition=l.useSpeechRecognition;exports.useSpeechSynthesis=re.useSpeechSynthesis;exports.useVibrate=te.useVibrate;exports.useVirtualKeyboard=oe.useVirtualKeyboard;exports.useWakeLock=ie.useWakeLock;exports.useWebSocket=ne.useWebSocket;exports.useLogger=ce.useLogger;exports.useRenderCount=ae.useRenderCount;exports.useRenderInfo=le.useRenderInfo;exports.useRerender=Se.useRerender;exports.useActiveElement=qe.useActiveElement;exports.useAutoScroll=de.useAutoScroll;exports.useClickOutside=ge.useClickOutside;exports.DEFAULT_THRESHOLD_TIME=S.DEFAULT_THRESHOLD_TIME;exports.useDoubleClick=S.useDoubleClick;exports.useDropZone=Te.useDropZone;exports.useFileDialog=Ee.useFileDialog;exports.useFocus=Ce.useFocus;exports.FOCUS_SELECTOR=q.FOCUS_SELECTOR;exports.useFocusTrap=q.useFocusTrap;exports.useHover=Pe.useHover;exports.useImage=Re.useImage;exports.useLongPress=me.useLongPress;exports.Paint=r.Paint;exports.Pointer=r.Pointer;exports.usePaint=r.usePaint;exports.useRightClick=ye.useRightClick;exports.SCRIPT_STATUS_ATTRIBUTE_NAME=d.SCRIPT_STATUS_ATTRIBUTE_NAME;exports.useScript=d.useScript;exports.useSticky=pe.useSticky;exports.useTextareaAutosize=Ie.useTextareaAutosize;exports.useTextDirection=Oe.useTextDirection;exports.useFul=ke.useFul;exports.useLess=ve.useLess;exports.useOnce=Ae.useOnce;exports.useAsyncEffect=he.useAsyncEffect;exports.useDidUpdate=be.useDidUpdate;exports.useIsFirstRender=fe.useIsFirstRender;exports.useIsomorphicLayoutEffect=De.useIsomorphicLayoutEffect;exports.useMount=Le.useMount;exports.deepEqual=g.deepEqual;exports.useShallowEffect=g.useShallowEffect;exports.useUnmount=Me.useUnmount;exports.BREAKPOINTS_ANT_DESIGN=e.BREAKPOINTS_ANT_DESIGN;exports.BREAKPOINTS_BOOTSTRAP_V5=e.BREAKPOINTS_BOOTSTRAP_V5;exports.BREAKPOINTS_MANTINE=e.BREAKPOINTS_MANTINE;exports.BREAKPOINTS_MASTER_CSS=e.BREAKPOINTS_MASTER_CSS;exports.BREAKPOINTS_MATERIAL_UI=e.BREAKPOINTS_MATERIAL_UI;exports.BREAKPOINTS_PRIME_FLEX=e.BREAKPOINTS_PRIME_FLEX;exports.BREAKPOINTS_QUASAR_V2=e.BREAKPOINTS_QUASAR_V2;exports.BREAKPOINTS_SEMANTIC=e.BREAKPOINTS_SEMANTIC;exports.BREAKPOINTS_TAILWIND=e.BREAKPOINTS_TAILWIND;exports.useBreakpoints=e.useBreakpoints;exports.useDeviceMotion=_e.useDeviceMotion;exports.useDeviceOrientation=Ne.useDeviceOrientation;exports.useDevicePixelRatio=Be.useDevicePixelRatio;exports.useDocumentEvent=Fe.useDocumentEvent;exports.useDocumentVisibility=Ke.useDocumentVisibility;exports.useElementSize=Ve.useElementSize;exports.useEventListener=Ue.useEventListener;exports.isHotkeyMatch=T.isHotkeyMatch;exports.useHotkeys=T.useHotkeys;exports.useIdle=we.useIdle;exports.useInfiniteScroll=He.useInfiniteScroll;exports.useIntersectionObserver=xe.useIntersectionObserver;exports.useKeyboard=We.useKeyboard;exports.useKeyPress=ze.useKeyPress;exports.useKeyPressEvent=Qe.useKeyPressEvent;exports.useKeysPressed=Ge.useKeysPressed;exports.useLockScroll=Xe.useLockScroll;exports.useMeasure=Ze.useMeasure;exports.useMediaQuery=je.useMediaQuery;exports.useMouse=Je.useMouse;exports.useMutationObserver=Ye.useMutationObserver;exports.useOrientation=$e.useOrientation;exports.usePageLeave=es.usePageLeave;exports.useParallax=ss.useParallax;exports.usePerformanceObserver=us.usePerformanceObserver;exports.useResizeObserver=rs.useResizeObserver;exports.useScroll=ts.useScroll;exports.useScrollIntoView=os.useScrollIntoView;exports.useScrollTo=is.useScrollTo;exports.getRangesSelection=E.getRangesSelection;exports.useTextSelection=E.useTextSelection;exports.useVisibility=ns.useVisibility;exports.useWindowEvent=cs.useWindowEvent;exports.useWindowFocus=as.useWindowFocus;exports.scrollTo=C.scrollTo;exports.useWindowScroll=C.useWindowScroll;exports.useWindowSize=ls.useWindowSize;exports.useBoolean=Ss.useBoolean;exports.useControllableState=qs.useControllableState;exports.COOKIE_EVENT=s.COOKIE_EVENT;exports.dispatchCookieEvent=s.dispatchCookieEvent;exports.getCookie=s.getCookie;exports.getCookies=s.getCookies;exports.removeCookie=s.removeCookie;exports.removeCookieItem=s.removeCookieItem;exports.setCookie=s.setCookie;exports.setCookieItem=s.setCookieItem;exports.useCookie=s.useCookie;exports.clearCookies=P.clearCookies;exports.useCookies=P.useCookies;exports.useCounter=ds.useCounter;exports.useDefault=gs.useDefault;exports.useDisclosure=Ts.useDisclosure;exports.useField=Es.useField;exports.getHash=R.getHash;exports.useHash=R.useHash;exports.useList=Cs.useList;exports.useLocalStorage=Ps.useLocalStorage;exports.useMap=Rs.useMap;exports.assignRef=t.assignRef;exports.mergeRefs=t.mergeRefs;exports.useMergedRef=t.useMergedRef;exports.useOffsetPagination=ms.useOffsetPagination;exports.useQueue=ys.useQueue;exports.useRafState=ps.useRafState;exports.useRefState=Is.useRefState;exports.useSessionStorage=Os.useSessionStorage;exports.useSet=ks.useSet;exports.stateHistoryReducer=m.stateHistoryReducer;exports.useStateHistory=m.useStateHistory;exports.useStep=vs.useStep;exports.STORAGE_EVENT=o.STORAGE_EVENT;exports.dispatchStorageEvent=o.dispatchStorageEvent;exports.useStorage=o.useStorage;exports.useToggle=As.useToggle;exports.URL_SEARCH_PARAMS_EVENT=u.URL_SEARCH_PARAMS_EVENT;exports.createQueryString=u.createQueryString;exports.dispatchUrlSearchParamsEvent=u.dispatchUrlSearchParamsEvent;exports.getUrlSearchParams=u.getUrlSearchParams;exports.useUrlSearchParam=u.useUrlSearchParam;exports.useUrlSearchParams=hs.useUrlSearchParams;exports.useWizard=bs.useWizard;exports.useInterval=fs.useInterval;exports.useStopwatch=Ds.useStopwatch;exports.useTime=Ls.useTime;exports.useTimeout=Ms.useTimeout;exports.getTimeFromSeconds=y.getTimeFromSeconds;exports.useTimer=y.useTimer;exports.useBrowserLanguage=_s.useBrowserLanguage;exports.getOperatingSystem=p.getOperatingSystem;exports.useOperatingSystem=p.useOperatingSystem;exports.usePreferredColorScheme=Ns.usePreferredColorScheme;exports.usePreferredContrast=Bs.usePreferredContrast;exports.usePreferredDark=Fs.usePreferredDark;exports.usePreferredLanguages=Ks.usePreferredLanguages;exports.usePreferredReducedMotion=Vs.usePreferredReducedMotion;exports.useConst=Us.useConst;exports.useDebounceCallback=ws.useDebounceCallback;exports.useDebounceState=Hs.useDebounceState;exports.useDebounceValue=xs.useDebounceValue;exports.useEvent=Ws.useEvent;exports.useLastChanged=zs.useLastChanged;exports.useLatest=Qs.useLatest;exports.usePrevious=Gs.usePrevious;exports.useThrottleCallback=Xs.useThrottleCallback;exports.useThrottleState=Zs.useThrottleState;exports.useThrottleValue=js.useThrottleValue;exports.copy=I.copy;exports.legacyCopyToClipboard=I.legacyCopyToClipboard;exports.debounce=Js.debounce;exports.getDate=Ys.getDate;exports.getRetry=$s.getRetry;exports.isTarget=i.isTarget;exports.target=i.target;exports.targetSymbol=i.targetSymbol;exports.throttle=eu.throttle;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,50 +1,56 @@
1
- import { useState as o, useRef as h, useEffect as L } from "react";
2
- const w = (i, r = {}) => {
3
- const [l, c] = o(!1), [m, d] = o(r.volume ?? 1), [v, p] = o(r.playbackRate ?? 1), t = h(null);
4
- L(() => {
5
- const e = new Audio(i);
6
- e.volume = m, e.playbackRate = v, t.current = e, r.immediately && e.play();
7
- const n = () => c(!0), u = () => c(!1), a = () => c(!1), y = () => {
8
- }, f = () => d(e.volume), E = () => p(e.playbackRate);
9
- return e.addEventListener("play", n), e.addEventListener("pause", u), e.addEventListener("ended", a), e.addEventListener("timeupdate", y), e.addEventListener("volumechange", f), e.addEventListener("ratechange", E), () => {
10
- e.removeEventListener("play", n), e.removeEventListener("pause", u), e.removeEventListener("ended", a), e.removeEventListener("timeupdate", y), e.removeEventListener("volumechange", f), e.removeEventListener("ratechange", E), e.pause(), e.remove();
1
+ import { useState as o, useRef as h, useEffect as E } from "react";
2
+ const P = (l, a = {}) => {
3
+ const [i, r] = o(!1), [m, v] = o(a.volume ?? 1), [d, f] = o(a.playbackRate ?? 1), t = h(null);
4
+ E(() => {
5
+ const e = new Audio(l);
6
+ if (e.volume = m, e.playbackRate = d, t.current = e, a.immediately)
7
+ try {
8
+ r(!0), e.play();
9
+ } catch {
10
+ r(!1);
11
+ }
12
+ const n = () => r(!0), c = () => r(!1), u = () => r(!1), y = () => v(e.volume), p = () => f(e.playbackRate);
13
+ return e.addEventListener("play", n), e.addEventListener("pause", c), e.addEventListener("ended", u), e.addEventListener("volumechange", y), e.addEventListener("ratechange", p), () => {
14
+ e.removeEventListener("play", n), e.removeEventListener("pause", c), e.removeEventListener("ended", u), e.removeEventListener("volumechange", y), e.removeEventListener("ratechange", p), e.pause(), e.remove();
11
15
  };
12
- }, [i]);
16
+ }, [l]);
13
17
  const s = () => {
14
- t.current && (t.current.pause(), t.current.currentTime = 0);
18
+ t.current && (t.current.pause(), t.current.currentTime = 0, r(!1));
15
19
  };
16
20
  return {
17
21
  play: async (e) => {
18
22
  if (!t.current) return;
19
- if (r.interrupt && s(), !e || !r.sprite?.[e]) {
23
+ if (a.interrupt && s(), r(!0), !e || !a.sprite?.[e]) {
20
24
  await t.current.play();
21
25
  return;
22
26
  }
23
- const [n, u] = r.sprite[e];
27
+ const [n, c] = a.sprite[e];
24
28
  t.current.currentTime = n, await t.current.play();
25
- const a = () => {
26
- t.current && (t.current.currentTime >= u && s(), l && requestAnimationFrame(a));
29
+ const u = () => {
30
+ t.current && (t.current.currentTime >= c && s(), i && requestAnimationFrame(u));
27
31
  };
28
- requestAnimationFrame(a);
32
+ requestAnimationFrame(u);
33
+ },
34
+ pause: () => {
35
+ t.current && (t.current.pause(), r(!1));
29
36
  },
30
- pause: () => t.current?.pause(),
31
37
  stop: s,
32
- playing: l,
38
+ playing: i,
33
39
  setVolume: (e) => {
34
40
  if (!t.current) return;
35
41
  const n = Math.max(0, Math.min(1, e));
36
- t.current.volume = n, d(n);
42
+ t.current.volume = n, v(n);
37
43
  },
38
44
  volume: m,
39
45
  changePlaybackRate: (e) => {
40
46
  if (!t.current) return;
41
47
  const n = Math.max(0.5, Math.min(2, e));
42
- t.current.playbackRate = n, p(n);
48
+ t.current.playbackRate = n, f(n);
43
49
  },
44
- playbackRate: v
50
+ playbackRate: d
45
51
  };
46
52
  };
47
53
  export {
48
- w as useAudio
54
+ P as useAudio
49
55
  };
50
56
  //# sourceMappingURL=useAudio.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAudio.mjs","sources":["../../../../src/hooks/useAudio/useAudio.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/** Type sprite map */\nexport interface SpriteMap {\n /** [start time in seconds, end time in seconds] */\n [key: string]: [number, number];\n}\n\n/** Type use audio options */\nexport interface UseAudioOptions {\n /** Whether audio playback is initially enabled */\n immediately?: boolean;\n /** Whether to stop current playback when starting a new one */\n interrupt?: boolean;\n /** Initial playback speed (0.5 to 2) */\n playbackRate?: number;\n /** Map of named audio segments for sprite-based playback */\n sprite?: SpriteMap;\n /** Initial volume level (0 to 1) */\n volume?: number;\n}\n\n/** Type use audio return type */\nexport interface UseAudioReturn {\n /** Current playback speed (0.5 to 2) */\n playbackRate: number;\n /** Whether audio is currently playing */\n playing: boolean;\n /** Current volume level (0 to 1) */\n volume: number;\n /** Set playback speed (0.5 to 2) */\n changePlaybackRate: (value: number) => void;\n /** Pause audio playback at current position */\n pause: () => void;\n /** Start audio playback from the beginning or specified sprite segment */\n play: (sprite?: string) => Promise<void>;\n /** Set audio volume level (0 to 1) */\n setVolume: (value: number) => void;\n /** Stop audio playback and reset position to start */\n stop: () => void;\n}\n\n/**\n * @name useAudio\n * @description - Hook that manages audio playback with sprite support\n * @category Browser\n * @usage low\n\n * @browserapi Audio https://developer.mozilla.org/en-US/docs/Web/API/Audio\n *\n * @template Value The type of the value\n * @param {string} url The URL of the audio file to play\n * @param {UseAudioOptions} [options] Audio configuration options\n * @param {number} [options.volume=1] Initial volume level (0 to 1)\n * @param {number} [options.playbackRate=1] Initial playback speed (0.5 to 2)\n * @param {boolean} [options.interrupt=false] Whether to stop current playback when starting a new one\n * @param {boolean} [options.soundEnabled=true] Whether audio playback is initially enabled\n * @param {SpriteMap} [options.sprite] Map of named audio segments for sprite-based playback\n * @returns {UseAudioReturn} An object containing audio controls and state\n *\n * @example\n * const audio = useAudio(\"/path/to/sound.mp3\");\n */\nexport const useAudio = (src: string, options: UseAudioOptions = {}): UseAudioReturn => {\n const [playing, setPlaying] = useState(false);\n const [volume, setCurrentVolume] = useState(options.volume ?? 1);\n const [playbackRate, setPlaybackRate] = useState(options.playbackRate ?? 1);\n\n const audioRef = useRef<HTMLAudioElement | null>(null);\n\n useEffect(() => {\n const audio = new Audio(src);\n\n audio.volume = volume;\n audio.playbackRate = playbackRate;\n audioRef.current = audio;\n\n if (options.immediately) audio.play();\n\n const onPlay = () => setPlaying(true);\n const onPause = () => setPlaying(false);\n const onEnded = () => setPlaying(false);\n const onTimeUpdate = () => {};\n const onVolumeChange = () => setCurrentVolume(audio.volume);\n const onRateChange = () => setPlaybackRate(audio.playbackRate);\n\n audio.addEventListener('play', onPlay);\n audio.addEventListener('pause', onPause);\n audio.addEventListener('ended', onEnded);\n audio.addEventListener('timeupdate', onTimeUpdate);\n audio.addEventListener('volumechange', onVolumeChange);\n audio.addEventListener('ratechange', onRateChange);\n\n return () => {\n audio.removeEventListener('play', onPlay);\n audio.removeEventListener('pause', onPause);\n audio.removeEventListener('ended', onEnded);\n audio.removeEventListener('timeupdate', onTimeUpdate);\n audio.removeEventListener('volumechange', onVolumeChange);\n audio.removeEventListener('ratechange', onRateChange);\n\n audio.pause();\n audio.remove();\n };\n }, [src]);\n\n const stop = () => {\n if (!audioRef.current) return;\n audioRef.current.pause();\n audioRef.current.currentTime = 0;\n };\n\n const play = async (spriteName?: string) => {\n if (!audioRef.current) return;\n if (options.interrupt) stop();\n\n if (!spriteName || !options.sprite?.[spriteName]) {\n await audioRef.current.play();\n return;\n }\n\n const [start, end] = options.sprite[spriteName];\n audioRef.current.currentTime = start;\n await audioRef.current.play();\n\n const checkTime = () => {\n if (!audioRef.current) return;\n if (audioRef.current.currentTime >= end) {\n stop();\n }\n\n if (!playing) return;\n\n requestAnimationFrame(checkTime);\n };\n\n requestAnimationFrame(checkTime);\n };\n\n const pause = () => audioRef.current?.pause();\n\n const setVolume = (value: number) => {\n if (!audioRef.current) return;\n const newVolume = Math.max(0, Math.min(1, value));\n audioRef.current.volume = newVolume;\n setCurrentVolume(newVolume);\n };\n\n const changePlaybackRate = (value: number) => {\n if (!audioRef.current) return;\n const newRate = Math.max(0.5, Math.min(2, value));\n audioRef.current.playbackRate = newRate;\n setPlaybackRate(newRate);\n };\n\n return {\n play,\n pause,\n stop,\n playing,\n setVolume,\n volume,\n changePlaybackRate,\n playbackRate\n };\n};\n"],"names":["useAudio","src","options","playing","setPlaying","useState","volume","setCurrentVolume","playbackRate","setPlaybackRate","audioRef","useRef","useEffect","audio","onPlay","onPause","onEnded","onTimeUpdate","onVolumeChange","onRateChange","stop","spriteName","start","end","checkTime","value","newVolume","newRate"],"mappings":";AA+DO,MAAMA,IAAW,CAACC,GAAaC,IAA2B,OAAuB;AACtF,QAAM,CAACC,GAASC,CAAU,IAAIC,EAAS,EAAK,GACtC,CAACC,GAAQC,CAAgB,IAAIF,EAASH,EAAQ,UAAU,CAAC,GACzD,CAACM,GAAcC,CAAe,IAAIJ,EAASH,EAAQ,gBAAgB,CAAC,GAEpEQ,IAAWC,EAAgC,IAAI;AAErD,EAAAC,EAAU,MAAM;AACd,UAAMC,IAAQ,IAAI,MAAMZ,CAAG;AAE3B,IAAAY,EAAM,SAASP,GACfO,EAAM,eAAeL,GACrBE,EAAS,UAAUG,GAEfX,EAAQ,eAAaW,EAAM,KAAA;AAE/B,UAAMC,IAAS,MAAMV,EAAW,EAAI,GAC9BW,IAAU,MAAMX,EAAW,EAAK,GAChCY,IAAU,MAAMZ,EAAW,EAAK,GAChCa,IAAe,MAAM;AAAA,IAAA,GACrBC,IAAiB,MAAMX,EAAiBM,EAAM,MAAM,GACpDM,IAAe,MAAMV,EAAgBI,EAAM,YAAY;AAE7D,WAAAA,EAAM,iBAAiB,QAAQC,CAAM,GACrCD,EAAM,iBAAiB,SAASE,CAAO,GACvCF,EAAM,iBAAiB,SAASG,CAAO,GACvCH,EAAM,iBAAiB,cAAcI,CAAY,GACjDJ,EAAM,iBAAiB,gBAAgBK,CAAc,GACrDL,EAAM,iBAAiB,cAAcM,CAAY,GAE1C,MAAM;AACX,MAAAN,EAAM,oBAAoB,QAAQC,CAAM,GACxCD,EAAM,oBAAoB,SAASE,CAAO,GAC1CF,EAAM,oBAAoB,SAASG,CAAO,GAC1CH,EAAM,oBAAoB,cAAcI,CAAY,GACpDJ,EAAM,oBAAoB,gBAAgBK,CAAc,GACxDL,EAAM,oBAAoB,cAAcM,CAAY,GAEpDN,EAAM,MAAA,GACNA,EAAM,OAAA;AAAA,IAAO;AAAA,EACf,GACC,CAACZ,CAAG,CAAC;AAER,QAAMmB,IAAO,MAAM;AACjB,IAAKV,EAAS,YACdA,EAAS,QAAQ,MAAA,GACjBA,EAAS,QAAQ,cAAc;AAAA,EAAA;AA8CjC,SAAO;AAAA,IACL,MA5CW,OAAOW,MAAwB;AAC1C,UAAI,CAACX,EAAS,QAAS;AAGvB,UAFIR,EAAQ,aAAWkB,EAAA,GAEnB,CAACC,KAAc,CAACnB,EAAQ,SAASmB,CAAU,GAAG;AAChD,cAAMX,EAAS,QAAQ,KAAA;AACvB;AAAA,MAAA;AAGF,YAAM,CAACY,GAAOC,CAAG,IAAIrB,EAAQ,OAAOmB,CAAU;AAC9C,MAAAX,EAAS,QAAQ,cAAcY,GAC/B,MAAMZ,EAAS,QAAQ,KAAA;AAEvB,YAAMc,IAAY,MAAM;AACtB,QAAKd,EAAS,YACVA,EAAS,QAAQ,eAAea,KAClCH,EAAA,GAGGjB,KAEL,sBAAsBqB,CAAS;AAAA,MAAA;AAGjC,4BAAsBA,CAAS;AAAA,IAAA;AAAA,IAqB/B,OAlBY,MAAMd,EAAS,SAAS,MAAA;AAAA,IAmBpC,MAAAU;AAAA,IACA,SAAAjB;AAAA,IACA,WAnBgB,CAACsB,MAAkB;AACnC,UAAI,CAACf,EAAS,QAAS;AACvB,YAAMgB,IAAY,KAAK,IAAI,GAAG,KAAK,IAAI,GAAGD,CAAK,CAAC;AAChD,MAAAf,EAAS,QAAQ,SAASgB,GAC1BnB,EAAiBmB,CAAS;AAAA,IAAA;AAAA,IAgB1B,QAAApB;AAAA,IACA,oBAdyB,CAACmB,MAAkB;AAC5C,UAAI,CAACf,EAAS,QAAS;AACvB,YAAMiB,IAAU,KAAK,IAAI,KAAK,KAAK,IAAI,GAAGF,CAAK,CAAC;AAChD,MAAAf,EAAS,QAAQ,eAAeiB,GAChClB,EAAgBkB,CAAO;AAAA,IAAA;AAAA,IAWvB,cAAAnB;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"useAudio.mjs","sources":["../../../../src/hooks/useAudio/useAudio.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/** Type sprite map */\nexport interface SpriteMap {\n /** [start time in seconds, end time in seconds] */\n [key: string]: [number, number];\n}\n\n/** Type use audio options */\nexport interface UseAudioOptions {\n /** Whether audio playback is initially enabled */\n immediately?: boolean;\n /** Whether to stop current playback when starting a new one */\n interrupt?: boolean;\n /** Initial playback speed (0.5 to 2) */\n playbackRate?: number;\n /** Map of named audio segments for sprite-based playback */\n sprite?: SpriteMap;\n /** Initial volume level (0 to 1) */\n volume?: number;\n}\n\n/** Type use audio return type */\nexport interface UseAudioReturn {\n /** Current playback speed (0.5 to 2) */\n playbackRate: number;\n /** Whether audio is currently playing */\n playing: boolean;\n /** Current volume level (0 to 1) */\n volume: number;\n /** Set playback speed (0.5 to 2) */\n changePlaybackRate: (value: number) => void;\n /** Pause audio playback at current position */\n pause: () => void;\n /** Start audio playback from the beginning or specified sprite segment */\n play: (sprite?: string) => Promise<void>;\n /** Set audio volume level (0 to 1) */\n setVolume: (value: number) => void;\n /** Stop audio playback and reset position to start */\n stop: () => void;\n}\n\n/**\n * @name useAudio\n * @description - Hook that manages audio playback with sprite support\n * @category Browser\n * @usage low\n\n * @browserapi Audio https://developer.mozilla.org/en-US/docs/Web/API/Audio\n *\n * @template Value The type of the value\n * @param {string} url The URL of the audio file to play\n * @param {UseAudioOptions} [options] Audio configuration options\n * @param {number} [options.volume=1] Initial volume level (0 to 1)\n * @param {number} [options.playbackRate=1] Initial playback speed (0.5 to 2)\n * @param {boolean} [options.interrupt=false] Whether to stop current playback when starting a new one\n * @param {boolean} [options.soundEnabled=true] Whether audio playback is initially enabled\n * @param {SpriteMap} [options.sprite] Map of named audio segments for sprite-based playback\n * @returns {UseAudioReturn} An object containing audio controls and state\n *\n * @example\n * const audio = useAudio(\"/path/to/sound.mp3\");\n */\nexport const useAudio = (src: string, options: UseAudioOptions = {}): UseAudioReturn => {\n const [playing, setPlaying] = useState(false);\n const [volume, setCurrentVolume] = useState(options.volume ?? 1);\n const [playbackRate, setPlaybackRate] = useState(options.playbackRate ?? 1);\n\n const audioRef = useRef<HTMLAudioElement | null>(null);\n\n useEffect(() => {\n const audio = new Audio(src);\n\n audio.volume = volume;\n audio.playbackRate = playbackRate;\n audioRef.current = audio;\n\n if (options.immediately) {\n try {\n setPlaying(true);\n audio.play();\n } catch {\n setPlaying(false);\n }\n }\n\n const onPlay = () => setPlaying(true);\n const onPause = () => setPlaying(false);\n const onEnded = () => setPlaying(false);\n const onVolumeChange = () => setCurrentVolume(audio.volume);\n const onRateChange = () => setPlaybackRate(audio.playbackRate);\n\n audio.addEventListener('play', onPlay);\n audio.addEventListener('pause', onPause);\n audio.addEventListener('ended', onEnded);\n audio.addEventListener('volumechange', onVolumeChange);\n audio.addEventListener('ratechange', onRateChange);\n\n return () => {\n audio.removeEventListener('play', onPlay);\n audio.removeEventListener('pause', onPause);\n audio.removeEventListener('ended', onEnded);\n audio.removeEventListener('volumechange', onVolumeChange);\n audio.removeEventListener('ratechange', onRateChange);\n\n audio.pause();\n audio.remove();\n };\n }, [src]);\n\n const stop = () => {\n if (!audioRef.current) return;\n audioRef.current.pause();\n audioRef.current.currentTime = 0;\n setPlaying(false);\n };\n\n const play = async (spriteName?: string) => {\n if (!audioRef.current) return;\n if (options.interrupt) stop();\n\n setPlaying(true);\n\n if (!spriteName || !options.sprite?.[spriteName]) {\n await audioRef.current.play();\n return;\n }\n\n const [start, end] = options.sprite[spriteName];\n audioRef.current.currentTime = start;\n await audioRef.current.play();\n\n const checkTime = () => {\n if (!audioRef.current) return;\n if (audioRef.current.currentTime >= end) {\n stop();\n }\n\n if (!playing) return;\n\n requestAnimationFrame(checkTime);\n };\n\n requestAnimationFrame(checkTime);\n };\n\n const pause = () => {\n if (!audioRef.current) return;\n audioRef.current.pause();\n setPlaying(false);\n };\n\n const setVolume = (value: number) => {\n if (!audioRef.current) return;\n const newVolume = Math.max(0, Math.min(1, value));\n audioRef.current.volume = newVolume;\n setCurrentVolume(newVolume);\n };\n\n const changePlaybackRate = (value: number) => {\n if (!audioRef.current) return;\n const newRate = Math.max(0.5, Math.min(2, value));\n audioRef.current.playbackRate = newRate;\n setPlaybackRate(newRate);\n };\n\n return {\n play,\n pause,\n stop,\n playing,\n setVolume,\n volume,\n changePlaybackRate,\n playbackRate\n };\n};\n"],"names":["useAudio","src","options","playing","setPlaying","useState","volume","setCurrentVolume","playbackRate","setPlaybackRate","audioRef","useRef","useEffect","audio","onPlay","onPause","onEnded","onVolumeChange","onRateChange","stop","spriteName","start","end","checkTime","value","newVolume","newRate"],"mappings":";AA+DO,MAAMA,IAAW,CAACC,GAAaC,IAA2B,OAAuB;AACtF,QAAM,CAACC,GAASC,CAAU,IAAIC,EAAS,EAAK,GACtC,CAACC,GAAQC,CAAgB,IAAIF,EAASH,EAAQ,UAAU,CAAC,GACzD,CAACM,GAAcC,CAAe,IAAIJ,EAASH,EAAQ,gBAAgB,CAAC,GAEpEQ,IAAWC,EAAgC,IAAI;AAErD,EAAAC,EAAU,MAAM;AACd,UAAMC,IAAQ,IAAI,MAAMZ,CAAG;AAM3B,QAJAY,EAAM,SAASP,GACfO,EAAM,eAAeL,GACrBE,EAAS,UAAUG,GAEfX,EAAQ;AACV,UAAI;AACF,QAAAE,EAAW,EAAI,GACfS,EAAM,KAAA;AAAA,MAAK,QACL;AACN,QAAAT,EAAW,EAAK;AAAA,MAAA;AAIpB,UAAMU,IAAS,MAAMV,EAAW,EAAI,GAC9BW,IAAU,MAAMX,EAAW,EAAK,GAChCY,IAAU,MAAMZ,EAAW,EAAK,GAChCa,IAAiB,MAAMV,EAAiBM,EAAM,MAAM,GACpDK,IAAe,MAAMT,EAAgBI,EAAM,YAAY;AAE7D,WAAAA,EAAM,iBAAiB,QAAQC,CAAM,GACrCD,EAAM,iBAAiB,SAASE,CAAO,GACvCF,EAAM,iBAAiB,SAASG,CAAO,GACvCH,EAAM,iBAAiB,gBAAgBI,CAAc,GACrDJ,EAAM,iBAAiB,cAAcK,CAAY,GAE1C,MAAM;AACX,MAAAL,EAAM,oBAAoB,QAAQC,CAAM,GACxCD,EAAM,oBAAoB,SAASE,CAAO,GAC1CF,EAAM,oBAAoB,SAASG,CAAO,GAC1CH,EAAM,oBAAoB,gBAAgBI,CAAc,GACxDJ,EAAM,oBAAoB,cAAcK,CAAY,GAEpDL,EAAM,MAAA,GACNA,EAAM,OAAA;AAAA,IAAO;AAAA,EACf,GACC,CAACZ,CAAG,CAAC;AAER,QAAMkB,IAAO,MAAM;AACjB,IAAKT,EAAS,YACdA,EAAS,QAAQ,MAAA,GACjBA,EAAS,QAAQ,cAAc,GAC/BN,EAAW,EAAK;AAAA,EAAA;AAoDlB,SAAO;AAAA,IACL,MAlDW,OAAOgB,MAAwB;AAC1C,UAAI,CAACV,EAAS,QAAS;AAKvB,UAJIR,EAAQ,aAAWiB,EAAA,GAEvBf,EAAW,EAAI,GAEX,CAACgB,KAAc,CAAClB,EAAQ,SAASkB,CAAU,GAAG;AAChD,cAAMV,EAAS,QAAQ,KAAA;AACvB;AAAA,MAAA;AAGF,YAAM,CAACW,GAAOC,CAAG,IAAIpB,EAAQ,OAAOkB,CAAU;AAC9C,MAAAV,EAAS,QAAQ,cAAcW,GAC/B,MAAMX,EAAS,QAAQ,KAAA;AAEvB,YAAMa,IAAY,MAAM;AACtB,QAAKb,EAAS,YACVA,EAAS,QAAQ,eAAeY,KAClCH,EAAA,GAGGhB,KAEL,sBAAsBoB,CAAS;AAAA,MAAA;AAGjC,4BAAsBA,CAAS;AAAA,IAAA;AAAA,IAyB/B,OAtBY,MAAM;AAClB,MAAKb,EAAS,YACdA,EAAS,QAAQ,MAAA,GACjBN,EAAW,EAAK;AAAA,IAAA;AAAA,IAoBhB,MAAAe;AAAA,IACA,SAAAhB;AAAA,IACA,WAnBgB,CAACqB,MAAkB;AACnC,UAAI,CAACd,EAAS,QAAS;AACvB,YAAMe,IAAY,KAAK,IAAI,GAAG,KAAK,IAAI,GAAGD,CAAK,CAAC;AAChD,MAAAd,EAAS,QAAQ,SAASe,GAC1BlB,EAAiBkB,CAAS;AAAA,IAAA;AAAA,IAgB1B,QAAAnB;AAAA,IACA,oBAdyB,CAACkB,MAAkB;AAC5C,UAAI,CAACd,EAAS,QAAS;AACvB,YAAMgB,IAAU,KAAK,IAAI,KAAK,KAAK,IAAI,GAAGF,CAAK,CAAC;AAChD,MAAAd,EAAS,QAAQ,eAAegB,GAChCjB,EAAgBiB,CAAO;AAAA,IAAA;AAAA,IAWvB,cAAAlB;AAAA,EAAA;AAEJ;"}
@@ -0,0 +1,58 @@
1
+ import { useState as H, useRef as y, useEffect as h } from "react";
2
+ import { useRefState as V } from "../useRefState/useRefState.mjs";
3
+ import { isTarget as x } from "../../utils/helpers/isTarget.mjs";
4
+ const d = (...n) => {
5
+ const i = x(n[0]) ? n[0] : void 0, r = i ? n[1] : typeof n[0] == "string" ? { initialValue: n[0] } : n[0], [a, c] = H(r?.initialValue ?? ""), o = V(), u = y(null), s = () => {
6
+ const e = u.current;
7
+ if (!e) return;
8
+ const t = e.style.minHeight, l = e.style.maxHeight;
9
+ e.style.height = "auto", e.style.minHeight = "auto", e.style.maxHeight = "none";
10
+ const g = e.scrollHeight;
11
+ e.style.height = `${g}px`, e.style.minHeight = t, e.style.maxHeight = l, r?.onResize?.();
12
+ };
13
+ h(() => {
14
+ if (!i && !o.state) return;
15
+ const e = i ? x.getElement(i) : o.current;
16
+ if (!e) return;
17
+ u.current = e, r?.initialValue && (e.value = r.initialValue), s();
18
+ const t = (g) => {
19
+ const v = g.target.value;
20
+ c(v), requestAnimationFrame(() => {
21
+ s();
22
+ });
23
+ }, l = () => {
24
+ requestAnimationFrame(() => {
25
+ s();
26
+ });
27
+ };
28
+ return e.addEventListener("input", t), e.addEventListener("resize", l), () => {
29
+ e.removeEventListener("input", t), e.removeEventListener("resize", l);
30
+ };
31
+ }, [i, o.state, r?.initialValue]), h(() => {
32
+ const e = u.current;
33
+ e && (e.value = a, requestAnimationFrame(() => {
34
+ s();
35
+ }));
36
+ }, [a]);
37
+ const m = (e) => {
38
+ c(e);
39
+ const t = u.current;
40
+ t && (t.value = e, requestAnimationFrame(() => {
41
+ s();
42
+ }));
43
+ }, f = () => c("");
44
+ return i ? {
45
+ value: a,
46
+ setValue: m,
47
+ clear: f
48
+ } : {
49
+ ref: o,
50
+ value: a,
51
+ setValue: m,
52
+ clear: f
53
+ };
54
+ };
55
+ export {
56
+ d as useTextareaAutosize
57
+ };
58
+ //# sourceMappingURL=useTextareaAutosize.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTextareaAutosize.mjs","sources":["../../../../src/hooks/useTextareaAutosize/useTextareaAutosize.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\n/** The use textarea autosize options */\nexport interface UseTextareaAutosizeOptions {\n /** The initial value for the textarea */\n initialValue?: string;\n /** Callback function called when the textarea size changes */\n onResize?: () => void;\n}\n\n/** The use textarea autosize return type */\nexport interface UseTextareaAutosizeReturn {\n /** The current value of the textarea */\n value: string;\n /** Function to clear the textarea value */\n clear: () => void;\n /** Function to set the textarea value */\n setValue: (value: string) => void;\n}\n\nexport interface UseTextareaAutosize {\n (target: HookTarget, options?: UseTextareaAutosizeOptions): UseTextareaAutosizeReturn;\n\n <Target extends HTMLTextAreaElement = HTMLTextAreaElement>(\n initialValue: string,\n target?: never\n ): UseTextareaAutosizeReturn & {\n ref: StateRef<Target>;\n };\n\n <Target extends HTMLTextAreaElement = HTMLTextAreaElement>(\n options?: UseTextareaAutosizeOptions,\n target?: never\n ): UseTextareaAutosizeReturn & {\n ref: StateRef<Target>;\n };\n}\n\n/**\n * @name useTextareaAutosize\n * @description - Hook that automatically adjusts textarea height based on content\n * @category Elements\n * @usage medium\n *\n * @overload\n * @param {HookTarget} target The target textarea element\n * @param {string} [options.initialValue] The initial value for the textarea\n * @param {Function} [options.onResize] Callback function called when the textarea size changes\n * @returns {UseTextareaAutosizeReturn} An object containing value, setValue and clear\n *\n * @example\n * const { value, setValue, clear } = useTextareaAutosize(ref);\n *\n * @overload\n * @template Target The textarea element type\n * @param {string} initialValue The initial value for the textarea\n * @returns {UseTextareaAutosizeReturn & { ref: StateRef<Target> }} An object containing ref, value, setValue and clear\n *\n * @example\n * const { ref, value, setValue, clear } = useTextareaAutosize('initial');\n *\n * @overload\n * @template Target The textarea element type\n * @param {string} [options.initialValue] The initial value for the textarea\n * @param {Function} [options.onResize] Callback function called when the textarea size changes\n * @returns {UseTextareaAutosizeReturn & { ref: StateRef<Target> }} An object containing ref, value, setValue and clear\n *\n * @example\n * const { ref, value, setValue, clear } = useTextareaAutosize();\n */\nexport const useTextareaAutosize = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n\n const options = (\n target ? params[1] : typeof params[0] === 'string' ? { initialValue: params[0] } : params[0]\n ) as UseTextareaAutosizeOptions | undefined;\n\n const [value, setValue] = useState(options?.initialValue ?? '');\n const internalRef = useRefState<HTMLTextAreaElement>();\n const textareaRef = useRef<HTMLTextAreaElement | null>(null);\n\n const onTextareaResize = () => {\n const textarea = textareaRef.current;\n if (!textarea) return;\n\n const originalMinHeight = textarea.style.minHeight;\n const originalMaxHeight = textarea.style.maxHeight;\n\n textarea.style.height = 'auto';\n textarea.style.minHeight = 'auto';\n textarea.style.maxHeight = 'none';\n\n const scrollHeight = textarea.scrollHeight;\n\n textarea.style.height = `${scrollHeight}px`;\n textarea.style.minHeight = originalMinHeight;\n textarea.style.maxHeight = originalMaxHeight;\n\n options?.onResize?.();\n };\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n\n const element = (\n target ? isTarget.getElement(target) : internalRef.current\n ) as HTMLTextAreaElement;\n if (!element) return;\n\n textareaRef.current = element;\n if (options?.initialValue) element.value = options.initialValue;\n\n onTextareaResize();\n\n const onInput = (event: InputEvent) => {\n const newValue = (event.target as HTMLTextAreaElement).value;\n setValue(newValue);\n\n requestAnimationFrame(() => {\n onTextareaResize();\n });\n };\n\n const onResize = () => {\n requestAnimationFrame(() => {\n onTextareaResize();\n });\n };\n\n element.addEventListener('input', onInput as EventListener);\n element.addEventListener('resize', onResize as EventListener);\n\n return () => {\n element.removeEventListener('input', onInput as EventListener);\n element.removeEventListener('resize', onResize as EventListener);\n };\n }, [target, internalRef.state, options?.initialValue]);\n\n useEffect(() => {\n const textarea = textareaRef.current;\n if (!textarea) return;\n textarea.value = value;\n requestAnimationFrame(() => {\n onTextareaResize();\n });\n }, [value]);\n\n const setTextareaValue = (newValue: string) => {\n setValue(newValue);\n const textarea = textareaRef.current;\n if (textarea) {\n textarea.value = newValue;\n requestAnimationFrame(() => {\n onTextareaResize();\n });\n }\n };\n\n const clear = () => setValue('');\n\n if (target)\n return {\n value,\n setValue: setTextareaValue,\n clear\n };\n return {\n ref: internalRef,\n value,\n setValue: setTextareaValue,\n clear\n };\n}) as UseTextareaAutosize;\n"],"names":["useTextareaAutosize","params","target","isTarget","options","value","setValue","useState","internalRef","useRefState","textareaRef","useRef","onTextareaResize","textarea","originalMinHeight","originalMaxHeight","scrollHeight","useEffect","element","onInput","event","newValue","onResize","setTextareaValue","clear"],"mappings":";;;AA8EO,MAAMA,IAAuB,IAAIC,MAAkB;AACxD,QAAMC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAE5CG,IACJF,IAASD,EAAO,CAAC,IAAI,OAAOA,EAAO,CAAC,KAAM,WAAW,EAAE,cAAcA,EAAO,CAAC,EAAA,IAAMA,EAAO,CAAC,GAGvF,CAACI,GAAOC,CAAQ,IAAIC,EAASH,GAAS,gBAAgB,EAAE,GACxDI,IAAcC,EAAA,GACdC,IAAcC,EAAmC,IAAI,GAErDC,IAAmB,MAAM;AAC7B,UAAMC,IAAWH,EAAY;AAC7B,QAAI,CAACG,EAAU;AAEf,UAAMC,IAAoBD,EAAS,MAAM,WACnCE,IAAoBF,EAAS,MAAM;AAEzC,IAAAA,EAAS,MAAM,SAAS,QACxBA,EAAS,MAAM,YAAY,QAC3BA,EAAS,MAAM,YAAY;AAE3B,UAAMG,IAAeH,EAAS;AAE9B,IAAAA,EAAS,MAAM,SAAS,GAAGG,CAAY,MACvCH,EAAS,MAAM,YAAYC,GAC3BD,EAAS,MAAM,YAAYE,GAE3BX,GAAS,WAAA;AAAA,EAAW;AAGtB,EAAAa,EAAU,MAAM;AACd,QAAI,CAACf,KAAU,CAACM,EAAY,MAAO;AAEnC,UAAMU,IACJhB,IAASC,EAAS,WAAWD,CAAM,IAAIM,EAAY;AAErD,QAAI,CAACU,EAAS;AAEd,IAAAR,EAAY,UAAUQ,GAClBd,GAAS,iBAAcc,EAAQ,QAAQd,EAAQ,eAEnDQ,EAAA;AAEA,UAAMO,IAAU,CAACC,MAAsB;AACrC,YAAMC,IAAYD,EAAM,OAA+B;AACvD,MAAAd,EAASe,CAAQ,GAEjB,sBAAsB,MAAM;AAC1B,QAAAT,EAAA;AAAA,MAAiB,CAClB;AAAA,IAAA,GAGGU,IAAW,MAAM;AACrB,4BAAsB,MAAM;AAC1B,QAAAV,EAAA;AAAA,MAAiB,CAClB;AAAA,IAAA;AAGH,WAAAM,EAAQ,iBAAiB,SAASC,CAAwB,GAC1DD,EAAQ,iBAAiB,UAAUI,CAAyB,GAErD,MAAM;AACX,MAAAJ,EAAQ,oBAAoB,SAASC,CAAwB,GAC7DD,EAAQ,oBAAoB,UAAUI,CAAyB;AAAA,IAAA;AAAA,EACjE,GACC,CAACpB,GAAQM,EAAY,OAAOJ,GAAS,YAAY,CAAC,GAErDa,EAAU,MAAM;AACd,UAAMJ,IAAWH,EAAY;AAC7B,IAAKG,MACLA,EAAS,QAAQR,GACjB,sBAAsB,MAAM;AAC1B,MAAAO,EAAA;AAAA,IAAiB,CAClB;AAAA,EAAA,GACA,CAACP,CAAK,CAAC;AAEV,QAAMkB,IAAmB,CAACF,MAAqB;AAC7C,IAAAf,EAASe,CAAQ;AACjB,UAAMR,IAAWH,EAAY;AAC7B,IAAIG,MACFA,EAAS,QAAQQ,GACjB,sBAAsB,MAAM;AAC1B,MAAAT,EAAA;AAAA,IAAiB,CAClB;AAAA,EACH,GAGIY,IAAQ,MAAMlB,EAAS,EAAE;AAE/B,SAAIJ,IACK;AAAA,IACL,OAAAG;AAAA,IACA,UAAUkB;AAAA,IACV,OAAAC;AAAA,EAAA,IAEG;AAAA,IACL,KAAKhB;AAAA,IACL,OAAAH;AAAA,IACA,UAAUkB;AAAA,IACV,OAAAC;AAAA,EAAA;AAEJ;"}