{"version":3,"names":["createEffect","createSignal","createStableCallback","useFocusableWhenDisabled","read","value","BUTTON_TAG","ANCHOR_TAG","isButtonElement","element","tagName","isValidLinkElement","href","length","useButton","options","setElement","ownedWrite","disabled","focusableWhenDisabled","tabIndexOption","tabIndex","isNativeButton","native","isCompositeItem","composite","fwd","process","env","NODE_ENV","el","payload","isButtonTag","console","error","shouldSuppress","handlers","onClick","event","preventDefault","preventBaseUIHandler","onMouseDown","onKeyDown","props","currentTarget","isCurrentTarget","target","isButton","isLink","shouldClick","isEnterKey","key","isSpaceKey","role","getAttribute","isTextNavigationRole","startsWith","defaultPrevented","click","onKeyUp","onPointerDown","Object","defineProperties","create","type","enumerable","configurable","get","undefined","buttonRef","ref"],"sources":["use-button.ts"],"sourcesContent":["import { createEffect, createSignal } from \"solid-js\";\nimport type { PropsLike } from \"../merge-props-n\";\nimport { createStableCallback } from \"../stable-callback\";\nimport { useFocusableWhenDisabled } from \"../use-focusable-when-disabled\";\n\n/**\n * Accessor-or-value input. Consumers may pass a plain boolean/number or a\n * reactive accessor; we always coerce via `read()` at call time.\n */\ntype MaybeAccessor<T> = T | (() => T);\n\nfunction read<T>(value: MaybeAccessor<T>): T {\n\treturn typeof value === \"function\" ? (value as () => T)() : value;\n}\n\n/**\n * Parameters for {@link useButton}. Each flag may be a plain value or an\n * accessor so consumers can thread reactive state in without us having to\n * re-create the primitive on every change.\n */\nexport interface UseButtonOptions {\n\t/**\n\t * Whether the component should ignore user interaction.\n\t * @default false\n\t */\n\tdisabled?: MaybeAccessor<boolean | undefined> | undefined;\n\t/**\n\t * Whether the button may receive focus even if it is disabled.\n\t * @default false\n\t */\n\tfocusableWhenDisabled?: MaybeAccessor<boolean | undefined> | undefined;\n\t/**\n\t * `tabindex` when non-composite. Ignored when `composite` is true.\n\t * @default 0\n\t */\n\ttabIndex?: MaybeAccessor<number | undefined> | undefined;\n\t/**\n\t * Whether the component is being rendered as a native `<button>`.\n\t * @default true\n\t */\n\tnative?: MaybeAccessor<boolean | undefined> | undefined;\n\t/**\n\t * Whether the button is part of a composite widget. When `true`, keyboard\n\t * activation for Space occurs on keydown rather than keyup.\n\t * @default false\n\t *\n\t * (Base UI React looks this up from a CompositeRoot context by default; the\n\t * Solid port leaves context discovery to callers until CompositeRoot is\n\t * ported.)\n\t */\n\tcomposite?: MaybeAccessor<boolean | undefined> | undefined;\n}\n\n/**\n * Minimal event shape we look at in our chained handlers. We keep the typing\n * structural so we don't over-commit to a specific JSX event type — callers\n * hand us whichever synthetic/native event the JSX runtime produced.\n */\ninterface BaseUIEventLike {\n\tbaseUIHandlerPrevented?: boolean;\n\tpreventBaseUIHandler?: () => void;\n\tpreventDefault?: () => void;\n\tdefaultPrevented?: boolean;\n\ttarget?: EventTarget | null;\n\tcurrentTarget?: EventTarget | null;\n\tkey?: string;\n}\n\n/**\n * Return value of {@link useButton}.\n */\nexport interface UseButtonReturn {\n\t/**\n\t * A reactive props source to pass into `renderElement`'s `params.props`\n\t * array. Contains the button-specific handlers plus (when applicable)\n\t * `role`, `type`, `tabIndex`, `aria-disabled`, and `disabled`.\n\t *\n\t * Typed as `PropsLike` so it composes with `mergePropsN` / `renderElement`\n\t * without per-component casts. Consumers don't read individual fields off\n\t * of this — they pass it through the merge pipeline.\n\t */\n\tprops: PropsLike;\n\t/**\n\t * Stable ref callback to attach to the rendered element. Compose with\n\t * other refs via Solid 2's array form (`ref={[a, buttonRef]}`).\n\t */\n\tref: (element: HTMLElement | null) => void;\n}\n\nconst BUTTON_TAG = \"BUTTON\";\nconst ANCHOR_TAG = \"A\";\n\nfunction isButtonElement(\n\telement: Element | null,\n): element is HTMLButtonElement {\n\treturn element !== null && element.tagName === BUTTON_TAG;\n}\n\nfunction isValidLinkElement(\n\telement: Element | null,\n): element is HTMLAnchorElement {\n\treturn (\n\t\telement !== null &&\n\t\telement.tagName === ANCHOR_TAG &&\n\t\ttypeof (element as HTMLAnchorElement).href === \"string\" &&\n\t\t(element as HTMLAnchorElement).href.length > 0\n\t);\n}\n\n/**\n * Shared primitive powering `<Button>`, `<Toggle>`, and other button-shaped\n * components.\n *\n * Responsibilities mirror Base UI React's `useButton`:\n *\n * 1. Native path: lets the browser handle activation; threads `disabled` and\n *    defaults `type=\"button\"`.\n * 2. Non-native path: adds `role=\"button\"`, synthesizes click events on\n *    Enter/Space via `HTMLElement.click()` so consumer `onClick` handlers\n *    still fire through the normal DOM path, and sets `tabIndex`.\n * 3. Disabled handling: suppresses pointer/keyboard events via Base UI's\n *    `preventBaseUIHandler()` so chained consumer handlers don't run. Focus\n *    and blur events are NOT suppressed — this matches React Base UI, which\n *    deliberately lets focusableWhenDisabled components still observe focus\n *    transitions.\n *\n * Solid-specific decisions:\n *\n * - Inputs accept accessors so consumers can pass `() => props.disabled`\n *   without materializing a memo. All reads happen inside event handlers\n *   (call-time), so top-level reactive reads don't fire.\n * - Clicks are synthesized via `currentTarget.click()` rather than by calling\n *   a captured `externalOnClick` closure — the Solid merge pipeline keeps\n *   consumer handlers separate, so dispatching a real DOM click lets them\n *   fire through the normal right-to-left chain in `mergePropsN`.\n * - The `buttonRef` is a stable callback; Solid's native array-ref form\n *   (RFC 07) is used at the call site to compose with other refs.\n *\n * Reactivity notes:\n *\n * - The element is tracked in an internal signal with `ownedWrite: true` so\n *   the ref callback (unowned) can write to it without tripping the\n *   `SIGNAL_WRITE_IN_OWNED_SCOPE` diagnostic.\n * - The dev-mode native-button mismatch warning is wired up with a split\n *   `createEffect` — the compute half reads the element and the `native`\n *   flag; the apply half does the console.error.\n */\nexport function useButton(options: UseButtonOptions = {}): UseButtonReturn {\n\t// Internal host-element signal. `ownedWrite` opts out of the\n\t// SIGNAL_WRITE_IN_OWNED_SCOPE check because the ref callback fires from\n\t// unowned scope and this signal is pure internal plumbing.\n\tconst [element, setElement] = createSignal<HTMLElement | null>(null, {\n\t\townedWrite: true,\n\t});\n\n\t// Read helpers, with Base UI React's default values applied.\n\tconst disabled = (): boolean => read(options.disabled) ?? false;\n\tconst focusableWhenDisabled = (): boolean | undefined =>\n\t\tread(options.focusableWhenDisabled);\n\tconst tabIndexOption = (): number => read(options.tabIndex) ?? 0;\n\tconst isNativeButton = (): boolean => read(options.native) ?? true;\n\tconst isCompositeItem = (): boolean => read(options.composite) ?? false;\n\n\t// Delegate tabIndex / aria-disabled / disabled to the shared primitive so\n\t// we mirror React's `useFocusableWhenDisabled` exactly. Pass everything as\n\t// accessors — the hook reads through `read()` on every getter access, so\n\t// our reactive inputs stay live.\n\tconst fwd = useFocusableWhenDisabled({\n\t\tdisabled,\n\t\tfocusableWhenDisabled,\n\t\tcomposite: isCompositeItem,\n\t\ttabIndex: tabIndexOption,\n\t\tisNativeButton,\n\t});\n\n\t// Dev-mode mismatch warning: if `native` disagrees with the actual tag.\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tcreateEffect(\n\t\t\t() => {\n\t\t\t\tconst el = element();\n\t\t\t\tif (!el) return null;\n\t\t\t\treturn { el, native: isNativeButton() };\n\t\t\t},\n\t\t\t(payload: { el: HTMLElement; native: boolean } | null) => {\n\t\t\t\tif (!payload) return;\n\t\t\t\tconst isButtonTag = isButtonElement(payload.el);\n\t\t\t\tif (payload.native && !isButtonTag) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\"Base UI: A component that acts as a button expected a native <button> because the \" +\n\t\t\t\t\t\t\t\"`nativeButton` prop is true. Rendering a non-<button> removes native button \" +\n\t\t\t\t\t\t\t\"semantics, which can impact forms and accessibility. Use a real <button> in the \" +\n\t\t\t\t\t\t\t\"`render` prop, or set `nativeButton` to `false`.\",\n\t\t\t\t\t);\n\t\t\t\t} else if (!payload.native && isButtonTag) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\"Base UI: A component that acts as a button expected a non-<button> because the \" +\n\t\t\t\t\t\t\t\"`nativeButton` prop is false. Rendering a <button> keeps native behavior while Base UI \" +\n\t\t\t\t\t\t\t\"applies non-native attributes and handlers, which can add unintended extra attributes \" +\n\t\t\t\t\t\t\t\"(such as `role` or `aria-disabled`). Use a non-<button> in the `render` prop, or set \" +\n\t\t\t\t\t\t\t\"`nativeButton` to `true`.\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\n\t\t// Composite edge case: a disabled composite button nested under another\n\t\t// (already-disabled) composite button needs its `disabled` DOM attr\n\t\t// cleared so the outer composite can still focus it. Runs whenever the\n\t\t// tracked inputs change.\n\t\tcreateEffect(\n\t\t\t() => {\n\t\t\t\tconst el = element();\n\t\t\t\tif (!el) return null;\n\t\t\t\treturn {\n\t\t\t\t\tel,\n\t\t\t\t\tdisabled: disabled(),\n\t\t\t\t\tcomposite: isCompositeItem(),\n\t\t\t\t\tfocusableWhenDisabled: focusableWhenDisabled(),\n\t\t\t\t};\n\t\t\t},\n\t\t\t(\n\t\t\t\tpayload: {\n\t\t\t\t\tel: HTMLElement;\n\t\t\t\t\tdisabled: boolean;\n\t\t\t\t\tcomposite: boolean;\n\t\t\t\t\tfocusableWhenDisabled: boolean | undefined;\n\t\t\t\t} | null,\n\t\t\t) => {\n\t\t\t\tif (!payload) return;\n\t\t\t\tif (!isButtonElement(payload.el)) return;\n\t\t\t\t// If composite and disabled, but `disabled` wasn't set on the\n\t\t\t\t// returned props (focusableWhenDisabled path), clear the\n\t\t\t\t// element's `disabled` property so focus isn't blocked.\n\t\t\t\tconst shouldSuppress =\n\t\t\t\t\tpayload.composite &&\n\t\t\t\t\tpayload.disabled &&\n\t\t\t\t\tpayload.focusableWhenDisabled;\n\t\t\t\tif (shouldSuppress && payload.el.disabled) {\n\t\t\t\t\tpayload.el.disabled = false;\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\t}\n\n\t// The returned props object uses getters so every read re-evaluates — the\n\t// `renderElement` merge proxy calls `resolveKey` on every access, and\n\t// consumers may swap accessor-backed flags over time.\n\tconst handlers = {\n\t\tonClick(event: MouseEvent & BaseUIEventLike): void {\n\t\t\tif (disabled()) {\n\t\t\t\tevent.preventDefault?.();\n\t\t\t\tevent.preventBaseUIHandler?.();\n\t\t\t}\n\t\t},\n\t\tonMouseDown(event: MouseEvent & BaseUIEventLike): void {\n\t\t\tif (disabled()) {\n\t\t\t\tevent.preventBaseUIHandler?.();\n\t\t\t}\n\t\t},\n\t\tonKeyDown(event: KeyboardEvent & BaseUIEventLike): void {\n\t\t\tif (disabled()) {\n\t\t\t\t// Delegate the focusable-when-disabled key swallow to the shared\n\t\t\t\t// hook (no-op when not disabled+focusable; otherwise it\n\t\t\t\t// preventDefault()s every non-Tab key).\n\t\t\t\t(fwd.props.onKeyDown as (e: KeyboardEvent) => void)(event);\n\t\t\t\tevent.preventBaseUIHandler?.();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst currentTarget = event.currentTarget as HTMLElement | null;\n\t\t\tif (!currentTarget) return;\n\t\t\tconst isCurrentTarget = event.target === event.currentTarget;\n\t\t\tconst native = isNativeButton();\n\t\t\tconst composite = isCompositeItem();\n\t\t\tconst isButton = isButtonElement(currentTarget);\n\t\t\tconst isLink = !native && isValidLinkElement(currentTarget);\n\t\t\tconst shouldClick = isCurrentTarget && (native ? isButton : !isLink);\n\t\t\tconst isEnterKey = event.key === \"Enter\";\n\t\t\tconst isSpaceKey = event.key === \" \";\n\t\t\tconst role = currentTarget.getAttribute(\"role\");\n\t\t\tconst isTextNavigationRole =\n\t\t\t\trole?.startsWith(\"menuitem\") ||\n\t\t\t\trole === \"option\" ||\n\t\t\t\trole === \"gridcell\";\n\n\t\t\tif (isCurrentTarget && composite && isSpaceKey) {\n\t\t\t\tif (event.defaultPrevented && isTextNavigationRole) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tevent.preventDefault?.();\n\n\t\t\t\tif (isLink || (native && isButton)) {\n\t\t\t\t\t// Native button / real link: let the browser's own `.click()`\n\t\t\t\t\t// run so form-submit/reset and link navigation semantics are\n\t\t\t\t\t// preserved. Consumer's onClick fires via the dispatched\n\t\t\t\t\t// click event through the normal merge chain; cancel our\n\t\t\t\t\t// pipeline so we don't double-handle.\n\t\t\t\t\tcurrentTarget.click();\n\t\t\t\t\tevent.preventBaseUIHandler?.();\n\t\t\t\t} else if (shouldClick) {\n\t\t\t\t\t// Non-native composite: synthesize a click so the consumer's\n\t\t\t\t\t// onClick handler runs via the DOM event path.\n\t\t\t\t\tcurrentTarget.click();\n\t\t\t\t\tevent.preventBaseUIHandler?.();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (shouldClick) {\n\t\t\t\tif (!native && (isSpaceKey || isEnterKey)) {\n\t\t\t\t\tevent.preventDefault?.();\n\t\t\t\t}\n\t\t\t\tif (!native && isEnterKey) {\n\t\t\t\t\tcurrentTarget.click();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonKeyUp(event: KeyboardEvent & BaseUIEventLike): void {\n\t\t\tif (disabled()) {\n\t\t\t\tevent.preventBaseUIHandler?.();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst currentTarget = event.currentTarget as HTMLElement | null;\n\t\t\tif (!currentTarget) return;\n\t\t\tconst native = isNativeButton();\n\t\t\tconst composite = isCompositeItem();\n\n\t\t\tif (\n\t\t\t\tevent.target === event.currentTarget &&\n\t\t\t\tnative &&\n\t\t\t\tcomposite &&\n\t\t\t\tisButtonElement(currentTarget) &&\n\t\t\t\tevent.key === \" \"\n\t\t\t) {\n\t\t\t\t// Native composite buttons get activation on keydown; swallow the\n\t\t\t\t// browser's keyup-driven click so we don't fire twice.\n\t\t\t\tevent.preventDefault?.();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tevent.target === event.currentTarget &&\n\t\t\t\t!native &&\n\t\t\t\t!composite &&\n\t\t\t\tevent.key === \" \"\n\t\t\t) {\n\t\t\t\t// Non-native, non-composite Space activation happens on keyup\n\t\t\t\t// (matching native <button> semantics).\n\t\t\t\tcurrentTarget.click();\n\t\t\t}\n\t\t},\n\t\tonPointerDown(event: PointerEvent & BaseUIEventLike): void {\n\t\t\tif (disabled()) {\n\t\t\t\tevent.preventDefault?.();\n\t\t\t\tevent.preventBaseUIHandler?.();\n\t\t\t}\n\t\t},\n\t};\n\n\t// Build the reactive props object. Every access re-evaluates the getter\n\t// so that accessor-backed inputs stay live.\n\tconst props: PropsLike = Object.defineProperties(\n\t\tObject.create(null) as PropsLike,\n\t\t{\n\t\t\ttype: {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tget: () => (isNativeButton() ? \"button\" : undefined),\n\t\t\t},\n\t\t\trole: {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tget: () => (isNativeButton() ? undefined : \"button\"),\n\t\t\t},\n\t\t\ttabIndex: {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\t// Per Solid 2 RFC 07, `aria-*` strings flow through unchanged;\n\t\t\t\t// the focusable-when-disabled hook owns the policy.\n\t\t\t\tget: () => fwd.props.tabIndex,\n\t\t\t},\n\t\t\t\"aria-disabled\": {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tget: () => fwd.props[\"aria-disabled\"],\n\t\t\t},\n\t\t\tdisabled: {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tget: () => fwd.props.disabled,\n\t\t\t},\n\t\t\tonClick: {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: handlers.onClick,\n\t\t\t},\n\t\t\tonMouseDown: {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: handlers.onMouseDown,\n\t\t\t},\n\t\t\tonKeyDown: {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: handlers.onKeyDown,\n\t\t\t},\n\t\t\tonKeyUp: {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: handlers.onKeyUp,\n\t\t\t},\n\t\t\tonPointerDown: {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: handlers.onPointerDown,\n\t\t\t},\n\t\t},\n\t);\n\n\tconst buttonRef = createStableCallback<(el: HTMLElement | null) => void>(\n\t\t() => (el) => {\n\t\t\tsetElement(el);\n\t\t},\n\t);\n\n\treturn { props, ref: buttonRef };\n}\n"],"mappings":"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","ignoreList":[]}