{"version":3,"file":"builds-table-D78yU-UW.mjs","names":["label"],"sources":["../src/components/raw-data.tsx","../src/components/builds-table.tsx"],"sourcesContent":["export function RawDataPreview({\n  data,\n  open,\n  summary,\n}: {\n  data: unknown;\n  open?: boolean;\n  summary?: JSX.Element;\n}) {\n  if (summary) {\n    return (\n      <details open={open}>\n        <summary>{summary}</summary>\n        <pre safe class=\"raw-data\">\n          {JSON.stringify(data, null, 2)}\n        </pre>\n      </details>\n    );\n  }\n\n  return (\n    <pre safe class=\"raw-data\">\n      {JSON.stringify(data, null, 2)}\n    </pre>\n  );\n}\n","import { getStore } from \"../utils/store\";\nimport { Table } from \"./table\";\nimport { urlBuilder } from \"../utils/url-builder\";\nimport { BuildType } from \"../models/builds\";\nimport { ProjectType } from \"../models/projects\";\nimport { LabelType } from \"../models/labels\";\n\nexport interface BuildTableProps {\n  caption?: JSX.Element;\n  builds: Array<BuildType>;\n  project: ProjectType;\n  labels: LabelType[] | undefined;\n  toolbar?: JSX.Element;\n}\n\nexport async function BuildTable({\n  caption,\n  toolbar,\n  builds,\n  project,\n  labels,\n}: BuildTableProps) {\n  const { locale } = getStore();\n\n  return (\n    <Table\n      caption={caption ?? `Builds (${builds.length})`}\n      toolbar={toolbar}\n      data={builds}\n      columns={[\n        {\n          id: \"sha\",\n          header: \"SHA\",\n          cell: (item) => {\n            const labelSlug = item.label.split(\",\").at(0) || item.label;\n            return (\n              <a\n                safe\n                href={urlBuilder.buildSHA(project.id, item.sha, labelSlug)}\n              >\n                {item.sha.slice(0, 7)}\n              </a>\n            );\n          },\n        },\n        labels\n          ? {\n              id: \"label\",\n              header: \"Labels\",\n              cell: (item) => {\n                return (\n                  <div>\n                    {item.label.split(\",\").map((labelSlug, index, arr) => {\n                      const label = labels.find(\n                        (label) => label.slug === labelSlug\n                      );\n                      return (\n                        <>\n                          <a\n                            safe\n                            href={urlBuilder.labelSlug(project.id, labelSlug)}\n                            title={labelSlug}\n                          >\n                            {label\n                              ? `${label.value} (${label.type})`\n                              : labelSlug}\n                          </a>\n                          {index === arr.length - 1 ? null : <span>, </span>}\n                        </>\n                      );\n                    })}\n                  </div>\n                );\n              },\n            }\n          : undefined,\n        {\n          id: \"storybook\",\n          header: \"Storybook\",\n          cell: (item) => {\n            return (\n              <div style={{ display: \"flex\", gap: \"1rem\" }}>\n                <a\n                  href={urlBuilder.storybookIndexHtml(project.id, item.sha)}\n                  target=\"_blank\"\n                >\n                  View\n                </a>\n                <a\n                  href={urlBuilder.storybookZip(project.id, item.sha)}\n                  target=\"_blank\"\n                  download={`storybook-${project.id}-${item.sha}.zip`}\n                >\n                  Download\n                </a>\n              </div>\n            );\n          },\n        },\n        {\n          id: \"test\",\n          header: \"Tests\",\n          cell: (item) => {\n            return (\n              <div style={{ display: \"flex\", gap: \"1rem\" }}>\n                <a\n                  href={urlBuilder.storybookTestReport(project.id, item.sha)}\n                  target=\"_blank\"\n                >\n                  Test Report\n                </a>\n                <a\n                  href={urlBuilder.storybookCoverage(project.id, item.sha)}\n                  target=\"_blank\"\n                >\n                  Coverage\n                </a>\n              </div>\n            );\n          },\n        },\n        {\n          id: \"gitHub\",\n          header: \"GitHub\",\n          cell: (item) => {\n            return (\n              <div style={{ display: \"flex\", gap: \"1rem\" }}>\n                <a\n                  href={urlBuilder.gitHub(\n                    project.gitHubRepo,\n                    \"commit\",\n                    item.sha\n                  )}\n                  target=\"_blank\"\n                >\n                  Commit\n                </a>\n              </div>\n            );\n          },\n        },\n        { id: \"message\", header: \"Message\" },\n        {\n          id: \"authorName\",\n          header: \"Author\",\n          cell: (item) => (\n            <span safe title={item.authorEmail}>\n              {item.authorName || \"Unknown\"}\n            </span>\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":"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"}