@vuetify/v0 1.0.0-alpha.3 → 1.0.0-alpha.5

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.
Files changed (171) hide show
  1. package/README.md +5 -0
  2. package/dist/adapter-B6IrPwib.d.mts +98 -0
  3. package/dist/adapter-BEJXp-ie.d.mts +11 -0
  4. package/dist/adapter-BFSJsyv7.mjs +481 -0
  5. package/dist/{adapter-DlX3FA3A.d.mts → adapter-BO75n0Cn.d.mts} +10 -14
  6. package/dist/adapter-BSKx9WQ7.mjs +4 -0
  7. package/dist/adapter-Chznb9Ju.mjs +4 -0
  8. package/dist/{index-CT5SCLzW.d.mts → adapter-CspReV3g.d.mts} +6 -9
  9. package/dist/adapter-D8zizQVP.mjs +4 -0
  10. package/dist/adapter-DDJHLC8K.d.mts +17 -0
  11. package/dist/adapters-4t-NhR11.mjs +5 -0
  12. package/dist/adapters-BcoA0zCS.mjs +4 -0
  13. package/dist/adapters-BjaPK635.mjs +2 -0
  14. package/dist/adapters-D64TORDu.mjs +2 -0
  15. package/dist/adapters-DvG-9z9q.mjs +3 -0
  16. package/dist/browser/index.js +2074 -561
  17. package/dist/components/index.d.mts +2 -2
  18. package/dist/components/index.mjs +1 -1
  19. package/dist/{components-C4jI-78d.mjs → components-Dn4Kbi0i.mjs} +149 -101
  20. package/dist/composables/index.d.mts +20 -19
  21. package/dist/composables/index.mjs +31 -29
  22. package/dist/{consola-BdgyPEfx.d.mts → consola-CUNHyu8J.d.mts} +2 -2
  23. package/dist/{consola-Ceox8BWi.mjs → consola-DYvbPNbF.mjs} +3 -1
  24. package/dist/constants/index.d.mts +1 -1
  25. package/dist/constants/index.mjs +2 -2
  26. package/dist/{createDataTable-iODP6aKB.mjs → createDataTable-H-PuVigU.mjs} +216 -124
  27. package/dist/{createGroup-CGk6hY_Y.mjs → createGroup-aHt_kvtU.mjs} +3 -3
  28. package/dist/{createRegistry-BXzdXAjq.mjs → createRegistry-CWpvSbCe.mjs} +78 -41
  29. package/dist/{createSelection-B3HJEPNg.mjs → createSelection-MRyUZyW2.mjs} +3 -3
  30. package/dist/{createSingle-Dql8mRi-.mjs → createSingle-BSciC9EJ.mjs} +1 -1
  31. package/dist/{createTokens-DgFYsOrv.mjs → createTokens-CQ9C7GTV.mjs} +2 -2
  32. package/dist/data-table/adapters/client/index.d.mts +2 -2
  33. package/dist/data-table/adapters/client/index.mjs +2 -2
  34. package/dist/data-table/adapters/index.d.mts +5 -5
  35. package/dist/data-table/adapters/index.mjs +6 -6
  36. package/dist/data-table/adapters/server/index.d.mts +2 -2
  37. package/dist/data-table/adapters/server/index.mjs +2 -2
  38. package/dist/data-table/adapters/virtual/index.d.mts +2 -2
  39. package/dist/data-table/adapters/virtual/index.mjs +2 -2
  40. package/dist/data-table/index.d.mts +6 -6
  41. package/dist/data-table/index.mjs +6 -6
  42. package/dist/date/index.d.mts +3 -3
  43. package/dist/date/index.mjs +12 -5
  44. package/dist/features/adapters/flagsmith/index.d.mts +2 -2
  45. package/dist/features/adapters/flagsmith/index.mjs +2 -2
  46. package/dist/features/adapters/launchdarkly/index.d.mts +2 -2
  47. package/dist/features/adapters/launchdarkly/index.mjs +2 -2
  48. package/dist/features/adapters/posthog/index.d.mts +2 -2
  49. package/dist/features/adapters/posthog/index.mjs +2 -2
  50. package/dist/features/index.d.mts +3 -3
  51. package/dist/features/index.mjs +2 -1
  52. package/dist/{index-BzFHTW59.d.mts → flagsmith-Cd44vxff.d.mts} +4 -4
  53. package/dist/{flagsmith-Dbh1h8WF.mjs → flagsmith-Cu93hUIF.mjs} +6 -4
  54. package/dist/{globals-zEjWBKCr.mjs → globals-BRdxsC2M.mjs} +1 -1
  55. package/dist/{index-GOpjKzaJ.d.mts → index-BLaKZq0Y.d.mts} +25 -2
  56. package/dist/{index-BJGcVy7e.d.mts → index-BmEu85PI.d.mts} +126 -65
  57. package/dist/{index-DE3bWw11.d.mts → index-C0ewabdY.d.mts} +93 -215
  58. package/dist/index-C6NnIuDv.d.mts +4 -0
  59. package/dist/{index-DNDuacmH.d.mts → index-CJdG9yY1.d.mts} +116 -106
  60. package/dist/index-C_t6t0Z-.d.mts +170 -0
  61. package/dist/{index-B76iGRE3.d.mts → index-CyUCELZC.d.mts} +1149 -61
  62. package/dist/index.d.mts +24 -23
  63. package/dist/index.mjs +35 -33
  64. package/dist/json/attributes.json +1 -1
  65. package/dist/json/web-types.json +2 -2
  66. package/dist/{launchdarkly-BKtW-idu.mjs → launchdarkly-CLGtJCsI.mjs} +6 -4
  67. package/dist/launchdarkly-De701hkf.d.mts +13 -0
  68. package/dist/locale/adapters/index.d.mts +3 -3
  69. package/dist/locale/adapters/index.mjs +4 -3
  70. package/dist/locale/adapters/v0/index.d.mts +2 -2
  71. package/dist/locale/adapters/v0/index.mjs +2 -2
  72. package/dist/locale/adapters/vue-i18n/index.d.mts +3 -3
  73. package/dist/locale/adapters/vue-i18n/index.mjs +4 -2
  74. package/dist/locale/index.d.mts +4 -4
  75. package/dist/locale/index.mjs +4 -3
  76. package/dist/logger/adapters/consola/index.d.mts +1 -1
  77. package/dist/logger/adapters/consola/index.mjs +1 -1
  78. package/dist/logger/adapters/index.d.mts +5 -5
  79. package/dist/logger/adapters/index.mjs +6 -5
  80. package/dist/logger/adapters/pino/index.d.mts +1 -1
  81. package/dist/logger/adapters/pino/index.mjs +1 -1
  82. package/dist/logger/adapters/v0/index.d.mts +2 -2
  83. package/dist/logger/adapters/v0/index.mjs +2 -2
  84. package/dist/logger/index.d.mts +6 -6
  85. package/dist/logger/index.mjs +6 -5
  86. package/dist/{memory-oYBvtkgx.mjs → memory-BMpJcQjQ.mjs} +13 -3
  87. package/dist/{memory-CeSQE-QV.d.mts → memory-D-JbdKXg.d.mts} +9 -9
  88. package/dist/notifications/index.d.mts +30 -4
  89. package/dist/notifications/index.mjs +187 -126
  90. package/dist/palettes/ant/index.d.mts +1 -1
  91. package/dist/palettes/index.d.mts +3 -3
  92. package/dist/palettes/leonardo/generate/index.mjs +3 -0
  93. package/dist/palettes/material/index.d.mts +1 -1
  94. package/dist/palettes/md1/index.d.mts +1 -1
  95. package/dist/palettes/md2/index.d.mts +1 -1
  96. package/dist/palettes/radix/index.d.mts +1 -1
  97. package/dist/palettes/tailwind/index.d.mts +1 -1
  98. package/dist/permissions/adapters/index.d.mts +2 -2
  99. package/dist/permissions/adapters/index.mjs +3 -3
  100. package/dist/permissions/adapters/v0/index.d.mts +2 -2
  101. package/dist/permissions/adapters/v0/index.mjs +2 -2
  102. package/dist/permissions/index.d.mts +2 -2
  103. package/dist/permissions/index.mjs +3 -3
  104. package/dist/{pino-DNfCEb0p.d.mts → pino-BaYY_KIN.d.mts} +2 -2
  105. package/dist/{pino-9L79n6y6.mjs → pino-CIcYlW3u.mjs} +3 -1
  106. package/dist/{posthog-DmuyycaR.mjs → posthog-0umvvA48.mjs} +7 -5
  107. package/dist/posthog-CIrmvke4.d.mts +13 -0
  108. package/dist/rules/index.d.mts +1 -1
  109. package/dist/rules/index.mjs +1 -1
  110. package/dist/{server-3ilWFwqe.d.mts → server-7vjHxjNc.d.mts} +5 -5
  111. package/dist/{server-y7zLSCSx.mjs → server-BNSiVoMe.mjs} +4 -3
  112. package/dist/storage/adapters/index.d.mts +3 -3
  113. package/dist/storage/adapters/index.mjs +2 -2
  114. package/dist/storage/adapters/memory/index.d.mts +2 -2
  115. package/dist/storage/adapters/memory/index.mjs +2 -2
  116. package/dist/storage/index.d.mts +4 -4
  117. package/dist/storage/index.mjs +3 -3
  118. package/dist/theme/adapters/index.d.mts +2 -2
  119. package/dist/theme/adapters/index.mjs +4 -4
  120. package/dist/theme/adapters/unhead/index.d.mts +1 -1
  121. package/dist/theme/adapters/unhead/index.mjs +1 -1
  122. package/dist/theme/adapters/v0/index.d.mts +1 -1
  123. package/dist/theme/adapters/v0/index.mjs +1 -1
  124. package/dist/theme/index.d.mts +1 -1
  125. package/dist/theme/index.mjs +3 -3
  126. package/dist/types/index.d.mts +1 -1
  127. package/dist/{unhead-B-I2OS6i.mjs → unhead-_cXZcx0j.mjs} +2 -2
  128. package/dist/{useClickOutside-CY4U2J9W.mjs → useClickOutside-DbOLg1uw.mjs} +1483 -182
  129. package/dist/{useFeatures-BPOke6iP.mjs → useFeatures-Dhnr-Lg2.mjs} +7 -10
  130. package/dist/{useLocale-BV8e3imF.mjs → useLocale-Sh-2sNiG.mjs} +6 -6
  131. package/dist/{useLogger-DvdRTrqC.mjs → useLogger-1_ZeBY12.mjs} +5 -5
  132. package/dist/{useNotifications-vSJE6z6t.mjs → useNotifications-CAVQ7hK6.mjs} +6 -6
  133. package/dist/{usePermissions-D3zPwKQc.mjs → usePermissions-D9Oituwy.mjs} +6 -6
  134. package/dist/{useRules-BT6cgoTj.mjs → useRules-DK4AeNeC.mjs} +4 -3
  135. package/dist/{useTheme-cUZb2A9O.mjs → useTheme-FMDQC81h.mjs} +5 -5
  136. package/dist/utilities/index.d.mts +2 -2
  137. package/dist/utilities/index.mjs +26 -2
  138. package/dist/{v0-CHZpnMeP.mjs → v0-C42ssNIy.mjs} +6 -4
  139. package/dist/{v0-Dq3zhexO.mjs → v0-CEfbyyp2.mjs} +3 -4
  140. package/dist/{v0-C49OI_wc.mjs → v0-Ch-O6YVd.mjs} +5 -3
  141. package/dist/{v0-gpExNexS.mjs → v0-D0imQlSD.mjs} +2 -2
  142. package/dist/{v0-DrOub-e1.d.mts → v0-DWZ_N2GG.d.mts} +4 -4
  143. package/dist/{v0-Bmow1q_x.mjs → v0-Dvu8fMl3.mjs} +3 -3
  144. package/dist/v0-QIjffi4E.d.mts +8 -0
  145. package/dist/{v0-D7Fm2C3Y.d.mts → v0-aYLq6qmT.d.mts} +3 -3
  146. package/dist/{virtual-C0yHf1DC.mjs → virtual-Cq5aRp7m.mjs} +3 -4
  147. package/dist/virtual-CrgGA-o6.d.mts +8 -0
  148. package/package.json +1 -1
  149. package/dist/adapter-58IvIfAZ.d.mts +0 -96
  150. package/dist/adapter-BvWEd9w-.d.mts +0 -17
  151. package/dist/adapter-Dhq68tz0.d.mts +0 -11
  152. package/dist/adapter-gQ2SNKZq.mjs +0 -238
  153. package/dist/adapters-BSiqsTZN.mjs +0 -3
  154. package/dist/adapters-C3QXhf4I.mjs +0 -2
  155. package/dist/adapters-CMJGA1k7.mjs +0 -2
  156. package/dist/adapters-Dse4bPxk.mjs +0 -5
  157. package/dist/adapters-_ZqxCD8f.mjs +0 -4
  158. package/dist/createPagination-CHF7SmmK.mjs +0 -247
  159. package/dist/index-1XdASTjp.d.mts +0 -13
  160. package/dist/index-C6rdXZ7j.d.mts +0 -11
  161. package/dist/index-Dp1HjBxJ.d.mts +0 -13
  162. package/dist/v0-CdusXjY_.d.mts +0 -8
  163. package/dist/virtual-D4fckewC.d.mts +0 -8
  164. /package/dist/{adapter-Be9zUc-n.mjs → adapter-oM18AdUc.mjs} +0 -0
  165. /package/dist/{htmlElements-D4oMQZPJ.mjs → htmlElements-CHXZfsZu.mjs} +0 -0
  166. /package/dist/{index-CFhUdAHM.d.mts → index-BOn0AAue.d.mts} +0 -0
  167. /package/dist/{index-CROz1VSV.d.mts → index-CKKoxA9V.d.mts} +0 -0
  168. /package/dist/{index-DuddF-NR.d.mts → index-CLR1QMM3.d.mts} +0 -0
  169. /package/dist/{index-DTvqw22G.d.mts → index-H_hl6-4b.d.mts} +0 -0
  170. /package/dist/{index-BgCkepP_.d.mts → index-PvkxPev3.d.mts} +0 -0
  171. /package/dist/{toArray-as9BWxBK.mjs → toArray-CD2-OxAz.mjs} +0 -0
@@ -1,238 +0,0 @@
1
- import { isArray, isNaN, isNullOrUndefined, isNumber, isObject, isString } from "./utilities/index.mjs";
2
- import { i as useContext, t as createTrinity } from "./createTrinity-BTCs1pYx.mjs";
3
- import { t as toArray } from "./toArray-as9BWxBK.mjs";
4
- import { computed, shallowRef, toRef, toValue } from "vue";
5
- //#region src/composables/createFilter/index.ts
6
- /**
7
- * @module createFilter
8
- *
9
- * @see https://0.vuetifyjs.com/composables/data/create-filter
10
- *
11
- * @remarks
12
- * Reactive array filtering composable with multiple filter modes.
13
- *
14
- * Key features:
15
- * - Four filter modes: some, every, union, intersection
16
- * - Case-insensitive filtering
17
- * - Custom filter functions
18
- * - Reactive updates
19
- * - Context-based DI support
20
- * - Perfect for search, multi-criteria filtering
21
- *
22
- * Filters arrays based on query strings with configurable matching strategies.
23
- *
24
- * @example
25
- * ```ts
26
- * import { createFilter } from '@vuetify/v0'
27
- *
28
- * const filter = createFilter({ mode: 'some' })
29
- * const { items } = filter.apply('an', ['apple', 'banana', 'cherry'])
30
- * console.log(items.value) // ['banana']
31
- * ```
32
- */
33
- function defaultFilter(query, item, keys, mode = "some") {
34
- const queries = (/* @__PURE__ */ toArray(query)).map((q) => String(q).toLowerCase());
35
- const stringValues = (/* @__PURE__ */ isObject(item) ? keys?.length ? keys.map((k) => item[k]) : Object.values(item) : [item]).map((v) => String(v).toLowerCase());
36
- if (mode === "some") return queries.some((q) => stringValues.some((val) => val.includes(q)));
37
- if (mode === "every") return queries.every((q) => stringValues.every((val) => val.includes(q)));
38
- const joined = stringValues.join("\0");
39
- if (mode === "union") return queries.some((q) => joined.includes(q));
40
- if (mode === "intersection") return queries.every((q) => joined.includes(q));
41
- return false;
42
- }
43
- /**
44
- * Creates a filter context with pre-configured options.
45
- *
46
- * @param options The filter options
47
- * @template Z The type of the items
48
- * @template E The type of the filter context
49
- * @returns A filter context
50
- *
51
- * @see https://0.vuetifyjs.com/composables/data/create-filter
52
- *
53
- * @example
54
- * ```ts
55
- * import { createFilter } from '@vuetify/v0'
56
- *
57
- * const filter = createFilter({
58
- * mode: 'intersection',
59
- * keys: ['name', 'email'],
60
- * })
61
- *
62
- * const { items } = filter.apply(query, users)
63
- * ```
64
- */
65
- function createFilter(options = {}) {
66
- const { customFilter, keys, mode = "some" } = options;
67
- const filterFunction = customFilter ?? ((q, i) => defaultFilter(q, i, keys, mode));
68
- const query = shallowRef("");
69
- function apply(_query, items) {
70
- return { items: computed(() => {
71
- const q = toValue(_query);
72
- query.value = q;
73
- const queries = (/* @__PURE__ */ toArray(q)).filter((q) => String(q).trim());
74
- if (queries.length === 0) return toValue(items);
75
- const queryParam = queries.length === 1 ? queries[0] : queries;
76
- return toValue(items).filter((item) => filterFunction(queryParam, item));
77
- }) };
78
- }
79
- return {
80
- mode,
81
- keys,
82
- customFilter,
83
- query,
84
- apply
85
- };
86
- }
87
- /**
88
- * Creates a filter context with dependency injection support.
89
- *
90
- * @param options The filter context options
91
- * @template Z The type of the items
92
- * @template E The type of the filter context
93
- * @returns A trinity tuple: [useContext, provideContext, defaultContext]
94
- *
95
- * @see https://0.vuetifyjs.com/composables/data/create-filter
96
- *
97
- * @example
98
- * ```ts
99
- * import { createFilterContext } from '@vuetify/v0'
100
- *
101
- * export const [useSearchFilter, provideSearchFilter, searchFilter] = createFilterContext({
102
- * namespace: 'app:search',
103
- * mode: 'union',
104
- * keys: ['title', 'description'],
105
- * })
106
- *
107
- * // In parent component
108
- * provideSearchFilter()
109
- *
110
- * // In child component
111
- * const filter = useSearchFilter()
112
- * const { items } = filter.apply(query, products)
113
- * ```
114
- */
115
- function createFilterContext(_options = {}) {
116
- const { namespace = "v0:filter", ...options } = _options;
117
- return createTrinity(namespace, createFilter(options));
118
- }
119
- /**
120
- * Returns the current filter context from dependency injection.
121
- *
122
- * @param namespace The namespace for the filter context. Defaults to `'v0:filter'`.
123
- * @template Z The type of the items.
124
- * @template E The type of the filter context.
125
- * @returns The current filter context.
126
- *
127
- * @see https://0.vuetifyjs.com/composables/data/create-filter
128
- *
129
- * @example
130
- * ```vue
131
- * <script setup lang="ts">
132
- * import { useFilter } from '@vuetify/v0'
133
- *
134
- * const filter = useFilter()
135
- * const { items } = filter.apply(query, products)
136
- * <\/script>
137
- * ```
138
- */
139
- function useFilter(namespace = "v0:filter") {
140
- return useContext(namespace);
141
- }
142
- //#endregion
143
- //#region src/composables/createDataTable/adapters/adapter.ts
144
- /**
145
- * @module createDataTable/adapters
146
- *
147
- * @remarks
148
- * Defines the adapter interface and abstract base class for data table
149
- * pipeline strategies. Adapters control how raw items are filtered, sorted,
150
- * and sliced into visible items.
151
- *
152
- * The abstract DataTableAdapter provides shared filter and sort pipelines
153
- * used by client-side adapters. Server adapters that delegate pipeline
154
- * operations externally can implement DataTableAdapterInterface directly.
155
- */
156
- function getNestedValue(obj, parts) {
157
- let result = obj;
158
- for (const k of parts) {
159
- if (/* @__PURE__ */ isNullOrUndefined(result)) return void 0;
160
- result = result[k];
161
- }
162
- return result;
163
- }
164
- function compareValues(a, b, collator) {
165
- if (a === b) return 0;
166
- const aNil = /* @__PURE__ */ isNullOrUndefined(a);
167
- const bNil = /* @__PURE__ */ isNullOrUndefined(b);
168
- if (aNil && bNil) return 0;
169
- if (aNil) return 1;
170
- if (bNil) return -1;
171
- if (/* @__PURE__ */ isString(a) && /* @__PURE__ */ isString(b)) return collator ? collator.compare(a, b) : a.localeCompare(b);
172
- if (/* @__PURE__ */ isNumber(a) && /* @__PURE__ */ isNumber(b)) {
173
- if (/* @__PURE__ */ isNaN(a)) return 1;
174
- if (/* @__PURE__ */ isNaN(b)) return -1;
175
- return a - b;
176
- }
177
- const sa = String(a);
178
- const sb = String(b);
179
- return collator ? collator.compare(sa, sb) : sa.localeCompare(sb);
180
- }
181
- var DataTableAdapter = class {
182
- /** Create the filter pipeline stage */
183
- filter(context) {
184
- const filter = createFilter(Object.keys(context.customColumnFilters).length > 0 && !context.filterOptions.customFilter ? {
185
- ...context.filterOptions,
186
- keys: [...context.filterableKeys],
187
- customFilter: (query, item) => {
188
- if (!/* @__PURE__ */ isObject(item)) return false;
189
- const q = String(/* @__PURE__ */ isArray(query) ? query[0] : query).toLowerCase();
190
- if (!q) return true;
191
- const obj = item;
192
- for (const key of context.filterableKeys) {
193
- const customFn = context.customColumnFilters[key];
194
- if (customFn) {
195
- if (customFn(obj[key], q)) return true;
196
- } else {
197
- const val = obj[key];
198
- if (!/* @__PURE__ */ isNullOrUndefined(val) && String(val).toLowerCase().includes(q)) return true;
199
- }
200
- }
201
- return false;
202
- }
203
- } : {
204
- ...context.filterOptions,
205
- keys: [...context.filterableKeys]
206
- });
207
- const allItems = toRef(() => toValue(context.items));
208
- const { items: filteredItems } = filter.apply(context.search, allItems);
209
- return {
210
- allItems,
211
- filteredItems
212
- };
213
- }
214
- /** Create the sort pipeline stage */
215
- sort(filteredItems, sortBy, locale, customSorts) {
216
- return computed(() => {
217
- const entries = sortBy.value;
218
- if (entries.length === 0) return filteredItems.value;
219
- const collator = new Intl.Collator(locale?.value);
220
- const resolved = entries.map(({ key, direction }) => ({
221
- parts: key.split("."),
222
- direction,
223
- custom: customSorts?.[key]
224
- }));
225
- return filteredItems.value.toSorted((a, b) => {
226
- for (const { parts, direction, custom } of resolved) {
227
- const aVal = parts.length === 1 ? a[parts[0]] : getNestedValue(a, parts);
228
- const bVal = parts.length === 1 ? b[parts[0]] : getNestedValue(b, parts);
229
- const cmp = custom ? custom(aVal, bVal) : compareValues(aVal, bVal, collator);
230
- if (cmp !== 0) return direction === "desc" ? -cmp : cmp;
231
- }
232
- return 0;
233
- });
234
- });
235
- }
236
- };
237
- //#endregion
238
- export { useFilter as i, createFilter as n, createFilterContext as r, DataTableAdapter as t };
@@ -1,3 +0,0 @@
1
- import "./pino-9L79n6y6.mjs";
2
- import "./v0-CHZpnMeP.mjs";
3
- export {};
@@ -1,2 +0,0 @@
1
- import "./v0-C49OI_wc.mjs";
2
- export {};
@@ -1,2 +0,0 @@
1
- import "./v0-Bmow1q_x.mjs";
2
- export {};
@@ -1,5 +0,0 @@
1
- import "./adapter-gQ2SNKZq.mjs";
2
- import "./v0-Dq3zhexO.mjs";
3
- import "./server-y7zLSCSx.mjs";
4
- import "./virtual-C0yHf1DC.mjs";
5
- export {};
@@ -1,4 +0,0 @@
1
- import "./adapter-Be9zUc-n.mjs";
2
- import "./v0-gpExNexS.mjs";
3
- import "./unhead-B-I2OS6i.mjs";
4
- export {};
@@ -1,247 +0,0 @@
1
- import { clamp, isNaN, range } from "./utilities/index.mjs";
2
- import { i as useContext, t as createTrinity } from "./createTrinity-BTCs1pYx.mjs";
3
- import { computed, isRef, shallowRef, toRef, toValue } from "vue";
4
- //#region src/composables/createPagination/index.ts
5
- /**
6
- * @module createPagination
7
- *
8
- * @see https://0.vuetifyjs.com/composables/data/create-pagination
9
- *
10
- * @remarks
11
- * Lightweight pagination composable for navigating through pages.
12
- *
13
- * Key features:
14
- * - No registry overhead - just a bounded integer
15
- * - Direct ref support for v-model compatibility
16
- * - Navigation methods: next, prev, first, last
17
- * - Computed visible items with ellipsis
18
- * - Trinity pattern for dependency injection
19
- *
20
- * Unlike registry-based composables, pagination tracks a single number
21
- * within a range, making it efficient for large page counts.
22
- *
23
- * @example
24
- * ```ts
25
- * import { createPagination } from '@vuetify/v0'
26
- *
27
- * const pagination = createPagination({ size: 100, itemsPerPage: 10 })
28
- * pagination.next()
29
- * console.log(pagination.page.value) // 2
30
- * ```
31
- */
32
- /**
33
- * Creates a pagination instance.
34
- *
35
- * @param options The options for the pagination instance.
36
- * @returns A pagination context with navigation methods.
37
- *
38
- * @example
39
- * ```ts
40
- * import { createPagination } from '@vuetify/v0'
41
- *
42
- * // Basic usage
43
- * const pagination = createPagination({ size: 100 })
44
- * pagination.next()
45
- * pagination.items.value // [{ type: 'page', value: 1 }, { type: 'page', value: 2 }, ...]
46
- *
47
- * // With v-model (pass a ref)
48
- * const page = ref(1)
49
- * const pagination = createPagination({ page, size: 100 })
50
- * // Mutating pagination.page or the passed ref syncs both
51
- * ```
52
- */
53
- function createPagination(_options = {}) {
54
- const { page: _page = 1, itemsPerPage: _itemsPerPage = 10, size: _size = 0, visible: _visible = 7, ellipsis = "..." } = _options;
55
- const _raw = isRef(_page) ? _page : shallowRef(_page);
56
- const pages = computed(() => {
57
- const size = toValue(_size);
58
- const perPage = toValue(_itemsPerPage);
59
- if (size <= 0 || /* @__PURE__ */ isNaN(size)) return 0;
60
- return Math.ceil(size / perPage);
61
- });
62
- const page = computed({
63
- get: () => {
64
- const p = pages.value;
65
- return p > 0 ? /* @__PURE__ */ clamp(_raw.value, 1, p) : _raw.value;
66
- },
67
- set: (v) => {
68
- _raw.value = v;
69
- }
70
- });
71
- function first() {
72
- page.value = 1;
73
- }
74
- function last() {
75
- page.value = Math.max(1, pages.value);
76
- }
77
- function next() {
78
- if (page.value < pages.value) page.value++;
79
- }
80
- function prev() {
81
- if (page.value > 1) page.value--;
82
- }
83
- function select(value) {
84
- if (value < 1) page.value = 1;
85
- else if (value > pages.value) page.value = Math.max(1, pages.value);
86
- else page.value = value;
87
- }
88
- const isFirst = toRef(() => page.value <= 1);
89
- const isLast = toRef(() => page.value >= pages.value);
90
- const pageStart = toRef(() => (page.value - 1) * toValue(_itemsPerPage));
91
- const pageStop = toRef(() => Math.min(pageStart.value + toValue(_itemsPerPage), toValue(_size)));
92
- function toPage(value) {
93
- return {
94
- type: "page",
95
- value
96
- };
97
- }
98
- function toEllipsis() {
99
- return ellipsis === false ? false : {
100
- type: "ellipsis",
101
- value: ellipsis
102
- };
103
- }
104
- function filter(array) {
105
- return array.filter((item) => item !== false);
106
- }
107
- return {
108
- page,
109
- ellipsis,
110
- items: computed(() => {
111
- const pageCount = pages.value;
112
- const visible = toValue(_visible);
113
- const current = page.value;
114
- if (pageCount <= 0 || /* @__PURE__ */ isNaN(pageCount) || pageCount > Number.MAX_SAFE_INTEGER) return [];
115
- if (visible <= 0) return [];
116
- if (visible <= 2) return [toPage(current)];
117
- if (pageCount <= visible) return (/* @__PURE__ */ range(pageCount, 1)).map(toPage);
118
- if (visible === 3) {
119
- const mid = current <= 1 ? 2 : current >= pageCount ? pageCount - 1 : current;
120
- return [
121
- toPage(1),
122
- toPage(mid),
123
- toPage(pageCount)
124
- ];
125
- }
126
- const boundary = visible - 2;
127
- const middle = visible - 4;
128
- if (middle <= 0) {
129
- if (current <= boundary) return filter([
130
- ...(/* @__PURE__ */ range(boundary, 1)).map(toPage),
131
- toEllipsis(),
132
- toPage(pageCount)
133
- ]);
134
- if (current > pageCount - boundary) return filter([
135
- toPage(1),
136
- toEllipsis(),
137
- ...(/* @__PURE__ */ range(boundary, pageCount - boundary + 1)).map(toPage)
138
- ]);
139
- return current <= Math.ceil(pageCount / 2) ? filter([
140
- toPage(1),
141
- toPage(current),
142
- toEllipsis(),
143
- toPage(pageCount)
144
- ]) : filter([
145
- toPage(1),
146
- toEllipsis(),
147
- toPage(current),
148
- toPage(pageCount)
149
- ]);
150
- }
151
- const leftThreshold = boundary - 1;
152
- const rightThreshold = pageCount - boundary + 2;
153
- if (current <= leftThreshold) return filter([
154
- ...(/* @__PURE__ */ range(boundary, 1)).map(toPage),
155
- toEllipsis(),
156
- toPage(pageCount)
157
- ]);
158
- else if (current >= rightThreshold) return filter([
159
- toPage(1),
160
- toEllipsis(),
161
- ...(/* @__PURE__ */ range(boundary, pageCount - boundary + 1)).map(toPage)
162
- ]);
163
- else {
164
- const start = current - Math.floor(middle / 2);
165
- return filter([
166
- toPage(1),
167
- toEllipsis(),
168
- ...(/* @__PURE__ */ range(middle, start)).map(toPage),
169
- toEllipsis(),
170
- toPage(pageCount)
171
- ]);
172
- }
173
- }),
174
- pageStart,
175
- pageStop,
176
- isFirst,
177
- isLast,
178
- first,
179
- last,
180
- next,
181
- prev,
182
- select,
183
- get itemsPerPage() {
184
- return toValue(_itemsPerPage);
185
- },
186
- get size() {
187
- return toValue(_size);
188
- },
189
- get pages() {
190
- return pages.value;
191
- }
192
- };
193
- }
194
- /**
195
- * Creates a pagination context for dependency injection.
196
- *
197
- * @param options The options including namespace.
198
- * @returns A trinity: [usePagination, providePagination, defaultContext]
199
- *
200
- * @example
201
- * ```ts
202
- * // With default namespace 'v0:pagination'
203
- * const [usePagination, providePaginationContext] = createPaginationContext({ size: 50 })
204
- *
205
- * // Or with custom namespace
206
- * const [usePagination, providePaginationContext] = createPaginationContext({
207
- * namespace: 'my-pagination',
208
- * size: 50,
209
- * })
210
- *
211
- * // Parent component
212
- * providePaginationContext()
213
- *
214
- * // Child component
215
- * const pagination = usePagination()
216
- * pagination.next()
217
- * ```
218
- */
219
- function createPaginationContext(_options = {}) {
220
- const { namespace = "v0:pagination", ...options } = _options;
221
- return createTrinity(namespace, createPagination(options));
222
- }
223
- /**
224
- * Returns the current pagination instance from context.
225
- *
226
- * @param namespace The namespace. @default 'v0:pagination'
227
- * @returns The pagination context.
228
- *
229
- * @example
230
- * ```vue
231
- * <script setup lang="ts">
232
- * import { usePagination } from '@vuetify/v0'
233
- *
234
- * const pagination = usePagination()
235
- * <\/script>
236
- *
237
- * <template>
238
- * <button @click="pagination.prev()" :disabled="pagination.isFirst.value">Prev</button>
239
- * <button @click="pagination.next()" :disabled="pagination.isLast.value">Next</button>
240
- * </template>
241
- * ```
242
- */
243
- function usePagination(namespace = "v0:pagination") {
244
- return useContext(namespace);
245
- }
246
- //#endregion
247
- export { createPaginationContext as n, usePagination as r, createPagination as t };
@@ -1,13 +0,0 @@
1
- import { n as FeaturesAdapterFlags, r as FeaturesAdapterInterface } from "./index-CT5SCLzW.mjs";
2
- import { LDClient } from "launchdarkly-js-client-sdk";
3
-
4
- //#region src/composables/useFeatures/adapters/launchdarkly/index.d.ts
5
- declare class LaunchDarklyFeatureAdapter implements FeaturesAdapterInterface {
6
- private client;
7
- constructor(client: LDClient);
8
- setup(onUpdate: (flags: FeaturesAdapterFlags) => void): FeaturesAdapterFlags;
9
- dispose(): void;
10
- private disposeFn;
11
- }
12
- //#endregion
13
- export { LaunchDarklyFeatureAdapter as t };
@@ -1,11 +0,0 @@
1
- //#region src/composables/useStorage/adapters/index.d.ts
2
- type StorageType = 'localStorage' | 'sessionStorage' | 'memory';
3
- interface StorageAdapter {
4
- getItem: (key: string) => string | null;
5
- setItem: (key: string, value: string) => void;
6
- removeItem: (key: string) => void;
7
- readonly length?: number;
8
- key?: (index: number) => string | null;
9
- }
10
- //#endregion
11
- export { StorageType as n, StorageAdapter as t };
@@ -1,13 +0,0 @@
1
- import { n as FeaturesAdapterFlags, r as FeaturesAdapterInterface } from "./index-CT5SCLzW.mjs";
2
- import { PostHog } from "posthog-js";
3
-
4
- //#region src/composables/useFeatures/adapters/posthog/index.d.ts
5
- declare class PostHogFeatureAdapter implements FeaturesAdapterInterface {
6
- private client;
7
- constructor(client: PostHog);
8
- setup(onUpdate: (flags: FeaturesAdapterFlags) => void): FeaturesAdapterFlags;
9
- dispose(): void;
10
- private disposeFn;
11
- }
12
- //#endregion
13
- export { PostHogFeatureAdapter as t };
@@ -1,8 +0,0 @@
1
- import { i as DataTableAdapterResult, n as DataTableAdapterContext, t as DataTableAdapter } from "./adapter-DlX3FA3A.mjs";
2
-
3
- //#region src/composables/createDataTable/adapters/v0.d.ts
4
- declare class ClientAdapter<T extends Record<string, unknown>> extends DataTableAdapter<T> {
5
- setup(context: DataTableAdapterContext<T>): DataTableAdapterResult<T>;
6
- }
7
- //#endregion
8
- export { ClientAdapter as t };
@@ -1,8 +0,0 @@
1
- import { i as DataTableAdapterResult, n as DataTableAdapterContext, t as DataTableAdapter } from "./adapter-DlX3FA3A.mjs";
2
-
3
- //#region src/composables/createDataTable/adapters/virtual.d.ts
4
- declare class VirtualAdapter<T extends Record<string, unknown>> extends DataTableAdapter<T> {
5
- setup(context: DataTableAdapterContext<T>): DataTableAdapterResult<T>;
6
- }
7
- //#endregion
8
- export { VirtualAdapter as t };