` instead.
tabIndex: void 0,
onPointerDownCapture(event) {
if (event.isPrimary) {
store.state.pointerDownItemRef.current = event.currentTarget;
}
event.preventDefault();
},
onMouseDown(event) {
event.preventDefault();
},
onClick(event) {
if (disabled2 || readOnly) {
return;
}
commitSelection(event.nativeEvent);
},
onMouseUp(event) {
const pointerStartedOnItem = store.state.pointerDownItemRef.current === event.currentTarget;
store.state.pointerDownItemRef.current = null;
if (disabled2 || readOnly || event.button !== 0 || pointerStartedOnItem || !highlighted) {
return;
}
commitSelection(event.nativeEvent);
}
};
const element = useRenderElement("div", componentProps, {
ref: [buttonRef, forwardedRef, listItem.ref, itemRef],
state,
props: [itemProps, defaultProps, elementProps, getButtonProps]
});
const contextValue = React81.useMemo(() => ({
selected,
textRef
}), [selected, textRef]);
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ComboboxItemContext.Provider, {
value: contextValue,
children: element
});
}
function ComboboxItemVirtualizedIndex(props) {
const {
componentProps,
forwardedRef
} = props;
const store = useComboboxRootContext();
const isItemEqualToValue = useStore(store, selectors2.isItemEqualToValue);
const {
flatFilteredItems
} = useComboboxDerivedItemsContext();
const indexFromFilter = findItemIndex(flatFilteredItems, componentProps.value ?? null, isItemEqualToValue);
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ComboboxItemInner, {
componentProps,
forwardedRef,
virtualized: true,
indexFromFilter
});
}
var ComboboxItem = /* @__PURE__ */ React81.memo(/* @__PURE__ */ React81.forwardRef(function ComboboxItem2(componentProps, forwardedRef) {
const store = useComboboxRootContext();
const virtualized = useStore(store, selectors2.virtualized);
if (virtualized && componentProps.index == null) {
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ComboboxItemVirtualizedIndex, {
componentProps,
forwardedRef
});
}
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ComboboxItemInner, {
componentProps,
forwardedRef,
virtualized,
indexFromFilter: void 0
});
}));
if (true) ComboboxItem.displayName = "ComboboxItem";
// node_modules/@base-ui/react/autocomplete/item/AutocompleteItem.mjs
var AutocompleteItem = ComboboxItem;
// node_modules/@base-ui/react/combobox/row/ComboboxRow.mjs
var React82 = __toESM(require_react(), 1);
var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1);
var ComboboxRow = /* @__PURE__ */ React82.forwardRef(function ComboboxRow2(componentProps, forwardedRef) {
const {
render,
className,
style,
...elementProps
} = componentProps;
const element = useRenderElement("div", componentProps, {
ref: forwardedRef,
props: [{
role: "row"
}, elementProps]
});
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ComboboxRowContext.Provider, {
value: true,
children: element
});
});
if (true) ComboboxRow.displayName = "ComboboxRow";
// node_modules/@base-ui/react/combobox/empty/ComboboxEmpty.mjs
var React83 = __toESM(require_react(), 1);
var ComboboxEmpty = /* @__PURE__ */ React83.forwardRef(function ComboboxEmpty2(componentProps, forwardedRef) {
const {
render,
className,
style,
children: childrenProp,
...elementProps
} = componentProps;
const {
filteredItems
} = useComboboxDerivedItemsContext();
const store = useComboboxRootContext();
const emptyRef = useInitialLiveRegionTextMutation();
const children = filteredItems.length === 0 ? childrenProp : null;
return useRenderElement("div", componentProps, {
ref: [forwardedRef, store.state.emptyRef, emptyRef],
props: [{
children,
role: "status",
"aria-live": "polite",
"aria-atomic": true
}, elementProps]
});
});
if (true) ComboboxEmpty.displayName = "ComboboxEmpty";
// node_modules/@base-ui/react/utils/listbox-separator/ListboxSeparator.mjs
var React84 = __toESM(require_react(), 1);
var ListboxSeparator = /* @__PURE__ */ React84.forwardRef(function ListboxSeparator2(componentProps, forwardedRef) {
const {
className,
render,
orientation = "horizontal",
style,
...elementProps
} = componentProps;
const state = {
orientation
};
return useRenderElement("div", componentProps, {
state,
ref: forwardedRef,
props: [{
role: "presentation"
}, elementProps]
});
});
if (true) ListboxSeparator.displayName = "ListboxSeparator";
// node_modules/@base-ui/react/autocomplete/separator/AutocompleteSeparator.mjs
var AutocompleteSeparator = ListboxSeparator;
// node_modules/@base-ui/react/combobox/root/utils/useFilteredItems.mjs
function useFilteredItems() {
const items = useComboboxDerivedItemsContext();
return items.filteredItems;
}
// node_modules/@base-ui/react/button/Button.mjs
var React85 = __toESM(require_react(), 1);
var Button = /* @__PURE__ */ React85.forwardRef(function Button2(componentProps, forwardedRef) {
const {
render,
className,
disabled: disabled2 = false,
focusableWhenDisabled = false,
nativeButton = true,
style,
...elementProps
} = componentProps;
const {
getButtonProps,
buttonRef
} = useButton({
disabled: disabled2,
focusableWhenDisabled,
native: nativeButton
});
const state = {
disabled: disabled2
};
return useRenderElement("button", componentProps, {
state,
ref: [forwardedRef, buttonRef],
props: [elementProps, getButtonProps]
});
});
if (true) Button.displayName = "Button";
// node_modules/@base-ui/react/field/item/FieldItemContext.mjs
var React86 = __toESM(require_react(), 1);
var FieldItemContext = /* @__PURE__ */ React86.createContext({
disabled: false
});
if (true) FieldItemContext.displayName = "FieldItemContext";
function useFieldItemContext() {
const context = React86.useContext(FieldItemContext);
return context;
}
// node_modules/@base-ui/react/field/root/useFieldValidation.mjs
var React87 = __toESM(require_react(), 1);
// node_modules/@base-ui/react/field/utils/getCombinedFieldValidityData.mjs
function getCombinedFieldValidityData(validityData, invalid) {
return {
...validityData,
state: {
...validityData.state,
valid: !invalid && validityData.state.valid
}
};
}
// node_modules/@base-ui/react/field/root/useFieldValidation.mjs
var validityKeys = Object.keys(DEFAULT_VALIDITY_STATE);
function isEligibleInput(input, formElement) {
if (input.matches(":disabled")) {
return false;
}
if (!formElement || input.form === formElement) {
return true;
}
return input.form === null && !input.hasAttribute("form");
}
function findRepresentativeInput(inputs, formElement) {
let fallback = null;
for (const input of inputs.keys()) {
if (!isEligibleInput(input, formElement)) {
continue;
}
if (!input.validity.valid) {
return input;
}
fallback ??= input;
}
return fallback;
}
function clearCustomValidity(element, inputs) {
for (const input of inputs.keys()) {
input.setCustomValidity("");
}
element?.setCustomValidity("");
}
function useFieldValidation(params) {
const {
elementRef,
formRef
} = useFormContext();
const {
setValidityData,
validate,
validityData,
validationDebounceTime,
invalid,
markedDirtyRef,
state,
shouldValidateOnChange,
registeredFieldIdRef
} = params;
const {
controlId,
getDescriptionProps
} = useLabelableContext();
const timeout = useTimeout();
const inputRef = React87.useRef(null);
const registeredInputs = useRefWithInit(() => /* @__PURE__ */ new Map()).current;
const validationCommitIdRef = React87.useRef(0);
const registerInput = React87.useCallback((element, registration) => {
registeredInputs.set(element, registration);
return () => {
registeredInputs.delete(element);
};
}, [registeredInputs]);
const getInputControl = useStableCallback(() => {
const element = findRepresentativeInput(registeredInputs, elementRef.current);
return element && registeredInputs.get(element)?.controlRef.current || null;
});
const commit = useStableCallback(async (value, revalidate = false) => {
validationCommitIdRef.current += 1;
const validationCommitId = validationCommitIdRef.current;
function updateRegisteredFieldValidity(nextValidityData2, externalInvalid = invalid) {
const fieldId = registeredFieldIdRef.current ?? controlId;
if (fieldId == null) {
return;
}
const currentFieldData = formRef.current.fields.get(fieldId);
if (!currentFieldData) {
return;
}
const validityDataWithFormErrors = getCombinedFieldValidityData(nextValidityData2, externalInvalid);
formRef.current.fields.set(fieldId, {
...currentFieldData,
validityData: validityDataWithFormErrors
});
}
function publishAllValid(input, externalInvalid) {
const nextValidityData2 = {
value,
state: {
...DEFAULT_VALIDITY_STATE,
valid: true
},
error: "",
errors: [],
initialValue: validityData.initialValue
};
clearCustomValidity(input, registeredInputs);
updateRegisteredFieldValidity(nextValidityData2, externalInvalid);
setValidityData(nextValidityData2);
}
const element = registeredInputs.size > 0 ? findRepresentativeInput(registeredInputs, elementRef.current) : inputRef.current;
if (revalidate) {
if (state.valid !== false || !element) {
return;
}
const currentNativeValidity = element.validity;
if (!currentNativeValidity.valueMissing) {
publishAllValid(element, false);
return;
}
for (const key of validityKeys) {
if (key !== "valid" && key !== "valueMissing" && key !== "customError" && currentNativeValidity[key]) {
return;
}
}
}
function getState(el) {
const computedState = validityKeys.reduce((acc, key) => {
acc[key] = el.validity[key];
return acc;
}, {});
let hasOnlyValueMissingError = false;
for (const key of validityKeys) {
if (key === "valid") {
continue;
}
if (key === "valueMissing" && computedState[key]) {
hasOnlyValueMissingError = true;
} else if (computedState[key]) {
return computedState;
}
}
if (hasOnlyValueMissingError && !markedDirtyRef.current) {
computedState.valid = true;
computedState.valueMissing = false;
}
return computedState;
}
timeout.clear();
let result = null;
let validationErrors = [];
const nextState = element ? getState(element) : {
...DEFAULT_VALIDITY_STATE,
valid: true
};
let defaultValidationMessage;
const isValidatingOnChange = shouldValidateOnChange();
if (element && element.validationMessage && !isValidatingOnChange) {
defaultValidationMessage = element.validationMessage;
validationErrors = [element.validationMessage];
} else {
const formValues = Array.from(formRef.current.fields.values()).reduce((acc, field) => {
if (field.name) {
acc[field.name] = field.getValue();
}
return acc;
}, {});
const resultOrPromise = validate(value, formValues);
if (typeof resultOrPromise === "object" && resultOrPromise !== null && "then" in resultOrPromise) {
result = await resultOrPromise;
if (validationCommitId !== validationCommitIdRef.current) {
return;
}
} else {
result = resultOrPromise;
}
if (result !== null) {
nextState.valid = false;
nextState.customError = true;
if (Array.isArray(result)) {
validationErrors = result;
element?.setCustomValidity(result.join("\n"));
} else if (result) {
validationErrors = [result];
element?.setCustomValidity(result);
}
} else if (isValidatingOnChange) {
clearCustomValidity(element, registeredInputs);
nextState.customError = false;
if (element && element.validationMessage) {
defaultValidationMessage = element.validationMessage;
validationErrors = [element.validationMessage];
} else if ((!element || element.validity.valid) && !nextState.valid) {
nextState.valid = true;
}
}
}
const nextValidityData = {
value,
state: nextState,
error: defaultValidationMessage ?? (Array.isArray(result) ? result[0] : result ?? ""),
errors: validationErrors,
initialValue: validityData.initialValue
};
updateRegisteredFieldValidity(nextValidityData);
setValidityData(nextValidityData);
});
const change = useStableCallback((value) => {
timeout.clear();
const validateOnChange = shouldValidateOnChange();
if (validateOnChange && value !== "" && validationDebounceTime) {
validationCommitIdRef.current += 1;
timeout.start(validationDebounceTime, () => {
commit(value);
});
} else {
commit(value, !validateOnChange);
}
});
const getValidationProps = React87.useCallback((disabled2, externalProps = {}) => mergeProps(getDescriptionProps(externalProps), state.valid === false && !state.disabled && !disabled2 ? {
"aria-invalid": true
} : EMPTY_OBJECT), [getDescriptionProps, state.disabled, state.valid]);
return React87.useMemo(() => ({
getValidationProps,
inputRef,
registeredInputs,
registerInput,
getInputControl,
commit,
change
}), [getValidationProps, registeredInputs, registerInput, getInputControl, commit, change]);
}
// node_modules/@base-ui/react/utils/useRegisteredLabelId.mjs
function useRegisteredLabelId(idProp, setLabelId) {
const id = useBaseUiId(idProp);
useIsoLayoutEffect(() => {
setLabelId(id);
return () => {
setLabelId((currentId) => currentId === id ? void 0 : currentId);
};
}, [id, setLabelId]);
return id;
}
// node_modules/@base-ui/react/internals/labelable-provider/useLabel.mjs
function useLabel(params = {}) {
const {
id: idProp,
fallbackControlId,
native = false,
setLabelId: setLabelIdProp,
focusControl: focusControlProp
} = params;
const {
controlId: contextControlId,
setLabelId: setContextLabelId
} = useLabelableContext();
const syncLabelId = useStableCallback((nextLabelId) => {
setContextLabelId(nextLabelId);
setLabelIdProp?.(nextLabelId);
});
const id = useRegisteredLabelId(idProp, syncLabelId);
const resolvedControlId = contextControlId ?? fallbackControlId;
function focusControl(event) {
if (focusControlProp) {
focusControlProp(event, resolvedControlId);
return;
}
if (!resolvedControlId) {
return;
}
const controlElement = ownerDocument(event.currentTarget).getElementById(resolvedControlId);
if (isHTMLElement(controlElement)) {
focusElementWithVisible(controlElement);
}
}
function handleInteraction(event) {
const target = getTarget(event.nativeEvent);
if (target?.closest("button,input,select,textarea")) {
return;
}
if (!event.defaultPrevented && event.detail > 1) {
event.preventDefault();
}
if (native) {
return;
}
focusControl(event);
}
return native ? {
id,
htmlFor: resolvedControlId ?? void 0,
onMouseDown: handleInteraction
} : {
id,
onClick: handleInteraction,
onPointerDown(event) {
event.preventDefault();
}
};
}
function focusElementWithVisible(element) {
element.focus({
// Available from Chrome 144+ (January 2026).
// Safari and Firefox already support it.
focusVisible: true
});
}
// node_modules/@base-ui/react/utils/usePopupViewport.mjs
var React91 = __toESM(require_react(), 1);
var ReactDOM7 = __toESM(require_react_dom(), 1);
// node_modules/@base-ui/utils/usePreviousValue.mjs
var React88 = __toESM(require_react(), 1);
function usePreviousValue(value) {
const [state, setState] = React88.useState({
current: value,
previous: null
});
if (!Object.is(value, state.current)) {
setState({
current: value,
previous: state.current
});
}
return state.previous;
}
// node_modules/@base-ui/react/utils/usePopupAutoResize.mjs
var React89 = __toESM(require_react(), 1);
// node_modules/@base-ui/react/utils/getCssDimensions.mjs
function getCssDimensions2(element) {
const css = getComputedStyle2(element);
let width = parseFloat(css.width) || 0;
let height = parseFloat(css.height) || 0;
const hasOffset = isHTMLElement(element);
const offsetWidth = hasOffset ? element.offsetWidth : width;
const offsetHeight = hasOffset ? element.offsetHeight : height;
const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;
if (shouldFallback) {
width = offsetWidth;
height = offsetHeight;
}
return {
width,
height
};
}
// node_modules/@base-ui/react/utils/usePopupAutoResize.mjs
function usePopupAutoResize(parameters) {
const {
popupElement,
positionerElement,
content,
mounted,
onMeasureLayout: onMeasureLayoutParam,
onMeasureLayoutComplete: onMeasureLayoutCompleteParam,
side,
direction
} = parameters;
const runOnceAnimationsFinish = useAnimationsFinished(popupElement, true);
const animationFrame = useAnimationFrame();
const committedDimensionsRef = React89.useRef(null);
const isInitialRenderRef = React89.useRef(true);
const restoreAnchoringStylesRef = React89.useRef(NOOP);
const onMeasureLayout = useStableCallback(onMeasureLayoutParam);
const onMeasureLayoutComplete = useStableCallback(onMeasureLayoutCompleteParam);
const anchoringStyles = React89.useMemo(() => getPopupAnchoringStyles(side, direction), [side, direction]);
useIsoLayoutEffect(() => {
if (!mounted) {
restoreAnchoringStylesRef.current = NOOP;
isInitialRenderRef.current = true;
committedDimensionsRef.current = null;
return void 0;
}
if (!popupElement || !positionerElement) {
return void 0;
}
restoreAnchoringStylesRef.current = applyElementStyles(popupElement, anchoringStyles);
setPopupCssSize(popupElement, "auto");
const restorePopupPosition = overrideElementStyle(popupElement, "position", "static");
const restorePopupTransform = overrideElementStyle(popupElement, "transform", "none");
const restorePopupScale = overrideElementStyle(popupElement, "scale", "1");
const restorePositionerAvailableSize = applyElementStyles(positionerElement, {
"--available-width": "max-content",
"--available-height": "max-content"
});
function restoreMeasurementOverrides() {
restorePopupPosition();
restorePopupTransform();
restorePositionerAvailableSize();
}
function restoreMeasurementOverridesIncludingScale() {
restoreMeasurementOverrides();
restorePopupScale();
}
onMeasureLayout?.();
if (isInitialRenderRef.current || committedDimensionsRef.current === null) {
setPositionerCssSize(positionerElement, "max-content");
const dimensions = getCssDimensions2(popupElement);
committedDimensionsRef.current = dimensions;
setPositionerCssSize(positionerElement, dimensions);
restoreMeasurementOverridesIncludingScale();
onMeasureLayoutComplete?.(null, dimensions);
isInitialRenderRef.current = false;
return () => {
restoreAnchoringStylesRef.current();
restoreAnchoringStylesRef.current = NOOP;
};
}
setPositionerCssSize(positionerElement, "max-content");
const previousDimensions = committedDimensionsRef.current;
const newDimensions = getCssDimensions2(popupElement);
committedDimensionsRef.current = newDimensions;
setPopupCssSize(popupElement, previousDimensions);
restoreMeasurementOverridesIncludingScale();
onMeasureLayoutComplete?.(previousDimensions, newDimensions);
setPositionerCssSize(positionerElement, newDimensions);
const abortController = new AbortController();
animationFrame.request(() => {
setPopupCssSize(popupElement, newDimensions);
runOnceAnimationsFinish(() => {
popupElement.style.setProperty("--popup-width", "auto");
popupElement.style.setProperty("--popup-height", "auto");
}, abortController.signal);
});
return () => {
abortController.abort();
animationFrame.cancel();
restoreAnchoringStylesRef.current();
restoreAnchoringStylesRef.current = NOOP;
};
}, [content, popupElement, positionerElement, runOnceAnimationsFinish, animationFrame, mounted, onMeasureLayout, onMeasureLayoutComplete, anchoringStyles]);
}
function getPopupAnchoringStyles(side, direction) {
const isPhysicalTop = side === "top";
const isPhysicalLeft = side === "left" || side === (direction === "rtl" ? "inline-end" : "inline-start");
if (!isPhysicalTop && !isPhysicalLeft) {
return EMPTY_OBJECT;
}
return {
position: "absolute",
[isPhysicalTop ? "bottom" : "top"]: "0",
[isPhysicalLeft ? "right" : "left"]: "0"
};
}
function overrideElementStyle(element, property, value) {
const originalValue = element.style.getPropertyValue(property);
element.style.setProperty(property, value);
return () => {
element.style.setProperty(property, originalValue);
};
}
function applyElementStyles(element, styles) {
const restorers = [];
for (const [key, value] of Object.entries(styles)) {
restorers.push(overrideElementStyle(element, key, value));
}
return restorers.length ? () => {
restorers.forEach((restore) => restore());
} : NOOP;
}
function setPopupCssSize(popupElement, size4) {
const width = size4 === "auto" ? "auto" : `${size4.width}px`;
const height = size4 === "auto" ? "auto" : `${size4.height}px`;
popupElement.style.setProperty("--popup-width", width);
popupElement.style.setProperty("--popup-height", height);
}
function setPositionerCssSize(positionerElement, size4) {
const width = size4 === "max-content" ? "max-content" : `${size4.width}px`;
const height = size4 === "max-content" ? "max-content" : `${size4.height}px`;
positionerElement.style.setProperty("--positioner-width", width);
positionerElement.style.setProperty("--positioner-height", height);
}
// node_modules/@base-ui/react/direction-provider/DirectionProvider.mjs
var React90 = __toESM(require_react(), 1);
var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1);
var DirectionProvider = function DirectionProvider2(props) {
const {
direction = "ltr"
} = props;
const contextValue = React90.useMemo(() => ({
direction
}), [direction]);
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(DirectionContext.Provider, {
value: contextValue,
children: props.children
});
};
if (true) DirectionProvider.displayName = "DirectionProvider";
// node_modules/@base-ui/react/utils/adaptiveOriginMiddleware.mjs
var adaptiveOrigin = {
name: "adaptiveOrigin",
async fn(state) {
const {
x: rawX,
y: rawY,
rects: {
floating: floatRect
},
elements: {
floating
},
platform: platform3,
strategy,
placement
} = state;
const win = getWindow(floating);
const styles = win.getComputedStyle(floating);
const hasTransition = styles.transitionDuration !== "0s" && styles.transitionDuration !== "";
if (!hasTransition) {
return {
x: rawX,
y: rawY,
data: DEFAULT_SIDES
};
}
const offsetParent = await platform3.getOffsetParent?.(floating);
let offsetDimensions = {
width: 0,
height: 0
};
if (strategy === "fixed" && win?.visualViewport) {
offsetDimensions = {
width: win.visualViewport.width,
height: win.visualViewport.height
};
} else if (offsetParent === win) {
const doc = ownerDocument(floating);
offsetDimensions = {
width: doc.documentElement.clientWidth,
height: doc.documentElement.clientHeight
};
} else if (await platform3.isElement?.(offsetParent)) {
offsetDimensions = await platform3.getDimensions(offsetParent);
}
const currentSide = getSide(placement);
let x = rawX;
let y = rawY;
if (currentSide === "left") {
x = offsetDimensions.width - (rawX + floatRect.width);
}
if (currentSide === "top") {
y = offsetDimensions.height - (rawY + floatRect.height);
}
const sideX = currentSide === "left" ? "right" : DEFAULT_SIDES.sideX;
const sideY = currentSide === "top" ? "bottom" : DEFAULT_SIDES.sideY;
return {
x,
y,
data: {
sideX,
sideY
}
};
}
};
// node_modules/@base-ui/react/utils/usePopupViewport.mjs
var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1);
var popupViewportStateMapping = {
activationDirection: (value) => value ? {
"data-activation-direction": value
} : null
};
function usePopupViewport(parameters) {
const {
store,
side,
children
} = parameters;
const direction = useDirection();
const activeTrigger = store.useState("activeTriggerElement");
const activeTriggerId = store.useState("activeTriggerId");
const open = store.useState("open");
const payload = store.useState("payload");
const mounted = store.useState("mounted");
const popupElement = store.useState("popupElement");
const positionerElement = store.useState("positionerElement");
const previousActiveTrigger = usePreviousValue(open ? activeTrigger : null);
const currentContentKey = usePopupContentKey(activeTriggerId, payload);
const capturedNodeRef = React91.useRef(null);
const [previousContentNode, setPreviousContentNode] = React91.useState(null);
const [newTriggerOffset, setNewTriggerOffset] = React91.useState(null);
const currentContainerRef = React91.useRef(null);
const previousContainerRef = React91.useRef(null);
const onAnimationsFinished = useAnimationsFinished(currentContainerRef, true);
const cleanupFrame = useAnimationFrame();
const cleanupControllerRef = React91.useRef(null);
const [previousContentDimensions, setPreviousContentDimensions] = React91.useState(null);
const [showStartingStyleAttribute, setShowStartingStyleAttribute] = React91.useState(false);
useIsoLayoutEffect(() => {
store.set("adaptiveOrigin", adaptiveOrigin);
return () => {
store.set("adaptiveOrigin", void 0);
};
}, [store]);
const handleMeasureLayout = useStableCallback(() => {
currentContainerRef.current?.style.setProperty("animation", "none");
currentContainerRef.current?.style.setProperty("transition", "none");
previousContainerRef.current?.style.setProperty("display", "none");
});
const handleMeasureLayoutComplete = useStableCallback((previousDimensions) => {
currentContainerRef.current?.style.removeProperty("animation");
currentContainerRef.current?.style.removeProperty("transition");
previousContainerRef.current?.style.removeProperty("display");
if (previousDimensions) {
setPreviousContentDimensions(previousDimensions);
}
});
const armViewportCleanup = useStableCallback(() => {
cleanupControllerRef.current?.abort();
const controller = new AbortController();
cleanupControllerRef.current = controller;
onAnimationsFinished(() => {
setPreviousContentNode(null);
setPreviousContentDimensions(null);
capturedNodeRef.current = null;
}, controller.signal);
});
const lastHandledTriggerRef = React91.useRef(null);
useIsoLayoutEffect(() => {
if (!open || !mounted) {
lastHandledTriggerRef.current = null;
}
}, [open, mounted]);
useIsoLayoutEffect(() => {
if (activeTrigger && previousActiveTrigger && activeTrigger !== previousActiveTrigger && lastHandledTriggerRef.current !== activeTrigger && capturedNodeRef.current) {
setPreviousContentNode(capturedNodeRef.current);
setShowStartingStyleAttribute(true);
const offset4 = calculateRelativePosition(previousActiveTrigger, activeTrigger);
setNewTriggerOffset(offset4);
lastHandledTriggerRef.current = activeTrigger;
}
}, [activeTrigger, previousActiveTrigger]);
useIsoLayoutEffect(() => {
if (previousContentNode == null) {
return;
}
cleanupControllerRef.current?.abort();
setShowStartingStyleAttribute(true);
cleanupFrame.request(() => {
ReactDOM7.flushSync(() => {
setShowStartingStyleAttribute(false);
});
armViewportCleanup();
});
}, [currentContentKey, previousContentNode, armViewportCleanup, cleanupFrame]);
useIsoLayoutEffect(() => {
const source = currentContainerRef.current;
if (!source) {
return;
}
const wrapper = ownerDocument(source).createElement("div");
for (const child of Array.from(source.childNodes)) {
wrapper.appendChild(child.cloneNode(true));
}
capturedNodeRef.current = wrapper;
});
const isTransitioning = previousContentNode != null;
let childrenToRender;
if (!isTransitioning) {
childrenToRender = /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", {
"data-current": true,
ref: currentContainerRef,
children
}, currentContentKey);
} else {
childrenToRender = /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(React91.Fragment, {
children: [/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", {
"data-previous": true,
inert: inertValue(true),
ref: previousContainerRef,
style: {
...previousContentDimensions ? {
"--popup-width": `${previousContentDimensions.width}px`,
"--popup-height": `${previousContentDimensions.height}px`
} : null,
position: "absolute"
},
"data-ending-style": showStartingStyleAttribute ? void 0 : ""
}, "previous"), /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", {
"data-current": true,
ref: currentContainerRef,
"data-starting-style": showStartingStyleAttribute ? "" : void 0,
children
}, currentContentKey)]
});
}
useIsoLayoutEffect(() => {
const container = previousContainerRef.current;
if (!container || !previousContentNode) {
return;
}
container.replaceChildren(...Array.from(previousContentNode.childNodes));
}, [previousContentNode]);
usePopupAutoResize({
popupElement,
positionerElement,
mounted,
content: payload,
onMeasureLayout: handleMeasureLayout,
onMeasureLayoutComplete: handleMeasureLayoutComplete,
side,
direction
});
const state = {
activationDirection: getActivationDirection(newTriggerOffset),
transitioning: isTransitioning
};
return {
children: childrenToRender,
state
};
}
function getActivationDirection(offset4) {
if (!offset4) {
return void 0;
}
return `${getValueWithTolerance(offset4.horizontal, 5, "right", "left")} ${getValueWithTolerance(offset4.vertical, 5, "down", "up")}`;
}
function getValueWithTolerance(value, tolerance, positiveLabel, negativeLabel) {
if (value > tolerance) {
return positiveLabel;
}
if (value < -tolerance) {
return negativeLabel;
}
return "";
}
function calculateRelativePosition(from, to) {
const fromRect = from.getBoundingClientRect();
const toRect = to.getBoundingClientRect();
const fromCenter = {
x: fromRect.left + fromRect.width / 2,
y: fromRect.top + fromRect.height / 2
};
const toCenter = {
x: toRect.left + toRect.width / 2,
y: toRect.top + toRect.height / 2
};
return {
horizontal: toCenter.x - fromCenter.x,
vertical: toCenter.y - fromCenter.y
};
}
function usePopupContentKey(activeTriggerId, payload) {
const [contentKey, setContentKey] = React91.useState(0);
const previousActiveTriggerIdRef = React91.useRef(activeTriggerId);
const previousPayloadRef = React91.useRef(payload);
const pendingPayloadUpdateRef = React91.useRef(false);
useIsoLayoutEffect(() => {
const previousActiveTriggerId = previousActiveTriggerIdRef.current;
const previousPayload = previousPayloadRef.current;
const triggerIdChanged = activeTriggerId !== previousActiveTriggerId;
const payloadChanged = payload !== previousPayload;
if (triggerIdChanged) {
setContentKey((value) => value + 1);
pendingPayloadUpdateRef.current = !payloadChanged;
} else if (pendingPayloadUpdateRef.current && payloadChanged) {
setContentKey((value) => value + 1);
pendingPayloadUpdateRef.current = false;
}
previousActiveTriggerIdRef.current = activeTriggerId;
previousPayloadRef.current = payload;
}, [activeTriggerId, payload]);
return `${activeTriggerId ?? "current"}-${contentKey}`;
}
// node_modules/@base-ui/react/field/index.parts.mjs
var index_parts_exports2 = {};
__export(index_parts_exports2, {
Control: () => FieldControl,
Description: () => FieldDescription,
Error: () => FieldError,
Item: () => FieldItem,
Label: () => FieldLabel,
Root: () => FieldRoot,
Validity: () => FieldValidity
});
// node_modules/@base-ui/react/field/root/FieldRoot.mjs
var React95 = __toESM(require_react(), 1);
// node_modules/@base-ui/react/fieldset/root/FieldsetRootContext.mjs
var React92 = __toESM(require_react(), 1);
var FieldsetRootContext = /* @__PURE__ */ React92.createContext(void 0);
if (true) FieldsetRootContext.displayName = "FieldsetRootContext";
function useFieldsetRootContext(optional = false) {
const context = React92.useContext(FieldsetRootContext);
if (!context && !optional) {
throw new Error(true ? "Base UI: FieldsetRootContext is missing. Fieldset parts must be placed within
." : formatErrorMessage_default(86));
}
return context;
}
// node_modules/@base-ui/react/internals/labelable-provider/LabelableProvider.mjs
var React93 = __toESM(require_react(), 1);
var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1);
var LabelableProvider = function LabelableProvider2(props) {
const defaultId = useBaseUiId();
const initialControlId = props.controlId === void 0 ? defaultId : props.controlId;
const [controlId, setControlIdState] = React93.useState(initialControlId);
const [labelId, setLabelId] = React93.useState(props.labelId);
const [messageIds, setMessageIds] = React93.useState([]);
const registrationsRef = useRefWithInit(() => /* @__PURE__ */ new Map());
const {
messageIds: parentMessageIds
} = useLabelableContext();
const registerControlId = useStableCallback((source, nextId) => {
const registrations = registrationsRef.current;
if (nextId === void 0) {
registrations.delete(source);
return;
}
registrations.set(source, nextId);
setControlIdState((prev) => {
if (registrations.size === 0) {
return void 0;
}
let nextControlId;
for (const id of registrations.values()) {
if (prev !== void 0 && id === prev) {
return prev;
}
if (nextControlId === void 0) {
nextControlId = id;
}
}
return nextControlId;
});
});
const getDescriptionProps = React93.useCallback((externalProps) => {
const ids = externalProps["aria-describedby"] ? externalProps["aria-describedby"].split(" ") : [];
ids.push(...parentMessageIds, ...messageIds);
return {
...externalProps,
"aria-describedby": Array.from(new Set(ids)).join(" ") || void 0
};
}, [parentMessageIds, messageIds]);
const contextValue = React93.useMemo(() => ({
controlId,
registerControlId,
labelId,
setLabelId,
messageIds,
setMessageIds,
getDescriptionProps
}), [controlId, registerControlId, labelId, setLabelId, messageIds, setMessageIds, getDescriptionProps]);
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(LabelableContext.Provider, {
value: contextValue,
children: props.children
});
};
if (true) LabelableProvider.displayName = "LabelableProvider";
// node_modules/@base-ui/react/internals/field-register-control/useFieldControlRegistration.mjs
var React94 = __toESM(require_react(), 1);
function useFieldControlRegistration(params) {
const {
commit,
invalid,
markedDirtyRef,
name,
setRegisteredFieldName,
registeredFieldIdRef,
setValidityData,
validityData
} = params;
const {
formRef
} = useFormContext();
const activeFieldControlSourceRef = React94.useRef(null);
const registrationRef = React94.useRef(null);
const initialValueCapturedRef = React94.useRef(false);
const getValueForForm = useStableCallback(() => {
const registration = registrationRef.current;
if (!registration) {
return void 0;
}
if (registration.getValue) {
return registration.getValue();
}
return registration.value;
});
function getRegistrationValue(registration) {
return registration.value === void 0 ? getValueForForm() : registration.value;
}
const validate = useStableCallback(() => {
const registration = registrationRef.current;
markedDirtyRef.current = true;
if (!registration) {
commit(validityData.value);
return;
}
commit(getRegistrationValue(registration));
});
function refreshRegistration() {
const registration = registrationRef.current;
if (!registration || !registration.id) {
return;
}
formRef.current.fields.set(registration.id, {
getValue: getValueForForm,
name: name ?? registration.name,
controlRef: registration.controlRef,
validityData: getCombinedFieldValidityData(validityData, invalid),
validate
});
}
function deleteRegistration(id = registrationRef.current?.id) {
if (id) {
formRef.current.fields.delete(id);
}
}
function captureInitialValue(registration) {
if (initialValueCapturedRef.current) {
return;
}
initialValueCapturedRef.current = true;
const initialValue = getRegistrationValue(registration);
setValidityData((prev) => prev.initialValue === initialValue ? prev : {
...prev,
initialValue
});
}
useIsoLayoutEffect(() => {
const registration = registrationRef.current;
if (!registration || !registration.id) {
return;
}
setRegisteredFieldName(name ? void 0 : registration.name);
formRef.current.fields.set(registration.id, {
getValue: getValueForForm,
name: name ?? registration.name,
controlRef: registration.controlRef,
validityData: getCombinedFieldValidityData(validityData, invalid),
validate
});
}, [formRef, getValueForForm, invalid, name, setRegisteredFieldName, validate, validityData]);
useIsoLayoutEffect(() => {
const fields = formRef.current.fields;
return () => {
const id = registrationRef.current?.id;
if (id) {
fields.delete(id);
}
};
}, [formRef]);
const register2 = useStableCallback((source, registration) => {
if (!registration) {
if (activeFieldControlSourceRef.current === source) {
activeFieldControlSourceRef.current = null;
deleteRegistration();
registrationRef.current = null;
setRegisteredFieldName(void 0);
registeredFieldIdRef.current = void 0;
}
return;
}
const previousId = registrationRef.current?.id;
activeFieldControlSourceRef.current = source;
registrationRef.current = registration;
if (!name) {
setRegisteredFieldName(registration.name);
}
registeredFieldIdRef.current = registration.id;
if (previousId && previousId !== registration.id) {
deleteRegistration(previousId);
}
captureInitialValue(registration);
refreshRegistration();
});
return [validate, register2];
}
// node_modules/@base-ui/react/field/root/FieldRoot.mjs
var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1);
var FieldRootInner = /* @__PURE__ */ React95.forwardRef(function FieldRootInner2(componentProps, forwardedRef) {
const {
errors,
validationMode: formValidationMode,
submitAttemptedRef
} = useFormContext();
const {
render,
className,
validate: validateProp,
validationDebounceTime = 0,
validationMode = formValidationMode,
name,
disabled: disabledProp = false,
invalid: invalidProp,
dirty: dirtyProp,
touched: touchedProp,
actionsRef,
style,
...elementProps
} = componentProps;
const disabledFieldset = useFieldsetRootContext(true)?.disabled;
const validate = useStableCallback(validateProp || (() => null));
const disabled2 = disabledFieldset || disabledProp;
const [touchedState, setTouchedUnwrapped] = React95.useState(false);
const [dirtyState, setDirtyUnwrapped] = React95.useState(false);
const [filled, setFilled] = React95.useState(false);
const [focused, setFocused] = React95.useState(false);
const dirty = dirtyProp ?? dirtyState;
const touched = touchedProp ?? touchedState;
const markedDirtyRef = React95.useRef(dirty);
const registeredFieldIdRef = React95.useRef(void 0);
const [registeredFieldName, setRegisteredFieldName] = React95.useState();
const effectiveName = name ?? registeredFieldName;
useIsoLayoutEffect(() => {
if (dirtyProp !== void 0) {
markedDirtyRef.current = dirtyProp;
}
}, [dirtyProp]);
const setDirty = useStableCallback((value) => {
if (dirtyProp !== void 0) {
return;
}
if (value) {
markedDirtyRef.current = true;
}
setDirtyUnwrapped(value);
});
const setTouched = useStableCallback((value) => {
if (touchedProp !== void 0) {
return;
}
setTouchedUnwrapped(value);
});
const shouldValidateOnChange = useStableCallback(() => validationMode === "onChange" || validationMode === "onSubmit" && submitAttemptedRef.current);
const formError = effectiveName && Object.hasOwn(errors, effectiveName) ? errors[effectiveName] : null;
const hasFormError = !!(Array.isArray(formError) ? formError.length : formError);
const invalid = invalidProp === true || hasFormError;
const [validityData, setValidityData] = React95.useState({
state: DEFAULT_VALIDITY_STATE,
error: "",
errors: [],
value: null,
initialValue: null
});
const valid = !invalid && (disabled2 ? null : validityData.state.valid);
const state = React95.useMemo(() => ({
disabled: disabled2,
touched,
dirty,
valid,
filled,
focused
}), [disabled2, touched, dirty, valid, filled, focused]);
const validation = useFieldValidation({
setValidityData,
validate,
validityData,
validationDebounceTime,
invalid,
markedDirtyRef,
state,
shouldValidateOnChange,
registeredFieldIdRef
});
const [validateFieldControl, registerFieldControl] = useFieldControlRegistration({
commit: validation.commit,
invalid,
markedDirtyRef,
name,
setRegisteredFieldName,
registeredFieldIdRef,
setValidityData,
validityData
});
React95.useImperativeHandle(actionsRef, () => ({
validate: validateFieldControl
}), [validateFieldControl]);
const contextValue = React95.useMemo(() => ({
invalid,
name: effectiveName,
validityData,
setValidityData,
disabled: disabled2,
setTouched,
setDirty,
setFilled,
setFocused,
validationMode,
shouldValidateOnChange,
state,
registerFieldControl,
validation
}), [invalid, effectiveName, validityData, disabled2, setTouched, setDirty, setFilled, setFocused, validationMode, shouldValidateOnChange, state, registerFieldControl, validation]);
const element = useRenderElement("div", componentProps, {
ref: forwardedRef,
state,
props: elementProps,
stateAttributesMapping: fieldValidityMapping
});
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(FieldRootContext.Provider, {
value: contextValue,
children: element
});
});
if (true) FieldRootInner.displayName = "FieldRootInner";
var FieldRoot = /* @__PURE__ */ React95.forwardRef(function FieldRoot2(componentProps, forwardedRef) {
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(LabelableProvider, {
children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(FieldRootInner, {
...componentProps,
ref: forwardedRef
})
});
});
if (true) FieldRoot.displayName = "FieldRoot";
// node_modules/@base-ui/react/field/label/FieldLabel.mjs
var React96 = __toESM(require_react(), 1);
var FieldLabel = /* @__PURE__ */ React96.forwardRef(function FieldLabel2(componentProps, forwardedRef) {
const {
render,
className,
style,
id: idProp,
nativeLabel = true,
...elementProps
} = componentProps;
const fieldRootContext = useFieldRootContext(false);
const fieldItemContext = useFieldItemContext();
const {
labelId
} = useLabelableContext();
const state = {
...fieldRootContext.state,
disabled: fieldRootContext.disabled || fieldItemContext.disabled
};
const labelRef = React96.useRef(null);
const labelProps = useLabel({
id: labelId ?? idProp,
native: nativeLabel
});
if (true) {
React96.useEffect(() => {
if (!labelRef.current) {
return;
}
const isLabelTag = labelRef.current.tagName === "LABEL";
if (nativeLabel) {
if (!isLabelTag) {
const ownerStackMessage = SafeReact.captureOwnerStack?.() || "";
const message = " expected a