"use strict"; "use client"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; 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 __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // packages/react/switch/src/index.ts var src_exports = {}; __export(src_exports, { Root: () => Root, Switch: () => Switch, SwitchThumb: () => SwitchThumb, Thumb: () => Thumb, createSwitchScope: () => createSwitchScope }); module.exports = __toCommonJS(src_exports); // packages/react/switch/src/Switch.tsx var React = __toESM(require("react")); var import_primitive = require("@radix-ui/primitive"); var import_react_compose_refs = require("@radix-ui/react-compose-refs"); var import_react_context = require("@radix-ui/react-context"); var import_react_use_controllable_state = require("@radix-ui/react-use-controllable-state"); var import_react_use_previous = require("@radix-ui/react-use-previous"); var import_react_use_size = require("@radix-ui/react-use-size"); var import_react_primitive = require("@radix-ui/react-primitive"); var import_jsx_runtime = require("react/jsx-runtime"); var SWITCH_NAME = "Switch"; var [createSwitchContext, createSwitchScope] = (0, import_react_context.createContextScope)(SWITCH_NAME); var [SwitchProvider, useSwitchContext] = createSwitchContext(SWITCH_NAME); var Switch = React.forwardRef( (props, forwardedRef) => { const { __scopeSwitch, name, checked: checkedProp, defaultChecked, required, disabled, value = "on", onCheckedChange, form, ...switchProps } = props; const [button, setButton] = React.useState(null); const composedRefs = (0, import_react_compose_refs.useComposedRefs)(forwardedRef, (node) => setButton(node)); const hasConsumerStoppedPropagationRef = React.useRef(false); const isFormControl = button ? form || !!button.closest("form") : true; const [checked = false, setChecked] = (0, import_react_use_controllable_state.useControllableState)({ prop: checkedProp, defaultProp: defaultChecked, onChange: onCheckedChange }); return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(SwitchProvider, { scope: __scopeSwitch, checked, disabled, children: [ /* @__PURE__ */ (0, import_jsx_runtime.jsx)( import_react_primitive.Primitive.button, { type: "button", role: "switch", "aria-checked": checked, "aria-required": required, "data-state": getState(checked), "data-disabled": disabled ? "" : void 0, disabled, value, ...switchProps, ref: composedRefs, onClick: (0, import_primitive.composeEventHandlers)(props.onClick, (event) => { setChecked((prevChecked) => !prevChecked); if (isFormControl) { hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(); if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation(); } }) } ), isFormControl && /* @__PURE__ */ (0, import_jsx_runtime.jsx)( BubbleInput, { control: button, bubbles: !hasConsumerStoppedPropagationRef.current, name, value, checked, required, disabled, form, style: { transform: "translateX(-100%)" } } ) ] }); } ); Switch.displayName = SWITCH_NAME; var THUMB_NAME = "SwitchThumb"; var SwitchThumb = React.forwardRef( (props, forwardedRef) => { const { __scopeSwitch, ...thumbProps } = props; const context = useSwitchContext(THUMB_NAME, __scopeSwitch); return /* @__PURE__ */ (0, import_jsx_runtime.jsx)( import_react_primitive.Primitive.span, { "data-state": getState(context.checked), "data-disabled": context.disabled ? "" : void 0, ...thumbProps, ref: forwardedRef } ); } ); SwitchThumb.displayName = THUMB_NAME; var BubbleInput = (props) => { const { control, checked, bubbles = true, ...inputProps } = props; const ref = React.useRef(null); const prevChecked = (0, import_react_use_previous.usePrevious)(checked); const controlSize = (0, import_react_use_size.useSize)(control); React.useEffect(() => { const input = ref.current; const inputProto = window.HTMLInputElement.prototype; const descriptor = Object.getOwnPropertyDescriptor(inputProto, "checked"); const setChecked = descriptor.set; if (prevChecked !== checked && setChecked) { const event = new Event("click", { bubbles }); setChecked.call(input, checked); input.dispatchEvent(event); } }, [prevChecked, checked, bubbles]); return /* @__PURE__ */ (0, import_jsx_runtime.jsx)( "input", { type: "checkbox", "aria-hidden": true, defaultChecked: checked, ...inputProps, tabIndex: -1, ref, style: { ...props.style, ...controlSize, position: "absolute", pointerEvents: "none", opacity: 0, margin: 0 } } ); }; function getState(checked) { return checked ? "checked" : "unchecked"; } var Root = Switch; var Thumb = SwitchThumb; //# sourceMappingURL=index.js.map