UNPKG

@konstructio/ui

Version:

A set of reusable and customizable React components built for konstruct.io

433 lines (432 loc) 19.6 kB
import { u as T, R as Ce, P as Ae, O as Ie, C as Le } from "./index-DyKo5ZJT.js"; import * as l from "react"; import be from "react"; import { P as C } from "./index-D7QNmo_D.js"; var pe = 1, De = 0.9, $e = 0.8, Me = 0.17, X = 0.1, Q = 0.999, Ve = 0.9999, Te = 0.99, Ke = /[\\\/_+.#"@\[\(\{&]/, qe = /[\\\/_+.#"@\[\(\{&]/g, Pe = /[\s-]/, ye = /[\s-]/g; function re(e, n, r, v, u, i, d) { if (i === n.length) return u === e.length ? pe : Te; var m = `${u},${i}`; if (d[m] !== void 0) return d[m]; for (var g = v.charAt(i), p = r.indexOf(g, u), c = 0, o, S, f, E; p >= 0; ) o = re(e, n, r, v, p + 1, i + 1, d), o > c && (p === u ? o *= pe : Ke.test(e.charAt(p - 1)) ? (o *= $e, f = e.slice(u, p - 1).match(qe), f && u > 0 && (o *= Math.pow(Q, f.length))) : Pe.test(e.charAt(p - 1)) ? (o *= De, E = e.slice(u, p - 1).match(ye), E && u > 0 && (o *= Math.pow(Q, E.length))) : (o *= Me, u > 0 && (o *= Math.pow(Q, p - u))), e.charAt(p) !== n.charAt(i) && (o *= Ve)), (o < X && r.charAt(p - 1) === v.charAt(i + 1) || v.charAt(i + 1) === v.charAt(i) && r.charAt(p - 1) !== v.charAt(i)) && (S = re(e, n, r, v, p + 1, i + 2, d), S * X > o && (o = S * X)), o > c && (c = o), p = r.indexOf(g, p + 1); return d[m] = c, c; } function me(e) { return e.toLowerCase().replace(ye, " "); } function Ue(e, n, r) { return e = r && r.length > 0 ? `${e + " " + r.join(" ")}` : e, re(e, n, me(e), me(n), 0, 0, {}); } var H = { exports: {} }, Z = {}; /** * @license React * use-sync-external-store-shim.production.js * * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var he; function je() { if (he) return Z; he = 1; var e = be; function n(o, S) { return o === S && (o !== 0 || 1 / o === 1 / S) || o !== o && S !== S; } var r = typeof Object.is == "function" ? Object.is : n, v = e.useState, u = e.useEffect, i = e.useLayoutEffect, d = e.useDebugValue; function m(o, S) { var f = S(), E = v({ inst: { value: f, getSnapshot: S } }), w = E[0].inst, _ = E[1]; return i( function() { w.value = f, w.getSnapshot = S, g(w) && _({ inst: w }); }, [o, f, S] ), u( function() { return g(w) && _({ inst: w }), o(function() { g(w) && _({ inst: w }); }); }, [o] ), d(f), f; } function g(o) { var S = o.getSnapshot; o = o.value; try { var f = S(); return !r(o, f); } catch { return !0; } } function p(o, S) { return S(); } var c = typeof window > "u" || typeof window.document > "u" || typeof window.document.createElement > "u" ? p : m; return Z.useSyncExternalStore = e.useSyncExternalStore !== void 0 ? e.useSyncExternalStore : c, Z; } var ee = {}; /** * @license React * use-sync-external-store-shim.development.js * * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var ge; function Ge() { return ge || (ge = 1, process.env.NODE_ENV !== "production" && function() { function e(f, E) { return f === E && (f !== 0 || 1 / f === 1 / E) || f !== f && E !== E; } function n(f, E) { c || u.startTransition === void 0 || (c = !0, console.error( "You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release." )); var w = E(); if (!o) { var _ = E(); i(w, _) || (console.error( "The result of getSnapshot should be cached to avoid an infinite loop" ), o = !0); } _ = d({ inst: { value: w, getSnapshot: E } }); var k = _[0].inst, M = _[1]; return g( function() { k.value = w, k.getSnapshot = E, r(k) && M({ inst: k }); }, [f, w, E] ), m( function() { return r(k) && M({ inst: k }), f(function() { r(k) && M({ inst: k }); }); }, [f] ), p(w), w; } function r(f) { var E = f.getSnapshot; f = f.value; try { var w = E(); return !i(f, w); } catch { return !0; } } function v(f, E) { return E(); } typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ < "u" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart == "function" && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); var u = be, i = typeof Object.is == "function" ? Object.is : e, d = u.useState, m = u.useEffect, g = u.useLayoutEffect, p = u.useDebugValue, c = !1, o = !1, S = typeof window > "u" || typeof window.document > "u" || typeof window.document.createElement > "u" ? v : n; ee.useSyncExternalStore = u.useSyncExternalStore !== void 0 ? u.useSyncExternalStore : S, typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ < "u" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop == "function" && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); }()), ee; } var Se; function He() { return Se || (Se = 1, process.env.NODE_ENV === "production" ? H.exports = /* @__PURE__ */ je() : H.exports = /* @__PURE__ */ Ge()), H.exports; } var Be = /* @__PURE__ */ He(), P = '[cmdk-group=""]', te = '[cmdk-group-items=""]', Fe = '[cmdk-group-heading=""]', le = '[cmdk-item=""]', Ee = `${le}:not([aria-disabled="true"])`, ne = "cmdk-item-select", L = "data-value", Ne = (e, n, r) => Ue(e, n, r), we = l.createContext(void 0), j = () => l.useContext(we), xe = l.createContext(void 0), ue = () => l.useContext(xe), _e = l.createContext(void 0), ke = l.forwardRef((e, n) => { let r = V(() => { var t, s; return { search: "", value: (s = (t = e.value) != null ? t : e.defaultValue) != null ? s : "", filtered: { count: 0, items: /* @__PURE__ */ new Map(), groups: /* @__PURE__ */ new Set() } }; }), v = V(() => /* @__PURE__ */ new Set()), u = V(() => /* @__PURE__ */ new Map()), i = V(() => /* @__PURE__ */ new Map()), d = V(() => /* @__PURE__ */ new Set()), m = Oe(e), { label: g, children: p, value: c, onValueChange: o, filter: S, shouldFilter: f, loop: E, disablePointerSelection: w = !1, vimBindings: _ = !0, ...k } = e, M = T(), ae = T(), oe = T(), A = l.useRef(null), x = nt(); D(() => { if (c !== void 0) { let t = c.trim(); r.current.value = t, O.emit(); } }, [c]), D(() => { x(6, ce); }, []); let O = l.useMemo(() => ({ subscribe: (t) => (d.current.add(t), () => d.current.delete(t)), snapshot: () => r.current, setState: (t, s, h) => { var a, b, y; if (!Object.is(r.current[t], s)) { if (r.current[t] = s, t === "search") z(), N(), x(1, W); else if (t === "value" && (h || x(5, ce), ((a = m.current) == null ? void 0 : a.value) !== void 0)) { let R = s ?? ""; (y = (b = m.current).onValueChange) == null || y.call(b, R); return; } O.emit(); } }, emit: () => { d.current.forEach((t) => t()); } }), []), F = l.useMemo(() => ({ value: (t, s, h) => { var a; s !== ((a = i.current.get(t)) == null ? void 0 : a.value) && (i.current.set(t, { value: s, keywords: h }), r.current.filtered.items.set(t, ie(s, h)), x(2, () => { N(), O.emit(); })); }, item: (t, s) => (v.current.add(t), s && (u.current.has(s) ? u.current.get(s).add(t) : u.current.set(s, /* @__PURE__ */ new Set([t]))), x(3, () => { z(), N(), r.current.value || W(), O.emit(); }), () => { i.current.delete(t), v.current.delete(t), r.current.filtered.items.delete(t); let h = K(); x(4, () => { z(), (h == null ? void 0 : h.getAttribute("id")) === t && W(), O.emit(); }); }), group: (t) => (u.current.has(t) || u.current.set(t, /* @__PURE__ */ new Set()), () => { i.current.delete(t), u.current.delete(t); }), filter: () => m.current.shouldFilter, label: g || e["aria-label"], getDisablePointerSelection: () => m.current.disablePointerSelection, listId: M, inputId: oe, labelId: ae, listInnerRef: A }), []); function ie(t, s) { var h, a; let b = (a = (h = m.current) == null ? void 0 : h.filter) != null ? a : Ne; return t ? b(t, r.current.search, s) : 0; } function N() { if (!r.current.search || m.current.shouldFilter === !1) return; let t = r.current.filtered.items, s = []; r.current.filtered.groups.forEach((a) => { let b = u.current.get(a), y = 0; b.forEach((R) => { let I = t.get(R); y = Math.max(I, y); }), s.push([a, y]); }); let h = A.current; q().sort((a, b) => { var y, R; let I = a.getAttribute("id"), G = b.getAttribute("id"); return ((y = t.get(G)) != null ? y : 0) - ((R = t.get(I)) != null ? R : 0); }).forEach((a) => { let b = a.closest(te); b ? b.appendChild(a.parentElement === b ? a : a.closest(`${te} > *`)) : h.appendChild(a.parentElement === h ? a : a.closest(`${te} > *`)); }), s.sort((a, b) => b[1] - a[1]).forEach((a) => { var b; let y = (b = A.current) == null ? void 0 : b.querySelector(`${P}[${L}="${encodeURIComponent(a[0])}"]`); y == null || y.parentElement.appendChild(y); }); } function W() { let t = q().find((h) => h.getAttribute("aria-disabled") !== "true"), s = t == null ? void 0 : t.getAttribute(L); O.setState("value", s || void 0); } function z() { var t, s, h, a; if (!r.current.search || m.current.shouldFilter === !1) { r.current.filtered.count = v.current.size; return; } r.current.filtered.groups = /* @__PURE__ */ new Set(); let b = 0; for (let y of v.current) { let R = (s = (t = i.current.get(y)) == null ? void 0 : t.value) != null ? s : "", I = (a = (h = i.current.get(y)) == null ? void 0 : h.keywords) != null ? a : [], G = ie(R, I); r.current.filtered.items.set(y, G), G > 0 && b++; } for (let [y, R] of u.current) for (let I of R) if (r.current.filtered.items.get(I) > 0) { r.current.filtered.groups.add(y); break; } r.current.filtered.count = b; } function ce() { var t, s, h; let a = K(); a && (((t = a.parentElement) == null ? void 0 : t.firstChild) === a && ((h = (s = a.closest(P)) == null ? void 0 : s.querySelector(Fe)) == null || h.scrollIntoView({ block: "nearest" })), a.scrollIntoView({ block: "nearest" })); } function K() { var t; return (t = A.current) == null ? void 0 : t.querySelector(`${le}[aria-selected="true"]`); } function q() { var t; return Array.from(((t = A.current) == null ? void 0 : t.querySelectorAll(Ee)) || []); } function Y(t) { let s = q()[t]; s && O.setState("value", s.getAttribute(L)); } function J(t) { var s; let h = K(), a = q(), b = a.findIndex((R) => R === h), y = a[b + t]; (s = m.current) != null && s.loop && (y = b + t < 0 ? a[a.length - 1] : b + t === a.length ? a[0] : a[b + t]), y && O.setState("value", y.getAttribute(L)); } function se(t) { let s = K(), h = s == null ? void 0 : s.closest(P), a; for (; h && !a; ) h = t > 0 ? tt(h, P) : rt(h, P), a = h == null ? void 0 : h.querySelector(Ee); a ? O.setState("value", a.getAttribute(L)) : J(t); } let de = () => Y(q().length - 1), fe = (t) => { t.preventDefault(), t.metaKey ? de() : t.altKey ? se(1) : J(1); }, ve = (t) => { t.preventDefault(), t.metaKey ? Y(0) : t.altKey ? se(-1) : J(-1); }; return l.createElement(C.div, { ref: n, tabIndex: -1, ...k, "cmdk-root": "", onKeyDown: (t) => { var s; if ((s = k.onKeyDown) == null || s.call(k, t), !t.defaultPrevented) switch (t.key) { case "n": case "j": { _ && t.ctrlKey && fe(t); break; } case "ArrowDown": { fe(t); break; } case "p": case "k": { _ && t.ctrlKey && ve(t); break; } case "ArrowUp": { ve(t); break; } case "Home": { t.preventDefault(), Y(0); break; } case "End": { t.preventDefault(), de(); break; } case "Enter": if (!t.nativeEvent.isComposing && t.keyCode !== 229) { t.preventDefault(); let h = K(); if (h) { let a = new Event(ne); h.dispatchEvent(a); } } } } }, l.createElement("label", { "cmdk-label": "", htmlFor: F.inputId, id: F.labelId, style: ut }, g), B(e, (t) => l.createElement(xe.Provider, { value: O }, l.createElement(we.Provider, { value: F }, t)))); }), We = l.forwardRef((e, n) => { var r, v; let u = T(), i = l.useRef(null), d = l.useContext(_e), m = j(), g = Oe(e), p = (v = (r = g.current) == null ? void 0 : r.forceMount) != null ? v : d == null ? void 0 : d.forceMount; D(() => { if (!p) return m.item(u, d == null ? void 0 : d.id); }, [p]); let c = Re(u, i, [e.value, e.children, i], e.keywords), o = ue(), S = $((x) => x.value && x.value === c.current), f = $((x) => p || m.filter() === !1 ? !0 : x.search ? x.filtered.items.get(u) > 0 : !0); l.useEffect(() => { let x = i.current; if (!(!x || e.disabled)) return x.addEventListener(ne, E), () => x.removeEventListener(ne, E); }, [f, e.onSelect, e.disabled]); function E() { var x, O; w(), (O = (x = g.current).onSelect) == null || O.call(x, c.current); } function w() { o.setState("value", c.current, !0); } if (!f) return null; let { disabled: _, value: k, onSelect: M, forceMount: ae, keywords: oe, ...A } = e; return l.createElement(C.div, { ref: U([i, n]), ...A, id: u, "cmdk-item": "", role: "option", "aria-disabled": !!_, "aria-selected": !!S, "data-disabled": !!_, "data-selected": !!S, onPointerMove: _ || m.getDisablePointerSelection() ? void 0 : w, onClick: _ ? void 0 : E }, e.children); }), ze = l.forwardRef((e, n) => { let { heading: r, children: v, forceMount: u, ...i } = e, d = T(), m = l.useRef(null), g = l.useRef(null), p = T(), c = j(), o = $((f) => u || c.filter() === !1 ? !0 : f.search ? f.filtered.groups.has(d) : !0); D(() => c.group(d), []), Re(d, m, [e.value, e.heading, g]); let S = l.useMemo(() => ({ id: d, forceMount: u }), [u]); return l.createElement(C.div, { ref: U([m, n]), ...i, "cmdk-group": "", role: "presentation", hidden: o ? void 0 : !0 }, r && l.createElement("div", { ref: g, "cmdk-group-heading": "", "aria-hidden": !0, id: p }, r), B(e, (f) => l.createElement("div", { "cmdk-group-items": "", role: "group", "aria-labelledby": r ? p : void 0 }, l.createElement(_e.Provider, { value: S }, f)))); }), Ye = l.forwardRef((e, n) => { let { alwaysRender: r, ...v } = e, u = l.useRef(null), i = $((d) => !d.search); return !r && !i ? null : l.createElement(C.div, { ref: U([u, n]), ...v, "cmdk-separator": "", role: "separator" }); }), Je = l.forwardRef((e, n) => { let { onValueChange: r, ...v } = e, u = e.value != null, i = ue(), d = $((c) => c.search), m = $((c) => c.value), g = j(), p = l.useMemo(() => { var c; let o = (c = g.listInnerRef.current) == null ? void 0 : c.querySelector(`${le}[${L}="${encodeURIComponent(m)}"]`); return o == null ? void 0 : o.getAttribute("id"); }, []); return l.useEffect(() => { e.value != null && i.setState("search", e.value); }, [e.value]), l.createElement(C.input, { ref: n, ...v, "cmdk-input": "", autoComplete: "off", autoCorrect: "off", spellCheck: !1, "aria-autocomplete": "list", role: "combobox", "aria-expanded": !0, "aria-controls": g.listId, "aria-labelledby": g.labelId, "aria-activedescendant": p, id: g.inputId, type: "text", value: u ? e.value : d, onChange: (c) => { u || i.setState("search", c.target.value), r == null || r(c.target.value); } }); }), Xe = l.forwardRef((e, n) => { let { children: r, label: v = "Suggestions", ...u } = e, i = l.useRef(null), d = l.useRef(null), m = j(); return l.useEffect(() => { if (d.current && i.current) { let g = d.current, p = i.current, c, o = new ResizeObserver(() => { c = requestAnimationFrame(() => { let S = g.offsetHeight; p.style.setProperty("--cmdk-list-height", S.toFixed(1) + "px"); }); }); return o.observe(g), () => { cancelAnimationFrame(c), o.unobserve(g); }; } }, []), l.createElement(C.div, { ref: U([i, n]), ...u, "cmdk-list": "", role: "listbox", "aria-label": v, id: m.listId }, B(e, (g) => l.createElement("div", { ref: U([d, m.listInnerRef]), "cmdk-list-sizer": "" }, g))); }), Qe = l.forwardRef((e, n) => { let { open: r, onOpenChange: v, overlayClassName: u, contentClassName: i, container: d, ...m } = e; return l.createElement(Ce, { open: r, onOpenChange: v }, l.createElement(Ae, { container: d }, l.createElement(Ie, { "cmdk-overlay": "", className: u }), l.createElement(Le, { "aria-label": e.label, "cmdk-dialog": "", className: i }, l.createElement(ke, { ref: n, ...m })))); }), Ze = l.forwardRef((e, n) => $((r) => r.filtered.count === 0) ? l.createElement(C.div, { ref: n, ...e, "cmdk-empty": "", role: "presentation" }) : null), et = l.forwardRef((e, n) => { let { progress: r, children: v, label: u = "Loading...", ...i } = e; return l.createElement(C.div, { ref: n, ...i, "cmdk-loading": "", role: "progressbar", "aria-valuenow": r, "aria-valuemin": 0, "aria-valuemax": 100, "aria-label": u }, B(e, (d) => l.createElement("div", { "aria-hidden": !0 }, d))); }), ct = Object.assign(ke, { List: Xe, Item: We, Input: Je, Group: ze, Separator: Ye, Dialog: Qe, Empty: Ze, Loading: et }); function tt(e, n) { let r = e.nextElementSibling; for (; r; ) { if (r.matches(n)) return r; r = r.nextElementSibling; } } function rt(e, n) { let r = e.previousElementSibling; for (; r; ) { if (r.matches(n)) return r; r = r.previousElementSibling; } } function Oe(e) { let n = l.useRef(e); return D(() => { n.current = e; }), n; } var D = typeof window > "u" ? l.useEffect : l.useLayoutEffect; function V(e) { let n = l.useRef(); return n.current === void 0 && (n.current = e()), n; } function U(e) { return (n) => { e.forEach((r) => { typeof r == "function" ? r(n) : r != null && (r.current = n); }); }; } function $(e) { let n = ue(), r = () => e(n.snapshot()); return Be.useSyncExternalStore(n.subscribe, r, r); } function Re(e, n, r, v = []) { let u = l.useRef(), i = j(); return D(() => { var d; let m = (() => { var p; for (let c of r) { if (typeof c == "string") return c.trim(); if (typeof c == "object" && "current" in c) return c.current ? (p = c.current.textContent) == null ? void 0 : p.trim() : u.current; } })(), g = v.map((p) => p.trim()); i.value(e, m, g), (d = n.current) == null || d.setAttribute(L, m), u.current = m; }), u; } var nt = () => { let [e, n] = l.useState(), r = V(() => /* @__PURE__ */ new Map()); return D(() => { r.current.forEach((v) => v()), r.current = /* @__PURE__ */ new Map(); }, [e]), (v, u) => { r.current.set(v, u), n({}); }; }; function lt(e) { let n = e.type; return typeof n == "function" ? n(e.props) : "render" in n ? n.render(e.props) : e; } function B({ asChild: e, children: n }, r) { return e && l.isValidElement(n) ? l.cloneElement(lt(n), { ref: n.ref }, r(n.props.children)) : r(n); } var ut = { position: "absolute", width: "1px", height: "1px", padding: "0", margin: "-1px", overflow: "hidden", clip: "rect(0, 0, 0, 0)", whiteSpace: "nowrap", borderWidth: "0" }; export { ct as V };