@rivm-loculus-tools/common-frontend 0.2.0 → 0.4.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.
- package/dist/_chunks/EmotionCacheService.js +33 -0
- package/dist/_chunks/EmotionCacheService.js.map +1 -0
- package/dist/_chunks/decorate.js +9 -0
- package/dist/classes/services/EmotionCacheService/EmotionCacheService.d.ts +7 -0
- package/dist/classes/services/EmotionCacheService/index.d.ts +1 -0
- package/dist/classes/services/EmotionCacheService/index.js +1 -0
- package/dist/classes/services/FastaDataEventBusService/FastaDataEventBusService.d.ts +1 -3
- package/dist/classes/services/FastaDataEventBusService/index.js +6 -8
- package/dist/classes/services/FastaDataEventBusService/index.js.map +1 -1
- package/dist/components/app/App/App.d.ts +6 -0
- package/dist/components/app/App/index.d.ts +1 -0
- package/dist/components/app/App/index.js +104 -0
- package/dist/components/app/App/index.js.map +1 -0
- package/dist/{_chunks/FastaDataImportDialog.js → components/fasta/FastaDataImportDialog/index.js} +3 -3
- package/dist/components/fasta/FastaDataImportDialog/index.js.map +1 -0
- package/dist/components/{FastaDataImportDialogLoader → fasta/FastaDataImportDialogLoader}/FastaDataImportDialogLoader.d.ts +2 -2
- package/dist/components/fasta/FastaDataImportDialogLoader/index.js +71 -0
- package/dist/components/fasta/FastaDataImportDialogLoader/index.js.map +1 -0
- package/dist/components/fasta/FastaNotLoaded/index.js +54 -0
- package/dist/components/fasta/FastaNotLoaded/index.js.map +1 -0
- package/dist/components/{FastaPageHeaderCenterComponent → fasta/FastaPageHeaderCenterComponent}/FastaPageHeaderCenterComponent.d.ts +1 -1
- package/dist/components/{FastaPageHeaderCenterComponent → fasta/FastaPageHeaderCenterComponent}/index.js +2 -2
- package/dist/components/fasta/FastaPageHeaderCenterComponent/index.js.map +1 -0
- package/dist/components/fasta/FastaPageHeaderImportButton/index.js +27 -0
- package/dist/components/fasta/FastaPageHeaderImportButton/index.js.map +1 -0
- package/dist/components/{FastaPageHeaderResetButton → fasta/FastaPageHeaderResetButton}/index.js +1 -1
- package/dist/components/fasta/FastaPageHeaderResetButton/index.js.map +1 -0
- package/dist/components/ui/ButtonWithMenu/ButtonWithMenu.d.ts +12 -0
- package/dist/components/ui/ButtonWithMenu/index.d.ts +1 -0
- package/dist/components/ui/ButtonWithMenu/index.js +47 -0
- package/dist/components/ui/ButtonWithMenu/index.js.map +1 -0
- package/dist/components/ui/GenericErrorMessage/GenericErrorMessage.d.ts +4 -0
- package/dist/components/ui/GenericErrorMessage/index.d.ts +1 -0
- package/dist/components/ui/GenericErrorMessage/index.js +44 -0
- package/dist/components/ui/GenericErrorMessage/index.js.map +1 -0
- package/dist/components/ui/I18nWrapper/index.js +21 -0
- package/dist/components/ui/I18nWrapper/index.js.map +1 -0
- package/dist/components/ui/PageCommon/PageCommon.d.ts +7 -0
- package/dist/components/ui/PageCommon/index.d.ts +1 -0
- package/dist/components/ui/PageCommon/index.js +55 -0
- package/dist/components/ui/PageCommon/index.js.map +1 -0
- package/dist/components/ui/PageCommonDrawer/index.d.ts +1 -0
- package/dist/components/ui/PageCommonDrawer/index.js +30 -0
- package/dist/components/ui/PageCommonDrawer/index.js.map +1 -0
- package/dist/components/{page → ui/PageCommonHeader}/PageCommonHeader.d.ts +1 -2
- package/dist/components/ui/PageCommonHeader/index.d.ts +1 -0
- package/dist/components/ui/PageCommonHeader/index.js +107 -0
- package/dist/components/ui/PageCommonHeader/index.js.map +1 -0
- package/dist/constants/config.constants.d.ts +9 -0
- package/dist/constants/config.constants.js +6 -0
- package/dist/constants/config.constants.js.map +1 -0
- package/dist/constants/page.constants.js +6 -0
- package/dist/constants/page.constants.js.map +1 -0
- package/dist/context/commonConfigContext/CommonConfigContext.d.ts +9 -0
- package/dist/context/commonConfigContext/CommonConfigContextProvider.d.ts +6 -0
- package/dist/context/commonConfigContext/index.d.ts +3 -0
- package/dist/context/commonConfigContext/index.js +34 -0
- package/dist/context/commonConfigContext/index.js.map +1 -0
- package/dist/context/commonConfigContext/useCommonConfigContext.d.ts +3 -0
- package/dist/context/pageCommonContext/PageCommonContext.d.ts +17 -0
- package/dist/context/pageCommonContext/PageCommonContextProvider.d.ts +4 -0
- package/dist/context/pageCommonContext/index.d.ts +2 -0
- package/dist/context/pageCommonContext/index.js +26 -0
- package/dist/context/pageCommonContext/index.js.map +1 -0
- package/dist/hooks/useConfig/index.d.ts +1 -0
- package/dist/hooks/useConfig/index.js +7 -0
- package/dist/hooks/useConfig/index.js.map +1 -0
- package/dist/hooks/useConfig/useConfig.d.ts +2 -0
- package/dist/hooks/useUpdateDocumentTitle/index.d.ts +1 -0
- package/dist/hooks/useUpdateDocumentTitle/index.js +13 -0
- package/dist/hooks/useUpdateDocumentTitle/index.js.map +1 -0
- package/dist/hooks/useUpdateDocumentTitle/useUpdateDocumentTitle.d.ts +1 -0
- package/dist/models/config.models.d.ts +16 -0
- package/dist/models/{fasta.js → fasta.models.js} +2 -2
- package/dist/models/fasta.models.js.map +1 -0
- package/dist/models/metadata.models.js +0 -0
- package/dist/pages/ErrorPage/ErrorPage.d.ts +4 -0
- package/dist/pages/ErrorPage/index.d.ts +1 -0
- package/dist/pages/ErrorPage/index.js +17 -0
- package/dist/pages/ErrorPage/index.js.map +1 -0
- package/dist/stores/fastaDataStore/fastaDataStore.d.ts +2 -2
- package/dist/stores/fastaDataStore/index.js +17 -15
- package/dist/stores/fastaDataStore/index.js.map +1 -1
- package/dist/theme/index.js +17 -17
- package/dist/theme/index.js.map +1 -1
- package/dist/utils/DependencyContainerUtil/DependencyContainerUtil.d.ts +6 -0
- package/dist/utils/DependencyContainerUtil/index.d.ts +1 -0
- package/dist/utils/DependencyContainerUtil/index.js +18 -0
- package/dist/utils/DependencyContainerUtil/index.js.map +1 -0
- package/dist/utils/ExportUtil/ExportUtil.d.ts +6 -0
- package/dist/utils/ExportUtil/index.d.ts +1 -0
- package/dist/utils/ExportUtil/index.js +42 -0
- package/dist/utils/ExportUtil/index.js.map +1 -0
- package/dist/utils/FastaUtil/FastaUtil.d.ts +1 -1
- package/dist/utils/FastaUtil/index.js.map +1 -1
- package/dist/utils/MetaDataUtil/MetaDataUtil.d.ts +1 -1
- package/dist/utils/MetaDataUtil/index.js.map +1 -1
- package/dist/utils/StandardConfigUtil/StandardConfigUtil.d.ts +4 -0
- package/dist/utils/StandardConfigUtil/index.d.ts +1 -0
- package/dist/utils/StandardConfigUtil/index.js +18 -0
- package/dist/utils/StandardConfigUtil/index.js.map +1 -0
- package/dist/utils/UrlUtil/index.js +6 -5
- package/dist/utils/UrlUtil/index.js.map +1 -1
- package/package.json +111 -47
- package/dist/_chunks/FastaDataImportDialog.js.map +0 -1
- package/dist/components/FastaDataImportDialog/index.js +0 -1
- package/dist/components/FastaDataImportDialogLoader/index.js +0 -70
- package/dist/components/FastaDataImportDialogLoader/index.js.map +0 -1
- package/dist/components/FastaNotLoaded/index.js +0 -53
- package/dist/components/FastaNotLoaded/index.js.map +0 -1
- package/dist/components/FastaPageHeaderCenterComponent/index.js.map +0 -1
- package/dist/components/FastaPageHeaderImportButton/index.js +0 -26
- package/dist/components/FastaPageHeaderImportButton/index.js.map +0 -1
- package/dist/components/FastaPageHeaderResetButton/index.js.map +0 -1
- package/dist/components/I18nWrapper/index.js +0 -21
- package/dist/components/I18nWrapper/index.js.map +0 -1
- package/dist/components/PageHeaderDocumentationButton/PageHeaderDocumentationButton.d.ts +0 -1
- package/dist/components/PageHeaderDocumentationButton/index.d.ts +0 -1
- package/dist/components/PageHeaderDocumentationButton/index.js +0 -24
- package/dist/components/PageHeaderDocumentationButton/index.js.map +0 -1
- package/dist/components/page/ErrorPageCommon.d.ts +0 -4
- package/dist/components/page/PageCommon.d.ts +0 -8
- package/dist/components/page/PageCommonContext.d.ts +0 -7
- package/dist/components/page/PageCommonContextProvider.d.ts +0 -3
- package/dist/components/page/index.d.ts +0 -6
- package/dist/components/page/index.js +0 -207
- package/dist/components/page/index.js.map +0 -1
- package/dist/constants/page.js +0 -6
- package/dist/constants/page.js.map +0 -1
- package/dist/models/fasta.js.map +0 -1
- /package/dist/components/{FastaDataImportDialog → fasta/FastaDataImportDialog}/FastaDataImportDialog.d.ts +0 -0
- /package/dist/components/{FastaDataImportDialog → fasta/FastaDataImportDialog}/index.d.ts +0 -0
- /package/dist/components/{FastaDataImportDialogLoader → fasta/FastaDataImportDialogLoader}/index.d.ts +0 -0
- /package/dist/components/{FastaNotLoaded → fasta/FastaNotLoaded}/FastaNotLoaded.d.ts +0 -0
- /package/dist/components/{FastaNotLoaded → fasta/FastaNotLoaded}/index.d.ts +0 -0
- /package/dist/components/{FastaPageHeaderCenterComponent → fasta/FastaPageHeaderCenterComponent}/index.d.ts +0 -0
- /package/dist/components/{FastaPageHeaderImportButton → fasta/FastaPageHeaderImportButton}/FastaPageHeaderImportButton.d.ts +0 -0
- /package/dist/components/{FastaPageHeaderImportButton → fasta/FastaPageHeaderImportButton}/index.d.ts +0 -0
- /package/dist/components/{FastaPageHeaderResetButton → fasta/FastaPageHeaderResetButton}/FastaPageHeaderResetButton.d.ts +0 -0
- /package/dist/components/{FastaPageHeaderResetButton → fasta/FastaPageHeaderResetButton}/index.d.ts +0 -0
- /package/dist/components/{I18nWrapper → ui/I18nWrapper}/I18nWrapper.d.ts +0 -0
- /package/dist/components/{I18nWrapper → ui/I18nWrapper}/index.d.ts +0 -0
- /package/dist/components/{page → ui/PageCommonDrawer}/PageCommonDrawer.d.ts +0 -0
- /package/dist/constants/{page.d.ts → page.constants.d.ts} +0 -0
- /package/dist/models/{metadata.js → config.models.js} +0 -0
- /package/dist/models/{fasta.d.ts → fasta.models.d.ts} +0 -0
- /package/dist/models/{metadata.d.ts → metadata.models.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_Fragment","ButtonWithMenu","anchorElement","setAnchorElement","useState","isMenuOpen","onClickMenu","useCallback","event","onCloseMenu","Fragment","Button","label","Menu","items","itemLabel","MenuItem","onClick","ListItemIcon","icon","ListItemText"],"sources":["../../../../src/components/ui/ButtonWithMenu/ButtonWithMenu.tsx"],"sourcesContent":["import {\n Button,\n ListItemIcon,\n ListItemText,\n Menu,\n MenuItem,\n} from '@mui/material';\nimport {\n useCallback,\n useState,\n} from 'react';\nimport type {\n MouseEvent,\n ReactElement,\n} from 'react';\n\nexport type ButtonWithMenuProps = {\n disabled?: boolean;\n items: Array<{\n icon: ReactElement;\n label: string;\n onClick: () => void;\n }>;\n label: string;\n startIcon?: ReactElement;\n};\n\nexport const ButtonWithMenu = ({ disabled, items, label, startIcon }: ButtonWithMenuProps) => {\n const [anchorElement, setAnchorElement] = useState<HTMLElement | null>(null);\n const isMenuOpen = Boolean(anchorElement);\n\n const onClickMenu = useCallback((event: MouseEvent<HTMLButtonElement>) => {\n setAnchorElement(event.currentTarget);\n }, []);\n\n const onCloseMenu = useCallback(() => {\n setAnchorElement(null);\n }, []);\n\n return (\n <>\n <Button\n color={'inherit'}\n disabled={disabled}\n onClick={onClickMenu}\n size={'small'}\n startIcon={startIcon}\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 {label}\n </Button>\n <Menu\n anchorEl={anchorElement}\n anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}\n onClose={onCloseMenu}\n open={isMenuOpen}\n transformOrigin={{ horizontal: 'right', vertical: 'top' }}\n >\n {items.map(({ icon, label: itemLabel, onClick }) => (\n <MenuItem\n key={itemLabel}\n // eslint-disable-next-line @eslint-react/kit/jsx-no-bind\n onClick={() => {\n onCloseMenu();\n onClick();\n }}\n >\n <ListItemIcon>\n {icon}\n </ListItemIcon>\n <ListItemText primary={itemLabel} />\n </MenuItem>\n ))}\n </Menu>\n </>\n );\n};\n"],"mappings":";;;;AA2BA,IAAaC,KAAkB,EAAE,aAAU,UAAO,UAAO,mBAAqC;CAC5F,IAAM,CAACC,GAAeC,KAAoBC,EAA6B,IAAI,GACrEC,IAAa,EAAQH,GAErBI,IAAcC,GAAa,MAAyC;EACxE,EAAiBC,EAAM,aAAa;CACtC,GAAG,CAAC,CAAC,GAECC,IAAcF,QAAkB;EACpC,EAAiB,IAAI;CACvB,GAAG,CAAC,CAAC;CAEL,OACE,kBAAAP,GAAA,EAAA,UAAA,CACE,kBAACW,GAAD;EACE,OAAO;EACG;EACV,SAASL;EACT,MAAM;EACK;EACX,IAAI;GACF,WAAW,EACT,iBAAiB,4BACnB;GACA,iBAAiB;GACjB,OAAO;EACT;EACA,SAAS;EAER,UAAAM;CACK,CAAA,GACR,kBAACC,GAAD;EACE,UAAUX;EACV,cAAc;GAAE,YAAY;GAAS,UAAU;EAAS;EACxD,SAASO;EACT,MAAMJ;EACN,iBAAiB;GAAE,YAAY;GAAS,UAAU;EAAM;EAEvD,UAAAS,EAAM,KAAK,EAAE,SAAM,OAAOC,GAAW,iBACpC,kBAACC,GAAD;GAGE,eAAe;IAEb,AADAP,EAAY,GACZQ,EAAQ;GACV;GANF,UAAA,CAQE,kBAACC,GAAD,EAAA,UACGC,EACW,CAAA,GACd,kBAACC,GAAD,EAAc,SAASL,EAAY,CAAA,CAC3B;EAXH,GAAAA,CAWG,CACX;CACG,CAAA,CACN,EAAA,CAAA;AAEN"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './GenericErrorMessage';
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Box as e, Typography as t } from "@mui/material";
|
|
2
|
+
import { t as n } from "i18next";
|
|
3
|
+
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
4
|
+
//#region src/components/ui/GenericErrorMessage/GenericErrorMessage.tsx
|
|
5
|
+
var a = ({ error: a }) => /* @__PURE__ */ i(e, {
|
|
6
|
+
sx: {
|
|
7
|
+
alignItems: "center",
|
|
8
|
+
display: "flex",
|
|
9
|
+
flexDirection: "column",
|
|
10
|
+
justifyContent: "center",
|
|
11
|
+
width: "100%"
|
|
12
|
+
},
|
|
13
|
+
children: [
|
|
14
|
+
/* @__PURE__ */ r(e, {
|
|
15
|
+
sx: { padding: 1 },
|
|
16
|
+
children: /* @__PURE__ */ r(t, {
|
|
17
|
+
variant: "h1",
|
|
18
|
+
children: n`Something went wrong`
|
|
19
|
+
})
|
|
20
|
+
}),
|
|
21
|
+
/* @__PURE__ */ r(e, {
|
|
22
|
+
sx: { padding: 1 },
|
|
23
|
+
children: /* @__PURE__ */ r(t, {
|
|
24
|
+
variant: "body2",
|
|
25
|
+
children: a instanceof Error ? a.message : n`An unexpected error occurred.`
|
|
26
|
+
})
|
|
27
|
+
}),
|
|
28
|
+
/* @__PURE__ */ i(e, {
|
|
29
|
+
sx: { padding: 1 },
|
|
30
|
+
children: [/* @__PURE__ */ r(t, {
|
|
31
|
+
variant: "h6",
|
|
32
|
+
children: n`Details for our technicians`
|
|
33
|
+
}), /* @__PURE__ */ r(e, {
|
|
34
|
+
component: "pre",
|
|
35
|
+
sx: { fontSize: "0.8rem" },
|
|
36
|
+
children: a?.stack
|
|
37
|
+
})]
|
|
38
|
+
})
|
|
39
|
+
]
|
|
40
|
+
});
|
|
41
|
+
//#endregion
|
|
42
|
+
export { a as GenericErrorMessage };
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["GenericErrorMessage","Box","Typography","error"],"sources":["../../../../src/components/ui/GenericErrorMessage/GenericErrorMessage.tsx"],"sourcesContent":["import {\n Box,\n Typography,\n} from '@mui/material';\nimport { t } from 'i18next';\n\nexport type GenericErrorMessageProps = {\n error: unknown;\n};\n\nexport const GenericErrorMessage = ({ error }: GenericErrorMessageProps) => {\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"],"mappings":";;;;AAUA,IAAaA,KAAuB,EAAE,eAElC,kBAACC,GAAD;CACE,IAAI;EACF,YAAY;EACZ,SAAS;EACT,eAAe;EACf,gBAAgB;EAChB,OAAO;CACT;CAPF,UAAA;EASE,kBAACA,GAAD;GAAK,IAAI,EAAE,SAAS,EAAE;GACpB,UAAA,kBAACC,GAAD;IACE,SAAS;IAER,UAAA,CAAC;GACQ,CAAA;EACT,CAAA;EACL,kBAACD,GAAD;GAAK,IAAI,EAAE,SAAS,EAAE;GACpB,UAAA,kBAACC,GAAD;IACE,SAAS;IAER,UAAAC,aAAiB,QAAQA,EAAM,UAAU,CAAC;GACjC,CAAA;EACT,CAAA;EACL,kBAACF,GAAD;GAAK,IAAI,EAAE,SAAS,EAAE;GAAtB,UAAA,CACE,kBAACC,GAAD;IAAY,SAAS;IAClB,UAAA,CAAC;GACQ,CAAA,GACZ,kBAACD,GAAD;IACE,WAAW;IACX,IAAI,EACF,UAAU,SACZ;IAEE,UAAAE,GAAiB;GAChB,CAAA,CACF;;CACF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { initReactI18next as e } from "react-i18next";
|
|
2
|
+
import t from "i18next";
|
|
3
|
+
import { Fragment as n, jsx as r } from "react/jsx-runtime";
|
|
4
|
+
import { useEffect as i, useState as a } from "react";
|
|
5
|
+
//#region src/components/ui/I18nWrapper/I18nWrapper.tsx
|
|
6
|
+
var o = ({ children: o }) => {
|
|
7
|
+
let [s, c] = a(!1);
|
|
8
|
+
return i(() => {
|
|
9
|
+
(async () => {
|
|
10
|
+
await t.use(e).init({
|
|
11
|
+
interpolation: { escapeValue: !1 },
|
|
12
|
+
lng: "en",
|
|
13
|
+
resources: { en: { translation: {} } }
|
|
14
|
+
}), c(!0);
|
|
15
|
+
})();
|
|
16
|
+
}, []), /* @__PURE__ */ r(n, { children: s ? o : null });
|
|
17
|
+
};
|
|
18
|
+
//#endregion
|
|
19
|
+
export { o as I18nWrapper };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_Fragment","i18n","I18nWrapper","isInitialized","setIsInitialized","useState","useEffect","initReactI18next","Fragment","children"],"sources":["../../../../src/components/ui/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,IAAaE,KAAe,EAAE,kBAAwC;CACpE,IAAM,CAACC,GAAeC,KAAoBC,EAAS,EAAK;CAwBxD,OAtBAC,QAAgB;EAkBd,aAjB0C;GAexC,AAdA,MAAML,EACH,IAAIM,CAAgB,CAAC,CACrB,KAAK;IACJ,eAAe,EACb,aAAa,GACf;IACA,KAAK;IACL,WAAW,EACT,IAAI,EACF,aAAa,CACb,EACF,EACF;GACF,CAAC,GACHH,EAAiB,EAAI;EACvB,EACK,CAAsB;CAC7B,GAAG,CAAC,CAAC,GAIH,kBAAAJ,GAAA,EAAA,UACGG,IAAgBM,IAAW,KAC5B,CAAA;AAEN"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type PageCommonProps = {
|
|
3
|
+
readonly children: ReactNode;
|
|
4
|
+
readonly isNoInteraction?: boolean;
|
|
5
|
+
readonly title: string;
|
|
6
|
+
};
|
|
7
|
+
export declare const PageCommon: ({ children, isNoInteraction, title }: PageCommonProps) => import('react').JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './PageCommon';
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import "../../../constants/page.constants.js";
|
|
2
|
+
import { PageCommonContext as e } from "../../../context/pageCommonContext/index.js";
|
|
3
|
+
import { useConfig as t } from "../../../hooks/useConfig/index.js";
|
|
4
|
+
import { useUpdateDocumentTitle as n } from "../../../hooks/useUpdateDocumentTitle/index.js";
|
|
5
|
+
import { Box as r, useTheme as i } from "@mui/material";
|
|
6
|
+
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
7
|
+
import { use as s, useEffect as c } from "react";
|
|
8
|
+
//#region src/components/ui/PageCommon/PageCommon.tsx
|
|
9
|
+
var l = ({ children: l, isNoInteraction: u, title: d }) => {
|
|
10
|
+
let { drawerComponent: f, headerComponent: p } = t();
|
|
11
|
+
n(d);
|
|
12
|
+
let m = i(), { drawerContainerId: h, isDrawerOpen: g, setIsNoInteraction: _ } = s(e);
|
|
13
|
+
return c(() => {
|
|
14
|
+
_(!!u);
|
|
15
|
+
}, [u, _]), /* @__PURE__ */ o(r, {
|
|
16
|
+
sx: {
|
|
17
|
+
display: "grid",
|
|
18
|
+
gridTemplateRows: "max-content auto",
|
|
19
|
+
height: "100vh",
|
|
20
|
+
overflow: "hidden",
|
|
21
|
+
position: "relative",
|
|
22
|
+
width: "100vw"
|
|
23
|
+
},
|
|
24
|
+
children: [p && /* @__PURE__ */ a(p, {}), /* @__PURE__ */ o(r, {
|
|
25
|
+
id: h,
|
|
26
|
+
sx: {
|
|
27
|
+
display: "flex",
|
|
28
|
+
flex: 1,
|
|
29
|
+
height: "100%",
|
|
30
|
+
overflow: "hidden",
|
|
31
|
+
position: "relative",
|
|
32
|
+
width: "100%"
|
|
33
|
+
},
|
|
34
|
+
children: [f && /* @__PURE__ */ a(f, {}), /* @__PURE__ */ a(r, {
|
|
35
|
+
component: "main",
|
|
36
|
+
sx: {
|
|
37
|
+
flexGrow: 1,
|
|
38
|
+
height: "100%",
|
|
39
|
+
overflow: "hidden",
|
|
40
|
+
position: "relative",
|
|
41
|
+
transition: () => m.transitions.create(["margin", "width"], {
|
|
42
|
+
duration: m.transitions.duration.leavingScreen,
|
|
43
|
+
easing: m.transitions.easing.sharp
|
|
44
|
+
}),
|
|
45
|
+
width: g ? "calc(100% - 340px)" : "100%"
|
|
46
|
+
},
|
|
47
|
+
children: l
|
|
48
|
+
})]
|
|
49
|
+
})]
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
//#endregion
|
|
53
|
+
export { l as PageCommon };
|
|
54
|
+
|
|
55
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["PageCommon","DrawerComponent","HeaderComponent","useConfig","title","theme","useTheme","use","PageCommonContext","useEffect","isNoInteraction","setIsNoInteraction","Box","drawerContainerId","isDrawerOpen"],"sources":["../../../../src/components/ui/PageCommon/PageCommon.tsx"],"sourcesContent":["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.constants';\nimport { PageCommonContext } from '../../../context/pageCommonContext';\nimport { useUpdateDocumentTitle } from '../../../hooks/useUpdateDocumentTitle';\nimport { useConfig } from '../../../hooks/useConfig';\n\nexport type PageCommonProps = {\n readonly children: ReactNode;\n readonly isNoInteraction?: boolean;\n readonly title: string;\n};\n\n\nexport const PageCommon = ({ children, isNoInteraction, title }: PageCommonProps) => {\n const { drawerComponent: DrawerComponent, headerComponent: HeaderComponent } = useConfig();\n\n useUpdateDocumentTitle(title);\n const theme = useTheme();\n const { drawerContainerId, isDrawerOpen, setIsNoInteraction } = use(PageCommonContext);\n\n useEffect(() => {\n setIsNoInteraction(!!isNoInteraction);\n }, [isNoInteraction, setIsNoInteraction]);\n\n return (\n <Box\n sx={{\n display: 'grid',\n gridTemplateRows: 'max-content auto',\n height: '100vh',\n overflow: 'hidden',\n position: 'relative',\n width: '100vw',\n }}\n >\n {HeaderComponent && <HeaderComponent />}\n <Box\n id={drawerContainerId}\n sx={{\n display: 'flex',\n flex: 1,\n height: '100%',\n overflow: 'hidden',\n position: 'relative',\n width: '100%',\n }}\n >\n {DrawerComponent && <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"],"mappings":";;;;;;;;AAsBA,IAAaA,KAAc,EAAE,aAAU,oBAAiB,eAA6B;CACnF,IAAM,EAAE,iBAAiBC,GAAiB,iBAAiBC,MAAoBC,EAAU;CAEzF,EAAuBC,CAAK;CAC5B,IAAMC,IAAQC,EAAS,GACjB,EAAE,sBAAmB,iBAAc,0BAAuBC,EAAIC,CAAiB;CAMrF,OAJAC,QAAgB;EACd,EAAmB,CAAC,CAACC,CAAe;CACtC,GAAG,CAACA,GAAiBC,CAAkB,CAAC,GAGtC,kBAACC,GAAD;EACE,IAAI;GACF,SAAS;GACT,kBAAkB;GAClB,QAAQ;GACR,UAAU;GACV,UAAU;GACV,OAAO;EACT;EARF,UAAA,CAUGV,KAAmB,kBAACA,GAAD,CAAkB,CAAA,GACtC,kBAACU,GAAD;GACE,IAAIC;GACJ,IAAI;IACF,SAAS;IACT,MAAM;IACN,QAAQ;IACR,UAAU;IACV,UAAU;IACV,OAAO;GACT;GATF,UAAA,CAWGZ,KAAmB,kBAACA,GAAD,CAAkB,CAAA,GACtC,kBAACW,GAAD;IACE,WAAW;IACX,IAAI;KACF,UAAU;KACV,QAAQ;KACR,UAAU;KACV,UAAU;KACV,kBACEP,EAAM,YAAY,OAAO,CAAC,UAAU,OAAO,GAAG;MAC5C,UAAUA,EAAM,YAAY,SAAS;MACrC,QAAQA,EAAM,YAAY,OAAO;KACnC,CAAC;KACH,OAAOS,IAAe,uBAAmC;IAC3D;IAEC;GACE,CAAA,CAEF;EACF,CAAA,CAAA;;AAET"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './PageCommonDrawer';
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import "../../../constants/page.constants.js";
|
|
2
|
+
import { PageCommonContext as e } from "../../../context/pageCommonContext/index.js";
|
|
3
|
+
import { Drawer as t } from "@mui/material";
|
|
4
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
5
|
+
import { use as r } from "react";
|
|
6
|
+
//#region src/components/ui/PageCommonDrawer/PageCommonDrawer.tsx
|
|
7
|
+
var i = ({ children: i }) => {
|
|
8
|
+
let { drawerContainerId: a, isDrawerOpen: o } = r(e);
|
|
9
|
+
return /* @__PURE__ */ n(t, {
|
|
10
|
+
anchor: "left",
|
|
11
|
+
ModalProps: {
|
|
12
|
+
container: () => document.getElementById(a),
|
|
13
|
+
style: { position: "absolute" }
|
|
14
|
+
},
|
|
15
|
+
open: o,
|
|
16
|
+
sx: { "& .MuiDrawer-paper": {
|
|
17
|
+
flexShrink: 0,
|
|
18
|
+
height: "100%",
|
|
19
|
+
overflowY: "auto",
|
|
20
|
+
position: "absolute",
|
|
21
|
+
width: o ? 340 : 0
|
|
22
|
+
} },
|
|
23
|
+
variant: "persistent",
|
|
24
|
+
children: i
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
//#endregion
|
|
28
|
+
export { i as PageCommonDrawer };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["PageCommonDrawer","use","PageCommonContext","Drawer","drawerContainerId","isDrawerOpen"],"sources":["../../../../src/components/ui/PageCommonDrawer/PageCommonDrawer.tsx"],"sourcesContent":["import { Drawer } from '@mui/material';\nimport { use } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { DRAWER_WIDTH } from '../../../constants/page.constants';\nimport { PageCommonContext } from '../../../context/pageCommonContext';\n\nexport type PageCommonDrawerProps = {\n readonly children: ReactNode;\n};\n\nexport const PageCommonDrawer = ({ children }: PageCommonDrawerProps) => {\n const { drawerContainerId, isDrawerOpen } = use(PageCommonContext);\n\n return (\n <Drawer\n anchor={'left'}\n ModalProps={{\n container: () => document.getElementById(drawerContainerId),\n style: { position: 'absolute' }, // Forces modal overlay to stay inside the container\n }}\n open={isDrawerOpen}\n sx={{\n '& .MuiDrawer-paper': {\n flexShrink: 0,\n height: '100%',\n overflowY: 'auto',\n position: 'absolute',\n width: isDrawerOpen ? DRAWER_WIDTH : 0,\n },\n }}\n variant={'persistent'}\n >\n {children}\n </Drawer>\n );\n};\n"],"mappings":";;;;;;AAWA,IAAaA,KAAoB,EAAE,kBAAsC;CACvE,IAAM,EAAE,sBAAmB,oBAAiBC,EAAIC,CAAiB;CAEjE,OACE,kBAACC,GAAD;EACE,QAAQ;EACR,YAAY;GACV,iBAAiB,SAAS,eAAeC,CAAiB;GAC1D,OAAO,EAAE,UAAU,WAAW;EAChC;EACA,MAAMC;EACN,IAAI,EACF,sBAAsB;GACpB,YAAY;GACZ,QAAQ;GACR,WAAW;GACX,UAAU;GACV,OAAOA,IAAA,MAA8B;EACvC,EACF;EACA,SAAS;EAER;CACK,CAAA;AAEZ"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
2
|
export type PageCommonHeaderProps = {
|
|
3
3
|
readonly centerComponent?: ReactNode;
|
|
4
|
-
readonly icon?: ReactNode;
|
|
5
4
|
readonly rightComponent?: ReactNode;
|
|
6
5
|
readonly title: string;
|
|
7
6
|
};
|
|
8
|
-
export declare const PageCommonHeader: ({ centerComponent,
|
|
7
|
+
export declare const PageCommonHeader: ({ centerComponent, rightComponent, title }: PageCommonHeaderProps) => import('react').JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './PageCommonHeader';
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { PageCommonContext as e } from "../../../context/pageCommonContext/index.js";
|
|
2
|
+
import { AppBar as t, Box as n, IconButton as r, Toolbar as i, Typography as a, useTheme as o } from "@mui/material";
|
|
3
|
+
import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
4
|
+
import { use as u, useCallback as d } from "react";
|
|
5
|
+
import f from "@mui/icons-material/Menu";
|
|
6
|
+
//#region src/components/ui/PageCommonHeader/PageCommonHeader.tsx
|
|
7
|
+
var p = ({ centerComponent: p, rightComponent: m, title: h }) => {
|
|
8
|
+
let g = o(), { afterAppBarComponent: _, afterAppBarRightComponent: v, appBarHeight: y = 48, appBarIcon: b, beforeAppBarComponent: x, beforeAppBarRightComponent: S, isDrawerOpen: C, isNoInteraction: w, setIsDrawerOpen: T } = u(e), E = d(() => {
|
|
9
|
+
T(!C);
|
|
10
|
+
}, [C, T]);
|
|
11
|
+
return /* @__PURE__ */ l(n, { children: [
|
|
12
|
+
x,
|
|
13
|
+
/* @__PURE__ */ c(t, {
|
|
14
|
+
elevation: 1,
|
|
15
|
+
position: "static",
|
|
16
|
+
sx: {
|
|
17
|
+
backgroundColor: "primary.main",
|
|
18
|
+
color: "#FFFFFF",
|
|
19
|
+
height: y,
|
|
20
|
+
justifyContent: "center",
|
|
21
|
+
zIndex: g.zIndex.drawer + 1
|
|
22
|
+
},
|
|
23
|
+
children: /* @__PURE__ */ l(i, {
|
|
24
|
+
sx: {
|
|
25
|
+
display: "flex",
|
|
26
|
+
justifyContent: "space-between",
|
|
27
|
+
px: `${g.spacing(1)} !important`
|
|
28
|
+
},
|
|
29
|
+
variant: "dense",
|
|
30
|
+
children: [/* @__PURE__ */ l(n, {
|
|
31
|
+
sx: {
|
|
32
|
+
alignItems: "center",
|
|
33
|
+
display: "flex",
|
|
34
|
+
gap: 1.5
|
|
35
|
+
},
|
|
36
|
+
children: [
|
|
37
|
+
!w && /* @__PURE__ */ c(r, {
|
|
38
|
+
"aria-label": "open drawer",
|
|
39
|
+
color: "inherit",
|
|
40
|
+
edge: "start",
|
|
41
|
+
onClick: E,
|
|
42
|
+
size: "small",
|
|
43
|
+
children: /* @__PURE__ */ c(f, {})
|
|
44
|
+
}),
|
|
45
|
+
b && /* @__PURE__ */ c(s, { children: b }),
|
|
46
|
+
/* @__PURE__ */ c(a, {
|
|
47
|
+
component: "div",
|
|
48
|
+
noWrap: !0,
|
|
49
|
+
sx: {
|
|
50
|
+
color: "inherit",
|
|
51
|
+
fontSize: "1.05rem",
|
|
52
|
+
fontWeight: 700,
|
|
53
|
+
letterSpacing: "-0.01em"
|
|
54
|
+
},
|
|
55
|
+
variant: "h6",
|
|
56
|
+
children: h
|
|
57
|
+
})
|
|
58
|
+
]
|
|
59
|
+
}), !w && /* @__PURE__ */ l(s, { children: [/* @__PURE__ */ c(n, {
|
|
60
|
+
sx: {
|
|
61
|
+
alignItems: "center",
|
|
62
|
+
display: "flex",
|
|
63
|
+
gap: 1
|
|
64
|
+
},
|
|
65
|
+
children: p
|
|
66
|
+
}), /* @__PURE__ */ l(n, {
|
|
67
|
+
sx: {
|
|
68
|
+
alignItems: "center",
|
|
69
|
+
display: "flex",
|
|
70
|
+
gap: 1
|
|
71
|
+
},
|
|
72
|
+
children: [
|
|
73
|
+
S && /* @__PURE__ */ c(n, {
|
|
74
|
+
sx: {
|
|
75
|
+
alignItems: "center",
|
|
76
|
+
display: "flex",
|
|
77
|
+
gap: 1
|
|
78
|
+
},
|
|
79
|
+
children: S
|
|
80
|
+
}),
|
|
81
|
+
/* @__PURE__ */ c(n, {
|
|
82
|
+
sx: {
|
|
83
|
+
alignItems: "center",
|
|
84
|
+
display: "flex",
|
|
85
|
+
gap: 1
|
|
86
|
+
},
|
|
87
|
+
children: m
|
|
88
|
+
}),
|
|
89
|
+
v && /* @__PURE__ */ c(n, {
|
|
90
|
+
sx: {
|
|
91
|
+
alignItems: "center",
|
|
92
|
+
display: "flex",
|
|
93
|
+
gap: 1
|
|
94
|
+
},
|
|
95
|
+
children: v
|
|
96
|
+
})
|
|
97
|
+
]
|
|
98
|
+
})] })]
|
|
99
|
+
})
|
|
100
|
+
}),
|
|
101
|
+
_
|
|
102
|
+
] });
|
|
103
|
+
};
|
|
104
|
+
//#endregion
|
|
105
|
+
export { p as PageCommonHeader };
|
|
106
|
+
|
|
107
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_Fragment","MenuIcon","PageCommonHeader","theme","useTheme","use","PageCommonContext","onToggleDrawerButtonClick","useCallback","isDrawerOpen","setIsDrawerOpen","Box","beforeAppBarComponent","AppBar","appBarHeight","Toolbar","isNoInteraction","IconButton","appBarIcon","Fragment","Typography","title","centerComponent","beforeAppBarRightComponent","rightComponent","afterAppBarRightComponent","afterAppBarComponent"],"sources":["../../../../src/components/ui/PageCommonHeader/PageCommonHeader.tsx"],"sourcesContent":["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 useTheme,\n} from '@mui/material';\nimport MenuIcon from '@mui/icons-material/Menu';\n\nimport { PageCommonContext } from '../../../context/pageCommonContext';\n\n\nexport type PageCommonHeaderProps = {\n readonly centerComponent?: ReactNode;\n readonly rightComponent?: ReactNode;\n readonly title: string;\n};\n\nexport const PageCommonHeader = ({ centerComponent, rightComponent, title }: PageCommonHeaderProps) => {\n const theme = useTheme();\n const { afterAppBarComponent, afterAppBarRightComponent, appBarHeight = 48, appBarIcon, beforeAppBarComponent, beforeAppBarRightComponent, isDrawerOpen, isNoInteraction, setIsDrawerOpen } = use(PageCommonContext);\n\n const onToggleDrawerButtonClick = useCallback(() => {\n setIsDrawerOpen(!isDrawerOpen);\n }, [isDrawerOpen, setIsDrawerOpen]);\n\n return (\n <Box>\n {beforeAppBarComponent}\n <AppBar\n elevation={1}\n position={'static'}\n sx={{\n backgroundColor: 'primary.main',\n color: '#FFFFFF',\n height: appBarHeight,\n justifyContent: 'center',\n zIndex: theme.zIndex.drawer + 1,\n }}\n >\n <Toolbar\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n px: `${theme.spacing(1)} !important`, // using !important to override media queries\n }}\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 {appBarIcon && (\n <>\n {appBarIcon}\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 </Box>\n {!isNoInteraction && (\n <>\n <Box sx={{ alignItems: 'center', display: 'flex', gap: 1 }}>\n {centerComponent}\n </Box>\n <Box sx={{ alignItems: 'center', display: 'flex', gap: 1 }}>\n {beforeAppBarRightComponent && (\n <Box sx={{ alignItems: 'center', display: 'flex', gap: 1 }}>\n {beforeAppBarRightComponent}\n </Box>\n )}\n <Box sx={{ alignItems: 'center', display: 'flex', gap: 1 }}>\n {rightComponent}\n </Box>\n {afterAppBarRightComponent && (\n <Box sx={{ alignItems: 'center', display: 'flex', gap: 1 }}>\n {afterAppBarRightComponent}\n </Box>\n )}\n </Box>\n </>\n )}\n </Toolbar>\n </AppBar>\n {afterAppBarComponent}\n </Box>\n );\n};\n"],"mappings":";;;;;;AAwBA,IAAaE,KAAoB,EAAE,oBAAiB,mBAAgB,eAAmC;CACrG,IAAMC,IAAQC,EAAS,GACjB,EAAE,yBAAsB,8BAA2B,kBAAe,IAAI,eAAY,0BAAuB,+BAA4B,iBAAc,oBAAiB,uBAAoBC,EAAIC,CAAiB,GAE7MC,IAA4BC,QAAkB;EAClD,EAAgB,CAACC,CAAY;CAC/B,GAAG,CAACA,GAAcC,CAAe,CAAC;CAElC,OACE,kBAACC,GAAD,EAAA,UAAA;EACGC;EACD,kBAACC,GAAD;GACE,WAAW;GACX,UAAU;GACV,IAAI;IACF,iBAAiB;IACjB,OAAO;IACP,QAAQC;IACR,gBAAgB;IAChB,QAAQX,EAAM,OAAO,SAAS;GAChC;GAEA,UAAA,kBAACY,GAAD;IACE,IAAI;KACF,SAAS;KACT,gBAAgB;KAChB,IAAI,GAAGZ,EAAM,QAAQ,CAAC,EAAE;IAC1B;IACA,SAAS;IANX,UAAA,CASE,kBAACQ,GAAD;KAAK,IAAI;MAAE,YAAY;MAAU,SAAS;MAAQ,KAAK;KAAI;KAA3D,UAAA;MACG,CAACK,KACA,kBAACC,GAAD;OACE,cAAY;OACZ,OAAO;OACP,MAAM;OACN,SAASV;OACT,MAAM;OAEN,UAAA,kBAACN,GAAD,CAAW,CAAA;MACD,CAAA;MAEbiB,KACC,kBAAAlB,GAAA,EAAA,UACGkB,EACD,CAAA;MAEJ,kBAACE,GAAD;OACE,WAAW;OACX,QAAA;OACA,IAAI;QAAE,OAAO;QAAW,UAAU;QAAW,YAAY;QAAK,eAAe;OAAU;OACvF,SAAS;OAER,UAAAC;MACS,CAAA;KACT;IACJ,CAAA,GAAA,CAACL,KACA,kBAAAhB,GAAA,EAAA,UAAA,CACE,kBAACW,GAAD;KAAK,IAAI;MAAE,YAAY;MAAU,SAAS;MAAQ,KAAK;KAAE;KACtD,UAAAW;IACE,CAAA,GACL,kBAACX,GAAD;KAAK,IAAI;MAAE,YAAY;MAAU,SAAS;MAAQ,KAAK;KAAE;KAAzD,UAAA;MACGY,KACC,kBAACZ,GAAD;OAAK,IAAI;QAAE,YAAY;QAAU,SAAS;QAAQ,KAAK;OAAE;OACtD,UAAAY;MACE,CAAA;MAEP,kBAACZ,GAAD;OAAK,IAAI;QAAE,YAAY;QAAU,SAAS;QAAQ,KAAK;OAAE;OACtD,UAAAa;MACE,CAAA;MACJC,KACC,kBAACd,GAAD;OAAK,IAAI;QAAE,YAAY;QAAU,SAAS;QAAQ,KAAK;OAAE;OACtD,UAAAc;MACE,CAAA;KAEJ;IACL,CAAA,CAAA,EAAA,CAAA,CAEG;;EACH,CAAA;EACPC;CACE,EAAA,CAAA;AAET"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { InjectionToken } from 'tsyringe';
|
|
2
|
+
import { WindowService } from '@gen-epix/ui-core/classes/services/WindowService';
|
|
3
|
+
import { DevicePixelRatioService } from '@gen-epix/ui-core/classes/services/DevicePixelRatioService';
|
|
4
|
+
import { KeyboardShortcutService } from '@gen-epix/ui-core/classes/services/KeyboardShortcutService';
|
|
5
|
+
import { ConfigBase } from '../models/config.models';
|
|
6
|
+
export declare const CONFIG_TOKEN: InjectionToken<ConfigBase>;
|
|
7
|
+
export declare const WINDOW_SERVICE_TOKEN: InjectionToken<WindowService>;
|
|
8
|
+
export declare const DEVICE_PIXEL_RATIO_SERVICE_TOKEN: InjectionToken<DevicePixelRatioService>;
|
|
9
|
+
export declare const KEYBOARD_SHORTCUT_SERVICE_TOKEN: InjectionToken<KeyboardShortcutService>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
//#region src/constants/config.constants.ts
|
|
2
|
+
var e = Symbol("CONFIG_TOKEN"), t = Symbol("WINDOW_SERVICE_TOKEN"), n = Symbol("DEVICE_PIXEL_RATIO_SERVICE_TOKEN"), r = Symbol("KEYBOARD_SHORTCUT_SERVICE_TOKEN");
|
|
3
|
+
//#endregion
|
|
4
|
+
export { e as CONFIG_TOKEN, n as DEVICE_PIXEL_RATIO_SERVICE_TOKEN, r as KEYBOARD_SHORTCUT_SERVICE_TOKEN, t as WINDOW_SERVICE_TOKEN };
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=config.constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.constants.js","names":["CONFIG_TOKEN","WINDOW_SERVICE_TOKEN","DEVICE_PIXEL_RATIO_SERVICE_TOKEN","KEYBOARD_SHORTCUT_SERVICE_TOKEN"],"sources":["../../src/constants/config.constants.ts"],"sourcesContent":["import type { InjectionToken } from 'tsyringe';\nimport type { WindowService } from '@gen-epix/ui-core/classes/services/WindowService';\nimport type { DevicePixelRatioService } from '@gen-epix/ui-core/classes/services/DevicePixelRatioService';\nimport type { KeyboardShortcutService } from '@gen-epix/ui-core/classes/services/KeyboardShortcutService';\n\nimport type { ConfigBase } from '../models/config.models';\n\nexport const CONFIG_TOKEN: InjectionToken<ConfigBase> = Symbol('CONFIG_TOKEN');\nexport const WINDOW_SERVICE_TOKEN: InjectionToken<WindowService> = Symbol('WINDOW_SERVICE_TOKEN');\nexport const DEVICE_PIXEL_RATIO_SERVICE_TOKEN: InjectionToken<DevicePixelRatioService> = Symbol('DEVICE_PIXEL_RATIO_SERVICE_TOKEN');\nexport const KEYBOARD_SHORTCUT_SERVICE_TOKEN: InjectionToken<KeyboardShortcutService> = Symbol('KEYBOARD_SHORTCUT_SERVICE_TOKEN');\n"],"mappings":";AAOA,IAAaA,IAA2C,OAAO,cAAc,GAChEC,IAAsD,OAAO,sBAAsB,GACnFC,IAA4E,OAAO,kCAAkC,GACrHC,IAA2E,OAAO,iCAAiC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page.constants.js","names":["DRAWER_WIDTH"],"sources":["../../src/constants/page.constants.ts"],"sourcesContent":["export const DRAWER_WIDTH = 340;\n"],"mappings":";AAAA,IAAaA,IAAe"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { CoreComponentsConfig } from '@gen-epix/ui-core-components/context/CoreComponentsConfigContext';
|
|
2
|
+
import { DependencyContainer } from 'tsyringe';
|
|
3
|
+
import { ConfigBase } from '../../models/config.models';
|
|
4
|
+
export type CommonConfig<TConfig extends ConfigBase = ConfigBase> = {
|
|
5
|
+
config: TConfig;
|
|
6
|
+
container: DependencyContainer;
|
|
7
|
+
genEpixCoreComponentsConfig: CoreComponentsConfig;
|
|
8
|
+
};
|
|
9
|
+
export declare const CommonConfigContext: import('react').Context<CommonConfig<ConfigBase> | null>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { PropsWithChildren } from 'react';
|
|
2
|
+
import { DependencyContainer } from 'tsyringe';
|
|
3
|
+
export type CommonConfigContextProviderProps = PropsWithChildren<{
|
|
4
|
+
readonly container: DependencyContainer;
|
|
5
|
+
}>;
|
|
6
|
+
export declare const CommonConfigContextProvider: (props: CommonConfigContextProviderProps) => import('react').JSX.Element;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { DependencyContainerUtil as e } from "../../utils/DependencyContainerUtil/index.js";
|
|
2
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
3
|
+
import { createContext as n, use as r, useMemo as i } from "react";
|
|
4
|
+
import { CoreComponentsConfigContext as a } from "@gen-epix/ui-core-components/context/CoreComponentsConfigContext";
|
|
5
|
+
//#region src/context/commonConfigContext/CommonConfigContext.tsx
|
|
6
|
+
var o = n(null), s = (n) => {
|
|
7
|
+
let { children: r, container: s } = n, c = e.resolveConfig(s), l = i(() => ({ spinner: {
|
|
8
|
+
defaultCircularProgressSize: c.spinner.DEFAULT_CIRCULAR_PROGRESS_SIZE,
|
|
9
|
+
defaultTakingLongerTimeoutMs: c.spinner.DEFAULT_TAKING_LONGER_TIMEOUT_MS
|
|
10
|
+
} }), [c.spinner]), u = i(() => ({
|
|
11
|
+
config: c,
|
|
12
|
+
container: s,
|
|
13
|
+
genEpixCoreComponentsConfig: l
|
|
14
|
+
}), [
|
|
15
|
+
c,
|
|
16
|
+
s,
|
|
17
|
+
l
|
|
18
|
+
]);
|
|
19
|
+
return /* @__PURE__ */ t(a, {
|
|
20
|
+
value: l,
|
|
21
|
+
children: /* @__PURE__ */ t(o, {
|
|
22
|
+
value: u,
|
|
23
|
+
children: r
|
|
24
|
+
})
|
|
25
|
+
});
|
|
26
|
+
}, c = () => {
|
|
27
|
+
let e = r(o);
|
|
28
|
+
if (!e) throw Error("CommonConfigContext is not available");
|
|
29
|
+
return e;
|
|
30
|
+
};
|
|
31
|
+
//#endregion
|
|
32
|
+
export { o as CommonConfigContext, s as CommonConfigContextProvider, c as useCommonConfigContext };
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["CommonConfigContext","createContext","CommonConfigContextProvider","props","config","DependencyContainerUtil","container","genEpixCoreComponentsConfig","useMemo","CommonConfig","CoreComponentsConfigContext","useCommonConfigContext","use"],"sources":["../../../src/context/commonConfigContext/CommonConfigContext.tsx","../../../src/context/commonConfigContext/CommonConfigContextProvider.tsx","../../../src/context/commonConfigContext/useCommonConfigContext.tsx"],"sourcesContent":["import type { CoreComponentsConfig } from '@gen-epix/ui-core-components/context/CoreComponentsConfigContext';\nimport { createContext } from 'react';\nimport type { DependencyContainer } from 'tsyringe';\n\nimport type { ConfigBase } from '../../models/config.models';\n\nexport type CommonConfig<TConfig extends ConfigBase = ConfigBase> = {\n config: TConfig;\n container: DependencyContainer;\n genEpixCoreComponentsConfig: CoreComponentsConfig;\n};\n\nexport const CommonConfigContext = createContext<CommonConfig | null>(null);\n","import { useMemo } from 'react';\nimport type { PropsWithChildren } from 'react';\nimport { CoreComponentsConfigContext } from '@gen-epix/ui-core-components/context/CoreComponentsConfigContext';\nimport type { DependencyContainer } from 'tsyringe';\n\nimport { DependencyContainerUtil } from '../../utils/DependencyContainerUtil';\nimport type { ConfigBase } from '../../models/config.models';\n\nimport type { CommonConfig } from './CommonConfigContext';\nimport { CommonConfigContext } from './CommonConfigContext';\n\n\nexport type CommonConfigContextProviderProps = PropsWithChildren<{\n readonly container: DependencyContainer;\n}>;\n\nexport const CommonConfigContextProvider = (\n props: CommonConfigContextProviderProps,\n) => {\n const { children, container } = props;\n const config = DependencyContainerUtil.resolveConfig<ConfigBase>(container);\n const genEpixCoreComponentsConfig = useMemo<CommonConfig['genEpixCoreComponentsConfig']>(() => ({\n spinner: {\n defaultCircularProgressSize: config.spinner.DEFAULT_CIRCULAR_PROGRESS_SIZE!,\n defaultTakingLongerTimeoutMs: config.spinner.DEFAULT_TAKING_LONGER_TIMEOUT_MS,\n },\n }), [config.spinner]);\n const CommonConfig = useMemo(() => ({ config, container, genEpixCoreComponentsConfig }), [config, container, genEpixCoreComponentsConfig]);\n\n return (\n <CoreComponentsConfigContext value={genEpixCoreComponentsConfig}>\n <CommonConfigContext value={CommonConfig}>\n {children}\n </CommonConfigContext>\n </CoreComponentsConfigContext>\n );\n};\n","import { use } from 'react';\n\nimport type { ConfigBase } from '../../models/config.models';\n\nimport type { CommonConfig } from './CommonConfigContext';\nimport { CommonConfigContext } from './CommonConfigContext';\n\nexport const useCommonConfigContext = <TConfig extends ConfigBase = ConfigBase>(): CommonConfig<TConfig> => {\n const config = use(CommonConfigContext);\n if (!config) {\n throw new Error('CommonConfigContext is not available');\n }\n return config as CommonConfig<TConfig>;\n};\n"],"mappings":";;;;;AAYA,IAAaA,IAAsBC,EAAmC,IAAI,GCI7DC,KACX,MACG;CACH,IAAM,EAAE,aAAU,iBAAcC,GAC1BC,IAASC,EAAwB,cAA0BC,CAAS,GACpEC,IAA8BC,SAA4D,EAC9F,SAAS;EACP,6BAA6BJ,EAAO,QAAQ;EAC5C,8BAA8BA,EAAO,QAAQ;CAC/C,EACF,IAAI,CAACA,EAAO,OAAO,CAAC,GACdK,IAAeD,SAAe;EAAE;EAAQ;EAAW;CAA4B,IAAI;EAACJ;EAAQE;EAAWC;CAA2B,CAAC;CAEzI,OACE,kBAACG,GAAD;EAA6B,OAAOH;EAClC,UAAA,kBAACP,GAAD;GAAqB,OAAOS;GACzB;EACkB,CAAA;CACM,CAAA;AAEjC,GC7BaE,UAA+F;CAC1G,IAAMP,IAASQ,EAAIZ,CAAmB;CACtC,IAAI,CAACI,GACH,MAAU,MAAM,sCAAsC;CAExD,OAAOA;AACT"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type PageCommonConfig = {
|
|
3
|
+
readonly afterAppBarComponent?: ReactNode;
|
|
4
|
+
readonly afterAppBarRightComponent?: ReactNode;
|
|
5
|
+
readonly appBarHeight?: number;
|
|
6
|
+
readonly appBarIcon?: ReactNode;
|
|
7
|
+
readonly beforeAppBarComponent?: ReactNode;
|
|
8
|
+
readonly beforeAppBarRightComponent?: ReactNode;
|
|
9
|
+
};
|
|
10
|
+
export type PageCommonContextData = {
|
|
11
|
+
readonly drawerContainerId: string;
|
|
12
|
+
readonly isDrawerOpen: boolean;
|
|
13
|
+
readonly isNoInteraction: boolean;
|
|
14
|
+
readonly setIsDrawerOpen: (open: boolean) => void;
|
|
15
|
+
readonly setIsNoInteraction: (open: boolean) => void;
|
|
16
|
+
} & PageCommonConfig;
|
|
17
|
+
export declare const PageCommonContext: import('react').Context<PageCommonContextData>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { PropsWithChildren } from 'react';
|
|
2
|
+
import { PageCommonConfig } from './PageCommonContext';
|
|
3
|
+
export type PageCommonContextProviderProps = PropsWithChildren<PageCommonConfig>;
|
|
4
|
+
export declare const PageCommonContextProvider: ({ children, ...props }: PageCommonContextProviderProps) => import('react').JSX.Element;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { createContext as t, useId as n, useMemo as r, useState as i } from "react";
|
|
3
|
+
//#region src/context/pageCommonContext/PageCommonContext.ts
|
|
4
|
+
var a = t({}), o = ({ children: t, ...o }) => {
|
|
5
|
+
let [s, c] = i(!1), [l, u] = i(!1), d = n(), f = r(() => ({
|
|
6
|
+
...o,
|
|
7
|
+
drawerContainerId: d,
|
|
8
|
+
isDrawerOpen: s,
|
|
9
|
+
isNoInteraction: l,
|
|
10
|
+
setIsDrawerOpen: c,
|
|
11
|
+
setIsNoInteraction: u
|
|
12
|
+
}), [
|
|
13
|
+
s,
|
|
14
|
+
l,
|
|
15
|
+
d,
|
|
16
|
+
o
|
|
17
|
+
]);
|
|
18
|
+
return /* @__PURE__ */ e(a, {
|
|
19
|
+
value: f,
|
|
20
|
+
children: t
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
//#endregion
|
|
24
|
+
export { a as PageCommonContext, o as PageCommonContextProvider };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["PageCommonContext","createContext","PageCommonContextProvider","props","isDrawerOpen","setIsDrawerOpen","useState","isNoInteraction","setIsNoInteraction","drawerContainerId","useId","contextValue","useMemo"],"sources":["../../../src/context/pageCommonContext/PageCommonContext.ts","../../../src/context/pageCommonContext/PageCommonContextProvider.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { createContext } from 'react';\n\nexport type PageCommonConfig = {\n readonly afterAppBarComponent?: ReactNode;\n readonly afterAppBarRightComponent?: ReactNode;\n readonly appBarHeight?: number;\n readonly appBarIcon?: ReactNode;\n readonly beforeAppBarComponent?: ReactNode;\n readonly beforeAppBarRightComponent?: ReactNode;\n};\n\nexport type PageCommonContextData = {\n readonly drawerContainerId: string;\n readonly isDrawerOpen: boolean;\n readonly isNoInteraction: boolean;\n readonly setIsDrawerOpen: (open: boolean) => void;\n readonly setIsNoInteraction: (open: boolean) => void;\n} & PageCommonConfig;\n\nexport const PageCommonContext = createContext<PageCommonContextData>({} as PageCommonContextData);\n","import {\n useId,\n useMemo,\n useState,\n} from 'react';\nimport type { PropsWithChildren } from 'react';\n\nimport type {\n PageCommonConfig,\n PageCommonContextData,\n} from './PageCommonContext';\nimport { PageCommonContext } from './PageCommonContext';\n\nexport type PageCommonContextProviderProps = PropsWithChildren<PageCommonConfig>;\n\nexport const PageCommonContextProvider = ({ children, ...props }: PageCommonContextProviderProps) => {\n const [isDrawerOpen, setIsDrawerOpen] = useState(false);\n const [isNoInteraction, setIsNoInteraction] = useState(false);\n const drawerContainerId = useId();\n\n const contextValue = useMemo<PageCommonContextData>(() => {\n return {\n ...props,\n drawerContainerId,\n isDrawerOpen,\n isNoInteraction,\n setIsDrawerOpen,\n setIsNoInteraction,\n };\n }, [isDrawerOpen, isNoInteraction, drawerContainerId, props]);\n\n return (\n <PageCommonContext value={contextValue}>\n { children }\n </PageCommonContext>\n );\n};\n"],"mappings":";;;AAoBA,IAAaA,IAAoBC,EAAqC,CAAC,CAA0B,GCLpFC,KAA6B,EAAE,aAAU,GAAGC,QAA4C;CACnG,IAAM,CAACC,GAAcC,KAAmBC,EAAS,EAAK,GAChD,CAACC,GAAiBC,KAAsBF,EAAS,EAAK,GACtDG,IAAoBC,EAAM,GAE1BC,IAAeC,SACZ;EACL,GAAGT;EACH;EACA;EACA;EACA;EACA;CACF,IACC;EAACC;EAAcG;EAAiBE;EAAmBN;CAAK,CAAC;CAE5D,OACE,kBAACH,GAAD;EAAmB,OAAOW;EACtB;CACe,CAAA;AAEvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useConfig';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["useConfig","useCommonConfigContext"],"sources":["../../../src/hooks/useConfig/useConfig.ts"],"sourcesContent":["import type { ConfigBase } from '../../models/config.models';\nimport { useCommonConfigContext } from '../../context/commonConfigContext';\n\nexport const useConfig = <TConfig extends ConfigBase = ConfigBase>(): TConfig => {\n return useCommonConfigContext<TConfig>().config;\n};\n"],"mappings":";;AAGA,IAAaA,UACJC,EAAgC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useUpdateDocumentTitle';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useConfig as e } from "../useConfig/index.js";
|
|
2
|
+
import { useEffect as t } from "react";
|
|
3
|
+
//#region src/hooks/useUpdateDocumentTitle/useUpdateDocumentTitle.ts
|
|
4
|
+
var n = (n) => {
|
|
5
|
+
let r = e();
|
|
6
|
+
t(() => {
|
|
7
|
+
document.title = `${r.applicationName} - ${n}`;
|
|
8
|
+
}, [r.applicationName, n]);
|
|
9
|
+
};
|
|
10
|
+
//#endregion
|
|
11
|
+
export { n as useUpdateDocumentTitle };
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["useUpdateDocumentTitle","config","useConfig","title"],"sources":["../../../src/hooks/useUpdateDocumentTitle/useUpdateDocumentTitle.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useConfig } from '../useConfig';\n\n\nexport const useUpdateDocumentTitle = (title: string) => {\n const config = useConfig();\n\n useEffect(() => {\n document.title = `${config.applicationName} - ${title}`;\n }, [config.applicationName, title]);\n};\n"],"mappings":";;;AAKA,IAAaA,KAA0B,MAAkB;CACvD,IAAMC,IAASC,EAAU;CAEzB,QAAgB;EACd,SAAS,QAAQ,GAAGD,EAAO,gBAAgB,KAAKE;CAClD,GAAG,CAACF,EAAO,iBAAiBE,CAAK,CAAC;AACpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const useUpdateDocumentTitle: (title: string) => void;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ReactElement } from 'react';
|
|
2
|
+
import { CircularProgressProps, Theme } from '@mui/material';
|
|
3
|
+
import { PageCommonConfig } from '../context/pageCommonContext';
|
|
4
|
+
export interface ConfigBase {
|
|
5
|
+
applicationName: string;
|
|
6
|
+
readonly drawerComponent?: () => ReactElement;
|
|
7
|
+
getTouchIconUrl?: () => string | undefined;
|
|
8
|
+
readonly headerComponent?: () => ReactElement;
|
|
9
|
+
nonce?: string;
|
|
10
|
+
pageConfig?: PageCommonConfig;
|
|
11
|
+
spinner: {
|
|
12
|
+
DEFAULT_CIRCULAR_PROGRESS_SIZE: CircularProgressProps['size'];
|
|
13
|
+
DEFAULT_TAKING_LONGER_TIMEOUT_MS: number;
|
|
14
|
+
};
|
|
15
|
+
theme: Theme;
|
|
16
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
//#region src/models/fasta.ts
|
|
1
|
+
//#region src/models/fasta.models.ts
|
|
2
2
|
var e = /* @__PURE__ */ function(e) {
|
|
3
3
|
return e.ERROR = "ERROR", e.IDLE = "IDLE", e.LOADING = "LOADING", e.SUCCESS = "SUCCESS", e;
|
|
4
4
|
}({});
|
|
5
5
|
//#endregion
|
|
6
6
|
export { e as LOADING_STATUS };
|
|
7
7
|
|
|
8
|
-
//# sourceMappingURL=fasta.js.map
|
|
8
|
+
//# sourceMappingURL=fasta.models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fasta.models.js","names":["LOADING_STATUS","\"ERROR\"","\"IDLE\"","\"LOADING\"","\"SUCCESS\""],"sources":["../../src/models/fasta.models.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,IAAYA,IAAL,yBAAA,GAAA;QACL,EAAAC,QAAA,SACA,EAAAC,OAAA,QACA,EAAAC,UAAA,WACA,EAAAC,UAAA;AACF,EAAA,CAAA,CAAA"}
|
|
File without changes
|