@stacksjs/composables 0.70.257 → 0.70.259

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/dist/_shared.js +1 -23
  2. package/dist/cloneFnJSON.js +1 -3
  3. package/dist/computedAsync.js +1 -20
  4. package/dist/computedEager.js +1 -10
  5. package/dist/createEventHook.js +1 -15
  6. package/dist/createFetch.js +1 -8
  7. package/dist/createGlobalState.js +1 -10
  8. package/dist/createSharedComposable.js +1 -9
  9. package/dist/extendRef.js +1 -6
  10. package/dist/formatTimeAgo.js +1 -33
  11. package/dist/index.js +1 -210
  12. package/dist/isDefined.js +1 -3
  13. package/dist/makeDestructurable.js +1 -16
  14. package/dist/onClickOutside.js +1 -25
  15. package/dist/onKeyStroke.js +1 -31
  16. package/dist/onLongPress.js +1 -43
  17. package/dist/onStartTyping.js +1 -23
  18. package/dist/refAutoReset.js +1 -15
  19. package/dist/refDefault.js +1 -8
  20. package/dist/resolveRef.js +1 -7
  21. package/dist/ssrHandlers.js +1 -8
  22. package/dist/syncRef.js +1 -35
  23. package/dist/tryOnMounted.js +1 -22
  24. package/dist/unrefElement.js +1 -9
  25. package/dist/until.js +1 -62
  26. package/dist/useActiveElement.js +1 -19
  27. package/dist/useAnimate.js +1 -48
  28. package/dist/useArrayUtils.js +1 -114
  29. package/dist/useAsyncQueue.js +1 -22
  30. package/dist/useAsyncState.js +1 -35
  31. package/dist/useBase64.js +1 -45
  32. package/dist/useBattery.js +1 -38
  33. package/dist/useBreakpoints.js +1 -97
  34. package/dist/useBroadcastChannel.js +1 -31
  35. package/dist/useBrowserLocation.js +1 -64
  36. package/dist/useClipboard.js +1 -32
  37. package/dist/useClipboardItems.js +1 -15
  38. package/dist/useCloned.js +1 -16
  39. package/dist/useColorMode.js +1 -60
  40. package/dist/useConfirmDialog.js +1 -34
  41. package/dist/useCounter.js +1 -28
  42. package/dist/useCssVar.js +1 -23
  43. package/dist/useCycleList.js +1 -27
  44. package/dist/useDark.js +1 -38
  45. package/dist/useDateFormat.js +1 -11
  46. package/dist/useDebounce.js +1 -16
  47. package/dist/useDebounceFn.js +1 -18
  48. package/dist/useDebouncedRef.js +1 -22
  49. package/dist/useDebouncedRefHistory.js +1 -36
  50. package/dist/useDeviceMotion.js +1 -53
  51. package/dist/useDeviceOrientation.js +1 -23
  52. package/dist/useDevicePixelRatio.js +1 -24
  53. package/dist/useDocumentVisibility.js +1 -16
  54. package/dist/useDraggable.js +1 -58
  55. package/dist/useDropZone.js +1 -52
  56. package/dist/useElementBounding.js +1 -59
  57. package/dist/useElementByPoint.js +1 -18
  58. package/dist/useElementHover.js +1 -28
  59. package/dist/useElementSize.js +1 -34
  60. package/dist/useElementVisibility.js +1 -10
  61. package/dist/useEventBus.js +1 -41
  62. package/dist/useEventListener.js +1 -29
  63. package/dist/useEventSource.js +1 -72
  64. package/dist/useEyeDropper.js +1 -17
  65. package/dist/useFavicon.js +1 -22
  66. package/dist/useFetch.js +1 -61
  67. package/dist/useFileDialog.js +1 -24
  68. package/dist/useFocus.js +1 -42
  69. package/dist/useFocusWithin.js +1 -29
  70. package/dist/useForm.js +1 -182
  71. package/dist/useFps.js +1 -22
  72. package/dist/useFullscreen.js +1 -67
  73. package/dist/useGeolocation.js +1 -55
  74. package/dist/useIdle.js +1 -46
  75. package/dist/useImage.js +1 -32
  76. package/dist/useInfiniteScroll.js +1 -50
  77. package/dist/useIntersectionObserver.js +1 -27
  78. package/dist/useInterval.js +1 -32
  79. package/dist/useIntervalFn.js +1 -24
  80. package/dist/useKeyModifier.js +1 -22
  81. package/dist/useLastChanged.js +1 -8
  82. package/dist/useLocalStorage.js +1 -4
  83. package/dist/useMagicKeys.js +1 -81
  84. package/dist/useManualRefHistory.js +1 -64
  85. package/dist/useMath.js +1 -52
  86. package/dist/useMediaQuery.js +1 -19
  87. package/dist/useMemoize.js +1 -24
  88. package/dist/useMounted.js +1 -8
  89. package/dist/useMouse.js +1 -67
  90. package/dist/useMouseInElement.js +1 -31
  91. package/dist/useMousePressed.js +1 -31
  92. package/dist/useMutationObserver.js +1 -27
  93. package/dist/useNavigatorLanguage.js +1 -17
  94. package/dist/useNetwork.js +1 -58
  95. package/dist/useNow.js +1 -10
  96. package/dist/useObjectUrl.js +1 -23
  97. package/dist/useOffsetPagination.js +1 -45
  98. package/dist/useOnline.js +1 -20
  99. package/dist/usePageLeave.js +1 -27
  100. package/dist/useParallax.js +1 -33
  101. package/dist/useParentElement.js +1 -8
  102. package/dist/usePermission.js +1 -21
  103. package/dist/usePointer.js +1 -32
  104. package/dist/usePointerLock.js +1 -33
  105. package/dist/usePointerSwipe.js +1 -52
  106. package/dist/usePreferredColorScheme.js +1 -25
  107. package/dist/usePreferredContrast.js +1 -29
  108. package/dist/usePreferredLanguages.js +1 -16
  109. package/dist/usePreferredReducedMotion.js +1 -18
  110. package/dist/usePrevious.js +1 -8
  111. package/dist/useQuery.js +1 -265
  112. package/dist/useRafFn.js +1 -37
  113. package/dist/useRefHistory.js +1 -72
  114. package/dist/useResizeObserver.js +1 -27
  115. package/dist/useScreenOrientation.js +1 -27
  116. package/dist/useScreenSafeArea.js +1 -25
  117. package/dist/useScriptTag.js +1 -52
  118. package/dist/useScroll.js +1 -116
  119. package/dist/useScrollLock.js +1 -39
  120. package/dist/useSessionStorage.js +1 -4
  121. package/dist/useShare.js +1 -11
  122. package/dist/useSorted.js +1 -10
  123. package/dist/useStepper.js +1 -46
  124. package/dist/useStorage.js +1 -54
  125. package/dist/useStyleTag.js +1 -39
  126. package/dist/useSupported.js +1 -10
  127. package/dist/useSwipe.js +1 -58
  128. package/dist/useTextDirection.js +1 -16
  129. package/dist/useTextSelection.js +1 -27
  130. package/dist/useTextareaAutosize.js +1 -20
  131. package/dist/useThrottle.js +1 -23
  132. package/dist/useThrottleFn.js +1 -36
  133. package/dist/useThrottledRef.js +1 -30
  134. package/dist/useThrottledRefHistory.js +1 -43
  135. package/dist/useTimeAgo.js +1 -58
  136. package/dist/useTimeout.js +1 -32
  137. package/dist/useTimeoutFn.js +1 -27
  138. package/dist/useTimeoutPoll.js +1 -33
  139. package/dist/useTimestamp.js +1 -43
  140. package/dist/useTitle.js +1 -12
  141. package/dist/useToNumber.js +1 -25
  142. package/dist/useToString.js +1 -10
  143. package/dist/useToggle.js +1 -12
  144. package/dist/useTransition.js +1 -89
  145. package/dist/useUrlSearchParams.js +1 -72
  146. package/dist/useVibrate.js +1 -14
  147. package/dist/useVirtualList.js +1 -49
  148. package/dist/useWakeLock.js +1 -32
  149. package/dist/useWebNotification.js +1 -39
  150. package/dist/useWebSocket.js +1 -103
  151. package/dist/useWebWorker.js +1 -56
  152. package/dist/useWindowFocus.js +1 -20
  153. package/dist/useWindowScroll.js +1 -17
  154. package/dist/useWindowSize.js +1 -28
  155. package/dist/watchArray.js +1 -9
  156. package/dist/watchAtMost.js +1 -12
  157. package/dist/watchDebounced.js +1 -20
  158. package/dist/watchDeep.js +1 -13
  159. package/dist/watchIgnorable.js +1 -19
  160. package/dist/watchImmediate.js +1 -7
  161. package/dist/watchOnce.js +1 -17
  162. package/dist/watchPausable.js +1 -23
  163. package/dist/watchThrottled.js +1 -37
  164. package/dist/watchTriggerable.js +1 -10
  165. package/dist/watchWithFilter.js +1 -6
  166. package/dist/whenever.js +1 -7
  167. package/package.json +2 -2
package/dist/_shared.js CHANGED
@@ -1,23 +1 @@
1
- export function unref(val) {
2
- if (val && typeof val === "object" && "value" in val && "subscribe" in val)
3
- return val.value;
4
- return val;
5
- }
6
- export function toValue(val) {
7
- if (typeof val === "function")
8
- return val();
9
- return unref(val);
10
- }
11
- export function isRef(val) {
12
- return val !== null && typeof val === "object" && "value" in val && "subscribe" in val;
13
- }
14
- export function noop() {}
15
- export function defaultWindow() {
16
- return typeof window < "u" ? window : void 0;
17
- }
18
- export function defaultDocument() {
19
- return typeof document < "u" ? document : void 0;
20
- }
21
- export function defaultNavigator() {
22
- return typeof navigator < "u" ? navigator : void 0;
23
- }
1
+ export function unref(val){if(val&&typeof val==="object"&&"value"in val&&"subscribe"in val)return val.value;return val}export function toValue(val){if(typeof val==="function")return val();return unref(val)}export function isRef(val){return val!==null&&typeof val==="object"&&"value"in val&&"subscribe"in val}export function noop(){}export function defaultWindow(){return typeof window<"u"?window:void 0}export function defaultDocument(){return typeof document<"u"?document:void 0}export function defaultNavigator(){return typeof navigator<"u"?navigator:void 0}
@@ -1,3 +1 @@
1
- export function cloneFnJSON(value) {
2
- return JSON.parse(JSON.stringify(value));
3
- }
1
+ export function cloneFnJSON(value){return JSON.parse(JSON.stringify(value))}
@@ -1,20 +1 @@
1
- import { ref, watch } from "@stacksjs/stx";
2
- export function computedAsync(evaluationCallback, initialState, deps) {
3
- const result = ref(initialState);
4
- let currentEvalId = 0;
5
- async function evaluate() {
6
- const evalId = ++currentEvalId;
7
- try {
8
- const value = await evaluationCallback();
9
- if (evalId === currentEvalId)
10
- result.value = value;
11
- } catch {}
12
- }
13
- evaluate();
14
- if (deps && deps.length > 0)
15
- for (const dep of deps)
16
- watch(dep, () => {
17
- evaluate();
18
- });
19
- return result;
20
- }
1
+ import{ref,watch}from"@stacksjs/stx";export function computedAsync(evaluationCallback,initialState,deps){const result=ref(initialState);let currentEvalId=0;async function evaluate(){const evalId=++currentEvalId;try{const value=await evaluationCallback();if(evalId===currentEvalId)result.value=value}catch{}}evaluate();if(deps&&deps.length>0)for(const dep of deps)watch(dep,()=>{evaluate()});return result}
@@ -1,10 +1 @@
1
- import { ref, watch } from "@stacksjs/stx";
2
- export function computedEager(fn, deps) {
3
- const result = ref(fn());
4
- if (deps && deps.length > 0)
5
- for (const dep of deps)
6
- watch(dep, () => {
7
- result.value = fn();
8
- });
9
- return result;
10
- }
1
+ import{ref,watch}from"@stacksjs/stx";export function computedEager(fn,deps){const result=ref(fn());if(deps&&deps.length>0)for(const dep of deps)watch(dep,()=>{result.value=fn()});return result}
@@ -1,15 +1 @@
1
- export function createEventHook() {
2
- const fns = new Set;
3
- function on(fn) {
4
- fns.add(fn);
5
- return { off: () => fns.delete(fn) };
6
- }
7
- function off(fn) {
8
- fns.delete(fn);
9
- }
10
- function trigger(param) {
11
- for (const fn of fns)
12
- fn(param);
13
- }
14
- return { on, off, trigger };
15
- }
1
+ export function createEventHook(){const fns=new Set;function on(fn){fns.add(fn);return{off:()=>fns.delete(fn)}}function off(fn){fns.delete(fn)}function trigger(param){for(const fn of fns)fn(param)}return{on,off,trigger}}
@@ -1,8 +1 @@
1
- import { useFetch } from "./useFetch";
2
- export function createFetch(config = {}) {
3
- const { baseUrl = "" } = config;
4
- return function(url) {
5
- const fullUrl = baseUrl ? `${baseUrl.replace(/\/$/, "")}/${url.replace(/^\//, "")}` : url;
6
- return useFetch(fullUrl);
7
- };
8
- }
1
+ import{useFetch}from"./useFetch";export function createFetch(config={}){const{baseUrl=""}=config;return function(url){const fullUrl=baseUrl?`${baseUrl.replace(/\/$/,"")}/${url.replace(/^\//,"")}`:url;return useFetch(fullUrl)}}
@@ -1,10 +1 @@
1
- export function createGlobalState(stateFactory) {
2
- let initialized = !1, state;
3
- return () => {
4
- if (!initialized) {
5
- state = stateFactory();
6
- initialized = !0;
7
- }
8
- return state;
9
- };
10
- }
1
+ export function createGlobalState(stateFactory){let initialized=!1,state;return()=>{if(!initialized){state=stateFactory();initialized=!0}return state}}
@@ -1,9 +1 @@
1
- export function createSharedComposable(composable) {
2
- let subscribers = 0, state;
3
- return (...args) => {
4
- subscribers++;
5
- if (!state)
6
- state = composable(...args);
7
- return state;
8
- };
9
- }
1
+ export function createSharedComposable(composable){let subscribers=0,state;return(...args)=>{subscribers++;if(!state)state=composable(...args);return state}}
package/dist/extendRef.js CHANGED
@@ -1,6 +1 @@
1
- export function extendRef(r, extend) {
2
- for (const [key, value] of Object.entries(extend))
3
- if (key !== "value")
4
- r[key] = value;
5
- return r;
6
- }
1
+ export function extendRef(r,extend){for(const[key,value]of Object.entries(extend))if(key!=="value")r[key]=value;return r}
@@ -1,33 +1 @@
1
- const defaultMessages = {
2
- justNow: "just now",
3
- past: (n) => `${n} ago`,
4
- future: (n) => `in ${n}`,
5
- second: (n) => `${n} second${n > 1 ? "s" : ""}`,
6
- minute: (n) => `${n} minute${n > 1 ? "s" : ""}`,
7
- hour: (n) => `${n} hour${n > 1 ? "s" : ""}`,
8
- day: (n) => `${n} day${n > 1 ? "s" : ""}`,
9
- week: (n) => `${n} week${n > 1 ? "s" : ""}`,
10
- month: (n) => `${n} month${n > 1 ? "s" : ""}`,
11
- year: (n) => `${n} year${n > 1 ? "s" : ""}`
12
- };
13
- export function formatTimeAgo(date, options = {}) {
14
- const messages = { ...defaultMessages, ...options.messages }, d = date instanceof Date ? date : new Date(date), diff = Date.now() - d.getTime(), absDiff = Math.abs(diff), seconds = Math.floor(absDiff / 1000), minutes = Math.floor(seconds / 60), hours = Math.floor(minutes / 60), days = Math.floor(hours / 24), weeks = Math.floor(days / 7), months = Math.floor(days / 30), years = Math.floor(days / 365), isFuture = diff < 0;
15
- function format(value) {
16
- return isFuture ? messages.future(value) : messages.past(value);
17
- }
18
- if (seconds < 5)
19
- return messages.justNow;
20
- if (seconds < 60)
21
- return format(messages.second(seconds));
22
- if (minutes < 60)
23
- return format(messages.minute(minutes));
24
- if (hours < 24)
25
- return format(messages.hour(hours));
26
- if (days < 7)
27
- return format(messages.day(days));
28
- if (weeks < 4)
29
- return format(messages.week(weeks));
30
- if (months < 12)
31
- return format(messages.month(months));
32
- return format(messages.year(years));
33
- }
1
+ const defaultMessages={justNow:"just now",past:(n)=>`${n} ago`,future:(n)=>`in ${n}`,second:(n)=>`${n} second${n>1?"s":""}`,minute:(n)=>`${n} minute${n>1?"s":""}`,hour:(n)=>`${n} hour${n>1?"s":""}`,day:(n)=>`${n} day${n>1?"s":""}`,week:(n)=>`${n} week${n>1?"s":""}`,month:(n)=>`${n} month${n>1?"s":""}`,year:(n)=>`${n} year${n>1?"s":""}`};export function formatTimeAgo(date,options={}){const messages={...defaultMessages,...options.messages},d=date instanceof Date?date:new Date(date),diff=Date.now()-d.getTime(),absDiff=Math.abs(diff),seconds=Math.floor(absDiff/1000),minutes=Math.floor(seconds/60),hours=Math.floor(minutes/60),days=Math.floor(hours/24),weeks=Math.floor(days/7),months=Math.floor(days/30),years=Math.floor(days/365),isFuture=diff<0;function format(value){return isFuture?messages.future(value):messages.past(value)}if(seconds<5)return messages.justNow;if(seconds<60)return format(messages.second(seconds));if(minutes<60)return format(messages.minute(minutes));if(hours<24)return format(messages.hour(hours));if(days<7)return format(messages.day(days));if(weeks<4)return format(messages.week(weeks));if(months<12)return format(messages.month(months));return format(messages.year(years))}
package/dist/index.js CHANGED
@@ -1,210 +1 @@
1
- export { defaultDocument, defaultNavigator, defaultWindow, isRef, noop, toValue, unref } from "./_shared";
2
- export { getSSRHandler, setSSRHandler, customStorageEventName } from "./ssrHandlers";
3
- export { useStorage } from "./useStorage";
4
- export { useLocalStorage } from "./useLocalStorage";
5
- export { useSessionStorage } from "./useSessionStorage";
6
- export { useDark, usePreferredDark } from "./useDark";
7
- export { useColorMode } from "./useColorMode";
8
- export { usePreferredColorScheme } from "./usePreferredColorScheme";
9
- export { usePreferredContrast } from "./usePreferredContrast";
10
- export { usePreferredReducedMotion } from "./usePreferredReducedMotion";
11
- export { useOnline } from "./useOnline";
12
- export { useNetwork } from "./useNetwork";
13
- export { useToggle } from "./useToggle";
14
- export { useFetch } from "./useFetch";
15
- export { createFetch } from "./createFetch";
16
- export { createQueryClient, queryClient, useMutation, useQuery } from "./useQuery";
17
- export { useForm } from "./useForm";
18
- export { useDateFormat } from "./useDateFormat";
19
- export { useNow } from "./useNow";
20
- export { useTimestamp } from "./useTimestamp";
21
- export { useTimeAgo } from "./useTimeAgo";
22
- export { useEventListener } from "./useEventListener";
23
- export { useEventBus } from "./useEventBus";
24
- export { createEventHook } from "./createEventHook";
25
- export { useDebounceFn } from "./useDebounceFn";
26
- export { useThrottleFn } from "./useThrottleFn";
27
- export { useDebouncedRef } from "./useDebouncedRef";
28
- export { useThrottledRef } from "./useThrottledRef";
29
- export { useDebounce } from "./useDebounce";
30
- export { useThrottle } from "./useThrottle";
31
- export { useInterval } from "./useInterval";
32
- export { useIntervalFn } from "./useIntervalFn";
33
- export { useTimeout } from "./useTimeout";
34
- export { useTimeoutFn } from "./useTimeoutFn";
35
- export { useTimeoutPoll } from "./useTimeoutPoll";
36
- export { useRafFn } from "./useRafFn";
37
- export { useFps } from "./useFps";
38
- export { useClipboard } from "./useClipboard";
39
- export { useClipboardItems } from "./useClipboardItems";
40
- export { useMediaQuery } from "./useMediaQuery";
41
- export {
42
- breakpointsAntDesign,
43
- breakpointsBootstrap,
44
- breakpointsBootstrapV5,
45
- breakpointsMasterCss,
46
- breakpointsQuasar,
47
- breakpointsSematic,
48
- breakpointsTailwind,
49
- breakpointsMaterialDesign,
50
- useBreakpoints
51
- } from "./useBreakpoints";
52
- export { useTitle } from "./useTitle";
53
- export { useFavicon } from "./useFavicon";
54
- export { useDocumentVisibility } from "./useDocumentVisibility";
55
- export { useTextDirection } from "./useTextDirection";
56
- export { useTextSelection } from "./useTextSelection";
57
- export { useUrlSearchParams } from "./useUrlSearchParams";
58
- export { useBrowserLocation } from "./useBrowserLocation";
59
- export { useWindowSize } from "./useWindowSize";
60
- export { useWindowFocus } from "./useWindowFocus";
61
- export { useWindowScroll } from "./useWindowScroll";
62
- export { useScroll } from "./useScroll";
63
- export { useScrollLock } from "./useScrollLock";
64
- export { useInfiniteScroll } from "./useInfiniteScroll";
65
- export { useFullscreen } from "./useFullscreen";
66
- export { onClickOutside } from "./onClickOutside";
67
- export { onKeyStroke, onKeyDown, onKeyUp } from "./onKeyStroke";
68
- export { onLongPress } from "./onLongPress";
69
- export { onStartTyping } from "./onStartTyping";
70
- export { useKeyModifier } from "./useKeyModifier";
71
- export { useMagicKeys } from "./useMagicKeys";
72
- export {
73
- and,
74
- logicNot,
75
- logicOr,
76
- or,
77
- useAbs,
78
- useAverage,
79
- useCeil,
80
- useClamp,
81
- useFloor,
82
- useMax,
83
- useMin,
84
- usePrecision,
85
- useRound,
86
- useSum,
87
- useTrunc
88
- } from "./useMath";
89
- export { useCounter } from "./useCounter";
90
- export { usePrevious } from "./usePrevious";
91
- export { useLastChanged } from "./useLastChanged";
92
- export { useStepper } from "./useStepper";
93
- export { useCycleList } from "./useCycleList";
94
- export { useSorted } from "./useSorted";
95
- export { useCloned } from "./useCloned";
96
- export { useManualRefHistory } from "./useManualRefHistory";
97
- export { useRefHistory } from "./useRefHistory";
98
- export { useDebouncedRefHistory } from "./useDebouncedRefHistory";
99
- export { useThrottledRefHistory } from "./useThrottledRefHistory";
100
- export { useAsyncState } from "./useAsyncState";
101
- export { useAsyncQueue } from "./useAsyncQueue";
102
- export { whenever } from "./whenever";
103
- export { watchOnce } from "./watchOnce";
104
- export { watchDebounced } from "./watchDebounced";
105
- export { watchThrottled } from "./watchThrottled";
106
- export { watchPausable, pausableWatch } from "./watchPausable";
107
- export { watchIgnorable, ignorableWatch } from "./watchIgnorable";
108
- export { watchArray } from "./watchArray";
109
- export { watchAtMost } from "./watchAtMost";
110
- export { watchDeep } from "./watchDeep";
111
- export { watchImmediate } from "./watchImmediate";
112
- export { watchTriggerable } from "./watchTriggerable";
113
- export { watchWithFilter } from "./watchWithFilter";
114
- export { useWebSocket } from "./useWebSocket";
115
- export { useEventSource } from "./useEventSource";
116
- export { useBroadcastChannel } from "./useBroadcastChannel";
117
- export { computedAsync } from "./computedAsync";
118
- export { computedEager } from "./computedEager";
119
- export { useIntersectionObserver } from "./useIntersectionObserver";
120
- export { useResizeObserver } from "./useResizeObserver";
121
- export { useMutationObserver } from "./useMutationObserver";
122
- export { useElementSize } from "./useElementSize";
123
- export { useElementBounding } from "./useElementBounding";
124
- export { useElementVisibility } from "./useElementVisibility";
125
- export { useElementHover } from "./useElementHover";
126
- export { useElementByPoint } from "./useElementByPoint";
127
- export { useCssVar } from "./useCssVar";
128
- export { unrefElement } from "./unrefElement";
129
- export { useMouse } from "./useMouse";
130
- export { useMouseInElement } from "./useMouseInElement";
131
- export { useMousePressed } from "./useMousePressed";
132
- export { usePointer } from "./usePointer";
133
- export { useSwipe } from "./useSwipe";
134
- export { usePointerSwipe } from "./usePointerSwipe";
135
- export { usePointerLock } from "./usePointerLock";
136
- export { useParallax } from "./useParallax";
137
- export { useGeolocation } from "./useGeolocation";
138
- export { useDeviceMotion } from "./useDeviceMotion";
139
- export { useDeviceOrientation } from "./useDeviceOrientation";
140
- export { useDevicePixelRatio } from "./useDevicePixelRatio";
141
- export { useBattery } from "./useBattery";
142
- export { useFocus } from "./useFocus";
143
- export { useFocusWithin } from "./useFocusWithin";
144
- export { useActiveElement } from "./useActiveElement";
145
- export { useIdle } from "./useIdle";
146
- export { usePageLeave } from "./usePageLeave";
147
- export { useMounted } from "./useMounted";
148
- export { useDraggable } from "./useDraggable";
149
- export { useDropZone } from "./useDropZone";
150
- export { useNavigatorLanguage } from "./useNavigatorLanguage";
151
- export { usePreferredLanguages } from "./usePreferredLanguages";
152
- export { useScreenOrientation } from "./useScreenOrientation";
153
- export { useScreenSafeArea } from "./useScreenSafeArea";
154
- export { useParentElement } from "./useParentElement";
155
- export { usePermission } from "./usePermission";
156
- export { useShare } from "./useShare";
157
- export { useObjectUrl } from "./useObjectUrl";
158
- export { useImage } from "./useImage";
159
- export { useBase64 } from "./useBase64";
160
- export { useAnimate } from "./useAnimate";
161
- export { useTransition, executeTransition, TransitionPresets } from "./useTransition";
162
- export { useScriptTag } from "./useScriptTag";
163
- export { useStyleTag } from "./useStyleTag";
164
- export { useConfirmDialog } from "./useConfirmDialog";
165
- export { useFileDialog } from "./useFileDialog";
166
- export { useEyeDropper } from "./useEyeDropper";
167
- export { useTextareaAutosize } from "./useTextareaAutosize";
168
- export { useWebNotification } from "./useWebNotification";
169
- export { useVibrate } from "./useVibrate";
170
- export { useWakeLock } from "./useWakeLock";
171
- export { useWebWorker, useWebWorkerFn } from "./useWebWorker";
172
- export { useVirtualList } from "./useVirtualList";
173
- export { useOffsetPagination } from "./useOffsetPagination";
174
- export { isDefined } from "./isDefined";
175
- export { useSupported } from "./useSupported";
176
- export { useToNumber } from "./useToNumber";
177
- export { useToString } from "./useToString";
178
- export { refDefault } from "./refDefault";
179
- export { refAutoReset, autoResetRef } from "./refAutoReset";
180
- export { cloneFnJSON } from "./cloneFnJSON";
181
- export { formatTimeAgo } from "./formatTimeAgo";
182
- export { until } from "./until";
183
- export { resolveRef } from "./resolveRef";
184
- export { extendRef } from "./extendRef";
185
- export { useMemoize } from "./useMemoize";
186
- export { makeDestructurable } from "./makeDestructurable";
187
- export { syncRef, syncRefs } from "./syncRef";
188
- export { createGlobalState } from "./createGlobalState";
189
- export { createSharedComposable } from "./createSharedComposable";
190
- export { tryOnMounted, tryOnBeforeMount, tryOnUnmounted, tryOnBeforeUnmount, tryOnScopeDispose } from "./tryOnMounted";
191
- export {
192
- useArrayDifference,
193
- useArrayEvery,
194
- useArrayFilter,
195
- useArrayFind,
196
- useArrayFindIndex,
197
- useArrayIncludes,
198
- useArrayMap,
199
- useArrayReduce,
200
- useArraySome,
201
- useArrayUnique
202
- } from "./useArrayUtils";
203
- export { computedAsync as asyncComputed } from "./computedAsync";
204
- export { computedEager as eagerComputed } from "./computedEager";
205
- export { useDebouncedRef as debouncedRef } from "./useDebouncedRef";
206
- export { useDebouncedRef as refDebounced } from "./useDebouncedRef";
207
- export { useThrottledRef as throttledRef } from "./useThrottledRef";
208
- export { useThrottledRef as refThrottled } from "./useThrottledRef";
209
- export { watchDebounced as debouncedWatch } from "./watchDebounced";
210
- export { watchThrottled as throttledWatch } from "./watchThrottled";
1
+ export{defaultDocument,defaultNavigator,defaultWindow,isRef,noop,toValue,unref}from"./_shared";export{getSSRHandler,setSSRHandler,customStorageEventName}from"./ssrHandlers";export{useStorage}from"./useStorage";export{useLocalStorage}from"./useLocalStorage";export{useSessionStorage}from"./useSessionStorage";export{useDark,usePreferredDark}from"./useDark";export{useColorMode}from"./useColorMode";export{usePreferredColorScheme}from"./usePreferredColorScheme";export{usePreferredContrast}from"./usePreferredContrast";export{usePreferredReducedMotion}from"./usePreferredReducedMotion";export{useOnline}from"./useOnline";export{useNetwork}from"./useNetwork";export{useToggle}from"./useToggle";export{useFetch}from"./useFetch";export{createFetch}from"./createFetch";export{createQueryClient,queryClient,useMutation,useQuery}from"./useQuery";export{useForm}from"./useForm";export{useDateFormat}from"./useDateFormat";export{useNow}from"./useNow";export{useTimestamp}from"./useTimestamp";export{useTimeAgo}from"./useTimeAgo";export{useEventListener}from"./useEventListener";export{useEventBus}from"./useEventBus";export{createEventHook}from"./createEventHook";export{useDebounceFn}from"./useDebounceFn";export{useThrottleFn}from"./useThrottleFn";export{useDebouncedRef}from"./useDebouncedRef";export{useThrottledRef}from"./useThrottledRef";export{useDebounce}from"./useDebounce";export{useThrottle}from"./useThrottle";export{useInterval}from"./useInterval";export{useIntervalFn}from"./useIntervalFn";export{useTimeout}from"./useTimeout";export{useTimeoutFn}from"./useTimeoutFn";export{useTimeoutPoll}from"./useTimeoutPoll";export{useRafFn}from"./useRafFn";export{useFps}from"./useFps";export{useClipboard}from"./useClipboard";export{useClipboardItems}from"./useClipboardItems";export{useMediaQuery}from"./useMediaQuery";export{breakpointsAntDesign,breakpointsBootstrap,breakpointsBootstrapV5,breakpointsMasterCss,breakpointsQuasar,breakpointsSematic,breakpointsTailwind,breakpointsMaterialDesign,useBreakpoints}from"./useBreakpoints";export{useTitle}from"./useTitle";export{useFavicon}from"./useFavicon";export{useDocumentVisibility}from"./useDocumentVisibility";export{useTextDirection}from"./useTextDirection";export{useTextSelection}from"./useTextSelection";export{useUrlSearchParams}from"./useUrlSearchParams";export{useBrowserLocation}from"./useBrowserLocation";export{useWindowSize}from"./useWindowSize";export{useWindowFocus}from"./useWindowFocus";export{useWindowScroll}from"./useWindowScroll";export{useScroll}from"./useScroll";export{useScrollLock}from"./useScrollLock";export{useInfiniteScroll}from"./useInfiniteScroll";export{useFullscreen}from"./useFullscreen";export{onClickOutside}from"./onClickOutside";export{onKeyStroke,onKeyDown,onKeyUp}from"./onKeyStroke";export{onLongPress}from"./onLongPress";export{onStartTyping}from"./onStartTyping";export{useKeyModifier}from"./useKeyModifier";export{useMagicKeys}from"./useMagicKeys";export{and,logicNot,logicOr,or,useAbs,useAverage,useCeil,useClamp,useFloor,useMax,useMin,usePrecision,useRound,useSum,useTrunc}from"./useMath";export{useCounter}from"./useCounter";export{usePrevious}from"./usePrevious";export{useLastChanged}from"./useLastChanged";export{useStepper}from"./useStepper";export{useCycleList}from"./useCycleList";export{useSorted}from"./useSorted";export{useCloned}from"./useCloned";export{useManualRefHistory}from"./useManualRefHistory";export{useRefHistory}from"./useRefHistory";export{useDebouncedRefHistory}from"./useDebouncedRefHistory";export{useThrottledRefHistory}from"./useThrottledRefHistory";export{useAsyncState}from"./useAsyncState";export{useAsyncQueue}from"./useAsyncQueue";export{whenever}from"./whenever";export{watchOnce}from"./watchOnce";export{watchDebounced}from"./watchDebounced";export{watchThrottled}from"./watchThrottled";export{watchPausable,pausableWatch}from"./watchPausable";export{watchIgnorable,ignorableWatch}from"./watchIgnorable";export{watchArray}from"./watchArray";export{watchAtMost}from"./watchAtMost";export{watchDeep}from"./watchDeep";export{watchImmediate}from"./watchImmediate";export{watchTriggerable}from"./watchTriggerable";export{watchWithFilter}from"./watchWithFilter";export{useWebSocket}from"./useWebSocket";export{useEventSource}from"./useEventSource";export{useBroadcastChannel}from"./useBroadcastChannel";export{computedAsync}from"./computedAsync";export{computedEager}from"./computedEager";export{useIntersectionObserver}from"./useIntersectionObserver";export{useResizeObserver}from"./useResizeObserver";export{useMutationObserver}from"./useMutationObserver";export{useElementSize}from"./useElementSize";export{useElementBounding}from"./useElementBounding";export{useElementVisibility}from"./useElementVisibility";export{useElementHover}from"./useElementHover";export{useElementByPoint}from"./useElementByPoint";export{useCssVar}from"./useCssVar";export{unrefElement}from"./unrefElement";export{useMouse}from"./useMouse";export{useMouseInElement}from"./useMouseInElement";export{useMousePressed}from"./useMousePressed";export{usePointer}from"./usePointer";export{useSwipe}from"./useSwipe";export{usePointerSwipe}from"./usePointerSwipe";export{usePointerLock}from"./usePointerLock";export{useParallax}from"./useParallax";export{useGeolocation}from"./useGeolocation";export{useDeviceMotion}from"./useDeviceMotion";export{useDeviceOrientation}from"./useDeviceOrientation";export{useDevicePixelRatio}from"./useDevicePixelRatio";export{useBattery}from"./useBattery";export{useFocus}from"./useFocus";export{useFocusWithin}from"./useFocusWithin";export{useActiveElement}from"./useActiveElement";export{useIdle}from"./useIdle";export{usePageLeave}from"./usePageLeave";export{useMounted}from"./useMounted";export{useDraggable}from"./useDraggable";export{useDropZone}from"./useDropZone";export{useNavigatorLanguage}from"./useNavigatorLanguage";export{usePreferredLanguages}from"./usePreferredLanguages";export{useScreenOrientation}from"./useScreenOrientation";export{useScreenSafeArea}from"./useScreenSafeArea";export{useParentElement}from"./useParentElement";export{usePermission}from"./usePermission";export{useShare}from"./useShare";export{useObjectUrl}from"./useObjectUrl";export{useImage}from"./useImage";export{useBase64}from"./useBase64";export{useAnimate}from"./useAnimate";export{useTransition,executeTransition,TransitionPresets}from"./useTransition";export{useScriptTag}from"./useScriptTag";export{useStyleTag}from"./useStyleTag";export{useConfirmDialog}from"./useConfirmDialog";export{useFileDialog}from"./useFileDialog";export{useEyeDropper}from"./useEyeDropper";export{useTextareaAutosize}from"./useTextareaAutosize";export{useWebNotification}from"./useWebNotification";export{useVibrate}from"./useVibrate";export{useWakeLock}from"./useWakeLock";export{useWebWorker,useWebWorkerFn}from"./useWebWorker";export{useVirtualList}from"./useVirtualList";export{useOffsetPagination}from"./useOffsetPagination";export{isDefined}from"./isDefined";export{useSupported}from"./useSupported";export{useToNumber}from"./useToNumber";export{useToString}from"./useToString";export{refDefault}from"./refDefault";export{refAutoReset,autoResetRef}from"./refAutoReset";export{cloneFnJSON}from"./cloneFnJSON";export{formatTimeAgo}from"./formatTimeAgo";export{until}from"./until";export{resolveRef}from"./resolveRef";export{extendRef}from"./extendRef";export{useMemoize}from"./useMemoize";export{makeDestructurable}from"./makeDestructurable";export{syncRef,syncRefs}from"./syncRef";export{createGlobalState}from"./createGlobalState";export{createSharedComposable}from"./createSharedComposable";export{tryOnMounted,tryOnBeforeMount,tryOnUnmounted,tryOnBeforeUnmount,tryOnScopeDispose}from"./tryOnMounted";export{useArrayDifference,useArrayEvery,useArrayFilter,useArrayFind,useArrayFindIndex,useArrayIncludes,useArrayMap,useArrayReduce,useArraySome,useArrayUnique}from"./useArrayUtils";export{computedAsync as asyncComputed}from"./computedAsync";export{computedEager as eagerComputed}from"./computedEager";export{useDebouncedRef as debouncedRef}from"./useDebouncedRef";export{useDebouncedRef as refDebounced}from"./useDebouncedRef";export{useThrottledRef as throttledRef}from"./useThrottledRef";export{useThrottledRef as refThrottled}from"./useThrottledRef";export{watchDebounced as debouncedWatch}from"./watchDebounced";export{watchThrottled as throttledWatch}from"./watchThrottled";
package/dist/isDefined.js CHANGED
@@ -1,3 +1 @@
1
- export function isDefined(v) {
2
- return v.value !== null && v.value !== void 0;
3
- }
1
+ export function isDefined(v){return v.value!==null&&v.value!==void 0}
@@ -1,16 +1 @@
1
- export function makeDestructurable(obj, arr) {
2
- const clone = { ...obj };
3
- Object.defineProperty(clone, Symbol.iterator, {
4
- enumerable: !1,
5
- value() {
6
- let index = 0;
7
- return {
8
- next: () => ({
9
- value: arr[index++],
10
- done: index > arr.length
11
- })
12
- };
13
- }
14
- });
15
- return clone;
16
- }
1
+ export function makeDestructurable(obj,arr){const clone={...obj};Object.defineProperty(clone,Symbol.iterator,{enumerable:!1,value(){let index=0;return{next:()=>({value:arr[index++],done:index>arr.length})}}});return clone}
@@ -1,25 +1 @@
1
- import { defaultWindow, unref } from "./_shared";
2
- export function onClickOutside(target, handler, options) {
3
- const win = defaultWindow();
4
- if (!win)
5
- return () => {};
6
- const { ignore = [] } = options ?? {};
7
- function listener(event) {
8
- const el = unref(target);
9
- if (!el)
10
- return;
11
- const mouseEvent = event, composedPath = mouseEvent.composedPath?.() ?? [];
12
- if (el === mouseEvent.target || composedPath.includes(el) || el.contains(mouseEvent.target))
13
- return;
14
- for (const ignored of ignore) {
15
- const ignoredEl = unref(ignored);
16
- if (ignoredEl && (ignoredEl === mouseEvent.target || composedPath.includes(ignoredEl) || ignoredEl.contains(mouseEvent.target)))
17
- return;
18
- }
19
- handler(mouseEvent);
20
- }
21
- win.addEventListener("pointerdown", listener, { passive: !0 });
22
- return () => {
23
- win.removeEventListener("pointerdown", listener);
24
- };
25
- }
1
+ import{defaultWindow,unref}from"./_shared";export function onClickOutside(target,handler,options){const win=defaultWindow();if(!win)return()=>{};const{ignore=[]}=options??{};function listener(event){const el=unref(target);if(!el)return;const mouseEvent=event,composedPath=mouseEvent.composedPath?.()??[];if(el===mouseEvent.target||composedPath.includes(el)||el.contains(mouseEvent.target))return;for(const ignored of ignore){const ignoredEl=unref(ignored);if(ignoredEl&&(ignoredEl===mouseEvent.target||composedPath.includes(ignoredEl)||ignoredEl.contains(mouseEvent.target)))return}handler(mouseEvent)}win.addEventListener("pointerdown",listener,{passive:!0});return()=>{win.removeEventListener("pointerdown",listener)}}
@@ -1,31 +1 @@
1
- import { defaultWindow, unref } from "./_shared";
2
- export function onKeyStroke(key, handler, options) {
3
- const { eventName = "keydown", target } = options ?? {}, win = defaultWindow(), eventTarget = target ? unref(target) : win;
4
- if (!eventTarget)
5
- return () => {};
6
- function createKeyFilter(keyDef) {
7
- if (typeof keyDef === "function")
8
- return keyDef;
9
- if (typeof keyDef === "string")
10
- return (event) => event.key === keyDef;
11
- if (Array.isArray(keyDef))
12
- return (event) => keyDef.includes(event.key);
13
- return () => !0;
14
- }
15
- const filter = createKeyFilter(key);
16
- function listener(event) {
17
- const keyEvent = event;
18
- if (filter(keyEvent))
19
- handler(keyEvent);
20
- }
21
- eventTarget.addEventListener(eventName, listener);
22
- return () => {
23
- eventTarget.removeEventListener(eventName, listener);
24
- };
25
- }
26
- export function onKeyDown(key, handler, options) {
27
- return onKeyStroke(key, handler, { ...options, eventName: "keydown" });
28
- }
29
- export function onKeyUp(key, handler, options) {
30
- return onKeyStroke(key, handler, { ...options, eventName: "keyup" });
31
- }
1
+ import{defaultWindow,unref}from"./_shared";export function onKeyStroke(key,handler,options){const{eventName="keydown",target}=options??{},win=defaultWindow(),eventTarget=target?unref(target):win;if(!eventTarget)return()=>{};function createKeyFilter(keyDef){if(typeof keyDef==="function")return keyDef;if(typeof keyDef==="string")return(event)=>event.key===keyDef;if(Array.isArray(keyDef))return(event)=>keyDef.includes(event.key);return()=>!0}const filter=createKeyFilter(key);function listener(event){const keyEvent=event;if(filter(keyEvent))handler(keyEvent)}eventTarget.addEventListener(eventName,listener);return()=>{eventTarget.removeEventListener(eventName,listener)}}export function onKeyDown(key,handler,options){return onKeyStroke(key,handler,{...options,eventName:"keydown"})}export function onKeyUp(key,handler,options){return onKeyStroke(key,handler,{...options,eventName:"keyup"})}
@@ -1,43 +1 @@
1
- import { onUnmounted } from "@stacksjs/stx";
2
- import { unref } from "./_shared";
3
- export function onLongPress(target, handler, options = {}) {
4
- const { delay = 500, distanceThreshold = 10 } = options;
5
- let timer = null, startX = 0, startY = 0;
6
- const el = unref(target);
7
- if (!el)
8
- return () => {};
9
- const clear = () => {
10
- if (timer !== null) {
11
- clearTimeout(timer);
12
- timer = null;
13
- }
14
- }, onDown = (e) => {
15
- startX = e.clientX;
16
- startY = e.clientY;
17
- clear();
18
- timer = setTimeout(() => handler(e), delay);
19
- }, onMove = (e) => {
20
- if (timer === null)
21
- return;
22
- const dx = Math.abs(e.clientX - startX), dy = Math.abs(e.clientY - startY);
23
- if (dx > distanceThreshold || dy > distanceThreshold)
24
- clear();
25
- }, onUp = () => {
26
- clear();
27
- };
28
- el.addEventListener("pointerdown", onDown);
29
- el.addEventListener("pointermove", onMove);
30
- el.addEventListener("pointerup", onUp);
31
- el.addEventListener("pointercancel", onUp);
32
- const cleanup = () => {
33
- clear();
34
- el.removeEventListener("pointerdown", onDown);
35
- el.removeEventListener("pointermove", onMove);
36
- el.removeEventListener("pointerup", onUp);
37
- el.removeEventListener("pointercancel", onUp);
38
- };
39
- try {
40
- onUnmounted(cleanup);
41
- } catch {}
42
- return cleanup;
43
- }
1
+ import{onUnmounted}from"@stacksjs/stx";import{unref}from"./_shared";export function onLongPress(target,handler,options={}){const{delay=500,distanceThreshold=10}=options;let timer=null,startX=0,startY=0;const el=unref(target);if(!el)return()=>{};const clear=()=>{if(timer!==null){clearTimeout(timer);timer=null}},onDown=(e)=>{startX=e.clientX;startY=e.clientY;clear();timer=setTimeout(()=>handler(e),delay)},onMove=(e)=>{if(timer===null)return;const dx=Math.abs(e.clientX-startX),dy=Math.abs(e.clientY-startY);if(dx>distanceThreshold||dy>distanceThreshold)clear()},onUp=()=>{clear()};el.addEventListener("pointerdown",onDown);el.addEventListener("pointermove",onMove);el.addEventListener("pointerup",onUp);el.addEventListener("pointercancel",onUp);const cleanup=()=>{clear();el.removeEventListener("pointerdown",onDown);el.removeEventListener("pointermove",onMove);el.removeEventListener("pointerup",onUp);el.removeEventListener("pointercancel",onUp)};try{onUnmounted(cleanup)}catch{}return cleanup}
@@ -1,23 +1 @@
1
- import { onUnmounted } from "@stacksjs/stx";
2
- export function onStartTyping(callback) {
3
- if (typeof document > "u")
4
- return () => {};
5
- const handler = (e) => {
6
- const active = document.activeElement;
7
- if (active) {
8
- const tag = active.tagName.toLowerCase();
9
- if (tag === "input" || tag === "textarea" || active.isContentEditable)
10
- return;
11
- }
12
- if (e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey)
13
- callback(e);
14
- };
15
- document.addEventListener("keydown", handler);
16
- const cleanup = () => {
17
- document.removeEventListener("keydown", handler);
18
- };
19
- try {
20
- onUnmounted(cleanup);
21
- } catch {}
22
- return cleanup;
23
- }
1
+ import{onUnmounted}from"@stacksjs/stx";export function onStartTyping(callback){if(typeof document>"u")return()=>{};const handler=(e)=>{const active=document.activeElement;if(active){const tag=active.tagName.toLowerCase();if(tag==="input"||tag==="textarea"||active.isContentEditable)return}if(e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey)callback(e)};document.addEventListener("keydown",handler);const cleanup=()=>{document.removeEventListener("keydown",handler)};try{onUnmounted(cleanup)}catch{}return cleanup}
@@ -1,15 +1 @@
1
- import { ref, watch } from "@stacksjs/stx";
2
- export function refAutoReset(defaultValue, afterMs = 1000) {
3
- const value = ref(defaultValue);
4
- let timer = null;
5
- watch(value, () => {
6
- if (timer !== null)
7
- clearTimeout(timer);
8
- timer = setTimeout(() => {
9
- value.value = defaultValue;
10
- timer = null;
11
- }, afterMs);
12
- });
13
- return value;
14
- }
15
- export const autoResetRef = refAutoReset;
1
+ import{ref,watch}from"@stacksjs/stx";export function refAutoReset(defaultValue,afterMs=1000){const value=ref(defaultValue);let timer=null;watch(value,()=>{if(timer!==null)clearTimeout(timer);timer=setTimeout(()=>{value.value=defaultValue;timer=null},afterMs)});return value}export const autoResetRef=refAutoReset;
@@ -1,8 +1 @@
1
- import { ref, watch } from "@stacksjs/stx";
2
- export function refDefault(source, defaultValue) {
3
- const result = ref(source.value ?? defaultValue);
4
- watch(source, (val) => {
5
- result.value = val ?? defaultValue;
6
- });
7
- return result;
8
- }
1
+ import{ref,watch}from"@stacksjs/stx";export function refDefault(source,defaultValue){const result=ref(source.value??defaultValue);watch(source,(val)=>{result.value=val??defaultValue});return result}
@@ -1,7 +1 @@
1
- import { ref } from "@stacksjs/stx";
2
- import { isRef } from "./_shared";
3
- export function resolveRef(value) {
4
- if (isRef(value))
5
- return value;
6
- return ref(value);
7
- }
1
+ import{ref}from"@stacksjs/stx";import{isRef}from"./_shared";export function resolveRef(value){if(isRef(value))return value;return ref(value)}
@@ -1,8 +1 @@
1
- const handlers = new Map;
2
- export function getSSRHandler(key) {
3
- return handlers.get(key);
4
- }
5
- export function setSSRHandler(key, handler) {
6
- handlers.set(key, handler);
7
- }
8
- export const customStorageEventName = "stx-storage";
1
+ const handlers=new Map;export function getSSRHandler(key){return handlers.get(key)}export function setSSRHandler(key,handler){handlers.set(key,handler)}export const customStorageEventName="stx-storage";
package/dist/syncRef.js CHANGED
@@ -1,35 +1 @@
1
- import { watch } from "@stacksjs/stx";
2
- export function syncRef(left, right, options = {}) {
3
- const { direction = "both" } = options;
4
- let syncing = !1;
5
- const unwatchers = [];
6
- if (direction === "both" || direction === "ltr")
7
- unwatchers.push(watch(left, (val) => {
8
- if (syncing)
9
- return;
10
- syncing = !0;
11
- right.value = val;
12
- syncing = !1;
13
- }));
14
- if (direction === "both" || direction === "rtl")
15
- unwatchers.push(watch(right, (val) => {
16
- if (syncing)
17
- return;
18
- syncing = !0;
19
- left.value = val;
20
- syncing = !1;
21
- }));
22
- return () => {
23
- for (const unwatch of unwatchers)
24
- unwatch();
25
- };
26
- }
27
- export function syncRefs(sources, target) {
28
- const unwatchers = sources.map((source) => watch(source, (val) => {
29
- target.value = val;
30
- }));
31
- return () => {
32
- for (const unwatch of unwatchers)
33
- unwatch();
34
- };
35
- }
1
+ import{watch}from"@stacksjs/stx";export function syncRef(left,right,options={}){const{direction="both"}=options;let syncing=!1;const unwatchers=[];if(direction==="both"||direction==="ltr")unwatchers.push(watch(left,(val)=>{if(syncing)return;syncing=!0;right.value=val;syncing=!1}));if(direction==="both"||direction==="rtl")unwatchers.push(watch(right,(val)=>{if(syncing)return;syncing=!0;left.value=val;syncing=!1}));return()=>{for(const unwatch of unwatchers)unwatch()}}export function syncRefs(sources,target){const unwatchers=sources.map((source)=>watch(source,(val)=>{target.value=val}));return()=>{for(const unwatch of unwatchers)unwatch()}}