UNPKG

@hekeh/el-popover

Version:

A popover component extracted from element-plus

1,538 lines (1,531 loc) 146 kB
(function() { "use strict"; try { if (typeof document != "undefined") { var elementStyle = document.createElement("style"); elementStyle.id = "heheh-el-popover-style"; elementStyle.appendChild(document.createTextNode(`@charset "UTF-8"; /* Element Chalk Variables */ :root { --ep-color-white: #ffffff; --ep-color-black: #000000; --ep-color-primary-rgb: 64, 158, 255; --ep-color-success-rgb: 103, 194, 58; --ep-color-warning-rgb: 230, 162, 60; --ep-color-danger-rgb: 245, 108, 108; --ep-color-error-rgb: 245, 108, 108; --ep-color-info-rgb: 144, 147, 153; --ep-font-size-extra-large: 20px; --ep-font-size-large: 18px; --ep-font-size-medium: 16px; --ep-font-size-base: 14px; --ep-font-size-small: 13px; --ep-font-size-extra-small: 12px; --ep-font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', '微软雅黑', Arial, sans-serif; --ep-font-weight-primary: 500; --ep-font-line-height-primary: 24px; --ep-index-normal: 1; --ep-index-top: 1000; --ep-index-popper: 2000; --ep-border-radius-base: 4px; --ep-border-radius-small: 2px; --ep-border-radius-round: 20px; --ep-border-radius-circle: 100%; --ep-transition-duration: 0.3s; --ep-transition-duration-fast: 0.2s; --ep-transition-function-ease-in-out-bezier: cubic-bezier(0.645, 0.045, 0.355, 1); --ep-transition-function-fast-bezier: cubic-bezier(0.23, 1, 0.32, 1); --ep-transition-all: all var(--ep-transition-duration) var(--ep-transition-function-ease-in-out-bezier); --ep-transition-fade: opacity var(--ep-transition-duration) var(--ep-transition-function-fast-bezier); --ep-transition-md-fade: transform var(--ep-transition-duration) var(--ep-transition-function-fast-bezier), opacity var(--ep-transition-duration) var(--ep-transition-function-fast-bezier); --ep-transition-fade-linear: opacity var(--ep-transition-duration-fast) linear; --ep-transition-border: border-color var(--ep-transition-duration-fast) var(--ep-transition-function-ease-in-out-bezier); --ep-transition-box-shadow: box-shadow var(--ep-transition-duration-fast) var(--ep-transition-function-ease-in-out-bezier); --ep-transition-color: color var(--ep-transition-duration-fast) var(--ep-transition-function-ease-in-out-bezier); --ep-component-size-large: 40px; --ep-component-size: 32px; --ep-component-size-small: 24px; } :root { color-scheme: light; --ep-color-primary: #409eff; --ep-color-primary-light-3: rgb(121.3, 187.1, 255); --ep-color-primary-light-5: rgb(159.5, 206.5, 255); --ep-color-primary-light-7: rgb(197.7, 225.9, 255); --ep-color-primary-light-8: rgb(216.8, 235.6, 255); --ep-color-primary-light-9: rgb(235.9, 245.3, 255); --ep-color-primary-dark-2: rgb(51.2, 126.4, 204); --ep-color-success: #67c23a; --ep-color-success-light-3: rgb(148.6, 212.3, 117.1); --ep-color-success-light-5: rgb(179, 224.5, 156.5); --ep-color-success-light-7: rgb(209.4, 236.7, 195.9); --ep-color-success-light-8: rgb(224.6, 242.8, 215.6); --ep-color-success-light-9: rgb(239.8, 248.9, 235.3); --ep-color-success-dark-2: rgb(82.4, 155.2, 46.4); --ep-color-warning: #e6a23c; --ep-color-warning-light-3: rgb(237.5, 189.9, 118.5); --ep-color-warning-light-5: rgb(242.5, 208.5, 157.5); --ep-color-warning-light-7: rgb(247.5, 227.1, 196.5); --ep-color-warning-light-8: rgb(250, 236.4, 216); --ep-color-warning-light-9: rgb(252.5, 245.7, 235.5); --ep-color-warning-dark-2: rgb(184, 129.6, 48); --ep-color-danger: #f56c6c; --ep-color-danger-light-3: rgb(248, 152.1, 152.1); --ep-color-danger-light-5: rgb(250, 181.5, 181.5); --ep-color-danger-light-7: rgb(252, 210.9, 210.9); --ep-color-danger-light-8: rgb(253, 225.6, 225.6); --ep-color-danger-light-9: rgb(254, 240.3, 240.3); --ep-color-danger-dark-2: rgb(196, 86.4, 86.4); --ep-color-error: #f56c6c; --ep-color-error-light-3: rgb(248, 152.1, 152.1); --ep-color-error-light-5: rgb(250, 181.5, 181.5); --ep-color-error-light-7: rgb(252, 210.9, 210.9); --ep-color-error-light-8: rgb(253, 225.6, 225.6); --ep-color-error-light-9: rgb(254, 240.3, 240.3); --ep-color-error-dark-2: rgb(196, 86.4, 86.4); --ep-color-info: #909399; --ep-color-info-light-3: rgb(177.3, 179.4, 183.6); --ep-color-info-light-5: rgb(199.5, 201, 204); --ep-color-info-light-7: rgb(221.7, 222.6, 224.4); --ep-color-info-light-8: rgb(232.8, 233.4, 234.6); --ep-color-info-light-9: rgb(243.9, 244.2, 244.8); --ep-color-info-dark-2: rgb(115.2, 117.6, 122.4); --ep-bg-color: #ffffff; --ep-bg-color-page: #f2f3f5; --ep-bg-color-overlay: #ffffff; --ep-text-color-primary: #303133; --ep-text-color-regular: #606266; --ep-text-color-secondary: #909399; --ep-text-color-placeholder: #a8abb2; --ep-text-color-disabled: #c0c4cc; --ep-border-color: #dcdfe6; --ep-border-color-light: #e4e7ed; --ep-border-color-lighter: #ebeef5; --ep-border-color-extra-light: #f2f6fc; --ep-border-color-dark: #d4d7de; --ep-border-color-darker: #cdd0d6; --ep-fill-color: #f0f2f5; --ep-fill-color-light: #f5f7fa; --ep-fill-color-lighter: #fafafa; --ep-fill-color-extra-light: #fafcff; --ep-fill-color-dark: #ebedf0; --ep-fill-color-darker: #e6e8eb; --ep-fill-color-blank: #ffffff; --ep-box-shadow: 0px 12px 32px 4px rgba(0, 0, 0, 0.04), 0px 8px 20px rgba(0, 0, 0, 0.08); --ep-box-shadow-light: 0px 0px 12px rgba(0, 0, 0, 0.12); --ep-box-shadow-lighter: 0px 0px 6px rgba(0, 0, 0, 0.12); --ep-box-shadow-dark: 0px 16px 48px 16px rgba(0, 0, 0, 0.08), 0px 12px 32px rgba(0, 0, 0, 0.12), 0px 8px 16px -8px rgba(0, 0, 0, 0.16); --ep-disabled-bg-color: var(--ep-fill-color-light); --ep-disabled-text-color: var(--ep-text-color-placeholder); --ep-disabled-border-color: var(--ep-border-color-light); --ep-overlay-color: rgba(0, 0, 0, 0.8); --ep-overlay-color-light: rgba(0, 0, 0, 0.7); --ep-overlay-color-lighter: rgba(0, 0, 0, 0.5); --ep-mask-color: rgba(255, 255, 255, 0.9); --ep-mask-color-extra-light: rgba(255, 255, 255, 0.3); --ep-border-width: 1px; --ep-border-style: solid; --ep-border-color-hover: var(--ep-text-color-disabled); --ep-border: var(--ep-border-width) var(--ep-border-style) var(--ep-border-color); --ep-svg-monochrome-grey: var(--ep-border-color); } .ep-popper { --ep-popper-border-radius: var(--ep-popover-border-radius, 4px); } .ep-popper { position: absolute; border-radius: var(--ep-popper-border-radius); padding: 5px 11px; z-index: 2000; font-size: 12px; line-height: 20px; min-width: 10px; overflow-wrap: break-word; visibility: visible; } .ep-popper.is-dark { color: var(--ep-bg-color); background: var(--ep-text-color-primary); border: 1px solid var(--ep-text-color-primary); } .ep-popper.is-dark > .ep-popper__arrow::before { border: 1px solid var(--ep-text-color-primary); background: var(--ep-text-color-primary); right: 0; } .ep-popper.is-light { background: var(--ep-bg-color-overlay); border: 1px solid var(--ep-border-color-light); } .ep-popper.is-light > .ep-popper__arrow::before { border: 1px solid var(--ep-border-color-light); background: var(--ep-bg-color-overlay); right: 0; } .ep-popper.is-pure { padding: 0; } .ep-popper__arrow { position: absolute; width: 10px; height: 10px; z-index: -1; } .ep-popper__arrow::before { position: absolute; width: 10px; height: 10px; z-index: -1; content: " "; transform: rotate(45deg); background: var(--ep-text-color-primary); box-sizing: border-box; } .ep-popper[data-popper-placement^=top] > .ep-popper__arrow { bottom: -5px; } .ep-popper[data-popper-placement^=top] > .ep-popper__arrow::before { border-bottom-right-radius: 2px; } .ep-popper[data-popper-placement^=bottom] > .ep-popper__arrow { top: -5px; } .ep-popper[data-popper-placement^=bottom] > .ep-popper__arrow::before { border-top-left-radius: 2px; } .ep-popper[data-popper-placement^=left] > .ep-popper__arrow { right: -5px; } .ep-popper[data-popper-placement^=left] > .ep-popper__arrow::before { border-top-right-radius: 2px; } .ep-popper[data-popper-placement^=right] > .ep-popper__arrow { left: -5px; } .ep-popper[data-popper-placement^=right] > .ep-popper__arrow::before { border-bottom-left-radius: 2px; } .ep-popper[data-popper-placement^=top] > .ep-popper__arrow::before { border-top-color: transparent !important; border-left-color: transparent !important; } .ep-popper[data-popper-placement^=bottom] > .ep-popper__arrow::before { border-bottom-color: transparent !important; border-right-color: transparent !important; } .ep-popper[data-popper-placement^=left] > .ep-popper__arrow::before { border-left-color: transparent !important; border-bottom-color: transparent !important; } .ep-popper[data-popper-placement^=right] > .ep-popper__arrow::before { border-right-color: transparent !important; border-top-color: transparent !important; }`)); document.head.appendChild(elementStyle); } } catch (e) { console.error("vite-plugin-css-injected-by-js", e); } })(); "use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const vue = require("vue"); function isFocusable(element) { if (element.tabIndex > 0 || element.tabIndex === 0 && element.getAttribute("tabIndex") !== null) { return true; } if (element.tabIndex < 0 || element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true") { return false; } switch (element.nodeName) { case "A": { return !!element.href && element.rel !== "ignore"; } case "INPUT": { return !(element.type === "hidden" || element.type === "file"); } case "BUTTON": case "SELECT": case "TEXTAREA": { return true; } default: { return false; } } } function isElement$1(e) { if (typeof Element === "undefined") { return false; } return e instanceof Element; } var __defProp$9 = Object.defineProperty; var __defProps$6 = Object.defineProperties; var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors; var __getOwnPropSymbols$b = Object.getOwnPropertySymbols; var __hasOwnProp$b = Object.prototype.hasOwnProperty; var __propIsEnum$b = Object.prototype.propertyIsEnumerable; var __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues$9 = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp$b.call(b, prop)) __defNormalProp$9(a, prop, b[prop]); if (__getOwnPropSymbols$b) for (var prop of __getOwnPropSymbols$b(b)) { if (__propIsEnum$b.call(b, prop)) __defNormalProp$9(a, prop, b[prop]); } return a; }; var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b)); function computedEager(fn2, options) { var _a2; const result = vue.shallowRef(); vue.watchEffect(() => { result.value = fn2(); }, __spreadProps$6(__spreadValues$9({}, options), { flush: (_a2 = void 0) != null ? _a2 : "sync" })); return vue.readonly(result); } var _a; const isClient = typeof window !== "undefined"; const isString$1 = (val) => typeof val === "string"; const noop = () => { }; const isIOS = isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /iP(ad|hone|od)/.test(window.navigator.userAgent); function resolveUnref(r) { return typeof r === "function" ? r() : vue.unref(r); } function identity(arg) { return arg; } function tryOnScopeDispose(fn2) { if (vue.getCurrentScope()) { vue.onScopeDispose(fn2); return true; } return false; } function unrefElement(elRef) { var _a2; const plain = resolveUnref(elRef); return (_a2 = plain == null ? void 0 : plain.$el) != null ? _a2 : plain; } const defaultWindow = isClient ? window : void 0; function useEventListener(...args) { let target; let events; let listeners; let options; if (isString$1(args[0]) || Array.isArray(args[0])) { [events, listeners, options] = args; target = defaultWindow; } else { [target, events, listeners, options] = args; } if (!target) return noop; if (!Array.isArray(events)) events = [events]; if (!Array.isArray(listeners)) listeners = [listeners]; const cleanups = []; const cleanup = () => { cleanups.forEach((fn2) => fn2()); cleanups.length = 0; }; const register = (el, event, listener, options2) => { el.addEventListener(event, listener, options2); return () => el.removeEventListener(event, listener, options2); }; const stopWatch = vue.watch(() => [unrefElement(target), resolveUnref(options)], ([el, options2]) => { cleanup(); if (!el) return; cleanups.push(...events.flatMap((event) => { return listeners.map((listener) => register(el, event, listener, options2)); })); }, { immediate: true, flush: "post" }); const stop = () => { stopWatch(); cleanup(); }; tryOnScopeDispose(stop); return stop; } let _iOSWorkaround = false; function onClickOutside(target, handler, options = {}) { const { window: window2 = defaultWindow, ignore = [], capture = true, detectIframe = false } = options; if (!window2) return; if (isIOS && !_iOSWorkaround) { _iOSWorkaround = true; Array.from(window2.document.body.children).forEach((el) => el.addEventListener("click", noop)); } let shouldListen = true; const shouldIgnore = (event) => { return ignore.some((target2) => { if (typeof target2 === "string") { return Array.from(window2.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el)); } else { const el = unrefElement(target2); return el && (event.target === el || event.composedPath().includes(el)); } }); }; const listener = (event) => { const el = unrefElement(target); if (!el || el === event.target || event.composedPath().includes(el)) return; if (event.detail === 0) shouldListen = !shouldIgnore(event); if (!shouldListen) { shouldListen = true; return; } handler(event); }; const cleanup = [ useEventListener(window2, "click", listener, { passive: true, capture }), useEventListener(window2, "pointerdown", (e) => { const el = unrefElement(target); if (el) shouldListen = !e.composedPath().includes(el) && !shouldIgnore(e); }, { passive: true }), detectIframe && useEventListener(window2, "blur", (event) => { var _a2; const el = unrefElement(target); if (((_a2 = window2.document.activeElement) == null ? void 0 : _a2.tagName) === "IFRAME" && !(el == null ? void 0 : el.contains(window2.document.activeElement))) handler(event); }) ].filter(Boolean); const stop = () => cleanup.forEach((fn2) => fn2()); return stop; } const _global = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; const globalKey = "__vueuse_ssr_handlers__"; _global[globalKey] = _global[globalKey] || {}; var SwipeDirection; (function(SwipeDirection2) { SwipeDirection2["UP"] = "UP"; SwipeDirection2["RIGHT"] = "RIGHT"; SwipeDirection2["DOWN"] = "DOWN"; SwipeDirection2["LEFT"] = "LEFT"; SwipeDirection2["NONE"] = "NONE"; })(SwipeDirection || (SwipeDirection = {})); var __defProp = Object.defineProperty; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; const _TransitionPresets = { easeInSine: [0.12, 0, 0.39, 0], easeOutSine: [0.61, 1, 0.88, 1], easeInOutSine: [0.37, 0, 0.63, 1], easeInQuad: [0.11, 0, 0.5, 0], easeOutQuad: [0.5, 1, 0.89, 1], easeInOutQuad: [0.45, 0, 0.55, 1], easeInCubic: [0.32, 0, 0.67, 0], easeOutCubic: [0.33, 1, 0.68, 1], easeInOutCubic: [0.65, 0, 0.35, 1], easeInQuart: [0.5, 0, 0.75, 0], easeOutQuart: [0.25, 1, 0.5, 1], easeInOutQuart: [0.76, 0, 0.24, 1], easeInQuint: [0.64, 0, 0.78, 0], easeOutQuint: [0.22, 1, 0.36, 1], easeInOutQuint: [0.83, 0, 0.17, 1], easeInExpo: [0.7, 0, 0.84, 0], easeOutExpo: [0.16, 1, 0.3, 1], easeInOutExpo: [0.87, 0, 0.13, 1], easeInCirc: [0.55, 0, 1, 0.45], easeOutCirc: [0, 0.55, 0.45, 1], easeInOutCirc: [0.85, 0, 0.15, 1], easeInBack: [0.36, 0, 0.66, -0.56], easeOutBack: [0.34, 1.56, 0.64, 1], easeInOutBack: [0.68, -0.6, 0.32, 1.6] }; __spreadValues({ linear: identity }, _TransitionPresets); function isNumber(val) { return typeof val === "number"; } function isBoolean(val) { return typeof val === "boolean"; } function isNil(val) { return val === null || val === void 0; } function isArray(val) { return Array.isArray(val); } function isString(val) { return typeof val === "string"; } function isFunction(val) { return typeof val === "function"; } function isObject(val) { return val !== null && typeof val === "object"; } function isStringNumber(val) { if (!isString(val)) { return false; } return !Number.isNaN(Number(val)); } function composeEventHandlers(theirsHandler, oursHandler, { checkForDefaultPrevented = true } = {}) { const handleEvent = (event) => { const shouldPrevent = theirsHandler == null ? void 0 : theirsHandler(event); if (checkForDefaultPrevented === false || !shouldPrevent) { return oursHandler == null ? void 0 : oursHandler(event); } }; return handleEvent; } function keysOf(arr) { return Object.keys(arr); } function pick(obj, paths) { return paths.reduce( (result, key) => { if (obj[key] !== void 0) { result[key] = obj[key]; } return result; }, {} ); } function addUnit(value, defaultUnit = "px") { if (!value) { return ""; } if (isNumber(value) || isStringNumber(value)) { return `${value}${defaultUnit}`; } else if (isString(value)) { return value; } } const ariaProps = { /** * @description native `aria-label` attribute */ ariaLabel: { type: String }, /** * @description native `aria-orientation` attribute */ ariaOrientation: { type: String }, /** * @description native `aria-controls` attribute */ ariaControls: { type: String } }; function useAriaProps(arias) { return pick(ariaProps, arias); } function useTimeout() { let timeoutHandle; const cancelTimeout = () => window.clearTimeout(timeoutHandle); const registerTimeout = (fn2, delay) => { cancelTimeout(); timeoutHandle = window.setTimeout(fn2, delay); }; tryOnScopeDispose(() => cancelTimeout()); return { registerTimeout, cancelTimeout }; } const useDelayedToggleProps = { /** * @description delay of appearance, in millisecond */ showAfter: { type: Number, default: 0 }, /** * @description delay of disappear, in millisecond */ hideAfter: { type: Number, default: 200 }, /** * @description disappear automatically, in millisecond */ autoClose: { type: Number, default: 0 } }; function useDelayedToggle({ showAfter, hideAfter, autoClose, open, close }) { const { registerTimeout } = useTimeout(); const { registerTimeout: registerTimeoutForAutoClose, cancelTimeout: cancelTimeoutForAutoClose } = useTimeout(); const onOpen = (event) => { registerTimeout(() => { open(event); const _autoClose = vue.unref(autoClose); if (isNumber(_autoClose) && _autoClose > 0) { registerTimeoutForAutoClose(() => { close(event); }, _autoClose); } }, vue.unref(showAfter)); }; const onClose = (event) => { cancelTimeoutForAutoClose(); registerTimeout(() => { close(event); }, vue.unref(hideAfter)); }; return { onOpen, onClose }; } const EVENT_CODE = { tab: "Tab", enter: "Enter", space: "Space", left: "ArrowLeft", // 37 up: "ArrowUp", // 38 right: "ArrowRight", // 39 down: "ArrowDown", // 40 esc: "Escape", delete: "Delete", backspace: "Backspace", numpadEnter: "NumpadEnter", pageUp: "PageUp", pageDown: "PageDown", home: "Home", end: "End" }; let registeredEscapeHandlers = []; function cachedHandler(e) { const event = e; if (event.key === EVENT_CODE.esc) { registeredEscapeHandlers.forEach( (registeredHandler) => registeredHandler(event) ); } } function useEscapeKeydown(handler) { vue.onMounted(() => { if (!isClient) { return; } if (registeredEscapeHandlers.length === 0) { document.addEventListener("keydown", cachedHandler); } registeredEscapeHandlers.push(handler); }); vue.onBeforeUnmount(() => { if (!isClient) { return; } registeredEscapeHandlers = registeredEscapeHandlers.filter( (registeredHandler) => registeredHandler !== handler ); if (registeredEscapeHandlers.length === 0) { document.removeEventListener("keydown", cachedHandler); } }); } const FORWARD_REF_INJECTION_KEY = Symbol("elForwardRef"); function useForwardRef(forwardRef) { const setForwardRef = (el) => { forwardRef.value = el; }; vue.provide(FORWARD_REF_INJECTION_KEY, { setForwardRef }); } function useForwardRefDirective(setForwardRef) { return { mounted(el) { setForwardRef(el); }, updated(el) { setForwardRef(el); }, unmounted() { setForwardRef(null); } }; } const themeConfig = { "namespace": "ep", "common-separator": "-", "element-separator": "__", "modifier-separator": "--", "state-prefix": "is-" }; const defaultNamespace = themeConfig.namespace; const statePrefix = themeConfig["state-prefix"]; const commonSeparator = themeConfig["common-separator"]; const elementSeparator = themeConfig["element-separator"]; const modifierSeparator = themeConfig["modifier-separator"]; function _bem(namespace, block, blockSuffix, element, modifier) { let cls = `${namespace}${commonSeparator}${block}`; if (blockSuffix) { cls += `${commonSeparator}${blockSuffix}`; } if (element) { cls += `${elementSeparator}${element}`; } if (modifier) { cls += `${modifierSeparator}${modifier}`; } return cls; } const namespaceContextKey = Symbol("namespaceContextKey"); function useGetDerivedNamespace(namespaceOverrides) { const derivedNamespace = ( // Priority 1: Use the override value if provided // Priority 2: If no override, then: vue.getCurrentInstance() ? ( // 2a. If within component instance, try to inject namespace with default vue.inject(namespaceContextKey, vue.ref(defaultNamespace)) ) : ( // 2b. If not in component instance, use default namespace directly vue.ref(defaultNamespace) ) ); const namespace = vue.computed(() => { return vue.unref(derivedNamespace) || defaultNamespace; }); return namespace; } function useNamespace(block, namespaceOverrides) { const namespace = useGetDerivedNamespace(); const b = (blockSuffix = "") => _bem(namespace.value, block, blockSuffix, "", ""); const e = (element) => element ? _bem(namespace.value, block, "", element, "") : ""; const m = (modifier) => modifier ? _bem(namespace.value, block, "", "", modifier) : ""; const be = (blockSuffix, element) => blockSuffix && element ? _bem(namespace.value, block, blockSuffix, element, "") : ""; const em = (element, modifier) => element && modifier ? _bem(namespace.value, block, "", element, modifier) : ""; const bm = (blockSuffix, modifier) => blockSuffix && modifier ? _bem(namespace.value, block, blockSuffix, "", modifier) : ""; const bem = (blockSuffix, element, modifier) => blockSuffix && element && modifier ? _bem(namespace.value, block, blockSuffix, element, modifier) : ""; const is = (name, ...args) => { const state = args.length >= 1 ? args[0] : true; return name && state ? `${statePrefix}${name}` : ""; }; const cssVar = (object) => { const styles = {}; for (const key in object) { if (object[key]) { styles[`--${namespace.value}-${key}`] = object[key]; } } return styles; }; const cssVarBlock = (object) => { const styles = {}; for (const key in object) { if (object[key]) { styles[`--${namespace.value}-${block}-${key}`] = object[key]; } } return styles; }; const cssVarName = (name) => `--${namespace.value}-${name}`; const cssVarBlockName = (name) => `--${namespace.value}-${block}-${name}`; return { namespace, b, e, m, be, em, bm, bem, is, // css cssVar, cssVarName, cssVarBlock, cssVarBlockName }; } const defaultIdInjection = { prefix: Math.floor(Math.random() * 1e4), current: 0 }; const ID_INJECTION_KEY = Symbol("elIdInjection"); function useIdInjection() { return vue.getCurrentInstance() ? vue.inject(ID_INJECTION_KEY, defaultIdInjection) : defaultIdInjection; } function useId(deterministicId) { const idInjection = useIdInjection(); const namespace = useGetDerivedNamespace(); const idRef = computedEager( () => vue.unref(deterministicId) || `${namespace.value}-id-${idInjection.prefix}-${idInjection.current++}` ); return idRef; } const _prop = { type: [Boolean, null], default: null }; const _event = { type: [Function] }; function createModelToggleComposable(name) { const updateEventKey = `update:${name}`; const updateEventKeyRaw2 = `onUpdate:${name}`; const useModelToggleEmits2 = [updateEventKey]; const useModelToggleProps2 = { [name]: _prop, [updateEventKeyRaw2]: _event }; const useModelToggle2 = ({ indicator, toggleReason, shouldHideWhenRouteChanges, shouldProceed, onShow, onHide }) => { const instance = vue.getCurrentInstance(); const { emit } = instance; const props = instance.props; const hasUpdateHandler = vue.computed( () => isFunction(props[updateEventKeyRaw2]) ); const isModelBindingAbsent = vue.computed(() => props[name] === null); const doShow = (event) => { if (indicator.value === true) { return; } indicator.value = true; if (toggleReason) { toggleReason.value = event; } if (isFunction(onShow)) { onShow(event); } }; const doHide = (event) => { if (indicator.value === false) { return; } indicator.value = false; if (toggleReason) { toggleReason.value = event; } if (isFunction(onHide)) { onHide(event); } }; const show = (event) => { if (props.disabled === true || isFunction(shouldProceed) && !shouldProceed()) { return; } const shouldEmit = hasUpdateHandler.value && isClient; if (shouldEmit) { emit(updateEventKey, true); } if (isModelBindingAbsent.value || !shouldEmit) { doShow(event); } }; const hide2 = (event) => { if (props.disabled === true || !isClient) { return; } const shouldEmit = hasUpdateHandler.value && isClient; if (shouldEmit) { emit(updateEventKey, false); } if (isModelBindingAbsent.value || !shouldEmit) { doHide(event); } }; const onChange = (val) => { if (!isBoolean(val)) { return; } if (props.disabled && val) { if (hasUpdateHandler.value) { emit(updateEventKey, false); } } else if (indicator.value !== val) { if (val) { doShow(); } else { doHide(); } } }; const toggle = () => { if (indicator.value) { hide2(); } else { show(); } }; vue.watch(() => props[name], onChange); if (shouldHideWhenRouteChanges && instance.appContext.config.globalProperties.$route !== void 0) { vue.watch( () => ({ ...instance.proxy.$route }), () => { if (shouldHideWhenRouteChanges.value && indicator.value) { hide2(); } } ); } vue.onMounted(() => { onChange(props[name]); }); return { hide: hide2, show, toggle, hasUpdateHandler }; }; return { useModelToggle: useModelToggle2, useModelToggleProps: useModelToggleProps2, useModelToggleEmits: useModelToggleEmits2 }; } var top = "top"; var bottom = "bottom"; var right = "right"; var left = "left"; var auto = "auto"; var basePlacements = [top, bottom, right, left]; var start = "start"; var end = "end"; var clippingParents = "clippingParents"; var viewport = "viewport"; var popper = "popper"; var reference = "reference"; var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) { return acc.concat([placement + "-" + start, placement + "-" + end]); }, []); var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) { return acc.concat([placement, placement + "-" + start, placement + "-" + end]); }, []); var beforeRead = "beforeRead"; var read = "read"; var afterRead = "afterRead"; var beforeMain = "beforeMain"; var main = "main"; var afterMain = "afterMain"; var beforeWrite = "beforeWrite"; var write = "write"; var afterWrite = "afterWrite"; var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; function getNodeName(element) { return element ? (element.nodeName || "").toLowerCase() : null; } function getWindow(node) { if (node == null) { return window; } if (node.toString() !== "[object Window]") { var ownerDocument = node.ownerDocument; return ownerDocument ? ownerDocument.defaultView || window : window; } return node; } function isElement(node) { var OwnElement = getWindow(node).Element; return node instanceof OwnElement || node instanceof Element; } function isHTMLElement(node) { var OwnElement = getWindow(node).HTMLElement; return node instanceof OwnElement || node instanceof HTMLElement; } function isShadowRoot(node) { if (typeof ShadowRoot === "undefined") { return false; } var OwnElement = getWindow(node).ShadowRoot; return node instanceof OwnElement || node instanceof ShadowRoot; } function applyStyles(_ref) { var state = _ref.state; Object.keys(state.elements).forEach(function(name) { var style = state.styles[name] || {}; var attributes = state.attributes[name] || {}; var element = state.elements[name]; if (!isHTMLElement(element) || !getNodeName(element)) { return; } Object.assign(element.style, style); Object.keys(attributes).forEach(function(name2) { var value = attributes[name2]; if (value === false) { element.removeAttribute(name2); } else { element.setAttribute(name2, value === true ? "" : value); } }); }); } function effect$2(_ref2) { var state = _ref2.state; var initialStyles = { popper: { position: state.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(state.elements.popper.style, initialStyles.popper); state.styles = initialStyles; if (state.elements.arrow) { Object.assign(state.elements.arrow.style, initialStyles.arrow); } return function() { Object.keys(state.elements).forEach(function(name) { var element = state.elements[name]; var attributes = state.attributes[name] || {}; var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); var style = styleProperties.reduce(function(style2, property) { style2[property] = ""; return style2; }, {}); if (!isHTMLElement(element) || !getNodeName(element)) { return; } Object.assign(element.style, style); Object.keys(attributes).forEach(function(attribute) { element.removeAttribute(attribute); }); }); }; } const applyStyles$1 = { name: "applyStyles", enabled: true, phase: "write", fn: applyStyles, effect: effect$2, requires: ["computeStyles"] }; function getBasePlacement(placement) { return placement.split("-")[0]; } var max = Math.max; var min = Math.min; var round = Math.round; function getUAString() { var uaData = navigator.userAgentData; if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) { return uaData.brands.map(function(item) { return item.brand + "/" + item.version; }).join(" "); } return navigator.userAgent; } function isLayoutViewport() { return !/^((?!chrome|android).)*safari/i.test(getUAString()); } function getBoundingClientRect(element, includeScale, isFixedStrategy) { if (includeScale === void 0) { includeScale = false; } if (isFixedStrategy === void 0) { isFixedStrategy = false; } var clientRect = element.getBoundingClientRect(); var scaleX = 1; var scaleY = 1; if (includeScale && isHTMLElement(element)) { scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1; scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1; } var _ref = isElement(element) ? getWindow(element) : window, visualViewport = _ref.visualViewport; var addVisualOffsets = !isLayoutViewport() && isFixedStrategy; var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX; var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY; var width = clientRect.width / scaleX; var height = clientRect.height / scaleY; return { width, height, top: y, right: x + width, bottom: y + height, left: x, x, y }; } function getLayoutRect(element) { var clientRect = getBoundingClientRect(element); var width = element.offsetWidth; var height = element.offsetHeight; if (Math.abs(clientRect.width - width) <= 1) { width = clientRect.width; } if (Math.abs(clientRect.height - height) <= 1) { height = clientRect.height; } return { x: element.offsetLeft, y: element.offsetTop, width, height }; } function contains(parent, child) { var rootNode = child.getRootNode && child.getRootNode(); if (parent.contains(child)) { return true; } else if (rootNode && isShadowRoot(rootNode)) { var next = child; do { if (next && parent.isSameNode(next)) { return true; } next = next.parentNode || next.host; } while (next); } return false; } function getComputedStyle$1(element) { return getWindow(element).getComputedStyle(element); } function isTableElement(element) { return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0; } function getDocumentElement(element) { return ((isElement(element) ? element.ownerDocument : ( // $FlowFixMe[prop-missing] element.document )) || window.document).documentElement; } function getParentNode(element) { if (getNodeName(element) === "html") { return element; } return ( // this is a quicker (but less type safe) way to save quite some bytes from the bundle // $FlowFixMe[incompatible-return] // $FlowFixMe[prop-missing] element.assignedSlot || // step into the shadow DOM of the parent of a slotted node element.parentNode || // DOM Element detected (isShadowRoot(element) ? element.host : null) || // ShadowRoot detected // $FlowFixMe[incompatible-call]: HTMLElement is a Node getDocumentElement(element) ); } function getTrueOffsetParent(element) { if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837 getComputedStyle$1(element).position === "fixed") { return null; } return element.offsetParent; } function getContainingBlock(element) { var isFirefox = /firefox/i.test(getUAString()); var isIE = /Trident/i.test(getUAString()); if (isIE && isHTMLElement(element)) { var elementCss = getComputedStyle$1(element); if (elementCss.position === "fixed") { return null; } } var currentNode = getParentNode(element); if (isShadowRoot(currentNode)) { currentNode = currentNode.host; } while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) { var css = getComputedStyle$1(currentNode); if (css.transform !== "none" || css.perspective !== "none" || css.contain === "paint" || ["transform", "perspective"].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === "filter" || isFirefox && css.filter && css.filter !== "none") { return currentNode; } else { currentNode = currentNode.parentNode; } } return null; } function getOffsetParent(element) { var window2 = getWindow(element); var offsetParent = getTrueOffsetParent(element); while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === "static") { offsetParent = getTrueOffsetParent(offsetParent); } if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle$1(offsetParent).position === "static")) { return window2; } return offsetParent || getContainingBlock(element) || window2; } function getMainAxisFromPlacement(placement) { return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y"; } function within(min$1, value, max$1) { return max(min$1, min(value, max$1)); } function withinMaxClamp(min2, value, max2) { var v = within(min2, value, max2); return v > max2 ? max2 : v; } function getFreshSideObject() { return { top: 0, right: 0, bottom: 0, left: 0 }; } function mergePaddingObject(paddingObject) { return Object.assign({}, getFreshSideObject(), paddingObject); } function expandToHashMap(value, keys) { return keys.reduce(function(hashMap, key) { hashMap[key] = value; return hashMap; }, {}); } var toPaddingObject = function toPaddingObject2(padding, state) { padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, { placement: state.placement })) : padding; return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements)); }; function arrow(_ref) { var _state$modifiersData$; var state = _ref.state, name = _ref.name, options = _ref.options; var arrowElement = state.elements.arrow; var popperOffsets2 = state.modifiersData.popperOffsets; var basePlacement = getBasePlacement(state.placement); var axis = getMainAxisFromPlacement(basePlacement); var isVertical = [left, right].indexOf(basePlacement) >= 0; var len = isVertical ? "height" : "width"; if (!arrowElement || !popperOffsets2) { return; } var paddingObject = toPaddingObject(options.padding, state); var arrowRect = getLayoutRect(arrowElement); var minProp = axis === "y" ? top : left; var maxProp = axis === "y" ? bottom : right; var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len]; var startDiff = popperOffsets2[axis] - state.rects.reference[axis]; var arrowOffsetParent = getOffsetParent(arrowElement); var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; var centerToReference = endDiff / 2 - startDiff / 2; var min2 = paddingObject[minProp]; var max2 = clientSize - arrowRect[len] - paddingObject[maxProp]; var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; var offset2 = within(min2, center, max2); var axisProp = axis; state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$); } function effect$1(_ref2) { var state = _ref2.state, options = _ref2.options; var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element; if (arrowElement == null) { return; } if (typeof arrowElement === "string") { arrowElement = state.elements.popper.querySelector(arrowElement); if (!arrowElement) { return; } } if (!contains(state.elements.popper, arrowElement)) { return; } state.elements.arrow = arrowElement; } const arrow$1 = { name: "arrow", enabled: true, phase: "main", fn: arrow, effect: effect$1, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; function getVariation(placement) { return placement.split("-")[1]; } var unsetSides = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function roundOffsetsByDPR(_ref, win) { var x = _ref.x, y = _ref.y; var dpr = win.devicePixelRatio || 1; return { x: round(x * dpr) / dpr || 0, y: round(y * dpr) / dpr || 0 }; } function mapToStyles(_ref2) { var _Object$assign2; var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed; var _offsets$x = offsets.x, x = _offsets$x === void 0 ? 0 : _offsets$x, _offsets$y = offsets.y, y = _offsets$y === void 0 ? 0 : _offsets$y; var _ref3 = typeof roundOffsets === "function" ? roundOffsets({ x, y }) : { x, y }; x = _ref3.x; y = _ref3.y; var hasX = offsets.hasOwnProperty("x"); var hasY = offsets.hasOwnProperty("y"); var sideX = left; var sideY = top; var win = window; if (adaptive) { var offsetParent = getOffsetParent(popper2); var heightProp = "clientHeight"; var widthProp = "clientWidth"; if (offsetParent === getWindow(popper2)) { offsetParent = getDocumentElement(popper2); if (getComputedStyle$1(offsetParent).position !== "static" && position === "absolute") { heightProp = "scrollHeight"; widthProp = "scrollWidth"; } } offsetParent = offsetParent; if (placement === top || (placement === left || placement === right) && variation === end) { sideY = bottom; var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : ( // $FlowFixMe[prop-missing] offsetParent[heightProp] ); y -= offsetY - popperRect.height; y *= gpuAcceleration ? 1 : -1; } if (placement === left || (placement === top || placement === bottom) && variation === end) { sideX = right; var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : ( // $FlowFixMe[prop-missing] offsetParent[widthProp] ); x -= offsetX - popperRect.width; x *= gpuAcceleration ? 1 : -1; } } var commonStyles = Object.assign({ position }, adaptive && unsetSides); var _ref4 = roundOffsets === true ? roundOffsetsByDPR({ x, y }, getWindow(popper2)) : { x, y }; x = _ref4.x; y = _ref4.y; if (gpuAcceleration) { var _Object$assign; return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "", _Object$assign[sideX] = hasX ? "0" : "", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); } return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2)); } function computeStyles(_ref5) { var state = _ref5.state, options = _ref5.options; var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; var commonStyles = { placement: getBasePlacement(state.placement), variation: getVariation(state.placement), popper: state.elements.popper, popperRect: state.rects.popper, gpuAcceleration, isFixed: state.options.strategy === "fixed" }; if (state.modifiersData.popperOffsets != null) { state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { offsets: state.modifiersData.popperOffsets, position: state.options.strategy, adaptive, roundOffsets }))); } if (state.modifiersData.arrow != null) { state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { offsets: state.modifiersData.arrow, position: "absolute", adaptive: false, roundOffsets }))); } state.attributes.popper = Object.assign({}, state.attributes.popper, { "data-popper-placement": state.placement }); } const computeStyles$1 = { name: "computeStyles", enabled: true, phase: "beforeWrite", fn: computeStyles, data: {} }; var passive = { passive: true }; function effect(_ref) { var state = _ref.state, instance = _ref.instance, options = _ref.options; var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize; var window2 = getWindow(state.elements.popper); var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); if (scroll) { scrollParents.forEach(function(scrollParent) { scrollParent.addEventListener("scroll", instance.update, passive); }); } if (resize) { window2.addEventListener("resize", instance.update, passive); } return function() { if (scroll) { scrollParents.forEach(function(scrollParent) { scrollParent.removeEventListener("scroll", instance.update, passive); }); } if (resize) { window2.removeEventListener("resize", instance.update, passive); } }; } const eventListeners = { name: "eventListeners", enabled: true, phase: "write", fn: function fn() { }, effect, data: {} }; var hash$1 = { left: "right", right: "left", bottom: "top", top: "bottom" }; function getOppositePlacement(placement) { return placement.replace(/left|right|bottom|top/g, function(matched) { return hash$1[matched]; }); } var hash = { start: "end", end: "start" }; function getOppositeVariationPlacement(placement) { return placement.replace(/start|end/g, function(matched) { return hash[matched]; }); } function getWindowScroll(node) { var win = getWindow(node); var scrollLeft = win.pageXOffset; var scrollTop = win.pageYOffset; return { scrollLeft, scrollTop }; } function getWindowScrollBarX(element) { return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; } function getViewportRect(element, strategy) { var win = getWindow(element); var html = getDocumentElement(element); var visualViewport = win.visualViewport; var width = html.clientWidth; var height = html.clientHeight; var x = 0; var y = 0; if (visualViewport) { width = visualViewport.width; height = visualViewport.height; var layoutViewport = isLayoutViewport(); if (layoutViewport || !layoutViewport && strategy === "fixed") { x = visualViewport.offsetLeft; y = visualViewport.offsetTop; } } return { width, height, x: x + getWindowScrollBarX(element), y }; } function getDocumentRect(element) { var _element$ownerDocumen; var html = getDocumentElement(element); var winScroll = getWindowScroll(element); var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); var x = -winScroll.scrollLeft + getWindowScrollBarX(element); var y = -winScroll.scrollTop; if (getComputedStyle$1(body || html).direction === "rtl") { x += max(html.clientWidth, body ? body.clientWidth : 0) - width; } return { width, height, x, y }; } function isScrollParent(element) { var _getComputedStyle = getComputedStyle$1(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY; return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); } function getScrollParent(node) { if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) { return node.ownerDocument.body; } if (isHTMLElement(node) && isScrollParent(node)) { return node; } return getScrollParent(getParentNode(node)); } function listScrollParents(element, list) { var _element$ownerDocumen; if (list === void 0) { list = []; } var scrollParent = getScrollParent(element); var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); var win = getWindow(scrollParent); var target = isBo