UNPKG

equal-vue

Version:

Equal is a Vue 3 hackable UI library empowered by tailwindcss

1,533 lines 250 kB
import { ref, computed, watch, nextTick, inject, defineComponent, withDirectives, openBlock, createElementBlock, normalizeClass, renderSlot, createElementVNode, toDisplayString, createCommentVNode, vShow, normalizeStyle, normalizeProps, mergeProps, onUpdated, provide, h as h$1, resolveComponent, createBlock, resolveDynamicComponent, withCtx, createVNode, Transition, guardReactiveProps, createTextVNode, withKeys, withModifiers, Fragment, reactive, getCurrentInstance, onUnmounted, unref, toRefs, Teleport, onMounted, resolveDirective, toHandlers, toRef, renderList, onBeforeUnmount, createApp } from "vue"; var Positions = /* @__PURE__ */ ((Positions2) => { Positions2["B"] = "bottom"; Positions2["BL"] = "bottom-left"; Positions2["BR"] = "bottom-right"; Positions2["L"] = "left"; Positions2["LT"] = "left-top"; Positions2["LB"] = "left-bottom"; Positions2["R"] = "right"; Positions2["RT"] = "right-top"; Positions2["RB"] = "right-bottom"; Positions2["T"] = "top"; Positions2["TL"] = "top-left"; Positions2["TR"] = "top-right"; return Positions2; })(Positions || {}); var Sizes = /* @__PURE__ */ ((Sizes2) => { Sizes2["BIG"] = "big"; Sizes2["NORMAL"] = "normal"; Sizes2["SMALL"] = "small"; return Sizes2; })(Sizes || {}); var EDirections = /* @__PURE__ */ ((EDirections2) => { EDirections2["UP"] = "up"; EDirections2["DOWN"] = "down"; return EDirections2; })(EDirections || {}); var Components = /* @__PURE__ */ ((Components2) => { Components2["ITAlert"] = "ItAlert"; Components2["ITAvatar"] = "ItAvatar"; Components2["ITAvatarGroup"] = "ItAvatarGroup"; Components2["ITTag"] = "ItTag"; Components2["ITCheckbox"] = "ItCheckbox"; Components2["ITColorpicker"] = "ItColorpicker"; Components2["ITDivider"] = "ItDivider"; Components2["ITDropdown"] = "ItDropdown"; Components2["ITDrawer"] = "ItDrawer"; Components2["ITBadge"] = "ItBadge"; Components2["ITButton"] = "ItButton"; Components2["ITButtonGroup"] = "ItButtonGroup"; Components2["ITLoadingbar"] = "ItLoadingBar"; Components2["ITSpinner"] = "ItSpinner"; Components2["ITSelect"] = "ItSelect"; Components2["ITSlider"] = "ItSlider"; Components2["ITSwitch"] = "ItSwitch"; Components2["ITMessage"] = "ItMessage"; Components2["ITModal"] = "ItModal"; Components2["ITNotification"] = "ItNotification"; Components2["ITCollapse"] = "ItCollapse"; Components2["ITCollapseItem"] = "ItCollapseItem"; Components2["ITTabs"] = "ItTabs"; Components2["ITTextarea"] = "ItTextarea"; Components2["ITTooltip"] = "ItTooltip"; Components2["ITToggle"] = "ItToggle"; Components2["ITRadio"] = "ItRadio"; Components2["ITProgressbar"] = "ItProgressbar"; Components2["ITInput"] = "ItInput"; Components2["ITNumberInput"] = "ItNumberInput"; Components2["ITPopover"] = "ItPopover"; return Components2; })(Components || {}); const useCheckSlot = (slots, name) => { return name in slots ? ref(slots[name]) : null; }; function getSide(placement) { return placement.split("-")[0]; } function getAlignment(placement) { return placement.split("-")[1]; } function getMainAxisFromPlacement(placement) { return ["top", "bottom"].includes(getSide(placement)) ? "x" : "y"; } function getLengthFromAxis(axis) { return axis === "y" ? "height" : "width"; } function computeCoordsFromPlacement(_ref, placement, rtl) { let { reference, floating } = _ref; const commonX = reference.x + reference.width / 2 - floating.width / 2; const commonY = reference.y + reference.height / 2 - floating.height / 2; const mainAxis = getMainAxisFromPlacement(placement); const length = getLengthFromAxis(mainAxis); const commonAlign = reference[length] / 2 - floating[length] / 2; const side = getSide(placement); const isVertical = mainAxis === "x"; let coords; switch (side) { case "top": coords = { x: commonX, y: reference.y - floating.height }; break; case "bottom": coords = { x: commonX, y: reference.y + reference.height }; break; case "right": coords = { x: reference.x + reference.width, y: commonY }; break; case "left": coords = { x: reference.x - floating.width, y: commonY }; break; default: coords = { x: reference.x, y: reference.y }; } switch (getAlignment(placement)) { case "start": coords[mainAxis] -= commonAlign * (rtl && isVertical ? -1 : 1); break; case "end": coords[mainAxis] += commonAlign * (rtl && isVertical ? -1 : 1); break; } return coords; } const computePosition$1 = async (reference, floating, config) => { const { placement = "bottom", strategy = "absolute", middleware = [], platform: platform2 } = config; const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(floating)); let rects = await platform2.getElementRects({ reference, floating, strategy }); let { x: x2, y: y2 } = computeCoordsFromPlacement(rects, placement, rtl); let statefulPlacement = placement; let middlewareData = {}; let resetCount = 0; for (let i2 = 0; i2 < middleware.length; i2++) { const { name, fn } = middleware[i2]; const { x: nextX, y: nextY, data, reset } = await fn({ x: x2, y: y2, initialPlacement: placement, placement: statefulPlacement, strategy, middlewareData, rects, platform: platform2, elements: { reference, floating } }); x2 = nextX != null ? nextX : x2; y2 = nextY != null ? nextY : y2; middlewareData = { ...middlewareData, [name]: { ...middlewareData[name], ...data } }; if (reset && resetCount <= 50) { resetCount++; if (typeof reset === "object") { if (reset.placement) { statefulPlacement = reset.placement; } if (reset.rects) { rects = reset.rects === true ? await platform2.getElementRects({ reference, floating, strategy }) : reset.rects; } ({ x: x2, y: y2 } = computeCoordsFromPlacement(rects, statefulPlacement, rtl)); } i2 = -1; continue; } } return { x: x2, y: y2, placement: statefulPlacement, strategy, middlewareData }; }; function expandPaddingObject(padding) { return { top: 0, right: 0, bottom: 0, left: 0, ...padding }; } function getSideObjectFromPadding(padding) { return typeof padding !== "number" ? expandPaddingObject(padding) : { top: padding, right: padding, bottom: padding, left: padding }; } function rectToClientRect(rect) { return { ...rect, top: rect.y, left: rect.x, right: rect.x + rect.width, bottom: rect.y + rect.height }; } async function detectOverflow(middlewareArguments, options) { var _await$platform$isEle; if (options === void 0) { options = {}; } const { x: x2, y: y2, platform: platform2, rects, elements, strategy } = middlewareArguments; const { boundary = "clippingAncestors", rootBoundary = "viewport", elementContext = "floating", altBoundary = false, padding = 0 } = options; const paddingObject = getSideObjectFromPadding(padding); const altContext = elementContext === "floating" ? "reference" : "floating"; const element = elements[altBoundary ? altContext : elementContext]; const clippingClientRect = rectToClientRect(await platform2.getClippingRect({ element: ((_await$platform$isEle = await (platform2.isElement == null ? void 0 : platform2.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || await (platform2.getDocumentElement == null ? void 0 : platform2.getDocumentElement(elements.floating)), boundary, rootBoundary, strategy })); const elementClientRect = rectToClientRect(platform2.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform2.convertOffsetParentRelativeRectToViewportRelativeRect({ rect: elementContext === "floating" ? { ...rects.floating, x: x2, y: y2 } : rects.reference, offsetParent: await (platform2.getOffsetParent == null ? void 0 : platform2.getOffsetParent(elements.floating)), strategy }) : rects[elementContext]); return { top: clippingClientRect.top - elementClientRect.top + paddingObject.top, bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, left: clippingClientRect.left - elementClientRect.left + paddingObject.left, right: elementClientRect.right - clippingClientRect.right + paddingObject.right }; } const min$1 = Math.min; const max$1 = Math.max; function within(min$1$1, value, max$1$1) { return max$1(min$1$1, min$1(value, max$1$1)); } const hash$1 = { left: "right", right: "left", bottom: "top", top: "bottom" }; function getOppositePlacement(placement) { return placement.replace(/left|right|bottom|top/g, (matched) => hash$1[matched]); } function getAlignmentSides(placement, rects, rtl) { if (rtl === void 0) { rtl = false; } const alignment = getAlignment(placement); const mainAxis = getMainAxisFromPlacement(placement); const length = getLengthFromAxis(mainAxis); let mainAlignmentSide = mainAxis === "x" ? alignment === (rtl ? "end" : "start") ? "right" : "left" : alignment === "start" ? "bottom" : "top"; if (rects.reference[length] > rects.floating[length]) { mainAlignmentSide = getOppositePlacement(mainAlignmentSide); } return { main: mainAlignmentSide, cross: getOppositePlacement(mainAlignmentSide) }; } const hash = { start: "end", end: "start" }; function getOppositeAlignmentPlacement(placement) { return placement.replace(/start|end/g, (matched) => hash[matched]); } function getExpandedPlacements(placement) { const oppositePlacement = getOppositePlacement(placement); return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)]; } const flip = function(options) { if (options === void 0) { options = {}; } return { name: "flip", options, async fn(middlewareArguments) { var _middlewareData$flip; const { placement, middlewareData, rects, initialPlacement, platform: platform2, elements } = middlewareArguments; const { mainAxis: checkMainAxis = true, crossAxis: checkCrossAxis = true, fallbackPlacements: specifiedFallbackPlacements, fallbackStrategy = "bestFit", flipAlignment = true, ...detectOverflowOptions } = options; const side = getSide(placement); const isBasePlacement = side === initialPlacement; const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement)); const placements = [initialPlacement, ...fallbackPlacements]; const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions); const overflows = []; let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || []; if (checkMainAxis) { overflows.push(overflow[side]); } if (checkCrossAxis) { const { main, cross } = getAlignmentSides(placement, rects, await (platform2.isRTL == null ? void 0 : platform2.isRTL(elements.floating))); overflows.push(overflow[main], overflow[cross]); } overflowsData = [...overflowsData, { placement, overflows }]; if (!overflows.every((side2) => side2 <= 0)) { var _middlewareData$flip$, _middlewareData$flip2; const nextIndex = ((_middlewareData$flip$ = (_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) != null ? _middlewareData$flip$ : 0) + 1; const nextPlacement = placements[nextIndex]; if (nextPlacement) { return { data: { index: nextIndex, overflows: overflowsData }, reset: { placement: nextPlacement } }; } let resetPlacement = "bottom"; switch (fallbackStrategy) { case "bestFit": { var _overflowsData$map$so; const placement2 = (_overflowsData$map$so = overflowsData.map((d2) => [d2, d2.overflows.filter((overflow2) => overflow2 > 0).reduce((acc, overflow2) => acc + overflow2, 0)]).sort((a2, b2) => a2[1] - b2[1])[0]) == null ? void 0 : _overflowsData$map$so[0].placement; if (placement2) { resetPlacement = placement2; } break; } case "initialPlacement": resetPlacement = initialPlacement; break; } if (placement !== resetPlacement) { return { reset: { placement: resetPlacement } }; } } return {}; } }; }; async function convertValueToCoords(middlewareArguments, value) { const { placement, platform: platform2, elements } = middlewareArguments; const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(elements.floating)); const side = getSide(placement); const alignment = getAlignment(placement); const isVertical = getMainAxisFromPlacement(placement) === "x"; const mainAxisMulti = ["left", "top"].includes(side) ? -1 : 1; const crossAxisMulti = rtl && isVertical ? -1 : 1; const rawValue = typeof value === "function" ? value(middlewareArguments) : value; let { mainAxis, crossAxis, alignmentAxis } = typeof rawValue === "number" ? { mainAxis: rawValue, crossAxis: 0, alignmentAxis: null } : { mainAxis: 0, crossAxis: 0, alignmentAxis: null, ...rawValue }; if (alignment && typeof alignmentAxis === "number") { crossAxis = alignment === "end" ? alignmentAxis * -1 : alignmentAxis; } return isVertical ? { x: crossAxis * crossAxisMulti, y: mainAxis * mainAxisMulti } : { x: mainAxis * mainAxisMulti, y: crossAxis * crossAxisMulti }; } const offset = function(value) { if (value === void 0) { value = 0; } return { name: "offset", options: value, async fn(middlewareArguments) { const { x: x2, y: y2 } = middlewareArguments; const diffCoords = await convertValueToCoords(middlewareArguments, value); return { x: x2 + diffCoords.x, y: y2 + diffCoords.y, data: diffCoords }; } }; }; function getCrossAxis(axis) { return axis === "x" ? "y" : "x"; } const shift = function(options) { if (options === void 0) { options = {}; } return { name: "shift", options, async fn(middlewareArguments) { const { x: x2, y: y2, placement } = middlewareArguments; const { mainAxis: checkMainAxis = true, crossAxis: checkCrossAxis = false, limiter = { fn: (_ref) => { let { x: x3, y: y3 } = _ref; return { x: x3, y: y3 }; } }, ...detectOverflowOptions } = options; const coords = { x: x2, y: y2 }; const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions); const mainAxis = getMainAxisFromPlacement(getSide(placement)); const crossAxis = getCrossAxis(mainAxis); let mainAxisCoord = coords[mainAxis]; let crossAxisCoord = coords[crossAxis]; if (checkMainAxis) { const minSide = mainAxis === "y" ? "top" : "left"; const maxSide = mainAxis === "y" ? "bottom" : "right"; const min2 = mainAxisCoord + overflow[minSide]; const max2 = mainAxisCoord - overflow[maxSide]; mainAxisCoord = within(min2, mainAxisCoord, max2); } if (checkCrossAxis) { const minSide = crossAxis === "y" ? "top" : "left"; const maxSide = crossAxis === "y" ? "bottom" : "right"; const min2 = crossAxisCoord + overflow[minSide]; const max2 = crossAxisCoord - overflow[maxSide]; crossAxisCoord = within(min2, crossAxisCoord, max2); } const limitedCoords = limiter.fn({ ...middlewareArguments, [mainAxis]: mainAxisCoord, [crossAxis]: crossAxisCoord }); return { ...limitedCoords, data: { x: limitedCoords.x - x2, y: limitedCoords.y - y2 } }; } }; }; function isWindow(value) { return value && value.document && value.location && value.alert && value.setInterval; } function getWindow(node) { if (node == null) { return window; } if (!isWindow(node)) { const ownerDocument = node.ownerDocument; return ownerDocument ? ownerDocument.defaultView || window : window; } return node; } function getComputedStyle$1(element) { return getWindow(element).getComputedStyle(element); } function getNodeName(node) { return isWindow(node) ? "" : node ? (node.nodeName || "").toLowerCase() : ""; } function getUAString() { const uaData = navigator.userAgentData; if (uaData != null && uaData.brands) { return uaData.brands.map((item) => item.brand + "/" + item.version).join(" "); } return navigator.userAgent; } function isHTMLElement(value) { return value instanceof getWindow(value).HTMLElement; } function isElement(value) { return value instanceof getWindow(value).Element; } function isNode(value) { return value instanceof getWindow(value).Node; } function isShadowRoot(node) { if (typeof ShadowRoot === "undefined") { return false; } const OwnElement = getWindow(node).ShadowRoot; return node instanceof OwnElement || node instanceof ShadowRoot; } function isOverflowElement(element) { const { overflow, overflowX, overflowY } = getComputedStyle$1(element); return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); } function isTableElement(element) { return ["table", "td", "th"].includes(getNodeName(element)); } function isContainingBlock(element) { const isFirefox = /firefox/i.test(getUAString()); const css = getComputedStyle$1(element); return css.transform !== "none" || css.perspective !== "none" || css.contain === "paint" || ["transform", "perspective"].includes(css.willChange) || isFirefox && css.willChange === "filter" || isFirefox && (css.filter ? css.filter !== "none" : false); } function isLayoutViewport() { return !/^((?!chrome|android).)*safari/i.test(getUAString()); } const min = Math.min; const max = Math.max; const round = Math.round; function getBoundingClientRect(element, includeScale, isFixedStrategy) { var _win$visualViewport$o, _win$visualViewport, _win$visualViewport$o2, _win$visualViewport2; if (includeScale === void 0) { includeScale = false; } if (isFixedStrategy === void 0) { isFixedStrategy = false; } const clientRect = element.getBoundingClientRect(); let scaleX = 1; let scaleY = 1; if (includeScale && isHTMLElement(element)) { scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1; scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1; } const win = isElement(element) ? getWindow(element) : window; const addVisualOffsets = !isLayoutViewport() && isFixedStrategy; const x2 = (clientRect.left + (addVisualOffsets ? (_win$visualViewport$o = (_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) != null ? _win$visualViewport$o : 0 : 0)) / scaleX; const y2 = (clientRect.top + (addVisualOffsets ? (_win$visualViewport$o2 = (_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) != null ? _win$visualViewport$o2 : 0 : 0)) / scaleY; const width = clientRect.width / scaleX; const height = clientRect.height / scaleY; return { width, height, top: y2, right: x2 + width, bottom: y2 + height, left: x2, x: x2, y: y2 }; } function getDocumentElement(node) { return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement; } function getNodeScroll(element) { if (isElement(element)) { return { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop }; } return { scrollLeft: element.pageXOffset, scrollTop: element.pageYOffset }; } function getWindowScrollBarX(element) { return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft; } function isScaled(element) { const rect = getBoundingClientRect(element); return round(rect.width) !== element.offsetWidth || round(rect.height) !== element.offsetHeight; } function getRectRelativeToOffsetParent(element, offsetParent, strategy) { const isOffsetParentAnElement = isHTMLElement(offsetParent); const documentElement = getDocumentElement(offsetParent); const rect = getBoundingClientRect( element, isOffsetParentAnElement && isScaled(offsetParent), strategy === "fixed" ); let scroll = { scrollLeft: 0, scrollTop: 0 }; const offsets = { x: 0, y: 0 }; if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== "fixed") { if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { scroll = getNodeScroll(offsetParent); } if (isHTMLElement(offsetParent)) { const offsetRect = getBoundingClientRect(offsetParent, true); offsets.x = offsetRect.x + offsetParent.clientLeft; offsets.y = offsetRect.y + offsetParent.clientTop; } else if (documentElement) { offsets.x = getWindowScrollBarX(documentElement); } } return { x: rect.left + scroll.scrollLeft - offsets.x, y: rect.top + scroll.scrollTop - offsets.y, width: rect.width, height: rect.height }; } function getParentNode(node) { if (getNodeName(node) === "html") { return node; } return node.assignedSlot || node.parentNode || (isShadowRoot(node) ? node.host : null) || getDocumentElement(node); } function getTrueOffsetParent(element) { if (!isHTMLElement(element) || getComputedStyle(element).position === "fixed") { return null; } return element.offsetParent; } function getContainingBlock(element) { let currentNode = getParentNode(element); if (isShadowRoot(currentNode)) { currentNode = currentNode.host; } while (isHTMLElement(currentNode) && !["html", "body"].includes(getNodeName(currentNode))) { if (isContainingBlock(currentNode)) { return currentNode; } else { currentNode = currentNode.parentNode; } } return null; } function getOffsetParent(element) { const window2 = getWindow(element); let offsetParent = getTrueOffsetParent(element); while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === "static") { offsetParent = getTrueOffsetParent(offsetParent); } if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle(offsetParent).position === "static" && !isContainingBlock(offsetParent))) { return window2; } return offsetParent || getContainingBlock(element) || window2; } function getDimensions(element) { if (isHTMLElement(element)) { return { width: element.offsetWidth, height: element.offsetHeight }; } const rect = getBoundingClientRect(element); return { width: rect.width, height: rect.height }; } function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) { let { rect, offsetParent, strategy } = _ref; const isOffsetParentAnElement = isHTMLElement(offsetParent); const documentElement = getDocumentElement(offsetParent); if (offsetParent === documentElement) { return rect; } let scroll = { scrollLeft: 0, scrollTop: 0 }; const offsets = { x: 0, y: 0 }; if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== "fixed") { if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { scroll = getNodeScroll(offsetParent); } if (isHTMLElement(offsetParent)) { const offsetRect = getBoundingClientRect(offsetParent, true); offsets.x = offsetRect.x + offsetParent.clientLeft; offsets.y = offsetRect.y + offsetParent.clientTop; } } return { ...rect, x: rect.x - scroll.scrollLeft + offsets.x, y: rect.y - scroll.scrollTop + offsets.y }; } function getViewportRect(element, strategy) { const win = getWindow(element); const html = getDocumentElement(element); const visualViewport = win.visualViewport; let width = html.clientWidth; let height = html.clientHeight; let x2 = 0; let y2 = 0; if (visualViewport) { width = visualViewport.width; height = visualViewport.height; const layoutViewport = isLayoutViewport(); if (layoutViewport || !layoutViewport && strategy === "fixed") { x2 = visualViewport.offsetLeft; y2 = visualViewport.offsetTop; } } return { width, height, x: x2, y: y2 }; } function getDocumentRect(element) { var _element$ownerDocumen; const html = getDocumentElement(element); const scroll = getNodeScroll(element); const body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; const width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); const height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); let x2 = -scroll.scrollLeft + getWindowScrollBarX(element); const y2 = -scroll.scrollTop; if (getComputedStyle$1(body || html).direction === "rtl") { x2 += max(html.clientWidth, body ? body.clientWidth : 0) - width; } return { width, height, x: x2, y: y2 }; } function getNearestOverflowAncestor(node) { const parentNode = getParentNode(node); if (["html", "body", "#document"].includes(getNodeName(parentNode))) { return node.ownerDocument.body; } if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) { return parentNode; } return getNearestOverflowAncestor(parentNode); } function getOverflowAncestors(node, list) { var _node$ownerDocument; if (list === void 0) { list = []; } const scrollableAncestor = getNearestOverflowAncestor(node); const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body); const win = getWindow(scrollableAncestor); const target = isBody ? [win].concat(win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []) : scrollableAncestor; const updatedList = list.concat(target); return isBody ? updatedList : updatedList.concat(getOverflowAncestors(target)); } function contains(parent, child) { const rootNode = child.getRootNode == null ? void 0 : child.getRootNode(); if (parent.contains(child)) { return true; } else if (rootNode && isShadowRoot(rootNode)) { let next = child; do { if (next && parent === next) { return true; } next = next.parentNode || next.host; } while (next); } return false; } function getInnerBoundingClientRect(element, strategy) { const clientRect = getBoundingClientRect(element, false, strategy === "fixed"); const top = clientRect.top + element.clientTop; const left = clientRect.left + element.clientLeft; return { top, left, x: left, y: top, right: left + element.clientWidth, bottom: top + element.clientHeight, width: element.clientWidth, height: element.clientHeight }; } function getClientRectFromClippingAncestor(element, clippingParent, strategy) { if (clippingParent === "viewport") { return rectToClientRect(getViewportRect(element, strategy)); } if (isElement(clippingParent)) { return getInnerBoundingClientRect(clippingParent, strategy); } return rectToClientRect(getDocumentRect(getDocumentElement(element))); } function getClippingAncestors(element) { const clippingAncestors = getOverflowAncestors(element); const canEscapeClipping = ["absolute", "fixed"].includes(getComputedStyle$1(element).position); const clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; if (!isElement(clipperElement)) { return []; } return clippingAncestors.filter((clippingAncestors2) => isElement(clippingAncestors2) && contains(clippingAncestors2, clipperElement) && getNodeName(clippingAncestors2) !== "body"); } function getClippingRect(_ref) { let { element, boundary, rootBoundary, strategy } = _ref; const mainClippingAncestors = boundary === "clippingAncestors" ? getClippingAncestors(element) : [].concat(boundary); const clippingAncestors = [...mainClippingAncestors, rootBoundary]; const firstClippingAncestor = clippingAncestors[0]; const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => { const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy); accRect.top = max(rect.top, accRect.top); accRect.right = min(rect.right, accRect.right); accRect.bottom = min(rect.bottom, accRect.bottom); accRect.left = max(rect.left, accRect.left); return accRect; }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy)); return { width: clippingRect.right - clippingRect.left, height: clippingRect.bottom - clippingRect.top, x: clippingRect.left, y: clippingRect.top }; } const platform = { getClippingRect, convertOffsetParentRelativeRectToViewportRelativeRect, isElement, getDimensions, getOffsetParent, getDocumentElement, getElementRects: (_ref) => { let { reference, floating, strategy } = _ref; return { reference: getRectRelativeToOffsetParent(reference, getOffsetParent(floating), strategy), floating: { ...getDimensions(floating), x: 0, y: 0 } }; }, getClientRects: (element) => Array.from(element.getClientRects()), isRTL: (element) => getComputedStyle$1(element).direction === "rtl" }; function autoUpdate(reference, floating, update, options) { if (options === void 0) { options = {}; } const { ancestorScroll: _ancestorScroll = true, ancestorResize: _ancestorResize = true, elementResize = true, animationFrame = false } = options; const ancestorScroll = _ancestorScroll && !animationFrame; const ancestorResize = _ancestorResize && !animationFrame; const ancestors = ancestorScroll || ancestorResize ? [...isElement(reference) ? getOverflowAncestors(reference) : [], ...getOverflowAncestors(floating)] : []; ancestors.forEach((ancestor) => { ancestorScroll && ancestor.addEventListener("scroll", update, { passive: true }); ancestorResize && ancestor.addEventListener("resize", update); }); let observer = null; if (elementResize) { let initialUpdate = true; observer = new ResizeObserver(() => { if (!initialUpdate) { update(); } initialUpdate = false; }); isElement(reference) && !animationFrame && observer.observe(reference); observer.observe(floating); } let frameId; let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null; if (animationFrame) { frameLoop(); } function frameLoop() { const nextRefRect = getBoundingClientRect(reference); if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) { update(); } prevRefRect = nextRefRect; frameId = requestAnimationFrame(frameLoop); } update(); return () => { var _observer; ancestors.forEach((ancestor) => { ancestorScroll && ancestor.removeEventListener("scroll", update); ancestorResize && ancestor.removeEventListener("resize", update); }); (_observer = observer) == null ? void 0 : _observer.disconnect(); observer = null; if (animationFrame) { cancelAnimationFrame(frameId); } }; } const computePosition = (reference, floating, options) => computePosition$1(reference, floating, { platform, ...options }); const usePopover = (props) => { var _a, _b; const show = ref(false); const placement = ref( props.placement || Positions.T ); const disabled = ref(props.disabled); const clickable = ref(props.hoverable); const transition = computed(() => `fade-${placement.value.split("-")[0]}`); const visionTimer = ref(null); const permanent = ref(props.permanent); const elOffset = ref(props.offset || 8); const popover = ref((_a = props.popoverEl) != null ? _a : null); const trigger = ref((_b = props.triggerEl) != null ? _b : null); watch(permanent, (value) => { if (value) { if (trigger.value) { setTimeout(() => { setPopoverPosition(); show.value = true; }, 100); } } }); watch(disabled, (value) => { if (value) { hidePopover(); } else if (permanent) { showPopover(); } }); function handleMouseEnter(e2) { if (disabled.value) { return; } if (e2.target.isSameNode(popover.value) && !clickable.value) { return; } showPopover(); clearTimeout(visionTimer.value); } function handleMouseLeave() { if (!permanent.value) { visionTimer.value = setTimeout(() => { hidePopover(); }, 150); } } function hidePopover() { show.value = false; } function showPopover() { if (!show.value && !disabled.value) { setPopoverPosition(); show.value = true; } } async function setPopoverPosition() { await nextTick(); const popoverTemp = popover.value; const triggerTemp = trigger.value; if (!popoverTemp || !triggerTemp) { return; } const { x: x2, y: y2, placement: extPlacement } = await computePosition(triggerTemp, popoverTemp, { middleware: [offset(elOffset.value), flip(), shift()], placement: placement.value }); Object.assign(popoverTemp.style, { position: "absolute", left: `${x2}px`, top: `${y2}px` }); } return { show, placement, disabled, clickable, transition, visionTimer, popover, trigger, permanent, elOffset, handleMouseEnter, handleMouseLeave, hidePopover, showPopover, setPopoverPosition }; }; function twJoin() { var index2 = 0; var argument; var resolvedValue; var string = ""; while (index2 < arguments.length) { if (argument = arguments[index2++]) { if (resolvedValue = toValue(argument)) { string && (string += " "); string += resolvedValue; } } } return string; } function toValue(mix) { if (typeof mix === "string") { return mix; } var resolvedValue; var string = ""; for (var k = 0; k < mix.length; k++) { if (mix[k]) { if (resolvedValue = toValue(mix[k])) { string && (string += " "); string += resolvedValue; } } } return string; } var CLASS_PART_SEPARATOR = "-"; function createClassUtils(config) { var classMap = createClassMap(config); var conflictingClassGroups = config.conflictingClassGroups, _config$conflictingCl = config.conflictingClassGroupModifiers, conflictingClassGroupModifiers = _config$conflictingCl === void 0 ? {} : _config$conflictingCl; function getClassGroupId(className) { var classParts = className.split(CLASS_PART_SEPARATOR); if (classParts[0] === "" && classParts.length !== 1) { classParts.shift(); } return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className); } function getConflictingClassGroupIds(classGroupId, hasPostfixModifier) { var conflicts = conflictingClassGroups[classGroupId] || []; if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) { return [].concat(conflicts, conflictingClassGroupModifiers[classGroupId]); } return conflicts; } return { getClassGroupId, getConflictingClassGroupIds }; } function getGroupRecursive(classParts, classPartObject) { var _a; if (classParts.length === 0) { return classPartObject.classGroupId; } var currentClassPart = classParts[0]; var nextClassPartObject = classPartObject.nextPart.get(currentClassPart); var classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : void 0; if (classGroupFromNextClassPart) { return classGroupFromNextClassPart; } if (classPartObject.validators.length === 0) { return void 0; } var classRest = classParts.join(CLASS_PART_SEPARATOR); return (_a = classPartObject.validators.find(function(_ref) { var validator = _ref.validator; return validator(classRest); })) == null ? void 0 : _a.classGroupId; } var arbitraryPropertyRegex = /^\[(.+)\]$/; function getGroupIdForArbitraryProperty(className) { if (arbitraryPropertyRegex.test(className)) { var arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1]; var property = arbitraryPropertyClassName == null ? void 0 : arbitraryPropertyClassName.substring(0, arbitraryPropertyClassName.indexOf(":")); if (property) { return "arbitrary.." + property; } } } function createClassMap(config) { var theme = config.theme, prefix = config.prefix; var classMap = { nextPart: /* @__PURE__ */ new Map(), validators: [] }; var prefixedClassGroupEntries = getPrefixedClassGroupEntries(Object.entries(config.classGroups), prefix); prefixedClassGroupEntries.forEach(function(_ref2) { var classGroupId = _ref2[0], classGroup = _ref2[1]; processClassesRecursively(classGroup, classMap, classGroupId, theme); }); return classMap; } function processClassesRecursively(classGroup, classPartObject, classGroupId, theme) { classGroup.forEach(function(classDefinition) { if (typeof classDefinition === "string") { var classPartObjectToEdit = classDefinition === "" ? classPartObject : getPart(classPartObject, classDefinition); classPartObjectToEdit.classGroupId = classGroupId; return; } if (typeof classDefinition === "function") { if (isThemeGetter(classDefinition)) { processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme); return; } classPartObject.validators.push({ validator: classDefinition, classGroupId }); return; } Object.entries(classDefinition).forEach(function(_ref3) { var key = _ref3[0], classGroup2 = _ref3[1]; processClassesRecursively(classGroup2, getPart(classPartObject, key), classGroupId, theme); }); }); } function getPart(classPartObject, path) { var currentClassPartObject = classPartObject; path.split(CLASS_PART_SEPARATOR).forEach(function(pathPart) { if (!currentClassPartObject.nextPart.has(pathPart)) { currentClassPartObject.nextPart.set(pathPart, { nextPart: /* @__PURE__ */ new Map(), validators: [] }); } currentClassPartObject = currentClassPartObject.nextPart.get(pathPart); }); return currentClassPartObject; } function isThemeGetter(func) { return func.isThemeGetter; } function getPrefixedClassGroupEntries(classGroupEntries, prefix) { if (!prefix) { return classGroupEntries; } return classGroupEntries.map(function(_ref4) { var classGroupId = _ref4[0], classGroup = _ref4[1]; var prefixedClassGroup = classGroup.map(function(classDefinition) { if (typeof classDefinition === "string") { return prefix + classDefinition; } if (typeof classDefinition === "object") { return Object.fromEntries(Object.entries(classDefinition).map(function(_ref5) { var key = _ref5[0], value = _ref5[1]; return [prefix + key, value]; })); } return classDefinition; }); return [classGroupId, prefixedClassGroup]; }); } function createLruCache(maxCacheSize) { if (maxCacheSize < 1) { return { get: function get() { return void 0; }, set: function set() { } }; } var cacheSize = 0; var cache = /* @__PURE__ */ new Map(); var previousCache = /* @__PURE__ */ new Map(); function update(key, value) { cache.set(key, value); cacheSize++; if (cacheSize > maxCacheSize) { cacheSize = 0; previousCache = cache; cache = /* @__PURE__ */ new Map(); } } return { get: function get(key) { var value = cache.get(key); if (value !== void 0) { return value; } if ((value = previousCache.get(key)) !== void 0) { update(key, value); return value; } }, set: function set(key, value) { if (cache.has(key)) { cache.set(key, value); } else { update(key, value); } } }; } var IMPORTANT_MODIFIER = "!"; function createSplitModifiers(config) { var separator = config.separator || ":"; var isSeparatorSingleCharacter = separator.length === 1; var firstSeparatorCharacter = separator[0]; var separatorLength = separator.length; return function splitModifiers(className) { var modifiers = []; var bracketDepth = 0; var modifierStart = 0; var postfixModifierPosition; for (var index2 = 0; index2 < className.length; index2++) { var currentCharacter = className[index2]; if (bracketDepth === 0) { if (currentCharacter === firstSeparatorCharacter && (isSeparatorSingleCharacter || className.slice(index2, index2 + separatorLength) === separator)) { modifiers.push(className.slice(modifierStart, index2)); modifierStart = index2 + separatorLength; continue; } if (currentCharacter === "/") { postfixModifierPosition = index2; continue; } } if (currentCharacter === "[") { bracketDepth++; } else if (currentCharacter === "]") { bracketDepth--; } } var baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart); var hasImportantModifier = baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER); var baseClassName = hasImportantModifier ? baseClassNameWithImportantModifier.substring(1) : baseClassNameWithImportantModifier; var maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : void 0; return { modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition }; }; } function sortModifiers(modifiers) { if (modifiers.length <= 1) { return modifiers; } var sortedModifiers = []; var unsortedModifiers = []; modifiers.forEach(function(modifier) { var isArbitraryVariant = modifier[0] === "["; if (isArbitraryVariant) { sortedModifiers.push.apply(sortedModifiers, unsortedModifiers.sort().concat([modifier])); unsortedModifiers = []; } else { unsortedModifiers.push(modifier); } }); sortedModifiers.push.apply(sortedModifiers, unsortedModifiers.sort()); return sortedModifiers; } function createConfigUtils(config) { return { cache: createLruCache(config.cacheSize), splitModifiers: createSplitModifiers(config), ...createClassUtils(config) }; } var SPLIT_CLASSES_REGEX = /\s+/; function mergeClassList(classList, configUtils) { var splitModifiers = configUtils.splitModifiers, getClassGroupId = configUtils.getClassGroupId, getConflictingClassGroupIds = configUtils.getConflictingClassGroupIds; var classGroupsInConflict = /* @__PURE__ */ new Set(); return classList.trim().split(SPLIT_CLASSES_REGEX).map(function(originalClassName) { var _splitModifiers = splitModifiers(originalClassName), modifiers = _splitModifiers.modifiers, hasImportantModifier = _splitModifiers.hasImportantModifier, baseClassName = _splitModifiers.baseClassName, maybePostfixModifierPosition = _splitModifiers.maybePostfixModifierPosition; var classGroupId = getClassGroupId(maybePostfixModifierPosition ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName); var hasPostfixModifier = Boolean(maybePostfixModifierPosition); if (!classGroupId) { if (!maybePostfixModifierPosition) { return { isTailwindClass: false, originalClassName }; } classGroupId = getClassGroupId(baseClassName); if (!classGroupId) { return { isTailwindClass: false, originalClassName }; } hasPostfixModifier = false; } var variantModifier = sortModifiers(modifiers).join(":"); var modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier; return { isTailwindClass: true, modifierId, classGroupId, originalClassName, hasPostfixModifier }; }).reverse().filter(function(parsed) { if (!parsed.isTailwindClass) { return true; } var modifierId = parsed.modifierId, classGroupId = parsed.classGroupId, hasPostfixModifier = parsed.hasPostfixModifier; var classId = modifierId + classGroupId; if (classGroupsInConflict.has(classId)) { return false; } classGroupsInConflict.add(classId); getConflictingClassGroupIds(classGroupId, hasPostfixModifier).forEach(function(group) { return classGroupsInConflict.add(modifierId + group); }); return true; }).reverse().map(function(parsed) { return parsed.originalClassName; }).join(" "); } function createTailwindMerge() { for (var _len = arguments.length, createConfig = new Array(_len), _key = 0; _key < _len; _key++) { createConfig[_key] = arguments[_key]; } var configUtils; var cacheGet; var cacheSet; var functionToCall = initTailwindMerge; function initTailwindMerge(classList) { var firstCreateConfig = createConfig[0], restCreateConfig = createConfig.slice(1); var config = restCreateConfig.reduce(function(previousConfig, createConfigCurrent) { return createConfigCurrent(previousConfig); }, firstCreateConfig()); configUtils = createConfigUtils(config); cacheGet = configUtils.cache.get; cacheSet = configUtils.cache.set; functionToCall = tailwindMerge; return tailwindMerge(classList); } function tailwindMerge(classList) { var cachedResult = cacheGet(classList); if (cachedResult) { return cachedResult; } var result = mergeClassList(classList, configUtils); cacheSet(classList, result); return result; } return function callTailwindMerge() { return functionToCall(twJoin.apply(null, arguments)); }; } function fromTheme(key) { var themeGetter = function themeGetter2(theme) { return theme[key] || []; }; themeGetter.isThemeGetter = true; return themeGetter; } var arbitraryValueRegex = /^\[(?:([a-z-]+):)?(.+)\]$/i; var fractionRegex = /^\d+\/\d+$/; var stringLengths = /* @__PURE__ */ new Set(["px", "full", "screen"]); var tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/; var lengthUnitRegex = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|^0$/; var shadowRegex = /^-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/; function isLength(value) { return isNumber(value) || stringLengths.has(value) || fractionRegex.test(value) || isArbitraryLength(value); } function isArbitraryLength(value) { return getIsArbitraryValue(value, "length", isLengthOnly); } function isArbitrarySize(value) { return getIsArbitraryValue(value, "size", isNever); } function isArbitraryPosition(value) { return getIsArbitraryValue(value, "position", isNever); } function isArbitraryUrl(value) { return getIsArbitraryValue(value, "url", isUrl); } function isArbitraryNumber(value) { return getIsArbitraryValue(value, "number", isNumber); } function isNumber(value) { return !Number.isNaN(Number(value)); } function isPercent(value) { return value.endsWith("%") && isNumber(value.slice(0, -1)); } function isInteger(value) { return isIntegerOnly(value) || getIsArbitraryValue(value, "number", isIntegerOnly); } function isArbitraryValue(value) { return arbitraryValueRegex.test(value); } function isAny() { return true; } function isTshirtSize(value) { return tshirtUnitRegex.test(value); } function isArbitraryShadow(value) { return getIsArbitraryValue(value, "", isShadow); } function getIsArbitraryValue(value, label, testValue) { var result = arbitraryValueRegex.exec(value); if (result) { if (result[1]) { return result[1] === label; } return testValue(result[2]); } return false; } function isLengthOnly(value) { return lengthUnitRegex.test(value); } function isNever() { return false; } function isUrl(value) { return value.startsWith("url("); } function isIntegerOnly(value) { return Number.isInteger(Number(value)); } function isShadow(value) { return shadowRegex.test(value); } function getDefaultConfig() { var colors = fromTheme("colors"); var spacing = fromTheme("spacing"); var blur = fromTheme("blur"); var brightness = fromTh