{"version":3,"file":"author-list.cjs","sources":["../../src/citations/author-list.ts"],"sourcesContent":["import h from \"@macrostrat/hyper\";\n\nconst Author = function (props) {\n  const { name, highlight } = props;\n\n  if (name === highlight) {\n    return h(\"b.author\", name);\n  }\n  return h(\"span.author\", name);\n};\n\nexport interface AuthorListProps {\n  names: string[];\n  highlight?: string;\n  limit?: number;\n}\n\nconst AuthorList = function (props: AuthorListProps) {\n  const { names, highlight } = props;\n  const A = (name) => h(Author, { name, highlight });\n\n  if (!Array.isArray(names)) {\n    return A(names);\n  }\n\n  const n = names.length;\n  if (n === 0) {\n    return null;\n  }\n  if (n === 1) {\n    return A(names[0]);\n  }\n\n  const limit = props.limit ?? n;\n  const truncated = n > limit;\n\n  const penultimateIx = limit - 2;\n  const L = [];\n\n  for (const [i, name] of names.entries()) {\n    L.push(A(name));\n    L.push(i < penultimateIx && n != 2 ? \", \" : \" \");\n    if (i === penultimateIx - 1 && n != 1 && !truncated) {\n      const lastAuthor = names[penultimateIx];\n      if (!lastAuthor.startsWith(\"and \")) {\n        L.push(\"and \");\n      }\n    }\n    if (i >= limit - 1 && truncated) {\n      L.push(\"et al.\");\n      break;\n    }\n  }\n\n  return h(\"span.author-list\", L);\n};\n\nexport { AuthorList };\n"],"names":["h"],"mappings":";;;;;AAEA,MAAM,SAAS,SAAU,OAAO;AAC9B,QAAM,EAAE,MAAM,UAAA,IAAc;AAE5B,MAAI,SAAS,WAAW;AACtB,WAAOA,WAAAA,QAAE,YAAY,IAAI;AAAA,EAC3B;AACA,SAAOA,WAAAA,QAAE,eAAe,IAAI;AAC9B;AAQA,MAAM,aAAa,SAAU,OAAwB;AACnD,QAAM,EAAE,OAAO,UAAA,IAAc;AAC7B,QAAM,IAAI,CAAC,SAASA,WAAAA,QAAE,QAAQ,EAAE,MAAM,WAAW;AAEjD,MAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,WAAO,EAAE,KAAK;AAAA,EAChB;AAEA,QAAM,IAAI,MAAM;AAChB,MAAI,MAAM,GAAG;AACX,WAAO;AAAA,EACT;AACA,MAAI,MAAM,GAAG;AACX,WAAO,EAAE,MAAM,CAAC,CAAC;AAAA,EACnB;AAEA,QAAM,QAAQ,MAAM,SAAS;AAC7B,QAAM,YAAY,IAAI;AAEtB,QAAM,gBAAgB,QAAQ;AAC9B,QAAM,IAAI,CAAA;AAEV,aAAW,CAAC,GAAG,IAAI,KAAK,MAAM,WAAW;AACvC,MAAE,KAAK,EAAE,IAAI,CAAC;AACd,MAAE,KAAK,IAAI,iBAAiB,KAAK,IAAI,OAAO,GAAG;AAC/C,QAAI,MAAM,gBAAgB,KAAK,KAAK,KAAK,CAAC,WAAW;AACnD,YAAM,aAAa,MAAM,aAAa;AACtC,UAAI,CAAC,WAAW,WAAW,MAAM,GAAG;AAClC,UAAE,KAAK,MAAM;AAAA,MACf;AAAA,IACF;AACA,QAAI,KAAK,QAAQ,KAAK,WAAW;AAC/B,QAAE,KAAK,QAAQ;AACf;AAAA,IACF;AAAA,EACF;AAEA,SAAOA,WAAAA,QAAE,oBAAoB,CAAC;AAChC;;"}