@vueuse/components 7.4.0 → 7.5.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
@@ -123,6 +123,13 @@ const UseBrowserLocation = vueDemi.defineComponent({
123
123
  }
124
124
  });
125
125
 
126
+ const globalKey = "__vueuse_ssr_handlers__";
127
+ globalThis[globalKey] = globalThis[globalKey] || {};
128
+ const handlers = globalThis[globalKey];
129
+ function getSSRHandler(key, fallback) {
130
+ return handlers[key] || fallback;
131
+ }
132
+
126
133
  function guessSerializerType(rawInit) {
127
134
  return rawInit == null ? "any" : rawInit instanceof Set ? "set" : rawInit instanceof Map ? "map" : typeof rawInit === "boolean" ? "boolean" : typeof rawInit === "string" ? "string" : typeof rawInit === "object" ? "object" : Array.isArray(rawInit) ? "object" : !Number.isNaN(rawInit) ? "number" : "any";
128
135
  }
@@ -157,8 +164,11 @@ const StorageSerializers = {
157
164
  write: (v) => JSON.stringify(Array.from(v.entries()))
158
165
  }
159
166
  };
160
- function useStorage(key, initialValue, storage = ((_a) => (_a = defaultWindow) == null ? void 0 : _a.localStorage)(), options = {}) {
161
- var _a2;
167
+ function useStorage(key, initialValue, storage = getSSRHandler("getDefaultStorage", () => {
168
+ var _a;
169
+ return (_a = defaultWindow) == null ? void 0 : _a.localStorage;
170
+ })(), options = {}) {
171
+ var _a;
162
172
  const {
163
173
  flush = "pre",
164
174
  deep = true,
@@ -174,7 +184,7 @@ function useStorage(key, initialValue, storage = ((_a) => (_a = defaultWindow) =
174
184
  const rawInit = vueDemi.unref(initialValue);
175
185
  const type = guessSerializerType(rawInit);
176
186
  const data = (shallow ? vueDemi.shallowRef : vueDemi.ref)(initialValue);
177
- const serializer = (_a2 = options.serializer) != null ? _a2 : StorageSerializers[type];
187
+ const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];
178
188
  function read(event) {
179
189
  if (!storage || event && event.key !== key)
180
190
  return;
@@ -184,6 +194,8 @@ function useStorage(key, initialValue, storage = ((_a) => (_a = defaultWindow) =
184
194
  data.value = rawInit;
185
195
  if (writeDefaults && rawInit !== null)
186
196
  storage.setItem(key, serializer.write(rawInit));
197
+ } else if (typeof rawValue !== "string") {
198
+ data.value = rawValue;
187
199
  } else {
188
200
  data.value = serializer.read(rawValue);
189
201
  }
@@ -263,12 +275,14 @@ var __spreadValues$7 = (a, b) => {
263
275
  return a;
264
276
  };
265
277
  function useColorMode(options = {}) {
266
- var _a;
267
278
  const {
268
279
  selector = "html",
269
280
  attribute = "class",
270
281
  window = defaultWindow,
271
- storage = (_a = defaultWindow) == null ? void 0 : _a.localStorage,
282
+ storage = getSSRHandler("getDefaultStorage", () => {
283
+ var _a;
284
+ return (_a = defaultWindow) == null ? void 0 : _a.localStorage;
285
+ })(),
272
286
  storageKey = "vueuse-color-scheme",
273
287
  listenToStorageChanges = true,
274
288
  storageRef
@@ -289,12 +303,12 @@ function useColorMode(options = {}) {
289
303
  store.value = v;
290
304
  }
291
305
  });
292
- function defaultOnChanged(value) {
293
- const el = window == null ? void 0 : window.document.querySelector(selector);
306
+ const updateHTMLAttrs = getSSRHandler("updateHTMLAttrs", (selector2, attribute2, value) => {
307
+ const el = window == null ? void 0 : window.document.querySelector(selector2);
294
308
  if (!el)
295
309
  return;
296
- if (attribute === "class") {
297
- const current = (modes[value] || "").split(/\s/g);
310
+ if (attribute2 === "class") {
311
+ const current = value.split(/\s/g);
298
312
  Object.values(modes).flatMap((i) => (i || "").split(/\s/g)).filter(Boolean).forEach((v) => {
299
313
  if (current.includes(v))
300
314
  el.classList.add(v);
@@ -302,8 +316,12 @@ function useColorMode(options = {}) {
302
316
  el.classList.remove(v);
303
317
  });
304
318
  } else {
305
- el.setAttribute(attribute, value);
319
+ el.setAttribute(attribute2, value);
306
320
  }
321
+ });
322
+ function defaultOnChanged(mode) {
323
+ var _a;
324
+ updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);
307
325
  }
308
326
  function onChanged(mode) {
309
327
  if (options.onChanged)
@@ -311,7 +329,7 @@ function useColorMode(options = {}) {
311
329
  else
312
330
  defaultOnChanged(mode);
313
331
  }
314
- vueDemi.watch(state, onChanged, { flush: "post" });
332
+ vueDemi.watch(state, onChanged, { flush: "post", immediate: true });
315
333
  shared.tryOnMounted(() => onChanged(state.value));
316
334
  return state;
317
335
  }
@@ -743,6 +761,24 @@ const UsePreferredLanguages = vueDemi.defineComponent({
743
761
  }
744
762
  });
745
763
 
764
+ function useCssVar(prop, target, { window = defaultWindow } = {}) {
765
+ const variable = vueDemi.ref("");
766
+ const elRef = vueDemi.computed(() => {
767
+ var _a;
768
+ return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);
769
+ });
770
+ vueDemi.watch(elRef, (el) => {
771
+ if (el && window)
772
+ variable.value = window.getComputedStyle(el).getPropertyValue(prop);
773
+ }, { immediate: true });
774
+ vueDemi.watch(variable, (val) => {
775
+ var _a;
776
+ if ((_a = elRef.value) == null ? void 0 : _a.style)
777
+ elRef.value.style.setProperty(prop, val);
778
+ });
779
+ return variable;
780
+ }
781
+
746
782
  const topVarName = "--vueuse-safe-area-top";
747
783
  const rightVarName = "--vueuse-safe-area-right";
748
784
  const bottomVarName = "--vueuse-safe-area-bottom";
@@ -752,17 +788,17 @@ function useScreenSafeArea() {
752
788
  const right = vueDemi.ref("");
753
789
  const bottom = vueDemi.ref("");
754
790
  const left = vueDemi.ref("");
755
- if (core.isClient) {
756
- const topCssVar = core.useCssVar(topVarName);
757
- const rightCssVar = core.useCssVar(rightVarName);
758
- const bottomCssVar = core.useCssVar(bottomVarName);
759
- const leftCssVar = core.useCssVar(leftVarName);
791
+ if (shared.isClient) {
792
+ const topCssVar = useCssVar(topVarName);
793
+ const rightCssVar = useCssVar(rightVarName);
794
+ const bottomCssVar = useCssVar(bottomVarName);
795
+ const leftCssVar = useCssVar(leftVarName);
760
796
  topCssVar.value = "env(safe-area-inset-top, 0px)";
761
797
  rightCssVar.value = "env(safe-area-inset-right, 0px)";
762
798
  bottomCssVar.value = "env(safe-area-inset-bottom, 0px)";
763
799
  leftCssVar.value = "env(safe-area-inset-left, 0px)";
764
800
  update();
765
- core.useEventListener("resize", core.useDebounceFn(update));
801
+ useEventListener("resize", shared.useDebounceFn(update));
766
802
  }
767
803
  function update() {
768
804
  top.value = getValue(topVarName);
package/index.d.ts CHANGED
@@ -35,15 +35,16 @@ declare const UseBrowserLocation: vue_demi.DefineComponent<{}, () => vue_demi.VN
35
35
  [key: string]: any;
36
36
  }>[] | undefined, {}, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, vue_demi.EmitsOptions, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<{} & {} & {}>, {}>;
37
37
 
38
- declare type Serializer<T> = {
39
- read(raw: string): T;
40
- write(value: T): string;
41
- };
42
38
  interface StorageLike {
43
39
  getItem(key: string): string | null;
44
40
  setItem(key: string, value: string): void;
45
41
  removeItem(key: string): void;
46
42
  }
43
+
44
+ declare type Serializer<T> = {
45
+ read(raw: string): T;
46
+ write(value: T): string;
47
+ };
47
48
  interface StorageOptions<T> extends ConfigurableEventFilter, ConfigurableWindow, ConfigurableFlush {
48
49
  /**
49
50
  * Watch for deep changes
package/index.iife.js CHANGED
@@ -179,6 +179,13 @@
179
179
  }
180
180
  });
181
181
 
182
+ const globalKey = "__vueuse_ssr_handlers__";
183
+ globalThis[globalKey] = globalThis[globalKey] || {};
184
+ const handlers = globalThis[globalKey];
185
+ function getSSRHandler(key, fallback) {
186
+ return handlers[key] || fallback;
187
+ }
188
+
182
189
  function guessSerializerType(rawInit) {
183
190
  return rawInit == null ? "any" : rawInit instanceof Set ? "set" : rawInit instanceof Map ? "map" : typeof rawInit === "boolean" ? "boolean" : typeof rawInit === "string" ? "string" : typeof rawInit === "object" ? "object" : Array.isArray(rawInit) ? "object" : !Number.isNaN(rawInit) ? "number" : "any";
184
191
  }
@@ -213,8 +220,11 @@
213
220
  write: (v) => JSON.stringify(Array.from(v.entries()))
214
221
  }
215
222
  };
216
- function useStorage(key, initialValue, storage = ((_a) => (_a = defaultWindow) == null ? void 0 : _a.localStorage)(), options = {}) {
217
- var _a2;
223
+ function useStorage(key, initialValue, storage = getSSRHandler("getDefaultStorage", () => {
224
+ var _a;
225
+ return (_a = defaultWindow) == null ? void 0 : _a.localStorage;
226
+ })(), options = {}) {
227
+ var _a;
218
228
  const {
219
229
  flush = "pre",
220
230
  deep = true,
@@ -230,7 +240,7 @@
230
240
  const rawInit = vueDemi.unref(initialValue);
231
241
  const type = guessSerializerType(rawInit);
232
242
  const data = (shallow ? vueDemi.shallowRef : vueDemi.ref)(initialValue);
233
- const serializer = (_a2 = options.serializer) != null ? _a2 : StorageSerializers[type];
243
+ const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];
234
244
  function read(event) {
235
245
  if (!storage || event && event.key !== key)
236
246
  return;
@@ -240,6 +250,8 @@
240
250
  data.value = rawInit;
241
251
  if (writeDefaults && rawInit !== null)
242
252
  storage.setItem(key, serializer.write(rawInit));
253
+ } else if (typeof rawValue !== "string") {
254
+ data.value = rawValue;
243
255
  } else {
244
256
  data.value = serializer.read(rawValue);
245
257
  }
@@ -319,12 +331,14 @@
319
331
  return a;
320
332
  };
321
333
  function useColorMode(options = {}) {
322
- var _a;
323
334
  const {
324
335
  selector = "html",
325
336
  attribute = "class",
326
337
  window = defaultWindow,
327
- storage = (_a = defaultWindow) == null ? void 0 : _a.localStorage,
338
+ storage = getSSRHandler("getDefaultStorage", () => {
339
+ var _a;
340
+ return (_a = defaultWindow) == null ? void 0 : _a.localStorage;
341
+ })(),
328
342
  storageKey = "vueuse-color-scheme",
329
343
  listenToStorageChanges = true,
330
344
  storageRef
@@ -345,12 +359,12 @@
345
359
  store.value = v;
346
360
  }
347
361
  });
348
- function defaultOnChanged(value) {
349
- const el = window == null ? void 0 : window.document.querySelector(selector);
362
+ const updateHTMLAttrs = getSSRHandler("updateHTMLAttrs", (selector2, attribute2, value) => {
363
+ const el = window == null ? void 0 : window.document.querySelector(selector2);
350
364
  if (!el)
351
365
  return;
352
- if (attribute === "class") {
353
- const current = (modes[value] || "").split(/\s/g);
366
+ if (attribute2 === "class") {
367
+ const current = value.split(/\s/g);
354
368
  Object.values(modes).flatMap((i) => (i || "").split(/\s/g)).filter(Boolean).forEach((v) => {
355
369
  if (current.includes(v))
356
370
  el.classList.add(v);
@@ -358,8 +372,12 @@
358
372
  el.classList.remove(v);
359
373
  });
360
374
  } else {
361
- el.setAttribute(attribute, value);
375
+ el.setAttribute(attribute2, value);
362
376
  }
377
+ });
378
+ function defaultOnChanged(mode) {
379
+ var _a;
380
+ updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);
363
381
  }
364
382
  function onChanged(mode) {
365
383
  if (options.onChanged)
@@ -367,7 +385,7 @@
367
385
  else
368
386
  defaultOnChanged(mode);
369
387
  }
370
- vueDemi.watch(state, onChanged, { flush: "post" });
388
+ vueDemi.watch(state, onChanged, { flush: "post", immediate: true });
371
389
  shared.tryOnMounted(() => onChanged(state.value));
372
390
  return state;
373
391
  }
@@ -799,6 +817,24 @@
799
817
  }
800
818
  });
801
819
 
820
+ function useCssVar(prop, target, { window = defaultWindow } = {}) {
821
+ const variable = vueDemi.ref("");
822
+ const elRef = vueDemi.computed(() => {
823
+ var _a;
824
+ return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);
825
+ });
826
+ vueDemi.watch(elRef, (el) => {
827
+ if (el && window)
828
+ variable.value = window.getComputedStyle(el).getPropertyValue(prop);
829
+ }, { immediate: true });
830
+ vueDemi.watch(variable, (val) => {
831
+ var _a;
832
+ if ((_a = elRef.value) == null ? void 0 : _a.style)
833
+ elRef.value.style.setProperty(prop, val);
834
+ });
835
+ return variable;
836
+ }
837
+
802
838
  const topVarName = "--vueuse-safe-area-top";
803
839
  const rightVarName = "--vueuse-safe-area-right";
804
840
  const bottomVarName = "--vueuse-safe-area-bottom";
@@ -808,17 +844,17 @@
808
844
  const right = vueDemi.ref("");
809
845
  const bottom = vueDemi.ref("");
810
846
  const left = vueDemi.ref("");
811
- if (core.isClient) {
812
- const topCssVar = core.useCssVar(topVarName);
813
- const rightCssVar = core.useCssVar(rightVarName);
814
- const bottomCssVar = core.useCssVar(bottomVarName);
815
- const leftCssVar = core.useCssVar(leftVarName);
847
+ if (shared.isClient) {
848
+ const topCssVar = useCssVar(topVarName);
849
+ const rightCssVar = useCssVar(rightVarName);
850
+ const bottomCssVar = useCssVar(bottomVarName);
851
+ const leftCssVar = useCssVar(leftVarName);
816
852
  topCssVar.value = "env(safe-area-inset-top, 0px)";
817
853
  rightCssVar.value = "env(safe-area-inset-right, 0px)";
818
854
  bottomCssVar.value = "env(safe-area-inset-bottom, 0px)";
819
855
  leftCssVar.value = "env(safe-area-inset-left, 0px)";
820
856
  update();
821
- core.useEventListener("resize", core.useDebounceFn(update));
857
+ useEventListener("resize", shared.useDebounceFn(update));
822
858
  }
823
859
  function update() {
824
860
  top.value = getValue(topVarName);
package/index.iife.min.js CHANGED
@@ -1 +1 @@
1
- (function(o){if(!o.VueDemi){var n={},s=o.Vue;if(s)if(s.version.slice(0,2)==="2."){var f=o.VueCompositionAPI;if(f){for(var h in f)n[h]=f[h];n.isVue2=!0,n.isVue3=!1,n.install=function(){},n.Vue=s,n.Vue2=s,n.version=s.version}else console.error("[vue-demi] no VueCompositionAPI instance found, please be sure to import `@vue/composition-api` before `vue-demi`.")}else if(s.version.slice(0,2)==="3."){for(var h in s)n[h]=s[h];n.isVue2=!1,n.isVue3=!0,n.install=function(){},n.Vue=s,n.Vue2=void 0,n.version=s.version,n.set=function(p,c,y){return Array.isArray(p)?(p.length=Math.max(p.length,c),p.splice(c,1,y),y):(p[c]=y,y)},n.del=function(p,c){if(Array.isArray(p)){p.splice(c,1);return}delete p[c]}}else console.error("[vue-demi] Vue version "+s.version+" is unsupported.");else console.error("[vue-demi] no Vue instance found, please be sure to import `vue` before `vue-demi`.");o.VueDemi=n}})(window),function(o,n,s,f){"use strict";const h=n.defineComponent({name:"OnClickOutside",props:["as"],emits:["trigger"],setup(t,{slots:e,emit:r}){const a=n.ref();return s.onClickOutside(a,i=>{r("trigger",i)}),()=>{if(e.default)return n.h(t.as||"div",{ref:a},e.default())}}});function p(t){var e;const r=n.unref(t);return(e=r==null?void 0:r.$el)!=null?e:r}const c=f.isClient?window:void 0;function y(...t){let e,r,a,i;if(f.isString(t[0])?([r,a,i]=t,e=c):[e,r,a,i]=t,!e)return f.noop;let u=f.noop;const d=n.watch(()=>n.unref(e),l=>{u(),!!l&&(l.addEventListener(r,a,i),u=()=>{l.removeEventListener(r,a,i),u=f.noop})},{immediate:!0,flush:"post"}),v=()=>{d(),u()};return f.tryOnScopeDispose(v),v}function Y(t,e,r={}){const{window:a=c}=r;if(!a)return;const i=n.ref(!0),d=[y(a,"click",l=>{const m=p(t);!m||m===l.target||l.composedPath().includes(m)||!i.value||e(l)},{passive:!0,capture:!0}),y(a,"pointerdown",l=>{const m=p(t);i.value=!!m&&!l.composedPath().includes(m)},{passive:!0})];return()=>d.forEach(l=>l())}const Z=(t,e)=>{Y(t,e.value)},x=n.defineComponent({name:"UseActiveElement",setup(t,{slots:e}){const r=n.reactive({element:s.useActiveElement()});return()=>{if(e.default)return e.default(r)}}}),D=n.defineComponent({name:"UseBattery",setup(t,{slots:e}){const r=n.reactive(s.useBattery(t));return()=>{if(e.default)return e.default(r)}}}),ee=n.defineComponent({name:"UseBrowserLocation",setup(t,{slots:e}){const r=n.reactive(s.useBrowserLocation());return()=>{if(e.default)return e.default(r)}}});function te(t){return t==null?"any":t instanceof Set?"set":t instanceof Map?"map":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.entries()))}};function ne(t,e,r=(i=>(i=c)==null?void 0:i.localStorage)(),a={}){var i;const{flush:u="pre",deep:d=!0,listenToStorageChanges:v=!0,writeDefaults:l=!0,shallow:m,window:S=c,eventFilter:$,onError:b=g=>{console.error(g)}}=a,U=n.unref(e),V=te(U),P=(m?n.shallowRef:n.ref)(e),_=(i=a.serializer)!=null?i:re[V];function w(g){if(!(!r||g&&g.key!==t))try{const O=g?g.newValue:r.getItem(t);O==null?(P.value=U,l&&U!==null&&r.setItem(t,_.write(U))):P.value=_.read(O)}catch(O){b(O)}}return w(),S&&v&&y(S,"storage",g=>setTimeout(()=>w(g),0)),r&&f.watchWithFilter(P,()=>{try{P.value==null?r.removeItem(t):r.setItem(t,_.write(P.value))}catch(g){b(g)}},{flush:u,deep:d,eventFilter:$}),P}function ae(t,e={}){const{window:r=c}=e;let a;const i=n.ref(!1),u=()=>{!r||(a||(a=r.matchMedia(t)),i.value=a.matches)};return f.tryOnMounted(()=>{u(),!!a&&("addEventListener"in a?a.addEventListener("change",u):a.addListener(u),f.tryOnScopeDispose(()=>{"removeEventListener"in u?a.removeEventListener("change",u):a.removeListener(u)}))}),i}function se(t){return ae("(prefers-color-scheme: dark)",t)}var oe=Object.defineProperty,E=Object.getOwnPropertySymbols,ie=Object.prototype.hasOwnProperty,ue=Object.prototype.propertyIsEnumerable,L=(t,e,r)=>e in t?oe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,le=(t,e)=>{for(var r in e||(e={}))ie.call(e,r)&&L(t,r,e[r]);if(E)for(var r of E(e))ue.call(e,r)&&L(t,r,e[r]);return t};function fe(t={}){var e;const{selector:r="html",attribute:a="class",window:i=c,storage:u=(e=c)==null?void 0:e.localStorage,storageKey:d="vueuse-color-scheme",listenToStorageChanges:v=!0,storageRef:l}=t,m=le({auto:"",light:"light",dark:"dark"},t.modes||{}),S=se({window:i}),$=n.computed(()=>S.value?"dark":"light"),b=l||(d==null?n.ref("auto"):ne(d,"auto",u,{window:i,listenToStorageChanges:v})),U=n.computed({get(){return b.value==="auto"?$.value:b.value},set(_){b.value=_}});function V(_){const w=i==null?void 0:i.document.querySelector(r);if(!!w)if(a==="class"){const g=(m[_]||"").split(/\s/g);Object.values(m).flatMap(O=>(O||"").split(/\s/g)).filter(Boolean).forEach(O=>{g.includes(O)?w.classList.add(O):w.classList.remove(O)})}else w.setAttribute(a,_)}function P(_){t.onChanged?t.onChanged(_,V):V(_)}return n.watch(U,P,{flush:"post"}),f.tryOnMounted(()=>P(U.value)),U}const ce=n.defineComponent({name:"UseColorMode",props:["selector","attribute","modes","onChanged","storageKey","storage"],setup(t,{slots:e}){const r=fe(t),a=n.reactive({mode:r});return()=>{if(e.default)return e.default(a)}}}),de=n.defineComponent({name:"UseDark",props:["selector","attribute","valueDark","valueLight","onChanged","storageKey","storage"],setup(t,{slots:e}){const r=s.useDark(t),a=n.reactive({isDark:r,toggleDark:f.useToggle(r)});return()=>{if(e.default)return e.default(a)}}}),pe=n.defineComponent({name:"UseDeviceMotion",setup(t,{slots:e}){const r=n.reactive(s.useDeviceMotion());return()=>{if(e.default)return e.default(r)}}}),ge=n.defineComponent({name:"UseDeviceOrientation",setup(t,{slots:e}){const r=n.reactive(s.useDeviceOrientation());return()=>{if(e.default)return e.default(r)}}}),me=n.defineComponent({name:"UseDevicePixelRatio",setup(t,{slots:e}){const r=n.reactive({pixelRatio:s.useDevicePixelRatio()});return()=>{if(e.default)return e.default(r)}}}),_e=n.defineComponent({name:"UseDevicesList",props:["onUpdated","requestPermissions","constraints"],setup(t,{slots:e}){const r=n.reactive(s.useDevicesList(t));return()=>{if(e.default)return e.default(r)}}}),Oe=n.defineComponent({name:"UseDocumentVisibility",setup(t,{slots:e}){const r=n.reactive({visibility:s.useDocumentVisibility()});return()=>{if(e.default)return e.default(r)}}});var ve=Object.defineProperty,Pe=Object.defineProperties,ye=Object.getOwnPropertyDescriptors,j=Object.getOwnPropertySymbols,Ue=Object.prototype.hasOwnProperty,he=Object.prototype.propertyIsEnumerable,M=(t,e,r)=>e in t?ve(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,we=(t,e)=>{for(var r in e||(e={}))Ue.call(e,r)&&M(t,r,e[r]);if(j)for(var r of j(e))he.call(e,r)&&M(t,r,e[r]);return t},be=(t,e)=>Pe(t,ye(e));const Ce=n.defineComponent({name:"UseDraggable",props:["storageKey","initialValue","exact","preventDefault","pointerTypes","as"],setup(t,{slots:e}){const r=n.ref(),a=t.storageKey?s.useStorage(t.storageKey,n.unref(t.initialValue)||{x:0,y:0},s.isClient?t.storageType==="session"?sessionStorage:localStorage:void 0):t.initialValue||{x:0,y:0},i=n.reactive(s.useDraggable(r,be(we({},t),{initialValue:a})));return()=>{if(e.default)return n.h(t.as||"div",{ref:r,style:`touch-action:none;${i.style}`},e.default(i))}}}),Se=n.defineComponent({name:"UseElementBounding",props:["box","as"],setup(t,{slots:e}){const r=n.ref(),a=n.reactive(s.useElementBounding(r));return()=>{if(e.default)return n.h(t.as||"div",{ref:r},e.default(a))}}}),Ve=n.defineComponent({name:"UseElementSize",props:["width","height","box"],setup(t,{slots:e}){const r=n.ref(),a=n.reactive(s.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(a))}}}),$e=n.defineComponent({name:"UseElementVisibility",props:["as"],setup(t,{slots:e}){const r=n.ref(),a=n.reactive({isVisible:s.useElementVisibility(r)});return()=>{if(e.default)return n.h(t.as||"div",{ref:r},e.default(a))}}}),Ee=n.defineComponent({name:"UseEyeDropper",props:{sRGBHex:String},setup(t,{slots:e}){const r=n.reactive(s.useEyeDropper());return()=>{if(e.default)return e.default(r)}}}),Le=n.defineComponent({name:"UseFullscreen",props:["as"],setup(t,{slots:e}){const r=n.ref(),a=n.reactive(s.useFullscreen(r));return()=>{if(e.default)return n.h(t.as||"div",{ref:r},e.default(a))}}}),je=n.defineComponent({name:"UseGeolocation",props:["enableHighAccuracy","maximumAge","timeout","navigator"],setup(t,{slots:e}){const r=n.reactive(s.useGeolocation(t));return()=>{if(e.default)return e.default(r)}}}),Me=n.defineComponent({name:"UseIdle",props:["timeout","events","listenForVisibilityChange","initialState"],setup(t,{slots:e}){const r=n.reactive(s.useIdle(t.timeout,t));return()=>{if(e.default)return e.default(r)}}}),Ne=n.defineComponent({name:"UseMouse",props:["touch","resetOnTouchEnds","initialValue"],setup(t,{slots:e}){const r=n.reactive(s.useMouse(t));return()=>{if(e.default)return e.default(r)}}}),Ae=n.defineComponent({name:"UseMouseElement",props:["handleOutside","as"],setup(t,{slots:e}){const r=n.ref(),a=n.reactive(s.useMouseInElement(r,t));return()=>{if(e.default)return n.h(t.as||"div",{ref:r},e.default(a))}}});var Ie=Object.defineProperty,Be=Object.defineProperties,Te=Object.getOwnPropertyDescriptors,N=Object.getOwnPropertySymbols,Fe=Object.prototype.hasOwnProperty,ze=Object.prototype.propertyIsEnumerable,A=(t,e,r)=>e in t?Ie(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,We=(t,e)=>{for(var r in e||(e={}))Fe.call(e,r)&&A(t,r,e[r]);if(N)for(var r of N(e))ze.call(e,r)&&A(t,r,e[r]);return t},Re=(t,e)=>Be(t,Te(e));const ke=n.defineComponent({name:"UseMousePressed",props:["touch","initialValue","as"],setup(t,{slots:e}){const r=n.ref(),a=n.reactive(s.useMousePressed(Re(We({},t),{target:r})));return()=>{if(e.default)return n.h(t.as||"div",{ref:r},e.default(a))}}}),Je=n.defineComponent({name:"UseNetwork",setup(t,{slots:e}){const r=n.reactive(s.useNetwork());return()=>{if(e.default)return e.default(r)}}});var Ke=Object.defineProperty,Ge=Object.defineProperties,He=Object.getOwnPropertyDescriptors,I=Object.getOwnPropertySymbols,qe=Object.prototype.hasOwnProperty,Qe=Object.prototype.propertyIsEnumerable,B=(t,e,r)=>e in t?Ke(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,Xe=(t,e)=>{for(var r in e||(e={}))qe.call(e,r)&&B(t,r,e[r]);if(I)for(var r of I(e))Qe.call(e,r)&&B(t,r,e[r]);return t},Ye=(t,e)=>Ge(t,He(e));const Ze=n.defineComponent({name:"UseNow",props:["interval"],setup(t,{slots:e}){const r=n.reactive(s.useNow(Ye(Xe({},t),{controls:!0})));return()=>{if(e.default)return e.default(r)}}}),xe=n.defineComponent({name:"UseOnline",setup(t,{slots:e}){const r=n.reactive({isOnline:s.useOnline()});return()=>{if(e.default)return e.default(r)}}}),De=n.defineComponent({name:"UsePageLeave",setup(t,{slots:e}){const r=n.reactive({isLeft:s.usePageLeave()});return()=>{if(e.default)return e.default(r)}}});var et=Object.defineProperty,tt=Object.defineProperties,rt=Object.getOwnPropertyDescriptors,T=Object.getOwnPropertySymbols,nt=Object.prototype.hasOwnProperty,at=Object.prototype.propertyIsEnumerable,F=(t,e,r)=>e in t?et(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,st=(t,e)=>{for(var r in e||(e={}))nt.call(e,r)&&F(t,r,e[r]);if(T)for(var r of T(e))at.call(e,r)&&F(t,r,e[r]);return t},ot=(t,e)=>tt(t,rt(e));const it=n.defineComponent({name:"UsePointer",props:["pointerTypes","initialValue","target"],setup(t,{slots:e}){const r=n.ref(null),a=n.reactive(s.usePointer(ot(st({},t),{target:t.target==="self"?r:c})));return()=>{if(e.default)return e.default(a,{ref:r})}}}),ut=n.defineComponent({name:"UsePreferredColorScheme",setup(t,{slots:e}){const r=n.reactive({colorScheme:s.usePreferredColorScheme()});return()=>{if(e.default)return e.default(r)}}}),lt=n.defineComponent({name:"UsePreferredDark",setup(t,{slots:e}){const r=n.reactive({prefersDark:s.usePreferredDark()});return()=>{if(e.default)return e.default(r)}}}),ft=n.defineComponent({name:"UsePreferredLanguages",setup(t,{slots:e}){const r=n.reactive({languages:s.usePreferredLanguages()});return()=>{if(e.default)return e.default(r)}}}),z="--vueuse-safe-area-top",W="--vueuse-safe-area-right",R="--vueuse-safe-area-bottom",k="--vueuse-safe-area-left";function ct(){const t=n.ref(""),e=n.ref(""),r=n.ref(""),a=n.ref("");if(s.isClient){const u=s.useCssVar(z),d=s.useCssVar(W),v=s.useCssVar(R),l=s.useCssVar(k);u.value="env(safe-area-inset-top, 0px)",d.value="env(safe-area-inset-right, 0px)",v.value="env(safe-area-inset-bottom, 0px)",l.value="env(safe-area-inset-left, 0px)",i(),s.useEventListener("resize",s.useDebounceFn(i))}function i(){t.value=C(z),e.value=C(W),r.value=C(R),a.value=C(k)}return{top:t,right:e,bottom:r,left:a,update:i}}function C(t){return getComputedStyle(document.documentElement).getPropertyValue(t)}const dt=n.defineComponent({name:"UseScreenSafeArea",props:{top:Boolean,right:Boolean,bottom:Boolean,left:Boolean},setup(t,{slots:e}){const{top:r,right:a,bottom:i,left:u}=ct();return()=>{if(e.default)return n.h("div",{style:{paddingTop:t.top?r.value:"",paddingRight:t.right?a.value:"",paddingBottom:t.bottom?i.value:"",paddingLeft:t.left?u.value:"",boxSizing:"border-box",maxHeight:"100vh",maxWidth:"100vw",overflow:"auto"}},e.default())}}});var pt=Object.defineProperty,gt=Object.defineProperties,mt=Object.getOwnPropertyDescriptors,J=Object.getOwnPropertySymbols,_t=Object.prototype.hasOwnProperty,Ot=Object.prototype.propertyIsEnumerable,K=(t,e,r)=>e in t?pt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,vt=(t,e)=>{for(var r in e||(e={}))_t.call(e,r)&&K(t,r,e[r]);if(J)for(var r of J(e))Ot.call(e,r)&&K(t,r,e[r]);return t},Pt=(t,e)=>gt(t,mt(e));const yt=n.defineComponent({name:"UseTimeAgo",props:["time","updateInterval","max","fullDateFormatter","messages"],setup(t,{slots:e}){const r=n.toRef(t,"time"),a=n.reactive(s.useTimeAgo(r,Pt(vt({},t),{controls:!0})));return()=>{if(e.default)return e.default(a)}}});var Ut=Object.defineProperty,ht=Object.defineProperties,wt=Object.getOwnPropertyDescriptors,G=Object.getOwnPropertySymbols,bt=Object.prototype.hasOwnProperty,Ct=Object.prototype.propertyIsEnumerable,H=(t,e,r)=>e in t?Ut(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,St=(t,e)=>{for(var r in e||(e={}))bt.call(e,r)&&H(t,r,e[r]);if(G)for(var r of G(e))Ct.call(e,r)&&H(t,r,e[r]);return t},Vt=(t,e)=>ht(t,wt(e));const $t=n.defineComponent({name:"UseTimestamp",props:["immediate","interval","offset"],setup(t,{slots:e}){const r=n.reactive(s.useTimestamp(Vt(St({},t),{controls:!0})));return()=>{if(e.default)return e.default(r)}}});var Et=Object.defineProperty,q=Object.getOwnPropertySymbols,Lt=Object.prototype.hasOwnProperty,jt=Object.prototype.propertyIsEnumerable,Q=(t,e,r)=>e in t?Et(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,X=(t,e)=>{for(var r in e||(e={}))Lt.call(e,r)&&Q(t,r,e[r]);if(q)for(var r of q(e))jt.call(e,r)&&Q(t,r,e[r]);return t};const Mt=n.defineComponent({name:"UseVirtualList",props:["list","options","height"],setup(t,{slots:e}){const{list:r}=n.toRefs(t),{list:a,containerProps:i,wrapperProps:u}=s.useVirtualList(r,t.options);return i.style.height=t.height||"300px",()=>n.h("div",X({},i),[n.h("div",X({},u.value),a.value.map(d=>n.h("div",{style:{overFlow:"hidden",height:d.height}},e.default?e.default(d):"Please set content!")))])}}),Nt=n.defineComponent({name:"UseWindowFocus",setup(t,{slots:e}){const r=n.reactive({focused:s.useWindowFocus()});return()=>{if(e.default)return e.default(r)}}}),At=n.defineComponent({name:"UseWindowSize",props:["initialWidth","initialHeight"],setup(t,{slots:e}){const r=n.reactive(s.useWindowSize(t));return()=>{if(e.default)return e.default(r)}}});o.OnClickOutside=h,o.UseActiveElement=x,o.UseBattery=D,o.UseBrowserLocation=ee,o.UseColorMode=ce,o.UseDark=de,o.UseDeviceMotion=pe,o.UseDeviceOrientation=ge,o.UseDevicePixelRatio=me,o.UseDevicesList=_e,o.UseDocumentVisibility=Oe,o.UseDraggable=Ce,o.UseElementBounding=Se,o.UseElementSize=Ve,o.UseElementVisibility=$e,o.UseEyeDropper=Ee,o.UseFullscreen=Le,o.UseGeolocation=je,o.UseIdle=Me,o.UseMouse=Ne,o.UseMouseInElement=Ae,o.UseMousePressed=ke,o.UseNetwork=Je,o.UseNow=Ze,o.UseOnline=xe,o.UsePageLeave=De,o.UsePointer=it,o.UsePreferredColorScheme=ut,o.UsePreferredDark=lt,o.UsePreferredLanguages=ft,o.UseScreenSafeArea=dt,o.UseTimeAgo=yt,o.UseTimestamp=$t,o.UseVirtualList=Mt,o.UseWindowFocus=Nt,o.UseWindowSize=At,o.VOnClickOutside=Z,Object.defineProperty(o,"__esModule",{value:!0})}(this.VueUse=this.VueUse||{},VueDemi,VueUse,VueUse);
1
+ (function(s){if(!s.VueDemi){var n={},o=s.Vue;if(o)if(o.version.slice(0,2)==="2."){var f=s.VueCompositionAPI;if(f){for(var U in f)n[U]=f[U];n.isVue2=!0,n.isVue3=!1,n.install=function(){},n.Vue=o,n.Vue2=o,n.version=o.version}else console.error("[vue-demi] no VueCompositionAPI instance found, please be sure to import `@vue/composition-api` before `vue-demi`.")}else if(o.version.slice(0,2)==="3."){for(var U in o)n[U]=o[U];n.isVue2=!1,n.isVue3=!0,n.install=function(){},n.Vue=o,n.Vue2=void 0,n.version=o.version,n.set=function(g,c,O){return Array.isArray(g)?(g.length=Math.max(g.length,c),g.splice(c,1,O),O):(g[c]=O,O)},n.del=function(g,c){if(Array.isArray(g)){g.splice(c,1);return}delete g[c]}}else console.error("[vue-demi] Vue version "+o.version+" is unsupported.");else console.error("[vue-demi] no Vue instance found, please be sure to import `vue` before `vue-demi`.");s.VueDemi=n}})(window),function(s,n,o,f){"use strict";const U=n.defineComponent({name:"OnClickOutside",props:["as"],emits:["trigger"],setup(t,{slots:e,emit:r}){const a=n.ref();return o.onClickOutside(a,i=>{r("trigger",i)}),()=>{if(e.default)return n.h(t.as||"div",{ref:a},e.default())}}});function g(t){var e;const r=n.unref(t);return(e=r==null?void 0:r.$el)!=null?e:r}const c=f.isClient?window:void 0;function O(...t){let e,r,a,i;if(f.isString(t[0])?([r,a,i]=t,e=c):[e,r,a,i]=t,!e)return f.noop;let u=f.noop;const p=n.watch(()=>n.unref(e),l=>{u(),!!l&&(l.addEventListener(r,a,i),u=()=>{l.removeEventListener(r,a,i),u=f.noop})},{immediate:!0,flush:"post"}),y=()=>{p(),u()};return f.tryOnScopeDispose(y),y}function ee(t,e,r={}){const{window:a=c}=r;if(!a)return;const i=n.ref(!0),p=[O(a,"click",l=>{const v=g(t);!v||v===l.target||l.composedPath().includes(v)||!i.value||e(l)},{passive:!0,capture:!0}),O(a,"pointerdown",l=>{const v=g(t);i.value=!!v&&!l.composedPath().includes(v)},{passive:!0})];return()=>p.forEach(l=>l())}const te=(t,e)=>{ee(t,e.value)},re=n.defineComponent({name:"UseActiveElement",setup(t,{slots:e}){const r=n.reactive({element:o.useActiveElement()});return()=>{if(e.default)return e.default(r)}}}),ne=n.defineComponent({name:"UseBattery",setup(t,{slots:e}){const r=n.reactive(o.useBattery(t));return()=>{if(e.default)return e.default(r)}}}),ae=n.defineComponent({name:"UseBrowserLocation",setup(t,{slots:e}){const r=n.reactive(o.useBrowserLocation());return()=>{if(e.default)return e.default(r)}}}),j="__vueuse_ssr_handlers__";globalThis[j]=globalThis[j]||{};const oe=globalThis[j];function M(t,e){return oe[t]||e}function se(t){return t==null?"any":t instanceof Set?"set":t instanceof Map?"map":typeof t=="boolean"?"boolean":typeof t=="string"?"string":typeof t=="object"||Array.isArray(t)?"object":Number.isNaN(t)?"any":"number"}const ie={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.entries()))}};function ue(t,e,r=M("getDefaultStorage",()=>{var i;return(i=c)==null?void 0:i.localStorage})(),a={}){var i;const{flush:u="pre",deep:p=!0,listenToStorageChanges:y=!0,writeDefaults:l=!0,shallow:v,window:E=c,eventFilter:S,onError:w=_=>{console.error(_)}}=a,b=n.unref(e),L=se(b),P=(v?n.shallowRef:n.ref)(e),d=(i=a.serializer)!=null?i:ie[L];function h(_){if(!(!r||_&&_.key!==t))try{const m=_?_.newValue:r.getItem(t);m==null?(P.value=b,l&&b!==null&&r.setItem(t,d.write(b))):typeof m!="string"?P.value=m:P.value=d.read(m)}catch(m){w(m)}}return h(),E&&y&&O(E,"storage",_=>setTimeout(()=>h(_),0)),r&&f.watchWithFilter(P,()=>{try{P.value==null?r.removeItem(t):r.setItem(t,d.write(P.value))}catch(_){w(_)}},{flush:u,deep:p,eventFilter:S}),P}function le(t,e={}){const{window:r=c}=e;let a;const i=n.ref(!1),u=()=>{!r||(a||(a=r.matchMedia(t)),i.value=a.matches)};return f.tryOnMounted(()=>{u(),!!a&&("addEventListener"in a?a.addEventListener("change",u):a.addListener(u),f.tryOnScopeDispose(()=>{"removeEventListener"in u?a.removeEventListener("change",u):a.removeListener(u)}))}),i}function fe(t){return le("(prefers-color-scheme: dark)",t)}var ce=Object.defineProperty,N=Object.getOwnPropertySymbols,de=Object.prototype.hasOwnProperty,pe=Object.prototype.propertyIsEnumerable,A=(t,e,r)=>e in t?ce(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,ge=(t,e)=>{for(var r in e||(e={}))de.call(e,r)&&A(t,r,e[r]);if(N)for(var r of N(e))pe.call(e,r)&&A(t,r,e[r]);return t};function _e(t={}){const{selector:e="html",attribute:r="class",window:a=c,storage:i=M("getDefaultStorage",()=>{var d;return(d=c)==null?void 0:d.localStorage})(),storageKey:u="vueuse-color-scheme",listenToStorageChanges:p=!0,storageRef:y}=t,l=ge({auto:"",light:"light",dark:"dark"},t.modes||{}),v=fe({window:a}),E=n.computed(()=>v.value?"dark":"light"),S=y||(u==null?n.ref("auto"):ue(u,"auto",i,{window:a,listenToStorageChanges:p})),w=n.computed({get(){return S.value==="auto"?E.value:S.value},set(d){S.value=d}}),b=M("updateHTMLAttrs",(d,h,_)=>{const m=a==null?void 0:a.document.querySelector(d);if(!!m)if(h==="class"){const Rt=_.split(/\s/g);Object.values(l).flatMap(C=>(C||"").split(/\s/g)).filter(Boolean).forEach(C=>{Rt.includes(C)?m.classList.add(C):m.classList.remove(C)})}else m.setAttribute(h,_)});function L(d){var h;b(e,r,(h=l[d])!=null?h:d)}function P(d){t.onChanged?t.onChanged(d,L):L(d)}return n.watch(w,P,{flush:"post",immediate:!0}),f.tryOnMounted(()=>P(w.value)),w}const me=n.defineComponent({name:"UseColorMode",props:["selector","attribute","modes","onChanged","storageKey","storage"],setup(t,{slots:e}){const r=_e(t),a=n.reactive({mode:r});return()=>{if(e.default)return e.default(a)}}}),ve=n.defineComponent({name:"UseDark",props:["selector","attribute","valueDark","valueLight","onChanged","storageKey","storage"],setup(t,{slots:e}){const r=o.useDark(t),a=n.reactive({isDark:r,toggleDark:f.useToggle(r)});return()=>{if(e.default)return e.default(a)}}}),Pe=n.defineComponent({name:"UseDeviceMotion",setup(t,{slots:e}){const r=n.reactive(o.useDeviceMotion());return()=>{if(e.default)return e.default(r)}}}),Oe=n.defineComponent({name:"UseDeviceOrientation",setup(t,{slots:e}){const r=n.reactive(o.useDeviceOrientation());return()=>{if(e.default)return e.default(r)}}}),ye=n.defineComponent({name:"UseDevicePixelRatio",setup(t,{slots:e}){const r=n.reactive({pixelRatio:o.useDevicePixelRatio()});return()=>{if(e.default)return e.default(r)}}}),he=n.defineComponent({name:"UseDevicesList",props:["onUpdated","requestPermissions","constraints"],setup(t,{slots:e}){const r=n.reactive(o.useDevicesList(t));return()=>{if(e.default)return e.default(r)}}}),Ue=n.defineComponent({name:"UseDocumentVisibility",setup(t,{slots:e}){const r=n.reactive({visibility:o.useDocumentVisibility()});return()=>{if(e.default)return e.default(r)}}});var we=Object.defineProperty,be=Object.defineProperties,Se=Object.getOwnPropertyDescriptors,T=Object.getOwnPropertySymbols,Ce=Object.prototype.hasOwnProperty,Ve=Object.prototype.propertyIsEnumerable,I=(t,e,r)=>e in t?we(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,$e=(t,e)=>{for(var r in e||(e={}))Ce.call(e,r)&&I(t,r,e[r]);if(T)for(var r of T(e))Ve.call(e,r)&&I(t,r,e[r]);return t},Ee=(t,e)=>be(t,Se(e));const Le=n.defineComponent({name:"UseDraggable",props:["storageKey","initialValue","exact","preventDefault","pointerTypes","as"],setup(t,{slots:e}){const r=n.ref(),a=t.storageKey?o.useStorage(t.storageKey,n.unref(t.initialValue)||{x:0,y:0},o.isClient?t.storageType==="session"?sessionStorage:localStorage:void 0):t.initialValue||{x:0,y:0},i=n.reactive(o.useDraggable(r,Ee($e({},t),{initialValue:a})));return()=>{if(e.default)return n.h(t.as||"div",{ref:r,style:`touch-action:none;${i.style}`},e.default(i))}}}),je=n.defineComponent({name:"UseElementBounding",props:["box","as"],setup(t,{slots:e}){const r=n.ref(),a=n.reactive(o.useElementBounding(r));return()=>{if(e.default)return n.h(t.as||"div",{ref:r},e.default(a))}}}),Me=n.defineComponent({name:"UseElementSize",props:["width","height","box"],setup(t,{slots:e}){const r=n.ref(),a=n.reactive(o.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(a))}}}),Ne=n.defineComponent({name:"UseElementVisibility",props:["as"],setup(t,{slots:e}){const r=n.ref(),a=n.reactive({isVisible:o.useElementVisibility(r)});return()=>{if(e.default)return n.h(t.as||"div",{ref:r},e.default(a))}}}),Ae=n.defineComponent({name:"UseEyeDropper",props:{sRGBHex:String},setup(t,{slots:e}){const r=n.reactive(o.useEyeDropper());return()=>{if(e.default)return e.default(r)}}}),Te=n.defineComponent({name:"UseFullscreen",props:["as"],setup(t,{slots:e}){const r=n.ref(),a=n.reactive(o.useFullscreen(r));return()=>{if(e.default)return n.h(t.as||"div",{ref:r},e.default(a))}}}),Ie=n.defineComponent({name:"UseGeolocation",props:["enableHighAccuracy","maximumAge","timeout","navigator"],setup(t,{slots:e}){const r=n.reactive(o.useGeolocation(t));return()=>{if(e.default)return e.default(r)}}}),Be=n.defineComponent({name:"UseIdle",props:["timeout","events","listenForVisibilityChange","initialState"],setup(t,{slots:e}){const r=n.reactive(o.useIdle(t.timeout,t));return()=>{if(e.default)return e.default(r)}}}),Fe=n.defineComponent({name:"UseMouse",props:["touch","resetOnTouchEnds","initialValue"],setup(t,{slots:e}){const r=n.reactive(o.useMouse(t));return()=>{if(e.default)return e.default(r)}}}),ze=n.defineComponent({name:"UseMouseElement",props:["handleOutside","as"],setup(t,{slots:e}){const r=n.ref(),a=n.reactive(o.useMouseInElement(r,t));return()=>{if(e.default)return n.h(t.as||"div",{ref:r},e.default(a))}}});var Re=Object.defineProperty,We=Object.defineProperties,ke=Object.getOwnPropertyDescriptors,B=Object.getOwnPropertySymbols,He=Object.prototype.hasOwnProperty,Ke=Object.prototype.propertyIsEnumerable,F=(t,e,r)=>e in t?Re(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,Je=(t,e)=>{for(var r in e||(e={}))He.call(e,r)&&F(t,r,e[r]);if(B)for(var r of B(e))Ke.call(e,r)&&F(t,r,e[r]);return t},Ge=(t,e)=>We(t,ke(e));const qe=n.defineComponent({name:"UseMousePressed",props:["touch","initialValue","as"],setup(t,{slots:e}){const r=n.ref(),a=n.reactive(o.useMousePressed(Ge(Je({},t),{target:r})));return()=>{if(e.default)return n.h(t.as||"div",{ref:r},e.default(a))}}}),Qe=n.defineComponent({name:"UseNetwork",setup(t,{slots:e}){const r=n.reactive(o.useNetwork());return()=>{if(e.default)return e.default(r)}}});var Xe=Object.defineProperty,Ye=Object.defineProperties,Ze=Object.getOwnPropertyDescriptors,z=Object.getOwnPropertySymbols,xe=Object.prototype.hasOwnProperty,De=Object.prototype.propertyIsEnumerable,R=(t,e,r)=>e in t?Xe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,et=(t,e)=>{for(var r in e||(e={}))xe.call(e,r)&&R(t,r,e[r]);if(z)for(var r of z(e))De.call(e,r)&&R(t,r,e[r]);return t},tt=(t,e)=>Ye(t,Ze(e));const rt=n.defineComponent({name:"UseNow",props:["interval"],setup(t,{slots:e}){const r=n.reactive(o.useNow(tt(et({},t),{controls:!0})));return()=>{if(e.default)return e.default(r)}}}),nt=n.defineComponent({name:"UseOnline",setup(t,{slots:e}){const r=n.reactive({isOnline:o.useOnline()});return()=>{if(e.default)return e.default(r)}}}),at=n.defineComponent({name:"UsePageLeave",setup(t,{slots:e}){const r=n.reactive({isLeft:o.usePageLeave()});return()=>{if(e.default)return e.default(r)}}});var ot=Object.defineProperty,st=Object.defineProperties,it=Object.getOwnPropertyDescriptors,W=Object.getOwnPropertySymbols,ut=Object.prototype.hasOwnProperty,lt=Object.prototype.propertyIsEnumerable,k=(t,e,r)=>e in t?ot(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,ft=(t,e)=>{for(var r in e||(e={}))ut.call(e,r)&&k(t,r,e[r]);if(W)for(var r of W(e))lt.call(e,r)&&k(t,r,e[r]);return t},ct=(t,e)=>st(t,it(e));const dt=n.defineComponent({name:"UsePointer",props:["pointerTypes","initialValue","target"],setup(t,{slots:e}){const r=n.ref(null),a=n.reactive(o.usePointer(ct(ft({},t),{target:t.target==="self"?r:c})));return()=>{if(e.default)return e.default(a,{ref:r})}}}),pt=n.defineComponent({name:"UsePreferredColorScheme",setup(t,{slots:e}){const r=n.reactive({colorScheme:o.usePreferredColorScheme()});return()=>{if(e.default)return e.default(r)}}}),gt=n.defineComponent({name:"UsePreferredDark",setup(t,{slots:e}){const r=n.reactive({prefersDark:o.usePreferredDark()});return()=>{if(e.default)return e.default(r)}}}),_t=n.defineComponent({name:"UsePreferredLanguages",setup(t,{slots:e}){const r=n.reactive({languages:o.usePreferredLanguages()});return()=>{if(e.default)return e.default(r)}}});function V(t,e,{window:r=c}={}){const a=n.ref(""),i=n.computed(()=>{var u;return g(e)||((u=r==null?void 0:r.document)==null?void 0:u.documentElement)});return n.watch(i,u=>{u&&r&&(a.value=r.getComputedStyle(u).getPropertyValue(t))},{immediate:!0}),n.watch(a,u=>{var p;((p=i.value)==null?void 0:p.style)&&i.value.style.setProperty(t,u)}),a}const H="--vueuse-safe-area-top",K="--vueuse-safe-area-right",J="--vueuse-safe-area-bottom",G="--vueuse-safe-area-left";function mt(){const t=n.ref(""),e=n.ref(""),r=n.ref(""),a=n.ref("");if(f.isClient){const u=V(H),p=V(K),y=V(J),l=V(G);u.value="env(safe-area-inset-top, 0px)",p.value="env(safe-area-inset-right, 0px)",y.value="env(safe-area-inset-bottom, 0px)",l.value="env(safe-area-inset-left, 0px)",i(),O("resize",f.useDebounceFn(i))}function i(){t.value=$(H),e.value=$(K),r.value=$(J),a.value=$(G)}return{top:t,right:e,bottom:r,left:a,update:i}}function $(t){return getComputedStyle(document.documentElement).getPropertyValue(t)}const vt=n.defineComponent({name:"UseScreenSafeArea",props:{top:Boolean,right:Boolean,bottom:Boolean,left:Boolean},setup(t,{slots:e}){const{top:r,right:a,bottom:i,left:u}=mt();return()=>{if(e.default)return n.h("div",{style:{paddingTop:t.top?r.value:"",paddingRight:t.right?a.value:"",paddingBottom:t.bottom?i.value:"",paddingLeft:t.left?u.value:"",boxSizing:"border-box",maxHeight:"100vh",maxWidth:"100vw",overflow:"auto"}},e.default())}}});var Pt=Object.defineProperty,Ot=Object.defineProperties,yt=Object.getOwnPropertyDescriptors,q=Object.getOwnPropertySymbols,ht=Object.prototype.hasOwnProperty,Ut=Object.prototype.propertyIsEnumerable,Q=(t,e,r)=>e in t?Pt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,wt=(t,e)=>{for(var r in e||(e={}))ht.call(e,r)&&Q(t,r,e[r]);if(q)for(var r of q(e))Ut.call(e,r)&&Q(t,r,e[r]);return t},bt=(t,e)=>Ot(t,yt(e));const St=n.defineComponent({name:"UseTimeAgo",props:["time","updateInterval","max","fullDateFormatter","messages"],setup(t,{slots:e}){const r=n.toRef(t,"time"),a=n.reactive(o.useTimeAgo(r,bt(wt({},t),{controls:!0})));return()=>{if(e.default)return e.default(a)}}});var Ct=Object.defineProperty,Vt=Object.defineProperties,$t=Object.getOwnPropertyDescriptors,X=Object.getOwnPropertySymbols,Et=Object.prototype.hasOwnProperty,Lt=Object.prototype.propertyIsEnumerable,Y=(t,e,r)=>e in t?Ct(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,jt=(t,e)=>{for(var r in e||(e={}))Et.call(e,r)&&Y(t,r,e[r]);if(X)for(var r of X(e))Lt.call(e,r)&&Y(t,r,e[r]);return t},Mt=(t,e)=>Vt(t,$t(e));const Nt=n.defineComponent({name:"UseTimestamp",props:["immediate","interval","offset"],setup(t,{slots:e}){const r=n.reactive(o.useTimestamp(Mt(jt({},t),{controls:!0})));return()=>{if(e.default)return e.default(r)}}});var At=Object.defineProperty,Z=Object.getOwnPropertySymbols,Tt=Object.prototype.hasOwnProperty,It=Object.prototype.propertyIsEnumerable,x=(t,e,r)=>e in t?At(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,D=(t,e)=>{for(var r in e||(e={}))Tt.call(e,r)&&x(t,r,e[r]);if(Z)for(var r of Z(e))It.call(e,r)&&x(t,r,e[r]);return t};const Bt=n.defineComponent({name:"UseVirtualList",props:["list","options","height"],setup(t,{slots:e}){const{list:r}=n.toRefs(t),{list:a,containerProps:i,wrapperProps:u}=o.useVirtualList(r,t.options);return i.style.height=t.height||"300px",()=>n.h("div",D({},i),[n.h("div",D({},u.value),a.value.map(p=>n.h("div",{style:{overFlow:"hidden",height:p.height}},e.default?e.default(p):"Please set content!")))])}}),Ft=n.defineComponent({name:"UseWindowFocus",setup(t,{slots:e}){const r=n.reactive({focused:o.useWindowFocus()});return()=>{if(e.default)return e.default(r)}}}),zt=n.defineComponent({name:"UseWindowSize",props:["initialWidth","initialHeight"],setup(t,{slots:e}){const r=n.reactive(o.useWindowSize(t));return()=>{if(e.default)return e.default(r)}}});s.OnClickOutside=U,s.UseActiveElement=re,s.UseBattery=ne,s.UseBrowserLocation=ae,s.UseColorMode=me,s.UseDark=ve,s.UseDeviceMotion=Pe,s.UseDeviceOrientation=Oe,s.UseDevicePixelRatio=ye,s.UseDevicesList=he,s.UseDocumentVisibility=Ue,s.UseDraggable=Le,s.UseElementBounding=je,s.UseElementSize=Me,s.UseElementVisibility=Ne,s.UseEyeDropper=Ae,s.UseFullscreen=Te,s.UseGeolocation=Ie,s.UseIdle=Be,s.UseMouse=Fe,s.UseMouseInElement=ze,s.UseMousePressed=qe,s.UseNetwork=Qe,s.UseNow=rt,s.UseOnline=nt,s.UsePageLeave=at,s.UsePointer=dt,s.UsePreferredColorScheme=pt,s.UsePreferredDark=gt,s.UsePreferredLanguages=_t,s.UseScreenSafeArea=vt,s.UseTimeAgo=St,s.UseTimestamp=Nt,s.UseVirtualList=Bt,s.UseWindowFocus=Ft,s.UseWindowSize=zt,s.VOnClickOutside=te,Object.defineProperty(s,"__esModule",{value:!0})}(this.VueUse=this.VueUse||{},VueDemi,VueUse,VueUse);
package/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, ref, h, unref, watch, reactive, shallowRef, computed, toRef, toRefs } from 'vue-demi';
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, useElementVisibility, useEyeDropper, useFullscreen, useGeolocation, useIdle, useMouse, useMouseInElement, useMousePressed, useNetwork, useNow, useOnline, usePageLeave, usePointer, usePreferredColorScheme, usePreferredDark as usePreferredDark$1, usePreferredLanguages, useCssVar, useEventListener as useEventListener$1, useDebounceFn, useTimeAgo, useTimestamp, useVirtualList, useWindowFocus, useWindowSize } from '@vueuse/core';
3
- import { isClient, isString, noop, tryOnScopeDispose, watchWithFilter, tryOnMounted, useToggle } from '@vueuse/shared';
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, useElementVisibility, useEyeDropper, useFullscreen, useGeolocation, useIdle, useMouse, useMouseInElement, useMousePressed, useNetwork, useNow, useOnline, usePageLeave, usePointer, usePreferredColorScheme, usePreferredDark as usePreferredDark$1, usePreferredLanguages, useTimeAgo, useTimestamp, useVirtualList, useWindowFocus, useWindowSize } from '@vueuse/core';
3
+ import { isClient, isString, noop, tryOnScopeDispose, watchWithFilter, tryOnMounted, useToggle, useDebounceFn } from '@vueuse/shared';
4
4
 
5
5
  const OnClickOutside = defineComponent({
6
6
  name: "OnClickOutside",
@@ -119,6 +119,13 @@ const UseBrowserLocation = defineComponent({
119
119
  }
120
120
  });
121
121
 
122
+ const globalKey = "__vueuse_ssr_handlers__";
123
+ globalThis[globalKey] = globalThis[globalKey] || {};
124
+ const handlers = globalThis[globalKey];
125
+ function getSSRHandler(key, fallback) {
126
+ return handlers[key] || fallback;
127
+ }
128
+
122
129
  function guessSerializerType(rawInit) {
123
130
  return rawInit == null ? "any" : rawInit instanceof Set ? "set" : rawInit instanceof Map ? "map" : typeof rawInit === "boolean" ? "boolean" : typeof rawInit === "string" ? "string" : typeof rawInit === "object" ? "object" : Array.isArray(rawInit) ? "object" : !Number.isNaN(rawInit) ? "number" : "any";
124
131
  }
@@ -153,8 +160,11 @@ const StorageSerializers = {
153
160
  write: (v) => JSON.stringify(Array.from(v.entries()))
154
161
  }
155
162
  };
156
- function useStorage(key, initialValue, storage = ((_a) => (_a = defaultWindow) == null ? void 0 : _a.localStorage)(), options = {}) {
157
- var _a2;
163
+ function useStorage(key, initialValue, storage = getSSRHandler("getDefaultStorage", () => {
164
+ var _a;
165
+ return (_a = defaultWindow) == null ? void 0 : _a.localStorage;
166
+ })(), options = {}) {
167
+ var _a;
158
168
  const {
159
169
  flush = "pre",
160
170
  deep = true,
@@ -170,7 +180,7 @@ function useStorage(key, initialValue, storage = ((_a) => (_a = defaultWindow) =
170
180
  const rawInit = unref(initialValue);
171
181
  const type = guessSerializerType(rawInit);
172
182
  const data = (shallow ? shallowRef : ref)(initialValue);
173
- const serializer = (_a2 = options.serializer) != null ? _a2 : StorageSerializers[type];
183
+ const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];
174
184
  function read(event) {
175
185
  if (!storage || event && event.key !== key)
176
186
  return;
@@ -180,6 +190,8 @@ function useStorage(key, initialValue, storage = ((_a) => (_a = defaultWindow) =
180
190
  data.value = rawInit;
181
191
  if (writeDefaults && rawInit !== null)
182
192
  storage.setItem(key, serializer.write(rawInit));
193
+ } else if (typeof rawValue !== "string") {
194
+ data.value = rawValue;
183
195
  } else {
184
196
  data.value = serializer.read(rawValue);
185
197
  }
@@ -259,12 +271,14 @@ var __spreadValues$7 = (a, b) => {
259
271
  return a;
260
272
  };
261
273
  function useColorMode(options = {}) {
262
- var _a;
263
274
  const {
264
275
  selector = "html",
265
276
  attribute = "class",
266
277
  window = defaultWindow,
267
- storage = (_a = defaultWindow) == null ? void 0 : _a.localStorage,
278
+ storage = getSSRHandler("getDefaultStorage", () => {
279
+ var _a;
280
+ return (_a = defaultWindow) == null ? void 0 : _a.localStorage;
281
+ })(),
268
282
  storageKey = "vueuse-color-scheme",
269
283
  listenToStorageChanges = true,
270
284
  storageRef
@@ -285,12 +299,12 @@ function useColorMode(options = {}) {
285
299
  store.value = v;
286
300
  }
287
301
  });
288
- function defaultOnChanged(value) {
289
- const el = window == null ? void 0 : window.document.querySelector(selector);
302
+ const updateHTMLAttrs = getSSRHandler("updateHTMLAttrs", (selector2, attribute2, value) => {
303
+ const el = window == null ? void 0 : window.document.querySelector(selector2);
290
304
  if (!el)
291
305
  return;
292
- if (attribute === "class") {
293
- const current = (modes[value] || "").split(/\s/g);
306
+ if (attribute2 === "class") {
307
+ const current = value.split(/\s/g);
294
308
  Object.values(modes).flatMap((i) => (i || "").split(/\s/g)).filter(Boolean).forEach((v) => {
295
309
  if (current.includes(v))
296
310
  el.classList.add(v);
@@ -298,8 +312,12 @@ function useColorMode(options = {}) {
298
312
  el.classList.remove(v);
299
313
  });
300
314
  } else {
301
- el.setAttribute(attribute, value);
315
+ el.setAttribute(attribute2, value);
302
316
  }
317
+ });
318
+ function defaultOnChanged(mode) {
319
+ var _a;
320
+ updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);
303
321
  }
304
322
  function onChanged(mode) {
305
323
  if (options.onChanged)
@@ -307,7 +325,7 @@ function useColorMode(options = {}) {
307
325
  else
308
326
  defaultOnChanged(mode);
309
327
  }
310
- watch(state, onChanged, { flush: "post" });
328
+ watch(state, onChanged, { flush: "post", immediate: true });
311
329
  tryOnMounted(() => onChanged(state.value));
312
330
  return state;
313
331
  }
@@ -739,6 +757,24 @@ const UsePreferredLanguages = defineComponent({
739
757
  }
740
758
  });
741
759
 
760
+ function useCssVar(prop, target, { window = defaultWindow } = {}) {
761
+ const variable = ref("");
762
+ const elRef = computed(() => {
763
+ var _a;
764
+ return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);
765
+ });
766
+ watch(elRef, (el) => {
767
+ if (el && window)
768
+ variable.value = window.getComputedStyle(el).getPropertyValue(prop);
769
+ }, { immediate: true });
770
+ watch(variable, (val) => {
771
+ var _a;
772
+ if ((_a = elRef.value) == null ? void 0 : _a.style)
773
+ elRef.value.style.setProperty(prop, val);
774
+ });
775
+ return variable;
776
+ }
777
+
742
778
  const topVarName = "--vueuse-safe-area-top";
743
779
  const rightVarName = "--vueuse-safe-area-right";
744
780
  const bottomVarName = "--vueuse-safe-area-bottom";
@@ -748,7 +784,7 @@ function useScreenSafeArea() {
748
784
  const right = ref("");
749
785
  const bottom = ref("");
750
786
  const left = ref("");
751
- if (isClient$1) {
787
+ if (isClient) {
752
788
  const topCssVar = useCssVar(topVarName);
753
789
  const rightCssVar = useCssVar(rightVarName);
754
790
  const bottomCssVar = useCssVar(bottomVarName);
@@ -758,7 +794,7 @@ function useScreenSafeArea() {
758
794
  bottomCssVar.value = "env(safe-area-inset-bottom, 0px)";
759
795
  leftCssVar.value = "env(safe-area-inset-left, 0px)";
760
796
  update();
761
- useEventListener$1("resize", useDebounceFn(update));
797
+ useEventListener("resize", useDebounceFn(update));
762
798
  }
763
799
  function update() {
764
800
  top.value = getValue(topVarName);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vueuse/components",
3
- "version": "7.4.0",
3
+ "version": "7.5.0",
4
4
  "description": "Renderless components for VueUse",
5
5
  "keywords": [
6
6
  "vue",
@@ -33,8 +33,8 @@
33
33
  },
34
34
  "homepage": "https://github.com/vueuse/vueuse/tree/main/packages/components#readme",
35
35
  "dependencies": {
36
- "@vueuse/core": "7.4.0",
37
- "@vueuse/shared": "7.4.0",
36
+ "@vueuse/core": "7.5.0",
37
+ "@vueuse/shared": "7.5.0",
38
38
  "vue-demi": "*"
39
39
  }
40
40
  }