{"version":3,"names":["dynamic","createRenderEffect","omit","onCleanup","Show","composeRefs","userRef","mergeRootProps","resolveClassStyle","useScrollAreaRootContext","ScrollAreaCorner","props","context","userStyling","userProps","localRef","el","cornerRef","current","hiddenState","corner","hidden","undefined","internalSlot","style","size","cornerSize","position","bottom","width","height","styledUserProps","merged","Tag","as"],"sources":["scroll-area-corner.tsx"],"sourcesContent":["import type { JSX, ValidComponent } from \"@solidjs/web\";\nimport { dynamic } from \"@solidjs/web\";\nimport { createRenderEffect, omit, onCleanup, Show } from \"solid-js\";\nimport { composeRefs, userRef } from \"../../internals/compose-refs\";\nimport { mergeRootProps } from \"../../internals/merge-root-props\";\nimport { resolveClassStyle } from \"../../internals/resolve-class-style\";\nimport type { BaseUIComponentProps } from \"../../internals/types\";\nimport { useScrollAreaRootContext } from \"../root/scroll-area-root-context.ts\";\n\n// biome-ignore lint/complexity/noBannedTypes: matches Base UI React — corner exposes no state fields, but a named type lets consumers reference `ScrollArea.Corner.State`.\nexport type ScrollAreaCornerState = {};\n\nexport interface ScrollAreaCornerProps\n\textends BaseUIComponentProps<\"div\", ScrollAreaCornerState> {\n\t/** Tag/component to render. Defaults to `\"div\"`. */\n\tas?: ValidComponent;\n}\n\n/**\n * Small square sitting at the intersection of the two scrollbars. Renders\n * a `<div>` element (or `as` override), or nothing when both scrollbars are\n * visible is false.\n *\n * §1 wave 3: replaces `renderElement` with `dynamic(() => props.as ?? \"div\")`.\n */\nexport function ScrollAreaCorner(props: ScrollAreaCornerProps): JSX.Element {\n\tconst context = useScrollAreaRootContext();\n\n\tconst userStyling = resolveClassStyle(props, () => ({}));\n\n\tconst userProps = omit(props, \"class\", \"style\", \"attrs\", \"as\");\n\n\tconst localRef = (el: HTMLDivElement | null): void => {\n\t\tcontext.cornerRef.current = el;\n\t};\n\n\t// `<Show>` swaps its children by unmounting the old branch without firing\n\t// the ref callback with `null`, so the shared `cornerRef.current` would\n\t// dangle at a detached node. Ref callbacks run ownerless in Solid 2\n\t// (`onCleanup` there is a no-op — `[NO_OWNER_CLEANUP]`), so the cleanup\n\t// lives in owned scopes instead: a render effect mirroring the `<Show>`\n\t// condition handles branch swaps, and onCleanup handles disposal.\n\tcreateRenderEffect(\n\t\t() => context.hiddenState().corner,\n\t\t(hidden) => {\n\t\t\tif (hidden) {\n\t\t\t\tcontext.cornerRef.current = null;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t);\n\tonCleanup(() => {\n\t\tcontext.cornerRef.current = null;\n\t});\n\n\tconst internalSlot = {\n\t\tget style(): JSX.CSSProperties {\n\t\t\tconst size = context.cornerSize();\n\t\t\treturn {\n\t\t\t\tposition: \"absolute\",\n\t\t\t\tbottom: 0,\n\t\t\t\t\"inset-inline-end\": 0,\n\t\t\t\twidth: `${size.width}px`,\n\t\t\t\theight: `${size.height}px`,\n\t\t\t};\n\t\t},\n\t};\n\n\tconst styledUserProps = mergeRootProps(userStyling, userProps);\n\n\tconst merged = mergeRootProps(internalSlot, styledUserProps);\n\n\tconst Tag = dynamic(() => props.as ?? \"div\");\n\treturn (\n\t\t<Show when={!context.hiddenState().corner}>\n\t\t\t<Tag {...merged} ref={composeRefs(localRef, userRef(props))} />\n\t\t</Show>\n\t);\n}\n"],"mappings":"AACA,SAASA,OAAO,QAAQ,cAAc;AACtC,SAASC,kBAAkB,EAAEC,IAAI,EAAEC,SAAS,EAAEC,IAAI,QAAQ,UAAU;AACpE,SAASC,WAAW,EAAEC,OAAO,QAAQ,8BAA8B;AACnE,SAASC,cAAc,QAAQ,kCAAkC;AACjE,SAASC,iBAAiB,QAAQ,qCAAqC;AAEvE,SAASC,wBAAwB,QAAQ,qCAAqC;;AAE9E;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAACC,KAA4B,EAAe;EAC3E,MAAMC,OAAO,GAAGH,wBAAwB,CAAC,CAAC;EAE1C,MAAMI,WAAW,GAAGL,iBAAiB,CAACG,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;EAExD,MAAMG,SAAS,GAAGZ,IAAI,CAACS,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;EAE9D,MAAMI,QAAQ,GAAIC,EAAyB,IAAW;IACrDJ,OAAO,CAACK,SAAS,CAACC,OAAO,GAAGF,EAAE;EAC/B,CAAC;;EAED;EACA;EACA;EACA;EACA;EACA;EACAf,kBAAkB,CACjB,MAAMW,OAAO,CAACO,WAAW,CAAC,CAAC,CAACC,MAAM,EACjCC,MAAM,IAAK;IACX,IAAIA,MAAM,EAAE;MACXT,OAAO,CAACK,SAAS,CAACC,OAAO,GAAG,IAAI;IACjC;IACA,OAAOI,SAAS;EACjB,CACD,CAAC;EACDnB,SAAS,CAAC,MAAM;IACfS,OAAO,CAACK,SAAS,CAACC,OAAO,GAAG,IAAI;EACjC,CAAC,CAAC;EAEF,MAAMK,YAAY,GAAG;IACpB,IAAIC,KAAKA,CAAA,EAAsB;MAC9B,MAAMC,IAAI,GAAGb,OAAO,CAACc,UAAU,CAAC,CAAC;MACjC,OAAO;QACNC,QAAQ,EAAE,UAAU;QACpBC,MAAM,EAAE,CAAC;QACT,kBAAkB,EAAE,CAAC;QACrBC,KAAK,EAAE,GAAGJ,IAAI,CAACI,KAAK,IAAI;QACxBC,MAAM,EAAE,GAAGL,IAAI,CAACK,MAAM;MACvB,CAAC;IACF;EACD,CAAC;EAED,MAAMC,eAAe,GAAGxB,cAAc,CAACM,WAAW,EAAEC,SAAS,CAAC;EAE9D,MAAMkB,MAAM,GAAGzB,cAAc,CAACgB,YAAY,EAAEQ,eAAe,CAAC;EAE5D,MAAME,GAAG,GAAGjC,OAAO,CAAC,MAAMW,KAAK,CAACuB,EAAE,IAAI,KAAK,CAAC;EAC5C,OACC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAACtB,OAAO,CAACO,WAAW,CAAC,CAAC,CAACC,MAAM,CAAC;AAC5C,GAAG,CAAC,GAAG,CAAC,IAAIY,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC3B,WAAW,CAACU,QAAQ,EAAET,OAAO,CAACK,KAAK,CAAC,CAAC,CAAC;AAC/D,EAAE,EAAE,IAAI,CAAC;AAET","ignoreList":[]}