{"version":3,"sources":["../../src/utils/linkUtils.tsx"],"sourcesContent":["import type { LinkProps, ThemeOptions } from '@mui/material';\nimport { Link } from '@mui/material';\nimport { deepmerge } from '@mui/utils';\nimport { forwardRef, type ForwardRefExoticComponent, type RefAttributes } from 'react';\nimport type { LinkProps as ReactRouterLinkProps } from 'react-router-dom';\n\ntype RouterLinkProps = Pick<ReactRouterLinkProps, 'to' | 'className'>;\ntype RouterLinkType = ForwardRefExoticComponent<\n    Omit<RouterLinkProps, 'ref'> & RefAttributes<HTMLAnchorElement>\n>;\n\nexport const getLinkBehavior = (\n    RouterLink: RouterLinkType\n): ForwardRefExoticComponent<Omit<unknown, 'ref'> & RefAttributes<HTMLAnchorElement>> => {\n    const LinkBehavior = forwardRef<HTMLAnchorElement, LinkProps>((props, ref) => {\n        const { href, ...rest } = props;\n        // Map href (Material UI) -> to (RouterLink like passed in)\n        // The mapping from href -> to isn't clean because MUI allows it to be nullish. Just asserting that it's null here to get TS to allow it\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        return <RouterLink ref={ref} {...rest} to={href!} />;\n    });\n\n    LinkBehavior.displayName = 'LinkBehaviorWrapper';\n    return LinkBehavior;\n};\n\nexport const getRouterOverriddenTheme = (\n    RouterLink: RouterLinkType,\n    overrides: ThemeOptions = {}\n) =>\n    deepmerge(\n        {\n            components: {\n                MuiLink: {\n                    defaultProps: {\n                        component: getLinkBehavior(RouterLink),\n                    } as LinkProps,\n                },\n                MuiButtonBase: {\n                    defaultProps: {\n                        LinkComponent: getLinkBehavior(RouterLink),\n                    },\n                },\n            },\n        },\n        overrides\n    );\n\nexport const MaybeLink = ({ children, href, ...rest }: LinkProps) => {\n    return href?.length ? (\n        <Link href={href} {...rest}>\n            {children}\n        </Link>\n    ) : (\n        children\n    );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAAqB;AACrB,mBAA0B;AAC1B,mBAA+E;AAgBhE;AARR,IAAM,kBAAkB,CAC3B,eACqF;AACrF,QAAM,mBAAe,yBAAyC,CAAC,OAAO,QAAQ;AAC1E,UAAM,EAAE,MAAM,GAAG,KAAK,IAAI;AAI1B,WAAO,4CAAC,cAAW,KAAW,GAAG,MAAM,IAAI,MAAO;AAAA,EACtD,CAAC;AAED,eAAa,cAAc;AAC3B,SAAO;AACX;AAEO,IAAM,2BAA2B,CACpC,YACA,YAA0B,CAAC,UAE3B;AAAA,EACI;AAAA,IACI,YAAY;AAAA,MACR,SAAS;AAAA,QACL,cAAc;AAAA,UACV,WAAW,gBAAgB,UAAU;AAAA,QACzC;AAAA,MACJ;AAAA,MACA,eAAe;AAAA,QACX,cAAc;AAAA,UACV,eAAe,gBAAgB,UAAU;AAAA,QAC7C;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AACJ;AAEG,IAAM,YAAY,CAAC,EAAE,UAAU,MAAM,GAAG,KAAK,MAAiB;AACjE,SAAO,MAAM,SACT,4CAAC,wBAAK,MAAa,GAAG,MACjB,UACL,IAEA;AAER;","names":[]}