@pautena/react-design-system 0.14.2 → 0.14.3

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 (115) hide show
  1. package/action/cjs/index.js.map +1 -1
  2. package/action/index.js.map +1 -1
  3. package/board/cjs/index.js.map +1 -1
  4. package/board/index.js.map +1 -1
  5. package/bootstrap-dialog/bootstrap-dialog.d.ts +1 -1
  6. package/bootstrap-dialog/cjs/index.js.map +1 -1
  7. package/bootstrap-dialog/index.js.map +1 -1
  8. package/cjs/index.js.map +1 -1
  9. package/confirm-dialog/cjs/index.js.map +1 -1
  10. package/confirm-dialog/confirm-dialog.d.ts +1 -1
  11. package/confirm-dialog/index.js.map +1 -1
  12. package/content-placeholder/cjs/index.js.map +1 -1
  13. package/content-placeholder/index.js.map +1 -1
  14. package/date-range-picker/cjs/index.js.map +1 -1
  15. package/date-range-picker/index.js.map +1 -1
  16. package/drawer/cjs/index.js.map +1 -1
  17. package/drawer/drawer.types.d.ts +3 -3
  18. package/drawer/index.js.map +1 -1
  19. package/drawer-app-bar/cjs/index.js.map +1 -1
  20. package/drawer-app-bar/index.js.map +1 -1
  21. package/drawer-content/cjs/index.js.map +1 -1
  22. package/drawer-content/drawer-content.d.ts +1 -1
  23. package/drawer-content/index.js.map +1 -1
  24. package/drawer-item/cjs/index.js.map +1 -1
  25. package/drawer-item/drawer-item-link.d.ts +1 -1
  26. package/drawer-item/drawer-item.d.ts +1 -1
  27. package/drawer-item/drawer-menu-item.d.ts +1 -1
  28. package/drawer-item/index.js.map +1 -1
  29. package/drawer-layout/cjs/index.js.map +1 -1
  30. package/drawer-layout/drawer-layout.d.ts +2 -2
  31. package/drawer-layout/index.js.map +1 -1
  32. package/drawer-main/cjs/index.js.map +1 -1
  33. package/drawer-main/index.js.map +1 -1
  34. package/drawer-provider/cjs/index.js.map +1 -1
  35. package/drawer-provider/drawer-context.d.ts +1 -1
  36. package/drawer-provider/drawer.provider.d.ts +1 -1
  37. package/drawer-provider/index.js.map +1 -1
  38. package/drawer-section/cjs/index.js.map +1 -1
  39. package/drawer-section/drawer-section.d.ts +1 -1
  40. package/drawer-section/index.js.map +1 -1
  41. package/drawer-subheader/cjs/index.js.map +1 -1
  42. package/drawer-subheader/drawer-subheader.d.ts +1 -1
  43. package/drawer-subheader/index.js.map +1 -1
  44. package/enhanced-remote-table/cjs/index.js.map +1 -1
  45. package/enhanced-remote-table/enhanced-remote-table.d.ts +1 -1
  46. package/enhanced-remote-table/enhanced-remote-table.mock.d.ts +2 -2
  47. package/enhanced-remote-table/index.js.map +1 -1
  48. package/expandable-alert/cjs/index.js.map +1 -1
  49. package/expandable-alert/index.js.map +1 -1
  50. package/form-dialog/cjs/index.js.map +1 -1
  51. package/form-dialog/form-dialog.d.ts +1 -1
  52. package/form-dialog/index.js.map +1 -1
  53. package/group-value-card/cjs/index.js.map +1 -1
  54. package/group-value-card/group-value-card.d.ts +1 -1
  55. package/group-value-card/index.js.map +1 -1
  56. package/header/cjs/index.js.map +1 -1
  57. package/header/index.js.map +1 -1
  58. package/header-layout/cjs/index.js.map +1 -1
  59. package/header-layout/header-layout.d.ts +3 -3
  60. package/header-layout/index.js.map +1 -1
  61. package/index.js.map +1 -1
  62. package/link-card/cjs/index.js.map +1 -1
  63. package/link-card/index.js.map +1 -1
  64. package/list-panel/cjs/index.js.map +1 -1
  65. package/list-panel/index.js.map +1 -1
  66. package/model-form/cjs/index.js.map +1 -1
  67. package/model-form/index.js.map +1 -1
  68. package/model-form/model-form-field.d.ts +1 -1
  69. package/model-form/model-form.d.ts +1 -1
  70. package/model-router/cjs/index.js.map +1 -1
  71. package/model-router/index.js.map +1 -1
  72. package/model-router/model-router.d.ts +1 -1
  73. package/model-router/screens/add-screen.d.ts +2 -2
  74. package/model-router/screens/details-screen.d.ts +2 -2
  75. package/model-router/screens/list-screen.d.ts +2 -2
  76. package/model-router/screens/screens.types.d.ts +1 -1
  77. package/model-router/screens/update-screen.d.ts +2 -2
  78. package/model-router/stories/templates.d.ts +7 -7
  79. package/object-details/cjs/index.js.map +1 -1
  80. package/object-details/index.js.map +1 -1
  81. package/object-details/object-details.d.ts +1 -1
  82. package/package.json +1 -1
  83. package/query-container/cjs/index.js.map +1 -1
  84. package/query-container/index.js.map +1 -1
  85. package/select/cjs/index.js.map +1 -1
  86. package/select/index.js.map +1 -1
  87. package/skeleton-grid/cjs/index.js.map +1 -1
  88. package/skeleton-grid/index.js.map +1 -1
  89. package/tab-card/cjs/index.js.map +1 -1
  90. package/tab-card/index.js.map +1 -1
  91. package/tab-panel/cjs/index.js.map +1 -1
  92. package/tab-panel/index.js.map +1 -1
  93. package/table-list/cjs/index.js.map +1 -1
  94. package/table-list/index.js.map +1 -1
  95. package/table-list/table-list.d.ts +2 -2
  96. package/value-boolean/cjs/index.js.map +1 -1
  97. package/value-boolean/index.js.map +1 -1
  98. package/value-boolean/value-boolean.d.ts +1 -1
  99. package/value-datetime/cjs/index.js.map +1 -1
  100. package/value-datetime/index.js.map +1 -1
  101. package/value-datetime/value-datetime.d.ts +1 -1
  102. package/value-image/cjs/index.js.map +1 -1
  103. package/value-image/index.js.map +1 -1
  104. package/value-image/value-image.d.ts +1 -1
  105. package/value-item/cjs/index.js.map +1 -1
  106. package/value-item/index.js.map +1 -1
  107. package/value-label/cjs/index.js.map +1 -1
  108. package/value-label/index.js.map +1 -1
  109. package/value-label/value-label.d.ts +2 -2
  110. package/value-rating/cjs/index.js.map +1 -1
  111. package/value-rating/index.js.map +1 -1
  112. package/value-rating/value-rating.d.ts +1 -1
  113. package/value-text/cjs/index.js.map +1 -1
  114. package/value-text/index.js.map +1 -1
  115. package/value-text/value-text.d.ts +1 -1
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/markdown/markdown.tsx","../../src/board/board.tsx","../../src/expandable-alert/expandable-alert.tsx","../../src/content/content.tsx","../../src/center-container/center-container.tsx","../../src/utils/arrays.ts","../../src/utils/theme.ts","../../src/utils/breakpoints.ts","../../src/utils/forms.ts","../../src/list-panel/list-panel.context.tsx","../../src/bullet/bullet.tsx","../../src/label/label.tsx","../../src/link/link.tsx","../../src/tab-provider/tab-provider.context.ts","../../src/tab-provider/tab-provider.provider.tsx","../../src/header/header-title.tsx","../../src/header/header.tsx","../../src/bootstrap-dialog/bootstrap-dialog.tsx","../../src/confirm-dialog/confirm-dialog.tsx","../../src/dialog/use-dialog.ts","../../src/drawer-provider/drawer-context.ts","../../src/drawer-provider/drawer-mixins.ts","../../src/drawer/drawer.tsx","../../src/drawer-provider/drawer.provider.tsx","../../src/drawer-subheader/drawer-subheader.tsx","../../src/drawer/drawer.types.ts","../../src/drawer-item/drawer-item-link.tsx","../../src/drawer-item/drawer-item.tsx","../../src/drawer-item/drawer-menu-item.tsx","../../src/drawer-section/drawer-section.tsx","../../src/drawer-app-bar/drawer-app-bar.tsx","../../src/drawer-main/drawer-main.tsx","../../src/loading-area/loading-area.tsx","../../src/select/select.tsx","../../node_modules/@mui/utils/esm/useId/useId.js","../../src/text-field/text-field.tsx","../../src/date-range-calendar/date-range-calendar.tsx","../../src/action/action-header.tsx","../../src/tab-card/tab-card.context.tsx","../../src/tab-card/tab-card.tsx","../../src/placeholder/placeholder.tsx","../../src/skeleton-card/skeleton-card.tsx","../../src/skeleton-grid/skeleton-grid.tsx","../../node_modules/@mui/utils/esm/chainPropTypes/chainPropTypes.js","../../node_modules/prop-types/node_modules/react-is/index.js","../../node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js","../../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js","../../node_modules/object-assign/index.js","../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../node_modules/prop-types/lib/has.js","../../node_modules/prop-types/index.js","../../node_modules/prop-types/factoryWithTypeCheckers.js","../../node_modules/prop-types/checkPropTypes.js","../../node_modules/prop-types/factoryWithThrowingShims.js","../../node_modules/@mui/utils/esm/elementAcceptingRef.js","../../node_modules/@mui/utils/esm/elementTypeAcceptingRef.js","../../node_modules/react-is/index.js","../../node_modules/react-is/cjs/react-is.production.min.js","../../node_modules/react-is/cjs/react-is.development.js","../../node_modules/@mui/utils/esm/ponyfillGlobal/ponyfillGlobal.js","../../node_modules/@mui/utils/esm/refType.js","../../node_modules/@mui/utils/esm/visuallyHidden.js","../../node_modules/@mui/utils/esm/integerPropType.js","../../src/enhanced-table/enhanced-table-head.tsx","../../src/enhanced-table/enhanced-table.tsx","../../src/value-base/value-edit.tsx","../../src/value-base/value-displays.types.ts","../../src/value-content/value-content.tsx","../../src/value-text/value-text.tsx","../../src/value-boolean/value-boolean.tsx","../../src/value-datetime/value-datetime.tsx","../../src/group-value-card/group-value-card.tsx","../../src/value-item/value-item.tsx","../../src/header-layout/header-layout.tsx","../../src/notification-center/notification-center.context.ts","../../src/notification-center/notification-center.hooks.ts","../../src/object-details/object-details.tsx","../../src/generators/generators.model.ts","../../src/model-form/model-form-field.tsx","../../node_modules/ramda/es/internal/_isPlaceholder.js","../../node_modules/ramda/es/internal/_curry1.js","../../node_modules/ramda/es/internal/_curry2.js","../../node_modules/ramda/es/internal/_curry3.js","../../node_modules/ramda/es/internal/_isArray.js","../../node_modules/ramda/es/internal/_isInteger.js","../../node_modules/ramda/es/isNil.js","../../node_modules/ramda/es/assocPath.js","../../node_modules/ramda/es/internal/_has.js","../../node_modules/ramda/es/internal/_assoc.js","../../src/model-form/model-form.tsx","../../src/hooks/routing/routing.hooks.ts","../../src/model-router/screens/update-screen.tsx","../../src/table-list/table-list.tsx","../../src/model-router/screens/list-screen.tsx","../../src/model-router/screens/add-screen.tsx","../../src/model-router/screens/details-screen.tsx","../../src/action/action.tsx","../../src/autocomplete/autocomplete.tsx","../../src/content-placeholder/content-placeholder.tsx","../../src/date-range-picker/date-range-picker.tsx","../../src/drawer-content/drawer-content.tsx","../../src/drawer-layout/drawer-layout.tsx","../../src/enhanced-remote-table/enhanced-remote-table.tsx","../../src/form-dialog/form-dialog.tsx","../../src/model-router/model-router.types.ts","../../src/list-panel/list-panel.tsx","../../src/lorem-ipsum-placeholder/lorem-ipsum-placeholder.tsx","../../src/model-router/model-router.tsx","../../src/notification-center/notification-center.provider.tsx","../../src/query-container/query-container.tsx","../../src/sign-in/sign-in.tsx","../../src/tab-card/tab-card-panel.tsx","../../src/tab-panel/tab-panel.tsx","../../src/value-card/value-card.tsx","../../src/value-label/value-label.tsx","../../src/value-rating/value-rating.tsx"],"sourcesContent":["import Typography from \"@mui/material/Typography\";\nimport Link from \"@mui/material/Link\";\nimport ReactMarkdown, { MarkdownToJSX } from \"markdown-to-jsx\";\n\nexport interface MarkdownProps {\n content: string;\n options?: MarkdownToJSX.Options;\n}\n\nexport const markdownDefaultOptions: MarkdownToJSX.Options = {\n overrides: {\n h1: {\n component: Typography,\n props: {\n gutterBottom: true,\n variant: \"h5\",\n },\n },\n h2: { component: Typography, props: { gutterBottom: true, variant: \"h6\" } },\n h3: {\n component: Typography,\n props: { gutterBottom: true, variant: \"subtitle1\" },\n },\n h4: {\n component: Typography,\n props: { gutterBottom: true, variant: \"caption\", paragraph: true },\n },\n p: { component: Typography, props: { paragraph: true } },\n a: { component: Link },\n li: {\n component: \"li\",\n },\n },\n};\n\nexport const Markdown = ({ content, options = markdownDefaultOptions }: MarkdownProps) => {\n return <ReactMarkdown options={options}>{content}</ReactMarkdown>;\n};\n","import Box from \"@mui/material/Box\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Paper from \"@mui/material/Paper\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport Typography from \"@mui/material/Typography\";\nimport { useTheme, SxProps, Theme } from \"@mui/material/styles\";\nimport { blueGrey } from \"@mui/material/colors\";\nimport { PropsWithChildren, ReactNode } from \"react\";\nimport { Markdown } from \"~/markdown\";\nimport ContentCopyIcon from \"@mui/icons-material/ContentCopy\";\n\nexport type BoardProps = PropsWithChildren<{\n markdown?: string;\n content?: string | string[];\n spacing?: 0 | 1 | 2 | 3 | 4 | 5;\n sx?: SxProps<Theme>;\n}>;\n\nexport const Board = ({\n markdown: markdownProps,\n content: contentProp,\n spacing = 0,\n children,\n sx,\n}: BoardProps) => {\n const { spacing: themeSpacing, typography } = useTheme();\n let copyContent: string;\n let content: ReactNode;\n\n if (markdownProps) {\n copyContent = markdownProps || \"\";\n } else if (Array.isArray(contentProp)) {\n content = contentProp.map((line, i) => (\n <Typography key={i} sx={{ pb: spacing }}>\n {line}\n </Typography>\n ));\n copyContent = contentProp.join(\"\\n\");\n } else {\n content = <Typography>{contentProp}</Typography>;\n copyContent = contentProp || \"\";\n }\n\n const markdown = markdownProps && <Markdown content={markdownProps} />;\n\n return (\n <Paper\n sx={{\n position: \"relative\",\n pl: 2,\n pr: 4,\n py: 1,\n backgroundColor: blueGrey[800],\n color: \"white\",\n ...sx,\n }}\n >\n <Box display=\"flex\" flexDirection=\"row\">\n <Box width={1}>{children || markdown || content}</Box>\n <Box sx={{ position: \"absolute\", top: themeSpacing(0.5), right: themeSpacing(0.5) }}>\n {copyContent && (\n <IconButton\n aria-label=\"copy board content\"\n color=\"inherit\"\n onClick={() => navigator.clipboard.writeText(copyContent)}\n >\n <Tooltip title=\"Copy\">\n <ContentCopyIcon sx={{ fontSize: typography.pxToRem(18) }} />\n </Tooltip>\n </IconButton>\n )}\n </Box>\n </Box>\n </Paper>\n );\n};\n","import Alert, { alertClasses, AlertColor } from \"@mui/material/Alert\";\nimport Box from \"@mui/material/Box\";\nimport Collapse from \"@mui/material/Collapse\";\nimport IconButton from \"@mui/material/IconButton\";\nimport AlertTitle from \"@mui/material/AlertTitle\";\nimport { SxProps, Theme } from \"@mui/material/styles\";\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport ExpandLessIcon from \"@mui/icons-material/ExpandLess\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { forwardRef, ReactElement, useState } from \"react\";\nimport { Board } from \"~/board\";\n\nexport interface ExpandableAlertProps {\n severity: AlertColor;\n iconMapping?: Partial<Record<AlertColor, React.ReactNode>>;\n title?: string;\n message: string;\n metadata?: string | string[];\n metadataComponent?: ReactElement;\n onClose: () => void;\n sx?: SxProps<Theme>;\n}\n\nconst alertSx = {\n [`& .${alertClasses.message}`]: {\n width: 1,\n },\n};\n\nexport const ExpandableAlert = forwardRef<any, ExpandableAlertProps>(\n (\n { severity, iconMapping, title, message, metadata, metadataComponent, onClose, sx = {} },\n ref,\n ) => {\n const [expanded, setExpanded] = useState(false);\n return (\n <Alert\n ref={ref}\n severity={severity}\n iconMapping={iconMapping}\n onClose={onClose}\n action={\n <Box display=\"flex\" flexDirection=\"column\">\n <IconButton color=\"inherit\" onClick={onClose}>\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n {metadata && (\n <IconButton color=\"inherit\" onClick={() => setExpanded((e) => !e)}>\n {expanded ? (\n <ExpandLessIcon fontSize=\"small\" />\n ) : (\n <ExpandMoreIcon fontSize=\"small\" />\n )}\n </IconButton>\n )}\n </Box>\n }\n sx={{ ...alertSx, ...sx }}\n >\n <Box sx={{ w: 1 }}>\n {title && <AlertTitle>{title}</AlertTitle>}\n {message}\n {metadata && (\n <Collapse in={expanded} sx={{ mt: 2 }}>\n <Board content={metadata}>{metadataComponent}</Board>\n </Collapse>\n )}\n </Box>\n </Alert>\n );\n },\n);\n","import Container from \"@mui/material/Container\";\nimport { ContentProps } from \"./content.types\";\n\nexport const Content = ({ children }: ContentProps) => {\n return (\n <Container component=\"main\" sx={{ py: 3, flexGrow: 1 }}>\n {children}\n </Container>\n );\n};\n","import { ReactNode } from \"react\";\nimport Box from \"@mui/material/Box\";\nimport { SxProps, Theme } from \"@mui/material/styles\";\n\nexport interface CenterContainerProps {\n children: ReactNode | undefined;\n centerVertical?: boolean;\n centerHorizontal?: boolean;\n sx?: SxProps<Theme>;\n}\n\nexport function CenterContainer({\n children,\n centerVertical = true,\n centerHorizontal = true,\n sx,\n}: CenterContainerProps) {\n return (\n <Box\n width={1}\n height={1}\n sx={{\n ...sx,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: centerVertical ? \"center\" : \"flex-start\",\n alignItems: centerHorizontal ? \"center\" : \"flex-start\",\n }}\n >\n {children}\n </Box>\n );\n}\n","export const newArrayWithSize = <T>(size: number, fillValue: T) => new Array(size).fill(fillValue);\n\nexport const getRandomItem = <T>(items: T[]): { index: number; item: T } => {\n const index = Math.floor(Math.random() * items.length);\n const item = items[index];\n return { index, item };\n};\n","import { Color, useTheme } from \"@mui/material\";\n\ntype KeyColor = keyof Color;\n\nexport const useGetDefaultThemeColor = ({\n lightWeight = 100,\n darkWeight = 900,\n}: { lightWeight?: KeyColor; darkWeight?: KeyColor } = {}) => {\n const { palette } = useTheme();\n return palette.mode === \"light\" ? palette.grey[lightWeight] : palette.grey[darkWeight];\n};\n","import { ResponsiveStyleValue } from \"@mui/system\";\n\ninterface Breakpoints {\n xs: number;\n sm: number;\n md: number;\n lg: number;\n xl: number;\n}\n\ninterface BreakpointsCounter extends Breakpoints {\n increment(breakpoints: Partial<Breakpoints>): ResponsiveStyleValue<boolean>;\n}\n\nexport const newBreakpointsCounter = (breakpoint = 12): BreakpointsCounter => {\n const calculateBreakpointIncrement = (\n breakpointsCounter: BreakpointsCounter,\n key: keyof Breakpoints,\n value: number,\n ): boolean => {\n const initialValue = breakpointsCounter[key];\n breakpointsCounter[key] += value;\n if (breakpointsCounter[key] > breakpoint) {\n breakpointsCounter[key] = value;\n return false;\n }\n\n if (breakpointsCounter[key] == breakpoint) {\n breakpointsCounter[key] = 0;\n }\n\n return initialValue > 0;\n };\n\n return {\n xs: 0,\n sm: 0,\n md: 0,\n lg: 0,\n xl: 0,\n increment: function ({\n xs = 0,\n sm = 0,\n md = 0,\n lg = 0,\n xl = 0,\n }): ResponsiveStyleValue<boolean> {\n const smInc = sm || xs;\n const mdInc = md || smInc;\n const lgInc = lg || mdInc;\n const xlInc = xl || lgInc;\n\n return {\n xs: calculateBreakpointIncrement(this, \"xs\", xs),\n sm: calculateBreakpointIncrement(this, \"sm\", smInc),\n md: calculateBreakpointIncrement(this, \"md\", mdInc),\n lg: calculateBreakpointIncrement(this, \"lg\", lgInc),\n xl: calculateBreakpointIncrement(this, \"xl\", xlInc),\n };\n },\n };\n};\n","import { FormEvent } from \"react\";\n\nexport const getFormData = <T>(e: FormEvent<HTMLFormElement>): T => {\n const data = new FormData(e.currentTarget);\n const rawData: Record<string, any> = {};\n\n data.forEach((value, key) => {\n rawData[key] = value;\n });\n return rawData as T;\n};\n","import { createContext, useContext } from \"react\";\n\nexport const ListPanelContext = createContext<string | undefined>(undefined);\nexport const ListPanelContextProvider = ListPanelContext.Provider;\nexport const useListPanel = () => useContext(ListPanelContext);\n","import Badge from \"@mui/material/Badge\";\nimport { SxProps, Theme } from \"@mui/material/styles\";\n\nexport type BulletVariant = \"primary\" | \"secondary\" | \"default\" | \"info\" | \"warning\" | \"error\";\n\nexport const bulletClasses = {\n root: \"RdsBullet-root\",\n};\n\nexport interface BulletProps {\n /**\n * Color palette used to draw the component\n */\n variant?: BulletVariant;\n /**\n * Custom styles\n */\n sx?: SxProps<Theme>;\n}\n\n/**\n * Dot to attract the user attention\n */\nexport const Bullet = ({ variant = \"primary\", sx }: BulletProps) => {\n return (\n <Badge\n color={variant}\n variant=\"dot\"\n className={bulletClasses.root}\n role=\"bullet\"\n aria-describedby={variant}\n sx={sx}\n />\n );\n};\n","import Box from \"@mui/material/Box\";\nimport { SxProps, Theme, useTheme } from \"@mui/material/styles\";\n\nexport type LabelVariant =\n | \"primary\"\n | \"secondary\"\n | \"default\"\n | \"info\"\n | \"warning\"\n | \"error\"\n | \"success\";\n\nexport const labelClasses = {\n root: \"RdsLabel-root\",\n};\n\nexport interface LabelProps {\n /**\n * Content of the component\n */\n text: string;\n /**\n * Color palette used to draw the component\n */\n variant?: LabelVariant;\n\n /**\n * Custom styles\n */\n sx?: SxProps<Theme>;\n\n /**\n * Show the text as uppercase\n */\n textTransform?: \"none\" | \"capitalize\" | \"uppercase\";\n}\n\n/**\n * Compact element to represent a text\n */\nexport const Label = ({\n text,\n variant = \"default\",\n textTransform = \"capitalize\",\n sx,\n}: LabelProps) => {\n const { palette, typography } = useTheme();\n\n const backgroundColor: Record<LabelVariant, string> = {\n default: palette.mode === \"light\" ? palette.grey[100] : palette.grey[900],\n primary: palette.primary.light,\n secondary: palette.secondary.light,\n info: palette.info.light,\n warning: palette.warning.light,\n error: palette.error.light,\n success: palette.success.light,\n };\n\n const textColor: Record<LabelVariant, string> = {\n default: palette.getContrastText(backgroundColor.default),\n primary: palette.primary.contrastText,\n secondary: palette.secondary.contrastText,\n info: palette.info.contrastText,\n warning: palette.warning.contrastText,\n error: palette.error.contrastText,\n success: palette.success.contrastText,\n };\n\n return (\n <Box\n height={24}\n minWidth={22}\n display=\"inline-flex\"\n justifyContent=\"center\"\n alignItems=\"center\"\n bgcolor={backgroundColor[variant]}\n color={textColor[variant]}\n fontSize={typography.caption.fontSize}\n fontWeight={typography.fontWeightBold}\n lineHeight={0}\n textTransform={textTransform}\n whiteSpace=\"nowrap\"\n borderRadius={2}\n role=\"label\"\n aria-label={`${text} ${variant} label`}\n py={0}\n px={1}\n sx={{ cursor: \"default\", ...sx }}\n >\n {text}\n </Box>\n );\n};\n","import { Link as RouterLink, LinkProps as RouterLinkProps } from \"react-router-dom\";\nimport { forwardRef } from \"react\";\nimport MuiLink, { LinkProps } from \"@mui/material/Link\";\n\n/* eslint-disable react/display-name, @typescript-eslint/no-explicit-any */\nexport const LinkBehaviour = forwardRef<\n any,\n Omit<RouterLinkProps, \"to\"> & { href: RouterLinkProps[\"to\"] }\n>((props, ref) => {\n const { href, ...other } = props;\n return <RouterLink ref={ref} to={href} {...other} />;\n});\n\nexport const Link = forwardRef<any, LinkProps>((props, _1) => {\n return <MuiLink {...(props as any)} component={LinkBehaviour} />;\n});\n","import { createContext, Dispatch, SetStateAction, useContext } from \"react\";\n\nexport const TabContext = createContext<[number, Dispatch<SetStateAction<number>>]>([\n 0,\n () => null,\n]);\nexport const TabContextProvider = TabContext.Provider;\nexport const useTab = () => useContext(TabContext);\n","import { PropsWithChildren, useState } from \"react\";\nimport { TabContextProvider } from \"./tab-provider.context\";\n\ntype TabProviderProps = PropsWithChildren<{\n initialValue?: number;\n}>;\n\nexport const TabProvider = ({ children, initialValue = 0 }: TabProviderProps) => {\n const tabState = useState(initialValue);\n\n return <TabContextProvider value={tabState}>{children}</TabContextProvider>;\n};\n","import CircularProgress from \"@mui/material/CircularProgress\";\nimport Typography from \"@mui/material/Typography\";\nimport { useTheme } from \"@mui/material/styles\";\nimport { PropsWithChildren } from \"react\";\n\nexport type HeaderTitleProps = PropsWithChildren<{ loading?: boolean }>;\n\nexport const HeaderTitle = ({ loading, children }: HeaderTitleProps) => {\n const { typography } = useTheme();\n\n if (loading) {\n return (\n <CircularProgress color=\"inherit\" size={typography.h4.fontSize} aria-label=\"title loading\" />\n );\n }\n\n if (typeof children === \"string\") {\n return (\n <Typography variant=\"h4\" role=\"heading\" aria-level={1}>\n {children}\n </Typography>\n );\n }\n\n return <>{children}</>;\n};\n\nexport type HeaderSubtitleProps = PropsWithChildren<{ loading?: boolean }>;\n\nexport const HeaderSubtitle = ({ loading, children }: HeaderSubtitleProps) => {\n const { typography } = useTheme();\n\n if (loading) {\n return (\n <CircularProgress\n color=\"inherit\"\n size={typography.body1.fontSize}\n aria-label=\"subtitle loading\"\n />\n );\n }\n\n if (typeof children === \"string\") {\n return (\n <Typography variant=\"body1\" role=\"heading\" aria-level={2}>\n {children}\n </Typography>\n );\n }\n\n return <>{children}</>;\n};\n","import { useTheme } from \"@mui/material/styles\";\nimport Breadcrumbs from \"@mui/material/Breadcrumbs\";\nimport Container from \"@mui/material/Container\";\nimport Box from \"@mui/material/Box\";\nimport Tabs from \"@mui/material/Tabs\";\nimport Tab from \"@mui/material/Tab\";\nimport Button from \"@mui/material/Button\";\nimport { Link } from \"~/link\";\nimport { useGetDefaultThemeColor } from \"~/utils\";\nimport { HeaderComponent, HeaderPreset, HeaderProps } from \"./header.types\";\nimport { useTab } from \"~/tab-provider\";\nimport { useLocation } from \"react-router-dom\";\nimport { HeaderSubtitle, HeaderTitle } from \"./header-title\";\n\n/**\n * Section used to explain give basic information about the page\n * and put the main actions\n */\nexport const Header: HeaderComponent = ({\n title = \"\",\n loadingTitle,\n subtitle,\n loadingSubtitle,\n preset = \"default\",\n actionsVariant = \"outlined\",\n breadcrumbs,\n actions,\n tabs,\n tabsMode = \"panel\",\n navigationButton,\n}: HeaderProps) => {\n const location = useLocation();\n const { palette } = useTheme();\n const defaultColor = useGetDefaultThemeColor();\n const [selectedTab, setSelectedTab] = useTab();\n\n const bgColorPresets: Record<HeaderPreset, string> = {\n default: defaultColor,\n primary: palette.primary.main,\n secondary: palette.secondary.main,\n inherit: \"inherit\",\n transparent: \"transparent\",\n };\n const bgColor = bgColorPresets[preset];\n const textColorPresets: Record<HeaderPreset, string> = {\n default: palette.getContrastText(bgColorPresets.default),\n primary: palette.primary.contrastText,\n secondary: palette.secondary.contrastText,\n inherit: \"inherit\",\n transparent: palette.text.primary,\n };\n const textColor = textColorPresets[preset];\n\n const modedSelectedTab =\n tabsMode === \"panel\" ? selectedTab : tabs?.findIndex((tab) => tab.href === location.pathname);\n\n return (\n <Box bgcolor={bgColor} color={textColor}>\n <Container>\n <Box sx={{ py: 3, display: \"flex\", flexDirection: \"row\", justifyContent: \"space-between\" }}>\n <Box>\n {navigationButton && (\n <Button\n href={navigationButton.href}\n size=\"small\"\n color=\"inherit\"\n LinkComponent={Link}\n startIcon={navigationButton.icon}\n sx={{ mb: 1 }}\n >\n {navigationButton.text}\n </Button>\n )}\n {breadcrumbs?.length && (\n <Breadcrumbs\n color=\"inherit\"\n separator=\"›\"\n aria-label=\"breadcrumb\"\n sx={{ marginTop: 1 }}\n >\n {breadcrumbs.map(({ id, link, text }) => (\n <Link\n key={id}\n underline=\"hover\"\n color=\"inherit\"\n href={link}\n variant=\"body2\"\n role=\"link\"\n >\n {text}\n </Link>\n ))}\n </Breadcrumbs>\n )}\n <HeaderTitle loading={loadingTitle}>{title}</HeaderTitle>\n {(subtitle || loadingSubtitle) && (\n <HeaderSubtitle loading={loadingSubtitle}>{subtitle}</HeaderSubtitle>\n )}\n </Box>\n {actions && (\n <Box>\n {actions.map(({ disabled, id, href, onClick, text }, i) => (\n <Button\n component={href ? Link : \"button\"}\n role=\"button\"\n color=\"inherit\"\n disabled={disabled}\n key={id}\n variant={actionsVariant}\n size=\"small\"\n href={href}\n onClick={onClick}\n sx={{ mr: i != actions.length - 1 ? 1 : 0 }}\n >\n {text}\n </Button>\n ))}\n </Box>\n )}\n </Box>\n {tabs && (\n <Tabs\n value={modedSelectedTab}\n textColor=\"inherit\"\n onChange={tabsMode === \"panel\" ? (_, index) => setSelectedTab(index) : undefined}\n >\n {tabs.map(({ id, label, disabled, href }) => {\n const tabProps = { label, disabled };\n if (tabsMode === \"panel\") {\n return <Tab key={id} {...tabProps} />;\n } else {\n return <Tab key={id} {...tabProps} component={Link} href={href} />;\n }\n })}\n </Tabs>\n )}\n </Container>\n </Box>\n );\n};\n","import Dialog from \"@mui/material/Dialog\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport IconButton from \"@mui/material/IconButton\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport Box from \"@mui/material/Box\";\nimport Button from \"@mui/material/Button\";\nimport LoadingButton from \"@mui/lab/LoadingButton\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { BootstrapDialogDialogProps } from \"~/dialog/dialog.types\";\n\nexport const BootstrapDialog = ({\n open,\n title,\n component,\n componentProps = {},\n disabled,\n disableAccept,\n disableCancel,\n actions = [],\n children,\n loading,\n cancelable,\n callCloseWhenCancel = true,\n acceptable,\n acceptText = \"Accept\",\n cancelText = \"Cancel\",\n onAccept,\n onCancel = () => null,\n onClose,\n acceptType = \"button\",\n}: BootstrapDialogDialogProps) => {\n const hasActions = actions.length > 0 || acceptable || cancelable;\n\n return (\n <Dialog open={open} onClose={onClose}>\n <DialogTitle sx={{ display: \"flex\", alignItems: \"center\" }}>\n {title}\n {loading && !acceptable && (\n <CircularProgress size={20} sx={{ ml: 2, color: (theme) => theme.palette.grey[500] }} />\n )}\n <IconButton\n disabled={disabled}\n aria-label=\"close\"\n onClick={onClose}\n sx={{\n position: \"absolute\",\n right: 8,\n top: 8,\n color: (theme) => theme.palette.grey[500],\n }}\n >\n <CloseIcon />\n </IconButton>\n </DialogTitle>\n <Box component={component} {...componentProps}>\n <DialogContent dividers>{children}</DialogContent>\n {hasActions && (\n <DialogActions>\n {actions.map(({ id, text, type = \"button\", onClick, color = \"primary\" }) => (\n <Button key={id} type={type} disabled={disabled} onClick={onClick} color={color}>\n {text}\n </Button>\n ))}\n {cancelable && (\n <Button\n color=\"error\"\n disabled={disabled || disableCancel}\n onClick={() => {\n onCancel();\n callCloseWhenCancel && onClose();\n }}\n >\n {cancelText}\n </Button>\n )}\n\n {acceptable && (\n <LoadingButton\n type={acceptType}\n loading={loading}\n disabled={disabled || disableAccept}\n onClick={onAccept}\n >\n {acceptText}\n </LoadingButton>\n )}\n </DialogActions>\n )}\n </Box>\n </Dialog>\n );\n};\n","import { useState } from \"react\";\nimport { BootstrapDialog } from \"~/bootstrap-dialog\";\nimport { BootstrapDialogDialogProps } from \"~/dialog/dialog.types\";\nimport TextField from \"@mui/material/TextField\";\n\ntype OmitBaseDialogProps =\n | \"cancelable\"\n | \"acceptable\"\n | \"onAccept\"\n | \"onCancel\"\n | \"onClose\"\n | \"actions\"\n | \"callCloseWhenCancel\"\n | \"component\"\n | \"acceptType\";\nexport interface ConfirmDialogProps extends Omit<BootstrapDialogDialogProps, OmitBaseDialogProps> {\n confirmText?: string;\n canceText?: string;\n passphrase?: string;\n onCancel: () => void;\n onConfirm: () => void;\n}\n\nexport const ConfirmDialog = ({\n open,\n title,\n loading,\n disabled,\n confirmText = \"Confirm\",\n cancelText = \"Cancel\",\n passphrase,\n children,\n onConfirm,\n onCancel,\n}: ConfirmDialogProps) => {\n const [inputPassphrase, setInputPassphrase] = useState(\"\");\n const validPassphrase = !passphrase || inputPassphrase === passphrase;\n\n return (\n <BootstrapDialog\n title={title}\n loading={loading}\n disabled={loading || disabled}\n disableAccept={!validPassphrase}\n open={open}\n onClose={onCancel}\n acceptable\n cancelable\n callCloseWhenCancel={false}\n acceptText={confirmText}\n cancelText={cancelText}\n onCancel={onCancel}\n onAccept={onConfirm}\n >\n {children}\n {passphrase && (\n <TextField\n size=\"small\"\n fullWidth\n value={inputPassphrase}\n onChange={(e) => setInputPassphrase(e.target.value)}\n placeholder={passphrase}\n />\n )}\n </BootstrapDialog>\n );\n};\n","import { useState } from \"react\";\n\nexport const useDialog = (intialOpen = false) => {\n const [isOpen, setIsOpen] = useState(intialOpen);\n\n const open = () => setIsOpen(true);\n const close = () => setIsOpen(false);\n\n return { isOpen, open, close, setIsOpen };\n};\n","import { useContext, createContext } from \"react\";\nimport { DrawerState, DrawerVariant } from \"~/drawer\";\n\nexport interface DrawerContextProps {\n selectedItemId?: string;\n state: DrawerState;\n variant: DrawerVariant;\n drawerWidth: number;\n underAppBar: boolean;\n switchState(): void;\n close(): void;\n collapse(): void;\n open(): void;\n setState: (state: DrawerState) => void;\n}\n\nexport const DrawerContext = createContext<DrawerContextProps | undefined>(undefined);\nexport const UndefinedProvider = new Error(\"DrawerContext.Provider is required and was undefined\");\n\nexport const useDrawer = () => {\n const context = useContext(DrawerContext);\n\n if (context === undefined) {\n throw UndefinedProvider;\n }\n\n return context;\n};\n","import { Theme, CSSObject } from \"@mui/material/styles\";\n\nexport const drawerWidth = 240;\n\nexport const openedMixin = (theme: Theme): CSSObject => ({\n width: drawerWidth,\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n overflowX: \"hidden\",\n});\n\nexport const closedMixin = (theme: Theme): CSSObject => ({\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n overflowX: \"hidden\",\n width: `calc(${theme.spacing(7)} + 1px)`,\n [theme.breakpoints.up(\"sm\")]: {\n width: `calc(${theme.spacing(8)} + 1px)`,\n },\n});\n","import { SxProps, Theme, styled, useTheme } from \"@mui/material/styles\";\nimport MuiDrawer, { drawerClasses } from \"@mui/material/Drawer\";\nimport { paperClasses } from \"@mui/material/Paper\";\nimport Divider from \"@mui/material/Divider\";\nimport IconButton from \"@mui/material/IconButton\";\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\nimport { DrawerComponent, DrawerProps, DrawerState, DrawerVariant } from \"./drawer.types\";\nimport { useDrawer } from \"~/drawer-provider/drawer-context\";\nimport { closedMixin, openedMixin } from \"~/drawer-provider/drawer-mixins\";\n\nexport const DrawerHeader = styled(\"div\")(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n padding: theme.spacing(0, 1),\n ...theme.mixins.toolbar,\n}));\n\nconst showCloseButton: Record<DrawerVariant, boolean> = {\n temporary: true,\n mini: true,\n persistent: true,\n clipped: false,\n};\n\nconst muiDrawerVariant: Record<DrawerVariant, \"permanent\" | \"persistent\" | \"temporary\"> = {\n temporary: \"temporary\",\n mini: \"permanent\",\n clipped: \"permanent\",\n persistent: \"persistent\",\n};\n\ntype SxGenerator = (state: DrawerState, theme: Theme) => SxProps<Theme>;\nconst NoopSxGenerator = () => ({});\nconst variantsSx: Readonly<Record<DrawerVariant, SxGenerator>> = {\n mini: (state: DrawerState, theme: Theme) => ({\n boxSizing: \"border-box\",\n [`& .${paperClasses.root}`]: {\n zIndex: theme.zIndex.drawer - 1,\n },\n }),\n temporary: NoopSxGenerator,\n clipped: NoopSxGenerator,\n persistent: NoopSxGenerator,\n};\n\nexport const Drawer: DrawerComponent = ({ children, ...rest }: DrawerProps) => {\n const theme = useTheme();\n const { state, switchState, underAppBar, close, drawerWidth, variant } = useDrawer();\n\n const sx: any = {\n width: drawerWidth,\n flexShrink: 0,\n whiteSpace: \"nowrap\",\n ...(state === \"open\" && {\n ...openedMixin(theme),\n [`& .${drawerClasses.paper}`]: openedMixin(theme),\n }),\n ...(state !== \"open\" && {\n ...closedMixin(theme),\n [`& .${drawerClasses.paper}`]: closedMixin(theme),\n }),\n ...variantsSx[variant](state, theme),\n };\n\n return (\n <MuiDrawer\n open={state === \"open\"}\n variant={muiDrawerVariant[variant]}\n role=\"menu\"\n aria-hidden={state === \"close\"}\n onClose={close}\n sx={sx}\n {...rest}\n >\n <DrawerHeader>\n {!underAppBar && showCloseButton[variant] && (\n <IconButton onClick={switchState}>\n <ChevronLeftIcon />\n </IconButton>\n )}\n </DrawerHeader>\n <Divider />\n {children}\n </MuiDrawer>\n );\n};\n","import { useState } from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { DrawerContext } from \"./drawer-context\";\nimport { DrawerState, DrawerVariant } from \"~/drawer\";\nimport { drawerWidth } from \"./drawer-mixins\";\n\nconst initialState: Record<DrawerVariant, DrawerState> = {\n temporary: \"close\",\n mini: \"collapse\",\n clipped: \"open\",\n persistent: \"close\",\n};\n\nconst targetStates: Record<DrawerVariant, [DrawerState, DrawerState]> = {\n temporary: [\"close\", \"open\"],\n mini: [\"collapse\", \"open\"],\n clipped: [\"open\", \"open\"],\n persistent: [\"close\", \"open\"],\n};\n\nexport type DrawerProviderProps = PropsWithChildren<{\n initialState?: DrawerState;\n underAppBar?: boolean;\n drawerWidth?: number;\n variant?: DrawerVariant;\n selectedItemId?: string;\n onStateChange?: (newState: DrawerState) => void;\n}>;\n\nexport const DrawerProvider = ({\n children,\n initialState: initialStateProp,\n variant = \"temporary\",\n drawerWidth: drawerWidthProp = drawerWidth,\n underAppBar = false,\n selectedItemId,\n onStateChange = () => null,\n}: DrawerProviderProps) => {\n const [state, setState] = useState<DrawerState>(initialStateProp || initialState[variant]);\n\n const handleChangeState = (newState: DrawerState) => {\n onStateChange(newState);\n setState(newState);\n };\n\n return (\n <DrawerContext.Provider\n value={{\n state,\n variant,\n selectedItemId,\n underAppBar,\n drawerWidth: drawerWidthProp,\n switchState: () => handleChangeState(targetStates[variant][state === \"open\" ? 0 : 1]),\n collapse: () => handleChangeState(\"collapse\"),\n close: () => handleChangeState(\"close\"),\n open: () => handleChangeState(\"open\"),\n setState,\n }}\n >\n {children}\n </DrawerContext.Provider>\n );\n};\n","import ListSubheader, { ListSubheaderProps } from \"@mui/material/ListSubheader\";\nimport { styled } from \"@mui/material/styles\";\nimport { DrawerSize } from \"~/drawer\";\n\nexport interface DrawerSubheaderProps extends ListSubheaderProps {\n /**\n * Item size. default to medium\n */\n size?: DrawerSize;\n}\n\nexport const DrawerSubheader = styled(ListSubheader, {\n shouldForwardProp: (prop) => prop !== \"size\",\n})<DrawerSubheaderProps>(({ size, theme }) => ({\n lineHeight: size === \"small\" ? theme.typography.pxToRem(40) : undefined,\n}));\n","import { FunctionComponent, ReactElement } from \"react\";\nimport { BulletVariant } from \"~/bullet\";\nimport { LabelVariant } from \"~/label\";\nimport { DrawerProps as MuiDrawerProps } from \"@mui/material/Drawer\";\nimport { Theme } from \"@mui/material/styles\";\nimport { DrawerAppBarProps } from \"~/drawer-app-bar\";\n\nexport type DrawerVariant = \"temporary\" | \"mini\" | \"persistent\" | \"clipped\";\nexport type DrawerState = \"open\" | \"collapse\" | \"close\";\nexport type DrawerSize = \"small\" | \"medium\";\n\nexport interface DrawerItemAvatar {\n src: string;\n alt: string;\n}\n\nexport interface DrawerItemLabel {\n text: string;\n variant: LabelVariant;\n}\n\nexport interface DrawerItemBullet {\n variant: BulletVariant;\n}\n\nexport interface DrawerNavigationItemLink {\n id: string;\n text: string;\n href: string;\n icon?: ReactElement;\n avatar?: DrawerItemAvatar;\n label?: DrawerItemLabel;\n bullet?: DrawerItemBullet;\n}\n\nexport type DrawerNavigationItemCollapsable = Pick<\n DrawerNavigationItemLink,\n \"id\" | \"text\" | \"icon\"\n> & {\n items: DrawerNavigationItem[];\n};\n\nexport type DrawerNavigationItem = DrawerNavigationItemLink | DrawerNavigationItemCollapsable;\n\nexport interface DrawerNavigationSection {\n title?: string;\n items: DrawerNavigationItem[];\n}\n\nexport interface DrawerNavigation {\n items: DrawerNavigationSection[];\n}\n\nexport interface DrawerContentProps {\n /**\n * Object with the content that has to be rendered\n */\n nav: DrawerNavigation;\n /**\n * Item size. default to medium\n */\n size?: DrawerSize;\n}\n\nexport type DrawerContentComponent = FunctionComponent<DrawerContentProps>;\nexport type DrawerContentElement = ReactElement<DrawerContentProps, DrawerContentComponent>;\n\nexport interface DrawerProps extends MuiDrawerProps {\n children: DrawerContentElement;\n}\n\nexport type DrawerComponent = FunctionComponent<DrawerProps>;\nexport type DrawerElement = ReactElement<DrawerProps, DrawerComponent>;\n\nexport const getDrawerItemColors = (theme: Theme, selected: boolean | undefined) => ({\n color: selected ? theme.palette.primary.main : undefined,\n fontWeight: selected ? theme.typography.fontWeightBold : theme.typography.fontWeightMedium,\n});\n\nexport type DrawerAppBarComponent = FunctionComponent<DrawerAppBarProps>;\nexport type DrawerAppBarElement = ReactElement<DrawerAppBarProps, DrawerAppBarComponent>;\n","import { ReactElement } from \"react\";\nimport Avatar from \"@mui/material/Avatar\";\nimport ListItemAvatar from \"@mui/material/ListItemAvatar\";\nimport ListItemButton from \"@mui/material/ListItemButton\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport { SxProps, Theme, styled, useTheme } from \"@mui/material/styles\";\nimport { Bullet } from \"~/bullet\";\nimport { Label } from \"~/label\";\nimport {\n DrawerItemAvatar,\n DrawerItemBullet,\n DrawerItemLabel,\n DrawerSize,\n getDrawerItemColors,\n} from \"~/drawer/drawer.types\";\nimport { Link } from \"~/link\";\nimport { useDrawer } from \"~/drawer-provider\";\n\nexport interface DrawerItemLinkProps {\n /**\n * Item size. default to medium\n */\n size?: DrawerSize;\n /**\n * Text displayed inside the item\n */\n text: string;\n /**\n * Url where the user is going to be redirected\n * if the item is clicked\n */\n href: string;\n /**\n * Icon displayed to the left\n */\n icon?: ReactElement;\n /**\n * Avatar displayed to the left\n */\n avatar?: DrawerItemAvatar;\n /**\n * Label with extra info displayed to the right\n */\n label?: DrawerItemLabel;\n /**\n * Bullet to attract the user attention displyed to the right\n */\n bullet?: DrawerItemBullet;\n /**\n * The item has to be marked as selected\n */\n selected?: boolean;\n /**\n * Deep level of this item inside the submenus\n */\n level: number;\n /**\n * Custom styles\n */\n sx?: SxProps<Theme>;\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nconst StyledLink = styled(Link)(({ theme }) => {\n return {\n color: theme.palette.text.primary,\n };\n});\n\nconst sxCollapsedIcon = {\n minWidth: 0,\n justifyContent: \"center\",\n marginRight: \"auto\",\n};\n\n/**\n * Clicable item inside a drawer\n */\nexport const DrawerItemLink = ({\n text,\n icon,\n avatar,\n label,\n bullet,\n href,\n selected,\n size = \"medium\",\n level,\n sx,\n}: DrawerItemLinkProps) => {\n const { state } = useDrawer();\n const theme = useTheme();\n const { color, fontWeight } = getDrawerItemColors(theme, selected);\n\n return (\n <ListItemButton\n LinkComponent={StyledLink}\n dense={size === \"small\"}\n aria-label={text}\n href={href}\n selected={selected}\n sx={{\n ...sx,\n pl: state === \"open\" ? theme.spacing(2 + 1.5 * level) : undefined,\n ...(state === \"collapse\" && {\n paddingHorizontal: theme.spacing(2.5),\n justifyContent: \"center\",\n }),\n }}\n >\n {icon && (\n <ListItemIcon sx={{ color, ...(state === \"collapse\" && level === 0 && sxCollapsedIcon) }}>\n {icon}\n </ListItemIcon>\n )}\n {avatar && (\n <ListItemAvatar\n sx={{\n ...(state === \"collapse\" && level === 0 && sxCollapsedIcon),\n }}\n >\n <Avatar\n alt={avatar.alt}\n src={avatar.src}\n sx={{\n ...(size === \"small\" && { width: 24, height: 24 }),\n ...(state === \"collapse\" && { width: 30, height: 30 }),\n }}\n />\n </ListItemAvatar>\n )}\n <ListItemText\n disableTypography\n primary={text}\n sx={{ color, fontWeight, opacity: state === \"collapse\" && level === 0 ? 0 : undefined }}\n />\n {label && state === \"open\" && (\n <Label text={label.text} variant={label.variant} sx={{ ml: 2 }} />\n )}\n {bullet && state === \"open\" && <Bullet variant={bullet.variant} sx={{ ml: 2 }} />}\n </ListItemButton>\n );\n};\n","import { DrawerMenuItem } from \"./drawer-menu-item\";\nimport { DrawerNavigationItem, DrawerSize } from \"~/drawer/drawer.types\";\nimport { DrawerItemLink } from \"./drawer-item-link\";\nimport { useDrawer } from \"~/drawer-provider\";\n\nexport interface DrawerItemProps {\n /**\n * Data to be rendered\n */\n item: DrawerNavigationItem;\n /**\n * Size of the item\n */\n size?: DrawerSize;\n /**\n * Deep level of this item inside the submenus\n */\n level?: number;\n}\n\nexport const DrawerItem = ({ item, size = \"medium\", level = 0 }: DrawerItemProps) => {\n const { selectedItemId } = useDrawer();\n if (\"items\" in item) {\n const { id, text, icon, items } = item;\n const childrenSelected = items.some((item) => item.id === selectedItemId);\n return (\n <DrawerMenuItem\n size={size}\n selected={id === selectedItemId || childrenSelected}\n text={text}\n icon={icon}\n items={items}\n level={level}\n />\n );\n } else {\n const { id, text, icon, avatar, label, bullet, href } = item;\n return (\n <DrawerItemLink\n selected={id === selectedItemId}\n size={size}\n text={text}\n icon={icon}\n avatar={avatar}\n label={label}\n bullet={bullet}\n href={href}\n level={level}\n />\n );\n }\n};\n","import ListItemButton from \"@mui/material/ListItemButton\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport Collapse from \"@mui/material/Collapse\";\nimport List from \"@mui/material/List\";\nimport Popover from \"@mui/material/Popover\";\nimport { SxProps, useTheme, Theme } from \"@mui/material/styles\";\nimport { ReactElement, useState, useRef } from \"react\";\nimport { DrawerNavigationItem, DrawerSize, getDrawerItemColors } from \"~/drawer\";\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport ChevronRightIcon from \"@mui/icons-material/ChevronRight\";\nimport { DrawerItem } from \"./drawer-item\";\nimport { useDrawer } from \"~/drawer-provider\";\n\nexport interface DrawerMenuItemProps {\n /**\n * Item size. default to medium\n */\n size?: DrawerSize;\n /**\n * Text displayed inside the item\n */\n text: string;\n /**\n * Icon displayed to the left\n */\n icon?: ReactElement;\n /**\n * The item has to be marked as selected\n */\n selected?: boolean;\n /**\n * Items that are going to be displayed inside\n * the collapsable\n */\n items: DrawerNavigationItem[];\n /**\n * Deep level of this item inside the submenus\n */\n level: number;\n /**\n * Custom styles\n */\n sx?: SxProps<Theme>;\n}\n\nexport const DrawerMenuItem = ({\n text,\n icon,\n selected,\n items,\n size = \"medium\",\n level,\n sx = {},\n}: DrawerMenuItemProps) => {\n const { state } = useDrawer();\n const anchorEl = useRef<HTMLDivElement | null>(null);\n const { palette, spacing } = useTheme();\n const [menuOpen, setMenuOpen] = useState(false);\n const { color, fontWeight } = getDrawerItemColors(useTheme(), selected);\n\n const submenu = (\n <List component=\"div\" disablePadding>\n {items.map((item) => (\n <DrawerItem key={item.id} level={level + 1} item={item} size={size} />\n ))}\n </List>\n );\n\n const collapsedButtonSx =\n state === \"collapse\" && level === 0\n ? {\n position: \"absolute\",\n right: 0,\n }\n : {};\n\n return (\n <>\n <ListItemButton\n ref={anchorEl}\n selected={selected}\n aria-label={text}\n onClick={() => setMenuOpen((o) => !o)}\n dense={size === \"small\"}\n sx={{\n ...sx,\n pl: state === \"open\" ? spacing(2 + 1.5 * level) : undefined,\n backgroundColor: menuOpen ? palette.action.hover : undefined,\n }}\n >\n {icon && <ListItemIcon sx={{ color }}>{icon}</ListItemIcon>}\n <ListItemText\n disableTypography\n primary={text}\n sx={{ color, fontWeight, opacity: state === \"collapse\" && level === 0 ? 0 : undefined }}\n />\n {menuOpen && state === \"open\" ? (\n <ExpandMoreIcon sx={[{ color, ml: 2 }, collapsedButtonSx]} />\n ) : (\n <ChevronRightIcon sx={[{ color, ml: 2 }, collapsedButtonSx]} />\n )}\n </ListItemButton>\n {state === \"open\" ? (\n <Collapse\n in={menuOpen}\n timeout=\"auto\"\n unmountOnExit\n aria-label={`${text} collapse submenu`}\n >\n {submenu}\n </Collapse>\n ) : (\n <Popover\n open={menuOpen}\n PaperProps={{\n elevation: 0,\n variant: \"outlined\",\n }}\n aria-label={`${text} popover submenu`}\n anchorEl={anchorEl.current}\n onClose={() => setMenuOpen(false)}\n anchorOrigin={{\n vertical: \"top\",\n horizontal: \"right\",\n }}\n >\n {submenu}\n </Popover>\n )}\n </>\n );\n};\n","import List from \"@mui/material/List\";\nimport { useTheme } from \"@mui/material/styles\";\nimport { DrawerNavigationItem, DrawerSize } from \"~/drawer\";\nimport { DrawerSubheader } from \"~/drawer-subheader\";\nimport { DrawerItem } from \"~/drawer-item\";\nimport { useDrawer } from \"~/drawer-provider\";\n\nexport interface DrawerSectionProps {\n /**\n * Section title\n */\n title?: string;\n /**\n * List of items of that section\n */\n items: DrawerNavigationItem[];\n /**\n * Item size. default to medium\n */\n size?: DrawerSize;\n}\n\n/**\n * Render a group of items inside the drawer\n * with an optional title\n */\nexport const DrawerSection = ({ title, items, size = \"medium\" }: DrawerSectionProps) => {\n const { state } = useDrawer();\n const { spacing } = useTheme();\n return (\n <>\n {title && state === \"open\" && (\n <DrawerSubheader size={size} role=\"heading\">\n {title}\n </DrawerSubheader>\n )}\n <List\n sx={{\n paddingTop: size === \"small\" ? spacing(0) : undefined,\n paddingY: state === \"collapse\" ? 0 : undefined,\n }}\n >\n {items.map((item) => (\n <DrawerItem key={item.id} item={item} size={size} />\n ))}\n </List>\n </>\n );\n};\n","import MuiAppBar from \"@mui/material/AppBar\";\nimport Toolbar from \"@mui/material/Toolbar\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Typography from \"@mui/material/Typography\";\nimport { useTheme, Theme } from \"@mui/material/styles\";\nimport MenuIcon from \"@mui/icons-material/Menu\";\nimport { useDrawer } from \"~/drawer-provider\";\nimport { AppBarProps as MuiAppBarProps } from \"@mui/material\";\nimport { DrawerState, DrawerVariant } from \"~/drawer\";\n\nconst moveWithDrawer: Record<DrawerVariant, boolean> = {\n temporary: false,\n mini: true,\n persistent: true,\n clipped: true,\n};\n\nconst showMenuButton: Record<DrawerVariant, (state: DrawerState) => boolean> = {\n temporary: () => true,\n mini: (state) => state !== \"open\",\n persistent: () => true,\n clipped: () => false,\n};\n\nexport interface DrawerAppBarProps extends MuiAppBarProps {\n title?: string;\n}\n\nexport const DrawerAppBar = ({ title, sx, children, ...rest }: DrawerAppBarProps) => {\n const theme = useTheme();\n const { state, variant, switchState, drawerWidth, underAppBar } = useDrawer();\n\n const rootSx =\n (moveWithDrawer[variant] &&\n !underAppBar && {\n transition: theme.transitions.create([\"width\", \"margin\"], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n ...(state === \"open\" && {\n marginLeft: drawerWidth,\n width: `calc(100% - ${drawerWidth}px)`,\n transition: theme.transitions.create([\"width\", \"margin\"], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n }),\n }) ||\n {};\n\n return (\n <MuiAppBar\n position={underAppBar ? \"fixed\" : undefined}\n {...rest}\n sx={{\n ...sx,\n ...rootSx,\n zIndex: (theme: Theme) => theme.zIndex.drawer + (underAppBar ? 1 : 0),\n }}\n >\n <Toolbar>\n <IconButton\n color=\"inherit\"\n aria-label=\"open drawer\"\n onClick={switchState}\n edge=\"start\"\n sx={{\n marginRight: 5,\n display: showMenuButton[variant](state) ? undefined : \"none\",\n }}\n >\n <MenuIcon />\n </IconButton>\n {title && (\n <Typography variant=\"h6\" component=\"h1\" role=\"heading\" aria-level={1} noWrap>\n {title}\n </Typography>\n )}\n {children}\n </Toolbar>\n </MuiAppBar>\n );\n};\n","import { styled, useTheme } from \"@mui/material/styles\";\nimport { PropsWithChildren } from \"react\";\nimport { DrawerHeader, useDrawer } from \"../drawer-provider\";\nimport { DrawerVariant } from \"~/drawer\";\n\nconst drawerSpace: Record<DrawerVariant, boolean> = {\n temporary: false,\n mini: true,\n clipped: true,\n persistent: true,\n};\n\nconst StyledDiv = styled(\"div\")(({ theme }) => {\n const { spacing } = useTheme();\n const { drawerWidth, state, variant } = useDrawer();\n\n const marginLeft = drawerSpace[variant]\n ? state === \"open\"\n ? drawerWidth\n : state === \"collapse\"\n ? spacing(8)\n : 0\n : 0;\n\n return {\n marginLeft,\n transition: theme.transitions.create(\"margin\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n };\n});\n\nexport type DrawerMainProps = PropsWithChildren;\n\nexport const DrawerMain = ({ children }: DrawerMainProps) => (\n <StyledDiv>\n <DrawerHeader />\n {children}\n </StyledDiv>\n);\n","import CircularProgress from \"@mui/material/CircularProgress\";\nimport Box from \"@mui/material/Box\";\n\n/**\n * Displays a centered loading indicator\n */\nexport const LoadingArea = () => {\n return (\n <Box width={1} height={1} display=\"flex\" justifyContent=\"center\" alignItems=\"center\">\n <CircularProgress />\n </Box>\n );\n};\n","import { ReactNode, useId } from \"react\";\nimport { styled } from \"@mui/material/styles\";\nimport Box from \"@mui/material/Box\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport FormControl from \"@mui/material/FormControl\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport LinearProgress from \"@mui/material/LinearProgress\";\nimport MuiSelect from \"@mui/material/Select\";\nimport { CenterContainer } from \"~/center-container\";\nimport { SelectInputProps } from \"@mui/material/Select/SelectInput\";\n\nexport type SelectSize = \"small\" | \"medium\";\n\nexport interface SelectProps<T> {\n label: string;\n value: T;\n loading?: boolean;\n fetching?: boolean;\n size?: SelectSize;\n color?: string;\n fullWidth?: boolean;\n children?: ReactNode;\n onChange?: SelectInputProps<T>[\"onChange\"];\n}\n\nconst ProgressSize: Record<SelectSize, number> = {\n small: 15,\n medium: 20,\n};\n\nexport const Select = <T extends ReactNode>({\n label,\n value,\n loading = false,\n fetching = false,\n size = \"medium\",\n fullWidth = false,\n color,\n children,\n onChange,\n}: SelectProps<T>) => {\n const id = useId();\n\n const renderValue = (value: T): ReactNode => {\n if (fetching) {\n return (\n <CenterContainer centerVertical centerHorizontal>\n <CircularProgress color=\"inherit\" size={ProgressSize[size]} />\n </CenterContainer>\n );\n }\n\n if (loading) {\n return (\n <Box display=\"flex\" flexDirection=\"column\">\n {value}\n <LinearProgress\n color=\"inherit\"\n sx={{ position: \"absolute\", left: 0, right: 0, bottom: 0 }}\n />\n </Box>\n );\n }\n\n return value;\n };\n\n const StyledFormControl = styled(FormControl)(() => {\n if (!color) {\n return {};\n }\n\n return {\n label: {\n color,\n },\n \".MuiOutlinedInput-notchedOutline\": {\n borderColor: `${color} !important`,\n },\n \".MuiInputBase-root\": {\n color,\n },\n \".MuiSelect-icon\": {\n fill: color,\n },\n };\n });\n\n return (\n <StyledFormControl fullWidth={fullWidth}>\n <InputLabel id={id}>{label}</InputLabel>\n <MuiSelect\n labelId={id}\n id={id}\n value={value}\n label={label}\n onChange={onChange}\n disabled={fetching}\n size={size}\n renderValue={renderValue}\n >\n {children}\n </MuiSelect>\n </StyledFormControl>\n );\n};\n","'use client';\n\nimport * as React from 'react';\nlet globalId = 0;\nfunction useGlobalId(idOverride) {\n const [defaultId, setDefaultId] = React.useState(idOverride);\n const id = idOverride || defaultId;\n React.useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`mui-${globalId}`);\n }\n }, [defaultId]);\n return id;\n}\n\n// downstream bundlers may remove unnecessary concatenation, but won't remove toString call -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseId = React['useId'.toString()];\n/**\n *\n * @example <div id={useId()} />\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride != null ? idOverride : reactId;\n }\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n return useGlobalId(idOverride);\n}","import { TextFieldProps as MuiTextFieldProps } from \"@mui/material/TextField\";\nimport CircularProgress, { circularProgressClasses } from \"@mui/material/CircularProgress\";\nimport FormControl from \"@mui/material/FormControl\";\nimport FormHelperText from \"@mui/material/FormHelperText\";\nimport { iconButtonClasses } from \"@mui/material/IconButton\";\nimport LinearProgress, { linearProgressClasses } from \"@mui/material/LinearProgress\";\nimport OutlinedInput, { outlinedInputClasses } from \"@mui/material/OutlinedInput\";\nimport InputLabel, { inputLabelClasses } from \"@mui/material/InputLabel\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport { autocompleteClasses } from \"@mui/material/Autocomplete\";\nimport useId from \"@mui/utils/useId\";\n\nexport type TextFieldProps = MuiTextFieldProps & {\n fetching?: boolean;\n loading?: boolean;\n hexColor?: string;\n};\n\nexport const TextField = ({\n id: overrideId,\n label,\n InputLabelProps,\n InputProps,\n fetching,\n loading,\n helperText,\n hexColor,\n size,\n fullWidth,\n sx,\n ...rest\n}: TextFieldProps) => {\n const id = useId(overrideId);\n const helperTextId = helperText && id ? `${id}-helper-text` : undefined;\n const inputLabelId = label && id ? `${id}-label` : undefined;\n\n const hexColorSx = hexColor\n ? {\n [`& .${outlinedInputClasses.notchedOutline}`]: {\n borderColor: `${hexColor} !important`,\n },\n [`& .${inputLabelClasses.root}`]: {\n color: hexColor,\n },\n [`& .${outlinedInputClasses.input}`]: {\n color: hexColor,\n },\n [`& .${circularProgressClasses.root}`]: {\n color: hexColor,\n },\n [`& .${linearProgressClasses.bar}`]: {\n backgroundColor: hexColor,\n },\n [`& .${autocompleteClasses.endAdornment} .${iconButtonClasses.root}`]: {\n color: hexColor,\n },\n }\n : {};\n\n return (\n <FormControl sx={hexColorSx} fullWidth={fullWidth}>\n <InputLabel\n size={size === \"small\" ? \"small\" : \"normal\"}\n id={inputLabelId}\n htmlFor={id}\n {...InputLabelProps}\n >\n {label}\n </InputLabel>\n <OutlinedInput\n {...InputProps}\n id={id}\n label={label}\n size={size}\n fullWidth={fullWidth}\n endAdornment={\n <InputAdornment position=\"end\">\n {InputProps?.endAdornment}\n {loading ? <CircularProgress color=\"inherit\" size={20} sx={{ ml: 1 }} /> : null}\n </InputAdornment>\n }\n sx={sx}\n {...(rest as any)}\n />\n {fetching && !loading && (\n <LinearProgress\n color=\"inherit\"\n sx={{ position: \"absolute\", left: 0, right: 0, bottom: 0 }}\n />\n )}\n {helperText && <FormHelperText id={helperTextId}>{helperText}</FormHelperText>}\n </FormControl>\n );\n};\n","import Box, { BoxProps } from \"@mui/material/Box\";\nimport { styled } from \"@mui/material/styles\";\nimport { DateCalendar, PickersDay, PickersDayProps } from \"@mui/x-date-pickers\";\nimport { endOfWeek, format, isAfter, isSameDay, startOfWeek } from \"date-fns\";\nimport { isBefore } from \"date-fns/esm\";\nimport { useState } from \"react\";\n\ntype DateRange = [Date, Date | undefined];\n\ninterface CustomPickerDayProps extends BoxProps {\n dayIsBetween: boolean;\n isFirstDay: boolean;\n isLastDay: boolean;\n}\n\nconst CustomPickersDayBackground = styled(Box, {\n shouldForwardProp: (prop) =>\n prop !== \"dayIsBetween\" &&\n prop !== \"isFirstDay\" &&\n prop !== \"isLastDay\" &&\n prop !== \"isStartOfWeek\" &&\n prop !== \"isEndOfWeek\",\n})<CustomPickerDayProps>(({ theme, dayIsBetween, isFirstDay, isLastDay }) => {\n return {\n ...((isFirstDay || isLastDay || dayIsBetween) && {\n borderRadius: 0,\n backgroundColor: `${theme.palette.primary.light}40`,\n margin: 0,\n }),\n ...(isFirstDay && {\n borderTopLeftRadius: \"50%\",\n borderBottomLeftRadius: \"50%\",\n }),\n ...(isLastDay && {\n borderTopRightRadius: \"50%\",\n borderBottomRightRadius: \"50%\",\n }),\n };\n}) as React.ComponentType<CustomPickerDayProps>;\n\nconst Day = (props: PickersDayProps<Date> & { dateRange?: DateRange | null }) => {\n const { day, dateRange, ...other } = props;\n\n if (dateRange == null) {\n return <PickersDay day={day} {...other} />;\n }\n\n const [start, end] = dateRange;\n\n const dayIsBetween = !!end && isAfter(day, start) && isBefore(day, end);\n const isFirstDay = isSameDay(day, start);\n const isLastDay = !!end && isSameDay(day, end);\n const isStartOfWeek = isSameDay(day, startOfWeek(day));\n const isEndOfWeek = isSameDay(day, endOfWeek(day));\n\n return (\n <CustomPickersDayBackground\n dayIsBetween={dayIsBetween}\n isFirstDay={isFirstDay || (dayIsBetween && isStartOfWeek)}\n isLastDay={isLastDay || (dayIsBetween && isEndOfWeek)}\n aria-label={format(day, \"yyyy-MM-dd\")}\n aria-selected={dayIsBetween || isFirstDay || isLastDay}\n role=\"gridcell\"\n >\n <PickersDay {...other} day={day} selected={isFirstDay || isLastDay} />\n </CustomPickersDayBackground>\n );\n};\n\nexport interface DateRangeCalendarProps {\n defaultValue: DateRange;\n onValueChange: (value: DateRange, updatedIndex: number) => void;\n}\nexport const DateRangeCalendar = ({ defaultValue, onValueChange }: DateRangeCalendarProps) => {\n const [value, setValue] = useState(defaultValue);\n const [index, setIndex] = useState(0);\n\n const setValueRange = (newRange: DateRange, index: number, newIndex: number) => {\n setValue(newRange);\n onValueChange(newRange, index);\n setIndex(newIndex);\n };\n\n const handleChange = (newValue: Date | null) => {\n if (!newValue) {\n return;\n }\n\n // If is the end date and is minor than the start date\n if (index === 1 && newValue < value[0]) {\n return setValueRange([newValue, undefined], 0, 1);\n }\n\n // If is the start date and is bigger than the end date\n if (index === 0 && value[1] && newValue > value[1]) {\n return setValueRange([newValue, undefined], 0, 1);\n }\n\n // Default case\n setValueRange(\n [index === 0 ? newValue : value[0], index === 1 ? newValue : value[1]],\n index,\n index === 0 ? 1 : 0,\n );\n };\n return (\n <DateCalendar\n value={null}\n onChange={handleChange}\n slots={{ day: Day }}\n slotProps={{\n day: {\n dateRange: value,\n } as any,\n }}\n aria-label=\"calendar range picker\"\n />\n );\n};\n","import Typography from \"@mui/material/Typography\";\nimport { useTheme } from \"@mui/material/styles\";\nimport { Variant } from \"@mui/material/styles/createTypography\";\n\ntype ActionVariant = \"primary\" | \"error\" | \"warning\" | \"success\";\n\nexport interface ActionHeaderProps {\n variant?: ActionVariant;\n title: string;\n titleVariant?: Extract<Variant, \"h4\" | \"h5\" | \"h6\">;\n}\n\nexport const ActionHeader = ({\n title,\n titleVariant = \"h4\",\n variant = \"primary\",\n}: ActionHeaderProps) => {\n const { palette } = useTheme();\n\n const titleColor: Record<ActionVariant, string | undefined> = {\n primary: undefined,\n error: \"error\",\n warning: palette.warning.main,\n success: palette.success.main,\n };\n return (\n <Typography\n color={titleColor[variant]}\n variant={titleVariant}\n pb={1}\n borderBottom={1}\n borderColor=\"grey.300\"\n >\n {title}\n </Typography>\n );\n};\n","import { createContext, Dispatch, SetStateAction } from \"react\";\n\nexport const TabCardContext = createContext<[number, Dispatch<SetStateAction<number>>]>([\n 0,\n () => null,\n]);\nexport const TabCardContextProvider = TabCardContext.Provider;\n","import { styled } from \"@mui/material/styles\";\nimport Paper from \"@mui/material/Paper\";\nimport Tabs from \"@mui/material/Tabs\";\nimport Tab from \"@mui/material/Tab\";\nimport Box from \"@mui/material/Box\";\nimport { PropsWithChildren, ReactElement, SyntheticEvent, useState } from \"react\";\nimport { TabCardContextProvider } from \"./tab-card.context\";\nimport { useGetDefaultThemeColor } from \"~/utils\";\n\nexport interface TabData {\n text: string;\n icon?: ReactElement;\n}\n\ninterface StyledTabsProps {\n children?: React.ReactNode;\n value: number;\n onChange: (event: React.SyntheticEvent, newValue: number) => void;\n}\n\nconst StyledTabs = styled((props: StyledTabsProps) => (\n <Tabs {...props} TabIndicatorProps={{ children: <span className=\"MuiTabs-indicatorSpan\" /> }} />\n))(({ theme }) => ({\n minHeight: theme.spacing(5),\n \"& .MuiTabs-indicator\": {\n display: \"flex\",\n justifyContent: \"center\",\n backgroundColor: \"transparent\",\n },\n \"& .MuiTabs-indicatorSpan\": {\n maxWidth: 40,\n width: \"100%\",\n backgroundColor: theme.palette.primary.main,\n },\n}));\n\nconst StyledTab = styled(Tab)(({ theme }) => ({\n textTransform: \"none\",\n fontWeight: theme.typography.fontWeightRegular,\n marginRight: theme.spacing(1),\n color: theme.palette.text.secondary,\n paddingTop: 0,\n paddingBottom: 0,\n minHeight: theme.spacing(5),\n \"&.Mui-selected\": {\n color: theme.palette.text.secondary,\n fontWeight: theme.typography.fontWeightBold,\n },\n}));\n\nexport type TabCardProps = PropsWithChildren<{\n tabs: TabData[];\n initialTab?: number;\n onChangeTab?: (tab: TabData, index: number) => void;\n}>;\n\nexport const TabCard = ({\n children,\n tabs,\n initialTab = 0,\n onChangeTab = () => null,\n}: TabCardProps) => {\n const bgColor = useGetDefaultThemeColor();\n const [selectedTab, setSelectedTab] = useState(initialTab);\n\n const handleChangeTab = (_: SyntheticEvent<Element, Event>, index: number) => {\n setSelectedTab(index);\n onChangeTab(tabs[index], index);\n };\n\n return (\n <TabCardContextProvider value={[selectedTab, setSelectedTab]}>\n <Paper variant=\"outlined\">\n <Box bgcolor={bgColor}>\n <StyledTabs value={selectedTab} onChange={handleChangeTab}>\n {tabs.map(({ text, icon }) => (\n <StyledTab iconPosition=\"start\" disableRipple key={text} label={text} icon={icon} />\n ))}\n </StyledTabs>\n </Box>\n {children}\n </Paper>\n </TabCardContextProvider>\n );\n};\n","import { ReactElement } from \"react\";\nimport Box from \"@mui/material/Box\";\nimport Typography from \"@mui/material/Typography\";\nimport Button from \"@mui/material/Button\";\n\ntype IconColor =\n | \"inherit\"\n | \"action\"\n | \"disabled\"\n | \"primary\"\n | \"secondary\"\n | \"error\"\n | \"info\"\n | \"success\"\n | \"warning\";\n\nexport interface PlaceholderAction {\n id: string;\n text: string;\n href?: string;\n onClick?: () => void;\n}\n\nexport interface PlaceholderIconArgs {\n size: number;\n color: IconColor;\n}\n\nexport type PlaceholderIcon = ({ size, color }: PlaceholderIconArgs) => ReactElement;\n\nexport interface PlaceholderProps {\n title: string;\n subtitle: string;\n iconSize?: number;\n icon?: PlaceholderIcon;\n actions?: PlaceholderAction[];\n}\n\nexport const Placeholder = ({\n title,\n subtitle,\n icon,\n iconSize = 200,\n actions,\n}: PlaceholderProps) => {\n return (\n <Box\n display=\"flex\"\n flexDirection=\"column\"\n justifyContent=\"center\"\n alignItems=\"center\"\n textAlign=\"center\"\n >\n {icon && icon({ size: iconSize, color: \"primary\" })}\n <Typography variant=\"h4\" role=\"heading\" aria-level={1}>\n {title}\n </Typography>\n <Typography variant=\"subtitle1\" role=\"heading\" aria-level={2} sx={{ mt: 2 }}>\n {subtitle}\n </Typography>\n {actions && (\n <Box sx={{ pt: 2 }}>\n {actions.map(({ id, text, href, onClick }, index) => (\n <Button\n key={id}\n role=\"button\"\n variant=\"contained\"\n href={href}\n onClick={onClick}\n sx={{ mr: index < actions.length - 1 ? 2 : 0 }}\n >\n {text}\n </Button>\n ))}\n </Box>\n )}\n </Box>\n );\n};\n","import Box from \"@mui/material/Box\";\nimport Skeleton from \"@mui/material/Skeleton\";\n\nexport interface SkeletonCardProps {\n width?: number | string;\n animation?: \"pulse\" | \"wave\" | false;\n}\n\nexport const SkeletonCard = ({ width = \"100%\", animation = false }: SkeletonCardProps) => {\n return (\n <Box width={width}>\n <Skeleton animation={animation} variant=\"rectangular\" height={118} />\n <Skeleton animation={animation} variant=\"rectangular\" height={16} sx={{ my: 1 }} />\n <Skeleton animation={animation} variant=\"rectangular\" width=\"80%\" height={16} />\n </Box>\n );\n};\n","import Grid from \"@mui/material/Grid\";\nimport { newArrayWithSize } from \"~/utils\";\nimport { SkeletonCard } from \"~/skeleton-card\";\n\nexport interface SkeletonGridProps {\n size?: number;\n}\n\nexport const SkeletonGrid = ({ size = 20 }: SkeletonGridProps) => {\n return (\n <Grid container spacing={2}>\n {newArrayWithSize(size, 0).map((_, i) => (\n <Grid item key={i} xs={4}>\n <SkeletonCard width={1} />\n </Grid>\n ))}\n </Grid>\n );\n};\n","export default function chainPropTypes(propType1, propType2) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return function validate(...args) {\n return propType1(...args) || propType2(...args);\n };\n}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","import PropTypes from 'prop-types';\nimport chainPropTypes from './chainPropTypes';\nfunction isClassComponent(elementType) {\n // elementType.prototype?.isReactComponent\n const {\n prototype = {}\n } = elementType;\n return Boolean(prototype.isReactComponent);\n}\nfunction acceptingRef(props, propName, componentName, location, propFullName) {\n const element = props[propName];\n const safePropName = propFullName || propName;\n if (element == null ||\n // When server-side rendering React doesn't warn either.\n // This is not an accurate check for SSR.\n // This is only in place for Emotion compat.\n // TODO: Revisit once https://github.com/facebook/react/issues/20047 is resolved.\n typeof window === 'undefined') {\n return null;\n }\n let warningHint;\n const elementType = element.type;\n /**\n * Blacklisting instead of whitelisting\n *\n * Blacklisting will miss some components, such as React.Fragment. Those will at least\n * trigger a warning in React.\n * We can't whitelist because there is no safe way to detect React.forwardRef\n * or class components. \"Safe\" means there's no public API.\n *\n */\n if (typeof elementType === 'function' && !isClassComponent(elementType)) {\n warningHint = 'Did you accidentally use a plain function component for an element instead?';\n }\n if (warningHint !== undefined) {\n return new Error(`Invalid ${location} \\`${safePropName}\\` supplied to \\`${componentName}\\`. ` + `Expected an element that can hold a ref. ${warningHint} ` + 'For more information see https://mui.com/r/caveat-with-refs-guide');\n }\n return null;\n}\nconst elementAcceptingRef = chainPropTypes(PropTypes.element, acceptingRef);\nelementAcceptingRef.isRequired = chainPropTypes(PropTypes.element.isRequired, acceptingRef);\nexport default elementAcceptingRef;","import PropTypes from 'prop-types';\nimport chainPropTypes from './chainPropTypes';\nfunction isClassComponent(elementType) {\n // elementType.prototype?.isReactComponent\n const {\n prototype = {}\n } = elementType;\n return Boolean(prototype.isReactComponent);\n}\nfunction elementTypeAcceptingRef(props, propName, componentName, location, propFullName) {\n const propValue = props[propName];\n const safePropName = propFullName || propName;\n if (propValue == null ||\n // When server-side rendering React doesn't warn either.\n // This is not an accurate check for SSR.\n // This is only in place for emotion compat.\n // TODO: Revisit once https://github.com/facebook/react/issues/20047 is resolved.\n typeof window === 'undefined') {\n return null;\n }\n let warningHint;\n\n /**\n * Blacklisting instead of whitelisting\n *\n * Blacklisting will miss some components, such as React.Fragment. Those will at least\n * trigger a warning in React.\n * We can't whitelist because there is no safe way to detect React.forwardRef\n * or class components. \"Safe\" means there's no public API.\n *\n */\n if (typeof propValue === 'function' && !isClassComponent(propValue)) {\n warningHint = 'Did you accidentally provide a plain function component instead?';\n }\n if (warningHint !== undefined) {\n return new Error(`Invalid ${location} \\`${safePropName}\\` supplied to \\`${componentName}\\`. ` + `Expected an element type that can hold a ref. ${warningHint} ` + 'For more information see https://mui.com/r/caveat-with-refs-guide');\n }\n return null;\n}\nexport default chainPropTypes(PropTypes.elementType, elementTypeAcceptingRef);","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_SERVER_CONTEXT_TYPE:\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\nvar hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isConcurrentMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsConcurrentMode) {\n hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\nfunction isSuspenseList(object) {\n return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n}\n\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.SuspenseList = SuspenseList;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isSuspenseList = isSuspenseList;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","/* eslint-disable */\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nexport default typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();","import PropTypes from 'prop-types';\nconst refType = PropTypes.oneOfType([PropTypes.func, PropTypes.object]);\nexport default refType;","const visuallyHidden = {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: '1px',\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n whiteSpace: 'nowrap',\n width: '1px'\n};\nexport default visuallyHidden;","export function getTypeByValue(value) {\n const valueType = typeof value;\n switch (valueType) {\n case 'number':\n if (Number.isNaN(value)) {\n return 'NaN';\n }\n if (!Number.isFinite(value)) {\n return 'Infinity';\n }\n if (value !== Math.floor(value)) {\n return 'float';\n }\n return 'number';\n case 'object':\n if (value === null) {\n return 'null';\n }\n return value.constructor.name;\n default:\n return valueType;\n }\n}\n\n// IE 11 support\nfunction ponyfillIsInteger(x) {\n // eslint-disable-next-line no-restricted-globals\n return typeof x === 'number' && isFinite(x) && Math.floor(x) === x;\n}\nconst isInteger = Number.isInteger || ponyfillIsInteger;\nfunction requiredInteger(props, propName, componentName, location) {\n const propValue = props[propName];\n if (propValue == null || !isInteger(propValue)) {\n const propType = getTypeByValue(propValue);\n return new RangeError(`Invalid ${location} \\`${propName}\\` of type \\`${propType}\\` supplied to \\`${componentName}\\`, expected \\`integer\\`.`);\n }\n return null;\n}\nfunction validator(props, propName, ...other) {\n const propValue = props[propName];\n if (propValue === undefined) {\n return null;\n }\n return requiredInteger(props, propName, ...other);\n}\nfunction validatorNoop() {\n return null;\n}\nvalidator.isRequired = requiredInteger;\nvalidatorNoop.isRequired = validatorNoop;\nexport default process.env.NODE_ENV === 'production' ? validatorNoop : validator;","import TableSortLabel from \"@mui/material/TableSortLabel\";\nimport TableRow from \"@mui/material/TableRow\";\nimport Box from \"@mui/material/Box\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableHead from \"@mui/material/TableHead\";\nimport { visuallyHidden } from \"@mui/utils\";\n\nexport type Order = \"asc\" | \"desc\";\nexport interface HeadCell<T> {\n disablePadding: boolean;\n id: keyof T;\n label: string;\n numeric: boolean;\n sort: boolean;\n}\n\ninterface EnhancedTableHeadProps<T> {\n onRequestSort: (property: keyof T) => void;\n order: Order;\n orderBy: keyof T;\n headCells: HeadCell<T>[];\n}\n\nexport const EnhancedTableHead = <T,>({\n order,\n orderBy,\n headCells,\n onRequestSort,\n}: EnhancedTableHeadProps<T>) => {\n const createSortHandler = (property: keyof T) => () => {\n onRequestSort(property);\n };\n\n return (\n <TableHead>\n <TableRow>\n {headCells.map((headCell) => (\n <TableCell\n variant=\"head\"\n key={String(headCell.id)}\n padding={headCell.disablePadding ? \"none\" : \"normal\"}\n sortDirection={orderBy === headCell.id ? order : false}\n sx={{ fontWeight: \"bold\" }}\n >\n {headCell.sort ? (\n <TableSortLabel\n active={orderBy === headCell.id}\n direction={orderBy === headCell.id ? order : \"asc\"}\n onClick={createSortHandler(headCell.id)}\n >\n {headCell.label}\n {orderBy === headCell.id ? (\n <Box component=\"span\" sx={visuallyHidden}>\n {order === \"desc\" ? \"sorted descending\" : \"sorted ascending\"}\n </Box>\n ) : null}\n </TableSortLabel>\n ) : (\n headCell.label\n )}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n );\n};\n","import { ChangeEvent } from \"react\";\nimport { ReactNode, useState } from \"react\";\nimport Box from \"@mui/material/Box\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport TextField from \"@mui/material/TextField\";\nimport TableBody from \"@mui/material/TableBody\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport Table from \"@mui/material/Table\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableRow from \"@mui/material/TableRow\";\nimport Search from \"@mui/icons-material/Search\";\nimport { EnhancedTableHead, HeadCell, Order } from \"./enhanced-table-head\";\n\nfunction getFilter<T>(columns: HeadCell<T>[], search: string) {\n return (d: T) => {\n return (\n !search ||\n columns.some((col) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let value = (d as any)[col.id];\n if (value?.toLowerCase) {\n value = value.toLowerCase();\n }\n return value?.toString().includes(search.toLowerCase());\n })\n );\n };\n}\n\nfunction getComparator<T>(order: Order, orderBy: keyof T): (a: T, b: T) => number {\n return order === \"desc\"\n ? (a, b) => descendingComparator(a, b, orderBy)\n : (a, b) => -descendingComparator(a, b, orderBy);\n}\nfunction descendingComparator<T>(a: T, b: T, orderBy: keyof T) {\n if (b[orderBy] < a[orderBy]) {\n return -1;\n }\n if (b[orderBy] > a[orderBy]) {\n return 1;\n }\n return 0;\n}\n\ninterface Props<T> {\n readonly data: T[];\n search?: boolean;\n defaultSort: keyof T;\n defaultOrder?: Order;\n loading?: boolean;\n columns: HeadCell<T>[];\n children: (data: T[]) => ReactNode;\n}\n\nexport const EnhancedTable = <T,>({\n children,\n data,\n search,\n columns,\n defaultSort,\n defaultOrder = \"asc\",\n loading = false,\n}: Props<T>) => {\n const [searchFilter, setSearchFilter] = useState<string>(\"\");\n const [order, setOrder] = useState<Order>(defaultOrder);\n const [orderBy, setOrderBy] = useState<keyof T>(defaultSort);\n\n const handleRequestSort = (property: keyof T) => {\n const isAsc = orderBy === property && order === \"asc\";\n setOrder(isAsc ? \"desc\" : \"asc\");\n setOrderBy(property);\n };\n\n const filteredData = data\n .slice()\n .filter(getFilter<T>(columns, searchFilter))\n .sort(getComparator(order, orderBy));\n\n return (\n <>\n <Box sx={{ paddingX: 1, paddingBottom: 2 }}>\n {search && (\n <Box paddingY={2}>\n <TextField\n fullWidth\n placeholder=\"Search\"\n InputProps={{\n role: \"search\",\n startAdornment: (\n <InputAdornment position=\"start\">\n <Search />\n </InputAdornment>\n ),\n }}\n onChange={(e: ChangeEvent<HTMLInputElement>) => setSearchFilter(e.target.value)}\n />\n </Box>\n )}\n <TableContainer>\n <Table>\n <EnhancedTableHead\n order={order}\n orderBy={orderBy}\n headCells={columns}\n onRequestSort={handleRequestSort}\n />\n <TableBody>\n {loading ? (\n <TableRow>\n <TableCell colSpan={columns.length} sx={{ textAlign: \"center\" }}>\n <CircularProgress />\n </TableCell>\n </TableRow>\n ) : filteredData.length === 0 ? (\n <TableRow>\n <TableCell colSpan={columns.length} sx={{ textAlign: \"center\" }}>\n No data\n </TableCell>\n </TableRow>\n ) : (\n children(filteredData)\n )}\n </TableBody>\n </Table>\n </TableContainer>\n </Box>\n </>\n );\n};\n\nEnhancedTable.defaultProps = {\n defaultOrder: \"asc\",\n};\n","import { useState } from \"react\";\nimport CheckIcon from \"@mui/icons-material/Check\";\nimport ClearIcon from \"@mui/icons-material/Clear\";\nimport { SxProps, Theme, useTheme } from \"@mui/material/styles\";\nimport Button from \"@mui/material/Button\";\nimport IconButton from \"@mui/material/IconButton\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport EditIcon from \"@mui/icons-material/Edit\";\n\nexport interface ValueEditButtonsProps {\n onClickCancel: () => void;\n onClickSubmit: () => void;\n sx?: SxProps<Theme>;\n}\n\nexport const ValueEditButtons = ({ onClickCancel, onClickSubmit, sx }: ValueEditButtonsProps) => {\n return (\n <InputAdornment position=\"end\" sx={sx}>\n <Button\n variant=\"contained\"\n size=\"small\"\n color=\"error\"\n aria-label=\"cancel button\"\n startIcon={<ClearIcon sx={{ fontSize: 12 }} />}\n onClick={onClickCancel}\n sx={{ paddingRight: 0, minWidth: 0, marginRight: 1 }}\n />\n <Button\n variant=\"contained\"\n size=\"small\"\n color=\"primary\"\n aria-label=\"submit button\"\n startIcon={<CheckIcon sx={{ fontSize: 12 }} />}\n onClick={onClickSubmit}\n sx={{ paddingRight: 0, minWidth: 0 }}\n />\n </InputAdornment>\n );\n};\n\n/**\n * Hook to manage the editing behaviour\n */\nexport const useEditableValueDisplay = <T,>(\n initialValue: T | undefined,\n onEdit: (value?: T) => void,\n) => {\n const [isEditing, setIsEditing] = useState(false);\n const [editValue, setEditValue] = useState<T | undefined>(initialValue);\n\n const cancelEdit = () => {\n setIsEditing(false);\n setEditValue(initialValue);\n };\n const startEdit = () => {\n setIsEditing(true);\n };\n\n const submitEdit = () => {\n onEdit(editValue);\n cancelEdit();\n };\n\n return { isEditing, cancelEdit, editValue, setEditValue, startEdit, submitEdit };\n};\n\nexport interface ValueEditButtonProps {\n dense?: boolean;\n onClick: () => void;\n}\n\nexport const ValueEditButton = ({ dense, onClick }: ValueEditButtonProps) => {\n const { typography } = useTheme();\n return (\n <IconButton\n size=\"small\"\n onClick={onClick}\n sx={{ ml: dense ? 0.5 : 1 }}\n aria-label=\"edit button\"\n >\n <EditIcon sx={{ fontSize: typography.pxToRem(dense ? 18 : 24) }} />\n </IconButton>\n );\n};\n","export interface BaseValueProps<T> {\n /**\n * Name of the displayed value\n */\n label: string;\n\n /**\n * Value displayed\n */\n value?: T;\n\n /**\n * String rendered if value is undefined\n */\n placeholder?: string;\n\n /**\n * The value has to be displayed as compact or not.\n * False by default\n */\n dense?: boolean;\n}\n\nexport interface EditableValueProps<T> {\n /**\n * This field can be edited or not\n */\n editable?: boolean;\n\n /**\n * Callback executed when the value is edited\n */\n onEdit?: (value?: T) => void;\n}\n\nexport const DefaultPlaceholder = \"-\";\n","import { SxProps, Theme, useTheme } from \"@mui/material/styles\";\nimport Box from \"@mui/material/Box\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport Typography from \"@mui/material/Typography\";\n\nexport const getValueContentLabelId = (label: string): string =>\n `label-${label.replace(/ /g, \"-\")}`;\n\nexport interface ValueContentProps {\n /**\n * Name of the displayed value\n */\n label: string;\n\n /**\n * If true, the label will not be shown\n */\n hideLabel?: boolean;\n\n /**\n * If defined, a tooltip is going to be added arround the children;\n */\n tooltip?: string;\n\n /**\n * Timeout before the tooltip appears when the user hovers the value\n */\n tooltipEnterDelay?: number;\n\n /**\n * Component that's going to be renderd under the label\n */\n children: React.ReactElement<any, any>;\n\n /**\n * The value has to be displayed as compact or not.\n * False by default\n */\n dense?: boolean;\n\n /**\n * Custom styles for the root component\n */\n sx?: SxProps<Theme>;\n}\n\n/**\n * Displays a string value with a label\n */\nexport const ValueContent = ({\n label,\n hideLabel,\n tooltip,\n tooltipEnterDelay = 2000,\n children,\n dense,\n sx,\n}: ValueContentProps) => {\n const { typography } = useTheme();\n const id = getValueContentLabelId(label);\n\n return (\n <Box width={1} lineHeight={dense ? 0 : undefined} sx={sx}>\n {!hideLabel && (\n <Typography\n variant={dense ? \"caption\" : \"subtitle2\"}\n role=\"label\"\n id={id}\n lineHeight={dense ? typography.pxToRem(15) : undefined}\n >\n {label}\n </Typography>\n )}\n {tooltip ? (\n <Tooltip title={tooltip} placement=\"top\" enterDelay={tooltipEnterDelay}>\n {children}\n </Tooltip>\n ) : (\n children\n )}\n </Box>\n );\n};\n","import Typography from \"@mui/material/Typography\";\nimport TextField from \"@mui/material/TextField\";\nimport { useEffect, useRef } from \"react\";\nimport {\n BaseValueProps,\n DefaultPlaceholder,\n EditableValueProps,\n useEditableValueDisplay,\n ValueEditButton,\n ValueEditButtons,\n} from \"~/value-base\";\nimport { getValueContentLabelId, ValueContent } from \"~/value-content\";\n\nexport type ValueTextProps = BaseValueProps<string | number> & EditableValueProps<string>;\n\n/**\n * Displays a string value with a label\n */\nexport const ValueText = ({\n label,\n value: valueProp,\n placeholder = DefaultPlaceholder,\n editable,\n dense,\n onEdit = () => null,\n}: ValueTextProps) => {\n const editInputRef = useRef<HTMLInputElement>(null);\n const { isEditing, editValue, startEdit, cancelEdit, setEditValue, submitEdit } =\n useEditableValueDisplay(valueProp?.toString(), onEdit);\n const id = getValueContentLabelId(label);\n const value = valueProp?.toString() || placeholder;\n\n const editKeyPressListener = (e: KeyboardEvent) => {\n if (e.key === \"Enter\") {\n onEdit((e.target as any).value);\n }\n };\n\n useEffect(() => {\n editInputRef.current?.addEventListener(\"keypress\", editKeyPressListener);\n return () => editInputRef.current?.removeEventListener(\"keypress\", editKeyPressListener);\n }, [editInputRef.current]);\n\n return (\n <ValueContent hideLabel={isEditing} label={label} tooltip={value} dense={dense}>\n {isEditing ? (\n <TextField\n inputRef={editInputRef}\n value={editValue}\n label={label}\n size=\"small\"\n onChange={(e) => setEditValue(e.target.value)}\n InputProps={{\n endAdornment: (\n <ValueEditButtons onClickCancel={cancelEdit} onClickSubmit={submitEdit} />\n ),\n }}\n sx={{ marginY: !dense ? 1 : 0 }}\n />\n ) : (\n <Typography variant={dense ? \"body1\" : \"h5\"} noWrap aria-labelledby={id}>\n {value}\n {editable && <ValueEditButton dense={dense} onClick={startEdit} />}\n </Typography>\n )}\n </ValueContent>\n );\n};\n","import { useTheme } from \"@mui/material/styles\";\nimport Box from \"@mui/material/Box\";\nimport Switch from \"@mui/material/Switch\";\nimport Typography from \"@mui/material/Typography\";\nimport CheckIcon from \"@mui/icons-material/Check\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport {\n BaseValueProps,\n DefaultPlaceholder,\n EditableValueProps,\n useEditableValueDisplay,\n ValueEditButton,\n ValueEditButtons,\n} from \"~/value-base\";\nimport { ValueContent, getValueContentLabelId } from \"~/value-content\";\n\nexport type ValueBooleanProps = BaseValueProps<boolean> & EditableValueProps<boolean>;\n\n/**\n * Displays a boolean value with a label\n */\nexport const ValueBoolean = ({\n label,\n value,\n placeholder = DefaultPlaceholder,\n editable,\n dense,\n onEdit = () => null,\n}: ValueBooleanProps) => {\n const id = getValueContentLabelId(label);\n const { typography } = useTheme();\n const { isEditing, editValue, startEdit, cancelEdit, setEditValue, submitEdit } =\n useEditableValueDisplay(value, onEdit);\n\n const iconSx = { fontSize: dense ? typography.h6.fontSize : typography.h5.fontSize };\n\n return (\n <ValueContent label={label} dense={dense}>\n {isEditing ? (\n <Box display=\"flex\" alignItems=\"center\">\n <Switch\n size={dense ? \"small\" : \"medium\"}\n checked={editValue}\n onChange={(e) => setEditValue(e.target.checked)}\n />\n <ValueEditButtons onClickCancel={cancelEdit} onClickSubmit={submitEdit} />\n </Box>\n ) : (\n <Box\n display=\"flex\"\n alignItems=\"center\"\n aria-labelledby={id}\n role=\"checkbox\"\n aria-checked={value}\n >\n {value === undefined ? (\n <Typography variant=\"h5\">{placeholder}</Typography>\n ) : value ? (\n <CheckIcon color=\"success\" sx={iconSx} />\n ) : (\n <CloseIcon color=\"error\" sx={iconSx} />\n )}\n {editable && <ValueEditButton dense={dense} onClick={startEdit} />}\n </Box>\n )}\n </ValueContent>\n );\n};\n","import Box from \"@mui/material/Box\";\nimport TextField from \"@mui/material/TextField\";\nimport Typography from \"@mui/material/Typography\";\nimport { format } from \"date-fns\";\nimport { BaseValueProps, DefaultPlaceholder, EditableValueProps } from \"~/value-base\";\nimport { getValueContentLabelId, ValueContent } from \"~/value-content\";\nimport { useEditableValueDisplay, ValueEditButton, ValueEditButtons } from \"~/value-base\";\nimport { DatePicker } from \"@mui/x-date-pickers/DatePicker\";\nimport { DateTimePicker } from \"@mui/x-date-pickers/DateTimePicker\";\nimport { TimePicker } from \"@mui/x-date-pickers/TimePicker\";\n\nexport type EditInputType = \"datetime\" | \"date\" | \"time\";\n\nexport interface ValueDatetimeProps extends BaseValueProps<Date>, EditableValueProps<Date> {\n /**\n * Datetime format\n */\n format: string;\n\n /**\n * Edit input type\n */\n editInputType?: EditInputType;\n}\n\n/**\n * Displays a formated datetime with a label\n */\nexport const ValueDatetime = ({\n label,\n value: valueProp,\n format: fmt,\n placeholder = DefaultPlaceholder,\n editable,\n editInputType = \"datetime\",\n dense,\n onEdit = () => null,\n}: ValueDatetimeProps) => {\n const { isEditing, editValue, startEdit, cancelEdit, setEditValue, submitEdit } =\n useEditableValueDisplay(valueProp, onEdit);\n const id = getValueContentLabelId(label);\n const value = (valueProp && format(valueProp, fmt)) || placeholder;\n\n const EditPickerComponent =\n editInputType === \"datetime\"\n ? DateTimePicker\n : editInputType === \"time\"\n ? TimePicker\n : DatePicker;\n\n return (\n <ValueContent\n label={label}\n hideLabel={isEditing}\n tooltip={value}\n dense={dense}\n sx={{ display: \"flex\", flexDirection: \"column\" }}\n >\n {isEditing ? (\n <EditPickerComponent\n value={editValue}\n format={fmt}\n label={label}\n onChange={(newValue) => setEditValue(newValue ? newValue : undefined)}\n slots={{\n textField: (params) => (\n <TextField\n {...params}\n size=\"small\"\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n <>\n {params.InputProps?.endAdornment}\n <ValueEditButtons\n onClickCancel={cancelEdit}\n onClickSubmit={submitEdit}\n sx={{ ml: 2 }}\n />\n </>\n ),\n sx: { marginY: !dense ? 1 : 0.2 },\n }}\n />\n ),\n }}\n />\n ) : (\n <Box display=\"flex\" alignItems=\"center\">\n <Typography variant={dense ? \"body1\" : \"h5\"} noWrap aria-labelledby={id}>\n {value}\n </Typography>\n {editable && <ValueEditButton dense={dense} onClick={startEdit} />}\n </Box>\n )}\n </ValueContent>\n );\n};\n","import Grid from \"@mui/material/Grid\";\nimport Paper from \"@mui/material/Paper\";\nimport Box from \"@mui/material/Box\";\nimport Typography from \"@mui/material/Typography\";\nimport { useTheme } from \"@mui/material/styles\";\nimport { useGetDefaultThemeColor } from \"~/utils\";\nimport { ValueItemElement } from \"~/value-item\";\n\nexport interface GroupValueCardProps {\n title: string;\n subtitle?: string;\n centered?: boolean;\n children: ValueItemElement | ValueItemElement[];\n dense?: boolean;\n}\n\nexport const GroupValueCard = ({\n title,\n subtitle,\n centered,\n children,\n dense,\n}: GroupValueCardProps) => {\n const { typography } = useTheme();\n const defaultColor = useGetDefaultThemeColor({ lightWeight: 200, darkWeight: 800 });\n\n return (\n <Paper\n sx={{\n paddingBottom: dense ? 0 : 1,\n }}\n >\n <Box\n bgcolor={defaultColor}\n px={dense ? 1 : 2}\n py={dense ? 0.5 : 1}\n lineHeight={dense ? 0 : undefined}\n >\n <Typography variant={dense ? \"body1\" : \"h6\"} role=\"heading\" aria-level={1}>\n {title}\n </Typography>\n {subtitle && (\n <Typography\n variant={dense ? \"caption\" : \"body2\"}\n role=\"heading\"\n aria-level={2}\n lineHeight={dense ? typography.pxToRem(15) : undefined}\n >\n {subtitle}\n </Typography>\n )}\n </Box>\n <Grid\n container\n padding={1}\n rowSpacing={dense ? 1 : 2}\n justifyContent={centered ? \"center\" : \"flex-start\"}\n >\n {children}\n </Grid>\n </Paper>\n );\n};\n","import Grid, { GridProps } from \"@mui/material/Grid\";\nimport Box from \"@mui/material/Box\";\nimport { ResponsiveStyleValue } from \"@mui/system\";\nimport { PropsWithChildren, FunctionComponent, ReactElement } from \"react\";\nimport { useGetDefaultThemeColor } from \"~/utils\";\n\nexport type ValueItemProps = PropsWithChildren<\n Omit<GridProps, \"item\" | \"container\"> & { bordered?: ResponsiveStyleValue<boolean> }\n>;\nexport type ValueItemComponent = FunctionComponent<ValueItemProps>;\nexport type ValueItemElement = ReactElement<ValueItemProps, ValueItemComponent>;\n\nexport const valueItemClasses = {\n root: \"RdsValueItem-root\",\n content: \"RdsValueItem-content\",\n};\n\nconst resolveBorderStyle = (bordered: ResponsiveStyleValue<boolean>, color: string) => {\n const borderStyle = `solid ${color} 1px`;\n const noBorder = \"none\";\n\n if (!bordered) {\n return undefined;\n }\n\n if (Array.isArray(bordered)) {\n return bordered.map((b) => (b ? borderStyle : noBorder));\n }\n\n if (typeof bordered === \"object\") {\n const style: Record<string, string | undefined> = {};\n Object.entries(bordered).forEach(([key, value]) => {\n style[key] = value ? borderStyle : noBorder;\n });\n return style;\n }\n\n return borderStyle;\n};\n\nexport const ValueItem: ValueItemComponent = ({\n children,\n bordered = true,\n ...rest\n}: ValueItemProps) => {\n const defaultColor = useGetDefaultThemeColor({ lightWeight: 200, darkWeight: 800 });\n const borderLeft = resolveBorderStyle(bordered, defaultColor);\n return (\n <Grid item className={valueItemClasses.root} {...rest}>\n <Box className={valueItemClasses.content} px={1} borderLeft={borderLeft}>\n {children}\n </Box>\n </Grid>\n );\n};\n","import Box from \"@mui/material/Box\";\nimport LinearProgress from \"@mui/material/LinearProgress\";\nimport { LoadingArea } from \"~/loading-area\";\nimport { TabProvider } from \"~/tab-provider\";\nimport ReportProblemIcon from \"@mui/icons-material/ReportProblem\";\nimport { Placeholder, PlaceholderIcon } from \"~/placeholder\";\nimport { HeaderElement } from \"~/header\";\nimport { ContentElement } from \"~/content\";\n\nexport interface HeaderLayoutError {\n icon?: PlaceholderIcon;\n title?: string;\n message: string;\n}\n\nexport interface HeaderLayoutProps {\n loading?: boolean;\n fetching?: boolean;\n error?: HeaderLayoutError;\n children: [HeaderElement, ContentElement];\n}\n\nconst DefaultErrorIcon = () => <ReportProblemIcon color=\"error\" sx={{ width: 200, height: 200 }} />;\n\nexport const HeaderLayout = ({ loading, children, fetching, error }: HeaderLayoutProps) => {\n const [headerElement, contentElement] = children;\n\n return (\n <TabProvider>\n <Box display=\"flex\" flexDirection=\"column\" height={1}>\n {headerElement}\n {fetching && (\n <Box width={1}>\n <LinearProgress />\n </Box>\n )}\n {loading && <LoadingArea />}\n {error && (\n <Box mt={4}>\n <Placeholder\n icon={error.icon || DefaultErrorIcon}\n title={error.title || \"There has been an error\"}\n subtitle={error.message}\n />\n </Box>\n )}\n {!loading && !error && contentElement}\n </Box>\n </TabProvider>\n );\n};\n","import { AlertColor } from \"@mui/material/Alert\";\nimport { createContext, useContext } from \"react\";\n\nexport const NotificationCenterProviderUndefinedError = new Error(\n \"NotificationCenterContext.Provider is required and was undefined\",\n);\n\nexport interface Notification {\n severity: AlertColor;\n title?: string;\n message: string;\n}\n\nexport interface NotificationCenterProps {\n show(notification: Notification): void;\n hide(): void;\n}\n\nexport const NotificationCenterContext = createContext<NotificationCenterProps | undefined>(\n undefined,\n);\n\nexport const useNotificationCenter = () => {\n const context = useContext(NotificationCenterContext);\n\n if (context === undefined) {\n throw NotificationCenterProviderUndefinedError;\n }\n\n return context;\n};\n","import { useEffect, useRef } from \"react\";\nimport { useNotificationCenter, Notification } from \"./notification-center.context\";\n\nexport interface NotifyWhenValueChangesOptions<T> {\n from: T;\n to: T;\n}\n\nexport const useNotifyWhenValueChanges = <T>(\n notification: Notification,\n value: T | undefined,\n { from, to }: NotifyWhenValueChangesOptions<T>,\n) => {\n const prevRef = useRef<T>();\n const { show } = useNotificationCenter();\n\n useEffect(() => {\n if (prevRef.current === from && value === to) {\n show(notification);\n }\n prevRef.current = value;\n }, [value]);\n};\n","import Grid from \"@mui/material/Grid\";\nimport { newBreakpointsCounter } from \"~/utils/breakpoints\";\nimport { ValueBoolean } from \"~/value-boolean\";\nimport { ValueDatetime } from \"~/value-datetime\";\nimport { ValueText } from \"~/value-text\";\nimport { GroupValueCard } from \"~/group-value-card\";\nimport { ValueItem } from \"~/value-item\";\nimport {\n ArrayGroupField,\n ArrayInstanceType,\n BasicModelInstance,\n GroupField,\n GroupInstanceType,\n Model,\n ModelField,\n} from \"~/generators/generators.model\";\nimport { GridColDef, DataGrid } from \"@mui/x-data-grid\";\n\ninterface SingleDetailValueFactoryOptions {\n dense?: boolean;\n}\n\nconst singleDetailValueFactory = <T extends BasicModelInstance>(\n field: ModelField,\n instance: T | GroupInstanceType,\n { dense }: SingleDetailValueFactoryOptions = {},\n) => {\n const { id, name, type } = field;\n const value = instance[id];\n if (type === \"boolean\") {\n return <ValueBoolean dense={dense} label={name} value={value as boolean} />;\n } else if (type === \"date\" || type === \"time\" || type === \"datetime\") {\n return <ValueDatetime dense={dense} label={name} value={value as Date} format={field.format} />;\n }\n\n if (typeof value === \"object\" && !Array.isArray(value)) {\n return <ValueText dense={dense} label={name} value={JSON.stringify(value)} />;\n }\n return <ValueText dense={dense} label={name} value={value?.toString()} />;\n};\n\ninterface ObjectArrayGroupProps {\n field: ArrayGroupField;\n instance: ArrayInstanceType;\n dense?: boolean;\n}\n\nconst ObjectArrayGroup = ({\n field: { name, description, value },\n instance,\n dense,\n}: ObjectArrayGroupProps) => {\n const columns: GridColDef[] = [{ field: \"id\", headerName: \"ID\", width: 70 }];\n\n value.forEach((column) => {\n columns.push({\n field: column.id,\n headerName: column.name,\n });\n });\n\n const rows = instance.map((f, id) => ({\n id,\n ...f,\n }));\n\n return (\n <GroupValueCard title={name} subtitle={description} dense={dense}>\n <Grid item xs={12}>\n <DataGrid\n rows={rows}\n columns={columns}\n density={dense ? \"compact\" : \"standard\"}\n disableRowSelectionOnClick\n pageSizeOptions={[5]}\n initialState={{\n pagination: {\n paginationModel: {\n pageSize: 5,\n },\n },\n }}\n sx={{ height: 400 }}\n />\n </Grid>\n </GroupValueCard>\n );\n};\n\ninterface ObjectDetailGroupProps {\n field: GroupField;\n instance: GroupInstanceType;\n dense?: boolean;\n}\n\nconst ObjectDetailGroup = ({\n field: { name, description, value },\n instance,\n dense,\n}: ObjectDetailGroupProps) => {\n const breakpointsCounter = newBreakpointsCounter();\n\n return (\n <GroupValueCard title={name} subtitle={description} dense={dense}>\n {value.map((field) => {\n const { id, xs, sm, md, lg, xl } = field;\n const bordered = breakpointsCounter.increment(field);\n return (\n <ValueItem key={id} xs={xs} sm={sm} md={md} lg={lg} xl={xl} bordered={bordered}>\n {singleDetailValueFactory(field, instance, { dense })}\n </ValueItem>\n );\n })}\n </GroupValueCard>\n );\n};\n\nexport interface ObjectDetailsProps<T extends BasicModelInstance> {\n model: Model;\n dense?: boolean;\n instance: T;\n}\n\nexport const ObjectDetails = <T extends BasicModelInstance>({\n model,\n instance,\n dense,\n}: ObjectDetailsProps<T>) => {\n const breakpointsCounter = newBreakpointsCounter();\n return (\n <Grid container spacing={dense ? 1 : 2}>\n {model.fields.map((field) => {\n const { id, type, xs = 3, sm = 0, md = 0, lg = 0, xl = 0 } = field;\n\n if (type === \"group\") {\n breakpointsCounter.increment({ xs: 12 });\n return (\n <Grid item key={id} xs={12}>\n <ObjectDetailGroup\n field={field}\n instance={instance[id] as GroupInstanceType}\n dense={dense}\n />\n </Grid>\n );\n }\n\n if (type === \"group[]\") {\n breakpointsCounter.increment({ xs: 12 });\n return (\n <Grid item key={id} xs={12}>\n <ObjectArrayGroup field={field} instance={instance[id] as any} dense={dense} />\n </Grid>\n );\n }\n\n const bordered = breakpointsCounter.increment(field);\n return (\n <ValueItem key={id} xs={xs} sm={sm} md={md} lg={lg} xl={xl} bordered={bordered}>\n {singleDetailValueFactory(field, instance, { dense })}\n </ValueItem>\n );\n })}\n </Grid>\n );\n};\n","/**\n * MODEL TYPES\n * Types used to specify the model\n */\nexport type ModelFieldTypes =\n | \"string\"\n | \"number\"\n | \"string[]\"\n | \"number[]\"\n | \"boolean\"\n | \"enum\"\n | \"multienum\"\n | \"date\"\n | \"time\"\n | \"datetime\";\n\ntype Base = {\n id: string;\n description: string;\n name: string;\n listable?: boolean;\n updatable?: boolean;\n required?: boolean;\n};\n\ntype Breakpoints = {\n xs?: number;\n sm?: number;\n md?: number;\n lg?: number;\n xl?: number;\n};\n\ntype StringField = {\n type: \"string\";\n};\n\ntype StringArrayField = {\n type: \"string[]\";\n};\n\ntype NumberField = {\n type: \"number\";\n};\n\ntype NumberArrayField = {\n type: \"number[]\";\n};\n\ntype BooleanField = {\n type: \"boolean\";\n};\n\ntype EnumField = {\n type: \"enum\";\n value: string[];\n};\n\ntype MultiEnumField = {\n type: \"multienum\";\n value: string[];\n};\n\ntype DateField = {\n type: \"date\";\n format: string;\n default: Date;\n};\n\ntype TimeField = {\n type: \"time\";\n format: string;\n default: Date;\n};\n\ntype DatetimeField = {\n type: \"datetime\";\n format: string;\n default: Date;\n};\n\ntype SingleFields =\n | StringField\n | NumberField\n | StringArrayField\n | NumberArrayField\n | BooleanField\n | EnumField\n | MultiEnumField\n | DateField\n | TimeField\n | DatetimeField;\n\nexport type GroupField = {\n type: \"group\";\n value: (Base & Breakpoints & SingleFields)[];\n} & Base;\n\nexport type ArrayGroupField = {\n type: \"group[]\";\n value: (Base & Breakpoints & SingleFields)[];\n} & Base;\n\ntype Fields = SingleFields | GroupField | ArrayGroupField;\nexport type ModelField = Base & Breakpoints & Fields;\n\nexport type Model = {\n fields: ModelField[];\n};\n\n/**\n * INSTANCE TYPES\n * Types used to represent an instance of a model specification\n */\nexport type BaseFieldType = string | number | boolean | Date;\nexport type ArrayFieldType = string[] | number[];\nexport type SingleFieldType = BaseFieldType | ArrayFieldType;\nexport type GroupInstanceType = { [key: string]: SingleFieldType };\nexport type ArrayInstanceType = { [key: string]: SingleFieldType }[];\nexport type FieldType = SingleFieldType | GroupInstanceType;\n\nexport interface BasicModelInstance {\n id: string;\n [key: string]: FieldType;\n}\n\n/**\n * UTILITIES\n * Some functions used in several places to help to manage models\n */\nconst InitialStateZeroValue: Record<ModelFieldTypes | \"group\" | \"group[]\", FieldType | undefined> =\n {\n string: \"\",\n number: 0,\n boolean: false,\n enum: \"\",\n multienum: [],\n date: new Date(1970, 0, 1, 0, 0),\n time: new Date(1970, 0, 1, 0, 0),\n datetime: new Date(1970, 0, 1, 0, 0),\n group: {},\n \"group[]\": [],\n \"string[]\": [],\n \"number[]\": [],\n };\n\nconst getFieldValueOrZero = (\n field: ModelField,\n values: BasicModelInstance | GroupInstanceType | undefined,\n) => {\n return (\n (values && values[field.id]) ||\n (\"default\" in field && field.default) ||\n InitialStateZeroValue[field.type]\n );\n};\n\nexport const newInstanceFromValuesOrZeroValue = <T extends BasicModelInstance>(\n model: Model,\n values: T | undefined = undefined,\n): T => {\n const obj: Record<string, FieldType | undefined> = {};\n\n model.fields.forEach((field) => {\n if (field.type === \"group\") {\n const value: GroupInstanceType = {};\n field.value.forEach((groupField) => {\n value[groupField.id] = getFieldValueOrZero(\n groupField,\n values && (values[field.id] as GroupInstanceType),\n ) as SingleFieldType;\n });\n obj[field.id] = value;\n } else {\n obj[field.id] = getFieldValueOrZero(field, values);\n }\n });\n\n return obj as T;\n};\n","import Box from \"@mui/material/Box\";\nimport Grid from \"@mui/material/Grid\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\nimport Checkbox from \"@mui/material/Checkbox\";\nimport FormControl from \"@mui/material/FormControl\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport Select from \"@mui/material/Select\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport TextField from \"@mui/material/TextField\";\nimport { SelectChangeEvent } from \"@mui/material/Select\";\nimport { DesktopDatePicker, TimePicker, DateTimePicker } from \"@mui/x-date-pickers\";\nimport { ChangeEvent, ReactElement } from \"react\";\nimport { useGetDefaultThemeColor } from \"~/utils\";\nimport { GroupValueCard } from \"~/group-value-card\";\nimport {\n ArrayFieldType,\n FieldType,\n ModelField,\n ModelFieldTypes,\n} from \"~/generators/generators.model\";\n\nexport interface ModelFormField {\n field: ModelField;\n update: boolean;\n dense?: boolean;\n path?: string[];\n value: any;\n onChangeValue: (path: string[], value: any) => void;\n}\n\nexport const ModelFormField = ({\n field,\n path = [],\n value,\n dense,\n update,\n onChangeValue,\n}: ModelFormField) => {\n const handleCheckboxChange = (e: ChangeEvent<HTMLInputElement>) => {\n e.preventDefault();\n onChangeValue([...path, e.target.name], e.target.checked);\n };\n\n const handleSelectChange = (e: SelectChangeEvent<FieldType>) => {\n e.preventDefault();\n onChangeValue([...path, e.target.name], e.target.value);\n };\n\n const handleMultiSelectChange = (e: SelectChangeEvent<FieldType>) => {\n e.preventDefault();\n const { value } = e.target;\n const newValue = typeof value === \"string\" ? value.split(\",\") : value;\n onChangeValue([...path, e.target.name], newValue);\n };\n\n const handleInputChange = (\n e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,\n type: ModelFieldTypes,\n ) => {\n e.preventDefault();\n\n let value: string | number | string[] | number[] = e.target.value;\n if (type === \"number\" && typeof value === \"string\") {\n value = parseInt(e.target.value, 10);\n } else if (type.includes(\"[]\")) {\n value = e.target.value.split(\",\");\n }\n onChangeValue([...path, e.target.name], value);\n };\n\n const handleDateChange = (value: FieldType | null, id: string) => {\n onChangeValue([...path, id], value);\n };\n\n const defaultColor = useGetDefaultThemeColor({ lightWeight: 200, darkWeight: 800 });\n\n const {\n id,\n type,\n name,\n description,\n updatable = true,\n required = true,\n xs,\n sm,\n md,\n lg,\n xl,\n } = field;\n const disabled: boolean = !updatable && update;\n\n let fieldInput: ReactElement;\n const size = dense ? \"small\" : \"medium\";\n if (type === \"group\") {\n fieldInput = (\n <GroupValueCard title={name} subtitle={description} dense={dense}>\n <Grid container spacing={2} sx={{ p: 2 }}>\n {field.value.map((f) => (\n <ModelFormField\n key={f.id}\n field={f}\n dense={dense}\n path={[...path, id]}\n value={value[f.id]}\n update={update}\n onChangeValue={onChangeValue}\n />\n ))}\n </Grid>\n </GroupValueCard>\n );\n } else if (type === \"boolean\") {\n fieldInput = (\n <Box sx={{ height: 1, display: \"flex\", alignItems: \"center\" }}>\n <FormControlLabel\n control={\n <Checkbox\n name={id}\n size={size}\n onChange={handleCheckboxChange}\n checked={value as boolean}\n disabled={disabled}\n />\n }\n label={name}\n />\n </Box>\n );\n } else if (type === \"enum\") {\n fieldInput = (\n <FormControl fullWidth>\n <InputLabel id={`${id}-select-label`}>{name}</InputLabel>\n <Select\n labelId={`${id}-select-label`}\n id={`${id}-select`}\n value={value}\n label={name}\n name={id}\n size={size}\n onChange={handleSelectChange}\n required={required}\n disabled={disabled}\n >\n {field.value.map((fieldValue) => (\n <MenuItem key={fieldValue} value={fieldValue}>\n {fieldValue}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n } else if (type === \"multienum\") {\n fieldInput = (\n <FormControl fullWidth>\n <InputLabel id={`${id}-select-label`}>{name}</InputLabel>\n <Select\n labelId={`${id}-select-label`}\n id={`${id}-select`}\n value={value || []}\n renderValue={(selected) => (selected as ArrayFieldType).join(\", \")}\n label={name}\n name={id}\n size={size}\n onChange={handleMultiSelectChange}\n required={required}\n disabled={disabled}\n multiple\n >\n {field.value.map((fieldValue) => (\n <MenuItem key={fieldValue} value={fieldValue}>\n <Checkbox checked={((value as any[]) || []).includes(fieldValue)} />\n <ListItemText primary={fieldValue} />\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n } else if (type === \"date\") {\n fieldInput = (\n <DesktopDatePicker\n label={name}\n format={field.format}\n value={value}\n slotProps={\n {\n field: {\n size,\n },\n } as any\n }\n disabled={disabled}\n onChange={(value) => handleDateChange(value, id)}\n />\n );\n } else if (type === \"time\") {\n fieldInput = (\n <TimePicker\n label={name}\n format={field.format}\n value={value}\n slotProps={\n {\n field: {\n size,\n },\n } as any\n }\n disabled={disabled}\n onChange={(value) => handleDateChange(value, id)}\n />\n );\n } else if (type === \"datetime\") {\n fieldInput = (\n <DateTimePicker\n label={name}\n format={field.format}\n value={value}\n slotProps={\n {\n field: {\n size,\n },\n } as any\n }\n disabled={disabled}\n onChange={(value) => handleDateChange(value, id)}\n />\n );\n } else if (type === \"group[]\") {\n return null;\n } else if (type.includes(\"[]\")) {\n fieldInput = (\n <TextField\n required={required}\n type=\"text\"\n label={name}\n name={id}\n size={size}\n variant=\"outlined\"\n helperText=\"Use comas to separate multiple values\"\n fullWidth\n disabled={disabled}\n value={(value as any[]).join(\",\")}\n onChange={(e) => handleInputChange(e, type)}\n />\n );\n } else {\n fieldInput = (\n <TextField\n required={required}\n type={type}\n label={name}\n size={size}\n name={id}\n variant=\"outlined\"\n fullWidth\n value={value}\n disabled={disabled}\n onChange={(e) => handleInputChange(e, type)}\n />\n );\n }\n\n return (\n <Grid item key={id} xs={xs} sm={sm} md={md} lg={lg} xl={xl}>\n {fieldInput}\n </Grid>\n );\n};\n","export default function _isPlaceholder(a) {\n return a != null && typeof a === 'object' && a['@@functional/placeholder'] === true;\n}","import _isPlaceholder from \"./_isPlaceholder.js\";\n/**\n * Optimized internal one-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nexport default function _curry1(fn) {\n return function f1(a) {\n if (arguments.length === 0 || _isPlaceholder(a)) {\n return f1;\n } else {\n return fn.apply(this, arguments);\n }\n };\n}","import _curry1 from \"./_curry1.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n/**\n * Optimized internal two-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nexport default function _curry2(fn) {\n return function f2(a, b) {\n switch (arguments.length) {\n case 0:\n return f2;\n\n case 1:\n return _isPlaceholder(a) ? f2 : _curry1(function (_b) {\n return fn(a, _b);\n });\n\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f2 : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b);\n }) : fn(a, b);\n }\n };\n}","import _curry1 from \"./_curry1.js\";\nimport _curry2 from \"./_curry2.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n/**\n * Optimized internal three-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nexport default function _curry3(fn) {\n return function f3(a, b, c) {\n switch (arguments.length) {\n case 0:\n return f3;\n\n case 1:\n return _isPlaceholder(a) ? f3 : _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n });\n\n case 2:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f3 : _isPlaceholder(a) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _curry1(function (_c) {\n return fn(a, b, _c);\n });\n\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) && _isPlaceholder(c) ? f3 : _isPlaceholder(a) && _isPlaceholder(b) ? _curry2(function (_a, _b) {\n return fn(_a, _b, c);\n }) : _isPlaceholder(a) && _isPlaceholder(c) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) && _isPlaceholder(c) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b, c);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b, c);\n }) : _isPlaceholder(c) ? _curry1(function (_c) {\n return fn(a, b, _c);\n }) : fn(a, b, c);\n }\n };\n}","/**\n * Tests whether or not an object is an array.\n *\n * @private\n * @param {*} val The object to test.\n * @return {Boolean} `true` if `val` is an array, `false` otherwise.\n * @example\n *\n * _isArray([]); //=> true\n * _isArray(null); //=> false\n * _isArray({}); //=> false\n */\nexport default Array.isArray || function _isArray(val) {\n return val != null && val.length >= 0 && Object.prototype.toString.call(val) === '[object Array]';\n};","/**\n * Determine if the passed argument is an integer.\n *\n * @private\n * @param {*} n\n * @category Type\n * @return {Boolean}\n */\nexport default Number.isInteger || function _isInteger(n) {\n return n << 0 === n;\n};","import _curry1 from \"./internal/_curry1.js\";\n/**\n * Checks if the input value is `null` or `undefined`.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Type\n * @sig * -> Boolean\n * @param {*} x The value to test.\n * @return {Boolean} `true` if `x` is `undefined` or `null`, otherwise `false`.\n * @example\n *\n * R.isNil(null); //=> true\n * R.isNil(undefined); //=> true\n * R.isNil(0); //=> false\n * R.isNil([]); //=> false\n */\n\nvar isNil =\n/*#__PURE__*/\n_curry1(function isNil(x) {\n return x == null;\n});\n\nexport default isNil;","import _curry3 from \"./internal/_curry3.js\";\nimport _has from \"./internal/_has.js\";\nimport _isInteger from \"./internal/_isInteger.js\";\nimport _assoc from \"./internal/_assoc.js\";\nimport isNil from \"./isNil.js\";\n/**\n * Makes a shallow clone of an object, setting or overriding the nodes required\n * to create the given path, and placing the specific value at the tail end of\n * that path. Note that this copies and flattens prototype properties onto the\n * new object as well. All non-primitive properties are copied by reference.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Object\n * @typedefn Idx = String | Int | Symbol\n * @sig [Idx] -> a -> {a} -> {a}\n * @param {Array} path the path to set\n * @param {*} val The new value\n * @param {Object} obj The object to clone\n * @return {Object} A new object equivalent to the original except along the specified path.\n * @see R.dissocPath\n * @example\n *\n * R.assocPath(['a', 'b', 'c'], 42, {a: {b: {c: 0}}}); //=> {a: {b: {c: 42}}}\n *\n * // Any missing or non-object keys in path will be overridden\n * R.assocPath(['a', 'b', 'c'], 42, {a: 5}); //=> {a: {b: {c: 42}}}\n */\n\nvar assocPath =\n/*#__PURE__*/\n_curry3(function assocPath(path, val, obj) {\n if (path.length === 0) {\n return val;\n }\n\n var idx = path[0];\n\n if (path.length > 1) {\n var nextObj = !isNil(obj) && _has(idx, obj) && typeof obj[idx] === 'object' ? obj[idx] : _isInteger(path[1]) ? [] : {};\n val = assocPath(Array.prototype.slice.call(path, 1), val, nextObj);\n }\n\n return _assoc(idx, val, obj);\n});\n\nexport default assocPath;","export default function _has(prop, obj) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}","import _isArray from \"./_isArray.js\";\nimport _isInteger from \"./_isInteger.js\";\n/**\n * Makes a shallow clone of an object, setting or overriding the specified\n * property with the given value. Note that this copies and flattens prototype\n * properties onto the new object as well. All non-primitive properties are\n * copied by reference.\n *\n * @private\n * @param {String|Number} prop The property name to set\n * @param {*} val The new value\n * @param {Object|Array} obj The object to clone\n * @return {Object|Array} A new object equivalent to the original except for the changed property.\n */\n\nexport default function _assoc(prop, val, obj) {\n if (_isInteger(prop) && _isArray(obj)) {\n var arr = [].concat(obj);\n arr[prop] = val;\n return arr;\n }\n\n var result = {};\n\n for (var p in obj) {\n result[p] = obj[p];\n }\n\n result[prop] = val;\n return result;\n}","import Button from \"@mui/material/Button\";\nimport Grid from \"@mui/material/Grid\";\nimport { FormEvent, useMemo } from \"react\";\nimport { useState } from \"react\";\nimport {\n Model,\n BasicModelInstance,\n FieldType,\n newInstanceFromValuesOrZeroValue,\n} from \"~/generators\";\nimport { ModelFormField } from \"./model-form-field\";\nimport { assocPath } from \"ramda\";\n\nexport interface ModelFormProps<T extends BasicModelInstance> {\n model: Model;\n dense?: boolean;\n initialValues?: T;\n saveButtonText: string;\n onSubmit: (values: T) => void;\n}\n\nexport const ModelForm = <T extends BasicModelInstance>({\n model,\n saveButtonText,\n dense,\n onSubmit,\n initialValues,\n}: ModelFormProps<T>) => {\n const valuesInitialState = useMemo(\n () => newInstanceFromValuesOrZeroValue<T>(model, initialValues),\n [model, initialValues],\n );\n const [values, setValues] = useState<T>(valuesInitialState);\n\n const setKeyValue = (path: string[], value: FieldType | null) => {\n setValues((v) => assocPath(path, value, v));\n };\n\n const handleSubmit = (e: FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n onSubmit(values);\n };\n\n return (\n <Grid container component=\"form\" spacing={2} onSubmit={handleSubmit}>\n {model.fields.map((f) => (\n <ModelFormField\n key={f.id}\n dense={dense}\n field={f}\n value={values[f.id]}\n update={!!initialValues}\n onChangeValue={setKeyValue}\n />\n ))}\n <Grid item xs={12}>\n <Button type=\"submit\" variant=\"contained\" size={dense ? \"small\" : \"medium\"}>\n {saveButtonText}\n </Button>\n </Grid>\n </Grid>\n );\n};\n","import { useEffect, useRef } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\n\nexport interface NavigateWhenValueChangesOptions<T> {\n from: T;\n to: T;\n}\n\nexport const useNavigateWhenValueChanges = <T>(\n path: string,\n value: T | undefined,\n { from, to }: NavigateWhenValueChangesOptions<T>,\n) => {\n const prevRef = useRef<T>();\n const navigate = useNavigate();\n\n useEffect(() => {\n if (prevRef.current === from && value === to) {\n navigate(path);\n }\n prevRef.current = value;\n }, [value]);\n};\n","import { useEffect } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport { BasicModelInstance } from \"~/generators\";\nimport { ModelForm } from \"~/model-form\";\nimport { useNavigateWhenValueChanges } from \"~/hooks\";\nimport { HeaderLayout } from \"~/header-layout\";\nimport { useNotifyWhenValueChanges } from \"~/notification-center\";\nimport { RequestState } from \"~/model-router\";\nimport { BaseScreenProps } from \"./screens.types\";\nimport { Header } from \"~/header\";\nimport { Content } from \"~/content\";\n\nexport interface UpdateScreenProps<T extends BasicModelInstance> extends BaseScreenProps {\n /**\n * Callback executed when the user wants to update\n * an item\n */\n onSubmitUpdateItem: (obj: T) => void;\n /**\n * Current status of the request to update an item\n */\n submitUpdateItemRequest: RequestState;\n\n /**\n * Current status of the request to retrieve\n * the item to be updated\n */\n updateItemRequest: RequestState;\n\n /**\n * Callback executed to retrive the item that\n * has to going tobe updated\n */\n onRequestUpdateItem: (id: string) => void;\n\n /**\n * Item that is going to be updated\n */\n updateItem?: T;\n}\n\nexport const UpdateScreen = <T extends BasicModelInstance>({\n model,\n modelName,\n basePath = \"\",\n submitUpdateItemRequest,\n updateItemRequest,\n updateItem,\n onSubmitUpdateItem,\n onRequestUpdateItem,\n}: UpdateScreenProps<T>) => {\n const { id = \"\" } = useParams();\n const loading = updateItemRequest.loading || submitUpdateItemRequest.loading;\n\n useEffect(() => {\n onRequestUpdateItem(id);\n }, [id]);\n\n useNotifyWhenValueChanges(\n {\n title: \"Item updated\",\n message: `The item ${id} has been updated successfully`,\n severity: \"success\",\n },\n !!submitUpdateItemRequest.success,\n { from: false, to: true },\n );\n useNavigateWhenValueChanges(`${basePath}/`, !!submitUpdateItemRequest.success, {\n from: false,\n to: true,\n });\n useNotifyWhenValueChanges(\n { title: \"We had an error\", message: submitUpdateItemRequest.error || \"\", severity: \"error\" },\n !!submitUpdateItemRequest.error,\n { from: false, to: true },\n );\n\n return (\n <HeaderLayout loading={loading}>\n <Header\n title={`Edit ${id}`}\n preset=\"default\"\n breadcrumbs={[\n {\n id: \"list\",\n text: modelName,\n link: `${basePath}/`,\n },\n {\n id: \"update\",\n text: `Edit ${id}`,\n link: `${basePath}/${id}/update`,\n },\n ]}\n />\n <Content>\n <ModelForm\n model={model}\n initialValues={updateItem}\n saveButtonText=\"Save\"\n onSubmit={onSubmitUpdateItem}\n />\n </Content>\n </HeaderLayout>\n );\n};\n","import TableRow from \"@mui/material/TableRow\";\nimport TableCell from \"@mui/material/TableCell\";\nimport IconButton from \"@mui/material/IconButton\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport Menu from \"@mui/material/Menu\";\nimport { EnhancedTable, HeadCell, Order } from \"~/enhanced-table\";\nimport MoreVertIcon from \"@mui/icons-material/MoreVert\";\nimport { BasicModelInstance } from \"~/generators\";\nimport { useState } from \"react\";\n\nconst OptionsId = \"__options\";\n\nexport interface TableRowOption<T extends BasicModelInstance> {\n id: string;\n label: string;\n onClick: (item: T) => void;\n}\n\nexport interface TableListProps<T extends BasicModelInstance> {\n columns: HeadCell<T>[];\n data: T[];\n search?: boolean;\n defaultSort: string;\n defaultOrder?: Order;\n loading?: boolean;\n options?: TableRowOption<T>[];\n onClick?: (d: T) => void;\n}\n\n// TODO: Move this to teh generators section\nexport const TableList = <T extends BasicModelInstance>({\n columns: columnsProp,\n options,\n data,\n onClick,\n search,\n defaultSort,\n defaultOrder,\n loading,\n}: TableListProps<T>) => {\n const columns = [\n ...columnsProp,\n {\n id: OptionsId,\n label: \"\",\n disablePadding: false,\n numeric: false,\n sort: false,\n },\n ];\n const [anchorMenuEl, setAnchorMenuEl] = useState<null | { item: T; anchor: HTMLElement }>(null);\n\n return (\n <>\n <EnhancedTable<T>\n columns={columns}\n data={data}\n search={search}\n defaultSort={defaultSort}\n defaultOrder={defaultOrder}\n loading={loading}\n >\n {(filteredData) =>\n filteredData.map((row, i) => {\n return (\n <TableRow\n key={row.id}\n onClick={() => onClick && onClick(row)}\n role=\"row\"\n aria-rowindex={i}\n sx={{ cursor: onClick && \"pointer\" }}\n >\n {columns.map(({ id }, j) => (\n <TableCell\n role=\"cell\"\n scope=\"row\"\n key={id.toString()}\n aria-rowindex={i}\n aria-colindex={j}\n >\n {\n row[\n id\n ] as string /* TODO: This has to be reimplemented having a cell based on each model type */\n }\n </TableCell>\n ))}\n {options && (\n <TableCell>\n <IconButton\n data-testid={`options-${row.id}`}\n onClick={(event) => {\n event.stopPropagation();\n setAnchorMenuEl({\n item: row,\n anchor: event.currentTarget,\n });\n }}\n >\n <MoreVertIcon />\n </IconButton>\n </TableCell>\n )}\n </TableRow>\n );\n })\n }\n </EnhancedTable>\n {options && (\n <Menu\n anchorEl={anchorMenuEl?.anchor}\n open={!!anchorMenuEl}\n onClose={() => setAnchorMenuEl(null)}\n anchorOrigin={{\n vertical: \"top\",\n horizontal: \"left\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"left\",\n }}\n >\n {options.map(({ id, label, onClick }) => (\n <MenuItem\n key={id}\n onClick={() => {\n if (anchorMenuEl) {\n onClick(anchorMenuEl?.item);\n }\n setAnchorMenuEl(null);\n }}\n >\n {label}\n </MenuItem>\n ))}\n </Menu>\n )}\n </>\n );\n};\n","import { useEffect } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useNotifyWhenValueChanges } from \"~/notification-center\";\nimport { HeaderLayout } from \"~/header-layout\";\nimport { BaseScreenProps } from \"./screens.types\";\nimport { Header, HeaderAction } from \"~/header\";\nimport { Content } from \"~/content\";\nimport { BasicModelInstance } from \"~/generators/generators.model\";\nimport { RequestState } from \"~/model-router\";\nimport { TableList, TableRowOption } from \"~/table-list\";\n\nexport interface ListScreenProps<T extends BasicModelInstance> extends BaseScreenProps {\n /**\n * Callback executed each time the list screen\n * requests for a data update\n */\n onRequestList: () => void;\n\n /**\n * List of items to be displayed in the list screen\n */\n listData: T[];\n\n /**\n * Callback executed when the user clicks an option\n * to delete an item\n */\n onClickDeleteItem: (item: T) => void;\n\n /**\n * Current status of the request to retrieve\n * the list items\n */\n listRequest: RequestState;\n\n /**\n * Current status of the request to delete\n * an item\n */\n deleteRequest: RequestState;\n}\n\nexport const ListScreen = <T extends BasicModelInstance>({\n model,\n modelName,\n listData,\n listRequest,\n deleteRequest,\n basePath = \"\",\n deleteFeature = true,\n updateFeature = true,\n addFeature = true,\n detailsFeature = true,\n onRequestList,\n onClickDeleteItem,\n}: ListScreenProps<T>) => {\n const navigate = useNavigate();\n\n useEffect(() => {\n onRequestList();\n }, []);\n\n useNotifyWhenValueChanges(\n {\n title: \"Item deleted\",\n message: \"The item has been deleted successfully\",\n severity: \"success\",\n },\n !!deleteRequest.success,\n { from: false, to: true },\n );\n\n useNotifyWhenValueChanges(\n { title: \"We had an error\", message: deleteRequest.error || \"\", severity: \"error\" },\n !!deleteRequest.error,\n { from: false, to: true },\n );\n\n const handleClickListItem = detailsFeature\n ? (item: T) => {\n navigate(`${basePath}/${item.id}`);\n }\n : undefined;\n\n const handleClickListOption = (optionId: \"edit\" | \"remove\", item: T) => {\n if (optionId === \"edit\") {\n navigate(`${basePath}/${item.id}/update`);\n } else {\n onClickDeleteItem(item);\n }\n };\n\n const options: TableRowOption<T>[] = [];\n\n updateFeature &&\n options.push({\n id: \"edit\",\n label: \"Edit\",\n onClick: (item: T) => handleClickListOption(\"edit\", item),\n });\n\n deleteFeature &&\n options.push({\n id: \"remove\",\n label: \"Remove\",\n onClick: (item: T) => handleClickListOption(\"remove\", item),\n });\n\n const actions: HeaderAction[] = [];\n\n addFeature &&\n actions.push({\n id: \"add\",\n text: \"Add\",\n href: `${basePath}/add`,\n });\n\n return (\n <HeaderLayout loading={listRequest.loading || deleteRequest.loading}>\n <Header\n title={modelName}\n preset=\"default\"\n actions={actions.length > 0 ? actions : undefined}\n />\n <Content>\n <TableList\n columns={model.fields\n .filter(({ listable }) => listable)\n .map(({ id, name, type }) => ({\n disablePadding: false,\n id,\n label: name,\n numeric: type === \"number\",\n sort: false,\n }))}\n data={listData}\n defaultSort={model.fields[0].id}\n onClick={handleClickListItem}\n options={options.length > 0 ? options : undefined}\n />\n </Content>\n </HeaderLayout>\n );\n};\n","import { HeaderLayout } from \"~/header-layout\";\nimport { useNotifyWhenValueChanges } from \"~/notification-center\";\nimport { BaseScreenProps } from \"./screens.types\";\nimport { useNavigateWhenValueChanges } from \"~/hooks\";\nimport { Header } from \"~/header\";\nimport { Content } from \"~/content\";\nimport { BasicModelInstance } from \"~/generators/generators.model\";\nimport { RequestState } from \"~/model-router\";\nimport { ModelForm } from \"~/model-form\";\n\nexport interface AddScreenProps<T extends BasicModelInstance> extends BaseScreenProps {\n /**\n * Callback executed when the user wants to\n * add a new item\n */\n onSubmitNewItem: (obj: T) => void;\n\n /**\n * Current status of the request to retrieve\n * add a new item\n */\n newItemRequest: RequestState;\n}\n\nexport const AddScreen = <T extends BasicModelInstance>({\n model,\n modelName,\n basePath = \"\",\n onSubmitNewItem,\n newItemRequest,\n}: AddScreenProps<T>) => {\n useNotifyWhenValueChanges(\n { message: \"Item added successfully\", severity: \"success\" },\n !!newItemRequest.success,\n { from: false, to: true },\n );\n useNavigateWhenValueChanges(`${basePath}/`, !!newItemRequest.success, { from: false, to: true });\n useNotifyWhenValueChanges(\n { title: \"We had an error\", message: newItemRequest.error || \"\", severity: \"error\" },\n !!newItemRequest.error,\n { from: false, to: true },\n );\n\n return (\n <HeaderLayout loading={newItemRequest.loading}>\n <Header\n title={`Add ${modelName}`}\n preset=\"default\"\n breadcrumbs={[\n {\n id: \"list\",\n text: modelName,\n link: `${basePath}/`,\n },\n {\n id: \"add\",\n text: `Add new ${modelName}`,\n link: `${basePath}/add`,\n },\n ]}\n />\n <Content>\n <ModelForm model={model} saveButtonText=\"Save\" onSubmit={onSubmitNewItem} />\n </Content>\n </HeaderLayout>\n );\n};\n","import { useEffect } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport { HeaderLayout } from \"~/header-layout\";\nimport { BaseScreenProps } from \"./screens.types\";\nimport { ObjectDetails } from \"~/object-details\";\nimport { Header } from \"~/header\";\nimport { Content } from \"~/content\";\nimport { RequestState } from \"~/model-router\";\nimport { BasicModelInstance } from \"~/generators/generators.model\";\n\nexport interface DetailsScreenProps<T extends BasicModelInstance> extends BaseScreenProps {\n /**\n * Callback executed each time we want\n * the details information of an item\n */\n onRequestItem: (id: string) => void;\n\n /**\n * Current status of the request to retrieve\n * an item\n */\n itemRequest: RequestState;\n\n /**\n * Item to be displayed\n */\n detailsItem?: T;\n}\n\nexport const DetailsScreen = <T extends BasicModelInstance>({\n model,\n modelName,\n basePath = \"\",\n onRequestItem,\n itemRequest,\n detailsItem,\n}: DetailsScreenProps<T>) => {\n const { id = \"\" } = useParams();\n\n useEffect(() => {\n onRequestItem(id);\n }, [id]);\n\n return (\n <HeaderLayout loading={itemRequest.loading}>\n <Header\n title={id}\n preset=\"default\"\n breadcrumbs={[\n {\n id: \"list\",\n text: modelName,\n link: `${basePath}/`,\n },\n {\n id: \"detail\",\n text: id,\n link: `${basePath}/${id}`,\n },\n ]}\n />\n <Content>{detailsItem && <ObjectDetails model={model} instance={detailsItem} />}</Content>\n </HeaderLayout>\n );\n};\n","import Grid from \"@mui/material/Grid\";\nimport Button from \"@mui/material/Button\";\nimport Typography from \"@mui/material/Typography\";\nimport DialogContentText from \"@mui/material/DialogContentText\";\nimport { Variant } from \"@mui/material/styles/createTypography\";\nimport { ReactElement } from \"react\";\nimport { ActionHeader } from \"./action-header\";\nimport { ConfirmDialog } from \"~/confirm-dialog\";\nimport { useDialog } from \"~/dialog\";\n\nexport type ActionVariant = \"primary\" | \"error\" | \"warning\" | \"success\";\n\nexport interface ActionProps {\n variant: ActionVariant;\n title: string;\n titleVariant?: Extract<Variant, \"h4\" | \"h5\" | \"h6\">;\n description?: string | ReactElement;\n descriptionVariant?: Variant;\n helperText?: string;\n helperTextVariant?: Variant;\n buttonText: string;\n confirmable?: boolean;\n confirmTitle?: string;\n confirmDescription?: string;\n passphrase?: string;\n onAction: () => void;\n}\n\nexport const Action = ({\n variant = \"primary\",\n title,\n titleVariant = \"h4\",\n description,\n descriptionVariant = \"body2\",\n buttonText,\n helperText,\n helperTextVariant = \"caption\",\n confirmable,\n passphrase,\n confirmTitle = \"\",\n confirmDescription = \"\",\n onAction,\n}: ActionProps) => {\n const { isOpen, open, close } = useDialog();\n\n const handleClickActionButton = () => {\n if (confirmable) {\n open();\n } else {\n onAction();\n }\n };\n\n const handleConfirmDialog = () => {\n onAction();\n close;\n };\n\n return (\n <>\n <Grid container spacing={1}>\n <Grid item xs={12} mb={2}>\n <ActionHeader title={title} titleVariant={titleVariant} />\n </Grid>\n {description && (\n <Grid item xs={12}>\n <Typography variant={descriptionVariant}>{description}</Typography>\n </Grid>\n )}\n <Grid item xs={12} mt={1}>\n <Button color={variant} variant=\"contained\" onClick={handleClickActionButton}>\n {buttonText}\n </Button>\n </Grid>\n {helperText && (\n <Grid item xs={12}>\n <Typography variant={helperTextVariant}>{helperText}</Typography>\n </Grid>\n )}\n </Grid>\n <ConfirmDialog\n open={isOpen}\n title={confirmTitle}\n passphrase={passphrase}\n onCancel={close}\n onConfirm={handleConfirmDialog}\n >\n <DialogContentText>{confirmDescription}</DialogContentText>\n </ConfirmDialog>\n </>\n );\n};\n","import MuiAutocomplete, {\n AutocompleteProps as MuiAutocompleteProps,\n} from \"@mui/material/Autocomplete\";\nimport React from \"react\";\nimport { TextField } from \"../text-field\";\nimport { ChipTypeMap } from \"@mui/material/Chip\";\n\nexport interface AutocompleteProps<\n T,\n Multiple extends boolean | undefined,\n DisableClearable extends boolean | undefined,\n FreeSolo extends boolean | undefined,\n ChipComponent extends React.ElementType = ChipTypeMap[\"defaultComponent\"],\n> extends Omit<\n MuiAutocompleteProps<T, Multiple, DisableClearable, FreeSolo, ChipComponent>,\n \"renderInput\" | \"onChange\" | \"color\"\n > {\n label: string;\n helperText?: string;\n color?: string;\n fetching?: boolean;\n onChangeValue?: (value: T) => void;\n}\n\nexport const Autocomplete = <\n T,\n Multiple extends boolean | undefined,\n DisableClearable extends boolean | undefined,\n FreeSolo extends boolean | undefined,\n ChipComponent extends React.ElementType = ChipTypeMap[\"defaultComponent\"],\n>(\n props: AutocompleteProps<T, Multiple, DisableClearable, FreeSolo, ChipComponent>,\n) => {\n const {\n label,\n loading,\n fetching,\n options,\n helperText,\n color,\n onChangeValue = () => null,\n sx,\n ...rest\n } = props;\n const loadingOrFetching = loading || fetching;\n\n return (\n <MuiAutocomplete\n loading={loadingOrFetching}\n options={fetching ? [] : options}\n onChange={(_, value) => onChangeValue(value as T)}\n {...(rest as any)}\n renderInput={(params) => (\n <TextField\n {...params}\n label={label}\n fullWidth\n fetching={fetching}\n loading={loading}\n hexColor={color}\n helperText={helperText}\n />\n )}\n sx={sx}\n />\n );\n};\n","import Container from \"@mui/material/Container\";\nimport { PropsWithChildren } from \"react\";\nimport { SkeletonGrid } from \"~/skeleton-grid\";\n\nexport type ContentPlaceholderProps = PropsWithChildren<{\n size?: number;\n p?: number;\n}>;\n\nexport const ContentPlaceholder = ({ size = 20, children, p }: ContentPlaceholderProps) => {\n return (\n <Container component=\"main\" sx={{ p }} data-testid=\"content-placeholder-test\">\n {children}\n <SkeletonGrid size={size} />\n </Container>\n );\n};\n","import { useState } from \"react\";\nimport { format } from \"date-fns\";\nimport Collapse from \"@mui/material/Collapse\";\nimport IconButton from \"@mui/material/IconButton\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport TextField from \"@mui/material/TextField\";\nimport Paper from \"@mui/material/Paper\";\nimport EventIcon from \"@mui/icons-material/Event\";\nimport { DateRangeCalendar } from \"~/date-range-calendar\";\n\ntype DateRange = [Date, Date | undefined];\nexport interface DateRangePickerProps {\n label: string;\n defaultValue: DateRange;\n format: string;\n fullWidth?: boolean;\n size?: \"small\" | \"medium\";\n onValueChange: (value: DateRange, index: number) => void;\n}\n\nexport const DateRangePicker = ({\n defaultValue,\n format: fmt,\n label,\n fullWidth,\n onValueChange,\n size = \"medium\",\n}: DateRangePickerProps) => {\n const [isPopoverOpened, setIsPopoverOpened] = useState(false);\n const [value, setValue] = useState(defaultValue);\n\n const handleValueChange = (newValue: DateRange, index: number) => {\n setValue(newValue);\n onValueChange(newValue, index);\n setIsPopoverOpened(index < 1);\n };\n\n return (\n <>\n <TextField\n label={label}\n fullWidth={fullWidth}\n size={size}\n value={`${format(value[0], fmt)} - ${value[1] ? format(value[1], fmt) : fmt.toUpperCase()}`}\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton onClick={() => setIsPopoverOpened((o) => !o)} aria-label=\"open calendar\">\n <EventIcon />\n </IconButton>\n </InputAdornment>\n ),\n }}\n />\n <Paper>\n <Collapse in={isPopoverOpened} aria-label=\"calendar collapse\">\n <DateRangeCalendar defaultValue={defaultValue} onValueChange={handleValueChange} />\n </Collapse>\n </Paper>\n </>\n );\n};\n","import { DrawerSection } from \"~/drawer-section\";\nimport { DrawerContentComponent, DrawerContentProps } from \"~/drawer\";\n\n/**\n * Content to be shown inside a navigation\n */\nexport const DrawerContent: DrawerContentComponent = ({\n nav: { items },\n size = \"medium\",\n}: DrawerContentProps) => {\n return (\n <>\n {items.map(({ title, items }, i) => (\n <DrawerSection key={i} title={title} items={items} size={size} />\n ))}\n </>\n );\n};\n","import { ReactNode } from \"react\";\nimport { DrawerProvider, DrawerProviderProps } from \"~/drawer-provider\";\nimport { DrawerMain } from \"~/drawer-main\";\nimport { DrawerAppBarElement, DrawerElement } from \"~/drawer/drawer.types\";\n\nexport interface DrawerLayoutProps {\n drawerProviderProps?: DrawerProviderProps;\n children: [DrawerElement, DrawerAppBarElement, ReactNode];\n}\n\nexport const DrawerLayout = ({\n drawerProviderProps,\n children: childrenProps,\n}: DrawerLayoutProps) => {\n const [appBar, drawer, children] = childrenProps;\n\n return (\n <DrawerProvider {...drawerProviderProps}>\n {appBar}\n {drawer}\n <DrawerMain>{children}</DrawerMain>\n </DrawerProvider>\n );\n};\n","import { ReactNode, useState } from \"react\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport TableBody from \"@mui/material/TableBody\";\nimport Table from \"@mui/material/Table\";\nimport TableRow from \"@mui/material/TableRow\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport TableCell from \"@mui/material/TableCell\";\nimport { EnhancedTableHead, HeadCell, Order } from \"~/enhanced-table\";\n\nexport interface EnhancedRemoteTableProps<T> {\n data: T[];\n loading: boolean;\n defaultSort: keyof T;\n defaultOrder?: Order;\n columns: HeadCell<T>[];\n children: (data: T, index: number) => ReactNode;\n onRequestSort: (col: keyof T, orderBy: \"asc\" | \"desc\") => void;\n}\n\nexport const EnhancedRemoteTable = <T,>({\n children,\n data,\n loading,\n columns,\n defaultSort,\n defaultOrder,\n onRequestSort,\n}: EnhancedRemoteTableProps<T>) => {\n const [order, setOrder] = useState({\n orderBy: defaultSort,\n order: defaultOrder || \"asc\",\n });\n\n const handleRequestSort = (property: keyof T) => {\n setOrder(({ orderBy, order }) => {\n const newOrder = orderBy === property && order === \"asc\" ? \"desc\" : \"asc\";\n onRequestSort(property, newOrder);\n\n return {\n orderBy: property,\n order: newOrder,\n };\n });\n };\n\n return (\n <>\n <TableContainer>\n <Table>\n <EnhancedTableHead\n order={order.order}\n orderBy={order.orderBy}\n headCells={columns}\n onRequestSort={handleRequestSort}\n />\n <TableBody>\n {loading ? (\n <TableRow>\n <TableCell colSpan={columns.length} sx={{ textAlign: \"center\" }}>\n <CircularProgress />\n </TableCell>\n </TableRow>\n ) : (\n data.map((d, i) => children(d, i))\n )}\n </TableBody>\n </Table>\n </TableContainer>\n </>\n );\n};\n","import { BootstrapDialog } from \"~/bootstrap-dialog\";\nimport { FormEvent } from \"react\";\nimport { BootstrapDialogDialogProps } from \"~/dialog\";\nimport { getFormData } from \"~/utils/forms\";\n\ntype OmitBaseDialogProps =\n | \"cancelable\"\n | \"acceptable\"\n | \"onAccept\"\n | \"onCancel\"\n | \"onClose\"\n | \"actions\"\n | \"callCloseWhenCancel\"\n | \"component\"\n | \"acceptType\";\nexport interface FormDialogProps<T> extends Omit<BootstrapDialogDialogProps, OmitBaseDialogProps> {\n submitText?: string;\n canceText?: string;\n onCancel: () => void;\n onSubmit: (data: T) => void;\n}\n\nexport const FormDialog = <T,>({\n open,\n title,\n loading,\n disabled,\n submitText = \"Submit\",\n cancelText = \"Cancel\",\n children,\n onSubmit,\n onCancel,\n}: FormDialogProps<T>) => {\n const handleSubmit = (e: FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n onSubmit(getFormData<T>(e));\n };\n\n return (\n <BootstrapDialog\n component=\"form\"\n componentProps={{\n onSubmit: handleSubmit,\n }}\n title={title}\n loading={loading}\n disabled={loading || disabled}\n open={open}\n onClose={onCancel}\n callCloseWhenCancel={false}\n cancelable\n acceptable\n cancelText={cancelText}\n onCancel={onCancel}\n acceptText={submitText}\n acceptType=\"submit\"\n >\n {children}\n </BootstrapDialog>\n );\n};\n","export interface RequestState {\n idle?: boolean;\n loading?: boolean;\n error?: string;\n success?: boolean;\n}\n\nexport const IdleRequest: RequestState = {\n idle: true,\n};\n\nexport const LoadingRequest: RequestState = {\n loading: true,\n};\n\nexport const SuccessRequest: RequestState = {\n success: true,\n};\n","import Grid from \"@mui/material/Grid\";\nimport List from \"@mui/material/List\";\nimport ListItemButton from \"@mui/material/ListItemButton\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport Paper from \"@mui/material/Paper\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport { useTheme } from \"@mui/material\";\nimport { PropsWithChildren, useState } from \"react\";\nimport { useGetDefaultThemeColor } from \"~/utils\";\nimport { ListPanelContextProvider } from \"./list-panel.context\";\nimport { grey } from \"@mui/material/colors\";\n\nexport interface ListPanelItem {\n id: string;\n text: string;\n tooltip?: string;\n}\n\nexport type ListPanelProps = PropsWithChildren<{\n defaultSelectedItem?: string;\n items: ListPanelItem[];\n colBreakpoint?: number;\n onSelectedItemChange?: (id: string) => void;\n}>;\n\nexport const ListPanel = ({\n items,\n defaultSelectedItem,\n colBreakpoint = 3,\n children,\n onSelectedItemChange = () => null,\n}: ListPanelProps) => {\n const bgColor = useGetDefaultThemeColor();\n const { palette, typography } = useTheme();\n const [selectedItem, setSelectedItem] = useState(defaultSelectedItem);\n\n const handleSelectItem = (id: string) => {\n setSelectedItem(id);\n onSelectedItemChange(id);\n };\n\n return (\n <ListPanelContextProvider value={selectedItem}>\n <Grid container bgcolor={bgColor} height={1}>\n <Grid item xs={colBreakpoint} pl={1} height={1}>\n <List sx={{ height: 1, overflowY: \"auto\" }}>\n {items.map(({ id, text, tooltip }) => {\n const selected = id === selectedItem;\n\n const contentEl = (\n <ListItemButton\n key={id}\n dense\n selected={selected}\n onClick={() => handleSelectItem(id)}\n aria-label={text}\n sx={{ backgroundColor: selected ? `${palette.grey[300]} !important` : undefined }}\n >\n <ListItemText\n primary={text}\n primaryTypographyProps={{\n fontWeight: selected ? typography.fontWeightMedium : undefined,\n color: selected ? typography.body1.color : grey[600],\n }}\n />\n </ListItemButton>\n );\n\n return tooltip ? (\n <Tooltip key={id} title={tooltip} enterDelay={1500} placement=\"right\">\n {contentEl}\n </Tooltip>\n ) : (\n contentEl\n );\n })}\n </List>\n </Grid>\n <Grid item xs={12 - colBreakpoint} pl={1} py={1} pr={1}>\n <Paper\n elevation={0}\n sx={{\n width: 1,\n height: 1,\n backgroundColor: palette.background.paper,\n }}\n >\n {children}\n </Paper>\n </Grid>\n </Grid>\n </ListPanelContextProvider>\n );\n};\n","import Typography from \"@mui/material/Typography\";\nimport { Variant } from \"@mui/material/styles/createTypography\";\nimport { loremIpsum } from \"lorem-ipsum\";\nimport { LoremUnit } from \"lorem-ipsum/types/src/constants/units\";\n\nexport interface LoremIpsumPlaceholderProps {\n count?: number;\n units?: LoremUnit;\n variant?: Variant;\n}\n\nexport const LoremIpsumPlaceholder = ({\n count = 3,\n units = \"paragraph\",\n variant = \"body1\",\n}: LoremIpsumPlaceholderProps) => {\n return (\n <Typography variant={variant}>\n {loremIpsum({\n count,\n units,\n })}\n </Typography>\n );\n};\n","import { Routes, Route } from \"react-router-dom\";\nimport { BasicModelInstance } from \"~/generators\";\nimport {\n AddScreen,\n AddScreenProps,\n DetailsScreen,\n DetailsScreenProps,\n ListScreen,\n ListScreenProps,\n UpdateScreen,\n UpdateScreenProps,\n} from \"./screens\";\n\nexport type ModelRouterProps<T extends BasicModelInstance> = DetailsScreenProps<T> &\n ListScreenProps<T> &\n AddScreenProps<T> &\n UpdateScreenProps<T>;\n\nexport const ModelRouter = <T extends BasicModelInstance>(props: ModelRouterProps<T>) => {\n const { updateFeature = true, addFeature = true, detailsFeature = true } = props;\n return (\n <Routes>\n <Route path=\"\" element={<ListScreen {...props} />} />\n {detailsFeature && <Route path=\":id\" element={<DetailsScreen {...props} />} />}\n {addFeature && <Route path=\"add\" element={<AddScreen {...props} />} />}\n {updateFeature && <Route path=\":id/update\" element={<UpdateScreen {...props} />} />}\n </Routes>\n );\n};\n","import { useState, PropsWithChildren } from \"react\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport Alert from \"@mui/material/Alert\";\nimport AlertTitle from \"@mui/material/AlertTitle\";\nimport { Notification, NotificationCenterContext } from \"./notification-center.context\";\n\nexport type NotificationCenterProviderProps = PropsWithChildren<{\n autoHideDuration?: number;\n}>;\n\nexport const NotificationCenterProvider = ({\n children,\n autoHideDuration = 6000,\n}: NotificationCenterProviderProps) => {\n const [notification, setNotification] = useState<Notification | undefined>(undefined);\n const [open, setOpen] = useState(false);\n const show = (notification: Notification) => {\n setNotification(notification);\n setOpen(true);\n };\n\n const hide = () => {\n setOpen(false);\n };\n\n return (\n <NotificationCenterContext.Provider\n value={{\n show,\n hide,\n }}\n >\n <Snackbar\n open={open}\n autoHideDuration={autoHideDuration}\n onClose={hide}\n anchorOrigin={{ vertical: \"top\", horizontal: \"right\" }}\n >\n <Alert\n onClose={hide}\n severity={notification?.severity}\n aria-label={notification?.severity}\n sx={{ width: \"100%\" }}\n >\n {notification?.title && <AlertTitle>{notification?.title}</AlertTitle>}\n {notification?.message}\n </Alert>\n </Snackbar>\n {children}\n </NotificationCenterContext.Provider>\n );\n};\n","import Alert from \"@mui/material/Alert\";\nimport AlertTitle from \"@mui/material/AlertTitle\";\nimport Box from \"@mui/material/Box\";\nimport LinearProgress from \"@mui/material/LinearProgress\";\nimport { PropsWithChildren } from \"react\";\nimport { LoadingArea } from \"~/loading-area\";\n\nexport interface QueryContainerError {\n /**\n * The error title\n */\n name?: string;\n /**\n * The description of the error\n */\n message: string;\n}\n\nexport interface QueryContainerSuccess {\n /**\n * The success title\n */\n name?: string;\n /**\n * The success text\n */\n message: string;\n}\n\nexport type QueryContainerProps = PropsWithChildren<{\n /**\n * There is a query in progress and we have available data\n */\n fetching?: boolean | boolean[];\n\n /**\n * There is a query in progress and we don't have available data\n */\n loading?: boolean | boolean[];\n /**\n * The query has returned an error\n */\n error?: QueryContainerError;\n /**\n * The query has finished successfully\n */\n success?: QueryContainerSuccess;\n}>;\n\n/**\n * Component to show different indicators based on the usual api query statuses\n */\nexport function QueryContainer({\n fetching: fetchingProp = false,\n loading: loadingProp = false,\n error,\n success,\n children,\n}: QueryContainerProps) {\n const fetching = Array.isArray(fetchingProp) ? fetchingProp.some((f) => f) : fetchingProp;\n const loading = Array.isArray(loadingProp) ? loadingProp.some((f) => f) : loadingProp;\n\n if (loading) {\n return <LoadingArea />;\n }\n\n if (error) {\n return (\n <Alert severity=\"error\" role=\"alert\" aria-describedby=\"error\">\n {error.name && <AlertTitle role=\"heading\">{error.name}</AlertTitle>}\n {error.message}\n </Alert>\n );\n }\n\n return (\n <Box>\n {success && (\n <Alert severity=\"success\" role=\"alert\" aria-describedby=\"success\" sx={{ mb: 2 }}>\n {success.name && <AlertTitle role=\"heading\">{success.name}</AlertTitle>}\n {success.message}\n </Alert>\n )}\n {fetching && <LinearProgress sx={{ width: 1, mb: 1 }} />}\n {children}\n </Box>\n );\n}\n","import { FormEvent, useState } from \"react\";\nimport Stack from \"@mui/material/Stack\";\nimport Box from \"@mui/material/Box\";\nimport TextField from \"@mui/material/TextField\";\nimport Typography from \"@mui/material/Typography\";\nimport Alert from \"@mui/material/Alert\";\nimport LoadingButton from \"@mui/lab/LoadingButton\";\n\nexport interface SignInProps {\n title: string;\n subtitle: string;\n error?: Error;\n loading?: boolean;\n onSubmitSignIn: (email: string, password: string) => void;\n}\n\nexport const SignIn = ({ title, subtitle, loading, error, onSubmitSignIn }: SignInProps) => {\n const [emailError, setEmailError] = useState(\"\");\n const [passwordError, setPasswordError] = useState(\"\");\n\n function handleSubmit(e: FormEvent<HTMLFormElement>) {\n e.preventDefault();\n setEmailError(\"\");\n setPasswordError(\"\");\n\n const data = new FormData(e.currentTarget);\n const email = data.get(\"email\")?.toString();\n const password = data.get(\"password\")?.toString();\n\n if (!email) {\n setEmailError(\"Please fill out this field\");\n }\n\n if (!password) {\n setPasswordError(\"Please fill out this field\");\n }\n\n if (email && password) {\n onSubmitSignIn(email, password);\n }\n }\n\n return (\n <>\n <Box marginBottom={2}>\n <Typography component=\"h1\" variant=\"h4\">\n {title}\n </Typography>\n <Typography variant=\"body1\">{subtitle}</Typography>\n </Box>\n <Box component=\"form\" onSubmit={handleSubmit}>\n {error && (\n <Stack width=\"100%\" marginTop={1}>\n <Alert variant=\"filled\" severity=\"error\">\n {error.message}\n </Alert>\n </Stack>\n )}\n <TextField\n margin=\"normal\"\n fullWidth\n id=\"email\"\n label=\"Email Address\"\n name=\"email\"\n autoComplete=\"email\"\n autoFocus\n disabled={loading}\n type=\"email\"\n inputProps={{ role: \"input\" }}\n error={!!emailError}\n helperText={emailError}\n />\n <TextField\n margin=\"normal\"\n fullWidth\n role=\"input\"\n name=\"password\"\n label=\"Password\"\n type=\"password\"\n id=\"password\"\n disabled={loading}\n autoComplete=\"current-password\"\n inputProps={{ role: \"input\" }}\n error={!!passwordError}\n helperText={passwordError}\n />\n <LoadingButton\n type=\"submit\"\n fullWidth\n variant=\"contained\"\n loading={loading}\n disabled={loading}\n role=\"button\"\n sx={{ mt: 2 }}\n >\n Sign In\n </LoadingButton>\n </Box>\n </>\n );\n};\n","import { PropsWithChildren, useContext } from \"react\";\nimport { TabCardContext } from \"./tab-card.context\";\nimport { SxProps, Theme } from \"@mui/material\";\nimport Box from \"@mui/material/Box\";\n\nexport type TabCardPanelProps = PropsWithChildren<{\n index: number | number[];\n sx?: SxProps<Theme>;\n}>;\n\nexport const TabCardPanel = ({ index, children, sx }: TabCardPanelProps) => {\n const [value] = useContext(TabCardContext);\n let isTab = value === index;\n if (Array.isArray(index)) {\n isTab = index.includes(value);\n }\n\n return isTab ? <Box sx={sx}>{children}</Box> : null;\n};\n","import Box from \"@mui/material/Box\";\nimport { useTab } from \"~/tab-provider\";\n\ninterface TabPanelProps {\n children?: React.ReactNode;\n index: number | number[];\n}\n\nexport function TabPanel({ children, index }: TabPanelProps) {\n const [value] = useTab();\n let isTab = value === index;\n if (Array.isArray(index)) {\n isTab = index.includes(value);\n }\n\n return (\n <div\n role=\"tabpanel\"\n hidden={!isTab}\n id={`simple-tabpanel-${index}`}\n aria-labelledby={`simple-tab-${index}`}\n >\n {isTab && <Box sx={{ p: 3 }}>{children}</Box>}\n </div>\n );\n}\n","import Paper from \"@mui/material/Paper\";\nimport { PropsWithChildren } from \"react\";\n\nexport type ValueCardProps = PropsWithChildren;\n\n/**\n * Container to show a labeled value\n */\nexport const ValueCard = ({ children }: ValueCardProps) => {\n return <Paper sx={{ p: 2 }}>{children}</Paper>;\n};\n","import { BaseValueProps, DefaultPlaceholder } from \"~/value-base\";\nimport { getValueContentLabelId, ValueContent } from \"~/value-content\";\nimport { Label, LabelVariant } from \"~/label\";\nimport Grid from \"@mui/material/Grid\";\n\nexport type ValueLabelProps = BaseValueProps<string | number | string[] | number[]> & {\n variant: LabelVariant | LabelVariant[];\n};\n\n/**\n * Displays a label component value with a label\n */\nexport const ValueLabel = ({\n label,\n value: valueProp,\n placeholder = DefaultPlaceholder,\n variant,\n}: ValueLabelProps) => {\n const id = getValueContentLabelId(label);\n let value;\n\n Array.isArray(valueProp)\n ? (value = valueProp.map((value, i) => (\n <Label\n text={value.toString() || placeholder}\n variant={Array.isArray(variant) ? variant[i] : variant}\n key={i}\n />\n )))\n : (value = (\n <Label\n text={valueProp?.toString() || placeholder}\n variant={Array.isArray(variant) ? variant[0] : variant}\n />\n ));\n\n return (\n <ValueContent label={label}>\n <Grid container gap={1} aria-labelledby={id}>\n {value}\n </Grid>\n </ValueContent>\n );\n};\n","import Box from \"@mui/material/Box\";\nimport Rating from \"@mui/material/Rating\";\nimport { useEditableValueDisplay, ValueEditButton, ValueEditButtons } from \"~/value-base\";\nimport { BaseValueProps, EditableValueProps } from \"~/value-base\";\nimport { getValueContentLabelId, ValueContent } from \"~/value-content\";\n\nexport type ValueRatingProps = BaseValueProps<number> & {\n maxRating?: number;\n} & EditableValueProps<number>;\n\n/**\n * Displays a number using stars\n */\nexport const ValueRating = ({\n label,\n value = 0,\n maxRating = 5,\n editable,\n dense,\n onEdit = () => null,\n}: ValueRatingProps) => {\n const { isEditing, editValue, startEdit, cancelEdit, setEditValue, submitEdit } =\n useEditableValueDisplay(value, onEdit);\n const id = getValueContentLabelId(label);\n\n return (\n <ValueContent label={label} tooltip={value.toString()} dense={dense}>\n <Box display=\"flex\" alignItems=\"center\">\n <Rating\n aria-labelledby={id}\n readOnly={!isEditing}\n max={maxRating}\n size={dense ? \"small\" : \"medium\"}\n value={isEditing ? editValue : value}\n onChange={(e, newValue) => {\n if (Number.isNaN(newValue) && (e.currentTarget as any).value) {\n setEditValue(parseInt((e.currentTarget as any).value, 10));\n } else if (newValue) {\n setEditValue(newValue);\n }\n }}\n />\n {editable && !isEditing && <ValueEditButton dense={dense} onClick={startEdit} />}\n {isEditing && <ValueEditButtons onClickCancel={cancelEdit} onClickSubmit={submitEdit} />}\n </Box>\n </ValueContent>\n );\n};\n"],"names":["markdownDefaultOptions","overrides","h1","component","Typography","props","gutterBottom","variant","h2","h3","h4","paragraph","p","a","Link","li","Markdown","content","options","_jsx","ReactMarkdown","children","Board","markdown","markdownProps","contentProp","spacing","sx","themeSpacing","typography","useTheme","copyContent","Array","isArray","map","line","i","jsx","pb","join","Paper","position","pl","pr","py","backgroundColor","blueGrey","color","_jsxs","Box","display","flexDirection","width","top","right","IconButton","onClick","navigator","clipboard","writeText","Tooltip","title","ContentCopyIcon","fontSize","pxToRem","alertSx","alertClasses","message","ExpandableAlert","forwardRef","severity","iconMapping","metadata","metadataComponent","onClose","ref","expanded","setExpanded","useState","Alert","action","CloseIcon","e","ExpandLessIcon","ExpandMoreIcon","w","AlertTitle","Collapse","in","mt","Content","Container","flexGrow","CenterContainer","centerVertical","centerHorizontal","height","justifyContent","alignItems","newArrayWithSize","size","fillValue","fill","useGetDefaultThemeColor","lightWeight","darkWeight","palette","mode","grey","newBreakpointsCounter","breakpoint","calculateBreakpointIncrement","breakpointsCounter","key","value","initialValue","xs","sm","md","lg","xl","increment","smInc","mdInc","lgInc","xlInc","this","getFormData","data","FormData","currentTarget","rawData","forEach","ListPanelContext","createContext","undefined","ListPanelContextProvider","Provider","bulletClasses","root","Bullet","Badge","className","role","Label","text","textTransform","default","primary","light","secondary","info","warning","error","success","textColor","getContrastText","contrastText","minWidth","bgcolor","caption","fontWeight","fontWeightBold","lineHeight","whiteSpace","borderRadius","px","cursor","LinkBehaviour","href","other","RouterLink","to","_1","MuiLink","TabContext","TabContextProvider","useTab","useContext","TabProvider","tabState","HeaderTitle","loading","CircularProgress","_Fragment","Fragment","HeaderSubtitle","body1","Header","loadingTitle","subtitle","loadingSubtitle","preset","actionsVariant","breadcrumbs","actions","tabs","tabsMode","navigationButton","location","useLocation","defaultColor","selectedTab","setSelectedTab","bgColorPresets","main","inherit","transparent","bgColor","modedSelectedTab","findIndex","tab","pathname","Button","LinkComponent","startIcon","icon","mb","length","Breadcrumbs","separator","marginTop","id","link","underline","disabled","mr","Tabs","onChange","_","index","label","tabProps","Tab","BootstrapDialog","open","componentProps","disableAccept","disableCancel","cancelable","callCloseWhenCancel","acceptable","acceptText","cancelText","onAccept","onCancel","acceptType","hasActions","Dialog","jsxs","DialogTitle","ml","theme","DialogContent","dividers","DialogActions","type","LoadingButton","ConfirmDialog","confirmText","passphrase","onConfirm","inputPassphrase","setInputPassphrase","validPassphrase","TextField","fullWidth","target","placeholder","useDialog","intialOpen","isOpen","setIsOpen","close","DrawerContext","UndefinedProvider","Error","useDrawer","context","openedMixin","transition","transitions","create","easing","sharp","duration","enteringScreen","overflowX","closedMixin","leavingScreen","breakpoints","up","DrawerHeader","styled","padding","mixins","toolbar","showCloseButton","temporary","mini","persistent","clipped","muiDrawerVariant","NoopSxGenerator","variantsSx","state","boxSizing","paperClasses","zIndex","drawer","initialState","targetStates","DrawerProvider","initialStateProp","drawerWidth","drawerWidthProp","underAppBar","selectedItemId","onStateChange","setState","handleChangeState","newState","switchState","collapse","DrawerSubheader","ListSubheader","shouldForwardProp","prop","getDrawerItemColors","selected","fontWeightMedium","StyledLink","sxCollapsedIcon","marginRight","DrawerItemLink","avatar","bullet","level","ListItemButton","dense","paddingHorizontal","ListItemIcon","ListItemAvatar","Avatar","alt","src","ListItemText","disableTypography","opacity","DrawerItem","item","items","childrenSelected","some","DrawerMenuItem","anchorEl","useRef","menuOpen","setMenuOpen","submenu","List","disablePadding","collapsedButtonSx","o","hover","ChevronRightIcon","timeout","unmountOnExit","Popover","PaperProps","elevation","current","anchorOrigin","vertical","horizontal","DrawerSection","paddingTop","paddingY","moveWithDrawer","showMenuButton","drawerSpace","StyledDiv","marginLeft","DrawerMain","LoadingArea","ProgressSize","small","medium","globalId","maybeReactUseId","React","toString","useId","idOverride","reactId","defaultId","setDefaultId","useEffect","useGlobalId","overrideId","InputLabelProps","InputProps","fetching","helperText","hexColor","rest","helperTextId","inputLabelId","hexColorSx","outlinedInputClasses","notchedOutline","borderColor","inputLabelClasses","input","circularProgressClasses","linearProgressClasses","bar","autocompleteClasses","endAdornment","iconButtonClasses","FormControl","InputLabel","htmlFor","OutlinedInput","InputAdornment","LinearProgress","left","bottom","FormHelperText","CustomPickersDayBackground","dayIsBetween","isFirstDay","isLastDay","margin","borderTopLeftRadius","borderBottomLeftRadius","borderTopRightRadius","borderBottomRightRadius","Day","day","dateRange","PickersDay","start","end","isAfter","isBefore","isSameDay","isStartOfWeek","startOfWeek","isEndOfWeek","endOfWeek","format","DateRangeCalendar","defaultValue","onValueChange","setValue","setIndex","setValueRange","newRange","newIndex","DateCalendar","newValue","slots","slotProps","ActionHeader","titleVariant","titleColor","borderBottom","TabCardContext","TabCardContextProvider","StyledTabs","TabIndicatorProps","minHeight","maxWidth","StyledTab","fontWeightRegular","paddingBottom","Placeholder","iconSize","textAlign","pt","SkeletonCard","animation","Skeleton","my","SkeletonGrid","Grid","container","chainPropTypes","propType1","propType2","process","env","NODE_ENV","args","module","exports","b","Symbol","for","c","d","f","g","h","k","l","m","n","q","r","t","v","x","y","z","u","$$typeof","A","reactIs_production_min","AsyncMode","ConcurrentMode","ContextProvider","Element","ForwardRef","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","require$$0","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","object","$$typeofType","ContextConsumer","Lazy","hasWarnedAboutDeprecatedIsAsyncMode","reactIs_development","console","isPortal","getOwnPropertySymbols","Object","hasOwnProperty","prototype","propIsEnumerable","propertyIsEnumerable","objectAssign","assign","test1","String","getOwnPropertyNames","test2","fromCharCode","test3","split","letter","keys","err","shouldUseNative","source","from","symbols","val","TypeError","toObject","s","arguments","call","ReactPropTypesSecret_1","has","Function","bind","ReactIs","propTypesModule","require$$1","ReactPropTypesSecret","require$$2","require$$3","checkPropTypes","printWarning","loggedTypeFailures","typeSpecs","values","componentName","getStack","typeSpecName","name","ex","stack","resetWarningCache","checkPropTypes_1","require$$4","emptyFunctionThatReturnsNull","factoryWithTypeCheckers","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","iterator","FAUX_ITERATOR_SYMBOL","ANONYMOUS","ReactPropTypes","array","createPrimitiveTypeChecker","bigint","bool","func","number","string","symbol","any","createChainableTypeChecker","arrayOf","typeChecker","propName","propFullName","PropTypeError","propValue","getPropType","element","elementType","instanceOf","expectedClass","expectedClassName","constructor","node","isNode","objectOf","propType","oneOf","expectedValues","is","valuesString","JSON","stringify","getPreciseType","oneOfType","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","push","expectedType","shape","shapeTypes","invalidValidatorError","exact","allKeys","validate","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","isRequired","secret","cacheKey","chainedCheckType","every","iteratorFn","maybeIterable","getIteratorFn","step","entries","next","done","entry","RegExp","isSymbol","Date","PropTypes","emptyFunction","emptyFunctionWithReset","factoryWithThrowingShims","shim","getShim","acceptingRef","safePropName","window","warningHint","Boolean","isReactComponent","isClassComponent","SuspenseList","isSuspenseList","getModuleId","REACT_MODULE_REFERENCE","REACT_SERVER_CONTEXT_TYPE","REACT_OFFSCREEN_TYPE","hasWarnedAboutDeprecatedIsConcurrentMode","Math","self","visuallyHidden","border","clip","overflow","isInteger","Number","isFinite","floor","requiredInteger","valueType","isNaN","getTypeByValue","RangeError","validator","validatorNoop","EnhancedTableHead","order","orderBy","headCells","onRequestSort","TableHead","TableRow","headCell","TableCell","sortDirection","sort","TableSortLabel","active","direction","property","descendingComparator","EnhancedTable","search","columns","defaultSort","defaultOrder","searchFilter","setSearchFilter","setOrder","setOrderBy","filteredData","slice","filter","col","toLowerCase","includes","getFilter","getComparator","paddingX","startAdornment","Search","TableContainer","Table","TableBody","colSpan","defaultProps","ValueEditButtons","onClickCancel","onClickSubmit","ClearIcon","paddingRight","CheckIcon","useEditableValueDisplay","onEdit","isEditing","setIsEditing","editValue","setEditValue","cancelEdit","startEdit","submitEdit","ValueEditButton","EditIcon","DefaultPlaceholder","getValueContentLabelId","replace","ValueContent","hideLabel","tooltip","tooltipEnterDelay","placement","enterDelay","ValueText","valueProp","editable","editInputRef","editKeyPressListener","addEventListener","removeEventListener","inputRef","marginY","noWrap","ValueBoolean","iconSx","h6","h5","Switch","checked","ValueDatetime","fmt","editInputType","EditPickerComponent","DateTimePicker","TimePicker","DatePicker","textField","params","GroupValueCard","centered","rowSpacing","valueItemClasses","ValueItem","bordered","borderLeft","borderStyle","noBorder","style","resolveBorderStyle","DefaultErrorIcon","ReportProblemIcon","HeaderLayout","headerElement","contentElement","NotificationCenterProviderUndefinedError","NotificationCenterContext","useNotificationCenter","useNotifyWhenValueChanges","notification","prevRef","show","singleDetailValueFactory","field","instance","ObjectArrayGroup","description","headerName","column","rows","DataGrid","density","disableRowSelectionOnClick","pageSizeOptions","pagination","paginationModel","pageSize","ObjectDetailGroup","ObjectDetails","model","fields","InitialStateZeroValue","boolean","enum","multienum","date","time","datetime","group","getFieldValueOrZero","newInstanceFromValuesOrZeroValue","obj","groupField","ModelFormField","path","update","onChangeValue","handleCheckboxChange","preventDefault","handleSelectChange","handleMultiSelectChange","handleInputChange","parseInt","handleDateChange","updatable","required","fieldInput","FormControlLabel","control","Checkbox","Select","labelId","fieldValue","MenuItem","renderValue","multiple","DesktopDatePicker","_isPlaceholder","_curry1","fn","f1","apply","_curry2","f2","_b","_a","_curry3","f3","_c","_isArray","_isInteger","isNil","assocPath","idx","nextObj","_has","arr","concat","result","_assoc","ModelForm","saveButtonText","onSubmit","initialValues","valuesInitialState","useMemo","setValues","setKeyValue","useNavigateWhenValueChanges","navigate","useNavigate","UpdateScreen","modelName","basePath","submitUpdateItemRequest","updateItemRequest","updateItem","onSubmitUpdateItem","onRequestUpdateItem","useParams","TableList","columnsProp","numeric","anchorMenuEl","setAnchorMenuEl","row","j","scope","event","stopPropagation","anchor","MoreVertIcon","Menu","transformOrigin","ListScreen","listData","listRequest","deleteRequest","deleteFeature","updateFeature","addFeature","detailsFeature","onRequestList","onClickDeleteItem","handleClickListItem","handleClickListOption","optionId","listable","AddScreen","onSubmitNewItem","newItemRequest","DetailsScreen","onRequestItem","itemRequest","detailsItem","descriptionVariant","buttonText","helperTextVariant","confirmable","confirmTitle","confirmDescription","onAction","DialogContentText","loadingOrFetching","MuiAutocomplete","renderInput","isPopoverOpened","setIsPopoverOpened","toUpperCase","EventIcon","flexShrink","drawerClasses","paper","MuiDrawer","ChevronLeftIcon","Divider","rootSx","MuiAppBar","Toolbar","edge","MenuIcon","nav","drawerProviderProps","childrenProps","appBar","newOrder","submitText","idle","defaultSelectedItem","colBreakpoint","onSelectedItemChange","selectedItem","setSelectedItem","overflowY","contentEl","handleSelectItem","primaryTypographyProps","background","count","units","loremIpsum","Routes","Route","autoHideDuration","setNotification","setOpen","hide","Snackbar","fetchingProp","loadingProp","StyledFormControl","MuiSelect","onSubmitSignIn","emailError","setEmailError","passwordError","setPasswordError","marginBottom","email","get","password","Stack","autoComplete","autoFocus","inputProps","initialTab","onChangeTab","iconPosition","disableRipple","isTab","hidden","gap","maxRating","Rating","readOnly","max","random"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/markdown/markdown.tsx","../../src/board/board.tsx","../../src/expandable-alert/expandable-alert.tsx","../../src/content/content.tsx","../../src/center-container/center-container.tsx","../../src/utils/arrays.ts","../../src/utils/theme.ts","../../src/utils/breakpoints.ts","../../src/utils/forms.ts","../../src/list-panel/list-panel.context.tsx","../../src/bullet/bullet.tsx","../../src/label/label.tsx","../../src/link/link.tsx","../../src/tab-provider/tab-provider.context.ts","../../src/tab-provider/tab-provider.provider.tsx","../../src/header/header-title.tsx","../../src/header/header.tsx","../../src/bootstrap-dialog/bootstrap-dialog.tsx","../../src/confirm-dialog/confirm-dialog.tsx","../../src/dialog/use-dialog.ts","../../src/drawer-provider/drawer-context.ts","../../src/drawer-provider/drawer-mixins.ts","../../src/drawer/drawer.tsx","../../src/drawer-provider/drawer.provider.tsx","../../src/drawer-subheader/drawer-subheader.tsx","../../src/drawer/drawer.types.ts","../../src/drawer-item/drawer-item-link.tsx","../../src/drawer-item/drawer-item.tsx","../../src/drawer-item/drawer-menu-item.tsx","../../src/drawer-section/drawer-section.tsx","../../src/drawer-app-bar/drawer-app-bar.tsx","../../src/drawer-main/drawer-main.tsx","../../src/loading-area/loading-area.tsx","../../src/select/select.tsx","../../node_modules/@mui/utils/esm/useId/useId.js","../../src/text-field/text-field.tsx","../../src/date-range-calendar/date-range-calendar.tsx","../../src/action/action-header.tsx","../../src/tab-card/tab-card.context.tsx","../../src/tab-card/tab-card.tsx","../../src/placeholder/placeholder.tsx","../../src/skeleton-card/skeleton-card.tsx","../../src/skeleton-grid/skeleton-grid.tsx","../../node_modules/@mui/utils/esm/chainPropTypes/chainPropTypes.js","../../node_modules/prop-types/node_modules/react-is/index.js","../../node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js","../../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js","../../node_modules/object-assign/index.js","../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../node_modules/prop-types/lib/has.js","../../node_modules/prop-types/index.js","../../node_modules/prop-types/factoryWithTypeCheckers.js","../../node_modules/prop-types/checkPropTypes.js","../../node_modules/prop-types/factoryWithThrowingShims.js","../../node_modules/@mui/utils/esm/elementAcceptingRef.js","../../node_modules/@mui/utils/esm/elementTypeAcceptingRef.js","../../node_modules/react-is/index.js","../../node_modules/react-is/cjs/react-is.production.min.js","../../node_modules/react-is/cjs/react-is.development.js","../../node_modules/@mui/utils/esm/ponyfillGlobal/ponyfillGlobal.js","../../node_modules/@mui/utils/esm/refType.js","../../node_modules/@mui/utils/esm/visuallyHidden.js","../../node_modules/@mui/utils/esm/integerPropType.js","../../src/enhanced-table/enhanced-table-head.tsx","../../src/enhanced-table/enhanced-table.tsx","../../src/value-base/value-edit.tsx","../../src/value-base/value-displays.types.ts","../../src/value-content/value-content.tsx","../../src/value-text/value-text.tsx","../../src/value-boolean/value-boolean.tsx","../../src/value-datetime/value-datetime.tsx","../../src/group-value-card/group-value-card.tsx","../../src/value-item/value-item.tsx","../../src/header-layout/header-layout.tsx","../../src/notification-center/notification-center.context.ts","../../src/notification-center/notification-center.hooks.ts","../../src/object-details/object-details.tsx","../../src/generators/generators.model.ts","../../src/model-form/model-form-field.tsx","../../node_modules/ramda/es/internal/_isPlaceholder.js","../../node_modules/ramda/es/internal/_curry1.js","../../node_modules/ramda/es/internal/_curry2.js","../../node_modules/ramda/es/internal/_curry3.js","../../node_modules/ramda/es/internal/_isArray.js","../../node_modules/ramda/es/internal/_isInteger.js","../../node_modules/ramda/es/isNil.js","../../node_modules/ramda/es/assocPath.js","../../node_modules/ramda/es/internal/_has.js","../../node_modules/ramda/es/internal/_assoc.js","../../src/model-form/model-form.tsx","../../src/hooks/routing/routing.hooks.ts","../../src/model-router/screens/update-screen.tsx","../../src/table-list/table-list.tsx","../../src/model-router/screens/list-screen.tsx","../../src/model-router/screens/add-screen.tsx","../../src/model-router/screens/details-screen.tsx","../../src/action/action.tsx","../../src/autocomplete/autocomplete.tsx","../../src/content-placeholder/content-placeholder.tsx","../../src/date-range-picker/date-range-picker.tsx","../../src/drawer-content/drawer-content.tsx","../../src/drawer-layout/drawer-layout.tsx","../../src/enhanced-remote-table/enhanced-remote-table.tsx","../../src/form-dialog/form-dialog.tsx","../../src/model-router/model-router.types.ts","../../src/list-panel/list-panel.tsx","../../src/lorem-ipsum-placeholder/lorem-ipsum-placeholder.tsx","../../src/model-router/model-router.tsx","../../src/notification-center/notification-center.provider.tsx","../../src/query-container/query-container.tsx","../../src/sign-in/sign-in.tsx","../../src/tab-card/tab-card-panel.tsx","../../src/tab-panel/tab-panel.tsx","../../src/value-card/value-card.tsx","../../src/value-label/value-label.tsx","../../src/value-rating/value-rating.tsx"],"sourcesContent":["import Typography from \"@mui/material/Typography\";\nimport Link from \"@mui/material/Link\";\nimport ReactMarkdown, { MarkdownToJSX } from \"markdown-to-jsx\";\n\nexport interface MarkdownProps {\n content: string;\n options?: MarkdownToJSX.Options;\n}\n\nexport const markdownDefaultOptions: MarkdownToJSX.Options = {\n overrides: {\n h1: {\n component: Typography,\n props: {\n gutterBottom: true,\n variant: \"h5\",\n },\n },\n h2: { component: Typography, props: { gutterBottom: true, variant: \"h6\" } },\n h3: {\n component: Typography,\n props: { gutterBottom: true, variant: \"subtitle1\" },\n },\n h4: {\n component: Typography,\n props: { gutterBottom: true, variant: \"caption\", paragraph: true },\n },\n p: { component: Typography, props: { paragraph: true } },\n a: { component: Link },\n li: {\n component: \"li\",\n },\n },\n};\n\nexport const Markdown = ({ content, options = markdownDefaultOptions }: MarkdownProps) => {\n return <ReactMarkdown options={options}>{content}</ReactMarkdown>;\n};\n","import Box from \"@mui/material/Box\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Paper from \"@mui/material/Paper\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport Typography from \"@mui/material/Typography\";\nimport { useTheme, SxProps, Theme } from \"@mui/material/styles\";\nimport { blueGrey } from \"@mui/material/colors\";\nimport { PropsWithChildren, ReactNode } from \"react\";\nimport { Markdown } from \"../markdown\";\nimport ContentCopyIcon from \"@mui/icons-material/ContentCopy\";\n\nexport type BoardProps = PropsWithChildren<{\n markdown?: string;\n content?: string | string[];\n spacing?: 0 | 1 | 2 | 3 | 4 | 5;\n sx?: SxProps<Theme>;\n}>;\n\nexport const Board = ({\n markdown: markdownProps,\n content: contentProp,\n spacing = 0,\n children,\n sx,\n}: BoardProps) => {\n const { spacing: themeSpacing, typography } = useTheme();\n let copyContent: string;\n let content: ReactNode;\n\n if (markdownProps) {\n copyContent = markdownProps || \"\";\n } else if (Array.isArray(contentProp)) {\n content = contentProp.map((line, i) => (\n <Typography key={i} sx={{ pb: spacing }}>\n {line}\n </Typography>\n ));\n copyContent = contentProp.join(\"\\n\");\n } else {\n content = <Typography>{contentProp}</Typography>;\n copyContent = contentProp || \"\";\n }\n\n const markdown = markdownProps && <Markdown content={markdownProps} />;\n\n return (\n <Paper\n sx={{\n position: \"relative\",\n pl: 2,\n pr: 4,\n py: 1,\n backgroundColor: blueGrey[800],\n color: \"white\",\n ...sx,\n }}\n >\n <Box display=\"flex\" flexDirection=\"row\">\n <Box width={1}>{children || markdown || content}</Box>\n <Box sx={{ position: \"absolute\", top: themeSpacing(0.5), right: themeSpacing(0.5) }}>\n {copyContent && (\n <IconButton\n aria-label=\"copy board content\"\n color=\"inherit\"\n onClick={() => navigator.clipboard.writeText(copyContent)}\n >\n <Tooltip title=\"Copy\">\n <ContentCopyIcon sx={{ fontSize: typography.pxToRem(18) }} />\n </Tooltip>\n </IconButton>\n )}\n </Box>\n </Box>\n </Paper>\n );\n};\n","import Alert, { alertClasses, AlertColor } from \"@mui/material/Alert\";\nimport Box from \"@mui/material/Box\";\nimport Collapse from \"@mui/material/Collapse\";\nimport IconButton from \"@mui/material/IconButton\";\nimport AlertTitle from \"@mui/material/AlertTitle\";\nimport { SxProps, Theme } from \"@mui/material/styles\";\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport ExpandLessIcon from \"@mui/icons-material/ExpandLess\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { forwardRef, ReactElement, useState } from \"react\";\nimport { Board } from \"../board\";\n\nexport interface ExpandableAlertProps {\n severity: AlertColor;\n iconMapping?: Partial<Record<AlertColor, React.ReactNode>>;\n title?: string;\n message: string;\n metadata?: string | string[];\n metadataComponent?: ReactElement;\n onClose: () => void;\n sx?: SxProps<Theme>;\n}\n\nconst alertSx = {\n [`& .${alertClasses.message}`]: {\n width: 1,\n },\n};\n\nexport const ExpandableAlert = forwardRef<any, ExpandableAlertProps>(\n (\n { severity, iconMapping, title, message, metadata, metadataComponent, onClose, sx = {} },\n ref,\n ) => {\n const [expanded, setExpanded] = useState(false);\n return (\n <Alert\n ref={ref}\n severity={severity}\n iconMapping={iconMapping}\n onClose={onClose}\n action={\n <Box display=\"flex\" flexDirection=\"column\">\n <IconButton color=\"inherit\" onClick={onClose}>\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n {metadata && (\n <IconButton color=\"inherit\" onClick={() => setExpanded((e) => !e)}>\n {expanded ? (\n <ExpandLessIcon fontSize=\"small\" />\n ) : (\n <ExpandMoreIcon fontSize=\"small\" />\n )}\n </IconButton>\n )}\n </Box>\n }\n sx={{ ...alertSx, ...sx }}\n >\n <Box sx={{ w: 1 }}>\n {title && <AlertTitle>{title}</AlertTitle>}\n {message}\n {metadata && (\n <Collapse in={expanded} sx={{ mt: 2 }}>\n <Board content={metadata}>{metadataComponent}</Board>\n </Collapse>\n )}\n </Box>\n </Alert>\n );\n },\n);\n","import Container from \"@mui/material/Container\";\nimport { ContentProps } from \"./content.types\";\n\nexport const Content = ({ children }: ContentProps) => {\n return (\n <Container component=\"main\" sx={{ py: 3, flexGrow: 1 }}>\n {children}\n </Container>\n );\n};\n","import { ReactNode } from \"react\";\nimport Box from \"@mui/material/Box\";\nimport { SxProps, Theme } from \"@mui/material/styles\";\n\nexport interface CenterContainerProps {\n children: ReactNode | undefined;\n centerVertical?: boolean;\n centerHorizontal?: boolean;\n sx?: SxProps<Theme>;\n}\n\nexport function CenterContainer({\n children,\n centerVertical = true,\n centerHorizontal = true,\n sx,\n}: CenterContainerProps) {\n return (\n <Box\n width={1}\n height={1}\n sx={{\n ...sx,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: centerVertical ? \"center\" : \"flex-start\",\n alignItems: centerHorizontal ? \"center\" : \"flex-start\",\n }}\n >\n {children}\n </Box>\n );\n}\n","export const newArrayWithSize = <T>(size: number, fillValue: T) => new Array(size).fill(fillValue);\n\nexport const getRandomItem = <T>(items: T[]): { index: number; item: T } => {\n const index = Math.floor(Math.random() * items.length);\n const item = items[index];\n return { index, item };\n};\n","import { Color, useTheme } from \"@mui/material\";\n\ntype KeyColor = keyof Color;\n\nexport const useGetDefaultThemeColor = ({\n lightWeight = 100,\n darkWeight = 900,\n}: { lightWeight?: KeyColor; darkWeight?: KeyColor } = {}) => {\n const { palette } = useTheme();\n return palette.mode === \"light\" ? palette.grey[lightWeight] : palette.grey[darkWeight];\n};\n","import { ResponsiveStyleValue } from \"@mui/system\";\n\ninterface Breakpoints {\n xs: number;\n sm: number;\n md: number;\n lg: number;\n xl: number;\n}\n\ninterface BreakpointsCounter extends Breakpoints {\n increment(breakpoints: Partial<Breakpoints>): ResponsiveStyleValue<boolean>;\n}\n\nexport const newBreakpointsCounter = (breakpoint = 12): BreakpointsCounter => {\n const calculateBreakpointIncrement = (\n breakpointsCounter: BreakpointsCounter,\n key: keyof Breakpoints,\n value: number,\n ): boolean => {\n const initialValue = breakpointsCounter[key];\n breakpointsCounter[key] += value;\n if (breakpointsCounter[key] > breakpoint) {\n breakpointsCounter[key] = value;\n return false;\n }\n\n if (breakpointsCounter[key] == breakpoint) {\n breakpointsCounter[key] = 0;\n }\n\n return initialValue > 0;\n };\n\n return {\n xs: 0,\n sm: 0,\n md: 0,\n lg: 0,\n xl: 0,\n increment: function ({\n xs = 0,\n sm = 0,\n md = 0,\n lg = 0,\n xl = 0,\n }): ResponsiveStyleValue<boolean> {\n const smInc = sm || xs;\n const mdInc = md || smInc;\n const lgInc = lg || mdInc;\n const xlInc = xl || lgInc;\n\n return {\n xs: calculateBreakpointIncrement(this, \"xs\", xs),\n sm: calculateBreakpointIncrement(this, \"sm\", smInc),\n md: calculateBreakpointIncrement(this, \"md\", mdInc),\n lg: calculateBreakpointIncrement(this, \"lg\", lgInc),\n xl: calculateBreakpointIncrement(this, \"xl\", xlInc),\n };\n },\n };\n};\n","import { FormEvent } from \"react\";\n\nexport const getFormData = <T>(e: FormEvent<HTMLFormElement>): T => {\n const data = new FormData(e.currentTarget);\n const rawData: Record<string, any> = {};\n\n data.forEach((value, key) => {\n rawData[key] = value;\n });\n return rawData as T;\n};\n","import { createContext, useContext } from \"react\";\n\nexport const ListPanelContext = createContext<string | undefined>(undefined);\nexport const ListPanelContextProvider = ListPanelContext.Provider;\nexport const useListPanel = () => useContext(ListPanelContext);\n","import Badge from \"@mui/material/Badge\";\nimport { SxProps, Theme } from \"@mui/material/styles\";\n\nexport type BulletVariant = \"primary\" | \"secondary\" | \"default\" | \"info\" | \"warning\" | \"error\";\n\nexport const bulletClasses = {\n root: \"RdsBullet-root\",\n};\n\nexport interface BulletProps {\n /**\n * Color palette used to draw the component\n */\n variant?: BulletVariant;\n /**\n * Custom styles\n */\n sx?: SxProps<Theme>;\n}\n\n/**\n * Dot to attract the user attention\n */\nexport const Bullet = ({ variant = \"primary\", sx }: BulletProps) => {\n return (\n <Badge\n color={variant}\n variant=\"dot\"\n className={bulletClasses.root}\n role=\"bullet\"\n aria-describedby={variant}\n sx={sx}\n />\n );\n};\n","import Box from \"@mui/material/Box\";\nimport { SxProps, Theme, useTheme } from \"@mui/material/styles\";\n\nexport type LabelVariant =\n | \"primary\"\n | \"secondary\"\n | \"default\"\n | \"info\"\n | \"warning\"\n | \"error\"\n | \"success\";\n\nexport const labelClasses = {\n root: \"RdsLabel-root\",\n};\n\nexport interface LabelProps {\n /**\n * Content of the component\n */\n text: string;\n /**\n * Color palette used to draw the component\n */\n variant?: LabelVariant;\n\n /**\n * Custom styles\n */\n sx?: SxProps<Theme>;\n\n /**\n * Show the text as uppercase\n */\n textTransform?: \"none\" | \"capitalize\" | \"uppercase\";\n}\n\n/**\n * Compact element to represent a text\n */\nexport const Label = ({\n text,\n variant = \"default\",\n textTransform = \"capitalize\",\n sx,\n}: LabelProps) => {\n const { palette, typography } = useTheme();\n\n const backgroundColor: Record<LabelVariant, string> = {\n default: palette.mode === \"light\" ? palette.grey[100] : palette.grey[900],\n primary: palette.primary.light,\n secondary: palette.secondary.light,\n info: palette.info.light,\n warning: palette.warning.light,\n error: palette.error.light,\n success: palette.success.light,\n };\n\n const textColor: Record<LabelVariant, string> = {\n default: palette.getContrastText(backgroundColor.default),\n primary: palette.primary.contrastText,\n secondary: palette.secondary.contrastText,\n info: palette.info.contrastText,\n warning: palette.warning.contrastText,\n error: palette.error.contrastText,\n success: palette.success.contrastText,\n };\n\n return (\n <Box\n height={24}\n minWidth={22}\n display=\"inline-flex\"\n justifyContent=\"center\"\n alignItems=\"center\"\n bgcolor={backgroundColor[variant]}\n color={textColor[variant]}\n fontSize={typography.caption.fontSize}\n fontWeight={typography.fontWeightBold}\n lineHeight={0}\n textTransform={textTransform}\n whiteSpace=\"nowrap\"\n borderRadius={2}\n role=\"label\"\n aria-label={`${text} ${variant} label`}\n py={0}\n px={1}\n sx={{ cursor: \"default\", ...sx }}\n >\n {text}\n </Box>\n );\n};\n","import { Link as RouterLink, LinkProps as RouterLinkProps } from \"react-router-dom\";\nimport { forwardRef } from \"react\";\nimport MuiLink, { LinkProps } from \"@mui/material/Link\";\n\n/* eslint-disable react/display-name, @typescript-eslint/no-explicit-any */\nexport const LinkBehaviour = forwardRef<\n any,\n Omit<RouterLinkProps, \"to\"> & { href: RouterLinkProps[\"to\"] }\n>((props, ref) => {\n const { href, ...other } = props;\n return <RouterLink ref={ref} to={href} {...other} />;\n});\n\nexport const Link = forwardRef<any, LinkProps>((props, _1) => {\n return <MuiLink {...(props as any)} component={LinkBehaviour} />;\n});\n","import { createContext, Dispatch, SetStateAction, useContext } from \"react\";\n\nexport const TabContext = createContext<[number, Dispatch<SetStateAction<number>>]>([\n 0,\n () => null,\n]);\nexport const TabContextProvider = TabContext.Provider;\nexport const useTab = () => useContext(TabContext);\n","import { PropsWithChildren, useState } from \"react\";\nimport { TabContextProvider } from \"./tab-provider.context\";\n\ntype TabProviderProps = PropsWithChildren<{\n initialValue?: number;\n}>;\n\nexport const TabProvider = ({ children, initialValue = 0 }: TabProviderProps) => {\n const tabState = useState(initialValue);\n\n return <TabContextProvider value={tabState}>{children}</TabContextProvider>;\n};\n","import CircularProgress from \"@mui/material/CircularProgress\";\nimport Typography from \"@mui/material/Typography\";\nimport { useTheme } from \"@mui/material/styles\";\nimport { PropsWithChildren } from \"react\";\n\nexport type HeaderTitleProps = PropsWithChildren<{ loading?: boolean }>;\n\nexport const HeaderTitle = ({ loading, children }: HeaderTitleProps) => {\n const { typography } = useTheme();\n\n if (loading) {\n return (\n <CircularProgress color=\"inherit\" size={typography.h4.fontSize} aria-label=\"title loading\" />\n );\n }\n\n if (typeof children === \"string\") {\n return (\n <Typography variant=\"h4\" role=\"heading\" aria-level={1}>\n {children}\n </Typography>\n );\n }\n\n return <>{children}</>;\n};\n\nexport type HeaderSubtitleProps = PropsWithChildren<{ loading?: boolean }>;\n\nexport const HeaderSubtitle = ({ loading, children }: HeaderSubtitleProps) => {\n const { typography } = useTheme();\n\n if (loading) {\n return (\n <CircularProgress\n color=\"inherit\"\n size={typography.body1.fontSize}\n aria-label=\"subtitle loading\"\n />\n );\n }\n\n if (typeof children === \"string\") {\n return (\n <Typography variant=\"body1\" role=\"heading\" aria-level={2}>\n {children}\n </Typography>\n );\n }\n\n return <>{children}</>;\n};\n","import { useTheme } from \"@mui/material/styles\";\nimport Breadcrumbs from \"@mui/material/Breadcrumbs\";\nimport Container from \"@mui/material/Container\";\nimport Box from \"@mui/material/Box\";\nimport Tabs from \"@mui/material/Tabs\";\nimport Tab from \"@mui/material/Tab\";\nimport Button from \"@mui/material/Button\";\nimport { Link } from \"../link\";\nimport { useGetDefaultThemeColor } from \"../utils\";\nimport { HeaderComponent, HeaderPreset, HeaderProps } from \"./header.types\";\nimport { useTab } from \"../tab-provider\";\nimport { useLocation } from \"react-router-dom\";\nimport { HeaderSubtitle, HeaderTitle } from \"./header-title\";\n\n/**\n * Section used to explain give basic information about the page\n * and put the main actions\n */\nexport const Header: HeaderComponent = ({\n title = \"\",\n loadingTitle,\n subtitle,\n loadingSubtitle,\n preset = \"default\",\n actionsVariant = \"outlined\",\n breadcrumbs,\n actions,\n tabs,\n tabsMode = \"panel\",\n navigationButton,\n}: HeaderProps) => {\n const location = useLocation();\n const { palette } = useTheme();\n const defaultColor = useGetDefaultThemeColor();\n const [selectedTab, setSelectedTab] = useTab();\n\n const bgColorPresets: Record<HeaderPreset, string> = {\n default: defaultColor,\n primary: palette.primary.main,\n secondary: palette.secondary.main,\n inherit: \"inherit\",\n transparent: \"transparent\",\n };\n const bgColor = bgColorPresets[preset];\n const textColorPresets: Record<HeaderPreset, string> = {\n default: palette.getContrastText(bgColorPresets.default),\n primary: palette.primary.contrastText,\n secondary: palette.secondary.contrastText,\n inherit: \"inherit\",\n transparent: palette.text.primary,\n };\n const textColor = textColorPresets[preset];\n\n const modedSelectedTab =\n tabsMode === \"panel\" ? selectedTab : tabs?.findIndex((tab) => tab.href === location.pathname);\n\n return (\n <Box bgcolor={bgColor} color={textColor}>\n <Container>\n <Box sx={{ py: 3, display: \"flex\", flexDirection: \"row\", justifyContent: \"space-between\" }}>\n <Box>\n {navigationButton && (\n <Button\n href={navigationButton.href}\n size=\"small\"\n color=\"inherit\"\n LinkComponent={Link}\n startIcon={navigationButton.icon}\n sx={{ mb: 1 }}\n >\n {navigationButton.text}\n </Button>\n )}\n {breadcrumbs?.length && (\n <Breadcrumbs\n color=\"inherit\"\n separator=\"›\"\n aria-label=\"breadcrumb\"\n sx={{ marginTop: 1 }}\n >\n {breadcrumbs.map(({ id, link, text }) => (\n <Link\n key={id}\n underline=\"hover\"\n color=\"inherit\"\n href={link}\n variant=\"body2\"\n role=\"link\"\n >\n {text}\n </Link>\n ))}\n </Breadcrumbs>\n )}\n <HeaderTitle loading={loadingTitle}>{title}</HeaderTitle>\n {(subtitle || loadingSubtitle) && (\n <HeaderSubtitle loading={loadingSubtitle}>{subtitle}</HeaderSubtitle>\n )}\n </Box>\n {actions && (\n <Box>\n {actions.map(({ disabled, id, href, onClick, text }, i) => (\n <Button\n component={href ? Link : \"button\"}\n role=\"button\"\n color=\"inherit\"\n disabled={disabled}\n key={id}\n variant={actionsVariant}\n size=\"small\"\n href={href}\n onClick={onClick}\n sx={{ mr: i != actions.length - 1 ? 1 : 0 }}\n >\n {text}\n </Button>\n ))}\n </Box>\n )}\n </Box>\n {tabs && (\n <Tabs\n value={modedSelectedTab}\n textColor=\"inherit\"\n onChange={tabsMode === \"panel\" ? (_, index) => setSelectedTab(index) : undefined}\n >\n {tabs.map(({ id, label, disabled, href }) => {\n const tabProps = { label, disabled };\n if (tabsMode === \"panel\") {\n return <Tab key={id} {...tabProps} />;\n } else {\n return <Tab key={id} {...tabProps} component={Link} href={href} />;\n }\n })}\n </Tabs>\n )}\n </Container>\n </Box>\n );\n};\n","import Dialog from \"@mui/material/Dialog\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport IconButton from \"@mui/material/IconButton\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport Box from \"@mui/material/Box\";\nimport Button from \"@mui/material/Button\";\nimport LoadingButton from \"@mui/lab/LoadingButton\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { BootstrapDialogDialogProps } from \"../dialog/dialog.types\";\n\nexport const BootstrapDialog = ({\n open,\n title,\n component,\n componentProps = {},\n disabled,\n disableAccept,\n disableCancel,\n actions = [],\n children,\n loading,\n cancelable,\n callCloseWhenCancel = true,\n acceptable,\n acceptText = \"Accept\",\n cancelText = \"Cancel\",\n onAccept,\n onCancel = () => null,\n onClose,\n acceptType = \"button\",\n}: BootstrapDialogDialogProps) => {\n const hasActions = actions.length > 0 || acceptable || cancelable;\n\n return (\n <Dialog open={open} onClose={onClose}>\n <DialogTitle sx={{ display: \"flex\", alignItems: \"center\" }}>\n {title}\n {loading && !acceptable && (\n <CircularProgress size={20} sx={{ ml: 2, color: (theme) => theme.palette.grey[500] }} />\n )}\n <IconButton\n disabled={disabled}\n aria-label=\"close\"\n onClick={onClose}\n sx={{\n position: \"absolute\",\n right: 8,\n top: 8,\n color: (theme) => theme.palette.grey[500],\n }}\n >\n <CloseIcon />\n </IconButton>\n </DialogTitle>\n <Box component={component} {...componentProps}>\n <DialogContent dividers>{children}</DialogContent>\n {hasActions && (\n <DialogActions>\n {actions.map(({ id, text, type = \"button\", onClick, color = \"primary\" }) => (\n <Button key={id} type={type} disabled={disabled} onClick={onClick} color={color}>\n {text}\n </Button>\n ))}\n {cancelable && (\n <Button\n color=\"error\"\n disabled={disabled || disableCancel}\n onClick={() => {\n onCancel();\n callCloseWhenCancel && onClose();\n }}\n >\n {cancelText}\n </Button>\n )}\n\n {acceptable && (\n <LoadingButton\n type={acceptType}\n loading={loading}\n disabled={disabled || disableAccept}\n onClick={onAccept}\n >\n {acceptText}\n </LoadingButton>\n )}\n </DialogActions>\n )}\n </Box>\n </Dialog>\n );\n};\n","import { useState } from \"react\";\nimport { BootstrapDialog } from \"../bootstrap-dialog\";\nimport { BootstrapDialogDialogProps } from \"../dialog/dialog.types\";\nimport TextField from \"@mui/material/TextField\";\n\ntype OmitBaseDialogProps =\n | \"cancelable\"\n | \"acceptable\"\n | \"onAccept\"\n | \"onCancel\"\n | \"onClose\"\n | \"actions\"\n | \"callCloseWhenCancel\"\n | \"component\"\n | \"acceptType\";\nexport interface ConfirmDialogProps extends Omit<BootstrapDialogDialogProps, OmitBaseDialogProps> {\n confirmText?: string;\n canceText?: string;\n passphrase?: string;\n onCancel: () => void;\n onConfirm: () => void;\n}\n\nexport const ConfirmDialog = ({\n open,\n title,\n loading,\n disabled,\n confirmText = \"Confirm\",\n cancelText = \"Cancel\",\n passphrase,\n children,\n onConfirm,\n onCancel,\n}: ConfirmDialogProps) => {\n const [inputPassphrase, setInputPassphrase] = useState(\"\");\n const validPassphrase = !passphrase || inputPassphrase === passphrase;\n\n return (\n <BootstrapDialog\n title={title}\n loading={loading}\n disabled={loading || disabled}\n disableAccept={!validPassphrase}\n open={open}\n onClose={onCancel}\n acceptable\n cancelable\n callCloseWhenCancel={false}\n acceptText={confirmText}\n cancelText={cancelText}\n onCancel={onCancel}\n onAccept={onConfirm}\n >\n {children}\n {passphrase && (\n <TextField\n size=\"small\"\n fullWidth\n value={inputPassphrase}\n onChange={(e) => setInputPassphrase(e.target.value)}\n placeholder={passphrase}\n />\n )}\n </BootstrapDialog>\n );\n};\n","import { useState } from \"react\";\n\nexport const useDialog = (intialOpen = false) => {\n const [isOpen, setIsOpen] = useState(intialOpen);\n\n const open = () => setIsOpen(true);\n const close = () => setIsOpen(false);\n\n return { isOpen, open, close, setIsOpen };\n};\n","import { useContext, createContext } from \"react\";\nimport { DrawerState, DrawerVariant } from \"../drawer\";\n\nexport interface DrawerContextProps {\n selectedItemId?: string;\n state: DrawerState;\n variant: DrawerVariant;\n drawerWidth: number;\n underAppBar: boolean;\n switchState(): void;\n close(): void;\n collapse(): void;\n open(): void;\n setState: (state: DrawerState) => void;\n}\n\nexport const DrawerContext = createContext<DrawerContextProps | undefined>(undefined);\nexport const UndefinedProvider = new Error(\"DrawerContext.Provider is required and was undefined\");\n\nexport const useDrawer = () => {\n const context = useContext(DrawerContext);\n\n if (context === undefined) {\n throw UndefinedProvider;\n }\n\n return context;\n};\n","import { Theme, CSSObject } from \"@mui/material/styles\";\n\nexport const drawerWidth = 240;\n\nexport const openedMixin = (theme: Theme): CSSObject => ({\n width: drawerWidth,\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n overflowX: \"hidden\",\n});\n\nexport const closedMixin = (theme: Theme): CSSObject => ({\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n overflowX: \"hidden\",\n width: `calc(${theme.spacing(7)} + 1px)`,\n [theme.breakpoints.up(\"sm\")]: {\n width: `calc(${theme.spacing(8)} + 1px)`,\n },\n});\n","import { SxProps, Theme, styled, useTheme } from \"@mui/material/styles\";\nimport MuiDrawer, { drawerClasses } from \"@mui/material/Drawer\";\nimport { paperClasses } from \"@mui/material/Paper\";\nimport Divider from \"@mui/material/Divider\";\nimport IconButton from \"@mui/material/IconButton\";\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\nimport { DrawerComponent, DrawerProps, DrawerState, DrawerVariant } from \"./drawer.types\";\nimport { useDrawer } from \"../drawer-provider/drawer-context\";\nimport { closedMixin, openedMixin } from \"../drawer-provider/drawer-mixins\";\n\nexport const DrawerHeader = styled(\"div\")(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n padding: theme.spacing(0, 1),\n ...theme.mixins.toolbar,\n}));\n\nconst showCloseButton: Record<DrawerVariant, boolean> = {\n temporary: true,\n mini: true,\n persistent: true,\n clipped: false,\n};\n\nconst muiDrawerVariant: Record<DrawerVariant, \"permanent\" | \"persistent\" | \"temporary\"> = {\n temporary: \"temporary\",\n mini: \"permanent\",\n clipped: \"permanent\",\n persistent: \"persistent\",\n};\n\ntype SxGenerator = (state: DrawerState, theme: Theme) => SxProps<Theme>;\nconst NoopSxGenerator = () => ({});\nconst variantsSx: Readonly<Record<DrawerVariant, SxGenerator>> = {\n mini: (state: DrawerState, theme: Theme) => ({\n boxSizing: \"border-box\",\n [`& .${paperClasses.root}`]: {\n zIndex: theme.zIndex.drawer - 1,\n },\n }),\n temporary: NoopSxGenerator,\n clipped: NoopSxGenerator,\n persistent: NoopSxGenerator,\n};\n\nexport const Drawer: DrawerComponent = ({ children, ...rest }: DrawerProps) => {\n const theme = useTheme();\n const { state, switchState, underAppBar, close, drawerWidth, variant } = useDrawer();\n\n const sx: any = {\n width: drawerWidth,\n flexShrink: 0,\n whiteSpace: \"nowrap\",\n ...(state === \"open\" && {\n ...openedMixin(theme),\n [`& .${drawerClasses.paper}`]: openedMixin(theme),\n }),\n ...(state !== \"open\" && {\n ...closedMixin(theme),\n [`& .${drawerClasses.paper}`]: closedMixin(theme),\n }),\n ...variantsSx[variant](state, theme),\n };\n\n return (\n <MuiDrawer\n open={state === \"open\"}\n variant={muiDrawerVariant[variant]}\n role=\"menu\"\n aria-hidden={state === \"close\"}\n onClose={close}\n sx={sx}\n {...rest}\n >\n <DrawerHeader>\n {!underAppBar && showCloseButton[variant] && (\n <IconButton onClick={switchState}>\n <ChevronLeftIcon />\n </IconButton>\n )}\n </DrawerHeader>\n <Divider />\n {children}\n </MuiDrawer>\n );\n};\n","import { useState } from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { DrawerContext } from \"./drawer-context\";\nimport { DrawerState, DrawerVariant } from \"../drawer\";\nimport { drawerWidth } from \"./drawer-mixins\";\n\nconst initialState: Record<DrawerVariant, DrawerState> = {\n temporary: \"close\",\n mini: \"collapse\",\n clipped: \"open\",\n persistent: \"close\",\n};\n\nconst targetStates: Record<DrawerVariant, [DrawerState, DrawerState]> = {\n temporary: [\"close\", \"open\"],\n mini: [\"collapse\", \"open\"],\n clipped: [\"open\", \"open\"],\n persistent: [\"close\", \"open\"],\n};\n\nexport type DrawerProviderProps = PropsWithChildren<{\n initialState?: DrawerState;\n underAppBar?: boolean;\n drawerWidth?: number;\n variant?: DrawerVariant;\n selectedItemId?: string;\n onStateChange?: (newState: DrawerState) => void;\n}>;\n\nexport const DrawerProvider = ({\n children,\n initialState: initialStateProp,\n variant = \"temporary\",\n drawerWidth: drawerWidthProp = drawerWidth,\n underAppBar = false,\n selectedItemId,\n onStateChange = () => null,\n}: DrawerProviderProps) => {\n const [state, setState] = useState<DrawerState>(initialStateProp || initialState[variant]);\n\n const handleChangeState = (newState: DrawerState) => {\n onStateChange(newState);\n setState(newState);\n };\n\n return (\n <DrawerContext.Provider\n value={{\n state,\n variant,\n selectedItemId,\n underAppBar,\n drawerWidth: drawerWidthProp,\n switchState: () => handleChangeState(targetStates[variant][state === \"open\" ? 0 : 1]),\n collapse: () => handleChangeState(\"collapse\"),\n close: () => handleChangeState(\"close\"),\n open: () => handleChangeState(\"open\"),\n setState,\n }}\n >\n {children}\n </DrawerContext.Provider>\n );\n};\n","import ListSubheader, { ListSubheaderProps } from \"@mui/material/ListSubheader\";\nimport { styled } from \"@mui/material/styles\";\nimport { DrawerSize } from \"../drawer\";\n\nexport interface DrawerSubheaderProps extends ListSubheaderProps {\n /**\n * Item size. default to medium\n */\n size?: DrawerSize;\n}\n\nexport const DrawerSubheader = styled(ListSubheader, {\n shouldForwardProp: (prop) => prop !== \"size\",\n})<DrawerSubheaderProps>(({ size, theme }) => ({\n lineHeight: size === \"small\" ? theme.typography.pxToRem(40) : undefined,\n}));\n","import { FunctionComponent, ReactElement } from \"react\";\nimport { BulletVariant } from \"../bullet\";\nimport { LabelVariant } from \"../label\";\nimport { DrawerProps as MuiDrawerProps } from \"@mui/material/Drawer\";\nimport { Theme } from \"@mui/material/styles\";\nimport { DrawerAppBarProps } from \"../drawer-app-bar\";\n\nexport type DrawerVariant = \"temporary\" | \"mini\" | \"persistent\" | \"clipped\";\nexport type DrawerState = \"open\" | \"collapse\" | \"close\";\nexport type DrawerSize = \"small\" | \"medium\";\n\nexport interface DrawerItemAvatar {\n src: string;\n alt: string;\n}\n\nexport interface DrawerItemLabel {\n text: string;\n variant: LabelVariant;\n}\n\nexport interface DrawerItemBullet {\n variant: BulletVariant;\n}\n\nexport interface DrawerNavigationItemLink {\n id: string;\n text: string;\n href: string;\n icon?: ReactElement;\n avatar?: DrawerItemAvatar;\n label?: DrawerItemLabel;\n bullet?: DrawerItemBullet;\n}\n\nexport type DrawerNavigationItemCollapsable = Pick<\n DrawerNavigationItemLink,\n \"id\" | \"text\" | \"icon\"\n> & {\n items: DrawerNavigationItem[];\n};\n\nexport type DrawerNavigationItem = DrawerNavigationItemLink | DrawerNavigationItemCollapsable;\n\nexport interface DrawerNavigationSection {\n title?: string;\n items: DrawerNavigationItem[];\n}\n\nexport interface DrawerNavigation {\n items: DrawerNavigationSection[];\n}\n\nexport interface DrawerContentProps {\n /**\n * Object with the content that has to be rendered\n */\n nav: DrawerNavigation;\n /**\n * Item size. default to medium\n */\n size?: DrawerSize;\n}\n\nexport type DrawerContentComponent = FunctionComponent<DrawerContentProps>;\nexport type DrawerContentElement = ReactElement<DrawerContentProps, DrawerContentComponent>;\n\nexport interface DrawerProps extends MuiDrawerProps {\n children: DrawerContentElement;\n}\n\nexport type DrawerComponent = FunctionComponent<DrawerProps>;\nexport type DrawerElement = ReactElement<DrawerProps, DrawerComponent>;\n\nexport const getDrawerItemColors = (theme: Theme, selected: boolean | undefined) => ({\n color: selected ? theme.palette.primary.main : undefined,\n fontWeight: selected ? theme.typography.fontWeightBold : theme.typography.fontWeightMedium,\n});\n\nexport type DrawerAppBarComponent = FunctionComponent<DrawerAppBarProps>;\nexport type DrawerAppBarElement = ReactElement<DrawerAppBarProps, DrawerAppBarComponent>;\n","import { ReactElement } from \"react\";\nimport Avatar from \"@mui/material/Avatar\";\nimport ListItemAvatar from \"@mui/material/ListItemAvatar\";\nimport ListItemButton from \"@mui/material/ListItemButton\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport { SxProps, Theme, styled, useTheme } from \"@mui/material/styles\";\nimport { Bullet } from \"../bullet\";\nimport { Label } from \"../label\";\nimport {\n DrawerItemAvatar,\n DrawerItemBullet,\n DrawerItemLabel,\n DrawerSize,\n getDrawerItemColors,\n} from \"../drawer/drawer.types\";\nimport { Link } from \"../link\";\nimport { useDrawer } from \"../drawer-provider\";\n\nexport interface DrawerItemLinkProps {\n /**\n * Item size. default to medium\n */\n size?: DrawerSize;\n /**\n * Text displayed inside the item\n */\n text: string;\n /**\n * Url where the user is going to be redirected\n * if the item is clicked\n */\n href: string;\n /**\n * Icon displayed to the left\n */\n icon?: ReactElement;\n /**\n * Avatar displayed to the left\n */\n avatar?: DrawerItemAvatar;\n /**\n * Label with extra info displayed to the right\n */\n label?: DrawerItemLabel;\n /**\n * Bullet to attract the user attention displyed to the right\n */\n bullet?: DrawerItemBullet;\n /**\n * The item has to be marked as selected\n */\n selected?: boolean;\n /**\n * Deep level of this item inside the submenus\n */\n level: number;\n /**\n * Custom styles\n */\n sx?: SxProps<Theme>;\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nconst StyledLink = styled(Link)(({ theme }) => {\n return {\n color: theme.palette.text.primary,\n };\n});\n\nconst sxCollapsedIcon = {\n minWidth: 0,\n justifyContent: \"center\",\n marginRight: \"auto\",\n};\n\n/**\n * Clicable item inside a drawer\n */\nexport const DrawerItemLink = ({\n text,\n icon,\n avatar,\n label,\n bullet,\n href,\n selected,\n size = \"medium\",\n level,\n sx,\n}: DrawerItemLinkProps) => {\n const { state } = useDrawer();\n const theme = useTheme();\n const { color, fontWeight } = getDrawerItemColors(theme, selected);\n\n return (\n <ListItemButton\n LinkComponent={StyledLink}\n dense={size === \"small\"}\n aria-label={text}\n href={href}\n selected={selected}\n sx={{\n ...sx,\n pl: state === \"open\" ? theme.spacing(2 + 1.5 * level) : undefined,\n ...(state === \"collapse\" && {\n paddingHorizontal: theme.spacing(2.5),\n justifyContent: \"center\",\n }),\n }}\n >\n {icon && (\n <ListItemIcon sx={{ color, ...(state === \"collapse\" && level === 0 && sxCollapsedIcon) }}>\n {icon}\n </ListItemIcon>\n )}\n {avatar && (\n <ListItemAvatar\n sx={{\n ...(state === \"collapse\" && level === 0 && sxCollapsedIcon),\n }}\n >\n <Avatar\n alt={avatar.alt}\n src={avatar.src}\n sx={{\n ...(size === \"small\" && { width: 24, height: 24 }),\n ...(state === \"collapse\" && { width: 30, height: 30 }),\n }}\n />\n </ListItemAvatar>\n )}\n <ListItemText\n disableTypography\n primary={text}\n sx={{ color, fontWeight, opacity: state === \"collapse\" && level === 0 ? 0 : undefined }}\n />\n {label && state === \"open\" && (\n <Label text={label.text} variant={label.variant} sx={{ ml: 2 }} />\n )}\n {bullet && state === \"open\" && <Bullet variant={bullet.variant} sx={{ ml: 2 }} />}\n </ListItemButton>\n );\n};\n","import { DrawerMenuItem } from \"./drawer-menu-item\";\nimport { DrawerNavigationItem, DrawerSize } from \"../drawer/drawer.types\";\nimport { DrawerItemLink } from \"./drawer-item-link\";\nimport { useDrawer } from \"../drawer-provider\";\n\nexport interface DrawerItemProps {\n /**\n * Data to be rendered\n */\n item: DrawerNavigationItem;\n /**\n * Size of the item\n */\n size?: DrawerSize;\n /**\n * Deep level of this item inside the submenus\n */\n level?: number;\n}\n\nexport const DrawerItem = ({ item, size = \"medium\", level = 0 }: DrawerItemProps) => {\n const { selectedItemId } = useDrawer();\n if (\"items\" in item) {\n const { id, text, icon, items } = item;\n const childrenSelected = items.some((item) => item.id === selectedItemId);\n return (\n <DrawerMenuItem\n size={size}\n selected={id === selectedItemId || childrenSelected}\n text={text}\n icon={icon}\n items={items}\n level={level}\n />\n );\n } else {\n const { id, text, icon, avatar, label, bullet, href } = item;\n return (\n <DrawerItemLink\n selected={id === selectedItemId}\n size={size}\n text={text}\n icon={icon}\n avatar={avatar}\n label={label}\n bullet={bullet}\n href={href}\n level={level}\n />\n );\n }\n};\n","import ListItemButton from \"@mui/material/ListItemButton\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport Collapse from \"@mui/material/Collapse\";\nimport List from \"@mui/material/List\";\nimport Popover from \"@mui/material/Popover\";\nimport { SxProps, useTheme, Theme } from \"@mui/material/styles\";\nimport { ReactElement, useState, useRef } from \"react\";\nimport { DrawerNavigationItem, DrawerSize, getDrawerItemColors } from \"../drawer\";\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport ChevronRightIcon from \"@mui/icons-material/ChevronRight\";\nimport { DrawerItem } from \"./drawer-item\";\nimport { useDrawer } from \"../drawer-provider\";\n\nexport interface DrawerMenuItemProps {\n /**\n * Item size. default to medium\n */\n size?: DrawerSize;\n /**\n * Text displayed inside the item\n */\n text: string;\n /**\n * Icon displayed to the left\n */\n icon?: ReactElement;\n /**\n * The item has to be marked as selected\n */\n selected?: boolean;\n /**\n * Items that are going to be displayed inside\n * the collapsable\n */\n items: DrawerNavigationItem[];\n /**\n * Deep level of this item inside the submenus\n */\n level: number;\n /**\n * Custom styles\n */\n sx?: SxProps<Theme>;\n}\n\nexport const DrawerMenuItem = ({\n text,\n icon,\n selected,\n items,\n size = \"medium\",\n level,\n sx = {},\n}: DrawerMenuItemProps) => {\n const { state } = useDrawer();\n const anchorEl = useRef<HTMLDivElement | null>(null);\n const { palette, spacing } = useTheme();\n const [menuOpen, setMenuOpen] = useState(false);\n const { color, fontWeight } = getDrawerItemColors(useTheme(), selected);\n\n const submenu = (\n <List component=\"div\" disablePadding>\n {items.map((item) => (\n <DrawerItem key={item.id} level={level + 1} item={item} size={size} />\n ))}\n </List>\n );\n\n const collapsedButtonSx =\n state === \"collapse\" && level === 0\n ? {\n position: \"absolute\",\n right: 0,\n }\n : {};\n\n return (\n <>\n <ListItemButton\n ref={anchorEl}\n selected={selected}\n aria-label={text}\n onClick={() => setMenuOpen((o) => !o)}\n dense={size === \"small\"}\n sx={{\n ...sx,\n pl: state === \"open\" ? spacing(2 + 1.5 * level) : undefined,\n backgroundColor: menuOpen ? palette.action.hover : undefined,\n }}\n >\n {icon && <ListItemIcon sx={{ color }}>{icon}</ListItemIcon>}\n <ListItemText\n disableTypography\n primary={text}\n sx={{ color, fontWeight, opacity: state === \"collapse\" && level === 0 ? 0 : undefined }}\n />\n {menuOpen && state === \"open\" ? (\n <ExpandMoreIcon sx={[{ color, ml: 2 }, collapsedButtonSx]} />\n ) : (\n <ChevronRightIcon sx={[{ color, ml: 2 }, collapsedButtonSx]} />\n )}\n </ListItemButton>\n {state === \"open\" ? (\n <Collapse\n in={menuOpen}\n timeout=\"auto\"\n unmountOnExit\n aria-label={`${text} collapse submenu`}\n >\n {submenu}\n </Collapse>\n ) : (\n <Popover\n open={menuOpen}\n PaperProps={{\n elevation: 0,\n variant: \"outlined\",\n }}\n aria-label={`${text} popover submenu`}\n anchorEl={anchorEl.current}\n onClose={() => setMenuOpen(false)}\n anchorOrigin={{\n vertical: \"top\",\n horizontal: \"right\",\n }}\n >\n {submenu}\n </Popover>\n )}\n </>\n );\n};\n","import List from \"@mui/material/List\";\nimport { useTheme } from \"@mui/material/styles\";\nimport { DrawerNavigationItem, DrawerSize } from \"../drawer\";\nimport { DrawerSubheader } from \"../drawer-subheader\";\nimport { DrawerItem } from \"../drawer-item\";\nimport { useDrawer } from \"../drawer-provider\";\n\nexport interface DrawerSectionProps {\n /**\n * Section title\n */\n title?: string;\n /**\n * List of items of that section\n */\n items: DrawerNavigationItem[];\n /**\n * Item size. default to medium\n */\n size?: DrawerSize;\n}\n\n/**\n * Render a group of items inside the drawer\n * with an optional title\n */\nexport const DrawerSection = ({ title, items, size = \"medium\" }: DrawerSectionProps) => {\n const { state } = useDrawer();\n const { spacing } = useTheme();\n return (\n <>\n {title && state === \"open\" && (\n <DrawerSubheader size={size} role=\"heading\">\n {title}\n </DrawerSubheader>\n )}\n <List\n sx={{\n paddingTop: size === \"small\" ? spacing(0) : undefined,\n paddingY: state === \"collapse\" ? 0 : undefined,\n }}\n >\n {items.map((item) => (\n <DrawerItem key={item.id} item={item} size={size} />\n ))}\n </List>\n </>\n );\n};\n","import MuiAppBar from \"@mui/material/AppBar\";\nimport Toolbar from \"@mui/material/Toolbar\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Typography from \"@mui/material/Typography\";\nimport { useTheme, Theme } from \"@mui/material/styles\";\nimport MenuIcon from \"@mui/icons-material/Menu\";\nimport { useDrawer } from \"../drawer-provider\";\nimport { AppBarProps as MuiAppBarProps } from \"@mui/material\";\nimport { DrawerState, DrawerVariant } from \"../drawer\";\n\nconst moveWithDrawer: Record<DrawerVariant, boolean> = {\n temporary: false,\n mini: true,\n persistent: true,\n clipped: true,\n};\n\nconst showMenuButton: Record<DrawerVariant, (state: DrawerState) => boolean> = {\n temporary: () => true,\n mini: (state) => state !== \"open\",\n persistent: () => true,\n clipped: () => false,\n};\n\nexport interface DrawerAppBarProps extends MuiAppBarProps {\n title?: string;\n}\n\nexport const DrawerAppBar = ({ title, sx, children, ...rest }: DrawerAppBarProps) => {\n const theme = useTheme();\n const { state, variant, switchState, drawerWidth, underAppBar } = useDrawer();\n\n const rootSx =\n (moveWithDrawer[variant] &&\n !underAppBar && {\n transition: theme.transitions.create([\"width\", \"margin\"], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n ...(state === \"open\" && {\n marginLeft: drawerWidth,\n width: `calc(100% - ${drawerWidth}px)`,\n transition: theme.transitions.create([\"width\", \"margin\"], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n }),\n }) ||\n {};\n\n return (\n <MuiAppBar\n position={underAppBar ? \"fixed\" : undefined}\n {...rest}\n sx={{\n ...sx,\n ...rootSx,\n zIndex: (theme: Theme) => theme.zIndex.drawer + (underAppBar ? 1 : 0),\n }}\n >\n <Toolbar>\n <IconButton\n color=\"inherit\"\n aria-label=\"open drawer\"\n onClick={switchState}\n edge=\"start\"\n sx={{\n marginRight: 5,\n display: showMenuButton[variant](state) ? undefined : \"none\",\n }}\n >\n <MenuIcon />\n </IconButton>\n {title && (\n <Typography variant=\"h6\" component=\"h1\" role=\"heading\" aria-level={1} noWrap>\n {title}\n </Typography>\n )}\n {children}\n </Toolbar>\n </MuiAppBar>\n );\n};\n","import { styled, useTheme } from \"@mui/material/styles\";\nimport { PropsWithChildren } from \"react\";\nimport { DrawerHeader, useDrawer } from \"../drawer-provider\";\nimport { DrawerVariant } from \"../drawer\";\n\nconst drawerSpace: Record<DrawerVariant, boolean> = {\n temporary: false,\n mini: true,\n clipped: true,\n persistent: true,\n};\n\nconst StyledDiv = styled(\"div\")(({ theme }) => {\n const { spacing } = useTheme();\n const { drawerWidth, state, variant } = useDrawer();\n\n const marginLeft = drawerSpace[variant]\n ? state === \"open\"\n ? drawerWidth\n : state === \"collapse\"\n ? spacing(8)\n : 0\n : 0;\n\n return {\n marginLeft,\n transition: theme.transitions.create(\"margin\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n };\n});\n\nexport type DrawerMainProps = PropsWithChildren;\n\nexport const DrawerMain = ({ children }: DrawerMainProps) => (\n <StyledDiv>\n <DrawerHeader />\n {children}\n </StyledDiv>\n);\n","import CircularProgress from \"@mui/material/CircularProgress\";\nimport Box from \"@mui/material/Box\";\n\n/**\n * Displays a centered loading indicator\n */\nexport const LoadingArea = () => {\n return (\n <Box width={1} height={1} display=\"flex\" justifyContent=\"center\" alignItems=\"center\">\n <CircularProgress />\n </Box>\n );\n};\n","import { ReactNode, useId } from \"react\";\nimport { styled } from \"@mui/material/styles\";\nimport Box from \"@mui/material/Box\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport FormControl from \"@mui/material/FormControl\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport LinearProgress from \"@mui/material/LinearProgress\";\nimport MuiSelect from \"@mui/material/Select\";\nimport { CenterContainer } from \"../center-container\";\nimport { SelectInputProps } from \"@mui/material/Select/SelectInput\";\n\nexport type SelectSize = \"small\" | \"medium\";\n\nexport interface SelectProps<T> {\n label: string;\n value: T;\n loading?: boolean;\n fetching?: boolean;\n size?: SelectSize;\n color?: string;\n fullWidth?: boolean;\n children?: ReactNode;\n onChange?: SelectInputProps<T>[\"onChange\"];\n}\n\nconst ProgressSize: Record<SelectSize, number> = {\n small: 15,\n medium: 20,\n};\n\nexport const Select = <T extends ReactNode>({\n label,\n value,\n loading = false,\n fetching = false,\n size = \"medium\",\n fullWidth = false,\n color,\n children,\n onChange,\n}: SelectProps<T>) => {\n const id = useId();\n\n const renderValue = (value: T): ReactNode => {\n if (fetching) {\n return (\n <CenterContainer centerVertical centerHorizontal>\n <CircularProgress color=\"inherit\" size={ProgressSize[size]} />\n </CenterContainer>\n );\n }\n\n if (loading) {\n return (\n <Box display=\"flex\" flexDirection=\"column\">\n {value}\n <LinearProgress\n color=\"inherit\"\n sx={{ position: \"absolute\", left: 0, right: 0, bottom: 0 }}\n />\n </Box>\n );\n }\n\n return value;\n };\n\n const StyledFormControl = styled(FormControl)(() => {\n if (!color) {\n return {};\n }\n\n return {\n label: {\n color,\n },\n \".MuiOutlinedInput-notchedOutline\": {\n borderColor: `${color} !important`,\n },\n \".MuiInputBase-root\": {\n color,\n },\n \".MuiSelect-icon\": {\n fill: color,\n },\n };\n });\n\n return (\n <StyledFormControl fullWidth={fullWidth}>\n <InputLabel id={id}>{label}</InputLabel>\n <MuiSelect\n labelId={id}\n id={id}\n value={value}\n label={label}\n onChange={onChange}\n disabled={fetching}\n size={size}\n renderValue={renderValue}\n >\n {children}\n </MuiSelect>\n </StyledFormControl>\n );\n};\n","'use client';\n\nimport * as React from 'react';\nlet globalId = 0;\nfunction useGlobalId(idOverride) {\n const [defaultId, setDefaultId] = React.useState(idOverride);\n const id = idOverride || defaultId;\n React.useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`mui-${globalId}`);\n }\n }, [defaultId]);\n return id;\n}\n\n// downstream bundlers may remove unnecessary concatenation, but won't remove toString call -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseId = React['useId'.toString()];\n/**\n *\n * @example <div id={useId()} />\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride != null ? idOverride : reactId;\n }\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n return useGlobalId(idOverride);\n}","import { TextFieldProps as MuiTextFieldProps } from \"@mui/material/TextField\";\nimport CircularProgress, { circularProgressClasses } from \"@mui/material/CircularProgress\";\nimport FormControl from \"@mui/material/FormControl\";\nimport FormHelperText from \"@mui/material/FormHelperText\";\nimport { iconButtonClasses } from \"@mui/material/IconButton\";\nimport LinearProgress, { linearProgressClasses } from \"@mui/material/LinearProgress\";\nimport OutlinedInput, { outlinedInputClasses } from \"@mui/material/OutlinedInput\";\nimport InputLabel, { inputLabelClasses } from \"@mui/material/InputLabel\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport { autocompleteClasses } from \"@mui/material/Autocomplete\";\nimport useId from \"@mui/utils/useId\";\n\nexport type TextFieldProps = MuiTextFieldProps & {\n fetching?: boolean;\n loading?: boolean;\n hexColor?: string;\n};\n\nexport const TextField = ({\n id: overrideId,\n label,\n InputLabelProps,\n InputProps,\n fetching,\n loading,\n helperText,\n hexColor,\n size,\n fullWidth,\n sx,\n ...rest\n}: TextFieldProps) => {\n const id = useId(overrideId);\n const helperTextId = helperText && id ? `${id}-helper-text` : undefined;\n const inputLabelId = label && id ? `${id}-label` : undefined;\n\n const hexColorSx = hexColor\n ? {\n [`& .${outlinedInputClasses.notchedOutline}`]: {\n borderColor: `${hexColor} !important`,\n },\n [`& .${inputLabelClasses.root}`]: {\n color: hexColor,\n },\n [`& .${outlinedInputClasses.input}`]: {\n color: hexColor,\n },\n [`& .${circularProgressClasses.root}`]: {\n color: hexColor,\n },\n [`& .${linearProgressClasses.bar}`]: {\n backgroundColor: hexColor,\n },\n [`& .${autocompleteClasses.endAdornment} .${iconButtonClasses.root}`]: {\n color: hexColor,\n },\n }\n : {};\n\n return (\n <FormControl sx={hexColorSx} fullWidth={fullWidth}>\n <InputLabel\n size={size === \"small\" ? \"small\" : \"normal\"}\n id={inputLabelId}\n htmlFor={id}\n {...InputLabelProps}\n >\n {label}\n </InputLabel>\n <OutlinedInput\n {...InputProps}\n id={id}\n label={label}\n size={size}\n fullWidth={fullWidth}\n endAdornment={\n <InputAdornment position=\"end\">\n {InputProps?.endAdornment}\n {loading ? <CircularProgress color=\"inherit\" size={20} sx={{ ml: 1 }} /> : null}\n </InputAdornment>\n }\n sx={sx}\n {...(rest as any)}\n />\n {fetching && !loading && (\n <LinearProgress\n color=\"inherit\"\n sx={{ position: \"absolute\", left: 0, right: 0, bottom: 0 }}\n />\n )}\n {helperText && <FormHelperText id={helperTextId}>{helperText}</FormHelperText>}\n </FormControl>\n );\n};\n","import Box, { BoxProps } from \"@mui/material/Box\";\nimport { styled } from \"@mui/material/styles\";\nimport { DateCalendar, PickersDay, PickersDayProps } from \"@mui/x-date-pickers\";\nimport { endOfWeek, format, isAfter, isSameDay, startOfWeek } from \"date-fns\";\nimport { isBefore } from \"date-fns/esm\";\nimport { useState } from \"react\";\n\ntype DateRange = [Date, Date | undefined];\n\ninterface CustomPickerDayProps extends BoxProps {\n dayIsBetween: boolean;\n isFirstDay: boolean;\n isLastDay: boolean;\n}\n\nconst CustomPickersDayBackground = styled(Box, {\n shouldForwardProp: (prop) =>\n prop !== \"dayIsBetween\" &&\n prop !== \"isFirstDay\" &&\n prop !== \"isLastDay\" &&\n prop !== \"isStartOfWeek\" &&\n prop !== \"isEndOfWeek\",\n})<CustomPickerDayProps>(({ theme, dayIsBetween, isFirstDay, isLastDay }) => {\n return {\n ...((isFirstDay || isLastDay || dayIsBetween) && {\n borderRadius: 0,\n backgroundColor: `${theme.palette.primary.light}40`,\n margin: 0,\n }),\n ...(isFirstDay && {\n borderTopLeftRadius: \"50%\",\n borderBottomLeftRadius: \"50%\",\n }),\n ...(isLastDay && {\n borderTopRightRadius: \"50%\",\n borderBottomRightRadius: \"50%\",\n }),\n };\n}) as React.ComponentType<CustomPickerDayProps>;\n\nconst Day = (props: PickersDayProps<Date> & { dateRange?: DateRange | null }) => {\n const { day, dateRange, ...other } = props;\n\n if (dateRange == null) {\n return <PickersDay day={day} {...other} />;\n }\n\n const [start, end] = dateRange;\n\n const dayIsBetween = !!end && isAfter(day, start) && isBefore(day, end);\n const isFirstDay = isSameDay(day, start);\n const isLastDay = !!end && isSameDay(day, end);\n const isStartOfWeek = isSameDay(day, startOfWeek(day));\n const isEndOfWeek = isSameDay(day, endOfWeek(day));\n\n return (\n <CustomPickersDayBackground\n dayIsBetween={dayIsBetween}\n isFirstDay={isFirstDay || (dayIsBetween && isStartOfWeek)}\n isLastDay={isLastDay || (dayIsBetween && isEndOfWeek)}\n aria-label={format(day, \"yyyy-MM-dd\")}\n aria-selected={dayIsBetween || isFirstDay || isLastDay}\n role=\"gridcell\"\n >\n <PickersDay {...other} day={day} selected={isFirstDay || isLastDay} />\n </CustomPickersDayBackground>\n );\n};\n\nexport interface DateRangeCalendarProps {\n defaultValue: DateRange;\n onValueChange: (value: DateRange, updatedIndex: number) => void;\n}\nexport const DateRangeCalendar = ({ defaultValue, onValueChange }: DateRangeCalendarProps) => {\n const [value, setValue] = useState(defaultValue);\n const [index, setIndex] = useState(0);\n\n const setValueRange = (newRange: DateRange, index: number, newIndex: number) => {\n setValue(newRange);\n onValueChange(newRange, index);\n setIndex(newIndex);\n };\n\n const handleChange = (newValue: Date | null) => {\n if (!newValue) {\n return;\n }\n\n // If is the end date and is minor than the start date\n if (index === 1 && newValue < value[0]) {\n return setValueRange([newValue, undefined], 0, 1);\n }\n\n // If is the start date and is bigger than the end date\n if (index === 0 && value[1] && newValue > value[1]) {\n return setValueRange([newValue, undefined], 0, 1);\n }\n\n // Default case\n setValueRange(\n [index === 0 ? newValue : value[0], index === 1 ? newValue : value[1]],\n index,\n index === 0 ? 1 : 0,\n );\n };\n return (\n <DateCalendar\n value={null}\n onChange={handleChange}\n slots={{ day: Day }}\n slotProps={{\n day: {\n dateRange: value,\n } as any,\n }}\n aria-label=\"calendar range picker\"\n />\n );\n};\n","import Typography from \"@mui/material/Typography\";\nimport { useTheme } from \"@mui/material/styles\";\nimport { Variant } from \"@mui/material/styles/createTypography\";\n\ntype ActionVariant = \"primary\" | \"error\" | \"warning\" | \"success\";\n\nexport interface ActionHeaderProps {\n variant?: ActionVariant;\n title: string;\n titleVariant?: Extract<Variant, \"h4\" | \"h5\" | \"h6\">;\n}\n\nexport const ActionHeader = ({\n title,\n titleVariant = \"h4\",\n variant = \"primary\",\n}: ActionHeaderProps) => {\n const { palette } = useTheme();\n\n const titleColor: Record<ActionVariant, string | undefined> = {\n primary: undefined,\n error: \"error\",\n warning: palette.warning.main,\n success: palette.success.main,\n };\n return (\n <Typography\n color={titleColor[variant]}\n variant={titleVariant}\n pb={1}\n borderBottom={1}\n borderColor=\"grey.300\"\n >\n {title}\n </Typography>\n );\n};\n","import { createContext, Dispatch, SetStateAction } from \"react\";\n\nexport const TabCardContext = createContext<[number, Dispatch<SetStateAction<number>>]>([\n 0,\n () => null,\n]);\nexport const TabCardContextProvider = TabCardContext.Provider;\n","import { styled } from \"@mui/material/styles\";\nimport Paper from \"@mui/material/Paper\";\nimport Tabs from \"@mui/material/Tabs\";\nimport Tab from \"@mui/material/Tab\";\nimport Box from \"@mui/material/Box\";\nimport { PropsWithChildren, ReactElement, SyntheticEvent, useState } from \"react\";\nimport { TabCardContextProvider } from \"./tab-card.context\";\nimport { useGetDefaultThemeColor } from \"../utils\";\n\nexport interface TabData {\n text: string;\n icon?: ReactElement;\n}\n\ninterface StyledTabsProps {\n children?: React.ReactNode;\n value: number;\n onChange: (event: React.SyntheticEvent, newValue: number) => void;\n}\n\nconst StyledTabs = styled((props: StyledTabsProps) => (\n <Tabs {...props} TabIndicatorProps={{ children: <span className=\"MuiTabs-indicatorSpan\" /> }} />\n))(({ theme }) => ({\n minHeight: theme.spacing(5),\n \"& .MuiTabs-indicator\": {\n display: \"flex\",\n justifyContent: \"center\",\n backgroundColor: \"transparent\",\n },\n \"& .MuiTabs-indicatorSpan\": {\n maxWidth: 40,\n width: \"100%\",\n backgroundColor: theme.palette.primary.main,\n },\n}));\n\nconst StyledTab = styled(Tab)(({ theme }) => ({\n textTransform: \"none\",\n fontWeight: theme.typography.fontWeightRegular,\n marginRight: theme.spacing(1),\n color: theme.palette.text.secondary,\n paddingTop: 0,\n paddingBottom: 0,\n minHeight: theme.spacing(5),\n \"&.Mui-selected\": {\n color: theme.palette.text.secondary,\n fontWeight: theme.typography.fontWeightBold,\n },\n}));\n\nexport type TabCardProps = PropsWithChildren<{\n tabs: TabData[];\n initialTab?: number;\n onChangeTab?: (tab: TabData, index: number) => void;\n}>;\n\nexport const TabCard = ({\n children,\n tabs,\n initialTab = 0,\n onChangeTab = () => null,\n}: TabCardProps) => {\n const bgColor = useGetDefaultThemeColor();\n const [selectedTab, setSelectedTab] = useState(initialTab);\n\n const handleChangeTab = (_: SyntheticEvent<Element, Event>, index: number) => {\n setSelectedTab(index);\n onChangeTab(tabs[index], index);\n };\n\n return (\n <TabCardContextProvider value={[selectedTab, setSelectedTab]}>\n <Paper variant=\"outlined\">\n <Box bgcolor={bgColor}>\n <StyledTabs value={selectedTab} onChange={handleChangeTab}>\n {tabs.map(({ text, icon }) => (\n <StyledTab iconPosition=\"start\" disableRipple key={text} label={text} icon={icon} />\n ))}\n </StyledTabs>\n </Box>\n {children}\n </Paper>\n </TabCardContextProvider>\n );\n};\n","import { ReactElement } from \"react\";\nimport Box from \"@mui/material/Box\";\nimport Typography from \"@mui/material/Typography\";\nimport Button from \"@mui/material/Button\";\n\ntype IconColor =\n | \"inherit\"\n | \"action\"\n | \"disabled\"\n | \"primary\"\n | \"secondary\"\n | \"error\"\n | \"info\"\n | \"success\"\n | \"warning\";\n\nexport interface PlaceholderAction {\n id: string;\n text: string;\n href?: string;\n onClick?: () => void;\n}\n\nexport interface PlaceholderIconArgs {\n size: number;\n color: IconColor;\n}\n\nexport type PlaceholderIcon = ({ size, color }: PlaceholderIconArgs) => ReactElement;\n\nexport interface PlaceholderProps {\n title: string;\n subtitle: string;\n iconSize?: number;\n icon?: PlaceholderIcon;\n actions?: PlaceholderAction[];\n}\n\nexport const Placeholder = ({\n title,\n subtitle,\n icon,\n iconSize = 200,\n actions,\n}: PlaceholderProps) => {\n return (\n <Box\n display=\"flex\"\n flexDirection=\"column\"\n justifyContent=\"center\"\n alignItems=\"center\"\n textAlign=\"center\"\n >\n {icon && icon({ size: iconSize, color: \"primary\" })}\n <Typography variant=\"h4\" role=\"heading\" aria-level={1}>\n {title}\n </Typography>\n <Typography variant=\"subtitle1\" role=\"heading\" aria-level={2} sx={{ mt: 2 }}>\n {subtitle}\n </Typography>\n {actions && (\n <Box sx={{ pt: 2 }}>\n {actions.map(({ id, text, href, onClick }, index) => (\n <Button\n key={id}\n role=\"button\"\n variant=\"contained\"\n href={href}\n onClick={onClick}\n sx={{ mr: index < actions.length - 1 ? 2 : 0 }}\n >\n {text}\n </Button>\n ))}\n </Box>\n )}\n </Box>\n );\n};\n","import Box from \"@mui/material/Box\";\nimport Skeleton from \"@mui/material/Skeleton\";\n\nexport interface SkeletonCardProps {\n width?: number | string;\n animation?: \"pulse\" | \"wave\" | false;\n}\n\nexport const SkeletonCard = ({ width = \"100%\", animation = false }: SkeletonCardProps) => {\n return (\n <Box width={width}>\n <Skeleton animation={animation} variant=\"rectangular\" height={118} />\n <Skeleton animation={animation} variant=\"rectangular\" height={16} sx={{ my: 1 }} />\n <Skeleton animation={animation} variant=\"rectangular\" width=\"80%\" height={16} />\n </Box>\n );\n};\n","import Grid from \"@mui/material/Grid\";\nimport { newArrayWithSize } from \"../utils\";\nimport { SkeletonCard } from \"../skeleton-card\";\n\nexport interface SkeletonGridProps {\n size?: number;\n}\n\nexport const SkeletonGrid = ({ size = 20 }: SkeletonGridProps) => {\n return (\n <Grid container spacing={2}>\n {newArrayWithSize(size, 0).map((_, i) => (\n <Grid item key={i} xs={4}>\n <SkeletonCard width={1} />\n </Grid>\n ))}\n </Grid>\n );\n};\n","export default function chainPropTypes(propType1, propType2) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return function validate(...args) {\n return propType1(...args) || propType2(...args);\n };\n}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","import PropTypes from 'prop-types';\nimport chainPropTypes from './chainPropTypes';\nfunction isClassComponent(elementType) {\n // elementType.prototype?.isReactComponent\n const {\n prototype = {}\n } = elementType;\n return Boolean(prototype.isReactComponent);\n}\nfunction acceptingRef(props, propName, componentName, location, propFullName) {\n const element = props[propName];\n const safePropName = propFullName || propName;\n if (element == null ||\n // When server-side rendering React doesn't warn either.\n // This is not an accurate check for SSR.\n // This is only in place for Emotion compat.\n // TODO: Revisit once https://github.com/facebook/react/issues/20047 is resolved.\n typeof window === 'undefined') {\n return null;\n }\n let warningHint;\n const elementType = element.type;\n /**\n * Blacklisting instead of whitelisting\n *\n * Blacklisting will miss some components, such as React.Fragment. Those will at least\n * trigger a warning in React.\n * We can't whitelist because there is no safe way to detect React.forwardRef\n * or class components. \"Safe\" means there's no public API.\n *\n */\n if (typeof elementType === 'function' && !isClassComponent(elementType)) {\n warningHint = 'Did you accidentally use a plain function component for an element instead?';\n }\n if (warningHint !== undefined) {\n return new Error(`Invalid ${location} \\`${safePropName}\\` supplied to \\`${componentName}\\`. ` + `Expected an element that can hold a ref. ${warningHint} ` + 'For more information see https://mui.com/r/caveat-with-refs-guide');\n }\n return null;\n}\nconst elementAcceptingRef = chainPropTypes(PropTypes.element, acceptingRef);\nelementAcceptingRef.isRequired = chainPropTypes(PropTypes.element.isRequired, acceptingRef);\nexport default elementAcceptingRef;","import PropTypes from 'prop-types';\nimport chainPropTypes from './chainPropTypes';\nfunction isClassComponent(elementType) {\n // elementType.prototype?.isReactComponent\n const {\n prototype = {}\n } = elementType;\n return Boolean(prototype.isReactComponent);\n}\nfunction elementTypeAcceptingRef(props, propName, componentName, location, propFullName) {\n const propValue = props[propName];\n const safePropName = propFullName || propName;\n if (propValue == null ||\n // When server-side rendering React doesn't warn either.\n // This is not an accurate check for SSR.\n // This is only in place for emotion compat.\n // TODO: Revisit once https://github.com/facebook/react/issues/20047 is resolved.\n typeof window === 'undefined') {\n return null;\n }\n let warningHint;\n\n /**\n * Blacklisting instead of whitelisting\n *\n * Blacklisting will miss some components, such as React.Fragment. Those will at least\n * trigger a warning in React.\n * We can't whitelist because there is no safe way to detect React.forwardRef\n * or class components. \"Safe\" means there's no public API.\n *\n */\n if (typeof propValue === 'function' && !isClassComponent(propValue)) {\n warningHint = 'Did you accidentally provide a plain function component instead?';\n }\n if (warningHint !== undefined) {\n return new Error(`Invalid ${location} \\`${safePropName}\\` supplied to \\`${componentName}\\`. ` + `Expected an element type that can hold a ref. ${warningHint} ` + 'For more information see https://mui.com/r/caveat-with-refs-guide');\n }\n return null;\n}\nexport default chainPropTypes(PropTypes.elementType, elementTypeAcceptingRef);","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_SERVER_CONTEXT_TYPE:\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\nvar hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isConcurrentMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsConcurrentMode) {\n hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\nfunction isSuspenseList(object) {\n return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n}\n\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.SuspenseList = SuspenseList;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isSuspenseList = isSuspenseList;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","/* eslint-disable */\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nexport default typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();","import PropTypes from 'prop-types';\nconst refType = PropTypes.oneOfType([PropTypes.func, PropTypes.object]);\nexport default refType;","const visuallyHidden = {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: '1px',\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n whiteSpace: 'nowrap',\n width: '1px'\n};\nexport default visuallyHidden;","export function getTypeByValue(value) {\n const valueType = typeof value;\n switch (valueType) {\n case 'number':\n if (Number.isNaN(value)) {\n return 'NaN';\n }\n if (!Number.isFinite(value)) {\n return 'Infinity';\n }\n if (value !== Math.floor(value)) {\n return 'float';\n }\n return 'number';\n case 'object':\n if (value === null) {\n return 'null';\n }\n return value.constructor.name;\n default:\n return valueType;\n }\n}\n\n// IE 11 support\nfunction ponyfillIsInteger(x) {\n // eslint-disable-next-line no-restricted-globals\n return typeof x === 'number' && isFinite(x) && Math.floor(x) === x;\n}\nconst isInteger = Number.isInteger || ponyfillIsInteger;\nfunction requiredInteger(props, propName, componentName, location) {\n const propValue = props[propName];\n if (propValue == null || !isInteger(propValue)) {\n const propType = getTypeByValue(propValue);\n return new RangeError(`Invalid ${location} \\`${propName}\\` of type \\`${propType}\\` supplied to \\`${componentName}\\`, expected \\`integer\\`.`);\n }\n return null;\n}\nfunction validator(props, propName, ...other) {\n const propValue = props[propName];\n if (propValue === undefined) {\n return null;\n }\n return requiredInteger(props, propName, ...other);\n}\nfunction validatorNoop() {\n return null;\n}\nvalidator.isRequired = requiredInteger;\nvalidatorNoop.isRequired = validatorNoop;\nexport default process.env.NODE_ENV === 'production' ? validatorNoop : validator;","import TableSortLabel from \"@mui/material/TableSortLabel\";\nimport TableRow from \"@mui/material/TableRow\";\nimport Box from \"@mui/material/Box\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableHead from \"@mui/material/TableHead\";\nimport { visuallyHidden } from \"@mui/utils\";\n\nexport type Order = \"asc\" | \"desc\";\nexport interface HeadCell<T> {\n disablePadding: boolean;\n id: keyof T;\n label: string;\n numeric: boolean;\n sort: boolean;\n}\n\ninterface EnhancedTableHeadProps<T> {\n onRequestSort: (property: keyof T) => void;\n order: Order;\n orderBy: keyof T;\n headCells: HeadCell<T>[];\n}\n\nexport const EnhancedTableHead = <T,>({\n order,\n orderBy,\n headCells,\n onRequestSort,\n}: EnhancedTableHeadProps<T>) => {\n const createSortHandler = (property: keyof T) => () => {\n onRequestSort(property);\n };\n\n return (\n <TableHead>\n <TableRow>\n {headCells.map((headCell) => (\n <TableCell\n variant=\"head\"\n key={String(headCell.id)}\n padding={headCell.disablePadding ? \"none\" : \"normal\"}\n sortDirection={orderBy === headCell.id ? order : false}\n sx={{ fontWeight: \"bold\" }}\n >\n {headCell.sort ? (\n <TableSortLabel\n active={orderBy === headCell.id}\n direction={orderBy === headCell.id ? order : \"asc\"}\n onClick={createSortHandler(headCell.id)}\n >\n {headCell.label}\n {orderBy === headCell.id ? (\n <Box component=\"span\" sx={visuallyHidden}>\n {order === \"desc\" ? \"sorted descending\" : \"sorted ascending\"}\n </Box>\n ) : null}\n </TableSortLabel>\n ) : (\n headCell.label\n )}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n );\n};\n","import { ChangeEvent } from \"react\";\nimport { ReactNode, useState } from \"react\";\nimport Box from \"@mui/material/Box\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport TextField from \"@mui/material/TextField\";\nimport TableBody from \"@mui/material/TableBody\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport Table from \"@mui/material/Table\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableRow from \"@mui/material/TableRow\";\nimport Search from \"@mui/icons-material/Search\";\nimport { EnhancedTableHead, HeadCell, Order } from \"./enhanced-table-head\";\n\nfunction getFilter<T>(columns: HeadCell<T>[], search: string) {\n return (d: T) => {\n return (\n !search ||\n columns.some((col) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let value = (d as any)[col.id];\n if (value?.toLowerCase) {\n value = value.toLowerCase();\n }\n return value?.toString().includes(search.toLowerCase());\n })\n );\n };\n}\n\nfunction getComparator<T>(order: Order, orderBy: keyof T): (a: T, b: T) => number {\n return order === \"desc\"\n ? (a, b) => descendingComparator(a, b, orderBy)\n : (a, b) => -descendingComparator(a, b, orderBy);\n}\nfunction descendingComparator<T>(a: T, b: T, orderBy: keyof T) {\n if (b[orderBy] < a[orderBy]) {\n return -1;\n }\n if (b[orderBy] > a[orderBy]) {\n return 1;\n }\n return 0;\n}\n\ninterface Props<T> {\n readonly data: T[];\n search?: boolean;\n defaultSort: keyof T;\n defaultOrder?: Order;\n loading?: boolean;\n columns: HeadCell<T>[];\n children: (data: T[]) => ReactNode;\n}\n\nexport const EnhancedTable = <T,>({\n children,\n data,\n search,\n columns,\n defaultSort,\n defaultOrder = \"asc\",\n loading = false,\n}: Props<T>) => {\n const [searchFilter, setSearchFilter] = useState<string>(\"\");\n const [order, setOrder] = useState<Order>(defaultOrder);\n const [orderBy, setOrderBy] = useState<keyof T>(defaultSort);\n\n const handleRequestSort = (property: keyof T) => {\n const isAsc = orderBy === property && order === \"asc\";\n setOrder(isAsc ? \"desc\" : \"asc\");\n setOrderBy(property);\n };\n\n const filteredData = data\n .slice()\n .filter(getFilter<T>(columns, searchFilter))\n .sort(getComparator(order, orderBy));\n\n return (\n <>\n <Box sx={{ paddingX: 1, paddingBottom: 2 }}>\n {search && (\n <Box paddingY={2}>\n <TextField\n fullWidth\n placeholder=\"Search\"\n InputProps={{\n role: \"search\",\n startAdornment: (\n <InputAdornment position=\"start\">\n <Search />\n </InputAdornment>\n ),\n }}\n onChange={(e: ChangeEvent<HTMLInputElement>) => setSearchFilter(e.target.value)}\n />\n </Box>\n )}\n <TableContainer>\n <Table>\n <EnhancedTableHead\n order={order}\n orderBy={orderBy}\n headCells={columns}\n onRequestSort={handleRequestSort}\n />\n <TableBody>\n {loading ? (\n <TableRow>\n <TableCell colSpan={columns.length} sx={{ textAlign: \"center\" }}>\n <CircularProgress />\n </TableCell>\n </TableRow>\n ) : filteredData.length === 0 ? (\n <TableRow>\n <TableCell colSpan={columns.length} sx={{ textAlign: \"center\" }}>\n No data\n </TableCell>\n </TableRow>\n ) : (\n children(filteredData)\n )}\n </TableBody>\n </Table>\n </TableContainer>\n </Box>\n </>\n );\n};\n\nEnhancedTable.defaultProps = {\n defaultOrder: \"asc\",\n};\n","import { useState } from \"react\";\nimport CheckIcon from \"@mui/icons-material/Check\";\nimport ClearIcon from \"@mui/icons-material/Clear\";\nimport { SxProps, Theme, useTheme } from \"@mui/material/styles\";\nimport Button from \"@mui/material/Button\";\nimport IconButton from \"@mui/material/IconButton\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport EditIcon from \"@mui/icons-material/Edit\";\n\nexport interface ValueEditButtonsProps {\n onClickCancel: () => void;\n onClickSubmit: () => void;\n sx?: SxProps<Theme>;\n}\n\nexport const ValueEditButtons = ({ onClickCancel, onClickSubmit, sx }: ValueEditButtonsProps) => {\n return (\n <InputAdornment position=\"end\" sx={sx}>\n <Button\n variant=\"contained\"\n size=\"small\"\n color=\"error\"\n aria-label=\"cancel button\"\n startIcon={<ClearIcon sx={{ fontSize: 12 }} />}\n onClick={onClickCancel}\n sx={{ paddingRight: 0, minWidth: 0, marginRight: 1 }}\n />\n <Button\n variant=\"contained\"\n size=\"small\"\n color=\"primary\"\n aria-label=\"submit button\"\n startIcon={<CheckIcon sx={{ fontSize: 12 }} />}\n onClick={onClickSubmit}\n sx={{ paddingRight: 0, minWidth: 0 }}\n />\n </InputAdornment>\n );\n};\n\n/**\n * Hook to manage the editing behaviour\n */\nexport const useEditableValueDisplay = <T,>(\n initialValue: T | undefined,\n onEdit: (value?: T) => void,\n) => {\n const [isEditing, setIsEditing] = useState(false);\n const [editValue, setEditValue] = useState<T | undefined>(initialValue);\n\n const cancelEdit = () => {\n setIsEditing(false);\n setEditValue(initialValue);\n };\n const startEdit = () => {\n setIsEditing(true);\n };\n\n const submitEdit = () => {\n onEdit(editValue);\n cancelEdit();\n };\n\n return { isEditing, cancelEdit, editValue, setEditValue, startEdit, submitEdit };\n};\n\nexport interface ValueEditButtonProps {\n dense?: boolean;\n onClick: () => void;\n}\n\nexport const ValueEditButton = ({ dense, onClick }: ValueEditButtonProps) => {\n const { typography } = useTheme();\n return (\n <IconButton\n size=\"small\"\n onClick={onClick}\n sx={{ ml: dense ? 0.5 : 1 }}\n aria-label=\"edit button\"\n >\n <EditIcon sx={{ fontSize: typography.pxToRem(dense ? 18 : 24) }} />\n </IconButton>\n );\n};\n","export interface BaseValueProps<T> {\n /**\n * Name of the displayed value\n */\n label: string;\n\n /**\n * Value displayed\n */\n value?: T;\n\n /**\n * String rendered if value is undefined\n */\n placeholder?: string;\n\n /**\n * The value has to be displayed as compact or not.\n * False by default\n */\n dense?: boolean;\n}\n\nexport interface EditableValueProps<T> {\n /**\n * This field can be edited or not\n */\n editable?: boolean;\n\n /**\n * Callback executed when the value is edited\n */\n onEdit?: (value?: T) => void;\n}\n\nexport const DefaultPlaceholder = \"-\";\n","import { SxProps, Theme, useTheme } from \"@mui/material/styles\";\nimport Box from \"@mui/material/Box\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport Typography from \"@mui/material/Typography\";\n\nexport const getValueContentLabelId = (label: string): string =>\n `label-${label.replace(/ /g, \"-\")}`;\n\nexport interface ValueContentProps {\n /**\n * Name of the displayed value\n */\n label: string;\n\n /**\n * If true, the label will not be shown\n */\n hideLabel?: boolean;\n\n /**\n * If defined, a tooltip is going to be added arround the children;\n */\n tooltip?: string;\n\n /**\n * Timeout before the tooltip appears when the user hovers the value\n */\n tooltipEnterDelay?: number;\n\n /**\n * Component that's going to be renderd under the label\n */\n children: React.ReactElement<any, any>;\n\n /**\n * The value has to be displayed as compact or not.\n * False by default\n */\n dense?: boolean;\n\n /**\n * Custom styles for the root component\n */\n sx?: SxProps<Theme>;\n}\n\n/**\n * Displays a string value with a label\n */\nexport const ValueContent = ({\n label,\n hideLabel,\n tooltip,\n tooltipEnterDelay = 2000,\n children,\n dense,\n sx,\n}: ValueContentProps) => {\n const { typography } = useTheme();\n const id = getValueContentLabelId(label);\n\n return (\n <Box width={1} lineHeight={dense ? 0 : undefined} sx={sx}>\n {!hideLabel && (\n <Typography\n variant={dense ? \"caption\" : \"subtitle2\"}\n role=\"label\"\n id={id}\n lineHeight={dense ? typography.pxToRem(15) : undefined}\n >\n {label}\n </Typography>\n )}\n {tooltip ? (\n <Tooltip title={tooltip} placement=\"top\" enterDelay={tooltipEnterDelay}>\n {children}\n </Tooltip>\n ) : (\n children\n )}\n </Box>\n );\n};\n","import Typography from \"@mui/material/Typography\";\nimport TextField from \"@mui/material/TextField\";\nimport { useEffect, useRef } from \"react\";\nimport {\n BaseValueProps,\n DefaultPlaceholder,\n EditableValueProps,\n useEditableValueDisplay,\n ValueEditButton,\n ValueEditButtons,\n} from \"../value-base\";\nimport { getValueContentLabelId, ValueContent } from \"../value-content\";\n\nexport type ValueTextProps = BaseValueProps<string | number> & EditableValueProps<string>;\n\n/**\n * Displays a string value with a label\n */\nexport const ValueText = ({\n label,\n value: valueProp,\n placeholder = DefaultPlaceholder,\n editable,\n dense,\n onEdit = () => null,\n}: ValueTextProps) => {\n const editInputRef = useRef<HTMLInputElement>(null);\n const { isEditing, editValue, startEdit, cancelEdit, setEditValue, submitEdit } =\n useEditableValueDisplay(valueProp?.toString(), onEdit);\n const id = getValueContentLabelId(label);\n const value = valueProp?.toString() || placeholder;\n\n const editKeyPressListener = (e: KeyboardEvent) => {\n if (e.key === \"Enter\") {\n onEdit((e.target as any).value);\n }\n };\n\n useEffect(() => {\n editInputRef.current?.addEventListener(\"keypress\", editKeyPressListener);\n return () => editInputRef.current?.removeEventListener(\"keypress\", editKeyPressListener);\n }, [editInputRef.current]);\n\n return (\n <ValueContent hideLabel={isEditing} label={label} tooltip={value} dense={dense}>\n {isEditing ? (\n <TextField\n inputRef={editInputRef}\n value={editValue}\n label={label}\n size=\"small\"\n onChange={(e) => setEditValue(e.target.value)}\n InputProps={{\n endAdornment: (\n <ValueEditButtons onClickCancel={cancelEdit} onClickSubmit={submitEdit} />\n ),\n }}\n sx={{ marginY: !dense ? 1 : 0 }}\n />\n ) : (\n <Typography variant={dense ? \"body1\" : \"h5\"} noWrap aria-labelledby={id}>\n {value}\n {editable && <ValueEditButton dense={dense} onClick={startEdit} />}\n </Typography>\n )}\n </ValueContent>\n );\n};\n","import { useTheme } from \"@mui/material/styles\";\nimport Box from \"@mui/material/Box\";\nimport Switch from \"@mui/material/Switch\";\nimport Typography from \"@mui/material/Typography\";\nimport CheckIcon from \"@mui/icons-material/Check\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport {\n BaseValueProps,\n DefaultPlaceholder,\n EditableValueProps,\n useEditableValueDisplay,\n ValueEditButton,\n ValueEditButtons,\n} from \"../value-base\";\nimport { ValueContent, getValueContentLabelId } from \"../value-content\";\n\nexport type ValueBooleanProps = BaseValueProps<boolean> & EditableValueProps<boolean>;\n\n/**\n * Displays a boolean value with a label\n */\nexport const ValueBoolean = ({\n label,\n value,\n placeholder = DefaultPlaceholder,\n editable,\n dense,\n onEdit = () => null,\n}: ValueBooleanProps) => {\n const id = getValueContentLabelId(label);\n const { typography } = useTheme();\n const { isEditing, editValue, startEdit, cancelEdit, setEditValue, submitEdit } =\n useEditableValueDisplay(value, onEdit);\n\n const iconSx = { fontSize: dense ? typography.h6.fontSize : typography.h5.fontSize };\n\n return (\n <ValueContent label={label} dense={dense}>\n {isEditing ? (\n <Box display=\"flex\" alignItems=\"center\">\n <Switch\n size={dense ? \"small\" : \"medium\"}\n checked={editValue}\n onChange={(e) => setEditValue(e.target.checked)}\n />\n <ValueEditButtons onClickCancel={cancelEdit} onClickSubmit={submitEdit} />\n </Box>\n ) : (\n <Box\n display=\"flex\"\n alignItems=\"center\"\n aria-labelledby={id}\n role=\"checkbox\"\n aria-checked={value}\n >\n {value === undefined ? (\n <Typography variant=\"h5\">{placeholder}</Typography>\n ) : value ? (\n <CheckIcon color=\"success\" sx={iconSx} />\n ) : (\n <CloseIcon color=\"error\" sx={iconSx} />\n )}\n {editable && <ValueEditButton dense={dense} onClick={startEdit} />}\n </Box>\n )}\n </ValueContent>\n );\n};\n","import Box from \"@mui/material/Box\";\nimport TextField from \"@mui/material/TextField\";\nimport Typography from \"@mui/material/Typography\";\nimport { format } from \"date-fns\";\nimport { BaseValueProps, DefaultPlaceholder, EditableValueProps } from \"../value-base\";\nimport { getValueContentLabelId, ValueContent } from \"../value-content\";\nimport { useEditableValueDisplay, ValueEditButton, ValueEditButtons } from \"../value-base\";\nimport { DatePicker } from \"@mui/x-date-pickers/DatePicker\";\nimport { DateTimePicker } from \"@mui/x-date-pickers/DateTimePicker\";\nimport { TimePicker } from \"@mui/x-date-pickers/TimePicker\";\n\nexport type EditInputType = \"datetime\" | \"date\" | \"time\";\n\nexport interface ValueDatetimeProps extends BaseValueProps<Date>, EditableValueProps<Date> {\n /**\n * Datetime format\n */\n format: string;\n\n /**\n * Edit input type\n */\n editInputType?: EditInputType;\n}\n\n/**\n * Displays a formated datetime with a label\n */\nexport const ValueDatetime = ({\n label,\n value: valueProp,\n format: fmt,\n placeholder = DefaultPlaceholder,\n editable,\n editInputType = \"datetime\",\n dense,\n onEdit = () => null,\n}: ValueDatetimeProps) => {\n const { isEditing, editValue, startEdit, cancelEdit, setEditValue, submitEdit } =\n useEditableValueDisplay(valueProp, onEdit);\n const id = getValueContentLabelId(label);\n const value = (valueProp && format(valueProp, fmt)) || placeholder;\n\n const EditPickerComponent =\n editInputType === \"datetime\"\n ? DateTimePicker\n : editInputType === \"time\"\n ? TimePicker\n : DatePicker;\n\n return (\n <ValueContent\n label={label}\n hideLabel={isEditing}\n tooltip={value}\n dense={dense}\n sx={{ display: \"flex\", flexDirection: \"column\" }}\n >\n {isEditing ? (\n <EditPickerComponent\n value={editValue}\n format={fmt}\n label={label}\n onChange={(newValue) => setEditValue(newValue ? newValue : undefined)}\n slots={{\n textField: (params) => (\n <TextField\n {...params}\n size=\"small\"\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n <>\n {params.InputProps?.endAdornment}\n <ValueEditButtons\n onClickCancel={cancelEdit}\n onClickSubmit={submitEdit}\n sx={{ ml: 2 }}\n />\n </>\n ),\n sx: { marginY: !dense ? 1 : 0.2 },\n }}\n />\n ),\n }}\n />\n ) : (\n <Box display=\"flex\" alignItems=\"center\">\n <Typography variant={dense ? \"body1\" : \"h5\"} noWrap aria-labelledby={id}>\n {value}\n </Typography>\n {editable && <ValueEditButton dense={dense} onClick={startEdit} />}\n </Box>\n )}\n </ValueContent>\n );\n};\n","import Grid from \"@mui/material/Grid\";\nimport Paper from \"@mui/material/Paper\";\nimport Box from \"@mui/material/Box\";\nimport Typography from \"@mui/material/Typography\";\nimport { useTheme } from \"@mui/material/styles\";\nimport { useGetDefaultThemeColor } from \"../utils\";\nimport { ValueItemElement } from \"../value-item\";\n\nexport interface GroupValueCardProps {\n title: string;\n subtitle?: string;\n centered?: boolean;\n children: ValueItemElement | ValueItemElement[];\n dense?: boolean;\n}\n\nexport const GroupValueCard = ({\n title,\n subtitle,\n centered,\n children,\n dense,\n}: GroupValueCardProps) => {\n const { typography } = useTheme();\n const defaultColor = useGetDefaultThemeColor({ lightWeight: 200, darkWeight: 800 });\n\n return (\n <Paper\n sx={{\n paddingBottom: dense ? 0 : 1,\n }}\n >\n <Box\n bgcolor={defaultColor}\n px={dense ? 1 : 2}\n py={dense ? 0.5 : 1}\n lineHeight={dense ? 0 : undefined}\n >\n <Typography variant={dense ? \"body1\" : \"h6\"} role=\"heading\" aria-level={1}>\n {title}\n </Typography>\n {subtitle && (\n <Typography\n variant={dense ? \"caption\" : \"body2\"}\n role=\"heading\"\n aria-level={2}\n lineHeight={dense ? typography.pxToRem(15) : undefined}\n >\n {subtitle}\n </Typography>\n )}\n </Box>\n <Grid\n container\n padding={1}\n rowSpacing={dense ? 1 : 2}\n justifyContent={centered ? \"center\" : \"flex-start\"}\n >\n {children}\n </Grid>\n </Paper>\n );\n};\n","import Grid, { GridProps } from \"@mui/material/Grid\";\nimport Box from \"@mui/material/Box\";\nimport { ResponsiveStyleValue } from \"@mui/system\";\nimport { PropsWithChildren, FunctionComponent, ReactElement } from \"react\";\nimport { useGetDefaultThemeColor } from \"../utils\";\n\nexport type ValueItemProps = PropsWithChildren<\n Omit<GridProps, \"item\" | \"container\"> & { bordered?: ResponsiveStyleValue<boolean> }\n>;\nexport type ValueItemComponent = FunctionComponent<ValueItemProps>;\nexport type ValueItemElement = ReactElement<ValueItemProps, ValueItemComponent>;\n\nexport const valueItemClasses = {\n root: \"RdsValueItem-root\",\n content: \"RdsValueItem-content\",\n};\n\nconst resolveBorderStyle = (bordered: ResponsiveStyleValue<boolean>, color: string) => {\n const borderStyle = `solid ${color} 1px`;\n const noBorder = \"none\";\n\n if (!bordered) {\n return undefined;\n }\n\n if (Array.isArray(bordered)) {\n return bordered.map((b) => (b ? borderStyle : noBorder));\n }\n\n if (typeof bordered === \"object\") {\n const style: Record<string, string | undefined> = {};\n Object.entries(bordered).forEach(([key, value]) => {\n style[key] = value ? borderStyle : noBorder;\n });\n return style;\n }\n\n return borderStyle;\n};\n\nexport const ValueItem: ValueItemComponent = ({\n children,\n bordered = true,\n ...rest\n}: ValueItemProps) => {\n const defaultColor = useGetDefaultThemeColor({ lightWeight: 200, darkWeight: 800 });\n const borderLeft = resolveBorderStyle(bordered, defaultColor);\n return (\n <Grid item className={valueItemClasses.root} {...rest}>\n <Box className={valueItemClasses.content} px={1} borderLeft={borderLeft}>\n {children}\n </Box>\n </Grid>\n );\n};\n","import Box from \"@mui/material/Box\";\nimport LinearProgress from \"@mui/material/LinearProgress\";\nimport { LoadingArea } from \"../loading-area\";\nimport { TabProvider } from \"../tab-provider\";\nimport ReportProblemIcon from \"@mui/icons-material/ReportProblem\";\nimport { Placeholder, PlaceholderIcon } from \"../placeholder\";\nimport { HeaderElement } from \"../header\";\nimport { ContentElement } from \"../content\";\n\nexport interface HeaderLayoutError {\n icon?: PlaceholderIcon;\n title?: string;\n message: string;\n}\n\nexport interface HeaderLayoutProps {\n loading?: boolean;\n fetching?: boolean;\n error?: HeaderLayoutError;\n children: [HeaderElement, ContentElement];\n}\n\nconst DefaultErrorIcon = () => <ReportProblemIcon color=\"error\" sx={{ width: 200, height: 200 }} />;\n\nexport const HeaderLayout = ({ loading, children, fetching, error }: HeaderLayoutProps) => {\n const [headerElement, contentElement] = children;\n\n return (\n <TabProvider>\n <Box display=\"flex\" flexDirection=\"column\" height={1}>\n {headerElement}\n {fetching && (\n <Box width={1}>\n <LinearProgress />\n </Box>\n )}\n {loading && <LoadingArea />}\n {error && (\n <Box mt={4}>\n <Placeholder\n icon={error.icon || DefaultErrorIcon}\n title={error.title || \"There has been an error\"}\n subtitle={error.message}\n />\n </Box>\n )}\n {!loading && !error && contentElement}\n </Box>\n </TabProvider>\n );\n};\n","import { AlertColor } from \"@mui/material/Alert\";\nimport { createContext, useContext } from \"react\";\n\nexport const NotificationCenterProviderUndefinedError = new Error(\n \"NotificationCenterContext.Provider is required and was undefined\",\n);\n\nexport interface Notification {\n severity: AlertColor;\n title?: string;\n message: string;\n}\n\nexport interface NotificationCenterProps {\n show(notification: Notification): void;\n hide(): void;\n}\n\nexport const NotificationCenterContext = createContext<NotificationCenterProps | undefined>(\n undefined,\n);\n\nexport const useNotificationCenter = () => {\n const context = useContext(NotificationCenterContext);\n\n if (context === undefined) {\n throw NotificationCenterProviderUndefinedError;\n }\n\n return context;\n};\n","import { useEffect, useRef } from \"react\";\nimport { useNotificationCenter, Notification } from \"./notification-center.context\";\n\nexport interface NotifyWhenValueChangesOptions<T> {\n from: T;\n to: T;\n}\n\nexport const useNotifyWhenValueChanges = <T>(\n notification: Notification,\n value: T | undefined,\n { from, to }: NotifyWhenValueChangesOptions<T>,\n) => {\n const prevRef = useRef<T>();\n const { show } = useNotificationCenter();\n\n useEffect(() => {\n if (prevRef.current === from && value === to) {\n show(notification);\n }\n prevRef.current = value;\n }, [value]);\n};\n","import Grid from \"@mui/material/Grid\";\nimport { newBreakpointsCounter } from \"../utils/breakpoints\";\nimport { ValueBoolean } from \"../value-boolean\";\nimport { ValueDatetime } from \"../value-datetime\";\nimport { ValueText } from \"../value-text\";\nimport { GroupValueCard } from \"../group-value-card\";\nimport { ValueItem } from \"../value-item\";\nimport {\n ArrayGroupField,\n ArrayInstanceType,\n BasicModelInstance,\n GroupField,\n GroupInstanceType,\n Model,\n ModelField,\n} from \"../generators/generators.model\";\nimport { GridColDef, DataGrid } from \"@mui/x-data-grid\";\n\ninterface SingleDetailValueFactoryOptions {\n dense?: boolean;\n}\n\nconst singleDetailValueFactory = <T extends BasicModelInstance>(\n field: ModelField,\n instance: T | GroupInstanceType,\n { dense }: SingleDetailValueFactoryOptions = {},\n) => {\n const { id, name, type } = field;\n const value = instance[id];\n if (type === \"boolean\") {\n return <ValueBoolean dense={dense} label={name} value={value as boolean} />;\n } else if (type === \"date\" || type === \"time\" || type === \"datetime\") {\n return <ValueDatetime dense={dense} label={name} value={value as Date} format={field.format} />;\n }\n\n if (typeof value === \"object\" && !Array.isArray(value)) {\n return <ValueText dense={dense} label={name} value={JSON.stringify(value)} />;\n }\n return <ValueText dense={dense} label={name} value={value?.toString()} />;\n};\n\ninterface ObjectArrayGroupProps {\n field: ArrayGroupField;\n instance: ArrayInstanceType;\n dense?: boolean;\n}\n\nconst ObjectArrayGroup = ({\n field: { name, description, value },\n instance,\n dense,\n}: ObjectArrayGroupProps) => {\n const columns: GridColDef[] = [{ field: \"id\", headerName: \"ID\", width: 70 }];\n\n value.forEach((column) => {\n columns.push({\n field: column.id,\n headerName: column.name,\n });\n });\n\n const rows = instance.map((f, id) => ({\n id,\n ...f,\n }));\n\n return (\n <GroupValueCard title={name} subtitle={description} dense={dense}>\n <Grid item xs={12}>\n <DataGrid\n rows={rows}\n columns={columns}\n density={dense ? \"compact\" : \"standard\"}\n disableRowSelectionOnClick\n pageSizeOptions={[5]}\n initialState={{\n pagination: {\n paginationModel: {\n pageSize: 5,\n },\n },\n }}\n sx={{ height: 400 }}\n />\n </Grid>\n </GroupValueCard>\n );\n};\n\ninterface ObjectDetailGroupProps {\n field: GroupField;\n instance: GroupInstanceType;\n dense?: boolean;\n}\n\nconst ObjectDetailGroup = ({\n field: { name, description, value },\n instance,\n dense,\n}: ObjectDetailGroupProps) => {\n const breakpointsCounter = newBreakpointsCounter();\n\n return (\n <GroupValueCard title={name} subtitle={description} dense={dense}>\n {value.map((field) => {\n const { id, xs, sm, md, lg, xl } = field;\n const bordered = breakpointsCounter.increment(field);\n return (\n <ValueItem key={id} xs={xs} sm={sm} md={md} lg={lg} xl={xl} bordered={bordered}>\n {singleDetailValueFactory(field, instance, { dense })}\n </ValueItem>\n );\n })}\n </GroupValueCard>\n );\n};\n\nexport interface ObjectDetailsProps<T extends BasicModelInstance> {\n model: Model;\n dense?: boolean;\n instance: T;\n}\n\nexport const ObjectDetails = <T extends BasicModelInstance>({\n model,\n instance,\n dense,\n}: ObjectDetailsProps<T>) => {\n const breakpointsCounter = newBreakpointsCounter();\n return (\n <Grid container spacing={dense ? 1 : 2}>\n {model.fields.map((field) => {\n const { id, type, xs = 3, sm = 0, md = 0, lg = 0, xl = 0 } = field;\n\n if (type === \"group\") {\n breakpointsCounter.increment({ xs: 12 });\n return (\n <Grid item key={id} xs={12}>\n <ObjectDetailGroup\n field={field}\n instance={instance[id] as GroupInstanceType}\n dense={dense}\n />\n </Grid>\n );\n }\n\n if (type === \"group[]\") {\n breakpointsCounter.increment({ xs: 12 });\n return (\n <Grid item key={id} xs={12}>\n <ObjectArrayGroup field={field} instance={instance[id] as any} dense={dense} />\n </Grid>\n );\n }\n\n const bordered = breakpointsCounter.increment(field);\n return (\n <ValueItem key={id} xs={xs} sm={sm} md={md} lg={lg} xl={xl} bordered={bordered}>\n {singleDetailValueFactory(field, instance, { dense })}\n </ValueItem>\n );\n })}\n </Grid>\n );\n};\n","/**\n * MODEL TYPES\n * Types used to specify the model\n */\nexport type ModelFieldTypes =\n | \"string\"\n | \"number\"\n | \"string[]\"\n | \"number[]\"\n | \"boolean\"\n | \"enum\"\n | \"multienum\"\n | \"date\"\n | \"time\"\n | \"datetime\";\n\ntype Base = {\n id: string;\n description: string;\n name: string;\n listable?: boolean;\n updatable?: boolean;\n required?: boolean;\n};\n\ntype Breakpoints = {\n xs?: number;\n sm?: number;\n md?: number;\n lg?: number;\n xl?: number;\n};\n\ntype StringField = {\n type: \"string\";\n};\n\ntype StringArrayField = {\n type: \"string[]\";\n};\n\ntype NumberField = {\n type: \"number\";\n};\n\ntype NumberArrayField = {\n type: \"number[]\";\n};\n\ntype BooleanField = {\n type: \"boolean\";\n};\n\ntype EnumField = {\n type: \"enum\";\n value: string[];\n};\n\ntype MultiEnumField = {\n type: \"multienum\";\n value: string[];\n};\n\ntype DateField = {\n type: \"date\";\n format: string;\n default: Date;\n};\n\ntype TimeField = {\n type: \"time\";\n format: string;\n default: Date;\n};\n\ntype DatetimeField = {\n type: \"datetime\";\n format: string;\n default: Date;\n};\n\ntype SingleFields =\n | StringField\n | NumberField\n | StringArrayField\n | NumberArrayField\n | BooleanField\n | EnumField\n | MultiEnumField\n | DateField\n | TimeField\n | DatetimeField;\n\nexport type GroupField = {\n type: \"group\";\n value: (Base & Breakpoints & SingleFields)[];\n} & Base;\n\nexport type ArrayGroupField = {\n type: \"group[]\";\n value: (Base & Breakpoints & SingleFields)[];\n} & Base;\n\ntype Fields = SingleFields | GroupField | ArrayGroupField;\nexport type ModelField = Base & Breakpoints & Fields;\n\nexport type Model = {\n fields: ModelField[];\n};\n\n/**\n * INSTANCE TYPES\n * Types used to represent an instance of a model specification\n */\nexport type BaseFieldType = string | number | boolean | Date;\nexport type ArrayFieldType = string[] | number[];\nexport type SingleFieldType = BaseFieldType | ArrayFieldType;\nexport type GroupInstanceType = { [key: string]: SingleFieldType };\nexport type ArrayInstanceType = { [key: string]: SingleFieldType }[];\nexport type FieldType = SingleFieldType | GroupInstanceType;\n\nexport interface BasicModelInstance {\n id: string;\n [key: string]: FieldType;\n}\n\n/**\n * UTILITIES\n * Some functions used in several places to help to manage models\n */\nconst InitialStateZeroValue: Record<ModelFieldTypes | \"group\" | \"group[]\", FieldType | undefined> =\n {\n string: \"\",\n number: 0,\n boolean: false,\n enum: \"\",\n multienum: [],\n date: new Date(1970, 0, 1, 0, 0),\n time: new Date(1970, 0, 1, 0, 0),\n datetime: new Date(1970, 0, 1, 0, 0),\n group: {},\n \"group[]\": [],\n \"string[]\": [],\n \"number[]\": [],\n };\n\nconst getFieldValueOrZero = (\n field: ModelField,\n values: BasicModelInstance | GroupInstanceType | undefined,\n) => {\n return (\n (values && values[field.id]) ||\n (\"default\" in field && field.default) ||\n InitialStateZeroValue[field.type]\n );\n};\n\nexport const newInstanceFromValuesOrZeroValue = <T extends BasicModelInstance>(\n model: Model,\n values: T | undefined = undefined,\n): T => {\n const obj: Record<string, FieldType | undefined> = {};\n\n model.fields.forEach((field) => {\n if (field.type === \"group\") {\n const value: GroupInstanceType = {};\n field.value.forEach((groupField) => {\n value[groupField.id] = getFieldValueOrZero(\n groupField,\n values && (values[field.id] as GroupInstanceType),\n ) as SingleFieldType;\n });\n obj[field.id] = value;\n } else {\n obj[field.id] = getFieldValueOrZero(field, values);\n }\n });\n\n return obj as T;\n};\n","import Box from \"@mui/material/Box\";\nimport Grid from \"@mui/material/Grid\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\nimport Checkbox from \"@mui/material/Checkbox\";\nimport FormControl from \"@mui/material/FormControl\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport Select from \"@mui/material/Select\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport TextField from \"@mui/material/TextField\";\nimport { SelectChangeEvent } from \"@mui/material/Select\";\nimport { DesktopDatePicker, TimePicker, DateTimePicker } from \"@mui/x-date-pickers\";\nimport { ChangeEvent, ReactElement } from \"react\";\nimport { useGetDefaultThemeColor } from \"../utils\";\nimport { GroupValueCard } from \"../group-value-card\";\nimport {\n ArrayFieldType,\n FieldType,\n ModelField,\n ModelFieldTypes,\n} from \"../generators/generators.model\";\n\nexport interface ModelFormField {\n field: ModelField;\n update: boolean;\n dense?: boolean;\n path?: string[];\n value: any;\n onChangeValue: (path: string[], value: any) => void;\n}\n\nexport const ModelFormField = ({\n field,\n path = [],\n value,\n dense,\n update,\n onChangeValue,\n}: ModelFormField) => {\n const handleCheckboxChange = (e: ChangeEvent<HTMLInputElement>) => {\n e.preventDefault();\n onChangeValue([...path, e.target.name], e.target.checked);\n };\n\n const handleSelectChange = (e: SelectChangeEvent<FieldType>) => {\n e.preventDefault();\n onChangeValue([...path, e.target.name], e.target.value);\n };\n\n const handleMultiSelectChange = (e: SelectChangeEvent<FieldType>) => {\n e.preventDefault();\n const { value } = e.target;\n const newValue = typeof value === \"string\" ? value.split(\",\") : value;\n onChangeValue([...path, e.target.name], newValue);\n };\n\n const handleInputChange = (\n e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,\n type: ModelFieldTypes,\n ) => {\n e.preventDefault();\n\n let value: string | number | string[] | number[] = e.target.value;\n if (type === \"number\" && typeof value === \"string\") {\n value = parseInt(e.target.value, 10);\n } else if (type.includes(\"[]\")) {\n value = e.target.value.split(\",\");\n }\n onChangeValue([...path, e.target.name], value);\n };\n\n const handleDateChange = (value: FieldType | null, id: string) => {\n onChangeValue([...path, id], value);\n };\n\n const defaultColor = useGetDefaultThemeColor({ lightWeight: 200, darkWeight: 800 });\n\n const {\n id,\n type,\n name,\n description,\n updatable = true,\n required = true,\n xs,\n sm,\n md,\n lg,\n xl,\n } = field;\n const disabled: boolean = !updatable && update;\n\n let fieldInput: ReactElement;\n const size = dense ? \"small\" : \"medium\";\n if (type === \"group\") {\n fieldInput = (\n <GroupValueCard title={name} subtitle={description} dense={dense}>\n <Grid container spacing={2} sx={{ p: 2 }}>\n {field.value.map((f) => (\n <ModelFormField\n key={f.id}\n field={f}\n dense={dense}\n path={[...path, id]}\n value={value[f.id]}\n update={update}\n onChangeValue={onChangeValue}\n />\n ))}\n </Grid>\n </GroupValueCard>\n );\n } else if (type === \"boolean\") {\n fieldInput = (\n <Box sx={{ height: 1, display: \"flex\", alignItems: \"center\" }}>\n <FormControlLabel\n control={\n <Checkbox\n name={id}\n size={size}\n onChange={handleCheckboxChange}\n checked={value as boolean}\n disabled={disabled}\n />\n }\n label={name}\n />\n </Box>\n );\n } else if (type === \"enum\") {\n fieldInput = (\n <FormControl fullWidth>\n <InputLabel id={`${id}-select-label`}>{name}</InputLabel>\n <Select\n labelId={`${id}-select-label`}\n id={`${id}-select`}\n value={value}\n label={name}\n name={id}\n size={size}\n onChange={handleSelectChange}\n required={required}\n disabled={disabled}\n >\n {field.value.map((fieldValue) => (\n <MenuItem key={fieldValue} value={fieldValue}>\n {fieldValue}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n } else if (type === \"multienum\") {\n fieldInput = (\n <FormControl fullWidth>\n <InputLabel id={`${id}-select-label`}>{name}</InputLabel>\n <Select\n labelId={`${id}-select-label`}\n id={`${id}-select`}\n value={value || []}\n renderValue={(selected) => (selected as ArrayFieldType).join(\", \")}\n label={name}\n name={id}\n size={size}\n onChange={handleMultiSelectChange}\n required={required}\n disabled={disabled}\n multiple\n >\n {field.value.map((fieldValue) => (\n <MenuItem key={fieldValue} value={fieldValue}>\n <Checkbox checked={((value as any[]) || []).includes(fieldValue)} />\n <ListItemText primary={fieldValue} />\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n } else if (type === \"date\") {\n fieldInput = (\n <DesktopDatePicker\n label={name}\n format={field.format}\n value={value}\n slotProps={\n {\n field: {\n size,\n },\n } as any\n }\n disabled={disabled}\n onChange={(value) => handleDateChange(value, id)}\n />\n );\n } else if (type === \"time\") {\n fieldInput = (\n <TimePicker\n label={name}\n format={field.format}\n value={value}\n slotProps={\n {\n field: {\n size,\n },\n } as any\n }\n disabled={disabled}\n onChange={(value) => handleDateChange(value, id)}\n />\n );\n } else if (type === \"datetime\") {\n fieldInput = (\n <DateTimePicker\n label={name}\n format={field.format}\n value={value}\n slotProps={\n {\n field: {\n size,\n },\n } as any\n }\n disabled={disabled}\n onChange={(value) => handleDateChange(value, id)}\n />\n );\n } else if (type === \"group[]\") {\n return null;\n } else if (type.includes(\"[]\")) {\n fieldInput = (\n <TextField\n required={required}\n type=\"text\"\n label={name}\n name={id}\n size={size}\n variant=\"outlined\"\n helperText=\"Use comas to separate multiple values\"\n fullWidth\n disabled={disabled}\n value={(value as any[]).join(\",\")}\n onChange={(e) => handleInputChange(e, type)}\n />\n );\n } else {\n fieldInput = (\n <TextField\n required={required}\n type={type}\n label={name}\n size={size}\n name={id}\n variant=\"outlined\"\n fullWidth\n value={value}\n disabled={disabled}\n onChange={(e) => handleInputChange(e, type)}\n />\n );\n }\n\n return (\n <Grid item key={id} xs={xs} sm={sm} md={md} lg={lg} xl={xl}>\n {fieldInput}\n </Grid>\n );\n};\n","export default function _isPlaceholder(a) {\n return a != null && typeof a === 'object' && a['@@functional/placeholder'] === true;\n}","import _isPlaceholder from \"./_isPlaceholder.js\";\n/**\n * Optimized internal one-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nexport default function _curry1(fn) {\n return function f1(a) {\n if (arguments.length === 0 || _isPlaceholder(a)) {\n return f1;\n } else {\n return fn.apply(this, arguments);\n }\n };\n}","import _curry1 from \"./_curry1.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n/**\n * Optimized internal two-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nexport default function _curry2(fn) {\n return function f2(a, b) {\n switch (arguments.length) {\n case 0:\n return f2;\n\n case 1:\n return _isPlaceholder(a) ? f2 : _curry1(function (_b) {\n return fn(a, _b);\n });\n\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f2 : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b);\n }) : fn(a, b);\n }\n };\n}","import _curry1 from \"./_curry1.js\";\nimport _curry2 from \"./_curry2.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n/**\n * Optimized internal three-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nexport default function _curry3(fn) {\n return function f3(a, b, c) {\n switch (arguments.length) {\n case 0:\n return f3;\n\n case 1:\n return _isPlaceholder(a) ? f3 : _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n });\n\n case 2:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f3 : _isPlaceholder(a) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _curry1(function (_c) {\n return fn(a, b, _c);\n });\n\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) && _isPlaceholder(c) ? f3 : _isPlaceholder(a) && _isPlaceholder(b) ? _curry2(function (_a, _b) {\n return fn(_a, _b, c);\n }) : _isPlaceholder(a) && _isPlaceholder(c) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) && _isPlaceholder(c) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b, c);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b, c);\n }) : _isPlaceholder(c) ? _curry1(function (_c) {\n return fn(a, b, _c);\n }) : fn(a, b, c);\n }\n };\n}","/**\n * Tests whether or not an object is an array.\n *\n * @private\n * @param {*} val The object to test.\n * @return {Boolean} `true` if `val` is an array, `false` otherwise.\n * @example\n *\n * _isArray([]); //=> true\n * _isArray(null); //=> false\n * _isArray({}); //=> false\n */\nexport default Array.isArray || function _isArray(val) {\n return val != null && val.length >= 0 && Object.prototype.toString.call(val) === '[object Array]';\n};","/**\n * Determine if the passed argument is an integer.\n *\n * @private\n * @param {*} n\n * @category Type\n * @return {Boolean}\n */\nexport default Number.isInteger || function _isInteger(n) {\n return n << 0 === n;\n};","import _curry1 from \"./internal/_curry1.js\";\n/**\n * Checks if the input value is `null` or `undefined`.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Type\n * @sig * -> Boolean\n * @param {*} x The value to test.\n * @return {Boolean} `true` if `x` is `undefined` or `null`, otherwise `false`.\n * @example\n *\n * R.isNil(null); //=> true\n * R.isNil(undefined); //=> true\n * R.isNil(0); //=> false\n * R.isNil([]); //=> false\n */\n\nvar isNil =\n/*#__PURE__*/\n_curry1(function isNil(x) {\n return x == null;\n});\n\nexport default isNil;","import _curry3 from \"./internal/_curry3.js\";\nimport _has from \"./internal/_has.js\";\nimport _isInteger from \"./internal/_isInteger.js\";\nimport _assoc from \"./internal/_assoc.js\";\nimport isNil from \"./isNil.js\";\n/**\n * Makes a shallow clone of an object, setting or overriding the nodes required\n * to create the given path, and placing the specific value at the tail end of\n * that path. Note that this copies and flattens prototype properties onto the\n * new object as well. All non-primitive properties are copied by reference.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Object\n * @typedefn Idx = String | Int | Symbol\n * @sig [Idx] -> a -> {a} -> {a}\n * @param {Array} path the path to set\n * @param {*} val The new value\n * @param {Object} obj The object to clone\n * @return {Object} A new object equivalent to the original except along the specified path.\n * @see R.dissocPath\n * @example\n *\n * R.assocPath(['a', 'b', 'c'], 42, {a: {b: {c: 0}}}); //=> {a: {b: {c: 42}}}\n *\n * // Any missing or non-object keys in path will be overridden\n * R.assocPath(['a', 'b', 'c'], 42, {a: 5}); //=> {a: {b: {c: 42}}}\n */\n\nvar assocPath =\n/*#__PURE__*/\n_curry3(function assocPath(path, val, obj) {\n if (path.length === 0) {\n return val;\n }\n\n var idx = path[0];\n\n if (path.length > 1) {\n var nextObj = !isNil(obj) && _has(idx, obj) && typeof obj[idx] === 'object' ? obj[idx] : _isInteger(path[1]) ? [] : {};\n val = assocPath(Array.prototype.slice.call(path, 1), val, nextObj);\n }\n\n return _assoc(idx, val, obj);\n});\n\nexport default assocPath;","export default function _has(prop, obj) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}","import _isArray from \"./_isArray.js\";\nimport _isInteger from \"./_isInteger.js\";\n/**\n * Makes a shallow clone of an object, setting or overriding the specified\n * property with the given value. Note that this copies and flattens prototype\n * properties onto the new object as well. All non-primitive properties are\n * copied by reference.\n *\n * @private\n * @param {String|Number} prop The property name to set\n * @param {*} val The new value\n * @param {Object|Array} obj The object to clone\n * @return {Object|Array} A new object equivalent to the original except for the changed property.\n */\n\nexport default function _assoc(prop, val, obj) {\n if (_isInteger(prop) && _isArray(obj)) {\n var arr = [].concat(obj);\n arr[prop] = val;\n return arr;\n }\n\n var result = {};\n\n for (var p in obj) {\n result[p] = obj[p];\n }\n\n result[prop] = val;\n return result;\n}","import Button from \"@mui/material/Button\";\nimport Grid from \"@mui/material/Grid\";\nimport { FormEvent, useMemo } from \"react\";\nimport { useState } from \"react\";\nimport {\n Model,\n BasicModelInstance,\n FieldType,\n newInstanceFromValuesOrZeroValue,\n} from \"../generators\";\nimport { ModelFormField } from \"./model-form-field\";\nimport { assocPath } from \"ramda\";\n\nexport interface ModelFormProps<T extends BasicModelInstance> {\n model: Model;\n dense?: boolean;\n initialValues?: T;\n saveButtonText: string;\n onSubmit: (values: T) => void;\n}\n\nexport const ModelForm = <T extends BasicModelInstance>({\n model,\n saveButtonText,\n dense,\n onSubmit,\n initialValues,\n}: ModelFormProps<T>) => {\n const valuesInitialState = useMemo(\n () => newInstanceFromValuesOrZeroValue<T>(model, initialValues),\n [model, initialValues],\n );\n const [values, setValues] = useState<T>(valuesInitialState);\n\n const setKeyValue = (path: string[], value: FieldType | null) => {\n setValues((v) => assocPath(path, value, v));\n };\n\n const handleSubmit = (e: FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n onSubmit(values);\n };\n\n return (\n <Grid container component=\"form\" spacing={2} onSubmit={handleSubmit}>\n {model.fields.map((f) => (\n <ModelFormField\n key={f.id}\n dense={dense}\n field={f}\n value={values[f.id]}\n update={!!initialValues}\n onChangeValue={setKeyValue}\n />\n ))}\n <Grid item xs={12}>\n <Button type=\"submit\" variant=\"contained\" size={dense ? \"small\" : \"medium\"}>\n {saveButtonText}\n </Button>\n </Grid>\n </Grid>\n );\n};\n","import { useEffect, useRef } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\n\nexport interface NavigateWhenValueChangesOptions<T> {\n from: T;\n to: T;\n}\n\nexport const useNavigateWhenValueChanges = <T>(\n path: string,\n value: T | undefined,\n { from, to }: NavigateWhenValueChangesOptions<T>,\n) => {\n const prevRef = useRef<T>();\n const navigate = useNavigate();\n\n useEffect(() => {\n if (prevRef.current === from && value === to) {\n navigate(path);\n }\n prevRef.current = value;\n }, [value]);\n};\n","import { useEffect } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport { BasicModelInstance } from \"../../generators\";\nimport { ModelForm } from \"../../model-form\";\nimport { useNavigateWhenValueChanges } from \"../../hooks\";\nimport { HeaderLayout } from \"../../header-layout\";\nimport { useNotifyWhenValueChanges } from \"../../notification-center\";\nimport { RequestState } from \"../../model-router\";\nimport { BaseScreenProps } from \"./screens.types\";\nimport { Header } from \"../../header\";\nimport { Content } from \"../../content\";\n\nexport interface UpdateScreenProps<T extends BasicModelInstance> extends BaseScreenProps {\n /**\n * Callback executed when the user wants to update\n * an item\n */\n onSubmitUpdateItem: (obj: T) => void;\n /**\n * Current status of the request to update an item\n */\n submitUpdateItemRequest: RequestState;\n\n /**\n * Current status of the request to retrieve\n * the item to be updated\n */\n updateItemRequest: RequestState;\n\n /**\n * Callback executed to retrive the item that\n * has to going tobe updated\n */\n onRequestUpdateItem: (id: string) => void;\n\n /**\n * Item that is going to be updated\n */\n updateItem?: T;\n}\n\nexport const UpdateScreen = <T extends BasicModelInstance>({\n model,\n modelName,\n basePath = \"\",\n submitUpdateItemRequest,\n updateItemRequest,\n updateItem,\n onSubmitUpdateItem,\n onRequestUpdateItem,\n}: UpdateScreenProps<T>) => {\n const { id = \"\" } = useParams();\n const loading = updateItemRequest.loading || submitUpdateItemRequest.loading;\n\n useEffect(() => {\n onRequestUpdateItem(id);\n }, [id]);\n\n useNotifyWhenValueChanges(\n {\n title: \"Item updated\",\n message: `The item ${id} has been updated successfully`,\n severity: \"success\",\n },\n !!submitUpdateItemRequest.success,\n { from: false, to: true },\n );\n useNavigateWhenValueChanges(`${basePath}/`, !!submitUpdateItemRequest.success, {\n from: false,\n to: true,\n });\n useNotifyWhenValueChanges(\n { title: \"We had an error\", message: submitUpdateItemRequest.error || \"\", severity: \"error\" },\n !!submitUpdateItemRequest.error,\n { from: false, to: true },\n );\n\n return (\n <HeaderLayout loading={loading}>\n <Header\n title={`Edit ${id}`}\n preset=\"default\"\n breadcrumbs={[\n {\n id: \"list\",\n text: modelName,\n link: `${basePath}/`,\n },\n {\n id: \"update\",\n text: `Edit ${id}`,\n link: `${basePath}/${id}/update`,\n },\n ]}\n />\n <Content>\n <ModelForm\n model={model}\n initialValues={updateItem}\n saveButtonText=\"Save\"\n onSubmit={onSubmitUpdateItem}\n />\n </Content>\n </HeaderLayout>\n );\n};\n","import TableRow from \"@mui/material/TableRow\";\nimport TableCell from \"@mui/material/TableCell\";\nimport IconButton from \"@mui/material/IconButton\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport Menu from \"@mui/material/Menu\";\nimport { EnhancedTable, HeadCell, Order } from \"../enhanced-table\";\nimport MoreVertIcon from \"@mui/icons-material/MoreVert\";\nimport { BasicModelInstance } from \"../generators\";\nimport { useState } from \"react\";\n\nconst OptionsId = \"__options\";\n\nexport interface TableRowOption<T extends BasicModelInstance> {\n id: string;\n label: string;\n onClick: (item: T) => void;\n}\n\nexport interface TableListProps<T extends BasicModelInstance> {\n columns: HeadCell<T>[];\n data: T[];\n search?: boolean;\n defaultSort: string;\n defaultOrder?: Order;\n loading?: boolean;\n options?: TableRowOption<T>[];\n onClick?: (d: T) => void;\n}\n\n// TODO: Move this to teh generators section\nexport const TableList = <T extends BasicModelInstance>({\n columns: columnsProp,\n options,\n data,\n onClick,\n search,\n defaultSort,\n defaultOrder,\n loading,\n}: TableListProps<T>) => {\n const columns = [\n ...columnsProp,\n {\n id: OptionsId,\n label: \"\",\n disablePadding: false,\n numeric: false,\n sort: false,\n },\n ];\n const [anchorMenuEl, setAnchorMenuEl] = useState<null | { item: T; anchor: HTMLElement }>(null);\n\n return (\n <>\n <EnhancedTable<T>\n columns={columns}\n data={data}\n search={search}\n defaultSort={defaultSort}\n defaultOrder={defaultOrder}\n loading={loading}\n >\n {(filteredData) =>\n filteredData.map((row, i) => {\n return (\n <TableRow\n key={row.id}\n onClick={() => onClick && onClick(row)}\n role=\"row\"\n aria-rowindex={i}\n sx={{ cursor: onClick && \"pointer\" }}\n >\n {columns.map(({ id }, j) => (\n <TableCell\n role=\"cell\"\n scope=\"row\"\n key={id.toString()}\n aria-rowindex={i}\n aria-colindex={j}\n >\n {\n row[\n id\n ] as string /* TODO: This has to be reimplemented having a cell based on each model type */\n }\n </TableCell>\n ))}\n {options && (\n <TableCell>\n <IconButton\n data-testid={`options-${row.id}`}\n onClick={(event) => {\n event.stopPropagation();\n setAnchorMenuEl({\n item: row,\n anchor: event.currentTarget,\n });\n }}\n >\n <MoreVertIcon />\n </IconButton>\n </TableCell>\n )}\n </TableRow>\n );\n })\n }\n </EnhancedTable>\n {options && (\n <Menu\n anchorEl={anchorMenuEl?.anchor}\n open={!!anchorMenuEl}\n onClose={() => setAnchorMenuEl(null)}\n anchorOrigin={{\n vertical: \"top\",\n horizontal: \"left\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"left\",\n }}\n >\n {options.map(({ id, label, onClick }) => (\n <MenuItem\n key={id}\n onClick={() => {\n if (anchorMenuEl) {\n onClick(anchorMenuEl?.item);\n }\n setAnchorMenuEl(null);\n }}\n >\n {label}\n </MenuItem>\n ))}\n </Menu>\n )}\n </>\n );\n};\n","import { useEffect } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useNotifyWhenValueChanges } from \"../../notification-center\";\nimport { HeaderLayout } from \"../../header-layout\";\nimport { BaseScreenProps } from \"./screens.types\";\nimport { Header, HeaderAction } from \"../../header\";\nimport { Content } from \"../../content\";\nimport { BasicModelInstance } from \"../../generators\";\nimport { RequestState } from \"../../model-router\";\nimport { TableList, TableRowOption } from \"../../table-list\";\n\nexport interface ListScreenProps<T extends BasicModelInstance> extends BaseScreenProps {\n /**\n * Callback executed each time the list screen\n * requests for a data update\n */\n onRequestList: () => void;\n\n /**\n * List of items to be displayed in the list screen\n */\n listData: T[];\n\n /**\n * Callback executed when the user clicks an option\n * to delete an item\n */\n onClickDeleteItem: (item: T) => void;\n\n /**\n * Current status of the request to retrieve\n * the list items\n */\n listRequest: RequestState;\n\n /**\n * Current status of the request to delete\n * an item\n */\n deleteRequest: RequestState;\n}\n\nexport const ListScreen = <T extends BasicModelInstance>({\n model,\n modelName,\n listData,\n listRequest,\n deleteRequest,\n basePath = \"\",\n deleteFeature = true,\n updateFeature = true,\n addFeature = true,\n detailsFeature = true,\n onRequestList,\n onClickDeleteItem,\n}: ListScreenProps<T>) => {\n const navigate = useNavigate();\n\n useEffect(() => {\n onRequestList();\n }, []);\n\n useNotifyWhenValueChanges(\n {\n title: \"Item deleted\",\n message: \"The item has been deleted successfully\",\n severity: \"success\",\n },\n !!deleteRequest.success,\n { from: false, to: true },\n );\n\n useNotifyWhenValueChanges(\n { title: \"We had an error\", message: deleteRequest.error || \"\", severity: \"error\" },\n !!deleteRequest.error,\n { from: false, to: true },\n );\n\n const handleClickListItem = detailsFeature\n ? (item: T) => {\n navigate(`${basePath}/${item.id}`);\n }\n : undefined;\n\n const handleClickListOption = (optionId: \"edit\" | \"remove\", item: T) => {\n if (optionId === \"edit\") {\n navigate(`${basePath}/${item.id}/update`);\n } else {\n onClickDeleteItem(item);\n }\n };\n\n const options: TableRowOption<T>[] = [];\n\n updateFeature &&\n options.push({\n id: \"edit\",\n label: \"Edit\",\n onClick: (item: T) => handleClickListOption(\"edit\", item),\n });\n\n deleteFeature &&\n options.push({\n id: \"remove\",\n label: \"Remove\",\n onClick: (item: T) => handleClickListOption(\"remove\", item),\n });\n\n const actions: HeaderAction[] = [];\n\n addFeature &&\n actions.push({\n id: \"add\",\n text: \"Add\",\n href: `${basePath}/add`,\n });\n\n return (\n <HeaderLayout loading={listRequest.loading || deleteRequest.loading}>\n <Header\n title={modelName}\n preset=\"default\"\n actions={actions.length > 0 ? actions : undefined}\n />\n <Content>\n <TableList\n columns={model.fields\n .filter(({ listable }) => listable)\n .map(({ id, name, type }) => ({\n disablePadding: false,\n id,\n label: name,\n numeric: type === \"number\",\n sort: false,\n }))}\n data={listData}\n defaultSort={model.fields[0].id}\n onClick={handleClickListItem}\n options={options.length > 0 ? options : undefined}\n />\n </Content>\n </HeaderLayout>\n );\n};\n","import { HeaderLayout } from \"../../header-layout\";\nimport { useNotifyWhenValueChanges } from \"../../notification-center\";\nimport { BaseScreenProps } from \"./screens.types\";\nimport { useNavigateWhenValueChanges } from \"../../hooks\";\nimport { Header } from \"../../header\";\nimport { Content } from \"../../content\";\nimport { BasicModelInstance } from \"../../generators\";\nimport { RequestState } from \"../../model-router\";\nimport { ModelForm } from \"../../model-form\";\n\nexport interface AddScreenProps<T extends BasicModelInstance> extends BaseScreenProps {\n /**\n * Callback executed when the user wants to\n * add a new item\n */\n onSubmitNewItem: (obj: T) => void;\n\n /**\n * Current status of the request to retrieve\n * add a new item\n */\n newItemRequest: RequestState;\n}\n\nexport const AddScreen = <T extends BasicModelInstance>({\n model,\n modelName,\n basePath = \"\",\n onSubmitNewItem,\n newItemRequest,\n}: AddScreenProps<T>) => {\n useNotifyWhenValueChanges(\n { message: \"Item added successfully\", severity: \"success\" },\n !!newItemRequest.success,\n { from: false, to: true },\n );\n useNavigateWhenValueChanges(`${basePath}/`, !!newItemRequest.success, { from: false, to: true });\n useNotifyWhenValueChanges(\n { title: \"We had an error\", message: newItemRequest.error || \"\", severity: \"error\" },\n !!newItemRequest.error,\n { from: false, to: true },\n );\n\n return (\n <HeaderLayout loading={newItemRequest.loading}>\n <Header\n title={`Add ${modelName}`}\n preset=\"default\"\n breadcrumbs={[\n {\n id: \"list\",\n text: modelName,\n link: `${basePath}/`,\n },\n {\n id: \"add\",\n text: `Add new ${modelName}`,\n link: `${basePath}/add`,\n },\n ]}\n />\n <Content>\n <ModelForm model={model} saveButtonText=\"Save\" onSubmit={onSubmitNewItem} />\n </Content>\n </HeaderLayout>\n );\n};\n","import { useEffect } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport { HeaderLayout } from \"../../header-layout\";\nimport { BaseScreenProps } from \"./screens.types\";\nimport { ObjectDetails } from \"../../object-details\";\nimport { Header } from \"../../header\";\nimport { Content } from \"../../content\";\nimport { RequestState } from \"../../model-router\";\nimport { BasicModelInstance } from \"../../generators\";\n\nexport interface DetailsScreenProps<T extends BasicModelInstance> extends BaseScreenProps {\n /**\n * Callback executed each time we want\n * the details information of an item\n */\n onRequestItem: (id: string) => void;\n\n /**\n * Current status of the request to retrieve\n * an item\n */\n itemRequest: RequestState;\n\n /**\n * Item to be displayed\n */\n detailsItem?: T;\n}\n\nexport const DetailsScreen = <T extends BasicModelInstance>({\n model,\n modelName,\n basePath = \"\",\n onRequestItem,\n itemRequest,\n detailsItem,\n}: DetailsScreenProps<T>) => {\n const { id = \"\" } = useParams();\n\n useEffect(() => {\n onRequestItem(id);\n }, [id]);\n\n return (\n <HeaderLayout loading={itemRequest.loading}>\n <Header\n title={id}\n preset=\"default\"\n breadcrumbs={[\n {\n id: \"list\",\n text: modelName,\n link: `${basePath}/`,\n },\n {\n id: \"detail\",\n text: id,\n link: `${basePath}/${id}`,\n },\n ]}\n />\n <Content>{detailsItem && <ObjectDetails model={model} instance={detailsItem} />}</Content>\n </HeaderLayout>\n );\n};\n","import Grid from \"@mui/material/Grid\";\nimport Button from \"@mui/material/Button\";\nimport Typography from \"@mui/material/Typography\";\nimport DialogContentText from \"@mui/material/DialogContentText\";\nimport { Variant } from \"@mui/material/styles/createTypography\";\nimport { ReactElement } from \"react\";\nimport { ActionHeader } from \"./action-header\";\nimport { ConfirmDialog } from \"../confirm-dialog\";\nimport { useDialog } from \"../dialog\";\n\nexport type ActionVariant = \"primary\" | \"error\" | \"warning\" | \"success\";\n\nexport interface ActionProps {\n variant: ActionVariant;\n title: string;\n titleVariant?: Extract<Variant, \"h4\" | \"h5\" | \"h6\">;\n description?: string | ReactElement;\n descriptionVariant?: Variant;\n helperText?: string;\n helperTextVariant?: Variant;\n buttonText: string;\n confirmable?: boolean;\n confirmTitle?: string;\n confirmDescription?: string;\n passphrase?: string;\n onAction: () => void;\n}\n\nexport const Action = ({\n variant = \"primary\",\n title,\n titleVariant = \"h4\",\n description,\n descriptionVariant = \"body2\",\n buttonText,\n helperText,\n helperTextVariant = \"caption\",\n confirmable,\n passphrase,\n confirmTitle = \"\",\n confirmDescription = \"\",\n onAction,\n}: ActionProps) => {\n const { isOpen, open, close } = useDialog();\n\n const handleClickActionButton = () => {\n if (confirmable) {\n open();\n } else {\n onAction();\n }\n };\n\n const handleConfirmDialog = () => {\n onAction();\n close;\n };\n\n return (\n <>\n <Grid container spacing={1}>\n <Grid item xs={12} mb={2}>\n <ActionHeader title={title} titleVariant={titleVariant} />\n </Grid>\n {description && (\n <Grid item xs={12}>\n <Typography variant={descriptionVariant}>{description}</Typography>\n </Grid>\n )}\n <Grid item xs={12} mt={1}>\n <Button color={variant} variant=\"contained\" onClick={handleClickActionButton}>\n {buttonText}\n </Button>\n </Grid>\n {helperText && (\n <Grid item xs={12}>\n <Typography variant={helperTextVariant}>{helperText}</Typography>\n </Grid>\n )}\n </Grid>\n <ConfirmDialog\n open={isOpen}\n title={confirmTitle}\n passphrase={passphrase}\n onCancel={close}\n onConfirm={handleConfirmDialog}\n >\n <DialogContentText>{confirmDescription}</DialogContentText>\n </ConfirmDialog>\n </>\n );\n};\n","import MuiAutocomplete, {\n AutocompleteProps as MuiAutocompleteProps,\n} from \"@mui/material/Autocomplete\";\nimport React from \"react\";\nimport { TextField } from \"../text-field\";\nimport { ChipTypeMap } from \"@mui/material/Chip\";\n\nexport interface AutocompleteProps<\n T,\n Multiple extends boolean | undefined,\n DisableClearable extends boolean | undefined,\n FreeSolo extends boolean | undefined,\n ChipComponent extends React.ElementType = ChipTypeMap[\"defaultComponent\"],\n> extends Omit<\n MuiAutocompleteProps<T, Multiple, DisableClearable, FreeSolo, ChipComponent>,\n \"renderInput\" | \"onChange\" | \"color\"\n > {\n label: string;\n helperText?: string;\n color?: string;\n fetching?: boolean;\n onChangeValue?: (value: T) => void;\n}\n\nexport const Autocomplete = <\n T,\n Multiple extends boolean | undefined,\n DisableClearable extends boolean | undefined,\n FreeSolo extends boolean | undefined,\n ChipComponent extends React.ElementType = ChipTypeMap[\"defaultComponent\"],\n>(\n props: AutocompleteProps<T, Multiple, DisableClearable, FreeSolo, ChipComponent>,\n) => {\n const {\n label,\n loading,\n fetching,\n options,\n helperText,\n color,\n onChangeValue = () => null,\n sx,\n ...rest\n } = props;\n const loadingOrFetching = loading || fetching;\n\n return (\n <MuiAutocomplete\n loading={loadingOrFetching}\n options={fetching ? [] : options}\n onChange={(_, value) => onChangeValue(value as T)}\n {...(rest as any)}\n renderInput={(params) => (\n <TextField\n {...params}\n label={label}\n fullWidth\n fetching={fetching}\n loading={loading}\n hexColor={color}\n helperText={helperText}\n />\n )}\n sx={sx}\n />\n );\n};\n","import Container from \"@mui/material/Container\";\nimport { PropsWithChildren } from \"react\";\nimport { SkeletonGrid } from \"../skeleton-grid\";\n\nexport type ContentPlaceholderProps = PropsWithChildren<{\n size?: number;\n p?: number;\n}>;\n\nexport const ContentPlaceholder = ({ size = 20, children, p }: ContentPlaceholderProps) => {\n return (\n <Container component=\"main\" sx={{ p }} data-testid=\"content-placeholder-test\">\n {children}\n <SkeletonGrid size={size} />\n </Container>\n );\n};\n","import { useState } from \"react\";\nimport { format } from \"date-fns\";\nimport Collapse from \"@mui/material/Collapse\";\nimport IconButton from \"@mui/material/IconButton\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport TextField from \"@mui/material/TextField\";\nimport Paper from \"@mui/material/Paper\";\nimport EventIcon from \"@mui/icons-material/Event\";\nimport { DateRangeCalendar } from \"../date-range-calendar\";\n\ntype DateRange = [Date, Date | undefined];\nexport interface DateRangePickerProps {\n label: string;\n defaultValue: DateRange;\n format: string;\n fullWidth?: boolean;\n size?: \"small\" | \"medium\";\n onValueChange: (value: DateRange, index: number) => void;\n}\n\nexport const DateRangePicker = ({\n defaultValue,\n format: fmt,\n label,\n fullWidth,\n onValueChange,\n size = \"medium\",\n}: DateRangePickerProps) => {\n const [isPopoverOpened, setIsPopoverOpened] = useState(false);\n const [value, setValue] = useState(defaultValue);\n\n const handleValueChange = (newValue: DateRange, index: number) => {\n setValue(newValue);\n onValueChange(newValue, index);\n setIsPopoverOpened(index < 1);\n };\n\n return (\n <>\n <TextField\n label={label}\n fullWidth={fullWidth}\n size={size}\n value={`${format(value[0], fmt)} - ${value[1] ? format(value[1], fmt) : fmt.toUpperCase()}`}\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton onClick={() => setIsPopoverOpened((o) => !o)} aria-label=\"open calendar\">\n <EventIcon />\n </IconButton>\n </InputAdornment>\n ),\n }}\n />\n <Paper>\n <Collapse in={isPopoverOpened} aria-label=\"calendar collapse\">\n <DateRangeCalendar defaultValue={defaultValue} onValueChange={handleValueChange} />\n </Collapse>\n </Paper>\n </>\n );\n};\n","import { DrawerSection } from \"../drawer-section\";\nimport { DrawerContentComponent, DrawerContentProps } from \"../drawer\";\n\n/**\n * Content to be shown inside a navigation\n */\nexport const DrawerContent: DrawerContentComponent = ({\n nav: { items },\n size = \"medium\",\n}: DrawerContentProps) => {\n return (\n <>\n {items.map(({ title, items }, i) => (\n <DrawerSection key={i} title={title} items={items} size={size} />\n ))}\n </>\n );\n};\n","import { ReactNode } from \"react\";\nimport { DrawerProvider, DrawerProviderProps } from \"../drawer-provider\";\nimport { DrawerMain } from \"../drawer-main\";\nimport { DrawerAppBarElement, DrawerElement } from \"../drawer/drawer.types\";\n\nexport interface DrawerLayoutProps {\n drawerProviderProps?: DrawerProviderProps;\n children: [DrawerElement, DrawerAppBarElement, ReactNode];\n}\n\nexport const DrawerLayout = ({\n drawerProviderProps,\n children: childrenProps,\n}: DrawerLayoutProps) => {\n const [appBar, drawer, children] = childrenProps;\n\n return (\n <DrawerProvider {...drawerProviderProps}>\n {appBar}\n {drawer}\n <DrawerMain>{children}</DrawerMain>\n </DrawerProvider>\n );\n};\n","import { ReactNode, useState } from \"react\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport TableBody from \"@mui/material/TableBody\";\nimport Table from \"@mui/material/Table\";\nimport TableRow from \"@mui/material/TableRow\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport TableCell from \"@mui/material/TableCell\";\nimport { EnhancedTableHead, HeadCell, Order } from \"../enhanced-table\";\n\nexport interface EnhancedRemoteTableProps<T> {\n data: T[];\n loading: boolean;\n defaultSort: keyof T;\n defaultOrder?: Order;\n columns: HeadCell<T>[];\n children: (data: T, index: number) => ReactNode;\n onRequestSort: (col: keyof T, orderBy: \"asc\" | \"desc\") => void;\n}\n\nexport const EnhancedRemoteTable = <T,>({\n children,\n data,\n loading,\n columns,\n defaultSort,\n defaultOrder,\n onRequestSort,\n}: EnhancedRemoteTableProps<T>) => {\n const [order, setOrder] = useState({\n orderBy: defaultSort,\n order: defaultOrder || \"asc\",\n });\n\n const handleRequestSort = (property: keyof T) => {\n setOrder(({ orderBy, order }) => {\n const newOrder = orderBy === property && order === \"asc\" ? \"desc\" : \"asc\";\n onRequestSort(property, newOrder);\n\n return {\n orderBy: property,\n order: newOrder,\n };\n });\n };\n\n return (\n <>\n <TableContainer>\n <Table>\n <EnhancedTableHead\n order={order.order}\n orderBy={order.orderBy}\n headCells={columns}\n onRequestSort={handleRequestSort}\n />\n <TableBody>\n {loading ? (\n <TableRow>\n <TableCell colSpan={columns.length} sx={{ textAlign: \"center\" }}>\n <CircularProgress />\n </TableCell>\n </TableRow>\n ) : (\n data.map((d, i) => children(d, i))\n )}\n </TableBody>\n </Table>\n </TableContainer>\n </>\n );\n};\n","import { BootstrapDialog } from \"../bootstrap-dialog\";\nimport { FormEvent } from \"react\";\nimport { BootstrapDialogDialogProps } from \"../dialog\";\nimport { getFormData } from \"../utils/forms\";\n\ntype OmitBaseDialogProps =\n | \"cancelable\"\n | \"acceptable\"\n | \"onAccept\"\n | \"onCancel\"\n | \"onClose\"\n | \"actions\"\n | \"callCloseWhenCancel\"\n | \"component\"\n | \"acceptType\";\nexport interface FormDialogProps<T> extends Omit<BootstrapDialogDialogProps, OmitBaseDialogProps> {\n submitText?: string;\n canceText?: string;\n onCancel: () => void;\n onSubmit: (data: T) => void;\n}\n\nexport const FormDialog = <T,>({\n open,\n title,\n loading,\n disabled,\n submitText = \"Submit\",\n cancelText = \"Cancel\",\n children,\n onSubmit,\n onCancel,\n}: FormDialogProps<T>) => {\n const handleSubmit = (e: FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n onSubmit(getFormData<T>(e));\n };\n\n return (\n <BootstrapDialog\n component=\"form\"\n componentProps={{\n onSubmit: handleSubmit,\n }}\n title={title}\n loading={loading}\n disabled={loading || disabled}\n open={open}\n onClose={onCancel}\n callCloseWhenCancel={false}\n cancelable\n acceptable\n cancelText={cancelText}\n onCancel={onCancel}\n acceptText={submitText}\n acceptType=\"submit\"\n >\n {children}\n </BootstrapDialog>\n );\n};\n","export interface RequestState {\n idle?: boolean;\n loading?: boolean;\n error?: string;\n success?: boolean;\n}\n\nexport const IdleRequest: RequestState = {\n idle: true,\n};\n\nexport const LoadingRequest: RequestState = {\n loading: true,\n};\n\nexport const SuccessRequest: RequestState = {\n success: true,\n};\n","import Grid from \"@mui/material/Grid\";\nimport List from \"@mui/material/List\";\nimport ListItemButton from \"@mui/material/ListItemButton\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport Paper from \"@mui/material/Paper\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport { useTheme } from \"@mui/material\";\nimport { PropsWithChildren, useState } from \"react\";\nimport { useGetDefaultThemeColor } from \"../utils\";\nimport { ListPanelContextProvider } from \"./list-panel.context\";\nimport { grey } from \"@mui/material/colors\";\n\nexport interface ListPanelItem {\n id: string;\n text: string;\n tooltip?: string;\n}\n\nexport type ListPanelProps = PropsWithChildren<{\n defaultSelectedItem?: string;\n items: ListPanelItem[];\n colBreakpoint?: number;\n onSelectedItemChange?: (id: string) => void;\n}>;\n\nexport const ListPanel = ({\n items,\n defaultSelectedItem,\n colBreakpoint = 3,\n children,\n onSelectedItemChange = () => null,\n}: ListPanelProps) => {\n const bgColor = useGetDefaultThemeColor();\n const { palette, typography } = useTheme();\n const [selectedItem, setSelectedItem] = useState(defaultSelectedItem);\n\n const handleSelectItem = (id: string) => {\n setSelectedItem(id);\n onSelectedItemChange(id);\n };\n\n return (\n <ListPanelContextProvider value={selectedItem}>\n <Grid container bgcolor={bgColor} height={1}>\n <Grid item xs={colBreakpoint} pl={1} height={1}>\n <List sx={{ height: 1, overflowY: \"auto\" }}>\n {items.map(({ id, text, tooltip }) => {\n const selected = id === selectedItem;\n\n const contentEl = (\n <ListItemButton\n key={id}\n dense\n selected={selected}\n onClick={() => handleSelectItem(id)}\n aria-label={text}\n sx={{ backgroundColor: selected ? `${palette.grey[300]} !important` : undefined }}\n >\n <ListItemText\n primary={text}\n primaryTypographyProps={{\n fontWeight: selected ? typography.fontWeightMedium : undefined,\n color: selected ? typography.body1.color : grey[600],\n }}\n />\n </ListItemButton>\n );\n\n return tooltip ? (\n <Tooltip key={id} title={tooltip} enterDelay={1500} placement=\"right\">\n {contentEl}\n </Tooltip>\n ) : (\n contentEl\n );\n })}\n </List>\n </Grid>\n <Grid item xs={12 - colBreakpoint} pl={1} py={1} pr={1}>\n <Paper\n elevation={0}\n sx={{\n width: 1,\n height: 1,\n backgroundColor: palette.background.paper,\n }}\n >\n {children}\n </Paper>\n </Grid>\n </Grid>\n </ListPanelContextProvider>\n );\n};\n","import Typography from \"@mui/material/Typography\";\nimport { Variant } from \"@mui/material/styles/createTypography\";\nimport { loremIpsum } from \"lorem-ipsum\";\nimport { LoremUnit } from \"lorem-ipsum/types/src/constants/units\";\n\nexport interface LoremIpsumPlaceholderProps {\n count?: number;\n units?: LoremUnit;\n variant?: Variant;\n}\n\nexport const LoremIpsumPlaceholder = ({\n count = 3,\n units = \"paragraph\",\n variant = \"body1\",\n}: LoremIpsumPlaceholderProps) => {\n return (\n <Typography variant={variant}>\n {loremIpsum({\n count,\n units,\n })}\n </Typography>\n );\n};\n","import { Routes, Route } from \"react-router-dom\";\nimport { BasicModelInstance } from \"../generators\";\nimport {\n AddScreen,\n AddScreenProps,\n DetailsScreen,\n DetailsScreenProps,\n ListScreen,\n ListScreenProps,\n UpdateScreen,\n UpdateScreenProps,\n} from \"./screens\";\n\nexport type ModelRouterProps<T extends BasicModelInstance> = DetailsScreenProps<T> &\n ListScreenProps<T> &\n AddScreenProps<T> &\n UpdateScreenProps<T>;\n\nexport const ModelRouter = <T extends BasicModelInstance>(props: ModelRouterProps<T>) => {\n const { updateFeature = true, addFeature = true, detailsFeature = true } = props;\n return (\n <Routes>\n <Route path=\"\" element={<ListScreen {...props} />} />\n {detailsFeature && <Route path=\":id\" element={<DetailsScreen {...props} />} />}\n {addFeature && <Route path=\"add\" element={<AddScreen {...props} />} />}\n {updateFeature && <Route path=\":id/update\" element={<UpdateScreen {...props} />} />}\n </Routes>\n );\n};\n","import { useState, PropsWithChildren } from \"react\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport Alert from \"@mui/material/Alert\";\nimport AlertTitle from \"@mui/material/AlertTitle\";\nimport { Notification, NotificationCenterContext } from \"./notification-center.context\";\n\nexport type NotificationCenterProviderProps = PropsWithChildren<{\n autoHideDuration?: number;\n}>;\n\nexport const NotificationCenterProvider = ({\n children,\n autoHideDuration = 6000,\n}: NotificationCenterProviderProps) => {\n const [notification, setNotification] = useState<Notification | undefined>(undefined);\n const [open, setOpen] = useState(false);\n const show = (notification: Notification) => {\n setNotification(notification);\n setOpen(true);\n };\n\n const hide = () => {\n setOpen(false);\n };\n\n return (\n <NotificationCenterContext.Provider\n value={{\n show,\n hide,\n }}\n >\n <Snackbar\n open={open}\n autoHideDuration={autoHideDuration}\n onClose={hide}\n anchorOrigin={{ vertical: \"top\", horizontal: \"right\" }}\n >\n <Alert\n onClose={hide}\n severity={notification?.severity}\n aria-label={notification?.severity}\n sx={{ width: \"100%\" }}\n >\n {notification?.title && <AlertTitle>{notification?.title}</AlertTitle>}\n {notification?.message}\n </Alert>\n </Snackbar>\n {children}\n </NotificationCenterContext.Provider>\n );\n};\n","import Alert from \"@mui/material/Alert\";\nimport AlertTitle from \"@mui/material/AlertTitle\";\nimport Box from \"@mui/material/Box\";\nimport LinearProgress from \"@mui/material/LinearProgress\";\nimport { PropsWithChildren } from \"react\";\nimport { LoadingArea } from \"../loading-area\";\n\nexport interface QueryContainerError {\n /**\n * The error title\n */\n name?: string;\n /**\n * The description of the error\n */\n message: string;\n}\n\nexport interface QueryContainerSuccess {\n /**\n * The success title\n */\n name?: string;\n /**\n * The success text\n */\n message: string;\n}\n\nexport type QueryContainerProps = PropsWithChildren<{\n /**\n * There is a query in progress and we have available data\n */\n fetching?: boolean | boolean[];\n\n /**\n * There is a query in progress and we don't have available data\n */\n loading?: boolean | boolean[];\n /**\n * The query has returned an error\n */\n error?: QueryContainerError;\n /**\n * The query has finished successfully\n */\n success?: QueryContainerSuccess;\n}>;\n\n/**\n * Component to show different indicators based on the usual api query statuses\n */\nexport function QueryContainer({\n fetching: fetchingProp = false,\n loading: loadingProp = false,\n error,\n success,\n children,\n}: QueryContainerProps) {\n const fetching = Array.isArray(fetchingProp) ? fetchingProp.some((f) => f) : fetchingProp;\n const loading = Array.isArray(loadingProp) ? loadingProp.some((f) => f) : loadingProp;\n\n if (loading) {\n return <LoadingArea />;\n }\n\n if (error) {\n return (\n <Alert severity=\"error\" role=\"alert\" aria-describedby=\"error\">\n {error.name && <AlertTitle role=\"heading\">{error.name}</AlertTitle>}\n {error.message}\n </Alert>\n );\n }\n\n return (\n <Box>\n {success && (\n <Alert severity=\"success\" role=\"alert\" aria-describedby=\"success\" sx={{ mb: 2 }}>\n {success.name && <AlertTitle role=\"heading\">{success.name}</AlertTitle>}\n {success.message}\n </Alert>\n )}\n {fetching && <LinearProgress sx={{ width: 1, mb: 1 }} />}\n {children}\n </Box>\n );\n}\n","import { FormEvent, useState } from \"react\";\nimport Stack from \"@mui/material/Stack\";\nimport Box from \"@mui/material/Box\";\nimport TextField from \"@mui/material/TextField\";\nimport Typography from \"@mui/material/Typography\";\nimport Alert from \"@mui/material/Alert\";\nimport LoadingButton from \"@mui/lab/LoadingButton\";\n\nexport interface SignInProps {\n title: string;\n subtitle: string;\n error?: Error;\n loading?: boolean;\n onSubmitSignIn: (email: string, password: string) => void;\n}\n\nexport const SignIn = ({ title, subtitle, loading, error, onSubmitSignIn }: SignInProps) => {\n const [emailError, setEmailError] = useState(\"\");\n const [passwordError, setPasswordError] = useState(\"\");\n\n function handleSubmit(e: FormEvent<HTMLFormElement>) {\n e.preventDefault();\n setEmailError(\"\");\n setPasswordError(\"\");\n\n const data = new FormData(e.currentTarget);\n const email = data.get(\"email\")?.toString();\n const password = data.get(\"password\")?.toString();\n\n if (!email) {\n setEmailError(\"Please fill out this field\");\n }\n\n if (!password) {\n setPasswordError(\"Please fill out this field\");\n }\n\n if (email && password) {\n onSubmitSignIn(email, password);\n }\n }\n\n return (\n <>\n <Box marginBottom={2}>\n <Typography component=\"h1\" variant=\"h4\">\n {title}\n </Typography>\n <Typography variant=\"body1\">{subtitle}</Typography>\n </Box>\n <Box component=\"form\" onSubmit={handleSubmit}>\n {error && (\n <Stack width=\"100%\" marginTop={1}>\n <Alert variant=\"filled\" severity=\"error\">\n {error.message}\n </Alert>\n </Stack>\n )}\n <TextField\n margin=\"normal\"\n fullWidth\n id=\"email\"\n label=\"Email Address\"\n name=\"email\"\n autoComplete=\"email\"\n autoFocus\n disabled={loading}\n type=\"email\"\n inputProps={{ role: \"input\" }}\n error={!!emailError}\n helperText={emailError}\n />\n <TextField\n margin=\"normal\"\n fullWidth\n role=\"input\"\n name=\"password\"\n label=\"Password\"\n type=\"password\"\n id=\"password\"\n disabled={loading}\n autoComplete=\"current-password\"\n inputProps={{ role: \"input\" }}\n error={!!passwordError}\n helperText={passwordError}\n />\n <LoadingButton\n type=\"submit\"\n fullWidth\n variant=\"contained\"\n loading={loading}\n disabled={loading}\n role=\"button\"\n sx={{ mt: 2 }}\n >\n Sign In\n </LoadingButton>\n </Box>\n </>\n );\n};\n","import { PropsWithChildren, useContext } from \"react\";\nimport { TabCardContext } from \"./tab-card.context\";\nimport { SxProps, Theme } from \"@mui/material\";\nimport Box from \"@mui/material/Box\";\n\nexport type TabCardPanelProps = PropsWithChildren<{\n index: number | number[];\n sx?: SxProps<Theme>;\n}>;\n\nexport const TabCardPanel = ({ index, children, sx }: TabCardPanelProps) => {\n const [value] = useContext(TabCardContext);\n let isTab = value === index;\n if (Array.isArray(index)) {\n isTab = index.includes(value);\n }\n\n return isTab ? <Box sx={sx}>{children}</Box> : null;\n};\n","import Box from \"@mui/material/Box\";\nimport { useTab } from \"../tab-provider\";\n\ninterface TabPanelProps {\n children?: React.ReactNode;\n index: number | number[];\n}\n\nexport function TabPanel({ children, index }: TabPanelProps) {\n const [value] = useTab();\n let isTab = value === index;\n if (Array.isArray(index)) {\n isTab = index.includes(value);\n }\n\n return (\n <div\n role=\"tabpanel\"\n hidden={!isTab}\n id={`simple-tabpanel-${index}`}\n aria-labelledby={`simple-tab-${index}`}\n >\n {isTab && <Box sx={{ p: 3 }}>{children}</Box>}\n </div>\n );\n}\n","import Paper from \"@mui/material/Paper\";\nimport { PropsWithChildren } from \"react\";\n\nexport type ValueCardProps = PropsWithChildren;\n\n/**\n * Container to show a labeled value\n */\nexport const ValueCard = ({ children }: ValueCardProps) => {\n return <Paper sx={{ p: 2 }}>{children}</Paper>;\n};\n","import { BaseValueProps, DefaultPlaceholder } from \"../value-base\";\nimport { getValueContentLabelId, ValueContent } from \"../value-content\";\nimport { Label, LabelVariant } from \"../label\";\nimport Grid from \"@mui/material/Grid\";\n\nexport type ValueLabelProps = BaseValueProps<string | number | string[] | number[]> & {\n variant: LabelVariant | LabelVariant[];\n};\n\n/**\n * Displays a label component value with a label\n */\nexport const ValueLabel = ({\n label,\n value: valueProp,\n placeholder = DefaultPlaceholder,\n variant,\n}: ValueLabelProps) => {\n const id = getValueContentLabelId(label);\n let value;\n\n Array.isArray(valueProp)\n ? (value = valueProp.map((value, i) => (\n <Label\n text={value.toString() || placeholder}\n variant={Array.isArray(variant) ? variant[i] : variant}\n key={i}\n />\n )))\n : (value = (\n <Label\n text={valueProp?.toString() || placeholder}\n variant={Array.isArray(variant) ? variant[0] : variant}\n />\n ));\n\n return (\n <ValueContent label={label}>\n <Grid container gap={1} aria-labelledby={id}>\n {value}\n </Grid>\n </ValueContent>\n );\n};\n","import Box from \"@mui/material/Box\";\nimport Rating from \"@mui/material/Rating\";\nimport { useEditableValueDisplay, ValueEditButton, ValueEditButtons } from \"../value-base\";\nimport { BaseValueProps, EditableValueProps } from \"../value-base\";\nimport { getValueContentLabelId, ValueContent } from \"../value-content\";\n\nexport type ValueRatingProps = BaseValueProps<number> & {\n maxRating?: number;\n} & EditableValueProps<number>;\n\n/**\n * Displays a number using stars\n */\nexport const ValueRating = ({\n label,\n value = 0,\n maxRating = 5,\n editable,\n dense,\n onEdit = () => null,\n}: ValueRatingProps) => {\n const { isEditing, editValue, startEdit, cancelEdit, setEditValue, submitEdit } =\n useEditableValueDisplay(value, onEdit);\n const id = getValueContentLabelId(label);\n\n return (\n <ValueContent label={label} tooltip={value.toString()} dense={dense}>\n <Box display=\"flex\" alignItems=\"center\">\n <Rating\n aria-labelledby={id}\n readOnly={!isEditing}\n max={maxRating}\n size={dense ? \"small\" : \"medium\"}\n value={isEditing ? editValue : value}\n onChange={(e, newValue) => {\n if (Number.isNaN(newValue) && (e.currentTarget as any).value) {\n setEditValue(parseInt((e.currentTarget as any).value, 10));\n } else if (newValue) {\n setEditValue(newValue);\n }\n }}\n />\n {editable && !isEditing && <ValueEditButton dense={dense} onClick={startEdit} />}\n {isEditing && <ValueEditButtons onClickCancel={cancelEdit} onClickSubmit={submitEdit} />}\n </Box>\n </ValueContent>\n );\n};\n"],"names":["markdownDefaultOptions","overrides","h1","component","Typography","props","gutterBottom","variant","h2","h3","h4","paragraph","p","a","Link","li","Markdown","content","options","_jsx","ReactMarkdown","children","Board","markdown","markdownProps","contentProp","spacing","sx","themeSpacing","typography","useTheme","copyContent","Array","isArray","map","line","i","jsx","pb","join","Paper","position","pl","pr","py","backgroundColor","blueGrey","color","_jsxs","Box","display","flexDirection","width","top","right","IconButton","onClick","navigator","clipboard","writeText","Tooltip","title","ContentCopyIcon","fontSize","pxToRem","alertSx","alertClasses","message","ExpandableAlert","forwardRef","severity","iconMapping","metadata","metadataComponent","onClose","ref","expanded","setExpanded","useState","Alert","action","CloseIcon","e","ExpandLessIcon","ExpandMoreIcon","w","AlertTitle","Collapse","in","mt","Content","Container","flexGrow","CenterContainer","centerVertical","centerHorizontal","height","justifyContent","alignItems","newArrayWithSize","size","fillValue","fill","useGetDefaultThemeColor","lightWeight","darkWeight","palette","mode","grey","newBreakpointsCounter","breakpoint","calculateBreakpointIncrement","breakpointsCounter","key","value","initialValue","xs","sm","md","lg","xl","increment","smInc","mdInc","lgInc","xlInc","this","getFormData","data","FormData","currentTarget","rawData","forEach","ListPanelContext","createContext","undefined","ListPanelContextProvider","Provider","bulletClasses","root","Bullet","Badge","className","role","Label","text","textTransform","default","primary","light","secondary","info","warning","error","success","textColor","getContrastText","contrastText","minWidth","bgcolor","caption","fontWeight","fontWeightBold","lineHeight","whiteSpace","borderRadius","px","cursor","LinkBehaviour","href","other","RouterLink","to","_1","MuiLink","TabContext","TabContextProvider","useTab","useContext","TabProvider","tabState","HeaderTitle","loading","CircularProgress","_Fragment","Fragment","HeaderSubtitle","body1","Header","loadingTitle","subtitle","loadingSubtitle","preset","actionsVariant","breadcrumbs","actions","tabs","tabsMode","navigationButton","location","useLocation","defaultColor","selectedTab","setSelectedTab","bgColorPresets","main","inherit","transparent","bgColor","modedSelectedTab","findIndex","tab","pathname","Button","LinkComponent","startIcon","icon","mb","length","Breadcrumbs","separator","marginTop","id","link","underline","disabled","mr","Tabs","onChange","_","index","label","tabProps","Tab","BootstrapDialog","open","componentProps","disableAccept","disableCancel","cancelable","callCloseWhenCancel","acceptable","acceptText","cancelText","onAccept","onCancel","acceptType","hasActions","Dialog","jsxs","DialogTitle","ml","theme","DialogContent","dividers","DialogActions","type","LoadingButton","ConfirmDialog","confirmText","passphrase","onConfirm","inputPassphrase","setInputPassphrase","validPassphrase","TextField","fullWidth","target","placeholder","useDialog","intialOpen","isOpen","setIsOpen","close","DrawerContext","UndefinedProvider","Error","useDrawer","context","openedMixin","transition","transitions","create","easing","sharp","duration","enteringScreen","overflowX","closedMixin","leavingScreen","breakpoints","up","DrawerHeader","styled","padding","mixins","toolbar","showCloseButton","temporary","mini","persistent","clipped","muiDrawerVariant","NoopSxGenerator","variantsSx","state","boxSizing","paperClasses","zIndex","drawer","initialState","targetStates","DrawerProvider","initialStateProp","drawerWidth","drawerWidthProp","underAppBar","selectedItemId","onStateChange","setState","handleChangeState","newState","switchState","collapse","DrawerSubheader","ListSubheader","shouldForwardProp","prop","getDrawerItemColors","selected","fontWeightMedium","StyledLink","sxCollapsedIcon","marginRight","DrawerItemLink","avatar","bullet","level","ListItemButton","dense","paddingHorizontal","ListItemIcon","ListItemAvatar","Avatar","alt","src","ListItemText","disableTypography","opacity","DrawerItem","item","items","childrenSelected","some","DrawerMenuItem","anchorEl","useRef","menuOpen","setMenuOpen","submenu","List","disablePadding","collapsedButtonSx","o","hover","ChevronRightIcon","timeout","unmountOnExit","Popover","PaperProps","elevation","current","anchorOrigin","vertical","horizontal","DrawerSection","paddingTop","paddingY","moveWithDrawer","showMenuButton","drawerSpace","StyledDiv","marginLeft","DrawerMain","LoadingArea","ProgressSize","small","medium","globalId","maybeReactUseId","React","toString","useId","idOverride","reactId","defaultId","setDefaultId","useEffect","useGlobalId","overrideId","InputLabelProps","InputProps","fetching","helperText","hexColor","rest","helperTextId","inputLabelId","hexColorSx","outlinedInputClasses","notchedOutline","borderColor","inputLabelClasses","input","circularProgressClasses","linearProgressClasses","bar","autocompleteClasses","endAdornment","iconButtonClasses","FormControl","InputLabel","htmlFor","OutlinedInput","InputAdornment","LinearProgress","left","bottom","FormHelperText","CustomPickersDayBackground","dayIsBetween","isFirstDay","isLastDay","margin","borderTopLeftRadius","borderBottomLeftRadius","borderTopRightRadius","borderBottomRightRadius","Day","day","dateRange","PickersDay","start","end","isAfter","isBefore","isSameDay","isStartOfWeek","startOfWeek","isEndOfWeek","endOfWeek","format","DateRangeCalendar","defaultValue","onValueChange","setValue","setIndex","setValueRange","newRange","newIndex","DateCalendar","newValue","slots","slotProps","ActionHeader","titleVariant","titleColor","borderBottom","TabCardContext","TabCardContextProvider","StyledTabs","TabIndicatorProps","minHeight","maxWidth","StyledTab","fontWeightRegular","paddingBottom","Placeholder","iconSize","textAlign","pt","SkeletonCard","animation","Skeleton","my","SkeletonGrid","Grid","container","chainPropTypes","propType1","propType2","process","env","NODE_ENV","args","module","exports","b","Symbol","for","c","d","f","g","h","k","l","m","n","q","r","t","v","x","y","z","u","$$typeof","A","reactIs_production_min","AsyncMode","ConcurrentMode","ContextProvider","Element","ForwardRef","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","require$$0","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","object","$$typeofType","ContextConsumer","Lazy","hasWarnedAboutDeprecatedIsAsyncMode","reactIs_development","console","isPortal","getOwnPropertySymbols","Object","hasOwnProperty","prototype","propIsEnumerable","propertyIsEnumerable","objectAssign","assign","test1","String","getOwnPropertyNames","test2","fromCharCode","test3","split","letter","keys","err","shouldUseNative","source","from","symbols","val","TypeError","toObject","s","arguments","call","ReactPropTypesSecret_1","has","Function","bind","ReactIs","propTypesModule","require$$1","ReactPropTypesSecret","require$$2","require$$3","checkPropTypes","printWarning","loggedTypeFailures","typeSpecs","values","componentName","getStack","typeSpecName","name","ex","stack","resetWarningCache","checkPropTypes_1","require$$4","emptyFunctionThatReturnsNull","factoryWithTypeCheckers","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","iterator","FAUX_ITERATOR_SYMBOL","ANONYMOUS","ReactPropTypes","array","createPrimitiveTypeChecker","bigint","bool","func","number","string","symbol","any","createChainableTypeChecker","arrayOf","typeChecker","propName","propFullName","PropTypeError","propValue","getPropType","element","elementType","instanceOf","expectedClass","expectedClassName","constructor","node","isNode","objectOf","propType","oneOf","expectedValues","is","valuesString","JSON","stringify","getPreciseType","oneOfType","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","push","expectedType","shape","shapeTypes","invalidValidatorError","exact","allKeys","validate","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","isRequired","secret","cacheKey","chainedCheckType","every","iteratorFn","maybeIterable","getIteratorFn","step","entries","next","done","entry","RegExp","isSymbol","Date","PropTypes","emptyFunction","emptyFunctionWithReset","factoryWithThrowingShims","shim","getShim","acceptingRef","safePropName","window","warningHint","Boolean","isReactComponent","isClassComponent","SuspenseList","isSuspenseList","getModuleId","REACT_MODULE_REFERENCE","REACT_SERVER_CONTEXT_TYPE","REACT_OFFSCREEN_TYPE","hasWarnedAboutDeprecatedIsConcurrentMode","Math","self","visuallyHidden","border","clip","overflow","isInteger","Number","isFinite","floor","requiredInteger","valueType","isNaN","getTypeByValue","RangeError","validator","validatorNoop","EnhancedTableHead","order","orderBy","headCells","onRequestSort","TableHead","TableRow","headCell","TableCell","sortDirection","sort","TableSortLabel","active","direction","property","descendingComparator","EnhancedTable","search","columns","defaultSort","defaultOrder","searchFilter","setSearchFilter","setOrder","setOrderBy","filteredData","slice","filter","col","toLowerCase","includes","getFilter","getComparator","paddingX","startAdornment","Search","TableContainer","Table","TableBody","colSpan","defaultProps","ValueEditButtons","onClickCancel","onClickSubmit","ClearIcon","paddingRight","CheckIcon","useEditableValueDisplay","onEdit","isEditing","setIsEditing","editValue","setEditValue","cancelEdit","startEdit","submitEdit","ValueEditButton","EditIcon","DefaultPlaceholder","getValueContentLabelId","replace","ValueContent","hideLabel","tooltip","tooltipEnterDelay","placement","enterDelay","ValueText","valueProp","editable","editInputRef","editKeyPressListener","addEventListener","removeEventListener","inputRef","marginY","noWrap","ValueBoolean","iconSx","h6","h5","Switch","checked","ValueDatetime","fmt","editInputType","EditPickerComponent","DateTimePicker","TimePicker","DatePicker","textField","params","GroupValueCard","centered","rowSpacing","valueItemClasses","ValueItem","bordered","borderLeft","borderStyle","noBorder","style","resolveBorderStyle","DefaultErrorIcon","ReportProblemIcon","HeaderLayout","headerElement","contentElement","NotificationCenterProviderUndefinedError","NotificationCenterContext","useNotificationCenter","useNotifyWhenValueChanges","notification","prevRef","show","singleDetailValueFactory","field","instance","ObjectArrayGroup","description","headerName","column","rows","DataGrid","density","disableRowSelectionOnClick","pageSizeOptions","pagination","paginationModel","pageSize","ObjectDetailGroup","ObjectDetails","model","fields","InitialStateZeroValue","boolean","enum","multienum","date","time","datetime","group","getFieldValueOrZero","newInstanceFromValuesOrZeroValue","obj","groupField","ModelFormField","path","update","onChangeValue","handleCheckboxChange","preventDefault","handleSelectChange","handleMultiSelectChange","handleInputChange","parseInt","handleDateChange","updatable","required","fieldInput","FormControlLabel","control","Checkbox","Select","labelId","fieldValue","MenuItem","renderValue","multiple","DesktopDatePicker","_isPlaceholder","_curry1","fn","f1","apply","_curry2","f2","_b","_a","_curry3","f3","_c","_isArray","_isInteger","isNil","assocPath","idx","nextObj","_has","arr","concat","result","_assoc","ModelForm","saveButtonText","onSubmit","initialValues","valuesInitialState","useMemo","setValues","setKeyValue","useNavigateWhenValueChanges","navigate","useNavigate","UpdateScreen","modelName","basePath","submitUpdateItemRequest","updateItemRequest","updateItem","onSubmitUpdateItem","onRequestUpdateItem","useParams","TableList","columnsProp","numeric","anchorMenuEl","setAnchorMenuEl","row","j","scope","event","stopPropagation","anchor","MoreVertIcon","Menu","transformOrigin","ListScreen","listData","listRequest","deleteRequest","deleteFeature","updateFeature","addFeature","detailsFeature","onRequestList","onClickDeleteItem","handleClickListItem","handleClickListOption","optionId","listable","AddScreen","onSubmitNewItem","newItemRequest","DetailsScreen","onRequestItem","itemRequest","detailsItem","descriptionVariant","buttonText","helperTextVariant","confirmable","confirmTitle","confirmDescription","onAction","DialogContentText","loadingOrFetching","MuiAutocomplete","renderInput","isPopoverOpened","setIsPopoverOpened","toUpperCase","EventIcon","flexShrink","drawerClasses","paper","MuiDrawer","ChevronLeftIcon","Divider","rootSx","MuiAppBar","Toolbar","edge","MenuIcon","nav","drawerProviderProps","childrenProps","appBar","newOrder","submitText","idle","defaultSelectedItem","colBreakpoint","onSelectedItemChange","selectedItem","setSelectedItem","overflowY","contentEl","handleSelectItem","primaryTypographyProps","background","count","units","loremIpsum","Routes","Route","autoHideDuration","setNotification","setOpen","hide","Snackbar","fetchingProp","loadingProp","StyledFormControl","MuiSelect","onSubmitSignIn","emailError","setEmailError","passwordError","setPasswordError","marginBottom","email","get","password","Stack","autoComplete","autoFocus","inputProps","initialTab","onChangeTab","iconPosition","disableRipple","isTab","hidden","gap","maxRating","Rating","readOnly","max","random"],"mappings":"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"}