New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

v-popover

Package Overview
Dependencies
Maintainers
1
Versions
23
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

v-popover - npm Package Compare versions

Comparing version 0.0.8 to 0.0.9

dist/types/src/state.d.ts

442

dist/cjs/index.js
"use strict";
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
const vue = require("vue");
const contextKey = Symbol("__popover-name__");
function usePopover() {
const context = vue.inject(
contextKey,
void 0
);
return vue.computed(() => context == null ? void 0 : context.value);
}
function providePopover(context) {
vue.provide(contextKey, context);
}
const _sfc_main$3 = {
inheritAttrs: false,
setup(_, { attrs }) {
const context = vue.computed(() => ({
name: Symbol(),
...attrs
}));
providePopover(context);
}
};
const _export_sfc = (sfc, props) => {
const target = sfc.__vccOpts || sfc;
for (const [key, val] of props) {
target[key] = val;
}
return target;
};
function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
return vue.renderSlot(_ctx.$slots, "default");
}
const Popover = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$2]]);
const isBoolean = (value) => {

@@ -43,5 +11,5 @@ return typeof value === "boolean";

for (const key in source) {
if (typeof source[key] === "object" && target[key]) {
assignDeep(target[key], source[key]);
} else if (source[key] != null) {
if (typeof source[key] === "object" && target[key] && !(source[key] instanceof Element)) {
assignDeep(target[key], source[key], false);
} else if (source[key] !== void 0) {
target[key] = source[key];

@@ -55,2 +23,3 @@ }

const resolveEl = (target) => {
target = vue.unref(target);
if (target == null)

@@ -108,5 +77,7 @@ return null;

if (click) {
const trigger = e.currentTarget;
togglePopover({
...opts,
anchor: opts.anchor || e.currentTarget
trigger,
anchor: opts.anchor || trigger
});

@@ -120,5 +91,7 @@ e.stopPropagation();

if (hover || hoverFocus) {
const trigger = e.currentTarget;
showPopover({
...opts,
anchor: opts.anchor || e.currentTarget
trigger,
anchor: opts.anchor || trigger
});

@@ -140,5 +113,7 @@ }

if (focus || hoverFocus) {
const trigger = e.currentTarget;
showPopover({
...opts,
anchor: opts.anchor || e.currentTarget
trigger,
anchor: opts.anchor || trigger
});

@@ -184,3 +159,3 @@ }

arrowHidden: false,
arrowInsetHorizontal: 18,
arrowInsetHorizontal: 14,
arrowInsetVertical: 8,

@@ -192,8 +167,9 @@ arrowSize: 10,

offsets: {
top: { x: 0, y: 0 },
bottom: { x: 0, y: 0 },
left: { x: 0, y: 0 },
right: { x: 0, y: 0 }
top: { x: 0, y: 8 },
bottom: { x: 0, y: 8 },
left: { x: 8, y: 0 },
right: { x: 8, y: 0 }
},
placement: "top",
teleport: null,
transition: ["fade"]

@@ -205,3 +181,3 @@ },

arrowHidden: true,
arrowInsetHorizontal: 18,
arrowInsetHorizontal: 14,
arrowInsetVertical: 8,

@@ -213,8 +189,9 @@ arrowSize: 12,

offsets: {
top: { x: 0, y: 10 },
bottom: { x: 0, y: 10 },
left: { x: 10, y: 0 },
right: { x: 10, y: 0 }
top: { x: 0, y: 6 },
bottom: { x: 0, y: 6 },
left: { x: 6, y: 0 },
right: { x: 6, y: 0 }
},
placement: "bottom-start",
teleport: "body",
transition: ["fade", "scale", "move"]

@@ -224,8 +201,10 @@ }

};
const popoverState = vue.reactive({});
function resolveOptions(options) {
const profileOptions = options.profile ? config.profiles[options.profile] : {};
return assignDeep({}, profileOptions, options, {
name: options.name ?? profileOptions.name
});
const popoversMap = vue.ref(/* @__PURE__ */ new Map());
function getOrSetPopovers(name) {
if (popoversMap.value.has(name)) {
return popoversMap.value.get(name);
}
const popovers = [];
popoversMap.value.set(name, popovers);
return popovers;
}

@@ -240,6 +219,10 @@ function addHandlers(el, opts) {

}
function resolveOptions(options) {
const profileOptions = options.profile ? config.profiles[options.profile] : {};
return assignDeep({}, profileOptions, options);
}
function addPopover(el, options) {
var _a;
const resolvedOptions = resolveOptions(options);
if (!resolvedOptions.name) {
const name = resolvedOptions.name;
if (!name) {
throw new Error(

@@ -249,4 +232,4 @@ `Popover name is missing from directive options: ${options}`

}
popoverState[_a = resolvedOptions.name] ?? (popoverState[_a] = []);
popoverState[resolvedOptions.name].push({
el.__popover_name__ = name;
getOrSetPopovers(name).push({
el,

@@ -256,2 +239,3 @@ options: resolvedOptions,

});
return () => removePopover(el);
}

@@ -262,9 +246,10 @@ const removeHandlers = (handlers) => {

function removePopover(el) {
Object.entries(popoverState).forEach(([_, popovers]) => {
const index2 = popovers.findIndex((p) => p.el === el);
if (index2 !== -1) {
removeHandlers(popovers[index2].handlers);
popovers.splice(index2, 1);
}
});
const popovers = popoversMap.value.get(el.__popover_name__);
if (!popovers)
return;
const index2 = popovers.findIndex((p) => p.el === el);
if (index2 !== -1) {
removeHandlers(popovers[index2].handlers);
popovers.splice(index2, 1);
}
}

@@ -292,46 +277,2 @@ const directive = {

}, Symbol.toStringTag, { value: "Module" }));
const _sfc_main$2 = {
functional: true,
props: {
name: { type: [Number, String, Symbol] }
},
setup(props, { slots, attrs }) {
var _a;
const parentState = usePopover();
const popoverArgs = vue.computed(
() => assignDeep({ profile: "popover" }, parentState == null ? void 0 : parentState.value, attrs, {
name: props.name
})
);
function flattenFragments(children) {
return children.flatMap((node) => {
if (node.type === vue.Fragment) {
return flattenFragments(node.children);
}
return [node];
});
}
function validNode(node) {
return ![vue.Comment, vue.Text, vue.Static].some((type) => type === node.type);
}
const slot = (_a = slots.default) == null ? void 0 : _a.call(slots);
if (!slot) {
console.warn("PopoverTrigger requires a default slot");
return null;
}
const el = flattenFragments(slot).find(validNode);
if (!el) {
console.warn("PopoverTrigger requires a valid child");
return slot;
}
if (!popoverArgs.value.name) {
console.warn("PopoverTrigger requires a name from prop or context");
}
return () => vue.withDirectives(el, [[directive, popoverArgs.value]]);
}
};
function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
return vue.renderSlot(_ctx.$slots, "default", { ref: "" });
}
const PopoverTrigger = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$1]]);
const min = Math.min;

@@ -1387,7 +1328,33 @@ const max = Math.max;

};
const _sfc_main$1 = vue.defineComponent({
const PropDefs = {
action: String,
anchor: [String, Object, null],
arrowHidden: { type: Boolean, default: void 0 },
arrowSize: Number,
arrowInsetHorizontal: Number,
arrowInsetVertical: Number,
autoHide: { type: Boolean, default: void 0 },
dark: { type: Boolean, default: void 0 },
data: null,
flip: { type: Boolean, default: void 0 },
force: { type: Boolean, default: void 0 },
hideDelay: Number,
interactive: { type: Boolean, default: void 0 },
offsets: Object,
placement: String,
positionFixed: { type: Boolean, default: void 0 },
profile: String,
showDelay: Number,
teleport: String,
transition: Array
};
const _sfc_main$2 = vue.defineComponent({
inheritAttrs: false,
emits: ["before-show", "after-show", "before-hide", "after-hide"],
props: {
name: { type: [Number, String, Symbol] }
...PropDefs,
name: {
type: [Number, String, Symbol],
required: true
}
},

@@ -1397,30 +1364,3 @@ setup(props, { emit }) {

const popoverRef = vue.ref();
const popoverState2 = usePopover();
const state = vue.reactive({
action: "click",
anchor: null,
arrowHidden: false,
arrowSize: 12,
arrowInsetHorizontal: 18,
arrowInsetVertical: 8,
autoHide: false,
dark: false,
data: null,
flip: true,
force: false,
hideDelay: 110,
interactive: true,
name: "",
offsets: {
top: { x: 0, y: 0 },
right: { x: 0, y: 0 },
bottom: { x: 0, y: 0 },
left: { x: 0, y: 0 }
},
placement: "bottom",
positionFixed: false,
profile: "default",
showDelay: 0,
teleport: null,
transition: [],
// Private state

@@ -1432,2 +1372,11 @@ focused: false,

});
const defaultState = vue.computed(
() => assignDeep({}, config.profiles[props.profile ?? "popover"], props)
);
function updateState(newState = {}) {
const { force, ...assignState } = newState;
const profileState = assignState.profile ? config.profiles[assignState.profile] : {};
assignDeep(state, defaultState.value, profileState, assignState);
}
vue.watch(() => props, updateState, { deep: true, immediate: true });
const popperStyle = vue.ref({});

@@ -1437,5 +1386,6 @@ const actualPlacement = vue.ref(null);

...popperStyle.value,
"--caret-size": `${state.arrowSize}px`,
"--caret-inset-horizontal": `${state.arrowInsetHorizontal}px`,
"--caret-inset-vertical": `${state.arrowInsetVertical}px`,
"--arrow-size": `${state.arrowSize}px`,
"--arrow-display": state.arrowHidden ? "none" : "block",
"--arrow-inset-horizontal": `${state.arrowInsetHorizontal}px`,
"--arrow-inset-vertical": `${state.arrowInsetVertical}px`,
"--offset-horizontal": `${state.offsets[direction.value].x}px`,

@@ -1481,6 +1431,2 @@ "--offset-vertical": `${state.offsets[direction.value].y}px`,

});
function updateState(newState) {
const { force, ...assignState } = newState;
Object.assign(state, assignState);
}
function setTimer(delay, fn) {

@@ -1514,2 +1460,9 @@ clearTimeout(timeout);

});
if (state.interactive && state.action === "click" && state.trigger === document.activeElement) {
vue.nextTick(() => {
var _a;
const focusableElements = getFocusableElements();
(_a = focusableElements[0]) == null ? void 0 : _a.focus({ preventScroll: true });
});
}
});

@@ -1528,2 +1481,5 @@ }

state.visible = false;
if (state.trigger && state.interactive && document.activeElement && getFocusableElements().includes(document.activeElement)) {
state.trigger.focus();
}
});

@@ -1629,25 +1585,56 @@ }

}
let cleanup = null;
vue.watchEffect(() => {
vue.watchEffect((onCleanup) => {
const el = resolveEl(state.anchor);
if (!el || !popoverRef.value)
return;
if (cleanup != null) {
cleanup();
onCleanup(
autoUpdate(el, popoverRef.value, () => {
if (el == null || popoverRef.value == null)
return;
computePosition(el, popoverRef.value, {
placement: state.placement,
strategy: state.positionFixed ? "fixed" : "absolute",
middleware: [...middleware.value]
}).then(({ x, y, placement }) => {
actualPlacement.value = placement;
popperStyle.value = {
left: `${x}px`,
top: `${y}px`
};
});
})
);
});
function getFocusableElements() {
var _a;
return [
...((_a = popoverRef.value) == null ? void 0 : _a.querySelectorAll(
"a[href], button, textarea, input, select"
)) ?? []
];
}
function onPopoverKeydown(event) {
if (event.key === "Tab") {
if (popoverRef.value == null)
return;
const focusableElements = getFocusableElements();
const hasFocusableElements = focusableElements.length > 0;
const focusedFirst = hasFocusableElements ? document.activeElement === focusableElements[0] : false;
const focusedLast = hasFocusableElements ? document.activeElement === focusableElements[focusableElements.length - 1] : false;
if (event.shiftKey && focusedFirst) {
event.preventDefault();
focusableElements[focusableElements.length - 1].focus();
} else if (!event.shiftKey && focusedLast) {
event.preventDefault();
focusableElements[0].focus();
}
} else if (event.key === "Esc" || event.key === "Escape") {
event.preventDefault();
hide({ force: true });
}
cleanup = autoUpdate(el, popoverRef.value, () => {
if (el == null || popoverRef.value == null)
return;
computePosition(el, popoverRef.value, {
placement: state.placement,
strategy: state.positionFixed ? "fixed" : "absolute",
middleware: [...middleware.value]
}).then(({ x, y, placement }) => {
actualPlacement.value = placement;
popperStyle.value = {
left: `${x}px`,
top: `${y}px`
};
});
});
}
vue.watchEffect((onCleanup) => {
if (!popoverRef.value || !state.interactive)
return;
onCleanup(on(popoverRef.value, "keydown", onPopoverKeydown));
});

@@ -1661,6 +1648,6 @@ vue.onMounted(() => {

vue.watchEffect(() => {
var _a;
state.name = props.name ?? ((_a = popoverState2.value) == null ? void 0 : _a.name);
if (!state.name) {
if (!props.name) {
console.warn("PopoverContent requires a name from prop or context");
} else {
state.name = props.name;
}

@@ -1675,10 +1662,15 @@ });

return {
...vue.toRefs(state),
actualPlacement,
align,
dark: vue.toRef(state, "dark"),
data: vue.toRef(state, "data"),
direction,
interactive: vue.toRef(state, "interactive"),
middleware,
popoverRef,
profile: vue.toRef(state, "profile"),
style,
direction,
align,
transitionProperty,
middleware,
teleport: vue.toRef(state, "teleport"),
transition: vue.toRef(state, "transition"),
visible: vue.toRef(state, "visible"),
hide,

@@ -1698,5 +1690,10 @@ beforeEnter,

const PopoverContent_vue_vue_type_style_index_0_lang = "";
const _hoisted_1 = ["data-name", "data-hide-arrow", "data-direction", "data-profile", "data-moving"];
const _hoisted_2 = ["data-direction", "data-profile"];
const _hoisted_3 = ["data-direction", "data-align"];
const _export_sfc = (sfc, props) => {
const target = sfc.__vccOpts || sfc;
for (const [key, val] of props) {
target[key] = val;
}
return target;
};
const _hoisted_1 = ["data-direction", "data-align", "data-profile", "data-name"];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {

@@ -1728,7 +1725,2 @@ return vue.openBlock(), vue.createBlock(vue.Teleport, {

]),
"data-name": (_b = _ctx.name) == null ? void 0 : _b.toString(),
"data-hide-arrow": _ctx.arrowHidden,
"data-direction": _ctx.direction,
"data-profile": _ctx.profile,
"data-moving": _ctx.moving,
style: vue.normalizeStyle(_ctx.style),

@@ -1746,3 +1738,6 @@ ref: "popoverRef",

"data-direction": _ctx.direction,
"data-profile": _ctx.profile
"data-align": _ctx.align,
"data-profile": _ctx.profile,
"data-name": (_b = _ctx.name) == null ? void 0 : _b.toString(),
role: "dialog"
}, _ctx.$attrs), [

@@ -1756,10 +1751,5 @@ vue.renderSlot(_ctx.$slots, "default", {

vue.createTextVNode(vue.toDisplayString(_ctx.data), 1)
]),
vue.createElementVNode("span", {
class: "v-popover-caret",
"data-direction": _ctx.direction,
"data-align": _ctx.align
}, null, 8, _hoisted_3)
], 16, _hoisted_2)
], 46, _hoisted_1)) : vue.createCommentVNode("", true)
])
], 16, _hoisted_1)
], 38)) : vue.createCommentVNode("", true)
];

@@ -1771,3 +1761,47 @@ }),

}
const PopoverContent = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render]]);
const PopoverContent = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render]]);
const _sfc_main$1 = {
functional: true,
props: {
...PropDefs,
name: {
type: [Number, String, Symbol],
default: () => Symbol()
}
},
setup(props, { slots }) {
var _a;
function flattenFragments(children) {
return children.flatMap((node) => {
if (node.type === vue.Fragment) {
return flattenFragments(node.children);
}
return [node];
});
}
function validNode(node) {
return ![vue.Comment, vue.Text, vue.Static].some((type) => type === node.type);
}
const slot = (_a = slots.default) == null ? void 0 : _a.call(slots);
if (!slot) {
console.warn("PopoverTrigger requires a default slot");
return null;
}
const el = flattenFragments(slot).find(validNode);
if (!el) {
console.warn("PopoverTrigger requires a valid child");
return slot;
}
return () => {
const trigger = vue.withDirectives(el, [[directive, props]]);
if (slots.content) {
return [
trigger,
vue.h(PopoverContent, { name: props.name }, slots.content)
];
}
return trigger;
};
}
};
const _sfc_main = /* @__PURE__ */ vue.defineComponent({

@@ -1780,18 +1814,10 @@ __name: "Tooltip",

return (_ctx, _cache) => {
return vue.openBlock(), vue.createBlock(Popover, null, {
return vue.openBlock(), vue.createBlock(_sfc_main$1, { profile: "tooltip" }, {
content: vue.withCtx(() => [
vue.renderSlot(_ctx.$slots, "content", {}, () => [
vue.createTextVNode(vue.toDisplayString(__props.content), 1)
])
]),
default: vue.withCtx(() => [
vue.createVNode(PopoverTrigger, vue.mergeProps({ profile: "tooltip" }, _ctx.$attrs), {
default: vue.withCtx(() => [
vue.renderSlot(_ctx.$slots, "default")
]),
_: 3
}, 16),
vue.createVNode(PopoverContent, null, {
default: vue.withCtx(() => [
vue.renderSlot(_ctx.$slots, "content", {}, () => [
vue.createTextVNode(vue.toDisplayString(__props.content), 1)
])
]),
_: 3
})
vue.renderSlot(_ctx.$slots, "default")
]),

@@ -1805,5 +1831,4 @@ _: 3

__proto__: null,
Popover,
PopoverContent,
PopoverTrigger,
PopoverTrigger: _sfc_main$1,
Tooltip: _sfc_main

@@ -1825,5 +1850,4 @@ }, Symbol.toStringTag, { value: "Module" }));

const index = { install, config };
exports.Popover = Popover;
exports.PopoverContent = PopoverContent;
exports.PopoverTrigger = PopoverTrigger;
exports.PopoverTrigger = _sfc_main$1;
exports.Tooltip = _sfc_main;

@@ -1830,0 +1854,0 @@ exports.assignDeep = assignDeep;

@@ -1,34 +0,2 @@

import { inject, computed, provide, renderSlot, reactive, withDirectives, Fragment, Comment, Text, Static, defineComponent, ref, watchEffect, onMounted, onUnmounted, watch, toRefs, openBlock, createBlock, Teleport, createVNode, Transition, withCtx, createElementBlock, normalizeClass, normalizeStyle, createElementVNode, mergeProps, createTextVNode, toDisplayString, createCommentVNode } from "vue";
const contextKey = Symbol("__popover-name__");
function usePopover() {
const context = inject(
contextKey,
void 0
);
return computed(() => context == null ? void 0 : context.value);
}
function providePopover(context) {
provide(contextKey, context);
}
const _sfc_main$3 = {
inheritAttrs: false,
setup(_, { attrs }) {
const context = computed(() => ({
name: Symbol(),
...attrs
}));
providePopover(context);
}
};
const _export_sfc = (sfc, props) => {
const target = sfc.__vccOpts || sfc;
for (const [key, val] of props) {
target[key] = val;
}
return target;
};
function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
return renderSlot(_ctx.$slots, "default");
}
const Popover = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$2]]);
import { unref, ref, defineComponent, reactive, computed, watch, watchEffect, onMounted, onUnmounted, toRef, nextTick, openBlock, createBlock, Teleport, createVNode, Transition, withCtx, createElementBlock, normalizeClass, normalizeStyle, createElementVNode, mergeProps, renderSlot, createTextVNode, toDisplayString, createCommentVNode, withDirectives, h, Fragment, Comment, Text, Static } from "vue";
const isBoolean = (value) => {

@@ -41,5 +9,5 @@ return typeof value === "boolean";

for (const key in source) {
if (typeof source[key] === "object" && target[key]) {
assignDeep(target[key], source[key]);
} else if (source[key] != null) {
if (typeof source[key] === "object" && target[key] && !(source[key] instanceof Element)) {
assignDeep(target[key], source[key], false);
} else if (source[key] !== void 0) {
target[key] = source[key];

@@ -53,2 +21,3 @@ }

const resolveEl = (target) => {
target = unref(target);
if (target == null)

@@ -106,5 +75,7 @@ return null;

if (click) {
const trigger = e.currentTarget;
togglePopover({
...opts,
anchor: opts.anchor || e.currentTarget
trigger,
anchor: opts.anchor || trigger
});

@@ -118,5 +89,7 @@ e.stopPropagation();

if (hover || hoverFocus) {
const trigger = e.currentTarget;
showPopover({
...opts,
anchor: opts.anchor || e.currentTarget
trigger,
anchor: opts.anchor || trigger
});

@@ -138,5 +111,7 @@ }

if (focus || hoverFocus) {
const trigger = e.currentTarget;
showPopover({
...opts,
anchor: opts.anchor || e.currentTarget
trigger,
anchor: opts.anchor || trigger
});

@@ -182,3 +157,3 @@ }

arrowHidden: false,
arrowInsetHorizontal: 18,
arrowInsetHorizontal: 14,
arrowInsetVertical: 8,

@@ -190,8 +165,9 @@ arrowSize: 10,

offsets: {
top: { x: 0, y: 0 },
bottom: { x: 0, y: 0 },
left: { x: 0, y: 0 },
right: { x: 0, y: 0 }
top: { x: 0, y: 8 },
bottom: { x: 0, y: 8 },
left: { x: 8, y: 0 },
right: { x: 8, y: 0 }
},
placement: "top",
teleport: null,
transition: ["fade"]

@@ -203,3 +179,3 @@ },

arrowHidden: true,
arrowInsetHorizontal: 18,
arrowInsetHorizontal: 14,
arrowInsetVertical: 8,

@@ -211,8 +187,9 @@ arrowSize: 12,

offsets: {
top: { x: 0, y: 10 },
bottom: { x: 0, y: 10 },
left: { x: 10, y: 0 },
right: { x: 10, y: 0 }
top: { x: 0, y: 6 },
bottom: { x: 0, y: 6 },
left: { x: 6, y: 0 },
right: { x: 6, y: 0 }
},
placement: "bottom-start",
teleport: "body",
transition: ["fade", "scale", "move"]

@@ -222,8 +199,10 @@ }

};
const popoverState = reactive({});
function resolveOptions(options) {
const profileOptions = options.profile ? config.profiles[options.profile] : {};
return assignDeep({}, profileOptions, options, {
name: options.name ?? profileOptions.name
});
const popoversMap = ref(/* @__PURE__ */ new Map());
function getOrSetPopovers(name) {
if (popoversMap.value.has(name)) {
return popoversMap.value.get(name);
}
const popovers = [];
popoversMap.value.set(name, popovers);
return popovers;
}

@@ -238,6 +217,10 @@ function addHandlers(el, opts) {

}
function resolveOptions(options) {
const profileOptions = options.profile ? config.profiles[options.profile] : {};
return assignDeep({}, profileOptions, options);
}
function addPopover(el, options) {
var _a;
const resolvedOptions = resolveOptions(options);
if (!resolvedOptions.name) {
const name = resolvedOptions.name;
if (!name) {
throw new Error(

@@ -247,4 +230,4 @@ `Popover name is missing from directive options: ${options}`

}
popoverState[_a = resolvedOptions.name] ?? (popoverState[_a] = []);
popoverState[resolvedOptions.name].push({
el.__popover_name__ = name;
getOrSetPopovers(name).push({
el,

@@ -254,2 +237,3 @@ options: resolvedOptions,

});
return () => removePopover(el);
}

@@ -260,9 +244,10 @@ const removeHandlers = (handlers) => {

function removePopover(el) {
Object.entries(popoverState).forEach(([_, popovers]) => {
const index2 = popovers.findIndex((p) => p.el === el);
if (index2 !== -1) {
removeHandlers(popovers[index2].handlers);
popovers.splice(index2, 1);
}
});
const popovers = popoversMap.value.get(el.__popover_name__);
if (!popovers)
return;
const index2 = popovers.findIndex((p) => p.el === el);
if (index2 !== -1) {
removeHandlers(popovers[index2].handlers);
popovers.splice(index2, 1);
}
}

@@ -290,46 +275,2 @@ const directive = {

}, Symbol.toStringTag, { value: "Module" }));
const _sfc_main$2 = {
functional: true,
props: {
name: { type: [Number, String, Symbol] }
},
setup(props, { slots, attrs }) {
var _a;
const parentState = usePopover();
const popoverArgs = computed(
() => assignDeep({ profile: "popover" }, parentState == null ? void 0 : parentState.value, attrs, {
name: props.name
})
);
function flattenFragments(children) {
return children.flatMap((node) => {
if (node.type === Fragment) {
return flattenFragments(node.children);
}
return [node];
});
}
function validNode(node) {
return ![Comment, Text, Static].some((type) => type === node.type);
}
const slot = (_a = slots.default) == null ? void 0 : _a.call(slots);
if (!slot) {
console.warn("PopoverTrigger requires a default slot");
return null;
}
const el = flattenFragments(slot).find(validNode);
if (!el) {
console.warn("PopoverTrigger requires a valid child");
return slot;
}
if (!popoverArgs.value.name) {
console.warn("PopoverTrigger requires a name from prop or context");
}
return () => withDirectives(el, [[directive, popoverArgs.value]]);
}
};
function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
return renderSlot(_ctx.$slots, "default", { ref: "" });
}
const PopoverTrigger = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$1]]);
const min = Math.min;

@@ -1385,7 +1326,33 @@ const max = Math.max;

};
const _sfc_main$1 = defineComponent({
const PropDefs = {
action: String,
anchor: [String, Object, null],
arrowHidden: { type: Boolean, default: void 0 },
arrowSize: Number,
arrowInsetHorizontal: Number,
arrowInsetVertical: Number,
autoHide: { type: Boolean, default: void 0 },
dark: { type: Boolean, default: void 0 },
data: null,
flip: { type: Boolean, default: void 0 },
force: { type: Boolean, default: void 0 },
hideDelay: Number,
interactive: { type: Boolean, default: void 0 },
offsets: Object,
placement: String,
positionFixed: { type: Boolean, default: void 0 },
profile: String,
showDelay: Number,
teleport: String,
transition: Array
};
const _sfc_main$2 = defineComponent({
inheritAttrs: false,
emits: ["before-show", "after-show", "before-hide", "after-hide"],
props: {
name: { type: [Number, String, Symbol] }
...PropDefs,
name: {
type: [Number, String, Symbol],
required: true
}
},

@@ -1395,30 +1362,3 @@ setup(props, { emit }) {

const popoverRef = ref();
const popoverState2 = usePopover();
const state = reactive({
action: "click",
anchor: null,
arrowHidden: false,
arrowSize: 12,
arrowInsetHorizontal: 18,
arrowInsetVertical: 8,
autoHide: false,
dark: false,
data: null,
flip: true,
force: false,
hideDelay: 110,
interactive: true,
name: "",
offsets: {
top: { x: 0, y: 0 },
right: { x: 0, y: 0 },
bottom: { x: 0, y: 0 },
left: { x: 0, y: 0 }
},
placement: "bottom",
positionFixed: false,
profile: "default",
showDelay: 0,
teleport: null,
transition: [],
// Private state

@@ -1430,2 +1370,11 @@ focused: false,

});
const defaultState = computed(
() => assignDeep({}, config.profiles[props.profile ?? "popover"], props)
);
function updateState(newState = {}) {
const { force, ...assignState } = newState;
const profileState = assignState.profile ? config.profiles[assignState.profile] : {};
assignDeep(state, defaultState.value, profileState, assignState);
}
watch(() => props, updateState, { deep: true, immediate: true });
const popperStyle = ref({});

@@ -1435,5 +1384,6 @@ const actualPlacement = ref(null);

...popperStyle.value,
"--caret-size": `${state.arrowSize}px`,
"--caret-inset-horizontal": `${state.arrowInsetHorizontal}px`,
"--caret-inset-vertical": `${state.arrowInsetVertical}px`,
"--arrow-size": `${state.arrowSize}px`,
"--arrow-display": state.arrowHidden ? "none" : "block",
"--arrow-inset-horizontal": `${state.arrowInsetHorizontal}px`,
"--arrow-inset-vertical": `${state.arrowInsetVertical}px`,
"--offset-horizontal": `${state.offsets[direction.value].x}px`,

@@ -1479,6 +1429,2 @@ "--offset-vertical": `${state.offsets[direction.value].y}px`,

});
function updateState(newState) {
const { force, ...assignState } = newState;
Object.assign(state, assignState);
}
function setTimer(delay, fn) {

@@ -1512,2 +1458,9 @@ clearTimeout(timeout);

});
if (state.interactive && state.action === "click" && state.trigger === document.activeElement) {
nextTick(() => {
var _a;
const focusableElements = getFocusableElements();
(_a = focusableElements[0]) == null ? void 0 : _a.focus({ preventScroll: true });
});
}
});

@@ -1526,2 +1479,5 @@ }

state.visible = false;
if (state.trigger && state.interactive && document.activeElement && getFocusableElements().includes(document.activeElement)) {
state.trigger.focus();
}
});

@@ -1627,25 +1583,56 @@ }

}
let cleanup = null;
watchEffect(() => {
watchEffect((onCleanup) => {
const el = resolveEl(state.anchor);
if (!el || !popoverRef.value)
return;
if (cleanup != null) {
cleanup();
onCleanup(
autoUpdate(el, popoverRef.value, () => {
if (el == null || popoverRef.value == null)
return;
computePosition(el, popoverRef.value, {
placement: state.placement,
strategy: state.positionFixed ? "fixed" : "absolute",
middleware: [...middleware.value]
}).then(({ x, y, placement }) => {
actualPlacement.value = placement;
popperStyle.value = {
left: `${x}px`,
top: `${y}px`
};
});
})
);
});
function getFocusableElements() {
var _a;
return [
...((_a = popoverRef.value) == null ? void 0 : _a.querySelectorAll(
"a[href], button, textarea, input, select"
)) ?? []
];
}
function onPopoverKeydown(event) {
if (event.key === "Tab") {
if (popoverRef.value == null)
return;
const focusableElements = getFocusableElements();
const hasFocusableElements = focusableElements.length > 0;
const focusedFirst = hasFocusableElements ? document.activeElement === focusableElements[0] : false;
const focusedLast = hasFocusableElements ? document.activeElement === focusableElements[focusableElements.length - 1] : false;
if (event.shiftKey && focusedFirst) {
event.preventDefault();
focusableElements[focusableElements.length - 1].focus();
} else if (!event.shiftKey && focusedLast) {
event.preventDefault();
focusableElements[0].focus();
}
} else if (event.key === "Esc" || event.key === "Escape") {
event.preventDefault();
hide({ force: true });
}
cleanup = autoUpdate(el, popoverRef.value, () => {
if (el == null || popoverRef.value == null)
return;
computePosition(el, popoverRef.value, {
placement: state.placement,
strategy: state.positionFixed ? "fixed" : "absolute",
middleware: [...middleware.value]
}).then(({ x, y, placement }) => {
actualPlacement.value = placement;
popperStyle.value = {
left: `${x}px`,
top: `${y}px`
};
});
});
}
watchEffect((onCleanup) => {
if (!popoverRef.value || !state.interactive)
return;
onCleanup(on(popoverRef.value, "keydown", onPopoverKeydown));
});

@@ -1659,6 +1646,6 @@ onMounted(() => {

watchEffect(() => {
var _a;
state.name = props.name ?? ((_a = popoverState2.value) == null ? void 0 : _a.name);
if (!state.name) {
if (!props.name) {
console.warn("PopoverContent requires a name from prop or context");
} else {
state.name = props.name;
}

@@ -1673,10 +1660,15 @@ });

return {
...toRefs(state),
actualPlacement,
align,
dark: toRef(state, "dark"),
data: toRef(state, "data"),
direction,
interactive: toRef(state, "interactive"),
middleware,
popoverRef,
profile: toRef(state, "profile"),
style,
direction,
align,
transitionProperty,
middleware,
teleport: toRef(state, "teleport"),
transition: toRef(state, "transition"),
visible: toRef(state, "visible"),
hide,

@@ -1696,5 +1688,10 @@ beforeEnter,

const PopoverContent_vue_vue_type_style_index_0_lang = "";
const _hoisted_1 = ["data-name", "data-hide-arrow", "data-direction", "data-profile", "data-moving"];
const _hoisted_2 = ["data-direction", "data-profile"];
const _hoisted_3 = ["data-direction", "data-align"];
const _export_sfc = (sfc, props) => {
const target = sfc.__vccOpts || sfc;
for (const [key, val] of props) {
target[key] = val;
}
return target;
};
const _hoisted_1 = ["data-direction", "data-align", "data-profile", "data-name"];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {

@@ -1726,7 +1723,2 @@ return openBlock(), createBlock(Teleport, {

]),
"data-name": (_b = _ctx.name) == null ? void 0 : _b.toString(),
"data-hide-arrow": _ctx.arrowHidden,
"data-direction": _ctx.direction,
"data-profile": _ctx.profile,
"data-moving": _ctx.moving,
style: normalizeStyle(_ctx.style),

@@ -1744,3 +1736,6 @@ ref: "popoverRef",

"data-direction": _ctx.direction,
"data-profile": _ctx.profile
"data-align": _ctx.align,
"data-profile": _ctx.profile,
"data-name": (_b = _ctx.name) == null ? void 0 : _b.toString(),
role: "dialog"
}, _ctx.$attrs), [

@@ -1754,10 +1749,5 @@ renderSlot(_ctx.$slots, "default", {

createTextVNode(toDisplayString(_ctx.data), 1)
]),
createElementVNode("span", {
class: "v-popover-caret",
"data-direction": _ctx.direction,
"data-align": _ctx.align
}, null, 8, _hoisted_3)
], 16, _hoisted_2)
], 46, _hoisted_1)) : createCommentVNode("", true)
])
], 16, _hoisted_1)
], 38)) : createCommentVNode("", true)
];

@@ -1769,3 +1759,47 @@ }),

}
const PopoverContent = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render]]);
const PopoverContent = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render]]);
const _sfc_main$1 = {
functional: true,
props: {
...PropDefs,
name: {
type: [Number, String, Symbol],
default: () => Symbol()
}
},
setup(props, { slots }) {
var _a;
function flattenFragments(children) {
return children.flatMap((node) => {
if (node.type === Fragment) {
return flattenFragments(node.children);
}
return [node];
});
}
function validNode(node) {
return ![Comment, Text, Static].some((type) => type === node.type);
}
const slot = (_a = slots.default) == null ? void 0 : _a.call(slots);
if (!slot) {
console.warn("PopoverTrigger requires a default slot");
return null;
}
const el = flattenFragments(slot).find(validNode);
if (!el) {
console.warn("PopoverTrigger requires a valid child");
return slot;
}
return () => {
const trigger = withDirectives(el, [[directive, props]]);
if (slots.content) {
return [
trigger,
h(PopoverContent, { name: props.name }, slots.content)
];
}
return trigger;
};
}
};
const _sfc_main = /* @__PURE__ */ defineComponent({

@@ -1778,18 +1812,10 @@ __name: "Tooltip",

return (_ctx, _cache) => {
return openBlock(), createBlock(Popover, null, {
return openBlock(), createBlock(_sfc_main$1, { profile: "tooltip" }, {
content: withCtx(() => [
renderSlot(_ctx.$slots, "content", {}, () => [
createTextVNode(toDisplayString(__props.content), 1)
])
]),
default: withCtx(() => [
createVNode(PopoverTrigger, mergeProps({ profile: "tooltip" }, _ctx.$attrs), {
default: withCtx(() => [
renderSlot(_ctx.$slots, "default")
]),
_: 3
}, 16),
createVNode(PopoverContent, null, {
default: withCtx(() => [
renderSlot(_ctx.$slots, "content", {}, () => [
createTextVNode(toDisplayString(__props.content), 1)
])
]),
_: 3
})
renderSlot(_ctx.$slots, "default")
]),

@@ -1803,5 +1829,4 @@ _: 3

__proto__: null,
Popover,
PopoverContent,
PopoverTrigger,
PopoverTrigger: _sfc_main$1,
Tooltip: _sfc_main

@@ -1824,5 +1849,4 @@ }, Symbol.toStringTag, { value: "Module" }));

export {
Popover,
PopoverContent,
PopoverTrigger,
_sfc_main$1 as PopoverTrigger,
_sfc_main as Tooltip,

@@ -1829,0 +1853,0 @@ assignDeep,

@@ -1,2 +0,2 @@

var VPopover=function(e,t){"use strict";var o=document.createElement("style");o.textContent='.v-popover-content-wrapper{position:absolute;width:-webkit-max-content;width:max-content;top:0;left:0;display:block;outline:none;z-index:10}.v-popover-content-wrapper:not(.interactive){pointer-events:none}.v-popover-content-wrapper{--arrow-offset: calc(var(--caret-size) * .7)}.v-popover-content-wrapper[data-hide-arrow=true]{--arrow-offset: 0px}.v-popover-content-wrapper[data-hide-arrow=true] .v-popover-caret{display:none}.v-popover-content{position:relative;color:var(--v-popover-content-color);font-weight:var(--v-popover-content-font-weight);font-size:var(--v-popover-content-font-size);background-color:var(--v-popover-content-bg);border:1px solid;border-color:var(--v-popover-content-border);border-radius:var(--v-popover-content-border-radius);padding:var(--v-popover-content-padding);min-width:50px;min-height:18px;text-align:center;outline:none;z-index:10;box-shadow:var(--v-popover-content-shadow)}.v-popover-content[data-direction=top]{margin-bottom:calc(var(--arrow-offset) + var(--offset-vertical))}.v-popover-content[data-direction=bottom]{margin-top:calc(var(--arrow-offset) + var(--offset-vertical))}.v-popover-content[data-direction=right]{margin-left:calc(var(--arrow-offset) + var(--offset-horizontal))}.v-popover-content[data-direction=left]{margin-right:calc(var(--arrow-offset) + var(--offset-horizontal))}.v-popover-caret{content:"";position:absolute;display:block;width:var(--caret-size);height:var(--caret-size);border-top:inherit;border-left:inherit;background-color:inherit;z-index:-1}.v-popover-caret[data-hidden=true]{display:none}.v-popover-caret[data-direction=bottom]{top:0}.v-popover-caret[data-direction=bottom][data-align=left]{-webkit-transform:translateY(-50%) rotate(45deg);transform:translateY(-50%) rotate(45deg)}.v-popover-caret[data-direction=bottom][data-align=center]{-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translate(-50%) translateY(-50%) rotate(45deg)}.v-popover-caret[data-direction=bottom][data-align=right]{-webkit-transform:translateY(-50%) rotate(45deg);transform:translateY(-50%) rotate(45deg)}.v-popover-caret[data-direction=top]{top:100%}.v-popover-caret[data-direction=top][data-align=left]{-webkit-transform:translateY(-50%) rotate(-135deg);transform:translateY(-50%) rotate(-135deg)}.v-popover-caret[data-direction=top][data-align=center]{-webkit-transform:translateX(-50%) translateY(-50%) rotate(-135deg);transform:translate(-50%) translateY(-50%) rotate(-135deg)}.v-popover-caret[data-direction=top][data-align=right]{-webkit-transform:translateY(-50%) rotate(-135deg);transform:translateY(-50%) rotate(-135deg)}.v-popover-caret[data-direction=left]{left:100%}.v-popover-caret[data-direction=left][data-align=top]{-webkit-transform:translateX(-50%) rotate(135deg);transform:translate(-50%) rotate(135deg)}.v-popover-caret[data-direction=left][data-align=middle]{-webkit-transform:translateY(-50%) translateX(-50%) rotate(135deg);transform:translateY(-50%) translate(-50%) rotate(135deg)}.v-popover-caret[data-direction=left][data-align=bottom]{-webkit-transform:translateX(-50%) rotate(135deg);transform:translate(-50%) rotate(135deg)}.v-popover-caret[data-direction=right]{left:0}.v-popover-caret[data-direction=right][data-align=top]{-webkit-transform:translateX(-50%) rotate(-45deg);transform:translate(-50%) rotate(-45deg)}.v-popover-caret[data-direction=right][data-align=middle]{-webkit-transform:translateY(-50%) translateX(-50%) rotate(-45deg);transform:translateY(-50%) translate(-50%) rotate(-45deg)}.v-popover-caret[data-direction=right][data-align=bottom]{-webkit-transform:translateX(-50%) rotate(-45deg);transform:translate(-50%) rotate(-45deg)}.v-popover-caret[data-align=left]{left:var(--caret-inset-horizontal)}.v-popover-caret[data-align=center]{left:50%}.v-popover-caret[data-align=right]{right:var(--caret-inset-horizontal)}.v-popover-caret[data-align=top]{top:var(--caret-inset-vertical)}.v-popover-caret[data-align=middle]{top:50%}.v-popover-caret[data-align=bottom]{bottom:var(--caret-inset-vertical)}.v-popover-transition{transition-property:var(--transition-property);transition-duration:var(--v-popover-transition-duration);transition-timing-function:var(--v-popover-transition-timing)}.v-popover-transition.v-enter-active,.v-popover-transition.v-leave-active{-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:none}.v-popover-transition.v-enter-from{-webkit-transform:var(--translate-x-from,) var(--translate-y-from,) var(--scale-x-from,) var(--scale-y-from,);transform:var(--translate-x-from,) var(--translate-y-from,) var(--scale-x-from,) var(--scale-y-from,)}.v-popover-transition.v-leave-to{-webkit-transform:var(--translate-x-to,) var(--translate-y-to,) var(--scale-x-to,) var(--scale-y-to,);transform:var(--translate-x-to,) var(--translate-y-to,) var(--scale-x-to,) var(--scale-y-to,)}.v-popover-transition-slide[data-direction=top]{--translate-y-from: translateY( var(--v-popover-transition-translate-y-from) );--translate-y-to: translateY(var(--v-popover-transition-translate-y-to))}.v-popover-transition-slide[data-direction=bottom]{--translate-y-from: translateY( calc(-1 * var(--v-popover-transition-translate-y-from)) );--translate-y-to: translateY( calc(-1 * var(--v-popover-transition-translate-y-to)) )}.v-popover-transition-slide[data-direction=left]{--translate-x-from: translateX( var(--v-popover-transition-translate-x-from) );--translate-x-to: translateX(var(--v-popover-transition-translate-x-to))}.v-popover-transition-slide[data-direction=right]{--translate-x-from: translateX( calc(-1 * var(--v-popover-transition-translate-x-from)) );--translate-x-to: translateX( calc(-1 * var(--v-popover-transition-translate-x-to)) )}.v-popover-transition-scale{--scale-x-from: scaleX(var(--v-popover-transition-scale-x-from));--scale-x-to: scaleX(var(--v-popover-transition-scale-x-to));--scale-y-from: scaleY(var(--v-popover-transition-scale-y-from));--scale-y-to: scaleY(var(--v-popover-transition-scale-y-to))}.v-popover-transition-fade.v-enter-from,.v-popover-transition-fade.v-leave-to{opacity:0}:root{--v-popover-white: #ffffff;--v-popover-black: #000000;--v-popover-gray-50: #f8fafc;--v-popover-gray-100: #f1f5f9;--v-popover-gray-200: #e2e8f0;--v-popover-gray-300: #cbd5e1;--v-popover-gray-400: #94a3b8;--v-popover-gray-500: #64748b;--v-popover-gray-600: #475569;--v-popover-gray-700: #334155;--v-popover-gray-800: #1e293b;--v-popover-gray-900: #0f172a;--v-popover-transition-duration: .15s;--v-popover-transition-timing: ease;--v-popover-transition-translate-x-from: 22px;--v-popover-transition-translate-x-to: 22px;--v-popover-transition-translate-y-from: 22px;--v-popover-transition-translate-y-to: 22px;--v-popover-transition-scale-x-from: .9;--v-popover-transition-scale-x-to: .9;--v-popover-transition-scale-y-from: .9;--v-popover-transition-scale-y-to: .9;--v-popover-content-font-size: 14px;--v-popover-content-font-weight: 500;--v-popover-content-border-radius: .5rem;--v-popover-content-padding: 2px;--v-popover-content-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--v-popover-content-color: var(--v-popover-gray-900);--v-popover-content-bg: var(--v-popover-gray-50);--v-popover-content-border: var(--v-popover-gray-300)}.v-popover-content[data-profile=tooltip]{--v-popover-content-border-radius: .25rem;--v-popover-content-padding: 0px 6px;--v-popover-content-shadow: 0 1px 2px 0 rgb(0 0 0 / .05)}.v-popover-gray{--v-popover-accent-50: var(--v-popover-gray-50);--v-popover-accent-100: var(--v-popover-gray-100);--v-popover-accent-200: var(--v-popover-gray-200);--v-popover-accent-300: var(--v-popover-gray-300);--v-popover-accent-400: var(--v-popover-gray-400);--v-popover-accent-500: var(--v-popover-gray-500);--v-popover-accent-600: var(--v-popover-gray-600);--v-popover-accent-700: var(--v-popover-gray-700);--v-popover-accent-800: var(--v-popover-gray-800);--v-popover-accent-900: var(--v-popover-gray-900)}.v-popover-dark{--v-popover-content-color: var(--v-popover-white);--v-popover-content-bg: var(--v-popover-gray-800);--v-popover-content-border: var(--v-popover-gray-700)}\n',document.head.appendChild(o);const n=Symbol("__popover-name__");function usePopover(){const e=t.inject(n,void 0);return t.computed((()=>null==e?void 0:e.value))}const _export_sfc=(e,t)=>{const o=e.__vccOpts||e;for(const[n,r]of t)o[n]=r;return o};const r=_export_sfc({inheritAttrs:!1,setup(e,{attrs:o}){!function providePopover(e){t.provide(n,e)}(t.computed((()=>({name:Symbol(),...o}))))}},[["render",function _sfc_render$2(e,o,n,r,a,i){return t.renderSlot(e.$slots,"default")}]]);function assignDeep(e,...t){for(let o of t)if(null!=o)for(const t in o)"object"==typeof o[t]&&e[t]?assignDeep(e[t],o[t]):null!=o[t]&&(e[t]=o[t]);return e}const resolveEl=e=>null==e?null:document&&"string"==typeof e?document.querySelector(e):e.$el??e,off=(e,t,o,n=undefined)=>{e.removeEventListener(t,o,n)},on=(e,t,o,n=undefined)=>(e.addEventListener(t,o,n),()=>off(e,t,o,n)),elementContains=(e,t)=>!!e&&!!t&&(e===t||e.contains(t));function showPopover(e){document&&document.dispatchEvent(new CustomEvent("show-popover",{detail:e}))}function hidePopover(e){document&&document.dispatchEvent(new CustomEvent("hide-popover",{detail:e}))}function togglePopover(e){document&&document.dispatchEvent(new CustomEvent("toggle-popover",{detail:e}))}function getPopoverEventHandlers(e){const{action:t="click"}=e,o="click"===t,n="hover"===t,r="hover-focus"===t,a="focus"===t;let i=!1,l=!1;const clickHandler=t=>{o&&(togglePopover({...e,anchor:e.anchor||t.currentTarget}),t.stopPropagation())},mouseMoveHandler=t=>{i||(i=!0,(n||r)&&showPopover({...e,anchor:e.anchor||t.currentTarget}))},mouseLeaveHandler=()=>{i&&(i=!1,(n||r&&!l)&&hidePopover(e))},focusInHandler=t=>{l||(l=!0,(a||r)&&showPopover({...e,anchor:e.anchor||t.currentTarget}))},focusOutHandler=t=>{l&&!elementContains(t.currentTarget,t.relatedTarget)&&(l=!1,(a||r&&!i)&&hidePopover(e))},c={};switch(t){case"click":c.click=clickHandler;break;case"hover":c.mousemove=mouseMoveHandler,c.mouseleave=mouseLeaveHandler;break;case"focus":c.focusin=focusInHandler,c.focusout=focusOutHandler;break;case"hover-focus":c.mousemove=mouseMoveHandler,c.mouseleave=mouseLeaveHandler,c.focusin=focusInHandler,c.focusout=focusOutHandler}return c}const a={componentPrefix:"",profiles:{tooltip:{action:"hover",arrowHidden:!1,arrowInsetHorizontal:18,arrowInsetVertical:8,arrowSize:10,dark:!0,flip:!0,interactive:!1,offsets:{top:{x:0,y:0},bottom:{x:0,y:0},left:{x:0,y:0},right:{x:0,y:0}},placement:"top",transition:["fade"]},popover:{action:"click",autoHide:!1,arrowHidden:!0,arrowInsetHorizontal:18,arrowInsetVertical:8,arrowSize:12,dark:!1,flip:!0,interactive:!0,offsets:{top:{x:0,y:10},bottom:{x:0,y:10},left:{x:10,y:0},right:{x:10,y:0}},placement:"bottom-start",transition:["fade","scale","move"]}}},i=t.reactive({});function addHandlers(e,t){const o=[],n=getPopoverEventHandlers(t);return Object.entries(n).forEach((([t,n])=>{o.push(on(e,t,n))})),o}function addPopover(e,t){var o;const n=function resolveOptions(e){const t=e.profile?a.profiles[e.profile]:{};return assignDeep({},t,e,{name:e.name??t.name})}(t);if(!n.name)throw new Error(`Popover name is missing from directive options: ${t}`);i[o=n.name]??(i[o]=[]),i[n.name].push({el:e,options:n,handlers:addHandlers(e,n)})}function removePopover(e){Object.entries(i).forEach((([t,o])=>{const n=o.findIndex((t=>t.el===e));-1!==n&&(o[n].handlers.forEach((e=>e())),o.splice(n,1))}))}const l={mounted(e,t){const{value:o}=t;o&&addPopover(e,o)},updated(e,t){removePopover(e),t.value&&addPopover(e,t.value)},unmounted(e){removePopover(e)}},c=Object.freeze(Object.defineProperty({__proto__:null,popover:l},Symbol.toStringTag,{value:"Module"}));const s=_export_sfc({functional:!0,props:{name:{type:[Number,String,Symbol]}},setup(e,{slots:o,attrs:n}){var r;const a=usePopover(),i=t.computed((()=>assignDeep({profile:"popover"},null==a?void 0:a.value,n,{name:e.name})));const c=null==(r=o.default)?void 0:r.call(o);if(!c)return console.warn("PopoverTrigger requires a default slot"),null;const s=function flattenFragments(e){return e.flatMap((e=>e.type===t.Fragment?flattenFragments(e.children):[e]))}(c).find((function validNode(e){return![t.Comment,t.Text,t.Static].some((t=>t===e.type))}));return s?(i.value.name||console.warn("PopoverTrigger requires a name from prop or context"),()=>t.withDirectives(s,[[l,i.value]])):(console.warn("PopoverTrigger requires a valid child"),c)}},[["render",function _sfc_render$1(e,o,n,r,a,i){return t.renderSlot(e.$slots,"default",{ref:""})}]]),p=Math.min,v=Math.max,d=Math.round,f=Math.floor,createCoords=e=>({x:e,y:e}),u={left:"right",right:"left",bottom:"top",top:"bottom"},g={start:"end",end:"start"};function evaluate(e,t){return"function"==typeof e?e(t):e}function getSide(e){return e.split("-")[0]}function getAlignment(e){return e.split("-")[1]}function getAxisLength(e){return"y"===e?"height":"width"}function getSideAxis(e){return["top","bottom"].includes(getSide(e))?"y":"x"}function getAlignmentAxis(e){return function getOppositeAxis(e){return"x"===e?"y":"x"}(getSideAxis(e))}function getOppositeAlignmentPlacement(e){return e.replace(/start|end/g,(e=>g[e]))}function getOppositePlacement(e){return e.replace(/left|right|bottom|top/g,(e=>u[e]))}function rectToClientRect(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}function computeCoordsFromPlacement(e,t,o){let{reference:n,floating:r}=e;const a=getSideAxis(t),i=getAlignmentAxis(t),l=getAxisLength(i),c=getSide(t),s="y"===a,p=n.x+n.width/2-r.width/2,v=n.y+n.height/2-r.height/2,d=n[l]/2-r[l]/2;let f;switch(c){case"top":f={x:p,y:n.y-r.height};break;case"bottom":f={x:p,y:n.y+n.height};break;case"right":f={x:n.x+n.width,y:v};break;case"left":f={x:n.x-r.width,y:v};break;default:f={x:n.x,y:n.y}}switch(getAlignment(t)){case"start":f[i]-=d*(o&&s?-1:1);break;case"end":f[i]+=d*(o&&s?-1:1)}return f}const flip=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var o,n;const{placement:r,middlewareData:a,rects:i,initialPlacement:l,platform:c,elements:s}=t,{mainAxis:p=!0,crossAxis:v=!0,fallbackPlacements:d,fallbackStrategy:f="bestFit",fallbackAxisSideDirection:u="none",flipAlignment:g=!0,...m}=evaluate(e,t);if(null!=(o=a.arrow)&&o.alignmentOffset)return{};const h=getSide(r),w=getSide(l)===l,y=await(null==c.isRTL?void 0:c.isRTL(s.floating)),b=d||(w||!g?[getOppositePlacement(l)]:function getExpandedPlacements(e){const t=getOppositePlacement(e);return[getOppositeAlignmentPlacement(e),t,getOppositeAlignmentPlacement(t)]}(l));d||"none"===u||b.push(...function getOppositeAxisPlacements(e,t,o,n){const r=getAlignment(e);let a=function getSideList(e,t,o){const n=["left","right"],r=["right","left"],a=["top","bottom"],i=["bottom","top"];switch(e){case"top":case"bottom":return o?t?r:n:t?n:r;case"left":case"right":return t?a:i;default:return[]}}(getSide(e),"start"===o,n);return r&&(a=a.map((e=>e+"-"+r)),t&&(a=a.concat(a.map(getOppositeAlignmentPlacement)))),a}(l,g,u,y));const x=[l,...b],E=await async function detectOverflow(e,t){var o;void 0===t&&(t={});const{x:n,y:r,platform:a,rects:i,elements:l,strategy:c}=e,{boundary:s="clippingAncestors",rootBoundary:p="viewport",elementContext:v="floating",altBoundary:d=!1,padding:f=0}=evaluate(t,e),u=function getPaddingObject(e){return"number"!=typeof e?function expandPaddingObject(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}(f),g=l[d?"floating"===v?"reference":"floating":v],m=rectToClientRect(await a.getClippingRect({element:null==(o=await(null==a.isElement?void 0:a.isElement(g)))||o?g:g.contextElement||await(null==a.getDocumentElement?void 0:a.getDocumentElement(l.floating)),boundary:s,rootBoundary:p,strategy:c})),h="floating"===v?{...i.floating,x:n,y:r}:i.reference,w=await(null==a.getOffsetParent?void 0:a.getOffsetParent(l.floating)),y=await(null==a.isElement?void 0:a.isElement(w))&&await(null==a.getScale?void 0:a.getScale(w))||{x:1,y:1},b=rectToClientRect(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({rect:h,offsetParent:w,strategy:c}):h);return{top:(m.top-b.top+u.top)/y.y,bottom:(b.bottom-m.bottom+u.bottom)/y.y,left:(m.left-b.left+u.left)/y.x,right:(b.right-m.right+u.right)/y.x}}(t,m),P=[];let C=(null==(n=a.flip)?void 0:n.overflows)||[];if(p&&P.push(E[h]),v){const e=function getAlignmentSides(e,t,o){void 0===o&&(o=!1);const n=getAlignment(e),r=getAlignmentAxis(e),a=getAxisLength(r);let i="x"===r?n===(o?"end":"start")?"right":"left":"start"===n?"bottom":"top";return t.reference[a]>t.floating[a]&&(i=getOppositePlacement(i)),[i,getOppositePlacement(i)]}(r,i,y);P.push(E[e[0]],E[e[1]])}if(C=[...C,{placement:r,overflows:P}],!P.every((e=>e<=0))){var S,T;const e=((null==(S=a.flip)?void 0:S.index)||0)+1,t=x[e];if(t)return{data:{index:e,overflows:C},reset:{placement:t}};let o=null==(T=C.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:T.placement;if(!o)switch(f){case"bestFit":{var O;const e=null==(O=C.map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:O[0];e&&(o=e);break}case"initialPlacement":o=l}if(r!==o)return{reset:{placement:o}}}return{}}}};function getNodeName(e){return isNode(e)?(e.nodeName||"").toLowerCase():"#document"}function getWindow(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function getDocumentElement(e){var t;return null==(t=(isNode(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function isNode(e){return e instanceof Node||e instanceof getWindow(e).Node}function isElement(e){return e instanceof Element||e instanceof getWindow(e).Element}function isHTMLElement(e){return e instanceof HTMLElement||e instanceof getWindow(e).HTMLElement}function isShadowRoot(e){return"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof getWindow(e).ShadowRoot)}function isOverflowElement(e){const{overflow:t,overflowX:o,overflowY:n,display:r}=getComputedStyle(e);return/auto|scroll|overlay|hidden|clip/.test(t+n+o)&&!["inline","contents"].includes(r)}function isTableElement(e){return["table","td","th"].includes(getNodeName(e))}function isContainingBlock(e){const t=isWebKit(),o=getComputedStyle(e);return"none"!==o.transform||"none"!==o.perspective||!!o.containerType&&"normal"!==o.containerType||!t&&!!o.backdropFilter&&"none"!==o.backdropFilter||!t&&!!o.filter&&"none"!==o.filter||["transform","perspective","filter"].some((e=>(o.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(o.contain||"").includes(e)))}function isWebKit(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function isLastTraversableNode(e){return["html","body","#document"].includes(getNodeName(e))}function getComputedStyle(e){return getWindow(e).getComputedStyle(e)}function getNodeScroll(e){return isElement(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function getParentNode(e){if("html"===getNodeName(e))return e;const t=e.assignedSlot||e.parentNode||isShadowRoot(e)&&e.host||getDocumentElement(e);return isShadowRoot(t)?t.host:t}function getNearestOverflowAncestor(e){const t=getParentNode(e);return isLastTraversableNode(t)?e.ownerDocument?e.ownerDocument.body:e.body:isHTMLElement(t)&&isOverflowElement(t)?t:getNearestOverflowAncestor(t)}function getOverflowAncestors(e,t,o){var n;void 0===t&&(t=[]),void 0===o&&(o=!0);const r=getNearestOverflowAncestor(e),a=r===(null==(n=e.ownerDocument)?void 0:n.body),i=getWindow(r);return a?t.concat(i,i.visualViewport||[],isOverflowElement(r)?r:[],i.frameElement&&o?getOverflowAncestors(i.frameElement):[]):t.concat(r,getOverflowAncestors(r,[],o))}function getCssDimensions(e){const t=getComputedStyle(e);let o=parseFloat(t.width)||0,n=parseFloat(t.height)||0;const r=isHTMLElement(e),a=r?e.offsetWidth:o,i=r?e.offsetHeight:n,l=d(o)!==a||d(n)!==i;return l&&(o=a,n=i),{width:o,height:n,$:l}}function unwrapElement(e){return isElement(e)?e:e.contextElement}function getScale(e){const t=unwrapElement(e);if(!isHTMLElement(t))return createCoords(1);const o=t.getBoundingClientRect(),{width:n,height:r,$:a}=getCssDimensions(t);let i=(a?d(o.width):o.width)/n,l=(a?d(o.height):o.height)/r;return i&&Number.isFinite(i)||(i=1),l&&Number.isFinite(l)||(l=1),{x:i,y:l}}const m=createCoords(0);function getVisualOffsets(e){const t=getWindow(e);return isWebKit()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:m}function getBoundingClientRect(e,t,o,n){void 0===t&&(t=!1),void 0===o&&(o=!1);const r=e.getBoundingClientRect(),a=unwrapElement(e);let i=createCoords(1);t&&(n?isElement(n)&&(i=getScale(n)):i=getScale(e));const l=function shouldAddVisualOffsets(e,t,o){return void 0===t&&(t=!1),!(!o||t&&o!==getWindow(e))&&t}(a,o,n)?getVisualOffsets(a):createCoords(0);let c=(r.left+l.x)/i.x,s=(r.top+l.y)/i.y,p=r.width/i.x,v=r.height/i.y;if(a){const e=getWindow(a),t=n&&isElement(n)?getWindow(n):n;let o=e.frameElement;for(;o&&n&&t!==e;){const e=getScale(o),t=o.getBoundingClientRect(),n=getComputedStyle(o),r=t.left+(o.clientLeft+parseFloat(n.paddingLeft))*e.x,a=t.top+(o.clientTop+parseFloat(n.paddingTop))*e.y;c*=e.x,s*=e.y,p*=e.x,v*=e.y,c+=r,s+=a,o=getWindow(o).frameElement}}return rectToClientRect({width:p,height:v,x:c,y:s})}function getWindowScrollBarX(e){return getBoundingClientRect(getDocumentElement(e)).left+getNodeScroll(e).scrollLeft}function getClientRectFromClippingAncestor(e,t,o){let n;if("viewport"===t)n=function getViewportRect(e,t){const o=getWindow(e),n=getDocumentElement(e),r=o.visualViewport;let a=n.clientWidth,i=n.clientHeight,l=0,c=0;if(r){a=r.width,i=r.height;const e=isWebKit();(!e||e&&"fixed"===t)&&(l=r.offsetLeft,c=r.offsetTop)}return{width:a,height:i,x:l,y:c}}(e,o);else if("document"===t)n=function getDocumentRect(e){const t=getDocumentElement(e),o=getNodeScroll(e),n=e.ownerDocument.body,r=v(t.scrollWidth,t.clientWidth,n.scrollWidth,n.clientWidth),a=v(t.scrollHeight,t.clientHeight,n.scrollHeight,n.clientHeight);let i=-o.scrollLeft+getWindowScrollBarX(e);const l=-o.scrollTop;return"rtl"===getComputedStyle(n).direction&&(i+=v(t.clientWidth,n.clientWidth)-r),{width:r,height:a,x:i,y:l}}(getDocumentElement(e));else if(isElement(t))n=function getInnerBoundingClientRect(e,t){const o=getBoundingClientRect(e,!0,"fixed"===t),n=o.top+e.clientTop,r=o.left+e.clientLeft,a=isHTMLElement(e)?getScale(e):createCoords(1);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:r*a.x,y:n*a.y}}(t,o);else{const o=getVisualOffsets(e);n={...t,x:t.x-o.x,y:t.y-o.y}}return rectToClientRect(n)}function hasFixedPositionAncestor(e,t){const o=getParentNode(e);return!(o===t||!isElement(o)||isLastTraversableNode(o))&&("fixed"===getComputedStyle(o).position||hasFixedPositionAncestor(o,t))}function getRectRelativeToOffsetParent(e,t,o){const n=isHTMLElement(t),r=getDocumentElement(t),a="fixed"===o,i=getBoundingClientRect(e,!0,a,t);let l={scrollLeft:0,scrollTop:0};const c=createCoords(0);if(n||!n&&!a)if(("body"!==getNodeName(t)||isOverflowElement(r))&&(l=getNodeScroll(t)),n){const e=getBoundingClientRect(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}else r&&(c.x=getWindowScrollBarX(r));return{x:i.left+l.scrollLeft-c.x,y:i.top+l.scrollTop-c.y,width:i.width,height:i.height}}function getTrueOffsetParent(e,t){return isHTMLElement(e)&&"fixed"!==getComputedStyle(e).position?t?t(e):e.offsetParent:null}function getOffsetParent(e,t){const o=getWindow(e);if(!isHTMLElement(e))return o;let n=getTrueOffsetParent(e,t);for(;n&&isTableElement(n)&&"static"===getComputedStyle(n).position;)n=getTrueOffsetParent(n,t);return n&&("html"===getNodeName(n)||"body"===getNodeName(n)&&"static"===getComputedStyle(n).position&&!isContainingBlock(n))?o:n||function getContainingBlock(e){let t=getParentNode(e);for(;isHTMLElement(t)&&!isLastTraversableNode(t);){if(isContainingBlock(t))return t;t=getParentNode(t)}return null}(e)||o}const h={convertOffsetParentRelativeRectToViewportRelativeRect:function convertOffsetParentRelativeRectToViewportRelativeRect(e){let{rect:t,offsetParent:o,strategy:n}=e;const r=isHTMLElement(o),a=getDocumentElement(o);if(o===a)return t;let i={scrollLeft:0,scrollTop:0},l=createCoords(1);const c=createCoords(0);if((r||!r&&"fixed"!==n)&&(("body"!==getNodeName(o)||isOverflowElement(a))&&(i=getNodeScroll(o)),isHTMLElement(o))){const e=getBoundingClientRect(o);l=getScale(o),c.x=e.x+o.clientLeft,c.y=e.y+o.clientTop}return{width:t.width*l.x,height:t.height*l.y,x:t.x*l.x-i.scrollLeft*l.x+c.x,y:t.y*l.y-i.scrollTop*l.y+c.y}},getDocumentElement:getDocumentElement,getClippingRect:function getClippingRect(e){let{element:t,boundary:o,rootBoundary:n,strategy:r}=e;const a=[..."clippingAncestors"===o?function getClippingElementAncestors(e,t){const o=t.get(e);if(o)return o;let n=getOverflowAncestors(e,[],!1).filter((e=>isElement(e)&&"body"!==getNodeName(e))),r=null;const a="fixed"===getComputedStyle(e).position;let i=a?getParentNode(e):e;for(;isElement(i)&&!isLastTraversableNode(i);){const t=getComputedStyle(i),o=isContainingBlock(i);o||"fixed"!==t.position||(r=null),(a?!o&&!r:!o&&"static"===t.position&&r&&["absolute","fixed"].includes(r.position)||isOverflowElement(i)&&!o&&hasFixedPositionAncestor(e,i))?n=n.filter((e=>e!==i)):r=t,i=getParentNode(i)}return t.set(e,n),n}(t,this._c):[].concat(o),n],i=a[0],l=a.reduce(((e,o)=>{const n=getClientRectFromClippingAncestor(t,o,r);return e.top=v(n.top,e.top),e.right=p(n.right,e.right),e.bottom=p(n.bottom,e.bottom),e.left=v(n.left,e.left),e}),getClientRectFromClippingAncestor(t,i,r));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},getOffsetParent:getOffsetParent,getElementRects:async function(e){let{reference:t,floating:o,strategy:n}=e;const r=this.getOffsetParent||getOffsetParent,a=this.getDimensions;return{reference:getRectRelativeToOffsetParent(t,await r(o),n),floating:{x:0,y:0,...await a(o)}}},getClientRects:function getClientRects(e){return Array.from(e.getClientRects())},getDimensions:function getDimensions(e){return getCssDimensions(e)},getScale:getScale,isElement:isElement,isRTL:function isRTL(e){return"rtl"===getComputedStyle(e).direction}};function autoUpdate(e,t,o,n){void 0===n&&(n={});const{ancestorScroll:r=!0,ancestorResize:a=!0,elementResize:i="function"==typeof ResizeObserver,layoutShift:l="function"==typeof IntersectionObserver,animationFrame:c=!1}=n,s=unwrapElement(e),d=r||a?[...s?getOverflowAncestors(s):[],...getOverflowAncestors(t)]:[];d.forEach((e=>{r&&e.addEventListener("scroll",o,{passive:!0}),a&&e.addEventListener("resize",o)}));const u=s&&l?function observeMove(e,t){let o,n=null;const r=getDocumentElement(e);function cleanup(){clearTimeout(o),n&&n.disconnect(),n=null}return function refresh(a,i){void 0===a&&(a=!1),void 0===i&&(i=1),cleanup();const{left:l,top:c,width:s,height:d}=e.getBoundingClientRect();if(a||t(),!s||!d)return;const u={rootMargin:-f(c)+"px "+-f(r.clientWidth-(l+s))+"px "+-f(r.clientHeight-(c+d))+"px "+-f(l)+"px",threshold:v(0,p(1,i))||1};let g=!0;function handleObserve(e){const t=e[0].intersectionRatio;if(t!==i){if(!g)return refresh();t?refresh(!1,t):o=setTimeout((()=>{refresh(!1,1e-7)}),100)}g=!1}try{n=new IntersectionObserver(handleObserve,{...u,root:r.ownerDocument})}catch(m){n=new IntersectionObserver(handleObserve,u)}n.observe(e)}(!0),cleanup}(s,o):null;let g,m=-1,h=null;i&&(h=new ResizeObserver((e=>{let[n]=e;n&&n.target===s&&h&&(h.unobserve(t),cancelAnimationFrame(m),m=requestAnimationFrame((()=>{h&&h.observe(t)}))),o()})),s&&!c&&h.observe(s),h.observe(t));let w=c?getBoundingClientRect(e):null;return c&&function frameLoop(){const t=getBoundingClientRect(e);!w||t.x===w.x&&t.y===w.y&&t.width===w.width&&t.height===w.height||o();w=t,g=requestAnimationFrame(frameLoop)}(),o(),()=>{d.forEach((e=>{r&&e.removeEventListener("scroll",o),a&&e.removeEventListener("resize",o)})),u&&u(),h&&h.disconnect(),h=null,c&&cancelAnimationFrame(g)}}const computePosition=(e,t,o)=>{const n=new Map,r={platform:h,...o},a={...r.platform,_c:n};return(async(e,t,o)=>{const{placement:n="bottom",strategy:r="absolute",middleware:a=[],platform:i}=o,l=a.filter(Boolean),c=await(null==i.isRTL?void 0:i.isRTL(t));let s=await i.getElementRects({reference:e,floating:t,strategy:r}),{x:p,y:v}=computeCoordsFromPlacement(s,n,c),d=n,f={},u=0;for(let g=0;g<l.length;g++){const{name:o,fn:a}=l[g],{x:m,y:h,data:w,reset:y}=await a({x:p,y:v,initialPlacement:n,placement:d,strategy:r,middlewareData:f,rects:s,platform:i,elements:{reference:e,floating:t}});p=null!=m?m:p,v=null!=h?h:v,f={...f,[o]:{...f[o],...w}},y&&u<=50&&(u++,"object"==typeof y&&(y.placement&&(d=y.placement),y.rects&&(s=!0===y.rects?await i.getElementRects({reference:e,floating:t,strategy:r}):y.rects),({x:p,y:v}=computeCoordsFromPlacement(s,d,c))),g=-1)}return{x:p,y:v,placement:d,strategy:r,middlewareData:f}})(e,t,{...r,platform:a})},w=t.defineComponent({inheritAttrs:!1,emits:["before-show","after-show","before-hide","after-hide"],props:{name:{type:[Number,String,Symbol]}},setup(e,{emit:o}){let n;const r=t.ref(),a=usePopover(),i=t.reactive({action:"click",anchor:null,arrowHidden:!1,arrowSize:12,arrowInsetHorizontal:18,arrowInsetVertical:8,autoHide:!1,dark:!1,data:null,flip:!0,force:!1,hideDelay:110,interactive:!0,name:"",offsets:{top:{x:0,y:0},right:{x:0,y:0},bottom:{x:0,y:0},left:{x:0,y:0}},placement:"bottom",positionFixed:!1,profile:"default",showDelay:0,teleport:null,transition:[],focused:!1,hovered:!1,visible:!1,moving:!1}),l=t.ref({}),c=t.ref(null),s=t.computed((()=>({...l.value,"--caret-size":`${i.arrowSize}px`,"--caret-inset-horizontal":`${i.arrowInsetHorizontal}px`,"--caret-inset-vertical":`${i.arrowInsetVertical}px`,"--offset-horizontal":`${i.offsets[v.value].x}px`,"--offset-vertical":`${i.offsets[v.value].y}px`,"--transition-property":f.value}))),p=t.computed((()=>{return i.flip?[flip((e=i.flip,"boolean"==typeof e?void 0:i.flip))]:[];var e})),v=t.computed((()=>(c.value??i.placement??"bottom").split("-")[0])),d=t.computed((()=>{const e="left"===v.value||"right"===v.value;let t="";const o=(c.value??i.placement??"").split("-");return o.length>1&&(t=o[1]),["start","top","left"].includes(t)?e?"top":"left":["end","bottom","right"].includes(t)?e?"bottom":"right":e?"middle":"center"})),f=t.computed((()=>{const e=[];return i.transition.includes("fade")&&e.push("opacity"),i.transition.includes("scale")&&e.push("transform"),i.transition.includes("move")&&i.moving&&e.push("top, right, bottom, left"),e.join(", ")}));function setTimer(e,t){clearTimeout(n),e>0?n=setTimeout(t,e):t()}function isCurrentAnchor(e){if(!e||!i.anchor)return!1;return resolveEl(e)===resolveEl(i.anchor)}async function show(e={}){i.force||(e.force&&(i.force=!0),setTimer(e.showDelay??i.showDelay,(()=>{i.visible&&(i.force=!1),function updateState(e){const{force:t,...o}=e;Object.assign(i,o)}({...e,visible:!0})})))}function hide(e={}){e.anchor&&!isCurrentAnchor(e.anchor)||i.force||(e.force&&(i.force=!0),setTimer(e.hideDelay??i.hideDelay,(()=>{i.visible||(i.force=!1),i.visible=!1})))}function onDocumentClick(e){if(!r.value)return;const t=resolveEl(i.anchor);if(null==t)return;const o=e.target;elementContains(r.value,o)||elementContains(t,o)||hide({force:!0})}function onDocumentKeydown(e){"Esc"!==e.key&&"Escape"!==e.key||hide()}function onDocumentShowPopover({detail:e}){null!=e.name&&e.name===i.name&&show(e)}function onDocumentHidePopover({detail:e}){null!=e.name&&e.name===i.name&&hide(e)}function onDocumentTogglePopover({detail:e}){null!=e.name&&e.name===i.name&&function toggle(e={}){null!=e.anchor&&(i.visible&&isCurrentAnchor(e.anchor)?hide(e):show(e))}(e)}let u=null;return t.watchEffect((()=>{const e=resolveEl(i.anchor);e&&r.value&&(null!=u&&u(),u=autoUpdate(e,r.value,(()=>{null!=e&&null!=r.value&&computePosition(e,r.value,{placement:i.placement,strategy:i.positionFixed?"fixed":"absolute",middleware:[...p.value]}).then((({x:e,y:t,placement:o})=>{c.value=o,l.value={left:`${e}px`,top:`${t}px`}}))})))})),t.onMounted((()=>{!function addEvents(){on(document,"keydown",onDocumentKeydown),on(document,"click",onDocumentClick),on(document,"show-popover",onDocumentShowPopover),on(document,"hide-popover",onDocumentHidePopover),on(document,"toggle-popover",onDocumentTogglePopover)}()})),t.onUnmounted((()=>{!function removeEvents(){off(document,"keydown",onDocumentKeydown),off(document,"click",onDocumentClick),off(document,"show-popover",onDocumentShowPopover),off(document,"hide-popover",onDocumentHidePopover),off(document,"toggle-popover",onDocumentTogglePopover)}()})),t.watchEffect((()=>{var t;i.name=e.name??(null==(t=a.value)?void 0:t.name),i.name||console.warn("PopoverContent requires a name from prop or context")})),t.watch([()=>i.anchor,()=>i.visible],(([e,t],[o,n])=>{i.moving=!!(t&&n&&o)})),{...t.toRefs(i),actualPlacement:c,popoverRef:r,style:s,direction:v,align:d,transitionProperty:f,middleware:p,hide:hide,beforeEnter:function beforeEnter(e){o("before-show",e)},afterEnter:function afterEnter(e){i.force=!1,o("after-show",e)},beforeLeave:function beforeLeave(e){o("before-hide",e)},afterLeave:function afterLeave(e){i.force=!1,o("after-hide",e)},onClick:function onClick(e){e.stopPropagation()},onMouseOver:function onMouseOver(){i.hovered=!0,i.interactive&&["hover","hover-focus"].includes(i.action)&&show()},onMouseLeave:function onMouseLeave(){i.hovered=!1;const e=resolveEl(i.anchor);!i.autoHide||i.focused||e&&e===document.activeElement||!["hover","hover-focus"].includes(i.action)||hide()},onFocusIn:function onFocusIn(){i.focused=!0,i.interactive&&["focus","hover-focus"].includes(i.action)&&show()},onFocusOut:function onFocusOut(e){!["focus","hover-focus"].includes(i.action)||e.relatedTarget&&elementContains(r.value,e.relatedTarget)||(i.focused=!1,!i.hovered&&i.autoHide&&hide())}}}}),y=["data-name","data-hide-arrow","data-direction","data-profile","data-moving"],b=["data-direction","data-profile"],x=["data-direction","data-align"];const E=_export_sfc(w,[["render",function _sfc_render(e,o,n,r,a,i){return t.openBlock(),t.createBlock(t.Teleport,{to:e.teleport,disabled:!e.teleport},[t.createVNode(t.Transition,{appear:"",onBeforeEnter:e.beforeEnter,onAfterEnter:e.afterEnter,onBeforeLeave:e.beforeLeave,onAfterLeave:e.afterLeave},{default:t.withCtx((()=>{var n,r;return[e.visible?(t.openBlock(),t.createElementBlock("div",{key:0,class:t.normalizeClass(["v-popover-content-wrapper",{interactive:e.interactive,"v-popover-dark":e.dark,"v-popover-transition":(null==(n=e.transition)?void 0:n.length)>0},...e.transition.map((e=>`v-popover-transition-${e}`))]),"data-name":null==(r=e.name)?void 0:r.toString(),"data-hide-arrow":e.arrowHidden,"data-direction":e.direction,"data-profile":e.profile,"data-moving":e.moving,style:t.normalizeStyle(e.style),ref:"popoverRef",onClick:o[0]||(o[0]=(...t)=>e.onClick&&e.onClick(...t)),onMouseover:o[1]||(o[1]=(...t)=>e.onMouseOver&&e.onMouseOver(...t)),onMouseleave:o[2]||(o[2]=(...t)=>e.onMouseLeave&&e.onMouseLeave(...t)),onFocusin:o[3]||(o[3]=(...t)=>e.onFocusIn&&e.onFocusIn(...t)),onFocusout:o[4]||(o[4]=(...t)=>e.onFocusOut&&e.onFocusOut(...t))},[t.createElementVNode("div",t.mergeProps({tabindex:"-1",class:"v-popover-content","data-direction":e.direction,"data-profile":e.profile},e.$attrs),[t.renderSlot(e.$slots,"default",{direction:e.direction,align:e.align,data:e.data,hide:e.hide},(()=>[t.createTextVNode(t.toDisplayString(e.data),1)])),t.createElementVNode("span",{class:"v-popover-caret","data-direction":e.direction,"data-align":e.align},null,8,x)],16,b)],46,y)):t.createCommentVNode("",!0)]})),_:3},8,["onBeforeEnter","onAfterEnter","onBeforeLeave","onAfterLeave"])],8,["to","disabled"])}]]),P=t.defineComponent({__name:"Tooltip",props:{content:null},setup:e=>(o,n)=>(t.openBlock(),t.createBlock(r,null,{default:t.withCtx((()=>[t.createVNode(s,t.mergeProps({profile:"tooltip"},o.$attrs),{default:t.withCtx((()=>[t.renderSlot(o.$slots,"default")])),_:3},16),t.createVNode(E,null,{default:t.withCtx((()=>[t.renderSlot(o.$slots,"content",{},(()=>[t.createTextVNode(t.toDisplayString(e.content),1)]))])),_:3})])),_:3}))}),C=Object.freeze(Object.defineProperty({__proto__:null,Popover:r,PopoverContent:E,PopoverTrigger:s,Tooltip:P},Symbol.toStringTag,{value:"Module"})),S={install:(e,t={})=>{assignDeep(a,t);for(const n in c){const t=c[n];e.directive(n,t)}const o=a.componentPrefix;for(const n in C){const t=C[n];e.component(`${o}${n}`,t)}},config:a};return e.Popover=r,e.PopoverContent=E,e.PopoverTrigger=s,e.Tooltip=P,e.assignDeep=assignDeep,e.default=S,e.directive=l,e.elementContains=elementContains,e.getPopoverEventHandlers=getPopoverEventHandlers,e.hidePopover=hidePopover,e.off=off,e.on=on,e.resolveEl=resolveEl,e.showPopover=showPopover,e.togglePopover=togglePopover,Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}}),e}({},Vue);
var VPopover=function(e,t){"use strict";var o=document.createElement("style");o.textContent='.v-popover-content-wrapper{position:absolute;width:-webkit-max-content;width:max-content;top:0;left:0;display:block;outline:none;z-index:10}.v-popover-content-wrapper:not(.interactive){pointer-events:none}.v-popover-content{position:relative;color:var(--v-popover-content-color);font-weight:var(--v-popover-content-font-weight);font-size:var(--v-popover-content-font-size);background-color:var(--v-popover-content-bg);border:1px solid;border-color:var(--v-popover-content-border);border-radius:var(--v-popover-content-border-radius);padding:var(--v-popover-content-padding);min-width:50px;min-height:18px;text-align:center;outline:none;z-index:10;box-shadow:var(--v-popover-content-shadow)}.v-popover-content[data-direction=bottom]{margin-top:var(--offset-vertical);--arrow-bottom: 100%}.v-popover-content[data-direction=bottom][data-align=left]{--arrow-left: var(--arrow-inset-horizontal);--arrow-transform: translateY(50%) rotate(45deg)}.v-popover-content[data-direction=bottom][data-align=center]{--arrow-left: 50%;--arrow-transform: translateX(-50%) translateY(50%) rotate(45deg)}.v-popover-content[data-direction=bottom][data-align=right]{--arrow-right: var(--arrow-inset-horizontal);--arrow-transform: translateY(50%) rotate(45deg)}.v-popover-content[data-direction=top]{margin-bottom:var(--offset-vertical);--arrow-top: 100%}.v-popover-content[data-direction=top][data-align=left]{--arrow-left: var(--arrow-inset-horizontal);--arrow-transform: translateY(-50%) rotate(-135deg)}.v-popover-content[data-direction=top][data-align=center]{--arrow-left: 50%;--arrow-transform: translateX(-50%) translateY(-50%) rotate(-135deg)}.v-popover-content[data-direction=top][data-align=right]{--arrow-right: var(--arrow-inset-horizontal);--arrow-transform: translateY(-50%) rotate(-135deg)}.v-popover-content[data-direction=right]{margin-left:var(--offset-horizontal);--arrow-right: 100%}.v-popover-content[data-direction=right][data-align=top]{--arrow-top: var(--arrow-inset-vertical);--arrow-transform: translateX(50%) rotate(-45deg)}.v-popover-content[data-direction=right][data-align=middle]{--arrow-top: 50%;--arrow-transform: translateX(50%) translateY(-50%) rotate(-45deg)}.v-popover-content[data-direction=right][data-align=bottom]{--arrow-bottom: var(--arrow-inset-vertical);--arrow-transform: translateX(50%) rotate(-45deg)}.v-popover-content[data-direction=left]{margin-right:var(--offset-horizontal);--arrow-left: 100%}.v-popover-content[data-direction=left][data-align=top]{--arrow-top: var(--arrow-inset-vertical);--arrow-transform: translateX(-50%) rotate(135deg)}.v-popover-content[data-direction=left][data-align=middle]{--arrow-top: 50%;--arrow-transform: translateX(-50%) translateY(-50%) rotate(135deg)}.v-popover-content[data-direction=left][data-align=bottom]{--arrow-bottom: var(--arrow-inset-vertical);--arrow-transform: translateX(-50%) rotate(135deg)}.v-popover-content:before{content:"";position:absolute;display:var(--arrow-display);width:var(--arrow-size);height:var(--arrow-size);top:var(--arrow-top);bottom:var(--arrow-bottom);left:var(--arrow-left);right:var(--arrow-right);border-top:inherit;border-left:inherit;background-color:inherit;z-index:-1;-webkit-transform:var(--arrow-transform);transform:var(--arrow-transform)}.v-popover-transition{transition-property:var(--transition-property);transition-duration:var(--v-popover-transition-duration);transition-timing-function:var(--v-popover-transition-timing)}.v-popover-transition.v-enter-active,.v-popover-transition.v-leave-active{-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:none}.v-popover-transition.v-enter-from{-webkit-transform:var(--translate-x-from,) var(--translate-y-from,) var(--scale-x-from,) var(--scale-y-from,);transform:var(--translate-x-from,) var(--translate-y-from,) var(--scale-x-from,) var(--scale-y-from,)}.v-popover-transition.v-leave-to{-webkit-transform:var(--translate-x-to,) var(--translate-y-to,) var(--scale-x-to,) var(--scale-y-to,);transform:var(--translate-x-to,) var(--translate-y-to,) var(--scale-x-to,) var(--scale-y-to,)}.v-popover-transition-slide[data-direction=top]{--translate-y-from: translateY( var(--v-popover-transition-translate-y-from) );--translate-y-to: translateY(var(--v-popover-transition-translate-y-to))}.v-popover-transition-slide[data-direction=bottom]{--translate-y-from: translateY( calc(-1 * var(--v-popover-transition-translate-y-from)) );--translate-y-to: translateY( calc(-1 * var(--v-popover-transition-translate-y-to)) )}.v-popover-transition-slide[data-direction=left]{--translate-x-from: translateX( var(--v-popover-transition-translate-x-from) );--translate-x-to: translateX(var(--v-popover-transition-translate-x-to))}.v-popover-transition-slide[data-direction=right]{--translate-x-from: translateX( calc(-1 * var(--v-popover-transition-translate-x-from)) );--translate-x-to: translateX( calc(-1 * var(--v-popover-transition-translate-x-to)) )}.v-popover-transition-scale{--scale-x-from: scaleX(var(--v-popover-transition-scale-x-from));--scale-x-to: scaleX(var(--v-popover-transition-scale-x-to));--scale-y-from: scaleY(var(--v-popover-transition-scale-y-from));--scale-y-to: scaleY(var(--v-popover-transition-scale-y-to))}.v-popover-transition-fade.v-enter-from,.v-popover-transition-fade.v-leave-to{opacity:0}:root{--v-popover-white: #ffffff;--v-popover-black: #000000;--v-popover-gray-50: #f8fafc;--v-popover-gray-100: #f1f5f9;--v-popover-gray-200: #e2e8f0;--v-popover-gray-300: #cbd5e1;--v-popover-gray-400: #94a3b8;--v-popover-gray-500: #64748b;--v-popover-gray-600: #475569;--v-popover-gray-700: #334155;--v-popover-gray-800: #1e293b;--v-popover-gray-900: #0f172a;--v-popover-transition-duration: .15s;--v-popover-transition-timing: ease;--v-popover-transition-translate-x-from: 22px;--v-popover-transition-translate-x-to: 22px;--v-popover-transition-translate-y-from: 22px;--v-popover-transition-translate-y-to: 22px;--v-popover-transition-scale-x-from: .9;--v-popover-transition-scale-x-to: .9;--v-popover-transition-scale-y-from: .9;--v-popover-transition-scale-y-to: .9;--v-popover-content-font-size: 14px;--v-popover-content-font-weight: 500;--v-popover-content-border-radius: .5rem;--v-popover-content-padding: 2px;--v-popover-content-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--v-popover-content-color: var(--v-popover-gray-900);--v-popover-content-bg: var(--v-popover-gray-50);--v-popover-content-border: var(--v-popover-gray-300)}.v-popover-content[data-profile=tooltip]{--v-popover-content-border-radius: .25rem;--v-popover-content-padding: 0px 6px;--v-popover-content-shadow: 0 1px 2px 0 rgb(0 0 0 / .05)}.v-popover-gray{--v-popover-accent-50: var(--v-popover-gray-50);--v-popover-accent-100: var(--v-popover-gray-100);--v-popover-accent-200: var(--v-popover-gray-200);--v-popover-accent-300: var(--v-popover-gray-300);--v-popover-accent-400: var(--v-popover-gray-400);--v-popover-accent-500: var(--v-popover-gray-500);--v-popover-accent-600: var(--v-popover-gray-600);--v-popover-accent-700: var(--v-popover-gray-700);--v-popover-accent-800: var(--v-popover-gray-800);--v-popover-accent-900: var(--v-popover-gray-900)}.v-popover-dark{--v-popover-content-color: var(--v-popover-white);--v-popover-content-bg: var(--v-popover-gray-800);--v-popover-content-border: var(--v-popover-gray-700)}\n',document.head.appendChild(o);function assignDeep(e,...t){for(let o of t)if(null!=o)for(const t in o)"object"!=typeof o[t]||!e[t]||o[t]instanceof Element?void 0!==o[t]&&(e[t]=o[t]):assignDeep(e[t],o[t],!1);return e}const resolveEl=e=>null==(e=t.unref(e))?null:document&&"string"==typeof e?document.querySelector(e):e.$el??e,off=(e,t,o,n=undefined)=>{e.removeEventListener(t,o,n)},on=(e,t,o,n=undefined)=>(e.addEventListener(t,o,n),()=>off(e,t,o,n)),elementContains=(e,t)=>!!e&&!!t&&(e===t||e.contains(t));function showPopover(e){document&&document.dispatchEvent(new CustomEvent("show-popover",{detail:e}))}function hidePopover(e){document&&document.dispatchEvent(new CustomEvent("hide-popover",{detail:e}))}function togglePopover(e){document&&document.dispatchEvent(new CustomEvent("toggle-popover",{detail:e}))}function getPopoverEventHandlers(e){const{action:t="click"}=e,o="click"===t,n="hover"===t,r="hover-focus"===t,i="focus"===t;let a=!1,l=!1;const clickHandler=t=>{if(o){const o=t.currentTarget;togglePopover({...e,trigger:o,anchor:e.anchor||o}),t.stopPropagation()}},mouseMoveHandler=t=>{if(!a&&(a=!0,n||r)){const o=t.currentTarget;showPopover({...e,trigger:o,anchor:e.anchor||o})}},mouseLeaveHandler=()=>{a&&(a=!1,(n||r&&!l)&&hidePopover(e))},focusInHandler=t=>{if(!l&&(l=!0,i||r)){const o=t.currentTarget;showPopover({...e,trigger:o,anchor:e.anchor||o})}},focusOutHandler=t=>{l&&!elementContains(t.currentTarget,t.relatedTarget)&&(l=!1,(i||r&&!a)&&hidePopover(e))},c={};switch(t){case"click":c.click=clickHandler;break;case"hover":c.mousemove=mouseMoveHandler,c.mouseleave=mouseLeaveHandler;break;case"focus":c.focusin=focusInHandler,c.focusout=focusOutHandler;break;case"hover-focus":c.mousemove=mouseMoveHandler,c.mouseleave=mouseLeaveHandler,c.focusin=focusInHandler,c.focusout=focusOutHandler}return c}const n={componentPrefix:"",profiles:{tooltip:{action:"hover",arrowHidden:!1,arrowInsetHorizontal:14,arrowInsetVertical:8,arrowSize:10,dark:!0,flip:!0,interactive:!1,offsets:{top:{x:0,y:8},bottom:{x:0,y:8},left:{x:8,y:0},right:{x:8,y:0}},placement:"top",teleport:null,transition:["fade"]},popover:{action:"click",autoHide:!1,arrowHidden:!0,arrowInsetHorizontal:14,arrowInsetVertical:8,arrowSize:12,dark:!1,flip:!0,interactive:!0,offsets:{top:{x:0,y:6},bottom:{x:0,y:6},left:{x:6,y:0},right:{x:6,y:0}},placement:"bottom-start",teleport:"body",transition:["fade","scale","move"]}}},r=t.ref(new Map);function addHandlers(e,t){const o=[],n=getPopoverEventHandlers(t);return Object.entries(n).forEach((([t,n])=>{o.push(on(e,t,n))})),o}function addPopover(e,t){const o=function resolveOptions(e){return assignDeep({},e.profile?n.profiles[e.profile]:{},e)}(t),i=o.name;if(!i)throw new Error(`Popover name is missing from directive options: ${t}`);return e.__popover_name__=i,function getOrSetPopovers(e){if(r.value.has(e))return r.value.get(e);const t=[];return r.value.set(e,t),t}(i).push({el:e,options:o,handlers:addHandlers(e,o)}),()=>removePopover(e)}const removeHandlers=e=>{e.forEach((e=>e()))};function removePopover(e){const t=r.value.get(e.__popover_name__);if(!t)return;const o=t.findIndex((t=>t.el===e));-1!==o&&(removeHandlers(t[o].handlers),t.splice(o,1))}const i={mounted(e,t){const{value:o}=t;o&&addPopover(e,o)},updated(e,t){removePopover(e),t.value&&addPopover(e,t.value)},unmounted(e){removePopover(e)}},a=Object.freeze(Object.defineProperty({__proto__:null,popover:i},Symbol.toStringTag,{value:"Module"})),l=Math.min,c=Math.max,s=Math.round,p=Math.floor,createCoords=e=>({x:e,y:e}),v={left:"right",right:"left",bottom:"top",top:"bottom"},f={start:"end",end:"start"};function evaluate(e,t){return"function"==typeof e?e(t):e}function getSide(e){return e.split("-")[0]}function getAlignment(e){return e.split("-")[1]}function getAxisLength(e){return"y"===e?"height":"width"}function getSideAxis(e){return["top","bottom"].includes(getSide(e))?"y":"x"}function getAlignmentAxis(e){return function getOppositeAxis(e){return"x"===e?"y":"x"}(getSideAxis(e))}function getOppositeAlignmentPlacement(e){return e.replace(/start|end/g,(e=>f[e]))}function getOppositePlacement(e){return e.replace(/left|right|bottom|top/g,(e=>v[e]))}function rectToClientRect(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}function computeCoordsFromPlacement(e,t,o){let{reference:n,floating:r}=e;const i=getSideAxis(t),a=getAlignmentAxis(t),l=getAxisLength(a),c=getSide(t),s="y"===i,p=n.x+n.width/2-r.width/2,v=n.y+n.height/2-r.height/2,f=n[l]/2-r[l]/2;let d;switch(c){case"top":d={x:p,y:n.y-r.height};break;case"bottom":d={x:p,y:n.y+n.height};break;case"right":d={x:n.x+n.width,y:v};break;case"left":d={x:n.x-r.width,y:v};break;default:d={x:n.x,y:n.y}}switch(getAlignment(t)){case"start":d[a]-=f*(o&&s?-1:1);break;case"end":d[a]+=f*(o&&s?-1:1)}return d}const flip=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var o,n;const{placement:r,middlewareData:i,rects:a,initialPlacement:l,platform:c,elements:s}=t,{mainAxis:p=!0,crossAxis:v=!0,fallbackPlacements:f,fallbackStrategy:d="bestFit",fallbackAxisSideDirection:u="none",flipAlignment:g=!0,...m}=evaluate(e,t);if(null!=(o=i.arrow)&&o.alignmentOffset)return{};const h=getSide(r),w=getSide(l)===l,y=await(null==c.isRTL?void 0:c.isRTL(s.floating)),b=f||(w||!g?[getOppositePlacement(l)]:function getExpandedPlacements(e){const t=getOppositePlacement(e);return[getOppositeAlignmentPlacement(e),t,getOppositeAlignmentPlacement(t)]}(l));f||"none"===u||b.push(...function getOppositeAxisPlacements(e,t,o,n){const r=getAlignment(e);let i=function getSideList(e,t,o){const n=["left","right"],r=["right","left"],i=["top","bottom"],a=["bottom","top"];switch(e){case"top":case"bottom":return o?t?r:n:t?n:r;case"left":case"right":return t?i:a;default:return[]}}(getSide(e),"start"===o,n);return r&&(i=i.map((e=>e+"-"+r)),t&&(i=i.concat(i.map(getOppositeAlignmentPlacement)))),i}(l,g,u,y));const x=[l,...b],E=await async function detectOverflow(e,t){var o;void 0===t&&(t={});const{x:n,y:r,platform:i,rects:a,elements:l,strategy:c}=e,{boundary:s="clippingAncestors",rootBoundary:p="viewport",elementContext:v="floating",altBoundary:f=!1,padding:d=0}=evaluate(t,e),u=function getPaddingObject(e){return"number"!=typeof e?function expandPaddingObject(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}(d),g=l[f?"floating"===v?"reference":"floating":v],m=rectToClientRect(await i.getClippingRect({element:null==(o=await(null==i.isElement?void 0:i.isElement(g)))||o?g:g.contextElement||await(null==i.getDocumentElement?void 0:i.getDocumentElement(l.floating)),boundary:s,rootBoundary:p,strategy:c})),h="floating"===v?{...a.floating,x:n,y:r}:a.reference,w=await(null==i.getOffsetParent?void 0:i.getOffsetParent(l.floating)),y=await(null==i.isElement?void 0:i.isElement(w))&&await(null==i.getScale?void 0:i.getScale(w))||{x:1,y:1},b=rectToClientRect(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({rect:h,offsetParent:w,strategy:c}):h);return{top:(m.top-b.top+u.top)/y.y,bottom:(b.bottom-m.bottom+u.bottom)/y.y,left:(m.left-b.left+u.left)/y.x,right:(b.right-m.right+u.right)/y.x}}(t,m),P=[];let S=(null==(n=i.flip)?void 0:n.overflows)||[];if(p&&P.push(E[h]),v){const e=function getAlignmentSides(e,t,o){void 0===o&&(o=!1);const n=getAlignment(e),r=getAlignmentAxis(e),i=getAxisLength(r);let a="x"===r?n===(o?"end":"start")?"right":"left":"start"===n?"bottom":"top";return t.reference[i]>t.floating[i]&&(a=getOppositePlacement(a)),[a,getOppositePlacement(a)]}(r,a,y);P.push(E[e[0]],E[e[1]])}if(S=[...S,{placement:r,overflows:P}],!P.every((e=>e<=0))){var T,C;const e=((null==(T=i.flip)?void 0:T.index)||0)+1,t=x[e];if(t)return{data:{index:e,overflows:S},reset:{placement:t}};let o=null==(C=S.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:C.placement;if(!o)switch(d){case"bestFit":{var O;const e=null==(O=S.map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:O[0];e&&(o=e);break}case"initialPlacement":o=l}if(r!==o)return{reset:{placement:o}}}return{}}}};function getNodeName(e){return isNode(e)?(e.nodeName||"").toLowerCase():"#document"}function getWindow(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function getDocumentElement(e){var t;return null==(t=(isNode(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function isNode(e){return e instanceof Node||e instanceof getWindow(e).Node}function isElement(e){return e instanceof Element||e instanceof getWindow(e).Element}function isHTMLElement(e){return e instanceof HTMLElement||e instanceof getWindow(e).HTMLElement}function isShadowRoot(e){return"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof getWindow(e).ShadowRoot)}function isOverflowElement(e){const{overflow:t,overflowX:o,overflowY:n,display:r}=getComputedStyle(e);return/auto|scroll|overlay|hidden|clip/.test(t+n+o)&&!["inline","contents"].includes(r)}function isTableElement(e){return["table","td","th"].includes(getNodeName(e))}function isContainingBlock(e){const t=isWebKit(),o=getComputedStyle(e);return"none"!==o.transform||"none"!==o.perspective||!!o.containerType&&"normal"!==o.containerType||!t&&!!o.backdropFilter&&"none"!==o.backdropFilter||!t&&!!o.filter&&"none"!==o.filter||["transform","perspective","filter"].some((e=>(o.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(o.contain||"").includes(e)))}function isWebKit(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function isLastTraversableNode(e){return["html","body","#document"].includes(getNodeName(e))}function getComputedStyle(e){return getWindow(e).getComputedStyle(e)}function getNodeScroll(e){return isElement(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function getParentNode(e){if("html"===getNodeName(e))return e;const t=e.assignedSlot||e.parentNode||isShadowRoot(e)&&e.host||getDocumentElement(e);return isShadowRoot(t)?t.host:t}function getNearestOverflowAncestor(e){const t=getParentNode(e);return isLastTraversableNode(t)?e.ownerDocument?e.ownerDocument.body:e.body:isHTMLElement(t)&&isOverflowElement(t)?t:getNearestOverflowAncestor(t)}function getOverflowAncestors(e,t,o){var n;void 0===t&&(t=[]),void 0===o&&(o=!0);const r=getNearestOverflowAncestor(e),i=r===(null==(n=e.ownerDocument)?void 0:n.body),a=getWindow(r);return i?t.concat(a,a.visualViewport||[],isOverflowElement(r)?r:[],a.frameElement&&o?getOverflowAncestors(a.frameElement):[]):t.concat(r,getOverflowAncestors(r,[],o))}function getCssDimensions(e){const t=getComputedStyle(e);let o=parseFloat(t.width)||0,n=parseFloat(t.height)||0;const r=isHTMLElement(e),i=r?e.offsetWidth:o,a=r?e.offsetHeight:n,l=s(o)!==i||s(n)!==a;return l&&(o=i,n=a),{width:o,height:n,$:l}}function unwrapElement(e){return isElement(e)?e:e.contextElement}function getScale(e){const t=unwrapElement(e);if(!isHTMLElement(t))return createCoords(1);const o=t.getBoundingClientRect(),{width:n,height:r,$:i}=getCssDimensions(t);let a=(i?s(o.width):o.width)/n,l=(i?s(o.height):o.height)/r;return a&&Number.isFinite(a)||(a=1),l&&Number.isFinite(l)||(l=1),{x:a,y:l}}const d=createCoords(0);function getVisualOffsets(e){const t=getWindow(e);return isWebKit()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:d}function getBoundingClientRect(e,t,o,n){void 0===t&&(t=!1),void 0===o&&(o=!1);const r=e.getBoundingClientRect(),i=unwrapElement(e);let a=createCoords(1);t&&(n?isElement(n)&&(a=getScale(n)):a=getScale(e));const l=function shouldAddVisualOffsets(e,t,o){return void 0===t&&(t=!1),!(!o||t&&o!==getWindow(e))&&t}(i,o,n)?getVisualOffsets(i):createCoords(0);let c=(r.left+l.x)/a.x,s=(r.top+l.y)/a.y,p=r.width/a.x,v=r.height/a.y;if(i){const e=getWindow(i),t=n&&isElement(n)?getWindow(n):n;let o=e.frameElement;for(;o&&n&&t!==e;){const e=getScale(o),t=o.getBoundingClientRect(),n=getComputedStyle(o),r=t.left+(o.clientLeft+parseFloat(n.paddingLeft))*e.x,i=t.top+(o.clientTop+parseFloat(n.paddingTop))*e.y;c*=e.x,s*=e.y,p*=e.x,v*=e.y,c+=r,s+=i,o=getWindow(o).frameElement}}return rectToClientRect({width:p,height:v,x:c,y:s})}function getWindowScrollBarX(e){return getBoundingClientRect(getDocumentElement(e)).left+getNodeScroll(e).scrollLeft}function getClientRectFromClippingAncestor(e,t,o){let n;if("viewport"===t)n=function getViewportRect(e,t){const o=getWindow(e),n=getDocumentElement(e),r=o.visualViewport;let i=n.clientWidth,a=n.clientHeight,l=0,c=0;if(r){i=r.width,a=r.height;const e=isWebKit();(!e||e&&"fixed"===t)&&(l=r.offsetLeft,c=r.offsetTop)}return{width:i,height:a,x:l,y:c}}(e,o);else if("document"===t)n=function getDocumentRect(e){const t=getDocumentElement(e),o=getNodeScroll(e),n=e.ownerDocument.body,r=c(t.scrollWidth,t.clientWidth,n.scrollWidth,n.clientWidth),i=c(t.scrollHeight,t.clientHeight,n.scrollHeight,n.clientHeight);let a=-o.scrollLeft+getWindowScrollBarX(e);const l=-o.scrollTop;return"rtl"===getComputedStyle(n).direction&&(a+=c(t.clientWidth,n.clientWidth)-r),{width:r,height:i,x:a,y:l}}(getDocumentElement(e));else if(isElement(t))n=function getInnerBoundingClientRect(e,t){const o=getBoundingClientRect(e,!0,"fixed"===t),n=o.top+e.clientTop,r=o.left+e.clientLeft,i=isHTMLElement(e)?getScale(e):createCoords(1);return{width:e.clientWidth*i.x,height:e.clientHeight*i.y,x:r*i.x,y:n*i.y}}(t,o);else{const o=getVisualOffsets(e);n={...t,x:t.x-o.x,y:t.y-o.y}}return rectToClientRect(n)}function hasFixedPositionAncestor(e,t){const o=getParentNode(e);return!(o===t||!isElement(o)||isLastTraversableNode(o))&&("fixed"===getComputedStyle(o).position||hasFixedPositionAncestor(o,t))}function getRectRelativeToOffsetParent(e,t,o){const n=isHTMLElement(t),r=getDocumentElement(t),i="fixed"===o,a=getBoundingClientRect(e,!0,i,t);let l={scrollLeft:0,scrollTop:0};const c=createCoords(0);if(n||!n&&!i)if(("body"!==getNodeName(t)||isOverflowElement(r))&&(l=getNodeScroll(t)),n){const e=getBoundingClientRect(t,!0,i,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}else r&&(c.x=getWindowScrollBarX(r));return{x:a.left+l.scrollLeft-c.x,y:a.top+l.scrollTop-c.y,width:a.width,height:a.height}}function getTrueOffsetParent(e,t){return isHTMLElement(e)&&"fixed"!==getComputedStyle(e).position?t?t(e):e.offsetParent:null}function getOffsetParent(e,t){const o=getWindow(e);if(!isHTMLElement(e))return o;let n=getTrueOffsetParent(e,t);for(;n&&isTableElement(n)&&"static"===getComputedStyle(n).position;)n=getTrueOffsetParent(n,t);return n&&("html"===getNodeName(n)||"body"===getNodeName(n)&&"static"===getComputedStyle(n).position&&!isContainingBlock(n))?o:n||function getContainingBlock(e){let t=getParentNode(e);for(;isHTMLElement(t)&&!isLastTraversableNode(t);){if(isContainingBlock(t))return t;t=getParentNode(t)}return null}(e)||o}const u={convertOffsetParentRelativeRectToViewportRelativeRect:function convertOffsetParentRelativeRectToViewportRelativeRect(e){let{rect:t,offsetParent:o,strategy:n}=e;const r=isHTMLElement(o),i=getDocumentElement(o);if(o===i)return t;let a={scrollLeft:0,scrollTop:0},l=createCoords(1);const c=createCoords(0);if((r||!r&&"fixed"!==n)&&(("body"!==getNodeName(o)||isOverflowElement(i))&&(a=getNodeScroll(o)),isHTMLElement(o))){const e=getBoundingClientRect(o);l=getScale(o),c.x=e.x+o.clientLeft,c.y=e.y+o.clientTop}return{width:t.width*l.x,height:t.height*l.y,x:t.x*l.x-a.scrollLeft*l.x+c.x,y:t.y*l.y-a.scrollTop*l.y+c.y}},getDocumentElement:getDocumentElement,getClippingRect:function getClippingRect(e){let{element:t,boundary:o,rootBoundary:n,strategy:r}=e;const i=[..."clippingAncestors"===o?function getClippingElementAncestors(e,t){const o=t.get(e);if(o)return o;let n=getOverflowAncestors(e,[],!1).filter((e=>isElement(e)&&"body"!==getNodeName(e))),r=null;const i="fixed"===getComputedStyle(e).position;let a=i?getParentNode(e):e;for(;isElement(a)&&!isLastTraversableNode(a);){const t=getComputedStyle(a),o=isContainingBlock(a);o||"fixed"!==t.position||(r=null),(i?!o&&!r:!o&&"static"===t.position&&r&&["absolute","fixed"].includes(r.position)||isOverflowElement(a)&&!o&&hasFixedPositionAncestor(e,a))?n=n.filter((e=>e!==a)):r=t,a=getParentNode(a)}return t.set(e,n),n}(t,this._c):[].concat(o),n],a=i[0],s=i.reduce(((e,o)=>{const n=getClientRectFromClippingAncestor(t,o,r);return e.top=c(n.top,e.top),e.right=l(n.right,e.right),e.bottom=l(n.bottom,e.bottom),e.left=c(n.left,e.left),e}),getClientRectFromClippingAncestor(t,a,r));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}},getOffsetParent:getOffsetParent,getElementRects:async function(e){let{reference:t,floating:o,strategy:n}=e;const r=this.getOffsetParent||getOffsetParent,i=this.getDimensions;return{reference:getRectRelativeToOffsetParent(t,await r(o),n),floating:{x:0,y:0,...await i(o)}}},getClientRects:function getClientRects(e){return Array.from(e.getClientRects())},getDimensions:function getDimensions(e){return getCssDimensions(e)},getScale:getScale,isElement:isElement,isRTL:function isRTL(e){return"rtl"===getComputedStyle(e).direction}};function autoUpdate(e,t,o,n){void 0===n&&(n={});const{ancestorScroll:r=!0,ancestorResize:i=!0,elementResize:a="function"==typeof ResizeObserver,layoutShift:s="function"==typeof IntersectionObserver,animationFrame:v=!1}=n,f=unwrapElement(e),d=r||i?[...f?getOverflowAncestors(f):[],...getOverflowAncestors(t)]:[];d.forEach((e=>{r&&e.addEventListener("scroll",o,{passive:!0}),i&&e.addEventListener("resize",o)}));const u=f&&s?function observeMove(e,t){let o,n=null;const r=getDocumentElement(e);function cleanup(){clearTimeout(o),n&&n.disconnect(),n=null}return function refresh(i,a){void 0===i&&(i=!1),void 0===a&&(a=1),cleanup();const{left:s,top:v,width:f,height:d}=e.getBoundingClientRect();if(i||t(),!f||!d)return;const u={rootMargin:-p(v)+"px "+-p(r.clientWidth-(s+f))+"px "+-p(r.clientHeight-(v+d))+"px "+-p(s)+"px",threshold:c(0,l(1,a))||1};let g=!0;function handleObserve(e){const t=e[0].intersectionRatio;if(t!==a){if(!g)return refresh();t?refresh(!1,t):o=setTimeout((()=>{refresh(!1,1e-7)}),100)}g=!1}try{n=new IntersectionObserver(handleObserve,{...u,root:r.ownerDocument})}catch(m){n=new IntersectionObserver(handleObserve,u)}n.observe(e)}(!0),cleanup}(f,o):null;let g,m=-1,h=null;a&&(h=new ResizeObserver((e=>{let[n]=e;n&&n.target===f&&h&&(h.unobserve(t),cancelAnimationFrame(m),m=requestAnimationFrame((()=>{h&&h.observe(t)}))),o()})),f&&!v&&h.observe(f),h.observe(t));let w=v?getBoundingClientRect(e):null;return v&&function frameLoop(){const t=getBoundingClientRect(e);!w||t.x===w.x&&t.y===w.y&&t.width===w.width&&t.height===w.height||o();w=t,g=requestAnimationFrame(frameLoop)}(),o(),()=>{d.forEach((e=>{r&&e.removeEventListener("scroll",o),i&&e.removeEventListener("resize",o)})),u&&u(),h&&h.disconnect(),h=null,v&&cancelAnimationFrame(g)}}const computePosition=(e,t,o)=>{const n=new Map,r={platform:u,...o},i={...r.platform,_c:n};return(async(e,t,o)=>{const{placement:n="bottom",strategy:r="absolute",middleware:i=[],platform:a}=o,l=i.filter(Boolean),c=await(null==a.isRTL?void 0:a.isRTL(t));let s=await a.getElementRects({reference:e,floating:t,strategy:r}),{x:p,y:v}=computeCoordsFromPlacement(s,n,c),f=n,d={},u=0;for(let g=0;g<l.length;g++){const{name:o,fn:i}=l[g],{x:m,y:h,data:w,reset:y}=await i({x:p,y:v,initialPlacement:n,placement:f,strategy:r,middlewareData:d,rects:s,platform:a,elements:{reference:e,floating:t}});p=null!=m?m:p,v=null!=h?h:v,d={...d,[o]:{...d[o],...w}},y&&u<=50&&(u++,"object"==typeof y&&(y.placement&&(f=y.placement),y.rects&&(s=!0===y.rects?await a.getElementRects({reference:e,floating:t,strategy:r}):y.rects),({x:p,y:v}=computeCoordsFromPlacement(s,f,c))),g=-1)}return{x:p,y:v,placement:f,strategy:r,middlewareData:d}})(e,t,{...r,platform:i})},g={action:String,anchor:[String,Object,null],arrowHidden:{type:Boolean,default:void 0},arrowSize:Number,arrowInsetHorizontal:Number,arrowInsetVertical:Number,autoHide:{type:Boolean,default:void 0},dark:{type:Boolean,default:void 0},data:null,flip:{type:Boolean,default:void 0},force:{type:Boolean,default:void 0},hideDelay:Number,interactive:{type:Boolean,default:void 0},offsets:Object,placement:String,positionFixed:{type:Boolean,default:void 0},profile:String,showDelay:Number,teleport:String,transition:Array},m=t.defineComponent({inheritAttrs:!1,emits:["before-show","after-show","before-hide","after-hide"],props:{...g,name:{type:[Number,String,Symbol],required:!0}},setup(e,{emit:o}){let r;const i=t.ref(),a=t.reactive({focused:!1,hovered:!1,visible:!1,moving:!1}),l=t.computed((()=>assignDeep({},n.profiles[e.profile??"popover"],e)));function updateState(e={}){const{force:t,...o}=e,r=o.profile?n.profiles[o.profile]:{};assignDeep(a,l.value,r,o)}t.watch((()=>e),updateState,{deep:!0,immediate:!0});const c=t.ref({}),s=t.ref(null),p=t.computed((()=>({...c.value,"--arrow-size":`${a.arrowSize}px`,"--arrow-display":a.arrowHidden?"none":"block","--arrow-inset-horizontal":`${a.arrowInsetHorizontal}px`,"--arrow-inset-vertical":`${a.arrowInsetVertical}px`,"--offset-horizontal":`${a.offsets[f.value].x}px`,"--offset-vertical":`${a.offsets[f.value].y}px`,"--transition-property":u.value}))),v=t.computed((()=>{return a.flip?[flip((e=a.flip,"boolean"==typeof e?void 0:a.flip))]:[];var e})),f=t.computed((()=>(s.value??a.placement??"bottom").split("-")[0])),d=t.computed((()=>{const e="left"===f.value||"right"===f.value;let t="";const o=(s.value??a.placement??"").split("-");return o.length>1&&(t=o[1]),["start","top","left"].includes(t)?e?"top":"left":["end","bottom","right"].includes(t)?e?"bottom":"right":e?"middle":"center"})),u=t.computed((()=>{const e=[];return a.transition.includes("fade")&&e.push("opacity"),a.transition.includes("scale")&&e.push("transform"),a.transition.includes("move")&&a.moving&&e.push("top, right, bottom, left"),e.join(", ")}));function setTimer(e,t){clearTimeout(r),e>0?r=setTimeout(t,e):t()}function isCurrentAnchor(e){if(!e||!a.anchor)return!1;return resolveEl(e)===resolveEl(a.anchor)}async function show(e={}){a.force||(e.force&&(a.force=!0),setTimer(e.showDelay??a.showDelay,(()=>{a.visible&&(a.force=!1),updateState({...e,visible:!0}),a.interactive&&"click"===a.action&&a.trigger===document.activeElement&&t.nextTick((()=>{var e;null==(e=getFocusableElements()[0])||e.focus({preventScroll:!0})}))})))}function hide(e={}){e.anchor&&!isCurrentAnchor(e.anchor)||a.force||(e.force&&(a.force=!0),setTimer(e.hideDelay??a.hideDelay,(()=>{a.visible||(a.force=!1),a.visible=!1,a.trigger&&a.interactive&&document.activeElement&&getFocusableElements().includes(document.activeElement)&&a.trigger.focus()})))}function onDocumentClick(e){if(!i.value)return;const t=resolveEl(a.anchor);if(null==t)return;const o=e.target;elementContains(i.value,o)||elementContains(t,o)||hide({force:!0})}function onDocumentKeydown(e){"Esc"!==e.key&&"Escape"!==e.key||hide()}function onDocumentShowPopover({detail:e}){null!=e.name&&e.name===a.name&&show(e)}function onDocumentHidePopover({detail:e}){null!=e.name&&e.name===a.name&&hide(e)}function onDocumentTogglePopover({detail:e}){null!=e.name&&e.name===a.name&&function toggle(e={}){null!=e.anchor&&(a.visible&&isCurrentAnchor(e.anchor)?hide(e):show(e))}(e)}function getFocusableElements(){var e;return[...(null==(e=i.value)?void 0:e.querySelectorAll("a[href], button, textarea, input, select"))??[]]}function onPopoverKeydown(e){if("Tab"===e.key){if(null==i.value)return;const t=getFocusableElements(),o=t.length>0,n=!!o&&document.activeElement===t[0],r=!!o&&document.activeElement===t[t.length-1];e.shiftKey&&n?(e.preventDefault(),t[t.length-1].focus()):!e.shiftKey&&r&&(e.preventDefault(),t[0].focus())}else"Esc"!==e.key&&"Escape"!==e.key||(e.preventDefault(),hide({force:!0}))}return t.watchEffect((e=>{const t=resolveEl(a.anchor);t&&i.value&&e(autoUpdate(t,i.value,(()=>{null!=t&&null!=i.value&&computePosition(t,i.value,{placement:a.placement,strategy:a.positionFixed?"fixed":"absolute",middleware:[...v.value]}).then((({x:e,y:t,placement:o})=>{s.value=o,c.value={left:`${e}px`,top:`${t}px`}}))})))})),t.watchEffect((e=>{i.value&&a.interactive&&e(on(i.value,"keydown",onPopoverKeydown))})),t.onMounted((()=>{!function addEvents(){on(document,"keydown",onDocumentKeydown),on(document,"click",onDocumentClick),on(document,"show-popover",onDocumentShowPopover),on(document,"hide-popover",onDocumentHidePopover),on(document,"toggle-popover",onDocumentTogglePopover)}()})),t.onUnmounted((()=>{!function removeEvents(){off(document,"keydown",onDocumentKeydown),off(document,"click",onDocumentClick),off(document,"show-popover",onDocumentShowPopover),off(document,"hide-popover",onDocumentHidePopover),off(document,"toggle-popover",onDocumentTogglePopover)}()})),t.watchEffect((()=>{e.name?a.name=e.name:console.warn("PopoverContent requires a name from prop or context")})),t.watch([()=>a.anchor,()=>a.visible],(([e,t],[o,n])=>{a.moving=!!(t&&n&&o)})),{actualPlacement:s,align:d,dark:t.toRef(a,"dark"),data:t.toRef(a,"data"),direction:f,interactive:t.toRef(a,"interactive"),middleware:v,popoverRef:i,profile:t.toRef(a,"profile"),style:p,teleport:t.toRef(a,"teleport"),transition:t.toRef(a,"transition"),visible:t.toRef(a,"visible"),hide:hide,beforeEnter:function beforeEnter(e){o("before-show",e)},afterEnter:function afterEnter(e){a.force=!1,o("after-show",e)},beforeLeave:function beforeLeave(e){o("before-hide",e)},afterLeave:function afterLeave(e){a.force=!1,o("after-hide",e)},onClick:function onClick(e){e.stopPropagation()},onMouseOver:function onMouseOver(){a.hovered=!0,a.interactive&&["hover","hover-focus"].includes(a.action)&&show()},onMouseLeave:function onMouseLeave(){a.hovered=!1;const e=resolveEl(a.anchor);!a.autoHide||a.focused||e&&e===document.activeElement||!["hover","hover-focus"].includes(a.action)||hide()},onFocusIn:function onFocusIn(){a.focused=!0,a.interactive&&["focus","hover-focus"].includes(a.action)&&show()},onFocusOut:function onFocusOut(e){!["focus","hover-focus"].includes(a.action)||e.relatedTarget&&elementContains(i.value,e.relatedTarget)||(a.focused=!1,!a.hovered&&a.autoHide&&hide())}}}}),h=["data-direction","data-align","data-profile","data-name"];const w=((e,t)=>{const o=e.__vccOpts||e;for(const[n,r]of t)o[n]=r;return o})(m,[["render",function _sfc_render(e,o,n,r,i,a){return t.openBlock(),t.createBlock(t.Teleport,{to:e.teleport,disabled:!e.teleport},[t.createVNode(t.Transition,{appear:"",onBeforeEnter:e.beforeEnter,onAfterEnter:e.afterEnter,onBeforeLeave:e.beforeLeave,onAfterLeave:e.afterLeave},{default:t.withCtx((()=>{var n,r;return[e.visible?(t.openBlock(),t.createElementBlock("div",{key:0,class:t.normalizeClass(["v-popover-content-wrapper",{interactive:e.interactive,"v-popover-dark":e.dark,"v-popover-transition":(null==(n=e.transition)?void 0:n.length)>0},...e.transition.map((e=>`v-popover-transition-${e}`))]),style:t.normalizeStyle(e.style),ref:"popoverRef",onClick:o[0]||(o[0]=(...t)=>e.onClick&&e.onClick(...t)),onMouseover:o[1]||(o[1]=(...t)=>e.onMouseOver&&e.onMouseOver(...t)),onMouseleave:o[2]||(o[2]=(...t)=>e.onMouseLeave&&e.onMouseLeave(...t)),onFocusin:o[3]||(o[3]=(...t)=>e.onFocusIn&&e.onFocusIn(...t)),onFocusout:o[4]||(o[4]=(...t)=>e.onFocusOut&&e.onFocusOut(...t))},[t.createElementVNode("div",t.mergeProps({tabindex:"-1",class:"v-popover-content","data-direction":e.direction,"data-align":e.align,"data-profile":e.profile,"data-name":null==(r=e.name)?void 0:r.toString(),role:"dialog"},e.$attrs),[t.renderSlot(e.$slots,"default",{direction:e.direction,align:e.align,data:e.data,hide:e.hide},(()=>[t.createTextVNode(t.toDisplayString(e.data),1)]))],16,h)],38)):t.createCommentVNode("",!0)]})),_:3},8,["onBeforeEnter","onAfterEnter","onBeforeLeave","onAfterLeave"])],8,["to","disabled"])}]]),y={functional:!0,props:{...g,name:{type:[Number,String,Symbol],default:()=>Symbol()}},setup(e,{slots:o}){var n;const r=null==(n=o.default)?void 0:n.call(o);if(!r)return console.warn("PopoverTrigger requires a default slot"),null;const a=function flattenFragments(e){return e.flatMap((e=>e.type===t.Fragment?flattenFragments(e.children):[e]))}(r).find((function validNode(e){return![t.Comment,t.Text,t.Static].some((t=>t===e.type))}));return a?()=>{const n=t.withDirectives(a,[[i,e]]);return o.content?[n,t.h(w,{name:e.name},o.content)]:n}:(console.warn("PopoverTrigger requires a valid child"),r)}},b=t.defineComponent({__name:"Tooltip",props:{content:null},setup:e=>(o,n)=>(t.openBlock(),t.createBlock(y,{profile:"tooltip"},{content:t.withCtx((()=>[t.renderSlot(o.$slots,"content",{},(()=>[t.createTextVNode(t.toDisplayString(e.content),1)]))])),default:t.withCtx((()=>[t.renderSlot(o.$slots,"default")])),_:3}))}),x=Object.freeze(Object.defineProperty({__proto__:null,PopoverContent:w,PopoverTrigger:y,Tooltip:b},Symbol.toStringTag,{value:"Module"})),E={install:(e,t={})=>{assignDeep(n,t);for(const n in a){const t=a[n];e.directive(n,t)}const o=n.componentPrefix;for(const n in x){const t=x[n];e.component(`${o}${n}`,t)}},config:n};return e.PopoverContent=w,e.PopoverTrigger=y,e.Tooltip=b,e.assignDeep=assignDeep,e.default=E,e.directive=i,e.elementContains=elementContains,e.getPopoverEventHandlers=getPopoverEventHandlers,e.hidePopover=hidePopover,e.off=off,e.on=on,e.resolveEl=resolveEl,e.showPopover=showPopover,e.togglePopover=togglePopover,Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}}),e}({},Vue);
//# sourceMappingURL=index.js.map
export { default as Tooltip } from './Tooltip.vue';
export { default as Popover } from './Popover.vue';
export { default as PopoverContent } from './PopoverContent.vue';
export { default as PopoverTrigger } from './PopoverTrigger.vue';
import { type PropType } from 'vue';
import type { PopoverOptions } from '../config';
import { type ElementTarget } from '../utils/helpers';
import { type PopoverOptions } from '../config';
export declare const PropDefs: {
action: PropType<import("../config").PopoverAction>;
anchor: PropType<ElementTarget>;
arrowHidden: {
type: BooleanConstructor;
default: undefined;
};
arrowSize: NumberConstructor;
arrowInsetHorizontal: NumberConstructor;
arrowInsetVertical: NumberConstructor;
autoHide: {
type: BooleanConstructor;
default: undefined;
};
dark: {
type: BooleanConstructor;
default: undefined;
};
data: null;
flip: {
type: BooleanConstructor;
default: undefined;
};
force: {
type: BooleanConstructor;
default: undefined;
};
hideDelay: NumberConstructor;
interactive: {
type: BooleanConstructor;
default: undefined;
};
offsets: PropType<{
top: {
x: number;
y: number;
};
bottom: {
x: number;
y: number;
};
left: {
x: number;
y: number;
};
right: {
x: number;
y: number;
};
}>;
placement: PropType<import("@floating-ui/utils").Placement>;
positionFixed: {
type: BooleanConstructor;
default: undefined;
};
profile: PropType<string>;
showDelay: NumberConstructor;
teleport: StringConstructor;
transition: PropType<("slide" | "fade" | "scale" | "move")[]>;
};
declare const _default: import("vue").DefineComponent<{
name: {
type: PropType<PropertyKey>;
required: true;
};
action: PropType<import("../config").PopoverAction>;
anchor: PropType<ElementTarget>;
arrowHidden: {
type: BooleanConstructor;
default: undefined;
};
arrowSize: NumberConstructor;
arrowInsetHorizontal: NumberConstructor;
arrowInsetVertical: NumberConstructor;
autoHide: {
type: BooleanConstructor;
default: undefined;
};
dark: {
type: BooleanConstructor;
default: undefined;
};
data: null;
flip: {
type: BooleanConstructor;
default: undefined;
};
force: {
type: BooleanConstructor;
default: undefined;
};
hideDelay: NumberConstructor;
interactive: {
type: BooleanConstructor;
default: undefined;
};
offsets: PropType<{
top: {
x: number;
y: number;
};
bottom: {
x: number;
y: number;
};
left: {
x: number;
y: number;
};
right: {
x: number;
y: number;
};
}>;
placement: PropType<import("@floating-ui/utils").Placement>;
positionFixed: {
type: BooleanConstructor;
default: undefined;
};
profile: PropType<string>;
showDelay: NumberConstructor;
teleport: StringConstructor;
transition: PropType<("slide" | "fade" | "scale" | "move")[]>;
}, {
actualPlacement: import("vue").Ref<import("@floating-ui/utils").Placement | null>;
popoverRef: import("vue").Ref<HTMLElement | undefined>;
style: import("vue").ComputedRef<{
'--caret-size': string;
'--caret-inset-horizontal': string;
'--caret-inset-vertical': string;
'--offset-horizontal': string;
'--offset-vertical': string;
'--transition-property': string;
}>;
align: import("vue").ComputedRef<"top" | "right" | "bottom" | "left" | "middle" | "center">;
dark: import("vue").Ref<boolean>;
data: import("vue").Ref<any>;
direction: import("vue").ComputedRef<"top" | "right" | "bottom" | "left">;
align: import("vue").ComputedRef<"top" | "right" | "bottom" | "left" | "middle" | "center">;
transitionProperty: import("vue").ComputedRef<string>;
interactive: import("vue").Ref<boolean>;
middleware: import("vue").ComputedRef<{

@@ -36,2 +149,16 @@ name: string;

}[]>;
popoverRef: import("vue").Ref<HTMLElement | undefined>;
profile: import("vue").Ref<string>;
style: import("vue").ComputedRef<{
'--arrow-size': string;
'--arrow-display': string;
'--arrow-inset-horizontal': string;
'--arrow-inset-vertical': string;
'--offset-horizontal': string;
'--offset-vertical': string;
'--transition-property': string;
}>;
teleport: import("vue").Ref<string | null>;
transition: import("vue").Ref<("slide" | "fade" | "scale" | "move")[]>;
visible: import("vue").Ref<boolean>;
hide: (opts?: Partial<PopoverOptions>) => void;

@@ -47,49 +174,39 @@ beforeEnter: (el: Element) => void;

onFocusOut: (e: FocusEvent) => void;
focused: import("vue").Ref<boolean>;
hovered: import("vue").Ref<boolean>;
visible: import("vue").Ref<boolean>;
moving: import("vue").Ref<boolean>;
action: import("vue").Ref<import("../config").PopoverAction>;
anchor: import("vue").Ref<string | HTMLElement | import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string>, {}> | null>;
arrowHidden: import("vue").Ref<boolean>;
arrowInsetHorizontal: import("vue").Ref<number>;
arrowInsetVertical: import("vue").Ref<number>;
arrowSize: import("vue").Ref<number>;
autoHide: import("vue").Ref<boolean>;
dark: import("vue").Ref<boolean>;
data: import("vue").Ref<any>;
flip: import("vue").Ref<boolean | {
rootBoundary?: "viewport" | "document" | {
x: number;
y: number;
width: number;
height: number;
} | undefined;
elementContext?: import("@floating-ui/core").ElementContext | undefined;
altBoundary?: boolean | undefined;
padding?: number | {
top?: number | undefined;
right?: number | undefined;
bottom?: number | undefined;
left?: number | undefined;
} | undefined;
mainAxis?: boolean | undefined;
crossAxis?: boolean | undefined;
fallbackPlacements?: import("@floating-ui/utils").Placement[] | undefined;
fallbackStrategy?: "bestFit" | "initialPlacement" | undefined;
fallbackAxisSideDirection?: "start" | "end" | "none" | undefined;
flipAlignment?: boolean | undefined;
boundary?: Element | {
x: number;
y: number;
width: number;
height: number;
} | "clippingAncestors" | Element[] | undefined;
}>;
force: import("vue").Ref<boolean>;
name: import("vue").Ref<PropertyKey>;
profile: import("vue").Ref<string>;
hideDelay: import("vue").Ref<number>;
interactive: import("vue").Ref<boolean>;
offsets: import("vue").Ref<{
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("before-show" | "after-show" | "before-hide" | "after-hide")[], "before-show" | "after-show" | "before-hide" | "after-hide", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
name: {
type: PropType<PropertyKey>;
required: true;
};
action: PropType<import("../config").PopoverAction>;
anchor: PropType<ElementTarget>;
arrowHidden: {
type: BooleanConstructor;
default: undefined;
};
arrowSize: NumberConstructor;
arrowInsetHorizontal: NumberConstructor;
arrowInsetVertical: NumberConstructor;
autoHide: {
type: BooleanConstructor;
default: undefined;
};
dark: {
type: BooleanConstructor;
default: undefined;
};
data: null;
flip: {
type: BooleanConstructor;
default: undefined;
};
force: {
type: BooleanConstructor;
default: undefined;
};
hideDelay: NumberConstructor;
interactive: {
type: BooleanConstructor;
default: undefined;
};
offsets: PropType<{
top: {

@@ -112,11 +229,11 @@ x: number;

}>;
placement: import("vue").Ref<import("@floating-ui/utils").Placement>;
positionFixed: import("vue").Ref<boolean>;
showDelay: import("vue").Ref<number>;
teleport: import("vue").Ref<string | null>;
transition: import("vue").Ref<("slide" | "fade" | "scale" | "move")[]>;
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("before-show" | "after-show" | "before-hide" | "after-hide")[], "before-show" | "after-show" | "before-hide" | "after-hide", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
name: {
type: PropType<PropertyKey>;
placement: PropType<import("@floating-ui/utils").Placement>;
positionFixed: {
type: BooleanConstructor;
default: undefined;
};
profile: PropType<string>;
showDelay: NumberConstructor;
teleport: StringConstructor;
transition: PropType<("slide" | "fade" | "scale" | "move")[]>;
}>> & {

@@ -127,3 +244,11 @@ "onBefore-show"?: ((...args: any[]) => any) | undefined;

"onAfter-hide"?: ((...args: any[]) => any) | undefined;
}, {}>;
}, {
arrowHidden: boolean;
autoHide: boolean;
dark: boolean;
flip: boolean;
force: boolean;
interactive: boolean;
positionFixed: boolean;
}>;
export default _default;

@@ -5,3 +5,62 @@ import { type PropType, type VNode } from 'vue';

type: PropType<PropertyKey>;
default: () => symbol;
};
action: PropType<import("..").PopoverAction>;
anchor: PropType<import("..").ElementTarget>;
arrowHidden: {
type: BooleanConstructor;
default: undefined;
};
arrowSize: NumberConstructor;
arrowInsetHorizontal: NumberConstructor;
arrowInsetVertical: NumberConstructor;
autoHide: {
type: BooleanConstructor;
default: undefined;
};
dark: {
type: BooleanConstructor;
default: undefined;
};
data: null;
flip: {
type: BooleanConstructor;
default: undefined;
};
force: {
type: BooleanConstructor;
default: undefined;
};
hideDelay: NumberConstructor;
interactive: {
type: BooleanConstructor;
default: undefined;
};
offsets: PropType<{
top: {
x: number;
y: number;
};
bottom: {
x: number;
y: number;
};
left: {
x: number;
y: number;
};
right: {
x: number;
y: number;
};
}>;
placement: PropType<import("@floating-ui/utils").Placement>;
positionFixed: {
type: BooleanConstructor;
default: undefined;
};
profile: PropType<string>;
showDelay: NumberConstructor;
teleport: StringConstructor;
transition: PropType<("slide" | "fade" | "scale" | "move")[]>;
}, VNode<import("vue").RendererNode, import("vue").RendererElement, {

@@ -11,7 +70,77 @@ [key: string]: any;

[key: string]: any;
}>) | null, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
}> | VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>[]) | null, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
name: {
type: PropType<PropertyKey>;
default: () => symbol;
};
}>>, {}>;
action: PropType<import("..").PopoverAction>;
anchor: PropType<import("..").ElementTarget>;
arrowHidden: {
type: BooleanConstructor;
default: undefined;
};
arrowSize: NumberConstructor;
arrowInsetHorizontal: NumberConstructor;
arrowInsetVertical: NumberConstructor;
autoHide: {
type: BooleanConstructor;
default: undefined;
};
dark: {
type: BooleanConstructor;
default: undefined;
};
data: null;
flip: {
type: BooleanConstructor;
default: undefined;
};
force: {
type: BooleanConstructor;
default: undefined;
};
hideDelay: NumberConstructor;
interactive: {
type: BooleanConstructor;
default: undefined;
};
offsets: PropType<{
top: {
x: number;
y: number;
};
bottom: {
x: number;
y: number;
};
left: {
x: number;
y: number;
};
right: {
x: number;
y: number;
};
}>;
placement: PropType<import("@floating-ui/utils").Placement>;
positionFixed: {
type: BooleanConstructor;
default: undefined;
};
profile: PropType<string>;
showDelay: NumberConstructor;
teleport: StringConstructor;
transition: PropType<("slide" | "fade" | "scale" | "move")[]>;
}>>, {
arrowHidden: boolean;
autoHide: boolean;
dark: boolean;
flip: boolean;
force: boolean;
name: PropertyKey;
interactive: boolean;
positionFixed: boolean;
}>;
export default _default;

@@ -48,2 +48,3 @@ import type { Placement, FlipOptions } from '@floating-ui/dom';

transition: ('slide' | 'fade' | 'scale' | 'move')[];
trigger: HTMLElement | null;
}

@@ -50,0 +51,0 @@ export type PopoverOptionsWithName = Partial<PopoverOptions> & {

import { type Directive } from 'vue';
import type { PopoverOptions, PopoverOptionsWithName } from '..';
interface PopoverTarget {
el: HTMLElement;
options: PopoverOptionsWithName;
handlers: Function[];
}
export declare const popoverState: Record<PropertyKey, PopoverTarget[]>;
export declare function addPopover(el: HTMLElement, options: Partial<PopoverOptions>): void;
export declare function removePopover(el: HTMLElement): void;
export declare const directive: Directive;
export {};

@@ -1,3 +0,3 @@

import type { ComponentPublicInstance, Ref } from 'vue';
export type ElementTarget = string | HTMLElement | ComponentPublicInstance | null | Ref<string | HTMLElement | ComponentPublicInstance | null>;
import { type ComponentPublicInstance, type Ref } from 'vue';
export type ElementTarget = string | HTMLElement | ComponentPublicInstance | null | undefined | Ref<string | HTMLElement | ComponentPublicInstance | null | undefined>;
export interface CustomElement {

@@ -10,5 +10,5 @@ addEventListener: Function;

export declare function assignDeep(target: any, ...sources: any[]): any;
export declare const resolveEl: (target: ElementTarget) => HTMLElement | null;
export declare const resolveEl: (target: ElementTarget | Ref<ElementTarget>) => HTMLElement | null;
export declare const off: (element: CustomElement, event: string, handler: (e: any) => void, opts?: boolean | EventListenerOptions | undefined) => void;
export declare const on: (element: CustomElement, event: string, handler: (e: any) => void, opts?: boolean | AddEventListenerOptions | undefined) => () => void;
export declare const elementContains: (element: Node, child: Node) => boolean;

@@ -1,10 +0,14 @@

import Popover from '@/components/Popover.vue';
import PopoverTrigger from '@/components/PopoverTrigger.vue';
import PopoverContent from '@/components/PopoverContent.vue';
import { VueWrapper } from '@vue/test-utils';
import { ComponentPublicInstance, UnwrapNestedRefs } from 'vue';
export type PopoverComponent = UnwrapNestedRefs<typeof Popover> & ComponentPublicInstance;
export type PluginComponent = PopoverComponent;
export type ComponentMount = (props?: any) => VueWrapper<PluginComponent>;
export declare function mountPopover(ctx: any): VueWrapper<PopoverComponent>;
export declare function expectValueEmitted(dp: VueWrapper<PopoverComponent>, value: any): void;
export declare function expectNoValueEmitted(dp: VueWrapper<PopoverComponent>): void;
export type PopoverTriggerComponent = UnwrapNestedRefs<typeof PopoverTrigger> & ComponentPublicInstance;
export type PopoverContentComponent = UnwrapNestedRefs<typeof PopoverContent> & ComponentPublicInstance;
export type PluginTriggerComponent = PopoverTriggerComponent;
export type PluginCotentComponent = PopoverContentComponent;
export type ComponentMount = (props?: any) => VueWrapper<PluginTriggerComponent>;
export declare function mountPopoverTrigger(ctx: any): VueWrapper<PopoverTriggerComponent>;
export declare function mountPopoverContent(ctx: any): void;
export declare function expectValueEmitted(dp: VueWrapper<PopoverTriggerComponent>, value: any): void;
export declare function expectNoValueEmitted(dp: VueWrapper<PopoverTriggerComponent>): void;
export declare function renderFnEvents(evts: Record<string, Function>): Record<string, Function>;
{
"name": "v-popover",
"type": "module",
"version": "0.0.8",
"version": "0.0.9",
"description": "A popover plugin for Vue.js.",

@@ -6,0 +6,0 @@ "author": "Nathan Reyes <nathanreyes@me.com>",

export { default as Tooltip } from './Tooltip.vue';
export { default as Popover } from './Popover.vue';
export { default as PopoverContent } from './PopoverContent.vue';
export { default as PopoverTrigger } from './PopoverTrigger.vue';

@@ -39,2 +39,3 @@ import type { Placement, FlipOptions } from '@floating-ui/dom';

transition: ('slide' | 'fade' | 'scale' | 'move')[];
trigger: HTMLElement | null;
}

@@ -57,3 +58,3 @@

arrowHidden: false,
arrowInsetHorizontal: 18,
arrowInsetHorizontal: 14,
arrowInsetVertical: 8,

@@ -65,8 +66,9 @@ arrowSize: 10,

offsets: {
top: { x: 0, y: 0 },
bottom: { x: 0, y: 0 },
left: { x: 0, y: 0 },
right: { x: 0, y: 0 },
top: { x: 0, y: 8 },
bottom: { x: 0, y: 8 },
left: { x: 8, y: 0 },
right: { x: 8, y: 0 },
},
placement: 'top',
teleport: null,
transition: ['fade'],

@@ -78,3 +80,3 @@ },

arrowHidden: true,
arrowInsetHorizontal: 18,
arrowInsetHorizontal: 14,
arrowInsetVertical: 8,

@@ -86,8 +88,9 @@ arrowSize: 12,

offsets: {
top: { x: 0, y: 10 },
bottom: { x: 0, y: 10 },
left: { x: 10, y: 0 },
right: { x: 10, y: 0 },
top: { x: 0, y: 6 },
bottom: { x: 0, y: 6 },
left: { x: 6, y: 0 },
right: { x: 6, y: 0 },
},
placement: 'bottom-start',
teleport: 'body',
transition: ['fade', 'scale', 'move'],

@@ -94,0 +97,0 @@ },

@@ -1,65 +0,5 @@

import { type Directive, type DirectiveBinding, reactive } from 'vue';
import { on, assignDeep } from '../utils/helpers';
import type { PopoverOptions, PopoverOptionsWithName } from '..';
import { getPopoverEventHandlers } from '../utils/events';
import { config } from '../config';
import { type Directive, type DirectiveBinding } from 'vue';
import type { PopoverOptions } from '..';
import { addPopover, removePopover } from '../state';
interface PopoverTarget {
el: HTMLElement;
options: PopoverOptionsWithName;
handlers: Function[];
}
export const popoverState: Record<PropertyKey, PopoverTarget[]> = reactive({});
function resolveOptions(
options: Partial<PopoverOptions>,
): PopoverOptionsWithName {
const profileOptions = options.profile
? config.profiles[options.profile]
: {};
return assignDeep({}, profileOptions, options, {
name: options.name ?? profileOptions.name,
});
}
function addHandlers(el: HTMLElement, opts: Partial<PopoverOptions>) {
const removeHandlers: Function[] = [];
const handlers = getPopoverEventHandlers(opts);
Object.entries(handlers).forEach(([event, handler]) => {
removeHandlers.push(on(el, event, handler as EventListener));
});
return removeHandlers;
}
export function addPopover(el: HTMLElement, options: Partial<PopoverOptions>) {
const resolvedOptions = resolveOptions(options);
if (!resolvedOptions.name) {
throw new Error(
`Popover name is missing from directive options: ${options}`,
);
}
popoverState[resolvedOptions.name] ??= [];
popoverState[resolvedOptions.name].push({
el,
options: resolvedOptions,
handlers: addHandlers(el, resolvedOptions),
});
}
const removeHandlers = (handlers: Function[]) => {
handlers.forEach(handler => handler());
};
export function removePopover(el: HTMLElement) {
Object.entries(popoverState).forEach(([_, popovers]) => {
const index = popovers.findIndex(p => p.el === el);
if (index !== -1) {
removeHandlers(popovers[index].handlers);
popovers.splice(index, 1);
}
});
}
export const directive: Directive = {

@@ -66,0 +6,0 @@ mounted(el: HTMLElement, binding: DirectiveBinding<PopoverOptions>) {

@@ -55,5 +55,7 @@ import { elementContains } from './helpers';

if (click) {
const trigger = e.currentTarget as HTMLElement;
togglePopover({
...opts,
anchor: opts.anchor || (e.currentTarget as HTMLElement),
trigger,
anchor: opts.anchor || trigger,
});

@@ -68,5 +70,7 @@ e.stopPropagation();

if (hover || hoverFocus) {
const trigger = e.currentTarget as HTMLElement;
showPopover({
...opts,
anchor: opts.anchor || (e.currentTarget as HTMLElement),
trigger,
anchor: opts.anchor || trigger,
});

@@ -90,5 +94,7 @@ }

if (focus || hoverFocus) {
const trigger = e.currentTarget as HTMLElement;
showPopover({
...opts,
anchor: opts.anchor || (e.currentTarget as HTMLElement),
trigger,
anchor: opts.anchor || trigger,
});

@@ -95,0 +101,0 @@ }

@@ -1,2 +0,2 @@

import type { ComponentPublicInstance, Ref } from 'vue';
import { type ComponentPublicInstance, type Ref, unref } from 'vue';

@@ -8,3 +8,4 @@ export type ElementTarget =

| null
| Ref<string | HTMLElement | ComponentPublicInstance | null>;
| undefined
| Ref<string | HTMLElement | ComponentPublicInstance | null | undefined>;

@@ -25,5 +26,9 @@ export interface CustomElement {

for (const key in source) {
if (typeof source[key] === 'object' && target[key]) {
assignDeep(target[key], source[key]);
} else if (source[key] != null) {
if (
typeof source[key] === 'object' &&
target[key] &&
!(source[key] instanceof Element)
) {
assignDeep(target[key], source[key], false);
} else if (source[key] !== undefined) {
target[key] = source[key];

@@ -37,3 +42,6 @@ }

export const resolveEl = (target: ElementTarget): HTMLElement | null => {
export const resolveEl = (
target: ElementTarget | Ref<ElementTarget>,
): HTMLElement | null => {
target = unref(target);
if (target == null) return null;

@@ -40,0 +48,0 @@ if (document && typeof target === 'string') {

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc