@asaleh37/ui-base 1.2.14 → 1.2.16

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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/hooks/UseMobile.tsx","../src/redux/features/common/AppLayoutSlice.ts","../src/redux/features/common/LoadingMaskSlice.ts","../src/hooks/useLoadingMask.tsx","../src/hooks/useAxios.tsx","../src/redux/features/common/UserSessionSlice.ts","../src/locales/english/index.ts","../src/locales/index.ts","../src/locales/arabic/index.ts","../src/locales/i18n.ts","../src/hooks/UseConfirmationWindow.tsx","../src/hooks/UseSession.tsx","../src/hooks/UseWindow.tsx","../src/redux/features/common/CommonStoreSlice.ts","../src/hooks/useApiActions.ts","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/TemplateTextField.tsx","../src/components/templates/TransferList.tsx","../src/components/templates/visuals/charts/TemplateBarChart.tsx","../src/components/templates/visuals/charts/TemplateDataCard.tsx","../src/components/templates/visuals/charts/TemplateGauge.tsx","../src/components/templates/visuals/charts/TemplateLineChart.tsx","../src/components/templates/visuals/charts/TemplateLineProgress.tsx","../src/components/templates/visuals/charts/TemplatePieChart.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/CheckBox.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/ComboBox.tsx","../src/util/constants.ts","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/Datefield.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/DatetimeField.tsx","../node_modules/@mui/system/node_modules/@mui/utils/esm/formatMuiErrorMessage/formatMuiErrorMessage.js","../node_modules/prop-types/node_modules/react-is/index.js","../node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/react-is/cjs/react-is.production.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/@mui/system/node_modules/@mui/utils/esm/deepmerge/deepmerge.js","../node_modules/@mui/system/esm/createBreakpoints/createBreakpoints.js","../node_modules/@mui/system/esm/createTheme/shape.js","../node_modules/@mui/system/esm/responsivePropType/responsivePropType.js","../node_modules/@mui/system/esm/merge/merge.js","../node_modules/@mui/system/esm/breakpoints/breakpoints.js","../node_modules/@mui/system/esm/cssContainerQueries/cssContainerQueries.js","../node_modules/@mui/system/node_modules/@mui/utils/esm/capitalize/capitalize.js","../node_modules/@mui/system/esm/style/style.js","../node_modules/@mui/system/esm/spacing/spacing.js","../node_modules/@mui/system/esm/memoize/memoize.js","../node_modules/@mui/system/esm/compose/compose.js","../node_modules/@mui/system/esm/borders/borders.js","../node_modules/@mui/system/esm/cssGrid/cssGrid.js","../node_modules/@mui/system/esm/palette/palette.js","../node_modules/@mui/system/esm/sizing/sizing.js","../node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","../node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","../node_modules/@mui/system/esm/createTheme/applyStyles.js","../node_modules/@mui/system/esm/useThemeWithoutDefault/useThemeWithoutDefault.js","../node_modules/@mui/system/esm/useTheme/useTheme.js","../node_modules/@mui/system/esm/createTheme/createTheme.js","../node_modules/@mui/system/esm/createTheme/createSpacing.js","../node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js","../node_modules/@mui/system/node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","../node_modules/clsx/dist/clsx.mjs","../node_modules/@mui/system/node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","../node_modules/@mui/system/esm/Box/boxClasses.js","../node_modules/@mui/system/esm/Box/Box.js","../node_modules/@mui/system/esm/createBox/createBox.js","../node_modules/@mui/styled-engine/esm/index.js","../node_modules/@mui/system/node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","../src/util/AppUtils.ts","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/HtmlEditor.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/SystemLookupCombobox.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormElementField.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormAction.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormElementGroup.tsx","../src/components/templates/DataEntryTemplates/TemplateDataGrid/DataGridColumnsUtil.tsx","../src/components/templates/DataEntryTemplates/DataEntryUtil.ts","../src/components/templates/DataEntryTemplates/TemplateDataForm/TemplateForm.tsx","../src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridMultiRecordAction.tsx","../src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridTopBar.tsx","../src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridRecordAction.tsx","../src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid.tsx","../src/hooks/useLookupGridColumn.tsx","../src/components/common/ChangeOrgForm.tsx","../src/redux/features/common/SideBarSlice.ts","../src/layout/TopBar.tsx","../src/layout/DrawerHeader.tsx","../src/navigationItems/index.tsx","../src/navigationItems/Administration/index.tsx","../src/navigationItems/Administration/adminNavigationItems.tsx","../src/layout/NavigationTree.tsx","../src/layout/SideBar.tsx","../src/components/common/LayoutHandlers.tsx","../src/components/templates/visuals/WidgetViewer.tsx","../src/components/templates/visuals/DashboardViewer.tsx","../src/components/administration/admin/OrganizationApplicationModuleGrid.tsx","../src/components/administration/admin/OrganizationUnitTypeGrid.tsx","../src/components/administration/admin/OrganizationUnitGrid.tsx","../src/components/administration/admin/OrganizationRankGrid.tsx","../src/components/administration/admin/OrgMemberRoleForm.tsx","../src/components/administration/admin/OrganizationMemberGrid.tsx","../src/components/administration/admin/SystemApplicationModuleGrid.tsx","../src/components/administration/admin/SystemApplicationAuthorityGrid.tsx","../src/components/administration/admin/RoleAuthoritiesForm.tsx","../src/components/administration/admin/SystemApplicationRoleGrid.tsx","../src/components/administration/dev/LookupGrid.tsx","../src/components/administration/dev/DataQueryParameterGrid.tsx","../src/components/administration/dev/ReportParameterGrid.tsx","../src/components/templates/report/ExcelReportViewer.tsx","../src/components/templates/report/ReportViewer.tsx","../src/components/administration/dev/ReportGrid.tsx","../src/components/administration/dev/MailRecipientGrid.tsx","../src/components/administration/dev/MailBodyGrid.tsx","../src/components/administration/dev/MailAttachmentGrid.tsx","../src/components/administration/dev/MailSenderConfigGrid.tsx","../src/components/administration/dev/WorkflowDocumentStatusGrid.tsx","../src/components/administration/dev/WorkflowDocumentActionMailGrid.tsx","../src/components/administration/dev/WorkflowDocumentActionGrid.tsx","../src/components/administration/dev/WidgetGrid.tsx","../src/components/administration/dev/DashboardWidgetGrid.tsx","../src/routes/index.ts","../src/components/common/Home.tsx","../src/routes/administration/index.ts","../src/routes/administration/adminRoutes.tsx","../src/components/administration/admin/OrganizationGrid.tsx","../src/components/administration/admin/OrganizationMemberRoleGrid.tsx","../src/components/administration/admin/PersonGrid.tsx","../src/components/administration/admin/SystemApplicationGrid.tsx","../src/components/administration/admin/SystemApplicationRoleAuthorityGrid.tsx","../src/routes/administration/devRoutes.tsx","../src/components/administration/dev/BluePrintGrid.tsx","../src/components/administration/dev/DataQueryGrid.tsx","../src/components/administration/dev/DatasourceConnectionGrid.tsx","../src/components/administration/dev/EntityParameterGrid.tsx","../src/components/administration/dev/MailTemplateGrid.tsx","../src/components/administration/dev/WorkflowDocumentGrid.tsx","../src/components/administration/dev/DashboardGrid.tsx","../src/components/templates/visuals/DashboardRouteView.tsx","../src/components/administration/dev/WorkflowDocumentMailLogGrid.tsx","../src/components/administration/dev/MailNotificationQueueGrid.tsx","../src/layout/RouteWrapper.tsx","../src/layout/MainContent.tsx","../src/layout/MobileDrawer.tsx","../src/components/common/LoadingMask.tsx","../src/components/common/Login.tsx","../src/layout/Layout.tsx","../src/redux/features/common/AppInfoSlice.ts","../src/redux/features/administration/AdministrationStoresMetaData.ts","../src/components/App.tsx","../src/components/BaseApp.tsx","../src/components/index.ts","../src/index.ts"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { useEffect, useState } from \"react\";\r\n\r\nexport const useIsMobile = (breakpoint = 768) => {\r\n const [isMobile, setIsMobile] = useState(window.innerWidth < breakpoint);\r\n\r\n useEffect(() => {\r\n const handleResize = () => setIsMobile(window.innerWidth < breakpoint);\r\n window.addEventListener(\"resize\", handleResize);\r\n return () => window.removeEventListener(\"resize\", handleResize);\r\n }, [breakpoint]);\r\n\r\n return isMobile;\r\n};\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\n\r\nexport const DRAWER_WIDTH = 350;\r\n\r\ninterface AppLayoutState {\r\n themeMode: \"light\" | \"dark\" | string;\r\n appDirection: \"ltr\" | \"rtl\";\r\n}\r\n\r\nconst initialState: AppLayoutState = {\r\n themeMode: localStorage.getItem(\"themeMode\") || \"light\",\r\n appDirection: localStorage.getItem(\"language\") == \"ar\" ? \"rtl\" : \"ltr\",\r\n};\r\n\r\nconst AppLayoutSlice = createSlice({\r\n name: \"AppLayout\",\r\n initialState,\r\n reducers: {\r\n setThemeMode: (state, action) => {\r\n state.themeMode = action.payload;\r\n },\r\n setAppDirection: (state, action) => {\r\n state.appDirection = action.payload;\r\n },\r\n },\r\n});\r\n\r\nexport const AppLayoutActions = AppLayoutSlice.actions;\r\nexport default AppLayoutSlice.reducer;\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\n\r\ninterface LoadingMaskStateValue {\r\n value: { isOpened: boolean; message?: string | null };\r\n}\r\n\r\nconst initialState: LoadingMaskStateValue = {\r\n value: { isOpened: false, message: null },\r\n};\r\n\r\nconst loadingMaskSlice = createSlice({\r\n name: \"loadingMask\",\r\n initialState,\r\n reducers: {\r\n showLoadingMask: (\r\n state,\r\n action: PayloadAction<string | null | undefined>\r\n ) => {\r\n state.value.isOpened = true;\r\n state.value.message = action.payload;\r\n },\r\n hideLoadingMask: (state) => {\r\n state.value.isOpened = false;\r\n state.value.message = null;\r\n },\r\n },\r\n});\r\n\r\nexport const { showLoadingMask, hideLoadingMask } = loadingMaskSlice.actions;\r\nexport default loadingMaskSlice.reducer;\r\n","import { useDispatch } from \"react-redux\";\r\nimport { hideLoadingMask, showLoadingMask } from \"../redux/features/common/LoadingMaskSlice\";\r\n\r\n\r\nconst useLoadingMask = () => {\r\n const dispatch = useDispatch();\r\n const show = (message?: string) => {\r\n dispatch(showLoadingMask(message));\r\n };\r\n const hide = () => {\r\n dispatch(hideLoadingMask());\r\n };\r\n return { show, hide };\r\n};\r\n\r\nexport default useLoadingMask;\r\n","import { toast } from \"react-toastify\";\r\nimport axios from \"axios\";\r\nimport { useSelector } from \"react-redux\";\r\nimport useLoadingMask from \"./useLoadingMask\";\r\n\r\nexport interface APIRequest {\r\n endPointURI: string;\r\n parameters?: any;\r\n data?: any;\r\n showMask?: Boolean;\r\n loadingMessage?: string;\r\n successCallBkFn?: Function;\r\n failureCallBkFn?: Function;\r\n}\r\n\r\nconst useAxios = () => {\r\n const mask = useLoadingMask();\r\n const apiBaseUrl = useSelector(\r\n (state: any) => state.AppInfo.value.apiBaseUrl\r\n );\r\n const axiosInstance = axios.create({\r\n baseURL: apiBaseUrl,\r\n timeout: 600000,\r\n withCredentials: true,\r\n });\r\n\r\n axiosInstance.defaults.withCredentials = true;\r\n axiosInstance.interceptors.response.use(\r\n (response: any) => {\r\n return response;\r\n },\r\n (error: any) => {\r\n if (\r\n error\r\n ? error.response\r\n ? error.response.status\r\n ? error.response.status === 401\r\n : false\r\n : false\r\n : false\r\n ) {\r\n toast.error(\"your session is now expired, you need to login again\", {\r\n autoClose: false,\r\n });\r\n } else if (\r\n error\r\n ? error.response\r\n ? error.response.status\r\n ? error.response.status === 403\r\n : false\r\n : false\r\n : false\r\n ) {\r\n toast.error(\"you aren't authorized to process this request\");\r\n } else if (\r\n error\r\n ? error.response\r\n ? error.response.status\r\n ? error.response.status === 500\r\n : false\r\n : false\r\n : false\r\n ) {\r\n if (error.response.data instanceof Blob) {\r\n const blob = error.response.data;\r\n blob.text().then((text) => {\r\n toast.error(text);\r\n });\r\n } else {\r\n toast.error(error.response.data);\r\n }\r\n } else {\r\n toast.error(\r\n \"failed to communicate with the server ... try again later\"\r\n );\r\n }\r\n return \"ERROR\";\r\n }\r\n );\r\n const handleGetRequest = async (\r\n props: APIRequest = { endPointURI: \"\", parameters: {} }\r\n ) => {\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.show(props.loadingMessage);\r\n }\r\n const response: any = await axiosInstance.get(props.endPointURI, {\r\n params: { ...props.parameters },\r\n withCredentials: true,\r\n // withCredentials: true,\r\n });\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.hide();\r\n }\r\n if (response !== \"ERROR\") {\r\n if (\r\n props.successCallBkFn !== undefined &&\r\n props.successCallBkFn != null\r\n ) {\r\n props.successCallBkFn(response);\r\n }\r\n return response;\r\n } else {\r\n if (\r\n props.failureCallBkFn !== undefined &&\r\n props.failureCallBkFn != null\r\n ) {\r\n props.failureCallBkFn(response);\r\n }\r\n return \"ERROR\";\r\n }\r\n };\r\n\r\n const HandleDownloadHTTPPostPDF = async (\r\n props: APIRequest = { endPointURI: \"\", parameters: {}, data: {} }\r\n ) => {\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.show(props.loadingMessage);\r\n }\r\n const response: any = await axiosInstance.post(\r\n props.endPointURI,\r\n props.data,\r\n {\r\n responseType: \"blob\",\r\n }\r\n );\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.hide();\r\n }\r\n if (response !== \"ERROR\") {\r\n if (\r\n props.successCallBkFn !== undefined &&\r\n props.successCallBkFn != null\r\n ) {\r\n props.successCallBkFn(response);\r\n }\r\n return response;\r\n } else {\r\n if (\r\n props.failureCallBkFn !== undefined &&\r\n props.failureCallBkFn != null\r\n ) {\r\n props.failureCallBkFn(response);\r\n }\r\n return \"ERROR\";\r\n }\r\n };\r\n const handlePostRequest = async (\r\n props: APIRequest = { endPointURI: \"\", parameters: {}, data: {} }\r\n ) => {\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.show(props.loadingMessage);\r\n }\r\n let response: any = await axiosInstance.post(\r\n props.endPointURI,\r\n props.data,\r\n {\r\n params: props.parameters,\r\n }\r\n );\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.hide();\r\n }\r\n if (response !== \"ERROR\") {\r\n if (\r\n props.successCallBkFn !== undefined &&\r\n props.successCallBkFn != null\r\n ) {\r\n props.successCallBkFn(response);\r\n }\r\n return response;\r\n } else {\r\n if (\r\n props.failureCallBkFn !== undefined &&\r\n props.failureCallBkFn != null\r\n ) {\r\n props.failureCallBkFn(response);\r\n }\r\n return \"ERROR\";\r\n }\r\n };\r\n const handleDeleteRequest = async (\r\n props: APIRequest = { endPointURI: \"\", parameters: {} }\r\n ) => {\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.show(props.loadingMessage);\r\n }\r\n let response: any = await axiosInstance.delete(props.endPointURI, {\r\n params: {\r\n ...props.parameters,\r\n },\r\n });\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.hide();\r\n }\r\n if (response !== \"ERROR\") {\r\n if (\r\n props.successCallBkFn !== undefined &&\r\n props.successCallBkFn != null\r\n ) {\r\n props.successCallBkFn(response);\r\n }\r\n return response;\r\n } else {\r\n if (\r\n props.failureCallBkFn !== undefined &&\r\n props.failureCallBkFn != null\r\n ) {\r\n props.failureCallBkFn(response);\r\n }\r\n return \"ERROR\";\r\n }\r\n };\r\n return {\r\n handleGetRequest,\r\n handlePostRequest,\r\n handleDeleteRequest,\r\n HandleDownloadHTTPPostPDF,\r\n };\r\n};\r\n\r\nexport default useAxios;\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\n\r\nexport interface OrganizationProps {\r\n organizationCode?: string;\r\n organizationName?: string;\r\n}\r\n\r\nexport interface UserSessionProps {\r\n value: {\r\n isAuthenticated: boolean | null;\r\n employeeNumber?: string;\r\n employeeName?: string;\r\n mobileNumber?: string;\r\n email?: string;\r\n isEmployeeArchived?: string;\r\n organizationCode?: string;\r\n organizationUnitId?: string;\r\n organizationUnitArName?: string;\r\n organizationUnitEnName?: string;\r\n organizationRankId?: string;\r\n rankCode?: string;\r\n rankName?: string;\r\n rankOrder?: string;\r\n currentOrganization?: any;\r\n userOrganizations?: Array<OrganizationProps>;\r\n authorities: Array<{ authority: string }>;\r\n };\r\n}\r\n\r\nconst initialState: UserSessionProps = {\r\n value: {\r\n isAuthenticated: null,\r\n authorities: [],\r\n },\r\n};\r\n\r\nconst UserSessionSlice = createSlice({\r\n name: \"UserSession\",\r\n initialState,\r\n reducers: {\r\n setAuthenticated: (state, action) => {\r\n state.value = action.payload;\r\n },\r\n setUnAuthenticated: (state) => {\r\n state.value = {\r\n isAuthenticated: false,\r\n authorities: [],\r\n };\r\n },\r\n },\r\n});\r\n\r\nexport const UserSessionActions = UserSessionSlice.actions;\r\nexport default UserSessionSlice.reducer;\r\n","import common from \"./common.json\";\r\nimport AdminLocalsEn from \"./adminLocalsEn.json\";\r\nimport devLocalsEn from \"./devLocalsEn.json\";\r\n\r\nexport const ENGLISH_TRANS = {\r\n ...common,\r\n ...AdminLocalsEn,\r\n ...devLocalsEn,\r\n};\r\n","import { ARABIC_TRANS } from \"./arabic\";\r\nimport { ENGLISH_TRANS } from \"./english\";\r\n\r\nconst resources = {\r\n en: { translation: ENGLISH_TRANS },\r\n ar: { translation: ARABIC_TRANS },\r\n};\r\n\r\nexport default resources;\r\n","import common from \"./common.json\";\r\nimport adminLocalsAr from \"./adminLocalsAr.json\";\r\nimport devLocalAr from \"./devLocalsAr.json\";\r\n\r\nexport const ARABIC_TRANS = {\r\n ...common,\r\n ...adminLocalsAr,\r\n ...devLocalAr,\r\n};\r\n","import i18n from \"i18next\";\r\nimport { initReactI18next } from \"react-i18next\";\r\nimport resources from \".\";\r\ni18n.use(initReactI18next).init({\r\n resources: resources, // Where we're gonna put translations' files\r\n lng: localStorage.getItem(\"language\") || \"en\", // Set the initial language of the App\r\n fallbackLng: \"en\",\r\n});\r\n\r\nexport const changeLanguage = (lng: string) => {\r\n i18n.changeLanguage(lng);\r\n localStorage.setItem(\"language\", lng); // Persist user choice\r\n};\r\n\r\nexport default i18n;\r\n","import {\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n} from \"@mui/material\";\r\nimport { useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ninterface ConfirmationWindowProps {\r\n title: string;\r\n body: string;\r\n onConfirmationCallBk: () => void;\r\n}\r\n\r\nexport const useConfirmationWindow = (props: ConfirmationWindowProps) => {\r\n const [open, setOpen] = useState<boolean>(false);\r\n const { t } = useTranslation();\r\n const ConfirmationWindow: React.FC = () => {\r\n return (\r\n <Dialog open={open}>\r\n <DialogTitle>{props.title}</DialogTitle>\r\n <DialogContent>\r\n <DialogContentText>{props.body}</DialogContentText>\r\n </DialogContent>\r\n <DialogActions>\r\n <Button\r\n variant=\"contained\"\r\n color=\"primary\"\r\n onClick={() => {\r\n setOpen(false);\r\n }}\r\n >\r\n {t(\"NO_LABEL\")}\r\n </Button>\r\n <Button\r\n variant=\"contained\"\r\n color=\"error\"\r\n onClick={() => {\r\n props.onConfirmationCallBk();\r\n setOpen(false);\r\n }}\r\n autoFocus\r\n >\r\n {t(\"YES_LABEL\")}\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n );\r\n };\r\n return { ConfirmationWindow, open, setOpen };\r\n};\r\n","import { useSelector } from \"react-redux\";\r\n\r\nconst useSession = () => {\r\n const UserSession = useSelector((state: any) => state.UserSession);\r\n const UserInfo = UserSession.value;\r\n const isUserAuthorized = (authorityCode: string): boolean => {\r\n if (UserSession?.value?.authorities) {\r\n for (let grantedAuthority of UserSession.value.authorities) {\r\n if (\r\n grantedAuthority?.authority === \"DEVELOPMENT_ADMIN\" ||\r\n grantedAuthority?.authority === authorityCode\r\n ) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n return { UserSession, isUserAuthorized, UserInfo };\r\n};\r\n\r\nexport default useSession;\r\n","import { useEffect, useState } from \"react\";\r\nimport {\r\n AppBar,\r\n Box,\r\n IconButton,\r\n Modal,\r\n Paper,\r\n Toolbar,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\n\r\nexport interface TemplateWindowProp {\r\n height?: any;\r\n width?: any;\r\n minWidth?: any;\r\n minHeight?: any;\r\n windowIcon?: IconProp;\r\n windowTitle?: string;\r\n onCloseCallBack?: any;\r\n}\r\n\r\ninterface WindowProps {\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport const useWindow = (props: TemplateWindowProp) => {\r\n const [windowState, setWindowState] = useState(false);\r\n\r\n const Window: React.FC<WindowProps> = (windowProps: WindowProps) => {\r\n return (\r\n <Modal\r\n open={windowState}\r\n sx={{ zIndex: (theme) => theme.zIndex.drawer }}\r\n onClose={() => {\r\n if (!windowState && props?.onCloseCallBack) {\r\n props.onCloseCallBack();\r\n }\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n maxHeight: \"90%\",\r\n transform: \"translate(-50%, -50%)\",\r\n height: props?.height || \"80%\",\r\n width: props?.width || \"90%\",\r\n minWidth: props.minWidth || 400,\r\n minHeight: props.minHeight || 200,\r\n overflow: \"hidden\",\r\n bgcolor: \"modalBackground.main\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-start\",\r\n }}\r\n >\r\n <AppBar position=\"static\">\r\n <Toolbar variant=\"dense\">\r\n <FontAwesomeIcon\r\n icon={props?.windowIcon || \"window-maximize\"}\r\n style={{ marginRight: 5 }}\r\n />\r\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\">\r\n {props?.windowTitle || \"window\"}\r\n </Typography>\r\n <div style={{ flexGrow: 1 }}></div>\r\n <IconButton\r\n onClick={() => {\r\n setWindowState(false);\r\n if (\r\n props.onCloseCallBack != undefined &&\r\n props.onCloseCallBack != null\r\n ) {\r\n props.onCloseCallBack();\r\n }\r\n }}\r\n color=\"secondary\"\r\n >\r\n <FontAwesomeIcon icon=\"xmark-square\" />\r\n </IconButton>\r\n </Toolbar>\r\n </AppBar>\r\n <Paper\r\n sx={{\r\n // flexGrow: 1,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n padding: 1,\r\n // justifyContent: \"center\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n {windowProps?.children}\r\n </Paper>\r\n </Box>\r\n </Modal>\r\n );\r\n };\r\n return { windowState, setWindowState, Window };\r\n};\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\n\r\nexport type CommonStores = {\r\n [key: string]: StoreMetaData;\r\n};\r\n\r\nexport interface CommonStoresInterface {\r\n stores: { [key: string]: StoreMetaData };\r\n storeKeys: Array<String>;\r\n}\r\n\r\ninterface setStoreDataProps {\r\n storeKey: string;\r\n data: Array<any>;\r\n}\r\n\r\nexport interface StoreMetaData {\r\n url: string;\r\n data: Array<any>;\r\n autoLoad: boolean;\r\n authority?: string;\r\n}\r\n\r\nexport const commonStoresInitialState: CommonStoresInterface = {\r\n stores: {},\r\n storeKeys: [],\r\n};\r\n\r\nconst commonStoreSlice = createSlice({\r\n name: \"loadingMask\",\r\n initialState: commonStoresInitialState,\r\n reducers: {\r\n setStoresMetaData: (state, action) => {\r\n state.stores = action.payload;\r\n state.storeKeys = Object.keys(action.payload);\r\n },\r\n setStoreData: (state, action: PayloadAction<setStoreDataProps>) => {\r\n state.stores[action.payload.storeKey].data = action.payload.data;\r\n },\r\n },\r\n});\r\n\r\nexport const { setStoreData, setStoresMetaData } = commonStoreSlice.actions;\r\nexport default commonStoreSlice.reducer;\r\n","import { useDispatch, useSelector } from \"react-redux\";\r\nimport useSession from \"./UseSession\";\r\nimport useAxios from \"./useAxios\";\r\nimport { setStoreData } from \"../redux/features/common/CommonStoreSlice\";\r\n\r\nexport type ApiActionsProps = {\r\n findAll?: string;\r\n commonStoreKey?: string;\r\n setData?: any;\r\n findById?: string;\r\n findByIdParamName?: string;\r\n save?: string;\r\n deleteById?: string;\r\n deleteByIdParamName?: string;\r\n};\r\n\r\nexport type ApiActions = {\r\n reloadData: (params?: any) => Promise<void>;\r\n saveRecord: (record: any) => Promise<any | null>;\r\n loadRecordById: (recordId: any) => Promise<any>;\r\n deleteRecordById: (recordId: any) => Promise<boolean>;\r\n};\r\n\r\nconst useApiActions: (apiActionsProps: ApiActionsProps) => ApiActions = (\r\n apiActionsProps: ApiActionsProps\r\n) => {\r\n const CommonStores = useSelector((state: any) => state.commonStores.stores);\r\n const dispatch = useDispatch();\r\n const session = useSession();\r\n const { handleGetRequest, handlePostRequest, handleDeleteRequest } =\r\n useAxios();\r\n const reloadData = async (params?: any) => {\r\n if (apiActionsProps?.commonStoreKey) {\r\n const storeKeys = Object.keys(CommonStores);\r\n for (const storeKey of storeKeys) {\r\n if (storeKey === apiActionsProps.commonStoreKey) {\r\n if (\r\n (CommonStores[storeKey]?.authority === undefined ||\r\n CommonStores[storeKey]?.authority === null ||\r\n session.isUserAuthorized(CommonStores[storeKey]?.authority)) &&\r\n CommonStores[storeKey]?.url != \"\"\r\n ) {\r\n await handleGetRequest({\r\n endPointURI: CommonStores[storeKey].url,\r\n showMask: false,\r\n successCallBkFn: (response: any) => {\r\n dispatch(setStoreData({ storeKey, data: response.data }));\r\n apiActionsProps.setData(response.data);\r\n },\r\n failureCallBkFn: () => {\r\n dispatch(setStoreData({ storeKey, data: [] }));\r\n apiActionsProps.setData([]);\r\n },\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n } else if (apiActionsProps?.findAll) {\r\n await handleGetRequest({\r\n endPointURI: apiActionsProps.findAll,\r\n showMask: true,\r\n parameters: params || {},\r\n successCallBkFn: (response: any) => {\r\n apiActionsProps.setData(response.data);\r\n },\r\n });\r\n }\r\n };\r\n const saveRecord = async (record: any) => {\r\n let savedRecord = null;\r\n if (apiActionsProps?.save) {\r\n await handlePostRequest({\r\n endPointURI: apiActionsProps.save,\r\n data: record,\r\n showMask: true,\r\n successCallBkFn: (response: any) => {\r\n savedRecord = response.data;\r\n },\r\n });\r\n }\r\n return savedRecord;\r\n };\r\n const loadRecordById = async (recordId: any) => {\r\n let record: any = null;\r\n if (apiActionsProps?.findById) {\r\n const parameters: any = {};\r\n const keyParameterName = apiActionsProps?.findByIdParamName || \"id\";\r\n parameters[keyParameterName] = recordId;\r\n await handleGetRequest({\r\n endPointURI: apiActionsProps.findById,\r\n showMask: true,\r\n parameters,\r\n successCallBkFn: (response: any) => {\r\n record = response.data;\r\n },\r\n });\r\n }\r\n return record;\r\n };\r\n const deleteRecordById = async (recordId: any) => {\r\n let result = true;\r\n if (apiActionsProps?.deleteById) {\r\n const parameters: any = {};\r\n const keyParameterName = apiActionsProps?.deleteByIdParamName || \"id\";\r\n parameters[keyParameterName] = recordId;\r\n await handleDeleteRequest({\r\n endPointURI: apiActionsProps.deleteById,\r\n showMask: true,\r\n parameters,\r\n successCallBkFn: () => {\r\n result = true;\r\n },\r\n failureCallBkFn: () => {\r\n result = false;\r\n },\r\n });\r\n }\r\n return result;\r\n };\r\n return { reloadData, loadRecordById, saveRecord, deleteRecordById };\r\n};\r\n\r\nexport default useApiActions;\r\n","import { TextField, TextFieldProps } from \"@mui/material\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst TemplateTextField: React.FC<Omit<TextFieldProps, \"outlined\">> = (\r\n props\r\n) => {\r\n const { t } = useTranslation();\r\n return (\r\n <TextField\r\n {...props}\r\n slotProps={{ inputLabel: { shrink: true } }}\r\n label={<>{props?.label ? t(props.label) : \"\"}</>}\r\n />\r\n );\r\n};\r\n\r\nexport default TemplateTextField;\r\n","import * as React from \"react\";\r\nimport List from \"@mui/material/List\";\r\nimport Card from \"@mui/material/Card\";\r\nimport CardHeader from \"@mui/material/CardHeader\";\r\nimport ListItemText from \"@mui/material/ListItemText\";\r\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\r\nimport Checkbox from \"@mui/material/Checkbox\";\r\nimport Button from \"@mui/material/Button\";\r\nimport Divider from \"@mui/material/Divider\";\r\nimport { Box, Grid2, ListItemButton } from \"@mui/material\";\r\nimport TemplateTextField from \"./DataEntryTemplates/TemplateDataForm/FormFields/TemplateTextField\";\r\n\r\nfunction not(a, b) {\r\n return a.filter((value) => b.indexOf(value) === -1);\r\n}\r\n\r\nfunction intersection(a, b) {\r\n return a.filter((value) => b.indexOf(value) !== -1);\r\n}\r\n\r\nfunction union(a, b) {\r\n return [...a, ...not(b, a)];\r\n}\r\n\r\nexport type TransferListProps = {\r\n valueField: string;\r\n displayField: string;\r\n options: Array<any>;\r\n selectedOptions: Array<any>;\r\n setSelection: any;\r\n};\r\n\r\nconst TransferList: React.FC<TransferListProps> = ({\r\n valueField = \"id\",\r\n displayField = \"name\",\r\n options = [],\r\n selectedOptions = [],\r\n setSelection,\r\n}) => {\r\n const [checked, setChecked] = React.useState([]);\r\n const [left, setLeft] = React.useState<Array<any>>([]);\r\n const [right, setRight] = React.useState<Array<any>>([]);\r\n const [leftFilterValue, setLeftFilterValue] = React.useState<string>(\"\");\r\n const [rightFilterValue, setRightFilterValue] = React.useState<string>(\"\");\r\n\r\n const leftChecked = intersection(checked, left);\r\n const rightChecked = intersection(checked, right);\r\n\r\n React.useEffect(() => {\r\n if (options) {\r\n setLeft([...options]);\r\n }\r\n }, [options]);\r\n React.useEffect(() => {\r\n if (selectedOptions) {\r\n setRight([...selectedOptions]);\r\n }\r\n }, [selectedOptions]);\r\n\r\n const handleToggle = (value) => () => {\r\n const currentIndex = checked.indexOf(value);\r\n const newChecked = [...checked];\r\n\r\n if (currentIndex === -1) {\r\n newChecked.push(value);\r\n } else {\r\n newChecked.splice(currentIndex, 1);\r\n }\r\n\r\n setChecked(newChecked);\r\n };\r\n\r\n const numberOfChecked = (items) => intersection(checked, items).length;\r\n\r\n const handleToggleAll = (items) => () => {\r\n if (numberOfChecked(items) === items.length) {\r\n setChecked(not(checked, items));\r\n } else {\r\n setChecked(union(checked, items));\r\n }\r\n };\r\n\r\n const handleCheckedRight = () => {\r\n setRight((oldState) => {\r\n let newState = right.concat(leftChecked);\r\n setSelection(newState);\r\n return newState;\r\n });\r\n setLeft(not(left, leftChecked));\r\n setChecked(not(checked, leftChecked));\r\n };\r\n\r\n const handleCheckedLeft = () => {\r\n setLeft(left.concat(rightChecked));\r\n setRight((oldState) => {\r\n let newState = not(right, rightChecked);\r\n setSelection(newState);\r\n return newState;\r\n });\r\n setChecked(not(checked, rightChecked));\r\n };\r\n\r\n const customList = (\r\n title: string,\r\n unfilteredItems: Array<any>,\r\n side: \"left\" | \"right\"\r\n ) => { \r\n const items = unfilteredItems.filter((option: any) => {\r\n \r\n if (option[displayField]) {\r\n const value: string = option[displayField];\r\n if (\r\n side === \"left\" &&\r\n value\r\n .toLocaleLowerCase()\r\n .includes(leftFilterValue.toLocaleLowerCase())\r\n ) {\r\n return true;\r\n } else if (\r\n side === \"right\" &&\r\n value\r\n .toLocaleLowerCase()\r\n .includes(rightFilterValue.toLocaleLowerCase())\r\n ) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n });\r\n return (\r\n <Card sx={{ height: \"100%\" }}>\r\n <CardHeader\r\n sx={{ px: 2, py: 1 }}\r\n avatar={\r\n <Checkbox\r\n onClick={handleToggleAll(items)}\r\n checked={\r\n numberOfChecked(items) === items.length && items.length !== 0\r\n }\r\n indeterminate={\r\n numberOfChecked(items) !== items.length &&\r\n numberOfChecked(items) !== 0\r\n }\r\n disabled={items.length === 0}\r\n inputProps={{\r\n \"aria-label\": \"all items selected\",\r\n }}\r\n />\r\n }\r\n title={title}\r\n subheader={`${numberOfChecked(unfilteredItems)} / ${\r\n unfilteredItems.length\r\n } Selected`}\r\n />\r\n <Box sx={{ width: \"100%\", padding: 1 }}>\r\n <TemplateTextField\r\n fullWidth\r\n label=\"search\"\r\n value={side === \"left\" ? leftFilterValue : rightFilterValue}\r\n onChange={(event) => {\r\n if (side === \"left\") {\r\n setLeftFilterValue(event.target.value);\r\n } else {\r\n setRightFilterValue(event.target.value);\r\n }\r\n }}\r\n />\r\n </Box>\r\n <Divider />\r\n <List\r\n sx={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n bgcolor: \"secondary\",\r\n overflow: \"auto\",\r\n }}\r\n dense\r\n component=\"div\"\r\n role=\"list\"\r\n >\r\n {items.map((value) => {\r\n const labelId = `transfer-list-all-item-${value[valueField]}-label`;\r\n\r\n return (\r\n <ListItemButton\r\n key={value[valueField]}\r\n role=\"listitem\"\r\n onClick={handleToggle(value)}\r\n sx={{ cursor: \"pointer\" }}\r\n >\r\n <ListItemIcon>\r\n <Checkbox\r\n checked={checked.indexOf(value) !== -1}\r\n tabIndex={-1}\r\n disableRipple\r\n />\r\n </ListItemIcon>\r\n <ListItemText\r\n id={value[valueField]}\r\n primary={value[displayField]}\r\n />\r\n </ListItemButton>\r\n );\r\n })}\r\n </List>\r\n </Card>\r\n );\r\n };\r\n return (\r\n <Grid2\r\n container\r\n spacing={2}\r\n sx={{\r\n flexGrow: 1,\r\n overflow: \"auto\",\r\n margin: 1,\r\n display: \"flex\",\r\n width: \"100%\",\r\n }}\r\n justifyContent=\"center\"\r\n alignItems=\"center\"\r\n >\r\n <Grid2 sx={{ height: \"100%\", flex: 1 }}>\r\n {customList(\"Available Items\", left, \"left\")}\r\n </Grid2>\r\n <Grid2>\r\n <Grid2 container direction=\"column\" alignItems=\"center\">\r\n <Button\r\n sx={{ my: 0.5 }}\r\n variant=\"outlined\"\r\n size=\"small\"\r\n onClick={handleCheckedRight}\r\n disabled={leftChecked.length === 0}\r\n aria-label=\"move selected right\"\r\n >\r\n &gt;\r\n </Button>\r\n <Button\r\n sx={{ my: 0.5 }}\r\n variant=\"outlined\"\r\n size=\"small\"\r\n onClick={handleCheckedLeft}\r\n disabled={rightChecked.length === 0}\r\n aria-label=\"move selected left\"\r\n >\r\n &lt;\r\n </Button>\r\n </Grid2>\r\n </Grid2>\r\n <Grid2 sx={{ height: \"100%\", flex: 1 }}>\r\n {customList(\"Currently Selected\", right, \"right\")}\r\n </Grid2>\r\n </Grid2>\r\n );\r\n};\r\n\r\nexport default TransferList;\r\n","import { BarChart } from \"@mui/x-charts\";\r\nimport { WidgetProps } from \"../DashboardViewer\";\r\n\r\n\r\nconst TemplateBarChart: React.FC<WidgetProps> = (props) => {\r\n return (\r\n <BarChart\r\n dataset={props.data}\r\n xAxis={[\r\n {\r\n dataKey: props.valueField,\r\n scaleType: \"band\",\r\n label: props.valueLabel,\r\n },\r\n ]}\r\n series={props.labelField?.split(\",\").map((labelField) => {\r\n return { dataKey: labelField, label: labelField };\r\n })}\r\n />\r\n );\r\n};\r\n\r\nexport default TemplateBarChart;\r\n","import { Box, Paper, Typography } from \"@mui/material\";\r\nimport { SingleRecordWidgetProps } from \"../DashboardViewer\";\r\n\r\n\r\nconst TemplateDataCard: React.FC<SingleRecordWidgetProps> = (props: any) => {\r\n return (\r\n <Paper\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n height: 150,\r\n padding: 1,\r\n flexGrow: 1,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n width: \"100%\",\r\n justifyContent: \"space-evenly\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <div>{props.record[props.valueField]}</div>\r\n </Box>\r\n <Typography sx={{ fontSize: 16, fontWeight: \"bold\" }}>\r\n {props.record[props.labelField]}\r\n </Typography>\r\n </Paper>\r\n );\r\n};\r\n\r\nexport default TemplateDataCard;\r\n","import { Gauge } from \"@mui/x-charts\";\r\nimport { SingleRecordWidgetProps } from \"../DashboardViewer\";\r\nimport { Typography } from \"@mui/material\";\r\n\r\nconst TemplateGauge: React.FC<SingleRecordWidgetProps> = (props: any) => {\r\n return (\r\n <>\r\n <Typography sx={{ fontSize: 16, fontWeight: \"bold\" }}>\r\n {props.record[props.labelField]}\r\n </Typography>\r\n <Gauge\r\n width={200}\r\n height={200}\r\n value={props.record[props.valueField]}\r\n valueMax={props.total}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default TemplateGauge;\r\n","import { LineChart } from \"@mui/x-charts\";\r\nimport { WidgetProps } from \"../DashboardViewer\";\r\n\r\nconst TemplateLineChart: React.FC<WidgetProps> = (props) => {\r\n return (\r\n <LineChart\r\n dataset={props.data}\r\n xAxis={[\r\n {\r\n dataKey: props.valueField,\r\n scaleType: \"band\",\r\n label: props.valueLabel,\r\n },\r\n ]}\r\n series={props.labelField?.split(\",\").map((labelField) => {\r\n return { dataKey: labelField, label: labelField };\r\n })}\r\n />\r\n );\r\n};\r\n\r\nexport default TemplateLineChart;\r\n","import * as React from \"react\";\r\nimport LinearProgress, {\r\n LinearProgressProps,\r\n} from \"@mui/material/LinearProgress\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport Box from \"@mui/material/Box\";\r\nimport { SingleRecordWidgetProps } from \"../DashboardViewer\";\r\n\r\nfunction LinearProgressWithLabel(\r\n props: LinearProgressProps & { value: number }\r\n) {\r\n return (\r\n <Box sx={{ display: \"flex\", alignItems: \"center\" }}>\r\n <Box sx={{ width: \"100%\", mr: 1 }}>\r\n <LinearProgress variant=\"determinate\" {...props} />\r\n </Box>\r\n <Box sx={{ minWidth: 35 }}>\r\n <Typography\r\n variant=\"body2\"\r\n sx={{ color: \"text.secondary\" }}\r\n >{`${Math.round(props.value)}%`}</Typography>\r\n </Box>\r\n </Box>\r\n );\r\n}\r\n\r\nconst TemplateLineProgress: React.FC<SingleRecordWidgetProps> = (\r\n props: any\r\n) => {\r\n return (\r\n <Box sx={{ width: \"100%\" }}>\r\n <Typography sx={{ fontSize: 16, fontWeight: \"bold\" }}>\r\n {props.record[props.labelField]}\r\n </Typography>\r\n <LinearProgressWithLabel\r\n value={100 * (props.record[props.valueField] / props.total)}\r\n />\r\n </Box>\r\n );\r\n};\r\n\r\nexport default TemplateLineProgress;\r\n","import { PieChart } from \"@mui/x-charts/PieChart\";\r\nimport { WidgetProps } from \"../DashboardViewer\";\r\n\r\nconst TemplatePieChart: React.FC<WidgetProps> = (props) => {\r\n // construct data object\r\n const chartData = props.data.map((record: any, index: any) => {\r\n return {\r\n id: index,\r\n value: record[props.valueField],\r\n label: record[props.labelField] + \"\",\r\n };\r\n });\r\n return (\r\n <PieChart\r\n series={[\r\n {\r\n data: chartData,\r\n },\r\n ]}\r\n />\r\n );\r\n};\r\n\r\nexport default TemplatePieChart;\r\n","import { Checkbox, FormControlLabel } from \"@mui/material\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ninterface CheckBoxProps {\r\n value: any;\r\n disabled?: boolean;\r\n required?: boolean;\r\n label: string;\r\n checkedValue?: any;\r\n unCheckedValue?: any;\r\n onChangeCallBack: Function;\r\n sx?: any;\r\n}\r\n\r\nconst CheckBox: React.FC<CheckBoxProps> = (props) => {\r\n const { t } = useTranslation();\r\n return (\r\n <FormControlLabel\r\n sx={props.sx}\r\n disabled={props.disabled || false}\r\n required={props.required || false}\r\n control={\r\n <Checkbox\r\n checked={\r\n props?.checkedValue == props.value ||\r\n props.value === \"true\" ||\r\n props.value == \"1\"\r\n ? true\r\n : false\r\n }\r\n onChange={(e) => {\r\n if (\r\n props.onChangeCallBack !== undefined &&\r\n props.onChangeCallBack != null\r\n ) {\r\n if (e.target.checked) {\r\n if (\r\n props.checkedValue !== undefined &&\r\n props.checkedValue != null\r\n ) {\r\n props.onChangeCallBack(props.checkedValue);\r\n } else {\r\n props.onChangeCallBack(true);\r\n }\r\n } else {\r\n if (\r\n props.unCheckedValue !== undefined &&\r\n props.unCheckedValue != null\r\n ) {\r\n props.onChangeCallBack(props.unCheckedValue);\r\n } else {\r\n props.onChangeCallBack(false);\r\n }\r\n }\r\n }\r\n }}\r\n />\r\n }\r\n label={t(props.label)}\r\n />\r\n );\r\n};\r\n\r\nexport default CheckBox;\r\n","import { useSelector } from \"react-redux\";\r\nimport { Autocomplete, Popper, TextField } from \"@mui/material\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ninterface ComboBoxProps {\r\n value: any;\r\n onChangeCallBack: Function;\r\n label: string;\r\n disabled?: boolean;\r\n required?: boolean;\r\n options: Array<any>;\r\n errorMessage?: any;\r\n displayField: string;\r\n valueField: string;\r\n sx?: any;\r\n}\r\n\r\nconst ComboBox: React.FC<ComboBoxProps> = (props) => {\r\n const AppLayoutState = useSelector((state: any) => state.AppLayout);\r\n const { t } = useTranslation();\r\n const getValue = (v: string) => {\r\n for (let option of props.options) {\r\n if (option[props.valueField] == v) {\r\n return option;\r\n }\r\n }\r\n return null;\r\n };\r\n return (\r\n <Autocomplete\r\n sx={props.sx}\r\n value={getValue(props.value)}\r\n options={props.options}\r\n disabled={props.disabled}\r\n onChange={(event, newValue) => {\r\n if (\r\n props.onChangeCallBack !== undefined &&\r\n props.onChangeCallBack != null\r\n ) {\r\n if (newValue != null) {\r\n let v = newValue[props.valueField];\r\n props.onChangeCallBack(v, newValue);\r\n } else {\r\n props.onChangeCallBack(null, null);\r\n }\r\n }\r\n }}\r\n clearOnBlur\r\n handleHomeEndKeys\r\n getOptionLabel={(option) => {\r\n return option != null ? t(option[props.displayField]) : \"\";\r\n }}\r\n renderOption={(props1, option) => {\r\n return (\r\n <li {...props1}>\r\n {option != null ? t(option[props.displayField]) : \"\"}\r\n </li>\r\n );\r\n }}\r\n slots={{\r\n popper: (props: any) => (\r\n <Popper\r\n {...props}\r\n style={{ ...props.style, direction: AppLayoutState.appDirection }}\r\n />\r\n ),\r\n }}\r\n renderInput={(params) => {\r\n return (\r\n <TextField\r\n {...params}\r\n required={props.required || false}\r\n variant=\"outlined\"\r\n InputLabelProps={{ shrink: true }}\r\n label={t(props.label)}\r\n error={\r\n props.errorMessage != null && props.errorMessage !== undefined\r\n ? true\r\n : false\r\n }\r\n helperText={\r\n props.errorMessage != null && props.errorMessage !== undefined\r\n ? t(props.errorMessage)\r\n : \"\"\r\n }\r\n />\r\n );\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default ComboBox;\r\n","export const DATE_FORMAT = \"YYYY-MM-DD\";\r\nexport const DATE_TIME_FORMAT = \"YYYY-MM-DD HH:mm:ss\";\r\nexport const LIGHT_THEME_INITIAL_MAIN_COLOR = \"#37505C\";\r\nexport const LIGHT_THEME_INITIAL_SECANDARY_COLOR = \"#ff6d00\";\r\nexport const DARK_THEME_INITIAL_MAIN_COLOR = \"#ea690e\";\r\nexport const DARK_THEME_INITIAL_SECANDARY_COLOR = \"#74776B\";\r\n","import { DatePicker, LocalizationProvider } from \"@mui/x-date-pickers\";\r\nimport { AdapterMoment } from \"@mui/x-date-pickers/AdapterMoment\";\r\nimport moment from \"moment\";\r\nimport { DATE_FORMAT } from \"../../../../../util/constants\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ninterface DatefieldProps {\r\n value: string | null;\r\n label: string;\r\n disabled?: boolean;\r\n required?: boolean;\r\n sx?: any;\r\n format?: string;\r\n errorMessage?: any;\r\n onChangeCallBack: Function;\r\n [x: string | number | symbol]: unknown;\r\n}\r\n\r\nconst Datefield: React.FC<DatefieldProps> = (props) => {\r\n const { t } = useTranslation();\r\n return (\r\n <LocalizationProvider dateAdapter={AdapterMoment}>\r\n <DatePicker\r\n value={\r\n props.value != null && props.value !== undefined && props.value !== \"\"\r\n ? moment(props.value, props?.format || DATE_FORMAT)\r\n : null\r\n }\r\n sx={props.sx}\r\n label={t(props.label)}\r\n format={props?.format || DATE_FORMAT}\r\n disabled={props.disabled}\r\n onChange={(momentValue) => {\r\n let v = null;\r\n if (momentValue != null && momentValue.isValid()) {\r\n v = momentValue.format(props?.format || DATE_FORMAT);\r\n }\r\n if (\r\n props.onChangeCallBack !== undefined &&\r\n props.onChangeCallBack != null\r\n ) {\r\n props.onChangeCallBack(v);\r\n }\r\n }}\r\n slotProps={{\r\n textField: {\r\n InputLabelProps: { shrink: true },\r\n variant: \"outlined\",\r\n required: props.required,\r\n error:\r\n props.errorMessage !== undefined && props.errorMessage != null,\r\n helperText:\r\n props.errorMessage !== undefined && props.errorMessage != null ? (\r\n <>{t(props.errorMessage)}</>\r\n ) : (\r\n <></>\r\n ),\r\n },\r\n }}\r\n />\r\n </LocalizationProvider>\r\n );\r\n};\r\n\r\nexport default Datefield;\r\n","import { DateTimePicker, LocalizationProvider } from \"@mui/x-date-pickers\";\r\nimport { AdapterMoment } from \"@mui/x-date-pickers/AdapterMoment\";\r\nimport moment from \"moment\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { DATE_TIME_FORMAT } from \"../../../../../util/constants\";\r\n\r\ninterface DatetimeFieldProps {\r\n value: string | null;\r\n label: string;\r\n disabled?: boolean;\r\n required?: boolean;\r\n format?: string;\r\n sx?: any;\r\n errorMessage?: any;\r\n onChangeCallBack: Function;\r\n [x: string | number | symbol]: unknown;\r\n}\r\n\r\nconst DatetimeField: React.FC<DatetimeFieldProps> = (props) => {\r\n const { t } = useTranslation();\r\n return (\r\n <LocalizationProvider dateAdapter={AdapterMoment}>\r\n <DateTimePicker\r\n value={\r\n props.value != null && props.value !== undefined && props.value !== \"\"\r\n ? moment(props.value, props?.format || DATE_TIME_FORMAT)\r\n : null\r\n }\r\n label={t(props.label)}\r\n sx={props.sx}\r\n format={props?.format || DATE_TIME_FORMAT}\r\n disabled={props.disabled}\r\n onChange={(momentValue) => {\r\n let v = null;\r\n if (momentValue != null && momentValue.isValid()) {\r\n v = momentValue.format(props?.format || DATE_TIME_FORMAT);\r\n }\r\n if (\r\n props.onChangeCallBack !== undefined &&\r\n props.onChangeCallBack != null\r\n ) {\r\n props.onChangeCallBack(v);\r\n }\r\n }}\r\n slotProps={{\r\n textField: {\r\n variant: \"outlined\",\r\n required: props.required,\r\n error:\r\n props.errorMessage !== undefined && props.errorMessage != null,\r\n helperText:\r\n props.errorMessage !== undefined && props.errorMessage != null ? (\r\n <>{t(props.errorMessage)}</>\r\n ) : (\r\n <></>\r\n ),\r\n },\r\n }}\r\n />\r\n </LocalizationProvider>\r\n );\r\n};\r\n\r\nexport default DatetimeField;\r\n","/**\n * WARNING: Don't import this directly. It's imported by the code generated by\n * `@mui/interal-babel-plugin-minify-errors`. Make sure to always use string literals in `Error`\n * constructors to ensure the plugin works as expected. Supported patterns include:\n * throw new Error('My message');\n * throw new Error(`My message: ${foo}`);\n * throw new Error(`My message: ${foo}` + 'another string');\n * ...\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code, ...args) {\n const url = new URL(`https://mui.com/production-error/?code=${code}`);\n args.forEach(arg => url.searchParams.append('args[]', arg));\n return `Minified MUI error #${code}; visit ${url} for the full message.`;\n}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * @license React\n * react-is.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\nSymbol.for(\"react.provider\");\nvar REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction typeOf(object) {\n if (\"object\" === typeof object && null !== object) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n switch (((object = object.type), object)) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n case REACT_VIEW_TRANSITION_TYPE:\n return object;\n default:\n switch (((object = object && object.$$typeof), object)) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n return object;\n case REACT_CONSUMER_TYPE:\n return object;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n}\nexports.ContextConsumer = REACT_CONSUMER_TYPE;\nexports.ContextProvider = REACT_CONTEXT_TYPE;\nexports.Element = REACT_ELEMENT_TYPE;\nexports.ForwardRef = REACT_FORWARD_REF_TYPE;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Lazy = REACT_LAZY_TYPE;\nexports.Memo = REACT_MEMO_TYPE;\nexports.Portal = REACT_PORTAL_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nexports.isContextConsumer = function (object) {\n return typeOf(object) === REACT_CONSUMER_TYPE;\n};\nexports.isContextProvider = function (object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n};\nexports.isElement = function (object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n};\nexports.isForwardRef = function (object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n};\nexports.isFragment = function (object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n};\nexports.isLazy = function (object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n};\nexports.isMemo = function (object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n};\nexports.isPortal = function (object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n};\nexports.isProfiler = function (object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n};\nexports.isStrictMode = function (object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n};\nexports.isSuspense = function (object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n};\nexports.isSuspenseList = function (object) {\n return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n};\nexports.isValidElementType = function (type) {\n return \"string\" === typeof type ||\n \"function\" === typeof type ||\n type === REACT_FRAGMENT_TYPE ||\n type === REACT_PROFILER_TYPE ||\n type === REACT_STRICT_MODE_TYPE ||\n type === REACT_SUSPENSE_TYPE ||\n type === REACT_SUSPENSE_LIST_TYPE ||\n (\"object\" === typeof type &&\n null !== type &&\n (type.$$typeof === REACT_LAZY_TYPE ||\n type.$$typeof === REACT_MEMO_TYPE ||\n type.$$typeof === REACT_CONTEXT_TYPE ||\n type.$$typeof === REACT_CONSUMER_TYPE ||\n type.$$typeof === REACT_FORWARD_REF_TYPE ||\n type.$$typeof === REACT_CLIENT_REFERENCE ||\n void 0 !== type.getModuleId))\n ? !0\n : !1;\n};\nexports.typeOf = typeOf;\n","/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function typeOf(object) {\n if (\"object\" === typeof object && null !== object) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n switch (((object = object.type), object)) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n case REACT_VIEW_TRANSITION_TYPE:\n return object;\n default:\n switch (((object = object && object.$$typeof), object)) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n return object;\n case REACT_CONSUMER_TYPE:\n return object;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n }\n var REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n Symbol.for(\"react.provider\");\n var REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\n exports.ContextConsumer = REACT_CONSUMER_TYPE;\n exports.ContextProvider = REACT_CONTEXT_TYPE;\n exports.Element = REACT_ELEMENT_TYPE;\n exports.ForwardRef = REACT_FORWARD_REF_TYPE;\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.Lazy = REACT_LAZY_TYPE;\n exports.Memo = REACT_MEMO_TYPE;\n exports.Portal = REACT_PORTAL_TYPE;\n exports.Profiler = REACT_PROFILER_TYPE;\n exports.StrictMode = REACT_STRICT_MODE_TYPE;\n exports.Suspense = REACT_SUSPENSE_TYPE;\n exports.SuspenseList = REACT_SUSPENSE_LIST_TYPE;\n exports.isContextConsumer = function (object) {\n return typeOf(object) === REACT_CONSUMER_TYPE;\n };\n exports.isContextProvider = function (object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n };\n exports.isElement = function (object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n };\n exports.isForwardRef = function (object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n };\n exports.isFragment = function (object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n };\n exports.isLazy = function (object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n };\n exports.isMemo = function (object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n };\n exports.isPortal = function (object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n };\n exports.isProfiler = function (object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n };\n exports.isStrictMode = function (object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n };\n exports.isSuspense = function (object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n };\n exports.isSuspenseList = function (object) {\n return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n };\n exports.isValidElementType = function (type) {\n return \"string\" === typeof type ||\n \"function\" === typeof type ||\n type === REACT_FRAGMENT_TYPE ||\n type === REACT_PROFILER_TYPE ||\n type === REACT_STRICT_MODE_TYPE ||\n type === REACT_SUSPENSE_TYPE ||\n type === REACT_SUSPENSE_LIST_TYPE ||\n (\"object\" === typeof type &&\n null !== type &&\n (type.$$typeof === REACT_LAZY_TYPE ||\n type.$$typeof === REACT_MEMO_TYPE ||\n type.$$typeof === REACT_CONTEXT_TYPE ||\n type.$$typeof === REACT_CONSUMER_TYPE ||\n type.$$typeof === REACT_FORWARD_REF_TYPE ||\n type.$$typeof === REACT_CLIENT_REFERENCE ||\n void 0 !== type.getModuleId))\n ? !0\n : !1;\n };\n exports.typeOf = typeOf;\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import * as React from 'react';\nimport { isValidElementType } from 'react-is';\n\n// https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\nexport function isPlainObject(item) {\n if (typeof item !== 'object' || item === null) {\n return false;\n }\n const prototype = Object.getPrototypeOf(item);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in item) && !(Symbol.iterator in item);\n}\nfunction deepClone(source) {\n if (/*#__PURE__*/React.isValidElement(source) || isValidElementType(source) || !isPlainObject(source)) {\n return source;\n }\n const output = {};\n Object.keys(source).forEach(key => {\n output[key] = deepClone(source[key]);\n });\n return output;\n}\n\n/**\n * Merge objects deeply.\n * It will shallow copy React elements.\n *\n * If `options.clone` is set to `false` the source object will be merged directly into the target object.\n *\n * @example\n * ```ts\n * deepmerge({ a: { b: 1 }, d: 2 }, { a: { c: 2 }, d: 4 });\n * // => { a: { b: 1, c: 2 }, d: 4 }\n * ````\n *\n * @param target The target object.\n * @param source The source object.\n * @param options The merge options.\n * @param options.clone Set to `false` to merge the source object directly into the target object.\n * @returns The merged object.\n */\nexport default function deepmerge(target, source, options = {\n clone: true\n}) {\n const output = options.clone ? {\n ...target\n } : target;\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(key => {\n if (/*#__PURE__*/React.isValidElement(source[key]) || isValidElementType(source[key])) {\n output[key] = source[key];\n } else if (isPlainObject(source[key]) &&\n // Avoid prototype pollution\n Object.prototype.hasOwnProperty.call(target, key) && isPlainObject(target[key])) {\n // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n output[key] = deepmerge(target[key], source[key], options);\n } else if (options.clone) {\n output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n } else {\n output[key] = source[key];\n }\n });\n }\n return output;\n}","// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n const breakpointsAsArray = Object.keys(values).map(key => ({\n key,\n val: values[key]\n })) || [];\n // Sort in ascending order\n breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n return breakpointsAsArray.reduce((acc, obj) => {\n return {\n ...acc,\n [obj.key]: obj.val\n };\n }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n const {\n // The breakpoint **start** at this value.\n // For instance with the first breakpoint xs: [xs, sm).\n values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n },\n unit = 'px',\n step = 5,\n ...other\n } = breakpoints;\n const sortedValues = sortBreakpointsValues(values);\n const keys = Object.keys(sortedValues);\n function up(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (min-width:${value}${unit})`;\n }\n function down(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (max-width:${value - step / 100}${unit})`;\n }\n function between(start, end) {\n const endIndex = keys.indexOf(end);\n return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n }\n function only(key) {\n if (keys.indexOf(key) + 1 < keys.length) {\n return between(key, keys[keys.indexOf(key) + 1]);\n }\n return up(key);\n }\n function not(key) {\n // handle first and last key separately, for better readability\n const keyIndex = keys.indexOf(key);\n if (keyIndex === 0) {\n return up(keys[1]);\n }\n if (keyIndex === keys.length - 1) {\n return down(keys[keyIndex]);\n }\n return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n }\n return {\n keys,\n values: sortedValues,\n up,\n down,\n between,\n only,\n not,\n unit,\n ...other\n };\n}","const shape = {\n borderRadius: 4\n};\nexport default shape;","import PropTypes from 'prop-types';\nconst responsivePropType = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.object, PropTypes.array]) : {};\nexport default responsivePropType;","import deepmerge from '@mui/utils/deepmerge';\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n });\n}\nexport default merge;","import PropTypes from 'prop-types';\nimport deepmerge from '@mui/utils/deepmerge';\nimport merge from \"../merge/index.js\";\nimport { isCqShorthand, getContainerQuery } from \"../cssContainerQueries/index.js\";\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n};\nconst defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: key => `@media (min-width:${values[key]}px)`\n};\nconst defaultContainerQueries = {\n containerQueries: containerName => ({\n up: key => {\n let result = typeof key === 'number' ? key : values[key] || key;\n if (typeof result === 'number') {\n result = `${result}px`;\n }\n return containerName ? `@container ${containerName} (min-width:${result})` : `@container (min-width:${result})`;\n }\n })\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n const theme = props.theme || {};\n if (Array.isArray(propValue)) {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return propValue.reduce((acc, item, index) => {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n if (typeof propValue === 'object') {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return Object.keys(propValue).reduce((acc, breakpoint) => {\n if (isCqShorthand(themeBreakpoints.keys, breakpoint)) {\n const containerKey = getContainerQuery(theme.containerQueries ? theme : defaultContainerQueries, breakpoint);\n if (containerKey) {\n acc[containerKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n }\n }\n // key is breakpoint\n else if (Object.keys(themeBreakpoints.values || values).includes(breakpoint)) {\n const mediaKey = themeBreakpoints.up(breakpoint);\n acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n } else {\n const cssKey = breakpoint;\n acc[cssKey] = propValue[cssKey];\n }\n return acc;\n }, {});\n }\n const output = styleFromPropValue(propValue);\n return output;\n}\nfunction breakpoints(styleFunction) {\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const newStyleFunction = props => {\n const theme = props.theme || {};\n const base = styleFunction(props);\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n const extended = themeBreakpoints.keys.reduce((acc, key) => {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction({\n theme,\n ...props[key]\n });\n }\n return acc;\n }, null);\n return merge(base, extended);\n };\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? {\n ...styleFunction.propTypes,\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n } : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n const breakpointsInOrder = breakpointsInput.keys?.reduce((acc, key) => {\n const breakpointStyleKey = breakpointsInput.up(key);\n acc[breakpointStyleKey] = {};\n return acc;\n }, {});\n return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n return breakpointKeys.reduce((acc, key) => {\n const breakpointOutput = acc[key];\n const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n if (isBreakpointUnused) {\n delete acc[key];\n }\n return acc;\n }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n // fixed value\n if (typeof breakpointValues !== 'object') {\n return {};\n }\n const base = {};\n const breakpointsKeys = Object.keys(themeBreakpoints);\n if (Array.isArray(breakpointValues)) {\n breakpointsKeys.forEach((breakpoint, i) => {\n if (i < breakpointValues.length) {\n base[breakpoint] = true;\n }\n });\n } else {\n breakpointsKeys.forEach(breakpoint => {\n if (breakpointValues[breakpoint] != null) {\n base[breakpoint] = true;\n }\n });\n }\n return base;\n}\nexport function resolveBreakpointValues({\n values: breakpointValues,\n breakpoints: themeBreakpoints,\n base: customBase\n}) {\n const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n const keys = Object.keys(base);\n if (keys.length === 0) {\n return breakpointValues;\n }\n let previous;\n return keys.reduce((acc, breakpoint, i) => {\n if (Array.isArray(breakpointValues)) {\n acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n previous = i;\n } else if (typeof breakpointValues === 'object') {\n acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n previous = breakpoint;\n } else {\n acc[breakpoint] = breakpointValues;\n }\n return acc;\n }, {});\n}\nexport default breakpoints;","import _formatErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n/**\n * For using in `sx` prop to sort the breakpoint from low to high.\n * Note: this function does not work and will not support multiple units.\n * e.g. input: { '@container (min-width:300px)': '1rem', '@container (min-width:40rem)': '2rem' }\n * output: { '@container (min-width:40rem)': '2rem', '@container (min-width:300px)': '1rem' } // since 40 < 300 eventhough 40rem > 300px\n */\nexport function sortContainerQueries(theme, css) {\n if (!theme.containerQueries) {\n return css;\n }\n const sorted = Object.keys(css).filter(key => key.startsWith('@container')).sort((a, b) => {\n const regex = /min-width:\\s*([0-9.]+)/;\n return +(a.match(regex)?.[1] || 0) - +(b.match(regex)?.[1] || 0);\n });\n if (!sorted.length) {\n return css;\n }\n return sorted.reduce((acc, key) => {\n const value = css[key];\n delete acc[key];\n acc[key] = value;\n return acc;\n }, {\n ...css\n });\n}\nexport function isCqShorthand(breakpointKeys, value) {\n return value === '@' || value.startsWith('@') && (breakpointKeys.some(key => value.startsWith(`@${key}`)) || !!value.match(/^@\\d/));\n}\nexport function getContainerQuery(theme, shorthand) {\n const matches = shorthand.match(/^@([^/]+)?\\/?(.+)?$/);\n if (!matches) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The provided shorthand ${`(${shorthand})`} is invalid. The format should be \\`@<breakpoint | number>\\` or \\`@<breakpoint | number>/<container>\\`.\\n` + 'For example, `@sm` or `@600` or `@40rem/sidebar`.' : _formatErrorMessage(18, `(${shorthand})`));\n }\n return null;\n }\n const [, containerQuery, containerName] = matches;\n const value = Number.isNaN(+containerQuery) ? containerQuery || 0 : +containerQuery;\n return theme.containerQueries(containerName).up(value);\n}\nexport default function cssContainerQueries(themeInput) {\n const toContainerQuery = (mediaQuery, name) => mediaQuery.replace('@media', name ? `@container ${name}` : '@container');\n function attachCq(node, name) {\n node.up = (...args) => toContainerQuery(themeInput.breakpoints.up(...args), name);\n node.down = (...args) => toContainerQuery(themeInput.breakpoints.down(...args), name);\n node.between = (...args) => toContainerQuery(themeInput.breakpoints.between(...args), name);\n node.only = (...args) => toContainerQuery(themeInput.breakpoints.only(...args), name);\n node.not = (...args) => {\n const result = toContainerQuery(themeInput.breakpoints.not(...args), name);\n if (result.includes('not all and')) {\n // `@container` does not work with `not all and`, so need to invert the logic\n return result.replace('not all and ', '').replace('min-width:', 'width<').replace('max-width:', 'width>').replace('and', 'or');\n }\n return result;\n };\n }\n const node = {};\n const containerQueries = name => {\n attachCq(node, name);\n return node;\n };\n attachCq(containerQueries);\n return {\n ...themeInput,\n containerQueries\n };\n}","import _formatErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'MUI: `capitalize(string)` expects a string argument.' : _formatErrorMessage(7));\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","import capitalize from '@mui/utils/capitalize';\nimport responsivePropType from \"../responsivePropType/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nexport function getPath(obj, path, checkVars = true) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n\n // Check if CSS variables are used\n if (obj && obj.vars && checkVars) {\n const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n if (val != null) {\n return val;\n }\n }\n return path.split('.').reduce((acc, item) => {\n if (acc && acc[item] != null) {\n return acc[item];\n }\n return null;\n }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n let value;\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || userValue;\n } else {\n value = getPath(themeMapping, propValueFinal) || userValue;\n }\n if (transform) {\n value = transform(value, userValue, themeMapping);\n }\n return value;\n}\nfunction style(options) {\n const {\n prop,\n cssProperty = options.prop,\n themeKey,\n transform\n } = options;\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n if (props[prop] == null) {\n return null;\n }\n const propValue = props[prop];\n const theme = props.theme;\n const themeMapping = getPath(theme, themeKey) || {};\n const styleFromPropValue = propValueFinal => {\n let value = getStyleValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n [prop]: responsivePropType\n } : {};\n fn.filterProps = [prop];\n return fn;\n}\nexport default style;","import responsivePropType from \"../responsivePropType/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nimport { getPath } from \"../style/index.js\";\nimport merge from \"../merge/index.js\";\nimport memoize from \"../memoize/index.js\";\nconst properties = {\n m: 'margin',\n p: 'padding'\n};\nconst directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nconst aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n const [a, b] = prop.split('');\n const property = properties[a];\n const direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n const themeSpacing = getPath(theme, themeKey, true) ?? defaultValue;\n if (typeof themeSpacing === 'number' || typeof themeSpacing === 'string') {\n return val => {\n if (typeof val === 'string') {\n return val;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (typeof val !== 'number') {\n console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${val}.`);\n }\n }\n if (typeof themeSpacing === 'string') {\n if (themeSpacing.startsWith('var(') && val === 0) {\n return 0;\n }\n if (themeSpacing.startsWith('var(') && val === 1) {\n return themeSpacing;\n }\n return `calc(${val} * ${themeSpacing})`;\n }\n return themeSpacing * val;\n };\n }\n if (Array.isArray(themeSpacing)) {\n return val => {\n if (typeof val === 'string') {\n return val;\n }\n const abs = Math.abs(val);\n if (process.env.NODE_ENV !== 'production') {\n if (!Number.isInteger(abs)) {\n console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n } else if (abs > themeSpacing.length - 1) {\n console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n }\n }\n const transformed = themeSpacing[abs];\n if (val >= 0) {\n return transformed;\n }\n if (typeof transformed === 'number') {\n return -transformed;\n }\n if (typeof transformed === 'string' && transformed.startsWith('var(')) {\n return `calc(-1 * ${transformed})`;\n }\n return `-${transformed}`;\n };\n }\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n if (process.env.NODE_ENV !== 'production') {\n console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n }\n return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n return transformer(propValue);\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n return propValue => cssProperties.reduce((acc, cssProperty) => {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (!keys.includes(prop)) {\n return null;\n }\n const cssProperties = getCssProperties(prop);\n const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n const propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n const transformer = createUnarySpacing(props.theme);\n return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n const cache = {};\n return arg => {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n return cache[arg];\n };\n}","import merge from \"../merge/index.js\";\nfunction compose(...styles) {\n const handlers = styles.reduce((acc, style) => {\n style.filterProps.forEach(prop => {\n acc[prop] = style;\n });\n return acc;\n }, {});\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n return Object.keys(props).reduce((acc, prop) => {\n if (handlers[prop]) {\n return merge(acc, handlers[prop](props));\n }\n return acc;\n }, {});\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n return fn;\n}\nexport default compose;","import responsivePropType from \"../responsivePropType/index.js\";\nimport style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { createUnaryUnit, getValue } from \"../spacing/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nexport function borderTransform(value) {\n if (typeof value !== 'number') {\n return value;\n }\n return `${value}px solid`;\n}\nfunction createBorderStyle(prop, transform) {\n return style({\n prop,\n themeKey: 'borders',\n transform\n });\n}\nexport const border = createBorderStyle('border', borderTransform);\nexport const borderTop = createBorderStyle('borderTop', borderTransform);\nexport const borderRight = createBorderStyle('borderRight', borderTransform);\nexport const borderBottom = createBorderStyle('borderBottom', borderTransform);\nexport const borderLeft = createBorderStyle('borderLeft', borderTransform);\nexport const borderColor = createBorderStyle('borderColor');\nexport const borderTopColor = createBorderStyle('borderTopColor');\nexport const borderRightColor = createBorderStyle('borderRightColor');\nexport const borderBottomColor = createBorderStyle('borderBottomColor');\nexport const borderLeftColor = createBorderStyle('borderLeftColor');\nexport const outline = createBorderStyle('outline', borderTransform);\nexport const outlineColor = createBorderStyle('outlineColor');\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n if (props.borderRadius !== undefined && props.borderRadius !== null) {\n const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n const styleFromPropValue = propValue => ({\n borderRadius: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n }\n return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius, outline, outlineColor);\nexport default borders;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { createUnaryUnit, getValue } from \"../spacing/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nimport responsivePropType from \"../responsivePropType/index.js\";\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n if (props.gap !== undefined && props.gap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n const styleFromPropValue = propValue => ({\n gap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.gap, styleFromPropValue);\n }\n return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n if (props.columnGap !== undefined && props.columnGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n const styleFromPropValue = propValue => ({\n columnGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n }\n return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n if (props.rowGap !== undefined && props.rowGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n const styleFromPropValue = propValue => ({\n rowGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n }\n return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n prop: 'gridColumn'\n});\nexport const gridRow = style({\n prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nexport function paletteTransform(value, userValue) {\n if (userValue === 'grey') {\n return userValue;\n }\n return value;\n}\nexport const color = style({\n prop: 'color',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const backgroundColor = style({\n prop: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { handleBreakpoints, values as breakpointsValues } from \"../breakpoints/index.js\";\nexport function sizingTransform(value) {\n return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n prop: 'width',\n transform: sizingTransform\n});\nexport const maxWidth = props => {\n if (props.maxWidth !== undefined && props.maxWidth !== null) {\n const styleFromPropValue = propValue => {\n const breakpoint = props.theme?.breakpoints?.values?.[propValue] || breakpointsValues[propValue];\n if (!breakpoint) {\n return {\n maxWidth: sizingTransform(propValue)\n };\n }\n if (props.theme?.breakpoints?.unit !== 'px') {\n return {\n maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`\n };\n }\n return {\n maxWidth: breakpoint\n };\n };\n return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n }\n return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n prop: 'minWidth',\n transform: sizingTransform\n});\nexport const height = style({\n prop: 'height',\n transform: sizingTransform\n});\nexport const maxHeight = style({\n prop: 'maxHeight',\n transform: sizingTransform\n});\nexport const minHeight = style({\n prop: 'minHeight',\n transform: sizingTransform\n});\nexport const sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform: sizingTransform\n});\nexport const sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform: sizingTransform\n});\nexport const boxSizing = style({\n prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import { padding, margin } from \"../spacing/index.js\";\nimport { borderRadius, borderTransform } from \"../borders/index.js\";\nimport { gap, rowGap, columnGap } from \"../cssGrid/index.js\";\nimport { paletteTransform } from \"../palette/index.js\";\nimport { maxWidth, sizingTransform } from \"../sizing/index.js\";\nconst defaultSxConfig = {\n // borders\n border: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderTop: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderRight: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderBottom: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderLeft: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderColor: {\n themeKey: 'palette'\n },\n borderTopColor: {\n themeKey: 'palette'\n },\n borderRightColor: {\n themeKey: 'palette'\n },\n borderBottomColor: {\n themeKey: 'palette'\n },\n borderLeftColor: {\n themeKey: 'palette'\n },\n outline: {\n themeKey: 'borders',\n transform: borderTransform\n },\n outlineColor: {\n themeKey: 'palette'\n },\n borderRadius: {\n themeKey: 'shape.borderRadius',\n style: borderRadius\n },\n // palette\n color: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n bgcolor: {\n themeKey: 'palette',\n cssProperty: 'backgroundColor',\n transform: paletteTransform\n },\n backgroundColor: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n // spacing\n p: {\n style: padding\n },\n pt: {\n style: padding\n },\n pr: {\n style: padding\n },\n pb: {\n style: padding\n },\n pl: {\n style: padding\n },\n px: {\n style: padding\n },\n py: {\n style: padding\n },\n padding: {\n style: padding\n },\n paddingTop: {\n style: padding\n },\n paddingRight: {\n style: padding\n },\n paddingBottom: {\n style: padding\n },\n paddingLeft: {\n style: padding\n },\n paddingX: {\n style: padding\n },\n paddingY: {\n style: padding\n },\n paddingInline: {\n style: padding\n },\n paddingInlineStart: {\n style: padding\n },\n paddingInlineEnd: {\n style: padding\n },\n paddingBlock: {\n style: padding\n },\n paddingBlockStart: {\n style: padding\n },\n paddingBlockEnd: {\n style: padding\n },\n m: {\n style: margin\n },\n mt: {\n style: margin\n },\n mr: {\n style: margin\n },\n mb: {\n style: margin\n },\n ml: {\n style: margin\n },\n mx: {\n style: margin\n },\n my: {\n style: margin\n },\n margin: {\n style: margin\n },\n marginTop: {\n style: margin\n },\n marginRight: {\n style: margin\n },\n marginBottom: {\n style: margin\n },\n marginLeft: {\n style: margin\n },\n marginX: {\n style: margin\n },\n marginY: {\n style: margin\n },\n marginInline: {\n style: margin\n },\n marginInlineStart: {\n style: margin\n },\n marginInlineEnd: {\n style: margin\n },\n marginBlock: {\n style: margin\n },\n marginBlockStart: {\n style: margin\n },\n marginBlockEnd: {\n style: margin\n },\n // display\n displayPrint: {\n cssProperty: false,\n transform: value => ({\n '@media print': {\n display: value\n }\n })\n },\n display: {},\n overflow: {},\n textOverflow: {},\n visibility: {},\n whiteSpace: {},\n // flexbox\n flexBasis: {},\n flexDirection: {},\n flexWrap: {},\n justifyContent: {},\n alignItems: {},\n alignContent: {},\n order: {},\n flex: {},\n flexGrow: {},\n flexShrink: {},\n alignSelf: {},\n justifyItems: {},\n justifySelf: {},\n // grid\n gap: {\n style: gap\n },\n rowGap: {\n style: rowGap\n },\n columnGap: {\n style: columnGap\n },\n gridColumn: {},\n gridRow: {},\n gridAutoFlow: {},\n gridAutoColumns: {},\n gridAutoRows: {},\n gridTemplateColumns: {},\n gridTemplateRows: {},\n gridTemplateAreas: {},\n gridArea: {},\n // positions\n position: {},\n zIndex: {\n themeKey: 'zIndex'\n },\n top: {},\n right: {},\n bottom: {},\n left: {},\n // shadows\n boxShadow: {\n themeKey: 'shadows'\n },\n // sizing\n width: {\n transform: sizingTransform\n },\n maxWidth: {\n style: maxWidth\n },\n minWidth: {\n transform: sizingTransform\n },\n height: {\n transform: sizingTransform\n },\n maxHeight: {\n transform: sizingTransform\n },\n minHeight: {\n transform: sizingTransform\n },\n boxSizing: {},\n // typography\n font: {\n themeKey: 'font'\n },\n fontFamily: {\n themeKey: 'typography'\n },\n fontSize: {\n themeKey: 'typography'\n },\n fontStyle: {\n themeKey: 'typography'\n },\n fontWeight: {\n themeKey: 'typography'\n },\n letterSpacing: {},\n textTransform: {},\n lineHeight: {},\n textAlign: {},\n typography: {\n cssProperty: false,\n themeKey: 'typography'\n }\n};\nexport default defaultSxConfig;","import capitalize from '@mui/utils/capitalize';\nimport merge from \"../merge/index.js\";\nimport { getPath, getStyleValue as getValue } from \"../style/index.js\";\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from \"../breakpoints/index.js\";\nimport { sortContainerQueries } from \"../cssContainerQueries/index.js\";\nimport defaultSxConfig from \"./defaultSxConfig.js\";\nfunction objectsHaveSameKeys(...objects) {\n const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n const union = new Set(allKeys);\n return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n function getThemeValue(prop, val, theme, config) {\n const props = {\n [prop]: val,\n theme\n };\n const options = config[prop];\n if (!options) {\n return {\n [prop]: val\n };\n }\n const {\n cssProperty = prop,\n themeKey,\n transform,\n style\n } = options;\n if (val == null) {\n return null;\n }\n\n // TODO v6: remove, see https://github.com/mui/material-ui/pull/38123\n if (themeKey === 'typography' && val === 'inherit') {\n return {\n [prop]: val\n };\n }\n const themeMapping = getPath(theme, themeKey) || {};\n if (style) {\n return style(props);\n }\n const styleFromPropValue = propValueFinal => {\n let value = getValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, val, styleFromPropValue);\n }\n function styleFunctionSx(props) {\n const {\n sx,\n theme = {}\n } = props || {};\n if (!sx) {\n return null; // Emotion & styled-components will neglect null\n }\n const config = theme.unstable_sxConfig ?? defaultSxConfig;\n\n /*\n * Receive `sxInput` as object or callback\n * and then recursively check keys & values to create media query object styles.\n * (the result will be used in `styled`)\n */\n function traverse(sxInput) {\n let sxObject = sxInput;\n if (typeof sxInput === 'function') {\n sxObject = sxInput(theme);\n } else if (typeof sxInput !== 'object') {\n // value\n return sxInput;\n }\n if (!sxObject) {\n return null;\n }\n const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n const breakpointsKeys = Object.keys(emptyBreakpoints);\n let css = emptyBreakpoints;\n Object.keys(sxObject).forEach(styleKey => {\n const value = callIfFn(sxObject[styleKey], theme);\n if (value !== null && value !== undefined) {\n if (typeof value === 'object') {\n if (config[styleKey]) {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n } else {\n const breakpointsValues = handleBreakpoints({\n theme\n }, value, x => ({\n [styleKey]: x\n }));\n if (objectsHaveSameKeys(breakpointsValues, value)) {\n css[styleKey] = styleFunctionSx({\n sx: value,\n theme\n });\n } else {\n css = merge(css, breakpointsValues);\n }\n }\n } else {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n }\n }\n });\n return sortContainerQueries(theme, removeUnusedBreakpoints(breakpointsKeys, css));\n }\n return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n }\n return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","/**\n * A universal utility to style components with multiple color modes. Always use it from the theme object.\n * It works with:\n * - [Basic theme](https://mui.com/material-ui/customization/dark-mode/)\n * - [CSS theme variables](https://mui.com/material-ui/customization/css-theme-variables/overview/)\n * - Zero-runtime engine\n *\n * Tips: Use an array over object spread and place `theme.applyStyles()` last.\n *\n * With the styled function:\n * ✅ [{ background: '#e5e5e5' }, theme.applyStyles('dark', { background: '#1c1c1c' })]\n * 🚫 { background: '#e5e5e5', ...theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * With the sx prop:\n * ✅ [{ background: '#e5e5e5' }, theme => theme.applyStyles('dark', { background: '#1c1c1c' })]\n * 🚫 { background: '#e5e5e5', ...theme => theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * @example\n * 1. using with `styled`:\n * ```jsx\n * const Component = styled('div')(({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]);\n * ```\n *\n * @example\n * 2. using with `sx` prop:\n * ```jsx\n * <Box sx={[\n * { background: '#e5e5e5' },\n * theme => theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]}\n * />\n * ```\n *\n * @example\n * 3. theming a component:\n * ```jsx\n * extendTheme({\n * components: {\n * MuiButton: {\n * styleOverrides: {\n * root: ({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ],\n * },\n * }\n * }\n * })\n *```\n */\nexport default function applyStyles(key, styles) {\n // @ts-expect-error this is 'any' type\n const theme = this;\n if (theme.vars) {\n if (!theme.colorSchemes?.[key] || typeof theme.getColorSchemeSelector !== 'function') {\n return {};\n }\n // If CssVarsProvider is used as a provider, returns '*:where({selector}) &'\n let selector = theme.getColorSchemeSelector(key);\n if (selector === '&') {\n return styles;\n }\n if (selector.includes('data-') || selector.includes('.')) {\n // '*' is required as a workaround for Emotion issue (https://github.com/emotion-js/emotion/issues/2836)\n selector = `*:where(${selector.replace(/\\s*&$/, '')}) &`;\n }\n return {\n [selector]: styles\n };\n }\n if (theme.palette.mode === key) {\n return styles;\n }\n return {};\n}","'use client';\n\nimport * as React from 'react';\nimport { ThemeContext } from '@mui/styled-engine';\nfunction isObjectEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n const contextTheme = React.useContext(ThemeContext);\n return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nexport default useTheme;","'use client';\n\nimport createTheme from \"../createTheme/index.js\";\nimport useThemeWithoutDefault from \"../useThemeWithoutDefault/index.js\";\nexport const systemDefaultTheme = createTheme();\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n return useThemeWithoutDefault(defaultTheme);\n}\nexport default useTheme;","import deepmerge from '@mui/utils/deepmerge';\nimport createBreakpoints from \"../createBreakpoints/createBreakpoints.js\";\nimport cssContainerQueries from \"../cssContainerQueries/index.js\";\nimport shape from \"./shape.js\";\nimport createSpacing from \"./createSpacing.js\";\nimport styleFunctionSx from \"../styleFunctionSx/styleFunctionSx.js\";\nimport defaultSxConfig from \"../styleFunctionSx/defaultSxConfig.js\";\nimport applyStyles from \"./applyStyles.js\";\nfunction createTheme(options = {}, ...args) {\n const {\n breakpoints: breakpointsInput = {},\n palette: paletteInput = {},\n spacing: spacingInput,\n shape: shapeInput = {},\n ...other\n } = options;\n const breakpoints = createBreakpoints(breakpointsInput);\n const spacing = createSpacing(spacingInput);\n let muiTheme = deepmerge({\n breakpoints,\n direction: 'ltr',\n components: {},\n // Inject component definitions.\n palette: {\n mode: 'light',\n ...paletteInput\n },\n spacing,\n shape: {\n ...shape,\n ...shapeInput\n }\n }, other);\n muiTheme = cssContainerQueries(muiTheme);\n muiTheme.applyStyles = applyStyles;\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n muiTheme.unstable_sxConfig = {\n ...defaultSxConfig,\n ...other?.unstable_sxConfig\n };\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nexport default createTheme;","import { createUnarySpacing } from \"../spacing/index.js\";\n\n// The different signatures imply different meaning for their arguments that can't be expressed structurally.\n// We express the difference with variable names.\n\nexport default function createSpacing(spacingInput = 8,\n// Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n// Smaller components, such as icons, can align to a 4dp grid.\n// https://m2.material.io/design/layout/understanding-layout.html\ntransform = createUnarySpacing({\n spacing: spacingInput\n})) {\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n }\n const spacing = (...argsInput) => {\n if (process.env.NODE_ENV !== 'production') {\n if (!(argsInput.length <= 4)) {\n console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n }\n }\n const args = argsInput.length === 0 ? [1] : argsInput;\n return args.map(argument => {\n const output = transform(argument);\n return typeof output === 'number' ? `${output}px` : output;\n }).join(' ');\n };\n spacing.mui = true;\n return spacing;\n}","import { isPlainObject } from '@mui/utils/deepmerge';\nimport defaultSxConfig from \"./defaultSxConfig.js\";\nconst splitProps = props => {\n const result = {\n systemProps: {},\n otherProps: {}\n };\n const config = props?.theme?.unstable_sxConfig ?? defaultSxConfig;\n Object.keys(props).forEach(prop => {\n if (config[prop]) {\n result.systemProps[prop] = props[prop];\n } else {\n result.otherProps[prop] = props[prop];\n }\n });\n return result;\n};\nexport default function extendSxProp(props) {\n const {\n sx: inSx,\n ...other\n } = props;\n const {\n systemProps,\n otherProps\n } = splitProps(other);\n let finalSx;\n if (Array.isArray(inSx)) {\n finalSx = [systemProps, ...inSx];\n } else if (typeof inSx === 'function') {\n finalSx = (...args) => {\n const result = inSx(...args);\n if (!isPlainObject(result)) {\n return systemProps;\n }\n return {\n ...systemProps,\n ...result\n };\n };\n } else {\n finalSx = {\n ...systemProps,\n ...inSx\n };\n }\n return {\n ...otherProps,\n sx: finalSx\n };\n}","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n let generate = defaultGenerator;\n return {\n configure(generator) {\n generate = generator;\n },\n generate(componentName) {\n return generate(componentName);\n },\n reset() {\n generate = defaultGenerator;\n }\n };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import ClassNameGenerator from \"../ClassNameGenerator/index.js\";\nexport const globalStateClasses = {\n active: 'active',\n checked: 'checked',\n completed: 'completed',\n disabled: 'disabled',\n error: 'error',\n expanded: 'expanded',\n focused: 'focused',\n focusVisible: 'focusVisible',\n open: 'open',\n readOnly: 'readOnly',\n required: 'required',\n selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n const globalStateClass = globalStateClasses[slot];\n return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n return globalStateClasses[slot] !== undefined;\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nconst boxClasses = generateUtilityClasses('MuiBox', ['root']);\nexport default boxClasses;","'use client';\n\nimport PropTypes from 'prop-types';\nimport ClassNameGenerator from '@mui/utils/ClassNameGenerator';\nimport createBox from \"../createBox/index.js\";\nimport boxClasses from \"./boxClasses.js\";\nconst Box = createBox({\n defaultClassName: boxClasses.root,\n generateClassName: ClassNameGenerator.generate\n});\nprocess.env.NODE_ENV !== \"production\" ? Box.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Box;","'use client';\n\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport styled from '@mui/styled-engine';\nimport styleFunctionSx, { extendSxProp } from \"../styleFunctionSx/index.js\";\nimport useTheme from \"../useTheme/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createBox(options = {}) {\n const {\n themeId,\n defaultTheme,\n defaultClassName = 'MuiBox-root',\n generateClassName\n } = options;\n const BoxRoot = styled('div', {\n shouldForwardProp: prop => prop !== 'theme' && prop !== 'sx' && prop !== 'as'\n })(styleFunctionSx);\n const Box = /*#__PURE__*/React.forwardRef(function Box(inProps, ref) {\n const theme = useTheme(defaultTheme);\n const {\n className,\n component = 'div',\n ...other\n } = extendSxProp(inProps);\n return /*#__PURE__*/_jsx(BoxRoot, {\n as: component,\n ref: ref,\n className: clsx(className, generateClassName ? generateClassName(defaultClassName) : defaultClassName),\n theme: themeId ? theme[themeId] || theme : theme,\n ...other\n });\n });\n return Box;\n}","/**\n * @mui/styled-engine v7.1.1\n *\n * @license MIT\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use client';\n\n/* eslint-disable no-underscore-dangle */\nimport emStyled from '@emotion/styled';\nimport { serializeStyles as emSerializeStyles } from '@emotion/serialize';\nexport default function styled(tag, options) {\n const stylesFactory = emStyled(tag, options);\n if (process.env.NODE_ENV !== 'production') {\n return (...styles) => {\n const component = typeof tag === 'string' ? `\"${tag}\"` : 'component';\n if (styles.length === 0) {\n console.error([`MUI: Seems like you called \\`styled(${component})()\\` without a \\`style\\` argument.`, 'You must provide a `styles` argument: `styled(\"div\")(styleYouForgotToPass)`.'].join('\\n'));\n } else if (styles.some(style => style === undefined)) {\n console.error(`MUI: the styled(${component})(...args) API requires all its args to be defined.`);\n }\n return stylesFactory(...styles);\n };\n }\n return stylesFactory;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function internal_mutateStyles(tag, processor) {\n // Emotion attaches all the styles as `__emotion_styles`.\n // Ref: https://github.com/emotion-js/emotion/blob/16d971d0da229596d6bcc39d282ba9753c9ee7cf/packages/styled/src/base.js#L186\n if (Array.isArray(tag.__emotion_styles)) {\n tag.__emotion_styles = processor(tag.__emotion_styles);\n }\n}\n\n// Emotion only accepts an array, but we want to avoid allocations\nconst wrapper = [];\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function internal_serializeStyles(styles) {\n wrapper[0] = styles;\n return emSerializeStyles(wrapper);\n}\nexport { ThemeContext, keyframes, css } from '@emotion/react';\nexport { default as StyledEngineProvider } from \"./StyledEngineProvider/index.js\";\nexport { default as GlobalStyles } from \"./GlobalStyles/index.js\";","import generateUtilityClass from \"../generateUtilityClass/index.js\";\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n });\n return result;\n}","export function hasDigitsOnly(str: string) {\r\n return /^\\d+$/.test(str);\r\n}\r\n\r\nexport function isNumber(value: any) {\r\n return typeof value === \"number\" && !isNaN(value);\r\n}\r\n\r\nexport function isNumeric(value: string) {\r\n return (\r\n typeof value === \"string\" && value.trim() !== \"\" && !isNaN(Number(value))\r\n );\r\n}\r\n\r\nexport function capitalizeFirstLetter(str: string) {\r\n if (!str) return \"\";\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n}\r\n\r\nexport function isValidEmail(email) {\r\n const re = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n return re.test(email);\r\n}\r\n","import { EditorState, convertToRaw } from \"draft-js\";\r\nimport { Editor } from \"react-draft-wysiwyg\";\r\nimport draftToHtml from \"draftjs-to-html\";\r\nimport { stateFromHTML } from \"draft-js-import-html\";\r\nimport { useState } from \"react\";\r\nimport \"react-draft-wysiwyg/dist/react-draft-wysiwyg.css\";\r\nimport { useEffect } from \"react\";\r\nimport { Box, Paper } from \"@mui/material\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ntype HtmlEditorProps = {\r\n label?: string;\r\n value: string;\r\n setValue: (v: any) => void;\r\n maxLength: number;\r\n errorMessage?: string;\r\n};\r\n\r\nconst HtmlEditor: React.FC<HtmlEditorProps> = ({\r\n label,\r\n errorMessage,\r\n value,\r\n setValue,\r\n maxLength,\r\n}) => {\r\n const { t } = useTranslation();\r\n const options = {\r\n customInlineFn: (element, { Style }) => {\r\n if (element.style.color) {\r\n return Style(\"color-\" + element.style.color);\r\n }\r\n },\r\n };\r\n\r\n let contentState = stateFromHTML(value, options);\r\n\r\n const [editorState, setEditorState] = useState(\r\n EditorState.createWithContent(contentState)\r\n );\r\n let onEditorStateChange = (editorState) => {\r\n let newData = draftToHtml(convertToRaw(editorState.getCurrentContent()));\r\n console.log(\"Text Length \" + newData.length);\r\n if (newData.length > maxLength) {\r\n let contentState = stateFromHTML(\r\n newData.substring(0, maxLength),\r\n options\r\n );\r\n setEditorState(EditorState.createWithContent(contentState));\r\n return;\r\n } else {\r\n setEditorState(editorState);\r\n }\r\n setValue(draftToHtml(convertToRaw(editorState.getCurrentContent())));\r\n };\r\n useEffect(() => {\r\n if (value != draftToHtml(convertToRaw(editorState.getCurrentContent()))) {\r\n setEditorState(\r\n EditorState.createWithContent(stateFromHTML(value, options))\r\n );\r\n }\r\n }, [value]);\r\n const _getLengthOfSelectedText = () => {\r\n const currentSelection = editorState.getSelection();\r\n const isCollapsed = currentSelection.isCollapsed();\r\n\r\n let length = 0;\r\n\r\n if (!isCollapsed) {\r\n const currentContent = editorState.getCurrentContent();\r\n const startKey = currentSelection.getStartKey();\r\n const endKey = currentSelection.getEndKey();\r\n const startBlock = currentContent.getBlockForKey(startKey);\r\n const isStartAndEndBlockAreTheSame = startKey === endKey;\r\n const startBlockTextLength = startBlock.getLength();\r\n const startSelectedTextLength =\r\n startBlockTextLength - currentSelection.getStartOffset();\r\n const endSelectedTextLength = currentSelection.getEndOffset();\r\n const keyAfterEnd = currentContent.getKeyAfter(endKey);\r\n if (isStartAndEndBlockAreTheSame) {\r\n length +=\r\n currentSelection.getEndOffset() - currentSelection.getStartOffset();\r\n } else {\r\n let currentKey = startKey;\r\n\r\n while (currentKey && currentKey !== keyAfterEnd) {\r\n if (currentKey === startKey) {\r\n length += startSelectedTextLength + 1;\r\n } else if (currentKey === endKey) {\r\n length += endSelectedTextLength;\r\n } else {\r\n length += currentContent.getBlockForKey(currentKey).getLength() + 1;\r\n }\r\n\r\n currentKey = currentContent.getKeyAfter(currentKey);\r\n }\r\n }\r\n }\r\n\r\n return length;\r\n };\r\n return (\r\n <Paper\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n padding: 1,\r\n }}\r\n >\r\n {label ? <Box>{t(label)}</Box> : <></>}\r\n <Editor\r\n editorState={editorState}\r\n onEditorStateChange={onEditorStateChange}\r\n handlePastedText={(pastedText) => {\r\n const currentContent = editorState.getCurrentContent();\r\n const currentContentLength = currentContent.getPlainText(\"\").length;\r\n const selectedTextLength = _getLengthOfSelectedText();\r\n\r\n if (\r\n currentContentLength + pastedText.length - selectedTextLength >\r\n maxLength\r\n ) {\r\n alert(\"max text length is \" + maxLength);\r\n return \"handled\";\r\n }\r\n }}\r\n editorStyle={{\r\n height: \"200px\", // 👈 set height of content area\r\n border: \"1px solid #F1F1F1\",\r\n padding: \"10px\",\r\n overflow: \"auto\", // scroll if needed\r\n }}\r\n wrapperStyle={{ marginBottom: \"1rem\" }}\r\n toolbarStyle={{ border: \"1px solid #ccc\" }}\r\n />\r\n {errorMessage ? (\r\n <Box sx={{ color: \"red\" }}>{t(errorMessage)}</Box>\r\n ) : (\r\n <></>\r\n )}\r\n </Paper>\r\n );\r\n};\r\n\r\nexport default HtmlEditor;\r\n","import { useEffect, useState } from \"react\";\r\nimport { useAxios, useSession } from \"../../../../../hooks\";\r\nimport ComboBox from \"./ComboBox\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\ntype SystemLookupListProps = {\r\n lookupType: string;\r\n value: any;\r\n onChangeCallBack: Function;\r\n label: string;\r\n disabled?: boolean;\r\n required?: boolean;\r\n errorMessage?: any;\r\n sx?: any;\r\n};\r\n\r\nconst SystemLookupCombobox: React.FC<SystemLookupListProps> = (props) => {\r\n const AppLayout = useSelector((state: any) => state.AppLayout);\r\n const session = useSession();\r\n const [options, setOptions] = useState<Array<any>>([]);\r\n const { handleGetRequest } = useAxios();\r\n\r\n const loadLookupOptions = async () => {\r\n await handleGetRequest({\r\n endPointURI: \"api/v1/dev/system/lookup\",\r\n showMask: true,\r\n parameters: { lookupType: props.lookupType },\r\n successCallBkFn: (response: any) => {\r\n setOptions(response.data);\r\n },\r\n failureCallBkFn: () => {\r\n setOptions([]);\r\n },\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (props.lookupType) {\r\n loadLookupOptions();\r\n }\r\n }, [props.lookupType, session.UserSession]);\r\n\r\n return (\r\n <ComboBox\r\n {...props}\r\n options={options}\r\n displayField={\r\n AppLayout.appDirection === \"ltr\" ? \"lookupEnDisplay\" : \"lookupArDisplay\"\r\n }\r\n valueField=\"lookupValue\"\r\n />\r\n );\r\n};\r\n\r\nexport default SystemLookupCombobox;\r\n","import { Grid2 } from \"@mui/material\";\r\nimport TemplateTextField from \"./FormFields/TemplateTextField\";\r\nimport Datefield from \"./FormFields/Datefield\";\r\nimport DatetimeField from \"./FormFields/DatetimeField\";\r\nimport ComboBox from \"./FormFields/ComboBox\";\r\nimport CheckBox from \"./FormFields/CheckBox\";\r\nimport { DATE_FORMAT, DATE_TIME_FORMAT } from \"../../../../util/constants\";\r\nimport { isNumeric } from \"../../../../util/AppUtils\";\r\nimport { FormElementFieldProps } from \"../DataEntryTypes\";\r\nimport HtmlEditor from \"./FormFields/HtmlEditor\";\r\nimport SystemLookupCombobox from \"./FormFields/SystemLookupCombobox\";\r\n\r\nconst FormElementField: React.FC<FormElementFieldProps> = (\r\n element: FormElementFieldProps\r\n) => {\r\n if (element?.fieldInfo) {\r\n const props = element.fieldInfo;\r\n const formManager = element?.formManager || null;\r\n const formActions = element?.formActions || null;\r\n const formValues = element?.formValues || null;\r\n const fieldName: any = element?.fieldInfo?.fieldName || null;\r\n const fieldType = element?.fieldInfo?.fieldType || null;\r\n if (!(props && formManager && formValues && fieldName && fieldType)) {\r\n return <></>;\r\n }\r\n return !element.hiddenFields.includes(fieldName) ? (\r\n <Grid2\r\n size={\r\n props?.formProps?.fieldSize || {\r\n lg: 12,\r\n md: 12,\r\n sm: 12,\r\n }\r\n }\r\n sx={{\r\n padding: 1,\r\n width: \"100%\",\r\n }}\r\n >\r\n {fieldType === \"text\" || fieldType === \"number\" ? (\r\n <TemplateTextField\r\n {...props.muiTextFieldProps}\r\n fullWidth\r\n type={fieldType}\r\n disabled={\r\n props?.disabled || element.disabledFields.includes(fieldName)\r\n ? true\r\n : false\r\n }\r\n hidden={props?.hidden || false}\r\n label={props?.fieldLabel}\r\n value={formValues[fieldName]}\r\n onChange={(event) => {\r\n let newValue = null;\r\n if (event.target.value != \"\") {\r\n if (fieldType === \"number\" && isNumeric(event.target.value)) {\r\n newValue = Number(event.target.value);\r\n } else {\r\n newValue = event.target.value;\r\n }\r\n }\r\n formManager.setValue(fieldName, newValue);\r\n if (props?.formProps?.onValueChangeCallBack) {\r\n props?.formProps?.onValueChangeCallBack(\r\n newValue,\r\n formManager,\r\n formActions\r\n );\r\n }\r\n }}\r\n sx={{\r\n \"& .MuiInputBase-root\": {\r\n height: `${props?.formProps?.fieldHeight}px` || undefined,\r\n },\r\n \"& .MuiInputBase-input\": {\r\n height: \"100% !important\", // forces full height usage\r\n },\r\n ...props?.formProps?.style,\r\n }}\r\n error={formManager.formState.errors[fieldName] != undefined}\r\n helperText={formManager?.formState?.errors[\r\n fieldName\r\n ]?.message?.toString()}\r\n />\r\n ) : props?.fieldType === \"date\" ? (\r\n <Datefield\r\n format={props?.dateFormat || DATE_FORMAT}\r\n sx={props?.formProps?.style || { width: \"100%\" }}\r\n disabled={\r\n props?.disabled || element.disabledFields.includes(fieldName)\r\n ? true\r\n : false\r\n }\r\n label={props?.fieldLabel}\r\n onChangeCallBack={(v: any) => {\r\n formManager.setValue(fieldName, v);\r\n if (props?.formProps?.onValueChangeCallBack) {\r\n props?.formProps?.onValueChangeCallBack(\r\n v,\r\n formManager,\r\n formActions\r\n );\r\n }\r\n }}\r\n value={formValues[fieldName]}\r\n error={formManager.formState.errors[fieldName] != undefined}\r\n errorMessage={formManager?.formState?.errors[\r\n fieldName\r\n ]?.message?.toString()}\r\n />\r\n ) : props?.fieldType === \"datetime\" ? (\r\n <DatetimeField\r\n format={props?.dateFormat || DATE_TIME_FORMAT}\r\n sx={props?.formProps?.style || { width: \"100%\" }}\r\n disabled={\r\n props?.disabled || element.disabledFields.includes(fieldName)\r\n ? true\r\n : false\r\n }\r\n label={props?.fieldLabel}\r\n onChangeCallBack={(v: any) => {\r\n formManager.setValue(fieldName, v);\r\n if (props?.formProps?.onValueChangeCallBack) {\r\n props?.formProps?.onValueChangeCallBack(\r\n v,\r\n formManager,\r\n formActions\r\n );\r\n }\r\n }}\r\n value={formValues[fieldName]}\r\n error={formManager.formState.errors[fieldName] != undefined}\r\n errorMessage={formManager?.formState?.errors[\r\n fieldName\r\n ]?.message?.toString()}\r\n />\r\n ) : props?.fieldType === \"checkbox\" ? (\r\n <CheckBox\r\n label={props?.fieldLabel}\r\n onChangeCallBack={(v: any) => {\r\n formManager.setValue(fieldName, v);\r\n if (props?.formProps?.onValueChangeCallBack) {\r\n props?.formProps?.onValueChangeCallBack(\r\n v,\r\n formManager,\r\n formActions\r\n );\r\n }\r\n }}\r\n value={formValues[fieldName]}\r\n checkedValue={props?.checkedValue || true}\r\n unCheckedValue={props?.unCheckedValue || false}\r\n disabled={\r\n props?.disabled || element.disabledFields.includes(fieldName)\r\n ? true\r\n : false\r\n }\r\n sx={props?.formProps?.style}\r\n />\r\n ) : props?.fieldType === \"combobox\" ? (\r\n <ComboBox\r\n sx={props?.formProps?.style || { width: \"100%\" }}\r\n label={props?.fieldLabel}\r\n disabled={\r\n props?.disabled || element.disabledFields.includes(fieldName)\r\n ? true\r\n : false\r\n }\r\n onChangeCallBack={(v: any, selectedRecord: any) => {\r\n let newValue = null;\r\n if (v) {\r\n newValue = v + \"\";\r\n }\r\n formManager.setValue(fieldName, newValue);\r\n if (props?.formProps?.onValueChangeCallBack) {\r\n props?.formProps?.onValueChangeCallBack(\r\n newValue,\r\n formManager,\r\n formActions,\r\n selectedRecord\r\n );\r\n }\r\n }}\r\n options={props?.options || []}\r\n displayField={props?.optionDisplayField || \"\"}\r\n valueField={props?.optionValueField || \"\"}\r\n value={formValues[fieldName]}\r\n errorMessage={formManager?.formState?.errors[\r\n fieldName\r\n ]?.message?.toString()}\r\n />\r\n ) : props?.fieldType === \"lookup\" ? (\r\n <SystemLookupCombobox\r\n sx={props?.formProps?.style || { width: \"100%\" }}\r\n label={props?.fieldLabel}\r\n disabled={\r\n props?.disabled || element.disabledFields.includes(fieldName)\r\n ? true\r\n : false\r\n }\r\n onChangeCallBack={(v: any, selectedRecord: any) => {\r\n let newValue = null;\r\n if (v) {\r\n newValue = v + \"\";\r\n }\r\n formManager.setValue(fieldName, newValue);\r\n if (props?.formProps?.onValueChangeCallBack) {\r\n props?.formProps?.onValueChangeCallBack(\r\n newValue,\r\n formManager,\r\n formActions,\r\n selectedRecord\r\n );\r\n }\r\n }}\r\n lookupType={props.lookupType}\r\n value={formValues[fieldName]}\r\n errorMessage={formManager?.formState?.errors[\r\n fieldName\r\n ]?.message?.toString()}\r\n />\r\n ) : props?.fieldType === \"html\" ? (\r\n <HtmlEditor\r\n label={props.fieldLabel}\r\n value={formValues[fieldName] || \"\"}\r\n errorMessage={formManager?.formState?.errors[\r\n fieldName\r\n ]?.message?.toString()}\r\n setValue={(v) => {\r\n formManager.setValue(fieldName, v);\r\n if (props?.formProps?.onValueChangeCallBack) {\r\n props?.formProps?.onValueChangeCallBack(\r\n v,\r\n formManager,\r\n formActions\r\n );\r\n }\r\n }}\r\n maxLength={4000}\r\n />\r\n ) : (\r\n <>Unknown field type</>\r\n )}\r\n </Grid2>\r\n ) : (\r\n <></>\r\n );\r\n } else {\r\n return <></>;\r\n }\r\n};\r\n\r\nexport default FormElementField;\r\n","import { Button } from \"@mui/material\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { RecordAction } from \"../DataEntryTypes\";\r\nimport useSession from \"../../../../hooks/UseSession\";\r\nimport { useConfirmationWindow } from \"../../../../hooks/UseConfirmationWindow\";\r\n\r\nconst FormAction: React.FC<RecordAction> = (action: RecordAction) => {\r\n const session = useSession();\r\n const { ConfirmationWindow, setOpen: setConfirmationWindowState } =\r\n useConfirmationWindow({\r\n body: action?.confirmationMessage || \"\",\r\n title: \"Confirmation\",\r\n onConfirmationCallBk: () => {\r\n action?.actionFn(action?.record);\r\n },\r\n });\r\n if (\r\n action?.authority === undefined ||\r\n action?.authority === null ||\r\n session.isUserAuthorized(action.authority)\r\n ) {\r\n return (\r\n <>\r\n <ConfirmationWindow />\r\n <Button\r\n variant={action?.formActionProps?.actionButtonVariant}\r\n color={action?.formActionProps?.actionButtonColor}\r\n onClick={() => {\r\n if (action?.actionFn) {\r\n if (action?.preActionValidation) {\r\n if (!action.preActionValidation(action.record)) {\r\n return;\r\n }\r\n }\r\n if (action?.isConfirmationRequired === true) {\r\n setConfirmationWindowState(true);\r\n } else {\r\n action?.actionFn(action.record);\r\n }\r\n }\r\n }}\r\n >\r\n {action?.icon ? (\r\n <FontAwesomeIcon\r\n icon={action.icon}\r\n style={{ marginRight: 5, marginLeft: 5 }}\r\n />\r\n ) : (\r\n <></>\r\n )}\r\n <div>{action?.label}</div>\r\n </Button>\r\n </>\r\n );\r\n } else {\r\n return <></>;\r\n }\r\n};\r\n\r\nexport default FormAction;\r\n","import { Grid2 } from \"@mui/material\";\r\nimport FormElementField from \"./FormElementField\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport FormAction from \"./FormAction\";\r\nimport {\r\n FormElementGroupProps,\r\n FormElementProps,\r\n RecordAction,\r\n} from \"../DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst FormElementGroup: React.FC<FormElementGroupProps> = (\r\n props: FormElementGroupProps\r\n) => {\r\n const { t } = useTranslation();\r\n return (\r\n <>\r\n <Grid2 container sx={props?.style} alignItems=\"flex-start\">\r\n {props?.label ? (\r\n <Grid2\r\n size={12}\r\n sx={{\r\n padding: 1,\r\n fontWeight: \"bold\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-start\",\r\n }}\r\n >\r\n {props?.icon ? (\r\n <>\r\n <FontAwesomeIcon\r\n icon={props.icon}\r\n style={{ marginRight: 5, marginLeft: 5 }}\r\n />\r\n <div>{t(props.label)}</div>\r\n </>\r\n ) : (\r\n <>{t(props.label)}</>\r\n )}\r\n </Grid2>\r\n ) : (\r\n <></>\r\n )}\r\n {props?.elements\r\n ? props.elements.map((element: FormElementProps) => {\r\n if (element.type === \"group\") {\r\n return (\r\n <FormElementGroup\r\n {...element.props}\r\n formManager={props.formManager}\r\n formValues={props.formValues}\r\n formActions={props.formActions}\r\n hiddenFields={props.hiddenFields}\r\n disabledFields={props.disabledFields}\r\n />\r\n );\r\n } else if (element.type === \"field\" && element.mode === \"props\") {\r\n return (\r\n <FormElementField\r\n fieldInfo={element.props}\r\n formManager={props.formManager}\r\n formValues={props.formValues}\r\n formActions={props.formActions}\r\n hiddenFields={props.hiddenFields}\r\n disabledFields={props.disabledFields}\r\n />\r\n );\r\n } else if (element.type === \"field\" && element.mode === \"node\") {\r\n return (\r\n <Grid2\r\n size={\r\n element?.props?.formProps?.fieldSize || {\r\n lg: 3,\r\n md: 6,\r\n sm: 12,\r\n }\r\n }\r\n sx={{ padding: 1, width: \"100%\" }}\r\n >\r\n <element.node\r\n formManager={props.formManager}\r\n formValues={props.formValues}\r\n formActions={props.formActions}\r\n />\r\n </Grid2>\r\n );\r\n }\r\n })\r\n : null}\r\n\r\n {props?.actions ? (\r\n <Grid2 size={{ sm: 12 }} sx={{ padding: 1 }}>\r\n {props.actions.map((action: RecordAction) => {\r\n return <FormAction {...action} record={props.formValues} />;\r\n })}\r\n </Grid2>\r\n ) : (\r\n <></>\r\n )}\r\n </Grid2>\r\n </>\r\n );\r\n};\r\n\r\nexport default FormElementGroup;\r\n","import moment from \"moment\";\r\nimport { TemplateGridColDef } from \"../DataEntryTypes\";\r\nimport Datefield from \"../TemplateDataForm/FormFields/Datefield\";\r\nimport { DATE_FORMAT, DATE_TIME_FORMAT } from \"../../../../util/constants\";\r\nimport DatetimeField from \"../TemplateDataForm/FormFields/DatetimeField\";\r\nimport ComboBox from \"../TemplateDataForm/FormFields/ComboBox\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport CheckBox from \"../TemplateDataForm/FormFields/CheckBox\";\r\n\r\nexport const generateDateColumn: any = (colDef: TemplateGridColDef) => {\r\n const column: TemplateGridColDef = {\r\n ...colDef,\r\n type: \"string\",\r\n renderEditCell: (params: any) => {\r\n return (\r\n <Datefield\r\n sx={{ width: \"100%\" }}\r\n label=\"\"\r\n value={params.value}\r\n onChangeCallBack={(v: any) => {\r\n params.api.setEditCellValue({\r\n id: params.id,\r\n field: params.field,\r\n value: v,\r\n });\r\n }}\r\n />\r\n );\r\n },\r\n valueParser: (value: any, row: any, column: any) => {\r\n let v = null;\r\n if (value !== null) {\r\n v = moment(value).format(DATE_FORMAT);\r\n }\r\n return v;\r\n },\r\n valueFormatter: (value: any, row: any, column: any) => {\r\n return row[column.field];\r\n },\r\n };\r\n return column;\r\n};\r\n\r\nexport const generateDateTimeColumn: any = (colDef: TemplateGridColDef) => {\r\n const column: TemplateGridColDef = {\r\n ...colDef,\r\n type: \"string\",\r\n renderEditCell: (params: any) => {\r\n return (\r\n <DatetimeField\r\n sx={{ width: \"100%\" }}\r\n label=\"\"\r\n value={params.value}\r\n onChangeCallBack={(v: any) => {\r\n params.api.setEditCellValue({\r\n id: params.id,\r\n field: params.field,\r\n value: v,\r\n });\r\n }}\r\n />\r\n );\r\n },\r\n valueParser: (value: any, row: any, column: any) => {\r\n let v = null;\r\n if (value !== null) {\r\n v = moment(value).format(DATE_TIME_FORMAT);\r\n }\r\n return v;\r\n },\r\n valueFormatter: (value: any, row: any, column: any) => {\r\n return row[column.field];\r\n },\r\n };\r\n return column;\r\n};\r\n\r\ntype ComboBoxColumnProps = TemplateGridColDef & {\r\n lookupType?: string;\r\n options: Array<any>;\r\n displayField: string;\r\n valueField: string;\r\n};\r\nexport const generateComboColumn: (\r\n props: ComboBoxColumnProps\r\n) => TemplateGridColDef = (colDef: ComboBoxColumnProps) => {\r\n const column: TemplateGridColDef = {\r\n ...colDef,\r\n type: \"custom\",\r\n valueGetter: (value) => {\r\n if (value) {\r\n return value + \"\";\r\n }\r\n return value;\r\n },\r\n renderCell: (parameters: any) => {\r\n let record = null;\r\n try {\r\n record = parameters.colDef.options.find(\r\n (item: any) => item[parameters.colDef.valueField] == parameters.value\r\n );\r\n } catch (e) {}\r\n return (\r\n <div>\r\n {record != null\r\n ? record[parameters.colDef.displayField]\r\n : parameters.value}\r\n </div>\r\n );\r\n },\r\n\r\n renderEditCell: (params: any) => {\r\n return (\r\n <ComboBox\r\n {...params}\r\n sx={{ width: \"100%\" }}\r\n options={params.colDef.options}\r\n valueField={params.colDef.valueField}\r\n displayField={params.colDef.displayField}\r\n onChangeCallBack={(v: any, selectedRecord: any) => {\r\n if (v === null) {\r\n params.api.setEditCellValue({\r\n id: params.id,\r\n field: params.field,\r\n value: null,\r\n });\r\n }\r\n params.api.setEditCellValue({\r\n id: params.id,\r\n field: params.field,\r\n value: v + \"\",\r\n });\r\n }}\r\n />\r\n );\r\n },\r\n };\r\n return column;\r\n};\r\n\r\ntype CheckBoxColumnProps = TemplateGridColDef & {\r\n checkedValue?: string;\r\n unCheckedValue?: string;\r\n};\r\n\r\nexport const generateCheckBoxColumn: (\r\n props: CheckBoxColumnProps\r\n) => TemplateGridColDef = (colDef: CheckBoxColumnProps) => {\r\n return {\r\n ...colDef,\r\n type: \"custom\",\r\n valueGetter: (value) => {\r\n if (value == null || value == undefined) {\r\n return null;\r\n } else {\r\n return value;\r\n }\r\n },\r\n renderCell: (parameters: any) => {\r\n const value = parameters?.value;\r\n if (\r\n value === colDef.checkedValue ||\r\n value === \"true\" ||\r\n value === 1 ||\r\n value === true\r\n ) {\r\n return <FontAwesomeIcon icon=\"check\" color=\"green\" />;\r\n } else {\r\n return <FontAwesomeIcon icon=\"xmark\" color=\"red\" />;\r\n }\r\n },\r\n renderEditCell: (params: any) => {\r\n return (\r\n <CheckBox\r\n {...params}\r\n checkedValue={colDef?.checkedValue || true}\r\n unCheckedValue={colDef?.unCheckedValue || false}\r\n onChangeCallBack={(v: any) => {\r\n params.api.setEditCellValue({\r\n id: params.id,\r\n field: params.field,\r\n value: v,\r\n });\r\n }}\r\n />\r\n );\r\n },\r\n };\r\n};\r\n","import { GridRowSelectionModel } from \"@mui/x-data-grid-premium\";\r\nimport {\r\n FormElementProps,\r\n RecordFieldProps,\r\n TemplateGridColDef,\r\n} from \"./DataEntryTypes\";\r\nimport {\r\n generateCheckBoxColumn,\r\n generateComboColumn,\r\n generateDateColumn,\r\n generateDateTimeColumn,\r\n} from \"./TemplateDataGrid/DataGridColumnsUtil\";\r\nimport * as z from \"zod\";\r\nimport { TFunction } from \"i18next\";\r\n\r\nexport const getElementFields: (\r\n element: FormElementProps\r\n) => Array<RecordFieldProps> = (element: FormElementProps) => {\r\n const fields: Array<RecordFieldProps> = [];\r\n if (element.type === \"field\" && element.mode === \"props\" && element?.props) {\r\n fields.push(element.props);\r\n } else if (\r\n element.type === \"group\" &&\r\n element?.props &&\r\n element?.props?.elements\r\n ) {\r\n for (const childElement of element.props.elements) {\r\n fields.push(...getElementFields(childElement));\r\n }\r\n }\r\n return fields;\r\n};\r\n\r\nexport const getAllFields: (\r\n elements: Array<FormElementProps>\r\n) => Array<RecordFieldProps> = (elements: Array<FormElementProps>) => {\r\n const fields: Array<RecordFieldProps> = [];\r\n for (const element of elements) {\r\n fields.push(...getElementFields(element));\r\n }\r\n return fields;\r\n};\r\n\r\nexport const constructGridColumnsFromFields: (\r\n fields: Array<RecordFieldProps>,\r\n isDefaultEditable: boolean,\r\n t: TFunction<\"translation\", undefined>\r\n) => Array<TemplateGridColDef> = (fields, isDefaultEditable, t) => {\r\n const columns: Array<TemplateGridColDef> = [];\r\n\r\n for (const tableField of fields) {\r\n if (\r\n tableField?.fieldType === \"text\" ||\r\n tableField?.fieldType === \"number\"\r\n ) {\r\n const column: TemplateGridColDef = {\r\n ...tableField?.gridProps?.muiProps,\r\n editable:\r\n tableField?.gridProps?.muiProps?.editable != undefined\r\n ? tableField?.gridProps?.muiProps?.editable\r\n : isDefaultEditable,\r\n type: tableField?.fieldType == \"number\" ? \"number\" : \"string\",\r\n field: tableField?.fieldName,\r\n headerName: t(tableField?.fieldLabel || tableField?.fieldName),\r\n headerAlign: \"center\",\r\n align: \"center\",\r\n hidden: tableField?.hidden,\r\n searchable: tableField?.gridProps?.searchable,\r\n flex: 1,\r\n minWidth: 200,\r\n };\r\n\r\n columns.push(column);\r\n } else if (tableField?.fieldType === \"date\") {\r\n const column: TemplateGridColDef = generateDateColumn({\r\n ...tableField?.gridProps?.muiProps,\r\n editable:\r\n tableField?.gridProps?.muiProps?.editable != undefined\r\n ? tableField?.gridProps?.muiProps?.editable\r\n : isDefaultEditable,\r\n field: tableField?.fieldName,\r\n headerName: t(tableField?.fieldLabel || tableField?.fieldName),\r\n headerAlign: \"center\",\r\n align: \"center\",\r\n hidden: tableField?.hidden,\r\n searchable: tableField?.gridProps?.searchable,\r\n flex: 1,\r\n minWidth: 200,\r\n });\r\n columns.push(column);\r\n } else if (tableField?.fieldType === \"datetime\") {\r\n const column: TemplateGridColDef = generateDateTimeColumn({\r\n ...tableField?.gridProps?.muiProps,\r\n editable:\r\n tableField?.gridProps?.muiProps?.editable != undefined\r\n ? tableField?.gridProps?.muiProps?.editable\r\n : isDefaultEditable,\r\n field: tableField?.fieldName,\r\n headerName: t(tableField?.fieldLabel || tableField?.fieldName),\r\n headerAlign: \"center\",\r\n align: \"center\",\r\n hidden: tableField?.hidden,\r\n searchable: tableField?.gridProps?.searchable,\r\n flex: 1,\r\n minWidth: 200,\r\n });\r\n columns.push(column);\r\n } else if (tableField?.fieldType === \"checkbox\") {\r\n const column = generateCheckBoxColumn({\r\n ...tableField?.gridProps?.muiProps,\r\n editable:\r\n tableField?.gridProps?.muiProps?.editable != undefined\r\n ? tableField?.gridProps?.muiProps?.editable\r\n : isDefaultEditable,\r\n field: tableField?.fieldName,\r\n headerName: t(tableField?.fieldLabel || tableField?.fieldName),\r\n headerAlign: \"center\",\r\n align: \"center\",\r\n hidden: tableField?.hidden,\r\n searchable: tableField?.gridProps?.searchable,\r\n checkedValue: tableField?.checkedValue,\r\n unCheckedValue: tableField?.unCheckedValue,\r\n width: 150,\r\n });\r\n columns.push(column);\r\n } else if (tableField?.fieldType === \"combobox\") {\r\n const column: TemplateGridColDef = generateComboColumn({\r\n ...tableField?.gridProps?.muiProps,\r\n editable:\r\n tableField?.gridProps?.muiProps?.editable != undefined\r\n ? tableField?.gridProps?.muiProps?.editable\r\n : isDefaultEditable,\r\n field: tableField?.fieldName,\r\n headerName: t(tableField?.fieldLabel || tableField?.fieldName),\r\n headerAlign: \"center\",\r\n align: \"center\",\r\n hidden: tableField?.hidden,\r\n searchable: tableField?.gridProps?.searchable,\r\n valueField: tableField?.optionValueField || \"value\",\r\n displayField: tableField?.optionDisplayField || \"display\",\r\n options: tableField?.options || [],\r\n flex: 1,\r\n minWidth: 200,\r\n });\r\n columns.push(column);\r\n } else if (tableField?.fieldType === \"lookup\") {\r\n const column: TemplateGridColDef = generateComboColumn({\r\n ...tableField?.gridProps?.muiProps,\r\n editable:\r\n tableField?.gridProps?.muiProps?.editable != undefined\r\n ? tableField?.gridProps?.muiProps?.editable\r\n : isDefaultEditable,\r\n lookupType: tableField?.lookupType,\r\n field: tableField?.fieldName,\r\n headerName: t(tableField?.fieldLabel || tableField?.fieldName),\r\n headerAlign: \"center\",\r\n align: \"center\",\r\n hidden: tableField?.hidden,\r\n searchable: tableField?.gridProps?.searchable,\r\n valueField: tableField?.optionValueField || \"value\",\r\n displayField: tableField?.optionDisplayField || \"display\",\r\n options: tableField?.options || [],\r\n flex: 1,\r\n minWidth: 200,\r\n });\r\n columns.push(column);\r\n }\r\n }\r\n return columns;\r\n};\r\n\r\nexport const constructValidationSchema = (fields: Array<RecordFieldProps>) => {\r\n const validationSchemaObj: any = {};\r\n for (const field of fields) {\r\n if (field?.fieldName) {\r\n const fieldName = field.fieldName;\r\n if (field.fieldType === \"number\") {\r\n if (field?.required === true) {\r\n validationSchemaObj[fieldName] = z.number({\r\n required_error: \"This field is required\",\r\n invalid_type_error: \"This field must be a number\",\r\n });\r\n } else {\r\n validationSchemaObj[fieldName] = z.number().optional().nullable();\r\n }\r\n } else if (field.fieldType === \"checkbox\") {\r\n if (field?.required === true) {\r\n validationSchemaObj[fieldName] = z.boolean({\r\n required_error: \"This field is required\",\r\n });\r\n } else {\r\n validationSchemaObj[fieldName] = z.boolean().optional().nullable();\r\n }\r\n } else {\r\n if (field?.required === true) {\r\n validationSchemaObj[fieldName] = z\r\n .string({ message: \"This field is required\" })\r\n .min(1, \"This field is required\");\r\n } else {\r\n validationSchemaObj[fieldName] = z.string().optional().nullable();\r\n }\r\n }\r\n }\r\n }\r\n return validationSchemaObj;\r\n};\r\n\r\nexport type GridSelection = {\r\n selectedRecords: Array<any>;\r\n selectedRecordIds: Array<any>;\r\n};\r\n\r\nexport const getGridSelection: (\r\n rowSelectionModel: GridRowSelectionModel,\r\n data: Array<any>,\r\n keyColumnName: string\r\n) => GridSelection = (\r\n rowSelectionModel: GridRowSelectionModel,\r\n data: Array<any>,\r\n keyColumnName: string\r\n) => {\r\n const sRecords = [];\r\n const sRecordIds = [];\r\n if (\r\n rowSelectionModel.type === \"exclude\" &&\r\n rowSelectionModel.ids.size === 0\r\n ) {\r\n for (const record of data) {\r\n sRecords.push(record);\r\n sRecordIds.push(record[keyColumnName]);\r\n }\r\n } else {\r\n if (rowSelectionModel?.ids) {\r\n for (const selectedId of rowSelectionModel.ids) {\r\n const record = data.find((x) => x[keyColumnName] === selectedId);\r\n sRecords.push(record);\r\n sRecordIds.push(selectedId);\r\n }\r\n }\r\n }\r\n return { selectedRecords: sRecords, selectedRecordIds: sRecordIds };\r\n};\r\n","import { Box } from \"@mui/system\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport * as z from \"zod\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport { zodResolver } from \"@hookform/resolvers/zod\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport { Button, Grid2 } from \"@mui/material\";\r\nimport { toast } from \"react-toastify\";\r\nimport FormElementGroup from \"./FormElementGroup\";\r\nimport FormElementField from \"./FormElementField\";\r\nimport FormAction from \"./FormAction\";\r\nimport { constructValidationSchema, getAllFields } from \"../DataEntryUtil\";\r\nimport {\r\n FormElementProps,\r\n RecordAction,\r\n TemplateFormProps,\r\n} from \"../DataEntryTypes\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst TemplateForm: React.FC<TemplateFormProps> = (\r\n props: TemplateFormProps\r\n) => {\r\n const { t } = useTranslation();\r\n const fields = getAllFields(props.elements);\r\n const initiallyHiddenFields = [];\r\n for (const field of fields) {\r\n if (field?.hidden) {\r\n initiallyHiddenFields.push(field.fieldName);\r\n }\r\n }\r\n const [hiddenFields, setHiddenFields] = useState<string[]>(\r\n initiallyHiddenFields\r\n );\r\n const initialValues: any = {};\r\n for (const element of props.elements) {\r\n if (\r\n element?.type === \"field\" &&\r\n element?.mode === \"props\" &&\r\n element?.props?.defaultValue\r\n ) {\r\n initialValues[element.props.fieldName] = element.props.defaultValue;\r\n }\r\n }\r\n const [disabledFields, setDisabledFields] = useState<string[]>([]);\r\n const formSchema = z.object(constructValidationSchema(fields));\r\n type FormData = z.infer<typeof formSchema>;\r\n const formManager = useForm<FormData>({\r\n resolver: zodResolver(formSchema),\r\n defaultValues: initialValues,\r\n });\r\n const formValues = formManager.watch();\r\n const pathParameters = useParams();\r\n const formRouteRecordIdParamName: any = props?.formRouteRecordIdParamName;\r\n\r\n const loadRecord = async () => {\r\n let idToLoad = null;\r\n if (props?.recordIdToEdit) {\r\n idToLoad = props.recordIdToEdit;\r\n } else if (\r\n formRouteRecordIdParamName &&\r\n pathParameters[formRouteRecordIdParamName]\r\n ) {\r\n idToLoad = pathParameters[formRouteRecordIdParamName];\r\n }\r\n if (idToLoad) {\r\n const retrievedRecord: any = await props.apiActions.loadRecordById(\r\n idToLoad\r\n );\r\n if (retrievedRecord) {\r\n formManager.reset({ ...retrievedRecord });\r\n if (props?.formLoadCallBk) {\r\n props?.formLoadCallBk(formActions, formManager, retrievedRecord);\r\n }\r\n for (const field of fields) {\r\n if (\r\n field?.fieldType === \"combobox\" &&\r\n retrievedRecord[field.fieldName]\r\n ) {\r\n formManager.setValue(\r\n field.fieldName,\r\n retrievedRecord[field.fieldName] + \"\"\r\n );\r\n }\r\n }\r\n }\r\n } else {\r\n formManager.reset({});\r\n }\r\n };\r\n\r\n const saveRecord = async (record: any) => {\r\n if (props?.preSaveValidation && !props.preSaveValidation(record)) {\r\n return;\r\n }\r\n if (record) {\r\n const savedRecord: any = await props.apiActions.saveRecord(record);\r\n if (savedRecord) {\r\n formManager.reset({ ...savedRecord });\r\n if (props?.formSavedSuccessfullyCallBk) {\r\n props.formSavedSuccessfullyCallBk(savedRecord);\r\n }\r\n if (props?.formCloseCallBk) {\r\n props.formCloseCallBk();\r\n }\r\n }\r\n }\r\n };\r\n\r\n const formActions = {\r\n setFieldValue: (fieldName: string, fieldValue: any) => {\r\n formManager.setValue(fieldName, fieldValue);\r\n },\r\n hideField: (fieldName: string) => {\r\n setHiddenFields((oldValues) => {\r\n const newValues = [...oldValues, fieldName];\r\n return newValues;\r\n });\r\n },\r\n showField: (fieldName: string) => {\r\n setHiddenFields((oldValues) => {\r\n const newValues = oldValues.filter((x) => x !== fieldName);\r\n return newValues;\r\n });\r\n },\r\n disableField: (fieldName: string) => {\r\n setDisabledFields((oldValues) => {\r\n const newValues = [...oldValues, fieldName];\r\n return newValues;\r\n });\r\n },\r\n enableField: (fieldName: string) => {\r\n setDisabledFields((oldValues) => {\r\n const newValues = oldValues.filter((x) => x !== fieldName);\r\n return newValues;\r\n });\r\n },\r\n };\r\n\r\n useEffect(() => {\r\n loadRecord();\r\n }, [props?.recordIdToEdit]);\r\n\r\n return (\r\n <>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flex: 1,\r\n width: \"100%\",\r\n height: \"fit-content\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n overflow: \"auto\",\r\n }}\r\n >\r\n <Grid2 sx={{ width: \"100%\" }} container>\r\n {props.elements.map((formElement: FormElementProps, index) => {\r\n if (formElement.type === \"group\") {\r\n return (\r\n <FormElementGroup\r\n key={index}\r\n {...formElement.props}\r\n formManager={formManager}\r\n formValues={formValues}\r\n formActions={formActions}\r\n hiddenFields={hiddenFields}\r\n disabledFields={disabledFields}\r\n />\r\n );\r\n } else if (\r\n formElement.type === \"field\" &&\r\n formElement.mode === \"props\"\r\n ) {\r\n return (\r\n <FormElementField\r\n key={index}\r\n fieldInfo={formElement.props}\r\n formManager={formManager}\r\n formValues={formValues}\r\n formActions={formActions}\r\n hiddenFields={hiddenFields}\r\n disabledFields={disabledFields}\r\n />\r\n );\r\n } else if (\r\n formElement.type === \"field\" &&\r\n formElement.mode === \"node\"\r\n ) {\r\n return (\r\n <Grid2\r\n key={index}\r\n size={\r\n formElement?.props?.formProps?.fieldSize || {\r\n lg: 3,\r\n md: 6,\r\n xs: 12,\r\n }\r\n }\r\n sx={{ padding: 1, width: \"100%\" }}\r\n >\r\n <formElement.node\r\n formManager={formManager}\r\n formValues={formValues}\r\n />\r\n </Grid2>\r\n );\r\n }\r\n })}\r\n </Grid2>\r\n </Box>\r\n\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n width: \"100%\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-start\",\r\n }}\r\n >\r\n {props?.actions ? (\r\n props.actions.map((action: RecordAction) => {\r\n if (action?.formActionProps?.enabled === true) {\r\n return <FormAction {...action} record={formValues} />;\r\n } else {\r\n return <></>;\r\n }\r\n })\r\n ) : (\r\n <></>\r\n )}\r\n <div style={{ flex: 1 }}></div>\r\n <Button\r\n variant={\r\n props?.saveButtonSpecs?.actionButtonVariant\r\n ? props.saveButtonSpecs.actionButtonVariant\r\n : \"contained\"\r\n }\r\n sx={{ m: 1 }}\r\n startIcon={\r\n props?.saveButtonSpecs?.icon ? (\r\n <FontAwesomeIcon icon={props.saveButtonSpecs.icon} />\r\n ) : null\r\n }\r\n color={\r\n props?.saveButtonSpecs?.actionButtonColor\r\n ? props.saveButtonSpecs.actionButtonColor\r\n : \"primary\"\r\n }\r\n onClick={formManager.handleSubmit(\r\n (values) => {\r\n console.log(\"form values\", values);\r\n saveRecord(values);\r\n },\r\n (errors) => {\r\n toast.error(\r\n \"Form Data is not valid, make sure you have all field with valid data\"\r\n );\r\n console.log(\"form validation error\", errors);\r\n }\r\n )}\r\n >\r\n {t(props?.saveButtonSpecs?.label || \"SAVE_BTN_LABEL\")}\r\n </Button>\r\n <Button\r\n variant={\r\n props?.cancelButtonSpecs?.actionButtonVariant\r\n ? props.cancelButtonSpecs.actionButtonVariant\r\n : \"contained\"\r\n }\r\n startIcon={\r\n props?.cancelButtonSpecs?.icon ? (\r\n <FontAwesomeIcon icon={props.cancelButtonSpecs.icon} />\r\n ) : null\r\n }\r\n color={\r\n props?.cancelButtonSpecs?.actionButtonColor\r\n ? props.cancelButtonSpecs.actionButtonColor\r\n : \"error\"\r\n }\r\n sx={{ m: 1 }}\r\n onClick={() => {\r\n if (props?.formCloseCallBk) {\r\n props.formCloseCallBk();\r\n }\r\n formManager.reset(initialValues);\r\n }}\r\n >\r\n {t(props?.cancelButtonSpecs?.label || \"CANCEL_BTN_LABEL\")}\r\n </Button>\r\n </Box>\r\n </>\r\n );\r\n};\r\n\r\nexport default TemplateForm;\r\n","import { Button } from \"@mui/material\";\r\nimport { RecordAction } from \"../DataEntryTypes\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { toast } from \"react-toastify\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport useSession from \"../../../../hooks/UseSession\";\r\nimport { useConfirmationWindow } from \"../../../../hooks/UseConfirmationWindow\";\r\n\r\nconst TemplateGridMultiRecordAction: React.FC<RecordAction> = (\r\n rowAction: RecordAction\r\n) => {\r\n const { t } = useTranslation();\r\n const session = useSession();\r\n const { ConfirmationWindow, setOpen } = useConfirmationWindow({\r\n body: t(rowAction?.confirmationMessage || \"ACTION_CONFIRMATION\"),\r\n title: t(\"CONFIRMATION\"),\r\n onConfirmationCallBk: async () => {\r\n await rowAction?.actionFn(\r\n rowAction.recordsToProcessActionOn,\r\n rowAction.recordIdsToProcessActionOn\r\n );\r\n if (rowAction?.reloadData) {\r\n rowAction.reloadData();\r\n }\r\n },\r\n });\r\n let isActionAllowed = true;\r\n if (rowAction.authority) {\r\n isActionAllowed = session.isUserAuthorized(rowAction.authority);\r\n }\r\n\r\n if (isActionAllowed) {\r\n return (\r\n <>\r\n <ConfirmationWindow />\r\n <Button\r\n onClick={async () => {\r\n if (\r\n rowAction?.recordsToProcessActionOn &&\r\n rowAction?.recordsToProcessActionOn.length > 0\r\n ) {\r\n if (rowAction?.preActionValidation) {\r\n for (const record of rowAction.recordsToProcessActionOn) {\r\n if (!rowAction.preActionValidation(record)) {\r\n return;\r\n }\r\n }\r\n }\r\n if (rowAction?.isConfirmationRequired === true) {\r\n setOpen(true);\r\n } else {\r\n await rowAction.actionFn(\r\n rowAction.recordsToProcessActionOn,\r\n rowAction.recordIdsToProcessActionOn\r\n );\r\n if (rowAction?.reloadData) {\r\n rowAction.reloadData();\r\n }\r\n }\r\n } else {\r\n toast.error(t(\"AT_LEAST_ONE_RECORD_SELECTED_MESSAGE\"));\r\n }\r\n }}\r\n variant={\r\n rowAction?.label\r\n ? \"outlined\"\r\n : rowAction?.formActionProps?.actionButtonVariant\r\n ? rowAction.formActionProps.actionButtonVariant\r\n : \"text\"\r\n }\r\n size=\"small\"\r\n color={rowAction?.formActionProps?.actionButtonColor || \"primary\"}\r\n >\r\n {rowAction?.icon ? (\r\n <FontAwesomeIcon\r\n style={{ marginRight: 5, marginLeft: 5 }}\r\n icon={rowAction.icon}\r\n />\r\n ) : (\r\n <></>\r\n )}\r\n {rowAction?.label ? t(rowAction.label) : <></>}\r\n </Button>\r\n </>\r\n );\r\n }\r\n};\r\n\r\nexport default TemplateGridMultiRecordAction;\r\n","import {\r\n Badge,\r\n Box,\r\n Button,\r\n Divider,\r\n IconButton,\r\n InputAdornment,\r\n MenuItem,\r\n styled,\r\n TextField,\r\n Tooltip,\r\n} from \"@mui/material\";\r\nimport {\r\n Toolbar,\r\n ToolbarButton,\r\n ColumnsPanelTrigger,\r\n FilterPanelTrigger,\r\n QuickFilter,\r\n QuickFilterControl,\r\n QuickFilterClear,\r\n QuickFilterTrigger,\r\n GridViewColumnIcon,\r\n GridFilterListIcon,\r\n ExportExcel,\r\n} from \"@mui/x-data-grid-premium\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport TemplateGridMultiRecordAction from \"./TemplateGridMultiRecordAction\";\r\nimport { getGridSelection } from \"../DataEntryUtil\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { TemplateGridTopBarProps } from \"../DataEntryTypes\";\r\nimport useSession from \"../../../../hooks/UseSession\";\r\n\r\ntype OwnerState = {\r\n expanded: boolean;\r\n};\r\n\r\nconst StyledQuickFilter = styled(QuickFilter)({\r\n display: \"grid\",\r\n alignItems: \"center\",\r\n});\r\n\r\nconst StyledToolbarButton = styled(ToolbarButton)<{ ownerState: OwnerState }>(\r\n ({ theme, ownerState }) => ({\r\n gridArea: \"1 / 1\",\r\n width: \"min-content\",\r\n height: \"min-content\",\r\n zIndex: 1,\r\n opacity: ownerState.expanded ? 0 : 1,\r\n pointerEvents: ownerState.expanded ? \"none\" : \"auto\",\r\n transition: theme.transitions.create([\"opacity\"]),\r\n })\r\n);\r\n\r\nconst StyledTextField = styled(TextField)<{\r\n ownerState: OwnerState;\r\n}>(({ theme, ownerState }) => ({\r\n gridArea: \"1 / 1\",\r\n overflowX: \"clip\",\r\n width: ownerState.expanded ? 260 : \"var(--trigger-width)\",\r\n opacity: ownerState.expanded ? 1 : 0,\r\n transition: theme.transitions.create([\"width\", \"opacity\"]),\r\n}));\r\n\r\nconst TemplateGridTopBar: React.FC<TemplateGridTopBarProps> = (\r\n props: TemplateGridTopBarProps\r\n) => {\r\n const { t } = useTranslation();\r\n const session = useSession();\r\n const isCreationAuthorized = props?.templateProps?.editAction?.authority\r\n ? session.isUserAuthorized(props.templateProps.editAction.authority)\r\n : true;\r\n const isCreationEnabled = props?.templateProps?.disableDefaultAction || true;\r\n const gridSelection = getGridSelection(\r\n props?.templateProps?.rowSelectionModel || {\r\n ids: new Set(),\r\n type: \"include\",\r\n },\r\n props?.templateProps?.data || [],\r\n props?.templateProps?.keyColumnName || \"id\"\r\n );\r\n return (\r\n <Toolbar>\r\n {isCreationEnabled &&\r\n isCreationAuthorized &&\r\n props?.templateProps?.editMode?.editMode != \"none\" ? (\r\n <Button onClick={props?.handleCreateNewRecord}>\r\n <FontAwesomeIcon\r\n icon=\"add\"\r\n style={{ marginRight: 5, marginLeft: 5 }}\r\n />\r\n {t(\"ADD_BTN_LABEL\")}\r\n </Button>\r\n ) : (\r\n <></>\r\n )}\r\n {props?.templateProps?.rowActions ? (\r\n props.templateProps.rowActions.map((rowAction, index) =>\r\n rowAction?.gridActionProps?.multiRecord === true ? (\r\n <TemplateGridMultiRecordAction\r\n {...rowAction}\r\n key={index}\r\n reloadData={async () => {\r\n props.templateProps.apiActions.reloadData(\r\n props?.templateProps?.gridLoadParametersValues\r\n );\r\n }}\r\n recordIdsToProcessActionOn={gridSelection.selectedRecordIds}\r\n recordsToProcessActionOn={gridSelection.selectedRecords}\r\n />\r\n ) : null\r\n )\r\n ) : (\r\n <></>\r\n )}\r\n <Box sx={{ flex: 1, mx: 0.5 }}>{props?.templateProps?.tBar}</Box>\r\n\r\n <Tooltip title=\"Columns\">\r\n <ColumnsPanelTrigger render={<ToolbarButton />}>\r\n <GridViewColumnIcon fontSize=\"small\" />\r\n </ColumnsPanelTrigger>\r\n </Tooltip>\r\n\r\n <Tooltip title=\"Filters\">\r\n <FilterPanelTrigger\r\n render={(props, state) => (\r\n <ToolbarButton {...props} color=\"default\">\r\n <Badge\r\n badgeContent={state.filterCount}\r\n color=\"primary\"\r\n variant=\"dot\"\r\n >\r\n <GridFilterListIcon fontSize=\"small\" />\r\n </Badge>\r\n </ToolbarButton>\r\n )}\r\n />\r\n </Tooltip>\r\n\r\n {props?.templateProps?.gridStateKey ? (\r\n <Tooltip title={t(\"RESET_GRID_STATE\")}>\r\n <IconButton onClick={props?.clearGridState}>\r\n <FontAwesomeIcon icon=\"eraser\" />\r\n </IconButton>\r\n </Tooltip>\r\n ) : (\r\n <></>\r\n )}\r\n\r\n <Divider\r\n orientation=\"vertical\"\r\n variant=\"middle\"\r\n flexItem\r\n sx={{ mx: 0.5 }}\r\n />\r\n\r\n <Tooltip title={t(\"EXPORT_EXECL_LABEL\")}>\r\n <ExportExcel render={<MenuItem />}>\r\n <FontAwesomeIcon icon=\"file-excel\" color=\"green\" />\r\n </ExportExcel>\r\n </Tooltip>\r\n\r\n <StyledQuickFilter>\r\n <QuickFilterTrigger\r\n render={(triggerProps, state) => (\r\n <Tooltip title={t(\"SEARCH_BTN_LABEL\")} enterDelay={0}>\r\n <StyledToolbarButton\r\n {...triggerProps}\r\n ownerState={{ expanded: state.expanded }}\r\n color=\"default\"\r\n aria-disabled={state.expanded}\r\n >\r\n <FontAwesomeIcon icon=\"search\" />\r\n </StyledToolbarButton>\r\n </Tooltip>\r\n )}\r\n />\r\n <QuickFilterControl\r\n render={({ ref, ...controlProps }, state) => (\r\n <StyledTextField\r\n {...controlProps}\r\n ownerState={{ expanded: state.expanded }}\r\n inputRef={ref}\r\n aria-label=\"Search\"\r\n placeholder={`${t(\"SEARCH_BTN_LABEL\")}...`}\r\n size=\"small\"\r\n slotProps={{\r\n input: {\r\n startAdornment: (\r\n <InputAdornment position=\"start\">\r\n <FontAwesomeIcon icon=\"search\" />\r\n </InputAdornment>\r\n ),\r\n endAdornment: state.value ? (\r\n <InputAdornment position=\"end\">\r\n <QuickFilterClear\r\n edge=\"end\"\r\n size=\"small\"\r\n aria-label=\"Clear search\"\r\n // material={{ sx: { marginRight: -0.75 } }}\r\n >\r\n <FontAwesomeIcon icon=\"xmark\" />\r\n </QuickFilterClear>\r\n </InputAdornment>\r\n ) : null,\r\n ...controlProps.slotProps?.input,\r\n },\r\n ...controlProps.slotProps,\r\n }}\r\n />\r\n )}\r\n />\r\n </StyledQuickFilter>\r\n\r\n <IconButton\r\n onClick={() => {\r\n props.templateProps.apiActions.reloadData(\r\n props?.templateProps?.gridLoadParametersValues\r\n );\r\n }}\r\n >\r\n <FontAwesomeIcon icon=\"refresh\" />\r\n </IconButton>\r\n </Toolbar>\r\n );\r\n};\r\n\r\nexport default TemplateGridTopBar;\r\n","import { Tooltip } from \"@mui/material\";\r\nimport { GridActionsCellItem } from \"@mui/x-data-grid-premium\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { RecordAction } from \"../DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport useSession from \"../../../../hooks/UseSession\";\r\nimport { useConfirmationWindow } from \"../../../../hooks/UseConfirmationWindow\";\r\n\r\nconst TemplateGridRecordAction: React.FC<RecordAction> = (\r\n rowAction: RecordAction\r\n) => {\r\n const { t } = useTranslation();\r\n const session = useSession();\r\n const { ConfirmationWindow, setOpen } = useConfirmationWindow({\r\n body: t(rowAction?.confirmationMessage || \"ACTION_CONFIRMATION\"),\r\n title: t(\"CONFIRMATION\"),\r\n onConfirmationCallBk: async () => {\r\n await rowAction?.actionFn(rowAction.record);\r\n if (rowAction?.reloadData) {\r\n rowAction.reloadData();\r\n }\r\n },\r\n });\r\n let isActionAllowed = true;\r\n if (rowAction.authority) {\r\n isActionAllowed = session.isUserAuthorized(rowAction.authority);\r\n }\r\n let iconStyle: any = {};\r\n if (rowAction?.getActionIconStyleForRecord) {\r\n iconStyle = rowAction.getActionIconStyleForRecord(rowAction.record);\r\n }\r\n let isActionVisibleForRecord = true;\r\n if (rowAction?.isActionVisibleForRecord) {\r\n isActionVisibleForRecord = rowAction?.isActionVisibleForRecord(\r\n rowAction.record\r\n );\r\n }\r\n let isActionDisabledForRecord = false;\r\n if (rowAction?.isActionDisabledForRecord) {\r\n isActionDisabledForRecord = rowAction.isActionDisabledForRecord(\r\n rowAction.record\r\n );\r\n }\r\n if (isActionAllowed && isActionVisibleForRecord) {\r\n return (\r\n <>\r\n <ConfirmationWindow />\r\n <GridActionsCellItem\r\n disabled={isActionDisabledForRecord}\r\n icon={\r\n <Tooltip title={rowAction?.label ? t(rowAction.label) : \"\"}>\r\n <FontAwesomeIcon\r\n icon={rowAction.icon}\r\n style={{\r\n ...iconStyle,\r\n color: isActionDisabledForRecord\r\n ? \"gray\"\r\n : iconStyle?.color != undefined\r\n ? iconStyle.color\r\n : undefined,\r\n }}\r\n />\r\n </Tooltip>\r\n }\r\n showInMenu={rowAction?.gridActionProps?.showInMenu || false}\r\n label={\"\"}\r\n className=\"textPrimary\"\r\n color=\"inherit\"\r\n onClick={async () => {\r\n if (!isActionDisabledForRecord) {\r\n if (rowAction?.preActionValidation) {\r\n if (!rowAction.preActionValidation(rowAction.record)) {\r\n return;\r\n }\r\n }\r\n if (rowAction?.isConfirmationRequired === true) {\r\n setOpen(true);\r\n } else {\r\n await rowAction.actionFn(rowAction.record);\r\n if (\r\n rowAction?.gridActionProps?.reloadGridAfterAction === true &&\r\n rowAction?.reloadData\r\n ) {\r\n rowAction.reloadData();\r\n }\r\n }\r\n }\r\n }}\r\n />\r\n </>\r\n );\r\n }\r\n};\r\n\r\nexport default TemplateGridRecordAction;\r\n","import {\r\n DataGridPremium,\r\n GridActionsCellItem,\r\n GridActionsCellItemProps,\r\n GridColumnOrderChangeParams,\r\n GridColumnResizeParams,\r\n GridColumnVisibilityModel,\r\n GridEventListener,\r\n GridExpandMoreIcon,\r\n GridPinnedColumnFields,\r\n GridRowGroupingModel,\r\n GridRowModes,\r\n GridRowModesModel,\r\n GridRowParams,\r\n GridRowSelectionModel,\r\n} from \"@mui/x-data-grid-premium\";\r\nimport { TemplateGridColDef, TemplateGridProps } from \"../DataEntryTypes\";\r\nimport TemplateGridTopBar from \"./TemplateGridTopBar\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { z } from \"zod\";\r\nimport {\r\n constructGridColumnsFromFields,\r\n constructValidationSchema,\r\n getAllFields,\r\n} from \"../DataEntryUtil\";\r\nimport { toast } from \"react-toastify\";\r\nimport {\r\n Accordion,\r\n AccordionDetails,\r\n AccordionSummary,\r\n Box,\r\n Divider,\r\n IconButton,\r\n Tooltip,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport { capitalizeFirstLetter, isNumber } from \"../../../../util/AppUtils\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport TemplateGridRecordAction from \"./TemplateGridRecordAction\";\r\nimport TemplateForm from \"../TemplateDataForm/TemplateForm\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport useSession from \"../../../../hooks/UseSession\";\r\nimport { useConfirmationWindow } from \"../../../../hooks/UseConfirmationWindow\";\r\nimport { useWindow } from \"../../../../hooks/UseWindow\";\r\nimport { useAxios } from \"../../../../hooks\";\r\nimport useLookupGridColumn from \"../../../../hooks/useLookupGridColumn\";\r\nimport { ContinuousColorLegend } from \"@mui/x-charts\";\r\nlet currentNewRecordIndex = -1;\r\n\r\ninterface GridState {\r\n columnVisibilityModel?: GridColumnVisibilityModel;\r\n columnOrder?: string[];\r\n columnWidths?: { [key: string]: number };\r\n columnGroupingModel?: GridRowGroupingModel;\r\n pinnedColumns?: GridPinnedColumnFields;\r\n}\r\n\r\nconst loadGridState = (gridStateKey: string): GridState => {\r\n try {\r\n const saved = localStorage.getItem(gridStateKey);\r\n return saved ? JSON.parse(saved) : {};\r\n } catch (e) {\r\n console.error(\"Failed to load grid state\", e);\r\n return {};\r\n }\r\n};\r\n\r\nconst saveGridState = (gridStateKey: string, statePart: GridState) => {\r\n const current = loadGridState(gridStateKey);\r\n localStorage.setItem(\r\n gridStateKey,\r\n JSON.stringify({ ...current, ...statePart })\r\n );\r\n};\r\n\r\nconst PIN_FIXED_COLUMNS = [\"__check__\", \"actions\"];\r\n\r\nconst TemplateGrid: React.FC<TemplateGridProps> = (props) => {\r\n const AppLayout = useSelector((state: any) => state.AppLayout);\r\n const { getLookupOptions } = useLookupGridColumn();\r\n const [generatedColumns, setGeneratedColumns] = useState<\r\n Array<TemplateGridColDef>\r\n >([]);\r\n const { t } = useTranslation();\r\n const fields = getAllFields(props.formElements);\r\n const hiddenFields = [];\r\n const savedState = React.useMemo<GridState>(\r\n () => (props?.gridStateKey ? loadGridState(props.gridStateKey) : {}),\r\n []\r\n );\r\n for (const field of fields) {\r\n if (field?.gridProps?.hidden === true) {\r\n hiddenFields.push(field.fieldName);\r\n }\r\n }\r\n let initialVisibilityState: GridColumnVisibilityModel = {};\r\n if (savedState?.columnVisibilityModel) {\r\n initialVisibilityState = savedState.columnVisibilityModel;\r\n const existingFields = Object.keys(initialVisibilityState);\r\n for (const field of hiddenFields) {\r\n if (!existingFields.includes(field)) {\r\n initialVisibilityState[field] = false;\r\n }\r\n }\r\n } else {\r\n for (const field of hiddenFields) {\r\n initialVisibilityState[field] = false;\r\n }\r\n }\r\n\r\n const themeDirection = useSelector(\r\n (state: any) => state.AppLayout.appDirection\r\n );\r\n\r\n const clearGridState = () => {\r\n if (props?.gridStateKey) {\r\n localStorage.removeItem(props.gridStateKey);\r\n }\r\n setColumnVisibilityModel({});\r\n setColumnOrder([]);\r\n setColumnWidths({});\r\n setGridRowGroupingModel([]);\r\n setPinnedColumns({\r\n left: [...(themeDirection === \"ltr\" ? PIN_FIXED_COLUMNS : [])],\r\n right: [...(themeDirection === \"rtl\" ? PIN_FIXED_COLUMNS : [])],\r\n });\r\n };\r\n const [columnVisibilityModel, setColumnVisibilityModel] =\r\n React.useState<GridColumnVisibilityModel>(initialVisibilityState);\r\n const [columnOrder, setColumnOrder] = React.useState<string[]>(\r\n savedState.columnOrder || []\r\n );\r\n const [columnWidths, setColumnWidths] = React.useState<{\r\n [key: string]: number;\r\n }>(savedState.columnWidths || {});\r\n const [gridRowGroupingModel, setGridRowGroupingModel] =\r\n useState<GridRowGroupingModel>(savedState.columnGroupingModel || []);\r\n let newLeft = savedState?.pinnedColumns?.left || [];\r\n newLeft = newLeft.filter(\r\n (record: any) => !PIN_FIXED_COLUMNS.includes(record)\r\n );\r\n let newRight = savedState?.pinnedColumns?.right || [] || [];\r\n newRight = newRight.filter(\r\n (record: any) => !PIN_FIXED_COLUMNS.includes(record)\r\n );\r\n\r\n const [pinnedColumns, setPinnedColumns] = useState<GridPinnedColumnFields>({\r\n left: [...(themeDirection === \"ltr\" ? PIN_FIXED_COLUMNS : []), ...newLeft],\r\n right: [\r\n ...(themeDirection === \"rtl\" ? PIN_FIXED_COLUMNS : []),\r\n ...newRight,\r\n ],\r\n });\r\n\r\n const session = useSession();\r\n const navigate = useNavigate();\r\n const [recordToDelete, setRecordToDelete] = useState<any>(null);\r\n const [recordToEdit, setRecordToEdit] = useState<any>(null);\r\n const [rowModesModel, setRowModesModel] = useState<GridRowModesModel>({});\r\n const adjustGridColumns = async () => {\r\n let gridColumns = constructGridColumnsFromFields(\r\n fields,\r\n props?.editMode?.editMode === \"row\" || false,\r\n t\r\n );\r\n for (let gridColumn of gridColumns) {\r\n if (gridColumn?.lookupType) {\r\n gridColumn.displayField =\r\n AppLayout.appDirection === \"ltr\"\r\n ? \"lookupEnDisplay\"\r\n : \"lookupArDisplay\";\r\n gridColumn.options = await getLookupOptions(gridColumn.lookupType);\r\n gridColumn.valueField = \"lookupValue\";\r\n }\r\n } \r\n setGeneratedColumns(gridColumns);\r\n };\r\n const [rowSelectionModel, setRowSelectionModel] =\r\n useState<GridRowSelectionModel>({ ids: new Set(), type: \"include\" });\r\n let keyColumnName: string = \"id\";\r\n if (props?.keyColumnName) {\r\n keyColumnName = props?.keyColumnName;\r\n }\r\n const setData = props.setData;\r\n const validationSchema = z.object(constructValidationSchema(fields));\r\n let isEditAllowed = true;\r\n if (props?.editAction?.authority) {\r\n isEditAllowed = session.isUserAuthorized(props.editAction.authority);\r\n }\r\n let isDeleteAllowed = true;\r\n if (props?.deleteAction?.authority) {\r\n isDeleteAllowed = session.isUserAuthorized(props.deleteAction.authority);\r\n }\r\n\r\n const handleRowModesModelChange = (newModel: GridRowModesModel) => {\r\n setRowModesModel(newModel);\r\n };\r\n\r\n const handlePinnedColumnsChange = (newModel: GridPinnedColumnFields) => {\r\n let newLeft = newModel?.left || [];\r\n newLeft = newLeft.filter(\r\n (record: any) => !PIN_FIXED_COLUMNS.includes(record)\r\n );\r\n let newRight = newModel?.right || [];\r\n newRight = newRight.filter(\r\n (record: any) => !PIN_FIXED_COLUMNS.includes(record)\r\n );\r\n const newPinedColumns: GridPinnedColumnFields = {\r\n left: [\r\n ...(themeDirection === \"ltr\" ? PIN_FIXED_COLUMNS : []),\r\n ...newLeft,\r\n ],\r\n right: [\r\n ...(themeDirection === \"rtl\" ? PIN_FIXED_COLUMNS : []),\r\n ...newRight,\r\n ],\r\n };\r\n setPinnedColumns(newPinedColumns);\r\n if (props?.gridStateKey) {\r\n saveGridState(props.gridStateKey, { pinnedColumns: newPinedColumns });\r\n }\r\n };\r\n\r\n const handleDeleteRecord = async () => {\r\n let result = true;\r\n if (!(recordToDelete && recordToDelete?.isNew === true)) {\r\n result = await props.apiActions.deleteRecordById(\r\n recordToDelete[keyColumnName]\r\n );\r\n }\r\n if (result) {\r\n if (props?.deleteAction?.postActionCallBack) {\r\n await props.deleteAction.postActionCallBack(recordToDelete);\r\n }\r\n\r\n setData((oldData: any) => {\r\n const newData = oldData.filter(\r\n (record: any) =>\r\n record[keyColumnName] != recordToDelete[keyColumnName]\r\n );\r\n return newData;\r\n });\r\n }\r\n };\r\n\r\n const { ConfirmationWindow, setOpen: setConfirmationWindowOpened } =\r\n useConfirmationWindow({\r\n title: \"Confirmation\",\r\n body: \"Are you sure you want to delete this record ?\",\r\n onConfirmationCallBk: handleDeleteRecord,\r\n });\r\n\r\n let formModalHeight = undefined;\r\n let formModalWidth = undefined;\r\n let formModalMinHeight = undefined;\r\n let formModalMinWidth = undefined;\r\n let formModalIcon = undefined;\r\n let formModalTitle = undefined;\r\n\r\n if (props?.editMode?.editMode === \"modal\") {\r\n formModalHeight = props?.editMode?.specs?.modalHeight || \"fit-content\";\r\n formModalWidth = props?.editMode?.specs?.modalWidth || \"300\";\r\n formModalMinHeight = props?.editMode?.specs?.modalMinHeight;\r\n formModalMinWidth = props?.editMode?.specs?.modalMinWidth;\r\n formModalIcon = props?.editMode?.specs?.modalIcon || \"window\";\r\n formModalTitle = props?.editMode?.specs?.modalTitle || \"Record Form\";\r\n }\r\n\r\n const { Window: FormWindow, setWindowState: setFormWindowState } = useWindow({\r\n height: formModalHeight,\r\n minHeight: formModalMinHeight,\r\n minWidth: formModalMinWidth,\r\n onCloseCallBack: () => {\r\n props.apiActions.reloadData(props?.gridLoadParametersValues);\r\n },\r\n width: formModalWidth,\r\n windowIcon: formModalIcon,\r\n windowTitle: formModalTitle,\r\n });\r\n\r\n const handleCreateNewRecord = () => {\r\n if (props?.editMode?.editMode === \"form\") {\r\n navigate(props.editMode.specs.formRoute);\r\n } else if (props?.editMode?.editMode === \"modal\") {\r\n setRecordToEdit(null);\r\n setFormWindowState(true);\r\n } else if (props?.editMode?.editMode === \"row\") {\r\n currentNewRecordIndex = currentNewRecordIndex - 1;\r\n const newRecord: any = {};\r\n newRecord[keyColumnName] = currentNewRecordIndex;\r\n newRecord.isNew = true;\r\n for (const gridColumn of generatedColumns) {\r\n if (\r\n gridColumn?.type != \"actions\" &&\r\n gridColumn?.field != keyColumnName\r\n ) {\r\n if (gridColumn?.field) {\r\n newRecord[gridColumn.field] = null;\r\n }\r\n }\r\n }\r\n setData((oldRows: any) => [newRecord, ...oldRows]);\r\n setRowModesModel((oldModel: any) => ({\r\n ...oldModel,\r\n [currentNewRecordIndex]: { mode: GridRowModes.Edit },\r\n }));\r\n }\r\n };\r\n\r\n const handleEditRecord = async (record: any) => {\r\n if (record) {\r\n setRecordToEdit(record);\r\n if (props.editMode.editMode === \"form\") {\r\n navigate(props.editMode.specs.formRoute + \"/\" + record[keyColumnName]);\r\n } else if (props.editMode.editMode === \"modal\") {\r\n setFormWindowState(true);\r\n } else if (props?.editMode?.editMode === \"row\") {\r\n const id = record[keyColumnName];\r\n setRowModesModel({\r\n ...rowModesModel,\r\n [id]: { mode: GridRowModes.Edit },\r\n });\r\n }\r\n }\r\n };\r\n\r\n const validateRecord = (record: any) => {\r\n try {\r\n validationSchema.parse(record);\r\n } catch (err) {\r\n console.log(\"validateRecord err\", err);\r\n let errorMessage: any = null;\r\n if (err instanceof z.ZodError) {\r\n errorMessage = err.errors\r\n .map(\r\n (error) => \"Error in field (\" + error.path + \") : \" + error.message\r\n )\r\n .join(\",\");\r\n } else {\r\n errorMessage = \"invalid record data\";\r\n }\r\n return errorMessage;\r\n }\r\n };\r\n\r\n const handleSaveRowClick = (record: any) => {\r\n const id = record[keyColumnName];\r\n setRowModesModel({\r\n ...rowModesModel,\r\n [id]: { mode: GridRowModes.View },\r\n });\r\n };\r\n\r\n const processRowUpdate = async (record: any) => {\r\n if (props.editMode.editMode === \"row\") {\r\n let savedRecord: any = null;\r\n const errorMessage = validateRecord(record);\r\n if (errorMessage) {\r\n const errors = errorMessage.split(\",\");\r\n toast.error(\r\n <div style={{}}>\r\n {errors.map((error: any) => (\r\n <>\r\n <div>{error}</div>\r\n <Divider />\r\n </>\r\n ))}\r\n </div>\r\n );\r\n throw new Error(errorMessage);\r\n }\r\n if (props?.editAction?.preActionValidation) {\r\n if (!props.editAction.preActionValidation(record)) {\r\n throw new Error(\"error on the configured presave validation\");\r\n }\r\n }\r\n const requestObject: any = { ...record };\r\n if (\r\n record[keyColumnName] &&\r\n isNumber(record[keyColumnName]) &&\r\n Number(record[keyColumnName]) < 0\r\n ) {\r\n requestObject[keyColumnName] = null;\r\n }\r\n savedRecord = await props.apiActions.saveRecord(requestObject);\r\n if (savedRecord == null) {\r\n throw new Error(\r\n \"Failed to process your request, contact your administrator\"\r\n );\r\n }\r\n if (props?.editAction?.postActionCallBack) {\r\n await props.editAction.postActionCallBack(record);\r\n }\r\n if (record?.isNew === true) {\r\n setData((oldData: any) => {\r\n const newData = oldData.filter(\r\n (x: any) => x[keyColumnName] !== record[keyColumnName]\r\n );\r\n return [savedRecord, ...newData];\r\n });\r\n }\r\n if (\r\n props?.editMode?.reloadAfterSave === true &&\r\n props?.apiActions?.reloadData\r\n ) {\r\n props?.apiActions?.reloadData(props?.gridLoadParametersValues);\r\n }\r\n return savedRecord;\r\n }\r\n };\r\n\r\n const handleCancelRowEditClick = (record: any) => {\r\n const id = record[keyColumnName];\r\n if (id && isNumber(id) && id < 0) {\r\n setRowModesModel({\r\n ...rowModesModel,\r\n [id]: { mode: GridRowModes.View, ignoreModifications: true },\r\n });\r\n setData((oldData: any) => {\r\n const newData = oldData.filter(\r\n (record: any) => record[keyColumnName] != id\r\n );\r\n return newData;\r\n });\r\n } else {\r\n setRowModesModel({\r\n ...rowModesModel,\r\n [id]: { mode: GridRowModes.View, ignoreModifications: true },\r\n });\r\n }\r\n };\r\n\r\n const getActionColumnActions = (params: GridRowParams<any>) => {\r\n const record: any = params.row;\r\n const actions: Array<React.ReactElement<GridActionsCellItemProps>> = [];\r\n if (props?.editMode?.editMode != \"none\") {\r\n if (\r\n props?.disableDefaultAction === undefined ||\r\n !props.disableDefaultAction\r\n ) {\r\n const isInEditMode: boolean =\r\n rowModesModel[record[keyColumnName]]?.mode === GridRowModes.Edit;\r\n if (props.editMode.editMode === \"row\" && isInEditMode) {\r\n if (isEditAllowed) {\r\n actions.push(\r\n <GridActionsCellItem\r\n icon={<FontAwesomeIcon icon=\"save\" />}\r\n label={t(\"SAVE_BTN_LABEL\")}\r\n onClick={() => {\r\n handleSaveRowClick(record);\r\n }}\r\n />\r\n );\r\n actions.push(\r\n <GridActionsCellItem\r\n icon={<FontAwesomeIcon icon=\"cancel\" />}\r\n label={t(\"CANCEL_BTN_LABEL\")}\r\n onClick={() => {\r\n handleCancelRowEditClick(record);\r\n }}\r\n color=\"inherit\"\r\n />\r\n );\r\n }\r\n } else {\r\n if (props?.editAction && props?.editAction?.isEnabled === true) {\r\n let isEditActionVisibleForRecord = true;\r\n if (props?.editAction?.isActionVisibleForRecord) {\r\n isEditActionVisibleForRecord =\r\n props?.editAction?.isActionVisibleForRecord(record);\r\n }\r\n let isActionEditDisabledForRecord = false;\r\n if (props?.editAction?.isActionDisabledForRecord) {\r\n isActionEditDisabledForRecord =\r\n props?.editAction?.isActionDisabledForRecord(record);\r\n }\r\n if (isEditAllowed && isEditActionVisibleForRecord) {\r\n actions.push(\r\n <GridActionsCellItem\r\n disabled={isActionEditDisabledForRecord}\r\n icon={\r\n <Tooltip title={t(\"EDIT_BTN_LABEL\")}>\r\n <FontAwesomeIcon\r\n icon={\"edit\"}\r\n style={{\r\n color: isActionEditDisabledForRecord\r\n ? \"gray\"\r\n : undefined,\r\n }}\r\n />\r\n </Tooltip>\r\n }\r\n showInMenu={\r\n props?.editAction?.gridActionProps?.showInMenu || false\r\n }\r\n label={t(\"EDIT_BTN_LABEL\")}\r\n className=\"textPrimary\"\r\n color=\"inherit\"\r\n onClick={() => {\r\n if (isEditAllowed && !isActionEditDisabledForRecord) {\r\n handleEditRecord(record);\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n if (props?.deleteAction && props?.deleteAction?.isEnabled === true) {\r\n let isDeleteActionVisibleForRecord = true;\r\n if (props?.deleteAction?.isActionVisibleForRecord) {\r\n isDeleteActionVisibleForRecord =\r\n props?.deleteAction?.isActionVisibleForRecord(record);\r\n }\r\n let isDeleteActionDisabledForRecord = false;\r\n if (props?.deleteAction?.isActionDisabledForRecord) {\r\n isDeleteActionDisabledForRecord =\r\n props?.deleteAction?.isActionDisabledForRecord(record);\r\n }\r\n if (isDeleteAllowed && isDeleteActionVisibleForRecord) {\r\n actions.push(\r\n <GridActionsCellItem\r\n disabled={isDeleteActionDisabledForRecord}\r\n icon={\r\n <Tooltip title={t(\"DELETE_BTN_LABEL\")}>\r\n <FontAwesomeIcon\r\n icon={\"trash\"}\r\n style={{\r\n color: isDeleteActionDisabledForRecord\r\n ? \"gray\"\r\n : undefined,\r\n }}\r\n />\r\n </Tooltip>\r\n }\r\n showInMenu={\r\n props?.deleteAction?.gridActionProps?.showInMenu || false\r\n }\r\n label={t(\"DELETE_BTN_LABEL\")}\r\n className=\"textPrimary\"\r\n color=\"inherit\"\r\n onClick={() => {\r\n if (isDeleteAllowed && !isDeleteActionDisabledForRecord) {\r\n if (props?.deleteAction?.preActionValidation) {\r\n if (!props.deleteAction.preActionValidation(record)) {\r\n return;\r\n }\r\n }\r\n setRecordToDelete(record);\r\n setConfirmationWindowOpened(true);\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (props?.rowActions) {\r\n for (const rowAction of props.rowActions) {\r\n if (\r\n !(\r\n rowAction?.gridActionProps?.multiRecord &&\r\n rowAction?.gridActionProps?.multiRecord === true\r\n )\r\n ) {\r\n actions.push(\r\n <TemplateGridRecordAction\r\n {...rowAction}\r\n record={record}\r\n reloadData={async () => {\r\n props.apiActions.reloadData(props?.gridLoadParametersValues);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n\r\n return actions;\r\n };\r\n\r\n const actionColumn: TemplateGridColDef = {\r\n type: \"actions\",\r\n field: \"actions\",\r\n headerName: \"\",\r\n headerAlign: \"center\",\r\n width:\r\n (props?.rowActions ? props.rowActions.length * 30 : 0) +\r\n (props?.editAction && props?.editAction?.isEnabled ? 30 : 0) +\r\n (props?.deleteAction && props?.deleteAction?.isEnabled ? 30 : 0),\r\n getActions: getActionColumnActions,\r\n };\r\n\r\n let structuredColumns: Array<TemplateGridColDef> = [];\r\n if (\r\n props?.disableDefaultAction === undefined ||\r\n !props.disableDefaultAction ||\r\n (props?.rowActions && props?.rowActions.length > 0)\r\n ) {\r\n structuredColumns.push(actionColumn);\r\n }\r\n\r\n structuredColumns = [...structuredColumns, ...generatedColumns];\r\n const handleRowSelection = (gridSelectionModel: GridRowSelectionModel) => {\r\n setRowSelectionModel(gridSelectionModel);\r\n };\r\n useEffect(() => {\r\n if (props?.autoLoad === undefined || props.autoLoad === true) {\r\n props.apiActions.reloadData(props?.gridLoadParametersValues);\r\n }\r\n adjustGridColumns();\r\n }, []);\r\n\r\n useEffect(() => {\r\n adjustGridColumns();\r\n }, [themeDirection, props.formElements]);\r\n\r\n const handleColumnVisibilityChange = (model: GridColumnVisibilityModel) => {\r\n setColumnVisibilityModel(model);\r\n if (props?.gridStateKey) {\r\n saveGridState(props.gridStateKey, { columnVisibilityModel: model });\r\n }\r\n };\r\n\r\n const handleColumnOrderChange: GridEventListener<\"columnOrderChange\"> = (\r\n params: GridColumnOrderChangeParams\r\n ) => {\r\n const { column, targetIndex } = params;\r\n setColumnOrder((prevOrder) => {\r\n const currentOrder = prevOrder.length\r\n ? [...prevOrder]\r\n : structuredColumns.map((col) => col.field);\r\n const fromIndex = currentOrder.indexOf(column.field);\r\n if (fromIndex === -1) return currentOrder;\r\n\r\n currentOrder.splice(fromIndex, 1); // remove\r\n currentOrder.splice(targetIndex, 0, column.field); // insert at new index\r\n\r\n if (props?.gridStateKey) {\r\n saveGridState(props.gridStateKey, { columnOrder: currentOrder });\r\n }\r\n\r\n return currentOrder;\r\n });\r\n };\r\n\r\n const handleRowGroupChange = (model: GridRowGroupingModel) => {\r\n setGridRowGroupingModel(model);\r\n if (props?.gridStateKey) {\r\n saveGridState(props.gridStateKey, { columnGroupingModel: model });\r\n }\r\n };\r\n\r\n const handleColumnWidthChange: GridEventListener<\"columnWidthChange\"> = (\r\n params: GridColumnResizeParams\r\n ) => {\r\n const updatedWidths = {\r\n ...columnWidths,\r\n [params.colDef.field]: params.width,\r\n };\r\n setColumnWidths(updatedWidths);\r\n if (props?.gridStateKey) {\r\n saveGridState(props.gridStateKey, { columnWidths: updatedWidths });\r\n }\r\n };\r\n\r\n const adjustedColumns: Array<TemplateGridColDef> = React.useMemo(() => {\r\n const baseCols = structuredColumns.map((col) => ({\r\n ...col,\r\n width: columnWidths[col.field] || col.width,\r\n }));\r\n\r\n // Reorder based on saved columnOrder\r\n if (columnOrder.length) {\r\n const fieldToCol = new Map(baseCols.map((col) => [col.field, col]));\r\n return columnOrder.map((field) => fieldToCol.get(field)!).filter(Boolean);\r\n }\r\n\r\n return baseCols;\r\n }, [columnOrder, columnWidths, structuredColumns]);\r\n return (\r\n <>\r\n <ConfirmationWindow />\r\n {props?.editMode?.editMode === \"modal\" ? (\r\n <FormWindow>\r\n {props?.editMode?.specs?.formComponent ? (\r\n <props.editMode.specs.formComponent\r\n recordIdToEdit={\r\n recordToEdit ? recordToEdit[keyColumnName] : undefined\r\n }\r\n formCloseCallBk={() => {\r\n setFormWindowState(false);\r\n props.apiActions.reloadData(props?.gridLoadParametersValues);\r\n }}\r\n />\r\n ) : (\r\n <TemplateForm\r\n formLoadCallBk={props.formLoadCallBk}\r\n recordIdToEdit={\r\n recordToEdit ? recordToEdit[keyColumnName] : undefined\r\n }\r\n formCloseCallBk={() => {\r\n setFormWindowState(false);\r\n props.apiActions.reloadData(props?.gridLoadParametersValues);\r\n }}\r\n elements={props.formElements}\r\n apiActions={props.apiActions}\r\n editAuthorityKey={props?.editAction?.authority}\r\n formSavedSuccessfullyCallBk={\r\n props?.editAction?.postActionCallBack\r\n }\r\n preSaveValidation={props?.editAction?.preActionValidation}\r\n actions={props?.rowActions}\r\n />\r\n )}\r\n </FormWindow>\r\n ) : (\r\n <></>\r\n )}\r\n {props?.hideInfoBar === undefined && !props?.hideInfoBar ? (\r\n <Box sx={{ display: \"flex\" }}>\r\n {props?.hideBackButton === undefined && !props?.hideBackButton ? (\r\n <IconButton\r\n onClick={() => {\r\n navigate(-1, { replace: true });\r\n }}\r\n >\r\n <FontAwesomeIcon icon=\"arrow-left\" />\r\n </IconButton>\r\n ) : (\r\n <></>\r\n )}\r\n <Box\r\n sx={{\r\n flex: 1,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n {props?.girdIcon ? (\r\n <FontAwesomeIcon\r\n icon={props.girdIcon}\r\n style={{ marginRight: 5, marginLeft: 5 }}\r\n />\r\n ) : (\r\n <></>\r\n )}\r\n <Typography variant=\"h5\">\r\n {props?.gridTitle\r\n ? capitalizeFirstLetter(t(props?.gridTitle))\r\n : \"\"}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n ) : (\r\n <></>\r\n )}\r\n\r\n {props?.gridLoadParameters &&\r\n props?.gridLoadParameters.length > 0 &&\r\n props?.gridLoadParametersValues &&\r\n props?.setGridLoadParametersValues ? (\r\n <Accordion defaultExpanded sx={{ width: \"100%\" }}>\r\n <AccordionSummary expandIcon={<GridExpandMoreIcon />}>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <FontAwesomeIcon\r\n style={{ marginLeft: 5, marginRight: 5 }}\r\n icon=\"search\"\r\n />\r\n <Typography component=\"span\">Filters</Typography>\r\n </Box>\r\n </AccordionSummary>\r\n <AccordionDetails>\r\n <Box>\r\n <TemplateForm\r\n saveButtonSpecs={{\r\n label: t(\"SEARCH_BTN_LABEL\"),\r\n icon: \"search\",\r\n actionButtonVariant: \"outlined\",\r\n actionButtonColor: \"success\",\r\n }}\r\n cancelButtonSpecs={{\r\n label: t(\"RESET_BTN_LABEL\"),\r\n icon: \"eraser\",\r\n actionButtonVariant: \"outlined\",\r\n actionButtonColor: \"error\",\r\n }}\r\n apiActions={{\r\n deleteRecordById: async () => {\r\n return true;\r\n },\r\n saveRecord: async (params) => {\r\n if (params != undefined) {\r\n props.setGridLoadParametersValues(params);\r\n } else {\r\n props.setGridLoadParametersValues({});\r\n }\r\n props.apiActions.reloadData(params);\r\n },\r\n reloadData: async () => {},\r\n loadRecordById: async () => {},\r\n }}\r\n elements={props.gridLoadParameters}\r\n />\r\n </Box>\r\n </AccordionDetails>\r\n </Accordion>\r\n ) : (\r\n <></>\r\n )}\r\n\r\n <DataGridPremium\r\n {...props?.muiProps}\r\n slots={{ toolbar: TemplateGridTopBar }}\r\n slotProps={{\r\n toolbar: {\r\n templateProps: {\r\n ...props,\r\n rowSelectionModel: rowSelectionModel,\r\n data: props?.data,\r\n },\r\n handleCreateNewRecord,\r\n clearGridState,\r\n } as any,\r\n }}\r\n getRowId={(record: any) => {\r\n return record[keyColumnName];\r\n }}\r\n showToolbar={true}\r\n rows={props?.data}\r\n columns={adjustedColumns}\r\n checkboxSelection\r\n editMode=\"row\"\r\n rowModesModel={\r\n props.editMode.editMode == \"row\" ? rowModesModel : undefined\r\n }\r\n onRowModesModelChange={\r\n props.editMode.editMode == \"row\"\r\n ? handleRowModesModelChange\r\n : undefined\r\n }\r\n rowGroupingColumnMode=\"multiple\"\r\n processRowUpdate={processRowUpdate}\r\n rowSelectionModel={rowSelectionModel}\r\n onRowSelectionModelChange={handleRowSelection}\r\n columnVisibilityModel={columnVisibilityModel}\r\n onColumnVisibilityModelChange={handleColumnVisibilityChange}\r\n onColumnOrderChange={handleColumnOrderChange}\r\n onColumnWidthChange={handleColumnWidthChange}\r\n rowGroupingModel={gridRowGroupingModel}\r\n onRowGroupingModelChange={(model: GridRowGroupingModel) => {\r\n handleRowGroupChange(model);\r\n }}\r\n pinnedColumns={pinnedColumns}\r\n onPinnedColumnsChange={handlePinnedColumnsChange}\r\n sx={{ width: \"100%\" }}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default TemplateGrid;\r\n","import { useSelector } from \"react-redux\";\r\nimport { TemplateGridColDef } from \"../components\";\r\nimport useAxios from \"./useAxios\";\r\n\r\nconst useLookupGridColumn = () => {\r\n const { handleGetRequest } = useAxios();\r\n const AppLayout = useSelector((state: any) => state.AppLayout);\r\n const getLookupOptions = async (lookupType: string) => {\r\n let options = [];\r\n await handleGetRequest({\r\n endPointURI: \"api/v1/dev/system/lookup\",\r\n showMask: true,\r\n parameters: { lookupType },\r\n successCallBkFn: (response: any) => {\r\n options = response.data;\r\n },\r\n });\r\n return options;\r\n };\r\n const generateLookupGridColumn = async (props: TemplateGridColDef) => { \r\n let options = await getLookupOptions(props.lookupType);\r\n return {\r\n ...props,\r\n options,\r\n displayField:\r\n AppLayout.appDirection === \"ltr\"\r\n ? \"lookupEnDisplay\"\r\n : \"lookupArDisplay\",\r\n valueField: \"lookupValue\",\r\n };\r\n };\r\n return { generateLookupGridColumn, getLookupOptions };\r\n};\r\n\r\nexport default useLookupGridColumn;\r\n","import { useState } from \"react\";\r\nimport { useAxios, useSession } from \"../../hooks\";\r\nimport { ComboBox } from \"../templates\";\r\nimport { Box, Button } from \"@mui/material\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { UserSessionActions } from \"../../redux/features/common/UserSessionSlice\";\r\n\r\ntype ChangeOrgFormProps = {\r\n successChangeCallBackFn: () => void;\r\n};\r\n\r\nconst ChangeOrgForm: React.FC<ChangeOrgFormProps> = (props) => {\r\n const { UserSession } = useSession();\r\n const AppLayoutState = useSelector((state: any) => state.AppLayout);\r\n const dispatch = useDispatch();\r\n const { handlePostRequest } = useAxios();\r\n const [newOrgId, setNewOrgId] = useState(\r\n UserSession.value.currentOrganization.id\r\n );\r\n return (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n width: \"100%\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n padding: 1,\r\n }}\r\n >\r\n <ComboBox\r\n sx={{ width: \"100%\" }}\r\n displayField={\r\n AppLayoutState.appDirection === \"ltr\"\r\n ? \"organizationEnName\"\r\n : \"organizationArName\"\r\n }\r\n valueField=\"id\"\r\n label=\"\"\r\n options={UserSession.value.userOrganizations}\r\n value={newOrgId}\r\n onChangeCallBack={(value) => {\r\n setNewOrgId(value);\r\n }}\r\n />\r\n <Button\r\n sx={{ m: 1 }}\r\n variant=\"contained\"\r\n disabled={\r\n newOrgId == null ||\r\n newOrgId === UserSession.value.currentOrganization.id\r\n }\r\n onClick={async () => {\r\n await handlePostRequest({\r\n endPointURI: \"api/auth/changeCurrentOrg\",\r\n showMask: true,\r\n parameters: {\r\n username: UserSession.value.username,\r\n orgId: newOrgId,\r\n },\r\n data: {},\r\n successCallBkFn: (response) => {\r\n const UserSession = {\r\n ...response.data,\r\n isAuthenticated: true,\r\n };\r\n dispatch(UserSessionActions.setAuthenticated(UserSession));\r\n if (props.successChangeCallBackFn) {\r\n props.successChangeCallBackFn();\r\n }\r\n },\r\n });\r\n }}\r\n >\r\n Change Organization\r\n </Button>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default ChangeOrgForm;\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\n\r\nexport const DRAWER_WIDTH = 350;\r\n\r\ninterface SideBarState {\r\n isOpened: boolean;\r\n}\r\n\r\nconst initialState: SideBarState = {\r\n isOpened: false,\r\n};\r\n\r\nconst SideBarSlice = createSlice({\r\n name: \"SideBar\",\r\n initialState,\r\n reducers: {\r\n toggleSideBarState: (state) => {\r\n debugger;\r\n state.isOpened = !state.isOpened;\r\n },\r\n setSideBarState: (state, action) => {\r\n debugger;\r\n state.isOpened = action.payload;\r\n },\r\n },\r\n});\r\n\r\nexport const { toggleSideBarState, setSideBarState } = SideBarSlice.actions;\r\nexport default SideBarSlice.reducer;\r\n","import {\r\n Avatar,\r\n Box,\r\n IconButton,\r\n styled,\r\n Tooltip,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport MuiAppBar, { AppBarProps as MuiAppBarProps } from \"@mui/material/AppBar\";\r\nimport Toolbar from \"@mui/material/Toolbar\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { useIsMobile } from \"../hooks/UseMobile\";\r\nimport {\r\n AppLayoutActions,\r\n DRAWER_WIDTH,\r\n} from \"../redux/features/common/AppLayoutSlice\";\r\nimport useAxios from \"../hooks/useAxios\";\r\nimport { UserSessionActions } from \"../redux/features/common/UserSessionSlice\";\r\nimport i18n, { changeLanguage } from \"../locales/i18n\";\r\nimport { useSession, useWindow } from \"../hooks\";\r\nimport ChangeOrgForm from \"../components/common/ChangeOrgForm\";\r\nimport { toggleSideBarState } from \"../redux/features/common/SideBarSlice\";\r\n\r\ninterface AppBarProps extends MuiAppBarProps {\r\n open?: boolean;\r\n}\r\n\r\nconst AppBar = styled(MuiAppBar, {\r\n shouldForwardProp: (prop) => prop !== \"open\",\r\n})<AppBarProps>(({ theme }) => {\r\n const AppLayout = useSelector((state: any) => state.AppLayout);\r\n const isMobile = useIsMobile();\r\n return {\r\n transition: theme.transitions.create([\"margin\", \"width\"], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n variants: [\r\n {\r\n props: ({ open }) => open,\r\n style: {\r\n width: !isMobile ? `calc(100% - ${DRAWER_WIDTH}px)` : undefined,\r\n marginLeft:\r\n !isMobile && AppLayout.appDirection === \"ltr\"\r\n ? `${DRAWER_WIDTH}px`\r\n : undefined,\r\n marginRight:\r\n !isMobile && AppLayout.appDirection === \"rtl\"\r\n ? `${DRAWER_WIDTH}px`\r\n : undefined,\r\n transition: theme.transitions.create([\"margin\", \"width\"], {\r\n easing: theme.transitions.easing.easeOut,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n },\r\n },\r\n ],\r\n };\r\n});\r\n\r\nconst TopBar: React.FC = () => {\r\n const { Window: ChangeOrgWindow, setWindowState: setChangeOrgWindowState } =\r\n useWindow({\r\n windowTitle: \"Change Current Organization\",\r\n windowIcon: \"globe\",\r\n width: \"fit-content\",\r\n height: \"fit-content\",\r\n });\r\n const AppInfo = useSelector((state: any) => state.AppInfo.value);\r\n const AppLayout = useSelector((state: any) => state.AppLayout);\r\n const SideBarState = useSelector((state: any) => state.SideBar);\r\n const { UserSession } = useSession();\r\n const currentOrganization = UserSession.value.currentOrganization;\r\n const { handleGetRequest } = useAxios();\r\n const isMobile = useIsMobile();\r\n const dispatch = useDispatch();\r\n const handleLogout = async () => {\r\n try {\r\n await handleGetRequest({ endPointURI: \"api/auth/logout\" });\r\n } catch (error) {\r\n console.log(\"logout error\", error);\r\n }\r\n dispatch(UserSessionActions.setUnAuthenticated());\r\n };\r\n const toggleSideBar = () => {\r\n dispatch(toggleSideBarState());\r\n };\r\n return (\r\n <>\r\n <ChangeOrgWindow>\r\n <ChangeOrgForm\r\n successChangeCallBackFn={() => {\r\n setChangeOrgWindowState(false);\r\n }}\r\n />\r\n </ChangeOrgWindow>\r\n <AppBar position=\"fixed\" open={SideBarState.isOpened}>\r\n <Toolbar>\r\n <IconButton\r\n color=\"inherit\"\r\n aria-label=\"open drawer\"\r\n onClick={toggleSideBar}\r\n edge=\"start\"\r\n sx={[\r\n {\r\n mr: AppLayout.appDirection === \"ltr\" ? 2 : undefined,\r\n ml: AppLayout.appDirection === \"rtl\" ? 2 : undefined,\r\n },\r\n SideBarState.isOpened && { display: \"none\" },\r\n ]}\r\n >\r\n <FontAwesomeIcon icon=\"bars\" />\r\n </IconButton>\r\n <Avatar\r\n src={AppInfo.appLogo}\r\n sx={{ marginRight: 1, marginLeft: 1 }}\r\n />\r\n <Typography variant=\"h6\" noWrap component=\"div\" sx={{ flex: 1 }}>\r\n {isMobile\r\n ? \"\"\r\n : `${AppInfo.appName} - ${\r\n AppLayout.appDirection === \"ltr\"\r\n ? currentOrganization?.organizationEnName\r\n : currentOrganization?.organizationArName\r\n }`}\r\n </Typography>\r\n <Tooltip\r\n title={\r\n AppLayout.themeMode === \"light\"\r\n ? \"Switch Theme to Dark\"\r\n : \"Switch Theme to Light\"\r\n }\r\n >\r\n <IconButton\r\n color=\"inherit\"\r\n onClick={() => {\r\n dispatch(\r\n AppLayoutActions.setThemeMode(\r\n AppLayout.themeMode === \"light\" ? \"dark\" : \"light\"\r\n )\r\n );\r\n localStorage.setItem(\r\n \"themeMode\",\r\n AppLayout.themeMode === \"light\" ? \"dark\" : \"light\"\r\n );\r\n }}\r\n >\r\n {AppLayout.themeMode === \"light\" ? (\r\n <FontAwesomeIcon icon=\"moon\" />\r\n ) : (\r\n <FontAwesomeIcon icon={{ prefix: \"far\", iconName: \"sun\" }} />\r\n )}\r\n </IconButton>\r\n </Tooltip>\r\n <Tooltip\r\n title={\r\n i18n.language === \"ar\"\r\n ? \"Change Language To English\"\r\n : \"Change Language To Arabic\"\r\n }\r\n >\r\n <IconButton\r\n color=\"inherit\"\r\n onClick={() => {\r\n let nextLanguage = i18n.language === \"ar\" ? \"en\" : \"ar\";\r\n changeLanguage(nextLanguage);\r\n dispatch(\r\n AppLayoutActions.setAppDirection(\r\n nextLanguage === \"ar\" ? \"rtl\" : \"ltr\"\r\n )\r\n );\r\n }}\r\n >\r\n <FontAwesomeIcon icon=\"language\" />\r\n </IconButton>\r\n </Tooltip>\r\n {UserSession.value?.userOrganizations &&\r\n UserSession.value?.userOrganizations.length > 1 ? (\r\n <Tooltip title=\"Change Current Organization\">\r\n <IconButton\r\n color=\"inherit\"\r\n onClick={() => {\r\n setChangeOrgWindowState(true);\r\n }}\r\n >\r\n <FontAwesomeIcon icon=\"globe\" />\r\n </IconButton>\r\n </Tooltip>\r\n ) : (\r\n <></>\r\n )}\r\n\r\n <Avatar />\r\n <div style={{ marginLeft: 5, marginRight: 5 }}>\r\n {isMobile ? \"\" : UserSession.value?.username}\r\n </div>\r\n <IconButton color=\"inherit\" onClick={handleLogout}>\r\n <FontAwesomeIcon\r\n rotation={AppLayout.appDirection === \"rtl\" ? 180 : undefined}\r\n icon=\"arrow-right-from-bracket\"\r\n />\r\n </IconButton>\r\n </Toolbar>\r\n </AppBar>\r\n </>\r\n );\r\n};\r\n\r\nexport default TopBar;\r\n","import { styled } from \"@mui/material\";\r\n\r\nexport const DrawerHeader = styled(\"div\")(({ theme }) => ({\r\n display: \"flex\",\r\n alignItems: \"center\", \r\n // padding: theme.spacing(0, 1),\r\n // necessary for content to be below app bar\r\n ...theme.mixins.toolbar,\r\n justifyContent: \"flex-end\",\r\n}));\r\n","import { TreeViewBaseItem } from \"@mui/x-tree-view/models\";\r\nimport { AdministrationItems } from \"./Administration\";\r\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\n\r\nexport type ExtendedTreeItemProps = {\r\n icon: IconProp;\r\n id: string;\r\n label: string;\r\n action?: \"NAVIGATION\";\r\n authority?: string;\r\n actionPayload?: {\r\n path?: string;\r\n parameters?: object;\r\n };\r\n children?: ExtendedTreeItemProps[];\r\n};\r\n\r\nexport const findNavigationItemById = (\r\n id: string,\r\n nodes: ExtendedTreeItemProps[]\r\n): ExtendedTreeItemProps | undefined => {\r\n for (const node of nodes) {\r\n if (node.id === id) return node;\r\n if (node.children) {\r\n const found = findNavigationItemById(id, node.children);\r\n if (found) return found;\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const NavigationItems: TreeViewBaseItem<ExtendedTreeItemProps>[] = [\r\n ...AdministrationItems, \r\n];\r\n","import { TreeViewBaseItem } from \"@mui/x-tree-view/models\";\r\nimport { ExtendedTreeItemProps } from \"..\";\r\nimport { adminNavigationItems } from \"./adminNavigationItems\";\r\n\r\nexport const AdministrationItems: TreeViewBaseItem<ExtendedTreeItemProps>[] = [\r\n {\r\n id: \"home\",\r\n icon: \"home\",\r\n label: \"Home\",\r\n action: \"NAVIGATION\",\r\n actionPayload: {\r\n path: \"/\",\r\n },\r\n },\r\n ...adminNavigationItems,\r\n];\r\n","import { TreeViewBaseItem } from \"@mui/x-tree-view/models\";\r\nimport { ExtendedTreeItemProps } from \"..\";\r\n\r\nexport const adminNavigationItems: TreeViewBaseItem<ExtendedTreeItemProps>[] = [\r\n {\r\n id: \"system_admin\",\r\n label: \"System Administration\",\r\n authority: \"SYSTEM_ADMIN\",\r\n icon: \"cog\",\r\n children: [\r\n {\r\n id: \"development_admin.organization\",\r\n label: \"ORGANIZATION_PLURAL\",\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n icon: \"globe\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/organizations\" },\r\n },\r\n {\r\n id: \"development_admin.SystemApplication\",\r\n label: \"SYSTEM_APPLICATION_PLURAL\",\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n icon: \"window-restore\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/systemapplications\" },\r\n },\r\n {\r\n id: \"system_admin.Person\",\r\n label: \"PERSON_PLURAL\",\r\n icon: \"users\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/persons\" },\r\n },\r\n {\r\n id: \"system_admin.devtools\",\r\n label: \"DEVELOPMENT_TOOLS\",\r\n icon: \"code\",\r\n children: [\r\n {\r\n id: \"system_admin.devtools.DatasourceConnection\",\r\n label: \"DATASOURCE_CONNECTION_PLURAL\",\r\n icon: \"plug\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/datasourceconnections\" },\r\n },\r\n {\r\n id: \"system_admin.devtools.EntityParameter\",\r\n label: \"ENTITY_PARAMETER_PLURAL\",\r\n icon: \"p\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/entityparameters\" },\r\n },\r\n {\r\n id: \"system_admin.devtools.DataQuery\",\r\n label: \"DATA_QUERY_PLURAL\",\r\n icon: \"file-code\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/dataqueries\" },\r\n },\r\n {\r\n id: \"system_admin.devtools.Report\",\r\n label: \"REPORT_PLURAL\",\r\n icon: \"file\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/reports\" },\r\n },\r\n {\r\n id: \"system_admin.devtools.MailConfig\",\r\n label: \"Mail Sender Config\",\r\n icon: { iconName: \"paper-plane\", prefix: \"fas\" },\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/mailsender/config\" },\r\n },\r\n {\r\n id: \"system_admin.devtools.MailTemplate\",\r\n label: \"MAIL_TEMPLATE_PLURAL\",\r\n icon: \"envelope\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/mailtemplates\" },\r\n },\r\n {\r\n id: \"system_admin.devtools.WorkflowDocument\",\r\n label: \"WORKFLOW_DOCUMENT_PLURAL\",\r\n icon: \"chart-diagram\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/workflowdocuments\" },\r\n },\r\n {\r\n id: \"system_admin.devtools.Widget\",\r\n label: \"WIDGET_PLURAL\",\r\n icon: \"chart-pie\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/widgets\" },\r\n },\r\n {\r\n id: \"system_admin.devtools.Dashboard\",\r\n label: \"DASHBOARD_PLURAL\",\r\n icon: \"square-poll-vertical\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/dashboards\" },\r\n },\r\n {\r\n id: \"system_admin.devtools.BluePrint\",\r\n label: \"BLUE_PRINT_PLURAL\",\r\n icon: \"fingerprint\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/blueprints\" },\r\n },\r\n {\r\n id: \"system_admin.devtools.Notification\",\r\n label: \"NOTIFICATION_PLURAL\",\r\n icon: \"bell\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/notifications\" },\r\n },\r\n ],\r\n },\r\n {\r\n id: \"system_admin.followup\",\r\n label: \"SYSTEM_MONITORING\",\r\n icon: \"tv\",\r\n children: [\r\n {\r\n id: \"system_admin.WorkflowDocumentMailLog\",\r\n label: \"Action Mail Logs\",\r\n icon: \"envelopes-bulk\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/workflowdocumentmaillogs\" },\r\n },\r\n {\r\n id: \"system_admin.MailNotificationQueue\",\r\n label: \"Mail Notification Queue\",\r\n icon: \"envelope-open-text\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/mailnotificationqueues\" },\r\n },\r\n {\r\n id: \"system_admin.NotificationQueue\",\r\n label: \"NOTIFICATION_QUEUE_PLURAL\",\r\n icon: \"bell\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/notificationqueues\" },\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n];\r\n","import * as React from \"react\";\r\nimport clsx from \"clsx\";\r\nimport { animated, useSpring } from \"@react-spring/web\";\r\nimport { styled, alpha } from \"@mui/material/styles\";\r\nimport { TransitionProps } from \"@mui/material/transitions\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Collapse from \"@mui/material/Collapse\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport { RichTreeView } from \"@mui/x-tree-view/RichTreeView\";\r\nimport { treeItemClasses } from \"@mui/x-tree-view/TreeItem\";\r\nimport {\r\n useTreeItem2,\r\n UseTreeItem2Parameters,\r\n} from \"@mui/x-tree-view/useTreeItem2\";\r\nimport {\r\n TreeItem2Checkbox,\r\n TreeItem2Content,\r\n TreeItem2IconContainer,\r\n TreeItem2Label,\r\n TreeItem2Root,\r\n} from \"@mui/x-tree-view/TreeItem2\";\r\nimport { TreeItem2Icon } from \"@mui/x-tree-view/TreeItem2Icon\";\r\nimport { TreeItem2Provider } from \"@mui/x-tree-view/TreeItem2Provider\";\r\nimport { TreeItem2DragAndDropOverlay } from \"@mui/x-tree-view/TreeItem2DragAndDropOverlay\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { RootState } from \"../redux/store\";\r\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { useIsMobile } from \"../hooks/UseMobile\";\r\nimport useSession from \"../hooks/UseSession\";\r\nimport { findNavigationItemById, NavigationItems } from \"../navigationItems\";\r\nimport { DRAWER_WIDTH } from \"../redux/features/common/AppLayoutSlice\";\r\n\r\nfunction DotIcon() {\r\n return (\r\n <Box\r\n sx={{\r\n width: 6,\r\n height: 6,\r\n borderRadius: \"70%\",\r\n bgcolor: \"warning.main\",\r\n display: \"inline-block\",\r\n verticalAlign: \"middle\",\r\n zIndex: 1,\r\n mx: 1,\r\n }}\r\n />\r\n );\r\n}\r\ndeclare module \"react\" {\r\n interface CSSProperties {\r\n \"--tree-view-color\"?: string;\r\n \"--tree-view-bg-color\"?: string;\r\n }\r\n}\r\n\r\nconst StyledTreeItemRoot = styled(TreeItem2Root)(({ theme }) => ({\r\n color: theme.palette.grey[400],\r\n position: \"relative\",\r\n [`& .${treeItemClasses.groupTransition}`]: {\r\n marginLeft: theme.spacing(2.5),\r\n },\r\n ...theme.applyStyles(\"light\", {\r\n color: theme.palette.grey[800],\r\n }),\r\n})) as unknown as typeof TreeItem2Root;\r\n\r\nconst CustomTreeItemContent = styled(TreeItem2Content)(({ theme }) => ({\r\n flexDirection: \"row-reverse\",\r\n borderRadius: theme.spacing(0.7),\r\n marginBottom: theme.spacing(0.5),\r\n marginTop: theme.spacing(0.5),\r\n padding: theme.spacing(0.5),\r\n paddingRight: theme.spacing(1),\r\n [`&.Mui-expanded `]: {\r\n \"&:not(.Mui-focused, .Mui-selected, .Mui-selected.Mui-focused) .labelIcon\":\r\n {\r\n color: theme.palette.primary.dark,\r\n ...theme.applyStyles(\"light\", {\r\n color: theme.palette.primary.main,\r\n }),\r\n },\r\n \"&::before\": {\r\n content: '\"\"',\r\n display: \"block\",\r\n position: \"absolute\",\r\n left: \"16px\",\r\n top: \"44px\",\r\n height: \"calc(100% - 48px)\",\r\n width: \"1.5px\",\r\n backgroundColor: theme.palette.grey[700],\r\n ...theme.applyStyles(\"light\", {\r\n backgroundColor: theme.palette.grey[300],\r\n }),\r\n },\r\n },\r\n \"&:hover\": {\r\n backgroundColor: alpha(theme.palette.primary.main, 0.1),\r\n color: \"white\",\r\n ...theme.applyStyles(\"light\", {\r\n color: theme.palette.primary.main,\r\n }),\r\n },\r\n [`&.Mui-focused, &.Mui-selected, &.Mui-selected.Mui-focused`]: {\r\n backgroundColor: theme.palette.primary.dark,\r\n color: theme.palette.primary.contrastText,\r\n ...theme.applyStyles(\"light\", {\r\n backgroundColor: theme.palette.primary.main,\r\n }),\r\n },\r\n}));\r\n\r\nconst AnimatedCollapse = animated(Collapse);\r\n\r\nfunction TransitionComponent(props: TransitionProps) {\r\n const style = useSpring({\r\n to: {\r\n opacity: props.in ? 1 : 0,\r\n transform: `translate3d(0,${props.in ? 0 : 20}px,0)`,\r\n },\r\n });\r\n\r\n return <AnimatedCollapse style={style} {...props} />;\r\n}\r\n\r\nconst StyledTreeItemLabelText = styled(Typography)({\r\n color: \"inherit\",\r\n fontWeight: 500,\r\n}) as unknown as typeof Typography;\r\n\r\ninterface CustomLabelProps {\r\n children: any;\r\n icon: IconProp;\r\n expandable?: boolean;\r\n}\r\n\r\nfunction CustomLabel({\r\n icon,\r\n expandable,\r\n children,\r\n ...other\r\n}: CustomLabelProps) {\r\n const { t } = useTranslation();\r\n const appLayoutState = useSelector((state: RootState) => state.AppLayout);\r\n return (\r\n <TreeItem2Label\r\n {...other}\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n padding: 1,\r\n }}\r\n >\r\n <FontAwesomeIcon\r\n style={{\r\n marginRight: appLayoutState.appDirection === \"ltr\" ? 7 : undefined,\r\n marginLeft: appLayoutState.appDirection === \"rtl\" ? 7 : undefined,\r\n fontSize: \"1.2rem\",\r\n }}\r\n icon={icon}\r\n />\r\n <StyledTreeItemLabelText variant=\"body2\" sx={{ fontSize: 16 }}>\r\n {t(children)}\r\n </StyledTreeItemLabelText>\r\n {expandable && <DotIcon />}\r\n </TreeItem2Label>\r\n );\r\n}\r\n\r\nconst isExpandable = (reactChildren: React.ReactNode) => {\r\n if (Array.isArray(reactChildren)) {\r\n return reactChildren.length > 0 && reactChildren.some(isExpandable);\r\n }\r\n return Boolean(reactChildren);\r\n};\r\n\r\ninterface CustomTreeItemProps\r\n extends Omit<UseTreeItem2Parameters, \"rootRef\">,\r\n Omit<React.HTMLAttributes<HTMLLIElement>, \"onFocus\"> {}\r\n\r\nconst CustomTreeItem = React.forwardRef(function CustomTreeItem(\r\n props: CustomTreeItemProps,\r\n ref: React.Ref<HTMLLIElement>\r\n) {\r\n const { id, itemId, label, disabled, children, ...other } = props;\r\n const {\r\n getRootProps,\r\n getContentProps,\r\n getIconContainerProps,\r\n getCheckboxProps,\r\n getLabelProps,\r\n getGroupTransitionProps,\r\n getDragAndDropOverlayProps,\r\n status,\r\n publicAPI,\r\n } = useTreeItem2({ id, itemId, children, label, disabled, rootRef: ref });\r\n const item = publicAPI.getItem(itemId);\r\n const expandable = isExpandable(children);\r\n return (\r\n <TreeItem2Provider itemId={itemId}>\r\n <StyledTreeItemRoot {...getRootProps(other)}>\r\n <CustomTreeItemContent\r\n {...getContentProps({\r\n className: clsx(\"content\", {\r\n \"Mui-expanded\": status.expanded,\r\n \"Mui-selected\": status.selected,\r\n \"Mui-focused\": status.focused,\r\n \"Mui-disabled\": status.disabled,\r\n }),\r\n })}\r\n >\r\n <TreeItem2IconContainer {...getIconContainerProps()}>\r\n <TreeItem2Icon status={status} />\r\n </TreeItem2IconContainer>\r\n <TreeItem2Checkbox {...getCheckboxProps()} />\r\n <CustomLabel\r\n {...getLabelProps({\r\n icon: item?.icon || \"book\",\r\n expandable: expandable && status.expanded,\r\n })}\r\n />\r\n <TreeItem2DragAndDropOverlay {...getDragAndDropOverlayProps()} />\r\n </CustomTreeItemContent>\r\n {children && <TransitionComponent {...getGroupTransitionProps()} />}\r\n </StyledTreeItemRoot>\r\n </TreeItem2Provider>\r\n );\r\n});\r\n\r\nexport default function NavigationTree() {\r\n const navigate = useNavigate();\r\n const appLayoutState = useSelector((state: RootState) => state.AppLayout);\r\n const AppInfo = useSelector((state: RootState) => state.AppInfo.value);\r\n const dispatch = useDispatch();\r\n const isMobile = useIsMobile();\r\n const { isUserAuthorized } = useSession();\r\n const filterData = (data) => {\r\n return data\r\n .filter(\r\n (item: any) =>\r\n item.authority === undefined ||\r\n item.authority == null ||\r\n isUserAuthorized(item.authority)\r\n )\r\n .map((item: any) => {\r\n if (item.children) {\r\n item.children = filterData(item.children);\r\n }\r\n return item;\r\n });\r\n };\r\n\r\n const mergedNavigationItems = [];\r\n if (AppInfo.enableAdministrationModule) {\r\n mergedNavigationItems.push(...NavigationItems);\r\n }\r\n mergedNavigationItems.push(...AppInfo.businessNavigationItems);\r\n const authoriedNavigationItems = filterData(mergedNavigationItems);\r\n\r\n return (\r\n <RichTreeView\r\n items={authoriedNavigationItems}\r\n onItemClick={(event, itemId) => {\r\n const navigationItem = findNavigationItemById(\r\n itemId,\r\n mergedNavigationItems\r\n );\r\n if (\r\n navigationItem?.action === \"NAVIGATION\" &&\r\n navigationItem?.actionPayload != null &&\r\n (navigationItem.children === undefined ||\r\n navigationItem.children === null ||\r\n navigationItem.children.length == 0)\r\n ) {\r\n navigate(navigationItem?.actionPayload?.path || \"\");\r\n }\r\n }}\r\n sx={{\r\n height: \"fit-content\",\r\n flexGrow: 1,\r\n maxWidth: DRAWER_WIDTH,\r\n direction: appLayoutState.appDirection,\r\n maxHeight: isMobile ? 300 : undefined,\r\n overflowY: \"auto\",\r\n overflowX: \"auto\",\r\n }}\r\n slots={{ item: CustomTreeItem }}\r\n />\r\n );\r\n}\r\n","import Divider from \"@mui/material/Divider\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport Drawer from \"@mui/material/Drawer\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { DrawerHeader } from \"./DrawerHeader\";\r\nimport { Box, Typography, useTheme } from \"@mui/material\";\r\nimport { DRAWER_WIDTH } from \"../redux/features/common/AppLayoutSlice\";\r\nimport NavigationTree from \"./NavigationTree\";\r\nimport { useSession } from \"../hooks\";\r\nimport { toggleSideBarState } from \"../redux/features/common/SideBarSlice\";\r\n\r\nconst SideBar: React.FC = () => {\r\n const AppInfo = useSelector((state: any) => state.AppInfo.value);\r\n const { UserSession } = useSession();\r\n const currentOrganization = UserSession.value.currentOrganization;\r\n const theme = useTheme();\r\n const AppLayout = useSelector((state: any) => state.AppLayout);\r\n const SideBarState = useSelector((state: any) => state.SideBar);\r\n const dispatch = useDispatch();\r\n const toggleSideBar = () => {\r\n dispatch(toggleSideBarState());\r\n };\r\n return (\r\n <Drawer\r\n sx={{\r\n width: DRAWER_WIDTH,\r\n flexShrink: 0,\r\n \"& .MuiDrawer-paper\": {\r\n width: DRAWER_WIDTH,\r\n boxSizing: \"border-box\",\r\n },\r\n }}\r\n variant=\"persistent\"\r\n anchor={AppLayout.appDirection === \"ltr\" ? \"left\" : \"right\"}\r\n open={SideBarState.isOpened}\r\n >\r\n <DrawerHeader>\r\n <Box sx={{ width: \"100%\" }}>\r\n <Typography\r\n color=\"primary\"\r\n sx={{\r\n width: \"100%\",\r\n textAlign: \"center\",\r\n fontSize: 18,\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n System Content\r\n </Typography>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-around\",\r\n marginTop: 1,\r\n }}\r\n >\r\n <Typography sx={{ fontSize: 12 }} color=\"textDisabled\">\r\n {`${AppInfo.appName} - ${\r\n AppLayout.appDirection === \"ltr\"\r\n ? currentOrganization?.organizationEnName\r\n : currentOrganization?.organizationArName\r\n }`}\r\n </Typography>\r\n <Typography sx={{ fontSize: 12 }} color=\"textDisabled\">\r\n V.{AppInfo.appVersion}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n <IconButton onClick={toggleSideBar}>\r\n {theme.direction === \"ltr\" ? (\r\n <FontAwesomeIcon icon=\"angle-left\" />\r\n ) : (\r\n <FontAwesomeIcon icon=\"angle-right\" />\r\n )}\r\n </IconButton>\r\n </DrawerHeader>\r\n <Divider />\r\n <NavigationTree />\r\n </Drawer>\r\n );\r\n};\r\n\r\nexport default SideBar;\r\n","import rtlPlugin from \"stylis-plugin-rtl\";\r\nimport { prefixer } from \"stylis\";\r\nimport createCache from \"@emotion/cache\";\r\n\r\nexport const cacheRtl = createCache({\r\n key: \"muirtl\",\r\n stylisPlugins: [prefixer, rtlPlugin],\r\n});\r\n\r\nexport const cacheLtr = createCache({\r\n key: \"mui\",\r\n});","import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { WidgetType } from \"../../administration/dev/WidgetGrid\";\r\nimport { Backdrop, Box, CircularProgress, Grid2 } from \"@mui/material\";\r\nimport { useEffect, useState } from \"react\";\r\nimport LoadingMask from \"../../common/LoadingMask\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { useAxios } from \"../../../hooks\";\r\nimport TemplateLineChart from \"./charts/TemplateLineChart\";\r\nimport TemplateBarChart from \"./charts/TemplateBarChart\";\r\nimport TemplatePieChart from \"./charts/TemplatePieChart\";\r\nimport TemplateDataCard from \"./charts/TemplateDataCard\";\r\nimport TemplateGauge from \"./charts/TemplateGauge\";\r\nimport TemplateLineProgress from \"./charts/TemplateLineProgress\";\r\n\r\nexport type Widget = {\r\n widgetName: string;\r\n widgetDescription: string;\r\n title: string;\r\n icon: any;\r\n dataQueryId: number;\r\n widgetType: WidgetType;\r\n width: any;\r\n height: any;\r\n horizontalAxisField: any;\r\n horizontalAxisLabel: any;\r\n verticalAxisField: string;\r\n verticalAxisLabel: string;\r\n seriesKeys: any;\r\n parameterValues: {\r\n [key: string]: any;\r\n };\r\n};\r\n\r\nconst WidgetViewer: React.FC<Widget> = (props) => {\r\n const [isWidgetLoading, setWidgetLoading] = useState(true);\r\n const [data, setData] = useState([]);\r\n const { handleGetRequest } = useAxios();\r\n const getWidgetData = async () => {\r\n setWidgetLoading(true);\r\n await handleGetRequest({\r\n endPointURI: \"api/v1/dev/query/result\",\r\n showMask: false,\r\n parameters: {\r\n queryId: props.dataQueryId,\r\n ...props.parameterValues,\r\n },\r\n successCallBkFn: (response) => {\r\n setWidgetLoading(false);\r\n setData(response.data);\r\n },\r\n failureCallBkFn: () => {\r\n setWidgetLoading(false);\r\n setData(null);\r\n },\r\n });\r\n };\r\n useEffect(() => {\r\n getWidgetData();\r\n }, [props.parameterValues]);\r\n\r\n let total = 0;\r\n if (data.length == 1) {\r\n total = 100;\r\n }\r\n if (\r\n props.widgetType === \"CircularProgress\" ||\r\n props.widgetType === \"LinearProgress\"\r\n ) {\r\n for (const record of data) {\r\n total += record[props.verticalAxisField];\r\n }\r\n }\r\n return (\r\n <>\r\n {props.widgetType === \"LineChart\" ||\r\n props.widgetType === \"PieChart\" ||\r\n props.widgetType === \"ColumnChart\" ? (\r\n <Box>\r\n <FontAwesomeIcon\r\n style={{ marginRight: 10, marginLeft: 10 }}\r\n icon={props?.icon || \"chart-pie\"}\r\n />\r\n {props?.title}\r\n </Box>\r\n ) : (\r\n <></>\r\n )}\r\n\r\n <Box\r\n sx={{\r\n flex: 1,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n width: \"100%\",\r\n }}\r\n >\r\n {isWidgetLoading ? (\r\n <>\r\n <FontAwesomeIcon\r\n icon={{ prefix: \"fas\", iconName: \"arrows-spin\" }}\r\n style={{ marginRight: 10, marginLeft: 10 }}\r\n spin\r\n size=\"2x\"\r\n />\r\n <div>Loading</div>\r\n </>\r\n ) : props.widgetType === \"ColumnChart\" ? (\r\n <TemplateBarChart\r\n data={data}\r\n widgetTitle={props.title}\r\n labelField={props.verticalAxisField}\r\n valueField={props.horizontalAxisField}\r\n valueLabel={props.horizontalAxisLabel}\r\n widgetType=\"Line\"\r\n />\r\n ) : props.widgetType === \"LineChart\" ? (\r\n <TemplateLineChart\r\n data={data}\r\n widgetTitle={props.title}\r\n labelField={props.verticalAxisField}\r\n valueField={props.horizontalAxisField}\r\n valueLabel={props.horizontalAxisLabel}\r\n widgetType=\"Line\"\r\n />\r\n ) : props.widgetType === \"PieChart\" ? (\r\n <TemplatePieChart\r\n data={data}\r\n widgetTitle={props.title}\r\n labelField={props.horizontalAxisField}\r\n valueField={props.verticalAxisField}\r\n widgetType=\"Line\"\r\n />\r\n ) : (\r\n <Grid2\r\n container\r\n sx={{\r\n width: \"100%\",\r\n alignItems: \"flex-start\",\r\n justifyContent: \"flex-start\",\r\n }}\r\n spacing={2}\r\n size={{ xs: 12 }}\r\n >\r\n <Grid2 size={{ xs: 12 }} sx={{ textAlign: \"center\" }}>\r\n {props.title}\r\n </Grid2>\r\n\r\n {data.map((record, index) => {\r\n if (props.widgetType === \"Card\") {\r\n return (\r\n <Grid2 size={{ md: 3, xs: 12 }}>\r\n <TemplateDataCard\r\n key={index}\r\n widgetTitle={\"\"}\r\n record={record}\r\n labelField={props.verticalAxisField}\r\n valueField={props.horizontalAxisField}\r\n />\r\n </Grid2>\r\n );\r\n } else if (props.widgetType === \"CircularProgress\") {\r\n return (\r\n <Grid2 size={{ md: 3, xs: 12 }}>\r\n <TemplateGauge\r\n key={index}\r\n widgetTitle={\"\"}\r\n record={record}\r\n labelField={props.horizontalAxisField}\r\n valueField={props.verticalAxisField}\r\n total={total}\r\n />\r\n </Grid2>\r\n );\r\n } else if (props.widgetType === \"LinearProgress\") {\r\n return (\r\n <Grid2 size={{ md: 3, xs: 12 }}>\r\n <TemplateLineProgress\r\n key={index}\r\n widgetTitle={\"\"}\r\n record={record}\r\n labelField={props.horizontalAxisField}\r\n valueField={props.verticalAxisField}\r\n total={total}\r\n />\r\n </Grid2>\r\n );\r\n }\r\n })}\r\n </Grid2>\r\n )}\r\n </Box>\r\n </>\r\n );\r\n};\r\n\r\nexport default WidgetViewer;\r\n","import { Box, Grid2, IconButton } from \"@mui/material\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { useAxios } from \"../../../hooks\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport WidgetViewer, { Widget } from \"./WidgetViewer\";\r\nimport { useNavigate } from \"react-router-dom\";\r\n\r\ntype DashboardViewerProps = {\r\n dashboardCode: string;\r\n parameters?: { [key: string]: any };\r\n};\r\n\r\nexport interface WidgetProps {\r\n widgetTitle?: string;\r\n widgetType: \"Line\" | \"Bar\" | \"Pie\" | \"Card\" | \"Gauge\" | \"Progress\";\r\n data: any;\r\n valueLabel?: string;\r\n valueField: string; //x-axis field in case of line/bar chart\r\n labelField: string; //y-axis field in case of line/bar chart, it can also be a comma separated string for multiple series\r\n}\r\n\r\nexport interface SingleRecordWidgetProps {\r\n widgetTitle?: string;\r\n record: object;\r\n valueField: string;\r\n labelField: string;\r\n total?: number;\r\n}\r\n\r\ntype DashboardInfo = {\r\n dashboardCode: string;\r\n dashboardName: string;\r\n dashboardTitle: string;\r\n widgets: Array<Widget>;\r\n dashboardParameters: Array<any>;\r\n};\r\n\r\nconst DashboardViewer: React.FC<DashboardViewerProps> = (props) => {\r\n const [dashboardInfo, setDashboardInfo] = useState<DashboardInfo>({\r\n dashboardCode: \"\",\r\n dashboardName: \"\",\r\n dashboardTitle: \"\",\r\n dashboardParameters: [],\r\n widgets: [],\r\n });\r\n const [dashboardParameterValues, setDashboardParameterValues] = useState<{\r\n [key: string]: any;\r\n }>(props?.parameters || {});\r\n const navigate = useNavigate();\r\n const { handleGetRequest, handlePostRequest } = useAxios();\r\n const loadDashboardInfo = async () => {\r\n await handleGetRequest({\r\n endPointURI: \"api/v1/dev/dashboard/metadata\",\r\n showMask: true,\r\n parameters: {\r\n dashboardCode: props.dashboardCode,\r\n },\r\n successCallBkFn: (response) => {\r\n setDashboardInfo(response.data);\r\n },\r\n failureCallBkFn: () => {\r\n setDashboardInfo(null);\r\n },\r\n });\r\n };\r\n useEffect(() => {\r\n if (props.dashboardCode) {\r\n loadDashboardInfo();\r\n }\r\n }, [props.dashboardCode, props.parameters]);\r\n return (\r\n <>\r\n {dashboardInfo ? (\r\n <>\r\n <Box\r\n sx={{\r\n fontSize: 20,\r\n fontWeight: \"bold\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <IconButton\r\n onClick={() => {\r\n navigate(-1, { replace: true });\r\n }}\r\n >\r\n <FontAwesomeIcon icon=\"arrow-left\" />\r\n </IconButton>\r\n <Box sx={{ flex: 1 }}></Box>\r\n <FontAwesomeIcon\r\n style={{ marginLeft: 10, marginRight: 10 }}\r\n icon={\"square-poll-vertical\"}\r\n />\r\n <Box>{dashboardInfo?.dashboardTitle}</Box>\r\n <Box sx={{ flex: 1 }}></Box>\r\n </Box>\r\n <Grid2\r\n container\r\n spacing={1}\r\n sx={{\r\n flexGrow: 1,\r\n overflowY: \"auto\",\r\n padding: 1,\r\n }}\r\n >\r\n {dashboardInfo?.widgets.map((widget, index) => {\r\n return (\r\n <Grid2\r\n key={index}\r\n sx={{\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n padding: 1,\r\n display: \"flex\",\r\n overflow: \"auto\",\r\n flexDirection:\r\n widget.widgetType != \"Card\" ? \"column\" : undefined,\r\n height: widget?.height || 300,\r\n }}\r\n size={{ md: widget?.width, sm: 12 }}\r\n >\r\n <WidgetViewer {...widget} />\r\n </Grid2>\r\n );\r\n })}\r\n </Grid2>\r\n </>\r\n ) : (\r\n <Box\r\n sx={{\r\n flex: 1,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n fontSize: 24,\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n No Dashboard Found\r\n </Box>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default DashboardViewer;\r\n","import { useEffect, useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions, useAxios } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ntype OrganizationApplicationModuleGridProps = {\r\n selectedOrganization: any;\r\n};\r\n\r\nconst OrganizationApplicationModuleGrid: React.FC<\r\n OrganizationApplicationModuleGridProps\r\n> = (props) => {\r\n const { t } = useTranslation();\r\n const { handleGetRequest } = useAxios();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/organizationapplicationmodule/all\",\r\n deleteById: \"api/v1/admin/organizationapplicationmodule\",\r\n save: \"api/v1/admin/organizationapplicationmodule\",\r\n findById: \"api/v1/admin/organizationapplicationmodule\",\r\n setData: setData,\r\n });\r\n const [systemApplicationModules, setSystemApplicationModules] = useState([]);\r\n\r\n const getSystemApplicationModules = async () => {\r\n await handleGetRequest({\r\n endPointURI: \"api/v1/admin/systemapplicationmodule/all\",\r\n showMask: true,\r\n successCallBkFn: (response: any) => {\r\n setSystemApplicationModules(response.data);\r\n },\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n getSystemApplicationModules();\r\n }, []);\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel:\r\n \"ORGANIZATION_APPLICATION_MODULE_SYSTEM_APPLICATION_MODULE_ID\",\r\n fieldName: \"systemApplicationModuleId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: systemApplicationModules,\r\n optionDisplayField: \"moduleName\",\r\n optionValueField: \"id\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n fieldLabel: \"ORGANIZATION_APPLICATION_MODULE_ORGANIZATION_ID\",\r\n fieldName: \"organizationId\",\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_APPLICATION_MODULE_SUBSCRIPTION_DATE\",\r\n fieldName: \"subscriptionDate\",\r\n required: true,\r\n fieldType: \"date\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_APPLICATION_MODULE_EXPIRATION_DATE\",\r\n fieldName: \"expirationDate\",\r\n required: false,\r\n fieldType: \"date\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_APPLICATION_MODULE_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n gridLoadParametersValues={{\r\n organizationId: props?.selectedOrganization?.id,\r\n }}\r\n hideInfoBar={true}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ORGANIZATION_APPLICATION_MODULE_PLURAL\"\r\n girdIcon=\"layer-group\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"ORGANIZATION_APPLICATION_MODULE_EDIT\",\r\n preActionValidation: async (data) => {\r\n data.organizationId = props?.selectedOrganization?.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"ORGANIZATION_APPLICATION_MODULE_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default OrganizationApplicationModuleGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ntype OrganizationUnitTypeGridProps = {\r\n selectedOrganization: any;\r\n};\r\n\r\nconst OrganizationUnitTypeGrid: React.FC<OrganizationUnitTypeGridProps> = (\r\n props\r\n) => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/organizationunittype/all\",\r\n deleteById: \"api/v1/admin/organizationunittype\",\r\n save: \"api/v1/admin/organizationunittype\",\r\n findById: \"api/v1/admin/organizationunittype\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_TYPE_ORGANIZATION_ID\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n fieldName: \"organizationId\",\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_TYPE_ORGANIZATION_UNIT_TYPE_ORDER\",\r\n fieldName: \"organizationUnitTypeOrder\",\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_TYPE_UNIT_TYPE_CODE\",\r\n fieldName: \"unitTypeCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_TYPE_UNIT_TYPE_AR_NAME\",\r\n fieldName: \"unitTypeArName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_TYPE_UNIT_TYPE_EN_NAME\",\r\n fieldName: \"unitTypeEnName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_TYPE_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n hideInfoBar={true}\r\n gridLoadParametersValues={{\r\n organizationId: props?.selectedOrganization?.id,\r\n }}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ORGANIZATION_UNIT_TYPE_PLURAL\"\r\n girdIcon=\"tags\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"ORGANIZATION_UNIT_TYPE_EDIT\",\r\n preActionValidation: async (data) => {\r\n data.organizationId = props?.selectedOrganization?.id;\t\t \r\n return true;\r\n },\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"ORGANIZATION_UNIT_TYPE_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default OrganizationUnitTypeGrid;\r\n","import { useEffect, useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions, useAxios } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ntype OrganizationUnitGridProps = {\r\n selectedOrganization: any;\r\n};\r\n\r\nconst OrganizationUnitGrid: React.FC<OrganizationUnitGridProps> = (props) => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/organizationunit/all\",\r\n deleteById: \"api/v1/admin/organizationunit\",\r\n save: \"api/v1/admin/organizationunit\",\r\n findById: \"api/v1/admin/organizationunit\",\r\n setData: setData,\r\n });\r\n const [organizationUnitTypes, setOrganizationUnitTypes] = useState([]);\r\n const { handleGetRequest } = useAxios();\r\n const getOrganizationUnitTypes = async () => {\r\n await handleGetRequest({\r\n endPointURI: \"api/v1/admin/organizationunittype/all\",\r\n showMask: true,\r\n parameters: {\r\n organizationId: props.selectedOrganization.id,\r\n },\r\n successCallBkFn: (response: any) => {\r\n setOrganizationUnitTypes(response.data);\r\n },\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n getOrganizationUnitTypes();\r\n }, []);\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n hidden: true,\r\n gridProps: { hidden: true },\r\n fieldLabel: \"ORGANIZATION_UNIT_ORGANIZATION_ID\",\r\n fieldName: \"organizationId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_ORGANIZATION_UNIT_TYPE_ID\",\r\n fieldName: \"organizationUnitTypeId\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: organizationUnitTypes,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"unitTypeEnName\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_ORGANIZATION_UNIT_AR_NAME\",\r\n fieldName: \"organizationUnitArName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_ORGANIZATION_UNIT_EN_NAME\",\r\n fieldName: \"organizationUnitEnName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_ORGANIZATION_UNIT_PARENT_ID\",\r\n fieldName: \"organizationUnitParentId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: data,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"organizationUnitEnName\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n hideInfoBar={true}\r\n gridLoadParametersValues={{\r\n organizationId: props?.selectedOrganization?.id,\r\n }}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ORGANIZATION_UNIT_PLURAL\"\r\n girdIcon=\"folder-tree\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"ORGANIZATION_UNIT_EDIT\",\r\n preActionValidation: async (data) => {\r\n data.organizationId = props?.selectedOrganization?.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{ isEnabled: true, authority: \"ORGANIZATION_UNIT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default OrganizationUnitGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ntype OrganizationRankGridProps = {\r\n selectedOrganization: any;\r\n};\r\n\r\nconst OrganizationRankGrid: React.FC<OrganizationRankGridProps> = (props) => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/organizationrank/all\",\r\n deleteById: \"api/v1/admin/organizationrank\",\r\n save: \"api/v1/admin/organizationrank\",\r\n findById: \"api/v1/admin/organizationrank\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n hidden: true,\r\n gridProps: { hidden: true },\r\n fieldLabel: \"ORGANIZATION_RANK_ORGANIZATION_ID\",\r\n fieldName: \"organizationId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_RANK_RANK_ORDER\",\r\n fieldName: \"rankOrder\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_RANK_RANK_CODE\",\r\n fieldName: \"rankCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_RANK_RANK_AR_NAME\",\r\n fieldName: \"rankArName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_RANK_RANK_EN_NAME\",\r\n fieldName: \"rankEnName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_RANK_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n hideInfoBar={true}\r\n gridLoadParametersValues={{\r\n organizationId: props?.selectedOrganization?.id,\r\n }}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ORGANIZATION_RANK_PLURAL\"\r\n girdIcon=\"street-view\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"ORGANIZATION_RANK_EDIT\",\r\n preActionValidation: async (data) => {\r\n data.organizationId = props?.selectedOrganization?.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{ isEnabled: true, authority: \"ORGANIZATION_RANK_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default OrganizationRankGrid;\r\n","import { useEffect, useState } from \"react\";\r\nimport TransferList from \"../../templates/TransferList\";\r\nimport { Box, Button } from \"@mui/material\";\r\nimport { toast } from \"react-toastify\";\r\nimport { useAxios } from \"../../../hooks\";\r\n\r\ntype OrgMemberRoleFormProps = {\r\n selectedRecord: any;\r\n closeModalFn: () => void;\r\n};\r\n\r\nconst OrgMemberRoleForm: React.FC<OrgMemberRoleFormProps> = (props) => {\r\n const [selectedOptions, setSelectedOptions] = useState([]);\r\n const [availableOptions, setAvailableOptions] = useState([]);\r\n const { handlePostRequest, handleGetRequest } = useAxios();\r\n\r\n const getOrgMemberRoles = async () => {\r\n await handleGetRequest({\r\n endPointURI: \"api/v1/admin/organization/member/roles\",\r\n showMask: true,\r\n parameters: {\r\n orgMemberId: props.selectedRecord.id,\r\n organizationId: props.selectedRecord.organizationId,\r\n },\r\n successCallBkFn: (response: any) => {\r\n setSelectedOptions(response.data.currentRoles);\r\n setAvailableOptions(response.data.availableRoles);\r\n },\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (props.selectedRecord) {\r\n getOrgMemberRoles();\r\n }\r\n }, [props.selectedRecord]);\r\n const saveOrgMemberRoles = async () => {\r\n await handlePostRequest({\r\n endPointURI: \"api/v1/admin/organization/member/roles\",\r\n showMask: true,\r\n parameters: { orgMemberId: props.selectedRecord.id },\r\n data: selectedOptions,\r\n successCallBkFn: () => {\r\n toast.success(\"Your request has been proccesed successfully\");\r\n if (props.closeModalFn) {\r\n props.closeModalFn();\r\n }\r\n },\r\n });\r\n };\r\n return (\r\n <>\r\n <TransferList\r\n displayField=\"appRoleDisplay\"\r\n options={availableOptions}\r\n valueField=\"id\"\r\n selectedOptions={selectedOptions}\r\n setSelection={setSelectedOptions}\r\n />\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n width: \"100%\",\r\n }}\r\n >\r\n <Button\r\n variant=\"contained\"\r\n onClick={saveOrgMemberRoles}\r\n sx={{ marginRight: 1, marginLeft: 1 }}\r\n >\r\n Save\r\n </Button>\r\n <Button variant=\"contained\" color=\"error\" onClick={props.closeModalFn}>\r\n Cancel\r\n </Button>\r\n </Box>\r\n </>\r\n );\r\n};\r\n\r\nexport default OrgMemberRoleForm;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions, useWindow } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useSelector } from \"react-redux\";\r\nimport OrgMemberRoleForm from \"./OrgMemberRoleForm\";\r\n\r\ntype OrganizationMemberGridProps = {\r\n selectedPerson: any;\r\n};\r\nconst OrganizationMemberGrid: React.FC<OrganizationMemberGridProps> = (\r\n props\r\n) => {\r\n const [selectedRecord, setSelectedRecord] = useState<any>(null);\r\n const {\r\n Window: OrganizationMemberRolesWindow,\r\n setWindowState: setOrganizationMemberRolesWindowState,\r\n } = useWindow({\r\n windowIcon: \"tag\",\r\n windowTitle: \"Organization Member Roles\",\r\n width: \"50%\",\r\n });\r\n const SystemOrganizations = useSelector(\r\n (state: any) => state.commonStores.stores.SystemOrganizations.data\r\n );\r\n const SystemOrganizationRanks = useSelector(\r\n (state: any) => state.commonStores.stores.SystemOrganizationRanks.data\r\n );\r\n const SystemOrganizationUnits = useSelector(\r\n (state: any) => state.commonStores.stores.SystemOrganizationUnits.data\r\n );\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/organizationmember/all\",\r\n deleteById: \"api/v1/admin/organizationmember\",\r\n save: \"api/v1/admin/organizationmember\",\r\n findById: \"api/v1/admin/organizationmember\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_MEMBER_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_MEMBER_IS_DEFAULT\",\r\n fieldName: \"isDefault\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_MEMBER_ORGANIZATION_ID\",\r\n fieldName: \"organizationId\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: SystemOrganizations,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"organizationEnName\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_MEMBER_ORGANIZATION_RANK_ID\",\r\n fieldName: \"organizationRankId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemOrganizationRanks,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"rankDisplay\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_MEMBER_ORGANIZATION_UNIT_ID\",\r\n fieldName: \"organizationUnitId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemOrganizationUnits,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"fullPath\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Membership number\",\r\n fieldName: \"organizationMembershipNumber\",\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n fieldLabel: \"ORGANIZATION_MEMBER_PERSON_ID\",\r\n fieldName: \"personId\",\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <OrganizationMemberRolesWindow>\r\n <OrgMemberRoleForm\r\n selectedRecord={selectedRecord}\r\n closeModalFn={() => {\r\n setOrganizationMemberRolesWindowState(false);\r\n }}\r\n />\r\n </OrganizationMemberRolesWindow>\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n hideInfoBar={true}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n rowActions={[\r\n {\r\n icon: \"tag\",\r\n label: \"Roles\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setOrganizationMemberRolesWindowState(true);\r\n },\r\n },\r\n ]}\r\n gridLoadParametersValues={{ personId: props.selectedPerson.id }}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ORGANIZATION_MEMBER_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"ORGANIZATION_MEMBER_EDIT\",\r\n preActionValidation: async (data) => {\r\n data.personId = props.selectedPerson.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"ORGANIZATION_MEMBER_DELETE\",\r\n }}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default OrganizationMemberGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ntype SystemApplicationModuleGridProps = {\r\n selectedApplication: any;\r\n};\r\n\r\nconst SystemApplicationModuleGrid: React.FC<\r\n SystemApplicationModuleGridProps\r\n> = (props) => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/systemapplicationmodule/application/all\",\r\n deleteById: \"api/v1/admin/systemapplicationmodule\",\r\n save: \"api/v1/admin/systemapplicationmodule\",\r\n findById: \"api/v1/admin/systemapplicationmodule\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_MODULE_MODULE_CODE\",\r\n fieldName: \"moduleCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_MODULE_MODULE_NAME\",\r\n fieldName: \"moduleName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_MODULE_MODULE_DESCRIPTION\",\r\n fieldName: \"moduleDescription\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_MODULE_SYSTEM_APPLICATION_ID\",\r\n fieldName: \"systemApplicationId\",\r\n hidden: true,\r\n gridProps: { hidden: true },\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n gridLoadParametersValues={{\r\n applicationId: props?.selectedApplication?.id,\r\n }}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n hideInfoBar={true}\r\n gridTitle=\"SYSTEM_APPLICATION_MODULE_PLURAL\"\r\n girdIcon=\"layer-group\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"SYSTEM_APPLICATION_MODULE_EDIT\",\r\n preActionValidation: async (data) => {\r\n data.systemApplicationId = props?.selectedApplication?.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"SYSTEM_APPLICATION_MODULE_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default SystemApplicationModuleGrid;\r\n","import { useEffect, useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions, useAxios } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ntype SystemApplicationAuthorityGridProps = {\r\n selectedApplication: any;\r\n};\r\n\r\nconst SystemApplicationAuthorityGrid: React.FC<\r\n SystemApplicationAuthorityGridProps\r\n> = (props) => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/systemapplicationauthority/all\",\r\n deleteById: \"api/v1/admin/systemapplicationauthority\",\r\n save: \"api/v1/admin/systemapplicationauthority\",\r\n findById: \"api/v1/admin/systemapplicationauthority\",\r\n setData: setData,\r\n });\r\n const [systemApplicationModules, setSystemApplicationModules] = useState([]);\r\n\r\n const { handleGetRequest } = useAxios();\r\n const getSystemApplicationModules = async () => {\r\n await handleGetRequest({\r\n endPointURI: \"api/v1/admin/systemapplicationmodule/application/all\",\r\n showMask: true,\r\n parameters: {\r\n applicationId: props.selectedApplication.id,\r\n },\r\n successCallBkFn: (response: any) => {\r\n setSystemApplicationModules(response.data);\r\n },\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n getSystemApplicationModules();\r\n }, []);\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_AUTHORITY_SYSTEM_APPLICATION_ID\",\r\n fieldName: \"systemApplicationId\",\r\n required: false,\r\n hidden: true,\r\n gridProps: { hidden: true },\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_AUTHORITY_SYSTEM_MODULE_ID\",\r\n fieldName: \"systemModuleId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: systemApplicationModules,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"moduleName\",\r\n },\r\n },\r\n \r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_AUTHORITY_AUTHORITY_NAME\",\r\n fieldName: \"authorityName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_AUTHORITY_AUTHORITY_CODE\",\r\n fieldName: \"authorityCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_AUTHORITY_AUTHORITY_DESCRIPTION\",\r\n fieldName: \"authorityDescription\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_AUTHORITY_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n hideInfoBar={true}\r\n gridLoadParametersValues={{\r\n applicationId: props?.selectedApplication?.id,\r\n }}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"SYSTEM_APPLICATION_AUTHORITY_PLURAL\"\r\n girdIcon=\"key\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"SYSTEM_APPLICATION_AUTHORITY_EDIT\",\r\n preActionValidation: async (data) => {\r\n data.systemApplicationId = props?.selectedApplication?.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"SYSTEM_APPLICATION_AUTHORITY_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default SystemApplicationAuthorityGrid;\r\n","import { useEffect, useState } from \"react\";\r\nimport TransferList from \"../../templates/TransferList\";\r\nimport { Box, Button } from \"@mui/material\";\r\nimport { toast } from \"react-toastify\";\r\nimport { useAxios } from \"../../../hooks\";\r\n\r\ntype RoleAuthoritiesFormProps = {\r\n roleId: number;\r\n appId: number;\r\n closeModalFn: () => void;\r\n};\r\n\r\nconst RoleAuthoritiesForm: React.FC<RoleAuthoritiesFormProps> = (props) => {\r\n const [selectedOptions, setSelectedOptions] = useState([]);\r\n const [availableAuthorities, setAvailableAuthorities] = useState([]);\r\n const { handlePostRequest, handleGetRequest } = useAxios();\r\n\r\n const getRoleAuthorities = async () => {\r\n await handleGetRequest({\r\n endPointURI: \"api/v1/admin/systemApplicationRoleAuthorities\",\r\n showMask: true,\r\n parameters: {\r\n appId: props.appId,\r\n roleId: props.roleId,\r\n },\r\n successCallBkFn: (response: any) => {\r\n setSelectedOptions(response.data.selectedAuthorities);\r\n setAvailableAuthorities(response.data.availableAuthorities);\r\n },\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (props.roleId && props.appId) {\r\n getRoleAuthorities();\r\n }\r\n }, [props.roleId, props.appId]);\r\n const saveRoleAuthorities = async () => {\r\n await handlePostRequest({\r\n endPointURI: \"api/v1/admin/systemApplicationRoleAuthorities\",\r\n showMask: true,\r\n parameters: { roleId: props.roleId },\r\n data: selectedOptions,\r\n successCallBkFn: () => {\r\n toast.success(\"Your request has been proccesed successfully\");\r\n if (props.closeModalFn) {\r\n props.closeModalFn();\r\n }\r\n },\r\n });\r\n };\r\n return (\r\n <>\r\n <TransferList\r\n displayField=\"authorityName\"\r\n options={availableAuthorities}\r\n valueField=\"id\"\r\n selectedOptions={selectedOptions}\r\n setSelection={setSelectedOptions}\r\n />\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n width: \"100%\",\r\n }}\r\n >\r\n <Button\r\n variant=\"contained\"\r\n onClick={saveRoleAuthorities}\r\n sx={{ marginRight: 1, marginLeft: 1 }}\r\n >\r\n Save\r\n </Button>\r\n <Button variant=\"contained\" color=\"error\" onClick={props.closeModalFn}>\r\n Cancel\r\n </Button>\r\n </Box>\r\n </>\r\n );\r\n};\r\n\r\nexport default RoleAuthoritiesForm;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions, useWindow } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport RoleAuthoritiesForm from \"./RoleAuthoritiesForm\";\r\n\r\ntype SystemApplicationRoleGridProps = {\r\n selectedApplication: any;\r\n};\r\n\r\nconst SystemApplicationRoleGrid: React.FC<SystemApplicationRoleGridProps> = (\r\n props\r\n) => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const [selectedRole, setSelectedRole] = useState(null);\r\n const {\r\n Window: RoleaAuthoritiesWindow,\r\n setWindowState: setRoleAuthoritiesWindowState,\r\n } = useWindow({\r\n windowTitle: \"System Application Role Authorities\",\r\n windowIcon: \"key\",\r\n width: \"50%\",\r\n });\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/systemapplicationrole/all\",\r\n deleteById: \"api/v1/admin/systemapplicationrole\",\r\n save: \"api/v1/admin/systemapplicationrole\",\r\n findById: \"api/v1/admin/systemapplicationrole\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_ROLE_SYSTEM_APPLICATION_ID\",\r\n fieldName: \"systemApplicationId\",\r\n required: false,\r\n hidden: true,\r\n gridProps: { hidden: true },\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_ROLE_ROLE_NAME\",\r\n fieldName: \"roleName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_ROLE_ROLE_DESCRIPTION\",\r\n fieldName: \"roleDescription\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_ROLE_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <RoleaAuthoritiesWindow>\r\n <RoleAuthoritiesForm\r\n appId={props.selectedApplication.id}\r\n roleId={selectedRole?.id}\r\n closeModalFn={() => {\r\n setRoleAuthoritiesWindowState(false);\r\n }}\r\n />\r\n </RoleaAuthoritiesWindow>\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n hideInfoBar={true}\r\n gridLoadParametersValues={{\r\n applicationId: props?.selectedApplication?.id,\r\n }}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"SYSTEM_APPLICATION_ROLE_PLURAL\"\r\n girdIcon=\"tag\"\r\n rowActions={[\r\n {\r\n icon: \"key\",\r\n actionFn: async (data) => {\r\n setSelectedRole(data);\r\n setRoleAuthoritiesWindowState(true);\r\n },\r\n label: \"Authorities\",\r\n },\r\n ]}\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"SYSTEM_APPLICATION_ROLE_EDIT\",\r\n preActionValidation: async (data) => {\r\n data.systemApplicationId = props?.selectedApplication?.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"SYSTEM_APPLICATION_ROLE_DELETE\",\r\n }}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default SystemApplicationRoleGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\ntype LookupGridProps = {\r\n selectedApplication: any;\r\n};\r\n\r\nconst LookupGrid: React.FC<LookupGridProps> = (props) => {\r\n const SystemOrganizations = useSelector(\r\n (state: any) => state.commonStores.stores.SystemOrganizations.data\r\n );\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/lookup/all\",\r\n deleteById: \"api/v1/dev/lookup\",\r\n save: \"api/v1/dev/lookup\",\r\n findById: \"api/v1/dev/lookup\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Organization\",\r\n fieldName: \"organizationId\",\r\n options: SystemOrganizations,\r\n optionDisplayField: \"organizationEnName\",\r\n optionValueField: \"id\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"LOOKUP_LOOKUP_TYPE\",\r\n fieldName: \"lookupType\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"LOOKUP_LOOKUP_AR_DISPLAY\",\r\n fieldName: \"lookupArDisplay\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"LOOKUP_LOOKUP_EN_DISPLAY\",\r\n fieldName: \"lookupEnDisplay\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"LOOKUP_LOOKUP_VALUE\",\r\n fieldName: \"lookupValue\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"LOOKUP_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"System Application\",\r\n fieldName: \"systemApplicationId\",\r\n hidden: true,\r\n gridProps: { hidden: true },\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n hideInfoBar={true}\r\n gridLoadParametersValues={{\r\n systemApplicationId: props.selectedApplication.id,\r\n }}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"LOOKUP_PLURAL\")}\r\n girdIcon=\"list-check\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"LOOKUP_EDIT\",\r\n preActionValidation: (data: any) => {\r\n data.systemApplicationId = props.selectedApplication.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{ isEnabled: true, authority: \"LOOKUP_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default LookupGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\ntype DataQueryParameterGridProps = {\r\n selectedRecord: any;\r\n};\r\n\r\nconst DataQueryParameterGrid: React.FC<DataQueryParameterGridProps> = (\r\n props\r\n) => {\r\n const SystemEntityParameters = useSelector(\r\n (state: any) => state.commonStores.stores.SystemEntityParameters.data\r\n );\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/dataqueryparameter/all\",\r\n deleteById: \"api/v1/dev/dataqueryparameter\",\r\n save: \"api/v1/dev/dataqueryparameter\",\r\n findById: \"api/v1/dev/dataqueryparameter\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_PARAMETER_DATA_QUERY_ID\",\r\n fieldName: \"dataQueryId\",\r\n required: false,\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_PARAMETER_ENTITY_PARAMETER_ID\",\r\n fieldName: \"entityParameterId\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: SystemEntityParameters,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"parameterCode\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_PARAMETER_DEFAULT_VALUE\",\r\n fieldName: \"defaultValue\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_PARAMETER_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_PARAMETER_HIDDEN\",\r\n fieldName: \"hidden\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_PARAMETER_MANDATORY\",\r\n fieldName: \"mandatory\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n hideInfoBar={true}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridLoadParametersValues={{ dataQueryId: props.selectedRecord.id }}\r\n gridTitle={t(\"DATA_QUERY_PARAMETER_PLURAL\")}\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"DATA_QUERY_PARAMETER_EDIT\",\r\n preActionValidation: async (data) => {\r\n data.dataQueryId = props.selectedRecord.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"DATA_QUERY_PARAMETER_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default DataQueryParameterGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\ntype ReportParameterGridProps = {\r\n selectedRecord: any;\r\n};\r\n\r\nconst ReportParameterGrid: React.FC<ReportParameterGridProps> = (props) => {\r\n const { t } = useTranslation();\r\n const SystemEntityParameters = useSelector(\r\n (state: any) => state.commonStores.stores.SystemEntityParameters.data\r\n );\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/reportparameter/all\",\r\n deleteById: \"api/v1/dev/reportparameter\",\r\n save: \"api/v1/dev/reportparameter\",\r\n findById: \"api/v1/dev/reportparameter\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_PARAMETER_ENTITY_PARAMETER_ID\",\r\n fieldName: \"entityParameterId\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: SystemEntityParameters,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"parameterCode\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_PARAMETER_DEFAULT_VALUE\",\r\n fieldName: \"defaultValue\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_PARAMETER_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_PARAMETER_HIDDEN\",\r\n fieldName: \"hidden\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_PARAMETER_MANDATORY\",\r\n fieldName: \"mandatory\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_PARAMETER_REPORT_ID\",\r\n fieldName: \"reportId\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n hideInfoBar={true}\r\n setData={setData}\r\n gridLoadParametersValues={{ reportId: props.selectedRecord.id }}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"REPORT_PARAMETER_PLURAL\")}\r\n girdIcon=\"p\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"REPORT_PARAMETER_EDIT\",\r\n preActionValidation: async (data) => {\r\n data.reportId = props.selectedRecord.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{ isEnabled: true, authority: \"REPORT_PARAMETER_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default ReportParameterGrid;\r\n","import { useEffect, useState } from \"react\";\r\nimport TemplateGrid from \"../DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../DataEntryTemplates/DataEntryTypes\";\r\n\r\ntype ExcelReportViewerProps = {\r\n reportData: Array<any>;\r\n setReportData: (data) => void;\r\n reloadReport: () => void;\r\n gridLoadParameters?: Array<FormElementProps>;\r\n gridLoadParametersValues?: { [key: string]: any };\r\n setGridLoadParametersValues?: any;\r\n};\r\n\r\nconst getGridColumnsFromRecord = (data: Array<any>) => {\r\n if (data.length === 0) {\r\n return [];\r\n }\r\n const formElements: Array<FormElementProps> = [];\r\n for (const key of Object.keys(data[0])) {\r\n const formElement: FormElementProps = {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: key,\r\n fieldName: key,\r\n fieldType: \"text\",\r\n },\r\n };\r\n formElements.push(formElement);\r\n }\r\n console.log(\"formElements\", formElements);\r\n return formElements;\r\n};\r\n\r\nconst ExcelReportViewer: React.FC<ExcelReportViewerProps> = (props) => {\r\n console.log(\"reportdata\", props.reportData);\r\n return (\r\n <TemplateGrid\r\n data={props.reportData}\r\n disableDefaultAction={true}\r\n setData={props.setReportData}\r\n formElements={getGridColumnsFromRecord(props.reportData)}\r\n gridLoadParameters={props.gridLoadParameters}\r\n gridLoadParametersValues={props.gridLoadParametersValues}\r\n setGridLoadParametersValues={props.setGridLoadParametersValues}\r\n editMode={{ editMode: \"none\" }}\r\n girdIcon={\"file-excel\"}\r\n gridTitle=\"Report\"\r\n autoLoad={true}\r\n hideInfoBar={true}\r\n apiActions={{\r\n deleteRecordById: async () => {\r\n return true;\r\n },\r\n loadRecordById: async () => {},\r\n reloadData: async () => {\r\n props.reloadReport();\r\n },\r\n saveRecord: async () => {},\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default ExcelReportViewer;\r\n","import { useEffect, useState } from \"react\";\r\nimport { useAxios, useWindow } from \"../../../hooks\";\r\nimport TemplateForm from \"../DataEntryTemplates/TemplateDataForm/TemplateForm\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { FormElementProps } from \"../DataEntryTemplates/DataEntryTypes\";\r\nimport {\r\n Accordion,\r\n AccordionDetails,\r\n AccordionSummary,\r\n Box,\r\n Icon,\r\n IconButton,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport ExcelReportViewer from \"./ExcelReportViewer\";\r\nimport { GridExpandMoreIcon } from \"@mui/x-data-grid-premium\";\r\n\r\ntype ReportViewerState =\r\n | \"ERROR\"\r\n | \"WAITING_REPORT_CODE\"\r\n | \"LOADING_METADATA\"\r\n | \"WAITING_PARAMETER_INPUT\"\r\n | \"WAITING_RESULT\"\r\n | \"SHOWING_RESULT\";\r\n\r\ntype ReportViewerProps = {\r\n reportCode: string;\r\n resultMode: \"Request\" | \"App\";\r\n reportParametersValues?: { [key: string]: any };\r\n byPassParameterEntry?: boolean;\r\n jasperOutPutFileType?: \"pdf\" | \"word\" | \"excel\";\r\n};\r\n\r\ntype ReportParameter = {\r\n parameterCode: string;\r\n parameterLabel: string;\r\n parameterValueFormat?: string;\r\n parameterValueField?: string;\r\n parameterDisplayField?: string;\r\n parameterDataset?: Array<any>;\r\n parameterDataQueryId?: number;\r\n hidden?: boolean;\r\n mandatory?: boolean;\r\n defaultValue?: any;\r\n parameterType:\r\n | \"text\"\r\n | \"number\"\r\n | \"date\"\r\n | \"datetime\"\r\n | \"combobox\"\r\n | \"checkbox\"\r\n | \"html\"\r\n | \"lookup\";\r\n};\r\n\r\nconst ReportViewer: React.FC<ReportViewerProps> = (props) => {\r\n const [blobUrl, setBlobUrl] = useState(null);\r\n const [errorMessage, setErrorMessage] = useState(null);\r\n const [excelReportData, setExcelReportData] = useState<Array<any>>([]);\r\n const [reportViewerState, setReportViewerState] = useState<ReportViewerState>(\r\n \"WAITING_REPORT_CODE\"\r\n );\r\n const { handleGetRequest, handlePostRequest, HandleDownloadHTTPPostPDF } =\r\n useAxios();\r\n const [reportInfo, setReportInfo] = useState<any>(null);\r\n const [reportParametersValues, setReportParametersValues] = useState<any>({\r\n ...props?.reportParametersValues,\r\n });\r\n const [reportParametersElements, setReportParametersElements] = useState<\r\n Array<FormElementProps>\r\n >([]);\r\n const { t } = useTranslation();\r\n\r\n const getFormElementsFromReportParameters = (\r\n reportParameters: Array<ReportParameter>\r\n ) => {\r\n const formElements: Array<FormElementProps> = [];\r\n for (const reportParameter of reportParameters) {\r\n const formElement: FormElementProps = {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: reportParameter?.parameterLabel,\r\n fieldName: reportParameter?.parameterCode,\r\n fieldType: reportParameter?.parameterType,\r\n hidden: reportParameter?.hidden,\r\n formProps: { fieldSize: { lg: 4, md: 6, sm: 12 } },\r\n required: reportParameter?.mandatory,\r\n defaultValue:\r\n reportParametersValues[reportParameter?.parameterCode] ||\r\n reportParameter?.defaultValue,\r\n },\r\n };\r\n formElements.push(formElement);\r\n }\r\n return formElements;\r\n };\r\n const loadReportData = async () => {\r\n setReportViewerState(\"LOADING_METADATA\");\r\n await handleGetRequest({\r\n endPointURI: \"api/v1/dev/report/metadata\",\r\n showMask: true,\r\n parameters: { reportCode: props.reportCode },\r\n successCallBkFn: (response: any) => {\r\n setReportInfo(response.data);\r\n setReportParametersElements(\r\n getFormElementsFromReportParameters(response.data.reportParameters)\r\n );\r\n if (\r\n props?.byPassParameterEntry === true ||\r\n response.data.reportParameters.length == 0\r\n ) {\r\n runReport(response.data, reportParametersValues);\r\n setReportViewerState(\"WAITING_RESULT\");\r\n } else {\r\n setReportViewerState(\"WAITING_PARAMETER_INPUT\");\r\n }\r\n },\r\n failureCallBkFn: (response) => {\r\n setErrorMessage(\r\n \"Failed loading report metadata ... contact your administrator\"\r\n );\r\n setReportViewerState(\"ERROR\");\r\n },\r\n });\r\n };\r\n\r\n const runReport = async (reportInfoProp, params) => {\r\n setReportViewerState(\"WAITING_RESULT\");\r\n if (reportInfoProp?.reportType === \"Excel\") {\r\n await handlePostRequest({\r\n endPointURI: \"api/v1/dev/report/run\",\r\n showMask: true,\r\n data: {\r\n reportCode: props.reportCode,\r\n parameters: params,\r\n resultMode: props.resultMode,\r\n jasperOutPutFileType: props.jasperOutPutFileType,\r\n },\r\n successCallBkFn: (response: any) => {\r\n setReportViewerState(\"SHOWING_RESULT\");\r\n setExcelReportData(response.data);\r\n },\r\n });\r\n } else if (reportInfoProp?.reportType) {\r\n await HandleDownloadHTTPPostPDF({\r\n endPointURI: \"api/v1/dev/report/run\",\r\n showMask: true,\r\n data: {\r\n reportCode: props.reportCode,\r\n parameters: params,\r\n resultMode: props.resultMode,\r\n jasperOutPutFileType: props.jasperOutPutFileType,\r\n },\r\n successCallBkFn: (response: any) => {\r\n setReportViewerState(\"SHOWING_RESULT\");\r\n const contentDisposition = response.headers[\"content-disposition\"];\r\n let filename = \"downloaded_file\";\r\n if (\r\n contentDisposition &&\r\n contentDisposition.indexOf(\"filename=\") !== -1\r\n ) {\r\n const match = contentDisposition.match(/filename=\"?([^\"]+)\"?/);\r\n if (match && match[1]) filename = match[1];\r\n }\r\n if (filename.includes(\"pdf\")) {\r\n const file = new Blob([response.data], { type: \"application/pdf\" });\r\n const url = URL.createObjectURL(file);\r\n setBlobUrl(url);\r\n } else {\r\n const blob = new Blob([response.data], {\r\n type: response.headers[\"content-type\"],\r\n });\r\n // Create a temporary anchor element\r\n const url = window.URL.createObjectURL(blob);\r\n const link = document.createElement(\"a\");\r\n link.href = url;\r\n // Optional: Try to get filename from response headers\r\n\r\n link.download = filename;\r\n document.body.appendChild(link);\r\n link.click();\r\n\r\n // Clean up\r\n document.body.removeChild(link);\r\n window.URL.revokeObjectURL(url);\r\n }\r\n console.log(response);\r\n },\r\n failureCallBkFn: (response) => {\r\n setErrorMessage(\r\n \"Failed To run report ... contact your administrator\"\r\n );\r\n setReportViewerState(\"ERROR\");\r\n },\r\n });\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (props?.reportCode) {\r\n loadReportData();\r\n }\r\n }, [\r\n props.reportCode,\r\n props.byPassParameterEntry,\r\n props.reportParametersValues,\r\n props.jasperOutPutFileType,\r\n props.resultMode,\r\n ]);\r\n\r\n return (\r\n <>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n width: \"100%\",\r\n }}\r\n >\r\n <Box sx={{ flex: 1, textAlign: \"center\", marginBottom: 1 }}>\r\n <FontAwesomeIcon\r\n icon={\r\n reportInfo?.reportType === \"Excel\" ? \"file-excel\" : \"file-pdf\"\r\n }\r\n color={reportInfo?.reportType === \"Excel\" ? \"darkgreen\" : \"darkred\"}\r\n style={{ marginRight: 10, marginLeft: 10 }}\r\n />\r\n {reportInfo?.reportName}\r\n </Box>\r\n {reportInfo?.reportType != \"Excel\" ? (\r\n reportViewerState === \"SHOWING_RESULT\" ? (\r\n <>\r\n {props?.byPassParameterEntry === true ? (\r\n <></>\r\n ) : reportParametersElements.length > 0 ? (\r\n <IconButton\r\n onClick={() => {\r\n setReportParametersElements(\r\n getFormElementsFromReportParameters(\r\n reportInfo.reportParameters\r\n )\r\n );\r\n setReportViewerState(\"WAITING_PARAMETER_INPUT\");\r\n }}\r\n >\r\n <FontAwesomeIcon icon=\"filter\" />\r\n </IconButton>\r\n ) : (\r\n <></>\r\n )}\r\n <IconButton>\r\n <FontAwesomeIcon\r\n icon=\"refresh\"\r\n onClick={() => {\r\n runReport(reportInfo, reportParametersValues);\r\n }}\r\n />\r\n </IconButton>\r\n </>\r\n ) : (\r\n <></>\r\n )\r\n ) : (\r\n <></>\r\n )}\r\n </Box>\r\n <Box\r\n sx={{\r\n flexGrow: 1,\r\n width: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-start\",\r\n }}\r\n >\r\n {reportViewerState === \"WAITING_PARAMETER_INPUT\" &&\r\n reportInfo?.reportType != \"Excel\" ? (\r\n <Accordion defaultExpanded sx={{ width: \"100%\" }} expanded={true}>\r\n <AccordionSummary>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <FontAwesomeIcon\r\n style={{ marginLeft: 5, marginRight: 5 }}\r\n icon=\"search\"\r\n />\r\n <Typography component=\"span\">Filters</Typography>\r\n </Box>\r\n </AccordionSummary>\r\n <AccordionDetails>\r\n <Box>\r\n <TemplateForm\r\n saveButtonSpecs={{\r\n label: t(\"SHOW_REPORT_BTN_LABEL\"),\r\n icon: \"search\",\r\n actionButtonVariant: \"outlined\",\r\n actionButtonColor: \"success\",\r\n hidden: true,\r\n }}\r\n cancelButtonSpecs={{\r\n label: t(\"RESET_BTN_LABEL\"),\r\n icon: \"eraser\",\r\n actionButtonVariant: \"outlined\",\r\n actionButtonColor: \"error\",\r\n }}\r\n apiActions={{\r\n deleteRecordById: async () => {\r\n return true;\r\n },\r\n saveRecord: async (params) => {\r\n if (params != undefined) {\r\n setReportParametersValues(params);\r\n } else {\r\n setReportParametersValues({});\r\n }\r\n runReport(reportInfo, params);\r\n },\r\n reloadData: async () => {},\r\n loadRecordById: async () => {},\r\n }}\r\n elements={reportParametersElements}\r\n />\r\n </Box>\r\n </AccordionDetails>\r\n </Accordion>\r\n ) : reportViewerState === \"SHOWING_RESULT\" ||\r\n ((reportViewerState === \"WAITING_PARAMETER_INPUT\" ||\r\n reportViewerState === \"WAITING_RESULT\") &&\r\n reportInfo?.reportType === \"Excel\") ? (\r\n reportInfo?.reportType === \"Excel\" ? (\r\n <ExcelReportViewer\r\n reportData={excelReportData}\r\n setReportData={setExcelReportData}\r\n reloadReport={async () => {\r\n runReport(reportInfo, reportParametersValues);\r\n }}\r\n gridLoadParameters={reportParametersElements}\r\n gridLoadParametersValues={reportParametersValues}\r\n setGridLoadParametersValues={setReportParametersValues}\r\n />\r\n ) : (\r\n <iframe\r\n src={blobUrl}\r\n width=\"100%\"\r\n height=\"100%\"\r\n title=\"PDF Preview\"\r\n style={{ border: \"1px solid #ccc\", marginTop: \"20px\" }}\r\n ></iframe>\r\n )\r\n ) : reportViewerState === \"ERROR\" ? (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flex: 1,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <FontAwesomeIcon\r\n icon=\"circle-exclamation\"\r\n color=\"darkred\"\r\n style={{ marginRight: 10, marginLeft: 10 }}\r\n />\r\n {errorMessage}\r\n </Box>\r\n ) : (\r\n <></>\r\n )}\r\n </Box>\r\n </>\r\n );\r\n};\r\n\r\nexport default ReportViewer;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions, useWindow } from \"../../../hooks\";\r\nimport {\r\n FormActionProps,\r\n FormElementProps,\r\n} from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { UseFormReturn } from \"react-hook-form\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { toast } from \"react-toastify\";\r\nimport ReportParametersForm from \"./ReportParametersForm\";\r\nimport ReportParameterGrid from \"./ReportParameterGrid\";\r\nimport ReportViewer from \"../../templates/report/ReportViewer\";\r\n\r\ntype ValidationCritria = {\r\n isVisible: boolean;\r\n isMandatory: boolean;\r\n};\r\n\r\nexport type ReportType = \"Jasper\" | \"Excel\" | \"Blueprint\";\r\n\r\ntype ReportValidationOptions = {\r\n useSysDatasource: ValidationCritria;\r\n datasourceConId: ValidationCritria;\r\n reportBluePrintId: ValidationCritria;\r\n reportExcelDataQueryId: ValidationCritria;\r\n reportJasperName: ValidationCritria;\r\n reportJasperPath: ValidationCritria;\r\n};\r\n\r\ntype validationObjectType = {\r\n [key in ReportType]: ReportValidationOptions;\r\n};\r\n\r\nconst validationObject: validationObjectType = {\r\n Blueprint: {\r\n useSysDatasource: { isMandatory: false, isVisible: false },\r\n datasourceConId: { isMandatory: false, isVisible: false },\r\n reportBluePrintId: { isMandatory: true, isVisible: true },\r\n reportExcelDataQueryId: { isMandatory: false, isVisible: false },\r\n reportJasperName: { isMandatory: false, isVisible: false },\r\n reportJasperPath: { isMandatory: false, isVisible: false },\r\n },\r\n Jasper: {\r\n useSysDatasource: { isMandatory: false, isVisible: true },\r\n datasourceConId: { isMandatory: false, isVisible: true },\r\n reportBluePrintId: { isMandatory: false, isVisible: false },\r\n reportExcelDataQueryId: { isMandatory: false, isVisible: false },\r\n reportJasperName: { isMandatory: true, isVisible: true },\r\n reportJasperPath: { isMandatory: true, isVisible: true },\r\n },\r\n Excel: {\r\n useSysDatasource: { isMandatory: false, isVisible: false },\r\n datasourceConId: { isMandatory: false, isVisible: false },\r\n reportBluePrintId: { isMandatory: false, isVisible: false },\r\n reportExcelDataQueryId: { isMandatory: true, isVisible: true },\r\n reportJasperName: { isMandatory: false, isVisible: false },\r\n reportJasperPath: { isMandatory: false, isVisible: false },\r\n },\r\n};\r\n\r\nconst adjustFormAccordingToReportType = (\r\n value: any,\r\n formActions: FormActionProps,\r\n formManager: UseFormReturn\r\n) => {\r\n if (value && validationObject[value]) {\r\n const validationObjects: ReportValidationOptions = validationObject[value];\r\n const fields = Object.keys(validationObjects);\r\n for (const field of fields) {\r\n const validationCritria: ValidationCritria = validationObjects[field];\r\n if (validationCritria.isVisible) {\r\n formActions.showField(field);\r\n } else {\r\n formActions.hideField(field);\r\n formManager.setValue(field, null);\r\n }\r\n }\r\n } else {\r\n formActions.hideField(\"useSysDatasource\");\r\n formActions.hideField(\"datasourceConId\");\r\n formActions.hideField(\"reportBluePrintId\");\r\n formActions.hideField(\"reportExcelDataQueryId\");\r\n formActions.hideField(\"reportJasperName\");\r\n formActions.hideField(\"reportJasperPath\");\r\n formManager.setValue(\"useSysDatasource\", null);\r\n formManager.setValue(\"datasourceConId\", null);\r\n formManager.setValue(\"reportBluePrintId\", null);\r\n formManager.setValue(\"reportExcelDataQueryId\", null);\r\n formManager.setValue(\"reportJasperName\", null);\r\n formManager.setValue(\"reportJasperPath\", null);\r\n }\r\n};\r\n\r\nconst ReportGrid: React.FC = () => {\r\n const { t } = useTranslation();\r\n const [selectedRecord, setSelectedRecord] = useState(null);\r\n const {\r\n Window: ReporTrialWindow,\r\n setWindowState: setReportTrialWindowState,\r\n } = useWindow({\r\n windowTitle: \"Report View\",\r\n windowIcon: \"eye\",\r\n width: \"80%\",\r\n });\r\n const {\r\n Window: ReportParameterWindow,\r\n setWindowState: setReportParameterWindowState,\r\n } = useWindow({\r\n windowTitle: \"Report Parameters\",\r\n windowIcon: \"p\",\r\n width: \"80%\",\r\n });\r\n const [data, setData] = useState([]);\r\n const SystemDataSources = useSelector(\r\n (state: any) => state.commonStores.stores.SystemDataSources.data\r\n );\r\n const SystemDataQueries = useSelector(\r\n (state: any) => state.commonStores.stores.SystemDataQueries.data\r\n );\r\n const SystemBluePrints = useSelector(\r\n (state: any) => state.commonStores.stores.SystemBluePrints.data\r\n );\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/report/all\",\r\n deleteById: \"api/v1/dev/report\",\r\n save: \"api/v1/dev/report\",\r\n findById: \"api/v1/dev/report\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_TYPE\",\r\n fieldName: \"reportType\",\r\n options: [\r\n { value: \"Excel\" },\r\n { value: \"Jasper\" },\r\n { value: \"Blueprint\" },\r\n ],\r\n optionDisplayField: \"value\",\r\n optionValueField: \"value\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n formProps: {\r\n onValueChangeCallBack(\r\n value,\r\n formManager,\r\n formActions,\r\n selectedRecord\r\n ) {\r\n adjustFormAccordingToReportType(value, formActions, formManager);\r\n },\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_CODE\",\r\n fieldName: \"reportCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_NAME\",\r\n fieldName: \"reportName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_CATEGORY\",\r\n fieldName: \"reportCategory\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Authority Code\",\r\n fieldName: \"reportAuthorityCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_EXPORT_NAME\",\r\n fieldName: \"reportExportName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_USE_SYS_DATASOURCE\",\r\n fieldName: \"useSysDatasource\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n formProps: {\r\n onValueChangeCallBack(\r\n value,\r\n formManager,\r\n formActions,\r\n selectedRecord\r\n ) {\r\n if (value) {\r\n formActions.hideField(\"datasourceConId\");\r\n formManager.setValue(\"datasourceConId\", null);\r\n } else {\r\n formActions.showField(\"datasourceConId\");\r\n }\r\n },\r\n },\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_DATASOURCE_CON_ID\",\r\n fieldName: \"datasourceConId\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemDataSources,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"connectionName\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_BLUE_PRINT_ID\",\r\n fieldName: \"reportBluePrintId\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemBluePrints,\r\n optionDisplayField: \"bluePrintCode\",\r\n optionValueField: \"id\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_EXCEL_DATA_QUERY_ID\",\r\n fieldName: \"reportExcelDataQueryId\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemDataQueries,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"queryName\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_JASPER_NAME\",\r\n fieldName: \"reportJasperName\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_JASPER_PATH\",\r\n fieldName: \"reportJasperPath\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Active\",\r\n fieldName: \"isActive\",\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <ReporTrialWindow>\r\n <ReportViewer\r\n reportCode={selectedRecord?.reportCode}\r\n resultMode=\"App\"\r\n />\r\n </ReporTrialWindow>\r\n <ReportParameterWindow>\r\n <ReportParameterGrid selectedRecord={selectedRecord} />\r\n </ReportParameterWindow>\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{\r\n editMode: \"modal\",\r\n specs: {\r\n modalTitle: \"Report\",\r\n modalIcon: \"file\",\r\n modalWidth: 300,\r\n },\r\n }}\r\n rowActions={[\r\n {\r\n icon: \"p\",\r\n label: \"Report Parameters\",\r\n isActionVisibleForRecord: (record) => {\r\n return record.reportType === \"Jasper\";\r\n },\r\n actionFn: async (data, recordIdsToProcessActionOn) => {\r\n setSelectedRecord(data);\r\n setReportParameterWindowState(true);\r\n },\r\n },\r\n {\r\n icon: \"eye\",\r\n label: \"View Report\",\r\n actionFn: async (data, recordIdsToProcessActionOn) => {\r\n setSelectedRecord(data);\r\n setReportTrialWindowState(true);\r\n },\r\n },\r\n ]}\r\n formLoadCallBk={(\r\n formActions: FormActionProps,\r\n formManager: UseFormReturn,\r\n record: any\r\n ) => {\r\n adjustFormAccordingToReportType(\r\n record.reportType,\r\n formActions,\r\n formManager\r\n );\r\n if (record?.useSysDatasource === true) {\r\n formActions.hideField(\"datasourceConId\");\r\n }\r\n }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"REPORT_PLURAL\")}\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"REPORT_EDIT\",\r\n preActionValidation: (record) => {\r\n if (\r\n record?.reportType === \"Jasper\" &&\r\n record?.useSysDatasource === false &&\r\n !record?.datasourceConId\r\n ) {\r\n toast.error(\"You must choose the datasource\");\r\n return false;\r\n }\r\n if (record?.reportType === \"Jasper\" && !record?.reportJasperName) {\r\n toast.error(\"You must enter the jasper report name\");\r\n return false;\r\n }\r\n if (record?.reportType === \"Jasper\" && !record?.reportJasperPath) {\r\n toast.error(\"You must enter the jasper report path\");\r\n return false;\r\n }\r\n if (\r\n record?.reportType === \"Blueprint\" &&\r\n !record?.reportBluePrintId\r\n ) {\r\n toast.error(\"You must choose the report blueprint\");\r\n return false;\r\n }\r\n if (\r\n record?.reportType === \"Excel\" &&\r\n !record?.reportExcelDataQueryId\r\n ) {\r\n toast.error(\"You must choose the report query\");\r\n return false;\r\n }\r\n return true;\r\n },\r\n }}\r\n deleteAction={{ isEnabled: true, authority: \"REPORT_DELETE\" }}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default ReportGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { isValidEmail } from \"../../../util\";\r\nimport { toast } from \"react-toastify\";\r\n\r\ntype MailRecipientGridProps = {\r\n selectedRecord: any;\r\n callBkFn: () => void;\r\n};\r\n\r\nconst MailRecipientGrid: React.FC<MailRecipientGridProps> = (props) => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/mailrecipient/all\",\r\n deleteById: \"api/v1/dev/mailrecipient\",\r\n save: \"api/v1/dev/mailrecipient\",\r\n findById: \"api/v1/dev/mailrecipient\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_RECIPIENT_MAIL_TEMPLATE_ID\",\r\n fieldName: \"mailTemplateId\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_RECIPIENT_RECIPIENT_TYPE\",\r\n fieldName: \"recipientType\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: [{ value: \"To\" }, { value: \"CC\" }],\r\n optionDisplayField: \"value\",\r\n optionValueField: \"value\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_RECIPIENT_RECIPIENT_MAIL\",\r\n fieldName: \"recipientMail\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_RECIPIENT_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n hideInfoBar={true}\r\n gridLoadParametersValues={{mailTemplateId:props.selectedRecord.id}}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"MAIL_RECIPIENT_PLURAL\")}\r\n girdIcon=\"users\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"MAIL_RECIPIENT_EDIT\",\r\n preActionValidation: (record) => {\r\n if (record?.recipientMail && !isValidEmail(record.recipientMail)) {\r\n toast.error(\"You must enter a valid email address\");\r\n return false;\r\n }\r\n record.mailTemplateId = props.selectedRecord.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{ isEnabled: true, authority: \"MAIL_RECIPIENT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default MailRecipientGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\ntype MailBodyGridProps = {\r\n selectedRecord: any;\r\n callBkFn: () => void;\r\n};\r\n\r\nconst MailBodyGrid: React.FC<MailBodyGridProps> = (props) => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const SystemDataQueries = useSelector(\r\n (state: any) => state.commonStores.stores.SystemDataQueries.data\r\n );\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/mailbody/all\",\r\n deleteById: \"api/v1/dev/mailbody\",\r\n save: \"api/v1/dev/mailbody\",\r\n findById: \"api/v1/dev/mailbody\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n\t{\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_BODY_NAME\",\r\n fieldName: \"bodyName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_BODY_ORDER\",\r\n fieldName: \"bodyOrder\",\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_BODY_CONTENT\",\r\n fieldName: \"bodyContent\",\r\n required: true,\r\n fieldType: \"html\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_BODY_CONTENT_DATA_QUERY_ID\",\r\n fieldName: \"bodyContentDataQueryId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemDataQueries,\r\n optionDisplayField: \"queryName\",\r\n optionValueField: \"id\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_PRINT_FOR_EACH_RECORD\",\r\n fieldName: \"printForEachRecord\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_IS_MAIN\",\r\n fieldName: \"isMain\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_MAIL_TEMPLATE_ID\",\r\n fieldName: \"mailTemplateId\",\r\n required: false,\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n fieldType: \"number\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n hideInfoBar={true}\r\n gridLoadParametersValues={{ mailTemplateId: props.selectedRecord.id }}\r\n setData={setData}\r\n editMode={{\r\n editMode: \"modal\",\r\n specs: {\r\n modalIcon: { prefix: \"fas\", iconName: \"envelope-open-text\" },\r\n modalTitle: \"Mail Body\",\r\n modalWidth: \"50%\",\r\n },\r\n }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"MAIL_BODY_PLURAL\")}\r\n girdIcon={{ prefix: \"fas\", iconName: \"envelope-open-text\" }}\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"MAIL_BODY_EDIT\",\r\n preActionValidation: async (record) => {\r\n record.mailTemplateId = props.selectedRecord.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{ isEnabled: true, authority: \"MAIL_BODY_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default MailBodyGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\ntype MailAttachmentGridProps = {\r\n selectedRecord: any;\r\n callBkFn: () => void;\r\n};\r\n\r\nconst MailAttachmentGrid: React.FC<MailAttachmentGridProps> = (props) => {\r\n const SystemReports = useSelector(\r\n (state: any) => state.commonStores.stores.SystemReports.data\r\n );\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/mailattachment/all\",\r\n deleteById: \"api/v1/dev/mailattachment\",\r\n save: \"api/v1/dev/mailattachment\",\r\n findById: \"api/v1/dev/mailattachment\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n options: SystemReports,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"reportName\",\r\n fieldLabel: \"REPORT_REPORT_NAME\",\r\n fieldName: \"reportId\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_ATTACHMENT_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_ATTACHMENT_MAIL_TEMPLATE_ID\",\r\n fieldName: \"mailTemplateId\",\r\n required: false,\r\n hidden: true,\r\n gridProps: { hidden: true },\r\n fieldType: \"number\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n hideInfoBar={true}\r\n gridLoadParametersValues={{ mailTemplateId: props.selectedRecord.id }}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"MAIL_ATTACHMENT_PLURAL\")}\r\n girdIcon=\"paperclip\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"MAIL_ATTACHMENT_EDIT\",\r\n preActionValidation: (record) => {\r\n record.mailTemplateId = props.selectedRecord.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{ isEnabled: true, authority: \"MAIL_ATTACHMENT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default MailAttachmentGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport {\r\n FormActionProps,\r\n FormElementProps,\r\n} from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { UseFormReturn } from \"react-hook-form\";\r\n\r\ntype ValidationCritria = {\r\n isVisible: boolean;\r\n isMandatory: boolean;\r\n};\r\n\r\nexport type EngineType = \"Gmail\" | \"Azure\";\r\n\r\ntype ReportValidationOptions = {\r\n mailHost: ValidationCritria;\r\n mailPort: ValidationCritria;\r\n mailUsername: ValidationCritria;\r\n mailPassword: ValidationCritria; \r\n mailProtocol: ValidationCritria;\r\n isMailSmtpAuthEnabled: ValidationCritria;\r\n isMailStarttlsEnabled: ValidationCritria;\r\n isSmtpSSlEnabled: ValidationCritria;\r\n azureGraphApiClientId: ValidationCritria;\r\n azureGraphApiClientSecret: ValidationCritria;\r\n azureGraphApiTenantId: ValidationCritria;\r\n azureGraphApiScope: ValidationCritria;\r\n azureGraphApiEmailId: ValidationCritria;\r\n};\r\n\r\ntype validationObjectType = {\r\n [key in EngineType]: ReportValidationOptions;\r\n};\r\n\r\nconst validationObject: validationObjectType = {\r\n Gmail: {\r\n mailHost: { isMandatory: true, isVisible: true },\r\n mailPort: { isMandatory: true, isVisible: true },\r\n mailUsername: { isMandatory: true, isVisible: true },\r\n mailPassword: { isMandatory: true, isVisible: true }, \r\n mailProtocol: { isMandatory: true, isVisible: true },\r\n isMailSmtpAuthEnabled: { isMandatory: true, isVisible: true },\r\n isMailStarttlsEnabled: { isMandatory: true, isVisible: true },\r\n isSmtpSSlEnabled: { isMandatory: true, isVisible: true },\r\n azureGraphApiClientId: { isMandatory: false, isVisible: false },\r\n azureGraphApiClientSecret: { isMandatory: false, isVisible: false },\r\n azureGraphApiTenantId: { isMandatory: false, isVisible: false },\r\n azureGraphApiScope: { isMandatory: false, isVisible: false },\r\n azureGraphApiEmailId: { isMandatory: false, isVisible: false },\r\n },\r\n Azure: {\r\n mailHost: { isMandatory: false, isVisible: false },\r\n mailPort: { isMandatory: false, isVisible: false },\r\n mailUsername: { isMandatory: false, isVisible: false },\r\n mailPassword: { isMandatory: false, isVisible: false }, \r\n mailProtocol: { isMandatory: false, isVisible: false },\r\n isMailSmtpAuthEnabled: { isMandatory: false, isVisible: false },\r\n isMailStarttlsEnabled: { isMandatory: false, isVisible: false },\r\n isSmtpSSlEnabled: { isMandatory: false, isVisible: false },\r\n azureGraphApiClientId: { isMandatory: true, isVisible: true },\r\n azureGraphApiClientSecret: { isMandatory: true, isVisible: true },\r\n azureGraphApiTenantId: { isMandatory: true, isVisible: true },\r\n azureGraphApiScope: { isMandatory: true, isVisible: true },\r\n azureGraphApiEmailId: { isMandatory: true, isVisible: true },\r\n },\r\n};\r\n\r\nconst adjustFormAccordingToEngineType = (\r\n value: any,\r\n formActions: FormActionProps,\r\n formManager: UseFormReturn\r\n) => {\r\n if (value && validationObject[value]) {\r\n const validationObjects: ReportValidationOptions = validationObject[value];\r\n const fields = Object.keys(validationObjects);\r\n for (const field of fields) {\r\n const validationCritria: ValidationCritria = validationObjects[field];\r\n if (validationCritria.isVisible) {\r\n formActions.showField(field);\r\n } else {\r\n formActions.hideField(field);\r\n formManager.setValue(field, null);\r\n }\r\n }\r\n } else {\r\n formActions.hideField(\"mailHost\");\r\n formManager.setValue(\"mailHost\", null);\r\n formActions.hideField(\"mailPort\");\r\n formManager.setValue(\"mailPort\", null);\r\n formActions.hideField(\"mailUsername\");\r\n formManager.setValue(\"mailUsername\", null);\r\n formActions.hideField(\"mailPassword\");\r\n formManager.setValue(\"mailPassword\", null); \r\n formActions.hideField(\"mailProtocol\");\r\n formManager.setValue(\"mailProtocol\", null);\r\n formActions.hideField(\"isMailSmtpAuthEnabled\");\r\n formManager.setValue(\"isMailSmtpAuthEnabled\", null);\r\n formActions.hideField(\"isMailStarttlsEnabled\");\r\n formManager.setValue(\"isMailStarttlsEnabled\", null);\r\n formActions.hideField(\"isSmtpSSlEnabled\");\r\n formManager.setValue(\"isSmtpSSlEnabled\", null);\r\n formActions.hideField(\"azureGraphApiClientId\");\r\n formManager.setValue(\"azureGraphApiClientId\", null);\r\n formActions.hideField(\"azureGraphApiClientSecret\");\r\n formManager.setValue(\"azureGraphApiClientSecret\", null);\r\n formActions.hideField(\"azureGraphApiTenantId\");\r\n formManager.setValue(\"azureGraphApiTenantId\", null);\r\n formActions.hideField(\"azureGraphApiScope\");\r\n formManager.setValue(\"azureGraphApiScope\", null);\r\n formActions.hideField(\"azureGraphApiEmailId\");\r\n formManager.setValue(\"azureGraphApiEmailId\", null);\r\n }\r\n};\r\n\r\nconst MailSenderConfigGrid: React.FC = () => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/mailsenderconfig/all\",\r\n deleteById: \"api/v1/dev/mailsenderconfig\",\r\n save: \"api/v1/dev/mailsenderconfig\",\r\n findById: \"api/v1/dev/mailsenderconfig\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Name\",\r\n fieldName: \"configName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Engine\",\r\n fieldName: \"mailEngine\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: [{ value: \"Gmail\" }, { value: \"Azure\" }],\r\n optionDisplayField: \"value\",\r\n optionValueField: \"value\",\r\n formProps: {\r\n onValueChangeCallBack(\r\n value,\r\n formManager,\r\n formActions,\r\n selectedRecord\r\n ) {\r\n adjustFormAccordingToEngineType(value, formActions, formManager);\r\n },\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Hostname\",\r\n fieldName: \"mailHost\",\r\n required: false,\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"port\",\r\n fieldName: \"mailPort\",\r\n required: false,\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"username\",\r\n fieldName: \"mailUsername\",\r\n required: false,\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"password\",\r\n fieldName: \"mailPassword\",\r\n required: false,\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Workflow Approval Receive Email\",\r\n fieldName: \"workFlowApprovalReceiveEmail\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Protocol\",\r\n fieldName: \"mailProtocol\",\r\n required: false,\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Enable Smtp Auth\",\r\n fieldName: \"isMailSmtpAuthEnabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Enable Start TLS\",\r\n fieldName: \"isMailStarttlsEnabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Enable SSL\",\r\n fieldName: \"isSmtpSSlEnabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Azure Graph API Client Id\",\r\n fieldName: \"azureGraphApiClientId\",\r\n required: false,\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Azure Graph API Secret\",\r\n fieldName: \"azureGraphApiClientSecret\",\r\n required: false,\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Azure Graph API Tenant Id\",\r\n fieldName: \"azureGraphApiTenantId\",\r\n required: false,\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Azure Graph API Scope\",\r\n fieldName: \"azureGraphApiScope\",\r\n required: false,\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Azure Graph API Email Id\",\r\n fieldName: \"azureGraphApiEmailId\",\r\n required: false,\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Default\",\r\n fieldName: \"isDefault\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Active\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{\r\n editMode: \"modal\",\r\n specs: {\r\n modalIcon: { iconName: \"paper-plane\", prefix: \"fas\" },\r\n modalTitle: \"Mail Sender Configuration\",\r\n modalWidth: 300,\r\n },\r\n }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"Mail Sender Configuration\")}\r\n girdIcon={{ iconName: \"paper-plane\", prefix: \"fas\" }}\r\n editAction={{ isEnabled: true, authority: \"MAIL_SENDER_CONFIG_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"MAIL_SENDER_CONFIG_DELETE\" }}\r\n formLoadCallBk={(\r\n formActions: FormActionProps,\r\n formManager: UseFormReturn,\r\n record: any\r\n ) => {\r\n adjustFormAccordingToEngineType(\r\n record.mailEngine,\r\n formActions,\r\n formManager\r\n );\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default MailSenderConfigGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\ntype WorkflowDocumentStatusGridProps = {\r\n selectedRecord: any;\r\n};\r\n\r\nconst WorkflowDocumentStatusGrid: React.FC<WorkflowDocumentStatusGridProps> = (\r\n props\r\n) => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/workflowdocumentstatus/all\",\r\n deleteById: \"api/v1/dev/workflowdocumentstatus\",\r\n save: \"api/v1/dev/workflowdocumentstatus\",\r\n findById: \"api/v1/dev/workflowdocumentstatus\",\r\n setData: setData,\r\n });\r\n const SystemDataQueries = useSelector(\r\n (state: any) => state.commonStores.stores.SystemDataQueries.data\r\n );\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_DOCUMENT_STATUS_CODE\",\r\n fieldName: \"documentStatusCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Status Arabic Name\",\r\n fieldName: \"documentStatusArName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Status English Name\",\r\n fieldName: \"documentStatusEnName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_DOCUMENT_STATUS_ORDER\",\r\n fieldName: \"documentStatusOrder\",\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_IS_ZERO_STATE\",\r\n fieldName: \"isZeroState\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel:\r\n \"Next Actions Query (must return array of actions in table named workflow_document_action)\",\r\n fieldName: \"nextActionsQueryId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemDataQueries,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"queryName\",\r\n gridProps: { hidden: true },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel:\r\n \"Next Action Takers Query (must return array of persons in table named person)\",\r\n fieldName: \"nextActionTakersQueryId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemDataQueries,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"queryName\",\r\n gridProps: { hidden: true },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Next Action Takers Authority\",\r\n fieldName: \"nextActionTakersAuthority\",\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_WORKFLOW_DOCUMENT_ID\",\r\n fieldName: \"workflowDocumentId\",\r\n required: false,\r\n hidden: true,\r\n gridProps: { hidden: true },\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n hideInfoBar={true}\r\n gridLoadParametersValues={{\r\n workflowDocumentId: props.selectedRecord.id,\r\n }}\r\n editMode={{\r\n editMode: \"modal\",\r\n specs: {\r\n modalIcon: \"tag\",\r\n modalTitle: \"Workflow Document Status\",\r\n modalWidth: 600,\r\n },\r\n }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"WORKFLOW_DOCUMENT_STATUS_PLURAL\")}\r\n girdIcon=\"tags\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_STATUS_EDIT\",\r\n preActionValidation: (record) => {\r\n record.workflowDocumentId = props.selectedRecord.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_STATUS_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default WorkflowDocumentStatusGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\ntype WorkflowDocumentActionMailGridProps = {\r\n selectedRecord: any;\r\n};\r\n\r\nconst WorkflowDocumentActionMailGrid: React.FC<\r\n WorkflowDocumentActionMailGridProps\r\n> = (props) => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/workflowdocumentactionmail/all\",\r\n deleteById: \"api/v1/dev/workflowdocumentactionmail\",\r\n save: \"api/v1/dev/workflowdocumentactionmail\",\r\n findById: \"api/v1/dev/workflowdocumentactionmail\",\r\n setData: setData,\r\n });\r\n\r\n const SystemMailTemplates = useSelector(\r\n (state: any) => state.commonStores.stores.SystemMailTemplates.data\r\n );\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_MAIL_DOCUMENT_ACTION_ID\",\r\n fieldName: \"documentActionId\",\r\n required: false,\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_MAIL_MAIL_TEMPLATE_ID\",\r\n fieldName: \"mailTemplateId\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: SystemMailTemplates,\r\n optionDisplayField: \"mailTemplateName\",\r\n optionValueField: \"id\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_MAIL_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n hideInfoBar={true}\r\n gridLoadParametersValues={{ actionId: props.selectedRecord.id }}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"WORKFLOW_DOCUMENT_ACTION_MAIL_PLURAL\")}\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_MAIL_EDIT\",\r\n preActionValidation: (record) => {\r\n record.documentActionId = props.selectedRecord.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_MAIL_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default WorkflowDocumentActionMailGrid;\r\n","import { useEffect, useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions, useAxios, useWindow } from \"../../../hooks\";\r\nimport WorkflowDocumentActionMailGrid from \"./WorkflowDocumentActionMailGrid\";\r\n\r\ntype WorkflowDocumentActionGridProps = {\r\n selectedRecord: any;\r\n};\r\n\r\nconst WorkflowDocumentActionGrid: React.FC<WorkflowDocumentActionGridProps> = (\r\n props\r\n) => {\r\n const [selectedRecord, setSelectedRecord] = useState<any>(null);\r\n const {\r\n Window: ActionMailsWindow,\r\n setWindowState: setActionMailWindowState,\r\n } = useWindow({\r\n windowTitle: \"Action Mail Notification\",\r\n windowIcon: \"envelope\",\r\n width: \"50%\",\r\n });\r\n const { t } = useTranslation();\r\n const { handleGetRequest } = useAxios();\r\n const [workflowStates, setWorkflowStates] = useState<Array<any>>([]);\r\n const loadWorkFlowDocumentStates = async () => {\r\n await handleGetRequest({\r\n endPointURI: \"api/v1/dev/workflowdocumentstatus/all\",\r\n showMask: true,\r\n parameters: {\r\n workflowDocumentId: props.selectedRecord.id,\r\n },\r\n successCallBkFn: (response: any) => {\r\n setWorkflowStates(response.data);\r\n },\r\n });\r\n };\r\n useEffect(() => {\r\n loadWorkFlowDocumentStates();\r\n }, [props.selectedRecord]);\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/workflowdocumentaction/all\",\r\n deleteById: \"api/v1/dev/workflowdocumentaction\",\r\n save: \"api/v1/dev/workflowdocumentaction\",\r\n findById: \"api/v1/dev/workflowdocumentaction\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_DOCUMENT_ACTION_CODE\",\r\n fieldName: \"documentActionCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Action Arabic Name\",\r\n fieldName: \"documentActionArName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Action English Name\",\r\n fieldName: \"documentActionEnName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_NEXT_DOCUMENT_STATUS_ID\",\r\n fieldName: \"nextDocumentStatusId\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: workflowStates,\r\n optionDisplayField: \"documentStatusCode\",\r\n optionValueField: \"id\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel:\r\n \"Post Action Endpoint ( system will call it with post method and parameters refDocumentId , workflowActionId)\",\r\n fieldName: \"postActionEndpoint\",\r\n required: false,\r\n fieldType: \"text\",\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel:\r\n \"Pre Action Endpoint ( system will call it with post method and parameters refDocumentId , workflowActionId)\",\r\n fieldName: \"preActionEndpoint\",\r\n required: false,\r\n fieldType: \"text\",\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_REQUIRE_COMMENT\",\r\n fieldName: \"requireComment\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_WORKFLOW_DOCUMENT_ID\",\r\n fieldName: \"workflowDocumentId\",\r\n required: false,\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: { hidden: true },\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <ActionMailsWindow>\r\n <WorkflowDocumentActionMailGrid selectedRecord={selectedRecord} />\r\n </ActionMailsWindow>\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n hideInfoBar={true}\r\n gridLoadParametersValues={{\r\n workflowDocumentId: props.selectedRecord.id,\r\n }}\r\n setData={setData}\r\n editMode={{\r\n editMode: \"modal\",\r\n specs: {\r\n modalIcon: \"stamp\",\r\n modalTitle: \"Workflow Document Action\",\r\n modalWidth: 700,\r\n },\r\n }}\r\n rowActions={[\r\n {\r\n label: \"Action Mail Notifications\",\r\n icon: \"envelope\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setActionMailWindowState(true);\r\n },\r\n },\r\n ]}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"WORKFLOW_DOCUMENT_ACTION_PLURAL\")}\r\n girdIcon=\"stamp\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_EDIT\",\r\n preActionValidation: (record) => {\r\n record.workflowDocumentId = props.selectedRecord.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_DELETE\",\r\n }}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default WorkflowDocumentActionGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport {\r\n FormActionProps,\r\n FormElementProps,\r\n} from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { UseFormReturn } from \"react-hook-form\";\r\n\r\ntype ValidationCritria = {\r\n isVisible: boolean;\r\n isMandatory: boolean;\r\n};\r\n\r\nexport type WidgetType =\r\n | \"LineChart\"\r\n | \"ColumnChart\"\r\n | \"PieChart\"\r\n | \"Card\"\r\n | \"CircularProgress\"\r\n | \"LinearProgress\";\r\n\r\ntype WidgetValidationOptions = {\r\n height: ValidationCritria;\r\n width: ValidationCritria;\r\n horizontalAxisField: ValidationCritria;\r\n horizontalAxisLabel: ValidationCritria;\r\n seriesKeys: ValidationCritria;\r\n verticalAxisField: ValidationCritria;\r\n verticalAxisLabel: ValidationCritria;\r\n};\r\n\r\ntype validationObjectType = {\r\n [key in WidgetType]: WidgetValidationOptions;\r\n};\r\n\r\nconst validationObject: validationObjectType = {\r\n LineChart: {\r\n height: { isMandatory: true, isVisible: true },\r\n width: { isMandatory: true, isVisible: true },\r\n horizontalAxisField: { isMandatory: true, isVisible: true },\r\n horizontalAxisLabel: { isMandatory: true, isVisible: true },\r\n seriesKeys: { isMandatory: false, isVisible: false },\r\n verticalAxisField: { isMandatory: true, isVisible: true },\r\n verticalAxisLabel: { isMandatory: true, isVisible: true },\r\n },\r\n ColumnChart: {\r\n height: { isMandatory: true, isVisible: true },\r\n width: { isMandatory: true, isVisible: true },\r\n horizontalAxisField: { isMandatory: true, isVisible: true },\r\n horizontalAxisLabel: { isMandatory: true, isVisible: true },\r\n seriesKeys: { isMandatory: false, isVisible: false },\r\n verticalAxisField: { isMandatory: true, isVisible: true },\r\n verticalAxisLabel: { isMandatory: true, isVisible: true },\r\n },\r\n PieChart: {\r\n height: { isMandatory: true, isVisible: true },\r\n width: { isMandatory: true, isVisible: true },\r\n horizontalAxisField: { isMandatory: true, isVisible: true },\r\n horizontalAxisLabel: { isMandatory: false, isVisible: false },\r\n seriesKeys: { isMandatory: false, isVisible: false },\r\n verticalAxisField: { isMandatory: true, isVisible: true },\r\n verticalAxisLabel: { isMandatory: false, isVisible: false },\r\n },\r\n Card: {\r\n height: { isMandatory: true, isVisible: true },\r\n width: { isMandatory: true, isVisible: true },\r\n horizontalAxisField: { isMandatory: true, isVisible: true },\r\n horizontalAxisLabel: { isMandatory: false, isVisible: false },\r\n seriesKeys: { isMandatory: false, isVisible: false },\r\n verticalAxisField: { isMandatory: true, isVisible: true },\r\n verticalAxisLabel: { isMandatory: false, isVisible: false },\r\n },\r\n CircularProgress: {\r\n height: { isMandatory: false, isVisible: false },\r\n width: { isMandatory: false, isVisible: false },\r\n horizontalAxisField: { isMandatory: false, isVisible: false },\r\n horizontalAxisLabel: { isMandatory: false, isVisible: false },\r\n seriesKeys: { isMandatory: false, isVisible: false },\r\n verticalAxisField: { isMandatory: false, isVisible: false },\r\n verticalAxisLabel: { isMandatory: false, isVisible: false },\r\n },\r\n LinearProgress: {\r\n height: { isMandatory: false, isVisible: false },\r\n width: { isMandatory: false, isVisible: false },\r\n horizontalAxisField: { isMandatory: false, isVisible: false },\r\n horizontalAxisLabel: { isMandatory: false, isVisible: false },\r\n seriesKeys: { isMandatory: false, isVisible: false },\r\n verticalAxisField: { isMandatory: false, isVisible: false },\r\n verticalAxisLabel: { isMandatory: false, isVisible: false },\r\n },\r\n};\r\n\r\nconst adjustFormAccordingToWidgetType = (\r\n value: any,\r\n formActions: FormActionProps,\r\n formManager: UseFormReturn\r\n) => {\r\n if (value && validationObject[value]) {\r\n const validationObjects: WidgetValidationOptions = validationObject[value];\r\n const fields = Object.keys(validationObjects);\r\n for (const field of fields) {\r\n const validationCritria: ValidationCritria = validationObjects[field];\r\n if (validationCritria.isVisible) {\r\n formActions.showField(field);\r\n } else {\r\n formActions.hideField(field);\r\n formManager.setValue(field, null);\r\n }\r\n }\r\n } else {\r\n formActions.hideField(\"height\");\r\n formManager.setValue(\"height\", null);\r\n formActions.hideField(\"width\");\r\n formManager.setValue(\"width\", null);\r\n formActions.hideField(\"horizontalAxisField\");\r\n formManager.setValue(\"horizontalAxisField\", null);\r\n formActions.hideField(\"horizontalAxisLabel\");\r\n formManager.setValue(\"horizontalAxisLabel\", null);\r\n formActions.hideField(\"seriesKeys\");\r\n formManager.setValue(\"seriesKeys\", null);\r\n formActions.hideField(\"verticalAxisField\");\r\n formManager.setValue(\"verticalAxisField\", null);\r\n formActions.hideField(\"verticalAxisLabel\");\r\n formManager.setValue(\"verticalAxisLabel\", null);\r\n }\r\n};\r\n\r\nconst WidgetGrid: React.FC = () => {\r\n const { t } = useTranslation();\r\n const SystemDataQueries = useSelector(\r\n (state: any) => state.commonStores.stores.SystemDataQueries.data\r\n );\r\n const SystemWidgetTypes = useSelector(\r\n (state: any) => state.commonStores.stores.SystemWidgetTypes.data\r\n );\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n commonStoreKey: \"SystemWidgets\",\r\n deleteById: \"api/v1/dev/widget\",\r\n save: \"api/v1/dev/widget\",\r\n findById: \"api/v1/dev/widget\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_WIDGET_TYPE\",\r\n fieldName: \"widgetType\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: SystemWidgetTypes,\r\n optionDisplayField: \"name\",\r\n optionValueField: \"name\",\r\n formProps: {\r\n onValueChangeCallBack(\r\n value,\r\n formManager,\r\n formActions,\r\n selectedRecord\r\n ) {\r\n adjustFormAccordingToWidgetType(value, formActions, formManager);\r\n },\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Query\",\r\n fieldName: \"dataQueryId\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: SystemDataQueries,\r\n optionDisplayField: \"queryName\",\r\n optionValueField: \"id\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_WIDGET_NAME\",\r\n fieldName: \"widgetName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_ICON\",\r\n fieldName: \"icon\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_TITLE\",\r\n fieldName: \"title\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_WIDGET_DESCRIPTION\",\r\n fieldName: \"widgetDescription\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_HEIGHT\",\r\n fieldName: \"height\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_WIDTH\",\r\n fieldName: \"width\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: [\r\n { value: 1 },\r\n { value: 2 },\r\n { value: 3 },\r\n { value: 4 },\r\n { value: 5 },\r\n { value: 6 },\r\n { value: 7 },\r\n { value: 8 },\r\n { value: 9 },\r\n { value: 10 },\r\n { value: 11 },\r\n { value: 12 },\r\n ],\r\n optionDisplayField: \"value\",\r\n optionValueField: \"value\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"group\",\r\n props: {\r\n style: { padding: 1, border: \"1px solid black\", width: \"100%\" },\r\n label: \"Data Specs\",\r\n elements: [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_HORIZONTAL_AXIS_FIELD\",\r\n fieldName: \"horizontalAxisField\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_HORIZONTAL_AXIS_LABEL\",\r\n fieldName: \"horizontalAxisLabel\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_SERIES_KEYS\",\r\n fieldName: \"seriesKeys\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_VERTICAL_AXIS_FIELD\",\r\n fieldName: \"verticalAxisField\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_VERTICAL_AXIS_LABEL\",\r\n fieldName: \"verticalAxisLabel\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{\r\n editMode: \"modal\",\r\n specs: { modalIcon: \"chart-pie\", modalTitle: \"Widget\" },\r\n }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"WIDGET_PLURAL\")}\r\n girdIcon=\"chart-pie\"\r\n editAction={{ isEnabled: true, authority: \"WIDGET_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"WIDGET_DELETE\" }}\r\n formLoadCallBk={(\r\n formActions: FormActionProps,\r\n formManager: UseFormReturn,\r\n record: any\r\n ) => {\r\n adjustFormAccordingToWidgetType(\r\n record.widgetType,\r\n formActions,\r\n formManager\r\n );\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default WidgetGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\ntype DashboardWidgetGridProps = {\r\n selectedRecord: any;\r\n};\r\n\r\nconst DashboardWidgetGrid: React.FC<DashboardWidgetGridProps> = (props) => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const SystemWidgets = useSelector(\r\n (state: any) => state.commonStores.stores.SystemWidgets.data\r\n );\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/dashboardwidget/all\",\r\n deleteById: \"api/v1/dev/dashboardwidget\",\r\n save: \"api/v1/dev/dashboardwidget\",\r\n findById: \"api/v1/dev/dashboardwidget\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_WIDGET_DASHBOARD_ID\",\r\n fieldName: \"dashboardId\",\r\n required: false,\r\n hidden: true,\r\n gridProps: { hidden: true },\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_WIDGET_WIDGET_ID\",\r\n fieldName: \"widgetId\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: SystemWidgets,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"widgetName\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_WIDGET_WIDGET_ORDER\",\r\n fieldName: \"widgetOrder\",\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_WIDGET_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n hideInfoBar={true}\r\n formElements={formElements}\r\n gridLoadParametersValues={{ dashboardId: props.selectedRecord.id }}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"DASHBOARD_WIDGET_PLURAL\")}\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"DASHBOARD_WIDGET_EDIT\",\r\n preActionValidation: async (data) => {\r\n data.dashboardId = props.selectedRecord.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{ isEnabled: true, authority: \"DASHBOARD_WIDGET_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default DashboardWidgetGrid;\r\n","import Home from \"../components/common/Home\";\r\nimport { ADMINISTRATION_ROUTES } from \"./administration\";\r\nimport { SystemRoute } from \"./types\";\r\n\r\nexport const SYSTEM_ROUTES: Array<SystemRoute> = [\r\n {\r\n path: \"/\",\r\n component: Home,\r\n },\r\n ...ADMINISTRATION_ROUTES,\r\n];\r\n","import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { Box } from \"@mui/material\";\r\nimport { TemplateForm } from \"../templates\";\r\nimport ReportViewer from \"../templates/report/ReportViewer\";\r\nimport WorkflowDocumentPanel from \"../templates/workflow/WorkflowDocumentPanel\";\r\nimport ExampleDashboard from \"../templates/visuals/ExampleDashboard\";\r\nimport DashboardViewer from \"../templates/visuals/DashboardViewer\";\r\n\r\nconst Home: React.FC = () => {\r\n return (\r\n <DashboardViewer dashboardCode=\"XX_TEMPLATE_DASHBOARD\" />\r\n // <Box\r\n // sx={{\r\n // display: \"flex\",\r\n // flexDirection: \"column\",\r\n // alignItems: \"center\",\r\n // justifyContent: \"center\",\r\n // flex: 1,\r\n // fontSize: 24,\r\n // fontWeight: \"bold\",\r\n // }}\r\n // >\r\n // <img src=\"logo.png\" style={{ margin: 5 }} />\r\n // <div>Welcome to Ezzsteel Flat Product Management System</div>\r\n // <div style={{ fontSize: 16 }}>\r\n // Use side menu [\r\n // <FontAwesomeIcon\r\n // icon=\"bars\"\r\n // style={{ marginLeft: 10, marginRight: 10 }}\r\n // />\r\n // ] to navigate to your authorized system modules\r\n // </div>\r\n // </Box>\r\n );\r\n};\r\n\r\nexport default Home;\r\n","import { SystemRoute } from \"../types\";\r\nimport { adminRoutes } from \"./adminRoutes\";\r\nimport { devRoutes } from \"./devRoutes\";\r\n\r\nexport const ADMINISTRATION_ROUTES: Array<SystemRoute> = [\r\n ...adminRoutes,\r\n ...devRoutes,\r\n];\r\n","import { SystemRoute } from \"../types\";\r\nimport OrganizationGrid from \"../../components/administration/admin/OrganizationGrid\";\r\nimport OrganizationMemberGrid from \"../../components/administration/admin/OrganizationMemberGrid\";\r\nimport OrganizationMemberRoleGrid from \"../../components/administration/admin/OrganizationMemberRoleGrid\";\r\nimport OrganizationRankGrid from \"../../components/administration/admin/OrganizationRankGrid\";\r\nimport OrganizationUnitGrid from \"../../components/administration/admin/OrganizationUnitGrid\";\r\nimport OrganizationUnitTypeGrid from \"../../components/administration/admin/OrganizationUnitTypeGrid\";\r\nimport PersonGrid from \"../../components/administration/admin/PersonGrid\";\r\nimport SystemApplicationGrid from \"../../components/administration/admin/SystemApplicationGrid\";\r\nimport SystemApplicationAuthorityGrid from \"../../components/administration/admin/SystemApplicationAuthorityGrid\";\r\nimport SystemApplicationModuleGrid from \"../../components/administration/admin/SystemApplicationModuleGrid\";\r\nimport SystemApplicationRoleGrid from \"../../components/administration/admin/SystemApplicationRoleGrid\";\r\nimport SystemApplicationRoleAuthorityGrid from \"../../components/administration/admin/SystemApplicationRoleAuthorityGrid\";\r\nexport const adminRoutes: Array<SystemRoute> = [\r\n {\r\n path: \"admin/organizations\",\r\n component: OrganizationGrid,\r\n authority: \"ORGANIZATION_VIEW\",\r\n },\r\n {\r\n path: \"admin/organizationmembers\",\r\n component: OrganizationMemberGrid,\r\n authority: \"ORGANIZATION_MEMBER_VIEW\",\r\n },\r\n {\r\n path: \"admin/organizationmemberroles\",\r\n component: OrganizationMemberRoleGrid,\r\n authority: \"ORGANIZATION_MEMBER_ROLE_VIEW\",\r\n },\r\n {\r\n path: \"admin/organizationranks\",\r\n component: OrganizationRankGrid,\r\n authority: \"ORGANIZATION_RANK_VIEW\",\r\n },\r\n {\r\n path: \"admin/organizationunits\",\r\n component: OrganizationUnitGrid,\r\n authority: \"ORGANIZATION_UNIT_VIEW\",\r\n },\r\n {\r\n path: \"admin/organizationunittypes\",\r\n component: OrganizationUnitTypeGrid,\r\n authority: \"ORGANIZATION_UNIT_TYPE_VIEW\",\r\n },\r\n {\r\n path: \"admin/persons\",\r\n component: PersonGrid,\r\n authority: \"PERSON_VIEW\",\r\n },\r\n {\r\n path: \"admin/systemapplications\",\r\n component: SystemApplicationGrid,\r\n authority: \"SYSTEM_APPLICATION_VIEW\",\r\n },\r\n {\r\n path: \"admin/systemapplicationauthorities\",\r\n component: SystemApplicationAuthorityGrid,\r\n authority: \"SYSTEM_APPLICATION_AUTHORITY_VIEW\",\r\n },\r\n {\r\n path: \"admin/systemapplicationmodules\",\r\n component: SystemApplicationModuleGrid,\r\n authority: \"SYSTEM_APPLICATION_MODULE_VIEW\",\r\n },\r\n {\r\n path: \"admin/systemapplicationroles\",\r\n component: SystemApplicationRoleGrid,\r\n authority: \"SYSTEM_APPLICATION_ROLE_VIEW\",\r\n },\r\n {\r\n path: \"admin/systemapplicationroleauthorities\",\r\n component: SystemApplicationRoleAuthorityGrid,\r\n authority: \"SYSTEM_APPLICATION_ROLE_AUTHORITY_VIEW\",\r\n },\r\n];\r\n\r\n// import { adminRoutes } from \"./adminRoutes\";\r\n// [...adminRoutes]\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions, useWindow } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport OrganizationApplicationModuleGrid from \"./OrganizationApplicationModuleGrid\";\r\nimport OrganizationUnitTypeGrid from \"./OrganizationUnitTypeGrid\";\r\nimport OrganizationUnitGrid from \"./OrganizationUnitGrid\";\r\nimport OrganizationRankGrid from \"./OrganizationRankGrid\";\r\n\r\nconst OrganizationGrid: React.FC = () => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/organization/all\",\r\n deleteById: \"api/v1/admin/organization\",\r\n save: \"api/v1/admin/organization\",\r\n findById: \"api/v1/admin/organization\",\r\n setData: setData,\r\n });\r\n const {\r\n Window: ApplicationModulesWindow,\r\n setWindowState: setApplicationWindowState,\r\n } = useWindow({\r\n windowTitle: \"Organization Subscriped Application Modules\",\r\n windowIcon: \"layer-group\",\r\n });\r\n const {\r\n Window: OrgUnitTypesWindow,\r\n setWindowState: setOrgUnitTypesWindowState,\r\n } = useWindow({\r\n windowTitle: \"Organization Unit Types\",\r\n windowIcon: \"tags\",\r\n });\r\n const { Window: OrgUnitsWindow, setWindowState: setOrgUnitsWindowState } =\r\n useWindow({\r\n windowTitle: \"Organization Units\",\r\n windowIcon: \"folder-tree\",\r\n });\r\n const { Window: OrgRanksWindow, setWindowState: setOrgRanksWindowState } =\r\n useWindow({\r\n windowTitle: \"Organization Ranks\",\r\n windowIcon: \"street-view\",\r\n });\r\n const [selectedRecord, setSelectedRecord] = useState<any>(null);\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_ORGANIZATION_CODE\",\r\n fieldName: \"organizationCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_ORGANIZATION_AR_NAME\",\r\n fieldName: \"organizationArName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_ORGANIZATION_EN_NAME\",\r\n fieldName: \"organizationEnName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type:'field',\r\n mode:'props',\r\n props:{\r\n fieldLabel:'Status',\r\n fieldName:'status',\r\n fieldType:'lookup',\r\n lookupType:'STATUS'\r\n }\r\n }\r\n ];\r\n\r\n return (\r\n <>\r\n <ApplicationModulesWindow>\r\n <OrganizationApplicationModuleGrid\r\n selectedOrganization={selectedRecord}\r\n />\r\n </ApplicationModulesWindow>\r\n <OrgUnitTypesWindow>\r\n <OrganizationUnitTypeGrid selectedOrganization={selectedRecord} />\r\n </OrgUnitTypesWindow>\r\n <OrgUnitsWindow>\r\n <OrganizationUnitGrid selectedOrganization={selectedRecord} />\r\n </OrgUnitsWindow>\r\n <OrgRanksWindow>\r\n <OrganizationRankGrid selectedOrganization={selectedRecord} />\r\n </OrgRanksWindow>\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n rowActions={[\r\n {\r\n icon: \"layer-group\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setApplicationWindowState(true);\r\n },\r\n label: \"modules\",\r\n },\r\n {\r\n icon: \"tags\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setOrgUnitTypesWindowState(true);\r\n },\r\n label: \"Organization Unit Types\",\r\n },\r\n {\r\n icon: \"folder-tree\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setOrgUnitsWindowState(true);\r\n },\r\n label: \"Organization Units\",\r\n },\r\n {\r\n icon: \"street-view\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setOrgRanksWindowState(true);\r\n },\r\n label: \"Organization Ranks\",\r\n },\r\n ]}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ORGANIZATION_PLURAL\"\r\n girdIcon=\"globe\"\r\n editAction={{ isEnabled: true, authority: \"ORGANIZATION_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"ORGANIZATION_DELETE\" }}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default OrganizationGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport {useApiActions} from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst OrganizationMemberRoleGrid: React.FC = () => {\r\n\tconst { t } = useTranslation();\r\n\tconst [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n \tfindAll: \"api/v1/admin/organizationmemberrole/all\",\r\n \tdeleteById: \"api/v1/admin/organizationmemberrole\",\r\n \tsave: \"api/v1/admin/organizationmemberrole\",\r\n\t\tfindById: \"api/v1/admin/organizationmemberrole\",\r\n \tsetData: setData,\r\n \t});\r\n\t\r\n\tconst formElements: Array<FormElementProps> = [\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n \t\t\t\ttype: \"field\",\r\n \t\t\t\tmode: \"props\",\r\n \t\t\t\tprops: {\r\n \t\t\t\tfieldLabel: \"ORGANIZATION_MEMBER_ROLE_IS_ACTIVE\",\r\n \t\t\t\tfieldName: \"isActive\",\r\n \t\t\t\trequired: false,\r\n \t\t\t\tfieldType: \"checkbox\",\r\n \t\t\t\t},\r\n \t\t\t},\r\n\t\t\t\t\t \t\t\t \t\t\t \t\t\t \t\t\t\t\t\t\t\t\t\t{\r\n \t\t\t\ttype: \"field\",\r\n \t\t\t\tmode: \"props\",\r\n \t\t\t\tprops: {\r\n \t\t\t\tfieldLabel: \"ORGANIZATION_MEMBER_ROLE_END_DATE\",\r\n \t\t\t\tfieldName: \"endDate\",\r\n \t\t\t\trequired: false,\r\n \t\t\t\tfieldType: \"datetime\",\r\n \t\t\t\t},\r\n \t\t\t},\r\n\t\t\t\t\t \t\t\t \t\t\t \t\t\t\t\t\t \t\t\t{\r\n \t\t\t\ttype: \"field\",\r\n \t\t\t\tmode: \"props\",\r\n \t\t\t\tprops: {\r\n \t\t\t\tfieldLabel: \"ORGANIZATION_MEMBER_ROLE_ORGANIZATION_MEMBER_ID\",\r\n \t\t\t\tfieldName: \"organizationMemberId\",\r\n \t\t\t\trequired: true,\r\n \t\t\t\tfieldType: \"text\",\r\n \t\t\t\t},\r\n \t\t\t},\t\t\t\r\n\t\t\t\t\t \t\t\t\t\t\t\t\t\t\t{\r\n \t\t\t\ttype: \"field\",\r\n \t\t\t\tmode: \"props\",\r\n \t\t\t\tprops: {\r\n \t\t\t\tfieldLabel: \"ORGANIZATION_MEMBER_ROLE_START_DATE\",\r\n \t\t\t\tfieldName: \"startDate\",\r\n \t\t\t\trequired: false,\r\n \t\t\t\tfieldType: \"datetime\",\r\n \t\t\t\t},\r\n \t\t\t},\r\n\t\t\t\t\t \t\t\t\t\t\t \t\t\t{\r\n \t\t\t\ttype: \"field\",\r\n \t\t\t\tmode: \"props\",\r\n \t\t\t\tprops: {\r\n \t\t\t\tfieldLabel: \"ORGANIZATION_MEMBER_ROLE_SYSTEM_APPLICATION_ROLE_ID\",\r\n \t\t\t\tfieldName: \"systemApplicationRoleId\",\r\n \t\t\t\trequired: true,\r\n \t\t\t\tfieldType: \"text\",\r\n \t\t\t\t},\r\n \t\t\t},\t\t\t\r\n\t\t\t\t\t \t\t\t \t\t\t \t\t\t \t\t];\r\n\r\n\treturn (\r\n \t<TemplateGrid\r\n \t\tapiActions={apiActions}\r\n \t\tdata={data}\r\n \t\tsetData={setData}\r\n \t\teditMode={{ editMode: \"row\"}}\r\n \t\tformElements={formElements}\r\n\t\t\tkeyColumnName={\"id\"}\r\n \t\tgridTitle=\"ORGANIZATION_MEMBER_ROLE_PLURAL\"\r\n \t\tgirdIcon=\"table-cells\"\r\n \t\teditAction={{ isEnabled: true, authority: \"ORGANIZATION_MEMBER_ROLE_EDIT\" }}\r\n \t\tdeleteAction={{ isEnabled: true, authority: \"ORGANIZATION_MEMBER_ROLE_DELETE\" }}\r\n \t/>\r\n );\r\n};\r\n\r\nexport default OrganizationMemberRoleGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions, useWindow } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { toast } from \"react-toastify\";\r\nimport OrganizationMemberGrid from \"./OrganizationMemberGrid\";\r\n\r\nconst PersonGrid: React.FC = () => {\r\n const { t } = useTranslation();\r\n const [selectedPerson, setSelectedPerson] = useState<any>(null);\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/person/all\",\r\n deleteById: \"api/v1/admin/person\",\r\n save: \"api/v1/admin/person\",\r\n findById: \"api/v1/admin/person\",\r\n setData: setData,\r\n });\r\n const {\r\n Window: OrganizationMembersWindow,\r\n setWindowState: setOrganizationMemberWindowState,\r\n } = useWindow({\r\n windowTitle: \"Organizations Membership\",\r\n windowIcon: \"globe\",\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n hidden: true,\r\n fieldLabel: \"Ref Source\",\r\n fieldName: \"refSource\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n hidden: true,\r\n fieldLabel: \"PERSON_EMPLOYEE_NUMBER\",\r\n fieldName: \"refSyncNumber\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"PERSON_EMPLOYEE_AR_NAME\",\r\n fieldName: \"employeeArName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"PERSON_EMPLOYEE_EN_NAME\",\r\n fieldName: \"employeeEnName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"PERSON_EMAIL\",\r\n fieldName: \"email\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"PERSON_MOBILE_NUMBER\",\r\n fieldName: \"mobileNumber\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n hidden: true,\r\n gridProps: { hidden: true },\r\n fieldLabel: \"PERSON_PASSWORD\",\r\n fieldName: \"password\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"PERSON_USERNAME\",\r\n fieldName: \"username\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"PERSON_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <OrganizationMembersWindow>\r\n <OrganizationMemberGrid selectedPerson={selectedPerson} />\r\n </OrganizationMembersWindow>\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{\r\n editMode: \"modal\",\r\n specs: {\r\n modalIcon: \"user\",\r\n modalTitle: \"Person Profile\",\r\n modalWidth: 300,\r\n },\r\n }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"PERSON_PLURAL\"\r\n rowActions={[\r\n {\r\n icon: \"globe\",\r\n label: \"User Organizations\",\r\n actionFn: async (data) => {\r\n setSelectedPerson(data);\r\n setOrganizationMemberWindowState(true);\r\n },\r\n },\r\n ]}\r\n girdIcon=\"users\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"PERSON_EDIT\",\r\n preActionValidation: (data) => {\r\n if (\r\n data.refSource != undefined &&\r\n data.refSource != null &&\r\n data.refSource != \"\"\r\n ) {\r\n toast.error(\r\n \"This Person Was synced from other system therefore you can't modify this record\"\r\n );\r\n return false;\r\n }\r\n return true;\r\n },\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"PERSON_DELETE\",\r\n preActionValidation: (data) => {\r\n if (\r\n data.refSource != undefined &&\r\n data.refSource != null &&\r\n data.refSource != \"\"\r\n ) {\r\n toast.error(\r\n \"This Person Was synced from other system therefore you can't modify this record\"\r\n );\r\n return false;\r\n }\r\n return true;\r\n },\r\n }}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default PersonGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions, useWindow } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport SystemApplicationModuleGrid from \"./SystemApplicationModuleGrid\";\r\nimport SystemApplicationAuthorityGrid from \"./SystemApplicationAuthorityGrid\";\r\nimport SystemApplicationRoleGrid from \"./SystemApplicationRoleGrid\";\r\nimport LookupGrid from \"../dev/LookupGrid\";\r\n\r\nconst SystemApplicationGrid: React.FC = () => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/systemapplication/all\",\r\n deleteById: \"api/v1/admin/systemapplication\",\r\n save: \"api/v1/admin/systemapplication\",\r\n findById: \"api/v1/admin/systemapplication\",\r\n setData: setData,\r\n });\r\n const {\r\n Window: ApplicationModulesWindow,\r\n setWindowState: setApplicationModulesWindowState,\r\n } = useWindow({\r\n windowTitle: \"System Application Modules\",\r\n windowIcon: \"layer-group\",\r\n });\r\n const {\r\n Window: ApplicationAuthoritiessWindow,\r\n setWindowState: setApplicationAuthoritiesWindowState,\r\n } = useWindow({\r\n windowTitle: \"System Application Authorities\",\r\n windowIcon: \"key\",\r\n });\r\n const {\r\n Window: ApplicationRolesWindow,\r\n setWindowState: setApplicationRolesWindowState,\r\n } = useWindow({\r\n windowTitle: \"System Application Roles\",\r\n windowIcon: \"tag\",\r\n });\r\n const {\r\n Window: ApplicationLookupsWindow,\r\n setWindowState: setApplicationLookupsWindowState,\r\n } = useWindow({\r\n windowTitle: \"System Application Lookups\",\r\n windowIcon: \"list-check\",\r\n });\r\n const [selectedRecord, setSelectedRecord] = useState<any>(null);\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_APPLICATION_CODE\",\r\n fieldName: \"applicationCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_APPLICATION_NAME\",\r\n fieldName: \"applicationName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_APPLICATION_DESCRIPTION\",\r\n fieldName: \"applicationDescription\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <ApplicationModulesWindow>\r\n <SystemApplicationModuleGrid selectedApplication={selectedRecord} />\r\n </ApplicationModulesWindow>\r\n <ApplicationAuthoritiessWindow>\r\n <SystemApplicationAuthorityGrid selectedApplication={selectedRecord} />\r\n </ApplicationAuthoritiessWindow>\r\n <ApplicationRolesWindow>\r\n <SystemApplicationRoleGrid selectedApplication={selectedRecord} />\r\n </ApplicationRolesWindow>\r\n <ApplicationLookupsWindow>\r\n <LookupGrid selectedApplication={selectedRecord} />\r\n </ApplicationLookupsWindow>\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n rowActions={[\r\n {\r\n icon: \"layer-group\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setApplicationModulesWindowState(true);\r\n },\r\n label: \"modules\",\r\n },\r\n {\r\n icon: \"key\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setApplicationAuthoritiesWindowState(true);\r\n },\r\n label: \"Authorities\",\r\n },\r\n {\r\n icon: \"tag\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setApplicationRolesWindowState(true);\r\n },\r\n label: \"Roles\",\r\n },\r\n {\r\n icon: \"list-check\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setApplicationLookupsWindowState(true);\r\n },\r\n label: \"Lookups\",\r\n },\r\n ]}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"SYSTEM_APPLICATION_PLURAL\"\r\n girdIcon=\"window-restore\"\r\n editAction={{ isEnabled: true, authority: \"SYSTEM_APPLICATION_EDIT\" }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"SYSTEM_APPLICATION_DELETE\",\r\n }}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default SystemApplicationGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport {useApiActions} from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst SystemApplicationRoleAuthorityGrid: React.FC = () => {\r\n\tconst { t } = useTranslation();\r\n\tconst [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n \tfindAll: \"api/v1/admin/systemapplicationroleauthority/all\",\r\n \tdeleteById: \"api/v1/admin/systemapplicationroleauthority\",\r\n \tsave: \"api/v1/admin/systemapplicationroleauthority\",\r\n\t\tfindById: \"api/v1/admin/systemapplicationroleauthority\",\r\n \tsetData: setData,\r\n \t});\r\n\t\r\n\tconst formElements: Array<FormElementProps> = [\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n \t\t\t\ttype: \"field\",\r\n \t\t\t\tmode: \"props\",\r\n \t\t\t\tprops: {\r\n \t\t\t\tfieldLabel: \"SYSTEM_APPLICATION_ROLE_AUTHORITY_IS_ACTIVE\",\r\n \t\t\t\tfieldName: \"isActive\",\r\n \t\t\t\trequired: false,\r\n \t\t\t\tfieldType: \"checkbox\",\r\n \t\t\t\t},\r\n \t\t\t},\r\n\t\t\t\t\t \t\t\t \t\t\t \t\t\t \t\t\t \t\t\t \t\t\t\t\t\t \t\t\t{\r\n \t\t\t\ttype: \"field\",\r\n \t\t\t\tmode: \"props\",\r\n \t\t\t\tprops: {\r\n \t\t\t\tfieldLabel: \"SYSTEM_APPLICATION_ROLE_AUTHORITY_SYSTEM_APPLICATION_AUTHORITY_ID\",\r\n \t\t\t\tfieldName: \"systemApplicationAuthorityId\",\r\n \t\t\t\trequired: true,\r\n \t\t\t\tfieldType: \"text\",\r\n \t\t\t\t},\r\n \t\t\t},\t\t\t\r\n\t\t\t\t\t \t\t\t\t\t\t \t\t\t{\r\n \t\t\t\ttype: \"field\",\r\n \t\t\t\tmode: \"props\",\r\n \t\t\t\tprops: {\r\n \t\t\t\tfieldLabel: \"SYSTEM_APPLICATION_ROLE_AUTHORITY_SYSTEM_APPLICATION_ROLE_ID\",\r\n \t\t\t\tfieldName: \"systemApplicationRoleId\",\r\n \t\t\t\trequired: true,\r\n \t\t\t\tfieldType: \"text\",\r\n \t\t\t\t},\r\n \t\t\t},\t\t\t\r\n\t\t\t\t\t \t\t\t \t\t\t \t\t\t \t\t];\r\n\r\n\treturn (\r\n \t<TemplateGrid\r\n \t\tapiActions={apiActions}\r\n \t\tdata={data}\r\n \t\tsetData={setData}\r\n \t\teditMode={{ editMode: \"row\"}}\r\n \t\tformElements={formElements}\r\n\t\t\tkeyColumnName={\"id\"}\r\n \t\tgridTitle=\"SYSTEM_APPLICATION_ROLE_AUTHORITY_PLURAL\"\r\n \t\tgirdIcon=\"table-cells\"\r\n \t\teditAction={{ isEnabled: true, authority: \"SYSTEM_APPLICATION_ROLE_AUTHORITY_EDIT\" }}\r\n \t\tdeleteAction={{ isEnabled: true, authority: \"SYSTEM_APPLICATION_ROLE_AUTHORITY_DELETE\" }}\r\n \t/>\r\n );\r\n};\r\n\r\nexport default SystemApplicationRoleAuthorityGrid;\r\n","import { SystemRoute } from \"../types\";\r\nimport BluePrintGrid from \"../../components/administration/dev/BluePrintGrid\";\r\nimport DataQueryGrid from \"../../components/administration/dev/DataQueryGrid\";\r\nimport DatasourceConnectionGrid from \"../../components/administration/dev/DatasourceConnectionGrid\";\r\nimport EntityParameterGrid from \"../../components/administration/dev/EntityParameterGrid\";\r\n\r\nimport LookupGrid from \"../../components/administration/dev/LookupGrid\";\r\n\r\nimport ReportGrid from \"../../components/administration/dev/ReportGrid\";\r\nimport MailTemplateGrid from \"../../components/administration/dev/MailTemplateGrid\";\r\nimport MailSenderConfigGrid from \"../../components/administration/dev/MailSenderConfigGrid\";\r\nimport WorkflowDocumentGrid from \"../../components/administration/dev/WorkflowDocumentGrid\";\r\nimport WidgetGrid from \"../../components/administration/dev/WidgetGrid\";\r\nimport DashboardGrid from \"../../components/administration/dev/DashboardGrid\";\r\nimport DashboardRouteView from \"../../components/templates/visuals/DashboardRouteView\";\r\nimport WorkflowDocumentMailLogGrid from \"../../components/administration/dev/WorkflowDocumentMailLogGrid\";\r\nimport MailNotificationQueueGrid from \"../../components/administration/dev/MailNotificationQueueGrid\";\r\n\r\nexport const devRoutes: Array<SystemRoute> = [\r\n {\r\n path: \"dev/blueprints\",\r\n component: BluePrintGrid,\r\n authority: \"BLUE_PRINT_VIEW\",\r\n },\r\n {\r\n path: \"dev/dataqueries\",\r\n component: DataQueryGrid,\r\n authority: \"DATA_QUERY_VIEW\",\r\n },\r\n {\r\n path: \"dev/datasourceconnections\",\r\n component: DatasourceConnectionGrid,\r\n authority: \"DATASOURCE_CONNECTION_VIEW\",\r\n },\r\n {\r\n path: \"dev/entityparameters\",\r\n component: EntityParameterGrid,\r\n authority: \"ENTITY_PARAMETER_VIEW\",\r\n },\r\n {\r\n path: \"dev/lookups\",\r\n component: LookupGrid,\r\n authority: \"LOOKUP_VIEW\",\r\n },\r\n {\r\n path: \"dev/reports\",\r\n component: ReportGrid,\r\n authority: \"REPORT_VIEW\",\r\n },\r\n {\r\n path: \"dev/mailtemplates\",\r\n component: MailTemplateGrid,\r\n authority: \"MAILTEMPLATE_VIEW\",\r\n },\r\n {\r\n path: \"dev/mailsender/config\",\r\n component: MailSenderConfigGrid,\r\n authority: \"MAILTEMPLATE_VIEW\",\r\n },\r\n {\r\n path: \"dev/workflowdocuments\",\r\n component: WorkflowDocumentGrid,\r\n authority: \"WORKFLOW_DOCUMENT_VIEW\",\r\n },\r\n {\r\n path: \"dev/widgets\",\r\n component: WidgetGrid,\r\n authority: \"WIDGET_VIEW\",\r\n },\r\n {\r\n path: \"dev/dashboards\",\r\n component: DashboardGrid,\r\n authority: \"DASHBOARD_VIEW\",\r\n },\r\n {\r\n path: \"dashboard/:dashboardCode\",\r\n component: DashboardRouteView,\r\n },\r\n {\r\n path: \"dev/workflowdocumentmaillogs\",\r\n component: WorkflowDocumentMailLogGrid,\r\n },\r\n {\r\n path: \"dev/mailnotificationqueues\",\r\n component: MailNotificationQueueGrid,\r\n },\r\n];\r\n\r\n// import { devRoutes } from \"./devRoutes\";\r\n// [...devRoutes]\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\nconst BluePrintGrid: React.FC = () => {\r\n const { t } = useTranslation();\r\n const SystemDataQueries = useSelector(\r\n (state: any) => state.commonStores.stores.SystemDataQueries.data\r\n );\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n commonStoreKey: \"SystemBluePrints\",\r\n deleteById: \"api/v1/dev/blueprint\",\r\n save: \"api/v1/dev/blueprint\",\r\n findById: \"api/v1/dev/blueprint\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_BLUE_PRINT_CODE\",\r\n fieldName: \"bluePrintCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_QUERY_ID\",\r\n fieldName: \"queryId\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: SystemDataQueries,\r\n optionDisplayField: \"queryName\",\r\n optionValueField: \"id\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\", reloadAfterSave: true }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"BLUE_PRINT_PLURAL\")}\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"BLUE_PRINT_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"BLUE_PRINT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default BluePrintGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions, useWindow } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useSelector } from \"react-redux\";\r\nimport DataQueryParametersForm from \"./DataQueryParametersForm\";\r\nimport DataQueryParameterGrid from \"./DataQueryParameterGrid\";\r\n\r\nconst DataQueryGrid: React.FC = () => {\r\n const [selectedRecord, setSelectedRecord] = useState<any>(null);\r\n const {\r\n Window: DataQueryParameterWindow,\r\n setWindowState: setDataQueryParameterWindow,\r\n } = useWindow({\r\n width: \"50%\",\r\n windowTitle: \"Data query parameters\",\r\n windowIcon: \"p\",\r\n });\r\n const SystemDataSources = useSelector(\r\n (state: any) => state.commonStores.stores.SystemDataSources.data\r\n );\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n commonStoreKey: \"SystemDataQueries\",\r\n deleteById: \"api/v1/dev/dataquery\",\r\n save: \"api/v1/dev/dataquery\",\r\n findById: \"api/v1/dev/dataquery\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_QUERY_NAME\",\r\n fieldName: \"queryName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_USE_SYS_CON\",\r\n fieldName: \"useSysCon\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n formProps: {\r\n onValueChangeCallBack(\r\n value,\r\n formManager,\r\n formActions,\r\n selectedRecord\r\n ) {\r\n if (value) {\r\n formActions.hideField(\"datasourceConId\");\r\n formManager.setValue(\"datasourceConId\", null);\r\n } else {\r\n formActions.showField(\"datasourceConId\");\r\n }\r\n },\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_DATASOURCE_CON_ID\",\r\n fieldName: \"datasourceConId\",\r\n required: false,\r\n options: SystemDataSources,\r\n optionDisplayField: \"connectionName\",\r\n optionValueField: \"id\",\r\n fieldType: \"combobox\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_QUERY_STR\",\r\n fieldName: \"queryStr\",\r\n formProps: { fieldHeight: 400 },\r\n gridProps: {\r\n hidden: true,\r\n },\r\n muiTextFieldProps: {\r\n multiline: true,\r\n rows: 4,\r\n },\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <DataQueryParameterWindow>\r\n <DataQueryParameterGrid selectedRecord={selectedRecord} />\r\n </DataQueryParameterWindow>\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n rowActions={[\r\n {\r\n label: \"Query Parameters\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setDataQueryParameterWindow(true);\r\n },\r\n icon: \"p\",\r\n },\r\n ]}\r\n data={data}\r\n setData={setData}\r\n editMode={{\r\n editMode: \"modal\",\r\n specs: {\r\n modalTitle: \"System Query\",\r\n modalWidth: 600,\r\n modalIcon: \"file-code\",\r\n },\r\n }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"DATA_QUERY_PLURAL\")}\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"DATA_QUERY_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"DATA_QUERY_DELETE\" }}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default DataQueryGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions, useAxios } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { toast } from \"react-toastify\";\r\n\r\nconst DatasourceConnectionGrid: React.FC = () => {\r\n const { handleGetRequest } = useAxios();\r\n const SystemDataSourceType = useSelector(\r\n (state: any) => state.commonStores.stores.SystemDataSourceType.data\r\n );\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n deleteById: \"api/v1/dev/datasourceconnection\",\r\n save: \"api/v1/dev/datasourceconnection\",\r\n findById: \"api/v1/dev/datasourceconnection\",\r\n setData: setData,\r\n commonStoreKey: \"SystemDataSources\",\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ID\",\r\n fieldName: \"id\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATASOURCE_CONNECTION_CONNECTION_NAME\",\r\n fieldName: \"connectionName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATASOURCE_CONNECTION_DATASOURCE_TYPE\",\r\n fieldName: \"datasourceType\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: SystemDataSourceType,\r\n optionValueField: \"value\",\r\n optionDisplayField: \"value\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATASOURCE_CONNECTION_DATASOURCE_URL\",\r\n fieldName: \"datasourceUrl\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATASOURCE_CONNECTION_DATASOURCE_USERNAME\",\r\n fieldName: \"datasourceUsername\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATASOURCE_CONNECTION_DATASOURCE_PASSWORD\",\r\n fieldName: \"datasourcePassword\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATASOURCE_CONNECTION_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{\r\n editMode: \"modal\",\r\n specs: {\r\n modalTitle: \"Datasource Connection\",\r\n modalIcon: \"plug\",\r\n modalWidth: 300,\r\n },\r\n }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"DATASOURCE_CONNECTION_PLURAL\")}\r\n girdIcon=\"plug\"\r\n rowActions={[\r\n {\r\n icon: \"plug\",\r\n label: \"test connection\",\r\n actionFn: async (data) => {\r\n await handleGetRequest({\r\n endPointURI: \"api/v1/dev/datasourceConnection/test\",\r\n showMask: true,\r\n parameters: {\r\n id: data.id,\r\n },\r\n // loadingMessage: \"checking datasource connectivity\",\r\n successCallBkFn: (response: any) => {\r\n toast.success(response.data);\r\n },\r\n });\r\n },\r\n },\r\n ]}\r\n editAction={{ isEnabled: true, authority: \"DATASOURCE_CONNECTION_EDIT\" }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"DATASOURCE_CONNECTION_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default DatasourceConnectionGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { DATE_FORMAT, DATE_TIME_FORMAT } from \"../../../util\";\r\n\r\nconst EntityParameterGrid: React.FC = () => {\r\n const { t } = useTranslation();\r\n const SystemParameterTypes = useSelector(\r\n (state: any) => state.commonStores.stores.SystemParameterTypes.data\r\n );\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n commonStoreKey: \"SystemEntityParameters\",\r\n deleteById: \"api/v1/dev/entityparameter\",\r\n save: \"api/v1/dev/entityparameter\",\r\n findById: \"api/v1/dev/entityparameter\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_CODE\",\r\n fieldName: \"parameterCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_LABEL\",\r\n fieldName: \"parameterLabel\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_TYPE\",\r\n fieldName: \"parameterType\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: SystemParameterTypes,\r\n optionDisplayField: \"value\",\r\n optionValueField: \"value\",\r\n formProps: {\r\n onValueChangeCallBack(\r\n value,\r\n formManager,\r\n formActions,\r\n selectedRecord\r\n ) {\r\n if (value === \"combobox\") {\r\n formManager.setValue(\"parameterValueFormat\", null);\r\n formActions.showField(\"parameterDataQueryId\");\r\n formActions.showField(\"parameterDataset\");\r\n formActions.showField(\"parameterDisplayField\");\r\n formActions.showField(\"parameterValueField\");\r\n formActions.hideField(\"parameterValueFormat\");\r\n } else if (value === \"date\" || value === \"datetime\") {\r\n if (value === \"date\") {\r\n formManager.setValue(\"parameterValueFormat\", DATE_FORMAT);\r\n } else if (value === \"datetime\") {\r\n formManager.setValue(\"parameterValueFormat\", DATE_TIME_FORMAT);\r\n }\r\n formActions.hideField(\"parameterDataQueryId\");\r\n formActions.hideField(\"parameterDataset\");\r\n formActions.hideField(\"parameterDisplayField\");\r\n formActions.hideField(\"parameterValueField\");\r\n formActions.showField(\"parameterValueFormat\");\r\n } else {\r\n formManager.setValue(\"parameterValueFormat\", null);\r\n formActions.hideField(\"parameterDataQueryId\");\r\n formActions.hideField(\"parameterDataset\");\r\n formActions.hideField(\"parameterDisplayField\");\r\n formActions.hideField(\"parameterValueField\");\r\n formActions.hideField(\"parameterValueFormat\");\r\n }\r\n },\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_DATA_QUERY_ID\",\r\n fieldName: \"parameterDataQueryId\",\r\n hidden: true,\r\n required: false,\r\n fieldType: \"text\",\r\n formProps: {\r\n onValueChangeCallBack(\r\n value,\r\n formManager,\r\n formActions,\r\n selectedRecord\r\n ) {\r\n if (value != null && value != \"\") {\r\n formManager.setValue(\"parameterDataset\", null);\r\n formActions.hideField(\"parameterDataset\");\r\n } else {\r\n formActions.showField(\"parameterDataset\");\r\n }\r\n },\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_DATASET\",\r\n fieldName: \"parameterDataset\",\r\n hidden: true,\r\n required: false,\r\n fieldType: \"text\",\r\n formProps: {\r\n onValueChangeCallBack(\r\n value,\r\n formManager,\r\n formActions,\r\n selectedRecord\r\n ) {\r\n if (value != null && value != \"\") {\r\n formManager.setValue(\"parameterDataQueryId\", null);\r\n formActions.hideField(\"parameterDataQueryId\");\r\n } else {\r\n formActions.showField(\"parameterDataQueryId\");\r\n }\r\n },\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_DISPLAY_FIELD\",\r\n fieldName: \"parameterDisplayField\",\r\n hidden: true,\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_VALUE_FIELD\",\r\n fieldName: \"parameterValueField\",\r\n hidden: true,\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_VALUE_FORMAT\",\r\n fieldName: \"parameterValueFormat\",\r\n required: false,\r\n hidden: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{\r\n editMode: \"modal\",\r\n specs: {\r\n modalTitle: \"Entity Parameter\",\r\n modalIcon: \"p\",\r\n modalWidth: 300,\r\n },\r\n }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"ENTITY_PARAMETER_PLURAL\")}\r\n girdIcon=\"p\"\r\n editAction={{ isEnabled: true, authority: \"ENTITY_PARAMETER_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"ENTITY_PARAMETER_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default EntityParameterGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\n\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions, useWindow } from \"../../../hooks\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { toast } from \"react-toastify\";\r\nimport MailRecipientGrid from \"./MailRecipientGrid\";\r\nimport MailBodyGrid from \"./MailBodyGrid\";\r\nimport MailAttachmentGrid from \"./MailAttachmentGrid\";\r\n\r\nconst MailTemplateGrid: React.FC = () => {\r\n const SystemDataQueries = useSelector(\r\n (state: any) => state.commonStores.stores.SystemDataQueries.data\r\n );\r\n const [selectedRecord, setSelectedRecord] = useState<any>(null);\r\n const {\r\n Window: MailRecipentsWindow,\r\n setWindowState: setMailRecipientsWindowState,\r\n } = useWindow({ windowTitle: \"Mail Receipents\", windowIcon: \"users\" });\r\n const { Window: MailBodiesWindow, setWindowState: setMailBodiesWindowState } =\r\n useWindow({\r\n windowTitle: \"Mail Bodies\",\r\n windowIcon: { prefix: \"fas\", iconName: \"envelope-open-text\" },\r\n });\r\n const {\r\n Window: MailAttachmentWindow,\r\n setWindowState: setMailAttachmentWindowState,\r\n } = useWindow({\r\n windowTitle: \"Mail Attachment\",\r\n windowIcon: \"paperclip\",\r\n width: 500,\r\n });\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n commonStoreKey: \"SystemMailTemplates\",\r\n deleteById: \"api/v1/dev/mailtemplate\",\r\n save: \"api/v1/dev/mailtemplate\",\r\n findById: \"api/v1/dev/mailtemplate\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_MAIL_TEMPLATE_CODE\",\r\n fieldName: \"mailTemplateCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_MAIL_TEMPLATE_NAME\",\r\n fieldName: \"mailTemplateName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"group\",\r\n props: {\r\n label: \"subject\",\r\n icon: \"users\",\r\n style: { padding: 1, border: \"0.5px dashed black\", margin: 1 },\r\n elements: [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_MAIL_SUBJECT\",\r\n fieldName: \"mailSubject\",\r\n required: true,\r\n fieldType: \"text\",\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_SUBJECT_DATA_QUERY_ID\",\r\n fieldName: \"subjectDataQueryId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemDataQueries,\r\n optionDisplayField: \"queryName\",\r\n optionValueField: \"id\",\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n\r\n {\r\n type: \"group\",\r\n props: {\r\n label: \"Recipients\",\r\n icon: \"users\",\r\n style: { padding: 1, border: \"0.5px dashed black\", margin: 1 },\r\n elements: [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel:\r\n \"To Recipient Query (must return list of objects with property email)\",\r\n fieldName: \"mailToDataQueryId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemDataQueries,\r\n optionDisplayField: \"queryName\",\r\n optionValueField: \"id\",\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel:\r\n \"CC Recipient Query (must return list of objects with property email)\",\r\n fieldName: \"mailCcDataQueryId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemDataQueries,\r\n optionDisplayField: \"queryName\",\r\n optionValueField: \"id\",\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n {\r\n type: \"group\",\r\n props: {\r\n label: \"Periodical Configuration\",\r\n icon: \"history\",\r\n style: { padding: 1, border: \"0.5px dashed black\", margin: 1 },\r\n elements: [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_PERIODICAL\",\r\n fieldName: \"periodical\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_PERIOD_TYPE\",\r\n fieldName: \"periodType\",\r\n options: [\r\n { value: \"Year\" },\r\n { value: \"Month\" },\r\n { value: \"Day\" },\r\n { value: \"Hour\" },\r\n { value: \"Minute\" },\r\n { value: \"Second\" },\r\n ],\r\n optionDisplayField: \"value\",\r\n optionValueField: \"value\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_PERIOD_VALUE\",\r\n fieldName: \"periodValue\",\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_START_SENDING_AT\",\r\n fieldName: \"startSendingAt\",\r\n required: false,\r\n fieldType: \"datetime\",\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <MailRecipentsWindow>\r\n <MailRecipientGrid\r\n selectedRecord={selectedRecord}\r\n callBkFn={() => {\r\n setMailRecipientsWindowState(false);\r\n }}\r\n />\r\n </MailRecipentsWindow>\r\n <MailBodiesWindow>\r\n <MailBodyGrid\r\n selectedRecord={selectedRecord}\r\n callBkFn={() => {\r\n setMailRecipientsWindowState(false);\r\n }}\r\n />\r\n </MailBodiesWindow>\r\n <MailAttachmentWindow>\r\n <MailAttachmentGrid\r\n selectedRecord={selectedRecord}\r\n callBkFn={() => {\r\n setMailAttachmentWindowState(false);\r\n }}\r\n />\r\n </MailAttachmentWindow>\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{\r\n editMode: \"modal\",\r\n specs: {\r\n modalWidth: 300,\r\n modalTitle: \"Mail Template\",\r\n modalIcon: \"envelope\",\r\n },\r\n }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"MAIL_TEMPLATE_PLURAL\")}\r\n girdIcon=\"envelope\"\r\n rowActions={[\r\n {\r\n icon: \"users\",\r\n label: \"Recipients\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setMailRecipientsWindowState(true);\r\n },\r\n },\r\n {\r\n icon: { prefix: \"fas\", iconName: \"envelope-open-text\" },\r\n label: \"Mail Body\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setMailBodiesWindowState(true);\r\n },\r\n },\r\n {\r\n icon: \"paperclip\",\r\n label: \"Mail Attachments\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setMailAttachmentWindowState(true);\r\n },\r\n },\r\n ]}\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"MAIL_TEMPLATE_EDIT\",\r\n preActionValidation: (record) => {\r\n if (record?.periodical === true && !record?.periodType) {\r\n toast.error(\r\n \"You must specifiy the period type since this email is periodical\"\r\n );\r\n return false;\r\n }\r\n if (record?.periodical === true && !record?.periodValue) {\r\n toast.error(\r\n \"You must specifiy the period value since this email is periodical\"\r\n );\r\n return false;\r\n }\r\n if (record?.periodical === true && !record?.startSendingAt) {\r\n toast.error(\r\n \"You must specifiy the start sending time since this email is periodical\"\r\n );\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n }}\r\n deleteAction={{ isEnabled: true, authority: \"MAIL_TEMPLATE_DELETE\" }}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default MailTemplateGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions, useWindow } from \"../../../hooks\";\r\nimport { useSelector } from \"react-redux\";\r\nimport WorkflowDocumentStatusGrid from \"./WorkflowDocumentStatusGrid\";\r\nimport WorkflowDocumentActionGrid from \"./WorkflowDocumentActionGrid\";\r\n\r\nconst WorkflowDocumentGrid: React.FC = () => {\r\n const [selectedRecord, setSelectedRecord] = useState<any>(null);\r\n const {\r\n Window: WorkflowStatusWindow,\r\n setWindowState: setWorkflowStatusWindowState,\r\n } = useWindow({\r\n windowTitle: \"Document Status\",\r\n windowIcon: \"tag\",\r\n });\r\n const {\r\n Window: WorkflowActionWindow,\r\n setWindowState: setWorkflowActionWindowState,\r\n } = useWindow({\r\n windowTitle: \"Document Action\",\r\n windowIcon: \"stamp\",\r\n });\r\n const SystemOrganizations = useSelector(\r\n (state: any) => state.commonStores.stores.SystemOrganizations.data\r\n );\r\n const SystemReports = useSelector(\r\n (state: any) => state.commonStores.stores.SystemReports.data\r\n );\r\n const SystemDataSources = useSelector(\r\n (state: any) => state.commonStores.stores.SystemDataSources.data\r\n );\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/workflowdocument/all\",\r\n deleteById: \"api/v1/dev/workflowdocument\",\r\n save: \"api/v1/dev/workflowdocument\",\r\n findById: \"api/v1/dev/workflowdocument\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ORG_CODE\",\r\n fieldName: \"orgCode\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemOrganizations,\r\n optionDisplayField: \"organizationCode\",\r\n optionValueField: \"id\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_CODE\",\r\n fieldName: \"documentCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Workflow Document En Display Name\",\r\n fieldName: \"documentEnName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Workflow Document Ar Display Name\",\r\n fieldName: \"documentArName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Report To be Attached For The Document ( will be passed a parameter called doc_id)\",\r\n fieldName: \"documentReportId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemReports,\r\n optionDisplayField: \"reportName\",\r\n optionValueField: \"id\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_APPROVAL_ALLOWED\",\r\n fieldName: \"mailApprovalAllowed\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"group\",\r\n props: {\r\n icon: \"bell\",\r\n style: { border: \"1px dashed black\", padding: 1, marginBottom: 1 },\r\n label: \"App Visual Notifications\",\r\n elements: [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_APP_NOTIFICATION_ICON\",\r\n fieldName: \"appNotificationIcon\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_APP_NOTIFICATION_STYLE\",\r\n fieldName: \"appNotificationStyle\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_APP_VIEW_ROUTE\",\r\n fieldName: \"appViewRoute\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n\r\n {\r\n type: \"group\",\r\n props: {\r\n icon: \"database\",\r\n style: { border: \"1px dashed black\", padding: 1, marginBottom: 1 },\r\n label: \"Related Document Database\",\r\n elements: [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_USE_SYSTEM_CON\",\r\n fieldName: \"useSystemCon\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n formProps: {\r\n onValueChangeCallBack(\r\n value,\r\n formManager,\r\n formActions,\r\n selectedRecord\r\n ) {\r\n if (value) {\r\n formActions.hideField(\"documentConId\");\r\n formManager.setValue(\"documentConId\", null);\r\n } else {\r\n formActions.showField(\"documentConId\");\r\n }\r\n },\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_CON_ID\",\r\n fieldName: \"documentConId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemDataSources,\r\n optionDisplayField: \"connectionName\",\r\n optionValueField: \"id\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_DATABASE_NAME\",\r\n fieldName: \"documentDatabaseName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_DATABASE_TABLE\",\r\n fieldName: \"documentDatabaseTable\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_ID_FIELD\",\r\n fieldName: \"documentIdField\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_STATUS_FIELD\",\r\n fieldName: \"documentStatusField\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_NUMBER_FIELD\",\r\n fieldName: \"documentNumberField\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <WorkflowStatusWindow>\r\n <WorkflowDocumentStatusGrid selectedRecord={selectedRecord} />\r\n </WorkflowStatusWindow>\r\n <WorkflowActionWindow>\r\n <WorkflowDocumentActionGrid selectedRecord={selectedRecord} />\r\n </WorkflowActionWindow>\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n formLoadCallBk={(formActions, formManager, record) => {\r\n if (record.useSystemCon === true) {\r\n formActions.hideField(\"documentConId\");\r\n } else {\r\n formActions.showField(\"documentConId\");\r\n }\r\n }}\r\n data={data}\r\n setData={setData}\r\n rowActions={[\r\n {\r\n icon: \"tag\",\r\n label: \"Document States\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setWorkflowStatusWindowState(true);\r\n },\r\n },\r\n {\r\n icon: \"stamp\",\r\n label: \"Document Actions\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setWorkflowActionWindowState(true);\r\n },\r\n },\r\n ]}\r\n editMode={{\r\n editMode: \"modal\",\r\n specs: {\r\n modalIcon: \"chart-diagram\",\r\n modalTitle: t(\"WORKFLOW_DOCUMENT_SINGULAR\"),\r\n },\r\n }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"WORKFLOW_DOCUMENT_PLURAL\")}\r\n girdIcon=\"chart-diagram\"\r\n editAction={{ isEnabled: true, authority: \"WORKFLOW_DOCUMENT_EDIT\" }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_DELETE\",\r\n }}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default WorkflowDocumentGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions, useWindow } from \"../../../hooks\";\r\nimport DashboardWidgetGrid from \"./DashboardWidgetGrid\";\r\nimport { useNavigate } from \"react-router-dom\";\r\n\r\nconst DashboardGrid: React.FC = () => {\r\n const { t } = useTranslation();\r\n const [selectedRecord, setSelectedRecord] = useState<any>(null);\r\n const { Window: WidgetsWindows, setWindowState: setWidgetsWindowState } =\r\n useWindow({\r\n windowTitle: \"Dashboard Widgets\",\r\n windowIcon: \"chart-pie\",\r\n });\r\n const [data, setData] = useState([]);\r\n const navigate = useNavigate();\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/dashboard/all\",\r\n deleteById: \"api/v1/dev/dashboard\",\r\n save: \"api/v1/dev/dashboard\",\r\n findById: \"api/v1/dev/dashboard\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_DASHBOARD_CODE\",\r\n fieldName: \"dashboardCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_DASHBOARD_NAME\",\r\n fieldName: \"dashboardName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_DASHBOARD_TITLE\",\r\n fieldName: \"dashboardTitle\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <WidgetsWindows>\r\n <DashboardWidgetGrid selectedRecord={selectedRecord} />\r\n </WidgetsWindows>\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n rowActions={[\r\n {\r\n label: \"Widgets\",\r\n icon: \"chart-pie\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setWidgetsWindowState(true);\r\n },\r\n },\r\n {\r\n label: \"View\",\r\n icon: \"eye\",\r\n actionFn: async (data) => {\r\n navigate(\"/dashboard/\" + data.dashboardCode);\r\n },\r\n },\r\n ]}\r\n gridTitle={t(\"DASHBOARD_PLURAL\")}\r\n girdIcon=\"square-poll-vertical\"\r\n editAction={{ isEnabled: true, authority: \"DASHBOARD_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"DASHBOARD_DELETE\" }}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default DashboardGrid;\r\n","import { useParams } from \"react-router-dom\";\r\nimport DashboardViewer from \"./DashboardViewer\";\r\n\r\nconst DashboardRouteView: React.FC = () => {\r\n const { dashboardCode } = useParams();\r\n return <DashboardViewer dashboardCode={dashboardCode} />;\r\n};\r\n\r\nexport default DashboardRouteView;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\n\r\nconst WorkflowDocumentMailLogGrid: React.FC = () => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/workflowdocumentmaillog/all\",\r\n deleteById: \"api/v1/dev/workflowdocumentmaillog\",\r\n save: \"api/v1/dev/workflowdocumentmaillog\",\r\n findById: \"api/v1/dev/workflowdocumentmaillog\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_GRAPH_API_MSG_ID\",\r\n fieldName: \"graphApiMsgId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_IS_PROCESSED\",\r\n fieldName: \"isProcessed\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_MAIL_ACTION_CODE\",\r\n fieldName: \"mailActionCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_MAIL_BODY_CONTENT\",\r\n fieldName: \"mailBodyContent\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_MAIL_FROM\",\r\n fieldName: \"mailFrom\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_MAIL_SUBJECT\",\r\n fieldName: \"mailSubject\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_PROCESS_MESSAGE\",\r\n fieldName: \"processMessage\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_PROCESS_TIME\",\r\n fieldName: \"processTime\",\r\n required: false,\r\n fieldType: \"datetime\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_REF_DOC_ID\",\r\n fieldName: \"refDocId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_WORKFLOW_DOCUMENT_ID\",\r\n fieldName: \"workflowDocumentId\",\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_MAIL_RECEIVE_TIME\",\r\n fieldName: \"mailReceiveTime\",\r\n required: false,\r\n fieldType: \"datetime\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"WORKFLOW_DOCUMENT_MAIL_LOG_PLURAL\")}\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_MAIL_LOG_EDIT\",\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_MAIL_LOG_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default WorkflowDocumentMailLogGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\nconst MailNotificationQueueGrid: React.FC = () => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/mailnotificationqueue/all\",\r\n deleteById: \"api/v1/dev/mailnotificationqueue\",\r\n save: \"api/v1/dev/mailnotificationqueue\",\r\n findById: \"api/v1/dev/mailnotificationqueue\",\r\n setData: setData,\r\n });\r\n const SystemMailTemplates = useSelector(\r\n (state: any) => state.commonStores.stores.SystemMailTemplates.data\r\n );\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_MAIL_TEMPLATE_ID\",\r\n fieldName: \"mailTemplateId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemMailTemplates,\r\n optionDisplayField: \"mailTemplateName\",\r\n optionValueField: \"id\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_CUSTOM_MAIL_ATTACHED_REPORT_ID\",\r\n fieldName: \"customMailAttachedReportId\",\r\n required: false,\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_CUSTOM_MAIL_BODY\",\r\n fieldName: \"customMailBody\",\r\n required: false,\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_CUSTOM_MAIL_SUBJECT\",\r\n fieldName: \"customMailSubject\",\r\n required: false,\r\n hidden: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_CUSTOM_RECIPIENTS\",\r\n fieldName: \"customRecipients\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_IS_NOTIFIED\",\r\n fieldName: \"isNotified\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_NOTIFICATION_TIME\",\r\n fieldName: \"notificationTime\",\r\n required: false,\r\n fieldType: \"datetime\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_NOTIFICATION_MESSAGE\",\r\n fieldName: \"notificationMessage\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_MAIL_PARAMETERS\",\r\n fieldName: \"mailParameters\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n disableDefaultAction={true}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"none\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"MAIL_NOTIFICATION_QUEUE_PLURAL\")}\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"MAIL_NOTIFICATION_QUEUE_EDIT\",\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"MAIL_NOTIFICATION_QUEUE_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default MailNotificationQueueGrid;\r\n","import { Box } from \"@mui/material\";\r\nimport { useSession } from \"../hooks\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n\r\ntype RouteWrapperProps = {\r\n authority?: string;\r\n children?: React.ReactNode;\r\n};\r\nconst RouteWrapper: React.FC<RouteWrapperProps> = (props) => {\r\n const { isUserAuthorized } = useSession();\r\n if (props?.authority && !isUserAuthorized(props.authority)) {\r\n return (\r\n <Box\r\n sx={{\r\n flex: 1,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n color: \"red\",\r\n }}\r\n >\r\n <h2>\r\n <FontAwesomeIcon\r\n style={{ marginRight: 10, marginLeft: 10 }}\r\n icon=\"cancel\"\r\n />\r\n You aren't authorized to access this page\r\n </h2>\r\n </Box>\r\n );\r\n }\r\n return <>{props.children}</>;\r\n};\r\n\r\nexport default RouteWrapper;\r\n","import { Box } from \"@mui/material\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { CacheProvider } from \"@emotion/react\";\r\nimport { Route, Routes } from \"react-router-dom\";\r\nimport { cacheLtr, cacheRtl } from \"../components/common/LayoutHandlers\";\r\nimport { SYSTEM_ROUTES } from \"../routes\";\r\nimport { SystemRoute } from \"../routes/types\";\r\nimport RouteWrapper from \"./RouteWrapper\";\r\nimport { useAxios, useLoadingMask, useSession } from \"../hooks\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { setStoreData } from \"../redux/features/common/CommonStoreSlice\";\r\n\r\nconst MainContent: React.FC = () => {\r\n const AppLayoutState = useSelector((state: any) => state.AppLayout);\r\n const AppInfo = useSelector((state: any) => state.AppInfo.value);\r\n const businessRoutes = useSelector(\r\n (state: any) => state.AppInfo.value.businessRoutes\r\n );\r\n const dispatch = useDispatch();\r\n const { show, hide } = useLoadingMask();\r\n const commonStores = useSelector((state: any) => state.commonStores);\r\n const [isAutoLoadLoaded, setAutoLoadLoaded] = useState<boolean>(false);\r\n const { isUserAuthorized } = useSession();\r\n const { handleGetRequest } = useAxios();\r\n const loadCommonStores = async () => {\r\n show(\"Loading ... please wait\");\r\n const stores = commonStores.stores;\r\n const storeKeys = commonStores.storeKeys;\r\n for (let storeKey of storeKeys) {\r\n if (\r\n (stores[storeKey]?.authority === undefined ||\r\n stores[storeKey]?.authority === null ||\r\n isUserAuthorized(stores[storeKey]?.authority)) &&\r\n stores[storeKey]?.url != \"\" &&\r\n stores[storeKey].autoLoad === true\r\n ) {\r\n await handleGetRequest({\r\n endPointURI: stores[storeKey].url,\r\n showMask: false,\r\n successCallBkFn: (response) => {\r\n dispatch(setStoreData({ storeKey, data: response.data }));\r\n },\r\n failureCallBkFn: () => {\r\n dispatch(setStoreData({ storeKey, data: [] }));\r\n },\r\n });\r\n }\r\n }\r\n hide();\r\n };\r\n\r\n useEffect(() => {\r\n if (commonStores?.storeKeys) {\r\n loadCommonStores();\r\n }\r\n }, [commonStores.storeKeys]);\r\n return (\r\n <CacheProvider\r\n value={AppLayoutState.appDirection === \"ltr\" ? cacheLtr : cacheRtl}\r\n >\r\n {/* {isAutoLoadLoaded ? ( */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n // alignItems: \"center\",\r\n justifyContent: \"flex-start\",\r\n flex: 1,\r\n overflow: \"hidden\",\r\n padding: 3,\r\n }}\r\n >\r\n <Routes>\r\n {AppInfo.enableAdministrationModule\r\n ? SYSTEM_ROUTES.map((route: SystemRoute, index) => {\r\n return (\r\n <Route\r\n key={\"adm\" + index}\r\n path={route.path}\r\n element={\r\n <RouteWrapper authority={route.authority}>\r\n <route.component />\r\n </RouteWrapper>\r\n }\r\n />\r\n );\r\n })\r\n : null}\r\n {businessRoutes.map((route: SystemRoute, index) => {\r\n return (\r\n <Route\r\n key={\"bs\" + index}\r\n path={route.path}\r\n element={\r\n <RouteWrapper authority={route.authority}>\r\n <route.component />\r\n </RouteWrapper>\r\n }\r\n />\r\n );\r\n })}\r\n </Routes>\r\n </Box>\r\n {/* ) : (\r\n <></>\r\n )} */}\r\n </CacheProvider>\r\n );\r\n};\r\n\r\nexport default MainContent;\r\n","import { styled } from \"@mui/material/styles\";\r\nimport { grey } from \"@mui/material/colors\";\r\nimport SwipeableDrawer from \"@mui/material/SwipeableDrawer\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Box, Typography } from \"@mui/material\";\r\nimport { AppLayoutActions } from \"../redux/features/common/AppLayoutSlice\";\r\nimport NavigationTree from \"./NavigationTree\";\r\nimport { setSideBarState } from \"../redux/features/common/SideBarSlice\";\r\n\r\nconst drawerBleeding = 56;\r\n\r\ninterface Props {\r\n /**\r\n * Injected by the documentation to work in an iframe.\r\n * You won't need it on your project.\r\n */\r\n window?: () => Window;\r\n}\r\n\r\nconst Puller = styled(\"div\")(({ theme }) => ({\r\n width: 30,\r\n height: 6,\r\n margin: 10,\r\n backgroundColor: grey[300],\r\n borderRadius: 3,\r\n // position: \"absolute\",\r\n top: 8,\r\n // left: \"calc(50% - 15px)\",\r\n ...theme.applyStyles(\"dark\", {\r\n backgroundColor: grey[900],\r\n }),\r\n}));\r\n\r\nexport default function MobileDrawer(props: Props) {\r\n const { window } = props;\r\n const SideBarState = useSelector((state: any) => state.SideBar);\r\n const AppInfo = useSelector((state: any) => state.AppInfo.value);\r\n const dispatch = useDispatch();\r\n const toggleDrawer = (newState: boolean) => {\r\n dispatch(setSideBarState(newState));\r\n };\r\n // This is used only for the example\r\n const container =\r\n window !== undefined ? () => window().document.body : undefined;\r\n\r\n return (\r\n <SwipeableDrawer\r\n container={container}\r\n anchor=\"bottom\"\r\n open={SideBarState.isOpened}\r\n onClose={() => {\r\n toggleDrawer(false);\r\n }}\r\n onOpen={() => {\r\n toggleDrawer(true);\r\n }}\r\n swipeAreaWidth={drawerBleeding}\r\n disableSwipeToOpen={false}\r\n ModalProps={{\r\n keepMounted: true,\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n height: \"100%\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n <Puller />\r\n <Box\r\n sx={{\r\n flexGrow: 1,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n width: \"99%\",\r\n overflowY: \"auto\",\r\n }}\r\n >\r\n <NavigationTree />\r\n </Box>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-around\",\r\n marginTop: 1,\r\n width: \"100%\",\r\n }}\r\n >\r\n <Typography sx={{ fontSize: 12 }} color=\"textDisabled\">\r\n {AppInfo.appName}\r\n </Typography>\r\n <Typography sx={{ fontSize: 12 }} color=\"textDisabled\">\r\n V.{AppInfo.appVersion}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n </SwipeableDrawer>\r\n );\r\n}\r\n","import { useSelector } from \"react-redux\";\r\nimport { Backdrop, CircularProgress } from \"@mui/material\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst LoadingMask: React.FC = () => {\r\n const { t } = useTranslation();\r\n const loadingMask = useSelector((state: any) => state.loadingMask.value);\r\n const AppLayoutState = useSelector((state: any) => state.AppLayout);\r\n\r\n return (\r\n <Backdrop\r\n dir={AppLayoutState.appDirection}\r\n sx={{ color: \"#fff\", zIndex: (theme) => theme.zIndex.drawer + 1 }}\r\n open={loadingMask.isOpened}\r\n >\r\n <CircularProgress color=\"inherit\" />\r\n <div style={{ marginRight: 10, marginLeft: 10 }}>\r\n {loadingMask?.message || t(\"DEFAULT_LOADING_MESSAGE\")}\r\n </div>\r\n </Backdrop>\r\n );\r\n};\r\n\r\nexport default LoadingMask;\r\n","import {\r\n Box,\r\n Button,\r\n CircularProgress,\r\n createTheme,\r\n Paper,\r\n TextField,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { ThemeProvider } from \"@emotion/react\";\r\nimport { useEffect, useState } from \"react\";\r\nimport axios from \"axios\";\r\nimport { toast } from \"react-toastify\";\r\nimport { UserSessionActions } from \"../../redux/features/common/UserSessionSlice\";\r\nimport {\r\n DARK_THEME_INITIAL_MAIN_COLOR,\r\n DARK_THEME_INITIAL_SECANDARY_COLOR,\r\n} from \"../../util\";\r\n\r\nconst Login: React.FC = () => {\r\n const appInfo = useSelector((state: any) => state.AppInfo.value);\r\n const [username, setUsername] = useState(\"\");\r\n const [password, setPassword] = useState(\"\");\r\n const [isLoginInProcess, setIsLoginInProcess] = useState(false);\r\n const UserSessionState = useSelector((state: any) => state.UserSession.value);\r\n const dispatch = useDispatch();\r\n const handleLogin = async () => {\r\n if (username == null || username == \"\") {\r\n toast.error(\"username is required to proceed\");\r\n return;\r\n }\r\n if (password == null || password == \"\") {\r\n toast.error(\"password is required to proceed\");\r\n return;\r\n }\r\n setIsLoginInProcess(true);\r\n let response: any = null;\r\n try {\r\n response = await axios.post(\r\n `${appInfo.apiBaseUrl}/api/auth/login`,\r\n {\r\n username,\r\n password,\r\n },\r\n {\r\n withCredentials: true,\r\n }\r\n );\r\n if (response.data != null && response.data !== \"\") {\r\n setIsLoginInProcess(false);\r\n const UserSession = {\r\n ...response.data,\r\n isAuthenticated: true,\r\n };\r\n dispatch(UserSessionActions.setAuthenticated(UserSession));\r\n }\r\n } catch (e: any) {\r\n setIsLoginInProcess(false);\r\n toast.error(\r\n e?.response?.data ||\r\n \"failed to authenticate, contact your administrator\"\r\n );\r\n }\r\n };\r\n const userSession = useSelector((state: any) => state.UserSession.value);\r\n const loginTheme = createTheme({\r\n components: {\r\n MuiCssBaseline: {\r\n styleOverrides: `\r\n /* Custom Scrollbar */\r\n * {\r\n scrollbar-width: thin;\r\n scrollbar-color: ${\r\n appInfo.appTheme?.dark?.primaryColor ||\r\n DARK_THEME_INITIAL_MAIN_COLOR\r\n } #121212;\r\n }\r\n \r\n /* Webkit Browsers */\r\n *::-webkit-scrollbar {\r\n width: 12px;\r\n height: 10px;\r\n } \r\n `,\r\n },\r\n },\r\n palette: {\r\n mode: \"dark\",\r\n primary: {\r\n main:\r\n appInfo.appTheme?.dark?.primaryColor || DARK_THEME_INITIAL_MAIN_COLOR,\r\n },\r\n secondary: {\r\n main:\r\n appInfo.appTheme?.dark?.secondaryColor ||\r\n DARK_THEME_INITIAL_SECANDARY_COLOR,\r\n },\r\n },\r\n });\r\n const checkUserSession = async () => {\r\n if (appInfo?.apiBaseUrl) {\r\n if (userSession.isAuthenticated == null) {\r\n try {\r\n let response = await axios.get(\r\n `${appInfo.apiBaseUrl}/api/auth/userInfo`,\r\n {\r\n withCredentials: true,\r\n }\r\n );\r\n if (response != null && response.data != null) {\r\n const UserSession = {\r\n ...response.data,\r\n isAuthenticated: true,\r\n };\r\n dispatch(UserSessionActions.setAuthenticated(UserSession));\r\n } else {\r\n dispatch(UserSessionActions.setUnAuthenticated());\r\n }\r\n } catch (error) {\r\n dispatch(UserSessionActions.setUnAuthenticated());\r\n }\r\n }\r\n }\r\n };\r\n useEffect(() => {\r\n checkUserSession();\r\n }, [appInfo]);\r\n return (\r\n <ThemeProvider theme={loginTheme}>\r\n <Paper\r\n sx={{\r\n display: \"flex\",\r\n height: \"100vh\",\r\n width: \"100%\",\r\n borderRadius: 0,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n {UserSessionState.isAuthenticated == false ? (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <img src={appInfo?.appLogo} width={150} height={150} />\r\n <Typography sx={{ m: 1 }} variant=\"h4\" color=\"textSecondary\">\r\n {appInfo?.appName}\r\n </Typography>\r\n <Typography\r\n sx={{\r\n paddingRight: 1,\r\n width: \"100%\",\r\n textAlign: \"right\",\r\n fontSize: 10,\r\n }}\r\n variant=\"caption\"\r\n color=\"textSecondary\"\r\n >\r\n V.{appInfo.appVersion}\r\n </Typography>\r\n <TextField\r\n label=\"username\"\r\n sx={{ width: 300, m: 1 }}\r\n value={username}\r\n onChange={(event) => {\r\n setUsername(event.target.value);\r\n }}\r\n onKeyDown={(event) => {\r\n if (event.key === \"Enter\") {\r\n handleLogin();\r\n }\r\n }}\r\n />\r\n <TextField\r\n label=\"password\"\r\n sx={{ width: 300, m: 1 }}\r\n value={password}\r\n type=\"password\"\r\n onChange={(event) => {\r\n setPassword(event.target.value);\r\n }}\r\n onKeyDown={(event) => {\r\n if (event.key === \"Enter\") {\r\n handleLogin();\r\n }\r\n }}\r\n />\r\n <Button\r\n loading={isLoginInProcess}\r\n onClick={handleLogin}\r\n variant=\"contained\"\r\n color=\"primary\"\r\n sx={{ m: 1 }}\r\n >\r\n login\r\n </Button>\r\n </Box>\r\n ) : (\r\n <>\r\n <CircularProgress sx={{ marginRight: 1 }} />\r\n <div>You will be redirected shortly ... please wait</div>\r\n </>\r\n )}\r\n </Paper>\r\n </ThemeProvider>\r\n );\r\n};\r\n\r\nexport default Login;\r\n","import { styled, useTheme } from \"@mui/material/styles\";\r\nimport CssBaseline from \"@mui/material/CssBaseline\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport TopBar from \"./TopBar\";\r\nimport { DrawerHeader } from \"./DrawerHeader\";\r\nimport SideBar from \"./SideBar\";\r\nimport MainContent from \"./MainContent\";\r\nimport { BrowserRouter } from \"react-router-dom\";\r\nimport MobileDrawer from \"./MobileDrawer\";\r\nimport { ToastContainer } from \"react-toastify\";\r\nimport { useEffect, useState } from \"react\";\r\nimport useLoadingMask from \"../hooks/useLoadingMask\";\r\nimport { useIsMobile } from \"../hooks/UseMobile\";\r\nimport useSession from \"../hooks/UseSession\";\r\nimport useAxios from \"../hooks/useAxios\";\r\nimport { DRAWER_WIDTH } from \"../redux/features/common/AppLayoutSlice\";\r\nimport { UserSessionProps } from \"../redux/features/common/UserSessionSlice\";\r\nimport LoadingMask from \"../components/common/LoadingMask\";\r\nimport Login from \"../components/common/Login\";\r\nimport { setStoreData } from \"../redux/features/common/CommonStoreSlice\";\r\n\r\nconst Main = styled(\"main\", {\r\n shouldForwardProp: (prop) => prop !== \"open\",\r\n})<{\r\n open?: boolean;\r\n}>(({ theme: any, open }) => {\r\n const AppLayout = useSelector((state: any) => state.AppLayout);\r\n const theme = useTheme();\r\n const isMobile = useIsMobile();\r\n\r\n return {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n overflow: \"hidden\",\r\n flexGrow: 1,\r\n width: !isMobile && open ? `calc(100% - ${DRAWER_WIDTH}px)` : \"100%\",\r\n direction: AppLayout.appDirection,\r\n justifyContent: \"flex-start\",\r\n transition:\r\n open === true\r\n ? theme.transitions.create([\"margin\", \"width\"], {\r\n easing: theme.transitions.easing.easeOut,\r\n duration: theme.transitions.duration.enteringScreen,\r\n })\r\n : theme.transitions.create([\"margin\", \"width\"], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n marginLeft:\r\n !isMobile && AppLayout.appDirection === \"ltr\" && open === true\r\n ? DRAWER_WIDTH + \"px\"\r\n : 0,\r\n marginRight:\r\n !isMobile && AppLayout.appDirection === \"rtl\" && open === true\r\n ? DRAWER_WIDTH + \"px\"\r\n : 0,\r\n };\r\n});\r\n\r\nexport default function Layout() {\r\n const SideBarState = useSelector((state: any) => state.SideBar);\r\n const isMobile = useIsMobile();\r\n const UserSession: UserSessionProps = useSelector(\r\n (state: any) => state.UserSession\r\n );\r\n return (\r\n <BrowserRouter>\r\n <ToastContainer draggable={true} position=\"bottom-center\" />\r\n <LoadingMask />\r\n {UserSession.value.isAuthenticated === true ? (\r\n <Main open={SideBarState.isOpened}>\r\n <CssBaseline />\r\n <TopBar />\r\n {!isMobile ? <SideBar /> : null}\r\n {isMobile ? <MobileDrawer /> : null}\r\n <DrawerHeader />\r\n <MainContent />\r\n </Main>\r\n ) : (\r\n <Login />\r\n )}\r\n </BrowserRouter>\r\n );\r\n}\r\n","import { createSlice, Reducer } from \"@reduxjs/toolkit\";\r\nimport { SystemRoute } from \"../../../routes/types\";\r\nimport { ExtendedTreeItemProps } from \"../../../navigationItems\";\r\nimport { StoreMetaData } from \"./CommonStoreSlice\";\r\n\r\nexport type AppInfo = {\r\n documentTitle: string | null;\r\n apiBaseUrl: string | null;\r\n appName: string | null;\r\n appVersion: string | null;\r\n appLogo: any | null;\r\n businessRoutes: Array<SystemRoute>;\r\n businessNavigationItems: Array<ExtendedTreeItemProps>;\r\n businessReduxReducers: { [key: string]: Reducer<any> };\r\n businessCommonStoresMetaData: { [key: string]: StoreMetaData };\r\n muiPremiumKey: string;\r\n enableAdministrationModule: boolean;\r\n appTheme?: {\r\n light: { primaryColor: string; secondaryColor: string };\r\n dark: { primaryColor: string; secondaryColor: string };\r\n };\r\n};\r\n\r\nexport type AppInfoProp = {\r\n value: AppInfo;\r\n};\r\n\r\nconst initialState: AppInfoProp = {\r\n value: {\r\n documentTitle: null,\r\n apiBaseUrl: null,\r\n appName: null,\r\n appVersion: null,\r\n appLogo: null,\r\n muiPremiumKey: null,\r\n enableAdministrationModule: false,\r\n businessRoutes: [],\r\n businessNavigationItems: [],\r\n businessReduxReducers: {},\r\n businessCommonStoresMetaData: {},\r\n appTheme: {\r\n light: { primaryColor: \"#37505C\", secondaryColor: \"#ff6d00\" },\r\n dark: { primaryColor: \"#ea690e\", secondaryColor: \"#74776B\" },\r\n },\r\n },\r\n};\r\n\r\nconst AppInfoSlice = createSlice({\r\n name: \"AppInfo\",\r\n initialState: initialState,\r\n reducers: {\r\n setAppInfo: (state, action) => {\r\n state.value = action.payload;\r\n },\r\n },\r\n});\r\n\r\nexport const AppInfoActions = AppInfoSlice.actions;\r\nexport default AppInfoSlice.reducer;\r\n","import { CommonStores } from \"../common/CommonStoreSlice\";\r\n\r\nexport const ADMINISTRATION_STORES: CommonStores = {\r\n SystemDataSourceType: {\r\n autoLoad: false,\r\n data: [{ value: \"Mysql\" }, { value: \"Oracle\" }, { value: \"DB2\" }],\r\n url: \"\",\r\n },\r\n SystemParameterTypes: {\r\n autoLoad: false,\r\n url: \"\",\r\n data: [\r\n { value: \"text\" },\r\n { value: \"number\" },\r\n { value: \"date\" },\r\n { value: \"datetime\" },\r\n { value: \"combobox\" },\r\n { value: \"checkbox\" },\r\n { value: \"html\" },\r\n { value: \"lookup\" },\r\n ],\r\n },\r\n SystemReportTypes: {\r\n autoLoad: false,\r\n url: \"\",\r\n data: [{ value: \"Excel\" }, { value: \"Jasper\" }, { value: \"Blueprint\" }],\r\n },\r\n SystemWidgetTypes: {\r\n autoLoad: false,\r\n url: \"\",\r\n data: [\r\n { name: \"LineChart\" },\r\n { name: \"ColumnChart\" },\r\n { name: \"PieChart\" },\r\n { name: \"Card\" },\r\n { name: \"CircularProgress\" },\r\n { name: \"LinearProgress\" },\r\n ],\r\n },\r\n SystemMailRecipientTypes: {\r\n autoLoad: false,\r\n url: \"\",\r\n data: [{ name: \"To\" }, { name: \"CC\" }],\r\n },\r\n SystemOrganizations: {\r\n autoLoad: true,\r\n url: \"api/v1/admin/organization/all\",\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n data: [],\r\n },\r\n SystemOrganizationRanks: {\r\n autoLoad: true,\r\n url: \"api/v1/admin/organization/ranks/all\",\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n data: [],\r\n },\r\n SystemOrganizationUnits: {\r\n autoLoad: true,\r\n url: \"api/v1/admin/organization/units/all\",\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n data: [],\r\n },\r\n SystemDataSources: {\r\n autoLoad: true,\r\n data: [],\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n url: \"api/v1/dev/datasourceconnection/all\",\r\n },\r\n SystemDataQueries: {\r\n autoLoad: true,\r\n data: [],\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n url: \"api/v1/dev/dataquery/all\",\r\n },\r\n SystemBluePrints: {\r\n autoLoad: true,\r\n data: [],\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n url: \"api/v1/dev/blueprint/all\",\r\n },\r\n SystemReports: {\r\n autoLoad: true,\r\n data: [],\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n url: \"api/v1/dev/report/all\",\r\n },\r\n SystemEntityParameters: {\r\n autoLoad: true,\r\n data: [],\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n url: \"api/v1/dev/entityparameter/all\",\r\n },\r\n SystemMailTemplates: {\r\n autoLoad: true,\r\n data: [],\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n url: \"api/v1/dev/mailtemplate/all\",\r\n },\r\n SystemWidgets: {\r\n autoLoad: true,\r\n data: [],\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n url: \"api/v1/dev/widget/all\",\r\n },\r\n};\r\n","import { useDispatch, useSelector } from \"react-redux\";\r\nimport { createTheme, ThemeOptions } from \"@mui/material\";\r\nimport { ThemeProvider } from \"@emotion/react\";\r\nimport React, { useEffect } from \"react\";\r\nimport Layout from \"../layout/Layout\";\r\nimport { AppInfo, AppInfoActions } from \"../redux/features/common/AppInfoSlice\";\r\nimport { LicenseInfo } from \"@mui/x-license\";\r\nimport {\r\n DARK_THEME_INITIAL_MAIN_COLOR,\r\n DARK_THEME_INITIAL_SECANDARY_COLOR,\r\n LIGHT_THEME_INITIAL_MAIN_COLOR,\r\n LIGHT_THEME_INITIAL_SECANDARY_COLOR,\r\n} from \"../util\";\r\nimport { setStoresMetaData } from \"../redux/features/common/CommonStoreSlice\";\r\nimport { ADMINISTRATION_STORES } from \"../redux/features/administration/AdministrationStoresMetaData\";\r\n\r\nconst App: React.FC<AppInfo> = (props: AppInfo) => {\r\n const dispatch = useDispatch();\r\n LicenseInfo.setLicenseKey(props.muiPremiumKey);\r\n const LightThemeOptions: ThemeOptions = {\r\n components: {\r\n MuiCssBaseline: {\r\n styleOverrides: `\r\n /* Custom Scrollbar */\r\n * {\r\n scrollbar-width: thin;\r\n scrollbar-color: ${\r\n props.appTheme?.light?.primaryColor ||\r\n LIGHT_THEME_INITIAL_MAIN_COLOR\r\n } #ffffff;\r\n }\r\n \r\n /* Webkit Browsers */\r\n *::-webkit-scrollbar {\r\n width: 12px;\r\n height: 10px;\r\n } \r\n `,\r\n },\r\n },\r\n palette: {\r\n mode: \"light\",\r\n primary: {\r\n main:\r\n props.appTheme?.light?.primaryColor || LIGHT_THEME_INITIAL_MAIN_COLOR,\r\n },\r\n secondary: {\r\n main:\r\n props.appTheme?.light?.secondaryColor ||\r\n LIGHT_THEME_INITIAL_SECANDARY_COLOR,\r\n },\r\n background: {\r\n default: \"#f5f5f5\",\r\n paper: \"#f5f5f5\",\r\n },\r\n },\r\n };\r\n const DarkThemeOptions: ThemeOptions = {\r\n components: {\r\n MuiCssBaseline: {\r\n styleOverrides: `\r\n /* Custom Scrollbar */\r\n * {\r\n scrollbar-width: thin;\r\n scrollbar-color: ${\r\n props.appTheme?.dark?.primaryColor || DARK_THEME_INITIAL_MAIN_COLOR\r\n } #121212;\r\n }\r\n \r\n /* Webkit Browsers */\r\n *::-webkit-scrollbar {\r\n width: 12px;\r\n height: 10px;\r\n } \r\n `,\r\n },\r\n },\r\n palette: {\r\n mode: \"dark\",\r\n primary: {\r\n main:\r\n props.appTheme?.dark?.primaryColor || DARK_THEME_INITIAL_MAIN_COLOR,\r\n },\r\n secondary: {\r\n main:\r\n props.appTheme?.dark?.secondaryColor ||\r\n DARK_THEME_INITIAL_SECANDARY_COLOR,\r\n },\r\n },\r\n };\r\n\r\n let commonStores = {};\r\n if (props.enableAdministrationModule) {\r\n commonStores = { ...ADMINISTRATION_STORES };\r\n }\r\n if (props.businessCommonStoresMetaData) {\r\n commonStores = {\r\n ...commonStores,\r\n ...props.businessCommonStoresMetaData,\r\n };\r\n }\r\n dispatch(setStoresMetaData(commonStores));\r\n const AppLayoutState = useSelector((state: any) => state.AppLayout);\r\n let themeOptions = { ...LightThemeOptions };\r\n if (AppLayoutState.themeMode === \"dark\") {\r\n themeOptions = { ...DarkThemeOptions };\r\n }\r\n const theme = createTheme({\r\n direction: AppLayoutState.appDirection,\r\n ...themeOptions,\r\n });\r\n useEffect(() => {\r\n document.title = props.documentTitle;\r\n dispatch(AppInfoActions.setAppInfo(props));\r\n }, []);\r\n return (\r\n <ThemeProvider theme={theme}>\r\n <Layout />\r\n </ThemeProvider>\r\n );\r\n};\r\n\r\nexport default App;\r\n","import { Provider } from \"react-redux\";\r\nimport { library } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { fab } from \"@fortawesome/free-brands-svg-icons\";\r\nimport { far } from \"@fortawesome/free-regular-svg-icons\";\r\nimport { fas } from \"@fortawesome/free-solid-svg-icons\";\r\nimport \"../styles/index.css\";\r\nimport \"react-toastify/dist/ReactToastify.css\";\r\nimport App from \"./App\";\r\nimport { AppInfo } from \"../redux/features/common/AppInfoSlice\";\r\nimport AppLayoutReducer from \"../redux/features/common/AppLayoutSlice\";\r\nimport UserSessionReducer from \"../redux/features/common/UserSessionSlice\";\r\nimport LoadingMaskReducer from \"../redux/features/common/LoadingMaskSlice\";\r\nimport CommonStoreReducer from \"../redux/features/common/CommonStoreSlice\";\r\nimport AppInfoReducer from \"../redux/features/common/AppInfoSlice\";\r\nimport SideBarReducer from \"../redux/features/common/SideBarSlice\";\r\nimport { configureStore } from \"@reduxjs/toolkit\";\r\n\r\nlibrary.add(fab);\r\nlibrary.add(far);\r\nlibrary.add(fas);\r\n\r\nexport const BaseApp: React.FC<AppInfo> = (props) => {\r\n const systemReducers = {\r\n AppLayout: AppLayoutReducer,\r\n UserSession: UserSessionReducer,\r\n loadingMask: LoadingMaskReducer,\r\n commonStores: CommonStoreReducer,\r\n SideBar: SideBarReducer,\r\n AppInfo: AppInfoReducer,\r\n ...props.businessReduxReducers,\r\n };\r\n const store = configureStore({\r\n reducer: systemReducers,\r\n });\r\n\r\n return (\r\n <Provider store={store}>\r\n <App {...props} />\r\n </Provider>\r\n );\r\n};\r\n","// Polyfill for global in case it's not defined (for browser/Vite compatibility)\r\nif (typeof global === \"undefined\") {\r\n global = globalThis;\r\n}\r\nexport * from \"./BaseApp\";\r\nexport * from \"@mui/material\";\r\nexport * from \"zod\";\r\nexport * from \"@mui/lab\";\r\nexport { toast } from \"react-toastify\";\r\nexport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nexport type { FontAwesomeIconProps } from \"@fortawesome/react-fontawesome\";\r\nexport * from \"./templates\";\r\nexport * from \"@mui/x-tree-view/models\";\r\n","// Ensure global is defined before anything else loads draft-js\r\nif (typeof global === 'undefined') {\r\n (global as any) = globalThis;\r\n}\r\nexport * from \"./components\";\r\nexport * from \"./hooks\";\r\nexport * from \"./util\";\r\nexport * from \"./types\";\r\n"],"names":["css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","useIsMobile","breakpoint","isMobile","setIsMobile","useState","window","innerWidth","useEffect","handleResize","addEventListener","removeEventListener","DRAWER_WIDTH","initialState","themeMode","localStorage","getItem","appDirection","AppLayoutSlice","createSlice","name","reducers","setThemeMode","state","action","payload","setAppDirection","AppLayoutActions","actions","AppLayoutReducer","reducer","loadingMaskSlice","value","isOpened","message","showLoadingMask","hideLoadingMask","LoadingMaskReducer","useLoadingMask","dispatch","useDispatch","show","hide","useAxios","mask","apiBaseUrl","useSelector","AppInfo","axiosInstance","axios","create","baseURL","timeout","withCredentials","defaults","interceptors","response","use","error","status","toast","autoClose","data","Blob","text","then","handleGetRequest","async","props","endPointURI","parameters","undefined","showMask","loadingMessage","get","params","successCallBkFn","failureCallBkFn","handlePostRequest","post","handleDeleteRequest","delete","HandleDownloadHTTPPostPDF","responseType","UserSessionSlice","isAuthenticated","authorities","setAuthenticated","setUnAuthenticated","UserSessionActions","UserSessionReducer","resources","en","translation","common","AdminLocalsEn","ar","adminLocalsAr","i18n","initReactI18next","init","lng","fallbackLng","useConfirmationWindow","open","setOpen","t","useTranslation","ConfirmationWindow","_jsxs","Dialog","_jsx","DialogTitle","title","DialogContent","children","DialogContentText","body","DialogActions","Button","variant","color","onClick","onConfirmationCallBk","autoFocus","useSession","UserSession","UserInfo","isUserAuthorized","authorityCode","grantedAuthority","authority","useWindow","windowState","setWindowState","Window","windowProps","jsx","Modal","sx","zIndex","theme","drawer","onClose","onCloseCallBack","Box","position","top","left","maxHeight","transform","height","width","minWidth","minHeight","overflow","bgcolor","display","flexDirection","alignItems","justifyContent","AppBar","Toolbar","FontAwesomeIcon","icon","windowIcon","marginRight","Typography","component","windowTitle","flexGrow","IconButton","Paper","padding","commonStoreSlice","stores","storeKeys","setStoresMetaData","Object","keys","setStoreData","storeKey","CommonStoreReducer","useApiActions","apiActionsProps","CommonStores","commonStores","session","reloadData","commonStoreKey","url","setData","findAll","loadRecordById","recordId","record","findById","findByIdParamName","saveRecord","savedRecord","save","deleteRecordById","result","deleteById","deleteByIdParamName","TemplateTextField","TextField","slotProps","inputLabel","shrink","label","_Fragment","not","a","b","filter","indexOf","intersection","TransferList","valueField","displayField","options","selectedOptions","setSelection","checked","setChecked","React","setLeft","right","setRight","leftFilterValue","setLeftFilterValue","rightFilterValue","setRightFilterValue","leftChecked","rightChecked","handleToggle","currentIndex","newChecked","push","splice","numberOfChecked","items","length","handleToggleAll","customList","unfilteredItems","side","option","toLocaleLowerCase","includes","Card","CardHeader","px","py","avatar","Checkbox","indeterminate","disabled","inputProps","subheader","fullWidth","onChange","event","target","Divider","List","dense","role","map","jsxs","ListItemButton","cursor","ListItemIcon","tabIndex","disableRipple","ListItemText","id","primary","Grid2","container","spacing","margin","flex","direction","my","size","oldState","newState","concat","TemplateBarChart","BarChart","dataset","xAxis","dataKey","scaleType","valueLabel","series","labelField","split","TemplateDataCard","fontSize","fontWeight","TemplateGauge","Gauge","valueMax","total","TemplateLineChart","LineChart","LinearProgressWithLabel","mr","LinearProgress","Math","round","TemplateLineProgress","TemplatePieChart","chartData","index","PieChart","CheckBox","FormControlLabel","required","control","checkedValue","e","onChangeCallBack","unCheckedValue","ComboBox","AppLayoutState","AppLayout","Autocomplete","v","getValue","newValue","clearOnBlur","handleHomeEndKeys","getOptionLabel","renderOption","props1","slots","popper","Popper","renderInput","InputLabelProps","errorMessage","helperText","DATE_FORMAT","DATE_TIME_FORMAT","LIGHT_THEME_INITIAL_MAIN_COLOR","LIGHT_THEME_INITIAL_SECANDARY_COLOR","DARK_THEME_INITIAL_MAIN_COLOR","DARK_THEME_INITIAL_SECANDARY_COLOR","Datefield","LocalizationProvider","dateAdapter","AdapterMoment","DatePicker","moment","format","momentValue","isValid","textField","Fragment","DatetimeField","DateTimePicker","formatMuiErrorMessage","code","args","URL","forEach","arg","searchParams","append","process","env","NODE_ENV","reactIsModule","exports","Symbol","for","c","d","f","g","h","k","l","m","n","p","q","r","w","x","y","z","u","$$typeof","A","reactIs_production_min","AsyncMode","ConcurrentMode","ContextConsumer","Element","ForwardRef","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","require$$0","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","object","$$typeofType","ContextProvider","Memo","hasWarnedAboutDeprecatedIsAsyncMode","reactIs_development","console","isPortal","getOwnPropertySymbols","hasOwnProperty","prototype","propIsEnumerable","propertyIsEnumerable","objectAssign","assign","test1","String","getOwnPropertyNames","test2","i","fromCharCode","join","test3","letter","err","shouldUseNative","source","from","symbols","to","val","TypeError","toObject","s","arguments","key","call","ReactPropTypesSecret_1","has","Function","bind","printWarning","ReactPropTypesSecret","loggedTypeFailures","require$$1","Error","checkPropTypes","typeSpecs","values","location","componentName","getStack","typeSpecName","ex","stack","resetWarningCache","checkPropTypes_1","ReactIs","require$$2","require$$3","require$$4","emptyFunctionThatReturnsNull","factoryWithTypeCheckers","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","iterator","ANONYMOUS","ReactPropTypes","array","createPrimitiveTypeChecker","bigint","bool","func","number","string","symbol","any","createChainableTypeChecker","arrayOf","typeChecker","propName","propFullName","PropTypeError","propValue","Array","isArray","getPropType","element","elementType","instanceOf","expectedClass","expectedClassName","constructor","node","isNode","objectOf","propType","oneOf","expectedValues","is","valuesString","JSON","stringify","getPreciseType","oneOfType","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","expectedType","shape","shapeTypes","invalidValidatorError","exact","allKeys","this","validate","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","isRequired","secret","cacheKey","chainedCheckType","every","iteratorFn","maybeIterable","getIteratorFn","step","entries","next","done","entry","RegExp","isSymbol","Date","PropTypes","emptyFunction","emptyFunctionWithReset","factoryWithThrowingShims","shim","getShim","propTypesModule","REACT_CONSUMER_TYPE","REACT_VIEW_TRANSITION_TYPE","REACT_CLIENT_REFERENCE","reactIs_production","SuspenseList","isSuspenseList","getModuleId","isPlainObject","item","getPrototypeOf","toStringTag","deepClone","output","deepmerge","clone","createBreakpoints","breakpoints","xs","sm","md","lg","xl","unit","other","sortedValues","breakpointsAsArray","sort","breakpoint1","breakpoint2","reduce","acc","obj","sortBreakpointsValues","up","down","between","start","end","endIndex","only","keyIndex","replace","borderRadius","responsivePropType","merge","defaultBreakpoints","defaultContainerQueries","containerQueries","containerName","handleBreakpoints","styleFromPropValue","themeBreakpoints","breakpointKeys","startsWith","some","match","containerKey","shorthand","matches","_formatErrorMessage","containerQuery","Number","isNaN","getContainerQuery","cssKey","capitalize","charAt","toUpperCase","slice","getPath","path","checkVars","vars","getStyleValue","themeMapping","propValueFinal","userValue","prop","cssProperty","themeKey","fn","propTypes","filterProps","properties","directions","aliases","marginX","marginY","paddingX","paddingY","getCssProperties","cache","memoize","property","dir","marginKeys","paddingKeys","spacingKeys","createUnaryUnit","defaultValue","themeSpacing","abs","isInteger","transformed","createUnarySpacing","transformer","resolveCssProperty","cssProperties","getStyleFromPropValue","compose","styles","handlers","borderTransform","createBorderStyle","border","borderTop","borderRight","borderBottom","borderLeft","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outline","outlineColor","gap","columnGap","rowGap","paletteTransform","sizingTransform","maxWidth","breakpointsValues","defaultSxConfig","backgroundColor","pt","pr","pb","pl","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd","mt","mb","ml","mx","marginTop","marginBottom","marginLeft","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd","displayPrint","textOverflow","visibility","whiteSpace","flexBasis","flexWrap","alignContent","order","flexShrink","alignSelf","justifyItems","justifySelf","gridColumn","gridRow","gridAutoFlow","gridAutoColumns","gridAutoRows","gridTemplateColumns","gridTemplateRows","gridTemplateAreas","gridArea","bottom","boxShadow","boxSizing","font","fontFamily","fontStyle","letterSpacing","textTransform","lineHeight","textAlign","typography","styleFunctionSx","getThemeValue","config","unstable_sxConfig","traverse","sxInput","sxObject","emptyBreakpoints","breakpointsInput","breakpointsInOrder","createEmptyBreakpointObject","breakpointsKeys","styleKey","maybeFn","objects","union","Set","objectsHaveSameKeys","sorted","regex","sortContainerQueries","breakpointOutput","removeUnusedBreakpoints","unstable_createStyleFunctionSx","applyStyles","colorSchemes","getColorSchemeSelector","selector","palette","mode","useTheme","defaultTheme","contextTheme","useContext","ThemeContext","systemDefaultTheme","paletteInput","spacingInput","shapeInput","mui","argsInput","argument","createSpacing","muiTheme","components","themeInput","toContainerQuery","mediaQuery","attachCq","cssContainerQueries","unstable_sx","createTheme","extendSxProp","inSx","systemProps","otherProps","splitProps","finalSx","defaultGenerator","ClassNameGenerator","generate","configure","generator","reset","createClassNameGenerator","o","clsx","globalStateClasses","active","completed","expanded","focused","focusVisible","readOnly","selected","themeId","defaultClassName","generateClassName","BoxRoot","tag","stylesFactory","emStyled","styled","shouldForwardProp","forwardRef","inProps","useThemeWithoutDefault","className","as","createBox","globalStatePrefix","slot","globalStateClass","generateUtilityClass","generateUtilityClasses","root","isNumber","isNumeric","trim","capitalizeFirstLetter","str","isValidEmail","email","test","HtmlEditor","setValue","maxLength","customInlineFn","Style","contentState","stateFromHTML","editorState","setEditorState","EditorState","createWithContent","draftToHtml","convertToRaw","getCurrentContent","Editor","onEditorStateChange","newData","log","substring","handlePastedText","pastedText","currentContentLength","getPlainText","selectedTextLength","currentSelection","getSelection","isCollapsed","currentContent","startKey","getStartKey","endKey","getEndKey","isStartAndEndBlockAreTheSame","startSelectedTextLength","getBlockForKey","getLength","getStartOffset","endSelectedTextLength","getEndOffset","keyAfterEnd","getKeyAfter","currentKey","_getLengthOfSelectedText","alert","editorStyle","wrapperStyle","toolbarStyle","SystemLookupCombobox","setOptions","lookupType","loadLookupOptions","FormElementField","fieldInfo","formManager","formActions","formValues","fieldName","fieldType","hiddenFields","formProps","fieldSize","muiTextFieldProps","disabledFields","hidden","fieldLabel","onValueChangeCallBack","fieldHeight","formState","errors","toString","dateFormat","selectedRecord","optionDisplayField","optionValueField","FormAction","setConfirmationWindowState","confirmationMessage","actionFn","formActionProps","actionButtonVariant","actionButtonColor","preActionValidation","isConfirmationRequired","FormElementGroup","elements","generateDateTimeColumn","colDef","renderEditCell","api","setEditCellValue","field","valueParser","row","column","valueFormatter","generateComboColumn","valueGetter","renderCell","find","generateCheckBoxColumn","getElementFields","fields","childElement","getAllFields","constructValidationSchema","validationSchemaObj","required_error","invalid_type_error","optional","nullable","boolean","min","TemplateForm","initiallyHiddenFields","setHiddenFields","initialValues","setDisabledFields","formSchema","useForm","resolver","zodResolver","defaultValues","watch","pathParameters","useParams","formRouteRecordIdParamName","setFieldValue","fieldValue","hideField","oldValues","showField","disableField","enableField","idToLoad","recordIdToEdit","retrievedRecord","apiActions","formLoadCallBk","loadRecord","formElement","enabled","saveButtonSpecs","startIcon","handleSubmit","preSaveValidation","formSavedSuccessfullyCallBk","formCloseCallBk","cancelButtonSpecs","TemplateGridMultiRecordAction","rowAction","recordsToProcessActionOn","recordIdsToProcessActionOn","isActionAllowed","StyledQuickFilter","QuickFilter","StyledToolbarButton","ToolbarButton","ownerState","opacity","pointerEvents","transition","transitions","StyledTextField","overflowX","TemplateGridTopBar","isCreationAuthorized","templateProps","editAction","gridSelection","rowSelectionModel","keyColumnName","sRecords","sRecordIds","ids","selectedId","selectedRecords","selectedRecordIds","getGridSelection","editMode","handleCreateNewRecord","rowActions","gridActionProps","multiRecord","_createElement","gridLoadParametersValues","tBar","Tooltip","ColumnsPanelTrigger","render","GridViewColumnIcon","FilterPanelTrigger","Badge","badgeContent","filterCount","GridFilterListIcon","gridStateKey","clearGridState","orientation","flexItem","ExportExcel","MenuItem","QuickFilterTrigger","triggerProps","enterDelay","QuickFilterControl","controlProps","inputRef","placeholder","input","startAdornment","InputAdornment","endAdornment","QuickFilterClear","edge","TemplateGridRecordAction","iconStyle","getActionIconStyleForRecord","isActionVisibleForRecord","isActionDisabledForRecord","GridActionsCellItem","showInMenu","reloadGridAfterAction","currentNewRecordIndex","loadGridState","saved","parse","saveGridState","statePart","current","setItem","PIN_FIXED_COLUMNS","TemplateGrid","getLookupOptions","generateLookupGridColumn","useLookupGridColumn","generatedColumns","setGeneratedColumns","formElements","savedState","useMemo","gridProps","initialVisibilityState","columnVisibilityModel","existingFields","themeDirection","setColumnVisibilityModel","columnOrder","setColumnOrder","columnWidths","setColumnWidths","gridRowGroupingModel","setGridRowGroupingModel","columnGroupingModel","newLeft","pinnedColumns","newRight","setPinnedColumns","navigate","useNavigate","recordToDelete","setRecordToDelete","recordToEdit","setRecordToEdit","rowModesModel","setRowModesModel","adjustGridColumns","gridColumns","isDefaultEditable","columns","tableField","muiProps","editable","headerName","headerAlign","align","searchable","constructGridColumnsFromFields","setRowSelectionModel","validationSchema","isEditAllowed","isDeleteAllowed","deleteAction","setConfirmationWindowOpened","isNew","postActionCallBack","oldData","formModalHeight","formModalWidth","formModalMinHeight","formModalMinWidth","formModalIcon","formModalTitle","specs","modalHeight","modalWidth","modalMinHeight","modalMinWidth","modalIcon","modalTitle","FormWindow","setFormWindowState","actionColumn","isEnabled","getActions","disableDefaultAction","isInEditMode","GridRowModes","Edit","View","handleSaveRowClick","ignoreModifications","handleCancelRowEditClick","isEditActionVisibleForRecord","isActionEditDisabledForRecord","formRoute","handleEditRecord","isDeleteActionVisibleForRecord","isDeleteActionDisabledForRecord","structuredColumns","autoLoad","adjustedColumns","baseCols","col","fieldToCol","Map","Boolean","formComponent","editAuthorityKey","hideInfoBar","hideBackButton","girdIcon","gridTitle","gridLoadParameters","setGridLoadParametersValues","Accordion","defaultExpanded","AccordionSummary","expandIcon","GridExpandMoreIcon","AccordionDetails","DataGridPremium","toolbar","newRecord","oldRows","oldModel","removeItem","getRowId","showToolbar","rows","checkboxSelection","onRowModesModelChange","newModel","rowGroupingColumnMode","processRowUpdate","ZodError","validateRecord","requestObject","reloadAfterSave","onRowSelectionModelChange","gridSelectionModel","onColumnVisibilityModelChange","model","onColumnOrderChange","targetIndex","prevOrder","currentOrder","fromIndex","onColumnWidthChange","updatedWidths","rowGroupingModel","onRowGroupingModelChange","handleRowGroupChange","onPinnedColumnsChange","newPinedColumns","ChangeOrgForm","newOrgId","setNewOrgId","currentOrganization","userOrganizations","username","orgId","successChangeCallBackFn","SideBarSlice","toggleSideBarState","setSideBarState","SideBarReducer","MuiAppBar","easing","sharp","duration","leavingScreen","variants","easeOut","enteringScreen","TopBar","ChangeOrgWindow","setChangeOrgWindowState","SideBarState","SideBar","Avatar","src","appLogo","noWrap","appName","organizationEnName","organizationArName","prefix","iconName","language","nextLanguage","changeLanguage","rotation","DrawerHeader","mixins","findNavigationItemById","nodes","found","NavigationItems","actionPayload","DotIcon","verticalAlign","StyledTreeItemRoot","TreeItem2Root","grey","treeItemClasses","groupTransition","CustomTreeItemContent","TreeItem2Content","dark","main","content","alpha","contrastText","AnimatedCollapse","animated","Collapse","TransitionComponent","useSpring","in","StyledTreeItemLabelText","CustomLabel","expandable","appLayoutState","TreeItem2Label","isExpandable","reactChildren","CustomTreeItem","itemId","getRootProps","getContentProps","getIconContainerProps","getCheckboxProps","getLabelProps","getGroupTransitionProps","getDragAndDropOverlayProps","publicAPI","useTreeItem2","rootRef","TreeItem2Provider","TreeItem2IconContainer","TreeItem2Icon","TreeItem2Checkbox","TreeItem2DragAndDropOverlay","NavigationTree","filterData","mergedNavigationItems","enableAdministrationModule","businessNavigationItems","authoriedNavigationItems","RichTreeView","onItemClick","navigationItem","overflowY","Drawer","anchor","appVersion","cacheRtl","createCache","stylisPlugins","prefixer","rtlPlugin","cacheLtr","WidgetViewer","isWidgetLoading","setWidgetLoading","queryId","dataQueryId","parameterValues","getWidgetData","widgetType","verticalAxisField","spin","widgetTitle","horizontalAxisField","horizontalAxisLabel","DashboardViewer","dashboardInfo","setDashboardInfo","dashboardCode","dashboardName","dashboardTitle","dashboardParameters","widgets","dashboardParameterValues","setDashboardParameterValues","loadDashboardInfo","widget","OrganizationApplicationModuleGrid","systemApplicationModules","setSystemApplicationModules","getSystemApplicationModules","organizationId","selectedOrganization","OrganizationUnitTypeGrid","OrganizationUnitGrid","organizationUnitTypes","setOrganizationUnitTypes","getOrganizationUnitTypes","OrganizationRankGrid","OrgMemberRoleForm","setSelectedOptions","availableOptions","setAvailableOptions","orgMemberId","currentRoles","availableRoles","getOrgMemberRoles","success","closeModalFn","OrganizationMemberGrid","setSelectedRecord","OrganizationMemberRolesWindow","setOrganizationMemberRolesWindowState","SystemOrganizations","SystemOrganizationRanks","SystemOrganizationUnits","personId","selectedPerson","SystemApplicationModuleGrid","applicationId","selectedApplication","systemApplicationId","SystemApplicationAuthorityGrid","RoleAuthoritiesForm","availableAuthorities","setAvailableAuthorities","roleId","appId","selectedAuthorities","getRoleAuthorities","SystemApplicationRoleGrid","selectedRole","setSelectedRole","RoleaAuthoritiesWindow","setRoleAuthoritiesWindowState","LookupGrid","DataQueryParameterGrid","SystemEntityParameters","ReportParameterGrid","reportId","getGridColumnsFromRecord","ExcelReportViewer","reportData","setReportData","reloadReport","ReportViewer","blobUrl","setBlobUrl","setErrorMessage","excelReportData","setExcelReportData","reportViewerState","setReportViewerState","reportInfo","setReportInfo","reportParametersValues","setReportParametersValues","reportParametersElements","setReportParametersElements","getFormElementsFromReportParameters","reportParameters","reportParameter","parameterLabel","parameterCode","parameterType","mandatory","runReport","reportInfoProp","reportType","reportCode","resultMode","jasperOutPutFileType","contentDisposition","headers","filename","file","createObjectURL","blob","link","href","download","click","removeChild","revokeObjectURL","byPassParameterEntry","loadReportData","reportName","validationObject","Blueprint","useSysDatasource","isMandatory","isVisible","datasourceConId","reportBluePrintId","reportExcelDataQueryId","reportJasperName","reportJasperPath","Jasper","Excel","adjustFormAccordingToReportType","validationObjects","MailRecipientGrid","mailTemplateId","recipientMail","MailBodyGrid","SystemDataQueries","MailAttachmentGrid","SystemReports","Gmail","mailHost","mailPort","mailUsername","mailPassword","mailProtocol","isMailSmtpAuthEnabled","isMailStarttlsEnabled","isSmtpSSlEnabled","azureGraphApiClientId","azureGraphApiClientSecret","azureGraphApiTenantId","azureGraphApiScope","azureGraphApiEmailId","Azure","adjustFormAccordingToEngineType","WorkflowDocumentStatusGrid","workflowDocumentId","WorkflowDocumentActionMailGrid","SystemMailTemplates","actionId","documentActionId","WorkflowDocumentActionGrid","ActionMailsWindow","setActionMailWindowState","workflowStates","setWorkflowStates","loadWorkFlowDocumentStates","seriesKeys","verticalAxisLabel","ColumnChart","CircularProgress","adjustFormAccordingToWidgetType","DashboardWidgetGrid","SystemWidgets","dashboardId","SYSTEM_ROUTES","ApplicationModulesWindow","setApplicationWindowState","OrgUnitTypesWindow","setOrgUnitTypesWindowState","OrgUnitsWindow","setOrgUnitsWindowState","OrgRanksWindow","setOrgRanksWindowState","setSelectedPerson","OrganizationMembersWindow","setOrganizationMemberWindowState","refSource","setApplicationModulesWindowState","ApplicationAuthoritiessWindow","setApplicationAuthoritiesWindowState","ApplicationRolesWindow","setApplicationRolesWindowState","ApplicationLookupsWindow","setApplicationLookupsWindowState","DataQueryParameterWindow","setDataQueryParameterWindow","SystemDataSources","multiline","SystemDataSourceType","SystemParameterTypes","ReporTrialWindow","setReportTrialWindowState","ReportParameterWindow","setReportParameterWindowState","SystemBluePrints","MailRecipentsWindow","setMailRecipientsWindowState","MailBodiesWindow","setMailBodiesWindowState","MailAttachmentWindow","setMailAttachmentWindowState","callBkFn","periodical","periodType","periodValue","startSendingAt","mailEngine","WorkflowStatusWindow","setWorkflowStatusWindowState","WorkflowActionWindow","setWorkflowActionWindowState","useSystemCon","SystemWidgetTypes","WidgetsWindows","setWidgetsWindowState","RouteWrapper","MainContent","businessRoutes","isAutoLoadLoaded","setAutoLoadLoaded","loadCommonStores","CacheProvider","Routes","route","Route","Puller","MobileDrawer","toggleDrawer","SwipeableDrawer","onOpen","swipeAreaWidth","disableSwipeToOpen","ModalProps","keepMounted","LoadingMask","loadingMask","Backdrop","Login","appInfo","setUsername","password","setPassword","isLoginInProcess","setIsLoginInProcess","UserSessionState","handleLogin","userSession","loginTheme","MuiCssBaseline","styleOverrides","appTheme","primaryColor","secondary","secondaryColor","checkUserSession","ThemeProvider","onKeyDown","loading","Main","Layout","BrowserRouter","ToastContainer","draggable","CssBaseline","AppInfoSlice","documentTitle","muiPremiumKey","businessReduxReducers","businessCommonStoresMetaData","light","setAppInfo","AppInfoActions","AppInfoReducer","ADMINISTRATION_STORES","SystemReportTypes","SystemMailRecipientTypes","App","LicenseInfo","setLicenseKey","LightThemeOptions","background","default","paper","DarkThemeOptions","themeOptions","library","add","fab","far","fas","global","globalThis","systemReducers","store","configureStore","Provider"],"mappings":"ujFAAA,SAAqBA,EAAKC,QACX,IAARA,IAAiBA,EAAM,CAAE,GAC9B,IAAIC,EAAWD,EAAIC,SAEnB,GAAgC,oBAAbC,SAAnB,CAEA,IAAIC,EAAOD,SAASC,MAAQD,SAASE,qBAAqB,QAAQ,GAC9DC,EAAQH,SAASI,cAAc,SACnCD,EAAME,KAAO,WAEI,QAAbN,GACEE,EAAKK,WACPL,EAAKM,aAAaJ,EAAOF,EAAKK,YAKhCL,EAAKO,YAAYL,GAGfA,EAAMM,WACRN,EAAMM,WAAWC,QAAUb,EAE3BM,EAAMK,YAAYR,SAASW,eAAed,GAnBU,CAqBxD,wTCvBae,GAAc,CAACC,EAAa,OACvC,MAAOC,EAAUC,GAAeC,EAAQA,SAACC,OAAOC,WAAaL,GAQ7D,OANAM,EAAAA,WAAU,KACR,MAAMC,EAAe,IAAML,EAAYE,OAAOC,WAAaL,GAE3D,OADAI,OAAOI,iBAAiB,SAAUD,GAC3B,IAAMH,OAAOK,oBAAoB,SAAUF,KACjD,CAACP,IAEGC,GCTIS,GAAe,IAOtBC,GAA+B,CACnCC,UAAWC,aAAaC,QAAQ,cAAgB,QAChDC,aAAkD,MAApCF,aAAaC,QAAQ,YAAsB,MAAQ,OAG7DE,GAAiBC,EAAAA,YAAY,CACjCC,KAAM,yBACNP,GACAQ,SAAU,CACRC,aAAc,CAACC,EAAOC,KACpBD,EAAMT,UAAYU,EAAOC,SAE3BC,gBAAiB,CAACH,EAAOC,KACvBD,EAAMN,aAAeO,EAAOC,YAKrBE,GAAmBT,GAAeU,QAC/C,IAAeC,GAAAX,GAAeY,QCtB9B,MAIMC,GAAmBZ,EAAAA,YAAY,CACnCC,KAAM,2BALoC,CAC1CY,MAAO,CAAEC,UAAU,EAAOC,QAAS,OAMnCb,SAAU,CACRc,gBAAiB,CACfZ,EACAC,KAEAD,EAAMS,MAAMC,UAAW,EACvBV,EAAMS,MAAME,QAAUV,EAAOC,SAE/BW,gBAAkBb,IAChBA,EAAMS,MAAMC,UAAW,EACvBV,EAAMS,MAAME,QAAU,UAKfC,gBAAEA,GAAeC,gBAAEA,IAAoBL,GAAiBH,QACrE,IAAeS,GAAAN,GAAiBD,QCzB1B,MAAAQ,GAAiB,KACrB,MAAMC,EAAWC,EAAAA,cAOjB,MAAO,CAAEC,KANKP,IACZK,EAASJ,GAAgBD,KAKZQ,KAHF,KACXH,EAASH,SCKPO,GAAW,KACf,MAAMC,EAAON,KACPO,EAAaC,EAAAA,aAChBvB,GAAeA,EAAMwB,QAAQf,MAAMa,aAEhCG,EAAgBC,EAAMC,OAAO,CACjCC,QAASN,EACTO,QAAS,IACTC,iBAAiB,IAGnBL,EAAcM,SAASD,iBAAkB,EACzCL,EAAcO,aAAaC,SAASC,KACjCD,GACQA,IAERE,IACC,GACEA,IACIA,EAAMF,WACJE,EAAMF,SAASG,QACa,MAA1BD,EAAMF,SAASG,SAKvBC,EAAKA,MAACF,MAAM,uDAAwD,CAClEG,WAAW,SAER,GACLH,IACIA,EAAMF,WACJE,EAAMF,SAASG,QACa,MAA1BD,EAAMF,SAASG,SAKvBC,EAAKA,MAACF,MAAM,sDACP,GACLA,IACIA,EAAMF,WACJE,EAAMF,SAASG,QACa,MAA1BD,EAAMF,SAASG,SAKvB,GAAID,EAAMF,SAASM,gBAAgBC,KAAM,CAC1BL,EAAMF,SAASM,KACvBE,OAAOC,MAAMD,IAChBJ,EAAKA,MAACF,MAAMM,WAGdJ,EAAAA,MAAMF,MAAMA,EAAMF,SAASM,WAG7BF,EAAKA,MAACF,MACJ,6DAGJ,MAAO,WAwKX,MAAO,CACLQ,iBAtKuBC,MACvBC,EAAoB,CAAEC,YAAa,GAAIC,WAAY,CAAA,WAG9BC,IAAnBH,EAAMI,UACY,MAAlBJ,EAAMI,WACa,IAAnBJ,EAAMI,UAEN5B,EAAKH,KAAK2B,EAAMK,gBAElB,MAAMjB,QAAsBR,EAAc0B,IAAIN,EAAMC,YAAa,CAC/DM,OAAQ,IAAKP,EAAME,YACnBjB,iBAAiB,IAUnB,YANqBkB,IAAnBH,EAAMI,UACY,MAAlBJ,EAAMI,WACa,IAAnBJ,EAAMI,UAEN5B,EAAKF,OAEU,UAAbc,QAE0Be,IAA1BH,EAAMQ,iBACmB,MAAzBR,EAAMQ,iBAENR,EAAMQ,gBAAgBpB,GAEjBA,SAGqBe,IAA1BH,EAAMS,iBACmB,MAAzBT,EAAMS,iBAENT,EAAMS,gBAAgBrB,GAEjB,UAkITsB,kBApFwBX,MACxBC,EAAoB,CAAEC,YAAa,GAAIC,WAAY,CAAE,EAAER,KAAM,CAAA,WAGxCS,IAAnBH,EAAMI,UACY,MAAlBJ,EAAMI,WACa,IAAnBJ,EAAMI,UAEN5B,EAAKH,KAAK2B,EAAMK,gBAElB,IAAIjB,QAAsBR,EAAc+B,KACtCX,EAAMC,YACND,EAAMN,KACN,CACEa,OAAQP,EAAME,aAUlB,YANqBC,IAAnBH,EAAMI,UACY,MAAlBJ,EAAMI,WACa,IAAnBJ,EAAMI,UAEN5B,EAAKF,OAEU,UAAbc,QAE0Be,IAA1BH,EAAMQ,iBACmB,MAAzBR,EAAMQ,iBAENR,EAAMQ,gBAAgBpB,GAEjBA,SAGqBe,IAA1BH,EAAMS,iBACmB,MAAzBT,EAAMS,iBAENT,EAAMS,gBAAgBrB,GAEjB,UA8CTwB,oBA3C0Bb,MAC1BC,EAAoB,CAAEC,YAAa,GAAIC,WAAY,CAAA,WAG9BC,IAAnBH,EAAMI,UACY,MAAlBJ,EAAMI,WACa,IAAnBJ,EAAMI,UAEN5B,EAAKH,KAAK2B,EAAMK,gBAElB,IAAIjB,QAAsBR,EAAciC,OAAOb,EAAMC,YAAa,CAChEM,OAAQ,IACHP,EAAME,cAUb,YANqBC,IAAnBH,EAAMI,UACY,MAAlBJ,EAAMI,WACa,IAAnBJ,EAAMI,UAEN5B,EAAKF,OAEU,UAAbc,QAE0Be,IAA1BH,EAAMQ,iBACmB,MAAzBR,EAAMQ,iBAENR,EAAMQ,gBAAgBpB,GAEjBA,SAGqBe,IAA1BH,EAAMS,iBACmB,MAAzBT,EAAMS,iBAENT,EAAMS,gBAAgBrB,GAEjB,UAOT0B,0BAhIgCf,MAChCC,EAAoB,CAAEC,YAAa,GAAIC,WAAY,CAAE,EAAER,KAAM,CAAA,WAGxCS,IAAnBH,EAAMI,UACY,MAAlBJ,EAAMI,WACa,IAAnBJ,EAAMI,UAEN5B,EAAKH,KAAK2B,EAAMK,gBAElB,MAAMjB,QAAsBR,EAAc+B,KACxCX,EAAMC,YACND,EAAMN,KACN,CACEqB,aAAc,SAUlB,YANqBZ,IAAnBH,EAAMI,UACY,MAAlBJ,EAAMI,WACa,IAAnBJ,EAAMI,UAEN5B,EAAKF,OAEU,UAAbc,QAE0Be,IAA1BH,EAAMQ,iBACmB,MAAzBR,EAAMQ,iBAENR,EAAMQ,gBAAgBpB,GAEjBA,SAGqBe,IAA1BH,EAAMS,iBACmB,MAAzBT,EAAMS,iBAENT,EAAMS,gBAAgBrB,GAEjB,YC3HP4B,GAAmBjE,EAAAA,YAAY,CACnCC,KAAM,2BAR+B,CACrCY,MAAO,CACLqD,gBAAiB,KACjBC,YAAa,KAOfjE,SAAU,CACRkE,iBAAkB,CAAChE,EAAOC,KACxBD,EAAMS,MAAQR,EAAOC,SAEvB+D,mBAAqBjE,IACnBA,EAAMS,MAAQ,CACZqD,iBAAiB,EACjBC,YAAa,QAMRG,GAAqBL,GAAiBxD,QACnD,IAAe8D,GAAAN,GAAiBtD,0sZCjDzB,MCDD6D,GAAY,CAChBC,GAAI,CAAEC,YDAqB,IACxBC,MACAC,wqaCDHC,GAAI,CAAEH,YCDoB,IACvBC,MACAG,qoaCHLC,EAAKzC,IAAI0C,oBAAkBC,KAAK,CAC9BT,UAAWA,GACXU,IAAKtF,aAAaC,QAAQ,aAAe,KACzCsF,YAAa,OAGR,MCQMC,GAAyBnC,IACpC,MAAOoC,EAAMC,GAAWpG,EAAAA,UAAkB,IACpCqG,EAAEA,GAAMC,mBAiCd,MAAO,CAAEC,mBAhC4B,IAEjCC,EAAAA,KAACC,EAAAA,OAAM,CAACN,KAAMA,YACZO,MAACC,EAAAA,sBAAa5C,EAAM6C,QACpBF,EAAAA,IAACG,EAAaA,cAAA,CAAAC,SACZJ,MAACK,EAAiBA,kBAAA,CAAAD,SAAE/C,EAAMiD,SAE5BR,EAAAA,KAACS,EAAAA,cAAa,CAAAH,SAAA,CACZJ,MAACQ,EAAMA,OAAA,CACLC,QAAQ,YACRC,MAAM,UACNC,QAAS,KACPjB,GAAQ,IACTU,SAEAT,EAAE,cAELK,MAACQ,SAAM,CACLC,QAAQ,YACRC,MAAM,QACNC,QAAS,KACPtD,EAAMuD,uBACNlB,GAAQ,IAEVmB,WAAS,EAAAT,SAERT,EAAE,qBAMgBF,OAAMC,YClD/BoB,GAAa,KACjB,MAAMC,EAAchF,EAAWA,aAAEvB,GAAeA,EAAMuG,cAChDC,EAAWD,EAAY9F,MAc7B,MAAO,CAAE8F,cAAaE,iBAbIC,IACxB,GAAIH,GAAa9F,OAAOsD,YACtB,IAAK,IAAI4C,KAAoBJ,EAAY9F,MAAMsD,YAC7C,GACkC,sBAAhC4C,GAAkBC,WAClBD,GAAkBC,YAAcF,EAEhC,OAAO,EAIb,OAAO,GAE+BF,aCS7BK,GAAahE,IACxB,MAAOiE,EAAaC,GAAkBjI,EAAAA,UAAS,GA6E/C,MAAO,CAAEgI,cAAaC,iBAAgBC,OA3ECC,GAEnCzB,EAAA0B,IAACC,EAAKA,MAAA,CACJlC,KAAM6B,EACNM,GAAI,CAAEC,OAASC,GAAUA,EAAMD,OAAOE,QACtCC,QAAS,MACFV,GAAejE,GAAO4E,iBACzB5E,EAAM4E,mBAIV7B,SAAAN,EAAAA,KAACoC,EAAGA,IAAA,CACFN,GAAI,CACFO,SAAU,WACVC,IAAK,MACLC,KAAM,MACNC,UAAW,MACXC,UAAW,wBACXC,OAAQnF,GAAOmF,QAAU,MACzBC,MAAOpF,GAAOoF,OAAS,MACvBC,SAAUrF,EAAMqF,UAAY,IAC5BC,UAAWtF,EAAMsF,WAAa,IAC9BC,SAAU,SACVC,QAAS,uBACTC,QAAS,OACTC,cAAe,SACfC,WAAY,SACZC,eAAgB,cACjB7C,SAAA,CAEDJ,MAACkD,EAAAA,OAAO,CAAAf,SAAS,SAAQ/B,SACvBN,EAAAA,KAACqD,EAAOA,SAAC1C,QAAQ,QAAOL,SAAA,CACtBJ,MAACoD,kBAAe,CACdC,KAAMhG,GAAOiG,YAAc,kBAC3B7K,MAAO,CAAE8K,YAAa,KAExBvD,EAAC0B,IAAA8B,aAAW,CAAA/C,QAAQ,KAAKC,MAAM,UAAU+C,UAAU,MAChDrD,SAAA/C,GAAOqG,aAAe,WAEzB1D,EAAAA,IAAA,MAAA,CAAKvH,MAAO,CAAEkL,SAAU,KACxB3D,MAAC4D,aAAU,CACTjD,QAAS,KACPY,GAAe,GAEY/D,MAAzBH,EAAM4E,iBACmB,MAAzB5E,EAAM4E,iBAEN5E,EAAM4E,mBAGVvB,MAAM,qBAENV,EAAAA,IAACoD,EAAAA,iBAAgBC,KAAK,wBAI5BrD,EAAAA,IAAC6D,EAAAA,MAAK,CACJjC,GAAI,CAEFkB,QAAS,OACTC,cAAe,SACfC,WAAY,SACZP,MAAO,OACPD,OAAQ,OACRsB,QAAS,EAETlB,SAAU,UACXxC,SAEAqB,GAAarB,kBCvEpB2D,GAAmB3J,EAAAA,YAAY,CACnCC,KAAM,cACNP,aAP6D,CAC7DkK,OAAQ,CAAE,EACVC,UAAW,IAMX3J,SAAU,CACR4J,kBAAmB,CAAC1J,EAAOC,KACzBD,EAAMwJ,OAASvJ,EAAOC,QACtBF,EAAMyJ,UAAYE,OAAOC,KAAK3J,EAAOC,UAEvC2J,aAAc,CAAC7J,EAAOC,KACpBD,EAAMwJ,OAAOvJ,EAAOC,QAAQ4J,UAAUvH,KAAOtC,EAAOC,QAAQqC,UAKrDsH,aAAEA,GAAYH,kBAAEA,IAAsBH,GAAiBlJ,QACpE,IAAe0J,GAAAR,GAAiBhJ,QCpBhC,MAAMyJ,GACJC,IAEA,MAAMC,EAAe3I,EAAAA,aAAavB,GAAeA,EAAMmK,aAAaX,SAC9DxI,EAAWC,EAAAA,cACXmJ,EAAU9D,MACV3D,iBAAEA,EAAgBY,kBAAEA,EAAiBE,oBAAEA,GAC3CrC,KA0FF,MAAO,CAAEiJ,WAzFUzH,MAAOQ,IACxB,GAAI6G,GAAiBK,eAAgB,CACnC,MAAMb,EAAYE,OAAOC,KAAKM,GAC9B,IAAK,MAAMJ,KAAYL,EACrB,GAAIK,IAAaG,EAAgBK,sBAEUtH,IAAtCkH,EAAaJ,IAAWlD,WACe,OAAtCsD,EAAaJ,IAAWlD,WACxBwD,EAAQ3D,iBAAiByD,EAAaJ,IAAWlD,aACpB,IAA/BsD,EAAaJ,IAAWS,IACxB,OACM5H,EAAiB,CACrBG,YAAaoH,EAAaJ,GAAUS,IACpCtH,UAAU,EACVI,gBAAkBpB,IAChBjB,EAAS6I,GAAa,CAAEC,WAAUvH,KAAMN,EAASM,QACjD0H,EAAgBO,QAAQvI,EAASM,OAEnCe,gBAAiB,KACftC,EAAS6I,GAAa,CAAEC,WAAUvH,KAAM,MACxC0H,EAAgBO,QAAQ,OAG5B,YAIGP,GAAiBQ,eACpB9H,EAAiB,CACrBG,YAAamH,EAAgBQ,QAC7BxH,UAAU,EACVF,WAAYK,GAAU,CAAE,EACxBC,gBAAkBpB,IAChBgI,EAAgBO,QAAQvI,EAASM,UAwDpBmI,eArCE9H,MAAO+H,IAC5B,IAAIC,EAAc,KAClB,GAAIX,GAAiBY,SAAU,CAC7B,MAAM9H,EAAkB,CAAE,EAE1BA,EADyBkH,GAAiBa,mBAAqB,MAChCH,QACzBhI,EAAiB,CACrBG,YAAamH,EAAgBY,SAC7B5H,UAAU,EACVF,aACAM,gBAAkBpB,IAChB2I,EAAS3I,EAASM,QAIxB,OAAOqI,GAsB4BG,WAnDlBnI,MAAOgI,IACxB,IAAII,EAAc,KAWlB,OAVIf,GAAiBgB,YACb1H,EAAkB,CACtBT,YAAamH,EAAgBgB,KAC7B1I,KAAMqI,EACN3H,UAAU,EACVI,gBAAkBpB,IAChB+I,EAAc/I,EAASM,QAItByI,GAuCwCE,iBApBxBtI,MAAO+H,IAC9B,IAAIQ,GAAS,EACb,GAAIlB,GAAiBmB,WAAY,CAC/B,MAAMrI,EAAkB,CAAE,EAE1BA,EADyBkH,GAAiBoB,qBAAuB,MAClCV,QACzBlH,EAAoB,CACxBX,YAAamH,EAAgBmB,WAC7BnI,UAAU,EACVF,aACAM,gBAAiB,KACf8H,GAAS,GAEX7H,gBAAiB,KACf6H,GAAS,KAIf,OAAOA,KCnHLG,GACJzI,IAEA,MAAMsC,EAAEA,GAAMC,mBACd,OACEI,MAAC+F,EAAAA,cACK1I,EACJ2I,UAAW,CAAEC,WAAY,CAAEC,QAAQ,IACnCC,MAAOnG,EAAG0B,IAAA0E,WAAA,CAAAhG,SAAA/C,GAAO8I,MAAQxG,EAAEtC,EAAM8I,OAAS,QCChD,SAASE,GAAIC,EAAGC,GACd,OAAOD,EAAEE,QAAQvL,QAAUsL,EAAEE,QAAQxL,IACvC,CAEA,SAASyL,GAAaJ,EAAGC,GACvB,OAAOD,EAAEE,QAAQvL,QAAUsL,EAAEE,QAAQxL,IACvC,CAcM,MAAA0L,GAA4C,EAChDC,aAAa,KACbC,eAAe,OACfC,UAAU,GACVC,kBAAkB,GAClBC,mBAEA,MAAOC,EAASC,GAAcC,GAAM7N,SAAS,KACtC+I,EAAM+E,GAAWD,GAAM7N,SAAqB,KAC5C+N,EAAOC,GAAYH,GAAM7N,SAAqB,KAC9CiO,EAAiBC,GAAsBL,GAAM7N,SAAiB,KAC9DmO,EAAkBC,GAAuBP,GAAM7N,SAAiB,IAEjEqO,EAAcjB,GAAaO,EAAS5E,GACpCuF,EAAelB,GAAaO,EAASI,GAE3CF,GAAM1N,WAAU,KACVqN,GACFM,EAAQ,IAAIN,MAEb,CAACA,IACJK,GAAM1N,WAAU,KACVsN,GACJO,EAAS,IAAIP,MAEZ,CAACA,IAEJ,MAAMc,EAAgB5M,GAAU,KAC9B,MAAM6M,EAAeb,EAAQR,QAAQxL,GAC/B8M,EAAa,IAAId,IAEF,IAAjBa,EACFC,EAAWC,KAAK/M,GAEhB8M,EAAWE,OAAOH,EAAc,GAGlCZ,EAAWa,IAGPG,EAAmBC,GAAUzB,GAAaO,EAASkB,GAAOC,OAE1DC,EAAmBF,GAAU,KAtDrC,IAAe7B,EAAGC,EAuDV2B,EAAgBC,KAAWA,EAAMC,OACnClB,EAAWb,GAAIY,EAASkB,IAExBjB,GA1DSZ,EA0DQW,EA1DLV,EA0Dc4B,EAzDvB,IAAI7B,KAAMD,GAAIE,EAAGD,OAiFlBgC,EAAa,CACjBpI,EACAqI,EACAC,KAEA,MAAML,EAAQI,EAAgB/B,QAAQiC,IAEpC,GAAIA,EAAO5B,GAAe,CACxB,MAAM5L,EAAgBwN,EAAO5B,GAC7B,GACW,SAAT2B,GACAvN,EACGyN,oBACAC,SAASpB,EAAgBmB,qBAE5B,OAAO,EACF,GACI,UAATF,GACAvN,EACGyN,oBACAC,SAASlB,EAAiBiB,qBAE7B,OAAO,EAGX,OAAO,KAET,OACE5I,EAAAA,KAAC8I,EAAI,CAAChH,GAAI,CAAEY,OAAQ,QAAQpC,SAAA,CAC1BJ,MAAC6I,EAAU,CACTjH,GAAI,CAAEkH,GAAI,EAAGC,GAAI,GACjBC,OACEhJ,EAAAA,IAACiJ,EAAQ,CACPtI,QAAS0H,EAAgBF,GACzBlB,QACEiB,EAAgBC,KAAWA,EAAMC,QAA2B,IAAjBD,EAAMC,OAEnDc,cACEhB,EAAgBC,KAAWA,EAAMC,QACN,IAA3BF,EAAgBC,GAElBgB,SAA2B,IAAjBhB,EAAMC,OAChBgB,WAAY,CACV,aAAc,wBAIpBlJ,MAAOA,EACPmJ,UAAW,GAAGnB,EAAgBK,QAC5BA,EAAgBH,oBAGpBpI,EAAAA,IAACkC,EAAGA,IAAA,CAACN,GAAI,CAAEa,MAAO,OAAQqB,QAAS,GACjC1D,SAAAJ,EAAAA,IAAC8F,GAAiB,CAChBwD,WAAS,EACTnD,MAAM,SACNlL,MAAgB,SAATuN,EAAkBjB,EAAkBE,EAC3C8B,SAAWC,IACI,SAAThB,EACFhB,EAAmBgC,EAAMC,OAAOxO,OAEhCyM,EAAoB8B,EAAMC,OAAOxO,YAKzC+E,EAAAA,IAAC0J,EAAU,CAAA,GACX1J,EAAC0B,IAAAiI,EACC,CAAA/H,GAAI,CACFa,MAAO,OACPD,OAAQ,OACRK,QAAS,YACTD,SAAU,QAEZgH,OACA,EAAAnG,UAAU,MACVoG,KAAK,OAAMzJ,SAEV+H,EAAM2B,KAAK7O,IACgCA,EAAM2L,GAG9C9G,EAAAiK,KAACC,iBAAc,CAEbH,KAAK,WACLlJ,QAASkH,EAAa5M,GACtB2G,GAAI,CAAEqI,OAAQ,WAEd7J,SAAA,CAAAJ,EAAA0B,IAACwI,EACC,CAAA9J,SAAAJ,EAAAA,IAACiJ,EAAQ,CACPhC,SAAoC,IAA3BA,EAAQR,QAAQxL,GACzBkP,YACAC,eAAa,MAGjBpK,EAAA0B,IAAC2I,EAAY,CACXC,GAAIrP,EAAM2L,GACV2D,QAAStP,EAAM4L,OAdZ5L,EAAM2L,aAuBzB,OACE9G,EAAAA,KAAC0K,EAAAA,MACC,CAAAC,WACA,EAAAC,QAAS,EACT9I,GAAI,CACF+B,SAAU,EACVf,SAAU,OACV+H,OAAQ,EACR7H,QAAS,OACTL,MAAO,QAETQ,eAAe,SACfD,WAAW,SAEX5C,SAAA,CAAAJ,EAAAA,IAACwK,EAAKA,MAAA,CAAC5I,GAAI,CAAEY,OAAQ,OAAQoI,KAAM,YAChCtC,EAAW,kBAAmBjG,EAAM,UAEvCrC,EAAAA,IAACwK,EAAKA,MACJ,CAAApK,SAAAN,OAAC0K,EAAAA,MAAK,CAACC,WAAS,EAACI,UAAU,SAAS7H,WAAW,SAC7C5C,SAAA,CAAAJ,EAAAA,IAACQ,EACC,CAAAoB,GAAI,CAAEkJ,GAAI,IACVrK,QAAQ,WACRsK,KAAK,QACLpK,QArJiB,KACzB2G,GAAU0D,IACR,IAAIC,EAAW5D,EAAM6D,OAAOvD,GAE5B,OADAX,EAAaiE,GACNA,KAET7D,EAAQf,GAAIhE,EAAMsF,IAClBT,EAAWb,GAAIY,EAASU,KA+IhBwB,SAAiC,IAAvBxB,EAAYS,OACX,aAAA,sBAGJhI,SAAA,MACTJ,EAAAA,IAACQ,EACC,CAAAoB,GAAI,CAAEkJ,GAAI,IACVrK,QAAQ,WACRsK,KAAK,QACLpK,QArJgB,KACxByG,EAAQ/E,EAAK6I,OAAOtD,IACpBN,GAAU0D,IACR,IAAIC,EAAW5E,GAAIgB,EAAOO,GAE1B,OADAZ,EAAaiE,GACNA,KAET/D,EAAWb,GAAIY,EAASW,KA+IhBuB,SAAkC,IAAxBvB,EAAaQ,OACZ,aAAA,yCAMjBpI,EAAA0B,IAAC8I,QAAM,CAAA5I,GAAI,CAAEY,OAAQ,OAAQoI,KAAM,GAAGxK,SACnCkI,EAAW,qBAAsBjB,EAAO,eCtP3C8D,GAA2C9N,GAE7C2C,EAAAA,IAACoL,EAAAA,SACC,CAAAC,QAAShO,EAAMN,KACfuO,MAAO,CACL,CACEC,QAASlO,EAAMuJ,WACf4E,UAAW,OACXrF,MAAO9I,EAAMoO,aAGjBC,OAAQrO,EAAMsO,YAAYC,MAAM,KAAK9B,KAAK6B,IACjC,CAAEJ,QAASI,EAAYxF,MAAOwF,QCZvCE,GAAuDxO,GAEzDyC,EAAAiK,KAAClG,QAAK,CACJjC,GAAI,CACFkB,QAAS,OACTC,cAAe,SACfP,OAAQ,IACRsB,QAAS,EACTH,SAAU,EACVV,eAAgB,SAChBD,WAAY,UACb5C,SAAA,CAEDJ,EAAAA,IAACkC,EAAGA,IACF,CAAAN,GAAI,CACFkB,QAAS,OACTL,MAAO,OACPQ,eAAgB,eAChBD,WAAY,UACb5C,SAEDJ,sBAAM3C,EAAM+H,OAAO/H,EAAMuJ,gBAE3B5G,EAAA0B,IAAC8B,EAAUA,WAAC,CAAA5B,GAAI,CAAEkK,SAAU,GAAIC,WAAY,iBACzC1O,EAAM+H,OAAO/H,EAAMsO,iBCxBtBK,GAAoD3O,GAEtDyC,EAAAA,KACEsG,EAAAA,SAAA,CAAAhG,SAAA,CAAAJ,MAACwD,EAAAA,WAAU,CAAC5B,GAAI,CAAEkK,SAAU,GAAIC,WAAY,QACzC3L,SAAA/C,EAAM+H,OAAO/H,EAAMsO,cAEtB3L,EAAAA,IAACiM,EAAAA,MACC,CAAAxJ,MAAO,IACPD,OAAQ,IACRvH,MAAOoC,EAAM+H,OAAO/H,EAAMuJ,YAC1BsF,SAAU7O,EAAM8O,WCXlBC,GAA4C/O,GAE9C2C,EAAAA,IAACqM,EAAAA,UACC,CAAAhB,QAAShO,EAAMN,KACfuO,MAAO,CACL,CACEC,QAASlO,EAAMuJ,WACf4E,UAAW,OACXrF,MAAO9I,EAAMoO,aAGjBC,OAAQrO,EAAMsO,YAAYC,MAAM,KAAK9B,KAAK6B,IACjC,CAAEJ,QAASI,EAAYxF,MAAOwF,QCP7C,SAASW,GACPjP,GAEA,OACEyC,EAACiK,KAAA7H,EAAI,CAAAN,GAAI,CAAEkB,QAAS,OAAQE,WAAY,UAAU5C,SAAA,CAChDJ,EAAAA,IAACkC,EAAG,CAACN,GAAI,CAAEa,MAAO,OAAQ8J,GAAI,GAC5BnM,SAAAJ,MAACwM,EAAe,CAAA/L,QAAQ,iBAAkBpD,MAE5C2C,EAAAA,IAACkC,EAAI,CAAAN,GAAI,CAAEc,SAAU,IAAItC,SACvBJ,MAACwD,EAAU,CACT/C,QAAQ,QACRmB,GAAI,CAAElB,MAAO,2BACb,GAAG+L,KAAKC,MAAMrP,EAAMpC,gBAI9B,CAEA,MAAM0R,GACJtP,GAGEyC,EAAAA,KAACoC,EAAG,CAACN,GAAI,CAAEa,MAAO,QAAQrC,SAAA,CACxBJ,EAAC0B,IAAA8B,EAAW,CAAA5B,GAAI,CAAEkK,SAAU,GAAIC,WAAY,QACzC3L,SAAA/C,EAAM+H,OAAO/H,EAAMsO,cAEtB3L,MAACsM,GAAuB,CACtBrR,MAAcoC,EAAM+H,OAAO/H,EAAMuJ,YAAcvJ,EAAM8O,MAA9C,SChCTS,GAA2CvP,IAE/C,MAAMwP,EAAYxP,EAAMN,KAAK+M,KAAI,CAAC1E,EAAa0H,KACtC,CACLxC,GAAIwC,EACJ7R,MAAOmK,EAAO/H,EAAMuJ,YACpBT,MAAOf,EAAO/H,EAAMsO,YAAc,OAGtC,OACE3L,EAAA0B,IAACqL,WAAQ,CACPrB,OAAQ,CACN,CACE3O,KAAM8P,OCFVG,GAAqC3P,IACzC,MAAMsC,EAAEA,GAAMC,mBACd,OACEI,EAAC0B,IAAAuL,mBACC,CAAArL,GAAIvE,EAAMuE,GACVuH,SAAU9L,EAAM8L,WAAY,EAC5B+D,SAAU7P,EAAM6P,WAAY,EAC5BC,QACEnN,MAACiJ,EAAAA,SACC,CAAAhC,QACE5J,GAAO+P,cAAgB/P,EAAMpC,OACb,SAAhBoC,EAAMpC,OACS,KAAfoC,EAAMpC,MAIRsO,SAAW8D,SAEoB7P,IAA3BH,EAAMiQ,kBACoB,MAA1BjQ,EAAMiQ,mBAEFD,EAAE5D,OAAOxC,aAEczJ,IAAvBH,EAAM+P,cACgB,MAAtB/P,EAAM+P,aAEN/P,EAAMiQ,iBAAiBjQ,EAAM+P,cAE7B/P,EAAMiQ,kBAAiB,QAIE9P,IAAzBH,EAAMkQ,gBACkB,MAAxBlQ,EAAMkQ,eAENlQ,EAAMiQ,iBAAiBjQ,EAAMkQ,gBAE7BlQ,EAAMiQ,kBAAiB,OAOnCnH,MAAOxG,EAAEtC,EAAM8I,UCzCfqH,GAAqCnQ,IACzC,MAAMoQ,EAAiB1R,EAAWA,aAAEvB,GAAeA,EAAMkT,aACnD/N,EAAEA,GAAMC,mBASd,OACEI,EAAC0B,IAAAiM,EAAYA,aACX,CAAA/L,GAAIvE,EAAMuE,GACV3G,MAXa,CAAC2S,IAChB,IAAK,IAAInF,KAAUpL,EAAMyJ,QACvB,GAAI2B,EAAOpL,EAAMuJ,aAAegH,EAC9B,OAAOnF,EAGX,OAAO,MAKEoF,CAASxQ,EAAMpC,OACtB6L,QAASzJ,EAAMyJ,QACfqC,SAAU9L,EAAM8L,SAChBI,SAAU,CAACC,EAAOsE,KAChB,QAC6BtQ,IAA3BH,EAAMiQ,kBACoB,MAA1BjQ,EAAMiQ,iBAEN,GAAgB,MAAZQ,EAAkB,CACpB,IAAIF,EAAIE,EAASzQ,EAAMuJ,YACvBvJ,EAAMiQ,iBAAiBM,EAAGE,QAE1BzQ,EAAMiQ,iBAAiB,KAAM,OAInCS,aAAW,EACXC,mBAAiB,EACjBC,eAAiBxF,GACE,MAAVA,EAAiB9I,EAAE8I,EAAOpL,EAAMwJ,eAAiB,GAE1DqH,aAAc,CAACC,EAAQ1F,IAEnBzI,EAAQ0B,IAAA,KAAA,IAAAyM,EACL/N,SAAU,MAAVqI,EAAiB9I,EAAE8I,EAAOpL,EAAMwJ,eAAiB,KAIxDuH,MAAO,CACLC,OAAShR,GACP2C,EAAAA,IAACsO,EAAAA,OACK,IAAAjR,EACJ5E,MAAO,IAAK4E,EAAM5E,MAAOoS,UAAW4C,EAAevT,iBAIzDqU,YAAc3Q,GAEVoC,MAAC+F,EAAAA,UAAS,IACJnI,EACJsP,SAAU7P,EAAM6P,WAAY,EAC5BzM,QAAQ,WACR+N,gBAAiB,CAAEtI,QAAQ,GAC3BC,MAAOxG,EAAEtC,EAAM8I,OACfxJ,MACwB,MAAtBU,EAAMoR,mBAA+CjR,IAAvBH,EAAMoR,aAItCC,WACwB,MAAtBrR,EAAMoR,mBAA+CjR,IAAvBH,EAAMoR,aAChC9O,EAAEtC,EAAMoR,cACR,QCnFLE,GAAc,aACdC,GAAmB,sBACnBC,GAAiC,UACjCC,GAAsC,UACtCC,GAAgC,UAChCC,GAAqC,UCa5CC,GAAuC5R,IAC3C,MAAMsC,EAAEA,GAAMC,mBACd,OACEI,EAAAA,IAACkP,EAAAA,qBAAoB,CAACC,YAAaC,EAAAA,cAAahP,SAC9CJ,EAAC0B,IAAA2N,aACC,CAAApU,MACiB,MAAfoC,EAAMpC,YAAiCuC,IAAhBH,EAAMpC,OAAuC,KAAhBoC,EAAMpC,MACtDqU,EAAOjS,EAAMpC,MAAOoC,GAAOkS,QAAUZ,IACrC,KAEN/M,GAAIvE,EAAMuE,GACVuE,MAAOxG,EAAEtC,EAAM8I,OACfoJ,OAAQlS,GAAOkS,QAAUZ,GACzBxF,SAAU9L,EAAM8L,SAChBI,SAAWiG,IACT,IAAI5B,EAAI,KACW,MAAf4B,GAAuBA,EAAYC,YACrC7B,EAAI4B,EAAYD,OAAOlS,GAAOkS,QAAUZ,UAGbnR,IAA3BH,EAAMiQ,kBACoB,MAA1BjQ,EAAMiQ,kBAENjQ,EAAMiQ,iBAAiBM,IAG3B5H,UAAW,CACT0J,UAAW,CACTlB,gBAAiB,CAAEtI,QAAQ,GAC3BzF,QAAS,WACTyM,SAAU7P,EAAM6P,SAChBvQ,WACyBa,IAAvBH,EAAMoR,cAAoD,MAAtBpR,EAAMoR,aAC5CC,gBACyBlR,IAAvBH,EAAMoR,cAAoD,MAAtBpR,EAAMoR,aACxCzO,EAAAA,IAAAoG,EAAAuJ,SAAA,CAAAvP,SAAGT,EAAEtC,EAAMoR,gBAEXzO,4BCrCV4P,GAA+CvS,IACnD,MAAMsC,EAAEA,GAAMC,mBACd,OACEI,EAAAA,IAACkP,EAAAA,qBAAoB,CAACC,YAAaC,EAAAA,cAAahP,SAC9CJ,EAAC0B,IAAAmO,iBACC,CAAA5U,MACiB,MAAfoC,EAAMpC,YAAiCuC,IAAhBH,EAAMpC,OAAuC,KAAhBoC,EAAMpC,MACtDqU,EAAOjS,EAAMpC,MAAOoC,GAAOkS,QAAUX,IACrC,KAENzI,MAAOxG,EAAEtC,EAAM8I,OACfvE,GAAIvE,EAAMuE,GACV2N,OAAQlS,GAAOkS,QAAUX,GACzBzF,SAAU9L,EAAM8L,SAChBI,SAAWiG,IACT,IAAI5B,EAAI,KACW,MAAf4B,GAAuBA,EAAYC,YACrC7B,EAAI4B,EAAYD,OAAOlS,GAAOkS,QAAUX,UAGbpR,IAA3BH,EAAMiQ,kBACoB,MAA1BjQ,EAAMiQ,kBAENjQ,EAAMiQ,iBAAiBM,IAG3B5H,UAAW,CACT0J,UAAW,CACTjP,QAAS,WACTyM,SAAU7P,EAAM6P,SAChBvQ,WACyBa,IAAvBH,EAAMoR,cAAoD,MAAtBpR,EAAMoR,aAC5CC,gBACyBlR,IAAvBH,EAAMoR,cAAoD,MAAtBpR,EAAMoR,aACxCzO,EAAAA,IAAAoG,EAAAuJ,SAAA,CAAAvP,SAAGT,EAAEtC,EAAMoR,gBAEXzO,4BC5CD,SAAS8P,GAAsBC,KAASC,GACrD,MAAMjL,EAAM,IAAIkL,IAAI,0CAA0CF,KAE9D,OADAC,EAAKE,SAAQC,GAAOpL,EAAIqL,aAAaC,OAAO,SAAUF,KAC/C,uBAAuBJ,YAAehL,yBAC/C;;;;;;;;kCCZ6B,eAAzBuL,QAAQC,IAAIC,SACdC,GAAAC,wCCMW,IAAInK,EAAE,mBAAoBoK,QAAQA,OAAOC,IAAIC,EAAEtK,EAAEoK,OAAOC,IAAI,iBAAiB,MAAME,EAAEvK,EAAEoK,OAAOC,IAAI,gBAAgB,MAAMvD,EAAE9G,EAAEoK,OAAOC,IAAI,kBAAkB,MAAMG,EAAExK,EAAEoK,OAAOC,IAAI,qBAAqB,MAAMI,EAAEzK,EAAEoK,OAAOC,IAAI,kBAAkB,MAAMK,EAAE1K,EAAEoK,OAAOC,IAAI,kBAAkB,MAAMM,EAAE3K,EAAEoK,OAAOC,IAAI,iBAAiB,MAAMO,EAAE5K,EAAEoK,OAAOC,IAAI,oBAAoB,MAAMQ,EAAE7K,EAAEoK,OAAOC,IAAI,yBAAyB,MAAMS,EAAE9K,EAAEoK,OAAOC,IAAI,qBAAqB,MAAMU,EAAE/K,EAAEoK,OAAOC,IAAI,kBAAkB,MAAMW,EAAEhL,EACpfoK,OAAOC,IAAI,uBAAuB,MAAMY,EAAEjL,EAAEoK,OAAOC,IAAI,cAAc,MAAMjR,EAAE4G,EAAEoK,OAAOC,IAAI,cAAc,MAAMhD,EAAErH,EAAEoK,OAAOC,IAAI,eAAe,MAAMa,EAAElL,EAAEoK,OAAOC,IAAI,qBAAqB,MAAMc,EAAEnL,EAAEoK,OAAOC,IAAI,mBAAmB,MAAMe,EAAEpL,EAAEoK,OAAOC,IAAI,eAAe,MAClQ,SAASgB,EAAEtL,GAAG,GAAG,iBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAIuL,EAAEvL,EAAEwL,SAAS,OAAOD,GAAG,KAAKhB,EAAE,OAAOvK,EAAEA,EAAE3N,MAAQ,KAAKwY,EAAE,KAAKC,EAAE,KAAK/D,EAAE,KAAK2D,EAAE,KAAKD,EAAE,KAAKO,EAAE,OAAOhL,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAEwL,UAAY,KAAKZ,EAAE,KAAKG,EAAE,KAAK1R,EAAE,KAAK6R,EAAE,KAAKP,EAAE,OAAO3K,EAAE,QAAQ,OAAOuL,GAAG,KAAKf,EAAE,OAAOe,EAAE,CAAC,CAAC,SAASE,EAAEzL,GAAG,OAAOsL,EAAEtL,KAAK8K,CAAC,QAACY,GAAiBC,UAACd,EAAEa,GAAAE,eAAuBd,EAAEY,GAAuBG,gBAACjB,EAAEc,mBAAwBf,EAAEe,GAAAI,QAAgBvB,EAAEmB,GAAkBK,WAAChB,EAAEW,GAAArC,SAAiBtC,EAAE2E,GAAYM,KAAC3S,EAAEqS,QAAaR,EAAEQ,GAAAO,OAAezB,EAChfkB,GAAAQ,SAAiBxB,EAAEgB,GAAAS,WAAmB1B,EAAEiB,GAAAU,SAAiBpB,EAAEU,GAAAW,YAAoB,SAASrM,GAAG,OAAOyL,EAAEzL,IAAIsL,EAAEtL,KAAK6K,CAAC,EAAEa,GAAwBY,iBAACb,EAAEC,GAAyBa,kBAAC,SAASvM,GAAG,OAAOsL,EAAEtL,KAAK4K,CAAC,EAAEc,GAAyBc,kBAAC,SAASxM,GAAG,OAAOsL,EAAEtL,KAAK2K,CAAC,EAAEe,GAAiBe,UAAC,SAASzM,GAAG,MAAM,iBAAkBA,GAAG,OAAOA,GAAGA,EAAEwL,WAAWjB,CAAC,EAAEmB,GAAoBgB,aAAC,SAAS1M,GAAG,OAAOsL,EAAEtL,KAAK+K,CAAC,EAAEW,GAAkBiB,WAAC,SAAS3M,GAAG,OAAOsL,EAAEtL,KAAK+G,CAAC,EAAE2E,GAAckB,OAAC,SAAS5M,GAAG,OAAOsL,EAAEtL,KAAK3G,CAAC,EAC1dqS,GAAAmB,OAAe,SAAS7M,GAAG,OAAOsL,EAAEtL,KAAKkL,CAAC,EAAEQ,YAAiB,SAAS1L,GAAG,OAAOsL,EAAEtL,KAAKwK,CAAC,EAAEkB,GAAkBoB,WAAC,SAAS9M,GAAG,OAAOsL,EAAEtL,KAAK0K,CAAC,EAAEgB,GAAAqB,aAAqB,SAAS/M,GAAG,OAAOsL,EAAEtL,KAAKyK,CAAC,EAAEiB,GAAkBsB,WAAC,SAAShN,GAAG,OAAOsL,EAAEtL,KAAKgL,CAAC,EAChNU,GAAAuB,mBAAC,SAASjN,GAAG,MAAM,iBAAkBA,GAAG,mBAAoBA,GAAGA,IAAI+G,GAAG/G,IAAI8K,GAAG9K,IAAI0K,GAAG1K,IAAIyK,GAAGzK,IAAIgL,GAAGhL,IAAIiL,GAAG,iBAAkBjL,GAAG,OAAOA,IAAIA,EAAEwL,WAAWnS,GAAG2G,EAAEwL,WAAWN,GAAGlL,EAAEwL,WAAWb,GAAG3K,EAAEwL,WAAWZ,GAAG5K,EAAEwL,WAAWT,GAAG/K,EAAEwL,WAAWL,GAAGnL,EAAEwL,WAAWJ,GAAGpL,EAAEwL,WAAWH,GAAGrL,EAAEwL,WAAWlE,EAAE,EAAEoE,GAAcwB,OAAC5B,KDXhT6B,GAEjBhD,GAAAC,mBEQ2B,eAAzBJ,QAAQC,IAAIC,UACd,WAKF,IAAIkD,EAA8B,mBAAX/C,QAAyBA,OAAOC,IACnD+C,EAAqBD,EAAY/C,OAAOC,IAAI,iBAAmB,MAC/DgD,EAAoBF,EAAY/C,OAAOC,IAAI,gBAAkB,MAC7DiD,EAAsBH,EAAY/C,OAAOC,IAAI,kBAAoB,MACjEkD,EAAyBJ,EAAY/C,OAAOC,IAAI,qBAAuB,MACvEmD,EAAsBL,EAAY/C,OAAOC,IAAI,kBAAoB,MACjEoD,EAAsBN,EAAY/C,OAAOC,IAAI,kBAAoB,MACjEqD,EAAqBP,EAAY/C,OAAOC,IAAI,iBAAmB,MAG/DsD,EAAwBR,EAAY/C,OAAOC,IAAI,oBAAsB,MACrEuD,EAA6BT,EAAY/C,OAAOC,IAAI,yBAA2B,MAC/EwD,EAAyBV,EAAY/C,OAAOC,IAAI,qBAAuB,MACvEyD,EAAsBX,EAAY/C,OAAOC,IAAI,kBAAoB,MACjE0D,EAA2BZ,EAAY/C,OAAOC,IAAI,uBAAyB,MAC3E2D,EAAkBb,EAAY/C,OAAOC,IAAI,cAAgB,MACzD4D,EAAkBd,EAAY/C,OAAOC,IAAI,cAAgB,MACzD6D,EAAmBf,EAAY/C,OAAOC,IAAI,eAAiB,MAC3D8D,EAAyBhB,EAAY/C,OAAOC,IAAI,qBAAuB,MACvE+D,EAAuBjB,EAAY/C,OAAOC,IAAI,mBAAqB,MACnEgE,EAAmBlB,EAAY/C,OAAOC,IAAI,eAAiB,MAO/D,SAAS4C,EAAOqB,GACd,GAAsB,iBAAXA,GAAkC,OAAXA,EAAiB,CACjD,IAAI/C,EAAW+C,EAAO/C,SAEtB,OAAQA,GACN,KAAK6B,EACH,IAAIhb,EAAOkc,EAAOlc,KAElB,OAAQA,GACN,KAAKub,EACL,KAAKC,EACL,KAAKN,EACL,KAAKE,EACL,KAAKD,EACL,KAAKO,EACH,OAAO1b,EAET,QACE,IAAImc,EAAenc,GAAQA,EAAKmZ,SAEhC,OAAQgD,GACN,KAAKb,EACL,KAAKG,EACL,KAAKI,EACL,KAAKD,EACL,KAAKP,EACH,OAAOc,EAET,QACE,OAAOhD,GAKjB,KAAK8B,EACH,OAAO9B,EAEf,CAGC,CAED,IAAIG,EAAYiC,EACZhC,EAAiBiC,EACjBhC,EAAkB8B,EAClBc,EAAkBf,EAClB5B,EAAUuB,EACVtB,EAAa+B,EACbzE,EAAWkE,EACXvB,EAAOkC,EACPQ,EAAOT,EACPhC,EAASqB,EACTpB,EAAWuB,EACXtB,EAAaqB,EACbpB,EAAW2B,EACXY,GAAsC,EAa1C,SAASrC,EAAiBiC,GACxB,OAAOrB,EAAOqB,KAAYV,CAC5B,CAmCAe,GAAAjD,UAAoBA,EACpBiD,GAAAhD,eAAyBA,EACzBgD,GAAA/C,gBAA0BA,EAC1B+C,GAAAH,gBAA0BA,EAC1BG,GAAA9C,QAAkBA,EAClB8C,GAAA7C,WAAqBA,EACrB6C,GAAAvF,SAAmBA,EACnBuF,GAAA5C,KAAeA,EACf4C,GAAAF,KAAeA,EACfE,GAAA3C,OAAiBA,EACjB2C,GAAA1C,SAAmBA,EACnB0C,GAAAzC,WAAqBA,EACrByC,GAAAxC,SAAmBA,EACnBwC,GAAAvC,YA7DA,SAAqBkC,GASnB,OAPOI,IACHA,GAAsC,EAEtCE,QAAc,KAAE,kLAIbvC,EAAiBiC,IAAWrB,EAAOqB,KAAYX,CACxD,EAoDAgB,GAAAtC,iBAA2BA,EAC3BsC,GAAArC,kBAjDA,SAA2BgC,GACzB,OAAOrB,EAAOqB,KAAYZ,CAC5B,EAgDAiB,GAAApC,kBA/CA,SAA2B+B,GACzB,OAAOrB,EAAOqB,KAAYb,CAC5B,EA8CAkB,GAAAnC,UA7CA,SAAmB8B,GACjB,MAAyB,iBAAXA,GAAkC,OAAXA,GAAmBA,EAAO/C,WAAa6B,CAC9E,EA4CAuB,GAAAlC,aA3CA,SAAsB6B,GACpB,OAAOrB,EAAOqB,KAAYT,CAC5B,EA0CAc,GAAAjC,WAzCA,SAAoB4B,GAClB,OAAOrB,EAAOqB,KAAYhB,CAC5B,EAwCAqB,GAAAhC,OAvCA,SAAgB2B,GACd,OAAOrB,EAAOqB,KAAYL,CAC5B,EAsCAU,GAAA/B,OArCA,SAAgB0B,GACd,OAAOrB,EAAOqB,KAAYN,CAC5B,EAoCAW,GAAAE,SAnCA,SAAkBP,GAChB,OAAOrB,EAAOqB,KAAYjB,CAC5B,EAkCAsB,GAAA9B,WAjCA,SAAoByB,GAClB,OAAOrB,EAAOqB,KAAYd,CAC5B,EAgCAmB,GAAA7B,aA/BA,SAAsBwB,GACpB,OAAOrB,EAAOqB,KAAYf,CAC5B,EA8BAoB,GAAA5B,WA7BA,SAAoBuB,GAClB,OAAOrB,EAAOqB,KAAYR,CAC5B,EA4BAa,GAAA3B,mBAxIA,SAA4B5a,GAC1B,MAAuB,iBAATA,GAAqC,mBAATA,GAC1CA,IAASkb,GAAuBlb,IAASwb,GAA8Bxb,IAASob,GAAuBpb,IAASmb,GAA0Bnb,IAAS0b,GAAuB1b,IAAS2b,GAA4C,iBAAT3b,GAA8B,OAATA,IAAkBA,EAAKmZ,WAAa0C,GAAmB7b,EAAKmZ,WAAayC,GAAmB5b,EAAKmZ,WAAakC,GAAuBrb,EAAKmZ,WAAamC,GAAsBtb,EAAKmZ,WAAasC,GAA0Bzb,EAAKmZ,WAAa4C,GAA0B/b,EAAKmZ,WAAa6C,GAAwBhc,EAAKmZ,WAAa8C,GAAoBjc,EAAKmZ,WAAa2C,EACplB,EAsIAS,GAAA1B,OAAiBA,CACd,CArKD;;;;;qCCNF,IAAI6B,EAAwBlR,OAAOkR,sBAC/BC,EAAiBnR,OAAOoR,UAAUD,eAClCE,EAAmBrR,OAAOoR,UAAUE,4BAsDxCC,GA5CA,WACC,IACC,IAAKvR,OAAOwR,OACX,OAAO,EAMR,IAAIC,EAAQ,IAAIC,OAAO,OAEvB,GADAD,EAAM,GAAK,KACkC,MAAzCzR,OAAO2R,oBAAoBF,GAAO,GACrC,OAAO,EAKR,IADA,IAAIG,EAAQ,CAAE,EACLC,EAAI,EAAGA,EAAI,GAAIA,IACvBD,EAAM,IAAMF,OAAOI,aAAaD,IAAMA,EAKvC,GAAwB,eAHX7R,OAAO2R,oBAAoBC,GAAOjM,KAAI,SAAUuH,GAC5D,OAAO0E,EAAM1E,EAChB,IACa6E,KAAK,IACf,OAAO,EAIR,IAAIC,EAAQ,CAAE,EAId,MAHA,uBAAuBvK,MAAM,IAAIsE,SAAQ,SAAUkG,GAClDD,EAAMC,GAAUA,CACnB,IAEI,yBADEjS,OAAOC,KAAKD,OAAOwR,OAAO,CAAE,EAAEQ,IAAQD,KAAK,GAM/C,CAAC,MAAOG,GAER,OAAO,CACT,CACA,CAEiBC,GAAoBnS,OAAOwR,OAAS,SAAUlM,EAAQ8M,GAKtE,IAJA,IAAIC,EAEAC,EADAC,EAtDL,SAAkBC,GACjB,GAAIA,QACH,MAAM,IAAIC,UAAU,yDAGrB,OAAOzS,OAAOwS,EACf,CAgDUE,CAASpN,GAGTqN,EAAI,EAAGA,EAAIC,UAAU3O,OAAQ0O,IAAK,CAG1C,IAAK,IAAIE,KAFTR,EAAOrS,OAAO4S,UAAUD,IAGnBxB,EAAe2B,KAAKT,EAAMQ,KAC7BN,EAAGM,GAAOR,EAAKQ,IAIjB,GAAI3B,EAAuB,CAC1BoB,EAAUpB,EAAsBmB,GAChC,IAAK,IAAIR,EAAI,EAAGA,EAAIS,EAAQrO,OAAQ4N,IAC/BR,EAAiByB,KAAKT,EAAMC,EAAQT,MACvCU,EAAGD,EAAQT,IAAMQ,EAAKC,EAAQT,IAGnC,CACA,CAEC,OAAOU,CACP,+CC9EDQ,GAF2B,gFCT3BC,GAAiBC,SAASH,KAAKI,KAAKlT,OAAOoR,UAAUD,oDCSrD,IAAIgC,EAAe,WAAa,EAEhC,GAA6B,eAAzBhH,QAAQC,IAAIC,SAA2B,CACzC,IAAI+G,EAA4D9D,KAC5D+D,EAAqB,CAAE,EACvBL,EAA0BM,KAE9BH,EAAe,SAASra,GACtB,IAAI9B,EAAU,YAAc8B,EACL,oBAAZkY,SACTA,QAAQxY,MAAMxB,GAEhB,IAIE,MAAM,IAAIuc,MAAMvc,EACjB,CAAC,MAAOuW,GAAG,CACb,CACH,CAaA,SAASiG,EAAeC,EAAWC,EAAQC,EAAUC,EAAeC,GAClE,GAA6B,eAAzB1H,QAAQC,IAAIC,SACd,IAAK,IAAIyH,KAAgBL,EACvB,GAAIT,EAAIS,EAAWK,GAAe,CAChC,IAAItb,EAIJ,IAGE,GAAuC,mBAA5Bib,EAAUK,GAA8B,CACjD,IAAI5B,EAAMqB,OACPK,GAAiB,eAAiB,KAAOD,EAAW,UAAYG,EAAjE,oGACwFL,EAAUK,GADlG,mGAKF,MADA5B,EAAIhc,KAAO,sBACLgc,CAClB,CACU1Z,EAAQib,EAAUK,GAAcJ,EAAQI,EAAcF,EAAeD,EAAU,KAAMP,EACtF,CAAC,MAAOW,GACPvb,EAAQub,CAClB,CAWQ,IAVIvb,GAAWA,aAAiB+a,OAC9BJ,GACGS,GAAiB,eAAiB,2BACnCD,EAAW,KAAOG,EADlB,kGAEqEtb,EAFrE,kKAQAA,aAAiB+a,SAAW/a,EAAMxB,WAAWqc,GAAqB,CAGpEA,EAAmB7a,EAAMxB,UAAW,EAEpC,IAAIgd,EAAQH,EAAWA,IAAa,GAEpCV,EACE,UAAYQ,EAAW,UAAYnb,EAAMxB,SAAoB,MAATgd,EAAgBA,EAAQ,IAExF,CACA,CAGA,QAOAR,EAAeS,kBAAoB,WACJ,eAAzB9H,QAAQC,IAAIC,WACdgH,EAAqB,CAAE,EAE3B,EAEAa,GAAiBV,qCC7FjB,IAAIW,EAAU7E,KACVkC,EAAS8B,KAETF,EAA4DgB,KAC5DpB,EAA0BqB,KAC1Bb,EAA4Cc,KAE5CnB,EAAe,WAAa,EAiBhC,SAASoB,IACP,OAAO,IACT,OAjB6B,eAAzBpI,QAAQC,IAAIC,WACd8G,EAAe,SAASra,GACtB,IAAI9B,EAAU,YAAc8B,EACL,oBAAZkY,SACTA,QAAQxY,MAAMxB,GAEhB,IAIE,MAAM,IAAIuc,MAAMvc,EACjB,CAAC,MAAOuW,GAAG,CACb,GAOHiH,GAAiB,SAASC,EAAgBC,GAExC,IAAIC,EAAoC,mBAAXnI,QAAyBA,OAAOoI,SAuE7D,IAAIC,EAAY,gBAIZC,EAAiB,CACnBC,MAAOC,EAA2B,SAClCC,OAAQD,EAA2B,UACnCE,KAAMF,EAA2B,WACjCG,KAAMH,EAA2B,YACjCI,OAAQJ,EAA2B,UACnCtE,OAAQsE,EAA2B,UACnCK,OAAQL,EAA2B,UACnCM,OAAQN,EAA2B,UAEnCO,IA6HOC,EAA2BjB,GA5HlCkB,QA+HF,SAAkCC,GAkBhC,OAAOF,GAjBP,SAAkBtc,EAAOyc,EAAU/B,EAAeD,EAAUiC,GAC1D,GAA2B,mBAAhBF,EACT,OAAO,IAAIG,EAAc,aAAeD,EAAe,mBAAqBhC,EAAgB,mDAE9F,IAAIkC,EAAY5c,EAAMyc,GACtB,IAAKI,MAAMC,QAAQF,GAEjB,OAAO,IAAID,EAAc,WAAalC,EAAW,KAAOiC,EAA/B,cADVK,EAAYH,GAC6E,kBAAoBlC,EAAgB,yBAE9I,IAAK,IAAI/B,EAAI,EAAGA,EAAIiE,EAAU7R,OAAQ4N,IAAK,CACzC,IAAIrZ,EAAQkd,EAAYI,EAAWjE,EAAG+B,EAAeD,EAAUiC,EAAe,IAAM/D,EAAI,IAAKuB,GAC7F,GAAI5a,aAAiB+a,MACnB,OAAO/a,CAEjB,CACM,OAAO,IACb,GAEA,EAjJI0d,QA4JOV,GARP,SAAkBtc,EAAOyc,EAAU/B,EAAeD,EAAUiC,GAC1D,IAAIE,EAAY5c,EAAMyc,GACtB,OAAKlB,EAAeqB,GAIb,KAFE,IAAID,EAAc,WAAalC,EAAW,KAAOiC,EAA/B,cADVK,EAAYH,GAC6E,kBAAoBlC,EAAgB,qCAGpJ,IA1JIuC,YAuKOX,GARP,SAAkBtc,EAAOyc,EAAU/B,EAAeD,EAAUiC,GAC1D,IAAIE,EAAY5c,EAAMyc,GACtB,OAAKxB,EAAQ/E,mBAAmB0G,GAIzB,KAFE,IAAID,EAAc,WAAalC,EAAW,KAAOiC,EAA/B,cADVK,EAAYH,GAC6E,kBAAoBlC,EAAgB,0CAGpJ,IArKIwC,WAyKF,SAAmCC,GASjC,OAAOb,GARP,SAAkBtc,EAAOyc,EAAU/B,EAAeD,EAAUiC,GAC1D,KAAM1c,EAAMyc,aAAqBU,GAAgB,CAC/C,IAAIC,EAAoBD,EAAcngB,MAAQ2e,EAE9C,OAAO,IAAIgB,EAAc,WAAalC,EAAW,KAAOiC,EAA/B,iBAuSTE,EAxSmB5c,EAAMyc,IAyS9BY,aAAgBT,EAAUS,YAAYrgB,KAG9C4f,EAAUS,YAAYrgB,KAFpB2e,GAzS0G,mBAAoBjB,EAA1G,4BAA+J0C,EAAoB,KACpN,CAsSE,IAAsBR,EArSlB,OAAO,IACb,GAEA,EAlLIU,KAwROhB,GANP,SAAkBtc,EAAOyc,EAAU/B,EAAeD,EAAUiC,GAC1D,OAAKa,EAAOvd,EAAMyc,IAGX,KAFE,IAAIE,EAAc,WAAalC,EAAW,KAAOiC,EAA/B,kBAAwEhC,EAAgB,2BAGzH,IAtRI8C,SAsNF,SAAmChB,GAoBjC,OAAOF,GAnBP,SAAkBtc,EAAOyc,EAAU/B,EAAeD,EAAUiC,GAC1D,GAA2B,mBAAhBF,EACT,OAAO,IAAIG,EAAc,aAAeD,EAAe,mBAAqBhC,EAAgB,oDAE9F,IAAIkC,EAAY5c,EAAMyc,GAClBgB,EAAWV,EAAYH,GAC3B,GAAiB,WAAba,EACF,OAAO,IAAId,EAAc,WAAalC,EAAW,KAAOiC,EAA/B,cAAoEe,EAAW,kBAAoB/C,EAAgB,0BAE9I,IAAK,IAAIf,KAAOiD,EACd,GAAI9C,EAAI8C,EAAWjD,GAAM,CACvB,IAAIra,EAAQkd,EAAYI,EAAWjD,EAAKe,EAAeD,EAAUiC,EAAe,IAAM/C,EAAKO,GAC3F,GAAI5a,aAAiB+a,MACnB,OAAO/a,CAEnB,CAEM,OAAO,IACb,GAEA,EA1OIoe,MAkLF,SAA+BC,GAC7B,IAAKd,MAAMC,QAAQa,GAWjB,MAV6B,eAAzB1K,QAAQC,IAAIC,UAEZ8G,EADEP,UAAU3O,OAAS,EAEnB,+DAAiE2O,UAAU3O,OAA3E,uFAIW,0DAGVsQ,EAoBT,OAAOiB,GAjBP,SAAkBtc,EAAOyc,EAAU/B,EAAeD,EAAUiC,GAE1D,IADA,IAAIE,EAAY5c,EAAMyc,GACb9D,EAAI,EAAGA,EAAIgF,EAAe5S,OAAQ4N,IACzC,GAAIiF,EAAGhB,EAAWe,EAAehF,IAC/B,OAAO,KAIX,IAAIkF,EAAeC,KAAKC,UAAUJ,GAAgB,SAAkBhE,EAAK/b,GAEvE,MAAa,WADFogB,EAAepgB,GAEjB4a,OAAO5a,GAETA,CACf,IACM,OAAO,IAAI+e,EAAc,WAAalC,EAAW,KAAOiC,EAAe,eAAiBlE,OAAOoE,GAAtE,kBAA6GlC,EAAgB,sBAAwBmD,EAAe,IACnM,GAEA,EAlNII,UA2OF,SAAgCC,GAC9B,IAAKrB,MAAMC,QAAQoB,GAEjB,MADyB,eAAzBjL,QAAQC,IAAIC,UAA4B8G,EAAa,0EAC9CoB,EAGT,IAAK,IAAI1C,EAAI,EAAGA,EAAIuF,EAAoBnT,OAAQ4N,IAAK,CACnD,IAAIwF,EAAUD,EAAoBvF,GAClC,GAAuB,mBAAZwF,EAKT,OAJAlE,EACE,8FACcmE,EAAyBD,GAAW,aAAexF,EAAI,KAEhE0C,CAEf,CAiBI,OAAOiB,GAfP,SAAkBtc,EAAOyc,EAAU/B,EAAeD,EAAUiC,GAE1D,IADA,IAAI2B,EAAgB,GACX1F,EAAI,EAAGA,EAAIuF,EAAoBnT,OAAQ4N,IAAK,CACnD,IACI2F,GAAgBH,EADND,EAAoBvF,IACN3Y,EAAOyc,EAAU/B,EAAeD,EAAUiC,EAAcxC,GACpF,GAAqB,MAAjBoE,EACF,OAAO,KAELA,EAAc5e,MAAQoa,EAAIwE,EAAc5e,KAAM,iBAChD2e,EAAc1T,KAAK2T,EAAc5e,KAAK6e,aAEhD,CAEM,OAAO,IAAI5B,EAAc,WAAalC,EAAW,KAAOiC,EAA/B,kBAAwEhC,EAAgB,KADrF2D,EAActT,OAAS,EAAK,2BAA6BsT,EAAcxF,KAAK,MAAQ,IAAK,IACyB,IACpJ,GAEA,EA3QI2F,MA8RF,SAAgCC,GAmB9B,OAAOnC,GAlBP,SAAkBtc,EAAOyc,EAAU/B,EAAeD,EAAUiC,GAC1D,IAAIE,EAAY5c,EAAMyc,GAClBgB,EAAWV,EAAYH,GAC3B,GAAiB,WAAba,EACF,OAAO,IAAId,EAAc,WAAalC,EAAW,KAAOiC,EAAe,cAAgBe,EAA9D,kBAAmG/C,EAAgB,yBAE9I,IAAK,IAAIf,KAAO8E,EAAY,CAC1B,IAAIN,EAAUM,EAAW9E,GACzB,GAAuB,mBAAZwE,EACT,OAAOO,EAAsBhE,EAAeD,EAAUiC,EAAc/C,EAAKqE,EAAeG,IAE1F,IAAI7e,EAAQ6e,EAAQvB,EAAWjD,EAAKe,EAAeD,EAAUiC,EAAe,IAAM/C,EAAKO,GACvF,GAAI5a,EACF,OAAOA,CAEjB,CACM,OAAO,IACb,GAEA,EAjTIqf,MAmTF,SAAsCF,GA6BpC,OAAOnC,GA5BP,SAAkBtc,EAAOyc,EAAU/B,EAAeD,EAAUiC,GAC1D,IAAIE,EAAY5c,EAAMyc,GAClBgB,EAAWV,EAAYH,GAC3B,GAAiB,WAAba,EACF,OAAO,IAAId,EAAc,WAAalC,EAAW,KAAOiC,EAAe,cAAgBe,EAA9D,kBAAmG/C,EAAgB,yBAG9I,IAAIkE,EAAUtG,EAAO,CAAA,EAAItY,EAAMyc,GAAWgC,GAC1C,IAAK,IAAI9E,KAAOiF,EAAS,CACvB,IAAIT,EAAUM,EAAW9E,GACzB,GAAIG,EAAI2E,EAAY9E,IAA2B,mBAAZwE,EACjC,OAAOO,EAAsBhE,EAAeD,EAAUiC,EAAc/C,EAAKqE,EAAeG,IAE1F,IAAKA,EACH,OAAO,IAAIxB,EACT,WAAalC,EAAW,KAAOiC,EAAe,UAAY/C,EAAM,kBAAoBe,EAApF,mBACmBoD,KAAKC,UAAU/d,EAAMyc,GAAW,KAAM,MACzD,iBAAmBqB,KAAKC,UAAUjX,OAAOC,KAAK0X,GAAa,KAAM,OAGrE,IAAInf,EAAQ6e,EAAQvB,EAAWjD,EAAKe,EAAeD,EAAUiC,EAAe,IAAM/C,EAAKO,GACvF,GAAI5a,EACF,OAAOA,CAEjB,CACM,OAAO,IACb,GAGA,GAzUE,SAASse,EAAGvJ,EAAGC,GAEb,OAAID,IAAMC,EAGK,IAAND,GAAW,EAAIA,GAAM,EAAIC,EAGzBD,GAAMA,GAAKC,GAAMA,CAE9B,CAUE,SAASqI,EAAc7e,EAAS4B,GAC9Bmf,KAAK/gB,QAAUA,EACf+gB,KAAKnf,KAAOA,GAAwB,iBAATA,EAAoBA,EAAM,CAAE,EACvDmf,KAAK/D,MAAQ,EACjB,CAIE,SAASwB,EAA2BwC,GAClC,GAA6B,eAAzB7L,QAAQC,IAAIC,SACd,IAAI4L,EAA0B,CAAE,EAC5BC,EAA6B,EAEnC,SAASC,EAAUC,EAAYlf,EAAOyc,EAAU/B,EAAeD,EAAUiC,EAAcyC,GAIrF,GAHAzE,EAAgBA,GAAiBiB,EACjCe,EAAeA,GAAgBD,EAE3B0C,IAAWjF,EAAsB,CACnC,GAAIsB,EAAqB,CAEvB,IAAIxC,EAAM,IAAIqB,MACZ,qLAKF,MADArB,EAAIhc,KAAO,sBACLgc,CAChB,CAAe,GAA6B,eAAzB/F,QAAQC,IAAIC,UAAgD,oBAAZ2E,QAAyB,CAElF,IAAIsH,EAAW1E,EAAgB,IAAM+B,GAElCsC,EAAwBK,IAEzBJ,EAA6B,IAE7B/E,EACE,2EACuByC,EAAe,cAAgBhC,EADtD,wNAMFqE,EAAwBK,IAAY,EACpCJ,IAEZ,CACA,CACM,OAAuB,MAAnBhf,EAAMyc,GACJyC,EACsB,OAApBlf,EAAMyc,GACD,IAAIE,EAAc,OAASlC,EAAW,KAAOiC,EAA3B,+BAAiFhC,EAAgB,+BAErH,IAAIiC,EAAc,OAASlC,EAAW,KAAOiC,EAA3B,+BAAiFhC,EAAgB,oCAErH,KAEAoE,EAAS9e,EAAOyc,EAAU/B,EAAeD,EAAUiC,EAElE,CAEI,IAAI2C,EAAmBJ,EAAUjF,KAAK,MAAM,GAG5C,OAFAqF,EAAiBH,WAAaD,EAAUjF,KAAK,MAAM,GAE5CqF,CACX,CAEE,SAASvD,EAA2ByC,GAiBlC,OAAOjC,GAhBP,SAAkBtc,EAAOyc,EAAU/B,EAAeD,EAAUiC,EAAcyC,GACxE,IAAIvC,EAAY5c,EAAMyc,GAEtB,OADeM,EAAYH,KACV2B,EAMR,IAAI5B,EACT,WAAalC,EAAW,KAAOiC,EAA/B,cAHgBsB,EAAepB,GAGmD,kBAAoBlC,EAAtG,gBAA+I6D,EAAe,KAC9J,CAACA,aAAcA,IAGZ,IACb,GAEA,CAsKE,SAASG,EAAsBhE,EAAeD,EAAUiC,EAAc/C,EAAKre,GACzE,OAAO,IAAIqhB,GACRjC,GAAiB,eAAiB,KAAOD,EAAW,UAAYiC,EAAe,IAAM/C,EAAtF,6FACiFre,EAAO,KAE9F,CAwDE,SAASiiB,EAAOX,GACd,cAAeA,GACb,IAAK,SACL,IAAK,SACL,IAAK,YACH,OAAO,EACT,IAAK,UACH,OAAQA,EACV,IAAK,SACH,GAAIC,MAAMC,QAAQF,GAChB,OAAOA,EAAU0C,MAAM/B,GAEzB,GAAkB,OAAdX,GAAsBrB,EAAeqB,GACvC,OAAO,EAGT,IAAI2C,EAjbV,SAAuBC,GACrB,IAAID,EAAaC,IAAkB/D,GAAmB+D,EAAc/D,IAAoB+D,EAjB/D,eAkBzB,GAA0B,mBAAfD,EACT,OAAOA,CAEb,CA4ayBE,CAAc7C,GAC/B,IAAI2C,EAqBF,OAAO,EApBP,IACIG,EADAhE,EAAW6D,EAAW3F,KAAKgD,GAE/B,GAAI2C,IAAe3C,EAAU+C,SAC3B,OAASD,EAAOhE,EAASkE,QAAQC,MAC/B,IAAKtC,EAAOmC,EAAK9hB,OACf,OAAO,OAKX,OAAS8hB,EAAOhE,EAASkE,QAAQC,MAAM,CACrC,IAAIC,EAAQJ,EAAK9hB,MACjB,GAAIkiB,IACGvC,EAAOuC,EAAM,IAChB,OAAO,CAGzB,CAMQ,OAAO,EACT,QACE,OAAO,EAEf,CA2BE,SAAS/C,EAAYH,GACnB,IAAIa,SAAkBb,EACtB,OAAIC,MAAMC,QAAQF,GACT,QAELA,aAAqBmD,OAIhB,SAlCX,SAAkBtC,EAAUb,GAE1B,MAAiB,WAAba,KAKCb,IAK8B,WAA/BA,EAAU,kBAKQ,mBAAXtJ,QAAyBsJ,aAAqBtJ,OAK7D,CAcQ0M,CAASvC,EAAUb,GACd,SAEFa,CACX,CAIE,SAASO,EAAepB,GACtB,GAAI,MAAOA,EACT,MAAO,GAAKA,EAEd,IAAIa,EAAWV,EAAYH,GAC3B,GAAiB,WAAba,EAAuB,CACzB,GAAIb,aAAqBqD,KACvB,MAAO,OACF,GAAIrD,aAAqBmD,OAC9B,MAAO,QAEf,CACI,OAAOtC,CACX,CAIE,SAASW,EAAyBxgB,GAChC,IAAItC,EAAO0iB,EAAepgB,GAC1B,OAAQtC,GACN,IAAK,QACL,IAAK,SACH,MAAO,MAAQA,EACjB,IAAK,UACL,IAAK,OACL,IAAK,SACH,MAAO,KAAOA,EAChB,QACE,OAAOA,EAEf,CAcE,OAxbAqhB,EAAczE,UAAYmC,MAAMnC,UAobhC0D,EAAetB,eAAiBA,EAChCsB,EAAeb,kBAAoBT,EAAeS,kBAClDa,EAAesE,UAAYtE,EAEpBA,CACR,wCCxlBD,IAAI1B,EAA4D9D,KAEhE,SAAS+J,IAAgB,CACzB,SAASC,IAAyB,QAClCA,EAAuBrF,kBAAoBoF,EAE3CE,GAAiB,WACf,SAASC,EAAKtgB,EAAOyc,EAAU/B,EAAeD,EAAUiC,EAAcyC,GACpE,GAAIA,IAAWjF,EAAf,CAIA,IAAIlB,EAAM,IAAIqB,MACZ,mLAKF,MADArB,EAAIhc,KAAO,sBACLgc,CAPV,EAUE,SAASuH,IACP,OAAOD,CAEX,CAJEA,EAAKpB,WAAaoB,EAMlB,IAAI1E,EAAiB,CACnBC,MAAOyE,EACPvE,OAAQuE,EACRtE,KAAMsE,EACNrE,KAAMqE,EACNpE,OAAQoE,EACR9I,OAAQ8I,EACRnE,OAAQmE,EACRlE,OAAQkE,EAERjE,IAAKiE,EACL/D,QAASgE,EACTvD,QAASsD,EACTrD,YAAaqD,EACbpD,WAAYqD,EACZjD,KAAMgD,EACN9C,SAAU+C,EACV7C,MAAO6C,EACPtC,UAAWsC,EACX/B,MAAO+B,EACP5B,MAAO4B,EAEPjG,eAAgB8F,EAChBrF,kBAAmBoF,GAKrB,OAFAvE,EAAesE,UAAYtE,EAEpBA,CACR,wCCzDD,QAA6B,eAAzB3I,QAAQC,IAAIC,SAA2B,CACzC,IAAI8H,EAAU7E,KAKdoK,GAAAnN,QAAqD+G,KAACa,EAAQvF,UADpC,KAE5B,MAGE8K,GAAAnN,QAAiB6H,yGCNnB,IAAI5E,EAAqBhD,OAAOC,IAAI,8BAClCgD,EAAoBjD,OAAOC,IAAI,gBAC/BiD,EAAsBlD,OAAOC,IAAI,kBACjCkD,EAAyBnD,OAAOC,IAAI,qBACpCmD,EAAsBpD,OAAOC,IAAI,kBAE/BkN,EAAsBnN,OAAOC,IAAI,kBACnCqD,EAAqBtD,OAAOC,IAAI,iBAChCwD,EAAyBzD,OAAOC,IAAI,qBACpCyD,EAAsB1D,OAAOC,IAAI,kBACjC0D,EAA2B3D,OAAOC,IAAI,uBACtC2D,EAAkB5D,OAAOC,IAAI,cAC7B4D,EAAkB7D,OAAOC,IAAI,cAC7BmN,EAA6BpN,OAAOC,IAAI,yBACxCoN,EAAyBrN,OAAOC,IAAI,0BACtC,SAAS4C,EAAOqB,GACd,GAAI,iBAAoBA,GAAU,OAASA,EAAQ,CACjD,IAAI/C,EAAW+C,EAAO/C,SACtB,OAAQA,GACN,KAAK6B,EACH,OAAUkB,EAASA,EAAOlc,MACxB,KAAKkb,EACL,KAAKE,EACL,KAAKD,EACL,KAAKO,EACL,KAAKC,EACL,KAAKyJ,EACH,OAAOlJ,EACT,QACE,OAAUA,EAASA,GAAUA,EAAO/C,UAClC,KAAKmC,EACL,KAAKG,EACL,KAAKI,EACL,KAAKD,EAEL,KAAKuJ,EACH,OAAOjJ,EACT,QACE,OAAO/C,GAGjB,KAAK8B,EACH,OAAO9B,EAEf,CACA,QACAmM,GAAA9L,gBAA0B2L,EAC1BG,GAAAlJ,gBAA0Bd,EAC1BgK,GAAA7L,QAAkBuB,EAClBsK,GAAA5L,WAAqB+B,EACrB6J,GAAAtO,SAAmBkE,EACnBoK,GAAA3L,KAAekC,EACfyJ,GAAAjJ,KAAeT,EACf0J,GAAA1L,OAAiBqB,EACjBqK,GAAAzL,SAAmBuB,EACnBkK,GAAAxL,WAAqBqB,EACrBmK,GAAAvL,SAAmB2B,EACnB4J,GAAAC,aAAuB5J,EACE2J,GAAApL,kBAAG,SAAUgC,GACpC,OAAOrB,EAAOqB,KAAYiJ,CAC3B,EACwBG,GAAAnL,kBAAG,SAAU+B,GACpC,OAAOrB,EAAOqB,KAAYZ,CAC3B,EACgBgK,GAAAlL,UAAG,SAAU8B,GAC5B,MACE,iBAAoBA,GACpB,OAASA,GACTA,EAAO/C,WAAa6B,CAEvB,EACmBsK,GAAAjL,aAAG,SAAU6B,GAC/B,OAAOrB,EAAOqB,KAAYT,CAC3B,EACiB6J,GAAAhL,WAAG,SAAU4B,GAC7B,OAAOrB,EAAOqB,KAAYhB,CAC3B,EACaoK,GAAA/K,OAAG,SAAU2B,GACzB,OAAOrB,EAAOqB,KAAYL,CAC3B,EACayJ,GAAA9K,OAAG,SAAU0B,GACzB,OAAOrB,EAAOqB,KAAYN,CAC3B,EACe0J,GAAA7I,SAAG,SAAUP,GAC3B,OAAOrB,EAAOqB,KAAYjB,CAC3B,EACiBqK,GAAA7K,WAAG,SAAUyB,GAC7B,OAAOrB,EAAOqB,KAAYd,CAC3B,EACmBkK,GAAA5K,aAAG,SAAUwB,GAC/B,OAAOrB,EAAOqB,KAAYf,CAC3B,EACiBmK,GAAA3K,WAAG,SAAUuB,GAC7B,OAAOrB,EAAOqB,KAAYR,CAC3B,EACqB4J,GAAAE,eAAG,SAAUtJ,GACjC,OAAOrB,EAAOqB,KAAYP,CAC3B,EACyB2J,GAAA1K,mBAAG,SAAU5a,GACrC,MAAO,iBAAoBA,GACzB,mBAAsBA,GACtBA,IAASkb,GACTlb,IAASob,GACTpb,IAASmb,GACTnb,IAAS0b,GACT1b,IAAS2b,GACR,iBAAoB3b,GACnB,OAASA,IACRA,EAAKmZ,WAAa0C,GACjB7b,EAAKmZ,WAAayC,GAClB5b,EAAKmZ,WAAamC,GAClBtb,EAAKmZ,WAAagM,GAClBnlB,EAAKmZ,WAAasC,GAClBzb,EAAKmZ,WAAakM,QAClB,IAAWrlB,EAAKylB,YAGvB,EACDH,GAAAzK,OAAiBA;;;;;;;;;kCCtHjB,eAAiBlD,QAAQC,IAAIC,UAC3B,WACE,SAASgD,EAAOqB,GACd,GAAI,iBAAoBA,GAAU,OAASA,EAAQ,CACjD,IAAI/C,EAAW+C,EAAO/C,SACtB,OAAQA,GACN,KAAK6B,EACH,OAAUkB,EAASA,EAAOlc,MACxB,KAAKkb,EACL,KAAKE,EACL,KAAKD,EACL,KAAKO,EACL,KAAKC,EACL,KAAKyJ,EACH,OAAOlJ,EACT,QACE,OAAUA,EAASA,GAAUA,EAAO/C,UAClC,KAAKmC,EACL,KAAKG,EACL,KAAKI,EACL,KAAKD,EAEL,KAAKuJ,EACH,OAAOjJ,EACT,QACE,OAAO/C,GAGjB,KAAK8B,EACH,OAAO9B,EAEnB,CACA,CACI,IAAI6B,EAAqBhD,OAAOC,IAAI,8BAClCgD,EAAoBjD,OAAOC,IAAI,gBAC/BiD,EAAsBlD,OAAOC,IAAI,kBACjCkD,EAAyBnD,OAAOC,IAAI,qBACpCmD,EAAsBpD,OAAOC,IAAI,kBAE/BkN,EAAsBnN,OAAOC,IAAI,kBACnCqD,EAAqBtD,OAAOC,IAAI,iBAChCwD,EAAyBzD,OAAOC,IAAI,qBACpCyD,EAAsB1D,OAAOC,IAAI,kBACjC0D,EAA2B3D,OAAOC,IAAI,uBACtC2D,EAAkB5D,OAAOC,IAAI,cAC7B4D,EAAkB7D,OAAOC,IAAI,cAC7BmN,EAA6BpN,OAAOC,IAAI,yBACxCoN,EAAyBrN,OAAOC,IAAI,0BACtCsE,GAAA/C,gBAA0B2L,EAC1B5I,GAAAH,gBAA0Bd,EAC1BiB,GAAA9C,QAAkBuB,EAClBuB,GAAA7C,WAAqB+B,EACrBc,GAAAvF,SAAmBkE,EACnBqB,GAAA5C,KAAekC,EACfU,GAAAF,KAAeT,EACfW,GAAA3C,OAAiBqB,EACjBsB,GAAA1C,SAAmBuB,EACnBmB,GAAAzC,WAAqBqB,EACrBoB,GAAAxC,SAAmB2B,EACnBa,GAAAgJ,aAAuB5J,EACvBY,GAAyBrC,kBAAG,SAAUgC,GACpC,OAAOrB,EAAOqB,KAAYiJ,CAC3B,EACD5I,GAAyBpC,kBAAG,SAAU+B,GACpC,OAAOrB,EAAOqB,KAAYZ,CAC3B,EACDiB,GAAiBnC,UAAG,SAAU8B,GAC5B,MACE,iBAAoBA,GACpB,OAASA,GACTA,EAAO/C,WAAa6B,CAEvB,EACDuB,GAAoBlC,aAAG,SAAU6B,GAC/B,OAAOrB,EAAOqB,KAAYT,CAC3B,EACDc,GAAkBjC,WAAG,SAAU4B,GAC7B,OAAOrB,EAAOqB,KAAYhB,CAC3B,EACDqB,GAAchC,OAAG,SAAU2B,GACzB,OAAOrB,EAAOqB,KAAYL,CAC3B,EACDU,GAAc/B,OAAG,SAAU0B,GACzB,OAAOrB,EAAOqB,KAAYN,CAC3B,EACDW,GAAgBE,SAAG,SAAUP,GAC3B,OAAOrB,EAAOqB,KAAYjB,CAC3B,EACDsB,GAAkB9B,WAAG,SAAUyB,GAC7B,OAAOrB,EAAOqB,KAAYd,CAC3B,EACDmB,GAAoB7B,aAAG,SAAUwB,GAC/B,OAAOrB,EAAOqB,KAAYf,CAC3B,EACDoB,GAAkB5B,WAAG,SAAUuB,GAC7B,OAAOrB,EAAOqB,KAAYR,CAC3B,EACDa,GAAsBiJ,eAAG,SAAUtJ,GACjC,OAAOrB,EAAOqB,KAAYP,CAC3B,EACDY,GAA0B3B,mBAAG,SAAU5a,GACrC,MAAO,iBAAoBA,GACzB,mBAAsBA,GACtBA,IAASkb,GACTlb,IAASob,GACTpb,IAASmb,GACTnb,IAAS0b,GACT1b,IAAS2b,GACR,iBAAoB3b,GACnB,OAASA,IACRA,EAAKmZ,WAAa0C,GACjB7b,EAAKmZ,WAAayC,GAClB5b,EAAKmZ,WAAamC,GAClBtb,EAAKmZ,WAAagM,GAClBnlB,EAAKmZ,WAAasC,GAClBzb,EAAKmZ,WAAakM,QAClB,IAAWrlB,EAAKylB,YAGvB,EACDlJ,GAAA1B,OAAiBA,CAClB,CAxHD,sCCV2B,eAAzBlD,QAAQC,IAAIC,SACdC,GAAAC,QAAwD+C,KAExDhD,GAAAC,QAAyD+G,6BCDpD,SAAS4G,GAAcC,GAC5B,GAAoB,iBAATA,GAA8B,OAATA,EAC9B,OAAO,EAET,MAAM/I,EAAYpR,OAAOoa,eAAeD,GACxC,QAAsB,OAAd/I,GAAsBA,IAAcpR,OAAOoR,WAAkD,OAArCpR,OAAOoa,eAAehJ,IAA0B5E,OAAO6N,eAAeF,GAAW3N,OAAOoI,YAAYuF,EACtK,CACA,SAASG,GAAUlI,GACjB,GAAiBpP,GAAMyR,eAAerC,IAAWhD,GAAAA,mBAAmBgD,KAAY8H,GAAc9H,GAC5F,OAAOA,EAET,MAAMmI,EAAS,CAAE,EAIjB,OAHAva,OAAOC,KAAKmS,GAAQrG,SAAQ8G,IAC1B0H,EAAO1H,GAAOyH,GAAUlI,EAAOS,OAE1B0H,CACT,CAoBe,SAASC,GAAUlV,EAAQ8M,EAAQzP,EAAU,CAC1D8X,OAAO,IAEP,MAAMF,EAAS5X,EAAQ8X,MAAQ,IAC1BnV,GACDA,EAiBJ,OAhBI4U,GAAc5U,IAAW4U,GAAc9H,IACzCpS,OAAOC,KAAKmS,GAAQrG,SAAQ8G,IACT7P,GAAMyR,eAAerC,EAAOS,KAASzD,sBAAmBgD,EAAOS,IAC9E0H,EAAO1H,GAAOT,EAAOS,GACZqH,GAAc9H,EAAOS,KAEhC7S,OAAOoR,UAAUD,eAAe2B,KAAKxN,EAAQuN,IAAQqH,GAAc5U,EAAOuN,IAExE0H,EAAO1H,GAAO2H,GAAUlV,EAAOuN,GAAMT,EAAOS,GAAMlQ,GACzCA,EAAQ8X,MACjBF,EAAO1H,GAAOqH,GAAc9H,EAAOS,IAAQyH,GAAUlI,EAAOS,IAAQT,EAAOS,GAE3E0H,EAAO1H,GAAOT,EAAOS,MAIpB0H,CACT,CC5Ce,SAASG,GAAkBC,GACxC,MAAMjH,OAGJA,EAAS,CACPkH,GAAI,EAEJC,GAAI,IAEJC,GAAI,IAEJC,GAAI,KAEJC,GAAI,MACLC,KACDA,EAAO,KAAIrC,KACXA,EAAO,KACJsC,GACDP,EACEQ,EAnCsBzH,KAC5B,MAAM0H,EAAqBpb,OAAOC,KAAKyT,GAAQ/N,KAAIkN,IAAQ,CACzDA,MACAL,IAAKkB,EAAOb,QACP,GAGP,OADAuI,EAAmBC,MAAK,CAACC,EAAaC,IAAgBD,EAAY9I,IAAM+I,EAAY/I,MAC7E4I,EAAmBI,QAAO,CAACC,EAAKC,KAC9B,IACFD,EACH,CAACC,EAAI7I,KAAM6I,EAAIlJ,OAEhB,KAuBkBmJ,CAAsBjI,GACrCzT,EAAOD,OAAOC,KAAKkb,GACzB,SAASS,EAAG/I,GAEV,MAAO,qBAD8B,iBAAhBa,EAAOb,GAAoBa,EAAOb,GAAOA,IAC1BoI,IACxC,CACE,SAASY,EAAKhJ,GAEZ,MAAO,sBAD8B,iBAAhBa,EAAOb,GAAoBa,EAAOb,GAAOA,GAC1B+F,EAAO,MAAMqC,IACrD,CACE,SAASa,EAAQC,EAAOC,GACtB,MAAMC,EAAWhc,EAAKqC,QAAQ0Z,GAC9B,MAAO,qBAA8C,iBAAlBtI,EAAOqI,GAAsBrI,EAAOqI,GAASA,IAAQd,uBAA6C,IAAfgB,GAAqD,iBAA3BvI,EAAOzT,EAAKgc,IAA0BvI,EAAOzT,EAAKgc,IAAaD,GAAOpD,EAAO,MAAMqC,IACvO,CAkBE,MAAO,CACLhb,OACAyT,OAAQyH,EACRS,KACAC,OACAC,UACAI,KAvBF,SAAcrJ,GACZ,OAAI5S,EAAKqC,QAAQuQ,GAAO,EAAI5S,EAAKgE,OACxB6X,EAAQjJ,EAAK5S,EAAKA,EAAKqC,QAAQuQ,GAAO,IAExC+I,EAAG/I,EACd,EAmBI3Q,IAlBF,SAAa2Q,GAEX,MAAMsJ,EAAWlc,EAAKqC,QAAQuQ,GAC9B,OAAiB,IAAbsJ,EACKP,EAAG3b,EAAK,IAEbkc,IAAalc,EAAKgE,OAAS,EACtB4X,EAAK5b,EAAKkc,IAEZL,EAAQjJ,EAAK5S,EAAKA,EAAKqC,QAAQuQ,GAAO,IAAIuJ,QAAQ,SAAU,qBACvE,EASInB,UACGC,EAEP,CChFA,MAAMxD,GAAQ,CACZ2E,aAAc,GCAVC,GAA8C,eAAzBnQ,QAAQC,IAAIC,SAA4B+M,GAAUjC,UAAU,CAACiC,GAAUhE,OAAQgE,GAAU/D,OAAQ+D,GAAU1I,OAAQ0I,GAAUrE,QAAU,CAAE,ECApK,SAASwH,GAAMd,EAAKtB,GAClB,OAAKA,EAGEK,GAAUiB,EAAKtB,EAAM,CAC1BM,OAAO,IAHAgB,CAKX,CCDO,MAAM/H,GAAS,CACpBkH,GAAI,EAEJC,GAAI,IAEJC,GAAI,IAEJC,GAAI,KAEJC,GAAI,MAEAwB,GAAqB,CAGzBvc,KAAM,CAAC,KAAM,KAAM,KAAM,KAAM,MAC/B2b,GAAI/I,GAAO,qBAAqBa,GAAOb,SAEnC4J,GAA0B,CAC9BC,iBAAkBC,IAAkB,CAClCf,GAAI/I,IACF,IAAIrR,EAAwB,iBAARqR,EAAmBA,EAAMa,GAAOb,IAAQA,EAI5D,MAHsB,iBAAXrR,IACTA,EAAS,GAAGA,OAEPmb,EAAgB,cAAcA,gBAA4Bnb,KAAY,yBAAyBA,SAIrG,SAASob,GAAkB1jB,EAAO4c,EAAW+G,GAClD,MAAMlf,EAAQzE,EAAMyE,OAAS,CAAE,EAC/B,GAAIoY,MAAMC,QAAQF,GAAY,CAC5B,MAAMgH,EAAmBnf,EAAMgd,aAAe6B,GAC9C,OAAO1G,EAAU0F,QAAO,CAACC,EAAKtB,EAAMxR,KAClC8S,EAAIqB,EAAiBlB,GAAGkB,EAAiB7c,KAAK0I,KAAWkU,EAAmB/G,EAAUnN,IAC/E8S,IACN,GACP,CACE,GAAyB,iBAAd3F,EAAwB,CACjC,MAAMgH,EAAmBnf,EAAMgd,aAAe6B,GAC9C,OAAOxc,OAAOC,KAAK6V,GAAW0F,QAAO,CAACC,EAAKzmB,KACzC,GCpBwB+nB,EDoBND,EAAiB7c,KCnBtB,OAD2BnJ,EDoBC9B,ICnBrB8B,EAAMkmB,WAAW,OAASD,EAAeE,MAAKpK,GAAO/b,EAAMkmB,WAAW,IAAInK,QAAa/b,EAAMomB,MAAM,SDmBjE,CACpD,MAAMC,EClBP,SAA2Bxf,EAAOyf,GACvC,MAAMC,EAAUD,EAAUF,MAAM,uBAChC,IAAKG,EAAS,CACZ,GAA6B,eAAzBlR,QAAQC,IAAIC,SACd,MAAM,IAAIkH,MAA+B,eAAzBpH,QAAQC,IAAIC,SAA4B,gCAAmC+Q,qKAAgLE,GAAoB,GAAI,IAAIF,OAEzS,OAAO,IACX,CACE,MAAS,CAAAG,EAAgBZ,GAAiBU,EACpCvmB,EAAQ0mB,OAAOC,OAAOF,GAAkBA,GAAkB,GAAKA,EACrE,OAAO5f,EAAM+e,iBAAiBC,GAAef,GAAG9kB,EAClD,CDO6B4mB,CAAkB/f,EAAM+e,iBAAmB/e,EAAQ8e,GAAyBznB,GAC7FmoB,IACF1B,EAAI0B,GAAgBN,EAAmB/G,EAAU9gB,GAAaA,GAExE,MAEW,GAAIgL,OAAOC,KAAK6c,EAAiBpJ,QAAUA,IAAQlP,SAASxP,GAAa,CAE5EymB,EADiBqB,EAAiBlB,GAAG5mB,IACrB6nB,EAAmB/G,EAAU9gB,GAAaA,EAClE,KAAa,CACL,MAAM2oB,EAAS3oB,EACfymB,EAAIkC,GAAU7H,EAAU6H,EAChC,CCjCO,IAAuBZ,EAAgBjmB,EDkCxC,OAAO2kB,IACN,GACP,CAEE,OADeoB,EAAmB/G,EAEpC,CE7De,SAAS8H,GAAWvI,GACjC,GAAsB,iBAAXA,EACT,MAAM,IAAI9B,MAA+B,eAAzBpH,QAAQC,IAAIC,SAA4B,uDAAyDiR,GAAoB,IAEvI,OAAOjI,EAAOwI,OAAO,GAAGC,cAAgBzI,EAAO0I,MAAM,EACvD,CCPO,SAASC,GAAQtC,EAAKuC,EAAMC,GAAY,GAC7C,IAAKD,GAAwB,iBAATA,EAClB,OAAO,KAIT,GAAIvC,GAAOA,EAAIyC,MAAQD,EAAW,CAChC,MAAM1L,EAAM,QAAQyL,IAAOxW,MAAM,KAAK+T,QAAO,CAACC,EAAKtB,IAASsB,GAAOA,EAAItB,GAAQsB,EAAItB,GAAQ,MAAMuB,GACjG,GAAW,MAAPlJ,EACF,OAAOA,CAEb,CACE,OAAOyL,EAAKxW,MAAM,KAAK+T,QAAO,CAACC,EAAKtB,IAC9BsB,GAAoB,MAAbA,EAAItB,GACNsB,EAAItB,GAEN,MACNuB,EACL,CACO,SAAS0C,GAAcC,EAAcjgB,EAAWkgB,EAAgBC,EAAYD,GACjF,IAAIxnB,EAWJ,OATEA,EAD0B,mBAAjBunB,EACDA,EAAaC,GACZvI,MAAMC,QAAQqI,GACfA,EAAaC,IAAmBC,EAEhCP,GAAQK,EAAcC,IAAmBC,EAE/CngB,IACFtH,EAAQsH,EAAUtH,EAAOynB,EAAWF,IAE/BvnB,CACT,CACA,SAASxC,GAAMqO,GACb,MAAM6b,KACJA,EAAIC,YACJA,EAAc9b,EAAQ6b,KAAIE,SAC1BA,EAAQtgB,UACRA,GACEuE,EAIEgc,EAAKzlB,IACT,GAAmB,MAAfA,EAAMslB,GACR,OAAO,KAET,MAAM1I,EAAY5c,EAAMslB,GAElBH,EAAeL,GADP9kB,EAAMyE,MACgB+gB,IAAa,CAAE,EAcnD,OAAO9B,GAAkB1jB,EAAO4c,GAbLwI,IACzB,IAAIxnB,EAAQsnB,GAAcC,EAAcjgB,EAAWkgB,GAKnD,OAJIA,IAAmBxnB,GAAmC,iBAAnBwnB,IAErCxnB,EAAQsnB,GAAcC,EAAcjgB,EAAW,GAAGogB,IAA0B,YAAnBF,EAA+B,GAAKV,GAAWU,KAAmBA,KAEzG,IAAhBG,EACK3nB,EAEF,CACL2nB,CAACA,GAAc3nB,OASrB,OAJA6nB,EAAGC,UAAqC,eAAzBzS,QAAQC,IAAIC,SAA4B,CACrDmS,CAACA,GAAOlC,IACN,CAAE,EACNqC,EAAGE,YAAc,CAACL,GACXG,CACT,CCpEA,MAAMG,GAAa,CACjB7R,EAAG,SACHE,EAAG,WAEC4R,GAAa,CACjBvjB,EAAG,MACH6R,EAAG,QACHjL,EAAG,SACH4K,EAAG,OACHO,EAAG,CAAC,OAAQ,SACZC,EAAG,CAAC,MAAO,WAEPwR,GAAU,CACdC,QAAS,KACTC,QAAS,KACTC,SAAU,KACVC,SAAU,MAMNC,GC3BS,SAAiBV,GAC9B,MAAMW,EAAQ,CAAE,EAChB,OAAOtT,SACc3S,IAAfimB,EAAMtT,KACRsT,EAAMtT,GAAO2S,EAAG3S,IAEXsT,EAAMtT,GAEjB,CDmByBuT,EAAQf,IAE/B,GAAIA,EAAKva,OAAS,EAAG,CACnB,IAAI+a,GAAQR,GAGV,MAAO,CAACA,GAFRA,EAAOQ,GAAQR,EAIrB,CACE,MAAOrc,EAAGC,GAAKoc,EAAK/W,MAAM,IACpB+X,EAAWV,GAAW3c,GACtBuE,EAAYqY,GAAW3c,IAAM,GACnC,OAAO2T,MAAMC,QAAQtP,GAAaA,EAAUf,KAAI8Z,GAAOD,EAAWC,IAAO,CAACD,EAAW9Y,MAE1EgZ,GAAa,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,SAAU,YAAa,cAAe,eAAgB,aAAc,UAAW,UAAW,eAAgB,oBAAqB,kBAAmB,cAAe,mBAAoB,kBAC5OC,GAAc,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,UAAW,aAAc,eAAgB,gBAAiB,cAAe,WAAY,WAAY,gBAAiB,qBAAsB,mBAAoB,eAAgB,oBAAqB,mBAChQC,GAAc,IAAIF,MAAeC,IAChC,SAASE,GAAgBliB,EAAO+gB,EAAUoB,EAAcnK,GAC7D,MAAMoK,EAAe/B,GAAQrgB,EAAO+gB,GAAU,IAASoB,EACvD,MAA4B,iBAAjBC,GAAqD,iBAAjBA,EACtCvN,GACc,iBAARA,EACFA,GAEoB,eAAzBrG,QAAQC,IAAIC,UACK,iBAARmG,GACTxB,QAAQxY,MAAM,iBAAiBmd,8CAAqDnD,MAG5D,iBAAjBuN,EACLA,EAAa/C,WAAW,SAAmB,IAARxK,EAC9B,EAELuN,EAAa/C,WAAW,SAAmB,IAARxK,EAC9BuN,EAEF,QAAQvN,OAASuN,KAEnBA,EAAevN,GAGtBuD,MAAMC,QAAQ+J,GACTvN,IACL,GAAmB,iBAARA,EACT,OAAOA,EAET,MAAMwN,EAAM1X,KAAK0X,IAAIxN,GACQ,eAAzBrG,QAAQC,IAAIC,WACTmR,OAAOyC,UAAUD,GAEXA,EAAMD,EAAa9b,OAAS,GACrC+M,QAAQxY,MAAM,CAAC,4BAA4BwnB,gBAAmB,6BAA6BhJ,KAAKC,UAAU8I,MAAkB,GAAGC,OAASD,EAAa9b,OAAS,0CAA0C8N,KAAK,OAF7Mf,QAAQxY,MAAM,CAAC,oBAAoBkmB,qJAAiKA,oBAA2B3M,KAAK,QAKxO,MAAMmO,EAAcH,EAAaC,GACjC,OAAIxN,GAAO,EACF0N,EAEkB,iBAAhBA,GACDA,EAEiB,iBAAhBA,GAA4BA,EAAYlD,WAAW,QACrD,aAAakD,KAEf,IAAIA,KAGa,mBAAjBH,EACFA,GAEoB,eAAzB5T,QAAQC,IAAIC,UACd2E,QAAQxY,MAAM,CAAC,oBAAoBkmB,cAAqBqB,iBAA6B,kDAAkDhO,KAAK,OAEvI,OACT,CACO,SAASoO,GAAmBxiB,GACjC,OAAOkiB,GAAgBliB,EAAO,UAAW,EAAG,UAC9C,CACO,SAAS+L,GAAS0W,EAAatK,GACpC,MAAyB,iBAAdA,GAAuC,MAAbA,EAC5BA,EAEFsK,EAAYtK,EACrB,CAOA,SAASuK,GAAmBnnB,EAAO+G,EAAMue,EAAM4B,GAG7C,IAAKngB,EAAKuE,SAASga,GACjB,OAAO,KAET,MACM3B,EAbD,SAA+ByD,EAAeF,GACnD,OAAOtK,GAAawK,EAAc9E,QAAO,CAACC,EAAKgD,KAC7ChD,EAAIgD,GAAe/U,GAAS0W,EAAatK,GAClC2F,IACN,GACL,CAQ6B8E,CADLlB,GAAiBb,GACyB4B,GAEhE,OAAOxD,GAAkB1jB,EADPA,EAAMslB,GACmB3B,EAC7C,CACA,SAASvoB,GAAM4E,EAAO+G,GACpB,MAAMmgB,EAAcD,GAAmBjnB,EAAMyE,OAC7C,OAAOqC,OAAOC,KAAK/G,GAAOyM,KAAI6Y,GAAQ6B,GAAmBnnB,EAAO+G,EAAMue,EAAM4B,KAAc5E,OAAOe,GAAO,GAC1G,CACO,SAAS/V,GAAOtN,GACrB,OAAO5E,GAAM4E,EAAOwmB,GACtB,CAMO,SAAS/f,GAAQzG,GACtB,OAAO5E,GAAM4E,EAAOymB,GACtB,CE7IA,SAASa,MAAWC,GAClB,MAAMC,EAAWD,EAAOjF,QAAO,CAACC,EAAKnnB,KACnCA,EAAMuqB,YAAY9S,SAAQyS,IACxB/C,EAAI+C,GAAQlqB,KAEPmnB,IACN,IAIGkD,EAAKzlB,GACF8G,OAAOC,KAAK/G,GAAOsiB,QAAO,CAACC,EAAK+C,IACjCkC,EAASlC,GACJjC,GAAMd,EAAKiF,EAASlC,GAAMtlB,IAE5BuiB,GACN,IAIL,OAFAkD,EAAGC,UAAqC,eAAzBzS,QAAQC,IAAIC,SAA4BoU,EAAOjF,QAAO,CAACC,EAAKnnB,IAAU0L,OAAOwR,OAAOiK,EAAKnnB,EAAMsqB,YAAY,CAAE,GAAI,CAAE,EAClID,EAAGE,YAAc4B,EAAOjF,QAAO,CAACC,EAAKnnB,IAAUmnB,EAAI1U,OAAOzS,EAAMuqB,cAAc,IACvEF,CACT,CCjBO,SAASgC,GAAgB7pB,GAC9B,MAAqB,iBAAVA,EACFA,EAEF,GAAGA,WACZ,CACA,SAAS8pB,GAAkBpC,EAAMpgB,GAC/B,OAAO9J,GAAM,CACXkqB,OACAE,SAAU,UACVtgB,aAEJ,CHsHAoI,GAAOoY,UAAqC,eAAzBzS,QAAQC,IAAIC,SAA4BqT,GAAWlE,QAAO,CAACE,EAAK7I,KACjF6I,EAAI7I,GAAOyJ,GACJZ,IACN,CAAA,GAAM,CAAE,EACXlV,GAAOqY,YAAca,GAIrB/f,GAAQif,UAAqC,eAAzBzS,QAAQC,IAAIC,SAA4BsT,GAAYnE,QAAO,CAACE,EAAK7I,KACnF6I,EAAI7I,GAAOyJ,GACJZ,IACN,CAAA,GAAM,CAAE,EACX/b,GAAQkf,YAAcc,GAIuB,eAAzBxT,QAAQC,IAAIC,UAA4BuT,GAAYpE,QAAO,CAACE,EAAK7I,KACnF6I,EAAI7I,GAAOyJ,GACJZ,IACN,CAAA,GGxII,MAAMmF,GAASD,GAAkB,SAAUD,IACrCG,GAAYF,GAAkB,YAAaD,IAC3CI,GAAcH,GAAkB,cAAeD,IAC/CK,GAAeJ,GAAkB,eAAgBD,IACjDM,GAAaL,GAAkB,aAAcD,IAC7CO,GAAcN,GAAkB,eAChCO,GAAiBP,GAAkB,kBACnCQ,GAAmBR,GAAkB,oBACrCS,GAAoBT,GAAkB,qBACtCU,GAAkBV,GAAkB,mBACpCW,GAAUX,GAAkB,UAAWD,IACvCa,GAAeZ,GAAkB,gBAIjCvE,GAAenjB,IAC1B,QAA2BG,IAAvBH,EAAMmjB,cAAqD,OAAvBnjB,EAAMmjB,aAAuB,CACnE,MAAM+D,EAAcP,GAAgB3mB,EAAMyE,MAAO,qBAAsB,EAAG,gBACpEkf,EAAqB/G,IAAc,CACvCuG,aAAc3S,GAAS0W,EAAatK,KAEtC,OAAO8G,GAAkB1jB,EAAOA,EAAMmjB,aAAcQ,EACxD,CACE,OAAO,MAETR,GAAauC,UAAqC,eAAzBzS,QAAQC,IAAIC,SAA4B,CAC/DgQ,aAAcC,IACZ,CAAE,EACND,GAAawC,YAAc,CAAC,gBACZ2B,GAAQK,GAAQC,GAAWC,GAAaC,GAAcC,GAAYC,GAAaC,GAAgBC,GAAkBC,GAAmBC,GAAiBjF,GAAckF,GAASC,ICvCrL,MAAMC,GAAMvoB,IACjB,QAAkBG,IAAdH,EAAMuoB,KAAmC,OAAdvoB,EAAMuoB,IAAc,CACjD,MAAMrB,EAAcP,GAAgB3mB,EAAMyE,MAAO,UAAW,EAAG,OACzDkf,EAAqB/G,IAAc,CACvC2L,IAAK/X,GAAS0W,EAAatK,KAE7B,OAAO8G,GAAkB1jB,EAAOA,EAAMuoB,IAAK5E,EAC/C,CACE,OAAO,MAET4E,GAAI7C,UAAqC,eAAzBzS,QAAQC,IAAIC,SAA4B,CACtDoV,IAAKnF,IACH,CAAE,EACNmF,GAAI5C,YAAc,CAAC,OAIZ,MAAM6C,GAAYxoB,IACvB,QAAwBG,IAApBH,EAAMwoB,WAA+C,OAApBxoB,EAAMwoB,UAAoB,CAC7D,MAAMtB,EAAcP,GAAgB3mB,EAAMyE,MAAO,UAAW,EAAG,aACzDkf,EAAqB/G,IAAc,CACvC4L,UAAWhY,GAAS0W,EAAatK,KAEnC,OAAO8G,GAAkB1jB,EAAOA,EAAMwoB,UAAW7E,EACrD,CACE,OAAO,MAET6E,GAAU9C,UAAqC,eAAzBzS,QAAQC,IAAIC,SAA4B,CAC5DqV,UAAWpF,IACT,CAAE,EACNoF,GAAU7C,YAAc,CAAC,aAIlB,MAAM8C,GAASzoB,IACpB,QAAqBG,IAAjBH,EAAMyoB,QAAyC,OAAjBzoB,EAAMyoB,OAAiB,CACvD,MAAMvB,EAAcP,GAAgB3mB,EAAMyE,MAAO,UAAW,EAAG,UACzDkf,EAAqB/G,IAAc,CACvC6L,OAAQjY,GAAS0W,EAAatK,KAEhC,OAAO8G,GAAkB1jB,EAAOA,EAAMyoB,OAAQ9E,EAClD,CACE,OAAO,MAET8E,GAAO/C,UAAqC,eAAzBzS,QAAQC,IAAIC,SAA4B,CACzDsV,OAAQrF,IACN,CAAE,EACNqF,GAAO9C,YAAc,CAAC,UCrDf,SAAS+C,GAAiB9qB,EAAOynB,GACtC,MAAkB,SAAdA,EACKA,EAEFznB,CACT,CD4Ea0pB,GAAQiB,GAAKC,GAAWC,GA3BXrtB,GAAM,CAC9BkqB,KAAM,eAEelqB,GAAM,CAC3BkqB,KAAM,YAEoBlqB,GAAM,CAChCkqB,KAAM,iBAEuBlqB,GAAM,CACnCkqB,KAAM,oBAEoBlqB,GAAM,CAChCkqB,KAAM,iBAE2BlqB,GAAM,CACvCkqB,KAAM,wBAEwBlqB,GAAM,CACpCkqB,KAAM,qBAEyBlqB,GAAM,CACrCkqB,KAAM,sBAEgBlqB,GAAM,CAC5BkqB,KAAM,cE9ED,SAASqD,GAAgB/qB,GAC9B,OAAOA,GAAS,GAAe,IAAVA,EAAyB,IAARA,EAAH,IAAoBA,CACzD,CDmBgB0pB,GAhBKlsB,GAAM,CACzBkqB,KAAM,QACNE,SAAU,UACVtgB,UAAWwjB,KAEUttB,GAAM,CAC3BkqB,KAAM,UACNC,YAAa,kBACbC,SAAU,UACVtgB,UAAWwjB,KAEkBttB,GAAM,CACnCkqB,KAAM,kBACNE,SAAU,UACVtgB,UAAWwjB,MChBN,MAAMtjB,GAAQhK,GAAM,CACzBkqB,KAAM,QACNpgB,UAAWyjB,KAEAC,GAAW5oB,IACtB,QAAuBG,IAAnBH,EAAM4oB,UAA6C,OAAnB5oB,EAAM4oB,SAAmB,CAC3D,MAAMjF,EAAqB/G,IACzB,MAAM9gB,EAAakE,EAAMyE,OAAOgd,aAAajH,SAASoC,IAAciM,GAAkBjM,GACtF,OAAK9gB,EAKkC,OAAnCkE,EAAMyE,OAAOgd,aAAaM,KACrB,CACL6G,SAAU,GAAG9sB,IAAakE,EAAMyE,MAAMgd,YAAYM,QAG/C,CACL6G,SAAU9sB,GAVH,CACL8sB,SAAUD,GAAgB/L,KAYhC,OAAO8G,GAAkB1jB,EAAOA,EAAM4oB,SAAUjF,EACpD,CACE,OAAO,MAETiF,GAASjD,YAAc,CAAC,YACjB,MAAMtgB,GAAWjK,GAAM,CAC5BkqB,KAAM,WACNpgB,UAAWyjB,KAEAxjB,GAAS/J,GAAM,CAC1BkqB,KAAM,SACNpgB,UAAWyjB,KAEA1jB,GAAY7J,GAAM,CAC7BkqB,KAAM,YACNpgB,UAAWyjB,KAEArjB,GAAYlK,GAAM,CAC7BkqB,KAAM,YACNpgB,UAAWyjB,KAEYvtB,GAAM,CAC7BkqB,KAAM,OACNC,YAAa,QACbrgB,UAAWyjB,KAEavtB,GAAM,CAC9BkqB,KAAM,OACNC,YAAa,SACbrgB,UAAWyjB,KAKErB,GAAQliB,GAAOwjB,GAAUvjB,GAAUF,GAAQF,GAAWK,GAH5ClK,GAAM,CAC7BkqB,KAAM,eCvDR,MAAMwD,GAAkB,CAEtBnB,OAAQ,CACNnC,SAAU,UACVtgB,UAAWuiB,IAEbG,UAAW,CACTpC,SAAU,UACVtgB,UAAWuiB,IAEbI,YAAa,CACXrC,SAAU,UACVtgB,UAAWuiB,IAEbK,aAAc,CACZtC,SAAU,UACVtgB,UAAWuiB,IAEbM,WAAY,CACVvC,SAAU,UACVtgB,UAAWuiB,IAEbO,YAAa,CACXxC,SAAU,WAEZyC,eAAgB,CACdzC,SAAU,WAEZ0C,iBAAkB,CAChB1C,SAAU,WAEZ2C,kBAAmB,CACjB3C,SAAU,WAEZ4C,gBAAiB,CACf5C,SAAU,WAEZ6C,QAAS,CACP7C,SAAU,UACVtgB,UAAWuiB,IAEba,aAAc,CACZ9C,SAAU,WAEZrC,aAAc,CACZqC,SAAU,qBACVpqB,MAAO+nB,IAGT9f,MAAO,CACLmiB,SAAU,UACVtgB,UAAWwjB,IAEbljB,QAAS,CACPggB,SAAU,UACVD,YAAa,kBACbrgB,UAAWwjB,IAEbK,gBAAiB,CACfvD,SAAU,UACVtgB,UAAWwjB,IAGbzU,EAAG,CACD7Y,MAAOqL,IAETuiB,GAAI,CACF5tB,MAAOqL,IAETwiB,GAAI,CACF7tB,MAAOqL,IAETyiB,GAAI,CACF9tB,MAAOqL,IAET0iB,GAAI,CACF/tB,MAAOqL,IAETgF,GAAI,CACFrQ,MAAOqL,IAETiF,GAAI,CACFtQ,MAAOqL,IAETA,QAAS,CACPrL,MAAOqL,IAET2iB,WAAY,CACVhuB,MAAOqL,IAET4iB,aAAc,CACZjuB,MAAOqL,IAET6iB,cAAe,CACbluB,MAAOqL,IAET8iB,YAAa,CACXnuB,MAAOqL,IAETwf,SAAU,CACR7qB,MAAOqL,IAETyf,SAAU,CACR9qB,MAAOqL,IAET+iB,cAAe,CACbpuB,MAAOqL,IAETgjB,mBAAoB,CAClBruB,MAAOqL,IAETijB,iBAAkB,CAChBtuB,MAAOqL,IAETkjB,aAAc,CACZvuB,MAAOqL,IAETmjB,kBAAmB,CACjBxuB,MAAOqL,IAETojB,gBAAiB,CACfzuB,MAAOqL,IAETsN,EAAG,CACD3Y,MAAOkS,IAETwc,GAAI,CACF1uB,MAAOkS,IAET4B,GAAI,CACF9T,MAAOkS,IAETyc,GAAI,CACF3uB,MAAOkS,IAET0c,GAAI,CACF5uB,MAAOkS,IAET2c,GAAI,CACF7uB,MAAOkS,IAETG,GAAI,CACFrS,MAAOkS,IAETA,OAAQ,CACNlS,MAAOkS,IAET4c,UAAW,CACT9uB,MAAOkS,IAETpH,YAAa,CACX9K,MAAOkS,IAET6c,aAAc,CACZ/uB,MAAOkS,IAET8c,WAAY,CACVhvB,MAAOkS,IAETyY,QAAS,CACP3qB,MAAOkS,IAET0Y,QAAS,CACP5qB,MAAOkS,IAET+c,aAAc,CACZjvB,MAAOkS,IAETgd,kBAAmB,CACjBlvB,MAAOkS,IAETid,gBAAiB,CACfnvB,MAAOkS,IAETkd,YAAa,CACXpvB,MAAOkS,IAETmd,iBAAkB,CAChBrvB,MAAOkS,IAETod,eAAgB,CACdtvB,MAAOkS,IAGTqd,aAAc,CACZpF,aAAa,EACbrgB,UAAWtH,IAAU,CACnB,eAAgB,CACd6H,QAAS7H,MAIf6H,QAAS,CAAE,EACXF,SAAU,CAAE,EACZqlB,aAAc,CAAE,EAChBC,WAAY,CAAE,EACdC,WAAY,CAAE,EAEdC,UAAW,CAAE,EACbrlB,cAAe,CAAE,EACjBslB,SAAU,CAAE,EACZplB,eAAgB,CAAE,EAClBD,WAAY,CAAE,EACdslB,aAAc,CAAE,EAChBC,MAAO,CAAE,EACT3d,KAAM,CAAE,EACRjH,SAAU,CAAE,EACZ6kB,WAAY,CAAE,EACdC,UAAW,CAAE,EACbC,aAAc,CAAE,EAChBC,YAAa,CAAE,EAEf/C,IAAK,CACHntB,MAAOmtB,IAETE,OAAQ,CACNrtB,MAAOqtB,IAETD,UAAW,CACTptB,MAAOotB,IAET+C,WAAY,CAAE,EACdC,QAAS,CAAE,EACXC,aAAc,CAAE,EAChBC,gBAAiB,CAAE,EACnBC,aAAc,CAAE,EAChBC,oBAAqB,CAAE,EACvBC,iBAAkB,CAAE,EACpBC,kBAAmB,CAAE,EACrBC,SAAU,CAAE,EAEZjnB,SAAU,CAAE,EACZN,OAAQ,CACNghB,SAAU,UAEZzgB,IAAK,CAAE,EACPiF,MAAO,CAAE,EACTgiB,OAAQ,CAAE,EACVhnB,KAAM,CAAE,EAERinB,UAAW,CACTzG,SAAU,WAGZpgB,MAAO,CACLF,UAAWyjB,IAEbC,SAAU,CACRxtB,MAAOwtB,IAETvjB,SAAU,CACRH,UAAWyjB,IAEbxjB,OAAQ,CACND,UAAWyjB,IAEb1jB,UAAW,CACTC,UAAWyjB,IAEbrjB,UAAW,CACTJ,UAAWyjB,IAEbuD,UAAW,CAAE,EAEbC,KAAM,CACJ3G,SAAU,QAEZ4G,WAAY,CACV5G,SAAU,cAEZ/W,SAAU,CACR+W,SAAU,cAEZ6G,UAAW,CACT7G,SAAU,cAEZ9W,WAAY,CACV8W,SAAU,cAEZ8G,cAAe,CAAE,EACjBC,cAAe,CAAE,EACjBC,WAAY,CAAE,EACdC,UAAW,CAAE,EACbC,WAAY,CACVnH,aAAa,EACbC,SAAU,eCtKd,MAAMmH,GA5GC,WACL,SAASC,EAActH,EAAMhM,EAAK7U,EAAOooB,GACvC,MAAM7sB,EAAQ,CACZslB,CAACA,GAAOhM,EACR7U,SAEIgF,EAAUojB,EAAOvH,GACvB,IAAK7b,EACH,MAAO,CACL6b,CAACA,GAAOhM,GAGZ,MAAMiM,YACJA,EAAcD,EAAIE,SAClBA,EAAQtgB,UACRA,EAAS9J,MACTA,GACEqO,EACJ,GAAW,MAAP6P,EACF,OAAO,KAIT,GAAiB,eAAbkM,GAAqC,YAARlM,EAC/B,MAAO,CACLgM,CAACA,GAAOhM,GAGZ,MAAM6L,EAAeL,GAAQrgB,EAAO+gB,IAAa,CAAE,EACnD,GAAIpqB,EACF,OAAOA,EAAM4E,GAef,OAAO0jB,GAAkB1jB,EAAOsZ,GAbL8L,IACzB,IAAIxnB,EAAQ4S,GAAS2U,EAAcjgB,EAAWkgB,GAK9C,OAJIA,IAAmBxnB,GAAmC,iBAAnBwnB,IAErCxnB,EAAQ4S,GAAS2U,EAAcjgB,EAAW,GAAGogB,IAA0B,YAAnBF,EAA+B,GAAKV,GAAWU,KAAmBA,KAEpG,IAAhBG,EACK3nB,EAEF,CACL2nB,CAACA,GAAc3nB,KAIvB,CA4DE,OA3DA,SAAS+uB,EAAgB3sB,GACvB,MAAMuE,GACJA,EAAEE,MACFA,EAAQ,CAAA,GACNzE,GAAS,CAAE,EACf,IAAKuE,EACH,OAAO,KAET,MAAMsoB,EAASpoB,EAAMqoB,mBAAqBhE,GAO1C,SAASiE,EAASC,GAChB,IAAIC,EAAWD,EACf,GAAuB,mBAAZA,EACTC,EAAWD,EAAQvoB,QACd,GAAuB,iBAAZuoB,EAEhB,OAAOA,EAET,IAAKC,EACH,OAAO,KAET,MAAMC,EZQL,SAAqCC,EAAmB,IAC7D,MAAMC,EAAqBD,EAAiBpmB,MAAMub,QAAO,CAACC,EAAK5I,KAE7D4I,EAD2B4K,EAAiBzK,GAAG/I,IACrB,CAAE,EACrB4I,IACN,IACH,OAAO6K,GAAsB,CAAE,CACjC,CYf+BC,CAA4B5oB,EAAMgd,aACrD6L,EAAkBxmB,OAAOC,KAAKmmB,GACpC,IAAIpyB,EAAMoyB,EA2BV,OA1BApmB,OAAOC,KAAKkmB,GAAUpa,SAAQ0a,IAC5B,MAAM3vB,GAlFI4vB,EAkFaP,EAASM,GAlFbza,EAkFwBrO,EAjFvB,mBAAZ+oB,EAAyBA,EAAQ1a,GAAO0a,GADxD,IAAkBA,EAAS1a,EAmFnB,GAAIlV,QACF,GAAqB,iBAAVA,EACT,GAAIivB,EAAOU,GACTzyB,EAAMuoB,GAAMvoB,EAAK8xB,EAAcW,EAAU3vB,EAAO6G,EAAOooB,QAClD,CACL,MAAMhE,EAAoBnF,GAAkB,CAC1Cjf,SACC7G,GAAOyW,IAAM,CACdkZ,CAACA,GAAWlZ,OAhG5B,YAAgCoZ,GAC9B,MAAM7O,EAAU6O,EAAQnL,QAAO,CAACvb,EAAMyQ,IAAWzQ,EAAK8G,OAAO/G,OAAOC,KAAKyQ,KAAU,IAC7EkW,EAAQ,IAAIC,IAAI/O,GACtB,OAAO6O,EAAQnO,OAAM9H,GAAUkW,EAAMhgB,OAAS5G,OAAOC,KAAKyQ,GAAQzM,QACpE,CA8FkB6iB,CAAoB/E,EAAmBjrB,GAMzC9C,EAAMuoB,GAAMvoB,EAAK+tB,GALjB/tB,EAAIyyB,GAAYZ,EAAgB,CAC9BpoB,GAAI3G,EACJ6G,SAKlB,MAEY3J,EAAMuoB,GAAMvoB,EAAK8xB,EAAcW,EAAU3vB,EAAO6G,EAAOooB,OX3G5D,SAA8BpoB,EAAO3J,GAC1C,IAAK2J,EAAM+e,iBACT,OAAO1oB,EAET,MAAM+yB,EAAS/mB,OAAOC,KAAKjM,GAAKqO,QAAOwQ,GAAOA,EAAImK,WAAW,gBAAe3B,MAAK,CAAClZ,EAAGC,KACnF,MAAM4kB,EAAQ,yBACd,QAAS7kB,EAAE+a,MAAM8J,KAAS,IAAM,KAAO5kB,EAAE8a,MAAM8J,KAAS,IAAM,MAEhE,OAAKD,EAAO9iB,OAGL8iB,EAAOvL,QAAO,CAACC,EAAK5I,KACzB,MAAM/b,EAAQ9C,EAAI6e,GAGlB,cAFO4I,EAAI5I,GACX4I,EAAI5I,GAAO/b,EACJ2kB,IACN,IACEznB,IARIA,CAUX,CW4FaizB,CAAqBtpB,EZb3B,SAAiCof,EAAgBzoB,GACtD,OAAOyoB,EAAevB,QAAO,CAACC,EAAK5I,KACjC,MAAMqU,EAAmBzL,EAAI5I,GAK7B,QAJ4BqU,GAA6D,IAAzClnB,OAAOC,KAAKinB,GAAkBjjB,gBAErEwX,EAAI5I,GAEN4I,IACNnnB,EACL,CYIyC6yB,CAAwBX,EAAiBxyB,GAClF,CACI,OAAO+hB,MAAMC,QAAQvY,GAAMA,EAAGkI,IAAIsgB,GAAYA,EAASxoB,EAC3D,CAEA,CACwB2pB,GC9DT,SAASC,GAAYxU,EAAK4N,GAEvC,MAAM9iB,EAAQoa,KACd,GAAIpa,EAAMwgB,KAAM,CACd,IAAKxgB,EAAM2pB,eAAezU,IAAgD,mBAAjClV,EAAM4pB,uBAC7C,MAAO,CAAE,EAGX,IAAIC,EAAW7pB,EAAM4pB,uBAAuB1U,GAC5C,MAAiB,MAAb2U,EACK/G,IAEL+G,EAAShjB,SAAS,UAAYgjB,EAAShjB,SAAS,QAElDgjB,EAAW,WAAWA,EAASpL,QAAQ,QAAS,UAE3C,CACLoL,CAACA,GAAW/G,GAElB,CACE,OAAI9iB,EAAM8pB,QAAQC,OAAS7U,EAClB4N,EAEF,CAAE,CACX,CC/EA,SAASkH,GAASC,EAAe,MAC/B,MAAMC,EAAe7kB,GAAM8kB,WAAWC,gBACtC,OAAQF,IALanM,EAKiBmM,EAJH,IAA5B7nB,OAAOC,KAAKyb,GAAKzX,QAI6C4jB,EAAfD,EALxD,IAAuBlM,CAMvB,CFmHAmK,GAAgBhH,YAAc,CAAC,MGzHxB,MAAMmJ,GCIb,SAAqBrlB,EAAU,MAAOkJ,GACpC,MACE8O,YAAa0L,EAAmB,CAAE,EAClCoB,QAASQ,EAAe,CAAE,EAC1B1hB,QAAS2hB,EACTxQ,MAAOyQ,EAAa,CAAE,KACnBjN,GACDvY,EACEgY,EAAcD,GAAkB2L,GAChC9f,ECZO,SAAuB2hB,EAAe,EAIrD9pB,EAAY+hB,GAAmB,CAC7B5Z,QAAS2hB,KAGT,GAAIA,EAAaE,IACf,OAAOF,EAET,MAAM3hB,EAAU,IAAI8hB,KACW,eAAzBlc,QAAQC,IAAIC,WACRgc,EAAUpkB,QAAU,GACxB+M,QAAQxY,MAAM,mEAAmE6vB,EAAUpkB,YAG7D,IAArBokB,EAAUpkB,OAAe,CAAC,GAAKokB,GAChC1iB,KAAI2iB,IACd,MAAM/N,EAASnc,EAAUkqB,GACzB,MAAyB,iBAAX/N,EAAsB,GAAGA,MAAaA,KACnDxI,KAAK,MAGV,OADAxL,EAAQ6hB,KAAM,EACP7hB,CACT,CDbkBgiB,CAAcL,GAC9B,IAAIM,EAAWhO,GAAU,CACvBG,cACAjU,UAAW,MACX+hB,WAAY,CAAE,EAEdhB,QAAS,CACPC,KAAM,WACHO,GAEL1hB,UACAmR,MAAO,IACFA,MACAyQ,IAEJjN,GAcH,OAbAsN,EfSa,SAA6BE,GAC1C,MAAMC,EAAmB,CAACC,EAAY1yB,IAAS0yB,EAAWxM,QAAQ,SAAUlmB,EAAO,cAAcA,IAAS,cAC1G,SAAS2yB,EAASrS,EAAMtgB,GACtBsgB,EAAKoF,GAAK,IAAI/P,IAAS8c,EAAiBD,EAAW/N,YAAYiB,MAAM/P,GAAO3V,GAC5EsgB,EAAKqF,KAAO,IAAIhQ,IAAS8c,EAAiBD,EAAW/N,YAAYkB,QAAQhQ,GAAO3V,GAChFsgB,EAAKsF,QAAU,IAAIjQ,IAAS8c,EAAiBD,EAAW/N,YAAYmB,WAAWjQ,GAAO3V,GACtFsgB,EAAK0F,KAAO,IAAIrQ,IAAS8c,EAAiBD,EAAW/N,YAAYuB,QAAQrQ,GAAO3V,GAChFsgB,EAAKtU,IAAM,IAAI2J,KACb,MAAMrK,EAASmnB,EAAiBD,EAAW/N,YAAYzY,OAAO2J,GAAO3V,GACrE,OAAIsL,EAAOgD,SAAS,eAEXhD,EAAO4a,QAAQ,eAAgB,IAAIA,QAAQ,aAAc,UAAUA,QAAQ,aAAc,UAAUA,QAAQ,MAAO,MAEpH5a,EAEb,CACE,MAAMgV,EAAO,CAAE,EACTkG,EAAmBxmB,IACvB2yB,EAASrS,EAAMtgB,GACRsgB,GAGT,OADAqS,EAASnM,GACF,IACFgM,EACHhM,mBAEJ,CenCaoM,CAAoBN,GAC/BA,EAASnB,YAAcA,GACvBmB,EAAW3c,EAAK2P,QAAO,CAACC,EAAK6M,IAAa9N,GAAUiB,EAAK6M,IAAWE,GACpEA,EAASxC,kBAAoB,IACxBhE,MACA9G,GAAO8K,mBAEZwC,EAASO,YAAc,SAAY7vB,GACjC,OAAO2sB,GAAgB,CACrBpoB,GAAIvE,EACJyE,MAAOoa,MAEV,EACMyQ,CACT,CD3CkCQ,GGanB,SAASC,GAAa/vB,GACnC,MACEuE,GAAIyrB,KACDhO,GACDhiB,GACEiwB,YACJA,EAAWC,WACXA,GAtBelwB,KACjB,MAAMsI,EAAS,CACb2nB,YAAa,CAAE,EACfC,WAAY,CAAA,GAERrD,EAAS7sB,GAAOyE,OAAOqoB,mBAAqBhE,GAQlD,OAPAhiB,OAAOC,KAAK/G,GAAO6S,SAAQyS,IACrBuH,EAAOvH,GACThd,EAAO2nB,YAAY3K,GAAQtlB,EAAMslB,GAEjChd,EAAO4nB,WAAW5K,GAAQtlB,EAAMslB,MAG7Bhd,GAUH6nB,CAAWnO,GACf,IAAIoO,EAoBJ,OAlBEA,EADEvT,MAAMC,QAAQkT,GACN,CAACC,KAAgBD,GACF,mBAATA,EACN,IAAIrd,KACZ,MAAMrK,EAAS0nB,KAAQrd,GACvB,OAAKqO,GAAc1Y,GAGZ,IACF2nB,KACA3nB,GAJI2nB,GAQD,IACLA,KACAD,GAGA,IACFE,EACH3rB,GAAI6rB,EAER,CClDA,MAAMC,GAAmB3V,GAAiBA,EAepC4V,GAd2B,MAC/B,IAAIC,EAAWF,GACf,MAAO,CACL,SAAAG,CAAUC,GACRF,EAAWE,CACZ,EACDF,SAAS7V,GACA6V,EAAS7V,GAElB,KAAAgW,GACEH,EAAWF,EACjB,IAG2BM,GCf3B,SAASxc,GAAEnE,GAAG,IAAI1N,EAAEoR,EAAEM,EAAE,GAAG,GAAG,iBAAiBhE,GAAG,iBAAiBA,EAAEgE,GAAGhE,OAAO,GAAG,iBAAiBA,EAAE,GAAG6M,MAAMC,QAAQ9M,GAAG,CAAC,IAAI4gB,EAAE5gB,EAAEjF,OAAO,IAAIzI,EAAE,EAAEA,EAAEsuB,EAAEtuB,IAAI0N,EAAE1N,KAAKoR,EAAES,GAAEnE,EAAE1N,OAAO0R,IAAIA,GAAG,KAAKA,GAAGN,EAAE,MAAM,IAAIA,KAAK1D,EAAEA,EAAE0D,KAAKM,IAAIA,GAAG,KAAKA,GAAGN,GAAG,OAAOM,CAAC,CAAQ,SAAS6c,KAAO,IAAI,IAAI7gB,EAAE1N,EAAEoR,EAAE,EAAEM,EAAE,GAAG4c,EAAElX,UAAU3O,OAAO2I,EAAEkd,EAAEld,KAAK1D,EAAE0J,UAAUhG,MAAMpR,EAAE6R,GAAEnE,MAAMgE,IAAIA,GAAG,KAAKA,GAAG1R,GAAG,OAAO0R,CAAC,CCCxW,MAAM8c,GAAqB,CAChCC,OAAQ,SACRnnB,QAAS,UACTonB,UAAW,YACXllB,SAAU,WACVxM,MAAO,QACP2xB,SAAU,WACVC,QAAS,UACTC,aAAc,eACd/uB,KAAM,OACNgvB,SAAU,WACVvhB,SAAU,WACVwhB,SAAU,YCZZ,MCKMxsB,GCES,SAAmB4E,EAAU,IAC1C,MAAM6nB,QACJA,EAAO5C,aACPA,EAAY6C,iBACZA,EAAmB,cAAaC,kBAChCA,GACE/nB,EACEgoB;;;;;;;;ACHO,SAAgBC,EAAKjoB,GAClC,MAAMkoB,EAAgBC,GAASF,EAAKjoB,GACpC,MAA6B,eAAzBwJ,QAAQC,IAAIC,SACP,IAAIoU,KACT,MAAMnhB,EAAsC,IAAIsrB,KAMhD,OALsB,IAAlBnK,EAAOxc,OACT+M,QAAQxY,MAAM,CAAC,uCAAuC8G,uCAAgD,gFAAgFyS,KAAK,OAClL0O,EAAOxD,MAAK3oB,QAAmB+E,IAAV/E,KAC9B0c,QAAQxY,MAAM,mBAAmB8G,wDAE5BurB,KAAiBpK,IAGrBoK,CACT,CDXkBE,CAAO,MAAO,CAC5BC,kBAAmBxM,GAAiB,UAATA,GAA6B,OAATA,GAA0B,OAATA,GADlDuM,CAEblF,IACG9nB,EAAmBiF,GAAMioB,YAAW,SAAaC,EAASj3B,GAC9D,MAAM0J,ETdV,SAAkBiqB,EAAeI,IAC/B,OAAOmD,GAAuBvD,EAChC,CSYkBD,CAASC,IACjBwD,UACJA,EAAS9rB,UACTA,EAAY,SACT4b,GACD+N,GAAaiC,GACjB,OAAoBrvB,EAAAA,IAAK8uB,EAAS,CAChCU,GAAI/rB,EACJrL,IAAKA,EACLm3B,UAAWrB,GAAKqB,EAAWV,EAAoBA,EAAkBD,GAAoBA,GACrF9sB,MAAO6sB,GAAU7sB,EAAM6sB,IAAoB7sB,KACxCud,GAET,IACE,OAAOnd,CACT,CD5BYutB,CAAU,CACpBb,iBGNa,SAAgC7W,EAAe3J,EAAOshB,EAAoB,OACvF,MAAM/pB,EAAS,CAAE,EAIjB,OAHAyI,EAAM8B,SAAQyf,IACZhqB,EAAOgqB,GLWI,SAA8B5X,EAAe4X,EAAMD,EAAoB,OACpF,MAAME,EAAmBzB,GAAmBwB,GAC5C,OAAOC,EAAmB,GAAGF,KAAqBE,IAAqB,GAAGjC,GAAmBC,SAAS7V,MAAkB4X,GAC1H,CKdmBE,CAAqB9X,EAAe4X,EAAMD,MAEpD/pB,CACT,CJNmBmqB,CAAuB,SAAU,CAAC,SCMtBC,KAC7BlB,kBAAmBlB,GAAmBC,WIJlC,SAAUoC,GAAS/0B,GACvB,MAAwB,iBAAVA,IAAuB2mB,MAAM3mB,EAC7C,CAEM,SAAUg1B,GAAUh1B,GACxB,MACmB,iBAAVA,GAAuC,KAAjBA,EAAMi1B,SAAkBtO,MAAMD,OAAO1mB,GAEtE,CAEM,SAAUk1B,GAAsBC,GACpC,OAAKA,EACEA,EAAIpO,OAAO,GAAGC,cAAgBmO,EAAIlO,MAAM,GAD9B,EAEnB,CAEM,SAAUmO,GAAaC,GAE3B,MADW,6BACDC,KAAKD,EACjB,CJZyB,eAAzBhgB,QAAQC,IAAIC,WAA4BtO,GAAI6gB,UAAmC,CAQ7E3iB,SAAUmd,GAAU5C,KAKpBlX,UAAW8Z,GAAUjD,YAIrB1Y,GAAI2b,GAAUjC,UAAU,CAACiC,GAAU3D,QAAQ2D,GAAUjC,UAAU,CAACiC,GAAUjE,KAAMiE,GAAU1I,OAAQ0I,GAAUlE,QAASkE,GAAUjE,KAAMiE,GAAU1I,WKTjJ,MAAM2b,GAAwC,EAC5CrqB,QACAsI,eACAxT,QACAw1B,WACAC,gBAEA,MAAM/wB,EAAEA,GAAMC,mBACRkH,EAAU,CACd6pB,eAAgB,CAACtW,GAAWuW,YAC1B,GAAIvW,EAAQ5hB,MAAMiI,MAChB,OAAOkwB,EAAM,SAAWvW,EAAQ5hB,MAAMiI,SAK5C,IAAImwB,EAAeC,EAAAA,cAAc71B,EAAO6L,GAExC,MAAOiqB,EAAaC,GAAkB13B,EAAQA,SAC5C23B,cAAYC,kBAAkBL,IAiBhCp3B,EAAAA,WAAU,KACJwB,GAASk2B,EAAYC,EAAAA,aAAaL,EAAYM,uBAChDL,EACEC,EAAWA,YAACC,kBAAkBJ,EAAaA,cAAC71B,EAAO6L,OAGtD,CAAC7L,IAwCJ,OACE6E,EAAAiK,KAAClG,QAAK,CACJjC,GAAI,CACFkB,QAAS,OACTC,cAAe,SACfe,QAAS,GACV1D,SAAA,CAEA+F,EAAQnG,EAAAA,IAACkC,EAAGA,IAAA,CAAA9B,SAAET,EAAEwG,KAAgBnG,EAAA0B,IAAA0E,WAAA,CAAA,GACjCpG,EAAAA,IAACsxB,EAAMA,OAAA,CACLP,YAAaA,EACbQ,oBAxEqBR,IACzB,IAAIS,EAAUL,EAAYC,EAAAA,aAAaL,EAAYM,sBAEnD,GADAlc,QAAQsc,IAAI,eAAiBD,EAAQppB,QACjCopB,EAAQppB,OAASsoB,EAArB,CACE,IAAIG,EAAeC,EAAAA,cACjBU,EAAQE,UAAU,EAAGhB,GACrB5pB,GAEFkqB,EAAeC,EAAWA,YAACC,kBAAkBL,SAG7CG,EAAeD,GAEjBN,EAASU,EAAYC,EAAYA,aAACL,EAAYM,wBA4D1CM,iBAAmBC,IACjB,MACMC,EADiBd,EAAYM,oBACSS,aAAa,IAAI1pB,OACvD2pB,EAtDmB,MAC/B,MAAMC,EAAmBjB,EAAYkB,eAGrC,IAAI7pB,EAAS,EAEb,IAJoB4pB,EAAiBE,cAInB,CAChB,MAAMC,EAAiBpB,EAAYM,oBAC7Be,EAAWJ,EAAiBK,cAC5BC,EAASN,EAAiBO,YAE1BC,EAA+BJ,IAAaE,EAE5CG,EAHaN,EAAeO,eAAeN,GAETO,YAEfX,EAAiBY,iBACpCC,EAAwBb,EAAiBc,eACzCC,EAAcZ,EAAea,YAAYV,GAC/C,GAAIE,EACFpqB,GACE4pB,EAAiBc,eAAiBd,EAAiBY,qBAChD,CACL,IAAIK,EAAab,EAEjB,KAAOa,GAAcA,IAAeF,GAEhC3qB,GADE6qB,IAAeb,EACPK,EAA0B,EAC3BQ,IAAeX,EACdO,EAEAV,EAAeO,eAAeO,GAAYN,YAAc,EAGpEM,EAAad,EAAea,YAAYC,IAK9C,OAAO7qB,GAiB0B8qB,GAE3B,GACErB,EAAuBD,EAAWxpB,OAAS2pB,EAC3CrB,EAGA,OADAyC,MAAM,sBAAwBzC,GACvB,WAGX0C,YAAa,CACX5wB,OAAQ,QACRwiB,OAAQ,oBACRlhB,QAAS,OACTlB,SAAU,QAEZywB,aAAc,CAAE7L,aAAc,QAC9B8L,aAAc,CAAEtO,OAAQ,oBAEzBvW,EACCzO,EAAAA,IAACkC,EAAAA,IAAI,CAAAN,GAAI,CAAElB,MAAO,OAAUN,SAAAT,EAAE8O,KAE9BzO,EAAK0B,IAAA0E,EAAAuJ,SAAA,QCzHP4jB,GAAyDl2B,IAC7D,MAAMqQ,EAAY3R,EAAWA,aAAEvB,GAAeA,EAAMkT,YAC9C9I,EAAU9D,MACTgG,EAAS0sB,GAAcl6B,EAAAA,SAAqB,KAC7C6D,iBAAEA,GAAqBvB,KAsB7B,OANAnC,EAAAA,WAAU,KACJ4D,EAAMo2B,YAfcr2B,iBAClBD,EAAiB,CACrBG,YAAa,2BACbG,UAAU,EACVF,WAAY,CAAEk2B,WAAYp2B,EAAMo2B,YAChC51B,gBAAkBpB,IAChB+2B,EAAW/2B,EAASM,OAEtBe,gBAAiB,KACf01B,EAAW,QAObE,KAED,CAACr2B,EAAMo2B,WAAY7uB,EAAQ7D,cAG5Bf,EAAAA,IAACwN,GAAQ,IACHnQ,EACJyJ,QAASA,EACTD,aAC6B,QAA3B6G,EAAUxT,aAAyB,kBAAoB,kBAEzD0M,WAAW,iBCrCX+sB,GACJtZ,IAEA,GAAIA,GAASuZ,UAAW,CACtB,MAAMv2B,EAAQgd,EAAQuZ,UAChBC,EAAcxZ,GAASwZ,aAAe,KACtCC,EAAczZ,GAASyZ,aAAe,KACtCC,EAAa1Z,GAAS0Z,YAAc,KACpCC,EAAiB3Z,GAASuZ,WAAWI,WAAa,KAClDC,EAAY5Z,GAASuZ,WAAWK,WAAa,KACnD,OAAM52B,GAASw2B,GAAeE,GAAcC,GAAaC,EAGjD5Z,EAAQ6Z,aAAavrB,SAASqrB,GA4NpCh0B,EAAA0B,IAAA0E,EAAAuJ,SAAA,CAAA,GA3NA3P,MAACwK,EAAAA,MAAK,CACJO,KACE1N,GAAO82B,WAAWC,WAAa,CAC7BlV,GAAI,GACJD,GAAI,GACJD,GAAI,IAGRpd,GAAI,CACFkC,QAAS,EACTrB,MAAO,QACRrC,SAEc,SAAd6zB,GAAsC,WAAdA,EACvBj0B,MAAC8F,GACK,IAAAzI,EAAMg3B,kBACV/qB,WAAS,EACT3Q,KAAMs7B,EACN9qB,YACE9L,GAAO8L,WAAYkR,EAAQia,eAAe3rB,SAASqrB,IAIrDO,OAAQl3B,GAAOk3B,SAAU,EACzBpuB,MAAO9I,GAAOm3B,WACdv5B,MAAO84B,EAAWC,GAClBzqB,SAAWC,IACT,IAAIsE,EAAW,KACW,IAAtBtE,EAAMC,OAAOxO,QAEb6S,EADgB,WAAdmmB,GAA0BhE,GAAUzmB,EAAMC,OAAOxO,OACxC0mB,OAAOnY,EAAMC,OAAOxO,OAEpBuO,EAAMC,OAAOxO,OAG5B44B,EAAYpD,SAASuD,EAAWlmB,GAC5BzQ,GAAO82B,WAAWM,uBACpBp3B,GAAO82B,WAAWM,sBAChB3mB,EACA+lB,EACAC,IAINlyB,GAAI,CACF,uBAAwB,CACtBY,OAAQ,GAAGnF,GAAO82B,WAAWO,sBAAmBl3B,GAElD,wBAAyB,CACvBgF,OAAQ,sBAEPnF,GAAO82B,WAAW17B,OAEvBkE,MAAkDa,MAA3Cq2B,EAAYc,UAAUC,OAAOZ,GACpCtlB,WAAYmlB,GAAac,WAAWC,OAClCZ,IACC74B,SAAS05B,aAES,SAArBx3B,GAAO42B,UACTj0B,MAACiP,GAAS,CACRM,OAAQlS,GAAOy3B,YAAcnmB,GAC7B/M,GAAIvE,GAAO82B,WAAW17B,OAAS,CAAEgK,MAAO,QACxC0G,YACE9L,GAAO8L,WAAYkR,EAAQia,eAAe3rB,SAASqrB,IAIrD7tB,MAAO9I,GAAOm3B,WACdlnB,iBAAmBM,IACjBimB,EAAYpD,SAASuD,EAAWpmB,GAC5BvQ,GAAO82B,WAAWM,uBACpBp3B,GAAO82B,WAAWM,sBAChB7mB,EACAimB,EACAC,IAIN74B,MAAO84B,EAAWC,GAClBr3B,MAAkDa,MAA3Cq2B,EAAYc,UAAUC,OAAOZ,GACpCvlB,aAAcolB,GAAac,WAAWC,OACpCZ,IACC74B,SAAS05B,aAES,aAArBx3B,GAAO42B,UACTj0B,EAAC0B,IAAAkO,IACCL,OAAQlS,GAAOy3B,YAAclmB,GAC7BhN,GAAIvE,GAAO82B,WAAW17B,OAAS,CAAEgK,MAAO,QACxC0G,YACE9L,GAAO8L,WAAYkR,EAAQia,eAAe3rB,SAASqrB,IAIrD7tB,MAAO9I,GAAOm3B,WACdlnB,iBAAmBM,IACjBimB,EAAYpD,SAASuD,EAAWpmB,GAC5BvQ,GAAO82B,WAAWM,uBACpBp3B,GAAO82B,WAAWM,sBAChB7mB,EACAimB,EACAC,IAIN74B,MAAO84B,EAAWC,GAClBr3B,MAAkDa,MAA3Cq2B,EAAYc,UAAUC,OAAOZ,GACpCvlB,aAAcolB,GAAac,WAAWC,OACpCZ,IACC74B,SAAS05B,aAES,aAArBx3B,GAAO42B,UACTj0B,EAAAA,IAACgN,GAAQ,CACP7G,MAAO9I,GAAOm3B,WACdlnB,iBAAmBM,IACjBimB,EAAYpD,SAASuD,EAAWpmB,GAC5BvQ,GAAO82B,WAAWM,uBACpBp3B,GAAO82B,WAAWM,sBAChB7mB,EACAimB,EACAC,IAIN74B,MAAO84B,EAAWC,GAClB5mB,aAAc/P,GAAO+P,eAAgB,EACrCG,eAAgBlQ,GAAOkQ,iBAAkB,EACzCpE,YACE9L,GAAO8L,WAAYkR,EAAQia,eAAe3rB,SAASqrB,IAIrDpyB,GAAIvE,GAAO82B,WAAW17B,QAED,aAArB4E,GAAO42B,UACTj0B,EAAAA,IAACwN,GACC,CAAA5L,GAAIvE,GAAO82B,WAAW17B,OAAS,CAAEgK,MAAO,QACxC0D,MAAO9I,GAAOm3B,WACdrrB,YACE9L,GAAO8L,WAAYkR,EAAQia,eAAe3rB,SAASqrB,IAIrD1mB,iBAAkB,CAACM,EAAQmnB,KACzB,IAAIjnB,EAAW,KACXF,IACFE,EAAWF,EAAI,IAEjBimB,EAAYpD,SAASuD,EAAWlmB,GAC5BzQ,GAAO82B,WAAWM,uBACpBp3B,GAAO82B,WAAWM,sBAChB3mB,EACA+lB,EACAC,EACAiB,IAINjuB,QAASzJ,GAAOyJ,SAAW,GAC3BD,aAAcxJ,GAAO23B,oBAAsB,GAC3CpuB,WAAYvJ,GAAO43B,kBAAoB,GACvCh6B,MAAO84B,EAAWC,GAClBvlB,aAAcolB,GAAac,WAAWC,OACpCZ,IACC74B,SAAS05B,aAES,WAArBx3B,GAAO42B,UACTj0B,EAAC0B,IAAA6xB,IACC3xB,GAAIvE,GAAO82B,WAAW17B,OAAS,CAAEgK,MAAO,QACxC0D,MAAO9I,GAAOm3B,WACdrrB,YACE9L,GAAO8L,WAAYkR,EAAQia,eAAe3rB,SAASqrB,IAIrD1mB,iBAAkB,CAACM,EAAQmnB,KACzB,IAAIjnB,EAAW,KACXF,IACFE,EAAWF,EAAI,IAEjBimB,EAAYpD,SAASuD,EAAWlmB,GAC5BzQ,GAAO82B,WAAWM,uBACpBp3B,GAAO82B,WAAWM,sBAChB3mB,EACA+lB,EACAC,EACAiB,IAINtB,WAAYp2B,EAAMo2B,WAClBx4B,MAAO84B,EAAWC,GAClBvlB,aAAcolB,GAAac,WAAWC,OACpCZ,IACC74B,SAAS05B,aAES,SAArBx3B,GAAO42B,UACTj0B,EAAAA,IAACwwB,GAAU,CACTrqB,MAAO9I,EAAMm3B,WACbv5B,MAAO84B,EAAWC,IAAc,GAChCvlB,aAAcolB,GAAac,WAAWC,OACpCZ,IACC74B,SAAS05B,WACZpE,SAAW7iB,IACTimB,EAAYpD,SAASuD,EAAWpmB,GAC5BvQ,GAAO82B,WAAWM,uBACpBp3B,GAAO82B,WAAWM,sBAChB7mB,EACAimB,EACAC,IAINpD,UAAW,MAGb1wB,oDA1NGA,qBAiOT,OAAOA,sBClPLk1B,GAAsCz6B,IAC1C,MAAMmK,EAAU9D,MACVjB,mBAAEA,EAAoBH,QAASy1B,GACnC31B,GAAsB,CACpBc,KAAM7F,GAAQ26B,qBAAuB,GACrCl1B,MAAO,eACPU,qBAAsB,KACpBnG,GAAQ46B,SAAS56B,GAAQ2K,WAG/B,OACE3K,SAAQ2G,WAERwD,EAAQ3D,iBAAiBxG,EAAO2G,WAG9BtB,EAAAiK,KAAA3D,EAAAuJ,SAAA,CAAAvP,SAAA,CACEJ,EAAAA,IAACH,EAAqB,IACtBC,OAACU,EAAAA,OACC,CAAAC,QAAShG,GAAQ66B,iBAAiBC,oBAClC70B,MAAOjG,GAAQ66B,iBAAiBE,kBAChC70B,QAAS,KACP,GAAIlG,GAAQ46B,SAAU,CACpB,GAAI56B,GAAQg7B,sBACLh7B,EAAOg7B,oBAAoBh7B,EAAO2K,QACrC,QAGmC,IAAnC3K,GAAQi7B,uBACVP,GAA2B,GAE3B16B,GAAQ46B,SAAS56B,EAAO2K,UAG7BhF,SAAA,CAEA3F,GAAQ4I,KACPrD,EAAAA,IAACoD,EAAAA,iBACCC,KAAM5I,EAAO4I,KACb5K,MAAO,CAAE8K,YAAa,EAAGkkB,WAAY,KAGvCznB,EAAAA,mBAEFA,EAAAA,oBAAMvF,GAAQ0L,cAKbnG,sBC5CL21B,GACJt4B,IAEA,MAAMsC,EAAEA,GAAMC,mBACd,OACEI,MAAAoG,EAAAA,SAAA,CAAAhG,SACEN,EAACiK,KAAAS,SAAMC,WAAS,EAAC7I,GAAIvE,GAAO5E,MAAOuK,WAAW,aAC3C5C,SAAA,CAAA/C,GAAO8I,MACNnG,MAACwK,EAAAA,MAAK,CACJO,KAAM,GACNnJ,GAAI,CACFkC,QAAS,EACTiI,WAAY,OACZjJ,QAAS,OACTE,WAAY,SACZC,eAAgB,cACjB7C,SAEA/C,GAAOgG,KACNvD,EAAAiK,KAAA3D,EAAAuJ,SAAA,CAAAvP,SAAA,CACEJ,EAAC0B,IAAA0B,kBACC,CAAAC,KAAMhG,EAAMgG,KACZ5K,MAAO,CAAE8K,YAAa,EAAGkkB,WAAY,KAEvCznB,MAAM,MAAA,CAAAI,SAAAT,EAAEtC,EAAM8I,YAGhBnG,EAAAA,IAAGoG,EAAAuJ,SAAA,CAAAvP,SAAAT,EAAEtC,EAAM8I,WAIfnG,EAAK0B,IAAA0E,WAAA,CAAA,GAEN/I,GAAOu4B,SACJv4B,EAAMu4B,SAAS9rB,KAAKuQ,GACG,UAAjBA,EAAQ1hB,KAERqH,EAAC0B,IAAAi0B,GACK,IAAAtb,EAAQhd,MACZw2B,YAAax2B,EAAMw2B,YACnBE,WAAY12B,EAAM02B,WAClBD,YAAaz2B,EAAMy2B,YACnBI,aAAc72B,EAAM62B,aACpBI,eAAgBj3B,EAAMi3B,iBAGA,UAAjBja,EAAQ1hB,MAAqC,UAAjB0hB,EAAQwR,KAE3C7rB,EAAC0B,IAAAiyB,IACCC,UAAWvZ,EAAQhd,MACnBw2B,YAAax2B,EAAMw2B,YACnBE,WAAY12B,EAAM02B,WAClBD,YAAaz2B,EAAMy2B,YACnBI,aAAc72B,EAAM62B,aACpBI,eAAgBj3B,EAAMi3B,iBAGA,UAAjBja,EAAQ1hB,MAAqC,SAAjB0hB,EAAQwR,KAE3C7rB,EAAAA,IAACwK,EAAAA,MAAK,CACJO,KACEsP,GAAShd,OAAO82B,WAAWC,WAAa,CACtClV,GAAI,EACJD,GAAI,EACJD,GAAI,IAGRpd,GAAI,CAAEkC,QAAS,EAAGrB,MAAO,QAEzBrC,SAAAJ,MAACqa,EAAQM,KACP,CAAAkZ,YAAax2B,EAAMw2B,YACnBE,WAAY12B,EAAM02B,WAClBD,YAAaz2B,EAAMy2B,qBAfpB,IAqBT,KAEHz2B,GAAOxC,QACNmF,MAACwK,EAAKA,MAAA,CAACO,KAAM,CAAEiU,GAAI,IAAMpd,GAAI,CAAEkC,QAAS,GAAG1D,SACxC/C,EAAMxC,QAAQiP,KAAKrP,GACXuF,EAAAA,IAACk1B,GAAU,IAAKz6B,EAAQ2K,OAAQ/H,EAAM02B,iBAIjD/zB,MAAAoG,EAAAA,SAAA,CAAA,SCvDGyvB,GAA+BC,IACP,IAC9BA,EACHn9B,KAAM,SACNo9B,eAAiBn4B,GAEboC,EAAAA,IAAC4P,GACC,CAAAhO,GAAI,CAAEa,MAAO,QACb0D,MAAM,GACNlL,MAAO2C,EAAO3C,MACdqS,iBAAmBM,IACjBhQ,EAAOo4B,IAAIC,iBAAiB,CAC1B3rB,GAAI1M,EAAO0M,GACX4rB,MAAOt4B,EAAOs4B,MACdj7B,MAAO2S,OAMjBuoB,YAAa,CAACl7B,EAAYm7B,EAAUC,KAClC,IAAIzoB,EAAI,KAIR,OAHc,OAAV3S,IACF2S,EAAI0B,EAAOrU,GAAOsU,OAAOX,KAEpBhB,GAET0oB,eAAgB,CAACr7B,EAAYm7B,EAAUC,IAC9BD,EAAIC,EAAOH,SAYXK,GAEcT,IACU,IAC9BA,EACHn9B,KAAM,SACN69B,YAAcv7B,GACRA,EACKA,EAAQ,GAEVA,EAETw7B,WAAal5B,IACX,IAAI6H,EAAS,KACb,IACEA,EAAS7H,EAAWu4B,OAAOhvB,QAAQ4vB,MAChCpY,GAAcA,EAAK/gB,EAAWu4B,OAAOlvB,aAAerJ,EAAWtC,QAElE,MAAOoS,GAAG,CACZ,OACErN,MAAA,MAAA,CAAAI,SACa,MAAVgF,EACGA,EAAO7H,EAAWu4B,OAAOjvB,cACzBtJ,EAAWtC,SAKrB86B,eAAiBn4B,GAEboC,MAACwN,GAAQ,IACH5P,EACJgE,GAAI,CAAEa,MAAO,QACbqE,QAASlJ,EAAOk4B,OAAOhvB,QACvBF,WAAYhJ,EAAOk4B,OAAOlvB,WAC1BC,aAAcjJ,EAAOk4B,OAAOjvB,aAC5ByG,iBAAkB,CAACM,EAAQmnB,KACf,OAANnnB,GACFhQ,EAAOo4B,IAAIC,iBAAiB,CAC1B3rB,GAAI1M,EAAO0M,GACX4rB,MAAOt4B,EAAOs4B,MACdj7B,MAAO,OAGX2C,EAAOo4B,IAAIC,iBAAiB,CAC1B3rB,GAAI1M,EAAO0M,GACX4rB,MAAOt4B,EAAOs4B,MACdj7B,MAAO2S,EAAI,UAeZ+oB,GAEcb,IAClB,IACFA,EACHn9B,KAAM,SACN69B,YAAcv7B,GACC,MAATA,GAA0BuC,MAATvC,EACZ,KAEAA,EAGXw7B,WAAal5B,IACX,MAAMtC,EAAQsC,GAAYtC,MAC1B,OACEA,IAAU66B,EAAO1oB,cACP,SAAVnS,GACU,IAAVA,IACU,IAAVA,EAEO+E,EAAAA,IAACoD,EAAAA,gBAAe,CAACC,KAAK,QAAQ3C,MAAM,UAEpCV,EAAAA,IAACoD,EAAAA,gBAAe,CAACC,KAAK,QAAQ3C,MAAM,SAG/Cq1B,eAAiBn4B,GAEboC,EAAAA,IAACgN,GACK,IAAApP,EACJwP,aAAc0oB,GAAQ1oB,eAAgB,EACtCG,eAAgBuoB,GAAQvoB,iBAAkB,EAC1CD,iBAAmBM,IACjBhQ,EAAOo4B,IAAIC,iBAAiB,CAC1B3rB,GAAI1M,EAAO0M,GACX4rB,MAAOt4B,EAAOs4B,MACdj7B,MAAO2S,SCtKRgpB,GAEmBvc,IAC9B,MAAMwc,EAAkC,GACxC,GAAqB,UAAjBxc,EAAQ1hB,MAAqC,UAAjB0hB,EAAQwR,MAAoBxR,GAAShd,MACnEw5B,EAAO7uB,KAAKqS,EAAQhd,YACf,GACY,UAAjBgd,EAAQ1hB,MACR0hB,GAAShd,OACTgd,GAAShd,OAAOu4B,SAEhB,IAAK,MAAMkB,KAAgBzc,EAAQhd,MAAMu4B,SACvCiB,EAAO7uB,QAAQ4uB,GAAiBE,IAGpC,OAAOD,GAGIE,GAEmBnB,IAC9B,MAAMiB,EAAkC,GACxC,IAAK,MAAMxc,KAAWub,EACpBiB,EAAO7uB,QAAQ4uB,GAAiBvc,IAElC,OAAOwc,GAmIIG,GAA6BH,IACxC,MAAMI,EAA2B,CAAE,EACnC,IAAK,MAAMf,KAASW,EAClB,GAAIX,GAAOlC,UAAW,CACpB,MAAMA,EAAYkC,EAAMlC,UACA,WAApBkC,EAAMjC,UAENgD,EAAoBjD,IADE,IAApBkC,GAAOhpB,SACwB0E,GAAE2H,OAAO,CACxC2d,eAAgB,yBAChBC,mBAAoB,gCAGWvlB,GAAE2H,SAAS6d,WAAWC,WAE5B,aAApBnB,EAAMjC,UAEbgD,EAAoBjD,IADE,IAApBkC,GAAOhpB,SACwB0E,GAAE0lB,QAAQ,CACzCJ,eAAgB,2BAGetlB,GAAE0lB,UAAUF,WAAWC,WAIxDJ,EAAoBjD,IADE,IAApBkC,GAAOhpB,SACwB0E,GAC9B4H,OAAO,CAAEre,QAAS,2BAClBo8B,IAAI,EAAG,0BAEuB3lB,GAAE4H,SAAS4d,WAAWC,WAK/D,OAAOJ,GCxLHO,GACJn6B,IAEA,MAAMsC,EAAEA,GAAMC,mBACRi3B,EAASE,GAAa15B,EAAMu4B,UAC5B6B,EAAwB,GAC9B,IAAK,MAAMvB,KAASW,EACdX,GAAO3B,QACTkD,EAAsBzvB,KAAKkuB,EAAMlC,WAGrC,MAAOE,EAAcwD,GAAmBp+B,EAAAA,SACtCm+B,GAEIE,EAAqB,CAAE,EAC7B,IAAK,MAAMtd,KAAWhd,EAAMu4B,SAEN,UAAlBvb,GAAS1hB,MACS,UAAlB0hB,GAASwR,MACTxR,GAAShd,OAAO4mB,eAEhB0T,EAActd,EAAQhd,MAAM22B,WAAa3Z,EAAQhd,MAAM4mB,cAG3D,MAAOqQ,EAAgBsD,GAAqBt+B,EAAAA,SAAmB,IACzDu+B,EAAajmB,GAAEiD,OAAOmiB,GAA0BH,IAEhDhD,EAAciE,EAAAA,QAAkB,CACpCC,SAAUC,EAAWA,YAACH,GACtBI,cAAeN,IAEX5D,EAAaF,EAAYqE,QACzBC,EAAiBC,EAAAA,YACjBC,EAAkCh7B,GAAOg7B,2BAwDzCvE,EAAc,CAClBwE,cAAe,CAACtE,EAAmBuE,KACjC1E,EAAYpD,SAASuD,EAAWuE,IAElCC,UAAYxE,IACV0D,GAAiBe,GACG,IAAIA,EAAWzE,MAIrC0E,UAAY1E,IACV0D,GAAiBe,GACGA,EAAUjyB,QAAQkL,GAAMA,IAAMsiB,OAIpD2E,aAAe3E,IACb4D,GAAmBa,GACC,IAAIA,EAAWzE,MAIrC4E,YAAc5E,IACZ4D,GAAmBa,GACCA,EAAUjyB,QAAQkL,GAAMA,IAAMsiB,QAUtD,OAJAv6B,EAAAA,WAAU,KApFS2D,WACjB,IAAIy7B,EAAW,KASf,GARIx7B,GAAOy7B,eACTD,EAAWx7B,EAAMy7B,eAEjBT,GACAF,EAAeE,KAEfQ,EAAWV,EAAeE,IAExBQ,EAAU,CACZ,MAAME,QAA6B17B,EAAM27B,WAAW9zB,eAClD2zB,GAEF,GAAIE,EAAiB,CACnBlF,EAAY9F,MAAM,IAAKgL,IACnB17B,GAAO47B,gBACT57B,GAAO47B,eAAenF,EAAaD,EAAakF,GAElD,IAAK,MAAM7C,KAASW,EAEK,aAArBX,GAAOjC,WACP8E,EAAgB7C,EAAMlC,YAEtBH,EAAYpD,SACVyF,EAAMlC,UACN+E,EAAgB7C,EAAMlC,WAAa,UAM3CH,EAAY9F,MAAM,KAqDpBmL,KACC,CAAC77B,GAAOy7B,iBAGTh5B,EAAAA,KACEsG,EAAAA,SAAA,CAAAhG,SAAA,CAAAJ,MAACkC,GAAG,CACFN,GAAI,CACFkB,QAAS,OACT8H,KAAM,EACNnI,MAAO,OACPD,OAAQ,cACRO,cAAe,SACfC,WAAY,SACZJ,SAAU,QAGZxC,SAAAJ,EAAAA,IAACwK,EAAKA,MAAA,CAAC5I,GAAI,CAAEa,MAAO,QAAUgI,sBAC3BpN,EAAMu4B,SAAS9rB,KAAI,CAACqvB,EAA+BrsB,IACzB,UAArBqsB,EAAYxgC,KAEZqH,EAAAA,IAAC21B,GAAgB,IAEXwD,EAAY97B,MAChBw2B,YAAaA,EACbE,WAAYA,EACZD,YAAaA,EACbI,aAAcA,EACdI,eAAgBA,GANXxnB,GAUY,UAArBqsB,EAAYxgC,MACS,UAArBwgC,EAAYtN,KAGV7rB,EAAAA,IAAC2zB,GAAgB,CAEfC,UAAWuF,EAAY97B,MACvBw2B,YAAaA,EACbE,WAAYA,EACZD,YAAaA,EACbI,aAAcA,EACdI,eAAgBA,GANXxnB,GAUY,UAArBqsB,EAAYxgC,MACS,SAArBwgC,EAAYtN,KAGV7rB,EAAAA,IAACwK,EAAAA,MAAK,CAEJO,KACEouB,GAAa97B,OAAO82B,WAAWC,WAAa,CAC1ClV,GAAI,EACJD,GAAI,EACJF,GAAI,IAGRnd,GAAI,CAAEkC,QAAS,EAAGrB,MAAO,QAAQrC,SAEjCJ,EAAC0B,IAAAy3B,EAAYxe,KACX,CAAAkZ,YAAaA,EACbE,WAAYA,KAZTjnB,QANJ,QA2BbhN,OAACoC,GAAG,CACFN,GAAI,CACFkB,QAAS,OACTL,MAAO,OACPO,WAAY,SACZC,eAAgB,cACjB7C,SAAA,CAEA/C,GAAOxC,QACNwC,EAAMxC,QAAQiP,KAAKrP,IACwB,IAArCA,GAAQ66B,iBAAiB8D,QACpBp5B,EAAAA,IAACk1B,GAAe,IAAAz6B,EAAQ2K,OAAQ2uB,IAEhC/zB,uBAIXA,EAAK0B,IAAA0E,WAAA,CAAA,GAEPpG,EAAA0B,IAAA,MAAA,CAAKjJ,MAAO,CAAEmS,KAAM,KACpB5K,EAAA0B,IAAClB,EAAMA,OAAA,CACLC,QACEpD,GAAOg8B,iBAAiB9D,oBACpBl4B,EAAMg8B,gBAAgB9D,oBACtB,YAEN3zB,GAAI,CAAEwP,EAAG,GACTkoB,UACEj8B,GAAOg8B,iBAAiBh2B,KACtBrD,MAACoD,EAAeA,gBAAA,CAACC,KAAMhG,EAAMg8B,gBAAgBh2B,OAC3C,KAEN3C,MACErD,GAAOg8B,iBAAiB7D,kBACpBn4B,EAAMg8B,gBAAgB7D,kBACtB,UAEN70B,QAASkzB,EAAY0F,cAClB1hB,IACC1C,QAAQsc,IAAI,cAAe5Z,GAhKpBza,OAAOgI,IACxB,KAAI/H,GAAOm8B,mBAAsBn8B,EAAMm8B,kBAAkBp0B,KAGrDA,EAAQ,CACV,MAAMI,QAAyBnI,EAAM27B,WAAWzzB,WAAWH,GACvDI,IACFquB,EAAY9F,MAAM,IAAKvoB,IACnBnI,GAAOo8B,6BACTp8B,EAAMo8B,4BAA4Bj0B,GAEhCnI,GAAOq8B,iBACTr8B,EAAMq8B,qBAqJFn0B,CAAWsS,MAEZ+c,IACC/3B,EAAKA,MAACF,MACJ,wEAEFwY,QAAQsc,IAAI,wBAAyBmD,eAIxCj1B,EAAEtC,GAAOg8B,iBAAiBlzB,OAAS,oBAEtCnG,EAAC0B,IAAAlB,EAAMA,OACL,CAAAC,QACEpD,GAAOs8B,mBAAmBpE,oBACtBl4B,EAAMs8B,kBAAkBpE,oBACxB,YAEN+D,UACEj8B,GAAOs8B,mBAAmBt2B,KACxBrD,EAAAA,IAACoD,EAAAA,gBAAgB,CAAAC,KAAMhG,EAAMs8B,kBAAkBt2B,OAC7C,KAEN3C,MACErD,GAAOs8B,mBAAmBnE,kBACtBn4B,EAAMs8B,kBAAkBnE,kBACxB,QAEN5zB,GAAI,CAAEwP,EAAG,GACTzQ,QAAS,KACHtD,GAAOq8B,iBACTr8B,EAAMq8B,kBAER7F,EAAY9F,MAAM4J,IAGnBv3B,SAAAT,EAAEtC,GAAOs8B,mBAAmBxzB,OAAS,6BCxR1CyzB,GACJC,IAEA,MAAMl6B,EAAEA,GAAMC,mBACRgF,EAAU9D,MACVjB,mBAAEA,EAAkBH,QAAEA,GAAYF,GAAsB,CAC5Dc,KAAMX,EAAEk6B,GAAWzE,qBAAuB,uBAC1Cl1B,MAAOP,EAAE,gBACTiB,qBAAsBxD,gBACdy8B,GAAWxE,SACfwE,EAAUC,yBACVD,EAAUE,6BAERF,GAAWh1B,YACbg1B,EAAUh1B,gBAIhB,IAAIm1B,GAAkB,EAKtB,GAJIH,EAAUz4B,YACZ44B,EAAkBp1B,EAAQ3D,iBAAiB44B,EAAUz4B,YAGnD44B,EACF,OACEl6B,OAAAsG,EAAAA,SAAA,CAAAhG,SAAA,CACEJ,EAAC0B,IAAA7B,EAAqB,CAAA,GACtBC,EAACiK,KAAAvJ,SACC,CAAAG,QAASvD,UACP,GACEy8B,GAAWC,0BACXD,GAAWC,yBAAyB1xB,OAAS,EAC7C,CACA,GAAIyxB,GAAWpE,oBACb,IAAK,MAAMrwB,KAAUy0B,EAAUC,yBAC7B,IAAKD,EAAUpE,oBAAoBrwB,GACjC,QAIoC,IAAtCy0B,GAAWnE,uBACbh2B,GAAQ,UAEFm6B,EAAUxE,SACdwE,EAAUC,yBACVD,EAAUE,4BAERF,GAAWh1B,YACbg1B,EAAUh1B,mBAIdhI,EAAAA,MAAMF,MAAMgD,EAAE,0CAGlBc,QACEo5B,GAAW1zB,MACP,WACA0zB,GAAWvE,iBAAiBC,oBAC5BsE,EAAUvE,gBAAgBC,oBAC1B,OAENxqB,KAAK,QACLrK,MAAOm5B,GAAWvE,iBAAiBE,mBAAqB,UAASp1B,SAAA,CAEhEy5B,GAAWx2B,KACVrD,EAAC0B,IAAA0B,kBACC,CAAA3K,MAAO,CAAE8K,YAAa,EAAGkkB,WAAY,GACrCpkB,KAAMw2B,EAAUx2B,OAGlBrD,EAAAA,IAAKoG,EAAAA,SAAA,CAAA,GAENyzB,GAAW1zB,MAAQxG,EAAEk6B,EAAU1zB,OAASnG,EAAA0B,IAAA0E,EAAAuJ,SAAA,WC7C7CsqB,GAAoB/K,EAAAA,OAAOgL,EAAAA,YAAPhL,CAAoB,CAC5CpsB,QAAS,OACTE,WAAY,WAGRm3B,GAAsBjL,EAAMA,OAACkL,EAAaA,cAApBlL,EAC1B,EAAGptB,QAAOu4B,iBAAkB,CAC1BjR,SAAU,QACV3mB,MAAO,cACPD,OAAQ,cACRX,OAAQ,EACRy4B,QAASD,EAAW/L,SAAW,EAAI,EACnCiM,cAAeF,EAAW/L,SAAW,OAAS,OAC9CkM,WAAY14B,EAAM24B,YAAYt+B,OAAO,CAAC,gBAIpCu+B,GAAkBxL,EAAMA,OAACnpB,EAASA,UAAhBmpB,EAErB,EAAGptB,QAAOu4B,iBAAkB,CAC7BjR,SAAU,QACVuR,UAAW,OACXl4B,MAAO43B,EAAW/L,SAAW,IAAM,uBACnCgM,QAASD,EAAW/L,SAAW,EAAI,EACnCkM,WAAY14B,EAAM24B,YAAYt+B,OAAO,CAAC,QAAS,gBAG3Cy+B,GACJv9B,IAEA,MAAMsC,EAAEA,GAAMC,mBACRgF,EAAU9D,KACV+5B,GAAuBx9B,GAAOy9B,eAAeC,YAAY35B,WAC3DwD,EAAQ3D,iBAAiB5D,EAAMy9B,cAAcC,WAAW35B,WAGtD45B,EHgJa,EACnBC,EACAl+B,EACAm+B,KAEA,MAAMC,EAAW,GACXC,EAAa,GACnB,GAC6B,YAA3BH,EAAkBtiC,MACa,IAA/BsiC,EAAkBI,IAAItwB,KAEtB,IAAK,MAAM3F,KAAUrI,EACnBo+B,EAASnzB,KAAK5C,GACdg2B,EAAWpzB,KAAK5C,EAAO81B,SAGzB,GAAID,GAAmBI,IACrB,IAAK,MAAMC,KAAcL,EAAkBI,IAAK,CAC9C,MAAMj2B,EAASrI,EAAK25B,MAAMhlB,GAAMA,EAAEwpB,KAAmBI,IACrDH,EAASnzB,KAAK5C,GACdg2B,EAAWpzB,KAAKszB,GAItB,MAAO,CAAEC,gBAAiBJ,EAAUK,kBAAmBJ,IGxKjCK,CACpBp+B,GAAOy9B,eAAeG,mBAAqB,CACzCI,IAAK,IAAIrQ,IACTryB,KAAM,WAER0E,GAAOy9B,eAAe/9B,MAAQ,GAC9BM,GAAOy9B,eAAeI,eAAiB,MAEzC,OACEp7B,OAACqD,EAAAA,QAAO,CAAA/C,SAAA,CAENy6B,GAC4C,QAA5Cx9B,GAAOy9B,eAAeY,UAAUA,SAC9B57B,EAAAA,KAACU,EAAMA,QAACG,QAAStD,GAAOs+B,sBACtBv7B,SAAA,CAAAJ,EAAAA,IAACoD,EAAeA,gBAAA,CACdC,KAAK,MACL5K,MAAO,CAAE8K,YAAa,EAAGkkB,WAAY,KAEtC9nB,EAAE,oBAGLK,qBAED3C,GAAOy9B,eAAec,WACrBv+B,EAAMy9B,cAAcc,WAAW9xB,KAAI,CAAC+vB,EAAW/sB,KACD,IAA5C+sB,GAAWgC,iBAAiBC,YAC1BC,EAAArjC,cAACkhC,GACK,IAAAC,EACJ7iB,IAAKlK,EACLjI,WAAYzH,UACVC,EAAMy9B,cAAc9B,WAAWn0B,WAC7BxH,GAAOy9B,eAAekB,2BAG1BjC,2BAA4BiB,EAAcQ,kBAC1C1B,yBAA0BkB,EAAcO,kBAExC,OAGNv7B,EAAAA,IAAAoG,EAAAuJ,SAAA,CAAA,GAEF3P,MAACkC,EAAAA,IAAI,CAAAN,GAAI,CAAEgJ,KAAM,EAAG0c,GAAI,IAAKlnB,SAAG/C,GAAOy9B,eAAemB,OAEtDj8B,EAAAA,IAACk8B,EAAOA,QAAC,CAAAh8B,MAAM,mBACbF,EAAC0B,IAAAy6B,EAAmBA,qBAACC,OAAQp8B,MAACo6B,EAAaA,cAAA,IACzCh6B,SAAAJ,EAAA0B,IAAC26B,qBAAmB,CAAAvwB,SAAS,cAIjC9L,EAAAA,IAACk8B,EAAOA,QAAA,CAACh8B,MAAM,mBACbF,EAAAA,IAACs8B,EAAAA,oBACCF,OAAQ,CAAC/+B,EAAO7C,IACdwF,MAACo6B,EAAAA,cAAa,IAAK/8B,EAAOqD,MAAM,mBAC9BV,MAACu8B,EAAAA,OACCC,aAAchiC,EAAMiiC,YACpB/7B,MAAM,UACND,QAAQ,MAERL,SAAAJ,MAAC08B,EAAAA,mBAAmB,CAAA5wB,SAAS,kBAOtCzO,GAAOy9B,eAAe6B,aACrB38B,EAAAA,IAACk8B,EAAAA,QAAQ,CAAAh8B,MAAOP,EAAE,oBAAmBS,SACnCJ,EAAAA,IAAC4D,EAAAA,YAAWjD,QAAStD,GAAOu/B,wBAC1B58B,EAAC0B,IAAA0B,EAAeA,iBAACC,KAAK,eAI1BrD,EAAK0B,IAAA0E,EAAAuJ,SAAA,IAGP3P,EAAAA,IAAC0J,EAAAA,SACCmzB,YAAY,WACZp8B,QAAQ,SACRq8B,UAAQ,EACRl7B,GAAI,CAAE0lB,GAAI,MAGZtnB,EAAC0B,IAAAw6B,EAAOA,SAACh8B,MAAOP,EAAE,sBAAqBS,SACrCJ,MAAC+8B,EAAWA,YAAA,CAACX,OAAQp8B,EAAAA,IAACg9B,EAAAA,SAAW,CAAA,GAAA58B,SAC/BJ,EAAAA,IAACoD,EAAAA,iBAAgBC,KAAK,aAAa3C,MAAM,cAI7CZ,EAAAA,KAACm6B,cACCj6B,EAAC0B,IAAAu7B,EAAkBA,oBACjBb,OAAQ,CAACc,EAAc1iC,IACrBwF,MAACk8B,EAAOA,QAAA,CAACh8B,MAAOP,EAAE,oBAAqBw9B,WAAY,EACjD/8B,SAAAJ,EAAAA,IAACm6B,GAAmB,IACd+C,EACJ7C,WAAY,CAAE/L,SAAU9zB,EAAM8zB,UAC9B5tB,MAAM,UACS,gBAAAlG,EAAM8zB,SAAQluB,SAE7BJ,EAAAA,IAACoD,EAAeA,iBAACC,KAAK,iBAK9BrD,EAAAA,IAACo9B,EAAAA,mBACC,CAAAhB,OAAQ,EAAGhkC,SAAQilC,GAAgB7iC,IACjCwF,MAAC06B,GAAe,IACV2C,EACJhD,WAAY,CAAE/L,SAAU9zB,EAAM8zB,UAC9BgP,SAAUllC,EAAG,aACF,SACXmlC,YAAa,GAAG59B,EAAE,yBAClBoL,KAAK,QACL/E,UAAW,CACTw3B,MAAO,CACLC,eACEz9B,EAAAA,IAAC09B,EAAAA,eAAc,CAACv7B,SAAS,QACvB/B,SAAAJ,EAAA0B,IAAC0B,EAAeA,gBAAC,CAAAC,KAAK,aAG1Bs6B,aAAcnjC,EAAMS,MAClB+E,EAAAA,IAAC09B,EAAAA,eAAc,CAACv7B,SAAS,eACvBnC,EAAAA,IAAC49B,EAAgBA,kBACfC,KAAK,MACL9yB,KAAK,qBACM,eAAc3K,SAGzBJ,EAAAA,IAACoD,EAAAA,gBAAe,CAACC,KAAK,cAGxB,QACDg6B,EAAar3B,WAAWw3B,UAE1BH,EAAar3B,kBAO1BhG,EAAAA,IAAC4D,EAAUA,WACT,CAAAjD,QAAS,KACPtD,EAAMy9B,cAAc9B,WAAWn0B,WAC7BxH,GAAOy9B,eAAekB,2BAEzB57B,SAEDJ,EAAC0B,IAAA0B,kBAAgB,CAAAC,KAAK,kBCpNxBy6B,GACJjE,IAEA,MAAMl6B,EAAEA,GAAMC,mBACRgF,EAAU9D,MACVjB,mBAAEA,EAAkBH,QAAEA,GAAYF,GAAsB,CAC5Dc,KAAMX,EAAEk6B,GAAWzE,qBAAuB,uBAC1Cl1B,MAAOP,EAAE,gBACTiB,qBAAsBxD,gBACdy8B,GAAWxE,SAASwE,EAAUz0B,SAChCy0B,GAAWh1B,YACbg1B,EAAUh1B,gBAIhB,IAAIm1B,GAAkB,EAClBH,EAAUz4B,YACZ44B,EAAkBp1B,EAAQ3D,iBAAiB44B,EAAUz4B,YAEvD,IAAI28B,EAAiB,CAAE,EACnBlE,GAAWmE,8BACbD,EAAYlE,EAAUmE,4BAA4BnE,EAAUz0B,SAE9D,IAAI64B,GAA2B,EAC3BpE,GAAWoE,2BACbA,EAA2BpE,GAAWoE,yBACpCpE,EAAUz0B,SAGd,IAAI84B,GAA4B,EAMhC,GALIrE,GAAWqE,4BACbA,EAA4BrE,EAAUqE,0BACpCrE,EAAUz0B,SAGV40B,GAAmBiE,EACrB,OACEn+B,EAAAA,2BACEE,EAAAA,IAACH,MACDG,EAAA0B,IAACy8B,EAAmBA,oBAClB,CAAAh1B,SAAU+0B,EACV76B,KACErD,EAAAA,IAACk8B,EAAAA,QAAQ,CAAAh8B,MAAO25B,GAAW1zB,MAAQxG,EAAEk6B,EAAU1zB,OAAS,YACtDnG,EAAAA,IAACoD,EAAAA,iBACCC,KAAMw2B,EAAUx2B,KAChB5K,MAAO,IACFslC,EACHr9B,MAAOw9B,EACH,OACoB1gC,MAApBugC,GAAWr9B,MACXq9B,EAAUr9B,WACVlD,OAKZ4gC,WAAYvE,GAAWgC,iBAAiBuC,aAAc,EACtDj4B,MAAO,GACPopB,UAAU,cACV7uB,MAAM,UACNC,QAASvD,UACP,IAAK8gC,EAA2B,CAC9B,GAAIrE,GAAWpE,sBACRoE,EAAUpE,oBAAoBoE,EAAUz0B,QAC3C,QAGsC,IAAtCy0B,GAAWnE,uBACbh2B,GAAQ,UAEFm6B,EAAUxE,SAASwE,EAAUz0B,SAEqB,IAAtDy0B,GAAWgC,iBAAiBwC,uBAC5BxE,GAAWh1B,YAEXg1B,EAAUh1B,sBClC5B,IAAIy5B,IAA0B,EAU9B,MAAMC,GAAiB5B,IACrB,IACE,MAAM6B,EAAQxkC,aAAaC,QAAQ0iC,GACnC,OAAO6B,EAAQrjB,KAAKsjB,MAAMD,GAAS,CAAE,EACrC,MAAOnxB,GAEP,OADA8H,QAAQxY,MAAM,4BAA6B0Q,GACpC,CAAE,IAIPqxB,GAAgB,CAAC/B,EAAsBgC,KAC3C,MAAMC,EAAUL,GAAc5B,GAC9B3iC,aAAa6kC,QACXlC,EACAxhB,KAAKC,UAAU,IAAKwjB,KAAYD,MAI9BG,GAAoB,CAAC,YAAa,WAElCC,GAA6C1hC,IACjD,MAAMqQ,EAAY3R,EAAWA,aAAEvB,GAAeA,EAAMkT,aAC9CsxB,iBAAEA,GC7EkB,MAC1B,MAAM7hC,iBAAEA,GAAqBvB,KACvB8R,EAAY3R,EAAWA,aAAEvB,GAAeA,EAAMkT,YAC9CsxB,EAAmB5hC,MAAOq2B,IAC9B,IAAI3sB,EAAU,GASd,aARM3J,EAAiB,CACrBG,YAAa,2BACbG,UAAU,EACVF,WAAY,CAAEk2B,cACd51B,gBAAkBpB,IAChBqK,EAAUrK,EAASM,QAGhB+J,GAcT,MAAO,CAAEm4B,yBAZwB7hC,MAAOC,IACtC,IAAIyJ,QAAgBk4B,EAAiB3hC,EAAMo2B,YAC3C,MAAO,IACFp2B,EACHyJ,UACAD,aAC6B,QAA3B6G,EAAUxT,aACN,kBACA,kBACN0M,WAAY,gBAGmBo4B,qBDkDNE,IACtBC,EAAkBC,GAAuB9lC,EAAAA,SAE9C,KACIqG,EAAEA,GAAMC,mBACRi3B,EAASE,GAAa15B,EAAMgiC,cAC5BnL,EAAe,GACfoL,EAAan4B,EAAMo4B,SACvB,IAAOliC,GAAOs/B,aAAe4B,GAAclhC,EAAMs/B,cAAgB,CAAE,GACnE,IAEF,IAAK,MAAMzG,KAASW,GACe,IAA7BX,GAAOsJ,WAAWjL,QACpBL,EAAalsB,KAAKkuB,EAAMlC,WAG5B,IAAIyL,EAAoD,CAAE,EAC1D,GAAIH,GAAYI,sBAAuB,CACrCD,EAAyBH,EAAWI,sBACpC,MAAMC,EAAiBx7B,OAAOC,KAAKq7B,GACnC,IAAK,MAAMvJ,KAAShC,EACbyL,EAAeh3B,SAASutB,KAC3BuJ,EAAuBvJ,IAAS,QAIpC,IAAK,MAAMA,KAAShC,EAClBuL,EAAuBvJ,IAAS,EAIpC,MAAM0J,EAAiB7jC,EAAAA,aACpBvB,GAAeA,EAAMkT,UAAUxT,gBAgB3BwlC,EAAuBG,GAC5B14B,EAAM7N,SAAoCmmC,IACrCK,EAAaC,GAAkB54B,EAAM7N,SAC1CgmC,EAAWQ,aAAe,KAErBE,EAAcC,GAAmB94B,EAAM7N,SAE3CgmC,EAAWU,cAAgB,KACvBE,EAAsBC,GAC3B7mC,EAAQA,SAAuBgmC,EAAWc,qBAAuB,IACnE,IAAIC,EAAUf,GAAYgB,eAAej+B,MAAQ,GACjDg+B,EAAUA,EAAQ75B,QACfpB,IAAiB05B,GAAkBn2B,SAASvD,KAE/C,IAAIm7B,EAAWjB,GAAYgB,eAAej5B,OAAS,IAAM,GACzDk5B,EAAWA,EAAS/5B,QACjBpB,IAAiB05B,GAAkBn2B,SAASvD,KAG/C,MAAOk7B,EAAeE,GAAoBlnC,WAAiC,CACzE+I,KAAM,IAAwB,QAAnBu9B,EAA2Bd,GAAoB,MAAQuB,GAClEh5B,MAAO,IACkB,QAAnBu4B,EAA2Bd,GAAoB,MAChDyB,KAID37B,EAAU9D,KACV2/B,EAAWC,EAAAA,eACVC,EAAgBC,GAAqBtnC,EAAAA,SAAc,OACnDunC,EAAcC,GAAmBxnC,EAAAA,SAAc,OAC/CynC,EAAeC,GAAoB1nC,EAAAA,SAA4B,CAAA,GAChE2nC,EAAoB7jC,UACxB,IAAI8jC,ELnHyB,EAACrK,EAAQsK,EAAmBxhC,KAC3D,MAAMyhC,EAAqC,GAE3C,IAAK,MAAMC,KAAcxK,EACvB,GAC4B,SAA1BwK,GAAYpN,WACc,WAA1BoN,GAAYpN,UACZ,CACA,MAAMoC,EAA6B,IAC9BgL,GAAY7B,WAAW8B,SAC1BC,SAC+C/jC,MAA7C6jC,GAAY7B,WAAW8B,UAAUC,SAC7BF,GAAY7B,WAAW8B,UAAUC,SACjCJ,EACNxoC,KAA+B,UAAzB0oC,GAAYpN,UAAwB,SAAW,SACrDiC,MAAOmL,GAAYrN,UACnBwN,WAAY7hC,EAAE0hC,GAAY7M,YAAc6M,GAAYrN,WACpDyN,YAAa,SACbC,MAAO,SACPnN,OAAQ8M,GAAY9M,OACpBoN,WAAYN,GAAY7B,WAAWmC,WACnC/2B,KAAM,EACNlI,SAAU,KAGZ0+B,EAAQp5B,KAAKquB,QACR,GAA8B,SAA1BgL,GAAYpN,UAAsB,CAC3C,MAAMoC,GDjE4BP,ECiEoB,IACjDuL,GAAY7B,WAAW8B,SAC1BC,SAC+C/jC,MAA7C6jC,GAAY7B,WAAW8B,UAAUC,SAC7BF,GAAY7B,WAAW8B,UAAUC,SACjCJ,EACNjL,MAAOmL,GAAYrN,UACnBwN,WAAY7hC,EAAE0hC,GAAY7M,YAAc6M,GAAYrN,WACpDyN,YAAa,SACbC,MAAO,SACPnN,OAAQ8M,GAAY9M,OACpBoN,WAAYN,GAAY7B,WAAWmC,WACnC/2B,KAAM,EACNlI,SAAU,KD7EmB,IAC9BozB,EACHn9B,KAAM,SACNo9B,eAAiBn4B,GAEboC,EAAAA,IAACiP,GACC,CAAArN,GAAI,CAAEa,MAAO,QACb0D,MAAM,GACNlL,MAAO2C,EAAO3C,MACdqS,iBAAmBM,IACjBhQ,EAAOo4B,IAAIC,iBAAiB,CAC1B3rB,GAAI1M,EAAO0M,GACX4rB,MAAOt4B,EAAOs4B,MACdj7B,MAAO2S,OAMjBuoB,YAAa,CAACl7B,EAAYm7B,EAAUC,KAClC,IAAIzoB,EAAI,KAIR,OAHc,OAAV3S,IACF2S,EAAI0B,EAAOrU,GAAOsU,OAAOZ,KAEpBf,GAET0oB,eAAgB,CAACr7B,EAAYm7B,EAAUC,IAC9BD,EAAIC,EAAOH,SCoDlBkL,EAAQp5B,KAAKquB,QACR,GAA8B,aAA1BgL,GAAYpN,UAA0B,CAC/C,MAAMoC,EAA6BR,GAAuB,IACrDwL,GAAY7B,WAAW8B,SAC1BC,SAC+C/jC,MAA7C6jC,GAAY7B,WAAW8B,UAAUC,SAC7BF,GAAY7B,WAAW8B,UAAUC,SACjCJ,EACNjL,MAAOmL,GAAYrN,UACnBwN,WAAY7hC,EAAE0hC,GAAY7M,YAAc6M,GAAYrN,WACpDyN,YAAa,SACbC,MAAO,SACPnN,OAAQ8M,GAAY9M,OACpBoN,WAAYN,GAAY7B,WAAWmC,WACnC/2B,KAAM,EACNlI,SAAU,MAEZ0+B,EAAQp5B,KAAKquB,QACR,GAA8B,aAA1BgL,GAAYpN,UAA0B,CAC/C,MAAMoC,EAASM,GAAuB,IACjC0K,GAAY7B,WAAW8B,SAC1BC,SAC+C/jC,MAA7C6jC,GAAY7B,WAAW8B,UAAUC,SAC7BF,GAAY7B,WAAW8B,UAAUC,SACjCJ,EACNjL,MAAOmL,GAAYrN,UACnBwN,WAAY7hC,EAAE0hC,GAAY7M,YAAc6M,GAAYrN,WACpDyN,YAAa,SACbC,MAAO,SACPnN,OAAQ8M,GAAY9M,OACpBoN,WAAYN,GAAY7B,WAAWmC,WACnCv0B,aAAci0B,GAAYj0B,aAC1BG,eAAgB8zB,GAAY9zB,eAC5B9K,MAAO,MAET2+B,EAAQp5B,KAAKquB,QACR,GAA8B,aAA1BgL,GAAYpN,UAA0B,CAC/C,MAAMoC,EAA6BE,GAAoB,IAClD8K,GAAY7B,WAAW8B,SAC1BC,SAC+C/jC,MAA7C6jC,GAAY7B,WAAW8B,UAAUC,SAC7BF,GAAY7B,WAAW8B,UAAUC,SACjCJ,EACNjL,MAAOmL,GAAYrN,UACnBwN,WAAY7hC,EAAE0hC,GAAY7M,YAAc6M,GAAYrN,WACpDyN,YAAa,SACbC,MAAO,SACPnN,OAAQ8M,GAAY9M,OACpBoN,WAAYN,GAAY7B,WAAWmC,WACnC/6B,WAAYy6B,GAAYpM,kBAAoB,QAC5CpuB,aAAcw6B,GAAYrM,oBAAsB,UAChDluB,QAASu6B,GAAYv6B,SAAW,GAChC8D,KAAM,EACNlI,SAAU,MAEZ0+B,EAAQp5B,KAAKquB,QACR,GAA8B,WAA1BgL,GAAYpN,UAAwB,CAC7C,MAAMoC,EAA6BE,GAAoB,IAClD8K,GAAY7B,WAAW8B,SAC1BC,SAC+C/jC,MAA7C6jC,GAAY7B,WAAW8B,UAAUC,SAC7BF,GAAY7B,WAAW8B,UAAUC,SACjCJ,EACN1N,WAAY4N,GAAY5N,WACxByC,MAAOmL,GAAYrN,UACnBwN,WAAY7hC,EAAE0hC,GAAY7M,YAAc6M,GAAYrN,WACpDyN,YAAa,SACbC,MAAO,SACPnN,OAAQ8M,GAAY9M,OACpBoN,WAAYN,GAAY7B,WAAWmC,WACnC/6B,WAAYy6B,GAAYpM,kBAAoB,QAC5CpuB,aAAcw6B,GAAYrM,oBAAsB,UAChDluB,QAASu6B,GAAYv6B,SAAW,GAChC8D,KAAM,EACNlI,SAAU,MAEZ0+B,EAAQp5B,KAAKquB,GD5JoB,IAACP,EC+JtC,OAAOsL,GKNaQ,CAChB/K,EAC8B,QAA9Bx5B,GAAOq+B,UAAUA,WAAsB,EACvC/7B,GAEF,IAAK,IAAIipB,KAAcsY,EACjBtY,GAAY6K,aACd7K,EAAW/hB,aACkB,QAA3B6G,EAAUxT,aACN,kBACA,kBACN0uB,EAAW9hB,cAAgBk4B,EAAiBpW,EAAW6K,YACvD7K,EAAWhiB,WAAa,eAG5Bw4B,EAAoB8B,KAEfjG,EAAmB4G,GACxBvoC,WAAgC,CAAE+hC,IAAK,IAAIrQ,IAAOryB,KAAM,YAC1D,IAAIuiC,EAAwB,KACxB79B,GAAO69B,gBACTA,EAAgB79B,GAAO69B,eAEzB,MAAMl2B,EAAU3H,EAAM2H,QAChB88B,EAAmBlwB,EAACA,EAACiD,OAAOmiB,GAA0BH,IAC5D,IAAIkL,GAAgB,EAChB1kC,GAAO09B,YAAY35B,YACrB2gC,EAAgBn9B,EAAQ3D,iBAAiB5D,EAAM09B,WAAW35B,YAE5D,IAAI4gC,GAAkB,EAClB3kC,GAAO4kC,cAAc7gC,YACvB4gC,EAAkBp9B,EAAQ3D,iBAAiB5D,EAAM4kC,aAAa7gC,YAGhE,MAmDMvB,mBAAEA,EAAoBH,QAASwiC,GACnC1iC,GAAsB,CACpBU,MAAO,eACPI,KAAM,gDACNM,qBA1BuBxD,UACzB,IAAIuI,GAAS,EACPg7B,IAA4C,IAA1BA,GAAgBwB,QACtCx8B,QAAetI,EAAM27B,WAAWtzB,iBAC9Bi7B,EAAezF,KAGfv1B,IACEtI,GAAO4kC,cAAcG,0BACjB/kC,EAAM4kC,aAAaG,mBAAmBzB,GAG9C37B,GAASq9B,GACSA,EAAQ77B,QACrBpB,GACCA,EAAO81B,IAAkByF,EAAezF,WAclD,IAAIoH,EACAC,EACAC,GACAC,GACAC,GACAC,GAE8B,UAA9BtlC,GAAOq+B,UAAUA,WACnB4G,EAAkBjlC,GAAOq+B,UAAUkH,OAAOC,aAAe,cACzDN,EAAiBllC,GAAOq+B,UAAUkH,OAAOE,YAAc,MACvDN,GAAqBnlC,GAAOq+B,UAAUkH,OAAOG,eAC7CN,GAAoBplC,GAAOq+B,UAAUkH,OAAOI,cAC5CN,GAAgBrlC,GAAOq+B,UAAUkH,OAAOK,WAAa,SACrDN,GAAiBtlC,GAAOq+B,UAAUkH,OAAOM,YAAc,eAGzD,MAAQ1hC,OAAQ2hC,GAAY5hC,eAAgB6hC,IAAuB/hC,GAAU,CAC3EmB,OAAQ8/B,EACR3/B,UAAW6/B,GACX9/B,SAAU+/B,GACVxgC,gBAAiB,KACf5E,EAAM27B,WAAWn0B,WAAWxH,GAAO2+B,2BAErCv5B,MAAO8/B,EACPj/B,WAAYo/B,GACZh/B,YAAai/B,KAiTTU,GAAmC,CACvC1qC,KAAM,UACNu9B,MAAO,UACPsL,WAAY,GACZC,YAAa,SACbh/B,OACGpF,GAAOu+B,WAAuC,GAA1Bv+B,EAAMu+B,WAAWxzB,OAAc,IACnD/K,GAAO09B,YAAc19B,GAAO09B,YAAYuI,UAAY,GAAK,IACzDjmC,GAAO4kC,cAAgB5kC,GAAO4kC,cAAcqB,UAAY,GAAK,GAChEC,WA/J8B3lC,IAC9B,MAAMwH,EAAcxH,EAAOw4B,IACrBv7B,EAA+D,GACrE,GAAiC,QAA7BwC,GAAOq+B,UAAUA,gBAEel+B,IAAhCH,GAAOmmC,uBACNnmC,EAAMmmC,sBACP,CACA,MAAMC,EACJ1C,EAAc37B,EAAO81B,KAAiBrP,OAAS6X,EAAAA,aAAaC,KAC9D,GAAgC,QAA5BtmC,EAAMq+B,SAASA,UAAsB+H,EACnC1B,IACFlnC,EAAQmN,KACNhI,EAAC0B,IAAAy8B,EAAmBA,oBAClB,CAAA96B,KAAMrD,EAAAA,IAACoD,EAAeA,gBAAA,CAACC,KAAK,SAC5B8C,MAAOxG,EAAE,kBACTgB,QAAS,KAvGI,CAACyE,IAC1B,MAAMkF,EAAKlF,EAAO81B,GAClB8F,EAAiB,IACZD,EACHz2B,CAACA,GAAK,CAAEuhB,KAAM6X,EAAAA,aAAaE,SAoGfC,CAAmBz+B,OAIzBvK,EAAQmN,KACNhI,EAAC0B,IAAAy8B,EAAmBA,oBAClB,CAAA96B,KAAMrD,EAAAA,IAACoD,EAAeA,gBAAA,CAACC,KAAK,WAC5B8C,MAAOxG,EAAE,oBACTgB,QAAS,KA9CU,CAACyE,IAChC,MAAMkF,EAAKlF,EAAO81B,GACd5wB,GAAM0lB,GAAS1lB,IAAOA,EAAK,GAC7B02B,EAAiB,IACZD,EACHz2B,CAACA,GAAK,CAAEuhB,KAAM6X,EAAYA,aAACE,KAAME,qBAAqB,KAExD9+B,GAASq9B,IACP,MAAM7Q,EAAU6Q,EAAQ77B,QACrBpB,GAAgBA,EAAO81B,IAAkB5wB,IAE5C,OAAOknB,MAGTwP,EAAiB,IACZD,EACHz2B,CAACA,GAAK,CAAEuhB,KAAM6X,EAAYA,aAACE,KAAME,qBAAqB,MA+B5CC,CAAyB3+B,IAE3B1E,MAAM,kBAIP,CACL,GAAIrD,GAAO09B,aAA+C,IAAjC19B,GAAO09B,YAAYuI,UAAoB,CAC9D,IAAIU,GAA+B,EAC/B3mC,GAAO09B,YAAYkD,2BACrB+F,EACE3mC,GAAO09B,YAAYkD,yBAAyB74B,IAEhD,IAAI6+B,GAAgC,EAChC5mC,GAAO09B,YAAYmD,4BACrB+F,EACE5mC,GAAO09B,YAAYmD,0BAA0B94B,IAE7C28B,GAAiBiC,GACnBnpC,EAAQmN,KACNhI,EAAAA,IAACm+B,EAAmBA,oBAAA,CAClBh1B,SAAU86B,EACV5gC,KACErD,EAAAA,IAACk8B,EAAOA,QAAA,CAACh8B,MAAOP,EAAE,kBAChBS,SAAAJ,EAAAA,IAACoD,EAAAA,gBAAe,CACdC,KAAM,OACN5K,MAAO,CACLiI,MAAOujC,EACH,YACAzmC,OAKZ4gC,WACE/gC,GAAO09B,YAAYc,iBAAiBuC,aAAc,EAEpDj4B,MAAOxG,EAAE,kBACT4vB,UAAU,cACV7uB,MAAM,UACNC,QAAS,KACHohC,IAAkBkC,GA9Lf7mC,OAAOgI,IAC9B,GAAIA,EAEF,GADA07B,EAAgB17B,GACgB,SAA5B/H,EAAMq+B,SAASA,SACjB+E,EAASpjC,EAAMq+B,SAASkH,MAAMsB,UAAY,IAAM9+B,EAAO81B,SAClD,GAAgC,UAA5B79B,EAAMq+B,SAASA,SACxB0H,IAAmB,QACd,GAAkC,QAA9B/lC,GAAOq+B,UAAUA,SAAoB,CAC9C,MAAMpxB,EAAKlF,EAAO81B,GAClB8F,EAAiB,IACZD,EACHz2B,CAACA,GAAK,CAAEuhB,KAAM6X,EAAAA,aAAaC,UAoLfQ,CAAiB/+B,OAO7B,GAAI/H,GAAO4kC,eAAmD,IAAnC5kC,GAAO4kC,cAAcqB,UAAoB,CAClE,IAAIc,GAAiC,EACjC/mC,GAAO4kC,cAAchE,2BACvBmG,EACE/mC,GAAO4kC,cAAchE,yBAAyB74B,IAElD,IAAIi/B,GAAkC,EAClChnC,GAAO4kC,cAAc/D,4BACvBmG,EACEhnC,GAAO4kC,cAAc/D,0BAA0B94B,IAE/C48B,GAAmBoC,GACrBvpC,EAAQmN,KACNhI,EAAAA,IAACm+B,EAAmBA,oBAAA,CAClBh1B,SAAUk7B,EACVhhC,KACErD,EAAAA,IAACk8B,EAAOA,QAAA,CAACh8B,MAAOP,EAAE,oBAChBS,SAAAJ,EAAAA,IAACoD,EAAAA,gBAAe,CACdC,KAAM,QACN5K,MAAO,CACLiI,MAAO2jC,EACH,YACA7mC,OAKZ4gC,WACE/gC,GAAO4kC,cAAcpG,iBAAiBuC,aAAc,EAEtDj4B,MAAOxG,EAAE,oBACT4vB,UAAU,cACV7uB,MAAM,UACNC,QAAS,KACP,GAAIqhC,IAAoBqC,EAAiC,CACvD,GAAIhnC,GAAO4kC,cAAcxM,sBAClBp4B,EAAM4kC,aAAaxM,oBAAoBrwB,GAC1C,OAGJw7B,EAAkBx7B,GAClB88B,GAA4B,UAU9C,GAAI7kC,GAAOu+B,WACT,IAAK,MAAM/B,KAAax8B,EAAMu+B,WAGxB/B,GAAWgC,iBAAiBC,cACgB,IAA5CjC,GAAWgC,iBAAiBC,aAG9BjhC,EAAQmN,KACNhI,EAAC0B,IAAAo8B,OACKjE,EACJz0B,OAAQA,EACRP,WAAYzH,UACVC,EAAM27B,WAAWn0B,WAAWxH,GAAO2+B,8BAQ/C,OAAOnhC,IAeT,IAAIypC,GAA+C,SAEjB9mC,IAAhCH,GAAOmmC,uBACNnmC,EAAMmmC,sBACNnmC,GAAOu+B,YAAcv+B,GAAOu+B,WAAWxzB,OAAS,IAEjDk8B,GAAkBt8B,KAAKq7B,IAGzBiB,GAAoB,IAAIA,MAAsBnF,GAI9C1lC,EAAAA,WAAU,UACgB+D,IAApBH,GAAOknC,WAA6C,IAAnBlnC,EAAMknC,UACzClnC,EAAM27B,WAAWn0B,WAAWxH,GAAO2+B,0BAErCiF,MACC,IAEHxnC,EAAAA,WAAU,KACRwnC,MACC,CAACrB,EAAgBviC,EAAMgiC,eAE1B,MAiDMmF,GAA6Cr9B,EAAMo4B,SAAQ,KAC/D,MAAMkF,EAAWH,GAAkBx6B,KAAK46B,IAAS,IAC5CA,EACHjiC,MAAOu9B,EAAa0E,EAAIxO,QAAUwO,EAAIjiC,UAIxC,GAAIq9B,EAAY13B,OAAQ,CACtB,MAAMu8B,EAAa,IAAIC,IAAIH,EAAS36B,KAAK46B,GAAQ,CAACA,EAAIxO,MAAOwO,MAC7D,OAAO5E,EAAYh2B,KAAKosB,GAAUyO,EAAWhnC,IAAIu4B,KAAS1vB,OAAOq+B,SAGnE,OAAOJ,IACN,CAAC3E,EAAaE,EAAcsE,KAC/B,OACExkC,EAAAA,KACEsG,EAAAA,SAAA,CAAAhG,SAAA,CAAAJ,EAAAA,IAACH,EAAkB,CAAA,GACY,UAA9BxC,GAAOq+B,UAAUA,SAChB17B,EAAC0B,IAAAyhC,GACE,CAAA/iC,SAAA/C,GAAOq+B,UAAUkH,OAAOkC,cACvB9kC,EAAA0B,IAACrE,EAAMq+B,SAASkH,MAAMkC,cAAa,CACjChM,eACE+H,EAAeA,EAAa3F,QAAiB19B,EAE/Ck8B,gBAAiB,KACf0J,IAAmB,GACnB/lC,EAAM27B,WAAWn0B,WAAWxH,GAAO2+B,6BAIvCh8B,EAAA0B,IAAC81B,GAAY,CACXyB,eAAgB57B,EAAM47B,eACtBH,eACE+H,EAAeA,EAAa3F,QAAiB19B,EAE/Ck8B,gBAAiB,KACf0J,IAAmB,GACnB/lC,EAAM27B,WAAWn0B,WAAWxH,GAAO2+B,2BAErCpG,SAAUv4B,EAAMgiC,aAChBrG,WAAY37B,EAAM27B,WAClB+L,iBAAkB1nC,GAAO09B,YAAY35B,UACrCq4B,4BACEp8B,GAAO09B,YAAYqH,mBAErB5I,kBAAmBn8B,GAAO09B,YAAYtF,oBACtC56B,QAASwC,GAAOu+B,eAKtB57B,EAAK0B,IAAA0E,WAAA,CAAA,QAEiB5I,IAAvBH,GAAO2nC,aAA8B3nC,GAAO2nC,YAqC3ChlC,MAAKoG,EAAAA,SAAA,CAAA,GApCLtG,OAACoC,MAAG,CAACN,GAAI,CAAEkB,QAAS,uBACStF,IAA1BH,GAAO4nC,gBAAiC5nC,GAAO4nC,eAS9CjlC,EAAAA,IAAKoG,EAAAA,SAAA,CAAA,GARLpG,EAAA0B,IAACkC,aACC,CAAAjD,QAAS,KACP8/B,GAAW,EAAE,CAAElgB,SAAS,KACzBngB,SAEDJ,EAAAA,IAACoD,EAAAA,gBAAe,CAACC,KAAK,iBAK1BvD,EAAAA,KAACoC,EAAAA,IACC,CAAAN,GAAI,CACFgJ,KAAM,EACN9H,QAAS,OACTE,WAAY,SACZC,eAAgB,UAGjB7C,SAAA,CAAA/C,GAAO6nC,SACNllC,MAACoD,EAAeA,gBAAA,CACdC,KAAMhG,EAAM6nC,SACZzsC,MAAO,CAAE8K,YAAa,EAAGkkB,WAAY,KAGvCznB,MAAAoG,EAAAA,SAAA,CAAA,GAEFpG,EAAA0B,IAAC8B,EAAUA,WAAC,CAAA/C,QAAQ,KAAIL,SACrB/C,GAAO8nC,UACJhV,GAAsBxwB,EAAEtC,GAAO8nC,YAC/B,WAQX9nC,GAAO+nC,oBACR/nC,GAAO+nC,mBAAmBh9B,OAAS,GACnC/K,GAAO2+B,0BACP3+B,GAAOgoC,4BACLvlC,OAACwlC,EAAAA,UAAS,CAACC,iBAAe,EAAC3jC,GAAI,CAAEa,MAAO,QACtCrC,SAAA,CAAAJ,EAAA0B,IAAC8jC,mBAAgB,CAACC,WAAYzlC,EAAAA,IAAC0lC,EAAkBA,mBAAA,IAC/CtlC,SAAAN,EAAAA,KAACoC,EAAGA,IAAA,CACFN,GAAI,CACFkB,QAAS,OACTE,WAAY,SACZC,eAAgB,UACjB7C,SAAA,CAEDJ,MAACoD,EAAeA,gBAAA,CACd3K,MAAO,CAAEgvB,WAAY,EAAGlkB,YAAa,GACrCF,KAAK,WAEPrD,EAAAA,IAACwD,EAAAA,YAAWC,UAAU,OAA2BrD,SAAA,iBAGrDJ,EAAAA,IAAC2lC,EAAgBA,iBAAA,CAAAvlC,SACfJ,EAAAA,IAACkC,EAAAA,IAAG,CAAA9B,SACFJ,EAAAA,IAACw3B,GAAY,CACX6B,gBAAiB,CACflzB,MAAOxG,EAAE,oBACT0D,KAAM,SACNkyB,oBAAqB,WACrBC,kBAAmB,WAErBmE,kBAAmB,CACjBxzB,MAAOxG,EAAE,mBACT0D,KAAM,SACNkyB,oBAAqB,WACrBC,kBAAmB,SAErBwD,WAAY,CACVtzB,iBAAkBtI,UACT,EAETmI,WAAYnI,MAAOQ,IACHJ,MAAVI,EACFP,EAAMgoC,4BAA4BznC,GAElCP,EAAMgoC,4BAA4B,IAEpChoC,EAAM27B,WAAWn0B,WAAWjH,IAE9BiH,WAAYzH,YACZ8H,eAAgB9H,aAElBw4B,SAAUv4B,EAAM+nC,4BAMxBplC,EAAK0B,IAAA0E,WAAA,CAAA,GAGPpG,MAAC4lC,EAAAA,gBAAe,IACVvoC,GAAOikC,SACXlzB,MAAO,CAAEy3B,QAASjL,IAClB50B,UAAW,CACT6/B,QAAS,CACP/K,cAAe,IACVz9B,EACH49B,kBAAmBA,EACnBl+B,KAAMM,GAAON,MAEf4+B,sBAriBoB,KAC5B,GAAkC,SAA9Bt+B,GAAOq+B,UAAUA,SACnB+E,EAASpjC,EAAMq+B,SAASkH,MAAMsB,gBACzB,GAAkC,UAA9B7mC,GAAOq+B,UAAUA,SAC1BoF,EAAgB,MAChBsC,IAAmB,QACd,GAAkC,QAA9B/lC,GAAOq+B,UAAUA,SAAoB,CAC9C4C,IAAgD,EAChD,MAAMwH,EAAiB,CAAE,EACzBA,EAAU5K,GAAiBoD,GAC3BwH,EAAU3D,OAAQ,EAClB,IAAK,MAAMvZ,KAAcuW,EAED,WAApBvW,GAAYjwB,MACZiwB,GAAYsN,OAASgF,GAEjBtS,GAAYsN,QACd4P,EAAUld,EAAWsN,OAAS,MAIpClxB,GAAS+gC,GAAiB,CAACD,KAAcC,KACzC/E,GAAkBgF,IAAmB,IAChCA,EACH1H,CAACA,IAAwB,CAAEzS,KAAM6X,EAAAA,aAAaC,YA8gB1C/G,eA5sBa,KACjBv/B,GAAOs/B,cACT3iC,aAAaisC,WAAW5oC,EAAMs/B,cAEhCkD,EAAyB,CAAA,GACzBE,EAAe,IACfE,EAAgB,CAAA,GAChBE,EAAwB,IACxBK,EAAiB,CACfn+B,KAAM,IAAwB,QAAnBu9B,EAA2Bd,GAAoB,IAC1Dz3B,MAAO,IAAwB,QAAnBu4B,EAA2Bd,GAAoB,SAqsBzDoH,SAAW9gC,GACFA,EAAO81B,GAEhBiL,aAAa,EACbC,KAAM/oC,GAAON,KACbqkC,QAASoD,GACT6B,qBACA3K,SAAS,MACTqF,cAC6B,OAA3B1jC,EAAMq+B,SAASA,SAAoBqF,OAAgBvjC,EAErD8oC,sBAC6B,OAA3BjpC,EAAMq+B,SAASA,SA3oBY6K,IACjCvF,EAAiBuF,SA4oBP/oC,EAENgpC,sBAAsB,WACtBC,iBAjfmBrpC,MAAOgI,IAC9B,GAAgC,QAA5B/H,EAAMq+B,SAASA,SAAoB,CACrC,IAAIl2B,EAAmB,KACvB,MAAMiJ,EA9Ba,CAACrJ,IACtB,IACE08B,EAAiBrD,MAAMr5B,GACvB,MAAOiR,GACPlB,QAAQsc,IAAI,qBAAsBpb,GAClC,IAAI5H,EAAoB,KAUxB,OAREA,EADE4H,aAAezE,EAACA,EAAC80B,SACJrwB,EAAIue,OAChB9qB,KACEnN,GAAU,mBAAqBA,EAAMylB,KAAO,OAASzlB,EAAMxB,UAE7D+a,KAAK,KAEO,sBAEVzH,IAeck4B,CAAevhC,GACpC,GAAIqJ,EAAc,CAChB,MAAMmmB,EAASnmB,EAAa7C,MAAM,KAWlC,MAVA/O,EAAAA,MAAMF,MACJqD,EAAAA,IAAA,MAAA,CAAKvH,MAAO,CAAA,EAAE2H,SACXw0B,EAAO9qB,KAAKnN,GACXmD,EAAAA,KAAAsG,EAAAA,SAAA,CAAAhG,SAAA,CACEJ,EAAM0B,IAAA,MAAA,CAAAtB,SAAAzD,IACNqD,MAAC0J,EAAAA,QAAO,CAAA,WAKV,IAAIgO,MAAMjJ,GAElB,GAAIpR,GAAO09B,YAAYtF,sBAChBp4B,EAAM09B,WAAWtF,oBAAoBrwB,GACxC,MAAM,IAAIsS,MAAM,8CAGpB,MAAMkvB,EAAqB,IAAKxhC,GAShC,GAPEA,EAAO81B,IACPlL,GAAS5qB,EAAO81B,KAChBvZ,OAAOvc,EAAO81B,IAAkB,IAEhC0L,EAAc1L,GAAiB,MAEjC11B,QAAoBnI,EAAM27B,WAAWzzB,WAAWqhC,GAC7B,MAAfphC,EACF,MAAM,IAAIkS,MACR,8DAoBJ,OAjBIra,GAAO09B,YAAYqH,0BACf/kC,EAAM09B,WAAWqH,mBAAmBh9B,IAEtB,IAAlBA,GAAQ+8B,OACVn9B,GAASq9B,IACP,MAAM7Q,EAAU6Q,EAAQ77B,QACrBkL,GAAWA,EAAEwpB,KAAmB91B,EAAO81B,KAE1C,MAAO,CAAC11B,KAAgBgsB,OAIW,IAArCn0B,GAAOq+B,UAAUmL,iBACjBxpC,GAAO27B,YAAYn0B,YAEnBxH,GAAO27B,YAAYn0B,WAAWxH,GAAO2+B,0BAEhCx2B,IA4bLy1B,kBAAmBA,EACnB6L,0BAxPsBC,IAC1BlF,EAAqBkF,IAwPjBrH,sBAAuBA,EACvBsH,8BA5OgCC,IACpCpH,EAAyBoH,GACrB5pC,GAAOs/B,cACT+B,GAAcrhC,EAAMs/B,aAAc,CAAE+C,sBAAuBuH,KA0OzDC,oBArOJtpC,IAEA,MAAMy4B,OAAEA,EAAM8Q,YAAEA,GAAgBvpC,EAChCmiC,GAAgBqH,IACd,MAAMC,EAAeD,EAAUh/B,OAC3B,IAAIg/B,GACJ9C,GAAkBx6B,KAAK46B,GAAQA,EAAIxO,QACjCoR,EAAYD,EAAa5gC,QAAQ4vB,EAAOH,OAC9C,OAAoB,IAAhBoR,IAEJD,EAAap/B,OAAOq/B,EAAW,GAC/BD,EAAap/B,OAAOk/B,EAAa,EAAG9Q,EAAOH,OAEvC74B,GAAOs/B,cACT+B,GAAcrhC,EAAMs/B,aAAc,CAAEmD,YAAauH,KANtBA,MA8N3BE,oBAzMJ3pC,IAEA,MAAM4pC,EAAgB,IACjBxH,EACH,CAACpiC,EAAOk4B,OAAOI,OAAQt4B,EAAO6E,OAEhCw9B,EAAgBuH,GACZnqC,GAAOs/B,cACT+B,GAAcrhC,EAAMs/B,aAAc,CAAEqD,aAAcwH,KAkMhDC,iBAAkBvH,EAClBwH,yBAA2BT,IAnNJ,CAACA,IAC5B9G,EAAwB8G,GACpB5pC,GAAOs/B,cACT+B,GAAcrhC,EAAMs/B,aAAc,CAAEyD,oBAAqB6G,KAiNrDU,CAAqBV,IAEvB3G,cAAeA,EACfsH,sBAxpB6BrB,IACjC,IAAIlG,EAAUkG,GAAUlkC,MAAQ,GAChCg+B,EAAUA,EAAQ75B,QACfpB,IAAiB05B,GAAkBn2B,SAASvD,KAE/C,IAAIm7B,EAAWgG,GAAUl/B,OAAS,GAClCk5B,EAAWA,EAAS/5B,QACjBpB,IAAiB05B,GAAkBn2B,SAASvD,KAE/C,MAAMyiC,EAA0C,CAC9CxlC,KAAM,IACmB,QAAnBu9B,EAA2Bd,GAAoB,MAChDuB,GAELh5B,MAAO,IACkB,QAAnBu4B,EAA2Bd,GAAoB,MAChDyB,IAGPC,EAAiBqH,GACbxqC,GAAOs/B,cACT+B,GAAcrhC,EAAMs/B,aAAc,CAAE2D,cAAeuH,KAooBjDjmC,GAAI,CAAEa,MAAO,cEt1BfqlC,GAA+CzqC,IACnD,MAAM0D,YAAEA,GAAgBD,KAClB2M,EAAiB1R,EAAWA,aAAEvB,GAAeA,EAAMkT,YACnDlS,EAAWC,EAAAA,eACXsC,kBAAEA,GAAsBnC,MACvBmsC,EAAUC,GAAe1uC,EAAAA,SAC9ByH,EAAY9F,MAAMgtC,oBAAoB39B,IAExC,OACExK,EAAAiK,KAAC7H,MAAG,CACFN,GAAI,CACFkB,QAAS,OACTC,cAAe,SACfN,MAAO,OACPO,WAAY,SACZC,eAAgB,SAChBa,QAAS,GACV1D,SAAA,CAEDJ,MAACwN,GAAQ,CACP5L,GAAI,CAAEa,MAAO,QACboE,aACkC,QAAhC4G,EAAevT,aACX,qBACA,qBAEN0M,WAAW,KACXT,MAAM,GACNW,QAAS/F,EAAY9F,MAAMitC,kBAC3BjtC,MAAO8sC,EACPz6B,iBAAmBrS,IACjB+sC,EAAY/sC,MAGhB+E,EAAC0B,IAAAlB,UACCoB,GAAI,CAAEwP,EAAG,GACT3Q,QAAQ,YACR0I,SACc,MAAZ4+B,GACAA,IAAahnC,EAAY9F,MAAMgtC,oBAAoB39B,GAErD3J,QAASvD,gBACDW,EAAkB,CACtBT,YAAa,4BACbG,UAAU,EACVF,WAAY,CACV4qC,SAAUpnC,EAAY9F,MAAMktC,SAC5BC,MAAOL,GAEThrC,KAAM,CAAE,EACRc,gBAAkBpB,IAChB,MAAMsE,EAAc,IACftE,EAASM,KACZuB,iBAAiB,GAEnB9C,EAASkD,GAAmBF,iBAAiBuC,IACzC1D,EAAMgrC,yBACRhrC,EAAMgrC,8BAIbjoC,SAAA,4BC5DHkoC,GAAeluC,EAAAA,YAAY,CAC/BC,KAAM,uBAL2B,CACjCa,UAAU,GAMVZ,SAAU,CACRiuC,mBAAqB/tC,IAEnBA,EAAMU,UAAYV,EAAMU,UAE1BstC,gBAAiB,CAAChuC,EAAOC,KAEvBD,EAAMU,SAAWT,EAAOC,aAKjB6tC,mBAAEA,GAAkBC,gBAAEA,IAAoBF,GAAaztC,QACpE,IAAe4tC,GAAAH,GAAavtC,QCA5B,MAAMmI,GAASgsB,EAAMA,OAACwZ,EAAW,CAC/BvZ,kBAAoBxM,GAAkB,SAATA,GADhBuM,EAEC,EAAGptB,YACjB,MAAM4L,EAAY3R,EAAWA,aAAEvB,GAAeA,EAAMkT,YAC9CtU,EAAWF,KACjB,MAAO,CACLshC,WAAY14B,EAAM24B,YAAYt+B,OAAO,CAAC,SAAU,SAAU,CACxDwsC,OAAQ7mC,EAAM24B,YAAYkO,OAAOC,MACjCC,SAAU/mC,EAAM24B,YAAYoO,SAASC,gBAEvCC,SAAU,CACR,CACE1rC,MAAO,EAAGoC,UAAWA,EACrBhH,MAAO,CACLgK,MAAQrJ,OAA8CoE,EAAnC,qBACnBiqB,WACGruB,GAAuC,QAA3BsU,EAAUxT,kBAEnBsD,EADA,QAEN+F,YACGnK,GAAuC,QAA3BsU,EAAUxT,kBAEnBsD,EADA,QAENg9B,WAAY14B,EAAM24B,YAAYt+B,OAAO,CAAC,SAAU,SAAU,CACxDwsC,OAAQ7mC,EAAM24B,YAAYkO,OAAOK,QACjCH,SAAU/mC,EAAM24B,YAAYoO,SAASI,wBAQ3CC,GAAmB,KACvB,MAAQ1nC,OAAQ2nC,EAAiB5nC,eAAgB6nC,GAC/C/nC,GAAU,CACRqC,YAAa,8BACbJ,WAAY,QACZb,MAAO,cACPD,OAAQ,gBAENxG,EAAUD,EAAAA,aAAavB,GAAeA,EAAMwB,QAAQf,QACpDyS,EAAY3R,EAAWA,aAAEvB,GAAeA,EAAMkT,YAC9C27B,EAAettC,EAAWA,aAAEvB,GAAeA,EAAM8uC,WACjDvoC,YAAEA,GAAgBD,KAClBmnC,EAAsBlnC,EAAY9F,MAAMgtC,qBACxC9qC,iBAAEA,GAAqBvB,KACvBxC,EAAWF,KACXsC,EAAWC,EAAAA,cAYjB,OACEqE,OACEsG,EAAAA,SAAA,CAAAhG,SAAA,CAAAJ,EAAA0B,IAACynC,EAAe,CAAA/oC,SACdJ,EAAC0B,IAAAomC,GACC,CAAAO,wBAAyB,KACvBe,GAAwB,QAI9BppC,MAACkD,IAAOf,SAAS,QAAQ1C,KAAM4pC,EAAanuC,kBAC1C4E,EAACiK,KAAA5G,EACC,CAAA/C,SAAA,CAAAJ,EAAAA,IAAC4D,EAAAA,WACC,CAAAlD,MAAM,uBACK,cACXC,QAjBY,KACpBnF,EAAS+sC,OAiBD1K,KAAK,QACLj8B,GAAI,CACF,CACE2K,GAA+B,QAA3BmB,EAAUxT,aAAyB,OAAIsD,EAC3C6pB,GAA+B,QAA3B3Z,EAAUxT,aAAyB,OAAIsD,GAE7C6rC,EAAanuC,UAAY,CAAE4H,QAAS,SAGtC1C,SAAAJ,EAAAA,IAACoD,EAAAA,gBAAe,CAACC,KAAK,WAExBrD,EAAAA,IAACupC,EAAAA,OAAM,CACLC,IAAKxtC,EAAQytC,QACb7nC,GAAI,CAAE2B,YAAa,EAAGkkB,WAAY,KAEpCznB,EAAAA,IAACwD,EAAAA,YAAW/C,QAAQ,KAAKipC,QAAM,EAACjmC,UAAU,MAAM7B,GAAI,CAAEgJ,KAAM,GAAGxK,SAC5DhH,EACG,GACA,GAAG4C,EAAQ2tC,aACkB,QAA3Bj8B,EAAUxT,aACN+tC,GAAqB2B,mBACrB3B,GAAqB4B,uBAGjC7pC,EAAAA,IAACk8B,EAAAA,QAAO,CACNh8B,MAC0B,UAAxBwN,EAAU3T,UACN,uBACA,wBAGNqG,SAAAJ,MAAC4D,EAAAA,WAAU,CACTlD,MAAM,UACNC,QAAS,KACPnF,EACEZ,GAAiBL,aACS,UAAxBmT,EAAU3T,UAAwB,OAAS,UAG/CC,aAAa6kC,QACX,YACwB,UAAxBnxB,EAAU3T,UAAwB,OAAS,UAE9CqG,SAEwB,UAAxBsN,EAAU3T,UACTiG,EAAAA,IAACoD,EAAAA,gBAAgB,CAAAC,KAAK,SAEtBrD,EAAAA,IAACoD,EAAAA,gBAAe,CAACC,KAAM,CAAEymC,OAAQ,MAAOC,SAAU,aAIxD/pC,EAAC0B,IAAAw6B,EAAOA,QACN,CAAAh8B,MACoB,OAAlBf,EAAK6qC,SACD,6BACA,4BAGN5pC,SAAAJ,MAAC4D,EAAAA,WAAU,CACTlD,MAAM,UACNC,QAAS,KACP,IAAIspC,EAAiC,OAAlB9qC,EAAK6qC,SAAoB,KAAO,KjF5JrC,IAAC1qC,IiF6JA2qC,EjF5J7B9qC,EAAK+qC,eAAe5qC,GACpBtF,aAAa6kC,QAAQ,WAAYv/B,GiF4JnB9D,EACEZ,GAAiBD,gBACE,OAAjBsvC,EAAwB,MAAQ,SAKtC7pC,SAAAJ,EAAAA,IAACoD,EAAeA,gBAAA,CAACC,KAAK,iBAGzBtC,EAAY9F,OAAOitC,mBACpBnnC,EAAY9F,OAAOitC,kBAAkB9/B,OAAS,EAC5CpI,EAAAA,IAACk8B,EAAAA,QAAQ,CAAAh8B,MAAM,8BACbE,SAAAJ,EAAAA,IAAC4D,EAAUA,WAAA,CACTlD,MAAM,UACNC,QAAS,KACPyoC,GAAwB,aAG1BppC,EAAC0B,IAAA0B,mBAAgBC,KAAK,cAI1BrD,EAAAA,mBAGFA,MAACupC,EAAAA,OAAM,CAAA,GACPvpC,MAAA,MAAA,CAAKvH,MAAO,CAAEgvB,WAAY,EAAGlkB,YAAa,GAAGnD,SAC1ChH,EAAW,GAAK2H,EAAY9F,OAAOktC,WAEtCnoC,EAAAA,IAAC4D,EAAAA,YAAWlD,MAAM,UAAUC,QAxHfvD,UACnB,UACQD,EAAiB,CAAEG,YAAa,oBACtC,MAAOX,GACPwY,QAAQsc,IAAI,eAAgB90B,GAE9BnB,EAASkD,GAAmBD,uBAkH2B2B,SAC/CJ,MAACoD,EAAeA,gBAAA,CACd+mC,SAAqC,QAA3Bz8B,EAAUxT,aAAyB,SAAMsD,EACnD6F,KAAK,wCCtMN+mC,GAAelb,EAAAA,OAAO,MAAPA,EAAc,EAAGptB,YAAa,CACxDgB,QAAS,OACTE,WAAY,YAGTlB,EAAMuoC,OAAOxE,QAChB5iC,eAAgB,eCSLqnC,GAAyB,CACpChgC,EACAigC,KAEA,IAAK,MAAM5vB,KAAQ4vB,EAAO,CACxB,GAAI5vB,EAAKrQ,KAAOA,EAAI,OAAOqQ,EAC3B,GAAIA,EAAKva,SAAU,CACjB,MAAMoqC,EAAQF,GAAuBhgC,EAAIqQ,EAAKva,UAC9C,GAAIoqC,EAAO,OAAOA,KAMXC,GAA6D,IC3BI,CAC5E,CACEngC,GAAI,OACJjH,KAAM,OACN8C,MAAO,OACP1L,OAAQ,aACRiwC,cAAe,CACbtoB,KAAM,MCPV,CACE9X,GAAI,eACJnE,MAAO,wBACP/E,UAAW,eACXiC,KAAM,MACNjD,SAAU,CACR,CACEkK,GAAI,iCACJnE,MAAO,sBACP/E,UAAW,oBACXiC,KAAM,QACN5I,OAAQ,aACRiwC,cAAe,CAAEtoB,KAAM,wBAEzB,CACE9X,GAAI,sCACJnE,MAAO,4BACP/E,UAAW,oBACXiC,KAAM,iBACN5I,OAAQ,aACRiwC,cAAe,CAAEtoB,KAAM,6BAEzB,CACE9X,GAAI,sBACJnE,MAAO,gBACP9C,KAAM,QACN5I,OAAQ,aACRiwC,cAAe,CAAEtoB,KAAM,kBAEzB,CACE9X,GAAI,wBACJnE,MAAO,oBACP9C,KAAM,OACNjD,SAAU,CACR,CACEkK,GAAI,6CACJnE,MAAO,+BACP9C,KAAM,OACN5I,OAAQ,aACRiwC,cAAe,CAAEtoB,KAAM,8BAEzB,CACE9X,GAAI,wCACJnE,MAAO,0BACP9C,KAAM,IACN5I,OAAQ,aACRiwC,cAAe,CAAEtoB,KAAM,yBAEzB,CACE9X,GAAI,kCACJnE,MAAO,oBACP9C,KAAM,YACN5I,OAAQ,aACRiwC,cAAe,CAAEtoB,KAAM,oBAEzB,CACE9X,GAAI,+BACJnE,MAAO,gBACP9C,KAAM,OACN5I,OAAQ,aACRiwC,cAAe,CAAEtoB,KAAM,gBAEzB,CACE9X,GAAI,mCACJnE,MAAO,qBACP9C,KAAM,CAAE0mC,SAAU,cAAeD,OAAQ,OACzCrvC,OAAQ,aACRiwC,cAAe,CAAEtoB,KAAM,0BAEzB,CACE9X,GAAI,qCACJnE,MAAO,uBACP9C,KAAM,WACN5I,OAAQ,aACRiwC,cAAe,CAAEtoB,KAAM,sBAEzB,CACE9X,GAAI,yCACJnE,MAAO,2BACP9C,KAAM,gBACN5I,OAAQ,aACRiwC,cAAe,CAAEtoB,KAAM,0BAEzB,CACE9X,GAAI,+BACJnE,MAAO,gBACP9C,KAAM,YACN5I,OAAQ,aACRiwC,cAAe,CAAEtoB,KAAM,gBAEzB,CACE9X,GAAI,kCACJnE,MAAO,mBACP9C,KAAM,uBACN5I,OAAQ,aACRiwC,cAAe,CAAEtoB,KAAM,mBAEzB,CACE9X,GAAI,kCACJnE,MAAO,oBACP9C,KAAM,cACN5I,OAAQ,aACRiwC,cAAe,CAAEtoB,KAAM,mBAEzB,CACE9X,GAAI,qCACJnE,MAAO,sBACP9C,KAAM,OACN5I,OAAQ,aACRiwC,cAAe,CAAEtoB,KAAM,wBAI7B,CACE9X,GAAI,wBACJnE,MAAO,oBACP9C,KAAM,KACNjD,SAAU,CACR,CACEkK,GAAI,uCACJnE,MAAO,mBACP9C,KAAM,iBACN5I,OAAQ,aACRiwC,cAAe,CAAEtoB,KAAM,iCAEzB,CACE9X,GAAI,qCACJnE,MAAO,0BACP9C,KAAM,qBACN5I,OAAQ,aACRiwC,cAAe,CAAEtoB,KAAM,+BAEzB,CACE9X,GAAI,iCACJnE,MAAO,4BACP9C,KAAM,OACN5I,OAAQ,aACRiwC,cAAe,CAAEtoB,KAAM,iCC1GnC,SAASuoB,KACP,OACE3qC,EAAA0B,IAACQ,EAAG,CACFN,GAAI,CACFa,MAAO,EACPD,OAAQ,EACRge,aAAc,MACd3d,QAAS,eACTC,QAAS,eACT8nC,cAAe,SACf/oC,OAAQ,EACRylB,GAAI,IAIZ,CAQA,MAAMujB,GAAqB3b,EAAAA,OAAO4b,EAAAA,cAAP5b,EAAsB,EAAGptB,YAAa,CAC/DpB,MAAOoB,EAAM8pB,QAAQmf,KAAK,KAC1B5oC,SAAU,WACV,CAAC,MAAM6oC,kBAAgBC,mBAAoB,CACzCxjB,WAAY3lB,EAAM4I,QAAQ,SAEzB5I,EAAM0pB,YAAY,QAAS,CAC5B9qB,MAAOoB,EAAM8pB,QAAQmf,KAAK,WAIxBG,GAAwBhc,EAAAA,OAAOic,EAAAA,iBAAPjc,EAAyB,EAAGptB,YAAa,CACrEiB,cAAe,cACfyd,aAAc1e,EAAM4I,QAAQ,IAC5B8c,aAAc1lB,EAAM4I,QAAQ,IAC5B6c,UAAWzlB,EAAM4I,QAAQ,IACzB5G,QAAShC,EAAM4I,QAAQ,IACvBgc,aAAc5kB,EAAM4I,QAAQ,GAC5B,kBAAqB,CACnB,2EACE,CACEhK,MAAOoB,EAAM8pB,QAAQrhB,QAAQ6gC,QAC1BtpC,EAAM0pB,YAAY,QAAS,CAC5B9qB,MAAOoB,EAAM8pB,QAAQrhB,QAAQ8gC,QAGnC,YAAa,CACXC,QAAS,KACTxoC,QAAS,QACTX,SAAU,WACVE,KAAM,OACND,IAAK,OACLI,OAAQ,oBACRC,MAAO,QACP2jB,gBAAiBtkB,EAAM8pB,QAAQmf,KAAK,QACjCjpC,EAAM0pB,YAAY,QAAS,CAC5BpF,gBAAiBtkB,EAAM8pB,QAAQmf,KAAK,SAI1C,UAAW,CACT3kB,gBAAiBmlB,EAAKA,MAACzpC,EAAM8pB,QAAQrhB,QAAQ8gC,KAAM,IACnD3qC,MAAO,WACJoB,EAAM0pB,YAAY,QAAS,CAC5B9qB,MAAOoB,EAAM8pB,QAAQrhB,QAAQ8gC,QAGjC,4DAA+D,CAC7DjlB,gBAAiBtkB,EAAM8pB,QAAQrhB,QAAQ6gC,KACvC1qC,MAAOoB,EAAM8pB,QAAQrhB,QAAQihC,gBAC1B1pC,EAAM0pB,YAAY,QAAS,CAC5BpF,gBAAiBtkB,EAAM8pB,QAAQrhB,QAAQ8gC,YAKvCI,GAAmBC,EAAQA,SAACC,GAElC,SAASC,GAAoBvuC,GAC3B,MAAM5E,EAAQozC,EAAAA,UAAU,CACtBn1B,GAAI,CACF4jB,QAASj9B,EAAMyuC,GAAK,EAAI,EACxBvpC,UAAW,iBAAiBlF,EAAMyuC,GAAK,EAAI,aAI/C,OAAO9rC,EAAAA,IAACyrC,GAAiB,CAAAhzC,MAAOA,KAAW4E,GAC7C,CAEA,MAAM0uC,GAA0B7c,EAAAA,OAAO1rB,EAAP0rB,CAAmB,CACjDxuB,MAAO,UACPqL,WAAY,MASd,SAASigC,IAAY3oC,KACnBA,EAAI4oC,WACJA,EAAU7rC,SACVA,KACGif,IAEH,MAAM1f,EAAEA,GAAMC,mBACRssC,EAAiBnwC,EAAWA,aAAEvB,GAAqBA,EAAMkT,YAC/D,OACE5N,EAACiK,KAAAoiC,EAAcA,mBACT9sB,EACJzd,GAAI,CACFkB,QAAS,OACTE,WAAY,SACZc,QAAS,GACV1D,SAAA,CAEDJ,EAAAA,IAACoD,EAAeA,gBACd,CAAA3K,MAAO,CACL8K,YAA6C,QAAhC2oC,EAAehyC,aAAyB,OAAIsD,EACzDiqB,WAA4C,QAAhCykB,EAAehyC,aAAyB,OAAIsD,EACxDsO,SAAU,UAEZzI,KAAMA,IAERrD,EAAC0B,IAAAqqC,GAAwB,CAAAtrC,QAAQ,QAAQmB,GAAI,CAAEkK,SAAU,IAAI1L,SAC1DT,EAAES,KAEJ6rC,GAAcjsC,EAAAA,IAAC2qC,GAAU,MAGhC,CAEA,MAAMyB,GAAgBC,GAChBnyB,MAAMC,QAAQkyB,GACTA,EAAcjkC,OAAS,GAAKikC,EAAcjrB,KAAKgrB,IAEjDvH,QAAQwH,GAOXC,GAAiBnlC,GAAMioB,YAAW,SACtC/xB,EACAjF,GAEA,MAAMkS,GAAEA,EAAEiiC,OAAEA,EAAMpmC,MAAEA,EAAKgD,SAAEA,EAAQ/I,SAAEA,KAAaif,GAAUhiB,GACtDmvC,aACJA,EAAYC,gBACZA,EAAeC,sBACfA,EAAqBC,iBACrBA,EAAgBC,cAChBA,EAAaC,wBACbA,EAAuBC,2BACvBA,EAA0BlwC,OAC1BA,EAAMmwC,UACNA,GACEC,eAAa,CAAE1iC,KAAIiiC,SAAQnsC,WAAU+F,QAAOgD,WAAU8jC,QAAS70C,IAC7DkmB,EAAOyuB,EAAU9yC,QAAQsyC,GACzBN,EAAaG,GAAahsC,GAChC,OACEJ,EAAAA,IAACktC,EAAAA,kBAAiB,CAACX,OAAQA,WACzBzsC,EAAAA,KAAC+qC,OAAuB2B,EAAantB,GAAMjf,SAAA,CACzCN,EAAAA,KAACorC,GAAqB,IAChBuB,EAAgB,CAClBld,UAAWrB,GAAK,UAAW,CACzB,eAAgBtxB,EAAO0xB,SACvB,eAAgB1xB,EAAO8xB,SACvB,cAAe9xB,EAAO2xB,QACtB,eAAgB3xB,EAAOuM,aAEzB/I,SAAA,CAEFJ,EAAC0B,IAAAyrC,yBAA2B,IAAAT,IAAuBtsC,SACjDJ,MAACotC,EAAAA,cAAc,CAAAxwC,OAAQA,MAEzBoD,MAACqtC,EAAAA,kBAAiB,IAAKV,MACvB3sC,EAAC0B,IAAAsqC,GACK,IAAAY,EAAc,CAChBvpC,KAAMib,GAAMjb,MAAQ,OACpB4oC,WAAYA,GAAcrvC,EAAO0xB,aAGrCtuB,MAACstC,GAAAA,gCAAgCR,SAElC1sC,GAAYJ,EAAAA,IAAC4rC,GAAwB,IAAAiB,UAI9C,IAEc,SAAUU,KACtB,MAAM9M,EAAWC,EAAAA,cACXwL,EAAiBnwC,EAAWA,aAAEvB,GAAqBA,EAAMkT,YACzD1R,EAAUD,EAAAA,aAAavB,GAAqBA,EAAMwB,QAAQf,QAC/CQ,EAAWA,cAC5B,MAAMrC,EAAWF,MACX+H,iBAAEA,GAAqBH,KACvB0sC,EAAczwC,GACXA,EACJyJ,QACE8X,QACoB9gB,IAAnB8gB,EAAKld,WACa,MAAlBkd,EAAKld,WACLH,EAAiBqd,EAAKld,aAEzB0I,KAAKwU,IACAA,EAAKle,WACPke,EAAKle,SAAWotC,EAAWlvB,EAAKle,WAE3Bke,KAIPmvB,EAAwB,GAC1BzxC,EAAQ0xC,4BACVD,EAAsBzlC,QAAQyiC,IAEhCgD,EAAsBzlC,QAAQhM,EAAQ2xC,yBACtC,MAAMC,EAA2BJ,EAAWC,GAE5C,OACEztC,EAAA0B,IAACmsC,EAAYA,aAAA,CACX1lC,MAAOylC,EACPE,YAAa,CAACtkC,EAAO+iC,KACnB,MAAMwB,EAAiBzD,GACrBiC,EACAkB,GAG2B,eAA3BM,GAAgBtzC,QACiB,MAAjCszC,GAAgBrD,oBACaltC,IAA5BuwC,EAAe3tC,UACc,OAA5B2tC,EAAe3tC,UACmB,GAAlC2tC,EAAe3tC,SAASgI,QAE1Bq4B,EAASsN,GAAgBrD,eAAetoB,MAAQ,KAGpDxgB,GAAI,CACFY,OAAQ,cACRmB,SAAU,EACVsiB,SAAUpsB,GACVgR,UAAWqhC,EAAehyC,aAC1BoI,UAAWlJ,EAAW,SAAMoE,EAC5BwwC,UAAW,OACXrT,UAAW,QAEbvsB,MAAO,CAAEkQ,KAAMguB,KAGrB,CCvRA,MAAMhD,GAAoB,KACxB,MAAMttC,EAAUD,EAAAA,aAAavB,GAAeA,EAAMwB,QAAQf,SACpD8F,YAAEA,GAAgBD,KAClBmnC,EAAsBlnC,EAAY9F,MAAMgtC,oBACxCnmC,EAAQgqB,EAAAA,WACRpe,EAAY3R,EAAWA,aAAEvB,GAAeA,EAAMkT,YAC9C27B,EAAettC,EAAWA,aAAEvB,GAAeA,EAAM8uC,UACjD9tC,EAAWC,EAAAA,cAIjB,OACEqE,EAAAiK,KAACkkC,EAAM,CACLrsC,GAAI,CACFa,MAAO5I,GACP2uB,WAAY,EACZ,qBAAsB,CACpB/lB,MAAO5I,GACP0vB,UAAW,eAGf9oB,QAAQ,aACRytC,OAAmC,QAA3BxgC,EAAUxT,aAAyB,OAAS,QACpDuF,KAAM4pC,EAAanuC,SAEnBkF,SAAA,CAAAN,EAAAiK,KAACqgC,GACC,CAAAhqC,SAAA,CAAAN,EAAAiK,KAAC7H,EAAGA,IAAC,CAAAN,GAAI,CAAEa,MAAO,QAAQrC,SAAA,CACxBJ,MAACwD,EAAUA,WAAA,CACT9C,MAAM,UACNkB,GAAI,CACFa,MAAO,OACPqnB,UAAW,SACXhe,SAAU,GACVC,WAAY,QACb3L,SAAA,mBAIHN,EAAAA,KAACoC,EAAAA,IAAG,CACFN,GAAI,CACFkB,QAAS,OACTE,WAAY,SACZC,eAAgB,eAChBskB,UAAW,GAGbnnB,SAAA,CAAAJ,MAACwD,EAAAA,WAAU,CAAC5B,GAAI,CAAEkK,SAAU,IAAMpL,MAAM,eAAcN,SACnD,GAAGpE,EAAQ2tC,aACiB,QAA3Bj8B,EAAUxT,aACN+tC,GAAqB2B,mBACrB3B,GAAqB4B,uBAG7B/pC,EAAAA,KAAC0D,EAAAA,WAAU,CAAC5B,GAAI,CAAEkK,SAAU,IAAMpL,MAAM,eACnCN,SAAA,CAAA,KAAApE,EAAQmyC,oBAIjBnuC,EAAAA,IAAC4D,EAAW,CAAAjD,QAlDI,KACpBnF,EAAS+sC,gBAkDkB,QAApBzmC,EAAM+I,UACL7K,MAACoD,EAAeA,gBAAA,CAACC,KAAK,eAEtBrD,MAACoD,EAAAA,gBAAe,CAACC,KAAK,qBAI5BrD,EAAAA,IAAC0J,MACD1J,EAAAA,IAACutC,GAAiB,CAAA,OC3EXa,GAAWC,GAAY,CAClCr3B,IAAK,SACLs3B,cAAe,CAACC,GAAQA,SAAEC,MAGfC,GAAWJ,GAAY,CAClCr3B,IAAK,QCwBD03B,GAAkCrxC,IACtC,MAAOsxC,EAAiBC,GAAoBt1C,EAAAA,UAAS,IAC9CyD,EAAMiI,GAAW1L,EAAAA,SAAS,KAC3B6D,iBAAEA,GAAqBvB,KAoB7BnC,EAAAA,WAAU,KAnBY2D,WACpBwxC,GAAiB,SACXzxC,EAAiB,CACrBG,YAAa,0BACbG,UAAU,EACVF,WAAY,CACVsxC,QAASxxC,EAAMyxC,eACZzxC,EAAM0xC,iBAEXlxC,gBAAkBpB,IAChBmyC,GAAiB,GACjB5pC,EAAQvI,EAASM,OAEnBe,gBAAiB,KACf8wC,GAAiB,GACjB5pC,EAAQ,UAKZgqC,KACC,CAAC3xC,EAAM0xC,kBAEV,IAAI5iC,EAAQ,EAIZ,GAHmB,GAAfpP,EAAKqL,SACP+D,EAAQ,KAGa,qBAArB9O,EAAM4xC,YACe,mBAArB5xC,EAAM4xC,WAEN,IAAK,MAAM7pC,KAAUrI,EACnBoP,GAAS/G,EAAO/H,EAAM6xC,mBAG1B,OACEpvC,EAAAA,KACGsG,EAAAA,SAAA,CAAAhG,SAAA,CAAqB,cAArB/C,EAAM4xC,YACc,aAArB5xC,EAAM4xC,YACe,gBAArB5xC,EAAM4xC,WACJnvC,EAAAiK,KAAC7H,EAAGA,IAAA,CAAA9B,SAAA,CACFJ,MAACoD,EAAeA,gBAAA,CACd3K,MAAO,CAAE8K,YAAa,GAAIkkB,WAAY,IACtCpkB,KAAMhG,GAAOgG,MAAQ,cAEtBhG,GAAO6C,SAGVF,EAAAA,IAAKoG,EAAAA,SAAA,CAAA,GAGPpG,EAAAA,IAACkC,EAAAA,IACC,CAAAN,GAAI,CACFgJ,KAAM,EACN9H,QAAS,OACTE,WAAY,SACZC,eAAgB,SAChBR,MAAO,QAGRrC,SAAAuuC,EACC7uC,EACEiK,KAAA3D,EAAAuJ,SAAA,CAAAvP,SAAA,CAAAJ,EAAAA,IAACoD,EAAeA,gBACd,CAAAC,KAAM,CAAEymC,OAAQ,MAAOC,SAAU,eACjCtxC,MAAO,CAAE8K,YAAa,GAAIkkB,WAAY,IACtC0nB,QACApkC,KAAK,OAEP/K,EAAAA,mCAEqB,gBAArB3C,EAAM4xC,WACRjvC,MAACmL,GAAgB,CACfpO,KAAMA,EACNqyC,YAAa/xC,EAAM6C,MACnByL,WAAYtO,EAAM6xC,kBAClBtoC,WAAYvJ,EAAMgyC,oBAClB5jC,WAAYpO,EAAMiyC,oBAClBL,WAAW,SAEU,cAArB5xC,EAAM4xC,WACRjvC,EAAAA,IAACoM,GACC,CAAArP,KAAMA,EACNqyC,YAAa/xC,EAAM6C,MACnByL,WAAYtO,EAAM6xC,kBAClBtoC,WAAYvJ,EAAMgyC,oBAClB5jC,WAAYpO,EAAMiyC,oBAClBL,WAAW,SAEU,aAArB5xC,EAAM4xC,WACRjvC,EAAAA,IAAC4M,IACC7P,KAAMA,EACNqyC,YAAa/xC,EAAM6C,MACnByL,WAAYtO,EAAMgyC,oBAClBzoC,WAAYvJ,EAAM6xC,kBAClBD,WAAW,SAGbnvC,EAAAA,KAAC0K,EAAAA,MACC,CAAAC,WACA,EAAA7I,GAAI,CACFa,MAAO,OACPO,WAAY,aACZC,eAAgB,cAElByH,QAAS,EACTK,KAAM,CAAEgU,GAAI,IAEZ3e,SAAA,CAAAJ,EAAAA,IAACwK,EAAAA,MAAM,CAAAO,KAAM,CAAEgU,GAAI,IAAMnd,GAAI,CAAEkoB,UAAW,UAAU1pB,SACjD/C,EAAM6C,QAGRnD,EAAK+M,KAAI,CAAC1E,EAAQ0H,IACQ,SAArBzP,EAAM4xC,WAENjvC,MAACwK,EAAAA,OAAMO,KAAM,CAAEkU,GAAI,EAAGF,GAAI,aACxB/e,EAAC0B,IAAAmK,IAECujC,YAAa,GACbhqC,OAAQA,EACRuG,WAAYtO,EAAM6xC,kBAClBtoC,WAAYvJ,EAAMgyC,qBAJbviC,KAQmB,qBAArBzP,EAAM4xC,WAEbjvC,MAACwK,EAAKA,MAAA,CAACO,KAAM,CAAEkU,GAAI,EAAGF,GAAI,IAAI3e,SAC5BJ,MAACgM,GAAa,CAEZojC,YAAa,GACbhqC,OAAQA,EACRuG,WAAYtO,EAAMgyC,oBAClBzoC,WAAYvJ,EAAM6xC,kBAClB/iC,MAAOA,GALFW,KASmB,mBAArBzP,EAAM4xC,WAEbjvC,MAACwK,EAAKA,MAAA,CAACO,KAAM,CAAEkU,GAAI,EAAGF,GAAI,IAAI3e,SAC5BJ,MAAC2M,GAAoB,CAEnByiC,YAAa,GACbhqC,OAAQA,EACRuG,WAAYtO,EAAMgyC,oBAClBzoC,WAAYvJ,EAAM6xC,kBAClB/iC,MAAOA,GALFW,UAJN,aC1IfyiC,GAAmDlyC,IACvD,MAAOmyC,EAAeC,GAAoBn2C,WAAwB,CAChEo2C,cAAe,GACfC,cAAe,GACfC,eAAgB,GAChBC,oBAAqB,GACrBC,QAAS,MAEJC,EAA0BC,GAA+B12C,EAAQA,SAErE+D,GAAOE,YAAc,IAClBkjC,EAAWC,EAAAA,eACXvjC,iBAAEA,EAAgBY,kBAAEA,GAAsBnC,KAqBhD,OALAnC,EAAAA,WAAU,KACJ4D,EAAMqyC,eAhBctyC,iBAClBD,EAAiB,CACrBG,YAAa,gCACbG,UAAU,EACVF,WAAY,CACVmyC,cAAeryC,EAAMqyC,eAEvB7xC,gBAAkBpB,IAChBgzC,EAAiBhzC,EAASM,OAE5Be,gBAAiB,KACf2xC,EAAiB,UAMnBQ,KAED,CAAC5yC,EAAMqyC,cAAeryC,EAAME,aAE7ByC,EAAA0B,IAAA0E,EAAAuJ,SAAA,CAAAvP,SACGovC,EACC1vC,EAAAiK,KAAA3D,WAAA,CAAAhG,SAAA,CACEN,EAAAA,KAACoC,EAAGA,IACF,CAAAN,GAAI,CACFkK,SAAU,GACVC,WAAY,OACZjJ,QAAS,OACTE,WAAY,SACZC,eAAgB,UACjB7C,SAAA,CAEDJ,EAAAA,IAAC4D,EAAAA,WAAU,CACTjD,QAAS,KACP8/B,GAAW,EAAE,CAAElgB,SAAS,KAG1BngB,SAAAJ,EAAAA,IAACoD,EAAeA,gBAAA,CAACC,KAAK,iBAExBrD,MAACkC,EAAAA,IAAI,CAAAN,GAAI,CAAEgJ,KAAM,KACjB5K,EAAAA,IAACoD,EAAAA,gBACC,CAAA3K,MAAO,CAAEgvB,WAAY,GAAIlkB,YAAa,IACtCF,KAAM,yBAERrD,EAAAA,IAACkC,EAAGA,IAAA,CAAA9B,SAAEovC,GAAeI,iBACrB5vC,EAAAA,IAACkC,EAAGA,KAACN,GAAI,CAAEgJ,KAAM,QAEnB5K,EAAAA,IAACwK,EAAAA,MACC,CAAAC,aACAC,QAAS,EACT9I,GAAI,CACF+B,SAAU,EACVqqC,UAAW,OACXlqC,QAAS,GAGV1D,SAAAovC,GAAeM,QAAQhmC,KAAI,CAAComC,EAAQpjC,IAEjC9M,EAAA0B,IAAC8I,QAAK,CAEJ5I,GAAI,CACFoB,WAAY,SACZC,eAAgB,SAChBa,QAAS,EACThB,QAAS,OACTF,SAAU,OACVG,cACuB,QAArBmtC,EAAOjB,WAAuB,cAAWzxC,EAC3CgF,OAAQ0tC,GAAQ1tC,QAAU,KAE5BuI,KAAM,CAAEkU,GAAIixB,GAAQztC,MAAOuc,GAAI,IAAI5e,SAEnCJ,EAAAA,IAAC0uC,GAAiB,IAAAwB,KAbbpjC,UAoBf9M,EAAAA,IAACkC,EAAAA,IACC,CAAAN,GAAI,CACFgJ,KAAM,EACN9H,QAAS,OACTE,WAAY,SACZC,eAAgB,SAChB6I,SAAU,GACVC,WAAY,QAIV3L,SAAA,0BCnIR+vC,GAED9yC,IACH,MAAMsC,EAAEA,GAAMC,oBACRzC,iBAAEA,GAAqBvB,MACtBmB,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BS,QAAS,iDACTW,WAAY,6CACZH,KAAM,6CACNJ,SAAU,6CACVL,QAASA,KAEJorC,EAA0BC,GAA+B/2C,EAAAA,SAAS,IAYzEG,EAAAA,WAAU,KAV0B2D,iBAC5BD,EAAiB,CACrBG,YAAa,2CACbG,UAAU,EACVI,gBAAkBpB,IAChB4zC,EAA4B5zC,EAASM,UAMzCuzC,KACC,IAEH,MAAMjR,EAAwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WACE,+DACFR,UAAW,4BACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAASspC,EACTpb,mBAAoB,aACpBC,iBAAkB,OAGtB,CACEt8B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLk3B,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,GAEVC,WAAY,kDACZR,UAAW,iBACX9mB,UAAU,EACV+mB,UAAW,WAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,oDACZR,UAAW,mBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,kDACZR,UAAW,iBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,4CACZR,UAAW,WACX9mB,UAAU,EACV+mB,UAAW,cAKjB,OACEj0B,EAAAA,IAAC++B,GAAY,CACX/F,WAAYA,EACZj8B,KAAMA,EACNi/B,yBAA0B,CACxBuU,eAAgBlzC,GAAOmzC,sBAAsBlmC,IAE/C06B,aAAa,EACbhgC,QAASA,EACT02B,SAAU,CAAEA,SAAU,OACtB2D,aAAcA,EACdnE,cAAe,KACfiK,UAAU,yCACVD,SAAS,cACTnK,WAAY,CACVuI,WAAW,EACXliC,UAAW,uCACXq0B,oBAAqBr4B,MAAOL,IAC1BA,EAAKwzC,eAAiBlzC,GAAOmzC,sBAAsBlmC,IAC5C,IAGX23B,aAAc,CACZqB,WAAW,EACXliC,UAAW,6CClHbqvC,GACJpzC,IAEA,MAAMsC,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BS,QAAS,wCACTW,WAAY,oCACZH,KAAM,oCACNJ,SAAU,oCACVL,QAASA,IAsEX,OACEhF,EAAC0B,IAAAq9B,GACC,CAAA/F,WAAYA,EACZj8B,KAAMA,EACNioC,aAAa,EACbhJ,yBAA0B,CACxBuU,eAAgBlzC,GAAOmzC,sBAAsBlmC,IAE/CtF,QAASA,EACT02B,SAAU,CAAEA,SAAU,OACtB2D,aA7E0C,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,yCACZD,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,GAEVP,UAAW,iBACX9mB,UAAU,EACV+mB,UAAW,WAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,sDACZR,UAAW,4BACX9mB,UAAU,EACV+mB,UAAW,WAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,wCACZR,UAAW,eACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,2CACZR,UAAW,iBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,2CACZR,UAAW,iBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,mCACZR,UAAW,WACX9mB,UAAU,EACV+mB,UAAW,cAgBbiH,cAAe,KACfiK,UAAU,gCACVD,SAAS,OACTnK,WAAY,CACVuI,WAAW,EACXliC,UAAW,8BACXq0B,oBAAqBr4B,MAAOL,IAC1BA,EAAKwzC,eAAiBlzC,GAAOmzC,sBAAsBlmC,IAC5C,IAGX23B,aAAc,CACZqB,WAAW,EACXliC,UAAW,oCCxGbsvC,GAA6DrzC,IACjE,MAAMsC,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BS,QAAS,oCACTW,WAAY,gCACZH,KAAM,gCACNJ,SAAU,gCACVL,QAASA,KAEJ2rC,EAAuBC,GAA4Bt3C,EAAAA,SAAS,KAC7D6D,iBAAEA,GAAqBvB,KAc7BnC,EAAAA,WAAU,KAbuB2D,iBACzBD,EAAiB,CACrBG,YAAa,wCACbG,UAAU,EACVF,WAAY,CACVgzC,eAAgBlzC,EAAMmzC,qBAAqBlmC,IAE7CzM,gBAAkBpB,IAChBm0C,EAAyBn0C,EAASM,UAMtC8zC,KACC,IAEH,MAAMxR,EAAwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLk3B,QAAQ,EACRiL,UAAW,CAAEjL,QAAQ,GACrBC,WAAY,oCACZR,UAAW,iBACX9mB,UAAU,EACV+mB,UAAW,SAIf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,8CACZR,UAAW,yBACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAAS6pC,EACT1b,iBAAkB,KAClBD,mBAAoB,mBAGxB,CACEr8B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,8CACZR,UAAW,yBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,8CACZR,UAAW,yBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,gDACZR,UAAW,2BACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAAS/J,EACTk4B,iBAAkB,KAClBD,mBAAoB,2BAGxB,CACEr8B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,4BACZR,UAAW,UACX9mB,UAAU,EACV+mB,UAAW,cAKjB,OACEj0B,EAAC0B,IAAAq9B,GACC,CAAA/F,WAAYA,EACZj8B,KAAMA,EACNioC,aAAa,EACbhJ,yBAA0B,CACxBuU,eAAgBlzC,GAAOmzC,sBAAsBlmC,IAE/CtF,QAASA,EACT02B,SAAU,CAAEA,SAAU,OACtB2D,aAAcA,EACdnE,cAAe,KACfiK,UAAU,2BACVD,SAAS,cACTnK,WAAY,CACVuI,WAAW,EACXliC,UAAW,yBACXq0B,oBAAqBr4B,MAAOL,IAC1BA,EAAKwzC,eAAiBlzC,GAAOmzC,sBAAsBlmC,IAC5C,IAGX23B,aAAc,CAAEqB,WAAW,EAAMliC,UAAW,+BC3H5C0vC,GAA6DzzC,IACjE,MAAMsC,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BS,QAAS,oCACTW,WAAY,gCACZH,KAAM,gCACNJ,SAAU,gCACVL,QAASA,IAqEX,OACEhF,EAAC0B,IAAAq9B,GACC,CAAA/F,WAAYA,EACZj8B,KAAMA,EACNioC,aAAa,EACbhJ,yBAA0B,CACxBuU,eAAgBlzC,GAAOmzC,sBAAsBlmC,IAE/CtF,QAASA,EACT02B,SAAU,CAAEA,SAAU,OACtB2D,aA5E0C,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLk3B,QAAQ,EACRiL,UAAW,CAAEjL,QAAQ,GACrBC,WAAY,oCACZR,UAAW,iBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,+BACZR,UAAW,YACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,8BACZR,UAAW,WACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iCACZR,UAAW,aACX9mB,UAAU,EACV+mB,UAAW,SAIf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iCACZR,UAAW,aACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,4BACZR,UAAW,UACX9mB,UAAU,EACV+mB,UAAW,cAgBbiH,cAAe,KACfiK,UAAU,2BACVD,SAAS,cACTnK,WAAY,CACVuI,WAAW,EACXliC,UAAW,yBACXq0B,oBAAqBr4B,MAAOL,IAC1BA,EAAKwzC,eAAiBlzC,GAAOmzC,sBAAsBlmC,IAC5C,IAGX23B,aAAc,CAAEqB,WAAW,EAAMliC,UAAW,+BClG5C2vC,GAAuD1zC,IAC3D,MAAO0J,EAAiBiqC,GAAsB13C,EAAAA,SAAS,KAChD23C,EAAkBC,GAAuB53C,EAAAA,SAAS,KACnDyE,kBAAEA,EAAiBZ,iBAAEA,GAAqBvB,KAiBhDnC,EAAAA,WAAU,KACJ4D,EAAM03B,gBAhBc33B,iBAClBD,EAAiB,CACrBG,YAAa,yCACbG,UAAU,EACVF,WAAY,CACV4zC,YAAa9zC,EAAM03B,eAAezqB,GAClCimC,eAAgBlzC,EAAM03B,eAAewb,gBAEvC1yC,gBAAkBpB,IAChBu0C,EAAmBv0C,EAASM,KAAKq0C,cACjCF,EAAoBz0C,EAASM,KAAKs0C,oBAOpCC,KAED,CAACj0C,EAAM03B,iBAeV,OACEj1B,EAAAiK,KAAA3D,WAAA,CAAAhG,SAAA,CACEJ,MAAC2G,GACC,CAAAE,aAAa,iBACbC,QAASmqC,EACTrqC,WAAW,KACXG,gBAAiBA,EACjBC,aAAcgqC,IAEhBlxC,EAAAiK,KAAC7H,MAAG,CACFN,GAAI,CACFkB,QAAS,OACTE,WAAY,SACZC,eAAgB,WAChBR,MAAO,QAGTrC,SAAA,CAAAJ,EAAA0B,IAAClB,EAAMA,OACL,CAAAC,QAAQ,YACRE,QAjCmBvD,gBACnBW,EAAkB,CACtBT,YAAa,yCACbG,UAAU,EACVF,WAAY,CAAE4zC,YAAa9zC,EAAM03B,eAAezqB,IAChDvN,KAAMgK,EACNlJ,gBAAiB,KACfhB,EAAKA,MAAC00C,QAAQ,gDACVl0C,EAAMm0C,cACRn0C,EAAMm0C,mBAyBN5vC,GAAI,CAAE2B,YAAa,EAAGkkB,WAAY,qBAIpCznB,EAAAA,IAACQ,EAAAA,OAAO,CAAAC,QAAQ,YAAYC,MAAM,QAAQC,QAAStD,EAAMm0C,wCC/D3DC,GACJp0C,IAEA,MAAO03B,EAAgB2c,GAAqBp4C,EAAAA,SAAc,OAExDkI,OAAQmwC,EACRpwC,eAAgBqwC,GACdvwC,GAAU,CACZiC,WAAY,MACZI,YAAa,4BACbjB,MAAO,QAEHovC,EAAsB91C,EAAWA,aACpCvB,GAAeA,EAAMmK,aAAaX,OAAO6tC,oBAAoB90C,OAE1D+0C,EAA0B/1C,EAAWA,aACxCvB,GAAeA,EAAMmK,aAAaX,OAAO8tC,wBAAwB/0C,OAE9Dg1C,EAA0Bh2C,EAAWA,aACxCvB,GAAeA,EAAMmK,aAAaX,OAAO+tC,wBAAwBh1C,QAE9D4C,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BS,QAAS,sCACTW,WAAY,kCACZH,KAAM,kCACNJ,SAAU,kCACVL,QAASA,IAGLq6B,EAAwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,gCACZR,UAAW,WACX9mB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iCACZR,UAAW,YACX9mB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,sCACZR,UAAW,iBACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAAS+qC,EACT5c,iBAAkB,KAClBD,mBAAoB,uBAGxB,CACEr8B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,2CACZR,UAAW,qBACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAASgrC,EACT7c,iBAAkB,KAClBD,mBAAoB,gBAGxB,CACEr8B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,2CACZR,UAAW,qBACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAASirC,EACT9c,iBAAkB,KAClBD,mBAAoB,aAGxB,CACEr8B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,oBACZR,UAAW,+BACXC,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLk3B,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,GAEVC,WAAY,gCACZR,UAAW,WACX9mB,UAAU,EACV+mB,UAAW,YAKjB,OACEn0B,EAAAiK,KAAA3D,EAAAuJ,SAAA,CAAAvP,SAAA,CACEJ,EAAC0B,IAAAiwC,YACC3xC,EAAAA,IAAC+wC,GACC,CAAAhc,eAAgBA,EAChByc,aAAc,KACZI,GAAsC,QAI5C5xC,MAAC++B,GACC,CAAA/F,WAAYA,EACZgM,aAAa,EACbjoC,KAAMA,EACNiI,QAASA,EACT02B,SAAU,CAAEA,SAAU,OACtB2D,aAAcA,EACdzD,WAAY,CACV,CACEv4B,KAAM,MACN8C,MAAO,QACPkvB,SAAUj4B,MAAOL,IACf20C,EAAkB30C,GAClB60C,GAAsC,MAI5C5V,yBAA0B,CAAEgW,SAAU30C,EAAM40C,eAAe3nC,IAC3D4wB,cAAe,KACfiK,UAAU,6BACVD,SAAS,cACTnK,WAAY,CACVuI,WAAW,EACXliC,UAAW,2BACXq0B,oBAAqBr4B,MAAOL,IAC1BA,EAAKi1C,SAAW30C,EAAM40C,eAAe3nC,IAC9B,IAGX23B,aAAc,CACZqB,WAAW,EACXliC,UAAW,oCC9Jf8wC,GAED70C,IACH,MAAMsC,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BS,QAAS,uDACTW,WAAY,uCACZH,KAAM,uCACNJ,SAAU,uCACVL,QAASA,IA0DX,OACEhF,EAAAA,IAAC++B,GAAY,CACX/F,WAAYA,EACZj8B,KAAMA,EACNi/B,yBAA0B,CACxBmW,cAAe90C,GAAO+0C,qBAAqB9nC,IAE7CtF,QAASA,EACT02B,SAAU,CAAEA,SAAU,OACtB2D,aAhE0C,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,wCACZR,UAAW,aACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,wCACZR,UAAW,aACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,+CACZR,UAAW,oBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,+BACZR,UAAW,WACX9mB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,kDACZR,UAAW,sBACXO,QAAQ,EACRiL,UAAW,CAAEjL,QAAQ,GACrBrnB,UAAU,EACV+mB,UAAW,UAebiH,cAAe,KACf8J,aAAa,EACbG,UAAU,mCACVD,SAAS,cACTnK,WAAY,CACVuI,WAAW,EACXliC,UAAW,iCACXq0B,oBAAqBr4B,MAAOL,IAC1BA,EAAKs1C,oBAAsBh1C,GAAO+0C,qBAAqB9nC,IAChD,IAGX23B,aAAc,CACZqB,WAAW,EACXliC,UAAW,uCC5FbkxC,GAEDj1C,IACH,MAAMsC,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BS,QAAS,8CACTW,WAAY,0CACZH,KAAM,0CACNJ,SAAU,0CACVL,QAASA,KAEJorC,EAA0BC,GAA+B/2C,EAAAA,SAAS,KAEnE6D,iBAAEA,GAAqBvB,KAc7BnC,EAAAA,WAAU,KAb0B2D,iBAC5BD,EAAiB,CACrBG,YAAa,uDACbG,UAAU,EACVF,WAAY,CACV40C,cAAe90C,EAAM+0C,oBAAoB9nC,IAE3CzM,gBAAkBpB,IAChB4zC,EAA4B5zC,EAASM,UAMzCuzC,KACC,IACH,MAAMjR,EAAwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,qDACZR,UAAW,sBACX9mB,UAAU,EACVqnB,QAAQ,EACRiL,UAAW,CAAEjL,QAAQ,GACrBN,UAAW,WAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,gDACZR,UAAW,iBACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAASspC,EACTnb,iBAAkB,KAClBD,mBAAoB,eAIxB,CACEr8B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,8CACZR,UAAW,gBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,8CACZR,UAAW,gBACX9mB,UAAU,EACV+mB,UAAW,SAIf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,qDACZR,UAAW,uBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,yCACZR,UAAW,WACX9mB,UAAU,EACV+mB,UAAW,cAKjB,OACEj0B,EAAC0B,IAAAq9B,GACC,CAAA/F,WAAYA,EACZj8B,KAAMA,EACNioC,aAAa,EACbhJ,yBAA0B,CACxBmW,cAAe90C,GAAO+0C,qBAAqB9nC,IAE7CtF,QAASA,EACT02B,SAAU,CAAEA,SAAU,OACtB2D,aAAcA,EACdnE,cAAe,KACfiK,UAAU,sCACVD,SAAS,MACTnK,WAAY,CACVuI,WAAW,EACXliC,UAAW,oCACXq0B,oBAAqBr4B,MAAOL,IAC1BA,EAAKs1C,oBAAsBh1C,GAAO+0C,qBAAqB9nC,IAChD,IAGX23B,aAAc,CACZqB,WAAW,EACXliC,UAAW,0CC3HbmxC,GAA2Dl1C,IAC/D,MAAO0J,EAAiBiqC,GAAsB13C,EAAAA,SAAS,KAChDk5C,EAAsBC,GAA2Bn5C,EAAAA,SAAS,KAC3DyE,kBAAEA,EAAiBZ,iBAAEA,GAAqBvB,KAiBhDnC,EAAAA,WAAU,KACJ4D,EAAMq1C,QAAUr1C,EAAMs1C,OAhBDv1C,iBACnBD,EAAiB,CACrBG,YAAa,gDACbG,UAAU,EACVF,WAAY,CACVo1C,MAAOt1C,EAAMs1C,MACbD,OAAQr1C,EAAMq1C,QAEhB70C,gBAAkBpB,IAChBu0C,EAAmBv0C,EAASM,KAAK61C,qBACjCH,EAAwBh2C,EAASM,KAAKy1C,0BAOxCK,KAED,CAACx1C,EAAMq1C,OAAQr1C,EAAMs1C,QAexB,OACE7yC,EAAAiK,KAAA3D,WAAA,CAAAhG,SAAA,CACEJ,MAAC2G,GACC,CAAAE,aAAa,gBACbC,QAAS0rC,EACT5rC,WAAW,KACXG,gBAAiBA,EACjBC,aAAcgqC,IAEhBlxC,EAAAiK,KAAC7H,MAAG,CACFN,GAAI,CACFkB,QAAS,OACTE,WAAY,SACZC,eAAgB,WAChBR,MAAO,QAGTrC,SAAA,CAAAJ,EAAA0B,IAAClB,EAAMA,OACL,CAAAC,QAAQ,YACRE,QAjCoBvD,gBACpBW,EAAkB,CACtBT,YAAa,gDACbG,UAAU,EACVF,WAAY,CAAEm1C,OAAQr1C,EAAMq1C,QAC5B31C,KAAMgK,EACNlJ,gBAAiB,KACfhB,EAAKA,MAAC00C,QAAQ,gDACVl0C,EAAMm0C,cACRn0C,EAAMm0C,mBAyBN5vC,GAAI,CAAE2B,YAAa,EAAGkkB,WAAY,qBAIpCznB,EAAAA,IAACQ,EAAAA,OAAO,CAAAC,QAAQ,YAAYC,MAAM,QAAQC,QAAStD,EAAMm0C,wCChE3DsB,GACJz1C,IAEA,MAAMsC,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,KAC1By5C,EAAcC,GAAmB15C,EAAAA,SAAS,OAE/CkI,OAAQyxC,EACR1xC,eAAgB2xC,GACd7xC,GAAU,CACZqC,YAAa,sCACbJ,WAAY,MACZb,MAAO,QAEHu2B,EAAax0B,GAAc,CAC/BS,QAAS,yCACTW,WAAY,qCACZH,KAAM,qCACNJ,SAAU,qCACVL,QAASA,IAgDX,OACElF,EACEiK,KAAA3D,EAAAuJ,SAAA,CAAAvP,SAAA,CAAAJ,EAAAA,IAACizC,EAAsB,CAAA7yC,SACrBJ,MAACuyC,GAAmB,CAClBI,MAAOt1C,EAAM+0C,oBAAoB9nC,GACjCooC,OAAQK,GAAczoC,GACtBknC,aAAc,KACZ0B,GAA8B,QAIpClzC,MAAC++B,GAAY,CACX/F,WAAYA,EACZj8B,KAAMA,EACNioC,aAAa,EACbhJ,yBAA0B,CACxBmW,cAAe90C,GAAO+0C,qBAAqB9nC,IAE7CtF,QAASA,EACT02B,SAAU,CAAEA,SAAU,OACtB2D,aAjEwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,gDACZR,UAAW,sBACX9mB,UAAU,EACVqnB,QAAQ,EACRiL,UAAW,CAAEjL,QAAQ,GACrBN,UAAW,WAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,oCACZR,UAAW,WACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,2CACZR,UAAW,kBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,oCACZR,UAAW,WACX9mB,UAAU,EACV+mB,UAAW,cA0BXiH,cAAe,KACfiK,UAAU,iCACVD,SAAS,MACTtJ,WAAY,CACV,CACEv4B,KAAM,MACNgyB,SAAUj4B,MAAOL,IACfi2C,EAAgBj2C,GAChBm2C,GAA8B,IAEhC/sC,MAAO,gBAGX40B,WAAY,CACVuI,WAAW,EACXliC,UAAW,+BACXq0B,oBAAqBr4B,MAAOL,IAC1BA,EAAKs1C,oBAAsBh1C,GAAO+0C,qBAAqB9nC,IAChD,IAGX23B,aAAc,CACZqB,WAAW,EACXliC,UAAW,wCC/Gf+xC,GAAyC91C,IAC7C,MAAMw0C,EAAsB91C,EAAWA,aACpCvB,GAAeA,EAAMmK,aAAaX,OAAO6tC,oBAAoB90C,QAE1D4C,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BS,QAAS,wBACTW,WAAY,oBACZH,KAAM,oBACNJ,SAAU,oBACVL,QAASA,IAGLq6B,EAAwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,eACZR,UAAW,iBACXltB,QAAS+qC,EACT7c,mBAAoB,qBACpBC,iBAAkB,KAClB/nB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,qBACZR,UAAW,aACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,2BACZR,UAAW,kBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,2BACZR,UAAW,kBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,sBACZR,UAAW,cACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iBACZR,UAAW,UACX9mB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,qBACZR,UAAW,sBACXO,QAAQ,EACRiL,UAAW,CAAEjL,QAAQ,GACrBrnB,UAAU,EACV+mB,UAAW,YAKjB,OACEj0B,MAAC++B,GAAY,CACX/F,WAAYA,EACZj8B,KAAMA,EACNiI,QAASA,EACTggC,aAAa,EACbhJ,yBAA0B,CACxBqW,oBAAqBh1C,EAAM+0C,oBAAoB9nC,IAEjDoxB,SAAU,CAAEA,SAAU,OACtB2D,aAAcA,EACdnE,cAAe,KACfiK,UAAWxlC,EAAE,iBACbulC,SAAS,aACTnK,WAAY,CACVuI,WAAW,EACXliC,UAAW,cACXq0B,oBAAsB14B,IACpBA,EAAKs1C,oBAAsBh1C,EAAM+0C,oBAAoB9nC,IAC9C,IAGX23B,aAAc,CAAEqB,WAAW,EAAMliC,UAAW,oBClH5CgyC,GACJ/1C,IAEA,MAAMg2C,EAAyBt3C,EAAWA,aACvCvB,GAAeA,EAAMmK,aAAaX,OAAOqvC,uBAAuBt2C,QAE7D4C,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BS,QAAS,oCACTW,WAAY,gCACZH,KAAM,gCACNJ,SAAU,gCACVL,QAASA,IAGLq6B,EAAwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,KACZR,UAAW,KACXC,UAAW,SACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,aACZR,UAAW,aACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,YACZR,UAAW,YACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,eACZR,UAAW,eACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iBACZR,UAAW,iBACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,qCACZR,UAAW,cACX9mB,UAAU,EACV+mB,UAAW,SACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,2CACZR,UAAW,oBACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAASusC,EACTpe,iBAAkB,KAClBD,mBAAoB,kBAGxB,CACEr8B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,qCACZR,UAAW,eACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,+BACZR,UAAW,UACX9mB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,8BACZR,UAAW,SACX9mB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iCACZR,UAAW,YACX9mB,UAAU,EACV+mB,UAAW,cAKjB,OACEj0B,EAAAA,IAAC++B,GAAY,CACX/F,WAAYA,EACZj8B,KAAMA,EACNiI,QAASA,EACT02B,SAAU,CAAEA,SAAU,OACtBsJ,aAAa,EACb3F,aAAcA,EACdnE,cAAe,KACfc,yBAA0B,CAAE8S,YAAazxC,EAAM03B,eAAezqB,IAC9D66B,UAAWxlC,EAAE,+BACbulC,SAAS,cACTnK,WAAY,CACVuI,WAAW,EACXliC,UAAW,4BACXq0B,oBAAqBr4B,MAAOL,IAC1BA,EAAK+xC,YAAczxC,EAAM03B,eAAezqB,IACjC,IAGX23B,aAAc,CACZqB,WAAW,EACXliC,UAAW,kCC7KbkyC,GAA2Dj2C,IAC/D,MAAMsC,EAAEA,GAAMC,mBACRyzC,EAAyBt3C,EAAWA,aACvCvB,GAAeA,EAAMmK,aAAaX,OAAOqvC,uBAAuBt2C,QAE5DA,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BS,QAAS,iCACTW,WAAY,6BACZH,KAAM,6BACNJ,SAAU,6BACVL,QAASA,IAGLq6B,EAAwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,KACZR,UAAW,KACXC,UAAW,SACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,aACZR,UAAW,aACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,YACZR,UAAW,YACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,eACZR,UAAW,eACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iBACZR,UAAW,iBACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,uCACZR,UAAW,oBACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAASusC,EACTpe,iBAAkB,KAClBD,mBAAoB,kBAGxB,CACEr8B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iCACZR,UAAW,eACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,2BACZR,UAAW,UACX9mB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,0BACZR,UAAW,SACX9mB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,6BACZR,UAAW,YACX9mB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,6BACZR,UAAW,WACXO,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,GAEVrnB,UAAU,EACV+mB,UAAW,YAKjB,OACEj0B,EAAAA,IAAC++B,GAAY,CACX/F,WAAYA,EACZj8B,KAAMA,EACNioC,aAAa,EACbhgC,QAASA,EACTg3B,yBAA0B,CAAEuX,SAAUl2C,EAAM03B,eAAezqB,IAC3DoxB,SAAU,CAAEA,SAAU,OACtB2D,aAAcA,EACdnE,cAAe,KACfiK,UAAWxlC,EAAE,2BACbulC,SAAS,IACTnK,WAAY,CACVuI,WAAW,EACXliC,UAAW,wBACXq0B,oBAAqBr4B,MAAOL,IAC1BA,EAAKw2C,SAAWl2C,EAAM03B,eAAezqB,IAC9B,IAGX23B,aAAc,CAAEqB,WAAW,EAAMliC,UAAW,8BCvK5CoyC,GAA4Bz2C,IAChC,GAAoB,IAAhBA,EAAKqL,OACP,MAAO,GAET,MAAMi3B,EAAwC,GAC9C,IAAK,MAAMroB,KAAO7S,OAAOC,KAAKrH,EAAK,IAAK,CACtC,MAAMo8B,EAAgC,CACpCxgC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAYxd,EACZgd,UAAWhd,EACXid,UAAW,SAGfoL,EAAar3B,KAAKmxB,GAGpB,OADAhkB,QAAQsc,IAAI,eAAgB4N,GACrBA,GAGHoU,GAAuDp2C,IAC3D8X,QAAQsc,IAAI,aAAcp0B,EAAMq2C,YAE9B1zC,EAAAA,IAAC++B,GAAY,CACXhiC,KAAMM,EAAMq2C,WACZlQ,sBAAsB,EACtBx+B,QAAS3H,EAAMs2C,cACftU,aAAcmU,GAAyBn2C,EAAMq2C,YAC7CtO,mBAAoB/nC,EAAM+nC,mBAC1BpJ,yBAA0B3+B,EAAM2+B,yBAChCqJ,4BAA6BhoC,EAAMgoC,4BACnC3J,SAAU,CAAEA,SAAU,QACtBwJ,SAAU,aACVC,UAAU,SACVZ,UAAU,EACVS,aAAa,EACbhM,WAAY,CACVtzB,iBAAkBtI,UACT,EAET8H,eAAgB9H,YAChByH,WAAYzH,UACVC,EAAMu2C,gBAERruC,WAAYnI,gBCFdy2C,GAA6Cx2C,IACjD,MAAOy2C,EAASC,GAAcz6C,EAAAA,SAAS,OAChCmV,EAAculC,GAAmB16C,EAAAA,SAAS,OAC1C26C,EAAiBC,GAAsB56C,EAAAA,SAAqB,KAC5D66C,EAAmBC,GAAwB96C,EAAAA,SAChD,wBAEI6D,iBAAEA,EAAgBY,kBAAEA,EAAiBI,0BAAEA,GAC3CvC,MACKy4C,EAAYC,GAAiBh7C,EAAAA,SAAc,OAC3Ci7C,EAAwBC,GAA6Bl7C,WAAc,IACrE+D,GAAOk3C,0BAELE,EAA0BC,GAA+Bp7C,EAAAA,SAE9D,KACIqG,EAAEA,GAAMC,mBAER+0C,EACJC,IAEA,MAAMvV,EAAwC,GAC9C,IAAK,MAAMwV,KAAmBD,EAAkB,CAC9C,MAAMzb,EAAgC,CACpCxgC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAYqgB,GAAiBC,eAC7B9gB,UAAW6gB,GAAiBE,cAC5B9gB,UAAW4gB,GAAiBG,cAC5BzgB,OAAQsgB,GAAiBtgB,OACzBJ,UAAW,CAAEC,UAAW,CAAElV,GAAI,EAAGD,GAAI,EAAGD,GAAI,KAC5C9R,SAAU2nC,GAAiBI,UAC3BhxB,aACEswB,EAAuBM,GAAiBE,gBACxCF,GAAiB5wB,eAGvBob,EAAar3B,KAAKmxB,GAEpB,OAAOkG,GAgCH6V,EAAY93C,MAAO+3C,EAAgBv3C,KACvCw2C,EAAqB,kBACc,UAA/Be,GAAgBC,iBACZr3C,EAAkB,CACtBT,YAAa,wBACbG,UAAU,EACVV,KAAM,CACJs4C,WAAYh4C,EAAMg4C,WAClB93C,WAAYK,EACZ03C,WAAYj4C,EAAMi4C,WAClBC,qBAAsBl4C,EAAMk4C,sBAE9B13C,gBAAkBpB,IAChB23C,EAAqB,kBACrBF,EAAmBz3C,EAASM,SAGvBo4C,GAAgBC,kBACnBj3C,EAA0B,CAC9Bb,YAAa,wBACbG,UAAU,EACVV,KAAM,CACJs4C,WAAYh4C,EAAMg4C,WAClB93C,WAAYK,EACZ03C,WAAYj4C,EAAMi4C,WAClBC,qBAAsBl4C,EAAMk4C,sBAE9B13C,gBAAkBpB,IAChB23C,EAAqB,kBACrB,MAAMoB,EAAqB/4C,EAASg5C,QAAQ,uBAC5C,IAAIC,EAAW,kBACf,GACEF,QACAA,EAAmB/uC,QAAQ,aAC3B,CACA,MAAM4a,EAAQm0B,EAAmBn0B,MAAM,wBACnCA,GAASA,EAAM,KAAIq0B,EAAWr0B,EAAM,IAE1C,GAAIq0B,EAAS/sC,SAAS,OAAQ,CAC5B,MAAMgtC,EAAO,IAAI34C,KAAK,CAACP,EAASM,MAAO,CAAEpE,KAAM,oBACzCoM,EAAMkL,IAAI2lC,gBAAgBD,GAChC5B,EAAWhvC,OACN,CACL,MAAM8wC,EAAO,IAAI74C,KAAK,CAACP,EAASM,MAAO,CACrCpE,KAAM8D,EAASg5C,QAAQ,kBAGnB1wC,EAAMxL,OAAO0W,IAAI2lC,gBAAgBC,GACjCC,EAAOx9C,SAASI,cAAc,KACpCo9C,EAAKC,KAAOhxC,EAGZ+wC,EAAKE,SAAWN,EAChBp9C,SAASgI,KAAKxH,YAAYg9C,GAC1BA,EAAKG,QAGL39C,SAASgI,KAAK41C,YAAYJ,GAC1Bv8C,OAAO0W,IAAIkmC,gBAAgBpxC,GAE7BoQ,QAAQsc,IAAIh1B,IAEdqB,gBAAkBrB,IAChBu3C,EACE,uDAEFI,EAAqB,aAkB7B,OAZA36C,EAAAA,WAAU,KACJ4D,GAAOg4C,YAvGUj4C,WACrBg3C,EAAqB,0BACfj3C,EAAiB,CACrBG,YAAa,6BACbG,UAAU,EACVF,WAAY,CAAE83C,WAAYh4C,EAAMg4C,YAChCx3C,gBAAkBpB,IAChB63C,EAAc73C,EAASM,MACvB23C,EACEC,EAAoCl4C,EAASM,KAAK63C,oBAGlB,IAAhCv3C,GAAO+4C,sBACkC,GAAzC35C,EAASM,KAAK63C,iBAAiBxsC,QAE/B8sC,EAAUz4C,EAASM,KAAMw3C,GACzBH,EAAqB,mBAErBA,EAAqB,4BAGzBt2C,gBAAkBrB,IAChBu3C,EACE,iEAEFI,EAAqB,aA+EvBiC,KAED,CACDh5C,EAAMg4C,WACNh4C,EAAM+4C,qBACN/4C,EAAMk3C,uBACNl3C,EAAMk4C,qBACNl4C,EAAMi4C,aAINx1C,EAAAA,KACEsG,EAAAA,SAAA,CAAAhG,SAAA,CAAAN,OAACoC,EAAAA,IAAG,CACFN,GAAI,CACFkB,QAAS,OACTE,WAAY,SACZC,eAAgB,SAChBR,MAAO,QAGTrC,SAAA,CAAAN,EAAAA,KAACoC,EAAAA,IAAG,CAACN,GAAI,CAAEgJ,KAAM,EAAGkf,UAAW,SAAUtC,aAAc,GACrDpnB,SAAA,CAAAJ,EAAAA,IAACoD,EAAAA,gBAAe,CACdC,KAC6B,UAA3BgxC,GAAYe,WAAyB,aAAe,WAEtD10C,MAAkC,UAA3B2zC,GAAYe,WAAyB,YAAc,UAC1D38C,MAAO,CAAE8K,YAAa,GAAIkkB,WAAY,MAEvC4sB,GAAYiC,cAEY,SAA1BjC,GAAYe,YACW,mBAAtBjB,EACEr0C,EAAAiK,KAAA3D,EAAAuJ,SAAA,CAAAvP,SAAA,EACmC,IAAhC/C,GAAO+4C,qBACNp2C,EAAK0B,IAAA0E,EAAAuJ,SAAA,CAAA,GACH8kC,EAAyBrsC,OAAS,EACpCpI,EAAAA,IAAC4D,EAAAA,WACC,CAAAjD,QAAS,KACP+zC,EACEC,EACEN,EAAWO,mBAGfR,EAAqB,4BAGvBh0C,SAAAJ,MAACoD,EAAAA,gBAAe,CAACC,KAAK,aAGxBrD,EAAA0B,IAAA0E,WAAA,CAAA,GAEFpG,EAAC0B,IAAAkC,aACC,CAAAxD,SAAAJ,EAAAA,IAACoD,EAAeA,gBAAA,CACdC,KAAK,UACL1C,QAAS,KACPu0C,EAAUb,EAAYE,WAShCv0C,EAAA0B,IAAA0E,EAAAuJ,SAAA,CAAA,MAGJ3P,MAACkC,EAAAA,IACC,CAAAN,GAAI,CACF+B,SAAU,EACVlB,MAAO,OACPK,QAAS,OACTC,cAAe,SACfC,WAAY,SACZC,eAAgB,cAGjB7C,SAAsB,4BAAtB+zC,GACyB,SAA1BE,GAAYe,WACVt1C,OAACwlC,EAAAA,UAAS,CAACC,iBAAe,EAAC3jC,GAAI,CAAEa,MAAO,QAAU6rB,UAAU,EAAIluB,SAAA,CAC9DJ,MAACwlC,EAAAA,iBACC,CAAAplC,SAAAN,EAAAiK,KAAC7H,MAAG,CACFN,GAAI,CACFkB,QAAS,OACTE,WAAY,SACZC,eAAgB,UACjB7C,SAAA,CAEDJ,MAACoD,EAAeA,gBAAA,CACd3K,MAAO,CAAEgvB,WAAY,EAAGlkB,YAAa,GACrCF,KAAK,WAEPrD,EAAAA,IAACwD,EAAAA,YAAWC,UAAU,OAA2BrD,SAAA,iBAGrDJ,EAAAA,IAAC2lC,EAAgBA,iBAAA,CAAAvlC,SACfJ,EAAAA,IAACkC,EAAAA,IAAG,CAAA9B,SACFJ,EAAAA,IAACw3B,GAAY,CACX6B,gBAAiB,CACflzB,MAAOxG,EAAE,yBACT0D,KAAM,SACNkyB,oBAAqB,WACrBC,kBAAmB,UACnBjB,QAAQ,GAEVoF,kBAAmB,CACjBxzB,MAAOxG,EAAE,mBACT0D,KAAM,SACNkyB,oBAAqB,WACrBC,kBAAmB,SAErBwD,WAAY,CACVtzB,iBAAkBtI,UACT,EAETmI,WAAYnI,MAAOQ,IAEf42C,EADYh3C,MAAVI,EACwBA,EAEA,CAAA,GAE5Bs3C,EAAUb,EAAYz2C,IAExBiH,WAAYzH,YACZ8H,eAAgB9H,aAElBw4B,SAAU6e,WAKM,mBAAtBN,IACsB,4BAAtBA,GACsB,mBAAtBA,IAC2B,UAA3BE,GAAYe,WACa,UAA3Bf,GAAYe,WACVp1C,EAAAA,IAACyzC,GACC,CAAAC,WAAYO,EACZN,cAAeO,EACfN,aAAcx2C,UACZ83C,EAAUb,EAAYE,IAExBnP,mBAAoBqP,EACpBzY,yBAA0BuY,EAC1BlP,4BAA6BmP,IAG/Bx0C,EAAAA,IACE,SAAA,CAAAwpC,IAAKsK,EACLrxC,MAAM,OACND,OAAO,OACPtC,MAAM,cACNzH,MAAO,CAAEusB,OAAQ,iBAAkBuC,UAAW,UAG1B,UAAtB4sB,EACFr0C,EAAAA,KAACoC,EAAAA,IAAG,CACFN,GAAI,CACFkB,QAAS,OACT8H,KAAM,EACN5H,WAAY,SACZC,eAAgB,UACjB7C,SAAA,CAEDJ,MAACoD,EAAAA,gBAAe,CACdC,KAAK,qBACL3C,MAAM,UACNjI,MAAO,CAAE8K,YAAa,GAAIkkB,WAAY,MAEvChZ,KAGHzO,MAAKoG,EAAAA,SAAA,CAAA,SCnVTmwC,GAAyC,CAC7CC,UAAW,CACTC,iBAAkB,CAAEC,aAAa,EAAOC,WAAW,GACnDC,gBAAiB,CAAEF,aAAa,EAAOC,WAAW,GAClDE,kBAAmB,CAAEH,aAAa,EAAMC,WAAW,GACnDG,uBAAwB,CAAEJ,aAAa,EAAOC,WAAW,GACzDI,iBAAkB,CAAEL,aAAa,EAAOC,WAAW,GACnDK,iBAAkB,CAAEN,aAAa,EAAOC,WAAW,IAErDM,OAAQ,CACNR,iBAAkB,CAAEC,aAAa,EAAOC,WAAW,GACnDC,gBAAiB,CAAEF,aAAa,EAAOC,WAAW,GAClDE,kBAAmB,CAAEH,aAAa,EAAOC,WAAW,GACpDG,uBAAwB,CAAEJ,aAAa,EAAOC,WAAW,GACzDI,iBAAkB,CAAEL,aAAa,EAAMC,WAAW,GAClDK,iBAAkB,CAAEN,aAAa,EAAMC,WAAW,IAEpDO,MAAO,CACLT,iBAAkB,CAAEC,aAAa,EAAOC,WAAW,GACnDC,gBAAiB,CAAEF,aAAa,EAAOC,WAAW,GAClDE,kBAAmB,CAAEH,aAAa,EAAOC,WAAW,GACpDG,uBAAwB,CAAEJ,aAAa,EAAMC,WAAW,GACxDI,iBAAkB,CAAEL,aAAa,EAAOC,WAAW,GACnDK,iBAAkB,CAAEN,aAAa,EAAOC,WAAW,KAIjDQ,GAAkC,CACtCl8C,EACA64B,EACAD,KAEA,GAAI54B,GAASs7C,GAAiBt7C,GAAQ,CACpC,MAAMm8C,EAA6Cb,GAAiBt7C,GAC9D47B,EAAS1yB,OAAOC,KAAKgzC,GAC3B,IAAK,MAAMlhB,KAASW,EAAQ,CACmBugB,EAAkBlhB,GACzCygB,UACpB7iB,EAAY4E,UAAUxC,IAEtBpC,EAAY0E,UAAUtC,GACtBrC,EAAYpD,SAASyF,EAAO,aAIhCpC,EAAY0E,UAAU,oBACtB1E,EAAY0E,UAAU,mBACtB1E,EAAY0E,UAAU,qBACtB1E,EAAY0E,UAAU,0BACtB1E,EAAY0E,UAAU,oBACtB1E,EAAY0E,UAAU,oBACtB3E,EAAYpD,SAAS,mBAAoB,MACzCoD,EAAYpD,SAAS,kBAAmB,MACxCoD,EAAYpD,SAAS,oBAAqB,MAC1CoD,EAAYpD,SAAS,yBAA0B,MAC/CoD,EAAYpD,SAAS,mBAAoB,MACzCoD,EAAYpD,SAAS,mBAAoB,OC9EvC4mB,GAAuDh6C,IAC3D,MAAMsC,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BS,QAAS,+BACTW,WAAY,2BACZH,KAAM,2BACNJ,SAAU,2BACVL,QAASA,IAsHX,OACEhF,EAAAA,IAAC++B,GAAY,CACX/F,WAAYA,EACZj8B,KAAMA,EACNioC,aAAa,EACbhJ,yBAA0B,CAACsb,eAAej6C,EAAM03B,eAAezqB,IAC/DtF,QAASA,EACT02B,SAAU,CAAEA,SAAU,OACtB2D,aA3H0C,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,KACZR,UAAW,KACXC,UAAW,SACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,aACZR,UAAW,aACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,YACZR,UAAW,YACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,eACZR,UAAW,eACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iBACZR,UAAW,iBACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,kCACZR,UAAW,iBACXO,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,GAEVrnB,UAAU,EACV+mB,UAAW,WAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,gCACZR,UAAW,gBACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAAS,CAAC,CAAE7L,MAAO,MAAQ,CAAEA,MAAO,OACpC+5B,mBAAoB,QACpBC,iBAAkB,UAGtB,CACEt8B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,gCACZR,UAAW,gBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,yBACZR,UAAW,UACX9mB,UAAU,EACV+mB,UAAW,cAcbiH,cAAe,KACfiK,UAAWxlC,EAAE,yBACbulC,SAAS,QACTnK,WAAY,CACVuI,WAAW,EACXliC,UAAW,sBACXq0B,oBAAsBrwB,GAChBA,GAAQmyC,gBAAkBlnB,GAAajrB,EAAOmyC,gBAChD16C,EAAKA,MAACF,MAAM,yCACL,IAETyI,EAAOkyC,eAAiBj6C,EAAM03B,eAAezqB,IACtC,IAGX23B,aAAc,CAAEqB,WAAW,EAAMliC,UAAW,4BCvJ5Co2C,GAA6Cn6C,IACjD,MAAMsC,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3Bm+C,EAAoB17C,EAAWA,aAClCvB,GAAeA,EAAMmK,aAAaX,OAAOyzC,kBAAkB16C,OAExDi8B,EAAax0B,GAAc,CAC/BS,QAAS,0BACTW,WAAY,sBACZH,KAAM,sBACNJ,SAAU,sBACVL,QAASA,IAGLq6B,EAAwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,KACZR,UAAW,KACXC,UAAW,SACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,aACZR,UAAW,aACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,YACZR,UAAW,YACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,eACZR,UAAW,eACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iBACZR,UAAW,iBACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAIjB,CACK57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,sBACZR,UAAW,WACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,uBACZR,UAAW,YACX9mB,UAAU,EACV+mB,UAAW,WAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,yBACZR,UAAW,cACX9mB,UAAU,EACV+mB,UAAW,SAIf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,uCACZR,UAAW,yBACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAAS2wC,EACTziB,mBAAoB,YACpBC,iBAAkB,OAGtB,CACEt8B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,kCACZR,UAAW,qBACX9mB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,oBACZR,UAAW,SACX9mB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,oBACZR,UAAW,UACX9mB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,6BACZR,UAAW,iBACX9mB,UAAU,EACVqnB,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,GAEVN,UAAW,YAKjB,OACEj0B,EAAAA,IAAC++B,GAAY,CACX/F,WAAYA,EACZj8B,KAAMA,EACNioC,aAAa,EACbhJ,yBAA0B,CAAEsb,eAAgBj6C,EAAM03B,eAAezqB,IACjEtF,QAASA,EACT02B,SAAU,CACRA,SAAU,QACVkH,MAAO,CACLK,UAAW,CAAE6G,OAAQ,MAAOC,SAAU,sBACtC7G,WAAY,YACZJ,WAAY,QAGhBzD,aAAcA,EACdnE,cAAe,KACfiK,UAAWxlC,EAAE,oBACbulC,SAAU,CAAE4E,OAAQ,MAAOC,SAAU,sBACrChP,WAAY,CACVuI,WAAW,EACXliC,UAAW,iBACXq0B,oBAAqBr4B,MAAOgI,IAC1BA,EAAOkyC,eAAiBj6C,EAAM03B,eAAezqB,IACtC,IAGX23B,aAAc,CAAEqB,WAAW,EAAMliC,UAAW,uBCrM5Cs2C,GAAyDr6C,IAC7D,MAAMs6C,EAAgB57C,EAAWA,aAC9BvB,GAAeA,EAAMmK,aAAaX,OAAO2zC,cAAc56C,QAEpD4C,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BS,QAAS,gCACTW,WAAY,4BACZH,KAAM,4BACNJ,SAAU,4BACVL,QAASA,IAGLq6B,EAAwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,KACZR,UAAW,KACXC,UAAW,SACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,aACZR,UAAW,aACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,YACZR,UAAW,YACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,eACZR,UAAW,eACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iBACZR,UAAW,iBACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLyJ,QAAS6wC,EACT1iB,iBAAkB,KAClBD,mBAAoB,aACpBR,WAAY,qBACZR,UAAW,WACX9mB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,0BACZR,UAAW,UACX9mB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,mCACZR,UAAW,iBACX9mB,UAAU,EACVqnB,QAAQ,EACRiL,UAAW,CAAEjL,QAAQ,GACrBN,UAAW,YAKjB,OACEj0B,EAAAA,IAAC++B,GAAY,CACX/F,WAAYA,EACZj8B,KAAMA,EACNioC,aAAa,EACbhJ,yBAA0B,CAAEsb,eAAgBj6C,EAAM03B,eAAezqB,IACjEtF,QAASA,EACT02B,SAAU,CAAEA,SAAU,OACtB2D,aAAcA,EACdnE,cAAe,KACfiK,UAAWxlC,EAAE,0BACbulC,SAAS,YACTnK,WAAY,CACVuI,WAAW,EACXliC,UAAW,uBACXq0B,oBAAsBrwB,IACpBA,EAAOkyC,eAAiBj6C,EAAM03B,eAAezqB,IACtC,IAGX23B,aAAc,CAAEqB,WAAW,EAAMliC,UAAW,6BChH5Cm1C,GAAyC,CAC7CqB,MAAO,CACLC,SAAU,CAAEnB,aAAa,EAAMC,WAAW,GAC1CmB,SAAU,CAAEpB,aAAa,EAAMC,WAAW,GAC1CoB,aAAc,CAAErB,aAAa,EAAMC,WAAW,GAC9CqB,aAAc,CAAEtB,aAAa,EAAMC,WAAW,GAC9CsB,aAAc,CAAEvB,aAAa,EAAMC,WAAW,GAC9CuB,sBAAuB,CAAExB,aAAa,EAAMC,WAAW,GACvDwB,sBAAuB,CAAEzB,aAAa,EAAMC,WAAW,GACvDyB,iBAAkB,CAAE1B,aAAa,EAAMC,WAAW,GAClD0B,sBAAuB,CAAE3B,aAAa,EAAOC,WAAW,GACxD2B,0BAA2B,CAAE5B,aAAa,EAAOC,WAAW,GAC5D4B,sBAAuB,CAAE7B,aAAa,EAAOC,WAAW,GACxD6B,mBAAoB,CAAE9B,aAAa,EAAOC,WAAW,GACrD8B,qBAAsB,CAAE/B,aAAa,EAAOC,WAAW,IAEzD+B,MAAO,CACLb,SAAU,CAAEnB,aAAa,EAAOC,WAAW,GAC3CmB,SAAU,CAAEpB,aAAa,EAAOC,WAAW,GAC3CoB,aAAc,CAAErB,aAAa,EAAOC,WAAW,GAC/CqB,aAAc,CAAEtB,aAAa,EAAOC,WAAW,GAC/CsB,aAAc,CAAEvB,aAAa,EAAOC,WAAW,GAC/CuB,sBAAuB,CAAExB,aAAa,EAAOC,WAAW,GACxDwB,sBAAuB,CAAEzB,aAAa,EAAOC,WAAW,GACxDyB,iBAAkB,CAAE1B,aAAa,EAAOC,WAAW,GACnD0B,sBAAuB,CAAE3B,aAAa,EAAMC,WAAW,GACvD2B,0BAA2B,CAAE5B,aAAa,EAAMC,WAAW,GAC3D4B,sBAAuB,CAAE7B,aAAa,EAAMC,WAAW,GACvD6B,mBAAoB,CAAE9B,aAAa,EAAMC,WAAW,GACpD8B,qBAAsB,CAAE/B,aAAa,EAAMC,WAAW,KAIpDgC,GAAkC,CACtC19C,EACA64B,EACAD,KAEA,GAAI54B,GAASs7C,GAAiBt7C,GAAQ,CACpC,MAAMm8C,EAA6Cb,GAAiBt7C,GAC9D47B,EAAS1yB,OAAOC,KAAKgzC,GAC3B,IAAK,MAAMlhB,KAASW,EAAQ,CACmBugB,EAAkBlhB,GACzCygB,UACpB7iB,EAAY4E,UAAUxC,IAEtBpC,EAAY0E,UAAUtC,GACtBrC,EAAYpD,SAASyF,EAAO,aAIhCpC,EAAY0E,UAAU,YACtB3E,EAAYpD,SAAS,WAAY,MACjCqD,EAAY0E,UAAU,YACtB3E,EAAYpD,SAAS,WAAY,MACjCqD,EAAY0E,UAAU,gBACtB3E,EAAYpD,SAAS,eAAgB,MACrCqD,EAAY0E,UAAU,gBACtB3E,EAAYpD,SAAS,eAAgB,MACrCqD,EAAY0E,UAAU,gBACtB3E,EAAYpD,SAAS,eAAgB,MACrCqD,EAAY0E,UAAU,yBACtB3E,EAAYpD,SAAS,wBAAyB,MAC9CqD,EAAY0E,UAAU,yBACtB3E,EAAYpD,SAAS,wBAAyB,MAC9CqD,EAAY0E,UAAU,oBACtB3E,EAAYpD,SAAS,mBAAoB,MACzCqD,EAAY0E,UAAU,yBACtB3E,EAAYpD,SAAS,wBAAyB,MAC9CqD,EAAY0E,UAAU,6BACtB3E,EAAYpD,SAAS,4BAA6B,MAClDqD,EAAY0E,UAAU,yBACtB3E,EAAYpD,SAAS,wBAAyB,MAC9CqD,EAAY0E,UAAU,sBACtB3E,EAAYpD,SAAS,qBAAsB,MAC3CqD,EAAY0E,UAAU,wBACtB3E,EAAYpD,SAAS,uBAAwB,OCtG3CmoB,GACJv7C,IAEA,MAAMsC,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BS,QAAS,wCACTW,WAAY,oCACZH,KAAM,oCACNJ,SAAU,oCACVL,QAASA,IAELyyC,EAAoB17C,EAAWA,aAClCvB,GAAeA,EAAMmK,aAAaX,OAAOyzC,kBAAkB16C,OAExDsiC,EAAwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,KACZR,UAAW,KACXC,UAAW,SACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,aACZR,UAAW,aACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,YACZR,UAAW,YACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,eACZR,UAAW,eACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iBACZR,UAAW,iBACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,gDACZR,UAAW,qBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,qBACZR,UAAW,uBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,sBACZR,UAAW,uBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iDACZR,UAAW,sBACX9mB,UAAU,EACV+mB,UAAW,WAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,yCACZR,UAAW,cACX9mB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WACE,4FACFR,UAAW,qBACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAAS2wC,EACTxiB,iBAAkB,KAClBD,mBAAoB,YACpBwK,UAAW,CAAEjL,QAAQ,KAGzB,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WACE,gFACFR,UAAW,0BACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAAS2wC,EACTxiB,iBAAkB,KAClBD,mBAAoB,YACpBwK,UAAW,CAAEjL,QAAQ,KAGzB,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,+BACZR,UAAW,4BACXC,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,gDACZR,UAAW,qBACX9mB,UAAU,EACVqnB,QAAQ,EACRiL,UAAW,CAAEjL,QAAQ,GACrBN,UAAW,WAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,mCACZR,UAAW,UACX9mB,UAAU,EACV+mB,UAAW,cAKjB,OACEj0B,MAAC++B,GAAY,CACX/F,WAAYA,EACZj8B,KAAMA,EACNiI,QAASA,EACTggC,aAAa,EACbhJ,yBAA0B,CACxB6c,mBAAoBx7C,EAAM03B,eAAezqB,IAE3CoxB,SAAU,CACRA,SAAU,QACVkH,MAAO,CACLK,UAAW,MACXC,WAAY,2BACZJ,WAAY,MAGhBzD,aAAcA,EACdnE,cAAe,KACfiK,UAAWxlC,EAAE,mCACbulC,SAAS,OACTnK,WAAY,CACVuI,WAAW,EACXliC,UAAW,gCACXq0B,oBAAsBrwB,IACpBA,EAAOyzC,mBAAqBx7C,EAAM03B,eAAezqB,IAC1C,IAGX23B,aAAc,CACZqB,WAAW,EACXliC,UAAW,sCCjOb03C,GAEDz7C,IACH,MAAMsC,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BS,QAAS,4CACTW,WAAY,wCACZH,KAAM,wCACNJ,SAAU,wCACVL,QAASA,IAMLq6B,EAAwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,KACZR,UAAW,KACXC,UAAW,SACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,aACZR,UAAW,aACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,YACZR,UAAW,YACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,eACZR,UAAW,eACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iBACZR,UAAW,iBACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,mDACZR,UAAW,mBACX9mB,UAAU,EACV+mB,UAAW,SACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iDACZR,UAAW,iBACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QA3FsB/K,EAAWA,aACpCvB,GAAeA,EAAMmK,aAAaX,OAAO+0C,oBAAoBh8C,OA2F1Di4B,mBAAoB,mBACpBC,iBAAkB,OAGtB,CACEt8B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,wCACZR,UAAW,UACX9mB,UAAU,EACV+mB,UAAW,cAKjB,OACEj0B,EAAAA,IAAC++B,GAAY,CACX/F,WAAYA,EACZj8B,KAAMA,EACNioC,aAAa,EACbhJ,yBAA0B,CAAEgd,SAAU37C,EAAM03B,eAAezqB,IAC3DtF,QAASA,EACT02B,SAAU,CAAEA,SAAU,OACtB2D,aAAcA,EACdnE,cAAe,KACfiK,UAAWxlC,EAAE,wCACbulC,SAAS,cACTnK,WAAY,CACVuI,WAAW,EACXliC,UAAW,qCACXq0B,oBAAsBrwB,IACpBA,EAAO6zC,iBAAmB57C,EAAM03B,eAAezqB,IACxC,IAGX23B,aAAc,CACZqB,WAAW,EACXliC,UAAW,2CC/Ib83C,GACJ77C,IAEA,MAAO03B,EAAgB2c,GAAqBp4C,EAAAA,SAAc,OAExDkI,OAAQ23C,EACR53C,eAAgB63C,GACd/3C,GAAU,CACZqC,YAAa,2BACbJ,WAAY,WACZb,MAAO,SAEH9C,EAAEA,GAAMC,oBACRzC,iBAAEA,GAAqBvB,MACtBy9C,EAAgBC,GAAqBhgD,EAAAA,SAAqB,IAajEG,EAAAA,WAAU,KAZyB2D,iBAC3BD,EAAiB,CACrBG,YAAa,wCACbG,UAAU,EACVF,WAAY,CACVs7C,mBAAoBx7C,EAAM03B,eAAezqB,IAE3CzM,gBAAkBpB,IAChB68C,EAAkB78C,EAASM,UAK/Bw8C,KACC,CAACl8C,EAAM03B,iBACV,MAAOh4B,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BS,QAAS,wCACTW,WAAY,oCACZH,KAAM,oCACNJ,SAAU,oCACVL,QAASA,IAGLq6B,EAAwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,KACZR,UAAW,KACXC,UAAW,SACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,aACZR,UAAW,aACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,YACZR,UAAW,YACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,eACZR,UAAW,eACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iBACZR,UAAW,iBACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,gDACZR,UAAW,qBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,qBACZR,UAAW,uBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,sBACZR,UAAW,uBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,mDACZR,UAAW,uBACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAASuyC,EACTrkB,mBAAoB,qBACpBC,iBAAkB,OAGtB,CACEt8B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WACE,+GACFR,UAAW,qBACX9mB,UAAU,EACV+mB,UAAW,OACXuL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WACE,8GACFR,UAAW,oBACX9mB,UAAU,EACV+mB,UAAW,OACXuL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,2CACZR,UAAW,iBACX9mB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,gDACZR,UAAW,qBACX9mB,UAAU,EACV+mB,UAAW,SACXM,QAAQ,EACRiL,UAAW,CAAEjL,QAAQ,MAK3B,OACEz0B,OAAAsG,EAAAA,SAAA,CAAAhG,SAAA,CACEJ,EAAAA,IAACm5C,EACC,CAAA/4C,SAAAJ,MAAC84C,GAA8B,CAAC/jB,eAAgBA,MAElD/0B,MAAC++B,GAAY,CACX/F,WAAYA,EACZj8B,KAAMA,EACNioC,aAAa,EACbhJ,yBAA0B,CACxB6c,mBAAoBx7C,EAAM03B,eAAezqB,IAE3CtF,QAASA,EACT02B,SAAU,CACRA,SAAU,QACVkH,MAAO,CACLK,UAAW,QACXC,WAAY,2BACZJ,WAAY,MAGhBlH,WAAY,CACV,CACEz1B,MAAO,4BACP9C,KAAM,WACNgyB,SAAUj4B,MAAOL,IACf20C,EAAkB30C,GAClBq8C,GAAyB,MAI/B/Z,aAAcA,EACdnE,cAAe,KACfiK,UAAWxlC,EAAE,mCACbulC,SAAS,QACTnK,WAAY,CACVuI,WAAW,EACXliC,UAAW,gCACXq0B,oBAAsBrwB,IACpBA,EAAOyzC,mBAAqBx7C,EAAM03B,eAAezqB,IAC1C,IAGX23B,aAAc,CACZqB,WAAW,EACXliC,UAAW,yCC1Nfm1C,GAAyC,CAC7ClqC,UAAW,CACT7J,OAAQ,CAAEk0C,aAAa,EAAMC,WAAW,GACxCl0C,MAAO,CAAEi0C,aAAa,EAAMC,WAAW,GACvCtH,oBAAqB,CAAEqH,aAAa,EAAMC,WAAW,GACrDrH,oBAAqB,CAAEoH,aAAa,EAAMC,WAAW,GACrD6C,WAAY,CAAE9C,aAAa,EAAOC,WAAW,GAC7CzH,kBAAmB,CAAEwH,aAAa,EAAMC,WAAW,GACnD8C,kBAAmB,CAAE/C,aAAa,EAAMC,WAAW,IAErD+C,YAAa,CACXl3C,OAAQ,CAAEk0C,aAAa,EAAMC,WAAW,GACxCl0C,MAAO,CAAEi0C,aAAa,EAAMC,WAAW,GACvCtH,oBAAqB,CAAEqH,aAAa,EAAMC,WAAW,GACrDrH,oBAAqB,CAAEoH,aAAa,EAAMC,WAAW,GACrD6C,WAAY,CAAE9C,aAAa,EAAOC,WAAW,GAC7CzH,kBAAmB,CAAEwH,aAAa,EAAMC,WAAW,GACnD8C,kBAAmB,CAAE/C,aAAa,EAAMC,WAAW,IAErD5pC,SAAU,CACRvK,OAAQ,CAAEk0C,aAAa,EAAMC,WAAW,GACxCl0C,MAAO,CAAEi0C,aAAa,EAAMC,WAAW,GACvCtH,oBAAqB,CAAEqH,aAAa,EAAMC,WAAW,GACrDrH,oBAAqB,CAAEoH,aAAa,EAAOC,WAAW,GACtD6C,WAAY,CAAE9C,aAAa,EAAOC,WAAW,GAC7CzH,kBAAmB,CAAEwH,aAAa,EAAMC,WAAW,GACnD8C,kBAAmB,CAAE/C,aAAa,EAAOC,WAAW,IAEtD/tC,KAAM,CACJpG,OAAQ,CAAEk0C,aAAa,EAAMC,WAAW,GACxCl0C,MAAO,CAAEi0C,aAAa,EAAMC,WAAW,GACvCtH,oBAAqB,CAAEqH,aAAa,EAAMC,WAAW,GACrDrH,oBAAqB,CAAEoH,aAAa,EAAOC,WAAW,GACtD6C,WAAY,CAAE9C,aAAa,EAAOC,WAAW,GAC7CzH,kBAAmB,CAAEwH,aAAa,EAAMC,WAAW,GACnD8C,kBAAmB,CAAE/C,aAAa,EAAOC,WAAW,IAEtDgD,iBAAkB,CAChBn3C,OAAQ,CAAEk0C,aAAa,EAAOC,WAAW,GACzCl0C,MAAO,CAAEi0C,aAAa,EAAOC,WAAW,GACxCtH,oBAAqB,CAAEqH,aAAa,EAAOC,WAAW,GACtDrH,oBAAqB,CAAEoH,aAAa,EAAOC,WAAW,GACtD6C,WAAY,CAAE9C,aAAa,EAAOC,WAAW,GAC7CzH,kBAAmB,CAAEwH,aAAa,EAAOC,WAAW,GACpD8C,kBAAmB,CAAE/C,aAAa,EAAOC,WAAW,IAEtDnqC,eAAgB,CACdhK,OAAQ,CAAEk0C,aAAa,EAAOC,WAAW,GACzCl0C,MAAO,CAAEi0C,aAAa,EAAOC,WAAW,GACxCtH,oBAAqB,CAAEqH,aAAa,EAAOC,WAAW,GACtDrH,oBAAqB,CAAEoH,aAAa,EAAOC,WAAW,GACtD6C,WAAY,CAAE9C,aAAa,EAAOC,WAAW,GAC7CzH,kBAAmB,CAAEwH,aAAa,EAAOC,WAAW,GACpD8C,kBAAmB,CAAE/C,aAAa,EAAOC,WAAW,KAIlDiD,GAAkC,CACtC3+C,EACA64B,EACAD,KAEA,GAAI54B,GAASs7C,GAAiBt7C,GAAQ,CACpC,MAAMm8C,EAA6Cb,GAAiBt7C,GAC9D47B,EAAS1yB,OAAOC,KAAKgzC,GAC3B,IAAK,MAAMlhB,KAASW,EAAQ,CACmBugB,EAAkBlhB,GACzCygB,UACpB7iB,EAAY4E,UAAUxC,IAEtBpC,EAAY0E,UAAUtC,GACtBrC,EAAYpD,SAASyF,EAAO,aAIhCpC,EAAY0E,UAAU,UACtB3E,EAAYpD,SAAS,SAAU,MAC/BqD,EAAY0E,UAAU,SACtB3E,EAAYpD,SAAS,QAAS,MAC9BqD,EAAY0E,UAAU,uBACtB3E,EAAYpD,SAAS,sBAAuB,MAC5CqD,EAAY0E,UAAU,uBACtB3E,EAAYpD,SAAS,sBAAuB,MAC5CqD,EAAY0E,UAAU,cACtB3E,EAAYpD,SAAS,aAAc,MACnCqD,EAAY0E,UAAU,qBACtB3E,EAAYpD,SAAS,oBAAqB,MAC1CqD,EAAY0E,UAAU,qBACtB3E,EAAYpD,SAAS,oBAAqB,OCnHxCopB,GAA2Dx8C,IAC/D,MAAMsC,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3BwgD,EAAgB/9C,EAAWA,aAC9BvB,GAAeA,EAAMmK,aAAaX,OAAO81C,cAAc/8C,OAEpDi8B,EAAax0B,GAAc,CAC/BS,QAAS,iCACTW,WAAY,6BACZH,KAAM,6BACNJ,SAAU,6BACVL,QAASA,IAGLq6B,EAAwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,KACZR,UAAW,KACXC,UAAW,SACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,aACZR,UAAW,aACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,YACZR,UAAW,YACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,eACZR,UAAW,eACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iBACZR,UAAW,iBACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,gCACZR,UAAW,cACX9mB,UAAU,EACVqnB,QAAQ,EACRiL,UAAW,CAAEjL,QAAQ,GACrBN,UAAW,WAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,6BACZR,UAAW,WACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAASgzC,EACT7kB,iBAAkB,KAClBD,mBAAoB,eAGxB,CACEr8B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,gCACZR,UAAW,cACX9mB,UAAU,EACV+mB,UAAW,WAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,2BACZR,UAAW,UACX9mB,UAAU,EACV+mB,UAAW,cAKjB,OACEj0B,EAAAA,IAAC++B,GAAY,CACX/F,WAAYA,EACZj8B,KAAMA,EACNiI,QAASA,EACT02B,SAAU,CAAEA,SAAU,OACtBsJ,aAAa,EACb3F,aAAcA,EACdrD,yBAA0B,CAAE+d,YAAa18C,EAAM03B,eAAezqB,IAC9D4wB,cAAe,KACfiK,UAAWxlC,EAAE,2BACbulC,SAAS,cACTnK,WAAY,CACVuI,WAAW,EACXliC,UAAW,wBACXq0B,oBAAqBr4B,MAAOL,IAC1BA,EAAKg9C,YAAc18C,EAAM03B,eAAezqB,IACjC,IAGX23B,aAAc,CAAEqB,WAAW,EAAMliC,UAAW,8BC1JrC44C,GAAoC,CAC/C,CACE53B,KAAM,IACN3e,UCCmB,IAEnBzD,MAACuvC,IAAgBG,cAAc,8BCNsB,ICSV,CAC7C,CACEttB,KAAM,sBACN3e,UCN+B,KACjC,MAAM9D,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BS,QAAS,gCACTW,WAAY,4BACZH,KAAM,4BACNJ,SAAU,4BACVL,QAASA,KAGTxD,OAAQy4C,EACR14C,eAAgB24C,GACd74C,GAAU,CACZqC,YAAa,8CACbJ,WAAY,iBAGZ9B,OAAQ24C,EACR54C,eAAgB64C,GACd/4C,GAAU,CACZqC,YAAa,0BACbJ,WAAY,UAEN9B,OAAQ64C,EAAgB94C,eAAgB+4C,GAC9Cj5C,GAAU,CACRqC,YAAa,qBACbJ,WAAY,iBAER9B,OAAQ+4C,EAAgBh5C,eAAgBi5C,GAC9Cn5C,GAAU,CACRqC,YAAa,qBACbJ,WAAY,iBAETyxB,EAAgB2c,GAAqBp4C,EAAAA,SAAc,MAsD1D,OACEwG,EAAAiK,KAAA3D,EAAAuJ,SAAA,CAAAvP,SAAA,CACEJ,EAAAA,IAACi6C,YACCj6C,EAAAA,IAACmwC,GACC,CAAAK,qBAAsBzb,MAG1B/0B,EAAAA,IAACm6C,EAAkB,CAAA/5C,SACjBJ,EAAC0B,IAAA+uC,IAAyBD,qBAAsBzb,MAElD/0B,EAAA0B,IAAC24C,EAAc,CAAAj6C,SACbJ,EAAAA,IAAC0wC,GAAoB,CAACF,qBAAsBzb,MAE9C/0B,EAAAA,IAACu6C,EAAc,CAAAn6C,SACbJ,EAAAA,IAAC8wC,IAAqBN,qBAAsBzb,MAE9C/0B,EAAAA,IAAC++B,GAAY,CACX/F,WAAYA,EACZj8B,KAAMA,EACNiI,QAASA,EACT02B,SAAU,CAAEA,SAAU,OACtBE,WAAY,CACV,CACEv4B,KAAM,cACNgyB,SAAUj4B,MAAOL,IACf20C,EAAkB30C,GAClBm9C,GAA0B,IAE5B/zC,MAAO,WAET,CACE9C,KAAM,OACNgyB,SAAUj4B,MAAOL,IACf20C,EAAkB30C,GAClBq9C,GAA2B,IAE7Bj0C,MAAO,2BAET,CACE9C,KAAM,cACNgyB,SAAUj4B,MAAOL,IACf20C,EAAkB30C,GAClBu9C,GAAuB,IAEzBn0C,MAAO,sBAET,CACE9C,KAAM,cACNgyB,SAAUj4B,MAAOL,IACf20C,EAAkB30C,GAClBy9C,GAAuB,IAEzBr0C,MAAO,uBAGXk5B,aA5GwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iCACZR,UAAW,mBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,oCACZR,UAAW,qBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,oCACZR,UAAW,qBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,yBACZR,UAAW,WACX9mB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAK,QACLkzB,KAAK,QACLxuB,MAAM,CACJm3B,WAAW,SACXR,UAAU,SACVC,UAAU,SACVR,WAAW,YA6DXyH,cAAe,KACfiK,UAAU,sBACVD,SAAS,QACTnK,WAAY,CAAEuI,WAAW,EAAMliC,UAAW,qBAC1C6gC,aAAc,CAAEqB,WAAW,EAAMliC,UAAW,6BD7IhDA,UAAW,qBAEb,CACEghB,KAAM,4BACN3e,UAAWguC,GACXrwC,UAAW,4BAEb,CACEghB,KAAM,gCACN3e,UEpByC,KAC5C,MAAM9D,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,IACxB0/B,EAAax0B,GAAc,CAChCS,QAAS,0CACTW,WAAY,sCACZH,KAAM,sCACTJ,SAAU,sCACPL,QAASA,IAwDb,OACIhF,EAAAA,IAAC++B,GAAY,CACV/F,WAAYA,EACZj8B,KAAMA,EACNiI,QAASA,EACT02B,SAAU,CAAEA,SAAU,OACtB2D,aA3DuC,CACpC,CACD1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,qCACZR,UAAW,WACX9mB,UAAU,EACV+mB,UAAW,aAGiB,CAC9Bt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,oCACZR,UAAW,UACX9mB,UAAU,EACV+mB,UAAW,aAGa,CAC1Bt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,kDACZR,UAAW,uBACX9mB,UAAU,EACV+mB,UAAW,SAGJ,CACTt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,sCACZR,UAAW,YACX9mB,UAAU,EACV+mB,UAAW,aAGD,CACZt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,sDACZR,UAAW,0BACX9mB,UAAU,EACV+mB,UAAW,UAYpBiH,cAAe,KACViK,UAAU,kCACVD,SAAS,cACTnK,WAAY,CAAEuI,WAAW,EAAMliC,UAAW,iCAC1C6gC,aAAc,CAAEqB,WAAW,EAAMliC,UAAW,sCFtDhDA,UAAW,iCAEb,CACEghB,KAAM,0BACN3e,UAAWqtC,GACX1vC,UAAW,0BAEb,CACEghB,KAAM,0BACN3e,UAAWitC,GACXtvC,UAAW,0BAEb,CACEghB,KAAM,8BACN3e,UAAWgtC,GACXrvC,UAAW,+BAEb,CACEghB,KAAM,gBACN3e,UGtCyB,KAC3B,MAAM9D,EAAEA,GAAMC,oBACPqyC,EAAgBwI,GAAqBnhD,EAAAA,SAAc,OACnDyD,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BS,QAAS,0BACTW,WAAY,sBACZH,KAAM,sBACNJ,SAAU,sBACVL,QAASA,KAGTxD,OAAQk5C,EACRn5C,eAAgBo5C,GACdt5C,GAAU,CACZqC,YAAa,2BACbJ,WAAY,UAoGd,OACExD,OAAAsG,EAAAA,SAAA,CAAAhG,SAAA,CACEJ,EAAAA,IAAC06C,EACC,CAAAt6C,SAAAJ,MAACyxC,GAAsB,CAACQ,eAAgBA,MAE1CjyC,MAAC++B,GAAY,CACX/F,WAAYA,EACZj8B,KAAMA,EACNiI,QAASA,EACT02B,SAAU,CACRA,SAAU,QACVkH,MAAO,CACLK,UAAW,OACXC,WAAY,iBACZJ,WAAY,MAGhBzD,aAlHwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLk3B,QAAQ,EACRC,WAAY,aACZR,UAAW,YACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLk3B,QAAQ,EACRC,WAAY,yBACZR,UAAW,gBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,0BACZR,UAAW,iBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,0BACZR,UAAW,iBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,eACZR,UAAW,QACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,uBACZR,UAAW,eACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLk3B,QAAQ,EACRiL,UAAW,CAAEjL,QAAQ,GACrBC,WAAY,kBACZR,UAAW,WACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,kBACZR,UAAW,WACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,mBACZR,UAAW,WACX9mB,UAAU,EACV+mB,UAAW,cAuBXiH,cAAe,KACfiK,UAAU,gBACVvJ,WAAY,CACV,CACEv4B,KAAM,QACN8C,MAAO,qBACPkvB,SAAUj4B,MAAOL,IACf09C,EAAkB19C,GAClB49C,GAAiC,MAIvCzV,SAAS,QACTnK,WAAY,CACVuI,WAAW,EACXliC,UAAW,cACXq0B,oBAAsB14B,GAEAS,MAAlBT,EAAK69C,WACa,MAAlB79C,EAAK69C,WACa,IAAlB79C,EAAK69C,YAEL/9C,EAAKA,MAACF,MACJ,oFAEK,IAKbslC,aAAc,CACZqB,WAAW,EACXliC,UAAW,gBACXq0B,oBAAsB14B,GAEAS,MAAlBT,EAAK69C,WACa,MAAlB79C,EAAK69C,WACa,IAAlB79C,EAAK69C,YAEL/9C,EAAKA,MAACF,MACJ,oFAEK,UHzIjByE,UAAW,eAEb,CACEghB,KAAM,2BACN3e,UIzCoC,KACtC,MAAM9D,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BS,QAAS,qCACTW,WAAY,iCACZH,KAAM,iCACNJ,SAAU,iCACVL,QAASA,KAGTxD,OAAQy4C,EACR14C,eAAgBs5C,GACdx5C,GAAU,CACZqC,YAAa,6BACbJ,WAAY,iBAGZ9B,OAAQs5C,EACRv5C,eAAgBw5C,GACd15C,GAAU,CACZqC,YAAa,iCACbJ,WAAY,SAGZ9B,OAAQw5C,EACRz5C,eAAgB05C,GACd55C,GAAU,CACZqC,YAAa,2BACbJ,WAAY,SAGZ9B,OAAQ05C,EACR35C,eAAgB45C,GACd95C,GAAU,CACZqC,YAAa,6BACbJ,WAAY,gBAEPyxB,EAAgB2c,GAAqBp4C,EAAAA,SAAc,MA6C1D,OACEwG,OACEsG,EAAAA,SAAA,CAAAhG,SAAA,CAAAJ,EAAAA,IAACi6C,EAAwB,CAAA75C,SACvBJ,MAACkyC,GAA4B,CAAAE,oBAAqBrd,MAEpD/0B,MAAC86C,EAA6B,CAAA16C,SAC5BJ,MAACsyC,GAA+B,CAAAF,oBAAqBrd,MAEvD/0B,MAACg7C,EAAsB,CAAA56C,SACrBJ,MAAC8yC,GAAyB,CAACV,oBAAqBrd,MAElD/0B,EAAC0B,IAAAw5C,EACC,CAAA96C,SAAAJ,EAAA0B,IAACyxC,GAAU,CAACf,oBAAqBrd,MAEnC/0B,EAAC0B,IAAAq9B,GACC,CAAA/F,WAAYA,EACZ4C,WAAY,CACV,CACEv4B,KAAM,cACNgyB,SAAUj4B,MAAOL,IACf20C,EAAkB30C,GAClB89C,GAAiC,IAEnC10C,MAAO,WAET,CACE9C,KAAM,MACNgyB,SAAUj4B,MAAOL,IACf20C,EAAkB30C,GAClBg+C,GAAqC,IAEvC50C,MAAO,eAET,CACE9C,KAAM,MACNgyB,SAAUj4B,MAAOL,IACf20C,EAAkB30C,GAClBk+C,GAA+B,IAEjC90C,MAAO,SAET,CACE9C,KAAM,aACNgyB,SAAUj4B,MAAOL,IACf20C,EAAkB30C,GAClBo+C,GAAiC,IAEnCh1C,MAAO,YAGXpJ,KAAMA,EACNiI,QAASA,EACT02B,SAAU,CAAEA,SAAU,OACtB2D,aAjGwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,sCACZR,UAAW,kBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,sCACZR,UAAW,kBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,6CACZR,UAAW,yBACX9mB,UAAU,EACV+mB,UAAW,SAIf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,+BACZR,UAAW,WACX9mB,UAAU,EACV+mB,UAAW,cA2DXiH,cAAe,KACfiK,UAAU,4BACVD,SAAS,iBACTnK,WAAY,CAAEuI,WAAW,EAAMliC,UAAW,2BAC1C6gC,aAAc,CACZqB,WAAW,EACXliC,UAAW,mCJrGjBA,UAAW,2BAEb,CACEghB,KAAM,qCACN3e,UAAW6uC,GACXlxC,UAAW,qCAEb,CACEghB,KAAM,iCACN3e,UAAWyuC,GACX9wC,UAAW,kCAEb,CACEghB,KAAM,+BACN3e,UAAWqvC,GACX1xC,UAAW,gCAEb,CACEghB,KAAM,yCACN3e,UKjEiD,KACpD,MAAM9D,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,IACxB0/B,EAAax0B,GAAc,CAChCS,QAAS,kDACTW,WAAY,8CACZH,KAAM,8CACTJ,SAAU,8CACPL,QAASA,IAoCb,OACIhF,EAAAA,IAAC++B,GAAY,CACV/F,WAAYA,EACZj8B,KAAMA,EACNiI,QAASA,EACT02B,SAAU,CAAEA,SAAU,OACtB2D,aAvCuC,CACpC,CACD1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,8CACZR,UAAW,WACX9mB,UAAU,EACV+mB,UAAW,aAGkC,CAC/Ct7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,oEACZR,UAAW,+BACX9mB,UAAU,EACV+mB,UAAW,SAGD,CACZt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,+DACZR,UAAW,0BACX9mB,UAAU,EACV+mB,UAAW,UAYpBiH,cAAe,KACViK,UAAU,2CACVD,SAAS,cACTnK,WAAY,CAAEuI,WAAW,EAAMliC,UAAW,0CAC1C6gC,aAAc,CAAEqB,WAAW,EAAMliC,UAAW,+CLWhDA,UAAW,8CMtD8B,CAC3C,CACEghB,KAAM,iBACN3e,UCd4B,KAC9B,MAAM9D,EAAEA,GAAMC,mBACR63C,EAAoB17C,EAAWA,aAClCvB,GAAeA,EAAMmK,aAAaX,OAAOyzC,kBAAkB16C,QAEvDA,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BM,eAAgB,mBAChBc,WAAY,uBACZH,KAAM,uBACNJ,SAAU,uBACVL,QAASA,IAGLq6B,EAAwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,KACZR,UAAW,KACXC,UAAW,SACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,aACZR,UAAW,aACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,YACZR,UAAW,YACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,eACZR,UAAW,eACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iBACZR,UAAW,iBACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,6BACZR,UAAW,gBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,sBACZR,UAAW,UACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAAS2wC,EACTziB,mBAAoB,YACpBC,iBAAkB,QAKxB,OACEj1B,EAAAA,IAAC++B,GAAY,CACX/F,WAAYA,EACZj8B,KAAMA,EACNiI,QAASA,EACT02B,SAAU,CAAEA,SAAU,MAAOmL,iBAAiB,GAC9CxH,aAAcA,EACdnE,cAAe,KACfiK,UAAWxlC,EAAE,qBACbulC,SAAS,cACTnK,WAAY,CAAEuI,WAAW,EAAMliC,UAAW,mBAC1C6gC,aAAc,CAAEqB,WAAW,EAAMliC,UAAW,wBDrG9CA,UAAW,mBAEb,CACEghB,KAAM,kBACN3e,UEjB4B,KAC9B,MAAOsxB,EAAgB2c,GAAqBp4C,EAAAA,SAAc,OAExDkI,OAAQ45C,EACR75C,eAAgB85C,GACdh6C,GAAU,CACZoB,MAAO,MACPiB,YAAa,wBACbJ,WAAY,MAERg4C,EAAoBv/C,EAAWA,aAClCvB,GAAeA,EAAMmK,aAAaX,OAAOs3C,kBAAkBv+C,QAExD4C,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BM,eAAgB,oBAChBc,WAAY,uBACZH,KAAM,uBACNJ,SAAU,uBACVL,QAASA,IAGLq6B,EAAwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,KACZR,UAAW,KACXC,UAAW,SACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,aACZR,UAAW,aACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,YACZR,UAAW,YACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,eACZR,UAAW,eACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iBACZR,UAAW,iBACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,wBACZR,UAAW,YACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,yBACZR,UAAW,YACX9mB,UAAU,EACV+mB,UAAW,WACXE,UAAW,CACT,qBAAAM,CACEx5B,EACA44B,EACAC,EACAiB,GAEI95B,GACF64B,EAAY0E,UAAU,mBACtB3E,EAAYpD,SAAS,kBAAmB,OAExCqD,EAAY4E,UAAU,kBAEzB,KAIP,CACE//B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,+BACZR,UAAW,kBACX9mB,UAAU,EACVpG,QAASw0C,EACTtmB,mBAAoB,iBACpBC,iBAAkB,KAClBhB,UAAW,aAIf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,uBACZR,UAAW,WACXG,UAAW,CAAEO,YAAa,KAC1B8K,UAAW,CACTjL,QAAQ,GAEVF,kBAAmB,CACjBknB,WAAW,EACXnV,KAAM,GAERl5B,UAAU,EACV+mB,UAAW,UAKjB,OACEn0B,6BACEE,EAAAA,IAACo7C,YACCp7C,MAACozC,GAAuB,CAAAre,eAAgBA,MAE1C/0B,EAAAA,IAAC++B,GAAY,CACX/F,WAAYA,EACZ4C,WAAY,CACV,CACEz1B,MAAO,mBACPkvB,SAAUj4B,MAAOL,IACf20C,EAAkB30C,GAClBs+C,GAA4B,IAE9Bh4C,KAAM,MAGVtG,KAAMA,EACNiI,QAASA,EACT02B,SAAU,CACRA,SAAU,QACVkH,MAAO,CACLM,WAAY,eACZJ,WAAY,IACZG,UAAW,cAGf5D,aAAcA,EACdnE,cAAe,KACfiK,UAAWxlC,EAAE,qBACbulC,SAAS,cACTnK,WAAY,CAAEuI,WAAW,EAAMliC,UAAW,mBAC1C6gC,aAAc,CAAEqB,WAAW,EAAMliC,UAAW,2BF5KhDA,UAAW,mBAEb,CACEghB,KAAM,4BACN3e,UGvBuC,KACzC,MAAMtG,iBAAEA,GAAqBvB,KACvB4/C,EAAuBz/C,EAAWA,aACrCvB,GAAeA,EAAMmK,aAAaX,OAAOw3C,qBAAqBz+C,QAE3D4C,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BoB,WAAY,kCACZH,KAAM,kCACNJ,SAAU,kCACVL,QAASA,EACTF,eAAgB,sBAGZu6B,EAAwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,KACZR,UAAW,KACXO,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,GAEVrnB,UAAU,EACV+mB,UAAW,WAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,wCACZR,UAAW,iBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,wCACZR,UAAW,iBACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAAS00C,EACTvmB,iBAAkB,QAClBD,mBAAoB,UAGxB,CACEr8B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,uCACZR,UAAW,gBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,4CACZR,UAAW,qBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,4CACZR,UAAW,qBACX9mB,UAAU,EACV+mB,UAAW,SAIf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,gCACZR,UAAW,UACX9mB,UAAU,EACV+mB,UAAW,cAKjB,OACEj0B,EAAC0B,IAAAq9B,GACC,CAAA/F,WAAYA,EACZj8B,KAAMA,EACNiI,QAASA,EACT02B,SAAU,CACRA,SAAU,QACVkH,MAAO,CACLM,WAAY,wBACZD,UAAW,OACXH,WAAY,MAGhBzD,aAAcA,EACdnE,cAAe,KACfiK,UAAWxlC,EAAE,gCACbulC,SAAS,OACTtJ,WAAY,CACV,CACEv4B,KAAM,OACN8C,MAAO,kBACPkvB,SAAUj4B,MAAOL,UACTI,EAAiB,CACrBG,YAAa,uCACbG,UAAU,EACVF,WAAY,CACV+M,GAAIvN,EAAKuN,IAGXzM,gBAAkBpB,IAChBI,QAAM00C,QAAQ90C,EAASM,YAMjCg+B,WAAY,CAAEuI,WAAW,EAAMliC,UAAW,8BAC1C6gC,aAAc,CACZqB,WAAW,EACXliC,UAAW,mCH/GfA,UAAW,8BAEb,CACEghB,KAAM,uBACN3e,UI5BkC,KACpC,MAAM9D,EAAEA,GAAMC,mBACR67C,EAAuB1/C,EAAWA,aACrCvB,GAAeA,EAAMmK,aAAaX,OAAOy3C,qBAAqB1+C,QAE1DA,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BM,eAAgB,yBAChBc,WAAY,6BACZH,KAAM,6BACNJ,SAAU,6BACVL,QAASA,IAGLq6B,EAAwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,KACZR,UAAW,KACXC,UAAW,SACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,aACZR,UAAW,aACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,YACZR,UAAW,YACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,eACZR,UAAW,eACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iBACZR,UAAW,iBACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAKd,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,kCACZR,UAAW,gBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,mCACZR,UAAW,iBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,kCACZR,UAAW,gBACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAAS20C,EACTzmB,mBAAoB,QACpBC,iBAAkB,QAClBd,UAAW,CACT,qBAAAM,CACEx5B,EACA44B,EACAC,EACAiB,GAEc,aAAV95B,GACF44B,EAAYpD,SAAS,uBAAwB,MAC7CqD,EAAY4E,UAAU,wBACtB5E,EAAY4E,UAAU,oBACtB5E,EAAY4E,UAAU,yBACtB5E,EAAY4E,UAAU,uBACtB5E,EAAY0E,UAAU,yBACH,SAAVv9B,GAA8B,aAAVA,GACf,SAAVA,EACF44B,EAAYpD,SAAS,uBAAwB9hB,IAC1B,aAAV1T,GACT44B,EAAYpD,SAAS,uBAAwB7hB,IAE/CklB,EAAY0E,UAAU,wBACtB1E,EAAY0E,UAAU,oBACtB1E,EAAY0E,UAAU,yBACtB1E,EAAY0E,UAAU,uBACtB1E,EAAY4E,UAAU,0BAEtB7E,EAAYpD,SAAS,uBAAwB,MAC7CqD,EAAY0E,UAAU,wBACtB1E,EAAY0E,UAAU,oBACtB1E,EAAY0E,UAAU,yBACtB1E,EAAY0E,UAAU,uBACtB1E,EAAY0E,UAAU,wBAEzB,KAIP,CACE7/B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,2CACZR,UAAW,uBACXO,QAAQ,EACRrnB,UAAU,EACV+mB,UAAW,OACXE,UAAW,CACT,qBAAAM,CACEx5B,EACA44B,EACAC,EACAiB,GAEa,MAAT95B,GAA0B,IAATA,GACnB44B,EAAYpD,SAAS,mBAAoB,MACzCqD,EAAY0E,UAAU,qBAEtB1E,EAAY4E,UAAU,mBAEzB,KAIP,CACE//B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,qCACZR,UAAW,mBACXO,QAAQ,EACRrnB,UAAU,EACV+mB,UAAW,OACXE,UAAW,CACT,qBAAAM,CACEx5B,EACA44B,EACAC,EACAiB,GAEa,MAAT95B,GAA0B,IAATA,GACnB44B,EAAYpD,SAAS,uBAAwB,MAC7CqD,EAAY0E,UAAU,yBAEtB1E,EAAY4E,UAAU,uBAEzB,KAIP,CACE//B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,2CACZR,UAAW,wBACXO,QAAQ,EACRrnB,UAAU,EACV+mB,UAAW,SAIf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,yCACZR,UAAW,sBACXO,QAAQ,EACRrnB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,0CACZR,UAAW,uBACX9mB,UAAU,EACVqnB,QAAQ,EACRN,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,2BACZR,UAAW,UACX9mB,UAAU,EACV+mB,UAAW,cAKjB,OACEj0B,EAAC0B,IAAAq9B,GACC,CAAA/F,WAAYA,EACZj8B,KAAMA,EACNiI,QAASA,EACT02B,SAAU,CACRA,SAAU,QACVkH,MAAO,CACLM,WAAY,mBACZD,UAAW,IACXH,WAAY,MAGhBzD,aAAcA,EACdnE,cAAe,KACfiK,UAAWxlC,EAAE,2BACbulC,SAAS,IACTnK,WAAY,CAAEuI,WAAW,EAAMliC,UAAW,yBAC1C6gC,aAAc,CAAEqB,WAAW,EAAMliC,UAAW,8BJ5O9CA,UAAW,yBAEb,CACEghB,KAAM,cACN3e,UAAW0vC,GACX/xC,UAAW,eAEb,CACEghB,KAAM,cACN3e,UnBiDyB,KAC3B,MAAM9D,EAAEA,GAAMC,oBACPm1B,EAAgB2c,GAAqBp4C,EAAAA,SAAS,OAEnDkI,OAAQk6C,EACRn6C,eAAgBo6C,GACdt6C,GAAU,CACZqC,YAAa,cACbJ,WAAY,MACZb,MAAO,SAGPjB,OAAQo6C,EACRr6C,eAAgBs6C,GACdx6C,GAAU,CACZqC,YAAa,oBACbJ,WAAY,IACZb,MAAO,SAEF1F,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3BgiD,EAAoBv/C,EAAWA,aAClCvB,GAAeA,EAAMmK,aAAaX,OAAOs3C,kBAAkBv+C,OAExD06C,EAAoB17C,EAAWA,aAClCvB,GAAeA,EAAMmK,aAAaX,OAAOyzC,kBAAkB16C,OAExD++C,EAAmB//C,EAAWA,aACjCvB,GAAeA,EAAMmK,aAAaX,OAAO83C,iBAAiB/+C,OAEvDi8B,EAAax0B,GAAc,CAC/BS,QAAS,wBACTW,WAAY,oBACZH,KAAM,oBACNJ,SAAU,oBACVL,QAASA,IAGLq6B,EAAwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,KACZR,UAAW,KACXC,UAAW,SACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAKd,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,aACZR,UAAW,aACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,YACZR,UAAW,YACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAKd,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,eACZR,UAAW,eACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iBACZR,UAAW,iBACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,qBACZR,UAAW,aACXltB,QAAS,CACP,CAAE7L,MAAO,SACT,CAAEA,MAAO,UACT,CAAEA,MAAO,cAEX+5B,mBAAoB,QACpBC,iBAAkB,QAClB/nB,UAAU,EACV+mB,UAAW,WACXE,UAAW,CACT,qBAAAM,CACEx5B,EACA44B,EACAC,EACAiB,GAEAoiB,GAAgCl8C,EAAO64B,EAAaD,EACrD,KAIP,CACEl7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,qBACZR,UAAW,aACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,qBACZR,UAAW,aACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,yBACZR,UAAW,iBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iBACZR,UAAW,sBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,4BACZR,UAAW,mBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,4BACZR,UAAW,mBACXO,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,GAEVJ,UAAW,CACT,qBAAAM,CACEx5B,EACA44B,EACAC,EACAiB,GAEI95B,GACF64B,EAAY0E,UAAU,mBACtB3E,EAAYpD,SAAS,kBAAmB,OAExCqD,EAAY4E,UAAU,kBAEzB,GAEHxrB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,2BACZR,UAAW,kBACXO,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,GAEVrnB,UAAU,EACV+mB,UAAW,WACXntB,QAASw0C,EACTrmB,iBAAkB,KAClBD,mBAAoB,mBAIxB,CACEr8B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,8BACZR,UAAW,oBACXO,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,GAEVrnB,UAAU,EACV+mB,UAAW,WACXntB,QAASg1C,EACT9mB,mBAAoB,gBACpBC,iBAAkB,OAItB,CACEt8B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,oCACZR,UAAW,yBACXO,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,GAEVrnB,UAAU,EACV+mB,UAAW,WACXntB,QAAS2wC,EACTxiB,iBAAkB,KAClBD,mBAAoB,cAGxB,CACEr8B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,4BACZR,UAAW,mBACXO,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,GAEVrnB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,4BACZR,UAAW,mBACXO,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,GAEVrnB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,SACZR,UAAW,WACXC,UAAW,cAKjB,OACEn0B,EAAAA,2BACEE,MAAC07C,YACC17C,EAAAA,IAAC6zC,GACC,CAAAwB,WAAYtgB,GAAgBsgB,WAC5BC,WAAW,UAGft1C,EAAAA,IAAC47C,EACC,CAAAx7C,SAAAJ,MAACszC,GAAoB,CAAAve,eAAgBA,MAEvC/0B,EAAA0B,IAACq9B,GAAY,CACX/F,WAAYA,EACZj8B,KAAMA,EACNiI,QAASA,EACT02B,SAAU,CACRA,SAAU,QACVkH,MAAO,CACLM,WAAY,SACZD,UAAW,OACXH,WAAY,MAGhBlH,WAAY,CACV,CACEv4B,KAAM,IACN8C,MAAO,oBACP83B,yBAA2B74B,GACI,WAAtBA,EAAOgwC,WAEhB/f,SAAUj4B,MAAOL,EAAMg9B,KACrB2X,EAAkB30C,GAClB8+C,GAA8B,KAGlC,CACEx4C,KAAM,MACN8C,MAAO,cACPkvB,SAAUj4B,MAAOL,EAAMg9B,KACrB2X,EAAkB30C,GAClB4+C,GAA0B,MAIhC1iB,eAAgB,CACdnF,EACAD,EACAzuB,KAEA+xC,GACE/xC,EAAOgwC,WACPthB,EACAD,IAE+B,IAA7BzuB,GAAQqxC,kBACV3iB,EAAY0E,UAAU,oBAG1B6G,aAAcA,EACdnE,cAAe,KACfiK,UAAWxlC,EAAE,iBACbulC,SAAS,cACTnK,WAAY,CACVuI,WAAW,EACXliC,UAAW,cACXq0B,oBAAsBrwB,GAEK,WAAvBA,GAAQgwC,aACqB,IAA7BhwC,GAAQqxC,kBACPrxC,GAAQwxC,gBAKgB,WAAvBxxC,GAAQgwC,YAA4BhwC,GAAQ2xC,iBAIrB,WAAvB3xC,GAAQgwC,YAA4BhwC,GAAQ4xC,iBAKvB,cAAvB5xC,GAAQgwC,YACPhwC,GAAQyxC,oBAMc,UAAvBzxC,GAAQgwC,aACPhwC,GAAQ0xC,0BAETj6C,EAAKA,MAACF,MAAM,qCACL,IARPE,EAAKA,MAACF,MAAM,yCACL,IARPE,EAAKA,MAACF,MAAM,0CACL,IALPE,EAAKA,MAACF,MAAM,0CACL,IALPE,EAAKA,MAACF,MAAM,mCACL,IA2BbslC,aAAc,CAAEqB,WAAW,EAAMliC,UAAW,uBmBlchDA,UAAW,eAEb,CACEghB,KAAM,oBACN3e,UKvC+B,KACjC,MAAMg0C,EAAoB17C,EAAWA,aAClCvB,GAAeA,EAAMmK,aAAaX,OAAOyzC,kBAAkB16C,QAEvDg4B,EAAgB2c,GAAqBp4C,EAAAA,SAAc,OAExDkI,OAAQu6C,EACRx6C,eAAgBy6C,GACd36C,GAAU,CAAEqC,YAAa,kBAAmBJ,WAAY,WACpD9B,OAAQy6C,EAAkB16C,eAAgB26C,GAChD76C,GAAU,CACRqC,YAAa,cACbJ,WAAY,CAAEwmC,OAAQ,MAAOC,SAAU,yBAGzCvoC,OAAQ26C,EACR56C,eAAgB66C,GACd/6C,GAAU,CACZqC,YAAa,kBACbJ,WAAY,YACZb,MAAO,OAEH9C,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BM,eAAgB,sBAChBc,WAAY,0BACZH,KAAM,0BACNJ,SAAU,0BACVL,QAASA,IAGLq6B,EAAwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,KACZR,UAAW,KACXC,UAAW,SACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,aACZR,UAAW,aACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,YACZR,UAAW,YACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,eACZR,UAAW,eACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iBACZR,UAAW,iBACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,mCACZR,UAAW,mBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,mCACZR,UAAW,mBACX9mB,UAAU,EACV+mB,UAAW,SAIf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,wBACZR,UAAW,UACX9mB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACN0E,MAAO,CACL8I,MAAO,UACP9C,KAAM,QACN5K,MAAO,CAAEqL,QAAS,EAAGkhB,OAAQ,qBAAsBra,OAAQ,GAC3DirB,SAAU,CACR,CACEj9B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,6BACZR,UAAW,cACX9mB,UAAU,EACV+mB,UAAW,OACXuL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,sCACZR,UAAW,qBACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAAS2wC,EACTziB,mBAAoB,YACpBC,iBAAkB,KAClBuK,UAAW,CACTjL,QAAQ,QAQpB,CACE57B,KAAM,QACN0E,MAAO,CACL8I,MAAO,aACP9C,KAAM,QACN5K,MAAO,CAAEqL,QAAS,EAAGkhB,OAAQ,qBAAsBra,OAAQ,GAC3DirB,SAAU,CACR,CACEj9B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WACE,uEACFR,UAAW,oBACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAAS2wC,EACTziB,mBAAoB,YACpBC,iBAAkB,KAClBuK,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WACE,uEACFR,UAAW,oBACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAAS2wC,EACTziB,mBAAoB,YACpBC,iBAAkB,KAClBuK,UAAW,CACTjL,QAAQ,QAOpB,CACE57B,KAAM,QACN0E,MAAO,CACL8I,MAAO,2BACP9C,KAAM,UACN5K,MAAO,CAAEqL,QAAS,EAAGkhB,OAAQ,qBAAsBra,OAAQ,GAC3DirB,SAAU,CACR,CACEj9B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,2BACZR,UAAW,aACX9mB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,4BACZR,UAAW,aACXltB,QAAS,CACP,CAAE7L,MAAO,QACT,CAAEA,MAAO,SACT,CAAEA,MAAO,OACT,CAAEA,MAAO,QACT,CAAEA,MAAO,UACT,CAAEA,MAAO,WAEX+5B,mBAAoB,QACpBC,iBAAkB,QAClB/nB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,6BACZR,UAAW,cACX9mB,UAAU,EACV+mB,UAAW,WAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iCACZR,UAAW,iBACX9mB,UAAU,EACV+mB,UAAW,iBAQvB,OACEn0B,EAAAiK,KAAA3D,EAAAuJ,SAAA,CAAAvP,SAAA,CACEJ,EAAC0B,IAAAq6C,YACC/7C,EAAAA,IAACq3C,GACC,CAAAtiB,eAAgBA,EAChBsnB,SAAU,KACRL,GAA6B,QAInCh8C,EAAC0B,IAAAu6C,YACCj8C,EAAC0B,IAAA81C,GACC,CAAAziB,eAAgBA,EAChBsnB,SAAU,KACRL,GAA6B,QAInCh8C,EAAC0B,IAAAy6C,YACCn8C,EAAC0B,IAAAg2C,GACC,CAAA3iB,eAAgBA,EAChBsnB,SAAU,KACRD,GAA6B,QAInCp8C,MAAC++B,GAAY,CACX/F,WAAYA,EACZj8B,KAAMA,EACNiI,QAASA,EACT02B,SAAU,CACRA,SAAU,QACVkH,MAAO,CACLE,WAAY,IACZI,WAAY,gBACZD,UAAW,aAGf5D,aAAcA,EACdnE,cAAe,KACfiK,UAAWxlC,EAAE,wBACbulC,SAAS,WACTtJ,WAAY,CACV,CACEv4B,KAAM,QACN8C,MAAO,aACPkvB,SAAUj4B,MAAOL,IACf20C,EAAkB30C,GAClBi/C,GAA6B,KAGjC,CACE34C,KAAM,CAAEymC,OAAQ,MAAOC,SAAU,sBACjC5jC,MAAO,YACPkvB,SAAUj4B,MAAOL,IACf20C,EAAkB30C,GAClBm/C,GAAyB,KAG7B,CACE74C,KAAM,YACN8C,MAAO,mBACPkvB,SAAUj4B,MAAOL,IACf20C,EAAkB30C,GAClBq/C,GAA6B,MAInCrhB,WAAY,CACVuI,WAAW,EACXliC,UAAW,qBACXq0B,oBAAsBrwB,IACO,IAAvBA,GAAQk3C,YAAwBl3C,GAAQm3C,YAMjB,IAAvBn3C,GAAQk3C,YAAwBl3C,GAAQo3C,eAMjB,IAAvBp3C,GAAQk3C,aAAwBl3C,GAAQq3C,kBAC1C5/C,EAAKA,MAACF,MACJ,4EAEK,IATPE,EAAKA,MAACF,MACJ,sEAEK,IATPE,EAAKA,MAACF,MACJ,qEAEK,IAkBbslC,aAAc,CAAEqB,WAAW,EAAMliC,UAAW,8BLzUhDA,UAAW,qBAEb,CACEghB,KAAM,wBACN3e,Uf6DmC,KACrC,MAAM9D,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BS,QAAS,kCACTW,WAAY,8BACZH,KAAM,8BACNJ,SAAU,8BACVL,QAASA,IAGLq6B,EAAwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,KACZR,UAAW,KACXC,UAAW,SACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,aACZR,UAAW,aACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,YACZR,UAAW,YACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,eACZR,UAAW,eACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iBACZR,UAAW,iBACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,OACZR,UAAW,aACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,SACZR,UAAW,aACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAAS,CAAC,CAAE7L,MAAO,SAAW,CAAEA,MAAO,UACvC+5B,mBAAoB,QACpBC,iBAAkB,QAClBd,UAAW,CACT,qBAAAM,CACEx5B,EACA44B,EACAC,EACAiB,GAEA4jB,GAAgC19C,EAAO64B,EAAaD,EACrD,KAIP,CACEl7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,WACZR,UAAW,WACX9mB,UAAU,EACV+mB,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,OACZR,UAAW,WACX9mB,UAAU,EACV+mB,UAAW,SACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,WACZR,UAAW,eACX9mB,UAAU,EACV+mB,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,WACZR,UAAW,eACX9mB,UAAU,EACV+mB,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAKd,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,kCACZR,UAAW,+BACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,WACZR,UAAW,eACX9mB,UAAU,EACV+mB,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAKd,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,mBACZR,UAAW,wBACX9mB,UAAU,EACV+mB,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,mBACZR,UAAW,wBACX9mB,UAAU,EACV+mB,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,aACZR,UAAW,mBACX9mB,UAAU,EACV+mB,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,4BACZR,UAAW,wBACX9mB,UAAU,EACV+mB,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,yBACZR,UAAW,4BACX9mB,UAAU,EACV+mB,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,4BACZR,UAAW,wBACX9mB,UAAU,EACV+mB,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,wBACZR,UAAW,qBACX9mB,UAAU,EACV+mB,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,2BACZR,UAAW,uBACX9mB,UAAU,EACV+mB,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,UACZR,UAAW,YACX9mB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,SACZR,UAAW,WACX9mB,UAAU,EACV+mB,UAAW,cAKjB,OACEj0B,EAAC0B,IAAAq9B,GACC,CAAA/F,WAAYA,EACZj8B,KAAMA,EACNiI,QAASA,EACT02B,SAAU,CACRA,SAAU,QACVkH,MAAO,CACLK,UAAW,CAAE8G,SAAU,cAAeD,OAAQ,OAC9C5G,WAAY,4BACZJ,WAAY,MAGhBzD,aAAcA,EACdnE,cAAe,KACfiK,UAAWxlC,EAAE,6BACbulC,SAAU,CAAE6E,SAAU,cAAeD,OAAQ,OAC7C/O,WAAY,CAAEuI,WAAW,EAAMliC,UAAW,2BAC1C6gC,aAAc,CAAEqB,WAAW,EAAMliC,UAAW,6BAC5C63B,eAAgB,CACdnF,EACAD,EACAzuB,KAEAuzC,GACEvzC,EAAOs3C,WACP5oB,EACAD,Oe7ZNzyB,UAAW,qBAEb,CACEghB,KAAM,wBACN3e,UMpDmC,KACrC,MAAOsxB,EAAgB2c,GAAqBp4C,EAAAA,SAAc,OAExDkI,OAAQm7C,EACRp7C,eAAgBq7C,GACdv7C,GAAU,CACZqC,YAAa,kBACbJ,WAAY,SAGZ9B,OAAQq7C,EACRt7C,eAAgBu7C,GACdz7C,GAAU,CACZqC,YAAa,kBACbJ,WAAY,UAERuuC,EAAsB91C,EAAWA,aACpCvB,GAAeA,EAAMmK,aAAaX,OAAO6tC,oBAAoB90C,OAE1D46C,EAAgB57C,EAAWA,aAC9BvB,GAAeA,EAAMmK,aAAaX,OAAO2zC,cAAc56C,OAEpDu+C,EAAoBv/C,EAAWA,aAClCvB,GAAeA,EAAMmK,aAAaX,OAAOs3C,kBAAkBv+C,QAExD4C,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BS,QAAS,kCACTW,WAAY,8BACZH,KAAM,8BACNJ,SAAU,8BACVL,QAASA,IAGLq6B,EAAwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,KACZR,UAAW,KACXC,UAAW,SACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,aACZR,UAAW,aACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,YACZR,UAAW,YACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,eACZR,UAAW,eACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iBACZR,UAAW,iBACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,6BACZR,UAAW,UACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAAS+qC,EACT7c,mBAAoB,mBACpBC,iBAAkB,OAGtB,CACEt8B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,kCACZR,UAAW,eACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,oCACZR,UAAW,iBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,oCACZR,UAAW,iBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,qFACZR,UAAW,mBACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAAS6wC,EACT3iB,mBAAoB,aACpBC,iBAAkB,OAItB,CACEt8B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,0CACZR,UAAW,sBACX9mB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACN0E,MAAO,CACLgG,KAAM,OACN5K,MAAO,CAAEusB,OAAQ,mBAAoBlhB,QAAS,EAAG0jB,aAAc,GAC/DrhB,MAAO,2BACPyvB,SAAU,CACR,CACEj9B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,0CACZR,UAAW,sBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,2CACZR,UAAW,uBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,mCACZR,UAAW,eACX9mB,UAAU,EACV+mB,UAAW,YAOrB,CACEt7B,KAAM,QACN0E,MAAO,CACLgG,KAAM,WACN5K,MAAO,CAAEusB,OAAQ,mBAAoBlhB,QAAS,EAAG0jB,aAAc,GAC/DrhB,MAAO,4BACPyvB,SAAU,CACR,CACEj9B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,mCACZR,UAAW,eACX9mB,UAAU,EACV+mB,UAAW,WACXE,UAAW,CACT,qBAAAM,CACEx5B,EACA44B,EACAC,EACAiB,GAEI95B,GACF64B,EAAY0E,UAAU,iBACtB3E,EAAYpD,SAAS,gBAAiB,OAEtCqD,EAAY4E,UAAU,gBAEzB,KAIP,CACE//B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,oCACZR,UAAW,gBACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAASw0C,EACTtmB,mBAAoB,iBACpBC,iBAAkB,OAGtB,CACEt8B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,2CACZR,UAAW,uBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,4CACZR,UAAW,wBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,sCACZR,UAAW,kBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,0CACZR,UAAW,sBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,0CACZR,UAAW,sBACX9mB,UAAU,EACV+mB,UAAW,aAQvB,OACEn0B,EAAAA,KACEsG,EAAAA,SAAA,CAAAhG,SAAA,CAAAJ,EAAAA,IAAC28C,EACC,CAAAv8C,SAAAJ,EAAAA,IAAC44C,GAA2B,CAAA7jB,eAAgBA,MAE9C/0B,EAAAA,IAAC68C,EACC,CAAAz8C,SAAAJ,EAAAA,IAACk5C,GAA2B,CAAAnkB,eAAgBA,MAE9C/0B,EAAAA,IAAC++B,GAAY,CACX/F,WAAYA,EACZC,eAAgB,CAACnF,EAAaD,EAAazuB,MACb,IAAxBA,EAAO23C,aACTjpB,EAAY0E,UAAU,iBAEtB1E,EAAY4E,UAAU,kBAG1B37B,KAAMA,EACNiI,QAASA,EACT42B,WAAY,CACV,CACEv4B,KAAM,MACN8C,MAAO,kBACPkvB,SAAUj4B,MAAOL,IACf20C,EAAkB30C,GAClB6/C,GAA6B,KAGjC,CACEv5C,KAAM,QACN8C,MAAO,mBACPkvB,SAAUj4B,MAAOL,IACf20C,EAAkB30C,GAClB+/C,GAA6B,MAInCphB,SAAU,CACRA,SAAU,QACVkH,MAAO,CACLK,UAAW,gBACXC,WAAYvjC,EAAE,gCAGlB0/B,aAAcA,EACdnE,cAAe,KACfiK,UAAWxlC,EAAE,4BACbulC,SAAS,gBACTnK,WAAY,CAAEuI,WAAW,EAAMliC,UAAW,0BAC1C6gC,aAAc,CACZqB,WAAW,EACXliC,UAAW,kCNnTjBA,UAAW,0BAEb,CACEghB,KAAM,cACN3e,UXgEyB,KAC3B,MAAM9D,EAAEA,GAAMC,mBACR63C,EAAoB17C,EAAWA,aAClCvB,GAAeA,EAAMmK,aAAaX,OAAOyzC,kBAAkB16C,OAExDigD,EAAoBjhD,EAAWA,aAClCvB,GAAeA,EAAMmK,aAAaX,OAAOg5C,kBAAkBjgD,QAEvDA,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BM,eAAgB,gBAChBc,WAAY,oBACZH,KAAM,oBACNJ,SAAU,oBACVL,QAASA,IAGLq6B,EAAwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,KACZR,UAAW,KACXC,UAAW,SACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,aACZR,UAAW,aACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,YACZR,UAAW,YACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,eACZR,UAAW,eACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iBACZR,UAAW,iBACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,qBACZR,UAAW,aACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAASk2C,EACThoB,mBAAoB,OACpBC,iBAAkB,OAClBd,UAAW,CACT,qBAAAM,CACEx5B,EACA44B,EACAC,EACAiB,GAEA6kB,GAAgC3+C,EAAO64B,EAAaD,EACrD,KAIP,CACEl7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,QACZR,UAAW,cACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAAS2wC,EACTziB,mBAAoB,YACpBC,iBAAkB,OAGtB,CACEt8B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,qBACZR,UAAW,aACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,cACZR,UAAW,OACX9mB,UAAU,EACV+mB,UAAW,SAIf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,eACZR,UAAW,QACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,4BACZR,UAAW,oBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,gBACZR,UAAW,SACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,eACZR,UAAW,QACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QAAS,CACP,CAAE7L,MAAO,GACT,CAAEA,MAAO,GACT,CAAEA,MAAO,GACT,CAAEA,MAAO,GACT,CAAEA,MAAO,GACT,CAAEA,MAAO,GACT,CAAEA,MAAO,GACT,CAAEA,MAAO,GACT,CAAEA,MAAO,GACT,CAAEA,MAAO,IACT,CAAEA,MAAO,IACT,CAAEA,MAAO,KAEX+5B,mBAAoB,QACpBC,iBAAkB,UAItB,CACEt8B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iBACZR,UAAW,UACX9mB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACN0E,MAAO,CACL5E,MAAO,CAAEqL,QAAS,EAAGkhB,OAAQ,kBAAmBviB,MAAO,QACvD0D,MAAO,aACPyvB,SAAU,CACR,CACEj9B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,+BACZR,UAAW,sBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,+BACZR,UAAW,sBACX9mB,UAAU,EACV+mB,UAAW,SAIf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,qBACZR,UAAW,aACX9mB,UAAU,EACV+mB,UAAW,SAIf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,6BACZR,UAAW,oBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,6BACZR,UAAW,oBACX9mB,UAAU,EACV+mB,UAAW,aAQvB,OACEj0B,EAAC0B,IAAAq9B,GACC,CAAA/F,WAAYA,EACZj8B,KAAMA,EACNiI,QAASA,EACT02B,SAAU,CACRA,SAAU,QACVkH,MAAO,CAAEK,UAAW,YAAaC,WAAY,WAE/C7D,aAAcA,EACdnE,cAAe,KACfiK,UAAWxlC,EAAE,iBACbulC,SAAS,YACTnK,WAAY,CAAEuI,WAAW,EAAMliC,UAAW,eAC1C6gC,aAAc,CAAEqB,WAAW,EAAMliC,UAAW,iBAC5C63B,eAAgB,CACdnF,EACAD,EACAzuB,KAEAw0C,GACEx0C,EAAO6pC,WACPnb,EACAD,OWpWNzyB,UAAW,eAEb,CACEghB,KAAM,iBACN3e,UO/D4B,KAC9B,MAAM9D,EAAEA,GAAMC,oBACPm1B,EAAgB2c,GAAqBp4C,EAAAA,SAAc,OAClDkI,OAAQy7C,EAAgB17C,eAAgB27C,GAC9C77C,GAAU,CACRqC,YAAa,oBACbJ,WAAY,eAETvG,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3BmnC,EAAWC,EAAAA,cACX1H,EAAax0B,GAAc,CAC/BS,QAAS,2BACTW,WAAY,uBACZH,KAAM,uBACNJ,SAAU,uBACVL,QAASA,IA+GX,OACElF,EAAAA,2BACEE,EAAAA,IAACi9C,YACCj9C,EAAC0B,IAAAm4C,IAAoB9kB,eAAgBA,MAEvC/0B,EAAC0B,IAAAq9B,IACC/F,WAAYA,EACZj8B,KAAMA,EACNiI,QAASA,EACT02B,SAAU,CAAEA,SAAU,OACtB2D,aAtHwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,KACZR,UAAW,KACXC,UAAW,SACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,aACZR,UAAW,aACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,YACZR,UAAW,YACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,eACZR,UAAW,eACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iBACZR,UAAW,iBACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,2BACZR,UAAW,gBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,2BACZR,UAAW,gBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,4BACZR,UAAW,iBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,oBACZR,UAAW,UACX9mB,UAAU,EACV+mB,UAAW,cAgBXiH,cAAe,KACfU,WAAY,CACV,CACEz1B,MAAO,UACP9C,KAAM,YACNgyB,SAAUj4B,MAAOL,IACf20C,EAAkB30C,GAClBmgD,GAAsB,KAG1B,CACE/2C,MAAO,OACP9C,KAAM,MACNgyB,SAAUj4B,MAAOL,IACf0jC,EAAS,cAAgB1jC,EAAK2yC,kBAIpCvK,UAAWxlC,EAAE,oBACbulC,SAAS,uBACTnK,WAAY,CAAEuI,WAAW,EAAMliC,UAAW,kBAC1C6gC,aAAc,CAAEqB,WAAW,EAAMliC,UAAW,0BP9FhDA,UAAW,kBAEb,CACEghB,KAAM,2BACN3e,UQzEiC,KACnC,MAAMisC,cAAEA,GAAkBtX,cAC1B,OAAOp4B,MAACuvC,GAAe,CAACG,cAAeA,MRyEvC,CACEttB,KAAM,+BACN3e,US1E0C,KAC5C,MAAM9D,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BS,QAAS,yCACTW,WAAY,qCACZH,KAAM,qCACNJ,SAAU,qCACVL,QAASA,IAqLX,OACEhF,MAAC++B,GAAY,CACX/F,WAAYA,EACZj8B,KAAMA,EACNiI,QAASA,EACT02B,SAAU,CAAEA,SAAU,OACtB2D,aAxL0C,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,KACZR,UAAW,KACXC,UAAW,SACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,aACZR,UAAW,aACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,YACZR,UAAW,YACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,eACZR,UAAW,eACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iBACZR,UAAW,iBACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,8CACZR,UAAW,gBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,0CACZR,UAAW,cACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,8CACZR,UAAW,iBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,+CACZR,UAAW,kBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,uCACZR,UAAW,WACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,0CACZR,UAAW,cACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,6CACZR,UAAW,iBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,0CACZR,UAAW,cACX9mB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,wCACZR,UAAW,WACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,kDACZR,UAAW,qBACX9mB,UAAU,EACV+mB,UAAW,WAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,+CACZR,UAAW,kBACX9mB,UAAU,EACV+mB,UAAW,cAYbiH,cAAe,KACfiK,UAAWxlC,EAAE,qCACbulC,SAAS,cACTnK,WAAY,CACVuI,WAAW,EACXliC,UAAW,mCAEb6gC,aAAc,CACZqB,WAAW,EACXliC,UAAW,yCTjIjB,CACEghB,KAAM,6BACN3e,UU7EwC,KAC1C,MAAM9D,EAAEA,GAAMC,oBACP7C,EAAMiI,GAAW1L,EAAAA,SAAS,IAC3B0/B,EAAax0B,GAAc,CAC/BS,QAAS,uCACTW,WAAY,mCACZH,KAAM,mCACNJ,SAAU,mCACVL,QAASA,IAMLq6B,EAAwC,CAC5C,CACE1mC,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,KACZR,UAAW,KACXC,UAAW,SACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,aACZR,UAAW,aACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,YACZR,UAAW,YACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,eACZR,UAAW,eACXC,UAAW,OACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,iBACZR,UAAW,iBACXC,UAAW,WACXM,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,KAId,CACE57B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,2CACZR,UAAW,iBACX9mB,UAAU,EACV+mB,UAAW,WACXntB,QA9EsB/K,EAAWA,aACpCvB,GAAeA,EAAMmK,aAAaX,OAAO+0C,oBAAoBh8C,OA8E1Di4B,mBAAoB,mBACpBC,iBAAkB,OAGtB,CACEt8B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,yDACZR,UAAW,6BACX9mB,UAAU,EACVqnB,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,GAEVN,UAAW,WAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,2CACZR,UAAW,iBACX9mB,UAAU,EACVqnB,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,GAEVN,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,8CACZR,UAAW,oBACX9mB,UAAU,EACVqnB,QAAQ,EACRN,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,4CACZR,UAAW,mBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,sCACZR,UAAW,aACX9mB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,4CACZR,UAAW,mBACX9mB,UAAU,EACV+mB,UAAW,aAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,+CACZR,UAAW,sBACX9mB,UAAU,EACV+mB,UAAW,SAGf,CACEt7B,KAAM,QACNkzB,KAAM,QACNxuB,MAAO,CACLm3B,WAAY,0CACZR,UAAW,iBACXO,QAAQ,EACRiL,UAAW,CACTjL,QAAQ,GAEVrnB,UAAU,EACV+mB,UAAW,UAKjB,OACEj0B,MAAC++B,GAAY,CACX/F,WAAYA,EACZwK,sBAAsB,EACtBzmC,KAAMA,EACNiI,QAASA,EACT02B,SAAU,CAAEA,SAAU,QACtB2D,aAAcA,EACdnE,cAAe,KACfiK,UAAWxlC,EAAE,kCACbulC,SAAS,cACTnK,WAAY,CACVuI,WAAW,EACXliC,UAAW,gCAEb6gC,aAAc,CACZqB,WAAW,EACXliC,UAAW,yCC5Mb+7C,GAA6C9/C,IACjD,MAAM4D,iBAAEA,GAAqBH,KAC7B,OAAIzD,GAAO+D,YAAcH,EAAiB5D,EAAM+D,WAE5CpB,EAAA0B,IAACQ,MAAG,CACFN,GAAI,CACFgJ,KAAM,EACN9H,QAAS,OACTC,cAAe,SACfC,WAAY,SACZC,eAAgB,SAChBvC,MAAO,OAGTN,SAAAN,EAAAiK,KAAA,KAAA,CAAA3J,SAAA,CACEJ,MAACoD,kBAAe,CACd3K,MAAO,CAAE8K,YAAa,GAAIkkB,WAAY,IACtCpkB,KAAK,WACL,iDAMHrD,EAAAA,IAAGoG,EAAAA,SAAA,CAAAhG,SAAA/C,EAAM+C,YCpBZg9C,GAAwB,KAC5B,MAAM3vC,EAAiB1R,EAAWA,aAAEvB,GAAeA,EAAMkT,YACnD1R,EAAUD,EAAAA,aAAavB,GAAeA,EAAMwB,QAAQf,QACpDoiD,EAAiBthD,EAAAA,aACpBvB,GAAeA,EAAMwB,QAAQf,MAAMoiD,iBAEhC7hD,EAAWC,EAAAA,eACXC,KAAEA,EAAIC,KAAEA,GAASJ,KACjBoJ,EAAe5I,EAAWA,aAAEvB,GAAeA,EAAMmK,gBAChD24C,EAAkBC,GAAqBjkD,EAAAA,UAAkB,IAC1D2H,iBAAEA,GAAqBH,MACvB3D,iBAAEA,GAAqBvB,KAiC7B,OALAnC,EAAAA,WAAU,KACJkL,GAAcV,WA5BK7G,WACvB1B,EAAK,2BACL,MAAMsI,EAASW,EAAaX,OACtBC,EAAYU,EAAaV,UAC/B,IAAK,IAAIK,KAAYL,OAEgBzG,IAAhCwG,EAAOM,IAAWlD,WACe,OAAhC4C,EAAOM,IAAWlD,YAClBH,EAAiB+C,EAAOM,IAAWlD,YACZ,IAAzB4C,EAAOM,IAAWS,MACY,IAA9Bf,EAAOM,GAAUigC,gBAEXpnC,EAAiB,CACrBG,YAAa0G,EAAOM,GAAUS,IAC9BtH,UAAU,EACVI,gBAAkBpB,IAChBjB,EAAS6I,GAAa,CAAEC,WAAUvH,KAAMN,EAASM,SAEnDe,gBAAiB,KACftC,EAAS6I,GAAa,CAAEC,WAAUvH,KAAM,SAKhDpB,KAKE6hD,KAED,CAAC74C,EAAaV,YAEfjE,EAAC0B,IAAA+7C,EAAaA,cACZ,CAAAxiD,MAAuC,QAAhCwS,EAAevT,aAAyBu0C,GAAWL,YAG1DpuC,EAAC0B,IAAAQ,EAAGA,IACF,CAAAN,GAAI,CACFkB,QAAS,OACTC,cAAe,SAEfE,eAAgB,aAChB2H,KAAM,EACNhI,SAAU,SACVkB,QAAS,GACV1D,SAEDN,EAAAA,KAAC49C,EAAAA,OACE,CAAAt9C,SAAA,CAAApE,EAAQ0xC,2BACLsM,GAAclwC,KAAI,CAAC6zC,EAAoB7wC,IAEnC9M,EAAA0B,IAACk8C,QAAK,CAEJx7B,KAAMu7B,EAAMv7B,KACZ/H,QACEra,EAAAA,IAACm9C,GAAa,CAAA/7C,UAAWu8C,EAAMv8C,UAC7BhB,SAAAJ,EAAA0B,IAACi8C,EAAMl6C,UAAY,CAAA,MAJlB,MAAQqJ,KAUnB,KACHuwC,EAAevzC,KAAI,CAAC6zC,EAAoB7wC,IAErC9M,EAAA0B,IAACk8C,QAAK,CAEJx7B,KAAMu7B,EAAMv7B,KACZ/H,QACEra,EAAAA,IAACm9C,GAAa,CAAA/7C,UAAWu8C,EAAMv8C,UAC7BhB,SAAAJ,EAAA0B,IAACi8C,EAAMl6C,UAAY,CAAA,MAJlB,KAAOqJ,aCxEtB+wC,GAAS3uB,EAAAA,OAAO,MAAPA,EAAc,EAAGptB,YAAa,CAC3CW,MAAO,GACPD,OAAQ,EACRmI,OAAQ,GACRyb,gBAAiB2kB,GAAIA,KAAC,KACtBvqB,aAAc,EAEdpe,IAAK,KAEFN,EAAM0pB,YAAY,OAAQ,CAC3BpF,gBAAiB2kB,GAAIA,KAAC,WAIF,SAAA+S,GAAazgD,GACnC,MAAM9D,OAAEA,GAAW8D,EACbgsC,EAAettC,EAAWA,aAAEvB,GAAeA,EAAM8uC,UACjDttC,EAAUD,EAAAA,aAAavB,GAAeA,EAAMwB,QAAQf,QACpDO,EAAWC,EAAAA,cACXsiD,EAAgB9yC,IACpBzP,EAASgtC,GAAgBv9B,KAGrBR,OACOjN,IAAXjE,EAAuB,IAAMA,IAASjB,SAASgI,UAAO9C,EAExD,OACEwC,MAACg+C,GAAe,CACdvzC,UAAWA,EACXyjC,OAAO,SACPzuC,KAAM4pC,EAAanuC,SACnB8G,QAAS,KACP+7C,GAAa,IAEfE,OAAQ,KACNF,GAAa,IAEfG,eA/CiB,GAgDjBC,oBAAoB,EACpBC,WAAY,CACVC,aAAa,GACdj+C,SAEDN,EAAAA,KAACoC,EAAGA,IACF,CAAAN,GAAI,CACFkB,QAAS,OACTC,cAAe,SACfC,WAAY,SACZR,OAAQ,OACRI,SAAU,UAGZxC,SAAA,CAAAJ,EAAAA,IAAC69C,GAAS,CAAA,GACV79C,MAACkC,MAAG,CACFN,GAAI,CACF+B,SAAU,EACVb,QAAS,OACTG,eAAgB,SAChBR,MAAO,MACPurC,UAAW,QAGb5tC,SAAAJ,MAACutC,GAAiB,CAAA,KAEpBztC,EAACiK,KAAA7H,MACC,CAAAN,GAAI,CACFkB,QAAS,OACTE,WAAY,SACZC,eAAgB,eAChBskB,UAAW,EACX9kB,MAAO,QACRrC,SAAA,CAEDJ,MAACwD,EAAUA,WAAA,CAAC5B,GAAI,CAAEkK,SAAU,IAAMpL,MAAM,eAAcN,SACnDpE,EAAQ2tC,UAEX7pC,OAAC0D,EAAAA,WAAW,CAAA5B,GAAI,CAAEkK,SAAU,IAAMpL,MAAM,eACnCN,SAAA,CAAA,KAAApE,EAAQmyC,qBAMvB,CClGA,MAAMmQ,GAAwB,KAC5B,MAAM3+C,EAAEA,GAAMC,mBACR2+C,EAAcxiD,EAAAA,aAAavB,GAAeA,EAAM+jD,YAAYtjD,QAC5DwS,EAAiB1R,EAAWA,aAAEvB,GAAeA,EAAMkT,YAEzD,OACE5N,EAAAiK,KAACy0C,WAAQ,CACP56B,IAAKnW,EAAevT,aACpB0H,GAAI,CAAElB,MAAO,OAAQmB,OAASC,GAAUA,EAAMD,OAAOE,OAAS,GAC9DtC,KAAM8+C,EAAYrjD,SAAQkF,SAAA,CAE1BJ,EAAC0B,IAAAi4C,oBAAiBj5C,MAAM,YACxBV,EAAK0B,IAAA,MAAA,CAAAjJ,MAAO,CAAE8K,YAAa,GAAIkkB,WAAY,IAAIrnB,SAC5Cm+C,GAAapjD,SAAWwE,EAAE,iCCG7B8+C,GAAkB,KACtB,MAAMC,EAAU3iD,EAAAA,aAAavB,GAAeA,EAAMwB,QAAQf,SACnDktC,EAAUwW,GAAerlD,EAAAA,SAAS,KAClCslD,EAAUC,GAAevlD,EAAAA,SAAS,KAClCwlD,EAAkBC,GAAuBzlD,EAAAA,UAAS,GACnD0lD,EAAmBjjD,EAAAA,aAAavB,GAAeA,EAAMuG,YAAY9F,QACjEO,EAAWC,EAAAA,cACXwjD,EAAc7hD,UAClB,GAAgB,MAAZ+qC,GAAgC,IAAZA,EAEtB,YADAtrC,EAAKA,MAACF,MAAM,mCAGd,GAAgB,MAAZiiD,GAAgC,IAAZA,EAEtB,YADA/hD,EAAKA,MAACF,MAAM,mCAGdoiD,GAAoB,GACpB,IAAItiD,EAAgB,KACpB,IAWE,GAVAA,QAAiBP,EAAM8B,KACrB,GAAG0gD,EAAQ5iD,4BACX,CACEqsC,WACAyW,YAEF,CACEtiD,iBAAiB,IAGA,MAAjBG,EAASM,MAAkC,KAAlBN,EAASM,KAAa,CACjDgiD,GAAoB,GACpB,MAAMh+C,EAAc,IACftE,EAASM,KACZuB,iBAAiB,GAEnB9C,EAASkD,GAAmBF,iBAAiBuC,KAE/C,MAAOsM,GACP0xC,GAAoB,GACpBliD,EAAAA,MAAMF,MACJ0Q,GAAG5Q,UAAUM,MACX,wDAIFmiD,EAAcnjD,EAAAA,aAAavB,GAAeA,EAAMuG,YAAY9F,QAC5DkkD,EAAahyB,EAAAA,YAAY,CAC7BP,WAAY,CACVwyB,eAAgB,CACdC,eAAgB,+GAKZX,EAAQY,UAAUlU,MAAMmU,cACxBxwC,qKAYR6c,QAAS,CACPC,KAAM,OACNthB,QAAS,CACP8gC,KACEqT,EAAQY,UAAUlU,MAAMmU,cAAgBxwC,IAE5CywC,UAAW,CACTnU,KACEqT,EAAQY,UAAUlU,MAAMqU,gBACxBzwC,OAgCR,OAHAvV,EAAAA,WAAU,KAzBe2D,WACvB,GAAIshD,GAAS5iD,YACwB,MAA/BojD,EAAY5gD,gBACd,IACE,IAAI7B,QAAiBP,EAAMyB,IACzB,GAAG+gD,EAAQ5iD,+BACX,CACEQ,iBAAiB,IAGrB,GAAgB,MAAZG,GAAqC,MAAjBA,EAASM,KAAc,CAC7C,MAAMgE,EAAc,IACftE,EAASM,KACZuB,iBAAiB,GAEnB9C,EAASkD,GAAmBF,iBAAiBuC,SAE7CvF,EAASkD,GAAmBD,sBAE9B,MAAO9B,GACPnB,EAASkD,GAAmBD,wBAMlCihD,KACC,CAAChB,IAEF1+C,EAAA0B,IAACi+C,gBAAa,CAAC79C,MAAOq9C,EAAU/+C,SAC9BJ,EAAC0B,IAAAmC,QACC,CAAAjC,GAAI,CACFkB,QAAS,OACTN,OAAQ,QACRC,MAAO,OACP+d,aAAc,EACdxd,WAAY,SACZC,eAAgB,UACjB7C,SAEoC,GAApC4+C,EAAiB1gD,gBAChBwB,OAACoC,EAAAA,IAAG,CACFN,GAAI,CACFkB,QAAS,OACTC,cAAe,SACfC,WAAY,SACZC,eAAgB,UAGlB7C,SAAA,CAAAJ,EAAA0B,IAAA,MAAA,CAAK8nC,IAAKkV,GAASjV,QAAShnC,MAAO,IAAKD,OAAQ,MAChDxC,EAAAA,IAACwD,EAAAA,WAAU,CAAC5B,GAAI,CAAEwP,EAAG,GAAK3Q,QAAQ,KAAKC,MAAM,yBAC1Cg+C,GAAS/U,UAEZ7pC,OAAC0D,EAAUA,WAAA,CACT5B,GAAI,CACF8kB,aAAc,EACdjkB,MAAO,OACPqnB,UAAW,QACXhe,SAAU,IAEZrL,QAAQ,UACRC,MAAM,gBAEHN,SAAA,CAAA,KAAAs+C,EAAQvQ,cAEbnuC,EAAA0B,IAACqE,EAASA,UACR,CAAAI,MAAM,WACNvE,GAAI,CAAEa,MAAO,IAAK2O,EAAG,GACrBnW,MAAOktC,EACP5+B,SAAWC,IACTm1C,EAAYn1C,EAAMC,OAAOxO,QAE3B2kD,UAAYp2C,IACQ,UAAdA,EAAMwN,KACRioC,OAINj/C,EAAC0B,IAAAqE,aACCI,MAAM,WACNvE,GAAI,CAAEa,MAAO,IAAK2O,EAAG,GACrBnW,MAAO2jD,EACPjmD,KAAK,WACL4Q,SAAWC,IACTq1C,EAAYr1C,EAAMC,OAAOxO,QAE3B2kD,UAAYp2C,IACQ,UAAdA,EAAMwN,KACRioC,OAINj/C,EAAA0B,IAAClB,SAAM,CACLq/C,QAASf,EACTn+C,QAASs+C,EACTx+C,QAAQ,YACRC,MAAM,UACNkB,GAAI,CAAEwP,EAAG,GAGFhR,SAAA,aAGXN,EAAAA,KACEsG,EAAAuJ,SAAA,CAAAvP,SAAA,CAAAJ,EAAAA,IAAC25C,EAAAA,iBAAgB,CAAC/3C,GAAI,CAAE2B,YAAa,KACrCvD,EAAyD0B,IAAA,MAAA,CAAAtB,SAAA,2DCxL/D0/C,GAAO5wB,EAAMA,OAAC,OAAQ,CAC1BC,kBAAoBxM,GAAkB,SAATA,GADlBuM,EAIV,EAAGptB,MAAO4X,EAAKja,WAChB,MAAMiO,EAAY3R,EAAWA,aAAEvB,GAAeA,EAAMkT,YAC9C5L,EAAQgqB,EAAAA,WACR1yB,EAAWF,KAEjB,MAAO,CACL4J,QAAS,OACTC,cAAe,SACfH,SAAU,SACVe,SAAU,EACVlB,OAAQrJ,GAAYqG,EAAO,qBAAmC,OAC9DoL,UAAW6C,EAAUxT,aACrB+I,eAAgB,aAChBu3B,YACW,IAAT/6B,EACIqC,EAAM24B,YAAYt+B,OAAO,CAAC,SAAU,SAAU,CAC5CwsC,OAAQ7mC,EAAM24B,YAAYkO,OAAOK,QACjCH,SAAU/mC,EAAM24B,YAAYoO,SAASI,iBAEvCnnC,EAAM24B,YAAYt+B,OAAO,CAAC,SAAU,SAAU,CAC5CwsC,OAAQ7mC,EAAM24B,YAAYkO,OAAOC,MACjCC,SAAU/mC,EAAM24B,YAAYoO,SAASC,gBAE7CrhB,WACGruB,GAAuC,QAA3BsU,EAAUxT,eAAmC,IAATuF,EAE7C,EADA5F,GAAe,KAErB0J,YACGnK,GAAuC,QAA3BsU,EAAUxT,eAAmC,IAATuF,EAE7C,EADA5F,GAAe,SAKX,SAAUkmD,KACtB,MAAM1W,EAAettC,EAAWA,aAAEvB,GAAeA,EAAM8uC,UACjDlwC,EAAWF,KACX6H,EAAgChF,EAAWA,aAC9CvB,GAAeA,EAAMuG,cAExB,OACEjB,OAACkgD,EAAaA,cAAA,CAAA5/C,SAAA,CACZJ,MAACigD,EAAcA,eAAA,CAACC,WAAW,EAAM/9C,SAAS,kBAC1CnC,MAACs+C,GAAW,KAC2B,IAAtCv9C,EAAY9F,MAAMqD,gBACjBwB,OAACggD,GAAI,CAACrgD,KAAM4pC,EAAanuC,SAAQkF,SAAA,CAC/BJ,EAAAA,IAACmgD,EAAW,CAAA,GACZngD,EAAAA,IAACkpC,OACC9vC,EAAyB,KAAd4G,EAAAA,IAACspC,OACblwC,EAAW4G,EAAAA,IAAC89C,OAAkB,KAC/B99C,EAAAA,IAACoqC,GAAY,CAAA,GACbpqC,EAAC0B,IAAA07C,UAGHp9C,EAAAA,IAACy+C,SAIT,CCxDA,MAoBM2B,GAAehmD,EAAAA,YAAY,CAC/BC,KAAM,UACNP,aAtBgC,CAChCmB,MAAO,CACLolD,cAAe,KACfvkD,WAAY,KACZ6tC,QAAS,KACTwE,WAAY,KACZ1E,QAAS,KACT6W,cAAe,KACf5S,4BAA4B,EAC5B2P,eAAgB,GAChB1P,wBAAyB,GACzB4S,sBAAuB,CAAE,EACzBC,6BAA8B,CAAE,EAChClB,SAAU,CACRmB,MAAO,CAAElB,aAAc,UAAWE,eAAgB,WAClDrU,KAAM,CAAEmU,aAAc,UAAWE,eAAgB,cAQrDnlD,SAAU,CACRomD,WAAY,CAAClmD,EAAOC,KAClBD,EAAMS,MAAQR,EAAOC,YAKdimD,GAAiBP,GAAavlD,QAC3C,IAAe+lD,GAAAR,GAAarlD,QCxDrB,MAAM8lD,GAAsC,CACjDrF,qBAAsB,CACpBjX,UAAU,EACVxnC,KAAM,CAAC,CAAE9B,MAAO,SAAW,CAAEA,MAAO,UAAY,CAAEA,MAAO,QACzD8J,IAAK,IAEP02C,qBAAsB,CACpBlX,UAAU,EACVx/B,IAAK,GACLhI,KAAM,CACJ,CAAE9B,MAAO,QACT,CAAEA,MAAO,UACT,CAAEA,MAAO,QACT,CAAEA,MAAO,YACT,CAAEA,MAAO,YACT,CAAEA,MAAO,YACT,CAAEA,MAAO,QACT,CAAEA,MAAO,YAGb6lD,kBAAmB,CACjBvc,UAAU,EACVx/B,IAAK,GACLhI,KAAM,CAAC,CAAE9B,MAAO,SAAW,CAAEA,MAAO,UAAY,CAAEA,MAAO,eAE3D+hD,kBAAmB,CACjBzY,UAAU,EACVx/B,IAAK,GACLhI,KAAM,CACJ,CAAE1C,KAAM,aACR,CAAEA,KAAM,eACR,CAAEA,KAAM,YACR,CAAEA,KAAM,QACR,CAAEA,KAAM,oBACR,CAAEA,KAAM,oBAGZ0mD,yBAA0B,CACxBxc,UAAU,EACVx/B,IAAK,GACLhI,KAAM,CAAC,CAAE1C,KAAM,MAAQ,CAAEA,KAAM,QAEjCw3C,oBAAqB,CACnBtN,UAAU,EACVx/B,IAAK,gCACL3D,UAAW,oBACXrE,KAAM,IAER+0C,wBAAyB,CACvBvN,UAAU,EACVx/B,IAAK,sCACL3D,UAAW,oBACXrE,KAAM,IAERg1C,wBAAyB,CACvBxN,UAAU,EACVx/B,IAAK,sCACL3D,UAAW,oBACXrE,KAAM,IAERu+C,kBAAmB,CACjB/W,UAAU,EACVxnC,KAAM,GACNqE,UAAW,oBACX2D,IAAK,uCAEP0yC,kBAAmB,CACjBlT,UAAU,EACVxnC,KAAM,GACNqE,UAAW,oBACX2D,IAAK,4BAEP+2C,iBAAkB,CAChBvX,UAAU,EACVxnC,KAAM,GACNqE,UAAW,oBACX2D,IAAK,4BAEP4yC,cAAe,CACbpT,UAAU,EACVxnC,KAAM,GACNqE,UAAW,oBACX2D,IAAK,yBAEPsuC,uBAAwB,CACtB9O,UAAU,EACVxnC,KAAM,GACNqE,UAAW,oBACX2D,IAAK,kCAEPg0C,oBAAqB,CACnBxU,UAAU,EACVxnC,KAAM,GACNqE,UAAW,oBACX2D,IAAK,+BAEP+0C,cAAe,CACbvV,UAAU,EACVxnC,KAAM,GACNqE,UAAW,oBACX2D,IAAK,0BCtFHi8C,GAA0B3jD,IAC9B,MAAM7B,EAAWC,EAAAA,cACjBwlD,eAAYC,cAAc7jD,EAAMijD,eAChC,MAAMa,EAAkC,CACtCv0B,WAAY,CACVwyB,eAAgB,CACdC,eAAgB,+GAKZhiD,EAAMiiD,UAAUmB,OAAOlB,cACvB1wC,qKAYR+c,QAAS,CACPC,KAAM,QACNthB,QAAS,CACP8gC,KACEhuC,EAAMiiD,UAAUmB,OAAOlB,cAAgB1wC,IAE3C2wC,UAAW,CACTnU,KACEhuC,EAAMiiD,UAAUmB,OAAOhB,gBACvB3wC,IAEJsyC,WAAY,CACVC,QAAS,UACTC,MAAO,aAIPC,EAAiC,CACrC30B,WAAY,CACVwyB,eAAgB,CACdC,eAAgB,+GAKZhiD,EAAMiiD,UAAUlU,MAAMmU,cAAgBxwC,qKAY9C6c,QAAS,CACPC,KAAM,OACNthB,QAAS,CACP8gC,KACEhuC,EAAMiiD,UAAUlU,MAAMmU,cAAgBxwC,IAE1CywC,UAAW,CACTnU,KACEhuC,EAAMiiD,UAAUlU,MAAMqU,gBACtBzwC,MAKR,IAAIrK,EAAe,CAAE,EACjBtH,EAAMqwC,6BACR/oC,EAAe,IAAKk8C,KAElBxjD,EAAMmjD,+BACR77C,EAAe,IACVA,KACAtH,EAAMmjD,+BAGbhlD,EAAS0I,GAAkBS,IAC3B,MAAM8I,EAAiB1R,EAAWA,aAAEvB,GAAeA,EAAMkT,YACzD,IAAI8zC,EAAe,IAAKL,GACS,SAA7B1zC,EAAe1T,YACjBynD,EAAe,IAAKD,IAEtB,MAAMz/C,EAAQqrB,EAAAA,YAAY,CACxBtiB,UAAW4C,EAAevT,gBACvBsnD,IAML,OAJA/nD,EAAAA,WAAU,KACRnB,SAAS4H,MAAQ7C,EAAMgjD,cACvB7kD,EAASmlD,GAAeD,WAAWrjD,MAClC,IAED2C,EAAA0B,IAACi+C,gBAAa,CAAC79C,MAAOA,EAAK1B,SACzBJ,MAAC+/C,GAAS,CAAA,MCpGhB0B,EAAAA,QAAQC,IAAIC,EAAAA,KACZF,EAAAA,QAAQC,IAAIE,EAAAA,KACZH,EAAAA,QAAQC,IAAIG,EAAAA,KClBU,oBAAXC,SACTA,OAASC,YCDW,oBAAXD,SACRA,OAAiBC,4NFmBuB1kD,IACzC,MAAM2kD,EAAiB,CACrBt0C,UAAW5S,GACXiG,YAAapC,GACb4/C,YAAajjD,GACbqJ,aAAcJ,GACd+kC,QAASb,GACTzsC,QAAS4kD,MACNvjD,EAAMkjD,uBAEL0B,EAAQC,EAAAA,eAAe,CAC3BnnD,QAASinD,IAGX,OACEhiD,MAACmiD,EAAAA,SAAQ,CAACF,MAAOA,EACf7hD,SAAAJ,EAAA0B,IAACs/C,GAAQ,IAAA3jD,4pBhFrCT,SAAwB+yB,GAC5B,MAAO,QAAQG,KAAKH,EACtB","x_google_ignoreList":[0,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74]}
1
+ {"version":3,"file":"index.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/hooks/UseMobile.tsx","../src/redux/features/common/AppLayoutSlice.ts","../src/redux/features/common/LoadingMaskSlice.ts","../src/hooks/useLoadingMask.tsx","../src/hooks/useAxios.tsx","../src/redux/features/common/UserSessionSlice.ts","../src/locales/english/index.ts","../src/locales/index.ts","../src/locales/arabic/index.ts","../src/locales/i18n.ts","../src/hooks/UseConfirmationWindow.tsx","../src/hooks/UseSession.tsx","../src/hooks/UseWindow.tsx","../src/redux/features/common/CommonStoreSlice.ts","../src/hooks/useApiActions.ts","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/TemplateTextField.tsx","../src/components/templates/TransferList.tsx","../src/components/templates/visuals/charts/TemplateBarChart.tsx","../src/components/templates/visuals/charts/TemplateDataCard.tsx","../src/components/templates/visuals/charts/TemplateGauge.tsx","../src/components/templates/visuals/charts/TemplateLineChart.tsx","../src/components/templates/visuals/charts/TemplateLineProgress.tsx","../src/components/templates/visuals/charts/TemplatePieChart.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/CheckBox.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/ComboBox.tsx","../src/util/constants.ts","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/Datefield.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/DatetimeField.tsx","../node_modules/@mui/system/node_modules/@mui/utils/esm/formatMuiErrorMessage/formatMuiErrorMessage.js","../node_modules/prop-types/node_modules/react-is/index.js","../node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/react-is/cjs/react-is.production.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/@mui/system/node_modules/@mui/utils/esm/deepmerge/deepmerge.js","../node_modules/@mui/system/esm/createBreakpoints/createBreakpoints.js","../node_modules/@mui/system/esm/createTheme/shape.js","../node_modules/@mui/system/esm/responsivePropType/responsivePropType.js","../node_modules/@mui/system/esm/merge/merge.js","../node_modules/@mui/system/esm/breakpoints/breakpoints.js","../node_modules/@mui/system/esm/cssContainerQueries/cssContainerQueries.js","../node_modules/@mui/system/node_modules/@mui/utils/esm/capitalize/capitalize.js","../node_modules/@mui/system/esm/style/style.js","../node_modules/@mui/system/esm/spacing/spacing.js","../node_modules/@mui/system/esm/memoize/memoize.js","../node_modules/@mui/system/esm/compose/compose.js","../node_modules/@mui/system/esm/borders/borders.js","../node_modules/@mui/system/esm/cssGrid/cssGrid.js","../node_modules/@mui/system/esm/palette/palette.js","../node_modules/@mui/system/esm/sizing/sizing.js","../node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","../node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","../node_modules/@mui/system/esm/createTheme/applyStyles.js","../node_modules/@mui/system/esm/useThemeWithoutDefault/useThemeWithoutDefault.js","../node_modules/@mui/system/esm/useTheme/useTheme.js","../node_modules/@mui/system/esm/createTheme/createTheme.js","../node_modules/@mui/system/esm/createTheme/createSpacing.js","../node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js","../node_modules/@mui/system/node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","../node_modules/clsx/dist/clsx.mjs","../node_modules/@mui/system/node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","../node_modules/@mui/system/esm/Box/boxClasses.js","../node_modules/@mui/system/esm/Box/Box.js","../node_modules/@mui/system/esm/createBox/createBox.js","../node_modules/@mui/styled-engine/esm/index.js","../node_modules/@mui/system/node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","../src/util/AppUtils.ts","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/SystemLookupCombobox.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormElementField.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormAction.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormElementGroup.tsx","../src/components/templates/DataEntryTemplates/TemplateDataGrid/DataGridColumnsUtil.tsx","../src/components/templates/DataEntryTemplates/DataEntryUtil.ts","../src/components/templates/DataEntryTemplates/TemplateDataForm/TemplateForm.tsx","../src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridMultiRecordAction.tsx","../src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridTopBar.tsx","../src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridRecordAction.tsx","../src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid.tsx","../src/hooks/useLookupGridColumn.tsx","../src/components/common/ChangeOrgForm.tsx","../src/redux/features/common/SideBarSlice.ts","../src/layout/TopBar.tsx","../src/layout/DrawerHeader.tsx","../src/navigationItems/index.tsx","../src/navigationItems/Administration/index.tsx","../src/navigationItems/Administration/adminNavigationItems.tsx","../src/layout/NavigationTree.tsx","../src/layout/SideBar.tsx","../src/components/common/LayoutHandlers.tsx","../src/components/administration/admin/OrganizationApplicationModuleGrid.tsx","../src/components/administration/admin/OrganizationUnitTypeGrid.tsx","../src/components/administration/admin/OrganizationUnitGrid.tsx","../src/components/administration/admin/OrganizationRankGrid.tsx","../src/components/administration/admin/OrgMemberRoleForm.tsx","../src/components/administration/admin/OrganizationMemberGrid.tsx","../src/components/administration/admin/SystemApplicationModuleGrid.tsx","../src/components/administration/admin/SystemApplicationAuthorityGrid.tsx","../src/components/administration/admin/RoleAuthoritiesForm.tsx","../src/components/administration/admin/SystemApplicationRoleGrid.tsx","../src/components/administration/dev/LookupGrid.tsx","../src/components/administration/dev/DataQueryParameterGrid.tsx","../src/components/administration/dev/ReportParameterGrid.tsx","../src/components/templates/report/ExcelReportViewer.tsx","../src/components/templates/report/ReportViewer.tsx","../src/components/administration/dev/ReportGrid.tsx","../src/components/administration/dev/MailRecipientGrid.tsx","../src/components/administration/dev/MailBodyGrid.tsx","../src/components/administration/dev/MailAttachmentGrid.tsx","../src/components/administration/dev/MailSenderConfigGrid.tsx","../src/components/administration/dev/WorkflowDocumentStatusGrid.tsx","../src/components/administration/dev/WorkflowDocumentActionMailGrid.tsx","../src/components/administration/dev/WorkflowDocumentActionGrid.tsx","../src/components/administration/dev/WidgetGrid.tsx","../src/components/administration/dev/DashboardWidgetGrid.tsx","../src/components/templates/visuals/WidgetViewer.tsx","../src/components/templates/visuals/DashboardViewer.tsx","../src/routes/index.ts","../src/components/common/Home.tsx","../src/routes/administration/index.ts","../src/routes/administration/adminRoutes.tsx","../src/components/administration/admin/OrganizationGrid.tsx","../src/components/administration/admin/OrganizationMemberRoleGrid.tsx","../src/components/administration/admin/PersonGrid.tsx","../src/components/administration/admin/SystemApplicationGrid.tsx","../src/components/administration/admin/SystemApplicationRoleAuthorityGrid.tsx","../src/routes/administration/devRoutes.tsx","../src/components/administration/dev/BluePrintGrid.tsx","../src/components/administration/dev/DataQueryGrid.tsx","../src/components/administration/dev/DatasourceConnectionGrid.tsx","../src/components/administration/dev/EntityParameterGrid.tsx","../src/components/administration/dev/MailTemplateGrid.tsx","../src/components/administration/dev/WorkflowDocumentGrid.tsx","../src/components/administration/dev/DashboardGrid.tsx","../src/components/templates/visuals/DashboardRouteView.tsx","../src/components/administration/dev/WorkflowDocumentMailLogGrid.tsx","../src/components/administration/dev/MailNotificationQueueGrid.tsx","../src/layout/RouteWrapper.tsx","../src/layout/MainContent.tsx","../src/layout/MobileDrawer.tsx","../src/components/common/LoadingMask.tsx","../src/components/common/Login.tsx","../src/layout/Layout.tsx","../src/redux/features/common/AppInfoSlice.ts","../src/redux/features/administration/AdministrationStoresMetaData.ts","../src/components/App.tsx","../src/components/BaseApp.tsx","../src/components/index.ts"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { useEffect, useState } from \"react\";\r\n\r\nexport const useIsMobile = (breakpoint = 768) => {\r\n const [isMobile, setIsMobile] = useState(window.innerWidth < breakpoint);\r\n\r\n useEffect(() => {\r\n const handleResize = () => setIsMobile(window.innerWidth < breakpoint);\r\n window.addEventListener(\"resize\", handleResize);\r\n return () => window.removeEventListener(\"resize\", handleResize);\r\n }, [breakpoint]);\r\n\r\n return isMobile;\r\n};\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\n\r\nexport const DRAWER_WIDTH = 350;\r\n\r\ninterface AppLayoutState {\r\n themeMode: \"light\" | \"dark\" | string;\r\n appDirection: \"ltr\" | \"rtl\";\r\n}\r\n\r\nconst initialState: AppLayoutState = {\r\n themeMode: localStorage.getItem(\"themeMode\") || \"light\",\r\n appDirection: localStorage.getItem(\"language\") == \"ar\" ? \"rtl\" : \"ltr\",\r\n};\r\n\r\nconst AppLayoutSlice = createSlice({\r\n name: \"AppLayout\",\r\n initialState,\r\n reducers: {\r\n setThemeMode: (state, action) => {\r\n state.themeMode = action.payload;\r\n },\r\n setAppDirection: (state, action) => {\r\n state.appDirection = action.payload;\r\n },\r\n },\r\n});\r\n\r\nexport const AppLayoutActions = AppLayoutSlice.actions;\r\nexport default AppLayoutSlice.reducer;\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\n\r\ninterface LoadingMaskStateValue {\r\n value: { isOpened: boolean; message?: string | null };\r\n}\r\n\r\nconst initialState: LoadingMaskStateValue = {\r\n value: { isOpened: false, message: null },\r\n};\r\n\r\nconst loadingMaskSlice = createSlice({\r\n name: \"loadingMask\",\r\n initialState,\r\n reducers: {\r\n showLoadingMask: (\r\n state,\r\n action: PayloadAction<string | null | undefined>\r\n ) => {\r\n state.value.isOpened = true;\r\n state.value.message = action.payload;\r\n },\r\n hideLoadingMask: (state) => {\r\n state.value.isOpened = false;\r\n state.value.message = null;\r\n },\r\n },\r\n});\r\n\r\nexport const { showLoadingMask, hideLoadingMask } = loadingMaskSlice.actions;\r\nexport default loadingMaskSlice.reducer;\r\n","import { useDispatch } from \"react-redux\";\r\nimport { hideLoadingMask, showLoadingMask } from \"../redux/features/common/LoadingMaskSlice\";\r\n\r\n\r\nconst useLoadingMask = () => {\r\n const dispatch = useDispatch();\r\n const show = (message?: string) => {\r\n dispatch(showLoadingMask(message));\r\n };\r\n const hide = () => {\r\n dispatch(hideLoadingMask());\r\n };\r\n return { show, hide };\r\n};\r\n\r\nexport default useLoadingMask;\r\n","import { toast } from \"react-toastify\";\r\nimport axios from \"axios\";\r\nimport { useSelector } from \"react-redux\";\r\nimport useLoadingMask from \"./useLoadingMask\";\r\n\r\nexport interface APIRequest {\r\n endPointURI: string;\r\n parameters?: any;\r\n data?: any;\r\n showMask?: Boolean;\r\n loadingMessage?: string;\r\n successCallBkFn?: Function;\r\n failureCallBkFn?: Function;\r\n}\r\n\r\nconst useAxios = () => {\r\n const mask = useLoadingMask();\r\n const apiBaseUrl = useSelector(\r\n (state: any) => state.AppInfo.value.apiBaseUrl\r\n );\r\n const axiosInstance = axios.create({\r\n baseURL: apiBaseUrl,\r\n timeout: 600000,\r\n withCredentials: true,\r\n });\r\n\r\n axiosInstance.defaults.withCredentials = true;\r\n axiosInstance.interceptors.response.use(\r\n (response: any) => {\r\n return response;\r\n },\r\n (error: any) => {\r\n if (\r\n error\r\n ? error.response\r\n ? error.response.status\r\n ? error.response.status === 401\r\n : false\r\n : false\r\n : false\r\n ) {\r\n toast.error(\"your session is now expired, you need to login again\", {\r\n autoClose: false,\r\n });\r\n } else if (\r\n error\r\n ? error.response\r\n ? error.response.status\r\n ? error.response.status === 403\r\n : false\r\n : false\r\n : false\r\n ) {\r\n toast.error(\"you aren't authorized to process this request\");\r\n } else if (\r\n error\r\n ? error.response\r\n ? error.response.status\r\n ? error.response.status === 500\r\n : false\r\n : false\r\n : false\r\n ) {\r\n if (error.response.data instanceof Blob) {\r\n const blob = error.response.data;\r\n blob.text().then((text) => {\r\n toast.error(text);\r\n });\r\n } else {\r\n toast.error(error.response.data);\r\n }\r\n } else {\r\n toast.error(\r\n \"failed to communicate with the server ... try again later\"\r\n );\r\n }\r\n return \"ERROR\";\r\n }\r\n );\r\n const handleGetRequest = async (\r\n props: APIRequest = { endPointURI: \"\", parameters: {} }\r\n ) => {\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.show(props.loadingMessage);\r\n }\r\n const response: any = await axiosInstance.get(props.endPointURI, {\r\n params: { ...props.parameters },\r\n withCredentials: true,\r\n // withCredentials: true,\r\n });\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.hide();\r\n }\r\n if (response !== \"ERROR\") {\r\n if (\r\n props.successCallBkFn !== undefined &&\r\n props.successCallBkFn != null\r\n ) {\r\n props.successCallBkFn(response);\r\n }\r\n return response;\r\n } else {\r\n if (\r\n props.failureCallBkFn !== undefined &&\r\n props.failureCallBkFn != null\r\n ) {\r\n props.failureCallBkFn(response);\r\n }\r\n return \"ERROR\";\r\n }\r\n };\r\n\r\n const HandleDownloadHTTPPostPDF = async (\r\n props: APIRequest = { endPointURI: \"\", parameters: {}, data: {} }\r\n ) => {\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.show(props.loadingMessage);\r\n }\r\n const response: any = await axiosInstance.post(\r\n props.endPointURI,\r\n props.data,\r\n {\r\n responseType: \"blob\",\r\n }\r\n );\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.hide();\r\n }\r\n if (response !== \"ERROR\") {\r\n if (\r\n props.successCallBkFn !== undefined &&\r\n props.successCallBkFn != null\r\n ) {\r\n props.successCallBkFn(response);\r\n }\r\n return response;\r\n } else {\r\n if (\r\n props.failureCallBkFn !== undefined &&\r\n props.failureCallBkFn != null\r\n ) {\r\n props.failureCallBkFn(response);\r\n }\r\n return \"ERROR\";\r\n }\r\n };\r\n const handlePostRequest = async (\r\n props: APIRequest = { endPointURI: \"\", parameters: {}, data: {} }\r\n ) => {\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.show(props.loadingMessage);\r\n }\r\n let response: any = await axiosInstance.post(\r\n props.endPointURI,\r\n props.data,\r\n {\r\n params: props.parameters,\r\n }\r\n );\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.hide();\r\n }\r\n if (response !== \"ERROR\") {\r\n if (\r\n props.successCallBkFn !== undefined &&\r\n props.successCallBkFn != null\r\n ) {\r\n props.successCallBkFn(response);\r\n }\r\n return response;\r\n } else {\r\n if (\r\n props.failureCallBkFn !== undefined &&\r\n props.failureCallBkFn != null\r\n ) {\r\n props.failureCallBkFn(response);\r\n }\r\n return \"ERROR\";\r\n }\r\n };\r\n const handleDeleteRequest = async (\r\n props: APIRequest = { endPointURI: \"\", parameters: {} }\r\n ) => {\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.show(props.loadingMessage);\r\n }\r\n let response: any = await axiosInstance.delete(props.endPointURI, {\r\n params: {\r\n ...props.parameters,\r\n },\r\n });\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.hide();\r\n }\r\n if (response !== \"ERROR\") {\r\n if (\r\n props.successCallBkFn !== undefined &&\r\n props.successCallBkFn != null\r\n ) {\r\n props.successCallBkFn(response);\r\n }\r\n return response;\r\n } else {\r\n if (\r\n props.failureCallBkFn !== undefined &&\r\n props.failureCallBkFn != null\r\n ) {\r\n props.failureCallBkFn(response);\r\n }\r\n return \"ERROR\";\r\n }\r\n };\r\n return {\r\n handleGetRequest,\r\n handlePostRequest,\r\n handleDeleteRequest,\r\n HandleDownloadHTTPPostPDF,\r\n };\r\n};\r\n\r\nexport default useAxios;\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\n\r\nexport interface OrganizationProps {\r\n organizationCode?: string;\r\n organizationName?: string;\r\n}\r\n\r\nexport interface UserSessionProps {\r\n value: {\r\n isAuthenticated: boolean | null;\r\n employeeNumber?: string;\r\n employeeName?: string;\r\n mobileNumber?: string;\r\n email?: string;\r\n isEmployeeArchived?: string;\r\n organizationCode?: string;\r\n organizationUnitId?: string;\r\n organizationUnitArName?: string;\r\n organizationUnitEnName?: string;\r\n organizationRankId?: string;\r\n rankCode?: string;\r\n rankName?: string;\r\n rankOrder?: string;\r\n currentOrganization?: any;\r\n userOrganizations?: Array<OrganizationProps>;\r\n authorities: Array<{ authority: string }>;\r\n };\r\n}\r\n\r\nconst initialState: UserSessionProps = {\r\n value: {\r\n isAuthenticated: null,\r\n authorities: [],\r\n },\r\n};\r\n\r\nconst UserSessionSlice = createSlice({\r\n name: \"UserSession\",\r\n initialState,\r\n reducers: {\r\n setAuthenticated: (state, action) => {\r\n state.value = action.payload;\r\n },\r\n setUnAuthenticated: (state) => {\r\n state.value = {\r\n isAuthenticated: false,\r\n authorities: [],\r\n };\r\n },\r\n },\r\n});\r\n\r\nexport const UserSessionActions = UserSessionSlice.actions;\r\nexport default UserSessionSlice.reducer;\r\n","import common from \"./common.json\";\r\nimport AdminLocalsEn from \"./adminLocalsEn.json\";\r\nimport devLocalsEn from \"./devLocalsEn.json\";\r\n\r\nexport const ENGLISH_TRANS = {\r\n ...common,\r\n ...AdminLocalsEn,\r\n ...devLocalsEn,\r\n};\r\n","import { ARABIC_TRANS } from \"./arabic\";\r\nimport { ENGLISH_TRANS } from \"./english\";\r\n\r\nconst resources = {\r\n en: { translation: ENGLISH_TRANS },\r\n ar: { translation: ARABIC_TRANS },\r\n};\r\n\r\nexport default resources;\r\n","import common from \"./common.json\";\r\nimport adminLocalsAr from \"./adminLocalsAr.json\";\r\nimport devLocalAr from \"./devLocalsAr.json\";\r\n\r\nexport const ARABIC_TRANS = {\r\n ...common,\r\n ...adminLocalsAr,\r\n ...devLocalAr,\r\n};\r\n","import i18n from \"i18next\";\r\nimport { initReactI18next } from \"react-i18next\";\r\nimport resources from \".\";\r\ni18n.use(initReactI18next).init({\r\n resources: resources, // Where we're gonna put translations' files\r\n lng: localStorage.getItem(\"language\") || \"en\", // Set the initial language of the App\r\n fallbackLng: \"en\",\r\n});\r\n\r\nexport const changeLanguage = (lng: string) => {\r\n i18n.changeLanguage(lng);\r\n localStorage.setItem(\"language\", lng); // Persist user choice\r\n};\r\n\r\nexport default i18n;\r\n","import {\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n} from \"@mui/material\";\r\nimport { useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ninterface ConfirmationWindowProps {\r\n title: string;\r\n body: string;\r\n onConfirmationCallBk: () => void;\r\n}\r\n\r\nexport const useConfirmationWindow = (props: ConfirmationWindowProps) => {\r\n const [open, setOpen] = useState<boolean>(false);\r\n const { t } = useTranslation();\r\n const ConfirmationWindow: React.FC = () => {\r\n return (\r\n <Dialog open={open}>\r\n <DialogTitle>{props.title}</DialogTitle>\r\n <DialogContent>\r\n <DialogContentText>{props.body}</DialogContentText>\r\n </DialogContent>\r\n <DialogActions>\r\n <Button\r\n variant=\"contained\"\r\n color=\"primary\"\r\n onClick={() => {\r\n setOpen(false);\r\n }}\r\n >\r\n {t(\"NO_LABEL\")}\r\n </Button>\r\n <Button\r\n variant=\"contained\"\r\n color=\"error\"\r\n onClick={() => {\r\n props.onConfirmationCallBk();\r\n setOpen(false);\r\n }}\r\n autoFocus\r\n >\r\n {t(\"YES_LABEL\")}\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n );\r\n };\r\n return { ConfirmationWindow, open, setOpen };\r\n};\r\n","import { useSelector } from \"react-redux\";\r\n\r\nconst useSession = () => {\r\n const UserSession = useSelector((state: any) => state.UserSession);\r\n const UserInfo = UserSession.value;\r\n const isUserAuthorized = (authorityCode: string): boolean => {\r\n if (UserSession?.value?.authorities) {\r\n for (let grantedAuthority of UserSession.value.authorities) {\r\n if (\r\n grantedAuthority?.authority === \"DEVELOPMENT_ADMIN\" ||\r\n grantedAuthority?.authority === authorityCode\r\n ) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n return { UserSession, isUserAuthorized, UserInfo };\r\n};\r\n\r\nexport default useSession;\r\n","import { useEffect, useState } from \"react\";\r\nimport {\r\n AppBar,\r\n Box,\r\n IconButton,\r\n Modal,\r\n Paper,\r\n Toolbar,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\n\r\nexport interface TemplateWindowProp {\r\n height?: any;\r\n width?: any;\r\n minWidth?: any;\r\n minHeight?: any;\r\n windowIcon?: IconProp;\r\n windowTitle?: string;\r\n onCloseCallBack?: any;\r\n}\r\n\r\ninterface WindowProps {\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport const useWindow = (props: TemplateWindowProp) => {\r\n const [windowState, setWindowState] = useState(false);\r\n\r\n const Window: React.FC<WindowProps> = (windowProps: WindowProps) => {\r\n return (\r\n <Modal\r\n open={windowState}\r\n sx={{ zIndex: (theme) => theme.zIndex.drawer }}\r\n onClose={() => {\r\n if (!windowState && props?.onCloseCallBack) {\r\n props.onCloseCallBack();\r\n }\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n maxHeight: \"90%\",\r\n transform: \"translate(-50%, -50%)\",\r\n height: props?.height || \"80%\",\r\n width: props?.width || \"90%\",\r\n minWidth: props.minWidth || 400,\r\n minHeight: props.minHeight || 200,\r\n overflow: \"hidden\",\r\n bgcolor: \"modalBackground.main\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-start\",\r\n }}\r\n >\r\n <AppBar position=\"static\">\r\n <Toolbar variant=\"dense\">\r\n <FontAwesomeIcon\r\n icon={props?.windowIcon || \"window-maximize\"}\r\n style={{ marginRight: 5 }}\r\n />\r\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\">\r\n {props?.windowTitle || \"window\"}\r\n </Typography>\r\n <div style={{ flexGrow: 1 }}></div>\r\n <IconButton\r\n onClick={() => {\r\n setWindowState(false);\r\n if (\r\n props.onCloseCallBack != undefined &&\r\n props.onCloseCallBack != null\r\n ) {\r\n props.onCloseCallBack();\r\n }\r\n }}\r\n color=\"secondary\"\r\n >\r\n <FontAwesomeIcon icon=\"xmark-square\" />\r\n </IconButton>\r\n </Toolbar>\r\n </AppBar>\r\n <Paper\r\n sx={{\r\n // flexGrow: 1,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n padding: 1,\r\n // justifyContent: \"center\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n {windowProps?.children}\r\n </Paper>\r\n </Box>\r\n </Modal>\r\n );\r\n };\r\n return { windowState, setWindowState, Window };\r\n};\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\n\r\nexport type CommonStores = {\r\n [key: string]: StoreMetaData;\r\n};\r\n\r\nexport interface CommonStoresInterface {\r\n stores: { [key: string]: StoreMetaData };\r\n storeKeys: Array<String>;\r\n}\r\n\r\ninterface setStoreDataProps {\r\n storeKey: string;\r\n data: Array<any>;\r\n}\r\n\r\nexport interface StoreMetaData {\r\n url: string;\r\n data: Array<any>;\r\n autoLoad: boolean;\r\n authority?: string;\r\n}\r\n\r\nexport const commonStoresInitialState: CommonStoresInterface = {\r\n stores: {},\r\n storeKeys: [],\r\n};\r\n\r\nconst commonStoreSlice = createSlice({\r\n name: \"loadingMask\",\r\n initialState: commonStoresInitialState,\r\n reducers: {\r\n setStoresMetaData: (state, action) => {\r\n state.stores = action.payload;\r\n state.storeKeys = Object.keys(action.payload);\r\n },\r\n setStoreData: (state, action: PayloadAction<setStoreDataProps>) => {\r\n state.stores[action.payload.storeKey].data = action.payload.data;\r\n },\r\n },\r\n});\r\n\r\nexport const { setStoreData, setStoresMetaData } = commonStoreSlice.actions;\r\nexport default commonStoreSlice.reducer;\r\n","import { useDispatch, useSelector } from \"react-redux\";\r\nimport useSession from \"./UseSession\";\r\nimport useAxios from \"./useAxios\";\r\nimport { setStoreData } from \"../redux/features/common/CommonStoreSlice\";\r\n\r\nexport type ApiActionsProps = {\r\n findAll?: string;\r\n commonStoreKey?: string;\r\n setData?: any;\r\n findById?: string;\r\n findByIdParamName?: string;\r\n save?: string;\r\n deleteById?: string;\r\n deleteByIdParamName?: string;\r\n};\r\n\r\nexport type ApiActions = {\r\n reloadData: (params?: any) => Promise<void>;\r\n saveRecord: (record: any) => Promise<any | null>;\r\n loadRecordById: (recordId: any) => Promise<any>;\r\n deleteRecordById: (recordId: any) => Promise<boolean>;\r\n};\r\n\r\nconst useApiActions: (apiActionsProps: ApiActionsProps) => ApiActions = (\r\n apiActionsProps: ApiActionsProps\r\n) => {\r\n const CommonStores = useSelector((state: any) => state.commonStores.stores);\r\n const dispatch = useDispatch();\r\n const session = useSession();\r\n const { handleGetRequest, handlePostRequest, handleDeleteRequest } =\r\n useAxios();\r\n const reloadData = async (params?: any) => {\r\n if (apiActionsProps?.commonStoreKey) {\r\n const storeKeys = Object.keys(CommonStores);\r\n for (const storeKey of storeKeys) {\r\n if (storeKey === apiActionsProps.commonStoreKey) {\r\n if (\r\n (CommonStores[storeKey]?.authority === undefined ||\r\n CommonStores[storeKey]?.authority === null ||\r\n session.isUserAuthorized(CommonStores[storeKey]?.authority)) &&\r\n CommonStores[storeKey]?.url != \"\"\r\n ) {\r\n await handleGetRequest({\r\n endPointURI: CommonStores[storeKey].url,\r\n showMask: false,\r\n successCallBkFn: (response: any) => {\r\n dispatch(setStoreData({ storeKey, data: response.data }));\r\n apiActionsProps.setData(response.data);\r\n },\r\n failureCallBkFn: () => {\r\n dispatch(setStoreData({ storeKey, data: [] }));\r\n apiActionsProps.setData([]);\r\n },\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n } else if (apiActionsProps?.findAll) {\r\n await handleGetRequest({\r\n endPointURI: apiActionsProps.findAll,\r\n showMask: true,\r\n parameters: params || {},\r\n successCallBkFn: (response: any) => {\r\n apiActionsProps.setData(response.data);\r\n },\r\n });\r\n }\r\n };\r\n const saveRecord = async (record: any) => {\r\n let savedRecord = null;\r\n if (apiActionsProps?.save) {\r\n await handlePostRequest({\r\n endPointURI: apiActionsProps.save,\r\n data: record,\r\n showMask: true,\r\n successCallBkFn: (response: any) => {\r\n savedRecord = response.data;\r\n },\r\n });\r\n }\r\n return savedRecord;\r\n };\r\n const loadRecordById = async (recordId: any) => {\r\n let record: any = null;\r\n if (apiActionsProps?.findById) {\r\n const parameters: any = {};\r\n const keyParameterName = apiActionsProps?.findByIdParamName || \"id\";\r\n parameters[keyParameterName] = recordId;\r\n await handleGetRequest({\r\n endPointURI: apiActionsProps.findById,\r\n showMask: true,\r\n parameters,\r\n successCallBkFn: (response: any) => {\r\n record = response.data;\r\n },\r\n });\r\n }\r\n return record;\r\n };\r\n const deleteRecordById = async (recordId: any) => {\r\n let result = true;\r\n if (apiActionsProps?.deleteById) {\r\n const parameters: any = {};\r\n const keyParameterName = apiActionsProps?.deleteByIdParamName || \"id\";\r\n parameters[keyParameterName] = recordId;\r\n await handleDeleteRequest({\r\n endPointURI: apiActionsProps.deleteById,\r\n showMask: true,\r\n parameters,\r\n successCallBkFn: () => {\r\n result = true;\r\n },\r\n failureCallBkFn: () => {\r\n result = false;\r\n },\r\n });\r\n }\r\n return result;\r\n };\r\n return { reloadData, loadRecordById, saveRecord, deleteRecordById };\r\n};\r\n\r\nexport default useApiActions;\r\n","import { TextField, TextFieldProps } from \"@mui/material\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst TemplateTextField: React.FC<Omit<TextFieldProps, \"outlined\">> = (\r\n props\r\n) => {\r\n const { t } = useTranslation();\r\n return (\r\n <TextField\r\n {...props}\r\n slotProps={{ inputLabel: { shrink: true } }}\r\n label={<>{props?.label ? t(props.label) : \"\"}</>}\r\n />\r\n );\r\n};\r\n\r\nexport default TemplateTextField;\r\n","import * as React from \"react\";\r\nimport List from \"@mui/material/List\";\r\nimport Card from \"@mui/material/Card\";\r\nimport CardHeader from \"@mui/material/CardHeader\";\r\nimport ListItemText from \"@mui/material/ListItemText\";\r\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\r\nimport Checkbox from \"@mui/material/Checkbox\";\r\nimport Button from \"@mui/material/Button\";\r\nimport Divider from \"@mui/material/Divider\";\r\nimport { Box, Grid2, ListItemButton } from \"@mui/material\";\r\nimport TemplateTextField from \"./DataEntryTemplates/TemplateDataForm/FormFields/TemplateTextField\";\r\n\r\nfunction not(a, b) {\r\n return a.filter((value) => b.indexOf(value) === -1);\r\n}\r\n\r\nfunction intersection(a, b) {\r\n return a.filter((value) => b.indexOf(value) !== -1);\r\n}\r\n\r\nfunction union(a, b) {\r\n return [...a, ...not(b, a)];\r\n}\r\n\r\nexport type TransferListProps = {\r\n valueField: string;\r\n displayField: string;\r\n options: Array<any>;\r\n selectedOptions: Array<any>;\r\n setSelection: any;\r\n};\r\n\r\nconst TransferList: React.FC<TransferListProps> = ({\r\n valueField = \"id\",\r\n displayField = \"name\",\r\n options = [],\r\n selectedOptions = [],\r\n setSelection,\r\n}) => {\r\n const [checked, setChecked] = React.useState([]);\r\n const [left, setLeft] = React.useState<Array<any>>([]);\r\n const [right, setRight] = React.useState<Array<any>>([]);\r\n const [leftFilterValue, setLeftFilterValue] = React.useState<string>(\"\");\r\n const [rightFilterValue, setRightFilterValue] = React.useState<string>(\"\");\r\n\r\n const leftChecked = intersection(checked, left);\r\n const rightChecked = intersection(checked, right);\r\n\r\n React.useEffect(() => {\r\n if (options) {\r\n setLeft([...options]);\r\n }\r\n }, [options]);\r\n React.useEffect(() => {\r\n if (selectedOptions) {\r\n setRight([...selectedOptions]);\r\n }\r\n }, [selectedOptions]);\r\n\r\n const handleToggle = (value) => () => {\r\n const currentIndex = checked.indexOf(value);\r\n const newChecked = [...checked];\r\n\r\n if (currentIndex === -1) {\r\n newChecked.push(value);\r\n } else {\r\n newChecked.splice(currentIndex, 1);\r\n }\r\n\r\n setChecked(newChecked);\r\n };\r\n\r\n const numberOfChecked = (items) => intersection(checked, items).length;\r\n\r\n const handleToggleAll = (items) => () => {\r\n if (numberOfChecked(items) === items.length) {\r\n setChecked(not(checked, items));\r\n } else {\r\n setChecked(union(checked, items));\r\n }\r\n };\r\n\r\n const handleCheckedRight = () => {\r\n setRight((oldState) => {\r\n let newState = right.concat(leftChecked);\r\n setSelection(newState);\r\n return newState;\r\n });\r\n setLeft(not(left, leftChecked));\r\n setChecked(not(checked, leftChecked));\r\n };\r\n\r\n const handleCheckedLeft = () => {\r\n setLeft(left.concat(rightChecked));\r\n setRight((oldState) => {\r\n let newState = not(right, rightChecked);\r\n setSelection(newState);\r\n return newState;\r\n });\r\n setChecked(not(checked, rightChecked));\r\n };\r\n\r\n const customList = (\r\n title: string,\r\n unfilteredItems: Array<any>,\r\n side: \"left\" | \"right\"\r\n ) => { \r\n const items = unfilteredItems.filter((option: any) => {\r\n \r\n if (option[displayField]) {\r\n const value: string = option[displayField];\r\n if (\r\n side === \"left\" &&\r\n value\r\n .toLocaleLowerCase()\r\n .includes(leftFilterValue.toLocaleLowerCase())\r\n ) {\r\n return true;\r\n } else if (\r\n side === \"right\" &&\r\n value\r\n .toLocaleLowerCase()\r\n .includes(rightFilterValue.toLocaleLowerCase())\r\n ) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n });\r\n return (\r\n <Card sx={{ height: \"100%\" }}>\r\n <CardHeader\r\n sx={{ px: 2, py: 1 }}\r\n avatar={\r\n <Checkbox\r\n onClick={handleToggleAll(items)}\r\n checked={\r\n numberOfChecked(items) === items.length && items.length !== 0\r\n }\r\n indeterminate={\r\n numberOfChecked(items) !== items.length &&\r\n numberOfChecked(items) !== 0\r\n }\r\n disabled={items.length === 0}\r\n inputProps={{\r\n \"aria-label\": \"all items selected\",\r\n }}\r\n />\r\n }\r\n title={title}\r\n subheader={`${numberOfChecked(unfilteredItems)} / ${\r\n unfilteredItems.length\r\n } Selected`}\r\n />\r\n <Box sx={{ width: \"100%\", padding: 1 }}>\r\n <TemplateTextField\r\n fullWidth\r\n label=\"search\"\r\n value={side === \"left\" ? leftFilterValue : rightFilterValue}\r\n onChange={(event) => {\r\n if (side === \"left\") {\r\n setLeftFilterValue(event.target.value);\r\n } else {\r\n setRightFilterValue(event.target.value);\r\n }\r\n }}\r\n />\r\n </Box>\r\n <Divider />\r\n <List\r\n sx={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n bgcolor: \"secondary\",\r\n overflow: \"auto\",\r\n }}\r\n dense\r\n component=\"div\"\r\n role=\"list\"\r\n >\r\n {items.map((value) => {\r\n const labelId = `transfer-list-all-item-${value[valueField]}-label`;\r\n\r\n return (\r\n <ListItemButton\r\n key={value[valueField]}\r\n role=\"listitem\"\r\n onClick={handleToggle(value)}\r\n sx={{ cursor: \"pointer\" }}\r\n >\r\n <ListItemIcon>\r\n <Checkbox\r\n checked={checked.indexOf(value) !== -1}\r\n tabIndex={-1}\r\n disableRipple\r\n />\r\n </ListItemIcon>\r\n <ListItemText\r\n id={value[valueField]}\r\n primary={value[displayField]}\r\n />\r\n </ListItemButton>\r\n );\r\n })}\r\n </List>\r\n </Card>\r\n );\r\n };\r\n return (\r\n <Grid2\r\n container\r\n spacing={2}\r\n sx={{\r\n flexGrow: 1,\r\n overflow: \"auto\",\r\n margin: 1,\r\n display: \"flex\",\r\n width: \"100%\",\r\n }}\r\n justifyContent=\"center\"\r\n alignItems=\"center\"\r\n >\r\n <Grid2 sx={{ height: \"100%\", flex: 1 }}>\r\n {customList(\"Available Items\", left, \"left\")}\r\n </Grid2>\r\n <Grid2>\r\n <Grid2 container direction=\"column\" alignItems=\"center\">\r\n <Button\r\n sx={{ my: 0.5 }}\r\n variant=\"outlined\"\r\n size=\"small\"\r\n onClick={handleCheckedRight}\r\n disabled={leftChecked.length === 0}\r\n aria-label=\"move selected right\"\r\n >\r\n &gt;\r\n </Button>\r\n <Button\r\n sx={{ my: 0.5 }}\r\n variant=\"outlined\"\r\n size=\"small\"\r\n onClick={handleCheckedLeft}\r\n disabled={rightChecked.length === 0}\r\n aria-label=\"move selected left\"\r\n >\r\n &lt;\r\n </Button>\r\n </Grid2>\r\n </Grid2>\r\n <Grid2 sx={{ height: \"100%\", flex: 1 }}>\r\n {customList(\"Currently Selected\", right, \"right\")}\r\n </Grid2>\r\n </Grid2>\r\n );\r\n};\r\n\r\nexport default TransferList;\r\n","import { BarChart } from \"@mui/x-charts\";\r\nimport { WidgetProps } from \"../DashboardViewer\";\r\n\r\n\r\nconst TemplateBarChart: React.FC<WidgetProps> = (props) => {\r\n return (\r\n <BarChart\r\n dataset={props.data}\r\n xAxis={[\r\n {\r\n dataKey: props.valueField,\r\n scaleType: \"band\",\r\n label: props.valueLabel,\r\n },\r\n ]}\r\n series={props.labelField?.split(\",\").map((labelField) => {\r\n return { dataKey: labelField, label: labelField };\r\n })}\r\n />\r\n );\r\n};\r\n\r\nexport default TemplateBarChart;\r\n","import { Box, Paper, Typography } from \"@mui/material\";\r\nimport { SingleRecordWidgetProps } from \"../DashboardViewer\";\r\n\r\n\r\nconst TemplateDataCard: React.FC<SingleRecordWidgetProps> = (props: any) => {\r\n return (\r\n <Paper\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n height: 150,\r\n padding: 1,\r\n flexGrow: 1,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n width: \"100%\",\r\n justifyContent: \"space-evenly\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <div>{props.record[props.valueField]}</div>\r\n </Box>\r\n <Typography sx={{ fontSize: 16, fontWeight: \"bold\" }}>\r\n {props.record[props.labelField]}\r\n </Typography>\r\n </Paper>\r\n );\r\n};\r\n\r\nexport default TemplateDataCard;\r\n","import { Gauge } from \"@mui/x-charts\";\r\nimport { SingleRecordWidgetProps } from \"../DashboardViewer\";\r\nimport { Typography } from \"@mui/material\";\r\n\r\nconst TemplateGauge: React.FC<SingleRecordWidgetProps> = (props: any) => {\r\n return (\r\n <>\r\n <Typography sx={{ fontSize: 16, fontWeight: \"bold\" }}>\r\n {props.record[props.labelField]}\r\n </Typography>\r\n <Gauge\r\n width={200}\r\n height={200}\r\n value={props.record[props.valueField]}\r\n valueMax={props.total}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default TemplateGauge;\r\n","import { LineChart } from \"@mui/x-charts\";\r\nimport { WidgetProps } from \"../DashboardViewer\";\r\n\r\nconst TemplateLineChart: React.FC<WidgetProps> = (props) => {\r\n return (\r\n <LineChart\r\n dataset={props.data}\r\n xAxis={[\r\n {\r\n dataKey: props.valueField,\r\n scaleType: \"band\",\r\n label: props.valueLabel,\r\n },\r\n ]}\r\n series={props.labelField?.split(\",\").map((labelField) => {\r\n return { dataKey: labelField, label: labelField };\r\n })}\r\n />\r\n );\r\n};\r\n\r\nexport default TemplateLineChart;\r\n","import * as React from \"react\";\r\nimport LinearProgress, {\r\n LinearProgressProps,\r\n} from \"@mui/material/LinearProgress\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport Box from \"@mui/material/Box\";\r\nimport { SingleRecordWidgetProps } from \"../DashboardViewer\";\r\n\r\nfunction LinearProgressWithLabel(\r\n props: LinearProgressProps & { value: number }\r\n) {\r\n return (\r\n <Box sx={{ display: \"flex\", alignItems: \"center\" }}>\r\n <Box sx={{ width: \"100%\", mr: 1 }}>\r\n <LinearProgress variant=\"determinate\" {...props} />\r\n </Box>\r\n <Box sx={{ minWidth: 35 }}>\r\n <Typography\r\n variant=\"body2\"\r\n sx={{ color: \"text.secondary\" }}\r\n >{`${Math.round(props.value)}%`}</Typography>\r\n </Box>\r\n </Box>\r\n );\r\n}\r\n\r\nconst TemplateLineProgress: React.FC<SingleRecordWidgetProps> = (\r\n props: any\r\n) => {\r\n return (\r\n <Box sx={{ width: \"100%\" }}>\r\n <Typography sx={{ fontSize: 16, fontWeight: \"bold\" }}>\r\n {props.record[props.labelField]}\r\n </Typography>\r\n <LinearProgressWithLabel\r\n value={100 * (props.record[props.valueField] / props.total)}\r\n />\r\n </Box>\r\n );\r\n};\r\n\r\nexport default TemplateLineProgress;\r\n","import { PieChart } from \"@mui/x-charts/PieChart\";\r\nimport { WidgetProps } from \"../DashboardViewer\";\r\n\r\nconst TemplatePieChart: React.FC<WidgetProps> = (props) => {\r\n // construct data object\r\n const chartData = props.data.map((record: any, index: any) => {\r\n return {\r\n id: index,\r\n value: record[props.valueField],\r\n label: record[props.labelField] + \"\",\r\n };\r\n });\r\n return (\r\n <PieChart\r\n series={[\r\n {\r\n data: chartData,\r\n },\r\n ]}\r\n />\r\n );\r\n};\r\n\r\nexport default TemplatePieChart;\r\n","import { Checkbox, FormControlLabel } from \"@mui/material\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ninterface CheckBoxProps {\r\n value: any;\r\n disabled?: boolean;\r\n required?: boolean;\r\n label: string;\r\n checkedValue?: any;\r\n unCheckedValue?: any;\r\n onChangeCallBack: Function;\r\n sx?: any;\r\n}\r\n\r\nconst CheckBox: React.FC<CheckBoxProps> = (props) => {\r\n const { t } = useTranslation();\r\n return (\r\n <FormControlLabel\r\n sx={props.sx}\r\n disabled={props.disabled || false}\r\n required={props.required || false}\r\n control={\r\n <Checkbox\r\n checked={\r\n props?.checkedValue == props.value ||\r\n props.value === \"true\" ||\r\n props.value == \"1\"\r\n ? true\r\n : false\r\n }\r\n onChange={(e) => {\r\n if (\r\n props.onChangeCallBack !== undefined &&\r\n props.onChangeCallBack != null\r\n ) {\r\n if (e.target.checked) {\r\n if (\r\n props.checkedValue !== undefined &&\r\n props.checkedValue != null\r\n ) {\r\n props.onChangeCallBack(props.checkedValue);\r\n } else {\r\n props.onChangeCallBack(true);\r\n }\r\n } else {\r\n if (\r\n props.unCheckedValue !== undefined &&\r\n props.unCheckedValue != null\r\n ) {\r\n props.onChangeCallBack(props.unCheckedValue);\r\n } else {\r\n props.onChangeCallBack(false);\r\n }\r\n }\r\n }\r\n }}\r\n />\r\n }\r\n label={t(props.label)}\r\n />\r\n );\r\n};\r\n\r\nexport default CheckBox;\r\n","import { useSelector } from \"react-redux\";\r\nimport { Autocomplete, Popper, TextField } from \"@mui/material\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ninterface ComboBoxProps {\r\n value: any;\r\n onChangeCallBack: Function;\r\n label: string;\r\n disabled?: boolean;\r\n required?: boolean;\r\n options: Array<any>;\r\n errorMessage?: any;\r\n displayField: string;\r\n valueField: string;\r\n sx?: any;\r\n}\r\n\r\nconst ComboBox: React.FC<ComboBoxProps> = (props) => {\r\n const AppLayoutState = useSelector((state: any) => state.AppLayout);\r\n const { t } = useTranslation();\r\n const getValue = (v: string) => {\r\n for (let option of props.options) {\r\n if (option[props.valueField] == v) {\r\n return option;\r\n }\r\n }\r\n return null;\r\n };\r\n return (\r\n <Autocomplete\r\n sx={props.sx}\r\n value={getValue(props.value)}\r\n options={props.options}\r\n disabled={props.disabled}\r\n onChange={(event, newValue) => {\r\n if (\r\n props.onChangeCallBack !== undefined &&\r\n props.onChangeCallBack != null\r\n ) {\r\n if (newValue != null) {\r\n let v = newValue[props.valueField];\r\n props.onChangeCallBack(v, newValue);\r\n } else {\r\n props.onChangeCallBack(null, null);\r\n }\r\n }\r\n }}\r\n clearOnBlur\r\n handleHomeEndKeys\r\n getOptionLabel={(option) => {\r\n return option != null ? t(option[props.displayField]) : \"\";\r\n }}\r\n renderOption={(props1, option) => {\r\n return (\r\n <li {...props1}>\r\n {option != null ? t(option[props.displayField]) : \"\"}\r\n </li>\r\n );\r\n }}\r\n slots={{\r\n popper: (props: any) => (\r\n <Popper\r\n {...props}\r\n style={{ ...props.style, direction: AppLayoutState.appDirection }}\r\n />\r\n ),\r\n }}\r\n renderInput={(params) => {\r\n return (\r\n <TextField\r\n {...params}\r\n required={props.required || false}\r\n variant=\"outlined\"\r\n InputLabelProps={{ shrink: true }}\r\n label={t(props.label)}\r\n error={\r\n props.errorMessage != null && props.errorMessage !== undefined\r\n ? true\r\n : false\r\n }\r\n helperText={\r\n props.errorMessage != null && props.errorMessage !== undefined\r\n ? t(props.errorMessage)\r\n : \"\"\r\n }\r\n />\r\n );\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default ComboBox;\r\n","export const DATE_FORMAT = \"YYYY-MM-DD\";\r\nexport const DATE_TIME_FORMAT = \"YYYY-MM-DD HH:mm:ss\";\r\nexport const LIGHT_THEME_INITIAL_MAIN_COLOR = \"#37505C\";\r\nexport const LIGHT_THEME_INITIAL_SECANDARY_COLOR = \"#ff6d00\";\r\nexport const DARK_THEME_INITIAL_MAIN_COLOR = \"#ea690e\";\r\nexport const DARK_THEME_INITIAL_SECANDARY_COLOR = \"#74776B\";\r\n","import { DatePicker, LocalizationProvider } from \"@mui/x-date-pickers\";\r\nimport { AdapterMoment } from \"@mui/x-date-pickers/AdapterMoment\";\r\nimport moment from \"moment\";\r\nimport { DATE_FORMAT } from \"../../../../../util/constants\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ninterface DatefieldProps {\r\n value: string | null;\r\n label: string;\r\n disabled?: boolean;\r\n required?: boolean;\r\n sx?: any;\r\n format?: string;\r\n errorMessage?: any;\r\n onChangeCallBack: Function;\r\n [x: string | number | symbol]: unknown;\r\n}\r\n\r\nconst Datefield: React.FC<DatefieldProps> = (props) => {\r\n const { t } = useTranslation();\r\n return (\r\n <LocalizationProvider dateAdapter={AdapterMoment}>\r\n <DatePicker\r\n value={\r\n props.value != null && props.value !== undefined && props.value !== \"\"\r\n ? moment(props.value, props?.format || DATE_FORMAT)\r\n : null\r\n }\r\n sx={props.sx}\r\n label={t(props.label)}\r\n format={props?.format || DATE_FORMAT}\r\n disabled={props.disabled}\r\n onChange={(momentValue) => {\r\n let v = null;\r\n if (momentValue != null && momentValue.isValid()) {\r\n v = momentValue.format(props?.format || DATE_FORMAT);\r\n }\r\n if (\r\n props.onChangeCallBack !== undefined &&\r\n props.onChangeCallBack != null\r\n ) {\r\n props.onChangeCallBack(v);\r\n }\r\n }}\r\n slotProps={{\r\n textField: {\r\n InputLabelProps: { shrink: true },\r\n variant: \"outlined\",\r\n required: props.required,\r\n error:\r\n props.errorMessage !== undefined && props.errorMessage != null,\r\n helperText:\r\n props.errorMessage !== undefined && props.errorMessage != null ? (\r\n <>{t(props.errorMessage)}</>\r\n ) : (\r\n <></>\r\n ),\r\n },\r\n }}\r\n />\r\n </LocalizationProvider>\r\n );\r\n};\r\n\r\nexport default Datefield;\r\n","import { DateTimePicker, LocalizationProvider } from \"@mui/x-date-pickers\";\r\nimport { AdapterMoment } from \"@mui/x-date-pickers/AdapterMoment\";\r\nimport moment from \"moment\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { DATE_TIME_FORMAT } from \"../../../../../util/constants\";\r\n\r\ninterface DatetimeFieldProps {\r\n value: string | null;\r\n label: string;\r\n disabled?: boolean;\r\n required?: boolean;\r\n format?: string;\r\n sx?: any;\r\n errorMessage?: any;\r\n onChangeCallBack: Function;\r\n [x: string | number | symbol]: unknown;\r\n}\r\n\r\nconst DatetimeField: React.FC<DatetimeFieldProps> = (props) => {\r\n const { t } = useTranslation();\r\n return (\r\n <LocalizationProvider dateAdapter={AdapterMoment}>\r\n <DateTimePicker\r\n value={\r\n props.value != null && props.value !== undefined && props.value !== \"\"\r\n ? moment(props.value, props?.format || DATE_TIME_FORMAT)\r\n : null\r\n }\r\n label={t(props.label)}\r\n sx={props.sx}\r\n format={props?.format || DATE_TIME_FORMAT}\r\n disabled={props.disabled}\r\n onChange={(momentValue) => {\r\n let v = null;\r\n if (momentValue != null && momentValue.isValid()) {\r\n v = momentValue.format(props?.format || DATE_TIME_FORMAT);\r\n }\r\n if (\r\n props.onChangeCallBack !== undefined &&\r\n props.onChangeCallBack != null\r\n ) {\r\n props.onChangeCallBack(v);\r\n }\r\n }}\r\n slotProps={{\r\n textField: {\r\n variant: \"outlined\",\r\n required: props.required,\r\n error:\r\n props.errorMessage !== undefined && props.errorMessage != null,\r\n helperText:\r\n props.errorMessage !== undefined && props.errorMessage != null ? (\r\n <>{t(props.errorMessage)}</>\r\n ) : (\r\n <></>\r\n ),\r\n },\r\n }}\r\n />\r\n </LocalizationProvider>\r\n );\r\n};\r\n\r\nexport default DatetimeField;\r\n","/**\n * WARNING: Don't import this directly. It's imported by the code generated by\n * `@mui/interal-babel-plugin-minify-errors`. Make sure to always use string literals in `Error`\n * constructors to ensure the plugin works as expected. Supported patterns include:\n * throw new Error('My message');\n * throw new Error(`My message: ${foo}`);\n * throw new Error(`My message: ${foo}` + 'another string');\n * ...\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code, ...args) {\n const url = new URL(`https://mui.com/production-error/?code=${code}`);\n args.forEach(arg => url.searchParams.append('args[]', arg));\n return `Minified MUI error #${code}; visit ${url} for the full message.`;\n}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * @license React\n * react-is.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\nSymbol.for(\"react.provider\");\nvar REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction typeOf(object) {\n if (\"object\" === typeof object && null !== object) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n switch (((object = object.type), object)) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n case REACT_VIEW_TRANSITION_TYPE:\n return object;\n default:\n switch (((object = object && object.$$typeof), object)) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n return object;\n case REACT_CONSUMER_TYPE:\n return object;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n}\nexports.ContextConsumer = REACT_CONSUMER_TYPE;\nexports.ContextProvider = REACT_CONTEXT_TYPE;\nexports.Element = REACT_ELEMENT_TYPE;\nexports.ForwardRef = REACT_FORWARD_REF_TYPE;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Lazy = REACT_LAZY_TYPE;\nexports.Memo = REACT_MEMO_TYPE;\nexports.Portal = REACT_PORTAL_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nexports.isContextConsumer = function (object) {\n return typeOf(object) === REACT_CONSUMER_TYPE;\n};\nexports.isContextProvider = function (object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n};\nexports.isElement = function (object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n};\nexports.isForwardRef = function (object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n};\nexports.isFragment = function (object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n};\nexports.isLazy = function (object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n};\nexports.isMemo = function (object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n};\nexports.isPortal = function (object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n};\nexports.isProfiler = function (object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n};\nexports.isStrictMode = function (object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n};\nexports.isSuspense = function (object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n};\nexports.isSuspenseList = function (object) {\n return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n};\nexports.isValidElementType = function (type) {\n return \"string\" === typeof type ||\n \"function\" === typeof type ||\n type === REACT_FRAGMENT_TYPE ||\n type === REACT_PROFILER_TYPE ||\n type === REACT_STRICT_MODE_TYPE ||\n type === REACT_SUSPENSE_TYPE ||\n type === REACT_SUSPENSE_LIST_TYPE ||\n (\"object\" === typeof type &&\n null !== type &&\n (type.$$typeof === REACT_LAZY_TYPE ||\n type.$$typeof === REACT_MEMO_TYPE ||\n type.$$typeof === REACT_CONTEXT_TYPE ||\n type.$$typeof === REACT_CONSUMER_TYPE ||\n type.$$typeof === REACT_FORWARD_REF_TYPE ||\n type.$$typeof === REACT_CLIENT_REFERENCE ||\n void 0 !== type.getModuleId))\n ? !0\n : !1;\n};\nexports.typeOf = typeOf;\n","/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function typeOf(object) {\n if (\"object\" === typeof object && null !== object) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n switch (((object = object.type), object)) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n case REACT_VIEW_TRANSITION_TYPE:\n return object;\n default:\n switch (((object = object && object.$$typeof), object)) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n return object;\n case REACT_CONSUMER_TYPE:\n return object;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n }\n var REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n Symbol.for(\"react.provider\");\n var REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\n exports.ContextConsumer = REACT_CONSUMER_TYPE;\n exports.ContextProvider = REACT_CONTEXT_TYPE;\n exports.Element = REACT_ELEMENT_TYPE;\n exports.ForwardRef = REACT_FORWARD_REF_TYPE;\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.Lazy = REACT_LAZY_TYPE;\n exports.Memo = REACT_MEMO_TYPE;\n exports.Portal = REACT_PORTAL_TYPE;\n exports.Profiler = REACT_PROFILER_TYPE;\n exports.StrictMode = REACT_STRICT_MODE_TYPE;\n exports.Suspense = REACT_SUSPENSE_TYPE;\n exports.SuspenseList = REACT_SUSPENSE_LIST_TYPE;\n exports.isContextConsumer = function (object) {\n return typeOf(object) === REACT_CONSUMER_TYPE;\n };\n exports.isContextProvider = function (object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n };\n exports.isElement = function (object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n };\n exports.isForwardRef = function (object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n };\n exports.isFragment = function (object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n };\n exports.isLazy = function (object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n };\n exports.isMemo = function (object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n };\n exports.isPortal = function (object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n };\n exports.isProfiler = function (object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n };\n exports.isStrictMode = function (object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n };\n exports.isSuspense = function (object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n };\n exports.isSuspenseList = function (object) {\n return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n };\n exports.isValidElementType = function (type) {\n return \"string\" === typeof type ||\n \"function\" === typeof type ||\n type === REACT_FRAGMENT_TYPE ||\n type === REACT_PROFILER_TYPE ||\n type === REACT_STRICT_MODE_TYPE ||\n type === REACT_SUSPENSE_TYPE ||\n type === REACT_SUSPENSE_LIST_TYPE ||\n (\"object\" === typeof type &&\n null !== type &&\n (type.$$typeof === REACT_LAZY_TYPE ||\n type.$$typeof === REACT_MEMO_TYPE ||\n type.$$typeof === REACT_CONTEXT_TYPE ||\n type.$$typeof === REACT_CONSUMER_TYPE ||\n type.$$typeof === REACT_FORWARD_REF_TYPE ||\n type.$$typeof === REACT_CLIENT_REFERENCE ||\n void 0 !== type.getModuleId))\n ? !0\n : !1;\n };\n exports.typeOf = typeOf;\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import * as React from 'react';\nimport { isValidElementType } from 'react-is';\n\n// https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\nexport function isPlainObject(item) {\n if (typeof item !== 'object' || item === null) {\n return false;\n }\n const prototype = Object.getPrototypeOf(item);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in item) && !(Symbol.iterator in item);\n}\nfunction deepClone(source) {\n if (/*#__PURE__*/React.isValidElement(source) || isValidElementType(source) || !isPlainObject(source)) {\n return source;\n }\n const output = {};\n Object.keys(source).forEach(key => {\n output[key] = deepClone(source[key]);\n });\n return output;\n}\n\n/**\n * Merge objects deeply.\n * It will shallow copy React elements.\n *\n * If `options.clone` is set to `false` the source object will be merged directly into the target object.\n *\n * @example\n * ```ts\n * deepmerge({ a: { b: 1 }, d: 2 }, { a: { c: 2 }, d: 4 });\n * // => { a: { b: 1, c: 2 }, d: 4 }\n * ````\n *\n * @param target The target object.\n * @param source The source object.\n * @param options The merge options.\n * @param options.clone Set to `false` to merge the source object directly into the target object.\n * @returns The merged object.\n */\nexport default function deepmerge(target, source, options = {\n clone: true\n}) {\n const output = options.clone ? {\n ...target\n } : target;\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(key => {\n if (/*#__PURE__*/React.isValidElement(source[key]) || isValidElementType(source[key])) {\n output[key] = source[key];\n } else if (isPlainObject(source[key]) &&\n // Avoid prototype pollution\n Object.prototype.hasOwnProperty.call(target, key) && isPlainObject(target[key])) {\n // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n output[key] = deepmerge(target[key], source[key], options);\n } else if (options.clone) {\n output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n } else {\n output[key] = source[key];\n }\n });\n }\n return output;\n}","// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n const breakpointsAsArray = Object.keys(values).map(key => ({\n key,\n val: values[key]\n })) || [];\n // Sort in ascending order\n breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n return breakpointsAsArray.reduce((acc, obj) => {\n return {\n ...acc,\n [obj.key]: obj.val\n };\n }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n const {\n // The breakpoint **start** at this value.\n // For instance with the first breakpoint xs: [xs, sm).\n values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n },\n unit = 'px',\n step = 5,\n ...other\n } = breakpoints;\n const sortedValues = sortBreakpointsValues(values);\n const keys = Object.keys(sortedValues);\n function up(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (min-width:${value}${unit})`;\n }\n function down(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (max-width:${value - step / 100}${unit})`;\n }\n function between(start, end) {\n const endIndex = keys.indexOf(end);\n return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n }\n function only(key) {\n if (keys.indexOf(key) + 1 < keys.length) {\n return between(key, keys[keys.indexOf(key) + 1]);\n }\n return up(key);\n }\n function not(key) {\n // handle first and last key separately, for better readability\n const keyIndex = keys.indexOf(key);\n if (keyIndex === 0) {\n return up(keys[1]);\n }\n if (keyIndex === keys.length - 1) {\n return down(keys[keyIndex]);\n }\n return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n }\n return {\n keys,\n values: sortedValues,\n up,\n down,\n between,\n only,\n not,\n unit,\n ...other\n };\n}","const shape = {\n borderRadius: 4\n};\nexport default shape;","import PropTypes from 'prop-types';\nconst responsivePropType = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.object, PropTypes.array]) : {};\nexport default responsivePropType;","import deepmerge from '@mui/utils/deepmerge';\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n });\n}\nexport default merge;","import PropTypes from 'prop-types';\nimport deepmerge from '@mui/utils/deepmerge';\nimport merge from \"../merge/index.js\";\nimport { isCqShorthand, getContainerQuery } from \"../cssContainerQueries/index.js\";\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n};\nconst defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: key => `@media (min-width:${values[key]}px)`\n};\nconst defaultContainerQueries = {\n containerQueries: containerName => ({\n up: key => {\n let result = typeof key === 'number' ? key : values[key] || key;\n if (typeof result === 'number') {\n result = `${result}px`;\n }\n return containerName ? `@container ${containerName} (min-width:${result})` : `@container (min-width:${result})`;\n }\n })\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n const theme = props.theme || {};\n if (Array.isArray(propValue)) {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return propValue.reduce((acc, item, index) => {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n if (typeof propValue === 'object') {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return Object.keys(propValue).reduce((acc, breakpoint) => {\n if (isCqShorthand(themeBreakpoints.keys, breakpoint)) {\n const containerKey = getContainerQuery(theme.containerQueries ? theme : defaultContainerQueries, breakpoint);\n if (containerKey) {\n acc[containerKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n }\n }\n // key is breakpoint\n else if (Object.keys(themeBreakpoints.values || values).includes(breakpoint)) {\n const mediaKey = themeBreakpoints.up(breakpoint);\n acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n } else {\n const cssKey = breakpoint;\n acc[cssKey] = propValue[cssKey];\n }\n return acc;\n }, {});\n }\n const output = styleFromPropValue(propValue);\n return output;\n}\nfunction breakpoints(styleFunction) {\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const newStyleFunction = props => {\n const theme = props.theme || {};\n const base = styleFunction(props);\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n const extended = themeBreakpoints.keys.reduce((acc, key) => {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction({\n theme,\n ...props[key]\n });\n }\n return acc;\n }, null);\n return merge(base, extended);\n };\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? {\n ...styleFunction.propTypes,\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n } : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n const breakpointsInOrder = breakpointsInput.keys?.reduce((acc, key) => {\n const breakpointStyleKey = breakpointsInput.up(key);\n acc[breakpointStyleKey] = {};\n return acc;\n }, {});\n return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n return breakpointKeys.reduce((acc, key) => {\n const breakpointOutput = acc[key];\n const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n if (isBreakpointUnused) {\n delete acc[key];\n }\n return acc;\n }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n // fixed value\n if (typeof breakpointValues !== 'object') {\n return {};\n }\n const base = {};\n const breakpointsKeys = Object.keys(themeBreakpoints);\n if (Array.isArray(breakpointValues)) {\n breakpointsKeys.forEach((breakpoint, i) => {\n if (i < breakpointValues.length) {\n base[breakpoint] = true;\n }\n });\n } else {\n breakpointsKeys.forEach(breakpoint => {\n if (breakpointValues[breakpoint] != null) {\n base[breakpoint] = true;\n }\n });\n }\n return base;\n}\nexport function resolveBreakpointValues({\n values: breakpointValues,\n breakpoints: themeBreakpoints,\n base: customBase\n}) {\n const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n const keys = Object.keys(base);\n if (keys.length === 0) {\n return breakpointValues;\n }\n let previous;\n return keys.reduce((acc, breakpoint, i) => {\n if (Array.isArray(breakpointValues)) {\n acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n previous = i;\n } else if (typeof breakpointValues === 'object') {\n acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n previous = breakpoint;\n } else {\n acc[breakpoint] = breakpointValues;\n }\n return acc;\n }, {});\n}\nexport default breakpoints;","import _formatErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n/**\n * For using in `sx` prop to sort the breakpoint from low to high.\n * Note: this function does not work and will not support multiple units.\n * e.g. input: { '@container (min-width:300px)': '1rem', '@container (min-width:40rem)': '2rem' }\n * output: { '@container (min-width:40rem)': '2rem', '@container (min-width:300px)': '1rem' } // since 40 < 300 eventhough 40rem > 300px\n */\nexport function sortContainerQueries(theme, css) {\n if (!theme.containerQueries) {\n return css;\n }\n const sorted = Object.keys(css).filter(key => key.startsWith('@container')).sort((a, b) => {\n const regex = /min-width:\\s*([0-9.]+)/;\n return +(a.match(regex)?.[1] || 0) - +(b.match(regex)?.[1] || 0);\n });\n if (!sorted.length) {\n return css;\n }\n return sorted.reduce((acc, key) => {\n const value = css[key];\n delete acc[key];\n acc[key] = value;\n return acc;\n }, {\n ...css\n });\n}\nexport function isCqShorthand(breakpointKeys, value) {\n return value === '@' || value.startsWith('@') && (breakpointKeys.some(key => value.startsWith(`@${key}`)) || !!value.match(/^@\\d/));\n}\nexport function getContainerQuery(theme, shorthand) {\n const matches = shorthand.match(/^@([^/]+)?\\/?(.+)?$/);\n if (!matches) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The provided shorthand ${`(${shorthand})`} is invalid. The format should be \\`@<breakpoint | number>\\` or \\`@<breakpoint | number>/<container>\\`.\\n` + 'For example, `@sm` or `@600` or `@40rem/sidebar`.' : _formatErrorMessage(18, `(${shorthand})`));\n }\n return null;\n }\n const [, containerQuery, containerName] = matches;\n const value = Number.isNaN(+containerQuery) ? containerQuery || 0 : +containerQuery;\n return theme.containerQueries(containerName).up(value);\n}\nexport default function cssContainerQueries(themeInput) {\n const toContainerQuery = (mediaQuery, name) => mediaQuery.replace('@media', name ? `@container ${name}` : '@container');\n function attachCq(node, name) {\n node.up = (...args) => toContainerQuery(themeInput.breakpoints.up(...args), name);\n node.down = (...args) => toContainerQuery(themeInput.breakpoints.down(...args), name);\n node.between = (...args) => toContainerQuery(themeInput.breakpoints.between(...args), name);\n node.only = (...args) => toContainerQuery(themeInput.breakpoints.only(...args), name);\n node.not = (...args) => {\n const result = toContainerQuery(themeInput.breakpoints.not(...args), name);\n if (result.includes('not all and')) {\n // `@container` does not work with `not all and`, so need to invert the logic\n return result.replace('not all and ', '').replace('min-width:', 'width<').replace('max-width:', 'width>').replace('and', 'or');\n }\n return result;\n };\n }\n const node = {};\n const containerQueries = name => {\n attachCq(node, name);\n return node;\n };\n attachCq(containerQueries);\n return {\n ...themeInput,\n containerQueries\n };\n}","import _formatErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'MUI: `capitalize(string)` expects a string argument.' : _formatErrorMessage(7));\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","import capitalize from '@mui/utils/capitalize';\nimport responsivePropType from \"../responsivePropType/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nexport function getPath(obj, path, checkVars = true) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n\n // Check if CSS variables are used\n if (obj && obj.vars && checkVars) {\n const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n if (val != null) {\n return val;\n }\n }\n return path.split('.').reduce((acc, item) => {\n if (acc && acc[item] != null) {\n return acc[item];\n }\n return null;\n }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n let value;\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || userValue;\n } else {\n value = getPath(themeMapping, propValueFinal) || userValue;\n }\n if (transform) {\n value = transform(value, userValue, themeMapping);\n }\n return value;\n}\nfunction style(options) {\n const {\n prop,\n cssProperty = options.prop,\n themeKey,\n transform\n } = options;\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n if (props[prop] == null) {\n return null;\n }\n const propValue = props[prop];\n const theme = props.theme;\n const themeMapping = getPath(theme, themeKey) || {};\n const styleFromPropValue = propValueFinal => {\n let value = getStyleValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n [prop]: responsivePropType\n } : {};\n fn.filterProps = [prop];\n return fn;\n}\nexport default style;","import responsivePropType from \"../responsivePropType/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nimport { getPath } from \"../style/index.js\";\nimport merge from \"../merge/index.js\";\nimport memoize from \"../memoize/index.js\";\nconst properties = {\n m: 'margin',\n p: 'padding'\n};\nconst directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nconst aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n const [a, b] = prop.split('');\n const property = properties[a];\n const direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n const themeSpacing = getPath(theme, themeKey, true) ?? defaultValue;\n if (typeof themeSpacing === 'number' || typeof themeSpacing === 'string') {\n return val => {\n if (typeof val === 'string') {\n return val;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (typeof val !== 'number') {\n console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${val}.`);\n }\n }\n if (typeof themeSpacing === 'string') {\n if (themeSpacing.startsWith('var(') && val === 0) {\n return 0;\n }\n if (themeSpacing.startsWith('var(') && val === 1) {\n return themeSpacing;\n }\n return `calc(${val} * ${themeSpacing})`;\n }\n return themeSpacing * val;\n };\n }\n if (Array.isArray(themeSpacing)) {\n return val => {\n if (typeof val === 'string') {\n return val;\n }\n const abs = Math.abs(val);\n if (process.env.NODE_ENV !== 'production') {\n if (!Number.isInteger(abs)) {\n console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n } else if (abs > themeSpacing.length - 1) {\n console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n }\n }\n const transformed = themeSpacing[abs];\n if (val >= 0) {\n return transformed;\n }\n if (typeof transformed === 'number') {\n return -transformed;\n }\n if (typeof transformed === 'string' && transformed.startsWith('var(')) {\n return `calc(-1 * ${transformed})`;\n }\n return `-${transformed}`;\n };\n }\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n if (process.env.NODE_ENV !== 'production') {\n console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n }\n return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n return transformer(propValue);\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n return propValue => cssProperties.reduce((acc, cssProperty) => {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (!keys.includes(prop)) {\n return null;\n }\n const cssProperties = getCssProperties(prop);\n const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n const propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n const transformer = createUnarySpacing(props.theme);\n return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n const cache = {};\n return arg => {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n return cache[arg];\n };\n}","import merge from \"../merge/index.js\";\nfunction compose(...styles) {\n const handlers = styles.reduce((acc, style) => {\n style.filterProps.forEach(prop => {\n acc[prop] = style;\n });\n return acc;\n }, {});\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n return Object.keys(props).reduce((acc, prop) => {\n if (handlers[prop]) {\n return merge(acc, handlers[prop](props));\n }\n return acc;\n }, {});\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n return fn;\n}\nexport default compose;","import responsivePropType from \"../responsivePropType/index.js\";\nimport style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { createUnaryUnit, getValue } from \"../spacing/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nexport function borderTransform(value) {\n if (typeof value !== 'number') {\n return value;\n }\n return `${value}px solid`;\n}\nfunction createBorderStyle(prop, transform) {\n return style({\n prop,\n themeKey: 'borders',\n transform\n });\n}\nexport const border = createBorderStyle('border', borderTransform);\nexport const borderTop = createBorderStyle('borderTop', borderTransform);\nexport const borderRight = createBorderStyle('borderRight', borderTransform);\nexport const borderBottom = createBorderStyle('borderBottom', borderTransform);\nexport const borderLeft = createBorderStyle('borderLeft', borderTransform);\nexport const borderColor = createBorderStyle('borderColor');\nexport const borderTopColor = createBorderStyle('borderTopColor');\nexport const borderRightColor = createBorderStyle('borderRightColor');\nexport const borderBottomColor = createBorderStyle('borderBottomColor');\nexport const borderLeftColor = createBorderStyle('borderLeftColor');\nexport const outline = createBorderStyle('outline', borderTransform);\nexport const outlineColor = createBorderStyle('outlineColor');\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n if (props.borderRadius !== undefined && props.borderRadius !== null) {\n const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n const styleFromPropValue = propValue => ({\n borderRadius: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n }\n return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius, outline, outlineColor);\nexport default borders;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { createUnaryUnit, getValue } from \"../spacing/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nimport responsivePropType from \"../responsivePropType/index.js\";\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n if (props.gap !== undefined && props.gap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n const styleFromPropValue = propValue => ({\n gap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.gap, styleFromPropValue);\n }\n return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n if (props.columnGap !== undefined && props.columnGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n const styleFromPropValue = propValue => ({\n columnGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n }\n return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n if (props.rowGap !== undefined && props.rowGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n const styleFromPropValue = propValue => ({\n rowGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n }\n return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n prop: 'gridColumn'\n});\nexport const gridRow = style({\n prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nexport function paletteTransform(value, userValue) {\n if (userValue === 'grey') {\n return userValue;\n }\n return value;\n}\nexport const color = style({\n prop: 'color',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const backgroundColor = style({\n prop: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { handleBreakpoints, values as breakpointsValues } from \"../breakpoints/index.js\";\nexport function sizingTransform(value) {\n return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n prop: 'width',\n transform: sizingTransform\n});\nexport const maxWidth = props => {\n if (props.maxWidth !== undefined && props.maxWidth !== null) {\n const styleFromPropValue = propValue => {\n const breakpoint = props.theme?.breakpoints?.values?.[propValue] || breakpointsValues[propValue];\n if (!breakpoint) {\n return {\n maxWidth: sizingTransform(propValue)\n };\n }\n if (props.theme?.breakpoints?.unit !== 'px') {\n return {\n maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`\n };\n }\n return {\n maxWidth: breakpoint\n };\n };\n return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n }\n return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n prop: 'minWidth',\n transform: sizingTransform\n});\nexport const height = style({\n prop: 'height',\n transform: sizingTransform\n});\nexport const maxHeight = style({\n prop: 'maxHeight',\n transform: sizingTransform\n});\nexport const minHeight = style({\n prop: 'minHeight',\n transform: sizingTransform\n});\nexport const sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform: sizingTransform\n});\nexport const sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform: sizingTransform\n});\nexport const boxSizing = style({\n prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import { padding, margin } from \"../spacing/index.js\";\nimport { borderRadius, borderTransform } from \"../borders/index.js\";\nimport { gap, rowGap, columnGap } from \"../cssGrid/index.js\";\nimport { paletteTransform } from \"../palette/index.js\";\nimport { maxWidth, sizingTransform } from \"../sizing/index.js\";\nconst defaultSxConfig = {\n // borders\n border: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderTop: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderRight: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderBottom: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderLeft: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderColor: {\n themeKey: 'palette'\n },\n borderTopColor: {\n themeKey: 'palette'\n },\n borderRightColor: {\n themeKey: 'palette'\n },\n borderBottomColor: {\n themeKey: 'palette'\n },\n borderLeftColor: {\n themeKey: 'palette'\n },\n outline: {\n themeKey: 'borders',\n transform: borderTransform\n },\n outlineColor: {\n themeKey: 'palette'\n },\n borderRadius: {\n themeKey: 'shape.borderRadius',\n style: borderRadius\n },\n // palette\n color: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n bgcolor: {\n themeKey: 'palette',\n cssProperty: 'backgroundColor',\n transform: paletteTransform\n },\n backgroundColor: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n // spacing\n p: {\n style: padding\n },\n pt: {\n style: padding\n },\n pr: {\n style: padding\n },\n pb: {\n style: padding\n },\n pl: {\n style: padding\n },\n px: {\n style: padding\n },\n py: {\n style: padding\n },\n padding: {\n style: padding\n },\n paddingTop: {\n style: padding\n },\n paddingRight: {\n style: padding\n },\n paddingBottom: {\n style: padding\n },\n paddingLeft: {\n style: padding\n },\n paddingX: {\n style: padding\n },\n paddingY: {\n style: padding\n },\n paddingInline: {\n style: padding\n },\n paddingInlineStart: {\n style: padding\n },\n paddingInlineEnd: {\n style: padding\n },\n paddingBlock: {\n style: padding\n },\n paddingBlockStart: {\n style: padding\n },\n paddingBlockEnd: {\n style: padding\n },\n m: {\n style: margin\n },\n mt: {\n style: margin\n },\n mr: {\n style: margin\n },\n mb: {\n style: margin\n },\n ml: {\n style: margin\n },\n mx: {\n style: margin\n },\n my: {\n style: margin\n },\n margin: {\n style: margin\n },\n marginTop: {\n style: margin\n },\n marginRight: {\n style: margin\n },\n marginBottom: {\n style: margin\n },\n marginLeft: {\n style: margin\n },\n marginX: {\n style: margin\n },\n marginY: {\n style: margin\n },\n marginInline: {\n style: margin\n },\n marginInlineStart: {\n style: margin\n },\n marginInlineEnd: {\n style: margin\n },\n marginBlock: {\n style: margin\n },\n marginBlockStart: {\n style: margin\n },\n marginBlockEnd: {\n style: margin\n },\n // display\n displayPrint: {\n cssProperty: false,\n transform: value => ({\n '@media print': {\n display: value\n }\n })\n },\n display: {},\n overflow: {},\n textOverflow: {},\n visibility: {},\n whiteSpace: {},\n // flexbox\n flexBasis: {},\n flexDirection: {},\n flexWrap: {},\n justifyContent: {},\n alignItems: {},\n alignContent: {},\n order: {},\n flex: {},\n flexGrow: {},\n flexShrink: {},\n alignSelf: {},\n justifyItems: {},\n justifySelf: {},\n // grid\n gap: {\n style: gap\n },\n rowGap: {\n style: rowGap\n },\n columnGap: {\n style: columnGap\n },\n gridColumn: {},\n gridRow: {},\n gridAutoFlow: {},\n gridAutoColumns: {},\n gridAutoRows: {},\n gridTemplateColumns: {},\n gridTemplateRows: {},\n gridTemplateAreas: {},\n gridArea: {},\n // positions\n position: {},\n zIndex: {\n themeKey: 'zIndex'\n },\n top: {},\n right: {},\n bottom: {},\n left: {},\n // shadows\n boxShadow: {\n themeKey: 'shadows'\n },\n // sizing\n width: {\n transform: sizingTransform\n },\n maxWidth: {\n style: maxWidth\n },\n minWidth: {\n transform: sizingTransform\n },\n height: {\n transform: sizingTransform\n },\n maxHeight: {\n transform: sizingTransform\n },\n minHeight: {\n transform: sizingTransform\n },\n boxSizing: {},\n // typography\n font: {\n themeKey: 'font'\n },\n fontFamily: {\n themeKey: 'typography'\n },\n fontSize: {\n themeKey: 'typography'\n },\n fontStyle: {\n themeKey: 'typography'\n },\n fontWeight: {\n themeKey: 'typography'\n },\n letterSpacing: {},\n textTransform: {},\n lineHeight: {},\n textAlign: {},\n typography: {\n cssProperty: false,\n themeKey: 'typography'\n }\n};\nexport default defaultSxConfig;","import capitalize from '@mui/utils/capitalize';\nimport merge from \"../merge/index.js\";\nimport { getPath, getStyleValue as getValue } from \"../style/index.js\";\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from \"../breakpoints/index.js\";\nimport { sortContainerQueries } from \"../cssContainerQueries/index.js\";\nimport defaultSxConfig from \"./defaultSxConfig.js\";\nfunction objectsHaveSameKeys(...objects) {\n const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n const union = new Set(allKeys);\n return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n function getThemeValue(prop, val, theme, config) {\n const props = {\n [prop]: val,\n theme\n };\n const options = config[prop];\n if (!options) {\n return {\n [prop]: val\n };\n }\n const {\n cssProperty = prop,\n themeKey,\n transform,\n style\n } = options;\n if (val == null) {\n return null;\n }\n\n // TODO v6: remove, see https://github.com/mui/material-ui/pull/38123\n if (themeKey === 'typography' && val === 'inherit') {\n return {\n [prop]: val\n };\n }\n const themeMapping = getPath(theme, themeKey) || {};\n if (style) {\n return style(props);\n }\n const styleFromPropValue = propValueFinal => {\n let value = getValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, val, styleFromPropValue);\n }\n function styleFunctionSx(props) {\n const {\n sx,\n theme = {}\n } = props || {};\n if (!sx) {\n return null; // Emotion & styled-components will neglect null\n }\n const config = theme.unstable_sxConfig ?? defaultSxConfig;\n\n /*\n * Receive `sxInput` as object or callback\n * and then recursively check keys & values to create media query object styles.\n * (the result will be used in `styled`)\n */\n function traverse(sxInput) {\n let sxObject = sxInput;\n if (typeof sxInput === 'function') {\n sxObject = sxInput(theme);\n } else if (typeof sxInput !== 'object') {\n // value\n return sxInput;\n }\n if (!sxObject) {\n return null;\n }\n const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n const breakpointsKeys = Object.keys(emptyBreakpoints);\n let css = emptyBreakpoints;\n Object.keys(sxObject).forEach(styleKey => {\n const value = callIfFn(sxObject[styleKey], theme);\n if (value !== null && value !== undefined) {\n if (typeof value === 'object') {\n if (config[styleKey]) {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n } else {\n const breakpointsValues = handleBreakpoints({\n theme\n }, value, x => ({\n [styleKey]: x\n }));\n if (objectsHaveSameKeys(breakpointsValues, value)) {\n css[styleKey] = styleFunctionSx({\n sx: value,\n theme\n });\n } else {\n css = merge(css, breakpointsValues);\n }\n }\n } else {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n }\n }\n });\n return sortContainerQueries(theme, removeUnusedBreakpoints(breakpointsKeys, css));\n }\n return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n }\n return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","/**\n * A universal utility to style components with multiple color modes. Always use it from the theme object.\n * It works with:\n * - [Basic theme](https://mui.com/material-ui/customization/dark-mode/)\n * - [CSS theme variables](https://mui.com/material-ui/customization/css-theme-variables/overview/)\n * - Zero-runtime engine\n *\n * Tips: Use an array over object spread and place `theme.applyStyles()` last.\n *\n * With the styled function:\n * ✅ [{ background: '#e5e5e5' }, theme.applyStyles('dark', { background: '#1c1c1c' })]\n * 🚫 { background: '#e5e5e5', ...theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * With the sx prop:\n * ✅ [{ background: '#e5e5e5' }, theme => theme.applyStyles('dark', { background: '#1c1c1c' })]\n * 🚫 { background: '#e5e5e5', ...theme => theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * @example\n * 1. using with `styled`:\n * ```jsx\n * const Component = styled('div')(({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]);\n * ```\n *\n * @example\n * 2. using with `sx` prop:\n * ```jsx\n * <Box sx={[\n * { background: '#e5e5e5' },\n * theme => theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]}\n * />\n * ```\n *\n * @example\n * 3. theming a component:\n * ```jsx\n * extendTheme({\n * components: {\n * MuiButton: {\n * styleOverrides: {\n * root: ({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ],\n * },\n * }\n * }\n * })\n *```\n */\nexport default function applyStyles(key, styles) {\n // @ts-expect-error this is 'any' type\n const theme = this;\n if (theme.vars) {\n if (!theme.colorSchemes?.[key] || typeof theme.getColorSchemeSelector !== 'function') {\n return {};\n }\n // If CssVarsProvider is used as a provider, returns '*:where({selector}) &'\n let selector = theme.getColorSchemeSelector(key);\n if (selector === '&') {\n return styles;\n }\n if (selector.includes('data-') || selector.includes('.')) {\n // '*' is required as a workaround for Emotion issue (https://github.com/emotion-js/emotion/issues/2836)\n selector = `*:where(${selector.replace(/\\s*&$/, '')}) &`;\n }\n return {\n [selector]: styles\n };\n }\n if (theme.palette.mode === key) {\n return styles;\n }\n return {};\n}","'use client';\n\nimport * as React from 'react';\nimport { ThemeContext } from '@mui/styled-engine';\nfunction isObjectEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n const contextTheme = React.useContext(ThemeContext);\n return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nexport default useTheme;","'use client';\n\nimport createTheme from \"../createTheme/index.js\";\nimport useThemeWithoutDefault from \"../useThemeWithoutDefault/index.js\";\nexport const systemDefaultTheme = createTheme();\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n return useThemeWithoutDefault(defaultTheme);\n}\nexport default useTheme;","import deepmerge from '@mui/utils/deepmerge';\nimport createBreakpoints from \"../createBreakpoints/createBreakpoints.js\";\nimport cssContainerQueries from \"../cssContainerQueries/index.js\";\nimport shape from \"./shape.js\";\nimport createSpacing from \"./createSpacing.js\";\nimport styleFunctionSx from \"../styleFunctionSx/styleFunctionSx.js\";\nimport defaultSxConfig from \"../styleFunctionSx/defaultSxConfig.js\";\nimport applyStyles from \"./applyStyles.js\";\nfunction createTheme(options = {}, ...args) {\n const {\n breakpoints: breakpointsInput = {},\n palette: paletteInput = {},\n spacing: spacingInput,\n shape: shapeInput = {},\n ...other\n } = options;\n const breakpoints = createBreakpoints(breakpointsInput);\n const spacing = createSpacing(spacingInput);\n let muiTheme = deepmerge({\n breakpoints,\n direction: 'ltr',\n components: {},\n // Inject component definitions.\n palette: {\n mode: 'light',\n ...paletteInput\n },\n spacing,\n shape: {\n ...shape,\n ...shapeInput\n }\n }, other);\n muiTheme = cssContainerQueries(muiTheme);\n muiTheme.applyStyles = applyStyles;\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n muiTheme.unstable_sxConfig = {\n ...defaultSxConfig,\n ...other?.unstable_sxConfig\n };\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nexport default createTheme;","import { createUnarySpacing } from \"../spacing/index.js\";\n\n// The different signatures imply different meaning for their arguments that can't be expressed structurally.\n// We express the difference with variable names.\n\nexport default function createSpacing(spacingInput = 8,\n// Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n// Smaller components, such as icons, can align to a 4dp grid.\n// https://m2.material.io/design/layout/understanding-layout.html\ntransform = createUnarySpacing({\n spacing: spacingInput\n})) {\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n }\n const spacing = (...argsInput) => {\n if (process.env.NODE_ENV !== 'production') {\n if (!(argsInput.length <= 4)) {\n console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n }\n }\n const args = argsInput.length === 0 ? [1] : argsInput;\n return args.map(argument => {\n const output = transform(argument);\n return typeof output === 'number' ? `${output}px` : output;\n }).join(' ');\n };\n spacing.mui = true;\n return spacing;\n}","import { isPlainObject } from '@mui/utils/deepmerge';\nimport defaultSxConfig from \"./defaultSxConfig.js\";\nconst splitProps = props => {\n const result = {\n systemProps: {},\n otherProps: {}\n };\n const config = props?.theme?.unstable_sxConfig ?? defaultSxConfig;\n Object.keys(props).forEach(prop => {\n if (config[prop]) {\n result.systemProps[prop] = props[prop];\n } else {\n result.otherProps[prop] = props[prop];\n }\n });\n return result;\n};\nexport default function extendSxProp(props) {\n const {\n sx: inSx,\n ...other\n } = props;\n const {\n systemProps,\n otherProps\n } = splitProps(other);\n let finalSx;\n if (Array.isArray(inSx)) {\n finalSx = [systemProps, ...inSx];\n } else if (typeof inSx === 'function') {\n finalSx = (...args) => {\n const result = inSx(...args);\n if (!isPlainObject(result)) {\n return systemProps;\n }\n return {\n ...systemProps,\n ...result\n };\n };\n } else {\n finalSx = {\n ...systemProps,\n ...inSx\n };\n }\n return {\n ...otherProps,\n sx: finalSx\n };\n}","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n let generate = defaultGenerator;\n return {\n configure(generator) {\n generate = generator;\n },\n generate(componentName) {\n return generate(componentName);\n },\n reset() {\n generate = defaultGenerator;\n }\n };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import ClassNameGenerator from \"../ClassNameGenerator/index.js\";\nexport const globalStateClasses = {\n active: 'active',\n checked: 'checked',\n completed: 'completed',\n disabled: 'disabled',\n error: 'error',\n expanded: 'expanded',\n focused: 'focused',\n focusVisible: 'focusVisible',\n open: 'open',\n readOnly: 'readOnly',\n required: 'required',\n selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n const globalStateClass = globalStateClasses[slot];\n return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n return globalStateClasses[slot] !== undefined;\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nconst boxClasses = generateUtilityClasses('MuiBox', ['root']);\nexport default boxClasses;","'use client';\n\nimport PropTypes from 'prop-types';\nimport ClassNameGenerator from '@mui/utils/ClassNameGenerator';\nimport createBox from \"../createBox/index.js\";\nimport boxClasses from \"./boxClasses.js\";\nconst Box = createBox({\n defaultClassName: boxClasses.root,\n generateClassName: ClassNameGenerator.generate\n});\nprocess.env.NODE_ENV !== \"production\" ? Box.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Box;","'use client';\n\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport styled from '@mui/styled-engine';\nimport styleFunctionSx, { extendSxProp } from \"../styleFunctionSx/index.js\";\nimport useTheme from \"../useTheme/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createBox(options = {}) {\n const {\n themeId,\n defaultTheme,\n defaultClassName = 'MuiBox-root',\n generateClassName\n } = options;\n const BoxRoot = styled('div', {\n shouldForwardProp: prop => prop !== 'theme' && prop !== 'sx' && prop !== 'as'\n })(styleFunctionSx);\n const Box = /*#__PURE__*/React.forwardRef(function Box(inProps, ref) {\n const theme = useTheme(defaultTheme);\n const {\n className,\n component = 'div',\n ...other\n } = extendSxProp(inProps);\n return /*#__PURE__*/_jsx(BoxRoot, {\n as: component,\n ref: ref,\n className: clsx(className, generateClassName ? generateClassName(defaultClassName) : defaultClassName),\n theme: themeId ? theme[themeId] || theme : theme,\n ...other\n });\n });\n return Box;\n}","/**\n * @mui/styled-engine v7.1.1\n *\n * @license MIT\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use client';\n\n/* eslint-disable no-underscore-dangle */\nimport emStyled from '@emotion/styled';\nimport { serializeStyles as emSerializeStyles } from '@emotion/serialize';\nexport default function styled(tag, options) {\n const stylesFactory = emStyled(tag, options);\n if (process.env.NODE_ENV !== 'production') {\n return (...styles) => {\n const component = typeof tag === 'string' ? `\"${tag}\"` : 'component';\n if (styles.length === 0) {\n console.error([`MUI: Seems like you called \\`styled(${component})()\\` without a \\`style\\` argument.`, 'You must provide a `styles` argument: `styled(\"div\")(styleYouForgotToPass)`.'].join('\\n'));\n } else if (styles.some(style => style === undefined)) {\n console.error(`MUI: the styled(${component})(...args) API requires all its args to be defined.`);\n }\n return stylesFactory(...styles);\n };\n }\n return stylesFactory;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function internal_mutateStyles(tag, processor) {\n // Emotion attaches all the styles as `__emotion_styles`.\n // Ref: https://github.com/emotion-js/emotion/blob/16d971d0da229596d6bcc39d282ba9753c9ee7cf/packages/styled/src/base.js#L186\n if (Array.isArray(tag.__emotion_styles)) {\n tag.__emotion_styles = processor(tag.__emotion_styles);\n }\n}\n\n// Emotion only accepts an array, but we want to avoid allocations\nconst wrapper = [];\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function internal_serializeStyles(styles) {\n wrapper[0] = styles;\n return emSerializeStyles(wrapper);\n}\nexport { ThemeContext, keyframes, css } from '@emotion/react';\nexport { default as StyledEngineProvider } from \"./StyledEngineProvider/index.js\";\nexport { default as GlobalStyles } from \"./GlobalStyles/index.js\";","import generateUtilityClass from \"../generateUtilityClass/index.js\";\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n });\n return result;\n}","export function hasDigitsOnly(str: string) {\r\n return /^\\d+$/.test(str);\r\n}\r\n\r\nexport function isNumber(value: any) {\r\n return typeof value === \"number\" && !isNaN(value);\r\n}\r\n\r\nexport function isNumeric(value: string) {\r\n return (\r\n typeof value === \"string\" && value.trim() !== \"\" && !isNaN(Number(value))\r\n );\r\n}\r\n\r\nexport function capitalizeFirstLetter(str: string) {\r\n if (!str) return \"\";\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n}\r\n\r\nexport function isValidEmail(email) {\r\n const re = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n return re.test(email);\r\n}\r\n","import { useEffect, useState } from \"react\";\r\nimport { useAxios, useSession } from \"../../../../../hooks\";\r\nimport ComboBox from \"./ComboBox\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\ntype SystemLookupListProps = {\r\n lookupType: string;\r\n value: any;\r\n onChangeCallBack: Function;\r\n label: string;\r\n disabled?: boolean;\r\n required?: boolean;\r\n errorMessage?: any;\r\n sx?: any;\r\n};\r\n\r\nconst SystemLookupCombobox: React.FC<SystemLookupListProps> = (props) => {\r\n const AppLayout = useSelector((state: any) => state.AppLayout);\r\n const session = useSession();\r\n const [options, setOptions] = useState<Array<any>>([]);\r\n const { handleGetRequest } = useAxios();\r\n\r\n const loadLookupOptions = async () => {\r\n await handleGetRequest({\r\n endPointURI: \"api/v1/dev/system/lookup\",\r\n showMask: true,\r\n parameters: { lookupType: props.lookupType },\r\n successCallBkFn: (response: any) => {\r\n setOptions(response.data);\r\n },\r\n failureCallBkFn: () => {\r\n setOptions([]);\r\n },\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (props.lookupType) {\r\n loadLookupOptions();\r\n }\r\n }, [props.lookupType, session.UserSession]);\r\n\r\n return (\r\n <ComboBox\r\n {...props}\r\n options={options}\r\n displayField={\r\n AppLayout.appDirection === \"ltr\" ? \"lookupEnDisplay\" : \"lookupArDisplay\"\r\n }\r\n valueField=\"lookupValue\"\r\n />\r\n );\r\n};\r\n\r\nexport default SystemLookupCombobox;\r\n","import { Grid2 } from \"@mui/material\";\r\nimport TemplateTextField from \"./FormFields/TemplateTextField\";\r\nimport Datefield from \"./FormFields/Datefield\";\r\nimport DatetimeField from \"./FormFields/DatetimeField\";\r\nimport ComboBox from \"./FormFields/ComboBox\";\r\nimport CheckBox from \"./FormFields/CheckBox\";\r\nimport { DATE_FORMAT, DATE_TIME_FORMAT } from \"../../../../util/constants\";\r\nimport { isNumeric } from \"../../../../util/AppUtils\";\r\nimport { FormElementFieldProps } from \"../DataEntryTypes\";\r\nimport SystemLookupCombobox from \"./FormFields/SystemLookupCombobox\";\r\n\r\nconst FormElementField: React.FC<FormElementFieldProps> = (\r\n element: FormElementFieldProps\r\n) => {\r\n if (element?.fieldInfo) {\r\n const props = element.fieldInfo;\r\n const formManager = element?.formManager || null;\r\n const formActions = element?.formActions || null;\r\n const formValues = element?.formValues || null;\r\n const fieldName: any = element?.fieldInfo?.fieldName || null;\r\n const fieldType = element?.fieldInfo?.fieldType || null;\r\n if (!(props && formManager && formValues && fieldName && fieldType)) {\r\n return <></>;\r\n }\r\n return !element.hiddenFields.includes(fieldName) ? (\r\n <Grid2\r\n size={\r\n props?.formProps?.fieldSize || {\r\n lg: 12,\r\n md: 12,\r\n sm: 12,\r\n }\r\n }\r\n sx={{\r\n padding: 1,\r\n width: \"100%\",\r\n }}\r\n >\r\n {fieldType === \"text\" || fieldType === \"number\" ? (\r\n <TemplateTextField\r\n {...props.muiTextFieldProps}\r\n fullWidth\r\n type={fieldType}\r\n disabled={\r\n props?.disabled || element.disabledFields.includes(fieldName)\r\n ? true\r\n : false\r\n }\r\n hidden={props?.hidden || false}\r\n label={props?.fieldLabel}\r\n value={formValues[fieldName]}\r\n onChange={(event) => {\r\n let newValue = null;\r\n if (event.target.value != \"\") {\r\n if (fieldType === \"number\" && isNumeric(event.target.value)) {\r\n newValue = Number(event.target.value);\r\n } else {\r\n newValue = event.target.value;\r\n }\r\n }\r\n formManager.setValue(fieldName, newValue);\r\n if (props?.formProps?.onValueChangeCallBack) {\r\n props?.formProps?.onValueChangeCallBack(\r\n newValue,\r\n formManager,\r\n formActions\r\n );\r\n }\r\n }}\r\n sx={{\r\n \"& .MuiInputBase-root\": {\r\n height: `${props?.formProps?.fieldHeight}px` || undefined,\r\n },\r\n \"& .MuiInputBase-input\": {\r\n height: \"100% !important\", // forces full height usage\r\n },\r\n ...props?.formProps?.style,\r\n }}\r\n error={formManager.formState.errors[fieldName] != undefined}\r\n helperText={formManager?.formState?.errors[\r\n fieldName\r\n ]?.message?.toString()}\r\n />\r\n ) : props?.fieldType === \"date\" ? (\r\n <Datefield\r\n format={props?.dateFormat || DATE_FORMAT}\r\n sx={props?.formProps?.style || { width: \"100%\" }}\r\n disabled={\r\n props?.disabled || element.disabledFields.includes(fieldName)\r\n ? true\r\n : false\r\n }\r\n label={props?.fieldLabel}\r\n onChangeCallBack={(v: any) => {\r\n formManager.setValue(fieldName, v);\r\n if (props?.formProps?.onValueChangeCallBack) {\r\n props?.formProps?.onValueChangeCallBack(\r\n v,\r\n formManager,\r\n formActions\r\n );\r\n }\r\n }}\r\n value={formValues[fieldName]}\r\n error={formManager.formState.errors[fieldName] != undefined}\r\n errorMessage={formManager?.formState?.errors[\r\n fieldName\r\n ]?.message?.toString()}\r\n />\r\n ) : props?.fieldType === \"datetime\" ? (\r\n <DatetimeField\r\n format={props?.dateFormat || DATE_TIME_FORMAT}\r\n sx={props?.formProps?.style || { width: \"100%\" }}\r\n disabled={\r\n props?.disabled || element.disabledFields.includes(fieldName)\r\n ? true\r\n : false\r\n }\r\n label={props?.fieldLabel}\r\n onChangeCallBack={(v: any) => {\r\n formManager.setValue(fieldName, v);\r\n if (props?.formProps?.onValueChangeCallBack) {\r\n props?.formProps?.onValueChangeCallBack(\r\n v,\r\n formManager,\r\n formActions\r\n );\r\n }\r\n }}\r\n value={formValues[fieldName]}\r\n error={formManager.formState.errors[fieldName] != undefined}\r\n errorMessage={formManager?.formState?.errors[\r\n fieldName\r\n ]?.message?.toString()}\r\n />\r\n ) : props?.fieldType === \"checkbox\" ? (\r\n <CheckBox\r\n label={props?.fieldLabel}\r\n onChangeCallBack={(v: any) => {\r\n formManager.setValue(fieldName, v);\r\n if (props?.formProps?.onValueChangeCallBack) {\r\n props?.formProps?.onValueChangeCallBack(\r\n v,\r\n formManager,\r\n formActions\r\n );\r\n }\r\n }}\r\n value={formValues[fieldName]}\r\n checkedValue={props?.checkedValue || true}\r\n unCheckedValue={props?.unCheckedValue || false}\r\n disabled={\r\n props?.disabled || element.disabledFields.includes(fieldName)\r\n ? true\r\n : false\r\n }\r\n sx={props?.formProps?.style}\r\n />\r\n ) : props?.fieldType === \"combobox\" ? (\r\n <ComboBox\r\n sx={props?.formProps?.style || { width: \"100%\" }}\r\n label={props?.fieldLabel}\r\n disabled={\r\n props?.disabled || element.disabledFields.includes(fieldName)\r\n ? true\r\n : false\r\n }\r\n onChangeCallBack={(v: any, selectedRecord: any) => {\r\n let newValue = null;\r\n if (v) {\r\n newValue = v + \"\";\r\n }\r\n formManager.setValue(fieldName, newValue);\r\n if (props?.formProps?.onValueChangeCallBack) {\r\n props?.formProps?.onValueChangeCallBack(\r\n newValue,\r\n formManager,\r\n formActions,\r\n selectedRecord\r\n );\r\n }\r\n }}\r\n options={props?.options || []}\r\n displayField={props?.optionDisplayField || \"\"}\r\n valueField={props?.optionValueField || \"\"}\r\n value={formValues[fieldName]}\r\n errorMessage={formManager?.formState?.errors[\r\n fieldName\r\n ]?.message?.toString()}\r\n />\r\n ) : props?.fieldType === \"lookup\" ? (\r\n <SystemLookupCombobox\r\n sx={props?.formProps?.style || { width: \"100%\" }}\r\n label={props?.fieldLabel}\r\n disabled={\r\n props?.disabled || element.disabledFields.includes(fieldName)\r\n ? true\r\n : false\r\n }\r\n onChangeCallBack={(v: any, selectedRecord: any) => {\r\n let newValue = null;\r\n if (v) {\r\n newValue = v + \"\";\r\n }\r\n formManager.setValue(fieldName, newValue);\r\n if (props?.formProps?.onValueChangeCallBack) {\r\n props?.formProps?.onValueChangeCallBack(\r\n newValue,\r\n formManager,\r\n formActions,\r\n selectedRecord\r\n );\r\n }\r\n }}\r\n lookupType={props.lookupType}\r\n value={formValues[fieldName]}\r\n errorMessage={formManager?.formState?.errors[\r\n fieldName\r\n ]?.message?.toString()}\r\n />\r\n ) : (\r\n <>Unknown field type</>\r\n )}\r\n </Grid2>\r\n ) : (\r\n <></>\r\n );\r\n } else {\r\n return <></>;\r\n }\r\n};\r\n\r\nexport default FormElementField;\r\n","import { Button } from \"@mui/material\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { RecordAction } from \"../DataEntryTypes\";\r\nimport useSession from \"../../../../hooks/UseSession\";\r\nimport { useConfirmationWindow } from \"../../../../hooks/UseConfirmationWindow\";\r\n\r\nconst FormAction: React.FC<RecordAction> = (action: RecordAction) => {\r\n const session = useSession();\r\n const { ConfirmationWindow, setOpen: setConfirmationWindowState } =\r\n useConfirmationWindow({\r\n body: action?.confirmationMessage || \"\",\r\n title: \"Confirmation\",\r\n onConfirmationCallBk: () => {\r\n action?.actionFn(action?.record);\r\n },\r\n });\r\n if (\r\n action?.authority === undefined ||\r\n action?.authority === null ||\r\n session.isUserAuthorized(action.authority)\r\n ) {\r\n return (\r\n <>\r\n <ConfirmationWindow />\r\n <Button\r\n variant={action?.formActionProps?.actionButtonVariant}\r\n color={action?.formActionProps?.actionButtonColor}\r\n onClick={() => {\r\n if (action?.actionFn) {\r\n if (action?.preActionValidation) {\r\n if (!action.preActionValidation(action.record)) {\r\n return;\r\n }\r\n }\r\n if (action?.isConfirmationRequired === true) {\r\n setConfirmationWindowState(true);\r\n } else {\r\n action?.actionFn(action.record);\r\n }\r\n }\r\n }}\r\n >\r\n {action?.icon ? (\r\n <FontAwesomeIcon\r\n icon={action.icon}\r\n style={{ marginRight: 5, marginLeft: 5 }}\r\n />\r\n ) : (\r\n <></>\r\n )}\r\n <div>{action?.label}</div>\r\n </Button>\r\n </>\r\n );\r\n } else {\r\n return <></>;\r\n }\r\n};\r\n\r\nexport default FormAction;\r\n","import { Grid2 } from \"@mui/material\";\r\nimport FormElementField from \"./FormElementField\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport FormAction from \"./FormAction\";\r\nimport {\r\n FormElementGroupProps,\r\n FormElementProps,\r\n RecordAction,\r\n} from \"../DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst FormElementGroup: React.FC<FormElementGroupProps> = (\r\n props: FormElementGroupProps\r\n) => {\r\n const { t } = useTranslation();\r\n return (\r\n <>\r\n <Grid2 container sx={props?.style} alignItems=\"flex-start\">\r\n {props?.label ? (\r\n <Grid2\r\n size={12}\r\n sx={{\r\n padding: 1,\r\n fontWeight: \"bold\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-start\",\r\n }}\r\n >\r\n {props?.icon ? (\r\n <>\r\n <FontAwesomeIcon\r\n icon={props.icon}\r\n style={{ marginRight: 5, marginLeft: 5 }}\r\n />\r\n <div>{t(props.label)}</div>\r\n </>\r\n ) : (\r\n <>{t(props.label)}</>\r\n )}\r\n </Grid2>\r\n ) : (\r\n <></>\r\n )}\r\n {props?.elements\r\n ? props.elements.map((element: FormElementProps) => {\r\n if (element.type === \"group\") {\r\n return (\r\n <FormElementGroup\r\n {...element.props}\r\n formManager={props.formManager}\r\n formValues={props.formValues}\r\n formActions={props.formActions}\r\n hiddenFields={props.hiddenFields}\r\n disabledFields={props.disabledFields}\r\n />\r\n );\r\n } else if (element.type === \"field\" && element.mode === \"props\") {\r\n return (\r\n <FormElementField\r\n fieldInfo={element.props}\r\n formManager={props.formManager}\r\n formValues={props.formValues}\r\n formActions={props.formActions}\r\n hiddenFields={props.hiddenFields}\r\n disabledFields={props.disabledFields}\r\n />\r\n );\r\n } else if (element.type === \"field\" && element.mode === \"node\") {\r\n return (\r\n <Grid2\r\n size={\r\n element?.props?.formProps?.fieldSize || {\r\n lg: 3,\r\n md: 6,\r\n sm: 12,\r\n }\r\n }\r\n sx={{ padding: 1, width: \"100%\" }}\r\n >\r\n <element.node\r\n formManager={props.formManager}\r\n formValues={props.formValues}\r\n formActions={props.formActions}\r\n />\r\n </Grid2>\r\n );\r\n }\r\n })\r\n : null}\r\n\r\n {props?.actions ? (\r\n <Grid2 size={{ sm: 12 }} sx={{ padding: 1 }}>\r\n {props.actions.map((action: RecordAction) => {\r\n return <FormAction {...action} record={props.formValues} />;\r\n })}\r\n </Grid2>\r\n ) : (\r\n <></>\r\n )}\r\n </Grid2>\r\n </>\r\n );\r\n};\r\n\r\nexport default FormElementGroup;\r\n","import moment from \"moment\";\r\nimport { TemplateGridColDef } from \"../DataEntryTypes\";\r\nimport Datefield from \"../TemplateDataForm/FormFields/Datefield\";\r\nimport { DATE_FORMAT, DATE_TIME_FORMAT } from \"../../../../util/constants\";\r\nimport DatetimeField from \"../TemplateDataForm/FormFields/DatetimeField\";\r\nimport ComboBox from \"../TemplateDataForm/FormFields/ComboBox\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport CheckBox from \"../TemplateDataForm/FormFields/CheckBox\";\r\n\r\nexport const generateDateColumn: any = (colDef: TemplateGridColDef) => {\r\n const column: TemplateGridColDef = {\r\n ...colDef,\r\n type: \"string\",\r\n renderEditCell: (params: any) => {\r\n return (\r\n <Datefield\r\n sx={{ width: \"100%\" }}\r\n label=\"\"\r\n value={params.value}\r\n onChangeCallBack={(v: any) => {\r\n params.api.setEditCellValue({\r\n id: params.id,\r\n field: params.field,\r\n value: v,\r\n });\r\n }}\r\n />\r\n );\r\n },\r\n valueParser: (value: any, row: any, column: any) => {\r\n let v = null;\r\n if (value !== null) {\r\n v = moment(value).format(DATE_FORMAT);\r\n }\r\n return v;\r\n },\r\n valueFormatter: (value: any, row: any, column: any) => {\r\n return row[column.field];\r\n },\r\n };\r\n return column;\r\n};\r\n\r\nexport const generateDateTimeColumn: any = (colDef: TemplateGridColDef) => {\r\n const column: TemplateGridColDef = {\r\n ...colDef,\r\n type: \"string\",\r\n renderEditCell: (params: any) => {\r\n return (\r\n <DatetimeField\r\n sx={{ width: \"100%\" }}\r\n label=\"\"\r\n value={params.value}\r\n onChangeCallBack={(v: any) => {\r\n params.api.setEditCellValue({\r\n id: params.id,\r\n field: params.field,\r\n value: v,\r\n });\r\n }}\r\n />\r\n );\r\n },\r\n valueParser: (value: any, row: any, column: any) => {\r\n let v = null;\r\n if (value !== null) {\r\n v = moment(value).format(DATE_TIME_FORMAT);\r\n }\r\n return v;\r\n },\r\n valueFormatter: (value: any, row: any, column: any) => {\r\n return row[column.field];\r\n },\r\n };\r\n return column;\r\n};\r\n\r\ntype ComboBoxColumnProps = TemplateGridColDef & {\r\n lookupType?: string;\r\n options: Array<any>;\r\n displayField: string;\r\n valueField: string;\r\n};\r\nexport const generateComboColumn: (\r\n props: ComboBoxColumnProps\r\n) => TemplateGridColDef = (colDef: ComboBoxColumnProps) => {\r\n const column: TemplateGridColDef = {\r\n ...colDef,\r\n type: \"custom\",\r\n valueGetter: (value) => {\r\n if (value) {\r\n return value + \"\";\r\n }\r\n return value;\r\n },\r\n renderCell: (parameters: any) => {\r\n let record = null;\r\n try {\r\n record = parameters.colDef.options.find(\r\n (item: any) => item[parameters.colDef.valueField] == parameters.value\r\n );\r\n } catch (e) {}\r\n return (\r\n <div>\r\n {record != null\r\n ? record[parameters.colDef.displayField]\r\n : parameters.value}\r\n </div>\r\n );\r\n },\r\n\r\n renderEditCell: (params: any) => {\r\n return (\r\n <ComboBox\r\n {...params}\r\n sx={{ width: \"100%\" }}\r\n options={params.colDef.options}\r\n valueField={params.colDef.valueField}\r\n displayField={params.colDef.displayField}\r\n onChangeCallBack={(v: any, selectedRecord: any) => {\r\n if (v === null) {\r\n params.api.setEditCellValue({\r\n id: params.id,\r\n field: params.field,\r\n value: null,\r\n });\r\n }\r\n params.api.setEditCellValue({\r\n id: params.id,\r\n field: params.field,\r\n value: v + \"\",\r\n });\r\n }}\r\n />\r\n );\r\n },\r\n };\r\n return column;\r\n};\r\n\r\ntype CheckBoxColumnProps = TemplateGridColDef & {\r\n checkedValue?: string;\r\n unCheckedValue?: string;\r\n};\r\n\r\nexport const generateCheckBoxColumn: (\r\n props: CheckBoxColumnProps\r\n) => TemplateGridColDef = (colDef: CheckBoxColumnProps) => {\r\n return {\r\n ...colDef,\r\n type: \"custom\",\r\n valueGetter: (value) => {\r\n if (value == null || value == undefined) {\r\n return null;\r\n } else {\r\n return value;\r\n }\r\n },\r\n renderCell: (parameters: any) => {\r\n const value = parameters?.value;\r\n if (\r\n value === colDef.checkedValue ||\r\n value === \"true\" ||\r\n value === 1 ||\r\n value === true\r\n ) {\r\n return <FontAwesomeIcon icon=\"check\" color=\"green\" />;\r\n } else {\r\n return <FontAwesomeIcon icon=\"xmark\" color=\"red\" />;\r\n }\r\n },\r\n renderEditCell: (params: any) => {\r\n return (\r\n <CheckBox\r\n {...params}\r\n checkedValue={colDef?.checkedValue || true}\r\n unCheckedValue={colDef?.unCheckedValue || false}\r\n onChangeCallBack={(v: any) => {\r\n params.api.setEditCellValue({\r\n id: params.id,\r\n field: params.field,\r\n value: v,\r\n });\r\n }}\r\n />\r\n );\r\n },\r\n };\r\n};\r\n","import { GridRowSelectionModel } from \"@mui/x-data-grid-premium\";\r\nimport {\r\n FormElementProps,\r\n RecordFieldProps,\r\n TemplateGridColDef,\r\n} from \"./DataEntryTypes\";\r\nimport {\r\n generateCheckBoxColumn,\r\n generateComboColumn,\r\n generateDateColumn,\r\n generateDateTimeColumn,\r\n} from \"./TemplateDataGrid/DataGridColumnsUtil\";\r\nimport * as z from \"zod\";\r\nimport { TFunction } from \"i18next\";\r\n\r\nexport const getElementFields: (\r\n element: FormElementProps\r\n) => Array<RecordFieldProps> = (element: FormElementProps) => {\r\n const fields: Array<RecordFieldProps> = [];\r\n if (element.type === \"field\" && element.mode === \"props\" && element?.props) {\r\n fields.push(element.props);\r\n } else if (\r\n element.type === \"group\" &&\r\n element?.props &&\r\n element?.props?.elements\r\n ) {\r\n for (const childElement of element.props.elements) {\r\n fields.push(...getElementFields(childElement));\r\n }\r\n }\r\n return fields;\r\n};\r\n\r\nexport const getAllFields: (\r\n elements: Array<FormElementProps>\r\n) => Array<RecordFieldProps> = (elements: Array<FormElementProps>) => {\r\n const fields: Array<RecordFieldProps> = [];\r\n for (const element of elements) {\r\n fields.push(...getElementFields(element));\r\n }\r\n return fields;\r\n};\r\n\r\nexport const constructGridColumnsFromFields: (\r\n fields: Array<RecordFieldProps>,\r\n isDefaultEditable: boolean,\r\n t: TFunction<\"translation\", undefined>\r\n) => Array<TemplateGridColDef> = (fields, isDefaultEditable, t) => {\r\n const columns: Array<TemplateGridColDef> = [];\r\n\r\n for (const tableField of fields) {\r\n if (\r\n tableField?.fieldType === \"text\" ||\r\n tableField?.fieldType === \"number\"\r\n ) {\r\n const column: TemplateGridColDef = {\r\n ...tableField?.gridProps?.muiProps,\r\n editable:\r\n tableField?.gridProps?.muiProps?.editable != undefined\r\n ? tableField?.gridProps?.muiProps?.editable\r\n : isDefaultEditable,\r\n type: tableField?.fieldType == \"number\" ? \"number\" : \"string\",\r\n field: tableField?.fieldName,\r\n headerName: t(tableField?.fieldLabel || tableField?.fieldName),\r\n headerAlign: \"center\",\r\n align: \"center\",\r\n hidden: tableField?.hidden,\r\n searchable: tableField?.gridProps?.searchable,\r\n flex: 1,\r\n minWidth: 200,\r\n };\r\n\r\n columns.push(column);\r\n } else if (tableField?.fieldType === \"date\") {\r\n const column: TemplateGridColDef = generateDateColumn({\r\n ...tableField?.gridProps?.muiProps,\r\n editable:\r\n tableField?.gridProps?.muiProps?.editable != undefined\r\n ? tableField?.gridProps?.muiProps?.editable\r\n : isDefaultEditable,\r\n field: tableField?.fieldName,\r\n headerName: t(tableField?.fieldLabel || tableField?.fieldName),\r\n headerAlign: \"center\",\r\n align: \"center\",\r\n hidden: tableField?.hidden,\r\n searchable: tableField?.gridProps?.searchable,\r\n flex: 1,\r\n minWidth: 200,\r\n });\r\n columns.push(column);\r\n } else if (tableField?.fieldType === \"datetime\") {\r\n const column: TemplateGridColDef = generateDateTimeColumn({\r\n ...tableField?.gridProps?.muiProps,\r\n editable:\r\n tableField?.gridProps?.muiProps?.editable != undefined\r\n ? tableField?.gridProps?.muiProps?.editable\r\n : isDefaultEditable,\r\n field: tableField?.fieldName,\r\n headerName: t(tableField?.fieldLabel || tableField?.fieldName),\r\n headerAlign: \"center\",\r\n align: \"center\",\r\n hidden: tableField?.hidden,\r\n searchable: tableField?.gridProps?.searchable,\r\n flex: 1,\r\n minWidth: 200,\r\n });\r\n columns.push(column);\r\n } else if (tableField?.fieldType === \"checkbox\") {\r\n const column = generateCheckBoxColumn({\r\n ...tableField?.gridProps?.muiProps,\r\n editable:\r\n tableField?.gridProps?.muiProps?.editable != undefined\r\n ? tableField?.gridProps?.muiProps?.editable\r\n : isDefaultEditable,\r\n field: tableField?.fieldName,\r\n headerName: t(tableField?.fieldLabel || tableField?.fieldName),\r\n headerAlign: \"center\",\r\n align: \"center\",\r\n hidden: tableField?.hidden,\r\n searchable: tableField?.gridProps?.searchable,\r\n checkedValue: tableField?.checkedValue,\r\n unCheckedValue: tableField?.unCheckedValue,\r\n width: 150,\r\n });\r\n columns.push(column);\r\n } else if (tableField?.fieldType === \"combobox\") {\r\n const column: TemplateGridColDef = generateComboColumn({\r\n ...tableField?.gridProps?.muiProps,\r\n editable:\r\n tableField?.gridProps?.muiProps?.editable != undefined\r\n ? tableField?.gridProps?.muiProps?.editable\r\n : isDefaultEditable,\r\n field: tableField?.fieldName,\r\n headerName: t(tableField?.fieldLabel || tableField?.fieldName),\r\n headerAlign: \"center\",\r\n align: \"center\",\r\n hidden: tableField?.hidden,\r\n searchable: tableField?.gridProps?.searchable,\r\n valueField: tableField?.optionValueField || \"value\",\r\n displayField: tableField?.optionDisplayField || \"display\",\r\n options: tableField?.options || [],\r\n flex: 1,\r\n minWidth: 200,\r\n });\r\n columns.push(column);\r\n } else if (tableField?.fieldType === \"lookup\") {\r\n const column: TemplateGridColDef = generateComboColumn({\r\n ...tableField?.gridProps?.muiProps,\r\n editable:\r\n tableField?.gridProps?.muiProps?.editable != undefined\r\n ? tableField?.gridProps?.muiProps?.editable\r\n : isDefaultEditable,\r\n lookupType: tableField?.lookupType,\r\n field: tableField?.fieldName,\r\n headerName: t(tableField?.fieldLabel || tableField?.fieldName),\r\n headerAlign: \"center\",\r\n align: \"center\",\r\n hidden: tableField?.hidden,\r\n searchable: tableField?.gridProps?.searchable,\r\n valueField: tableField?.optionValueField || \"value\",\r\n displayField: tableField?.optionDisplayField || \"display\",\r\n options: tableField?.options || [],\r\n flex: 1,\r\n minWidth: 200,\r\n });\r\n columns.push(column);\r\n }\r\n }\r\n return columns;\r\n};\r\n\r\nexport const constructValidationSchema = (fields: Array<RecordFieldProps>) => {\r\n const validationSchemaObj: any = {};\r\n for (const field of fields) {\r\n if (field?.fieldName) {\r\n const fieldName = field.fieldName;\r\n if (field.fieldType === \"number\") {\r\n if (field?.required === true) {\r\n validationSchemaObj[fieldName] = z.number({\r\n required_error: \"This field is required\",\r\n invalid_type_error: \"This field must be a number\",\r\n });\r\n } else {\r\n validationSchemaObj[fieldName] = z.number().optional().nullable();\r\n }\r\n } else if (field.fieldType === \"checkbox\") {\r\n if (field?.required === true) {\r\n validationSchemaObj[fieldName] = z.boolean({\r\n required_error: \"This field is required\",\r\n });\r\n } else {\r\n validationSchemaObj[fieldName] = z.boolean().optional().nullable();\r\n }\r\n } else {\r\n if (field?.required === true) {\r\n validationSchemaObj[fieldName] = z\r\n .string({ message: \"This field is required\" })\r\n .min(1, \"This field is required\");\r\n } else {\r\n validationSchemaObj[fieldName] = z.string().optional().nullable();\r\n }\r\n }\r\n }\r\n }\r\n return validationSchemaObj;\r\n};\r\n\r\nexport type GridSelection = {\r\n selectedRecords: Array<any>;\r\n selectedRecordIds: Array<any>;\r\n};\r\n\r\nexport const getGridSelection: (\r\n rowSelectionModel: GridRowSelectionModel,\r\n data: Array<any>,\r\n keyColumnName: string\r\n) => GridSelection = (\r\n rowSelectionModel: GridRowSelectionModel,\r\n data: Array<any>,\r\n keyColumnName: string\r\n) => {\r\n const sRecords = [];\r\n const sRecordIds = [];\r\n if (\r\n rowSelectionModel.type === \"exclude\" &&\r\n rowSelectionModel.ids.size === 0\r\n ) {\r\n for (const record of data) {\r\n sRecords.push(record);\r\n sRecordIds.push(record[keyColumnName]);\r\n }\r\n } else {\r\n if (rowSelectionModel?.ids) {\r\n for (const selectedId of rowSelectionModel.ids) {\r\n const record = data.find((x) => x[keyColumnName] === selectedId);\r\n sRecords.push(record);\r\n sRecordIds.push(selectedId);\r\n }\r\n }\r\n }\r\n return { selectedRecords: sRecords, selectedRecordIds: sRecordIds };\r\n};\r\n","import { Box } from \"@mui/system\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport * as z from \"zod\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport { zodResolver } from \"@hookform/resolvers/zod\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport { Button, Grid2 } from \"@mui/material\";\r\nimport { toast } from \"react-toastify\";\r\nimport FormElementGroup from \"./FormElementGroup\";\r\nimport FormElementField from \"./FormElementField\";\r\nimport FormAction from \"./FormAction\";\r\nimport { constructValidationSchema, getAllFields } from \"../DataEntryUtil\";\r\nimport {\r\n FormElementProps,\r\n RecordAction,\r\n TemplateFormProps,\r\n} from \"../DataEntryTypes\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst TemplateForm: React.FC<TemplateFormProps> = (\r\n props: TemplateFormProps\r\n) => {\r\n const { t } = useTranslation();\r\n const fields = getAllFields(props.elements);\r\n const initiallyHiddenFields = [];\r\n for (const field of fields) {\r\n if (field?.hidden) {\r\n initiallyHiddenFields.push(field.fieldName);\r\n }\r\n }\r\n const [hiddenFields, setHiddenFields] = useState<string[]>(\r\n initiallyHiddenFields\r\n );\r\n const initialValues: any = {};\r\n for (const element of props.elements) {\r\n if (\r\n element?.type === \"field\" &&\r\n element?.mode === \"props\" &&\r\n element?.props?.defaultValue\r\n ) {\r\n initialValues[element.props.fieldName] = element.props.defaultValue;\r\n }\r\n }\r\n const [disabledFields, setDisabledFields] = useState<string[]>([]);\r\n const formSchema = z.object(constructValidationSchema(fields));\r\n type FormData = z.infer<typeof formSchema>;\r\n const formManager = useForm<FormData>({\r\n resolver: zodResolver(formSchema),\r\n defaultValues: initialValues,\r\n });\r\n const formValues = formManager.watch();\r\n const pathParameters = useParams();\r\n const formRouteRecordIdParamName: any = props?.formRouteRecordIdParamName;\r\n\r\n const loadRecord = async () => {\r\n let idToLoad = null;\r\n if (props?.recordIdToEdit) {\r\n idToLoad = props.recordIdToEdit;\r\n } else if (\r\n formRouteRecordIdParamName &&\r\n pathParameters[formRouteRecordIdParamName]\r\n ) {\r\n idToLoad = pathParameters[formRouteRecordIdParamName];\r\n }\r\n if (idToLoad) {\r\n const retrievedRecord: any = await props.apiActions.loadRecordById(\r\n idToLoad\r\n );\r\n if (retrievedRecord) {\r\n formManager.reset({ ...retrievedRecord });\r\n if (props?.formLoadCallBk) {\r\n props?.formLoadCallBk(formActions, formManager, retrievedRecord);\r\n }\r\n for (const field of fields) {\r\n if (\r\n field?.fieldType === \"combobox\" &&\r\n retrievedRecord[field.fieldName]\r\n ) {\r\n formManager.setValue(\r\n field.fieldName,\r\n retrievedRecord[field.fieldName] + \"\"\r\n );\r\n }\r\n }\r\n }\r\n } else {\r\n formManager.reset({});\r\n }\r\n };\r\n\r\n const saveRecord = async (record: any) => {\r\n if (props?.preSaveValidation && !props.preSaveValidation(record)) {\r\n return;\r\n }\r\n if (record) {\r\n const savedRecord: any = await props.apiActions.saveRecord(record);\r\n if (savedRecord) {\r\n formManager.reset({ ...savedRecord });\r\n if (props?.formSavedSuccessfullyCallBk) {\r\n props.formSavedSuccessfullyCallBk(savedRecord);\r\n }\r\n if (props?.formCloseCallBk) {\r\n props.formCloseCallBk();\r\n }\r\n }\r\n }\r\n };\r\n\r\n const formActions = {\r\n setFieldValue: (fieldName: string, fieldValue: any) => {\r\n formManager.setValue(fieldName, fieldValue);\r\n },\r\n hideField: (fieldName: string) => {\r\n setHiddenFields((oldValues) => {\r\n const newValues = [...oldValues, fieldName];\r\n return newValues;\r\n });\r\n },\r\n showField: (fieldName: string) => {\r\n setHiddenFields((oldValues) => {\r\n const newValues = oldValues.filter((x) => x !== fieldName);\r\n return newValues;\r\n });\r\n },\r\n disableField: (fieldName: string) => {\r\n setDisabledFields((oldValues) => {\r\n const newValues = [...oldValues, fieldName];\r\n return newValues;\r\n });\r\n },\r\n enableField: (fieldName: string) => {\r\n setDisabledFields((oldValues) => {\r\n const newValues = oldValues.filter((x) => x !== fieldName);\r\n return newValues;\r\n });\r\n },\r\n };\r\n\r\n useEffect(() => {\r\n loadRecord();\r\n }, [props?.recordIdToEdit]);\r\n\r\n return (\r\n <>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flex: 1,\r\n width: \"100%\",\r\n height: \"fit-content\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n overflow: \"auto\",\r\n }}\r\n >\r\n <Grid2 sx={{ width: \"100%\" }} container>\r\n {props.elements.map((formElement: FormElementProps, index) => {\r\n if (formElement.type === \"group\") {\r\n return (\r\n <FormElementGroup\r\n key={index}\r\n {...formElement.props}\r\n formManager={formManager}\r\n formValues={formValues}\r\n formActions={formActions}\r\n hiddenFields={hiddenFields}\r\n disabledFields={disabledFields}\r\n />\r\n );\r\n } else if (\r\n formElement.type === \"field\" &&\r\n formElement.mode === \"props\"\r\n ) {\r\n return (\r\n <FormElementField\r\n key={index}\r\n fieldInfo={formElement.props}\r\n formManager={formManager}\r\n formValues={formValues}\r\n formActions={formActions}\r\n hiddenFields={hiddenFields}\r\n disabledFields={disabledFields}\r\n />\r\n );\r\n } else if (\r\n formElement.type === \"field\" &&\r\n formElement.mode === \"node\"\r\n ) {\r\n return (\r\n <Grid2\r\n key={index}\r\n size={\r\n formElement?.props?.formProps?.fieldSize || {\r\n lg: 3,\r\n md: 6,\r\n xs: 12,\r\n }\r\n }\r\n sx={{ padding: 1, width: \"100%\" }}\r\n >\r\n <formElement.node\r\n formManager={formManager}\r\n formValues={formValues}\r\n />\r\n </Grid2>\r\n );\r\n }\r\n })}\r\n </Grid2>\r\n </Box>\r\n\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n width: \"100%\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-start\",\r\n }}\r\n >\r\n {props?.actions ? (\r\n props.actions.map((action: RecordAction) => {\r\n if (action?.formActionProps?.enabled === true) {\r\n return <FormAction {...action} record={formValues} />;\r\n } else {\r\n return <></>;\r\n }\r\n })\r\n ) : (\r\n <></>\r\n )}\r\n <div style={{ flex: 1 }}></div>\r\n <Button\r\n variant={\r\n props?.saveButtonSpecs?.actionButtonVariant\r\n ? props.saveButtonSpecs.actionButtonVariant\r\n : \"contained\"\r\n }\r\n sx={{ m: 1 }}\r\n startIcon={\r\n props?.saveButtonSpecs?.icon ? (\r\n <FontAwesomeIcon icon={props.saveButtonSpecs.icon} />\r\n ) : null\r\n }\r\n color={\r\n props?.saveButtonSpecs?.actionButtonColor\r\n ? props.saveButtonSpecs.actionButtonColor\r\n : \"primary\"\r\n }\r\n onClick={formManager.handleSubmit(\r\n (values) => {\r\n console.log(\"form values\", values);\r\n saveRecord(values);\r\n },\r\n (errors) => {\r\n toast.error(\r\n \"Form Data is not valid, make sure you have all field with valid data\"\r\n );\r\n console.log(\"form validation error\", errors);\r\n }\r\n )}\r\n >\r\n {t(props?.saveButtonSpecs?.label || \"SAVE_BTN_LABEL\")}\r\n </Button>\r\n <Button\r\n variant={\r\n props?.cancelButtonSpecs?.actionButtonVariant\r\n ? props.cancelButtonSpecs.actionButtonVariant\r\n : \"contained\"\r\n }\r\n startIcon={\r\n props?.cancelButtonSpecs?.icon ? (\r\n <FontAwesomeIcon icon={props.cancelButtonSpecs.icon} />\r\n ) : null\r\n }\r\n color={\r\n props?.cancelButtonSpecs?.actionButtonColor\r\n ? props.cancelButtonSpecs.actionButtonColor\r\n : \"error\"\r\n }\r\n sx={{ m: 1 }}\r\n onClick={() => {\r\n if (props?.formCloseCallBk) {\r\n props.formCloseCallBk();\r\n }\r\n formManager.reset(initialValues);\r\n }}\r\n >\r\n {t(props?.cancelButtonSpecs?.label || \"CANCEL_BTN_LABEL\")}\r\n </Button>\r\n </Box>\r\n </>\r\n );\r\n};\r\n\r\nexport default TemplateForm;\r\n","import { Button } from \"@mui/material\";\r\nimport { RecordAction } from \"../DataEntryTypes\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { toast } from \"react-toastify\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport useSession from \"../../../../hooks/UseSession\";\r\nimport { useConfirmationWindow } from \"../../../../hooks/UseConfirmationWindow\";\r\n\r\nconst TemplateGridMultiRecordAction: React.FC<RecordAction> = (\r\n rowAction: RecordAction\r\n) => {\r\n const { t } = useTranslation();\r\n const session = useSession();\r\n const { ConfirmationWindow, setOpen } = useConfirmationWindow({\r\n body: t(rowAction?.confirmationMessage || \"ACTION_CONFIRMATION\"),\r\n title: t(\"CONFIRMATION\"),\r\n onConfirmationCallBk: async () => {\r\n await rowAction?.actionFn(\r\n rowAction.recordsToProcessActionOn,\r\n rowAction.recordIdsToProcessActionOn\r\n );\r\n if (rowAction?.reloadData) {\r\n rowAction.reloadData();\r\n }\r\n },\r\n });\r\n let isActionAllowed = true;\r\n if (rowAction.authority) {\r\n isActionAllowed = session.isUserAuthorized(rowAction.authority);\r\n }\r\n\r\n if (isActionAllowed) {\r\n return (\r\n <>\r\n <ConfirmationWindow />\r\n <Button\r\n onClick={async () => {\r\n if (\r\n rowAction?.recordsToProcessActionOn &&\r\n rowAction?.recordsToProcessActionOn.length > 0\r\n ) {\r\n if (rowAction?.preActionValidation) {\r\n for (const record of rowAction.recordsToProcessActionOn) {\r\n if (!rowAction.preActionValidation(record)) {\r\n return;\r\n }\r\n }\r\n }\r\n if (rowAction?.isConfirmationRequired === true) {\r\n setOpen(true);\r\n } else {\r\n await rowAction.actionFn(\r\n rowAction.recordsToProcessActionOn,\r\n rowAction.recordIdsToProcessActionOn\r\n );\r\n if (rowAction?.reloadData) {\r\n rowAction.reloadData();\r\n }\r\n }\r\n } else {\r\n toast.error(t(\"AT_LEAST_ONE_RECORD_SELECTED_MESSAGE\"));\r\n }\r\n }}\r\n variant={\r\n rowAction?.label\r\n ? \"outlined\"\r\n : rowAction?.formActionProps?.actionButtonVariant\r\n ? rowAction.formActionProps.actionButtonVariant\r\n : \"text\"\r\n }\r\n size=\"small\"\r\n color={rowAction?.formActionProps?.actionButtonColor || \"primary\"}\r\n >\r\n {rowAction?.icon ? (\r\n <FontAwesomeIcon\r\n style={{ marginRight: 5, marginLeft: 5 }}\r\n icon={rowAction.icon}\r\n />\r\n ) : (\r\n <></>\r\n )}\r\n {rowAction?.label ? t(rowAction.label) : <></>}\r\n </Button>\r\n </>\r\n );\r\n }\r\n};\r\n\r\nexport default TemplateGridMultiRecordAction;\r\n","import {\r\n Badge,\r\n Box,\r\n Button,\r\n Divider,\r\n IconButton,\r\n InputAdornment,\r\n MenuItem,\r\n styled,\r\n TextField,\r\n Tooltip,\r\n} from \"@mui/material\";\r\nimport {\r\n Toolbar,\r\n ToolbarButton,\r\n ColumnsPanelTrigger,\r\n FilterPanelTrigger,\r\n QuickFilter,\r\n QuickFilterControl,\r\n QuickFilterClear,\r\n QuickFilterTrigger,\r\n GridViewColumnIcon,\r\n GridFilterListIcon,\r\n ExportExcel,\r\n} from \"@mui/x-data-grid-premium\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport TemplateGridMultiRecordAction from \"./TemplateGridMultiRecordAction\";\r\nimport { getGridSelection } from \"../DataEntryUtil\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { TemplateGridTopBarProps } from \"../DataEntryTypes\";\r\nimport useSession from \"../../../../hooks/UseSession\";\r\n\r\ntype OwnerState = {\r\n expanded: boolean;\r\n};\r\n\r\nconst StyledQuickFilter = styled(QuickFilter)({\r\n display: \"grid\",\r\n alignItems: \"center\",\r\n});\r\n\r\nconst StyledToolbarButton = styled(ToolbarButton)<{ ownerState: OwnerState }>(\r\n ({ theme, ownerState }) => ({\r\n gridArea: \"1 / 1\",\r\n width: \"min-content\",\r\n height: \"min-content\",\r\n zIndex: 1,\r\n opacity: ownerState.expanded ? 0 : 1,\r\n pointerEvents: ownerState.expanded ? \"none\" : \"auto\",\r\n transition: theme.transitions.create([\"opacity\"]),\r\n })\r\n);\r\n\r\nconst StyledTextField = styled(TextField)<{\r\n ownerState: OwnerState;\r\n}>(({ theme, ownerState }) => ({\r\n gridArea: \"1 / 1\",\r\n overflowX: \"clip\",\r\n width: ownerState.expanded ? 260 : \"var(--trigger-width)\",\r\n opacity: ownerState.expanded ? 1 : 0,\r\n transition: theme.transitions.create([\"width\", \"opacity\"]),\r\n}));\r\n\r\nconst TemplateGridTopBar: React.FC<TemplateGridTopBarProps> = (\r\n props: TemplateGridTopBarProps\r\n) => {\r\n const { t } = useTranslation();\r\n const session = useSession();\r\n const isCreationAuthorized = props?.templateProps?.editAction?.authority\r\n ? session.isUserAuthorized(props.templateProps.editAction.authority)\r\n : true;\r\n const isCreationEnabled = props?.templateProps?.disableDefaultAction || true;\r\n const gridSelection = getGridSelection(\r\n props?.templateProps?.rowSelectionModel || {\r\n ids: new Set(),\r\n type: \"include\",\r\n },\r\n props?.templateProps?.data || [],\r\n props?.templateProps?.keyColumnName || \"id\"\r\n );\r\n return (\r\n <Toolbar>\r\n {isCreationEnabled &&\r\n isCreationAuthorized &&\r\n props?.templateProps?.editMode?.editMode != \"none\" ? (\r\n <Button onClick={props?.handleCreateNewRecord}>\r\n <FontAwesomeIcon\r\n icon=\"add\"\r\n style={{ marginRight: 5, marginLeft: 5 }}\r\n />\r\n {t(\"ADD_BTN_LABEL\")}\r\n </Button>\r\n ) : (\r\n <></>\r\n )}\r\n {props?.templateProps?.rowActions ? (\r\n props.templateProps.rowActions.map((rowAction, index) =>\r\n rowAction?.gridActionProps?.multiRecord === true ? (\r\n <TemplateGridMultiRecordAction\r\n {...rowAction}\r\n key={index}\r\n reloadData={async () => {\r\n props.templateProps.apiActions.reloadData(\r\n props?.templateProps?.gridLoadParametersValues\r\n );\r\n }}\r\n recordIdsToProcessActionOn={gridSelection.selectedRecordIds}\r\n recordsToProcessActionOn={gridSelection.selectedRecords}\r\n />\r\n ) : null\r\n )\r\n ) : (\r\n <></>\r\n )}\r\n <Box sx={{ flex: 1, mx: 0.5 }}>{props?.templateProps?.tBar}</Box>\r\n\r\n <Tooltip title=\"Columns\">\r\n <ColumnsPanelTrigger render={<ToolbarButton />}>\r\n <GridViewColumnIcon fontSize=\"small\" />\r\n </ColumnsPanelTrigger>\r\n </Tooltip>\r\n\r\n <Tooltip title=\"Filters\">\r\n <FilterPanelTrigger\r\n render={(props, state) => (\r\n <ToolbarButton {...props} color=\"default\">\r\n <Badge\r\n badgeContent={state.filterCount}\r\n color=\"primary\"\r\n variant=\"dot\"\r\n >\r\n <GridFilterListIcon fontSize=\"small\" />\r\n </Badge>\r\n </ToolbarButton>\r\n )}\r\n />\r\n </Tooltip>\r\n\r\n {props?.templateProps?.gridStateKey ? (\r\n <Tooltip title={t(\"RESET_GRID_STATE\")}>\r\n <IconButton onClick={props?.clearGridState}>\r\n <FontAwesomeIcon icon=\"eraser\" />\r\n </IconButton>\r\n </Tooltip>\r\n ) : (\r\n <></>\r\n )}\r\n\r\n <Divider\r\n orientation=\"vertical\"\r\n variant=\"middle\"\r\n flexItem\r\n sx={{ mx: 0.5 }}\r\n />\r\n\r\n <Tooltip title={t(\"EXPORT_EXECL_LABEL\")}>\r\n <ExportExcel render={<MenuItem />}>\r\n <FontAwesomeIcon icon=\"file-excel\" color=\"green\" />\r\n </ExportExcel>\r\n </Tooltip>\r\n\r\n <StyledQuickFilter>\r\n <QuickFilterTrigger\r\n render={(triggerProps, state) => (\r\n <Tooltip title={t(\"SEARCH_BTN_LABEL\")} enterDelay={0}>\r\n <StyledToolbarButton\r\n {...triggerProps}\r\n ownerState={{ expanded: state.expanded }}\r\n color=\"default\"\r\n aria-disabled={state.expanded}\r\n >\r\n <FontAwesomeIcon icon=\"search\" />\r\n </StyledToolbarButton>\r\n </Tooltip>\r\n )}\r\n />\r\n <QuickFilterControl\r\n render={({ ref, ...controlProps }, state) => (\r\n <StyledTextField\r\n {...controlProps}\r\n ownerState={{ expanded: state.expanded }}\r\n inputRef={ref}\r\n aria-label=\"Search\"\r\n placeholder={`${t(\"SEARCH_BTN_LABEL\")}...`}\r\n size=\"small\"\r\n slotProps={{\r\n input: {\r\n startAdornment: (\r\n <InputAdornment position=\"start\">\r\n <FontAwesomeIcon icon=\"search\" />\r\n </InputAdornment>\r\n ),\r\n endAdornment: state.value ? (\r\n <InputAdornment position=\"end\">\r\n <QuickFilterClear\r\n edge=\"end\"\r\n size=\"small\"\r\n aria-label=\"Clear search\"\r\n // material={{ sx: { marginRight: -0.75 } }}\r\n >\r\n <FontAwesomeIcon icon=\"xmark\" />\r\n </QuickFilterClear>\r\n </InputAdornment>\r\n ) : null,\r\n ...controlProps.slotProps?.input,\r\n },\r\n ...controlProps.slotProps,\r\n }}\r\n />\r\n )}\r\n />\r\n </StyledQuickFilter>\r\n\r\n <IconButton\r\n onClick={() => {\r\n props.templateProps.apiActions.reloadData(\r\n props?.templateProps?.gridLoadParametersValues\r\n );\r\n }}\r\n >\r\n <FontAwesomeIcon icon=\"refresh\" />\r\n </IconButton>\r\n </Toolbar>\r\n );\r\n};\r\n\r\nexport default TemplateGridTopBar;\r\n","import { Tooltip } from \"@mui/material\";\r\nimport { GridActionsCellItem } from \"@mui/x-data-grid-premium\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { RecordAction } from \"../DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport useSession from \"../../../../hooks/UseSession\";\r\nimport { useConfirmationWindow } from \"../../../../hooks/UseConfirmationWindow\";\r\n\r\nconst TemplateGridRecordAction: React.FC<RecordAction> = (\r\n rowAction: RecordAction\r\n) => {\r\n const { t } = useTranslation();\r\n const session = useSession();\r\n const { ConfirmationWindow, setOpen } = useConfirmationWindow({\r\n body: t(rowAction?.confirmationMessage || \"ACTION_CONFIRMATION\"),\r\n title: t(\"CONFIRMATION\"),\r\n onConfirmationCallBk: async () => {\r\n await rowAction?.actionFn(rowAction.record);\r\n if (rowAction?.reloadData) {\r\n rowAction.reloadData();\r\n }\r\n },\r\n });\r\n let isActionAllowed = true;\r\n if (rowAction.authority) {\r\n isActionAllowed = session.isUserAuthorized(rowAction.authority);\r\n }\r\n let iconStyle: any = {};\r\n if (rowAction?.getActionIconStyleForRecord) {\r\n iconStyle = rowAction.getActionIconStyleForRecord(rowAction.record);\r\n }\r\n let isActionVisibleForRecord = true;\r\n if (rowAction?.isActionVisibleForRecord) {\r\n isActionVisibleForRecord = rowAction?.isActionVisibleForRecord(\r\n rowAction.record\r\n );\r\n }\r\n let isActionDisabledForRecord = false;\r\n if (rowAction?.isActionDisabledForRecord) {\r\n isActionDisabledForRecord = rowAction.isActionDisabledForRecord(\r\n rowAction.record\r\n );\r\n }\r\n if (isActionAllowed && isActionVisibleForRecord) {\r\n return (\r\n <>\r\n <ConfirmationWindow />\r\n <GridActionsCellItem\r\n disabled={isActionDisabledForRecord}\r\n icon={\r\n <Tooltip title={rowAction?.label ? t(rowAction.label) : \"\"}>\r\n <FontAwesomeIcon\r\n icon={rowAction.icon}\r\n style={{\r\n ...iconStyle,\r\n color: isActionDisabledForRecord\r\n ? \"gray\"\r\n : iconStyle?.color != undefined\r\n ? iconStyle.color\r\n : undefined,\r\n }}\r\n />\r\n </Tooltip>\r\n }\r\n showInMenu={rowAction?.gridActionProps?.showInMenu || false}\r\n label={\"\"}\r\n className=\"textPrimary\"\r\n color=\"inherit\"\r\n onClick={async () => {\r\n if (!isActionDisabledForRecord) {\r\n if (rowAction?.preActionValidation) {\r\n if (!rowAction.preActionValidation(rowAction.record)) {\r\n return;\r\n }\r\n }\r\n if (rowAction?.isConfirmationRequired === true) {\r\n setOpen(true);\r\n } else {\r\n await rowAction.actionFn(rowAction.record);\r\n if (\r\n rowAction?.gridActionProps?.reloadGridAfterAction === true &&\r\n rowAction?.reloadData\r\n ) {\r\n rowAction.reloadData();\r\n }\r\n }\r\n }\r\n }}\r\n />\r\n </>\r\n );\r\n }\r\n};\r\n\r\nexport default TemplateGridRecordAction;\r\n","import {\r\n DataGridPremium,\r\n GridActionsCellItem,\r\n GridActionsCellItemProps,\r\n GridColumnOrderChangeParams,\r\n GridColumnResizeParams,\r\n GridColumnVisibilityModel,\r\n GridEventListener,\r\n GridExpandMoreIcon,\r\n GridPinnedColumnFields,\r\n GridRowGroupingModel,\r\n GridRowModes,\r\n GridRowModesModel,\r\n GridRowParams,\r\n GridRowSelectionModel,\r\n} from \"@mui/x-data-grid-premium\";\r\nimport { TemplateGridColDef, TemplateGridProps } from \"../DataEntryTypes\";\r\nimport TemplateGridTopBar from \"./TemplateGridTopBar\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { z } from \"zod\";\r\nimport {\r\n constructGridColumnsFromFields,\r\n constructValidationSchema,\r\n getAllFields,\r\n} from \"../DataEntryUtil\";\r\nimport { toast } from \"react-toastify\";\r\nimport {\r\n Accordion,\r\n AccordionDetails,\r\n AccordionSummary,\r\n Box,\r\n Divider,\r\n IconButton,\r\n Tooltip,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport { capitalizeFirstLetter, isNumber } from \"../../../../util/AppUtils\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport TemplateGridRecordAction from \"./TemplateGridRecordAction\";\r\nimport TemplateForm from \"../TemplateDataForm/TemplateForm\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport useSession from \"../../../../hooks/UseSession\";\r\nimport { useConfirmationWindow } from \"../../../../hooks/UseConfirmationWindow\";\r\nimport { useWindow } from \"../../../../hooks/UseWindow\";\r\nimport { useAxios } from \"../../../../hooks\";\r\nimport useLookupGridColumn from \"../../../../hooks/useLookupGridColumn\";\r\nimport { ContinuousColorLegend } from \"@mui/x-charts\";\r\nlet currentNewRecordIndex = -1;\r\n\r\ninterface GridState {\r\n columnVisibilityModel?: GridColumnVisibilityModel;\r\n columnOrder?: string[];\r\n columnWidths?: { [key: string]: number };\r\n columnGroupingModel?: GridRowGroupingModel;\r\n pinnedColumns?: GridPinnedColumnFields;\r\n}\r\n\r\nconst loadGridState = (gridStateKey: string): GridState => {\r\n try {\r\n const saved = localStorage.getItem(gridStateKey);\r\n return saved ? JSON.parse(saved) : {};\r\n } catch (e) {\r\n console.error(\"Failed to load grid state\", e);\r\n return {};\r\n }\r\n};\r\n\r\nconst saveGridState = (gridStateKey: string, statePart: GridState) => {\r\n const current = loadGridState(gridStateKey);\r\n localStorage.setItem(\r\n gridStateKey,\r\n JSON.stringify({ ...current, ...statePart })\r\n );\r\n};\r\n\r\nconst PIN_FIXED_COLUMNS = [\"__check__\", \"actions\"];\r\n\r\nconst TemplateGrid: React.FC<TemplateGridProps> = (props) => {\r\n const AppLayout = useSelector((state: any) => state.AppLayout);\r\n const { getLookupOptions } = useLookupGridColumn();\r\n const [generatedColumns, setGeneratedColumns] = useState<\r\n Array<TemplateGridColDef>\r\n >([]);\r\n const { t } = useTranslation();\r\n const fields = getAllFields(props.formElements);\r\n const hiddenFields = [];\r\n const savedState = React.useMemo<GridState>(\r\n () => (props?.gridStateKey ? loadGridState(props.gridStateKey) : {}),\r\n []\r\n );\r\n for (const field of fields) {\r\n if (field?.gridProps?.hidden === true) {\r\n hiddenFields.push(field.fieldName);\r\n }\r\n }\r\n let initialVisibilityState: GridColumnVisibilityModel = {};\r\n if (savedState?.columnVisibilityModel) {\r\n initialVisibilityState = savedState.columnVisibilityModel;\r\n const existingFields = Object.keys(initialVisibilityState);\r\n for (const field of hiddenFields) {\r\n if (!existingFields.includes(field)) {\r\n initialVisibilityState[field] = false;\r\n }\r\n }\r\n } else {\r\n for (const field of hiddenFields) {\r\n initialVisibilityState[field] = false;\r\n }\r\n }\r\n\r\n const themeDirection = useSelector(\r\n (state: any) => state.AppLayout.appDirection\r\n );\r\n\r\n const clearGridState = () => {\r\n if (props?.gridStateKey) {\r\n localStorage.removeItem(props.gridStateKey);\r\n }\r\n setColumnVisibilityModel({});\r\n setColumnOrder([]);\r\n setColumnWidths({});\r\n setGridRowGroupingModel([]);\r\n setPinnedColumns({\r\n left: [...(themeDirection === \"ltr\" ? PIN_FIXED_COLUMNS : [])],\r\n right: [...(themeDirection === \"rtl\" ? PIN_FIXED_COLUMNS : [])],\r\n });\r\n };\r\n const [columnVisibilityModel, setColumnVisibilityModel] =\r\n React.useState<GridColumnVisibilityModel>(initialVisibilityState);\r\n const [columnOrder, setColumnOrder] = React.useState<string[]>(\r\n savedState.columnOrder || []\r\n );\r\n const [columnWidths, setColumnWidths] = React.useState<{\r\n [key: string]: number;\r\n }>(savedState.columnWidths || {});\r\n const [gridRowGroupingModel, setGridRowGroupingModel] =\r\n useState<GridRowGroupingModel>(savedState.columnGroupingModel || []);\r\n let newLeft = savedState?.pinnedColumns?.left || [];\r\n newLeft = newLeft.filter(\r\n (record: any) => !PIN_FIXED_COLUMNS.includes(record)\r\n );\r\n let newRight = savedState?.pinnedColumns?.right || [] || [];\r\n newRight = newRight.filter(\r\n (record: any) => !PIN_FIXED_COLUMNS.includes(record)\r\n );\r\n\r\n const [pinnedColumns, setPinnedColumns] = useState<GridPinnedColumnFields>({\r\n left: [...(themeDirection === \"ltr\" ? PIN_FIXED_COLUMNS : []), ...newLeft],\r\n right: [\r\n ...(themeDirection === \"rtl\" ? PIN_FIXED_COLUMNS : []),\r\n ...newRight,\r\n ],\r\n });\r\n\r\n const session = useSession();\r\n const navigate = useNavigate();\r\n const [recordToDelete, setRecordToDelete] = useState<any>(null);\r\n const [recordToEdit, setRecordToEdit] = useState<any>(null);\r\n const [rowModesModel, setRowModesModel] = useState<GridRowModesModel>({});\r\n const adjustGridColumns = async () => {\r\n let gridColumns = constructGridColumnsFromFields(\r\n fields,\r\n props?.editMode?.editMode === \"row\" || false,\r\n t\r\n );\r\n for (let gridColumn of gridColumns) {\r\n if (gridColumn?.lookupType) {\r\n gridColumn.displayField =\r\n AppLayout.appDirection === \"ltr\"\r\n ? \"lookupEnDisplay\"\r\n : \"lookupArDisplay\";\r\n gridColumn.options = await getLookupOptions(gridColumn.lookupType);\r\n gridColumn.valueField = \"lookupValue\";\r\n }\r\n } \r\n setGeneratedColumns(gridColumns);\r\n };\r\n const [rowSelectionModel, setRowSelectionModel] =\r\n useState<GridRowSelectionModel>({ ids: new Set(), type: \"include\" });\r\n let keyColumnName: string = \"id\";\r\n if (props?.keyColumnName) {\r\n keyColumnName = props?.keyColumnName;\r\n }\r\n const setData = props.setData;\r\n const validationSchema = z.object(constructValidationSchema(fields));\r\n let isEditAllowed = true;\r\n if (props?.editAction?.authority) {\r\n isEditAllowed = session.isUserAuthorized(props.editAction.authority);\r\n }\r\n let isDeleteAllowed = true;\r\n if (props?.deleteAction?.authority) {\r\n isDeleteAllowed = session.isUserAuthorized(props.deleteAction.authority);\r\n }\r\n\r\n const handleRowModesModelChange = (newModel: GridRowModesModel) => {\r\n setRowModesModel(newModel);\r\n };\r\n\r\n const handlePinnedColumnsChange = (newModel: GridPinnedColumnFields) => {\r\n let newLeft = newModel?.left || [];\r\n newLeft = newLeft.filter(\r\n (record: any) => !PIN_FIXED_COLUMNS.includes(record)\r\n );\r\n let newRight = newModel?.right || [];\r\n newRight = newRight.filter(\r\n (record: any) => !PIN_FIXED_COLUMNS.includes(record)\r\n );\r\n const newPinedColumns: GridPinnedColumnFields = {\r\n left: [\r\n ...(themeDirection === \"ltr\" ? PIN_FIXED_COLUMNS : []),\r\n ...newLeft,\r\n ],\r\n right: [\r\n ...(themeDirection === \"rtl\" ? PIN_FIXED_COLUMNS : []),\r\n ...newRight,\r\n ],\r\n };\r\n setPinnedColumns(newPinedColumns);\r\n if (props?.gridStateKey) {\r\n saveGridState(props.gridStateKey, { pinnedColumns: newPinedColumns });\r\n }\r\n };\r\n\r\n const handleDeleteRecord = async () => {\r\n let result = true;\r\n if (!(recordToDelete && recordToDelete?.isNew === true)) {\r\n result = await props.apiActions.deleteRecordById(\r\n recordToDelete[keyColumnName]\r\n );\r\n }\r\n if (result) {\r\n if (props?.deleteAction?.postActionCallBack) {\r\n await props.deleteAction.postActionCallBack(recordToDelete);\r\n }\r\n\r\n setData((oldData: any) => {\r\n const newData = oldData.filter(\r\n (record: any) =>\r\n record[keyColumnName] != recordToDelete[keyColumnName]\r\n );\r\n return newData;\r\n });\r\n }\r\n };\r\n\r\n const { ConfirmationWindow, setOpen: setConfirmationWindowOpened } =\r\n useConfirmationWindow({\r\n title: \"Confirmation\",\r\n body: \"Are you sure you want to delete this record ?\",\r\n onConfirmationCallBk: handleDeleteRecord,\r\n });\r\n\r\n let formModalHeight = undefined;\r\n let formModalWidth = undefined;\r\n let formModalMinHeight = undefined;\r\n let formModalMinWidth = undefined;\r\n let formModalIcon = undefined;\r\n let formModalTitle = undefined;\r\n\r\n if (props?.editMode?.editMode === \"modal\") {\r\n formModalHeight = props?.editMode?.specs?.modalHeight || \"fit-content\";\r\n formModalWidth = props?.editMode?.specs?.modalWidth || \"300\";\r\n formModalMinHeight = props?.editMode?.specs?.modalMinHeight;\r\n formModalMinWidth = props?.editMode?.specs?.modalMinWidth;\r\n formModalIcon = props?.editMode?.specs?.modalIcon || \"window\";\r\n formModalTitle = props?.editMode?.specs?.modalTitle || \"Record Form\";\r\n }\r\n\r\n const { Window: FormWindow, setWindowState: setFormWindowState } = useWindow({\r\n height: formModalHeight,\r\n minHeight: formModalMinHeight,\r\n minWidth: formModalMinWidth,\r\n onCloseCallBack: () => {\r\n props.apiActions.reloadData(props?.gridLoadParametersValues);\r\n },\r\n width: formModalWidth,\r\n windowIcon: formModalIcon,\r\n windowTitle: formModalTitle,\r\n });\r\n\r\n const handleCreateNewRecord = () => {\r\n if (props?.editMode?.editMode === \"form\") {\r\n navigate(props.editMode.specs.formRoute);\r\n } else if (props?.editMode?.editMode === \"modal\") {\r\n setRecordToEdit(null);\r\n setFormWindowState(true);\r\n } else if (props?.editMode?.editMode === \"row\") {\r\n currentNewRecordIndex = currentNewRecordIndex - 1;\r\n const newRecord: any = {};\r\n newRecord[keyColumnName] = currentNewRecordIndex;\r\n newRecord.isNew = true;\r\n for (const gridColumn of generatedColumns) {\r\n if (\r\n gridColumn?.type != \"actions\" &&\r\n gridColumn?.field != keyColumnName\r\n ) {\r\n if (gridColumn?.field) {\r\n newRecord[gridColumn.field] = null;\r\n }\r\n }\r\n }\r\n setData((oldRows: any) => [newRecord, ...oldRows]);\r\n setRowModesModel((oldModel: any) => ({\r\n ...oldModel,\r\n [currentNewRecordIndex]: { mode: GridRowModes.Edit },\r\n }));\r\n }\r\n };\r\n\r\n const handleEditRecord = async (record: any) => {\r\n if (record) {\r\n setRecordToEdit(record);\r\n if (props.editMode.editMode === \"form\") {\r\n navigate(props.editMode.specs.formRoute + \"/\" + record[keyColumnName]);\r\n } else if (props.editMode.editMode === \"modal\") {\r\n setFormWindowState(true);\r\n } else if (props?.editMode?.editMode === \"row\") {\r\n const id = record[keyColumnName];\r\n setRowModesModel({\r\n ...rowModesModel,\r\n [id]: { mode: GridRowModes.Edit },\r\n });\r\n }\r\n }\r\n };\r\n\r\n const validateRecord = (record: any) => {\r\n try {\r\n validationSchema.parse(record);\r\n } catch (err) {\r\n console.log(\"validateRecord err\", err);\r\n let errorMessage: any = null;\r\n if (err instanceof z.ZodError) {\r\n errorMessage = err.errors\r\n .map(\r\n (error) => \"Error in field (\" + error.path + \") : \" + error.message\r\n )\r\n .join(\",\");\r\n } else {\r\n errorMessage = \"invalid record data\";\r\n }\r\n return errorMessage;\r\n }\r\n };\r\n\r\n const handleSaveRowClick = (record: any) => {\r\n const id = record[keyColumnName];\r\n setRowModesModel({\r\n ...rowModesModel,\r\n [id]: { mode: GridRowModes.View },\r\n });\r\n };\r\n\r\n const processRowUpdate = async (record: any) => {\r\n if (props.editMode.editMode === \"row\") {\r\n let savedRecord: any = null;\r\n const errorMessage = validateRecord(record);\r\n if (errorMessage) {\r\n const errors = errorMessage.split(\",\");\r\n toast.error(\r\n <div style={{}}>\r\n {errors.map((error: any) => (\r\n <>\r\n <div>{error}</div>\r\n <Divider />\r\n </>\r\n ))}\r\n </div>\r\n );\r\n throw new Error(errorMessage);\r\n }\r\n if (props?.editAction?.preActionValidation) {\r\n if (!props.editAction.preActionValidation(record)) {\r\n throw new Error(\"error on the configured presave validation\");\r\n }\r\n }\r\n const requestObject: any = { ...record };\r\n if (\r\n record[keyColumnName] &&\r\n isNumber(record[keyColumnName]) &&\r\n Number(record[keyColumnName]) < 0\r\n ) {\r\n requestObject[keyColumnName] = null;\r\n }\r\n savedRecord = await props.apiActions.saveRecord(requestObject);\r\n if (savedRecord == null) {\r\n throw new Error(\r\n \"Failed to process your request, contact your administrator\"\r\n );\r\n }\r\n if (props?.editAction?.postActionCallBack) {\r\n await props.editAction.postActionCallBack(record);\r\n }\r\n if (record?.isNew === true) {\r\n setData((oldData: any) => {\r\n const newData = oldData.filter(\r\n (x: any) => x[keyColumnName] !== record[keyColumnName]\r\n );\r\n return [savedRecord, ...newData];\r\n });\r\n }\r\n if (\r\n props?.editMode?.reloadAfterSave === true &&\r\n props?.apiActions?.reloadData\r\n ) {\r\n props?.apiActions?.reloadData(props?.gridLoadParametersValues);\r\n }\r\n return savedRecord;\r\n }\r\n };\r\n\r\n const handleCancelRowEditClick = (record: any) => {\r\n const id = record[keyColumnName];\r\n if (id && isNumber(id) && id < 0) {\r\n setRowModesModel({\r\n ...rowModesModel,\r\n [id]: { mode: GridRowModes.View, ignoreModifications: true },\r\n });\r\n setData((oldData: any) => {\r\n const newData = oldData.filter(\r\n (record: any) => record[keyColumnName] != id\r\n );\r\n return newData;\r\n });\r\n } else {\r\n setRowModesModel({\r\n ...rowModesModel,\r\n [id]: { mode: GridRowModes.View, ignoreModifications: true },\r\n });\r\n }\r\n };\r\n\r\n const getActionColumnActions = (params: GridRowParams<any>) => {\r\n const record: any = params.row;\r\n const actions: Array<React.ReactElement<GridActionsCellItemProps>> = [];\r\n if (props?.editMode?.editMode != \"none\") {\r\n if (\r\n props?.disableDefaultAction === undefined ||\r\n !props.disableDefaultAction\r\n ) {\r\n const isInEditMode: boolean =\r\n rowModesModel[record[keyColumnName]]?.mode === GridRowModes.Edit;\r\n if (props.editMode.editMode === \"row\" && isInEditMode) {\r\n if (isEditAllowed) {\r\n actions.push(\r\n <GridActionsCellItem\r\n icon={<FontAwesomeIcon icon=\"save\" />}\r\n label={t(\"SAVE_BTN_LABEL\")}\r\n onClick={() => {\r\n handleSaveRowClick(record);\r\n }}\r\n />\r\n );\r\n actions.push(\r\n <GridActionsCellItem\r\n icon={<FontAwesomeIcon icon=\"cancel\" />}\r\n label={t(\"CANCEL_BTN_LABEL\")}\r\n onClick={() => {\r\n handleCancelRowEditClick(record);\r\n }}\r\n color=\"inherit\"\r\n />\r\n );\r\n }\r\n } else {\r\n if (props?.editAction && props?.editAction?.isEnabled === true) {\r\n let isEditActionVisibleForRecord = true;\r\n if (props?.editAction?.isActionVisibleForRecord) {\r\n isEditActionVisibleForRecord =\r\n props?.editAction?.isActionVisibleForRecord(record);\r\n }\r\n let isActionEditDisabledForRecord = false;\r\n if (props?.editAction?.isActionDisabledForRecord) {\r\n isActionEditDisabledForRecord =\r\n props?.editAction?.isActionDisabledForRecord(record);\r\n }\r\n if (isEditAllowed && isEditActionVisibleForRecord) {\r\n actions.push(\r\n <GridActionsCellItem\r\n disabled={isActionEditDisabledForRecord}\r\n icon={\r\n <Tooltip title={t(\"EDIT_BTN_LABEL\")}>\r\n <FontAwesomeIcon\r\n icon={\"edit\"}\r\n style={{\r\n color: isActionEditDisabledForRecord\r\n ? \"gray\"\r\n : undefined,\r\n }}\r\n />\r\n </Tooltip>\r\n }\r\n showInMenu={\r\n props?.editAction?.gridActionProps?.showInMenu || false\r\n }\r\n label={t(\"EDIT_BTN_LABEL\")}\r\n className=\"textPrimary\"\r\n color=\"inherit\"\r\n onClick={() => {\r\n if (isEditAllowed && !isActionEditDisabledForRecord) {\r\n handleEditRecord(record);\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n if (props?.deleteAction && props?.deleteAction?.isEnabled === true) {\r\n let isDeleteActionVisibleForRecord = true;\r\n if (props?.deleteAction?.isActionVisibleForRecord) {\r\n isDeleteActionVisibleForRecord =\r\n props?.deleteAction?.isActionVisibleForRecord(record);\r\n }\r\n let isDeleteActionDisabledForRecord = false;\r\n if (props?.deleteAction?.isActionDisabledForRecord) {\r\n isDeleteActionDisabledForRecord =\r\n props?.deleteAction?.isActionDisabledForRecord(record);\r\n }\r\n if (isDeleteAllowed && isDeleteActionVisibleForRecord) {\r\n actions.push(\r\n <GridActionsCellItem\r\n disabled={isDeleteActionDisabledForRecord}\r\n icon={\r\n <Tooltip title={t(\"DELETE_BTN_LABEL\")}>\r\n <FontAwesomeIcon\r\n icon={\"trash\"}\r\n style={{\r\n color: isDeleteActionDisabledForRecord\r\n ? \"gray\"\r\n : undefined,\r\n }}\r\n />\r\n </Tooltip>\r\n }\r\n showInMenu={\r\n props?.deleteAction?.gridActionProps?.showInMenu || false\r\n }\r\n label={t(\"DELETE_BTN_LABEL\")}\r\n className=\"textPrimary\"\r\n color=\"inherit\"\r\n onClick={() => {\r\n if (isDeleteAllowed && !isDeleteActionDisabledForRecord) {\r\n if (props?.deleteAction?.preActionValidation) {\r\n if (!props.deleteAction.preActionValidation(record)) {\r\n return;\r\n }\r\n }\r\n setRecordToDelete(record);\r\n setConfirmationWindowOpened(true);\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (props?.rowActions) {\r\n for (const rowAction of props.rowActions) {\r\n if (\r\n !(\r\n rowAction?.gridActionProps?.multiRecord &&\r\n rowAction?.gridActionProps?.multiRecord === true\r\n )\r\n ) {\r\n actions.push(\r\n <TemplateGridRecordAction\r\n {...rowAction}\r\n record={record}\r\n reloadData={async () => {\r\n props.apiActions.reloadData(props?.gridLoadParametersValues);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n\r\n return actions;\r\n };\r\n\r\n const actionColumn: TemplateGridColDef = {\r\n type: \"actions\",\r\n field: \"actions\",\r\n headerName: \"\",\r\n headerAlign: \"center\",\r\n width:\r\n (props?.rowActions ? props.rowActions.length * 30 : 0) +\r\n (props?.editAction && props?.editAction?.isEnabled ? 30 : 0) +\r\n (props?.deleteAction && props?.deleteAction?.isEnabled ? 30 : 0),\r\n getActions: getActionColumnActions,\r\n };\r\n\r\n let structuredColumns: Array<TemplateGridColDef> = [];\r\n if (\r\n props?.disableDefaultAction === undefined ||\r\n !props.disableDefaultAction ||\r\n (props?.rowActions && props?.rowActions.length > 0)\r\n ) {\r\n structuredColumns.push(actionColumn);\r\n }\r\n\r\n structuredColumns = [...structuredColumns, ...generatedColumns];\r\n const handleRowSelection = (gridSelectionModel: GridRowSelectionModel) => {\r\n setRowSelectionModel(gridSelectionModel);\r\n };\r\n useEffect(() => {\r\n if (props?.autoLoad === undefined || props.autoLoad === true) {\r\n props.apiActions.reloadData(props?.gridLoadParametersValues);\r\n }\r\n adjustGridColumns();\r\n }, []);\r\n\r\n useEffect(() => {\r\n adjustGridColumns();\r\n }, [themeDirection, props.formElements]);\r\n\r\n const handleColumnVisibilityChange = (model: GridColumnVisibilityModel) => {\r\n setColumnVisibilityModel(model);\r\n if (props?.gridStateKey) {\r\n saveGridState(props.gridStateKey, { columnVisibilityModel: model });\r\n }\r\n };\r\n\r\n const handleColumnOrderChange: GridEventListener<\"columnOrderChange\"> = (\r\n params: GridColumnOrderChangeParams\r\n ) => {\r\n const { column, targetIndex } = params;\r\n setColumnOrder((prevOrder) => {\r\n const currentOrder = prevOrder.length\r\n ? [...prevOrder]\r\n : structuredColumns.map((col) => col.field);\r\n const fromIndex = currentOrder.indexOf(column.field);\r\n if (fromIndex === -1) return currentOrder;\r\n\r\n currentOrder.splice(fromIndex, 1); // remove\r\n currentOrder.splice(targetIndex, 0, column.field); // insert at new index\r\n\r\n if (props?.gridStateKey) {\r\n saveGridState(props.gridStateKey, { columnOrder: currentOrder });\r\n }\r\n\r\n return currentOrder;\r\n });\r\n };\r\n\r\n const handleRowGroupChange = (model: GridRowGroupingModel) => {\r\n setGridRowGroupingModel(model);\r\n if (props?.gridStateKey) {\r\n saveGridState(props.gridStateKey, { columnGroupingModel: model });\r\n }\r\n };\r\n\r\n const handleColumnWidthChange: GridEventListener<\"columnWidthChange\"> = (\r\n params: GridColumnResizeParams\r\n ) => {\r\n const updatedWidths = {\r\n ...columnWidths,\r\n [params.colDef.field]: params.width,\r\n };\r\n setColumnWidths(updatedWidths);\r\n if (props?.gridStateKey) {\r\n saveGridState(props.gridStateKey, { columnWidths: updatedWidths });\r\n }\r\n };\r\n\r\n const adjustedColumns: Array<TemplateGridColDef> = React.useMemo(() => {\r\n const baseCols = structuredColumns.map((col) => ({\r\n ...col,\r\n width: columnWidths[col.field] || col.width,\r\n }));\r\n\r\n // Reorder based on saved columnOrder\r\n if (columnOrder.length) {\r\n const fieldToCol = new Map(baseCols.map((col) => [col.field, col]));\r\n return columnOrder.map((field) => fieldToCol.get(field)!).filter(Boolean);\r\n }\r\n\r\n return baseCols;\r\n }, [columnOrder, columnWidths, structuredColumns]);\r\n return (\r\n <>\r\n <ConfirmationWindow />\r\n {props?.editMode?.editMode === \"modal\" ? (\r\n <FormWindow>\r\n {props?.editMode?.specs?.formComponent ? (\r\n <props.editMode.specs.formComponent\r\n recordIdToEdit={\r\n recordToEdit ? recordToEdit[keyColumnName] : undefined\r\n }\r\n formCloseCallBk={() => {\r\n setFormWindowState(false);\r\n props.apiActions.reloadData(props?.gridLoadParametersValues);\r\n }}\r\n />\r\n ) : (\r\n <TemplateForm\r\n formLoadCallBk={props.formLoadCallBk}\r\n recordIdToEdit={\r\n recordToEdit ? recordToEdit[keyColumnName] : undefined\r\n }\r\n formCloseCallBk={() => {\r\n setFormWindowState(false);\r\n props.apiActions.reloadData(props?.gridLoadParametersValues);\r\n }}\r\n elements={props.formElements}\r\n apiActions={props.apiActions}\r\n editAuthorityKey={props?.editAction?.authority}\r\n formSavedSuccessfullyCallBk={\r\n props?.editAction?.postActionCallBack\r\n }\r\n preSaveValidation={props?.editAction?.preActionValidation}\r\n actions={props?.rowActions}\r\n />\r\n )}\r\n </FormWindow>\r\n ) : (\r\n <></>\r\n )}\r\n {props?.hideInfoBar === undefined && !props?.hideInfoBar ? (\r\n <Box sx={{ display: \"flex\" }}>\r\n {props?.hideBackButton === undefined && !props?.hideBackButton ? (\r\n <IconButton\r\n onClick={() => {\r\n navigate(-1, { replace: true });\r\n }}\r\n >\r\n <FontAwesomeIcon icon=\"arrow-left\" />\r\n </IconButton>\r\n ) : (\r\n <></>\r\n )}\r\n <Box\r\n sx={{\r\n flex: 1,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n {props?.girdIcon ? (\r\n <FontAwesomeIcon\r\n icon={props.girdIcon}\r\n style={{ marginRight: 5, marginLeft: 5 }}\r\n />\r\n ) : (\r\n <></>\r\n )}\r\n <Typography variant=\"h5\">\r\n {props?.gridTitle\r\n ? capitalizeFirstLetter(t(props?.gridTitle))\r\n : \"\"}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n ) : (\r\n <></>\r\n )}\r\n\r\n {props?.gridLoadParameters &&\r\n props?.gridLoadParameters.length > 0 &&\r\n props?.gridLoadParametersValues &&\r\n props?.setGridLoadParametersValues ? (\r\n <Accordion defaultExpanded sx={{ width: \"100%\" }}>\r\n <AccordionSummary expandIcon={<GridExpandMoreIcon />}>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <FontAwesomeIcon\r\n style={{ marginLeft: 5, marginRight: 5 }}\r\n icon=\"search\"\r\n />\r\n <Typography component=\"span\">Filters</Typography>\r\n </Box>\r\n </AccordionSummary>\r\n <AccordionDetails>\r\n <Box>\r\n <TemplateForm\r\n saveButtonSpecs={{\r\n label: t(\"SEARCH_BTN_LABEL\"),\r\n icon: \"search\",\r\n actionButtonVariant: \"outlined\",\r\n actionButtonColor: \"success\",\r\n }}\r\n cancelButtonSpecs={{\r\n label: t(\"RESET_BTN_LABEL\"),\r\n icon: \"eraser\",\r\n actionButtonVariant: \"outlined\",\r\n actionButtonColor: \"error\",\r\n }}\r\n apiActions={{\r\n deleteRecordById: async () => {\r\n return true;\r\n },\r\n saveRecord: async (params) => {\r\n if (params != undefined) {\r\n props.setGridLoadParametersValues(params);\r\n } else {\r\n props.setGridLoadParametersValues({});\r\n }\r\n props.apiActions.reloadData(params);\r\n },\r\n reloadData: async () => {},\r\n loadRecordById: async () => {},\r\n }}\r\n elements={props.gridLoadParameters}\r\n />\r\n </Box>\r\n </AccordionDetails>\r\n </Accordion>\r\n ) : (\r\n <></>\r\n )}\r\n\r\n <DataGridPremium\r\n {...props?.muiProps}\r\n slots={{ toolbar: TemplateGridTopBar }}\r\n slotProps={{\r\n toolbar: {\r\n templateProps: {\r\n ...props,\r\n rowSelectionModel: rowSelectionModel,\r\n data: props?.data,\r\n },\r\n handleCreateNewRecord,\r\n clearGridState,\r\n } as any,\r\n }}\r\n getRowId={(record: any) => {\r\n return record[keyColumnName];\r\n }}\r\n showToolbar={true}\r\n rows={props?.data}\r\n columns={adjustedColumns}\r\n checkboxSelection\r\n editMode=\"row\"\r\n rowModesModel={\r\n props.editMode.editMode == \"row\" ? rowModesModel : undefined\r\n }\r\n onRowModesModelChange={\r\n props.editMode.editMode == \"row\"\r\n ? handleRowModesModelChange\r\n : undefined\r\n }\r\n rowGroupingColumnMode=\"multiple\"\r\n processRowUpdate={processRowUpdate}\r\n rowSelectionModel={rowSelectionModel}\r\n onRowSelectionModelChange={handleRowSelection}\r\n columnVisibilityModel={columnVisibilityModel}\r\n onColumnVisibilityModelChange={handleColumnVisibilityChange}\r\n onColumnOrderChange={handleColumnOrderChange}\r\n onColumnWidthChange={handleColumnWidthChange}\r\n rowGroupingModel={gridRowGroupingModel}\r\n onRowGroupingModelChange={(model: GridRowGroupingModel) => {\r\n handleRowGroupChange(model);\r\n }}\r\n pinnedColumns={pinnedColumns}\r\n onPinnedColumnsChange={handlePinnedColumnsChange}\r\n sx={{ width: \"100%\" }}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default TemplateGrid;\r\n","import { useSelector } from \"react-redux\";\r\nimport { TemplateGridColDef } from \"../components\";\r\nimport useAxios from \"./useAxios\";\r\n\r\nconst useLookupGridColumn = () => {\r\n const { handleGetRequest } = useAxios();\r\n const AppLayout = useSelector((state: any) => state.AppLayout);\r\n const getLookupOptions = async (lookupType: string) => {\r\n let options = [];\r\n await handleGetRequest({\r\n endPointURI: \"api/v1/dev/system/lookup\",\r\n showMask: true,\r\n parameters: { lookupType },\r\n successCallBkFn: (response: any) => {\r\n options = response.data;\r\n },\r\n });\r\n return options;\r\n };\r\n const generateLookupGridColumn = async (props: TemplateGridColDef) => { \r\n let options = await getLookupOptions(props.lookupType);\r\n return {\r\n ...props,\r\n options,\r\n displayField:\r\n AppLayout.appDirection === \"ltr\"\r\n ? \"lookupEnDisplay\"\r\n : \"lookupArDisplay\",\r\n valueField: \"lookupValue\",\r\n };\r\n };\r\n return { generateLookupGridColumn, getLookupOptions };\r\n};\r\n\r\nexport default useLookupGridColumn;\r\n","import { useState } from \"react\";\r\nimport { useAxios, useSession } from \"../../hooks\";\r\nimport { ComboBox } from \"../templates\";\r\nimport { Box, Button } from \"@mui/material\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { UserSessionActions } from \"../../redux/features/common/UserSessionSlice\";\r\n\r\ntype ChangeOrgFormProps = {\r\n successChangeCallBackFn: () => void;\r\n};\r\n\r\nconst ChangeOrgForm: React.FC<ChangeOrgFormProps> = (props) => {\r\n const { UserSession } = useSession();\r\n const AppLayoutState = useSelector((state: any) => state.AppLayout);\r\n const dispatch = useDispatch();\r\n const { handlePostRequest } = useAxios();\r\n const [newOrgId, setNewOrgId] = useState(\r\n UserSession.value.currentOrganization.id\r\n );\r\n return (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n width: \"100%\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n padding: 1,\r\n }}\r\n >\r\n <ComboBox\r\n sx={{ width: \"100%\" }}\r\n displayField={\r\n AppLayoutState.appDirection === \"ltr\"\r\n ? \"organizationEnName\"\r\n : \"organizationArName\"\r\n }\r\n valueField=\"id\"\r\n label=\"\"\r\n options={UserSession.value.userOrganizations}\r\n value={newOrgId}\r\n onChangeCallBack={(value) => {\r\n setNewOrgId(value);\r\n }}\r\n />\r\n <Button\r\n sx={{ m: 1 }}\r\n variant=\"contained\"\r\n disabled={\r\n newOrgId == null ||\r\n newOrgId === UserSession.value.currentOrganization.id\r\n }\r\n onClick={async () => {\r\n await handlePostRequest({\r\n endPointURI: \"api/auth/changeCurrentOrg\",\r\n showMask: true,\r\n parameters: {\r\n username: UserSession.value.username,\r\n orgId: newOrgId,\r\n },\r\n data: {},\r\n successCallBkFn: (response) => {\r\n const UserSession = {\r\n ...response.data,\r\n isAuthenticated: true,\r\n };\r\n dispatch(UserSessionActions.setAuthenticated(UserSession));\r\n if (props.successChangeCallBackFn) {\r\n props.successChangeCallBackFn();\r\n }\r\n },\r\n });\r\n }}\r\n >\r\n Change Organization\r\n </Button>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default ChangeOrgForm;\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\n\r\nexport const DRAWER_WIDTH = 350;\r\n\r\ninterface SideBarState {\r\n isOpened: boolean;\r\n}\r\n\r\nconst initialState: SideBarState = {\r\n isOpened: false,\r\n};\r\n\r\nconst SideBarSlice = createSlice({\r\n name: \"SideBar\",\r\n initialState,\r\n reducers: {\r\n toggleSideBarState: (state) => {\r\n state.isOpened = !state.isOpened;\r\n },\r\n setSideBarState: (state, action) => {\r\n state.isOpened = action.payload;\r\n },\r\n },\r\n});\r\n\r\nexport const { toggleSideBarState, setSideBarState } = SideBarSlice.actions;\r\nexport default SideBarSlice.reducer;\r\n","import {\r\n Avatar,\r\n Box,\r\n IconButton,\r\n styled,\r\n Tooltip,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport MuiAppBar, { AppBarProps as MuiAppBarProps } from \"@mui/material/AppBar\";\r\nimport Toolbar from \"@mui/material/Toolbar\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { useIsMobile } from \"../hooks/UseMobile\";\r\nimport {\r\n AppLayoutActions,\r\n DRAWER_WIDTH,\r\n} from \"../redux/features/common/AppLayoutSlice\";\r\nimport useAxios from \"../hooks/useAxios\";\r\nimport { UserSessionActions } from \"../redux/features/common/UserSessionSlice\";\r\nimport i18n, { changeLanguage } from \"../locales/i18n\";\r\nimport { useSession, useWindow } from \"../hooks\";\r\nimport ChangeOrgForm from \"../components/common/ChangeOrgForm\";\r\nimport { toggleSideBarState } from \"../redux/features/common/SideBarSlice\";\r\n\r\ninterface AppBarProps extends MuiAppBarProps {\r\n open?: boolean;\r\n}\r\n\r\nconst AppBar = styled(MuiAppBar, {\r\n shouldForwardProp: (prop) => prop !== \"open\",\r\n})<AppBarProps>(({ theme }) => {\r\n const AppLayout = useSelector((state: any) => state.AppLayout);\r\n const isMobile = useIsMobile();\r\n return {\r\n transition: theme.transitions.create([\"margin\", \"width\"], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n variants: [\r\n {\r\n props: ({ open }) => open,\r\n style: {\r\n width: !isMobile ? `calc(100% - ${DRAWER_WIDTH}px)` : undefined,\r\n marginLeft:\r\n !isMobile && AppLayout.appDirection === \"ltr\"\r\n ? `${DRAWER_WIDTH}px`\r\n : undefined,\r\n marginRight:\r\n !isMobile && AppLayout.appDirection === \"rtl\"\r\n ? `${DRAWER_WIDTH}px`\r\n : undefined,\r\n transition: theme.transitions.create([\"margin\", \"width\"], {\r\n easing: theme.transitions.easing.easeOut,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n },\r\n },\r\n ],\r\n };\r\n});\r\n\r\nconst TopBar: React.FC = () => {\r\n const { Window: ChangeOrgWindow, setWindowState: setChangeOrgWindowState } =\r\n useWindow({\r\n windowTitle: \"Change Current Organization\",\r\n windowIcon: \"globe\",\r\n width: \"fit-content\",\r\n height: \"fit-content\",\r\n });\r\n const AppInfo = useSelector((state: any) => state.AppInfo.value);\r\n const AppLayout = useSelector((state: any) => state.AppLayout);\r\n const SideBarState = useSelector((state: any) => state.SideBar);\r\n const { UserSession } = useSession();\r\n const currentOrganization = UserSession.value.currentOrganization;\r\n const { handleGetRequest } = useAxios();\r\n const isMobile = useIsMobile();\r\n const dispatch = useDispatch();\r\n const handleLogout = async () => {\r\n try {\r\n await handleGetRequest({ endPointURI: \"api/auth/logout\" });\r\n } catch (error) {\r\n console.log(\"logout error\", error);\r\n }\r\n dispatch(UserSessionActions.setUnAuthenticated());\r\n };\r\n const toggleSideBar = () => {\r\n dispatch(toggleSideBarState());\r\n };\r\n return (\r\n <>\r\n <ChangeOrgWindow>\r\n <ChangeOrgForm\r\n successChangeCallBackFn={() => {\r\n setChangeOrgWindowState(false);\r\n }}\r\n />\r\n </ChangeOrgWindow>\r\n <AppBar position=\"fixed\" open={SideBarState.isOpened}>\r\n <Toolbar>\r\n <IconButton\r\n color=\"inherit\"\r\n aria-label=\"open drawer\"\r\n onClick={toggleSideBar}\r\n edge=\"start\"\r\n sx={[\r\n {\r\n mr: AppLayout.appDirection === \"ltr\" ? 2 : undefined,\r\n ml: AppLayout.appDirection === \"rtl\" ? 2 : undefined,\r\n },\r\n SideBarState.isOpened && { display: \"none\" },\r\n ]}\r\n >\r\n <FontAwesomeIcon icon=\"bars\" />\r\n </IconButton>\r\n <Avatar\r\n src={AppInfo.appLogo}\r\n sx={{ marginRight: 1, marginLeft: 1 }}\r\n />\r\n <Typography variant=\"h6\" noWrap component=\"div\" sx={{ flex: 1 }}>\r\n {isMobile\r\n ? \"\"\r\n : `${AppInfo.appName} - ${\r\n AppLayout.appDirection === \"ltr\"\r\n ? currentOrganization?.organizationEnName\r\n : currentOrganization?.organizationArName\r\n }`}\r\n </Typography>\r\n <Tooltip\r\n title={\r\n AppLayout.themeMode === \"light\"\r\n ? \"Switch Theme to Dark\"\r\n : \"Switch Theme to Light\"\r\n }\r\n >\r\n <IconButton\r\n color=\"inherit\"\r\n onClick={() => {\r\n dispatch(\r\n AppLayoutActions.setThemeMode(\r\n AppLayout.themeMode === \"light\" ? \"dark\" : \"light\"\r\n )\r\n );\r\n localStorage.setItem(\r\n \"themeMode\",\r\n AppLayout.themeMode === \"light\" ? \"dark\" : \"light\"\r\n );\r\n }}\r\n >\r\n {AppLayout.themeMode === \"light\" ? (\r\n <FontAwesomeIcon icon=\"moon\" />\r\n ) : (\r\n <FontAwesomeIcon icon={{ prefix: \"far\", iconName: \"sun\" }} />\r\n )}\r\n </IconButton>\r\n </Tooltip>\r\n <Tooltip\r\n title={\r\n i18n.language === \"ar\"\r\n ? \"Change Language To English\"\r\n : \"Change Language To Arabic\"\r\n }\r\n >\r\n <IconButton\r\n color=\"inherit\"\r\n onClick={() => {\r\n let nextLanguage = i18n.language === \"ar\" ? \"en\" : \"ar\";\r\n changeLanguage(nextLanguage);\r\n dispatch(\r\n AppLayoutActions.setAppDirection(\r\n nextLanguage === \"ar\" ? \"rtl\" : \"ltr\"\r\n )\r\n );\r\n }}\r\n >\r\n <FontAwesomeIcon icon=\"language\" />\r\n </IconButton>\r\n </Tooltip>\r\n {UserSession.value?.userOrganizations &&\r\n UserSession.value?.userOrganizations.length > 1 ? (\r\n <Tooltip title=\"Change Current Organization\">\r\n <IconButton\r\n color=\"inherit\"\r\n onClick={() => {\r\n setChangeOrgWindowState(true);\r\n }}\r\n >\r\n <FontAwesomeIcon icon=\"globe\" />\r\n </IconButton>\r\n </Tooltip>\r\n ) : (\r\n <></>\r\n )}\r\n\r\n <Avatar />\r\n <div style={{ marginLeft: 5, marginRight: 5 }}>\r\n {isMobile ? \"\" : UserSession.value?.username}\r\n </div>\r\n <IconButton color=\"inherit\" onClick={handleLogout}>\r\n <FontAwesomeIcon\r\n rotation={AppLayout.appDirection === \"rtl\" ? 180 : undefined}\r\n icon=\"arrow-right-from-bracket\"\r\n />\r\n </IconButton>\r\n </Toolbar>\r\n </AppBar>\r\n </>\r\n );\r\n};\r\n\r\nexport default TopBar;\r\n","import { styled } from \"@mui/material\";\r\n\r\nexport const DrawerHeader = styled(\"div\")(({ theme }) => ({\r\n display: \"flex\",\r\n alignItems: \"center\", \r\n // padding: theme.spacing(0, 1),\r\n // necessary for content to be below app bar\r\n ...theme.mixins.toolbar,\r\n justifyContent: \"flex-end\",\r\n}));\r\n","import { TreeViewBaseItem } from \"@mui/x-tree-view/models\";\r\nimport { AdministrationItems } from \"./Administration\";\r\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\n\r\nexport type ExtendedTreeItemProps = {\r\n icon: IconProp;\r\n id: string;\r\n label: string;\r\n action?: \"NAVIGATION\";\r\n authority?: string;\r\n actionPayload?: {\r\n path?: string;\r\n parameters?: object;\r\n };\r\n children?: ExtendedTreeItemProps[];\r\n};\r\n\r\nexport const findNavigationItemById = (\r\n id: string,\r\n nodes: ExtendedTreeItemProps[]\r\n): ExtendedTreeItemProps | undefined => {\r\n for (const node of nodes) {\r\n if (node.id === id) return node;\r\n if (node.children) {\r\n const found = findNavigationItemById(id, node.children);\r\n if (found) return found;\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const NavigationItems: TreeViewBaseItem<ExtendedTreeItemProps>[] = [\r\n ...AdministrationItems, \r\n];\r\n","import { TreeViewBaseItem } from \"@mui/x-tree-view/models\";\r\nimport { ExtendedTreeItemProps } from \"..\";\r\nimport { adminNavigationItems } from \"./adminNavigationItems\";\r\n\r\nexport const AdministrationItems: TreeViewBaseItem<ExtendedTreeItemProps>[] = [\r\n {\r\n id: \"home\",\r\n icon: \"home\",\r\n label: \"Home\",\r\n action: \"NAVIGATION\",\r\n actionPayload: {\r\n path: \"/\",\r\n },\r\n },\r\n ...adminNavigationItems,\r\n];\r\n","import { TreeViewBaseItem } from \"@mui/x-tree-view/models\";\r\nimport { ExtendedTreeItemProps } from \"..\";\r\n\r\nexport const adminNavigationItems: TreeViewBaseItem<ExtendedTreeItemProps>[] = [\r\n {\r\n id: \"system_admin\",\r\n label: \"System Administration\",\r\n authority: \"SYSTEM_ADMIN\",\r\n icon: \"cog\",\r\n children: [\r\n {\r\n id: \"development_admin.organization\",\r\n label: \"ORGANIZATION_PLURAL\",\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n icon: \"globe\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/organizations\" },\r\n },\r\n {\r\n id: \"development_admin.SystemApplication\",\r\n label: \"SYSTEM_APPLICATION_PLURAL\",\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n icon: \"window-restore\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/systemapplications\" },\r\n },\r\n {\r\n id: \"system_admin.Person\",\r\n label: \"PERSON_PLURAL\",\r\n icon: \"users\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/persons\" },\r\n },\r\n {\r\n id: \"system_admin.devtools\",\r\n label: \"DEVELOPMENT_TOOLS\",\r\n icon: \"code\",\r\n children: [\r\n {\r\n id: \"system_admin.devtools.DatasourceConnection\",\r\n label: \"DATASOURCE_CONNECTION_PLURAL\",\r\n icon: \"plug\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/datasourceconnections\" },\r\n },\r\n {\r\n id: \"system_admin.devtools.EntityParameter\",\r\n label: \"ENTITY_PARAMETER_PLURAL\",\r\n icon: \"p\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/entityparameters\" },\r\n },\r\n {\r\n id: \"system_admin.devtools.DataQuery\",\r\n label: \"DATA_QUERY_PLURAL\",\r\n icon: \"file-code\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/dataqueries\" },\r\n },\r\n {\r\n id: \"system_admin.devtools.Report\",\r\n label: \"REPORT_PLURAL\",\r\n icon: \"file\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/reports\" },\r\n },\r\n {\r\n id: \"system_admin.devtools.MailConfig\",\r\n label: \"Mail Sender Config\",\r\n icon: { iconName: \"paper-plane\", prefix: \"fas\" },\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/mailsender/config\" },\r\n },\r\n {\r\n id: \"system_admin.devtools.MailTemplate\",\r\n label: \"MAIL_TEMPLATE_PLURAL\",\r\n icon: \"envelope\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/mailtemplates\" },\r\n },\r\n {\r\n id: \"system_admin.devtools.WorkflowDocument\",\r\n label: \"WORKFLOW_DOCUMENT_PLURAL\",\r\n icon: \"chart-diagram\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/workflowdocuments\" },\r\n },\r\n {\r\n id: \"system_admin.devtools.Widget\",\r\n label: \"WIDGET_PLURAL\",\r\n icon: \"chart-pie\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/widgets\" },\r\n },\r\n {\r\n id: \"system_admin.devtools.Dashboard\",\r\n label: \"DASHBOARD_PLURAL\",\r\n icon: \"square-poll-vertical\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/dashboards\" },\r\n },\r\n {\r\n id: \"system_admin.devtools.BluePrint\",\r\n label: \"BLUE_PRINT_PLURAL\",\r\n icon: \"fingerprint\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/blueprints\" },\r\n },\r\n {\r\n id: \"system_admin.devtools.Notification\",\r\n label: \"NOTIFICATION_PLURAL\",\r\n icon: \"bell\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/notifications\" },\r\n },\r\n ],\r\n },\r\n {\r\n id: \"system_admin.followup\",\r\n label: \"SYSTEM_MONITORING\",\r\n icon: \"tv\",\r\n children: [\r\n {\r\n id: \"system_admin.WorkflowDocumentMailLog\",\r\n label: \"Action Mail Logs\",\r\n icon: \"envelopes-bulk\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/workflowdocumentmaillogs\" },\r\n },\r\n {\r\n id: \"system_admin.MailNotificationQueue\",\r\n label: \"Mail Notification Queue\",\r\n icon: \"envelope-open-text\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/mailnotificationqueues\" },\r\n },\r\n {\r\n id: \"system_admin.NotificationQueue\",\r\n label: \"NOTIFICATION_QUEUE_PLURAL\",\r\n icon: \"bell\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"dev/notificationqueues\" },\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n];\r\n","import * as React from \"react\";\r\nimport clsx from \"clsx\";\r\nimport { animated, useSpring } from \"@react-spring/web\";\r\nimport { styled, alpha } from \"@mui/material/styles\";\r\nimport { TransitionProps } from \"@mui/material/transitions\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Collapse from \"@mui/material/Collapse\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport { RichTreeView } from \"@mui/x-tree-view/RichTreeView\";\r\nimport { treeItemClasses } from \"@mui/x-tree-view/TreeItem\";\r\nimport {\r\n useTreeItem2,\r\n UseTreeItem2Parameters,\r\n} from \"@mui/x-tree-view/useTreeItem2\";\r\nimport {\r\n TreeItem2Checkbox,\r\n TreeItem2Content,\r\n TreeItem2IconContainer,\r\n TreeItem2Label,\r\n TreeItem2Root,\r\n} from \"@mui/x-tree-view/TreeItem2\";\r\nimport { TreeItem2Icon } from \"@mui/x-tree-view/TreeItem2Icon\";\r\nimport { TreeItem2Provider } from \"@mui/x-tree-view/TreeItem2Provider\";\r\nimport { TreeItem2DragAndDropOverlay } from \"@mui/x-tree-view/TreeItem2DragAndDropOverlay\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { RootState } from \"../redux/store\";\r\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { useIsMobile } from \"../hooks/UseMobile\";\r\nimport useSession from \"../hooks/UseSession\";\r\nimport { findNavigationItemById, NavigationItems } from \"../navigationItems\";\r\nimport { DRAWER_WIDTH } from \"../redux/features/common/AppLayoutSlice\";\r\n\r\nfunction DotIcon() {\r\n return (\r\n <Box\r\n sx={{\r\n width: 6,\r\n height: 6,\r\n borderRadius: \"70%\",\r\n bgcolor: \"warning.main\",\r\n display: \"inline-block\",\r\n verticalAlign: \"middle\",\r\n zIndex: 1,\r\n mx: 1,\r\n }}\r\n />\r\n );\r\n}\r\ndeclare module \"react\" {\r\n interface CSSProperties {\r\n \"--tree-view-color\"?: string;\r\n \"--tree-view-bg-color\"?: string;\r\n }\r\n}\r\n\r\nconst StyledTreeItemRoot = styled(TreeItem2Root)(({ theme }) => ({\r\n color: theme.palette.grey[400],\r\n position: \"relative\",\r\n [`& .${treeItemClasses.groupTransition}`]: {\r\n marginLeft: theme.spacing(2.5),\r\n },\r\n ...theme.applyStyles(\"light\", {\r\n color: theme.palette.grey[800],\r\n }),\r\n})) as unknown as typeof TreeItem2Root;\r\n\r\nconst CustomTreeItemContent = styled(TreeItem2Content)(({ theme }) => ({\r\n flexDirection: \"row-reverse\",\r\n borderRadius: theme.spacing(0.7),\r\n marginBottom: theme.spacing(0.5),\r\n marginTop: theme.spacing(0.5),\r\n padding: theme.spacing(0.5),\r\n paddingRight: theme.spacing(1),\r\n [`&.Mui-expanded `]: {\r\n \"&:not(.Mui-focused, .Mui-selected, .Mui-selected.Mui-focused) .labelIcon\":\r\n {\r\n color: theme.palette.primary.dark,\r\n ...theme.applyStyles(\"light\", {\r\n color: theme.palette.primary.main,\r\n }),\r\n },\r\n \"&::before\": {\r\n content: '\"\"',\r\n display: \"block\",\r\n position: \"absolute\",\r\n left: \"16px\",\r\n top: \"44px\",\r\n height: \"calc(100% - 48px)\",\r\n width: \"1.5px\",\r\n backgroundColor: theme.palette.grey[700],\r\n ...theme.applyStyles(\"light\", {\r\n backgroundColor: theme.palette.grey[300],\r\n }),\r\n },\r\n },\r\n \"&:hover\": {\r\n backgroundColor: alpha(theme.palette.primary.main, 0.1),\r\n color: \"white\",\r\n ...theme.applyStyles(\"light\", {\r\n color: theme.palette.primary.main,\r\n }),\r\n },\r\n [`&.Mui-focused, &.Mui-selected, &.Mui-selected.Mui-focused`]: {\r\n backgroundColor: theme.palette.primary.dark,\r\n color: theme.palette.primary.contrastText,\r\n ...theme.applyStyles(\"light\", {\r\n backgroundColor: theme.palette.primary.main,\r\n }),\r\n },\r\n}));\r\n\r\nconst AnimatedCollapse = animated(Collapse);\r\n\r\nfunction TransitionComponent(props: TransitionProps) {\r\n const style = useSpring({\r\n to: {\r\n opacity: props.in ? 1 : 0,\r\n transform: `translate3d(0,${props.in ? 0 : 20}px,0)`,\r\n },\r\n });\r\n\r\n return <AnimatedCollapse style={style} {...props} />;\r\n}\r\n\r\nconst StyledTreeItemLabelText = styled(Typography)({\r\n color: \"inherit\",\r\n fontWeight: 500,\r\n}) as unknown as typeof Typography;\r\n\r\ninterface CustomLabelProps {\r\n children: any;\r\n icon: IconProp;\r\n expandable?: boolean;\r\n}\r\n\r\nfunction CustomLabel({\r\n icon,\r\n expandable,\r\n children,\r\n ...other\r\n}: CustomLabelProps) {\r\n const { t } = useTranslation();\r\n const appLayoutState = useSelector((state: RootState) => state.AppLayout);\r\n return (\r\n <TreeItem2Label\r\n {...other}\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n padding: 1,\r\n }}\r\n >\r\n <FontAwesomeIcon\r\n style={{\r\n marginRight: appLayoutState.appDirection === \"ltr\" ? 7 : undefined,\r\n marginLeft: appLayoutState.appDirection === \"rtl\" ? 7 : undefined,\r\n fontSize: \"1.2rem\",\r\n }}\r\n icon={icon}\r\n />\r\n <StyledTreeItemLabelText variant=\"body2\" sx={{ fontSize: 16 }}>\r\n {t(children)}\r\n </StyledTreeItemLabelText>\r\n {expandable && <DotIcon />}\r\n </TreeItem2Label>\r\n );\r\n}\r\n\r\nconst isExpandable = (reactChildren: React.ReactNode) => {\r\n if (Array.isArray(reactChildren)) {\r\n return reactChildren.length > 0 && reactChildren.some(isExpandable);\r\n }\r\n return Boolean(reactChildren);\r\n};\r\n\r\ninterface CustomTreeItemProps\r\n extends Omit<UseTreeItem2Parameters, \"rootRef\">,\r\n Omit<React.HTMLAttributes<HTMLLIElement>, \"onFocus\"> {}\r\n\r\nconst CustomTreeItem = React.forwardRef(function CustomTreeItem(\r\n props: CustomTreeItemProps,\r\n ref: React.Ref<HTMLLIElement>\r\n) {\r\n const { id, itemId, label, disabled, children, ...other } = props;\r\n const {\r\n getRootProps,\r\n getContentProps,\r\n getIconContainerProps,\r\n getCheckboxProps,\r\n getLabelProps,\r\n getGroupTransitionProps,\r\n getDragAndDropOverlayProps,\r\n status,\r\n publicAPI,\r\n } = useTreeItem2({ id, itemId, children, label, disabled, rootRef: ref });\r\n const item = publicAPI.getItem(itemId);\r\n const expandable = isExpandable(children);\r\n return (\r\n <TreeItem2Provider itemId={itemId}>\r\n <StyledTreeItemRoot {...getRootProps(other)}>\r\n <CustomTreeItemContent\r\n {...getContentProps({\r\n className: clsx(\"content\", {\r\n \"Mui-expanded\": status.expanded,\r\n \"Mui-selected\": status.selected,\r\n \"Mui-focused\": status.focused,\r\n \"Mui-disabled\": status.disabled,\r\n }),\r\n })}\r\n >\r\n <TreeItem2IconContainer {...getIconContainerProps()}>\r\n <TreeItem2Icon status={status} />\r\n </TreeItem2IconContainer>\r\n <TreeItem2Checkbox {...getCheckboxProps()} />\r\n <CustomLabel\r\n {...getLabelProps({\r\n icon: item?.icon || \"book\",\r\n expandable: expandable && status.expanded,\r\n })}\r\n />\r\n <TreeItem2DragAndDropOverlay {...getDragAndDropOverlayProps()} />\r\n </CustomTreeItemContent>\r\n {children && <TransitionComponent {...getGroupTransitionProps()} />}\r\n </StyledTreeItemRoot>\r\n </TreeItem2Provider>\r\n );\r\n});\r\n\r\nexport default function NavigationTree() {\r\n const navigate = useNavigate();\r\n const appLayoutState = useSelector((state: RootState) => state.AppLayout);\r\n const AppInfo = useSelector((state: RootState) => state.AppInfo.value);\r\n const dispatch = useDispatch();\r\n const isMobile = useIsMobile();\r\n const { isUserAuthorized } = useSession();\r\n const filterData = (data) => {\r\n return data\r\n .filter(\r\n (item: any) =>\r\n item.authority === undefined ||\r\n item.authority == null ||\r\n isUserAuthorized(item.authority)\r\n )\r\n .map((item: any) => {\r\n if (item.children) {\r\n item.children = filterData(item.children);\r\n }\r\n return item;\r\n });\r\n };\r\n\r\n const mergedNavigationItems = [];\r\n if (AppInfo.enableAdministrationModule) {\r\n mergedNavigationItems.push(...NavigationItems);\r\n }\r\n mergedNavigationItems.push(...AppInfo.businessNavigationItems);\r\n const authoriedNavigationItems = filterData(mergedNavigationItems);\r\n\r\n return (\r\n <RichTreeView\r\n items={authoriedNavigationItems}\r\n onItemClick={(event, itemId) => {\r\n const navigationItem = findNavigationItemById(\r\n itemId,\r\n mergedNavigationItems\r\n );\r\n if (\r\n navigationItem?.action === \"NAVIGATION\" &&\r\n navigationItem?.actionPayload != null &&\r\n (navigationItem.children === undefined ||\r\n navigationItem.children === null ||\r\n navigationItem.children.length == 0)\r\n ) {\r\n navigate(navigationItem?.actionPayload?.path || \"\");\r\n }\r\n }}\r\n sx={{\r\n height: \"fit-content\",\r\n flexGrow: 1,\r\n maxWidth: DRAWER_WIDTH,\r\n direction: appLayoutState.appDirection,\r\n maxHeight: isMobile ? 300 : undefined,\r\n overflowY: \"auto\",\r\n overflowX: \"auto\",\r\n }}\r\n slots={{ item: CustomTreeItem }}\r\n />\r\n );\r\n}\r\n","import Divider from \"@mui/material/Divider\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport Drawer from \"@mui/material/Drawer\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { DrawerHeader } from \"./DrawerHeader\";\r\nimport { Box, Typography, useTheme } from \"@mui/material\";\r\nimport { DRAWER_WIDTH } from \"../redux/features/common/AppLayoutSlice\";\r\nimport NavigationTree from \"./NavigationTree\";\r\nimport { useSession } from \"../hooks\";\r\nimport { toggleSideBarState } from \"../redux/features/common/SideBarSlice\";\r\n\r\nconst SideBar: React.FC = () => {\r\n const AppInfo = useSelector((state: any) => state.AppInfo.value);\r\n const { UserSession } = useSession();\r\n const currentOrganization = UserSession.value.currentOrganization;\r\n const theme = useTheme();\r\n const AppLayout = useSelector((state: any) => state.AppLayout);\r\n const SideBarState = useSelector((state: any) => state.SideBar);\r\n const dispatch = useDispatch();\r\n const toggleSideBar = () => {\r\n dispatch(toggleSideBarState());\r\n };\r\n return (\r\n <Drawer\r\n sx={{\r\n width: DRAWER_WIDTH,\r\n flexShrink: 0,\r\n \"& .MuiDrawer-paper\": {\r\n width: DRAWER_WIDTH,\r\n boxSizing: \"border-box\",\r\n },\r\n }}\r\n variant=\"persistent\"\r\n anchor={AppLayout.appDirection === \"ltr\" ? \"left\" : \"right\"}\r\n open={SideBarState.isOpened}\r\n >\r\n <DrawerHeader>\r\n <Box sx={{ width: \"100%\" }}>\r\n <Typography\r\n color=\"primary\"\r\n sx={{\r\n width: \"100%\",\r\n textAlign: \"center\",\r\n fontSize: 18,\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n System Content\r\n </Typography>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-around\",\r\n marginTop: 1,\r\n }}\r\n >\r\n <Typography sx={{ fontSize: 12 }} color=\"textDisabled\">\r\n {`${AppInfo.appName} - ${\r\n AppLayout.appDirection === \"ltr\"\r\n ? currentOrganization?.organizationEnName\r\n : currentOrganization?.organizationArName\r\n }`}\r\n </Typography>\r\n <Typography sx={{ fontSize: 12 }} color=\"textDisabled\">\r\n V.{AppInfo.appVersion}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n <IconButton onClick={toggleSideBar}>\r\n {theme.direction === \"ltr\" ? (\r\n <FontAwesomeIcon icon=\"angle-left\" />\r\n ) : (\r\n <FontAwesomeIcon icon=\"angle-right\" />\r\n )}\r\n </IconButton>\r\n </DrawerHeader>\r\n <Divider />\r\n <NavigationTree />\r\n </Drawer>\r\n );\r\n};\r\n\r\nexport default SideBar;\r\n","import rtlPlugin from \"stylis-plugin-rtl\";\r\nimport { prefixer } from \"stylis\";\r\nimport createCache from \"@emotion/cache\";\r\n\r\nexport const cacheRtl = createCache({\r\n key: \"muirtl\",\r\n stylisPlugins: [prefixer, rtlPlugin],\r\n});\r\n\r\nexport const cacheLtr = createCache({\r\n key: \"mui\",\r\n});","import { useEffect, useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions, useAxios } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ntype OrganizationApplicationModuleGridProps = {\r\n selectedOrganization: any;\r\n};\r\n\r\nconst OrganizationApplicationModuleGrid: React.FC<\r\n OrganizationApplicationModuleGridProps\r\n> = (props) => {\r\n const { t } = useTranslation();\r\n const { handleGetRequest } = useAxios();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/organizationapplicationmodule/all\",\r\n deleteById: \"api/v1/admin/organizationapplicationmodule\",\r\n save: \"api/v1/admin/organizationapplicationmodule\",\r\n findById: \"api/v1/admin/organizationapplicationmodule\",\r\n setData: setData,\r\n });\r\n const [systemApplicationModules, setSystemApplicationModules] = useState([]);\r\n\r\n const getSystemApplicationModules = async () => {\r\n await handleGetRequest({\r\n endPointURI: \"api/v1/admin/systemapplicationmodule/all\",\r\n showMask: true,\r\n successCallBkFn: (response: any) => {\r\n setSystemApplicationModules(response.data);\r\n },\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n getSystemApplicationModules();\r\n }, []);\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel:\r\n \"ORGANIZATION_APPLICATION_MODULE_SYSTEM_APPLICATION_MODULE_ID\",\r\n fieldName: \"systemApplicationModuleId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: systemApplicationModules,\r\n optionDisplayField: \"moduleName\",\r\n optionValueField: \"id\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n fieldLabel: \"ORGANIZATION_APPLICATION_MODULE_ORGANIZATION_ID\",\r\n fieldName: \"organizationId\",\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_APPLICATION_MODULE_SUBSCRIPTION_DATE\",\r\n fieldName: \"subscriptionDate\",\r\n required: true,\r\n fieldType: \"date\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_APPLICATION_MODULE_EXPIRATION_DATE\",\r\n fieldName: \"expirationDate\",\r\n required: false,\r\n fieldType: \"date\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_APPLICATION_MODULE_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n gridLoadParametersValues={{\r\n organizationId: props?.selectedOrganization?.id,\r\n }}\r\n hideInfoBar={true}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ORGANIZATION_APPLICATION_MODULE_PLURAL\"\r\n girdIcon=\"layer-group\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"ORGANIZATION_APPLICATION_MODULE_EDIT\",\r\n preActionValidation: async (data) => {\r\n data.organizationId = props?.selectedOrganization?.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"ORGANIZATION_APPLICATION_MODULE_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default OrganizationApplicationModuleGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ntype OrganizationUnitTypeGridProps = {\r\n selectedOrganization: any;\r\n};\r\n\r\nconst OrganizationUnitTypeGrid: React.FC<OrganizationUnitTypeGridProps> = (\r\n props\r\n) => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/organizationunittype/all\",\r\n deleteById: \"api/v1/admin/organizationunittype\",\r\n save: \"api/v1/admin/organizationunittype\",\r\n findById: \"api/v1/admin/organizationunittype\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_TYPE_ORGANIZATION_ID\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n fieldName: \"organizationId\",\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_TYPE_ORGANIZATION_UNIT_TYPE_ORDER\",\r\n fieldName: \"organizationUnitTypeOrder\",\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_TYPE_UNIT_TYPE_CODE\",\r\n fieldName: \"unitTypeCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_TYPE_UNIT_TYPE_AR_NAME\",\r\n fieldName: \"unitTypeArName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_TYPE_UNIT_TYPE_EN_NAME\",\r\n fieldName: \"unitTypeEnName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_TYPE_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n hideInfoBar={true}\r\n gridLoadParametersValues={{\r\n organizationId: props?.selectedOrganization?.id,\r\n }}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ORGANIZATION_UNIT_TYPE_PLURAL\"\r\n girdIcon=\"tags\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"ORGANIZATION_UNIT_TYPE_EDIT\",\r\n preActionValidation: async (data) => {\r\n data.organizationId = props?.selectedOrganization?.id;\t\t \r\n return true;\r\n },\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"ORGANIZATION_UNIT_TYPE_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default OrganizationUnitTypeGrid;\r\n","import { useEffect, useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions, useAxios } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ntype OrganizationUnitGridProps = {\r\n selectedOrganization: any;\r\n};\r\n\r\nconst OrganizationUnitGrid: React.FC<OrganizationUnitGridProps> = (props) => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/organizationunit/all\",\r\n deleteById: \"api/v1/admin/organizationunit\",\r\n save: \"api/v1/admin/organizationunit\",\r\n findById: \"api/v1/admin/organizationunit\",\r\n setData: setData,\r\n });\r\n const [organizationUnitTypes, setOrganizationUnitTypes] = useState([]);\r\n const { handleGetRequest } = useAxios();\r\n const getOrganizationUnitTypes = async () => {\r\n await handleGetRequest({\r\n endPointURI: \"api/v1/admin/organizationunittype/all\",\r\n showMask: true,\r\n parameters: {\r\n organizationId: props.selectedOrganization.id,\r\n },\r\n successCallBkFn: (response: any) => {\r\n setOrganizationUnitTypes(response.data);\r\n },\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n getOrganizationUnitTypes();\r\n }, []);\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n hidden: true,\r\n gridProps: { hidden: true },\r\n fieldLabel: \"ORGANIZATION_UNIT_ORGANIZATION_ID\",\r\n fieldName: \"organizationId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_ORGANIZATION_UNIT_TYPE_ID\",\r\n fieldName: \"organizationUnitTypeId\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: organizationUnitTypes,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"unitTypeEnName\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_ORGANIZATION_UNIT_AR_NAME\",\r\n fieldName: \"organizationUnitArName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_ORGANIZATION_UNIT_EN_NAME\",\r\n fieldName: \"organizationUnitEnName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_ORGANIZATION_UNIT_PARENT_ID\",\r\n fieldName: \"organizationUnitParentId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: data,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"organizationUnitEnName\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n hideInfoBar={true}\r\n gridLoadParametersValues={{\r\n organizationId: props?.selectedOrganization?.id,\r\n }}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ORGANIZATION_UNIT_PLURAL\"\r\n girdIcon=\"folder-tree\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"ORGANIZATION_UNIT_EDIT\",\r\n preActionValidation: async (data) => {\r\n data.organizationId = props?.selectedOrganization?.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{ isEnabled: true, authority: \"ORGANIZATION_UNIT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default OrganizationUnitGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ntype OrganizationRankGridProps = {\r\n selectedOrganization: any;\r\n};\r\n\r\nconst OrganizationRankGrid: React.FC<OrganizationRankGridProps> = (props) => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/organizationrank/all\",\r\n deleteById: \"api/v1/admin/organizationrank\",\r\n save: \"api/v1/admin/organizationrank\",\r\n findById: \"api/v1/admin/organizationrank\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n hidden: true,\r\n gridProps: { hidden: true },\r\n fieldLabel: \"ORGANIZATION_RANK_ORGANIZATION_ID\",\r\n fieldName: \"organizationId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_RANK_RANK_ORDER\",\r\n fieldName: \"rankOrder\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_RANK_RANK_CODE\",\r\n fieldName: \"rankCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_RANK_RANK_AR_NAME\",\r\n fieldName: \"rankArName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_RANK_RANK_EN_NAME\",\r\n fieldName: \"rankEnName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_RANK_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n hideInfoBar={true}\r\n gridLoadParametersValues={{\r\n organizationId: props?.selectedOrganization?.id,\r\n }}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ORGANIZATION_RANK_PLURAL\"\r\n girdIcon=\"street-view\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"ORGANIZATION_RANK_EDIT\",\r\n preActionValidation: async (data) => {\r\n data.organizationId = props?.selectedOrganization?.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{ isEnabled: true, authority: \"ORGANIZATION_RANK_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default OrganizationRankGrid;\r\n","import { useEffect, useState } from \"react\";\r\nimport TransferList from \"../../templates/TransferList\";\r\nimport { Box, Button } from \"@mui/material\";\r\nimport { toast } from \"react-toastify\";\r\nimport { useAxios } from \"../../../hooks\";\r\n\r\ntype OrgMemberRoleFormProps = {\r\n selectedRecord: any;\r\n closeModalFn: () => void;\r\n};\r\n\r\nconst OrgMemberRoleForm: React.FC<OrgMemberRoleFormProps> = (props) => {\r\n const [selectedOptions, setSelectedOptions] = useState([]);\r\n const [availableOptions, setAvailableOptions] = useState([]);\r\n const { handlePostRequest, handleGetRequest } = useAxios();\r\n\r\n const getOrgMemberRoles = async () => {\r\n await handleGetRequest({\r\n endPointURI: \"api/v1/admin/organization/member/roles\",\r\n showMask: true,\r\n parameters: {\r\n orgMemberId: props.selectedRecord.id,\r\n organizationId: props.selectedRecord.organizationId,\r\n },\r\n successCallBkFn: (response: any) => {\r\n setSelectedOptions(response.data.currentRoles);\r\n setAvailableOptions(response.data.availableRoles);\r\n },\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (props.selectedRecord) {\r\n getOrgMemberRoles();\r\n }\r\n }, [props.selectedRecord]);\r\n const saveOrgMemberRoles = async () => {\r\n await handlePostRequest({\r\n endPointURI: \"api/v1/admin/organization/member/roles\",\r\n showMask: true,\r\n parameters: { orgMemberId: props.selectedRecord.id },\r\n data: selectedOptions,\r\n successCallBkFn: () => {\r\n toast.success(\"Your request has been proccesed successfully\");\r\n if (props.closeModalFn) {\r\n props.closeModalFn();\r\n }\r\n },\r\n });\r\n };\r\n return (\r\n <>\r\n <TransferList\r\n displayField=\"appRoleDisplay\"\r\n options={availableOptions}\r\n valueField=\"id\"\r\n selectedOptions={selectedOptions}\r\n setSelection={setSelectedOptions}\r\n />\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n width: \"100%\",\r\n }}\r\n >\r\n <Button\r\n variant=\"contained\"\r\n onClick={saveOrgMemberRoles}\r\n sx={{ marginRight: 1, marginLeft: 1 }}\r\n >\r\n Save\r\n </Button>\r\n <Button variant=\"contained\" color=\"error\" onClick={props.closeModalFn}>\r\n Cancel\r\n </Button>\r\n </Box>\r\n </>\r\n );\r\n};\r\n\r\nexport default OrgMemberRoleForm;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions, useWindow } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useSelector } from \"react-redux\";\r\nimport OrgMemberRoleForm from \"./OrgMemberRoleForm\";\r\n\r\ntype OrganizationMemberGridProps = {\r\n selectedPerson: any;\r\n};\r\nconst OrganizationMemberGrid: React.FC<OrganizationMemberGridProps> = (\r\n props\r\n) => {\r\n const [selectedRecord, setSelectedRecord] = useState<any>(null);\r\n const {\r\n Window: OrganizationMemberRolesWindow,\r\n setWindowState: setOrganizationMemberRolesWindowState,\r\n } = useWindow({\r\n windowIcon: \"tag\",\r\n windowTitle: \"Organization Member Roles\",\r\n width: \"50%\",\r\n });\r\n const SystemOrganizations = useSelector(\r\n (state: any) => state.commonStores.stores.SystemOrganizations.data\r\n );\r\n const SystemOrganizationRanks = useSelector(\r\n (state: any) => state.commonStores.stores.SystemOrganizationRanks.data\r\n );\r\n const SystemOrganizationUnits = useSelector(\r\n (state: any) => state.commonStores.stores.SystemOrganizationUnits.data\r\n );\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/organizationmember/all\",\r\n deleteById: \"api/v1/admin/organizationmember\",\r\n save: \"api/v1/admin/organizationmember\",\r\n findById: \"api/v1/admin/organizationmember\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_MEMBER_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_MEMBER_IS_DEFAULT\",\r\n fieldName: \"isDefault\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_MEMBER_ORGANIZATION_ID\",\r\n fieldName: \"organizationId\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: SystemOrganizations,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"organizationEnName\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_MEMBER_ORGANIZATION_RANK_ID\",\r\n fieldName: \"organizationRankId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemOrganizationRanks,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"rankDisplay\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_MEMBER_ORGANIZATION_UNIT_ID\",\r\n fieldName: \"organizationUnitId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemOrganizationUnits,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"fullPath\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Membership number\",\r\n fieldName: \"organizationMembershipNumber\",\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n fieldLabel: \"ORGANIZATION_MEMBER_PERSON_ID\",\r\n fieldName: \"personId\",\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <OrganizationMemberRolesWindow>\r\n <OrgMemberRoleForm\r\n selectedRecord={selectedRecord}\r\n closeModalFn={() => {\r\n setOrganizationMemberRolesWindowState(false);\r\n }}\r\n />\r\n </OrganizationMemberRolesWindow>\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n hideInfoBar={true}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n rowActions={[\r\n {\r\n icon: \"tag\",\r\n label: \"Roles\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setOrganizationMemberRolesWindowState(true);\r\n },\r\n },\r\n ]}\r\n gridLoadParametersValues={{ personId: props.selectedPerson.id }}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ORGANIZATION_MEMBER_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"ORGANIZATION_MEMBER_EDIT\",\r\n preActionValidation: async (data) => {\r\n data.personId = props.selectedPerson.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"ORGANIZATION_MEMBER_DELETE\",\r\n }}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default OrganizationMemberGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ntype SystemApplicationModuleGridProps = {\r\n selectedApplication: any;\r\n};\r\n\r\nconst SystemApplicationModuleGrid: React.FC<\r\n SystemApplicationModuleGridProps\r\n> = (props) => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/systemapplicationmodule/application/all\",\r\n deleteById: \"api/v1/admin/systemapplicationmodule\",\r\n save: \"api/v1/admin/systemapplicationmodule\",\r\n findById: \"api/v1/admin/systemapplicationmodule\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_MODULE_MODULE_CODE\",\r\n fieldName: \"moduleCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_MODULE_MODULE_NAME\",\r\n fieldName: \"moduleName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_MODULE_MODULE_DESCRIPTION\",\r\n fieldName: \"moduleDescription\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_MODULE_SYSTEM_APPLICATION_ID\",\r\n fieldName: \"systemApplicationId\",\r\n hidden: true,\r\n gridProps: { hidden: true },\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n gridLoadParametersValues={{\r\n applicationId: props?.selectedApplication?.id,\r\n }}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n hideInfoBar={true}\r\n gridTitle=\"SYSTEM_APPLICATION_MODULE_PLURAL\"\r\n girdIcon=\"layer-group\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"SYSTEM_APPLICATION_MODULE_EDIT\",\r\n preActionValidation: async (data) => {\r\n data.systemApplicationId = props?.selectedApplication?.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"SYSTEM_APPLICATION_MODULE_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default SystemApplicationModuleGrid;\r\n","import { useEffect, useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions, useAxios } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ntype SystemApplicationAuthorityGridProps = {\r\n selectedApplication: any;\r\n};\r\n\r\nconst SystemApplicationAuthorityGrid: React.FC<\r\n SystemApplicationAuthorityGridProps\r\n> = (props) => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/systemapplicationauthority/all\",\r\n deleteById: \"api/v1/admin/systemapplicationauthority\",\r\n save: \"api/v1/admin/systemapplicationauthority\",\r\n findById: \"api/v1/admin/systemapplicationauthority\",\r\n setData: setData,\r\n });\r\n const [systemApplicationModules, setSystemApplicationModules] = useState([]);\r\n\r\n const { handleGetRequest } = useAxios();\r\n const getSystemApplicationModules = async () => {\r\n await handleGetRequest({\r\n endPointURI: \"api/v1/admin/systemapplicationmodule/application/all\",\r\n showMask: true,\r\n parameters: {\r\n applicationId: props.selectedApplication.id,\r\n },\r\n successCallBkFn: (response: any) => {\r\n setSystemApplicationModules(response.data);\r\n },\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n getSystemApplicationModules();\r\n }, []);\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_AUTHORITY_SYSTEM_APPLICATION_ID\",\r\n fieldName: \"systemApplicationId\",\r\n required: false,\r\n hidden: true,\r\n gridProps: { hidden: true },\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_AUTHORITY_SYSTEM_MODULE_ID\",\r\n fieldName: \"systemModuleId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: systemApplicationModules,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"moduleName\",\r\n },\r\n },\r\n \r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_AUTHORITY_AUTHORITY_NAME\",\r\n fieldName: \"authorityName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_AUTHORITY_AUTHORITY_CODE\",\r\n fieldName: \"authorityCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_AUTHORITY_AUTHORITY_DESCRIPTION\",\r\n fieldName: \"authorityDescription\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_AUTHORITY_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n hideInfoBar={true}\r\n gridLoadParametersValues={{\r\n applicationId: props?.selectedApplication?.id,\r\n }}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"SYSTEM_APPLICATION_AUTHORITY_PLURAL\"\r\n girdIcon=\"key\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"SYSTEM_APPLICATION_AUTHORITY_EDIT\",\r\n preActionValidation: async (data) => {\r\n data.systemApplicationId = props?.selectedApplication?.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"SYSTEM_APPLICATION_AUTHORITY_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default SystemApplicationAuthorityGrid;\r\n","import { useEffect, useState } from \"react\";\r\nimport TransferList from \"../../templates/TransferList\";\r\nimport { Box, Button } from \"@mui/material\";\r\nimport { toast } from \"react-toastify\";\r\nimport { useAxios } from \"../../../hooks\";\r\n\r\ntype RoleAuthoritiesFormProps = {\r\n roleId: number;\r\n appId: number;\r\n closeModalFn: () => void;\r\n};\r\n\r\nconst RoleAuthoritiesForm: React.FC<RoleAuthoritiesFormProps> = (props) => {\r\n const [selectedOptions, setSelectedOptions] = useState([]);\r\n const [availableAuthorities, setAvailableAuthorities] = useState([]);\r\n const { handlePostRequest, handleGetRequest } = useAxios();\r\n\r\n const getRoleAuthorities = async () => {\r\n await handleGetRequest({\r\n endPointURI: \"api/v1/admin/systemApplicationRoleAuthorities\",\r\n showMask: true,\r\n parameters: {\r\n appId: props.appId,\r\n roleId: props.roleId,\r\n },\r\n successCallBkFn: (response: any) => {\r\n setSelectedOptions(response.data.selectedAuthorities);\r\n setAvailableAuthorities(response.data.availableAuthorities);\r\n },\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (props.roleId && props.appId) {\r\n getRoleAuthorities();\r\n }\r\n }, [props.roleId, props.appId]);\r\n const saveRoleAuthorities = async () => {\r\n await handlePostRequest({\r\n endPointURI: \"api/v1/admin/systemApplicationRoleAuthorities\",\r\n showMask: true,\r\n parameters: { roleId: props.roleId },\r\n data: selectedOptions,\r\n successCallBkFn: () => {\r\n toast.success(\"Your request has been proccesed successfully\");\r\n if (props.closeModalFn) {\r\n props.closeModalFn();\r\n }\r\n },\r\n });\r\n };\r\n return (\r\n <>\r\n <TransferList\r\n displayField=\"authorityName\"\r\n options={availableAuthorities}\r\n valueField=\"id\"\r\n selectedOptions={selectedOptions}\r\n setSelection={setSelectedOptions}\r\n />\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n width: \"100%\",\r\n }}\r\n >\r\n <Button\r\n variant=\"contained\"\r\n onClick={saveRoleAuthorities}\r\n sx={{ marginRight: 1, marginLeft: 1 }}\r\n >\r\n Save\r\n </Button>\r\n <Button variant=\"contained\" color=\"error\" onClick={props.closeModalFn}>\r\n Cancel\r\n </Button>\r\n </Box>\r\n </>\r\n );\r\n};\r\n\r\nexport default RoleAuthoritiesForm;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions, useWindow } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport RoleAuthoritiesForm from \"./RoleAuthoritiesForm\";\r\n\r\ntype SystemApplicationRoleGridProps = {\r\n selectedApplication: any;\r\n};\r\n\r\nconst SystemApplicationRoleGrid: React.FC<SystemApplicationRoleGridProps> = (\r\n props\r\n) => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const [selectedRole, setSelectedRole] = useState(null);\r\n const {\r\n Window: RoleaAuthoritiesWindow,\r\n setWindowState: setRoleAuthoritiesWindowState,\r\n } = useWindow({\r\n windowTitle: \"System Application Role Authorities\",\r\n windowIcon: \"key\",\r\n width: \"50%\",\r\n });\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/systemapplicationrole/all\",\r\n deleteById: \"api/v1/admin/systemapplicationrole\",\r\n save: \"api/v1/admin/systemapplicationrole\",\r\n findById: \"api/v1/admin/systemapplicationrole\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_ROLE_SYSTEM_APPLICATION_ID\",\r\n fieldName: \"systemApplicationId\",\r\n required: false,\r\n hidden: true,\r\n gridProps: { hidden: true },\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_ROLE_ROLE_NAME\",\r\n fieldName: \"roleName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_ROLE_ROLE_DESCRIPTION\",\r\n fieldName: \"roleDescription\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_ROLE_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <RoleaAuthoritiesWindow>\r\n <RoleAuthoritiesForm\r\n appId={props.selectedApplication.id}\r\n roleId={selectedRole?.id}\r\n closeModalFn={() => {\r\n setRoleAuthoritiesWindowState(false);\r\n }}\r\n />\r\n </RoleaAuthoritiesWindow>\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n hideInfoBar={true}\r\n gridLoadParametersValues={{\r\n applicationId: props?.selectedApplication?.id,\r\n }}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"SYSTEM_APPLICATION_ROLE_PLURAL\"\r\n girdIcon=\"tag\"\r\n rowActions={[\r\n {\r\n icon: \"key\",\r\n actionFn: async (data) => {\r\n setSelectedRole(data);\r\n setRoleAuthoritiesWindowState(true);\r\n },\r\n label: \"Authorities\",\r\n },\r\n ]}\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"SYSTEM_APPLICATION_ROLE_EDIT\",\r\n preActionValidation: async (data) => {\r\n data.systemApplicationId = props?.selectedApplication?.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"SYSTEM_APPLICATION_ROLE_DELETE\",\r\n }}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default SystemApplicationRoleGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\ntype LookupGridProps = {\r\n selectedApplication: any;\r\n};\r\n\r\nconst LookupGrid: React.FC<LookupGridProps> = (props) => {\r\n const SystemOrganizations = useSelector(\r\n (state: any) => state.commonStores.stores.SystemOrganizations.data\r\n );\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/lookup/all\",\r\n deleteById: \"api/v1/dev/lookup\",\r\n save: \"api/v1/dev/lookup\",\r\n findById: \"api/v1/dev/lookup\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Organization\",\r\n fieldName: \"organizationId\",\r\n options: SystemOrganizations,\r\n optionDisplayField: \"organizationEnName\",\r\n optionValueField: \"id\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"LOOKUP_LOOKUP_TYPE\",\r\n fieldName: \"lookupType\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"LOOKUP_LOOKUP_AR_DISPLAY\",\r\n fieldName: \"lookupArDisplay\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"LOOKUP_LOOKUP_EN_DISPLAY\",\r\n fieldName: \"lookupEnDisplay\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"LOOKUP_LOOKUP_VALUE\",\r\n fieldName: \"lookupValue\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"LOOKUP_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"System Application\",\r\n fieldName: \"systemApplicationId\",\r\n hidden: true,\r\n gridProps: { hidden: true },\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n hideInfoBar={true}\r\n gridLoadParametersValues={{\r\n systemApplicationId: props.selectedApplication.id,\r\n }}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"LOOKUP_PLURAL\")}\r\n girdIcon=\"list-check\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"LOOKUP_EDIT\",\r\n preActionValidation: (data: any) => {\r\n data.systemApplicationId = props.selectedApplication.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{ isEnabled: true, authority: \"LOOKUP_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default LookupGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\ntype DataQueryParameterGridProps = {\r\n selectedRecord: any;\r\n};\r\n\r\nconst DataQueryParameterGrid: React.FC<DataQueryParameterGridProps> = (\r\n props\r\n) => {\r\n const SystemEntityParameters = useSelector(\r\n (state: any) => state.commonStores.stores.SystemEntityParameters.data\r\n );\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/dataqueryparameter/all\",\r\n deleteById: \"api/v1/dev/dataqueryparameter\",\r\n save: \"api/v1/dev/dataqueryparameter\",\r\n findById: \"api/v1/dev/dataqueryparameter\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_PARAMETER_DATA_QUERY_ID\",\r\n fieldName: \"dataQueryId\",\r\n required: false,\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_PARAMETER_ENTITY_PARAMETER_ID\",\r\n fieldName: \"entityParameterId\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: SystemEntityParameters,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"parameterCode\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_PARAMETER_DEFAULT_VALUE\",\r\n fieldName: \"defaultValue\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_PARAMETER_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_PARAMETER_HIDDEN\",\r\n fieldName: \"hidden\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_PARAMETER_MANDATORY\",\r\n fieldName: \"mandatory\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n hideInfoBar={true}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridLoadParametersValues={{ dataQueryId: props.selectedRecord.id }}\r\n gridTitle={t(\"DATA_QUERY_PARAMETER_PLURAL\")}\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"DATA_QUERY_PARAMETER_EDIT\",\r\n preActionValidation: async (data) => {\r\n data.dataQueryId = props.selectedRecord.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"DATA_QUERY_PARAMETER_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default DataQueryParameterGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\ntype ReportParameterGridProps = {\r\n selectedRecord: any;\r\n};\r\n\r\nconst ReportParameterGrid: React.FC<ReportParameterGridProps> = (props) => {\r\n const { t } = useTranslation();\r\n const SystemEntityParameters = useSelector(\r\n (state: any) => state.commonStores.stores.SystemEntityParameters.data\r\n );\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/reportparameter/all\",\r\n deleteById: \"api/v1/dev/reportparameter\",\r\n save: \"api/v1/dev/reportparameter\",\r\n findById: \"api/v1/dev/reportparameter\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_PARAMETER_ENTITY_PARAMETER_ID\",\r\n fieldName: \"entityParameterId\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: SystemEntityParameters,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"parameterCode\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_PARAMETER_DEFAULT_VALUE\",\r\n fieldName: \"defaultValue\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_PARAMETER_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_PARAMETER_HIDDEN\",\r\n fieldName: \"hidden\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_PARAMETER_MANDATORY\",\r\n fieldName: \"mandatory\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_PARAMETER_REPORT_ID\",\r\n fieldName: \"reportId\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n hideInfoBar={true}\r\n setData={setData}\r\n gridLoadParametersValues={{ reportId: props.selectedRecord.id }}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"REPORT_PARAMETER_PLURAL\")}\r\n girdIcon=\"p\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"REPORT_PARAMETER_EDIT\",\r\n preActionValidation: async (data) => {\r\n data.reportId = props.selectedRecord.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{ isEnabled: true, authority: \"REPORT_PARAMETER_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default ReportParameterGrid;\r\n","import { useEffect, useState } from \"react\";\r\nimport TemplateGrid from \"../DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../DataEntryTemplates/DataEntryTypes\";\r\n\r\ntype ExcelReportViewerProps = {\r\n reportData: Array<any>;\r\n setReportData: (data) => void;\r\n reloadReport: () => void;\r\n gridLoadParameters?: Array<FormElementProps>;\r\n gridLoadParametersValues?: { [key: string]: any };\r\n setGridLoadParametersValues?: any;\r\n};\r\n\r\nconst getGridColumnsFromRecord = (data: Array<any>) => {\r\n if (data.length === 0) {\r\n return [];\r\n }\r\n const formElements: Array<FormElementProps> = [];\r\n for (const key of Object.keys(data[0])) {\r\n const formElement: FormElementProps = {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: key,\r\n fieldName: key,\r\n fieldType: \"text\",\r\n },\r\n };\r\n formElements.push(formElement);\r\n }\r\n console.log(\"formElements\", formElements);\r\n return formElements;\r\n};\r\n\r\nconst ExcelReportViewer: React.FC<ExcelReportViewerProps> = (props) => {\r\n console.log(\"reportdata\", props.reportData);\r\n return (\r\n <TemplateGrid\r\n data={props.reportData}\r\n disableDefaultAction={true}\r\n setData={props.setReportData}\r\n formElements={getGridColumnsFromRecord(props.reportData)}\r\n gridLoadParameters={props.gridLoadParameters}\r\n gridLoadParametersValues={props.gridLoadParametersValues}\r\n setGridLoadParametersValues={props.setGridLoadParametersValues}\r\n editMode={{ editMode: \"none\" }}\r\n girdIcon={\"file-excel\"}\r\n gridTitle=\"Report\"\r\n autoLoad={true}\r\n hideInfoBar={true}\r\n apiActions={{\r\n deleteRecordById: async () => {\r\n return true;\r\n },\r\n loadRecordById: async () => {},\r\n reloadData: async () => {\r\n props.reloadReport();\r\n },\r\n saveRecord: async () => {},\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default ExcelReportViewer;\r\n","import { useEffect, useState } from \"react\";\r\nimport { useAxios, useWindow } from \"../../../hooks\";\r\nimport TemplateForm from \"../DataEntryTemplates/TemplateDataForm/TemplateForm\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { FormElementProps } from \"../DataEntryTemplates/DataEntryTypes\";\r\nimport {\r\n Accordion,\r\n AccordionDetails,\r\n AccordionSummary,\r\n Box,\r\n Icon,\r\n IconButton,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport ExcelReportViewer from \"./ExcelReportViewer\";\r\nimport { GridExpandMoreIcon } from \"@mui/x-data-grid-premium\";\r\n\r\ntype ReportViewerState =\r\n | \"ERROR\"\r\n | \"WAITING_REPORT_CODE\"\r\n | \"LOADING_METADATA\"\r\n | \"WAITING_PARAMETER_INPUT\"\r\n | \"WAITING_RESULT\"\r\n | \"SHOWING_RESULT\";\r\n\r\ntype ReportViewerProps = {\r\n reportCode: string;\r\n resultMode: \"Request\" | \"App\";\r\n reportParametersValues?: { [key: string]: any };\r\n byPassParameterEntry?: boolean;\r\n jasperOutPutFileType?: \"pdf\" | \"word\" | \"excel\";\r\n};\r\n\r\ntype ReportParameter = {\r\n parameterCode: string;\r\n parameterLabel: string;\r\n parameterValueFormat?: string;\r\n parameterValueField?: string;\r\n parameterDisplayField?: string;\r\n parameterDataset?: Array<any>;\r\n parameterDataQueryId?: number;\r\n hidden?: boolean;\r\n mandatory?: boolean;\r\n defaultValue?: any;\r\n parameterType:\r\n | \"text\"\r\n | \"number\"\r\n | \"date\"\r\n | \"datetime\"\r\n | \"combobox\"\r\n | \"checkbox\"\r\n | \"html\"\r\n | \"lookup\";\r\n};\r\n\r\nconst ReportViewer: React.FC<ReportViewerProps> = (props) => {\r\n const [blobUrl, setBlobUrl] = useState(null);\r\n const [errorMessage, setErrorMessage] = useState(null);\r\n const [excelReportData, setExcelReportData] = useState<Array<any>>([]);\r\n const [reportViewerState, setReportViewerState] = useState<ReportViewerState>(\r\n \"WAITING_REPORT_CODE\"\r\n );\r\n const { handleGetRequest, handlePostRequest, HandleDownloadHTTPPostPDF } =\r\n useAxios();\r\n const [reportInfo, setReportInfo] = useState<any>(null);\r\n const [reportParametersValues, setReportParametersValues] = useState<any>({\r\n ...props?.reportParametersValues,\r\n });\r\n const [reportParametersElements, setReportParametersElements] = useState<\r\n Array<FormElementProps>\r\n >([]);\r\n const { t } = useTranslation();\r\n\r\n const getFormElementsFromReportParameters = (\r\n reportParameters: Array<ReportParameter>\r\n ) => {\r\n const formElements: Array<FormElementProps> = [];\r\n for (const reportParameter of reportParameters) {\r\n const formElement: FormElementProps = {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: reportParameter?.parameterLabel,\r\n fieldName: reportParameter?.parameterCode,\r\n fieldType: reportParameter?.parameterType,\r\n hidden: reportParameter?.hidden,\r\n formProps: { fieldSize: { lg: 4, md: 6, sm: 12 } },\r\n required: reportParameter?.mandatory,\r\n defaultValue:\r\n reportParametersValues[reportParameter?.parameterCode] ||\r\n reportParameter?.defaultValue,\r\n },\r\n };\r\n formElements.push(formElement);\r\n }\r\n return formElements;\r\n };\r\n const loadReportData = async () => {\r\n setReportViewerState(\"LOADING_METADATA\");\r\n await handleGetRequest({\r\n endPointURI: \"api/v1/dev/report/metadata\",\r\n showMask: true,\r\n parameters: { reportCode: props.reportCode },\r\n successCallBkFn: (response: any) => {\r\n setReportInfo(response.data);\r\n setReportParametersElements(\r\n getFormElementsFromReportParameters(response.data.reportParameters)\r\n );\r\n if (\r\n props?.byPassParameterEntry === true ||\r\n response.data.reportParameters.length == 0\r\n ) {\r\n runReport(response.data, reportParametersValues);\r\n setReportViewerState(\"WAITING_RESULT\");\r\n } else {\r\n setReportViewerState(\"WAITING_PARAMETER_INPUT\");\r\n }\r\n },\r\n failureCallBkFn: (response) => {\r\n setErrorMessage(\r\n \"Failed loading report metadata ... contact your administrator\"\r\n );\r\n setReportViewerState(\"ERROR\");\r\n },\r\n });\r\n };\r\n\r\n const runReport = async (reportInfoProp, params) => {\r\n setReportViewerState(\"WAITING_RESULT\");\r\n if (reportInfoProp?.reportType === \"Excel\") {\r\n await handlePostRequest({\r\n endPointURI: \"api/v1/dev/report/run\",\r\n showMask: true,\r\n data: {\r\n reportCode: props.reportCode,\r\n parameters: params,\r\n resultMode: props.resultMode,\r\n jasperOutPutFileType: props.jasperOutPutFileType,\r\n },\r\n successCallBkFn: (response: any) => {\r\n setReportViewerState(\"SHOWING_RESULT\");\r\n setExcelReportData(response.data);\r\n },\r\n });\r\n } else if (reportInfoProp?.reportType) {\r\n await HandleDownloadHTTPPostPDF({\r\n endPointURI: \"api/v1/dev/report/run\",\r\n showMask: true,\r\n data: {\r\n reportCode: props.reportCode,\r\n parameters: params,\r\n resultMode: props.resultMode,\r\n jasperOutPutFileType: props.jasperOutPutFileType,\r\n },\r\n successCallBkFn: (response: any) => {\r\n setReportViewerState(\"SHOWING_RESULT\");\r\n const contentDisposition = response.headers[\"content-disposition\"];\r\n let filename = \"downloaded_file\";\r\n if (\r\n contentDisposition &&\r\n contentDisposition.indexOf(\"filename=\") !== -1\r\n ) {\r\n const match = contentDisposition.match(/filename=\"?([^\"]+)\"?/);\r\n if (match && match[1]) filename = match[1];\r\n }\r\n if (filename.includes(\"pdf\")) {\r\n const file = new Blob([response.data], { type: \"application/pdf\" });\r\n const url = URL.createObjectURL(file);\r\n setBlobUrl(url);\r\n } else {\r\n const blob = new Blob([response.data], {\r\n type: response.headers[\"content-type\"],\r\n });\r\n // Create a temporary anchor element\r\n const url = window.URL.createObjectURL(blob);\r\n const link = document.createElement(\"a\");\r\n link.href = url;\r\n // Optional: Try to get filename from response headers\r\n\r\n link.download = filename;\r\n document.body.appendChild(link);\r\n link.click();\r\n\r\n // Clean up\r\n document.body.removeChild(link);\r\n window.URL.revokeObjectURL(url);\r\n }\r\n console.log(response);\r\n },\r\n failureCallBkFn: (response) => {\r\n setErrorMessage(\r\n \"Failed To run report ... contact your administrator\"\r\n );\r\n setReportViewerState(\"ERROR\");\r\n },\r\n });\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (props?.reportCode) {\r\n loadReportData();\r\n }\r\n }, [\r\n props.reportCode,\r\n props.byPassParameterEntry,\r\n props.reportParametersValues,\r\n props.jasperOutPutFileType,\r\n props.resultMode,\r\n ]);\r\n\r\n return (\r\n <>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n width: \"100%\",\r\n }}\r\n >\r\n <Box sx={{ flex: 1, textAlign: \"center\", marginBottom: 1 }}>\r\n <FontAwesomeIcon\r\n icon={\r\n reportInfo?.reportType === \"Excel\" ? \"file-excel\" : \"file-pdf\"\r\n }\r\n color={reportInfo?.reportType === \"Excel\" ? \"darkgreen\" : \"darkred\"}\r\n style={{ marginRight: 10, marginLeft: 10 }}\r\n />\r\n {reportInfo?.reportName}\r\n </Box>\r\n {reportInfo?.reportType != \"Excel\" ? (\r\n reportViewerState === \"SHOWING_RESULT\" ? (\r\n <>\r\n {props?.byPassParameterEntry === true ? (\r\n <></>\r\n ) : reportParametersElements.length > 0 ? (\r\n <IconButton\r\n onClick={() => {\r\n setReportParametersElements(\r\n getFormElementsFromReportParameters(\r\n reportInfo.reportParameters\r\n )\r\n );\r\n setReportViewerState(\"WAITING_PARAMETER_INPUT\");\r\n }}\r\n >\r\n <FontAwesomeIcon icon=\"filter\" />\r\n </IconButton>\r\n ) : (\r\n <></>\r\n )}\r\n <IconButton>\r\n <FontAwesomeIcon\r\n icon=\"refresh\"\r\n onClick={() => {\r\n runReport(reportInfo, reportParametersValues);\r\n }}\r\n />\r\n </IconButton>\r\n </>\r\n ) : (\r\n <></>\r\n )\r\n ) : (\r\n <></>\r\n )}\r\n </Box>\r\n <Box\r\n sx={{\r\n flexGrow: 1,\r\n width: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-start\",\r\n }}\r\n >\r\n {reportViewerState === \"WAITING_PARAMETER_INPUT\" &&\r\n reportInfo?.reportType != \"Excel\" ? (\r\n <Accordion defaultExpanded sx={{ width: \"100%\" }} expanded={true}>\r\n <AccordionSummary>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <FontAwesomeIcon\r\n style={{ marginLeft: 5, marginRight: 5 }}\r\n icon=\"search\"\r\n />\r\n <Typography component=\"span\">Filters</Typography>\r\n </Box>\r\n </AccordionSummary>\r\n <AccordionDetails>\r\n <Box>\r\n <TemplateForm\r\n saveButtonSpecs={{\r\n label: t(\"SHOW_REPORT_BTN_LABEL\"),\r\n icon: \"search\",\r\n actionButtonVariant: \"outlined\",\r\n actionButtonColor: \"success\",\r\n hidden: true,\r\n }}\r\n cancelButtonSpecs={{\r\n label: t(\"RESET_BTN_LABEL\"),\r\n icon: \"eraser\",\r\n actionButtonVariant: \"outlined\",\r\n actionButtonColor: \"error\",\r\n }}\r\n apiActions={{\r\n deleteRecordById: async () => {\r\n return true;\r\n },\r\n saveRecord: async (params) => {\r\n if (params != undefined) {\r\n setReportParametersValues(params);\r\n } else {\r\n setReportParametersValues({});\r\n }\r\n runReport(reportInfo, params);\r\n },\r\n reloadData: async () => {},\r\n loadRecordById: async () => {},\r\n }}\r\n elements={reportParametersElements}\r\n />\r\n </Box>\r\n </AccordionDetails>\r\n </Accordion>\r\n ) : reportViewerState === \"SHOWING_RESULT\" ||\r\n ((reportViewerState === \"WAITING_PARAMETER_INPUT\" ||\r\n reportViewerState === \"WAITING_RESULT\") &&\r\n reportInfo?.reportType === \"Excel\") ? (\r\n reportInfo?.reportType === \"Excel\" ? (\r\n <ExcelReportViewer\r\n reportData={excelReportData}\r\n setReportData={setExcelReportData}\r\n reloadReport={async () => {\r\n runReport(reportInfo, reportParametersValues);\r\n }}\r\n gridLoadParameters={reportParametersElements}\r\n gridLoadParametersValues={reportParametersValues}\r\n setGridLoadParametersValues={setReportParametersValues}\r\n />\r\n ) : (\r\n <iframe\r\n src={blobUrl}\r\n width=\"100%\"\r\n height=\"100%\"\r\n title=\"PDF Preview\"\r\n style={{ border: \"1px solid #ccc\", marginTop: \"20px\" }}\r\n ></iframe>\r\n )\r\n ) : reportViewerState === \"ERROR\" ? (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flex: 1,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <FontAwesomeIcon\r\n icon=\"circle-exclamation\"\r\n color=\"darkred\"\r\n style={{ marginRight: 10, marginLeft: 10 }}\r\n />\r\n {errorMessage}\r\n </Box>\r\n ) : (\r\n <></>\r\n )}\r\n </Box>\r\n </>\r\n );\r\n};\r\n\r\nexport default ReportViewer;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions, useWindow } from \"../../../hooks\";\r\nimport {\r\n FormActionProps,\r\n FormElementProps,\r\n} from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { UseFormReturn } from \"react-hook-form\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { toast } from \"react-toastify\";\r\nimport ReportParametersForm from \"./ReportParametersForm\";\r\nimport ReportParameterGrid from \"./ReportParameterGrid\";\r\nimport ReportViewer from \"../../templates/report/ReportViewer\";\r\n\r\ntype ValidationCritria = {\r\n isVisible: boolean;\r\n isMandatory: boolean;\r\n};\r\n\r\nexport type ReportType = \"Jasper\" | \"Excel\" | \"Blueprint\";\r\n\r\ntype ReportValidationOptions = {\r\n useSysDatasource: ValidationCritria;\r\n datasourceConId: ValidationCritria;\r\n reportBluePrintId: ValidationCritria;\r\n reportExcelDataQueryId: ValidationCritria;\r\n reportJasperName: ValidationCritria;\r\n reportJasperPath: ValidationCritria;\r\n};\r\n\r\ntype validationObjectType = {\r\n [key in ReportType]: ReportValidationOptions;\r\n};\r\n\r\nconst validationObject: validationObjectType = {\r\n Blueprint: {\r\n useSysDatasource: { isMandatory: false, isVisible: false },\r\n datasourceConId: { isMandatory: false, isVisible: false },\r\n reportBluePrintId: { isMandatory: true, isVisible: true },\r\n reportExcelDataQueryId: { isMandatory: false, isVisible: false },\r\n reportJasperName: { isMandatory: false, isVisible: false },\r\n reportJasperPath: { isMandatory: false, isVisible: false },\r\n },\r\n Jasper: {\r\n useSysDatasource: { isMandatory: false, isVisible: true },\r\n datasourceConId: { isMandatory: false, isVisible: true },\r\n reportBluePrintId: { isMandatory: false, isVisible: false },\r\n reportExcelDataQueryId: { isMandatory: false, isVisible: false },\r\n reportJasperName: { isMandatory: true, isVisible: true },\r\n reportJasperPath: { isMandatory: true, isVisible: true },\r\n },\r\n Excel: {\r\n useSysDatasource: { isMandatory: false, isVisible: false },\r\n datasourceConId: { isMandatory: false, isVisible: false },\r\n reportBluePrintId: { isMandatory: false, isVisible: false },\r\n reportExcelDataQueryId: { isMandatory: true, isVisible: true },\r\n reportJasperName: { isMandatory: false, isVisible: false },\r\n reportJasperPath: { isMandatory: false, isVisible: false },\r\n },\r\n};\r\n\r\nconst adjustFormAccordingToReportType = (\r\n value: any,\r\n formActions: FormActionProps,\r\n formManager: UseFormReturn\r\n) => {\r\n if (value && validationObject[value]) {\r\n const validationObjects: ReportValidationOptions = validationObject[value];\r\n const fields = Object.keys(validationObjects);\r\n for (const field of fields) {\r\n const validationCritria: ValidationCritria = validationObjects[field];\r\n if (validationCritria.isVisible) {\r\n formActions.showField(field);\r\n } else {\r\n formActions.hideField(field);\r\n formManager.setValue(field, null);\r\n }\r\n }\r\n } else {\r\n formActions.hideField(\"useSysDatasource\");\r\n formActions.hideField(\"datasourceConId\");\r\n formActions.hideField(\"reportBluePrintId\");\r\n formActions.hideField(\"reportExcelDataQueryId\");\r\n formActions.hideField(\"reportJasperName\");\r\n formActions.hideField(\"reportJasperPath\");\r\n formManager.setValue(\"useSysDatasource\", null);\r\n formManager.setValue(\"datasourceConId\", null);\r\n formManager.setValue(\"reportBluePrintId\", null);\r\n formManager.setValue(\"reportExcelDataQueryId\", null);\r\n formManager.setValue(\"reportJasperName\", null);\r\n formManager.setValue(\"reportJasperPath\", null);\r\n }\r\n};\r\n\r\nconst ReportGrid: React.FC = () => {\r\n const { t } = useTranslation();\r\n const [selectedRecord, setSelectedRecord] = useState(null);\r\n const {\r\n Window: ReporTrialWindow,\r\n setWindowState: setReportTrialWindowState,\r\n } = useWindow({\r\n windowTitle: \"Report View\",\r\n windowIcon: \"eye\",\r\n width: \"80%\",\r\n });\r\n const {\r\n Window: ReportParameterWindow,\r\n setWindowState: setReportParameterWindowState,\r\n } = useWindow({\r\n windowTitle: \"Report Parameters\",\r\n windowIcon: \"p\",\r\n width: \"80%\",\r\n });\r\n const [data, setData] = useState([]);\r\n const SystemDataSources = useSelector(\r\n (state: any) => state.commonStores.stores.SystemDataSources.data\r\n );\r\n const SystemDataQueries = useSelector(\r\n (state: any) => state.commonStores.stores.SystemDataQueries.data\r\n );\r\n const SystemBluePrints = useSelector(\r\n (state: any) => state.commonStores.stores.SystemBluePrints.data\r\n );\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/report/all\",\r\n deleteById: \"api/v1/dev/report\",\r\n save: \"api/v1/dev/report\",\r\n findById: \"api/v1/dev/report\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_TYPE\",\r\n fieldName: \"reportType\",\r\n options: [\r\n { value: \"Excel\" },\r\n { value: \"Jasper\" },\r\n { value: \"Blueprint\" },\r\n ],\r\n optionDisplayField: \"value\",\r\n optionValueField: \"value\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n formProps: {\r\n onValueChangeCallBack(\r\n value,\r\n formManager,\r\n formActions,\r\n selectedRecord\r\n ) {\r\n adjustFormAccordingToReportType(value, formActions, formManager);\r\n },\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_CODE\",\r\n fieldName: \"reportCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_NAME\",\r\n fieldName: \"reportName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_CATEGORY\",\r\n fieldName: \"reportCategory\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Authority Code\",\r\n fieldName: \"reportAuthorityCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_EXPORT_NAME\",\r\n fieldName: \"reportExportName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_USE_SYS_DATASOURCE\",\r\n fieldName: \"useSysDatasource\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n formProps: {\r\n onValueChangeCallBack(\r\n value,\r\n formManager,\r\n formActions,\r\n selectedRecord\r\n ) {\r\n if (value) {\r\n formActions.hideField(\"datasourceConId\");\r\n formManager.setValue(\"datasourceConId\", null);\r\n } else {\r\n formActions.showField(\"datasourceConId\");\r\n }\r\n },\r\n },\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_DATASOURCE_CON_ID\",\r\n fieldName: \"datasourceConId\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemDataSources,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"connectionName\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_BLUE_PRINT_ID\",\r\n fieldName: \"reportBluePrintId\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemBluePrints,\r\n optionDisplayField: \"bluePrintCode\",\r\n optionValueField: \"id\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_EXCEL_DATA_QUERY_ID\",\r\n fieldName: \"reportExcelDataQueryId\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemDataQueries,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"queryName\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_JASPER_NAME\",\r\n fieldName: \"reportJasperName\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_JASPER_PATH\",\r\n fieldName: \"reportJasperPath\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Active\",\r\n fieldName: \"isActive\",\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <ReporTrialWindow>\r\n <ReportViewer\r\n reportCode={selectedRecord?.reportCode}\r\n resultMode=\"App\"\r\n />\r\n </ReporTrialWindow>\r\n <ReportParameterWindow>\r\n <ReportParameterGrid selectedRecord={selectedRecord} />\r\n </ReportParameterWindow>\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{\r\n editMode: \"modal\",\r\n specs: {\r\n modalTitle: \"Report\",\r\n modalIcon: \"file\",\r\n modalWidth: 300,\r\n },\r\n }}\r\n rowActions={[\r\n {\r\n icon: \"p\",\r\n label: \"Report Parameters\",\r\n isActionVisibleForRecord: (record) => {\r\n return record.reportType === \"Jasper\";\r\n },\r\n actionFn: async (data, recordIdsToProcessActionOn) => {\r\n setSelectedRecord(data);\r\n setReportParameterWindowState(true);\r\n },\r\n },\r\n {\r\n icon: \"eye\",\r\n label: \"View Report\",\r\n actionFn: async (data, recordIdsToProcessActionOn) => {\r\n setSelectedRecord(data);\r\n setReportTrialWindowState(true);\r\n },\r\n },\r\n ]}\r\n formLoadCallBk={(\r\n formActions: FormActionProps,\r\n formManager: UseFormReturn,\r\n record: any\r\n ) => {\r\n adjustFormAccordingToReportType(\r\n record.reportType,\r\n formActions,\r\n formManager\r\n );\r\n if (record?.useSysDatasource === true) {\r\n formActions.hideField(\"datasourceConId\");\r\n }\r\n }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"REPORT_PLURAL\")}\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"REPORT_EDIT\",\r\n preActionValidation: (record) => {\r\n if (\r\n record?.reportType === \"Jasper\" &&\r\n record?.useSysDatasource === false &&\r\n !record?.datasourceConId\r\n ) {\r\n toast.error(\"You must choose the datasource\");\r\n return false;\r\n }\r\n if (record?.reportType === \"Jasper\" && !record?.reportJasperName) {\r\n toast.error(\"You must enter the jasper report name\");\r\n return false;\r\n }\r\n if (record?.reportType === \"Jasper\" && !record?.reportJasperPath) {\r\n toast.error(\"You must enter the jasper report path\");\r\n return false;\r\n }\r\n if (\r\n record?.reportType === \"Blueprint\" &&\r\n !record?.reportBluePrintId\r\n ) {\r\n toast.error(\"You must choose the report blueprint\");\r\n return false;\r\n }\r\n if (\r\n record?.reportType === \"Excel\" &&\r\n !record?.reportExcelDataQueryId\r\n ) {\r\n toast.error(\"You must choose the report query\");\r\n return false;\r\n }\r\n return true;\r\n },\r\n }}\r\n deleteAction={{ isEnabled: true, authority: \"REPORT_DELETE\" }}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default ReportGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { isValidEmail } from \"../../../util\";\r\nimport { toast } from \"react-toastify\";\r\n\r\ntype MailRecipientGridProps = {\r\n selectedRecord: any;\r\n callBkFn: () => void;\r\n};\r\n\r\nconst MailRecipientGrid: React.FC<MailRecipientGridProps> = (props) => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/mailrecipient/all\",\r\n deleteById: \"api/v1/dev/mailrecipient\",\r\n save: \"api/v1/dev/mailrecipient\",\r\n findById: \"api/v1/dev/mailrecipient\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_RECIPIENT_MAIL_TEMPLATE_ID\",\r\n fieldName: \"mailTemplateId\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_RECIPIENT_RECIPIENT_TYPE\",\r\n fieldName: \"recipientType\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: [{ value: \"To\" }, { value: \"CC\" }],\r\n optionDisplayField: \"value\",\r\n optionValueField: \"value\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_RECIPIENT_RECIPIENT_MAIL\",\r\n fieldName: \"recipientMail\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_RECIPIENT_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n hideInfoBar={true}\r\n gridLoadParametersValues={{mailTemplateId:props.selectedRecord.id}}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"MAIL_RECIPIENT_PLURAL\")}\r\n girdIcon=\"users\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"MAIL_RECIPIENT_EDIT\",\r\n preActionValidation: (record) => {\r\n if (record?.recipientMail && !isValidEmail(record.recipientMail)) {\r\n toast.error(\"You must enter a valid email address\");\r\n return false;\r\n }\r\n record.mailTemplateId = props.selectedRecord.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{ isEnabled: true, authority: \"MAIL_RECIPIENT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default MailRecipientGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\ntype MailBodyGridProps = {\r\n selectedRecord: any;\r\n callBkFn: () => void;\r\n};\r\n\r\nconst MailBodyGrid: React.FC<MailBodyGridProps> = (props) => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const SystemDataQueries = useSelector(\r\n (state: any) => state.commonStores.stores.SystemDataQueries.data\r\n );\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/mailbody/all\",\r\n deleteById: \"api/v1/dev/mailbody\",\r\n save: \"api/v1/dev/mailbody\",\r\n findById: \"api/v1/dev/mailbody\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_BODY_NAME\",\r\n fieldName: \"bodyName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_BODY_ORDER\",\r\n fieldName: \"bodyOrder\",\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_BODY_CONTENT\",\r\n fieldName: \"bodyContent\",\r\n required: true,\r\n fieldType: \"text\",\r\n muiTextFieldProps: { multiline: true, rows: 6 },\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_BODY_CONTENT_DATA_QUERY_ID\",\r\n fieldName: \"bodyContentDataQueryId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemDataQueries,\r\n optionDisplayField: \"queryName\",\r\n optionValueField: \"id\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_PRINT_FOR_EACH_RECORD\",\r\n fieldName: \"printForEachRecord\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_IS_MAIN\",\r\n fieldName: \"isMain\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_MAIL_TEMPLATE_ID\",\r\n fieldName: \"mailTemplateId\",\r\n required: false,\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n fieldType: \"number\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n hideInfoBar={true}\r\n gridLoadParametersValues={{ mailTemplateId: props.selectedRecord.id }}\r\n setData={setData}\r\n editMode={{\r\n editMode: \"modal\",\r\n specs: {\r\n modalIcon: { prefix: \"fas\", iconName: \"envelope-open-text\" },\r\n modalTitle: \"Mail Body\",\r\n modalWidth: \"50%\",\r\n },\r\n }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"MAIL_BODY_PLURAL\")}\r\n girdIcon={{ prefix: \"fas\", iconName: \"envelope-open-text\" }}\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"MAIL_BODY_EDIT\",\r\n preActionValidation: async (record) => {\r\n record.mailTemplateId = props.selectedRecord.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{ isEnabled: true, authority: \"MAIL_BODY_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default MailBodyGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\ntype MailAttachmentGridProps = {\r\n selectedRecord: any;\r\n callBkFn: () => void;\r\n};\r\n\r\nconst MailAttachmentGrid: React.FC<MailAttachmentGridProps> = (props) => {\r\n const SystemReports = useSelector(\r\n (state: any) => state.commonStores.stores.SystemReports.data\r\n );\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/mailattachment/all\",\r\n deleteById: \"api/v1/dev/mailattachment\",\r\n save: \"api/v1/dev/mailattachment\",\r\n findById: \"api/v1/dev/mailattachment\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n options: SystemReports,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"reportName\",\r\n fieldLabel: \"REPORT_REPORT_NAME\",\r\n fieldName: \"reportId\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_ATTACHMENT_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_ATTACHMENT_MAIL_TEMPLATE_ID\",\r\n fieldName: \"mailTemplateId\",\r\n required: false,\r\n hidden: true,\r\n gridProps: { hidden: true },\r\n fieldType: \"number\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n hideInfoBar={true}\r\n gridLoadParametersValues={{ mailTemplateId: props.selectedRecord.id }}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"MAIL_ATTACHMENT_PLURAL\")}\r\n girdIcon=\"paperclip\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"MAIL_ATTACHMENT_EDIT\",\r\n preActionValidation: (record) => {\r\n record.mailTemplateId = props.selectedRecord.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{ isEnabled: true, authority: \"MAIL_ATTACHMENT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default MailAttachmentGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport {\r\n FormActionProps,\r\n FormElementProps,\r\n} from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { UseFormReturn } from \"react-hook-form\";\r\n\r\ntype ValidationCritria = {\r\n isVisible: boolean;\r\n isMandatory: boolean;\r\n};\r\n\r\nexport type EngineType = \"Gmail\" | \"Azure\";\r\n\r\ntype ReportValidationOptions = {\r\n mailHost: ValidationCritria;\r\n mailPort: ValidationCritria;\r\n mailUsername: ValidationCritria;\r\n mailPassword: ValidationCritria; \r\n mailProtocol: ValidationCritria;\r\n isMailSmtpAuthEnabled: ValidationCritria;\r\n isMailStarttlsEnabled: ValidationCritria;\r\n isSmtpSSlEnabled: ValidationCritria;\r\n azureGraphApiClientId: ValidationCritria;\r\n azureGraphApiClientSecret: ValidationCritria;\r\n azureGraphApiTenantId: ValidationCritria;\r\n azureGraphApiScope: ValidationCritria;\r\n azureGraphApiEmailId: ValidationCritria;\r\n};\r\n\r\ntype validationObjectType = {\r\n [key in EngineType]: ReportValidationOptions;\r\n};\r\n\r\nconst validationObject: validationObjectType = {\r\n Gmail: {\r\n mailHost: { isMandatory: true, isVisible: true },\r\n mailPort: { isMandatory: true, isVisible: true },\r\n mailUsername: { isMandatory: true, isVisible: true },\r\n mailPassword: { isMandatory: true, isVisible: true }, \r\n mailProtocol: { isMandatory: true, isVisible: true },\r\n isMailSmtpAuthEnabled: { isMandatory: true, isVisible: true },\r\n isMailStarttlsEnabled: { isMandatory: true, isVisible: true },\r\n isSmtpSSlEnabled: { isMandatory: true, isVisible: true },\r\n azureGraphApiClientId: { isMandatory: false, isVisible: false },\r\n azureGraphApiClientSecret: { isMandatory: false, isVisible: false },\r\n azureGraphApiTenantId: { isMandatory: false, isVisible: false },\r\n azureGraphApiScope: { isMandatory: false, isVisible: false },\r\n azureGraphApiEmailId: { isMandatory: false, isVisible: false },\r\n },\r\n Azure: {\r\n mailHost: { isMandatory: false, isVisible: false },\r\n mailPort: { isMandatory: false, isVisible: false },\r\n mailUsername: { isMandatory: false, isVisible: false },\r\n mailPassword: { isMandatory: false, isVisible: false }, \r\n mailProtocol: { isMandatory: false, isVisible: false },\r\n isMailSmtpAuthEnabled: { isMandatory: false, isVisible: false },\r\n isMailStarttlsEnabled: { isMandatory: false, isVisible: false },\r\n isSmtpSSlEnabled: { isMandatory: false, isVisible: false },\r\n azureGraphApiClientId: { isMandatory: true, isVisible: true },\r\n azureGraphApiClientSecret: { isMandatory: true, isVisible: true },\r\n azureGraphApiTenantId: { isMandatory: true, isVisible: true },\r\n azureGraphApiScope: { isMandatory: true, isVisible: true },\r\n azureGraphApiEmailId: { isMandatory: true, isVisible: true },\r\n },\r\n};\r\n\r\nconst adjustFormAccordingToEngineType = (\r\n value: any,\r\n formActions: FormActionProps,\r\n formManager: UseFormReturn\r\n) => {\r\n if (value && validationObject[value]) {\r\n const validationObjects: ReportValidationOptions = validationObject[value];\r\n const fields = Object.keys(validationObjects);\r\n for (const field of fields) {\r\n const validationCritria: ValidationCritria = validationObjects[field];\r\n if (validationCritria.isVisible) {\r\n formActions.showField(field);\r\n } else {\r\n formActions.hideField(field);\r\n formManager.setValue(field, null);\r\n }\r\n }\r\n } else {\r\n formActions.hideField(\"mailHost\");\r\n formManager.setValue(\"mailHost\", null);\r\n formActions.hideField(\"mailPort\");\r\n formManager.setValue(\"mailPort\", null);\r\n formActions.hideField(\"mailUsername\");\r\n formManager.setValue(\"mailUsername\", null);\r\n formActions.hideField(\"mailPassword\");\r\n formManager.setValue(\"mailPassword\", null); \r\n formActions.hideField(\"mailProtocol\");\r\n formManager.setValue(\"mailProtocol\", null);\r\n formActions.hideField(\"isMailSmtpAuthEnabled\");\r\n formManager.setValue(\"isMailSmtpAuthEnabled\", null);\r\n formActions.hideField(\"isMailStarttlsEnabled\");\r\n formManager.setValue(\"isMailStarttlsEnabled\", null);\r\n formActions.hideField(\"isSmtpSSlEnabled\");\r\n formManager.setValue(\"isSmtpSSlEnabled\", null);\r\n formActions.hideField(\"azureGraphApiClientId\");\r\n formManager.setValue(\"azureGraphApiClientId\", null);\r\n formActions.hideField(\"azureGraphApiClientSecret\");\r\n formManager.setValue(\"azureGraphApiClientSecret\", null);\r\n formActions.hideField(\"azureGraphApiTenantId\");\r\n formManager.setValue(\"azureGraphApiTenantId\", null);\r\n formActions.hideField(\"azureGraphApiScope\");\r\n formManager.setValue(\"azureGraphApiScope\", null);\r\n formActions.hideField(\"azureGraphApiEmailId\");\r\n formManager.setValue(\"azureGraphApiEmailId\", null);\r\n }\r\n};\r\n\r\nconst MailSenderConfigGrid: React.FC = () => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/mailsenderconfig/all\",\r\n deleteById: \"api/v1/dev/mailsenderconfig\",\r\n save: \"api/v1/dev/mailsenderconfig\",\r\n findById: \"api/v1/dev/mailsenderconfig\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Name\",\r\n fieldName: \"configName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Engine\",\r\n fieldName: \"mailEngine\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: [{ value: \"Gmail\" }, { value: \"Azure\" }],\r\n optionDisplayField: \"value\",\r\n optionValueField: \"value\",\r\n formProps: {\r\n onValueChangeCallBack(\r\n value,\r\n formManager,\r\n formActions,\r\n selectedRecord\r\n ) {\r\n adjustFormAccordingToEngineType(value, formActions, formManager);\r\n },\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Hostname\",\r\n fieldName: \"mailHost\",\r\n required: false,\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"port\",\r\n fieldName: \"mailPort\",\r\n required: false,\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"username\",\r\n fieldName: \"mailUsername\",\r\n required: false,\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"password\",\r\n fieldName: \"mailPassword\",\r\n required: false,\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Workflow Approval Receive Email\",\r\n fieldName: \"workFlowApprovalReceiveEmail\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Protocol\",\r\n fieldName: \"mailProtocol\",\r\n required: false,\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Enable Smtp Auth\",\r\n fieldName: \"isMailSmtpAuthEnabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Enable Start TLS\",\r\n fieldName: \"isMailStarttlsEnabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Enable SSL\",\r\n fieldName: \"isSmtpSSlEnabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Azure Graph API Client Id\",\r\n fieldName: \"azureGraphApiClientId\",\r\n required: false,\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Azure Graph API Secret\",\r\n fieldName: \"azureGraphApiClientSecret\",\r\n required: false,\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Azure Graph API Tenant Id\",\r\n fieldName: \"azureGraphApiTenantId\",\r\n required: false,\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Azure Graph API Scope\",\r\n fieldName: \"azureGraphApiScope\",\r\n required: false,\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Azure Graph API Email Id\",\r\n fieldName: \"azureGraphApiEmailId\",\r\n required: false,\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Default\",\r\n fieldName: \"isDefault\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Active\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{\r\n editMode: \"modal\",\r\n specs: {\r\n modalIcon: { iconName: \"paper-plane\", prefix: \"fas\" },\r\n modalTitle: \"Mail Sender Configuration\",\r\n modalWidth: 300,\r\n },\r\n }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"Mail Sender Configuration\")}\r\n girdIcon={{ iconName: \"paper-plane\", prefix: \"fas\" }}\r\n editAction={{ isEnabled: true, authority: \"MAIL_SENDER_CONFIG_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"MAIL_SENDER_CONFIG_DELETE\" }}\r\n formLoadCallBk={(\r\n formActions: FormActionProps,\r\n formManager: UseFormReturn,\r\n record: any\r\n ) => {\r\n adjustFormAccordingToEngineType(\r\n record.mailEngine,\r\n formActions,\r\n formManager\r\n );\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default MailSenderConfigGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\ntype WorkflowDocumentStatusGridProps = {\r\n selectedRecord: any;\r\n};\r\n\r\nconst WorkflowDocumentStatusGrid: React.FC<WorkflowDocumentStatusGridProps> = (\r\n props\r\n) => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/workflowdocumentstatus/all\",\r\n deleteById: \"api/v1/dev/workflowdocumentstatus\",\r\n save: \"api/v1/dev/workflowdocumentstatus\",\r\n findById: \"api/v1/dev/workflowdocumentstatus\",\r\n setData: setData,\r\n });\r\n const SystemDataQueries = useSelector(\r\n (state: any) => state.commonStores.stores.SystemDataQueries.data\r\n );\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_DOCUMENT_STATUS_CODE\",\r\n fieldName: \"documentStatusCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Status Arabic Name\",\r\n fieldName: \"documentStatusArName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Status English Name\",\r\n fieldName: \"documentStatusEnName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_DOCUMENT_STATUS_ORDER\",\r\n fieldName: \"documentStatusOrder\",\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_IS_ZERO_STATE\",\r\n fieldName: \"isZeroState\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel:\r\n \"Next Actions Query (must return array of actions in table named workflow_document_action)\",\r\n fieldName: \"nextActionsQueryId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemDataQueries,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"queryName\",\r\n gridProps: { hidden: true },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel:\r\n \"Next Action Takers Query (must return array of persons in table named person)\",\r\n fieldName: \"nextActionTakersQueryId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemDataQueries,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"queryName\",\r\n gridProps: { hidden: true },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Next Action Takers Authority\",\r\n fieldName: \"nextActionTakersAuthority\",\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_WORKFLOW_DOCUMENT_ID\",\r\n fieldName: \"workflowDocumentId\",\r\n required: false,\r\n hidden: true,\r\n gridProps: { hidden: true },\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n hideInfoBar={true}\r\n gridLoadParametersValues={{\r\n workflowDocumentId: props.selectedRecord.id,\r\n }}\r\n editMode={{\r\n editMode: \"modal\",\r\n specs: {\r\n modalIcon: \"tag\",\r\n modalTitle: \"Workflow Document Status\",\r\n modalWidth: 600,\r\n },\r\n }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"WORKFLOW_DOCUMENT_STATUS_PLURAL\")}\r\n girdIcon=\"tags\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_STATUS_EDIT\",\r\n preActionValidation: (record) => {\r\n record.workflowDocumentId = props.selectedRecord.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_STATUS_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default WorkflowDocumentStatusGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\ntype WorkflowDocumentActionMailGridProps = {\r\n selectedRecord: any;\r\n};\r\n\r\nconst WorkflowDocumentActionMailGrid: React.FC<\r\n WorkflowDocumentActionMailGridProps\r\n> = (props) => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/workflowdocumentactionmail/all\",\r\n deleteById: \"api/v1/dev/workflowdocumentactionmail\",\r\n save: \"api/v1/dev/workflowdocumentactionmail\",\r\n findById: \"api/v1/dev/workflowdocumentactionmail\",\r\n setData: setData,\r\n });\r\n\r\n const SystemMailTemplates = useSelector(\r\n (state: any) => state.commonStores.stores.SystemMailTemplates.data\r\n );\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_MAIL_DOCUMENT_ACTION_ID\",\r\n fieldName: \"documentActionId\",\r\n required: false,\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_MAIL_MAIL_TEMPLATE_ID\",\r\n fieldName: \"mailTemplateId\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: SystemMailTemplates,\r\n optionDisplayField: \"mailTemplateName\",\r\n optionValueField: \"id\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_MAIL_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n hideInfoBar={true}\r\n gridLoadParametersValues={{ actionId: props.selectedRecord.id }}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"WORKFLOW_DOCUMENT_ACTION_MAIL_PLURAL\")}\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_MAIL_EDIT\",\r\n preActionValidation: (record) => {\r\n record.documentActionId = props.selectedRecord.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_MAIL_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default WorkflowDocumentActionMailGrid;\r\n","import { useEffect, useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions, useAxios, useWindow } from \"../../../hooks\";\r\nimport WorkflowDocumentActionMailGrid from \"./WorkflowDocumentActionMailGrid\";\r\n\r\ntype WorkflowDocumentActionGridProps = {\r\n selectedRecord: any;\r\n};\r\n\r\nconst WorkflowDocumentActionGrid: React.FC<WorkflowDocumentActionGridProps> = (\r\n props\r\n) => {\r\n const [selectedRecord, setSelectedRecord] = useState<any>(null);\r\n const {\r\n Window: ActionMailsWindow,\r\n setWindowState: setActionMailWindowState,\r\n } = useWindow({\r\n windowTitle: \"Action Mail Notification\",\r\n windowIcon: \"envelope\",\r\n width: \"50%\",\r\n });\r\n const { t } = useTranslation();\r\n const { handleGetRequest } = useAxios();\r\n const [workflowStates, setWorkflowStates] = useState<Array<any>>([]);\r\n const loadWorkFlowDocumentStates = async () => {\r\n await handleGetRequest({\r\n endPointURI: \"api/v1/dev/workflowdocumentstatus/all\",\r\n showMask: true,\r\n parameters: {\r\n workflowDocumentId: props.selectedRecord.id,\r\n },\r\n successCallBkFn: (response: any) => {\r\n setWorkflowStates(response.data);\r\n },\r\n });\r\n };\r\n useEffect(() => {\r\n loadWorkFlowDocumentStates();\r\n }, [props.selectedRecord]);\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/workflowdocumentaction/all\",\r\n deleteById: \"api/v1/dev/workflowdocumentaction\",\r\n save: \"api/v1/dev/workflowdocumentaction\",\r\n findById: \"api/v1/dev/workflowdocumentaction\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_DOCUMENT_ACTION_CODE\",\r\n fieldName: \"documentActionCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Action Arabic Name\",\r\n fieldName: \"documentActionArName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Action English Name\",\r\n fieldName: \"documentActionEnName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_NEXT_DOCUMENT_STATUS_ID\",\r\n fieldName: \"nextDocumentStatusId\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: workflowStates,\r\n optionDisplayField: \"documentStatusCode\",\r\n optionValueField: \"id\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel:\r\n \"Post Action Endpoint ( system will call it with post method and parameters refDocumentId , workflowActionId)\",\r\n fieldName: \"postActionEndpoint\",\r\n required: false,\r\n fieldType: \"text\",\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel:\r\n \"Pre Action Endpoint ( system will call it with post method and parameters refDocumentId , workflowActionId)\",\r\n fieldName: \"preActionEndpoint\",\r\n required: false,\r\n fieldType: \"text\",\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_REQUIRE_COMMENT\",\r\n fieldName: \"requireComment\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_WORKFLOW_DOCUMENT_ID\",\r\n fieldName: \"workflowDocumentId\",\r\n required: false,\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: { hidden: true },\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <ActionMailsWindow>\r\n <WorkflowDocumentActionMailGrid selectedRecord={selectedRecord} />\r\n </ActionMailsWindow>\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n hideInfoBar={true}\r\n gridLoadParametersValues={{\r\n workflowDocumentId: props.selectedRecord.id,\r\n }}\r\n setData={setData}\r\n editMode={{\r\n editMode: \"modal\",\r\n specs: {\r\n modalIcon: \"stamp\",\r\n modalTitle: \"Workflow Document Action\",\r\n modalWidth: 700,\r\n },\r\n }}\r\n rowActions={[\r\n {\r\n label: \"Action Mail Notifications\",\r\n icon: \"envelope\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setActionMailWindowState(true);\r\n },\r\n },\r\n ]}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"WORKFLOW_DOCUMENT_ACTION_PLURAL\")}\r\n girdIcon=\"stamp\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_EDIT\",\r\n preActionValidation: (record) => {\r\n record.workflowDocumentId = props.selectedRecord.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_DELETE\",\r\n }}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default WorkflowDocumentActionGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport {\r\n FormActionProps,\r\n FormElementProps,\r\n} from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { UseFormReturn } from \"react-hook-form\";\r\n\r\ntype ValidationCritria = {\r\n isVisible: boolean;\r\n isMandatory: boolean;\r\n};\r\n\r\nexport type WidgetType =\r\n | \"LineChart\"\r\n | \"ColumnChart\"\r\n | \"PieChart\"\r\n | \"Card\"\r\n | \"CircularProgress\"\r\n | \"LinearProgress\";\r\n\r\ntype WidgetValidationOptions = {\r\n height: ValidationCritria;\r\n width: ValidationCritria;\r\n horizontalAxisField: ValidationCritria;\r\n horizontalAxisLabel: ValidationCritria;\r\n seriesKeys: ValidationCritria;\r\n verticalAxisField: ValidationCritria;\r\n verticalAxisLabel: ValidationCritria;\r\n};\r\n\r\ntype validationObjectType = {\r\n [key in WidgetType]: WidgetValidationOptions;\r\n};\r\n\r\nconst validationObject: validationObjectType = {\r\n LineChart: {\r\n height: { isMandatory: true, isVisible: true },\r\n width: { isMandatory: true, isVisible: true },\r\n horizontalAxisField: { isMandatory: true, isVisible: true },\r\n horizontalAxisLabel: { isMandatory: true, isVisible: true },\r\n seriesKeys: { isMandatory: false, isVisible: false },\r\n verticalAxisField: { isMandatory: true, isVisible: true },\r\n verticalAxisLabel: { isMandatory: true, isVisible: true },\r\n },\r\n ColumnChart: {\r\n height: { isMandatory: true, isVisible: true },\r\n width: { isMandatory: true, isVisible: true },\r\n horizontalAxisField: { isMandatory: true, isVisible: true },\r\n horizontalAxisLabel: { isMandatory: true, isVisible: true },\r\n seriesKeys: { isMandatory: false, isVisible: false },\r\n verticalAxisField: { isMandatory: true, isVisible: true },\r\n verticalAxisLabel: { isMandatory: true, isVisible: true },\r\n },\r\n PieChart: {\r\n height: { isMandatory: true, isVisible: true },\r\n width: { isMandatory: true, isVisible: true },\r\n horizontalAxisField: { isMandatory: true, isVisible: true },\r\n horizontalAxisLabel: { isMandatory: false, isVisible: false },\r\n seriesKeys: { isMandatory: false, isVisible: false },\r\n verticalAxisField: { isMandatory: true, isVisible: true },\r\n verticalAxisLabel: { isMandatory: false, isVisible: false },\r\n },\r\n Card: {\r\n height: { isMandatory: true, isVisible: true },\r\n width: { isMandatory: true, isVisible: true },\r\n horizontalAxisField: { isMandatory: true, isVisible: true },\r\n horizontalAxisLabel: { isMandatory: false, isVisible: false },\r\n seriesKeys: { isMandatory: false, isVisible: false },\r\n verticalAxisField: { isMandatory: true, isVisible: true },\r\n verticalAxisLabel: { isMandatory: false, isVisible: false },\r\n },\r\n CircularProgress: {\r\n height: { isMandatory: false, isVisible: false },\r\n width: { isMandatory: false, isVisible: false },\r\n horizontalAxisField: { isMandatory: false, isVisible: false },\r\n horizontalAxisLabel: { isMandatory: false, isVisible: false },\r\n seriesKeys: { isMandatory: false, isVisible: false },\r\n verticalAxisField: { isMandatory: false, isVisible: false },\r\n verticalAxisLabel: { isMandatory: false, isVisible: false },\r\n },\r\n LinearProgress: {\r\n height: { isMandatory: false, isVisible: false },\r\n width: { isMandatory: false, isVisible: false },\r\n horizontalAxisField: { isMandatory: false, isVisible: false },\r\n horizontalAxisLabel: { isMandatory: false, isVisible: false },\r\n seriesKeys: { isMandatory: false, isVisible: false },\r\n verticalAxisField: { isMandatory: false, isVisible: false },\r\n verticalAxisLabel: { isMandatory: false, isVisible: false },\r\n },\r\n};\r\n\r\nconst adjustFormAccordingToWidgetType = (\r\n value: any,\r\n formActions: FormActionProps,\r\n formManager: UseFormReturn\r\n) => {\r\n if (value && validationObject[value]) {\r\n const validationObjects: WidgetValidationOptions = validationObject[value];\r\n const fields = Object.keys(validationObjects);\r\n for (const field of fields) {\r\n const validationCritria: ValidationCritria = validationObjects[field];\r\n if (validationCritria.isVisible) {\r\n formActions.showField(field);\r\n } else {\r\n formActions.hideField(field);\r\n formManager.setValue(field, null);\r\n }\r\n }\r\n } else {\r\n formActions.hideField(\"height\");\r\n formManager.setValue(\"height\", null);\r\n formActions.hideField(\"width\");\r\n formManager.setValue(\"width\", null);\r\n formActions.hideField(\"horizontalAxisField\");\r\n formManager.setValue(\"horizontalAxisField\", null);\r\n formActions.hideField(\"horizontalAxisLabel\");\r\n formManager.setValue(\"horizontalAxisLabel\", null);\r\n formActions.hideField(\"seriesKeys\");\r\n formManager.setValue(\"seriesKeys\", null);\r\n formActions.hideField(\"verticalAxisField\");\r\n formManager.setValue(\"verticalAxisField\", null);\r\n formActions.hideField(\"verticalAxisLabel\");\r\n formManager.setValue(\"verticalAxisLabel\", null);\r\n }\r\n};\r\n\r\nconst WidgetGrid: React.FC = () => {\r\n const { t } = useTranslation();\r\n const SystemDataQueries = useSelector(\r\n (state: any) => state.commonStores.stores.SystemDataQueries.data\r\n );\r\n const SystemWidgetTypes = useSelector(\r\n (state: any) => state.commonStores.stores.SystemWidgetTypes.data\r\n );\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n commonStoreKey: \"SystemWidgets\",\r\n deleteById: \"api/v1/dev/widget\",\r\n save: \"api/v1/dev/widget\",\r\n findById: \"api/v1/dev/widget\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_WIDGET_TYPE\",\r\n fieldName: \"widgetType\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: SystemWidgetTypes,\r\n optionDisplayField: \"name\",\r\n optionValueField: \"name\",\r\n formProps: {\r\n onValueChangeCallBack(\r\n value,\r\n formManager,\r\n formActions,\r\n selectedRecord\r\n ) {\r\n adjustFormAccordingToWidgetType(value, formActions, formManager);\r\n },\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Query\",\r\n fieldName: \"dataQueryId\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: SystemDataQueries,\r\n optionDisplayField: \"queryName\",\r\n optionValueField: \"id\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_WIDGET_NAME\",\r\n fieldName: \"widgetName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_ICON\",\r\n fieldName: \"icon\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_TITLE\",\r\n fieldName: \"title\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_WIDGET_DESCRIPTION\",\r\n fieldName: \"widgetDescription\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_HEIGHT\",\r\n fieldName: \"height\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_WIDTH\",\r\n fieldName: \"width\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: [\r\n { value: 1 },\r\n { value: 2 },\r\n { value: 3 },\r\n { value: 4 },\r\n { value: 5 },\r\n { value: 6 },\r\n { value: 7 },\r\n { value: 8 },\r\n { value: 9 },\r\n { value: 10 },\r\n { value: 11 },\r\n { value: 12 },\r\n ],\r\n optionDisplayField: \"value\",\r\n optionValueField: \"value\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"group\",\r\n props: {\r\n style: { padding: 1, border: \"1px solid black\", width: \"100%\" },\r\n label: \"Data Specs\",\r\n elements: [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_HORIZONTAL_AXIS_FIELD\",\r\n fieldName: \"horizontalAxisField\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_HORIZONTAL_AXIS_LABEL\",\r\n fieldName: \"horizontalAxisLabel\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_SERIES_KEYS\",\r\n fieldName: \"seriesKeys\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_VERTICAL_AXIS_FIELD\",\r\n fieldName: \"verticalAxisField\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_VERTICAL_AXIS_LABEL\",\r\n fieldName: \"verticalAxisLabel\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{\r\n editMode: \"modal\",\r\n specs: { modalIcon: \"chart-pie\", modalTitle: \"Widget\" },\r\n }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"WIDGET_PLURAL\")}\r\n girdIcon=\"chart-pie\"\r\n editAction={{ isEnabled: true, authority: \"WIDGET_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"WIDGET_DELETE\" }}\r\n formLoadCallBk={(\r\n formActions: FormActionProps,\r\n formManager: UseFormReturn,\r\n record: any\r\n ) => {\r\n adjustFormAccordingToWidgetType(\r\n record.widgetType,\r\n formActions,\r\n formManager\r\n );\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default WidgetGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\ntype DashboardWidgetGridProps = {\r\n selectedRecord: any;\r\n};\r\n\r\nconst DashboardWidgetGrid: React.FC<DashboardWidgetGridProps> = (props) => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const SystemWidgets = useSelector(\r\n (state: any) => state.commonStores.stores.SystemWidgets.data\r\n );\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/dashboardwidget/all\",\r\n deleteById: \"api/v1/dev/dashboardwidget\",\r\n save: \"api/v1/dev/dashboardwidget\",\r\n findById: \"api/v1/dev/dashboardwidget\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_WIDGET_DASHBOARD_ID\",\r\n fieldName: \"dashboardId\",\r\n required: false,\r\n hidden: true,\r\n gridProps: { hidden: true },\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_WIDGET_WIDGET_ID\",\r\n fieldName: \"widgetId\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: SystemWidgets,\r\n optionValueField: \"id\",\r\n optionDisplayField: \"widgetName\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_WIDGET_WIDGET_ORDER\",\r\n fieldName: \"widgetOrder\",\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_WIDGET_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n hideInfoBar={true}\r\n formElements={formElements}\r\n gridLoadParametersValues={{ dashboardId: props.selectedRecord.id }}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"DASHBOARD_WIDGET_PLURAL\")}\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"DASHBOARD_WIDGET_EDIT\",\r\n preActionValidation: async (data) => {\r\n data.dashboardId = props.selectedRecord.id;\r\n return true;\r\n },\r\n }}\r\n deleteAction={{ isEnabled: true, authority: \"DASHBOARD_WIDGET_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default DashboardWidgetGrid;\r\n","import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { WidgetType } from \"../../administration/dev/WidgetGrid\";\r\nimport { Backdrop, Box, CircularProgress, Grid2 } from \"@mui/material\";\r\nimport { useEffect, useState } from \"react\";\r\nimport LoadingMask from \"../../common/LoadingMask\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { useAxios } from \"../../../hooks\";\r\nimport TemplateLineChart from \"./charts/TemplateLineChart\";\r\nimport TemplateBarChart from \"./charts/TemplateBarChart\";\r\nimport TemplatePieChart from \"./charts/TemplatePieChart\";\r\nimport TemplateDataCard from \"./charts/TemplateDataCard\";\r\nimport TemplateGauge from \"./charts/TemplateGauge\";\r\nimport TemplateLineProgress from \"./charts/TemplateLineProgress\";\r\n\r\nexport type Widget = {\r\n widgetName: string;\r\n widgetDescription: string;\r\n title: string;\r\n icon: any;\r\n dataQueryId: number;\r\n widgetType: WidgetType;\r\n width: any;\r\n height: any;\r\n horizontalAxisField: any;\r\n horizontalAxisLabel: any;\r\n verticalAxisField: string;\r\n verticalAxisLabel: string;\r\n seriesKeys: any;\r\n parameterValues: {\r\n [key: string]: any;\r\n };\r\n};\r\n\r\nconst WidgetViewer: React.FC<Widget> = (props) => {\r\n const [isWidgetLoading, setWidgetLoading] = useState(true);\r\n const [data, setData] = useState([]);\r\n const { handleGetRequest } = useAxios();\r\n const getWidgetData = async () => {\r\n setWidgetLoading(true);\r\n await handleGetRequest({\r\n endPointURI: \"api/v1/dev/query/result\",\r\n showMask: false,\r\n parameters: {\r\n queryId: props.dataQueryId,\r\n ...props.parameterValues,\r\n },\r\n successCallBkFn: (response) => {\r\n setWidgetLoading(false);\r\n setData(response.data);\r\n },\r\n failureCallBkFn: () => {\r\n setWidgetLoading(false);\r\n setData(null);\r\n },\r\n });\r\n };\r\n useEffect(() => {\r\n getWidgetData();\r\n }, [props.parameterValues]);\r\n\r\n let total = 0;\r\n if (data.length == 1) {\r\n total = 100;\r\n }\r\n if (\r\n props.widgetType === \"CircularProgress\" ||\r\n props.widgetType === \"LinearProgress\"\r\n ) {\r\n for (const record of data) {\r\n total += record[props.verticalAxisField];\r\n }\r\n }\r\n return (\r\n <>\r\n {props.widgetType === \"LineChart\" ||\r\n props.widgetType === \"PieChart\" ||\r\n props.widgetType === \"ColumnChart\" ? (\r\n <Box>\r\n <FontAwesomeIcon\r\n style={{ marginRight: 10, marginLeft: 10 }}\r\n icon={props?.icon || \"chart-pie\"}\r\n />\r\n {props?.title}\r\n </Box>\r\n ) : (\r\n <></>\r\n )}\r\n\r\n <Box\r\n sx={{\r\n flex: 1,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n width: \"100%\",\r\n }}\r\n >\r\n {isWidgetLoading ? (\r\n <>\r\n <FontAwesomeIcon\r\n icon={{ prefix: \"fas\", iconName: \"arrows-spin\" }}\r\n style={{ marginRight: 10, marginLeft: 10 }}\r\n spin\r\n size=\"2x\"\r\n />\r\n <div>Loading</div>\r\n </>\r\n ) : props.widgetType === \"ColumnChart\" ? (\r\n <TemplateBarChart\r\n data={data}\r\n widgetTitle={props.title}\r\n labelField={props.verticalAxisField}\r\n valueField={props.horizontalAxisField}\r\n valueLabel={props.horizontalAxisLabel}\r\n widgetType=\"Line\"\r\n />\r\n ) : props.widgetType === \"LineChart\" ? (\r\n <TemplateLineChart\r\n data={data}\r\n widgetTitle={props.title}\r\n labelField={props.verticalAxisField}\r\n valueField={props.horizontalAxisField}\r\n valueLabel={props.horizontalAxisLabel}\r\n widgetType=\"Line\"\r\n />\r\n ) : props.widgetType === \"PieChart\" ? (\r\n <TemplatePieChart\r\n data={data}\r\n widgetTitle={props.title}\r\n labelField={props.horizontalAxisField}\r\n valueField={props.verticalAxisField}\r\n widgetType=\"Line\"\r\n />\r\n ) : (\r\n <Grid2\r\n container\r\n sx={{\r\n width: \"100%\",\r\n alignItems: \"flex-start\",\r\n justifyContent: \"flex-start\",\r\n }}\r\n spacing={2}\r\n size={{ xs: 12 }}\r\n >\r\n <Grid2 size={{ xs: 12 }} sx={{ textAlign: \"center\" }}>\r\n {props.title}\r\n </Grid2>\r\n\r\n {data.map((record, index) => {\r\n if (props.widgetType === \"Card\") {\r\n return (\r\n <Grid2 size={{ md: 3, xs: 12 }}>\r\n <TemplateDataCard\r\n key={index}\r\n widgetTitle={\"\"}\r\n record={record}\r\n labelField={props.verticalAxisField}\r\n valueField={props.horizontalAxisField}\r\n />\r\n </Grid2>\r\n );\r\n } else if (props.widgetType === \"CircularProgress\") {\r\n return (\r\n <Grid2 size={{ md: 3, xs: 12 }}>\r\n <TemplateGauge\r\n key={index}\r\n widgetTitle={\"\"}\r\n record={record}\r\n labelField={props.horizontalAxisField}\r\n valueField={props.verticalAxisField}\r\n total={total}\r\n />\r\n </Grid2>\r\n );\r\n } else if (props.widgetType === \"LinearProgress\") {\r\n return (\r\n <Grid2 size={{ md: 3, xs: 12 }}>\r\n <TemplateLineProgress\r\n key={index}\r\n widgetTitle={\"\"}\r\n record={record}\r\n labelField={props.horizontalAxisField}\r\n valueField={props.verticalAxisField}\r\n total={total}\r\n />\r\n </Grid2>\r\n );\r\n }\r\n })}\r\n </Grid2>\r\n )}\r\n </Box>\r\n </>\r\n );\r\n};\r\n\r\nexport default WidgetViewer;\r\n","import { Box, Grid2, IconButton } from \"@mui/material\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { useAxios } from \"../../../hooks\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport WidgetViewer, { Widget } from \"./WidgetViewer\";\r\nimport { useNavigate } from \"react-router-dom\";\r\n\r\ntype DashboardViewerProps = {\r\n dashboardCode: string;\r\n parameters?: { [key: string]: any };\r\n};\r\n\r\nexport interface WidgetProps {\r\n widgetTitle?: string;\r\n widgetType: \"Line\" | \"Bar\" | \"Pie\" | \"Card\" | \"Gauge\" | \"Progress\";\r\n data: any;\r\n valueLabel?: string;\r\n valueField: string; //x-axis field in case of line/bar chart\r\n labelField: string; //y-axis field in case of line/bar chart, it can also be a comma separated string for multiple series\r\n}\r\n\r\nexport interface SingleRecordWidgetProps {\r\n widgetTitle?: string;\r\n record: object;\r\n valueField: string;\r\n labelField: string;\r\n total?: number;\r\n}\r\n\r\ntype DashboardInfo = {\r\n dashboardCode: string;\r\n dashboardName: string;\r\n dashboardTitle: string;\r\n widgets: Array<Widget>;\r\n dashboardParameters: Array<any>;\r\n};\r\n\r\nconst DashboardViewer: React.FC<DashboardViewerProps> = (props) => {\r\n const [dashboardInfo, setDashboardInfo] = useState<DashboardInfo>({\r\n dashboardCode: \"\",\r\n dashboardName: \"\",\r\n dashboardTitle: \"\",\r\n dashboardParameters: [],\r\n widgets: [],\r\n });\r\n const [dashboardParameterValues, setDashboardParameterValues] = useState<{\r\n [key: string]: any;\r\n }>(props?.parameters || {});\r\n const navigate = useNavigate();\r\n const { handleGetRequest, handlePostRequest } = useAxios();\r\n const loadDashboardInfo = async () => {\r\n await handleGetRequest({\r\n endPointURI: \"api/v1/dev/dashboard/metadata\",\r\n showMask: true,\r\n parameters: {\r\n dashboardCode: props.dashboardCode,\r\n },\r\n successCallBkFn: (response) => {\r\n setDashboardInfo(response.data);\r\n },\r\n failureCallBkFn: () => {\r\n setDashboardInfo(null);\r\n },\r\n });\r\n };\r\n useEffect(() => {\r\n if (props.dashboardCode) {\r\n loadDashboardInfo();\r\n }\r\n }, [props.dashboardCode, props.parameters]);\r\n return (\r\n <>\r\n {dashboardInfo ? (\r\n <>\r\n <Box\r\n sx={{\r\n fontSize: 20,\r\n fontWeight: \"bold\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <IconButton\r\n onClick={() => {\r\n navigate(-1, { replace: true });\r\n }}\r\n >\r\n <FontAwesomeIcon icon=\"arrow-left\" />\r\n </IconButton>\r\n <Box sx={{ flex: 1 }}></Box>\r\n <FontAwesomeIcon\r\n style={{ marginLeft: 10, marginRight: 10 }}\r\n icon={\"square-poll-vertical\"}\r\n />\r\n <Box>{dashboardInfo?.dashboardTitle}</Box>\r\n <Box sx={{ flex: 1 }}></Box>\r\n </Box>\r\n <Grid2\r\n container\r\n spacing={1}\r\n sx={{\r\n flexGrow: 1,\r\n overflowY: \"auto\",\r\n padding: 1,\r\n }}\r\n >\r\n {dashboardInfo?.widgets.map((widget, index) => {\r\n return (\r\n <Grid2\r\n key={index}\r\n sx={{\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n padding: 1,\r\n display: \"flex\",\r\n overflow: \"auto\",\r\n flexDirection:\r\n widget.widgetType != \"Card\" ? \"column\" : undefined,\r\n height: widget?.height || 300,\r\n }}\r\n size={{ md: widget?.width, sm: 12 }}\r\n >\r\n <WidgetViewer {...widget} />\r\n </Grid2>\r\n );\r\n })}\r\n </Grid2>\r\n </>\r\n ) : (\r\n <Box\r\n sx={{\r\n flex: 1,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n fontSize: 24,\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n No Dashboard Found\r\n </Box>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default DashboardViewer;\r\n","import Home from \"../components/common/Home\";\r\nimport { ADMINISTRATION_ROUTES } from \"./administration\";\r\nimport { SystemRoute } from \"./types\";\r\n\r\nexport const SYSTEM_ROUTES: Array<SystemRoute> = [\r\n {\r\n path: \"/\",\r\n component: Home,\r\n },\r\n ...ADMINISTRATION_ROUTES,\r\n];\r\n","import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { Box } from \"@mui/material\";\r\nimport { TemplateForm } from \"../templates\";\r\nimport ReportViewer from \"../templates/report/ReportViewer\";\r\nimport WorkflowDocumentPanel from \"../templates/workflow/WorkflowDocumentPanel\";\r\nimport DashboardViewer from \"../templates/visuals/DashboardViewer\";\r\n\r\nconst Home: React.FC = () => {\r\n return (\r\n // <DashboardViewer dashboardCode=\"XX_TEMPLATE_DASHBOARD\" />\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n flex: 1,\r\n fontSize: 24,\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n <img src=\"logo.png\" style={{ margin: 5 }} />\r\n <div>Welcome to Ezzsteel Flat Product Management System</div>\r\n <div style={{ fontSize: 16 }}>\r\n Use side menu [\r\n <FontAwesomeIcon\r\n icon=\"bars\"\r\n style={{ marginLeft: 10, marginRight: 10 }}\r\n />\r\n ] to navigate to your authorized system modules\r\n </div>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default Home;\r\n","import { SystemRoute } from \"../types\";\r\nimport { adminRoutes } from \"./adminRoutes\";\r\nimport { devRoutes } from \"./devRoutes\";\r\n\r\nexport const ADMINISTRATION_ROUTES: Array<SystemRoute> = [\r\n ...adminRoutes,\r\n ...devRoutes,\r\n];\r\n","import { SystemRoute } from \"../types\";\r\nimport OrganizationGrid from \"../../components/administration/admin/OrganizationGrid\";\r\nimport OrganizationMemberGrid from \"../../components/administration/admin/OrganizationMemberGrid\";\r\nimport OrganizationMemberRoleGrid from \"../../components/administration/admin/OrganizationMemberRoleGrid\";\r\nimport OrganizationRankGrid from \"../../components/administration/admin/OrganizationRankGrid\";\r\nimport OrganizationUnitGrid from \"../../components/administration/admin/OrganizationUnitGrid\";\r\nimport OrganizationUnitTypeGrid from \"../../components/administration/admin/OrganizationUnitTypeGrid\";\r\nimport PersonGrid from \"../../components/administration/admin/PersonGrid\";\r\nimport SystemApplicationGrid from \"../../components/administration/admin/SystemApplicationGrid\";\r\nimport SystemApplicationAuthorityGrid from \"../../components/administration/admin/SystemApplicationAuthorityGrid\";\r\nimport SystemApplicationModuleGrid from \"../../components/administration/admin/SystemApplicationModuleGrid\";\r\nimport SystemApplicationRoleGrid from \"../../components/administration/admin/SystemApplicationRoleGrid\";\r\nimport SystemApplicationRoleAuthorityGrid from \"../../components/administration/admin/SystemApplicationRoleAuthorityGrid\";\r\nexport const adminRoutes: Array<SystemRoute> = [\r\n {\r\n path: \"admin/organizations\",\r\n component: OrganizationGrid,\r\n authority: \"ORGANIZATION_VIEW\",\r\n },\r\n {\r\n path: \"admin/organizationmembers\",\r\n component: OrganizationMemberGrid,\r\n authority: \"ORGANIZATION_MEMBER_VIEW\",\r\n },\r\n {\r\n path: \"admin/organizationmemberroles\",\r\n component: OrganizationMemberRoleGrid,\r\n authority: \"ORGANIZATION_MEMBER_ROLE_VIEW\",\r\n },\r\n {\r\n path: \"admin/organizationranks\",\r\n component: OrganizationRankGrid,\r\n authority: \"ORGANIZATION_RANK_VIEW\",\r\n },\r\n {\r\n path: \"admin/organizationunits\",\r\n component: OrganizationUnitGrid,\r\n authority: \"ORGANIZATION_UNIT_VIEW\",\r\n },\r\n {\r\n path: \"admin/organizationunittypes\",\r\n component: OrganizationUnitTypeGrid,\r\n authority: \"ORGANIZATION_UNIT_TYPE_VIEW\",\r\n },\r\n {\r\n path: \"admin/persons\",\r\n component: PersonGrid,\r\n authority: \"PERSON_VIEW\",\r\n },\r\n {\r\n path: \"admin/systemapplications\",\r\n component: SystemApplicationGrid,\r\n authority: \"SYSTEM_APPLICATION_VIEW\",\r\n },\r\n {\r\n path: \"admin/systemapplicationauthorities\",\r\n component: SystemApplicationAuthorityGrid,\r\n authority: \"SYSTEM_APPLICATION_AUTHORITY_VIEW\",\r\n },\r\n {\r\n path: \"admin/systemapplicationmodules\",\r\n component: SystemApplicationModuleGrid,\r\n authority: \"SYSTEM_APPLICATION_MODULE_VIEW\",\r\n },\r\n {\r\n path: \"admin/systemapplicationroles\",\r\n component: SystemApplicationRoleGrid,\r\n authority: \"SYSTEM_APPLICATION_ROLE_VIEW\",\r\n },\r\n {\r\n path: \"admin/systemapplicationroleauthorities\",\r\n component: SystemApplicationRoleAuthorityGrid,\r\n authority: \"SYSTEM_APPLICATION_ROLE_AUTHORITY_VIEW\",\r\n },\r\n];\r\n\r\n// import { adminRoutes } from \"./adminRoutes\";\r\n// [...adminRoutes]\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions, useWindow } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport OrganizationApplicationModuleGrid from \"./OrganizationApplicationModuleGrid\";\r\nimport OrganizationUnitTypeGrid from \"./OrganizationUnitTypeGrid\";\r\nimport OrganizationUnitGrid from \"./OrganizationUnitGrid\";\r\nimport OrganizationRankGrid from \"./OrganizationRankGrid\";\r\n\r\nconst OrganizationGrid: React.FC = () => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/organization/all\",\r\n deleteById: \"api/v1/admin/organization\",\r\n save: \"api/v1/admin/organization\",\r\n findById: \"api/v1/admin/organization\",\r\n setData: setData,\r\n });\r\n const {\r\n Window: ApplicationModulesWindow,\r\n setWindowState: setApplicationWindowState,\r\n } = useWindow({\r\n windowTitle: \"Organization Subscriped Application Modules\",\r\n windowIcon: \"layer-group\",\r\n });\r\n const {\r\n Window: OrgUnitTypesWindow,\r\n setWindowState: setOrgUnitTypesWindowState,\r\n } = useWindow({\r\n windowTitle: \"Organization Unit Types\",\r\n windowIcon: \"tags\",\r\n });\r\n const { Window: OrgUnitsWindow, setWindowState: setOrgUnitsWindowState } =\r\n useWindow({\r\n windowTitle: \"Organization Units\",\r\n windowIcon: \"folder-tree\",\r\n });\r\n const { Window: OrgRanksWindow, setWindowState: setOrgRanksWindowState } =\r\n useWindow({\r\n windowTitle: \"Organization Ranks\",\r\n windowIcon: \"street-view\",\r\n });\r\n const [selectedRecord, setSelectedRecord] = useState<any>(null);\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_ORGANIZATION_CODE\",\r\n fieldName: \"organizationCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_ORGANIZATION_AR_NAME\",\r\n fieldName: \"organizationArName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_ORGANIZATION_EN_NAME\",\r\n fieldName: \"organizationEnName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type:'field',\r\n mode:'props',\r\n props:{\r\n fieldLabel:'Status',\r\n fieldName:'status',\r\n fieldType:'lookup',\r\n lookupType:'STATUS'\r\n }\r\n }\r\n ];\r\n\r\n return (\r\n <>\r\n <ApplicationModulesWindow>\r\n <OrganizationApplicationModuleGrid\r\n selectedOrganization={selectedRecord}\r\n />\r\n </ApplicationModulesWindow>\r\n <OrgUnitTypesWindow>\r\n <OrganizationUnitTypeGrid selectedOrganization={selectedRecord} />\r\n </OrgUnitTypesWindow>\r\n <OrgUnitsWindow>\r\n <OrganizationUnitGrid selectedOrganization={selectedRecord} />\r\n </OrgUnitsWindow>\r\n <OrgRanksWindow>\r\n <OrganizationRankGrid selectedOrganization={selectedRecord} />\r\n </OrgRanksWindow>\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n rowActions={[\r\n {\r\n icon: \"layer-group\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setApplicationWindowState(true);\r\n },\r\n label: \"modules\",\r\n },\r\n {\r\n icon: \"tags\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setOrgUnitTypesWindowState(true);\r\n },\r\n label: \"Organization Unit Types\",\r\n },\r\n {\r\n icon: \"folder-tree\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setOrgUnitsWindowState(true);\r\n },\r\n label: \"Organization Units\",\r\n },\r\n {\r\n icon: \"street-view\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setOrgRanksWindowState(true);\r\n },\r\n label: \"Organization Ranks\",\r\n },\r\n ]}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ORGANIZATION_PLURAL\"\r\n girdIcon=\"globe\"\r\n editAction={{ isEnabled: true, authority: \"ORGANIZATION_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"ORGANIZATION_DELETE\" }}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default OrganizationGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport {useApiActions} from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst OrganizationMemberRoleGrid: React.FC = () => {\r\n\tconst { t } = useTranslation();\r\n\tconst [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n \tfindAll: \"api/v1/admin/organizationmemberrole/all\",\r\n \tdeleteById: \"api/v1/admin/organizationmemberrole\",\r\n \tsave: \"api/v1/admin/organizationmemberrole\",\r\n\t\tfindById: \"api/v1/admin/organizationmemberrole\",\r\n \tsetData: setData,\r\n \t});\r\n\t\r\n\tconst formElements: Array<FormElementProps> = [\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n \t\t\t\ttype: \"field\",\r\n \t\t\t\tmode: \"props\",\r\n \t\t\t\tprops: {\r\n \t\t\t\tfieldLabel: \"ORGANIZATION_MEMBER_ROLE_IS_ACTIVE\",\r\n \t\t\t\tfieldName: \"isActive\",\r\n \t\t\t\trequired: false,\r\n \t\t\t\tfieldType: \"checkbox\",\r\n \t\t\t\t},\r\n \t\t\t},\r\n\t\t\t\t\t \t\t\t \t\t\t \t\t\t \t\t\t\t\t\t\t\t\t\t{\r\n \t\t\t\ttype: \"field\",\r\n \t\t\t\tmode: \"props\",\r\n \t\t\t\tprops: {\r\n \t\t\t\tfieldLabel: \"ORGANIZATION_MEMBER_ROLE_END_DATE\",\r\n \t\t\t\tfieldName: \"endDate\",\r\n \t\t\t\trequired: false,\r\n \t\t\t\tfieldType: \"datetime\",\r\n \t\t\t\t},\r\n \t\t\t},\r\n\t\t\t\t\t \t\t\t \t\t\t \t\t\t\t\t\t \t\t\t{\r\n \t\t\t\ttype: \"field\",\r\n \t\t\t\tmode: \"props\",\r\n \t\t\t\tprops: {\r\n \t\t\t\tfieldLabel: \"ORGANIZATION_MEMBER_ROLE_ORGANIZATION_MEMBER_ID\",\r\n \t\t\t\tfieldName: \"organizationMemberId\",\r\n \t\t\t\trequired: true,\r\n \t\t\t\tfieldType: \"text\",\r\n \t\t\t\t},\r\n \t\t\t},\t\t\t\r\n\t\t\t\t\t \t\t\t\t\t\t\t\t\t\t{\r\n \t\t\t\ttype: \"field\",\r\n \t\t\t\tmode: \"props\",\r\n \t\t\t\tprops: {\r\n \t\t\t\tfieldLabel: \"ORGANIZATION_MEMBER_ROLE_START_DATE\",\r\n \t\t\t\tfieldName: \"startDate\",\r\n \t\t\t\trequired: false,\r\n \t\t\t\tfieldType: \"datetime\",\r\n \t\t\t\t},\r\n \t\t\t},\r\n\t\t\t\t\t \t\t\t\t\t\t \t\t\t{\r\n \t\t\t\ttype: \"field\",\r\n \t\t\t\tmode: \"props\",\r\n \t\t\t\tprops: {\r\n \t\t\t\tfieldLabel: \"ORGANIZATION_MEMBER_ROLE_SYSTEM_APPLICATION_ROLE_ID\",\r\n \t\t\t\tfieldName: \"systemApplicationRoleId\",\r\n \t\t\t\trequired: true,\r\n \t\t\t\tfieldType: \"text\",\r\n \t\t\t\t},\r\n \t\t\t},\t\t\t\r\n\t\t\t\t\t \t\t\t \t\t\t \t\t\t \t\t];\r\n\r\n\treturn (\r\n \t<TemplateGrid\r\n \t\tapiActions={apiActions}\r\n \t\tdata={data}\r\n \t\tsetData={setData}\r\n \t\teditMode={{ editMode: \"row\"}}\r\n \t\tformElements={formElements}\r\n\t\t\tkeyColumnName={\"id\"}\r\n \t\tgridTitle=\"ORGANIZATION_MEMBER_ROLE_PLURAL\"\r\n \t\tgirdIcon=\"table-cells\"\r\n \t\teditAction={{ isEnabled: true, authority: \"ORGANIZATION_MEMBER_ROLE_EDIT\" }}\r\n \t\tdeleteAction={{ isEnabled: true, authority: \"ORGANIZATION_MEMBER_ROLE_DELETE\" }}\r\n \t/>\r\n );\r\n};\r\n\r\nexport default OrganizationMemberRoleGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions, useWindow } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { toast } from \"react-toastify\";\r\nimport OrganizationMemberGrid from \"./OrganizationMemberGrid\";\r\n\r\nconst PersonGrid: React.FC = () => {\r\n const { t } = useTranslation();\r\n const [selectedPerson, setSelectedPerson] = useState<any>(null);\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/person/all\",\r\n deleteById: \"api/v1/admin/person\",\r\n save: \"api/v1/admin/person\",\r\n findById: \"api/v1/admin/person\",\r\n setData: setData,\r\n });\r\n const {\r\n Window: OrganizationMembersWindow,\r\n setWindowState: setOrganizationMemberWindowState,\r\n } = useWindow({\r\n windowTitle: \"Organizations Membership\",\r\n windowIcon: \"globe\",\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n hidden: true,\r\n fieldLabel: \"Ref Source\",\r\n fieldName: \"refSource\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n hidden: true,\r\n fieldLabel: \"PERSON_EMPLOYEE_NUMBER\",\r\n fieldName: \"refSyncNumber\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"PERSON_EMPLOYEE_AR_NAME\",\r\n fieldName: \"employeeArName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"PERSON_EMPLOYEE_EN_NAME\",\r\n fieldName: \"employeeEnName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"PERSON_EMAIL\",\r\n fieldName: \"email\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"PERSON_MOBILE_NUMBER\",\r\n fieldName: \"mobileNumber\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n hidden: true,\r\n gridProps: { hidden: true },\r\n fieldLabel: \"PERSON_PASSWORD\",\r\n fieldName: \"password\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"PERSON_USERNAME\",\r\n fieldName: \"username\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"PERSON_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <OrganizationMembersWindow>\r\n <OrganizationMemberGrid selectedPerson={selectedPerson} />\r\n </OrganizationMembersWindow>\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{\r\n editMode: \"modal\",\r\n specs: {\r\n modalIcon: \"user\",\r\n modalTitle: \"Person Profile\",\r\n modalWidth: 300,\r\n },\r\n }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"PERSON_PLURAL\"\r\n rowActions={[\r\n {\r\n icon: \"globe\",\r\n label: \"User Organizations\",\r\n actionFn: async (data) => {\r\n setSelectedPerson(data);\r\n setOrganizationMemberWindowState(true);\r\n },\r\n },\r\n ]}\r\n girdIcon=\"users\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"PERSON_EDIT\",\r\n preActionValidation: (data) => {\r\n if (\r\n data.refSource != undefined &&\r\n data.refSource != null &&\r\n data.refSource != \"\"\r\n ) {\r\n toast.error(\r\n \"This Person Was synced from other system therefore you can't modify this record\"\r\n );\r\n return false;\r\n }\r\n return true;\r\n },\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"PERSON_DELETE\",\r\n preActionValidation: (data) => {\r\n if (\r\n data.refSource != undefined &&\r\n data.refSource != null &&\r\n data.refSource != \"\"\r\n ) {\r\n toast.error(\r\n \"This Person Was synced from other system therefore you can't modify this record\"\r\n );\r\n return false;\r\n }\r\n return true;\r\n },\r\n }}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default PersonGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions, useWindow } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport SystemApplicationModuleGrid from \"./SystemApplicationModuleGrid\";\r\nimport SystemApplicationAuthorityGrid from \"./SystemApplicationAuthorityGrid\";\r\nimport SystemApplicationRoleGrid from \"./SystemApplicationRoleGrid\";\r\nimport LookupGrid from \"../dev/LookupGrid\";\r\n\r\nconst SystemApplicationGrid: React.FC = () => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/systemapplication/all\",\r\n deleteById: \"api/v1/admin/systemapplication\",\r\n save: \"api/v1/admin/systemapplication\",\r\n findById: \"api/v1/admin/systemapplication\",\r\n setData: setData,\r\n });\r\n const {\r\n Window: ApplicationModulesWindow,\r\n setWindowState: setApplicationModulesWindowState,\r\n } = useWindow({\r\n windowTitle: \"System Application Modules\",\r\n windowIcon: \"layer-group\",\r\n });\r\n const {\r\n Window: ApplicationAuthoritiessWindow,\r\n setWindowState: setApplicationAuthoritiesWindowState,\r\n } = useWindow({\r\n windowTitle: \"System Application Authorities\",\r\n windowIcon: \"key\",\r\n });\r\n const {\r\n Window: ApplicationRolesWindow,\r\n setWindowState: setApplicationRolesWindowState,\r\n } = useWindow({\r\n windowTitle: \"System Application Roles\",\r\n windowIcon: \"tag\",\r\n });\r\n const {\r\n Window: ApplicationLookupsWindow,\r\n setWindowState: setApplicationLookupsWindowState,\r\n } = useWindow({\r\n windowTitle: \"System Application Lookups\",\r\n windowIcon: \"list-check\",\r\n });\r\n const [selectedRecord, setSelectedRecord] = useState<any>(null);\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_APPLICATION_CODE\",\r\n fieldName: \"applicationCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_APPLICATION_NAME\",\r\n fieldName: \"applicationName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_APPLICATION_DESCRIPTION\",\r\n fieldName: \"applicationDescription\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"SYSTEM_APPLICATION_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <ApplicationModulesWindow>\r\n <SystemApplicationModuleGrid selectedApplication={selectedRecord} />\r\n </ApplicationModulesWindow>\r\n <ApplicationAuthoritiessWindow>\r\n <SystemApplicationAuthorityGrid selectedApplication={selectedRecord} />\r\n </ApplicationAuthoritiessWindow>\r\n <ApplicationRolesWindow>\r\n <SystemApplicationRoleGrid selectedApplication={selectedRecord} />\r\n </ApplicationRolesWindow>\r\n <ApplicationLookupsWindow>\r\n <LookupGrid selectedApplication={selectedRecord} />\r\n </ApplicationLookupsWindow>\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n rowActions={[\r\n {\r\n icon: \"layer-group\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setApplicationModulesWindowState(true);\r\n },\r\n label: \"modules\",\r\n },\r\n {\r\n icon: \"key\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setApplicationAuthoritiesWindowState(true);\r\n },\r\n label: \"Authorities\",\r\n },\r\n {\r\n icon: \"tag\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setApplicationRolesWindowState(true);\r\n },\r\n label: \"Roles\",\r\n },\r\n {\r\n icon: \"list-check\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setApplicationLookupsWindowState(true);\r\n },\r\n label: \"Lookups\",\r\n },\r\n ]}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"SYSTEM_APPLICATION_PLURAL\"\r\n girdIcon=\"window-restore\"\r\n editAction={{ isEnabled: true, authority: \"SYSTEM_APPLICATION_EDIT\" }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"SYSTEM_APPLICATION_DELETE\",\r\n }}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default SystemApplicationGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport {useApiActions} from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst SystemApplicationRoleAuthorityGrid: React.FC = () => {\r\n\tconst { t } = useTranslation();\r\n\tconst [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n \tfindAll: \"api/v1/admin/systemapplicationroleauthority/all\",\r\n \tdeleteById: \"api/v1/admin/systemapplicationroleauthority\",\r\n \tsave: \"api/v1/admin/systemapplicationroleauthority\",\r\n\t\tfindById: \"api/v1/admin/systemapplicationroleauthority\",\r\n \tsetData: setData,\r\n \t});\r\n\t\r\n\tconst formElements: Array<FormElementProps> = [\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n \t\t\t\ttype: \"field\",\r\n \t\t\t\tmode: \"props\",\r\n \t\t\t\tprops: {\r\n \t\t\t\tfieldLabel: \"SYSTEM_APPLICATION_ROLE_AUTHORITY_IS_ACTIVE\",\r\n \t\t\t\tfieldName: \"isActive\",\r\n \t\t\t\trequired: false,\r\n \t\t\t\tfieldType: \"checkbox\",\r\n \t\t\t\t},\r\n \t\t\t},\r\n\t\t\t\t\t \t\t\t \t\t\t \t\t\t \t\t\t \t\t\t \t\t\t\t\t\t \t\t\t{\r\n \t\t\t\ttype: \"field\",\r\n \t\t\t\tmode: \"props\",\r\n \t\t\t\tprops: {\r\n \t\t\t\tfieldLabel: \"SYSTEM_APPLICATION_ROLE_AUTHORITY_SYSTEM_APPLICATION_AUTHORITY_ID\",\r\n \t\t\t\tfieldName: \"systemApplicationAuthorityId\",\r\n \t\t\t\trequired: true,\r\n \t\t\t\tfieldType: \"text\",\r\n \t\t\t\t},\r\n \t\t\t},\t\t\t\r\n\t\t\t\t\t \t\t\t\t\t\t \t\t\t{\r\n \t\t\t\ttype: \"field\",\r\n \t\t\t\tmode: \"props\",\r\n \t\t\t\tprops: {\r\n \t\t\t\tfieldLabel: \"SYSTEM_APPLICATION_ROLE_AUTHORITY_SYSTEM_APPLICATION_ROLE_ID\",\r\n \t\t\t\tfieldName: \"systemApplicationRoleId\",\r\n \t\t\t\trequired: true,\r\n \t\t\t\tfieldType: \"text\",\r\n \t\t\t\t},\r\n \t\t\t},\t\t\t\r\n\t\t\t\t\t \t\t\t \t\t\t \t\t\t \t\t];\r\n\r\n\treturn (\r\n \t<TemplateGrid\r\n \t\tapiActions={apiActions}\r\n \t\tdata={data}\r\n \t\tsetData={setData}\r\n \t\teditMode={{ editMode: \"row\"}}\r\n \t\tformElements={formElements}\r\n\t\t\tkeyColumnName={\"id\"}\r\n \t\tgridTitle=\"SYSTEM_APPLICATION_ROLE_AUTHORITY_PLURAL\"\r\n \t\tgirdIcon=\"table-cells\"\r\n \t\teditAction={{ isEnabled: true, authority: \"SYSTEM_APPLICATION_ROLE_AUTHORITY_EDIT\" }}\r\n \t\tdeleteAction={{ isEnabled: true, authority: \"SYSTEM_APPLICATION_ROLE_AUTHORITY_DELETE\" }}\r\n \t/>\r\n );\r\n};\r\n\r\nexport default SystemApplicationRoleAuthorityGrid;\r\n","import { SystemRoute } from \"../types\";\r\nimport BluePrintGrid from \"../../components/administration/dev/BluePrintGrid\";\r\nimport DataQueryGrid from \"../../components/administration/dev/DataQueryGrid\";\r\nimport DatasourceConnectionGrid from \"../../components/administration/dev/DatasourceConnectionGrid\";\r\nimport EntityParameterGrid from \"../../components/administration/dev/EntityParameterGrid\";\r\n\r\nimport LookupGrid from \"../../components/administration/dev/LookupGrid\";\r\n\r\nimport ReportGrid from \"../../components/administration/dev/ReportGrid\";\r\nimport MailTemplateGrid from \"../../components/administration/dev/MailTemplateGrid\";\r\nimport MailSenderConfigGrid from \"../../components/administration/dev/MailSenderConfigGrid\";\r\nimport WorkflowDocumentGrid from \"../../components/administration/dev/WorkflowDocumentGrid\";\r\nimport WidgetGrid from \"../../components/administration/dev/WidgetGrid\";\r\nimport DashboardGrid from \"../../components/administration/dev/DashboardGrid\";\r\nimport DashboardRouteView from \"../../components/templates/visuals/DashboardRouteView\";\r\nimport WorkflowDocumentMailLogGrid from \"../../components/administration/dev/WorkflowDocumentMailLogGrid\";\r\nimport MailNotificationQueueGrid from \"../../components/administration/dev/MailNotificationQueueGrid\";\r\n\r\nexport const devRoutes: Array<SystemRoute> = [\r\n {\r\n path: \"dev/blueprints\",\r\n component: BluePrintGrid,\r\n authority: \"BLUE_PRINT_VIEW\",\r\n },\r\n {\r\n path: \"dev/dataqueries\",\r\n component: DataQueryGrid,\r\n authority: \"DATA_QUERY_VIEW\",\r\n },\r\n {\r\n path: \"dev/datasourceconnections\",\r\n component: DatasourceConnectionGrid,\r\n authority: \"DATASOURCE_CONNECTION_VIEW\",\r\n },\r\n {\r\n path: \"dev/entityparameters\",\r\n component: EntityParameterGrid,\r\n authority: \"ENTITY_PARAMETER_VIEW\",\r\n },\r\n {\r\n path: \"dev/lookups\",\r\n component: LookupGrid,\r\n authority: \"LOOKUP_VIEW\",\r\n },\r\n {\r\n path: \"dev/reports\",\r\n component: ReportGrid,\r\n authority: \"REPORT_VIEW\",\r\n },\r\n {\r\n path: \"dev/mailtemplates\",\r\n component: MailTemplateGrid,\r\n authority: \"MAILTEMPLATE_VIEW\",\r\n },\r\n {\r\n path: \"dev/mailsender/config\",\r\n component: MailSenderConfigGrid,\r\n authority: \"MAILTEMPLATE_VIEW\",\r\n },\r\n {\r\n path: \"dev/workflowdocuments\",\r\n component: WorkflowDocumentGrid,\r\n authority: \"WORKFLOW_DOCUMENT_VIEW\",\r\n },\r\n {\r\n path: \"dev/widgets\",\r\n component: WidgetGrid,\r\n authority: \"WIDGET_VIEW\",\r\n },\r\n {\r\n path: \"dev/dashboards\",\r\n component: DashboardGrid,\r\n authority: \"DASHBOARD_VIEW\",\r\n },\r\n {\r\n path: \"dashboard/:dashboardCode\",\r\n component: DashboardRouteView,\r\n },\r\n {\r\n path: \"dev/workflowdocumentmaillogs\",\r\n component: WorkflowDocumentMailLogGrid,\r\n },\r\n {\r\n path: \"dev/mailnotificationqueues\",\r\n component: MailNotificationQueueGrid,\r\n },\r\n];\r\n\r\n// import { devRoutes } from \"./devRoutes\";\r\n// [...devRoutes]\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\nconst BluePrintGrid: React.FC = () => {\r\n const { t } = useTranslation();\r\n const SystemDataQueries = useSelector(\r\n (state: any) => state.commonStores.stores.SystemDataQueries.data\r\n );\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n commonStoreKey: \"SystemBluePrints\",\r\n deleteById: \"api/v1/dev/blueprint\",\r\n save: \"api/v1/dev/blueprint\",\r\n findById: \"api/v1/dev/blueprint\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_BLUE_PRINT_CODE\",\r\n fieldName: \"bluePrintCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_QUERY_ID\",\r\n fieldName: \"queryId\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: SystemDataQueries,\r\n optionDisplayField: \"queryName\",\r\n optionValueField: \"id\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\", reloadAfterSave: true }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"BLUE_PRINT_PLURAL\")}\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"BLUE_PRINT_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"BLUE_PRINT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default BluePrintGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions, useWindow } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useSelector } from \"react-redux\";\r\nimport DataQueryParametersForm from \"./DataQueryParametersForm\";\r\nimport DataQueryParameterGrid from \"./DataQueryParameterGrid\";\r\n\r\nconst DataQueryGrid: React.FC = () => {\r\n const [selectedRecord, setSelectedRecord] = useState<any>(null);\r\n const {\r\n Window: DataQueryParameterWindow,\r\n setWindowState: setDataQueryParameterWindow,\r\n } = useWindow({\r\n width: \"50%\",\r\n windowTitle: \"Data query parameters\",\r\n windowIcon: \"p\",\r\n });\r\n const SystemDataSources = useSelector(\r\n (state: any) => state.commonStores.stores.SystemDataSources.data\r\n );\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n commonStoreKey: \"SystemDataQueries\",\r\n deleteById: \"api/v1/dev/dataquery\",\r\n save: \"api/v1/dev/dataquery\",\r\n findById: \"api/v1/dev/dataquery\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_QUERY_NAME\",\r\n fieldName: \"queryName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_USE_SYS_CON\",\r\n fieldName: \"useSysCon\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n formProps: {\r\n onValueChangeCallBack(\r\n value,\r\n formManager,\r\n formActions,\r\n selectedRecord\r\n ) {\r\n if (value) {\r\n formActions.hideField(\"datasourceConId\");\r\n formManager.setValue(\"datasourceConId\", null);\r\n } else {\r\n formActions.showField(\"datasourceConId\");\r\n }\r\n },\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_DATASOURCE_CON_ID\",\r\n fieldName: \"datasourceConId\",\r\n required: false,\r\n options: SystemDataSources,\r\n optionDisplayField: \"connectionName\",\r\n optionValueField: \"id\",\r\n fieldType: \"combobox\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_QUERY_STR\",\r\n fieldName: \"queryStr\",\r\n formProps: { fieldHeight: 400 },\r\n gridProps: {\r\n hidden: true,\r\n },\r\n muiTextFieldProps: {\r\n multiline: true,\r\n rows: 4,\r\n },\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <DataQueryParameterWindow>\r\n <DataQueryParameterGrid selectedRecord={selectedRecord} />\r\n </DataQueryParameterWindow>\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n rowActions={[\r\n {\r\n label: \"Query Parameters\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setDataQueryParameterWindow(true);\r\n },\r\n icon: \"p\",\r\n },\r\n ]}\r\n data={data}\r\n setData={setData}\r\n editMode={{\r\n editMode: \"modal\",\r\n specs: {\r\n modalTitle: \"System Query\",\r\n modalWidth: 600,\r\n modalIcon: \"file-code\",\r\n },\r\n }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"DATA_QUERY_PLURAL\")}\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"DATA_QUERY_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"DATA_QUERY_DELETE\" }}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default DataQueryGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions, useAxios } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { toast } from \"react-toastify\";\r\n\r\nconst DatasourceConnectionGrid: React.FC = () => {\r\n const { handleGetRequest } = useAxios();\r\n const SystemDataSourceType = useSelector(\r\n (state: any) => state.commonStores.stores.SystemDataSourceType.data\r\n );\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n deleteById: \"api/v1/dev/datasourceconnection\",\r\n save: \"api/v1/dev/datasourceconnection\",\r\n findById: \"api/v1/dev/datasourceconnection\",\r\n setData: setData,\r\n commonStoreKey: \"SystemDataSources\",\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ID\",\r\n fieldName: \"id\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATASOURCE_CONNECTION_CONNECTION_NAME\",\r\n fieldName: \"connectionName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATASOURCE_CONNECTION_DATASOURCE_TYPE\",\r\n fieldName: \"datasourceType\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: SystemDataSourceType,\r\n optionValueField: \"value\",\r\n optionDisplayField: \"value\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATASOURCE_CONNECTION_DATASOURCE_URL\",\r\n fieldName: \"datasourceUrl\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATASOURCE_CONNECTION_DATASOURCE_USERNAME\",\r\n fieldName: \"datasourceUsername\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATASOURCE_CONNECTION_DATASOURCE_PASSWORD\",\r\n fieldName: \"datasourcePassword\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATASOURCE_CONNECTION_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{\r\n editMode: \"modal\",\r\n specs: {\r\n modalTitle: \"Datasource Connection\",\r\n modalIcon: \"plug\",\r\n modalWidth: 300,\r\n },\r\n }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"DATASOURCE_CONNECTION_PLURAL\")}\r\n girdIcon=\"plug\"\r\n rowActions={[\r\n {\r\n icon: \"plug\",\r\n label: \"test connection\",\r\n actionFn: async (data) => {\r\n await handleGetRequest({\r\n endPointURI: \"api/v1/dev/datasourceConnection/test\",\r\n showMask: true,\r\n parameters: {\r\n id: data.id,\r\n },\r\n // loadingMessage: \"checking datasource connectivity\",\r\n successCallBkFn: (response: any) => {\r\n toast.success(response.data);\r\n },\r\n });\r\n },\r\n },\r\n ]}\r\n editAction={{ isEnabled: true, authority: \"DATASOURCE_CONNECTION_EDIT\" }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"DATASOURCE_CONNECTION_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default DatasourceConnectionGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { DATE_FORMAT, DATE_TIME_FORMAT } from \"../../../util\";\r\n\r\nconst EntityParameterGrid: React.FC = () => {\r\n const { t } = useTranslation();\r\n const SystemParameterTypes = useSelector(\r\n (state: any) => state.commonStores.stores.SystemParameterTypes.data\r\n );\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n commonStoreKey: \"SystemEntityParameters\",\r\n deleteById: \"api/v1/dev/entityparameter\",\r\n save: \"api/v1/dev/entityparameter\",\r\n findById: \"api/v1/dev/entityparameter\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_CODE\",\r\n fieldName: \"parameterCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_LABEL\",\r\n fieldName: \"parameterLabel\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_TYPE\",\r\n fieldName: \"parameterType\",\r\n required: true,\r\n fieldType: \"combobox\",\r\n options: SystemParameterTypes,\r\n optionDisplayField: \"value\",\r\n optionValueField: \"value\",\r\n formProps: {\r\n onValueChangeCallBack(\r\n value,\r\n formManager,\r\n formActions,\r\n selectedRecord\r\n ) {\r\n if (value === \"combobox\") {\r\n formManager.setValue(\"parameterValueFormat\", null);\r\n formActions.showField(\"parameterDataQueryId\");\r\n formActions.showField(\"parameterDataset\");\r\n formActions.showField(\"parameterDisplayField\");\r\n formActions.showField(\"parameterValueField\");\r\n formActions.hideField(\"parameterValueFormat\");\r\n } else if (value === \"date\" || value === \"datetime\") {\r\n if (value === \"date\") {\r\n formManager.setValue(\"parameterValueFormat\", DATE_FORMAT);\r\n } else if (value === \"datetime\") {\r\n formManager.setValue(\"parameterValueFormat\", DATE_TIME_FORMAT);\r\n }\r\n formActions.hideField(\"parameterDataQueryId\");\r\n formActions.hideField(\"parameterDataset\");\r\n formActions.hideField(\"parameterDisplayField\");\r\n formActions.hideField(\"parameterValueField\");\r\n formActions.showField(\"parameterValueFormat\");\r\n } else {\r\n formManager.setValue(\"parameterValueFormat\", null);\r\n formActions.hideField(\"parameterDataQueryId\");\r\n formActions.hideField(\"parameterDataset\");\r\n formActions.hideField(\"parameterDisplayField\");\r\n formActions.hideField(\"parameterValueField\");\r\n formActions.hideField(\"parameterValueFormat\");\r\n }\r\n },\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_DATA_QUERY_ID\",\r\n fieldName: \"parameterDataQueryId\",\r\n hidden: true,\r\n required: false,\r\n fieldType: \"text\",\r\n formProps: {\r\n onValueChangeCallBack(\r\n value,\r\n formManager,\r\n formActions,\r\n selectedRecord\r\n ) {\r\n if (value != null && value != \"\") {\r\n formManager.setValue(\"parameterDataset\", null);\r\n formActions.hideField(\"parameterDataset\");\r\n } else {\r\n formActions.showField(\"parameterDataset\");\r\n }\r\n },\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_DATASET\",\r\n fieldName: \"parameterDataset\",\r\n hidden: true,\r\n required: false,\r\n fieldType: \"text\",\r\n formProps: {\r\n onValueChangeCallBack(\r\n value,\r\n formManager,\r\n formActions,\r\n selectedRecord\r\n ) {\r\n if (value != null && value != \"\") {\r\n formManager.setValue(\"parameterDataQueryId\", null);\r\n formActions.hideField(\"parameterDataQueryId\");\r\n } else {\r\n formActions.showField(\"parameterDataQueryId\");\r\n }\r\n },\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_DISPLAY_FIELD\",\r\n fieldName: \"parameterDisplayField\",\r\n hidden: true,\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_VALUE_FIELD\",\r\n fieldName: \"parameterValueField\",\r\n hidden: true,\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_VALUE_FORMAT\",\r\n fieldName: \"parameterValueFormat\",\r\n required: false,\r\n hidden: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{\r\n editMode: \"modal\",\r\n specs: {\r\n modalTitle: \"Entity Parameter\",\r\n modalIcon: \"p\",\r\n modalWidth: 300,\r\n },\r\n }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"ENTITY_PARAMETER_PLURAL\")}\r\n girdIcon=\"p\"\r\n editAction={{ isEnabled: true, authority: \"ENTITY_PARAMETER_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"ENTITY_PARAMETER_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default EntityParameterGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\n\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions, useWindow } from \"../../../hooks\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { toast } from \"react-toastify\";\r\nimport MailRecipientGrid from \"./MailRecipientGrid\";\r\nimport MailBodyGrid from \"./MailBodyGrid\";\r\nimport MailAttachmentGrid from \"./MailAttachmentGrid\";\r\n\r\nconst MailTemplateGrid: React.FC = () => {\r\n const SystemDataQueries = useSelector(\r\n (state: any) => state.commonStores.stores.SystemDataQueries.data\r\n );\r\n const [selectedRecord, setSelectedRecord] = useState<any>(null);\r\n const {\r\n Window: MailRecipentsWindow,\r\n setWindowState: setMailRecipientsWindowState,\r\n } = useWindow({ windowTitle: \"Mail Receipents\", windowIcon: \"users\" });\r\n const { Window: MailBodiesWindow, setWindowState: setMailBodiesWindowState } =\r\n useWindow({\r\n windowTitle: \"Mail Bodies\",\r\n windowIcon: { prefix: \"fas\", iconName: \"envelope-open-text\" },\r\n });\r\n const {\r\n Window: MailAttachmentWindow,\r\n setWindowState: setMailAttachmentWindowState,\r\n } = useWindow({\r\n windowTitle: \"Mail Attachment\",\r\n windowIcon: \"paperclip\",\r\n width: 500,\r\n });\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n commonStoreKey: \"SystemMailTemplates\",\r\n deleteById: \"api/v1/dev/mailtemplate\",\r\n save: \"api/v1/dev/mailtemplate\",\r\n findById: \"api/v1/dev/mailtemplate\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_MAIL_TEMPLATE_CODE\",\r\n fieldName: \"mailTemplateCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_MAIL_TEMPLATE_NAME\",\r\n fieldName: \"mailTemplateName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"group\",\r\n props: {\r\n label: \"subject\",\r\n icon: \"users\",\r\n style: { padding: 1, border: \"0.5px dashed black\", margin: 1 },\r\n elements: [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_MAIL_SUBJECT\",\r\n fieldName: \"mailSubject\",\r\n required: true,\r\n fieldType: \"text\",\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_SUBJECT_DATA_QUERY_ID\",\r\n fieldName: \"subjectDataQueryId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemDataQueries,\r\n optionDisplayField: \"queryName\",\r\n optionValueField: \"id\",\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n\r\n {\r\n type: \"group\",\r\n props: {\r\n label: \"Recipients\",\r\n icon: \"users\",\r\n style: { padding: 1, border: \"0.5px dashed black\", margin: 1 },\r\n elements: [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel:\r\n \"To Recipient Query (must return list of objects with property email)\",\r\n fieldName: \"mailToDataQueryId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemDataQueries,\r\n optionDisplayField: \"queryName\",\r\n optionValueField: \"id\",\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel:\r\n \"CC Recipient Query (must return list of objects with property email)\",\r\n fieldName: \"mailCcDataQueryId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemDataQueries,\r\n optionDisplayField: \"queryName\",\r\n optionValueField: \"id\",\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n {\r\n type: \"group\",\r\n props: {\r\n label: \"Periodical Configuration\",\r\n icon: \"history\",\r\n style: { padding: 1, border: \"0.5px dashed black\", margin: 1 },\r\n elements: [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_PERIODICAL\",\r\n fieldName: \"periodical\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_PERIOD_TYPE\",\r\n fieldName: \"periodType\",\r\n options: [\r\n { value: \"Year\" },\r\n { value: \"Month\" },\r\n { value: \"Day\" },\r\n { value: \"Hour\" },\r\n { value: \"Minute\" },\r\n { value: \"Second\" },\r\n ],\r\n optionDisplayField: \"value\",\r\n optionValueField: \"value\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_PERIOD_VALUE\",\r\n fieldName: \"periodValue\",\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_START_SENDING_AT\",\r\n fieldName: \"startSendingAt\",\r\n required: false,\r\n fieldType: \"datetime\",\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <MailRecipentsWindow>\r\n <MailRecipientGrid\r\n selectedRecord={selectedRecord}\r\n callBkFn={() => {\r\n setMailRecipientsWindowState(false);\r\n }}\r\n />\r\n </MailRecipentsWindow>\r\n <MailBodiesWindow>\r\n <MailBodyGrid\r\n selectedRecord={selectedRecord}\r\n callBkFn={() => {\r\n setMailRecipientsWindowState(false);\r\n }}\r\n />\r\n </MailBodiesWindow>\r\n <MailAttachmentWindow>\r\n <MailAttachmentGrid\r\n selectedRecord={selectedRecord}\r\n callBkFn={() => {\r\n setMailAttachmentWindowState(false);\r\n }}\r\n />\r\n </MailAttachmentWindow>\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{\r\n editMode: \"modal\",\r\n specs: {\r\n modalWidth: 300,\r\n modalTitle: \"Mail Template\",\r\n modalIcon: \"envelope\",\r\n },\r\n }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"MAIL_TEMPLATE_PLURAL\")}\r\n girdIcon=\"envelope\"\r\n rowActions={[\r\n {\r\n icon: \"users\",\r\n label: \"Recipients\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setMailRecipientsWindowState(true);\r\n },\r\n },\r\n {\r\n icon: { prefix: \"fas\", iconName: \"envelope-open-text\" },\r\n label: \"Mail Body\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setMailBodiesWindowState(true);\r\n },\r\n },\r\n {\r\n icon: \"paperclip\",\r\n label: \"Mail Attachments\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setMailAttachmentWindowState(true);\r\n },\r\n },\r\n ]}\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"MAIL_TEMPLATE_EDIT\",\r\n preActionValidation: (record) => {\r\n if (record?.periodical === true && !record?.periodType) {\r\n toast.error(\r\n \"You must specifiy the period type since this email is periodical\"\r\n );\r\n return false;\r\n }\r\n if (record?.periodical === true && !record?.periodValue) {\r\n toast.error(\r\n \"You must specifiy the period value since this email is periodical\"\r\n );\r\n return false;\r\n }\r\n if (record?.periodical === true && !record?.startSendingAt) {\r\n toast.error(\r\n \"You must specifiy the start sending time since this email is periodical\"\r\n );\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n }}\r\n deleteAction={{ isEnabled: true, authority: \"MAIL_TEMPLATE_DELETE\" }}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default MailTemplateGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions, useWindow } from \"../../../hooks\";\r\nimport { useSelector } from \"react-redux\";\r\nimport WorkflowDocumentStatusGrid from \"./WorkflowDocumentStatusGrid\";\r\nimport WorkflowDocumentActionGrid from \"./WorkflowDocumentActionGrid\";\r\n\r\nconst WorkflowDocumentGrid: React.FC = () => {\r\n const [selectedRecord, setSelectedRecord] = useState<any>(null);\r\n const {\r\n Window: WorkflowStatusWindow,\r\n setWindowState: setWorkflowStatusWindowState,\r\n } = useWindow({\r\n windowTitle: \"Document Status\",\r\n windowIcon: \"tag\",\r\n });\r\n const {\r\n Window: WorkflowActionWindow,\r\n setWindowState: setWorkflowActionWindowState,\r\n } = useWindow({\r\n windowTitle: \"Document Action\",\r\n windowIcon: \"stamp\",\r\n });\r\n const SystemOrganizations = useSelector(\r\n (state: any) => state.commonStores.stores.SystemOrganizations.data\r\n );\r\n const SystemReports = useSelector(\r\n (state: any) => state.commonStores.stores.SystemReports.data\r\n );\r\n const SystemDataSources = useSelector(\r\n (state: any) => state.commonStores.stores.SystemDataSources.data\r\n );\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/workflowdocument/all\",\r\n deleteById: \"api/v1/dev/workflowdocument\",\r\n save: \"api/v1/dev/workflowdocument\",\r\n findById: \"api/v1/dev/workflowdocument\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ORG_CODE\",\r\n fieldName: \"orgCode\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemOrganizations,\r\n optionDisplayField: \"organizationCode\",\r\n optionValueField: \"id\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_CODE\",\r\n fieldName: \"documentCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Workflow Document En Display Name\",\r\n fieldName: \"documentEnName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Workflow Document Ar Display Name\",\r\n fieldName: \"documentArName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"Report To be Attached For The Document ( will be passed a parameter called doc_id)\",\r\n fieldName: \"documentReportId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemReports,\r\n optionDisplayField: \"reportName\",\r\n optionValueField: \"id\",\r\n },\r\n },\r\n\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_APPROVAL_ALLOWED\",\r\n fieldName: \"mailApprovalAllowed\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"group\",\r\n props: {\r\n icon: \"bell\",\r\n style: { border: \"1px dashed black\", padding: 1, marginBottom: 1 },\r\n label: \"App Visual Notifications\",\r\n elements: [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_APP_NOTIFICATION_ICON\",\r\n fieldName: \"appNotificationIcon\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_APP_NOTIFICATION_STYLE\",\r\n fieldName: \"appNotificationStyle\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_APP_VIEW_ROUTE\",\r\n fieldName: \"appViewRoute\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n\r\n {\r\n type: \"group\",\r\n props: {\r\n icon: \"database\",\r\n style: { border: \"1px dashed black\", padding: 1, marginBottom: 1 },\r\n label: \"Related Document Database\",\r\n elements: [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_USE_SYSTEM_CON\",\r\n fieldName: \"useSystemCon\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n formProps: {\r\n onValueChangeCallBack(\r\n value,\r\n formManager,\r\n formActions,\r\n selectedRecord\r\n ) {\r\n if (value) {\r\n formActions.hideField(\"documentConId\");\r\n formManager.setValue(\"documentConId\", null);\r\n } else {\r\n formActions.showField(\"documentConId\");\r\n }\r\n },\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_CON_ID\",\r\n fieldName: \"documentConId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemDataSources,\r\n optionDisplayField: \"connectionName\",\r\n optionValueField: \"id\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_DATABASE_NAME\",\r\n fieldName: \"documentDatabaseName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_DATABASE_TABLE\",\r\n fieldName: \"documentDatabaseTable\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_ID_FIELD\",\r\n fieldName: \"documentIdField\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_STATUS_FIELD\",\r\n fieldName: \"documentStatusField\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_NUMBER_FIELD\",\r\n fieldName: \"documentNumberField\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <WorkflowStatusWindow>\r\n <WorkflowDocumentStatusGrid selectedRecord={selectedRecord} />\r\n </WorkflowStatusWindow>\r\n <WorkflowActionWindow>\r\n <WorkflowDocumentActionGrid selectedRecord={selectedRecord} />\r\n </WorkflowActionWindow>\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n formLoadCallBk={(formActions, formManager, record) => {\r\n if (record.useSystemCon === true) {\r\n formActions.hideField(\"documentConId\");\r\n } else {\r\n formActions.showField(\"documentConId\");\r\n }\r\n }}\r\n data={data}\r\n setData={setData}\r\n rowActions={[\r\n {\r\n icon: \"tag\",\r\n label: \"Document States\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setWorkflowStatusWindowState(true);\r\n },\r\n },\r\n {\r\n icon: \"stamp\",\r\n label: \"Document Actions\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setWorkflowActionWindowState(true);\r\n },\r\n },\r\n ]}\r\n editMode={{\r\n editMode: \"modal\",\r\n specs: {\r\n modalIcon: \"chart-diagram\",\r\n modalTitle: t(\"WORKFLOW_DOCUMENT_SINGULAR\"),\r\n },\r\n }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"WORKFLOW_DOCUMENT_PLURAL\")}\r\n girdIcon=\"chart-diagram\"\r\n editAction={{ isEnabled: true, authority: \"WORKFLOW_DOCUMENT_EDIT\" }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_DELETE\",\r\n }}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default WorkflowDocumentGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions, useWindow } from \"../../../hooks\";\r\nimport DashboardWidgetGrid from \"./DashboardWidgetGrid\";\r\nimport { useNavigate } from \"react-router-dom\";\r\n\r\nconst DashboardGrid: React.FC = () => {\r\n const { t } = useTranslation();\r\n const [selectedRecord, setSelectedRecord] = useState<any>(null);\r\n const { Window: WidgetsWindows, setWindowState: setWidgetsWindowState } =\r\n useWindow({\r\n windowTitle: \"Dashboard Widgets\",\r\n windowIcon: \"chart-pie\",\r\n });\r\n const [data, setData] = useState([]);\r\n const navigate = useNavigate();\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/dashboard/all\",\r\n deleteById: \"api/v1/dev/dashboard\",\r\n save: \"api/v1/dev/dashboard\",\r\n findById: \"api/v1/dev/dashboard\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_DASHBOARD_CODE\",\r\n fieldName: \"dashboardCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_DASHBOARD_NAME\",\r\n fieldName: \"dashboardName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_DASHBOARD_TITLE\",\r\n fieldName: \"dashboardTitle\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <WidgetsWindows>\r\n <DashboardWidgetGrid selectedRecord={selectedRecord} />\r\n </WidgetsWindows>\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n rowActions={[\r\n {\r\n label: \"Widgets\",\r\n icon: \"chart-pie\",\r\n actionFn: async (data) => {\r\n setSelectedRecord(data);\r\n setWidgetsWindowState(true);\r\n },\r\n },\r\n {\r\n label: \"View\",\r\n icon: \"eye\",\r\n actionFn: async (data) => {\r\n navigate(\"/dashboard/\" + data.dashboardCode);\r\n },\r\n },\r\n ]}\r\n gridTitle={t(\"DASHBOARD_PLURAL\")}\r\n girdIcon=\"square-poll-vertical\"\r\n editAction={{ isEnabled: true, authority: \"DASHBOARD_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"DASHBOARD_DELETE\" }}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default DashboardGrid;\r\n","import { useParams } from \"react-router-dom\";\r\nimport DashboardViewer from \"./DashboardViewer\";\r\n\r\nconst DashboardRouteView: React.FC = () => {\r\n const { dashboardCode } = useParams();\r\n return <DashboardViewer dashboardCode={dashboardCode} />;\r\n};\r\n\r\nexport default DashboardRouteView;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\n\r\nconst WorkflowDocumentMailLogGrid: React.FC = () => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/workflowdocumentmaillog/all\",\r\n deleteById: \"api/v1/dev/workflowdocumentmaillog\",\r\n save: \"api/v1/dev/workflowdocumentmaillog\",\r\n findById: \"api/v1/dev/workflowdocumentmaillog\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_GRAPH_API_MSG_ID\",\r\n fieldName: \"graphApiMsgId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_IS_PROCESSED\",\r\n fieldName: \"isProcessed\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_MAIL_ACTION_CODE\",\r\n fieldName: \"mailActionCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_MAIL_BODY_CONTENT\",\r\n fieldName: \"mailBodyContent\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_MAIL_FROM\",\r\n fieldName: \"mailFrom\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_MAIL_SUBJECT\",\r\n fieldName: \"mailSubject\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_PROCESS_MESSAGE\",\r\n fieldName: \"processMessage\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_PROCESS_TIME\",\r\n fieldName: \"processTime\",\r\n required: false,\r\n fieldType: \"datetime\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_REF_DOC_ID\",\r\n fieldName: \"refDocId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_WORKFLOW_DOCUMENT_ID\",\r\n fieldName: \"workflowDocumentId\",\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_MAIL_RECEIVE_TIME\",\r\n fieldName: \"mailReceiveTime\",\r\n required: false,\r\n fieldType: \"datetime\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"WORKFLOW_DOCUMENT_MAIL_LOG_PLURAL\")}\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_MAIL_LOG_EDIT\",\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_MAIL_LOG_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default WorkflowDocumentMailLogGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport { FormElementProps } from \"../../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useApiActions } from \"../../../hooks\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\nconst MailNotificationQueueGrid: React.FC = () => {\r\n const { t } = useTranslation();\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/dev/mailnotificationqueue/all\",\r\n deleteById: \"api/v1/dev/mailnotificationqueue\",\r\n save: \"api/v1/dev/mailnotificationqueue\",\r\n findById: \"api/v1/dev/mailnotificationqueue\",\r\n setData: setData,\r\n });\r\n const SystemMailTemplates = useSelector(\r\n (state: any) => state.commonStores.stores.SystemMailTemplates.data\r\n );\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"id\",\r\n fieldName: \"id\",\r\n fieldType: \"number\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createTime\",\r\n fieldName: \"createTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"createdBy\",\r\n fieldName: \"createdBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateBy\",\r\n fieldName: \"lastUpdateBy\",\r\n fieldType: \"text\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"lastUpdateTime\",\r\n fieldName: \"lastUpdateTime\",\r\n fieldType: \"datetime\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_MAIL_TEMPLATE_ID\",\r\n fieldName: \"mailTemplateId\",\r\n required: false,\r\n fieldType: \"combobox\",\r\n options: SystemMailTemplates,\r\n optionDisplayField: \"mailTemplateName\",\r\n optionValueField: \"id\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_CUSTOM_MAIL_ATTACHED_REPORT_ID\",\r\n fieldName: \"customMailAttachedReportId\",\r\n required: false,\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_CUSTOM_MAIL_BODY\",\r\n fieldName: \"customMailBody\",\r\n required: false,\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_CUSTOM_MAIL_SUBJECT\",\r\n fieldName: \"customMailSubject\",\r\n required: false,\r\n hidden: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_CUSTOM_RECIPIENTS\",\r\n fieldName: \"customRecipients\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_IS_NOTIFIED\",\r\n fieldName: \"isNotified\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_NOTIFICATION_TIME\",\r\n fieldName: \"notificationTime\",\r\n required: false,\r\n fieldType: \"datetime\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_NOTIFICATION_MESSAGE\",\r\n fieldName: \"notificationMessage\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_MAIL_PARAMETERS\",\r\n fieldName: \"mailParameters\",\r\n hidden: true,\r\n gridProps: {\r\n hidden: true,\r\n },\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n disableDefaultAction={true}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"none\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle={t(\"MAIL_NOTIFICATION_QUEUE_PLURAL\")}\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"MAIL_NOTIFICATION_QUEUE_EDIT\",\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"MAIL_NOTIFICATION_QUEUE_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default MailNotificationQueueGrid;\r\n","import { Box } from \"@mui/material\";\r\nimport { useSession } from \"../hooks\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n\r\ntype RouteWrapperProps = {\r\n authority?: string;\r\n children?: React.ReactNode;\r\n};\r\nconst RouteWrapper: React.FC<RouteWrapperProps> = (props) => {\r\n const { isUserAuthorized } = useSession();\r\n if (props?.authority && !isUserAuthorized(props.authority)) {\r\n return (\r\n <Box\r\n sx={{\r\n flex: 1,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n color: \"red\",\r\n }}\r\n >\r\n <h2>\r\n <FontAwesomeIcon\r\n style={{ marginRight: 10, marginLeft: 10 }}\r\n icon=\"cancel\"\r\n />\r\n You aren't authorized to access this page\r\n </h2>\r\n </Box>\r\n );\r\n }\r\n return <>{props.children}</>;\r\n};\r\n\r\nexport default RouteWrapper;\r\n","import { Box } from \"@mui/material\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { CacheProvider } from \"@emotion/react\";\r\nimport { Route, Routes } from \"react-router-dom\";\r\nimport { cacheLtr, cacheRtl } from \"../components/common/LayoutHandlers\";\r\nimport { SYSTEM_ROUTES } from \"../routes\";\r\nimport { SystemRoute } from \"../routes/types\";\r\nimport RouteWrapper from \"./RouteWrapper\";\r\nimport { useAxios, useLoadingMask, useSession } from \"../hooks\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { setStoreData } from \"../redux/features/common/CommonStoreSlice\";\r\n\r\nconst MainContent: React.FC = () => {\r\n const AppLayoutState = useSelector((state: any) => state.AppLayout);\r\n const AppInfo = useSelector((state: any) => state.AppInfo.value);\r\n const businessRoutes = useSelector(\r\n (state: any) => state.AppInfo.value.businessRoutes\r\n );\r\n const dispatch = useDispatch();\r\n const { show, hide } = useLoadingMask();\r\n const commonStores = useSelector((state: any) => state.commonStores);\r\n const [isAutoLoadLoaded, setAutoLoadLoaded] = useState<boolean>(false);\r\n const { isUserAuthorized } = useSession();\r\n const { handleGetRequest } = useAxios();\r\n const loadCommonStores = async () => {\r\n show(\"Loading ... please wait\");\r\n const stores = commonStores.stores;\r\n const storeKeys = commonStores.storeKeys;\r\n for (let storeKey of storeKeys) {\r\n if (\r\n (stores[storeKey]?.authority === undefined ||\r\n stores[storeKey]?.authority === null ||\r\n isUserAuthorized(stores[storeKey]?.authority)) &&\r\n stores[storeKey]?.url != \"\" &&\r\n stores[storeKey].autoLoad === true\r\n ) {\r\n await handleGetRequest({\r\n endPointURI: stores[storeKey].url,\r\n showMask: false,\r\n successCallBkFn: (response) => {\r\n dispatch(setStoreData({ storeKey, data: response.data }));\r\n },\r\n failureCallBkFn: () => {\r\n dispatch(setStoreData({ storeKey, data: [] }));\r\n },\r\n });\r\n }\r\n }\r\n hide();\r\n };\r\n\r\n useEffect(() => {\r\n if (commonStores?.storeKeys) {\r\n loadCommonStores();\r\n }\r\n }, [commonStores.storeKeys]);\r\n return (\r\n <CacheProvider\r\n value={AppLayoutState.appDirection === \"ltr\" ? cacheLtr : cacheRtl}\r\n >\r\n {/* {isAutoLoadLoaded ? ( */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n // alignItems: \"center\",\r\n justifyContent: \"flex-start\",\r\n flex: 1,\r\n overflow: \"hidden\",\r\n padding: 3,\r\n }}\r\n >\r\n <Routes>\r\n {AppInfo.enableAdministrationModule\r\n ? SYSTEM_ROUTES.map((route: SystemRoute, index) => {\r\n return (\r\n <Route\r\n key={\"adm\" + index}\r\n path={route.path}\r\n element={\r\n <RouteWrapper authority={route.authority}>\r\n <route.component />\r\n </RouteWrapper>\r\n }\r\n />\r\n );\r\n })\r\n : null}\r\n {businessRoutes.map((route: SystemRoute, index) => {\r\n return (\r\n <Route\r\n key={\"bs\" + index}\r\n path={route.path}\r\n element={\r\n <RouteWrapper authority={route.authority}>\r\n <route.component />\r\n </RouteWrapper>\r\n }\r\n />\r\n );\r\n })}\r\n </Routes>\r\n </Box>\r\n {/* ) : (\r\n <></>\r\n )} */}\r\n </CacheProvider>\r\n );\r\n};\r\n\r\nexport default MainContent;\r\n","import { styled } from \"@mui/material/styles\";\r\nimport { grey } from \"@mui/material/colors\";\r\nimport SwipeableDrawer from \"@mui/material/SwipeableDrawer\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Box, Typography } from \"@mui/material\";\r\nimport { AppLayoutActions } from \"../redux/features/common/AppLayoutSlice\";\r\nimport NavigationTree from \"./NavigationTree\";\r\nimport { setSideBarState } from \"../redux/features/common/SideBarSlice\";\r\n\r\nconst drawerBleeding = 56;\r\n\r\ninterface Props {\r\n /**\r\n * Injected by the documentation to work in an iframe.\r\n * You won't need it on your project.\r\n */\r\n window?: () => Window;\r\n}\r\n\r\nconst Puller = styled(\"div\")(({ theme }) => ({\r\n width: 30,\r\n height: 6,\r\n margin: 10,\r\n backgroundColor: grey[300],\r\n borderRadius: 3,\r\n // position: \"absolute\",\r\n top: 8,\r\n // left: \"calc(50% - 15px)\",\r\n ...theme.applyStyles(\"dark\", {\r\n backgroundColor: grey[900],\r\n }),\r\n}));\r\n\r\nexport default function MobileDrawer(props: Props) {\r\n const { window } = props;\r\n const SideBarState = useSelector((state: any) => state.SideBar);\r\n const AppInfo = useSelector((state: any) => state.AppInfo.value);\r\n const dispatch = useDispatch();\r\n const toggleDrawer = (newState: boolean) => {\r\n dispatch(setSideBarState(newState));\r\n };\r\n // This is used only for the example\r\n const container =\r\n window !== undefined ? () => window().document.body : undefined;\r\n\r\n return (\r\n <SwipeableDrawer\r\n container={container}\r\n anchor=\"bottom\"\r\n open={SideBarState.isOpened}\r\n onClose={() => {\r\n toggleDrawer(false);\r\n }}\r\n onOpen={() => {\r\n toggleDrawer(true);\r\n }}\r\n swipeAreaWidth={drawerBleeding}\r\n disableSwipeToOpen={false}\r\n ModalProps={{\r\n keepMounted: true,\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n height: \"100%\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n <Puller />\r\n <Box\r\n sx={{\r\n flexGrow: 1,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n width: \"99%\",\r\n overflowY: \"auto\",\r\n }}\r\n >\r\n <NavigationTree />\r\n </Box>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-around\",\r\n marginTop: 1,\r\n width: \"100%\",\r\n }}\r\n >\r\n <Typography sx={{ fontSize: 12 }} color=\"textDisabled\">\r\n {AppInfo.appName}\r\n </Typography>\r\n <Typography sx={{ fontSize: 12 }} color=\"textDisabled\">\r\n V.{AppInfo.appVersion}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n </SwipeableDrawer>\r\n );\r\n}\r\n","import { useSelector } from \"react-redux\";\r\nimport { Backdrop, CircularProgress } from \"@mui/material\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst LoadingMask: React.FC = () => {\r\n const { t } = useTranslation();\r\n const loadingMask = useSelector((state: any) => state.loadingMask.value);\r\n const AppLayoutState = useSelector((state: any) => state.AppLayout);\r\n\r\n return (\r\n <Backdrop\r\n dir={AppLayoutState.appDirection}\r\n sx={{ color: \"#fff\", zIndex: (theme) => theme.zIndex.drawer + 1 }}\r\n open={loadingMask.isOpened}\r\n >\r\n <CircularProgress color=\"inherit\" />\r\n <div style={{ marginRight: 10, marginLeft: 10 }}>\r\n {loadingMask?.message || t(\"DEFAULT_LOADING_MESSAGE\")}\r\n </div>\r\n </Backdrop>\r\n );\r\n};\r\n\r\nexport default LoadingMask;\r\n","import {\r\n Box,\r\n Button,\r\n CircularProgress,\r\n createTheme,\r\n Paper,\r\n TextField,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { ThemeProvider } from \"@emotion/react\";\r\nimport { useEffect, useState } from \"react\";\r\nimport axios from \"axios\";\r\nimport { toast } from \"react-toastify\";\r\nimport { UserSessionActions } from \"../../redux/features/common/UserSessionSlice\";\r\nimport {\r\n DARK_THEME_INITIAL_MAIN_COLOR,\r\n DARK_THEME_INITIAL_SECANDARY_COLOR,\r\n} from \"../../util\";\r\n\r\nconst Login: React.FC = () => {\r\n const appInfo = useSelector((state: any) => state.AppInfo.value);\r\n const [username, setUsername] = useState(\"\");\r\n const [password, setPassword] = useState(\"\");\r\n const [isLoginInProcess, setIsLoginInProcess] = useState(false);\r\n const UserSessionState = useSelector((state: any) => state.UserSession.value);\r\n const dispatch = useDispatch();\r\n const handleLogin = async () => {\r\n if (username == null || username == \"\") {\r\n toast.error(\"username is required to proceed\");\r\n return;\r\n }\r\n if (password == null || password == \"\") {\r\n toast.error(\"password is required to proceed\");\r\n return;\r\n }\r\n setIsLoginInProcess(true);\r\n let response: any = null;\r\n try {\r\n response = await axios.post(\r\n `${appInfo.apiBaseUrl}/api/auth/login`,\r\n {\r\n username,\r\n password,\r\n },\r\n {\r\n withCredentials: true,\r\n }\r\n );\r\n if (response.data != null && response.data !== \"\") {\r\n setIsLoginInProcess(false);\r\n const UserSession = {\r\n ...response.data,\r\n isAuthenticated: true,\r\n };\r\n dispatch(UserSessionActions.setAuthenticated(UserSession));\r\n }\r\n } catch (e: any) {\r\n setIsLoginInProcess(false);\r\n toast.error(\r\n e?.response?.data ||\r\n \"failed to authenticate, contact your administrator\"\r\n );\r\n }\r\n };\r\n const userSession = useSelector((state: any) => state.UserSession.value);\r\n const loginTheme = createTheme({\r\n components: {\r\n MuiCssBaseline: {\r\n styleOverrides: `\r\n /* Custom Scrollbar */\r\n * {\r\n scrollbar-width: thin;\r\n scrollbar-color: ${\r\n appInfo.appTheme?.dark?.primaryColor ||\r\n DARK_THEME_INITIAL_MAIN_COLOR\r\n } #121212;\r\n }\r\n \r\n /* Webkit Browsers */\r\n *::-webkit-scrollbar {\r\n width: 12px;\r\n height: 10px;\r\n } \r\n `,\r\n },\r\n },\r\n palette: {\r\n mode: \"dark\",\r\n primary: {\r\n main:\r\n appInfo.appTheme?.dark?.primaryColor || DARK_THEME_INITIAL_MAIN_COLOR,\r\n },\r\n secondary: {\r\n main:\r\n appInfo.appTheme?.dark?.secondaryColor ||\r\n DARK_THEME_INITIAL_SECANDARY_COLOR,\r\n },\r\n },\r\n });\r\n const checkUserSession = async () => {\r\n if (appInfo?.apiBaseUrl) {\r\n if (userSession.isAuthenticated == null) {\r\n try {\r\n let response = await axios.get(\r\n `${appInfo.apiBaseUrl}/api/auth/userInfo`,\r\n {\r\n withCredentials: true,\r\n }\r\n );\r\n if (response != null && response.data != null) {\r\n const UserSession = {\r\n ...response.data,\r\n isAuthenticated: true,\r\n };\r\n dispatch(UserSessionActions.setAuthenticated(UserSession));\r\n } else {\r\n dispatch(UserSessionActions.setUnAuthenticated());\r\n }\r\n } catch (error) {\r\n dispatch(UserSessionActions.setUnAuthenticated());\r\n }\r\n }\r\n }\r\n };\r\n useEffect(() => {\r\n checkUserSession();\r\n }, [appInfo]);\r\n return (\r\n <ThemeProvider theme={loginTheme}>\r\n <Paper\r\n sx={{\r\n display: \"flex\",\r\n height: \"100vh\",\r\n width: \"100%\",\r\n borderRadius: 0,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n {UserSessionState.isAuthenticated == false ? (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <img src={appInfo?.appLogo} width={150} height={150} />\r\n <Typography sx={{ m: 1 }} variant=\"h4\" color=\"textSecondary\">\r\n {appInfo?.appName}\r\n </Typography>\r\n <Typography\r\n sx={{\r\n paddingRight: 1,\r\n width: \"100%\",\r\n textAlign: \"right\",\r\n fontSize: 10,\r\n }}\r\n variant=\"caption\"\r\n color=\"textSecondary\"\r\n >\r\n V.{appInfo.appVersion}\r\n </Typography>\r\n <TextField\r\n label=\"username\"\r\n sx={{ width: 300, m: 1 }}\r\n value={username}\r\n onChange={(event) => {\r\n setUsername(event.target.value);\r\n }}\r\n onKeyDown={(event) => {\r\n if (event.key === \"Enter\") {\r\n handleLogin();\r\n }\r\n }}\r\n />\r\n <TextField\r\n label=\"password\"\r\n sx={{ width: 300, m: 1 }}\r\n value={password}\r\n type=\"password\"\r\n onChange={(event) => {\r\n setPassword(event.target.value);\r\n }}\r\n onKeyDown={(event) => {\r\n if (event.key === \"Enter\") {\r\n handleLogin();\r\n }\r\n }}\r\n />\r\n <Button\r\n loading={isLoginInProcess}\r\n onClick={handleLogin}\r\n variant=\"contained\"\r\n color=\"primary\"\r\n sx={{ m: 1 }}\r\n >\r\n login\r\n </Button>\r\n </Box>\r\n ) : (\r\n <>\r\n <CircularProgress sx={{ marginRight: 1 }} />\r\n <div>You will be redirected shortly ... please wait</div>\r\n </>\r\n )}\r\n </Paper>\r\n </ThemeProvider>\r\n );\r\n};\r\n\r\nexport default Login;\r\n","import { styled, useTheme } from \"@mui/material/styles\";\r\nimport CssBaseline from \"@mui/material/CssBaseline\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport TopBar from \"./TopBar\";\r\nimport { DrawerHeader } from \"./DrawerHeader\";\r\nimport SideBar from \"./SideBar\";\r\nimport MainContent from \"./MainContent\";\r\nimport { BrowserRouter } from \"react-router-dom\";\r\nimport MobileDrawer from \"./MobileDrawer\";\r\nimport { ToastContainer } from \"react-toastify\";\r\nimport { useEffect, useState } from \"react\";\r\nimport useLoadingMask from \"../hooks/useLoadingMask\";\r\nimport { useIsMobile } from \"../hooks/UseMobile\";\r\nimport useSession from \"../hooks/UseSession\";\r\nimport useAxios from \"../hooks/useAxios\";\r\nimport { DRAWER_WIDTH } from \"../redux/features/common/AppLayoutSlice\";\r\nimport { UserSessionProps } from \"../redux/features/common/UserSessionSlice\";\r\nimport LoadingMask from \"../components/common/LoadingMask\";\r\nimport Login from \"../components/common/Login\";\r\nimport { setStoreData } from \"../redux/features/common/CommonStoreSlice\";\r\n\r\nconst Main = styled(\"main\", {\r\n shouldForwardProp: (prop) => prop !== \"open\",\r\n})<{\r\n open?: boolean;\r\n}>(({ theme: any, open }) => {\r\n const AppLayout = useSelector((state: any) => state.AppLayout);\r\n const theme = useTheme();\r\n const isMobile = useIsMobile();\r\n\r\n return {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n overflow: \"hidden\",\r\n flexGrow: 1,\r\n width: !isMobile && open ? `calc(100% - ${DRAWER_WIDTH}px)` : \"100%\",\r\n direction: AppLayout.appDirection,\r\n justifyContent: \"flex-start\",\r\n transition:\r\n open === true\r\n ? theme.transitions.create([\"margin\", \"width\"], {\r\n easing: theme.transitions.easing.easeOut,\r\n duration: theme.transitions.duration.enteringScreen,\r\n })\r\n : theme.transitions.create([\"margin\", \"width\"], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n marginLeft:\r\n !isMobile && AppLayout.appDirection === \"ltr\" && open === true\r\n ? DRAWER_WIDTH + \"px\"\r\n : 0,\r\n marginRight:\r\n !isMobile && AppLayout.appDirection === \"rtl\" && open === true\r\n ? DRAWER_WIDTH + \"px\"\r\n : 0,\r\n };\r\n});\r\n\r\nexport default function Layout() {\r\n const SideBarState = useSelector((state: any) => state.SideBar);\r\n const isMobile = useIsMobile();\r\n const UserSession: UserSessionProps = useSelector(\r\n (state: any) => state.UserSession\r\n );\r\n return (\r\n <BrowserRouter>\r\n <ToastContainer draggable={true} position=\"bottom-center\" />\r\n <LoadingMask />\r\n {UserSession.value.isAuthenticated === true ? (\r\n <Main open={SideBarState.isOpened}>\r\n <CssBaseline />\r\n <TopBar />\r\n {!isMobile ? <SideBar /> : null}\r\n {isMobile ? <MobileDrawer /> : null}\r\n <DrawerHeader />\r\n <MainContent />\r\n </Main>\r\n ) : (\r\n <Login />\r\n )}\r\n </BrowserRouter>\r\n );\r\n}\r\n","import { createSlice, Reducer } from \"@reduxjs/toolkit\";\r\nimport { SystemRoute } from \"../../../routes/types\";\r\nimport { ExtendedTreeItemProps } from \"../../../navigationItems\";\r\nimport { StoreMetaData } from \"./CommonStoreSlice\";\r\n\r\nexport type AppInfo = {\r\n documentTitle: string | null;\r\n apiBaseUrl: string | null;\r\n appName: string | null;\r\n appVersion: string | null;\r\n appLogo: any | null;\r\n businessRoutes: Array<SystemRoute>;\r\n businessNavigationItems: Array<ExtendedTreeItemProps>;\r\n businessReduxReducers: { [key: string]: Reducer<any> };\r\n businessCommonStoresMetaData: { [key: string]: StoreMetaData };\r\n muiPremiumKey: string;\r\n enableAdministrationModule: boolean;\r\n appTheme?: {\r\n light: { primaryColor: string; secondaryColor: string };\r\n dark: { primaryColor: string; secondaryColor: string };\r\n };\r\n};\r\n\r\nexport type AppInfoProp = {\r\n value: AppInfo;\r\n};\r\n\r\nconst initialState: AppInfoProp = {\r\n value: {\r\n documentTitle: null,\r\n apiBaseUrl: null,\r\n appName: null,\r\n appVersion: null,\r\n appLogo: null,\r\n muiPremiumKey: null,\r\n enableAdministrationModule: false,\r\n businessRoutes: [],\r\n businessNavigationItems: [],\r\n businessReduxReducers: {},\r\n businessCommonStoresMetaData: {},\r\n appTheme: {\r\n light: { primaryColor: \"#37505C\", secondaryColor: \"#ff6d00\" },\r\n dark: { primaryColor: \"#ea690e\", secondaryColor: \"#74776B\" },\r\n },\r\n },\r\n};\r\n\r\nconst AppInfoSlice = createSlice({\r\n name: \"AppInfo\",\r\n initialState: initialState,\r\n reducers: {\r\n setAppInfo: (state, action) => {\r\n state.value = action.payload;\r\n },\r\n },\r\n});\r\n\r\nexport const AppInfoActions = AppInfoSlice.actions;\r\nexport default AppInfoSlice.reducer;\r\n","import { CommonStores } from \"../common/CommonStoreSlice\";\r\n\r\nexport const ADMINISTRATION_STORES: CommonStores = {\r\n SystemDataSourceType: {\r\n autoLoad: false,\r\n data: [{ value: \"Mysql\" }, { value: \"Oracle\" }, { value: \"DB2\" }],\r\n url: \"\",\r\n },\r\n SystemParameterTypes: {\r\n autoLoad: false,\r\n url: \"\",\r\n data: [\r\n { value: \"text\" },\r\n { value: \"number\" },\r\n { value: \"date\" },\r\n { value: \"datetime\" },\r\n { value: \"combobox\" },\r\n { value: \"checkbox\" },\r\n { value: \"html\" },\r\n { value: \"lookup\" },\r\n ],\r\n },\r\n SystemReportTypes: {\r\n autoLoad: false,\r\n url: \"\",\r\n data: [{ value: \"Excel\" }, { value: \"Jasper\" }, { value: \"Blueprint\" }],\r\n },\r\n SystemWidgetTypes: {\r\n autoLoad: false,\r\n url: \"\",\r\n data: [\r\n { name: \"LineChart\" },\r\n { name: \"ColumnChart\" },\r\n { name: \"PieChart\" },\r\n { name: \"Card\" },\r\n { name: \"CircularProgress\" },\r\n { name: \"LinearProgress\" },\r\n ],\r\n },\r\n SystemMailRecipientTypes: {\r\n autoLoad: false,\r\n url: \"\",\r\n data: [{ name: \"To\" }, { name: \"CC\" }],\r\n },\r\n SystemOrganizations: {\r\n autoLoad: true,\r\n url: \"api/v1/admin/organization/all\",\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n data: [],\r\n },\r\n SystemOrganizationRanks: {\r\n autoLoad: true,\r\n url: \"api/v1/admin/organization/ranks/all\",\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n data: [],\r\n },\r\n SystemOrganizationUnits: {\r\n autoLoad: true,\r\n url: \"api/v1/admin/organization/units/all\",\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n data: [],\r\n },\r\n SystemDataSources: {\r\n autoLoad: true,\r\n data: [],\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n url: \"api/v1/dev/datasourceconnection/all\",\r\n },\r\n SystemDataQueries: {\r\n autoLoad: true,\r\n data: [],\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n url: \"api/v1/dev/dataquery/all\",\r\n },\r\n SystemBluePrints: {\r\n autoLoad: true,\r\n data: [],\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n url: \"api/v1/dev/blueprint/all\",\r\n },\r\n SystemReports: {\r\n autoLoad: true,\r\n data: [],\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n url: \"api/v1/dev/report/all\",\r\n },\r\n SystemEntityParameters: {\r\n autoLoad: true,\r\n data: [],\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n url: \"api/v1/dev/entityparameter/all\",\r\n },\r\n SystemMailTemplates: {\r\n autoLoad: true,\r\n data: [],\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n url: \"api/v1/dev/mailtemplate/all\",\r\n },\r\n SystemWidgets: {\r\n autoLoad: true,\r\n data: [],\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n url: \"api/v1/dev/widget/all\",\r\n },\r\n};\r\n","import { useDispatch, useSelector } from \"react-redux\";\r\nimport { createTheme, ThemeOptions } from \"@mui/material\";\r\nimport { ThemeProvider } from \"@emotion/react\";\r\nimport React, { useEffect } from \"react\";\r\nimport Layout from \"../layout/Layout\";\r\nimport { AppInfo, AppInfoActions } from \"../redux/features/common/AppInfoSlice\";\r\nimport { LicenseInfo } from \"@mui/x-license\";\r\nimport {\r\n DARK_THEME_INITIAL_MAIN_COLOR,\r\n DARK_THEME_INITIAL_SECANDARY_COLOR,\r\n LIGHT_THEME_INITIAL_MAIN_COLOR,\r\n LIGHT_THEME_INITIAL_SECANDARY_COLOR,\r\n} from \"../util\";\r\nimport { setStoresMetaData } from \"../redux/features/common/CommonStoreSlice\";\r\nimport { ADMINISTRATION_STORES } from \"../redux/features/administration/AdministrationStoresMetaData\";\r\n\r\nconst App: React.FC<AppInfo> = (props: AppInfo) => {\r\n const dispatch = useDispatch();\r\n LicenseInfo.setLicenseKey(props.muiPremiumKey);\r\n const LightThemeOptions: ThemeOptions = {\r\n components: {\r\n MuiCssBaseline: {\r\n styleOverrides: `\r\n /* Custom Scrollbar */\r\n * {\r\n scrollbar-width: thin;\r\n scrollbar-color: ${\r\n props.appTheme?.light?.primaryColor ||\r\n LIGHT_THEME_INITIAL_MAIN_COLOR\r\n } #ffffff;\r\n }\r\n \r\n /* Webkit Browsers */\r\n *::-webkit-scrollbar {\r\n width: 12px;\r\n height: 10px;\r\n } \r\n `,\r\n },\r\n },\r\n palette: {\r\n mode: \"light\",\r\n primary: {\r\n main:\r\n props.appTheme?.light?.primaryColor || LIGHT_THEME_INITIAL_MAIN_COLOR,\r\n },\r\n secondary: {\r\n main:\r\n props.appTheme?.light?.secondaryColor ||\r\n LIGHT_THEME_INITIAL_SECANDARY_COLOR,\r\n },\r\n background: {\r\n default: \"#f5f5f5\",\r\n paper: \"#f5f5f5\",\r\n },\r\n },\r\n };\r\n const DarkThemeOptions: ThemeOptions = {\r\n components: {\r\n MuiCssBaseline: {\r\n styleOverrides: `\r\n /* Custom Scrollbar */\r\n * {\r\n scrollbar-width: thin;\r\n scrollbar-color: ${\r\n props.appTheme?.dark?.primaryColor || DARK_THEME_INITIAL_MAIN_COLOR\r\n } #121212;\r\n }\r\n \r\n /* Webkit Browsers */\r\n *::-webkit-scrollbar {\r\n width: 12px;\r\n height: 10px;\r\n } \r\n `,\r\n },\r\n },\r\n palette: {\r\n mode: \"dark\",\r\n primary: {\r\n main:\r\n props.appTheme?.dark?.primaryColor || DARK_THEME_INITIAL_MAIN_COLOR,\r\n },\r\n secondary: {\r\n main:\r\n props.appTheme?.dark?.secondaryColor ||\r\n DARK_THEME_INITIAL_SECANDARY_COLOR,\r\n },\r\n },\r\n };\r\n\r\n let commonStores = {};\r\n if (props.enableAdministrationModule) {\r\n commonStores = { ...ADMINISTRATION_STORES };\r\n }\r\n if (props.businessCommonStoresMetaData) {\r\n commonStores = {\r\n ...commonStores,\r\n ...props.businessCommonStoresMetaData,\r\n };\r\n }\r\n dispatch(setStoresMetaData(commonStores));\r\n const AppLayoutState = useSelector((state: any) => state.AppLayout);\r\n let themeOptions = { ...LightThemeOptions };\r\n if (AppLayoutState.themeMode === \"dark\") {\r\n themeOptions = { ...DarkThemeOptions };\r\n }\r\n const theme = createTheme({\r\n direction: AppLayoutState.appDirection,\r\n ...themeOptions,\r\n });\r\n useEffect(() => {\r\n document.title = props.documentTitle;\r\n dispatch(AppInfoActions.setAppInfo(props));\r\n }, []);\r\n return (\r\n <ThemeProvider theme={theme}>\r\n <Layout />\r\n </ThemeProvider>\r\n );\r\n};\r\n\r\nexport default App;\r\n","import { Provider } from \"react-redux\";\r\nimport { library } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { fab } from \"@fortawesome/free-brands-svg-icons\";\r\nimport { far } from \"@fortawesome/free-regular-svg-icons\";\r\nimport { fas } from \"@fortawesome/free-solid-svg-icons\";\r\nimport \"../styles/index.css\";\r\nimport \"react-toastify/dist/ReactToastify.css\";\r\nimport App from \"./App\";\r\nimport { AppInfo } from \"../redux/features/common/AppInfoSlice\";\r\nimport AppLayoutReducer from \"../redux/features/common/AppLayoutSlice\";\r\nimport UserSessionReducer from \"../redux/features/common/UserSessionSlice\";\r\nimport LoadingMaskReducer from \"../redux/features/common/LoadingMaskSlice\";\r\nimport CommonStoreReducer from \"../redux/features/common/CommonStoreSlice\";\r\nimport AppInfoReducer from \"../redux/features/common/AppInfoSlice\";\r\nimport SideBarReducer from \"../redux/features/common/SideBarSlice\";\r\nimport { configureStore } from \"@reduxjs/toolkit\";\r\n\r\nlibrary.add(fab);\r\nlibrary.add(far);\r\nlibrary.add(fas);\r\n\r\nexport const BaseApp: React.FC<AppInfo> = (props) => {\r\n const systemReducers = {\r\n AppLayout: AppLayoutReducer,\r\n UserSession: UserSessionReducer,\r\n loadingMask: LoadingMaskReducer,\r\n commonStores: CommonStoreReducer,\r\n SideBar: SideBarReducer,\r\n AppInfo: AppInfoReducer,\r\n ...props.businessReduxReducers,\r\n };\r\n const store = configureStore({\r\n reducer: systemReducers,\r\n });\r\n\r\n return (\r\n <Provider store={store}>\r\n <App {...props} />\r\n </Provider>\r\n );\r\n};\r\n","// Polyfill for global in case it's not defined (for browser/Vite compatibility)\r\nif (typeof global === \"undefined\") {\r\n global = globalThis;\r\n}\r\nexport * from \"./BaseApp\";\r\nexport * from \"@mui/material\";\r\nexport * from \"zod\";\r\nexport * from \"@mui/lab\";\r\nexport { toast } from \"react-toastify\";\r\nexport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nexport type { FontAwesomeIconProps } from \"@fortawesome/react-fontawesome\";\r\nexport * from \"./templates\";\r\nexport * from \"@mui/x-tree-view/models\";\r\n"],"names":["css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","useIsMobile","breakpoint","isMobile","setIsMobile","useState","window","innerWidth","useEffect","handleResize","addEventListener","removeEventListener","DRAWER_WIDTH","initialState","themeMode","localStorage","getItem","appDirection","AppLayoutSlice","createSlice","name","reducers","setThemeMode","state","action","payload","setAppDirection","AppLayoutActions","actions","AppLayoutReducer","reducer","loadingMaskSlice","value","isOpened","message","showLoadingMask","hideLoadingMask","LoadingMaskReducer","useLoadingMask","dispatch","useDispatch","show","hide","useAxios","mask","apiBaseUrl","useSelector","AppInfo","axiosInstance","axios","create","baseURL","timeout","withCredentials","defaults","interceptors","response","use","error","status","toast","autoClose","data","Blob","text","then","handleGetRequest","async","props","endPointURI","parameters","undefined","showMask","loadingMessage","get","params","successCallBkFn","failureCallBkFn","handlePostRequest","post","handleDeleteRequest","delete","HandleDownloadHTTPPostPDF","responseType","UserSessionSlice","isAuthenticated","authorities","setAuthenticated","setUnAuthenticated","UserSessionActions","UserSessionReducer","resources","en","translation","common","AdminLocalsEn","ar","adminLocalsAr","i18n","initReactI18next","init","lng","fallbackLng","useConfirmationWindow","open","setOpen","t","useTranslation","ConfirmationWindow","_jsxs","Dialog","_jsx","DialogTitle","title","DialogContent","children","DialogContentText","body","DialogActions","Button","variant","color","onClick","onConfirmationCallBk","autoFocus","useSession","UserSession","UserInfo","isUserAuthorized","authorityCode","grantedAuthority","authority","useWindow","windowState","setWindowState","Window","windowProps","jsx","Modal","sx","zIndex","theme","drawer","onClose","onCloseCallBack","Box","position","top","left","maxHeight","transform","height","width","minWidth","minHeight","overflow","bgcolor","display","flexDirection","alignItems","justifyContent","AppBar","Toolbar","FontAwesomeIcon","icon","windowIcon","marginRight","Typography","component","windowTitle","flexGrow","IconButton","Paper","padding","commonStoreSlice","stores","storeKeys","setStoresMetaData","Object","keys","setStoreData","storeKey","CommonStoreReducer","useApiActions","apiActionsProps","CommonStores","commonStores","session","reloadData","commonStoreKey","url","setData","findAll","loadRecordById","recordId","record","findById","findByIdParamName","saveRecord","savedRecord","save","deleteRecordById","result","deleteById","deleteByIdParamName","TemplateTextField","TextField","slotProps","inputLabel","shrink","label","_Fragment","not","a","b","filter","indexOf","intersection","TransferList","valueField","displayField","options","selectedOptions","setSelection","checked","setChecked","React","setLeft","right","setRight","leftFilterValue","setLeftFilterValue","rightFilterValue","setRightFilterValue","leftChecked","rightChecked","handleToggle","currentIndex","newChecked","push","splice","numberOfChecked","items","length","handleToggleAll","customList","unfilteredItems","side","option","toLocaleLowerCase","includes","Card","CardHeader","px","py","avatar","Checkbox","indeterminate","disabled","inputProps","subheader","fullWidth","onChange","event","target","Divider","List","dense","role","map","jsxs","ListItemButton","cursor","ListItemIcon","tabIndex","disableRipple","ListItemText","id","primary","Grid2","container","spacing","margin","flex","direction","my","size","oldState","newState","concat","TemplateBarChart","BarChart","dataset","xAxis","dataKey","scaleType","valueLabel","series","labelField","split","TemplateDataCard","fontSize","fontWeight","TemplateGauge","Gauge","valueMax","total","TemplateLineChart","LineChart","LinearProgressWithLabel","mr","LinearProgress","Math","round","TemplateLineProgress","TemplatePieChart","chartData","index","PieChart","CheckBox","FormControlLabel","required","control","checkedValue","e","onChangeCallBack","unCheckedValue","ComboBox","AppLayoutState","AppLayout","Autocomplete","v","getValue","newValue","clearOnBlur","handleHomeEndKeys","getOptionLabel","renderOption","props1","slots","popper","Popper","renderInput","InputLabelProps","errorMessage","helperText","DATE_FORMAT","DATE_TIME_FORMAT","LIGHT_THEME_INITIAL_MAIN_COLOR","LIGHT_THEME_INITIAL_SECANDARY_COLOR","DARK_THEME_INITIAL_MAIN_COLOR","DARK_THEME_INITIAL_SECANDARY_COLOR","Datefield","LocalizationProvider","dateAdapter","AdapterMoment","DatePicker","moment","format","momentValue","isValid","textField","Fragment","DatetimeField","DateTimePicker","formatMuiErrorMessage","code","args","URL","forEach","arg","searchParams","append","process","env","NODE_ENV","reactIsModule","exports","Symbol","for","c","d","f","g","h","k","l","m","n","p","q","r","w","x","y","z","u","$$typeof","A","reactIs_production_min","AsyncMode","ConcurrentMode","ContextConsumer","Element","ForwardRef","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","require$$0","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","object","$$typeofType","ContextProvider","Memo","hasWarnedAboutDeprecatedIsAsyncMode","reactIs_development","console","isPortal","getOwnPropertySymbols","hasOwnProperty","prototype","propIsEnumerable","propertyIsEnumerable","objectAssign","assign","test1","String","getOwnPropertyNames","test2","i","fromCharCode","join","test3","letter","err","shouldUseNative","source","from","symbols","to","val","TypeError","toObject","s","arguments","key","call","ReactPropTypesSecret_1","has","Function","bind","printWarning","ReactPropTypesSecret","loggedTypeFailures","require$$1","Error","checkPropTypes","typeSpecs","values","location","componentName","getStack","typeSpecName","ex","stack","resetWarningCache","checkPropTypes_1","ReactIs","require$$2","require$$3","require$$4","emptyFunctionThatReturnsNull","factoryWithTypeCheckers","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","iterator","ANONYMOUS","ReactPropTypes","array","createPrimitiveTypeChecker","bigint","bool","func","number","string","symbol","any","createChainableTypeChecker","arrayOf","typeChecker","propName","propFullName","PropTypeError","propValue","Array","isArray","getPropType","element","elementType","instanceOf","expectedClass","expectedClassName","constructor","node","isNode","objectOf","propType","oneOf","expectedValues","is","valuesString","JSON","stringify","getPreciseType","oneOfType","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","expectedType","shape","shapeTypes","invalidValidatorError","exact","allKeys","this","validate","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","isRequired","secret","cacheKey","chainedCheckType","every","iteratorFn","maybeIterable","getIteratorFn","step","entries","next","done","entry","RegExp","isSymbol","Date","PropTypes","emptyFunction","emptyFunctionWithReset","factoryWithThrowingShims","shim","getShim","propTypesModule","REACT_CONSUMER_TYPE","REACT_VIEW_TRANSITION_TYPE","REACT_CLIENT_REFERENCE","reactIs_production","SuspenseList","isSuspenseList","getModuleId","isPlainObject","item","getPrototypeOf","toStringTag","deepClone","output","deepmerge","clone","createBreakpoints","breakpoints","xs","sm","md","lg","xl","unit","other","sortedValues","breakpointsAsArray","sort","breakpoint1","breakpoint2","reduce","acc","obj","sortBreakpointsValues","up","down","between","start","end","endIndex","only","keyIndex","replace","borderRadius","responsivePropType","merge","defaultBreakpoints","defaultContainerQueries","containerQueries","containerName","handleBreakpoints","styleFromPropValue","themeBreakpoints","breakpointKeys","startsWith","some","match","containerKey","shorthand","matches","_formatErrorMessage","containerQuery","Number","isNaN","getContainerQuery","cssKey","capitalize","charAt","toUpperCase","slice","getPath","path","checkVars","vars","getStyleValue","themeMapping","propValueFinal","userValue","prop","cssProperty","themeKey","fn","propTypes","filterProps","properties","directions","aliases","marginX","marginY","paddingX","paddingY","getCssProperties","cache","memoize","property","dir","marginKeys","paddingKeys","spacingKeys","createUnaryUnit","defaultValue","themeSpacing","abs","isInteger","transformed","createUnarySpacing","transformer","resolveCssProperty","cssProperties","getStyleFromPropValue","compose","styles","handlers","borderTransform","createBorderStyle","border","borderTop","borderRight","borderBottom","borderLeft","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outline","outlineColor","gap","columnGap","rowGap","paletteTransform","sizingTransform","maxWidth","breakpointsValues","defaultSxConfig","backgroundColor","pt","pr","pb","pl","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd","mt","mb","ml","mx","marginTop","marginBottom","marginLeft","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd","displayPrint","textOverflow","visibility","whiteSpace","flexBasis","flexWrap","alignContent","order","flexShrink","alignSelf","justifyItems","justifySelf","gridColumn","gridRow","gridAutoFlow","gridAutoColumns","gridAutoRows","gridTemplateColumns","gridTemplateRows","gridTemplateAreas","gridArea","bottom","boxShadow","boxSizing","font","fontFamily","fontStyle","letterSpacing","textTransform","lineHeight","textAlign","typography","styleFunctionSx","getThemeValue","config","unstable_sxConfig","traverse","sxInput","sxObject","emptyBreakpoints","breakpointsInput","breakpointsInOrder","createEmptyBreakpointObject","breakpointsKeys","styleKey","maybeFn","objects","union","Set","objectsHaveSameKeys","sorted","regex","sortContainerQueries","breakpointOutput","removeUnusedBreakpoints","unstable_createStyleFunctionSx","applyStyles","colorSchemes","getColorSchemeSelector","selector","palette","mode","useTheme","defaultTheme","contextTheme","useContext","ThemeContext","systemDefaultTheme","paletteInput","spacingInput","shapeInput","mui","argsInput","argument","createSpacing","muiTheme","components","themeInput","toContainerQuery","mediaQuery","attachCq","cssContainerQueries","unstable_sx","createTheme","extendSxProp","inSx","systemProps","otherProps","splitProps","finalSx","defaultGenerator","ClassNameGenerator","generate","configure","generator","reset","createClassNameGenerator","o","clsx","globalStateClasses","active","completed","expanded","focused","focusVisible","readOnly","selected","themeId","defaultClassName","generateClassName","BoxRoot","tag","stylesFactory","emStyled","styled","shouldForwardProp","forwardRef","inProps","useThemeWithoutDefault","className","as","createBox","globalStatePrefix","slot","globalStateClass","generateUtilityClass","generateUtilityClasses","root","isNumber","isNumeric","trim","capitalizeFirstLetter","str","isValidEmail","email","test","SystemLookupCombobox","setOptions","lookupType","loadLookupOptions","FormElementField","fieldInfo","formManager","formActions","formValues","fieldName","fieldType","hiddenFields","formProps","fieldSize","muiTextFieldProps","disabledFields","hidden","fieldLabel","setValue","onValueChangeCallBack","fieldHeight","formState","errors","toString","dateFormat","selectedRecord","optionDisplayField","optionValueField","FormAction","setConfirmationWindowState","confirmationMessage","actionFn","formActionProps","actionButtonVariant","actionButtonColor","preActionValidation","isConfirmationRequired","FormElementGroup","elements","generateDateTimeColumn","colDef","renderEditCell","api","setEditCellValue","field","valueParser","row","column","valueFormatter","generateComboColumn","valueGetter","renderCell","find","generateCheckBoxColumn","getElementFields","fields","childElement","getAllFields","constructValidationSchema","validationSchemaObj","required_error","invalid_type_error","optional","nullable","boolean","min","TemplateForm","initiallyHiddenFields","setHiddenFields","initialValues","setDisabledFields","formSchema","useForm","resolver","zodResolver","defaultValues","watch","pathParameters","useParams","formRouteRecordIdParamName","setFieldValue","fieldValue","hideField","oldValues","showField","disableField","enableField","idToLoad","recordIdToEdit","retrievedRecord","apiActions","formLoadCallBk","loadRecord","formElement","enabled","saveButtonSpecs","startIcon","handleSubmit","log","preSaveValidation","formSavedSuccessfullyCallBk","formCloseCallBk","cancelButtonSpecs","TemplateGridMultiRecordAction","rowAction","recordsToProcessActionOn","recordIdsToProcessActionOn","isActionAllowed","StyledQuickFilter","QuickFilter","StyledToolbarButton","ToolbarButton","ownerState","opacity","pointerEvents","transition","transitions","StyledTextField","overflowX","TemplateGridTopBar","isCreationAuthorized","templateProps","editAction","gridSelection","rowSelectionModel","keyColumnName","sRecords","sRecordIds","ids","selectedId","selectedRecords","selectedRecordIds","getGridSelection","editMode","handleCreateNewRecord","rowActions","gridActionProps","multiRecord","_createElement","gridLoadParametersValues","tBar","Tooltip","ColumnsPanelTrigger","render","GridViewColumnIcon","FilterPanelTrigger","Badge","badgeContent","filterCount","GridFilterListIcon","gridStateKey","clearGridState","orientation","flexItem","ExportExcel","MenuItem","QuickFilterTrigger","triggerProps","enterDelay","QuickFilterControl","controlProps","inputRef","placeholder","input","startAdornment","InputAdornment","endAdornment","QuickFilterClear","edge","TemplateGridRecordAction","iconStyle","getActionIconStyleForRecord","isActionVisibleForRecord","isActionDisabledForRecord","GridActionsCellItem","showInMenu","reloadGridAfterAction","currentNewRecordIndex","loadGridState","saved","parse","saveGridState","statePart","current","setItem","PIN_FIXED_COLUMNS","TemplateGrid","getLookupOptions","generateLookupGridColumn","useLookupGridColumn","generatedColumns","setGeneratedColumns","formElements","savedState","useMemo","gridProps","initialVisibilityState","columnVisibilityModel","existingFields","themeDirection","setColumnVisibilityModel","columnOrder","setColumnOrder","columnWidths","setColumnWidths","gridRowGroupingModel","setGridRowGroupingModel","columnGroupingModel","newLeft","pinnedColumns","newRight","setPinnedColumns","navigate","useNavigate","recordToDelete","setRecordToDelete","recordToEdit","setRecordToEdit","rowModesModel","setRowModesModel","adjustGridColumns","gridColumns","isDefaultEditable","columns","tableField","muiProps","editable","headerName","headerAlign","align","searchable","constructGridColumnsFromFields","setRowSelectionModel","validationSchema","isEditAllowed","isDeleteAllowed","deleteAction","setConfirmationWindowOpened","isNew","postActionCallBack","oldData","formModalHeight","formModalWidth","formModalMinHeight","formModalMinWidth","formModalIcon","formModalTitle","specs","modalHeight","modalWidth","modalMinHeight","modalMinWidth","modalIcon","modalTitle","FormWindow","setFormWindowState","actionColumn","isEnabled","getActions","disableDefaultAction","isInEditMode","GridRowModes","Edit","View","handleSaveRowClick","ignoreModifications","newData","handleCancelRowEditClick","isEditActionVisibleForRecord","isActionEditDisabledForRecord","formRoute","handleEditRecord","isDeleteActionVisibleForRecord","isDeleteActionDisabledForRecord","structuredColumns","autoLoad","adjustedColumns","baseCols","col","fieldToCol","Map","Boolean","formComponent","editAuthorityKey","hideInfoBar","hideBackButton","girdIcon","gridTitle","gridLoadParameters","setGridLoadParametersValues","Accordion","defaultExpanded","AccordionSummary","expandIcon","GridExpandMoreIcon","AccordionDetails","DataGridPremium","toolbar","newRecord","oldRows","oldModel","removeItem","getRowId","showToolbar","rows","checkboxSelection","onRowModesModelChange","newModel","rowGroupingColumnMode","processRowUpdate","ZodError","validateRecord","requestObject","reloadAfterSave","onRowSelectionModelChange","gridSelectionModel","onColumnVisibilityModelChange","model","onColumnOrderChange","targetIndex","prevOrder","currentOrder","fromIndex","onColumnWidthChange","updatedWidths","rowGroupingModel","onRowGroupingModelChange","handleRowGroupChange","onPinnedColumnsChange","newPinedColumns","ChangeOrgForm","newOrgId","setNewOrgId","currentOrganization","userOrganizations","username","orgId","successChangeCallBackFn","SideBarSlice","toggleSideBarState","setSideBarState","SideBarReducer","MuiAppBar","easing","sharp","duration","leavingScreen","variants","easeOut","enteringScreen","TopBar","ChangeOrgWindow","setChangeOrgWindowState","SideBarState","SideBar","Avatar","src","appLogo","noWrap","appName","organizationEnName","organizationArName","prefix","iconName","language","nextLanguage","changeLanguage","rotation","DrawerHeader","mixins","findNavigationItemById","nodes","found","NavigationItems","actionPayload","DotIcon","verticalAlign","StyledTreeItemRoot","TreeItem2Root","grey","treeItemClasses","groupTransition","CustomTreeItemContent","TreeItem2Content","dark","main","content","alpha","contrastText","AnimatedCollapse","animated","Collapse","TransitionComponent","useSpring","in","StyledTreeItemLabelText","CustomLabel","expandable","appLayoutState","TreeItem2Label","isExpandable","reactChildren","CustomTreeItem","itemId","getRootProps","getContentProps","getIconContainerProps","getCheckboxProps","getLabelProps","getGroupTransitionProps","getDragAndDropOverlayProps","publicAPI","useTreeItem2","rootRef","TreeItem2Provider","TreeItem2IconContainer","TreeItem2Icon","TreeItem2Checkbox","TreeItem2DragAndDropOverlay","NavigationTree","filterData","mergedNavigationItems","enableAdministrationModule","businessNavigationItems","authoriedNavigationItems","RichTreeView","onItemClick","navigationItem","overflowY","Drawer","anchor","appVersion","cacheRtl","createCache","stylisPlugins","prefixer","rtlPlugin","cacheLtr","OrganizationApplicationModuleGrid","systemApplicationModules","setSystemApplicationModules","getSystemApplicationModules","organizationId","selectedOrganization","OrganizationUnitTypeGrid","OrganizationUnitGrid","organizationUnitTypes","setOrganizationUnitTypes","getOrganizationUnitTypes","OrganizationRankGrid","OrgMemberRoleForm","setSelectedOptions","availableOptions","setAvailableOptions","orgMemberId","currentRoles","availableRoles","getOrgMemberRoles","success","closeModalFn","OrganizationMemberGrid","setSelectedRecord","OrganizationMemberRolesWindow","setOrganizationMemberRolesWindowState","SystemOrganizations","SystemOrganizationRanks","SystemOrganizationUnits","personId","selectedPerson","SystemApplicationModuleGrid","applicationId","selectedApplication","systemApplicationId","SystemApplicationAuthorityGrid","RoleAuthoritiesForm","availableAuthorities","setAvailableAuthorities","roleId","appId","selectedAuthorities","getRoleAuthorities","SystemApplicationRoleGrid","selectedRole","setSelectedRole","RoleaAuthoritiesWindow","setRoleAuthoritiesWindowState","LookupGrid","DataQueryParameterGrid","SystemEntityParameters","dataQueryId","ReportParameterGrid","reportId","getGridColumnsFromRecord","ExcelReportViewer","reportData","setReportData","reloadReport","ReportViewer","blobUrl","setBlobUrl","setErrorMessage","excelReportData","setExcelReportData","reportViewerState","setReportViewerState","reportInfo","setReportInfo","reportParametersValues","setReportParametersValues","reportParametersElements","setReportParametersElements","getFormElementsFromReportParameters","reportParameters","reportParameter","parameterLabel","parameterCode","parameterType","mandatory","runReport","reportInfoProp","reportType","reportCode","resultMode","jasperOutPutFileType","contentDisposition","headers","filename","file","createObjectURL","blob","link","href","download","click","removeChild","revokeObjectURL","byPassParameterEntry","loadReportData","reportName","validationObject","Blueprint","useSysDatasource","isMandatory","isVisible","datasourceConId","reportBluePrintId","reportExcelDataQueryId","reportJasperName","reportJasperPath","Jasper","Excel","adjustFormAccordingToReportType","validationObjects","MailRecipientGrid","mailTemplateId","recipientMail","MailBodyGrid","SystemDataQueries","multiline","MailAttachmentGrid","SystemReports","Gmail","mailHost","mailPort","mailUsername","mailPassword","mailProtocol","isMailSmtpAuthEnabled","isMailStarttlsEnabled","isSmtpSSlEnabled","azureGraphApiClientId","azureGraphApiClientSecret","azureGraphApiTenantId","azureGraphApiScope","azureGraphApiEmailId","Azure","adjustFormAccordingToEngineType","WorkflowDocumentStatusGrid","workflowDocumentId","WorkflowDocumentActionMailGrid","SystemMailTemplates","actionId","documentActionId","WorkflowDocumentActionGrid","ActionMailsWindow","setActionMailWindowState","workflowStates","setWorkflowStates","loadWorkFlowDocumentStates","horizontalAxisField","horizontalAxisLabel","seriesKeys","verticalAxisField","verticalAxisLabel","ColumnChart","CircularProgress","adjustFormAccordingToWidgetType","DashboardWidgetGrid","SystemWidgets","dashboardId","WidgetViewer","isWidgetLoading","setWidgetLoading","queryId","parameterValues","getWidgetData","widgetType","spin","widgetTitle","DashboardViewer","dashboardInfo","setDashboardInfo","dashboardCode","dashboardName","dashboardTitle","dashboardParameters","widgets","dashboardParameterValues","setDashboardParameterValues","loadDashboardInfo","widget","SYSTEM_ROUTES","ApplicationModulesWindow","setApplicationWindowState","OrgUnitTypesWindow","setOrgUnitTypesWindowState","OrgUnitsWindow","setOrgUnitsWindowState","OrgRanksWindow","setOrgRanksWindowState","setSelectedPerson","OrganizationMembersWindow","setOrganizationMemberWindowState","refSource","setApplicationModulesWindowState","ApplicationAuthoritiessWindow","setApplicationAuthoritiesWindowState","ApplicationRolesWindow","setApplicationRolesWindowState","ApplicationLookupsWindow","setApplicationLookupsWindowState","DataQueryParameterWindow","setDataQueryParameterWindow","SystemDataSources","SystemDataSourceType","SystemParameterTypes","ReporTrialWindow","setReportTrialWindowState","ReportParameterWindow","setReportParameterWindowState","SystemBluePrints","MailRecipentsWindow","setMailRecipientsWindowState","MailBodiesWindow","setMailBodiesWindowState","MailAttachmentWindow","setMailAttachmentWindowState","callBkFn","periodical","periodType","periodValue","startSendingAt","mailEngine","WorkflowStatusWindow","setWorkflowStatusWindowState","WorkflowActionWindow","setWorkflowActionWindowState","useSystemCon","SystemWidgetTypes","WidgetsWindows","setWidgetsWindowState","RouteWrapper","MainContent","businessRoutes","isAutoLoadLoaded","setAutoLoadLoaded","loadCommonStores","CacheProvider","Routes","route","Route","Puller","MobileDrawer","toggleDrawer","SwipeableDrawer","onOpen","swipeAreaWidth","disableSwipeToOpen","ModalProps","keepMounted","LoadingMask","loadingMask","Backdrop","Login","appInfo","setUsername","password","setPassword","isLoginInProcess","setIsLoginInProcess","UserSessionState","handleLogin","userSession","loginTheme","MuiCssBaseline","styleOverrides","appTheme","primaryColor","secondary","secondaryColor","checkUserSession","ThemeProvider","onKeyDown","loading","Main","Layout","BrowserRouter","ToastContainer","draggable","CssBaseline","AppInfoSlice","documentTitle","muiPremiumKey","businessReduxReducers","businessCommonStoresMetaData","light","setAppInfo","AppInfoActions","AppInfoReducer","ADMINISTRATION_STORES","SystemReportTypes","SystemMailRecipientTypes","App","LicenseInfo","setLicenseKey","LightThemeOptions","background","default","paper","DarkThemeOptions","themeOptions","library","add","fab","far","fas","global","globalThis","systemReducers","store","configureStore","Provider"],"mappings":"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","x_google_ignoreList":[0,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74]}