{"version":3,"names":["dynamic","omit","useCompositeRootContext","useCompositeListItem","mergeRootProps","resolveClassStyle","useToolbarRootContext","LINK_METADATA","focusableWhenDisabled","ToolbarLink","props","toolbar","rootContext","orientation","ref","listItemRef","index","itemIndex","metadata","composedRef","el","compositeTabIndex","undefined","highlightedIndex","onCompositeFocus","i","onHighlightedIndexChange","userClassStyle","userHtmlProps","internalProps","tabIndex","onFocus","data-orientation","merged","Tag","as"],"sources":["toolbar-link.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 { BaseUIComponentProps, Orientation } from \"../internals/types\";\nimport {\n\ttype ToolbarRootItemMetadata,\n\tuseToolbarRootContext,\n} from \"./toolbar-root-context.ts\";\n\nexport interface ToolbarLinkState {\n\torientation: Orientation;\n}\n\nexport interface ToolbarLinkProps\n\textends BaseUIComponentProps<\"a\", ToolbarLinkState> {\n\t/** Tag/component to render. Defaults to `\"a\"`. */\n\tas?: ValidComponent;\n}\n\n// Links participate in arrow navigation but cannot be \"disabled\" in HTML — so\n// their metadata always reports `focusableWhenDisabled: true` (matches React:\n// the flag is only used for deriving `disabledIndices`).\nconst LINK_METADATA: ToolbarRootItemMetadata = {\n\tfocusableWhenDisabled: true,\n};\n\n/**\n * A link inside a `<Toolbar.Root>`. Renders an `<a>` element (or `as` override)\n * and participates in arrow-key navigation through the composite root.\n */\nexport function ToolbarLink(props: ToolbarLinkProps): JSX.Element {\n\tconst toolbar = useToolbarRootContext();\n\tconst rootContext = useCompositeRootContext(true);\n\n\tconst orientation = (): Orientation => toolbar.orientation();\n\n\tconst { ref: listItemRef, index: itemIndex } =\n\t\tuseCompositeListItem<ToolbarRootItemMetadata>({\n\t\t\tmetadata: LINK_METADATA,\n\t\t});\n\n\t// Metadata reaches `<Toolbar.Root>` via the composite-list sorted map\n\t// (see the header comment in toolbar-root.tsx) — no separate registry.\n\tconst composedRef = (el: HTMLElement | null): void => {\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\torientation: orientation(),\n\t}));\n\n\tconst userHtmlProps = omit(props, \"as\", \"class\", \"style\", \"attrs\") as Record<\n\t\tstring,\n\t\tunknown\n\t>;\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};\n\n\tconst merged = mergeRootProps(\n\t\tmergeRootProps(internalProps, userClassStyle),\n\t\tuserHtmlProps,\n\t);\n\n\tconst Tag = dynamic(() => props.as ?? \"a\");\n\treturn <Tag {...merged} />;\n}\n"],"mappings":"AACA,SAASA,OAAO,QAAQ,cAAc;AACtC,SAASC,IAAI,QAAQ,UAAU;AAC/B,SAASC,uBAAuB,QAAQ,6CAA6C;AACrF,SAASC,oBAAoB,QAAQ,2CAA2C;AAChF,SAASC,cAAc,QAAQ,+BAA+B;AAC9D,SAASC,iBAAiB,QAAQ,kCAAkC;AAEpE,SAECC,qBAAqB,QACf,2BAA2B;AAYlC;AACA;AACA;AACA,MAAMC,aAAsC,GAAG;EAC9CC,qBAAqB,EAAE;AACxB,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,SAASC,WAAWA,CAACC,KAAuB,EAAe;EACjE,MAAMC,OAAO,GAAGL,qBAAqB,CAAC,CAAC;EACvC,MAAMM,WAAW,GAAGV,uBAAuB,CAAC,IAAI,CAAC;EAEjD,MAAMW,WAAW,GAAGA,CAAA,KAAmBF,OAAO,CAACE,WAAW,CAAC,CAAC;EAE5D,MAAM;IAAEC,GAAG,EAAEC,WAAW;IAAEC,KAAK,EAAEC;EAAU,CAAC,GAC3Cd,oBAAoB,CAA0B;IAC7Ce,QAAQ,EAAEX;EACX,CAAC,CAAC;;EAEH;EACA;EACA,MAAMY,WAAW,GAAIC,EAAsB,IAAW;IACrDL,WAAW,CAACK,EAAE,CAAC;EAChB,CAAC;EAED,MAAMC,iBAAiB,GAAGA,CAAA,KAA0B;IACnD,IAAI,CAACT,WAAW,EAAE,OAAOU,SAAS;IAClC,OAAOV,WAAW,CAACW,gBAAgB,CAAC,CAAC,KAAKN,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAC/D,CAAC;EACD,MAAMO,gBAAgB,GAAGA,CAAA,KAAY;IACpC,IAAI,CAACZ,WAAW,EAAE;IAClB,MAAMa,CAAC,GAAGR,SAAS,CAAC,CAAC;IACrB,IAAIQ,CAAC,IAAI,CAAC,EAAEb,WAAW,CAACc,wBAAwB,CAACD,CAAC,CAAC;EACpD,CAAC;EACD,MAAME,cAAc,GAAGtB,iBAAiB,CAACK,KAAK,EAAE,OAAO;IACtDG,WAAW,EAAEA,WAAW,CAAC;EAC1B,CAAC,CAAC,CAAC;EAEH,MAAMe,aAAa,GAAG3B,IAAI,CAACS,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAGhE;EAED,MAAMmB,aAAa,GAAG;IACrBf,GAAG,EAAEK,WAAW;IAChB,IAAIW,QAAQA,CAAA,EAAG;MACd,OAAOT,iBAAiB,CAAC,CAAC;IAC3B,CAAC;IACDU,OAAO,EAAEP,gBAAgB;IACzB,IAAI,kBAAkBQ,CAAA,EAAG;MACxB,OAAOnB,WAAW,CAAC,CAAC;IACrB;EACD,CAAC;EAED,MAAMoB,MAAM,GAAG7B,cAAc,CAC5BA,cAAc,CAACyB,aAAa,EAAEF,cAAc,CAAC,EAC7CC,aACD,CAAC;EAED,MAAMM,GAAG,GAAGlC,OAAO,CAAC,MAAMU,KAAK,CAACyB,EAAE,IAAI,GAAG,CAAC;EAC1C,OAAO,CAAC,GAAG,CAAC,IAAIF,MAAM,CAAC,GAAG;AAC3B","ignoreList":[]}