263 lines
7.4 KiB
Plaintext
263 lines
7.4 KiB
Plaintext
"use client";
|
|
"use strict";
|
|
var __defProp = Object.defineProperty;
|
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
var __export = (target, all) => {
|
|
for (var name in all)
|
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
};
|
|
var __copyProps = (to, from, except, desc) => {
|
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
for (let key of __getOwnPropNames(from))
|
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
}
|
|
return to;
|
|
};
|
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
|
|
// src/overlays/index.ts
|
|
var overlays_exports = {};
|
|
__export(overlays_exports, {
|
|
ariaHideOutside: () => ariaHideOutside,
|
|
ariaShouldCloseOnInteractOutside: () => ariaShouldCloseOnInteractOutside,
|
|
getArrowPlacement: () => getArrowPlacement,
|
|
getShouldUseAxisPlacement: () => getShouldUseAxisPlacement,
|
|
getTransformOrigins: () => getTransformOrigins,
|
|
toOverlayPlacement: () => toOverlayPlacement,
|
|
toReactAriaPlacement: () => toReactAriaPlacement
|
|
});
|
|
module.exports = __toCommonJS(overlays_exports);
|
|
|
|
// src/overlays/utils.ts
|
|
var getTransformOrigins = (placement) => {
|
|
const origins = {
|
|
top: {
|
|
originY: 1
|
|
},
|
|
bottom: {
|
|
originY: 0
|
|
},
|
|
left: {
|
|
originX: 1
|
|
},
|
|
right: {
|
|
originX: 0
|
|
},
|
|
"top-start": {
|
|
originX: 0,
|
|
originY: 1
|
|
},
|
|
"top-end": {
|
|
originX: 1,
|
|
originY: 1
|
|
},
|
|
"bottom-start": {
|
|
originX: 0,
|
|
originY: 0
|
|
},
|
|
"bottom-end": {
|
|
originX: 1,
|
|
originY: 0
|
|
},
|
|
"right-start": {
|
|
originX: 0,
|
|
originY: 0
|
|
},
|
|
"right-end": {
|
|
originX: 0,
|
|
originY: 1
|
|
},
|
|
"left-start": {
|
|
originX: 1,
|
|
originY: 0
|
|
},
|
|
"left-end": {
|
|
originX: 1,
|
|
originY: 1
|
|
}
|
|
};
|
|
return (origins == null ? void 0 : origins[placement]) || {};
|
|
};
|
|
var toReactAriaPlacement = (placement) => {
|
|
const mapPositions = {
|
|
top: "top",
|
|
bottom: "bottom",
|
|
left: "left",
|
|
right: "right",
|
|
"top-start": "top start",
|
|
"top-end": "top end",
|
|
"bottom-start": "bottom start",
|
|
"bottom-end": "bottom end",
|
|
"left-start": "left top",
|
|
"left-end": "left bottom",
|
|
"right-start": "right top",
|
|
"right-end": "right bottom"
|
|
};
|
|
return mapPositions[placement];
|
|
};
|
|
var toOverlayPlacement = (placement) => {
|
|
const mapPositions = {
|
|
top: "top",
|
|
bottom: "bottom",
|
|
left: "left",
|
|
right: "right",
|
|
center: "top"
|
|
};
|
|
return mapPositions[placement];
|
|
};
|
|
var getShouldUseAxisPlacement = (axisPlacement, overlayPlacement) => {
|
|
if (overlayPlacement.includes("-")) {
|
|
const [position] = overlayPlacement.split("-");
|
|
if (position.includes(axisPlacement)) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
};
|
|
var getArrowPlacement = (dynamicPlacement, placement) => {
|
|
if (placement.includes("-")) {
|
|
const [, position] = placement.split("-");
|
|
return `${dynamicPlacement}-${position}`;
|
|
}
|
|
return dynamicPlacement;
|
|
};
|
|
|
|
// src/overlays/ariaHideOutside.ts
|
|
var refCountMap = /* @__PURE__ */ new WeakMap();
|
|
var observerStack = [];
|
|
function ariaHideOutside(targets, root = document.body) {
|
|
let visibleNodes = new Set(targets);
|
|
let hiddenNodes = /* @__PURE__ */ new Set();
|
|
let walk = (root2) => {
|
|
for (let element of root2.querySelectorAll(
|
|
"[data-live-announcer], [data-react-aria-top-layer]"
|
|
)) {
|
|
visibleNodes.add(element);
|
|
}
|
|
let acceptNode = (node) => {
|
|
if (visibleNodes.has(node) || node.parentElement && hiddenNodes.has(node.parentElement) && node.parentElement.getAttribute("role") !== "row") {
|
|
return NodeFilter.FILTER_REJECT;
|
|
}
|
|
for (let target of visibleNodes) {
|
|
if (node.contains(target)) {
|
|
return NodeFilter.FILTER_SKIP;
|
|
}
|
|
}
|
|
return NodeFilter.FILTER_ACCEPT;
|
|
};
|
|
let walker = document.createTreeWalker(root2, NodeFilter.SHOW_ELEMENT, { acceptNode });
|
|
let acceptRoot = acceptNode(root2);
|
|
if (acceptRoot === NodeFilter.FILTER_ACCEPT) {
|
|
hide(root2);
|
|
}
|
|
if (acceptRoot !== NodeFilter.FILTER_REJECT) {
|
|
let node = walker.nextNode();
|
|
while (node != null) {
|
|
hide(node);
|
|
node = walker.nextNode();
|
|
}
|
|
}
|
|
};
|
|
let hide = (node) => {
|
|
var _a;
|
|
let refCount = (_a = refCountMap.get(node)) != null ? _a : 0;
|
|
if (node.getAttribute("aria-hidden") === "true" && refCount === 0) {
|
|
return;
|
|
}
|
|
if (refCount === 0) {
|
|
node.setAttribute("aria-hidden", "true");
|
|
}
|
|
hiddenNodes.add(node);
|
|
refCountMap.set(node, refCount + 1);
|
|
};
|
|
if (observerStack.length) {
|
|
observerStack[observerStack.length - 1].disconnect();
|
|
}
|
|
walk(root);
|
|
let observer = new MutationObserver((changes) => {
|
|
for (let change of changes) {
|
|
if (change.type !== "childList" || change.addedNodes.length === 0) {
|
|
continue;
|
|
}
|
|
if (![...visibleNodes, ...hiddenNodes].some((node) => node.contains(change.target))) {
|
|
for (let node of change.removedNodes) {
|
|
if (node instanceof Element) {
|
|
visibleNodes.delete(node);
|
|
hiddenNodes.delete(node);
|
|
}
|
|
}
|
|
for (let node of change.addedNodes) {
|
|
if ((node instanceof HTMLElement || node instanceof SVGElement) && (node.dataset.liveAnnouncer === "true" || node.dataset.reactAriaTopLayer === "true")) {
|
|
visibleNodes.add(node);
|
|
} else if (node instanceof Element) {
|
|
walk(node);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
observer.observe(root, { childList: true, subtree: true });
|
|
let observerWrapper = {
|
|
observe() {
|
|
observer.observe(root, { childList: true, subtree: true });
|
|
},
|
|
disconnect() {
|
|
observer.disconnect();
|
|
}
|
|
};
|
|
observerStack.push(observerWrapper);
|
|
return () => {
|
|
observer.disconnect();
|
|
for (let node of hiddenNodes) {
|
|
let count = refCountMap.get(node);
|
|
if (count == null) {
|
|
continue;
|
|
}
|
|
if (count === 1) {
|
|
node.removeAttribute("aria-hidden");
|
|
refCountMap.delete(node);
|
|
} else {
|
|
refCountMap.set(node, count - 1);
|
|
}
|
|
}
|
|
if (observerWrapper === observerStack[observerStack.length - 1]) {
|
|
observerStack.pop();
|
|
if (observerStack.length) {
|
|
observerStack[observerStack.length - 1].observe();
|
|
}
|
|
} else {
|
|
observerStack.splice(observerStack.indexOf(observerWrapper), 1);
|
|
}
|
|
};
|
|
}
|
|
|
|
// src/overlays/ariaShouldCloseOnInteractOutside.ts
|
|
var ariaShouldCloseOnInteractOutside = (element, triggerRef, state) => {
|
|
const trigger = triggerRef == null ? void 0 : triggerRef.current;
|
|
if (!trigger || !trigger.contains(element)) {
|
|
const startElements = document.querySelectorAll("body > span[data-focus-scope-start]");
|
|
let focusScopeElements = [];
|
|
startElements.forEach((startElement) => {
|
|
focusScopeElements.push(startElement.nextElementSibling);
|
|
});
|
|
if (focusScopeElements.length === 1) {
|
|
state.close();
|
|
return false;
|
|
}
|
|
}
|
|
return !trigger || !trigger.contains(element);
|
|
};
|
|
// Annotate the CommonJS export names for ESM import in node:
|
|
0 && (module.exports = {
|
|
ariaHideOutside,
|
|
ariaShouldCloseOnInteractOutside,
|
|
getArrowPlacement,
|
|
getShouldUseAxisPlacement,
|
|
getTransformOrigins,
|
|
toOverlayPlacement,
|
|
toReactAriaPlacement
|
|
});
|