wcz-layout
Version:
1 lines • 48.8 kB
Source Map (JSON)
{"version":3,"file":"components.mjs","names":["reference","children","progress","sx","handleOnDownload","isDownloading","handleOnDelete","isDeleting","handleMenuClose","fileMeta","size","itemBar","sx","fileMeta","m","images","index","reference","reference","reference","reference","reference"],"sources":["../src/components/core/TypographyWithIcon.tsx","../src/components/core/Fullscreen.tsx","../src/components/file/Dropzone.tsx","../src/contexts/FileContext.ts","../src/components/file/fileViewer/common/ActionsMenu.tsx","../src/components/file/fileViewer/FileViewerGrid.tsx","../src/components/file/fileViewer/FileViewerList.tsx","../src/components/file/fileViewer/ImageViewer.tsx","../src/components/file/FileViewer.tsx","../src/components/data-grid/EditableColumnHeader.tsx","../src/components/router/RouterButton.tsx","../src/components/router/RouterFab.tsx","../src/components/router/RouterGridActionsCellItem.tsx","../src/components/router/RouterLink.tsx","../src/components/router/RouterTab.tsx","../src/components/router/RouterNotFound.tsx","../src/components/router/RouterError.tsx"],"sourcesContent":["import { Typography } from \"@mui/material\";\nimport type { TypographyProps } from \"@mui/material\";\n\ninterface TypographyWithIconProps extends TypographyProps {\n startIcon?: React.ReactNode;\n endIcon?: React.ReactNode;\n gap?: number | string;\n}\n\nexport const TypographyWithIcon: React.FC<TypographyWithIconProps> = ({\n startIcon,\n endIcon,\n children,\n gap = 1,\n sx,\n ...props\n}) => (\n <Typography\n component=\"span\"\n sx={[\n {\n display: \"inline-flex\",\n alignItems: \"center\",\n verticalAlign: \"middle\",\n gap,\n \"& > svg\": { display: \"block\", flexShrink: 0 },\n },\n ...(Array.isArray(sx) ? sx : [sx]),\n ]}\n {...props}\n >\n {startIcon}\n {children}\n {endIcon}\n </Typography>\n);\n","import { Box } from \"@mui/material\";\nimport { useEffectEvent, useLayoutEffect, useRef, useState } from \"react\";\nimport type { BoxProps } from \"@mui/material\";\nimport type { FC } from \"react\";\n\nexport const Fullscreen: FC<BoxProps> = ({ children, sx, ...props }) => {\n const reference = useRef<HTMLDivElement | null>(null);\n const [height, setHeight] = useState<number>();\n\n const recompute = useEffectEvent(() => {\n if (!reference.current) return;\n const top = reference.current.getBoundingClientRect().top;\n const viewportHeight = window.visualViewport?.height ?? window.innerHeight;\n const avail = Math.max(0, Math.floor(viewportHeight - top));\n setHeight(avail);\n });\n\n useLayoutEffect(() => {\n const element = reference.current;\n if (!element) return;\n\n recompute();\n\n window.addEventListener(\"resize\", recompute);\n\n const ro = new ResizeObserver(recompute);\n ro.observe(document.documentElement);\n ro.observe(document.body);\n ro.observe(element);\n\n return () => {\n window.removeEventListener(\"resize\", recompute);\n ro.disconnect();\n };\n }, []);\n\n return (\n <Box\n ref={reference}\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n boxSizing: \"border-box\",\n minHeight: 0,\n width: \"100%\",\n overflow: \"auto\",\n height,\n ...sx,\n }}\n {...props}\n >\n {children}\n </Box>\n );\n};\n","import CloudUpload from \"@mui/icons-material/CloudUpload\";\nimport type { SxProps, Theme } from \"@mui/material\";\nimport { Box, CircularProgress, Typography, useTheme } from \"@mui/material\";\nimport type { CSSProperties, FC } from \"react\";\nimport type { DropzoneOptions } from \"react-dropzone\";\nimport { useDropzone } from \"react-dropzone\";\nimport { useTranslation } from \"react-i18next\";\n\nconst baseStyle: CSSProperties = {\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n padding: \"20px\",\n borderWidth: 2,\n borderRadius: 2,\n borderStyle: \"dashed\",\n outline: \"none\",\n transition: \"border .24s ease-in-out\",\n cursor: \"pointer\",\n};\n\ninterface DropzoneProps extends DropzoneOptions {\n sx?: SxProps<Theme>;\n progress?: number;\n}\n\nexport const Dropzone: FC<DropzoneProps> = ({ sx, progress, ...props }) => {\n const { getRootProps, getInputProps, isFocused, isDragAccept, isDragReject } = useDropzone(props);\n const { t } = useTranslation();\n const theme = useTheme();\n\n const style = {\n ...baseStyle,\n cursor: progress ? \"progress\" : props.disabled ? \"not-allowed\" : \"pointer\",\n borderColor: (theme.vars || theme).palette.text.disabled,\n ...(isFocused ? { borderColor: (theme.vars || theme).palette.primary.main } : {}),\n ...(isDragAccept ? { borderColor: (theme.vars || theme).palette.success.main } : {}),\n ...(isDragReject ? { borderColor: (theme.vars || theme).palette.error.main } : {}),\n };\n\n return (\n <Box {...getRootProps({ style })} sx={sx}>\n <input {...getInputProps()} style={{ display: \"none\" }} />\n {progress ? (\n <CircularProgress size={24} variant=\"determinate\" value={progress} />\n ) : (\n <CloudUpload />\n )}\n <Typography>{t(\"Layout.File.DragSomeFilesHereOrClickToSelectThem\")}</Typography>\n </Box>\n );\n};\n","import { createContext, useContext } from \"react\";\nimport type { FileMeta } from \"../models/file/FileMeta\";\nimport type { FileActions } from \"~/models/file/FileActions\";\n\nexport interface FileContextValue {\n appName: string;\n fileMetas: Array<FileMeta>;\n onDelete?: (params: { remainingFileMetas: Array<FileMeta>; deletedFileMeta: FileMeta }) => void;\n actions?: FileActions;\n setImageId: (imageId: string) => void;\n}\n\nexport const FileContext = createContext<FileContextValue | null>(null);\n\nexport const useFile = () => {\n const context = useContext(FileContext);\n if (!context) {\n throw new Error(\"FileViewer components must be used within FileViewer\");\n }\n return context;\n};\n","import Delete from \"@mui/icons-material/Delete\";\nimport FileDownload from \"@mui/icons-material/FileDownload\";\nimport { List, ListItemButton, ListItemIcon, ListItemText, Menu } from \"@mui/material\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { useTranslation } from \"react-i18next\";\nimport type { FC } from \"react\";\nimport type { FileMeta } from \"~/models/file/FileMeta\";\nimport { useFile } from \"~/contexts/FileContext\";\nimport { useDialogs } from \"~/hooks/useDialogs\";\nimport { deleteFileMutationOptions, downloadFileMutationOptions } from \"~/data/client/file\";\nimport { rootRouteId, useMatch } from \"@tanstack/react-router\";\n\ninterface ActionsMenuProps {\n meta: FileMeta;\n menu: { mouseX: number; mouseY: number } | null;\n setMenu: (menu: { mouseX: number; mouseY: number } | null) => void;\n}\n\nexport const ActionsMenu: FC<ActionsMenuProps> = ({ meta, menu, setMenu }) => {\n const { t } = useTranslation();\n const { fileMetas, onDelete, actions, appName } = useFile();\n const { confirm } = useDialogs();\n\n const handleMenuClose = () => {\n setMenu(null);\n };\n\n const rootMatch = useMatch({ from: rootRouteId });\n const queryClient = rootMatch.context.queryClient;\n\n const { mutate: download, isPending: isDownloading } = useMutation(downloadFileMutationOptions());\n const { mutate: deleteFile, isPending: isDeleting } = useMutation(\n deleteFileMutationOptions({ queryClient }),\n );\n\n const handleOnDownload = () => {\n handleMenuClose();\n download({ id: meta.id, appName, fileName: meta.fileName, fileExtension: meta.fileExtension });\n };\n\n const handleOnDelete = async () => {\n if (!(await confirm(t(\"Layout.File.AreYouSureYouWantToDelete\", { name: meta.fileName }))))\n return;\n\n deleteFile({ id: meta.id, appName });\n handleMenuClose();\n\n if (onDelete) {\n const remainingFileMetas: Array<FileMeta> = fileMetas.filter((m) => m.id !== meta.id);\n onDelete({ remainingFileMetas, deletedFileMeta: meta });\n }\n };\n\n return (\n <Menu\n open={menu !== null}\n onClose={handleMenuClose}\n anchorReference=\"anchorPosition\"\n variant=\"menu\"\n anchorPosition={menu === null ? undefined : { top: menu.mouseY, left: menu.mouseX }}\n >\n <List disablePadding>\n {actions?.download !== false && (\n <ListItemButton onClick={handleOnDownload} disabled={isDownloading}>\n <ListItemIcon>\n <FileDownload />\n </ListItemIcon>\n <ListItemText>{t(\"Layout.File.Download\")}</ListItemText>\n </ListItemButton>\n )}\n {actions?.delete !== false && (\n <ListItemButton onClick={handleOnDelete} disabled={isDeleting}>\n <ListItemIcon>\n <Delete />\n </ListItemIcon>\n <ListItemText>{t(\"Layout.File.Delete\")}</ListItemText>\n </ListItemButton>\n )}\n </List>\n </Menu>\n );\n};\n","import MoreVert from \"@mui/icons-material/MoreVert\";\nimport {\n Box,\n IconButton,\n ImageListItem,\n ImageListItemBar,\n Skeleton,\n Stack,\n Tooltip,\n} from \"@mui/material\";\nimport { grey } from \"@mui/material/colors\";\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport React, { Fragment, useEffect, useRef, useState } from \"react\";\nimport { useInView } from \"react-intersection-observer\";\nimport { ActionsMenu } from \"./common/ActionsMenu\";\nimport type { FileMeta } from \"~/models/file/FileMeta\";\nimport type { SxProps, Theme } from \"@mui/material\";\nimport { useFile } from \"~/contexts/FileContext\";\nimport {\n downloadFileMutationOptions,\n fileQueryOptions,\n fileThumbnailQueryOptions,\n openFileMutationOptions,\n} from \"~/data/client/file\";\n\nconst IMAGE_SIZE = 150;\n\ntype FileViewerGridItemBar = \"hidden\" | \"always\" | \"onMouseEnter\";\n\nexport interface FileViewerGridProps {\n size?: number;\n itemBar?: FileViewerGridItemBar;\n sx?: SxProps<Theme>;\n}\n\nexport const FileViewerGrid: React.FC<FileViewerGridProps> = ({ sx, size, itemBar }) => {\n const { fileMetas } = useFile();\n\n return (\n <Stack direction=\"row\" spacing={1} sx={{ overflow: \"auto\", ...sx }}>\n {fileMetas.map((fileMeta) => (\n <GridFileViewerItem key={fileMeta.id} meta={fileMeta} size={size} itemBar={itemBar} />\n ))}\n </Stack>\n );\n};\n\ninterface GridFileViewerItemProps {\n meta: FileMeta;\n size?: number;\n itemBar?: FileViewerGridItemBar;\n}\n\nexport const GridFileViewerItem: React.FC<GridFileViewerItemProps> = ({ meta, size, itemBar }) => {\n const { setImageId, actions, appName } = useFile();\n const [showItemBar, setShowItemBar] = useState<boolean>(itemBar === \"always\");\n const [menu, setMenu] = useState<{ mouseX: number; mouseY: number } | null>(null);\n const { ref, inView } = useInView();\n const queryClient = useQueryClient();\n const target = useRef<Window | null>(null);\n\n useEffect(() => {\n setShowItemBar(itemBar === \"always\");\n }, [itemBar]);\n\n const { data: source, isPending } = useQuery({\n ...fileThumbnailQueryOptions({ id: meta.id, appName }),\n enabled: inView,\n });\n\n const handleOnMouseEnter = () => setShowItemBar(true);\n const handleOnMouseLeave = () => itemBar !== \"always\" && setShowItemBar(false);\n\n const openMenu = (event: React.MouseEvent) => {\n setMenu(menu === null ? { mouseX: event.clientX, mouseY: event.clientY } : null);\n setTimeout(() => setShowItemBar(true));\n };\n\n const { mutate: openFile } = useMutation(openFileMutationOptions({ target }));\n const { mutate: download } = useMutation(downloadFileMutationOptions());\n\n const onClick = () => {\n switch (meta.mediaType) {\n case \"image\": {\n return setImageId(meta.id);\n }\n case \"application\":\n case \"video\": {\n target.current = window.open(\"about:blank\", \"_blank\");\n return openFile({ id: meta.id, appName });\n }\n default: {\n return download({\n id: meta.id,\n appName,\n fileName: meta.fileName,\n fileExtension: meta.fileExtension,\n });\n }\n }\n };\n\n return (\n <Fragment>\n <ImageListItem\n sx={{ width: size ?? IMAGE_SIZE, height: size ?? IMAGE_SIZE }}\n onMouseEnter={handleOnMouseEnter}\n onMouseLeave={handleOnMouseLeave}\n ref={ref}\n >\n {isPending ? (\n <Skeleton variant=\"rectangular\" width={size ?? IMAGE_SIZE} height={size ?? IMAGE_SIZE} />\n ) : (\n <Box\n component=\"img\"\n src={source}\n loading=\"lazy\"\n alt={\"thumbnail-\" + meta.id}\n onClick={onClick}\n onMouseEnter={() =>\n queryClient.prefetchQuery(fileQueryOptions({ id: meta.id, appName }))\n }\n sx={{\n cursor: \"pointer\",\n objectFit: \"contain\",\n width: size ?? IMAGE_SIZE,\n height: size ?? IMAGE_SIZE,\n }}\n />\n )}\n {itemBar !== \"hidden\" && showItemBar && (\n <ImageListItemBar\n title={\n <Tooltip title={meta.fileName}>\n <Box>{meta.fileName}</Box>\n </Tooltip>\n }\n actionIcon={\n (actions?.download !== false || actions.delete !== false) && (\n <IconButton sx={{ color: grey[100] }} onClick={openMenu} aria-label=\"File actions\">\n <MoreVert />\n </IconButton>\n )\n }\n />\n )}\n </ImageListItem>\n\n {(actions?.download !== false || actions.delete !== false) && (\n <ActionsMenu meta={meta} menu={menu} setMenu={setMenu} />\n )}\n </Fragment>\n );\n};\n","import AttachFile from \"@mui/icons-material/AttachFile\";\nimport Image from \"@mui/icons-material/Image\";\nimport MoreVert from \"@mui/icons-material/MoreVert\";\nimport SmartDisplay from \"@mui/icons-material/SmartDisplay\";\nimport { IconButton, List, ListItemButton, ListItemIcon, ListItemText } from \"@mui/material\";\nimport { Fragment, useRef, useState } from \"react\";\nimport { useMutation, useQueryClient } from \"@tanstack/react-query\";\nimport { ActionsMenu } from \"./common/ActionsMenu\";\nimport type { FC } from \"react\";\nimport type { SxProps, Theme } from \"@mui/material\";\nimport type { FileMeta } from \"~/models/file/FileMeta\";\nimport { useFile } from \"~/contexts/FileContext\";\nimport {\n downloadFileMutationOptions,\n fileQueryOptions,\n openFileMutationOptions,\n} from \"~/data/client/file\";\n\nexport interface FileViewerListProps {\n sx?: SxProps<Theme>;\n}\n\nexport const FileViewerList: FC<FileViewerListProps> = ({ sx }) => {\n const { fileMetas } = useFile();\n\n return (\n <List dense sx={sx}>\n {fileMetas.map((fileMeta) => (\n <ListFileViewerItem key={fileMeta.id} meta={fileMeta} />\n ))}\n </List>\n );\n};\n\ninterface ListFileViewerItemProps {\n meta: FileMeta;\n}\n\nexport const ListFileViewerItem: React.FC<ListFileViewerItemProps> = ({ meta }) => {\n const { setImageId, actions, appName } = useFile();\n const [menu, setMenu] = useState<{ mouseX: number; mouseY: number } | null>(null);\n const queryClient = useQueryClient();\n const target = useRef<Window | null>(null);\n\n const openMenu = (event: React.MouseEvent) => {\n event.stopPropagation();\n setMenu(menu === null ? { mouseX: event.clientX, mouseY: event.clientY } : null);\n };\n\n const { mutate: openFile } = useMutation(openFileMutationOptions({ target }));\n const { mutate: download } = useMutation(downloadFileMutationOptions());\n\n const onClick = () => {\n switch (meta.mediaType) {\n case \"image\": {\n return setImageId(meta.id);\n }\n case \"application\":\n case \"video\": {\n target.current = window.open(\"about:blank\", \"_blank\");\n return openFile({ id: meta.id, appName });\n }\n default: {\n return download({\n id: meta.id,\n appName,\n fileName: meta.fileName,\n fileExtension: meta.fileExtension,\n });\n }\n }\n };\n\n const icon = () => {\n switch (meta.mediaType) {\n case \"image\": {\n return <Image />;\n }\n case \"video\": {\n return <SmartDisplay />;\n }\n default: {\n return <AttachFile />;\n }\n }\n };\n\n return (\n <Fragment>\n <ListItemButton\n key={meta.id}\n onClick={onClick}\n onMouseEnter={() => queryClient.prefetchQuery(fileQueryOptions({ id: meta.id, appName }))}\n >\n <ListItemIcon>{icon()}</ListItemIcon>\n <ListItemText primary={`${meta.fileName}.${meta.fileExtension}`} />\n {(actions?.download !== false || actions.delete !== false) && (\n <IconButton edge=\"end\" onClick={openMenu} aria-label=\"File actions\">\n <MoreVert />\n </IconButton>\n )}\n </ListItemButton>\n\n {(actions?.download !== false || actions.delete !== false) && (\n <ActionsMenu meta={meta} menu={menu} setMenu={setMenu} />\n )}\n </Fragment>\n );\n};\n","import Close from \"@mui/icons-material/Close\";\nimport { Box, Dialog, Fab, Skeleton } from \"@mui/material\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport React, { useEffect } from \"react\";\nimport type { FileMeta } from \"~/models/file/FileMeta\";\nimport { useFile } from \"~/contexts/FileContext\";\nimport { fileQueryOptions } from \"~/data/client/file\";\n\ninterface ImageViewerProps {\n metaId: string;\n}\n\nexport const ImageViewer: React.FC<ImageViewerProps> = ({ metaId }) => {\n const { fileMetas, setImageId, appName } = useFile();\n\n const meta = fileMetas.find((m) => m.id === metaId);\n\n const { data: source, isPending } = useQuery({\n ...fileQueryOptions({ id: meta?.id ?? \"\", appName }),\n enabled: !!meta,\n });\n\n useEffect(() => {\n if (metaId) globalThis.addEventListener(\"keydown\", handleOnKeydown);\n\n return () => {\n globalThis.removeEventListener(\"keydown\", handleOnKeydown);\n };\n }, [metaId]);\n\n const handleOnKeydown = (event: KeyboardEvent) => {\n const images: Array<FileMeta> = fileMetas.filter((m) => m.mediaType === \"image\");\n const imageIndex: number = images.findIndex((m) => m.id === metaId);\n\n switch (event.key) {\n case \"ArrowLeft\": {\n return handleOnArrowLeft(images, imageIndex);\n }\n case \"ArrowRight\": {\n return handleOnArrowRight(images, imageIndex);\n }\n case \"Backspace\":\n case \"Escape\": {\n event.preventDefault();\n return onClose();\n }\n }\n };\n\n const handleOnArrowLeft = (images: Array<FileMeta>, index: number) => {\n if (index > 0) {\n const previousFile: FileMeta = images[index - 1];\n setImageId(previousFile.id);\n }\n };\n\n const handleOnArrowRight = (images: Array<FileMeta>, index: number) => {\n if (index < images.length - 1) {\n const nextFile: FileMeta = images[index + 1];\n setImageId(nextFile.id);\n }\n };\n\n const onClose = () => setImageId(\"\");\n\n if (!meta) return null;\n\n return (\n <Dialog open onClose={onClose} maxWidth=\"xl\">\n {isPending ? (\n <Skeleton\n variant=\"rectangular\"\n sx={{\n width: { xs: \"100vw\", sm: 600 },\n height: { xs: \"calc(100vh - 56px)\", sm: \"calc(100vh - 64px)\" },\n }}\n />\n ) : (\n <Box\n component=\"img\"\n src={source}\n alt={meta.fileName}\n sx={{\n maxWidth: \"100vw\",\n maxHeight: { xs: \"calc(100vh - 56px)\", sm: \"calc(100vh - 64px)\" },\n }}\n />\n )}\n\n <Fab\n size=\"medium\"\n onClick={onClose}\n aria-label=\"Close\"\n sx={{ position: \"fixed\", top: 8, right: 8 }}\n >\n <Close />\n </Fab>\n </Dialog>\n );\n};\n","import { useQuery } from \"@tanstack/react-query\";\nimport type { ComponentType, FC, ReactNode } from \"react\";\nimport { useState } from \"react\";\nimport { FileContext } from \"~/contexts/FileContext\";\nimport type { FileActions } from \"~/models/file/FileActions\";\nimport type { FileMeta } from \"~/models/file/FileMeta\";\nimport { fileMetasQueryOptions } from \"~/data/client/file\";\nimport type { FileViewerGridProps } from \"./fileViewer/FileViewerGrid\";\nimport { FileViewerGrid } from \"./fileViewer/FileViewerGrid\";\nimport type { FileViewerListProps } from \"./fileViewer/FileViewerList\";\nimport { FileViewerList } from \"./fileViewer/FileViewerList\";\nimport { ImageViewer } from \"./fileViewer/ImageViewer\";\n\ninterface FileViewerComponent {\n Grid: ComponentType<FileViewerGridProps>;\n List: ComponentType<FileViewerListProps>;\n}\n\ninterface FileViewerProps {\n appName: string;\n subId: string;\n onDelete?: (params: { remainingFileMetas: Array<FileMeta>; deletedFileMeta: FileMeta }) => void;\n actions?: FileActions;\n children: (component: FileViewerComponent) => ReactNode;\n}\n\nexport const FileViewer: FC<FileViewerProps> = ({\n appName,\n subId,\n onDelete,\n actions,\n children,\n}) => {\n const { data: fileMetas = [] } = useQuery({\n ...fileMetasQueryOptions({ appName, subId }),\n enabled: !!subId,\n });\n const [imageId, setImageId] = useState<string>(\"\");\n\n if (fileMetas.length === 0) return null;\n\n return (\n <FileContext.Provider value={{ appName, fileMetas, onDelete, actions, setImageId }}>\n {children({ Grid: FileViewerGrid, List: FileViewerList })}\n <ImageViewer metaId={imageId} />\n </FileContext.Provider>\n );\n};\n","import Edit from \"@mui/icons-material/Edit\";\nimport { TypographyWithIcon } from \"../core/TypographyWithIcon\";\nimport type { GridColumnHeaderParams, GridValidRowModel } from \"@mui/x-data-grid-premium\";\n\nexport const EditableColumnHeader = <T extends GridValidRowModel>({\n colDef,\n}: GridColumnHeaderParams<T>) => {\n return (\n <TypographyWithIcon\n endIcon={<Edit color=\"disabled\" fontSize=\"small\" />}\n variant=\"body2\"\n className=\"MuiDataGrid-columnHeaderTitle\"\n >\n {colDef.headerName}\n </TypographyWithIcon>\n );\n};\n","import { Button } from \"@mui/material\";\nimport { createLink } from \"@tanstack/react-router\";\nimport React from \"react\";\nimport type { ButtonProps } from \"@mui/material\";\nimport type { LinkComponent } from \"@tanstack/react-router\";\n\nconst Component = React.forwardRef<HTMLAnchorElement, ButtonProps<\"a\">>(\n function ButtonComponent(props, reference) {\n return <Button ref={reference} component=\"a\" {...props} />;\n },\n);\n\nconst CreatedComponent = createLink(Component);\n\nexport const RouterButton: LinkComponent<typeof Component> = (props) => {\n return <CreatedComponent {...props} />;\n};\n","import { Fab } from \"@mui/material\";\nimport { createLink } from \"@tanstack/react-router\";\nimport React from \"react\";\nimport type { FabProps } from \"@mui/material\";\nimport type { LinkComponent } from \"@tanstack/react-router\";\n\nconst Component = React.forwardRef<HTMLAnchorElement, FabProps<\"a\">>(\n function FabComponent(props, reference) {\n return <Fab ref={reference} component=\"a\" {...props} />;\n },\n);\n\nconst CreatedComponent = createLink(Component);\n\nexport const RouterFab: LinkComponent<typeof Component> = (props) => {\n return <CreatedComponent {...props} />;\n};\n","import { GridActionsCellItem } from \"@mui/x-data-grid-premium\";\nimport { createLink } from \"@tanstack/react-router\";\nimport React from \"react\";\nimport type { GridActionsCellItemProps } from \"@mui/x-data-grid-premium\";\nimport type { LinkComponent } from \"@tanstack/react-router\";\n\nconst Component = React.forwardRef<HTMLButtonElement, GridActionsCellItemProps>(\n function GridActionsCellItemComponent(props, reference) {\n return <GridActionsCellItem ref={reference} component=\"a\" {...props} />;\n },\n) as React.ForwardRefExoticComponent<\n GridActionsCellItemProps & React.RefAttributes<HTMLButtonElement>\n>;\n\nconst CreatedComponent = createLink(Component);\n\nexport const RouterGridActionsCellItem: LinkComponent<typeof Component> = (props) => {\n return <CreatedComponent {...props} />;\n};\n","import { Link } from \"@mui/material\";\nimport { createLink } from \"@tanstack/react-router\";\nimport React from \"react\";\nimport type { LinkProps } from \"@mui/material\";\nimport type { LinkComponent } from \"@tanstack/react-router\";\n\nconst Component = React.forwardRef<HTMLAnchorElement, LinkProps>(\n function LinkComponent(props, reference) {\n return <Link ref={reference} {...props} />;\n },\n);\n\nconst CreatedComponent = createLink(Component);\n\nexport const RouterLink: LinkComponent<typeof Component> = (props) => {\n return <CreatedComponent {...props} />;\n};\n","import { Tab } from \"@mui/material\";\nimport { createLink } from \"@tanstack/react-router\";\nimport React from \"react\";\nimport type { TabProps } from \"@mui/material\";\nimport type { LinkComponent } from \"@tanstack/react-router\";\n\nconst Component = React.forwardRef<HTMLAnchorElement, TabProps<\"a\">>(\n function TabComponent(props, reference) {\n return <Tab ref={reference} component=\"a\" {...props} />;\n },\n);\n\nconst CreatedComponent = createLink(Component);\n\nexport const RouterTab: LinkComponent<typeof Component> = (props) => {\n return <CreatedComponent {...props} />;\n};\n","import { Box, Divider, Typography } from \"@mui/material\";\nimport { useTranslation } from \"react-i18next\";\n\nexport function RouterNotFound() {\n const { t } = useTranslation();\n\n return (\n <Box\n sx={{\n height: \"100vh\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"center\",\n px: 2,\n }}\n >\n <Box sx={{ display: \"flex\", alignItems: \"center\", mb: 4 }}>\n <Typography variant=\"h3\" component=\"span\" sx={{ fontWeight: 500, lineHeight: 1 }}>\n 404\n </Typography>\n <Divider orientation=\"vertical\" flexItem sx={{ mx: 3 }} />\n <Typography variant=\"h5\" component=\"span\">\n {t(\"Layout.ThisPageCouldNotBeFound\")}\n </Typography>\n </Box>\n </Box>\n );\n}\n","import { Box, Divider, Typography } from \"@mui/material\";\nimport type { FC } from \"react\";\nimport type { ErrorComponentProps } from \"@tanstack/react-router\";\n\ninterface RouterErrorProps {\n error: ErrorComponentProps[\"error\"];\n}\n\nexport const RouterError: FC<RouterErrorProps> = ({ error }) => {\n return (\n <Box\n sx={{\n height: \"100vh\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"center\",\n px: 2,\n }}\n >\n <Box sx={{ display: \"flex\", alignItems: \"center\", mb: 4 }}>\n <Typography variant=\"h3\" component=\"span\" sx={{ fontWeight: 500, lineHeight: 1 }}>\n {error.name || \"500\"}\n </Typography>\n <Divider orientation=\"vertical\" flexItem sx={{ mx: 3 }} />\n <Typography variant=\"h5\" component=\"span\">\n {error.message}\n </Typography>\n </Box>\n </Box>\n );\n};\n"],"mappings":"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"}