wcz-test 6.9.3 → 6.9.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DialogsHooks-Bi8dZoyu.js +338 -0
- package/dist/DialogsHooks-Bi8dZoyu.js.map +1 -0
- package/dist/{RouterListItemButton-Cx7rXEfm.js → RouterListItemButton-CHS7rofI.js} +4 -4
- package/dist/{RouterListItemButton-Cx7rXEfm.js.map → RouterListItemButton-CHS7rofI.js.map} +1 -1
- package/dist/auth-client-B6cIXYDV.js +1417 -0
- package/dist/auth-client-B6cIXYDV.js.map +1 -0
- package/dist/client.js +1 -1
- package/dist/components.js +65 -66
- package/dist/components.js.map +1 -1
- package/dist/error-BhAKg8LX-X0sdNXNa.js +195 -0
- package/dist/error-BhAKg8LX-X0sdNXNa.js.map +1 -0
- package/dist/hooks.js +31 -31
- package/dist/hooks.js.map +1 -1
- package/dist/index.js +83 -84
- package/dist/index.js.map +1 -1
- package/dist/server-mxQ3s5dx-CC81W42s.js +644 -0
- package/dist/server-mxQ3s5dx-CC81W42s.js.map +1 -0
- package/dist/server.js +8659 -7
- package/dist/server.js.map +1 -1
- package/dist/vite.js +0 -3
- package/dist/vite.js.map +1 -1
- package/package.json +29 -29
- package/dist/DialogsHooks-BlUsVlfv.js +0 -39
- package/dist/DialogsHooks-BlUsVlfv.js.map +0 -1
- package/dist/auth-client-o9U0_qmf.js +0 -79
- package/dist/auth-client-o9U0_qmf.js.map +0 -1
package/dist/components.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.js","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/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/RouterNotFound.tsx","../src/components/router/RouterError.tsx"],"sourcesContent":["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 { 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 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 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 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 { 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 { 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 { 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"],"names":["Component","CreatedComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components.js","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/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/RouterNotFound.tsx","../src/components/router/RouterError.tsx"],"sourcesContent":["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 { 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 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 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 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 { 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 { 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 { 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"],"names":["jsxs","jsx","Component","CreatedComponent"],"mappings":"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"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
const _envShim = /* @__PURE__ */ Object.create(null);
|
|
2
|
+
const _getEnv = (useShim) => globalThis.process?.env || globalThis.Deno?.env.toObject() || globalThis.__env__ || (useShim ? _envShim : globalThis);
|
|
3
|
+
const env = new Proxy(_envShim, {
|
|
4
|
+
get(_, prop) {
|
|
5
|
+
return _getEnv()[prop] ?? _envShim[prop];
|
|
6
|
+
},
|
|
7
|
+
has(_, prop) {
|
|
8
|
+
return prop in _getEnv() || prop in _envShim;
|
|
9
|
+
},
|
|
10
|
+
set(_, prop, value) {
|
|
11
|
+
const env$1 = _getEnv(true);
|
|
12
|
+
env$1[prop] = value;
|
|
13
|
+
return true;
|
|
14
|
+
},
|
|
15
|
+
deleteProperty(_, prop) {
|
|
16
|
+
if (!prop) return false;
|
|
17
|
+
const env$1 = _getEnv(true);
|
|
18
|
+
delete env$1[prop];
|
|
19
|
+
return true;
|
|
20
|
+
},
|
|
21
|
+
ownKeys() {
|
|
22
|
+
const env$1 = _getEnv(true);
|
|
23
|
+
return Object.keys(env$1);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
typeof process !== "undefined" && process.env && process.env.NODE_ENV || "";
|
|
27
|
+
function getEnvVar(key, fallback) {
|
|
28
|
+
if (typeof process !== "undefined" && process.env) return process.env[key] ?? fallback;
|
|
29
|
+
if (typeof Deno !== "undefined") return Deno.env.get(key) ?? fallback;
|
|
30
|
+
if (typeof Bun !== "undefined") return Bun.env[key] ?? fallback;
|
|
31
|
+
return fallback;
|
|
32
|
+
}
|
|
33
|
+
const COLORS_2 = 1;
|
|
34
|
+
const COLORS_16 = 4;
|
|
35
|
+
const COLORS_256 = 8;
|
|
36
|
+
const COLORS_16m = 24;
|
|
37
|
+
const TERM_ENVS = {
|
|
38
|
+
eterm: COLORS_16,
|
|
39
|
+
cons25: COLORS_16,
|
|
40
|
+
console: COLORS_16,
|
|
41
|
+
cygwin: COLORS_16,
|
|
42
|
+
dtterm: COLORS_16,
|
|
43
|
+
gnome: COLORS_16,
|
|
44
|
+
hurd: COLORS_16,
|
|
45
|
+
jfbterm: COLORS_16,
|
|
46
|
+
konsole: COLORS_16,
|
|
47
|
+
kterm: COLORS_16,
|
|
48
|
+
mlterm: COLORS_16,
|
|
49
|
+
mosh: COLORS_16m,
|
|
50
|
+
putty: COLORS_16,
|
|
51
|
+
st: COLORS_16,
|
|
52
|
+
"rxvt-unicode-24bit": COLORS_16m,
|
|
53
|
+
terminator: COLORS_16m,
|
|
54
|
+
"xterm-kitty": COLORS_16m
|
|
55
|
+
};
|
|
56
|
+
const CI_ENVS_MAP = new Map(Object.entries({
|
|
57
|
+
APPVEYOR: COLORS_256,
|
|
58
|
+
BUILDKITE: COLORS_256,
|
|
59
|
+
CIRCLECI: COLORS_16m,
|
|
60
|
+
DRONE: COLORS_256,
|
|
61
|
+
GITEA_ACTIONS: COLORS_16m,
|
|
62
|
+
GITHUB_ACTIONS: COLORS_16m,
|
|
63
|
+
GITLAB_CI: COLORS_256,
|
|
64
|
+
TRAVIS: COLORS_256
|
|
65
|
+
}));
|
|
66
|
+
const TERM_ENVS_REG_EXP = [
|
|
67
|
+
/ansi/,
|
|
68
|
+
/color/,
|
|
69
|
+
/linux/,
|
|
70
|
+
/direct/,
|
|
71
|
+
/^con[0-9]*x[0-9]/,
|
|
72
|
+
/^rxvt/,
|
|
73
|
+
/^screen/,
|
|
74
|
+
/^xterm/,
|
|
75
|
+
/^vt100/,
|
|
76
|
+
/^vt220/
|
|
77
|
+
];
|
|
78
|
+
function getColorDepth() {
|
|
79
|
+
if (getEnvVar("FORCE_COLOR") !== void 0) switch (getEnvVar("FORCE_COLOR")) {
|
|
80
|
+
case "":
|
|
81
|
+
case "1":
|
|
82
|
+
case "true":
|
|
83
|
+
return COLORS_16;
|
|
84
|
+
case "2":
|
|
85
|
+
return COLORS_256;
|
|
86
|
+
case "3":
|
|
87
|
+
return COLORS_16m;
|
|
88
|
+
default:
|
|
89
|
+
return COLORS_2;
|
|
90
|
+
}
|
|
91
|
+
if (getEnvVar("NODE_DISABLE_COLORS") !== void 0 && getEnvVar("NODE_DISABLE_COLORS") !== "" || getEnvVar("NO_COLOR") !== void 0 && getEnvVar("NO_COLOR") !== "" || getEnvVar("TERM") === "dumb") return COLORS_2;
|
|
92
|
+
if (getEnvVar("TMUX")) return COLORS_16m;
|
|
93
|
+
if ("TF_BUILD" in env && "AGENT_NAME" in env) return COLORS_16;
|
|
94
|
+
if ("CI" in env) {
|
|
95
|
+
for (const { 0: envName, 1: colors } of CI_ENVS_MAP) if (envName in env) return colors;
|
|
96
|
+
if (getEnvVar("CI_NAME") === "codeship") return COLORS_256;
|
|
97
|
+
return COLORS_2;
|
|
98
|
+
}
|
|
99
|
+
if ("TEAMCITY_VERSION" in env) return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.exec(getEnvVar("TEAMCITY_VERSION")) !== null ? COLORS_16 : COLORS_2;
|
|
100
|
+
switch (getEnvVar("TERM_PROGRAM")) {
|
|
101
|
+
case "iTerm.app":
|
|
102
|
+
if (!getEnvVar("TERM_PROGRAM_VERSION") || /^[0-2]\./.exec(getEnvVar("TERM_PROGRAM_VERSION")) !== null) return COLORS_256;
|
|
103
|
+
return COLORS_16m;
|
|
104
|
+
case "HyperTerm":
|
|
105
|
+
case "MacTerm":
|
|
106
|
+
return COLORS_16m;
|
|
107
|
+
case "Apple_Terminal":
|
|
108
|
+
return COLORS_256;
|
|
109
|
+
}
|
|
110
|
+
if (getEnvVar("COLORTERM") === "truecolor" || getEnvVar("COLORTERM") === "24bit") return COLORS_16m;
|
|
111
|
+
if (getEnvVar("TERM")) {
|
|
112
|
+
if (/truecolor/.exec(getEnvVar("TERM")) !== null) return COLORS_16m;
|
|
113
|
+
if (/^xterm-256/.exec(getEnvVar("TERM")) !== null) return COLORS_256;
|
|
114
|
+
const termEnv = getEnvVar("TERM").toLowerCase();
|
|
115
|
+
if (TERM_ENVS[termEnv]) return TERM_ENVS[termEnv];
|
|
116
|
+
if (TERM_ENVS_REG_EXP.some((term) => term.exec(termEnv) !== null)) return COLORS_16;
|
|
117
|
+
}
|
|
118
|
+
if (getEnvVar("COLORTERM")) return COLORS_16;
|
|
119
|
+
return COLORS_2;
|
|
120
|
+
}
|
|
121
|
+
const TTY_COLORS = {
|
|
122
|
+
reset: "\x1B[0m",
|
|
123
|
+
bright: "\x1B[1m",
|
|
124
|
+
dim: "\x1B[2m",
|
|
125
|
+
fg: {
|
|
126
|
+
red: "\x1B[31m",
|
|
127
|
+
green: "\x1B[32m",
|
|
128
|
+
yellow: "\x1B[33m",
|
|
129
|
+
blue: "\x1B[34m",
|
|
130
|
+
magenta: "\x1B[35m"
|
|
131
|
+
},
|
|
132
|
+
bg: {
|
|
133
|
+
black: "\x1B[40m"
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
const levels = [
|
|
137
|
+
"info",
|
|
138
|
+
"success",
|
|
139
|
+
"warn",
|
|
140
|
+
"error",
|
|
141
|
+
"debug"
|
|
142
|
+
];
|
|
143
|
+
function shouldPublishLog(currentLogLevel, logLevel) {
|
|
144
|
+
return levels.indexOf(logLevel) <= levels.indexOf(currentLogLevel);
|
|
145
|
+
}
|
|
146
|
+
const levelColors = {
|
|
147
|
+
info: TTY_COLORS.fg.blue,
|
|
148
|
+
success: TTY_COLORS.fg.green,
|
|
149
|
+
warn: TTY_COLORS.fg.yellow,
|
|
150
|
+
error: TTY_COLORS.fg.red,
|
|
151
|
+
debug: TTY_COLORS.fg.magenta
|
|
152
|
+
};
|
|
153
|
+
const formatMessage = (level, message, colorsEnabled) => {
|
|
154
|
+
const timestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
155
|
+
if (colorsEnabled) return `${TTY_COLORS.dim}${timestamp}${TTY_COLORS.reset} ${levelColors[level]}${level.toUpperCase()}${TTY_COLORS.reset} ${TTY_COLORS.bright}[Better Auth]:${TTY_COLORS.reset} ${message}`;
|
|
156
|
+
return `${timestamp} ${level.toUpperCase()} [Better Auth]: ${message}`;
|
|
157
|
+
};
|
|
158
|
+
const createLogger = (options) => {
|
|
159
|
+
const logLevel = options?.level ?? "error";
|
|
160
|
+
const colorsEnabled = getColorDepth() !== 1;
|
|
161
|
+
const LogFunc = (level, message, args = []) => {
|
|
162
|
+
if (!shouldPublishLog(logLevel, level)) return;
|
|
163
|
+
const formattedMessage = formatMessage(level, message, colorsEnabled);
|
|
164
|
+
{
|
|
165
|
+
if (level === "error") console.error(formattedMessage, ...args);
|
|
166
|
+
else if (level === "warn") console.warn(formattedMessage, ...args);
|
|
167
|
+
else console.log(formattedMessage, ...args);
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
return {
|
|
172
|
+
...Object.fromEntries(levels.map((level) => [level, (...[message, ...args]) => LogFunc(level, message, args)])),
|
|
173
|
+
get level() {
|
|
174
|
+
return logLevel;
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
};
|
|
178
|
+
const logger = createLogger();
|
|
179
|
+
var BetterAuthError = class extends Error {
|
|
180
|
+
constructor(message, cause) {
|
|
181
|
+
super(message);
|
|
182
|
+
this.name = "BetterAuthError";
|
|
183
|
+
this.message = message;
|
|
184
|
+
this.cause = cause;
|
|
185
|
+
this.stack = "";
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
export {
|
|
189
|
+
BetterAuthError as B,
|
|
190
|
+
TTY_COLORS as T,
|
|
191
|
+
env as e,
|
|
192
|
+
getColorDepth as g,
|
|
193
|
+
logger as l
|
|
194
|
+
};
|
|
195
|
+
//# sourceMappingURL=error-BhAKg8LX-X0sdNXNa.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-BhAKg8LX-X0sdNXNa.js","sources":["../node_modules/@better-auth/core/dist/env-DwlNAN_D.mjs","../node_modules/@better-auth/core/dist/error-BhAKg8LX.mjs"],"sourcesContent":["//#region src/env/env-impl.ts\nconst _envShim = Object.create(null);\nconst _getEnv = (useShim) => globalThis.process?.env || globalThis.Deno?.env.toObject() || globalThis.__env__ || (useShim ? _envShim : globalThis);\nconst env = new Proxy(_envShim, {\n\tget(_, prop) {\n\t\treturn _getEnv()[prop] ?? _envShim[prop];\n\t},\n\thas(_, prop) {\n\t\treturn prop in _getEnv() || prop in _envShim;\n\t},\n\tset(_, prop, value) {\n\t\tconst env$1 = _getEnv(true);\n\t\tenv$1[prop] = value;\n\t\treturn true;\n\t},\n\tdeleteProperty(_, prop) {\n\t\tif (!prop) return false;\n\t\tconst env$1 = _getEnv(true);\n\t\tdelete env$1[prop];\n\t\treturn true;\n\t},\n\townKeys() {\n\t\tconst env$1 = _getEnv(true);\n\t\treturn Object.keys(env$1);\n\t}\n});\nfunction toBoolean(val) {\n\treturn val ? val !== \"false\" : false;\n}\nconst nodeENV = typeof process !== \"undefined\" && process.env && process.env.NODE_ENV || \"\";\n/** Detect if `NODE_ENV` environment variable is `production` */\nconst isProduction = nodeENV === \"production\";\n/** Detect if `NODE_ENV` environment variable is `dev` or `development` */\nconst isDevelopment = () => nodeENV === \"dev\" || nodeENV === \"development\";\n/** Detect if `NODE_ENV` environment variable is `test` */\nconst isTest = () => nodeENV === \"test\" || toBoolean(env.TEST);\n/**\n* Get environment variable with fallback\n*/\nfunction getEnvVar(key, fallback) {\n\tif (typeof process !== \"undefined\" && process.env) return process.env[key] ?? fallback;\n\tif (typeof Deno !== \"undefined\") return Deno.env.get(key) ?? fallback;\n\tif (typeof Bun !== \"undefined\") return Bun.env[key] ?? fallback;\n\treturn fallback;\n}\n/**\n* Get boolean environment variable\n*/\nfunction getBooleanEnvVar(key, fallback = true) {\n\tconst value = getEnvVar(key);\n\tif (!value) return fallback;\n\treturn value !== \"0\" && value.toLowerCase() !== \"false\" && value !== \"\";\n}\n/**\n* Common environment variables used in Better Auth\n*/\nconst ENV = Object.freeze({\n\tget BETTER_AUTH_SECRET() {\n\t\treturn getEnvVar(\"BETTER_AUTH_SECRET\");\n\t},\n\tget AUTH_SECRET() {\n\t\treturn getEnvVar(\"AUTH_SECRET\");\n\t},\n\tget BETTER_AUTH_TELEMETRY() {\n\t\treturn getEnvVar(\"BETTER_AUTH_TELEMETRY\");\n\t},\n\tget BETTER_AUTH_TELEMETRY_ID() {\n\t\treturn getEnvVar(\"BETTER_AUTH_TELEMETRY_ID\");\n\t},\n\tget NODE_ENV() {\n\t\treturn getEnvVar(\"NODE_ENV\", \"development\");\n\t},\n\tget PACKAGE_VERSION() {\n\t\treturn getEnvVar(\"PACKAGE_VERSION\", \"0.0.0\");\n\t},\n\tget BETTER_AUTH_TELEMETRY_ENDPOINT() {\n\t\treturn getEnvVar(\"BETTER_AUTH_TELEMETRY_ENDPOINT\", \"https://telemetry.better-auth.com/v1/track\");\n\t}\n});\n\n//#endregion\n//#region src/env/color-depth.ts\nconst COLORS_2 = 1;\nconst COLORS_16 = 4;\nconst COLORS_256 = 8;\nconst COLORS_16m = 24;\nconst TERM_ENVS = {\n\teterm: COLORS_16,\n\tcons25: COLORS_16,\n\tconsole: COLORS_16,\n\tcygwin: COLORS_16,\n\tdtterm: COLORS_16,\n\tgnome: COLORS_16,\n\thurd: COLORS_16,\n\tjfbterm: COLORS_16,\n\tkonsole: COLORS_16,\n\tkterm: COLORS_16,\n\tmlterm: COLORS_16,\n\tmosh: COLORS_16m,\n\tputty: COLORS_16,\n\tst: COLORS_16,\n\t\"rxvt-unicode-24bit\": COLORS_16m,\n\tterminator: COLORS_16m,\n\t\"xterm-kitty\": COLORS_16m\n};\nconst CI_ENVS_MAP = new Map(Object.entries({\n\tAPPVEYOR: COLORS_256,\n\tBUILDKITE: COLORS_256,\n\tCIRCLECI: COLORS_16m,\n\tDRONE: COLORS_256,\n\tGITEA_ACTIONS: COLORS_16m,\n\tGITHUB_ACTIONS: COLORS_16m,\n\tGITLAB_CI: COLORS_256,\n\tTRAVIS: COLORS_256\n}));\nconst TERM_ENVS_REG_EXP = [\n\t/ansi/,\n\t/color/,\n\t/linux/,\n\t/direct/,\n\t/^con[0-9]*x[0-9]/,\n\t/^rxvt/,\n\t/^screen/,\n\t/^xterm/,\n\t/^vt100/,\n\t/^vt220/\n];\nfunction getColorDepth() {\n\tif (getEnvVar(\"FORCE_COLOR\") !== void 0) switch (getEnvVar(\"FORCE_COLOR\")) {\n\t\tcase \"\":\n\t\tcase \"1\":\n\t\tcase \"true\": return COLORS_16;\n\t\tcase \"2\": return COLORS_256;\n\t\tcase \"3\": return COLORS_16m;\n\t\tdefault: return COLORS_2;\n\t}\n\tif (getEnvVar(\"NODE_DISABLE_COLORS\") !== void 0 && getEnvVar(\"NODE_DISABLE_COLORS\") !== \"\" || getEnvVar(\"NO_COLOR\") !== void 0 && getEnvVar(\"NO_COLOR\") !== \"\" || getEnvVar(\"TERM\") === \"dumb\") return COLORS_2;\n\tif (getEnvVar(\"TMUX\")) return COLORS_16m;\n\tif (\"TF_BUILD\" in env && \"AGENT_NAME\" in env) return COLORS_16;\n\tif (\"CI\" in env) {\n\t\tfor (const { 0: envName, 1: colors } of CI_ENVS_MAP) if (envName in env) return colors;\n\t\tif (getEnvVar(\"CI_NAME\") === \"codeship\") return COLORS_256;\n\t\treturn COLORS_2;\n\t}\n\tif (\"TEAMCITY_VERSION\" in env) return /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.exec(getEnvVar(\"TEAMCITY_VERSION\")) !== null ? COLORS_16 : COLORS_2;\n\tswitch (getEnvVar(\"TERM_PROGRAM\")) {\n\t\tcase \"iTerm.app\":\n\t\t\tif (!getEnvVar(\"TERM_PROGRAM_VERSION\") || /^[0-2]\\./.exec(getEnvVar(\"TERM_PROGRAM_VERSION\")) !== null) return COLORS_256;\n\t\t\treturn COLORS_16m;\n\t\tcase \"HyperTerm\":\n\t\tcase \"MacTerm\": return COLORS_16m;\n\t\tcase \"Apple_Terminal\": return COLORS_256;\n\t}\n\tif (getEnvVar(\"COLORTERM\") === \"truecolor\" || getEnvVar(\"COLORTERM\") === \"24bit\") return COLORS_16m;\n\tif (getEnvVar(\"TERM\")) {\n\t\tif (/truecolor/.exec(getEnvVar(\"TERM\")) !== null) return COLORS_16m;\n\t\tif (/^xterm-256/.exec(getEnvVar(\"TERM\")) !== null) return COLORS_256;\n\t\tconst termEnv = getEnvVar(\"TERM\").toLowerCase();\n\t\tif (TERM_ENVS[termEnv]) return TERM_ENVS[termEnv];\n\t\tif (TERM_ENVS_REG_EXP.some((term) => term.exec(termEnv) !== null)) return COLORS_16;\n\t}\n\tif (getEnvVar(\"COLORTERM\")) return COLORS_16;\n\treturn COLORS_2;\n}\n\n//#endregion\n//#region src/env/logger.ts\nconst TTY_COLORS = {\n\treset: \"\\x1B[0m\",\n\tbright: \"\\x1B[1m\",\n\tdim: \"\\x1B[2m\",\n\tundim: \"\\x1B[22m\",\n\tunderscore: \"\\x1B[4m\",\n\tblink: \"\\x1B[5m\",\n\treverse: \"\\x1B[7m\",\n\thidden: \"\\x1B[8m\",\n\tfg: {\n\t\tblack: \"\\x1B[30m\",\n\t\tred: \"\\x1B[31m\",\n\t\tgreen: \"\\x1B[32m\",\n\t\tyellow: \"\\x1B[33m\",\n\t\tblue: \"\\x1B[34m\",\n\t\tmagenta: \"\\x1B[35m\",\n\t\tcyan: \"\\x1B[36m\",\n\t\twhite: \"\\x1B[37m\"\n\t},\n\tbg: {\n\t\tblack: \"\\x1B[40m\",\n\t\tred: \"\\x1B[41m\",\n\t\tgreen: \"\\x1B[42m\",\n\t\tyellow: \"\\x1B[43m\",\n\t\tblue: \"\\x1B[44m\",\n\t\tmagenta: \"\\x1B[45m\",\n\t\tcyan: \"\\x1B[46m\",\n\t\twhite: \"\\x1B[47m\"\n\t}\n};\nconst levels = [\n\t\"info\",\n\t\"success\",\n\t\"warn\",\n\t\"error\",\n\t\"debug\"\n];\nfunction shouldPublishLog(currentLogLevel, logLevel) {\n\treturn levels.indexOf(logLevel) <= levels.indexOf(currentLogLevel);\n}\nconst levelColors = {\n\tinfo: TTY_COLORS.fg.blue,\n\tsuccess: TTY_COLORS.fg.green,\n\twarn: TTY_COLORS.fg.yellow,\n\terror: TTY_COLORS.fg.red,\n\tdebug: TTY_COLORS.fg.magenta\n};\nconst formatMessage = (level, message, colorsEnabled) => {\n\tconst timestamp = (/* @__PURE__ */ new Date()).toISOString();\n\tif (colorsEnabled) return `${TTY_COLORS.dim}${timestamp}${TTY_COLORS.reset} ${levelColors[level]}${level.toUpperCase()}${TTY_COLORS.reset} ${TTY_COLORS.bright}[Better Auth]:${TTY_COLORS.reset} ${message}`;\n\treturn `${timestamp} ${level.toUpperCase()} [Better Auth]: ${message}`;\n};\nconst createLogger = (options) => {\n\tconst enabled = options?.disabled !== true;\n\tconst logLevel = options?.level ?? \"error\";\n\tconst colorsEnabled = options?.disableColors !== void 0 ? !options.disableColors : getColorDepth() !== 1;\n\tconst LogFunc = (level, message, args = []) => {\n\t\tif (!enabled || !shouldPublishLog(logLevel, level)) return;\n\t\tconst formattedMessage = formatMessage(level, message, colorsEnabled);\n\t\tif (!options || typeof options.log !== \"function\") {\n\t\t\tif (level === \"error\") console.error(formattedMessage, ...args);\n\t\t\telse if (level === \"warn\") console.warn(formattedMessage, ...args);\n\t\t\telse console.log(formattedMessage, ...args);\n\t\t\treturn;\n\t\t}\n\t\toptions.log(level === \"success\" ? \"info\" : level, message, ...args);\n\t};\n\treturn {\n\t\t...Object.fromEntries(levels.map((level) => [level, (...[message, ...args]) => LogFunc(level, message, args)])),\n\t\tget level() {\n\t\t\treturn logLevel;\n\t\t}\n\t};\n};\nconst logger = createLogger();\n\n//#endregion\nexport { shouldPublishLog as a, env as c, isDevelopment as d, isProduction as f, logger as i, getBooleanEnvVar as l, nodeENV as m, createLogger as n, getColorDepth as o, isTest as p, levels as r, ENV as s, TTY_COLORS as t, getEnvVar as u };","import { t as defineErrorCodes } from \"./utils-C5EN75oV.mjs\";\n\n//#region src/error/codes.ts\nconst BASE_ERROR_CODES = defineErrorCodes({\n\tUSER_NOT_FOUND: \"User not found\",\n\tFAILED_TO_CREATE_USER: \"Failed to create user\",\n\tFAILED_TO_CREATE_SESSION: \"Failed to create session\",\n\tFAILED_TO_UPDATE_USER: \"Failed to update user\",\n\tFAILED_TO_GET_SESSION: \"Failed to get session\",\n\tINVALID_PASSWORD: \"Invalid password\",\n\tINVALID_EMAIL: \"Invalid email\",\n\tINVALID_EMAIL_OR_PASSWORD: \"Invalid email or password\",\n\tSOCIAL_ACCOUNT_ALREADY_LINKED: \"Social account already linked\",\n\tPROVIDER_NOT_FOUND: \"Provider not found\",\n\tINVALID_TOKEN: \"Invalid token\",\n\tID_TOKEN_NOT_SUPPORTED: \"id_token not supported\",\n\tFAILED_TO_GET_USER_INFO: \"Failed to get user info\",\n\tUSER_EMAIL_NOT_FOUND: \"User email not found\",\n\tEMAIL_NOT_VERIFIED: \"Email not verified\",\n\tPASSWORD_TOO_SHORT: \"Password too short\",\n\tPASSWORD_TOO_LONG: \"Password too long\",\n\tUSER_ALREADY_EXISTS: \"User already exists.\",\n\tUSER_ALREADY_EXISTS_USE_ANOTHER_EMAIL: \"User already exists. Use another email.\",\n\tEMAIL_CAN_NOT_BE_UPDATED: \"Email can not be updated\",\n\tCREDENTIAL_ACCOUNT_NOT_FOUND: \"Credential account not found\",\n\tSESSION_EXPIRED: \"Session expired. Re-authenticate to perform this action.\",\n\tFAILED_TO_UNLINK_LAST_ACCOUNT: \"You can't unlink your last account\",\n\tACCOUNT_NOT_FOUND: \"Account not found\",\n\tUSER_ALREADY_HAS_PASSWORD: \"User already has a password. Provide that to delete the account.\"\n});\n\n//#endregion\n//#region src/error/index.ts\nvar BetterAuthError = class extends Error {\n\tconstructor(message, cause) {\n\t\tsuper(message);\n\t\tthis.name = \"BetterAuthError\";\n\t\tthis.message = message;\n\t\tthis.cause = cause;\n\t\tthis.stack = \"\";\n\t}\n};\n\n//#endregion\nexport { BASE_ERROR_CODES as n, BetterAuthError as t };"],"names":[],"mappings":"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","x_google_ignoreList":[0,1]}
|
package/dist/hooks.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { createFormHookContexts, createFormHook } from "@tanstack/react-form";
|
|
2
|
-
import {
|
|
2
|
+
import { j as jsxRuntimeExports } from "./DialogsHooks-Bi8dZoyu.js";
|
|
3
|
+
import { u } from "./DialogsHooks-Bi8dZoyu.js";
|
|
3
4
|
import { Autocomplete, TextField, FormControl, FormControlLabel, Checkbox, FormHelperText, FormLabel, RadioGroup, Radio, Slider, Button, Switch } from "@mui/material";
|
|
4
5
|
import { g as getFieldStatus } from "./utils-DKyKGba7.js";
|
|
5
6
|
import { DatePicker, DateRangePicker, TimePicker, TimeRangePicker, DateTimePicker, DateTimeRangePicker } from "@mui/x-date-pickers-pro";
|
|
6
7
|
import { NumericFormat } from "react-number-format";
|
|
7
|
-
import { u } from "./DialogsHooks-BlUsVlfv.js";
|
|
8
8
|
import { useInView } from "react-intersection-observer";
|
|
9
9
|
const FormAutocomplete = ({ textFieldProps, ...autocompleteProps }) => {
|
|
10
10
|
const field = useFieldContext();
|
|
11
11
|
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
12
|
-
return /* @__PURE__ */ jsx(
|
|
12
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
13
13
|
Autocomplete,
|
|
14
14
|
{
|
|
15
15
|
value: field.state.value,
|
|
@@ -18,7 +18,7 @@ const FormAutocomplete = ({ textFieldProps, ...autocompleteProps }) => {
|
|
|
18
18
|
onBlur: field.handleBlur,
|
|
19
19
|
"aria-label": field.name,
|
|
20
20
|
...autocompleteProps,
|
|
21
|
-
renderInput: (parameters) => /* @__PURE__ */ jsx(
|
|
21
|
+
renderInput: (parameters) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
22
22
|
TextField,
|
|
23
23
|
{
|
|
24
24
|
...parameters,
|
|
@@ -34,11 +34,11 @@ const FormAutocomplete = ({ textFieldProps, ...autocompleteProps }) => {
|
|
|
34
34
|
const FormCheckbox = (props) => {
|
|
35
35
|
const field = useFieldContext();
|
|
36
36
|
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
37
|
-
return /* @__PURE__ */ jsxs(FormControl, { component: "fieldset", children: [
|
|
38
|
-
/* @__PURE__ */ jsx(
|
|
37
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs(FormControl, { component: "fieldset", children: [
|
|
38
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
39
39
|
FormControlLabel,
|
|
40
40
|
{
|
|
41
|
-
control: /* @__PURE__ */ jsx(
|
|
41
|
+
control: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
42
42
|
Checkbox,
|
|
43
43
|
{
|
|
44
44
|
name: field.name,
|
|
@@ -52,13 +52,13 @@ const FormCheckbox = (props) => {
|
|
|
52
52
|
label: props.label ?? ""
|
|
53
53
|
}
|
|
54
54
|
),
|
|
55
|
-
isTouched && hasError && /* @__PURE__ */ jsx(FormHelperText, { error: hasError, children: helperText })
|
|
55
|
+
isTouched && hasError && /* @__PURE__ */ jsxRuntimeExports.jsx(FormHelperText, { error: hasError, children: helperText })
|
|
56
56
|
] });
|
|
57
57
|
};
|
|
58
58
|
const FormDatePicker = (props) => {
|
|
59
59
|
const field = useFieldContext();
|
|
60
60
|
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
61
|
-
return /* @__PURE__ */ jsx(
|
|
61
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
62
62
|
DatePicker,
|
|
63
63
|
{
|
|
64
64
|
name: field.name,
|
|
@@ -81,7 +81,7 @@ const FormDatePicker = (props) => {
|
|
|
81
81
|
const FormDateRangePicker = (props) => {
|
|
82
82
|
const field = useFieldContext();
|
|
83
83
|
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
84
|
-
return /* @__PURE__ */ jsx(
|
|
84
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
85
85
|
DateRangePicker,
|
|
86
86
|
{
|
|
87
87
|
name: field.name,
|
|
@@ -104,7 +104,7 @@ const FormDateRangePicker = (props) => {
|
|
|
104
104
|
const FormTimePicker = (props) => {
|
|
105
105
|
const field = useFieldContext();
|
|
106
106
|
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
107
|
-
return /* @__PURE__ */ jsx(
|
|
107
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
108
108
|
TimePicker,
|
|
109
109
|
{
|
|
110
110
|
name: field.name,
|
|
@@ -127,7 +127,7 @@ const FormTimePicker = (props) => {
|
|
|
127
127
|
const FormTimeRangePicker = (props) => {
|
|
128
128
|
const field = useFieldContext();
|
|
129
129
|
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
130
|
-
return /* @__PURE__ */ jsx(
|
|
130
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
131
131
|
TimeRangePicker,
|
|
132
132
|
{
|
|
133
133
|
name: field.name,
|
|
@@ -150,7 +150,7 @@ const FormTimeRangePicker = (props) => {
|
|
|
150
150
|
const FormDateTimePicker = (props) => {
|
|
151
151
|
const field = useFieldContext();
|
|
152
152
|
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
153
|
-
return /* @__PURE__ */ jsx(
|
|
153
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
154
154
|
DateTimePicker,
|
|
155
155
|
{
|
|
156
156
|
name: field.name,
|
|
@@ -173,7 +173,7 @@ const FormDateTimePicker = (props) => {
|
|
|
173
173
|
const FormDateTimeRangePicker = (props) => {
|
|
174
174
|
const field = useFieldContext();
|
|
175
175
|
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
176
|
-
return /* @__PURE__ */ jsx(
|
|
176
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
177
177
|
DateTimeRangePicker,
|
|
178
178
|
{
|
|
179
179
|
name: field.name,
|
|
@@ -196,7 +196,7 @@ const FormDateTimeRangePicker = (props) => {
|
|
|
196
196
|
const FormNumberField = ({ options, ...props }) => {
|
|
197
197
|
const field = useFieldContext();
|
|
198
198
|
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
199
|
-
return /* @__PURE__ */ jsx(
|
|
199
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
200
200
|
NumericFormat,
|
|
201
201
|
{
|
|
202
202
|
customInput: TextField,
|
|
@@ -215,9 +215,9 @@ const FormNumberField = ({ options, ...props }) => {
|
|
|
215
215
|
const FormRadioGroup = ({ label, options, ...props }) => {
|
|
216
216
|
const field = useFieldContext();
|
|
217
217
|
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
218
|
-
return /* @__PURE__ */ jsxs(FormControl, { component: "fieldset", children: [
|
|
219
|
-
label && /* @__PURE__ */ jsx(FormLabel, { component: "legend", children: label }),
|
|
220
|
-
/* @__PURE__ */ jsx(
|
|
218
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs(FormControl, { component: "fieldset", children: [
|
|
219
|
+
label && /* @__PURE__ */ jsxRuntimeExports.jsx(FormLabel, { component: "legend", children: label }),
|
|
220
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
221
221
|
RadioGroup,
|
|
222
222
|
{
|
|
223
223
|
name: field.name,
|
|
@@ -226,26 +226,26 @@ const FormRadioGroup = ({ label, options, ...props }) => {
|
|
|
226
226
|
onBlur: field.handleBlur,
|
|
227
227
|
"aria-label": field.name,
|
|
228
228
|
...props,
|
|
229
|
-
children: options.map((option) => /* @__PURE__ */ jsx(
|
|
229
|
+
children: options.map((option) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
230
230
|
FormControlLabel,
|
|
231
231
|
{
|
|
232
232
|
value: option.value,
|
|
233
|
-
control: /* @__PURE__ */ jsx(Radio, {}),
|
|
233
|
+
control: /* @__PURE__ */ jsxRuntimeExports.jsx(Radio, {}),
|
|
234
234
|
label: option.label
|
|
235
235
|
},
|
|
236
236
|
option.value
|
|
237
237
|
))
|
|
238
238
|
}
|
|
239
239
|
),
|
|
240
|
-
isTouched && hasError && /* @__PURE__ */ jsx(FormHelperText, { error: hasError, children: helperText })
|
|
240
|
+
isTouched && hasError && /* @__PURE__ */ jsxRuntimeExports.jsx(FormHelperText, { error: hasError, children: helperText })
|
|
241
241
|
] });
|
|
242
242
|
};
|
|
243
243
|
const FormSlider = ({ label, ...props }) => {
|
|
244
244
|
const field = useFieldContext();
|
|
245
245
|
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
246
|
-
return /* @__PURE__ */ jsxs(FormControl, { component: "fieldset", children: [
|
|
247
|
-
label && /* @__PURE__ */ jsx(FormLabel, { children: label }),
|
|
248
|
-
/* @__PURE__ */ jsx(
|
|
246
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs(FormControl, { component: "fieldset", children: [
|
|
247
|
+
label && /* @__PURE__ */ jsxRuntimeExports.jsx(FormLabel, { children: label }),
|
|
248
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
249
249
|
Slider,
|
|
250
250
|
{
|
|
251
251
|
name: field.name,
|
|
@@ -256,7 +256,7 @@ const FormSlider = ({ label, ...props }) => {
|
|
|
256
256
|
...props
|
|
257
257
|
}
|
|
258
258
|
),
|
|
259
|
-
isTouched && hasError && /* @__PURE__ */ jsx(FormHelperText, { error: hasError, children: helperText })
|
|
259
|
+
isTouched && hasError && /* @__PURE__ */ jsxRuntimeExports.jsx(FormHelperText, { error: hasError, children: helperText })
|
|
260
260
|
] });
|
|
261
261
|
};
|
|
262
262
|
const FormSubmitButton = (props) => {
|
|
@@ -266,7 +266,7 @@ const FormSubmitButton = (props) => {
|
|
|
266
266
|
event.stopPropagation();
|
|
267
267
|
form.handleSubmit();
|
|
268
268
|
};
|
|
269
|
-
return /* @__PURE__ */ jsx(form.Subscribe, { selector: (state) => [state.canSubmit, state.isSubmitting], children: ([canSubmit, isSubmitting]) => /* @__PURE__ */ jsx(
|
|
269
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(form.Subscribe, { selector: (state) => [state.canSubmit, state.isSubmitting], children: ([canSubmit, isSubmitting]) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
270
270
|
Button,
|
|
271
271
|
{
|
|
272
272
|
loading: isSubmitting,
|
|
@@ -281,11 +281,11 @@ const FormSubmitButton = (props) => {
|
|
|
281
281
|
const FormSwitch = (props) => {
|
|
282
282
|
const field = useFieldContext();
|
|
283
283
|
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
284
|
-
return /* @__PURE__ */ jsxs(FormControl, { component: "fieldset", children: [
|
|
285
|
-
/* @__PURE__ */ jsx(
|
|
284
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs(FormControl, { component: "fieldset", children: [
|
|
285
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
286
286
|
FormControlLabel,
|
|
287
287
|
{
|
|
288
|
-
control: /* @__PURE__ */ jsx(
|
|
288
|
+
control: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
289
289
|
Switch,
|
|
290
290
|
{
|
|
291
291
|
name: field.name,
|
|
@@ -299,13 +299,13 @@ const FormSwitch = (props) => {
|
|
|
299
299
|
label: props.label ?? ""
|
|
300
300
|
}
|
|
301
301
|
),
|
|
302
|
-
isTouched && hasError && /* @__PURE__ */ jsx(FormHelperText, { error: hasError, children: helperText })
|
|
302
|
+
isTouched && hasError && /* @__PURE__ */ jsxRuntimeExports.jsx(FormHelperText, { error: hasError, children: helperText })
|
|
303
303
|
] });
|
|
304
304
|
};
|
|
305
305
|
const FormTextField = (props) => {
|
|
306
306
|
const field = useFieldContext();
|
|
307
307
|
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
308
|
-
return /* @__PURE__ */ jsx(
|
|
308
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
309
309
|
TextField,
|
|
310
310
|
{
|
|
311
311
|
name: field.name,
|