UNPKG

bootstrap-vue-3

Version:

Early (but lovely) implementation of Vue 3, Bootstrap 5 and Typescript

1,402 lines (1,401 loc) 214 kB
var ol = Object.defineProperty; var sl = (e, t, a) => t in e ? ol(e, t, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[t] = a; var fe = (e, t, a) => (sl(e, typeof t != "symbol" ? t + "" : t, a), a); import { computed as u, Comment as rl, reactive as Ie, inject as Fe, onMounted as ge, onBeforeUnmount as ot, ref as W, toRef as o, onActivated as Ft, watch as re, nextTick as Oe, defineComponent as A, provide as Me, openBlock as d, createElementBlock as b, unref as s, normalizeClass as F, renderSlot as y, createBlock as z, resolveDynamicComponent as J, withCtx as L, createElementVNode as H, withDirectives as Ke, createTextVNode as Y, toDisplayString as q, createVNode as be, Fragment as le, createCommentVNode as M, normalizeStyle as ze, useSlots as He, mergeProps as U, getCurrentInstance as il, renderList as ie, resolveComponent as Ot, normalizeProps as Ce, h as Q, Transition as ul, onUnmounted as dl, isReactive as cl, useAttrs as sa, withModifiers as st, isRef as Je, vModelCheckbox as fl, vModelRadio as vl, vModelSelect as bl, guardReactiveProps as Ve, Teleport as ml, createSlots as ra } from "vue"; import { Collapse as gl, Popover as $t, Tooltip as gt, Alert as pl, Carousel as hl, Dropdown as yl, Modal as Bl, Offcanvas as $l } from "bootstrap"; const kl = (e) => u( () => e.value === "center" ? "justify-content-center" : e.value === "end" ? "justify-content-end" : "justify-content-start" ), rt = (e, t) => Object.keys(e).filter((a) => !t.includes(a)).reduce((a, l) => ({ ...a, [l]: e[l] }), {}), Ee = () => ({ enumerable: !0, configurable: !1, writable: !1 }), at = (e) => Array.isArray(e) ? e.map((t) => at(t)) : e instanceof Date ? new Date(e.getTime()) : e && typeof e == "object" ? Object.getOwnPropertyNames(e).reduce((t, a) => { var l; return Object.defineProperty(t, a, (l = Object.getOwnPropertyDescriptor(e, a)) != null ? l : {}), t[a] = at(e[a]), t; }, Object.create(Object.getPrototypeOf(e))) : e, kt = (e) => new Promise((t) => t(at(e))); class it { constructor(t, a = {}) { fe(this, "cancelable", !0); fe(this, "componentId", null); fe(this, "defaultPrevented", !1); fe(this, "nativeEvent", null); fe(this, "preventDefault"); fe(this, "relatedTarget", null); fe(this, "target", null); fe(this, "eventType", ""); fe(this, "vueTarget", null); if (!t) throw new TypeError( `Failed to construct '${this.constructor.name}'. 1 argument required, ${arguments.length} given.` ); Object.assign(this, it.Defaults, this.constructor.Defaults, a, { eventType: t }), Object.defineProperties(this, { type: Ee(), cancelable: Ee(), nativeEvent: Ee(), target: Ee(), relatedTarget: Ee(), vueTarget: Ee(), componentId: Ee() }); let l = !1; this.preventDefault = function() { this.cancelable && (l = !0); }, Object.defineProperty(this, "defaultPrevented", { enumerable: !0, get() { return l; } }); } static get Defaults() { return { eventType: "", cancelable: !0, nativeEvent: null, target: null, relatedTarget: null, vueTarget: null, componentId: null }; } } const Sl = (e) => e !== null && typeof e == "object", ia = (e) => /^[0-9]*\.?[0-9]+$/.test(String(e)), ua = (e) => Object.prototype.toString.call(e) === "[object Object]", da = /_/g, ca = /([a-z])([A-Z])/g, Cl = /(\s|^)(\w)/g, wl = /(\s|^)(\w)/, Ze = /\s+/, Tl = /^#/, Vl = /^#[A-Za-z]+[\w\-:.]*$/, St = (e, t = 2) => typeof e == "string" ? e : e == null ? "" : Array.isArray(e) || ua(e) && e.toString === Object.prototype.toString ? JSON.stringify(e, null, t) : String(e), Rt = (e) => e.replace(da, " ").replace(ca, (t, a, l) => `${a} ${l}`).replace(wl, (t, a, l) => a + l.toUpperCase()), jt = (e) => e.replace(da, " ").replace(ca, (t, a, l) => `${a} ${l}`).replace(Cl, (t, a, l) => a + l.toUpperCase()), _l = (e) => { const t = e.trim(); return t.charAt(0).toUpperCase() + t.slice(1); }, pt = (e) => `\\${e}`, xl = (e) => { e = St(e); const { length: t } = e, a = e.charCodeAt(0); return e.split("").reduce((l, n, i) => { const c = e.charCodeAt(i); return c === 0 ? `${l}\uFFFD` : c === 127 || c >= 1 && c <= 31 || i === 0 && c >= 48 && c <= 57 || i === 1 && c >= 48 && c <= 57 && a === 45 ? l + pt(`${c.toString(16)} `) : i === 0 && c === 45 && t === 1 ? l + pt(n) : c >= 128 || c === 45 || c === 95 || c >= 48 && c <= 57 || c >= 65 && c <= 90 || c >= 97 && c <= 122 ? l + n : l + pt(n); }, ""); }, fa = typeof window < "u", va = typeof document < "u", Al = typeof navigator < "u", Il = fa && va && Al, ba = va ? document : {}, Pe = (e) => !!(e && e.nodeType === Node.ELEMENT_NODE), Fl = (e) => Pe(e) ? e.getBoundingClientRect() : null, Ol = (e = []) => { const { activeElement: t } = document; return t && !e.some((a) => a === t) ? t : null; }, zl = (e) => Pe(e) && e === Ol(), Pl = (e, t = {}) => { try { e.focus(t); } catch (a) { console.error(a); } return zl(e); }, Nl = (e, t) => t && Pe(e) && e.getAttribute(t) || null, Ll = (e) => { if (Nl(e, "display") === "none") return !1; const t = Fl(e); return !!(t && t.height > 0 && t.width > 0); }, Mt = (e, t) => !e || e(t).filter((a) => a.type !== rl).length < 1, El = (e, t) => (Pe(t) ? t : ba).querySelector(e) || null, Hl = (e, t) => Array.from([(Pe(t) ? t : ba).querySelectorAll(e)]), ma = (e, t) => t && Pe(e) ? e.getAttribute(t) : null, Dl = (e, t, a) => { t && Pe(e) && e.setAttribute(t, a); }, ql = (e, t) => { t && Pe(e) && e.removeAttribute(t); }, Rl = (e, t) => St(e).toLowerCase() === St(t).toLowerCase(), Ye = fa ? window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || window.oRequestAnimationFrame || ((e) => setTimeout(e, 16)) : (e) => setTimeout(e, 0), ut = (e, t, a) => t.concat(["sm", "md", "lg", "xl", "xxl"]).reduce((l, n) => (l[e ? `${e}${n.charAt(0).toUpperCase() + n.slice(1)}` : n] = a, l), /* @__PURE__ */ Object.create(null)), ga = (e, t, a, l = a) => Object.keys(t).reduce((n, i) => (e[i] && n.push( [l, i.replace(a, ""), e[i]].filter((c) => c && typeof c != "boolean").join("-").toLowerCase() ), n), []), Ae = (e = "") => `__BVID__${Math.random().toString().slice(2, 8)}___BV_${e}__`, dt = (e, t) => e === !0 || e === "true" || e === "" ? "true" : e === "grammar" || e === "spelling" ? e : t === !1 ? "true" : e === !1 || e === "false" ? "false" : void 0, ht = (e) => !!e && typeof e == "object" && e.constructor === Object, Ct = (e, t, a = !0) => { const l = e instanceof Date && typeof e.getMonth == "function" ? new Date(e.getTime()) : Object.assign({}, e); return ht(e) && ht(t) && Object.keys(t).forEach((n) => { ht(t[n]) ? n in e ? l[n] = Ct(e[n], t[n], a) : Object.assign(l, { [n]: t[n] }) : Array.isArray(t[n]) && Array.isArray(e[n]) ? Object.assign(l, { [n]: a ? e[n].concat( t[n].filter((i) => !e[n].includes(i)) ) : t[n] }) : Object.assign(l, { [n]: t[n] }); }), l; }, ke = (e, t = {}, a = {}) => { const l = [e]; let n; for (let i = 0; i < l.length && !n; i++) { const c = l[i]; n = a[c]; } return n && typeof n == "function" ? n(t) : n; }, je = (e, t = NaN) => Number.isInteger(e) ? e : t, jl = (e, t = NaN) => { const a = parseInt(e, 10); return Number.isNaN(a) ? t : a; }, zt = (e, t = NaN) => { const a = Number.parseFloat(e.toString()); return Number.isNaN(a) ? t : a; }, Gt = (e, t) => t + (e ? _l(e) : ""), Pt = (e, t) => (Array.isArray(t) ? t.slice() : Object.keys(t)).reduce( (a, l) => (a[l] = e[l], a), {} ), Ml = (e) => typeof e == "boolean" ? e : e === "" ? !0 : e === "true", We = (e) => !!(e.href || e.to); function r(e) { return u(() => e.value === void 0 ? void 0 : Ml(e.value)); } const pa = Symbol(), ha = { items: Ie([]), reset() { this.items = Ie([]); } }, Gl = (e) => { e.provide(pa, ha); }, Ul = () => { const e = Fe(pa); return e || ha; }, ve = (e, t, a) => { ge(() => { var l; (l = e == null ? void 0 : e.value) == null || l.addEventListener(t, a); }), ot(() => { var l; (l = e == null ? void 0 : e.value) == null || l.removeEventListener(t, a); }); }, ya = (e) => u(() => ({ "form-check": !e.plain && !e.button, "form-check-inline": e.inline, "form-switch": e.switch, [`form-control-${e.size}`]: e.size && e.size !== "md" })), Ba = (e) => u(() => ({ "form-check-input": !e.plain && !e.button, "is-valid": e.state === !0, "is-invalid": e.state === !1, "btn-check": e.button })), $a = (e) => u(() => ({ "form-check-label": !e.plain && !e.button, btn: e.button, [`btn-${e.buttonVariant}`]: e.button, [`btn-${e.size}`]: e.button && e.size && e.size !== "md" })), ka = (e) => u(() => { var t; return { "aria-invalid": dt(e.ariaInvalid, e.state), "aria-required": ((t = e.required) == null ? void 0 : t.toString()) === "true" ? "true" : null }; }), Sa = (e) => u(() => ({ "was-validated": e.validated, "btn-group": e.buttons && !e.stacked, "btn-group-vertical": e.stacked, [`btn-group-${e.size}`]: e.size })), lt = (e, t, a) => e.reduce( (l, n) => n.type.toString() === "Symbol(Fragment)" ? l.concat(n.children) : l.concat([n]), [] ).filter((l) => (l.type.__name || l.type.name) === t).map((l) => { const n = (l.children.default ? l.children.default() : []).find( (i) => i.type.toString() === "Symbol(Text)" ); return { props: { disabled: a, ...l.props }, text: n ? n.children : "" }; }), Ca = (e, t) => typeof e == "string" ? { props: { value: e, disabled: t.disabled }, text: e } : { props: { value: e[t.valueField], disabled: t.disabled || e[t.disabledField], ...e.props }, text: e[t.textField], html: e[t.htmlField] }, wa = (e, t, a, l, n) => ({ ...e, props: { "button-variant": a.buttonVariant, form: a.form, name: l.value, id: `${n.value}_option_${t}`, button: a.buttons, state: a.state, plain: a.plain, size: a.size, inline: !a.stacked, required: a.required, ...e.props } }), he = (e, t) => u(() => (e == null ? void 0 : e.value) || Ae(t)), Ta = { ariaInvalid: { type: [Boolean, String], default: void 0 }, autocomplete: { type: String, required: !1 }, autofocus: { type: Boolean, default: !1 }, disabled: { type: Boolean, default: !1 }, form: { type: String, required: !1 }, formatter: { type: Function, required: !1 }, id: { type: String, required: !1 }, lazy: { type: Boolean, default: !1 }, lazyFormatter: { type: Boolean, default: !1 }, list: { type: String, required: !1 }, modelValue: { type: [String, Number], default: "" }, name: { type: String, required: !1 }, number: { type: Boolean, default: !1 }, placeholder: { type: String, required: !1 }, plaintext: { type: Boolean, default: !1 }, readonly: { type: Boolean, default: !1 }, required: { type: Boolean, default: !1 }, size: { type: String, required: !1 }, state: { type: Boolean, default: null }, trim: { type: Boolean, default: !1 } }, Va = (e, t) => { const a = W(); let l = null, n = !0; const i = he(o(e, "id"), "input"), c = (h, C, B = !1) => (h = String(h), typeof e.formatter == "function" && (!e.lazyFormatter || B) ? (n = !1, e.formatter(h, C)) : h), f = (h) => e.trim ? h.trim() : e.number ? Number.parseFloat(h) : h, v = () => { Oe(() => { var h; e.autofocus && ((h = a.value) == null || h.focus()); }); }; ge(v), ge(() => { a.value && (a.value.value = e.modelValue); }), Ft(v); const m = u( () => { var h; return dt(e.ariaInvalid, (h = e.state) != null ? h : void 0); } ), g = (h) => { const { value: C } = h.target, B = c(C, h); if (B === !1 || h.defaultPrevented) { h.preventDefault(); return; } if (e.lazy) return; const O = f(B); e.modelValue !== O && (l = C, t("update:modelValue", O)), t("input", B); }, $ = (h) => { const { value: C } = h.target, B = c(C, h); if (B === !1 || h.defaultPrevented) { h.preventDefault(); return; } if (!e.lazy) return; l = C, t("update:modelValue", B); const O = f(B); e.modelValue !== O && t("change", B); }, p = (h) => { if (t("blur", h), !e.lazy && !e.lazyFormatter) return; const { value: C } = h.target, B = c(C, h, !0); l = C, t("update:modelValue", B); }, k = () => { var h; e.disabled || (h = a.value) == null || h.focus(); }, V = () => { var h; e.disabled || (h = a.value) == null || h.blur(); }; return re( () => e.modelValue, (h) => { !a.value || (a.value.value = l && n ? l : h, l = null, n = !0); } ), { input: a, computedId: i, computedAriaInvalid: m, onInput: g, onChange: $, onBlur: p, focus: k, blur: V }; }, Re = (e, t) => { if (!e) return e; if (t in e) return e[t]; const a = t.split("."); return Re(e[a[0]], a.splice(1).join(".")); }, yt = (e, t = null, a, l) => { if (Object.prototype.toString.call(e) === "[object Object]") { const n = Re(e, l.valueField), i = Re(e, l.textField), c = Re(e, l.htmlField), f = Re(e, l.disabledField), v = e[l.optionsField] || null; return v !== null ? { label: String(Re(e, l.labelField) || i), options: Nt(v, a, l) } : { value: typeof n > "u" ? t || i : n, text: String(typeof i > "u" ? t : i), html: c, disabled: Boolean(f) }; } return { value: t || e, text: String(e), disabled: !1 }; }, Nt = (e, t, a) => Array.isArray(e) ? e.map((l) => yt(l, null, t, a)) : Object.prototype.toString.call(e) === "[object Object]" ? (console.warn( `[BootstrapVue warn]: ${t} - Setting prop "options" to an object is deprecated. Use the array format instead.` ), Object.keys(e).map((l) => { const n = e[l]; switch (typeof n) { case "object": return yt(n.text, String(n.value), t, a); default: return yt(n, String(l), t, a); } })) : [], Wl = ["id"], _a = Symbol(), Xl = /* @__PURE__ */ A({ __name: "BAccordion", props: { flush: { default: !1 }, free: { default: !1 }, id: null }, setup(e) { const t = e, a = he(o(t, "id"), "accordion"), l = r(o(t, "flush")), n = r(o(t, "free")), i = u(() => ({ "accordion-flush": l.value })); return n.value || Me(_a, a.value.toString()), (c, f) => (d(), b("div", { id: s(a), class: F(["accordion", s(i)]) }, [ y(c.$slots, "default") ], 10, Wl)); } }), xa = /* @__PURE__ */ A({ __name: "BCollapse", props: { accordion: null, id: { default: Ae() }, modelValue: { default: !1 }, tag: { default: "div" }, toggle: { default: !1 }, visible: { default: !1 }, isNav: { default: !1 } }, emits: ["update:modelValue", "show", "shown", "hide", "hidden"], setup(e, { emit: t }) { const a = e, l = r(o(a, "modelValue")), n = r(o(a, "toggle")), i = r(o(a, "visible")), c = r(o(a, "isNav")), f = W(), v = W(), m = u(() => ({ show: l.value, "navbar-collapse": c.value })), g = () => t("update:modelValue", !1); return ve(f, "show.bs.collapse", () => { t("show"), t("update:modelValue", !0); }), ve(f, "hide.bs.collapse", () => { t("hide"), t("update:modelValue", !1); }), ve(f, "shown.bs.collapse", () => t("shown")), ve(f, "hidden.bs.collapse", () => t("hidden")), ge(() => { var $; v.value = new gl(f.value, { parent: a.accordion ? `#${a.accordion}` : void 0, toggle: n.value }), (i.value || l.value) && (t("update:modelValue", !0), ($ = v.value) == null || $.show()); }), re( () => l.value, ($) => { var p, k; $ ? (p = v.value) == null || p.show() : (k = v.value) == null || k.hide(); } ), re( () => i.value, ($) => { var p, k; $ ? (t("update:modelValue", !!$), (p = v.value) == null || p.show()) : (t("update:modelValue", !!$), (k = v.value) == null || k.hide()); } ), ($, p) => (d(), z(J(e.tag), { id: e.id, ref_key: "element", ref: f, class: F(["collapse", s(m)]), "data-bs-parent": e.accordion || null, "is-nav": s(c) }, { default: L(() => [ y($.$slots, "default", { visible: s(l), close: g }) ]), _: 3 }, 8, ["id", "class", "data-bs-parent", "is-nav"])); } }), Kl = { mounted(e, t) { let a = t.value; Object.keys(t.modifiers).length > 0 && ([a] = Object.keys(t.modifiers)), e.setAttribute("data-bs-toggle", "modal"), e.setAttribute("data-bs-target", `#${a}`); } }, Jl = { mounted(e, t) { let a = "right"; const l = []; t.modifiers.left ? a = "left" : t.modifiers.right ? a = "right" : t.modifiers.bottom ? a = "bottom" : t.modifiers.top && (a = "top"), t.modifiers.manual ? l.push("manual") : (t.modifiers.click && l.push("click"), t.modifiers.hover && l.push("hover"), t.modifiers.focus && l.push("focus")), e.setAttribute("data-bs-toggle", "popover"), new $t(e, { trigger: l.length === 0 ? "click" : l.join(" "), placement: a, content: t.value }); }, unmounted(e) { const t = $t.getInstance(e); t == null || t.dispose(); } }, Yl = (e) => { if (e.classList.contains("offcanvas")) return "offcanvas"; if (e.classList.contains("collapse")) return "collapse"; throw Error("Couldn't resolve toggle type"); }, Zl = (e, t) => { const { modifiers: a, arg: l, value: n } = e, i = Object.keys(a || {}), c = typeof n == "string" ? n.split(Ze) : n; if (Rl(t.tagName, "a")) { const f = ma(t, "href") || ""; Vl.test(f) && i.push(f.replace(Tl, "")); } return Array.prototype.concat.apply([], [l, c]).forEach((f) => typeof f == "string" && i.push(f)), i.filter((f, v, m) => f && m.indexOf(f) === v); }, Lt = { mounted(e, t) { const a = Zl(t, e), l = []; let n = "data-bs-target"; e.tagName === "a" && (n = "href"); for (let i = 0; i < a.length; i++) { const c = a[i], f = document.getElementById(c); f && (e.setAttribute("data-bs-toggle", Yl(f)), l.push(`#${c}`)); } l.length > 0 && e.setAttribute(n, l.join(",")); } }, Ql = (e, t) => { if (t != null && t.trigger) return t.trigger; if (e.manual) return "manual"; const a = []; return e.click && a.push("click"), e.hover && a.push("hover"), e.focus && a.push("focus"), a.length > 0 ? a.join(" ") : "hover focus"; }, en = (e, t) => t != null && t.placement ? t.placement : e.left ? "left" : e.right ? "right" : e.bottom ? "bottom" : "top", tn = (e) => e != null && e.delay ? e.delay : 0, Ut = (e) => typeof e == "object" ? e == null ? void 0 : e.title : e, an = { beforeMount(e, t) { e.setAttribute("data-bs-toggle", "tooltip"), e.getAttribute("title") || e.setAttribute("title", Ut(t.value).toString()); const a = /<("[^"]*"|'[^']*'|[^'">])*>/.test(e.title), l = Ql(t.modifiers, t.value), n = en(t.modifiers, t.value), i = tn(t.value), c = e.getAttribute("title"); new gt(e, { trigger: l, placement: n, delay: i, html: a }), c && e.setAttribute("data-bs-original-title", c); }, updated(e, t) { e.getAttribute("title") || e.setAttribute("title", Ut(t.value).toString()); const a = e.getAttribute("title"), l = e.getAttribute("data-bs-original-title"), n = gt.getInstance(e); e.removeAttribute("title"), a && a !== l && (n == null || n.setContent({ ".tooltip-inner": a }), e.setAttribute("data-bs-original-title", a)); }, unmounted(e) { const t = gt.getInstance(e); t == null || t.dispose(); } }, Qe = /* @__PURE__ */ new Map(), Aa = (e) => { if (Qe.has(e)) { const t = Qe.get(e); t && t.stop && t.stop(), Qe.delete(e); } }, Wt = (e, t) => { const a = { margin: "0px", once: !1, callback: t.value }; Object.keys(t.modifiers).forEach((n) => { Number.isInteger(n) ? a.margin = `${n}px` : n.toLowerCase() === "once" && (a.once = !0); }), Aa(e); const l = new nn( e, a.margin, a.once, a.callback, t.instance ); Qe.set(e, l); }, ln = { beforeMount(e, t) { Wt(e, t); }, updated(e, t) { Wt(e, t); }, unmounted(e) { Aa(e); } }; class nn { constructor(t, a, l, n, i) { fe(this, "element"); fe(this, "margin"); fe(this, "once"); fe(this, "callback"); fe(this, "instance"); fe(this, "observer"); fe(this, "doneOnce"); fe(this, "visible"); this.element = t, this.margin = a, this.once = l, this.callback = n, this.instance = i, this.createObserver(); } createObserver() { if (this.observer && this.stop(), !(this.doneOnce || typeof this.callback != "function")) { try { this.observer = new IntersectionObserver(this.handler.bind(this), { root: null, rootMargin: this.margin, threshold: 0 }); } catch { console.error("Intersection Observer not supported"), this.doneOnce = !0, this.observer = void 0, this.callback(null); return; } this.instance.$nextTick(() => { this.observer && this.observer.observe(this.element); }); } } handler(t) { const [a] = t, l = Boolean(a.isIntersecting || a.intersectionRatio > 0); l !== this.visible && (this.visible = l, this.callback(l), this.once && this.visible && (this.doneOnce = !0, this.stop())); } stop() { this.observer && this.observer.disconnect(), this.observer = null; } } const on = { mounted(e, t) { t.value !== !1 && e.focus(); } }, sn = { BModal: Kl, BPopover: Jl, BToggle: Lt, BTooltip: an, BVisible: ln, focus: on }, rn = { class: "accordion-item" }, un = ["id"], dn = ["aria-expanded", "aria-controls"], cn = { class: "accordion-body" }, fn = /* @__PURE__ */ A({ __name: "BAccordionItem", props: { id: null, title: null, visible: { default: !1 } }, setup(e) { const t = e, a = r(o(t, "visible")), l = he(o(t, "id"), "accordion_item"), n = Fe(_a, ""); return (i, c) => (d(), b("div", rn, [ H("h2", { id: `${s(l)}heading`, class: "accordion-header" }, [ Ke((d(), b("button", { class: F(["accordion-button", { collapsed: !s(a) }]), type: "button", "aria-expanded": s(a) ? "true" : "false", "aria-controls": s(l) }, [ y(i.$slots, "title", {}, () => [ Y(q(e.title), 1) ]) ], 10, dn)), [ [s(Lt), void 0, s(l)] ]) ], 8, un), be(xa, { id: s(l), class: "accordion-collapse", visible: s(a), accordion: s(n), "aria-labelledby": `heading${s(l)}` }, { default: L(() => [ H("div", cn, [ y(i.$slots, "default") ]) ]), _: 3 }, 8, ["id", "visible", "accordion", "aria-labelledby"]) ])); } }), vn = ["type", "disabled", "aria-label"], Ge = /* @__PURE__ */ A({ __name: "BCloseButton", props: { ariaLabel: { default: "Close" }, disabled: { default: !1 }, white: { default: !1 }, type: { default: "button" } }, emits: ["click"], setup(e, { emit: t }) { const a = e, l = r(o(a, "disabled")), n = r(o(a, "white")), i = u(() => ({ "btn-close-white": n.value })); return (c, f) => (d(), b("button", { type: e.type, class: F(["btn-close", s(i)]), disabled: s(l), "aria-label": e.ariaLabel, onClick: f[0] || (f[0] = (v) => t("click", v)) }, null, 10, vn)); } }), bn = /* @__PURE__ */ A({ __name: "BAlert", props: { dismissLabel: { default: "Close" }, dismissible: { default: !1 }, fade: { default: !1 }, modelValue: { type: [Boolean, Number], default: !1 }, show: { default: !1 }, variant: { default: "info" } }, emits: ["closed", "close-count-down", "update:modelValue"], setup(e, { emit: t }) { const a = e, l = r(o(a, "dismissible")); r(o(a, "fade")); const n = r(o(a, "show")), i = W(null), c = W(), f = u(() => ({ [`alert-${a.variant}`]: !!a.variant, show: !!a.modelValue, "alert-dismissible": l.value, fade: !!a.modelValue })); let v; const m = (C) => { if (typeof C == "boolean") return 0; const B = je(C, 0); return B > 0 ? B : 0; }, g = () => { v !== void 0 && (clearTimeout(v), v = void 0); }, $ = W(m(a.modelValue)), p = u(() => !!a.modelValue || n.value); ot(() => { var C; g(), (C = c.value) == null || C.dispose(), c.value = void 0; }); const k = u(() => a.modelValue === !0 ? !0 : a.modelValue === !1 || je(a.modelValue, 0) < 1 ? !1 : !!a.modelValue), V = () => { $.value = m(a.modelValue), (k.value || n.value) && !c.value && (c.value = new pl(i.value)); }, h = () => { typeof a.modelValue == "boolean" ? t("update:modelValue", !1) : t("update:modelValue", 0), t("closed"); }; return re(() => a.modelValue, V), re(() => n.value, V), re($, (C) => { g(), typeof a.modelValue != "boolean" && (t("close-count-down", C), C === 0 && a.modelValue > 0 && t("closed"), a.modelValue !== C && t("update:modelValue", C), C > 0 && (v = setTimeout(() => { $.value--; }, 1e3))); }), (C, B) => s(p) ? (d(), b("div", { key: 0, ref_key: "element", ref: i, class: F(["alert", s(f)]), role: "alert" }, [ y(C.$slots, "default"), s(l) ? (d(), b(le, { key: 0 }, [ C.$slots.close ? (d(), b("button", { key: 0, type: "button", "data-bs-dismiss": "alert", onClick: h }, [ y(C.$slots, "close") ])) : (d(), z(Ge, { key: 1, "aria-label": e.dismissLabel, "data-bs-dismiss": "alert", onClick: h }, null, 8, ["aria-label"])) ], 64)) : M("", !0) ], 2)) : M("", !0); } }), Ia = Symbol(), mn = /* @__PURE__ */ A({ __name: "BAvatarGroup", props: { overlap: { default: 0.3 }, rounded: { type: [Boolean, String], default: !1 }, size: null, square: { default: !1 }, tag: { default: "div" }, variant: null }, setup(e) { const t = e, a = r(o(t, "square")), l = u(() => wt(t.size)), n = (f) => typeof f == "string" && ia(f) ? zt(f, 0) : f || 0, i = u( () => Math.min(Math.max(n(t.overlap), 0), 1) / 2 ), c = u(() => { const f = l.value ? `calc(${l.value} * ${i.value})` : null; return f ? { paddingLeft: f, paddingRight: f } : {}; }); return Me(Ia, { overlapScale: i, size: t.size, square: a.value, rounded: t.rounded, variant: t.variant }), (f, v) => (d(), z(J(e.tag), { class: "b-avatar-group", role: "group" }, { default: L(() => [ H("div", { class: "b-avatar-group-inner", style: ze(s(c)) }, [ y(f.$slots, "default") ], 4) ]), _: 3 })); } }), gn = { key: 0, class: "b-avatar-custom" }, pn = { key: 1, class: "b-avatar-img" }, hn = ["src", "alt"], wt = (e) => { const t = typeof e == "string" && ia(e) ? zt(e, 0) : e; return typeof t == "number" ? `${t}px` : t || null; }, yn = /* @__PURE__ */ A({ __name: "BAvatar", props: { alt: { default: "avatar" }, ariaLabel: null, badge: { type: [Boolean, String], default: !1 }, badgeLeft: { default: !1 }, badgeOffset: null, badgeTop: { default: !1 }, badgeVariant: { default: "primary" }, button: { default: !1 }, buttonType: { default: "button" }, disabled: { default: !1 }, icon: null, rounded: { type: [Boolean, String], default: "circle" }, size: null, square: { default: !1 }, src: null, text: null, textVariant: { default: void 0 }, variant: { default: "secondary" } }, emits: ["click", "img-error"], setup(e, { emit: t }) { const a = e, l = r(o(a, "badgeLeft")), n = r(o(a, "badgeTop")), i = r(o(a, "button")), c = r(o(a, "disabled")), f = r(o(a, "square")), v = He(), m = ["sm", null, "lg"], g = 0.4, $ = g * 0.7, p = Fe(Ia, null), k = (ee) => { const Z = ee; return Z === "light" || Z === "warning" ? "dark" : "light"; }, V = u(() => !Mt(v.default)), h = u(() => !Mt(v.badge)), C = u( () => a.badge || a.badge === "" || h.value ), B = u( () => p != null && p.size ? p.size : wt(a.size) ), O = u( () => p != null && p.variant ? p.variant : a.variant ), N = u( () => p != null && p.rounded ? p.rounded : a.rounded ), T = u(() => ({ type: i.value ? a.buttonType : void 0, "aria-label": a.ariaLabel || null, disabled: c.value || null })), x = u(() => ({ [`bg-${a.badgeVariant}`]: !!a.badgeVariant })), I = u(() => a.badge === !0 ? "" : a.badge), j = u(() => `text-${k(a.badgeVariant)}`), _ = u(() => ({ [`b-avatar-${a.size}`]: !!a.size && m.indexOf(wt(a.size)) !== -1, [`bg-${O.value}`]: !!O.value, badge: !i.value && O.value && V.value, rounded: N.value === "" || N.value === !0, ["rounded-circle"]: !f.value && N.value === "circle", ["rounded-0"]: f.value || N.value === "0", ["rounded-1"]: !f.value && N.value === "sm", ["rounded-3"]: !f.value && N.value === "lg", ["rounded-top"]: !f.value && N.value === "top", ["rounded-bottom"]: !f.value && N.value === "bottom", ["rounded-start"]: !f.value && N.value === "left", ["rounded-end"]: !f.value && N.value === "right", btn: i.value, [`btn-${O.value}`]: i.value ? !!O.value : !1 })), w = u(() => `text-${a.textVariant || k(O.value)}`), D = u(() => { const ee = a.badgeOffset || "0px"; return { fontSize: (m.indexOf(B.value || null) === -1 ? `calc(${B.value} * ${$})` : "") || "", top: n.value ? ee : "", bottom: n.value ? "" : ee, left: l.value ? ee : "", right: l.value ? "" : ee }; }), R = u(() => { const ee = m.indexOf(B.value || null) === -1 ? `calc(${B.value} * ${g})` : null; return ee ? { fontSize: ee } : {}; }), ne = u(() => { var Be; const ee = ((Be = p == null ? void 0 : p.overlapScale) == null ? void 0 : Be.value) || 0, Z = B.value && ee ? `calc(${B.value} * -${ee})` : null; return Z ? { marginLeft: Z, marginRight: Z } : {}; }), ae = u(() => i.value ? "button" : "span"), K = u(() => ({ ...ne.value, width: B.value, height: B.value })), de = (ee) => { !c.value && i.value && t("click", ee); }, se = (ee) => t("img-error", ee); return (ee, Z) => (d(), z(J(s(ae)), U({ class: ["b-avatar", s(_)], style: s(K) }, s(T), { onClick: de }), { default: L(() => [ s(V) ? (d(), b("span", gn, [ y(ee.$slots, "default") ])) : e.src ? (d(), b("span", pn, [ H("img", { src: e.src, alt: e.alt, onError: se }, null, 40, hn) ])) : e.text ? (d(), b("span", { key: 2, class: F(["b-avatar-text", s(w)]), style: ze(s(R)) }, q(e.text), 7)) : M("", !0), s(C) ? (d(), b("span", { key: 3, class: F(["b-avatar-badge", s(x)]), style: ze(s(D)) }, [ s(h) ? y(ee.$slots, "badge", { key: 0 }) : (d(), b("span", { key: 1, class: F(s(j)) }, q(s(I)), 3)) ], 6)) : M("", !0) ]), _: 3 }, 16, ["class", "style"])); } }), De = { active: { type: [Boolean, String], default: !1 }, activeClass: { type: String, default: "router-link-active" }, append: { type: [Boolean, String], default: !1 }, disabled: { type: [Boolean, String], default: !1 }, event: { type: [String, Array], default: "click" }, exact: { type: [Boolean, String], default: !1 }, exactActiveClass: { type: String, default: "router-link-exact-active" }, href: { type: String }, rel: { type: String, default: null }, replace: { type: [Boolean, String], default: !1 }, routerComponentName: { type: String, default: "router-link" }, routerTag: { type: String, default: "a" }, target: { type: String, default: "_self" }, to: { type: [String, Object], default: null } }, Bn = A({ props: De, emits: ["click"], setup(e, { emit: t, attrs: a }) { const l = r(o(e, "active")), n = r(o(e, "append")), i = r(o(e, "disabled")), c = r(o(e, "exact")), f = r(o(e, "replace")), v = il(), m = W(null), g = u(() => { const V = e.routerComponentName.split("-").map((C) => C.charAt(0).toUpperCase() + C.slice(1)).join(""); return !((v == null ? void 0 : v.appContext.app.component(V)) !== void 0) || i.value || !e.to ? "a" : e.routerComponentName; }), $ = u(() => { const V = "#"; if (e.href) return e.href; if (typeof e.to == "string") return e.to || V; const h = e.to; if (Object.prototype.toString.call(h) === "[object Object]" && (h.path || h.query || h.hash)) { const C = h.path || "", B = h.query ? `?${Object.keys(h.query).map((N) => `${N}=${h.query[N]}`).join("=")}` : "", O = !h.hash || h.hash.charAt(0) === "#" ? h.hash || "" : `#${h.hash}`; return `${C}${B}${O}` || V; } return V; }), p = u(() => ({ to: e.to, href: $.value, target: e.target, rel: e.target === "_blank" && e.rel === null ? "noopener" : e.rel || null, tabindex: i.value ? "-1" : typeof a.tabindex > "u" ? null : a.tabindex, "aria-disabled": i.value ? "true" : null })); return { tag: g, routerAttr: p, link: m, clicked: (V) => { if (i.value) { V.preventDefault(), V.stopImmediatePropagation(); return; } t("click", V); }, activeBoolean: l, appendBoolean: n, disabledBoolean: i, replaceBoolean: f, exactBoolean: c }; } }), ye = (e, t) => { const a = e.__vccOpts || e; for (const [l, n] of t) a[l] = n; return a; }; function $n(e, t, a, l, n, i) { return e.tag === "router-link" ? (d(), z(J(e.tag), U({ key: 0 }, e.routerAttr, { custom: "" }), { default: L(({ href: c, navigate: f, isActive: v, isExactActive: m }) => [ (d(), z(J(e.routerTag), U({ ref: "link", href: c, class: [ (v || e.activeBoolean) && e.activeClass, (m || e.exactBoolean) && e.exactActiveClass ] }, e.$attrs, { onClick: f }), { default: L(() => [ y(e.$slots, "default") ]), _: 2 }, 1040, ["href", "class", "onClick"])) ]), _: 3 }, 16)) : (d(), z(J(e.tag), U({ key: 1, ref: "link", class: { active: e.activeBoolean, disabled: e.disabledBoolean } }, e.routerAttr, { onClick: e.clicked }), { default: L(() => [ y(e.$slots, "default") ]), _: 3 }, 16, ["class", "onClick"])); } const Se = /* @__PURE__ */ ye(Bn, [["render", $n]]), Xt = rt(De, ["event", "routerTag"]), kn = A({ components: { BLink: Se }, props: { pill: { type: [Boolean, String], default: !1 }, tag: { type: String, default: "span" }, variant: { type: String, default: "secondary" }, textIndicator: { type: [Boolean, String], default: !1 }, dotIndicator: { type: [Boolean, String], default: !1 }, ...Xt }, setup(e) { const t = u(() => We(e)), a = u(() => t.value ? Se : e.tag), l = r(o(e, "pill")), n = r(o(e, "textIndicator")), i = r(o(e, "dotIndicator")); return { classes: u(() => ({ [`bg-${e.variant}`]: e.variant, active: e.active, disabled: e.disabled, "text-dark": ["warning", "info", "light"].includes(e.variant), "rounded-pill": l.value, "position-absolute top-0 start-100 translate-middle": n.value || i.value, "p-2 border border-light rounded-circle": i.value, "text-decoration-none": t.value })), props: t.value ? Pt(e, Xt) : {}, computedTag: a }; } }); function Sn(e, t, a, l, n, i) { return d(), z(J(e.computedTag), U({ class: ["badge", e.classes] }, e.props), { default: L(() => [ y(e.$slots, "default") ]), _: 3 }, 16, ["class"]); } const Cn = /* @__PURE__ */ ye(kn, [["render", Sn]]), Kt = rt(De, ["event", "routerTag"]), wn = A({ components: { BLink: Se }, props: { ...Kt, active: { type: [Boolean, String], default: !1 }, ariaCurrent: { type: String, default: "location" }, disabled: { type: [Boolean, String], default: !1 }, text: { type: String, required: !1 } }, emits: ["click"], setup(e, { emit: t }) { const a = r(o(e, "active")), l = r(o(e, "disabled")), n = u(() => ({ active: a.value })), i = u( () => a.value ? "span" : Se ), c = u( () => a.value ? e.ariaCurrent : void 0 ), f = (v) => { if (l.value || a.value) { v.preventDefault(), v.stopImmediatePropagation(); return; } l.value || t("click", v); }; return { props: i.value !== "span" ? Pt(e, Kt) : {}, liClasses: n, computedTag: i, computedAriaCurrent: c, clicked: f }; } }); function Tn(e, t, a, l, n, i) { return d(), b("li", { class: F(["breadcrumb-item", e.liClasses]) }, [ (d(), z(J(e.computedTag), U({ "aria-current": e.computedAriaCurrent }, e.props, { onClick: e.clicked }), { default: L(() => [ y(e.$slots, "default", {}, () => [ Y(q(e.text), 1) ]) ]), _: 3 }, 16, ["aria-current", "onClick"])) ], 2); } const Fa = /* @__PURE__ */ ye(wn, [["render", Tn]]), Vn = { "aria-label": "breadcrumb" }, _n = { class: "breadcrumb" }, xn = /* @__PURE__ */ A({ __name: "BBreadcrumb", props: { items: null }, setup(e) { const t = e, a = Ul(), l = u(() => { const n = t.items || (a == null ? void 0 : a.items) || []; let i = !1; return n.map((f, v) => (typeof f == "string" && (f = { text: f }, v < n.length - 1 && (f.href = "#")), f.active && (i = !0), !f.active && !i && (f.active = v + 1 === n.length), f)); }); return (n, i) => (d(), b("nav", Vn, [ H("ol", _n, [ y(n.$slots, "prepend"), (d(!0), b(le, null, ie(s(l), (c, f) => (d(), z(Fa, U({ key: f }, c), { default: L(() => [ Y(q(c.text), 1) ]), _: 2 }, 1040))), 128)), y(n.$slots, "default"), y(n.$slots, "append") ]) ])); } }), An = { key: 0, class: "visually-hidden" }, Et = /* @__PURE__ */ A({ __name: "BSpinner", props: { label: null, role: { default: "status" }, small: { default: !1 }, tag: { default: "span" }, type: { default: "border" }, variant: null }, setup(e) { const t = e, a = r(o(t, "small")), l = u(() => ({ "spinner-border": t.type === "border", "spinner-border-sm": t.type === "border" && a.value, "spinner-grow": t.type === "grow", "spinner-grow-sm": t.type === "grow" && a.value, [`text-${t.variant}`]: t.variant !== void 0 })); return (n, i) => (d(), z(J(e.tag), { class: F(s(l)), role: e.label || n.$slots.label ? e.role : null, "aria-hidden": e.label || n.$slots.label ? null : !0 }, { default: L(() => [ e.label || n.$slots.label ? (d(), b("span", An, [ y(n.$slots, "label", {}, () => [ Y(q(e.label), 1) ]) ])) : M("", !0) ]), _: 3 }, 8, ["class", "role", "aria-hidden"])); } }), In = A({ components: { BLink: Se, BSpinner: Et }, props: { ...De, active: { type: [Boolean, String], default: !1 }, disabled: { type: [Boolean, String], default: !1 }, href: { type: String, required: !1 }, pill: { type: [Boolean, String], default: !1 }, pressed: { type: [Boolean, String], default: !1 }, rel: { type: String, default: void 0 }, size: { type: String, default: "md" }, squared: { type: [Boolean, String], default: !1 }, tag: { type: String, default: "button" }, target: { type: String, default: "_self" }, type: { type: String, default: "button" }, variant: { type: String, default: "secondary" }, loading: { type: [Boolean, String], default: !1 }, loadingMode: { type: String, default: "inline" } }, emits: ["click", "update:pressed"], setup(e, { emit: t }) { const a = r(o(e, "active")), l = r(o(e, "disabled")), n = r(o(e, "pill")), i = r(o(e, "pressed")), c = r(o(e, "squared")), f = r(o(e, "loading")), v = u(() => i.value === !0), m = u( () => e.tag === "button" && e.href === void 0 && e.to === null ), g = u(() => We(e)), $ = u(() => e.to !== null), p = u( () => e.href !== void 0 ? !1 : !m.value ), k = u(() => ({ [`btn-${e.variant}`]: !!e.variant, [`btn-${e.size}`]: !!e.size, active: a.value || i.value, "rounded-pill": n.value, "rounded-0": c.value, disabled: l.value })), V = u(() => ({ "aria-disabled": p.value ? l.value : null, "aria-pressed": v.value ? i.value : null, autocomplete: v.value ? "off" : null, disabled: m.value ? l.value : null, href: e.href, rel: g.value ? e.rel : null, role: p.value || g.value ? "button" : null, target: g.value ? e.target : null, type: m.value ? e.type : null, to: m.value ? null : e.to, append: g.value ? e.append : null, activeClass: $.value ? e.activeClass : null, event: $.value ? e.event : null, exact: $.value ? e.exact : null, exactActiveClass: $.value ? e.exactActiveClass : null, replace: $.value ? e.replace : null, routerComponentName: $.value ? e.routerComponentName : null, routerTag: $.value ? e.routerTag : null })), h = u( () => $.value ? Se : e.href ? "a" : e.tag ); return { classes: k, attrs: V, computedTag: h, clicked: (B) => { if (l.value) { B.preventDefault(), B.stopPropagation(); return; } t("click", B), v.value && t("update:pressed", !i.value); }, loadingBoolean: f }; } }); function Fn(e, t, a, l, n, i) { const c = Ot("b-spinner"); return d(), z(J(e.computedTag), U({ class: ["btn", e.classes] }, e.attrs, { onClick: e.clicked }), { default: L(() => [ e.loadingBoolean ? (d(), b("div", { key: 0, class: F(["btn-loading", { "mode-fill": e.loadingMode === "fill", "mode-inline": e.loadingMode === "inline" }]) }, [ y(e.$slots, "loading", {}, () => [ be(c, { class: "btn-spinner", small: e.size !== "lg" }, null, 8, ["small"]) ]) ], 2)) : M("", !0), H("div", { class: F(["btn-content", { "btn-loading-fill": e.loadingBoolean && e.loadingMode === "fill" }]) }, [ y(e.$slots, "default") ], 2) ]), _: 3 }, 16, ["class", "onClick"]); } const Xe = /* @__PURE__ */ ye(In, [["render", Fn]]), On = /* @__PURE__ */ A({ __name: "BButtonGroup", props: { ariaLabel: { default: "Group" }, size: null, tag: { default: "div" }, vertical: { default: !1 } }, setup(e) { const t = e, a = r(o(t, "vertical")), l = u(() => ({ "btn-group": !a.value && t.size === void 0, [`btn-group-${t.size}`]: t.size !== void 0, "btn-group-vertical": a.value })); return (n, i) => (d(), z(J(e.tag), { class: F(s(l)), role: "group", "aria-label": e.ariaLabel }, { default: L(() => [ y(n.$slots, "default") ]), _: 3 }, 8, ["class", "aria-label"])); } }), zn = ["role", "aria-label"], Pn = /* @__PURE__ */ A({ __name: "BButtonToolbar", props: { ariaLabel: { default: "Group" }, justify: { default: !1 }, role: { default: "toolbar" } }, setup(e) { const a = r(o(e, "justify")), l = u(() => ({ "justify-content-between": a.value })); return (n, i) => (d(), b("div", { class: F([s(l), "btn-toolbar"]), role: e.role, "aria-label": e.ariaLabel }, [ y(n.$slots, "default") ], 10, zn)); } }), Ht = /* @__PURE__ */ A({ __name: "BImg", props: { alt: null, blank: { default: !1 }, blankColor: { default: "transparent" }, block: { default: !1 }, center: { default: !1 }, fluid: { default: !1 }, lazy: { default: !1 }, fluidGrow: { default: !1 }, height: null, left: { default: !1 }, start: { default: !1 }, right: { default: !1 }, end: { default: !1 }, rounded: { type: [Boolean, String], default: !1 }, sizes: null, src: null, srcset: null, thumbnail: { default: !1 }, width: null }, emits: ["load"], setup(e, { emit: t }) { const a = e, l = r(o(a, "lazy")), n = r(o(a, "blank")), i = r(o(a, "block")), c = r(o(a, "center")), f = r(o(a, "fluid")), v = r(o(a, "fluidGrow")), m = r(o(a, "left")), g = r(o(a, "start")), $ = r(o(a, "right")), p = r(o(a, "end")), k = r(o(a, "thumbnail")), V = '<svg width="%{w}" height="%{h}" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 %{w} %{h}" preserveAspectRatio="none"><rect width="100%" height="100%" style="fill:%{f};"></rect></svg>', h = (j, _, w) => `data:image/svg+xml;charset=UTF-8,${encodeURIComponent( V.replace("%{w}", String(j)).replace("%{h}", String(_)).replace("%{f}", w) )}`, C = u( () => typeof a.srcset == "string" ? a.srcset.split(",").filter((j) => j).join(",") : Array.isArray(a.srcset) ? a.srcset.filter((j) => j).join(",") : void 0 ), B = u( () => typeof a.sizes == "string" ? a.sizes.split(",").filter((j) => j).join(",") : Array.isArray(a.sizes) ? a.sizes.filter((j) => j).join(",") : void 0 ), O = u(() => { const j = (D) => D === void 0 ? void 0 : typeof D == "number" ? D : Number.parseInt(D, 10) || void 0, _ = j(a.width), w = j(a.height); if (n.value) { if (_ !== void 0 && w === void 0) return { height: _, width: _ }; if (_ === void 0 && w !== void 0) return { height: w, width: w }; if (_ === void 0 && w === void 0) return { height: 1, width: 1 }; } return { width: _, height: w }; }), N = u( () => h(O.value.width, O.value.height, a.blankColor) ), T = u(() => ({ src: n.value ? N.value : a.src, alt: a.alt, width: O.value.width || void 0, height: O.value.height || void 0, srcset: n.value ? void 0 : C.value, sizes: n.value ? void 0 : B.value, loading: l.value ? "lazy" : "eager" })), x = u( () => m.value || g.value ? "float-start" : $.value || p.value ? "float-end" : c.value ? "mx-auto" : void 0 ), I = u(() => ({ "img-thumbnail": k.value, "img-fluid": f.value || v.value, "w-100": v.value, rounded: a.rounded === "" || a.rounded === !0, [`rounded-${a.rounded}`]: typeof a.rounded == "string" && a.rounded !== "", [`${x.value}`]: x.value !== void 0, "d-block": i.value || c.value })); return (j, _) => (d(), b("img", U({ class: s(I) }, s(T), { onLoad: _[0] || (_[0] = (w) => t("load", w)) }), null, 16)); } }), Tt = /* @__PURE__ */ A({ __name: "BCardImg", props: { alt: null, bottom: { default: !1 }, end: { default: !1 }, height: null, left: { default: !1 }, right: { default: !1 }, src: null, lazy: { default: !1 }, start: { default: !1 }, top: { default: !1 }, width: null, blank: { default: !1 }, blankColor: null, sizes: null, srcset: null }, emits: ["load"], setup(e, { emit: t }) { const a = e, l = r(o(a, "bottom")), n = r(o(a, "end")), i = r(o(a, "left")), c = r(o(a, "right")), f = r(o(a, "start")), v = r(o(a, "top")), m = u( () => v.value ? "card-img-top" : c.value || n.value ? "card-img-right" : l.value ? "card-img-bottom" : i.value || f.value ? "card-img-left" : "card-img" ), g = u(() => ({ alt: a.alt, height: a.height, src: a.src, lazy: a.lazy, width: a.width, blank: a.blank, blankColor: a.blankColor, sizes: a.sizes, srcset: a.srcset })), $ = u(() => [m.value]); return (p, k) => (d(), z(Ht, U({ class: s($) }, s(g), { onLoad: k[0] || (k[0] = (V) => t("load", V)) }), null, 16, ["class"])); } }), Nn = ["innerHTML"], Oa = /* @__PURE__ */ A({ __name: "BCardHeadFoot", props: { text: null, bgVariant: null, borderVariant: null, html: null, tag: { default: "div" }, textVariant: null }, setup(e) { const t = e, a = u(() => ({ [`text-${t.textVariant}`]: t.textVariant !== void 0, [`bg-${t.bgVariant}`]: t.bgVariant !== void 0, [`border-${t.borderVariant}`]: t.borderVariant !== void 0 })); return (l, n) => (d(), z(J(e.tag), { class: F(s(a)) }, { default: L(() => [ e.html ? (d(), b("div", { key: 0, innerHTML: e.html }, null, 8, Nn)) : y(l.$slots, "default", { key: 1 }, () => [ Y(q(e.text), 1) ]) ]), _: 3 }, 8, ["class"])); } }), za = /* @__PURE__ */ A({ __name: "BCardHeader", props: { text: null, bgVariant: null, borderVariant: null, html: null, tag: { default: "div" }, textVariant: null }, setup(e) { return (t, a) => (d(), z(Oa, U({ class: "card-header" }, t.$props), { default: L(() => [ y(t.$slots, "default") ]), _: 3 }, 16)); } }), Pa = /* @__PURE__ */ A({ __name: "BCardTitle", props: { text: null, tag: { default: "h4" } }, setup(e) { return (t, a) => (d(), z(J(e.tag), { class: "card-title" }, { default: L(() => [ y(t.$slots, "default", {}, () => [ Y(q(e.text), 1) ]) ]), _: 3 })); } }), Na = /* @__PURE__ */ A({ __name: "BCardSubtitle", props: { text: null, tag: { default: "h6" }, textVariant: { default: "muted" }