wcz-test 6.7.7 → 6.8.1

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 (170) hide show
  1. package/dist/ApprovalStatus-C9HPyMiS.js +24 -0
  2. package/dist/ApprovalStatus-C9HPyMiS.js.map +1 -0
  3. package/dist/{chunk-4UULRYGW.js → DialogsHooks-BlUsVlfv.js} +7 -14
  4. package/dist/DialogsHooks-BlUsVlfv.js.map +1 -0
  5. package/dist/{chunk-MIVD2XWB.js → FileHooks-hWKTwLCr.js} +36 -46
  6. package/dist/FileHooks-hWKTwLCr.js.map +1 -0
  7. package/dist/{chunk-TME53DAF.js → FileMeta-G1oT3mYK.js} +3 -5
  8. package/dist/FileMeta-G1oT3mYK.js.map +1 -0
  9. package/dist/{chunk-ZMWQQXZT.js → RouterListItemButton-Cx7rXEfm.js} +6 -8
  10. package/dist/RouterListItemButton-Cx7rXEfm.js.map +1 -0
  11. package/dist/android-chrome-192x192.png +0 -0
  12. package/dist/android-chrome-512x512.png +0 -0
  13. package/dist/apple-touch-icon.png +0 -0
  14. package/dist/auth-client-D9snEe6B.js +79 -0
  15. package/dist/auth-client-D9snEe6B.js.map +1 -0
  16. package/dist/client-utils.d.ts +3 -702
  17. package/dist/client-utils.js +7 -17
  18. package/dist/client-utils.js.map +1 -1
  19. package/dist/components/core/AppTitle.d.ts +2 -0
  20. package/dist/components/core/Fullscreen.d.ts +3 -0
  21. package/dist/components/core/Layout.d.ts +8 -0
  22. package/dist/components/core/ToolbarAccount.d.ts +2 -0
  23. package/dist/components/core/TypographyWithIcon.d.ts +7 -0
  24. package/dist/components/core/navigation/NavigationList.d.ts +22 -0
  25. package/dist/components/core/navigation/NavigationListItem.d.ts +16 -0
  26. package/dist/components/core/navigation/NavigationRail.d.ts +12 -0
  27. package/dist/components/data-grid/ChipInputCell.d.ts +9 -0
  28. package/dist/components/data-grid/EditableColumnHeader.d.ts +2 -0
  29. package/dist/components/file/Dropzone.d.ts +8 -0
  30. package/dist/components/file/FileViewer.d.ts +20 -0
  31. package/dist/components/file/fileViewer/FileViewerGrid.d.ts +17 -0
  32. package/dist/components/file/fileViewer/FileViewerList.d.ts +12 -0
  33. package/dist/components/file/fileViewer/ImageViewer.d.ts +6 -0
  34. package/dist/components/file/fileViewer/common/ActionsMenu.d.ts +15 -0
  35. package/dist/components/form/FormAutocomplete.d.ts +7 -0
  36. package/dist/components/form/FormCheckbox.d.ts +7 -0
  37. package/dist/components/form/FormDatePicker.d.ts +8 -0
  38. package/dist/components/form/FormDateRangePicker.d.ts +8 -0
  39. package/dist/components/form/FormDateTimePicker.d.ts +8 -0
  40. package/dist/components/form/FormDateTimeRangePicker.d.ts +8 -0
  41. package/dist/components/form/FormNumberField.d.ts +9 -0
  42. package/dist/components/form/FormRadioGroup.d.ts +13 -0
  43. package/dist/components/form/FormSlider.d.ts +7 -0
  44. package/dist/components/form/FormSubmitButton.d.ts +4 -0
  45. package/dist/components/form/FormSwitch.d.ts +7 -0
  46. package/dist/components/form/FormTextField.d.ts +7 -0
  47. package/dist/components/form/FormTimePicker.d.ts +8 -0
  48. package/dist/components/form/FormTimeRangePicker.d.ts +8 -0
  49. package/dist/components/router/RouterButton.d.ts +6 -0
  50. package/dist/components/router/RouterError.d.ts +7 -0
  51. package/dist/components/router/RouterGridActionsCellItem.d.ts +6 -0
  52. package/dist/components/router/RouterIconButton.d.ts +6 -0
  53. package/dist/components/router/RouterLink.d.ts +6 -0
  54. package/dist/components/router/RouterListItemButton.d.ts +6 -0
  55. package/dist/components/router/RouterNotFound.d.ts +1 -0
  56. package/dist/components/router/RouterTab.d.ts +6 -0
  57. package/dist/components.d.ts +14 -89
  58. package/dist/components.js +124 -227
  59. package/dist/components.js.map +1 -1
  60. package/dist/contexts/DialogsContext.d.ts +6 -0
  61. package/dist/contexts/FileContext.d.ts +13 -0
  62. package/dist/env-CoxTjaDr.js +27 -0
  63. package/dist/env-CoxTjaDr.js.map +1 -0
  64. package/dist/env.d.ts +10 -0
  65. package/dist/favicon-16x16.png +0 -0
  66. package/dist/favicon-32x32.png +0 -0
  67. package/dist/favicon.ico +0 -0
  68. package/dist/favicon.png +0 -0
  69. package/dist/hooks/DialogsHooks.d.ts +42 -0
  70. package/dist/hooks/FormHooks.d.ts +52 -0
  71. package/dist/hooks/ThemeHook.d.ts +4 -0
  72. package/dist/hooks.d.ts +3 -159
  73. package/dist/hooks.js +56 -121
  74. package/dist/hooks.js.map +1 -1
  75. package/dist/index.d.ts +3 -36
  76. package/dist/index.js +173 -1882
  77. package/dist/index.js.map +1 -1
  78. package/dist/{client-utils.d.cts → lib/auth/auth-client.d.ts} +110 -126
  79. package/dist/lib/auth/auth.d.ts +24 -0
  80. package/dist/lib/db/index.d.ts +4 -0
  81. package/dist/lib/db/schemas/auth.d.ts +606 -0
  82. package/dist/{utils-ChipkRJ9.d.ts → lib/utils.d.ts} +11 -10
  83. package/dist/lib/vite-plugin.d.ts +2 -0
  84. package/dist/manifest.webmanifest +18 -0
  85. package/dist/models/Navigation.d.ts +18 -0
  86. package/dist/models/User.d.ts +8 -0
  87. package/dist/models/approval/Approval.d.ts +177 -0
  88. package/dist/models/approval/ApprovalEmployee.d.ts +7 -0
  89. package/dist/models/approval/ApprovalFlow.d.ts +49 -0
  90. package/dist/models/approval/ApprovalFlowStep.d.ts +29 -0
  91. package/dist/models/approval/ApprovalRequestType.d.ts +5 -0
  92. package/dist/models/approval/ApprovalStatus.d.ts +9 -0
  93. package/dist/models/approval/ApprovalStepResult.d.ts +11 -0
  94. package/dist/models/approval/StepApprovalOrder.d.ts +6 -0
  95. package/dist/models/email/Email.d.ts +13 -0
  96. package/dist/models/email/EmailAttachment.d.ts +6 -0
  97. package/dist/models/file/FileActions.d.ts +6 -0
  98. package/dist/{FileMeta-CC014fnB.d.cts → models/file/FileMeta.d.ts} +3 -6
  99. package/dist/models/peoplesoft/Department.d.ts +58 -0
  100. package/dist/models/peoplesoft/Employee.d.ts +46 -0
  101. package/dist/models/peoplesoft/EmployeeCategoryGroup.d.ts +6 -0
  102. package/dist/models/peoplesoft/EmployeeStatus.d.ts +6 -0
  103. package/dist/models.d.ts +25 -161
  104. package/dist/models.js +109 -160
  105. package/dist/models.js.map +1 -1
  106. package/dist/providers/DialogsProvider.d.ts +6 -0
  107. package/dist/providers/LayoutProvider.d.ts +11 -0
  108. package/dist/queries/Approval.d.ts +585 -0
  109. package/dist/queries/ApprovalHooks.d.ts +315 -0
  110. package/dist/queries/FileHooks.d.ts +151 -0
  111. package/dist/queries/PeopleSoftHooks.d.ts +537 -0
  112. package/dist/queries.d.ts +4 -1585
  113. package/dist/queries.js +59 -86
  114. package/dist/queries.js.map +1 -1
  115. package/dist/robots.txt +3 -0
  116. package/dist/server-utils.d.ts +2 -35
  117. package/dist/server-utils.js +13 -26
  118. package/dist/server-utils.js.map +1 -1
  119. package/dist/{chunk-2ROTNT7W.js → utils-DKyKGba7.js} +13 -18
  120. package/dist/utils-DKyKGba7.js.map +1 -0
  121. package/dist/utils.d.ts +1 -2
  122. package/dist/utils.js +3 -9
  123. package/dist/utils.js.map +1 -1
  124. package/dist/vite.d.ts +1 -5
  125. package/dist/vite.js +3 -6
  126. package/dist/vite.js.map +1 -1
  127. package/package.json +15 -23
  128. package/dist/Approval-CWQn-kah.d.cts +0 -284
  129. package/dist/Approval-CWQn-kah.d.ts +0 -284
  130. package/dist/FileMeta-CC014fnB.d.ts +0 -18
  131. package/dist/chunk-2ROTNT7W.js.map +0 -1
  132. package/dist/chunk-4FRZRIAO.js +0 -29
  133. package/dist/chunk-4FRZRIAO.js.map +0 -1
  134. package/dist/chunk-4UULRYGW.js.map +0 -1
  135. package/dist/chunk-5WRI5ZAA.js +0 -31
  136. package/dist/chunk-5WRI5ZAA.js.map +0 -1
  137. package/dist/chunk-CNDRHYQK.js +0 -883
  138. package/dist/chunk-CNDRHYQK.js.map +0 -1
  139. package/dist/chunk-DXXZZHAK.js +0 -28
  140. package/dist/chunk-DXXZZHAK.js.map +0 -1
  141. package/dist/chunk-MIVD2XWB.js.map +0 -1
  142. package/dist/chunk-TME53DAF.js.map +0 -1
  143. package/dist/chunk-ZMWQQXZT.js.map +0 -1
  144. package/dist/client-utils.cjs +0 -118
  145. package/dist/client-utils.cjs.map +0 -1
  146. package/dist/components.cjs +0 -802
  147. package/dist/components.cjs.map +0 -1
  148. package/dist/components.d.cts +0 -89
  149. package/dist/hooks.cjs +0 -534
  150. package/dist/hooks.cjs.map +0 -1
  151. package/dist/hooks.d.cts +0 -160
  152. package/dist/index.cjs +0 -3373
  153. package/dist/index.cjs.map +0 -1
  154. package/dist/index.d.cts +0 -36
  155. package/dist/models.cjs +0 -330
  156. package/dist/models.cjs.map +0 -1
  157. package/dist/models.d.cts +0 -161
  158. package/dist/queries.cjs +0 -706
  159. package/dist/queries.cjs.map +0 -1
  160. package/dist/queries.d.cts +0 -1585
  161. package/dist/server-utils.cjs +0 -145
  162. package/dist/server-utils.cjs.map +0 -1
  163. package/dist/server-utils.d.cts +0 -36
  164. package/dist/utils-ChipkRJ9.d.cts +0 -49
  165. package/dist/utils.cjs +0 -81
  166. package/dist/utils.cjs.map +0 -1
  167. package/dist/utils.d.cts +0 -4
  168. package/dist/vite.cjs +0 -94
  169. package/dist/vite.cjs.map +0 -1
  170. package/dist/vite.d.cts +0 -5
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components.ts","../src/components/core/TypographyWithIcon.tsx","../src/components/core/Fullscreen.tsx","../src/components/file/Dropzone.tsx","../src/components/file/FileViewer.tsx","../src/components/file/fileViewer/FileViewerGrid.tsx","../src/components/file/fileViewer/common/ActionsMenu.tsx","../src/contexts/FileContext.ts","../src/hooks/DialogsHooks.tsx","../src/contexts/DialogsContext.ts","../src/queries/FileHooks.ts","../src/models/file/FileMeta.ts","../src/lib/utils.ts","../src/env.ts","../src/components/file/fileViewer/FileViewerList.tsx","../src/components/file/fileViewer/ImageViewer.tsx","../src/components/data-grid/ChipInputCell.tsx","../src/components/data-grid/EditableColumnHeader.tsx","../src/components/router/RouterButton.tsx","../src/components/router/RouterGridActionsCellItem.tsx","../src/components/router/RouterIconButton.tsx","../src/components/router/RouterLink.tsx","../src/components/router/RouterTab.tsx","../src/components/router/RouterListItemButton.tsx","../src/components/router/RouterNotFound.tsx","../src/components/router/RouterError.tsx"],"sourcesContent":["export { TypographyWithIcon } from \"./components/core/TypographyWithIcon\";\r\nexport { Fullscreen } from \"./components/core/Fullscreen\";\r\nexport { Dropzone } from \"./components/file/Dropzone\";\r\nexport { FileViewer } from \"./components/file/FileViewer\";\r\nexport { ChipInputCell } from \"./components/data-grid/ChipInputCell\";\r\nexport { EditableColumnHeader } from \"./components/data-grid/EditableColumnHeader\";\r\nexport { RouterButton } from \"./components/router/RouterButton\";\r\nexport { RouterGridActionsCellItem } from \"./components/router/RouterGridActionsCellItem\";\r\nexport { RouterIconButton } from \"./components/router/RouterIconButton\";\r\nexport { RouterLink } from \"./components/router/RouterLink\";\r\nexport { RouterTab } from \"./components/router/RouterTab\";\r\nexport { RouterListItemButton } from \"./components/router/RouterListItemButton\";\r\nexport { RouterNotFound } from \"./components/router/RouterNotFound\";\r\nexport { RouterError } from \"./components/router/RouterError\";\r\n","import { Stack, Typography } from \"@mui/material\";\r\nimport type { SxProps, Theme, TypographyProps } from \"@mui/material\";\r\n\r\ninterface TypographyWithIconProps extends TypographyProps {\r\n startIcon?: React.ReactNode;\r\n endIcon?: React.ReactNode;\r\n}\r\n\r\nexport const TypographyWithIcon: React.FC<TypographyWithIconProps> = ({ startIcon, endIcon, children, sx, ...props }) => {\r\n const iconSx: SxProps<Theme> = {\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n flexShrink: 0,\r\n lineHeight: 0,\r\n \"& > svg\": {\r\n display: \"block\",\r\n },\r\n };\r\n\r\n return (\r\n <Typography\r\n component=\"span\"\r\n sx={{\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n verticalAlign: \"middle\",\r\n ...sx,\r\n }}\r\n gap={1}\r\n {...props}\r\n >\r\n {startIcon && (\r\n <Stack component=\"span\" sx={iconSx}>\r\n {startIcon}\r\n </Stack>\r\n )}\r\n <Stack component=\"span\" sx={{ display: \"inline\", lineHeight: \"inherit\" }}>\r\n {children}\r\n </Stack>\r\n {endIcon && (\r\n <Stack component=\"span\" sx={iconSx}>\r\n {endIcon}\r\n </Stack>\r\n )}\r\n </Typography>\r\n );\r\n};","import { Box } from \"@mui/material\";\r\nimport { useEffect, useEffectEvent, useRef, useState } from \"react\";\r\nimport type { BoxProps } from \"@mui/material\";\r\nimport type { FC } from \"react\";\r\n\r\nexport const Fullscreen: FC<BoxProps> = ({ children, sx, ...props }) => {\r\n const reference = useRef<HTMLDivElement | null>(null);\r\n const [height, setHeight] = useState<number>();\r\n\r\n const recompute = useEffectEvent(() => {\r\n if (!reference.current) return;\r\n const top = Math.ceil(reference.current.getBoundingClientRect().top);\r\n const avail = Math.max(0, window.innerHeight - top);\r\n setHeight(avail);\r\n });\r\n\r\n useEffect(() => {\r\n const element = reference.current;\r\n if (!element) return;\r\n\r\n recompute();\r\n\r\n window.addEventListener(\"resize\", recompute);\r\n\r\n const ro = new ResizeObserver(recompute);\r\n ro.observe(document.documentElement);\r\n ro.observe(document.body);\r\n ro.observe(element);\r\n\r\n return () => {\r\n window.removeEventListener(\"resize\", recompute);\r\n ro.disconnect();\r\n };\r\n }, []);\r\n\r\n return (\r\n <Box\r\n ref={reference}\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n minHeight: 0,\r\n width: \"100%\",\r\n overflow: \"auto\",\r\n ...sx,\r\n }}\r\n height={height}\r\n {...props}\r\n >\r\n {children}\r\n </Box>\r\n );\r\n};","import CloudUpload from \"@mui/icons-material/CloudUpload\";\r\nimport { Paper, Typography, useTheme } from \"@mui/material\";\r\nimport { useDropzone } from \"react-dropzone\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport type { SxProps, Theme} from \"@mui/material\";\r\nimport type { CSSProperties, FC } from \"react\";\r\nimport type { DropzoneOptions} from \"react-dropzone\";\r\n\r\nconst baseStyle: CSSProperties = {\r\n flex: 1,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n padding: \"20px\",\r\n borderWidth: 2,\r\n borderRadius: 2,\r\n borderStyle: \"dashed\",\r\n outline: \"none\",\r\n transition: \"border .24s ease-in-out\",\r\n cursor: \"pointer\",\r\n};\r\n\r\ninterface DropzoneProps extends DropzoneOptions {\r\n sx?: SxProps<Theme>;\r\n}\r\n\r\nexport const Dropzone: FC<DropzoneProps> = ({ sx, ...props }) => {\r\n const { getRootProps, getInputProps, isFocused, isDragAccept, isDragReject, } = useDropzone(props);\r\n const { t } = useTranslation();\r\n const theme = useTheme();\r\n\r\n const style = {\r\n ...baseStyle,\r\n ...(isFocused ? { borderColor: theme.palette.primary.main } : {}),\r\n ...(isDragAccept ? { borderColor: theme.palette.success.main } : {}),\r\n ...(isDragReject ? { borderColor: theme.palette.error.main } : {})\r\n };\r\n\r\n return (\r\n <Paper variant=\"outlined\" {...getRootProps({ style })} sx={sx}>\r\n <input {...getInputProps()} style={{ display: \"none\" }} />\r\n <CloudUpload />\r\n <Typography>{t(\"Layout.File.DragSomeFilesHereOrClickToSelectThem\")}</Typography>\r\n </Paper>\r\n );\r\n};","import { useState } from \"react\";\r\nimport { FileViewerGrid } from \"./fileViewer/FileViewerGrid\";\r\nimport { FileViewerList } from \"./fileViewer/FileViewerList\";\r\nimport { ImageViewer } from \"./fileViewer/ImageViewer\";\r\nimport type { FileViewerGridProps } from \"./fileViewer/FileViewerGrid\";\r\nimport type { ComponentType, FC, ReactNode } from \"react\";\r\nimport type { FileMeta } from \"~/models/file/FileMeta\";\r\nimport type { FileActions } from \"~/models/file/FileActions\";\r\nimport type { FileViewerListProps } from \"./fileViewer/FileViewerList\";\r\nimport { FileContext } from \"~/contexts/FileContext\";\r\nimport { useGetFileMetas } from \"~/queries/FileHooks\";\r\n\r\ninterface FileViewerComponent {\r\n Grid: ComponentType<FileViewerGridProps>;\r\n List: ComponentType<FileViewerListProps>;\r\n}\r\n\r\ninterface FileViewerProps {\r\n subId: string;\r\n onDelete?: (params: { remainingFileMetas: Array<FileMeta>; deletedFileMeta: FileMeta }) => void;\r\n actions?: FileActions;\r\n children: (component: FileViewerComponent) => ReactNode;\r\n}\r\n\r\nexport const FileViewer: FC<FileViewerProps> = ({ subId, onDelete, actions, children }) => {\r\n const { data: fileMetas = [] } = useGetFileMetas({ subId }, { enabled: !!subId });\r\n const [imageId, setImageId] = useState<string>(\"\");\r\n\r\n const components: FileViewerComponent = { Grid: FileViewerGrid, List: FileViewerList };\r\n\r\n if (fileMetas.length === 0) return null;\r\n\r\n return (\r\n <FileContext.Provider value={{ fileMetas, onDelete, actions, setImageId }}>\r\n {children(components)}\r\n <ImageViewer metaId={imageId} />\r\n </FileContext.Provider>\r\n );\r\n};\r\n","import MoreVert from \"@mui/icons-material/MoreVert\";\r\nimport { Box, IconButton, ImageListItem, ImageListItemBar, Stack, Tooltip } from \"@mui/material\";\r\nimport { grey } from \"@mui/material/colors\";\r\nimport React, { Fragment, useEffect, useState } from \"react\";\r\nimport { useInView } from \"react-intersection-observer\";\r\nimport { ActionsMenu } from \"./common/ActionsMenu\";\r\nimport type { SxProps, Theme } from \"@mui/material\";\r\nimport type { FileMeta } from \"~/models/file/FileMeta\";\r\nimport { useFile } from \"~/contexts/FileContext\";\r\nimport { useDownloadFile, useGetFileThumbnail, useOpenFile } from \"~/queries/FileHooks\";\r\n\r\nconst IMAGE_SIZE = 150;\r\n\r\ntype FileViewerGridItemBar = \"hidden\" | \"always\" | \"onMouseEnter\";\r\n\r\nexport interface FileViewerGridProps {\r\n size?: number;\r\n itemBar?: FileViewerGridItemBar;\r\n sx?: SxProps<Theme>;\r\n}\r\n\r\nexport const FileViewerGrid: React.FC<FileViewerGridProps> = ({ sx, size, itemBar }) => {\r\n const { fileMetas } = useFile();\r\n\r\n return (\r\n <Stack direction=\"row\" spacing={1} sx={{ overflow: \"auto\", ...sx }}>\r\n {fileMetas.map(fileMeta => (\r\n <GridFileViewerItem\r\n key={fileMeta.id}\r\n meta={fileMeta}\r\n size={size}\r\n itemBar={itemBar}\r\n />\r\n ))}\r\n </Stack>\r\n );\r\n};\r\n\r\ninterface GridFileViewerItemProps {\r\n meta: FileMeta;\r\n size?: number;\r\n itemBar?: FileViewerGridItemBar;\r\n}\r\n\r\nexport const GridFileViewerItem: React.FC<GridFileViewerItemProps> = ({ meta, size, itemBar }) => {\r\n const { setImageId, actions } = useFile();\r\n const [showItemBar, setShowItemBar] = useState<boolean>(itemBar === \"always\");\r\n const [menu, setMenu] = useState<{ mouseX: number; mouseY: number; } | null>(null);\r\n const { ref, inView } = useInView();\r\n\r\n useEffect(() => {\r\n setShowItemBar(itemBar === \"always\");\r\n }, [itemBar]);\r\n\r\n const { data: source } = useGetFileThumbnail({ meta }, { enabled: inView });\r\n\r\n const handleOnMouseEnter = () => setShowItemBar(true);\r\n const handleOnMouseLeave = () => itemBar !== \"always\" && setShowItemBar(false);\r\n\r\n const openMenu = (event: React.MouseEvent) => {\r\n setMenu(menu === null ? { mouseX: event.clientX, mouseY: event.clientY, } : null);\r\n setTimeout(() => setShowItemBar(true));\r\n };\r\n\r\n const { mutate: openFile } = useOpenFile();\r\n const { mutate: download } = useDownloadFile();\r\n\r\n const onClick = () => {\r\n switch (meta.mediaType) {\r\n case \"image\": { return setImageId(meta.id); }\r\n case \"application\": { return openFile(meta); }\r\n case \"video\": { return openFile(meta); }\r\n default: { return download(meta); }\r\n }\r\n };\r\n\r\n return (\r\n <Fragment>\r\n <ImageListItem sx={{ width: size ?? IMAGE_SIZE, height: size ?? IMAGE_SIZE }} onMouseEnter={handleOnMouseEnter} onMouseLeave={handleOnMouseLeave} ref={ref}>\r\n <Box\r\n component=\"img\"\r\n src={source}\r\n loading=\"lazy\"\r\n alt={\"thumbnail-\" + meta.id}\r\n onClick={onClick}\r\n sx={{ cursor: \"pointer\", objectFit: \"contain\", width: size ?? IMAGE_SIZE, height: size ?? IMAGE_SIZE }}\r\n />\r\n {(itemBar !== \"hidden\" && showItemBar) &&\r\n <ImageListItemBar\r\n title={\r\n <Tooltip title={meta.fileName}>\r\n <Box>\r\n {meta.fileName}\r\n </Box>\r\n </Tooltip>\r\n }\r\n actionIcon={\r\n (actions?.download !== false || actions.delete !== false) &&\r\n <IconButton sx={{ color: grey[100] }} onClick={openMenu}>\r\n <MoreVert />\r\n </IconButton>\r\n }\r\n />\r\n }\r\n </ImageListItem>\r\n\r\n {(actions?.download !== false || actions.delete !== false) && <ActionsMenu meta={meta} menu={menu} setMenu={setMenu} />}\r\n </Fragment>\r\n );\r\n};\r\n","import Delete from \"@mui/icons-material/Delete\";\r\nimport FileDownload from \"@mui/icons-material/FileDownload\";\r\nimport { List, ListItemButton, ListItemIcon, ListItemText, Menu } from \"@mui/material\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport type { FC } from \"react\";\r\nimport type { FileMeta } from \"~/models/file/FileMeta\";\r\nimport { useFile } from \"~/contexts/FileContext\";\r\nimport { useDialogs } from \"~/hooks/DialogsHooks\";\r\nimport { useDeleteFile, useDownloadFile } from \"~/queries/FileHooks\";\r\n\r\ninterface ActionsMenuProps {\r\n meta: FileMeta;\r\n menu: { mouseX: number; mouseY: number } | null;\r\n setMenu: (menu: { mouseX: number; mouseY: number } | null) => void;\r\n}\r\n\r\nexport const ActionsMenu: FC<ActionsMenuProps> = ({ meta, menu, setMenu }) => {\r\n const { t } = useTranslation();\r\n const { fileMetas, onDelete, actions } = useFile();\r\n const { confirm } = useDialogs();\r\n\r\n const handleMenuClose = () => { setMenu(null); };\r\n\r\n const { mutate: download, isPending: isDownloading } = useDownloadFile();\r\n const { mutate: deleteFile, isPending: isDeleting } = useDeleteFile();\r\n\r\n const handleOnDownload = () => {\r\n handleMenuClose();\r\n download(meta);\r\n };\r\n\r\n const handleOnDelete = async () => {\r\n if (!await confirm(t(\"Layout.File.AreYouSureYouWantToDelete\", { fileName: meta.fileName })))\r\n return;\r\n\r\n deleteFile(meta);\r\n handleMenuClose();\r\n\r\n if (onDelete) {\r\n const remainingFileMetas: Array<FileMeta> = fileMetas.filter(m => m.id !== meta.id);\r\n onDelete({ remainingFileMetas, deletedFileMeta: meta });\r\n }\r\n };\r\n\r\n return (\r\n <Menu open={menu !== null} onClose={handleMenuClose} anchorReference=\"anchorPosition\" variant=\"menu\"\r\n anchorPosition={menu === null ? undefined : { top: menu.mouseY, left: menu.mouseX }}>\r\n <List disablePadding>\r\n {actions?.download !== false &&\r\n <ListItemButton onClick={handleOnDownload} disabled={isDownloading}>\r\n <ListItemIcon>\r\n <FileDownload />\r\n </ListItemIcon>\r\n <ListItemText>{t(\"Layout.File.Download\")}</ListItemText>\r\n </ListItemButton>\r\n }\r\n {actions?.delete !== false &&\r\n <ListItemButton onClick={handleOnDelete} disabled={isDeleting}>\r\n <ListItemIcon>\r\n <Delete />\r\n </ListItemIcon>\r\n <ListItemText>{t(\"Layout.File.Delete\")}</ListItemText>\r\n </ListItemButton>\r\n }\r\n </List>\r\n </Menu>\r\n );\r\n};\r\n","import { createContext, useContext } from \"react\";\r\nimport type { FileMeta } from \"../models/file/FileMeta\";\r\nimport type { FileActions } from \"~/models/file/FileActions\";\r\n\r\nexport interface FileContextValue {\r\n fileMetas: Array<FileMeta>;\r\n onDelete?: (params: { remainingFileMetas: Array<FileMeta>; deletedFileMeta: FileMeta }) => void;\r\n actions?: FileActions;\r\n setImageId: (imageId: string) => void;\r\n};\r\n\r\nexport const FileContext = createContext<FileContextValue | null>(null);\r\n\r\nexport const useFile = () => {\r\n const context = useContext(FileContext);\r\n if (!context) {\r\n throw new Error(\"FileViewer components must be used within FileViewer\");\r\n }\r\n return context;\r\n};","import { Button, Dialog, DialogActions, DialogContent, DialogTitle, useEventCallback } from \"@mui/material\";\r\nimport { useContext } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { DialogsContext } from \"../contexts/DialogsContext\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface OpenDialogOptions<TResult> {\r\n onClose?: (result: TResult) => Promise<void>;\r\n}\r\n\r\nexport interface AlertOptions {\r\n title?: ReactNode;\r\n}\r\n\r\nexport interface ConfirmOptions {\r\n title?: ReactNode;\r\n cancelText?: ReactNode;\r\n}\r\n\r\nexport interface DialogProps<TPayload = undefined, TResult = void> {\r\n payload: TPayload;\r\n open: boolean;\r\n onClose: (result: TResult) => Promise<void>;\r\n}\r\n\r\nexport type OpenAlertDialog = (message: ReactNode, options?: AlertOptions) => Promise<void>;\r\n\r\nexport type OpenConfirmDialog = (message: ReactNode, options?: ConfirmOptions) => Promise<boolean>;\r\n\r\nexport type DialogComponent<TPayload, TResult> = React.ComponentType<DialogProps<TPayload, TResult>>;\r\n\r\nexport interface OpenDialog {\r\n <TPayload extends undefined, TResult>(Component: DialogComponent<TPayload, TResult>, payload?: TPayload, options?: OpenDialogOptions<TResult>): Promise<TResult>;\r\n <TPayload, TResult>(Component: DialogComponent<TPayload, TResult>, payload: TPayload, options?: OpenDialogOptions<TResult>): Promise<TResult>;\r\n}\r\n\r\nexport type CloseDialog = <TResult>(dialog: Promise<TResult>, result: TResult) => Promise<TResult>;\r\n\r\nexport interface AlertDialogPayload extends AlertOptions {\r\n message: ReactNode;\r\n}\r\n\r\nexport type AlertDialogProps = DialogProps<AlertDialogPayload, void>\r\n\r\nexport function AlertDialog({ open, payload, onClose }: Readonly<AlertDialogProps>) {\r\n const { t } = useTranslation();\r\n\r\n return (\r\n <Dialog maxWidth=\"xs\" fullWidth open={open} onClose={() => onClose()} disableRestoreFocus>\r\n <DialogTitle>{payload.title ?? t(\"Layout.Dialog.Alert\")}</DialogTitle>\r\n <DialogContent>{payload.message}</DialogContent>\r\n <DialogActions>\r\n <Button onClick={() => onClose()} autoFocus>\r\n {t(\"Layout.Dialog.Confirm\")}\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n );\r\n}\r\n\r\nexport interface ConfirmDialogPayload extends ConfirmOptions {\r\n message: ReactNode;\r\n}\r\n\r\nexport type ConfirmDialogProps = DialogProps<ConfirmDialogPayload, boolean>\r\n\r\nexport function ConfirmDialog({ open, payload, onClose }: Readonly<ConfirmDialogProps>) {\r\n const { t } = useTranslation();\r\n\r\n return (\r\n <Dialog maxWidth=\"xs\" fullWidth open={open} onClose={() => onClose(false)} disableRestoreFocus>\r\n <DialogTitle>{payload.title ?? t(\"Layout.Dialog.Confirm\")}</DialogTitle>\r\n <DialogContent>{payload.message}</DialogContent>\r\n <DialogActions>\r\n <Button onClick={() => onClose(false)}>\r\n {payload.cancelText ?? t(\"Layout.Dialog.Cancel\")}\r\n </Button>\r\n <Button onClick={() => onClose(true)} autoFocus>\r\n {t(\"Layout.Dialog.Confirm\")}\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n );\r\n}\r\n\r\ninterface DialogHook {\r\n alert: OpenAlertDialog;\r\n confirm: OpenConfirmDialog;\r\n open: OpenDialog;\r\n close: CloseDialog;\r\n}\r\n\r\nexport function useDialogs(): DialogHook {\r\n const { open, close } = useContext(DialogsContext);\r\n\r\n const alert = useEventCallback<OpenAlertDialog>((message, { ...options } = {}) =>\r\n open(AlertDialog, { ...options, message }),\r\n );\r\n\r\n const confirm = useEventCallback<OpenConfirmDialog>((message, { ...options } = {}) =>\r\n open(ConfirmDialog, { ...options, message }),\r\n );\r\n\r\n return { alert, confirm, open, close };\r\n}\r\n","import { createContext } from \"react\";\r\nimport type { CloseDialog, OpenDialog } from \"../hooks/DialogsHooks\";\r\n\r\nexport interface DialogsContextValue {\r\n open: OpenDialog;\r\n close: CloseDialog;\r\n}\r\n\r\nexport const DialogsContext = createContext<DialogsContextValue>({} as DialogsContextValue);","import { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\nimport saveAs from \"file-saver\";\r\nimport { useState } from \"react\";\r\nimport { Upload as TusUpload } from \"tus-js-client\";\r\nimport { uuidv7 } from \"uuidv7\";\r\nimport z from \"zod\";\r\nimport type { DetailedError } from \"tus-js-client\";\r\nimport type { DefinedInitialDataOptions, UseMutationOptions } from \"@tanstack/react-query\";\r\nimport type { FileMeta } from \"~/models/file/FileMeta\";\r\nimport { FileMetaSchema } from \"~/models/file/FileMeta\";\r\nimport { httpClient, toKebabCase } from \"~/lib/utils\";\r\nimport { clientEnv } from \"~/env\";\r\n\r\nconst QUERY_KEY = \"file\";\r\nconst HOUR = 1000 * 60 * 60;\r\nconst APP_NAME = toKebabCase(clientEnv.VITE_APP_TITLE);\r\n\r\ntype OptionalId = string | undefined | null;\r\n\r\ntype BaseFileMetaArrayQueryOptions = Omit<DefinedInitialDataOptions<Array<FileMeta>>, \"queryKey\" | \"queryFn\" | \"staleTime\" | \"gcTime\" | \"refetchOnWindowFocus\" | \"initialData\">;\r\ntype BaseBlobQueryOptions = Omit<DefinedInitialDataOptions<Blob, Error, string>, \"queryKey\" | \"queryFn\" | \"select\" | \"staleTime\" | \"gcTime\" | \"refetchOnWindowFocus\" | \"initialData\">;\r\ntype BaseFileMetaMutationOptions = Omit<UseMutationOptions<FileMeta, Error, FileMeta>, \"mutationFn\" | \"onSettled\">;\r\ntype BaseBlobMutationOptions = Omit<UseMutationOptions<Blob, Error, FileMeta>, \"mutationFn\" | \"onSuccess\">;\r\ntype BaseStringMutationOptions = Omit<UseMutationOptions<string, Error, string>, \"mutationFn\" | \"onSettled\">;\r\n\r\nexport const GetFileMetasParamsSchema = z.object({\r\n appName: z.string().min(1).max(255).default(APP_NAME).optional(),\r\n subId: z.uuid(),\r\n});\r\n\r\nexport type GetFileMetasParams = z.infer<typeof GetFileMetasParamsSchema>;\r\n\r\nexport const useGetFileMetas = (params: GetFileMetasParams, options?: BaseFileMetaArrayQueryOptions) => {\r\n const queryParams = new URLSearchParams();\r\n queryParams.append(\"appName\", params.appName ?? APP_NAME);\r\n queryParams.append(\"subId\", params.subId);\r\n\r\n return useQuery<Array<FileMeta>>({\r\n ...options,\r\n queryKey: [QUERY_KEY, \"meta\", params.appName ?? APP_NAME, params.subId],\r\n queryFn: ({ signal }) => httpClient.request({\r\n url: `/${QUERY_KEY}/v1/meta?${queryParams.toString()}`,\r\n method: \"GET\",\r\n signal,\r\n }),\r\n staleTime: HOUR,\r\n gcTime: HOUR,\r\n refetchOnWindowFocus: false,\r\n });\r\n};\r\n\r\nexport const GetFileThumbnailParamsSchema = z.object({\r\n appName: z.string().min(1).max(255).default(APP_NAME).optional(),\r\n meta: FileMetaSchema.nullish(),\r\n});\r\n\r\nexport type GetFileThumbnailParams = z.infer<typeof GetFileThumbnailParamsSchema>;\r\n\r\nexport const useGetFileThumbnail = (params: GetFileThumbnailParams, options?: BaseBlobQueryOptions) => {\r\n const queryParams = new URLSearchParams();\r\n queryParams.append(\"appName\", params.appName ?? APP_NAME);\r\n queryParams.append(\"id\", params.meta?.id ?? \"\");\r\n\r\n return useQuery<Blob, Error, string>({\r\n ...options,\r\n queryKey: [QUERY_KEY, \"thumbnail\", params.appName ?? APP_NAME, params.meta?.id],\r\n queryFn: ({ signal }) => httpClient.request({\r\n url: `/${QUERY_KEY}/v1/thumbnail?${queryParams.toString()}`,\r\n method: \"GET\",\r\n signal,\r\n responseType: \"blob\"\r\n }),\r\n select: data => URL.createObjectURL(data),\r\n staleTime: HOUR,\r\n gcTime: HOUR,\r\n refetchOnWindowFocus: false,\r\n enabled: !!params.meta && options?.enabled !== false,\r\n });\r\n};\r\n\r\nexport const GetFileParamsSchema = z.object({\r\n appName: z.string().min(1).max(255).default(APP_NAME).optional(),\r\n meta: FileMetaSchema.nullish(),\r\n});\r\n\r\nexport type GetFileParams = z.infer<typeof GetFileParamsSchema>;\r\n\r\nexport const useGetFile = (params: GetFileParams, options?: BaseBlobQueryOptions) => {\r\n const queryParams = new URLSearchParams();\r\n queryParams.append(\"appName\", params.appName ?? APP_NAME);\r\n queryParams.append(\"id\", params.meta?.id ?? \"\");\r\n\r\n return useQuery<Blob, Error, string>({\r\n ...options,\r\n queryKey: [QUERY_KEY, params.appName ?? APP_NAME, params.meta?.id],\r\n queryFn: ({ signal }) => httpClient.request({\r\n url: `/${QUERY_KEY}/v1?${queryParams.toString()}`,\r\n method: \"GET\",\r\n signal,\r\n responseType: \"blob\"\r\n }),\r\n select: data => URL.createObjectURL(data),\r\n staleTime: HOUR,\r\n gcTime: HOUR,\r\n refetchOnWindowFocus: false,\r\n enabled: !!params.meta && options?.enabled !== false,\r\n });\r\n};\r\n\r\nexport const useDownloadFile = (options?: BaseBlobMutationOptions) => {\r\n return useMutation<Blob, Error, FileMeta>({\r\n ...options,\r\n mutationFn: meta => httpClient.request({\r\n url: `/${QUERY_KEY}/v1/download?appName=${APP_NAME}&id=${meta.id}`,\r\n method: \"GET\",\r\n responseType: \"blob\"\r\n }),\r\n onSuccess: (data, variables) => saveAs(data, `${variables.fileName}.${variables.fileExtension}`)\r\n });\r\n};\r\n\r\nexport const useOpenFile = (options?: BaseBlobMutationOptions) => {\r\n return useMutation<Blob, Error, FileMeta>({\r\n ...options,\r\n mutationFn: meta => httpClient.request({\r\n url: `/${QUERY_KEY}/v1?appName=${APP_NAME}&id=${meta.id}`,\r\n method: \"GET\",\r\n responseType: \"blob\"\r\n }),\r\n onSuccess: data => { window.open(URL.createObjectURL(data)); }\r\n });\r\n};\r\n\r\nexport const useUpdateFileMeta = (options?: BaseFileMetaMutationOptions) => {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation<FileMeta, Error, FileMeta>({\r\n ...options,\r\n mutationFn: meta => httpClient.request({\r\n url: `/${QUERY_KEY}/v1/meta?appName=${APP_NAME}&id=${meta.id}`,\r\n method: \"PUT\",\r\n data: meta\r\n }),\r\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\"], exact: false })\r\n });\r\n};\r\n\r\nexport const useDeleteFile = (options?: BaseFileMetaMutationOptions) => {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation<FileMeta, Error, FileMeta>({\r\n ...options,\r\n mutationFn: meta => httpClient.request({\r\n url: `/${QUERY_KEY}/v1?appName=${APP_NAME}&id=${meta.id}`,\r\n method: \"DELETE\"\r\n }),\r\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\"], exact: false }),\r\n });\r\n};\r\n\r\nexport const useDeleteFiles = (options?: BaseStringMutationOptions) => {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation<string, Error, string>({\r\n ...options,\r\n mutationFn: subId => httpClient.request({\r\n url: `/${QUERY_KEY}/v1?appName=${APP_NAME}&subId=${subId}`,\r\n method: \"DELETE\"\r\n }),\r\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\"], exact: false })\r\n });\r\n};\r\n\r\ninterface UseUploadFileProps {\r\n subId: OptionalId;\r\n onSuccess?: (meta: Pick<FileMeta, \"id\" | \"appName\" | \"subId\" | \"fileName\">) => void;\r\n onError?: (error: Error | DetailedError) => void;\r\n}\r\n\r\nexport const useUploadFile = ({ subId, onSuccess, onError }: UseUploadFileProps) => {\r\n const [progress, setProgress] = useState<number>(0);\r\n const queryClient = useQueryClient();\r\n\r\n const mutate = async (file: File) => {\r\n if (!subId) throw new Error(\"subId is required for file upload\");\r\n\r\n const metadata: Pick<FileMeta, \"id\" | \"appName\" | \"subId\" | \"fileName\"> = {\r\n id: uuidv7(),\r\n appName: APP_NAME,\r\n subId: subId,\r\n fileName: file.name,\r\n };\r\n\r\n const upload = new TusUpload(file, {\r\n endpoint: `${clientEnv.VITE_API_URL}/${QUERY_KEY}/v1/upload`,\r\n chunkSize: 1_048_576, // 1 MB\r\n metadata: {\r\n id: metadata.id,\r\n appName: metadata.appName,\r\n subId: metadata.subId,\r\n fileName: metadata.fileName,\r\n fileExtension: file.type\r\n },\r\n // headers: { \"Authorization\": `Bearer ${await getToken()}` }, //TODO: implement token retrieval\r\n onError: (error) => {\r\n setProgress(0);\r\n onError?.(error);\r\n },\r\n onProgress: (bytesUploaded, bytesTotal) => {\r\n setProgress((bytesUploaded / bytesTotal) * 100);\r\n },\r\n onSuccess: () => {\r\n setProgress(0);\r\n queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\", subId], exact: false });\r\n onSuccess?.(metadata);\r\n },\r\n });\r\n\r\n const previousUploads = await upload.findPreviousUploads();\r\n if (previousUploads.length > 0) {\r\n upload.resumeFromPreviousUpload(previousUploads[0]);\r\n }\r\n\r\n upload.start();\r\n };\r\n\r\n return { mutate, progress };\r\n};\r\n","import * as z from \"zod\";\r\n\r\nexport const FileMetaSchema = z.object({\r\n id: z.uuid(),\r\n subId: z.uuid(),\r\n appName: z.string().trim().min(1).max(255),\r\n fileName: z.string().trim().min(1).max(255),\r\n fileExtension: z.string().trim().min(1).max(255),\r\n fileSize: z.number().min(0),\r\n mediaSubType: z.string().trim().min(1).max(255),\r\n mediaType: z.string().trim().min(1).max(255),\r\n mimeType: z.string().trim().min(1).max(255),\r\n createdBy: z.string().trim().min(1).max(255),\r\n createdDate: z.date(),\r\n});\r\n\r\nexport type FileMeta = z.infer<typeof FileMetaSchema>;\r\n","import axios from \"axios\";\r\nimport type { AnyFieldApi } from \"@tanstack/react-form\";\r\nimport { clientEnv } from \"~/env\";\r\n\r\nexport class Platform {\r\n static get isAndroid() { return /android/i.test(this.userAgent); }\r\n static get isIOS() { return /iPad|iPhone|iPod/.test(this.userAgent); }\r\n static get isWindows() { return /windows/i.test(this.userAgent); }\r\n static get isMacOS() { return /Macintosh|MacIntel|MacPPC|Mac68K/.test(this.userAgent); }\r\n\r\n private static get userAgent() { return typeof navigator === \"undefined\" ? \"\" : navigator.userAgent; }\r\n}\r\n\r\nexport const rootRouteHead = () => ({\r\n meta: [\r\n { charSet: \"utf-8\" },\r\n { name: \"viewport\", content: \"width=device-width, initial-scale=1\" },\r\n { title: clientEnv.VITE_APP_TITLE },\r\n { name: \"og:type\", content: \"website\" },\r\n { name: \"og:title\", content: clientEnv.VITE_APP_TITLE },\r\n { name: \"og:image\", content: \"/favicon-32x32.png\" }\r\n ],\r\n links: [\r\n { rel: \"apple-touch-icon\", sizes: \"180x180\", href: \"/apple-touch-icon.png\", },\r\n { rel: \"icon\", type: \"image/png\", sizes: \"32x32\", href: \"/favicon-32x32.png\", },\r\n { rel: \"icon\", type: \"image/png\", sizes: \"16x16\", href: \"/favicon-16x16.png\", },\r\n { rel: \"manifest\", href: \"/manifest.webmanifest\" },\r\n { rel: \"icon\", href: \"/favicon.ico\" },\r\n ],\r\n});\r\n\r\nexport const httpClient = axios.create({\r\n baseURL: clientEnv.VITE_API_URL // TODO: Not working in children projects\r\n});\r\n\r\n/* Internal Utils */\r\nexport type FormOmittedProps =\r\n \"name\" |\r\n \"value\" |\r\n \"onChange\" |\r\n \"onBlur\" |\r\n \"error\" |\r\n \"helperText\" |\r\n \"renderInput\" |\r\n \"type\" |\r\n \"aria-label\";\r\n\r\nexport const getFieldStatus = (field: AnyFieldApi) => {\r\n const { meta } = field.state;\r\n\r\n const isTouched = meta.isTouched;\r\n const hasError = !!meta.errors.length;\r\n const helperText = meta.errors[0]?.message;\r\n\r\n return { isTouched, hasError, helperText };\r\n};\r\n\r\nexport const toKebabCase = (str: string): string => {\r\n return str\r\n .replaceAll(/([a-z])([A-Z])/g, \"$1-$2\")\r\n .replaceAll(/[\\s_]+/g, \"-\")\r\n .replaceAll(/[^a-zA-Z0-9-]/g, \"\")\r\n .toLowerCase()\r\n .replaceAll(/-+/g, \"-\")\r\n .replaceAll(/(^-|-$)/g, \"\");\r\n};\r\n","import { createEnv } from \"@t3-oss/env-core\";\r\nimport { z } from \"zod\";\r\n\r\nexport const clientEnv = createEnv({\r\n clientPrefix: \"VITE_\",\r\n client: {\r\n VITE_APP_TITLE: z.string(),\r\n VITE_MUI_LICENSE_KEY: z.string(),\r\n VITE_API_URL: z.url(),\r\n },\r\n runtimeEnv: import.meta.env,\r\n emptyStringAsUndefined: true,\r\n});\r\n\r\nexport const serverEnv = createEnv({\r\n server: {\r\n DATABASE_URL: z.string(),\r\n MICROSOFT_CLIENT_ID: z.string(),\r\n MICROSOFT_CLIENT_SECRET: z.string(),\r\n },\r\n runtimeEnv: process.env,\r\n emptyStringAsUndefined: true,\r\n});\r\n","import AttachFile from \"@mui/icons-material/AttachFile\";\r\nimport Image from \"@mui/icons-material/Image\";\r\nimport MoreVert from \"@mui/icons-material/MoreVert\";\r\nimport SmartDisplay from \"@mui/icons-material/SmartDisplay\";\r\nimport { IconButton, List, ListItemButton, ListItemIcon, ListItemText } from \"@mui/material\";\r\nimport { Fragment, useState } from \"react\";\r\nimport { ActionsMenu } from \"./common/ActionsMenu\";\r\nimport type { FC } from \"react\";\r\nimport type { SxProps, Theme } from \"@mui/material\";\r\nimport type { FileMeta } from \"~/models/file/FileMeta\";\r\nimport { useFile } from \"~/contexts/FileContext\";\r\nimport { useDownloadFile, useOpenFile } from \"~/queries/FileHooks\";\r\n\r\nexport interface FileViewerListProps {\r\n sx?: SxProps<Theme>;\r\n}\r\n\r\nexport const FileViewerList: FC<FileViewerListProps> = ({ sx }) => {\r\n const { fileMetas } = useFile();\r\n\r\n return (\r\n <List dense sx={sx}>\r\n {fileMetas.map(fileMeta =>\r\n <ListFileViewerItem\r\n key={fileMeta.id}\r\n meta={fileMeta}\r\n />\r\n )}\r\n </List>\r\n );\r\n};\r\n\r\ninterface ListFileViewerItemProps {\r\n meta: FileMeta;\r\n}\r\n\r\nexport const ListFileViewerItem: React.FC<ListFileViewerItemProps> = ({ meta }) => {\r\n const { setImageId, actions } = useFile();\r\n const [menu, setMenu] = useState<{ mouseX: number; mouseY: number; } | null>(null);\r\n\r\n const openMenu = (event: React.MouseEvent) => {\r\n event.stopPropagation();\r\n setMenu(menu === null ? { mouseX: event.clientX, mouseY: event.clientY, } : null);\r\n };\r\n\r\n const { mutate: openFile } = useOpenFile();\r\n const { mutate: download } = useDownloadFile();\r\n\r\n const onClick = () => {\r\n switch (meta.mediaType) {\r\n case \"image\": { return setImageId(meta.id); }\r\n case \"application\": { return openFile(meta); }\r\n case \"video\": { return openFile(meta); }\r\n default: { return download(meta); }\r\n }\r\n };\r\n\r\n const icon = () => {\r\n switch (meta.mediaType) {\r\n case \"image\": {\r\n return <Image />;\r\n }\r\n case \"video\": {\r\n return <SmartDisplay />;\r\n }\r\n default: {\r\n return <AttachFile />;\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <Fragment>\r\n <ListItemButton key={meta.id} onClick={onClick}>\r\n <ListItemIcon>\r\n {icon()}\r\n </ListItemIcon>\r\n <ListItemText primary={`${meta.fileName}.${meta.fileExtension}`} />\r\n {(actions?.download !== false || actions.delete !== false) &&\r\n <IconButton edge=\"end\" onClick={openMenu}>\r\n <MoreVert />\r\n </IconButton>\r\n }\r\n </ListItemButton>\r\n\r\n {(actions?.download !== false || actions.delete !== false) && <ActionsMenu meta={meta} menu={menu} setMenu={setMenu} />}\r\n </Fragment>\r\n );\r\n};\r\n","import Close from \"@mui/icons-material/Close\";\r\nimport { Box, Dialog, Fab } from \"@mui/material\";\r\nimport React, { useEffect } from \"react\";\r\nimport type { FileMeta } from \"~/models/file/FileMeta\";\r\nimport { useFile } from \"~/contexts/FileContext\";\r\nimport { useGetFile } from \"~/queries/FileHooks\";\r\n\r\ninterface ImageViewerProps {\r\n metaId: string;\r\n}\r\n\r\nexport const ImageViewer: React.FC<ImageViewerProps> = ({ metaId }) => {\r\n const { fileMetas, setImageId } = useFile();\r\n\r\n const meta = fileMetas.find(m => m.id === metaId)!;\r\n\r\n const { data: source } = useGetFile({ meta });\r\n\r\n useEffect(() => {\r\n if (metaId)\r\n globalThis.addEventListener(\"keydown\", handleOnKeydown);\r\n\r\n return () => { globalThis.removeEventListener(\"keydown\", handleOnKeydown); };\r\n }, [metaId]);\r\n\r\n const handleOnKeydown = (event: KeyboardEvent) => {\r\n const images: Array<FileMeta> = fileMetas.filter(m => m.mediaType === \"image\");\r\n const imageIndex: number = images.findIndex(m => m.id === metaId);\r\n\r\n switch (event.key) {\r\n case \"ArrowLeft\": {\r\n return handleOnArrowLeft(images, imageIndex);\r\n }\r\n case \"ArrowRight\": {\r\n return handleOnArrowRight(images, imageIndex);\r\n }\r\n case \"Backspace\":\r\n case \"Escape\": {\r\n event.preventDefault();\r\n return onClose();\r\n }\r\n }\r\n };\r\n\r\n const handleOnArrowLeft = (images: Array<FileMeta>, index: number) => {\r\n if (index > 0) {\r\n const previousFile: FileMeta = images[index - 1];\r\n setImageId(previousFile.id);\r\n }\r\n };\r\n\r\n const handleOnArrowRight = (images: Array<FileMeta>, index: number) => {\r\n if (index < images.length - 1) {\r\n const nextFile: FileMeta = images[index + 1];\r\n setImageId(nextFile.id);\r\n }\r\n };\r\n\r\n const onClose = () => setImageId(\"\");\r\n\r\n if (!metaId) return null;\r\n\r\n return (\r\n <Dialog open onClose={onClose} maxWidth=\"xl\">\r\n <Box component=\"img\" src={source} alt={metaId} sx={{ maxWidth: \"100vw\", maxHeight: { xs: \"calc(100vh - 56px)\", sm: \"calc(100vh - 64px)\" } }} />\r\n\r\n <Fab size=\"medium\" onClick={onClose} sx={{ position: \"fixed\", top: 8, right: 8 }}>\r\n <Close />\r\n </Fab>\r\n </Dialog>\r\n );\r\n};\r\n","import { Chip, Stack } from \"@mui/material\";\r\nimport type { ChipProps} from \"@mui/material\";\r\nimport type { GridRenderCellParams, GridValidRowModel } from \"@mui/x-data-grid-premium\";\r\n\r\nconst isArray = (value: any) => Array.isArray(value);\r\n\r\ninterface ChipInputCellProps<T extends GridValidRowModel> {\r\n params: GridRenderCellParams<T>;\r\n slotProps?: ChipProps;\r\n getLabel?: (object: T) => string | number;\r\n}\r\n\r\nexport const ChipInputCell = <T extends GridValidRowModel>({ params, slotProps, getLabel }: ChipInputCellProps<T>) => {\r\n if (!params.value) return null;\r\n\r\n const getLabelValue = (value: any) => {\r\n if (getLabel) return getLabel(value);\r\n return value;\r\n };\r\n\r\n if (isArray(params.value))\r\n return (\r\n <Stack direction=\"row\" alignItems=\"center\" gap={1} sx={{ overflowX: \"auto\", height: \"100%\", width: params.colDef.computedWidth }}>\r\n {params.value.map((value: any, index) =>\r\n <Chip key={`${index + 1}-chip-input-cell`} label={getLabelValue(value)} {...slotProps} />\r\n )}\r\n </Stack>\r\n );\r\n\r\n return <Chip label={getLabelValue(params.value)} {...slotProps} />;\r\n};","import Edit from \"@mui/icons-material/Edit\";\r\nimport { TypographyWithIcon } from \"../core/TypographyWithIcon\";\r\nimport type { GridColumnHeaderParams, GridValidRowModel } from \"@mui/x-data-grid-premium\";\r\n\r\nexport const EditableColumnHeader = <T extends GridValidRowModel>({ colDef }: GridColumnHeaderParams<T>) => {\r\n return <TypographyWithIcon endIcon={<Edit color=\"disabled\" fontSize=\"small\" />} variant=\"body2\" className=\"MuiDataGrid-columnHeaderTitle\">{colDef.headerName}</TypographyWithIcon>;\r\n};","import { Button } from \"@mui/material\";\r\nimport { createLink } from \"@tanstack/react-router\";\r\nimport React from \"react\";\r\nimport type { ButtonProps } from \"@mui/material\";\r\nimport type { LinkComponent } from \"@tanstack/react-router\";\r\n\r\nconst Component = React.forwardRef<HTMLAnchorElement, ButtonProps<\"a\">>(function ButtonComponent(props, reference) {\r\n return <Button ref={reference} component=\"a\" {...props} />;\r\n});\r\n\r\nconst CreatedComponent = createLink(Component);\r\n\r\nexport const RouterButton: LinkComponent<typeof Component> = (props) => {\r\n return <CreatedComponent {...props} />;\r\n};","import { GridActionsCellItem } from \"@mui/x-data-grid-premium\";\r\nimport { createLink } from \"@tanstack/react-router\";\r\nimport React from \"react\";\r\nimport type { GridActionsCellItemProps } from \"@mui/x-data-grid-premium\";\r\nimport type { LinkComponent } from \"@tanstack/react-router\";\r\n\r\nconst Component = React.forwardRef<HTMLButtonElement, GridActionsCellItemProps>(\r\n function GridActionsCellItemComponent(props, reference) {\r\n return <GridActionsCellItem ref={reference} component=\"a\" {...props} />;\r\n }\r\n) as React.ForwardRefExoticComponent<GridActionsCellItemProps & React.RefAttributes<HTMLButtonElement>>;\r\n\r\nconst CreatedComponent = createLink(Component);\r\n\r\nexport const RouterGridActionsCellItem: LinkComponent<typeof Component> = (props) => {\r\n return <CreatedComponent {...props} />;\r\n};","import { IconButton } from \"@mui/material\";\r\nimport { createLink } from \"@tanstack/react-router\";\r\nimport React from \"react\";\r\nimport type { IconButtonProps } from \"@mui/material\";\r\nimport type { LinkComponent } from \"@tanstack/react-router\";\r\n\r\nconst Component = React.forwardRef<HTMLAnchorElement, IconButtonProps<\"a\">>(function IconButtonComponent(props, reference) {\r\n return <IconButton ref={reference} component=\"a\" {...props} />;\r\n});\r\n\r\nconst CreatedComponent = createLink(Component);\r\n\r\nexport const RouterIconButton: LinkComponent<typeof Component> = (props) => {\r\n return <CreatedComponent {...props} />;\r\n};","import { Link } from \"@mui/material\";\r\nimport { createLink } from \"@tanstack/react-router\";\r\nimport React from \"react\";\r\nimport type { LinkProps } from \"@mui/material\";\r\nimport type { LinkComponent } from \"@tanstack/react-router\";\r\n\r\nconst Component = React.forwardRef<HTMLAnchorElement, LinkProps>(function LinkComponent(props, reference) {\r\n return <Link ref={reference} {...props} />;\r\n});\r\n\r\nconst CreatedComponent = createLink(Component);\r\n\r\nexport const RouterLink: LinkComponent<typeof Component> = (props) => {\r\n return <CreatedComponent {...props} />;\r\n};","import { Tab } from \"@mui/material\";\r\nimport { createLink } from \"@tanstack/react-router\";\r\nimport React from \"react\";\r\nimport type { TabProps } from \"@mui/material\";\r\nimport type { LinkComponent } from \"@tanstack/react-router\";\r\n\r\nconst Component = React.forwardRef<HTMLAnchorElement, TabProps<\"a\">>(function TabComponent(props, reference) {\r\n return <Tab ref={reference} component=\"a\" {...props} />;\r\n});\r\n\r\nconst CreatedComponent = createLink(Component);\r\n\r\nexport const RouterTab: LinkComponent<typeof Component> = (props) => {\r\n return <CreatedComponent {...props} />;\r\n};","import { ListItemButton } from \"@mui/material\";\r\nimport { createLink } from \"@tanstack/react-router\";\r\nimport React from \"react\";\r\nimport type { ListItemButtonProps } from \"@mui/material\";\r\nimport type { LinkComponent } from \"@tanstack/react-router\";\r\n\r\nconst Component = React.forwardRef<HTMLAnchorElement, ListItemButtonProps<\"a\">>(function ButtonComponent(props, reference) {\r\n return <ListItemButton ref={reference} component=\"a\" {...props} />;\r\n});\r\n\r\nconst CreatedComponent = createLink(Component);\r\n\r\nexport const RouterListItemButton: LinkComponent<typeof Component> = (props) => {\r\n return <CreatedComponent {...props} />;\r\n};\r\n","import { Box, Divider, Typography } from \"@mui/material\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nexport function RouterNotFound() {\r\n const { t } = useTranslation();\r\n\r\n return (\r\n <Box height=\"100vh\" display=\"flex\" flexDirection=\"column\" alignItems=\"center\" justifyContent=\"center\" textAlign=\"center\" px={2} >\r\n <Box display=\"flex\" alignItems=\"center\" mb={4}>\r\n <Typography variant=\"h3\" component=\"span\" fontWeight={500} sx={{ lineHeight: 1 }}>404</Typography>\r\n <Divider orientation=\"vertical\" flexItem sx={{ mx: 3 }} />\r\n <Typography variant=\"h5\" component=\"span\">{t(\"Layout.ThisPageCouldNotBeFound\")}</Typography>\r\n </Box>\r\n </Box>\r\n );\r\n}\r\n","import { Box, Divider, Typography } from \"@mui/material\";\r\nimport type { FC } from \"react\";\r\nimport type { ErrorComponentProps } from \"@tanstack/react-router\";\r\n\r\ninterface RouterErrorProps {\r\n error: ErrorComponentProps[\"error\"];\r\n}\r\n\r\nexport const RouterError: FC<RouterErrorProps> = ({ error }) => {\r\n\r\n return (\r\n <Box height=\"100vh\" display=\"flex\" flexDirection=\"column\" alignItems=\"center\" justifyContent=\"center\" textAlign=\"center\" px={2} >\r\n <Box display=\"flex\" alignItems=\"center\" mb={4}>\r\n <Typography variant=\"h3\" component=\"span\" fontWeight={500} sx={{ lineHeight: 1 }}>{error.name || \"500\"}</Typography>\r\n <Divider orientation=\"vertical\" flexItem sx={{ mx: 3 }} />\r\n <Typography variant=\"h5\" component=\"span\">{error.message}</Typography>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n"],"mappings":"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","names":["import_material","import_jsx_runtime","import_material","import_jsx_runtime","CloudUpload","import_react","import_material","import_react","import_material","import_react_i18next","import_react","import_material","import_react","import_react_i18next","import_react","import_jsx_runtime","import_react","import_zod","axios","z","saveAs","import_jsx_runtime","FileDownload","Delete","import_jsx_runtime","MoreVert","import_MoreVert","import_material","import_react","import_jsx_runtime","Image","SmartDisplay","AttachFile","MoreVert","import_material","import_react","import_jsx_runtime","Close","import_jsx_runtime","import_material","import_jsx_runtime","import_jsx_runtime","Edit","import_material","import_react","import_jsx_runtime","React","import_react_router","import_react","import_jsx_runtime","Component","React","CreatedComponent","import_material","import_react_router","import_react","import_jsx_runtime","Component","React","CreatedComponent","import_material","import_react_router","import_react","import_jsx_runtime","Component","React","CreatedComponent","import_material","import_react_router","import_react","import_jsx_runtime","Component","React","CreatedComponent","import_material","import_react_router","import_react","import_jsx_runtime","Component","React","ButtonComponent","CreatedComponent","import_material","import_react_i18next","import_jsx_runtime","import_material","import_jsx_runtime"]}
@@ -1,89 +0,0 @@
1
- import { TypographyProps, BoxProps, SxProps, Theme, ChipProps, ButtonProps, IconButtonProps, LinkProps, TabProps, ListItemButtonProps } from '@mui/material';
2
- import react__default, { FC, ComponentType, ReactNode } from 'react';
3
- import { DropzoneOptions } from 'react-dropzone';
4
- import { F as FileMeta } from './FileMeta-CC014fnB.cjs';
5
- import * as z from 'zod';
6
- import * as react_jsx_runtime from 'react/jsx-runtime';
7
- import { GridValidRowModel, GridRenderCellParams, GridColumnHeaderParams, GridActionsCellItemProps } from '@mui/x-data-grid-premium';
8
- import { LinkComponent, ErrorComponentProps } from '@tanstack/react-router';
9
-
10
- interface TypographyWithIconProps extends TypographyProps {
11
- startIcon?: React.ReactNode;
12
- endIcon?: React.ReactNode;
13
- }
14
- declare const TypographyWithIcon: React.FC<TypographyWithIconProps>;
15
-
16
- declare const Fullscreen: FC<BoxProps>;
17
-
18
- interface DropzoneProps extends DropzoneOptions {
19
- sx?: SxProps<Theme>;
20
- }
21
- declare const Dropzone: FC<DropzoneProps>;
22
-
23
- type FileViewerGridItemBar = "hidden" | "always" | "onMouseEnter";
24
- interface FileViewerGridProps {
25
- size?: number;
26
- itemBar?: FileViewerGridItemBar;
27
- sx?: SxProps<Theme>;
28
- }
29
-
30
- declare const FileActionsSchema: z.ZodObject<{
31
- download: z.ZodOptional<z.ZodBoolean>;
32
- delete: z.ZodOptional<z.ZodBoolean>;
33
- }, z.core.$strip>;
34
- type FileActions = z.infer<typeof FileActionsSchema>;
35
-
36
- interface FileViewerListProps {
37
- sx?: SxProps<Theme>;
38
- }
39
-
40
- interface FileViewerComponent {
41
- Grid: ComponentType<FileViewerGridProps>;
42
- List: ComponentType<FileViewerListProps>;
43
- }
44
- interface FileViewerProps {
45
- subId: string;
46
- onDelete?: (params: {
47
- remainingFileMetas: Array<FileMeta>;
48
- deletedFileMeta: FileMeta;
49
- }) => void;
50
- actions?: FileActions;
51
- children: (component: FileViewerComponent) => ReactNode;
52
- }
53
- declare const FileViewer: FC<FileViewerProps>;
54
-
55
- interface ChipInputCellProps<T extends GridValidRowModel> {
56
- params: GridRenderCellParams<T>;
57
- slotProps?: ChipProps;
58
- getLabel?: (object: T) => string | number;
59
- }
60
- declare const ChipInputCell: <T extends GridValidRowModel>({ params, slotProps, getLabel }: ChipInputCellProps<T>) => react_jsx_runtime.JSX.Element | null;
61
-
62
- declare const EditableColumnHeader: <T extends GridValidRowModel>({ colDef }: GridColumnHeaderParams<T>) => react_jsx_runtime.JSX.Element;
63
-
64
- declare const Component$5: react__default.ForwardRefExoticComponent<Omit<ButtonProps<"a">, "ref"> & react__default.RefAttributes<HTMLAnchorElement>>;
65
- declare const RouterButton: LinkComponent<typeof Component$5>;
66
-
67
- declare const Component$4: react__default.ForwardRefExoticComponent<GridActionsCellItemProps & react__default.RefAttributes<HTMLButtonElement>>;
68
- declare const RouterGridActionsCellItem: LinkComponent<typeof Component$4>;
69
-
70
- declare const Component$3: react__default.ForwardRefExoticComponent<Omit<IconButtonProps<"a">, "ref"> & react__default.RefAttributes<HTMLAnchorElement>>;
71
- declare const RouterIconButton: LinkComponent<typeof Component$3>;
72
-
73
- declare const Component$2: react__default.ForwardRefExoticComponent<Omit<LinkProps, "ref"> & react__default.RefAttributes<HTMLAnchorElement>>;
74
- declare const RouterLink: LinkComponent<typeof Component$2>;
75
-
76
- declare const Component$1: react__default.ForwardRefExoticComponent<Omit<TabProps<"a">, "ref"> & react__default.RefAttributes<HTMLAnchorElement>>;
77
- declare const RouterTab: LinkComponent<typeof Component$1>;
78
-
79
- declare const Component: react__default.ForwardRefExoticComponent<Omit<ListItemButtonProps<"a">, "ref"> & react__default.RefAttributes<HTMLAnchorElement>>;
80
- declare const RouterListItemButton: LinkComponent<typeof Component>;
81
-
82
- declare function RouterNotFound(): react_jsx_runtime.JSX.Element;
83
-
84
- interface RouterErrorProps {
85
- error: ErrorComponentProps["error"];
86
- }
87
- declare const RouterError: FC<RouterErrorProps>;
88
-
89
- export { ChipInputCell, Dropzone, EditableColumnHeader, FileViewer, Fullscreen, RouterButton, RouterError, RouterGridActionsCellItem, RouterIconButton, RouterLink, RouterListItemButton, RouterNotFound, RouterTab, TypographyWithIcon };