wcz-test 6.22.0 → 6.22.2
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/ApprovalStatus-BtAVFn5p.js +8 -0
- package/dist/{ApprovalStatus-C9HPyMiS.js.map → ApprovalStatus-BtAVFn5p.js.map} +1 -1
- package/dist/DialogsContext-DMZRefiY.js.map +1 -1
- package/dist/DialogsHooks-BEZgPVSk.js +277 -0
- package/dist/DialogsHooks-BEZgPVSk.js.map +1 -0
- package/dist/FileHooks-BJdvBvBr.js +465 -0
- package/dist/FileHooks-BJdvBvBr.js.map +1 -0
- package/dist/FileMeta-G1oT3mYK.js.map +1 -1
- package/dist/RouterListItemButton-CagMd8F_.js +35 -0
- package/dist/RouterListItemButton-CagMd8F_.js.map +1 -0
- package/dist/{UseHook-DB7btKDE.js → UseHook-CGSDGsbk.js} +4 -2
- package/dist/{UseHook-DB7btKDE.js.map → UseHook-CGSDGsbk.js.map} +1 -1
- package/dist/client.js +1 -1
- package/dist/compiler-runtime-BGHur82y.js +46 -0
- package/dist/compiler-runtime-BGHur82y.js.map +1 -0
- package/dist/components.js +1362 -305
- package/dist/components.js.map +1 -1
- package/dist/hooks.js +937 -281
- package/dist/hooks.js.map +1 -1
- package/dist/index.js +1717 -505
- package/dist/index.js.map +1 -1
- package/dist/models.js +27 -50
- package/dist/models.js.map +1 -1
- package/dist/queries.js +755 -206
- package/dist/queries.js.map +1 -1
- package/dist/{utils-CKW5pi6k.js → utils-CCjnelFb.js} +47 -18
- package/dist/{utils-CKW5pi6k.js.map → utils-CCjnelFb.js.map} +1 -1
- package/dist/utils.js +1 -1
- package/dist/vite.js +9 -3
- package/dist/vite.js.map +1 -1
- package/package.json +1 -1
- package/dist/ApprovalStatus-C9HPyMiS.js +0 -24
- package/dist/DialogsHooks-DBK6rBoU.js +0 -37
- package/dist/DialogsHooks-DBK6rBoU.js.map +0 -1
- package/dist/FileHooks-BM2Oyvh6.js +0 -194
- package/dist/FileHooks-BM2Oyvh6.js.map +0 -1
- package/dist/RouterListItemButton-Vj6OoqkV.js +0 -15
- package/dist/RouterListItemButton-Vj6OoqkV.js.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/providers/DialogsProvider.tsx","../src/lib/auth/index.ts","../src/queries/UserHooks.ts","../src/providers/UserProvider.tsx","../src/components/core/AppTitle.tsx","../src/components/core/navigation/NavigationListItem.tsx","../src/components/core/navigation/NavigationList.tsx","../src/components/core/navigation/NavigationRail.tsx","../src/components/core/ToolbarAccount.tsx","../src/components/core/Layout.tsx","../src/providers/LayoutProvider.tsx"],"sourcesContent":["import useEventCallback from \"@mui/utils/useEventCallback\";\nimport { useId, useRef, useState } from \"react\";\nimport { DialogsContext } from \"../contexts/DialogsContext\";\nimport type { DialogComponent, OpenDialog, OpenDialogOptions } from \"../hooks/DialogsHooks\";\n\ninterface DialogStackEntry<TPayload, TResult> {\n key: string;\n open: boolean;\n promise: Promise<TResult>;\n Component: DialogComponent<TPayload, TResult>;\n payload: TPayload;\n onClose: (result: TResult) => Promise<void>;\n resolve: (result: TResult) => void;\n}\n\nexport interface DialogProviderProps {\n children?: React.ReactNode;\n}\n\nfunction DialogsProvider({ children }: Readonly<DialogProviderProps>) {\n const [stack, setStack] = useState<Array<DialogStackEntry<any, any>>>([]);\n const keyPrefix = useId();\n const nextId = useRef(0);\n const dialogMetadata = useRef(new WeakMap<Promise<any>, DialogStackEntry<any, any>>());\n\n const requestDialog = useEventCallback<OpenDialog>(function open<TPayload, TResult>(\n Component: DialogComponent<TPayload, TResult>,\n payload: TPayload,\n options: OpenDialogOptions<TResult> = {},\n ) {\n const { onClose = async () => { } } = options;\n\n let resolve: (result: TResult) => void;\n const promise = new Promise<TResult>((resolveImpl) => {\n resolve = resolveImpl;\n });\n\n const key = `${keyPrefix}-${nextId.current}`;\n nextId.current += 1;\n\n const newEntry: DialogStackEntry<TPayload, TResult> = {\n key,\n open: true,\n promise,\n Component,\n payload,\n onClose,\n resolve: resolve!,\n };\n\n dialogMetadata.current.set(promise, newEntry);\n\n setStack((previousStack) => [...previousStack, newEntry]);\n\n return promise;\n });\n\n const removeDialogFromStack = (dialog: Promise<any>) => {\n setStack((previousStack) => previousStack.filter((entry) => entry.promise !== dialog));\n dialogMetadata.current.delete(dialog);\n };\n\n const closeDialogUi = useEventCallback(function closeDialogUi<TResult>(dialog: Promise<TResult>) {\n setStack((previousStack) =>\n previousStack.map((entry) => (entry.promise === dialog ? { ...entry, open: false } : entry)),\n );\n\n setTimeout(() => removeDialogFromStack(dialog), 1000);\n });\n\n const closeDialog = useEventCallback(async function closeDialog<TResult>(\n dialog: Promise<TResult>,\n result: TResult,\n ) {\n const entryToClose = dialogMetadata.current.get(dialog);\n if (!entryToClose) {\n throw new Error(\"Dialog not found in stack\");\n }\n\n try {\n await entryToClose.onClose(result);\n } finally {\n entryToClose.resolve(result);\n closeDialogUi(dialog);\n }\n\n return dialog;\n });\n\n return (\n <DialogsContext.Provider value={{ open: requestDialog, close: closeDialog }}>\n {children}\n {stack.map(({ key, open, Component, payload, promise }) => (\n <Component\n key={key}\n payload={payload}\n open={open}\n onClose={async (result) => {\n await closeDialog(promise, result);\n }}\n />\n ))}\n </DialogsContext.Provider>\n );\n}\n\nexport { DialogsProvider };\n\n","import { EventType, NavigationClient, PublicClientApplication } from \"@azure/msal-browser\";\r\nimport type { AuthenticationResult, Configuration, EventMessage, NavigationOptions } from \"@azure/msal-browser\";\r\nimport type { UseNavigateResult } from \"@tanstack/react-router\";\r\nimport { clientEnv } from \"~/env\";\r\n\r\nconst msalConfig: Configuration = {\r\n auth: {\r\n clientId: clientEnv.VITE_MICROSOFT_CLIENT_ID,\r\n authority: `https://login.microsoftonline.com/${clientEnv.VITE_MICROSOFT_TENANT_ID}`,\r\n },\r\n};\r\n\r\nexport const msalInstance = new PublicClientApplication(msalConfig);\r\n\r\nmsalInstance.initialize().then(() => {\r\n if (!msalInstance.getActiveAccount() && msalInstance.getAllAccounts().length > 0) {\r\n msalInstance.setActiveAccount(msalInstance.getAllAccounts()[0]);\r\n }\r\n\r\n msalInstance.enableAccountStorageEvents();\r\n\r\n msalInstance.addEventCallback((event: EventMessage) => {\r\n if (event.eventType === EventType.LOGIN_SUCCESS && event.payload) {\r\n const payload = event.payload as AuthenticationResult;\r\n const account = payload.account;\r\n msalInstance.setActiveAccount(account);\r\n }\r\n });\r\n});\r\n\r\nexport class CustomNavigationClient extends NavigationClient {\r\n private readonly navigate: UseNavigateResult<string>;\r\n\r\n constructor(navigate: UseNavigateResult<string>) {\r\n super();\r\n this.navigate = navigate;\r\n }\r\n\r\n async navigateInternal(url: string, options: NavigationOptions) {\r\n const relativePath = url.replace(location.origin, \"\");\r\n if (options.noHistory) {\r\n this.navigate({ to: relativePath, replace: true });\r\n } else {\r\n this.navigate({ to: relativePath });\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n\r\nexport const acquireAccessToken = async () => {\r\n const account = msalInstance.getActiveAccount();\r\n if (!account) {\r\n throw new Error(\"No active account! Verify a user has been signed in and setActiveAccount has been called.\");\r\n }\r\n\r\n const response = await msalInstance.acquireTokenSilent({\r\n scopes: [\"User.Read\"],\r\n account: account\r\n });\r\n\r\n return response.accessToken;\r\n};\r\n","import { useQuery } from \"@tanstack/react-query\";\r\nimport axios from \"axios\";\r\nimport type { User } from \"~/models/User\";\r\nimport { acquireAccessToken } from \"~/lib/auth\";\r\n\r\nconst QUERY_KEY = \"user\";\r\nconst DAY = 1000 * 60 * 60 * 24;\r\n\r\nconst api = axios.create({\r\n baseURL: \"https://graph.microsoft.com/v1.0/\",\r\n});\r\n\r\napi.interceptors.request.use(async (config) => {\r\n config.headers.Authorization = `Bearer ${await acquireAccessToken()}`;\r\n return config;\r\n});\r\n\r\ninterface GraphUserResponse {\r\n data: {\r\n id: string;\r\n displayName: string;\r\n jobTitle: string;\r\n mail: string;\r\n mobilePhone: string;\r\n };\r\n}\r\n\r\nexport const useGetUser = (enabled: boolean = true) => {\r\n return useQuery<GraphUserResponse, Error, User>({\r\n queryKey: [QUERY_KEY, \"me\"],\r\n queryFn: ({ signal }) => api.request({\r\n method: \"GET\",\r\n url: \"me?$select=id,displayName,jobTitle,mail,mobilePhone\",\r\n signal,\r\n }),\r\n select: response => ({\r\n id: response.data.id,\r\n name: response.data.displayName.split(\"/\")[0],\r\n jobTitle: response.data.jobTitle,\r\n email: response.data.mail,\r\n mobilePhone: response.data.mobilePhone,\r\n photo: null,\r\n groups: [],\r\n }),\r\n staleTime: DAY,\r\n gcTime: DAY,\r\n refetchOnWindowFocus: false,\r\n enabled,\r\n });\r\n};\r\n\r\nexport const useGetUserPhoto = (enabled: boolean = true) => {\r\n return useQuery<{ data: Blob }, Error, string>({\r\n queryKey: [QUERY_KEY, \"me\", \"photo\"],\r\n queryFn: ({ signal }) => api.request({\r\n method: \"GET\",\r\n url: \"me/photo/$value\",\r\n signal,\r\n responseType: \"blob\",\r\n }),\r\n select: response => URL.createObjectURL(response.data),\r\n staleTime: DAY,\r\n gcTime: DAY,\r\n refetchOnWindowFocus: false,\r\n enabled,\r\n });\r\n};\r\n\r\ninterface GraphGroupsResponse {\r\n data: {\r\n value: Array<{ displayName: string }>;\r\n };\r\n}\r\n\r\nexport const useGetUserGroups = (enabled: boolean = true) => {\r\n return useQuery<GraphGroupsResponse, Error, Array<string>>({\r\n queryKey: [QUERY_KEY, \"me\", \"memberOf\"],\r\n queryFn: ({ signal }) => api.request({\r\n method: \"GET\",\r\n url: \"me/memberOf?$select=displayName\",\r\n signal,\r\n }),\r\n select: response => response.data.value.map((group) => group.displayName),\r\n staleTime: DAY,\r\n gcTime: DAY,\r\n refetchOnWindowFocus: false,\r\n enabled,\r\n });\r\n};\r\n","import { InteractionType } from \"@azure/msal-browser\";\r\nimport { useMsalAuthentication } from \"@azure/msal-react\";\r\nimport { useEffect, useState } from \"react\";\r\nimport type { User } from \"~/models/User\";\r\nimport { UserContext } from \"~/contexts/UserContext\";\r\nimport { useGetUser, useGetUserGroups, useGetUserPhoto } from \"~/queries/UserHooks\";\r\n\r\nexport interface UserProviderProps {\r\n children?: React.ReactNode;\r\n}\r\n\r\nfunction UserProvider({ children }: Readonly<UserProviderProps>) {\r\n const { result } = useMsalAuthentication(InteractionType.Redirect);\r\n const [user, setUser] = useState<User>({} as User);\r\n\r\n const { data } = useGetUser(!!result);\r\n const { data: photo } = useGetUserPhoto(!!result);\r\n const { data: groups } = useGetUserGroups(!!result);\r\n\r\n useEffect(() => {\r\n setUser(prevUser => ({\r\n ...data,\r\n ...(photo && { photo }),\r\n ...(groups && { groups }),\r\n ...prevUser,\r\n }));\r\n }, [data, photo, groups]);\r\n\r\n return (\r\n <UserContext.Provider value={{ user, setUser }}>\r\n {children}\r\n </UserContext.Provider>\r\n );\r\n}\r\n\r\nexport { UserProvider };\r\n\r\n","import { Chip, Stack, Typography } from \"@mui/material\";\nimport type { FC } from \"react\";\nimport { clientEnv } from \"~/env\";\n\nexport const AppTitle: FC = () => {\n return (\n <Stack direction=\"row\" alignItems=\"center\" spacing={2} flexGrow={1}>\n <img src=\"/favicon-32x32.png\" alt=\"app-logo\" loading=\"lazy\" />\n <Typography variant=\"h6\">{clientEnv.VITE_APP_TITLE}</Typography>\n {import.meta.env.DEV && <Chip size=\"small\" label=\"TEST\" color=\"info\" />}\n </Stack>\n );\n};\n","import ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport { Collapse } from \"@mui/material\";\nimport Avatar from \"@mui/material/Avatar\";\nimport Box from \"@mui/material/Box\";\nimport ListItem from \"@mui/material/ListItem\";\nimport ListItemButton from \"@mui/material/ListItemButton\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport Paper from \"@mui/material/Paper\";\nimport Popper from \"@mui/material/Popper\";\nimport { styled } from \"@mui/material/styles\";\nimport Typography from \"@mui/material/Typography\";\nimport { Fragment, useState } from \"react\";\nimport { MINI_WIDTH } from \"./NavigationRail\";\nimport type { NavigationItem, NavigationPageItem } from \"~/models/Navigation\";\nimport type { FC, ReactNode } from \"react\";\nimport type { SxProps, Theme } from \"@mui/material/styles\";\nimport { RouterListItemButton } from \"~/components/router/RouterListItemButton\";\n\nconst ICON_SIZE = 34;\n\nconst StyledNavButton = styled(ListItemButton)(({ theme }) => ({\n borderRadius: 8,\n \"&.Mui-selected\": {\n \"& .MuiListItemIcon-root, & .MuiTypography-root, & .MuiSvgIcon-root\": {\n color: (theme.vars ?? theme).palette.primary.dark,\n },\n \"& .MuiAvatar-root\": {\n backgroundColor: (theme.vars ?? theme).palette.primary.dark,\n },\n \"& .MuiTouchRipple-child\": {\n backgroundColor: (theme.vars ?? theme).palette.primary.dark,\n },\n },\n \"& .MuiSvgIcon-root\": {\n color: (theme.vars ?? theme).palette.action.active,\n },\n \"& .MuiAvatar-root\": {\n backgroundColor: (theme.vars ?? theme).palette.action.active,\n },\n}));\n\nconst StyledRouterButton = styled(RouterListItemButton)(({ theme }) => ({\n borderRadius: 8,\n \"&.Mui-selected\": {\n \"& .MuiListItemIcon-root, & .MuiTypography-root, & .MuiSvgIcon-root\": {\n color: (theme.vars ?? theme).palette.primary.dark,\n },\n \"& .MuiAvatar-root\": {\n backgroundColor: (theme.vars ?? theme).palette.primary.dark,\n },\n \"& .MuiTouchRipple-child\": {\n backgroundColor: (theme.vars ?? theme).palette.primary.dark,\n },\n },\n \"& .MuiSvgIcon-root\": {\n color: (theme.vars ?? theme).palette.action.active,\n },\n \"& .MuiAvatar-root\": {\n backgroundColor: (theme.vars ?? theme).palette.action.active,\n },\n}));\n\nconst IconOrAvatar: FC<{ item: NavigationPageItem; collapsed?: boolean }> = ({ item, collapsed }) => {\n if (item.icon || collapsed) {\n return (\n <Box sx={collapsed ? { position: \"absolute\", left: \"50%\", top: \"calc(50% - 6px)\", transform: \"translate(-50%, -50%)\" } : {}}>\n <ListItemIcon sx={{ display: \"flex\", alignItems: \"center\", justifyContent: \"center\", minWidth: ICON_SIZE }}>\n {item.icon ?? null}\n {!item.icon && collapsed ? (\n <Avatar sx={{ width: ICON_SIZE - 7, height: ICON_SIZE - 7, fontSize: 12 }}>{item.title}</Avatar>\n ) : null}\n </ListItemIcon>\n {collapsed ? (\n <Typography\n variant=\"caption\"\n sx={{\n position: \"absolute\",\n bottom: -18,\n left: \"50%\",\n transform: \"translateX(-50%)\",\n fontSize: 10,\n fontWeight: 500,\n textAlign: \"center\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n maxWidth: MINI_WIDTH - 28,\n }}\n >\n {item.title}\n </Typography>\n ) : null}\n </Box>\n );\n }\n return null;\n};\n\ninterface MiniPopoverProps {\n open: boolean;\n anchorEl: HTMLElement | null;\n children?: ReactNode;\n}\n\nconst MiniPopover: FC<MiniPopoverProps> = ({ open, anchorEl, children }) => (\n <Popper\n open={open}\n anchorEl={anchorEl}\n placement=\"right-start\"\n modifiers={[\n { name: \"offset\", options: { offset: [6, 0] } },\n { name: \"preventOverflow\", options: { padding: 8 } },\n { name: \"flip\", options: { fallbackPlacements: [\"right-end\", \"left-start\"] } },\n ]}\n >\n <Paper\n sx={{\n pt: 0.5,\n pb: 0.5,\n maxHeight: \"min(calc(100vh - 100px), 560px)\",\n overflowY: \"auto\",\n overscrollBehavior: \"contain\",\n }}\n >\n {children}\n </Paper>\n </Popper>\n);\n\ninterface NavigationListItemProps {\n item: NavigationPageItem;\n isOpen?: boolean;\n selected?: boolean;\n disabled?: boolean;\n collapsed?: boolean;\n isSidebarFullyExpanded?: boolean;\n isSidebarFullyCollapsed?: boolean;\n onClick?: (item: NavigationPageItem) => void;\n renderNested?: (sub: Array<NavigationItem>) => ReactNode;\n onClose?: () => void;\n}\n\nexport const NavigationListItem: FC<NavigationListItemProps> = ({ item, isOpen, selected, disabled, collapsed, isSidebarFullyExpanded = true, isSidebarFullyCollapsed, onClick, renderNested, onClose }) => {\n const [hoveredPopoverItem, setHoveredPopoverItem] = useState<string | null>(null);\n const [anchorElement, setAnchorElement] = useState<HTMLElement | null>(null);\n\n const chevronSx: SxProps<Theme> = () => {\n if (collapsed && isSidebarFullyCollapsed && item.children) {\n return {\n fontSize: 18,\n position: \"absolute\",\n top: \"41.5%\",\n right: \"2px\",\n transform: \"translateY(-50%) rotate(-90deg)\",\n };\n }\n if (!collapsed && isSidebarFullyExpanded && item.children) {\n return {\n ml: 0.5,\n transform: `rotate(${isOpen ? 0 : -90}deg)`,\n };\n }\n return { display: \"none\" };\n };\n\n const shouldJustExpand = item.children && !collapsed;\n\n const buttonProps = {\n selected,\n disabled,\n sx: { px: 1.4, height: collapsed ? 60 : 48 }\n };\n\n const buttonContent = (\n <>\n <IconOrAvatar item={item} collapsed={collapsed} />\n {!collapsed && (\n <ListItemText\n primary={item.title}\n slotProps={{ primary: { noWrap: true, title: item.title } }}\n sx={{ ml: 1.2, flex: 1, minWidth: 0, \"& .MuiTypography-root\": { whiteSpace: \"nowrap\", overflow: \"hidden\", textOverflow: \"ellipsis\" } }}\n />\n )}\n {item.children ? <ExpandMoreIcon sx={chevronSx} /> : null}\n </>\n );\n\n const listItem = (\n <ListItem\n {...(item.children && collapsed\n ? {\n onMouseEnter: (event: React.MouseEvent<HTMLElement>) => {\n setAnchorElement(event.currentTarget);\n setHoveredPopoverItem(item.title);\n },\n onMouseLeave: () => {\n setHoveredPopoverItem(null);\n },\n }\n : {})}\n sx={{ py: 0, px: 1, overflowX: \"hidden\" }}\n >\n {shouldJustExpand ? (\n <StyledNavButton {...buttonProps} onClick={() => onClick?.(item)}>\n {buttonContent}\n </StyledNavButton>\n ) : (\n <StyledRouterButton\n {...buttonProps}\n to={item.to}\n href={item.href}\n params={item.params as any}\n search={item.search as any}\n onClick={onClose}\n >\n {buttonContent}\n </StyledRouterButton>\n )}\n\n {item.children && collapsed ? (\n <MiniPopover open={item.title === hoveredPopoverItem} anchorEl={anchorElement}>\n {renderNested?.(item.children)}\n </MiniPopover>\n ) : null}\n </ListItem>\n );\n\n return (\n <Fragment key={item.to}>\n {listItem}\n {item.children && !collapsed ? (\n <Collapse in={isOpen} timeout=\"auto\" unmountOnExit>\n {renderNested?.(item.children)}\n </Collapse>\n ) : null}\n </Fragment>\n );\n};\n","import Divider from \"@mui/material/Divider\";\nimport List from \"@mui/material/List\";\nimport ListSubheader from \"@mui/material/ListSubheader\";\nimport { Fragment, useEffect, useState } from \"react\";\nimport { NavigationListItem } from \"./NavigationListItem\";\nimport { EXPANDED_WIDTH, MINI_WIDTH } from \"./NavigationRail\";\nimport type { FC, ReactNode } from \"react\";\nimport type { Navigation, NavigationDivider, NavigationHeader, NavigationItem, NavigationPageItem } from \"~/models/Navigation\";\n\nexport const isPageItem = (item: NavigationItem): item is NavigationPageItem => !(\"kind\" in item);\nexport const isDivider = (item: NavigationItem): item is NavigationDivider => \"kind\" in item && item.kind === \"divider\";\nexport const isHeader = (item: NavigationItem): item is NavigationHeader => \"kind\" in item && item.kind === \"header\";\n\ninterface NavigationListProps {\n subNavigation: Navigation;\n depth?: number;\n collapsed?: boolean;\n isPopover?: boolean;\n isSidebarFullyExpanded?: boolean;\n isSidebarFullyCollapsed?: boolean;\n expandedWidth: number | string;\n renderItem?: (item: NavigationPageItem, context: { collapsed: boolean }) => ReactNode;\n activePath?: string | null;\n onNavigate: (item: NavigationPageItem) => void;\n onClose?: () => void;\n}\n\nexport const NavigationList: FC<NavigationListProps> = ({ subNavigation, depth = 0, collapsed, isPopover, isSidebarFullyExpanded = true, isSidebarFullyCollapsed, expandedWidth, renderItem, activePath, onNavigate, onClose }) => {\n const [openKeys, setOpenKeys] = useState<Array<string>>([]);\n\n useEffect(() => {\n if (collapsed) setOpenKeys([]);\n }, [collapsed]);\n\n const toggleKey = (key: string) =>\n setOpenKeys((previous) => (previous.includes(key) ? previous.filter((k) => k !== key) : [...previous, key]));\n\n const renderNested = (children: Array<NavigationItem>) => <NavigationList\n subNavigation={children}\n depth={depth + 1}\n isPopover={collapsed}\n expandedWidth={expandedWidth}\n activePath={activePath}\n onNavigate={onNavigate}\n onClose={onClose}\n />;\n\n const filteredNavigation = subNavigation.filter(nav => !nav.hidden);\n\n return (\n <List\n sx={{\n padding: 0,\n mt: isPopover && depth === 1 ? 0.5 : 0,\n mb: depth === 0 && !isPopover ? 4 : 0.5,\n pl: (isPopover ? 1 : 2) * (isPopover ? depth - 1 : depth),\n minWidth: isPopover && depth === 1 ? EXPANDED_WIDTH : \"auto\",\n width: collapsed ? MINI_WIDTH : \"auto\",\n }}\n >\n {filteredNavigation.map((navItem, index) => {\n if (isHeader(navItem)) {\n return (\n <ListSubheader\n key={`subheader-${depth}-${index}`}\n sx={{\n fontSize: 12,\n fontWeight: \"700\",\n height: collapsed ? 0 : 40,\n px: 2,\n minWidth: expandedWidth,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n zIndex: 2,\n bgcolor: \"transparent\",\n position: \"static\"\n }}\n >\n {navItem.title}\n </ListSubheader>\n );\n }\n\n if (isDivider(navItem)) {\n const nextItem = filteredNavigation[index + 1];\n return (\n <li key={`divider-${depth}-${index}`}>\n <Divider sx={{ mx: 1, mt: 1, mb: isHeader(nextItem) && !collapsed ? 0 : 1 }} />\n </li>\n );\n }\n\n if (!isPageItem(navItem)) return null;\n\n const key = `item-${depth}-${index}`;\n const uniqueItemKey = `${depth}-${index}-${navItem.title}`;\n\n if (renderItem) return <Fragment key={key}>{renderItem(navItem, { collapsed: !!collapsed })}</Fragment>;\n\n return <NavigationListItem\n key={key}\n item={navItem}\n isOpen={openKeys.includes(uniqueItemKey)}\n selected={activePath === navItem.to}\n collapsed={collapsed}\n isSidebarFullyExpanded={isSidebarFullyExpanded}\n isSidebarFullyCollapsed={isSidebarFullyCollapsed}\n onClick={navItem.children && !collapsed ? () => toggleKey(uniqueItemKey) : undefined}\n renderNested={renderNested}\n onClose={onClose}\n />;\n })}\n </List>\n );\n};","import { useMediaQuery } from \"@mui/material\";\nimport Box from \"@mui/material/Box\";\nimport Drawer from \"@mui/material/Drawer\";\nimport { useTheme } from \"@mui/material/styles\";\nimport { useNavigate, useRouterState } from \"@tanstack/react-router\";\nimport { NavigationList, isHeader } from \"./NavigationList\";\nimport type { FC } from \"react\";\nimport type { Navigation } from \"~/models/Navigation\";\n\nexport const MINI_WIDTH = 84;\nexport const EXPANDED_WIDTH = 320;\nexport const TOOLBAR_HEIGHT = 64;\n\ninterface NavigationRailProps {\n navigation: Navigation;\n expanded: boolean;\n setExpanded: (open: boolean) => void;\n}\n\nexport const NavigationRail: FC<NavigationRailProps> = ({ navigation, expanded, setExpanded }) => {\n const navigate = useNavigate();\n const routerState = useRouterState();\n const theme = useTheme();\n const showPermanent = useMediaQuery(theme.breakpoints.up(\"sm\"));\n\n const drawerContent = (collapsed: boolean) => (\n <Box\n component=\"nav\"\n sx={{\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n overflow: \"auto\",\n scrollbarGutter: collapsed ? \"stable\" : \"auto\",\n overflowX: \"hidden\",\n pt: navigation[0] && isHeader(navigation[0]) && !collapsed ? 0 : 2,\n }}\n >\n <NavigationList\n subNavigation={navigation}\n collapsed={collapsed}\n isSidebarFullyExpanded={expanded}\n isSidebarFullyCollapsed={!expanded}\n expandedWidth={EXPANDED_WIDTH}\n activePath={routerState.location.pathname}\n onNavigate={navigate}\n onClose={!showPermanent ? () => setExpanded(false) : undefined}\n />\n </Box>\n );\n\n if (showPermanent)\n return (\n <Drawer\n variant=\"permanent\"\n sx={{\n width: expanded ? EXPANDED_WIDTH : MINI_WIDTH,\n [\"& .MuiDrawer-paper\"]: {\n position: \"absolute\",\n top: `${TOOLBAR_HEIGHT}px`,\n height: `calc(100% - ${TOOLBAR_HEIGHT}px)`,\n width: expanded ? EXPANDED_WIDTH : MINI_WIDTH,\n borderTop: \"1px solid\",\n borderColor: \"var(--mui-palette-divider)\",\n },\n }}\n >\n {drawerContent(!expanded)}\n </Drawer>\n );\n\n return (\n <Drawer open={expanded} onClose={() => setExpanded(false)}>\n {drawerContent(!expanded)}\n </Drawer>\n );\n};\n","import { useMsal } from \"@azure/msal-react\";\r\nimport AccountCircle from \"@mui/icons-material/AccountCircle\";\r\nimport ArrowBack from \"@mui/icons-material/ArrowBack\";\r\nimport Brightness4 from \"@mui/icons-material/Brightness4\";\r\nimport ChevronRight from \"@mui/icons-material/ChevronRight\";\r\nimport DarkMode from \"@mui/icons-material/DarkMode\";\r\nimport Done from \"@mui/icons-material/Done\";\r\nimport LightMode from \"@mui/icons-material/LightMode\";\r\nimport Logout from \"@mui/icons-material/Logout\";\r\nimport SettingsBrightness from \"@mui/icons-material/SettingsBrightness\";\r\nimport Translate from \"@mui/icons-material/Translate\";\r\nimport { Avatar, Box, IconButton, List, ListItem, ListItemButton, ListItemIcon, ListItemText, ListSubheader, Menu, useColorScheme } from \"@mui/material\";\r\nimport { Fragment, useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport type { FC } from \"react\";\r\nimport { useUser } from \"~/hooks/UseHook\";\r\n\r\ntype TabType = \"settings\" | \"theme\" | \"language\";\r\n\r\nconst capitalize = (value: string | undefined) => value && value.charAt(0).toUpperCase() + value.slice(1);\r\n\r\nexport const ToolbarAccount: FC = () => {\r\n const [anchorElement, setAnchorElement] = useState<HTMLElement>();\r\n const [tab, setTab] = useState<TabType>(\"settings\");\r\n const open = Boolean(anchorElement);\r\n const { t, i18n } = useTranslation();\r\n const { mode, setMode } = useColorScheme();\r\n const { instance } = useMsal();\r\n const user = useUser();\r\n\r\n const supportedLanguages = (Array.isArray(i18n.options.supportedLngs) ? i18n.options.supportedLngs : []).filter(lng => lng !== \"cimode\");\r\n const languageDisplayNames = new Intl.DisplayNames([i18n.language], { type: \"language\" });\r\n\r\n const colorModes: Array<{ mode: \"light\" | \"dark\" | \"system\"; icon: typeof LightMode; label: string }> = [\r\n { mode: \"light\", icon: LightMode, label: t(\"Layout.Light\") },\r\n { mode: \"dark\", icon: DarkMode, label: t(\"Layout.Dark\") },\r\n { mode: \"system\", icon: SettingsBrightness, label: t(\"Layout.System\") },\r\n ];\r\n\r\n const openMenu = (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => setAnchorElement(event.currentTarget);\r\n const closeMenu = () => { setAnchorElement(undefined); setTimeout(() => setTab(\"settings\"), 300); };\r\n\r\n const changeTab = (newTab: TabType) => () => setTab(newTab);\r\n\r\n const settings = (\r\n <List component=\"nav\" subheader={<ListSubheader sx={{ backgroundColor: \"transparent\" }}>{t(\"Layout.Settings\")}</ListSubheader>}>\r\n <ListItemButton onClick={changeTab(\"theme\")} sx={{ py: 0.3 }}>\r\n <ListItemIcon>\r\n <Brightness4 />\r\n </ListItemIcon>\r\n <ListItemText primary={t(\"Layout.Appearance\")} secondary={colorModes.find((m) => m.mode === mode)?.label} />\r\n <ChevronRight />\r\n </ListItemButton>\r\n\r\n <ListItemButton onClick={changeTab(\"language\")} sx={{ py: 0.3 }}>\r\n <ListItemIcon>\r\n <Translate />\r\n </ListItemIcon>\r\n <ListItemText primary={t(\"Layout.Language\")} secondary={capitalize(languageDisplayNames.of(i18n.language))} />\r\n <ChevronRight />\r\n </ListItemButton>\r\n </List>\r\n );\r\n\r\n const theme = (\r\n <List subheader={\r\n <ListSubheader onClick={changeTab(\"settings\")} sx={{ backgroundColor: \"transparent\", display: \"flex\", alignItems: \"center\", px: 1, cursor: \"pointer\" }}>\r\n <IconButton size=\"small\" sx={{ mr: 0.5 }}>\r\n <ArrowBack fontSize=\"small\" />\r\n </IconButton> {t(\"Layout.Appearance\")}\r\n </ListSubheader>\r\n }>\r\n {colorModes.map(({ mode: modeValue, icon: Icon, label }) => (\r\n <ListItemButton\r\n key={modeValue}\r\n onClick={() => {\r\n setMode(modeValue);\r\n closeMenu();\r\n }}\r\n selected={mode === modeValue}\r\n >\r\n <ListItemIcon>\r\n <Icon />\r\n </ListItemIcon>\r\n <ListItemText primary={label} />\r\n </ListItemButton>\r\n ))}\r\n </List>\r\n );\r\n\r\n const language = (\r\n <List subheader={\r\n <ListSubheader onClick={changeTab(\"settings\")} sx={{ backgroundColor: \"transparent\", display: \"flex\", alignItems: \"center\", px: 1, cursor: \"pointer\" }}>\r\n <IconButton size=\"small\" sx={{ mr: 0.5 }}>\r\n <ArrowBack fontSize=\"small\" />\r\n </IconButton> {t(\"Layout.Language\")}\r\n </ListSubheader>\r\n }>\r\n {supportedLanguages.map((languageCode) =>\r\n <ListItemButton\r\n key={languageCode}\r\n onClick={() => i18n.changeLanguage(languageCode).finally(() => closeMenu())}\r\n selected={i18n.resolvedLanguage === languageCode}\r\n >\r\n <ListItemIcon>\r\n {i18n.resolvedLanguage === languageCode && <Done />}\r\n </ListItemIcon>\r\n <ListItemText primary={capitalize(languageDisplayNames.of(languageCode))} />\r\n </ListItemButton>\r\n )}\r\n </List>\r\n );\r\n\r\n return (\r\n <Fragment>\r\n <IconButton size=\"small\" edge=\"end\" onClick={openMenu}>\r\n {user.photo ?\r\n <Avatar\r\n src={user.photo}\r\n sx={{ width: { xs: 32, sm: 40 }, height: { xs: 32, sm: 40 } }}\r\n />\r\n :\r\n <AccountCircle sx={{ width: { xs: 32, sm: 40 }, height: { xs: 32, sm: 40 } }} />\r\n }\r\n </IconButton>\r\n\r\n <Menu anchorEl={anchorElement} open={open} onClose={closeMenu}>\r\n <Box sx={{ width: 240 }}>\r\n <List disablePadding>\r\n <ListItem>\r\n <ListItemText primary={user.name} secondary={user.jobTitle} />\r\n </ListItem>\r\n\r\n <ListItemButton\r\n onClick={() =>\r\n instance.logoutRedirect({\r\n postLogoutRedirectUri: \"/\",\r\n })\r\n }\r\n >\r\n <ListItemIcon><Logout color=\"error\" /></ListItemIcon>\r\n <ListItemText primary={t(\"Layout.Logout\")} />\r\n </ListItemButton>\r\n </List>\r\n\r\n {tab === \"settings\" && settings}\r\n {tab === \"theme\" && theme}\r\n {tab === \"language\" && language}\r\n </Box>\r\n </Menu>\r\n </Fragment>\r\n );\r\n};\r\n","import { AuthenticatedTemplate } from \"@azure/msal-react\";\r\nimport Menu from \"@mui/icons-material/Menu\";\r\nimport MenuOpen from \"@mui/icons-material/MenuOpen\";\r\nimport { AppBar, Box, CssBaseline, IconButton, InitColorSchemeScript, LinearProgress, Toolbar } from \"@mui/material\";\r\nimport { styled } from \"@mui/material/styles\";\r\nimport { useIsFetching, useIsMutating } from \"@tanstack/react-query\";\r\nimport { createIsomorphicFn } from \"@tanstack/react-start\";\r\nimport { getCookie } from \"@tanstack/react-start/server\";\r\nimport { Fragment, useState } from \"react\";\r\nimport { AppTitle } from \"./AppTitle\";\r\nimport { NavigationRail } from \"./navigation/NavigationRail\";\r\nimport { ToolbarAccount } from \"./ToolbarAccount\";\r\nimport type { Navigation } from \"~/models/Navigation\";\r\nimport type { FC, ReactNode } from \"react\";\r\n\r\nconst YEAR_IN_SECONDS = 60 * 60 * 24 * 365;\r\n\r\nconst getNavigationOpenStatus = createIsomorphicFn()\r\n .server(() => {\r\n const cookie = getCookie(\"navigationOpen\");\r\n return cookie === \"true\";\r\n })\r\n .client(() => {\r\n const cookie = document.cookie\r\n .split(\"; \")\r\n .find(row => row.startsWith(\"navigationOpen=\"));\r\n return cookie ? cookie.split(\"=\")[1] === \"true\" : false;\r\n });\r\n\r\nconst DrawerHeader = styled(\"div\")(({ theme }) => ({\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n padding: theme.spacing(0, 1),\r\n ...theme.mixins.toolbar,\r\n}));\r\n\r\ninterface LayoutProps {\r\n navigation: Navigation | undefined;\r\n children: ReactNode;\r\n}\r\n\r\nexport const Layout: FC<LayoutProps> = (props) => {\r\n const [navigationOpen, setNavigationOpen] = useState(getNavigationOpenStatus);\r\n const isFetching = !!useIsFetching();\r\n const isMutating = !!useIsMutating();\r\n\r\n return (\r\n <Fragment>\r\n <InitColorSchemeScript />\r\n <CssBaseline />\r\n\r\n <Box sx={{ display: \"flex\", height: \"100dvh\", maxHeight: \"100dvh\", overflow: \"hidden\", width: \"100%\" }}>\r\n <AppBar\r\n color=\"transparent\"\r\n position=\"fixed\"\r\n sx={{\r\n borderBottom: \"1px solid\",\r\n borderColor: \"var(--mui-palette-divider)\",\r\n boxShadow: \"none\",\r\n }}>\r\n <Toolbar>\r\n {props.navigation &&\r\n <IconButton\r\n onClick={() => {\r\n setNavigationOpen(previous => {\r\n const newValue = !previous;\r\n document.cookie = `navigationOpen=${newValue}; max-age=${YEAR_IN_SECONDS}; path=/`;\r\n return newValue;\r\n });\r\n }}\r\n sx={{ marginRight: 2 }}\r\n >\r\n {navigationOpen ? <MenuOpen /> : <Menu />}\r\n </IconButton>\r\n }\r\n\r\n <AppTitle />\r\n\r\n <ToolbarAccount />\r\n </Toolbar>\r\n </AppBar>\r\n\r\n {props.navigation &&\r\n <NavigationRail\r\n navigation={props.navigation}\r\n expanded={navigationOpen}\r\n setExpanded={newValue => {\r\n setNavigationOpen(newValue);\r\n document.cookie = `navigationOpen=${newValue}; max-age=${YEAR_IN_SECONDS}; path=/`;\r\n }}\r\n />\r\n }\r\n\r\n <Box component=\"main\" sx={{ flexGrow: 1, display: \"flex\", flexDirection: \"column\", minWidth: 0, height: \"100%\", overflow: \"hidden\" }}>\r\n <DrawerHeader />\r\n <Box sx={{ flex: 1, overflow: \"auto\", position: \"relative\" }}>\r\n <AuthenticatedTemplate>\r\n {props.children}\r\n </AuthenticatedTemplate>\r\n </Box>\r\n </Box>\r\n </Box>\r\n\r\n {(isFetching || isMutating) && <LinearProgress sx={{ position: \"fixed\", top: { xs: 56, sm: 64 }, left: 0, right: 0 }} />}\r\n </Fragment>\r\n );\r\n};\r\n","import { MsalProvider } from \"@azure/msal-react\";\r\nimport { ThemeProvider } from \"@mui/material\";\r\nimport { LocalizationProvider } from \"@mui/x-date-pickers\";\r\nimport { AdapterDayjs } from \"@mui/x-date-pickers/AdapterDayjs\";\r\nimport { createServerFn } from \"@tanstack/react-start\";\r\nimport { getCookie } from \"@tanstack/react-start/server\";\r\nimport dayjs from \"dayjs\";\r\nimport i18n from \"i18next\";\r\nimport LanguageDetector from \"i18next-browser-languagedetector\";\r\nimport { useEffect, useEffectEvent } from \"react\";\r\nimport { initReactI18next } from \"react-i18next\";\r\nimport { resources } from \"virtual:wcz-layout\";\r\nimport z from \"zod\";\r\nimport { DialogsProvider } from \"./DialogsProvider\";\r\nimport { UserProvider } from \"./UserProvider\";\r\nimport type { Navigation } from \"~/models/Navigation\";\r\nimport type { FC, ReactNode } from \"react\";\r\nimport type { Theme } from \"@mui/material\";\r\nimport { msalInstance } from \"~/lib/auth\";\r\nimport { Layout } from \"~/components/core/Layout\";\r\n\r\nconst YEAR_IN_MINUTES = 60 * 24 * 365;\r\n\r\ni18n\r\n .use(LanguageDetector)\r\n .use(initReactI18next)\r\n .init({\r\n resources,\r\n fallbackLng: \"en\",\r\n supportedLngs: Object.keys(resources),\r\n detection: {\r\n caches: [\"cookie\"],\r\n cookieMinutes: YEAR_IN_MINUTES,\r\n },\r\n interpolation: { escapeValue: false },\r\n });\r\n\r\ninterface ProvidersProps {\r\n navigation?: Navigation;\r\n theme: Theme;\r\n children: ReactNode;\r\n}\r\n\r\nexport const LayoutProvider: FC<ProvidersProps> = ({ navigation, theme, children }) => {\r\n\r\n const languageChangedHandler = useEffectEvent(() => {\r\n z.config(z.core.locales[i18n.language as keyof typeof z.core.locales]());\r\n dayjs.locale(i18n.language);\r\n });\r\n\r\n useEffect(() => {\r\n languageChangedHandler();\r\n\r\n i18n.on(\"languageChanged\", languageChangedHandler);\r\n return () => { i18n.off(\"languageChanged\", languageChangedHandler); };\r\n }, []);\r\n\r\n return (\r\n <MsalProvider instance={msalInstance}>\r\n <UserProvider>\r\n <ThemeProvider theme={theme}>\r\n <LocalizationProvider key={i18n.language} dateAdapter={AdapterDayjs} adapterLocale={i18n.language}>\r\n <DialogsProvider>\r\n <Layout navigation={navigation}>\r\n {children}\r\n </Layout>\r\n </DialogsProvider>\r\n </LocalizationProvider>\r\n </ThemeProvider>\r\n </UserProvider>\r\n </MsalProvider>\r\n );\r\n};\r\n\r\nexport const setSSRLanguage = createServerFn().handler(async () => {\r\n const language = getCookie(i18n.services.languageDetector.options.lookupCookie) || \"en\";\r\n z.config(z.core.locales[language as keyof typeof z.core.locales]());\r\n dayjs.locale(language);\r\n await i18n.changeLanguage(language);\r\n});\r\n"],"names":["closeDialogUi","closeDialog","jsxs","jsx","Typography","Fragment","i18n","List","ListSubheader","ListItemButton","ListItemIcon","ListItemText","Avatar","Box","ListItem","Menu","z"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/providers/DialogsProvider.tsx","../src/lib/auth/index.ts","../src/queries/UserHooks.ts","../src/providers/UserProvider.tsx","../src/components/core/AppTitle.tsx","../src/components/core/navigation/NavigationListItem.tsx","../src/components/core/navigation/NavigationList.tsx","../src/components/core/navigation/NavigationRail.tsx","../src/components/core/ToolbarAccount.tsx","../src/components/core/Layout.tsx","../src/providers/LayoutProvider.tsx"],"sourcesContent":["import useEventCallback from \"@mui/utils/useEventCallback\";\nimport { useId, useRef, useState } from \"react\";\nimport { DialogsContext } from \"../contexts/DialogsContext\";\nimport type { DialogComponent, OpenDialog, OpenDialogOptions } from \"../hooks/DialogsHooks\";\n\ninterface DialogStackEntry<TPayload, TResult> {\n key: string;\n open: boolean;\n promise: Promise<TResult>;\n Component: DialogComponent<TPayload, TResult>;\n payload: TPayload;\n onClose: (result: TResult) => Promise<void>;\n resolve: (result: TResult) => void;\n}\n\nexport interface DialogProviderProps {\n children?: React.ReactNode;\n}\n\nfunction DialogsProvider({ children }: Readonly<DialogProviderProps>) {\n const [stack, setStack] = useState<Array<DialogStackEntry<any, any>>>([]);\n const keyPrefix = useId();\n const nextId = useRef(0);\n const dialogMetadata = useRef(new WeakMap<Promise<any>, DialogStackEntry<any, any>>());\n\n const requestDialog = useEventCallback<OpenDialog>(function open<TPayload, TResult>(\n Component: DialogComponent<TPayload, TResult>,\n payload: TPayload,\n options: OpenDialogOptions<TResult> = {},\n ) {\n const { onClose = async () => { } } = options;\n\n let resolve: (result: TResult) => void;\n const promise = new Promise<TResult>((resolveImpl) => {\n resolve = resolveImpl;\n });\n\n const key = `${keyPrefix}-${nextId.current}`;\n nextId.current += 1;\n\n const newEntry: DialogStackEntry<TPayload, TResult> = {\n key,\n open: true,\n promise,\n Component,\n payload,\n onClose,\n resolve: resolve!,\n };\n\n dialogMetadata.current.set(promise, newEntry);\n\n setStack((previousStack) => [...previousStack, newEntry]);\n\n return promise;\n });\n\n const removeDialogFromStack = (dialog: Promise<any>) => {\n setStack((previousStack) => previousStack.filter((entry) => entry.promise !== dialog));\n dialogMetadata.current.delete(dialog);\n };\n\n const closeDialogUi = useEventCallback(function closeDialogUi<TResult>(dialog: Promise<TResult>) {\n setStack((previousStack) =>\n previousStack.map((entry) => (entry.promise === dialog ? { ...entry, open: false } : entry)),\n );\n\n setTimeout(() => removeDialogFromStack(dialog), 1000);\n });\n\n const closeDialog = useEventCallback(async function closeDialog<TResult>(\n dialog: Promise<TResult>,\n result: TResult,\n ) {\n const entryToClose = dialogMetadata.current.get(dialog);\n if (!entryToClose) {\n throw new Error(\"Dialog not found in stack\");\n }\n\n try {\n await entryToClose.onClose(result);\n } finally {\n entryToClose.resolve(result);\n closeDialogUi(dialog);\n }\n\n return dialog;\n });\n\n return (\n <DialogsContext.Provider value={{ open: requestDialog, close: closeDialog }}>\n {children}\n {stack.map(({ key, open, Component, payload, promise }) => (\n <Component\n key={key}\n payload={payload}\n open={open}\n onClose={async (result) => {\n await closeDialog(promise, result);\n }}\n />\n ))}\n </DialogsContext.Provider>\n );\n}\n\nexport { DialogsProvider };\n\n","import { EventType, NavigationClient, PublicClientApplication } from \"@azure/msal-browser\";\r\nimport type { AuthenticationResult, Configuration, EventMessage, NavigationOptions } from \"@azure/msal-browser\";\r\nimport type { UseNavigateResult } from \"@tanstack/react-router\";\r\nimport { clientEnv } from \"~/env\";\r\n\r\nconst msalConfig: Configuration = {\r\n auth: {\r\n clientId: clientEnv.VITE_MICROSOFT_CLIENT_ID,\r\n authority: `https://login.microsoftonline.com/${clientEnv.VITE_MICROSOFT_TENANT_ID}`,\r\n },\r\n};\r\n\r\nexport const msalInstance = new PublicClientApplication(msalConfig);\r\n\r\nmsalInstance.initialize().then(() => {\r\n if (!msalInstance.getActiveAccount() && msalInstance.getAllAccounts().length > 0) {\r\n msalInstance.setActiveAccount(msalInstance.getAllAccounts()[0]);\r\n }\r\n\r\n msalInstance.enableAccountStorageEvents();\r\n\r\n msalInstance.addEventCallback((event: EventMessage) => {\r\n if (event.eventType === EventType.LOGIN_SUCCESS && event.payload) {\r\n const payload = event.payload as AuthenticationResult;\r\n const account = payload.account;\r\n msalInstance.setActiveAccount(account);\r\n }\r\n });\r\n});\r\n\r\nexport class CustomNavigationClient extends NavigationClient {\r\n private readonly navigate: UseNavigateResult<string>;\r\n\r\n constructor(navigate: UseNavigateResult<string>) {\r\n super();\r\n this.navigate = navigate;\r\n }\r\n\r\n async navigateInternal(url: string, options: NavigationOptions) {\r\n const relativePath = url.replace(location.origin, \"\");\r\n if (options.noHistory) {\r\n this.navigate({ to: relativePath, replace: true });\r\n } else {\r\n this.navigate({ to: relativePath });\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n\r\nexport const acquireAccessToken = async () => {\r\n const account = msalInstance.getActiveAccount();\r\n if (!account) {\r\n throw new Error(\"No active account! Verify a user has been signed in and setActiveAccount has been called.\");\r\n }\r\n\r\n const response = await msalInstance.acquireTokenSilent({\r\n scopes: [\"User.Read\"],\r\n account: account\r\n });\r\n\r\n return response.accessToken;\r\n};\r\n","import { useQuery } from \"@tanstack/react-query\";\r\nimport axios from \"axios\";\r\nimport type { User } from \"~/models/User\";\r\nimport { acquireAccessToken } from \"~/lib/auth\";\r\n\r\nconst QUERY_KEY = \"user\";\r\nconst DAY = 1000 * 60 * 60 * 24;\r\n\r\nconst api = axios.create({\r\n baseURL: \"https://graph.microsoft.com/v1.0/\",\r\n});\r\n\r\napi.interceptors.request.use(async (config) => {\r\n config.headers.Authorization = `Bearer ${await acquireAccessToken()}`;\r\n return config;\r\n});\r\n\r\ninterface GraphUserResponse {\r\n data: {\r\n id: string;\r\n displayName: string;\r\n jobTitle: string;\r\n mail: string;\r\n mobilePhone: string;\r\n };\r\n}\r\n\r\nexport const useGetUser = (enabled: boolean = true) => {\r\n return useQuery<GraphUserResponse, Error, User>({\r\n queryKey: [QUERY_KEY, \"me\"],\r\n queryFn: ({ signal }) => api.request({\r\n method: \"GET\",\r\n url: \"me?$select=id,displayName,jobTitle,mail,mobilePhone\",\r\n signal,\r\n }),\r\n select: response => ({\r\n id: response.data.id,\r\n name: response.data.displayName.split(\"/\")[0],\r\n jobTitle: response.data.jobTitle,\r\n email: response.data.mail,\r\n mobilePhone: response.data.mobilePhone,\r\n photo: null,\r\n groups: [],\r\n }),\r\n staleTime: DAY,\r\n gcTime: DAY,\r\n refetchOnWindowFocus: false,\r\n enabled,\r\n });\r\n};\r\n\r\nexport const useGetUserPhoto = (enabled: boolean = true) => {\r\n return useQuery<{ data: Blob }, Error, string>({\r\n queryKey: [QUERY_KEY, \"me\", \"photo\"],\r\n queryFn: ({ signal }) => api.request({\r\n method: \"GET\",\r\n url: \"me/photo/$value\",\r\n signal,\r\n responseType: \"blob\",\r\n }),\r\n select: response => URL.createObjectURL(response.data),\r\n staleTime: DAY,\r\n gcTime: DAY,\r\n refetchOnWindowFocus: false,\r\n enabled,\r\n });\r\n};\r\n\r\ninterface GraphGroupsResponse {\r\n data: {\r\n value: Array<{ displayName: string }>;\r\n };\r\n}\r\n\r\nexport const useGetUserGroups = (enabled: boolean = true) => {\r\n return useQuery<GraphGroupsResponse, Error, Array<string>>({\r\n queryKey: [QUERY_KEY, \"me\", \"memberOf\"],\r\n queryFn: ({ signal }) => api.request({\r\n method: \"GET\",\r\n url: \"me/memberOf?$select=displayName\",\r\n signal,\r\n }),\r\n select: response => response.data.value.map((group) => group.displayName),\r\n staleTime: DAY,\r\n gcTime: DAY,\r\n refetchOnWindowFocus: false,\r\n enabled,\r\n });\r\n};\r\n","import { InteractionType } from \"@azure/msal-browser\";\r\nimport { useMsalAuthentication } from \"@azure/msal-react\";\r\nimport { useEffect, useState } from \"react\";\r\nimport type { User } from \"~/models/User\";\r\nimport { UserContext } from \"~/contexts/UserContext\";\r\nimport { useGetUser, useGetUserGroups, useGetUserPhoto } from \"~/queries/UserHooks\";\r\n\r\nexport interface UserProviderProps {\r\n children?: React.ReactNode;\r\n}\r\n\r\nfunction UserProvider({ children }: Readonly<UserProviderProps>) {\r\n const { result } = useMsalAuthentication(InteractionType.Redirect);\r\n const [user, setUser] = useState<User>({} as User);\r\n\r\n const { data } = useGetUser(!!result);\r\n const { data: photo } = useGetUserPhoto(!!result);\r\n const { data: groups } = useGetUserGroups(!!result);\r\n\r\n useEffect(() => {\r\n if (!data) return;\r\n\r\n setUser({\r\n ...data,\r\n ...(photo && { photo }),\r\n ...(groups && { groups }),\r\n });\r\n }, [data, photo, groups]);\r\n\r\n return (\r\n <UserContext.Provider value={{ user, setUser }}>\r\n {children}\r\n </UserContext.Provider>\r\n );\r\n}\r\n\r\nexport { UserProvider };\r\n\r\n","import { Chip, Stack, Typography } from \"@mui/material\";\nimport type { FC } from \"react\";\nimport { clientEnv } from \"~/env\";\n\nexport const AppTitle: FC = () => {\n return (\n <Stack direction=\"row\" alignItems=\"center\" spacing={2} flexGrow={1}>\n <img src=\"/favicon-32x32.png\" alt=\"app-logo\" loading=\"lazy\" />\n <Typography variant=\"h6\">{clientEnv.VITE_APP_TITLE}</Typography>\n {import.meta.env.DEV && <Chip size=\"small\" label=\"TEST\" color=\"info\" />}\n </Stack>\n );\n};\n","import ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport { Collapse } from \"@mui/material\";\nimport Avatar from \"@mui/material/Avatar\";\nimport Box from \"@mui/material/Box\";\nimport ListItem from \"@mui/material/ListItem\";\nimport ListItemButton from \"@mui/material/ListItemButton\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport Paper from \"@mui/material/Paper\";\nimport Popper from \"@mui/material/Popper\";\nimport { styled } from \"@mui/material/styles\";\nimport Typography from \"@mui/material/Typography\";\nimport { Fragment, useState } from \"react\";\nimport { MINI_WIDTH } from \"./NavigationRail\";\nimport type { NavigationItem, NavigationPageItem } from \"~/models/Navigation\";\nimport type { FC, ReactNode } from \"react\";\nimport type { SxProps, Theme } from \"@mui/material/styles\";\nimport { RouterListItemButton } from \"~/components/router/RouterListItemButton\";\n\nconst ICON_SIZE = 34;\n\nconst StyledNavButton = styled(ListItemButton)(({ theme }) => ({\n borderRadius: 8,\n \"&.Mui-selected\": {\n \"& .MuiListItemIcon-root, & .MuiTypography-root, & .MuiSvgIcon-root\": {\n color: (theme.vars ?? theme).palette.primary.dark,\n },\n \"& .MuiAvatar-root\": {\n backgroundColor: (theme.vars ?? theme).palette.primary.dark,\n },\n \"& .MuiTouchRipple-child\": {\n backgroundColor: (theme.vars ?? theme).palette.primary.dark,\n },\n },\n \"& .MuiSvgIcon-root\": {\n color: (theme.vars ?? theme).palette.action.active,\n },\n \"& .MuiAvatar-root\": {\n backgroundColor: (theme.vars ?? theme).palette.action.active,\n },\n}));\n\nconst StyledRouterButton = styled(RouterListItemButton)(({ theme }) => ({\n borderRadius: 8,\n \"&.Mui-selected\": {\n \"& .MuiListItemIcon-root, & .MuiTypography-root, & .MuiSvgIcon-root\": {\n color: (theme.vars ?? theme).palette.primary.dark,\n },\n \"& .MuiAvatar-root\": {\n backgroundColor: (theme.vars ?? theme).palette.primary.dark,\n },\n \"& .MuiTouchRipple-child\": {\n backgroundColor: (theme.vars ?? theme).palette.primary.dark,\n },\n },\n \"& .MuiSvgIcon-root\": {\n color: (theme.vars ?? theme).palette.action.active,\n },\n \"& .MuiAvatar-root\": {\n backgroundColor: (theme.vars ?? theme).palette.action.active,\n },\n}));\n\nconst IconOrAvatar: FC<{ item: NavigationPageItem; collapsed?: boolean }> = ({ item, collapsed }) => {\n if (item.icon || collapsed) {\n return (\n <Box sx={collapsed ? { position: \"absolute\", left: \"50%\", top: \"calc(50% - 6px)\", transform: \"translate(-50%, -50%)\" } : {}}>\n <ListItemIcon sx={{ display: \"flex\", alignItems: \"center\", justifyContent: \"center\", minWidth: ICON_SIZE }}>\n {item.icon ?? null}\n {!item.icon && collapsed ? (\n <Avatar sx={{ width: ICON_SIZE - 7, height: ICON_SIZE - 7, fontSize: 12 }}>{item.title}</Avatar>\n ) : null}\n </ListItemIcon>\n {collapsed ? (\n <Typography\n variant=\"caption\"\n sx={{\n position: \"absolute\",\n bottom: -18,\n left: \"50%\",\n transform: \"translateX(-50%)\",\n fontSize: 10,\n fontWeight: 500,\n textAlign: \"center\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n maxWidth: MINI_WIDTH - 28,\n }}\n >\n {item.title}\n </Typography>\n ) : null}\n </Box>\n );\n }\n return null;\n};\n\ninterface MiniPopoverProps {\n open: boolean;\n anchorEl: HTMLElement | null;\n children?: ReactNode;\n}\n\nconst MiniPopover: FC<MiniPopoverProps> = ({ open, anchorEl, children }) => (\n <Popper\n open={open}\n anchorEl={anchorEl}\n placement=\"right-start\"\n modifiers={[\n { name: \"offset\", options: { offset: [6, 0] } },\n { name: \"preventOverflow\", options: { padding: 8 } },\n { name: \"flip\", options: { fallbackPlacements: [\"right-end\", \"left-start\"] } },\n ]}\n >\n <Paper\n sx={{\n pt: 0.5,\n pb: 0.5,\n maxHeight: \"min(calc(100vh - 100px), 560px)\",\n overflowY: \"auto\",\n overscrollBehavior: \"contain\",\n }}\n >\n {children}\n </Paper>\n </Popper>\n);\n\ninterface NavigationListItemProps {\n item: NavigationPageItem;\n isOpen?: boolean;\n selected?: boolean;\n disabled?: boolean;\n collapsed?: boolean;\n isSidebarFullyExpanded?: boolean;\n isSidebarFullyCollapsed?: boolean;\n onClick?: (item: NavigationPageItem) => void;\n renderNested?: (sub: Array<NavigationItem>) => ReactNode;\n onClose?: () => void;\n}\n\nexport const NavigationListItem: FC<NavigationListItemProps> = ({ item, isOpen, selected, disabled, collapsed, isSidebarFullyExpanded = true, isSidebarFullyCollapsed, onClick, renderNested, onClose }) => {\n const [hoveredPopoverItem, setHoveredPopoverItem] = useState<string | null>(null);\n const [anchorElement, setAnchorElement] = useState<HTMLElement | null>(null);\n\n const chevronSx: SxProps<Theme> = () => {\n if (collapsed && isSidebarFullyCollapsed && item.children) {\n return {\n fontSize: 18,\n position: \"absolute\",\n top: \"41.5%\",\n right: \"2px\",\n transform: \"translateY(-50%) rotate(-90deg)\",\n };\n }\n if (!collapsed && isSidebarFullyExpanded && item.children) {\n return {\n ml: 0.5,\n transform: `rotate(${isOpen ? 0 : -90}deg)`,\n };\n }\n return { display: \"none\" };\n };\n\n const shouldJustExpand = item.children && !collapsed;\n\n const buttonProps = {\n selected,\n disabled,\n sx: { px: 1.4, height: collapsed ? 60 : 48 }\n };\n\n const buttonContent = (\n <>\n <IconOrAvatar item={item} collapsed={collapsed} />\n {!collapsed && (\n <ListItemText\n primary={item.title}\n slotProps={{ primary: { noWrap: true, title: item.title } }}\n sx={{ ml: 1.2, flex: 1, minWidth: 0, \"& .MuiTypography-root\": { whiteSpace: \"nowrap\", overflow: \"hidden\", textOverflow: \"ellipsis\" } }}\n />\n )}\n {item.children ? <ExpandMoreIcon sx={chevronSx} /> : null}\n </>\n );\n\n const listItem = (\n <ListItem\n {...(item.children && collapsed\n ? {\n onMouseEnter: (event: React.MouseEvent<HTMLElement>) => {\n setAnchorElement(event.currentTarget);\n setHoveredPopoverItem(item.title);\n },\n onMouseLeave: () => {\n setHoveredPopoverItem(null);\n },\n }\n : {})}\n sx={{ py: 0, px: 1, overflowX: \"hidden\" }}\n >\n {shouldJustExpand ? (\n <StyledNavButton {...buttonProps} onClick={() => onClick?.(item)}>\n {buttonContent}\n </StyledNavButton>\n ) : (\n <StyledRouterButton\n {...buttonProps}\n to={item.to}\n href={item.href}\n params={item.params as any}\n search={item.search as any}\n onClick={onClose}\n >\n {buttonContent}\n </StyledRouterButton>\n )}\n\n {item.children && collapsed ? (\n <MiniPopover open={item.title === hoveredPopoverItem} anchorEl={anchorElement}>\n {renderNested?.(item.children)}\n </MiniPopover>\n ) : null}\n </ListItem>\n );\n\n return (\n <Fragment key={item.to}>\n {listItem}\n {item.children && !collapsed ? (\n <Collapse in={isOpen} timeout=\"auto\" unmountOnExit>\n {renderNested?.(item.children)}\n </Collapse>\n ) : null}\n </Fragment>\n );\n};\n","import Divider from \"@mui/material/Divider\";\nimport List from \"@mui/material/List\";\nimport ListSubheader from \"@mui/material/ListSubheader\";\nimport { Fragment, useEffect, useState } from \"react\";\nimport { NavigationListItem } from \"./NavigationListItem\";\nimport { EXPANDED_WIDTH, MINI_WIDTH } from \"./NavigationRail\";\nimport type { FC, ReactNode } from \"react\";\nimport type { Navigation, NavigationDivider, NavigationHeader, NavigationItem, NavigationPageItem } from \"~/models/Navigation\";\n\nexport const isPageItem = (item: NavigationItem): item is NavigationPageItem => !(\"kind\" in item);\nexport const isDivider = (item: NavigationItem): item is NavigationDivider => \"kind\" in item && item.kind === \"divider\";\nexport const isHeader = (item: NavigationItem): item is NavigationHeader => \"kind\" in item && item.kind === \"header\";\n\ninterface NavigationListProps {\n subNavigation: Navigation;\n depth?: number;\n collapsed?: boolean;\n isPopover?: boolean;\n isSidebarFullyExpanded?: boolean;\n isSidebarFullyCollapsed?: boolean;\n expandedWidth: number | string;\n renderItem?: (item: NavigationPageItem, context: { collapsed: boolean }) => ReactNode;\n activePath?: string | null;\n onNavigate: (item: NavigationPageItem) => void;\n onClose?: () => void;\n}\n\nexport const NavigationList: FC<NavigationListProps> = ({ subNavigation, depth = 0, collapsed, isPopover, isSidebarFullyExpanded = true, isSidebarFullyCollapsed, expandedWidth, renderItem, activePath, onNavigate, onClose }) => {\n const [openKeys, setOpenKeys] = useState<Array<string>>([]);\n\n useEffect(() => {\n if (collapsed) setOpenKeys([]);\n }, [collapsed]);\n\n const toggleKey = (key: string) =>\n setOpenKeys((previous) => (previous.includes(key) ? previous.filter((k) => k !== key) : [...previous, key]));\n\n const renderNested = (children: Array<NavigationItem>) => <NavigationList\n subNavigation={children}\n depth={depth + 1}\n isPopover={collapsed}\n expandedWidth={expandedWidth}\n activePath={activePath}\n onNavigate={onNavigate}\n onClose={onClose}\n />;\n\n const filteredNavigation = subNavigation.filter(nav => !nav.hidden);\n\n return (\n <List\n sx={{\n padding: 0,\n mt: isPopover && depth === 1 ? 0.5 : 0,\n mb: depth === 0 && !isPopover ? 4 : 0.5,\n pl: (isPopover ? 1 : 2) * (isPopover ? depth - 1 : depth),\n minWidth: isPopover && depth === 1 ? EXPANDED_WIDTH : \"auto\",\n width: collapsed ? MINI_WIDTH : \"auto\",\n }}\n >\n {filteredNavigation.map((navItem, index) => {\n if (isHeader(navItem)) {\n return (\n <ListSubheader\n key={`subheader-${depth}-${index}`}\n sx={{\n fontSize: 12,\n fontWeight: \"700\",\n height: collapsed ? 0 : 40,\n px: 2,\n minWidth: expandedWidth,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n zIndex: 2,\n bgcolor: \"transparent\",\n position: \"static\"\n }}\n >\n {navItem.title}\n </ListSubheader>\n );\n }\n\n if (isDivider(navItem)) {\n const nextItem = filteredNavigation[index + 1];\n return (\n <li key={`divider-${depth}-${index}`}>\n <Divider sx={{ mx: 1, mt: 1, mb: isHeader(nextItem) && !collapsed ? 0 : 1 }} />\n </li>\n );\n }\n\n if (!isPageItem(navItem)) return null;\n\n const key = `item-${depth}-${index}`;\n const uniqueItemKey = `${depth}-${index}-${navItem.title}`;\n\n if (renderItem) return <Fragment key={key}>{renderItem(navItem, { collapsed: !!collapsed })}</Fragment>;\n\n return <NavigationListItem\n key={key}\n item={navItem}\n isOpen={openKeys.includes(uniqueItemKey)}\n selected={activePath === navItem.to}\n collapsed={collapsed}\n isSidebarFullyExpanded={isSidebarFullyExpanded}\n isSidebarFullyCollapsed={isSidebarFullyCollapsed}\n onClick={navItem.children && !collapsed ? () => toggleKey(uniqueItemKey) : undefined}\n renderNested={renderNested}\n onClose={onClose}\n />;\n })}\n </List>\n );\n};","import { useMediaQuery } from \"@mui/material\";\nimport Box from \"@mui/material/Box\";\nimport Drawer from \"@mui/material/Drawer\";\nimport { useTheme } from \"@mui/material/styles\";\nimport { useNavigate, useRouterState } from \"@tanstack/react-router\";\nimport { NavigationList, isHeader } from \"./NavigationList\";\nimport type { FC } from \"react\";\nimport type { Navigation } from \"~/models/Navigation\";\n\nexport const MINI_WIDTH = 84;\nexport const EXPANDED_WIDTH = 320;\nexport const TOOLBAR_HEIGHT = 64;\n\ninterface NavigationRailProps {\n navigation: Navigation;\n expanded: boolean;\n setExpanded: (open: boolean) => void;\n}\n\nexport const NavigationRail: FC<NavigationRailProps> = ({ navigation, expanded, setExpanded }) => {\n const navigate = useNavigate();\n const routerState = useRouterState();\n const theme = useTheme();\n const showPermanent = useMediaQuery(theme.breakpoints.up(\"sm\"));\n\n const drawerContent = (collapsed: boolean) => (\n <Box\n component=\"nav\"\n sx={{\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n overflow: \"auto\",\n scrollbarGutter: collapsed ? \"stable\" : \"auto\",\n overflowX: \"hidden\",\n pt: navigation[0] && isHeader(navigation[0]) && !collapsed ? 0 : 2,\n }}\n >\n <NavigationList\n subNavigation={navigation}\n collapsed={collapsed}\n isSidebarFullyExpanded={expanded}\n isSidebarFullyCollapsed={!expanded}\n expandedWidth={EXPANDED_WIDTH}\n activePath={routerState.location.pathname}\n onNavigate={navigate}\n onClose={!showPermanent ? () => setExpanded(false) : undefined}\n />\n </Box>\n );\n\n if (showPermanent)\n return (\n <Drawer\n variant=\"permanent\"\n sx={{\n width: expanded ? EXPANDED_WIDTH : MINI_WIDTH,\n [\"& .MuiDrawer-paper\"]: {\n position: \"absolute\",\n top: `${TOOLBAR_HEIGHT}px`,\n height: `calc(100% - ${TOOLBAR_HEIGHT}px)`,\n width: expanded ? EXPANDED_WIDTH : MINI_WIDTH,\n borderTop: \"1px solid\",\n borderColor: \"var(--mui-palette-divider)\",\n },\n }}\n >\n {drawerContent(!expanded)}\n </Drawer>\n );\n\n return (\n <Drawer open={expanded} onClose={() => setExpanded(false)}>\n {drawerContent(!expanded)}\n </Drawer>\n );\n};\n","import { useMsal } from \"@azure/msal-react\";\r\nimport AccountCircle from \"@mui/icons-material/AccountCircle\";\r\nimport ArrowBack from \"@mui/icons-material/ArrowBack\";\r\nimport Brightness4 from \"@mui/icons-material/Brightness4\";\r\nimport ChevronRight from \"@mui/icons-material/ChevronRight\";\r\nimport DarkMode from \"@mui/icons-material/DarkMode\";\r\nimport Done from \"@mui/icons-material/Done\";\r\nimport LightMode from \"@mui/icons-material/LightMode\";\r\nimport Logout from \"@mui/icons-material/Logout\";\r\nimport SettingsBrightness from \"@mui/icons-material/SettingsBrightness\";\r\nimport Translate from \"@mui/icons-material/Translate\";\r\nimport { Avatar, Box, IconButton, List, ListItem, ListItemButton, ListItemIcon, ListItemText, ListSubheader, Menu, useColorScheme } from \"@mui/material\";\r\nimport { Fragment, useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport type { FC } from \"react\";\r\nimport { useUser } from \"~/hooks/UseHook\";\r\n\r\ntype TabType = \"settings\" | \"theme\" | \"language\";\r\n\r\nconst capitalize = (value: string | undefined) => value && value.charAt(0).toUpperCase() + value.slice(1);\r\n\r\nexport const ToolbarAccount: FC = () => {\r\n const [anchorElement, setAnchorElement] = useState<HTMLElement>();\r\n const [tab, setTab] = useState<TabType>(\"settings\");\r\n const open = Boolean(anchorElement);\r\n const { t, i18n } = useTranslation();\r\n const { mode, setMode } = useColorScheme();\r\n const { instance } = useMsal();\r\n const user = useUser();\r\n\r\n const supportedLanguages = (Array.isArray(i18n.options.supportedLngs) ? i18n.options.supportedLngs : []).filter(lng => lng !== \"cimode\");\r\n const languageDisplayNames = new Intl.DisplayNames([i18n.language], { type: \"language\" });\r\n\r\n const colorModes: Array<{ mode: \"light\" | \"dark\" | \"system\"; icon: typeof LightMode; label: string }> = [\r\n { mode: \"light\", icon: LightMode, label: t(\"Layout.Light\") },\r\n { mode: \"dark\", icon: DarkMode, label: t(\"Layout.Dark\") },\r\n { mode: \"system\", icon: SettingsBrightness, label: t(\"Layout.System\") },\r\n ];\r\n\r\n const openMenu = (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => setAnchorElement(event.currentTarget);\r\n const closeMenu = () => { setAnchorElement(undefined); setTimeout(() => setTab(\"settings\"), 300); };\r\n\r\n const changeTab = (newTab: TabType) => () => setTab(newTab);\r\n\r\n const settings = (\r\n <List component=\"nav\" subheader={<ListSubheader sx={{ backgroundColor: \"transparent\" }}>{t(\"Layout.Settings\")}</ListSubheader>}>\r\n <ListItemButton onClick={changeTab(\"theme\")} sx={{ py: 0.3 }}>\r\n <ListItemIcon>\r\n <Brightness4 />\r\n </ListItemIcon>\r\n <ListItemText primary={t(\"Layout.Appearance\")} secondary={colorModes.find((m) => m.mode === mode)?.label} />\r\n <ChevronRight />\r\n </ListItemButton>\r\n\r\n <ListItemButton onClick={changeTab(\"language\")} sx={{ py: 0.3 }}>\r\n <ListItemIcon>\r\n <Translate />\r\n </ListItemIcon>\r\n <ListItemText primary={t(\"Layout.Language\")} secondary={capitalize(languageDisplayNames.of(i18n.language))} />\r\n <ChevronRight />\r\n </ListItemButton>\r\n </List>\r\n );\r\n\r\n const theme = (\r\n <List subheader={\r\n <ListSubheader onClick={changeTab(\"settings\")} sx={{ backgroundColor: \"transparent\", display: \"flex\", alignItems: \"center\", px: 1, cursor: \"pointer\" }}>\r\n <IconButton size=\"small\" sx={{ mr: 0.5 }}>\r\n <ArrowBack fontSize=\"small\" />\r\n </IconButton> {t(\"Layout.Appearance\")}\r\n </ListSubheader>\r\n }>\r\n {colorModes.map(({ mode: modeValue, icon: Icon, label }) => (\r\n <ListItemButton\r\n key={modeValue}\r\n onClick={() => {\r\n setMode(modeValue);\r\n closeMenu();\r\n }}\r\n selected={mode === modeValue}\r\n >\r\n <ListItemIcon>\r\n <Icon />\r\n </ListItemIcon>\r\n <ListItemText primary={label} />\r\n </ListItemButton>\r\n ))}\r\n </List>\r\n );\r\n\r\n const language = (\r\n <List subheader={\r\n <ListSubheader onClick={changeTab(\"settings\")} sx={{ backgroundColor: \"transparent\", display: \"flex\", alignItems: \"center\", px: 1, cursor: \"pointer\" }}>\r\n <IconButton size=\"small\" sx={{ mr: 0.5 }}>\r\n <ArrowBack fontSize=\"small\" />\r\n </IconButton> {t(\"Layout.Language\")}\r\n </ListSubheader>\r\n }>\r\n {supportedLanguages.map((languageCode) =>\r\n <ListItemButton\r\n key={languageCode}\r\n onClick={() => i18n.changeLanguage(languageCode).finally(() => closeMenu())}\r\n selected={i18n.resolvedLanguage === languageCode}\r\n >\r\n <ListItemIcon>\r\n {i18n.resolvedLanguage === languageCode && <Done />}\r\n </ListItemIcon>\r\n <ListItemText primary={capitalize(languageDisplayNames.of(languageCode))} />\r\n </ListItemButton>\r\n )}\r\n </List>\r\n );\r\n\r\n return (\r\n <Fragment>\r\n <IconButton size=\"small\" edge=\"end\" onClick={openMenu}>\r\n {user.photo ?\r\n <Avatar\r\n src={user.photo}\r\n sx={{ width: { xs: 32, sm: 40 }, height: { xs: 32, sm: 40 } }}\r\n />\r\n :\r\n <AccountCircle sx={{ width: { xs: 32, sm: 40 }, height: { xs: 32, sm: 40 } }} />\r\n }\r\n </IconButton>\r\n\r\n <Menu anchorEl={anchorElement} open={open} onClose={closeMenu}>\r\n <Box sx={{ width: 240 }}>\r\n <List disablePadding>\r\n <ListItem>\r\n <ListItemText primary={user.name} secondary={user.jobTitle} />\r\n </ListItem>\r\n\r\n <ListItemButton\r\n onClick={() =>\r\n instance.logoutRedirect({\r\n postLogoutRedirectUri: \"/\",\r\n })\r\n }\r\n >\r\n <ListItemIcon><Logout color=\"error\" /></ListItemIcon>\r\n <ListItemText primary={t(\"Layout.Logout\")} />\r\n </ListItemButton>\r\n </List>\r\n\r\n {tab === \"settings\" && settings}\r\n {tab === \"theme\" && theme}\r\n {tab === \"language\" && language}\r\n </Box>\r\n </Menu>\r\n </Fragment>\r\n );\r\n};\r\n","import { AuthenticatedTemplate } from \"@azure/msal-react\";\r\nimport Menu from \"@mui/icons-material/Menu\";\r\nimport MenuOpen from \"@mui/icons-material/MenuOpen\";\r\nimport { AppBar, Box, CssBaseline, IconButton, InitColorSchemeScript, LinearProgress, Toolbar } from \"@mui/material\";\r\nimport { styled } from \"@mui/material/styles\";\r\nimport { useIsFetching, useIsMutating } from \"@tanstack/react-query\";\r\nimport { createIsomorphicFn } from \"@tanstack/react-start\";\r\nimport { getCookie } from \"@tanstack/react-start/server\";\r\nimport { Fragment, useState } from \"react\";\r\nimport { AppTitle } from \"./AppTitle\";\r\nimport { NavigationRail } from \"./navigation/NavigationRail\";\r\nimport { ToolbarAccount } from \"./ToolbarAccount\";\r\nimport type { Navigation } from \"~/models/Navigation\";\r\nimport type { FC, ReactNode } from \"react\";\r\n\r\nconst YEAR_IN_SECONDS = 60 * 60 * 24 * 365;\r\n\r\nconst getNavigationOpenStatus = createIsomorphicFn()\r\n .server(() => {\r\n const cookie = getCookie(\"navigationOpen\");\r\n return cookie === \"true\";\r\n })\r\n .client(() => {\r\n const cookie = document.cookie\r\n .split(\"; \")\r\n .find(row => row.startsWith(\"navigationOpen=\"));\r\n return cookie ? cookie.split(\"=\")[1] === \"true\" : false;\r\n });\r\n\r\nconst DrawerHeader = styled(\"div\")(({ theme }) => ({\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n padding: theme.spacing(0, 1),\r\n ...theme.mixins.toolbar,\r\n}));\r\n\r\ninterface LayoutProps {\r\n navigation: Navigation | undefined;\r\n children: ReactNode;\r\n}\r\n\r\nexport const Layout: FC<LayoutProps> = (props) => {\r\n const [navigationOpen, setNavigationOpen] = useState(getNavigationOpenStatus);\r\n const isFetching = !!useIsFetching();\r\n const isMutating = !!useIsMutating();\r\n\r\n return (\r\n <Fragment>\r\n <InitColorSchemeScript />\r\n <CssBaseline />\r\n\r\n <Box sx={{ display: \"flex\", height: \"100dvh\", maxHeight: \"100dvh\", overflow: \"hidden\", width: \"100%\" }}>\r\n <AppBar\r\n color=\"transparent\"\r\n position=\"fixed\"\r\n sx={{\r\n borderBottom: \"1px solid\",\r\n borderColor: \"var(--mui-palette-divider)\",\r\n boxShadow: \"none\",\r\n }}>\r\n <Toolbar>\r\n {props.navigation &&\r\n <IconButton\r\n onClick={() => {\r\n setNavigationOpen(previous => {\r\n const newValue = !previous;\r\n document.cookie = `navigationOpen=${newValue}; max-age=${YEAR_IN_SECONDS}; path=/`;\r\n return newValue;\r\n });\r\n }}\r\n sx={{ marginRight: 2 }}\r\n >\r\n {navigationOpen ? <MenuOpen /> : <Menu />}\r\n </IconButton>\r\n }\r\n\r\n <AppTitle />\r\n\r\n <ToolbarAccount />\r\n </Toolbar>\r\n </AppBar>\r\n\r\n {props.navigation &&\r\n <NavigationRail\r\n navigation={props.navigation}\r\n expanded={navigationOpen}\r\n setExpanded={newValue => {\r\n setNavigationOpen(newValue);\r\n document.cookie = `navigationOpen=${newValue}; max-age=${YEAR_IN_SECONDS}; path=/`;\r\n }}\r\n />\r\n }\r\n\r\n <Box component=\"main\" sx={{ flexGrow: 1, display: \"flex\", flexDirection: \"column\", minWidth: 0, height: \"100%\", overflow: \"hidden\" }}>\r\n <DrawerHeader />\r\n <Box sx={{ flex: 1, overflow: \"auto\", position: \"relative\" }}>\r\n <AuthenticatedTemplate>\r\n {props.children}\r\n </AuthenticatedTemplate>\r\n </Box>\r\n </Box>\r\n </Box>\r\n\r\n {(isFetching || isMutating) && <LinearProgress sx={{ position: \"fixed\", top: { xs: 56, sm: 64 }, left: 0, right: 0 }} />}\r\n </Fragment>\r\n );\r\n};\r\n","import { MsalProvider } from \"@azure/msal-react\";\r\nimport { ThemeProvider } from \"@mui/material\";\r\nimport { LocalizationProvider } from \"@mui/x-date-pickers\";\r\nimport { AdapterDayjs } from \"@mui/x-date-pickers/AdapterDayjs\";\r\nimport { createServerFn } from \"@tanstack/react-start\";\r\nimport { getCookie } from \"@tanstack/react-start/server\";\r\nimport dayjs from \"dayjs\";\r\nimport i18n from \"i18next\";\r\nimport LanguageDetector from \"i18next-browser-languagedetector\";\r\nimport { useEffect, useEffectEvent } from \"react\";\r\nimport { initReactI18next } from \"react-i18next\";\r\nimport { resources } from \"virtual:wcz-layout\";\r\nimport z from \"zod\";\r\nimport { DialogsProvider } from \"./DialogsProvider\";\r\nimport { UserProvider } from \"./UserProvider\";\r\nimport type { Navigation } from \"~/models/Navigation\";\r\nimport type { FC, ReactNode } from \"react\";\r\nimport type { Theme } from \"@mui/material\";\r\nimport { msalInstance } from \"~/lib/auth\";\r\nimport { Layout } from \"~/components/core/Layout\";\r\n\r\nconst YEAR_IN_MINUTES = 60 * 24 * 365;\r\n\r\ni18n\r\n .use(LanguageDetector)\r\n .use(initReactI18next)\r\n .init({\r\n resources,\r\n fallbackLng: \"en\",\r\n supportedLngs: Object.keys(resources),\r\n detection: {\r\n caches: [\"cookie\"],\r\n cookieMinutes: YEAR_IN_MINUTES,\r\n },\r\n interpolation: { escapeValue: false },\r\n });\r\n\r\ninterface ProvidersProps {\r\n navigation?: Navigation;\r\n theme: Theme;\r\n children: ReactNode;\r\n}\r\n\r\nexport const LayoutProvider: FC<ProvidersProps> = ({ navigation, theme, children }) => {\r\n\r\n const languageChangedHandler = useEffectEvent(() => {\r\n z.config(z.core.locales[i18n.language as keyof typeof z.core.locales]());\r\n dayjs.locale(i18n.language);\r\n });\r\n\r\n useEffect(() => {\r\n languageChangedHandler();\r\n\r\n i18n.on(\"languageChanged\", languageChangedHandler);\r\n return () => { i18n.off(\"languageChanged\", languageChangedHandler); };\r\n }, []);\r\n\r\n return (\r\n <MsalProvider instance={msalInstance}>\r\n <UserProvider>\r\n <ThemeProvider theme={theme}>\r\n <LocalizationProvider key={i18n.language} dateAdapter={AdapterDayjs} adapterLocale={i18n.language}>\r\n <DialogsProvider>\r\n <Layout navigation={navigation}>\r\n {children}\r\n </Layout>\r\n </DialogsProvider>\r\n </LocalizationProvider>\r\n </ThemeProvider>\r\n </UserProvider>\r\n </MsalProvider>\r\n );\r\n};\r\n\r\nexport const setSSRLanguage = createServerFn().handler(async () => {\r\n const language = getCookie(i18n.services.languageDetector.options.lookupCookie) || \"en\";\r\n z.config(z.core.locales[language as keyof typeof z.core.locales]());\r\n dayjs.locale(language);\r\n await i18n.changeLanguage(language);\r\n});\r\n"],"names":["DialogsProvider","children","stack","setStack","useState","keyPrefix","useId","nextId","useRef","dialogMetadata","WeakMap","requestDialog","useEventCallback","open","Component","payload","options","onClose","resolve","promise","Promise","resolveImpl","key","current","newEntry","set","previousStack","removeDialogFromStack","dialog","filter","entry","delete","closeDialogUi","map","setTimeout","closeDialog","result","entryToClose","get","Error","jsxs","close","msalConfig","auth","clientId","clientEnv","VITE_MICROSOFT_CLIENT_ID","authority","VITE_MICROSOFT_TENANT_ID","msalInstance","PublicClientApplication","initialize","then","getActiveAccount","getAllAccounts","length","setActiveAccount","enableAccountStorageEvents","addEventCallback","event","eventType","EventType","LOGIN_SUCCESS","account","acquireAccessToken","response","acquireTokenSilent","scopes","accessToken","QUERY_KEY","DAY","api","axios","create","baseURL","interceptors","request","use","config","headers","Authorization","useGetUser","t0","$","_c","enabled","undefined","t1","Symbol","for","t2","queryKey","queryFn","_temp","select","_temp2","staleTime","gcTime","refetchOnWindowFocus","useQuery","useGetUserPhoto","_temp3","_temp4","useGetUserGroups","_temp5","_temp7","signal","method","url","id","data","name","displayName","split","jobTitle","email","mail","mobilePhone","photo","groups","responseType","URL","createObjectURL","_temp6","group","value","UserProvider","useMsalAuthentication","InteractionType","Redirect","user","setUser","t3","useEffect","t4","t5","AppTitle","jsx","VITE_APP_TITLE","import","ICON_SIZE","StyledNavButton","styled","ListItemButton","theme","borderRadius","color","vars","palette","primary","dark","backgroundColor","action","active","StyledRouterButton","RouterListItemButton","IconOrAvatar","item","collapsed","icon","position","left","top","transform","display","alignItems","justifyContent","minWidth","title","width","height","fontSize","t6","Typography","bottom","fontWeight","textAlign","whiteSpace","overflow","textOverflow","maxWidth","MINI_WIDTH","t7","MiniPopover","anchorEl","offset","padding","fallbackPlacements","pt","pb","maxHeight","overflowY","overscrollBehavior","NavigationListItem","isOpen","selected","disabled","isSidebarFullyExpanded","isSidebarFullyCollapsed","onClick","renderNested","hoveredPopoverItem","setHoveredPopoverItem","anchorElement","setAnchorElement","right","ml","chevronSx","shouldJustExpand","px","sx","buttonProps","noWrap","flex","t8","t9","Fragment","buttonContent","t10","onMouseEnter","currentTarget","onMouseLeave","t11","py","overflowX","t12","to","href","params","search","t13","t14","listItem","t15","t16","isPageItem","isDivider","kind","isHeader","NavigationList","subNavigation","depth","isPopover","expandedWidth","renderItem","activePath","onNavigate","openKeys","setOpenKeys","previous","includes","k","toggleKey","filteredNavigation","EXPANDED_WIDTH","mt","mb","pl","navItem","index","zIndex","bgcolor","nextItem","mx","key_0","uniqueItemKey","nav","hidden","TOOLBAR_HEIGHT","NavigationRail","navigation","expanded","setExpanded","navigate","useNavigate","routerState","useRouterState","useTheme","breakpoints","up","showPermanent","useMediaQuery","location","pathname","flexDirection","scrollbarGutter","drawerContent","borderTop","borderColor","capitalize","charAt","toUpperCase","slice","ToolbarAccount","tab","setTab","Boolean","t","i18n","useTranslation","mode","setMode","useColorScheme","instance","useMsal","useUser","T0","closeMenu","openMenu","settings","supportedLanguages","Array","isArray","supportedLngs","languageDisplayNames","Intl","DisplayNames","language","type","LightMode","label","DarkMode","SettingsBrightness","colorModes","newTab","changeTab","ListSubheader","t17","ListItemIcon","t18","t19","find","m","t20","ListItemText","t21","t22","t23","t24","t25","t26","t27","t28","of","t29","List","t30","t31","cursor","t32","mr","t33","t34","t35","t36","modeValue","Icon","t37","t38","t39","t40","languageCode","changeLanguage","finally","resolvedLanguage","Avatar","xs","sm","ListItem","logoutRedirect","postLogoutRedirectUri","Box","lng","YEAR_IN_SECONDS","getNavigationOpenStatus","createIsomorphicFn","server","cookie","getCookie","client","document","row","startsWith","DrawerHeader","spacing","mixins","toolbar","Layout","props","navigationOpen","setNavigationOpen","isFetching","useIsFetching","isMutating","useIsMutating","borderBottom","boxShadow","marginRight","Menu","newValue_0","newValue","flexGrow","YEAR_IN_MINUTES","LanguageDetector","initReactI18next","init","resources","fallbackLng","Object","keys","detection","caches","cookieMinutes","interpolation","escapeValue","LayoutProvider","languageChangedHandler","useEffectEvent","on","off","AdapterDayjs","setSSRLanguage","createServerFn","handler","services","languageDetector","lookupCookie","z","core","locales","dayjs","locale"],"mappings":"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"}
|
package/dist/models.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { F } from "./FileMeta-G1oT3mYK.js";
|
|
2
2
|
import z__default, { z } from "zod";
|
|
3
|
-
import { A as ApprovalStepResult, a as ApprovalStatus } from "./ApprovalStatus-
|
|
3
|
+
import { A as ApprovalStepResult, a as ApprovalStatus } from "./ApprovalStatus-BtAVFn5p.js";
|
|
4
4
|
const EmailAttachmentSchema = z__default.object({
|
|
5
5
|
appName: z__default.string().trim().min(1).max(100),
|
|
6
6
|
subId: z__default.uuid()
|
|
@@ -13,16 +13,8 @@ const EmailSchema = z__default.object({
|
|
|
13
13
|
cc: z__default.array(z__default.email()).optional(),
|
|
14
14
|
attachments: z__default.array(EmailAttachmentSchema).optional()
|
|
15
15
|
});
|
|
16
|
-
const EmployeeCategoryGroup = z__default.enum([
|
|
17
|
-
|
|
18
|
-
"FD",
|
|
19
|
-
"FI"
|
|
20
|
-
]);
|
|
21
|
-
const EmployeeStatus = z__default.enum([
|
|
22
|
-
"Active",
|
|
23
|
-
"Terminated",
|
|
24
|
-
"Leave of Absence"
|
|
25
|
-
]);
|
|
16
|
+
const EmployeeCategoryGroup = z__default.enum(["IDL", "FD", "FI"]);
|
|
17
|
+
const EmployeeStatus = z__default.enum(["Active", "Terminated", "Leave of Absence"]);
|
|
26
18
|
const EmployeeSchema = z__default.object({
|
|
27
19
|
badgeId: z__default.string().trim(),
|
|
28
20
|
category: z__default.string().trim(),
|
|
@@ -72,11 +64,7 @@ const DepartmentSchema = z__default.object({
|
|
|
72
64
|
plantId: z__default.string().trim(),
|
|
73
65
|
manager: EmployeeSchema
|
|
74
66
|
});
|
|
75
|
-
const StepApprovalOrder = z__default.enum([
|
|
76
|
-
"Serial",
|
|
77
|
-
"Parallel",
|
|
78
|
-
"OneOfThem"
|
|
79
|
-
]);
|
|
67
|
+
const StepApprovalOrder = z__default.enum(["Serial", "Parallel", "OneOfThem"]);
|
|
80
68
|
const ApprovalFlowSchema = z.object({
|
|
81
69
|
id: z.uuid(),
|
|
82
70
|
approvalStage: z.number(),
|
|
@@ -101,10 +89,7 @@ const ApprovalFlowStepSchema = z.object({
|
|
|
101
89
|
resultDate: z.date().optional(),
|
|
102
90
|
resultComment: z.string().trim().max(2e3).optional()
|
|
103
91
|
});
|
|
104
|
-
const ApprovalRequestType = z__default.enum([
|
|
105
|
-
"Single",
|
|
106
|
-
"Batch"
|
|
107
|
-
]);
|
|
92
|
+
const ApprovalRequestType = z__default.enum(["Single", "Batch"]);
|
|
108
93
|
const ApprovalSchema = z__default.object({
|
|
109
94
|
id: z__default.uuid(),
|
|
110
95
|
number: z__default.string().trim().max(30).optional(),
|
|
@@ -127,21 +112,17 @@ const CreateApprovalSchema = ApprovalSchema.pick({
|
|
|
127
112
|
emailBody: true,
|
|
128
113
|
approvalFlows: true
|
|
129
114
|
}).extend({
|
|
130
|
-
approvalFlows: z__default.array(
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
})
|
|
142
|
-
)
|
|
143
|
-
})
|
|
144
|
-
).min(1)
|
|
115
|
+
approvalFlows: z__default.array(ApprovalFlowSchema.pick({
|
|
116
|
+
approvalStage: true,
|
|
117
|
+
batchSequence: true,
|
|
118
|
+
stepApprovalOrder: true,
|
|
119
|
+
steps: true
|
|
120
|
+
}).extend({
|
|
121
|
+
steps: z__default.array(ApprovalFlowStepSchema.pick({
|
|
122
|
+
approverRole: true,
|
|
123
|
+
approver: true
|
|
124
|
+
}))
|
|
125
|
+
})).min(1)
|
|
145
126
|
});
|
|
146
127
|
const ApproveApprovalSchema = z__default.object({
|
|
147
128
|
id: z__default.uuid(),
|
|
@@ -153,21 +134,17 @@ const ResubmitApprovalSchema = ApprovalSchema.pick({
|
|
|
153
134
|
id: true,
|
|
154
135
|
approvalFlows: true
|
|
155
136
|
}).extend({
|
|
156
|
-
approvalFlows: z__default.array(
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
})
|
|
168
|
-
)
|
|
169
|
-
})
|
|
170
|
-
).min(1)
|
|
137
|
+
approvalFlows: z__default.array(ApprovalFlowSchema.pick({
|
|
138
|
+
approvalStage: true,
|
|
139
|
+
batchSequence: true,
|
|
140
|
+
stepApprovalOrder: true,
|
|
141
|
+
steps: true
|
|
142
|
+
}).extend({
|
|
143
|
+
steps: z__default.array(ApprovalFlowStepSchema.pick({
|
|
144
|
+
approverRole: true,
|
|
145
|
+
approver: true
|
|
146
|
+
}))
|
|
147
|
+
})).min(1)
|
|
171
148
|
});
|
|
172
149
|
const CancelApprovalSchema = z__default.object({
|
|
173
150
|
id: z__default.uuid(),
|
package/dist/models.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sources":["../src/models/email/EmailAttachment.ts","../src/models/email/Email.ts","../src/models/peoplesoft/EmployeeCategoryGroup.ts","../src/models/peoplesoft/EmployeeStatus.ts","../src/models/peoplesoft/Employee.ts","../src/models/peoplesoft/Department.ts","../src/models/approval/StepApprovalOrder.ts","../src/models/approval/ApprovalFlow.ts","../src/models/approval/ApprovalEmployee.ts","../src/models/approval/ApprovalFlowStep.ts","../src/models/approval/ApprovalRequestType.ts","../src/models/approval/Approval.ts"],"sourcesContent":["import z from \"zod\";\n\nexport const EmailAttachmentSchema = z.object({\n appName: z.string().trim().min(1).max(100),\n subId: z.uuid(),\n});\n\nexport type EmailAttachment = z.infer<typeof EmailAttachmentSchema>;","import z from \"zod\";\nimport { EmailAttachmentSchema } from \"./EmailAttachment\";\n\nexport const EmailSchema = z.object({\n subject: z.string().trim().min(1).max(60),\n body: z.string().trim().min(1),\n to: z.array(z.email()).min(1),\n bcc: z.array(z.email()).optional(),\n cc: z.array(z.email()).optional(),\n attachments: z.array(EmailAttachmentSchema).optional(),\n});\n\nexport type Email = z.infer<typeof EmailSchema>;","import z from \"zod\";\n\nexport const EmployeeCategoryGroup = z.enum([\n \"IDL\",\n \"FD\",\n \"FI\"\n]);","import z from \"zod\";\n\nexport const EmployeeStatus = z.enum([\n \"Active\",\n \"Terminated\",\n \"Leave of Absence\"\n]);","import z from \"zod\";\nimport { EmployeeCategoryGroup } from \"./EmployeeCategoryGroup\";\nimport { EmployeeStatus } from \"./EmployeeStatus\";\n\nexport const EmployeeSchema = z.object({\n badgeId: z.string().trim(),\n category: z.string().trim(),\n categoryGroup: EmployeeCategoryGroup,\n companyCode: z.string().trim(),\n contactPhone: z.string().trim(),\n departmentId: z.string().trim(),\n departmentDescription: z.string().trim(),\n emailString: z.string().trim(),\n employeeId: z.string().trim(),\n extensionNumber: z.string().trim(),\n firstName: z.string().trim(),\n gender: z.string().trim(),\n hiredDate: z.date(),\n lastName: z.string().trim(),\n managerId: z.string().trim(),\n middleName: z.string().trim(),\n name: z.string().trim(),\n nameTitleCase: z.string().trim(),\n nfcSn: z.string().trim(),\n plantId: z.string().trim(),\n position: z.string().trim(),\n previousEmployeeIds: z.string().trim().nullable(),\n reHiredDate: z.date().nullable(),\n recordNumber: z.number(),\n status: EmployeeStatus,\n supervisorId: z.string().trim(),\n terminationDate: z.date().nullable(),\n terminationFutureDate: z.date().nullable(),\n type: z.string().trim(),\n upperDepartmentId: z.string().trim(),\n jobCode: z.string().trim(),\n jobDescription: z.string().trim(),\n terminationReason: z.string().trim().nullable(),\n supervisorRecordNumber: z.number(),\n});\n\nexport type Employee = z.infer<typeof EmployeeSchema>;\n","import z from \"zod\";\nimport { EmployeeSchema } from \"./Employee\";\n\nexport const DepartmentSchema = z.object({\n departmentId: z.string().trim(),\n description: z.string().trim(),\n managerId: z.string().trim(),\n managerRecordNumber: z.string().trim(),\n treeLevel: z.number(),\n upperDepartmentId: z.string().trim(),\n companyCode: z.string().trim(),\n location: z.string().trim(),\n salLocation: z.string().trim(),\n plantId: z.string().trim(),\n manager: EmployeeSchema,\n});\n\nexport type Department = z.infer<typeof DepartmentSchema>;\n","import z from \"zod\";\n\nexport const StepApprovalOrder = z.enum([\n \"Serial\",\n \"Parallel\",\n \"OneOfThem\"\n]);","import { z } from \"zod\";\nimport { StepApprovalOrder } from \"./StepApprovalOrder\";\nimport type { ApprovalFlowStep } from \"./ApprovalFlowStep\";\n\nexport const ApprovalFlowSchema = z.object({\n id: z.uuid(),\n approvalStage: z.number(),\n batchSequence: z.number().optional(),\n approvalSequence: z.number(),\n stepApprovalOrder: StepApprovalOrder,\n steps: z.array(z.custom<ApprovalFlowStep>()),\n isActive: z.boolean().default(false).optional(),\n});\n\nexport type ApprovalFlow = z.infer<typeof ApprovalFlowSchema>;\n","import { z } from \"zod\";\n\nexport const ApprovalEmployeeSchema = z.object({\n employeeId: z.string().trim().min(1).max(20),\n name: z.string().trim().min(1).max(50),\n email: z.email().min(1).max(100),\n});\n\nexport type ApprovalEmployee = z.infer<typeof ApprovalEmployeeSchema>;","import { z } from \"zod\";\nimport { ApprovalEmployeeSchema } from \"./ApprovalEmployee\";\nimport { ApprovalStepResult } from \"./ApprovalStepResult\";\n\nexport const ApprovalFlowStepSchema = z.object({\n id: z.uuid(),\n order: z.number(),\n approverRole: z.string().trim().min(1).max(100).default(\"Approver\").optional(),\n approver: ApprovalEmployeeSchema,\n actualApprover: ApprovalEmployeeSchema.optional(),\n result: ApprovalStepResult.default(\"NotAvailable\").optional(),\n resultDate: z.date().optional(),\n resultComment: z.string().trim().max(2000).optional(),\n});\n\nexport type ApprovalFlowStep = z.infer<typeof ApprovalFlowStepSchema>;\n","import z from \"zod\";\n\nexport const ApprovalRequestType = z.enum([\n \"Single\",\n \"Batch\"\n]);","import z from \"zod\";\nimport { ApprovalFlowSchema } from \"./ApprovalFlow\";\nimport { ApprovalFlowStepSchema } from \"./ApprovalFlowStep\";\nimport { ApprovalRequestType } from \"./ApprovalRequestType\";\nimport { ApprovalStatus } from \"./ApprovalStatus\";\nimport { ApprovalStepResult } from \"./ApprovalStepResult\";\nimport type { ApprovalFlow } from \"./ApprovalFlow\";\nimport type { ApprovalEmployee } from \"./ApprovalEmployee\";\n\nexport const ApprovalSchema = z.object({\n id: z.uuid(),\n number: z.string().trim().max(30).optional(),\n applicationName: z.string().trim().min(1).max(50),\n type: ApprovalRequestType.default(\"Single\").optional(),\n status: ApprovalStatus,\n emailBody: z.string().trim().min(1),\n created: z.date(),\n createdBy: z.custom<ApprovalEmployee>(),\n updated: z.date(),\n updatedBy: z.custom<ApprovalEmployee>(),\n approvalFlows: z.array(z.custom<ApprovalFlow>()).min(1),\n currentApprovers: z.array(z.custom<ApprovalEmployee>())\n});\n\nexport type Approval = z.infer<typeof ApprovalSchema>;\n\n// Create Approval\nexport const CreateApprovalSchema = ApprovalSchema.pick({\n id: true,\n number: true,\n applicationName: true,\n type: true,\n emailBody: true,\n approvalFlows: true,\n}).extend({\n approvalFlows: z.array(\n ApprovalFlowSchema.pick({\n approvalStage: true,\n batchSequence: true,\n stepApprovalOrder: true,\n steps: true,\n }).extend({\n steps: z.array(\n ApprovalFlowStepSchema.pick({\n approverRole: true,\n approver: true,\n })\n ),\n })\n ).min(1),\n});\n\nexport type CreateApproval = z.infer<typeof CreateApprovalSchema>;\n\n// Single Approval\nexport const ApproveApprovalSchema = z.object({\n id: z.uuid(),\n result: ApprovalStepResult,\n resultComment: z.string().trim().max(2000).optional(),\n emailBody: z.string().trim().min(1),\n});\n\nexport type ApproveApproval = z.infer<typeof ApproveApprovalSchema>;\n\n// Resubmit Approval\nexport const ResubmitApprovalSchema = ApprovalSchema.pick({\n id: true,\n approvalFlows: true,\n}).extend({\n approvalFlows: z.array(\n ApprovalFlowSchema.pick({\n approvalStage: true,\n batchSequence: true,\n stepApprovalOrder: true,\n steps: true,\n }).extend({\n steps: z.array(\n ApprovalFlowStepSchema.pick({\n approverRole: true,\n approver: true,\n })\n ),\n })\n ).min(1),\n});\n\nexport type ResubmitApproval = z.infer<typeof ResubmitApprovalSchema>;\n\n// Cancel Approval\nexport const CancelApprovalSchema = z.object({\n id: z.uuid(),\n comment: z.string().trim().min(1).max(2000),\n emailBody: z.string().trim().min(1),\n});\n\nexport type CancelApproval = z.infer<typeof CancelApprovalSchema>;\n\n// Withdraw Approval\nexport const WithdrawApprovalSchema = z.object({\n id: z.uuid(),\n comment: z.string().trim().min(1).max(2000),\n emailBody: z.string().trim().min(1),\n});\n\nexport type WithdrawApproval = z.infer<typeof WithdrawApprovalSchema>;\n"],"names":["z"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"models.js","sources":["../src/models/email/EmailAttachment.ts","../src/models/email/Email.ts","../src/models/peoplesoft/EmployeeCategoryGroup.ts","../src/models/peoplesoft/EmployeeStatus.ts","../src/models/peoplesoft/Employee.ts","../src/models/peoplesoft/Department.ts","../src/models/approval/StepApprovalOrder.ts","../src/models/approval/ApprovalFlow.ts","../src/models/approval/ApprovalEmployee.ts","../src/models/approval/ApprovalFlowStep.ts","../src/models/approval/ApprovalRequestType.ts","../src/models/approval/Approval.ts"],"sourcesContent":["import z from \"zod\";\n\nexport const EmailAttachmentSchema = z.object({\n appName: z.string().trim().min(1).max(100),\n subId: z.uuid(),\n});\n\nexport type EmailAttachment = z.infer<typeof EmailAttachmentSchema>;","import z from \"zod\";\nimport { EmailAttachmentSchema } from \"./EmailAttachment\";\n\nexport const EmailSchema = z.object({\n subject: z.string().trim().min(1).max(60),\n body: z.string().trim().min(1),\n to: z.array(z.email()).min(1),\n bcc: z.array(z.email()).optional(),\n cc: z.array(z.email()).optional(),\n attachments: z.array(EmailAttachmentSchema).optional(),\n});\n\nexport type Email = z.infer<typeof EmailSchema>;","import z from \"zod\";\n\nexport const EmployeeCategoryGroup = z.enum([\n \"IDL\",\n \"FD\",\n \"FI\"\n]);","import z from \"zod\";\n\nexport const EmployeeStatus = z.enum([\n \"Active\",\n \"Terminated\",\n \"Leave of Absence\"\n]);","import z from \"zod\";\nimport { EmployeeCategoryGroup } from \"./EmployeeCategoryGroup\";\nimport { EmployeeStatus } from \"./EmployeeStatus\";\n\nexport const EmployeeSchema = z.object({\n badgeId: z.string().trim(),\n category: z.string().trim(),\n categoryGroup: EmployeeCategoryGroup,\n companyCode: z.string().trim(),\n contactPhone: z.string().trim(),\n departmentId: z.string().trim(),\n departmentDescription: z.string().trim(),\n emailString: z.string().trim(),\n employeeId: z.string().trim(),\n extensionNumber: z.string().trim(),\n firstName: z.string().trim(),\n gender: z.string().trim(),\n hiredDate: z.date(),\n lastName: z.string().trim(),\n managerId: z.string().trim(),\n middleName: z.string().trim(),\n name: z.string().trim(),\n nameTitleCase: z.string().trim(),\n nfcSn: z.string().trim(),\n plantId: z.string().trim(),\n position: z.string().trim(),\n previousEmployeeIds: z.string().trim().nullable(),\n reHiredDate: z.date().nullable(),\n recordNumber: z.number(),\n status: EmployeeStatus,\n supervisorId: z.string().trim(),\n terminationDate: z.date().nullable(),\n terminationFutureDate: z.date().nullable(),\n type: z.string().trim(),\n upperDepartmentId: z.string().trim(),\n jobCode: z.string().trim(),\n jobDescription: z.string().trim(),\n terminationReason: z.string().trim().nullable(),\n supervisorRecordNumber: z.number(),\n});\n\nexport type Employee = z.infer<typeof EmployeeSchema>;\n","import z from \"zod\";\nimport { EmployeeSchema } from \"./Employee\";\n\nexport const DepartmentSchema = z.object({\n departmentId: z.string().trim(),\n description: z.string().trim(),\n managerId: z.string().trim(),\n managerRecordNumber: z.string().trim(),\n treeLevel: z.number(),\n upperDepartmentId: z.string().trim(),\n companyCode: z.string().trim(),\n location: z.string().trim(),\n salLocation: z.string().trim(),\n plantId: z.string().trim(),\n manager: EmployeeSchema,\n});\n\nexport type Department = z.infer<typeof DepartmentSchema>;\n","import z from \"zod\";\n\nexport const StepApprovalOrder = z.enum([\n \"Serial\",\n \"Parallel\",\n \"OneOfThem\"\n]);","import { z } from \"zod\";\nimport { StepApprovalOrder } from \"./StepApprovalOrder\";\nimport type { ApprovalFlowStep } from \"./ApprovalFlowStep\";\n\nexport const ApprovalFlowSchema = z.object({\n id: z.uuid(),\n approvalStage: z.number(),\n batchSequence: z.number().optional(),\n approvalSequence: z.number(),\n stepApprovalOrder: StepApprovalOrder,\n steps: z.array(z.custom<ApprovalFlowStep>()),\n isActive: z.boolean().default(false).optional(),\n});\n\nexport type ApprovalFlow = z.infer<typeof ApprovalFlowSchema>;\n","import { z } from \"zod\";\n\nexport const ApprovalEmployeeSchema = z.object({\n employeeId: z.string().trim().min(1).max(20),\n name: z.string().trim().min(1).max(50),\n email: z.email().min(1).max(100),\n});\n\nexport type ApprovalEmployee = z.infer<typeof ApprovalEmployeeSchema>;","import { z } from \"zod\";\nimport { ApprovalEmployeeSchema } from \"./ApprovalEmployee\";\nimport { ApprovalStepResult } from \"./ApprovalStepResult\";\n\nexport const ApprovalFlowStepSchema = z.object({\n id: z.uuid(),\n order: z.number(),\n approverRole: z.string().trim().min(1).max(100).default(\"Approver\").optional(),\n approver: ApprovalEmployeeSchema,\n actualApprover: ApprovalEmployeeSchema.optional(),\n result: ApprovalStepResult.default(\"NotAvailable\").optional(),\n resultDate: z.date().optional(),\n resultComment: z.string().trim().max(2000).optional(),\n});\n\nexport type ApprovalFlowStep = z.infer<typeof ApprovalFlowStepSchema>;\n","import z from \"zod\";\n\nexport const ApprovalRequestType = z.enum([\n \"Single\",\n \"Batch\"\n]);","import z from \"zod\";\nimport { ApprovalFlowSchema } from \"./ApprovalFlow\";\nimport { ApprovalFlowStepSchema } from \"./ApprovalFlowStep\";\nimport { ApprovalRequestType } from \"./ApprovalRequestType\";\nimport { ApprovalStatus } from \"./ApprovalStatus\";\nimport { ApprovalStepResult } from \"./ApprovalStepResult\";\nimport type { ApprovalFlow } from \"./ApprovalFlow\";\nimport type { ApprovalEmployee } from \"./ApprovalEmployee\";\n\nexport const ApprovalSchema = z.object({\n id: z.uuid(),\n number: z.string().trim().max(30).optional(),\n applicationName: z.string().trim().min(1).max(50),\n type: ApprovalRequestType.default(\"Single\").optional(),\n status: ApprovalStatus,\n emailBody: z.string().trim().min(1),\n created: z.date(),\n createdBy: z.custom<ApprovalEmployee>(),\n updated: z.date(),\n updatedBy: z.custom<ApprovalEmployee>(),\n approvalFlows: z.array(z.custom<ApprovalFlow>()).min(1),\n currentApprovers: z.array(z.custom<ApprovalEmployee>())\n});\n\nexport type Approval = z.infer<typeof ApprovalSchema>;\n\n// Create Approval\nexport const CreateApprovalSchema = ApprovalSchema.pick({\n id: true,\n number: true,\n applicationName: true,\n type: true,\n emailBody: true,\n approvalFlows: true,\n}).extend({\n approvalFlows: z.array(\n ApprovalFlowSchema.pick({\n approvalStage: true,\n batchSequence: true,\n stepApprovalOrder: true,\n steps: true,\n }).extend({\n steps: z.array(\n ApprovalFlowStepSchema.pick({\n approverRole: true,\n approver: true,\n })\n ),\n })\n ).min(1),\n});\n\nexport type CreateApproval = z.infer<typeof CreateApprovalSchema>;\n\n// Single Approval\nexport const ApproveApprovalSchema = z.object({\n id: z.uuid(),\n result: ApprovalStepResult,\n resultComment: z.string().trim().max(2000).optional(),\n emailBody: z.string().trim().min(1),\n});\n\nexport type ApproveApproval = z.infer<typeof ApproveApprovalSchema>;\n\n// Resubmit Approval\nexport const ResubmitApprovalSchema = ApprovalSchema.pick({\n id: true,\n approvalFlows: true,\n}).extend({\n approvalFlows: z.array(\n ApprovalFlowSchema.pick({\n approvalStage: true,\n batchSequence: true,\n stepApprovalOrder: true,\n steps: true,\n }).extend({\n steps: z.array(\n ApprovalFlowStepSchema.pick({\n approverRole: true,\n approver: true,\n })\n ),\n })\n ).min(1),\n});\n\nexport type ResubmitApproval = z.infer<typeof ResubmitApprovalSchema>;\n\n// Cancel Approval\nexport const CancelApprovalSchema = z.object({\n id: z.uuid(),\n comment: z.string().trim().min(1).max(2000),\n emailBody: z.string().trim().min(1),\n});\n\nexport type CancelApproval = z.infer<typeof CancelApprovalSchema>;\n\n// Withdraw Approval\nexport const WithdrawApprovalSchema = z.object({\n id: z.uuid(),\n comment: z.string().trim().min(1).max(2000),\n emailBody: z.string().trim().min(1),\n});\n\nexport type WithdrawApproval = z.infer<typeof WithdrawApprovalSchema>;\n"],"names":["EmailAttachmentSchema","z","object","appName","string","trim","min","max","subId","uuid","EmailSchema","subject","body","to","array","email","bcc","optional","cc","attachments","EmployeeCategoryGroup","enum","EmployeeStatus","EmployeeSchema","badgeId","category","categoryGroup","companyCode","contactPhone","departmentId","departmentDescription","emailString","employeeId","extensionNumber","firstName","gender","hiredDate","date","lastName","managerId","middleName","name","nameTitleCase","nfcSn","plantId","position","previousEmployeeIds","nullable","reHiredDate","recordNumber","number","status","supervisorId","terminationDate","terminationFutureDate","type","upperDepartmentId","jobCode","jobDescription","terminationReason","supervisorRecordNumber","DepartmentSchema","description","managerRecordNumber","treeLevel","location","salLocation","manager","StepApprovalOrder","ApprovalFlowSchema","id","approvalStage","batchSequence","approvalSequence","stepApprovalOrder","steps","custom","isActive","boolean","default","ApprovalEmployeeSchema","ApprovalFlowStepSchema","order","approverRole","approver","actualApprover","result","ApprovalStepResult","resultDate","resultComment","ApprovalRequestType","ApprovalSchema","applicationName","ApprovalStatus","emailBody","created","createdBy","updated","updatedBy","approvalFlows","currentApprovers","CreateApprovalSchema","pick","extend","ApproveApprovalSchema","ResubmitApprovalSchema","CancelApprovalSchema","comment","WithdrawApprovalSchema"],"mappings":";;;AAEO,MAAMA,wBAAwBC,WAAEC,OAAO;AAAA,EAC1CC,SAASF,WAAEG,OAAAA,EAASC,KAAAA,EAAOC,IAAI,CAAC,EAAEC,IAAI,GAAG;AAAA,EACzCC,OAAOP,WAAEQ,KAAAA;AACb,CAAC;ACFM,MAAMC,cAAcT,WAAEC,OAAO;AAAA,EAChCS,SAASV,WAAEG,OAAAA,EAASC,KAAAA,EAAOC,IAAI,CAAC,EAAEC,IAAI,EAAE;AAAA,EACxCK,MAAMX,WAAEG,OAAAA,EAASC,KAAAA,EAAOC,IAAI,CAAC;AAAA,EAC7BO,IAAIZ,WAAEa,MAAMb,WAAEc,OAAO,EAAET,IAAI,CAAC;AAAA,EAC5BU,KAAKf,WAAEa,MAAMb,WAAEc,MAAAA,CAAO,EAAEE,SAAAA;AAAAA,EACxBC,IAAIjB,WAAEa,MAAMb,WAAEc,MAAAA,CAAO,EAAEE,SAAAA;AAAAA,EACvBE,aAAalB,WAAEa,MAAMd,qBAAqB,EAAEiB,SAAAA;AAChD,CAAC;ACRM,MAAMG,wBAAwBnB,WAAEoB,KAAK,CACxC,OACA,MACA,IAAI,CACP;ACJM,MAAMC,iBAAiBrB,WAAEoB,KAAK,CACjC,UACA,cACA,kBAAkB,CACrB;ACFM,MAAME,iBAAiBtB,WAAEC,OAAO;AAAA,EACnCsB,SAASvB,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EACpBoB,UAAUxB,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EACrBqB,eAAeN;AAAAA,EACfO,aAAa1B,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EACxBuB,cAAc3B,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EACzBwB,cAAc5B,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EACzByB,uBAAuB7B,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EAClC0B,aAAa9B,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EACxB2B,YAAY/B,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EACvB4B,iBAAiBhC,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EAC5B6B,WAAWjC,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EACtB8B,QAAQlC,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EACnB+B,WAAWnC,WAAEoC,KAAAA;AAAAA,EACbC,UAAUrC,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EACrBkC,WAAWtC,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EACtBmC,YAAYvC,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EACvBoC,MAAMxC,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EACjBqC,eAAezC,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EAC1BsC,OAAO1C,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EAClBuC,SAAS3C,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EACpBwC,UAAU5C,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EACrByC,qBAAqB7C,WAAEG,OAAAA,EAASC,KAAAA,EAAO0C,SAAAA;AAAAA,EACvCC,aAAa/C,WAAEoC,KAAAA,EAAOU,SAAAA;AAAAA,EACtBE,cAAchD,WAAEiD,OAAAA;AAAAA,EAChBC,QAAQ7B;AAAAA,EACR8B,cAAcnD,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EACzBgD,iBAAiBpD,WAAEoC,KAAAA,EAAOU,SAAAA;AAAAA,EAC1BO,uBAAuBrD,WAAEoC,KAAAA,EAAOU,SAAAA;AAAAA,EAChCQ,MAAMtD,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EACjBmD,mBAAmBvD,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EAC9BoD,SAASxD,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EACpBqD,gBAAgBzD,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EAC3BsD,mBAAmB1D,WAAEG,OAAAA,EAASC,KAAAA,EAAO0C,SAAAA;AAAAA,EACrCa,wBAAwB3D,WAAEiD,OAAAA;AAC9B,CAAC;ACpCM,MAAMW,mBAAmB5D,WAAEC,OAAO;AAAA,EACrC2B,cAAc5B,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EACzByD,aAAa7D,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EACxBkC,WAAWtC,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EACtB0D,qBAAqB9D,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EAChC2D,WAAW/D,WAAEiD,OAAAA;AAAAA,EACbM,mBAAmBvD,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EAC9BsB,aAAa1B,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EACxB4D,UAAUhE,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EACrB6D,aAAajE,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EACxBuC,SAAS3C,WAAEG,OAAAA,EAASC,KAAAA;AAAAA,EACpB8D,SAAS5C;AACb,CAAC;ACbM,MAAM6C,oBAAoBnE,WAAEoB,KAAK,CACpC,UACA,YACA,WAAW,CACd;ACFM,MAAMgD,qBAAqBpE,EAAEC,OAAO;AAAA,EACvCoE,IAAIrE,EAAEQ,KAAAA;AAAAA,EACN8D,eAAetE,EAAEiD,OAAAA;AAAAA,EACjBsB,eAAevE,EAAEiD,OAAAA,EAASjC,SAAAA;AAAAA,EAC1BwD,kBAAkBxE,EAAEiD,OAAAA;AAAAA,EACpBwB,mBAAmBN;AAAAA,EACnBO,OAAO1E,EAAEa,MAAMb,EAAE2E,QAA0B;AAAA,EAC3CC,UAAU5E,EAAE6E,QAAAA,EAAUC,QAAQ,KAAK,EAAE9D,SAAAA;AACzC,CAAC;ACVM,MAAM+D,yBAAyB/E,EAAEC,OAAO;AAAA,EAC3C8B,YAAY/B,EAAEG,OAAAA,EAASC,KAAAA,EAAOC,IAAI,CAAC,EAAEC,IAAI,EAAE;AAAA,EAC3CkC,MAAMxC,EAAEG,OAAAA,EAASC,KAAAA,EAAOC,IAAI,CAAC,EAAEC,IAAI,EAAE;AAAA,EACrCQ,OAAOd,EAAEc,MAAAA,EAAQT,IAAI,CAAC,EAAEC,IAAI,GAAG;AACnC,CAAC;ACFM,MAAM0E,yBAAyBhF,EAAEC,OAAO;AAAA,EAC3CoE,IAAIrE,EAAEQ,KAAAA;AAAAA,EACNyE,OAAOjF,EAAEiD,OAAAA;AAAAA,EACTiC,cAAclF,EAAEG,OAAAA,EAASC,OAAOC,IAAI,CAAC,EAAEC,IAAI,GAAG,EAAEwE,QAAQ,UAAU,EAAE9D,SAAAA;AAAAA,EACpEmE,UAAUJ;AAAAA,EACVK,gBAAgBL,uBAAuB/D,SAAAA;AAAAA,EACvCqE,QAAQC,mBAAmBR,QAAQ,cAAc,EAAE9D,SAAAA;AAAAA,EACnDuE,YAAYvF,EAAEoC,KAAAA,EAAOpB,SAAAA;AAAAA,EACrBwE,eAAexF,EAAEG,OAAAA,EAASC,OAAOE,IAAI,GAAI,EAAEU,SAAAA;AAC/C,CAAC;ACXM,MAAMyE,sBAAsBzF,WAAEoB,KAAK,CACtC,UACA,OAAO,CACV;ACIM,MAAMsE,iBAAiB1F,WAAEC,OAAO;AAAA,EACnCoE,IAAIrE,WAAEQ,KAAAA;AAAAA,EACNyC,QAAQjD,WAAEG,SAASC,OAAOE,IAAI,EAAE,EAAEU,SAAAA;AAAAA,EAClC2E,iBAAiB3F,WAAEG,OAAAA,EAASC,KAAAA,EAAOC,IAAI,CAAC,EAAEC,IAAI,EAAE;AAAA,EAChDgD,MAAMmC,oBAAoBX,QAAQ,QAAQ,EAAE9D,SAAAA;AAAAA,EAC5CkC,QAAQ0C;AAAAA,EACRC,WAAW7F,WAAEG,OAAAA,EAASC,KAAAA,EAAOC,IAAI,CAAC;AAAA,EAClCyF,SAAS9F,WAAEoC,KAAAA;AAAAA,EACX2D,WAAW/F,WAAE2E,OAAAA;AAAAA,EACbqB,SAAShG,WAAEoC,KAAAA;AAAAA,EACX6D,WAAWjG,WAAE2E,OAAAA;AAAAA,EACbuB,eAAelG,WAAEa,MAAMb,WAAE2E,QAAsB,EAAEtE,IAAI,CAAC;AAAA,EACtD8F,kBAAkBnG,WAAEa,MAAMb,WAAE2E,QAA0B;AAC1D,CAAC;AAKM,MAAMyB,uBAAuBV,eAAeW,KAAK;AAAA,EACpDhC,IAAI;AAAA,EACJpB,QAAQ;AAAA,EACR0C,iBAAiB;AAAA,EACjBrC,MAAM;AAAA,EACNuC,WAAW;AAAA,EACXK,eAAe;AACnB,CAAC,EAAEI,OAAO;AAAA,EACNJ,eAAelG,WAAEa,MACbuD,mBAAmBiC,KAAK;AAAA,IACpB/B,eAAe;AAAA,IACfC,eAAe;AAAA,IACfE,mBAAmB;AAAA,IACnBC,OAAO;AAAA,EAAA,CACV,EAAE4B,OAAO;AAAA,IACN5B,OAAO1E,WAAEa,MACLmE,uBAAuBqB,KAAK;AAAA,MACxBnB,cAAc;AAAA,MACdC,UAAU;AAAA,IAAA,CACb,CACL;AAAA,EAAA,CACH,CACL,EAAE9E,IAAI,CAAC;AACX,CAAC;AAKM,MAAMkG,wBAAwBvG,WAAEC,OAAO;AAAA,EAC1CoE,IAAIrE,WAAEQ,KAAAA;AAAAA,EACN6E,QAAQC;AAAAA,EACRE,eAAexF,WAAEG,SAASC,OAAOE,IAAI,GAAI,EAAEU,SAAAA;AAAAA,EAC3C6E,WAAW7F,WAAEG,OAAAA,EAASC,KAAAA,EAAOC,IAAI,CAAC;AACtC,CAAC;AAKM,MAAMmG,yBAAyBd,eAAeW,KAAK;AAAA,EACtDhC,IAAI;AAAA,EACJ6B,eAAe;AACnB,CAAC,EAAEI,OAAO;AAAA,EACNJ,eAAelG,WAAEa,MACbuD,mBAAmBiC,KAAK;AAAA,IACpB/B,eAAe;AAAA,IACfC,eAAe;AAAA,IACfE,mBAAmB;AAAA,IACnBC,OAAO;AAAA,EAAA,CACV,EAAE4B,OAAO;AAAA,IACN5B,OAAO1E,WAAEa,MACLmE,uBAAuBqB,KAAK;AAAA,MACxBnB,cAAc;AAAA,MACdC,UAAU;AAAA,IAAA,CACb,CACL;AAAA,EAAA,CACH,CACL,EAAE9E,IAAI,CAAC;AACX,CAAC;AAKM,MAAMoG,uBAAuBzG,WAAEC,OAAO;AAAA,EACzCoE,IAAIrE,WAAEQ,KAAAA;AAAAA,EACNkG,SAAS1G,WAAEG,OAAAA,EAASC,KAAAA,EAAOC,IAAI,CAAC,EAAEC,IAAI,GAAI;AAAA,EAC1CuF,WAAW7F,WAAEG,OAAAA,EAASC,KAAAA,EAAOC,IAAI,CAAC;AACtC,CAAC;AAKM,MAAMsG,yBAAyB3G,WAAEC,OAAO;AAAA,EAC3CoE,IAAIrE,WAAEQ,KAAAA;AAAAA,EACNkG,SAAS1G,WAAEG,OAAAA,EAASC,KAAAA,EAAOC,IAAI,CAAC,EAAEC,IAAI,GAAI;AAAA,EAC1CuF,WAAW7F,WAAEG,OAAAA,EAASC,KAAAA,EAAOC,IAAI,CAAC;AACtC,CAAC;"}
|