vue-command-kit 0.1.1 → 0.2.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/dist/vue-cmdk.js CHANGED
@@ -1,518 +1,594 @@
1
- import { ref as E, computed as Q, watch as g, onUnmounted as ne, provide as x, defineComponent as I, openBlock as d, createElementBlock as m, renderSlot as C, unref as v, inject as D, createElementVNode as k, createCommentVNode as S, toDisplayString as T, normalizeClass as le, createBlock as N, resolveDynamicComponent as se, Fragment as $, createTextVNode as B, createVNode as L, renderList as F, withCtx as G, nextTick as re, Teleport as ue, Transition as ce } from "vue";
2
- const ie = {
1
+ import { ref as M, computed as b, watch as k, onUnmounted as ie, provide as T, defineComponent as I, openBlock as d, createElementBlock as v, unref as p, renderSlot as x, inject as P, createElementVNode as w, createCommentVNode as L, toDisplayString as Q, isVNode as ce, normalizeClass as de, createBlock as V, resolveDynamicComponent as fe, Fragment as C, renderList as G, createTextVNode as A, createVNode as B, withCtx as H, nextTick as me, Teleport as ve, Transition as pe } from "vue";
2
+ const he = {
3
3
  "⌘": "metaKey",
4
4
  "⌃": "ctrlKey",
5
5
  "⌥": "altKey",
6
6
  "⇧": "shiftKey"
7
- }, de = /^([⌘⌃⌥⇧]+)(.+)$/;
8
- function me(t) {
9
- if (!t) return null;
10
- const e = de.exec(t);
11
- if (!e) return { key: t.toLowerCase() };
12
- const [, o, r] = e, s = {};
13
- for (const a of o) {
14
- const i = ie[a];
15
- i && (s[i] = !0);
7
+ }, ye = /^([⌘⌃⌥⇧]+)(.+)$/;
8
+ function ge(a) {
9
+ if (!a) return null;
10
+ const e = ye.exec(a);
11
+ if (!e) return { key: a.toLowerCase() };
12
+ const [, o, i] = e, u = {};
13
+ for (const l of o) {
14
+ const c = he[l];
15
+ c && (u[c] = !0);
16
16
  }
17
- return { ...s, key: r.toLowerCase() };
17
+ return { ...u, key: i.toLowerCase() };
18
18
  }
19
- function fe(t, e) {
20
- return e ? t.key.toLowerCase() === e.key && !!t.metaKey == !!e.metaKey && !!t.ctrlKey == !!e.ctrlKey && !!t.altKey == !!e.altKey && !!t.shiftKey == !!e.shiftKey : !1;
19
+ function _e(a, e) {
20
+ return e ? a.key.toLowerCase() === e.key && !!a.metaKey == !!e.metaKey && !!a.ctrlKey == !!e.ctrlKey && !!a.altKey == !!e.altKey && !!a.shiftKey == !!e.shiftKey : !1;
21
21
  }
22
- function ve(t, e) {
23
- const o = E(!1), r = E(""), s = E(0), a = E([]), i = () => {
24
- o.value = !o.value;
25
- }, l = () => {
26
- o.value = !0, s.value = 0;
27
- }, n = () => {
28
- o.value = !1, r.value = "";
22
+ const R = "__ungrouped__";
23
+ function ke(a, e) {
24
+ const o = typeof a == "function" ? { filter: a } : a ?? {}, { filter: i, shouldFilter: u = !0, loop: l = !0 } = o, c = M(!1), n = M(""), t = M(0), m = M(), f = M([]), S = () => {
25
+ c.value = !c.value;
26
+ }, s = () => {
27
+ c.value = !0, t.value = 0;
28
+ }, $ = () => {
29
+ c.value = !1, n.value = "";
29
30
  };
30
- function u(c, p) {
31
- if (!p.trim()) return c;
32
- const f = p.toLowerCase();
33
- return c.filter((_) => {
34
- var b, P;
35
- return !!(_.value.toLowerCase().includes(f) || (b = _.label) != null && b.toLowerCase().includes(f) || (P = _.keywords) != null && P.some((ae) => ae.toLowerCase().includes(f)));
31
+ function _(r, y) {
32
+ if (!y.trim()) return r;
33
+ const h = y.toLowerCase();
34
+ return r.filter((g) => {
35
+ var D, z;
36
+ return !!(g.forceMount || g.value.toLowerCase().includes(h) || (D = g.label) != null && D.toLowerCase().includes(h) || (z = g.keywords) != null && z.some((re) => re.toLowerCase().includes(h)));
36
37
  });
37
38
  }
38
- function h(c) {
39
- const p = /* @__PURE__ */ new Map();
40
- for (const _ of c) {
41
- const b = _.group || "__ungrouped__";
42
- p.has(b) || p.set(b, []), p.get(b).push(_);
39
+ function O(r) {
40
+ const y = /* @__PURE__ */ new Map();
41
+ for (const g of r) {
42
+ const D = g.group || R;
43
+ y.has(D) ? y.get(D).push(g) : y.set(D, [g]);
43
44
  }
44
- const f = [];
45
- p.has("__ungrouped__") && (f.push({ heading: "", items: p.get("__ungrouped__") }), p.delete("__ungrouped__"));
46
- for (const [_, b] of p)
47
- f.push({ heading: _, items: b });
48
- return f;
45
+ const h = [];
46
+ y.has(R) && (h.push({ heading: "", items: y.get(R) }), y.delete(R));
47
+ for (const g of [...y.keys()].sort())
48
+ h.push({ heading: g, items: y.get(g) });
49
+ return h;
49
50
  }
50
- const y = Q(() => {
51
- if (t) {
52
- const c = t(a.value, r.value);
53
- if (c !== null) return c;
51
+ const K = b(() => {
52
+ if (i) {
53
+ const r = i(f.value, n.value);
54
+ if (r !== null) return r;
54
55
  }
55
- return u(a.value, r.value);
56
- }), K = Q(() => h(y.value));
57
- function ee() {
58
- const c = y.value.length;
59
- c !== 0 && (s.value = (s.value + 1) % c);
56
+ return u ? _(f.value, n.value) : f.value;
57
+ }), le = b(() => O(K.value));
58
+ function ne() {
59
+ const r = K.value.length;
60
+ r !== 0 && (l ? t.value = (t.value + 1) % r : t.value = Math.min(t.value + 1, r - 1));
60
61
  }
61
- function te() {
62
- const c = y.value.length;
63
- c !== 0 && (s.value = (s.value - 1 + c) % c);
62
+ function se() {
63
+ const r = K.value.length;
64
+ r !== 0 && (l ? t.value = (t.value - 1 + r) % r : t.value = Math.max(t.value - 1, 0));
64
65
  }
65
- function oe() {
66
- var p;
67
- const c = y.value[s.value];
68
- c && !c.disabled && ((p = c.onSelect) == null || p.call(c, c), n());
66
+ function ue() {
67
+ var y;
68
+ const r = K.value[t.value];
69
+ r && !r.disabled && (m.value = r.value, (y = r.onSelect) == null || y.call(r, r), e == null || e(r), $());
69
70
  }
70
- function R(c) {
71
- var p;
72
- for (const f of a.value) {
73
- if (f.disabled || !f.shortcut) continue;
74
- const _ = me(f.shortcut);
75
- if (fe(c, _)) {
76
- c.preventDefault(), c.stopPropagation(), (p = f.onSelect) == null || p.call(f, f), e == null || e(f), n();
71
+ function j(r) {
72
+ var y;
73
+ for (const h of f.value) {
74
+ if (h.disabled || !h.shortcut) continue;
75
+ const g = ge(h.shortcut);
76
+ if (_e(r, g)) {
77
+ r.preventDefault(), r.stopPropagation(), m.value = h.value, (y = h.onSelect) == null || y.call(h, h), e == null || e(h), $();
77
78
  return;
78
79
  }
79
80
  }
80
81
  }
81
- let w = null;
82
- return g(
83
- a,
84
- (c) => {
85
- w && (w(), w = null), c.some((f) => f.shortcut) && typeof window < "u" && (window.addEventListener("keydown", R), w = () => window.removeEventListener("keydown", R));
82
+ let E = null;
83
+ return k(
84
+ f,
85
+ (r) => {
86
+ E && (E(), E = null), r.some((h) => h.shortcut) && typeof window < "u" && (window.addEventListener("keydown", j), E = () => window.removeEventListener("keydown", j));
86
87
  },
87
- { immediate: !0, flush: "post" }
88
- ), ne(() => {
89
- w && w();
88
+ { immediate: !0 }
89
+ ), ie(() => {
90
+ E && E();
90
91
  }), {
91
- visible: o,
92
- searchQuery: r,
93
- activeIndex: s,
94
- items: a,
95
- toggle: i,
96
- open: l,
97
- close: n,
98
- defaultFilter: u,
99
- groupItems: h,
100
- filteredItems: y,
101
- groupedItems: K,
102
- selectNext: ee,
103
- selectPrev: te,
104
- selectCurrent: oe
92
+ visible: c,
93
+ searchQuery: n,
94
+ activeIndex: t,
95
+ selectedValue: m,
96
+ items: f,
97
+ toggle: S,
98
+ open: s,
99
+ close: $,
100
+ defaultFilter: _,
101
+ groupItems: O,
102
+ filteredItems: K,
103
+ groupedItems: le,
104
+ selectNext: ne,
105
+ selectPrev: se,
106
+ selectCurrent: ue
105
107
  };
106
108
  }
107
- const M = Symbol("cmdk-state"), V = Symbol("cmdk-loading"), j = Symbol("cmdk-close-on-select"), A = Symbol("cmdk-select-handler"), U = Symbol("cmdk-item-index-map");
108
- function q(t, e, o) {
109
- const { filter: r, loading: s = !1, closeOnSelect: a = !0 } = t, i = ve(r, (u) => {
110
- e("select", u), a && i.close();
109
+ const N = Symbol("cmdk-state"), X = Symbol("cmdk-loading"), be = Symbol("cmdk-close-on-select"), U = Symbol("cmdk-select-handler"), Y = Symbol("cmdk-item-index-map");
110
+ function J(a, e, o) {
111
+ const {
112
+ filter: i,
113
+ loading: u = !1,
114
+ closeOnSelect: l = !0,
115
+ shouldFilter: c = !0,
116
+ loop: n = !0
117
+ } = a, m = ke({ filter: i, shouldFilter: c, loop: n }, (s) => {
118
+ e("select", s), e("update:value", s.value), l && m.close();
111
119
  });
112
- x(M, i), x(V, () => s), x(j, () => a), x(A, (u) => {
113
- e("select", u), a && i.close();
120
+ k(
121
+ () => a.value,
122
+ (s) => {
123
+ s !== void 0 && (m.selectedValue.value = s);
124
+ },
125
+ { immediate: !0 }
126
+ ), T(N, m), T(X, () => u), T(be, () => l), T(U, (s) => {
127
+ e("select", s), e("update:value", s.value), l && m.close();
114
128
  });
115
- const l = Q(() => {
116
- const u = /* @__PURE__ */ new Map();
117
- return i.filteredItems.value.forEach((h, y) => u.set(h.value, y)), u;
129
+ const f = b(() => {
130
+ const s = /* @__PURE__ */ new Map();
131
+ return m.filteredItems.value.forEach(($, _) => s.set($.value, _)), s;
118
132
  });
119
- x(U, () => l.value);
120
- function n(u) {
121
- e("select", u), a && i.close();
133
+ T(Y, () => f.value);
134
+ function S(s) {
135
+ e("select", s), e("update:value", s.value), l && m.close();
122
136
  }
123
- return { state: i, handleSelect: n };
137
+ return { state: m, handleSelect: S };
124
138
  }
125
- const pe = {
126
- "data-cmdk-root": "",
127
- role: "combobox",
128
- "aria-expanded": "true",
129
- "aria-haspopup": "listbox"
130
- }, he = /* @__PURE__ */ I({
139
+ const Ce = ["aria-expanded", "aria-label"], we = /* @__PURE__ */ I({
131
140
  __name: "CommandMenu",
132
141
  props: {
133
- visible: { type: Boolean },
142
+ visible: { type: Boolean, default: !1 },
134
143
  searchQuery: {},
135
144
  placeholder: { default: "Type a command or search..." },
136
145
  filter: {},
137
146
  autoFocus: { type: Boolean, default: !0 },
138
147
  closeOnSelect: { type: Boolean, default: !0 },
139
- loading: { type: Boolean }
148
+ loading: { type: Boolean },
149
+ label: {},
150
+ shouldFilter: { type: Boolean, default: !0 },
151
+ loop: { type: Boolean, default: !0 },
152
+ value: {}
140
153
  },
141
- emits: ["update:visible", "update:searchQuery", "select"],
142
- setup(t, { expose: e, emit: o }) {
143
- const r = t, s = o, { state: a, handleSelect: i } = q(
154
+ emits: ["update:visible", "update:searchQuery", "update:value", "select"],
155
+ setup(a, { expose: e, emit: o }) {
156
+ const i = a, u = o, { state: l, handleSelect: c } = J(
144
157
  {
145
- filter: r.filter,
146
- loading: r.loading,
147
- closeOnSelect: r.closeOnSelect
158
+ filter: i.filter,
159
+ loading: i.loading,
160
+ closeOnSelect: i.closeOnSelect,
161
+ shouldFilter: i.shouldFilter,
162
+ loop: i.loop,
163
+ value: i.value
148
164
  },
149
- s
165
+ u
150
166
  );
151
- return a.visible.value = r.visible ?? !0, a.searchQuery.value = r.searchQuery ?? "", x("cmdk-filter", r.filter), g(
152
- () => r.visible,
153
- (l) => {
154
- l !== void 0 && (a.visible.value = l);
155
- }
156
- ), g(a.visible, (l) => s("update:visible", l)), g(
157
- () => r.searchQuery,
158
- (l) => {
159
- l !== void 0 && (a.searchQuery.value = l);
167
+ return k(
168
+ () => i.visible,
169
+ (n) => {
170
+ n !== void 0 && (l.visible.value = n);
171
+ },
172
+ { immediate: !0 }
173
+ ), k(l.visible, (n) => u("update:visible", n)), k(
174
+ () => i.searchQuery,
175
+ (n) => {
176
+ n !== void 0 && (l.searchQuery.value = n);
160
177
  }
161
- ), g(a.searchQuery, (l) => s("update:searchQuery", l)), e({
162
- open: a.open,
163
- close: a.close,
164
- toggle: a.toggle,
165
- searchQuery: a.searchQuery,
166
- items: a.items,
167
- filteredItems: a.filteredItems
168
- }), (l, n) => (d(), m("div", pe, [
169
- C(l.$slots, "default", {
170
- items: v(a).items,
171
- filteredItems: v(a).filteredItems,
172
- searchQuery: v(a).searchQuery,
173
- selectNext: v(a).selectNext,
174
- selectPrev: v(a).selectPrev,
175
- selectCurrent: v(a).selectCurrent,
176
- handleSelect: v(i)
178
+ ), k(l.searchQuery, (n) => u("update:searchQuery", n)), e({
179
+ open: l.open,
180
+ close: l.close,
181
+ toggle: l.toggle,
182
+ searchQuery: l.searchQuery,
183
+ items: l.items,
184
+ filteredItems: l.filteredItems
185
+ }), (n, t) => (d(), v("div", {
186
+ "data-cmdk-root": "",
187
+ role: "combobox",
188
+ "aria-expanded": p(l).visible.value,
189
+ "aria-label": a.label ?? "Command menu",
190
+ "aria-haspopup": "listbox"
191
+ }, [
192
+ x(n.$slots, "default", {
193
+ items: p(l).items,
194
+ filteredItems: p(l).filteredItems,
195
+ searchQuery: p(l).searchQuery,
196
+ selectNext: p(l).selectNext,
197
+ selectPrev: p(l).selectPrev,
198
+ selectCurrent: p(l).selectCurrent,
199
+ handleSelect: p(c)
177
200
  })
178
- ]));
201
+ ], 8, Ce));
179
202
  }
180
203
  });
181
- function O(t, e) {
182
- const o = D(t);
183
- if (!o)
184
- throw new Error(`[vue-cmdk] <${e}> must be used inside <CommandMenu> or <CommandDialog>.`);
204
+ function F(a, e) {
205
+ const o = P(a);
206
+ if (o == null)
207
+ throw new Error(
208
+ `[vue-cmdk] <${e}> must be used inside <CommandMenu> or <CommandDialog>.`
209
+ );
185
210
  return o;
186
211
  }
187
- const ye = ["value", "placeholder", "autofocus"], z = /* @__PURE__ */ I({
212
+ const Ie = ["value", "placeholder", "aria-activedescendant", "autofocus"], W = /* @__PURE__ */ I({
188
213
  __name: "CommandInput",
189
214
  props: {
190
215
  placeholder: { default: "Type a command or search..." },
191
216
  autoFocus: { type: Boolean, default: !0 }
192
217
  },
193
- setup(t, { expose: e }) {
194
- const o = O(M, "CommandInput"), r = D(A, () => {
195
- }), s = E(null);
196
- e({ inputRef: s });
197
- function a(l) {
198
- o.searchQuery.value = l.target.value, o.activeIndex.value = 0;
218
+ setup(a, { expose: e }) {
219
+ const o = F(N, "CommandInput"), i = P(U, () => {
220
+ }), u = M(null);
221
+ e({ inputRef: u });
222
+ const l = b(() => {
223
+ const t = o.filteredItems.value[o.activeIndex.value];
224
+ return t ? `cmdk-item-${t.value}` : void 0;
225
+ });
226
+ function c(t) {
227
+ const m = t.target;
228
+ m && (o.searchQuery.value = m.value, o.activeIndex.value = 0);
199
229
  }
200
- function i(l) {
201
- var n;
202
- if (l.key === "ArrowDown")
203
- l.preventDefault(), o.selectNext();
204
- else if (l.key === "ArrowUp")
205
- l.preventDefault(), o.selectPrev();
206
- else if (l.key === "Enter") {
207
- l.preventDefault();
208
- const u = o.filteredItems.value[o.activeIndex.value];
209
- u && !u.disabled && ((n = u.onSelect) == null || n.call(u, u), r(u));
230
+ function n(t) {
231
+ var m;
232
+ if (t.key === "ArrowDown")
233
+ t.preventDefault(), o.selectNext();
234
+ else if (t.key === "ArrowUp")
235
+ t.preventDefault(), o.selectPrev();
236
+ else if (t.key === "Enter") {
237
+ t.preventDefault();
238
+ const f = o.filteredItems.value[o.activeIndex.value];
239
+ f && !f.disabled && ((m = f.onSelect) == null || m.call(f, f), i(f));
210
240
  }
211
241
  }
212
- return (l, n) => (d(), m("input", {
242
+ return (t, m) => (d(), v("input", {
213
243
  ref_key: "inputRef",
214
- ref: s,
244
+ ref: u,
215
245
  "data-cmdk-input": "",
216
- value: v(o).searchQuery.value,
217
- placeholder: t.placeholder,
246
+ value: p(o).searchQuery.value,
247
+ placeholder: a.placeholder,
218
248
  role: "searchbox",
249
+ "aria-activedescendant": l.value,
219
250
  autocomplete: "off",
220
251
  autocorrect: "off",
221
252
  spellcheck: "false",
222
- autofocus: t.autoFocus,
223
- onInput: a,
224
- onKeydown: i
225
- }, null, 40, ye));
253
+ autofocus: a.autoFocus,
254
+ onInput: c,
255
+ onKeydown: n
256
+ }, null, 40, Ie));
226
257
  }
227
- }), _e = {
258
+ }), Se = {
228
259
  key: 0,
229
260
  "data-cmdk-empty": ""
230
- }, H = /* @__PURE__ */ I({
261
+ }, Z = /* @__PURE__ */ I({
231
262
  __name: "CommandEmpty",
232
- setup(t) {
233
- const e = O(M, "CommandEmpty");
234
- return (o, r) => v(e).searchQuery.value && v(e).filteredItems.value.length === 0 ? (d(), m("div", _e, [
235
- C(o.$slots, "default", {}, () => [
236
- r[0] || (r[0] = k("span", null, "No results found.", -1))
263
+ setup(a) {
264
+ const e = F(N, "CommandEmpty");
265
+ return (o, i) => p(e).searchQuery.value && p(e).filteredItems.value.length === 0 ? (d(), v("div", Se, [
266
+ x(o.$slots, "default", {}, () => [
267
+ i[0] || (i[0] = w("span", null, "No results found.", -1))
237
268
  ])
238
- ])) : S("", !0);
269
+ ])) : L("", !0);
239
270
  }
240
- }), ge = {
271
+ }), $e = {
241
272
  key: 0,
242
273
  "data-cmdk-loading": ""
243
- }, X = /* @__PURE__ */ I({
274
+ }, q = /* @__PURE__ */ I({
244
275
  __name: "CommandLoading",
245
276
  props: {
246
- loading: { type: Boolean, default: !1 }
277
+ loading: { type: Boolean }
247
278
  },
248
- setup(t) {
249
- return (e, o) => t.loading ? (d(), m("div", ge, [
250
- C(e.$slots, "default", {}, () => [
251
- o[0] || (o[0] = k("span", null, "Loading...", -1))
279
+ setup(a) {
280
+ return (e, o) => a.loading ? (d(), v("div", $e, [
281
+ x(e.$slots, "default", {}, () => [
282
+ o[0] || (o[0] = w("span", null, "Loading...", -1))
252
283
  ])
253
- ])) : S("", !0);
284
+ ])) : L("", !0);
254
285
  }
255
- }), ke = {
286
+ }), xe = {
256
287
  "data-cmdk-group": "",
257
288
  role: "group"
258
- }, be = {
289
+ }, Le = {
259
290
  key: 0,
260
291
  "data-cmdk-group-heading": "",
261
292
  role: "presentation"
262
- }, Ce = {
293
+ }, Me = {
263
294
  "data-cmdk-group-items": "",
264
295
  role: "group"
265
- }, J = /* @__PURE__ */ I({
296
+ }, ee = /* @__PURE__ */ I({
266
297
  __name: "CommandGroup",
267
298
  props: {
268
- heading: {}
299
+ heading: {},
300
+ forceMount: { type: Boolean }
269
301
  },
270
- setup(t) {
271
- return (e, o) => (d(), m("div", ke, [
272
- t.heading ? (d(), m("div", be, T(t.heading), 1)) : S("", !0),
273
- k("div", Ce, [
274
- C(e.$slots, "default")
302
+ setup(a) {
303
+ return (e, o) => (d(), v("div", xe, [
304
+ a.heading ? (d(), v("div", Le, Q(a.heading), 1)) : L("", !0),
305
+ w("div", Me, [
306
+ x(e.$slots, "default")
275
307
  ])
276
308
  ]));
277
309
  }
278
- }), Se = ["aria-selected", "aria-disabled", "data-value"], Ie = {
310
+ });
311
+ function Ee(a, e) {
312
+ if (!e.trim()) return [{ text: a, highlighted: !1 }];
313
+ const o = a.toLowerCase(), i = e.toLowerCase(), u = [];
314
+ let l = 0;
315
+ for (; l < a.length; ) {
316
+ const c = o.indexOf(i, l);
317
+ if (c === -1) {
318
+ u.push({ text: a.slice(l), highlighted: !1 });
319
+ break;
320
+ }
321
+ c > l && u.push({ text: a.slice(l, c), highlighted: !1 }), u.push({ text: a.slice(c, c + e.length), highlighted: !0 }), l = c + e.length;
322
+ }
323
+ return u;
324
+ }
325
+ const De = ["id", "aria-selected", "aria-disabled", "data-value"], Qe = {
279
326
  key: 0,
280
327
  "data-cmdk-item-icon": ""
281
- }, we = { "data-cmdk-item-label": "" }, $e = {
328
+ }, Be = { "data-cmdk-item-label": "" }, Ke = { key: 0 }, Te = { key: 1 }, Fe = {
282
329
  key: 1,
283
330
  "data-cmdk-item-shortcut": ""
284
- }, W = /* @__PURE__ */ I({
331
+ }, te = /* @__PURE__ */ I({
285
332
  __name: "CommandItem",
286
333
  props: {
287
334
  value: {},
288
- label: {},
289
- keywords: {},
290
- shortcut: {},
335
+ label: { default: void 0 },
336
+ keywords: { default: void 0 },
337
+ shortcut: { default: void 0 },
291
338
  disabled: { type: Boolean, default: !1 },
292
- icon: {},
293
- onSelect: {}
339
+ forceMount: { type: Boolean, default: !1 },
340
+ icon: { type: [Object, Function], default: void 0 },
341
+ onSelect: { type: Function, default: void 0 }
294
342
  },
295
- setup(t) {
296
- const e = t, o = O(M, "CommandItem"), r = D(U, () => /* @__PURE__ */ new Map()), s = Q(() => ({
343
+ setup(a) {
344
+ const e = a, o = F(N, "CommandItem"), i = P(Y, () => /* @__PURE__ */ new Map()), u = b(() => `cmdk-item-${e.value}`), l = b(() => ({
297
345
  value: e.value,
298
346
  label: e.label,
299
347
  keywords: e.keywords,
300
348
  shortcut: e.shortcut,
301
349
  disabled: e.disabled,
350
+ forceMount: e.forceMount,
302
351
  icon: e.icon,
303
352
  onSelect: e.onSelect
304
- })), a = Q(() => {
305
- const u = o.filteredItems.value[o.activeIndex.value];
306
- return (u == null ? void 0 : u.value) === e.value;
307
- }), i = D(j, () => !0), l = D(A, () => {
353
+ })), c = b(() => e.icon ? ce(e.icon) ? () => e.icon : e.icon : null), n = b(() => {
354
+ const s = o.filteredItems.value[o.activeIndex.value];
355
+ return (s == null ? void 0 : s.value) === e.value;
356
+ }), t = P(U, () => {
357
+ }), m = b(() => e.label || e.value), f = b(() => {
358
+ const s = o.searchQuery.value;
359
+ return s.trim() ? Ee(m.value, s) : null;
308
360
  });
309
- function n() {
310
- var u;
311
- e.disabled || ((u = e.onSelect) == null || u.call(e, s.value), l(s.value), i() && o.close());
361
+ function S() {
362
+ var s;
363
+ e.disabled || ((s = e.onSelect) == null || s.call(e, l.value), t(l.value));
312
364
  }
313
- return (u, h) => (d(), m("div", {
365
+ return (s, $) => (d(), v("div", {
366
+ id: u.value,
314
367
  "data-cmdk-item": "",
315
368
  role: "option",
316
- "aria-selected": a.value,
317
- "aria-disabled": t.disabled,
318
- "data-value": t.value,
319
- class: le({ active: a.value, disabled: t.disabled }),
320
- onClick: n,
321
- onPointerenter: h[0] || (h[0] = () => {
322
- const y = v(r)().get(t.value);
323
- y !== void 0 && (v(o).activeIndex.value = y);
369
+ "aria-selected": n.value,
370
+ "aria-disabled": a.disabled,
371
+ "data-value": a.value,
372
+ class: de({ active: n.value, disabled: a.disabled }),
373
+ onClick: S,
374
+ onPointerenter: $[0] || ($[0] = () => {
375
+ const _ = p(i)().get(a.value);
376
+ _ !== void 0 && (p(o).activeIndex.value = _);
324
377
  })
325
378
  }, [
326
- C(u.$slots, "default", {
327
- item: s.value,
328
- active: a.value
379
+ x(s.$slots, "default", {
380
+ item: l.value,
381
+ active: n.value
329
382
  }, () => [
330
- t.icon ? (d(), m("span", Ie, [
331
- (d(), N(se(t.icon)))
332
- ])) : S("", !0),
333
- k("span", we, T(t.label || t.value), 1),
334
- t.shortcut ? (d(), m("span", $e, T(t.shortcut), 1)) : S("", !0)
383
+ c.value ? (d(), v("span", Qe, [
384
+ (d(), V(fe(c.value)))
385
+ ])) : L("", !0),
386
+ w("span", Be, [
387
+ f.value ? (d(!0), v(C, { key: 0 }, G(f.value, (_, O) => (d(), v(C, { key: O }, [
388
+ _.highlighted ? (d(), v("mark", Ke, Q(_.text), 1)) : (d(), v("span", Te, Q(_.text), 1))
389
+ ], 64))), 128)) : (d(), v(C, { key: 1 }, [
390
+ A(Q(m.value), 1)
391
+ ], 64))
392
+ ]),
393
+ a.shortcut ? (d(), v("span", Fe, Q(a.shortcut), 1)) : L("", !0)
335
394
  ])
336
- ], 42, Se));
395
+ ], 42, De));
337
396
  }
338
- }), xe = (t, e) => {
339
- const o = t.__vccOpts || t;
340
- for (const [r, s] of e)
341
- o[r] = s;
342
- return o;
343
- }, Ee = {}, De = {
397
+ }), Ne = {
344
398
  "data-cmdk-separator": "",
345
399
  role: "separator"
346
- };
347
- function Le(t, e) {
348
- return d(), m("div", De);
349
- }
350
- const Y = /* @__PURE__ */ xe(Ee, [["render", Le]]), Qe = {
400
+ }, ae = /* @__PURE__ */ I({
401
+ __name: "CommandSeparator",
402
+ props: {
403
+ alwaysRender: { type: Boolean }
404
+ },
405
+ setup(a) {
406
+ return (e, o) => (d(), v("div", Ne));
407
+ }
408
+ }), Oe = {
351
409
  "data-cmdk-list": "",
352
410
  role: "listbox"
353
- }, Me = {
411
+ }, Re = {
354
412
  "aria-live": "polite",
355
413
  "aria-atomic": "true",
356
414
  class: "sr-only"
357
- }, Z = /* @__PURE__ */ I({
415
+ }, oe = /* @__PURE__ */ I({
358
416
  __name: "CommandList",
359
- setup(t) {
360
- const e = O(M, "CommandList"), o = D(V, () => !1), r = Q(() => e.groupedItems.value);
361
- return (s, a) => (d(), m("div", Qe, [
362
- k("div", Me, [
363
- v(e).searchQuery.value && v(e).filteredItems.value.length === 0 ? (d(), m($, { key: 0 }, [
364
- B("No results found")
365
- ], 64)) : v(o)() ? (d(), m($, { key: 1 }, [
366
- B("Loading")
367
- ], 64)) : (d(), m($, { key: 2 }, [
368
- B(T(v(e).filteredItems.value.length) + " items", 1)
417
+ props: {
418
+ alwaysRenderSeparator: { type: Boolean }
419
+ },
420
+ setup(a) {
421
+ const e = F(N, "CommandList"), o = F(X, "CommandList");
422
+ return (i, u) => (d(), v("div", Oe, [
423
+ w("div", Re, [
424
+ p(e).searchQuery.value && p(e).filteredItems.value.length === 0 ? (d(), v(C, { key: 0 }, [
425
+ A("No results found")
426
+ ], 64)) : p(o)() ? (d(), v(C, { key: 1 }, [
427
+ A("Loading")
428
+ ], 64)) : (d(), v(C, { key: 2 }, [
429
+ A(Q(p(e).filteredItems.value.length) + " items", 1)
369
430
  ], 64))
370
431
  ]),
371
- L(H),
372
- L(X, {
373
- loading: v(o)()
432
+ B(Z),
433
+ B(q, {
434
+ loading: p(o)()
374
435
  }, null, 8, ["loading"]),
375
- (d(!0), m($, null, F(r.value, (i) => (d(), m($, {
376
- key: i.heading || "__ungrouped__"
436
+ (d(!0), v(C, null, G(p(e).groupedItems.value, (l, c) => (d(), v(C, {
437
+ key: l.heading || "__ungrouped__"
377
438
  }, [
378
- L(J, {
379
- heading: i.heading
439
+ B(ee, {
440
+ heading: l.heading
380
441
  }, {
381
- default: G(() => [
382
- (d(!0), m($, null, F(i.items, (l) => (d(), N(W, {
383
- key: l.value,
384
- value: l.value,
385
- label: l.label,
386
- shortcut: l.shortcut,
387
- disabled: l.disabled,
388
- icon: l.icon,
389
- "on-select": l.onSelect
390
- }, null, 8, ["value", "label", "shortcut", "disabled", "icon", "on-select"]))), 128))
442
+ default: H(() => [
443
+ (d(!0), v(C, null, G(l.items, (n) => (d(), V(te, {
444
+ key: n.value,
445
+ value: n.value,
446
+ label: n.label,
447
+ keywords: n.keywords,
448
+ shortcut: n.shortcut,
449
+ disabled: n.disabled,
450
+ icon: n.icon,
451
+ "on-select": n.onSelect
452
+ }, null, 8, ["value", "label", "keywords", "shortcut", "disabled", "icon", "on-select"]))), 128))
391
453
  ]),
392
454
  _: 2
393
455
  }, 1032, ["heading"]),
394
- i !== r.value[r.value.length - 1] ? (d(), N(Y, { key: 0 })) : S("", !0)
456
+ a.alwaysRenderSeparator || c !== p(e).groupedItems.value.length - 1 ? (d(), V(ae, { key: 0 })) : L("", !0)
395
457
  ], 64))), 128))
396
458
  ]));
397
459
  }
398
- }), Ke = { "data-cmdk-dialog-wrapper": "" }, Te = { "data-cmdk-dialog-header": "" }, Ne = { "data-cmdk-dialog-body": "" }, Oe = {
460
+ }), Ae = ["aria-label"], Pe = { "data-cmdk-dialog-wrapper": "" }, Ve = { "data-cmdk-dialog-header": "" }, Ge = { "data-cmdk-dialog-body": "" }, Ue = {
399
461
  key: 0,
400
462
  "data-cmdk-dialog-footer": ""
401
- }, Be = /* @__PURE__ */ I({
463
+ }, je = /* @__PURE__ */ I({
402
464
  __name: "CommandDialog",
403
465
  props: {
404
466
  items: { default: () => [] },
467
+ container: {},
405
468
  visible: { type: Boolean, default: !1 },
406
469
  searchQuery: {},
407
470
  placeholder: { default: "Type a command or search..." },
408
471
  filter: {},
409
472
  autoFocus: { type: Boolean, default: !0 },
410
473
  closeOnSelect: { type: Boolean, default: !0 },
411
- loading: { type: Boolean, default: !1 }
474
+ loading: { type: Boolean, default: !1 },
475
+ label: {},
476
+ shouldFilter: { type: Boolean, default: !0 },
477
+ loop: { type: Boolean, default: !0 },
478
+ value: {}
412
479
  },
413
- emits: ["update:visible", "update:searchQuery", "select"],
414
- setup(t, { emit: e }) {
415
- const o = t, r = e, { state: s } = q(
480
+ emits: ["update:visible", "update:searchQuery", "update:value", "select"],
481
+ setup(a, { emit: e }) {
482
+ const o = a, i = e, { state: u } = J(
416
483
  {
417
484
  filter: o.filter,
418
485
  loading: o.loading,
419
- closeOnSelect: o.closeOnSelect
486
+ closeOnSelect: o.closeOnSelect,
487
+ shouldFilter: o.shouldFilter,
488
+ loop: o.loop,
489
+ value: o.value
420
490
  },
421
- r
422
- ), a = E(null);
423
- g(
491
+ i
492
+ ), l = M(null);
493
+ k(
424
494
  () => o.items,
425
- (n) => {
426
- s.items.value = n;
495
+ (t) => {
496
+ u.items.value = t;
427
497
  },
428
498
  { immediate: !0 }
429
- ), g(
499
+ ), k(
430
500
  () => o.visible,
431
- (n) => {
432
- s.visible.value = n;
501
+ (t) => {
502
+ u.visible.value = t;
433
503
  },
434
504
  { immediate: !0 }
435
- ), g(
505
+ ), k(
436
506
  () => o.searchQuery,
437
- (n) => {
438
- n !== void 0 && (s.searchQuery.value = n);
507
+ (t) => {
508
+ t !== void 0 && (u.searchQuery.value = t);
439
509
  }
440
- ), g(s.searchQuery, (n) => r("update:searchQuery", n)), g(s.visible, async (n) => {
441
- var u, h;
442
- r("update:visible", n), n && (await re(), (h = (u = a.value) == null ? void 0 : u.inputRef) == null || h.focus());
510
+ ), k(u.searchQuery, (t) => i("update:searchQuery", t)), k(u.visible, async (t) => {
511
+ var m, f;
512
+ i("update:visible", t), t && (await me(), (f = (m = l.value) == null ? void 0 : m.inputRef) == null || f.focus());
443
513
  });
444
- function i(n) {
445
- n.target === n.currentTarget && s.close();
514
+ function c(t) {
515
+ t.target === t.currentTarget && u.close();
446
516
  }
447
- function l(n) {
448
- if (n.key === "Escape" && (n.preventDefault(), s.close()), n.key === "Tab") {
449
- const h = n.currentTarget.querySelectorAll(
517
+ function n(t) {
518
+ if (t.key === "Escape" && (t.preventDefault(), u.close()), t.key === "Tab") {
519
+ const f = t.currentTarget.querySelectorAll(
450
520
  'input, button, [href], select, textarea, [tabindex]:not([tabindex="-1"])'
451
521
  );
452
- if (h.length === 0) return;
453
- const y = h[0], K = h[h.length - 1];
454
- n.shiftKey ? document.activeElement === y && (n.preventDefault(), K.focus()) : document.activeElement === K && (n.preventDefault(), y.focus());
522
+ if (f.length === 0) return;
523
+ const S = f[0], s = f[f.length - 1];
524
+ t.shiftKey ? document.activeElement === S && (t.preventDefault(), s.focus()) : document.activeElement === s && (t.preventDefault(), S.focus());
455
525
  }
456
526
  }
457
- return (n, u) => (d(), N(ue, { to: "body" }, [
458
- L(ce, { name: "cmdk-dialog" }, {
459
- default: G(() => [
460
- v(s).visible.value ? (d(), m("div", {
527
+ return (t, m) => (d(), V(ve, {
528
+ to: a.container ?? "body"
529
+ }, [
530
+ B(pe, { name: "cmdk-dialog" }, {
531
+ default: H(() => [
532
+ p(u).visible.value ? (d(), v("div", {
461
533
  key: 0,
462
534
  "data-cmdk-dialog": "",
463
- onKeydown: l
535
+ role: "dialog",
536
+ "aria-modal": "true",
537
+ "aria-label": o.label ?? "Command menu",
538
+ onKeydown: n
464
539
  }, [
465
- k("div", {
540
+ w("div", {
466
541
  "data-cmdk-dialog-mask": "",
467
- onClick: i
542
+ "aria-hidden": "true",
543
+ onClick: c
468
544
  }),
469
- k("div", Ke, [
470
- k("div", Te, [
471
- C(n.$slots, "header", {}, () => [
472
- L(z, {
545
+ w("div", Pe, [
546
+ w("div", Ve, [
547
+ x(t.$slots, "header", {}, () => [
548
+ B(W, {
473
549
  ref_key: "commandInputRef",
474
- ref: a,
475
- placeholder: t.placeholder,
476
- "auto-focus": t.autoFocus
550
+ ref: l,
551
+ placeholder: a.placeholder,
552
+ "auto-focus": a.autoFocus
477
553
  }, null, 8, ["placeholder", "auto-focus"])
478
554
  ])
479
555
  ]),
480
- k("div", Ne, [
481
- C(n.$slots, "body", {}, () => [
482
- L(Z)
556
+ w("div", Ge, [
557
+ x(t.$slots, "body", {}, () => [
558
+ B(oe)
483
559
  ])
484
560
  ]),
485
- n.$slots.footer ? (d(), m("div", Oe, [
486
- C(n.$slots, "footer")
487
- ])) : S("", !0)
561
+ t.$slots.footer ? (d(), v("div", Ue, [
562
+ x(t.$slots, "footer")
563
+ ])) : L("", !0)
488
564
  ])
489
- ], 32)) : S("", !0)
565
+ ], 40, Ae)) : L("", !0)
490
566
  ]),
491
567
  _: 3
492
568
  })
493
- ]));
569
+ ], 8, ["to"]));
494
570
  }
495
- }), Re = {
496
- Menu: he,
497
- Dialog: Be,
498
- Input: z,
499
- List: Z,
500
- Group: J,
501
- Item: W,
502
- Empty: H,
503
- Separator: Y,
504
- Loading: X
571
+ }), He = {
572
+ Menu: we,
573
+ Dialog: je,
574
+ Input: W,
575
+ List: oe,
576
+ Group: ee,
577
+ Item: te,
578
+ Empty: Z,
579
+ Separator: ae,
580
+ Loading: q
505
581
  };
506
582
  export {
507
- Re as Command,
508
- Be as CommandDialog,
509
- H as CommandEmpty,
510
- J as CommandGroup,
511
- z as CommandInput,
512
- W as CommandItem,
513
- Z as CommandList,
514
- X as CommandLoading,
515
- he as CommandMenu,
516
- Y as CommandSeparator,
517
- ve as useCommandMenu
583
+ He as Command,
584
+ je as CommandDialog,
585
+ Z as CommandEmpty,
586
+ ee as CommandGroup,
587
+ W as CommandInput,
588
+ te as CommandItem,
589
+ oe as CommandList,
590
+ q as CommandLoading,
591
+ we as CommandMenu,
592
+ ae as CommandSeparator,
593
+ ke as useCommandMenu
518
594
  };