@konstructio/ui
Version:
A set of reusable and customizable React components built for konstruct.io
433 lines (432 loc) • 19.6 kB
JavaScript
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
};