@vuetify/v0 1.0.0-alpha.1 → 1.0.0-alpha.2
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/dist/{adapter-T7AedXkz.d.mts → adapter-58IvIfAZ.d.mts} +1 -1
- package/dist/{adapter-DtgIrQsG.mjs → adapter-Be9zUc-n.mjs} +1 -1
- package/dist/{adapter-DoziXEzS.d.mts → adapter-BvWEd9w-.d.mts} +2 -2
- package/dist/{adapter-J7ude3gO.d.mts → adapter-DlX3FA3A.d.mts} +1 -1
- package/dist/{adapter-CDpOQ8sn.mjs → adapter-gQ2SNKZq.mjs} +3 -3
- package/dist/{adapters-Da2twiUn.mjs → adapters-BJ5n7rgh.mjs} +1 -1
- package/dist/adapters-BnKW0BF_.mjs +2 -0
- package/dist/adapters-CBrvizWb.mjs +4 -0
- package/dist/adapters-CMJGA1k7.mjs +2 -0
- package/dist/adapters-Dse4bPxk.mjs +5 -0
- package/dist/browser/index.js +166 -159
- package/dist/components/index.d.mts +2 -2
- package/dist/components/index.mjs +1 -1
- package/dist/{components-CaPQCjo5.mjs → components-CqDewYTU.mjs} +63 -37
- package/dist/composables/index.d.mts +18 -18
- package/dist/composables/index.mjs +26 -24
- package/dist/{consola-Byg0ybzh.d.mts → consola-BdgyPEfx.d.mts} +1 -1
- package/dist/constants/index.d.mts +2 -2
- package/dist/constants/index.mjs +3 -3
- package/dist/{createDataTable-B4UflKnT.mjs → createDataTable-rXBqGglI.mjs} +15 -12
- package/dist/{createGroup-BC2nfttd.mjs → createGroup-BU4olYtB.mjs} +7 -7
- package/dist/{createTokens-oJAeh262.mjs → createRegistry-Dl-bSSTr.mjs} +6 -299
- package/dist/{createSelection-BA9guLah.mjs → createSelection-Csaa-C8p.mjs} +1 -1
- package/dist/{createSingle-BHxHLZeg.mjs → createSingle-8xbHAIpY.mjs} +1 -1
- package/dist/createTokens-lNg2M_P_.mjs +302 -0
- package/dist/data-table/adapters/client/index.d.mts +1 -1
- package/dist/data-table/adapters/client/index.mjs +1 -1
- package/dist/data-table/adapters/index.d.mts +4 -4
- package/dist/data-table/adapters/index.mjs +5 -5
- package/dist/data-table/adapters/server/index.d.mts +1 -1
- package/dist/data-table/adapters/server/index.mjs +1 -1
- package/dist/data-table/adapters/virtual/index.d.mts +1 -1
- package/dist/data-table/adapters/virtual/index.mjs +1 -1
- package/dist/data-table/index.d.mts +5 -5
- package/dist/data-table/index.mjs +5 -5
- package/dist/date/index.d.mts +2 -2
- package/dist/date/index.mjs +4 -4
- package/dist/features/adapters/flagsmith/index.d.mts +1 -1
- package/dist/features/adapters/flagsmith/index.mjs +1 -1
- package/dist/features/adapters/launchdarkly/index.d.mts +1 -1
- package/dist/features/adapters/launchdarkly/index.mjs +1 -1
- package/dist/features/adapters/posthog/index.d.mts +1 -1
- package/dist/features/adapters/posthog/index.mjs +1 -1
- package/dist/features/index.d.mts +2 -2
- package/dist/features/index.mjs +1 -1
- package/dist/{globals-Berkg6mP.mjs → globals-CKdzjeLe.mjs} +1 -1
- package/dist/htmlElements-D4oMQZPJ.mjs +28 -0
- package/dist/{index-M8EpGjjA.d.mts → index-1XdASTjp.d.mts} +1 -1
- package/dist/{index-Gk3x_7zD.d.mts → index-B7cqgTBL.d.mts} +115 -117
- package/dist/{index-DVPq3_Fz.d.mts → index-BJGcVy7e.d.mts} +4 -4
- package/dist/index-BgCkepP_.d.mts +31 -0
- package/dist/{index-DFvLSoto.d.mts → index-BxKMMWnQ.d.mts} +9 -9
- package/dist/{index-tyzwWFHS.d.mts → index-BzFHTW59.d.mts} +1 -1
- package/dist/{index-CDcl4wPo.d.mts → index-CT5SCLzW.d.mts} +1 -1
- package/dist/{index-TtSSvHY6.d.mts → index-DE3bWw11.d.mts} +2 -2
- package/dist/{index-F2Fmxnzi.d.mts → index-Dp1HjBxJ.d.mts} +1 -1
- package/dist/{index-B_AlCD7t.d.mts → index-DuddF-NR.d.mts} +2 -9
- package/dist/{index-Dxx0eMLi.d.mts → index-GOpjKzaJ.d.mts} +1 -1
- package/dist/index.d.mts +23 -23
- package/dist/index.mjs +30 -28
- package/dist/json/attributes.json +4 -4
- package/dist/json/web-types.json +5 -5
- package/dist/locale/adapters/index.d.mts +2 -2
- package/dist/locale/adapters/index.mjs +2 -2
- package/dist/locale/adapters/v0/index.d.mts +1 -1
- package/dist/locale/adapters/v0/index.mjs +1 -1
- package/dist/locale/adapters/vue-i18n/index.d.mts +1 -1
- package/dist/locale/index.d.mts +3 -3
- package/dist/locale/index.mjs +2 -2
- package/dist/logger/adapters/consola/index.d.mts +1 -1
- package/dist/logger/adapters/index.d.mts +4 -4
- package/dist/logger/adapters/index.mjs +2 -2
- package/dist/logger/adapters/pino/index.d.mts +1 -1
- package/dist/logger/adapters/v0/index.d.mts +1 -1
- package/dist/logger/adapters/v0/index.mjs +1 -1
- package/dist/logger/index.d.mts +5 -5
- package/dist/logger/index.mjs +2 -2
- package/dist/notifications/index.d.mts +2 -2
- package/dist/notifications/index.mjs +3 -54
- package/dist/palettes/ant/generate/index.mjs +1 -0
- package/dist/palettes/ant/index.d.mts +1 -1
- package/dist/palettes/index.d.mts +3 -3
- package/dist/palettes/leonardo/generate/index.mjs +1 -0
- package/dist/palettes/material/generate/index.mjs +1 -0
- package/dist/palettes/material/index.d.mts +1 -1
- package/dist/palettes/md1/index.d.mts +1 -1
- package/dist/palettes/md2/index.d.mts +1 -1
- package/dist/palettes/radix/index.d.mts +1 -1
- package/dist/palettes/tailwind/index.d.mts +1 -1
- package/dist/permissions/adapters/index.d.mts +1 -1
- package/dist/permissions/adapters/index.mjs +2 -2
- package/dist/permissions/adapters/v0/index.d.mts +1 -1
- package/dist/permissions/adapters/v0/index.mjs +1 -1
- package/dist/permissions/index.d.mts +1 -1
- package/dist/permissions/index.mjs +2 -2
- package/dist/{pino-BxddSW2l.d.mts → pino-DNfCEb0p.d.mts} +1 -1
- package/dist/{posthog-CPvNHMUb.mjs → posthog-DZNnPXxS.mjs} +1 -1
- package/dist/rules/index.d.mts +1 -1
- package/dist/rules/index.mjs +1 -1
- package/dist/{server-ZiHJ4tfq.d.mts → server-3ilWFwqe.d.mts} +1 -1
- package/dist/{server-B6OtHgBT.mjs → server-y7zLSCSx.mjs} +1 -1
- package/dist/storage/adapters/index.d.mts +2 -2
- package/dist/storage/adapters/index.mjs +1 -1
- package/dist/storage/adapters/memory/index.d.mts +1 -1
- package/dist/storage/adapters/memory/index.mjs +1 -1
- package/dist/storage/index.d.mts +3 -3
- package/dist/storage/index.mjs +2 -2
- package/dist/theme/adapters/index.d.mts +1 -1
- package/dist/theme/adapters/index.mjs +4 -4
- package/dist/theme/adapters/unhead/index.d.mts +1 -1
- package/dist/theme/adapters/unhead/index.mjs +1 -1
- package/dist/theme/adapters/v0/index.d.mts +1 -1
- package/dist/theme/adapters/v0/index.mjs +1 -1
- package/dist/theme/index.d.mts +1 -1
- package/dist/theme/index.mjs +3 -3
- package/dist/{toArray-BA_JxFPv.mjs → toArray-as9BWxBK.mjs} +1 -0
- package/dist/types/index.d.mts +2 -2
- package/dist/{unhead-D2YqAcmF.mjs → unhead-DZiD-4Tx.mjs} +2 -2
- package/dist/{useClickOutside-B9a6Jext.mjs → useClickOutside-CmCUD_Pf.mjs} +46 -905
- package/dist/{useFeatures-wgMwaQ5W.mjs → useFeatures-ZIvzzuEV.mjs} +8 -7
- package/dist/{useLocale-qMmVnAwS.mjs → useLocale-DTJx3aKR.mjs} +10 -7
- package/dist/{useLogger-DFIRqm-N.mjs → useLogger-BBTcMN61.mjs} +3 -3
- package/dist/useNotifications-H4knpvNw.mjs +869 -0
- package/dist/{usePermissions-tZhkBJmq.mjs → usePermissions-B_G12Dwd.mjs} +6 -6
- package/dist/{useRules-D3UXEtu7.mjs → useRules--7Qoo60I.mjs} +7 -5
- package/dist/{useTheme-BeD__R8t.mjs → useTheme-Co05TEeD.mjs} +11 -8
- package/dist/utilities/index.d.mts +1 -1
- package/dist/utilities/index.mjs +10 -5
- package/dist/{v0-6XptGYVx.mjs → v0-BrTEO5sv.mjs} +2 -2
- package/dist/{v0-Dzw5OwNo.d.mts → v0-CdusXjY_.d.mts} +1 -1
- package/dist/{v0-I2mHxD9T.mjs → v0-D0Mh3EVG.mjs} +1 -1
- package/dist/{v0-CWXUkMY0.d.mts → v0-D7Fm2C3Y.d.mts} +1 -1
- package/dist/{v0-CNitYI9N.mjs → v0-DeiZuexg.mjs} +1 -1
- package/dist/{v0-BG7RhKBv.mjs → v0-Dq3zhexO.mjs} +2 -2
- package/dist/{v0-C2UMaHUa.d.mts → v0-DrOub-e1.d.mts} +1 -1
- package/dist/{virtual-To-dSw2_.mjs → virtual-C0yHf1DC.mjs} +2 -2
- package/dist/{virtual-BCOfxnRS.d.mts → virtual-D4fckewC.d.mts} +1 -1
- package/package.json +1 -1
- package/dist/adapters-BhNTUuxE.mjs +0 -2
- package/dist/adapters-CFjrKxA2.mjs +0 -5
- package/dist/adapters-CiCexgsk.mjs +0 -4
- package/dist/adapters-DegUcfkd.mjs +0 -2
- package/dist/htmlElements-CIePKaTX.mjs +0 -75
- package/dist/index-D6mQAEs2.d.mts +0 -79
- /package/dist/{adapter-DNKjooxI.d.mts → adapter-Dhq68tz0.d.mts} +0 -0
- /package/dist/{createPagination-qvJkcTUY.mjs → createPagination-CHF7SmmK.mjs} +0 -0
- /package/dist/{flagsmith-DQnnahG5.mjs → flagsmith-Dbh1h8WF.mjs} +0 -0
- /package/dist/{index-DxruGeVY.d.mts → index-C6rdXZ7j.d.mts} +0 -0
- /package/dist/{index-DvuJXuAN.d.mts → index-CFhUdAHM.d.mts} +0 -0
- /package/dist/{index-PWQavSPf.d.mts → index-CROz1VSV.d.mts} +0 -0
- /package/dist/{index-D4odwkZg.d.mts → index-DTvqw22G.d.mts} +0 -0
- /package/dist/{launchdarkly-2_48EJ1_.mjs → launchdarkly-BKtW-idu.mjs} +0 -0
- /package/dist/{memory-DUyWthic.d.mts → memory-CeSQE-QV.d.mts} +0 -0
- /package/dist/{memory-XCMtkld1.mjs → memory-oYBvtkgx.mjs} +0 -0
- /package/dist/{v0-4OQBCeda.mjs → v0-Bmow1q_x.mjs} +0 -0
|
@@ -1,21 +1,23 @@
|
|
|
1
|
-
import { a as SUPPORTS_OBSERVER, i as SUPPORTS_MUTATION_OBSERVER, n as SUPPORTS_INTERSECTION_OBSERVER, r as SUPPORTS_MATCH_MEDIA, t as IN_BROWSER } from "./globals-
|
|
1
|
+
import { a as SUPPORTS_OBSERVER, i as SUPPORTS_MUTATION_OBSERVER, n as SUPPORTS_INTERSECTION_OBSERVER, r as SUPPORTS_MATCH_MEDIA, t as IN_BROWSER } from "./globals-CKdzjeLe.mjs";
|
|
2
2
|
import { clamp, instanceExists, isArray, isElement, isFunction, isNull, isNullOrUndefined, isNumber, isObject, isString, isUndefined, mergeDeep, range, resolveIds, resolveIndexes, useId as useId$1 } from "./utilities/index.mjs";
|
|
3
3
|
import { i as useContext, t as createTrinity } from "./createTrinity-BTCs1pYx.mjs";
|
|
4
|
-
import { a as createPlugin, i as useLogger, o as createPluginContext } from "./useLogger-
|
|
5
|
-
import {
|
|
6
|
-
import { i as createModel, t as createSelection } from "./createSelection-
|
|
7
|
-
import { t as createSingle } from "./createSingle-
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { t as
|
|
12
|
-
import "./
|
|
13
|
-
import "./
|
|
14
|
-
import
|
|
15
|
-
import "./
|
|
16
|
-
import "./
|
|
17
|
-
import
|
|
18
|
-
import "./
|
|
4
|
+
import { a as createPlugin, i as useLogger, o as createPluginContext } from "./useLogger-BBTcMN61.mjs";
|
|
5
|
+
import { t as createRegistry } from "./createRegistry-Dl-bSSTr.mjs";
|
|
6
|
+
import { i as createModel, t as createSelection } from "./createSelection-Csaa-C8p.mjs";
|
|
7
|
+
import { t as createSingle } from "./createSingle-8xbHAIpY.mjs";
|
|
8
|
+
import "./createTokens-lNg2M_P_.mjs";
|
|
9
|
+
import { a as useLocale } from "./useLocale-DTJx3aKR.mjs";
|
|
10
|
+
import { c as useTimer } from "./useNotifications-H4knpvNw.mjs";
|
|
11
|
+
import { t as toArray } from "./toArray-as9BWxBK.mjs";
|
|
12
|
+
import { n as createFilter } from "./adapter-gQ2SNKZq.mjs";
|
|
13
|
+
import { t as createGroup } from "./createGroup-BU4olYtB.mjs";
|
|
14
|
+
import "./createPagination-CHF7SmmK.mjs";
|
|
15
|
+
import "./createDataTable-rXBqGglI.mjs";
|
|
16
|
+
import { a as useRules, o as isStandardSchema } from "./useRules--7Qoo60I.mjs";
|
|
17
|
+
import "./useFeatures-ZIvzzuEV.mjs";
|
|
18
|
+
import "./usePermissions-B_G12Dwd.mjs";
|
|
19
|
+
import { t as MemoryAdapter } from "./memory-oYBvtkgx.mjs";
|
|
20
|
+
import "./useTheme-Co05TEeD.mjs";
|
|
19
21
|
import { computed, effectScope, hasInjectionContext, isRef, nextTick, onMounted, onScopeDispose, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, toRef, toValue, unref, watch, watchEffect } from "vue";
|
|
20
22
|
//#region src/composables/createBreadcrumbs/index.ts
|
|
21
23
|
/**
|
|
@@ -169,142 +171,6 @@ function useBreadcrumbs(namespace = "v0:breadcrumbs") {
|
|
|
169
171
|
return useContext(namespace);
|
|
170
172
|
}
|
|
171
173
|
//#endregion
|
|
172
|
-
//#region src/composables/useTimer/index.ts
|
|
173
|
-
/**
|
|
174
|
-
* @module useTimer
|
|
175
|
-
*
|
|
176
|
-
* @see https://0.vuetifyjs.com/composables/system/use-timer
|
|
177
|
-
*
|
|
178
|
-
* @remarks
|
|
179
|
-
* A reactive timer composable with pause/resume support.
|
|
180
|
-
*
|
|
181
|
-
* Key features:
|
|
182
|
-
* - Start/stop/pause/resume controls
|
|
183
|
-
* - Reactive remaining time tracking
|
|
184
|
-
* - One-shot (default) or repeating mode
|
|
185
|
-
* - Automatic cleanup on scope disposal
|
|
186
|
-
* - SSR-safe
|
|
187
|
-
*
|
|
188
|
-
* @example
|
|
189
|
-
* ```ts
|
|
190
|
-
* import { useTimer } from '@vuetify/v0'
|
|
191
|
-
*
|
|
192
|
-
* const timer = useTimer(() => console.log('fired'), { duration: 5000 })
|
|
193
|
-
* timer.start()
|
|
194
|
-
* ```
|
|
195
|
-
*/
|
|
196
|
-
/**
|
|
197
|
-
* Creates a reactive timer with pause/resume support.
|
|
198
|
-
*
|
|
199
|
-
* @param handler Callback invoked when the timer fires.
|
|
200
|
-
* @param options Timer configuration.
|
|
201
|
-
* @returns Timer controls and reactive state.
|
|
202
|
-
*
|
|
203
|
-
* @see https://0.vuetifyjs.com/composables/system/use-timer
|
|
204
|
-
*
|
|
205
|
-
* @example
|
|
206
|
-
* ```ts
|
|
207
|
-
* const timer = useTimer(() => console.log('fired'), { duration: 5000 })
|
|
208
|
-
*
|
|
209
|
-
* timer.start()
|
|
210
|
-
* timer.pause()
|
|
211
|
-
* timer.resume()
|
|
212
|
-
* timer.stop()
|
|
213
|
-
* ```
|
|
214
|
-
*/
|
|
215
|
-
function useTimer(handler, options = {}) {
|
|
216
|
-
const { duration = 1e3, repeat = false } = options;
|
|
217
|
-
const remaining = shallowRef(duration);
|
|
218
|
-
const isActive = shallowRef(false);
|
|
219
|
-
const isPaused = shallowRef(false);
|
|
220
|
-
let timeoutId;
|
|
221
|
-
let trackingId;
|
|
222
|
-
let startedAt = 0;
|
|
223
|
-
let budget = duration;
|
|
224
|
-
function clearTimer() {
|
|
225
|
-
if (!/* @__PURE__ */ isUndefined(timeoutId)) {
|
|
226
|
-
globalThis.clearTimeout(timeoutId);
|
|
227
|
-
timeoutId = void 0;
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
function startTracking() {
|
|
231
|
-
stopTracking();
|
|
232
|
-
if (!IN_BROWSER) return;
|
|
233
|
-
trackingId = globalThis.setInterval(() => {
|
|
234
|
-
if (!isActive.value || isPaused.value) return;
|
|
235
|
-
const elapsed = Date.now() - startedAt;
|
|
236
|
-
remaining.value = Math.max(0, budget - elapsed);
|
|
237
|
-
}, 100);
|
|
238
|
-
}
|
|
239
|
-
function stopTracking() {
|
|
240
|
-
if (!/* @__PURE__ */ isUndefined(trackingId)) {
|
|
241
|
-
globalThis.clearInterval(trackingId);
|
|
242
|
-
trackingId = void 0;
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
function fire() {
|
|
246
|
-
clearTimer();
|
|
247
|
-
stopTracking();
|
|
248
|
-
handler();
|
|
249
|
-
if (repeat) begin(duration);
|
|
250
|
-
else {
|
|
251
|
-
isActive.value = false;
|
|
252
|
-
remaining.value = 0;
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
function begin(ms) {
|
|
256
|
-
clearTimer();
|
|
257
|
-
stopTracking();
|
|
258
|
-
budget = ms;
|
|
259
|
-
startedAt = Date.now();
|
|
260
|
-
remaining.value = ms;
|
|
261
|
-
isActive.value = true;
|
|
262
|
-
isPaused.value = false;
|
|
263
|
-
timeoutId = globalThis.setTimeout(fire, ms);
|
|
264
|
-
startTracking();
|
|
265
|
-
}
|
|
266
|
-
function start() {
|
|
267
|
-
if (duration < 0) return;
|
|
268
|
-
begin(duration);
|
|
269
|
-
}
|
|
270
|
-
function stop() {
|
|
271
|
-
clearTimer();
|
|
272
|
-
stopTracking();
|
|
273
|
-
isActive.value = false;
|
|
274
|
-
isPaused.value = false;
|
|
275
|
-
remaining.value = duration;
|
|
276
|
-
}
|
|
277
|
-
function pause() {
|
|
278
|
-
if (!isActive.value || isPaused.value) return;
|
|
279
|
-
const elapsed = Date.now() - startedAt;
|
|
280
|
-
budget = Math.max(0, budget - elapsed);
|
|
281
|
-
remaining.value = budget;
|
|
282
|
-
clearTimer();
|
|
283
|
-
stopTracking();
|
|
284
|
-
isPaused.value = true;
|
|
285
|
-
}
|
|
286
|
-
function resume() {
|
|
287
|
-
if (!isPaused.value) return;
|
|
288
|
-
isPaused.value = false;
|
|
289
|
-
startedAt = Date.now();
|
|
290
|
-
timeoutId = globalThis.setTimeout(fire, budget);
|
|
291
|
-
startTracking();
|
|
292
|
-
}
|
|
293
|
-
onScopeDispose(() => {
|
|
294
|
-
clearTimer();
|
|
295
|
-
stopTracking();
|
|
296
|
-
}, true);
|
|
297
|
-
return {
|
|
298
|
-
start,
|
|
299
|
-
stop,
|
|
300
|
-
pause,
|
|
301
|
-
resume,
|
|
302
|
-
remaining,
|
|
303
|
-
isActive,
|
|
304
|
-
isPaused
|
|
305
|
-
};
|
|
306
|
-
}
|
|
307
|
-
//#endregion
|
|
308
174
|
//#region src/composables/usePopover/index.ts
|
|
309
175
|
/**
|
|
310
176
|
* @module usePopover
|
|
@@ -797,7 +663,7 @@ function createCombobox(options = {}) {
|
|
|
797
663
|
const hasError = shallowRef(false);
|
|
798
664
|
const errors = computed(() => {
|
|
799
665
|
const messages = toValue(errorMessages);
|
|
800
|
-
return messages ? toArray(messages) : [];
|
|
666
|
+
return messages ? /* @__PURE__ */ toArray(messages) : [];
|
|
801
667
|
});
|
|
802
668
|
const isValid = toRef(() => {
|
|
803
669
|
if (toValue(error)) return false;
|
|
@@ -1043,7 +909,7 @@ function createForm(options = {}) {
|
|
|
1043
909
|
for (const ticket of registry.values()) ticket.value.reset();
|
|
1044
910
|
}
|
|
1045
911
|
async function submit(id) {
|
|
1046
|
-
const ids = id ? toArray(id) : [...registry.keys()];
|
|
912
|
+
const ids = id ? /* @__PURE__ */ toArray(id) : [...registry.keys()];
|
|
1047
913
|
return (await Promise.all(ids.map(async (key) => {
|
|
1048
914
|
const ticket = registry.get(key);
|
|
1049
915
|
if (!ticket) return true;
|
|
@@ -1182,7 +1048,7 @@ function createValidation(_options = {}) {
|
|
|
1182
1048
|
const isValidating = shallowRef(false);
|
|
1183
1049
|
let generation = 0;
|
|
1184
1050
|
function register(input) {
|
|
1185
|
-
if (/* @__PURE__ */ isFunction(input) || /* @__PURE__ */ isString(input) || isStandardSchema(input)) {
|
|
1051
|
+
if (/* @__PURE__ */ isFunction(input) || /* @__PURE__ */ isString(input) || /* @__PURE__ */ isStandardSchema(input)) {
|
|
1186
1052
|
const resolved = rulesContext.resolve([input]);
|
|
1187
1053
|
return group.register({ value: resolved[0] ?? (() => true) });
|
|
1188
1054
|
}
|
|
@@ -1300,7 +1166,7 @@ function createInput(options) {
|
|
|
1300
1166
|
}, { flush: "sync" });
|
|
1301
1167
|
const errors = computed(() => {
|
|
1302
1168
|
const manual = toValue(errorMessages);
|
|
1303
|
-
return [...manual ? toArray(manual) : [], ...validation.errors.value];
|
|
1169
|
+
return [...manual ? /* @__PURE__ */ toArray(manual) : [], ...validation.errors.value];
|
|
1304
1170
|
});
|
|
1305
1171
|
const isValid = toRef(() => {
|
|
1306
1172
|
if (toValue(error)) return false;
|
|
@@ -1443,7 +1309,7 @@ function createNested(_options = {}) {
|
|
|
1443
1309
|
}
|
|
1444
1310
|
function open(ids) {
|
|
1445
1311
|
if (toValue(group.disabled)) return;
|
|
1446
|
-
for (const id of toArray(ids)) {
|
|
1312
|
+
for (const id of /* @__PURE__ */ toArray(ids)) {
|
|
1447
1313
|
if (!group.has(id)) continue;
|
|
1448
1314
|
const item = group.get(id);
|
|
1449
1315
|
if (!item || toValue(item.disabled)) continue;
|
|
@@ -1462,7 +1328,7 @@ function createNested(_options = {}) {
|
|
|
1462
1328
|
}
|
|
1463
1329
|
function close(ids) {
|
|
1464
1330
|
if (toValue(group.disabled)) return;
|
|
1465
|
-
for (const id of toArray(ids)) {
|
|
1331
|
+
for (const id of /* @__PURE__ */ toArray(ids)) {
|
|
1466
1332
|
if (!group.has(id)) continue;
|
|
1467
1333
|
const item = group.get(id);
|
|
1468
1334
|
if (!item || toValue(item.disabled)) continue;
|
|
@@ -1471,7 +1337,7 @@ function createNested(_options = {}) {
|
|
|
1471
1337
|
}
|
|
1472
1338
|
function flip(ids) {
|
|
1473
1339
|
if (toValue(group.disabled)) return;
|
|
1474
|
-
for (const id of toArray(ids)) {
|
|
1340
|
+
for (const id of /* @__PURE__ */ toArray(ids)) {
|
|
1475
1341
|
if (!group.has(id)) continue;
|
|
1476
1342
|
const item = group.get(id);
|
|
1477
1343
|
if (!item || toValue(item.disabled)) continue;
|
|
@@ -1484,7 +1350,7 @@ function createNested(_options = {}) {
|
|
|
1484
1350
|
* Useful for expanding a section with its immediate subcategories.
|
|
1485
1351
|
*/
|
|
1486
1352
|
function unfold(ids) {
|
|
1487
|
-
for (const id of toArray(ids)) {
|
|
1353
|
+
for (const id of /* @__PURE__ */ toArray(ids)) {
|
|
1488
1354
|
if (!group.has(id)) continue;
|
|
1489
1355
|
open(id);
|
|
1490
1356
|
const childIds = children.get(id) ?? [];
|
|
@@ -1496,7 +1362,7 @@ function createNested(_options = {}) {
|
|
|
1496
1362
|
* Makes the node visible in a collapsed tree without opening the node itself.
|
|
1497
1363
|
*/
|
|
1498
1364
|
function reveal(ids) {
|
|
1499
|
-
for (const id of toArray(ids)) {
|
|
1365
|
+
for (const id of /* @__PURE__ */ toArray(ids)) {
|
|
1500
1366
|
if (!group.has(id)) continue;
|
|
1501
1367
|
const ancestorIds = getAncestors(id);
|
|
1502
1368
|
if (ancestorIds.length > 0) open(ancestorIds);
|
|
@@ -1507,7 +1373,7 @@ function createNested(_options = {}) {
|
|
|
1507
1373
|
* Opens the entire subtree rooted at the given node.
|
|
1508
1374
|
*/
|
|
1509
1375
|
function expand(ids) {
|
|
1510
|
-
for (const id of toArray(ids)) {
|
|
1376
|
+
for (const id of /* @__PURE__ */ toArray(ids)) {
|
|
1511
1377
|
if (!group.has(id)) continue;
|
|
1512
1378
|
if (!isLeaf(id)) open(id);
|
|
1513
1379
|
for (const descendantId of getDescendants(id)) if (!isLeaf(descendantId)) open(descendantId);
|
|
@@ -1533,7 +1399,7 @@ function createNested(_options = {}) {
|
|
|
1533
1399
|
return activeIds.has(id);
|
|
1534
1400
|
}
|
|
1535
1401
|
function activate(ids) {
|
|
1536
|
-
for (const id of toArray(ids)) {
|
|
1402
|
+
for (const id of /* @__PURE__ */ toArray(ids)) {
|
|
1537
1403
|
if (!group.has(id)) continue;
|
|
1538
1404
|
if (activeMode === "single") {
|
|
1539
1405
|
for (const activeId of activeIds) if (activeId !== id) activeIds.delete(activeId);
|
|
@@ -1542,7 +1408,7 @@ function createNested(_options = {}) {
|
|
|
1542
1408
|
}
|
|
1543
1409
|
}
|
|
1544
1410
|
function deactivate(ids) {
|
|
1545
|
-
for (const id of toArray(ids)) activeIds.delete(id);
|
|
1411
|
+
for (const id of /* @__PURE__ */ toArray(ids)) activeIds.delete(id);
|
|
1546
1412
|
}
|
|
1547
1413
|
function deactivateAll() {
|
|
1548
1414
|
activeIds.clear();
|
|
@@ -1674,7 +1540,7 @@ function createNested(_options = {}) {
|
|
|
1674
1540
|
}
|
|
1675
1541
|
function select(ids) {
|
|
1676
1542
|
if (toValue(group.disabled)) return;
|
|
1677
|
-
for (const id of toArray(ids)) {
|
|
1543
|
+
for (const id of /* @__PURE__ */ toArray(ids)) {
|
|
1678
1544
|
if (!group.has(id)) continue;
|
|
1679
1545
|
const item = group.get(id);
|
|
1680
1546
|
if (!item || toValue(item.disabled)) continue;
|
|
@@ -1701,7 +1567,7 @@ function createNested(_options = {}) {
|
|
|
1701
1567
|
}
|
|
1702
1568
|
function unselect(ids) {
|
|
1703
1569
|
if (toValue(group.disabled)) return;
|
|
1704
|
-
for (const id of toArray(ids)) {
|
|
1570
|
+
for (const id of /* @__PURE__ */ toArray(ids)) {
|
|
1705
1571
|
if (!group.has(id)) continue;
|
|
1706
1572
|
const item = group.get(id);
|
|
1707
1573
|
if (!item || toValue(item.disabled)) continue;
|
|
@@ -1728,7 +1594,7 @@ function createNested(_options = {}) {
|
|
|
1728
1594
|
}
|
|
1729
1595
|
function toggle(ids) {
|
|
1730
1596
|
if (toValue(group.disabled)) return;
|
|
1731
|
-
for (const id of toArray(ids)) {
|
|
1597
|
+
for (const id of /* @__PURE__ */ toArray(ids)) {
|
|
1732
1598
|
const item = group.get(id);
|
|
1733
1599
|
if (!item || toValue(item.disabled)) continue;
|
|
1734
1600
|
if (selectionMode === "independent") group.toggle(id);
|
|
@@ -2947,205 +2813,6 @@ function useProgress(namespace = "v0:progress") {
|
|
|
2947
2813
|
return useContext(namespace);
|
|
2948
2814
|
}
|
|
2949
2815
|
//#endregion
|
|
2950
|
-
//#region src/composables/createQueue/index.ts
|
|
2951
|
-
/**
|
|
2952
|
-
* @module createQueue
|
|
2953
|
-
*
|
|
2954
|
-
* @see https://0.vuetifyjs.com/composables/registration/create-queue
|
|
2955
|
-
*
|
|
2956
|
-
* @remarks
|
|
2957
|
-
* A queue composable for managing time-based collections with:
|
|
2958
|
-
* - Automatic timeout-based removal
|
|
2959
|
-
* - Pause/resume functionality
|
|
2960
|
-
* - FIFO (First In, First Out) ordering
|
|
2961
|
-
* - Manual dismissal support
|
|
2962
|
-
* - Queue progression management
|
|
2963
|
-
*
|
|
2964
|
-
* Built on top of createRegistry, the queue automatically manages timeouts for tickets,
|
|
2965
|
-
* ensuring only the first ticket in the queue is active at any time. When a ticket
|
|
2966
|
-
* expires or is removed, the next ticket in the queue automatically becomes active.
|
|
2967
|
-
*
|
|
2968
|
-
* @example
|
|
2969
|
-
* ```ts
|
|
2970
|
-
* import { createQueue } from '@vuetify/v0'
|
|
2971
|
-
*
|
|
2972
|
-
* const queue = createQueue()
|
|
2973
|
-
* queue.register({ value: 'Notification 1', timeout: 3000 })
|
|
2974
|
-
* queue.register({ value: 'Notification 2', timeout: 3000 })
|
|
2975
|
-
* ```
|
|
2976
|
-
*/
|
|
2977
|
-
/**
|
|
2978
|
-
* Creates a new queue instance
|
|
2979
|
-
*
|
|
2980
|
-
* @param options The options for the queue instance
|
|
2981
|
-
* @returns A new queue instance
|
|
2982
|
-
*
|
|
2983
|
-
* @see https://0.vuetifyjs.com/composables/registration/create-queue
|
|
2984
|
-
*
|
|
2985
|
-
* @example
|
|
2986
|
-
* ```ts
|
|
2987
|
-
* import { useQueue } from '@vuetify/v0'
|
|
2988
|
-
*
|
|
2989
|
-
* const queue = useQueue()
|
|
2990
|
-
*
|
|
2991
|
-
* // Register an ticket with default timeout (3000ms)
|
|
2992
|
-
* const ticket1 = queue.register({ value: 'Ticket 1' })
|
|
2993
|
-
*
|
|
2994
|
-
* // Register an ticket with custom timeout
|
|
2995
|
-
* const ticket2 = queue.register({ value: 'Ticket 2', timeout: 5000 })
|
|
2996
|
-
*
|
|
2997
|
-
* // Register a persistent ticket that must be manually dismissed
|
|
2998
|
-
* const ticket3 = queue.register({ value: 'Ticket 3', timeout: -1 })
|
|
2999
|
-
*
|
|
3000
|
-
* // Dismiss an ticket using the convenience method
|
|
3001
|
-
* ticket3.dismiss()
|
|
3002
|
-
*
|
|
3003
|
-
* console.log(queue.size) // 2
|
|
3004
|
-
* ```
|
|
3005
|
-
*/
|
|
3006
|
-
function createQueue(_options = {}) {
|
|
3007
|
-
const { timeout: _timeout = 3e3, ...options } = _options;
|
|
3008
|
-
const registry = createRegistry({
|
|
3009
|
-
...options,
|
|
3010
|
-
events: true
|
|
3011
|
-
});
|
|
3012
|
-
const timers = /* @__PURE__ */ new Map();
|
|
3013
|
-
function createTicketTimer(ticket) {
|
|
3014
|
-
if (/* @__PURE__ */ isUndefined(ticket.timeout) || ticket.timeout < 0 || ticket.isPaused) return;
|
|
3015
|
-
const timer = useTimer(() => {
|
|
3016
|
-
timers.delete(ticket.id);
|
|
3017
|
-
registry.unregister(ticket.id);
|
|
3018
|
-
resume();
|
|
3019
|
-
}, { duration: ticket.timeout });
|
|
3020
|
-
timers.set(ticket.id, timer);
|
|
3021
|
-
timer.start();
|
|
3022
|
-
}
|
|
3023
|
-
function stopTimer(id) {
|
|
3024
|
-
const timer = timers.get(id);
|
|
3025
|
-
if (timer) {
|
|
3026
|
-
timer.stop();
|
|
3027
|
-
timers.delete(id);
|
|
3028
|
-
}
|
|
3029
|
-
}
|
|
3030
|
-
function register(registration = {}) {
|
|
3031
|
-
const id = registration.id ?? /* @__PURE__ */ useId$1();
|
|
3032
|
-
const timeout = Object.prototype.hasOwnProperty.call(registration, "timeout") ? registration.timeout : _timeout;
|
|
3033
|
-
const ticket = {
|
|
3034
|
-
...registration,
|
|
3035
|
-
id,
|
|
3036
|
-
timeout,
|
|
3037
|
-
isPaused: registry.size > 0,
|
|
3038
|
-
dismiss: () => unregister(id)
|
|
3039
|
-
};
|
|
3040
|
-
const registered = registry.register(ticket);
|
|
3041
|
-
createTicketTimer(registered);
|
|
3042
|
-
return registered;
|
|
3043
|
-
}
|
|
3044
|
-
function unregister(id) {
|
|
3045
|
-
const ticket = /* @__PURE__ */ isUndefined(id) ? registry.seek("first") : registry.get(id);
|
|
3046
|
-
if (!ticket) return void 0;
|
|
3047
|
-
const wasFirst = ticket.index === 0;
|
|
3048
|
-
stopTimer(ticket.id);
|
|
3049
|
-
registry.unregister(ticket.id);
|
|
3050
|
-
if (wasFirst) resume();
|
|
3051
|
-
return ticket;
|
|
3052
|
-
}
|
|
3053
|
-
function offboard(ids) {
|
|
3054
|
-
let hadFirst = false;
|
|
3055
|
-
for (const id of ids) {
|
|
3056
|
-
const ticket = registry.get(id);
|
|
3057
|
-
if (!ticket) continue;
|
|
3058
|
-
if (ticket.index === 0) hadFirst = true;
|
|
3059
|
-
stopTimer(ticket.id);
|
|
3060
|
-
}
|
|
3061
|
-
registry.offboard(ids);
|
|
3062
|
-
if (hadFirst) resume();
|
|
3063
|
-
}
|
|
3064
|
-
function pause() {
|
|
3065
|
-
const ticket = registry.seek("first");
|
|
3066
|
-
if (!ticket || ticket.isPaused) return void 0;
|
|
3067
|
-
timers.get(ticket.id)?.pause();
|
|
3068
|
-
return registry.upsert(ticket.id, { isPaused: true });
|
|
3069
|
-
}
|
|
3070
|
-
function resume() {
|
|
3071
|
-
const ticket = registry.seek("first");
|
|
3072
|
-
if (!ticket || ticket.index !== 0 || !ticket.isPaused) return void 0;
|
|
3073
|
-
const updated = registry.upsert(ticket.id, { isPaused: false });
|
|
3074
|
-
const timer = timers.get(updated.id);
|
|
3075
|
-
if (timer) timer.start();
|
|
3076
|
-
else createTicketTimer(updated);
|
|
3077
|
-
return updated;
|
|
3078
|
-
}
|
|
3079
|
-
function clear() {
|
|
3080
|
-
for (const timer of timers.values()) timer.stop();
|
|
3081
|
-
timers.clear();
|
|
3082
|
-
registry.clear();
|
|
3083
|
-
}
|
|
3084
|
-
function dispose() {
|
|
3085
|
-
clear();
|
|
3086
|
-
registry.dispose();
|
|
3087
|
-
}
|
|
3088
|
-
onScopeDispose(dispose, true);
|
|
3089
|
-
function onboard(registrations) {
|
|
3090
|
-
return registry.batch(() => registrations.map((registration) => register(registration)));
|
|
3091
|
-
}
|
|
3092
|
-
return {
|
|
3093
|
-
...registry,
|
|
3094
|
-
register,
|
|
3095
|
-
unregister,
|
|
3096
|
-
onboard,
|
|
3097
|
-
offboard,
|
|
3098
|
-
pause,
|
|
3099
|
-
resume,
|
|
3100
|
-
clear,
|
|
3101
|
-
dispose,
|
|
3102
|
-
get size() {
|
|
3103
|
-
return registry.size;
|
|
3104
|
-
}
|
|
3105
|
-
};
|
|
3106
|
-
}
|
|
3107
|
-
/**
|
|
3108
|
-
* Creates a new queue context.
|
|
3109
|
-
*
|
|
3110
|
-
* @param options The options for the queue context.
|
|
3111
|
-
* @returns A new queue context.
|
|
3112
|
-
*
|
|
3113
|
-
* @see https://0.vuetifyjs.com/composables/registration/create-queue
|
|
3114
|
-
*
|
|
3115
|
-
* @example
|
|
3116
|
-
* ```ts
|
|
3117
|
-
* import { createQueueContext } from '@vuetify/v0'
|
|
3118
|
-
*
|
|
3119
|
-
* export const [useQueue, provideQueue, context] = createQueueContext({
|
|
3120
|
-
* timeout: 5000,
|
|
3121
|
-
* })
|
|
3122
|
-
* ```
|
|
3123
|
-
*/
|
|
3124
|
-
function createQueueContext(_options = {}) {
|
|
3125
|
-
const { namespace = "v0:queue", ...options } = _options;
|
|
3126
|
-
return createTrinity(namespace, createQueue(options));
|
|
3127
|
-
}
|
|
3128
|
-
/**
|
|
3129
|
-
* Returns the current queue instance.
|
|
3130
|
-
*
|
|
3131
|
-
* @param namespace The namespace for the queue context. Defaults to `'v0:queue'`.
|
|
3132
|
-
* @returns The current queue instance.
|
|
3133
|
-
*
|
|
3134
|
-
* @see https://0.vuetifyjs.com/composables/registration/create-queue
|
|
3135
|
-
*
|
|
3136
|
-
* @example
|
|
3137
|
-
* ```vue
|
|
3138
|
-
* <script setup lang="ts">
|
|
3139
|
-
* import { useQueue } from '@vuetify/v0'
|
|
3140
|
-
*
|
|
3141
|
-
* const queue = useQueue()
|
|
3142
|
-
* <\/script>
|
|
3143
|
-
* ```
|
|
3144
|
-
*/
|
|
3145
|
-
function useQueue(namespace = "v0:queue") {
|
|
3146
|
-
return useContext(namespace);
|
|
3147
|
-
}
|
|
3148
|
-
//#endregion
|
|
3149
2816
|
//#region src/composables/createRating/index.ts
|
|
3150
2817
|
/**
|
|
3151
2818
|
* @module createRating
|
|
@@ -4697,7 +4364,7 @@ function createDate(options) {
|
|
|
4697
4364
|
const { locales = defaultLocales, adapter, locale: initialLocale, firstDayOfWeek: explicitFirstDay } = options;
|
|
4698
4365
|
let selectedId;
|
|
4699
4366
|
try {
|
|
4700
|
-
if (instanceExists()) selectedId = useLocale().selectedId;
|
|
4367
|
+
if (/* @__PURE__ */ instanceExists()) selectedId = useLocale().selectedId;
|
|
4701
4368
|
} catch {}
|
|
4702
4369
|
const locale = computed(() => {
|
|
4703
4370
|
const selected = selectedId?.value;
|
|
@@ -4713,7 +4380,7 @@ function createDate(options) {
|
|
|
4713
4380
|
const loc = locale.value;
|
|
4714
4381
|
return loc ? deriveFirstDayOfWeek(loc) : 0;
|
|
4715
4382
|
});
|
|
4716
|
-
if (instanceExists()) onScopeDispose(watchEffect(() => {
|
|
4383
|
+
if (/* @__PURE__ */ instanceExists()) onScopeDispose(watchEffect(() => {
|
|
4717
4384
|
const loc = locale.value;
|
|
4718
4385
|
if (loc && adapter.locale !== loc) adapter.locale = loc;
|
|
4719
4386
|
const fdow = firstDayOfWeek.value;
|
|
@@ -4825,7 +4492,7 @@ function createDatePlugin(options) {
|
|
|
4825
4492
|
* ```
|
|
4826
4493
|
*/
|
|
4827
4494
|
function useDate(namespace = "v0:date") {
|
|
4828
|
-
if (
|
|
4495
|
+
if (!/* @__PURE__ */ instanceExists()) throw new Error("[v0] useDate() must be called inside a Vue component with createDatePlugin installed.\n\nExample:\n import { Vuetify0DateAdapter } from '@vuetify/v0/date'\n import { createDatePlugin } from '@vuetify/v0'\n\n app.use(createDatePlugin({ adapter: new Vuetify0DateAdapter() }))");
|
|
4829
4496
|
return useContext(namespace);
|
|
4830
4497
|
}
|
|
4831
4498
|
//#endregion
|
|
@@ -4855,6 +4522,7 @@ const keyAliasMap = {
|
|
|
4855
4522
|
minus: "-",
|
|
4856
4523
|
hyphen: "-"
|
|
4857
4524
|
};
|
|
4525
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
4858
4526
|
function normalizeKey(key) {
|
|
4859
4527
|
const lowerKey = key.toLowerCase();
|
|
4860
4528
|
return keyAliasMap[lowerKey] ?? lowerKey;
|
|
@@ -4906,7 +4574,7 @@ function splitKeyCombination(combination, isInternal = false) {
|
|
|
4906
4574
|
function flushBuffer(separator) {
|
|
4907
4575
|
if (buffer) {
|
|
4908
4576
|
if (separator) separators.push(separator);
|
|
4909
|
-
keys.push(normalizeKey(buffer));
|
|
4577
|
+
keys.push(/* @__PURE__ */ normalizeKey(buffer));
|
|
4910
4578
|
buffer = "";
|
|
4911
4579
|
}
|
|
4912
4580
|
}
|
|
@@ -4939,7 +4607,7 @@ function splitKeyCombination(combination, isInternal = false) {
|
|
|
4939
4607
|
return emptyResult;
|
|
4940
4608
|
}
|
|
4941
4609
|
if (keys.length === 0 && combination) return {
|
|
4942
|
-
keys: [normalizeKey(combination)],
|
|
4610
|
+
keys: [/* @__PURE__ */ normalizeKey(combination)],
|
|
4943
4611
|
separators
|
|
4944
4612
|
};
|
|
4945
4613
|
/* v8 ignore stop */
|
|
@@ -5849,533 +5517,6 @@ function useMutationObserver(target, callback, options = {}) {
|
|
|
5849
5517
|
});
|
|
5850
5518
|
}
|
|
5851
5519
|
//#endregion
|
|
5852
|
-
//#region src/composables/useNotifications/index.ts
|
|
5853
|
-
/**
|
|
5854
|
-
* @module useNotifications
|
|
5855
|
-
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications
|
|
5856
|
-
*
|
|
5857
|
-
* @remarks
|
|
5858
|
-
* Notification management composable built on createRegistry and createQueue.
|
|
5859
|
-
* Registry stores the full notification lifecycle (permanent record).
|
|
5860
|
-
* Queue manages the display surface (toasts) with FIFO ordering and auto-dismiss.
|
|
5861
|
-
*
|
|
5862
|
-
* Supports:
|
|
5863
|
-
* - Push notifications with severity levels and configurable timeouts
|
|
5864
|
-
* - State mutations: read, seen, archived, snoozed
|
|
5865
|
-
* - Bulk operations: readAll, archiveAll, clear
|
|
5866
|
-
* - Toast queue with pause/resume and auto-dismiss
|
|
5867
|
-
* - Adapter integration via event system
|
|
5868
|
-
* - Plugin installation via createNotificationsPlugin
|
|
5869
|
-
*
|
|
5870
|
-
* @example
|
|
5871
|
-
* ```ts
|
|
5872
|
-
* import { useNotifications } from '@vuetify/v0'
|
|
5873
|
-
*
|
|
5874
|
-
* const notifications = useNotifications()
|
|
5875
|
-
* notifications.send({ subject: 'Saved', severity: 'success' })
|
|
5876
|
-
* ```
|
|
5877
|
-
*/
|
|
5878
|
-
function createNotifications(options = {}) {
|
|
5879
|
-
const { timeout = 3e3, ...registryOptions } = options;
|
|
5880
|
-
const registry = createRegistry({
|
|
5881
|
-
...registryOptions,
|
|
5882
|
-
events: true,
|
|
5883
|
-
reactive: true
|
|
5884
|
-
});
|
|
5885
|
-
const queue = createQueue({
|
|
5886
|
-
timeout,
|
|
5887
|
-
events: true,
|
|
5888
|
-
reactive: true
|
|
5889
|
-
});
|
|
5890
|
-
registry.on("unregister:ticket", (ticket) => {
|
|
5891
|
-
if (queue.has(ticket.id)) queue.unregister(ticket.id);
|
|
5892
|
-
});
|
|
5893
|
-
/**
|
|
5894
|
-
* Build a full {@link NotificationTicket} from raw input
|
|
5895
|
-
*
|
|
5896
|
-
* @param input The notification input to hydrate.
|
|
5897
|
-
* @returns A partial ticket with timestamps, lifecycle methods, and an ID.
|
|
5898
|
-
* @internal Used by {@link send}, {@link register}, and {@link onboard}.
|
|
5899
|
-
*/
|
|
5900
|
-
function hydrate(input) {
|
|
5901
|
-
const id = input.id ?? /* @__PURE__ */ useId$1();
|
|
5902
|
-
const now = /* @__PURE__ */ new Date();
|
|
5903
|
-
return {
|
|
5904
|
-
...input,
|
|
5905
|
-
id,
|
|
5906
|
-
createdAt: now,
|
|
5907
|
-
readAt: null,
|
|
5908
|
-
seenAt: null,
|
|
5909
|
-
archivedAt: null,
|
|
5910
|
-
snoozedUntil: null,
|
|
5911
|
-
read: () => read(id),
|
|
5912
|
-
unread: () => unread(id),
|
|
5913
|
-
seen: () => seen(id),
|
|
5914
|
-
archive: () => archive(id),
|
|
5915
|
-
unarchive: () => unarchive(id),
|
|
5916
|
-
snooze: (until) => snooze(id, until),
|
|
5917
|
-
wake: () => wake(id),
|
|
5918
|
-
dismiss: () => queue.unregister(id)
|
|
5919
|
-
};
|
|
5920
|
-
}
|
|
5921
|
-
/**
|
|
5922
|
-
* Create a notification and enqueue it for toast display
|
|
5923
|
-
*
|
|
5924
|
-
* @param input The notification input to create.
|
|
5925
|
-
* @returns The hydrated notification ticket.
|
|
5926
|
-
* @remarks Hydrates the input with timestamps and lifecycle methods, registers
|
|
5927
|
-
* it in the registry, adds it to the display queue, and emits
|
|
5928
|
-
* `notification:received`. The ticket auto-dismisses after the configured
|
|
5929
|
-
* timeout unless paused.
|
|
5930
|
-
*
|
|
5931
|
-
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications
|
|
5932
|
-
*
|
|
5933
|
-
* @example
|
|
5934
|
-
* ```ts
|
|
5935
|
-
* import { useNotifications } from '@vuetify/v0'
|
|
5936
|
-
*
|
|
5937
|
-
* const notifications = useNotifications()
|
|
5938
|
-
*
|
|
5939
|
-
* // Basic toast
|
|
5940
|
-
* notifications.send({ subject: 'Changes saved', severity: 'success' })
|
|
5941
|
-
*
|
|
5942
|
-
* // With custom timeout
|
|
5943
|
-
* const ticket = notifications.send({ subject: 'Connection lost', severity: 'error', timeout: 10000 })
|
|
5944
|
-
*
|
|
5945
|
-
* console.log(ticket.id) // 'generated-id'
|
|
5946
|
-
* console.log(ticket.createdAt) // Date
|
|
5947
|
-
* console.log(ticket.readAt) // null
|
|
5948
|
-
*
|
|
5949
|
-
* // Ticket convenience methods
|
|
5950
|
-
* ticket.read() // marks as read
|
|
5951
|
-
* ticket.dismiss() // removes from toast queue, keeps in registry
|
|
5952
|
-
* ```
|
|
5953
|
-
*/
|
|
5954
|
-
function send(input) {
|
|
5955
|
-
const ticket = registry.register(hydrate(input));
|
|
5956
|
-
queue.register(/* @__PURE__ */ isUndefined(input.timeout) ? { id: ticket.id } : {
|
|
5957
|
-
id: ticket.id,
|
|
5958
|
-
timeout: input.timeout
|
|
5959
|
-
});
|
|
5960
|
-
registry.emit("notification:received", ticket);
|
|
5961
|
-
return ticket;
|
|
5962
|
-
}
|
|
5963
|
-
/**
|
|
5964
|
-
* Register a notification in the registry without adding it to the toast queue
|
|
5965
|
-
*
|
|
5966
|
-
* @param input The notification input to register.
|
|
5967
|
-
* @returns The hydrated notification ticket.
|
|
5968
|
-
* @remarks Overrides the base registry `register` to hydrate the input with
|
|
5969
|
-
* timestamps and lifecycle methods. Use for historical or pre-existing items
|
|
5970
|
-
* that should appear in an inbox but not pop up as toasts.
|
|
5971
|
-
*
|
|
5972
|
-
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications
|
|
5973
|
-
*
|
|
5974
|
-
* @example
|
|
5975
|
-
* ```ts
|
|
5976
|
-
* import { useNotifications } from '@vuetify/v0'
|
|
5977
|
-
*
|
|
5978
|
-
* const notifications = useNotifications()
|
|
5979
|
-
*
|
|
5980
|
-
* // Register a historical item (appears in inbox, not as toast)
|
|
5981
|
-
* const ticket = notifications.register({ id: 'old-1', subject: 'Deployed v2.1' })
|
|
5982
|
-
*
|
|
5983
|
-
* console.log(ticket.createdAt) // Date
|
|
5984
|
-
* console.log(ticket.readAt) // null
|
|
5985
|
-
*
|
|
5986
|
-
* // Lifecycle methods work the same as send()
|
|
5987
|
-
* ticket.read()
|
|
5988
|
-
* ticket.archive()
|
|
5989
|
-
* ```
|
|
5990
|
-
*/
|
|
5991
|
-
function register(input) {
|
|
5992
|
-
return registry.register(hydrate(input));
|
|
5993
|
-
}
|
|
5994
|
-
/**
|
|
5995
|
-
* Bulk version of {@link register}
|
|
5996
|
-
*
|
|
5997
|
-
* @param inputs Array of notification inputs to register.
|
|
5998
|
-
* @returns Array of hydrated notification tickets.
|
|
5999
|
-
* @remarks Registers multiple notifications into the registry without toast
|
|
6000
|
-
* display. Wraps all registrations in a single `registry.batch()` call so
|
|
6001
|
-
* reactive updates are deferred until the entire batch completes.
|
|
6002
|
-
*
|
|
6003
|
-
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications
|
|
6004
|
-
*
|
|
6005
|
-
* @example
|
|
6006
|
-
* ```ts
|
|
6007
|
-
* import { useNotifications } from '@vuetify/v0'
|
|
6008
|
-
*
|
|
6009
|
-
* const notifications = useNotifications()
|
|
6010
|
-
*
|
|
6011
|
-
* // Load historical items on mount
|
|
6012
|
-
* const tickets = notifications.onboard([
|
|
6013
|
-
* { id: 'n1', subject: 'Welcome to the team' },
|
|
6014
|
-
* { id: 'n2', subject: 'Setup complete', severity: 'success' },
|
|
6015
|
-
* ])
|
|
6016
|
-
*
|
|
6017
|
-
* console.log(tickets.length) // 2
|
|
6018
|
-
* console.log(notifications.queue.values()) // [] (no toasts)
|
|
6019
|
-
* console.log(notifications.values().length) // 2 (in registry)
|
|
6020
|
-
* ```
|
|
6021
|
-
*/
|
|
6022
|
-
function onboard(inputs) {
|
|
6023
|
-
return registry.batch(() => inputs.map((input) => register(input)));
|
|
6024
|
-
}
|
|
6025
|
-
/**
|
|
6026
|
-
* Mark a notification as read
|
|
6027
|
-
*
|
|
6028
|
-
* @param id The ID of the notification to mark as read.
|
|
6029
|
-
* @remarks Sets `readAt` to the current time and emits `notification:read`.
|
|
6030
|
-
* Adapters listen to this event for outbound sync.
|
|
6031
|
-
*
|
|
6032
|
-
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications
|
|
6033
|
-
*
|
|
6034
|
-
* @example
|
|
6035
|
-
* ```ts
|
|
6036
|
-
* import { useNotifications } from '@vuetify/v0'
|
|
6037
|
-
*
|
|
6038
|
-
* const notifications = useNotifications()
|
|
6039
|
-
*
|
|
6040
|
-
* const ticket = notifications.send({ subject: 'New message' })
|
|
6041
|
-
*
|
|
6042
|
-
* notifications.read(ticket.id)
|
|
6043
|
-
* console.log(ticket.readAt) // Date
|
|
6044
|
-
*
|
|
6045
|
-
* // Or via ticket convenience method
|
|
6046
|
-
* ticket.read()
|
|
6047
|
-
* ```
|
|
6048
|
-
*/
|
|
6049
|
-
function read(id) {
|
|
6050
|
-
registry.upsert(id, { readAt: /* @__PURE__ */ new Date() }, "notification:read");
|
|
6051
|
-
}
|
|
6052
|
-
/**
|
|
6053
|
-
* Mark a notification as unread
|
|
6054
|
-
*
|
|
6055
|
-
* @param id The ID of the notification to mark as unread.
|
|
6056
|
-
* @remarks Clears `readAt` and emits `notification:unread`.
|
|
6057
|
-
*
|
|
6058
|
-
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications
|
|
6059
|
-
*
|
|
6060
|
-
* @example
|
|
6061
|
-
* ```ts
|
|
6062
|
-
* import { useNotifications } from '@vuetify/v0'
|
|
6063
|
-
*
|
|
6064
|
-
* const notifications = useNotifications()
|
|
6065
|
-
*
|
|
6066
|
-
* notifications.unread('notif-1')
|
|
6067
|
-
* ```
|
|
6068
|
-
*/
|
|
6069
|
-
function unread(id) {
|
|
6070
|
-
registry.upsert(id, { readAt: null }, "notification:unread");
|
|
6071
|
-
}
|
|
6072
|
-
/**
|
|
6073
|
-
* Mark a notification as seen
|
|
6074
|
-
*
|
|
6075
|
-
* @param id The ID of the notification to mark as seen.
|
|
6076
|
-
* @remarks Sets `seenAt` to the current time and emits `notification:seen`.
|
|
6077
|
-
* Distinct from read — seen tracks whether the notification appeared in the
|
|
6078
|
-
* user's viewport, while read indicates the user actively engaged with it.
|
|
6079
|
-
*
|
|
6080
|
-
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications
|
|
6081
|
-
*
|
|
6082
|
-
* @example
|
|
6083
|
-
* ```ts
|
|
6084
|
-
* import { useNotifications } from '@vuetify/v0'
|
|
6085
|
-
*
|
|
6086
|
-
* const notifications = useNotifications()
|
|
6087
|
-
*
|
|
6088
|
-
* // Mark as seen when visible in inbox viewport
|
|
6089
|
-
* notifications.seen('notif-1')
|
|
6090
|
-
* ```
|
|
6091
|
-
*/
|
|
6092
|
-
function seen(id) {
|
|
6093
|
-
registry.upsert(id, { seenAt: /* @__PURE__ */ new Date() }, "notification:seen");
|
|
6094
|
-
}
|
|
6095
|
-
/**
|
|
6096
|
-
* Archive a notification
|
|
6097
|
-
*
|
|
6098
|
-
* @param id The ID of the notification to archive.
|
|
6099
|
-
* @remarks Sets `archivedAt` to the current time and emits `notification:archived`.
|
|
6100
|
-
*
|
|
6101
|
-
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications
|
|
6102
|
-
*
|
|
6103
|
-
* @example
|
|
6104
|
-
* ```ts
|
|
6105
|
-
* import { useNotifications } from '@vuetify/v0'
|
|
6106
|
-
*
|
|
6107
|
-
* const notifications = useNotifications()
|
|
6108
|
-
*
|
|
6109
|
-
* notifications.archive('notif-1')
|
|
6110
|
-
* ```
|
|
6111
|
-
*/
|
|
6112
|
-
function archive(id) {
|
|
6113
|
-
registry.upsert(id, { archivedAt: /* @__PURE__ */ new Date() }, "notification:archived");
|
|
6114
|
-
}
|
|
6115
|
-
/**
|
|
6116
|
-
* Restore an archived notification
|
|
6117
|
-
*
|
|
6118
|
-
* @param id The ID of the notification to unarchive.
|
|
6119
|
-
* @remarks Clears `archivedAt` and emits `notification:unarchived`.
|
|
6120
|
-
*
|
|
6121
|
-
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications
|
|
6122
|
-
*
|
|
6123
|
-
* @example
|
|
6124
|
-
* ```ts
|
|
6125
|
-
* import { useNotifications } from '@vuetify/v0'
|
|
6126
|
-
*
|
|
6127
|
-
* const notifications = useNotifications()
|
|
6128
|
-
*
|
|
6129
|
-
* notifications.unarchive('notif-1')
|
|
6130
|
-
* ```
|
|
6131
|
-
*/
|
|
6132
|
-
function unarchive(id) {
|
|
6133
|
-
registry.upsert(id, { archivedAt: null }, "notification:unarchived");
|
|
6134
|
-
}
|
|
6135
|
-
/**
|
|
6136
|
-
* Snooze a notification until a given time
|
|
6137
|
-
*
|
|
6138
|
-
* @param id The ID of the notification to snooze.
|
|
6139
|
-
* @param until The time at which the snooze expires.
|
|
6140
|
-
* @remarks Sets `snoozedUntil` and emits `notification:snoozed`. The composable
|
|
6141
|
-
* does not auto-wake — consumers are responsible for calling {@link wake} when
|
|
6142
|
-
* the snooze expires (e.g., via a timer or server push).
|
|
6143
|
-
*
|
|
6144
|
-
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications
|
|
6145
|
-
*
|
|
6146
|
-
* @example
|
|
6147
|
-
* ```ts
|
|
6148
|
-
* import { useNotifications } from '@vuetify/v0'
|
|
6149
|
-
*
|
|
6150
|
-
* const notifications = useNotifications()
|
|
6151
|
-
*
|
|
6152
|
-
* const tomorrow = new Date(Date.now() + 86_400_000)
|
|
6153
|
-
* notifications.snooze('notif-1', tomorrow)
|
|
6154
|
-
* ```
|
|
6155
|
-
*/
|
|
6156
|
-
function snooze(id, until) {
|
|
6157
|
-
registry.upsert(id, { snoozedUntil: until }, "notification:snoozed");
|
|
6158
|
-
}
|
|
6159
|
-
/**
|
|
6160
|
-
* Cancel a snooze
|
|
6161
|
-
*
|
|
6162
|
-
* @param id The ID of the notification to wake.
|
|
6163
|
-
* @remarks Clears `snoozedUntil` and emits `notification:unsnoozed`.
|
|
6164
|
-
*
|
|
6165
|
-
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications
|
|
6166
|
-
*
|
|
6167
|
-
* @example
|
|
6168
|
-
* ```ts
|
|
6169
|
-
* import { useNotifications } from '@vuetify/v0'
|
|
6170
|
-
*
|
|
6171
|
-
* const notifications = useNotifications()
|
|
6172
|
-
*
|
|
6173
|
-
* notifications.wake('notif-1')
|
|
6174
|
-
* ```
|
|
6175
|
-
*/
|
|
6176
|
-
function wake(id) {
|
|
6177
|
-
registry.upsert(id, { snoozedUntil: null }, "notification:unsnoozed");
|
|
6178
|
-
}
|
|
6179
|
-
/**
|
|
6180
|
-
* Mark all unread notifications as read
|
|
6181
|
-
*
|
|
6182
|
-
* @remarks Iterates all notifications and marks unread ones as read in a single
|
|
6183
|
-
* batch. Skips already-read notifications to preserve their original `readAt`
|
|
6184
|
-
* timestamp. Emits `notification:read` for each affected notification.
|
|
6185
|
-
*
|
|
6186
|
-
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications
|
|
6187
|
-
*
|
|
6188
|
-
* @example
|
|
6189
|
-
* ```ts
|
|
6190
|
-
* import { useNotifications } from '@vuetify/v0'
|
|
6191
|
-
*
|
|
6192
|
-
* const notifications = useNotifications()
|
|
6193
|
-
*
|
|
6194
|
-
* notifications.send({ subject: 'Message 1' })
|
|
6195
|
-
* notifications.send({ subject: 'Message 2' })
|
|
6196
|
-
*
|
|
6197
|
-
* notifications.readAll()
|
|
6198
|
-
*
|
|
6199
|
-
* console.log(notifications.values().every(t => t.readAt !== null)) // true
|
|
6200
|
-
* ```
|
|
6201
|
-
*/
|
|
6202
|
-
function readAll() {
|
|
6203
|
-
const now = /* @__PURE__ */ new Date();
|
|
6204
|
-
registry.batch(() => {
|
|
6205
|
-
for (const ticket of registry.values()) if (/* @__PURE__ */ isNull(ticket.readAt)) registry.upsert(ticket.id, { readAt: now }, "notification:read");
|
|
6206
|
-
});
|
|
6207
|
-
}
|
|
6208
|
-
/**
|
|
6209
|
-
* Archive all unarchived notifications
|
|
6210
|
-
*
|
|
6211
|
-
* @remarks Iterates all notifications and archives unarchived ones in a single
|
|
6212
|
-
* batch. Skips already-archived notifications to preserve their original
|
|
6213
|
-
* `archivedAt` timestamp. Emits `notification:archived` for each affected notification.
|
|
6214
|
-
*
|
|
6215
|
-
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications
|
|
6216
|
-
*
|
|
6217
|
-
* @example
|
|
6218
|
-
* ```ts
|
|
6219
|
-
* import { useNotifications } from '@vuetify/v0'
|
|
6220
|
-
*
|
|
6221
|
-
* const notifications = useNotifications()
|
|
6222
|
-
*
|
|
6223
|
-
* notifications.send({ subject: 'Alert 1' })
|
|
6224
|
-
* notifications.send({ subject: 'Alert 2' })
|
|
6225
|
-
*
|
|
6226
|
-
* notifications.archiveAll()
|
|
6227
|
-
*
|
|
6228
|
-
* console.log(notifications.values().every(t => t.archivedAt !== null)) // true
|
|
6229
|
-
* ```
|
|
6230
|
-
*/
|
|
6231
|
-
function archiveAll() {
|
|
6232
|
-
const now = /* @__PURE__ */ new Date();
|
|
6233
|
-
registry.batch(() => {
|
|
6234
|
-
for (const ticket of registry.values()) if (/* @__PURE__ */ isNull(ticket.archivedAt)) registry.upsert(ticket.id, { archivedAt: now }, "notification:archived");
|
|
6235
|
-
});
|
|
6236
|
-
}
|
|
6237
|
-
return {
|
|
6238
|
-
...registry,
|
|
6239
|
-
send,
|
|
6240
|
-
register,
|
|
6241
|
-
onboard,
|
|
6242
|
-
queue,
|
|
6243
|
-
read,
|
|
6244
|
-
unread,
|
|
6245
|
-
seen,
|
|
6246
|
-
archive,
|
|
6247
|
-
unarchive,
|
|
6248
|
-
snooze,
|
|
6249
|
-
wake,
|
|
6250
|
-
readAll,
|
|
6251
|
-
archiveAll,
|
|
6252
|
-
get size() {
|
|
6253
|
-
return registry.size;
|
|
6254
|
-
}
|
|
6255
|
-
};
|
|
6256
|
-
}
|
|
6257
|
-
function noop() {}
|
|
6258
|
-
const EMPTY = [];
|
|
6259
|
-
function createNotificationsFallback() {
|
|
6260
|
-
const stub = {
|
|
6261
|
-
id: "",
|
|
6262
|
-
index: 0,
|
|
6263
|
-
value: 0,
|
|
6264
|
-
valueIsIndex: true,
|
|
6265
|
-
createdAt: /* @__PURE__ */ new Date(0),
|
|
6266
|
-
readAt: null,
|
|
6267
|
-
seenAt: null,
|
|
6268
|
-
archivedAt: null,
|
|
6269
|
-
snoozedUntil: null,
|
|
6270
|
-
read: noop,
|
|
6271
|
-
unread: noop,
|
|
6272
|
-
seen: noop,
|
|
6273
|
-
archive: noop,
|
|
6274
|
-
unarchive: noop,
|
|
6275
|
-
snooze: noop,
|
|
6276
|
-
wake: noop,
|
|
6277
|
-
dismiss: noop,
|
|
6278
|
-
unregister: noop
|
|
6279
|
-
};
|
|
6280
|
-
return {
|
|
6281
|
-
collection: /* @__PURE__ */ new Map(),
|
|
6282
|
-
size: 0,
|
|
6283
|
-
send: () => stub,
|
|
6284
|
-
queue: {
|
|
6285
|
-
collection: /* @__PURE__ */ new Map(),
|
|
6286
|
-
size: 0,
|
|
6287
|
-
register: () => ({}),
|
|
6288
|
-
unregister: () => void 0,
|
|
6289
|
-
has: () => false,
|
|
6290
|
-
get: () => void 0,
|
|
6291
|
-
keys: () => EMPTY,
|
|
6292
|
-
values: () => EMPTY,
|
|
6293
|
-
entries: () => EMPTY,
|
|
6294
|
-
browse: () => void 0,
|
|
6295
|
-
lookup: () => void 0,
|
|
6296
|
-
upsert: () => ({}),
|
|
6297
|
-
seek: () => void 0,
|
|
6298
|
-
move: () => void 0,
|
|
6299
|
-
on: noop,
|
|
6300
|
-
off: noop,
|
|
6301
|
-
emit: noop,
|
|
6302
|
-
dispose: noop,
|
|
6303
|
-
clear: noop,
|
|
6304
|
-
reindex: noop,
|
|
6305
|
-
batch: (fn) => fn(),
|
|
6306
|
-
onboard: () => EMPTY,
|
|
6307
|
-
offboard: noop,
|
|
6308
|
-
pause: () => void 0,
|
|
6309
|
-
resume: () => void 0
|
|
6310
|
-
},
|
|
6311
|
-
read: noop,
|
|
6312
|
-
unread: noop,
|
|
6313
|
-
seen: noop,
|
|
6314
|
-
archive: noop,
|
|
6315
|
-
unarchive: noop,
|
|
6316
|
-
snooze: noop,
|
|
6317
|
-
wake: noop,
|
|
6318
|
-
readAll: noop,
|
|
6319
|
-
archiveAll: noop,
|
|
6320
|
-
clear: noop,
|
|
6321
|
-
has: () => false,
|
|
6322
|
-
get: () => void 0,
|
|
6323
|
-
keys: () => EMPTY,
|
|
6324
|
-
values: () => EMPTY,
|
|
6325
|
-
entries: () => EMPTY,
|
|
6326
|
-
browse: () => void 0,
|
|
6327
|
-
lookup: () => void 0,
|
|
6328
|
-
upsert: () => stub,
|
|
6329
|
-
register: () => stub,
|
|
6330
|
-
unregister: noop,
|
|
6331
|
-
reindex: noop,
|
|
6332
|
-
move: () => void 0,
|
|
6333
|
-
seek: () => void 0,
|
|
6334
|
-
on: noop,
|
|
6335
|
-
off: noop,
|
|
6336
|
-
emit: noop,
|
|
6337
|
-
dispose: noop,
|
|
6338
|
-
batch: (fn) => fn(),
|
|
6339
|
-
onboard: () => EMPTY,
|
|
6340
|
-
offboard: noop
|
|
6341
|
-
};
|
|
6342
|
-
}
|
|
6343
|
-
/**
|
|
6344
|
-
* Notification management with registry, event system, and optional adapters.
|
|
6345
|
-
*
|
|
6346
|
-
* @see https://0.vuetifyjs.com/composables/plugins/use-notifications
|
|
6347
|
-
*
|
|
6348
|
-
* @example
|
|
6349
|
-
* ```ts
|
|
6350
|
-
* import { createNotificationsPlugin, useNotifications } from '@vuetify/v0'
|
|
6351
|
-
*
|
|
6352
|
-
* // Install as plugin
|
|
6353
|
-
* app.use(createNotificationsPlugin())
|
|
6354
|
-
*
|
|
6355
|
-
* // Use in components
|
|
6356
|
-
* const notifications = useNotifications()
|
|
6357
|
-
* notifications.send({ subject: 'Saved', severity: 'success' })
|
|
6358
|
-
* ```
|
|
6359
|
-
*/
|
|
6360
|
-
const [createNotificationsContext, createNotificationsPlugin, useNotifications] = createPluginContext("v0:notifications", (options) => createNotifications(options), {
|
|
6361
|
-
fallback: () => createNotificationsFallback(),
|
|
6362
|
-
setup: (context, app, options) => {
|
|
6363
|
-
app.onUnmount(() => {
|
|
6364
|
-
context.dispose();
|
|
6365
|
-
context.queue.dispose();
|
|
6366
|
-
});
|
|
6367
|
-
const { adapter } = options;
|
|
6368
|
-
if (!adapter) return;
|
|
6369
|
-
adapter.setup({
|
|
6370
|
-
send: context.send,
|
|
6371
|
-
register: context.register,
|
|
6372
|
-
on: context.on,
|
|
6373
|
-
off: context.off
|
|
6374
|
-
});
|
|
6375
|
-
if (/* @__PURE__ */ isFunction(adapter.dispose)) app.onUnmount(() => adapter.dispose());
|
|
6376
|
-
}
|
|
6377
|
-
});
|
|
6378
|
-
//#endregion
|
|
6379
5520
|
//#region src/composables/usePresence/index.ts
|
|
6380
5521
|
/**
|
|
6381
5522
|
* @module usePresence
|
|
@@ -6556,7 +5697,7 @@ function useProxyModel(context, model, options) {
|
|
|
6556
5697
|
const _transformOut = options?.transformOut;
|
|
6557
5698
|
function transformIn(val) {
|
|
6558
5699
|
const value = toValue(val);
|
|
6559
|
-
return toArray(/* @__PURE__ */ isFunction(_transformIn) ? _transformIn(value) : value);
|
|
5700
|
+
return /* @__PURE__ */ toArray(/* @__PURE__ */ isFunction(_transformIn) ? _transformIn(value) : value);
|
|
6560
5701
|
}
|
|
6561
5702
|
function transformOut(val) {
|
|
6562
5703
|
if (/* @__PURE__ */ isFunction(_transformOut)) return _transformOut(val);
|
|
@@ -6935,7 +6076,7 @@ function createStack(_options = {}) {
|
|
|
6935
6076
|
...input,
|
|
6936
6077
|
id
|
|
6937
6078
|
});
|
|
6938
|
-
if (instanceExists()) onScopeDispose(() => {
|
|
6079
|
+
if (/* @__PURE__ */ instanceExists()) onScopeDispose(() => {
|
|
6939
6080
|
selection.unregister(id);
|
|
6940
6081
|
}, true);
|
|
6941
6082
|
return ticket;
|
|
@@ -7059,7 +6200,7 @@ function getStackFallback() {
|
|
|
7059
6200
|
*/
|
|
7060
6201
|
function useStack(namespace = "v0:stack") {
|
|
7061
6202
|
const fallback = getStackFallback();
|
|
7062
|
-
if (
|
|
6203
|
+
if (!/* @__PURE__ */ instanceExists()) return fallback;
|
|
7063
6204
|
try {
|
|
7064
6205
|
return useContext(namespace);
|
|
7065
6206
|
} catch {
|
|
@@ -7386,8 +6527,8 @@ function useEventListener(target, event, listener, options) {
|
|
|
7386
6527
|
], ([el, events, listeners, opts]) => {
|
|
7387
6528
|
cleanup();
|
|
7388
6529
|
if (!el) return;
|
|
7389
|
-
const eventList = toArray(events);
|
|
7390
|
-
const listenerList = toArray(listeners);
|
|
6530
|
+
const eventList = /* @__PURE__ */ toArray(events);
|
|
6531
|
+
const listenerList = /* @__PURE__ */ toArray(listeners);
|
|
7391
6532
|
for (const event of eventList) for (const listenerFn of listenerList) cleanups.push(register(el, event, listenerFn, opts));
|
|
7392
6533
|
}, {
|
|
7393
6534
|
immediate: true,
|
|
@@ -7541,7 +6682,7 @@ function useClickOutside(target, handler, options = {}) {
|
|
|
7541
6682
|
* Resolve target(s) to an array of HTMLElements.
|
|
7542
6683
|
*/
|
|
7543
6684
|
function getTargets() {
|
|
7544
|
-
return toArray(target).map((source) => toValue(source)).filter((el) => !!el && /* @__PURE__ */ isFunction(el.contains));
|
|
6685
|
+
return (/* @__PURE__ */ toArray(target)).map((source) => toValue(source)).filter((el) => !!el && /* @__PURE__ */ isFunction(el.contains));
|
|
7545
6686
|
}
|
|
7546
6687
|
/**
|
|
7547
6688
|
* Resolve ignore targets to a tuple of [selectors, elements].
|
|
@@ -7699,4 +6840,4 @@ function useClickOutside(target, handler, options = {}) {
|
|
|
7699
6840
|
};
|
|
7700
6841
|
}
|
|
7701
6842
|
//#endregion
|
|
7702
|
-
export {
|
|
6843
|
+
export { createRating as $, useElementIntersection as A, ClientAdapter as At, createBreakpointsPlugin as B, usePresence as C, createForm as Ct, usePrefersDark as D, createComboboxContext as Dt, usePrefersContrast as E, createCombobox as Et, createDateContext as F, useBreadcrumbs as Ft, useVirtual as G, toReactive as H, createDatePlugin as I, useTimeline as J, createTimeline as K, useDate as L, useImage as M, usePopover as Mt, useHotkey as N, createBreadcrumbs as Nt, usePrefersReducedMotion as O, useCombobox as Ot, createDate as P, createBreadcrumbsContext as Pt, createSlider as Q, createBreakpoints as R, useProxyModel as S, createValidation as St, useMediaQuery as T, useForm as Tt, createVirtual as U, useBreakpoints as V, createVirtualContext as W, createStepContext as X, createStep as Y, useStep as Z, createRtlPlugin as _, createNumeric as _t, useToggleScope as a, createOverflow as at, useRovingFocus as b, useNested as bt, createStoragePlugin as c, useElementSize as ct, createStackContext as d, createFallbackHydration as dt, createRatingContext as et, createStackPlugin as f, createHydration as ft, createRtlFallback as g, createNumberField as gt, createRtlContext as h, useHydration as ht, useWindowEventListener as i, useProgress as it, useIntersectionObserver as j, useVirtualFocus as jt, useLazy as k, ServerAdapter as kt, useStorage as l, useResizeObserver as lt, createRtl as m, createHydrationPlugin as mt, useDocumentEventListener as n, createProgress as nt, createStorage as o, createOverflowContext as ot, useStack as p, createHydrationContext as pt, createTimelineContext as q, useEventListener as r, createProgressContext as rt, createStorageContext as s, useOverflow as st, useClickOutside as t, useRating as tt, createStack as u, toElement as ut, useRtl as v, createNested as vt, useMutationObserver as w, createFormContext as wt, useRaf as x, createInput as xt, Vuetify0RtlAdapter as y, createNestedContext as yt, createBreakpointsContext as z };
|