{"version":3,"file":"ContributionsList-BcE4Bvmc.js","sources":["../../../app/javascript/components/authors/MoreContributions.tsx","../../../app/javascript/components/authors/ContributionsList.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { AvatarThemeProps } from \"hardcover-ui/theme/components/avatar\";\nimport { Contribution } from \"./ContributionsList\";\nimport { AuthorSerializersContribution } from \"types/serializers\";\n\ninterface Props {\n contributions: AuthorSerializersContribution[];\n link?: boolean;\n avatar?: boolean;\n lazy?: boolean;\n separator?: string;\n size?: AvatarThemeProps[\"size\"];\n uid?: string;\n}\n\nexport default function MoreContributions({\n contributions,\n link,\n avatar,\n lazy,\n separator,\n uid,\n size,\n}: Props) {\n const [expanded, setExpanded] = useState(false);\n\n if (!contributions || contributions.length === 0) {\n return <>;\n }\n\n if (!expanded) {\n return (\n setExpanded(true)}\n className=\"underline hover:no-underline\"\n >\n +{contributions.length} more\n \n );\n }\n return (\n <>\n {contributions.map((contribution, index) => (\n \n ))}\n \n );\n}\n","import { ReactNode } from \"react\";\nimport { isPrimaryContribution, isAuthor } from \"lib/contributions\";\nimport Text from \"hardcover-ui/components/Text\";\nimport Avatar from \"hardcover-ui/components/Avatar\";\nimport { AvatarThemeProps } from \"hardcover-ui/theme/components/avatar\";\nimport uniqBy from \"lodash/uniqBy\";\nimport MoreContributions from \"./MoreContributions\";\nimport TextLink from \"hardcover-ui/components/TextLink\";\nimport { AuthorSerializersAuthorByline, AuthorSerializersContribution } from \"types/serializers\";\n\nexport interface Props {\n contributions: AuthorSerializersContribution[];\n link?: boolean;\n className?: string;\n primary?: boolean;\n byLine?: boolean;\n avatar?: boolean;\n size?: AvatarThemeProps[\"size\"];\n lazy?: boolean;\n separator?: string;\n uid?: string;\n max?: number;\n expand?: boolean;\n}\n\nconst ContributionsListWrapper = ({\n children,\n byLine,\n}: {\n children: ReactNode;\n byLine: boolean;\n}) => {\n return (\n \n {byLine && (\n \n By\n \n )}\n {children}\n \n );\n};\n\nconst ContributionWrapperClass = \"flex-inline flex-row items-center\";\nconst ContributionWrapper = ({\n children,\n author,\n link,\n}: {\n children: ReactNode;\n author: AuthorSerializersAuthorByline;\n link: boolean;\n}) => {\n if (link) {\n return (\n \n {children}\n \n );\n }\n return {children};\n};\nconst Contribution = ({\n contribution,\n avatar,\n link,\n size,\n lazy,\n separator = \",\",\n isLast,\n}: {\n contribution: AuthorSerializersContribution;\n avatar: boolean;\n link: boolean;\n size?: AvatarThemeProps[\"size\"];\n lazy?: boolean;\n separator?: string;\n isLast: boolean;\n}) => {\n return (\n \n {avatar && (\n \n )}\n \n {contribution.author.name}\n {contribution.contribution && !isAuthor(contribution) && (\n \n ({contribution.contribution})\n \n )}\n \n {!isLast && <>{separator}}\n \n );\n};\nexport { Contribution };\n\n// Todo: Cleam this up\nconst ContributionsList = ({\n className = \"\",\n contributions,\n link = true,\n primary = true,\n byLine = false,\n avatar = false,\n size = \"sm\",\n lazy = true,\n uid = \"\",\n max = 2,\n separator = \",\",\n expand = false,\n}: Props) => {\n if (!contributions || contributions.length === 0) {\n return <>;\n }\n\n const uniqContributions = uniqBy(\n contributions.filter(\n (contribution) => !primary || isPrimaryContribution(contribution)\n ),\n (contribution) => `${contribution.author.slug}-${contribution.contribution}`\n );\n\n let filteredContributions =\n uniqContributions.length > 0 ? uniqContributions : contributions;\n\n filteredContributions = filteredContributions.slice(0, max);\n const moreContributions = uniqContributions.slice(\n max,\n uniqContributions.length\n );\n\n return (\n
\n \n {filteredContributions.map((contribution, index) => (\n \n ))}\n {uniqContributions.length > max ? (\n <>\n {expand ? (\n \n ) : (\n +{uniqContributions.length - max} more\n )}\n \n ) : (\n false\n )}\n \n
\n );\n};\n\nexport default ContributionsList;\n"],"names":["MoreContributions","contributions","link","avatar","lazy","separator","uid","size","expanded","setExpanded","useState","jsx","Fragment","contribution","index","Contribution","jsxs","ContributionsListWrapper","children","byLine","Text","ContributionWrapperClass","ContributionWrapper","author","TextLink","isLast","Avatar","isAuthor","ContributionsList","className","primary","max","expand","uniqContributions","uniqBy","isPrimaryContribution","filteredContributions","moreContributions"],"mappings":"2MAeA,SAAwBA,EAAkB,CACxC,cAAAC,EACA,KAAAC,EACA,OAAAC,EACA,KAAAC,EACA,UAAAC,EACA,IAAAC,EACA,KAAAC,CACF,EAAU,CACR,KAAM,CAACC,EAAUC,CAAW,EAAIC,WAAS,EAAK,EAE9C,MAAI,CAACT,GAAiBA,EAAc,SAAW,EACpCU,EAAA,IAAAC,WAAA,CAAA,CAAA,EAGNJ,EAaAG,EAAA,IAAAC,EAAA,SAAA,CAAA,SAAAX,EAAc,IAAI,CAACY,EAAcC,IAChCH,EAAA,IAACI,EAAA,CACC,aAAAF,EACA,KAAAX,EACA,OAAAC,EAEA,KAAAI,EACA,KAAAH,EACA,UAAAC,EACA,OAAQS,IAAUb,EAAc,OAAS,CAAA,EAJpC,gBAAgBK,CAAG,IAAIO,EAAa,OAAO,IAAI,EAMvD,CAAA,CACH,CAAA,EAvBEG,EAAA,KAAC,SAAA,CACC,KAAK,SACL,QAAS,IAAMP,EAAY,EAAI,EAC/B,UAAU,+BACX,SAAA,CAAA,IACGR,EAAc,OAAO,OAAA,CAAA,CAAA,CAoB/B,CChCA,MAAMgB,EAA2B,CAAC,CAChC,SAAAC,EACA,OAAAC,CACF,IAKIH,EAAA,KAAC,OAAK,CAAA,UAAU,2CACb,SAAA,CAAAG,SACEC,EAAK,CAAA,QAAQ,UAAU,UAAU,OAAO,SAEzC,KAAA,EAEDF,CACH,CAAA,CAAA,EAIEG,EAA2B,oCAC3BC,EAAsB,CAAC,CAC3B,SAAAJ,EACA,OAAAK,EACA,KAAArB,CACF,IAKMA,EAEAS,EAAA,IAACa,EAAA,CACC,KAAM,YAAYD,EAAO,IAAI,GAC7B,UAAWF,EAEV,SAAAH,CAAA,CAAA,EAICP,EAAAA,IAAA,OAAA,CAAK,UAAWU,EAA2B,SAAAH,CAAS,CAAA,EAExDH,EAAe,CAAC,CACpB,aAAAF,EACA,OAAAV,EACA,KAAAD,EACA,KAAAK,EACA,KAAAH,EACA,UAAAC,EAAY,IACZ,OAAAoB,CACF,IAUIT,EAAA,KAAC,OAAK,CAAA,UAAU,4BACb,SAAA,CACCb,GAAAQ,EAAA,IAACe,EAAA,CACC,MAAOb,EAAa,OAAO,MAC3B,KAAAN,EACA,IAAKM,EAAa,OAAO,KACzB,QAAQ,WACR,UAAU,oBACV,KAAAT,EACA,OAAM,EAAA,CACR,EAEDY,EAAA,KAAAM,EAAA,CAAoB,OAAQT,EAAa,OAAQ,KAAAX,EAChD,SAAA,CAACS,EAAA,IAAA,OAAA,CAAM,SAAaE,EAAA,OAAO,KAAK,EAC/BA,EAAa,cAAgB,CAACc,EAASd,CAAY,GAClDG,EAAA,KAACI,EAAK,CAAA,QAAQ,YAAY,UAAU,mBAAmB,SAAA,CAAA,IACnDP,EAAa,aAAa,GAAA,EAC9B,CAAA,EAEJ,EACC,CAACY,GAAUd,EAAAA,IAAAC,EAAAA,SAAA,CAAG,SAAUP,CAAA,CAAA,CAC3B,CAAA,CAAA,EAMEuB,EAAoB,CAAC,CACzB,UAAAC,EAAY,GACZ,cAAA5B,EACA,KAAAC,EAAO,GACP,QAAA4B,EAAU,GACV,OAAAX,EAAS,GACT,OAAAhB,EAAS,GACT,KAAAI,EAAO,KACP,KAAAH,EAAO,GACP,IAAAE,EAAM,GACN,IAAAyB,EAAM,EACN,UAAA1B,EAAY,IACZ,OAAA2B,EAAS,EACX,IAAa,CACX,GAAI,CAAC/B,GAAiBA,EAAc,SAAW,EAC7C,OAASU,EAAA,IAAAC,WAAA,CAAA,CAAA,EAGX,MAAMqB,EAAoBC,EACxBjC,EAAc,OACXY,GAAiB,CAACiB,GAAWK,EAAsBtB,CAAY,CAClE,EACCA,GAAiB,GAAGA,EAAa,OAAO,IAAI,IAAIA,EAAa,YAAY,EAAA,EAG5E,IAAIuB,EACFH,EAAkB,OAAS,EAAIA,EAAoBhC,EAE7BmC,EAAAA,EAAsB,MAAM,EAAGL,CAAG,EAC1D,MAAMM,EAAoBJ,EAAkB,MAC1CF,EACAE,EAAkB,MAAA,EAGpB,OACGtB,EAAA,IAAA,MAAA,CAAI,UAAAkB,EACH,SAAAb,EAAAA,KAACC,GAAyB,OAAAE,EACvB,SAAA,CAAsBiB,EAAA,IAAI,CAACvB,EAAcC,IACxCH,EAAA,IAACI,EAAA,CACC,aAAAF,EACA,KAAAX,EACA,OAAAC,EAEA,KAAAI,EACA,KAAAH,EACA,UAAAC,EACA,OACES,IAAUsB,EAAsB,OAAS,GACzCC,EAAkB,SAAW,CAAA,EAN1B,gBAAgB/B,CAAG,IAAIO,EAAa,OAAO,IAAI,EAAA,CASvD,EACAoB,EAAkB,OAASF,EAC1BpB,EAAAA,IAAAC,EAAAA,SAAA,CACG,SACCoB,EAAArB,EAAA,IAACX,EAAA,CACC,cAAeqC,EACf,IAAA/B,EACA,KAAAJ,EACA,OAAAC,EACA,KAAAI,EACA,KAAAH,EACA,UAAAC,CAAA,CAAA,SAGD,OAAK,CAAA,SAAA,CAAA,IAAE4B,EAAkB,OAASF,EAAI,OAAA,CAAK,CAAA,CAEhD,CAAA,EAEA,EAAA,CAEJ,CAAA,CACF,CAAA,CAEJ"}