@gen-epix/ui-client-casedb 4.0.2 → 4.2.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 (69) hide show
  1. package/dist/_chunks/AddCasesToEventDialog.js +98 -98
  2. package/dist/_chunks/AddCasesToEventDialog.js.map +1 -1
  3. package/dist/_chunks/CaseContentForm.js +10 -10
  4. package/dist/_chunks/CaseDbDownloadUtil.js +1 -1
  5. package/dist/_chunks/CaseDbDownloadUtil.js.map +1 -1
  6. package/dist/_chunks/CaseInfoDialog.js +222 -222
  7. package/dist/_chunks/CaseInfoDialog.js.map +1 -1
  8. package/dist/_chunks/CaseSetInfoDialog.js +222 -222
  9. package/dist/_chunks/CaseSetInfoDialog.js.map +1 -1
  10. package/dist/_chunks/CasesAlreadyInCaseSetWarning.js.map +1 -1
  11. package/dist/_chunks/Dashboard.js +296 -295
  12. package/dist/_chunks/Dashboard.js.map +1 -1
  13. package/dist/_chunks/FindSimilarCasesDialog.js +81 -81
  14. package/dist/_chunks/FindSimilarCasesDialog.js.map +1 -1
  15. package/dist/_chunks/HomePageTrends.js.map +1 -1
  16. package/dist/_chunks/LegendaItem.js.map +1 -1
  17. package/dist/_chunks/LineListWidget.js +46 -45
  18. package/dist/_chunks/LineListWidget.js.map +1 -1
  19. package/dist/_chunks/PanelSeparator.js +3 -3
  20. package/dist/_chunks/PanelSeparator.js.map +1 -1
  21. package/dist/_chunks/Upload.js +422 -418
  22. package/dist/_chunks/Upload.js.map +1 -1
  23. package/dist/_chunks/UploadUtil.js +44 -40
  24. package/dist/_chunks/UploadUtil.js.map +1 -1
  25. package/dist/_chunks/chunk-BV7QT456.js +1 -1
  26. package/dist/_chunks/chunk-BV7QT456.js.map +1 -1
  27. package/dist/_chunks/cloneDeep.js +1 -1
  28. package/dist/_chunks/cloneDeep.js.map +1 -1
  29. package/dist/_chunks/dashboardStore.js.map +1 -1
  30. package/dist/_chunks/esm.js +3 -3
  31. package/dist/_chunks/esm.js.map +1 -1
  32. package/dist/_chunks/index.module.js +1 -1
  33. package/dist/_chunks/index.module.js.map +1 -1
  34. package/dist/_chunks/react.js +1 -1
  35. package/dist/_chunks/react.js.map +1 -1
  36. package/dist/_chunks/shallow.js +2 -2
  37. package/dist/_chunks/shallow.js.map +1 -1
  38. package/dist/_chunks/vanilla.js +1 -1
  39. package/dist/_chunks/vanilla.js.map +1 -1
  40. package/dist/_chunks/yup.js +24 -24
  41. package/dist/_chunks/yup.js.map +1 -1
  42. package/dist/classes/services/EventBusService/EventBusService.d.ts +9 -2
  43. package/dist/classes/services/EventBusService/index.js.map +1 -1
  44. package/dist/components/form/fields/ArrangementEditor/index.js +30 -30
  45. package/dist/components/ui/CreateEventDialog/index.js +40 -40
  46. package/dist/components/ui/CreateEventDialog/index.js.map +1 -1
  47. package/dist/components/ui/MapWidget/index.js.map +1 -1
  48. package/dist/components/ui/RemoveCasesFromEventDialog/index.js.map +1 -1
  49. package/dist/components/ui/SequenceDownloadDialog/index.js +57 -44
  50. package/dist/components/ui/SequenceDownloadDialog/index.js.map +1 -1
  51. package/dist/components/ui/TreeWidget/index.js +8 -2
  52. package/dist/components/ui/TreeWidget/index.js.map +1 -1
  53. package/dist/locale/en.json +0 -11
  54. package/dist/locale/nl.json +0 -11
  55. package/dist/models/config.d.ts +2 -0
  56. package/dist/pages/UserEffectiveRightsTesterAdminPage/index.js +59 -59
  57. package/dist/pages/UserEffectiveRightsTesterAdminPage/index.js.map +1 -1
  58. package/dist/utils/UploadUtil/UploadUtil.d.ts +1 -0
  59. package/package.json +68 -75
  60. package/dist/_chunks/index.esm.js +0 -1465
  61. package/dist/_chunks/index.esm.js.map +0 -1
  62. package/dist/components/ui/FileSelector/FileSelector.d.ts +0 -7
  63. package/dist/components/ui/FileSelector/index.d.ts +0 -1
  64. package/dist/components/ui/FileSelector/index.js +0 -206
  65. package/dist/components/ui/FileSelector/index.js.map +0 -1
  66. package/dist/utils/FileUtil/FileUtil.d.ts +0 -5
  67. package/dist/utils/FileUtil/index.d.ts +0 -1
  68. package/dist/utils/FileUtil/index.js +0 -15
  69. package/dist/utils/FileUtil/index.js.map +0 -1
@@ -1,206 +0,0 @@
1
- import { t as e } from "../../../_chunks/format.js";
2
- import { FileUtil as t } from "../../../utils/FileUtil/index.js";
3
- import { DATE_FORMAT as n } from "@gen-epix/ui-core/constants/date";
4
- import { Box as r, Chip as i, IconButton as a, Stack as o, Typography as s } from "@mui/material";
5
- import { useCallback as c, useEffect as l, useId as u, useMemo as d, useRef as f, useState as p } from "react";
6
- import { useTranslation as m } from "react-i18next";
7
- import { Fragment as h, jsx as g, jsxs as _ } from "react/jsx-runtime";
8
- import v from "@mui/icons-material/Delete";
9
- import y from "@mui/icons-material/InsertDriveFile";
10
- import b from "@mui/icons-material/CloudUpload";
11
- //#region src/components/ui/FileSelector/FileSelector.tsx
12
- var x = ({ accept: x, initialDataTransfer: S, numFilesAllowed: C = 1, onDataTransferChange: w }) => {
13
- let { t: T } = m(), E = T(C === 1 ? "Click or drag to upload file ({{accept}})" : "Click or drag to upload files ({{accept}})", { accept: x.split(",").join(", ") }), D = C === 1 ? T`Drop file here` : T`Drop files here`, O = u(), k = f(null), A = d(() => S ?? new DataTransfer(), [S]), [j, M] = p(A), [N, P] = p(E), [F, I] = p(null), [L, R] = p(!1), z = f(!0);
14
- l(() => {
15
- if (z.current) {
16
- z.current = !1;
17
- return;
18
- }
19
- w(j);
20
- }, [j, w]);
21
- let B = c((e) => {
22
- e.stopPropagation(), e.preventDefault();
23
- }, []), V = c((e) => {
24
- I(null), B(e), R(!0), P(D);
25
- }, [B, D]), H = c((e) => {
26
- B(e), R(!1), P(E);
27
- }, [B, E]), U = c((e) => {
28
- B(e);
29
- }, [B]), W = c((e) => {
30
- for (let t of e) if (!x.split(",").some((e) => {
31
- let n = e.trim();
32
- return n === t.type || n.startsWith(".") && t.name.endsWith(n);
33
- })) return !1;
34
- return !0;
35
- }, [x]), G = c((e) => {
36
- I(null), M((t) => {
37
- let n = new DataTransfer();
38
- return Array.from(t.files).filter((t) => t.name !== e).forEach((e) => n.items.add(e)), n;
39
- });
40
- }, []), K = c((e) => {
41
- I(null), M((t) => {
42
- if (!e || e.length === 0) return t;
43
- if (!W(e)) return I(T("Invalid file type. Accepted types: {{accept}}", { accept: x })), t;
44
- let n = Array.from(e).map((e) => e.name), r = new Set(Array.from(t.files).map((e) => e.name)), i = n.filter((e) => r.has(e)).length;
45
- if (r.size + (n.length - i) > C) return I(T("Too many files selected. Maximum allowed: {{numFilesAllowed}}", { numFilesAllowed: C })), t;
46
- let a = new DataTransfer();
47
- return Array.from(t.files).forEach((e) => {
48
- n.includes(e.name) || a.items.add(e);
49
- }), Array.from(e).forEach((e) => {
50
- a.items.add(e);
51
- }), a;
52
- });
53
- }, [
54
- x,
55
- W,
56
- C,
57
- T
58
- ]), q = c((e) => {
59
- B(e), P(E), R(!1);
60
- let t = e.dataTransfer.files;
61
- K(t);
62
- }, [
63
- B,
64
- E,
65
- K
66
- ]), J = c((e) => {
67
- (e.key === "Enter" || e.key === " ") && (e.preventDefault(), k.current?.click());
68
- }, []), Y = c((e) => {
69
- K(e.target.files);
70
- }, [K]), X = c(() => {
71
- I(null), M(new DataTransfer());
72
- }, []);
73
- return /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ g(r, {
74
- accept: x,
75
- component: "input",
76
- id: O,
77
- multiple: C > 1,
78
- onChange: Y,
79
- ref: k,
80
- sx: { display: "none" },
81
- type: "file"
82
- }), /* @__PURE__ */ _(r, {
83
- sx: {
84
- display: "grid",
85
- gridTemplateRows: "auto fit-content(50%)",
86
- height: "100%"
87
- },
88
- children: [/* @__PURE__ */ g(r, {
89
- component: "label",
90
- htmlFor: O,
91
- onDragEnter: V,
92
- onDragLeave: H,
93
- onDragOver: U,
94
- onDrop: q,
95
- onKeyDown: J,
96
- sx: {
97
- "&:hover *": { opacity: 1 },
98
- "& p, & svg": { opacity: L ? 1 : .4 },
99
- cursor: "pointer",
100
- display: "flex",
101
- height: "100%",
102
- position: "relative",
103
- textAlign: "center",
104
- width: "100%"
105
- },
106
- tabIndex: 0,
107
- children: /* @__PURE__ */ g(r, {
108
- sx: {
109
- height: "100%",
110
- pointerEvents: "none",
111
- position: "relative",
112
- width: "100%"
113
- },
114
- children: /* @__PURE__ */ _(r, {
115
- sx: {
116
- alignItems: "center",
117
- display: "flex",
118
- flexDirection: "column",
119
- height: "100%",
120
- justifyContent: "center",
121
- position: "absolute",
122
- width: "100%"
123
- },
124
- children: [
125
- /* @__PURE__ */ g(b, {
126
- color: "primary",
127
- fontSize: "large"
128
- }),
129
- F && /* @__PURE__ */ g(s, {
130
- sx: {
131
- color: "error.main",
132
- fontWeight: "bold"
133
- },
134
- children: F
135
- }),
136
- /* @__PURE__ */ g(s, { children: N })
137
- ]
138
- })
139
- })
140
- }), /* @__PURE__ */ g(r, {
141
- sx: {
142
- overflow: "auto",
143
- position: "relative"
144
- },
145
- children: /* @__PURE__ */ g(r, { children: j.files.length > 0 && /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ _(r, {
146
- sx: {
147
- alignItems: "center",
148
- backgroundColor: (e) => e.palette.background.paper,
149
- display: "flex",
150
- gap: 1,
151
- paddingY: 1,
152
- position: "sticky",
153
- top: 0,
154
- zIndex: (e) => e.zIndex.tooltip - 1
155
- },
156
- children: [/* @__PURE__ */ g(s, {
157
- variant: "h5",
158
- children: T("Selected files: {{numFiles}}", { numFiles: j.files.length })
159
- }), /* @__PURE__ */ g(a, {
160
- "aria-label": T("Clear all selected files"),
161
- onClick: X,
162
- size: "small",
163
- children: /* @__PURE__ */ g(v, { fontSize: "small" })
164
- })]
165
- }), /* @__PURE__ */ g(o, {
166
- direction: "row",
167
- sx: { flexWrap: "wrap" },
168
- children: Array.from(j.files).map((a) => /* @__PURE__ */ g(i, {
169
- deleteIcon: /* @__PURE__ */ g(v, {
170
- "aria-hidden": !1,
171
- "aria-label": T("Clear {{fileName}}", { fileName: a.name }),
172
- focusable: !0,
173
- onKeyDown: (e) => {
174
- (e.key === "Enter" || e.key === " ") && (e.preventDefault(), G(a.name));
175
- },
176
- tabIndex: 0
177
- }),
178
- icon: /* @__PURE__ */ g(y, {}),
179
- label: /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ g(r, {
180
- component: "span",
181
- sx: { fontWeight: "bold" },
182
- children: a.name
183
- }), /* @__PURE__ */ _(r, {
184
- component: "span",
185
- children: [
186
- " ",
187
- T("(size: {{size}})", { size: t.getReadableFileSize(a.size) }),
188
- " ",
189
- T("(last modified: {{lastModified}})", { lastModified: e(new Date(a.lastModified), n.DATE_TIME) })
190
- ]
191
- })] }),
192
- onDelete: () => {
193
- G(a.name);
194
- },
195
- sx: { margin: .25 },
196
- tabIndex: -1,
197
- variant: "outlined"
198
- }, `${a.name}-${a.size}-${a.lastModified}`))
199
- })] }) })
200
- })]
201
- })] });
202
- };
203
- //#endregion
204
- export { x as FileSelector };
205
-
206
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/ui/FileSelector/FileSelector.tsx"],"sourcesContent":["import {\n Box,\n Chip,\n IconButton,\n Stack,\n Typography,\n} from '@mui/material';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport InsertDriveFileIcon from '@mui/icons-material/InsertDriveFile';\nimport type {\n ChangeEvent,\n DragEvent,\n KeyboardEvent as ReactKeyboardEvent,\n} from 'react';\nimport {\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport CloudUploadIcon from '@mui/icons-material/CloudUpload';\nimport { useTranslation } from 'react-i18next';\nimport { format } from 'date-fns';\nimport { DATE_FORMAT } from '@gen-epix/ui-core/constants/date';\n\nimport { FileUtil } from '../../../utils/FileUtil';\n\n\nexport type FileSelectorProps = {\n readonly accept: string;\n readonly initialDataTransfer?: DataTransfer;\n readonly numFilesAllowed?: number;\n readonly onDataTransferChange: (dataTransfer: DataTransfer) => void;\n};\n\nexport const FileSelector = ({\n accept,\n initialDataTransfer: initialDataTransferProp,\n numFilesAllowed = 1,\n onDataTransferChange,\n}: FileSelectorProps) => {\n const { t } = useTranslation();\n const hoverLabel = numFilesAllowed === 1\n ? t('Click or drag to upload file ({{accept}})', { accept: accept.split(',').join(', ') })\n : t('Click or drag to upload files ({{accept}})', { accept: accept.split(',').join(', ') });\n const dropLabel = numFilesAllowed === 1\n ? t`Drop file here`\n : t`Drop files here`;\n\n const inputId = useId();\n const inputRef = useRef<HTMLInputElement>(null);\n\n const initialDataTransfer = useMemo(() => {\n return initialDataTransferProp ?? new DataTransfer();\n }, [initialDataTransferProp]);\n\n const [dataTransfer, setDataTransfer] = useState<DataTransfer>(initialDataTransfer);\n const [labelText, setLabelText] = useState<string>(hoverLabel);\n const [errorText, setErrorText] = useState<string>(null);\n const [isDragOver, setIsDragOver] = useState<boolean>(false);\n const initialDataTransferEffectRef = useRef(true);\n\n useEffect(() => {\n if (initialDataTransferEffectRef.current) {\n initialDataTransferEffectRef.current = false;\n return;\n }\n onDataTransferChange(dataTransfer);\n }, [dataTransfer, onDataTransferChange]);\n\n const stopDefaults = useCallback((e: DragEvent) => {\n e.stopPropagation();\n e.preventDefault();\n }, []);\n\n const onLabelDragEnter = useCallback((event: DragEvent) => {\n setErrorText(null);\n stopDefaults(event);\n setIsDragOver(true);\n setLabelText(dropLabel);\n }, [stopDefaults, dropLabel]);\n\n const onLabelDragLeave = useCallback((event: DragEvent) => {\n stopDefaults(event);\n setIsDragOver(false);\n setLabelText(hoverLabel);\n }, [stopDefaults, hoverLabel]);\n\n const onLabelDragOver = useCallback((event: DragEvent) => {\n stopDefaults(event);\n }, [stopDefaults]);\n\n const areFileTypesValid = useCallback((fileList: FileList) => {\n for (const file of fileList) {\n const isValid = accept.split(',').some(type => {\n const trimmedType = type.trim();\n return (\n trimmedType === file.type ||\n (trimmedType.startsWith('.') && file.name.endsWith(trimmedType))\n );\n });\n if (!isValid) {\n return false;\n }\n }\n return true;\n }, [accept]);\n\n const removeFile = useCallback((fileName: string) => {\n setErrorText(null);\n setDataTransfer((oldDataTransfer) => {\n const newDataTransfer = new DataTransfer();\n Array.from(oldDataTransfer.files)\n .filter(f => f.name !== fileName)\n .forEach(f => newDataTransfer.items.add(f));\n return newDataTransfer;\n });\n }, []);\n\n const addFileList = useCallback((fileList: FileList) => {\n setErrorText(null);\n setDataTransfer((oldDataTransfer) => {\n if (!fileList || fileList.length === 0) {\n return oldDataTransfer;\n }\n if (!areFileTypesValid(fileList)) {\n setErrorText(t('Invalid file type. Accepted types: {{accept}}', { accept }));\n return oldDataTransfer;\n }\n\n const fileNamesToAppend = Array.from(fileList).map(f => f.name);\n const uniqueOldFileNames = new Set(Array.from(oldDataTransfer.files).map(f => f.name));\n const numDuplicates = fileNamesToAppend.filter(name => uniqueOldFileNames.has(name)).length;\n const numNewFileNames = uniqueOldFileNames.size + (fileNamesToAppend.length - numDuplicates);\n\n if (numNewFileNames > numFilesAllowed) {\n setErrorText(t('Too many files selected. Maximum allowed: {{numFilesAllowed}}', { numFilesAllowed }));\n return oldDataTransfer;\n }\n\n const newDataTransfer = new DataTransfer();\n Array.from(oldDataTransfer.files).forEach(file => {\n if (!fileNamesToAppend.includes(file.name)) {\n newDataTransfer.items.add(file);\n }\n });\n Array.from(fileList).forEach(file => {\n newDataTransfer.items.add(file);\n });\n\n return newDataTransfer;\n\n });\n }, [accept, areFileTypesValid, numFilesAllowed, t]);\n\n const onDrop = useCallback((event: DragEvent<HTMLElement>) => {\n stopDefaults(event);\n setLabelText(hoverLabel);\n setIsDragOver(false);\n\n const fileList = event.dataTransfer.files;\n addFileList(fileList);\n\n }, [stopDefaults, hoverLabel, addFileList]);\n\n const onLabelKeyDown = useCallback((event: ReactKeyboardEvent<HTMLElement>) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n inputRef.current?.click();\n }\n }, []);\n\n const onFileInputChange = useCallback((event: ChangeEvent<HTMLInputElement>) => {\n addFileList(event.target.files);\n }, [addFileList]);\n\n const onClearAllButtonClick = useCallback(() => {\n setErrorText(null);\n setDataTransfer(new DataTransfer());\n }, []);\n\n return (\n <>\n <Box\n accept={accept}\n component={'input'}\n id={inputId}\n multiple={numFilesAllowed > 1}\n onChange={onFileInputChange}\n ref={inputRef}\n sx={{\n display: 'none',\n }}\n type={'file'}\n />\n <Box\n sx={{\n display: 'grid',\n gridTemplateRows: 'auto fit-content(50%)',\n height: '100%',\n }}\n >\n <Box\n component={'label'}\n htmlFor={inputId}\n onDragEnter={onLabelDragEnter}\n onDragLeave={onLabelDragLeave}\n onDragOver={onLabelDragOver}\n onDrop={onDrop}\n onKeyDown={onLabelKeyDown}\n sx={{\n '&:hover *': {\n opacity: 1,\n },\n '& p, & svg': {\n opacity: isDragOver ? 1 : 0.4,\n },\n cursor: 'pointer',\n display: 'flex',\n height: '100%',\n position: 'relative',\n textAlign: 'center',\n width: '100%',\n }}\n tabIndex={0}\n >\n <Box\n sx={{\n height: '100%',\n pointerEvents: 'none',\n position: 'relative',\n width: '100%',\n }}\n >\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n justifyContent: 'center',\n position: 'absolute',\n width: '100%',\n }}\n >\n <CloudUploadIcon\n color={'primary'}\n fontSize={'large'}\n />\n {errorText && (\n <Typography\n sx={{\n color: 'error.main',\n fontWeight: 'bold',\n }}\n >\n {errorText}\n </Typography>\n )}\n <Typography>\n {labelText}\n </Typography>\n\n </Box>\n </Box>\n </Box>\n <Box\n sx={{\n overflow: 'auto',\n position: 'relative',\n }}\n >\n <Box>\n {dataTransfer.files.length > 0 && (\n <>\n <Box\n sx={{\n alignItems: 'center',\n backgroundColor: (theme) => theme.palette.background.paper,\n display: 'flex',\n gap: 1,\n paddingY: 1,\n position: 'sticky',\n top: 0,\n zIndex: (theme) => theme.zIndex.tooltip - 1,\n }}\n >\n <Typography\n variant={'h5'}\n >\n {t('Selected files: {{numFiles}}', { numFiles: dataTransfer.files.length })}\n </Typography>\n <IconButton\n aria-label={t('Clear all selected files')}\n onClick={onClearAllButtonClick}\n size={'small'}\n >\n <DeleteIcon fontSize={'small'} />\n </IconButton>\n </Box>\n <Stack\n direction={'row'}\n sx={{\n flexWrap: 'wrap',\n }}\n >\n {Array.from(dataTransfer.files).map(file => (\n <Chip\n deleteIcon={(\n <DeleteIcon\n aria-hidden={false}\n aria-label={t('Clear {{fileName}}', { fileName: file.name })}\n focusable\n // eslint-disable-next-line @eslint-react/kit/jsx-no-bind\n onKeyDown={(event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n removeFile(file.name);\n }\n }}\n tabIndex={0}\n />\n )}\n icon={<InsertDriveFileIcon />}\n key={`${file.name}-${file.size}-${file.lastModified}`}\n label={\n (\n <>\n <Box\n component={'span'}\n sx={{ fontWeight: 'bold' }}\n >\n {file.name}\n </Box>\n <Box component={'span'}>\n {' '}\n {t('(size: {{size}})', { size: FileUtil.getReadableFileSize(file.size) })}\n {' '}\n {t('(last modified: {{lastModified}})', { lastModified: format(new Date(file.lastModified), DATE_FORMAT.DATE_TIME) })}\n </Box>\n </>\n )\n }\n // eslint-disable-next-line @eslint-react/kit/jsx-no-bind\n onDelete={() => {\n removeFile(file.name);\n }}\n sx={{\n margin: 0.25,\n }}\n tabIndex={-1}\n variant={'outlined'}\n />\n ))}\n </Stack>\n </>\n )}\n </Box>\n </Box>\n </Box>\n </>\n );\n};\n"],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import { CaseDbFileCompression } from '@gen-epix/api-casedb';
2
- export declare class FileUtil {
3
- static getFileCompressionFromFileName(fileName: string): CaseDbFileCompression;
4
- static getReadableFileSize(sizeInBytes: number): string;
5
- }
@@ -1 +0,0 @@
1
- export * from './FileUtil';
@@ -1,15 +0,0 @@
1
- import { CaseDbFileCompression as e } from "@gen-epix/api-casedb";
2
- //#region src/utils/FileUtil/FileUtil.ts
3
- var t = class {
4
- static getFileCompressionFromFileName(t) {
5
- let n = t.toLowerCase();
6
- return n.endsWith(".gz") || n.endsWith(".gzip") ? e.GZIP : e.NONE;
7
- }
8
- static getReadableFileSize(e) {
9
- return e < 1024 ? `${e} B` : e < 1048576 ? `${(e / 1024).toFixed(2)} KB` : e < 1073741824 ? `${(e / 1048576).toFixed(2)} MB` : `${(e / 1073741824).toFixed(2)} GB`;
10
- }
11
- };
12
- //#endregion
13
- export { t as FileUtil };
14
-
15
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/utils/FileUtil/FileUtil.ts"],"sourcesContent":["import { CaseDbFileCompression } from '@gen-epix/api-casedb';\n\nexport class FileUtil {\n public static getFileCompressionFromFileName(fileName: string): CaseDbFileCompression {\n const lowerFileName = fileName.toLowerCase();\n if (lowerFileName.endsWith('.gz') || lowerFileName.endsWith('.gzip')) {\n return CaseDbFileCompression.GZIP;\n }\n return CaseDbFileCompression.NONE;\n }\n\n public static getReadableFileSize(sizeInBytes: number): string {\n if (sizeInBytes < 1024) {\n return `${sizeInBytes} B`;\n } else if (sizeInBytes < 1024 * 1024) {\n return `${(sizeInBytes / 1024).toFixed(2)} KB`;\n } else if (sizeInBytes < 1024 * 1024 * 1024) {\n return `${(sizeInBytes / (1024 * 1024)).toFixed(2)} MB`;\n }\n return `${(sizeInBytes / (1024 * 1024 * 1024)).toFixed(2)} GB`;\n }\n}\n"],"mappings":";;AAEA,IAAa,IAAb,MAAsB;CACpB,OAAc,+BAA+B,GAAyC;EACpF,IAAM,IAAgB,EAAS,YAAY;EAI3C,OAHI,EAAc,SAAS,KAAK,KAAK,EAAc,SAAS,OAAO,IAC1D,EAAsB,OAExB,EAAsB;CAC/B;CAEA,OAAc,oBAAoB,GAA6B;EAQ7D,OAPI,IAAc,OACT,GAAG,EAAY,MACb,IAAc,UAChB,IAAI,IAAc,KAAA,CAAM,QAAQ,CAAC,EAAE,OACjC,IAAc,aAChB,IAAI,IAAe,QAAA,CAAc,QAAQ,CAAC,EAAE,OAE9C,IAAI,IAAe,WAAA,CAAqB,QAAQ,CAAC,EAAE;CAC5D;AACF"}