UNPKG

oui-kit

Version:

🎯 *UI toolkit with a French touch* 🇫🇷

1,656 lines • 204 kB
import * as e from "vue"; import { Fragment as t, Teleport as n, Transition as r, TransitionGroup as i, computed as a, createApp as o, createBlock as s, createCommentVNode as c, createElementBlock as l, createElementVNode as u, createSlots as d, createTextVNode as f, createVNode as p, defineAsyncComponent as m, defineComponent as h, guardReactiveProps as g, inject as _, isRef as v, mergeModels as y, mergeProps as b, nextTick as x, normalizeClass as S, normalizeProps as C, normalizeStyle as w, onBeforeUnmount as T, onMounted as E, onUnmounted as D, openBlock as O, reactive as k, ref as A, renderList as j, renderSlot as M, resolveComponent as N, resolveDynamicComponent as ee, shallowRef as te, toDisplayString as P, toRefs as F, unref as I, useAttrs as ne, useModel as L, useSlots as re, vModelCheckbox as ie, vModelDynamic as ae, vModelSelect as oe, vModelText as se, vShow as ce, watch as R, withCtx as z, withDirectives as B, withKeys as V, withModifiers as H } from "vue"; import { LogLevelAll as le, Logger as U, LoggerContext as ue, LoggerMemoryHandler as de, Uint8ArrayToHexDump as fe, arrayEmptyInPlace as pe, arrayRemoveElement as me, arraySetArrayInPlace as he, arraySum as ge, browserSelectColorByName as _e, createArray as ve, createPromise as ye, dayDiff as be, dayFromDate as W, dayFromString as xe, dayFromToday as Se, dayMonthOffset as Ce, dayMonthStart as we, dayOffset as G, dayToDate as Te, dayToString as Ee, dayYearOffset as De, dayYearStart as Oe, debounce as ke, formatMilliseconds as Ae, getTimestamp as je, isArray as Me, isNumber as Ne, isPrimitive as Pe, isRecord as Fe, isString as Ie, last as Le, logMessageFromCompact as Re, parseOrderby as ze, promisify as Be, uname as Ve, useDispose as He, uuid as Ue } from "zeed"; import { onKeyStroke as We, useDark as Ge, useDropZone as Ke, useElementBounding as qe, useElementHover as Je, useEventListener as K, useFileDialog as Ye, useFocusWithin as Xe, useLocalStorage as Ze, useResizeObserver as Qe, useScrollLock as $e, useTextareaAutosize as et, useToggle as tt, useWindowSize as nt } from "@vueuse/core"; //#region \0rolldown/runtime.js var rt = Object.defineProperty, it = Object.getOwnPropertyDescriptor, at = Object.getOwnPropertyNames, ot = Object.prototype.hasOwnProperty, st = (e, t) => { let n = {}; for (var r in e) rt(n, r, { get: e[r], enumerable: !0 }); return t || rt(n, Symbol.toStringTag, { value: "Module" }), n; }, ct = (e, t, n, r) => { if (t && typeof t == "object" || typeof t == "function") for (var i = at(t), a = 0, o = i.length, s; a < o; a++) s = i[a], !ot.call(e, s) && s !== n && rt(e, s, { get: ((e) => t[e]).bind(null, s), enumerable: !(r = it(t, s)) || r.enumerable }); return e; }, lt = (e, t, n) => (ct(e, t, "default"), n && ct(n, t, "default")); //#endregion //#region lib/basic/css.ts function ut(e, t) { if (typeof window < "u" && window.getComputedStyle !== void 0) { let n = document.documentElement; return getComputedStyle(n).getPropertyValue(e).trim() || t; } return t; } //#endregion //#region lib/basic/directives.ts var dt = U("directives"), ft = { mounted: (e, t, ...n) => { if (t instanceof A) throw Error("v-action-toggle requires ref as argument"); e.addEventListener("contextmenu", (e) => { e.preventDefault(), t.value = !t.value; }), e.addEventListener("click", (e) => { t.value = !t.value; }); } }, pt = { mounted: (e, t) => { if (t instanceof A) throw Error("v-action-ture requires ref as argument"); e.addEventListener("contextmenu", (e) => { e.preventDefault(), t.value = !0; }), e.addEventListener("click", (e) => { t.value = !0; }); } }, mt = { mounted: (e, t) => { dt.warn("v-no-selection, use with care! causes issues on draggable!"), e.draggable || e.addEventListener("pointermove", (e) => e.preventDefault()); } }, ht = { mounted: (e, t) => { dt("focus", e), setTimeout(() => e.focus({ preventScroll: !0 }), 50); } }; //#endregion //#region lib/basic/formatters.ts function gt(e, t, n = "") { try { try { return new Intl.NumberFormat(void 0, { style: "currency", currency: t }).format(e); } catch {} return `${t} ${e.toFixed(2)}`; } catch { return n; } } function _t(e, t = "") { try { try { return new Intl.NumberFormat(void 0, { style: "percent" }).format(e); } catch {} return `${(e * 100).toFixed(0)} %`; } catch { return t; } } //#endregion //#region lib/basic/i18n.ts function vt(e, ...t) { return _("t", (e) => String(e))(e, ...t); } function q(e, t, ...n) { let r = _("t", () => String(e))(t, ...n); return r === t ? e : r; } //#endregion //#region lib/basic/lazy-data.ts var yt = U("lazy-data"), bt = /* @__PURE__ */ function(e) { return e[e.Loading = 1] = "Loading", e[e.Loaded = 2] = "Loaded", e[e.Error = 3] = "Error", e; }(bt || {}); function xt(e) { let { chunkSize: t = 10, margin: n = 5, onFetch: r, size: i = 0 } = e, a = 0, o = 0, s = e.data ?? k([]), c = {}, l = 0, u = 0; function d() { a++, pe(s); let e = ve(o); s.push(...e), c = {}; } function f(e) { o = e, d(); } i > 0 && f(i); function p(e, i) { l = e, u = i; let d = e + i, f = Math.max(0, e - n), p = Math.min(o, d + n), m = Math.floor(f / t), h = Math.floor(p / t), g = []; function _() { if (g.length === 0) return; let e = [...g]; g = []; let n = e[0] * t, i = (e.at(-1) - e[0] + 1) * t, o = a; r(n, i).then((t) => { if (yt("Loaded", n, i, t), a === o) { e.forEach((e) => c[e] = bt.Loaded); for (let e = 0; e < i; e++) s[n + e] = t[e]; } }).catch((t) => { yt.error("Failed to load chunks", e, t); }); } for (let e = m; e <= h; e++) c[e] == null ? (c[e] = bt.Loading, g.push(e)) : _(); _(); } function m() { d(), p(l, u); } return { setSize: f, getSize: () => o, setVisible: p, reload: m, data: s }; } //#endregion //#region lib/basic/lib.ts function St(e) { return `${e}px`; } function Ct(e) { if (typeof e == "number") return e === 0 ? "0" : `${e * .0625}rem`; if (typeof e == "string") { let t = e.match(/^(-?\d+(?:\.\d+)?)px$/); if (t) { let e = Number.parseFloat(t[1]); return e === 0 ? "0" : `${e * .0625}rem`; } return e; } return String(e); } //#endregion //#region lib/basic/log.ts function wt(e) { let t = k([]), n = ue(); n.setHandlers([de({ level: le, filter: "*", messages: t })]); let r = n(e); return r.messages = t, r; } //#endregion //#region \0plugin-vue:export-helper var Tt = (e, t) => { let n = e.__vccOpts || e; for (let [e, r] of t) n[e] = r; return n; }, Et = {}, Dt = { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }; function Ot(e, t) { return O(), l("svg", Dt, [...t[0] ||= [u("line", { x1: "18", y1: "6", x2: "6", y2: "18" }, null, -1), u("line", { x1: "6", y1: "6", x2: "18", y2: "18" }, null, -1)]]); } var kt = /* @__PURE__ */ Tt(Et, [["render", Ot]]), At = { class: "oui-alert-content" }, jt = { key: 0, class: "oui-alert-title" }, Mt = { class: "oui-alert-body" }, Nt = ["aria-label", "tooltip"], Pt = /* @__PURE__ */ h({ __name: "oui-alert", props: /* @__PURE__ */ y({ mode: {}, title: {}, dismissible: { type: Boolean }, tooltipClose: {} }, { modelValue: { type: Boolean, default: !0 }, modelModifiers: {} }), emits: /* @__PURE__ */ y(["close"], ["update:modelValue"]), setup(e, { emit: t }) { let n = t, i = L(e, "modelValue"); function a() { i.value = !1, n("close"); } return (t, n) => (O(), s(r, { name: "oui-alert" }, { default: z(() => [i.value ? (O(), l("div", { key: 0, class: S(["oui-alert", `_${e.mode ?? "info"}`]), role: "alert" }, [u("div", At, [ e.title ? (O(), l("div", jt, P(e.title), 1)) : c("", !0), u("div", Mt, [M(t.$slots, "default")]), e.dismissible ? (O(), l("button", { key: 1, class: "oui-alert-close", "aria-label": e.tooltipClose ?? I(q)("Close", "oui.alert.close"), tooltip: e.tooltipClose ?? I(q)("Close", "oui.alert.close"), onClick: a }, [p(kt)], 8, Nt)) : c("", !0) ])], 2)) : c("", !0)]), _: 3 })); } }), Ft = [ "href", "target", "aria-label", "aria-disabled", "tabindex" ], It = [ "tabindex", "disabled", "aria-label", "aria-disabled" ], J = /* @__PURE__ */ h({ __name: "oui-button", props: { title: {}, mode: { default: "neutral" }, size: { default: "normal" }, dropdown: { type: Boolean, default: !1 }, outline: { type: Boolean, default: !1 }, href: {}, target: { default: "_blank" }, disabled: { type: Boolean, default: !1 }, focusable: { type: Boolean, default: !0 } }, setup(e) { let t = e, n = re(), r = a(() => { let e = n.default?.({}); return !e || e.length === 0 ? "" : e.map((e) => typeof e.children == "string" ? e.children : "").join(""); }), i = a(() => (t.title || r.value || "").trim()), o = a(() => [ "oui-button", t.mode && `_button_mode_${t.mode}`, t.size && `_button_size_${t.size}`, t.dropdown && "_button_dropdown" ].filter(Boolean)); return (t, n) => e.href && !e.disabled ? (O(), l("a", { key: 0, href: e.href, target: e.target, class: S(o.value), role: "button", "aria-label": i.value, "aria-disabled": e.disabled, tabindex: e.focusable ? 0 : -1 }, [M(t.$slots, "default", {}, () => [f(P(e.title), 1)])], 10, Ft)) : (O(), l("button", { key: 1, tabindex: e.focusable ? 0 : -1, disabled: e.disabled ? !0 : void 0, class: S(o.value), "aria-label": i.value, "aria-disabled": e.disabled }, [M(t.$slots, "default", {}, () => [f(P(e.title), 1)])], 10, It)); } }), Lt = { class: "oui-card-header-content" }, Rt = { key: 1, class: "oui-card-body" }, zt = { key: 2, class: "oui-card-footer" }, Bt = /* @__PURE__ */ h({ __name: "oui-card", props: { title: {}, collapsible: { type: Boolean }, collapsed: { type: Boolean }, hideArrow: { type: Boolean }, name: {} }, setup(e) { let t = e, n = t.name ? Ze(`oui.card.collapsed.${t.name}`, t.collapsed ?? !1) : A(t.collapsed ?? !1); function r() { t.collapsible && (n.value = !n.value); } return (t, i) => (O(), l("div", { class: S(["oui-card", { "is-collapsible": e.collapsible, "is-collapsed": I(n) }]) }, [ t.$slots.header || t.$slots.title || e.title ? (O(), l("div", { key: 0, class: S(["oui-card-header", { "is-clickable": e.collapsible }]), onClick: r }, [M(t.$slots, "header", {}, () => [u("div", Lt, [e.collapsible && !e.hideArrow ? (O(), l("span", { key: 0, class: S(["oui-card-arrow", { "is-collapsed": I(n) }]) }, " â–¼ ", 2)) : c("", !0), M(t.$slots, "title", {}, () => [f(P(e.title), 1)])])])], 2)) : c("", !0), I(n) ? c("", !0) : (O(), l("div", Rt, [M(t.$slots, "default")])), t.$slots.footer && !I(n) ? (O(), l("div", zt, [M(t.$slots, "footer")])) : c("", !0) ], 2)); } }), Vt = /* @__PURE__ */ h({ inheritAttrs: !1, __name: "oui-checkbox", props: /* @__PURE__ */ y({ title: {}, switch: { type: Boolean, default: !1 }, intermediate: { type: Boolean, default: !1 }, description: {} }, { modelValue: { required: !0 }, modelModifiers: {} }), emits: ["update:modelValue"], setup(e) { let n = e, r = L(e, "modelValue"), i = a({ get() { return !!r.value; }, set(e) { r.value = e; } }), o = a(() => { let e = [n.switch ? "oui-switch" : "oui-checkbox"]; return r.value ?? e.push("_checkbox_intermediate"), e; }); return (n, r) => e.title || n.$slots.default ? (O(), l(t, { key: 0 }, [u("label", { class: S(["oui-form-item-checkbox", { _disabled: n.$attrs.disabled }]) }, [ B(u("input", b({ "onUpdate:modelValue": r[0] ||= (e) => i.value = e, type: "checkbox", class: o.value }, n.$attrs), null, 16), [[ie, i.value]]), r[2] ||= f(" " + P(" ") + " ", -1), M(n.$slots, "default", {}, () => [f(P(e.title), 1)]) ], 2), n.$slots.description || e.description ? (O(), l("div", { key: 0, class: S(["oui-form-item-description", { _disabled: n.$attrs.disabled }]) }, [M(n.$slots, "description", {}, () => [f(P(e.description), 1)])], 2)) : c("", !0)], 64)) : B((O(), l("input", b({ key: 1, "onUpdate:modelValue": r[1] ||= (e) => i.value = e, type: "checkbox", class: o.value }, n.$attrs), null, 16)), [[ie, i.value]]); } }), Ht = Math.min, Y = Math.max, Ut = Math.round, Wt = Math.floor, Gt = (e) => ({ x: e, y: e }), Kt = { left: "right", right: "left", bottom: "top", top: "bottom" }; function qt(e, t, n) { return Y(e, Ht(t, n)); } function Jt(e, t) { return typeof e == "function" ? e(t) : e; } function Yt(e) { return e.split("-")[0]; } function Xt(e) { return e.split("-")[1]; } function Zt(e) { return e === "x" ? "y" : "x"; } function Qt(e) { return e === "y" ? "height" : "width"; } function $t(e) { let t = e[0]; return t === "t" || t === "b" ? "y" : "x"; } function en(e) { return Zt($t(e)); } function tn(e, t, n) { n === void 0 && (n = !1); let r = Xt(e), i = en(e), a = Qt(i), o = i === "x" ? r === (n ? "end" : "start") ? "right" : "left" : r === "start" ? "bottom" : "top"; return t.reference[a] > t.floating[a] && (o = dn(o)), [o, dn(o)]; } function nn(e) { let t = dn(e); return [ rn(e), t, rn(t) ]; } function rn(e) { return e.includes("start") ? e.replace("start", "end") : e.replace("end", "start"); } var an = ["left", "right"], on = ["right", "left"], sn = ["top", "bottom"], cn = ["bottom", "top"]; function ln(e, t, n) { switch (e) { case "top": case "bottom": return n ? t ? on : an : t ? an : on; case "left": case "right": return t ? sn : cn; default: return []; } } function un(e, t, n, r) { let i = Xt(e), a = ln(Yt(e), n === "start", r); return i && (a = a.map((e) => e + "-" + i), t && (a = a.concat(a.map(rn)))), a; } function dn(e) { let t = Yt(e); return Kt[t] + e.slice(t.length); } function fn(e) { return { top: 0, right: 0, bottom: 0, left: 0, ...e }; } function pn(e) { return typeof e == "number" ? { top: e, right: e, bottom: e, left: e } : fn(e); } function mn(e) { let { x: t, y: n, width: r, height: i } = e; return { width: r, height: i, top: n, left: t, right: t + r, bottom: n + i, x: t, y: n }; } //#endregion //#region node_modules/.pnpm/@floating-ui+core@1.7.5/node_modules/@floating-ui/core/dist/floating-ui.core.mjs function hn(e, t, n) { let { reference: r, floating: i } = e, a = $t(t), o = en(t), s = Qt(o), c = Yt(t), l = a === "y", u = r.x + r.width / 2 - i.width / 2, d = r.y + r.height / 2 - i.height / 2, f = r[s] / 2 - i[s] / 2, p; switch (c) { case "top": p = { x: u, y: r.y - i.height }; break; case "bottom": p = { x: u, y: r.y + r.height }; break; case "right": p = { x: r.x + r.width, y: d }; break; case "left": p = { x: r.x - i.width, y: d }; break; default: p = { x: r.x, y: r.y }; } switch (Xt(t)) { case "start": p[o] -= f * (n && l ? -1 : 1); break; case "end": p[o] += f * (n && l ? -1 : 1); break; } return p; } async function gn(e, t) { t === void 0 && (t = {}); let { x: n, y: r, platform: i, rects: a, elements: o, strategy: s } = e, { boundary: c = "clippingAncestors", rootBoundary: l = "viewport", elementContext: u = "floating", altBoundary: d = !1, padding: f = 0 } = Jt(t, e), p = pn(f), m = o[d ? u === "floating" ? "reference" : "floating" : u], h = mn(await i.getClippingRect({ element: await (i.isElement == null ? void 0 : i.isElement(m)) ?? !0 ? m : m.contextElement || await (i.getDocumentElement == null ? void 0 : i.getDocumentElement(o.floating)), boundary: c, rootBoundary: l, strategy: s })), g = u === "floating" ? { x: n, y: r, width: a.floating.width, height: a.floating.height } : a.reference, _ = await (i.getOffsetParent == null ? void 0 : i.getOffsetParent(o.floating)), v = await (i.isElement == null ? void 0 : i.isElement(_)) && await (i.getScale == null ? void 0 : i.getScale(_)) || { x: 1, y: 1 }, y = mn(i.convertOffsetParentRelativeRectToViewportRelativeRect ? await i.convertOffsetParentRelativeRectToViewportRelativeRect({ elements: o, rect: g, offsetParent: _, strategy: s }) : g); return { top: (h.top - y.top + p.top) / v.y, bottom: (y.bottom - h.bottom + p.bottom) / v.y, left: (h.left - y.left + p.left) / v.x, right: (y.right - h.right + p.right) / v.x }; } var _n = 50, vn = async (e, t, n) => { let { placement: r = "bottom", strategy: i = "absolute", middleware: a = [], platform: o } = n, s = o.detectOverflow ? o : { ...o, detectOverflow: gn }, c = await (o.isRTL == null ? void 0 : o.isRTL(t)), l = await o.getElementRects({ reference: e, floating: t, strategy: i }), { x: u, y: d } = hn(l, r, c), f = r, p = 0, m = {}; for (let n = 0; n < a.length; n++) { let h = a[n]; if (!h) continue; let { name: g, fn: _ } = h, { x: v, y, data: b, reset: x } = await _({ x: u, y: d, initialPlacement: r, placement: f, strategy: i, middlewareData: m, rects: l, platform: s, elements: { reference: e, floating: t } }); u = v ?? u, d = y ?? d, m[g] = { ...m[g], ...b }, x && p < _n && (p++, typeof x == "object" && (x.placement && (f = x.placement), x.rects && (l = x.rects === !0 ? await o.getElementRects({ reference: e, floating: t, strategy: i }) : x.rects), {x: u, y: d} = hn(l, f, c)), n = -1); } return { x: u, y: d, placement: f, strategy: i, middlewareData: m }; }, yn = (e) => ({ name: "arrow", options: e, async fn(t) { let { x: n, y: r, placement: i, rects: a, platform: o, elements: s, middlewareData: c } = t, { element: l, padding: u = 0 } = Jt(e, t) || {}; if (l == null) return {}; let d = pn(u), f = { x: n, y: r }, p = en(i), m = Qt(p), h = await o.getDimensions(l), g = p === "y", _ = g ? "top" : "left", v = g ? "bottom" : "right", y = g ? "clientHeight" : "clientWidth", b = a.reference[m] + a.reference[p] - f[p] - a.floating[m], x = f[p] - a.reference[p], S = await (o.getOffsetParent == null ? void 0 : o.getOffsetParent(l)), C = S ? S[y] : 0; (!C || !await (o.isElement == null ? void 0 : o.isElement(S))) && (C = s.floating[y] || a.floating[m]); let w = b / 2 - x / 2, T = C / 2 - h[m] / 2 - 1, E = Ht(d[_], T), D = Ht(d[v], T), O = E, k = C - h[m] - D, A = C / 2 - h[m] / 2 + w, j = qt(O, A, k), M = !c.arrow && Xt(i) != null && A !== j && a.reference[m] / 2 - (A < O ? E : D) - h[m] / 2 < 0, N = M ? A < O ? A - O : A - k : 0; return { [p]: f[p] + N, data: { [p]: j, centerOffset: A - j - N, ...M && { alignmentOffset: N } }, reset: M }; } }), bn = function(e) { return e === void 0 && (e = {}), { name: "flip", options: e, async fn(t) { var n; let { placement: r, middlewareData: i, rects: a, initialPlacement: o, platform: s, elements: c } = t, { mainAxis: l = !0, crossAxis: u = !0, fallbackPlacements: d, fallbackStrategy: f = "bestFit", fallbackAxisSideDirection: p = "none", flipAlignment: m = !0, ...h } = Jt(e, t); if ((n = i.arrow) != null && n.alignmentOffset) return {}; let g = Yt(r), _ = $t(o), v = Yt(o) === o, y = await (s.isRTL == null ? void 0 : s.isRTL(c.floating)), b = d || (v || !m ? [dn(o)] : nn(o)), x = p !== "none"; !d && x && b.push(...un(o, m, p, y)); let S = [o, ...b], C = await s.detectOverflow(t, h), w = [], T = i.flip?.overflows || []; if (l && w.push(C[g]), u) { let e = tn(r, a, y); w.push(C[e[0]], C[e[1]]); } if (T = [...T, { placement: r, overflows: w }], !w.every((e) => e <= 0)) { let e = (i.flip?.index || 0) + 1, t = S[e]; if (t && (!(u === "alignment" && _ !== $t(t)) || T.every((e) => $t(e.placement) === _ ? e.overflows[0] > 0 : !0))) return { data: { index: e, overflows: T }, reset: { placement: t } }; let n = T.filter((e) => e.overflows[0] <= 0).sort((e, t) => e.overflows[1] - t.overflows[1])[0]?.placement; if (!n) switch (f) { case "bestFit": { let e = T.filter((e) => { if (x) { let t = $t(e.placement); return t === _ || t === "y"; } return !0; }).map((e) => [e.placement, e.overflows.filter((e) => e > 0).reduce((e, t) => e + t, 0)]).sort((e, t) => e[1] - t[1])[0]?.[0]; e && (n = e); break; } case "initialPlacement": n = o; break; } if (r !== n) return { reset: { placement: n } }; } return {}; } }; }, xn = /* @__PURE__ */ new Set(["left", "top"]); async function Sn(e, t) { let { placement: n, platform: r, elements: i } = e, a = await (r.isRTL == null ? void 0 : r.isRTL(i.floating)), o = Yt(n), s = Xt(n), c = $t(n) === "y", l = xn.has(o) ? -1 : 1, u = a && c ? -1 : 1, d = Jt(t, e), { mainAxis: f, crossAxis: p, alignmentAxis: m } = typeof d == "number" ? { mainAxis: d, crossAxis: 0, alignmentAxis: null } : { mainAxis: d.mainAxis || 0, crossAxis: d.crossAxis || 0, alignmentAxis: d.alignmentAxis }; return s && typeof m == "number" && (p = s === "end" ? m * -1 : m), c ? { x: p * u, y: f * l } : { x: f * l, y: p * u }; } var Cn = function(e) { return e === void 0 && (e = 0), { name: "offset", options: e, async fn(t) { var n; let { x: r, y: i, placement: a, middlewareData: o } = t, s = await Sn(t, e); return a === o.offset?.placement && (n = o.arrow) != null && n.alignmentOffset ? {} : { x: r + s.x, y: i + s.y, data: { ...s, placement: a } }; } }; }, wn = function(e) { return e === void 0 && (e = {}), { name: "shift", options: e, async fn(t) { let { x: n, y: r, placement: i, platform: a } = t, { mainAxis: o = !0, crossAxis: s = !1, limiter: c = { fn: (e) => { let { x: t, y: n } = e; return { x: t, y: n }; } }, ...l } = Jt(e, t), u = { x: n, y: r }, d = await a.detectOverflow(t, l), f = $t(Yt(i)), p = Zt(f), m = u[p], h = u[f]; if (o) { let e = p === "y" ? "top" : "left", t = p === "y" ? "bottom" : "right", n = m + d[e], r = m - d[t]; m = qt(n, m, r); } if (s) { let e = f === "y" ? "top" : "left", t = f === "y" ? "bottom" : "right", n = h + d[e], r = h - d[t]; h = qt(n, h, r); } let g = c.fn({ ...t, [p]: m, [f]: h }); return { ...g, data: { x: g.x - n, y: g.y - r, enabled: { [p]: o, [f]: s } } }; } }; }, Tn = function(e) { return e === void 0 && (e = {}), { name: "size", options: e, async fn(t) { var n, r; let { placement: i, rects: a, platform: o, elements: s } = t, { apply: c = () => {}, ...l } = Jt(e, t), u = await o.detectOverflow(t, l), d = Yt(i), f = Xt(i), p = $t(i) === "y", { width: m, height: h } = a.floating, g, _; d === "top" || d === "bottom" ? (g = d, _ = f === (await (o.isRTL == null ? void 0 : o.isRTL(s.floating)) ? "start" : "end") ? "left" : "right") : (_ = d, g = f === "end" ? "top" : "bottom"); let v = h - u.top - u.bottom, y = m - u.left - u.right, b = Ht(h - u[g], v), x = Ht(m - u[_], y), S = !t.middlewareData.shift, C = b, w = x; if ((n = t.middlewareData.shift) != null && n.enabled.x && (w = y), (r = t.middlewareData.shift) != null && r.enabled.y && (C = v), S && !f) { let e = Y(u.left, 0), t = Y(u.right, 0), n = Y(u.top, 0), r = Y(u.bottom, 0); p ? w = m - 2 * (e !== 0 || t !== 0 ? e + t : Y(u.left, u.right)) : C = h - 2 * (n !== 0 || r !== 0 ? n + r : Y(u.top, u.bottom)); } await c({ ...t, availableWidth: w, availableHeight: C }); let T = await o.getDimensions(s.floating); return m !== T.width || h !== T.height ? { reset: { rects: !0 } } : {}; } }; }; //#endregion //#region node_modules/.pnpm/@floating-ui+utils@0.2.11/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs function En() { return typeof window < "u"; } function Dn(e) { return kn(e) ? (e.nodeName || "").toLowerCase() : "#document"; } function X(e) { var t; return (e == null || (t = e.ownerDocument) == null ? void 0 : t.defaultView) || window; } function On(e) { return ((kn(e) ? e.ownerDocument : e.document) || window.document)?.documentElement; } function kn(e) { return En() ? e instanceof Node || e instanceof X(e).Node : !1; } function An(e) { return En() ? e instanceof Element || e instanceof X(e).Element : !1; } function jn(e) { return En() ? e instanceof HTMLElement || e instanceof X(e).HTMLElement : !1; } function Mn(e) { return !En() || typeof ShadowRoot > "u" ? !1 : e instanceof ShadowRoot || e instanceof X(e).ShadowRoot; } function Nn(e) { let { overflow: t, overflowX: n, overflowY: r, display: i } = Wn(e); return /auto|scroll|overlay|hidden|clip/.test(t + r + n) && i !== "inline" && i !== "contents"; } function Pn(e) { return /^(table|td|th)$/.test(Dn(e)); } function Fn(e) { try { if (e.matches(":popover-open")) return !0; } catch {} try { return e.matches(":modal"); } catch { return !1; } } var In = /transform|translate|scale|rotate|perspective|filter/, Ln = /paint|layout|strict|content/, Rn = (e) => !!e && e !== "none", zn; function Bn(e) { let t = An(e) ? Wn(e) : e; return Rn(t.transform) || Rn(t.translate) || Rn(t.scale) || Rn(t.rotate) || Rn(t.perspective) || !Hn() && (Rn(t.backdropFilter) || Rn(t.filter)) || In.test(t.willChange || "") || Ln.test(t.contain || ""); } function Vn(e) { let t = Kn(e); for (; jn(t) && !Un(t);) { if (Bn(t)) return t; if (Fn(t)) return null; t = Kn(t); } return null; } function Hn() { return zn ??= typeof CSS < "u" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none"), zn; } function Un(e) { return /^(html|body|#document)$/.test(Dn(e)); } function Wn(e) { return X(e).getComputedStyle(e); } function Gn(e) { return An(e) ? { scrollLeft: e.scrollLeft, scrollTop: e.scrollTop } : { scrollLeft: e.scrollX, scrollTop: e.scrollY }; } function Kn(e) { if (Dn(e) === "html") return e; let t = e.assignedSlot || e.parentNode || Mn(e) && e.host || On(e); return Mn(t) ? t.host : t; } function qn(e) { let t = Kn(e); return Un(t) ? e.ownerDocument ? e.ownerDocument.body : e.body : jn(t) && Nn(t) ? t : qn(t); } function Jn(e, t, n) { t === void 0 && (t = []), n === void 0 && (n = !0); let r = qn(e), i = r === e.ownerDocument?.body, a = X(r); if (i) { let e = Yn(a); return t.concat(a, a.visualViewport || [], Nn(r) ? r : [], e && n ? Jn(e) : []); } else return t.concat(r, Jn(r, [], n)); } function Yn(e) { return e.parent && Object.getPrototypeOf(e.parent) ? e.frameElement : null; } //#endregion //#region node_modules/.pnpm/@floating-ui+dom@1.7.6/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs function Xn(e) { let t = Wn(e), n = parseFloat(t.width) || 0, r = parseFloat(t.height) || 0, i = jn(e), a = i ? e.offsetWidth : n, o = i ? e.offsetHeight : r, s = Ut(n) !== a || Ut(r) !== o; return s && (n = a, r = o), { width: n, height: r, $: s }; } function Zn(e) { return An(e) ? e : e.contextElement; } function Qn(e) { let t = Zn(e); if (!jn(t)) return Gt(1); let n = t.getBoundingClientRect(), { width: r, height: i, $: a } = Xn(t), o = (a ? Ut(n.width) : n.width) / r, s = (a ? Ut(n.height) : n.height) / i; return (!o || !Number.isFinite(o)) && (o = 1), (!s || !Number.isFinite(s)) && (s = 1), { x: o, y: s }; } var $n = /* @__PURE__ */ Gt(0); function er(e) { let t = X(e); return !Hn() || !t.visualViewport ? $n : { x: t.visualViewport.offsetLeft, y: t.visualViewport.offsetTop }; } function tr(e, t, n) { return t === void 0 && (t = !1), !n || t && n !== X(e) ? !1 : t; } function nr(e, t, n, r) { t === void 0 && (t = !1), n === void 0 && (n = !1); let i = e.getBoundingClientRect(), a = Zn(e), o = Gt(1); t && (r ? An(r) && (o = Qn(r)) : o = Qn(e)); let s = tr(a, n, r) ? er(a) : Gt(0), c = (i.left + s.x) / o.x, l = (i.top + s.y) / o.y, u = i.width / o.x, d = i.height / o.y; if (a) { let e = X(a), t = r && An(r) ? X(r) : r, n = e, i = Yn(n); for (; i && r && t !== n;) { let e = Qn(i), t = i.getBoundingClientRect(), r = Wn(i), a = t.left + (i.clientLeft + parseFloat(r.paddingLeft)) * e.x, o = t.top + (i.clientTop + parseFloat(r.paddingTop)) * e.y; c *= e.x, l *= e.y, u *= e.x, d *= e.y, c += a, l += o, n = X(i), i = Yn(n); } } return mn({ width: u, height: d, x: c, y: l }); } function rr(e, t) { let n = Gn(e).scrollLeft; return t ? t.left + n : nr(On(e)).left + n; } function ir(e, t) { let n = e.getBoundingClientRect(); return { x: n.left + t.scrollLeft - rr(e, n), y: n.top + t.scrollTop }; } function ar(e) { let { elements: t, rect: n, offsetParent: r, strategy: i } = e, a = i === "fixed", o = On(r), s = t ? Fn(t.floating) : !1; if (r === o || s && a) return n; let c = { scrollLeft: 0, scrollTop: 0 }, l = Gt(1), u = Gt(0), d = jn(r); if ((d || !d && !a) && ((Dn(r) !== "body" || Nn(o)) && (c = Gn(r)), d)) { let e = nr(r); l = Qn(r), u.x = e.x + r.clientLeft, u.y = e.y + r.clientTop; } let f = o && !d && !a ? ir(o, c) : Gt(0); return { width: n.width * l.x, height: n.height * l.y, x: n.x * l.x - c.scrollLeft * l.x + u.x + f.x, y: n.y * l.y - c.scrollTop * l.y + u.y + f.y }; } function or(e) { return Array.from(e.getClientRects()); } function sr(e) { let t = On(e), n = Gn(e), r = e.ownerDocument.body, i = Y(t.scrollWidth, t.clientWidth, r.scrollWidth, r.clientWidth), a = Y(t.scrollHeight, t.clientHeight, r.scrollHeight, r.clientHeight), o = -n.scrollLeft + rr(e), s = -n.scrollTop; return Wn(r).direction === "rtl" && (o += Y(t.clientWidth, r.clientWidth) - i), { width: i, height: a, x: o, y: s }; } var cr = 25; function lr(e, t) { let n = X(e), r = On(e), i = n.visualViewport, a = r.clientWidth, o = r.clientHeight, s = 0, c = 0; if (i) { a = i.width, o = i.height; let e = Hn(); (!e || e && t === "fixed") && (s = i.offsetLeft, c = i.offsetTop); } let l = rr(r); if (l <= 0) { let e = r.ownerDocument, t = e.body, n = getComputedStyle(t), i = e.compatMode === "CSS1Compat" && parseFloat(n.marginLeft) + parseFloat(n.marginRight) || 0, o = Math.abs(r.clientWidth - t.clientWidth - i); o <= cr && (a -= o); } else l <= cr && (a += l); return { width: a, height: o, x: s, y: c }; } function ur(e, t) { let n = nr(e, !0, t === "fixed"), r = n.top + e.clientTop, i = n.left + e.clientLeft, a = jn(e) ? Qn(e) : Gt(1); return { width: e.clientWidth * a.x, height: e.clientHeight * a.y, x: i * a.x, y: r * a.y }; } function dr(e, t, n) { let r; if (t === "viewport") r = lr(e, n); else if (t === "document") r = sr(On(e)); else if (An(t)) r = ur(t, n); else { let n = er(e); r = { x: t.x - n.x, y: t.y - n.y, width: t.width, height: t.height }; } return mn(r); } function fr(e, t) { let n = Kn(e); return n === t || !An(n) || Un(n) ? !1 : Wn(n).position === "fixed" || fr(n, t); } function pr(e, t) { let n = t.get(e); if (n) return n; let r = Jn(e, [], !1).filter((e) => An(e) && Dn(e) !== "body"), i = null, a = Wn(e).position === "fixed", o = a ? Kn(e) : e; for (; An(o) && !Un(o);) { let t = Wn(o), n = Bn(o); !n && t.position === "fixed" && (i = null), (a ? !n && !i : !n && t.position === "static" && i && (i.position === "absolute" || i.position === "fixed") || Nn(o) && !n && fr(e, o)) ? r = r.filter((e) => e !== o) : i = t, o = Kn(o); } return t.set(e, r), r; } function mr(e) { let { element: t, boundary: n, rootBoundary: r, strategy: i } = e, a = [...n === "clippingAncestors" ? Fn(t) ? [] : pr(t, this._c) : [].concat(n), r], o = dr(t, a[0], i), s = o.top, c = o.right, l = o.bottom, u = o.left; for (let e = 1; e < a.length; e++) { let n = dr(t, a[e], i); s = Y(n.top, s), c = Ht(n.right, c), l = Ht(n.bottom, l), u = Y(n.left, u); } return { width: c - u, height: l - s, x: u, y: s }; } function hr(e) { let { width: t, height: n } = Xn(e); return { width: t, height: n }; } function gr(e, t, n) { let r = jn(t), i = On(t), a = n === "fixed", o = nr(e, !0, a, t), s = { scrollLeft: 0, scrollTop: 0 }, c = Gt(0); function l() { c.x = rr(i); } if (r || !r && !a) if ((Dn(t) !== "body" || Nn(i)) && (s = Gn(t)), r) { let e = nr(t, !0, a, t); c.x = e.x + t.clientLeft, c.y = e.y + t.clientTop; } else i && l(); a && !r && i && l(); let u = i && !r && !a ? ir(i, s) : Gt(0); return { x: o.left + s.scrollLeft - c.x - u.x, y: o.top + s.scrollTop - c.y - u.y, width: o.width, height: o.height }; } function _r(e) { return Wn(e).position === "static"; } function vr(e, t) { if (!jn(e) || Wn(e).position === "fixed") return null; if (t) return t(e); let n = e.offsetParent; return On(e) === n && (n = n.ownerDocument.body), n; } function yr(e, t) { let n = X(e); if (Fn(e)) return n; if (!jn(e)) { let t = Kn(e); for (; t && !Un(t);) { if (An(t) && !_r(t)) return t; t = Kn(t); } return n; } let r = vr(e, t); for (; r && Pn(r) && _r(r);) r = vr(r, t); return r && Un(r) && _r(r) && !Bn(r) ? n : r || Vn(e) || n; } var br = async function(e) { let t = this.getOffsetParent || yr, n = this.getDimensions, r = await n(e.floating); return { reference: gr(e.reference, await t(e.floating), e.strategy), floating: { x: 0, y: 0, width: r.width, height: r.height } }; }; function xr(e) { return Wn(e).direction === "rtl"; } var Sr = { convertOffsetParentRelativeRectToViewportRelativeRect: ar, getDocumentElement: On, getClippingRect: mr, getOffsetParent: yr, getElementRects: br, getClientRects: or, getDimensions: hr, getScale: Qn, isElement: An, isRTL: xr }; function Cr(e, t) { return e.x === t.x && e.y === t.y && e.width === t.width && e.height === t.height; } function wr(e, t) { let n = null, r, i = On(e); function a() { var e; clearTimeout(r), (e = n) == null || e.disconnect(), n = null; } function o(s, c) { s === void 0 && (s = !1), c === void 0 && (c = 1), a(); let l = e.getBoundingClientRect(), { left: u, top: d, width: f, height: p } = l; if (s || t(), !f || !p) return; let m = Wt(d), h = Wt(i.clientWidth - (u + f)), g = Wt(i.clientHeight - (d + p)), _ = Wt(u), v = { rootMargin: -m + "px " + -h + "px " + -g + "px " + -_ + "px", threshold: Y(0, Ht(1, c)) || 1 }, y = !0; function b(t) { let n = t[0].intersectionRatio; if (n !== c) { if (!y) return o(); n ? o(!1, n) : r = setTimeout(() => { o(!1, 1e-7); }, 1e3); } n === 1 && !Cr(l, e.getBoundingClientRect()) && o(), y = !1; } try { n = new IntersectionObserver(b, { ...v, root: i.ownerDocument }); } catch { n = new IntersectionObserver(b, v); } n.observe(e); } return o(!0), a; } function Tr(e, t, n, r) { r === void 0 && (r = {}); let { ancestorScroll: i = !0, ancestorResize: a = !0, elementResize: o = typeof ResizeObserver == "function", layoutShift: s = typeof IntersectionObserver == "function", animationFrame: c = !1 } = r, l = Zn(e), u = i || a ? [...l ? Jn(l) : [], ...t ? Jn(t) : []] : []; u.forEach((e) => { i && e.addEventListener("scroll", n, { passive: !0 }), a && e.addEventListener("resize", n); }); let d = l && s ? wr(l, n) : null, f = -1, p = null; o && (p = new ResizeObserver((e) => { let [r] = e; r && r.target === l && p && t && (p.unobserve(t), cancelAnimationFrame(f), f = requestAnimationFrame(() => { var e; (e = p) == null || e.observe(t); })), n(); }), l && !c && p.observe(l), t && p.observe(t)); let m, h = c ? nr(e) : null; c && g(); function g() { let t = nr(e); h && !Cr(h, t) && n(), h = t, m = requestAnimationFrame(g); } return n(), () => { var e; u.forEach((e) => { i && e.removeEventListener("scroll", n), a && e.removeEventListener("resize", n); }), d?.(), (e = p) == null || e.disconnect(), p = null, c && cancelAnimationFrame(m); }; } var Er = Cn, Dr = wn, Or = bn, kr = Tn, Ar = yn, jr = (e, t, n) => { let r = /* @__PURE__ */ new Map(), i = { platform: Sr, ...n }, a = { ...i.platform, _c: r }; return vn(e, t, { ...i, platform: a }); }, Z = /* @__PURE__ */ st({ Vue: () => e, Vue2: () => void 0, del: () => Fr, install: () => Nr, isVue2: () => !1, isVue3: () => !0, set: () => Pr }); import * as Mr from "vue"; lt(Z, Mr); function Nr() {} function Pr(e, t, n) { return Array.isArray(e) ? (e.length = Math.max(e.length, t), e.splice(t, 1, n), n) : (e[t] = n, n); } function Fr(e, t) { if (Array.isArray(e)) { e.splice(t, 1); return; } delete e[t]; } //#endregion //#region node_modules/.pnpm/@floating-ui+vue@1.1.11_vue@3.5.32_typescript@5.8.2_/node_modules/@floating-ui/vue/dist/floating-ui.vue.mjs function Ir(e) { return typeof e == "object" && !!e && "$el" in e; } function Lr(e) { if (Ir(e)) { let t = e.$el; return kn(t) && Dn(t) === "#comment" ? null : t; } return e; } function Rr(e) { return typeof e == "function" ? e() : (0, Z.unref)(e); } function zr(e) { return { name: "arrow", options: e, fn(t) { let n = Lr(Rr(e.element)); return n == null ? {} : Ar({ element: n, padding: e.padding }).fn(t); } }; } function Br(e) { return typeof window > "u" ? 1 : (e.ownerDocument.defaultView || window).devicePixelRatio || 1; } function Vr(e, t) { let n = Br(e); return Math.round(t * n) / n; } function Hr(e, t, n) { n === void 0 && (n = {}); let r = n.whileElementsMounted, i = (0, Z.computed)(() => Rr(n.open) ?? !0), a = (0, Z.computed)(() => Rr(n.middleware)), o = (0, Z.computed)(() => Rr(n.placement) ?? "bottom"), s = (0, Z.computed)(() => Rr(n.strategy) ?? "absolute"), c = (0, Z.computed)(() => Rr(n.transform) ?? !0), l = (0, Z.computed)(() => Lr(e.value)), u = (0, Z.computed)(() => Lr(t.value)), d = (0, Z.ref)(0), f = (0, Z.ref)(0), p = (0, Z.ref)(s.value), m = (0, Z.ref)(o.value), h = (0, Z.shallowRef)({}), g = (0, Z.ref)(!1), _ = (0, Z.computed)(() => { let e = { position: p.value, left: "0", top: "0" }; if (!u.value) return e; let t = Vr(u.value, d.value), n = Vr(u.value, f.value); return c.value ? { ...e, transform: "translate(" + t + "px, " + n + "px)", ...Br(u.value) >= 1.5 && { willChange: "transform" } } : { position: p.value, left: t + "px", top: n + "px" }; }), v; function y() { if (l.value == null || u.value == null) return; let e = i.value; jr(l.value, u.value, { middleware: a.value, placement: o.value, strategy: s.value }).then((t) => { d.value = t.x, f.value = t.y, p.value = t.strategy, m.value = t.placement, h.value = t.middlewareData, g.value = e !== !1; }); } function b() { typeof v == "function" && (v(), v = void 0); } function x() { if (b(), r === void 0) { y(); return; } if (l.value != null && u.value != null) { v = r(l.value, u.value, y); return; } } function S() { i.value || (g.value = !1); } return (0, Z.watch)([ a, o, s, i ], y, { flush: "sync" }), (0, Z.watch)([l, u], x, { flush: "sync" }), (0, Z.watch)(i, S, { flush: "sync" }), (0, Z.getCurrentScope)() && (0, Z.onScopeDispose)(b), { x: (0, Z.shallowReadonly)(d), y: (0, Z.shallowReadonly)(f), strategy: (0, Z.shallowReadonly)(p), placement: (0, Z.shallowReadonly)(m), middlewareData: (0, Z.shallowReadonly)(h), isPositioned: (0, Z.shallowReadonly)(g), floatingStyles: _, update: y }; } //#endregion //#region lib/float/oui-float.vue?vue&type=script&setup=true&lang.ts var Ur = { class: "_float_inner" }, Wr = /* @__PURE__ */ h({ inheritAttrs: !1, __name: "oui-float", props: /* @__PURE__ */ y({ reference: {}, transition: {}, placement: {}, arrow: { type: Boolean }, offset: { type: [ Number, Object, Function ] }, padding: {}, close: { type: Boolean }, hover: { type: Boolean }, delayEnter: {}, delayLeave: {} }, { modelValue: { type: Boolean }, modelModifiers: {} }), emits: /* @__PURE__ */ y(["close", "dblclick"], ["update:modelValue"]), setup(e, { emit: i }) { let o = e, d = i; re(); let f = L(e, "modelValue"), m = A(), h = a(() => m.value ?? o.reference), g = A(), _ = A(), { floatingStyles: v, middlewareData: y, placement: x } = Hr(h, g, { placement: a(() => o.placement ?? "top"), whileElementsMounted: Tr, middleware: [ Er(Ie(o.offset) ? +o.offset : o.offset ?? 0), kr(), Or(), Dr({ padding: o.padding ?? 16 }), zr({ element: _ }) ] }); R(f, (e) => { e === !1 && d("close"); }); async function C(e) { o.close && f.value && (e?.preventDefault(), e?.stopPropagation(), f.value = !1); } We("Escape", (e) => C(e)); let E; K("pointerup", (e) => { f.value && g?.value?.contains?.(e.target) !== !0 && h?.value?.contains?.(e.target) !== !0 && (E = setTimeout(() => f.value = !1, 50)); }, { passive: !0 }), T(() => clearTimeout(E)); let D = ne(), k = a(() => String(D.class || "oui-float").split(/\s+/g)?.[0]); function j(e) { f.value = !f.value, e.preventDefault(); } let N = A(); R(N, (e) => { let t = e?.nextElementSibling; m.value = t, t?.addEventListener("dblclick", j), t?.addEventListener("click", j), t?.addEventListener("contextmenu", j), e && !t && console.error("#click slot requires at least one element!"); }); let te = { delayLeave: o.delayLeave ?? 250, delayEnter: o.delayEnter ?? 0 }, P = Je(g, te), F = Je(h, te), { focused: ie } = Xe(g); return R(() => [ P.value, F.value, ie.value ], (e) => { o.hover && (f.value = !!(P.value || F.value || ie.value)); }), (i, a) => (O(), l(t, null, [ i.$slots.click ? (O(), l("div", { key: 0, ref_key: "slotReference", ref: m, style: { display: "inline-block" }, onClick: a[0] ||= H((e) => f.value = !f.value, ["prevent", "stop"]), onContextmenu: a[1] ||= H((e) => f.value = !f.value, ["prevent", "stop"]) }, [M(i.$slots, "click", { active: f.value === !0 })], 544)) : c("", !0), i.$slots.trigger ? (O(), s(ee(i.$slots.trigger), { key: 1, ref_key: "triggerSlot", ref: N, active: f.value === !0 }, null, 8, ["active"])) : c("", !0), (O(), s(n, { to: "body" }, [p(r, { name: e.transition ?? `${k.value}-transition` }, { default: z(() => [B(u("div", b({ ref_key: "floating", ref: g, style: I(v), class: i.$attrs.class || "oui-float" }, i.$attrs, { class: "_float" }), [B(u("div", { ref_key: "floatingArrow", ref: _, class: S(["_float_arrow", `_float_arrow_${I(x)}`]), style: w({ position: "absolute", left: I(y).arrow?.x == null ? "" : `${I(y).arrow.x}px`, top: I(y).arrow?.y == null ? "" : `${I(y).arrow.y}px` }) }, null, 6), [[ce, e.arrow ?? !1]]), u("div", Ur, [M(i.$slots, "default")])], 16), [[ce, f.value]])]), _: 3 }, 8, ["name"])])) ], 64)); } }), Gr = { key: 0, class: "oui-form-item-title" }, Kr = { key: 0 }, qr = { class: "oui-form-item-body" }, Jr = { key: 1, class: "oui-form-item-description" }, Q = /* @__PURE__ */ h({ inheritAttrs: !1, __name: "oui-form-item", props: { title: {}, description: {}, required: { type: Boolean }, id: {}, disabled: { type: Boolean } }, setup(e) { return (t, n) => e.title != null || t.$slots.title || t.$slots.description || e.description ? (O(), l("div", { key: 0, class: S(["oui-form-item", { _disabled: e.disabled }]) }, [u("label", null, [ t.$slots.title || e.title ? (O(), l("div", Gr, [M(t.$slots, "title", {}, () => [f(P(e.title) + " ", 1), e.required ? (O(), l("span", Kr, "*")) : c("", !0)])])) : c("", !0), u("div", qr, [M(t.$slots, "default", C(g(t.$attrs)))]), t.$slots.description || e.description ? (O(), l("div", Jr, [M(t.$slots, "description", {}, () => [f(P(e.description), 1)])])) : c("", !0) ])], 2)) : M(t.$slots, "default", C(b({ key: 1 }, t.$attrs))); } }), Yr = [ "data-id", "data-index", "onPointerdown", "onClick", "onKeydown" ], Xr = /* @__PURE__ */ h({ __name: "oui-items", props: /* @__PURE__ */ y({ items: {} }, { modelValue: { required: !0 }, modelModifiers: {} }), emits: /* @__PURE__ */ y(["action"], ["update:modelValue"]), setup(e, { emit: n }) { let r = n, i = L(e, "modelValue"), a = A(); R(i, u, { immediate: !0 }); function o(e) { i.value = e; } function s(e, t) { r("action", e, t); } function u(e = i.value ?? 0) { let t = a.value?.querySelectorAll(".oui-items-item")[e]; t && t.scrollIntoView({ block: "nearest", inline: "nearest" }); } return (n, r) => (O(), l("div", { ref_key: "container", ref: a, class: "oui-items" }, [(O(!0), l(t, null, j(e.items, (e, t) => (O(), l("div", { key: e.id, "data-id": e.id, "data-index": t, class: S(["oui-items-item", { "-selected": i.value != null && i.value === t, "-active": i.value != null && i.value === t, [e.class]: e.class }]), onPointerdown: (e) => o(t), onClick: (n) => s(e, t), onKeydown: V((n) => s(e, t), ["enter"]) }, [M(n.$slots, "default", { item: e, index: t }, () => [f(P(t) + ". " + P(e), 1)])], 42, Yr))), 128)), e.items.length <= 0 ? M(n.$slots, "empty", { key: 0 }, () => [r[0] ||= f(" Empty ", -1)]) : c("", !0)], 512)); } }), Zr = [ "id", "placeholder", "disabled" ], Qr = { key: 1, class: "oui-combobox-select-icon" }, $r = { class: "oui-combobox-popover-content" }, ei = { class: "oui-items-item" }, ti = /* @__PURE__ */ h({ inheritAttrs: !1, __name: "oui-combobox", props: /* @__PURE__ */ y({ id: { default: Ue() }, title: {}, description: {}, required: { type: Boolean }, items: {}, placeholder: { default: "" }, selectIcon: { type: Boolean, default: !1 }, clearable: { type: Boolean, default: !1 }, disabled: { type: Boolean, default: !1 }, formatValue: {}, parseValue: {}, addItemAction: {}, addItemTitle: {}, addItemClass: {}, addItemFooter: { type: Boolean, default: !1 }, clearOnSelection: { type: Boolean, default: !1 } }, { modelValue: { required: !0 }, modelModifiers: {} }), emits: /* @__PURE__ */ y(["change", "deleteLast"], ["update:modelValue"]), setup(e, { emit: t }) { let n = e, r = t; U("oui-combobox"); let i = _("t", null); function o(e) { let t = n.addItemTitle ?? "ui.combobox.addTitle"; if (i) { let n = i(t, e); if (n !== t) return n; } return `Add "${e}"`; } let m = L(e, "modelValue"), h = A(), g = A(), v = A(0), y = A(!1), x = A(!1), S = A(""), C = A(!1), w = a(() => (n.items ?? []).map((e) => Ie(e) || Ne(e) ? { id: String(e), title: n.formatValue?.(e) ?? String(e) } : e)), T = a(() => { let e = [...w.value]; if (C.value) { let t = S.value.trim(), r = t.toLowerCase(), i = !1; if (e = e.filter((e) => t ? ((e.title.toLowerCase() === r || n.parseValue && n.parseValue(t) === e.id) && (i = !0), i || (e.search?.toString().toLowerCase() ?? e.title.toString().toLowerCase()).includes(r)) : !0), t && !i) { if (n.addItemAction) { let r = { action: () => { Be(n.addItemAction(t)).then((e) => D(e)); }, title: o(t), class: n.addItemClass ?? "oui-combobox-item-add", skipSelection: e.length > 0 }; n.addItemFooter ? e.push(r) : e.unshift(r); } else if (n.formatValue && n.parseValue) { let t = n.parseValue(S.value ?? ""); t && e.unshift({ title: n.formatValue(t), id: t, class: n.addItemClass ?? "oui-combobox-item-preview" }); } } } return e; }); function E() { n.formatValue ? S.value = n.formatValue(m.value) ?? "" : S.value = w.value.find((e) => e.id === m.value)?.title ?? ""; } R(m, E, { immediate: !0 }); function D(e) { r("change", e), m.value !== e && (m.value = e), n.clearOnSelection ? S.value = "" : E(); } function k(e, t) { t?.metaKey || (x.value = !0, v.value = Math.max(0, Math.min(T.value.length - 1, v.value + e)), t?.stopPropagation(), t?.preventDefault()); } function j(e) { e.action ? e.action(S.value) : D(e.id), x.value = !1; } function N(e = !0) { let t = T.value[v.value]; if (!t) { D(void 0); return; } t?.action ? t.action(S.value) : D(t.id), e && (x.value = !1), v.value = 0; } function ee(e) { S.value?.length === 0 && (e.preventDefault(), x.value = !1, r("deleteLast")); } function te() { x.value = !0, C.value = !0, v.value = +!!T.value?.[0]?.skipSelection; } function F() { if (y.value === !0) { if (y.value = !1, S.value.trim().length === 0) D(void 0); else if (n.parseValue) D(n.parseValue(S.value)); else if (x.value === !0) { let e = T.value[v.value]; e?.id && D(e.id); } E(), x.value = !1; } } function ne() { C.value = !1, y.value = !0, x.value = !0, g.value.select(), queueMicrotask(() => { v.value = T.value.findIndex((e) => e.id === m.value); }); } return (t, n) => (O(), s(Q, { id: e.id, title: e.title, description: e.description, required: e.required }, d({ default: z(() => [u("div", b({ ref_key: "target", ref: h, class: ["oui-input-container oui-combobox", { "-focus": y.value }] }, t.$attrs, { onClick: n[10] ||= (e) => g.value.focus() }), [ M(t.$slots, "before"), B(u("input", { id: e.id, ref_key: "input", ref: g, "onUpdate:modelValue": n[0] ||= (e) => S.value = e, autocomplete: "off", placeholder: e.placeholder, class: "oui-combobox-input", disabled: e.disabled, onFocus: ne, onBlur: F, onInput: te, onKeydown: [ n[1] ||= V((e) => k(1, e), ["down"]), n[2] ||= V((e) => k(-1, e), ["up"]), n[3] ||= V((e) => x.value = !1, ["esc"]), n[4] ||= V((e) => N(!0), ["enter"]), V(ee, ["backspace"]) ] }, null, 40, Zr), [[se, S.value]]), e.clearable && (m.value || S.value) ? (O(), l("div", { key: 0, class: "oui-combobox-clearable", onClick: n[5] ||= (e) => D(void 0) }, [p(kt)])) : c("", !0), e.selectIcon ? (O(), l("div", Qr)) : c("", !0), M(t.$slots, "after"), p(Wr, { modelValue: x.value, "o