@vueuse/components 8.9.2 → 9.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.cjs CHANGED
@@ -24,7 +24,7 @@ const OnClickOutside = vueDemi.defineComponent({
24
24
 
25
25
  function unrefElement(elRef) {
26
26
  var _a;
27
- const plain = vueDemi.unref(elRef);
27
+ const plain = shared.resolveUnref(elRef);
28
28
  return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;
29
29
  }
30
30
 
@@ -339,7 +339,7 @@ function useStorage(key, initialValue, storage, options = {}) {
339
339
  }
340
340
  if (!storage)
341
341
  return data;
342
- const rawInit = vueDemi.unref(initialValue);
342
+ const rawInit = shared.resolveUnref(initialValue);
343
343
  const type = guessSerializerType(rawInit);
344
344
  const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];
345
345
  const { pause: pauseWatch, resume: resumeWatch } = shared.pausableWatch(data, () => write(data.value), { flush, deep, eventFilter });
@@ -385,13 +385,21 @@ function useStorage(key, initialValue, storage, options = {}) {
385
385
  }
386
386
  }
387
387
 
388
+ function useSupported(callback, sync = false) {
389
+ const isSupported = vueDemi.ref();
390
+ const update = () => isSupported.value = Boolean(callback());
391
+ update();
392
+ shared.tryOnMounted(update, sync);
393
+ return isSupported;
394
+ }
395
+
388
396
  function useMediaQuery(query, options = {}) {
389
397
  const { window = defaultWindow } = options;
390
- const isSupported = Boolean(window && "matchMedia" in window && typeof window.matchMedia === "function");
398
+ const isSupported = useSupported(() => window && "matchMedia" in window && typeof window.matchMedia === "function");
391
399
  let mediaQuery;
392
400
  const matches = vueDemi.ref(false);
393
401
  const update = () => {
394
- if (!isSupported)
402
+ if (!isSupported.value)
395
403
  return;
396
404
  if (!mediaQuery)
397
405
  mediaQuery = window.matchMedia(query);
@@ -618,7 +626,7 @@ const UseDraggable = vueDemi.defineComponent({
618
626
  ],
619
627
  setup(props, { slots }) {
620
628
  const target = vueDemi.ref();
621
- const initialValue = props.storageKey ? core.useStorage(props.storageKey, vueDemi.unref(props.initialValue) || { x: 0, y: 0 }, core.isClient ? props.storageType === "session" ? sessionStorage : localStorage : void 0) : props.initialValue || { x: 0, y: 0 };
629
+ const initialValue = props.storageKey ? core.useStorage(props.storageKey, shared.resolveUnref(props.initialValue) || { x: 0, y: 0 }, core.isClient ? props.storageType === "session" ? sessionStorage : localStorage : void 0) : props.initialValue || { x: 0, y: 0 };
622
630
  const data = vueDemi.reactive(core.useDraggable(target, __spreadProps$8(__spreadValues$a({}, props), {
623
631
  initialValue
624
632
  })));
@@ -689,7 +697,7 @@ var __objRest = (source, exclude) => {
689
697
  function useResizeObserver(target, callback, options = {}) {
690
698
  const _a = options, { window = defaultWindow } = _a, observerOptions = __objRest(_a, ["window"]);
691
699
  let observer;
692
- const isSupported = window && "ResizeObserver" in window;
700
+ const isSupported = useSupported(() => window && "ResizeObserver" in window);
693
701
  const cleanup = () => {
694
702
  if (observer) {
695
703
  observer.disconnect();
@@ -698,7 +706,7 @@ function useResizeObserver(target, callback, options = {}) {
698
706
  };
699
707
  const stopWatch = vueDemi.watch(() => unrefElement(target), (el) => {
700
708
  cleanup();
701
- if (isSupported && window && el) {
709
+ if (isSupported.value && window && el) {
702
710
  observer = new ResizeObserver(callback);
703
711
  observer.observe(el, observerOptions);
704
712
  }
@@ -762,16 +770,18 @@ function useElementVisibility(element, { window = defaultWindow, scrollTarget }
762
770
  if (!window)
763
771
  return;
764
772
  const document = window.document;
765
- if (!vueDemi.unref(element)) {
773
+ const el = shared.resolveUnref(element);
774
+ if (!el) {
766
775
  elementIsVisible.value = false;
767
776
  } else {
768
- const rect = vueDemi.unref(element).getBoundingClientRect();
777
+ const rect = el.getBoundingClientRect();
769
778
  elementIsVisible.value = rect.top <= (window.innerHeight || document.documentElement.clientHeight) && rect.left <= (window.innerWidth || document.documentElement.clientWidth) && rect.bottom >= 0 && rect.right >= 0;
770
779
  }
771
780
  };
772
781
  shared.tryOnMounted(testBounding);
773
- if (window)
774
- shared.tryOnMounted(() => useEventListener(vueDemi.unref(scrollTarget) || window, "scroll", testBounding, { capture: false, passive: true }));
782
+ if (window) {
783
+ shared.tryOnMounted(() => useEventListener(() => shared.resolveUnref(scrollTarget) || window, "scroll", testBounding, { capture: false, passive: true }));
784
+ }
775
785
  return elementIsVisible;
776
786
  }
777
787
 
@@ -914,10 +924,10 @@ async function loadImage(options) {
914
924
  });
915
925
  }
916
926
  const useImage = (options, asyncStateOptions = {}) => {
917
- const state = useAsyncState(() => loadImage(vueDemi.unref(options)), void 0, __spreadValues$9({
927
+ const state = useAsyncState(() => loadImage(shared.resolveUnref(options)), void 0, __spreadValues$9({
918
928
  resetOnExecute: true
919
929
  }, asyncStateOptions));
920
- vueDemi.watch(() => vueDemi.unref(options), () => state.execute(asyncStateOptions.delay), { deep: true });
930
+ vueDemi.watch(() => shared.resolveUnref(options), () => state.execute(asyncStateOptions.delay), { deep: true });
921
931
  return state;
922
932
  };
923
933
 
@@ -975,37 +985,35 @@ function useScroll(element, options = {}) {
975
985
  top: false,
976
986
  bottom: false
977
987
  });
978
- if (element) {
979
- const onScrollEnd = shared.useDebounceFn((e) => {
980
- isScrolling.value = false;
981
- directions.left = false;
982
- directions.right = false;
983
- directions.top = false;
984
- directions.bottom = false;
985
- onStop(e);
986
- }, throttle + idle);
987
- const onScrollHandler = (e) => {
988
- const eventTarget = e.target === document ? e.target.documentElement : e.target;
989
- const scrollLeft = eventTarget.scrollLeft;
990
- directions.left = scrollLeft < x.value;
991
- directions.right = scrollLeft > x.value;
992
- arrivedState.left = scrollLeft <= 0 + (offset.left || 0);
993
- arrivedState.right = scrollLeft + eventTarget.clientWidth >= eventTarget.scrollWidth - (offset.right || 0);
994
- x.value = scrollLeft;
995
- let scrollTop = eventTarget.scrollTop;
996
- if (e.target === document && !scrollTop)
997
- scrollTop = document.body.scrollTop;
998
- directions.top = scrollTop < y.value;
999
- directions.bottom = scrollTop > y.value;
1000
- arrivedState.top = scrollTop <= 0 + (offset.top || 0);
1001
- arrivedState.bottom = scrollTop + eventTarget.clientHeight >= eventTarget.scrollHeight - (offset.bottom || 0);
1002
- y.value = scrollTop;
1003
- isScrolling.value = true;
1004
- onScrollEnd(e);
1005
- onScroll(e);
1006
- };
1007
- useEventListener(element, "scroll", throttle ? shared.useThrottleFn(onScrollHandler, throttle) : onScrollHandler, eventListenerOptions);
1008
- }
988
+ const onScrollEnd = shared.useDebounceFn((e) => {
989
+ isScrolling.value = false;
990
+ directions.left = false;
991
+ directions.right = false;
992
+ directions.top = false;
993
+ directions.bottom = false;
994
+ onStop(e);
995
+ }, throttle + idle);
996
+ const onScrollHandler = (e) => {
997
+ const eventTarget = e.target === document ? e.target.documentElement : e.target;
998
+ const scrollLeft = eventTarget.scrollLeft;
999
+ directions.left = scrollLeft < x.value;
1000
+ directions.right = scrollLeft > x.value;
1001
+ arrivedState.left = scrollLeft <= 0 + (offset.left || 0);
1002
+ arrivedState.right = scrollLeft + eventTarget.clientWidth >= eventTarget.scrollWidth - (offset.right || 0);
1003
+ x.value = scrollLeft;
1004
+ let scrollTop = eventTarget.scrollTop;
1005
+ if (e.target === document && !scrollTop)
1006
+ scrollTop = document.body.scrollTop;
1007
+ directions.top = scrollTop < y.value;
1008
+ directions.bottom = scrollTop > y.value;
1009
+ arrivedState.top = scrollTop <= 0 + (offset.top || 0);
1010
+ arrivedState.bottom = scrollTop + eventTarget.clientHeight >= eventTarget.scrollHeight - (offset.bottom || 0);
1011
+ y.value = scrollTop;
1012
+ isScrolling.value = true;
1013
+ onScrollEnd(e);
1014
+ onScroll(e);
1015
+ };
1016
+ useEventListener(element, "scroll", throttle ? shared.useThrottleFn(onScrollHandler, throttle) : onScrollHandler, eventListenerOptions);
1009
1017
  return {
1010
1018
  x,
1011
1019
  y,
@@ -1045,7 +1053,7 @@ function useInfiniteScroll(element, onLoadMore, options = {}) {
1045
1053
  vueDemi.watch(() => state.arrivedState[direction], async (v) => {
1046
1054
  var _a2, _b2;
1047
1055
  if (v) {
1048
- const elem = vueDemi.unref(element);
1056
+ const elem = shared.resolveUnref(element);
1049
1057
  const previous = {
1050
1058
  height: (_a2 = elem == null ? void 0 : elem.scrollHeight) != null ? _a2 : 0,
1051
1059
  width: (_b2 = elem == null ? void 0 : elem.scrollWidth) != null ? _b2 : 0
@@ -1079,9 +1087,9 @@ function useIntersectionObserver(target, callback, options = {}) {
1079
1087
  threshold = 0.1,
1080
1088
  window = defaultWindow
1081
1089
  } = options;
1082
- const isSupported = window && "IntersectionObserver" in window;
1090
+ const isSupported = useSupported(() => window && "IntersectionObserver" in window);
1083
1091
  let cleanup = shared.noop;
1084
- const stopWatch = isSupported ? vueDemi.watch(() => ({
1092
+ const stopWatch = isSupported.value ? vueDemi.watch(() => ({
1085
1093
  el: unrefElement(target),
1086
1094
  root: unrefElement(root)
1087
1095
  }), ({ el, root: root2 }) => {
@@ -1401,7 +1409,7 @@ function useCssVar(prop, target, { window = defaultWindow, initialValue = "" } =
1401
1409
  var _a;
1402
1410
  return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);
1403
1411
  });
1404
- vueDemi.watch([elRef, () => vueDemi.unref(prop)], ([el, prop2]) => {
1412
+ vueDemi.watch([elRef, () => shared.resolveUnref(prop)], ([el, prop2]) => {
1405
1413
  var _a;
1406
1414
  if (el && window) {
1407
1415
  const value = (_a = window.getComputedStyle(el).getPropertyValue(prop2)) == null ? void 0 : _a.trim();
@@ -1411,7 +1419,7 @@ function useCssVar(prop, target, { window = defaultWindow, initialValue = "" } =
1411
1419
  vueDemi.watch(variable, (val) => {
1412
1420
  var _a;
1413
1421
  if ((_a = elRef.value) == null ? void 0 : _a.style)
1414
- elRef.value.style.setProperty(vueDemi.unref(prop), val);
1422
+ elRef.value.style.setProperty(shared.resolveUnref(prop), val);
1415
1423
  });
1416
1424
  return variable;
1417
1425
  }
@@ -1550,7 +1558,7 @@ function useScrollLock(element, initialState = false) {
1550
1558
  const isLocked = vueDemi.ref(initialState);
1551
1559
  let stopTouchMoveListener = null;
1552
1560
  let initialOverflow;
1553
- vueDemi.watch(() => vueDemi.unref(element), (el) => {
1561
+ vueDemi.watch(shared.resolveRef(element), (el) => {
1554
1562
  if (el) {
1555
1563
  const ele = el;
1556
1564
  initialOverflow = ele.style.overflow;
@@ -1561,7 +1569,7 @@ function useScrollLock(element, initialState = false) {
1561
1569
  immediate: true
1562
1570
  });
1563
1571
  const lock = () => {
1564
- const ele = vueDemi.unref(element);
1572
+ const ele = shared.resolveUnref(element);
1565
1573
  if (!ele || isLocked.value)
1566
1574
  return;
1567
1575
  if (shared.isIOS) {
@@ -1571,7 +1579,7 @@ function useScrollLock(element, initialState = false) {
1571
1579
  isLocked.value = true;
1572
1580
  };
1573
1581
  const unlock = () => {
1574
- const ele = vueDemi.unref(element);
1582
+ const ele = shared.resolveUnref(element);
1575
1583
  if (!ele || !isLocked.value)
1576
1584
  return;
1577
1585
  shared.isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener());
@@ -1629,8 +1637,7 @@ const UseTimeAgo = vueDemi.defineComponent({
1629
1637
  name: "UseTimeAgo",
1630
1638
  props: ["time", "updateInterval", "max", "fullDateFormatter", "messages"],
1631
1639
  setup(props, { slots }) {
1632
- const time = vueDemi.toRef(props, "time");
1633
- const data = vueDemi.reactive(core.useTimeAgo(time, __spreadProps$1(__spreadValues$2({}, props), { controls: true })));
1640
+ const data = vueDemi.reactive(core.useTimeAgo(() => props.time, __spreadProps$1(__spreadValues$2({}, props), { controls: true })));
1634
1641
  return () => {
1635
1642
  if (slots.default)
1636
1643
  return slots.default(data);
package/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as vue_demi from 'vue-demi';
2
2
  import { FunctionDirective, ObjectDirective, ComponentPublicInstance, Ref, UnwrapNestedRefs, ComputedRef } from 'vue-demi';
3
- import { MaybeRef, ConfigurableEventFilter, ConfigurableFlush } from '@vueuse/shared';
4
- import { UseDarkOptions, UseDevicesListOptions, UseDraggableOptions, ElementSize as ElementSize$1, GeolocationOptions, IdleOptions, MouseOptions, MouseInElementOptions, MousePressedOptions, UseNowOptions, UsePointerOptions, UseTimeAgoOptions, TimestampOptions, UseVirtualListOptions, WindowSizeOptions } from '@vueuse/core';
3
+ import { MaybeComputedRef, MaybeRef, ConfigurableEventFilter, ConfigurableFlush } from '@vueuse/shared';
4
+ import { UseDarkOptions, UseDevicesListOptions, UseDraggableOptions, ElementSize as ElementSize$1, UseGeolocationOptions, UseIdleOptions, UseMouseOptions, MouseInElementOptions, MousePressedOptions, UseNowOptions, UsePointerOptions, UseTimeAgoOptions, UseTimestampOptions, UseVirtualListOptions, UseWindowSizeOptions } from '@vueuse/core';
5
5
 
6
6
  interface ConfigurableWindow {
7
7
  window?: Window;
@@ -21,18 +21,19 @@ declare const OnClickOutside: vue_demi.DefineComponent<RenderableComponent, {},
21
21
  declare const vOnClickOutside: FunctionDirective<any, <E = PointerEvent>(evt: E) => void>;
22
22
 
23
23
  declare type KeyStrokeEventName = 'keydown' | 'keypress' | 'keyup';
24
- interface KeyStrokeOptions {
24
+ interface OnKeyStrokeOptions {
25
25
  eventName?: KeyStrokeEventName;
26
- target?: MaybeRef<EventTarget>;
26
+ target?: MaybeComputedRef<EventTarget>;
27
27
  passive?: boolean;
28
28
  }
29
29
 
30
30
  declare type BindingValueFunction$7 = (event: KeyboardEvent) => void;
31
- declare type BindingValueArray$6 = [BindingValueFunction$7, KeyStrokeOptions];
31
+ declare type BindingValueArray$6 = [BindingValueFunction$7, OnKeyStrokeOptions];
32
32
  declare const vOnKeyStroke: ObjectDirective<HTMLElement, BindingValueFunction$7 | BindingValueArray$6>;
33
33
 
34
34
  declare type VueInstance = ComponentPublicInstance;
35
35
  declare type MaybeElementRef<T extends MaybeElement = MaybeElement> = MaybeRef<T>;
36
+ declare type MaybeComputedElementRef<T extends MaybeElement = MaybeElement> = MaybeComputedRef<T>;
36
37
  declare type MaybeElement = HTMLElement | SVGElement | VueInstance | undefined | null;
37
38
 
38
39
  interface OnLongPressOptions {
@@ -86,7 +87,7 @@ interface Serializer<T> {
86
87
  read(raw: string): T;
87
88
  write(value: T): string;
88
89
  }
89
- interface StorageOptions<T> extends ConfigurableEventFilter, ConfigurableWindow, ConfigurableFlush {
90
+ interface UseStorageOptions<T> extends ConfigurableEventFilter, ConfigurableWindow, ConfigurableFlush {
90
91
  /**
91
92
  * Watch for deep changes
92
93
  *
@@ -124,7 +125,7 @@ interface StorageOptions<T> extends ConfigurableEventFilter, ConfigurableWindow,
124
125
  }
125
126
 
126
127
  declare type BasicColorSchema = 'light' | 'dark' | 'auto';
127
- interface UseColorModeOptions<T extends string = BasicColorSchema> extends StorageOptions<T | BasicColorSchema> {
128
+ interface UseColorModeOptions<T extends string = BasicColorSchema> extends UseStorageOptions<T | BasicColorSchema> {
128
129
  /**
129
130
  * CSS Selector for the target element applying to
130
131
  *
@@ -215,7 +216,7 @@ interface UseDraggableProps extends UseDraggableOptions, RenderableComponent {
215
216
  }
216
217
  declare const UseDraggable: vue_demi.DefineComponent<UseDraggableProps, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<UseDraggableProps>, {}>;
217
218
 
218
- interface ResizeObserverOptions extends ConfigurableWindow {
219
+ interface UseResizeObserverOptions extends ConfigurableWindow {
219
220
  /**
220
221
  * Sets which box model the observer will observe changes to. Possible values
221
222
  * are `content-box` (the default), and `border-box`.
@@ -225,12 +226,12 @@ interface ResizeObserverOptions extends ConfigurableWindow {
225
226
  box?: 'content-box' | 'border-box';
226
227
  }
227
228
 
228
- declare const UseElementBounding: vue_demi.DefineComponent<ResizeObserverOptions & RenderableComponent, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<ResizeObserverOptions & RenderableComponent>, {}>;
229
+ declare const UseElementBounding: vue_demi.DefineComponent<UseResizeObserverOptions & RenderableComponent, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<UseResizeObserverOptions & RenderableComponent>, {}>;
229
230
 
230
231
  declare type BindingValueFunction$5 = (state: boolean) => void;
231
232
  declare const vElementHover: ObjectDirective<HTMLElement, BindingValueFunction$5>;
232
233
 
233
- declare const UseElementSize: vue_demi.DefineComponent<ElementSize$1 & ResizeObserverOptions & RenderableComponent, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<ElementSize$1 & ResizeObserverOptions & RenderableComponent>, {}>;
234
+ declare const UseElementSize: vue_demi.DefineComponent<ElementSize$1 & UseResizeObserverOptions & RenderableComponent, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<ElementSize$1 & UseResizeObserverOptions & RenderableComponent>, {}>;
234
235
 
235
236
  interface ElementSize {
236
237
  width: number;
@@ -244,7 +245,7 @@ interface ElementSize {
244
245
  * @param callback
245
246
  * @param options
246
247
  */
247
- declare function useElementSize(target: MaybeElementRef, initialSize?: ElementSize, options?: ResizeObserverOptions): {
248
+ declare function useElementSize(target: MaybeComputedElementRef, initialSize?: ElementSize, options?: UseResizeObserverOptions): {
248
249
  width: vue_demi.Ref<number>;
249
250
  height: vue_demi.Ref<number>;
250
251
  };
@@ -257,12 +258,12 @@ declare const vElementSize: ObjectDirective<HTMLElement, BindingValueFunction$4
257
258
 
258
259
  declare const UseElementVisibility: vue_demi.DefineComponent<RenderableComponent, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<RenderableComponent>, {}>;
259
260
 
260
- interface VisibilityScrollTargetOptions extends ConfigurableWindow {
261
- scrollTarget?: MaybeRef<Element | null | undefined>;
261
+ interface UseElementVisibilityOptions extends ConfigurableWindow {
262
+ scrollTarget?: MaybeComputedRef<HTMLElement | undefined | null>;
262
263
  }
263
264
 
264
265
  declare type BindingValueFunction$3 = (state: boolean) => void;
265
- declare type BindingValueArray$3 = [BindingValueFunction$3, VisibilityScrollTargetOptions];
266
+ declare type BindingValueArray$3 = [BindingValueFunction$3, UseElementVisibilityOptions];
266
267
  declare const vElementVisibility: ObjectDirective<HTMLElement, BindingValueFunction$3 | BindingValueArray$3>;
267
268
 
268
269
  declare const UseEyeDropper: vue_demi.DefineComponent<{
@@ -275,11 +276,11 @@ declare const UseEyeDropper: vue_demi.DefineComponent<{
275
276
 
276
277
  declare const UseFullscreen: vue_demi.DefineComponent<RenderableComponent, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<RenderableComponent>, {}>;
277
278
 
278
- declare const UseGeolocation: vue_demi.DefineComponent<GeolocationOptions, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<GeolocationOptions>, {}>;
279
+ declare const UseGeolocation: vue_demi.DefineComponent<UseGeolocationOptions, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<UseGeolocationOptions>, {}>;
279
280
 
280
- declare const UseIdle: vue_demi.DefineComponent<IdleOptions & {
281
+ declare const UseIdle: vue_demi.DefineComponent<UseIdleOptions & {
281
282
  timeout: number;
282
- }, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<IdleOptions & {
283
+ }, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<UseIdleOptions & {
283
284
  timeout: number;
284
285
  }>, {}>;
285
286
 
@@ -342,7 +343,7 @@ interface UseScrollOptions {
342
343
  * @param element
343
344
  * @param options
344
345
  */
345
- declare function useScroll(element: MaybeRef<HTMLElement | SVGElement | Window | Document | null | undefined>, options?: UseScrollOptions): {
346
+ declare function useScroll(element: MaybeComputedRef<HTMLElement | SVGElement | Window | Document | null | undefined>, options?: UseScrollOptions): {
346
347
  x: vue_demi.Ref<number>;
347
348
  y: vue_demi.Ref<number>;
348
349
  isScrolling: vue_demi.Ref<boolean>;
@@ -373,7 +374,7 @@ interface UseInfiniteScrollOptions extends UseScrollOptions {
373
374
  *
374
375
  * @default 'bottom'
375
376
  */
376
- direction?: 'top' | 'bottom';
377
+ direction?: 'top' | 'bottom' | 'left' | 'right';
377
378
  /**
378
379
  * Whether to preserve the current scroll position when loading more items.
379
380
  *
@@ -386,13 +387,13 @@ interface UseInfiniteScrollOptions extends UseScrollOptions {
386
387
  *
387
388
  * @see https://vueuse.org/useInfiniteScroll
388
389
  */
389
- declare function useInfiniteScroll(element: MaybeRef<HTMLElement | SVGElement | Window | Document | null | undefined>, onLoadMore: (state: UnwrapNestedRefs<ReturnType<typeof useScroll>>) => void | Promise<void>, options?: UseInfiniteScrollOptions): void;
390
+ declare function useInfiniteScroll(element: MaybeComputedRef<HTMLElement | SVGElement | Window | Document | null | undefined>, onLoadMore: (state: UnwrapNestedRefs<ReturnType<typeof useScroll>>) => void | Promise<void>, options?: UseInfiniteScrollOptions): void;
390
391
 
391
392
  declare type BindingValueFunction$2 = Parameters<typeof useInfiniteScroll>[1];
392
393
  declare type BindingValueArray$2 = [BindingValueFunction$2, UseInfiniteScrollOptions];
393
394
  declare const vInfiniteScroll: ObjectDirective<HTMLElement, BindingValueFunction$2 | BindingValueArray$2>;
394
395
 
395
- interface IntersectionObserverOptions extends ConfigurableWindow {
396
+ interface UseIntersectionObserverOptions extends ConfigurableWindow {
396
397
  /**
397
398
  * The Element or Document whose bounds are used as the bounding box when testing for intersection.
398
399
  */
@@ -408,10 +409,10 @@ interface IntersectionObserverOptions extends ConfigurableWindow {
408
409
  }
409
410
 
410
411
  declare type BindingValueFunction$1 = IntersectionObserverCallback;
411
- declare type BindingValueArray$1 = [BindingValueFunction$1, IntersectionObserverOptions];
412
+ declare type BindingValueArray$1 = [BindingValueFunction$1, UseIntersectionObserverOptions];
412
413
  declare const vIntersectionObserver: ObjectDirective<HTMLElement, BindingValueFunction$1 | BindingValueArray$1>;
413
414
 
414
- declare const UseMouse: vue_demi.DefineComponent<MouseOptions, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<MouseOptions>, {}>;
415
+ declare const UseMouse: vue_demi.DefineComponent<UseMouseOptions, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<UseMouseOptions>, {}>;
415
416
 
416
417
  declare const UseMouseInElement: vue_demi.DefineComponent<MouseInElementOptions & RenderableComponent, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<MouseInElementOptions & RenderableComponent>, {}>;
417
418
 
@@ -524,7 +525,7 @@ interface UseTimeAgoComponentOptions extends Omit<UseTimeAgoOptions<true>, 'cont
524
525
  }
525
526
  declare const UseTimeAgo: vue_demi.DefineComponent<UseTimeAgoComponentOptions, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<UseTimeAgoComponentOptions>, {}>;
526
527
 
527
- declare const UseTimestamp: vue_demi.DefineComponent<Omit<TimestampOptions<true>, "controls">, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<Omit<TimestampOptions<true>, "controls">>, {}>;
528
+ declare const UseTimestamp: vue_demi.DefineComponent<Omit<UseTimestampOptions<true>, "controls">, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<Omit<UseTimestampOptions<true>, "controls">>, {}>;
528
529
 
529
530
  interface UseVirtualListProps {
530
531
  /**
@@ -552,6 +553,6 @@ declare const UseWindowFocus: vue_demi.DefineComponent<{}, () => vue_demi.VNode<
552
553
  [key: string]: any;
553
554
  }>[] | undefined, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<vue_demi.ExtractPropTypes<{}>>, {}>;
554
555
 
555
- declare const UseWindowSize: vue_demi.DefineComponent<WindowSizeOptions, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<WindowSizeOptions>, {}>;
556
+ declare const UseWindowSize: vue_demi.DefineComponent<UseWindowSizeOptions, {}, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<UseWindowSizeOptions>, {}>;
556
557
 
557
558
  export { OnClickOutside, OnLongPress, OnLongPressProps, UseActiveElement, UseBattery, UseBrowserLocation, UseColorMode, UseDark, UseDeviceMotion, UseDeviceOrientation, UseDevicePixelRatio, UseDevicesList, UseDocumentVisibility, UseDraggable, UseDraggableProps, UseElementBounding, UseElementSize, UseElementVisibility, UseEyeDropper, UseFullscreen, UseGeolocation, UseIdle, UseImage, UseMouse, UseMouseInElement, UseMousePressed, UseNetwork, UseNow, UseObjectUrl, UseObjectUrlProps, UseOffsetPagination, UseOnline, UsePageLeave, UsePointer, UsePreferredColorScheme, UsePreferredDark, UsePreferredLanguages, UseScreenSafeArea, UseTimeAgo, UseTimestamp, UseVirtualList, UseVirtualListProps, UseWindowFocus, UseWindowSize, vOnClickOutside as VOnClickOutside, vOnLongPress as VOnLongPress, vElementHover, vElementSize, vElementVisibility, vInfiniteScroll, vIntersectionObserver, vOnClickOutside, vOnKeyStroke, vOnLongPress, vScroll, vScrollLock };
package/index.iife.js CHANGED
@@ -13,22 +13,6 @@
13
13
  VueDemi.Vue = Vue
14
14
  VueDemi.Vue2 = Vue
15
15
  VueDemi.version = Vue.version
16
- VueDemi.set = function(target, key, val) {
17
- if (Array.isArray(target)) {
18
- target.length = Math.max(target.length, key)
19
- target.splice(key, 1, val)
20
- return val
21
- }
22
- Vue.set(target, key, val)
23
- return val
24
- }
25
- VueDemi.del = function(target, key) {
26
- if (Array.isArray(target)) {
27
- target.splice(key, 1)
28
- return
29
- }
30
- Vue.delete(target, key)
31
- }
32
16
  }
33
17
  else if (Vue.version.slice(0, 2) === '2.') {
34
18
  if (VueCompositionAPI) {
@@ -108,7 +92,7 @@
108
92
 
109
93
  function unrefElement(elRef) {
110
94
  var _a;
111
- const plain = vueDemi.unref(elRef);
95
+ const plain = shared.resolveUnref(elRef);
112
96
  return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;
113
97
  }
114
98
 
@@ -423,7 +407,7 @@
423
407
  }
424
408
  if (!storage)
425
409
  return data;
426
- const rawInit = vueDemi.unref(initialValue);
410
+ const rawInit = shared.resolveUnref(initialValue);
427
411
  const type = guessSerializerType(rawInit);
428
412
  const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];
429
413
  const { pause: pauseWatch, resume: resumeWatch } = shared.pausableWatch(data, () => write(data.value), { flush, deep, eventFilter });
@@ -469,13 +453,21 @@
469
453
  }
470
454
  }
471
455
 
456
+ function useSupported(callback, sync = false) {
457
+ const isSupported = vueDemi.ref();
458
+ const update = () => isSupported.value = Boolean(callback());
459
+ update();
460
+ shared.tryOnMounted(update, sync);
461
+ return isSupported;
462
+ }
463
+
472
464
  function useMediaQuery(query, options = {}) {
473
465
  const { window = defaultWindow } = options;
474
- const isSupported = Boolean(window && "matchMedia" in window && typeof window.matchMedia === "function");
466
+ const isSupported = useSupported(() => window && "matchMedia" in window && typeof window.matchMedia === "function");
475
467
  let mediaQuery;
476
468
  const matches = vueDemi.ref(false);
477
469
  const update = () => {
478
- if (!isSupported)
470
+ if (!isSupported.value)
479
471
  return;
480
472
  if (!mediaQuery)
481
473
  mediaQuery = window.matchMedia(query);
@@ -702,7 +694,7 @@
702
694
  ],
703
695
  setup(props, { slots }) {
704
696
  const target = vueDemi.ref();
705
- const initialValue = props.storageKey ? core.useStorage(props.storageKey, vueDemi.unref(props.initialValue) || { x: 0, y: 0 }, core.isClient ? props.storageType === "session" ? sessionStorage : localStorage : void 0) : props.initialValue || { x: 0, y: 0 };
697
+ const initialValue = props.storageKey ? core.useStorage(props.storageKey, shared.resolveUnref(props.initialValue) || { x: 0, y: 0 }, core.isClient ? props.storageType === "session" ? sessionStorage : localStorage : void 0) : props.initialValue || { x: 0, y: 0 };
706
698
  const data = vueDemi.reactive(core.useDraggable(target, __spreadProps$8(__spreadValues$a({}, props), {
707
699
  initialValue
708
700
  })));
@@ -773,7 +765,7 @@
773
765
  function useResizeObserver(target, callback, options = {}) {
774
766
  const _a = options, { window = defaultWindow } = _a, observerOptions = __objRest(_a, ["window"]);
775
767
  let observer;
776
- const isSupported = window && "ResizeObserver" in window;
768
+ const isSupported = useSupported(() => window && "ResizeObserver" in window);
777
769
  const cleanup = () => {
778
770
  if (observer) {
779
771
  observer.disconnect();
@@ -782,7 +774,7 @@
782
774
  };
783
775
  const stopWatch = vueDemi.watch(() => unrefElement(target), (el) => {
784
776
  cleanup();
785
- if (isSupported && window && el) {
777
+ if (isSupported.value && window && el) {
786
778
  observer = new ResizeObserver(callback);
787
779
  observer.observe(el, observerOptions);
788
780
  }
@@ -846,16 +838,18 @@
846
838
  if (!window)
847
839
  return;
848
840
  const document = window.document;
849
- if (!vueDemi.unref(element)) {
841
+ const el = shared.resolveUnref(element);
842
+ if (!el) {
850
843
  elementIsVisible.value = false;
851
844
  } else {
852
- const rect = vueDemi.unref(element).getBoundingClientRect();
845
+ const rect = el.getBoundingClientRect();
853
846
  elementIsVisible.value = rect.top <= (window.innerHeight || document.documentElement.clientHeight) && rect.left <= (window.innerWidth || document.documentElement.clientWidth) && rect.bottom >= 0 && rect.right >= 0;
854
847
  }
855
848
  };
856
849
  shared.tryOnMounted(testBounding);
857
- if (window)
858
- shared.tryOnMounted(() => useEventListener(vueDemi.unref(scrollTarget) || window, "scroll", testBounding, { capture: false, passive: true }));
850
+ if (window) {
851
+ shared.tryOnMounted(() => useEventListener(() => shared.resolveUnref(scrollTarget) || window, "scroll", testBounding, { capture: false, passive: true }));
852
+ }
859
853
  return elementIsVisible;
860
854
  }
861
855
 
@@ -998,10 +992,10 @@
998
992
  });
999
993
  }
1000
994
  const useImage = (options, asyncStateOptions = {}) => {
1001
- const state = useAsyncState(() => loadImage(vueDemi.unref(options)), void 0, __spreadValues$9({
995
+ const state = useAsyncState(() => loadImage(shared.resolveUnref(options)), void 0, __spreadValues$9({
1002
996
  resetOnExecute: true
1003
997
  }, asyncStateOptions));
1004
- vueDemi.watch(() => vueDemi.unref(options), () => state.execute(asyncStateOptions.delay), { deep: true });
998
+ vueDemi.watch(() => shared.resolveUnref(options), () => state.execute(asyncStateOptions.delay), { deep: true });
1005
999
  return state;
1006
1000
  };
1007
1001
 
@@ -1059,37 +1053,35 @@
1059
1053
  top: false,
1060
1054
  bottom: false
1061
1055
  });
1062
- if (element) {
1063
- const onScrollEnd = shared.useDebounceFn((e) => {
1064
- isScrolling.value = false;
1065
- directions.left = false;
1066
- directions.right = false;
1067
- directions.top = false;
1068
- directions.bottom = false;
1069
- onStop(e);
1070
- }, throttle + idle);
1071
- const onScrollHandler = (e) => {
1072
- const eventTarget = e.target === document ? e.target.documentElement : e.target;
1073
- const scrollLeft = eventTarget.scrollLeft;
1074
- directions.left = scrollLeft < x.value;
1075
- directions.right = scrollLeft > x.value;
1076
- arrivedState.left = scrollLeft <= 0 + (offset.left || 0);
1077
- arrivedState.right = scrollLeft + eventTarget.clientWidth >= eventTarget.scrollWidth - (offset.right || 0);
1078
- x.value = scrollLeft;
1079
- let scrollTop = eventTarget.scrollTop;
1080
- if (e.target === document && !scrollTop)
1081
- scrollTop = document.body.scrollTop;
1082
- directions.top = scrollTop < y.value;
1083
- directions.bottom = scrollTop > y.value;
1084
- arrivedState.top = scrollTop <= 0 + (offset.top || 0);
1085
- arrivedState.bottom = scrollTop + eventTarget.clientHeight >= eventTarget.scrollHeight - (offset.bottom || 0);
1086
- y.value = scrollTop;
1087
- isScrolling.value = true;
1088
- onScrollEnd(e);
1089
- onScroll(e);
1090
- };
1091
- useEventListener(element, "scroll", throttle ? shared.useThrottleFn(onScrollHandler, throttle) : onScrollHandler, eventListenerOptions);
1092
- }
1056
+ const onScrollEnd = shared.useDebounceFn((e) => {
1057
+ isScrolling.value = false;
1058
+ directions.left = false;
1059
+ directions.right = false;
1060
+ directions.top = false;
1061
+ directions.bottom = false;
1062
+ onStop(e);
1063
+ }, throttle + idle);
1064
+ const onScrollHandler = (e) => {
1065
+ const eventTarget = e.target === document ? e.target.documentElement : e.target;
1066
+ const scrollLeft = eventTarget.scrollLeft;
1067
+ directions.left = scrollLeft < x.value;
1068
+ directions.right = scrollLeft > x.value;
1069
+ arrivedState.left = scrollLeft <= 0 + (offset.left || 0);
1070
+ arrivedState.right = scrollLeft + eventTarget.clientWidth >= eventTarget.scrollWidth - (offset.right || 0);
1071
+ x.value = scrollLeft;
1072
+ let scrollTop = eventTarget.scrollTop;
1073
+ if (e.target === document && !scrollTop)
1074
+ scrollTop = document.body.scrollTop;
1075
+ directions.top = scrollTop < y.value;
1076
+ directions.bottom = scrollTop > y.value;
1077
+ arrivedState.top = scrollTop <= 0 + (offset.top || 0);
1078
+ arrivedState.bottom = scrollTop + eventTarget.clientHeight >= eventTarget.scrollHeight - (offset.bottom || 0);
1079
+ y.value = scrollTop;
1080
+ isScrolling.value = true;
1081
+ onScrollEnd(e);
1082
+ onScroll(e);
1083
+ };
1084
+ useEventListener(element, "scroll", throttle ? shared.useThrottleFn(onScrollHandler, throttle) : onScrollHandler, eventListenerOptions);
1093
1085
  return {
1094
1086
  x,
1095
1087
  y,
@@ -1129,7 +1121,7 @@
1129
1121
  vueDemi.watch(() => state.arrivedState[direction], async (v) => {
1130
1122
  var _a2, _b2;
1131
1123
  if (v) {
1132
- const elem = vueDemi.unref(element);
1124
+ const elem = shared.resolveUnref(element);
1133
1125
  const previous = {
1134
1126
  height: (_a2 = elem == null ? void 0 : elem.scrollHeight) != null ? _a2 : 0,
1135
1127
  width: (_b2 = elem == null ? void 0 : elem.scrollWidth) != null ? _b2 : 0
@@ -1163,9 +1155,9 @@
1163
1155
  threshold = 0.1,
1164
1156
  window = defaultWindow
1165
1157
  } = options;
1166
- const isSupported = window && "IntersectionObserver" in window;
1158
+ const isSupported = useSupported(() => window && "IntersectionObserver" in window);
1167
1159
  let cleanup = shared.noop;
1168
- const stopWatch = isSupported ? vueDemi.watch(() => ({
1160
+ const stopWatch = isSupported.value ? vueDemi.watch(() => ({
1169
1161
  el: unrefElement(target),
1170
1162
  root: unrefElement(root)
1171
1163
  }), ({ el, root: root2 }) => {
@@ -1485,7 +1477,7 @@
1485
1477
  var _a;
1486
1478
  return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);
1487
1479
  });
1488
- vueDemi.watch([elRef, () => vueDemi.unref(prop)], ([el, prop2]) => {
1480
+ vueDemi.watch([elRef, () => shared.resolveUnref(prop)], ([el, prop2]) => {
1489
1481
  var _a;
1490
1482
  if (el && window) {
1491
1483
  const value = (_a = window.getComputedStyle(el).getPropertyValue(prop2)) == null ? void 0 : _a.trim();
@@ -1495,7 +1487,7 @@
1495
1487
  vueDemi.watch(variable, (val) => {
1496
1488
  var _a;
1497
1489
  if ((_a = elRef.value) == null ? void 0 : _a.style)
1498
- elRef.value.style.setProperty(vueDemi.unref(prop), val);
1490
+ elRef.value.style.setProperty(shared.resolveUnref(prop), val);
1499
1491
  });
1500
1492
  return variable;
1501
1493
  }
@@ -1634,7 +1626,7 @@
1634
1626
  const isLocked = vueDemi.ref(initialState);
1635
1627
  let stopTouchMoveListener = null;
1636
1628
  let initialOverflow;
1637
- vueDemi.watch(() => vueDemi.unref(element), (el) => {
1629
+ vueDemi.watch(shared.resolveRef(element), (el) => {
1638
1630
  if (el) {
1639
1631
  const ele = el;
1640
1632
  initialOverflow = ele.style.overflow;
@@ -1645,7 +1637,7 @@
1645
1637
  immediate: true
1646
1638
  });
1647
1639
  const lock = () => {
1648
- const ele = vueDemi.unref(element);
1640
+ const ele = shared.resolveUnref(element);
1649
1641
  if (!ele || isLocked.value)
1650
1642
  return;
1651
1643
  if (shared.isIOS) {
@@ -1655,7 +1647,7 @@
1655
1647
  isLocked.value = true;
1656
1648
  };
1657
1649
  const unlock = () => {
1658
- const ele = vueDemi.unref(element);
1650
+ const ele = shared.resolveUnref(element);
1659
1651
  if (!ele || !isLocked.value)
1660
1652
  return;
1661
1653
  shared.isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener());
@@ -1713,8 +1705,7 @@
1713
1705
  name: "UseTimeAgo",
1714
1706
  props: ["time", "updateInterval", "max", "fullDateFormatter", "messages"],
1715
1707
  setup(props, { slots }) {
1716
- const time = vueDemi.toRef(props, "time");
1717
- const data = vueDemi.reactive(core.useTimeAgo(time, __spreadProps$1(__spreadValues$2({}, props), { controls: true })));
1708
+ const data = vueDemi.reactive(core.useTimeAgo(() => props.time, __spreadProps$1(__spreadValues$2({}, props), { controls: true })));
1718
1709
  return () => {
1719
1710
  if (slots.default)
1720
1711
  return slots.default(data);
package/index.iife.min.js CHANGED
@@ -1 +1 @@
1
- var VueDemi=function(s,n,d){if(s.install)return s;if(n)if(n.version.slice(0,4)==="2.7."){for(var u in n)s[u]=n[u];s.isVue2=!0,s.isVue3=!1,s.install=function(){},s.Vue=n,s.Vue2=n,s.version=n.version,s.set=function(w,h,P){return Array.isArray(w)?(w.length=Math.max(w.length,h),w.splice(h,1,P),P):(n.set(w,h,P),P)},s.del=function(w,h){if(Array.isArray(w)){w.splice(h,1);return}n.delete(w,h)}}else if(n.version.slice(0,2)==="2.")if(d){for(var u in d)s[u]=d[u];s.isVue2=!0,s.isVue3=!1,s.install=function(){},s.Vue=n,s.Vue2=n,s.version=n.version}else console.error("[vue-demi] no VueCompositionAPI instance found, please be sure to import `@vue/composition-api` before `vue-demi`.");else if(n.version.slice(0,2)==="3."){for(var u in n)s[u]=n[u];s.isVue2=!1,s.isVue3=!0,s.install=function(){},s.Vue=n,s.Vue2=void 0,s.version=n.version,s.set=function(w,h,P){return Array.isArray(w)?(w.length=Math.max(w.length,h),w.splice(h,1,P),P):(w[h]=P,P)},s.del=function(w,h){if(Array.isArray(w)){w.splice(h,1);return}delete w[h]}}else console.error("[vue-demi] Vue version "+n.version+" is unsupported.");else console.error("[vue-demi] no Vue instance found, please be sure to import `vue` before `vue-demi`.");return s}(this.VueDemi=this.VueDemi||(typeof VueDemi!="undefined"?VueDemi:{}),this.Vue||(typeof Vue!="undefined"?Vue:void 0),this.VueCompositionAPI||(typeof VueCompositionAPI!="undefined"?VueCompositionAPI:void 0));(function(s,n,d,u){"use strict";const w=n.defineComponent({name:"OnClickOutside",props:["as"],emits:["trigger"],setup(t,{slots:e,emit:r}){const o=n.ref();return d.onClickOutside(o,a=>{r("trigger",a)}),()=>{if(e.default)return n.h(t.as||"div",{ref:o},e.default())}}});function h(t){var e;const r=n.unref(t);return(e=r==null?void 0:r.$el)!=null?e:r}const P=u.isClient?window:void 0;function $(...t){let e,r,o,a;if(u.isString(t[0])?([r,o,a]=t,e=P):[e,r,o,a]=t,!e)return u.noop;let l=u.noop;const i=n.watch(()=>h(e),f=>{l(),!!f&&(f.addEventListener(r,o,a),l=()=>{f.removeEventListener(r,o,a),l=u.noop})},{immediate:!0,flush:"post"}),c=()=>{i(),l()};return u.tryOnScopeDispose(c),c}function z(t,e,r={}){const{window:o=P,ignore:a,capture:l=!0,detectIframe:i=!1}=r;if(!o)return;const c=n.ref(!0);let f;const _=p=>{o.clearTimeout(f);const g=h(t),b=p.composedPath();!g||g===p.target||b.includes(g)||!c.value||a&&a.length>0&&a.some(U=>{const m=h(U);return m&&(p.target===m||b.includes(m))})||e(p)},v=[$(o,"click",_,{passive:!0,capture:l}),$(o,"pointerdown",p=>{const g=h(t);c.value=!!g&&!p.composedPath().includes(g)},{passive:!0}),$(o,"pointerup",p=>{if(p.button===0){const g=p.composedPath();p.composedPath=()=>g,f=o.setTimeout(()=>_(p),50)}},{passive:!0}),i&&$(o,"blur",p=>{var g;const b=h(t);((g=document.activeElement)==null?void 0:g.tagName)==="IFRAME"&&!(b==null?void 0:b.contains(document.activeElement))&&e(p)})].filter(Boolean);return()=>v.forEach(p=>p())}const R=(()=>{let t=null;return(e,r)=>{if(t){t(),t=z(e,r.value);return}t=z(e,r.value)}})(),Se=t=>typeof t=="function"?t:typeof t=="string"?e=>e.key===t:Array.isArray(t)?e=>t.includes(e.key):t?()=>!0:()=>!1;function B(t,e,r={}){const{target:o=P,eventName:a="keydown",passive:l=!1}=r,i=Se(t);return $(o,a,f=>{i(f)&&e(f)},l)}var $e=Object.defineProperty,W=Object.getOwnPropertySymbols,Ce=Object.prototype.hasOwnProperty,Ee=Object.prototype.propertyIsEnumerable,k=(t,e,r)=>e in t?$e(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,je=(t,e)=>{for(var r in e||(e={}))Ce.call(e,r)&&k(t,r,e[r]);if(W)for(var r of W(e))Ee.call(e,r)&&k(t,r,e[r]);return t};const Le={[u.directiveHooks.mounted](t,e){var r,o;const a=(o=(r=e.arg)==null?void 0:r.split(","))!=null?o:[];if(typeof e.value=="function")B(a,e.value,{target:t});else{const[l,i]=e.value;B(a,l,je({target:t},i))}}},Ie=500;function N(t,e,r){var o,a;const l=n.computed(()=>h(t));let i=null;function c(){i!=null&&(clearTimeout(i),i=null)}function f(v){var O,p,g,b;((O=r==null?void 0:r.modifiers)==null?void 0:O.self)&&v.target!==l.value||(c(),((p=r==null?void 0:r.modifiers)==null?void 0:p.prevent)&&v.preventDefault(),((g=r==null?void 0:r.modifiers)==null?void 0:g.stop)&&v.stopPropagation(),i=setTimeout(()=>e(v),(b=r==null?void 0:r.delay)!=null?b:Ie))}const _={capture:(o=r==null?void 0:r.modifiers)==null?void 0:o.capture,once:(a=r==null?void 0:r.modifiers)==null?void 0:a.once};$(l,"pointerdown",f,_),$(l,"pointerup",c,_),$(l,"pointerleave",c,_)}const Me=n.defineComponent({name:"OnLongPress",props:["as","options"],emits:["trigger"],setup(t,{slots:e,emit:r}){const o=n.ref();return N(o,a=>{r("trigger",a)},t.options),()=>{if(e.default)return n.h(t.as||"div",{ref:o},e.default())}}}),F={[u.directiveHooks.mounted](t,e){typeof e.value=="function"?N(t,e.value,{modifiers:e.modifiers}):N(t,...e.value)}},Ae=n.defineComponent({name:"UseActiveElement",setup(t,{slots:e}){const r=n.reactive({element:d.useActiveElement()});return()=>{if(e.default)return e.default(r)}}}),Ne=n.defineComponent({name:"UseBattery",setup(t,{slots:e}){const r=n.reactive(d.useBattery(t));return()=>{if(e.default)return e.default(r)}}}),Te=n.defineComponent({name:"UseBrowserLocation",setup(t,{slots:e}){const r=n.reactive(d.useBrowserLocation());return()=>{if(e.default)return e.default(r)}}}),T=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{},V="__vueuse_ssr_handlers__";T[V]=T[V]||{};const Ve=T[V];function K(t,e){return Ve[t]||e}function He(t){return t==null?"any":t instanceof Set?"set":t instanceof Map?"map":t instanceof Date?"date":typeof t=="boolean"?"boolean":typeof t=="string"?"string":typeof t=="object"||Array.isArray(t)?"object":Number.isNaN(t)?"any":"number"}const ze={boolean:{read:t=>t==="true",write:t=>String(t)},object:{read:t=>JSON.parse(t),write:t=>JSON.stringify(t)},number:{read:t=>Number.parseFloat(t),write:t=>String(t)},any:{read:t=>t,write:t=>String(t)},string:{read:t=>t,write:t=>String(t)},map:{read:t=>new Map(JSON.parse(t)),write:t=>JSON.stringify(Array.from(t.entries()))},set:{read:t=>new Set(JSON.parse(t)),write:t=>JSON.stringify(Array.from(t))},date:{read:t=>new Date(t),write:t=>t.toISOString()}};function Re(t,e,r,o={}){var a;const{flush:l="pre",deep:i=!0,listenToStorageChanges:c=!0,writeDefaults:f=!0,shallow:_,window:v=P,eventFilter:O,onError:p=y=>{console.error(y)}}=o,g=(_?n.shallowRef:n.ref)(e);if(!r)try{r=K("getDefaultStorage",()=>{var y;return(y=P)==null?void 0:y.localStorage})()}catch(y){p(y)}if(!r)return g;const b=n.unref(e),U=He(b),m=(a=o.serializer)!=null?a:ze[U],{pause:S,resume:C}=u.pausableWatch(g,()=>j(g.value),{flush:l,deep:i,eventFilter:O});return v&&c&&$(v,"storage",A),A(),g;function j(y){try{y==null?r.removeItem(t):r.setItem(t,m.write(y))}catch(E){p(E)}}function L(y){if(!(y&&y.key!==t)){S();try{const E=y?y.newValue:r.getItem(t);return E==null?(f&&b!==null&&r.setItem(t,m.write(b)),b):typeof E!="string"?E:m.read(E)}catch(E){p(E)}finally{C()}}}function A(y){y&&y.key!==t||(g.value=L(y))}}function Be(t,e={}){const{window:r=P}=e,o=Boolean(r&&"matchMedia"in r&&typeof r.matchMedia=="function");let a;const l=n.ref(!1),i=()=>{!o||(a||(a=r.matchMedia(t)),l.value=a.matches)};return u.tryOnBeforeMount(()=>{i(),!!a&&("addEventListener"in a?a.addEventListener("change",i):a.addListener(i),u.tryOnScopeDispose(()=>{"removeEventListener"in a?a.removeEventListener("change",i):a.removeListener(i)}))}),l}function We(t){return Be("(prefers-color-scheme: dark)",t)}var ke=Object.defineProperty,J=Object.getOwnPropertySymbols,Fe=Object.prototype.hasOwnProperty,Ke=Object.prototype.propertyIsEnumerable,G=(t,e,r)=>e in t?ke(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,Je=(t,e)=>{for(var r in e||(e={}))Fe.call(e,r)&&G(t,r,e[r]);if(J)for(var r of J(e))Ke.call(e,r)&&G(t,r,e[r]);return t};function Ge(t={}){const{selector:e="html",attribute:r="class",window:o=P,storage:a,storageKey:l="vueuse-color-scheme",listenToStorageChanges:i=!0,storageRef:c,emitAuto:f}=t,_=Je({auto:"",light:"light",dark:"dark"},t.modes||{}),v=We({window:o}),O=n.computed(()=>v.value?"dark":"light"),p=c||(l==null?n.ref("auto"):Re(l,"auto",a,{window:o,listenToStorageChanges:i})),g=n.computed({get(){return p.value==="auto"&&!f?O.value:p.value},set(S){p.value=S}}),b=K("updateHTMLAttrs",(S,C,j)=>{const L=o==null?void 0:o.document.querySelector(S);if(!!L)if(C==="class"){const A=j.split(/\s/g);Object.values(_).flatMap(y=>(y||"").split(/\s/g)).filter(Boolean).forEach(y=>{A.includes(y)?L.classList.add(y):L.classList.remove(y)})}else L.setAttribute(C,j)});function U(S){var C;const j=S==="auto"?O.value:S;b(e,r,(C=_[j])!=null?C:j)}function m(S){t.onChanged?t.onChanged(S,U):U(S)}return n.watch(g,m,{flush:"post",immediate:!0}),u.tryOnMounted(()=>m(g.value)),g}const qe=n.defineComponent({name:"UseColorMode",props:["selector","attribute","modes","onChanged","storageKey","storage","emitAuto"],setup(t,{slots:e}){const r=Ge(t),o=n.reactive({mode:r});return()=>{if(e.default)return e.default(o)}}}),Qe=n.defineComponent({name:"UseDark",props:["selector","attribute","valueDark","valueLight","onChanged","storageKey","storage"],setup(t,{slots:e}){const r=d.useDark(t),o=n.reactive({isDark:r,toggleDark:u.useToggle(r)});return()=>{if(e.default)return e.default(o)}}}),Ye=n.defineComponent({name:"UseDeviceMotion",setup(t,{slots:e}){const r=n.reactive(d.useDeviceMotion());return()=>{if(e.default)return e.default(r)}}}),Xe=n.defineComponent({name:"UseDeviceOrientation",setup(t,{slots:e}){const r=n.reactive(d.useDeviceOrientation());return()=>{if(e.default)return e.default(r)}}}),Ze=n.defineComponent({name:"UseDevicePixelRatio",setup(t,{slots:e}){const r=n.reactive({pixelRatio:d.useDevicePixelRatio()});return()=>{if(e.default)return e.default(r)}}}),xe=n.defineComponent({name:"UseDevicesList",props:["onUpdated","requestPermissions","constraints"],setup(t,{slots:e}){const r=n.reactive(d.useDevicesList(t));return()=>{if(e.default)return e.default(r)}}}),De=n.defineComponent({name:"UseDocumentVisibility",setup(t,{slots:e}){const r=n.reactive({visibility:d.useDocumentVisibility()});return()=>{if(e.default)return e.default(r)}}});var et=Object.defineProperty,tt=Object.defineProperties,rt=Object.getOwnPropertyDescriptors,q=Object.getOwnPropertySymbols,nt=Object.prototype.hasOwnProperty,ot=Object.prototype.propertyIsEnumerable,Q=(t,e,r)=>e in t?et(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,at=(t,e)=>{for(var r in e||(e={}))nt.call(e,r)&&Q(t,r,e[r]);if(q)for(var r of q(e))ot.call(e,r)&&Q(t,r,e[r]);return t},st=(t,e)=>tt(t,rt(e));const lt=n.defineComponent({name:"UseDraggable",props:["storageKey","storageType","initialValue","exact","preventDefault","stopPropagation","pointerTypes","as"],setup(t,{slots:e}){const r=n.ref(),o=t.storageKey?d.useStorage(t.storageKey,n.unref(t.initialValue)||{x:0,y:0},d.isClient?t.storageType==="session"?sessionStorage:localStorage:void 0):t.initialValue||{x:0,y:0},a=n.reactive(d.useDraggable(r,st(at({},t),{initialValue:o})));return()=>{if(e.default)return n.h(t.as||"div",{ref:r,style:`touch-action:none;${a.style}`},e.default(a))}}}),it=n.defineComponent({name:"UseElementBounding",props:["box","as"],setup(t,{slots:e}){const r=n.ref(),o=n.reactive(d.useElementBounding(r));return()=>{if(e.default)return n.h(t.as||"div",{ref:r},e.default(o))}}});function ct(t){const e=n.ref(!1);return $(t,"mouseenter",()=>e.value=!0),$(t,"mouseleave",()=>e.value=!1),e}const ut={[u.directiveHooks.mounted](t,e){if(typeof e.value=="function"){const r=ct(t);n.watch(r,o=>e.value(o))}}},ft=n.defineComponent({name:"UseElementSize",props:["width","height","box"],setup(t,{slots:e}){const r=n.ref(),o=n.reactive(d.useElementSize(r,{width:t.width,height:t.height},{box:t.box}));return()=>{if(e.default)return n.h(t.as||"div",{ref:r},e.default(o))}}});var Y=Object.getOwnPropertySymbols,dt=Object.prototype.hasOwnProperty,pt=Object.prototype.propertyIsEnumerable,vt=(t,e)=>{var r={};for(var o in t)dt.call(t,o)&&e.indexOf(o)<0&&(r[o]=t[o]);if(t!=null&&Y)for(var o of Y(t))e.indexOf(o)<0&&pt.call(t,o)&&(r[o]=t[o]);return r};function gt(t,e,r={}){const o=r,{window:a=P}=o,l=vt(o,["window"]);let i;const c=a&&"ResizeObserver"in a,f=()=>{i&&(i.disconnect(),i=void 0)},_=n.watch(()=>h(t),O=>{f(),c&&a&&O&&(i=new ResizeObserver(e),i.observe(O,l))},{immediate:!0,flush:"post"}),v=()=>{f(),_()};return u.tryOnScopeDispose(v),{isSupported:c,stop:v}}function _t(t,e={width:0,height:0},r={}){const o=n.ref(e.width),a=n.ref(e.height);return gt(t,([l])=>{o.value=l.contentRect.width,a.value=l.contentRect.height},r),n.watch(()=>h(t),l=>{o.value=l?e.width:0,a.value=l?e.height:0}),{width:o,height:a}}const Ot={[u.directiveHooks.mounted](t,e){var r;const o=typeof e.value=="function"?e.value:(r=e.value)==null?void 0:r[0],a=typeof e.value=="function"?[]:e.value.slice(1),{width:l,height:i}=_t(t,...a);n.watch([l,i],([c,f])=>o({width:c,height:f}))}},ht=n.defineComponent({name:"UseElementVisibility",props:["as"],setup(t,{slots:e}){const r=n.ref(),o=n.reactive({isVisible:d.useElementVisibility(r)});return()=>{if(e.default)return n.h(t.as||"div",{ref:r},e.default(o))}}});function X(t,{window:e=P,scrollTarget:r}={}){const o=n.ref(!1),a=()=>{if(!e)return;const l=e.document;if(!n.unref(t))o.value=!1;else{const i=n.unref(t).getBoundingClientRect();o.value=i.top<=(e.innerHeight||l.documentElement.clientHeight)&&i.left<=(e.innerWidth||l.documentElement.clientWidth)&&i.bottom>=0&&i.right>=0}};return u.tryOnMounted(a),e&&u.tryOnMounted(()=>$(n.unref(r)||e,"scroll",a,{capture:!1,passive:!0})),o}const yt={[u.directiveHooks.mounted](t,e){if(typeof e.value=="function"){const r=e.value,o=X(t);n.watch(o,a=>r(a),{immediate:!0})}else{const[r,o]=e.value,a=X(t,o);n.watch(a,l=>r(l),{immediate:!0})}}},Pt=n.defineComponent({name:"UseEyeDropper",props:{sRGBHex:String},setup(t,{slots:e}){const r=n.reactive(d.useEyeDropper());return()=>{if(e.default)return e.default(r)}}}),mt=n.defineComponent({name:"UseFullscreen",props:["as"],setup(t,{slots:e}){const r=n.ref(),o=n.reactive(d.useFullscreen(r));return()=>{if(e.default)return n.h(t.as||"div",{ref:r},e.default(o))}}}),wt=n.defineComponent({name:"UseGeolocation",props:["enableHighAccuracy","maximumAge","timeout","navigator"],setup(t,{slots:e}){const r=n.reactive(d.useGeolocation(t));return()=>{if(e.default)return e.default(r)}}}),bt=n.defineComponent({name:"UseIdle",props:["timeout","events","listenForVisibilityChange","initialState"],setup(t,{slots:e}){const r=n.reactive(d.useIdle(t.timeout,t));return()=>{if(e.default)return e.default(r)}}});function Ut(t,e,r){const{immediate:o=!0,delay:a=0,onError:l=u.noop,resetOnExecute:i=!0,shallow:c=!0}=r??{},f=c?n.shallowRef(e):n.ref(e),_=n.ref(!1),v=n.ref(!1),O=n.ref(void 0);async function p(g=0,...b){i&&(f.value=e),O.value=void 0,_.value=!1,v.value=!0,g>0&&await u.promiseTimeout(g);const U=typeof t=="function"?t(...b):t;try{const m=await U;f.value=m,_.value=!0}catch(m){O.value=m,l(m)}finally{v.value=!1}return f.value}return o&&p(a),{state:f,isReady:_,isLoading:v,error:O,execute:p}}var St=Object.defineProperty,Z=Object.getOwnPropertySymbols,$t=Object.prototype.hasOwnProperty,Ct=Object.prototype.propertyIsEnumerable,x=(t,e,r)=>e in t?St(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,Et=(t,e)=>{for(var r in e||(e={}))$t.call(e,r)&&x(t,r,e[r]);if(Z)for(var r of Z(e))Ct.call(e,r)&&x(t,r,e[r]);return t};async function jt(t){return new Promise((e,r)=>{const o=new Image,{src:a,srcset:l,sizes:i}=t;o.src=a,l&&(o.srcset=l),i&&(o.sizes=i),o.onload=()=>e(o),o.onerror=r})}const Lt=(t,e={})=>{const r=Ut(()=>jt(n.unref(t)),void 0,Et({resetOnExecute:!0},e));return n.watch(()=>n.unref(t),()=>r.execute(e.delay),{deep:!0}),r},It=n.defineComponent({name:"UseImage",props:["src","srcset","sizes","as"],setup(t,{slots:e}){const r=n.reactive(Lt(t));return()=>r.isLoading&&e.loading?e.loading(r):r.error&&e.error?e.error(r.error):e.default?e.default(r):n.h(t.as||"img",t)}});function H(t,e={}){const{throttle:r=0,idle:o=200,onStop:a=u.noop,onScroll:l=u.noop,offset:i={left:0,right:0,top:0,bottom:0},eventListenerOptions:c={capture:!1,passive:!0}}=e,f=n.ref(0),_=n.ref(0),v=n.ref(!1),O=n.reactive({left:!0,right:!1,top:!0,bottom:!1}),p=n.reactive({left:!1,right:!1,top:!1,bottom:!1});if(t){const g=u.useDebounceFn(U=>{v.value=!1,p.left=!1,p.right=!1,p.top=!1,p.bottom=!1,a(U)},r+o),b=U=>{const m=U.target===document?U.target.documentElement:U.target,S=m.scrollLeft;p.left=S<f.value,p.right=S>f.value,O.left=S<=0+(i.left||0),O.right=S+m.clientWidth>=m.scrollWidth-(i.right||0),f.value=S;let C=m.scrollTop;U.target===document&&!C&&(C=document.body.scrollTop),p.top=C<_.value,p.bottom=C>_.value,O.top=C<=0+(i.top||0),O.bottom=C+m.clientHeight>=m.scrollHeight-(i.bottom||0),_.value=C,v.value=!0,g(U),l(U)};$(t,"scroll",r?u.useThrottleFn(b,r):b,c)}return{x:f,y:_,isScrolling:v,arrivedState:O,directions:p}}var Mt=Object.defineProperty,At=Object.defineProperties,Nt=Object.getOwnPropertyDescriptors,D=Object.getOwnPropertySymbols,Tt=Object.prototype.hasOwnProperty,Vt=Object.prototype.propertyIsEnumerable,ee=(t,e,r)=>e in t?Mt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,te=(t,e)=>{for(var r in e||(e={}))Tt.call(e,r)&&ee(t,r,e[r]);if(D)for(var r of D(e))Vt.call(e,r)&&ee(t,r,e[r]);return t},Ht=(t,e)=>At(t,Nt(e));function re(t,e,r={}){var o,a;const l=(o=r.direction)!=null?o:"bottom",i=n.reactive(H(t,Ht(te({},r),{offset:te({[l]:(a=r.distance)!=null?a:0},r.offset)})));n.watch(()=>i.arrivedState[l],async c=>{var f,_;if(c){const v=n.unref(t),O={height:(f=v==null?void 0:v.scrollHeight)!=null?f:0,width:(_=v==null?void 0:v.scrollWidth)!=null?_:0};await e(i),r.preserveScrollPosition&&v&&n.nextTick(()=>{v.scrollTo({top:v.scrollHeight-O.height,left:v.scrollWidth-O.width})})}})}const zt={[u.directiveHooks.mounted](t,e){typeof e.value=="function"?re(t,e.value):re(t,...e.value)}};function ne(t,e,r={}){const{root:o,rootMargin:a="0px",threshold:l=.1,window:i=P}=r,c=i&&"IntersectionObserver"in i;let f=u.noop;const _=c?n.watch(()=>({el:h(t),root:h(o)}),({el:O,root:p})=>{if(f(),!O)return;const g=new IntersectionObserver(e,{root:p,rootMargin:a,threshold:l});g.observe(O),f=()=>{g.disconnect(),f=u.noop}},{immediate:!0,flush:"post"}):u.noop,v=()=>{f(),_()};return u.tryOnScopeDispose(v),{isSupported:c,stop:v}}const Rt={[u.directiveHooks.mounted](t,e){typeof e.value=="function"?ne(t,e.value):ne(t,...e.value)}},Bt=n.defineComponent({name:"UseMouse",props:["touch","resetOnTouchEnds","initialValue"],setup(t,{slots:e}){const r=n.reactive(d.useMouse(t));return()=>{if(e.default)return e.default(r)}}}),Wt=n.defineComponent({name:"UseMouseElement",props:["handleOutside","as"],setup(t,{slots:e}){const r=n.ref(),o=n.reactive(d.useMouseInElement(r,t));return()=>{if(e.default)return n.h(t.as||"div",{ref:r},e.default(o))}}});var kt=Object.defineProperty,Ft=Object.defineProperties,Kt=Object.getOwnPropertyDescriptors,oe=Object.getOwnPropertySymbols,Jt=Object.prototype.hasOwnProperty,Gt=Object.prototype.propertyIsEnumerable,ae=(t,e,r)=>e in t?kt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,qt=(t,e)=>{for(var r in e||(e={}))Jt.call(e,r)&&ae(t,r,e[r]);if(oe)for(var r of oe(e))Gt.call(e,r)&&ae(t,r,e[r]);return t},Qt=(t,e)=>Ft(t,Kt(e));const Yt=n.defineComponent({name:"UseMousePressed",props:["touch","initialValue","as"],setup(t,{slots:e}){const r=n.ref(),o=n.reactive(d.useMousePressed(Qt(qt({},t),{target:r})));return()=>{if(e.default)return n.h(t.as||"div",{ref:r},e.default(o))}}}),Xt=n.defineComponent({name:"UseNetwork",setup(t,{slots:e}){const r=n.reactive(d.useNetwork());return()=>{if(e.default)return e.default(r)}}});var Zt=Object.defineProperty,xt=Object.defineProperties,Dt=Object.getOwnPropertyDescriptors,se=Object.getOwnPropertySymbols,er=Object.prototype.hasOwnProperty,tr=Object.prototype.propertyIsEnumerable,le=(t,e,r)=>e in t?Zt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,rr=(t,e)=>{for(var r in e||(e={}))er.call(e,r)&&le(t,r,e[r]);if(se)for(var r of se(e))tr.call(e,r)&&le(t,r,e[r]);return t},nr=(t,e)=>xt(t,Dt(e));const or=n.defineComponent({name:"UseNow",props:["interval"],setup(t,{slots:e}){const r=n.reactive(d.useNow(nr(rr({},t),{controls:!0})));return()=>{if(e.default)return e.default(r)}}}),ar=n.defineComponent({name:"UseObjectUrl",props:["object"],setup(t,{slots:e}){const r=n.toRef(t,"object"),o=d.useObjectUrl(r);return()=>{if(e.default&&o.value)return e.default(o)}}});var sr=Object.defineProperty,lr=Object.defineProperties,ir=Object.getOwnPropertyDescriptors,ie=Object.getOwnPropertySymbols,cr=Object.prototype.hasOwnProperty,ur=Object.prototype.propertyIsEnumerable,ce=(t,e,r)=>e in t?sr(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,fr=(t,e)=>{for(var r in e||(e={}))cr.call(e,r)&&ce(t,r,e[r]);if(ie)for(var r of ie(e))ur.call(e,r)&&ce(t,r,e[r]);return t},dr=(t,e)=>lr(t,ir(e));const pr=n.defineComponent({name:"UseOffsetPagination",props:["total","page","pageSize","onPageChange","onPageSizeChange","onPageCountChange"],emits:["page-change","page-size-change","page-count-change"],setup(t,{slots:e,emit:r}){const o=n.reactive(d.useOffsetPagination(dr(fr({},t),{onPageChange(...a){var l;(l=t.onPageChange)==null||l.call(t,...a),r("page-change",...a)},onPageSizeChange(...a){var l;(l=t.onPageSizeChange)==null||l.call(t,...a),r("page-size-change",...a)},onPageCountChange(...a){var l;(l=t.onPageCountChange)==null||l.call(t,...a),r("page-count-change",...a)}})));return()=>{if(e.default)return e.default(o)}}}),vr=n.defineComponent({name:"UseOnline",setup(t,{slots:e}){const r=n.reactive({isOnline:d.useOnline()});return()=>{if(e.default)return e.default(r)}}}),gr=n.defineComponent({name:"UsePageLeave",setup(t,{slots:e}){const r=n.reactive({isLeft:d.usePageLeave()});return()=>{if(e.default)return e.default(r)}}});var _r=Object.defineProperty,Or=Object.defineProperties,hr=Object.getOwnPropertyDescriptors,ue=Object.getOwnPropertySymbols,yr=Object.prototype.hasOwnProperty,Pr=Object.prototype.propertyIsEnumerable,fe=(t,e,r)=>e in t?_r(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,mr=(t,e)=>{for(var r in e||(e={}))yr.call(e,r)&&fe(t,r,e[r]);if(ue)for(var r of ue(e))Pr.call(e,r)&&fe(t,r,e[r]);return t},wr=(t,e)=>Or(t,hr(e));const br=n.defineComponent({name:"UsePointer",props:["pointerTypes","initialValue","target"],setup(t,{slots:e}){const r=n.ref(null),o=n.reactive(d.usePointer(wr(mr({},t),{target:t.target==="self"?r:P})));return()=>{if(e.default)return e.default(o,{ref:r})}}}),Ur=n.defineComponent({name:"UsePreferredColorScheme",setup(t,{slots:e}){const r=n.reactive({colorScheme:d.usePreferredColorScheme()});return()=>{if(e.default)return e.default(r)}}}),Sr=n.defineComponent({name:"UsePreferredDark",setup(t,{slots:e}){const r=n.reactive({prefersDark:d.usePreferredDark()});return()=>{if(e.default)return e.default(r)}}}),$r=n.defineComponent({name:"UsePreferredLanguages",setup(t,{slots:e}){const r=n.reactive({languages:d.usePreferredLanguages()});return()=>{if(e.default)return e.default(r)}}});function I(t,e,{window:r=P,initialValue:o=""}={}){const a=n.ref(o),l=n.computed(()=>{var i;return h(e)||((i=r==null?void 0:r.document)==null?void 0:i.documentElement)});return n.watch([l,()=>n.unref(t)],([i,c])=>{var f;if(i&&r){const _=(f=r.getComputedStyle(i).getPropertyValue(c))==null?void 0:f.trim();a.value=_||o}},{immediate:!0}),n.watch(a,i=>{var c;((c=l.value)==null?void 0:c.style)&&l.value.style.setProperty(n.unref(t),i)}),a}const de="--vueuse-safe-area-top",pe="--vueuse-safe-area-right",ve="--vueuse-safe-area-bottom",ge="--vueuse-safe-area-left";function Cr(){const t=n.ref(""),e=n.ref(""),r=n.ref(""),o=n.ref("");if(u.isClient){const l=I(de),i=I(pe),c=I(ve),f=I(ge);l.value="env(safe-area-inset-top, 0px)",i.value="env(safe-area-inset-right, 0px)",c.value="env(safe-area-inset-bottom, 0px)",f.value="env(safe-area-inset-left, 0px)",a(),$("resize",u.useDebounceFn(a))}function a(){t.value=M(de),e.value=M(pe),r.value=M(ve),o.value=M(ge)}return{top:t,right:e,bottom:r,left:o,update:a}}function M(t){return getComputedStyle(document.documentElement).getPropertyValue(t)}const Er=n.defineComponent({name:"UseScreenSafeArea",props:{top:Boolean,right:Boolean,bottom:Boolean,left:Boolean},setup(t,{slots:e}){const{top:r,right:o,bottom:a,left:l}=Cr();return()=>{if(e.default)return n.h("div",{style:{paddingTop:t.top?r.value:"",paddingRight:t.right?o.value:"",paddingBottom:t.bottom?a.value:"",paddingLeft:t.left?l.value:"",boxSizing:"border-box",maxHeight:"100vh",maxWidth:"100vw",overflow:"auto"}},e.default())}}});var jr=Object.defineProperty,Lr=Object.defineProperties,Ir=Object.getOwnPropertyDescriptors,_e=Object.getOwnPropertySymbols,Mr=Object.prototype.hasOwnProperty,Ar=Object.prototype.propertyIsEnumerable,Oe=(t,e,r)=>e in t?jr(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,Nr=(t,e)=>{for(var r in e||(e={}))Mr.call(e,r)&&Oe(t,r,e[r]);if(_e)for(var r of _e(e))Ar.call(e,r)&&Oe(t,r,e[r]);return t},Tr=(t,e)=>Lr(t,Ir(e));const Vr={[u.directiveHooks.mounted](t,e){if(typeof e.value=="function"){const r=e.value,o=H(t,{onScroll(){r(o)},onStop(){r(o)}})}else{const[r,o]=e.value,a=H(t,Tr(Nr({},o),{onScroll(l){var i;(i=o.onScroll)==null||i.call(o,l),r(a)},onStop(l){var i;(i=o.onStop)==null||i.call(o,l),r(a)}}))}}};function Hr(t){const e=t||window.event;return e.touches.length>1?!0:(e.preventDefault&&e.preventDefault(),!1)}function zr(t,e=!1){const r=n.ref(e);let o=null,a;n.watch(()=>n.unref(t),c=>{if(c){const f=c;a=f.style.overflow,r.value&&(f.style.overflow="hidden")}},{immediate:!0});const l=()=>{const c=n.unref(t);!c||r.value||(u.isIOS&&(o=$(c,"touchmove",Hr,{passive:!1})),c.style.overflow="hidden",r.value=!0)},i=()=>{const c=n.unref(t);!c||!r.value||(u.isIOS&&(o==null||o()),c.style.overflow=a,r.value=!1)};return u.tryOnScopeDispose(i),n.computed({get(){return r.value},set(c){c?l():i()}})}const Rr=(()=>{let t=!1;const e=n.ref(!1);return(r,o)=>{if(e.value=o.value,t)return;t=!0;const a=zr(r,o.value);n.watch(e,l=>a.value=l)}})();var Br=Object.defineProperty,Wr=Object.defineProperties,kr=Object.getOwnPropertyDescriptors,he=Object.getOwnPropertySymbols,Fr=Object.prototype.hasOwnProperty,Kr=Object.prototype.propertyIsEnumerable,ye=(t,e,r)=>e in t?Br(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,Jr=(t,e)=>{for(var r in e||(e={}))Fr.call(e,r)&&ye(t,r,e[r]);if(he)for(var r of he(e))Kr.call(e,r)&&ye(t,r,e[r]);return t},Gr=(t,e)=>Wr(t,kr(e));const qr=n.defineComponent({name:"UseTimeAgo",props:["time","updateInterval","max","fullDateFormatter","messages"],setup(t,{slots:e}){const r=n.toRef(t,"time"),o=n.reactive(d.useTimeAgo(r,Gr(Jr({},t),{controls:!0})));return()=>{if(e.default)return e.default(o)}}});var Qr=Object.defineProperty,Yr=Object.defineProperties,Xr=Object.getOwnPropertyDescriptors,Pe=Object.getOwnPropertySymbols,Zr=Object.prototype.hasOwnProperty,xr=Object.prototype.propertyIsEnumerable,me=(t,e,r)=>e in t?Qr(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,Dr=(t,e)=>{for(var r in e||(e={}))Zr.call(e,r)&&me(t,r,e[r]);if(Pe)for(var r of Pe(e))xr.call(e,r)&&me(t,r,e[r]);return t},en=(t,e)=>Yr(t,Xr(e));const tn=n.defineComponent({name:"UseTimestamp",props:["immediate","interval","offset"],setup(t,{slots:e}){const r=n.reactive(d.useTimestamp(en(Dr({},t),{controls:!0})));return()=>{if(e.default)return e.default(r)}}});var rn=Object.defineProperty,we=Object.getOwnPropertySymbols,nn=Object.prototype.hasOwnProperty,on=Object.prototype.propertyIsEnumerable,be=(t,e,r)=>e in t?rn(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,Ue=(t,e)=>{for(var r in e||(e={}))nn.call(e,r)&&be(t,r,e[r]);if(we)for(var r of we(e))on.call(e,r)&&be(t,r,e[r]);return t};const an=n.defineComponent({name:"UseVirtualList",props:["list","options","height"],setup(t,{slots:e}){const{list:r}=n.toRefs(t),{list:o,containerProps:a,wrapperProps:l}=d.useVirtualList(r,t.options);return a.style.height=t.height||"300px",()=>n.h("div",Ue({},a),[n.h("div",Ue({},l.value),o.value.map(i=>n.h("div",{style:{overFlow:"hidden",height:i.height}},e.default?e.default(i):"Please set content!")))])}}),sn=n.defineComponent({name:"UseWindowFocus",setup(t,{slots:e}){const r=n.reactive({focused:d.useWindowFocus()});return()=>{if(e.default)return e.default(r)}}}),ln=n.defineComponent({name:"UseWindowSize",props:["initialWidth","initialHeight"],setup(t,{slots:e}){const r=n.reactive(d.useWindowSize(t));return()=>{if(e.default)return e.default(r)}}});s.OnClickOutside=w,s.OnLongPress=Me,s.UseActiveElement=Ae,s.UseBattery=Ne,s.UseBrowserLocation=Te,s.UseColorMode=qe,s.UseDark=Qe,s.UseDeviceMotion=Ye,s.UseDeviceOrientation=Xe,s.UseDevicePixelRatio=Ze,s.UseDevicesList=xe,s.UseDocumentVisibility=De,s.UseDraggable=lt,s.UseElementBounding=it,s.UseElementSize=ft,s.UseElementVisibility=ht,s.UseEyeDropper=Pt,s.UseFullscreen=mt,s.UseGeolocation=wt,s.UseIdle=bt,s.UseImage=It,s.UseMouse=Bt,s.UseMouseInElement=Wt,s.UseMousePressed=Yt,s.UseNetwork=Xt,s.UseNow=or,s.UseObjectUrl=ar,s.UseOffsetPagination=pr,s.UseOnline=vr,s.UsePageLeave=gr,s.UsePointer=br,s.UsePreferredColorScheme=Ur,s.UsePreferredDark=Sr,s.UsePreferredLanguages=$r,s.UseScreenSafeArea=Er,s.UseTimeAgo=qr,s.UseTimestamp=tn,s.UseVirtualList=an,s.UseWindowFocus=sn,s.UseWindowSize=ln,s.VOnClickOutside=R,s.VOnLongPress=F,s.vElementHover=ut,s.vElementSize=Ot,s.vElementVisibility=yt,s.vInfiniteScroll=zt,s.vIntersectionObserver=Rt,s.vOnClickOutside=R,s.vOnKeyStroke=Le,s.vOnLongPress=F,s.vScroll=Vr,s.vScrollLock=Rr,Object.defineProperty(s,"__esModule",{value:!0})})(this.VueUse=this.VueUse||{},VueDemi,VueUse,VueUse);
1
+ var VueDemi=function(s,n,p){if(s.install)return s;if(n)if(n.version.slice(0,4)==="2.7."){for(var u in n)s[u]=n[u];s.isVue2=!0,s.isVue3=!1,s.install=function(){},s.Vue=n,s.Vue2=n,s.version=n.version}else if(n.version.slice(0,2)==="2.")if(p){for(var u in p)s[u]=p[u];s.isVue2=!0,s.isVue3=!1,s.install=function(){},s.Vue=n,s.Vue2=n,s.version=n.version}else console.error("[vue-demi] no VueCompositionAPI instance found, please be sure to import `@vue/composition-api` before `vue-demi`.");else if(n.version.slice(0,2)==="3."){for(var u in n)s[u]=n[u];s.isVue2=!1,s.isVue3=!0,s.install=function(){},s.Vue=n,s.Vue2=void 0,s.version=n.version,s.set=function(C,h,w){return Array.isArray(C)?(C.length=Math.max(C.length,h),C.splice(h,1,w),w):(C[h]=w,w)},s.del=function(C,h){if(Array.isArray(C)){C.splice(h,1);return}delete C[h]}}else console.error("[vue-demi] Vue version "+n.version+" is unsupported.");else console.error("[vue-demi] no Vue instance found, please be sure to import `vue` before `vue-demi`.");return s}(this.VueDemi=this.VueDemi||(typeof VueDemi!="undefined"?VueDemi:{}),this.Vue||(typeof Vue!="undefined"?Vue:void 0),this.VueCompositionAPI||(typeof VueCompositionAPI!="undefined"?VueCompositionAPI:void 0));(function(s,n,p,u){"use strict";const C=n.defineComponent({name:"OnClickOutside",props:["as"],emits:["trigger"],setup(t,{slots:e,emit:r}){const o=n.ref();return p.onClickOutside(o,a=>{r("trigger",a)}),()=>{if(e.default)return n.h(t.as||"div",{ref:o},e.default())}}});function h(t){var e;const r=u.resolveUnref(t);return(e=r==null?void 0:r.$el)!=null?e:r}const w=u.isClient?window:void 0;function S(...t){let e,r,o,a;if(u.isString(t[0])?([r,o,a]=t,e=w):[e,r,o,a]=t,!e)return u.noop;let l=u.noop;const i=n.watch(()=>h(e),f=>{l(),!!f&&(f.addEventListener(r,o,a),l=()=>{f.removeEventListener(r,o,a),l=u.noop})},{immediate:!0,flush:"post"}),c=()=>{i(),l()};return u.tryOnScopeDispose(c),c}function R(t,e,r={}){const{window:o=w,ignore:a,capture:l=!0,detectIframe:i=!1}=r;if(!o)return;const c=n.ref(!0);let f;const _=d=>{o.clearTimeout(f);const g=h(t),P=d.composedPath();!g||g===d.target||P.includes(g)||!c.value||a&&a.length>0&&a.some(b=>{const y=h(b);return y&&(d.target===y||P.includes(y))})||e(d)},v=[S(o,"click",_,{passive:!0,capture:l}),S(o,"pointerdown",d=>{const g=h(t);c.value=!!g&&!d.composedPath().includes(g)},{passive:!0}),S(o,"pointerup",d=>{if(d.button===0){const g=d.composedPath();d.composedPath=()=>g,f=o.setTimeout(()=>_(d),50)}},{passive:!0}),i&&S(o,"blur",d=>{var g;const P=h(t);((g=document.activeElement)==null?void 0:g.tagName)==="IFRAME"&&!(P==null?void 0:P.contains(document.activeElement))&&e(d)})].filter(Boolean);return()=>v.forEach(d=>d())}const B=(()=>{let t=null;return(e,r)=>{if(t){t(),t=R(e,r.value);return}t=R(e,r.value)}})(),$e=t=>typeof t=="function"?t:typeof t=="string"?e=>e.key===t:Array.isArray(t)?e=>t.includes(e.key):t?()=>!0:()=>!1;function W(t,e,r={}){const{target:o=w,eventName:a="keydown",passive:l=!1}=r,i=$e(t);return S(o,a,f=>{i(f)&&e(f)},l)}var Ce=Object.defineProperty,k=Object.getOwnPropertySymbols,Ee=Object.prototype.hasOwnProperty,je=Object.prototype.propertyIsEnumerable,F=(t,e,r)=>e in t?Ce(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,Le=(t,e)=>{for(var r in e||(e={}))Ee.call(e,r)&&F(t,r,e[r]);if(k)for(var r of k(e))je.call(e,r)&&F(t,r,e[r]);return t};const Ie={[u.directiveHooks.mounted](t,e){var r,o;const a=(o=(r=e.arg)==null?void 0:r.split(","))!=null?o:[];if(typeof e.value=="function")W(a,e.value,{target:t});else{const[l,i]=e.value;W(a,l,Le({target:t},i))}}},Me=500;function N(t,e,r){var o,a;const l=n.computed(()=>h(t));let i=null;function c(){i!=null&&(clearTimeout(i),i=null)}function f(v){var O,d,g,P;((O=r==null?void 0:r.modifiers)==null?void 0:O.self)&&v.target!==l.value||(c(),((d=r==null?void 0:r.modifiers)==null?void 0:d.prevent)&&v.preventDefault(),((g=r==null?void 0:r.modifiers)==null?void 0:g.stop)&&v.stopPropagation(),i=setTimeout(()=>e(v),(P=r==null?void 0:r.delay)!=null?P:Me))}const _={capture:(o=r==null?void 0:r.modifiers)==null?void 0:o.capture,once:(a=r==null?void 0:r.modifiers)==null?void 0:a.once};S(l,"pointerdown",f,_),S(l,"pointerup",c,_),S(l,"pointerleave",c,_)}const Ve=n.defineComponent({name:"OnLongPress",props:["as","options"],emits:["trigger"],setup(t,{slots:e,emit:r}){const o=n.ref();return N(o,a=>{r("trigger",a)},t.options),()=>{if(e.default)return n.h(t.as||"div",{ref:o},e.default())}}}),K={[u.directiveHooks.mounted](t,e){typeof e.value=="function"?N(t,e.value,{modifiers:e.modifiers}):N(t,...e.value)}},Ne=n.defineComponent({name:"UseActiveElement",setup(t,{slots:e}){const r=n.reactive({element:p.useActiveElement()});return()=>{if(e.default)return e.default(r)}}}),Te=n.defineComponent({name:"UseBattery",setup(t,{slots:e}){const r=n.reactive(p.useBattery(t));return()=>{if(e.default)return e.default(r)}}}),Ae=n.defineComponent({name:"UseBrowserLocation",setup(t,{slots:e}){const r=n.reactive(p.useBrowserLocation());return()=>{if(e.default)return e.default(r)}}}),T=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{},A="__vueuse_ssr_handlers__";T[A]=T[A]||{};const He=T[A];function J(t,e){return He[t]||e}function ze(t){return t==null?"any":t instanceof Set?"set":t instanceof Map?"map":t instanceof Date?"date":typeof t=="boolean"?"boolean":typeof t=="string"?"string":typeof t=="object"||Array.isArray(t)?"object":Number.isNaN(t)?"any":"number"}const Re={boolean:{read:t=>t==="true",write:t=>String(t)},object:{read:t=>JSON.parse(t),write:t=>JSON.stringify(t)},number:{read:t=>Number.parseFloat(t),write:t=>String(t)},any:{read:t=>t,write:t=>String(t)},string:{read:t=>t,write:t=>String(t)},map:{read:t=>new Map(JSON.parse(t)),write:t=>JSON.stringify(Array.from(t.entries()))},set:{read:t=>new Set(JSON.parse(t)),write:t=>JSON.stringify(Array.from(t))},date:{read:t=>new Date(t),write:t=>t.toISOString()}};function Be(t,e,r,o={}){var a;const{flush:l="pre",deep:i=!0,listenToStorageChanges:c=!0,writeDefaults:f=!0,shallow:_,window:v=w,eventFilter:O,onError:d=m=>{console.error(m)}}=o,g=(_?n.shallowRef:n.ref)(e);if(!r)try{r=J("getDefaultStorage",()=>{var m;return(m=w)==null?void 0:m.localStorage})()}catch(m){d(m)}if(!r)return g;const P=u.resolveUnref(e),b=ze(P),y=(a=o.serializer)!=null?a:Re[b],{pause:U,resume:$}=u.pausableWatch(g,()=>j(g.value),{flush:l,deep:i,eventFilter:O});return v&&c&&S(v,"storage",V),V(),g;function j(m){try{m==null?r.removeItem(t):r.setItem(t,y.write(m))}catch(E){d(E)}}function L(m){if(!(m&&m.key!==t)){U();try{const E=m?m.newValue:r.getItem(t);return E==null?(f&&P!==null&&r.setItem(t,y.write(P)),P):typeof E!="string"?E:y.read(E)}catch(E){d(E)}finally{$()}}}function V(m){m&&m.key!==t||(g.value=L(m))}}function H(t,e=!1){const r=n.ref(),o=()=>r.value=Boolean(t());return o(),u.tryOnMounted(o,e),r}function We(t,e={}){const{window:r=w}=e,o=H(()=>r&&"matchMedia"in r&&typeof r.matchMedia=="function");let a;const l=n.ref(!1),i=()=>{!o.value||(a||(a=r.matchMedia(t)),l.value=a.matches)};return u.tryOnBeforeMount(()=>{i(),!!a&&("addEventListener"in a?a.addEventListener("change",i):a.addListener(i),u.tryOnScopeDispose(()=>{"removeEventListener"in a?a.removeEventListener("change",i):a.removeListener(i)}))}),l}function ke(t){return We("(prefers-color-scheme: dark)",t)}var Fe=Object.defineProperty,G=Object.getOwnPropertySymbols,Ke=Object.prototype.hasOwnProperty,Je=Object.prototype.propertyIsEnumerable,q=(t,e,r)=>e in t?Fe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,Ge=(t,e)=>{for(var r in e||(e={}))Ke.call(e,r)&&q(t,r,e[r]);if(G)for(var r of G(e))Je.call(e,r)&&q(t,r,e[r]);return t};function qe(t={}){const{selector:e="html",attribute:r="class",window:o=w,storage:a,storageKey:l="vueuse-color-scheme",listenToStorageChanges:i=!0,storageRef:c,emitAuto:f}=t,_=Ge({auto:"",light:"light",dark:"dark"},t.modes||{}),v=ke({window:o}),O=n.computed(()=>v.value?"dark":"light"),d=c||(l==null?n.ref("auto"):Be(l,"auto",a,{window:o,listenToStorageChanges:i})),g=n.computed({get(){return d.value==="auto"&&!f?O.value:d.value},set(U){d.value=U}}),P=J("updateHTMLAttrs",(U,$,j)=>{const L=o==null?void 0:o.document.querySelector(U);if(!!L)if($==="class"){const V=j.split(/\s/g);Object.values(_).flatMap(m=>(m||"").split(/\s/g)).filter(Boolean).forEach(m=>{V.includes(m)?L.classList.add(m):L.classList.remove(m)})}else L.setAttribute($,j)});function b(U){var $;const j=U==="auto"?O.value:U;P(e,r,($=_[j])!=null?$:j)}function y(U){t.onChanged?t.onChanged(U,b):b(U)}return n.watch(g,y,{flush:"post",immediate:!0}),u.tryOnMounted(()=>y(g.value)),g}const Qe=n.defineComponent({name:"UseColorMode",props:["selector","attribute","modes","onChanged","storageKey","storage","emitAuto"],setup(t,{slots:e}){const r=qe(t),o=n.reactive({mode:r});return()=>{if(e.default)return e.default(o)}}}),Ye=n.defineComponent({name:"UseDark",props:["selector","attribute","valueDark","valueLight","onChanged","storageKey","storage"],setup(t,{slots:e}){const r=p.useDark(t),o=n.reactive({isDark:r,toggleDark:u.useToggle(r)});return()=>{if(e.default)return e.default(o)}}}),Xe=n.defineComponent({name:"UseDeviceMotion",setup(t,{slots:e}){const r=n.reactive(p.useDeviceMotion());return()=>{if(e.default)return e.default(r)}}}),Ze=n.defineComponent({name:"UseDeviceOrientation",setup(t,{slots:e}){const r=n.reactive(p.useDeviceOrientation());return()=>{if(e.default)return e.default(r)}}}),xe=n.defineComponent({name:"UseDevicePixelRatio",setup(t,{slots:e}){const r=n.reactive({pixelRatio:p.useDevicePixelRatio()});return()=>{if(e.default)return e.default(r)}}}),De=n.defineComponent({name:"UseDevicesList",props:["onUpdated","requestPermissions","constraints"],setup(t,{slots:e}){const r=n.reactive(p.useDevicesList(t));return()=>{if(e.default)return e.default(r)}}}),et=n.defineComponent({name:"UseDocumentVisibility",setup(t,{slots:e}){const r=n.reactive({visibility:p.useDocumentVisibility()});return()=>{if(e.default)return e.default(r)}}});var tt=Object.defineProperty,rt=Object.defineProperties,nt=Object.getOwnPropertyDescriptors,Q=Object.getOwnPropertySymbols,ot=Object.prototype.hasOwnProperty,at=Object.prototype.propertyIsEnumerable,Y=(t,e,r)=>e in t?tt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,st=(t,e)=>{for(var r in e||(e={}))ot.call(e,r)&&Y(t,r,e[r]);if(Q)for(var r of Q(e))at.call(e,r)&&Y(t,r,e[r]);return t},lt=(t,e)=>rt(t,nt(e));const it=n.defineComponent({name:"UseDraggable",props:["storageKey","storageType","initialValue","exact","preventDefault","stopPropagation","pointerTypes","as"],setup(t,{slots:e}){const r=n.ref(),o=t.storageKey?p.useStorage(t.storageKey,u.resolveUnref(t.initialValue)||{x:0,y:0},p.isClient?t.storageType==="session"?sessionStorage:localStorage:void 0):t.initialValue||{x:0,y:0},a=n.reactive(p.useDraggable(r,lt(st({},t),{initialValue:o})));return()=>{if(e.default)return n.h(t.as||"div",{ref:r,style:`touch-action:none;${a.style}`},e.default(a))}}}),ut=n.defineComponent({name:"UseElementBounding",props:["box","as"],setup(t,{slots:e}){const r=n.ref(),o=n.reactive(p.useElementBounding(r));return()=>{if(e.default)return n.h(t.as||"div",{ref:r},e.default(o))}}});function ct(t){const e=n.ref(!1);return S(t,"mouseenter",()=>e.value=!0),S(t,"mouseleave",()=>e.value=!1),e}const ft={[u.directiveHooks.mounted](t,e){if(typeof e.value=="function"){const r=ct(t);n.watch(r,o=>e.value(o))}}},pt=n.defineComponent({name:"UseElementSize",props:["width","height","box"],setup(t,{slots:e}){const r=n.ref(),o=n.reactive(p.useElementSize(r,{width:t.width,height:t.height},{box:t.box}));return()=>{if(e.default)return n.h(t.as||"div",{ref:r},e.default(o))}}});var X=Object.getOwnPropertySymbols,dt=Object.prototype.hasOwnProperty,vt=Object.prototype.propertyIsEnumerable,gt=(t,e)=>{var r={};for(var o in t)dt.call(t,o)&&e.indexOf(o)<0&&(r[o]=t[o]);if(t!=null&&X)for(var o of X(t))e.indexOf(o)<0&&vt.call(t,o)&&(r[o]=t[o]);return r};function _t(t,e,r={}){const o=r,{window:a=w}=o,l=gt(o,["window"]);let i;const c=H(()=>a&&"ResizeObserver"in a),f=()=>{i&&(i.disconnect(),i=void 0)},_=n.watch(()=>h(t),O=>{f(),c.value&&a&&O&&(i=new ResizeObserver(e),i.observe(O,l))},{immediate:!0,flush:"post"}),v=()=>{f(),_()};return u.tryOnScopeDispose(v),{isSupported:c,stop:v}}function Ot(t,e={width:0,height:0},r={}){const o=n.ref(e.width),a=n.ref(e.height);return _t(t,([l])=>{o.value=l.contentRect.width,a.value=l.contentRect.height},r),n.watch(()=>h(t),l=>{o.value=l?e.width:0,a.value=l?e.height:0}),{width:o,height:a}}const mt={[u.directiveHooks.mounted](t,e){var r;const o=typeof e.value=="function"?e.value:(r=e.value)==null?void 0:r[0],a=typeof e.value=="function"?[]:e.value.slice(1),{width:l,height:i}=Ot(t,...a);n.watch([l,i],([c,f])=>o({width:c,height:f}))}},yt=n.defineComponent({name:"UseElementVisibility",props:["as"],setup(t,{slots:e}){const r=n.ref(),o=n.reactive({isVisible:p.useElementVisibility(r)});return()=>{if(e.default)return n.h(t.as||"div",{ref:r},e.default(o))}}});function Z(t,{window:e=w,scrollTarget:r}={}){const o=n.ref(!1),a=()=>{if(!e)return;const l=e.document,i=u.resolveUnref(t);if(!i)o.value=!1;else{const c=i.getBoundingClientRect();o.value=c.top<=(e.innerHeight||l.documentElement.clientHeight)&&c.left<=(e.innerWidth||l.documentElement.clientWidth)&&c.bottom>=0&&c.right>=0}};return u.tryOnMounted(a),e&&u.tryOnMounted(()=>S(()=>u.resolveUnref(r)||e,"scroll",a,{capture:!1,passive:!0})),o}const Pt={[u.directiveHooks.mounted](t,e){if(typeof e.value=="function"){const r=e.value,o=Z(t);n.watch(o,a=>r(a),{immediate:!0})}else{const[r,o]=e.value,a=Z(t,o);n.watch(a,l=>r(l),{immediate:!0})}}},ht=n.defineComponent({name:"UseEyeDropper",props:{sRGBHex:String},setup(t,{slots:e}){const r=n.reactive(p.useEyeDropper());return()=>{if(e.default)return e.default(r)}}}),wt=n.defineComponent({name:"UseFullscreen",props:["as"],setup(t,{slots:e}){const r=n.ref(),o=n.reactive(p.useFullscreen(r));return()=>{if(e.default)return n.h(t.as||"div",{ref:r},e.default(o))}}}),bt=n.defineComponent({name:"UseGeolocation",props:["enableHighAccuracy","maximumAge","timeout","navigator"],setup(t,{slots:e}){const r=n.reactive(p.useGeolocation(t));return()=>{if(e.default)return e.default(r)}}}),Ut=n.defineComponent({name:"UseIdle",props:["timeout","events","listenForVisibilityChange","initialState"],setup(t,{slots:e}){const r=n.reactive(p.useIdle(t.timeout,t));return()=>{if(e.default)return e.default(r)}}});function St(t,e,r){const{immediate:o=!0,delay:a=0,onError:l=u.noop,resetOnExecute:i=!0,shallow:c=!0}=r??{},f=c?n.shallowRef(e):n.ref(e),_=n.ref(!1),v=n.ref(!1),O=n.ref(void 0);async function d(g=0,...P){i&&(f.value=e),O.value=void 0,_.value=!1,v.value=!0,g>0&&await u.promiseTimeout(g);const b=typeof t=="function"?t(...P):t;try{const y=await b;f.value=y,_.value=!0}catch(y){O.value=y,l(y)}finally{v.value=!1}return f.value}return o&&d(a),{state:f,isReady:_,isLoading:v,error:O,execute:d}}var $t=Object.defineProperty,x=Object.getOwnPropertySymbols,Ct=Object.prototype.hasOwnProperty,Et=Object.prototype.propertyIsEnumerable,D=(t,e,r)=>e in t?$t(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,jt=(t,e)=>{for(var r in e||(e={}))Ct.call(e,r)&&D(t,r,e[r]);if(x)for(var r of x(e))Et.call(e,r)&&D(t,r,e[r]);return t};async function Lt(t){return new Promise((e,r)=>{const o=new Image,{src:a,srcset:l,sizes:i}=t;o.src=a,l&&(o.srcset=l),i&&(o.sizes=i),o.onload=()=>e(o),o.onerror=r})}const It=(t,e={})=>{const r=St(()=>Lt(u.resolveUnref(t)),void 0,jt({resetOnExecute:!0},e));return n.watch(()=>u.resolveUnref(t),()=>r.execute(e.delay),{deep:!0}),r},Mt=n.defineComponent({name:"UseImage",props:["src","srcset","sizes","as"],setup(t,{slots:e}){const r=n.reactive(It(t));return()=>r.isLoading&&e.loading?e.loading(r):r.error&&e.error?e.error(r.error):e.default?e.default(r):n.h(t.as||"img",t)}});function z(t,e={}){const{throttle:r=0,idle:o=200,onStop:a=u.noop,onScroll:l=u.noop,offset:i={left:0,right:0,top:0,bottom:0},eventListenerOptions:c={capture:!1,passive:!0}}=e,f=n.ref(0),_=n.ref(0),v=n.ref(!1),O=n.reactive({left:!0,right:!1,top:!0,bottom:!1}),d=n.reactive({left:!1,right:!1,top:!1,bottom:!1}),g=u.useDebounceFn(b=>{v.value=!1,d.left=!1,d.right=!1,d.top=!1,d.bottom=!1,a(b)},r+o),P=b=>{const y=b.target===document?b.target.documentElement:b.target,U=y.scrollLeft;d.left=U<f.value,d.right=U>f.value,O.left=U<=0+(i.left||0),O.right=U+y.clientWidth>=y.scrollWidth-(i.right||0),f.value=U;let $=y.scrollTop;b.target===document&&!$&&($=document.body.scrollTop),d.top=$<_.value,d.bottom=$>_.value,O.top=$<=0+(i.top||0),O.bottom=$+y.clientHeight>=y.scrollHeight-(i.bottom||0),_.value=$,v.value=!0,g(b),l(b)};return S(t,"scroll",r?u.useThrottleFn(P,r):P,c),{x:f,y:_,isScrolling:v,arrivedState:O,directions:d}}var Vt=Object.defineProperty,Nt=Object.defineProperties,Tt=Object.getOwnPropertyDescriptors,ee=Object.getOwnPropertySymbols,At=Object.prototype.hasOwnProperty,Ht=Object.prototype.propertyIsEnumerable,te=(t,e,r)=>e in t?Vt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,re=(t,e)=>{for(var r in e||(e={}))At.call(e,r)&&te(t,r,e[r]);if(ee)for(var r of ee(e))Ht.call(e,r)&&te(t,r,e[r]);return t},zt=(t,e)=>Nt(t,Tt(e));function ne(t,e,r={}){var o,a;const l=(o=r.direction)!=null?o:"bottom",i=n.reactive(z(t,zt(re({},r),{offset:re({[l]:(a=r.distance)!=null?a:0},r.offset)})));n.watch(()=>i.arrivedState[l],async c=>{var f,_;if(c){const v=u.resolveUnref(t),O={height:(f=v==null?void 0:v.scrollHeight)!=null?f:0,width:(_=v==null?void 0:v.scrollWidth)!=null?_:0};await e(i),r.preserveScrollPosition&&v&&n.nextTick(()=>{v.scrollTo({top:v.scrollHeight-O.height,left:v.scrollWidth-O.width})})}})}const Rt={[u.directiveHooks.mounted](t,e){typeof e.value=="function"?ne(t,e.value):ne(t,...e.value)}};function oe(t,e,r={}){const{root:o,rootMargin:a="0px",threshold:l=.1,window:i=w}=r,c=H(()=>i&&"IntersectionObserver"in i);let f=u.noop;const _=c.value?n.watch(()=>({el:h(t),root:h(o)}),({el:O,root:d})=>{if(f(),!O)return;const g=new IntersectionObserver(e,{root:d,rootMargin:a,threshold:l});g.observe(O),f=()=>{g.disconnect(),f=u.noop}},{immediate:!0,flush:"post"}):u.noop,v=()=>{f(),_()};return u.tryOnScopeDispose(v),{isSupported:c,stop:v}}const Bt={[u.directiveHooks.mounted](t,e){typeof e.value=="function"?oe(t,e.value):oe(t,...e.value)}},Wt=n.defineComponent({name:"UseMouse",props:["touch","resetOnTouchEnds","initialValue"],setup(t,{slots:e}){const r=n.reactive(p.useMouse(t));return()=>{if(e.default)return e.default(r)}}}),kt=n.defineComponent({name:"UseMouseElement",props:["handleOutside","as"],setup(t,{slots:e}){const r=n.ref(),o=n.reactive(p.useMouseInElement(r,t));return()=>{if(e.default)return n.h(t.as||"div",{ref:r},e.default(o))}}});var Ft=Object.defineProperty,Kt=Object.defineProperties,Jt=Object.getOwnPropertyDescriptors,ae=Object.getOwnPropertySymbols,Gt=Object.prototype.hasOwnProperty,qt=Object.prototype.propertyIsEnumerable,se=(t,e,r)=>e in t?Ft(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,Qt=(t,e)=>{for(var r in e||(e={}))Gt.call(e,r)&&se(t,r,e[r]);if(ae)for(var r of ae(e))qt.call(e,r)&&se(t,r,e[r]);return t},Yt=(t,e)=>Kt(t,Jt(e));const Xt=n.defineComponent({name:"UseMousePressed",props:["touch","initialValue","as"],setup(t,{slots:e}){const r=n.ref(),o=n.reactive(p.useMousePressed(Yt(Qt({},t),{target:r})));return()=>{if(e.default)return n.h(t.as||"div",{ref:r},e.default(o))}}}),Zt=n.defineComponent({name:"UseNetwork",setup(t,{slots:e}){const r=n.reactive(p.useNetwork());return()=>{if(e.default)return e.default(r)}}});var xt=Object.defineProperty,Dt=Object.defineProperties,er=Object.getOwnPropertyDescriptors,le=Object.getOwnPropertySymbols,tr=Object.prototype.hasOwnProperty,rr=Object.prototype.propertyIsEnumerable,ie=(t,e,r)=>e in t?xt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,nr=(t,e)=>{for(var r in e||(e={}))tr.call(e,r)&&ie(t,r,e[r]);if(le)for(var r of le(e))rr.call(e,r)&&ie(t,r,e[r]);return t},or=(t,e)=>Dt(t,er(e));const ar=n.defineComponent({name:"UseNow",props:["interval"],setup(t,{slots:e}){const r=n.reactive(p.useNow(or(nr({},t),{controls:!0})));return()=>{if(e.default)return e.default(r)}}}),sr=n.defineComponent({name:"UseObjectUrl",props:["object"],setup(t,{slots:e}){const r=n.toRef(t,"object"),o=p.useObjectUrl(r);return()=>{if(e.default&&o.value)return e.default(o)}}});var lr=Object.defineProperty,ir=Object.defineProperties,ur=Object.getOwnPropertyDescriptors,ue=Object.getOwnPropertySymbols,cr=Object.prototype.hasOwnProperty,fr=Object.prototype.propertyIsEnumerable,ce=(t,e,r)=>e in t?lr(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,pr=(t,e)=>{for(var r in e||(e={}))cr.call(e,r)&&ce(t,r,e[r]);if(ue)for(var r of ue(e))fr.call(e,r)&&ce(t,r,e[r]);return t},dr=(t,e)=>ir(t,ur(e));const vr=n.defineComponent({name:"UseOffsetPagination",props:["total","page","pageSize","onPageChange","onPageSizeChange","onPageCountChange"],emits:["page-change","page-size-change","page-count-change"],setup(t,{slots:e,emit:r}){const o=n.reactive(p.useOffsetPagination(dr(pr({},t),{onPageChange(...a){var l;(l=t.onPageChange)==null||l.call(t,...a),r("page-change",...a)},onPageSizeChange(...a){var l;(l=t.onPageSizeChange)==null||l.call(t,...a),r("page-size-change",...a)},onPageCountChange(...a){var l;(l=t.onPageCountChange)==null||l.call(t,...a),r("page-count-change",...a)}})));return()=>{if(e.default)return e.default(o)}}}),gr=n.defineComponent({name:"UseOnline",setup(t,{slots:e}){const r=n.reactive({isOnline:p.useOnline()});return()=>{if(e.default)return e.default(r)}}}),_r=n.defineComponent({name:"UsePageLeave",setup(t,{slots:e}){const r=n.reactive({isLeft:p.usePageLeave()});return()=>{if(e.default)return e.default(r)}}});var Or=Object.defineProperty,mr=Object.defineProperties,yr=Object.getOwnPropertyDescriptors,fe=Object.getOwnPropertySymbols,Pr=Object.prototype.hasOwnProperty,hr=Object.prototype.propertyIsEnumerable,pe=(t,e,r)=>e in t?Or(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,wr=(t,e)=>{for(var r in e||(e={}))Pr.call(e,r)&&pe(t,r,e[r]);if(fe)for(var r of fe(e))hr.call(e,r)&&pe(t,r,e[r]);return t},br=(t,e)=>mr(t,yr(e));const Ur=n.defineComponent({name:"UsePointer",props:["pointerTypes","initialValue","target"],setup(t,{slots:e}){const r=n.ref(null),o=n.reactive(p.usePointer(br(wr({},t),{target:t.target==="self"?r:w})));return()=>{if(e.default)return e.default(o,{ref:r})}}}),Sr=n.defineComponent({name:"UsePreferredColorScheme",setup(t,{slots:e}){const r=n.reactive({colorScheme:p.usePreferredColorScheme()});return()=>{if(e.default)return e.default(r)}}}),$r=n.defineComponent({name:"UsePreferredDark",setup(t,{slots:e}){const r=n.reactive({prefersDark:p.usePreferredDark()});return()=>{if(e.default)return e.default(r)}}}),Cr=n.defineComponent({name:"UsePreferredLanguages",setup(t,{slots:e}){const r=n.reactive({languages:p.usePreferredLanguages()});return()=>{if(e.default)return e.default(r)}}});function I(t,e,{window:r=w,initialValue:o=""}={}){const a=n.ref(o),l=n.computed(()=>{var i;return h(e)||((i=r==null?void 0:r.document)==null?void 0:i.documentElement)});return n.watch([l,()=>u.resolveUnref(t)],([i,c])=>{var f;if(i&&r){const _=(f=r.getComputedStyle(i).getPropertyValue(c))==null?void 0:f.trim();a.value=_||o}},{immediate:!0}),n.watch(a,i=>{var c;((c=l.value)==null?void 0:c.style)&&l.value.style.setProperty(u.resolveUnref(t),i)}),a}const de="--vueuse-safe-area-top",ve="--vueuse-safe-area-right",ge="--vueuse-safe-area-bottom",_e="--vueuse-safe-area-left";function Er(){const t=n.ref(""),e=n.ref(""),r=n.ref(""),o=n.ref("");if(u.isClient){const l=I(de),i=I(ve),c=I(ge),f=I(_e);l.value="env(safe-area-inset-top, 0px)",i.value="env(safe-area-inset-right, 0px)",c.value="env(safe-area-inset-bottom, 0px)",f.value="env(safe-area-inset-left, 0px)",a(),S("resize",u.useDebounceFn(a))}function a(){t.value=M(de),e.value=M(ve),r.value=M(ge),o.value=M(_e)}return{top:t,right:e,bottom:r,left:o,update:a}}function M(t){return getComputedStyle(document.documentElement).getPropertyValue(t)}const jr=n.defineComponent({name:"UseScreenSafeArea",props:{top:Boolean,right:Boolean,bottom:Boolean,left:Boolean},setup(t,{slots:e}){const{top:r,right:o,bottom:a,left:l}=Er();return()=>{if(e.default)return n.h("div",{style:{paddingTop:t.top?r.value:"",paddingRight:t.right?o.value:"",paddingBottom:t.bottom?a.value:"",paddingLeft:t.left?l.value:"",boxSizing:"border-box",maxHeight:"100vh",maxWidth:"100vw",overflow:"auto"}},e.default())}}});var Lr=Object.defineProperty,Ir=Object.defineProperties,Mr=Object.getOwnPropertyDescriptors,Oe=Object.getOwnPropertySymbols,Vr=Object.prototype.hasOwnProperty,Nr=Object.prototype.propertyIsEnumerable,me=(t,e,r)=>e in t?Lr(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,Tr=(t,e)=>{for(var r in e||(e={}))Vr.call(e,r)&&me(t,r,e[r]);if(Oe)for(var r of Oe(e))Nr.call(e,r)&&me(t,r,e[r]);return t},Ar=(t,e)=>Ir(t,Mr(e));const Hr={[u.directiveHooks.mounted](t,e){if(typeof e.value=="function"){const r=e.value,o=z(t,{onScroll(){r(o)},onStop(){r(o)}})}else{const[r,o]=e.value,a=z(t,Ar(Tr({},o),{onScroll(l){var i;(i=o.onScroll)==null||i.call(o,l),r(a)},onStop(l){var i;(i=o.onStop)==null||i.call(o,l),r(a)}}))}}};function zr(t){const e=t||window.event;return e.touches.length>1?!0:(e.preventDefault&&e.preventDefault(),!1)}function Rr(t,e=!1){const r=n.ref(e);let o=null,a;n.watch(u.resolveRef(t),c=>{if(c){const f=c;a=f.style.overflow,r.value&&(f.style.overflow="hidden")}},{immediate:!0});const l=()=>{const c=u.resolveUnref(t);!c||r.value||(u.isIOS&&(o=S(c,"touchmove",zr,{passive:!1})),c.style.overflow="hidden",r.value=!0)},i=()=>{const c=u.resolveUnref(t);!c||!r.value||(u.isIOS&&(o==null||o()),c.style.overflow=a,r.value=!1)};return u.tryOnScopeDispose(i),n.computed({get(){return r.value},set(c){c?l():i()}})}const Br=(()=>{let t=!1;const e=n.ref(!1);return(r,o)=>{if(e.value=o.value,t)return;t=!0;const a=Rr(r,o.value);n.watch(e,l=>a.value=l)}})();var Wr=Object.defineProperty,kr=Object.defineProperties,Fr=Object.getOwnPropertyDescriptors,ye=Object.getOwnPropertySymbols,Kr=Object.prototype.hasOwnProperty,Jr=Object.prototype.propertyIsEnumerable,Pe=(t,e,r)=>e in t?Wr(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,Gr=(t,e)=>{for(var r in e||(e={}))Kr.call(e,r)&&Pe(t,r,e[r]);if(ye)for(var r of ye(e))Jr.call(e,r)&&Pe(t,r,e[r]);return t},qr=(t,e)=>kr(t,Fr(e));const Qr=n.defineComponent({name:"UseTimeAgo",props:["time","updateInterval","max","fullDateFormatter","messages"],setup(t,{slots:e}){const r=n.reactive(p.useTimeAgo(()=>t.time,qr(Gr({},t),{controls:!0})));return()=>{if(e.default)return e.default(r)}}});var Yr=Object.defineProperty,Xr=Object.defineProperties,Zr=Object.getOwnPropertyDescriptors,he=Object.getOwnPropertySymbols,xr=Object.prototype.hasOwnProperty,Dr=Object.prototype.propertyIsEnumerable,we=(t,e,r)=>e in t?Yr(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,en=(t,e)=>{for(var r in e||(e={}))xr.call(e,r)&&we(t,r,e[r]);if(he)for(var r of he(e))Dr.call(e,r)&&we(t,r,e[r]);return t},tn=(t,e)=>Xr(t,Zr(e));const rn=n.defineComponent({name:"UseTimestamp",props:["immediate","interval","offset"],setup(t,{slots:e}){const r=n.reactive(p.useTimestamp(tn(en({},t),{controls:!0})));return()=>{if(e.default)return e.default(r)}}});var nn=Object.defineProperty,be=Object.getOwnPropertySymbols,on=Object.prototype.hasOwnProperty,an=Object.prototype.propertyIsEnumerable,Ue=(t,e,r)=>e in t?nn(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,Se=(t,e)=>{for(var r in e||(e={}))on.call(e,r)&&Ue(t,r,e[r]);if(be)for(var r of be(e))an.call(e,r)&&Ue(t,r,e[r]);return t};const sn=n.defineComponent({name:"UseVirtualList",props:["list","options","height"],setup(t,{slots:e}){const{list:r}=n.toRefs(t),{list:o,containerProps:a,wrapperProps:l}=p.useVirtualList(r,t.options);return a.style.height=t.height||"300px",()=>n.h("div",Se({},a),[n.h("div",Se({},l.value),o.value.map(i=>n.h("div",{style:{overFlow:"hidden",height:i.height}},e.default?e.default(i):"Please set content!")))])}}),ln=n.defineComponent({name:"UseWindowFocus",setup(t,{slots:e}){const r=n.reactive({focused:p.useWindowFocus()});return()=>{if(e.default)return e.default(r)}}}),un=n.defineComponent({name:"UseWindowSize",props:["initialWidth","initialHeight"],setup(t,{slots:e}){const r=n.reactive(p.useWindowSize(t));return()=>{if(e.default)return e.default(r)}}});s.OnClickOutside=C,s.OnLongPress=Ve,s.UseActiveElement=Ne,s.UseBattery=Te,s.UseBrowserLocation=Ae,s.UseColorMode=Qe,s.UseDark=Ye,s.UseDeviceMotion=Xe,s.UseDeviceOrientation=Ze,s.UseDevicePixelRatio=xe,s.UseDevicesList=De,s.UseDocumentVisibility=et,s.UseDraggable=it,s.UseElementBounding=ut,s.UseElementSize=pt,s.UseElementVisibility=yt,s.UseEyeDropper=ht,s.UseFullscreen=wt,s.UseGeolocation=bt,s.UseIdle=Ut,s.UseImage=Mt,s.UseMouse=Wt,s.UseMouseInElement=kt,s.UseMousePressed=Xt,s.UseNetwork=Zt,s.UseNow=ar,s.UseObjectUrl=sr,s.UseOffsetPagination=vr,s.UseOnline=gr,s.UsePageLeave=_r,s.UsePointer=Ur,s.UsePreferredColorScheme=Sr,s.UsePreferredDark=$r,s.UsePreferredLanguages=Cr,s.UseScreenSafeArea=jr,s.UseTimeAgo=Qr,s.UseTimestamp=rn,s.UseVirtualList=sn,s.UseWindowFocus=ln,s.UseWindowSize=un,s.VOnClickOutside=B,s.VOnLongPress=K,s.vElementHover=ft,s.vElementSize=mt,s.vElementVisibility=Pt,s.vInfiniteScroll=Rt,s.vIntersectionObserver=Bt,s.vOnClickOutside=B,s.vOnKeyStroke=Ie,s.vOnLongPress=K,s.vScroll=Hr,s.vScrollLock=Br,Object.defineProperty(s,"__esModule",{value:!0})})(this.VueUse=this.VueUse||{},VueDemi,VueUse,VueUse);
package/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
- import { defineComponent, ref, h, unref, watch, computed, reactive, shallowRef, nextTick, toRef, toRefs } from 'vue-demi';
1
+ import { defineComponent, ref, h, watch, computed, reactive, shallowRef, nextTick, toRef, toRefs } from 'vue-demi';
2
2
  import { onClickOutside as onClickOutside$1, useActiveElement, useBattery, useBrowserLocation, useDark, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDocumentVisibility, useStorage as useStorage$1, isClient as isClient$1, useDraggable, useElementBounding, useElementSize as useElementSize$1, useElementVisibility as useElementVisibility$1, useEyeDropper, useFullscreen, useGeolocation, useIdle, useMouse, useMouseInElement, useMousePressed, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, usePointer, usePreferredColorScheme, usePreferredDark as usePreferredDark$1, usePreferredLanguages, useTimeAgo, useTimestamp, useVirtualList, useWindowFocus, useWindowSize } from '@vueuse/core';
3
- import { isClient, isString, noop, tryOnScopeDispose, directiveHooks, pausableWatch, tryOnBeforeMount, tryOnMounted, useToggle, promiseTimeout, useDebounceFn, useThrottleFn, isIOS } from '@vueuse/shared';
3
+ import { resolveUnref, isClient, isString, noop, tryOnScopeDispose, directiveHooks, pausableWatch, tryOnMounted, tryOnBeforeMount, useToggle, promiseTimeout, useDebounceFn, useThrottleFn, resolveRef, isIOS } from '@vueuse/shared';
4
4
 
5
5
  const OnClickOutside = defineComponent({
6
6
  name: "OnClickOutside",
@@ -20,7 +20,7 @@ const OnClickOutside = defineComponent({
20
20
 
21
21
  function unrefElement(elRef) {
22
22
  var _a;
23
- const plain = unref(elRef);
23
+ const plain = resolveUnref(elRef);
24
24
  return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;
25
25
  }
26
26
 
@@ -335,7 +335,7 @@ function useStorage(key, initialValue, storage, options = {}) {
335
335
  }
336
336
  if (!storage)
337
337
  return data;
338
- const rawInit = unref(initialValue);
338
+ const rawInit = resolveUnref(initialValue);
339
339
  const type = guessSerializerType(rawInit);
340
340
  const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];
341
341
  const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(data, () => write(data.value), { flush, deep, eventFilter });
@@ -381,13 +381,21 @@ function useStorage(key, initialValue, storage, options = {}) {
381
381
  }
382
382
  }
383
383
 
384
+ function useSupported(callback, sync = false) {
385
+ const isSupported = ref();
386
+ const update = () => isSupported.value = Boolean(callback());
387
+ update();
388
+ tryOnMounted(update, sync);
389
+ return isSupported;
390
+ }
391
+
384
392
  function useMediaQuery(query, options = {}) {
385
393
  const { window = defaultWindow } = options;
386
- const isSupported = Boolean(window && "matchMedia" in window && typeof window.matchMedia === "function");
394
+ const isSupported = useSupported(() => window && "matchMedia" in window && typeof window.matchMedia === "function");
387
395
  let mediaQuery;
388
396
  const matches = ref(false);
389
397
  const update = () => {
390
- if (!isSupported)
398
+ if (!isSupported.value)
391
399
  return;
392
400
  if (!mediaQuery)
393
401
  mediaQuery = window.matchMedia(query);
@@ -614,7 +622,7 @@ const UseDraggable = defineComponent({
614
622
  ],
615
623
  setup(props, { slots }) {
616
624
  const target = ref();
617
- const initialValue = props.storageKey ? useStorage$1(props.storageKey, unref(props.initialValue) || { x: 0, y: 0 }, isClient$1 ? props.storageType === "session" ? sessionStorage : localStorage : void 0) : props.initialValue || { x: 0, y: 0 };
625
+ const initialValue = props.storageKey ? useStorage$1(props.storageKey, resolveUnref(props.initialValue) || { x: 0, y: 0 }, isClient$1 ? props.storageType === "session" ? sessionStorage : localStorage : void 0) : props.initialValue || { x: 0, y: 0 };
618
626
  const data = reactive(useDraggable(target, __spreadProps$8(__spreadValues$a({}, props), {
619
627
  initialValue
620
628
  })));
@@ -685,7 +693,7 @@ var __objRest = (source, exclude) => {
685
693
  function useResizeObserver(target, callback, options = {}) {
686
694
  const _a = options, { window = defaultWindow } = _a, observerOptions = __objRest(_a, ["window"]);
687
695
  let observer;
688
- const isSupported = window && "ResizeObserver" in window;
696
+ const isSupported = useSupported(() => window && "ResizeObserver" in window);
689
697
  const cleanup = () => {
690
698
  if (observer) {
691
699
  observer.disconnect();
@@ -694,7 +702,7 @@ function useResizeObserver(target, callback, options = {}) {
694
702
  };
695
703
  const stopWatch = watch(() => unrefElement(target), (el) => {
696
704
  cleanup();
697
- if (isSupported && window && el) {
705
+ if (isSupported.value && window && el) {
698
706
  observer = new ResizeObserver(callback);
699
707
  observer.observe(el, observerOptions);
700
708
  }
@@ -758,16 +766,18 @@ function useElementVisibility(element, { window = defaultWindow, scrollTarget }
758
766
  if (!window)
759
767
  return;
760
768
  const document = window.document;
761
- if (!unref(element)) {
769
+ const el = resolveUnref(element);
770
+ if (!el) {
762
771
  elementIsVisible.value = false;
763
772
  } else {
764
- const rect = unref(element).getBoundingClientRect();
773
+ const rect = el.getBoundingClientRect();
765
774
  elementIsVisible.value = rect.top <= (window.innerHeight || document.documentElement.clientHeight) && rect.left <= (window.innerWidth || document.documentElement.clientWidth) && rect.bottom >= 0 && rect.right >= 0;
766
775
  }
767
776
  };
768
777
  tryOnMounted(testBounding);
769
- if (window)
770
- tryOnMounted(() => useEventListener(unref(scrollTarget) || window, "scroll", testBounding, { capture: false, passive: true }));
778
+ if (window) {
779
+ tryOnMounted(() => useEventListener(() => resolveUnref(scrollTarget) || window, "scroll", testBounding, { capture: false, passive: true }));
780
+ }
771
781
  return elementIsVisible;
772
782
  }
773
783
 
@@ -910,10 +920,10 @@ async function loadImage(options) {
910
920
  });
911
921
  }
912
922
  const useImage = (options, asyncStateOptions = {}) => {
913
- const state = useAsyncState(() => loadImage(unref(options)), void 0, __spreadValues$9({
923
+ const state = useAsyncState(() => loadImage(resolveUnref(options)), void 0, __spreadValues$9({
914
924
  resetOnExecute: true
915
925
  }, asyncStateOptions));
916
- watch(() => unref(options), () => state.execute(asyncStateOptions.delay), { deep: true });
926
+ watch(() => resolveUnref(options), () => state.execute(asyncStateOptions.delay), { deep: true });
917
927
  return state;
918
928
  };
919
929
 
@@ -971,37 +981,35 @@ function useScroll(element, options = {}) {
971
981
  top: false,
972
982
  bottom: false
973
983
  });
974
- if (element) {
975
- const onScrollEnd = useDebounceFn((e) => {
976
- isScrolling.value = false;
977
- directions.left = false;
978
- directions.right = false;
979
- directions.top = false;
980
- directions.bottom = false;
981
- onStop(e);
982
- }, throttle + idle);
983
- const onScrollHandler = (e) => {
984
- const eventTarget = e.target === document ? e.target.documentElement : e.target;
985
- const scrollLeft = eventTarget.scrollLeft;
986
- directions.left = scrollLeft < x.value;
987
- directions.right = scrollLeft > x.value;
988
- arrivedState.left = scrollLeft <= 0 + (offset.left || 0);
989
- arrivedState.right = scrollLeft + eventTarget.clientWidth >= eventTarget.scrollWidth - (offset.right || 0);
990
- x.value = scrollLeft;
991
- let scrollTop = eventTarget.scrollTop;
992
- if (e.target === document && !scrollTop)
993
- scrollTop = document.body.scrollTop;
994
- directions.top = scrollTop < y.value;
995
- directions.bottom = scrollTop > y.value;
996
- arrivedState.top = scrollTop <= 0 + (offset.top || 0);
997
- arrivedState.bottom = scrollTop + eventTarget.clientHeight >= eventTarget.scrollHeight - (offset.bottom || 0);
998
- y.value = scrollTop;
999
- isScrolling.value = true;
1000
- onScrollEnd(e);
1001
- onScroll(e);
1002
- };
1003
- useEventListener(element, "scroll", throttle ? useThrottleFn(onScrollHandler, throttle) : onScrollHandler, eventListenerOptions);
1004
- }
984
+ const onScrollEnd = useDebounceFn((e) => {
985
+ isScrolling.value = false;
986
+ directions.left = false;
987
+ directions.right = false;
988
+ directions.top = false;
989
+ directions.bottom = false;
990
+ onStop(e);
991
+ }, throttle + idle);
992
+ const onScrollHandler = (e) => {
993
+ const eventTarget = e.target === document ? e.target.documentElement : e.target;
994
+ const scrollLeft = eventTarget.scrollLeft;
995
+ directions.left = scrollLeft < x.value;
996
+ directions.right = scrollLeft > x.value;
997
+ arrivedState.left = scrollLeft <= 0 + (offset.left || 0);
998
+ arrivedState.right = scrollLeft + eventTarget.clientWidth >= eventTarget.scrollWidth - (offset.right || 0);
999
+ x.value = scrollLeft;
1000
+ let scrollTop = eventTarget.scrollTop;
1001
+ if (e.target === document && !scrollTop)
1002
+ scrollTop = document.body.scrollTop;
1003
+ directions.top = scrollTop < y.value;
1004
+ directions.bottom = scrollTop > y.value;
1005
+ arrivedState.top = scrollTop <= 0 + (offset.top || 0);
1006
+ arrivedState.bottom = scrollTop + eventTarget.clientHeight >= eventTarget.scrollHeight - (offset.bottom || 0);
1007
+ y.value = scrollTop;
1008
+ isScrolling.value = true;
1009
+ onScrollEnd(e);
1010
+ onScroll(e);
1011
+ };
1012
+ useEventListener(element, "scroll", throttle ? useThrottleFn(onScrollHandler, throttle) : onScrollHandler, eventListenerOptions);
1005
1013
  return {
1006
1014
  x,
1007
1015
  y,
@@ -1041,7 +1049,7 @@ function useInfiniteScroll(element, onLoadMore, options = {}) {
1041
1049
  watch(() => state.arrivedState[direction], async (v) => {
1042
1050
  var _a2, _b2;
1043
1051
  if (v) {
1044
- const elem = unref(element);
1052
+ const elem = resolveUnref(element);
1045
1053
  const previous = {
1046
1054
  height: (_a2 = elem == null ? void 0 : elem.scrollHeight) != null ? _a2 : 0,
1047
1055
  width: (_b2 = elem == null ? void 0 : elem.scrollWidth) != null ? _b2 : 0
@@ -1075,9 +1083,9 @@ function useIntersectionObserver(target, callback, options = {}) {
1075
1083
  threshold = 0.1,
1076
1084
  window = defaultWindow
1077
1085
  } = options;
1078
- const isSupported = window && "IntersectionObserver" in window;
1086
+ const isSupported = useSupported(() => window && "IntersectionObserver" in window);
1079
1087
  let cleanup = noop;
1080
- const stopWatch = isSupported ? watch(() => ({
1088
+ const stopWatch = isSupported.value ? watch(() => ({
1081
1089
  el: unrefElement(target),
1082
1090
  root: unrefElement(root)
1083
1091
  }), ({ el, root: root2 }) => {
@@ -1397,7 +1405,7 @@ function useCssVar(prop, target, { window = defaultWindow, initialValue = "" } =
1397
1405
  var _a;
1398
1406
  return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);
1399
1407
  });
1400
- watch([elRef, () => unref(prop)], ([el, prop2]) => {
1408
+ watch([elRef, () => resolveUnref(prop)], ([el, prop2]) => {
1401
1409
  var _a;
1402
1410
  if (el && window) {
1403
1411
  const value = (_a = window.getComputedStyle(el).getPropertyValue(prop2)) == null ? void 0 : _a.trim();
@@ -1407,7 +1415,7 @@ function useCssVar(prop, target, { window = defaultWindow, initialValue = "" } =
1407
1415
  watch(variable, (val) => {
1408
1416
  var _a;
1409
1417
  if ((_a = elRef.value) == null ? void 0 : _a.style)
1410
- elRef.value.style.setProperty(unref(prop), val);
1418
+ elRef.value.style.setProperty(resolveUnref(prop), val);
1411
1419
  });
1412
1420
  return variable;
1413
1421
  }
@@ -1546,7 +1554,7 @@ function useScrollLock(element, initialState = false) {
1546
1554
  const isLocked = ref(initialState);
1547
1555
  let stopTouchMoveListener = null;
1548
1556
  let initialOverflow;
1549
- watch(() => unref(element), (el) => {
1557
+ watch(resolveRef(element), (el) => {
1550
1558
  if (el) {
1551
1559
  const ele = el;
1552
1560
  initialOverflow = ele.style.overflow;
@@ -1557,7 +1565,7 @@ function useScrollLock(element, initialState = false) {
1557
1565
  immediate: true
1558
1566
  });
1559
1567
  const lock = () => {
1560
- const ele = unref(element);
1568
+ const ele = resolveUnref(element);
1561
1569
  if (!ele || isLocked.value)
1562
1570
  return;
1563
1571
  if (isIOS) {
@@ -1567,7 +1575,7 @@ function useScrollLock(element, initialState = false) {
1567
1575
  isLocked.value = true;
1568
1576
  };
1569
1577
  const unlock = () => {
1570
- const ele = unref(element);
1578
+ const ele = resolveUnref(element);
1571
1579
  if (!ele || !isLocked.value)
1572
1580
  return;
1573
1581
  isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener());
@@ -1625,8 +1633,7 @@ const UseTimeAgo = defineComponent({
1625
1633
  name: "UseTimeAgo",
1626
1634
  props: ["time", "updateInterval", "max", "fullDateFormatter", "messages"],
1627
1635
  setup(props, { slots }) {
1628
- const time = toRef(props, "time");
1629
- const data = reactive(useTimeAgo(time, __spreadProps$1(__spreadValues$2({}, props), { controls: true })));
1636
+ const data = reactive(useTimeAgo(() => props.time, __spreadProps$1(__spreadValues$2({}, props), { controls: true })));
1630
1637
  return () => {
1631
1638
  if (slots.default)
1632
1639
  return slots.default(data);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vueuse/components",
3
- "version": "8.9.2",
3
+ "version": "9.0.0-beta.0",
4
4
  "description": "Renderless components for VueUse",
5
5
  "author": "Jacob Clevenger<https://github.com/wheatjs>",
6
6
  "license": "MIT",
@@ -33,8 +33,8 @@
33
33
  "jsdelivr": "./index.iife.min.js",
34
34
  "types": "./index.d.ts",
35
35
  "dependencies": {
36
- "@vueuse/core": "8.9.2",
37
- "@vueuse/shared": "8.9.2",
36
+ "@vueuse/core": "9.0.0-beta.0",
37
+ "@vueuse/shared": "9.0.0-beta.0",
38
38
  "vue-demi": "*"
39
39
  }
40
40
  }