oui-kit
Version:
🎯 *UI toolkit with a French touch* 🇫🇷
1,656 lines • 204 kB
JavaScript
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