@hekeh/el-popover
Version:
A popover component extracted from element-plus
1,538 lines (1,531 loc) • 146 kB
JavaScript
(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