Spaces:
Runtime error
Runtime error
| ; | |
| "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); | |
| // src/index.ts | |
| var index_exports = {}; | |
| __export(index_exports, { | |
| Root: () => Root, | |
| Switch: () => Switch, | |
| SwitchThumb: () => SwitchThumb, | |
| Thumb: () => Thumb, | |
| createSwitchScope: () => createSwitchScope | |
| }); | |
| module.exports = __toCommonJS(index_exports); | |
| // 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, setChecked] = (0, import_react_use_controllable_state.useControllableState)({ | |
| prop: checkedProp, | |
| defaultProp: defaultChecked ?? false, | |
| onChange: onCheckedChange, | |
| caller: SWITCH_NAME | |
| }); | |
| 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)( | |
| SwitchBubbleInput, | |
| { | |
| 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 BUBBLE_INPUT_NAME = "SwitchBubbleInput"; | |
| var SwitchBubbleInput = React.forwardRef( | |
| ({ | |
| __scopeSwitch, | |
| control, | |
| checked, | |
| bubbles = true, | |
| ...props | |
| }, forwardedRef) => { | |
| const ref = React.useRef(null); | |
| const composedRefs = (0, import_react_compose_refs.useComposedRefs)(ref, forwardedRef); | |
| const prevChecked = (0, import_react_use_previous.usePrevious)(checked); | |
| const controlSize = (0, import_react_use_size.useSize)(control); | |
| React.useEffect(() => { | |
| const input = ref.current; | |
| if (!input) return; | |
| 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, | |
| ...props, | |
| tabIndex: -1, | |
| ref: composedRefs, | |
| style: { | |
| ...props.style, | |
| ...controlSize, | |
| position: "absolute", | |
| pointerEvents: "none", | |
| opacity: 0, | |
| margin: 0 | |
| } | |
| } | |
| ); | |
| } | |
| ); | |
| SwitchBubbleInput.displayName = BUBBLE_INPUT_NAME; | |
| function getState(checked) { | |
| return checked ? "checked" : "unchecked"; | |
| } | |
| var Root = Switch; | |
| var Thumb = SwitchThumb; | |
| //# sourceMappingURL=index.js.map | |