@rivm-loculus-tools/common-frontend 0.1.4 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/dist/_chunks/EmotionCacheService.js +33 -0
  2. package/dist/_chunks/EmotionCacheService.js.map +1 -0
  3. package/dist/_chunks/decorate.js +9 -0
  4. package/dist/_chunks/react.js.map +1 -1
  5. package/dist/classes/services/EmotionCacheService/EmotionCacheService.d.ts +7 -0
  6. package/dist/classes/services/EmotionCacheService/index.d.ts +1 -0
  7. package/dist/classes/services/EmotionCacheService/index.js +1 -0
  8. package/dist/classes/services/FastaDataEventBusService/FastaDataEventBusService.d.ts +1 -3
  9. package/dist/classes/services/FastaDataEventBusService/index.js +6 -8
  10. package/dist/classes/services/FastaDataEventBusService/index.js.map +1 -1
  11. package/dist/components/SearchBar/index.js.map +1 -1
  12. package/dist/components/app/App/App.d.ts +6 -0
  13. package/dist/components/app/App/index.d.ts +1 -0
  14. package/dist/components/app/App/index.js +101 -0
  15. package/dist/components/app/App/index.js.map +1 -0
  16. package/dist/{_chunks/FastaDataImportDialog.js → components/fasta/FastaDataImportDialog/index.js} +3 -3
  17. package/dist/components/fasta/FastaDataImportDialog/index.js.map +1 -0
  18. package/dist/components/{FastaDataImportDialogLoader → fasta/FastaDataImportDialogLoader}/FastaDataImportDialogLoader.d.ts +1 -1
  19. package/dist/components/fasta/FastaDataImportDialogLoader/index.js +71 -0
  20. package/dist/components/fasta/FastaDataImportDialogLoader/index.js.map +1 -0
  21. package/dist/components/fasta/FastaNotLoaded/index.js +54 -0
  22. package/dist/components/fasta/FastaNotLoaded/index.js.map +1 -0
  23. package/dist/components/{FastaPageHeaderCenterComponent → fasta/FastaPageHeaderCenterComponent}/FastaPageHeaderCenterComponent.d.ts +1 -1
  24. package/dist/components/{FastaPageHeaderCenterComponent → fasta/FastaPageHeaderCenterComponent}/index.js +2 -2
  25. package/dist/components/fasta/FastaPageHeaderCenterComponent/index.js.map +1 -0
  26. package/dist/components/fasta/FastaPageHeaderImportButton/index.js +27 -0
  27. package/dist/components/fasta/FastaPageHeaderImportButton/index.js.map +1 -0
  28. package/dist/components/{FastaPageHeaderResetButton → fasta/FastaPageHeaderResetButton}/index.js +1 -1
  29. package/dist/components/fasta/FastaPageHeaderResetButton/index.js.map +1 -0
  30. package/dist/components/ui/GenericErrorMessage/GenericErrorMessage.d.ts +4 -0
  31. package/dist/components/ui/GenericErrorMessage/index.d.ts +1 -0
  32. package/dist/components/ui/GenericErrorMessage/index.js +44 -0
  33. package/dist/components/ui/GenericErrorMessage/index.js.map +1 -0
  34. package/dist/components/ui/I18nWrapper/index.js +21 -0
  35. package/dist/components/ui/I18nWrapper/index.js.map +1 -0
  36. package/dist/components/ui/PageCommon/PageCommon.d.ts +7 -0
  37. package/dist/components/ui/PageCommon/index.d.ts +1 -0
  38. package/dist/components/ui/PageCommon/index.js +54 -0
  39. package/dist/components/ui/PageCommon/index.js.map +1 -0
  40. package/dist/components/ui/PageCommonDrawer/index.d.ts +1 -0
  41. package/dist/components/ui/PageCommonDrawer/index.js +29 -0
  42. package/dist/components/ui/PageCommonDrawer/index.js.map +1 -0
  43. package/dist/components/ui/PageCommonHeader/index.d.ts +1 -0
  44. package/dist/components/ui/PageCommonHeader/index.js +98 -0
  45. package/dist/components/ui/PageCommonHeader/index.js.map +1 -0
  46. package/dist/components/{PageHeaderDocumentationButton → ui/PageHeaderDocumentationButton}/index.js +1 -1
  47. package/dist/components/ui/PageHeaderDocumentationButton/index.js.map +1 -0
  48. package/dist/constants/config.constants.d.ts +9 -0
  49. package/dist/constants/config.constants.js +6 -0
  50. package/dist/constants/config.constants.js.map +1 -0
  51. package/dist/constants/page.constants.js +6 -0
  52. package/dist/constants/page.constants.js.map +1 -0
  53. package/dist/context/commonConfigContext/CommonConfigContext.d.ts +9 -0
  54. package/dist/context/commonConfigContext/CommonConfigContextProvider.d.ts +6 -0
  55. package/dist/context/commonConfigContext/index.d.ts +3 -0
  56. package/dist/context/commonConfigContext/index.js +34 -0
  57. package/dist/context/commonConfigContext/index.js.map +1 -0
  58. package/dist/context/commonConfigContext/useCommonConfigContext.d.ts +3 -0
  59. package/dist/context/pageCommonContext/index.d.ts +2 -0
  60. package/dist/context/pageCommonContext/index.js +24 -0
  61. package/dist/context/pageCommonContext/index.js.map +1 -0
  62. package/dist/hooks/useConfig/index.d.ts +1 -0
  63. package/dist/hooks/useConfig/index.js +7 -0
  64. package/dist/hooks/useConfig/index.js.map +1 -0
  65. package/dist/hooks/useConfig/useConfig.d.ts +2 -0
  66. package/dist/hooks/useUpdateDocumentTitle/index.d.ts +1 -0
  67. package/dist/hooks/useUpdateDocumentTitle/index.js +13 -0
  68. package/dist/hooks/useUpdateDocumentTitle/index.js.map +1 -0
  69. package/dist/hooks/useUpdateDocumentTitle/useUpdateDocumentTitle.d.ts +1 -0
  70. package/dist/models/config.models.d.ts +19 -0
  71. package/dist/models/{fasta.js → fasta.models.js} +2 -2
  72. package/dist/models/fasta.models.js.map +1 -0
  73. package/dist/models/metadata.models.js +0 -0
  74. package/dist/pages/ErrorPage/ErrorPage.d.ts +4 -0
  75. package/dist/pages/ErrorPage/index.d.ts +1 -0
  76. package/dist/pages/ErrorPage/index.js +17 -0
  77. package/dist/pages/ErrorPage/index.js.map +1 -0
  78. package/dist/stores/fastaDataStore/fastaDataStore.d.ts +2 -2
  79. package/dist/stores/fastaDataStore/index.js +17 -15
  80. package/dist/stores/fastaDataStore/index.js.map +1 -1
  81. package/dist/theme/index.js.map +1 -1
  82. package/dist/utils/DependencyContainerUtil/DependencyContainerUtil.d.ts +6 -0
  83. package/dist/utils/DependencyContainerUtil/index.d.ts +1 -0
  84. package/dist/utils/DependencyContainerUtil/index.js +18 -0
  85. package/dist/utils/DependencyContainerUtil/index.js.map +1 -0
  86. package/dist/utils/DownloadUtil/index.js.map +1 -1
  87. package/dist/utils/ErrorUtil/index.js.map +1 -1
  88. package/dist/utils/FastaUtil/FastaUtil.d.ts +1 -1
  89. package/dist/utils/FastaUtil/index.js +12 -19
  90. package/dist/utils/FastaUtil/index.js.map +1 -1
  91. package/dist/utils/MetaDataUtil/MetaDataUtil.d.ts +1 -1
  92. package/dist/utils/MetaDataUtil/index.js.map +1 -1
  93. package/dist/utils/StandardConfigUtil/StandardConfigUtil.d.ts +4 -0
  94. package/dist/utils/StandardConfigUtil/index.d.ts +1 -0
  95. package/dist/utils/StandardConfigUtil/index.js +17 -0
  96. package/dist/utils/StandardConfigUtil/index.js.map +1 -0
  97. package/dist/utils/UrlUtil/index.js +6 -5
  98. package/dist/utils/UrlUtil/index.js.map +1 -1
  99. package/package.json +122 -62
  100. package/dist/_chunks/FastaDataImportDialog.js.map +0 -1
  101. package/dist/components/FastaDataImportDialog/index.js +0 -2
  102. package/dist/components/FastaDataImportDialogLoader/index.js +0 -70
  103. package/dist/components/FastaDataImportDialogLoader/index.js.map +0 -1
  104. package/dist/components/FastaNotLoaded/index.js +0 -53
  105. package/dist/components/FastaNotLoaded/index.js.map +0 -1
  106. package/dist/components/FastaPageHeaderCenterComponent/index.js.map +0 -1
  107. package/dist/components/FastaPageHeaderImportButton/index.js +0 -26
  108. package/dist/components/FastaPageHeaderImportButton/index.js.map +0 -1
  109. package/dist/components/FastaPageHeaderResetButton/index.js.map +0 -1
  110. package/dist/components/I18nWrapper/index.js +0 -21
  111. package/dist/components/I18nWrapper/index.js.map +0 -1
  112. package/dist/components/PageHeaderDocumentationButton/index.js.map +0 -1
  113. package/dist/components/page/ErrorPageCommon.d.ts +0 -4
  114. package/dist/components/page/PageCommon.d.ts +0 -8
  115. package/dist/components/page/index.d.ts +0 -6
  116. package/dist/components/page/index.js +0 -207
  117. package/dist/components/page/index.js.map +0 -1
  118. package/dist/constants/page.js +0 -6
  119. package/dist/constants/page.js.map +0 -1
  120. package/dist/models/fasta.js.map +0 -1
  121. /package/dist/components/{FastaDataImportDialog → fasta/FastaDataImportDialog}/FastaDataImportDialog.d.ts +0 -0
  122. /package/dist/components/{FastaDataImportDialog → fasta/FastaDataImportDialog}/index.d.ts +0 -0
  123. /package/dist/components/{FastaDataImportDialogLoader → fasta/FastaDataImportDialogLoader}/index.d.ts +0 -0
  124. /package/dist/components/{FastaNotLoaded → fasta/FastaNotLoaded}/FastaNotLoaded.d.ts +0 -0
  125. /package/dist/components/{FastaNotLoaded → fasta/FastaNotLoaded}/index.d.ts +0 -0
  126. /package/dist/components/{FastaPageHeaderCenterComponent → fasta/FastaPageHeaderCenterComponent}/index.d.ts +0 -0
  127. /package/dist/components/{FastaPageHeaderImportButton → fasta/FastaPageHeaderImportButton}/FastaPageHeaderImportButton.d.ts +0 -0
  128. /package/dist/components/{FastaPageHeaderImportButton → fasta/FastaPageHeaderImportButton}/index.d.ts +0 -0
  129. /package/dist/components/{FastaPageHeaderResetButton → fasta/FastaPageHeaderResetButton}/FastaPageHeaderResetButton.d.ts +0 -0
  130. /package/dist/components/{FastaPageHeaderResetButton → fasta/FastaPageHeaderResetButton}/index.d.ts +0 -0
  131. /package/dist/components/{I18nWrapper → ui/I18nWrapper}/I18nWrapper.d.ts +0 -0
  132. /package/dist/components/{I18nWrapper → ui/I18nWrapper}/index.d.ts +0 -0
  133. /package/dist/components/{page → ui/PageCommonDrawer}/PageCommonDrawer.d.ts +0 -0
  134. /package/dist/components/{page → ui/PageCommonHeader}/PageCommonHeader.d.ts +0 -0
  135. /package/dist/components/{PageHeaderDocumentationButton → ui/PageHeaderDocumentationButton}/PageHeaderDocumentationButton.d.ts +0 -0
  136. /package/dist/components/{PageHeaderDocumentationButton → ui/PageHeaderDocumentationButton}/index.d.ts +0 -0
  137. /package/dist/constants/{page.d.ts → page.constants.d.ts} +0 -0
  138. /package/dist/{components/page → context/pageCommonContext}/PageCommonContext.d.ts +0 -0
  139. /package/dist/{components/page → context/pageCommonContext}/PageCommonContextProvider.d.ts +0 -0
  140. /package/dist/models/{metadata.js → config.models.js} +0 -0
  141. /package/dist/models/{fasta.d.ts → fasta.models.d.ts} +0 -0
  142. /package/dist/models/{metadata.d.ts → metadata.models.d.ts} +0 -0
@@ -1,70 +0,0 @@
1
- import { UrlUtil as e } from "../../utils/UrlUtil/index.js";
2
- import { ErrorUtil as t } from "../../utils/ErrorUtil/index.js";
3
- import { LOADING_STATUS as n } from "../../models/fasta.js";
4
- import { FastaDataEventBusService as r } from "../../classes/services/FastaDataEventBusService/index.js";
5
- import { t as i } from "../../_chunks/react.js";
6
- import { t as a } from "../../_chunks/FastaDataImportDialog.js";
7
- import { Fragment as o, jsx as s } from "react/jsx-runtime";
8
- import { useCallback as c, useEffect as l, useRef as u } from "react";
9
- //#region src/components/FastaDataImportDialogLoader/FastaDataImportDialogLoader.tsx
10
- var d = ({ extraActions: d, store: f }) => {
11
- let p = i(f, (e) => e.setData), m = i(f, (e) => e.setLoadingStatus), h = u(null);
12
- l(() => {
13
- let e = [r.getInstance().addEventListener("onShowImportDialog", (e) => {
14
- h.current?.open(e ? { initialErrorMessage: e } : void 0);
15
- }), r.getInstance().addEventListener("onCloseImportDialog", () => {
16
- h.current?.close();
17
- })];
18
- return () => {
19
- e.forEach((e) => e());
20
- };
21
- }, []), l(() => {
22
- let e = new URLSearchParams(window.location.search), t = e.get("input-fasta"), i = e.get("input-metadata");
23
- (async () => {
24
- if (t) {
25
- m(n.LOADING);
26
- try {
27
- let e = await fetch(t);
28
- if (!e.ok) throw Error(`FASTA fetch failed (${e.status})`);
29
- let r = await e.text();
30
- if (!r.trim()) throw m(n.ERROR), Error("The input-fasta URL returned no sequence data. Check that the URL and requested accession(s) are correct.");
31
- let a;
32
- if (i) try {
33
- let e = await fetch(i);
34
- e.ok && (a = await e.text());
35
- } catch (e) {
36
- console.warn("[App] Failed to auto-fetch metadata:", e);
37
- }
38
- await p(r, a);
39
- } catch (e) {
40
- console.error("[App] Failed to auto-load FASTA:", e);
41
- let t = e instanceof Error ? e.message : "Failed to auto-load FASTA from the provided URL.";
42
- r.getInstance().emit("onShowImportDialog", t);
43
- }
44
- } else r.getInstance().emit("onShowImportDialog");
45
- })();
46
- }, [p, m]);
47
- let g = c((e) => {
48
- h.current?.close(), r.getInstance().emit("onShowImportDialog", e);
49
- }, []), _ = c(async (n, r) => {
50
- try {
51
- await p(n, r), h.current?.close();
52
- } catch (e) {
53
- g(t.getErrorMessage(e, "Unknown error"));
54
- } finally {
55
- e.clearSearchParams();
56
- }
57
- }, [g, p]), v = c((e) => {
58
- g(t.getErrorMessage(e, "Unknown error"));
59
- }, [g]);
60
- return /* @__PURE__ */ s(o, { children: /* @__PURE__ */ s(a, {
61
- extraActions: d,
62
- onDataChange: _,
63
- onError: v,
64
- ref: h
65
- }) });
66
- };
67
- //#endregion
68
- export { d as FastaDataImportDialogLoader };
69
-
70
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/FastaDataImportDialogLoader/FastaDataImportDialogLoader.tsx"],"sourcesContent":["import type { DialogAction } from '@gen-epix/ui-core-components/components/Dialog';\nimport {\n useCallback,\n useEffect,\n useRef,\n} from 'react';\nimport type { StoreApi } from 'zustand';\nimport { useStore } from 'zustand';\n\nimport { FastaDataEventBusService } from '../../classes/services/FastaDataEventBusService';\nimport { LOADING_STATUS } from '../../models/fasta';\nimport type { FastaDataStore } from '../../stores/fastaDataStore';\nimport { UrlUtil } from '../../utils/UrlUtil';\nimport type { FastaDataImportDialogRefMethods } from '../FastaDataImportDialog/FastaDataImportDialog';\nimport { FastaDataImportDialog } from '../FastaDataImportDialog/FastaDataImportDialog';\nimport { ErrorUtil } from '../../utils/ErrorUtil';\n\n\nexport type FastaDataImportDialogLoaderProps = {\n extraActions: DialogAction[];\n store: StoreApi<FastaDataStore>;\n};\n\nexport const FastaDataImportDialogLoader = ({ extraActions, store }: FastaDataImportDialogLoaderProps) => {\n const setData = useStore(store, (state) => state.setData);\n const setLoadingStatus = useStore(store, (state) => state.setLoadingStatus);\n const fastaDataImportDialogRef = useRef<FastaDataImportDialogRefMethods>(null);\n\n useEffect(() => {\n const removers = [\n // eslint-disable-next-line @eslint-react/web-api-no-leaked-event-listener\n FastaDataEventBusService.getInstance().addEventListener('onShowImportDialog', (initialErrorMessage?: string) => {\n fastaDataImportDialogRef.current?.open(initialErrorMessage ? { initialErrorMessage } : undefined);\n }),\n // eslint-disable-next-line @eslint-react/web-api-no-leaked-event-listener\n FastaDataEventBusService.getInstance().addEventListener('onCloseImportDialog', () => {\n fastaDataImportDialogRef.current?.close();\n }),\n ];\n return () => {\n removers.forEach((remove) => remove());\n };\n }, []);\n\n useEffect(() => {\n // Scan URL parameters for deep-linking\n const urlParams = new URLSearchParams(window.location.search);\n const inputFastaUrl = urlParams.get('input-fasta');\n const inputMetadataUrl = urlParams.get('input-metadata');\n\n const handleDeepLinking = async () => {\n if (inputFastaUrl) {\n setLoadingStatus(LOADING_STATUS.LOADING);\n try {\n const fastaRes = await fetch(inputFastaUrl);\n if (!fastaRes.ok) {\n throw new Error(`FASTA fetch failed (${fastaRes.status})`);\n }\n const fastaText = await fastaRes.text();\n\n if (!fastaText.trim()) {\n setLoadingStatus(LOADING_STATUS.ERROR);\n throw new Error('The input-fasta URL returned no sequence data. Check that the URL and requested accession(s) are correct.');\n }\n\n let metaText: string | undefined;\n if (inputMetadataUrl) {\n try {\n const metaRes = await fetch(inputMetadataUrl);\n if (metaRes.ok) {\n metaText = await metaRes.text();\n }\n } catch (metaErr) {\n console.warn('[App] Failed to auto-fetch metadata:', metaErr);\n }\n }\n\n await setData(fastaText, metaText);\n } catch (fastaErr) {\n console.error('[App] Failed to auto-load FASTA:', fastaErr);\n const message = fastaErr instanceof Error ? fastaErr.message : 'Failed to auto-load FASTA from the provided URL.';\n FastaDataEventBusService.getInstance().emit('onShowImportDialog', message);\n }\n } else {\n // PV1-02: Show data loading modal if no data provided via URL query params\n FastaDataEventBusService.getInstance().emit('onShowImportDialog');\n }\n };\n\n void handleDeepLinking();\n }, [setData, setLoadingStatus]);\n\n const handleError = useCallback((errorMessage: string) => {\n fastaDataImportDialogRef.current?.close();\n FastaDataEventBusService.getInstance().emit('onShowImportDialog', errorMessage);\n }, []);\n\n const onDataChange = useCallback(async (fastaContent: string, metadataContent?: string) => {\n try {\n await setData(fastaContent, metadataContent);\n fastaDataImportDialogRef.current?.close();\n } catch (e) {\n handleError(ErrorUtil.getErrorMessage(e, 'Unknown error'));\n } finally {\n // clear any search params from the URL\n UrlUtil.clearSearchParams();\n }\n }, [handleError, setData]);\n\n const onError = useCallback((errorMessage: unknown) => {\n handleError(ErrorUtil.getErrorMessage(errorMessage, 'Unknown error'));\n }, [handleError]);\n\n return (\n <>\n <FastaDataImportDialog\n extraActions={extraActions}\n onDataChange={onDataChange}\n onError={onError}\n ref={fastaDataImportDialogRef}\n />\n </>\n );\n};\n"],"mappings":";;;;;;;;;AAuBA,IAAa,KAA+B,EAAE,iBAAc,eAA8C;CACxG,IAAM,IAAU,EAAS,IAAQ,MAAU,EAAM,OAAO,GAClD,IAAmB,EAAS,IAAQ,MAAU,EAAM,gBAAgB,GACpE,IAA2B,EAAwC,IAAI;CAkB7E,AAhBA,QAAgB;EACd,IAAM,IAAW,CAEf,EAAyB,YAAY,CAAC,CAAC,iBAAiB,uBAAuB,MAAiC;GAC9G,EAAyB,SAAS,KAAK,IAAsB,EAAE,uBAAoB,IAAI,KAAA,CAAS;EAClG,CAAC,GAED,EAAyB,YAAY,CAAC,CAAC,iBAAiB,6BAA6B;GACnF,EAAyB,SAAS,MAAM;EAC1C,CAAC,CACH;EACA,aAAa;GACX,EAAS,SAAS,MAAW,EAAO,CAAC;EACvC;CACF,GAAG,CAAC,CAAC,GAEL,QAAgB;EAEd,IAAM,IAAY,IAAI,gBAAgB,OAAO,SAAS,MAAM,GACtD,IAAgB,EAAU,IAAI,aAAa,GAC3C,IAAmB,EAAU,IAAI,gBAAgB;EAyCvD,aAvCsC;GACpC,IAAI,GAAe;IACjB,EAAiB,EAAe,OAAO;IACvC,IAAI;KACF,IAAM,IAAW,MAAM,MAAM,CAAa;KAC1C,IAAI,CAAC,EAAS,IACZ,MAAU,MAAM,uBAAuB,EAAS,OAAO,EAAE;KAE3D,IAAM,IAAY,MAAM,EAAS,KAAK;KAEtC,IAAI,CAAC,EAAU,KAAK,GAElB,MADA,EAAiB,EAAe,KAAK,GAC3B,MAAM,2GAA2G;KAG7H,IAAI;KACJ,IAAI,GACF,IAAI;MACF,IAAM,IAAU,MAAM,MAAM,CAAgB;MAC5C,AAAI,EAAQ,OACV,IAAW,MAAM,EAAQ,KAAK;KAElC,SAAS,GAAS;MAChB,QAAQ,KAAK,wCAAwC,CAAO;KAC9D;KAGF,MAAM,EAAQ,GAAW,CAAQ;IACnC,SAAS,GAAU;KACjB,QAAQ,MAAM,oCAAoC,CAAQ;KAC1D,IAAM,IAAU,aAAoB,QAAQ,EAAS,UAAU;KAC/D,EAAyB,YAAY,CAAC,CAAC,KAAK,sBAAsB,CAAO;IAC3E;GACF,OAEE,EAAyB,YAAY,CAAC,CAAC,KAAK,oBAAoB;EAEpE,EAEK,CAAkB;CACzB,GAAG,CAAC,GAAS,CAAgB,CAAC;CAE9B,IAAM,IAAc,GAAa,MAAyB;EAExD,AADA,EAAyB,SAAS,MAAM,GACxC,EAAyB,YAAY,CAAC,CAAC,KAAK,sBAAsB,CAAY;CAChF,GAAG,CAAC,CAAC,GAEC,IAAe,EAAY,OAAO,GAAsB,MAA6B;EACzF,IAAI;GAEF,AADA,MAAM,EAAQ,GAAc,CAAe,GAC3C,EAAyB,SAAS,MAAM;EAC1C,SAAS,GAAG;GACV,EAAY,EAAU,gBAAgB,GAAG,eAAe,CAAC;EAC3D,UAAU;GAER,EAAQ,kBAAkB;EAC5B;CACF,GAAG,CAAC,GAAa,CAAO,CAAC,GAEnB,IAAU,GAAa,MAA0B;EACrD,EAAY,EAAU,gBAAgB,GAAc,eAAe,CAAC;CACtE,GAAG,CAAC,CAAW,CAAC;CAEhB,OACE,kBAAA,GAAA,EAAA,UACE,kBAAC,GAAD;EACgB;EACA;EACL;EACT,KAAK;CACN,CAAA,EACD,CAAA;AAEN"}
@@ -1,53 +0,0 @@
1
- import { FastaDataEventBusService as e } from "../../classes/services/FastaDataEventBusService/index.js";
2
- import { Box as t, Button as n, Typography as r } from "@mui/material";
3
- import { jsx as i, jsxs as a } from "react/jsx-runtime";
4
- import { useCallback as o } from "react";
5
- import s from "@mui/icons-material/FileUploadOutlined";
6
- //#region src/components/FastaNotLoaded/FastaNotLoaded.tsx
7
- var c = ({ description: c, icon: l, title: u }) => {
8
- let d = o(() => {
9
- e.getInstance().emit("onShowImportDialog");
10
- }, []);
11
- return /* @__PURE__ */ a(t, {
12
- sx: {
13
- alignItems: "center",
14
- display: "flex",
15
- flexDirection: "column",
16
- gap: 2,
17
- height: "100%",
18
- justifyContent: "center",
19
- p: 3,
20
- width: "100%"
21
- },
22
- children: [
23
- l,
24
- /* @__PURE__ */ i(r, {
25
- color: "text.secondary",
26
- sx: { fontWeight: 600 },
27
- variant: "h6",
28
- children: u
29
- }),
30
- /* @__PURE__ */ i(r, {
31
- color: "text.secondary",
32
- sx: {
33
- maxWidth: 450,
34
- textAlign: "center"
35
- },
36
- variant: "body2",
37
- children: c
38
- }),
39
- /* @__PURE__ */ i(n, {
40
- color: "primary",
41
- onClick: d,
42
- startIcon: /* @__PURE__ */ i(s, {}),
43
- sx: { mt: 1 },
44
- variant: "contained",
45
- children: "Load Data"
46
- })
47
- ]
48
- });
49
- };
50
- //#endregion
51
- export { c as FastaNotLoaded };
52
-
53
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/FastaNotLoaded/FastaNotLoaded.tsx"],"sourcesContent":["import {\n Box,\n Button,\n Typography,\n} from '@mui/material';\nimport FileUploadOutlinedIcon from '@mui/icons-material/FileUploadOutlined';\nimport type { ReactNode } from 'react';\nimport { useCallback } from 'react';\n\nimport { FastaDataEventBusService } from '../../classes/services/FastaDataEventBusService';\n\nexport type FastaNotLoadedProps = {\n description: ReactNode;\n icon: ReactNode;\n title: ReactNode;\n};\n\nexport const FastaNotLoaded = ({ description, icon, title }: FastaNotLoadedProps) => {\n const onClickLoadData = useCallback(() => {\n FastaDataEventBusService.getInstance().emit('onShowImportDialog');\n }, []);\n\n return (\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n height: '100%',\n justifyContent: 'center',\n p: 3,\n width: '100%',\n }}\n >\n {icon}\n <Typography\n color={'text.secondary'}\n sx={{ fontWeight: 600 }}\n variant={'h6'}\n >\n {title}\n </Typography>\n <Typography\n color={'text.secondary'}\n sx={{ maxWidth: 450, textAlign: 'center' }}\n variant={'body2'}\n >\n {description}\n </Typography>\n <Button\n color={'primary'}\n onClick={onClickLoadData}\n startIcon={<FileUploadOutlinedIcon />}\n sx={{ mt: 1 }}\n variant={'contained'}\n >\n {'Load Data'}\n </Button>\n </Box>\n );\n};\n"],"mappings":";;;;;;AAiBA,IAAa,KAAkB,EAAE,gBAAa,SAAM,eAAiC;CACnF,IAAM,IAAkB,QAAkB;EACxC,EAAyB,YAAY,CAAC,CAAC,KAAK,oBAAoB;CAClE,GAAG,CAAC,CAAC;CAEL,OACE,kBAAC,GAAD;EACE,IAAI;GACF,YAAY;GACZ,SAAS;GACT,eAAe;GACf,KAAK;GACL,QAAQ;GACR,gBAAgB;GAChB,GAAG;GACH,OAAO;EACT;EAVF,UAAA;GAYG;GACD,kBAAC,GAAD;IACE,OAAO;IACP,IAAI,EAAE,YAAY,IAAI;IACtB,SAAS;IAER,UAAA;GACS,CAAA;GACZ,kBAAC,GAAD;IACE,OAAO;IACP,IAAI;KAAE,UAAU;KAAK,WAAW;IAAS;IACzC,SAAS;IAER,UAAA;GACS,CAAA;GACZ,kBAAC,GAAD;IACE,OAAO;IACP,SAAS;IACT,WAAW,kBAAC,GAAD,CAAyB,CAAA;IACpC,IAAI,EAAE,IAAI,EAAE;IACZ,SAAS;IAER,UAAA;GACK,CAAA;EACL;;AAET"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/FastaPageHeaderCenterComponent/FastaPageHeaderCenterComponent.tsx"],"sourcesContent":["import {\n Box,\n Chip,\n} from '@mui/material';\nimport type { StoreApi } from 'zustand';\nimport { useStore } from 'zustand';\n\nimport type { FastaDataStore } from '../../stores/fastaDataStore';\n\n\nexport type FastaPageHeaderCenterComponentProps = {\n store: StoreApi<FastaDataStore>;\n};\n\nexport const FastaPageHeaderCenterComponent = ({ store }: FastaPageHeaderCenterComponentProps) => {\n const parsedFasta = useStore(store, (state) => state.parsedFasta);\n const parsedMetadata = useStore(store, (state) => state.parsedMetadata);\n\n const seqCount = parsedFasta?.sequences?.length || 0;\n const metaCount = parsedMetadata?.records?.length || 0;\n\n return (\n <Box sx={{ alignItems: 'center', display: 'flex', gap: 1 }}>\n {seqCount > 0 && (\n <Chip\n label={`${seqCount} Sequences`}\n size={'small'}\n sx={{\n backgroundColor: 'rgba(255, 255, 255, 0.2)',\n color: '#FFFFFF',\n fontSize: '0.75rem',\n fontWeight: 600,\n }}\n />\n )}\n {metaCount > 0 && (\n <Chip\n label={`${metaCount} Metadata Records`}\n size={'small'}\n sx={{\n backgroundColor: 'rgba(255, 255, 255, 0.2)',\n color: '#FFFFFF',\n fontSize: '0.75rem',\n fontWeight: 600,\n }}\n />\n )}\n </Box>\n );\n};\n"],"mappings":";;;;AAcA,IAAa,KAAkC,EAAE,eAAiD;CAChG,IAAM,IAAc,EAAS,IAAQ,MAAU,EAAM,WAAW,GAC1D,IAAiB,EAAS,IAAQ,MAAU,EAAM,cAAc,GAEhE,IAAW,GAAa,WAAW,UAAU,GAC7C,IAAY,GAAgB,SAAS,UAAU;CAErD,OACE,kBAAC,GAAD;EAAK,IAAI;GAAE,YAAY;GAAU,SAAS;GAAQ,KAAK;EAAE;EAAzD,UAAA,CACG,IAAW,KACV,kBAAC,GAAD;GACE,OAAO,GAAG,EAAS;GACnB,MAAM;GACN,IAAI;IACF,iBAAiB;IACjB,OAAO;IACP,UAAU;IACV,YAAY;GACd;EACD,CAAA,GAEF,IAAY,KACX,kBAAC,GAAD;GACE,OAAO,GAAG,EAAU;GACpB,MAAM;GACN,IAAI;IACF,iBAAiB;IACjB,OAAO;IACP,UAAU;IACV,YAAY;GACd;EACD,CAAA,CAEA;;AAET"}
@@ -1,26 +0,0 @@
1
- import { FastaDataEventBusService as e } from "../../classes/services/FastaDataEventBusService/index.js";
2
- import { Button as t } from "@mui/material";
3
- import { jsx as n } from "react/jsx-runtime";
4
- import { useCallback as r } from "react";
5
- import i from "@mui/icons-material/FileUploadOutlined";
6
- //#region src/components/FastaPageHeaderImportButton/FastaPageHeaderImportButton.tsx
7
- var a = () => {
8
- let a = r(() => e.getInstance().emit("onShowImportDialog"), []);
9
- return /* @__PURE__ */ n(t, {
10
- color: "inherit",
11
- onClick: a,
12
- size: "small",
13
- startIcon: /* @__PURE__ */ n(i, {}),
14
- sx: {
15
- "&:hover": { backgroundColor: "rgba(255, 255, 255, 0.25)" },
16
- backgroundColor: "rgba(255, 255, 255, 0.15)",
17
- color: "#FFFFFF"
18
- },
19
- variant: "contained",
20
- children: "Import Data"
21
- });
22
- };
23
- //#endregion
24
- export { a as FastaPageHeaderImportButton };
25
-
26
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/FastaPageHeaderImportButton/FastaPageHeaderImportButton.tsx"],"sourcesContent":["import FileUploadOutlinedIcon from '@mui/icons-material/FileUploadOutlined';\nimport { Button } from '@mui/material';\nimport { useCallback } from 'react';\n\nimport { FastaDataEventBusService } from '../../classes/services/FastaDataEventBusService';\n\nexport const FastaPageHeaderImportButton = () => {\n const onImportDataButtonClick = useCallback(() => FastaDataEventBusService.getInstance().emit('onShowImportDialog'), []);\n\n return (\n <Button\n color={'inherit'}\n onClick={onImportDataButtonClick}\n size={'small'}\n startIcon={<FileUploadOutlinedIcon />}\n sx={{\n '&:hover': {\n backgroundColor: 'rgba(255, 255, 255, 0.25)',\n },\n backgroundColor: 'rgba(255, 255, 255, 0.15)',\n color: '#FFFFFF',\n }}\n variant={'contained'}\n >\n {'Import Data'}\n </Button>\n );\n};\n"],"mappings":";;;;;;AAMA,IAAa,UAAoC;CAC/C,IAAM,IAA0B,QAAkB,EAAyB,YAAY,CAAC,CAAC,KAAK,oBAAoB,GAAG,CAAC,CAAC;CAEvH,OACE,kBAAC,GAAD;EACE,OAAO;EACP,SAAS;EACT,MAAM;EACN,WAAW,kBAAC,GAAD,CAAyB,CAAA;EACpC,IAAI;GACF,WAAW,EACT,iBAAiB,4BACnB;GACA,iBAAiB;GACjB,OAAO;EACT;EACA,SAAS;EAER,UAAA;CACK,CAAA;AAEZ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/FastaPageHeaderResetButton/FastaPageHeaderResetButton.tsx"],"sourcesContent":["import RestartAltIcon from '@mui/icons-material/RestartAlt';\nimport {\n IconButton,\n Tooltip,\n} from '@mui/material';\nimport {\n useCallback,\n useRef,\n} from 'react';\nimport { Confirmation } from '@gen-epix/ui-core-components/components/Confirmation';\nimport type { ConfirmationRefMethods } from '@gen-epix/ui-core-components/components/Confirmation';\nimport { t } from 'i18next';\n\nexport type FastaPageHeaderResetButtonProps = {\n onReset: () => void;\n};\n\nexport const FastaPageHeaderResetButton = ({ onReset }: FastaPageHeaderResetButtonProps) => {\n const confirmationRef = useRef<ConfirmationRefMethods>(null);\n const onClickResetSession = useCallback(() => {\n confirmationRef.current?.open();\n }, []);\n\n const onConfirm = useCallback(() => {\n onReset();\n }, [onReset]);\n\n return (\n <>\n <Tooltip title={'Reset current session and dataset'}>\n <IconButton\n color={'inherit'}\n onClick={onClickResetSession}\n size={'small'}\n sx={{ opacity: 0.85 }}\n >\n <RestartAltIcon fontSize={'small'} />\n </IconButton>\n </Tooltip>\n <Confirmation\n body={t`Are you sure you want to reset the current session and dataset?`}\n cancelLabel={t`Cancel`}\n confirmLabel={t`Reset`}\n onConfirm={onConfirm}\n ref={confirmationRef}\n title={t`Reset current session and dataset?`}\n />\n </>\n );\n};\n"],"mappings":";;;;;;;AAiBA,IAAa,KAA8B,EAAE,iBAA+C;CAC1F,IAAM,IAAkB,EAA+B,IAAI,GACrD,IAAsB,QAAkB;EAC5C,EAAgB,SAAS,KAAK;CAChC,GAAG,CAAC,CAAC,GAEC,IAAY,QAAkB;EAClC,EAAQ;CACV,GAAG,CAAC,CAAO,CAAC;CAEZ,OACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;EAAS,OAAO;EACd,UAAA,kBAAC,GAAD;GACE,OAAO;GACP,SAAS;GACT,MAAM;GACN,IAAI,EAAE,SAAS,IAAK;GAEpB,UAAA,kBAAC,GAAD,EAAgB,UAAU,QAAU,CAAA;EAC1B,CAAA;CACL,CAAA,GACT,kBAAC,GAAD;EACE,MAAM,CAAC;EACP,aAAa,CAAC;EACd,cAAc,CAAC;EACJ;EACX,KAAK;EACL,OAAO,CAAC;CACT,CAAA,CACD,EAAA,CAAA;AAEN"}
@@ -1,21 +0,0 @@
1
- import e from "i18next";
2
- import { Fragment as t, jsx as n } from "react/jsx-runtime";
3
- import { useEffect as r, useState as i } from "react";
4
- import { initReactI18next as a } from "react-i18next";
5
- //#region src/components/I18nWrapper/I18nWrapper.tsx
6
- var o = ({ children: o }) => {
7
- let [s, c] = i(!1);
8
- return r(() => {
9
- (async () => {
10
- await e.use(a).init({
11
- interpolation: { escapeValue: !1 },
12
- lng: "en",
13
- resources: { en: { translation: {} } }
14
- }), c(!0);
15
- })();
16
- }, []), /* @__PURE__ */ n(t, { children: s ? o : null });
17
- };
18
- //#endregion
19
- export { o as I18nWrapper };
20
-
21
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/I18nWrapper/I18nWrapper.tsx"],"sourcesContent":["import {\n useEffect,\n useState,\n} from 'react';\nimport type { ReactNode } from 'react';\nimport i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\n\nexport const I18nWrapper = ({ children }: { children: ReactNode }) => {\n const [isInitialized, setIsInitialized] = useState(false);\n\n useEffect(() => {\n const performInitialization = async () => {\n await i18n\n .use(initReactI18next) // passes i18n down to react-i18next\n .init({\n interpolation: {\n escapeValue: false, // react already safes from xss\n },\n lng: 'en',\n resources: {\n en: {\n translation: {\n },\n },\n },\n });\n setIsInitialized(true);\n };\n void performInitialization();\n }, []);\n\n\n return (\n <>\n {isInitialized ? children : null}\n </>\n );\n};\n"],"mappings":";;;;;AAQA,IAAa,KAAe,EAAE,kBAAwC;CACpE,IAAM,CAAC,GAAe,KAAoB,EAAS,EAAK;CAwBxD,OAtBA,QAAgB;EAkBd,aAjB0C;GAexC,AAdA,MAAM,EACH,IAAI,CAAgB,CAAC,CACrB,KAAK;IACJ,eAAe,EACb,aAAa,GACf;IACA,KAAK;IACL,WAAW,EACT,IAAI,EACF,aAAa,CACb,EACF,EACF;GACF,CAAC,GACH,EAAiB,EAAI;EACvB,EACK,CAAsB;CAC7B,GAAG,CAAC,CAAC,GAIH,kBAAA,GAAA,EAAA,UACG,IAAgB,IAAW,KAC5B,CAAA;AAEN"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/PageHeaderDocumentationButton/PageHeaderDocumentationButton.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport {\n IconButton,\n Tooltip,\n} from '@mui/material';\nimport HelpOutlineIcon from '@mui/icons-material/HelpOutlineOutlined';\n\nexport const PageHeaderDocumentationButton = () => {\n const onDocumentationButtonClick = useCallback(() => {\n window.open('https://github.com/RIVM-bioinformatics/loculus-tools', '_blank');\n }, []);\n\n return (\n <Tooltip title={'Documentation & Specifications'}>\n <IconButton\n color={'inherit'}\n onClick={onDocumentationButtonClick}\n size={'small'}\n sx={{ opacity: 0.85 }}\n >\n <HelpOutlineIcon fontSize={'small'} />\n </IconButton>\n </Tooltip>\n );\n};\n"],"mappings":";;;;;AAOA,IAAa,UAAsC;CACjD,IAAM,IAA6B,QAAkB;EACnD,OAAO,KAAK,wDAAwD,QAAQ;CAC9E,GAAG,CAAC,CAAC;CAEL,OACE,kBAAC,GAAD;EAAS,OAAO;EACd,UAAA,kBAAC,GAAD;GACE,OAAO;GACP,SAAS;GACT,MAAM;GACN,IAAI,EAAE,SAAS,IAAK;GAEpB,UAAA,kBAAC,GAAD,EAAiB,UAAU,QAAU,CAAA;EAC3B,CAAA;CACL,CAAA;AAEb"}
@@ -1,4 +0,0 @@
1
- export type ErrorPageCommonProps = {
2
- error: unknown;
3
- };
4
- export declare const ErrorPageCommon: ({ error }: ErrorPageCommonProps) => import('react').JSX.Element;
@@ -1,8 +0,0 @@
1
- import { ReactNode } from 'react';
2
- export type PageCommonProps = {
3
- readonly children: ReactNode;
4
- readonly drawerComponent?: ReactNode;
5
- readonly headerComponent?: ReactNode;
6
- readonly isNoInteraction?: boolean;
7
- };
8
- export declare const PageCommon: ({ children, drawerComponent, headerComponent, isNoInteraction }: PageCommonProps) => import('react').JSX.Element;
@@ -1,6 +0,0 @@
1
- export * from './ErrorPageCommon';
2
- export * from './PageCommon';
3
- export * from './PageCommonContext';
4
- export * from './PageCommonContextProvider';
5
- export * from './PageCommonDrawer';
6
- export * from './PageCommonHeader';
@@ -1,207 +0,0 @@
1
- import "../../constants/page.js";
2
- import { AppBar as e, Box as t, Drawer as n, IconButton as r, Toolbar as i, Typography as a, useTheme as o } from "@mui/material";
3
- import { t as s } from "i18next";
4
- import { Fragment as c, jsx as l, jsxs as u } from "react/jsx-runtime";
5
- import { createContext as d, use as f, useCallback as p, useEffect as m, useMemo as h, useState as g } from "react";
6
- import _ from "@mui/icons-material/Menu";
7
- //#region src/components/page/ErrorPageCommon.tsx
8
- var v = ({ error: e }) => /* @__PURE__ */ u(t, {
9
- sx: {
10
- alignItems: "center",
11
- display: "flex",
12
- flexDirection: "column",
13
- justifyContent: "center",
14
- width: "100%"
15
- },
16
- children: [
17
- /* @__PURE__ */ l(t, {
18
- sx: { padding: 1 },
19
- children: /* @__PURE__ */ l(a, {
20
- variant: "h1",
21
- children: s`Something went wrong`
22
- })
23
- }),
24
- /* @__PURE__ */ l(t, {
25
- sx: { padding: 1 },
26
- children: /* @__PURE__ */ l(a, {
27
- variant: "body2",
28
- children: e instanceof Error ? e.message : s`An unexpected error occurred.`
29
- })
30
- }),
31
- /* @__PURE__ */ u(t, {
32
- sx: { padding: 1 },
33
- children: [/* @__PURE__ */ l(a, {
34
- variant: "h6",
35
- children: s`Details for our technicians`
36
- }), /* @__PURE__ */ l(t, {
37
- component: "pre",
38
- sx: { fontSize: "0.8rem" },
39
- children: e?.stack
40
- })]
41
- })
42
- ]
43
- }), y = d({
44
- isDrawerOpen: !1,
45
- isNoInteraction: !1,
46
- setIsDrawerOpen: () => null,
47
- setIsNoInteraction: () => null
48
- }), b = ({ children: e, drawerComponent: n, headerComponent: r, isNoInteraction: i }) => {
49
- let a = o(), { isDrawerOpen: s, setIsNoInteraction: c } = f(y);
50
- return m(() => {
51
- c(!!i);
52
- }, [i, c]), /* @__PURE__ */ u(t, {
53
- sx: {
54
- display: "flex",
55
- flexDirection: "column",
56
- height: "100vh",
57
- overflow: "hidden",
58
- position: "relative",
59
- width: "100vw"
60
- },
61
- children: [r, /* @__PURE__ */ u(t, {
62
- sx: {
63
- display: "flex",
64
- flex: 1,
65
- height: "calc(100vh - 56px)",
66
- overflow: "hidden",
67
- position: "relative",
68
- width: "100%"
69
- },
70
- children: [n, /* @__PURE__ */ l(t, {
71
- component: "main",
72
- sx: {
73
- flexGrow: 1,
74
- height: "100%",
75
- overflow: "hidden",
76
- position: "relative",
77
- transition: () => a.transitions.create(["margin", "width"], {
78
- duration: a.transitions.duration.leavingScreen,
79
- easing: a.transitions.easing.sharp
80
- }),
81
- width: s ? "calc(100% - 340px)" : "100%"
82
- },
83
- children: e
84
- })]
85
- })]
86
- });
87
- }, x = ({ children: e }) => {
88
- let [t, n] = g(!1), [r, i] = g(!1), a = h(() => ({
89
- isDrawerOpen: t,
90
- isNoInteraction: r,
91
- setIsDrawerOpen: n,
92
- setIsNoInteraction: i
93
- }), [t, r]);
94
- return /* @__PURE__ */ l(y, {
95
- value: a,
96
- children: e
97
- });
98
- }, S = ({ children: e }) => {
99
- let { isDrawerOpen: t } = f(y);
100
- return /* @__PURE__ */ l(n, {
101
- anchor: "left",
102
- open: t,
103
- sx: {
104
- "& .MuiDrawer-paper": {
105
- height: "calc(100% - 56px)",
106
- overflowY: "auto",
107
- top: "56px",
108
- width: 340
109
- },
110
- flexShrink: 0,
111
- width: t ? 340 : 0
112
- },
113
- variant: "persistent",
114
- children: e
115
- });
116
- }, C = ({ centerComponent: n, icon: o, rightComponent: s, title: d }) => {
117
- let { isDrawerOpen: m, isNoInteraction: h, setIsDrawerOpen: g } = f(y), v = p(() => {
118
- g(!m);
119
- }, [m, g]);
120
- return /* @__PURE__ */ l(e, {
121
- elevation: 1,
122
- position: "static",
123
- sx: {
124
- backgroundColor: "primary.main",
125
- color: "#FFFFFF",
126
- height: 56,
127
- justifyContent: "center",
128
- zIndex: (e) => e.zIndex.drawer + 1
129
- },
130
- children: /* @__PURE__ */ u(i, {
131
- sx: {
132
- display: "flex",
133
- justifyContent: "space-between",
134
- px: 2
135
- },
136
- variant: "dense",
137
- children: [
138
- /* @__PURE__ */ u(t, {
139
- sx: {
140
- alignItems: "center",
141
- display: "flex",
142
- gap: 1.5
143
- },
144
- children: [
145
- !h && /* @__PURE__ */ l(r, {
146
- "aria-label": "open drawer",
147
- color: "inherit",
148
- edge: "start",
149
- onClick: v,
150
- size: "small",
151
- children: /* @__PURE__ */ l(_, {})
152
- }),
153
- o && /* @__PURE__ */ l(c, { children: o }),
154
- /* @__PURE__ */ l(a, {
155
- component: "div",
156
- noWrap: !0,
157
- sx: {
158
- color: "inherit",
159
- fontSize: "1.05rem",
160
- fontWeight: 700,
161
- letterSpacing: "-0.01em"
162
- },
163
- variant: "h6",
164
- children: d
165
- }),
166
- /* @__PURE__ */ l(a, {
167
- sx: {
168
- backgroundColor: "rgba(255, 255, 255, 0.15)",
169
- borderRadius: 1,
170
- display: {
171
- sm: "inline-block",
172
- xs: "none"
173
- },
174
- fontSize: "0.7rem",
175
- fontWeight: 600,
176
- px: 1,
177
- py: .25
178
- },
179
- variant: "caption",
180
- children: "Loculus Tool"
181
- })
182
- ]
183
- }),
184
- /* @__PURE__ */ l(t, {
185
- sx: {
186
- alignItems: "center",
187
- display: "flex",
188
- gap: 1
189
- },
190
- children: n
191
- }),
192
- !h && /* @__PURE__ */ l(t, {
193
- sx: {
194
- alignItems: "center",
195
- display: "flex",
196
- gap: 1
197
- },
198
- children: s
199
- })
200
- ]
201
- })
202
- });
203
- };
204
- //#endregion
205
- export { v as ErrorPageCommon, b as PageCommon, y as PageCommonContext, x as PageCommonContextProvider, S as PageCommonDrawer, C as PageCommonHeader };
206
-
207
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/page/ErrorPageCommon.tsx","../../../src/components/page/PageCommonContext.ts","../../../src/components/page/PageCommon.tsx","../../../src/components/page/PageCommonContextProvider.tsx","../../../src/components/page/PageCommonDrawer.tsx","../../../src/components/page/PageCommonHeader.tsx"],"sourcesContent":["import {\n Box,\n Typography,\n} from '@mui/material';\nimport { t } from 'i18next';\n\nexport type ErrorPageCommonProps = {\n error: unknown;\n};\n\nexport const ErrorPageCommon = ({ error }: ErrorPageCommonProps) => {\n return (\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n width: '100%',\n }}\n >\n <Box sx={{ padding: 1 }}>\n <Typography\n variant={'h1'}\n >\n {t`Something went wrong`}\n </Typography>\n </Box>\n <Box sx={{ padding: 1 }}>\n <Typography\n variant={'body2'}\n >\n {error instanceof Error ? error.message : t`An unexpected error occurred.`}\n </Typography>\n </Box>\n <Box sx={{ padding: 1 }}>\n <Typography variant={'h6'}>\n {t`Details for our technicians`}\n </Typography>\n <Box\n component={'pre'}\n sx={{\n fontSize: '0.8rem',\n }}\n >\n {(error as Error)?.stack}\n </Box>\n </Box>\n </Box>\n );\n};\n","import { createContext } from 'react';\n\nexport type PageCommonContextData = {\n readonly isDrawerOpen: boolean;\n readonly isNoInteraction: boolean;\n readonly setIsDrawerOpen: (open: boolean) => void;\n readonly setIsNoInteraction: (open: boolean) => void;\n};\n\nexport const PageCommonContext = createContext<PageCommonContextData>({\n isDrawerOpen: false,\n isNoInteraction: false,\n setIsDrawerOpen: () => null,\n setIsNoInteraction: () => null,\n});\n","import {\n Box,\n useTheme,\n} from '@mui/material';\nimport {\n use,\n useEffect,\n} from 'react';\nimport type { ReactNode } from 'react';\n\nimport { DRAWER_WIDTH } from '../../constants/page';\n\nimport { PageCommonContext } from './PageCommonContext';\n\nexport type PageCommonProps = {\n readonly children: ReactNode;\n readonly drawerComponent?: ReactNode;\n readonly headerComponent?: ReactNode;\n readonly isNoInteraction?: boolean;\n};\n\n\nexport const PageCommon = ({ children, drawerComponent, headerComponent, isNoInteraction }: PageCommonProps) => {\n const theme = useTheme();\n const { isDrawerOpen, setIsNoInteraction } = use(PageCommonContext);\n\n useEffect(() => {\n setIsNoInteraction(!!isNoInteraction);\n }, [isNoInteraction, setIsNoInteraction]);\n\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n height: '100vh',\n overflow: 'hidden',\n position: 'relative',\n width: '100vw',\n }}\n >\n {headerComponent}\n {/* Main Body */}\n <Box\n sx={{\n display: 'flex',\n flex: 1,\n height: 'calc(100vh - 56px)',\n overflow: 'hidden',\n position: 'relative',\n width: '100%',\n }}\n >\n {drawerComponent}\n <Box\n component={'main'}\n sx={{\n flexGrow: 1,\n height: '100%',\n overflow: 'hidden',\n position: 'relative',\n transition: () =>\n theme.transitions.create(['margin', 'width'], {\n duration: theme.transitions.duration.leavingScreen,\n easing: theme.transitions.easing.sharp,\n }),\n width: isDrawerOpen ? `calc(100% - ${DRAWER_WIDTH}px)` : '100%',\n }}\n >\n {children}\n </Box>\n\n </Box>\n </Box>\n );\n};\n","import {\n useMemo,\n useState,\n} from 'react';\nimport type { PropsWithChildren } from 'react';\n\nimport type { PageCommonContextData } from './PageCommonContext';\nimport { PageCommonContext } from './PageCommonContext';\n\nexport type PageCommonContextProviderProps = PropsWithChildren;\n\nexport const PageCommonContextProvider = ({ children }: PageCommonContextProviderProps) => {\n const [isDrawerOpen, setIsDrawerOpen] = useState(false);\n const [isNoInteraction, setIsNoInteraction] = useState(false);\n\n const contextValue = useMemo<PageCommonContextData>(() => {\n return {\n isDrawerOpen,\n isNoInteraction,\n setIsDrawerOpen,\n setIsNoInteraction,\n };\n }, [isDrawerOpen, isNoInteraction]);\n\n return (\n <PageCommonContext value={contextValue}>\n { children }\n </PageCommonContext>\n );\n};\n","import { Drawer } from '@mui/material';\nimport { use } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { DRAWER_WIDTH } from '../../constants/page';\n\nimport { PageCommonContext } from './PageCommonContext';\n\nexport type PageCommonDrawerProps = {\n readonly children: ReactNode;\n};\n\nexport const PageCommonDrawer = ({ children }: PageCommonDrawerProps) => {\n const { isDrawerOpen } = use(PageCommonContext);\n\n return (\n <Drawer\n anchor={'left'}\n open={isDrawerOpen}\n sx={{\n '& .MuiDrawer-paper': {\n height: 'calc(100% - 56px)',\n overflowY: 'auto',\n top: '56px',\n width: DRAWER_WIDTH,\n },\n flexShrink: 0,\n width: isDrawerOpen ? DRAWER_WIDTH : 0,\n }}\n variant={'persistent'}\n >\n {children}\n </Drawer>\n );\n};\n","import type { ReactNode } from 'react';\nimport {\n use,\n useCallback,\n} from 'react';\nimport {\n AppBar,\n Box,\n IconButton,\n Toolbar,\n Typography,\n} from '@mui/material';\nimport MenuIcon from '@mui/icons-material/Menu';\n\nimport { PageCommonContext } from './PageCommonContext';\n\nexport type PageCommonHeaderProps = {\n readonly centerComponent?: ReactNode;\n readonly icon?: ReactNode;\n readonly rightComponent?: ReactNode;\n readonly title: string;\n};\n\nexport const PageCommonHeader = ({ centerComponent, icon, rightComponent, title }: PageCommonHeaderProps) => {\n const { isDrawerOpen, isNoInteraction, setIsDrawerOpen } = use(PageCommonContext);\n\n const onToggleDrawerButtonClick = useCallback(() => {\n setIsDrawerOpen(!isDrawerOpen);\n }, [isDrawerOpen, setIsDrawerOpen]);\n\n return (\n <AppBar\n elevation={1}\n position={'static'}\n sx={{\n backgroundColor: 'primary.main',\n color: '#FFFFFF',\n height: 56,\n justifyContent: 'center',\n zIndex: (theme) => theme.zIndex.drawer + 1,\n }}\n >\n <Toolbar\n sx={{ display: 'flex', justifyContent: 'space-between', px: 2 }}\n variant={'dense'}\n >\n {/* Left: Menu toggle and App Branding */}\n <Box sx={{ alignItems: 'center', display: 'flex', gap: 1.5 }}>\n {!isNoInteraction && (\n <IconButton\n aria-label={'open drawer'}\n color={'inherit'}\n edge={'start'}\n onClick={onToggleDrawerButtonClick}\n size={'small'}\n >\n <MenuIcon />\n </IconButton>\n )}\n {icon && (\n <>\n {icon}\n </>\n )}\n <Typography\n component={'div'}\n noWrap\n sx={{ color: 'inherit', fontSize: '1.05rem', fontWeight: 700, letterSpacing: '-0.01em' }}\n variant={'h6'}\n >\n {title}\n </Typography>\n <Typography\n sx={{\n backgroundColor: 'rgba(255, 255, 255, 0.15)',\n borderRadius: 1,\n display: { sm: 'inline-block', xs: 'none' },\n fontSize: '0.7rem',\n fontWeight: 600,\n px: 1,\n py: 0.25,\n }}\n variant={'caption'}\n >\n {'Loculus Tool'}\n </Typography>\n </Box>\n <Box sx={{ alignItems: 'center', display: 'flex', gap: 1 }}>\n {centerComponent}\n </Box>\n {!isNoInteraction && (\n <Box sx={{ alignItems: 'center', display: 'flex', gap: 1 }}>\n {rightComponent}\n </Box>\n )}\n </Toolbar>\n </AppBar>\n );\n};\n"],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- //#region src/constants/page.ts
2
- var e = 340;
3
- //#endregion
4
- export { e as DRAWER_WIDTH };
5
-
6
- //# sourceMappingURL=page.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"page.js","names":[],"sources":["../../src/constants/page.ts"],"sourcesContent":["export const DRAWER_WIDTH = 340;\n"],"mappings":";AAAA,IAAa,IAAe"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fasta.js","names":[],"sources":["../../src/models/fasta.ts"],"sourcesContent":["export enum LOADING_STATUS {\n ERROR = 'ERROR',\n IDLE = 'IDLE',\n LOADING = 'LOADING',\n SUCCESS = 'SUCCESS',\n}\n\nexport type FastaParseResult = {\n error?: string;\n expectedLength: number;\n invalidSequences?: { id: string; length: number }[];\n isAligned: boolean;\n sequences: FastaSequence[];\n};\n\nexport type FastaSequence = {\n accessionVersion: string;\n header: string;\n id: string;\n length: number;\n sequence: string;\n};\n"],"mappings":";AAAA,IAAY,IAAL,yBAAA,GAAA;QACL,EAAA,QAAA,SACA,EAAA,OAAA,QACA,EAAA,UAAA,WACA,EAAA,UAAA;AACF,EAAA,CAAA,CAAA"}
File without changes
File without changes