{"version":3,"names":["dynamic","createMemo","createSignal","omit","useDirection","CompositeList","useCompositeRoot","mergeRootProps","resolveClassStyle","ToolbarRootContext","ToolbarRoot","props","disabled","orientation","loopFocus","direction","sortedMap","setSortedMap","Map","name","ownedWrite","onMapChange","map","disabledIndices","size","out","entry","values","idx","index","focusableWhenDisabled","push","composite","enableHomeAndEndKeys","contextValue","present","userClassStyle","userHtmlProps","internalProps","ref","rootRef","role","aria-orientation","data-orientation","data-disabled","undefined","merged","Tag","as","elementsRef","children"],"sources":["toolbar-root.tsx"],"sourcesContent":["import type { JSX, ValidComponent } from \"@solidjs/web\";\nimport { dynamic } from \"@solidjs/web\";\nimport { createMemo, createSignal, omit } from \"solid-js\";\nimport { useDirection } from \"../direction-provider/direction-provider-context.ts\";\nimport type { CompositeMetadata } from \"../internals/composite/composite-context.ts\";\nimport { CompositeList } from \"../internals/composite/composite-list.tsx\";\nimport { useCompositeRoot } from \"../internals/composite/composite-root.ts\";\nimport { mergeRootProps } from \"../internals/merge-root-props\";\nimport { resolveClassStyle } from \"../internals/resolve-class-style\";\nimport type { BaseUIComponentProps, Orientation } from \"../internals/types\";\nimport {\n\tToolbarRootContext,\n\ttype ToolbarRootContextValue,\n\ttype ToolbarRootItemMetadata,\n} from \"./toolbar-root-context.ts\";\n\n// Audited 2026-04-20:\n//\n// React's `<ToolbarRoot>` keeps a `useState<Map<Node, CompositeMetadata>>` and\n// projects `disabledIndices` from it. That single map is populated by\n// `<CompositeList onMapChange={setItemMap}>`, so the \"registry\" and the\n// composite-list sorted map are the same thing.\n//\n// Here we do the same: the `<CompositeList<ToolbarRootItemMetadata>>` below\n// already carries `focusableWhenDisabled` (supplied via each item's\n// `useCompositeListItem({ metadata })` call) along with the resolved `index`.\n// Capturing the map from `onMapChange` and deriving `disabledIndices` from\n// that single source is enough — no auxiliary per-node registry needed.\n\nexport type ToolbarRootOrientation = Orientation;\n\nexport interface ToolbarRootState {\n\tdisabled: boolean;\n\torientation: Orientation;\n}\n\nexport interface ToolbarRootProps\n\textends BaseUIComponentProps<\"div\", ToolbarRootState> {\n\t/** Tag/component to render. Defaults to `\"div\"`. */\n\tas?: ValidComponent;\n\t/**\n\t * Whether the toolbar (and every descendant part) ignores user interaction.\n\t * @default false\n\t */\n\tdisabled?: boolean | undefined;\n\t/**\n\t * Navigation orientation — drives arrow-key dispatch and the\n\t * `data-orientation` / `aria-orientation` attributes.\n\t * @default \"horizontal\"\n\t */\n\torientation?: Orientation | undefined;\n\t/**\n\t * Whether arrow-key navigation loops focus at the ends.\n\t * @default true\n\t */\n\tloopFocus?: boolean | undefined;\n}\n\n/**\n * A container for grouping a set of controls — buttons, toggle groups,\n * separators, links. Renders a `<div role=\"toolbar\">` (or `as` override) with\n * arrow-key navigation between focusable items.\n */\nexport function ToolbarRoot(props: ToolbarRootProps): JSX.Element {\n\tconst disabled = (): boolean => props.disabled === true;\n\tconst orientation = (): Orientation => props.orientation ?? \"horizontal\";\n\tconst loopFocus = (): boolean => props.loopFocus ?? true;\n\n\tconst direction = useDirection();\n\n\tconst [sortedMap, setSortedMap] = createSignal<\n\t\tMap<Element, CompositeMetadata<ToolbarRootItemMetadata> | null>\n\t>(new Map(), { name: \"toolbar.sortedMap\", ownedWrite: true });\n\n\tconst onMapChange = (\n\t\tmap: Map<Element, CompositeMetadata<ToolbarRootItemMetadata> | null>,\n\t): void => {\n\t\tsetSortedMap(map);\n\t};\n\n\tconst disabledIndices = createMemo(\n\t\t(): number[] => {\n\t\t\tconst map = sortedMap();\n\t\t\tif (map.size === 0) return [];\n\t\t\tconst out: number[] = [];\n\t\t\tfor (const entry of map.values()) {\n\t\t\t\tconst idx = entry?.index;\n\t\t\t\tif (\n\t\t\t\t\tentry != null &&\n\t\t\t\t\tentry.focusableWhenDisabled === false &&\n\t\t\t\t\ttypeof idx === \"number\"\n\t\t\t\t) {\n\t\t\t\t\tout.push(idx);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn out;\n\t\t},\n\t\t{ name: \"toolbar.disabledIndices\" },\n\t);\n\n\tconst composite = useCompositeRoot({\n\t\tdirection,\n\t\tget orientation() {\n\t\t\treturn orientation();\n\t\t},\n\t\tget loopFocus() {\n\t\t\treturn loopFocus();\n\t\t},\n\t\tenableHomeAndEndKeys: true,\n\t\tdisabledIndices: () => disabledIndices(),\n\t});\n\n\tconst contextValue: ToolbarRootContextValue = {\n\t\tdisabled,\n\t\torientation,\n\t\tpresent: true,\n\t};\n\tconst userClassStyle = resolveClassStyle(props, () => ({\n\t\tdisabled: disabled(),\n\t\torientation: orientation(),\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\"children\",\n\t\t\"disabled\",\n\t\t\"loopFocus\",\n\t\t\"orientation\",\n\t) as Record<string, unknown>;\n\n\tconst internalProps = {\n\t\tref: composite.rootRef,\n\t\trole: \"toolbar\" as const,\n\t\tget \"aria-orientation\"() {\n\t\t\treturn orientation();\n\t\t},\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(\n\t\t\tmergeRootProps(internalProps, composite.props),\n\t\t\tuserClassStyle,\n\t\t),\n\t\tuserHtmlProps,\n\t);\n\n\tconst Tag = dynamic(() => props.as ?? \"div\");\n\treturn (\n\t\t<Tag {...merged}>\n\t\t\t<ToolbarRootContext value={contextValue}>\n\t\t\t\t<CompositeList<ToolbarRootItemMetadata>\n\t\t\t\t\telementsRef={composite.elementsRef}\n\t\t\t\t\tonMapChange={(map) => {\n\t\t\t\t\t\tonMapChange(\n\t\t\t\t\t\t\tmap as Map<\n\t\t\t\t\t\t\t\tElement,\n\t\t\t\t\t\t\t\tCompositeMetadata<ToolbarRootItemMetadata> | null\n\t\t\t\t\t\t\t>,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tcomposite.onMapChange(map);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{props.children}\n\t\t\t\t</CompositeList>\n\t\t\t</ToolbarRootContext>\n\t\t</Tag>\n\t);\n}\n"],"mappings":"AACA,SAASA,OAAO,QAAQ,cAAc;AACtC,SAASC,UAAU,EAAEC,YAAY,EAAEC,IAAI,QAAQ,UAAU;AACzD,SAASC,YAAY,QAAQ,qDAAqD;AAElF,SAASC,aAAa,QAAQ,2CAA2C;AACzE,SAASC,gBAAgB,QAAQ,0CAA0C;AAC3E,SAASC,cAAc,QAAQ,+BAA+B;AAC9D,SAASC,iBAAiB,QAAQ,kCAAkC;AAEpE,SACCC,kBAAkB,QAGZ,2BAA2B;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA+BA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,WAAWA,CAACC,KAAuB,EAAe;EACjE,MAAMC,QAAQ,GAAGA,CAAA,KAAeD,KAAK,CAACC,QAAQ,KAAK,IAAI;EACvD,MAAMC,WAAW,GAAGA,CAAA,KAAmBF,KAAK,CAACE,WAAW,IAAI,YAAY;EACxE,MAAMC,SAAS,GAAGA,CAAA,KAAeH,KAAK,CAACG,SAAS,IAAI,IAAI;EAExD,MAAMC,SAAS,GAAGX,YAAY,CAAC,CAAC;EAEhC,MAAM,CAACY,SAAS,EAAEC,YAAY,CAAC,GAAGf,YAAY,CAE5C,IAAIgB,GAAG,CAAC,CAAC,EAAE;IAAEC,IAAI,EAAE,mBAAmB;IAAEC,UAAU,EAAE;EAAK,CAAC,CAAC;EAE7D,MAAMC,WAAW,GAChBC,GAAoE,IAC1D;IACVL,YAAY,CAACK,GAAG,CAAC;EAClB,CAAC;EAED,MAAMC,eAAe,GAAGtB,UAAU,CACjC,MAAgB;IACf,MAAMqB,GAAG,GAAGN,SAAS,CAAC,CAAC;IACvB,IAAIM,GAAG,CAACE,IAAI,KAAK,CAAC,EAAE,OAAO,EAAE;IAC7B,MAAMC,GAAa,GAAG,EAAE;IACxB,KAAK,MAAMC,KAAK,IAAIJ,GAAG,CAACK,MAAM,CAAC,CAAC,EAAE;MACjC,MAAMC,GAAG,GAAGF,KAAK,EAAEG,KAAK;MACxB,IACCH,KAAK,IAAI,IAAI,IACbA,KAAK,CAACI,qBAAqB,KAAK,KAAK,IACrC,OAAOF,GAAG,KAAK,QAAQ,EACtB;QACDH,GAAG,CAACM,IAAI,CAACH,GAAG,CAAC;MACd;IACD;IACA,OAAOH,GAAG;EACX,CAAC,EACD;IAAEN,IAAI,EAAE;EAA0B,CACnC,CAAC;EAED,MAAMa,SAAS,GAAG1B,gBAAgB,CAAC;IAClCS,SAAS;IACT,IAAIF,WAAWA,CAAA,EAAG;MACjB,OAAOA,WAAW,CAAC,CAAC;IACrB,CAAC;IACD,IAAIC,SAASA,CAAA,EAAG;MACf,OAAOA,SAAS,CAAC,CAAC;IACnB,CAAC;IACDmB,oBAAoB,EAAE,IAAI;IAC1BV,eAAe,EAAEA,CAAA,KAAMA,eAAe,CAAC;EACxC,CAAC,CAAC;EAEF,MAAMW,YAAqC,GAAG;IAC7CtB,QAAQ;IACRC,WAAW;IACXsB,OAAO,EAAE;EACV,CAAC;EACD,MAAMC,cAAc,GAAG5B,iBAAiB,CAACG,KAAK,EAAE,OAAO;IACtDC,QAAQ,EAAEA,QAAQ,CAAC,CAAC;IACpBC,WAAW,EAAEA,WAAW,CAAC;EAC1B,CAAC,CAAC,CAAC;EAEH,MAAMwB,aAAa,GAAGlC,IAAI,CACzBQ,KAAK,EACL,IAAI,EACJ,OAAO,EACP,OAAO,EACP,OAAO,EACP,UAAU,EACV,UAAU,EACV,WAAW,EACX,aACD,CAA4B;EAE5B,MAAM2B,aAAa,GAAG;IACrBC,GAAG,EAAEP,SAAS,CAACQ,OAAO;IACtBC,IAAI,EAAE,SAAkB;IACxB,IAAI,kBAAkBC,CAAA,EAAG;MACxB,OAAO7B,WAAW,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,kBAAkB8B,CAAA,EAAG;MACxB,OAAO9B,WAAW,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,eAAe+B,CAAA,EAAmB;MACrC,OAAOhC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAGiC,SAAS;IACnC;EACD,CAAC;EAED,MAAMC,MAAM,GAAGvC,cAAc,CAC5BA,cAAc,CACbA,cAAc,CAAC+B,aAAa,EAAEN,SAAS,CAACrB,KAAK,CAAC,EAC9CyB,cACD,CAAC,EACDC,aACD,CAAC;EAED,MAAMU,GAAG,GAAG/C,OAAO,CAAC,MAAMW,KAAK,CAACqC,EAAE,IAAI,KAAK,CAAC;EAC5C,OACC,CAAC,GAAG,CAAC,IAAIF,MAAM,CAAC;AAClB,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAACZ,YAAY,CAAC;AAC3C,IAAI,CAAC,aAAa,CACb,WAAW,CAAC,CAACF,SAAS,CAACiB,WAAW,CAAC,CACnC,WAAW,CAAC,CAAE3B,GAAG,IAAK;QACrBD,WAAW,CACVC,GAID,CAAC;QACDU,SAAS,CAACX,WAAW,CAACC,GAAG,CAAC;MAC3B,CAAC,CAAC;AAEP,KAAK,CAACX,KAAK,CAACuC,QAAQ;AACpB,IAAI,EAAE,aAAa;AACnB,GAAG,EAAE,kBAAkB;AACvB,EAAE,EAAE,GAAG,CAAC;AAER","ignoreList":[]}