UNPKG

oui-kit

Version:

> *...c'est un "kit" pour Vue.js :)*

1,514 lines 161 kB
import { ref as H, inject as on, reactive as Mt, defineComponent as F, createElementBlock as C, openBlock as h, normalizeClass as ve, renderSlot as K, createTextVNode as J, toDisplayString as I, createCommentVNode as z, createElementVNode as P, mergeModels as oe, useModel as re, computed as ee, withDirectives as me, Fragment as X, mergeProps as ne, vModelCheckbox as Wt, unref as x, createBlock as Z, withCtx as te, vModelText as rt, Teleport as Pe, createVNode as pe, withModifiers as _e, onBeforeUnmount as Tt, watch as le, withKeys as bt, vModelDynamic as Kt, onMounted as Ye, normalizeStyle as Ae, toRefs as Rn, renderList as ue, normalizeProps as Pn, vShow as Fe, isRef as xn, vModelSelect as Nn, nextTick as it, resolveDynamicComponent as Lt, shallowRef as In, getCurrentScope as qn, onScopeDispose as zn, shallowReadonly as qe, useSlots as Fn, useAttrs as Un, Transition as sn, createSlots as Hn, createApp as Wn, TransitionGroup as Kn, resolveComponent as an } from "vue"; import { useDark as jn, useToggle as Yn, useEventListener as ge, useDropZone as Xn, useFileDialog as Qn, useLocalStorage as Bt, useTextareaAutosize as Gn, onKeyStroke as rn, useElementHover as jt, useFocusWithin as Jn, useScrollLock as Zn, useWindowSize as eo } from "@vueuse/core"; import { Logger as Le, arrayEmptyInPlace as to, createArray as no, LoggerContext as oo, LoggerMemoryHandler as so, LogLevelAll as ao, dayFromString as ro, dayToString as io, dayFromToday as lo, getTimestamp as et, createPromise as uo, debounce as co, parseOrderby as tt, arraySetArrayInPlace as fo, arraySum as po, isString as mo, isArray as Yt, logMessageFromCompact as vo, formatMilliseconds as ho, browserSelectColorByName as go, Uint8ArrayToHexDump as yo, isPrimitive as wo, isRecord as bo, useDispose as _o } from "zeed"; const ln = Le("directives"), Gr = { mounted: (t, e, ...n) => { if (e instanceof H) throw new Error("v-action-toggle requires ref as argument"); t.addEventListener("contextmenu", (s) => { s.preventDefault(), e.value = !e.value; }), t.addEventListener("click", (s) => { e.value = !e.value; }); } }, Jr = { mounted: (t, e) => { if (e instanceof H) throw new Error("v-action-ture requires ref as argument"); t.addEventListener("contextmenu", (n) => { n.preventDefault(), e.value = !0; }), t.addEventListener("click", (n) => { e.value = !0; }); } }, Zr = { mounted: (t, e) => { ln.warn("v-no-selection, use with care! causes issues on draggable!"), t.draggable || t.addEventListener( "pointermove", (n) => n.preventDefault() ); } }, ei = { mounted: (t, e) => { ln("focus", t), setTimeout(() => t.focus(), 50); } }; function ti(t, e, n = "") { try { try { return new Intl.NumberFormat(void 0, { style: "currency", currency: e }).format(t); } catch { } return `${e} ${t.toFixed(2)}`; } catch { return n; } } function ni(t, e = "") { try { try { return new Intl.NumberFormat(void 0, { style: "percent" }).format(t); } catch { } return `${(t * 100).toFixed(0)} %`; } catch { return e; } } function Xt(t, ...e) { return (on("t") ?? ((n) => String(n)))(t, ...e); } function oi(t, e, ...n) { return (on("t") ?? ((s) => String(t)))(e, ...n); } const Qt = Le("lazy-data"); function si(t) { const { chunkSize: e = 10, margin: n = 5, onFetch: s, size: o = 0 } = t; let a = 0, r = 0; const l = t.data ?? Mt([]); let u = {}, d = 0, f = 0; function m() { a++, to(l); const M = no(r); l.push(...M), u = {}; } function k(M) { r = M, m(); } o > 0 && k(o); function w(M, R) { d = M, f = R; const E = M + R, _ = Math.max(0, M - n), b = Math.min(r, E + n), v = Math.floor(_ / e), $ = Math.floor(b / e); let c = []; function y() { if (c.length === 0) return; const p = [...c]; c = []; const i = p[0] * e, T = (p[p.length - 1] - p[0] + 1) * e, B = a; s(i, T).then((S) => { if (Qt("Loaded", i, T, S), a === B) { p.forEach( (q) => u[q] = 2 /* Loaded */ ); for (let q = 0; q < T; q++) l[i + q] = S[q]; } }).catch((S) => { Qt.error("Failed to load chunks", p, S); }); } for (let p = v; p <= $; p++) u[p] == null ? (u[p] = 1, c.push(p)) : y(); y(); } function g() { m(), w(d, f); } return { setSize: k, getSize: () => r, setVisible: w, reload: g, data: l }; } function ai(t) { const e = Mt([]), n = oo(); n.setHandlers([ so({ level: ao, filter: "*", messages: e }) ]); const s = n(t); return s.messages = e, s; } const $o = ["href", "target"], ko = ["disabled"], je = /* @__PURE__ */ F({ __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 } }, setup(t) { return (e, n) => e.href && !e.disabled ? (h(), C("a", { key: 0, href: e.href, target: e.target, class: ve(["oui-button", [ e.mode && `_button_mode_${e.mode}`, e.size && `_button_size_${e.size}`, e.dropdown && "_button_dropdown" ]]) }, [ K(e.$slots, "default", {}, () => [ J(I(e.title), 1) ]) ], 10, $o)) : (h(), C("button", { key: 1, disabled: e.disabled, class: ve(["oui-button", [ e.mode && `_button_mode_${e.mode}`, e.size && `_button_size_${e.size}`, e.dropdown && "_button_dropdown" ]]) }, [ K(e.$slots, "default", {}, () => [ J(I(e.title), 1) ]) ], 10, ko)); } }), Co = { class: "oui-card" }, Ao = { key: 0, class: "oui-card-header" }, Mo = { class: "oui-card-body" }, To = { key: 1, class: "oui-card-footer" }, ri = /* @__PURE__ */ F({ __name: "oui-card", props: { title: {} }, setup(t) { return (e, n) => (h(), C("div", Co, [ e.$slots.header || e.$slots.title || e.title ? (h(), C("div", Ao, [ K(e.$slots, "header", {}, () => [ K(e.$slots, "title", {}, () => [ J(I(e.title), 1) ]) ]) ])) : z("", !0), P("div", Mo, [ K(e.$slots, "default") ]), e.$slots.footer ? (h(), C("div", To, [ K(e.$slots, "footer") ])) : z("", !0) ])); } }), ii = /* @__PURE__ */ F({ inheritAttrs: !1, __name: "oui-checkbox", props: /* @__PURE__ */ oe({ title: {}, switch: { type: Boolean, default: !1 }, intermediate: { type: Boolean, default: !1 }, description: {} }, { modelValue: { required: !0 }, modelModifiers: {} }), emits: ["update:modelValue"], setup(t) { const e = t, n = re(t, "modelValue"), s = ee({ get() { return !!n.value; }, set(a) { n.value = a; } }), o = ee(() => { const a = [e.switch ? "oui-switch" : "oui-checkbox"]; return n.value == null && a.push("_checkbox_intermediate"), a; }); return (a, r) => a.title || a.$slots.default ? (h(), C(X, { key: 0 }, [ P("label", { class: ve(["oui-form-item-checkbox", { _disabled: a.$attrs.disabled }]) }, [ me(P("input", ne({ "onUpdate:modelValue": r[0] || (r[0] = (l) => s.value = l), type: "checkbox", class: o.value }, a.$attrs), null, 16), [ [Wt, s.value] ]), r[2] || (r[2] = J(" " + I(" ") + " ")), K(a.$slots, "default", {}, () => [ J(I(a.title), 1) ]) ], 2), a.$slots.description || a.description ? (h(), C("div", { key: 0, class: ve(["oui-form-item-description", { _disabled: a.$attrs.disabled }]) }, [ K(a.$slots, "description", {}, () => [ J(I(a.description), 1) ]) ], 2)) : z("", !0) ], 64)) : me((h(), C("input", ne({ key: 1, "onUpdate:modelValue": r[1] || (r[1] = (l) => s.value = l), type: "checkbox", class: o.value }, a.$attrs), null, 16)), [ [Wt, s.value] ]); } }), Et = (t, e) => { const n = t.__vccOpts || t; for (const [s, o] of e) n[s] = o; return n; }, Lo = {}, Bo = { 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 Eo(t, e) { return h(), C("svg", Bo, e[0] || (e[0] = [ P("line", { x1: "18", y1: "6", x2: "6", y2: "18" }, null, -1), P("line", { x1: "6", y1: "6", x2: "18", y2: "18" }, null, -1) ])); } const St = /* @__PURE__ */ Et(Lo, [["render", Eo]]), li = /* @__PURE__ */ F({ __name: "oui-dark", setup(t) { const e = jn(), n = Yn(e); return (s, o) => (h(), C("button", { class: "oui-dark", onClick: o[0] || (o[0] = (a) => x(n)()) }, " toggleDark " + I(x(e)), 1)); } }), So = { key: 0, class: "oui-form-item-title" }, Do = { key: 0 }, Oo = { class: "oui-form-item-body" }, Vo = { key: 1, class: "oui-form-item-description" }, Be = /* @__PURE__ */ F({ __name: "oui-form-item", props: { title: {}, description: {}, required: { type: Boolean }, id: {}, disabled: { type: Boolean } }, setup(t) { return (e, n) => e.title != null || e.$slots.description || e.description ? (h(), C("div", { key: 0, class: ve(["oui-form-item", { _disabled: e.disabled }]) }, [ P("label", null, [ e.title ? (h(), C("div", So, [ J(I(e.title) + " ", 1), e.required ? (h(), C("span", Do, "*")) : z("", !0) ])) : z("", !0), P("div", Oo, [ K(e.$slots, "default") ]), e.$slots.description || e.description ? (h(), C("div", Vo, [ K(e.$slots, "description", {}, () => [ J(I(e.description), 1) ]) ])) : z("", !0) ]) ], 2)) : K(e.$slots, "default", { key: 1 }); } }), Ro = ["id"], ui = /* @__PURE__ */ F({ __name: "oui-date", props: /* @__PURE__ */ oe({ title: {}, description: {}, required: { type: Boolean }, id: {} }, { modelValue: { required: !0, default: lo() }, modelModifiers: {} }), emits: ["update:modelValue"], setup(t) { const e = re(t, "modelValue"), n = ee({ get() { return e.value ? io(e.value) : ""; }, set(s) { e.value = s ? ro(s) : void 0; } }); return (s, o) => (h(), Z(Be, { id: s.id, title: s.title, description: s.description, required: s.required }, { default: te(() => [ me(P("input", ne({ id: s.id, "onUpdate:modelValue": o[0] || (o[0] = (a) => n.value = a), type: "date", class: "oui-input oui-input-datetime" }, s.$attrs), null, 16, Ro), [ [rt, n.value] ]) ]), _: 1 }, 8, ["id", "title", "description", "required"])); } }), Po = ["id"], ci = /* @__PURE__ */ F({ __name: "oui-datetime", props: /* @__PURE__ */ oe({ title: {}, description: {}, required: { type: Boolean }, id: {} }, { modelValue: { required: !0, default: et() }, modelModifiers: {} }), emits: ["update:modelValue"], setup(t) { const e = re(t, "modelValue"), n = ee({ get() { const s = new Date(e.value), o = /* @__PURE__ */ new Date(); return o.setUTCFullYear(s.getFullYear()), o.setUTCMonth(s.getMonth()), o.setUTCDate(s.getDate()), o.setUTCHours(s.getHours()), o.setUTCMinutes(s.getMinutes()), o.setUTCSeconds(s.getSeconds()), o.setUTCMilliseconds(s.getMilliseconds()), o.toISOString().slice(0, 16); }, set(s) { const [o, a, r, l, u] = s.replace(/\D/g, " ").split(" "), d = /* @__PURE__ */ new Date(); d.setFullYear(+o), d.setMonth(+a - 1), d.setDate(+r), d.setHours(+l), d.setMinutes(+u), d.setSeconds(0), d.setMilliseconds(0), e.value = d.getTime(); } }); return (s, o) => (h(), Z(Be, { id: s.id, title: s.title, description: s.description, required: s.required }, { default: te(() => [ me(P("input", ne({ id: s.id, "onUpdate:modelValue": o[0] || (o[0] = (a) => n.value = a), type: "datetime-local", class: "oui-input oui-input-datetime" }, s.$attrs), null, 16, Po), [ [rt, n.value] ]) ]), _: 1 }, 8, ["id", "title", "description", "required"])); } }), di = /* @__PURE__ */ F({ __name: "oui-demo", props: { state: {} }, setup(t) { return (e, n) => (h(), C(X, null, [ (h(), Z(Pe, { to: "#props" }, [ K(e.$slots, "default") ])), (h(), Z(Pe, { to: "#state" }, [ pe(x(Kr), { value: e.state }, null, 8, ["value"]) ])) ], 64)); } }), mt = Le("drag-util"); function un(t, e) { var n; for (; t != null; ) { if (e && (!(e != null && e.contains(t)) || e.isSameNode(t))) return !1; if (((n = t.dataset) == null ? void 0 : n.noscroll) === "true") return mt("exit noscroll"), !0; if (t.tagName === "BODY") return mt("exit body"), !0; const { overflow: s } = window.getComputedStyle(t); if (s.split(" ").some((o) => o === "auto" || o === "scroll")) return mt("exit scroll", t.scrollTop, s), !0; t = t.parentElement; } return !1; } const cn = /* @__PURE__ */ F({ __name: "oui-draggable", props: { onlyTouch: { type: Boolean }, cancelEvents: { type: Boolean } }, emits: ["moveStart", "move", "moveEnd"], setup(t, { emit: e }) { const n = t, s = e, o = Le("oui-draggable"), a = H(); let r = 0, l = !1, u = 0, d = 0, f = 0, m = 0, k = 0, w = 0, g; function M(i) { var Q; const { pageX: T, pageY: B } = ((Q = i == null ? void 0 : i.touches) == null ? void 0 : Q[0]) ?? i; k = T - f, w = B - m, f = T, m = B; const S = u - T, q = d - B, U = { startX: u, startY: d, pageX: T, pageY: B, deltaX: k, deltaY: w, moveX: S, moveY: q, timeMS: et() - r }; return o("event", U), g = U, U; } function R(i) { n.cancelEvents && (i == null || i.stopPropagation(), i == null || i.preventDefault()); } function E(i) { var S; if (i.target && a.value && un(i.target, a.value)) return; o("down"); const { pageX: T, pageY: B } = ((S = i == null ? void 0 : i.touches) == null ? void 0 : S[0]) ?? i; return r = et(), l = !0, u = T, d = B, f = T, m = B, s("moveStart", M(i)), y(), R(i); } function _(i) { if (o("move", l, i), !!l) return s("move", M(i)), R(i); } function b(i) { return o("up"), l = !1, g && (g.timeMS = et() - r), s("moveEnd", g ?? M(i)), g = void 0, p(), R(i); } function v() { } const $ = { passive: !1 }; n.onlyTouch || (ge(a, "mousedown", E), ge(a, "dblclick", v)), ge(a, "touchstart", E); let c = []; function y() { c = [ ge(document, "touchmove", _, $), ge(document, "touchend", b) ], n.onlyTouch || c.push( ge(document, "mousemove", _, $), ge(document, "mouseup", b) ); } function p() { c.forEach((i) => i()), c = []; } return (i, T) => (h(), C("div", { ref_key: "el", ref: a, "data-noscroll": "true" }, [ K(i.$slots, "default") ], 512)); } }), xo = { class: "_content" }, fi = /* @__PURE__ */ F({ inheritAttrs: !1, __name: "oui-file", props: /* @__PURE__ */ oe({ title: {}, titleChoose: {}, description: {}, accept: { default: "image/*" }, disabled: { type: Boolean, default: !1 }, required: { type: Boolean }, id: {} }, { modelValue: { required: !0 }, modelModifiers: {}, filename: { required: !1 }, filenameModifiers: {} }), emits: ["update:modelValue", "update:filename"], setup(t) { const e = t, n = Le("oui-file"), s = H(), o = re(t, "modelValue"), a = re(t, "filename"); async function r(g) { const [M, R] = uo(), E = new FileReader(); E.addEventListener("error", R), E.addEventListener("abort", R), E.addEventListener("loadend", (b) => R(E.result)), E.readAsDataURL(g); const _ = await M; return _ && (a.value = g.name), _; } async function l(g) { const M = g == null ? void 0 : g[0]; M && (o.value = await r(M)); } const { isOverDropZone: u } = Xn(s, { onDrop: l, dataTypes: [e.accept], multiple: !1, // props.multiple, preventDefaultForUnhandled: !1 }), { files: d, open: f, reset: m, onChange: k } = Qn({ accept: e.accept, multiple: !1 // props.multiple, }); k(async () => { var M; if (e.disabled) return; const g = (M = d.value) == null ? void 0 : M[0]; if (g) { const R = await r(g); n("url", R), o.value = R, m(); } }); function w() { e.disabled || (n("select"), f()); } return (g, M) => (h(), Z(Be, { id: g.id, title: g.title, description: g.description, required: g.required }, { default: te(() => { var R; return [ P("div", { ref_key: "dropZoneRef", ref: s, class: ve(["oui-file", { _over: x(u), _disabled: g.disabled }]), onClick: _e(w, ["prevent"]) }, [ P("div", xo, [ !o.value || ((R = o.value) == null ? void 0 : R.length) <= 0 ? K(g.$slots, "default", { key: 0 }, () => [ J(I(g.titleChoose ?? x(Xt)("Choose file...", "oui.file.choose")), 1) ]) : (h(), C(X, { key: 1 }, [ K(g.$slots, "preview", { filename: a.value }, () => [ J(I(a.value ?? x(Xt)("File available", "oui.file.placeholder")), 1) ]), pe(St, { onClick: M[0] || (M[0] = _e((E) => o.value = void 0, ["stop", "prevent"])) }) ], 64)) ]) ], 2) ]; }), _: 3 }, 8, ["id", "title", "description", "required"])); } }), No = { class: "oui-input-group" }, pi = /* @__PURE__ */ F({ __name: "oui-input-group", setup(t) { return (e, n) => (h(), C("div", No, [ K(e.$slots, "default") ])); } }), Io = ["id"], mi = /* @__PURE__ */ F({ inheritAttrs: !1, __name: "oui-input-number", props: /* @__PURE__ */ oe({ title: {}, description: {}, required: { type: Boolean }, id: {} }, { modelValue: { required: !0 }, modelModifiers: {} }), emits: ["update:modelValue"], setup(t) { const e = re(t, "modelValue"); return (n, s) => (h(), Z(Be, { id: n.id, title: n.title, description: n.description, required: n.required }, { default: te(() => [ me(P("input", ne({ id: n.id, "onUpdate:modelValue": s[0] || (s[0] = (o) => e.value = o), type: "number", class: "oui-number" }, n.$attrs), null, 16, Io), [ [rt, e.value] ]) ]), _: 1 }, 8, ["id", "title", "description", "required"])); } }), qo = ["disabled"], zo = ["id", "type"], Fo = ["id", "type"], dn = /* @__PURE__ */ F({ inheritAttrs: !1, __name: "oui-input", props: /* @__PURE__ */ oe({ title: {}, description: {}, required: { type: Boolean }, type: { default: "text" }, id: {}, lazy: { type: Boolean }, lazyDelay: { default: 1e3 } }, { modelValue: { required: !0 }, modelModifiers: {} }), emits: ["update:modelValue"], setup(t) { const e = t, n = re(t, "modelValue"), s = H(""); let o; function a() { clearTimeout(o); } Tt(a), le(s, (l) => { e.lazy ? e.lazyDelay > 0 && (a(), o = setTimeout(() => n.value = l, e.lazyDelay)) : n.value = l; }), le(() => n.value, (l) => s.value = l ?? "", { immediate: !0 }); function r() { e.lazy && (a(), n.value = s.value); } return (l, u) => (h(), Z(Be, { id: l.id, title: l.title, description: l.description, required: l.required }, { default: te(() => [ l.$slots.start || l.$slots.end ? (h(), C("div", { key: 0, class: "oui-input oui-input-container", disabled: l.$attrs.disabled }, [ K(l.$slots, "start"), me(P("input", ne({ id: l.id, "onUpdate:modelValue": u[0] || (u[0] = (d) => s.value = d), type: l.type }, l.$attrs, { onBlur: r, onKeypress: bt(r, ["enter"]) }), null, 16, zo), [ [Kt, s.value] ]), K(l.$slots, "end") ], 8, qo)) : me((h(), C("input", ne({ key: 1, id: l.id, "onUpdate:modelValue": u[1] || (u[1] = (d) => s.value = d), type: l.type, class: "oui-input oui-input-string" }, l.$attrs, { onBlur: r, onKeypress: bt(r, ["enter"]) }), null, 16, Fo)), [ [Kt, s.value] ]) ]), _: 3 }, 8, ["id", "title", "description", "required"])); } }); function Ee(t) { return `${t}px`; } const fn = /* @__PURE__ */ F({ __name: "oui-separator", props: /* @__PURE__ */ oe({ side: {}, modelValue: {}, minSize: {}, maxSize: {}, absolute: { type: Boolean, default: !1 }, color: {}, name: {} }, { styleValue: { required: !1 }, styleValueModifiers: {} }), emits: /* @__PURE__ */ oe(["update:modelValue"], ["update:styleValue"]), setup(t, { emit: e }) { const n = t, s = e, o = n.name ? Bt(`oui.separator.${n.name}`, n.modelValue) : H(n.modelValue), a = H(!1), r = re(t, "styleValue"); function l() { r.value = { [n.side === "top" || n.side === "bottom" ? "height" : "width"]: Ee(o.value) }; } function u(g) { o.value = Math.max(n.minSize, Math.min(n.maxSize, g)), s("update:modelValue", o.value), l(); } Ye(() => { n.name || o.value && (o.value < n.minSize || o.value > n.maxSize) ? u(o.value) : l(); }); let d = 0; function f(g) { a.value = !0, d = o.value; } function m(g) { n.side === "top" ? u(d + g.moveY) : n.side === "bottom" ? u(d - g.moveY) : n.side === "left" ? u(d + g.moveX) : u(d - g.moveX); } function k(g) { m(g), a.value = !1; } const w = ee(() => n.color ? `--separator: ${n.color}` : void 0); return (g, M) => (h(), Z(cn, { class: ve(["oui-separator", { [`_${g.side}`]: !0, _active: a.value, _absolute: g.absolute }]), style: Ae(w.value), onMoveStart: f, onMoveEnd: k, onMove: m }, null, 8, ["class", "style"])); } }), vt = ( /* props.margin ?? */ 0 ), Uo = /* @__PURE__ */ F({ __name: "oui-virtual-list", props: { data: {}, rowHeight: { default: 20 }, rowBuffer: { default: 5 }, scrollToEnd: { type: Boolean, default: !1 }, emitDelay: { default: 100 } }, emits: ["scrollX", "visible"], setup(t, { emit: e }) { const n = t, s = e, { data: o, rowBuffer: a, rowHeight: r } = Rn(n), l = H(), u = Math.ceil(a.value / 10) * 2, d = H(o.value.length * r.value + 2 * vt), f = H(0), m = H(0), k = H(vt); let w = 0, g = !1, M = !1; function R() { l.value && (l.value.scrollLeft, !g && (g = !0, requestAnimationFrame(() => { if (g = !1, !l.value) return; const v = []; v[0] = Math.floor(l.value.scrollTop / r.value) - Math.floor(a.value / 2), v[0] = Math.max(v[0], 0), v[1] = v[0] + Math.floor(l.value.clientHeight / r.value) + a.value, v[1] = Math.min(Math.ceil(v[1] / u) * u, o.value.length), v[0] = Math.max(Math.floor(v[0] / u) * u, 0), f.value = v[0], m.value = v[1], k.value = v[0] * r.value + vt, s("scrollX", l.value.scrollLeft), n.scrollToEnd && !g && !M && (l.value.scrollTop = d.value); }))); } const E = co(() => s("visible", f.value, m.value - f.value), { delay: n.emitDelay }); le(() => [f.value, m.value], E); function _() { l.value && (n.scrollToEnd ? l.value.scrollTop = d.value : l.value.scrollTop = 0); } le(() => n.scrollToEnd, _), le(() => o.value.length, (v) => { d.value = v * r.value, R(); }), le(r, (v) => { d.value = o.value.length * v; }); function b() { const v = l.value ? l.value.scrollTop + l.value.clientHeight + 1 : 0; R(), M = d.value > v; } return Ye(() => { if (!l.value) return; w = l.value.clientHeight; const c = [0, Math.ceil(w / r.value) + a.value]; f.value = c[0], m.value = c[0] + c[1], _(); }), (v, $) => (h(), C("div", { ref_key: "root", ref: l, class: "oui-virtual-list", onScrollPassive: b }, [ P("div", { style: Ae(`height: ${x(Ee)(d.value)}; padding-top: ${x(Ee)(k.value)}`) }, [ (h(!0), C(X, null, ue(x(o).slice(f.value, m.value), (c, y) => (h(), C("div", { key: f.value + y, style: Ae({ height: `${x(Ee)(x(r))}` }) }, [ c ? K(v.$slots, "default", { key: 0, item: c, index: f.value + y }, () => [ J(" Placeholder " + I(y), 1) ]) : z("", !0) ], 4))), 128)) ], 4) ], 544)); } }), Ho = { class: "_tableview_row" }, Wo = ["onClick"], Ko = ["onClick", "onContextmenu"], jo = ["align", "valign"], Yo = { class: "_tableview_row" }, Xo = ["align", "valign"], Qo = /* @__PURE__ */ F({ __name: "oui-tableview", props: /* @__PURE__ */ oe({ data: {}, columns: {}, rowHeight: { default: 44 }, header: { type: Boolean, default: !0 }, footer: { type: Boolean, default: !1 }, selectable: { type: Boolean, default: !0 }, fillLast: { type: Boolean, default: !0 }, scrollToEnd: { type: Boolean, default: !1 }, rowAttrs: { type: Function, default: () => ({}) }, name: {}, resizeable: { type: Boolean, default: !0 } }, { sort: {}, sortModifiers: {}, modelValue: {}, modelModifiers: {} }), emits: /* @__PURE__ */ oe(["context", "select", "visible"], ["update:sort", "update:modelValue"]), setup(t, { emit: e }) { const n = t, s = e, o = re(t, "sort"), a = re(t, "modelValue"), r = ee(() => tt(o.value).field), l = ee(() => tt(o.value).asc), u = n.columns.map((E) => E.width ?? 120), d = n.name && n.resizeable ? Bt(`oui.tableview.${n.name}.widths`, u) : H(u); le(() => [n.data, n.fillLast], () => { let E = n.columns.map((_, b) => d.value[b] ?? _.width ?? 120); n.fillLast && (E = E.slice(0, -1)), fo(d.value, E); }, { immediate: !0 }); const f = ee(() => { const E = d.value.map((_) => Ee(_ ?? 120)); return n.fillLast && E.push("auto"), `--tableview-columns: ${E.join(" ")}`; }); function m(E) { if (E.sortable === !0) { if (r.value === E.name) { o.value = `${E.name} ${l.value ? "desc" : "asc"}`; return; } o.value = `${E.name} asc`; } } function k(E) { a.value === E ? a.value = void 0 : a.value = E; } const w = H(0), g = H(), M = H(); function R(E) { w.value = E, g.value && (g.value.style.marginLeft = Ee(-1 * E)), M.value && (M.value.style.marginLeft = Ee(-1 * E)); } return (E, _) => E.columns != null && E.data != null ? (h(), C("div", { key: 0, class: "oui-tableview", style: Ae(f.value) }, [ E.header ? (h(), C("div", { key: 0, ref_key: "headerElement", ref: g, class: "_tableview_header" }, [ P("div", Ho, [ (h(!0), C(X, null, ue(E.columns, (b, v) => (h(), C("div", { key: b.name, class: ve(["_tableview_cell", { _sortable: b.sortable === !0, _asc: r.value === b.name && l.value, _desc: r.value === b.name && !l.value, _active: r.value === b.name }]), onClick: ($) => m(b) }, [ K(E.$slots, `header-${b.name}`, ne({ ref_for: !0 }, { col: b, pos: v }), () => [ J(I(b.title ?? b.name) + " ", 1), b.sortable === !0 && r.value === b.name ? (h(), C(X, { key: 0 }, [], 64)) : z("", !0) ]) ], 10, Wo))), 128)) ]) ], 512)) : z("", !0), pe(Uo, { class: "_tableview_body", data: E.data, "row-height": E.rowHeight, "scroll-to-end": E.scrollToEnd, onScrollX: R, onVisible: _[0] || (_[0] = (b, v) => E.$emit("visible", b, v)) }, { default: te(({ item: b, index: v }) => [ P("div", ne({ class: ["_tableview_row", { _selectable: E.selectable, _active: a.value === v }] }, E.rowAttrs(b, v), { onClick: ($) => { k(v), s("select", b, v, $); }, onContextmenu: _e(($) => s("context", b, v, $), ["prevent"]) }), [ (h(!0), C(X, null, ue(E.columns, ($, c) => (h(), C("div", { key: $.name, class: "_tableview_cell", align: $.align ?? "left", valign: $.valign ?? "top" }, [ K(E.$slots, `col-${$.name}`, ne({ ref_for: !0 }, { index: v, value: b[$.name], col: $, pos: c, item: b }), () => [ J(I(b[$.name]), 1) ]) ], 8, jo))), 128)) ], 16, Ko) ]), _: 3 }, 8, ["data", "row-height", "scroll-to-end"]), E.footer ? (h(), C("div", { key: 1, ref_key: "footerElement", ref: M, class: "_tableview_footer" }, [ P("div", Yo, [ (h(!0), C(X, null, ue(E.columns, (b, v) => (h(), C("div", { key: b.name, class: "_tableview_cell", align: b.align ?? "left", valign: b.valign ?? "top" }, [ K(E.$slots, `footer-${b.name}`, ne({ ref_for: !0 }, { col: b, pos: v }), () => [ J(I(b.footer ?? ""), 1) ]) ], 8, Xo))), 128)) ]) ], 512)) : z("", !0), E.resizeable ? (h(!0), C(X, { key: 2 }, ue(x(d), (b, v) => (h(), Z(fn, { key: v, modelValue: x(d)[v], "onUpdate:modelValue": ($) => x(d)[v] = $, side: "right", "min-size": E.columns[v].minWidth ?? 80, "max-size": E.columns[v].maxWidth ?? 300, style: Ae({ left: x(Ee)(x(po)(x(d).slice(0, v + 1)) - 1 - w.value) }) }, null, 8, ["modelValue", "onUpdate:modelValue", "min-size", "max-size", "style"]))), 128)) : z("", !0) ], 4)) : z("", !0); } }), Go = { style: { color: "#888", "white-space": "pre" } }, Jo = { key: 0, style: { "font-weight": "600" } }, Zo = { key: 1 }, es = { key: 1, class: "code" }, vi = /* @__PURE__ */ F({ __name: "oui-log", props: { log: {}, showTime: { type: Boolean, default: !0 }, showTag: { type: Boolean, default: !0 } }, setup(t) { const e = t, n = H(); function s(d, f = {}) { const { trace: m = !0, pretty: k = !0 } = f; return d.map((w) => w && typeof w == "object" ? k && (w instanceof Uint8Array || w instanceof ArrayBuffer) ? ` ${yo(w)} ` : w instanceof Error ? m ? `${w.name || "Error"}: ${w.message} ${w.stack}` : `${w.name || "Error"}: ${w.message}` : w : String(w)); } function o(d, f = {}) { return s(d, f) ?? "?"; } function a(d) { const f = d.name || "", m = go(f), k = o(Yt(d.messages) ? d.messages : [d.messages], { pretty: !0 }); return { ...d, name: f, color: m, background: { 1: "#d4f4ff", 2: "#ffedbd", 3: "#ffaab0", 4: "#ffbbe9" }[d.level] ?? "transparent", message: k }; } const r = H([]); function l() { const d = [...e.log.messages], f = d[0], m = Yt(f); let k = (m ? f[0] : f == null ? void 0 : f.timestamp) ?? 0; r.value = d.map((w) => { const g = m ? vo(w) : w, { name: M, message: R, color: E, background: _ } = a(g), b = Math.abs(k - (g.timestamp ?? 0)); k = g.timestamp ?? 0; const v = b && `+${ho(b)}`, $ = new Date(g.timestamp).toLocaleString("de"); return { ...g, diff: b, datetime: $, timeDiffString: v, name: M, message: R, color: E, background: _ }; }); } le(() => e.log.messages.length, l), l(); const u = ee(() => { const d = []; return e.showTime && d.push({ title: "Time", name: "time", sortable: !1, width: 96, align: "right" }), e.showTag && d.push({ title: "Tag", name: "tag", sortable: !1 }), d.push({ title: "Message", name: "message", sortable: !1 }), d; }); return (d, f) => (h(), Z(Qo, { modelValue: n.value, "onUpdate:modelValue": f[0] || (f[0] = (m) => n.value = m), class: "oui-log", name: "log-table", selectable: "", data: r.value, columns: u.value, "row-height": 23, "row-attrs": (m) => ({ style: `background: ${m.background}` }), header: !1, "scroll-to-end": !0, resizeable: !1 }, { "col-time": te(({ item: m }) => [ P("span", Go, I(m.diff ? m.timeDiffString : ""), 1) ]), "col-tag": te(({ item: m }) => [ P("span", { style: Ae({ color: m.color, whiteSpace: "pre", fontWeight: 600 }) }, I(m.name), 5) ]), "col-message": te(({ item: m }) => [ P("span", null, [ (h(!0), C(X, null, ue(m.message, (k, w) => (h(), C(X, { key: k }, [ x(mo)(k) ? (h(), C(X, { key: 0 }, [ w % 2 !== 0 ? (h(), C("b", Jo, I(k.slice(0, 255)), 1)) : (h(), C("span", Zo, I(k.slice(0, 255)), 1)) ], 64)) : (h(), C("span", es, "<" + I((k == null ? void 0 : k.__class) ?? typeof k) + ">", 1)), f[1] || (f[1] = J(" " + I(" "))) ], 64))), 128)) ]) ]), _: 1 }, 8, ["modelValue", "data", "columns", "row-attrs"])); } }), ts = [ "a[href]", "area[href]", "input:not([disabled])", "select:not([disabled])", "textarea:not([disabled])", "button:not([disabled])", "iframe", "object", "embed", "*[tabindex]", "*[contenteditable]" ]; let ht; function ns(t) { return t ? (ht == null && (ht = ts.join(",")), Array.from(t.querySelectorAll(ht)) || []) : []; } let _t; function os(t, { value: e = !0 }) { e && t && (_t = (n) => { const s = ns(t), o = document.querySelector(":focus"); let a = s.findIndex((l) => l.isSameNode(o)); const r = s.length; n.key === "Tab" && (n.preventDefault(), n.shiftKey ? (--a, a <= 0 && (a = r - 1)) : (++a, a >= r && (a = 0)), s[a].focus()); }, t.addEventListener("keydown", _t)); } function ss(t) { t == null || t.removeEventListener("keydown", _t); } const pn = { beforeMount: os, unMount: ss }, as = { key: 0, class: "oui-notice-icon" }, rs = { key: 1, class: "oui-notice-title" }, is = { key: 2, class: "oui-notice-message" }, ls = { key: 1, class: "oui-notice" }, us = { key: 0, class: "oui-notice-icon" }, cs = { key: 1, class: "oui-notice-title" }, ds = { key: 2, class: "oui-notice-message" }, hi = /* @__PURE__ */ F({ inheritAttrs: !1, __name: "oui-notice", props: { title: {}, cover: { type: Boolean } }, setup(t) { const e = H(); return le(e, (n) => { n && (n.querySelector("._focus") ?? n.querySelector("input,button,select") ?? n).focus(); }, { immediate: !0 }), (n, s) => n.cover ? (h(), Z(Pe, { key: 0, to: "body", disabled: !n.cover }, [ me((h(), C("div", { ref_key: "root", ref: e, class: "oui-notice _notice_cover _keyboard_aware_height", "data-noscroll": "true" }, [ P("div", ne({ class: "oui-notice-body" }, n.$attrs), [ n.$slots.icon ? (h(), C("div", as, [ K(n.$slots, "icon") ])) : z("", !0), n.$slots.title || n.title ? (h(), C("div", rs, [ K(n.$slots, "title", {}, () => [ J(I(n.title), 1) ]) ])) : z("", !0), n.$slots.default ? (h(), C("div", is, [ K(n.$slots, "default") ])) : z("", !0) ], 16) ])), [ [x(pn)] ]) ], 8, ["disabled"])) : (h(), C("div", ls, [ P("div", ne({ class: "oui-notice-body" }, n.$attrs), [ n.$slots.icon ? (h(), C("div", us, [ K(n.$slots, "icon") ])) : z("", !0), n.$slots.title || n.title ? (h(), C("div", cs, [ K(n.$slots, "title", {}, () => [ J(I(n.title), 1) ]) ])) : z("", !0), n.$slots.default ? (h(), C("div", ds, [ K(n.$slots, "default") ])) : z("", !0) ], 16) ])); } }), fs = ["data-score"], ps = /* @__PURE__ */ F({ inheritAttrs: !1, __name: "oui-password-meter", props: { value: {} }, setup(t) { const e = t, n = ee(() => s(e.value ?? "")); function s(o) { let a = 0, r = 0, l = 0, u = 0, d = 0; const f = /[^A-Z0-9]/i, m = /.*[a-z].*/, k = /.*[A-Z].*/, w = /.*\d.*/, g = /(\w)\1\1\1\1/, M = f.test(o), R = m.test(o), E = k.test(o), _ = w.test(o), b = g.test(o); return o.length > 4 && ((R || E) && _ && (d = 1), E && R && (u = 1), (R || E || _) && M && (l = 1), o.length > 8 && (r = 1), o.length > 12 && !b && (r = 2), o.length > 25 && !b && (r = 3), a = r + l + u + d, a > 4 && (a = 4)), a; } return (o, a) => (h(), C("div", { class: "oui-password-strength", "data-score": n.value }, null, 8, fs)); } }), ms = { class: "oui-password" }, vs = { key: 0, 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", class: "lucide lucide-eye-off" }, hs = { key: 1, 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", class: "lucide lucide-eye" }, gi = /* @__PURE__ */ F({ inheritAttrs: !1, __name: "oui-password", props: /* @__PURE__ */ oe({ showMeter: { type: Boolean, default: !0 }, showVisibility: { type: Boolean, default: !0 }, placeholder: {}, title: {}, description: {}, required: { type: Boolean }, id: {} }, { modelValue: { required: !0 }, modelModifiers: {} }), emits: ["update:modelValue"], setup(t) { const e = re(t, "modelValue"), n = H(!1); return (s, o) => (h(), Z(Be, { id: s.id, title: s.title, description: s.description, required: s.required }, { default: te(() => [ P("div", ms, [ pe(dn, ne({ id: s.id, modelValue: e.value, "onUpdate:modelValue": o[1] || (o[1] = (a) => e.value = a), type: n.value ? "text" : "password", placeholder: s.placeholder }, s.$attrs), { end: te(() => [ s.showVisibility ? (h(), C("button", { key: 0, onClick: o[0] || (o[0] = (a) => n.value = !n.value) }, [ n.value ? (h(), C("svg", vs, o[2] || (o[2] = [ P("path", { d: "M9.88 9.88a3 3 0 1 0 4.24 4.24" }, null, -1), P("path", { d: "M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68" }, null, -1), P("path", { d: "M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61" }, null, -1), P("line", { x1: "2", x2: "22", y1: "2", y2: "22" }, null, -1) ]))) : z("", !0), n.value ? z("", !0) : (h(), C("svg", hs, o[3] || (o[3] = [ P("path", { d: "M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z" }, null, -1), P("circle", { cx: "12", cy: "12", r: "3" }, null, -1) ]))) ])) : z("", !0) ]), _: 1 }, 16, ["id", "modelValue", "type", "placeholder"]), s.showMeter !== !1 ? (h(), Z(ps, { key: 0, value: e.value }, null, 8, ["value"])) : z("", !0) ]) ]), _: 1 }, 8, ["id", "title", "description", "required"])); } }); function gs() { const t = function(_, b) { let c = _; const y = n[b]; let p = null, i = 0, T = null; const B = [], S = {}, q = function(L, O) { i = c * 4 + 17, p = function(A) { const D = new Array(A); for (let V = 0; V < A; V += 1) { D[V] = new Array(A); for (let N = 0; N < A; N += 1) D[V][N] = null; } return D; }(i), U(0, 0), U(i - 7, 0), U(0, i - 7), G(), ce(), ie(L, O), c >= 7 && se(L), T == null && (T = On(c, y, B)), de(T, O); }; var U = function(L, O) { for (let A = -1; A <= 7; A += 1) if (!(L + A <= -1 || i <= L + A)) for (let D = -1; D <= 7; D += 1) O + D <= -1 || i <= O + D || (A >= 0 && A <= 6 && (D == 0 || D == 6) || D >= 0 && D <= 6 && (A == 0 || A == 6) || A >= 2 && A <= 4 && D >= 2 && D <= 4 ? p[L + A][O + D] = !0 : p[L + A][O + D] = !1); }; const Q = function() { let L = 0, O = 0; for (let A = 0; A < 8; A += 1) { q(!0, A); const D = o.getLostPoint(S); (A == 0 || L > D) && (L = D, O = A); } return O; }; var ce = function() { for (let L = 8; L < i - 8; L += 1) p[L][6] == null && (p[L][6] = L % 2 == 0); for (let L = 8; L < i - 8; L += 1) p[6][L] == null && (p[6][L] = L % 2 == 0); }, G = function() { const L = o.getPatternPosition(c); for (let O = 0; O < L.length; O += 1) for (let A = 0; A < L.length; A += 1) { const D = L[O], V = L[A]; if (p[D][V] == null) for (let N = -2; N <= 2; N += 1) for (let W = -2; W <= 2; W += 1) N == -2 || N == 2 || W == -2 || W == 2 || N == 0 && W == 0 ? p[D + N][V + W] = !0 : p[D + N][V + W] = !1; } }, se = function(L) { const O = o.getBCHTypeNumber(c); for (var A = 0; A < 18; A += 1) { var D = !L && (O >> A & 1) == 1; p[Math.floor(A / 3)][A % 3 + i - 8 - 3] = D; } for (var A = 0; A < 18; A += 1) { var D = !L && (O >> A & 1) == 1; p[A % 3 + i - 8 - 3][Math.floor(A / 3)] = D; } }, ie = function(L, O) { const A = y << 3 | O, D = o.getBCHTypeInfo(A); for (var V = 0; V < 15; V += 1) { var N = !L && (D >> V & 1) == 1; V < 6 ? p[V][8] = N : V < 8 ? p[V + 1][8] = N : p[i - 15 + V][8] = N; } for (var V = 0; V < 15; V += 1) { var N = !L && (D >> V & 1) == 1; V < 8 ? p[8][i - V - 1] = N : V < 9 ? p[8][15 - V - 1 + 1] = N : p[8][15 - V - 1] = N; } p[i - 8][8] = !L; }, de = function(L, O) { let A = -1, D = i - 1, V = 7, N = 0; const W = o.getMaskFunction(O); for (let j = i - 1; j > 0; j -= 2) for (j == 6 && (j -= 1); ; ) { for (let Y = 0; Y < 2; Y += 1) if (p[D][j - Y] == null) { let fe = !1; N < L.length && (fe = (L[N] >>> V & 1) == 1), W(D, j - Y) && (fe = !fe), p[D][j - Y] = fe, V -= 1, V == -1 && (N += 1, V = 7); } if (D += A, D < 0 || i <= D) { D -= A, A = -A; break; } } }; const ft = function(L, O) { let A = 0, D = 0, V = 0; const N = Array.from({ length: O.length }), W = Array.from({ length: O.length }); for (var j = 0; j < O.length; j += 1) { const he = O[j].dataCount, Ft = O[j].totalCount - he; D = Math.max(D, he), V = Math.max(V, Ft), N[j] = new Array(he); for (var Y = 0; Y < N[j].length; Y += 1) N[j][Y] = 255 & L.getBuffer()[Y + A]; A += he; const pt = o.getErrorCorrectPolynomial(Ft), Ut = r(N[j], pt.getLength() - 1).mod(pt); W[j] = Array.from({ length: pt.getLength() - 1 }); for (var Y = 0; Y < W[j].length; Y += 1) { const Ht = Y + Ut.getLength() - W[j].length; W[j][Y] = Ht >= 0 ? Ut.getAt(Ht) : 0; } } let fe = 0; for (var Y = 0; Y < O.length; Y += 1) fe += O[Y].totalCount; const ae = new Array(fe); let ye = 0; for (var Y = 0; Y < D; Y += 1) for (var j = 0; j < O.length; j += 1) Y < N[j].length && (ae[ye] = N[j][Y], ye += 1); for (var Y = 0; Y < V; Y += 1) for (var j = 0; j < O.length; j += 1) Y < W[j].length && (ae[ye] = W[j][Y], ye += 1); return ae; }; var On = function(L, O, A) { const D = l.getRSBlocks(L, O), V = u(); for (var N = 0; N < A.length; N += 1) { const j = A[N]; V.put(j.getMode(), 4), V.put( j.getLength(), o.getLengthInBits(j.getMode(), L) ), j.write(V); } let W = 0; for (var N = 0; N < D.length; N += 1) W += D[N].dataCount; if (V.getLengthInBits() > W * 8) throw `code length overflow. (${V.getLengthInBits()}>${W * 8})`; for (V.getLengthInBits() + 4 <= W * 8 && V.put(0, 4); V.getLengthInBits() % 8 != 0; ) V.putBit(!1); for (; !(V.getLengthInBits() >= W * 8 || (V.put(236, 8), V.getLengthInBits() >= W * 8)); ) V.put(17, 8); return ft(V, D); }; S.addData = function(L, O) { O = O || "Byte"; let A = null; switch (O) { case "Numeric": A = d(L); break; case "Alphanumeric": A = f(L); break; case "Byte": A = m(L); break; case "Kanji": A = k(L); break; default: throw `mode:${O}`; } B.push(A), T = null; }, S.isDark = function(L, O) { if (L < 0 || i <= L || O < 0 || i <= O) throw `${L},${O}`; return p[L][O]; }, S.getModuleCount = function() { return i; }, S.make = function() { if (c < 1) { let O = 1; for (; O < 40; O++) { const A = l.getRSBlocks( O, y ), D = u(); for (var L = 0; L < B.length; L++) { const N = B[L]; D.put(N.getMode(), 4), D.put( N.getLength(), o.getLengthInBits(N.getMode(), O) ), N.write(D); } let V = 0; for (var L = 0; L < A.length; L++) V += A[L].dataCount; if (D.getLengthInBits() <= V * 8) break; } c = O; } q(!1, Q()); }, S.createTableTag = function(L, O) { L = L || 2, O = typeof O > "u" ? L * 4 : O; let A = ""; A += '<table style="', A += " border-width: 0px; border-style: none;", A += " border-collapse: collapse;", A += ` padding: 0px; margin: ${O}px;`, A += '">', A += "<tbody>"; for (let D = 0; D < S.getModuleCount(); D += 1) { A += "<tr>"; for (let V = 0; V < S.getModuleCount(); V += 1) A += '<td style="', A += " border-width: 0px; border-style: none;", A += " border-collapse: collapse;", A += " padding: 0px; margin: 0px;", A += ` width: ${L}px;`, A += ` height: ${L}px;`, A += " background-color: ", A += S.isDark(D, V) ? "#000000" : "#ffffff", A += ";", A += '"/>'; A += "</tr>"; } return A += "</tbody>", A += "</table>", A; }, S.createSvgTag = function(L, O, A, D) { let V = {}; typeof arguments[0] == "object" && (V = arguments[0], L = V.cellSize, O = V.margin, A = V.alt, D = V.title), L = L || 2, O = typeof O > "u" ? L * 4 : O, A = typeof A == "string" ? { text: A } : A || {}, A.text = A.text || null, A.id = A.text ? A.id || "qrcode-description" : null, D = typeof D == "string" ? { text: D } : D || {}, D.text = D.text || null, D.id = D.text ? D.id || "qrcode-title" : null; const N = S.getModuleCount() * L + O * 2; let W, j, Y, fe, ae = "", ye; for (ye = `l${L},0 0,${L} -${L},0 0,-${L}z `, ae += '<svg version="1.1" xmlns="http://www.w3.org/2000/svg"', ae += V.scalable ? "" : ` width="${N}px" height="${N}px"`, ae += ` viewBox="0 0 ${N} ${N}" `, ae += ' preserveAspectRatio="xMinYMin meet"', ae += D.text || A.text ? ` role="img" aria-labelledby="${Ie([D.id, A.id].join(" ").trim())}"` : "", ae += ">", ae += D.text ? `<title id="${Ie(D.id)}">${Ie(D.text)}</title>` : "", ae += A.text ? `<description id="${Ie(A.id)}">${Ie(A.text)}</description>` : "", ae += '<path d="', Y = 0; Y < S.getModuleCount(); Y += 1) for (fe = Y * L + O, W = 0; W < S.getModuleCount(); W += 1) S.isDark(Y, W) && (j = W * L + O, ae += `M${j},${fe}${ye}`); return ae += '" stroke="transparent" fill="currentColor"/>', ae += "</svg>", ae; }, S.createDataURL = function(L, O) { L = L || 2, O = typeof O > "u" ? L * 4 : O; const A = S.getModuleCount() * L + O * 2, D = O, V = A - O; return E(A, A, (N, W) => { if (D <= N && N < V && D <= W && W < V) { const j = Math.floor((N - D) / L), Y = Math.floor((W - D)