@vueuse/components 11.0.1 → 11.1.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 +92 -76
- package/index.d.cts +131 -131
- package/index.d.mts +131 -131
- package/index.d.ts +131 -131
- package/index.iife.js +93 -77
- package/index.iife.min.js +1 -1
- package/index.mjs +93 -77
- package/package.json +3 -3
package/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var vueDemi = require('vue-demi');
|
|
4
3
|
var core = require('@vueuse/core');
|
|
4
|
+
var vueDemi = require('vue-demi');
|
|
5
5
|
var shared = require('@vueuse/shared');
|
|
6
6
|
|
|
7
7
|
const OnClickOutside = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
|
|
@@ -20,14 +20,14 @@ const OnClickOutside = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
|
|
|
20
20
|
}
|
|
21
21
|
});
|
|
22
22
|
|
|
23
|
+
const defaultWindow = shared.isClient ? window : void 0;
|
|
24
|
+
|
|
23
25
|
function unrefElement(elRef) {
|
|
24
26
|
var _a;
|
|
25
27
|
const plain = shared.toValue(elRef);
|
|
26
28
|
return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;
|
|
27
29
|
}
|
|
28
30
|
|
|
29
|
-
const defaultWindow = shared.isClient ? window : void 0;
|
|
30
|
-
|
|
31
31
|
function useEventListener(...args) {
|
|
32
32
|
let target;
|
|
33
33
|
let events;
|
|
@@ -89,7 +89,7 @@ function onClickOutside(target, handler, options = {}) {
|
|
|
89
89
|
}
|
|
90
90
|
let shouldListen = true;
|
|
91
91
|
const shouldIgnore = (event) => {
|
|
92
|
-
return ignore.some((target2) => {
|
|
92
|
+
return shared.toValue(ignore).some((target2) => {
|
|
93
93
|
if (typeof target2 === "string") {
|
|
94
94
|
return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));
|
|
95
95
|
} else {
|
|
@@ -110,8 +110,17 @@ function onClickOutside(target, handler, options = {}) {
|
|
|
110
110
|
}
|
|
111
111
|
handler(event);
|
|
112
112
|
};
|
|
113
|
+
let isProcessingClick = false;
|
|
113
114
|
const cleanup = [
|
|
114
|
-
useEventListener(window, "click",
|
|
115
|
+
useEventListener(window, "click", (event) => {
|
|
116
|
+
if (!isProcessingClick) {
|
|
117
|
+
isProcessingClick = true;
|
|
118
|
+
setTimeout(() => {
|
|
119
|
+
isProcessingClick = false;
|
|
120
|
+
}, 0);
|
|
121
|
+
listener(event);
|
|
122
|
+
}
|
|
123
|
+
}, { passive: true, capture }),
|
|
115
124
|
useEventListener(window, "pointerdown", (e) => {
|
|
116
125
|
const el = unrefElement(target);
|
|
117
126
|
shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el));
|
|
@@ -389,6 +398,64 @@ function getSSRHandler(key, fallback) {
|
|
|
389
398
|
return handlers[key] || fallback;
|
|
390
399
|
}
|
|
391
400
|
|
|
401
|
+
function useMounted() {
|
|
402
|
+
const isMounted = vueDemi.ref(false);
|
|
403
|
+
const instance = vueDemi.getCurrentInstance();
|
|
404
|
+
if (instance) {
|
|
405
|
+
vueDemi.onMounted(() => {
|
|
406
|
+
isMounted.value = true;
|
|
407
|
+
}, vueDemi.isVue2 ? void 0 : instance);
|
|
408
|
+
}
|
|
409
|
+
return isMounted;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
function useSupported(callback) {
|
|
413
|
+
const isMounted = useMounted();
|
|
414
|
+
return vueDemi.computed(() => {
|
|
415
|
+
isMounted.value;
|
|
416
|
+
return Boolean(callback());
|
|
417
|
+
});
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
function useMediaQuery(query, options = {}) {
|
|
421
|
+
const { window = defaultWindow } = options;
|
|
422
|
+
const isSupported = useSupported(() => window && "matchMedia" in window && typeof window.matchMedia === "function");
|
|
423
|
+
let mediaQuery;
|
|
424
|
+
const matches = vueDemi.ref(false);
|
|
425
|
+
const handler = (event) => {
|
|
426
|
+
matches.value = event.matches;
|
|
427
|
+
};
|
|
428
|
+
const cleanup = () => {
|
|
429
|
+
if (!mediaQuery)
|
|
430
|
+
return;
|
|
431
|
+
if ("removeEventListener" in mediaQuery)
|
|
432
|
+
mediaQuery.removeEventListener("change", handler);
|
|
433
|
+
else
|
|
434
|
+
mediaQuery.removeListener(handler);
|
|
435
|
+
};
|
|
436
|
+
const stopWatch = vueDemi.watchEffect(() => {
|
|
437
|
+
if (!isSupported.value)
|
|
438
|
+
return;
|
|
439
|
+
cleanup();
|
|
440
|
+
mediaQuery = window.matchMedia(shared.toValue(query));
|
|
441
|
+
if ("addEventListener" in mediaQuery)
|
|
442
|
+
mediaQuery.addEventListener("change", handler);
|
|
443
|
+
else
|
|
444
|
+
mediaQuery.addListener(handler);
|
|
445
|
+
matches.value = mediaQuery.matches;
|
|
446
|
+
});
|
|
447
|
+
shared.tryOnScopeDispose(() => {
|
|
448
|
+
stopWatch();
|
|
449
|
+
cleanup();
|
|
450
|
+
mediaQuery = void 0;
|
|
451
|
+
});
|
|
452
|
+
return matches;
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
function usePreferredDark(options) {
|
|
456
|
+
return useMediaQuery("(prefers-color-scheme: dark)", options);
|
|
457
|
+
}
|
|
458
|
+
|
|
392
459
|
function guessSerializerType(rawInit) {
|
|
393
460
|
return rawInit == null ? "any" : rawInit instanceof Set ? "set" : rawInit instanceof Map ? "map" : rawInit instanceof Date ? "date" : typeof rawInit === "boolean" ? "boolean" : typeof rawInit === "string" ? "string" : typeof rawInit === "object" ? "object" : !Number.isNaN(rawInit) ? "number" : "any";
|
|
394
461
|
}
|
|
@@ -554,64 +621,6 @@ function useStorage(key, defaults, storage, options = {}) {
|
|
|
554
621
|
return data;
|
|
555
622
|
}
|
|
556
623
|
|
|
557
|
-
function useMounted() {
|
|
558
|
-
const isMounted = vueDemi.ref(false);
|
|
559
|
-
const instance = vueDemi.getCurrentInstance();
|
|
560
|
-
if (instance) {
|
|
561
|
-
vueDemi.onMounted(() => {
|
|
562
|
-
isMounted.value = true;
|
|
563
|
-
}, vueDemi.isVue2 ? void 0 : instance);
|
|
564
|
-
}
|
|
565
|
-
return isMounted;
|
|
566
|
-
}
|
|
567
|
-
|
|
568
|
-
function useSupported(callback) {
|
|
569
|
-
const isMounted = useMounted();
|
|
570
|
-
return vueDemi.computed(() => {
|
|
571
|
-
isMounted.value;
|
|
572
|
-
return Boolean(callback());
|
|
573
|
-
});
|
|
574
|
-
}
|
|
575
|
-
|
|
576
|
-
function useMediaQuery(query, options = {}) {
|
|
577
|
-
const { window = defaultWindow } = options;
|
|
578
|
-
const isSupported = useSupported(() => window && "matchMedia" in window && typeof window.matchMedia === "function");
|
|
579
|
-
let mediaQuery;
|
|
580
|
-
const matches = vueDemi.ref(false);
|
|
581
|
-
const handler = (event) => {
|
|
582
|
-
matches.value = event.matches;
|
|
583
|
-
};
|
|
584
|
-
const cleanup = () => {
|
|
585
|
-
if (!mediaQuery)
|
|
586
|
-
return;
|
|
587
|
-
if ("removeEventListener" in mediaQuery)
|
|
588
|
-
mediaQuery.removeEventListener("change", handler);
|
|
589
|
-
else
|
|
590
|
-
mediaQuery.removeListener(handler);
|
|
591
|
-
};
|
|
592
|
-
const stopWatch = vueDemi.watchEffect(() => {
|
|
593
|
-
if (!isSupported.value)
|
|
594
|
-
return;
|
|
595
|
-
cleanup();
|
|
596
|
-
mediaQuery = window.matchMedia(shared.toValue(query));
|
|
597
|
-
if ("addEventListener" in mediaQuery)
|
|
598
|
-
mediaQuery.addEventListener("change", handler);
|
|
599
|
-
else
|
|
600
|
-
mediaQuery.addListener(handler);
|
|
601
|
-
matches.value = mediaQuery.matches;
|
|
602
|
-
});
|
|
603
|
-
shared.tryOnScopeDispose(() => {
|
|
604
|
-
stopWatch();
|
|
605
|
-
cleanup();
|
|
606
|
-
mediaQuery = void 0;
|
|
607
|
-
});
|
|
608
|
-
return matches;
|
|
609
|
-
}
|
|
610
|
-
|
|
611
|
-
function usePreferredDark(options) {
|
|
612
|
-
return useMediaQuery("(prefers-color-scheme: dark)", options);
|
|
613
|
-
}
|
|
614
|
-
|
|
615
624
|
const CSS_DISABLE_TRANS = "*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";
|
|
616
625
|
function useColorMode(options = {}) {
|
|
617
626
|
const {
|
|
@@ -816,7 +825,8 @@ const UseDraggable = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
|
|
|
816
825
|
"onMove",
|
|
817
826
|
"onEnd",
|
|
818
827
|
"disabled",
|
|
819
|
-
"buttons"
|
|
828
|
+
"buttons",
|
|
829
|
+
"containerElement"
|
|
820
830
|
],
|
|
821
831
|
setup(props, { slots }) {
|
|
822
832
|
const target = vueDemi.ref();
|
|
@@ -824,6 +834,10 @@ const UseDraggable = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
|
|
|
824
834
|
var _a;
|
|
825
835
|
return (_a = props.handle) != null ? _a : target.value;
|
|
826
836
|
});
|
|
837
|
+
const containerElement = vueDemi.computed(() => {
|
|
838
|
+
var _a;
|
|
839
|
+
return (_a = props.containerElement) != null ? _a : void 0;
|
|
840
|
+
});
|
|
827
841
|
const disabled = vueDemi.computed(() => !!props.disabled);
|
|
828
842
|
const storageValue = props.storageKey && core.useStorage(
|
|
829
843
|
props.storageKey,
|
|
@@ -844,7 +858,8 @@ const UseDraggable = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
|
|
|
844
858
|
handle,
|
|
845
859
|
initialValue,
|
|
846
860
|
onEnd,
|
|
847
|
-
disabled
|
|
861
|
+
disabled,
|
|
862
|
+
containerElement
|
|
848
863
|
}));
|
|
849
864
|
return () => {
|
|
850
865
|
if (slots.default)
|
|
@@ -1314,6 +1329,14 @@ const UseImage = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
|
|
|
1314
1329
|
}
|
|
1315
1330
|
});
|
|
1316
1331
|
|
|
1332
|
+
function resolveElement(el) {
|
|
1333
|
+
if (typeof Window !== "undefined" && el instanceof Window)
|
|
1334
|
+
return el.document.documentElement;
|
|
1335
|
+
if (typeof Document !== "undefined" && el instanceof Document)
|
|
1336
|
+
return el.documentElement;
|
|
1337
|
+
return el;
|
|
1338
|
+
}
|
|
1339
|
+
|
|
1317
1340
|
const ARRIVED_STATE_THRESHOLD_PIXELS = 1;
|
|
1318
1341
|
function useScroll(element, options = {}) {
|
|
1319
1342
|
const {
|
|
@@ -1478,14 +1501,6 @@ function useScroll(element, options = {}) {
|
|
|
1478
1501
|
};
|
|
1479
1502
|
}
|
|
1480
1503
|
|
|
1481
|
-
function resolveElement(el) {
|
|
1482
|
-
if (typeof Window !== "undefined" && el instanceof Window)
|
|
1483
|
-
return el.document.documentElement;
|
|
1484
|
-
if (typeof Document !== "undefined" && el instanceof Document)
|
|
1485
|
-
return el.documentElement;
|
|
1486
|
-
return el;
|
|
1487
|
-
}
|
|
1488
|
-
|
|
1489
1504
|
function useInfiniteScroll(element, onLoadMore, options = {}) {
|
|
1490
1505
|
var _a;
|
|
1491
1506
|
const {
|
|
@@ -1527,11 +1542,12 @@ function useInfiniteScroll(element, onLoadMore, options = {}) {
|
|
|
1527
1542
|
}
|
|
1528
1543
|
}
|
|
1529
1544
|
}
|
|
1530
|
-
vueDemi.watch(
|
|
1545
|
+
const stop = vueDemi.watch(
|
|
1531
1546
|
() => [state.arrivedState[direction], isElementVisible.value],
|
|
1532
1547
|
checkAndLoad,
|
|
1533
1548
|
{ immediate: true }
|
|
1534
1549
|
);
|
|
1550
|
+
shared.tryOnUnmounted(stop);
|
|
1535
1551
|
return {
|
|
1536
1552
|
isLoading,
|
|
1537
1553
|
reset() {
|
|
@@ -1874,8 +1890,8 @@ function useCssVar(prop, target, options = {}) {
|
|
|
1874
1890
|
vueDemi.watch(
|
|
1875
1891
|
[elRef, () => shared.toValue(prop)],
|
|
1876
1892
|
(_, old) => {
|
|
1877
|
-
if (old[0] && old[1]
|
|
1878
|
-
|
|
1893
|
+
if (old[0] && old[1])
|
|
1894
|
+
old[0].style.removeProperty(old[1]);
|
|
1879
1895
|
updateCssVar();
|
|
1880
1896
|
},
|
|
1881
1897
|
{ immediate: true }
|