{"version":3,"sources":["../../src/utils/index.ts","../../src/utils/base.ts","../../src/utils/linkUtils.tsx","../../src/utils/textUtils.ts"],"sourcesContent":["export * from './base';\nexport * from './linkUtils';\nexport * from './textUtils';\n","export function dictionaryToArray<T>(dict: Record<string | number | symbol, T>): Array<T> {\n    return Object.keys(dict).map((key) => dict[key]);\n}\n","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","const capitalize = (s: string) => (!s.length ? '' : s[0].toUpperCase() + s.slice(1));\nconst initialize = (s: string) => (!s.length ? '' : s[0] + '.');\n\nexport function shortenName(name: string) {\n    return name\n        .split(' ')\n        .filter((a) => a.length > 0)\n        .map((w, i, words) => (i === words.length - 1 ? capitalize(w) : initialize(capitalize(w))))\n        .join(' ');\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,SAAS,kBAAqB,MAAqD;AACtF,SAAO,OAAO,KAAK,IAAI,EAAE,IAAI,CAAC,QAAQ,KAAK,GAAG,CAAC;AACnD;;;ACDA,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;;;ACxDA,IAAM,aAAa,CAAC,MAAe,CAAC,EAAE,SAAS,KAAK,EAAE,CAAC,EAAE,YAAY,IAAI,EAAE,MAAM,CAAC;AAClF,IAAM,aAAa,CAAC,MAAe,CAAC,EAAE,SAAS,KAAK,EAAE,CAAC,IAAI;AAEpD,SAAS,YAAY,MAAc;AACtC,SAAO,KACF,MAAM,GAAG,EACT,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,EAC1B,IAAI,CAAC,GAAG,GAAG,UAAW,MAAM,MAAM,SAAS,IAAI,WAAW,CAAC,IAAI,WAAW,WAAW,CAAC,CAAC,CAAE,EACzF,KAAK,GAAG;AACjB;","names":[]}