@vueuse/components 9.12.0 → 10.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.iife.js CHANGED
@@ -115,7 +115,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
115
115
  ;(function (exports, vueDemi, core, shared) {
116
116
  'use strict';
117
117
 
118
- const OnClickOutside = /* @__PURE__ */ vueDemi.defineComponent({
118
+ const OnClickOutside = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
119
119
  name: "OnClickOutside",
120
120
  props: ["as", "options"],
121
121
  emits: ["trigger"],
@@ -161,16 +161,16 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
161
161
  cleanups.forEach((fn) => fn());
162
162
  cleanups.length = 0;
163
163
  };
164
- const register = (el, event, listener) => {
165
- el.addEventListener(event, listener, options);
166
- return () => el.removeEventListener(event, listener, options);
164
+ const register = (el, event, listener, options2) => {
165
+ el.addEventListener(event, listener, options2);
166
+ return () => el.removeEventListener(event, listener, options2);
167
167
  };
168
- const stopWatch = vueDemi.watch(() => unrefElement(target), (el) => {
168
+ const stopWatch = vueDemi.watch(() => [unrefElement(target), shared.resolveUnref(options)], ([el, options2]) => {
169
169
  cleanup();
170
170
  if (!el)
171
171
  return;
172
172
  cleanups.push(...events.flatMap((event) => {
173
- return listeners.map((listener) => register(el, event, listener));
173
+ return listeners.map((listener) => register(el, event, listener, options2));
174
174
  }));
175
175
  }, { immediate: true, flush: "post" });
176
176
  const stop = () => {
@@ -181,12 +181,16 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
181
181
  return stop;
182
182
  }
183
183
 
184
+ let _iOSWorkaround = false;
184
185
  function onClickOutside(target, handler, options = {}) {
185
186
  const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;
186
187
  if (!window)
187
188
  return;
189
+ if (shared.isIOS && !_iOSWorkaround) {
190
+ _iOSWorkaround = true;
191
+ Array.from(window.document.body.children).forEach((el) => el.addEventListener("click", shared.noop));
192
+ }
188
193
  let shouldListen = true;
189
- let fallback;
190
194
  const shouldIgnore = (event) => {
191
195
  return ignore.some((target2) => {
192
196
  if (typeof target2 === "string") {
@@ -198,7 +202,6 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
198
202
  });
199
203
  };
200
204
  const listener = (event) => {
201
- window.clearTimeout(fallback);
202
205
  const el = unrefElement(target);
203
206
  if (!el || el === event.target || event.composedPath().includes(el))
204
207
  return;
@@ -217,13 +220,6 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
217
220
  if (el)
218
221
  shouldListen = !e.composedPath().includes(el) && !shouldIgnore(e);
219
222
  }, { passive: true }),
220
- useEventListener(window, "pointerup", (e) => {
221
- if (e.button === 0) {
222
- const path = e.composedPath();
223
- e.composedPath = () => path;
224
- fallback = window.setTimeout(() => listener(e), 50);
225
- }
226
- }, { passive: true }),
227
223
  detectIframe && useEventListener(window, "blur", (event) => {
228
224
  var _a;
229
225
  const el = unrefElement(target);
@@ -353,7 +349,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
353
349
  useEventListener(elementRef, "pointerleave", clear, listenerOptions);
354
350
  }
355
351
 
356
- const OnLongPress = /* @__PURE__ */ vueDemi.defineComponent({
352
+ const OnLongPress = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
357
353
  name: "OnLongPress",
358
354
  props: ["as", "options"],
359
355
  emits: ["trigger"],
@@ -378,7 +374,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
378
374
  }
379
375
  };
380
376
 
381
- const UseActiveElement = /* @__PURE__ */ vueDemi.defineComponent({
377
+ const UseActiveElement = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
382
378
  name: "UseActiveElement",
383
379
  setup(props, { slots }) {
384
380
  const data = vueDemi.reactive({
@@ -391,7 +387,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
391
387
  }
392
388
  });
393
389
 
394
- const UseBattery = /* @__PURE__ */ vueDemi.defineComponent({
390
+ const UseBattery = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
395
391
  name: "UseBattery",
396
392
  setup(props, { slots }) {
397
393
  const data = vueDemi.reactive(core.useBattery(props));
@@ -402,7 +398,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
402
398
  }
403
399
  });
404
400
 
405
- const UseBrowserLocation = /* @__PURE__ */ vueDemi.defineComponent({
401
+ const UseBrowserLocation = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
406
402
  name: "UseBrowserLocation",
407
403
  setup(props, { slots }) {
408
404
  const data = vueDemi.reactive(core.useBrowserLocation());
@@ -475,6 +471,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
475
471
  write: (v) => v.toISOString()
476
472
  }
477
473
  };
474
+ const customStorageEventName = "vueuse-storage";
478
475
  function useStorage(key, defaults, storage, options = {}) {
479
476
  var _a;
480
477
  const {
@@ -507,8 +504,10 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
507
504
  const type = guessSerializerType(rawInit);
508
505
  const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];
509
506
  const { pause: pauseWatch, resume: resumeWatch } = shared.pausableWatch(data, () => write(data.value), { flush, deep, eventFilter });
510
- if (window && listenToStorageChanges)
507
+ if (window && listenToStorageChanges) {
511
508
  useEventListener(window, "storage", update);
509
+ useEventListener(window, customStorageEventName, updateFromCustomEvent);
510
+ }
512
511
  update();
513
512
  return data;
514
513
  function write(v) {
@@ -521,11 +520,13 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
521
520
  if (oldValue !== serialized) {
522
521
  storage.setItem(key, serialized);
523
522
  if (window) {
524
- window == null ? void 0 : window.dispatchEvent(new StorageEvent("storage", {
525
- key,
526
- oldValue,
527
- newValue: serialized,
528
- storageArea: storage
523
+ window.dispatchEvent(new CustomEvent(customStorageEventName, {
524
+ detail: {
525
+ key,
526
+ oldValue,
527
+ newValue: serialized,
528
+ storageArea: storage
529
+ }
529
530
  }));
530
531
  }
531
532
  }
@@ -553,6 +554,9 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
553
554
  return serializer.read(rawValue);
554
555
  }
555
556
  }
557
+ function updateFromCustomEvent(event) {
558
+ update(event.detail);
559
+ }
556
560
  function update(event) {
557
561
  if (event && event.storageArea !== storage)
558
562
  return;
@@ -643,7 +647,8 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
643
647
  storageKey = "vueuse-color-scheme",
644
648
  listenToStorageChanges = true,
645
649
  storageRef,
646
- emitAuto
650
+ emitAuto,
651
+ disableTransition = false
647
652
  } = options;
648
653
  const modes = __spreadValues$b({
649
654
  auto: "",
@@ -665,6 +670,13 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
665
670
  const el = window == null ? void 0 : window.document.querySelector(selector2);
666
671
  if (!el)
667
672
  return;
673
+ let style;
674
+ if (disableTransition) {
675
+ style = window.document.createElement("style");
676
+ style.type = "text/css";
677
+ style.appendChild(document.createTextNode("*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}"));
678
+ window.document.head.appendChild(style);
679
+ }
668
680
  if (attribute2 === "class") {
669
681
  const current = value.split(/\s/g);
670
682
  Object.values(modes).flatMap((i) => (i || "").split(/\s/g)).filter(Boolean).forEach((v) => {
@@ -676,6 +688,10 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
676
688
  } else {
677
689
  el.setAttribute(attribute2, value);
678
690
  }
691
+ if (disableTransition) {
692
+ window.getComputedStyle(style).opacity;
693
+ document.head.removeChild(style);
694
+ }
679
695
  });
680
696
  function defaultOnChanged(mode) {
681
697
  var _a;
@@ -695,7 +711,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
695
711
  return state;
696
712
  }
697
713
 
698
- const UseColorMode = /* @__PURE__ */ vueDemi.defineComponent({
714
+ const UseColorMode = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
699
715
  name: "UseColorMode",
700
716
  props: ["selector", "attribute", "modes", "onChanged", "storageKey", "storage", "emitAuto"],
701
717
  setup(props, { slots }) {
@@ -710,7 +726,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
710
726
  }
711
727
  });
712
728
 
713
- const UseDark = /* @__PURE__ */ vueDemi.defineComponent({
729
+ const UseDark = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
714
730
  name: "UseDark",
715
731
  props: ["selector", "attribute", "valueDark", "valueLight", "onChanged", "storageKey", "storage"],
716
732
  setup(props, { slots }) {
@@ -726,7 +742,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
726
742
  }
727
743
  });
728
744
 
729
- const UseDeviceMotion = /* @__PURE__ */ vueDemi.defineComponent({
745
+ const UseDeviceMotion = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
730
746
  name: "UseDeviceMotion",
731
747
  setup(props, { slots }) {
732
748
  const data = vueDemi.reactive(core.useDeviceMotion());
@@ -737,7 +753,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
737
753
  }
738
754
  });
739
755
 
740
- const UseDeviceOrientation = /* @__PURE__ */ vueDemi.defineComponent({
756
+ const UseDeviceOrientation = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
741
757
  name: "UseDeviceOrientation",
742
758
  setup(props, { slots }) {
743
759
  const data = vueDemi.reactive(core.useDeviceOrientation());
@@ -748,7 +764,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
748
764
  }
749
765
  });
750
766
 
751
- const UseDevicePixelRatio = /* @__PURE__ */ vueDemi.defineComponent({
767
+ const UseDevicePixelRatio = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
752
768
  name: "UseDevicePixelRatio",
753
769
  setup(props, { slots }) {
754
770
  const data = vueDemi.reactive({
@@ -761,7 +777,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
761
777
  }
762
778
  });
763
779
 
764
- const UseDevicesList = /* @__PURE__ */ vueDemi.defineComponent({
780
+ const UseDevicesList = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
765
781
  name: "UseDevicesList",
766
782
  props: ["onUpdated", "requestPermissions", "constraints"],
767
783
  setup(props, { slots }) {
@@ -773,7 +789,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
773
789
  }
774
790
  });
775
791
 
776
- const UseDocumentVisibility = /* @__PURE__ */ vueDemi.defineComponent({
792
+ const UseDocumentVisibility = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
777
793
  name: "UseDocumentVisibility",
778
794
  setup(props, { slots }) {
779
795
  const data = vueDemi.reactive({
@@ -805,7 +821,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
805
821
  return a;
806
822
  };
807
823
  var __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));
808
- const UseDraggable = /* @__PURE__ */ vueDemi.defineComponent({
824
+ const UseDraggable = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
809
825
  name: "UseDraggable",
810
826
  props: [
811
827
  "storageKey",
@@ -844,7 +860,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
844
860
  }
845
861
  });
846
862
 
847
- const UseElementBounding = /* @__PURE__ */ vueDemi.defineComponent({
863
+ const UseElementBounding = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
848
864
  name: "UseElementBounding",
849
865
  props: ["box", "as"],
850
866
  setup(props, { slots }) {
@@ -857,10 +873,29 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
857
873
  }
858
874
  });
859
875
 
860
- function useElementHover(el) {
876
+ function useElementHover(el, options = {}) {
877
+ const {
878
+ delayEnter = 0,
879
+ delayLeave = 0,
880
+ window = defaultWindow
881
+ } = options;
861
882
  const isHovered = vueDemi.ref(false);
862
- useEventListener(el, "mouseenter", () => isHovered.value = true);
863
- useEventListener(el, "mouseleave", () => isHovered.value = false);
883
+ let timer;
884
+ const toggle = (entering) => {
885
+ const delay = entering ? delayEnter : delayLeave;
886
+ if (timer) {
887
+ clearTimeout(timer);
888
+ timer = void 0;
889
+ }
890
+ if (delay)
891
+ timer = setTimeout(() => isHovered.value = entering, delay);
892
+ else
893
+ isHovered.value = entering;
894
+ };
895
+ if (!window)
896
+ return isHovered;
897
+ useEventListener(el, "mouseenter", () => toggle(true), { passive: true });
898
+ useEventListener(el, "mouseleave", () => toggle(false), { passive: true });
864
899
  return isHovered;
865
900
  }
866
901
 
@@ -873,7 +908,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
873
908
  }
874
909
  };
875
910
 
876
- const UseElementSize = /* @__PURE__ */ vueDemi.defineComponent({
911
+ const UseElementSize = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
877
912
  name: "UseElementSize",
878
913
  props: ["width", "height", "box"],
879
914
  setup(props, { slots }) {
@@ -977,7 +1012,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
977
1012
  }
978
1013
  };
979
1014
 
980
- const UseElementVisibility = /* @__PURE__ */ vueDemi.defineComponent({
1015
+ const UseElementVisibility = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
981
1016
  name: "UseElementVisibility",
982
1017
  props: ["as"],
983
1018
  setup(props, { slots }) {
@@ -1030,7 +1065,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1030
1065
  }
1031
1066
  };
1032
1067
 
1033
- const UseEyeDropper = /* @__PURE__ */ vueDemi.defineComponent({
1068
+ const UseEyeDropper = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
1034
1069
  name: "UseEyeDropper",
1035
1070
  props: {
1036
1071
  sRGBHex: String
@@ -1044,7 +1079,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1044
1079
  }
1045
1080
  });
1046
1081
 
1047
- const UseFullscreen = /* @__PURE__ */ vueDemi.defineComponent({
1082
+ const UseFullscreen = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
1048
1083
  name: "UseFullscreen",
1049
1084
  props: ["as"],
1050
1085
  setup(props, { slots }) {
@@ -1057,7 +1092,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1057
1092
  }
1058
1093
  });
1059
1094
 
1060
- const UseGeolocation = /* @__PURE__ */ vueDemi.defineComponent({
1095
+ const UseGeolocation = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
1061
1096
  name: "UseGeolocation",
1062
1097
  props: ["enableHighAccuracy", "maximumAge", "timeout", "navigator"],
1063
1098
  setup(props, { slots }) {
@@ -1069,7 +1104,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1069
1104
  }
1070
1105
  });
1071
1106
 
1072
- const UseIdle = /* @__PURE__ */ vueDemi.defineComponent({
1107
+ const UseIdle = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
1073
1108
  name: "UseIdle",
1074
1109
  props: ["timeout", "events", "listenForVisibilityChange", "initialState"],
1075
1110
  setup(props, { slots }) {
@@ -1167,7 +1202,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1167
1202
  return state;
1168
1203
  };
1169
1204
 
1170
- const UseImage = /* @__PURE__ */ vueDemi.defineComponent({
1205
+ const UseImage = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
1171
1206
  name: "UseImage",
1172
1207
  props: [
1173
1208
  "src",
@@ -1250,14 +1285,17 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1250
1285
  top: false,
1251
1286
  bottom: false
1252
1287
  });
1253
- const onScrollEnd = shared.useDebounceFn((e) => {
1288
+ const onScrollEnd = (e) => {
1289
+ if (!isScrolling.value)
1290
+ return;
1254
1291
  isScrolling.value = false;
1255
1292
  directions.left = false;
1256
1293
  directions.right = false;
1257
1294
  directions.top = false;
1258
1295
  directions.bottom = false;
1259
1296
  onStop(e);
1260
- }, throttle + idle);
1297
+ };
1298
+ const onScrollEndDebounced = shared.useDebounceFn(onScrollEnd, throttle + idle);
1261
1299
  const onScrollHandler = (e) => {
1262
1300
  const eventTarget = e.target === document ? e.target.documentElement : e.target;
1263
1301
  const scrollLeft = eventTarget.scrollLeft;
@@ -1275,10 +1313,11 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1275
1313
  arrivedState.bottom = scrollTop + eventTarget.clientHeight >= eventTarget.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;
1276
1314
  internalY.value = scrollTop;
1277
1315
  isScrolling.value = true;
1278
- onScrollEnd(e);
1316
+ onScrollEndDebounced(e);
1279
1317
  onScroll(e);
1280
1318
  };
1281
1319
  useEventListener(element, "scroll", throttle ? shared.useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler, eventListenerOptions);
1320
+ useEventListener(element, "scrollend", onScrollEnd, eventListenerOptions);
1282
1321
  return {
1283
1322
  x,
1284
1323
  y,
@@ -1392,7 +1431,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1392
1431
  }
1393
1432
  };
1394
1433
 
1395
- const UseMouse = /* @__PURE__ */ vueDemi.defineComponent({
1434
+ const UseMouse = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
1396
1435
  name: "UseMouse",
1397
1436
  props: ["touch", "resetOnTouchEnds", "initialValue"],
1398
1437
  setup(props, { slots }) {
@@ -1404,7 +1443,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1404
1443
  }
1405
1444
  });
1406
1445
 
1407
- const UseMouseInElement = /* @__PURE__ */ vueDemi.defineComponent({
1446
+ const UseMouseInElement = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
1408
1447
  name: "UseMouseElement",
1409
1448
  props: ["handleOutside", "as"],
1410
1449
  setup(props, { slots }) {
@@ -1436,7 +1475,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1436
1475
  return a;
1437
1476
  };
1438
1477
  var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));
1439
- const UseMousePressed = /* @__PURE__ */ vueDemi.defineComponent({
1478
+ const UseMousePressed = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
1440
1479
  name: "UseMousePressed",
1441
1480
  props: ["touch", "initialValue", "as"],
1442
1481
  setup(props, { slots }) {
@@ -1449,7 +1488,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1449
1488
  }
1450
1489
  });
1451
1490
 
1452
- const UseNetwork = /* @__PURE__ */ vueDemi.defineComponent({
1491
+ const UseNetwork = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
1453
1492
  name: "UseNetwork",
1454
1493
  setup(props, { slots }) {
1455
1494
  const data = vueDemi.reactive(core.useNetwork());
@@ -1479,7 +1518,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1479
1518
  return a;
1480
1519
  };
1481
1520
  var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));
1482
- const UseNow = /* @__PURE__ */ vueDemi.defineComponent({
1521
+ const UseNow = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
1483
1522
  name: "UseNow",
1484
1523
  props: ["interval"],
1485
1524
  setup(props, { slots }) {
@@ -1491,7 +1530,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1491
1530
  }
1492
1531
  });
1493
1532
 
1494
- const UseObjectUrl = /* @__PURE__ */ vueDemi.defineComponent({
1533
+ const UseObjectUrl = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
1495
1534
  name: "UseObjectUrl",
1496
1535
  props: [
1497
1536
  "object"
@@ -1525,7 +1564,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1525
1564
  return a;
1526
1565
  };
1527
1566
  var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));
1528
- const UseOffsetPagination = /* @__PURE__ */ vueDemi.defineComponent({
1567
+ const UseOffsetPagination = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
1529
1568
  name: "UseOffsetPagination",
1530
1569
  props: [
1531
1570
  "total",
@@ -1565,7 +1604,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1565
1604
  }
1566
1605
  });
1567
1606
 
1568
- const UseOnline = /* @__PURE__ */ vueDemi.defineComponent({
1607
+ const UseOnline = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
1569
1608
  name: "UseOnline",
1570
1609
  setup(props, { slots }) {
1571
1610
  const data = vueDemi.reactive({
@@ -1578,7 +1617,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1578
1617
  }
1579
1618
  });
1580
1619
 
1581
- const UsePageLeave = /* @__PURE__ */ vueDemi.defineComponent({
1620
+ const UsePageLeave = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
1582
1621
  name: "UsePageLeave",
1583
1622
  setup(props, { slots }) {
1584
1623
  const data = vueDemi.reactive({
@@ -1610,7 +1649,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1610
1649
  return a;
1611
1650
  };
1612
1651
  var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));
1613
- const UsePointer = /* @__PURE__ */ vueDemi.defineComponent({
1652
+ const UsePointer = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
1614
1653
  name: "UsePointer",
1615
1654
  props: [
1616
1655
  "pointerTypes",
@@ -1629,7 +1668,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1629
1668
  }
1630
1669
  });
1631
1670
 
1632
- const UsePointerLock = vueDemi.defineComponent({
1671
+ const UsePointerLock = /* #__PURE__ */ vueDemi.defineComponent({
1633
1672
  name: "UsePointerLock",
1634
1673
  props: ["as"],
1635
1674
  setup(props, { slots }) {
@@ -1642,7 +1681,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1642
1681
  }
1643
1682
  });
1644
1683
 
1645
- const UsePreferredColorScheme = /* @__PURE__ */ vueDemi.defineComponent({
1684
+ const UsePreferredColorScheme = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
1646
1685
  name: "UsePreferredColorScheme",
1647
1686
  setup(props, { slots }) {
1648
1687
  const data = vueDemi.reactive({
@@ -1655,7 +1694,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1655
1694
  }
1656
1695
  });
1657
1696
 
1658
- const UsePreferredContrast = /* @__PURE__ */ vueDemi.defineComponent({
1697
+ const UsePreferredContrast = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
1659
1698
  name: "UsePreferredContrast",
1660
1699
  setup(props, { slots }) {
1661
1700
  const data = vueDemi.reactive({
@@ -1668,7 +1707,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1668
1707
  }
1669
1708
  });
1670
1709
 
1671
- const UsePreferredDark = /* @__PURE__ */ vueDemi.defineComponent({
1710
+ const UsePreferredDark = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
1672
1711
  name: "UsePreferredDark",
1673
1712
  setup(props, { slots }) {
1674
1713
  const data = vueDemi.reactive({
@@ -1681,7 +1720,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1681
1720
  }
1682
1721
  });
1683
1722
 
1684
- const UsePreferredLanguages = /* @__PURE__ */ vueDemi.defineComponent({
1723
+ const UsePreferredLanguages = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
1685
1724
  name: "UsePreferredLanguages",
1686
1725
  setup(props, { slots }) {
1687
1726
  const data = vueDemi.reactive({
@@ -1694,7 +1733,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1694
1733
  }
1695
1734
  });
1696
1735
 
1697
- const UsePreferredReducedMotion = /* @__PURE__ */ vueDemi.defineComponent({
1736
+ const UsePreferredReducedMotion = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
1698
1737
  name: "UsePreferredReducedMotion",
1699
1738
  setup(props, { slots }) {
1700
1739
  const data = vueDemi.reactive({
@@ -1707,19 +1746,29 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1707
1746
  }
1708
1747
  });
1709
1748
 
1710
- function useCssVar(prop, target, { window = defaultWindow, initialValue = "" } = {}) {
1749
+ function useCssVar(prop, target, options = {}) {
1750
+ const { window = defaultWindow, initialValue = "", observe = false } = options;
1711
1751
  const variable = vueDemi.ref(initialValue);
1712
1752
  const elRef = vueDemi.computed(() => {
1713
1753
  var _a;
1714
1754
  return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);
1715
1755
  });
1716
- vueDemi.watch([elRef, () => shared.resolveUnref(prop)], ([el, prop2]) => {
1756
+ function updateCssVar() {
1717
1757
  var _a;
1758
+ const key = shared.resolveUnref(prop);
1759
+ const el = shared.resolveUnref(elRef);
1718
1760
  if (el && window) {
1719
- const value = (_a = window.getComputedStyle(el).getPropertyValue(prop2)) == null ? void 0 : _a.trim();
1761
+ const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();
1720
1762
  variable.value = value || initialValue;
1721
1763
  }
1722
- }, { immediate: true });
1764
+ }
1765
+ if (observe) {
1766
+ core.useMutationObserver(elRef, updateCssVar, {
1767
+ attributes: true,
1768
+ window
1769
+ });
1770
+ }
1771
+ vueDemi.watch([elRef, () => shared.resolveUnref(prop)], updateCssVar, { immediate: true });
1723
1772
  vueDemi.watch(variable, (val) => {
1724
1773
  var _a;
1725
1774
  if ((_a = elRef.value) == null ? void 0 : _a.style)
@@ -1767,7 +1816,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1767
1816
  return getComputedStyle(document.documentElement).getPropertyValue(position);
1768
1817
  }
1769
1818
 
1770
- const UseScreenSafeArea = /* @__PURE__ */ vueDemi.defineComponent({
1819
+ const UseScreenSafeArea = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
1771
1820
  name: "UseScreenSafeArea",
1772
1821
  props: {
1773
1822
  top: Boolean,
@@ -1852,7 +1901,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1852
1901
 
1853
1902
  function checkOverflowScroll(ele) {
1854
1903
  const style = window.getComputedStyle(ele);
1855
- if (style.overflowX === "scroll" || style.overflowY === "scroll") {
1904
+ if (style.overflowX === "scroll" || style.overflowY === "scroll" || style.overflowX === "auto" && ele.clientHeight < ele.scrollHeight || style.overflowY === "auto" && ele.clientWidth < ele.scrollWidth) {
1856
1905
  return true;
1857
1906
  } else {
1858
1907
  const parent = ele.parentNode;
@@ -1953,7 +2002,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1953
2002
  return a;
1954
2003
  };
1955
2004
  var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
1956
- const UseTimeAgo = /* @__PURE__ */ vueDemi.defineComponent({
2005
+ const UseTimeAgo = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
1957
2006
  name: "UseTimeAgo",
1958
2007
  props: ["time", "updateInterval", "max", "fullDateFormatter", "messages", "showSecond"],
1959
2008
  setup(props, { slots }) {
@@ -1984,7 +2033,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
1984
2033
  return a;
1985
2034
  };
1986
2035
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
1987
- const UseTimestamp = /* @__PURE__ */ vueDemi.defineComponent({
2036
+ const UseTimestamp = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
1988
2037
  name: "UseTimestamp",
1989
2038
  props: ["immediate", "interval", "offset"],
1990
2039
  setup(props, { slots }) {
@@ -2012,7 +2061,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
2012
2061
  }
2013
2062
  return a;
2014
2063
  };
2015
- const UseVirtualList = /* @__PURE__ */ vueDemi.defineComponent({
2064
+ const UseVirtualList = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
2016
2065
  name: "UseVirtualList",
2017
2066
  props: [
2018
2067
  "list",
@@ -2030,7 +2079,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
2030
2079
  }
2031
2080
  });
2032
2081
 
2033
- const UseWindowFocus = /* @__PURE__ */ vueDemi.defineComponent({
2082
+ const UseWindowFocus = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
2034
2083
  name: "UseWindowFocus",
2035
2084
  setup(props, { slots }) {
2036
2085
  const data = vueDemi.reactive({
@@ -2043,7 +2092,7 @@ var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
2043
2092
  }
2044
2093
  });
2045
2094
 
2046
- const UseWindowSize = /* @__PURE__ */ vueDemi.defineComponent({
2095
+ const UseWindowSize = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
2047
2096
  name: "UseWindowSize",
2048
2097
  props: ["initialWidth", "initialHeight"],
2049
2098
  setup(props, { slots }) {