FreeLLMAPI / client /node_modules /.vite /deps /@base-ui_react_switch.js
Nryn215's picture
Upload folder using huggingface_hub
077865a verified
Raw
History Blame Contribute Delete
10.3 kB
import { i as __toESM, r as __exportAll, t as require_react } from "./react-DMmEJb6B.js";
import { t as require_jsx_runtime } from "./react_jsx-runtime.js";
import { C as getWindow, l as mergeProps, r as EMPTY_OBJECT, s as useMergedRefs, t as useRenderElement, u as useIsoLayoutEffect } from "./useRenderElement-3Cwvu1gO.js";
import { t as useButton } from "./useButton-CBy-cFDk.js";
import { a as fieldValidityMapping, i as useFieldRootContext, n as useLabelableId, r as useLabelableContext, t as useRegisterFieldControl } from "./useRegisterFieldControl-CPlvTQh-.js";
import { t as useFormContext } from "./FormContext-D8skpAva.js";
import { _ as useBaseUiId, l as none, t as createChangeEventDetails } from "./createBaseUIEventDetails-CJxlTiBH.js";
import { t as useControlled } from "./useControlled-B7gU8wdF.js";
import { n as visuallyHidden, r as visuallyHiddenInput, t as useValueChanged } from "./useValueChanged-C6oHa1CC.js";
//#region ../node_modules/@base-ui/react/esm/internals/labelable-provider/useAriaLabelledBy.js
var import_react = /* @__PURE__ */ __toESM(require_react(), 1);
/**
* @internal
*/
function useAriaLabelledBy(explicitAriaLabelledBy, labelId, labelSourceRef, enableFallback = true, labelSourceId) {
const [fallbackAriaLabelledBy, setFallbackAriaLabelledBy] = import_react.useState();
const generatedLabelId = useBaseUiId(labelSourceId ? `${labelSourceId}-label` : void 0);
const ariaLabelledBy = explicitAriaLabelledBy ?? labelId ?? fallbackAriaLabelledBy;
useIsoLayoutEffect(() => {
const nextAriaLabelledBy = explicitAriaLabelledBy || labelId || !enableFallback ? void 0 : getAriaLabelledBy(labelSourceRef.current, generatedLabelId);
if (fallbackAriaLabelledBy !== nextAriaLabelledBy) setFallbackAriaLabelledBy(nextAriaLabelledBy);
});
return ariaLabelledBy;
}
function getAriaLabelledBy(labelSource, generatedLabelId) {
const label = findAssociatedLabel(labelSource);
if (!label) return;
if (!label.id && generatedLabelId) label.id = generatedLabelId;
return label.id || void 0;
}
function findAssociatedLabel(labelSource) {
if (!labelSource) return;
const parent = labelSource.parentElement;
if (parent && parent.tagName === "LABEL") return parent;
const controlId = labelSource.id;
if (controlId) {
const nextSibling = labelSource.nextElementSibling;
if (nextSibling && nextSibling.htmlFor === controlId) return nextSibling;
}
const labels = labelSource.labels;
return labels && labels[0];
}
//#endregion
//#region ../node_modules/@base-ui/react/esm/switch/root/SwitchRootContext.js
var SwitchRootContext = /* @__PURE__ */ import_react.createContext(void 0);
SwitchRootContext.displayName = "SwitchRootContext";
function useSwitchRootContext() {
const context = import_react.useContext(SwitchRootContext);
if (context === void 0) throw new Error("Base UI: SwitchRootContext is missing. Switch parts must be placed within <Switch.Root>.");
return context;
}
//#endregion
//#region ../node_modules/@base-ui/react/esm/switch/root/SwitchRootDataAttributes.js
var SwitchRootDataAttributes = /* @__PURE__ */ function(SwitchRootDataAttributes) {
/**
* Present when the switch is checked.
*/
SwitchRootDataAttributes["checked"] = "data-checked";
/**
* Present when the switch is not checked.
*/
SwitchRootDataAttributes["unchecked"] = "data-unchecked";
/**
* Present when the switch is disabled.
*/
SwitchRootDataAttributes["disabled"] = "data-disabled";
/**
* Present when the switch is readonly.
*/
SwitchRootDataAttributes["readonly"] = "data-readonly";
/**
* Present when the switch is required.
*/
SwitchRootDataAttributes["required"] = "data-required";
/**
* Present when the switch is in a valid state (when wrapped in Field.Root).
*/
SwitchRootDataAttributes["valid"] = "data-valid";
/**
* Present when the switch is in an invalid state (when wrapped in Field.Root).
*/
SwitchRootDataAttributes["invalid"] = "data-invalid";
/**
* Present when the switch has been touched (when wrapped in Field.Root).
*/
SwitchRootDataAttributes["touched"] = "data-touched";
/**
* Present when the switch's value has changed (when wrapped in Field.Root).
*/
SwitchRootDataAttributes["dirty"] = "data-dirty";
/**
* Present when the switch is active (when wrapped in Field.Root).
*/
SwitchRootDataAttributes["filled"] = "data-filled";
/**
* Present when the switch is focused (when wrapped in Field.Root).
*/
SwitchRootDataAttributes["focused"] = "data-focused";
return SwitchRootDataAttributes;
}({});
//#endregion
//#region ../node_modules/@base-ui/react/esm/switch/stateAttributesMapping.js
var stateAttributesMapping = {
...fieldValidityMapping,
checked(value) {
if (value) return { [SwitchRootDataAttributes.checked]: "" };
return { [SwitchRootDataAttributes.unchecked]: "" };
}
};
//#endregion
//#region ../node_modules/@base-ui/react/esm/switch/root/SwitchRoot.js
var import_jsx_runtime = require_jsx_runtime();
var SwitchRoot = /* @__PURE__ */ import_react.forwardRef(function SwitchRoot(componentProps, forwardedRef) {
const { checked: checkedProp, className, defaultChecked, "aria-labelledby": ariaLabelledByProp, form, id: idProp, inputRef: externalInputRef, name: nameProp, nativeButton = false, onCheckedChange, readOnly = false, required = false, disabled: disabledProp = false, render, uncheckedValue, value, style, ...elementProps } = componentProps;
const { clearErrors } = useFormContext();
const { state: fieldState, setTouched, setDirty, validityData, setFilled, setFocused, shouldValidateOnChange, validationMode, disabled: fieldDisabled, name: fieldName, validation } = useFieldRootContext();
const { labelId } = useLabelableContext();
const disabled = fieldDisabled || disabledProp;
const name = fieldName ?? nameProp;
const inputRef = import_react.useRef(null);
const handleInputRef = useMergedRefs(inputRef, externalInputRef, validation.inputRef);
const switchRef = import_react.useRef(null);
const id = useBaseUiId();
const controlId = useLabelableId({
id: idProp,
implicit: false,
controlRef: switchRef
});
const hiddenInputId = nativeButton ? void 0 : controlId;
const [checked, setCheckedState] = useControlled({
controlled: checkedProp,
default: Boolean(defaultChecked),
name: "Switch",
state: "checked"
});
useRegisterFieldControl(switchRef, id, checked);
useIsoLayoutEffect(() => {
if (inputRef.current) setFilled(inputRef.current.checked);
}, [inputRef, setFilled]);
useValueChanged(checked, () => {
clearErrors(name);
setDirty(checked !== validityData.initialValue);
setFilled(checked);
if (shouldValidateOnChange()) validation.commit(checked);
else validation.commit(checked, true);
});
const { getButtonProps, buttonRef } = useButton({
disabled,
native: nativeButton
});
const ariaLabelledBy = useAriaLabelledBy(ariaLabelledByProp, labelId, inputRef, !nativeButton, hiddenInputId);
const rootProps = {
id: nativeButton ? controlId : id,
role: "switch",
"aria-checked": checked,
"aria-readonly": readOnly || void 0,
"aria-required": required || void 0,
"aria-labelledby": ariaLabelledBy,
onFocus() {
if (!disabled) setFocused(true);
},
onBlur() {
const element = inputRef.current;
if (!element || disabled) return;
setTouched(true);
setFocused(false);
if (validationMode === "onBlur") validation.commit(element.checked);
},
onClick(event) {
if (readOnly || disabled) return;
event.preventDefault();
const input = inputRef.current;
if (!input) return;
input.dispatchEvent(new (getWindow(input)).PointerEvent("click", {
bubbles: true,
shiftKey: event.shiftKey,
ctrlKey: event.ctrlKey,
altKey: event.altKey,
metaKey: event.metaKey
}));
}
};
const inputProps = mergeProps({
checked,
disabled,
form,
id: hiddenInputId,
name,
required,
style: name ? visuallyHiddenInput : visuallyHidden,
tabIndex: -1,
type: "checkbox",
"aria-hidden": true,
ref: handleInputRef,
onChange(event) {
if (event.nativeEvent.defaultPrevented) return;
if (readOnly) {
event.preventDefault();
return;
}
const nextChecked = event.currentTarget.checked;
const eventDetails = createChangeEventDetails(none, event.nativeEvent);
onCheckedChange?.(nextChecked, eventDetails);
if (eventDetails.isCanceled) return;
setCheckedState(nextChecked);
},
onFocus() {
switchRef.current?.focus();
}
}, validation.getInputValidationProps, value !== void 0 ? { value } : EMPTY_OBJECT);
const state = import_react.useMemo(() => ({
...fieldState,
checked,
disabled,
readOnly,
required
}), [
fieldState,
checked,
disabled,
readOnly,
required
]);
const element = useRenderElement("span", componentProps, {
state,
ref: [
forwardedRef,
switchRef,
buttonRef
],
props: [
rootProps,
validation.getValidationProps,
elementProps,
getButtonProps
],
stateAttributesMapping
});
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(SwitchRootContext.Provider, {
value: state,
children: [
element,
!checked && name && uncheckedValue !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("input", {
type: "hidden",
form,
name,
value: uncheckedValue
}),
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("input", {
...inputProps,
suppressHydrationWarning: true
})
]
});
});
SwitchRoot.displayName = "SwitchRoot";
//#endregion
//#region ../node_modules/@base-ui/react/esm/switch/thumb/SwitchThumb.js
/**
* The movable part of the switch that indicates whether the switch is on or off.
* Renders a `<span>`.
*
* Documentation: [Base UI Switch](https://base-ui.com/react/components/switch)
*/
var SwitchThumb = /* @__PURE__ */ import_react.forwardRef(function SwitchThumb(componentProps, forwardedRef) {
const { render, className, style, ...elementProps } = componentProps;
return useRenderElement("span", componentProps, {
state: useSwitchRootContext(),
ref: forwardedRef,
stateAttributesMapping,
props: elementProps
});
});
SwitchThumb.displayName = "SwitchThumb";
//#endregion
//#region ../node_modules/@base-ui/react/esm/switch/index.parts.js
var index_parts_exports = /* @__PURE__ */ __exportAll({
Root: () => SwitchRoot,
Thumb: () => SwitchThumb
});
//#endregion
export { index_parts_exports as Switch };
//# sourceMappingURL=@base-ui_react_switch.js.map