{"version":3,"file":"projects-table-B_qW44SW.mjs","names":[],"sources":["../src/components/projects-table.tsx"],"sourcesContent":["import { getStore } from \"../utils/store\";\nimport { Table } from \"./table\";\nimport { urlBuilder } from \"../utils/url-builder\";\nimport { ProjectType } from \"../models/projects\";\nimport { DEFAULT_GITHUB_BRANCH } from \"../utils/constants\";\n\nexport interface ProjectsTableProps {\n  caption?: JSX.Element;\n  toolbar?: JSX.Element;\n  projects: Array<ProjectType>;\n}\n\nexport async function ProjectsTable({\n  caption,\n  toolbar,\n  projects,\n}: ProjectsTableProps) {\n  const { locale } = getStore();\n\n  return (\n    <Table\n      caption={caption ?? `Projects (${projects.length})`}\n      toolbar={toolbar}\n      data={projects}\n      columns={[\n        {\n          id: \"id\",\n          header: \"ID\",\n          cell: (item) => {\n            return (\n              <a safe href={urlBuilder.projectId(item.id)}>\n                {item.id}\n              </a>\n            );\n          },\n        },\n        { id: \"name\", header: \"Name\" },\n        {\n          id: \"gitHub\",\n          header: \"GitHub\",\n          cell: (item) => {\n            const pathnames = item.gitHubPath\n              ? [\n                  \"tree\",\n                  item.gitHubDefaultBranch || DEFAULT_GITHUB_BRANCH,\n                  item.gitHubPath,\n                ]\n              : [];\n            const href = urlBuilder.gitHub(item.gitHubRepo, ...pathnames);\n\n            return (\n              <a safe href={href} target=\"_blank\" rel=\"noopener noreferrer\">\n                {item.gitHubRepo}\n              </a>\n            );\n          },\n        },\n        {\n          id: \"build\",\n          header: \"Latest build\",\n          cell: (item) => {\n            if (!item.buildSHA) {\n              return <span class=\"description\">No build available</span>;\n            }\n\n            return (\n              <div style={{ display: \"flex\", gap: \"1rem\", flexWrap: \"wrap\" }}>\n                <span safe style={{ fontFamily: \"monospace\" }}>\n                  [{item.buildSHA.slice(0, 7)}]\n                </span>\n                <a href={urlBuilder.buildSHA(item.id, item.buildSHA)}>Build</a>\n                <a href={urlBuilder.storybookIndexHtml(item.id, item.buildSHA)}>\n                  Storybook\n                </a>\n              </div>\n            );\n          },\n        },\n        {\n          id: \"timestamp\",\n          header: \"Last modified\",\n          cell: (item) => {\n            if (!item.timestamp) {\n              return null;\n            }\n\n            return (\n              <time datetime={item.timestamp} safe>\n                {new Date(item.timestamp).toLocaleString(locale)}\n              </time>\n            );\n          },\n        },\n      ]}\n    />\n  );\n}\n"],"mappings":";;;;;;AAYA,eAAsB,cAAc,EAClC,SACA,SACA,UACmB,EAAE;CACrB,MAAM,EAAE,QAAQ,GAAG,UAAU;AAE7B,oDACG;EACC,SAAS,WAAW,CAAC,UAAU,EAAE,SAAS,OAAO,CAAC,CAAC;EAC1C;EACT,MAAM;EACN,SAAS;GACP;IACE,IAAI;IACJ,QAAQ;IACR,MAAM,CAAC,SAAS;AACd,wDACG;MAAE;MAAK,MAAM,WAAW,UAAU,KAAK,GAAG;gBACxC,KAAK;OACJ;IAEP;GACF;GACD;IAAE,IAAI;IAAQ,QAAQ;GAAQ;GAC9B;IACE,IAAI;IACJ,QAAQ;IACR,MAAM,CAAC,SAAS;KACd,MAAM,YAAY,KAAK,aACnB;MACE;MACA,KAAK,uBAAuB;MAC5B,KAAK;KACN,IACD,CAAE;KACN,MAAM,OAAO,WAAW,OAAO,KAAK,YAAY,GAAG,UAAU;AAE7D,wDACG;MAAE;MAAW;MAAM,QAAO;MAAS,KAAI;gBACrC,KAAK;OACJ;IAEP;GACF;GACD;IACE,IAAI;IACJ,QAAQ;IACR,MAAM,CAAC,SAAS;AACd,SAAI,CAAC,KAAK,SACR,oDAAQ;MAAK,OAAM;gBAAc;OAAyB;AAG5D,yDACG;MAAI,OAAO;OAAE,SAAS;OAAQ,KAAK;OAAQ,UAAU;MAAQ;;oDAC3D;QAAK;QAAK,OAAO,EAAE,YAAY,YAAa;;SAAE;SAC3C,KAAK,SAAS,MAAM,GAAG,EAAE;SAAC;;SACvB;mDACN;QAAE,MAAM,WAAW,SAAS,KAAK,IAAI,KAAK,SAAS;kBAAE;SAAS;mDAC9D;QAAE,MAAM,WAAW,mBAAmB,KAAK,IAAI,KAAK,SAAS;kBAAE;SAE5D;;OACA;IAET;GACF;GACD;IACE,IAAI;IACJ,QAAQ;IACR,MAAM,CAAC,SAAS;AACd,SAAI,CAAC,KAAK,UACR,QAAO;AAGT,wDACG;MAAK,UAAU,KAAK;MAAW;gBAC7B,IAAI,KAAK,KAAK,WAAW,eAAe,OAAO;OAC3C;IAEV;GACF;EACF;GACD;AAEL"}