udp-react-enterprise-component-library 25.1.0-beta.9 → 25.1.1-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/{AmbientGridTemplate-BqlMt5Su.js → AmbientGridTemplate-6xfwTiz-.js} +24 -62
  2. package/dist/AmbientGridTemplate-6xfwTiz-.js.map +1 -0
  3. package/dist/ClientSideUdpGrid-CEhDqIId.js +56 -0
  4. package/dist/ClientSideUdpGrid-CEhDqIId.js.map +1 -0
  5. package/dist/{EnvironmentRibbon-DaDmKAPO.js → EnvironmentRibbon-oEmbWjEq.js} +4 -148
  6. package/dist/EnvironmentRibbon-oEmbWjEq.js.map +1 -0
  7. package/dist/{MenuPage-CO6_GWwB.js → MenuPage-CZHpoopY.js} +12 -13
  8. package/dist/{MenuPage-CO6_GWwB.js.map → MenuPage-CZHpoopY.js.map} +1 -1
  9. package/dist/{MyExportsPage-CX9tzqHk.js → MyExportsPage-CS2Bw2mF.js} +56 -69
  10. package/dist/{MyExportsPage-CX9tzqHk.js.map → MyExportsPage-CS2Bw2mF.js.map} +1 -1
  11. package/dist/MyExportsPage-hyX42CN6.js +11 -0
  12. package/dist/{PageContainer-k8KCfGsM.js → PageContainer-BPHLFGju.js} +12 -17
  13. package/dist/PageContainer-BPHLFGju.js.map +1 -0
  14. package/dist/{PageNotFoundRoute-CxYZNEhN.js → PageNotFoundRoute-D9dLbM_w.js} +1 -1
  15. package/dist/{PageNotFoundRoute-CxYZNEhN.js.map → PageNotFoundRoute-D9dLbM_w.js.map} +1 -1
  16. package/dist/PageNotFoundRoute-DUj0Q9J8.js +3 -0
  17. package/dist/{PasswordResetRedirect-BHnkAW40.js → PasswordResetRedirect-C3g8L0vA.js} +2 -3
  18. package/dist/{PasswordResetRedirect-BHnkAW40.js.map → PasswordResetRedirect-C3g8L0vA.js.map} +1 -1
  19. package/dist/PasswordResetRedirect-Dh-S5Ril.js +3 -0
  20. package/dist/{SearchUtilities-Bor3HbfB.js → SearchUtilities-Btugro8y.js} +11 -20
  21. package/dist/{SearchUtilities-Bor3HbfB.js.map → SearchUtilities-Btugro8y.js.map} +1 -1
  22. package/dist/{SideSheet-DUsxG1FN.js → SideSheet-BsDoeNmq.js} +7 -47
  23. package/dist/SideSheet-BsDoeNmq.js.map +1 -0
  24. package/dist/UdpMaintenanceConfigPage-DcHntunS.js +88 -0
  25. package/dist/UdpMaintenanceConfigPage-DcHntunS.js.map +1 -0
  26. package/dist/UdpPublicForm-DTt-lMfk.js +4 -0
  27. package/dist/{UdpPublicForm-Caa1tH6z.js → UdpPublicForm-LDSuOwV2.js} +2 -2
  28. package/dist/{UdpPublicForm-Caa1tH6z.js.map → UdpPublicForm-LDSuOwV2.js.map} +1 -1
  29. package/dist/{UtilitySideBar-D4CXGtW2.js → UtilitySideBar-95k0edSA.js} +45 -89
  30. package/dist/{UtilitySideBar-D4CXGtW2.js.map → UtilitySideBar-95k0edSA.js.map} +1 -1
  31. package/dist/{VirtualBrowser-BXL0hdy0.js → VirtualBrowser-_epMjUkE.js} +23 -29
  32. package/dist/{VirtualBrowser-BXL0hdy0.js.map → VirtualBrowser-_epMjUkE.js.map} +1 -1
  33. package/dist/{WorkflowContainer-DrqzuQtU.js → WorkflowContainer-ClPvY2mG.js} +14 -20
  34. package/dist/{WorkflowContainer-DrqzuQtU.js.map → WorkflowContainer-ClPvY2mG.js.map} +1 -1
  35. package/dist/WorkflowContainer-D0QUOc-f.js +11 -0
  36. package/dist/{apiHelpers-DZots3og.js → apiHelpers-CmM6DWAT.js} +7 -12
  37. package/dist/{apiHelpers-DZots3og.js.map → apiHelpers-CmM6DWAT.js.map} +1 -1
  38. package/dist/entityUtilities-Dy-jsB5c.js +22 -0
  39. package/dist/entityUtilities-Dy-jsB5c.js.map +1 -0
  40. package/dist/index.js +1528 -2114
  41. package/dist/index.js.map +1 -1
  42. package/dist/{propertyTypeEnums-Civy7RJv.js → propertyTypeEnums-BCCGQqVB.js} +2 -2
  43. package/dist/{propertyTypeEnums-Civy7RJv.js.map → propertyTypeEnums-BCCGQqVB.js.map} +1 -1
  44. package/dist/types/index.d.ts +0 -4
  45. package/dist/types/maintenanceEngine/crudBrowser/CrudTableColumnDefs.d.ts +1 -9
  46. package/dist/types/maintenanceEngine/crudBrowser/crudHelper.d.ts +1 -0
  47. package/dist/types/menuPage/MenuPage.d.ts +2 -1
  48. package/dist/types/tsconfig.tsbuildinfo +1 -1
  49. package/dist/types/udp/pages/UdpMaintenanceConfigPage.d.ts +2 -1
  50. package/dist/useAxiosGet-Dh5pVURP.js +144 -0
  51. package/dist/useAxiosGet-Dh5pVURP.js.map +1 -0
  52. package/dist/useAxiosMutate-DlG255x9.js +43 -0
  53. package/dist/useAxiosMutate-DlG255x9.js.map +1 -0
  54. package/package.json +2 -2
  55. package/dist/AmbientGridTemplate-BqlMt5Su.js.map +0 -1
  56. package/dist/EnvironmentRibbon-DaDmKAPO.js.map +0 -1
  57. package/dist/MyExportsPage-CkzQ0MRq.js +0 -8
  58. package/dist/PageContainer-k8KCfGsM.js.map +0 -1
  59. package/dist/PageNotFoundRoute-BbBtA9Cz.js +0 -3
  60. package/dist/PasswordResetRedirect-tUV2yEkH.js +0 -3
  61. package/dist/SideSheet-DUsxG1FN.js.map +0 -1
  62. package/dist/UdpPublicForm-Cvw5tOHe.js +0 -4
  63. package/dist/WorkflowContainer-Q8gtuaB7.js +0 -9
  64. package/dist/types/maintenanceEngine/crudBrowser/CrudTableActionRender.d.ts +0 -3
@@ -1 +0,0 @@
1
- {"version":3,"file":"EnvironmentRibbon-DaDmKAPO.js","names":["useStyles","UserContext: React.Context<User | null>","UserDispatchContext: React.Context<Dispatch | null>","useStyles","props","useStyles","useStyles","useSetInitialShellVisibility: () => void","useStyles","colors","colors","useStyles","Typography","MuiTypography","useStyles","LayoutUnit: React.FC<any>","useStyles","enableAxiosInterceptors","useStyles","Typography"],"sources":["../src/UI/inputs/buttons/FluentButton.jsx","../src/utilities/axiosInterceptors.js","../src/utilities/auth/internal.ts","../src/utilities/auth/useUser.ts","../src/utilities/input/StringUtilities.js","../src/utilities/FluentIcon.jsx","../src/UI/inputs/buttons/FluentIconButton.jsx","../src/enums/unitySystemEnums.ts","../src/utilities/UnityIcon.jsx","../src/utilities/UnityFluentIcon.jsx","../src/stores/shellStore.ts","../src/UI/inputs/buttons/PrimaryActionButton.jsx","../src/utilities/style/colors.js","../src/utilities/style/colorConverter.js","../src/UI/dataDisplay/typography/Typography.jsx","../src/layout/LayoutUnit.tsx","../src/UI/dataDisplay/typography/StandardTitle.jsx","../src/utilities/useAxiosGet.js","../src/UI/widgets/utils/useId.js","../src/UI/dataDisplay/StatusChip.jsx","../src/udp/utilities/methodUtils.js","../src/utilities/tenant/tenantContext.ts","../src/utilities/tenant/useTenant.ts","../src/shell/ui/EnvironmentRibbon.tsx"],"sourcesContent":["import React from 'react';\nimport { makeStyles } from '@material-ui/core';\nimport { Button, CircularProgress } from '@material-ui/core';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n borderRadius: 2,\n height: (props) => (props.height ? props.height : 32),\n padding: '0 16px',\n minWidth: (props) => (props.minWidth ? props.minWidth : 80),\n border: (props) => `1px solid ${props.color}`\n },\n label: {\n textTransform: 'capitalize',\n fontSize: '0.875rem',\n fontWeight: 600\n }\n}));\n\nexport const FluentButton = (props) => {\n const classes = useStyles(props);\n const { children, id, udprecordid, minWidth, progress, disabled, ...otherProps } =\n props;\n return (\n <Button\n {...otherProps}\n disableElevation\n classes={{\n root: classes.root,\n label: classes.label\n }}\n margin='dense'\n id={id}\n udprecordid={udprecordid}\n minWidth={minWidth}\n disabled={disabled || progress}\n >\n {progress && (\n <CircularProgress\n id={id + '-ButtonProgress'}\n udprecordid={udprecordid + '-ButtonProgress'}\n size={18}\n color='primary'\n />\n )}\n {!progress && children}\n </Button>\n );\n};\n","import Axios from 'axios';\nimport { getAccessToken, getMergedConfig } from './apiHelpers';\nimport { whitelistedPaths } from './auth/whitelistedPaths';\n\nconst axiosInterceptors = () => {\n Axios.interceptors.request.use(\n async (config) => {\n // don't want to change the access token if it's already there, this rule is already applied in getMergedConfig\n // we don't want to call getAccessToken until it is actually need it because it might log the user out\n if (!whitelistedPaths.includes(window.location.pathname)) {\n let accessToken = '';\n if(!config?.headers?.Authorization){\n accessToken = await getAccessToken()\n }\n return getMergedConfig(accessToken, config);\n }\n return config;\n },\n (error) => Promise.reject(error)\n );\n\n Axios.interceptors.response.use(\n (response) => response,\n async (error) => {\n const config = error?.config;\n if (\n error?.response?.status === 401 &&\n !config?._retry &&\n !whitelistedPaths.includes(window.location.pathname)\n ) {\n config.headers.Authorization = `Bearer ${await getAccessToken()}`;\n config._retry = true;\n\n return Axios(config);\n }\n\n return Promise.reject(error);\n }\n );\n};\n\nexport default axiosInterceptors;\n","import { createContext } from 'react';\nimport { User } from './user';\n\nexport type UserAction = { type: 'SET_USER' };\nexport type AccessTokenAction = { type: 'SET_ACCESS_TOKEN' };\nexport type Dispatch = (action: UserAction | AccessTokenAction) => void;\nexport const UserContext: React.Context<User | null> = createContext<User | null>(null);\nexport const UserDispatchContext: React.Context<Dispatch | null> = createContext<Dispatch | null>(null);\n","import { useContext } from 'react';\nimport { UserContext } from './internal';\nimport { User } from './user';\n\n/**\n * Get the current User object (or null if not logged in)\n *\n * Does not redirect to login\n * @see {@link useAuthedUser}\n */\nexport function useUser(): User | null {\n return useContext(UserContext);\n}\n","export const removeWhiteSpace = (str) => {\n if (!str) {\n return '';\n }\n return str.replace(/\\s/g, '');\n};\n\nexport const camelToPascalCaseWithSpace = (str) => {\n const capitalizedStr = str.charAt(0).toUpperCase() + str.slice(1);\n return capitalizedStr.replace(/([a-z0-9])([A-Z])/g, '$1 $2');\n};\n\nexport const trimStringAfter = (str, character) => {\n const lastIndex = str.lastIndexOf(character);\n return str.substring(0, lastIndex === -1 ? str.length : lastIndex);\n};\n\nexport const toLowerFirstChar = (field) => {\n return field?.charAt(0)?.toLowerCase() + field?.slice(1);\n};\n\nexport const toUpperFirstChar = (field) => {\n return field?.charAt(0)?.toUpperCase() + field?.slice(1);\n};\n\nexport const toTitleCase = (str) => {\n const result = str\n .replace(/([A-Z][a-z]+)/g, ' $1')\n .replace(/([A-Z]+)\\b/g, ' $1')\n .replace(/_/g, ' ')\n .trim();\n return result.charAt(0).toUpperCase() + result.slice(1);\n};\n\nexport const pluralize = (str) => {\n const last = str.charAt(str.length - 1);\n if (last === 's') {\n return str;\n } else {\n return `${str}s`;\n }\n};\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core';\nimport clsx from 'clsx';\n\nconst useStyles = makeStyles(\n (props) => ({\n root: {\n display: 'inline-block',\n '& > svg': {\n display: 'inherit'\n }\n },\n default: {\n fontSize: 18,\n width: 18,\n height: 18\n },\n large: {\n fontSize: 24,\n width: 24,\n height: 24\n },\n medium: {\n fontSize: 16,\n width: 16,\n height: 16\n },\n small: {\n fontSize: 14,\n width: 14,\n height: 14\n },\n xs: {\n fontSize: 12,\n width: 12,\n height: 12\n },\n color: {\n color: (props) => props.color\n },\n customSize: {\n fontSize: (props) => props.size,\n width: (props) => props.size,\n height: (props) => props.size\n }\n }),\n { name: 'FluentIcon' }\n);\n\n/**\n * Wrapper for @fluentui/react-icons to provide it with required size\n */\nexport const FluentIcon = (props) => {\n const classes = useStyles(props);\n const {\n component: IconComponent,\n size = 'default',\n className,\n color,\n customSize = false,\n ...otherProps\n } = props;\n\n return (\n <IconComponent\n {...otherProps}\n className={clsx(\n classes.root,\n className,\n (customSize && typeof size === 'number' && classes['customSize']) ||\n classes[size],\n color && classes['color']\n )}\n />\n );\n};\n","import React from 'react'\nimport { makeStyles, IconButton } from '@material-ui/core'\nimport { FluentIcon } from '../../../utilities/FluentIcon'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n borderRadius: (props) => (props.rounded ? 50 : 2),\n width: (props) => (props.rounded ? theme.spacing(4) : theme.spacing(1)),\n height: (props) => (props.rounded ? theme.spacing(4) : theme.spacing(1)),\n border: (props) => props.rounded && `1px solid ${theme.palette.divider}`,\n background: (props) => props.rounded && theme.palette.common.white\n }\n}))\n\nexport const FluentIconButton = (props) => {\n const classes = useStyles(props)\n const { icon, size = 'medium', id, udprecordid, ...otherProps } = props\n return (\n <IconButton\n {...otherProps}\n classes={{\n root: classes.root\n }}\n udprecordid={udprecordid}\n >\n <FluentIcon component={icon} size={size} id={id} />\n </IconButton>\n )\n}\n","export enum GridEnums {\n Ideas = 'f3c1bf72-15fd-4dcd-904c-b67850525cff',\n Tickets = '787a2afc-26df-440a-9040-9a3e5c5333d5',\n Users = '4ea9fe5d-0af3-4102-af95-4d4a5ca886e1',\n Tenants = 'b543fc1d-6f45-469e-87ae-2b18b8200955',\n Roles = '9af2eebb-7687-4b3c-91fa-607efb0a5fea',\n Inquiry = 'ac0b9a3a-d113-4590-93db-dea62bcb89a2',\n Groups = 'c599b6ff-fee3-4ade-bf78-16700fddb5b9'\n}\n\nexport enum GridStateTypeEnums {\n Column = 1,\n Pivot_Mode = 2,\n Column_Sort = 3,\n Column_Filter = 4,\n Column_Group = 5\n}\n\nexport enum MenuTypeEnums {\n Left_Menu = 1,\n Application_Menu = 2,\n Builders_Menu = 3,\n Favorites_Menu = 4\n}\n\nexport enum VerticalEnums {\n Engage = 1,\n Manage = 2,\n Build = 3,\n Play = 4\n}\n\nexport enum MenuItemEnums {\n Container = 'b36cec3c-fe05-47ed-a687-70be22b0e200',\n External_Link = '11758dfd-ac3a-4996-b86c-767947776ff8',\n Data_Browser = 'afc3833e-e288-4cf6-8155-a069ec4ddc5a',\n Report = '22763e92-2477-43c3-92db-124a84e5ff7f',\n Page = 'd506aeef-ba1b-49a8-9032-beba450b11bc',\n Page_Builder = '16df758b-c456-4c8c-8ca3-2ae167b3b078',\n Route = 'ec5f1c26-e7e1-4f19-8e6e-143308995a40',\n Tree_Builder = 'd4379c4f-6496-4caa-bc0d-5f297fea580f',\n Inquiry = 'b45f660f-a172-4444-8dd8-8f51d56e0725',\n Scheduler = '4007feb9-e50c-44f9-8502-a1f337d82bcf',\n Config = 'aeb48be9-09ea-49b3-9f21-486fe3545b2d',\n Action = 'a66e9458-2540-4166-9b26-1e9b44a2b080',\n Inner_Menu = 'c4f7b46c-00b8-428e-b982-1639c03fde20'\n}\n\nexport enum ADUserTypeEnums {\n Guest = 'Guest',\n Member = 'Member'\n}\n\nexport enum ProductEnums {\n Unity = 1\n}\n\nexport enum RoleTypeEnums {\n System = 1,\n Tenant = 2\n}\n\nexport enum LookupTypeEnums {\n No_Lookup = 'NO_LOOKUP',\n Api = 'API',\n Csv = 'CSV',\n Domain = 'DOMAIN',\n Lookup = 'LOOKUP'\n}\n\nexport enum SearchValueType {\n String = 'String',\n Int = 'Int',\n Long = 'Long',\n Double = 'Double',\n Boolean = 'Boolean',\n DateTime = 'DateTime'\n}\n\nexport enum SearchGroupingType {\n Distinct = 'DISTINCT',\n Aggregate = 'AGGREGATE'\n}\n\nexport enum SearchSortDirection {\n Asc = 'ASC',\n Desc = 'DESC'\n}\n\nexport enum RoleNameEnums {\n System_Administrator = 'System Administrator',\n Company_Administrator = 'Company Administrator',\n Developer = 'Developer'\n}\n\nexport enum ProductNameEnums {\n Asset_Management = 'Asset Management',\n Asset_Routing = 'Asset Routing',\n AVI = 'AVI',\n Cashiering = 'Cashiering',\n Citizen_Portal = 'Citizen Portal',\n Compliance = 'Compliance',\n Consumer_Engagement = 'Consumer Engagement',\n Consumer_Information = 'Consumer Information',\n Contact_Center = 'Contact Center',\n Course_Management = 'Course Management',\n Crew_Routing = 'Crew Routing',\n Dispatch = 'Dispatch',\n Dispatch_Admin = 'Dispatch Admin',\n Employee_Network = 'Employee Network',\n Energy_Management = 'Energy Management',\n Equipment_Inspection = 'Equipment Inspection',\n Facility_Management = 'Facility Management',\n Field_Mobility = 'Field Mobility',\n Fixed_Assets = 'Fixed Assets',\n Fleet_Management = 'Fleet Management',\n Health_And_Safety = 'Health & Safety',\n Instructor_Application = 'Instructor Application',\n MDM = 'MDM',\n Member_Management = 'Member Management',\n Page_Builder = 'Page Builder',\n Project_Management = 'Project Management',\n Rentals = 'Rentals',\n Unity = 'Unity',\n Work_Orders = 'Work Orders'\n}\n\nexport enum LogicalSearchOperatorEnums {\n And = 1,\n Or = 2\n}\n\nexport enum NodeActionTriggerEnums {\n On_Node_Drop = 1\n}\n\nexport enum NodeActionEnums {\n Load_Inquiry_Page = 1,\n Execute_Api = 2,\n Start_Workflow = 3,\n Create = 4,\n Update = 5,\n Delete = 6,\n Retrieve = 7,\n Open_Inquiry = 8,\n Open_Maintenance_Engine = 9,\n Redirect = 10,\n Open_External_Link = 11,\n Hide = 12,\n Disable = 13,\n Open_Page_Split_Screen = 14,\n Open_Shell_Split_Screen = 15,\n Open_Notes = 16,\n Open_Reminders = 17,\n Execute_Function = 18\n}\n\nexport enum TreeViewModeEnums {\n Classic = 1,\n Compact = 2\n}\n\nexport enum PanelPositionEnums {\n Site_Header = 1,\n Site_Header_Summary = 2,\n Speed_Dial = 3,\n Inquiry_Header = 4,\n Inquiry_Header_Summary = 5\n}\n\nexport enum CardinalityTypeEnums {\n One_To_One = 0,\n One_To_Many = 1,\n Many_To_Many = 2,\n Many_To_One = 3\n}\n\nexport enum SplitScreenTypeEnums {\n Entity = 1,\n Notes = 2,\n Page = 3,\n Reminders = 4\n}\n\nexport enum UdpEnums {\n Udp_Note_Type = 'UdpNoteType',\n Udp_Note_Template = 'UdpNoteTemplate',\n Udp_Note = 'UdpNote',\n Udp_Note_Filed_For = 'UdpNoteFiledFor',\n Udp_Shortcut_Content = 'UdpShortcutContent',\n Udp_Lookup = 'UdpLookup',\n Udp_Reminder_Type = 'UdpReminderType',\n Udp_Reminder_Template = 'UdpReminderTemplate',\n Udp_Reminder = 'UdpReminder',\n Udp_Reminder_Filed_For = 'UdpReminderFiledFor'\n}\n\nexport enum NodeGroupTypeEnums {\n Static = 'static',\n Dynamic = 'dynamic'\n}\n\nexport enum NodeGroupOutlierEnums {\n Hide = 'hide',\n Group = 'group',\n Individual = 'individual'\n}\n\nexport enum LookupTypeIdEnums {\n Api = 1,\n Csv = 2,\n Domain = 3,\n Lookup = 4\n}\n\nexport enum VisibilityTypeEnums {\n Private = 1,\n Public = 2\n}\n\nexport enum SeverityTypeEnums {\n Success = 'success',\n Error = 'error',\n Warning = 'warning',\n Info = 'info',\n Default = 'default'\n}\n\nexport enum UdpKeywordEnums {\n Udp_Tenant_Id = 'UDP_TENANT_ID',\n Udp_Product_Id = 'UDP_PRODUCT_ID',\n Udp_Language_Id = 'UDP_LANGUAGE_ID'\n}\n\nexport const enum JobStatusIdMapping {\n PENDING = 1,\n IN_PROGRESS = 2,\n COMPLETED = 3,\n FAILED = 4\n}\n\nexport const enum JobTypeIdMapping {\n IMPORT = 1,\n EXPORT = 2\n}\n\nexport enum UdpReminderFiledForType {\n User = 1,\n System = 2\n}\n\nexport enum DeviceTypeEnums {\n Desktop = 1,\n Tablet = 2,\n Mobile = 3\n}\n\nexport enum ContainerTypeEnums {\n Sidesheet = 1,\n SplitScreen = 2,\n Page = 3\n}\n\nexport enum TenantTypeEnums {\n Tenant = 1,\n Product = 2\n}\n\nexport enum EntityAttributeEnums {\n Is_Product_ShortcutContent = 'IsProductShortcutContent',\n Is_Product_Lookup = 'IsProductLookup',\n User_Defined = 'UserDefined',\n Domain_Name = 'DomainName'\n}\n\nexport enum RoleIdEnums {\n Unity_System_Administrator = '302dacf5-bf16-412d-bf66-519d4c3491c3'\n}\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core';\nimport clsx from 'clsx';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n fill: (props) => props.color || 'black'\n },\n showcase: {\n fontSize: 38,\n width: 38,\n height: 38\n },\n large: {\n fontSize: 20,\n width: 20,\n height: 20\n },\n default: {\n fontSize: 18,\n width: 18,\n height: 18\n },\n medium: {\n fontSize: 16,\n width: 16,\n height: 16\n },\n small: {\n fontSize: 14,\n width: 14,\n height: 14\n },\n xs: {\n fontSize: 12,\n width: 12,\n height: 12\n }\n}));\n\nexport const UnityIcon = (props) => {\n const { component, size = 'default', className, ...otherProps } = props;\n const classes = useStyles(props);\n\n return (\n <div\n {...otherProps}\n className={clsx(classes.root, className, classes[size])}\n >\n {component}\n </div>\n );\n};\n","import React from 'react';\nimport { UnityIcon } from './UnityIcon';\nimport { FluentIcon } from './FluentIcon';\n\nexport const UnityFluentIcon = (props) => {\n const { type, icon, color, ...other } = props;\n\n if (!icon) {\n return null;\n }\n\n return type === 'unity' ? (\n <UnityIcon component={icon} color={color} {...other} />\n ) : (\n <FluentIcon component={icon} style={{ color: color || '' }} {...other} />\n );\n};\n","import { useEffect } from 'react';\nimport { create } from 'zustand';\nimport { devtools } from 'zustand/middleware';\nimport { ContainerTypeEnums } from '../enums/unitySystemEnums';\n\ninterface ShellState {\n subHeaderActionHasChildren: boolean | null | undefined;\n setSubHeaderActionHasChildren: (subHeaderActionHasChildren: boolean) => void;\n navigationExpanded: boolean | null | undefined;\n setNavigationExpanded: (navigationExpanded: boolean) => void;\n setIsValidWidget: (isValidWidget: (a: string) => boolean) => void;\n isValidWidget: (a: string) => boolean;\n setGetWidget: (getWidget: (a: string) => any) => void;\n getWidget: (a: string) => any;\n shellHidden: boolean | null | undefined;\n setShellHidden: (shellHidden: boolean) => void;\n currentContainerId: string | null | undefined;\n setCurrentContainerId: (containerId: string) => void;\n}\n\nexport const useShellStore = create<ShellState>()(\n devtools((set) => ({\n subHeaderActionHasChildren: false,\n setSubHeaderActionHasChildren: (subHeaderActionHasChildren) =>\n set((state) => ({\n subHeaderActionHasChildren: subHeaderActionHasChildren\n })),\n navigationExpanded: true,\n setNavigationExpanded: (navigationExpanded) =>\n set((state) => ({\n navigationExpanded: navigationExpanded\n })),\n isValidWidget: (a) => false,\n setIsValidWidget: (isValidWidget) =>\n set((state) => ({\n isValidWidget: isValidWidget\n })),\n getWidget: (a) => null,\n setGetWidget: (getWidget) =>\n set((state) => ({\n getWidget: getWidget\n })),\n shellHidden: false,\n setShellHidden: (shellHidden) =>\n set((state) => ({\n shellHidden: shellHidden\n })),\n currentContainerId: null,\n setCurrentContainerId: (currentContainerId) =>\n set((state) => ({ currentContainerId: currentContainerId }))\n }))\n);\n\nexport const useSetInitialShellVisibility: () => void = () => {\n const searchParams = new URLSearchParams(window.location.search);\n const withoutShell =\n searchParams.has('withoutShell') === true\n ? searchParams.get('withoutShell') === 'true'\n ? true\n : false\n : false;\n\n const setShellHidden = useShellStore((state) => state.setShellHidden);\n\n useEffect(() => {\n if (withoutShell) {\n setShellHidden(true);\n }\n }, [setShellHidden, withoutShell]);\n};\n","import React from 'react'\nimport { makeStyles, Button } from '@material-ui/core'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n borderRadius: 0,\n padding: 'calc(.875rem - 3px) 23px calc(.875rem - 3px) 15px'\n },\n label: {\n textTransform: 'none'\n },\n endIcon: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginLeft: theme.spacing(2)\n }\n}))\n\nexport const PrimaryActionButton = ({ children, icon, ...otherProps }) => {\n const classes = useStyles()\n\n return (\n <div>\n <Button\n {...otherProps}\n disableElevation\n classes={{\n root: classes.root,\n label: classes.label,\n endIcon: classes.endIcon\n }}\n variant='contained'\n color='secondary'\n endIcon={icon}\n >\n {children}\n </Button>\n </div>\n )\n}\nexport default PrimaryActionButton\n","export const colors = {\n systemIcon: {\n trigger: {\n main: '#FFCD27',\n hint: '#FDFAF0',\n hover: { outline: '#AF9027', background: '#FFFDEF' }\n },\n action: {\n main: '#1542FF',\n hint: '#F3F5FE',\n hover: { outline: '#40529D', background: '#ECEFFA' }\n },\n condition: {\n main: '#AE14FF',\n hint: '#F9EEFF',\n hover: { outline: '#844EA0', background: '#FAF2FE' }\n },\n sequence: {\n main: '#FD7F12',\n hint: '#FFF6EE',\n hover: { outline: '#A86123', background: '#FDF4EC' }\n }\n },\n unity: {\n success: {\n hint: '#F3FAF3'\n },\n warning: {\n hint: '#FFF6EA'\n },\n info: {\n hint: '#F3F9FE'\n },\n error: {\n hint: '#FDF7F6'\n }\n },\n categoryColors: {\n one: {\n hint: '#F8BBD0',\n main: '#F3FAF3'\n },\n two: {\n hint: '#FFF6EA',\n main: '#FFF6EA'\n },\n three: {\n hint: '#FFF6EA',\n main: '#FFF6EA'\n },\n four: {\n hint: '#F8BBD0',\n main: '#f3e0eb'\n },\n five: {\n hint: '#F8BBD0',\n main: 'rgb(194 223 218)'\n },\n six: {\n hint: '#F8BBD0',\n main: 'rgb(222 217 235)'\n }\n }\n};\n","import { colors } from './colors';\n\nexport const getEllipseColor = (theme, color, variant = 'main') => {\n if (!theme) {\n return '';\n }\n let ellipseColor = theme.palette.primary[variant];\n switch (color) {\n case 'action':\n ellipseColor = theme.palette.action?.[variant];\n break;\n case 'sequence':\n ellipseColor = theme.palette.sequence?.[variant];\n break;\n case 'trigger':\n ellipseColor = theme.palette.trigger?.[variant];\n break;\n case 'condition':\n ellipseColor = theme.palette.condition?.[variant];\n break;\n case 'primary':\n ellipseColor = theme.palette.primary[variant];\n break;\n case 'secondary':\n ellipseColor = theme.palette.secondary[variant];\n break;\n case 'info':\n ellipseColor = theme.palette.info[variant];\n break;\n case 'warning':\n ellipseColor = theme.palette.warning[variant];\n break;\n case 'error':\n ellipseColor = theme.palette.error[variant];\n break;\n case 'success':\n ellipseColor = theme.palette.success[variant];\n break;\n default:\n ellipseColor = theme.palette.secondary[variant];\n break;\n }\n return ellipseColor;\n};\n\nexport const getCustomHintColor = (color) => {\n // if (!theme) {\n // return '';\n // }\n let customHintColor = colors.unity.info.hint;\n switch (color) {\n // case 'primary':\n // customHintColor = theme.palette.primary.hint;\n // break;\n // case 'secondary':\n // customHintColor = theme.palette.secondary.hint;\n // break;\n case 'info':\n customHintColor = colors.unity.info.hint;\n break;\n case 'warning':\n customHintColor = colors.unity.warning.hint;\n break;\n case 'error':\n customHintColor = colors.unity.error.hint;\n break;\n case 'success':\n customHintColor = colors.unity.success.hint;\n break;\n default:\n customHintColor = colors.unity.info.hint;\n }\n\n return customHintColor;\n};\n\nexport const getCategoryColor = (color) => {\n // if (!theme) {\n // return '';\n // }\n let highlightColor = colors.unity.info.hint;\n switch (color) {\n case 'info':\n highlightColor = colors.unity.info.hint;\n break;\n case 'warning':\n highlightColor = colors.unity.warning.hint;\n break;\n case 'error':\n highlightColor = colors.unity.error.hint;\n break;\n case 'four':\n highlightColor = colors.categoryColors.four.main;\n break;\n case 'five':\n highlightColor = colors.categoryColors.five.main;\n break;\n case 'six':\n highlightColor = colors.categoryColors.six.main;\n break;\n default:\n highlightColor = colors.unity.info.hint;\n }\n\n return highlightColor;\n};\n","import React from 'react';\nimport { Typography as MuiTypography, makeStyles } from '@material-ui/core';\nimport clsx from 'clsx';\nimport { getEllipseColor } from '../../../utilities/style/colorConverter';\n\nconst useStyles = makeStyles((theme) => ({\n typography: {\n color: (props) => props?.color && getEllipseColor(theme, props?.color)\n }\n}));\nexport const Typography = (props) => {\n const {\n variant,\n align,\n children,\n className,\n noWrap = false,\n paragraph = false,\n color\n } = props;\n const classes = useStyles(props);\n\n return (\n <MuiTypography\n variant={variant}\n align={align}\n className={clsx({[classes.typography]: color}, className)}\n noWrap={noWrap}\n paragraph={paragraph}\n >\n {children}\n </MuiTypography>\n );\n};\n","import React from 'react'\nimport { makeStyles, Badge } from '@material-ui/core'\nimport clsx from 'clsx'\n\ntype LayoutUnitProps = {\n unit: 'nudge' | 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl',\n highlight: any\n}\n\nconst useStyles = makeStyles((theme) => ({\n highlight: {\n background: 'pink',\n opacity: (props:LayoutUnitProps) => (props.highlight ? 0.2 : 0)\n },\n nudge: {\n height: theme.spacing(1)\n },\n xxs: {\n height: theme.spacing(2)\n },\n xs: {\n height: theme.spacing(3)\n },\n sm: {\n height: theme.spacing(4)\n },\n md: {\n height: theme.spacing(5)\n },\n lg: {\n height: theme.spacing(8)\n },\n xl: {\n height: theme.spacing(12)\n },\n xxl: {\n height: theme.spacing(20)\n }\n}))\n\n\n\n\nexport const LayoutUnit: React.FC<any> = (props: LayoutUnitProps) => {\n const classes = useStyles(props)\n\n let spaceUnit\n const { unit, highlight } = props\n\n switch (unit) {\n case 'nudge':\n spaceUnit = (\n <div className={clsx(classes.nudge, classes.highlight)}>\n {highlight && <Badge color='secondary' badgeContent='Nudge' />}\n </div>\n )\n break\n case 'xxs':\n spaceUnit = (\n <div className={clsx(classes.xxs, classes.highlight)}>\n {highlight && <Badge color='secondary' badgeContent='XXS' />}\n </div>\n )\n break\n case 'xs':\n spaceUnit = (\n <div className={clsx(classes.xs, classes.highlight)}>\n {highlight && <Badge color='secondary' badgeContent='XS' />}\n </div>\n )\n break\n case 'sm':\n spaceUnit = (\n <div className={clsx(classes.sm, classes.highlight)}>\n {highlight && <Badge color='secondary' badgeContent='SM' />}\n </div>\n )\n break\n case 'md':\n spaceUnit = (\n <div className={clsx(classes.md, classes.highlight)}>\n {highlight && <Badge color='secondary' badgeContent='MD' />}\n </div>\n )\n break\n case 'lg':\n spaceUnit = (\n <div className={clsx(classes.lg, classes.highlight)}>\n {highlight && <Badge color='secondary' badgeContent='LG' />}\n </div>\n )\n break\n case 'xl':\n spaceUnit = (\n <div className={clsx(classes.xl, classes.highlight)}>\n {highlight && <Badge color='secondary' badgeContent='XL' />}\n </div>\n )\n break\n case 'xxl':\n spaceUnit = (\n <div className={clsx(classes.xxl, classes.highlight)}>\n {highlight && <Badge color='secondary' badgeContent='XXL' />}\n </div>\n )\n break\n default:\n }\n\n return spaceUnit\n}\n","import React from 'react'\nimport { makeStyles, Typography } from '@material-ui/core'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: props => props?.removeMarginTop ? 0 : theme.spacing(1),\n whiteSpace: 'nowrap',\n // overflow: 'hidden',\n textOverflow: 'ellipsis'\n }\n}))\n\nexport const StandardTitle = (props) => {\n const classes = useStyles(props)\n const { children, ...other } = props\n\n return (\n <Typography component='h2' variant='h6' className={classes.root} {...other}>\n {children}\n </Typography>\n )\n}\n","import { useEffect, useMemo } from 'react';\nimport useAxios from 'axios-hooks';\nimport { handleResponseErrors, getMergedConfig } from './apiHelpers';\nimport enableAxiosInterceptors from './axiosInterceptors';\nimport { useUser } from './auth/useUser';\nimport { getStoredTenant } from './storage/UnitySessionStorage';\n\nenableAxiosInterceptors();\n/**\n * A custom hook for making GET requests with query parameters.\n * @template T - The expected type of the response data.\n * @param {string} url - The URL for the request.\n * @param {object} [params] - Optional object for query parameters.\n * @param {import('axios').AxiosRequestConfig} [config] - Optional Axios request config.\n * @param {boolean} [isManual] - If true, the request is not made automatically.\n * @returns {import('axios-hooks').AxiosHooksResult<T>}\n */\nexport const useAxiosGetQuery = (url, params, config, isManual) => {\n const user = useUser();\n\n if (!user?.accessToken) {\n isManual = true;\n }\n const headers = useMemo(() => {\n const currentHeaders = config.headers ?? {}\n currentHeaders.currentTenantId ||= user?.currentTenantId ?? ''\n return currentHeaders\n }, [user, config])\n config.headers = headers\n\n const [{ data, loading, error }, refetch] = useAxios(\n { url, params, ...config },\n { manual: isManual }\n );\n useEffect(() => {\n handleResponseErrors(error);\n }, [error]);\n\n return [{ data, loading, error }, refetch];\n};\n/**\n * A custom hook for making GET requests with Axios.\n * @template T - The expected type of the response data.\n * @param {string} baseURL - The base URL for the request.\n * @param {string} url - The URL path for the request.\n * @param {import('axios').AxiosRequestConfig} [config={}] - Optional Axios request config.\n * @param {boolean} [isManual] - If true, the request is not made automatically.\n * @param {boolean} [useCache=true] - If true, caching is enabled.\n * @returns {import('axios-hooks').AxiosHooksResult<T>}\n */\nexport const useAxiosGet = (\n baseURL,\n url,\n config = {},\n isManual,\n useCache = true\n) => {\n const user = useUser();\n\n const headers = useMemo(() => {\n const currentHeaders = config.headers ?? {}\n currentHeaders.currentTenantId ||= user?.currentTenantId ?? ''\n return currentHeaders\n }, [user, config])\n config.headers = headers\n\n const fullURL = { url: `${baseURL}/${url}` };\n const [{ data, loading, error }, refetch] = useAxios(\n { ...fullURL, ...config },\n { manual: isManual, useCache: useCache }\n );\n\n useEffect(() => {\n handleResponseErrors(error);\n }, [error]);\n\n return [{ data, loading, error }, refetch];\n};\n","import warning from 'warning';\nimport useConstant from 'use-constant';\n\nlet idCounter = 0;\nfunction nextId() {\n idCounter += 1;\n warning(\n idCounter < 1e10,\n 'Id: you might have a memory leak.' +\n 'The idCounter is not supposed to grow that much.'\n );\n\n return idCounter;\n}\n\n/**\n * A simple hook that returns a unique page ID\n */\nexport default function useId(name, idFromProps) {\n const id = useConstant(nextId);\n\n if (idFromProps) {\n return idFromProps;\n }\n\n if (process.env.NODE_ENV === 'production') {\n return `uid${id}`;\n }\n\n return `${name || 'unnamed'}-${id}`;\n}\n","import React from 'react';\nimport { Chip, makeStyles } from '@material-ui/core';\nimport clsx from 'clsx';\n\nconst useStyles = makeStyles((theme) => ({\n smallChip: {\n height: theme.spacing(2.5),\n fontSize: '0.7rem',\n '& .MuiChip-label': {\n paddingLeft: theme.spacing(0.75),\n paddingRight: theme.spacing(0.75)\n }\n },\n actionable: {\n cursor: 'pointer'\n },\n success: {\n backgroundColor: theme.palette.success.main,\n color: '#FFF',\n '&.MuiChip-outlined': {\n color: theme.palette.success.main,\n borderColor: theme.palette.success.main,\n backgroundColor: 'transparent'\n }\n },\n warning: {\n backgroundColor: theme.palette.warning.main,\n color: '#FFF',\n '&.MuiChip-outlined': {\n color: theme.palette.warning.main,\n borderColor: theme.palette.warning.main,\n backgroundColor: 'transparent'\n }\n },\n error: {\n backgroundColor: theme.palette.error.main,\n color: '#FFF',\n '&.MuiChip-outlined': {\n color: theme.palette.error.main,\n borderColor: theme.palette.error.main,\n backgroundColor: 'transparent'\n }\n },\n info: {\n backgroundColor: theme.palette.info.main,\n color: theme.palette.getContrastText(theme.palette.info.main),\n '&.MuiChip-outlined': {\n color: theme.palette.info.main,\n borderColor: theme.palette.info.main,\n backgroundColor: 'transparent'\n }\n }\n}));\n\nexport const StatusChip = ({\n status,\n label,\n useSmallChip = false,\n isActionable = false,\n icon,\n variant = 'default',\n onClick,\n}) => {\n const classes = useStyles();\n\n const chipClass = clsx({\n [classes.smallChip]: useSmallChip,\n [classes.actionable]: isActionable,\n [classes.success]: status === 'success',\n [classes.warning]: status === 'warning',\n [classes.error]: status === 'error',\n [classes.info]: status === 'info'\n });\n\n return (\n <Chip\n className={chipClass}\n label={label}\n size='small'\n icon={icon || null}\n variant={variant}\n onClick={isActionable ? onClick : null}\n />\n );\n};\n","import { ConfigService, apiMutate} from 'udp-react-stencil-component-library';\n\nexport const getBaseMethod = (type, baseType, catalogPromotedEntities) => {\n if (!catalogPromotedEntities) {\n return null;\n }\n const entityMethod = catalogPromotedEntities.find((promotedEntity) => {\n const entityNameParts = promotedEntity.entityName.split('.');\n if (entityNameParts.length) {\n return entityNameParts[entityNameParts.length - 1] === type;\n }\n return false;\n });\n return entityMethod ? entityMethod[baseType] : null;\n};\n\nexport const executeQueryAdHoc = async (\n data,\n apiMethodId,\n urlQueryParams = ''\n) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryAdHoc/${apiMethodId}${urlQueryParams}`,\n {\n method: 'post'\n },\n data\n );\n\nexport const executeQueryWithParameters = async (\n data,\n apiMethodId,\n urlQueryParams = ''\n) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryWithParameters/${apiMethodId}${urlQueryParams}`,\n {\n method: 'post'\n },\n data\n );\n\nexport const executeQueryInstance = async (\n data,\n apiMethodInstanceId,\n urlQueryParams = ''\n) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryInstance/${apiMethodInstanceId}${urlQueryParams}`,\n {\n method: 'post'\n },\n data\n );\n\nexport const executeQueryInstanceWithApiMethodInstance = async (\n data,\n urlQueryParams = ''\n) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryInstance${urlQueryParams}`,\n {\n method: 'post'\n },\n data\n );\n","import { Tenant } from '../types'\nimport { createContext } from 'react';\n\n\nexport const TenantContext = createContext<{tenantsList: Tenant[], activeTenant: Tenant, refresh: () => void} | null>(null);\n","import { useContext } from \"react\";\nimport { TenantContext } from \"./tenantContext\";\nimport { Tenant } from \"../types\";\n\nexport const useTenant = (): {activeTenant: Tenant, tenantsList: Tenant[], refresh: () => void} | null => {\n return useContext(TenantContext);\n}\n","import React, { useMemo } from 'react';\nimport { useUser } from '../../utilities/auth/useUser';\n// @ts-ignore\nimport { makeStyles } from '@material-ui/core';\nimport { useTenant } from '../../utilities/tenant/useTenant';\nimport { Typography } from '../../UI/dataDisplay/typography/Typography';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nexport const APP_RIBBON_SPACE = 25\n\nexport const useBuildEnvironment = (): string | undefined => {\n\tconst user = useUser()\n\n\tconst buildEnvironment = useMemo(() => {\n\n\t\tconst env = ConfigService.config.UNITY_ENVIRONMENT\n\n\t\tif(!['development', 'staging', 'production', 'build'].includes((env as string)?.toLowerCase()) || (env === 'production' && !user?.can?.CAN_VIEW_PROD_APP_RIBBON)) return undefined\n\n\t\treturn env?.toLowerCase();\n\n\n\t}, [user])\n\n\treturn buildEnvironment;\n};\n\nconst useStyles = makeStyles({\n root: {\n width: '100vw',\n height: APP_RIBBON_SPACE,\n backgroundColor: ({environment}: {environment: string | undefined}) => `var(--env-ribbon-${environment})`,\n color: '#ffffff', // Default white text\n display: 'flex',\n alignItems: 'center',\n position: 'relative',\n // Use CSS to handle staging text color\n '&.staging': {\n color: '#000000'\n }\n },\n\tcenterText: {\n position: 'absolute',\n left: '50%',\n transform: 'translateX(-50%)',\n fontWeight: 600\n\t},\n\trightText: {\n position: 'absolute',\n right: '10px',\n fontWeight: 500\n\t}\n});\n\nexport const EnvironmentRibbon = () => {\n\tconst tenantInfo = useTenant()\n\tconst buildEnvironment = useBuildEnvironment()\n\n const classes = useStyles({environment: buildEnvironment});\n if(!buildEnvironment) return null;\n\n return (\n <div\n className={`${classes.root} ${buildEnvironment === 'staging' ? 'staging' : ''}`}\n id='udp-environment-banner'\n >\n <Typography className={classes.centerText}>\n {buildEnvironment?.charAt(0).toUpperCase()+buildEnvironment?.slice(1) || ''}\n </Typography>\n\t\t\t<Typography className={classes.rightText}>\n {tenantInfo?.activeTenant?.tenantName}\n </Typography>\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import "./AmbientGridTemplate-BqlMt5Su.js";
2
- import "./SideSheet-DUsxG1FN.js";
3
- import "./EnvironmentRibbon-DaDmKAPO.js";
4
- import "./apiHelpers-DZots3og.js";
5
- import "./SearchUtilities-Bor3HbfB.js";
6
- import { MyExportsPage } from "./MyExportsPage-CX9tzqHk.js";
7
-
8
- export { MyExportsPage };
@@ -1 +0,0 @@
1
- {"version":3,"file":"PageContainer-k8KCfGsM.js","names":["result: [string, string, TeleporterInstance][]","useStyles","layout: Omit<Layout, 'i' | 'x' | 'y'>","uuid","ResponsiveGridLayout","useStyles","useStyles","useStyles","useStyles","useStyles","useStyles","FUISquareIconButton","FUICardHeader","useStyles","useStyles","theme","FUICard","FUIMenuItem","params","layouts","DashboardWidget","DashboardCardGrid","useStyles","useStyles","useStyles","currentTabList","result: [string, string, TeleporterInstance][]","useStyles","value","initialState: any","widgetParams","uuid","Page"],"sources":["../src/stores/teleporterStore.ts","../src/UI/inputs/buttons/ToolBarButton.jsx","../src/dashboard/getWidgetLayout.ts","../src/dashboard/DashboardCardGrid.jsx","../src/UI/surfaces/cards/FUICardHeader.jsx","../src/UI/inputs/buttons/FUISquareIconButton.jsx","../src/UI/surfaces/cards/FluentCard.jsx","../src/UI/surfaces/cards/FluentCardContent.jsx","../src/UI/surfaces/cards/FluentCardActions.jsx","../src/UI/surfaces/cards/FUICard.jsx","../src/UI/widgets/FluentComponents/FUIMenuItem.jsx","../src/dashboard/WidgetCard.jsx","../src/dashboard/DashboardWidget.jsx","../src/page/Page.jsx","../src/UI/inputs/buttons/AmbientPopoverMenuItem.jsx","../src/UI/utilityDisplay/utilityHeader/ui/PAHExport.jsx","../src/UI/navigation/tabs/UdpTabs.jsx","../src/UI/utilityDisplay/utilityHeader/ui/teleporter.ts","../src/UI/utilityDisplay/utilityHeader/PrimaryActionHeader.jsx","../src/contexts/PageContext.tsx","../src/hooks/useSetLocationState.js","../src/page/PageContainer.jsx"],"sourcesContent":["import { create } from 'zustand';\nimport { createTeleporter } from 'react-teleporter';\n\ntype TeleporterInstance = ReturnType<typeof createTeleporter>;\n\ntype LocationEntry = {\n teleporter: TeleporterInstance;\n};\n\ntype TeleporterMap = Map<string, Map<string, LocationEntry>>;\n\ninterface TeleporterStore {\n teleporterMap: TeleporterMap;\n getTeleporter: (targetId: string, location: string) => TeleporterInstance;\n getAllTeleporters: () => [string, string, TeleporterInstance][];\n}\n\nexport const useTeleporterStore = create<TeleporterStore>((set, get) => ({\n teleporterMap: new Map(),\n\n getTeleporter: (targetId = '', location) => {\n const mapCopy = new Map(get().teleporterMap); // clone to maintain reactivity\n let locationMap = mapCopy.get(targetId);\n\n if (!locationMap) {\n locationMap = new Map();\n mapCopy.set(targetId, locationMap);\n }\n\n if (!locationMap.has(location)) {\n locationMap.set(location, {\n teleporter: createTeleporter()\n });\n }\n\n const teleporter = locationMap.get(location)!.teleporter;\n\n // Update store\n set({ teleporterMap: mapCopy });\n\n return teleporter;\n },\n\n getAllTeleporters: () => {\n const result: [string, string, TeleporterInstance][] = [];\n const map = get().teleporterMap;\n\n for (const [targetId, locationMap] of map.entries()) {\n for (const [location, entry] of locationMap.entries()) {\n result.push([targetId, location, entry.teleporter]);\n }\n }\n\n return result;\n }\n}));\n","import { ButtonBase, makeStyles, Tooltip, Typography } from '@material-ui/core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {\n borderBottom: (props) =>\n props.selected && `2px solid ${theme.palette.secondary.main}`\n },\n wrapper: {\n display: 'flex',\n flexDirection: 'row',\n marginRight: theme.spacing(2)\n },\n icon: {\n fontSize: 16,\n width: 16,\n height: 16,\n color: theme.palette.secondary.main\n },\n iconWrapper: {\n background: theme.palette.common.white,\n borderRadius: 100,\n padding: theme.spacing(1)\n },\n label: {\n marginLeft: theme.spacing(1),\n fontSize: '0.875rem',\n '&:hover': { color: theme.palette.secondary.main }\n }\n }),\n { name: 'ToolBarButton' }\n);\n\nexport const ToolBarButton = (props) => {\n const classes = useStyles(props);\n const {\n component: ToolBarComponent,\n click,\n label,\n expanded,\n aria,\n icon = true,\n disabled = false\n } = props;\n\n return (\n <Tooltip\n title={(expanded && label) || aria || ''}\n aria-label={label}\n placement='top'\n enterDelay={!expanded && 5000}\n >\n <ButtonBase\n classes={{\n root: classes.root\n // label: classes.label\n }}\n className={classes.wrapper}\n onClick={click}\n disableRipple\n aria-label={aria}\n disabled={disabled}\n >\n {icon && (\n <div className={classes.iconWrapper}>\n <ToolBarComponent className={classes.icon} />\n </div>\n )}\n\n <Typography variant='body2' className={classes.label}>\n {!expanded && label}\n </Typography>\n </ButtonBase>\n </Tooltip>\n );\n};\n\nToolBarButton.propTypes = {\n component: PropTypes.func,\n click: PropTypes.func,\n label: PropTypes.string,\n expanded: PropTypes.bool,\n aria: PropTypes.string,\n icon: PropTypes.bool\n};\n","import { Layout } from 'react-grid-layout';\nimport { LayoutDimension } from './types';\n\nconst getW = (\n w: LayoutDimension | undefined\n): Pick<Layout, 'w' | 'minW' | 'maxW'> => {\n if (typeof w === 'object') {\n return {\n w: w.default,\n minW: w.min,\n maxW: w.max\n };\n }\n\n if (typeof w === 'number') {\n return { w };\n }\n\n return { w: 2 };\n};\n\nconst getH = (\n h: LayoutDimension | undefined\n): Pick<Layout, 'h' | 'minH' | 'maxH'> => {\n if (typeof h === 'object') {\n return {\n h: h.default,\n minH: h.min,\n maxH: h.max\n };\n }\n\n if (typeof h === 'number') {\n return { h };\n }\n\n return { h: 2 };\n};\n\n/**\n * Get a default layout for widgets of a type\n */\nexport default function getWidgetLayout(\n getWidget: Function,\n widgetType: string\n): Omit<Layout, 'i' | 'x' | 'y'> {\n const { w, h } = (getWidget && getWidget(widgetType)?.layout) ?? {};\n\n const layout: Omit<Layout, 'i' | 'x' | 'y'> = {\n ...getW(w),\n ...getH(h)\n };\n\n const wResizable = 'minW' in layout || 'maxW' in layout;\n const hResizable = 'minH' in layout || 'maxH' in layout;\n layout.isResizable = wResizable || hResizable;\n\n return layout;\n}\n","import { v4 as uuid } from 'uuid';\nimport React, { useCallback, useMemo, useRef } from 'react';\nimport { Responsive as ResponsiveGridLayout } from 'react-grid-layout';\nimport { makeStyles, useTheme } from '@material-ui/core';\nimport { useMeasure } from 'react-use';\nimport 'react-grid-layout/css/styles.css';\nimport 'react-resizable/css/styles.css';\nimport { useDragLayer } from 'react-dnd';\nimport getWidgetLayout from './getWidgetLayout.ts';\nimport { useShellStore } from '../stores/shellStore';\n\nconst useStyle = makeStyles(\n (theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n height: '100%',\n marginBottom: (props) => (props?.disableMargin ? '' : theme.spacing(3))\n }\n }),\n { name: 'DashboardCardGrid' }\n);\n\nconst DASHBOARD_WIDGET = Symbol('DASHBOARD_WIDGET');\n\nconst breakpoints = {\n xs: 0,\n xl: 1150\n};\n\nconst breakpointCols = {\n xs: 4,\n xl: 4\n};\n\n/**\n * Grid layout for dashboard cards\n */\nconst DashboardCardGrid = (props) => {\n const classes = useStyle(props);\n const { children, onCreateCard, gridProperties, ...other } = props;\n const { getWidget } = useShellStore();\n const rglRef = useRef();\n const [ref, { width }] = useMeasure();\n const theme = useTheme();\n const { droppingWidgetType } = useDragLayer((monitor) => {\n if (monitor.getItemType() === DASHBOARD_WIDGET) {\n const { id: wigetType } = monitor.getItem();\n return { droppingWidgetType: wigetType };\n }\n\n return { droppingWidgetType: null };\n });\n const droppingItemLayout = useMemo(() => {\n if (droppingWidgetType) {\n return { i: uuid(), ...getWidgetLayout(getWidget, droppingWidgetType) };\n }\n }, [getWidget, droppingWidgetType]);\n\n const drag = useCallback((layout, oldLayoutItem, layoutItem, placeholder) => {\n // Cards larger than 1 should snap to columns that are a multiple of 2\n // if (layoutItem.w > 1) {\n // // @fixme This affects the visual placeholder, but doesn't actually fix the layout item when its dropped\n // placeholder.x = layoutItem.x = Math.floor(layoutItem.x / 2) * 2;\n // }\n }, []);\n\n const resize = useCallback(\n (layout, oldLayoutItem, layoutItem, placeholder) => {\n // Widths larger than 1 should be a multiple of 2\n // The small size of columns is just so we can have small 1x1 tiles that are 1/2 the size of normal cards\n // if (layoutItem.w > 1) {\n // const w = Math.floor(layoutItem.w / 2) * 3;\n // layoutItem.w = w;\n // placeholder.w = w;\n // }\n\n // There is no 3 (i.e. 6) column layout so don't allow cards to be that size either\n if (layoutItem.w >= 6 && layoutItem.w < 8) {\n layoutItem.w = 4;\n placeholder.w = 4;\n }\n },\n []\n );\n\n const drop = useCallback(\n (layout, item) => {\n if (droppingWidgetType) {\n const { x, y, w, h } = item;\n const { breakpoint } = rglRef.current.state;\n if (onCreateCard)\n onCreateCard({\n widgetType: droppingWidgetType,\n id: uuid(),\n layout: {\n [breakpoint]: {\n x,\n y,\n w,\n h\n }\n },\n params: []\n });\n }\n },\n [droppingWidgetType, onCreateCard]\n );\n\n return (\n <div ref={ref} className={classes.root}>\n {width ? (\n <ResponsiveGridLayout\n ref={rglRef}\n {...other}\n width={width}\n breakpoints={breakpoints}\n cols={breakpointCols}\n rowHeight={128}\n margin={[theme.spacing(3), theme.spacing(3)]}\n containerPadding={[0, 0]}\n draggableHandle='[data-handle]'\n onDrag={drag}\n onResize={resize}\n onDrop={drop}\n isDroppable={gridProperties?.isDroppable || false}\n isDraggable={gridProperties?.isDraggable || false}\n droppingItem={droppingItemLayout}\n style={{\n height: '100%'\n }}\n >\n {children}\n </ResponsiveGridLayout>\n ) : null}\n </div>\n );\n};\n\nexport default DashboardCardGrid;\n","import { makeStyles, Typography } from '@material-ui/core';\nimport clsx from 'clsx';\nimport React, { forwardRef } from 'react';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n minHeight: 40,\n paddingLeft: theme.spacing(2),\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n borderBottom: `1px solid ${theme.palette.divider}`,\n },\n title: {\n flexGrow: 1,\n },\n}));\n\nconst FUICardHeader = (props, ref) => {\n const classes = useStyles(props);\n const { className, children, headerActions, titleId, ...other } = props;\n\n return (\n <div ref={ref} {...other} className={clsx(className, classes.root)}>\n <Typography id={titleId} className={classes.title}>\n {children}\n </Typography>\n {headerActions}\n </div>\n );\n};\n\nexport default forwardRef(FUICardHeader);\n","import { IconButton, makeStyles } from '@material-ui/core';\nimport React from 'react';\n\nconst useStyles = makeStyles(\n theme => ({\n root: {\n borderRadius: 0,\n },\n }),\n { name: 'FUISquareIconButton' }\n);\n\n/**\n * <IconButton> but with a square highlight\n */\nconst FUISquareIconButton = props => {\n const classes = useStyles(props);\n return <IconButton {...props} classes={classes} />;\n};\n\nexport default FUISquareIconButton;\n","import React, { forwardRef } from 'react'\n\nimport { makeStyles, Card } from '@material-ui/core'\n\nconst useStyles = makeStyles(\n {\n root: {}\n },\n { name: 'FluentCard' }\n)\n\n/**\n * A variant of <Card> that uses a square Fluent UI card style\n */\nexport const FluentCard = forwardRef((props, ref) => {\n const classes = useStyles(props)\n const { children, ...other } = props\n\n return (\n <Card ref={ref} square {...other} classes={classes}>\n {children}\n </Card>\n )\n})\nFluentCard.displayName = 'FluentCard'\n","import React from 'react';\nimport { forwardRef } from 'react';\nimport { makeStyles, CardContent } from '@material-ui/core';\n\nconst useStyles = makeStyles(\n {\n root: {},\n },\n { name: 'FluentCardContent' }\n);\n\n/**\n * A variant of <CardContent> that uses a Fluent UI card style\n */\nexport const FluentCardContent = forwardRef((props, ref) => {\n const classes = useStyles(props);\n const { children, ...other } = props;\n\n return (\n <CardContent ref={ref} {...other} classes={classes}>\n {children}\n </CardContent>\n );\n});\nFluentCardContent.displayName = 'FluentCardContent';\n","import React from 'react';\nimport { forwardRef } from 'react';\nimport { makeStyles, CardActions } from '@material-ui/core';\n\nconst useStyles = makeStyles(\n {\n root: {},\n spacing: {},\n },\n { name: 'FluentCardActions' }\n);\n\n/**\n * A variant of <CardActions> that uses a Fluent UI card style\n */\nexport const FluentCardActions = forwardRef((props, ref) => {\n const classes = useStyles(props);\n const { children, ...other } = props;\n\n return (\n <CardActions ref={ref} {...other} classes={classes}>\n {children}\n </CardActions>\n );\n});\nFluentCardActions.displayName = 'FluentCardActions';\n","import { MoreIcon } from '@fluentui/react-icons'\nimport { Button, makeStyles, Menu } from '@material-ui/core'\nimport clsx from 'clsx'\nimport React, { forwardRef } from 'react'\nimport { FluentIcon } from '../../../utilities/FluentIcon'\nimport FUICardHeader from './FUICardHeader'\nimport FUISquareIconButton from '../../inputs/buttons/FUISquareIconButton'\nimport { FluentCard } from './FluentCard'\nimport { FluentCardContent } from './FluentCardContent'\nimport { FluentCardActions } from './FluentCardActions'\nimport useId from '../../widgets/utils/useId'\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column'\n },\n raised: {\n zIndex: 1\n },\n contentArea: {\n flex: '1 1 auto',\n minHeight: 0,\n display: 'flex',\n flexDirection: 'column'\n },\n cardActions: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'flex-start',\n paddingTop: theme.spacing(1),\n padding: theme.spacing(2)\n }\n }),\n { name: 'FUICard' }\n)\n\nexport let FUICardAction = (props, ref) => {\n const { children, ...other } = props\n\n return (\n <Button\n ref={ref}\n size='small'\n variant='contained'\n disableElevation\n {...other}\n >\n {children}\n </Button>\n )\n}\nFUICardAction = forwardRef(FUICardAction)\n\nexport let FUICardHeaderMenu = (props, ref) => {\n const { children } = props\n\n return (\n <div\n button={\n <FUISquareIconButton>\n <FluentIcon component={MoreIcon} size='small' />\n </FUISquareIconButton>\n }\n menu={<Menu>{children}</Menu>}\n />\n )\n}\nFUICardHeaderMenu = forwardRef(FUICardHeaderMenu)\n\nconst FUICard = (props, ref) => {\n const classes = useStyles()\n const {\n className,\n children,\n actions,\n title,\n headerActions,\n CardHeaderProps,\n CardProps,\n raised,\n name,\n ...cardProps\n } = props\n const id = useId(name, cardProps.id)\n const titleId = `${id}-title`\n\n return (\n <FluentCard\n ref={ref}\n component='section'\n aria-labelledby={titleId}\n {...cardProps}\n raised={raised}\n className={clsx(className, raised && classes.raised)}\n {...CardProps}\n classes={{ root: classes.root }}\n >\n <FUICardHeader\n titleId={titleId}\n headerActions={headerActions}\n {...CardHeaderProps}\n >\n {title}\n </FUICardHeader>\n <FluentCardContent className={classes.contentArea}>\n {children}\n </FluentCardContent>\n {actions && (\n <FluentCardActions className={classes.cardActions}>\n {actions}\n </FluentCardActions>\n )}\n </FluentCard>\n )\n}\n\nexport default forwardRef(FUICard)\n","import React, { forwardRef } from 'react'\nimport {\n MenuItem,\n ListItemIcon,\n ListItemText,\n makeStyles\n} from '@material-ui/core'\nimport { FluentIcon } from '../../../utilities/FluentIcon'\n\nconst useStyles = makeStyles(\n {\n listItemIcon: {\n minWidth: 32\n }\n },\n { name: 'FUIMenuItem' }\n)\n\n/**\n * <MenuItem> with icon support\n */\nconst FUIMenuItem = (props, ref) => {\n const classes = useStyles()\n const { icon, fluentIcon, primary, secondary, ...menuItemProps } = props\n\n return (\n <MenuItem ref={ref} dense {...menuItemProps}>\n <ListItemIcon className={classes.listItemIcon}>\n {icon || <FluentIcon component={fluentIcon} />}\n </ListItemIcon>\n <ListItemText {...{ primary, secondary }} />\n </MenuItem>\n )\n}\n\nexport default forwardRef(FUIMenuItem)\n","import { DeleteIcon } from '@fluentui/react-icons';\nimport { makeStyles, CircularProgress, lighten } from '@material-ui/core';\nimport clsx from 'clsx';\nimport React from 'react';\nimport FUICard, { FUICardHeaderMenu } from '../UI/surfaces/cards/FUICard';\nimport FUIMenuItem from '../UI/widgets/FluentComponents/FUIMenuItem';\n\n/**\n * Core component for dashboard widget cards\n */\nexport const WidgetCard = (props) => {\n const {\n children,\n headerActions,\n className,\n widgetType,\n id,\n layout,\n params,\n setParam,\n onDelete,\n loading,\n errors,\n theme,\n hideWidgetName,\n innerPadding,\n contentHeight,\n contentMaxHeight,\n ...other\n } = props;\n\n const useStyles = makeStyles((theme) => ({\n root: {\n '&.react-resizable-hide .react-resizable-handle': {\n display: 'none'\n }\n },\n darkRoot: {\n '&.react-resizable-hide .react-resizable-handle': {\n display: 'none'\n },\n background: '#424242',\n color: 'white'\n },\n anyRoot: {\n '& .MuiCardContent-root': {\n justifyContent: 'space-between',\n overflow: 'auto',\n padding: 0\n }\n },\n handle: {\n cursor: 'move',\n '&:hover': {\n backgroundColor: theme.palette.action.hover\n },\n display: hideWidgetName && 'none'\n },\n loadingContent: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center'\n },\n innerWidgetContentContainer: {\n height:\n widgetType === 'TransformerLoadWidget'\n ? 'auto'\n : contentHeight\n ? contentHeight\n : '100%',\n maxHeight: contentMaxHeight ? contentMaxHeight : '',\n minWidth: widgetType === 'ProgressBarWidget' ? 0 : 270,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n padding:\n innerPadding ||\n (widgetType === 'VEERegisterRead' ? 0 : theme.spacing(2))\n }\n }));\n const classes = useStyles();\n const raised = /(^|\\s)react-draggable-dragging(\\s|$)/.test(className ?? '');\n\n let body = children;\n if (loading && !body) {\n body = (\n <div className={classes.loadingContent}>\n <CircularProgress size={64} />\n </div>\n );\n }\n if (errors && !body) {\n body = <div>Unexpected error</div>;\n }\n\n return (\n <FUICard\n {...other}\n className={clsx(\n className,\n theme === 'dark' ? classes.darkRoot : classes.root,\n classes.anyRoot\n )}\n raised={raised}\n CardHeaderProps={{\n className: classes.handle,\n 'data-handle': true\n }}\n headerActions={\n <>\n {headerActions}\n <FUICardHeaderMenu>\n <FUIMenuItem\n onClick={onDelete}\n fluentIcon={DeleteIcon}\n primary='Delete'\n />\n </FUICardHeaderMenu>\n </>\n }\n >\n <div className={classes.innerWidgetContentContainer}>{body}</div>\n </FUICard>\n );\n};\n","import React, { memo, useCallback, useMemo } from 'react';\nimport { WidgetCard } from './WidgetCard';\nimport { useShellStore } from '../stores/shellStore';\n\n/**\n * Widget implementation for dashboards\n */\nlet DashboardWidget = (props) => {\n const {\n widgetType,\n id,\n deleteCard,\n children,\n params: paramValues,\n setParams,\n ...other\n } = props;\n const { getWidget, isValidWidget } = useShellStore();\n const onDelete = useCallback(() => {\n deleteCard(id);\n }, [deleteCard, id]);\n\n const { Widget, params: paramDefs } = useMemo(() => {\n if (!isValidWidget || !getWidget) {\n return {};\n }\n if (isValidWidget(widgetType) && getWidget) {\n return getWidget(widgetType);\n }\n\n return {};\n }, [widgetType, getWidget, isValidWidget]);\n\n const params = useMemo(() => {\n const params = {};\n if (paramDefs) {\n for (const name in paramDefs) {\n params[name] = paramDefs[name].defaultValue;\n }\n for (const param in paramValues) {\n params[param] = paramValues[param];\n }\n }\n\n return params;\n }, [paramDefs, paramValues]);\n const setParam = useCallback(\n (name, value) => setParams(id, { [name]: value }),\n [id, setParams]\n );\n\n if (!isValidWidget || !getWidget) {\n return (\n <WidgetCard {...other} title='Error'>\n isValidWidget or getWidget functions are not defined\n </WidgetCard>\n );\n }\n\n if (!Widget) {\n return (\n <WidgetCard {...other} title='Error'>\n Unknown widget type \"{widgetType}\".\n </WidgetCard>\n );\n } else {\n return (\n <Widget\n {...other}\n id={id}\n params={params}\n setParam={setParam}\n onDelete={onDelete}\n >\n {children}\n </Widget>\n );\n }\n};\n\nexport default memo(DashboardWidget);\n","import React, { useMemo } from 'react';\nimport DashboardCardGrid from '../dashboard/DashboardCardGrid';\nimport DashboardWidget from '../dashboard/DashboardWidget';\nimport getWidgetLayout from '../dashboard/getWidgetLayout.ts';\nimport { useShellStore } from '../stores/shellStore';\n\nconst Page = (props) => {\n const { gridConfig, widgetConfig, disableMargin } = props;\n const { getWidget, isValidWidget } = useShellStore();\n const gridProperties = gridConfig ? JSON.parse(gridConfig) : null;\n let widgets = widgetConfig || null;\n\n if (typeof widgetConfig === 'string') {\n widgets = JSON.parse(widgetConfig);\n }\n\n const calculateLayouts = () => {\n if (!widgets) return null;\n\n const layouts = {};\n for (const widget of widgets) {\n for (const breakpoint in widget.layout) {\n if (breakpoint === '__typename' || !widget.layout[breakpoint]) continue;\n layouts[breakpoint] = layouts[breakpoint] || [];\n const { __typename, ...layout } = widget.layout[breakpoint];\n layouts[breakpoint].push({\n ...getWidgetLayout(getWidget, widget.widgetType),\n isResizable: widget.params.isResizable || false,\n ...layout,\n i: widget.id\n });\n }\n }\n\n return layouts;\n };\n\n const layouts = useMemo(\n () => calculateLayouts(),\n [calculateLayouts, widgetConfig]\n );\n\n const cards = useMemo(\n () =>\n widgets &&\n widgets.map(({ __typename, ...widget }) => (\n <DashboardWidget key={widget.id} {...widget} />\n )),\n [widgets]\n );\n\n if (!layouts) return null;\n\n return (\n <DashboardCardGrid\n layouts={layouts}\n gridProperties={gridProperties}\n disableMargin={disableMargin}\n >\n {cards}\n </DashboardCardGrid>\n );\n};\nexport default Page;\n","import React from 'react'\nimport { makeStyles, Divider } from '@material-ui/core'\nimport { ToolBarButton } from './ToolBarButton'\nimport { LayoutUnit } from '../../../layout/LayoutUnit'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n paddingLeft: theme.spacing(1)\n }\n}))\n\nexport const AmbientPopoverMenuItem = ({ label, component, click }) => {\n const classes = useStyles()\n\n return (\n <div className={classes.root}>\n <LayoutUnit unit='nudge' />\n <ToolBarButton label={label} component={component} click={click} icon={false} />\n <LayoutUnit unit='nudge' />\n <Divider />\n </div>\n )\n}\n","import React, { useState } from 'react';\nimport { makeStyles, Popover } from '@material-ui/core';\nimport {\n ArrowUpRightIcon,\n PDFIcon,\n ExcelDocumentIcon,\n TextDocumentIcon\n} from '@fluentui/react-icons';\nimport { AmbientPopoverMenuItem } from '../../../inputs/buttons/AmbientPopoverMenuItem';\nimport { FluentIconButton } from '../../../inputs/buttons/FluentIconButton';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n popoverRoot: {},\n icon: {\n color: theme.palette.secondary.main\n }\n}));\n\nexport const PAHExport = ({ exportCSV, exportExcel, exportPDF }) => {\n const classes = useStyles();\n\n const [anchorEl, setAnchorEl] = useState(null);\n\n const handleClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const open = Boolean(anchorEl);\n const id = open ? 'simple-popover' : undefined;\n\n const gridControlsExport = [\n {\n label: 'Export CSV',\n component: TextDocumentIcon,\n click: exportCSV,\n key: 1\n },\n {\n label: 'Export Excel',\n component: ExcelDocumentIcon,\n click: exportExcel,\n key: 2\n }\n ];\n\n // if (exportPDF) {\n // gridControlsExport.push({\n // label: 'Export PDF',\n // component: PDFIcon,\n // click: exportPDF,\n // key: 3\n // });\n // }\n\n return (\n <div className={classes.root}>\n <FluentIconButton\n className={classes.icon}\n icon={ArrowUpRightIcon}\n onClick={handleClick}\n />\n\n <Popover\n classes={{ root: classes.popoverRoot }}\n square\n elevation={1}\n id={id}\n open={open}\n anchorEl={anchorEl}\n onClose={handleClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left'\n }}\n >\n <div style={{ width: 140 }}>\n <div>\n {gridControlsExport.map((item) => {\n return (\n <AmbientPopoverMenuItem\n label={item.label}\n component={item.component}\n click={item.click}\n />\n );\n })}\n </div>\n </div>\n </Popover>\n </div>\n );\n};\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useState,\n useRef,\n createRef\n} from 'react';\nimport {\n makeStyles,\n MenuItem,\n Typography,\n Popover,\n ButtonBase,\n Badge,\n IconButton\n} from '@material-ui/core';\nimport { FluentIcon } from '../../../utilities/FluentIcon';\nimport clsx from 'clsx';\nimport { MoreVerticalIcon } from '@fluentui/react-icons';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexSkrink: 0,\n overflow: 'hidden'\n },\n tabsWrapper: {\n display: 'flex',\n gap: (props) => (props?.variant === 'block' ? theme.spacing(1) : null),\n flexGrow: 1\n },\n tab: {\n padding: `8px 18px`,\n flex: 1\n },\n blockTab: {\n backgroundColor: theme.palette.background.paper\n },\n activeTab: {\n borderBottom: (props) =>\n props?.variant === 'block'\n ? null\n : `2px solid ${theme.palette.secondary.main}`,\n backgroundColor: (props) =>\n props?.variant === 'block' ? theme.palette.secondary.light : null,\n color: (props) =>\n props?.variant === 'block'\n ? theme.palette.getContrastText(theme.palette.secondary.light)\n : null\n },\n moreButton: {\n marginTop: theme.spacing(1),\n width: theme.spacing(1),\n height: theme.spacing(1),\n borderRadius: 2\n },\n menuItem: {\n whiteSpace: 'normal',\n width: (props) => (props?.menuWidth ? props?.menuWidth : '170px')\n },\n popoverWrapper: {\n maxHeight: (props) =>\n props?.menuMaxHeight ? props?.menuMaxHeight : '250px'\n }\n}));\n\nexport const UdpTabs = (props) => {\n const {\n value,\n onChange,\n className,\n menuItemProps,\n tabList,\n variant,\n buttonWidth\n } = props;\n const classes = useStyles(props);\n const tabContainerRef = useRef(null);\n const innerTabContainerRef = useRef(null);\n const [anchorEl, setAnchorEl] = useState(null);\n const [visibleTabList, setVisibleTabList] = useState(null);\n const [menuTabList, setMenuTabList] = useState(null);\n const [initialTotalTabWidth, setInitialTotalTabWidth] = useState(null);\n const [initialTabWidth, setInitialTabWidth] = useState();\n const gapWidth = 8;\n const open = Boolean(anchorEl);\n\n const currentTabList = useMemo(() => {\n return tabList?.map((tab, index) => ({\n id: index,\n ...tab,\n ref: createRef()\n }));\n }, [tabList]);\n\n const handlePopoverClick = useCallback((event, index) => {\n setAnchorEl(event.currentTarget);\n }, []);\n\n const handlePopoverClose = () => {\n setAnchorEl(null);\n };\n\n const menuItemSelected = useMemo(() => {\n return !!menuTabList?.find((tab) => tab?.id === value);\n }, [value, menuTabList]);\n\n const getInitialTabWidth = useCallback(\n (tabsElements, currentTabList) => {\n let totalTabWidth = 0;\n let tabWidth = [];\n\n if (\n tabsElements?.length === currentTabList?.length &&\n !initialTotalTabWidth\n ) {\n for (let i = 0; i < tabsElements.length; i++) {\n totalTabWidth += tabsElements[i].clientWidth;\n if (variant === 'block') {\n totalTabWidth += gapWidth;\n }\n tabWidth[i] = tabsElements[i].clientWidth;\n }\n setInitialTotalTabWidth(totalTabWidth);\n setInitialTabWidth(tabWidth);\n\n return { totalTabWidth, tabWidth };\n }\n\n return { totalTabWidth: initialTotalTabWidth, tabWidth: initialTabWidth };\n },\n [initialTabWidth, initialTotalTabWidth, variant]\n );\n\n const calculateHiddenTabs = useCallback(() => {\n if (innerTabContainerRef.current) {\n const containerWidth = innerTabContainerRef.current.clientWidth;\n const tabsElements = Array.from(innerTabContainerRef.current.children);\n const moreBtnWidth = 24;\n let hiddenTabsArray = [];\n let visibleTabsArray = Array.from(currentTabList);\n const { totalTabWidth, tabWidth } = getInitialTabWidth(\n tabsElements,\n currentTabList\n );\n\n if (totalTabWidth > containerWidth) {\n let accumulatedWidth = 0;\n for (let i = 0; i < tabWidth?.length; i++) {\n accumulatedWidth += tabWidth[i];\n if (variant === 'block') {\n accumulatedWidth += gapWidth;\n }\n\n if (accumulatedWidth > containerWidth - moreBtnWidth) {\n hiddenTabsArray = Array.from(currentTabList).slice(i);\n visibleTabsArray = Array.from(currentTabList).slice(0, i);\n break;\n }\n }\n }\n setVisibleTabList(visibleTabsArray);\n setMenuTabList(hiddenTabsArray);\n }\n }, [currentTabList, getInitialTabWidth, variant]);\n\n useEffect(() => {\n // initial visible tab list\n setVisibleTabList(currentTabList);\n }, [currentTabList]);\n\n useEffect(() => {\n calculateHiddenTabs();\n\n const observer = new ResizeObserver((entries) => {\n handlePopoverClose();\n calculateHiddenTabs();\n });\n\n if (tabContainerRef.current) {\n observer.observe(tabContainerRef.current);\n }\n\n // Cleanup observer on component unmount\n return () => {\n observer.disconnect();\n };\n }, [calculateHiddenTabs]);\n\n return (\n <div>\n <div className={clsx(classes.root, className)} ref={tabContainerRef}>\n <div\n className={classes.tabsWrapper}\n ref={innerTabContainerRef}\n style={\n variant === 'spread' ? { justifyContent: 'space-between' } : null\n }\n >\n {visibleTabList?.map((item, index) => (\n <ButtonBase\n // style={variant === 'spread' ? { flex: 1 } : null}\n style={{\n flex: variant === 'spread' && 1,\n width: !!buttonWidth && buttonWidth\n }}\n key={index}\n id={\n 'udpRecord-UdpTabs-MenuItem-' + item?.label?.replace(/ /g, '-')\n }\n udprecordid={\n 'udpRecord-UdpTabs-MenuItem-' + item?.label?.replace(/ /g, '-')\n }\n >\n <div\n className={clsx(classes.tab, {\n [classes.blockTab]: variant === 'block',\n [classes.activeTab]: value === item?.id\n })}\n onClick={(e) => {\n onChange(e, item?.id);\n if (item?.onClick) {\n item.onClick();\n }\n setAnchorEl(null);\n }}\n >\n <Typography\n noWrap\n style={{\n fontWeight: variant === 'spread' ? 'bold' : 'normal'\n }}\n >\n {item?.label}\n </Typography>\n </div>\n </ButtonBase>\n ))}\n {menuTabList?.length > 0 && (\n <IconButton\n onClick={handlePopoverClick}\n className={classes.moreButton}\n color='primary'\n id='udpRecord-UdpTabs-MoreActions'\n udprecordid='udpRecord-UdpTabs-MoreActions'\n >\n <Badge\n color='secondary'\n variant='dot'\n invisible={menuItemSelected === false}\n >\n <FluentIcon component={MoreVerticalIcon} size='medium' />\n </Badge>\n </IconButton>\n )}\n </div>\n\n {!!menuTabList?.length && (\n <div>\n <Popover\n id='menuTabList'\n open={open}\n anchorEl={anchorEl}\n onClose={handlePopoverClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left'\n }}\n className={classes.popoverWrapper}\n >\n {menuTabList?.map((tab) => {\n return (\n <MenuItem\n key={tab?.id}\n id={\n 'udpRecord-UdpTabs-MenuItem-' +\n tab?.label?.replace(/ /g, '-')\n }\n udprecordid={\n 'udpRecord-UdpTabs-MenuItem-' +\n tab?.label?.replace(/ /g, '-')\n }\n onClick={(e) => {\n if (tab?.onClick) {\n tab.onClick();\n }\n\n if (onChange) {\n onChange(e, tab?.id);\n }\n setAnchorEl(null);\n }}\n className={clsx(classes.menuItem, className)}\n selected={tab?.id === value}\n {...menuItemProps}\n >\n <Typography>{tab?.label}</Typography>\n </MenuItem>\n );\n })}\n </Popover>\n </div>\n )}\n </div>\n </div>\n );\n};\n","import { useMemo } from 'react';\n// @ts-ignore - TeleporterInstance type may not be exported\nimport { TeleporterInstance } from 'react-teleporter';\nimport { useTeleporterStore } from '../../../../stores/teleporterStore';\n\nexport const useAllTeleporters = (): [string, string, TeleporterInstance][] => {\n const teleporterMap = useTeleporterStore((state) => state.teleporterMap);\n\n const allTeleporters = useMemo(() => {\n const result: [string, string, TeleporterInstance][] = [];\n\n for (const [targetId, locationMap] of teleporterMap.entries()) {\n for (const [location, entry] of locationMap.entries()) {\n result.push([targetId, location, entry.teleporter]);\n }\n }\n\n return result;\n }, [teleporterMap]);\n\n return allTeleporters;\n};\n","import React, { useState, Fragment, useMemo } from 'react';\nimport {\n makeStyles,\n Slide,\n Typography,\n Collapse,\n Divider,\n LinearProgress,\n lighten\n} from '@material-ui/core';\nimport { StandardTitle } from '../../dataDisplay/typography/StandardTitle';\nimport { FluentIconButton } from '../../inputs/buttons/FluentIconButton';\nimport {\n SearchIcon,\n ChevronRightIcon,\n MaximumValueIcon,\n ChevronFold10Icon,\n ChevronUnfold10Icon,\n GroupListIcon,\n FilterIcon,\n MoreVerticalIcon,\n SaveIcon,\n DeleteIcon,\n ClearIcon\n} from '@fluentui/react-icons';\nimport { ToolBarButton } from '../../inputs/buttons/ToolBarButton';\nimport { PrimaryActionButton } from '../../inputs/buttons/PrimaryActionButton';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport ArrowBackIcon from '@material-ui/icons/ArrowBack';\nimport { PAHExport } from './ui/PAHExport';\nimport { StatusChip } from '../../dataDisplay/StatusChip';\nimport { useShellStore } from '../../../stores/shellStore';\nimport { UdpTabs } from '../../navigation/tabs/UdpTabs';\nimport { useAllTeleporters } from './ui/teleporter';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n [theme.breakpoints.between('xs', 'sm')]: {\n height: 50\n }\n },\n title: {\n margin: theme.spacing(2)\n },\n titleWrapper: {\n paddingLeft: theme.spacing(2),\n paddingRight: (props) => (props.single ? theme.spacing(2) : 0),\n display: 'flex',\n alignItems: 'center'\n },\n subHeaderWrapper: {\n // display: 'flex',\n // justifyContent: 'flex-end',\n // marginTop: props => props.single && 6,\n width: '100%',\n marginTop: 0,\n [theme.breakpoints.down('xs')]: {\n justifyContent: 'flex-start'\n }\n },\n subHeader: {\n minWidth: (props) => props.subheader && 320,\n marginLeft: theme.spacing(2),\n [theme.breakpoints.between('sm', 'lg')]: {\n display: 'none'\n },\n [theme.breakpoints.down('xs')]: {\n display: 'none'\n }\n },\n denseSubtitle: {\n marginTop: theme.spacing(1.2),\n marginLeft: theme.spacing(2)\n // [theme.breakpoints.up('xl')]: {\n // display: 'none'\n // },\n // [theme.breakpoints.down('xs')]: {\n // display: 'none'\n // }\n },\n actionRow: {\n display: 'flex',\n flex: 1,\n alignItems: 'center'\n // [theme.breakpoints.up('lg')]: {\n // width: '100%',\n // },\n // paddingBottom: props => props.hidePAB && theme.spacing(2),\n },\n secondaryButtons: {\n display: 'flex',\n [theme.breakpoints.down('sm')]: {\n display: 'none'\n },\n alignItems: 'center'\n },\n secondaryButtonsMobile: {\n display: 'flex',\n padding: theme.spacing(1),\n background: theme.palette.divider,\n [theme.breakpoints.up('sm')]: {\n display: 'none'\n }\n },\n search: {\n marginRight: theme.spacing(2),\n marginTop: theme.spacing(3),\n\n flex: 1\n },\n close: {\n marginRight: theme.spacing(2)\n },\n pab: {\n display: 'flex',\n [theme.breakpoints.between('xs', 'sm')]: {\n position: 'fixed',\n bottom: theme.spacing(2),\n right: theme.spacing(2),\n zIndex: theme.zIndex.appBar\n }\n },\n titleOnly: {\n paddingBottom: theme.spacing(1)\n },\n advancedOptions: {\n backgroundColor: '#EEEEEE',\n width: '100%'\n },\n tabPageButtons: {\n height: 50,\n borderTop: `1px solid ${theme.palette.divider}`,\n paddingLeft: theme.spacing(2),\n backgroundColor: '#EEEEEE'\n },\n divider: {\n height: 25,\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(2)\n },\n functionIcons: {\n fontSize: 18,\n color: theme.palette.secondary.main\n },\n tabRow: {\n maxWidth: 500,\n [theme.breakpoints.down('sm')]: {\n width: 300\n },\n minHeight: '48px'\n },\n fullTabs: {\n [theme.breakpoints.down('xl')]: {\n maxWidth: 700\n },\n [theme.breakpoints.down('lg')]: {\n maxWidth: 500\n },\n [theme.breakpoints.down('sm')]: {\n maxWidth: '100vw'\n },\n minHeight: '48px'\n },\n iconButton: {\n marginTop: 9,\n marginLeft: 4\n },\n titleWrapperBack: {\n display: 'flex',\n flex: (props) => props.title && 1\n },\n buttomButtonRow: {\n display: 'flex',\n width: '100%'\n },\n\n bottomButtonsLeft: {\n display: 'flex',\n flex: 1,\n // width: '100%',\n justifyContent: 'flex-start'\n },\n bottomButtonsRigth: {\n display: 'flex',\n justifyContent: 'flex-end'\n },\n single: {\n display: 'flex'\n },\n containerStyle: {\n background: lighten(theme.palette.secondary.light, 0.9),\n padding: theme.spacing(1),\n paddingLeft: theme.spacing(2),\n borderTop: `1px solid ${theme.palette.divider} `\n },\n gridControlLineUp: {\n display: 'flex',\n alignItems: 'center',\n marginRight: theme.spacing(2)\n },\n additionalTitleComponent: {\n marginLeft: theme.spacing(2)\n }\n}));\n\nexport const PrimaryActionHeader = (props) => {\n const classes = useStyles(props);\n\n const {\n buttonLabel,\n title,\n subheader,\n handleClick,\n secondaryButtons,\n hidePAB = false,\n search,\n searchField,\n expandOptions,\n handleMouseLeave,\n expandedContent,\n handleChange,\n value,\n tabList,\n tabs,\n resizeGrid,\n collapse,\n expandAllItems,\n groups,\n showGroups,\n grid,\n clickBack,\n topRowSecondary,\n bottomRowSecondary,\n bottomRowSecondaryRight,\n loading,\n openGroups,\n openFilter,\n altInputs,\n loadingVal,\n exportGrid,\n openSearch = false,\n styleSearch,\n stepper,\n pabDisabled,\n switcher,\n single,\n lowerTray,\n lowerTraySearch,\n lowerTrayGrid,\n upperTrayGrid,\n exportCSV,\n exportExcel,\n exportPDF,\n expand,\n expandGrid,\n collapseGrid,\n resize,\n gridApi,\n saveGridConfig,\n deleteGridConfig,\n clearGridConfig,\n hideActionRow = false,\n allowAdditionalTitleComponent = false,\n allowAdditionalRightComponent = true,\n StatusChipProps = null,\n tabProps,\n tabVariant,\n additionalComponentId = '',\n ...otherProps\n } = props;\n\n const [searchExpanded, setSearchExpanded] = useState(openSearch);\n const currentContainerId = useShellStore((state) => state.currentContainerId);\n const allTeleporters = useAllTeleporters();\n\n const expandSearch = () => {\n setSearchExpanded(!searchExpanded);\n };\n\n function a11yProps(index) {\n return {\n id: `simple-tab-${index}`,\n 'aria-controls': `simple-tabpanel-${index}`\n };\n }\n\n const gridControlsExpand = [\n {\n label: '',\n aria: 'expand',\n component: ChevronUnfold10Icon,\n click: expandGrid,\n id: 1\n }\n ];\n const gridControlsResize = [\n {\n label: '',\n aria: 'resize',\n component: MaximumValueIcon,\n click: resizeGrid,\n id: 2\n }\n ];\n const gridControlsCollapse = [\n {\n label: '',\n aria: 'collapse',\n component: ChevronFold10Icon,\n click: collapseGrid,\n id: 3\n }\n ];\n\n const gridControlsGroup = [\n {\n label: 'Group',\n component: GroupListIcon,\n click: openGroups,\n id: 4\n }\n ];\n const gridControlsFilter = [\n {\n label: 'Filter',\n component: FilterIcon,\n click: openFilter,\n id: 5\n }\n ];\n\n const gridControlsSave = [\n {\n label: 'Save Grid Configuration',\n component: SaveIcon,\n click: saveGridConfig,\n id: 6\n }\n ];\n const gridControlsDelete = [\n {\n label: 'Delete Grid Configuration',\n component: DeleteIcon,\n click: deleteGridConfig,\n id: 7\n }\n ];\n const gridControlsClear = [\n {\n label: 'Clear Grid Configuration',\n component: ClearIcon,\n click: clearGridConfig,\n id: 8\n }\n ];\n\n const gridControlsExport = (\n <div>\n <PAHExport\n exportCSV={exportCSV || (() => gridApi?.exportDataAsCsv())}\n exportExcel={exportExcel || (() => gridApi?.exportDataAsExcel())}\n exportPDF={exportPDF}\n />\n </div>\n );\n const gridControlExpand = gridControlsExpand && (\n <div>\n {gridControlsExpand.map((item) => {\n return (\n <ToolBarButton\n label={item.label}\n title={item.label}\n expanded={true}\n component={item.component}\n click={item.click}\n aria={item.aria}\n key={item.id}\n />\n );\n })}\n </div>\n );\n const gridControlResize = gridControlsResize && (\n <div>\n {gridControlsResize.map((item) => {\n return (\n <ToolBarButton\n label={item.label}\n title={item.label}\n expanded={true}\n component={item.component}\n click={item.click}\n aria={item.aria}\n key={item.id}\n />\n );\n })}\n </div>\n );\n const gridControlCollapse = gridControlsCollapse && (\n <div>\n {gridControlsCollapse.map((item) => {\n return (\n <ToolBarButton\n label={item.label}\n title={item.label}\n expanded={true}\n component={item.component}\n click={item.click}\n aria={item.aria}\n key={item.id}\n />\n );\n })}\n </div>\n );\n const gridControlSave = gridControlsSave && (\n <div>\n {gridControlsSave.map((item) => {\n return (\n <ToolBarButton\n label={item.label}\n title={item.label}\n expanded={true}\n component={item.component}\n click={item.click}\n aria={item.aria}\n key={item.id}\n />\n );\n })}\n </div>\n );\n const gridControlDelete = gridControlsDelete && (\n <div>\n {gridControlsDelete.map((item) => {\n return (\n <ToolBarButton\n label={item.label}\n title={item.label}\n expanded={true}\n component={item.component}\n click={item.click}\n aria={item.aria}\n key={item.id}\n />\n );\n })}\n </div>\n );\n const gridControlClear = gridControlsClear && (\n <div>\n {gridControlsClear.map((item) => {\n return (\n <ToolBarButton\n label={item.label}\n title={item.label}\n expanded={true}\n component={item.component}\n click={item.click}\n aria={item.aria}\n key={item.id}\n />\n );\n })}\n </div>\n );\n\n const searchToggle = (\n <>\n <div style={{ display: 'flex' }}>\n {searchExpanded && (\n <FluentIconButton\n click={expandSearch}\n aria-label='close search'\n className={classes.close}\n icon={ChevronRightIcon}\n onClick={expandSearch}\n size='small'\n />\n )}\n </div>\n <div className={classes.search} style={{ flex: 1 }}>\n <div>\n {searchExpanded && (\n <div>\n <Slide\n direction='left'\n in={expandSearch}\n mountOnEnter\n unmountOnExit\n >\n <div className={classes.searchWrapper}>{searchField}</div>\n </Slide>\n </div>\n )}\n </div>\n </div>\n </>\n );\n\n const LowerTrayShell = ({ children }) => {\n return <div className={classes.containerStyle}>{children}</div>;\n };\n\n const GridControlLineUp = () => {\n return (\n <div className={classes.gridControlLineUp}>\n {saveGridConfig && gridControlSave}\n {deleteGridConfig && gridControlDelete}\n {clearGridConfig && gridControlClear}\n {expandGrid && gridControlExpand}\n {resizeGrid && gridControlResize}\n {collapseGrid && gridControlCollapse}\n {exportGrid && gridControlsExport}\n </div>\n );\n };\n\n const additionalTitleTeleportedComponents = useMemo(() => {\n const components = [];\n allTeleporters.forEach(([targetId, location, teleporter]) => {\n const Target = teleporter.Target;\n if (\n targetId === additionalComponentId &&\n location === 'title'\n ) {\n components.push(\n <div key={targetId} className='teleport-target'>\n <Target />\n </div>\n );\n }\n })\n return components;\n }, [additionalComponentId, allTeleporters]);\n\n return (\n <div key={currentContainerId}>\n <div className={single && classes.single}>\n {/* {switcher && <PAHViewSwitcher>Meeting Title</PAHViewSwitcher>} */}\n <div className={classes.titleWrapperBack}>\n {clickBack && (\n <div className={classes.iconButton}>\n <FluentIconButton icon={ArrowBackIcon} onClick={clickBack} />\n </div>\n )}\n\n {title && (\n <div className={classes.root}>\n <div className={classes.titleWrapper}>\n <StandardTitle removeMarginTop={single}>{title}</StandardTitle>\n {single && subheader && (\n <Typography\n className={classes.denseSubtitle}\n variant='subtitle1'\n component='h2'\n >\n {subheader}\n </Typography>\n )}\n\n {allowAdditionalTitleComponent && (\n <div className={classes.additionalTitleComponent}>\n {additionalTitleTeleportedComponents.map(value => {\n return value;\n })}\n </div>\n )}\n </div>\n </div>\n )}\n {!title && allowAdditionalTitleComponent && (\n <div className={classes.additionalTitleComponent}>\n {additionalTitleTeleportedComponents.map(value => {\n return value;\n })}\n </div>\n )}\n {StatusChipProps && (\n <div className={classes.root}>\n <div className={classes.titleWrapper}>\n <StatusChip\n label={StatusChipProps?.label}\n status={StatusChipProps?.status}\n />\n </div>\n </div>\n )}\n </div>\n <div className={classes.subHeaderWrapper}>\n {/* <div className={classes.subHeader}>\n <Typography variant=\"subtitle1\">{subheader}</Typography>\n </div> */}\n {stepper}\n {!hideActionRow && (\n <div className={classes.actionRow}>\n {!single && subheader && (\n <Typography\n className={classes.denseSubtitle}\n variant='subtitle1'\n component='h2'\n >\n {subheader}\n </Typography>\n )}\n <div className={grid ? classes.tabRow : classes.fullTabs}>\n {tabList?.length > 0 && (\n <UdpTabs\n value={value}\n onChange={handleChange}\n tabList={tabList}\n variant={tabVariant}\n />\n )}\n </div>\n\n {search && searchToggle}\n <div style={{ flex: 1 }} />\n\n <div className={classes.secondaryButtons}>\n {!searchExpanded && search && (\n <ToolBarButton\n label='Search'\n component={SearchIcon}\n click={expandSearch}\n />\n )}\n {search && (\n <Divider orientation='vertical' className={classes.divider} />\n )}\n\n {/* {grid &&\n gridControls.map(item => {\n return (\n <ToolBarButton\n label={item.label}\n title={item.label}\n expanded\n component={item.component}\n click={item.click}\n aria={item.aria}\n key={item.id}\n />\n );\n })} */}\n {(expandGrid ||\n resizeGrid ||\n collapseGrid ||\n exportGrid ||\n saveGridConfig ||\n deleteGridConfig ||\n clearGridConfig) &&\n upperTrayGrid && <GridControlLineUp expand={expand} />}\n\n {grid &&\n openFilter &&\n gridControlsFilter.map((item) => {\n return (\n <ToolBarButton\n label={item.label}\n title={item.label}\n expanded={true}\n component={item.component}\n click={item.click}\n aria={item.aria}\n key={item.id}\n />\n );\n })}\n\n {grid &&\n openGroups &&\n gridControlsGroup.map((item) => {\n return (\n <ToolBarButton\n label={item.label}\n title={item.label}\n expanded={true}\n component={item.component}\n click={item.click}\n aria={item.aria}\n key={item.id}\n />\n );\n })}\n\n {/* {grid &&\n exportGrid &&\n gridControlsExport.map(item => {\n return (\n <ToolBarButton\n label={item.label}\n title={item.label}\n expanded\n component={item.component}\n click={item.click}\n aria={item.aria}\n key={item.id}\n />\n );\n })} */}\n\n {grid && searchExpanded && (\n <div>\n <FluentIconButton\n id='udpRecord-PrimaryActionHeader-ClosePanel'\n udprecordid='udpRecord-PrimaryActionHeader-ClosePanel'\n icon={MoreVerticalIcon}\n // onClick={toggleExpandedHeader}\n aria-label='Close Panel'\n />\n </div>\n )}\n\n {secondaryButtons &&\n !tabs &&\n secondaryButtons.map((item, index) => {\n return (\n <ToolBarButton\n label={item.label}\n expanded={searchExpanded}\n component={item.component}\n click={item.click}\n key={item.id ?? index}\n aria={item.label}\n disabled={item.disabled}\n />\n );\n })}\n </div>\n <div>\n {allowAdditionalRightComponent &&\n allTeleporters.map(([targetId, location, teleporter]) => {\n const Target = teleporter.Target;\n if (\n targetId === additionalComponentId &&\n location === 'right'\n ) {\n return (\n <div key={targetId} className='teleport-target'>\n <Target />\n </div>\n );\n } else {\n return null;\n }\n })}\n </div>\n {!hidePAB && (\n <div className={classes.pab}>\n {topRowSecondary &&\n topRowSecondary.map((item, index) => {\n return (\n <ToolBarButton\n label={item.label}\n expanded={searchExpanded}\n component={item.component}\n click={item.click}\n key={item.id ?? index}\n aria={item.label}\n />\n );\n })}\n\n <PrimaryActionButton\n disabled={pabDisabled}\n onClick={handleClick}\n {...otherProps}\n >\n {buttonLabel}\n </PrimaryActionButton>\n </div>\n )}\n </div>\n )}\n </div>\n\n <div\n className={clsx(\n classes.secondaryButtons,\n (altInputs || bottomRowSecondary) && classes.tabPageButtons\n )}\n >\n <div className={classes.buttomButtonRow}>\n <div className={classes.bottomButtonsLeft}>\n {bottomRowSecondary &&\n bottomRowSecondary.map((item, index) => {\n return (\n <ToolBarButton\n label={item.label}\n expanded={!tabs && searchExpanded}\n component={item.component}\n click={item.click}\n key={item.id ?? index}\n />\n );\n })}\n </div>\n <div className={classes.bottomButtonsRigth}>\n {bottomRowSecondaryRight &&\n bottomRowSecondaryRight.map((item, index) => {\n return (\n <ToolBarButton\n label={item.label}\n expanded={!tabs && searchExpanded}\n component={item.component}\n click={item.click}\n key={item.id ?? index}\n />\n );\n })}\n </div>\n\n {altInputs}\n </div>\n <div>\n {showGroups && <Divider />}\n {showGroups && groups}\n </div>\n </div>\n\n <Collapse in={expandOptions} timeout='auto'>\n <div onMouseLeave={handleMouseLeave}>\n {/* <div> */}\n <div className={classes.advancedOptions}>{expandedContent}</div>\n </div>\n </Collapse>\n {loading && <LinearProgress value={loadingVal} />}\n </div>\n {lowerTray && (\n <LowerTrayShell>\n <div style={{ display: 'flex', justifyContent: 'flex-end' }}>\n <div style={{ display: 'flex' }}>\n {!searchExpanded && lowerTraySearch && (\n <ToolBarButton\n label='Search'\n component={SearchIcon}\n click={expandSearch}\n />\n )}\n {searchToggle}\n </div>\n {lowerTrayGrid && <GridControlLineUp />}\n </div>\n </LowerTrayShell>\n )}\n\n <div className={classes.secondaryButtonsMobile}>\n {secondaryButtons &&\n !tabs &&\n secondaryButtons.map((item, index) => {\n return (\n <ToolBarButton\n label={item.label}\n expanded={searchExpanded}\n component={item.component}\n click={item.click}\n key={item.id ?? index}\n aria={item.label}\n disabled={item.disabled}\n />\n );\n })}\n </div>\n </div>\n );\n};\n\nPrimaryActionHeader.propTypes = {\n /**\n * Primary action button label\n */\n buttonLabel: PropTypes.string,\n /**\n * Page title\n */\n title: PropTypes.string.isRequired,\n /**\n * Page subtitle\n */\n subheader: PropTypes.string,\n /**\n * Primary action button function\n */\n handleClick: PropTypes.func,\n /**\n * prop for mapped secondary button data\n */\n secondaryButtons: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n component: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n click: PropTypes.func,\n key: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n })\n ),\n /**\n * Hides Primary Action Button (not recommended)\n */\n hidePAB: PropTypes.bool,\n /**\n * Allows search option to display\n */\n search: PropTypes.bool,\n /**\n * Search field designed to fit header space\n */\n searchField: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n /**\n * If true, expanded space for advanced search is open\n */\n expandOptions: PropTypes.func,\n /**\n * Function to close expanded space when the user mouse leaves\n */\n handleMouseLeave: PropTypes.string,\n /**\n * The contents of the expanded search\n */\n expandedContent: PropTypes.node,\n /**\n * Handle change option for tabs (when the tab prop is active)\n */\n handleChange: PropTypes.string,\n /**\n * Sends value that determines what tab content is visable (when the tab prop is active)\n */\n value: PropTypes.oneOfType([PropTypes.node, false]),\n /**\n * Prop to pass an array of tab lables to display tabs (when the tab prop is active)\n */\n tabList: PropTypes.node,\n /**\n * Prop option to display tabs. Tabs are available when true. Also provides additional formatting.\n */\n tabs: PropTypes.bool,\n /**\n * Click event to resize grid to fit (when using the PAH to display a grid).\n */\n resizeGrid: PropTypes.func,\n /**\n * Click event to collapse Ag Grid when grouped (when using the PAH to display a grid).\n */\n collapse: PropTypes.func,\n /**\n * Click event to expand Ag Grid when grouped (when using the PAH to display a grid).\n */\n expandAllItems: PropTypes.func,\n /**\n * Click event to save Ag Grid configurations (e.g. filters, sorting, column widths, etc.) when using the PAH to display a grid.\n */\n saveGridConfig: PropTypes.func,\n /**\n * Click event to delete Ag Grid configurations (e.g. filters, sorting, column widths, etc.) when using the PAH to display a grid.\n */\n deleteGridConfig: PropTypes.func,\n /**\n * Click event to clear Ag Grid configurations (e.g. filters, sorting, column widths, etc.) when using the PAH to display a grid.\n */\n clearGridConfig: PropTypes.func,\n /**\n * Prop that accepts a component of groups (when using the PAH to display a grid).\n */\n groups: PropTypes.node,\n /**\n * Prop option to display grid. Grid formatting is available when true.\n */\n grid: PropTypes.bool,\n /**\n * Prop option to display grid. Grid formatting is available when true.\n */\n otherProps: PropTypes.any,\n /**\n * Prop option to show secondary buttons on top row.\n */\n bottomRowSecondary: PropTypes.array,\n /**\n * Prop option to show secondary buttons on bottom row.\n */\n topRowSecondary: PropTypes.array,\n /**\n * Exposes onClick for back arrow. Only displays arrow when a function is provided.\n */\n clickBack: PropTypes.func,\n /**\n * Toggles visaiblity for loading progress bar.\n */\n loading: PropTypes.bool,\n /**\n * The value of progress loading.\n */\n loadingVal: PropTypes.number,\n /**\n * Exposes function to open group options.\n */\n openGroups: PropTypes.func,\n /**\n * Exposes function to open filter options.\n */\n openFilter: PropTypes.func,\n /**\n * Alternate method to include toolbar inputs.\n */\n altInputs: PropTypes.node,\n /**\n * If true, actionRow will be hidden\n */\n hideActionRow: PropTypes.bool,\n /**\n * Props passed into FluentSimpleTabs Component\n */\n tabProps: PropTypes.object,\n /**\n * Determines if the primary action header should be multiple rows\n */\n single: PropTypes.bool\n};\n\nPrimaryActionHeader.defaultProps = {\n hidePAB: false\n};\n","import React, { createContext, useReducer } from 'react';\n\nconst initialState: any = {};\n\n/**\n * The Page context, shared amongst the Page\n * and all children. Generally used to share state between\n * Widgets. Call dispatch() to update the state. Currently\n * only supports dispatch types of \"set <state_property>\".\n * Example: dispatch({ type: \"set mySharedProperty\", value: oldSharedProperty + 1 });\n */\nconst pageContext = createContext(\n {} as { state: any; dispatch: React.Dispatch<{ type: string; value?: any }> }\n);\nconst { Provider } = pageContext;\n\n/**\n * Sets shared state based on an action type and a value.\n * action.type is in the format: <operator> <prop>\n * Currently the only supported action type is \"set <prop>\",\n * which will set state.prop to action.value.\n * @param state The current state\n * @param action A type and value to alter the current state\n * @returns The new state\n */\nconst reducer = (state: any, action: { type: string; value?: any }) => {\n // Action.type should be in the format: <operator> <prop>. Ex: set sharedId\n const operator = action.type.substr(0, action.type.indexOf(' '));\n const prop = action.type.substr(action.type.indexOf(' ') + 1);\n\n switch (operator) {\n case 'set':\n const newState = { ...state, [prop]: action.value };\n return newState;\n default:\n throw new Error('Unknown operator');\n }\n};\n\n/**\n * A Context component to wrap around a Page. Allows\n * sharing of state amongst sibling Widgets.\n * @returns\n */\nconst PageContextProvider = ({ children }: any) => {\n const [state, dispatch] = useReducer(reducer, initialState);\n\n return <Provider value={{ state, dispatch }}>{children}</Provider>;\n};\n\nexport { pageContext, PageContextProvider };\n","import { useHistory, useLocation } from 'react-router-dom';\n\nexport const useSetLocationState = () => {\n const history = useHistory();\n const location = useLocation();\n\n const setLocationState = (newState) => {\n const currentState = location.state || {};\n\n // Avoid unnecessary replace if state is already the same\n const hasChanged = Object.entries(newState).some(\n ([key, value]) => currentState[key] !== value\n );\n if (!hasChanged || !!location?.state) return;\n\n history.replace({\n pathname: location.pathname,\n search: location.search,\n hash: location.hash,\n state: {\n ...currentState,\n ...newState\n }\n });\n };\n\n return setLocationState;\n};\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { Redirect } from 'react-router-dom';\nimport Page from './Page';\nimport { makeStyles, Card, CircularProgress } from '@material-ui/core';\nimport { Alert } from '@material-ui/lab';\nimport { PrimaryActionHeader } from '../UI/utilityDisplay/utilityHeader/PrimaryActionHeader';\nimport { PageContextProvider } from '../contexts/PageContext.tsx';\nimport { useAxiosGet } from '../utilities/useAxiosGet';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { v4 as uuid } from 'uuid';\nimport { useTranslation } from 'react-i18next';\nimport { useSetLocationState } from '../hooks/useSetLocationState';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: (props) => (props.disableMargins ? 0 : theme.spacing(3)),\n marginRight: (props) => (props.disableMargins ? 0 : theme.spacing(3)),\n marginLeft: (props) => (props.disableMargins ? 0 : theme.spacing(3)),\n height: (props) => props.height ?? '100%',\n overflow: (props) => props.height && 'auto'\n },\n staticRoot: {\n marginTop: 0,\n marginRight: 0,\n marginLeft: 0,\n height: (props) => props.height ?? '100%',\n overflow: (props) => props.height && 'auto'\n },\n title: {\n flex: 1,\n marginBottom: theme.spacing(1)\n },\n icon: {\n marginTop: theme.spacing(-2.5)\n },\n loadingContent: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n height: (props) =>\n props.loadingHeight ? props.loadingHeight : 'calc(100vh - 160px)'\n }\n}));\n\nexport const PageContainer = (props) => {\n const {\n user,\n widgetParams,\n redirectSlug,\n pageData,\n pageLoading = false,\n disableMargin = true,\n location,\n fromMenu = false,\n loadingHeight,\n isHomePage = false\n } = props;\n const classes = useStyles(props);\n const [page, setPage] = useState(null);\n const [alertWarnings, setAlertWarnings] = useState([]);\n const params = location?.state?.params;\n const pathPageId = location?.pathname?.replace('/page/', '');\n const pageId = (pathPageId === '/' ? null : pathPageId) || params?.PageId;\n const { t } = useTranslation();\n const setLocationState = useSetLocationState();\n\n const [{ data: pageInfo, loading: pageInfoLoading }] = useAxiosGet(\n ConfigService.tenantV1ApiUrl,\n `page/${pageId}`,\n {},\n !!!pageId,\n false\n );\n\n const [\n { data: homePage, loading: homePageLoading, error: homePageError },\n refetchHomePage\n ] = useAxiosGet(\n ConfigService.tenantV1ApiUrl,\n `page/homePage?tenantId=${user?.currentTenantId}&productId=${ConfigService.config.UNITY_PRODUCT_ID}`,\n {},\n !isHomePage,\n false\n );\n\n const removeWarning = useCallback((id) => {\n setAlertWarnings((prevWarnings) =>\n prevWarnings.filter((warning) => warning.id !== id)\n );\n }, []);\n\n const getRequiredFieldWarnings = useCallback(\n (requiredFields = '', widgetParams) => {\n const fieldsStr = requiredFields || '';\n if (!fieldsStr.trim()) {\n return;\n }\n\n const warnings = [];\n const requiredFieldsMap = widgetParams?.requiredFieldsMap || {};\n const nodeObj = widgetParams?.nodeObj || {};\n const fields = fieldsStr.split(',').map((str) => str.trim());\n const missingRequiredFieldNames = [];\n\n fields.forEach((fieldName) => {\n const requiredField = requiredFieldsMap[fieldName];\n if (!requiredField?.value) {\n missingRequiredFieldNames.push(fieldName);\n } else {\n if (\n requiredField.type === 'entity' &&\n (nodeObj[requiredField.value] === undefined ||\n nodeObj[requiredField.value] === null)\n ) {\n missingRequiredFieldNames.push(fieldName);\n }\n }\n });\n\n missingRequiredFieldNames.forEach((name) => {\n warnings.push({\n id: uuid(),\n message: `${name} ${t('field is missing a value')}`\n });\n });\n return warnings;\n },\n [t]\n );\n\n const pages = useMemo(\n () =>\n page?.widgets &&\n Object.keys(JSON.parse(page.widgets)).map((key) => {\n // Static Page\n const widgetStr = JSON.parse(page.widgets)[key];\n const widget = widgetStr ? JSON.parse(widgetStr) : null;\n if (widget?.length) {\n widget.forEach((w) => {\n // Add additional parameters from menu. Will get overwriten if\n // key exists in page widget parms\n if (pageId) {\n w.params = {\n entityName: params?.entityName,\n pbiReportCode: params?.pbiReportCode,\n queryId: params?.queryId,\n inquiryTreeId: params?.InquiryTreeId,\n udpTagId: params?.udpTagId,\n requiredFieldsMap: params?.requiredFieldMapping,\n ...w.params\n };\n }\n if (widgetParams) {\n w.params = { ...w.params, ...widgetParams };\n }\n });\n }\n return (\n <DndProvider\n backend={HTML5Backend}\n key={pageId ? `${key}-${params?.entityName}` : key}\n >\n <Page\n user={user}\n gridConfig={JSON.parse(page.gridProperties)[key]}\n widgetConfig={widget}\n disableMargin={disableMargin}\n />\n </DndProvider>\n );\n }),\n [page, user, widgetParams, disableMargin, pageId, params]\n );\n\n useEffect(() => {\n if (pageId) {\n if (pageInfo) {\n setPage(pageInfo);\n }\n } else if (homePage) {\n setPage(homePage);\n } else {\n setPage(pageData);\n }\n setAlertWarnings([]);\n }, [pageId, pageInfo, pageData, homePage]);\n\n useEffect(() => {\n if (page?.widgets) {\n let warnings = [];\n Object.keys(JSON.parse(page.widgets)).forEach((key) => {\n // Static Page\n const widgetStr = JSON.parse(page.widgets)[key];\n const widget = widgetStr ? JSON.parse(widgetStr) : null;\n if (widget?.length) {\n widget.forEach((w) => {\n // Add additional parameters from menu. Will get overwriten if\n // key exists in page widget parms\n if (pageId) {\n w.params = {\n entityName: params?.entityName,\n pbiReportCode: params?.pbiReportCode,\n queryId: params?.queryId,\n inquiryTreeId: params?.InquiryTreeId,\n udpTagId: params?.udpTagId,\n requiredFieldsMap: params?.requiredFieldMapping,\n ...w.params\n };\n }\n if (widgetParams) {\n w.params = { ...w.params, ...widgetParams };\n }\n // Adding condition to compare pageId's\n if (fromMenu || page?.pageId === widgetParams?.pageId) {\n warnings = getRequiredFieldWarnings(\n w.requiredParameters,\n w.params\n );\n }\n });\n }\n });\n setAlertWarnings(warnings);\n }\n }, [page, widgetParams, pageId, params, fromMenu, getRequiredFieldWarnings]);\n\n // Setting location state label so that if this page was saved to favorites\n // we can determine the bread crumb\n useEffect(() => {\n if (page) {\n setLocationState({ label: t(page?.name) });\n }\n }, [setLocationState, t, page]);\n\n if (redirectSlug && !pageData) {\n return <Redirect to={redirectSlug} />;\n }\n\n if (pageInfoLoading || pageLoading) {\n return (\n <div className={classes.loadingContent}>\n <CircularProgress size={loadingHeight || 64} />\n </div>\n );\n }\n\n return (\n <>\n {page?.showPageName && (\n <Card variant={'outlined'}>\n <PrimaryActionHeader title={page.name} hidePAB single />\n </Card>\n )}\n <div\n className={page?.pageTypeId === 1 ? classes.staticRoot : classes.root}\n >\n {alertWarnings?.length > 0 &&\n alertWarnings.map((warning) => (\n <Alert\n key={warning.id}\n onClose={() => removeWarning(warning.id)}\n severity='warning'\n >\n {warning.message || ''}\n </Alert>\n ))}\n <PageContextProvider>{pages}</PageContextProvider>\n </div>\n </>\n );\n};\n"],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { PageNotFoundRoute } from "./PageNotFoundRoute-CxYZNEhN.js";
2
-
3
- export { PageNotFoundRoute };
@@ -1,3 +0,0 @@
1
- import { PasswordResetRedirect } from "./PasswordResetRedirect-BHnkAW40.js";
2
-
3
- export { PasswordResetRedirect };
@@ -1 +0,0 @@
1
- {"version":3,"file":"SideSheet-DUsxG1FN.js","names":["isFocusableInput","getAllInputs","findInput","createDecorator","FinalForm","Form: React.FC<FormProps>","Field: FieldComponent","value","FinalField","name","enableAxiosInterceptors","useStyles"],"sources":["../src/utilities/form/final-form-scroll/isFocusableInput.js","../src/utilities/form/final-form-scroll/getAllInputs.js","../src/utilities/form/final-form-scroll/findInput.js","../src/utilities/form/final-form-scroll/createDecorator.js","../src/utilities/form/Form.tsx","../src/utilities/form/Field.tsx","../src/utilities/useAxiosMutate.js","../src/UI/dataDisplay/typography/SideSheetHeader.jsx","../src/UI/surfaces/SideSheet.jsx"],"sourcesContent":["const isFocusableInput = (wtf) =>\n !!(wtf && typeof wtf.focus === 'function');\n\nexport default isFocusableInput;\n","import isFocusableInput from './isFocusableInput';\n\nconst getAllInputs = () => {\n if (typeof document === 'undefined') {\n return [];\n }\n return Array.prototype.slice\n .call(document.forms)\n .reduce(\n (accumulator, form) =>\n accumulator.concat(\n Array.prototype.slice.call(form).filter(isFocusableInput)\n ),\n []\n );\n};\n\nexport default getAllInputs;\n","import { getIn } from 'final-form';\n\nconst findInput = (inputs, errors) =>\n inputs.find(input => input.name && getIn(errors, input.name));\n\nexport default findInput;\n","import getAllInputs from './getAllInputs.js';\nimport findInput from './findInput.js';\n\nconst noop = () => {};\n\n/**\n * The decorator is created based on final-form-focus https://github.com/final-form/final-form-focus\n */\nconst createDecorator = () => (form) => {\n const scrollToFirstError = (errors) => {\n const allInputs = getAllInputs();\n const firstInput = findInput(allInputs, errors);\n const inputToScrollTo = firstInput?.parentElement;\n if (inputToScrollTo) {\n inputToScrollTo.scrollIntoView({ behavior: 'smooth' });\n }\n };\n // Save original submit function\n const originalSubmit = form.submit;\n let state = {};\n const unsubscribe = form.subscribe(\n (nextState) => {\n state = nextState;\n },\n { errors: true, submitErrors: true }\n );\n // What to do after submit\n const afterSubmit = () => {\n const { errors, submitErrors } = state;\n if (errors && Object.keys(errors).length) {\n scrollToFirstError(errors);\n } else if (submitErrors && Object.keys(submitErrors).length) {\n scrollToFirstError(submitErrors);\n }\n };\n\n // Rewrite submit function\n form.submit = () => {\n const result = originalSubmit.call(form);\n if (result && typeof result.then === 'function') {\n // async\n result.then(afterSubmit, noop);\n } else {\n // sync\n afterSubmit();\n }\n return result;\n };\n\n return () => {\n unsubscribe();\n form.submit = originalSubmit;\n };\n};\n\nexport default createDecorator;\n","import React, { forwardRef, useImperativeHandle } from 'react';\nimport {\n AnyObject,\n Form as FinalForm,\n FormProps as FinalFormProps,\n FormRenderProps,\n} from 'react-final-form';\nimport createDecorator from './final-form-scroll/createDecorator';\n\nexport interface FormProps<FormValues = AnyObject>\n extends FinalFormProps<FormValues> {\n children?: (props: FormRenderProps<FormValues>) => React.ReactNode;\n id?: string;\n}\nconst scrollToError = createDecorator();\n\n/**\n * final-form Form wrapper with automatic <form> and submit handler\n */\n\nconst _Form = ({ render: renderProp, children, id, ...props }: FormProps, ref: React.Ref<any>) => {\n const render = renderProp || children;\n\n return (\n <FinalForm ref={ref} decorators={[scrollToError]} {...props}>\n {params => {\n useImperativeHandle(ref, () => ({ ...params}))\n return (\n <form onSubmit={params.handleSubmit} noValidate={true} id={id}>\n {typeof render === 'function' ? render(params) : render}\n </form>\n )\n }}\n </FinalForm>\n );\n};\n\nexport const Form: React.FC<FormProps> = forwardRef(_Form)\n","import { InputBaseComponentProps } from '@material-ui/core';\nimport React, {\n ElementType,\n forwardRef,\n useCallback,\n ComponentType,\n} from 'react';\nimport {\n Field as FinalField,\n FieldProps as FinalFieldProps,\n FieldRenderProps,\n} from 'react-final-form';\n\nexport interface MuiFieldComponentProps {\n error?: boolean;\n helperText?: React.ReactNode;\n inputProps?: InputBaseComponentProps;\n onChange: React.ChangeEventHandler;\n ComponentProps?: any;\n}\n\nexport type MuiFieldComponent = ElementType<MuiFieldComponentProps>;\n\nexport type FieldProps<\n FieldValue,\n RP extends FieldRenderProps<FieldValue, T>,\n T extends HTMLElement = HTMLElement\n > = {\n component: MuiFieldComponent;\n // @fixme Some of the onChange handlers pass value instead\n valueForChange?: (event: React.ChangeEvent<T>) => FieldValue;\n pattern?: string;\n } & Pick<\n FinalFieldProps<FieldValue, RP, T>,\n | 'afterSubmit'\n | 'allowNull'\n | 'beforeSubmit'\n | 'defaultValue'\n | 'format'\n | 'formatOnBlur'\n | 'initialValue'\n | 'isEqual'\n | 'name'\n | 'parse'\n | 'subscription'\n | 'type'\n | 'validate'\n | 'validateFields'\n | 'value'\n | 'required'\n > &\n MuiFieldComponentProps; // @fixme Add another generic to extend this with componentProps\n\ntype FieldComponent<\n FieldValue = any,\n RP extends FieldRenderProps<FieldValue, T> = FieldRenderProps<\n FieldValue,\n HTMLElement\n >,\n T extends HTMLElement = HTMLElement\n > = ComponentType<FieldProps<FieldValue, RP, T>>;\n\n/**\n * final-form Field wrapper that supports using Material UI fields as components\n * @todo Implement a validation function that uses required, etc... (or defer this till Redwerks' form library is built)\n */\nexport let Field: FieldComponent = forwardRef((props, ref) => {\n const {\n component: Component,\n afterSubmit,\n allowNull,\n beforeSubmit,\n component,\n defaultValue,\n format,\n formatOnBlur,\n initialValue,\n isEqual,\n name,\n parse,\n // @ts-ignore\n render, // extract the render prop so it doesn't get passed to Field\n subscription,\n validate,\n validateFields,\n value, // radio/checkbox\n helperText,\n valueForChange,\n required,\n ComponentProps,\n type,\n ...componentProps\n } = props;\n const fieldProps = {\n afterSubmit,\n allowNull,\n beforeSubmit,\n defaultValue,\n format,\n formatOnBlur,\n initialValue,\n isEqual,\n name,\n parse,\n subscription,\n validate,\n validateFields,\n value,\n type\n };\n\n // @fixme: will need to add a more generic validator for other valdiation props\n const makeValidation = useCallback(\n (value, allValues, meta) => {\n if (required && ((typeof (value) !== \"number\" && !!!value) || Array.isArray(value))) {\n if (Array.isArray(value) && value.length) {\n return undefined;\n } else if (!!value && !Array.isArray(value)) {\n return undefined;\n } else {\n return 'Required';\n }\n }\n if (validate) {\n return validate(value, allValues, meta);\n }\n },\n [required, validate]\n );\n\n return (\n <FinalField {...fieldProps} validate={makeValidation}>\n {params => {\n const { input, meta } = params;\n const { name, onChange, ...inputProps } = input;\n const showError =\n ((meta.submitError && !meta.dirtySinceLastSubmit) || meta.error) &&\n meta.touched;\n\n return (\n <Component\n ref={ref as any} // @fixme\n required={required}\n {...componentProps}\n {...ComponentProps}\n helperText={showError ? meta.error || meta.submitError : helperText}\n error={showError}\n onChange={(...args: any[]) => {\n if (valueForChange) {\n // @ts-ignore\n args = [valueForChange(...args)];\n }\n // @ts-ignore\n onChange(...args);\n }}\n name={name}\n {...inputProps}\n //value={value}\n />\n );\n }}\n </FinalField>\n );\n});\nField.displayName = 'Field';\n","import { useEffect, useMemo } from 'react';\nimport useAxios from 'axios-hooks';\nimport Axios from 'axios';\nimport {\n handleResponseErrors,\n getMergedConfig,\n getAccessToken\n} from './apiHelpers';\nimport enableAxiosInterceptors from './axiosInterceptors';\nimport { useUser } from './auth/useUser';\n\nenableAxiosInterceptors();\n\nexport const useAxiosMutate = (baseURL, url, config) => {\n\n const fullURL = { url: `${baseURL}/${url}` };\n const user = useUser()\n\n const headers = useMemo(() => {\n const currentHeaders = config.headers ?? {}\n currentHeaders.currentTenantId ||= user?.currentTenantId ?? ''\n return currentHeaders\n }, [user, config])\n config.headers = headers\n\n const [{ data, loading, error }, execute] = useAxios(\n { ...fullURL, ...config },\n { manual: true }\n );\n\n useEffect(() => {\n handleResponseErrors(error);\n }, [error]);\n\n return [{ data, loading, error }, execute];\n};\n\nexport const apiMutate = async (baseURL, url, config, data) => {\n const fullURL = { url: `${baseURL}/${url}` };\n const accessToken = await getAccessToken();\n const mergedConfig = getMergedConfig(accessToken, config);\n return Axios({ ...fullURL, ...mergedConfig, ...data });\n};\n","import React from 'react';\nimport { makeStyles, CircularProgress } from '@material-ui/core';\nimport { StandardTitle } from './StandardTitle';\nimport { FluentIconButton } from '../../inputs/buttons/FluentIconButton';\nimport { FluentButton } from '../../inputs/buttons/FluentButton';\nimport { ChromeCloseIcon } from '@fluentui/react-icons';\nimport { FluentIcon } from '../../../utilities/FluentIcon';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'row',\n padding: theme.spacing(1),\n paddingLeft: 0,\n background:\n theme?.getThemeData()?.mode === 'dark'\n ? theme.palette.grey[800]\n : theme.palette.common.white,\n position: ({ isSticky }) => (isSticky ? 'sticky' : 'relative'),\n top: ({ isSticky }) => (isSticky ? 0 : 'auto'),\n zIndex: ({ isSticky }) => (isSticky ? 1200 : 'auto')\n },\n title: {\n display: 'flex',\n flex: 1,\n alignItems: 'center',\n marginLeft: theme.spacing(1.5)\n },\n actionButton: {\n marginRight: theme.spacing(1),\n position: 'relative'\n },\n fabProgress: {\n position: 'absolute',\n top: 4,\n left: '35%',\n zIndex: 1\n }\n}));\n\nexport const SideSheetHeader = ({ isSticky = false, ...props }) => {\n const classes = useStyles({ isSticky });\n const {\n title,\n onClose,\n buttonLabel,\n onSubmit,\n buttonProgress,\n buttonTwoLabel,\n buttonTwoIcon,\n buttonTwoAction,\n buttonTwoProgress,\n id,\n udprecordid = '',\n buttonOneDisabled,\n buttonTwoDisabled,\n ...otherProps\n } = props;\n\n return (\n <div className={classes.root}>\n <div className={classes.title}>\n <FluentIconButton\n id={id + '-Close'}\n udprecordid={udprecordid + '-Close'}\n icon={ChromeCloseIcon}\n onClick={onClose}\n aria-label='Close Panel'\n />\n <StandardTitle className={classes.title}>{title}</StandardTitle>\n </div>\n {buttonTwoLabel && (\n <div>\n <FluentButton\n // variant='contained'\n color='secondary'\n onClick={buttonTwoAction}\n disabled={buttonTwoDisabled}\n {...otherProps}\n >\n {buttonTwoProgress && (\n <CircularProgress\n size={24}\n color='secondary'\n className={classes.fabProgress}\n />\n )}\n {buttonTwoIcon && (\n <FluentIcon\n size='small'\n component={buttonTwoIcon}\n style={{ marginRight: 8 }}\n />\n )}\n {buttonTwoLabel}\n </FluentButton>\n </div>\n )}\n {buttonLabel && (\n <div className={classes.actionButton}>\n <FluentButton\n id={id + '-CreateView'}\n udprecordid={udprecordid + '-CreateView'}\n variant='contained'\n color='secondary'\n onClick={onSubmit}\n disabled={buttonOneDisabled}\n {...otherProps}\n >\n {buttonProgress && (\n <CircularProgress\n id={id + '-ButtonProgress'}\n udprecordid={udprecordid + '-ButtonProgress'}\n size={24}\n color='secondary'\n className={classes.fabProgress}\n />\n )}\n {buttonLabel}\n </FluentButton>\n </div>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport {\n makeStyles,\n Drawer,\n LinearProgress,\n CardContent\n} from '@material-ui/core';\nimport { SideSheetHeader } from '../dataDisplay/typography/SideSheetHeader';\nimport PropTypes from 'prop-types';\n\nconst useStyles = makeStyles((theme) => ({\n paper: {\n // width: (props) => props.width || 320,\n width: '100%',\n [theme.breakpoints.up('sm')]: {\n width: (props) => props.width || 320\n },\n background:\n theme?.getThemeData()?.mode === 'dark'\n ? theme.palette.grey[700]\n : '#f4f4f4'\n },\n container: {\n height: (props) => (props.contentHeight ? props.contentHeight : ''),\n overflowY: (props) => (props.contentHeight ? 'auto' : ''),\n padding: (props) => (props.noPadding ? 0 : '')\n }\n}));\n\n/**\n * Base right hand side sheet with no contents\n */\nexport const BaseSideSheet = (props) => {\n const classes = useStyles(props);\n const {\n anchor = 'right',\n width,\n children,\n onClose,\n noBackdrop,\n buttonLabel,\n ...drawerProps\n } = props;\n\n return (\n <Drawer\n classes={{ paper: classes.paper }}\n variant='temporary'\n anchor={anchor}\n onClose={onClose}\n {...drawerProps}\n BackdropProps={{ invisible: noBackdrop }}\n >\n {children}\n </Drawer>\n );\n};\n\n/**\n * A right hand material side sheet\n */\nexport const SideSheet = (props) => {\n const classes = useStyles(props);\n const {\n children,\n title,\n progress,\n progressColor,\n buttonLabel,\n noPadding,\n onSubmit,\n variant = 'determinate',\n buttonTwoLabel,\n buttonTwoIcon,\n buttonTwoAction,\n buttonTwoProgress,\n buttonOneDisabled,\n buttonTwoDisabled,\n id,\n udprecordid,\n ...otherProps\n } = props;\n const { onClose } = props;\n return (\n <BaseSideSheet {...otherProps}>\n <SideSheetHeader\n id={id}\n udprecordid={udprecordid}\n onClose={onClose}\n title={title}\n buttonLabel={buttonLabel}\n onSubmit={onSubmit}\n buttonTwoLabel={buttonTwoLabel}\n buttonTwoIcon={buttonTwoIcon}\n buttonTwoAction={buttonTwoAction}\n buttonTwoProgress={buttonTwoProgress}\n isSticky={true}\n buttonOneDisabled={buttonOneDisabled}\n buttonTwoDisabled={buttonTwoDisabled}\n {...otherProps}\n />\n {progress && (\n <LinearProgress\n variant={variant}\n color={progressColor}\n value={progress}\n />\n )}\n <CardContent classes={{ root: classes.container }}>\n {children}\n </CardContent>\n </BaseSideSheet>\n );\n};\n\nSideSheet.propTypes = {\n /**\n * Main content for the modal view\n */\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n /**\n * SideSheet title\n */\n title: PropTypes.string.isRequired,\n /**\n * Function to close SideSheet\n */\n onClose: PropTypes.func,\n /**\n * Determins the open or closed state of the SideSheet\n */\n open: PropTypes.bool,\n /**\n * Value for progress loading\n */\n progress: PropTypes.any, // ToDo: add fix for hiding 0 progress\n /**\n * Progress loading color\n */\n progressColor: PropTypes.string,\n /**\n * Width of the SideSheet\n */\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n /**\n * Anchor orgin of card (right, left, top, bottom)\n */\n anchor: PropTypes.string,\n /**\n * Label for top action button (global only)\n */\n buttonLabel: PropTypes.string,\n /**\n * Option to override container padding\n */\n noPadding: PropTypes.string,\n /**\n * Progress loading color\n */\n contentHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\n\nSideSheet.defaultProps = {\n anchor: 'right',\n progressColor: 'secondary'\n};\n"],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import { UdpPublicForm, UdpPublicForm_default } from "./UdpPublicForm-Caa1tH6z.js";
2
- import "./apiHelpers-DZots3og.js";
3
-
4
- export { UdpPublicForm, UdpPublicForm_default as default };
@@ -1,9 +0,0 @@
1
- import "./SideSheet-DUsxG1FN.js";
2
- import "./EnvironmentRibbon-DaDmKAPO.js";
3
- import "./apiHelpers-DZots3og.js";
4
- import { WorkflowContainer } from "./WorkflowContainer-DrqzuQtU.js";
5
- import "./UtilitySideBar-D4CXGtW2.js";
6
- import "./SearchUtilities-Bor3HbfB.js";
7
- import "./PageContainer-k8KCfGsM.js";
8
-
9
- export { WorkflowContainer };
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- declare const CrudTableActionRender: (props: any) => React.JSX.Element;
3
- export default CrudTableActionRender;