{"version":3,"names":["dynamic","omit","useCompositeRootContext","useCompositeListItem","mergeRootProps","resolveClassStyle","useButton","useToolbarGroupContext","useToolbarRootContext","ToolbarButton","props","toolbar","group","focusableWhenDisabled","ownDisabled","disabled","nativeButton","orientation","buttonProps","ref","buttonRef","native","listItemRef","index","itemIndex","metadata","rootContext","composedRef","el","compositeTabIndex","undefined","highlightedIndex","onCompositeFocus","i","onHighlightedIndexChange","userClassStyle","focusable","userHtmlProps","internalProps","tabIndex","onFocus","data-orientation","data-disabled","merged","Tag","as"],"sources":["toolbar-button.tsx"],"sourcesContent":["import type { JSX, ValidComponent } from \"@solidjs/web\";\nimport { dynamic } from \"@solidjs/web\";\nimport { omit } from \"solid-js\";\nimport { useCompositeRootContext } from \"../internals/composite/composite-context.ts\";\nimport { useCompositeListItem } from \"../internals/composite/composite-list.tsx\";\nimport { mergeRootProps } from \"../internals/merge-root-props\";\nimport { resolveClassStyle } from \"../internals/resolve-class-style\";\nimport type {\n\tBaseUIComponentProps,\n\tNativeButtonProps,\n\tOrientation,\n} from \"../internals/types\";\nimport { useButton } from \"../internals/use-button/use-button\";\nimport { useToolbarGroupContext } from \"./toolbar-group-context.ts\";\nimport {\n\ttype ToolbarRootItemMetadata,\n\tuseToolbarRootContext,\n} from \"./toolbar-root-context.ts\";\n\nexport interface ToolbarButtonState {\n\tdisabled: boolean;\n\torientation: Orientation;\n\tfocusable: boolean;\n}\n\nexport interface ToolbarButtonProps\n\textends NativeButtonProps,\n\t\tBaseUIComponentProps<\"button\", ToolbarButtonState> {\n\t/** Tag/component to render. Defaults to `\"button\"`. */\n\tas?: ValidComponent;\n\t/**\n\t * When `true` the item is disabled.\n\t * @default false\n\t */\n\tdisabled?: boolean | undefined;\n\t/**\n\t * When `true` the item remains focusable when disabled.\n\t * @default true\n\t */\n\tfocusableWhenDisabled?: boolean | undefined;\n}\n\n/**\n * A button inside a `<Toolbar.Root>`. Participates in the toolbar's arrow-key\n * navigation through `<CompositeList>` + `useCompositeItem`-style wiring.\n */\nexport function ToolbarButton(props: ToolbarButtonProps): JSX.Element {\n\tconst toolbar = useToolbarRootContext();\n\tconst group = useToolbarGroupContext();\n\n\tconst focusableWhenDisabled = (): boolean =>\n\t\tprops.focusableWhenDisabled ?? true;\n\tconst ownDisabled = (): boolean => props.disabled === true;\n\tconst disabled = (): boolean =>\n\t\ttoolbar.disabled() || group.disabled() || ownDisabled();\n\tconst nativeButton = (): boolean => props.nativeButton ?? true;\n\tconst orientation = (): Orientation => toolbar.orientation();\n\n\tconst { props: buttonProps, ref: buttonRef } = useButton({\n\t\tdisabled,\n\t\tfocusableWhenDisabled,\n\t\tnative: nativeButton,\n\t});\n\n\tconst { ref: listItemRef, index: itemIndex } =\n\t\tuseCompositeListItem<ToolbarRootItemMetadata>({\n\t\t\tget metadata() {\n\t\t\t\treturn { focusableWhenDisabled: focusableWhenDisabled() };\n\t\t\t},\n\t\t});\n\n\tconst rootContext = useCompositeRootContext(true);\n\n\tconst composedRef = (el: HTMLElement | null): void => {\n\t\tbuttonRef(el);\n\t\tlistItemRef(el);\n\t};\n\n\tconst compositeTabIndex = (): number | undefined => {\n\t\tif (!rootContext) return undefined;\n\t\treturn rootContext.highlightedIndex() === itemIndex() ? 0 : -1;\n\t};\n\tconst onCompositeFocus = (): void => {\n\t\tif (!rootContext) return;\n\t\tconst i = itemIndex();\n\t\tif (i >= 0) rootContext.onHighlightedIndexChange(i);\n\t};\n\tconst userClassStyle = resolveClassStyle(props, () => ({\n\t\tdisabled: disabled(),\n\t\torientation: orientation(),\n\t\tfocusable: !disabled() || focusableWhenDisabled(),\n\t}));\n\n\tconst userHtmlProps = omit(\n\t\tprops,\n\t\t\"as\",\n\t\t\"class\",\n\t\t\"style\",\n\t\t\"attrs\",\n\t\t\"disabled\",\n\t\t\"focusableWhenDisabled\",\n\t\t\"nativeButton\",\n\t) as Record<string, unknown>;\n\n\tconst internalProps = {\n\t\tref: composedRef,\n\t\tget tabIndex() {\n\t\t\treturn compositeTabIndex();\n\t\t},\n\t\tonFocus: onCompositeFocus,\n\t\tget \"data-orientation\"() {\n\t\t\treturn orientation();\n\t\t},\n\t\tget \"data-disabled\"(): \"\" | undefined {\n\t\t\treturn disabled() ? \"\" : undefined;\n\t\t},\n\t};\n\n\tconst merged = mergeRootProps(\n\t\tmergeRootProps(mergeRootProps(internalProps, buttonProps), userClassStyle),\n\t\tuserHtmlProps,\n\t);\n\n\tconst Tag = dynamic(() => props.as ?? \"button\");\n\treturn <Tag {...merged} />;\n}\n"],"mappings":"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","ignoreList":[]}