@erpsquad/common 1.10.8-test → 1.10.9-test

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 (52) hide show
  1. package/dist/chunks/{ai-summary-D9QajB4_.js → ai-summary-4NVNEHfi.js} +2 -2
  2. package/dist/chunks/{ai-summary-D9QajB4_.js.map → ai-summary-4NVNEHfi.js.map} +1 -1
  3. package/dist/chunks/{ai-summary-FqAUpafL.esm.js → ai-summary-f8clWLbW.esm.js} +65 -44
  4. package/dist/chunks/{ai-summary-FqAUpafL.esm.js.map → ai-summary-f8clWLbW.esm.js.map} +1 -1
  5. package/dist/chunks/{android-12-switch-BVabRCje.esm.js → android-12-switch-BUbQYnRQ.esm.js} +53 -35
  6. package/dist/chunks/{android-12-switch-BVabRCje.esm.js.map → android-12-switch-BUbQYnRQ.esm.js.map} +1 -1
  7. package/dist/chunks/android-12-switch-CphTHRb8.js +2 -0
  8. package/dist/chunks/{android-12-switch-DMaoWQwq.js.map → android-12-switch-CphTHRb8.js.map} +1 -1
  9. package/dist/chunks/{appbar-6Ucw59ku.js → appbar-C6Es9HGk.js} +2 -2
  10. package/dist/chunks/{appbar-6Ucw59ku.js.map → appbar-C6Es9HGk.js.map} +1 -1
  11. package/dist/chunks/{appbar-mDf1LZ0u.esm.js → appbar-CKrHdx9n.esm.js} +2 -2
  12. package/dist/chunks/{appbar-mDf1LZ0u.esm.js.map → appbar-CKrHdx9n.esm.js.map} +1 -1
  13. package/dist/chunks/{default-data-CwLgBvlI.esm.js → default-data-BsZWgQGR.esm.js} +3 -3
  14. package/dist/chunks/{default-data-CwLgBvlI.esm.js.map → default-data-BsZWgQGR.esm.js.map} +1 -1
  15. package/dist/chunks/{default-data-D2cqOmp4.js → default-data-Dsjlvwev.js} +2 -2
  16. package/dist/chunks/{default-data-D2cqOmp4.js.map → default-data-Dsjlvwev.js.map} +1 -1
  17. package/dist/chunks/{fullScreen-VlXxoepU.js → fullScreen-BBpaDn-A.js} +2 -2
  18. package/dist/chunks/{fullScreen-VlXxoepU.js.map → fullScreen-BBpaDn-A.js.map} +1 -1
  19. package/dist/chunks/{fullScreen-B9d2_kak.esm.js → fullScreen-Dn-3Tkwm.esm.js} +2 -2
  20. package/dist/chunks/{fullScreen-B9d2_kak.esm.js.map → fullScreen-Dn-3Tkwm.esm.js.map} +1 -1
  21. package/dist/chunks/index-B9CFxEZ9.js +2 -0
  22. package/dist/chunks/index-B9CFxEZ9.js.map +1 -0
  23. package/dist/chunks/{index-iPYNYnNP.esm.js → index-wf5q5BST.esm.js} +73 -66
  24. package/dist/chunks/{index-iPYNYnNP.esm.js.map → index-wf5q5BST.esm.js.map} +1 -1
  25. package/dist/chunks/{migration-utils-TYitNMC7.js → migration-utils-9IXhe_fj.js} +2 -2
  26. package/dist/chunks/{migration-utils-TYitNMC7.js.map → migration-utils-9IXhe_fj.js.map} +1 -1
  27. package/dist/chunks/{migration-utils-BRjncD-b.esm.js → migration-utils-DGoEzQUj.esm.js} +2 -2
  28. package/dist/chunks/{migration-utils-BRjncD-b.esm.js.map → migration-utils-DGoEzQUj.esm.js.map} +1 -1
  29. package/dist/chunks/{sidebar-DJREtRnK.js → sidebar-B3SExDRU.js} +2 -2
  30. package/dist/chunks/{sidebar-DJREtRnK.js.map → sidebar-B3SExDRU.js.map} +1 -1
  31. package/dist/chunks/{sidebar-D_3INLNa.esm.js → sidebar-n9Y25HU-.esm.js} +2 -2
  32. package/dist/chunks/{sidebar-D_3INLNa.esm.js.map → sidebar-n9Y25HU-.esm.js.map} +1 -1
  33. package/dist/chunks/{sidebarScreen-CUf5Onkp.js → sidebarScreen-Dxb_e58p.js} +2 -2
  34. package/dist/chunks/{sidebarScreen-CUf5Onkp.js.map → sidebarScreen-Dxb_e58p.js.map} +1 -1
  35. package/dist/chunks/{sidebarScreen-CLjYZOzQ.esm.js → sidebarScreen-_Zt2pSOx.esm.js} +3 -3
  36. package/dist/chunks/{sidebarScreen-CLjYZOzQ.esm.js.map → sidebarScreen-_Zt2pSOx.esm.js.map} +1 -1
  37. package/dist/components/index.esm.js +121 -103
  38. package/dist/components/index.js +1 -1
  39. package/dist/index.esm.js +218 -200
  40. package/dist/index.js +1 -1
  41. package/dist/index.js.map +1 -1
  42. package/dist/layout/index.esm.js +2 -2
  43. package/dist/layout/index.js +1 -1
  44. package/dist/src/components/index.d.ts +18 -1
  45. package/dist/utils/index.esm.js +1 -1
  46. package/dist/utils/index.js +1 -1
  47. package/dist/views/index.esm.js +5 -5
  48. package/dist/views/index.js +1 -1
  49. package/package.json +1 -1
  50. package/dist/chunks/android-12-switch-DMaoWQwq.js +0 -2
  51. package/dist/chunks/index-BQ2NBHDS.js +0 -2
  52. package/dist/chunks/index-BQ2NBHDS.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"android-12-switch-BVabRCje.esm.js","sources":["../../src/components/accordion/accordion.tsx","../../src/components/view-modal/view-modal.tsx","../../src/components/header-card/header-card.tsx","../../src/components/toggle/toggle.tsx","../../src/components/filter/components/combinator-select.tsx","../../src/components/filter/components/remove-action.tsx","../../src/components/filter/components/field-select.tsx","../../src/components/filter/components/add-filter.tsx","../../src/components/filter/components/add-group.tsx","../../src/components/date-picker/date-picker.tsx","../../src/components/checkbox/checkbox.tsx","../../src/components/form-control/form-builder/form-builder-element/chip-or-placeholder.tsx","../../src/components/radio/radio.tsx","../../src/components/form-control/form-builder/form-builder-element/radio-button.tsx","../../src/components/parties-modal/utils/constant.ts","../../src/components/parties-modal/validator.tsx","../../src/hooks/useSetDefaultConfig.tsx","../../src/components/form-control/form-builder/form-builder-element/dynamic-select.tsx","../../src/components/phone-input/phone-input.tsx","../../src/components/form-control/form-builder/form-builder-element/phone.tsx","../../src/components/date-time-picker/date-time-picker.tsx","../../src/components/upload-media/upload-media.tsx","../../src/components/material-table/components/inline-edit-fields.tsx","../../src/components/material-table/material-table.tsx","../../src/components/loaders/modal-loader.tsx","../../src/components/parties-modal/parties-modal.tsx","../../src/components/form-control/form-builder/form-builder-element/select.tsx","../../src/components/form-control/form-builder/form-builder-element/button.tsx","../../src/components/form-control/form-builder/form-builder-element/checkbox.tsx","../../src/components/form-control/form-builder/form-builder-element/date.tsx","../../src/components/form-control/form-builder/form-builder-element/dynamic-currency-input.tsx","../../src/components/form-control/form-builder/form-builder-element/dynamic-element-hoc.tsx","../../src/components/form-control/form-builder/form-builder-element/dynamic-input-select.tsx","../../src/components/form-control/form-builder/form-builder-element/dynamic-tags-input.tsx","../../src/components/info-card/info-card.tsx","../../src/components/form-control/form-builder/form-builder-element/info.tsx","../../src/components/form-control/form-builder/form-builder-element/media.tsx","../../src/components/form-control/form-builder/form-builder-element/section.tsx","../../node_modules/flatted/esm/index.js","../../src/components/form-control/form-builder/form-builder-element/table.tsx","../../src/components/time-picker/time-picker.tsx","../../src/components/form-control/form-builder/form-builder-element/time.tsx","../../src/components/toggle-switch/toggle-switch.tsx","../../src/components/form-control/form-builder/form-builder-element/toggle-button.tsx","../../src/components/tabs/tabs.tsx","../../src/components/alert/alert.tsx","../../src/components/chip-generator/chip-generator.tsx","../../src/components/location-select.tsx","../../src/components/form-control/form-parser/form-switcher.tsx","../../src/components/form-control/form-parser/form-section.tsx","../../src/components/form-control/form-parser/form-parser.tsx","../../src/components/team-add-modal.tsx","../../src/components/department-add-modal.tsx","../../src/components/form-control/form-builder/form-builder-element/location-add-modal/location-add-modal.tsx","../../src/components/designation-add-modal.tsx","../../src/components/form-control/form-builder/form-builder-element/fixed-asset-item-add-modal/fixed-asset-item-add-modal.tsx","../../src/components/brand-add-modal.tsx","../../src/components/category-add-modal.tsx","../../src/components/industry-add-modal.tsx","../../src/components/source-type-add-modal/source-type-add-modal.tsx","../../src/components/journal-type-add-modal.tsx","../../src/components/form-control/form-builder/form-builder-element/select-configuration.tsx","../../src/components/searchable-select.tsx","../../src/components/filter/components/value-editor.tsx","../../src/components/filter/components/operator-select.tsx","../../src/components/filter/components/delete-group.tsx","../../src/components/save-filter-modal/save-filter-modal.tsx","../../src/components/filter/filter.tsx","../../src/components/dropdown-button/dropdown-button.tsx","../../src/components/title-dropdown-button/title-dropdown-button.tsx","../../src/components/upload-excel/upload-excel.tsx","../../src/components/action-bar/action-bar.tsx","../../src/components/bread-crumb/bread-crumb.tsx","../../src/components/color-picker-input/color-picker-input.tsx","../../src/components/fallback/fallback.tsx","../../src/components/pagination/pagination.tsx","../../src/components/page-navigator/components/add-page-modal.tsx","../../src/components/page-navigator/components/shared-page-view.tsx","../../src/components/page-navigator/components/shared-page-modal.tsx","../../src/components/page-navigator/components/add-page.tsx","../../src/components/share-modal/share-modal.tsx","../../src/views/beforeAuth/components/share-modal-data/share-modal-data.ts","../../src/components/page-navigator/components/page-action.tsx","../../src/components/page-navigator/page-navigator.tsx","../../src/components/footer/footer.tsx","../../src/components/form-header/form-header.tsx","../../src/components/loader.tsx","../../src/components/module-button/module-button.tsx","../../src/components/switches/android-12-switch.tsx"],"sourcesContent":["import {\r\n AccordionDetails,\r\n Accordion as MUIAccordion,\r\n AccordionSummary,\r\n styled,\r\n AccordionProps as MUIAccordionProps,\r\n} from \"@mui/material\";\r\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\r\nimport { memo } from \"react\";\r\n\r\ninterface AccordionProps {\r\n title: string | JSX.Element;\r\n children?: React.ReactNode;\r\n accordionProps?: Partial<MUIAccordionProps>\r\n}\r\nconst Accordion = memo((props: AccordionProps) => {\r\n const { title, children, accordionProps: accordianProps } = props;\r\n\r\n return (\r\n <StyledAccordion {...accordianProps} >\r\n <AccordionSummary\r\n expandIcon={<ExpandMoreIcon />}\r\n aria-controls=\"panel1-content\"\r\n id=\"panel1-header\"\r\n >\r\n {title}\r\n </AccordionSummary>\r\n <AccordionDetails>{children}</AccordionDetails>\r\n </StyledAccordion>\r\n );\r\n});\r\n\r\n\r\nconst StyledAccordion = styled(MUIAccordion)(({ theme: { palette } }) => ({\r\n color: palette.theme?.secondary[1000],\r\n fontSize: \" 0.875rem\",\r\n boxShadow: \"none\",\r\n \".MuiAccordionSummary-root\": {\r\n padding: \"0.625rem 1.5rem\",\r\n minHeight: \"0px !important\",\r\n borderBottomWidth: \"2px\",\r\n borderBottomStyle: \"solid\",\r\n borderBottomColor: palette.theme?.secondary[200],\r\n },\r\n \".MuiAccordionSummary-content\": {\r\n margin: \"0\",\r\n \"&.Mui-expanded\": {\r\n margin: \"0rem\",\r\n },\r\n \"&.MuiButtonBase-root\": {\r\n margin: \"0\",\r\n \"&.MuiAccordionSummary-content.Mui-expanded\": {\r\n margin: \"0\",\r\n },\r\n },\r\n },\r\n \".MuiAccordionDetails-root\": {\r\n padding: \"0\",\r\n },\r\n}));\r\n\r\nexport { Accordion };\r\nexport default Accordion;\r\n","import Button from \"../button/button\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport \"./view-modal.scss\";\nimport { useState } from \"react\";\nimport Modal from \"../modal/modal\";\nimport {\n DialogActions,\n DialogTitle,\n IconButton,\n MenuItem,\n Tab,\n Tabs,\n useMediaQuery,\n useTheme,\n} from \"@mui/material\";\nimport Typography from \"../typography/typography\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport logo from \"../../assets/images\";\nimport Select from \"../select/select\";\nimport viewTypes from \"../../constants/action-bar\";\n\ninterface ActionData {\n label: string;\n position: number;\n}\ninterface ModalPropsType {\n setData: React.Dispatch<React.SetStateAction<ActionData[]>>;\n data: Array<object>;\n setActive: React.Dispatch<React.SetStateAction<string>>;\n disabledViews?: string[]\n}\n\nconst ViewModal = (props: ModalPropsType) => {\n const { data, setData, setActive, disabledViews = [] } = props;\n const [openModal, setOpenModal] = useState(false);\n const [value, setValue] = useState(\"Table\");\n const [disable, setDisable] = useState(false);\n const theme = useTheme();\n const isMdUp = useMediaQuery(theme.breakpoints.up('lg'));\n const handleTabChange = (_: React.SyntheticEvent, newValue: string) => {\n setValue(newValue);\n setDisable(\n Boolean(\n data.find(\n (item: any) => item.label.toLowerCase() === newValue.toLowerCase(),\n ),\n ),\n );\n };\n\n const TabData = [\n {\n label: \"Table\",\n icon: <logo.TableIcon />,\n desc: \"Easily manage, update, and organize your tasks with Table view.\",\n image: <img src={logo.table} />,\n },\n {\n label: \"Grid\",\n icon: <logo.GridIcon />,\n desc: \"Grid of cards, use for mood boards, index cards, and recipes\",\n image: <img src={logo.grid} />,\n },\n // {\n // label: \"Kanban\",\n // icon: <logo.KanbanIcon />,\n // desc: \"Build your perfect Board and easily drag-and-drop tasks between columns.\",\n // image: <img src={logo.kanban} />,\n // },\n // {\n // label: \"Calendar\",\n // icon: <logo.CalenderIcon />,\n // desc: \"Calendar view is your place for planning, scheduling, and resource management.\",\n // image: <img src={logo.calendar} />,\n // },\n // {\n // label: \"Gantt\",\n // icon: <logo.GanttIcon />,\n // desc: \"Plan time, manage resources, visualize dependencies and more with Gantt view.\",\n // image: <img src={logo.gantt} />,\n // },\n ];\n\n const handleSubmit = () => {\n const selectedTabData = TabData.find(\n (data) => data.label.toLowerCase() === value.toLowerCase(),\n );\n if (selectedTabData?.label) {\n if (\n !data.some(\n (item: any) => item.label.toLowerCase() === value.toLowerCase(),\n )\n ) {\n setData([\n ...(data as ActionData[]),\n { label: selectedTabData.label, position: data.length },\n ]);\n\n setActive(selectedTabData?.label);\n setOpenModal(false);\n }\n }\n };\n\n return (\n <div className=\"view-modal\">\n <div className=\"view-modal--Header\">\n |\n <Button\n variant=\"text\"\n startIcon={<AddIcon />}\n sx={isMdUp ? {} : { pr:0 }}\n onClick={() => {\n setOpenModal(true);\n setDisable(\n Boolean(\n data.find(\n (item: any) =>\n item.label.toLowerCase() === value.toLowerCase(),\n ),\n ),\n );\n }}\n >\n {isMdUp ? 'View' : ''}\n </Button>\n </div>\n <Modal\n open={openModal}\n onClose={() => setOpenModal(false)}\n className=\"view-modal\"\n >\n <DialogTitle className=\"view-modal--Head\">\n <Typography type=\"s3\" weight=\"medium\" color=\"#000\">\n Add View\n </Typography>\n <IconButton onClick={() => setOpenModal(false)}>\n <CloseIcon fontSize=\"small\"/>\n </IconButton>\n </DialogTitle>\n\n <div className=\"view-modal--TabsContent\">\n <Tabs\n orientation=\"vertical\"\n value={value}\n onChange={handleTabChange}\n className=\"view-modal--Tab\"\n >\n {TabData &&\n TabData?.map((data) => (\n <Tab\n key={data.label}\n label={`${data?.label} View`}\n iconPosition=\"start\"\n icon={data?.icon}\n value={data.label}\n className=\"view-modal--Tabs\"\n disabled={Boolean(disabledViews?.includes(data.label))}\n />\n ))}\n </Tabs>\n {TabData.map((data) => (\n <div\n key={data.label}\n hidden={value !== data.label}\n className=\"view-modal--TabData\"\n >\n {data.image}\n <div className=\"view-modal--Desc\">\n <Typography type=\"s1\" color={\"theme.secondary.1000\"}>\n {data?.label} Views\n </Typography>\n <Typography type=\"s4\" color={\"theme.secondary.800\"}>\n {data.desc}\n </Typography>\n {(data?.label === viewTypes.KANBAN ||\n data?.label === viewTypes.CALENDAR) && (\n <div className=\"view-modal--BoardContainer\">\n <Typography type=\"s4\" color=\"theme.secondary.900\">\n Group Board by\n </Typography>\n <Select\n placeholder=\"Status\"\n size={\"small\"}\n defaultValue={1}\n className=\"view-modal--Select\"\n variant=\"outlined\"\n >\n <MenuItem value={1}>option 1</MenuItem>\n <MenuItem value={2}>option 2</MenuItem>\n </Select>\n </div>\n )}\n </div>\n </div>\n ))}\n </div>\n <DialogActions\n className=\"view-modal--Actions\"\n sx={{ backgroundColor: \"theme.secondary.200\" }}\n >\n <Button variant=\"text\" onClick={() => setOpenModal(false)}>\n Cancel\n </Button>\n <Button variant=\"contained\" onClick={handleSubmit} disabled={disable}>\n Add {value} View\n </Button>\n </DialogActions>\n </Modal>\n </div>\n );\n};\n\nexport { ViewModal };\nexport default ViewModal;\n","import Typography from \"../typography/typography\";\nimport \"./header-card.scss\";\nimport logo from \"../../assets/images\";\nimport viewTypes from \"../../constants/action-bar\";\nimport { useMediaQuery, useTheme } from \"@mui/material\";\n\ninterface HeaderCard {\n title: string;\n active: string;\n onClick: () => void;\n key: number;\n}\n\nconst HeaderCard = (props: HeaderCard) => {\n const { title, active, onClick, key, ...rest } = props;\n const theme = useTheme();\n const isMdUp = useMediaQuery(theme.breakpoints.up('lg'));\n\n return (\n <div\n key={key}\n className={\n active && title.includes(active)\n ? \"header-card header-card--Active\"\n : \"header-card\"\n }\n onClick={onClick}\n {...rest}\n >\n {title && title === viewTypes.TABLE ? (\n <logo.TableIcon />\n ) : title === viewTypes.GRID ? (\n <logo.GridIcon />\n ) : title === viewTypes.GANTT ? (\n <logo.GanttIcon />\n ) : title === viewTypes.CALENDAR ? (\n <logo.CalenderIcon />\n ) : title === viewTypes.KANBAN ? (\n <logo.KanbanIcon />\n ) : title === viewTypes.CHART ? (\n <logo.ChartIcon />\n ) : (\n \"\"\n )}\n {isMdUp && \n <Typography type=\"s3\" color=\"inherit\">\n {title} View\n </Typography>\n }\n </div>\n );\n};\n\nexport { HeaderCard };\nexport default HeaderCard;\n","import { Box } from \"@mui/material\";\r\nimport \"./toggle.scss\";\r\nimport { styled } from '@mui/material/styles';\r\n\r\nconst ToggleWrapper = styled(Box)(({ theme: { palette } }) => ({\r\n \"& input:checked + .slider\": {\r\n backgroundColor: palette.theme.primary[700],\r\n },\r\n \"& .slider\": {\r\n backgroundColor: palette.theme.secondary[200],\r\n \":hover\": {\r\n backgroundColor: palette.theme.secondary[300],\r\n },\r\n },\r\n \"& input\": {\r\n display: \"none\",\r\n },\r\n}));\r\n\r\ninterface IToggle {\r\n checked: boolean;\r\n onChange: () => void;\r\n}\r\n\r\nconst Toggle = (props: IToggle) => {\r\n return (\r\n <ToggleWrapper>\r\n <label className=\"switch\">\r\n <input type=\"checkbox\" {...props} />\r\n <span className=\"slider round\"></span>\r\n </label>\r\n </ToggleWrapper>\r\n );\r\n};\r\n\r\nexport { Toggle };\r\nexport default Toggle;\r\n","import { MenuItem } from \"@mui/material\";\nimport Select from \"../../select/select\";\nimport Typography from \"../../typography/typography\";\n\nconst CombinatorSelect = (props: any) => {\n const { handleOnChange, value, options, ...rest } = props;\n\n const showDropdown = props.path?.[0] === 1 || props.path?.[1] === 1;\n\n return (\n <>\n {!showDropdown ? (\n <Typography\n type=\"s4\"\n color=\"theme.secondary.1000\"\n className=\"combinator-value\"\n >\n {value}\n </Typography>\n ) : (\n <Select\n value={value}\n onChange={(e: any) => handleOnChange(e.target.value)}\n {...rest}\n className=\"combinator-list\"\n >\n {options?.map(({ name, label }: { name: string; label: string }) => (\n <MenuItem key={name} value={name}>\n <Typography type=\"s4\" color=\"theme.secondary.1000\">\n {label}\n </Typography>\n </MenuItem>\n ))}\n </Select>\n )}\n </>\n );\n};\n\nexport { CombinatorSelect };\nexport default CombinatorSelect;\n","import { Box, IconButton } from \"@mui/material\";\nimport { ActionProps } from \"react-querybuilder\";\nimport { useLanguage } from \"../../../hooks/useLangauge\";\nimport { Trash } from \"../../icons\";\n\nconst RemoveAction = (props: ActionProps) => {\n const { isRtl } = useLanguage();\n const btnStyles = {\n ...(isRtl ? { marginRight:-1.5 } : {}),\n }\n const iconStyles = {\n color: 'theme.grey.600',\n '&:hover': {\n color: 'theme.error.600'\n }\n }\n return (\n <Box>\n <IconButton sx={btnStyles} size={\"small\"} onClick={props.handleOnClick} disableRipple>\n <Trash sx={{ fontSize: '1.35rem', ...iconStyles }} />\n </IconButton>\n </Box>\n );\n};\n\nexport { RemoveAction };\nexport default RemoveAction;\n","import { useEffect, useState } from \"react\";\nimport { Box, MenuItem } from \"@mui/material\";\nimport Select from \"../../select/select\";\nimport Typography from \"../../typography/typography\";\nimport { FieldSelectorProps } from \"react-querybuilder\";\nimport SearchBar from \"../../search-bar/search-bar\";\nimport \"../filter.scss\";\nimport formatText from \"../../../utils/format-text\";\nimport { useTranslation } from \"react-i18next\";\n\nconst FieldSelect = (props: FieldSelectorProps) => {\n\n const { t } = useTranslation();\n\n const { handleOnChange, value, options, ...rest } = props;\n\n const [filteredOptions, setFilteredOptions] = useState<any[]>();\n\n const handleSearchEvent = (searchText: string) => {\n const ops = options?.filter(o => Boolean(o.label?.trim())) || []\n const filteredData = ops.filter((option: any) =>\n option.name.toLowerCase().includes(searchText.toLowerCase()),\n );\n setFilteredOptions(filteredData);\n };\n\n useEffect(() => {\n setFilteredOptions(options?.filter(o => Boolean(o.label?.trim())) || [])\n // eslint-disable-next-line react-hooks/exhaustive-deps\n },[options?.length])\n\n\n return (\n <Box width=\"100%\">\n <Select\n fullWidth\n value={value}\n onChange={(e: any) => handleOnChange(e.target.value)}\n {...rest}\n className=\"select-drps\"\n variant=\"outlined\"\n renderValue={(value: any) => formatText(t(filteredOptions?.find((opttion: any)=>opttion.name === value)?.label)?.replace(\"_id\", '')?.replaceAll(\"_\", \" \") || \"Select Default\")}\n onClose={() => setFilteredOptions(options?.filter(o => Boolean(o.label?.trim())) || [])}\n >\n <div className=\"searchbar-box-list new-searchbar\">\n <SearchBar\n placeholder={\"Search Attributes\"}\n handleSearch={(e) => handleSearchEvent(e)}\n />\n </div>\n {filteredOptions?.map((op: any) => (\n <MenuItem key={op.name} value={op.name}>\n <Typography type=\"s4\" color=\"theme.secondary.1000\">\n {formatText(t(op.label)?.replace(\"_id\", '')?.replaceAll(\"_\", \" \"))}\n </Typography>\n </MenuItem>\n ))}\n </Select>\n </Box>\n );\n};\n\nexport { FieldSelect };\nexport default FieldSelect;\n","import { ActionProps } from \"react-querybuilder\";\r\nimport Button from \"../../button/button\";\r\nimport { styled } from '@mui/material/styles';\r\nimport { Add } from \"@mui/icons-material\";\r\n\r\nconst StyledAddButton = styled(Button)(({ theme: { palette } }) => ({\r\n \":hover\": {\r\n backgroundColor: palette.theme?.secondary[100],\r\n },\r\n \"&.MuiButton-text\": {\r\n \":hover\": {\r\n color: palette.theme?.secondary[1000],\r\n },\r\n },\r\n}));\r\n\r\nconst AddFilterButton = (props: ActionProps) => {\r\n const { handleOnClick, ...rest } = props;\r\n return (\r\n <StyledAddButton\r\n onClick={handleOnClick}\r\n {...rest}\r\n className=\"add-filter\"\r\n variant=\"text\"\r\n startIcon={<Add/>}\r\n >\r\n Add Filter\r\n </StyledAddButton>\r\n );\r\n};\r\n\r\nexport { AddFilterButton };\r\nexport default AddFilterButton;\r\n","import { styled } from '@mui/material/styles';\r\nimport Button from \"../../button/button\";\r\nimport { ActionProps } from \"react-querybuilder\";\r\nimport { Add } from \"@mui/icons-material\";\r\n\r\nconst StyledAddButton = styled(Button)(({ theme: { palette } }) => ({\r\n \":hover\": {\r\n backgroundColor: palette.theme?.secondary[100],\r\n },\r\n \"&.MuiButton-text\": {\r\n \":hover\": {\r\n color: palette.theme?.secondary[1000],\r\n },\r\n },\r\n}));\r\n\r\nconst AddGroupButton = (props: ActionProps) => {\r\n const { handleOnClick, ...rest } = props;\r\n return (\r\n <StyledAddButton\r\n onClick={handleOnClick}\r\n {...rest}\r\n className=\"add-group\"\r\n variant=\"text\"\r\n startIcon={<Add/>}\r\n >\r\n Add Group\r\n </StyledAddButton>\r\n );\r\n};\r\n\r\nexport { AddGroupButton };\r\nexport default AddGroupButton;\r\n","import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\r\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\r\nimport { DatePicker as Date } from '@mui/x-date-pickers/DatePicker';\r\nimport Typography from '../typography/typography';\r\nimport { styled } from '@mui/material/styles';\r\nimport logo from '../../assets/images';\r\nimport './date-picker.scss';\r\nimport dayjs from 'dayjs';\r\nimport { memo } from 'react';\r\n\r\nexport interface DatePickerProps {\r\n\tlabel: string;\r\n\tdisabled?: boolean;\r\n\terror?: boolean;\r\n\tname?: string;\r\n\tvalue?: string | number | Date;\r\n\thelperText?: string;\r\n\tdataPosition?: number;\r\n\tdataName?: string;\r\n\tdisableFutureDates?: boolean;\r\n\tplaceholder?: string;\r\n\trequired?: boolean;\r\n\tdisablePastDates?: boolean;\r\n\tdefaultValue?: string | number | Date | undefined;\r\n\ttextFieldProps?: any;\r\n\tformat?: string;\r\n\r\n}\r\n\r\nconst StyledDatePicker = styled(Date)(({ theme: { palette } }) => ({\r\n\t'& .MuiOutlinedInput-root': {\r\n\t\tpadding: '0',\r\n\t\tcolor: palette.theme?.secondary[800],\r\n\t\t'& fieldset': {\r\n\t\t\tborderColor: palette.theme?.secondary[400]\r\n\t\t},\r\n\t\t'&:hover fieldset': {\r\n\t\t\tborderColor: palette.theme?.secondary[500]\r\n\t\t},\r\n\t\t'&.Mui-focused fieldset': {\r\n\t\t\tborderWidth: '0.0625rem',\r\n\t\t\tborderStyle: 'solid',\r\n\t\t\tborderColor: palette.theme?.primary[700]\r\n\t\t},\r\n\t\t'&.Mui-error fieldset': {\r\n\t\t\tborderColor: palette.theme?.error[600]\r\n\t\t},\r\n\t\t'&.Mui-disabled': {\r\n\t\t\tbackground: palette.theme?.secondary[200],\r\n\t\t\tcolor: palette.theme?.secondary[800]\r\n\t\t},\r\n\t\t'& .MuiInputBase-input::placeholder': {\r\n\t\t\tcolor: palette.theme?.secondary[800],\r\n\t\t\topacity: 1\r\n\t\t}\r\n\t},\r\n\t'& .MuiFormHelperText-root': {\r\n\t\tmarginLeft: 0,\r\n\t\tcolor: palette.theme?.secondary[800],\r\n\t\t'&.Mui-error': {\r\n\t\t\tcolor: palette.theme?.error[600]\r\n\t\t}\r\n\t},\r\n\t'& .MuiIconButton-root': {\r\n\t\tmarginRight: 0\r\n\t},\r\n\t'& .MuiPickersCalendarHeader-labelContainer': {\r\n\t\tfontWeight: 600\r\n\t}\r\n}));\r\n\r\nconst DatePicker = memo((props: DatePickerProps) => {\r\n\tconst {\r\n\t\tlabel,\r\n\t\tdisabled,\r\n\t\terror,\r\n\t\thelperText,\r\n\t\tdataName,\r\n\t\tdataPosition,\r\n\t\tdisableFutureDates = false,\r\n\t\tplaceholder,\r\n\t\trequired = false,\r\n\t\tdisablePastDates = false,\r\n\t\tdefaultValue,\r\n\t\ttextFieldProps,\r\n\t\tformat,\r\n\t\t...rest\r\n\t} = props;\r\n\r\n\treturn (\r\n\t\t<LocalizationProvider dateAdapter={AdapterDayjs}>\r\n\t\t\t{label && (\r\n\t\t\t\t<Typography\r\n\t\t\t\t\ttype='s5'\r\n\t\t\t\t\tweight='medium'\r\n\t\t\t\t\tmb={0.5}\r\n\t\t\t\t\tcolor={error ? 'theme.error.600' : 'theme.secondary.800'}\r\n\t\t\t\t\tdata-position={dataPosition}\r\n\t\t\t\t\tdata-name={dataName}>\r\n\t\t\t\t\t{label} {required && <span className='requiredStar'>*</span>}\r\n\t\t\t\t</Typography>\r\n\t\t\t)}\r\n\t\t\t<StyledDatePicker\r\n\t\t\t\tdisabled={disabled}\r\n\t\t\t\tdisableFuture={disableFutureDates}\r\n\t\t\t\tdisablePast={disablePastDates}\r\n\t\t\t\tslotProps={{\r\n\t\t\t\t\ttextField: {\r\n\t\t\t\t\t\thelperText: helperText,\r\n\t\t\t\t\t\terror: error,\r\n\t\t\t\t\t\tplaceholder: placeholder || 'MM/DD/YYYY',\r\n\t\t\t\t\t\t...textFieldProps\r\n\t\t\t\t\t\t// required: required,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdesktopPaper: {\r\n\t\t\t\t\t\tsx: {\r\n\t\t\t\t\t\t\t'& .MuiButtonBase-root.Mui-selected': {\r\n\t\t\t\t\t\t\t\tcolor: 'theme.primary.900',\r\n\t\t\t\t\t\t\t\tbgcolor: '#B6E9D6 !important'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t'& .MuiButtonBase-root:hover': {\r\n\t\t\t\t\t\t\t\tcolor: 'theme.primary.900',\r\n\t\t\t\t\t\t\t\tbgcolor: '#B6E9D6 !important'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}}\r\n\t\t\t\tformat={format || 'DD-MM-YYYY'}\r\n\t\t\t\tslots={{ openPickerIcon: logo.CalenderIcon }}\r\n\t\t\t\t{...rest}\r\n\t\t\t\t\r\n\t\t\t\tdefaultValue={defaultValue ? dayjs(defaultValue) : undefined}\r\n\t\t\t\tclassName='datePicker'\r\n\t\t\t/>\r\n\t\t</LocalizationProvider>\r\n\t);\r\n});\r\n\r\nexport { DatePicker };\r\nexport default DatePicker;\r\n","import { CheckboxProps, Checkbox as MUICheckbox, styled } from '@mui/material';\r\nimport { CheckBoxIcon, RecgtangleIcon } from '../icons';\r\nimport { memo } from 'react';\r\n\r\nconst StyledCheckbox = styled(MUICheckbox)(({ theme: { palette } }) => ({\r\n\tpadding: '0rem',\r\n\tcolor: palette.theme?.secondary[300],\r\n\tborderRadius: '.625rem',\r\n\t'&.Mui-checked': {\r\n\t\tcolor: palette.theme?.primary[600],\r\n\t\t'&:hover': {\r\n\t\t\tcolor: palette.theme?.primary[500]\r\n\t\t}\r\n\t},\r\n\t'&.Mui-disabled': {\r\n\t\tcolor: palette.theme?.secondary[400]\r\n\t}\r\n}));\r\n\r\nconst Checkbox = memo((props: CheckboxProps) => {\r\n\treturn (\r\n\t\t<StyledCheckbox\r\n\t\t\ticon={<RecgtangleIcon fontSize={props?.size || 'small'} />}\r\n\t\t\tcheckedIcon={<CheckBoxIcon fontSize={props?.size || 'small'} />}\r\n\t\t\tdisableRipple\r\n\t\t\t{...props}\r\n\t\t/>\r\n\t);\r\n});\r\n\r\nexport { Checkbox };\r\nexport default Checkbox;\r\n","import React from 'react';\n// import { Close } from '@mui/icons-material';\nimport { ChipProps } from '@mui/material';\nimport Chip from '../../../chip/chip';\nimport Typography from '../../../typography/typography';\n\ninterface ChipOrPlaceholderProps {\n\tdata: string[];\n\tplaceholder: string;\n\tonDelete?: () => void;\n\tchipProps?: Omit<ChipProps, 'label'>;\n\tdisabled?: boolean;\n\tselectedLabel?: string;\n}\n\nconst ChipOrPlaceholder: React.FC<ChipOrPlaceholderProps> = ({\n\tdata,\n\tplaceholder,\n\tonDelete,\n\tchipProps,\n\tdisabled,\n\tselectedLabel = 'Item'\n}) => (\n\t<>\n\t\t{data.length ? (\n\t\t\t<Chip\n\t\t\t\t// variant='outlined'\n\t\t\t\ttype='normal'\n\t\t\t\tlabel={\n\t\t\t\t\t<Typography color='theme.secondary.1000' type='s5'>\n\t\t\t\t\t\t{data.length} {selectedLabel} Selected\n\t\t\t\t\t</Typography>\n\t\t\t\t}\n\t\t\t\t// deleteIcon={<Close fontSize='large' />}\n\t\t\t\tonDelete={onDelete}\n\t\t\t\tonMouseDown={(event) => event.stopPropagation()}\n\t\t\t\tdisabled={Boolean(disabled)}\n\t\t\t\t{...chipProps}\n\t\t\t\tsx={{\n\t\t\t\t\t...chipProps?.sx,\n\t\t\t\t\t'& .MuiChip-deleteIcon': {\n\t\t\t\t\t\tcolor: 'theme.primary.800',\n\t\t\t\t\t\tfontSize: '1rem',\n\t\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\t\tcolor: 'theme.primary.900'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t) : (\n\t\t\t<Typography color='inherit' type='s3'>\n\t\t\t\t{placeholder}\n\t\t\t</Typography>\n\t\t)}\n\t</>\n);\n\nexport default ChipOrPlaceholder;\n","import { Radio as MUIRadio, RadioProps } from '@mui/material';\nimport { BlankCircle, FilledCircle } from '../icons';\nimport { memo } from 'react';\n\nconst Radio = memo((props: RadioProps) => {\n\tconst { color, ...rest } = props;\n\n\treturn (\n\t\t<>\n\t\t\t<MUIRadio\n\t\t\t\tdisableRipple\n\t\t\t\tsx={{\n\t\t\t\t\t'&, &.Mui-checked': {\n\t\t\t\t\t\tcolor: color || 'theme.primary.700'\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\ticon={<BlankCircle color='theme.secondary.300' fontSize='large'/>}\n\t\t\t\tcheckedIcon={<FilledCircle fontSize='large'/>}\n\t\t\t\t{...rest}\n\t\t\t/>\n\t\t</>\n\t);\n});\n\nexport { Radio };\nexport default Radio;\n","import React, { memo } from 'react';\r\nimport { Control, Controller } from 'react-hook-form';\r\nimport Typography from '../../../typography/typography';\r\nimport Radio from '../../../radio/radio';\r\nimport { FormControlLabel, RadioGroup, Box } from '@mui/material';\r\nimport { styled } from '@mui/material/styles';\r\n\r\ninterface IDynamicRadioButton {\r\n\tformControl: Control<any>;\r\n\tfieldArrayName: string;\r\n\tname: string;\r\n\tlabel: string;\r\n\ttitlePosition?: string;\r\n\tposition: number;\r\n\toptions: {\r\n\t\tlabel: string;\r\n\t\tvalue: string;\r\n\t}[];\r\n\tdisabled?: boolean;\r\n\ttypeOfField?: string;\r\n\tdisplay?: 'row' | 'column';\r\n\ttitle?: string;\r\n\tbordered?: boolean;\r\n\tdefaultValue?: string; // Optional defaultValue prop\r\n}\r\n\r\nconst BorderedOption = styled(Box, {\r\n\tshouldForwardProp: (prop) => prop !== 'bordered' && prop !== 'isSelected'\r\n})<{ bordered?: boolean; isSelected: boolean }>(({ theme, bordered }) => ({\r\n\tdisplay: 'flex',\r\n\talignItems: 'center',\r\n\tpadding: 0,\r\n\tmargin: 0,\r\n\t...(bordered && {\r\n\t\tborder: `1px solid ${theme.palette.divider}`,\r\n\t\tborderRadius: theme.shape.borderRadius,\r\n\t\tmargin: theme.spacing(0, 3, 0, 0),\r\n\t\tpadding: theme.spacing(0, 5, 0, 1),\r\n\t\theight: '36px',\r\n\t\talignContent: 'left',\r\n\t\t'&:hover': {\r\n\t\t\tbackgroundColor: theme.palette.action.hover\r\n\t\t}\r\n\t})\r\n}));\r\n\r\nexport const DynamicRadioButton: React.FC<IDynamicRadioButton> = memo(\r\n\t({\r\n\t\tformControl,\r\n\t\tfieldArrayName,\r\n\t\tname,\r\n\t\toptions,\r\n\t\tdisplay,\r\n\t\tlabel,\r\n\t\tposition,\r\n\t\tdisabled,\r\n\t\ttitle,\r\n\t\ttitlePosition,\r\n\t\tbordered = false,\r\n\t\tdefaultValue = ''\r\n\t}) => {\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t<Typography\r\n\t\t\t\t\ttype='s5'\r\n\t\t\t\t\tweight='medium'\r\n\t\t\t\t\tcolor='theme.secondary.800'\r\n\t\t\t\t\tdata-position={position}\r\n\t\t\t\t\tsx={{ mb: 0.5 }}>\r\n\t\t\t\t\t{label}\r\n\t\t\t\t</Typography>\r\n\t\t\t\t<Controller\r\n\t\t\t\t\tcontrol={formControl}\r\n\t\t\t\t\tname={`${fieldArrayName}.${name}`}\r\n\t\t\t\t\t// disabled={disabled}\r\n\t\t\t\t\tdefaultValue={defaultValue} // Set defaultValue to 'item' if none provided\r\n\t\t\t\t\trender={({ field, fieldState: { error } }) => (\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t<RadioGroup\r\n\t\t\t\t\t\t\t\tvalue={field.value ?? defaultValue} // Ensure 'item' if value is undefined\r\n\t\t\t\t\t\t\t\tonChange={(e) => field.onChange(e.target.value)}\r\n\t\t\t\t\t\t\t\trow={display === 'row'}\r\n\t\t\t\t\t\t\t\tsx={{ alignItems: 'center', gap: 1 }}>\r\n\t\t\t\t\t\t\t\t{title && titlePosition === 'start' && (\r\n\t\t\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\t\t\ttype='s4'\r\n\t\t\t\t\t\t\t\t\t\tcolor='theme.secondary.800'\r\n\t\t\t\t\t\t\t\t\t\tweight='medium'>\r\n\t\t\t\t\t\t\t\t\t\t{title}\r\n\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t{options.map((option) => (\r\n\t\t\t\t\t\t\t\t\t<BorderedOption\r\n\t\t\t\t\t\t\t\t\t\tkey={option.value}\r\n\t\t\t\t\t\t\t\t\t\tbordered={bordered}\r\n\t\t\t\t\t\t\t\t\t\tisSelected={field.value == option.value}>\r\n\t\t\t\t\t\t\t\t\t\t<FormControlLabel\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{ margin: 0, opacity: disabled ? 0.5 : 1 }}\r\n\t\t\t\t\t\t\t\t\t\t\tvalue={option.value}\r\n\t\t\t\t\t\t\t\t\t\t\tcontrol={<Radio checked={field.value == option.value} />}\r\n\t\t\t\t\t\t\t\t\t\t\tlabel={\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype='s5'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tweight='medium'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolor='theme.secondary.800'>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{option.label}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tdisabled={disabled}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t</BorderedOption>\r\n\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t{title && titlePosition === 'end' && (\r\n\t\t\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\t\t\ttype='s4'\r\n\t\t\t\t\t\t\t\t\t\tcolor='theme.secondary.800'\r\n\t\t\t\t\t\t\t\t\t\tweight='medium'>\r\n\t\t\t\t\t\t\t\t\t\t{title}\r\n\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</RadioGroup>\r\n\t\t\t\t\t\t\t{error && (\r\n\t\t\t\t\t\t\t\t<Typography type='s5' color='theme.error.600'>\r\n\t\t\t\t\t\t\t\t\t{error.message}\r\n\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</>\r\n\t\t\t\t\t)}\r\n\t\t\t\t/>\r\n\t\t\t</>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nexport default DynamicRadioButton;\r\n","import _ from \"lodash\";\r\nimport { MaterialTableColumnProps } from \"../../material-table/material-table\";\r\n\r\nexport const PARTIES_FORM_ARRAY_NAME = 'parties';\r\n\r\nexport const PARTIES_FIELDS = {\r\n TYPE: 'account_type',\r\n\r\n FIRST_NAME: 'first_name',\r\n LAST_NAME: 'last_name',\r\n\r\n COMPANY_NAME: 'company_name',\r\n VAT_NUMBER: 'vat_number',\r\n CRN: 'crn',\r\n\r\n // COMPANY: 'company_id',\r\n COMPANY: 'companies',\r\n CURRENCY: 'currencies',\r\n CONTACT_NO: 'contact_no',\r\n EMAIL_IDS: 'email_ids',\r\n RESPONSIBLE_PERSON : 'responsible_person',\r\n\r\n ADDRESS: 'addresses',\r\n CONTACTS: 'contacts',\r\n\r\n RECEIVABLE_ACCOUNT: 'account_id',\r\n TAX_TEMPLATE: 'default_tax_template'\r\n}\r\n\r\nexport const partyType = [\r\n { label: 'Individual', value: 'Individual' },\r\n { label: 'Company', value: 'Company' }\r\n];\r\n\r\nexport const addressPayload = {\r\n parties_id: null,\r\n address_type: null,\r\n contact_name: null,\r\n street_1: null,\r\n street_2: null,\r\n city: null,\r\n zip_code: null,\r\n state: null,\r\n country: null,\r\n email: null,\r\n mobile: null,\r\n phone: null,\r\n street_3: null,\r\n summary: null,\r\n default_shipping_address: 0,\r\n default_billing_address: 0,\r\n country_code: null\r\n};\r\nexport const contactPayload = {\r\n parties_id: null,\r\n name: null,\r\n country_code: null,\r\n contact_no: null,\r\n email: null\r\n};\r\n\r\n/* Address columns & rows */\r\nexport const addressColumns: MaterialTableColumnProps[] = [\r\n {\r\n header: 'common.party.table.addressType_header',\r\n accessorKey: 'address_type',\r\n visible: true,\r\n type: 'string',\r\n editVariant: 'select',\r\n editProperties: {\r\n placeholder: 'Select Address Type',\r\n field_name: 'address_type',\r\n validations: [\r\n {\r\n type: 'required',\r\n value: true,\r\n msg_en: 'Address Type is required',\r\n msg_ar: 'Address Type is required'\r\n }\r\n ]\r\n },\r\n editSelectOptions: [\r\n { label: 'Delivery', value: 'Delivery' },\r\n { label: 'Shipping', value: 'Shipping' },\r\n { label: 'Office', value: 'Office' }\r\n ]\r\n },\r\n {\r\n header: 'common.party.table.addressee_header',\r\n accessorKey: 'contact_name',\r\n visible: true,\r\n type: 'custom_link',\r\n editProperties: {\r\n placeholder: 'Enter Addressee',\r\n field_name: 'contact_name',\r\n validations: [\r\n {\r\n type: 'required',\r\n value: false,\r\n msg_en: 'Contact name is required',\r\n msg_ar: 'Contact name is required'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n header: 'common.party.table.defaultShippingAddress_header',\r\n accessorKey: 'default_shipping_address',\r\n visible: true,\r\n type: 'custom_link',\r\n editVariant: 'checkbox',\r\n editProperties: {\r\n field_name: 'default_shipping_address'\r\n }\r\n },\r\n {\r\n header: 'common.party.table.defaultBillingAddress_header',\r\n accessorKey: 'default_billing_address',\r\n visible: true,\r\n type: 'custom_link',\r\n editVariant: 'checkbox',\r\n editProperties: {\r\n field_name: 'default_billing_address'\r\n }\r\n },\r\n {\r\n header: 'common.party.table.countryCode_header',\r\n accessorKey: 'country_code',\r\n visible: true,\r\n type: 'custom_link',\r\n enableEditing: false\r\n },\r\n {\r\n header: 'common.party.table.contactNumber_header',\r\n accessorKey: 'phone',\r\n visible: true,\r\n type: 'custom_link',\r\n editVariant: 'phone',\r\n editProperties: {\r\n field_name: 'phone'\r\n }\r\n },\r\n {\r\n header: 'common.party.table.addrressOne_header',\r\n accessorKey: 'street_1',\r\n visible: true,\r\n type: 'string',\r\n editProperties: {\r\n placeholder: 'Enter Address',\r\n field_name: 'street_1',\r\n validations: [\r\n {\r\n type: 'required',\r\n value: false,\r\n msg_en: 'Address is required',\r\n msg_ar: 'Address is required'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n header: 'common.party.table.addressTwo_header',\r\n accessorKey: 'street_2',\r\n visible: true,\r\n type: 'string',\r\n editProperties: {\r\n placeholder: 'Enter Address',\r\n field_name: 'street_2',\r\n }\r\n },\r\n {\r\n header: 'common.party.table.addressThree_header',\r\n accessorKey: 'street_3',\r\n visible: true,\r\n type: 'string',\r\n editProperties: {\r\n placeholder: 'Enter Address',\r\n field_name: 'street_3',\r\n }\r\n },\r\n {\r\n header: 'common.party.table.zipCode_header',\r\n accessorKey: 'zip_code',\r\n visible: true,\r\n type: 'string',\r\n editProperties: {\r\n field_name: 'zip_code',\r\n placeholder: 'Enter Zip Code',\r\n }\r\n },\r\n {\r\n header: 'common.party.table.country_header',\r\n accessorKey: 'country_name',\r\n visible: true,\r\n type: 'string',\r\n editVariant: 'select',\r\n editProperties: {\r\n field_name: 'country',\r\n placeholder: 'Select country',\r\n valueKey: 'country_id',\r\n apiType: 'countries',\r\n validations: [\r\n {\r\n type: 'required',\r\n value: true,\r\n msg_en: 'Country is required',\r\n msg_ar: 'Country is required'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n header: 'common.party.table.state_header',\r\n accessorKey: 'state_name',\r\n visible: true,\r\n type: 'string',\r\n editVariant: 'select',\r\n editProperties: {\r\n field_name: 'state',\r\n placeholder: 'Select state',\r\n valueKey: 'state_id',\r\n apiType: 'states',\r\n validations: [\r\n {\r\n type: 'required',\r\n value: true,\r\n msg_en: 'State is required',\r\n msg_ar: 'State is required'\r\n }\r\n ],\r\n customeFilter: (row: any, values) => {\r\n const filter = values?.country_name ? { '&country_id.eq': values?.country_name } : null\r\n return filter\r\n }\r\n }\r\n },\r\n {\r\n header: 'common.party.table.city_header',\r\n accessorKey: 'city',\r\n visible: true,\r\n type: 'string',\r\n editProperties: {\r\n placeholder: 'Enter City',\r\n field_name: 'city',\r\n validations: [\r\n {\r\n type: 'required',\r\n value: true,\r\n msg_en: 'City is required',\r\n msg_ar: 'City is required'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n header: 'common.party.table.summary_header',\r\n accessorKey: 'summary',\r\n visible: true,\r\n type: 'string',\r\n enableEditing: false\r\n // editProperties: {\r\n // \tplaceholder: 'Populated after filling address',\r\n // \tfield_name: 'summary'\r\n // \tdisabled\r\n // }\r\n }\r\n];\r\n\r\n/* contact columns & rows */\r\nexport const contactColumns: MaterialTableColumnProps[] = [\r\n {\r\n header: 'common.party.table.name_header',\r\n accessorKey: 'name',\r\n visible: true,\r\n type: 'string',\r\n editProperties: {\r\n placeholder: 'Enter Name',\r\n field_name: 'name',\r\n validations: [\r\n {\r\n type: 'required',\r\n value: true,\r\n msg_en: 'Name is required',\r\n msg_ar: 'Name is required'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n header: 'common.party.table.email_header',\r\n accessorKey: 'email',\r\n visible: true,\r\n type: 'string',\r\n editProperties: {\r\n placeholder: 'Enter Email',\r\n field_name: 'email',\r\n validations: [\r\n {\r\n type: 'required',\r\n value: true,\r\n msg_en: 'Email is required',\r\n msg_ar: 'Email is required'\r\n },\r\n {\r\n type: 'email',\r\n value: true,\r\n msg_en: 'Invalid Email',\r\n msg_ar: 'Invalid Email'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n header: 'common.party.table.countryCode_header',\r\n accessorKey: 'country_code',\r\n visible: true,\r\n type: 'custom_link',\r\n enableEditing: false\r\n },\r\n {\r\n header: 'common.party.table.contactNumber_header',\r\n accessorKey: 'contact_no',\r\n visible: true,\r\n type: 'custom_link',\r\n editVariant: 'phone',\r\n editProperties: {\r\n field_name: 'contact_no'\r\n }\r\n }\r\n];\r\n\r\nexport const addressOmitKeys = [\r\n 'id',\r\n 'state_id',\r\n 'country_id',\r\n 'country_name',\r\n 'state_name',\r\n 'parties_id',\r\n 'state_data',\r\n 'country_data',\r\n 'summary'\r\n];\r\nexport const contactOmitKeys = ['id', 'summary'];\r\n\r\n\r\nexport const processPartiesPayload = (payload: any) => {\r\n const { addresses = [], contacts = [], ...rest } = payload || {}\r\n const addressPayload = addresses.map(address => (_.omit(address, ...addressOmitKeys)))\r\n const contactPayload = contacts.map(contact => (_.omit(contact, ...contactOmitKeys)))\r\n return {\r\n ...rest,\r\n addresses: addressPayload,\r\n contacts: contactPayload\r\n }\r\n}\r\n","import * as Yup from 'yup';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport { PARTIES_FIELDS, PARTIES_FORM_ARRAY_NAME } from './utils/constant';\r\n\r\nexport const generateValidationSchema = () => {\r\n\treturn yupResolver(\r\n\t\tYup.object().shape({\r\n\t\t\t[PARTIES_FORM_ARRAY_NAME]: Yup.object().shape({\r\n\t\t\t\t[PARTIES_FIELDS.FIRST_NAME]: Yup.string().required('First name is required'),\r\n\t\t\t\t[PARTIES_FIELDS.LAST_NAME]: Yup.string().required('Last name is required'),\r\n\t\t\t\t[PARTIES_FIELDS.COMPANY]: Yup.mixed().required('Company is required'),\r\n\t\t\t\t[PARTIES_FIELDS.CURRENCY]: Yup.array().required('Currency is required'),\r\n\t\t\t\t[PARTIES_FIELDS.ADDRESS]: Yup.array()\r\n\t\t\t\t\t.required('Please add atleast one address')\r\n\t\t\t\t\t.min(1, 'Please add atleast one address'),\r\n\t\t\t\t[PARTIES_FIELDS.CONTACTS]: Yup.array()\r\n\t\t\t\t\t.required('Please add atleast one Contact')\r\n\t\t\t\t\t.min(1, 'Please add atleast one Contact')\r\n\t\t\t})\r\n\t\t})\r\n\t);\r\n};\r\n\r\nexport const generateValidationSchema1 = () => {\r\n\treturn yupResolver(\r\n\t\tYup.object().shape({\r\n\t\t\t[PARTIES_FORM_ARRAY_NAME]: Yup.object().shape({\r\n\t\t\t\t[PARTIES_FIELDS.TYPE]: Yup.string().required('Customer type is required'),\r\n\r\n\t\t\t\t[PARTIES_FIELDS.FIRST_NAME]: Yup.string().when('account_type', {\r\n\t\t\t\t\tis: (val: any) => val === 'Individual',\r\n\t\t\t\t\tthen: () => Yup.string().required('First name is required'),\r\n\t\t\t\t\totherwise: () => Yup.string().optional().nullable()\r\n\t\t\t\t}),\r\n\r\n\t\t\t\t[PARTIES_FIELDS.LAST_NAME]: Yup.string().when('account_type', {\r\n\t\t\t\t\tis: (val: any) => val === 'Individual',\r\n\t\t\t\t\tthen: () => Yup.string().required('Last name is required'),\r\n\t\t\t\t\totherwise: () => Yup.string().optional().nullable()\r\n\t\t\t\t}),\r\n\r\n\t\t\t\t[PARTIES_FIELDS.COMPANY_NAME]: Yup.string().when('account_type', {\r\n\t\t\t\t\tis: (val: any) => val === 'Company',\r\n\t\t\t\t\tthen: () => Yup.string().required('Company is required'),\r\n\t\t\t\t\totherwise: () => Yup.string().optional().nullable()\r\n\t\t\t\t}),\r\n\r\n\t\t\t\t[PARTIES_FIELDS.VAT_NUMBER]: Yup.string().optional().nullable(),\r\n\r\n\t\t\t\t[PARTIES_FIELDS.CRN]: Yup.string().optional().nullable() ,\r\n\r\n\t\t\t[PARTIES_FIELDS.COMPANY]: Yup.mixed().required('Company is required'),\r\n\r\n\t\t\t[PARTIES_FIELDS.CURRENCY]: Yup.array().required('Currency is required'),\r\n\t\t\t\t[PARTIES_FIELDS.RESPONSIBLE_PERSON]: Yup.string().required('Responsible Person is required'),\r\n\r\n\t\t\t\t[PARTIES_FIELDS.ADDRESS]: Yup.array().nullable().notRequired(),\r\n\r\n\t\t\t\t[PARTIES_FIELDS.CONTACTS]: Yup.array()\r\n\t\t\t\t\t.required('Please add atleast one Contact')\r\n\t\t\t\t\t.min(1, 'Please add atleast one Contact'),\r\n\r\n\t\t\t\t[PARTIES_FIELDS.RECEIVABLE_ACCOUNT]: Yup.number().required('Receivable account is required'),\r\n\t\t\t\t[PARTIES_FIELDS.TAX_TEMPLATE]: Yup.number().required('Tax template is required')\r\n\t\t\t})\r\n\r\n\t\t})\r\n\t);\r\n}\r\n","import { useEffect, useState } from 'react';\r\nimport { useAuth } from './useAuth';\r\nimport { auth } from '../constants/auth';\r\n\r\n/**\r\n * In MFE mode the AuthContext of the common-hub is not bridged from the\r\n * host app, so `useAuth()` returns `user: null`. As a fallback we read\r\n * the persisted user object directly from localStorage so that default\r\n * values (e.g. company_id) are always available.\r\n */\r\nconst getEffectiveUser = (contextUser: any): any => {\r\n if (contextUser) return contextUser;\r\n try {\r\n const stored = window.localStorage.getItem(auth.storageUserKeyName);\r\n return stored ? JSON.parse(stored) : null;\r\n } catch {\r\n return null;\r\n }\r\n};\r\n\r\nconst setCompany = (user: any) => {\r\n return {\r\n value: user?.company_id,\r\n options: [{\r\n // Fallback to company_id when company_data is not present in the\r\n // user object (common in MFE where the stored payload is leaner).\r\n label: user?.company_data?.name ?? user?.company_id,\r\n value: user?.company_id\r\n }]\r\n }\r\n}\r\n\r\nexport const configMapper: Record<string, any> = {\r\n 'company': {\r\n callBack: setCompany,\r\n },\r\n 'company_id': {\r\n callBack: setCompany,\r\n },\r\n}\r\n\r\nexport const getDefaultConfig = (props: any, user: any) => {\r\n const { apiType, name } = props;\r\n const config = configMapper[apiType || name];\r\n if (config) {\r\n return config.callBack(user)\r\n }\r\n return {\r\n value: null,\r\n options: []\r\n }\r\n}\r\n\r\nexport const useDefaultConfig = ({\r\n props,\r\n setValue,\r\n isInternalOptions\r\n}: {\r\n props: any;\r\n setValue?: any;\r\n isInternalOptions: boolean;\r\n}) => {\r\n const { user: authUser } = useAuth();\r\n const contextUser = getEffectiveUser(authUser);\r\n const [defaultOptions, setDefaultOptions] = useState<any>([]);\r\n\r\n useEffect(() => {\r\n const user = getEffectiveUser(contextUser);\r\n const { value, options } = getDefaultConfig(props, user);\r\n\r\n if (value === null || value === undefined) {\r\n return;\r\n }\r\n\r\n if (typeof setValue === 'function') {\r\n setValue(`${props.fieldArrayName}.${props.name}`, props?.is_multiselect ? [value] : value);\r\n }\r\n\r\n if (!isInternalOptions) {\r\n setDefaultOptions(options);\r\n }\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props?.name, props?.apiType, contextUser, setValue, isInternalOptions]);\r\n\r\n return {\r\n defaultOptions\r\n }\r\n}","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\r\nimport { Controller, useFormContext, useWatch, Control } from 'react-hook-form';\r\nimport { dynamicSelectAdd } from './select-configuration';\r\nimport {\r\n Box,\r\n CircularProgress,\r\n Divider,\r\n IconButton,\r\n InputAdornment,\r\n MenuItem,\r\n MenuItemProps,\r\n OutlinedInput,\r\n Tooltip\r\n} from '@mui/material';\r\nimport PropTypes from 'prop-types';\r\nimport { debounce } from 'lodash';\r\nimport { sortBy } from \"lodash\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Add, Close } from '@mui/icons-material';\r\n\r\nimport Select from '../../../select/select';\r\nimport ChipOrPlaceholder from './chip-or-placeholder';\r\nimport Checkbox from '../../../checkbox/checkbox';\r\nimport Typography from '../../../typography/typography';\r\nimport Chip from '../../../chip/chip';\r\nimport { MoreIcon } from '../../../icons';\r\nimport { fetchApi } from '../../../../utils/api';\r\nimport './element.scss';\r\nimport { useAuth, useLanguage } from '@/hooks';\r\nimport { useDefaultConfig } from '@/hooks/useSetDefaultConfig';\r\nimport { auth } from '../../../../constants/auth';\r\n\r\n// Types\r\ninterface IOption {\r\n id: string | number;\r\n value: string | number;\r\n label: string | React.ReactNode;\r\n disabled?: boolean;\r\n isGroup?: boolean;\r\n options?: IOption[];\r\n searchLabel?: string;\r\n}\r\n\r\n// Custom API fetch function type for parent components\r\ninterface CustomFetchApiParams {\r\n search?: string;\r\n filters?: any;\r\n limit: number;\r\n skip: number;\r\n select?: string;\r\n order?: string;\r\n}\r\n\r\ninterface CustomFetchApiResponse {\r\n data: IOption[];\r\n pagination?: {\r\n totalCount: number;\r\n };\r\n}\r\n\r\ninterface IMenuItemsProps extends MenuItemProps {\r\n options: IOption[];\r\n multiple: boolean;\r\n placeholder: string;\r\n with_checkboxes: boolean;\r\n values: string | string[];\r\n field: IDynamicSearchSelectProps;\r\n disabledIds: (string | number)[];\r\n onChange: (value: string | string[]) => void;\r\n handleChange?: (value: string | string[]) => void;\r\n hasParent: boolean;\r\n t: (key: string) => string;\r\n // onFooterClick?: () => void;\r\n}\r\n\r\ninterface IDynamicSearchSelectProps {\r\n name: string;\r\n placeholder: string;\r\n label: string;\r\n size?: 'small' | 'medium';\r\n options: IOption[];\r\n formControl: Control<any>;\r\n defaultValue?: string | string[];\r\n fieldArrayName: string;\r\n id?: string;\r\n required?: boolean;\r\n is_multiselect?: boolean;\r\n position?: number;\r\n formType?: string;\r\n typeOfField?: string;\r\n disabled?: boolean;\r\n onChipRemove?: (value: string) => void;\r\n enable_footer?: boolean;\r\n footer_action?: string;\r\n onFooterClick?: () => void;\r\n is_loading?: boolean;\r\n selectedLabel?: string;\r\n isInternal?: boolean;\r\n disabledIds?: (string | number)[];\r\n getSelectedData?: (data: IOption | IOption[] | null, name: string) => void;\r\n attributes?: string[];\r\n handleChange?: (value: string | string[]) => void;\r\n hasParent?: boolean;\r\n sortOrder?: string;\r\n apiType?: string;\r\n handleOptions?: (value: any) => void;\r\n filterKey?: string;\r\n customeFilter?: Record<string, any>;\r\n refresh?: boolean;\r\n addType?: string;\r\n showCancelButton?: boolean;\r\n /** Custom API function to fetch options from parent component */\r\n customFetchApi?: (params: CustomFetchApiParams) => Promise<CustomFetchApiResponse>;\r\n isMergeOptions?: boolean;\r\n showItemTooltip?: boolean;\r\n}\r\n\r\ninterface IPaginationState {\r\n page: number;\r\n hasMore: boolean;\r\n isLoadingMore: boolean;\r\n total: number;\r\n}\r\n\r\n// Helper function to generate menu items\r\nconst generateMenuItems = ({\r\n options,\r\n multiple,\r\n placeholder,\r\n with_checkboxes,\r\n values,\r\n // field,\r\n disabledIds,\r\n onChange,\r\n handleChange,\r\n hasParent,\r\n t,\r\n // onFooterClick\r\n}: IMenuItemsProps): React.ReactElement[] => {\r\n const itemDisabled = (id: string | number) => disabledIds?.includes(id);\r\n const items: React.ReactElement[] = [];\r\n\r\n if (!multiple) {\r\n items.push(\r\n <MenuItem disabled value='' key=\"placeholder\" sx={{ opacity: `0 !important`, height: `0 !important`, p: `0 !important`, m: `0 !important` }}>\r\n <Typography type='s3' color='theme.secondary.1000'>\r\n <em>{t(placeholder)}</em>\r\n </Typography>\r\n </MenuItem>\r\n );\r\n }\r\n const selectedValues = (Array.isArray(values) && values?.length > 0) ? values?.filter((value) => value) : values;\r\n\r\n const handleParentChange = (parentValue: string, childOptions: IOption[]) => {\r\n const childValues = childOptions.map((child) => child.value);\r\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\r\n\r\n const isParentSelected = valueArray.includes(parentValue);\r\n const updatedValues = isParentSelected\r\n ? valueArray.filter((value) => value !== parentValue && !childValues.includes(value))\r\n : [...new Set([...valueArray, parentValue, ...childValues])];\r\n\r\n onChange(updatedValues);\r\n handleChange?.(updatedValues);\r\n };\r\n\r\n const isAllOptionsSelected = (parentValue: string, childOptions: IOption[]) => {\r\n const childValues = childOptions.map((child) => child.value);\r\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\r\n return childValues.every((childValue) => valueArray.includes(childValue));\r\n };\r\n\r\n const isSomeOptionsSelected = (childOptions: IOption[]) => {\r\n const childValues = childOptions.map((child) => child.value);\r\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\r\n return childValues.some((childValue) => valueArray.includes(childValue));\r\n };\r\n\r\n if (Array.isArray(options) && options.length > 0) {\r\n options.forEach((option) => {\r\n items.push(\r\n <MenuItem\r\n value={option.value}\r\n key={option.value}\r\n disabled={Boolean(option.disabled) || itemDisabled(option.id || option.value)}\r\n className={option.isGroup ? 'select--MenuItemHeader' : ''}\r\n >\r\n <Box sx={{ display: 'flex', gap: 1 }}>\r\n {multiple && with_checkboxes && (\r\n <Checkbox\r\n checked={\r\n hasParent\r\n ? isAllOptionsSelected(option.value, option.options || [])\r\n : Boolean(Array.isArray(selectedValues) ? selectedValues.includes(option.value) : selectedValues == option.value)\r\n }\r\n indeterminate={\r\n hasParent && isSomeOptionsSelected(option.options || [])\r\n }\r\n onChange={() => hasParent ? handleParentChange(option.value, option.options || []) : handleChange?.(option.value)}\r\n />\r\n )}\r\n <Typography\r\n type='s3'\r\n color='theme.secondary.1000'\r\n onClick={() => handleChange?.(option.value)}\r\n >\r\n {option.label}\r\n </Typography>\r\n </Box>\r\n </MenuItem>\r\n );\r\n\r\n if (option.isGroup && Array.isArray(option.options)) {\r\n option.options.forEach((opt) => {\r\n items.push(\r\n <MenuItem\r\n value={opt.value}\r\n disabled={Boolean(opt.disabled) || itemDisabled(opt.id || opt.value)}\r\n sx={{ pl: 5 }}\r\n key={`${option.value}-${opt.value}`}\r\n >\r\n <Box sx={{ display: 'flex', gap: 1 }}>\r\n {multiple && with_checkboxes && (\r\n <Checkbox\r\n checked={Boolean(Array.isArray(values) && values.includes(opt.value))}\r\n />\r\n )}\r\n <Typography\r\n type='s3'\r\n color='theme.secondary.1000'\r\n onClick={() => handleChange?.(String(opt.value))}\r\n >\r\n {opt.label == \"Payment Entries\" ? \"Payment and Collection Entries\" : opt.label || opt.value}\r\n </Typography>\r\n </Box>\r\n </MenuItem>\r\n );\r\n });\r\n }\r\n });\r\n }\r\n\r\n // if (field.enable_footer) {\r\n\r\n // }\r\n\r\n if (!items.length || (items.length == 1 && !multiple)) {\r\n items.push(\r\n <MenuItem disabled key=\"no-data\">\r\n No data available\r\n </MenuItem>\r\n );\r\n }\r\n\r\n return items;\r\n};\r\n\r\n// Selected items component\r\nconst SelectedItems: React.FC<{\r\n data: (string | number)[];\r\n options: IOption[];\r\n}> = ({ data, options }) => {\r\n const displayTitle = data.map(\r\n (selectedItem) =>\r\n options?.find((option) => option.value == selectedItem)?.label || ''\r\n );\r\n const filteredDisplayTitle = displayTitle.filter(Boolean);\r\n\r\n return (\r\n <Typography\r\n type='s4'\r\n color='inherit'\r\n sx={{ display: 'flex', gap: 1, alignItems: 'center', mt: 0.5 }}\r\n >\r\n {filteredDisplayTitle.slice(0, 4).join(', ')}\r\n {data.length > 4 && (\r\n <Chip variant='outlined' type='normal' label={<MoreIcon />} />\r\n )}\r\n </Typography>\r\n );\r\n};\r\n\r\nconst Loading = () => (\r\n <Typography fontStyle='italic' color='inherit' type='s3'>Loading...</Typography>\r\n)\r\n\r\nconst DynamicSearchSelect: React.FC<IDynamicSearchSelectProps> = React.memo((props) => {\r\n const watchedValue = useWatch({\r\n control: props.formControl,\r\n name: `${props.fieldArrayName}.${props.name}`\r\n });\r\n\r\n // In MFE mode each federated module ships its own copy of react-hook-form,\r\n // so the FormContext created by the host's FormProvider is invisible here\r\n // and useFormContext() returns null.\r\n // The internal `control` object (passed as formControl prop) does NOT expose\r\n // setValue — that lives only on the useForm() return value. We build a\r\n // stable fallback using useCallback so that useDefaultConfig's useEffect\r\n // (which has setValue as a dependency) does NOT re-fire on every render.\r\n const formContext = useFormContext();\r\n const { setValue: contextSetValue } = formContext || {};\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mfeFallbackSetValue = useCallback((fieldPath: string, value: any) => {\r\n const ctrl = props.formControl as any;\r\n if (!ctrl) return;\r\n // Write into internal form values\r\n const parts = fieldPath.split('.');\r\n let obj = ctrl._formValues;\r\n for (let i = 0; i < parts.length - 1; i++) {\r\n if (!obj[parts[i]]) obj[parts[i]] = {};\r\n obj = obj[parts[i]];\r\n }\r\n obj[parts[parts.length - 1]] = value;\r\n // Notify RHF subscribers so React re-renders\r\n ctrl._subjects?.state?.next({ name: fieldPath, values: { ...ctrl._formValues } });\r\n // props.formControl is stable for the lifetime of the form\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.formControl]);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const setValue: any = contextSetValue ?? mfeFallbackSetValue;\r\n const { t } = useTranslation();\r\n const { isRtl } = useLanguage();\r\n const { user: authUser } = useAuth();\r\n const contextUser = useMemo(() => {\r\n if (authUser) return authUser;\r\n try {\r\n const stored = window.localStorage.getItem(auth.storageUserKeyName);\r\n return stored ? JSON.parse(stored) : null;\r\n } catch {\r\n return null;\r\n }\r\n }, [authUser]);\r\n const selectRef = useRef<HTMLDivElement>(null);\r\n\r\n // State management\r\n const [options, setOptions] = useState<IOption[]>([]);\r\n const [selectedValue, setSelectedValue] = useState<any>(null);\r\n const [selectedOptions, setSelectedOptions] = useState<IOption[]>([]);\r\n const [loading, setLoading] = useState<boolean>(false);\r\n const [open, setOpen] = useState<boolean>(false);\r\n const [isAlreadyLoaded, setIsAlreadyLoaded] = useState<boolean>(false);\r\n const [prevFilter, setPrevFilter] = useState<any>(null);\r\n const [initialLoading, setInitialLoading] = useState<boolean>(false);\r\n const [searchQuery, setSearchQuery] = useState<string>(\"\");\r\n const [searchInitiate, setSearchInitiate] = useState<boolean>(false);\r\n const [addConfig, setAddConfig] = useState<any>(null);\r\n\r\n // Modal states\r\n const [isModalOpen, setIsModalOpen] = useState<boolean>(false);\r\n const [isAddLoading, setIsAddLoading] = useState<boolean>(false);\r\n\r\n\r\n // Pagination state\r\n const [pagination, setPagination] = useState<IPaginationState>({\r\n page: 1,\r\n hasMore: true,\r\n isLoadingMore: false,\r\n total: 0\r\n });\r\n\r\n // Props destructuring with defaults\r\n const {\r\n handleOptions,\r\n isInternal = false,\r\n disabledIds = [],\r\n getSelectedData,\r\n attributes = [],\r\n filterKey = 'id',\r\n customeFilter = {},\r\n refresh,\r\n handleChange,\r\n hasParent = false,\r\n sortOrder = 'id:-1',\r\n apiType,\r\n addType,\r\n showCancelButton = true,\r\n customFetchApi,\r\n isMergeOptions = false,\r\n } = props;\r\n\r\n const showItemTooltip = props.showItemTooltip ?? (apiType === 'salesItems');\r\n\r\n const limit = 25;\r\n\r\n // Memoized values\r\n // Memoized values\r\n const isInternalOptions = useMemo(() => {\r\n if (isMergeOptions && (apiType || customFetchApi)) return false;\r\n return (!apiType && !customFetchApi) || (isInternal ? (apiType || customFetchApi) && props.options?.length == 0 ? false : true : false);\r\n }, [isInternal, apiType, customFetchApi, props.options?.length, isMergeOptions]);\r\n\r\n\r\n //eslint-disable-next-line\r\n const cf = useMemo(() => customeFilter, [JSON.stringify(customeFilter)]);\r\n\r\n\r\n\r\n\r\n const { defaultOptions = [] } = useDefaultConfig({\r\n props,\r\n setValue,\r\n isInternalOptions\r\n });\r\n\r\n\r\n // Local search function\r\n const searchOptionsLocally = useCallback((searchTerm: string, value: any): IOption[] => {\r\n const currentOptions: IOption[] = (props.options && props.options.length > 0) ? props.options : (defaultOptions || []);\r\n if (!searchTerm) return currentOptions;\r\n\r\n const lowercasedSearchTerm = searchTerm.toLowerCase();\r\n\r\n const filteredOptions = hasParent\r\n ? currentOptions?.reduce((acc: IOption[], opt: IOption) => {\r\n const searchedOptions = opt.options?.filter((item: IOption) => {\r\n const label = React.isValidElement(item.label) ? item.searchLabel : String(item.label);\r\n return label?.toLowerCase().includes(lowercasedSearchTerm);\r\n });\r\n\r\n if (searchedOptions?.length) {\r\n acc.push({ ...opt, options: searchedOptions });\r\n }\r\n\r\n return acc;\r\n }, []) || []\r\n : currentOptions?.filter((opt: IOption) => {\r\n const label = React.isValidElement(opt.label) ? opt.searchLabel : String(opt.label);\r\n return label?.toLowerCase().includes(lowercasedSearchTerm);\r\n }) || [];\r\n\r\n //eslint-disable-next-line\r\n return sortBySelectedValues(filteredOptions, value);\r\n //eslint-disable-next-line\r\n }, [props.options, hasParent, defaultOptions]);\r\n\r\n // Get unique options\r\n const getUniqueOptions = useCallback((data: IOption[]): IOption[] => {\r\n const uniqueOptions = [\r\n ...new Map(data?.map(item => [item.value, item])).values()\r\n ];\r\n return uniqueOptions;\r\n }, []);\r\n\r\n // Sort by selected values\r\n const sortBySelectedValues = useCallback((arrayToSort: IOption[], value: any): IOption[] => {\r\n let selectedValues = Array.isArray(value) ? value : [value];\r\n selectedValues = selectedValues.map((item) => Number(item));\r\n const sortedValue = sortBy(arrayToSort, (item) => {\r\n const index = selectedValues.indexOf(item.id || item.value);\r\n return index == -1 ? Infinity : index;\r\n });\r\n return sortedValue;\r\n }, []);\r\n\r\n // Filtered options with pagination support\r\n const filteredOptions = useMemo(() => {\r\n if (isInternalOptions) {\r\n return searchOptionsLocally(searchQuery, watchedValue);\r\n }\r\n const apiOptions = sortBySelectedValues(getUniqueOptions([...options, ...selectedOptions]), watchedValue);\r\n if (isMergeOptions) {\r\n const localOptions = searchOptionsLocally(searchQuery, watchedValue);\r\n return getUniqueOptions([...localOptions, ...apiOptions]);\r\n }\r\n return apiOptions;\r\n //eslint-disable-next-line\r\n }, [options, selectedOptions, isInternalOptions, props.options, watchedValue, searchQuery, searchOptionsLocally, sortBySelectedValues, getUniqueOptions, isMergeOptions]);\r\n\r\n // Helper to get selected item data for tooltip\r\n const getSelectedDataOptions = useMemo(() => {\r\n if (!watchedValue || !filteredOptions.length) return null;\r\n const selected = filteredOptions.find(opt =>\r\n opt.id === watchedValue || opt.value === watchedValue\r\n );\r\n return selected || null;\r\n }, [watchedValue, filteredOptions]);\r\n\r\n // API Functions\r\n const fetchOptions = useCallback(async (searchTerm = '', flt = cf, page = 1, append = false) => {\r\n // Skip if neither apiType nor customFetchApi is provided\r\n if (!apiType && !customFetchApi) return [];\r\n\r\n setLoading(true);\r\n if (page > 1) {\r\n setPagination(prev => ({ ...prev, isLoadingMore: true }));\r\n }\r\n\r\n try {\r\n let data: IOption[] = [];\r\n let paginationResult: { totalCount?: number } = {};\r\n\r\n // Use custom API if provided, otherwise use default fetchApi\r\n if (customFetchApi) {\r\n const response = await customFetchApi({\r\n search: searchTerm,\r\n filters: flt,\r\n limit,\r\n skip: (page - 1) * limit,\r\n select: attributes?.join(','),\r\n order: sortOrder\r\n });\r\n data = response?.data || [];\r\n paginationResult = response?.pagination || {};\r\n } else {\r\n const response = await fetchApi({\r\n apiKey: apiType!,\r\n filters: {\r\n limit,\r\n skip: (page - 1) * limit,\r\n search: searchTerm,\r\n filters: flt,\r\n select: attributes,\r\n order: sortOrder\r\n }\r\n });\r\n data = response?.data || [];\r\n paginationResult = response?.pagination || {};\r\n }\r\n\r\n if (data && Array.isArray(data)) {\r\n const newOptions = append ? [...options, ...data] : data;\r\n\r\n updateOptions(newOptions, append);\r\n handleSelectedValue(data);\r\n // Update pagination\r\n setPagination(prev => ({\r\n ...prev,\r\n page,\r\n hasMore: (paginationResult?.totalCount || 0) > (page * limit),\r\n total: paginationResult?.totalCount || 0,\r\n isLoadingMore: false\r\n }));\r\n }\r\n\r\n return data || [];\r\n } catch (error) {\r\n console.error('Error fetching options:', error);\r\n setPagination(prev => ({ ...prev, isLoadingMore: false }));\r\n return [];\r\n } finally {\r\n setLoading(false);\r\n }\r\n //eslint-disable-next-line\r\n }, [apiType, customFetchApi, options, attributes, sortOrder, limit, cf]);\r\n\r\n // Handle scroll pagination\r\n const handleScroll = useCallback((event: React.UIEvent<HTMLDivElement>) => {\r\n const { scrollTop, scrollHeight, clientHeight } = event.currentTarget;\r\n const isBottom = scrollHeight - scrollTop <= clientHeight + 10;\r\n\r\n if (isBottom && pagination.hasMore && !pagination.isLoadingMore && !isInternalOptions) {\r\n const nextPage = pagination.page + 1;\r\n fetchOptions(searchQuery, cf, nextPage, true);\r\n }\r\n }, [pagination.hasMore, pagination.isLoadingMore, pagination.page, isInternalOptions, searchQuery, cf, fetchOptions]);\r\n\r\n // Update options\r\n const updateOptions = useCallback((newOptions: IOption[], append = false) => {\r\n const oldOptions = append ? options : selectedOptions;\r\n const uniqueOptions = getUniqueOptions([...oldOptions, ...newOptions]);\r\n setOptions(uniqueOptions);\r\n }, [options, selectedOptions, getUniqueOptions]);\r\n\r\n // Handle selected value\r\n const handleSelectedValue = useCallback(async (updateOptions: IOption[]) => {\r\n if (!watchedValue) return;\r\n let filterValue = props.is_multiselect ? watchedValue : [watchedValue];\r\n filterValue = Array.isArray(filterValue) ? filterValue?.filter(i => i) : [];\r\n filterValue = Array.isArray(filterValue) ? filterValue?.map((item) => Number(item)) : [];\r\n const isInOptions = updateOptions?.filter((item) =>\r\n Array.isArray(filterValue) ? filterValue.includes(item.id || item.value) : (item[filterKey] || item.value || item.id) == filterValue\r\n );\r\n\r\n if (Array.isArray(isInOptions) && isInOptions.length > 0) {\r\n getSelectedData?.(props.is_multiselect ? isInOptions : isInOptions[0], props.name);\r\n return true;\r\n }\r\n return false;\r\n //eslint-disable-next-line\r\n }, [props.is_multiselect, props.name, watchedValue, filterKey, getSelectedData, filteredOptions]);\r\n\r\n // Fetch options by ID\r\n const fetchIdOptions = useCallback(async () => {\r\n if (open) return;\r\n if (await handleSelectedValue(filteredOptions)) return;\r\n\r\n const condition = props.is_multiselect ?\r\n Array.isArray(watchedValue) && watchedValue.length > 0 :\r\n Boolean(watchedValue);\r\n\r\n if (condition) {\r\n setInitialLoading(true);\r\n const response = await fetchOptions('', { ...cf, '&id.in': watchedValue }, 1, false);\r\n setInitialLoading(false);\r\n\r\n if (response.length == 0 && setValue && !isInternalOptions) {\r\n // setValue(`${props.fieldArrayName}.${props.name}`, props.is_multiselect ? [] : null);\r\n }\r\n }\r\n //eslint-disable-next-line\r\n }, [open, watchedValue, JSON.stringify(cf)]);\r\n\r\n // Initial fetch\r\n const initialFetch = useCallback(async () => {\r\n const condition = JSON.stringify(cf) !== JSON.stringify(prevFilter);\r\n\r\n if (condition) {\r\n setPrevFilter(cf);\r\n setOptions([]);\r\n setIsAlreadyLoaded(false);\r\n setPagination({\r\n page: 1,\r\n hasMore: true,\r\n isLoadingMore: false,\r\n total: 0\r\n });\r\n }\r\n\r\n if (!isInternalOptions && !isAlreadyLoaded) {\r\n await fetchOptions(searchQuery, cf, 1, false);\r\n setIsAlreadyLoaded(true);\r\n }\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [cf, isInternalOptions, isAlreadyLoaded]);\r\n\r\n // Debounced search\r\n const debouncedSearch = useMemo(\r\n () => debounce(async (searchTerm: string) => {\r\n if (loading) return;\r\n\r\n if (!searchTerm && !isInternalOptions && searchInitiate) {\r\n setPagination({\r\n page: 1,\r\n hasMore: true,\r\n isLoadingMore: false,\r\n total: 0\r\n });\r\n await fetchOptions('', cf, 1, false);\r\n }\r\n if (searchTerm.length > 1 && !isInternalOptions) {\r\n setPagination({\r\n page: 1,\r\n hasMore: true,\r\n isLoadingMore: false,\r\n total: 0\r\n });\r\n await fetchOptions(searchTerm, cf, 1, false);\r\n }\r\n }, 700),\r\n //eslint-disable-next-line\r\n [isInternalOptions, searchInitiate, cf]\r\n );\r\n\r\n // Reset value function\r\n const resetValue = useCallback((field: any) => {\r\n field.onChange(props.is_multiselect ? [] : null);\r\n if (getSelectedData) {\r\n getSelectedData(null, props.name);\r\n }\r\n }, [props.is_multiselect, props.name, getSelectedData]);\r\n\r\n // Handle close\r\n const handleClose = useCallback(() => {\r\n setOpen(false);\r\n if (searchQuery.length > 0) {\r\n setIsAlreadyLoaded(false);\r\n }\r\n setSearchInitiate(false);\r\n setSearchQuery('');\r\n }, [searchQuery]);\r\n\r\n const handleModalOpen = useCallback(() => {\r\n setIsModalOpen(true);\r\n }, []);\r\n\r\n\r\n\r\n // Handle modal save\r\n const handleModalSave = useCallback(async (payload: any) => {\r\n if (!addConfig || !addConfig.api) {\r\n console.error('Add configuration is not properly set');\r\n return;\r\n }\r\n\r\n setIsAddLoading(true);\r\n try {\r\n const result = await addConfig.api(payload);\r\n setIsAddLoading(false);\r\n setIsModalOpen(false);\r\n if (!isInternalOptions) {\r\n setPagination({\r\n page: 1,\r\n hasMore: true,\r\n isLoadingMore: false,\r\n total: 0\r\n });\r\n setIsAlreadyLoaded(false);\r\n await fetchOptions('', cf, 1, false);\r\n }\r\n if (result && result.data) {\r\n const newValue = props.is_multiselect\r\n ? [...(watchedValue || []), result.data.id]\r\n : result.data.id;\r\n\r\n if (setValue) {\r\n setValue(`${props.fieldArrayName}.${props.name}`, newValue);\r\n }\r\n }\r\n } catch (error) {\r\n console.log(\"error\", error);\r\n setIsAddLoading(false);\r\n }\r\n\r\n\r\n }, [addConfig, isInternalOptions, fetchOptions, cf, props.is_multiselect, props.fieldArrayName, props.name, watchedValue, setValue]);\r\n\r\n // Effects\r\n useEffect(() => {\r\n if (handleOptions) {\r\n handleOptions(selectedValue);\r\n }\r\n }, [handleOptions, selectedValue]);\r\n\r\n useEffect(() => {\r\n if (open) {\r\n initialFetch();\r\n }\r\n }, [open, initialFetch]);\r\n\r\n useEffect(() => {\r\n fetchIdOptions();\r\n }, [fetchIdOptions]);\r\n\r\n useEffect(() => {\r\n if (refresh) {\r\n setPagination({\r\n page: 1,\r\n hasMore: true,\r\n isLoadingMore: false,\r\n total: 0\r\n });\r\n fetchOptions('', cf, 1, false);\r\n }\r\n }, [refresh, fetchOptions, cf]);\r\n\r\n useEffect(() => {\r\n if (open) {\r\n debouncedSearch(searchQuery);\r\n }\r\n return () => debouncedSearch.cancel();\r\n }, [searchQuery, open, debouncedSearch]);\r\n\r\n useEffect(() => {\r\n if (watchedValue && !open) {\r\n const selectedData = options?.filter((item) =>\r\n props.is_multiselect ?\r\n Array.isArray(watchedValue) && watchedValue.includes(item.id || item.value) :\r\n (item.id || item.value) == watchedValue\r\n );\r\n setSelectedOptions(selectedData || []);\r\n }\r\n }, [watchedValue, options, props.is_multiselect]);\r\n\r\n const removeUndefined = useCallback((selectOptions: any[]) => {\r\n return Array.isArray(selectOptions) ? selectOptions.filter(Boolean) : [];\r\n }, []);\r\n\r\n useEffect(() => {\r\n const config = dynamicSelectAdd(addType);\r\n setAddConfig(config);\r\n }, [addType])\r\n\r\n\r\n\r\n return (\r\n <Controller\r\n control={props.formControl}\r\n name={`${props.fieldArrayName}.${props.name}`}\r\n render={({ field, fieldState }) => (\r\n <>\r\n {props.placeholder == 'Select Currency' && setSelectedValue(field.value)}\r\n {showItemTooltip ? (\r\n <Tooltip\r\n title={getSelectedDataOptions?.label ? String(getSelectedDataOptions.label) : ''}\r\n placement='top'\r\n arrow\r\n slotProps={{\r\n popper: {\r\n modifiers: [{ name: 'offset', options: { offset: [0, -25] } }],\r\n },\r\n tooltip: {\r\n sx: { maxWidth: 500 },\r\n },\r\n }}\r\n >\r\n <span>\r\n <Select\r\n {...field}\r\n ref={selectRef}\r\n open={open}\r\n onOpen={() => {\r\n setOpen(true);\r\n setTimeout(() => {\r\n const searchInput = document.querySelector(\r\n `input[placeholder=\"Search ${props.label}\"]`\r\n ) as HTMLInputElement;\r\n console.log('Active Search input:', searchInput);\r\n searchInput?.focus();\r\n }, 150);\r\n }}\r\n onClose={handleClose}\r\n fullWidth\r\n dataPosition={props.position}\r\n dataName={`${props.fieldArrayName}.${props.name}`}\r\n placeholder={props.placeholder}\r\n label={props.label}\r\n defaultValue={props.defaultValue || (props.is_multiselect ? [] : '')}\r\n searchValue={searchQuery}\r\n required={props.formType == 'builder' ? false : props.required}\r\n size={props.size || 'small'}\r\n multiple={props.is_multiselect || false}\r\n disabled={props.disabled}\r\n sx={(props.is_multiselect && field?.value?.length) ? { \"& .MuiSelect-select\": { padding: '5.5px !important' } } : {}}\r\n variant='outlined'\r\n value={\r\n initialLoading\r\n ? (props.is_multiselect ? [] : '')\r\n : (field.value?.id || field.value || (props.is_multiselect ? [] : ''))\r\n }\r\n className={\r\n props.is_multiselect && removeUndefined(field.value)?.length\r\n ? 'MultiSelect filter-select'\r\n : ''\r\n }\r\n MenuProps={{\r\n PaperProps: {\r\n onScroll: handleScroll,\r\n style: { maxHeight: 300 }\r\n }\r\n }}\r\n\r\n renderValue={(selected: any) => {\r\n if (Array.isArray(selected)) {\r\n return (\r\n <ChipOrPlaceholder\r\n selectedLabel={props.selectedLabel}\r\n data={removeUndefined(selected)}\r\n placeholder={(loading || props.is_loading) ? <Loading /> : `${t('common.search')} ${props.label}`}\r\n onDelete={props.onChipRemove}\r\n disabled={props.disabled}\r\n chipProps={{\r\n sx: {\r\n background: '#ebf9f2',\r\n border: 0,\r\n // borderRadius: '15px',\r\n '& .MuiTypography-body1': {\r\n color: '#289b64',\r\n fontWeight: \"500\",\r\n }\r\n }\r\n }}\r\n />\r\n );\r\n } else {\r\n const selectedOption = filteredOptions.find(\r\n (option) => (option.value?.id || option.value) == selected\r\n );\r\n return (loading || props.is_loading) ? <Loading /> : selectedOption?.label ||\r\n (typeof props.label == 'string' ?\r\n `${t('common.search')} ${props.label}` :\r\n props.placeholder);\r\n }\r\n }}\r\n searchPlaceholder={`${t('common.search')} ${props.label}`}\r\n handleSearch={(text: string) => {\r\n setSearchQuery(text);\r\n setSearchInitiate(true);\r\n }}\r\n error={Boolean(fieldState.error?.message)}\r\n helperText={fieldState.error?.message || ''}\r\n onBlur={field.onBlur}\r\n input={\r\n <OutlinedInput\r\n label=''\r\n endAdornment={\r\n <InputAdornment position='end'>\r\n {(loading || props.is_loading) ? (\r\n <CircularProgress\r\n size={20}\r\n sx={{ mr: 3, color: \"#4AC08C\" }}\r\n />\r\n ) : (\r\n !props.disabled &&\r\n (props.is_multiselect ?\r\n (Array.isArray(field.value) && field.value.length > 0) :\r\n Boolean(field.value)) && showCancelButton && (\r\n <IconButton\r\n aria-label='clear selection'\r\n onClick={() => resetValue(field)}\r\n edge='end'\r\n sx={isRtl ? { ml: 2.5 } : { mr: 1.5 }}\r\n size='small'\r\n >\r\n <Close sx={{ fontSize: '1rem' }} />\r\n </IconButton>\r\n )\r\n )}\r\n </InputAdornment>\r\n }\r\n />\r\n }\r\n >\r\n {generateMenuItems({\r\n options: filteredOptions,\r\n multiple: Boolean(props.is_multiselect),\r\n placeholder: props.placeholder,\r\n values: field.value,\r\n with_checkboxes: true,\r\n field: props,\r\n disabledIds,\r\n onChange: field.onChange,\r\n handleChange,\r\n hasParent,\r\n t,\r\n // onFooterClick: () => {\r\n // if (props?.onFooterClick) {\r\n // props?.onFooterClick();\r\n // } else {\r\n // handleModalOpen();\r\n // }\r\n // }\r\n })}\r\n {props?.enable_footer &&\r\n <Box key=\"footer\" sx={{ position: 'sticky', bottom: 0, background: '#fff', zIndex: 1 }}>\r\n <Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\r\n <MenuItem sx={{ gap: 1 }} onClick={\r\n () => {\r\n if (props?.onFooterClick) {\r\n props?.onFooterClick();\r\n } else {\r\n handleModalOpen();\r\n }\r\n }\r\n\r\n }>\r\n <Add fontSize='small' />\r\n <Typography type='s4' color='theme.secondary.1000'>\r\n Create New {props.label}\r\n </Typography>\r\n </MenuItem>\r\n </Box>}\r\n {pagination.isLoadingMore && (\r\n <MenuItem disabled>\r\n <Box sx={{ display: 'flex', justifyContent: 'center', width: '100%' }}>\r\n <CircularProgress size={20} />\r\n </Box>\r\n </MenuItem>\r\n )}\r\n </Select>\r\n </span>\r\n </Tooltip>\r\n ) : (\r\n <Select\r\n {...field}\r\n ref={selectRef}\r\n open={open}\r\n onOpen={() => {\r\n setOpen(true);\r\n setTimeout(() => {\r\n const searchInput = document.querySelector(\r\n `input[placeholder=\"Search ${props.label}\"]`\r\n ) as HTMLInputElement;\r\n console.log('Active Search input:', searchInput);\r\n searchInput?.focus();\r\n }, 150);\r\n }}\r\n onClose={handleClose}\r\n fullWidth\r\n dataPosition={props.position}\r\n dataName={`${props.fieldArrayName}.${props.name}`}\r\n placeholder={props.placeholder}\r\n label={props.label}\r\n defaultValue={props.defaultValue || (props.is_multiselect ? [] : '')}\r\n searchValue={searchQuery}\r\n required={props.formType == 'builder' ? false : props.required}\r\n size={props.size || 'small'}\r\n multiple={props.is_multiselect || false}\r\n disabled={props.disabled}\r\n sx={(props.is_multiselect && field?.value?.length) ? { \"& .MuiSelect-select\": { padding: '5.5px !important' } } : {}}\r\n variant='outlined'\r\n value={\r\n initialLoading\r\n ? (props.is_multiselect ? [] : '')\r\n : (field.value?.id || field.value || (props.is_multiselect ? [] : ''))\r\n }\r\n className={\r\n props.is_multiselect && removeUndefined(field.value)?.length\r\n ? 'MultiSelect filter-select'\r\n : ''\r\n }\r\n MenuProps={{\r\n PaperProps: {\r\n onScroll: handleScroll,\r\n style: { maxHeight: 300 }\r\n }\r\n }}\r\n\r\n renderValue={(selected: any) => {\r\n if (Array.isArray(selected)) {\r\n return (\r\n <ChipOrPlaceholder\r\n selectedLabel={props.selectedLabel}\r\n data={removeUndefined(selected)}\r\n placeholder={(loading || props.is_loading) ? <Loading /> : `${t('common.search')} ${props.label}`}\r\n onDelete={props.onChipRemove}\r\n disabled={props.disabled}\r\n chipProps={{\r\n sx: {\r\n background: '#ebf9f2',\r\n border: 0,\r\n // borderRadius: '15px',\r\n '& .MuiTypography-body1': {\r\n color: '#289b64',\r\n fontWeight: \"500\",\r\n }\r\n }\r\n }}\r\n />\r\n );\r\n } else {\r\n const selectedOption = filteredOptions.find(\r\n (option) => (option.value?.id || option.value) == selected\r\n );\r\n return (loading || props.is_loading) ? <Loading /> : selectedOption?.label ||\r\n (typeof props.label == 'string' ?\r\n `${t('common.search')} ${props.label}` :\r\n props.placeholder);\r\n }\r\n }}\r\n searchPlaceholder={`${t('common.search')} ${props.label}`}\r\n handleSearch={(text: string) => {\r\n setSearchQuery(text);\r\n setSearchInitiate(true);\r\n }}\r\n error={Boolean(fieldState.error?.message)}\r\n helperText={fieldState.error?.message || ''}\r\n onBlur={field.onBlur}\r\n input={\r\n <OutlinedInput\r\n label=''\r\n endAdornment={\r\n <InputAdornment position='end'>\r\n {(loading || props.is_loading) ? (\r\n <CircularProgress\r\n size={20}\r\n sx={{ mr: 3, color: \"#4AC08C\" }}\r\n />\r\n ) : (\r\n !props.disabled &&\r\n (props.is_multiselect ?\r\n (Array.isArray(field.value) && field.value.length > 0) :\r\n Boolean(field.value)) && showCancelButton && (\r\n <IconButton\r\n aria-label='clear selection'\r\n onClick={() => resetValue(field)}\r\n edge='end'\r\n sx={isRtl ? { ml: 2.5 } : { mr: 1.5 }}\r\n size='small'\r\n >\r\n <Close sx={{ fontSize: '1rem' }} />\r\n </IconButton>\r\n )\r\n )}\r\n </InputAdornment>\r\n }\r\n />\r\n }\r\n >\r\n {generateMenuItems({\r\n options: filteredOptions,\r\n multiple: Boolean(props.is_multiselect),\r\n placeholder: props.placeholder,\r\n values: field.value,\r\n with_checkboxes: true,\r\n field: props,\r\n disabledIds,\r\n onChange: field.onChange,\r\n handleChange,\r\n hasParent,\r\n t,\r\n // onFooterClick: () => {\r\n // if (props?.onFooterClick) {\r\n // props?.onFooterClick();\r\n // } else {\r\n // handleModalOpen();\r\n // }\r\n // }\r\n })}\r\n {props?.enable_footer &&\r\n <Box key=\"footer\" sx={{ position: 'sticky', bottom: 0, background: '#fff', zIndex: 1 }}>\r\n <Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\r\n <MenuItem sx={{ gap: 1 }} onClick={\r\n () => {\r\n if (props?.onFooterClick) {\r\n props?.onFooterClick();\r\n } else {\r\n handleModalOpen();\r\n }\r\n }\r\n\r\n }>\r\n <Add fontSize='small' />\r\n <Typography type='s4' color='theme.secondary.1000'>\r\n Create New {props.label}\r\n </Typography>\r\n </MenuItem>\r\n </Box>}\r\n {pagination.isLoadingMore && (\r\n <MenuItem disabled>\r\n <Box sx={{ display: 'flex', justifyContent: 'center', width: '100%' }}>\r\n <CircularProgress size={20} />\r\n </Box>\r\n </MenuItem>\r\n )}\r\n </Select>\r\n )}\r\n\r\n {/* Modal for adding new items */}\r\n {addConfig && addConfig.component && (\r\n <>\r\n {React.createElement(addConfig.component, {\r\n isOpen: isModalOpen,\r\n setIsOpen: setIsModalOpen,\r\n isLoading: isAddLoading,\r\n onSave: handleModalSave,\r\n modalProps: {\r\n maxWidth: 'md',\r\n fullWidth: true\r\n },\r\n ...props?.modalComponentProps\r\n })}\r\n </>\r\n )}\r\n\r\n {props.is_multiselect && Array.isArray(field.value) && (\r\n <SelectedItems\r\n data={field.value}\r\n options={filteredOptions}\r\n />\r\n )}\r\n </>\r\n )}\r\n />\r\n );\r\n});\r\n\r\nDynamicSearchSelect.propTypes = {\r\n name: PropTypes.string.isRequired,\r\n placeholder: PropTypes.string.isRequired,\r\n label: PropTypes.string.isRequired,\r\n size: PropTypes.string,\r\n options: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\r\n value: PropTypes.any\r\n })\r\n ).isRequired,\r\n formControl: PropTypes.object.isRequired,\r\n defaultValue: PropTypes.any,\r\n fieldArrayName: PropTypes.string.isRequired,\r\n id: PropTypes.string,\r\n required: PropTypes.bool,\r\n is_multiselect: PropTypes.bool,\r\n position: PropTypes.number,\r\n formType: PropTypes.string,\r\n typeOfField: PropTypes.string,\r\n disabled: PropTypes.bool,\r\n onChipRemove: PropTypes.func,\r\n enable_footer: PropTypes.bool,\r\n footer_action: PropTypes.string,\r\n onFooterClick: PropTypes.func,\r\n is_loading: PropTypes.bool,\r\n selectedLabel: PropTypes.string,\r\n isInternal: PropTypes.bool,\r\n disabledIds: PropTypes.array,\r\n getSelectedData: PropTypes.func,\r\n attributes: PropTypes.array,\r\n handleChange: PropTypes.func,\r\n hasParent: PropTypes.bool,\r\n sortOrder: PropTypes.string,\r\n apiType: PropTypes.string,\r\n handleOptions: PropTypes.func,\r\n filterKey: PropTypes.string,\r\n customeFilter: PropTypes.object,\r\n refresh: PropTypes.bool,\r\n addType: PropTypes.string,\r\n modalComponentProps: PropTypes.object,\r\n showCancelButton: PropTypes.bool,\r\n customFetchApi: PropTypes.func\r\n};\r\n\r\nexport default DynamicSearchSelect;","/* eslint-disable @typescript-eslint/no-unused-vars */\r\n/* eslint-disable unused-imports/no-unused-vars */\r\nimport { styled } from '@mui/material/styles';\r\nimport Typography from \"../typography/typography\";\r\nimport ReactPhoneInput, { CountryData } from \"react-phone-input-2\";\r\nimport \"react-phone-input-2/lib/material.css\";\r\nimport { images } from \"../../assets/images\";\r\nimport { useLanguage } from \"../../hooks/useLangauge\";\r\nimport { memo, useEffect } from \"react\";\r\n\r\nconst StyledInput = styled(ReactPhoneInput)<{ isRtl: boolean }>(({ theme: { palette }, isRtl }) => ({\r\n \"&:hover\": {\r\n border: \"none\",\r\n },\r\n \"&.react-tel-input\": {\r\n \".form-control\": {\r\n borderRadius: \"0.25rem\",\r\n padding: \"8px 8px 8px 55px\", // Ensure space for flag on the left\r\n border: `1px solid ${palette.theme?.secondary[300]}`,\r\n fontSize: \"0.875rem\",\r\n width: \"100%\",\r\n maxHeight: \"36.13px\",\r\n direction: \"ltr\", // Force LTR direction for input to start from left\r\n textAlign: \"left\", // Force left alignment for input value\r\n\r\n \":hover\": {\r\n border: `1px solid ${palette.theme?.secondary[400]}`,\r\n },\r\n\r\n \":focus\": {\r\n border: `1px solid ${palette.theme?.primary[600]}`,\r\n boxShadow: \"none\",\r\n },\r\n \":disabled\": {\r\n background: palette.theme?.secondary[200],\r\n color: palette.theme?.secondary[800],\r\n },\r\n\r\n \"&.invalid-number\": {\r\n border: `1px solid ${palette.theme?.error[600]}`,\r\n \":focus\": {\r\n boxShadow: \"none\",\r\n },\r\n },\r\n },\r\n\r\n \".flag-dropdown\": {\r\n left: \"0\",\r\n right: \"auto\",\r\n borderRadius: \"0.25rem 0 0 0.25rem\",\r\n\r\n \".selected-flag\": {\r\n borderRadius: \"0.25rem 0 0 0.25rem\",\r\n\r\n \"&:hover\": {\r\n backgroundColor: palette.theme?.secondary[100],\r\n },\r\n },\r\n },\r\n\r\n \".country-list\": {\r\n left: isRtl ? \"auto\" : \"0\",\r\n right: isRtl ? \"0\" : \"auto\",\r\n\r\n \".search\": {\r\n padding: \"0.5rem 0.5rem 0.5rem 0.75rem\",\r\n borderBottom: \"1px solid #F3F2F2\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n direction: isRtl ? \"rtl\" : \"ltr\",\r\n\r\n \".search-emoji\": {\r\n position: \"absolute\",\r\n left: isRtl ? \"auto\" : \"1.25rem\",\r\n right: isRtl ? \"1.25rem\" : \"auto\",\r\n\r\n \":first-child\": {\r\n display: \"block\",\r\n color: \"transparent\",\r\n background: `url(${images.search})`,\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundPosition: \"center\",\r\n },\r\n },\r\n\r\n \".search-box\": {\r\n width: \"100%\",\r\n marginLeft: \"0rem\",\r\n border: `1px solid ${palette.theme?.secondary[200]}`,\r\n backgroundColor: palette.theme?.secondary[100],\r\n borderRadius: \"0.5rem\",\r\n padding: \"0.4rem\",\r\n paddingLeft: isRtl ? \"0.4rem\" : \"2rem\",\r\n paddingRight: isRtl ? \"2rem\" : \"0.4rem\",\r\n fontSize: \"0.8125rem\",\r\n direction: isRtl ? \"rtl\" : \"ltr\",\r\n textAlign: isRtl ? \"right\" : \"left\",\r\n\r\n \":hover\": {\r\n border: `1px solid ${palette.theme?.secondary[300]}`,\r\n },\r\n\r\n \":focus\": {\r\n border: `1px solid ${palette.theme?.primary[600]}`,\r\n },\r\n },\r\n },\r\n\r\n \".country\": {\r\n fontSize: \"0.8125rem\",\r\n direction: isRtl ? \"rtl\" : \"ltr\",\r\n textAlign: isRtl ? \"right\" : \"left\",\r\n\r\n \".dial-code\": {\r\n fontSize: \"0.75rem\",\r\n position: \"absolute\",\r\n right: isRtl ? \"auto\" : \"0.5rem\",\r\n left: isRtl ? \"0.5rem\" : \"auto\",\r\n },\r\n },\r\n },\r\n },\r\n}));\r\n\r\ninterface IPhoneInput {\r\n error?: boolean;\r\n name?: string;\r\n dataPosition?: number;\r\n dataName?: string;\r\n label: string;\r\n required?: boolean;\r\n placeholder?: string;\r\n default_value?: string;\r\n onChange?: (e: any) => void;\r\n disabled?: boolean;\r\n setCountryCodeField?: (country: CountryData) => void;\r\n helperText?: string;\r\n isInlineEditing?: boolean\r\n}\r\n\r\nfunction fixPhoneDropdown() {\r\n let dropdown, input;\r\n\r\n const positionDropdown = () => {\r\n if (!dropdown || !input) return;\r\n const rect = input.getBoundingClientRect();\r\n\r\n dropdown.style.position = \"fixed\";\r\n dropdown.style.top = rect.bottom + \"px\";\r\n dropdown.style.left = rect.left + \"px\";\r\n dropdown.style.zIndex = \"2000\";\r\n };\r\n\r\n document.addEventListener(\"click\", () => {\r\n dropdown = document.querySelector(\".react-tel-input .country-list\");\r\n input = document.querySelector(\".react-tel-input input\");\r\n\r\n if (dropdown && input && !document.body.contains(dropdown)) {\r\n document.body.appendChild(dropdown);\r\n }\r\n\r\n positionDropdown();\r\n });\r\n\r\n // reposition on scroll (any container) and resize\r\n window.addEventListener(\"scroll\", positionDropdown, true); // true = capture all scrolls\r\n window.addEventListener(\"resize\", positionDropdown);\r\n}\r\n\r\n\r\nconst HelperTextWrapper = styled('div')(() => ({\r\n marginTop: '0.4rem',\r\n}));\r\n\r\nconst PhoneInput = memo(({\r\n name,\r\n error = false,\r\n dataName,\r\n dataPosition,\r\n label,\r\n required = false,\r\n placeholder,\r\n default_value,\r\n onChange,\r\n disabled,\r\n setCountryCodeField,\r\n helperText,\r\n isInlineEditing = false,\r\n ...rest\r\n}: IPhoneInput) => {\r\n const { isRtl } = useLanguage();\r\n\r\n useEffect(() => {\r\n if (isInlineEditing) {\r\n fixPhoneDropdown(isInlineEditing)\r\n }\r\n }, [isInlineEditing])\r\n\r\n useEffect(() => {\r\n if (typeof setCountryCodeField === \"function\") {\r\n setCountryCodeField?.({ dialCode: \"971\" } as CountryData);\r\n }\r\n }, [])\r\n\r\n return (\r\n <>\r\n <Typography\r\n type=\"s5\"\r\n weight=\"medium\"\r\n mb={0.5}\r\n color={error ? \"theme.error.600\" : \"theme.secondary.800\"}\r\n data-position={dataPosition}\r\n data-name={dataName}\r\n >\r\n {label} {required && <span className=\"requiredStar\">*</span>}\r\n </Typography>\r\n <StyledInput\r\n dropdownContainer={document.body}\r\n isRtl={isRtl}\r\n specialLabel={\"\"}\r\n enableSearch\r\n searchPlaceholder=\"Search Country\"\r\n isValid={!error}\r\n country={\"ae\"}\r\n searchNotFound=\"Not Found!\"\r\n inputProps={{\r\n name: name,\r\n required: required,\r\n }}\r\n placeholder={placeholder}\r\n value={default_value || rest?.value}\r\n onChange={(value, country) => {\r\n setCountryCodeField?.(country as CountryData);\r\n onChange?.(value);\r\n }}\r\n disabled={disabled}\r\n />\r\n {helperText && (\r\n <HelperTextWrapper>\r\n <Typography\r\n type=\"s5\"\r\n color={error ? \"theme.error.600\" : \"theme.secondary.600\"}\r\n >\r\n {helperText}\r\n </Typography>\r\n </HelperTextWrapper>\r\n )}\r\n </>\r\n );\r\n});\r\n\r\nexport { PhoneInput };\r\nexport default PhoneInput;","import { Controller } from \"react-hook-form\";\nimport PropTypes from \"prop-types\";\n\nimport \"./element.scss\";\nimport PhoneInput from \"../../../phone-input/phone-input\";\nimport { memo } from \"react\";\n\nconst DynamicPhone = memo((props: any) => {\n return (\n <Controller\n control={props.formControl}\n name={`${props.fieldArrayName}.${props.name}`}\n render={({ field,fieldState }) => (\n <PhoneInput\n {...field}\n dataPosition={props.position}\n dataName={`${props.fieldArrayName}.${props.name}`}\n label={props.label}\n required={props.formType === \"builder\" ? false : props.required}\n placeholder={props.placeholder}\n default_value={props.default_value}\n onChange={(val) => field.onChange(val)}\n error={Boolean(fieldState.error?.message)}\n disabled={props.disabled}\n helperText={fieldState.error?.message || \"\"}\n setCountryCodeField={props.setCountryCodeField}\n />\n )}\n />\n );\n});\n\nDynamicPhone.propTypes = {\n formControl: PropTypes.shape({\n register: PropTypes.func.isRequired,\n setValue: PropTypes.func,\n }).isRequired,\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n fieldArrayName: PropTypes.string,\n required: PropTypes.bool,\n position: PropTypes.number,\n formType: PropTypes.string,\n placeholder: PropTypes.string,\n default_value: PropTypes.string,\n type: PropTypes.string,\n typeOfField: PropTypes.string,\n disabled: PropTypes.bool,\n setCountryCodeField: PropTypes.func,\n};\n\nexport { DynamicPhone };\nexport default DynamicPhone;\n","import React from 'react';\r\n\r\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\r\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\r\nimport { DateTimePicker as Date } from '@mui/x-date-pickers/DateTimePicker';\r\nimport Typography from '../typography/typography';\r\nimport { styled } from '@mui/material/styles';\r\nimport logo from '../../assets/images';\r\nimport dayjs from 'dayjs';\r\nimport './date-time-picker.scss'\r\n\r\nexport interface DatePickerProps {\r\n\tlabel: string;\r\n\tdisabled?: boolean;\r\n\terror?: boolean;\r\n\tname?: string;\r\n\tvalue?: string | number | Date;\r\n\thelperText?: string;\r\n\tdataPosition?: number;\r\n\tdataName?: string;\r\n\tdisableFutureDates?: boolean;\r\n\tplaceholder?: string;\r\n\trequired?: boolean;\r\n\tdisablePastDates?: boolean;\r\n\tdefaultValue?: string | number | Date | undefined;\r\n\ttextFieldProps?: any;\r\n\tformat?: string;\r\n}\r\n\r\nconst StyledDatePicker = styled(Date)(({ theme: { palette } }) => ({\r\n\t'& .MuiOutlinedInput-root': {\r\n\t\tpadding: '0',\r\n\t\tcolor: palette.theme?.secondary[800],\r\n\t\t'& fieldset': {\r\n\t\t\tborderColor: palette.theme?.secondary[400]\r\n\t\t},\r\n\t\t'&:hover fieldset': {\r\n\t\t\tborderColor: palette.theme?.secondary[500]\r\n\t\t},\r\n\t\t'&.Mui-focused fieldset': {\r\n\t\t\tborderWidth: '0.0625rem',\r\n\t\t\tborderStyle: 'solid',\r\n\t\t\tborderColor: palette.theme?.primary[700]\r\n\t\t},\r\n\t\t'&.Mui-error fieldset': {\r\n\t\t\tborderColor: palette.theme?.error[600]\r\n\t\t},\r\n\t\t'&.Mui-disabled': {\r\n\t\t\tbackground: palette.theme?.secondary[200],\r\n\t\t\tcolor: palette.theme?.secondary[800]\r\n\t\t},\r\n\t\t'& .MuiInputBase-input::placeholder': {\r\n\t\t\tcolor: palette.theme?.secondary[800],\r\n\t\t\topacity: 1\r\n\t\t}\r\n\t},\r\n\t'& .MuiFormHelperText-root': {\r\n\t\tmarginLeft: 0,\r\n\t\tcolor: palette.theme?.secondary[800],\r\n\t\t'&.Mui-error': {\r\n\t\t\tcolor: palette.theme?.error[600]\r\n\t\t}\r\n\t},\r\n\t'& .MuiIconButton-root': {\r\n\t\tmarginRight: 0\r\n\t},\r\n\t'& .MuiPickersCalendarHeader-labelContainer': {\r\n\t\tfontWeight: 600\r\n\t}\r\n}));\r\n\r\nconst DateTimePicker = (props: DatePickerProps) => {\r\n\tconst {\r\n\t\tlabel,\r\n\t\tdisabled,\r\n\t\terror,\r\n\t\thelperText,\r\n\t\tdataName,\r\n\t\tdataPosition,\r\n\t\tdisableFutureDates = false,\r\n\t\tplaceholder,\r\n\t\trequired = false,\r\n\t\tdisablePastDates = false,\r\n\t\tdefaultValue,\r\n\t\ttextFieldProps,\r\n\t\tformat,\r\n\t\t...rest\r\n\t} = props;\r\n\r\n\treturn (\r\n\t\t<LocalizationProvider dateAdapter={AdapterDayjs}>\r\n\t\t\t{label && (\r\n\t\t\t\t<Typography\r\n\t\t\t\t\ttype='s5'\r\n\t\t\t\t\tweight='medium'\r\n\t\t\t\t\tmb={0.5}\r\n\t\t\t\t\tcolor={error ? 'theme.error.600' : 'theme.secondary.800'}\r\n\t\t\t\t\tdata-position={dataPosition}\r\n\t\t\t\t\tdata-name={dataName}>\r\n\t\t\t\t\t{label} {required && <span className='requiredStar'>*</span>}\r\n\t\t\t\t</Typography>\r\n\t\t\t)}\r\n\t\t\t<StyledDatePicker\r\n\t\t\t\tdisabled={disabled}\r\n\t\t\t\tdisableFuture={disableFutureDates}\r\n\t\t\t\tdisablePast={disablePastDates}\r\n\t\t\t\tslotProps={{\r\n\t\t\t\t\ttextField: {\r\n\t\t\t\t\t\thelperText: helperText,\r\n\t\t\t\t\t\terror: error,\r\n\t\t\t\t\t\tplaceholder: placeholder || 'MM/DD/YYYY HH:mm:ss',\r\n\t\t\t\t\t\t...textFieldProps\r\n\t\t\t\t\t\t// required: required,\r\n\t\t\t\t\t}\r\n\t\t\t\t}}\r\n\t\t\t\tformat={format || 'MM/DD/YYYY HH:mm:ss'}\r\n\t\t\t\tslots={{ openPickerIcon: logo.CalenderIcon }}\r\n\t\t\t\t{...rest}\r\n\t\t\t\tdefaultValue={defaultValue ? dayjs(defaultValue) : undefined}\r\n\t\t\t\tclassName='datePicker'\r\n\t\t\t/>\r\n\t\t</LocalizationProvider>\r\n\t);\r\n};\r\n\r\nexport { DateTimePicker };\r\nexport default DateTimePicker;\r\n","import { Box, styled } from \"@mui/material\";\nimport logo from \"../../assets/images\";\nimport Button from \"../button/button\";\nimport Typography from \"../typography/typography\";\n// import { useEffect, useState } from \"react\";\nimport { Document } from \"../icons\";\nimport { enqueueSnackbar } from \"notistack\";\nimport { memo } from \"react\";\n// import Avatar from \"../avatar/avatar\";\n\nexport interface UploadImageProps {\n type?: string;\n label: string;\n disabled?: boolean;\n error?: boolean;\n dataPosition?: number;\n dataName?: string;\n required?: boolean;\n max_size?: number;\n name: string;\n value: string;\n onChange: (e: any) => any;\n multiple: boolean\n}\nconst UploadMedia = memo((props: UploadImageProps) => {\n const {\n type,\n label,\n disabled,\n error,\n dataName,\n dataPosition,\n required,\n max_size = 20,\n onChange,\n name,\n value,\n multiple,\n ...rest\n } = props;\n\n const VisuallyHiddenInput = styled(\"input\")({\n clip: \"rect(0 0 0 0)\",\n clipPath: \"inset(50%)\",\n height: 1,\n overflow: \"hidden\",\n position: \"absolute\",\n bottom: 0,\n left: 0,\n whiteSpace: \"nowrap\",\n width: 1,\n });\n\n // const [selectedFile, setSelectedFile] = useState<string | null>(null);\n const StyledButton = styled(Button)(({ theme: { palette } }) => ({\n marginBottom: 8,\n \"&.MuiButton-outlined\": {\n color: palette.theme?.primary[1000],\n },\n \"&.Mui-disabled\": {\n background: palette.theme?.secondary[200],\n color: palette.theme?.secondary[800],\n borderWidth: \"0.0625rem\",\n borderStyle: \"solid\",\n borderColor: palette.theme?.secondary[400],\n },\n }));\n\n const allowedImageTypes = [\n \"image/jpeg\", // JPG, JPEG\n \"image/png\", // PNG\n \"image/gif\", // GIF\n \"image/bmp\", // BMP\n \"image/webp\", // WebP\n \"image/svg+xml\", // SVG\n \"image/tiff\", // TIFF\n \"image/x-icon\", // ICO (icon files)\n \"image/heic\", // HEIC (High Efficiency Image Format)\n \"image/heif\"\n ]\n const allowedFileTypes = [\n \"application/pdf\",\n \"application/msword\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n 'application/vnd.ms-powerpoint',\n 'application/vnd.oasis.opendocument.text',\n 'text/csv',\n 'text/plain',\n 'application/rtf',\n 'application/vnd.ms-excel',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'application/vnd.oasis.opendocument.spreadsheet',\n 'application/vnd.oasis.opendocument.presentation',\n \"image/jpeg\", // JPG, JPEG\n \"image/png\", // PNG\n \"image/gif\", // GIF\n \"image/bmp\", // BMP\n \"image/webp\", // WebP\n \"image/svg+xml\", // SVG\n \"image/tiff\", // TIFF\n \"image/x-icon\", // ICO (icon files)\n \"image/heic\", // HEIC (High Efficiency Image Format)\n \"image/heif\"\n ];\n\n const isValidFileType = (file: any) => {\n if (type === \"image\") {\n return allowedImageTypes.includes(file.type);\n } else if (type === 'file') {\n return allowedFileTypes.includes(file.type);\n }\n };\n\n\n const handleUpload = (e: any) => {\n const files = [...e.target.files];\n const filterredFiles = files.map(file => {\n if (file && file.size <= max_size * 1024 * 1024) {\n if (isValidFileType(file)) {\n return file\n } else {\n enqueueSnackbar(`Invalid file type for ${file.name}. Please upload a valid document.`, { variant: 'error' })\n return null\n }\n }\n })?.filter(Boolean)\n onChange(multiple ? (value?.length ? [...value, ...filterredFiles] : filterredFiles) : filterredFiles[0]);\n };\n\n const getFileName = (file) => {\n if (!file) return \"\"\n if (file instanceof File) {\n return file.name\n } else if(typeof file === 'string') { \n const parts = file?.split('/');\n return parts?.[parts?.length - 1];\n } else if(Array.isArray(file) && file?.length > 0) {\n return file.map(f => {\n const parts = f?.split('/');\n return parts?.[parts?.length - 1];\n }).join(', ')\n }\n }\n // const getImagePreview = (file) => {\n // if (!file) return \"\"\n // if (file instanceof File) {\n // let previewUrl:any = ''\n // const reader = new FileReader();\n // reader.onload = () => {\n // previewUrl = reader.result;\n // };\n // reader.readAsDataURL(file);\n\n // return previewUrl\n // } else {\n // return file.includes(S3_BUCKET_URL) ? file : S3_BUCKET_URL + file\n // }\n // }\n\n const getSelectedFiles = (files: any) => {\n\n if (files) {\n if (Array.isArray(files)) {\n return files.map(file => (\n <Box display=\"flex\" gap={1} mb={1} alignItems='center'>\n {type === 'file' && <Document fontSize=\"small\" />}\n {/* {type === 'image' && <Avatar src={getImagePreview(file)} />} */}\n <Typography\n type=\"s5\"\n weight=\"medium\"\n color={error ? \"theme.error.600\" : \"theme.secondary.800\"}\n data-position={dataPosition}\n data-name={dataName}\n noWrap\n >\n {getFileName(file)}\n </Typography>\n </Box>\n ))\n } else {\n return (\n <Box display=\"flex\" gap={1} alignItems='center'>\n {type === 'file' && <Document fontSize=\"small\" />}\n {/* {type === 'image' && <Avatar src={getImagePreview(files)} />} */}\n <Typography\n type=\"s5\"\n weight={\"medium\"}\n color={error ? \"theme.error.600\" : \"theme.secondary.800\"}\n data-position={dataPosition}\n data-name={dataName}\n noWrap\n >\n {getFileName(files)}\n </Typography>\n </Box>\n )\n }\n }\n }\n\n // useEffect(() => {\n // if(!multiple) {\n // const parts = value?.split('/');\n // // const documentPath = parts?.slice(3, parts.length - 1).join('/');\n // const filename = parts?.[parts?.length - 1];\n\n \n // if (value) setSelectedFile(filename)\n // }\n // }, [multiple, value])\n\n return (\n <>\n <Typography\n type=\"s5\"\n weight={\"medium\"}\n mb={0.5}\n color={error ? \"theme.error.600\" : \"theme.secondary.800\"}\n data-position={dataPosition}\n data-name={dataName}\n >\n {label} {required && \" *\"}\n </Typography>\n <div style={{ display: \"flex\" }}>\n <StyledButton\n component=\"label\"\n startIcon={\n <img\n src={type === \"image\" ? logo.uploadImage : logo.uploadDocument}\n />\n }\n variant=\"outlined\"\n disabled={disabled}\n >\n <Typography type='s5' weight=\"medium\" color=\"theme.secondary.1000\">Upload</Typography>\n <VisuallyHiddenInput\n type=\"file\"\n accept={type === \"file\" ? allowedFileTypes.join(\",\") : (type === 'image' ? allowedImageTypes.join(\",\") : undefined)}\n // required={required}\n onChange={handleUpload}\n name={name}\n multiple={multiple}\n {...rest}\n />\n </StyledButton>\n </div >\n {getSelectedFiles(value)}\n\n </>\n );\n})\n\nexport { UploadMedia };\nexport default UploadMedia;\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\r\n\r\nimport { Box } from '@mui/material';\r\n\r\nimport Typography from '../../typography/typography';\r\nimport DatePicker from '../../date-picker/date-picker';\r\nimport DateTimePicker from '../../date-time-picker/date-time-picker';\r\nimport TextField from '../../text-field/text-field';\r\nimport UploadMedia from '../../upload-media/upload-media';\r\n\r\nimport * as yup from 'yup';\r\nimport _ from 'lodash';\r\nimport dayjs from 'dayjs';\r\nimport PhoneInput from '../../phone-input/phone-input';\r\nimport Checkbox from '../../checkbox/checkbox';\r\nimport SearchableSelect from '../../searchable-select';\r\n\r\ninterface IInlineEditFields {\r\n\tcell: any;\r\n\tcolumn: any;\r\n\trow: any;\r\n\ttable: any;\r\n\tcol: any;\r\n\tcallback: (value: any, column: any, rowId: any) => any;\r\n\terrors: any;\r\n\tvalidationSchema: any;\r\n\tsetValidationErrors: any;\r\n\tonChangeRowField?: (e: any, type: string, row: any) => any;\r\n\tgetSelectedData: any\r\n}\r\nconst InlineEditFields: React.FC<IInlineEditFields> = ({\r\n\t// cell,\r\n\tcolumn,\r\n\trow,\r\n\t// table,\r\n\tcol,\r\n\t// callback,\r\n\terrors,\r\n\tvalidationSchema,\r\n\tsetValidationErrors,\r\n\tonChangeRowField,\r\n\tgetSelectedData\r\n}) => {\r\n\r\n\tconst [inputValue, setInputValue] = useState<any>();\r\n\tconst [isInitialSet, setIsInitialSet] = useState<any>(false);\r\n\tconst customFilter = useRef(null)\r\n\t// ** Getting only editing enabled fields.\r\n\tconst editCols = row\r\n\t\t.getAllCells()\r\n\t\t.map((col: any) => col.column.columnDef)\r\n\t\t.filter(\r\n\t\t\t(col: any) =>\r\n\t\t\t\tcol?.enableEditing === undefined || col?.enableEditing === true\r\n\t\t);\r\n\r\n\tconst editVariant = col.editVariant;\r\n\tconst fieldProperties = column.columnDef?.editProperties || {};\r\n\r\n\t// ** Default and Dynamic disbaling a field with row data\r\n\tlet fieldDisbled = false;\r\n\tif (fieldProperties?.disable) {\r\n\t\tif (typeof fieldProperties.disable === 'function') {\r\n\t\t\tfieldDisbled = Boolean(fieldProperties?.disable(row, row._valuesCache));\r\n\t\t} else {\r\n\t\t\tfieldDisbled = Boolean(fieldProperties.disable);\r\n\t\t}\r\n\t}\r\n\r\n\tconst handleCustomFilter = useCallback(async (row, values) => {\r\n\r\n\t\ttry {\r\n\t\t\tif (typeof fieldProperties.customeFilter === 'function') {\r\n\t\t\t\tconst filter = await fieldProperties.customeFilter(row, values);\r\n\t\t\t\tcustomFilter.current = filter;\r\n\t\t\t\treturn filter;\r\n\t\t\t} else {\r\n\t\t\t\tcustomFilter.current = fieldProperties?.customeFilter;\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [fieldProperties, row, row._valuesCache]);\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\thandleCustomFilter(row, row._valuesCache)\r\n\t}, [handleCustomFilter, row, row._valuesCache]);\r\n\t// ** Setting a default value for edit mode.\r\n\tconst valueKey = fieldProperties?.valueKey;\r\n\tlet defaultValue: any = '';\r\n\r\n\tif (editVariant === 'select' && fieldProperties?.is_multiple) {\r\n\t\tdefaultValue = valueKey ? _.get(row.original, valueKey, []) : [];\r\n\t} else {\r\n\t\tdefaultValue = valueKey\r\n\t\t\t? _.get(row.original, valueKey, row.original[column.id])\r\n\t\t\t: row.original[column.id];\r\n\t}\r\n\r\n\t// ** Validate a field with Material Table Validation Schema.\r\n\tconst validate = async (value: any) => {\r\n\t\ttry {\r\n\t\t\t// const v = await validationSchema.validateAt( // * * This line has commented for rerendering purpose\r\n\t\t\tawait validationSchema.validateAt(\r\n\t\t\t\tcolumn.id,\r\n\t\t\t\t{\r\n\t\t\t\t\t[column.id]: value\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tabortEarly: false\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t\t// if (v) { // * * The if condition has commented for rerendering purpose\r\n\t\t\tconst fe: any = {}; // field error\r\n\t\t\tfor (const e in errors) {\r\n\t\t\t\tif (e != column.id) {\r\n\t\t\t\t\tfe[e] = errors[e];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tsetValidationErrors(fe);\r\n\t\t\t// }\r\n\t\t} catch (err) {\r\n\t\t\tif (err instanceof yup.ValidationError) {\r\n\t\t\t\tconst e: Record<string, string> = {};\r\n\t\t\t\terr.inner.forEach((error) => {\r\n\t\t\t\t\tif (error.path) {\r\n\t\t\t\t\t\te[error.path] = error.message;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tconst em = { ...errors, ...e };\r\n\t\t\t\tsetValidationErrors(em);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\r\n\r\n\t// ** Detect onChnage to perform the action on an input change.\r\n\tconst onChange = async (e: any, type: string, selectedData: any) => {\r\n\t\tconst data = selectedData\r\n\t\tlet value;\r\n\t\tswitch (type) {\r\n\t\t\tcase 'date':\r\n\t\t\tcase 'file':\r\n\t\t\tcase 'image':\r\n\t\t\tcase 'phone':\r\n\t\t\t\tvalue = e;\r\n\t\t\t\t// setInputValue({ ...inputValue, [column.id]: e });\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'text':\r\n\t\t\tcase 'number':\r\n\t\t\t\tvalue = e.target.value;\r\n\t\t\t\t// setInputValue({ ...inputValue, [column.id]: value });\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'checkbox':\r\n\t\t\t\tvalue = e.target.checked;\r\n\t\t\t\t// setInputValue({ ...inputValue, [column.id]: value });\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tvalue = e.target.value;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tsetInputValue({ ...inputValue, [column.id]: value });\r\n\r\n\t\tif (onChangeRowField) {\r\n\t\t\tconst v = await onChangeRowField(e, type, row, col, data);\r\n\t\t\tif (v) {\r\n\t\t\t\trow._valuesCache = { ...row._valuesCache, ...v };\r\n\t\t\t\tsetInputValue({ ...inputValue, ...v });\r\n\t\t\t}\r\n\t\t}\r\n\t\tsetInputValue({ ...inputValue, [column.id]: value });\r\n\t\trow._valuesCache = { ...row._valuesCache, [column.id]: value };\r\n\r\n\t\tawait validate(value);\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tsetInputValue({ ...inputValue, ...row._valuesCache });\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [row._valuesCache]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!isInitialSet) {\r\n\t\t\tconst editFields = Object.keys(row._valuesCache || {});\r\n\t\t\tconst dValues: any = {};\r\n\r\n\t\t\trow.getAllCells().forEach((cell) => {\r\n\t\t\t\tif (\r\n\t\t\t\t\tcell.column.columnDef?.enableEditing === undefined ||\r\n\t\t\t\t\tcell.column.columnDef?.enableEditing === true\r\n\t\t\t\t) {\r\n\t\t\t\t\tconst { is_multiple, valueKey } =\r\n\t\t\t\t\t\tcell.column.columnDef?.editProperties || {};\r\n\t\t\t\t\tif (editFields.includes(cell.column.id)) {\r\n\t\t\t\t\t\tconst vl = _.get(row.original, valueKey);\r\n\t\t\t\t\t\tif (editVariant === 'select' && is_multiple) {\r\n\t\t\t\t\t\t\tdValues[cell.column.id] = vl\r\n\t\t\t\t\t\t\t\t? Array.isArray(vl)\r\n\t\t\t\t\t\t\t\t\t? vl\r\n\t\t\t\t\t\t\t\t\t: [vl]\r\n\t\t\t\t\t\t\t\t: [];\r\n\t\t\t\t\t\t} else if (editVariant === 'date' || editVariant === 'date_time') {\r\n\t\t\t\t\t\t\tdValues[cell.column.id] = vl\r\n\t\t\t\t\t\t\t\t? dayjs(vl).isValid()\r\n\t\t\t\t\t\t\t\t\t? dayjs(vl)\r\n\t\t\t\t\t\t\t\t\t: undefined\r\n\t\t\t\t\t\t\t\t: dayjs(row.original[cell.column.id]).isValid()\r\n\t\t\t\t\t\t\t\t\t? dayjs(row.original[cell.column.id])\r\n\t\t\t\t\t\t\t\t\t: undefined;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tdValues[cell.column.id] = _.get(\r\n\t\t\t\t\t\t\t\trow.original,\r\n\t\t\t\t\t\t\t\tvalueKey,\r\n\t\t\t\t\t\t\t\trow.original[cell.column.id]\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t// setFieldsValues(dValues);\r\n\t\t\trow._valuesCache = dValues;\r\n\t\t\tsetInputValue(dValues);\r\n\t\t\tsetIsInitialSet(true);\r\n\t\t}\r\n\t}, [row, editVariant, isInitialSet]);\r\n\r\n\tconst handleMinDate = (state) => typeof state == 'function' ? state(row) : state\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{(!editVariant || editVariant === 'number') && (\r\n\t\t\t\t<TextField\r\n\t\t\t\t\tdefaultValue={defaultValue}\r\n\t\t\t\t\t// onBlur={(e) => onBlur(e)}\r\n\t\t\t\t\t// onKeyDown={onKeyDown}\r\n\t\t\t\t\tonChange={(e) => onChange(e, editVariant)}\r\n\t\t\t\t\tvalue={inputValue?.[column.id]}\r\n\t\t\t\t\tautoFocus={editCols?.[0]?.accessorKey === column.id}\r\n\t\t\t\t\ttype={editVariant || 'text'}\r\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\r\n\t\t\t\t\thelperText={errors?.[column.id]}\r\n\t\t\t\t\tplaceholder={fieldProperties?.placeholder || ''}\r\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\r\n\t\t\t\t\tdisabled={fieldDisbled}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\t\t\t{editVariant === 'select' && (\r\n\t\t\t\t<Box display='flex' flexDirection='column' width='100%'>\r\n\t\t\t\t\t<SearchableSelect\r\n\t\t\t\t\t\tname={fieldProperties?.field_name || ''}\r\n\t\t\t\t\t\tdefaultValue={defaultValue}\r\n\t\t\t\t\t\tplaceholder={fieldProperties?.placeholder || ''}\r\n\t\t\t\t\t\tsearchPlaceholder={`Search ${col.header}`}\r\n\t\t\t\t\t\tonChange={(e, row) => onChange(e, 'select', row)}\r\n\t\t\t\t\t\tapiType={fieldProperties?.apiType}\r\n\t\t\t\t\t\tautoFocus={editCols?.[0]?.accessorKey === column.id}\r\n\t\t\t\t\t\toptions={col?.editSelectOptions}\r\n\t\t\t\t\t\tcustomeFilter={customFilter.current}\r\n\t\t\t\t\t\tfilterKey={fieldProperties?.filterKey}\r\n\t\t\t\t\t\tlabelKey={fieldProperties?.labelKey}\r\n\t\t\t\t\t\tvalueKey={fieldProperties?.bindingKey}\r\n\t\t\t\t\t\tattributes={fieldProperties.attributes}\r\n\t\t\t\t\t\tisInternal={fieldProperties?.isInternal || !fieldProperties?.apiType}\r\n\t\t\t\t\t\tmultiple={fieldProperties?.is_multiple}\r\n\t\t\t\t\t\tvalue={\r\n\t\t\t\t\t\t\tfieldProperties?.is_multiple\r\n\t\t\t\t\t\t\t\t? Array.isArray(inputValue?.[column.id])\r\n\t\t\t\t\t\t\t\t\t? inputValue?.[column.id]\r\n\t\t\t\t\t\t\t\t\t: []\r\n\t\t\t\t\t\t\t\t: inputValue?.[column.id]\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tgetSelectedData={(row) => getSelectedData(fieldProperties?.field_name, row)}\r\n\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t{errors?.[column.id] && (\r\n\t\t\t\t\t\t<Typography color='theme.error.600' type='s5'>\r\n\t\t\t\t\t\t\t{errors?.[column.id]}\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</Box>\r\n\t\t\t)}\r\n\t\t\t{editVariant === 'date' && (\r\n\t\t\t\t<DatePicker\r\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\r\n\t\t\t\t\tdefaultValue={defaultValue}\r\n\t\t\t\t\tonChange={(v) => onChange(v, 'date')}\r\n\t\t\t\t\ttextFieldProps={{\r\n\t\t\t\t\t\tautoFocus: editCols?.[0]?.accessorKey === column.id\r\n\t\t\t\t\t}}\r\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\r\n\t\t\t\t\thelperText={errors?.[column.id]}\r\n\t\t\t\t\tformat={fieldProperties?.dateFormat}\r\n\t\t\t\t\tplaceholder={\r\n\t\t\t\t\t\tfieldProperties?.placeholder || fieldProperties?.dateFormat\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvalue={\r\n\t\t\t\t\t\tdayjs(row._valuesCache[column.id]).isValid()\r\n\t\t\t\t\t\t\t? dayjs(row._valuesCache[column.id])\r\n\t\t\t\t\t\t\t: undefined\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdisabled={fieldDisbled}\r\n\t\t\t\t\tminDate={() => handleMinDate(fieldProperties?.min_date)}\r\n\t\t\t\t\tmaxDate={() => handleMinDate(fieldProperties?.min_date)}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\t\t\t{editVariant === 'date_time' && (\r\n\t\t\t\t<DateTimePicker\r\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\r\n\t\t\t\t\tdefaultValue={defaultValue}\r\n\t\t\t\t\tonChange={(v) => onChange(v, 'date')}\r\n\t\t\t\t\ttextFieldProps={{\r\n\t\t\t\t\t\tautoFocus: editCols?.[0]?.accessorKey === column.id\r\n\t\t\t\t\t}}\r\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\r\n\t\t\t\t\thelperText={errors?.[column.id]}\r\n\t\t\t\t\tformat={fieldProperties?.dateFormat}\r\n\t\t\t\t\tplaceholder={\r\n\t\t\t\t\t\tfieldProperties?.placeholder || fieldProperties?.dateFormat\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvalue={\r\n\t\t\t\t\t\tdayjs(row._valuesCache[column.id]).isValid()\r\n\t\t\t\t\t\t\t? dayjs(row._valuesCache[column.id])\r\n\t\t\t\t\t\t\t: undefined\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdisabled={fieldDisbled}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\t\t\t{(editVariant === 'file' || editVariant === 'image') && (\r\n\t\t\t\t<Box display='flex' flexDirection='column'>\r\n\t\t\t\t\t<UploadMedia\r\n\t\t\t\t\t\tname={fieldProperties?.field_name || 'table_file'}\r\n\t\t\t\t\t\tdataPosition={0}\r\n\t\t\t\t\t\tdataName='table_file'\r\n\t\t\t\t\t\tlabel=''\r\n\t\t\t\t\t\ttype={editVariant}\r\n\t\t\t\t\t\tmax_size={10}\r\n\t\t\t\t\t\tonChange={(v) => onChange(v, 'file')}\r\n\t\t\t\t\t\terror={errors?.[column.id] ? true : false}\r\n\t\t\t\t\t\tmultiple={Boolean(column?.is_multiple)}\r\n\t\t\t\t\t\tvalue={row._valuesCache[column.id]}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t{errors?.[column.id] && (\r\n\t\t\t\t\t\t<Typography color='theme.error.600' type='s5'>\r\n\t\t\t\t\t\t\t{errors?.[column.id]}\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</Box>\r\n\t\t\t)}\r\n\t\t\t{editVariant === 'phone' && (\r\n\t\t\t\t<PhoneInput\r\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\r\n\t\t\t\t\tdefault_value={defaultValue}\r\n\t\t\t\t\tonChange={(v) => onChange(v, 'phone')}\r\n\t\t\t\t\ttextFieldProps={{\r\n\t\t\t\t\t\tautoFocus: editCols?.[0]?.accessorKey === column.id\r\n\t\t\t\t\t}}\r\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\r\n\t\t\t\t\thelperText={errors?.[column.id]}\r\n\t\t\t\t\tformat={fieldProperties?.dateFormat}\r\n\t\t\t\t\tplaceholder={\r\n\t\t\t\t\t\tfieldProperties?.placeholder || fieldProperties?.dateFormat\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvalue={row._valuesCache?.[column.id]}\r\n\t\t\t\t\tdisabled={fieldDisbled}\r\n\t\t\t\t\tisInlineEditing={true}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\t\t\t{editVariant === 'checkbox' && (\r\n\t\t\t\t<Checkbox\r\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\r\n\t\t\t\t\tdefaultChecked={Boolean(defaultValue)}\r\n\t\t\t\t\t// checked={Boolean(defaultValue)}\r\n\t\t\t\t\tonChange={(v) => onChange(v, 'checkbox')}\r\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\r\n\t\t\t\t\thelperText={errors?.[column.id]}\r\n\t\t\t\t\tformat={fieldProperties?.dateFormat}\r\n\t\t\t\t\tplaceholder={\r\n\t\t\t\t\t\tfieldProperties?.placeholder || fieldProperties?.dateFormat\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvalue={row._valuesCache?.[column.id]}\r\n\t\t\t\t\tdisabled={fieldDisbled}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\t\t</>\r\n\t);\r\n};\r\n\r\nexport default InlineEditFields;\r\n","/* eslint-disable unused-imports/no-unused-vars */\r\n/* eslint-disable @typescript-eslint/no-unused-vars */\r\n/* eslint-disable no-mixed-spaces-and-tabs */\r\nimport React, { cloneElement, useCallback, useEffect, useState } from 'react';\r\nimport {\r\n\tMRT_ColumnDef,\r\n\tMRT_ColumnSizingInfoState,\r\n\tMRT_ColumnSizingState,\r\n\tMRT_Header,\r\n\tMRT_Row,\r\n\tMRT_RowData,\r\n\tMRT_RowSelectionState,\r\n\tMRT_SortingState,\r\n\tMRT_TableInstance,\r\n\tMRT_TableState,\r\n\tMaterialReactTable,\r\n\tMaterialReactTableProps,\r\n\tuseMaterialReactTable,\r\n\t// Cell\r\n} from 'material-react-table';\r\nimport { IPaginationModel } from '../../@types/pagination-model';\r\nimport {\r\n\tBox,\r\n\tstyled,\r\n\tMenuItem,\r\n\tIconButton,\r\n\tListItemIcon,\r\n\tListItemText,\r\n\tSvgIconProps,\r\n\tDivider\r\n} from '@mui/material';\r\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\r\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\r\nimport Menu from '../menu/menu';\r\nimport Typography from '../typography/typography';\r\nimport SearchBar from '../search-bar/search-bar';\r\nimport images from '../../assets/images';\r\n// import DeleteIcon from \"@mui/icons-material/Delete\";\r\n// import UpdateIcon from \"@mui/icons-material/Update\";\r\n// import PlayIcon from \"@mui/icons-material/PlayArrow\";\r\n\r\nimport './material-table.scss';\r\nimport {\r\n\tArrowUpDown,\r\n\tCheckBoxIcon,\r\n\tClose,\r\n\tEdit,\r\n\tRecgtangleIcon,\r\n\tSave,\r\n\tTrash\r\n} from '../icons';\r\n// import {\r\n// \tArrowDropDown /* , SaveOutlined */,\r\n// \tArrowDropUp\r\n// } from '@mui/icons-material';\r\nimport InlineEditFields from './components/inline-edit-fields';\r\nimport Tooltip from '../tooltip/Tooltip';\r\nimport Button from '../button/button';\r\nimport Add from '@mui/icons-material/Add';\r\nimport dayjs from 'dayjs';\r\nimport * as yup from 'yup';\r\nimport ConfirmPopUp from '../confirm-modal/confirm-modal';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { enqueueSnackbar } from 'notistack';\r\nimport { usePages } from '../../hooks/use-pages';\r\nimport { useNavigate } from 'react-router-dom';\r\n// Module-specific pathname imports removed - should be passed as props or configured by consuming app\r\n// import { PathnameAccounting } from 'accounting/src/pathname.accounting';\r\n// import { PathnameInventory } from 'inventory/src/pathname.inventory';\r\n// import { PathnameManufacturing } from 'manufacturing/src/pathname.manufacturing';\r\n// import { PathnamePurchase } from 'procurement/src/pathname.procurement';\r\n// import { PathnameCrm } from 'crm/src/pathname.crm';\r\n// import { PathnameUsers } from 'user/src/pathname.user';\r\n// import { PathnameRental } from '../../../../rental/src/pathname.rental';\r\nimport { PathnameDocument } from '../../constants/pathnames/pathname.document';\r\nimport { PathnameAccounting } from '../../constants/pathnames/pathname.accounting';\r\nimport { PathnameInventory } from '../../constants/pathnames/pathname.inventory';\r\nimport { PathnameManufacturing } from '../../constants/pathnames/pathname.manufacturing';\r\nimport { PathnamePurchase } from '../../constants/pathnames/pathname.procurement';\r\nimport { PathnameCrm } from '../../constants/pathnames/pathname.crm';\r\nimport { PathnameUsers } from '../../constants/pathnames/pathname.user';\r\nimport { PathnameRental } from '../../constants/pathnames/pathname.rental';\r\nimport useDeepMemo from '../../hooks/use-deep-memo';\r\nimport { PageState } from '../../contexts/page-context';\r\n\r\ntype ExtraEditVariants =\r\n\t| 'file'\r\n\t| 'image'\r\n\t| 'date'\r\n\t| 'number'\r\n\t| 'time'\r\n\t| 'date_time'\r\n\t| 'phone'\r\n\t| 'checkbox';\r\n\r\ntype DisableFunction = (row: any, virtualRow?: any) => boolean;\r\n\r\nexport type TypeBooleanLabels = { 1: string; 0: string; true: string; false: string }\r\n\r\nexport interface MaterialTableColumnProps\r\n\textends Omit<MRT_ColumnDef<MRT_RowData>, 'editVariant'> {\r\n\tvisible?: boolean;\r\n\ttype?: string;\r\n\tshowDefaultCurrency?: boolean,\r\n\tvalueGet?: string;\r\n\tcustom_class?: string;\r\n\ttypeArrayAccessorKey?: string; //when type is an array of object\r\n\ttypeBooleanLabels?: TypeBooleanLabels; //when type is an boolean\r\n\teditVariant?: MRT_ColumnDef<MRT_RowData>['editVariant'] | ExtraEditVariants;\r\n\teditProperties?: {\r\n\t\tfield_name?: string;\r\n\t\tvalueKey?: string;\r\n\t\tplaceholder?: string;\r\n\t\tdateFormat?: string;\r\n\t\tvalidations?: any[];\r\n\t\tis_multiple?: boolean;\r\n\t\tis_multiline?: boolean;\r\n\t\tdisable?: boolean | DisableFunction;\r\n\t};\r\n\tredirectionPathWithId?: string;\r\n\thandleRowClick?: (row: any) => void;\r\n\tidField?: string;\r\n}\r\n\r\n\r\n\r\nexport interface MaterialTableColumnHeaderProps {\r\n\tcolumn: MRT_ColumnDef<any, any>;\r\n\theader: MRT_Header<any>;\r\n\ttable: MRT_TableInstance<any>;\r\n}\r\n\r\ntype rowSelectionCallback = (row: MRT_Row<any>) => boolean\r\n\r\ninterface MaterialTablePropsType {\r\n\tenablePagination?: boolean;\r\n\tdisableMaxHeight?: boolean;\r\n\trows: any;\r\n\ttotalPages: number;\r\n\tcolumns: any;\r\n\tpaginationModel: IPaginationModel;\r\n\tcolumnOrder?: string[];\r\n\tupdateData?: any;\r\n\thandleColumnOrdering?: (colOrder: any) => void;\r\n\tenableEditing?: boolean;\r\n\tenableColumnDragging?: boolean;\r\n\trowActionMenu?: any;\r\n\tdestructiveActionMenu?: any;\r\n\tgetRowId?: any;\r\n\tstates?: Partial<MRT_TableState<any>>;\r\n\tonSortingChange?: any;\r\n\tdisableDefaultActionColumn?: boolean;\r\n\tenableRowSelection?: boolean | rowSelectionCallback;\r\n\tdefaultActionColumnItems?: React.ReactElement[];\r\n\tenableBottomToolbar?: boolean;\r\n\tSetSelectedRowId?: any;\r\n\tisResetRow?: boolean;\r\n\tonCreateRow?: (data: any) => Promise<unknown>;\r\n\tonEditRow?: (data: any) => Promise<unknown>;\r\n\tonDeleteRow?: (data: any) => Promise<unknown>;\r\n\teditDisplayMode?: MaterialReactTableProps<any>['editDisplayMode'];\r\n\tenableRowCreate?: boolean;\r\n\tonChangeRowField?: (e: any, type: string, row: any) => void;\r\n\tonSelectRow?: (rows: any, prevSelected?: any) => any;\r\n\tenableColumnResizing?: boolean;\r\n\tselectedRowIds?: any[];\r\n\tonColumnVisibility?: (columns: MaterialTableColumnProps[]) => void\r\n\tgetSelectedData: any;\r\n\tenableAddCustomField?: boolean;\r\n\tdisabledDefaultActionColumnIcon?: boolean\r\n\tenableRowDragging?: boolean\r\n\thandleColumnResizing?: (sizes: MRT_ColumnSizingState) => void,\r\n\tcolumnSizes?: MRT_ColumnSizingState,\r\n\tshowPreview?: boolean;\r\n\thandlePreview?: (row: MRT_RowData) => void;\r\n}\r\n\r\nconst TableWrapper = styled(Box, {\r\n\tshouldForwardProp: (prop) => prop !== 'disableMaxHeight',\r\n})<{ disableMaxHeight?: boolean }>(({ theme: { palette }, disableMaxHeight }) => ({\r\n\t'.MuiTableCell-root': {\r\n\t\tborder: '1px solid #efefef',\r\n\t\tborderBottom: 0,\r\n\t\tborderLeft: 0,\r\n\t\tpadding: '0 0.5rem',\r\n\t\tlineHeight: '19px',\r\n\t\tfontSize: '14px',\r\n\t\tminHeight: 32,\r\n\t\t// '&:first-child': {\r\n\t\t// \tborderLeft: '1px solid #efefef'\r\n\t\t// },\r\n\t\t// '&:last-child': {\r\n\t\t// \tborderBottom: '1px solid #efefef'\r\n\t\t// }\r\n\r\n\t},\r\n\t'.MuiTableCell-head': {\r\n\t\tbackgroundColor: palette.theme?.secondary[100]\r\n\t},\r\n\t'.MuiTableContainer-root': {\r\n\t\t...(!disableMaxHeight && { maxHeight: 'clamp(350px, 100vh - 200px, 9999px) !important' }),\r\n\t},\r\n\r\n\t'.MuiPaper-root': {\r\n\t\tboxShadow: 'none',\r\n\r\n\t},\r\n\t'.MuiPaginationItem-root': {\r\n\t\t'&.Mui-selected': {\r\n\t\t\tbackgroundColor: palette?.theme?.primary[700],\r\n\t\t\tcolor: 'white'\r\n\t\t}\r\n\t},\r\n\t'.MuiTableRow-root': {\r\n\t\t'&.Mui-selected': {\r\n\t\t\tbackgroundColor: `${palette?.theme?.primary[100]} !important`,\r\n\t\t\tcolor: 'white'\r\n\t\t}\r\n\t},\r\n\t'.MuiCheckbox-indeterminate': {\r\n\t\tcolor: `${palette?.theme?.primary[700]} !important`,\r\n\t\t\"& svg\": {\r\n\t\t\theight: `20px !important`,\r\n\t\t\twidth: `20px !important`,\r\n\t\t}\r\n\t}\r\n}));\r\n\r\nexport const MaterialTable = React.memo(({\r\n\tenablePagination = false,\r\n\trows,\r\n\tcolumns,\r\n\ttotalPages,\r\n\tpaginationModel,\r\n\tcolumnOrder = ['mrt-row-select'],\r\n\tupdateData,\r\n\thandleColumnOrdering,\r\n\tenableEditing,\r\n\tenableColumnDragging,\r\n\tstates,\r\n\trowActionMenu,\r\n\tdestructiveActionMenu,\r\n\tdisableDefaultActionColumn,\r\n\tenableRowSelection,\r\n\tdefaultActionColumnItems = [],\r\n\tenableBottomToolbar,\r\n\tSetSelectedRowId,\r\n\tisResetRow,\r\n\tonCreateRow,\r\n\tonEditRow,\r\n\tonDeleteRow,\r\n\teditDisplayMode,\r\n\tenableRowCreate,\r\n\tonChangeRowField,\r\n\tonSelectRow,\r\n\tenableColumnResizing = true,\r\n\tselectedRowIds = [],\r\n\tonColumnVisibility,\r\n\tonSortingChange,\r\n\tgetSelectedData,\r\n\tdisabledDefaultActionColumnIcon = false,\r\n\tenableAddCustomField = true,\r\n\tenableRowDragging = false,\r\n\thandleColumnResizing = () => { },\r\n\tcolumnSizes = {},\r\n\tdisableMaxHeight = false,\r\n\tshowPreview = false,\r\n\thandlePreview = () => { },\r\n\t// eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\r\n\t// getRowId,\r\n\t// onDelete,\r\n\t// onUpdate,\r\n\t...rest\r\n}: MaterialTablePropsType) => {\r\n\tconst { t } = useTranslation();\r\n\tconst { formData = null, updatePageInfo, activePage: aPage } = usePages()\r\n\tconst activePage = useDeepMemo<PageState>(aPage);\r\n\tconst { pageNo } = paginationModel;\r\n\tconst [row, setRow] = useState({});\r\n\tconst [tableColumns, setTableColumns] = useState(columns);\r\n\tconst [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\r\n\tconst [popUpShow, setPopupShow] = useState<boolean>(false);\r\n\tconst [rowAnchorEl, setRowAnchorEl] = useState<null | HTMLElement>(null);\r\n\tconst visibleColumns = tableColumns.filter((column: any) => column.visible);\r\n\tconst hiddenColumns = tableColumns.filter((column: any) => !column.visible);\r\n\tconst [filteredOptions, setFilteredOptions] = useState(hiddenColumns);\r\n\tconst [selectedRow, setSelectedRow] = useState<number | null>(null);\r\n\tconst [validationErrors, setValidationErrors] = useState<any>({});\r\n\tconst [validationSchema, setValidationSchema] = useState<any>([]);\r\n\tconst [isCreatingRow, setIsCreatingRow] = useState<boolean>(false);\r\n\tconst [isEditingRow, setIsEditingRow] = useState<boolean>(false);\r\n\tconst [isDeletingRow, setIsDeletingRow] = useState<boolean>(false);\r\n\tconst [rowToDelete, setRowToDelete] = useState<any>(null);\r\n\tconst [rowSelection, setRowSelection] = useState<MRT_RowSelectionState>({});\r\n\tconst [isChecked, setIsChecked] = useState(false)\r\n\tconst [sorting, setSorting] = useState<MRT_SortingState>([]);\r\n\tconst [disableNextEdit, setDisableNextEdit] = useState(false);\r\n\tconst [columnSizing, setColumnSizing] = useState<MRT_ColumnSizingState>(activePage.column_sizes);\r\n\tconst [columnSizingInfo, setColumnSizingInfo] = useState<MRT_ColumnSizingInfoState>({\r\n\t\tcolumnSizingStart: [],\r\n\t\tdeltaOffset: null,\r\n\t\tdeltaPercentage: null,\r\n\t\tisResizingColumn: false,\r\n\t\tstartOffset: null,\r\n\t\tstartSize: null\r\n\t});\r\n\r\n\tconst navigate = useNavigate();\r\n\tconst currentModule = location.pathname.split('/')[2]\r\n\r\n\tlet redirectionPath = ''\r\n\tswitch (currentModule) {\r\n\t\tcase 'accounting':\r\n\t\t\tredirectionPath = PathnameAccounting.CUSTOM_FORM\r\n\t\t\tbreak;\r\n\t\tcase 'inventory':\r\n\t\t\tredirectionPath = PathnameInventory.CUSTOM_FORM\r\n\t\t\tbreak;\r\n\t\tcase 'manufacturing':\r\n\r\n\t\t\tredirectionPath = PathnameManufacturing.CUSTOM_FORM\r\n\t\t\tbreak;\r\n\t\tcase 'procurement':\r\n\t\t\tredirectionPath = PathnamePurchase.CUSTOM_FORM\r\n\t\t\tbreak;\r\n\t\tcase 'crm':\r\n\t\t\tredirectionPath = PathnameCrm.CUSTOM_FORM\r\n\t\t\tbreak;\r\n\t\tcase 'user':\r\n\t\t\tredirectionPath = PathnameUsers.CUSTOM_FORM\r\n\t\t\tbreak;\r\n\t\tcase 'rental':\r\n\t\t\tredirectionPath = PathnameRental.CUSTOM_FORM\r\n\t\t\tbreak;\r\n\t\tcase 'drive':\r\n\t\t\tredirectionPath = PathnameDocument.ADD_CUSTOM_FIELDS\r\n\t\t\tbreak;\r\n\t}\r\n\tconst path = `/dashboard/${currentModule}${redirectionPath}`\r\n\tconst getValidationType = (column: any) => {\r\n\t\tswitch (column.editVariant) {\r\n\t\t\tcase 'select':\r\n\t\t\t\treturn column?.editProperties?.is_multiple ? yup.array() : yup.string();\r\n\r\n\t\t\tcase 'number':\r\n\t\t\t\treturn yup.number().nullable().transform((value, originalValue) => (originalValue === \"\" ? null : value));\r\n\r\n\t\t\tcase 'url':\r\n\t\t\t\treturn yup\r\n\t\t\t\t\t.string()\r\n\t\t\t\t\t.matches(\r\n\t\t\t\t\t\t/^(https?:\\/\\/)?((([a-zA-Z0-9_-]+\\.)+[a-zA-Z]{2,})|localhost)(:\\d{2,5})?(\\/[a-zA-Z0-9#_-]+\\/?)*(\\?[a-zA-Z0-9&=_-]+)?(#\\S+)?$/,\r\n\t\t\t\t\t\t{ excludeEmptyString: true, message: 'Please enter valid URL.' }\r\n\t\t\t\t\t);\r\n\r\n\t\t\tdefault:\r\n\t\t\t\treturn yup.string()\r\n\t\t}\r\n\t};\r\n\r\n\tconst validationReducer = (\r\n\t\tvalidations: any,\r\n\t\tvalidation: any,\r\n\t\tcolumn: any\r\n\t) => {\r\n\t\tlet vld = validations\r\n\t\tswitch (validation.type) {\r\n\t\t\tcase 'required':\r\n\t\t\t\tvld = validation.value\r\n\t\t\t\t\t? validations.required(validation.msg_en).typeError(validation.msg_en)\r\n\t\t\t\t\t: column?.editProperties?.is_multiple\r\n\t\t\t\t\t\t? validations.min(1, validation.msg_en)\r\n\t\t\t\t\t\t: validations;\r\n\t\t\t\tbreak\r\n\t\t\tcase 'min':\r\n\t\t\t\tvld = validations.min(validation.value, validation.msg_en);\r\n\t\t\t\tbreak\r\n\t\t\tcase 'email':\r\n\t\t\t\tvld = validations.email(validation.value, validation.msg_en);\r\n\t\t\t\tbreak\r\n\t\t\tcase 'max':\r\n\t\t\t\tvld = validations.max(validation.value, validation.msg_en);\r\n\t\t\t\tbreak\r\n\t\t\tcase 'positive':\r\n\t\t\t\tvld = validation.value === true ? validations.test('is-positive-number', 'Value must be a positive number', (value) => !value || value >= 0) : validations;\r\n\t\t\t\tbreak\r\n\t\t\tcase 'when':\r\n\t\t\t\treturn validations.when(validation.relation, {\r\n\t\t\t\t\tis: (val: any) => val === validation.values,\r\n\t\t\t\t\tthen: () =>\r\n\t\t\t\t\t\tvalidation?.thenValidations?.reduce(\r\n\t\t\t\t\t\t\t(validations: any, validation: any) =>\r\n\t\t\t\t\t\t\t\tvalidationReducer(validations, validation, column),\r\n\t\t\t\t\t\t\tvalidations\r\n\t\t\t\t\t\t) || validations,\r\n\t\t\t\t\totherwise: () =>\r\n\t\t\t\t\t\tvalidation?.otherWiseValidations?.reduce(\r\n\t\t\t\t\t\t\t(validations: any, validation: any) =>\r\n\t\t\t\t\t\t\t\tvalidationReducer(validations, validation, column),\r\n\t\t\t\t\t\t\tvalidations\r\n\t\t\t\t\t\t) || validations\r\n\t\t\t\t});\r\n\t\t\t// Add more cases for other validation types as needed\r\n\t\t\tdefault:\r\n\t\t\t\tvld = validations;\r\n\t\t\t\tbreak\r\n\t\t}\r\n\r\n\t\tif (validation.type == 'required' && validation.value && (!column?.editVariant || column?.editVariant == 'text')) {\r\n\t\t\tvld = validations.test('no-blank-spaces', 'Blank space is not allowed', (value) => {\r\n\t\t\t\treturn value && value.trim()?.length > 0;\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\treturn vld\r\n\r\n\t};\r\n\r\n\r\n\tconst generateValidationSchema = (columns: any[]) => {\r\n\t\tconst schema: any = {};\r\n\t\tcolumns.forEach((clm) => {\r\n\t\t\tif (clm?.editProperties?.validations?.length) {\r\n\t\t\t\tconst fieldValidations = clm?.editProperties?.validations.reduce(\r\n\t\t\t\t\t(validations: any, validation: any) =>\r\n\t\t\t\t\t\tvalidationReducer(validations, validation, clm),\r\n\t\t\t\t\tgetValidationType(clm)\r\n\t\t\t\t);\r\n\t\t\t\tschema[clm.accessorKey] = fieldValidations;\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn schema;\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tsetTableColumns(columns);\r\n\r\n\t\tconst schema: any = generateValidationSchema(columns);\r\n\t\tsetValidationSchema(yup.object().shape(schema));\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [columns]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!columnSizingInfo?.isResizingColumn) {\r\n\t\t\tupdatePageInfo({ column_sizes: { ...activePage.column_sizes, ...columnSizing } })\r\n\t\t\thandleColumnResizing?.(columnSizing)\r\n\t\t}\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [columnSizingInfo?.isResizingColumn, columnSizing])\r\n\r\n\tconst handleHeaderClick = (event: any) => {\r\n\t\tsetAnchorEl(event.currentTarget);\r\n\t};\r\n\r\n\tconst handleHeaderClose = () => {\r\n\t\tsetAnchorEl(null);\r\n\t};\r\n\r\n\tconst handleVisibleColumn = (column: any) => {\r\n\t\tconst updatedColumns = tableColumns.map((col: any) => ({\r\n\t\t\t...col,\r\n\t\t\tvisible: col.accessorKey === column.accessorKey ? false : col.visible\r\n\t\t}));\r\n\t\tsetTableColumns(updatedColumns);\r\n\t\tonColumnVisibility?.(JSON.parse(JSON.stringify(updatedColumns)))\r\n\t\tsetFilteredOptions([...filteredOptions, column]);\r\n\t\tsetAnchorEl(null);\r\n\t};\r\n\r\n\tconst handleAddButtonClick = () => {\r\n\t\tsetPopupShow(true);\r\n\t};\r\n\r\n\tconst handleBackButtonClick = () => {\r\n\t\tsetPopupShow(false);\r\n\t};\r\n\r\n\tconst handleAddColumn = (column: any) => {\r\n\t\tconst updatedColumns = tableColumns.map((col: any) => ({\r\n\t\t\t...col,\r\n\t\t\tvisible: col.accessorKey === column.accessorKey ? true : col.visible\r\n\t\t}));\r\n\t\tonColumnVisibility?.(JSON.parse(JSON.stringify(updatedColumns)))\r\n\t\tsetTableColumns(updatedColumns);\r\n\r\n\t\tconst updatedFilteredOptions = filteredOptions.filter(\r\n\t\t\t(option: any) => option.accessorKey !== column.accessorKey\r\n\t\t);\r\n\t\tsetFilteredOptions(updatedFilteredOptions);\r\n\t\tsetAnchorEl(null);\r\n\t\tsetPopupShow(false);\r\n\t};\r\n\r\n\tconst handleSearchEvent = (searchQuery: string) => {\r\n\t\tconst filteredColumns = hiddenColumns.filter((option: any) =>\r\n\t\t\toption.header.toLowerCase().includes(searchQuery.toLowerCase())\r\n\t\t);\r\n\t\tsetFilteredOptions(filteredColumns);\r\n\t};\r\n\r\n\tconst handleCustomAddColumn = () => {\r\n\t\tnavigate(path, { state: formData })\r\n\t\tsetAnchorEl(null);\r\n\t\tsetPopupShow(false);\r\n\t};\r\n\r\n\tconst handleRowClick = (rowId: number) => {\r\n\t\tsetSelectedRow(rowId); // Update selected row ID when a row is clicked\r\n\t};\r\n\r\n\tconst handlePreviewClick = (row: MRT_RowData) => {\r\n\t\thandlePreview?.(row);\r\n\t};\r\n\r\n\t// const handleDeleteClick = (event: any, data: any) => {\r\n\t// onDelete?.(data.id);\r\n\t// };\r\n\t// const handleUpdateClick = (event: any, data: any) => {\r\n\t// onUpdate?.(data.id);\r\n\t// };\r\n\r\n\tconst handleActionsClick = (event: any, data: any) => {\r\n\t\tsetRow(data);\r\n\t\tsetRowAnchorEl(event.currentTarget);\r\n\t};\r\n\r\n\tconst handleActionsClose = () => {\r\n\t\tsetRowAnchorEl(null);\r\n\t};\r\n\r\n\tconst formtValues = (values: any, cells: any[]) => {\r\n\t\tconst v: any = {};\r\n\t\tObject.keys(values).forEach((vl) => {\r\n\t\t\tconst val = values[vl];\r\n\t\t\tv[vl] = val;\r\n\t\t\tconst cell = cells.find((c) => c.accessorKey == vl);\r\n\t\t\tif (val) {\r\n\t\t\t\tif (val instanceof File) {\r\n\t\t\t\t\tv[vl] = val.name;\r\n\t\t\t\t}\r\n\t\t\t\tif (cell && cell?.editVariant == 'date') {\r\n\t\t\t\t\tv[vl] = dayjs(val).format(cell?.dateFormat || 'DD-MM-YYYY');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn v;\r\n\t};\r\n\r\n\tconst handleRowDelete = async () => {\r\n\t\tsetIsDeletingRow(true);\r\n\t\tif (rowToDelete) {\r\n\t\t\tawait onDeleteRow?.(rowToDelete);\r\n\t\t\tsetRowToDelete(null);\r\n\t\t}\r\n\t\tsetIsDeletingRow(false);\r\n\t};\r\n\r\n\tconst checkRequired = useCallback((editProperties: any) => {\r\n\t\treturn editProperties?.validations?.some((validation: any) => validation.type === 'required')\r\n\t}, [])\r\n\tuseEffect(() => {\r\n\t\tconst selectedRows = {};\r\n\t\t// Build the selectedRows object\r\n\t\tif (!isChecked && selectedRowIds.length) {\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif (selectedRowIds.includes(row.id)) {\r\n\t\t\t\t\tselectedRows[row.id] = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tsetRowSelection(selectedRows);\r\n\t\t\tsetIsChecked(true)\r\n\t\t}\r\n\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [rows, selectedRowIds]); // Dependency only on rows and selectedRowIds\r\n\r\n\tuseEffect(() => {\r\n\t\tif (onSortingChange instanceof Function) {\r\n\t\t\tconst sortingArray = Array.isArray(sorting) ? sorting : [];\r\n\t\t\tonSortingChange(sortingArray[0] || null)\r\n\t\t}\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [sorting])\r\n\r\n\r\n\tconst resetRowSelection = () => {\r\n\t\tsetRowSelection({});\r\n\t\tsetDisableNextEdit(false)\r\n\t}\r\n\tconst getTextWidth = (text: string) => {\r\n\t\tconst canvas = document.createElement(\"canvas\");\r\n\t\tconst ctx = canvas.getContext(\"2d\");\r\n\t\tif (!ctx) return 50;\r\n\t\treturn ctx.measureText(text).width + 5; // padding\r\n\t}\r\n\tconst table = useMaterialReactTable({\r\n\t\t// options:{\r\n\t\t// \ttableLayout: \"auto\", // 👈 important\r\n\t\t// \tpadding: \"dense\",\r\n\t\t// },\r\n\t\t// columns: visibleColumns,\r\n\t\tdefaultColumn: {\r\n\t\t\tminSize: 0, // 👈 remove default min width\r\n\t\t\tsize: undefined, // 👈 optional, default size\r\n\t\t},\r\n\t\tcolumns: [\r\n\t\t\t...visibleColumns.map((c: any) => {\r\n\t\t\t\tconst headerWidth = getTextWidth(c.header || '');\r\n\t\t\t\tconst maxCellWidth = Math.max(\r\n\t\t\t\t\t...rows.map(row => getTextWidth(String(row[c.accessorKey] ?? '')))\r\n\t\t\t\t);\r\n\t\t\t\tconst finalWidth = Math.max(headerWidth, maxCellWidth);\r\n\t\t\t\treturn {\r\n\t\t\t\t\t...c,\r\n\t\t\t\t\t...(editDisplayMode === 'row'\r\n\t\t\t\t\t\t? {\r\n\t\t\t\t\t\t\tEdit: ({ cell, row, table, column }) => {\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t<InlineEditFields\r\n\t\t\t\t\t\t\t\t\t\tcell={cell}\r\n\t\t\t\t\t\t\t\t\t\tcolumn={column}\r\n\t\t\t\t\t\t\t\t\t\tcol={c}\r\n\t\t\t\t\t\t\t\t\t\trow={row}\r\n\t\t\t\t\t\t\t\t\t\ttable={table}\r\n\t\t\t\t\t\t\t\t\t\tcallback={(s) => console.log('Save', s)}\r\n\t\t\t\t\t\t\t\t\t\terrors={validationErrors}\r\n\t\t\t\t\t\t\t\t\t\tvalidationSchema={validationSchema}\r\n\t\t\t\t\t\t\t\t\t\tsetValidationErrors={setValidationErrors}\r\n\t\t\t\t\t\t\t\t\t\tonChangeRowField={onChangeRowField}\r\n\t\t\t\t\t\t\t\t\t\tgetSelectedData={(name, row) => getSelectedData?.(name, row)}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t: {}),\r\n\t\t\t\t\tHeader: (\r\n\t\t\t\t\t\t<Box display='flex' alignItems='center'>\r\n\t\t\t\t\t\t\t{c.header}\r\n\t\t\t\t\t\t\t{c?.required || checkRequired(c?.editProperties) && (\r\n\t\t\t\t\t\t\t\t<Typography type='s5' color='theme.error.600'>\r\n\t\t\t\t\t\t\t\t\t*\r\n\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t),\r\n\t\t\t\t\tenableColumnDragging: c.id !== 'actions',\r\n\t\t\t\t\t// cellStyle: { ...c.cellStyle, width: finalWidth },\r\n\t\t\t\t\t// headerStyle: { ...c.headerStyle, width: finalWidth },\r\n\t\t\t\t\t// size: finalWidth\r\n\t\t\t\t\tsize: undefined,\r\n\t\t\t\t\t// minSize: 40,\r\n\t\t\t\t\tmaxSize: 800,\r\n\t\t\t\t};\r\n\t\t\t}),\r\n\t\t\t...(showPreview ? [\r\n\t\t\t\t{\r\n\t\t\t\t\tid: 'preview',\r\n\t\t\t\t\tenableEditing: false,\r\n\t\t\t\t\tsize: 70,\r\n\t\t\t\t\theader: (\r\n\t\t\t\t\t\t<IconButton size=\"small\" sx={{ ml: '20px', '&:hover': { backgroundColor: 'transparent' } }}>\r\n\t\t\t\t\t\t\t<img src={images.common.eyeIcon} alt='Eye Icon' />\r\n\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t),\r\n\t\t\t\t\tenableColumnDragging: false,\r\n\t\t\t\t\tvisible: true,\r\n\t\t\t\t\tmuiTableHeadCellProps: {\r\n\t\t\t\t\t\tclassName: 'pinned-column'\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmuiTableBodyCellProps: {\r\n\t\t\t\t\t\tclassName: 'pinned-column',\r\n\t\t\t\t\t\tsx: {\r\n\t\t\t\t\t\t\twhiteSpace: 'pre-wrap'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tCell: (props) =>\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\tvariant=\"outlined\"\r\n\t\t\t\t\t\t\tonClick={() => handlePreviewClick(props.row.original)}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\tPreview\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t}\r\n\t\t\t] : []),\r\n\t\t\t...(!disableDefaultActionColumn\r\n\t\t\t\t? [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: 'actions',\r\n\t\t\t\t\t\tenableEditing: false,\r\n\t\t\t\t\t\tsize: defaultActionColumnItems?.length > 1 ? 80 : 50,\r\n\t\t\t\t\t\theader: (\r\n\t\t\t\t\t\t\t<IconButton size=\"small\" sx={{ p: 0.5, '&:hover': { backgroundColor: 'transparent' } }} onClick={handleHeaderClick}>\r\n\t\t\t\t\t\t\t\t<img src={images.common.arrowIcon} alt='Arrow Icon' />\r\n\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\tenableColumnDragging: false,\r\n\t\t\t\t\t\tvisible: true,\r\n\t\t\t\t\t\tmuiTableHeadCellProps: {\r\n\t\t\t\t\t\t\tclassName: 'pinned-column'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tmuiTableBodyCellProps: {\r\n\t\t\t\t\t\t\tclassName: 'pinned-column'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tCell: (props) =>\r\n\t\t\t\t\t\t\tdefaultActionColumnItems?.length ? (\r\n\t\t\t\t\t\t\t\tdefaultActionColumnItems.map((item) => {\r\n\t\t\t\t\t\t\t\t\tconst updatedProps = {\r\n\t\t\t\t\t\t\t\t\t\t...item.props,\r\n\t\t\t\t\t\t\t\t\t\tonClick: () => item.props.onClick(props)\r\n\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\t\treturn cloneElement(item, updatedProps);\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t) : !disabledDefaultActionColumnIcon && (\r\n\t\t\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\t\t\tonClick={(e) => handleActionsClick(e, props.row.original)} disabled={!rowActionMenu?.length && !destructiveActionMenu?.length}>\r\n\t\t\t\t\t\t\t\t\t<img src={images.more} alt='More Icon' />\r\n\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t\t: [])\r\n\t\t],\r\n\t\tdata: rows,\r\n\t\tmuiTableContainerProps: {\r\n\t\t\tsx: {\r\n\t\t\t\t...(disableMaxHeight && { maxHeight: 'none !important' }),\r\n\t\t\t},\r\n\t\t},\r\n\t\tmuiTablePaperProps: {\r\n\t\t\tsx: {\r\n\t\t\t\ttableLayout: 'auto', // lets columns shrink to fit content\r\n\t\t\t},\r\n\t\t},\r\n\t\tcolumnResizeMode: 'onChange',\r\n\t\tonEditingRowSave: async (data) => {\r\n\t\t\ttry {\r\n\t\t\t\tawait validationSchema.validate(data.values, {\r\n\t\t\t\t\tabortEarly: false\r\n\t\t\t\t});\r\n\t\t\t\tsetValidationErrors({});\r\n\t\t\t\tsetIsEditingRow(true);\r\n\t\t\t\tsetDisableNextEdit(false)\r\n\t\t\t\tconst cells = data.row.getAllCells().map((c) => c.column.columnDef);\r\n\t\t\t\tdata.row._valuesCache = formtValues(data.values, cells);\r\n\r\n\t\t\t\tif (onEditRow) {\r\n\t\t\t\t\tawait onEditRow(data, 'edit');\r\n\t\t\t\t}\r\n\t\t\t\tsetIsEditingRow(false);\r\n\t\t\t\tdata.table.setEditingRow(null);\r\n\t\t\t} catch (err) {\r\n\t\t\t\tsetIsEditingRow(false);\r\n\t\t\t\tif (err instanceof yup.ValidationError) {\r\n\t\t\t\t\tconst errors: Record<string, string> = {};\r\n\r\n\t\t\t\t\terr.inner.forEach((error) => {\r\n\t\t\t\t\t\tif (error.path) {\r\n\t\t\t\t\t\t\terrors[error.path] = error.message;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tsetValidationErrors(errors);\r\n\t\t\t\t} else if (err instanceof Error) {\r\n\t\t\t\t\tenqueueSnackbar(err.message, { variant: 'error' })\r\n\t\t\t\t} else {\r\n\t\t\t\t\tenqueueSnackbar('Something went wrong', { variant: 'error' })\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tonCreatingRowSave: async (data) => {\r\n\t\t\ttry {\r\n\t\t\t\tawait validationSchema.validate(data.values, {\r\n\t\t\t\t\tabortEarly: false\r\n\t\t\t\t});\r\n\t\t\t\tsetValidationErrors({});\r\n\t\t\t\tsetIsCreatingRow(true);\r\n\t\t\t\tsetDisableNextEdit(false)\r\n\t\t\t\tconst cells = data.row.getAllCells().map((c) => c.column.columnDef);\r\n\r\n\t\t\t\tdata.row._valuesCache = formtValues(data.values, cells);\r\n\r\n\t\t\t\tif (onCreateRow) {\r\n\t\t\t\t\tawait onCreateRow(data);\r\n\t\t\t\t}\r\n\t\t\t\tsetIsCreatingRow(false);\r\n\t\t\t\tdata.table.setCreatingRow(null);\r\n\t\t\t} catch (err) {\r\n\t\t\t\tsetIsCreatingRow(false);\r\n\t\t\t\tif (err instanceof yup.ValidationError) {\r\n\t\t\t\t\tconst errors: Record<string, string> = {};\r\n\r\n\t\t\t\t\terr.inner.forEach((error) => {\r\n\t\t\t\t\t\tif (error.path) {\r\n\t\t\t\t\t\t\terrors[error.path] = error.message;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tsetValidationErrors(errors);\r\n\t\t\t\t} else if (err instanceof Error) {\r\n\t\t\t\t\tenqueueSnackbar(err.message, { variant: 'error' })\r\n\t\t\t\t} else {\r\n\t\t\t\t\tenqueueSnackbar('Something went wrong', { variant: 'error' })\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tonCreatingRowCancel: () => resetRowSelection(),\r\n\t\tonEditingRowCancel: () => resetRowSelection(),\r\n\t\tonSortingChange: states?.sorting ? onSortingChange : setSorting,\r\n\r\n\t\tdisplayColumnDefOptions: {\r\n\t\t\t'mrt-row-actions': {\r\n\t\t\t\t// size: onDeleteRow ? 80 : 50,\r\n\r\n\t\t\t\tHeader: (\r\n\t\t\t\t\t<IconButton onClick={handleHeaderClick} size='small'>\r\n\t\t\t\t\t\t<img src={images.common.arrowIcon} alt='Arrow Icon' />\r\n\t\t\t\t\t</IconButton>\r\n\t\t\t\t),\r\n\t\t\t\tmuiTableBodyCellProps: {\r\n\t\t\t\t\tsx: {\r\n\t\t\t\t\t\t'& .MuiBox-root': {\r\n\t\t\t\t\t\t\tgap: 0\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tbackgroundColor: '#fff'\r\n\t\t\t\t\t},\r\n\t\t\t\t\tonKeyUp: (e) => console.log(e)\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t'mrt-row-expand': {\r\n\t\t\t\tsize: 70, // Set the size of the expand-collapse arrow column here\r\n\t\t\t},\r\n\t\t\t'mrt-row-select': {\r\n\t\t\t\tsize: 50, // Set the width of the checkbox column here\r\n\t\t\t},\r\n\t\t},\r\n\t\trenderRowActions: ({ row, table }) => (\r\n\t\t\t<>\r\n\t\t\t\t{rest?.enableExpanding ? (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t{row?.parentId && (\r\n\t\t\t\t\t\t\t<Box sx={{ display: 'flex', gap: 0 }}>\r\n\t\t\t\t\t\t\t\t<Tooltip title='Edit'>\r\n\t\t\t\t\t\t\t\t\t<IconButton disabled={disableNextEdit} onClick={() => {\r\n\t\t\t\t\t\t\t\t\t\ttable.setEditingRow(row)\r\n\t\t\t\t\t\t\t\t\t\tsetDisableNextEdit(true)\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t} size='small'>\r\n\t\t\t\t\t\t\t\t\t\t<Edit fontSize='small' sx={{ color: 'theme.secondary.1000' }} />\r\n\t\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t\t{onDeleteRow && (\r\n\t\t\t\t\t\t\t\t\t<Tooltip title='Delete'>\r\n\t\t\t\t\t\t\t\t\t\t<IconButton disabled={disableNextEdit} onClick={() => setRowToDelete(row)} size='small'>\r\n\t\t\t\t\t\t\t\t\t\t\t<Trash fontSize='small' sx={{ color: 'theme.secondary.1000' }} />\r\n\t\t\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</>\r\n\t\t\t\t) : (\r\n\t\t\t\t\t<Box sx={{ display: 'flex', gap: 0 }}>\r\n\t\t\t\t\t\t<Tooltip title='Edit'>\r\n\t\t\t\t\t\t\t<IconButton disabled={disableNextEdit} onClick={() => {\r\n\t\t\t\t\t\t\t\ttable.setEditingRow(row)\r\n\t\t\t\t\t\t\t\tsetDisableNextEdit(true)\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t}>\r\n\t\t\t\t\t\t\t\t<Edit fontSize='small' sx={{ color: 'theme.secondary.1000' }} />\r\n\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t{onDeleteRow && (\r\n\t\t\t\t\t\t\t<Tooltip title='Delete'>\r\n\t\t\t\t\t\t\t\t<IconButton onClick={() => setRowToDelete(row)}>\r\n\t\t\t\t\t\t\t\t\t<Trash fontSize='small' sx={{ color: 'theme.secondary.1000' }} />\r\n\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t)}\r\n\t\t\t</>\r\n\t\t),\r\n\r\n\t\t...(Boolean(enableRowCreate) && {\r\n\t\t\trenderBottomToolbarCustomActions: ({ table }) => (\r\n\t\t\t\t<Button\r\n\t\t\t\t\tvariant='outlined'\r\n\t\t\t\t\tstartIcon={<Add />}\r\n\t\t\t\t\tclassName='add-row-btn'\r\n\t\t\t\t\tdisabled={disableNextEdit}\r\n\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\ttable.setCreatingRow(true); //simplest way to open the create row modal with no default values\r\n\t\t\t\t\t\tsetDisableNextEdit(true)\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\t{t('common.add')}\r\n\t\t\t\t</Button>\r\n\t\t\t)\r\n\t\t}),\r\n\t\tonRowSelectionChange: setRowSelection,\r\n\t\tenableColumnOrdering: true,\r\n\t\tenableRowSelection: enableRowSelection ?? true,\r\n\t\tenableEditing: enableEditing instanceof Function ? enableEditing() : enableEditing ?? true,\r\n\t\teditDisplayMode: editDisplayMode ?? 'cell',\r\n\t\tcreateDisplayMode: 'row',\r\n\t\tenableColumnResizing: enableColumnResizing,\r\n\t\tenableRowDragging: enableRowDragging,\r\n\t\tenableTopToolbar: false,\r\n\t\tenableColumnActions: false,\r\n\t\tenableSorting: true,\r\n\t\tenableGrouping: true,\r\n\t\tenableBottomToolbar: enableBottomToolbar ?? false,\r\n\t\tenableColumnDragging: enableColumnDragging ?? true,\r\n\t\tenableStickyHeader: true,\r\n\t\tenableSortingRemoval: false,\r\n\t\t// column ordering\r\n\t\tstate: {\r\n\t\t\t// columnOrder: (!columnOrder || columnOrder.length <= 1) \r\n\t\t\t// ? [...internalColumnOrder] \r\n\t\t\t// : [...columnOrder],\r\n\t\t\tcolumnOrder: columnOrder,\r\n\t\t\tcolumnPinning: { left: ['actions', 'mrt-row-actions'] },\r\n\t\t\tisSaving: isCreatingRow || isEditingRow,\r\n\t\t\tshowProgressBars: false,\r\n\t\t\trowSelection,\r\n\t\t\t...states,\r\n\t\t\tsorting: Array.isArray(states?.sorting) ? states?.sorting :\r\n\t\t\t\tArray.isArray(sorting) ? sorting : [],\r\n\t\t\tcolumnSizing\r\n\r\n\t\t},\r\n\t\tgetRowId: (row) => row?.id,\r\n\t\t// table.getState().editingRow\r\n\t\tmuiTableBodyRowProps: ({ row }) => {\r\n\t\t\tconst editingRowId =\r\n\t\t\t\ttable.getState()?.editingRow?.id ||\r\n\t\t\t\ttable.getState()?.creatingRow?.id ||\r\n\t\t\t\tnull;\r\n\t\t\tconst isErrorRow = Boolean(row?.original?.has_error)\r\n\t\t\treturn {\r\n\t\t\t\tonClick: () => handleRowClick(row.id),\r\n\t\t\t\tsx: {\r\n\t\t\t\t\tcursor: 'pointer',\r\n\t\t\t\t\t// backgroundColor: !editingRowId\r\n\t\t\t\t\t// \t? (selectedRow === row.id\r\n\t\t\t\t\t// \t\t? '#e8e8e8'\r\n\t\t\t\t\t// \t\t: (isErrorRow ? 'theme.error.100' : 'inherit'))\r\n\t\t\t\t\t// \t: 'inherit',\r\n\t\t\t\t\tbackgroundColor: !editingRowId\r\n\t\t\t\t\t\t? (isErrorRow ? 'theme.error.100' : 'inherit')\r\n\t\t\t\t\t\t: 'inherit',\r\n\t\t\t\t\t'&:hover': {\r\n\t\t\t\t\t\tbackgroundColor: editingRowId ? 'transparent' : (isErrorRow ? 'theme.error.200' : '#e8e8e8') // Removes hover effect globally\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'&:hover td:after': {\r\n\t\t\t\t\t\tbackgroundColor: 'transparent' // Removes the grey background applied via :after\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t},\r\n\t\tonColumnOrderChange: (colOrder: any) => {\r\n\t\t\tif (handleColumnOrdering) handleColumnOrdering(colOrder);\r\n\t\t},\r\n\t\tonColumnSizingChange: setColumnSizing,\r\n\t\tonColumnSizingInfoChange: setColumnSizingInfo,\r\n\r\n\t\trenderEmptyRowsFallback: () => (\r\n\t\t\t<Box className='no-data'>\r\n\t\t\t\t<img src={images.common.tableNoData} />\r\n\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\r\n\t\t\t\t\t{/* sx={{ textAlign: 'center', pb: 4.75, pt: 4.75 }}> */}\r\n\t\t\t\t\t{t('common.noData')}\r\n\t\t\t\t</Typography>\r\n\t\t\t</Box>\r\n\t\t),\r\n\r\n\t\t// pagination\r\n\t\tenablePagination: enablePagination,\r\n\t\tpaginationDisplayMode: 'pages',\r\n\t\tmuiPaginationProps: {\r\n\t\t\tshape: 'rounded',\r\n\t\t\tpage: pageNo, // current page number\r\n\t\t\tcount: totalPages, // total pages\r\n\t\t\tshowRowsPerPage: false, // Hide rows per page options\r\n\t\t\tboundaryCount: 3\r\n\t\t},\r\n\r\n\t\tmuiEditTextFieldProps: ({ row, column }) => ({\r\n\t\t\tInputProps: {\r\n\t\t\t\tdisableUnderline: true\r\n\t\t\t},\r\n\t\t\tonBlur: (e) => {\r\n\t\t\t\tupdateData(e.target.value, column, row.id);\r\n\t\t\t},\r\n\t\t\t// onChange: (e) => {\r\n\t\t\t// \tupdateData(e.target.value, column, row.id);\r\n\t\t\t// },\r\n\t\t\tvariant: 'outlined',\r\n\t\t\tsx: ({ palette }) => ({\r\n\t\t\t\t'& .MuiOutlinedInput-root': {\r\n\t\t\t\t\t'& fieldset': {\r\n\t\t\t\t\t\tborderColor: `${palette.theme?.primary[700]} !important`\r\n\t\t\t\t\t\t// backgroundColor: palette.theme?.primary[700]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}),\r\n\r\n\t\t/* Table loader style */\r\n\t\tmuiCircularProgressProps: {\r\n\t\t\tsx: {\r\n\t\t\t\tcolor: '#289B64'\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Table header cell default styles\r\n\t\tmuiTableHeadCellProps: {\r\n\t\t\tsx: {\r\n\t\t\t\tlineHeight: '140%',\r\n\t\t\t\tletterSpacing: '-0.28px',\r\n\t\t\t\tfontWeight: '500',\r\n\t\t\t\tfontSize: '0.875rem',\r\n\t\t\t\t'& .Mui-TableHeadCell-Content': {\r\n\t\t\t\t\theight: '100%'\r\n\t\t\t\t},\r\n\t\t\t\t'& .Mui-TableHeadCell-Content-Labels': {\r\n\t\t\t\t\twidth: '100%',\r\n\t\t\t\t\tjustifyContent: 'space-between'\r\n\t\t\t\t},\r\n\t\t\t\t'&.pinned-column': {\r\n\t\t\t\t\tbackgroundColor: '#fff'\r\n\t\t\t\t},\r\n\t\t\t\t'& .Mui-TableHeadCell-ResizeHandle-Wrapper': {\r\n\t\t\t\t\tpadding: 0,\r\n\t\t\t\t\tmargin: 0,\r\n\t\t\t\t\tright: '-5px',\r\n\t\t\t\t\topacity: 0\r\n\t\t\t\t},\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Table body cell default styles\r\n\t\tmuiTableBodyProps: {\r\n\t\t\tsx: {\r\n\t\t\t\tzIndex: 500\r\n\t\t\t}\r\n\t\t},\r\n\t\tmuiTableHeadProps: {\r\n\t\t\tsx: {\r\n\t\t\t\tzIndex: 600\r\n\t\t\t}\r\n\t\t},\r\n\t\tmuiTableBodyCellProps: (/* { cell, column, table , row } */) => ({\r\n\t\t\tsx: {\r\n\t\t\t\tlineHeight: '140%',\r\n\t\t\t\tletterSpacing: '-0.26px',\r\n\t\t\t\tfontWeight: '400',\r\n\t\t\t\tfontSize: '0.8125rem',\r\n\t\t\t\t'&.pinned-column': {\r\n\t\t\t\t\tbackgroundColor: '#fff'\r\n\t\t\t\t},\r\n\t\t\t\t'&:hover': {\r\n\t\t\t\t\tbackgroundColor: 'transparent' // Removes hover effect globally\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// onClick: () => {\r\n\t\t\t// \ttable.setEditingCell(cell); //set editing cell\r\n\t\t\t// \tqueueMicrotask(() => {\r\n\t\t\t// \t\tconst textField = table.refs.editInputRefs.current[column.id];\r\n\t\t\t// \t\tif (textField) {\r\n\t\t\t// \t\t\ttextField.focus();\r\n\t\t\t// \t\t\ttextField.select?.();\r\n\t\t\t// \t\t}\r\n\t\t\t// \t});\r\n\t\t\t// }\r\n\t\t\t// onKeyDown: (event) => {\r\n\t\t\t// \tif (event.key === 'Tab') {\r\n\t\t\t// \t\ttry {\r\n\t\t\t// \t\t\t\t// if (column.columnDef.editVariant === 'select') {\r\n\t\t\t// \t\t\t\t// \ttable.refs.editInputRefs.current[column.id]?.node?.blur();\r\n\t\t\t// \t\t\t\t// } else {\r\n\t\t\t// \t\t\t\t// \ttable.refs.editInputRefs.current[column.id].blur();\r\n\t\t\t// \t\t\t\t// }\r\n\r\n\t\t\t// \t\t\tconst rowIdx = row.index;\r\n\t\t\t// \t\t\tconst colIdx = columns.findIndex(\r\n\t\t\t// \t\t\t\t(col) => col.accessorKey === column.id\r\n\t\t\t// \t\t\t);\r\n\t\t\t// \t\t\tconst newColIdx = colIdx + 1;\r\n\t\t\t// \t\t\tconst clm = columns[newColIdx];\r\n\t\t\t// \t\t\tconst nextCell = row\r\n\t\t\t// \t\t\t\t.getAllCells()\r\n\t\t\t// \t\t\t\t.find((cl) => (cl.id = `${rowIdx}_${clm.accessorKey}`));\r\n\r\n\t\t\t// \t\t\tif (nextCell) {\r\n\t\t\t// \t\t\t\t// updateData(event.target.value, column, row.id);\r\n\t\t\t// \t\t\t\ttable.setEditingCell(nextCell);\r\n\t\t\t// \t\t\t\tqueueMicrotask(() => {\r\n\t\t\t// \t\t\t\t\tconst textField = table.refs.editInputRefs.current[column.id];\r\n\t\t\t// \t\t\t\t\tif (textField) {\r\n\t\t\t// \t\t\t\t\t\ttextField.focus();\r\n\t\t\t// \t\t\t\t\t\ttextField.select?.();\r\n\t\t\t// \t\t\t\t\t}\r\n\t\t\t// \t\t\t\t});\r\n\t\t\t// \t\t\t}\r\n\t\t\t// \t\t} catch (error) {\r\n\t\t\t// \t\t}\r\n\t\t\t// \t}\r\n\t\t\t// },\r\n\t\t\t// onBlur: () => {\r\n\t\t\t// \ttable.setEditingCell(null);\r\n\t\t\t// }\r\n\t\t}),\r\n\r\n\t\t// Checkbox styling\r\n\t\tmuiSelectCheckboxProps: {\r\n\t\t\tsx: {\r\n\t\t\t\tcolor: 'theme.secondary.300',\r\n\t\t\t\t'&.Mui-checked': {\r\n\t\t\t\t\tcolor: 'theme.primary.600',\r\n\t\t\t\t\t'&:hover': {\r\n\t\t\t\t\t\tcolor: 'theme.primary.500'\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t'&.Mui-disabled': {\r\n\t\t\t\t\tcolor: 'theme.secondary.200'\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\ticon: <RecgtangleIcon sx={{ width: 20, height: 20 }} />,\r\n\t\t\tcheckedIcon: <CheckBoxIcon sx={{ width: 20, height: 20 }} />\r\n\t\t},\r\n\t\tmuiSelectAllCheckboxProps: {\r\n\t\t\tsx: {\r\n\t\t\t\tcolor: 'theme.secondary.300',\r\n\t\t\t\t'&.Mui-checked': {\r\n\t\t\t\t\tcolor: 'theme.primary.600',\r\n\t\t\t\t\t'&:hover': {\r\n\t\t\t\t\t\tcolor: 'theme.primary.500'\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t'&.Mui-disabled': {\r\n\t\t\t\t\tcolor: 'theme.secondary.600'\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\ticon: <RecgtangleIcon sx={{ width: 20, height: 20 }} />,\r\n\t\t\tcheckedIcon: <CheckBoxIcon sx={{ width: 20, height: 20 }} />\r\n\t\t},\r\n\t\tmuiBottomToolbarProps: {\r\n\t\t\tsx: {\r\n\t\t\t\tboxShadow: 'none',\r\n\t\t\t\t'& .MuiBox-root': {\r\n\t\t\t\t\tpaddingLeft: 0\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tlayoutMode: 'grid',\r\n\t\ticons: {\r\n\t\t\tArrowDownwardIcon: (props: SvgIconProps) => (\r\n\t\t\t\t<ArrowUpDown fontSize='medium' {...props} />\r\n\t\t\t),\r\n\t\t\tSortIcon: (props: SvgIconProps) => (\r\n\t\t\t\t<ArrowUpDown fontSize='medium' {...props} />\r\n\t\t\t),\r\n\t\t\tSyncAltIcon: () => <ArrowUpDown fontSize='medium' />,\r\n\t\t\tCancelIcon: (props: SvgIconProps) => (\r\n\t\t\t\t<Close fontSize='small' {...props} sx={{ color: 'theme.secondary.1000' }} />\r\n\t\t\t),\r\n\t\t\tSaveIcon: (props: SvgIconProps) => (\r\n\t\t\t\t<Save {...props} fontSize='small' sx={{ color: 'theme.secondary.1000' }} />\r\n\t\t\t)\r\n\t\t},\r\n\r\n\t\t...rest\r\n\t});\r\n\r\n\tuseEffect(() => {\r\n\t\tif (enableRowSelection) {\r\n\t\t\tif (table?.getSelectedRowModel()?.rows) {\r\n\t\t\t\tSetSelectedRowId?.(table?.getSelectedRowModel()?.rows);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [enableRowSelection]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (onSelectRow) {\r\n\t\t\tif (rest?.enableExpanding) {\r\n\t\t\t\tconst selectedRowModels: any[] = [];\r\n\t\t\t\tconst selection = table.getState().rowSelection; // e.g., { 0.0: true }\r\n\t\t\t\tconst traverseRows = (rows, parentKey = '') => {\r\n\t\t\t\t\trows.forEach((row, index) => {\r\n\t\t\t\t\t\tconst rowKey = parentKey ? `${parentKey}.${index}` : `${row.id}`;\r\n\t\t\t\t\t\tif (selection[rowKey]) {\r\n\t\t\t\t\t\t\tselectedRowModels.push(row);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Check for sub-rows and traverse further\r\n\t\t\t\t\t\tif (row.subRows?.length) {\r\n\t\t\t\t\t\t\ttraverseRows(row.subRows, rowKey);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\r\n\t\t\t\ttraverseRows(table.getRowModel().rows);\r\n\t\t\t\tonSelectRow(selectedRowModels, rowSelection);\r\n\t\t\t} else {\r\n\t\t\t\tonSelectRow(table.getSelectedRowModel().rows, rowSelection);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [rowSelection, table]);\r\n\r\n\t// useEffect(() => {\r\n\t// \tconst relativeContainer = document.getElementsByClassName(\r\n\t// \t\t'MuiTableContainer-root'\r\n\t// \t)[0];\r\n\t// \tconst fixedElement = document.getElementsByClassName('no-data')[0];\r\n\t// \trelativeContainer.addEventListener('scroll', () => {\r\n\t// \t\tconst scrollLeft = relativeContainer.scrollLeft;\r\n\t// \t\tfixedElement.style.left = `${scrollLeft + 100}px`;\r\n\t// \t});\r\n\t// }, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (isResetRow) {\r\n\t\t\ttable?.resetRowSelection();\r\n\t\t}\r\n\t}, [isResetRow, table]);\r\n\treturn (\r\n\t\t<TableWrapper className='MRT-TableWrapper custom-table' disableMaxHeight={disableMaxHeight}>\r\n\t\t\t<MaterialReactTable table={table} />\r\n\r\n\t\t\t<Menu\r\n\t\t\t\tanchorEl={anchorEl}\r\n\t\t\t\topen={Boolean(anchorEl)}\r\n\t\t\t\tonClose={handleHeaderClose}\r\n\t\t\t\tclassName='add-role-drp'>\r\n\t\t\t\t{popUpShow ? (\r\n\t\t\t\t\t<div>\r\n\t\t\t\t\t\t<MenuItem\r\n\t\t\t\t\t\t\tonClick={handleBackButtonClick}\r\n\t\t\t\t\t\t\tclassName='role-drp-list add-column-title'>\r\n\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\r\n\t\t\t\t\t\t\t\t<ChevronLeftIcon />\r\n\t\t\t\t\t\t\t</ListItemIcon>\r\n\t\t\t\t\t\t\t<ListItemText className='title'>\r\n\t\t\t\t\t\t\t\t{t('common.addColumn_label')}\r\n\t\t\t\t\t\t\t</ListItemText>\r\n\t\t\t\t\t\t</MenuItem>\r\n\t\t\t\t\t\t<Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\r\n\t\t\t\t\t\t<div className='searchbar-box-list'>\r\n\t\t\t\t\t\t\t<SearchBar\r\n\t\t\t\t\t\t\t\tplaceholder={'Search User'}\r\n\t\t\t\t\t\t\t\thandleSearch={(e) => handleSearchEvent(e)}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div className='all-attribute-title'>\r\n\t\t\t\t\t\t\t<Typography variant='body2' color='text.secondary'>\r\n\t\t\t\t\t\t\t\t{t('common.allAttributes_label')}\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t{filteredOptions.map((column: any) => (\r\n\t\t\t\t\t\t\t<MenuItem\r\n\t\t\t\t\t\t\t\tkey={column.accessorKey}\r\n\t\t\t\t\t\t\t\tonClick={() => handleAddColumn(column)}>\r\n\t\t\t\t\t\t\t\t<Typography color='theme.secondary.1000' type='s3'>\r\n\t\t\t\t\t\t\t\t\t{column.header}\r\n\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t</MenuItem>\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t<Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tenableAddCustomField && <MenuItem onClick={handleCustomAddColumn} className='role-drp-list'>\r\n\t\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\r\n\t\t\t\t\t\t\t\t\t<img src={images.common.addIcon} alt='Add Icon' />\r\n\t\t\t\t\t\t\t\t</ListItemIcon>\r\n\t\t\t\t\t\t\t\t<ListItemText className='title'>\r\n\t\t\t\t\t\t\t\t\t{t('common.addCustomField_label')}\r\n\t\t\t\t\t\t\t\t</ListItemText>\r\n\t\t\t\t\t\t\t</MenuItem>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t) : (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t{visibleColumns.map((column: any) => (\r\n\t\t\t\t\t\t\t<MenuItem\r\n\t\t\t\t\t\t\t\tkey={column.accessorKey}\r\n\t\t\t\t\t\t\t\tonClick={() => handleVisibleColumn(column)}\r\n\t\t\t\t\t\t\t\tclassName='role-drp-list'>\r\n\t\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\r\n\t\t\t\t\t\t\t\t\t<img src={images.common.dotsIcon} alt='Add Icon' />\r\n\t\t\t\t\t\t\t\t</ListItemIcon>\r\n\t\t\t\t\t\t\t\t<ListItemText className='title'>{column.header}</ListItemText>\r\n\t\t\t\t\t\t\t\t<ListItemIcon className='eye-icon'>\r\n\t\t\t\t\t\t\t\t\t<img src={images.common.eyeIcon} alt='Eye Icon' />\r\n\t\t\t\t\t\t\t\t</ListItemIcon>\r\n\t\t\t\t\t\t\t</MenuItem>\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t<Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\r\n\t\t\t\t\t\t<MenuItem onClick={handleAddButtonClick} className='role-drp-list'>\r\n\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\r\n\t\t\t\t\t\t\t\t<img src={images.common.addIcon} alt='Add Icon' />\r\n\t\t\t\t\t\t\t</ListItemIcon>\r\n\t\t\t\t\t\t\t<ListItemText className='title'>\r\n\t\t\t\t\t\t\t\t{t('common.addColumn_label')}\r\n\t\t\t\t\t\t\t</ListItemText>\r\n\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\tvariant='body2'\r\n\t\t\t\t\t\t\t\tcolor='text.secondary'\r\n\t\t\t\t\t\t\t\tclassName='eye-icon'>\r\n\t\t\t\t\t\t\t\t<ChevronRightIcon sx={{ fontSize: '1.25rem !important' }} />\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t</MenuItem>\r\n\t\t\t\t\t</>\r\n\t\t\t\t)}\r\n\t\t\t</Menu>\r\n\r\n\t\t\t<Menu\r\n\t\t\t\tanchorEl={rowAnchorEl}\r\n\t\t\t\topen={Boolean(rowAnchorEl)}\r\n\t\t\t\tonClose={handleActionsClose}>\r\n\t\t\t\t{rowActionMenu?.map((option: any) => {\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t(option.label === 'Move' &&\r\n\t\t\t\t\t\t\t(row?.is_directory === true || row?.is_directory === 1)) ||\r\n\t\t\t\t\t\t(option.label === 'Download' &&\r\n\t\t\t\t\t\t\t(row?.is_directory === true ||\r\n\t\t\t\t\t\t\t\trow?.is_directory === 1 ||\r\n\t\t\t\t\t\t\t\trow?.drive?.is_directory === true ||\r\n\t\t\t\t\t\t\t\trow?.drive?.is_directory === 1))\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\t// return null;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t<MenuItem\r\n\t\t\t\t\t\t\tonClick={async () => {\r\n\t\t\t\t\t\t\t\tawait option.handleAction(row);\r\n\t\t\t\t\t\t\t\tsetRowAnchorEl(null);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tdisabled={\r\n\t\t\t\t\t\t\t\ttypeof option.disabled === 'function'\r\n\t\t\t\t\t\t\t\t\t? option.disabled(row)\r\n\t\t\t\t\t\t\t\t\t: Boolean(option.disabled)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tsx={{ alignItems: 'center', gap: 0.5 }}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{option?.icon}\r\n\t\t\t\t\t\t\t<Typography type='s4' color='inherit'>\r\n\t\t\t\t\t\t\t\t{typeof option.label === 'function' ? option.label(row) : option.label}\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t</MenuItem>\r\n\t\t\t\t\t);\r\n\t\t\t\t})}\r\n\t\t\t\t{destructiveActionMenu?.length > 0 &&\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t<Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\r\n\t\t\t\t\t\t<div className='dropdown-inner--DestructiveHeader'>\r\n\t\t\t\t\t\t\t{destructiveActionMenu?.map((option: any) => (\r\n\t\t\t\t\t\t\t\t<MenuItem\r\n\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\toption.handleAction(row);\r\n\t\t\t\t\t\t\t\t\t\tsetRowAnchorEl(null);\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tclassName='dropdown-inner--DestructiveActions'\r\n\t\t\t\t\t\t\t\t\tdisabled={\r\n\t\t\t\t\t\t\t\t\t\ttypeof option.disabled === 'function'\r\n\t\t\t\t\t\t\t\t\t\t\t? option.disabled(row)\r\n\t\t\t\t\t\t\t\t\t\t\t: Boolean(option.disabled)\r\n\t\t\t\t\t\t\t\t\t}>\r\n\t\t\t\t\t\t\t\t\t<Typography type='s4' color='inherit'>\r\n\t\t\t\t\t\t\t\t\t\t{typeof option.label === 'function' ? option.label(row) : option.label}\r\n\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t</MenuItem>\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</>\r\n\t\t\t\t}\r\n\t\t\t</Menu>\r\n\t\t\t<ConfirmPopUp\r\n\t\t\t\topen={Boolean(rowToDelete)}\r\n\t\t\t\tonClose={() => setRowToDelete(null)}\r\n\t\t\t\tonConfirm={() => handleRowDelete()}\r\n\t\t\t\ttitle='Delete Item'\r\n\t\t\t\tdescription={`Are you sure you want to delete entry ?`}\r\n\t\t\t\tloading={isDeletingRow}\r\n\t\t\t/>\r\n\t\t</TableWrapper>\r\n\t);\r\n});\r\n\r\nexport default MaterialTable;","import React from 'react';\r\nimport { Box, CircularProgress, CircularProgressProps } from '@mui/material';\r\nimport { styled } from '@mui/material/styles';\r\n\r\nconst Loader = styled(CircularProgress)(({ theme }) => ({\r\n\tcolor: theme.palette?.theme.primary[500]\r\n}));\r\n\r\nconst LoaderContainer = styled(Box)(() => ({\r\n\tposition: 'absolute',\r\n\tdisplay: 'flex',\r\n\twidth: '100%',\r\n\theight: '100%',\r\n\tjustifyContent: 'center',\r\n\talignItems: 'center',\r\n\tbackgroundColor: '#ffffff96',\r\n\tzIndex: 3,\r\n\tleft: 0,\r\n\ttop: 0\r\n}));\r\n\r\nconst ModalLoader = (props: CircularProgressProps) => {\r\n\treturn (\r\n\t\t<LoaderContainer>\r\n\t\t\t<Loader size={50} {...props} />\r\n\t\t</LoaderContainer>\r\n\t);\r\n};\r\n\r\nexport { ModalLoader };\r\nexport default ModalLoader;\r\n","import { Box, DialogActions, DialogContent, DialogTitle, Divider, Grid, IconButton } from \"@mui/material\";\r\nimport Modal from '../modal/modal';\r\nimport Typography from \"../typography/typography\";\r\nimport DynamicInput from '../form-control/form-builder/form-builder-element/text';\r\nimport DynamicRadioButton from '../form-control/form-builder/form-builder-element/radio-button';\r\nimport { useForm, useWatch } from \"react-hook-form\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { generateValidationSchema, generateValidationSchema1 } from \"./validator\";\r\nimport DynamicSearchSelect from \"../form-control/form-builder/form-builder-element/dynamic-select\";\r\nimport DynamicPhone from '@/components/form-control/form-builder/form-builder-element/phone';\r\nimport Accordion from \"../accordion/accordion\";\r\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\r\nimport _ from \"lodash\";\r\nimport './parties-modal.scss';\r\nimport { useAccountingSetting } from \"../../hooks/useAccountSetting\";\r\nimport { useAuth } from '../../hooks/useAuth';\r\nimport {\r\n addressColumns,\r\n addressOmitKeys,\r\n addressPayload,\r\n contactColumns,\r\n contactOmitKeys,\r\n contactPayload,\r\n PARTIES_FIELDS,\r\n PARTIES_FORM_ARRAY_NAME,\r\n partyType,\r\n processPartiesPayload\r\n} from \"./utils/constant\";\r\nimport MaterialTable from \"../material-table/material-table\";\r\nimport parsePhoneNumberFromString from \"libphonenumber-js\";\r\nimport Checkbox from \"../checkbox/checkbox\";\r\nimport { transformTableColumns } from \"../../utils/common-utility\";\r\nimport { createParties } from \"../../redux/actionCreator\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { enqueueSnackbar } from 'notistack';\r\nimport { getErrorMessage } from \"../../utils/common\";\r\nimport ModalLoader from \"../loaders/modal-loader\";\r\nimport Button from \"../button/button\";\r\nimport { Close } from \"@mui/icons-material\";\r\n\r\ninterface CustomerVendorModalProps {\r\n isOpen: boolean;\r\n handleModalClose?: () => void;\r\n modalProps?: any;\r\n type?: string;\r\n partyCreated?: () => void;\r\n isLoading?: boolean;\r\n onSave?: (payload: any) => Promise<void>;\r\n setIsOpen?: (value: boolean) => void;\r\n}\r\n\r\ninterface LocationState {\r\n state: any;\r\n country: any;\r\n}\r\n\r\nconst defaultLocationState: LocationState = { state: '', country: '' };\r\n\r\nexport default function CustomerVendorModal({\r\n isOpen,\r\n handleModalClose,\r\n modalProps,\r\n type,\r\n partyCreated,\r\n isLoading,\r\n onSave,\r\n setIsOpen\r\n}: CustomerVendorModalProps) {\r\n\r\n //Hooks\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { user } = useAuth();\r\n\r\n //Refs\r\n const locationRef = useRef<LocationState>(defaultLocationState);\r\n\r\n //Local states\r\n const [addressRows, setAddressRows] = useState<any[]>([]);\r\n const [contactRows, setContactRows] = useState<any[]>([]);\r\n const [isCreating, setIsCreating] = useState(false);\r\n const [selectedCompanyData, setSelectedCompanyData] = useState<any[]>([]);\r\n\r\n //Form\r\n const {\r\n control,\r\n formState: { errors },\r\n trigger,\r\n getValues,\r\n handleSubmit,\r\n setValue,\r\n resetField,\r\n reset,\r\n watch,\r\n getFieldState\r\n\r\n } = useForm({\r\n defaultValues: {\r\n status: true,\r\n parties: {\r\n account_type: 'Company',\r\n },\r\n },\r\n mode: 'all',\r\n resolver: generateValidationSchema1()\r\n });\r\n\r\n const fieldToUpdate = {\r\n [PARTIES_FIELDS.RECEIVABLE_ACCOUNT]: 'receivable_account',\r\n [PARTIES_FIELDS.TAX_TEMPLATE]: 'default_tax',\r\n };\r\n\r\n useAccountingSetting({\r\n fieldToUpdate,\r\n companyField: PARTIES_FIELDS.COMPANY,\r\n fieldArrayName: PARTIES_FORM_ARRAY_NAME,\r\n formMethods: { control, setValue, watch, getFieldState },\r\n ...({ isUpdateAccount: true } as any),\r\n });\r\n\r\n\r\n const selectedType = useWatch({\r\n control,\r\n name: 'parties.account_type',\r\n });\r\n\r\n const responsiblePerson = useWatch({\r\n control,\r\n name: `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.RESPONSIBLE_PERSON}`,\r\n });\r\n\r\n const mainContactNo = useWatch({\r\n control,\r\n name: `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.CONTACT_NO}`,\r\n });\r\n\r\n const mainEmailIds = useWatch({\r\n control,\r\n name: `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.EMAIL_IDS}`,\r\n });\r\n\r\n //Call Back functions\r\n const tableColumns = useCallback(\r\n (columns: any, tableRows: any) => {\r\n const phoneNumberCache = new Map();\r\n\r\n return transformTableColumns({\r\n columns,\r\n currencySymbol: undefined,\r\n translationFn: t,\r\n enableFooter: false,\r\n redirectionLink: undefined,\r\n redirectionLinkState: undefined,\r\n rows: tableRows,\r\n statusClasses: undefined,\r\n customizeValue: (row, columnAccessorKey, value) => {\r\n switch (columnAccessorKey) {\r\n case 'default_shipping_address':\r\n case 'default_billing_address': {\r\n return (\r\n <Box sx={{ display: \"flex\", gap: 1 }}>\r\n <Checkbox\r\n checked={Boolean(value)}\r\n sx={{ pointerEvents: 'none' }}\r\n />\r\n </Box>\r\n );\r\n }\r\n\r\n case 'phone':\r\n case 'contact_no': {\r\n if (!value) return '';\r\n const phoneKey = `phone-${value}`;\r\n if (!phoneNumberCache.has(phoneKey)) {\r\n const parsed = parsePhoneNumberFromString(`+${value}`);\r\n phoneNumberCache.set(phoneKey, parsed?.nationalNumber || '');\r\n }\r\n return phoneNumberCache.get(phoneKey);\r\n }\r\n\r\n case 'country_code': {\r\n const phone = row?.original?.phone || row?.original?.contact_no;\r\n if (!phone) return '';\r\n const countryCodeKey = `country-${phone}`;\r\n if (!phoneNumberCache.has(countryCodeKey)) {\r\n const parsed = parsePhoneNumberFromString(`+${phone}`);\r\n phoneNumberCache.set(countryCodeKey,\r\n parsed?.countryCallingCode ? `+${parsed.countryCallingCode}` : ''\r\n );\r\n }\r\n return phoneNumberCache.get(countryCodeKey);\r\n }\r\n\r\n default:\r\n return value;\r\n }\r\n }\r\n });\r\n },\r\n [t]\r\n );\r\n\r\n //Methods\r\n\r\n const handleRowOperation = async (\r\n eData: any,\r\n state: any[],\r\n setState: React.Dispatch<React.SetStateAction<any[]>>,\r\n isAddress: boolean\r\n ) => {\r\n try {\r\n const { values, row } = eData;\r\n const editRow = row.index >= 0;\r\n const payload = isAddress ? addressPayload : contactPayload;\r\n\r\n const processedValues: any = {};\r\n for (const key in payload) {\r\n if (_.has(values, key)) {\r\n processedValues[key] = values?.[key] ? values[key] : null;\r\n }\r\n }\r\n\r\n if (isAddress) {\r\n const dropdowns = {\r\n c: locationRef.current?.country,\r\n s: locationRef.current?.state,\r\n };\r\n\r\n const validatedValues = await validateAddressDefaults(processedValues, state, row.index);\r\n const addressValues = {\r\n ...validatedValues,\r\n country_name: dropdowns.c?.name,\r\n country: dropdowns.c?.id,\r\n state_name: dropdowns.s?.name,\r\n state: dropdowns.s?.id,\r\n country_data: dropdowns.c,\r\n state_data: dropdowns.s,\r\n country_id: dropdowns.c?.id,\r\n state_id: dropdowns.s?.id,\r\n };\r\n\r\n if (editRow) {\r\n return setState(state.map((ar, i) => i === row.index ? { ...ar, ...addressValues } : ar));\r\n }\r\n return setState([...state, addressValues]);\r\n }\r\n\r\n if (editRow) {\r\n return setState(state.map((ar, i) => i === row.index ? { ...ar, ...processedValues } : ar));\r\n }\r\n return setState([...state, processedValues]);\r\n } catch (error) {\r\n return Promise.reject(error);\r\n }\r\n };\r\n\r\n const validateAddressDefaults = async (values: any, state: any[], index: number) => {\r\n let updatedValues = { ...values };\r\n const validate = (type: \"shipping\" | \"billing\") => {\r\n const u_data = [...state];\r\n const field = type === 'shipping' ? 'default_shipping_address' : 'default_billing_address';\r\n if (index >= 0) {\r\n u_data.splice(index, 1);\r\n }\r\n const hasDefault = u_data.some((d: any) => d?.[field]);\r\n\r\n if (hasDefault && values?.[field]) {\r\n throw new Error(\r\n `Another address is already marked as the default ${type} address. Please uncheck that before selecting this one`\r\n );\r\n }\r\n else if (!hasDefault) {\r\n updatedValues = {\r\n ...updatedValues,\r\n [field]: values?.[field] || state?.length == 0 ? 1 : 0,\r\n };\r\n }\r\n\r\n };\r\n\r\n await validate(\"shipping\");\r\n await validate(\"billing\");\r\n\r\n return updatedValues;\r\n };\r\n\r\n const deleteRow = async (\r\n state: any[],\r\n setState: React.Dispatch<React.SetStateAction<any[]>>,\r\n row: any\r\n ) => {\r\n const rowIndex = row.index;\r\n const updatedData = state.filter((_, i) => i !== rowIndex);\r\n setState(updatedData);\r\n return Promise.resolve();\r\n };\r\n\r\n const onChangeAddressTableField = async (e: any, t: any, r: any, col: any, selectedData: any) => {\r\n const fieldName = e?.target?.name;\r\n let updatedValues: any = null;\r\n\r\n if (col?.editProperties?.field_name) {\r\n locationRef.current = {\r\n ...locationRef.current,\r\n [col.editProperties.field_name]: selectedData,\r\n };\r\n }\r\n\r\n if (fieldName === 'country') {\r\n updatedValues = {\r\n ...r._valuesCache,\r\n country: selectedData.id,\r\n country_id: selectedData.id,\r\n state: null,\r\n state_id: null,\r\n state_name: null,\r\n };\r\n } else if (fieldName === 'state') {\r\n updatedValues = {\r\n ...r._valuesCache,\r\n state: selectedData.id,\r\n state_id: selectedData.id\r\n };\r\n } else if (fieldName === 'phone') {\r\n const p = parsePhoneNumberFromString(`+${e}`);\r\n updatedValues = {\r\n ...r._valuesCache,\r\n country_code: p?.countryCallingCode ? `+${p.countryCallingCode}` : '',\r\n };\r\n }\r\n\r\n const summaryFields = [\r\n 'contact_name',\r\n 'street_1',\r\n 'street_2',\r\n 'street_3',\r\n 'zip_code',\r\n 'city',\r\n 'state',\r\n 'country'\r\n ];\r\n\r\n if (r._valuesCache) {\r\n const fieldValues = summaryFields.map(field => {\r\n if (field === 'country') {\r\n return locationRef.current?.country?.name || '';\r\n } else if (field === 'state') {\r\n return locationRef.current?.state?.name || '';\r\n } else if (field === fieldName) {\r\n return e.target?.value || '';\r\n }\r\n return r._valuesCache?.[field] || '';\r\n });\r\n\r\n const summary = fieldValues.reduce((acc, val, idx) => {\r\n if (!val) return acc;\r\n if (!acc) return val;\r\n\r\n val = val?.name || val;\r\n acc = acc?.name || acc;\r\n\r\n return [2, 3].includes(idx) ? `${acc} ${val}` : `${acc}, \\n${val}`;\r\n }, '');\r\n\r\n r._valuesCache.summary = summary;\r\n }\r\n\r\n if (updatedValues) {\r\n r.getAllCells().forEach((c: any) => {\r\n if (_.has(updatedValues, c.column.id)) {\r\n r._valuesCache[c.column.id] = updatedValues[c.column.id];\r\n }\r\n });\r\n }\r\n\r\n return r._valuesCache;\r\n };\r\n\r\n\r\n\r\n const EMAIL_REGEX =\r\n /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\r\nconst onSubmit = async () => {\r\n const isValid = await trigger();\r\n if (!isValid) return;\r\n\r\n const values = getValues();\r\n const formValues = values?.[PARTIES_FORM_ARRAY_NAME];\r\n let emailArray: string[] = [];\r\n\r\n if (formValues?.email_ids) {\r\n emailArray = formValues?.email_ids\r\n ?.split(/\\s*,\\s*/)\r\n .map((email_id: any) => email_id?.replaceAll(',', '')?.trim())\r\n .filter((email_id: any) => email_id.match(EMAIL_REGEX));\r\n }\r\n\r\n const payload = {\r\n party: {\r\n ...processPartiesPayload(formValues),\r\n email_ids: emailArray,\r\n account_type: selectedType,\r\n status: 1,\r\n type,\r\n company_id: formValues?.[PARTIES_FIELDS.COMPANY] || null\r\n }\r\n };\r\n if (typeof onSave == 'function') {\r\n onSave?.(payload);\r\n return;\r\n }\r\n setIsCreating(true);\r\n try {\r\n\r\n const res = await dispatch(createParties(payload));\r\n\r\n if (res?.meta?.requestStatus === 'fulfilled') {\r\n enqueueSnackbar(`${type} ${t('common.party.msg.success')}`);\r\n closeModal();\r\n partyCreated();\r\n } else if (res?.meta?.requestStatus === 'rejected') {\r\n const errorMessage = getErrorMessage(res?.error?.message);\r\n enqueueSnackbar(errorMessage, { variant: 'error' });\r\n }\r\n } finally {\r\n setIsCreating(false);\r\n }\r\n };\r\n\r\n const closeModal = () => {\r\n resetForm()\r\n setAddressRows([]);\r\n setContactRows([]);\r\n handleModalClose?.();\r\n setIsOpen?.(false);\r\n }\r\n const resetForm = () => {\r\n reset();\r\n }\r\n\r\n //Use Effect\r\n useEffect(() => {\r\n const addressData = addressRows.map(a => _.omit(a, addressOmitKeys));\r\n setValue(`${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.ADDRESS}`, addressData);\r\n }, [addressRows, setValue]);\r\n\r\n useEffect(() => {\r\n const contactData = contactRows.map(c => _.omit(c, contactOmitKeys));\r\n setValue(`${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.CONTACTS}`, contactData);\r\n }, [contactRows, setValue]);\r\n\r\n useEffect(() => {\r\n setIsCreating(isLoading)\r\n }, [isLoading]);\r\n\r\n\r\n useEffect(() => {\r\n if (selectedType === 'Individual') {\r\n // Clear Company fields\r\n resetField('parties.company_name');\r\n resetField('parties.vat_number');\r\n resetField('parties.crn');\r\n }\r\n\r\n if (selectedType === 'Company') {\r\n // Clear Individual fields\r\n resetField('parties.first_name');\r\n resetField('parties.last_name');\r\n }\r\n }, [selectedType, resetField]);\r\n\r\n// Pre-fill company and currency from user data when modal opens\r\nuseEffect(() => {\r\n\t\tif (isOpen && user?.company_data) {\r\n\t\t\tconst companyId =\r\n\t\t\t\tuser?.entity_priority ||\r\n\t\t\t\tuser?.company_data?.id ||\r\n\t\t\t\t(Array.isArray(user?.company_data) && user?.company_data[0]?.id) ||\r\n\t\t\t\tnull;\r\n\r\n\r\n\t\t\tif (companyId) {\r\n\t\t\t\tsetValue('quotation.company_id', companyId);\r\n setValue(`${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.COMPANY}`, companyId);\r\n\t\t\t}\r\n\t\t}\r\n }, [isOpen, user?.company_data, setValue]);\r\n\r\n useEffect(() => {\r\n if (isOpen && user?.company_currencies) {\r\n const currencies = Object.values(user.company_currencies);\r\n if (currencies.length > 0) {\r\n setValue(`${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.CURRENCY}`, [currencies[0].id]);\r\n }\r\n }\r\n }, [isOpen, user?.company_currencies , setValue]);\r\n\r\n // Auto fill first contact row\r\n useEffect(() => {\r\n const firstContactRow = contactRows[0];\r\n const parsedCountryCode = mainContactNo\r\n ? `+${parsePhoneNumberFromString(`+${mainContactNo}`)?.countryCallingCode || ''}`\r\n : '';\r\n\r\n const firstEmail = mainEmailIds\r\n ? mainEmailIds.split(/\\s*,\\s*/).map((e: string) => e.trim()).filter((e: string) => EMAIL_REGEX.test(e))[0] || ''\r\n : '';\r\n\r\n const updatedFirstRow = {\r\n name: responsiblePerson || '',\r\n contact_no: mainContactNo || '',\r\n email: firstEmail,\r\n country_code: parsedCountryCode,\r\n };\r\n\r\n if (firstContactRow) {\r\n const hasChanged = Object.keys(updatedFirstRow).some(\r\n (key) => firstContactRow[key] !== updatedFirstRow[key]\r\n );\r\n if (hasChanged) {\r\n const updatedRows = [...contactRows];\r\n updatedRows[0] = { ...updatedRows[0], ...updatedFirstRow };\r\n setContactRows(updatedRows);\r\n }\r\n } else {\r\n setContactRows([updatedFirstRow, ...contactRows]);\r\n }\r\n }, [responsiblePerson, mainContactNo, mainEmailIds]);\r\n\r\n // Auto fill first Address Row\r\n useEffect(() => {\r\n const firstRow = addressRows[0];\r\n const hasAddressDetails = firstRow?.address_type || firstRow?.street_1 || firstRow?.city;\r\n\r\n if (responsiblePerson && mainContactNo) {\r\n const parsedCountryCode = mainContactNo\r\n ? `+${parsePhoneNumberFromString(`+${mainContactNo}`)?.countryCallingCode || ''}`\r\n : '';\r\n\r\n // Create first row if doesn't exist yet\r\n if (!firstRow) {\r\n setAddressRows([{\r\n ...addressPayload,\r\n contact_name: responsiblePerson,\r\n phone: mainContactNo,\r\n country_code: parsedCountryCode,\r\n }]);\r\n return;\r\n }\r\n\r\n // Update first row ONLY if address details are not yet filled\r\n if (!hasAddressDetails) {\r\n const contactChanged = firstRow?.contact_name !== responsiblePerson;\r\n const phoneChanged = firstRow?.phone !== mainContactNo;\r\n\r\n if (contactChanged || phoneChanged) {\r\n setAddressRows(prev => prev.map((row, idx) =>\r\n idx === 0\r\n ? { ...row, contact_name: responsiblePerson, phone: mainContactNo, country_code: parsedCountryCode }\r\n : row\r\n ));\r\n }\r\n }\r\n }\r\n }, [responsiblePerson, mainContactNo]);\r\n\r\n const basicDetailsSection = useMemo(() => (\r\n <Accordion\r\n title={\r\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\r\n {t(\"common.party.sections.basic_details\")}\r\n </Typography>\r\n }\r\n accordionProps={{\r\n defaultExpanded: true,\r\n className: \"form--Accordion\",\r\n }}\r\n >\r\n <Grid container spacing={2}>\r\n\r\n <Grid item xs={12} sm={12}>\r\n <DynamicRadioButton\r\n label=''\r\n name={PARTIES_FIELDS.TYPE}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n options={partyType}\r\n display='row'\r\n title={t(t('common.party.fields.type'))}\r\n titlePosition='start'\r\n position={2} />\r\n </Grid>\r\n\r\n {selectedType === \"Individual\" && (\r\n <>\r\n <Grid item xs={12} sm={6}>\r\n <DynamicInput\r\n label={t('common.party.fields.firstName_label')}\r\n name={PARTIES_FIELDS.FIRST_NAME}\r\n placeholder={t('common.party.fields.firstName_placeholder')}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n required\r\n />\r\n </Grid>\r\n <Grid item xs={12} sm={6}>\r\n <DynamicInput\r\n label={t('common.party.fields.lastName_label')}\r\n name={PARTIES_FIELDS.LAST_NAME}\r\n placeholder={t('common.party.fields.lastName_placeholder')}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n required\r\n />\r\n </Grid>\r\n </>\r\n )}\r\n\r\n\r\n {selectedType === \"Company\" && (\r\n <>\r\n <Grid item xs={12} sm={6}>\r\n <DynamicInput\r\n label={t('common.party.fields.company_name_label')}\r\n name={PARTIES_FIELDS.COMPANY_NAME}\r\n placeholder={t('common.party.fields.company_name_placeholder')}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n required\r\n />\r\n </Grid>\r\n\r\n\r\n <Grid item xs={12} sm={6}>\r\n <DynamicInput\r\n label={t('common.party.fields.vat_number_label')}\r\n name={PARTIES_FIELDS.VAT_NUMBER}\r\n placeholder={t('common.party.fields.vat_number_placeholder')}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={12} sm={6}>\r\n <DynamicInput\r\n label={t('common.party.fields.crn_label')}\r\n name={PARTIES_FIELDS.CRN}\r\n placeholder={t('common.party.fields.crn_placeholder')}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n />\r\n </Grid>\r\n </>\r\n )}\r\n\r\n <Grid item xs={12} sm={6}>\r\n <DynamicPhone\r\n type=\"text\"\r\n label={t('common.party.fields.contact_label')}\r\n name={PARTIES_FIELDS.CONTACT_NO}\r\n placeholder={t('common.party.fields.contact_placeholder')}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n required\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={12} sm={6}>\r\n <DynamicInput\r\n label={t('common.party.fields.email_label')}\r\n name={PARTIES_FIELDS.EMAIL_IDS}\r\n placeholder={t('common.party.fields.email_placeholder')}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n required\r\n />\r\n </Grid>\r\n\r\n {/*Entity Name */}\r\n <Grid item xs={12} sm={6}>\r\n <DynamicSearchSelect\r\n label={t('common.party.fields.company_label')}\r\n apiType=\"company\"\r\n selectedLabel='Companies'\r\n name={PARTIES_FIELDS.COMPANY}\r\n placeholder={t('common.party.fields.company_placeholder')}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n required\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={12} sm={6}>\r\n <DynamicSearchSelect\r\n label={t('common.party.fields.currency_label')}\r\n apiType='currency'\r\n selectedLabel='Currency'\r\n name={PARTIES_FIELDS.CURRENCY}\r\n placeholder={t('common.party.fields.currency_placeholder')}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n required\r\n is_multiselect\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={12} sm={6}>\r\n <DynamicInput\r\n label={t('common.party.fields.responsible_person_label')}\r\n name={PARTIES_FIELDS.RESPONSIBLE_PERSON}\r\n placeholder={t('common.party.fields.responsible_person_placeholder')}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n required\r\n />\r\n </Grid>\r\n\r\n\r\n </Grid>\r\n </Accordion>\r\n ), [t, control, selectedType]);\r\n\r\n const accountingSection = useMemo(() => (\r\n <Accordion\r\n title={\r\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\r\n {t(\"common.party.sections.accounting\")}\r\n </Typography>\r\n }\r\n accordionProps={{\r\n defaultExpanded: true,\r\n className: \"form--Accordion\",\r\n }}\r\n >\r\n <Grid container spacing={2}>\r\n <Grid item xs={12} sm={6}>\r\n <DynamicSearchSelect\r\n label={t('common.party.fields.receivable_account_label')}\r\n apiType=\"accounts\"\r\n selectedLabel='Account'\r\n name={PARTIES_FIELDS.RECEIVABLE_ACCOUNT}\r\n placeholder={t('common.party.fields.receivable_account_placeholder')}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n required\r\n customeFilter={{ '&account_type.eq': 'Receivable' }}\r\n options={[]}\r\n />\r\n </Grid>\r\n <Grid item xs={12} sm={6}>\r\n <DynamicSearchSelect\r\n label={t('common.party.fields.tax_template_label')}\r\n apiType=\"taxTemplate\"\r\n selectedLabel='Tax Template'\r\n name={PARTIES_FIELDS.TAX_TEMPLATE}\r\n placeholder={t('common.party.fields.tax_template_placeholder')}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n required\r\n options={[]}\r\n />\r\n </Grid>\r\n </Grid>\r\n </Accordion>\r\n ), [t, control]);\r\n\r\n const addressSection = useMemo(() => (\r\n <Accordion\r\n title={\r\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\r\n {t(\"common.party.sections.address\")}\r\n <span className='errorIndicator'>*</span>\r\n {errors?.[PARTIES_FORM_ARRAY_NAME]?.[PARTIES_FIELDS.ADDRESS] && (\r\n <span className='error'>\r\n {errors?.[PARTIES_FORM_ARRAY_NAME]?.[PARTIES_FIELDS.ADDRESS]?.message}\r\n </span>\r\n )}\r\n </Typography>\r\n }\r\n accordionProps={{\r\n defaultExpanded: true,\r\n className: \"form--Accordion\",\r\n }}\r\n >\r\n <Grid spacing={4}>\r\n <Grid item xs={12}>\r\n <MaterialTable\r\n rows={[...addressRows]}\r\n columns={tableColumns(addressColumns)}\r\n paginationModel={{ pageNo: 1, limit: 10 }}\r\n totalPages={20}\r\n enableColumnDragging={false}\r\n isResetRow={false}\r\n columnOrder={['mrt-row-select']}\r\n enableRowSelection={false}\r\n enableBottomToolbar\r\n disableDefaultActionColumn\r\n editDisplayMode='row'\r\n enableRowCreate\r\n onCreateRow={(data) => handleRowOperation(data, addressRows, setAddressRows, true)}\r\n onEditRow={(data) => handleRowOperation(data, addressRows, setAddressRows, true)}\r\n onDeleteRow={(row) => deleteRow(addressRows, setAddressRows, row)}\r\n onChangeRowField={onChangeAddressTableField}\r\n />\r\n </Grid>\r\n </Grid>\r\n </Accordion>\r\n // eslint-disable-next-line\r\n ), [t, addressRows, tableColumns, errors]);\r\n\r\n const contactSection = useMemo(() => (\r\n <Accordion\r\n title={\r\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\r\n {t(\"common.party.sections.contact\")}\r\n <span className='errorIndicator'>*</span>\r\n {errors?.[PARTIES_FORM_ARRAY_NAME]?.[PARTIES_FIELDS.CONTACTS] && (\r\n <span className='error'>\r\n {errors?.[PARTIES_FORM_ARRAY_NAME]?.[PARTIES_FIELDS.CONTACTS]?.message}\r\n </span>\r\n )}\r\n </Typography>\r\n }\r\n accordionProps={{\r\n defaultExpanded: true,\r\n className: \"form--Accordion\",\r\n }}\r\n >\r\n <Grid spacing={4}>\r\n <Grid item xs={12}>\r\n\r\n <MaterialTable\r\n rows={[...contactRows]}\r\n columns={tableColumns(contactColumns)}\r\n paginationModel={{ pageNo: 1, limit: 10 }}\r\n totalPages={20}\r\n enableColumnDragging={false}\r\n isResetRow={false}\r\n columnOrder={['mrt-row-select']}\r\n enableRowSelection={false}\r\n enableBottomToolbar\r\n disableDefaultActionColumn\r\n editDisplayMode='row'\r\n enableRowCreate\r\n onCreateRow={(data) => handleRowOperation(data, contactRows, setContactRows, false)}\r\n onEditRow={(data) => {\r\n handleRowOperation(data, contactRows, setContactRows, false);\r\n\r\n if (data.row.index === 0) {\r\n setValue(\r\n `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.RESPONSIBLE_PERSON}`,\r\n data.values.name || ''\r\n );\r\n setValue(\r\n `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.CONTACT_NO}`,\r\n data.values.contact_no || ''\r\n );\r\n setValue(\r\n `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.EMAIL_IDS}`,\r\n data.values.email || ''\r\n );\r\n }\r\n }}\r\n onDeleteRow={(row) => {\r\n if (row.index === 0) {\r\n enqueueSnackbar(t('common.party.errors.cannotDeleteResponsiblePerson'), { variant: 'error' });\r\n return Promise.resolve();\r\n }\r\n return deleteRow(contactRows, setContactRows, row);\r\n }}\r\n onChangeRowField={onChangeAddressTableField}\r\n />\r\n </Grid>\r\n </Grid>\r\n </Accordion>\r\n // eslint-disable-next-line\r\n ), [t, contactRows, tableColumns, errors]);\r\n\r\n return (\r\n <Modal\r\n open={isOpen}\r\n onClose={closeModal}\r\n maxWidth='lg'\r\n fullWidth\r\n sx={{ overflowY: 'hidden' }}\r\n {...modalProps}\r\n >\r\n {isCreating && <ModalLoader />}\r\n <form onSubmit={handleSubmit(onSubmit)} className=\"scroll-container\" style={{ position: 'relative', overflow: 'auto' }}>\r\n <DialogTitle className='itemEntryModal--DialogTitle'\r\n >\r\n <Typography type='s3' color='inherit' weight='medium'>\r\n {`Add ${type}`}\r\n </Typography>\r\n <IconButton onClick={closeModal}>\r\n <Close fontSize='small' />\r\n </IconButton>\r\n </DialogTitle>\r\n\r\n <DialogContent>\r\n {basicDetailsSection}\r\n <Divider className='form--SectionDivider' />\r\n {addressSection}\r\n <Divider className='form--SectionDivider' />\r\n {contactSection}\r\n <Divider className='form--SectionDivider' />\r\n {accountingSection}\r\n </DialogContent>\r\n\r\n <DialogActions className='itemEntryModal--DialogAction' sx={{\r\n position: 'sticky',\r\n bottom: 0,\r\n backgroundColor: 'white',\r\n zIndex: 1,\r\n padding: '8px 24px',\r\n justifyContent: 'end'\r\n }}>\r\n <Box display='flex' gap={1.5}>\r\n <Button\r\n className='itemEntryModal--DialogAction--WhiteBtn'\r\n onClick={closeModal}\r\n >\r\n {t('common.cancel')}\r\n </Button>\r\n <Button\r\n variant=\"contained\"\r\n onClick={handleSubmit(onSubmit)}\r\n >\r\n {t('common.save')}\r\n </Button>\r\n </Box>\r\n </DialogActions>\r\n </form>\r\n </Modal>\r\n );\r\n};\r\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { Controller } from 'react-hook-form';\nimport {\n\tBox,\n\tDivider,\n\tIconButton,\n\tInputAdornment,\n\tMenuItem,\n\tMenuItemProps,\n\tOutlinedInput\n} from '@mui/material';\nimport PropTypes from 'prop-types';\n\nimport Select from '../../../select/select';\nimport ChipOrPlaceholder from './chip-or-placeholder';\nimport Checkbox from '../../../checkbox/checkbox';\nimport Typography from '../../../typography/typography';\nimport Chip from '../../../chip/chip';\nimport { MoreIcon } from '../../../icons';\nimport './element.scss';\nimport { Add, Close } from '@mui/icons-material';\nimport { useTranslation } from \"react-i18next\";\n\ninterface IMenuItems extends MenuItemProps {\n\toptions: any[];\n\tmultiple: boolean;\n\tplaceholder: string;\n\twith_checkboxes: boolean;\n\tvalues: string | string[];\n\tfield: any;\n}\n\nconst generateMenuItems = ({\n\toptions,\n\tmultiple,\n\tplaceholder,\n\twith_checkboxes,\n\tvalues,\n\tfield\n}: IMenuItems) => {\n\tconst items: React.ReactElement[] = [];\n\tif (!multiple) {\n\t\titems.push(\n\t\t\t<MenuItem disabled value='' sx={{ opacity: `0 !important`, height: `0 !important`, p: `0 !important`, m: `0 !important` }}>\n\t\t\t\t<Typography type='s3' color='theme.secondary.1000'>\n\t\t\t\t\t<em>{placeholder}</em>\n\t\t\t\t</Typography>\n\t\t\t</MenuItem>\n\t\t);\n\t}\n\toptions?.forEach((option, index) => {\n\t\titems.push(\n\t\t\t<MenuItem\n\t\t\t\tvalue={option.value}\n\t\t\t\tkey={index}\n\t\t\t\tdisabled={Boolean(option.disabled)}\n\t\t\t\tclassName={option?.isGroup ? 'select--MenuItemHeader' : ''}>\n\t\t\t\t<Box sx={{ display: 'flex', gap: 1 }}>\n\t\t\t\t\t{multiple && with_checkboxes && (\n\t\t\t\t\t\t<Checkbox\n\t\t\t\t\t\t\tchecked={Boolean(values && values?.indexOf(option.value) > -1)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t<Typography type='s3' color='theme.secondary.1000'>\n\t\t\t\t\t\t{option.label}\n\t\t\t\t\t</Typography>\n\t\t\t\t</Box>\n\t\t\t</MenuItem>\n\t\t);\n\t\tif (option?.isGroup && Array.isArray(option?.options)) {\n\t\t\toption.options.forEach((opt) => {\n\t\t\t\titems.push(\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tvalue={opt.value}\n\t\t\t\t\t\tdisabled={Boolean(opt.disabled)}\n\t\t\t\t\t\tsx={{ pl: 5 }}\n\t\t\t\t\t\tkey={`${option.value}-${opt.value}`}>\n\t\t\t\t\t\t<Box sx={{ display: 'flex', gap: 1 }}>\n\t\t\t\t\t\t\t{multiple && with_checkboxes && (\n\t\t\t\t\t\t\t\t<Checkbox\n\t\t\t\t\t\t\t\t\tchecked={Boolean(values && values?.indexOf(opt.value) > -1)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t<Typography type='s3' color='theme.secondary.1000'>\n\t\t\t\t\t\t\t\t{opt.label}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t</MenuItem>\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\t});\n\tif (field.enable_footer) {\n\t\titems.push(\n\t\t\t<Box>\n\t\t\t\t<Divider flexItem />\n\t\t\t\t<MenuItem sx={{ gap: 1 }} onClick={field.onFooterClick}>\n\t\t\t\t\t<Add fontSize='small' />\n\t\t\t\t\t<Typography type='s4' color='theme.secondary.1000'>\n\t\t\t\t\t\tCreate New {field.label}\n\t\t\t\t\t</Typography>\n\t\t\t\t</MenuItem>\n\t\t\t</Box>\n\t\t);\n\t}\n\n\treturn items;\n};\nconst SelectedItems = ({\n\tdata,\n\toptions\n}: {\n\tdata: string[];\n\toptions: any[];\n}) => {\n\tconst displayTitle = data.map(\n\t\t(selectedItem) =>\n\t\t\toptions?.find((option: any) => option.value === selectedItem)?.label ||\n\t\t\tselectedItem\n\t);\n\tconst fDisplayTitle = displayTitle.filter(Boolean)\n\treturn (\n\t\t<Typography\n\t\t\ttype='s4'\n\t\t\tcolor='inherit'\n\t\t\tsx={{ display: 'flex', gap: 1, alignItems: 'center', mt: 0.5 }}>\n\t\t\t{fDisplayTitle.slice(0.4).join(', ')}\n\t\t\t{data.length > 4 && (\n\t\t\t\t<Chip variant='outlined' type='normal' label={<MoreIcon />} />\n\t\t\t)}\n\t\t</Typography>\n\t);\n};\n\nconst DynamicSelect = React.memo((props: any) => {\n\tconst [options, setOptions] = useState([]);\n\tconst [selectedValue, setSelectedValue] = useState(null);\n\tconst { handleOptions } = props;\n\tuseEffect(() => {\n\t\tif (handleOptions) {\n\t\t\thandleOptions(selectedValue);\n\t\t}\n\t}, [handleOptions, selectedValue]);\n\tconst handleSearch = (search: string) => {\n\t\tif (props.options?.length && search) {\n\t\t\tconst searchedOptions = props.options.filter((opt) =>\n\t\t\t\tReact.isValidElement(opt.label)\n\t\t\t\t\t? opt?.searchLabel?.toLowerCase()?.includes(search.toLowerCase())\n\t\t\t\t\t: opt.label.toLowerCase().includes(search.toLowerCase())\n\t\t\t);\n\t\t\tsetOptions(searchedOptions);\n\t\t} else {\n\t\t\tsetOptions(props.options);\n\t\t}\n\t};\n\n\tconst removeUndefine = (selectOptions: any[]) => {\n\t\treturn selectOptions?.filter((option) => option);\n\t};\n\tconst handleSetOptions = useCallback(() => {\n\t\tsetOptions(props.options);\n\t}, [props.options]);\n\n\tuseEffect(() => {\n\t\thandleSetOptions();\n\t}, [handleSetOptions]);\n\t\tconst { t } = useTranslation();\n\t\n\treturn (\n\t\t<Controller\n\t\t\tcontrol={props.formControl}\n\t\t\tname={`${props.fieldArrayName}.${props.name}`}\n\t\t\trender={({ field, fieldState }) => (\n\t\t\t\t<>\n\t\t\t\t\t{props.placeholder === 'Select Currency'\n\t\t\t\t\t\t? setSelectedValue(field.value)\n\t\t\t\t\t\t: setSelectedValue(null)}\n\t\t\t\t\t<Select\n\t\t\t\t\t\t{...field}\n\t\t\t\t\t\t// onFocus={() => {\n\t\t\t\t\t\t// \tsetOptions(props.options);\n\t\t\t\t\t\t// }}\n\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\tdataPosition={props.position}\n\t\t\t\t\t\tdataName={`${props.fieldArrayName}.${props.name}`}\n\t\t\t\t\t\tplaceholder={props.placeholder}\n\t\t\t\t\t\tlabel={props.label}\n\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\tfield.value?.id || field.value?.label || field.value || (props.is_multiselect ? [] : '')\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdefaultValue={\n\t\t\t\t\t\t\tprops.defaultValue || (props.is_multiselect ? [] : '')\n\t\t\t\t\t\t}\n\t\t\t\t\t\trequired={props.formType === 'builder' ? false : props.required}\n\t\t\t\t\t\tsize={props.size || 'small'}\n\t\t\t\t\t\tmultiple={props.is_multiselect || false}\n\t\t\t\t\t\tdisabled={props.disabled}\n\t\t\t\t\t\tvariant='outlined'\n\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\tprops.is_multiselect && removeUndefine(field.value)?.length\n\t\t\t\t\t\t\t\t? 'MultiSelect'\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t}\n\t\t\t\t\t\trenderValue={(selected: string | string[]) => (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{Array.isArray(selected) ? (\n\t\t\t\t\t\t\t\t\t<ChipOrPlaceholder\n\t\t\t\t\t\t\t\t\t\tselectedLabel={props.selectedLabel}\n\t\t\t\t\t\t\t\t\t\tdata={removeUndefine(selected)}\n\t\t\t\t\t\t\t\t\t\tplaceholder={props.placeholder}\n\t\t\t\t\t\t\t\t\t\tonDelete={props?.onChipRemove}\n\t\t\t\t\t\t\t\t\t\tdisabled={props.disabled}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\toptions?.find(\n\t\t\t\t\t\t\t\t\t\t(option: any) =>\n\t\t\t\t\t\t\t\t\t\t\t(option.value?.id || option.value) === selected\n\t\t\t\t\t\t\t\t\t)?.label ||\n\t\t\t\t\t\t\t\t\tselected ||\n\t\t\t\t\t\t\t\t\tprops.placeholder\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tsearchPlaceholder={`${t('common.search')} ${props.label}`}\n\t\t\t\t\t\thandleSearch={handleSearch}\n\t\t\t\t\t\terror={Boolean(fieldState.error?.message)}\n\t\t\t\t\t\thelperText={fieldState.error?.message || ''}\n\t\t\t\t\t\tonBlur={field.onBlur}\n\t\t\t\t\t\tinput={\n\t\t\t\t\t\t\t!props?.is_multiselect && !props.disabled && field?.value ? (\n\t\t\t\t\t\t\t\t<OutlinedInput\n\t\t\t\t\t\t\t\t\tlabel=''\n\t\t\t\t\t\t\t\t\tendAdornment={\n\t\t\t\t\t\t\t\t\t\t<InputAdornment position='end'>\n\t\t\t\t\t\t\t\t\t\t\t{field.value && (\n\t\t\t\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-label='clear selection'\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => field.onChange(null)}\n\t\t\t\t\t\t\t\t\t\t\t\t\tedge='end'\n\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{ mr: 1.5 }}\n\t\t\t\t\t\t\t\t\t\t\t\t\tsize='small'>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Close sx={{ fontSize: '1rem' }} />\n\t\t\t\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</InputAdornment>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tloading={props?.is_loading}>\n\t\t\t\t\t\t{generateMenuItems({\n\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\tmultiple: Boolean(props.is_multiselect),\n\t\t\t\t\t\t\tplaceholder: props.placeholder,\n\t\t\t\t\t\t\tvalues: field.value,\n\t\t\t\t\t\t\twith_checkboxes: true,\n\t\t\t\t\t\t\tfield: props\n\t\t\t\t\t\t})}\n\t\t\t\t\t</Select>\n\t\t\t\t\t{props.is_multiselect && Array.isArray(field?.value) && (\n\t\t\t\t\t\t<SelectedItems data={field.value} options={options} />\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t/>\n\t);\n});\n\nDynamicSelect.propTypes = {\n\tname: PropTypes.string.isRequired,\n\tplaceholder: PropTypes.string.isRequired,\n\tlabel: PropTypes.string.isRequired,\n\tsize: PropTypes.string,\n\toptions: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\tlabel: PropTypes.string,\n\t\t\tvalue: PropTypes.string\n\t\t})\n\t).isRequired,\n\tformControl: PropTypes.shape({\n\t\tregister: PropTypes.func.isRequired,\n\t\tsetValue: PropTypes.func\n\t}).isRequired,\n\tdefaultValue: PropTypes.string,\n\tfieldArrayName: PropTypes.string,\n\tid: PropTypes.string,\n\trequired: PropTypes.bool,\n\tis_multiselect: PropTypes.bool,\n\tposition: PropTypes.number,\n\tformType: PropTypes.string,\n\ttypeOfField: PropTypes.string,\n\tdisabled: PropTypes.bool,\n\tonChipRemove: PropTypes.func,\n\tenable_footer: PropTypes.bool,\n\tfooter_action: PropTypes.string,\n\tonFooterClick: PropTypes.any,\n\tis_loading: PropTypes.bool,\n\tselectedLabel: PropTypes.string\n};\n\nexport { DynamicSelect };\nexport default DynamicSelect;\n","// import { Controller } from 'react-hook-form';\nimport PropTypes from \"prop-types\";\nimport Button from \"../../../button/button\";\n\n// { control, index }\n\nconst DynamicButton = (props: any) => {\n const { type, onClick, className, disable, ...rest } = props;\n\n return (\n <Button\n type={type}\n onClick={onClick}\n className={className}\n {...rest}\n disabled={disable}\n >\n {props.text}\n </Button>\n );\n};\n\nDynamicButton.propTypes = {\n text: PropTypes.string.isRequired,\n onClick: PropTypes.func,\n type: PropTypes.string,\n style: PropTypes.object,\n variant: PropTypes.string,\n className: PropTypes.string,\n disable: PropTypes.bool,\n startIcon: PropTypes.node,\n};\n\nexport { DynamicButton };\nexport default DynamicButton;\n","import React from 'react';\nimport { Control, Controller } from 'react-hook-form';\nimport Checkbox from '../../../checkbox/checkbox';\nimport Typography from '../../../typography/typography';\nimport { CheckboxProps, Stack, StackProps } from '@mui/material';\nimport { useLanguage } from '../../../../hooks/useLangauge';\n\ninterface IDynamicCheckbox {\n\tformControl: Control<any>;\n\tfieldArrayName: string;\n\tname: string;\n\tlabel?: string;\n\tposition?: number;\n\tdisabled?: boolean;\n\ttitlePosition?: 'start' | 'end';\n\ttypeOfField?: string;\n\ttitle: string;\n\ttitleColor?: string; // New prop for title color\n\tcheckboxProps?: CheckboxProps;\n\tstackProps?: StackProps;\n}\n\nconst DynamicCheckBox: React.FC<IDynamicCheckbox> = ({\n\tformControl,\n\tfieldArrayName,\n\tname,\n\tlabel,\n\tposition,\n\tdisabled,\n\ttitlePosition = 'end',\n\ttitle,\n\ttitleColor = 'theme.secondary.800', // Default color\n\tcheckboxProps,\n\tstackProps,\n}) => {\n\tconst {isRtl}=useLanguage();\n\treturn (\n\t\t<Controller\n\t\t\tcontrol={formControl}\n\t\t\tname={`${fieldArrayName}.${name}`}\n\t\t\trender={({ field }) => (\n\t\t\t\t<>\n\t\t\t\t\t{label && (\n\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\ttype='s5'\n\t\t\t\t\t\t\tweight='medium'\n\t\t\t\t\t\t\tcolor='theme.secondary.800'\n\t\t\t\t\t\t\tdata-position={position}\n\t\t\t\t\t\t\tsx={{ mb: 0.5 }}>\n\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t)}\n\n\t\t\t\t\t<Stack direction='row' spacing={isRtl?'':0.25} alignItems='center' {...stackProps}>\n\t\t\t\t\t\t{titlePosition === 'start' && (\n\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\ttype='s4'\n\t\t\t\t\t\t\t\tweight='medium'\n\t\t\t\t\t\t\t\tcolor={titleColor}> {/* Use titleColor prop here */}\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<Checkbox\n\t\t\t\t\t\t\tchecked={Boolean(field.value)}\n\t\t\t\t\t\t\tonChange={field.onChange}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\tsize='small'\n\t\t\t\t\t\t\tsx={{ m: 1 }}\n\t\t\t\t\t\t\t{...checkboxProps}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{titlePosition === 'end' && (\n\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\ttype='s4'\n\t\t\t\t\t\t\t\tweight='medium'\n\t\t\t\t\t\t\t\tcolor={titleColor}> {/* Use titleColor prop here */}\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Stack>\n\t\t\t\t</>\n\t\t\t)}\n\t\t/>\n\t);\n};\n\nexport default DynamicCheckBox;","/* eslint-disable no-mixed-spaces-and-tabs */\r\nimport { Controller/* , useFormContext */ } from 'react-hook-form';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useMemo } from 'react';\r\nimport dayjs from 'dayjs';\r\n\r\nimport './element.scss';\r\nimport DatePicker from '../../../date-picker/date-picker';\r\n\r\ninterface DynamicDateProps {\r\n formControl: any;\r\n name: string;\r\n label: string;\r\n fieldArrayName?: string;\r\n required?: boolean;\r\n position?: number;\r\n formType?: string;\r\n placeholder?: string;\r\n defaultValue?: any;\r\n is_future_dates_allowed?: boolean;\r\n is_past_dates_allowed?: boolean;\r\n typeOfField?: string;\r\n disabled?: boolean;\r\n min_date?: any;\r\n max_date?: any;\r\n}\r\n\r\nconst DynamicDate = React.memo<DynamicDateProps>((props) => {\r\n // const formContext = useFormContext();\r\n\r\n // Memoize field name to prevent unnecessary recalculations\r\n const fieldName = useMemo(() =>\r\n `${props.fieldArrayName}.${props.name}`,\r\n [props.fieldArrayName, props.name]\r\n );\r\n\r\n // Memoize date calculations to prevent recalculation on every render\r\n const { minDate, maxDate } = useMemo(() => {\r\n const min = dayjs(props.min_date || null).isValid()\r\n ? dayjs(props.min_date)\r\n : null;\r\n\r\n const max = dayjs(props.max_date || null).isValid()\r\n ? dayjs(props.max_date)\r\n : null;\r\n\r\n return { minDate: min, maxDate: max };\r\n }, [props.min_date, props.max_date]);\r\n\r\n // Memoize required prop calculation\r\n const isRequired = useMemo(() =>\r\n props.formType === 'builder' ? false : props.required,\r\n [props.formType, props.required]\r\n );\r\n\r\n return (\r\n <Controller\r\n control={props.formControl}\r\n name={fieldName}\r\n render={({ field, fieldState }) => (\r\n <DatePicker\r\n {...field}\r\n // {...props}\r\n dataPosition={props.position}\r\n dataName={fieldName}\r\n label={props.label}\r\n placeholder={props.placeholder}\r\n required={isRequired}\r\n defaultValue={props.defaultValue}\r\n disableFutureDates={props.is_future_dates_allowed}\r\n disablePastDates={props.is_past_dates_allowed}\r\n helperText={fieldState.error?.message}\r\n error={Boolean(fieldState.error)}\r\n disabled={props.disabled}\r\n minDate={minDate}\r\n maxDate={maxDate}\r\n {...(props?.views && { views: props?.views })}\r\n />\r\n )}\r\n />\r\n );\r\n});\r\n\r\nDynamicDate.displayName = 'DynamicDate';\r\n\r\nDynamicDate.propTypes = {\r\n formControl: PropTypes.shape({\r\n register: PropTypes.func.isRequired,\r\n setValue: PropTypes.func\r\n }).isRequired,\r\n name: PropTypes.string.isRequired,\r\n label: PropTypes.string.isRequired,\r\n fieldArrayName: PropTypes.string,\r\n required: PropTypes.bool,\r\n position: PropTypes.number,\r\n formType: PropTypes.string,\r\n placeholder: PropTypes.string,\r\n defaultValue: PropTypes.any,\r\n is_future_dates_allowed: PropTypes.bool,\r\n is_past_dates_allowed: PropTypes.bool,\r\n typeOfField: PropTypes.string,\r\n disabled: PropTypes.bool,\r\n min_date: PropTypes.any,\r\n max_date: PropTypes.any\r\n};\r\n\r\nexport { DynamicDate };\r\nexport default DynamicDate;","import { Controller } from \"react-hook-form\";\nimport TextField from \"../../../text-field/text-field\";\nimport PropTypes from \"prop-types\"\nimport { InputAdornment } from \"@mui/material\";\nconst DynamicCurrency = (props: any) => {\n return (\n <Controller\n control={props.formControl}\n name={`${props.fieldArrayName}.${props.name}`}\n render={({ field, fieldState }) => (\n <TextField\n {...field}\n name={`${props.fieldArrayName}.${props.name}`}\n fullWidth\n label={props.label}\n defaultValue={props.default_value.replace(/[^0-9]/g, \"\")}\n placeholder={props.placeholder}\n multiline={props.is_multiline || false}\n disabled={props.disabled}\n required={props.is_required}\n inputProps={{\n step: props?.float_step || \"0\" , \n min : props.min_length || 0 , \n max : props.max_length || 1000 ,\n inputMode: 'numeric',\n pattern : `${props.is_negative}` ? '-?[0-9]*' : '[0-9]*' , \n \n }}\n InputProps={{\n startAdornment: (\n <InputAdornment\n position=\"start\"\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRight: '1px solid rgba(0, 0, 0, 0.23)',\n width: 50,\n height: '100%',\n borderBottomLeftRadius: 4, \n borderTopLeftRadius: 4,\n }}\n >\n {(props.currencyType !== null ? props.currencyType : \"-\")}\n </InputAdornment>\n )\n\n }}\n\n error={Boolean(fieldState.error?.message)}\n helperText={fieldState.error?.message || \"\"}\n onBlur = {field.onBlur}\n onChange ={(e : any) => {\n const numericValue = e.target.value.replace(/[^0-9]/g , \"\");\n field.onChange(numericValue)\n }}\n />\n )}\n />\n )\n}\nDynamicCurrency.propTypes = {\n formControl: PropTypes.shape({\n register: PropTypes.func.isRequired,\n setValue: PropTypes.func,\n _formState: PropTypes.object.isRequired\n }).isRequired,\n defaultValue: PropTypes.string,\n name: PropTypes.string.isRequired,\n label: PropTypes.node.isRequired,\n fieldArrayName: PropTypes.string,\n required: PropTypes.bool,\n is_multiline: PropTypes.bool,\n min: PropTypes.number,\n max: PropTypes.number,\n min_length: PropTypes.number,\n max_length: PropTypes.number,\n float_step: PropTypes.string,\n position: PropTypes.number,\n formType: PropTypes.string,\n disabled: PropTypes.bool,\n InputProps: PropTypes.object,\n placeholder : PropTypes.string , \n currencyType :PropTypes.string ,\n \n}\nexport { DynamicCurrency };\nexport default DynamicCurrency;\n\n\n\n","import PropTypes from \"prop-types\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Grid, Box } from \"@mui/material\";\nimport { useDrag, useDrop } from \"react-dnd\";\n\nimport \"./element.scss\";\nimport images from \"../../../../assets/images\";\n\nconst DynamicElementHOC = (props: any) => {\n const [, ref] = useDrag({\n type: \"element\",\n item: { index: props.index },\n });\n const [, drop] = useDrop({\n accept: \"element\",\n hover: (draggedElement: any) => {\n const draggedIndex = draggedElement.index;\n const dropIndex = props.index;\n if (dropIndex === draggedIndex) {\n return;\n }\n\n props.swap(draggedIndex, dropIndex);\n },\n drop: () => {\n props.elementSwap();\n },\n });\n\n \n const activeClassName = `${\n props.activeIndex\n ? \"form-element-wrapper--Active\"\n : \"form-element-wrapper--Element\"\n }`;\n const defaultClassName = `${\n props?.children?.props?.typeOfField === \"custom\"\n ? \"\"\n : \"form-element-wrapper--Default\"\n }`;\n\n return (\n <Grid\n item\n xs={props?.element === \"table\" ? 12 : 12}\n className={`${activeClassName} ${defaultClassName}`}\n ref={(node) => drop(ref(node))}\n >\n <Box sx={{ width: \"100%\" }} onClick={props.onClick}>\n {props.children}\n </Box>\n <div className=\"form-element-wrapper--Actions\">\n <img\n src={images.duplicate}\n onClick={() => props.handleDuplicate(props.index)}\n />\n {props?.children?.props?.typeOfField === \"custom\" && (\n <CloseIcon\n style={{ fontSize: \"1rem\", color: \"#656669\" }}\n onClick={() => {\n props.removeElement(props.index);\n props.setElementHoc();\n }}\n />\n )}\n </div>\n </Grid>\n );\n};\n\nDynamicElementHOC.propTypes = {\n removeElement: PropTypes.func.isRequired,\n index: PropTypes.number.isRequired,\n onClick: PropTypes.func,\n children: PropTypes.node.isRequired,\n swap: PropTypes.func,\n elementSwap: PropTypes.func,\n activeIndex: PropTypes.bool,\n handleDuplicate: PropTypes.func,\n setElementHoc: PropTypes.func,\n element: PropTypes.string,\n elementPerRow : PropTypes.number \n};\n\nexport { DynamicElementHOC };\nexport default DynamicElementHOC;\n","import { Controller } from \"react-hook-form\";\nimport TextField from \"../../../text-field/text-field\";\nimport PropTypes from \"prop-types\"\nimport { InputAdornment, Select, MenuItem } from \"@mui/material\";\nimport { useState } from \"react\";\nimport KeyboardArrowDownOutlinedIcon from '@mui/icons-material/KeyboardArrowDownOutlined';\nconst DynamicInputSelect = (props: any) => {\n const [defaultOption, setSelectOption] = useState(props.options[0].value); //need to be update \n const handleOptionChange = (event: any) => {\n setSelectOption(event.target.value);\n };\n return (\n <Controller\n control={props.formControl}\n name={`${props.fieldArrayName}.${props.name}`}\n render={({ field, fieldState }) => (\n <TextField\n {...field}\n name={`${props.fieldArrayName}.${props.name}`}\n fullWidth\n label={props.label}\n placeholder={props.placeholder}\n multiline={props.is_multiline || false}\n disabled={props.disabled}\n required={props.is_required}\n inputProps={{\n step: props?.float_step || \"0\",\n min: props.min_length || 0,\n max: props.max_length || 1000,\n inputMode: 'string',\n\n\n }}\n InputProps={{\n endAdornment: (\n <InputAdornment\n position=\"start\"\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderLeft: '1px solid rgba(0, 0, 0, 0.23)',\n padding: 1,\n height: '100%',\n borderBottomLeftRadius: 4,\n borderTopLeftRadius: 4,\n backgroundColor: 'rgba(245 , 245 , 245 )',\n margin: 0,\n boxSizing: 'border-box',\n borderRadius: 0,\n\n }}\n\n >\n <Select\n value={defaultOption}\n onChange={handleOptionChange}\n sx={{\n height: '100%',\n '&:focus': {\n backgroundColor: 'rgba(245 , 245 , 245 )' , // Prevent background color change on focus\n },\n '&:hover': {\n backgroundColor: 'rgba(245 , 245 , 245 )', // Prevent background color change on hover\n },\n '&:active': {\n backgroundColor: 'rgba(245 , 245 , 245)', // Prevent background color change on active\n },\n '&.Mui-focused': {\n backgroundColor: '#fff', // Override the focus background color\n },\n '&.Mui-focused .MuiOutlinedInput-notchedOutline': {\n borderColor: '#fff', // Prevent border color change on focus\n },\n }}\n variant=\"standard\"\n disableUnderline\n\n IconComponent={KeyboardArrowDownOutlinedIcon}\n\n >\n {props.options?.map((item: any, index: any) => (\n <MenuItem\n key={index}\n value={item.value}\n sx={{\n '&:hover': {\n backgroundColor: 'rgba(245 , 245 , 245 )', // Prevent background color change on hover\n },\n '&.Mui-selected': {\n backgroundColor: 'rgba(245 , 245 , 245)', // Prevent background color change on selection\n },\n '&.Mui-selected:hover': {\n backgroundColor: 'rgba(245 , 245 , 245)', // Prevent background color change on selection hover\n },\n }}\n >\n {item.label}\n </MenuItem>\n ))}\n </Select>\n\n </InputAdornment>\n )\n\n }}\n\n error={Boolean(fieldState.error?.message)}\n helperText={fieldState.error?.message || \"\"}\n onBlur={field.onBlur}\n onChange={(e: any) => {\n field.onChange(e.target.value)\n }}\n />\n )}\n />\n )\n}\nDynamicInputSelect.propTypes = {\n formControl: PropTypes.shape({\n register: PropTypes.func.isRequired,\n setValue: PropTypes.func,\n _formState: PropTypes.object.isRequired\n }).isRequired,\n defaultValue: PropTypes.string,\n name: PropTypes.string.isRequired,\n label: PropTypes.node.isRequired,\n fieldArrayName: PropTypes.string,\n required: PropTypes.bool,\n is_multiline: PropTypes.bool,\n min: PropTypes.number,\n max: PropTypes.number,\n min_length: PropTypes.number,\n max_length: PropTypes.number,\n float_step: PropTypes.string,\n position: PropTypes.number,\n formType: PropTypes.string,\n disabled: PropTypes.bool,\n InputProps: PropTypes.object,\n placeholder: PropTypes.string,\n\n\n}\nexport { DynamicInputSelect };\nexport default DynamicInputSelect;\n","import React, { useState } from 'react';\nimport { Controller, Control, FieldValues } from 'react-hook-form';\nimport PropTypes from 'prop-types';\nimport { Autocomplete } from '@mui/material';\nimport TextField from '../../../text-field/text-field';\nimport Chip from '../../../chip/chip';\n// import { Close } from '@mui/icons-material';\nimport Typography from '../../../typography/typography';\nimport './element.scss';\n\n// Define the type for props\ninterface DynamicTagsInputProps<TFieldValues extends FieldValues> {\n formControl: Control<TFieldValues>;\n name: string;\n fieldArrayName?: string;\n label: React.ReactNode;\n}\n\n// Define the component using generic type TFieldValues\nconst DynamicTagsInput = <TFieldValues extends FieldValues>({\n formControl,\n name,\n fieldArrayName = '',\n label,\n}: DynamicTagsInputProps<TFieldValues>) => {\n // Local state for managing the input value\n const [inputValue, setInputValue] = useState<string>('');\n\n return (\n <Controller\n control={formControl}\n name={`${fieldArrayName}.${name}`}\n render={({ field: { value = '', onChange } }) => {\n const tags = value ? value.split(',').map((tag: string) => tag.trim()) : [];\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Tab') {\n // Get the trimmed input value\n const trimmedInputValue = inputValue.trim();\n \n // Check if input is not empty and not already a tag\n if (trimmedInputValue && !tags.includes(trimmedInputValue)) {\n event.preventDefault(); // Prevent default tab action\n\n // Add new tag\n const newTags = [...tags, trimmedInputValue];\n const newValueString = newTags.join(', ');\n onChange(newValueString);\n setInputValue(''); // Clear the input field\n }\n }\n };\n\n return (\n <Autocomplete\n clearIcon={false}\n options={[]}\n freeSolo\n multiple\n fullWidth\n value={tags}\n onChange={(event: React.ChangeEvent<unknown>, newValue: string[] | null) => {\n const newValueString = newValue?.join(', ') || '';\n onChange(newValueString);\n }}\n renderTags={(value: string[], renderTagProps) =>\n value.map((option, index) => (\n <Chip\n key={index}\n // deleteIcon={<Close fontSize='large' />}\n // variant='outlined'\n type='normal'\n label={\n <Typography color='theme.secondary.1000' type='s4'>\n {option}\n </Typography>\n }\n {...renderTagProps({ index })}\n />\n ))\n }\n renderInput={(params) => (\n <TextField\n label={label}\n type=\"text\"\n {...params}\n value={inputValue}\n onChange={(event:any) => setInputValue(event.target.value)}\n onKeyDown={handleKeyDown}\n />\n )}\n />\n );\n }}\n />\n );\n};\n\n// Define PropTypes for runtime validation (optional)\nDynamicTagsInput.propTypes = {\n formControl: PropTypes.shape({\n register: PropTypes.func.isRequired,\n setValue: PropTypes.func,\n _formState: PropTypes.object.isRequired,\n }).isRequired,\n name: PropTypes.string.isRequired,\n label: PropTypes.node.isRequired,\n fieldArrayName: PropTypes.string,\n};\n\nexport { DynamicTagsInput };\nexport default DynamicTagsInput;\n\n","import Typography from \"../typography/typography\";\nimport logo from \"../../assets/images\";\nimport \"./info-card.scss\";\n\nexport interface InfoCardProps {\n label: string;\n dataPosition?: number;\n dataName?: string;\n value?: string;\n}\n\nconst InfoCard = (props: InfoCardProps) => {\n const { label, dataPosition, dataName, value } = props;\n return (\n <>\n <Typography\n type=\"s5\"\n weight=\"medium\"\n mb={0.5}\n color={\"theme.secondary.800\"}\n data-position={dataPosition}\n data-name={dataName}\n className=\"infoCard\"\n >\n {label}\n <img src={logo.info} />\n </Typography>\n <Typography color={\"theme.secondary.1000\"}>{value ?? \"Info\"}</Typography>\n </>\n );\n};\n\nexport { InfoCard };\nexport default InfoCard;\n","import { Controller } from \"react-hook-form\";\nimport PropTypes from \"prop-types\";\n\nimport \"./element.scss\";\nimport InfoCard from \"../../../info-card/info-card\";\n\nconst DynamicInfo = (props: any) => {\n return (\n <Controller\n control={props.formControl}\n name={`${props.fieldArrayName}.${props.name}`}\n render={({ field }) => (\n <InfoCard\n {...field}\n dataPosition={props.position}\n dataName={`${props.fieldArrayName}.${props.name}`}\n label={props.label}\n value={props.defaultValue || \"Info\"}\n />\n )}\n />\n );\n};\n\nDynamicInfo.propTypes = {\n formControl: PropTypes.shape({\n register: PropTypes.func.isRequired,\n setValue: PropTypes.func,\n }).isRequired,\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n fieldArrayName: PropTypes.string,\n position: PropTypes.number,\n formType: PropTypes.string,\n defaultValue: PropTypes.string,\n typeOfField: PropTypes.string,\n disabled: PropTypes.bool,\n};\n\nexport { DynamicInfo };\nexport default DynamicInfo;\n","import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport PropTypes from \"prop-types\";\n\nimport \"./element.scss\";\nimport UploadMedia from \"../../../upload-media/upload-media\";\nimport Typography from \"../../../typography/typography\";\n\nconst DynamicMedia = React.memo((props: any) => {\n\n return (\n <Controller\n control={props.formControl}\n name={`${props.fieldArrayName}.${props.name}`}\n render={({ field, fieldState: { error } }) => (\n <>\n <UploadMedia\n // {...field}\n dataPosition={props.position}\n dataName={`${props.fieldArrayName}.${props.name}`}\n label={props.label}\n required={props.formType === \"builder\" ? false : props.required}\n type={props.field_type}\n max_size={props?.max_size}\n disabled={props?.disabled}\n onChange={field?.onChange}\n name={props.name}\n value={field?.value || props?.value}\n multiple={Boolean(props?.is_multiple)}\n />\n {error &&\n <Typography color=\"theme.error.600\" type=\"s5\">{error.message}</Typography>\n }\n </>\n )}\n />\n );\n});\n\nDynamicMedia.propTypes = {\n formControl: PropTypes.shape({\n register: PropTypes.func.isRequired,\n setValue: PropTypes.func,\n }).isRequired,\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n fieldArrayName: PropTypes.string,\n required: PropTypes.bool,\n is_multiple: PropTypes.bool,\n position: PropTypes.number,\n formType: PropTypes.string,\n placeholder: PropTypes.string,\n default_value: PropTypes.string,\n type: PropTypes.string,\n field_type: PropTypes.string,\n max_size: PropTypes.number,\n typeOfField: PropTypes.string,\n disabled: PropTypes.bool,\n};\n\nexport { DynamicMedia };\nexport default DynamicMedia;\n","import PropTypes from \"prop-types\";\nimport { Grid, /* Box, */ IconButton, Menu, MenuItem } from \"@mui/material\";\n\nimport \"./element.scss\";\nimport Typography from \"../../../typography/typography\";\nimport images from \"../../../../assets/images\";\nimport React from \"react\";\nimport Button from \"../../../button/button\";\nimport AddIcon from \"@mui/icons-material/Add\";\n\nconst DynamicSectionHOC = (props: any) => {\n const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null);\n\n const handleActionClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n return (\n <Grid\n className={\n props.className ? `formBuilder ${props.className}` : \"formBuilder\"\n }\n >\n <div className=\"formBuilder--Header\">\n <Typography\n type=\"s4\"\n fontWeight={\"medium\"}\n mb={0.5}\n color={\"theme.secondary.800\"}\n sx={{ cursor: \"pointer\", ...(!props.label?.trim() ? { fontStyle: 'italic' } : {}) }}\n onClick={props.onClick}\n data-position={props.position}\n data-name={`${props.fieldArrayName}.${props.name}`}\n >\n {props.label || \"(Unnamed Section)\"}\n </Typography>\n <div>\n <IconButton color=\"inherit\" size=\"small\" onClick={handleActionClick}>\n <img src={images.more} alt=\"more icon\" />\n </IconButton>\n <Menu\n open={Boolean(anchorEl)}\n anchorEl={anchorEl}\n onClose={() => setAnchorEl(null)}\n >\n <MenuItem\n onClick={() => {\n props.handleAccordion();\n setAnchorEl(null);\n }}\n >\n Make this section accordion\n </MenuItem>\n {!props.remove_section && (\n <MenuItem\n sx={{ color: \"#F86060\" }}\n onClick={() => {\n props.removeSection();\n setAnchorEl(null);\n }}\n >\n Remove Section\n </MenuItem>\n )}\n </Menu>\n </div>\n </div>\n <div\n className={`${\n props.activeIndex ? \"formBuilder--Active\" : \"formBuilder--Section\"\n }`}\n >\n {/* <Box sx={{ width: \"100%\" }} className=\"formBuilder--GridLayout\">\n {props.children}\n </Box> */}\n <Grid container sx={{ mb: 2 }}>\n {props.children}\n </Grid>\n {!props.isFormSwitcher ? (\n <Button\n variant=\"outlined\"\n style={{ color: \"#292D32\", marginBottom: \"0.375rem\" }}\n startIcon={<AddIcon />}\n data-position={props.position}\n data-name={`${props.fieldArrayName}.${props.name}`}\n onClick={props.handleAddButton}\n >\n Add\n </Button>\n ) : null}\n </div>\n </Grid>\n );\n};\n\nDynamicSectionHOC.propTypes = {\n index: PropTypes.number.isRequired,\n onClick: PropTypes.func,\n children: PropTypes.node.isRequired,\n label: PropTypes.string,\n position: PropTypes.number,\n fieldArrayName: PropTypes.string,\n className: PropTypes.string,\n removeSection: PropTypes.func.isRequired,\n handleAccordion: PropTypes.func,\n activeIndex: PropTypes.bool,\n handleAddButton: PropTypes.func,\n remove_section: PropTypes.bool,\n isFormSwitcher: PropTypes.bool,\n};\n\nexport { DynamicSectionHOC };\nexport default DynamicSectionHOC;\n","/// <reference types=\"../types/index.d.ts\" />\n\n// (c) 2020-present Andrea Giammarchi\n\nconst {parse: $parse, stringify: $stringify} = JSON;\nconst {keys} = Object;\n\nconst Primitive = String; // it could be Number\nconst primitive = 'string'; // it could be 'number'\n\nconst ignore = {};\nconst object = 'object';\n\nconst noop = (_, value) => value;\n\nconst primitives = value => (\n value instanceof Primitive ? Primitive(value) : value\n);\n\nconst Primitives = (_, value) => (\n typeof value === primitive ? new Primitive(value) : value\n);\n\nconst resolver = (input, lazy, parsed, $) => output => {\n for (let ke = keys(output), {length} = ke, y = 0; y < length; y++) {\n const k = ke[y];\n const value = output[k];\n if (value instanceof Primitive) {\n const tmp = input[+value];\n if (typeof tmp === object && !parsed.has(tmp)) {\n parsed.add(tmp);\n output[k] = ignore;\n lazy.push({ o: output, k, r: tmp });\n }\n else\n output[k] = $.call(output, k, tmp);\n }\n else if (output[k] !== ignore)\n output[k] = $.call(output, k, value);\n }\n return output;\n};\n\nconst set = (known, input, value) => {\n const index = Primitive(input.push(value) - 1);\n known.set(value, index);\n return index;\n};\n\n/**\n * Converts a specialized flatted string into a JS value.\n * @param {string} text\n * @param {(this: any, key: string, value: any) => any} [reviver]\n * @returns {any}\n */\nexport const parse = (text, reviver) => {\n const input = $parse(text, Primitives).map(primitives);\n const $ = reviver || noop;\n\n let value = input[0];\n\n if (typeof value === object && value) {\n const lazy = [];\n const revive = resolver(input, lazy, new Set, $);\n value = revive(value);\n\n let i = 0;\n while (i < lazy.length) {\n // it could be a lazy.shift() but that's costly\n const {o, k, r} = lazy[i++];\n o[k] = $.call(o, k, revive(r));\n }\n }\n\n return $.call({'': value}, '', value);\n};\n\n/**\n * Converts a JS value into a specialized flatted string.\n * @param {any} value\n * @param {((this: any, key: string, value: any) => any) | (string | number)[] | null | undefined} [replacer]\n * @param {string | number | undefined} [space]\n * @returns {string}\n */\nexport const stringify = (value, replacer, space) => {\n const $ = replacer && typeof replacer === object ?\n (k, v) => (k === '' || -1 < replacer.indexOf(k) ? v : void 0) :\n (replacer || noop);\n const known = new Map;\n const input = [];\n const output = [];\n let i = +set(known, input, $.call({'': value}, '', value));\n let firstRun = !i;\n while (i < input.length) {\n firstRun = true;\n output[i] = $stringify(input[i++], replace, space);\n }\n return '[' + output.join(',') + ']';\n function replace(key, value) {\n if (firstRun) {\n firstRun = !firstRun;\n return value;\n }\n const after = $.call(this, key, value);\n switch (typeof after) {\n case object:\n if (after === null) return after;\n case primitive:\n return known.get(after) || set(known, input, after);\n }\n return after;\n }\n};\n\n/**\n * Converts a generic value into a JSON serializable object without losing recursion.\n * @param {any} value\n * @returns {any}\n */\nexport const toJSON = value => $parse(stringify(value));\n\n/**\n * Converts a previously serialized object with recursion into a recursive one.\n * @param {any} value\n * @returns {any}\n */\nexport const fromJSON = value => parse($stringify(value));\n","// import { MRT_ColumnDef, MRT_RowData } from 'material-react-table';\r\nimport { Add } from '@mui/icons-material';\r\nimport Button from '../../../button/button';\r\nimport MaterialTable, { MaterialTableColumnProps } from '../../../material-table/material-table';\r\nimport Typography from '../../../typography/typography';\r\nimport { Box } from '@mui/material';\r\nimport './element.scss';\r\nimport { parse, stringify } from 'flatted';\r\nimport React, { useCallback } from 'react';\r\nimport { useAuth } from '../../../../hooks/useAuth';\r\nimport { formatDate } from '../../../../utils/dateFormat';\r\nimport Chip from '../../../chip/chip';\r\nimport Checkbox from '../../../checkbox/checkbox';\r\nimport { MRT_Row } from 'material-react-table';\r\nimport _ from 'lodash';\r\nimport { formatAmount, getFileName, toFixedWithNumbers } from \"../../../../utils/common\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { formatLabel } from '../../../../utils/format-text';\r\nexport interface ICellChangeParam {\r\n\tvalue: any,\r\n\tdata: any,\r\n\tcol: MaterialTableColumnProps,\r\n\trow: MRT_Row<any>,\r\n\tname: string,\r\n\tuRows: any[]\r\n}\r\n\r\ninterface IDynamicTable {\r\n\tcolumns: any[];\r\n\trows?: any[];\r\n\tposition: number;\r\n\tlabel: string;\r\n\tdisabled?: boolean;\r\n\ttypeOfField?: string;\r\n\tonAddClick?: (name?: string) => void;\r\n\tname?: string;\r\n\tis_button?: boolean;\r\n\tdisableTableAddButton?: boolean;\r\n\totherButtons?: React.ReactNode[];\r\n\tdefaultActionColumnItems?: React.ReactElement[];\r\n\tonTableCellChange: ({ value, data, col, row }: ICellChangeParam) => void;\r\n\tcurrencySymbol?: string;\r\n}\r\n\r\nconst DynamicTable: React.FC<IDynamicTable> = React.memo(({\r\n\tcolumns,\r\n\tposition,\r\n\tlabel,\r\n\trows = [],\r\n\tonAddClick,\r\n\tname,\r\n\tis_button = true,\r\n\tdisableTableAddButton,\r\n\totherButtons,\r\n\tdefaultActionColumnItems,\r\n\tonTableCellChange,\r\n\tcurrencySymbol = '',\r\n\t...rest\r\n\t// disabled\r\n}) => {\r\n\tconst { t } = useTranslation();\r\n\tconst { user } = useAuth();\r\n\tconst cs = currencySymbol || user?.currency_data?.symbol || '';\r\n\tconst currencyFormat = user?.currency_data?.number_format || '';\r\n\tconst symbolPosition = user?.currency_data?.position || 'before';\r\n\tconst takeCurencyOrPercentage = useCallback((type: string, value: any) => {\r\n\t\tswitch (type) {\r\n\t\t\tcase 'Percentage':\r\n\t\t\t\treturn `${value}%`;\r\n\t\t\tcase 'Fixed Amount':\r\n\t\t\t\treturn `${cs}${value}`;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\treturn value;\r\n\t\t}\r\n\t}, [cs]);\r\n\r\n\tconst isCellChangeAFunc = onTableCellChange instanceof Function\r\n\r\n\tconst tableColumns = useCallback(\r\n\t\t(columns: MaterialTableColumnProps[]) => {\r\n\t\t\treturn columns.map((column) => ({\r\n\t\t\t\t...column,\r\n\t\t\t\theader: t(column.header),\r\n\t\t\t\tCell: ({ renderedCellValue, row }: any) => {\r\n\t\t\t\t\tlet v = renderedCellValue;\r\n\t\t\t\t\tif (typeof v === 'number' && v && String(v)?.includes('.')) {\r\n\t\t\t\t\t\treturn v = toFixedWithNumbers(v)\r\n\t\t\t\t\t}\r\n\t\t\t\t\tswitch (column.type) {\r\n\t\t\t\t\t\tcase 'formattedString':\r\n\t\t\t\t\t\t\tv = formatLabel(renderedCellValue) || '-';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 'date':\r\n\t\t\t\t\t\t\tv = formatDate(\r\n\t\t\t\t\t\t\t\trenderedCellValue,\r\n\t\t\t\t\t\t\t\tcolumn.editProperties?.dateFormat || 'DD-MM-YYYY'\r\n\t\t\t\t\t\t\t) || '-';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 'currency':\r\n\t\t\t\t\t\t\tv = renderedCellValue ? `${formatAmount(renderedCellValue, currencyFormat, symbolPosition, cs)}` : '-';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 'stringOrArray': {\r\n\t\t\t\t\t\t\tconst type = row.original?.promotion_map_data?.type;\r\n\t\t\t\t\t\t\tv = Array.isArray(renderedCellValue)\r\n\t\t\t\t\t\t\t\t? renderedCellValue.map((rcv) => (\r\n\t\t\t\t\t\t\t\t\trcv ? <Chip label={takeCurencyOrPercentage(type, rcv)} /> : null\r\n\t\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t\t\t: takeCurencyOrPercentage(type, renderedCellValue);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcase \"checkbox\": {\r\n\t\t\t\t\t\t\tv = <Checkbox\r\n\t\t\t\t\t\t\t\tchecked={Boolean(renderedCellValue)}\r\n\t\t\t\t\t\t\t\tonClick={isCellChangeAFunc\r\n\t\t\t\t\t\t\t\t\t? (e) => onTableCellChange({\r\n\t\t\t\t\t\t\t\t\t\tvalue: e.target.checked,\r\n\t\t\t\t\t\t\t\t\t\tdata: row.original,\r\n\t\t\t\t\t\t\t\t\t\tcol: column,\r\n\t\t\t\t\t\t\t\t\t\trow: row,\r\n\t\t\t\t\t\t\t\t\t\tname: name,\r\n\t\t\t\t\t\t\t\t\t\tuRows: rows\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t: undefined\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t/>;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcase \"array\": {\r\n\t\t\t\t\t\t\tv = Array.isArray(renderedCellValue) && renderedCellValue.length ?\r\n\t\t\t\t\t\t\t\t<Box sx={{ display: 'flex', gap: 0.5, alignItems: 'center', flexWrap: 'wrap' }}>\r\n\t\t\t\t\t\t\t\t\t{renderedCellValue.map(r => (<Chip type='normal' label={_.get(r, column?.valueGet, '')} active />))}\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t: '-';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcase \"file\": {\r\n\t\t\t\t\t\t\tv = getFileName(renderedCellValue) || '-';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn v;\r\n\t\t\t\t}\r\n\t\t\t}));\r\n\t\t},\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t\t[cs, takeCurencyOrPercentage, currencySymbol, rows]\r\n\t);\r\n\treturn (\r\n\t\t<Box data-position={position}>\r\n\t\t\t<Typography\r\n\t\t\t\ttype='s5'\r\n\t\t\t\tweight='medium'\r\n\t\t\t\tcolor='theme.secondary.800'\r\n\t\t\t\tdata-position={position}\r\n\t\t\t\tsx={{ mb: 0.5 }}>\r\n\t\t\t\t{t(label)}\r\n\t\t\t</Typography>\r\n\t\t\t<Box /* sx={disabled ? { pointerEvents: 'none' } : {}} */>\r\n\t\t\t\t<MaterialTable\r\n\t\t\t\t\tcolumnOrder={['mrt-row-select']}\r\n\t\t\t\t\t// rows={parse(stringify(rows))}\r\n\t\t\t\t\trows={rows}\r\n\t\t\t\t\tcolumns={tableColumns(parse(stringify(columns)))}\r\n\t\t\t\t\ttotalPages={20}\r\n\t\t\t\t\tpaginationModel={{ pageNo: 1, limit: 10 }}\r\n\t\t\t\t\tenableEditing={false}\r\n\t\t\t\t\tenableColumnDragging={false}\r\n\t\t\t\t\tenableBottomToolbar={false}\r\n\t\t\t\t\tdefaultActionColumnItems={defaultActionColumnItems}\r\n\t\t\t\t\t{...rest}\r\n\t\t\t\t/>\r\n\t\t\t\t{is_button && !disableTableAddButton && (\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\twidth: '100%',\r\n\t\t\t\t\t\t\tjustifyContent: 'space-between',\r\n\t\t\t\t\t\t\tmt: 1\r\n\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant='outlined'\r\n\t\t\t\t\t\t\tonClick={() => onAddClick?.(name)}\r\n\t\t\t\t\t\t\tstartIcon={<Add />}\r\n\t\t\t\t\t\t\tclassName='table--AddButton'>\r\n\t\t\t\t\t\t\tAdd\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t{Boolean(otherButtons?.length) && otherButtons}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t)}\r\n\t\t\t</Box>\r\n\t\t</Box>\r\n\t);\r\n});\r\n\r\nexport default DynamicTable;\r\n","import { styled } from '@mui/material/styles';\r\nimport { AdapterDayjs } from \"@mui/x-date-pickers/AdapterDayjs\";\r\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\r\nimport { TimePicker as Time } from \"@mui/x-date-pickers/TimePicker\";\r\nimport Typography from \"../typography/typography\";\r\nimport \"./time-picker.scss\";\r\nimport { memo } from \"react\";\r\n\r\nexport interface TimePickerProps {\r\n label: string;\r\n disabled?: boolean;\r\n error?: boolean;\r\n name?: string;\r\n value?: string | number | Date;\r\n helperText?: string;\r\n dataPosition?: number;\r\n dataName?: string;\r\n is24hrFormat?: boolean;\r\n placeholder?: string;\r\n required?: boolean;\r\n}\r\n\r\nconst StyledTimePicker = styled(Time)(({ theme: { palette } }) => ({\r\n \"& .MuiOutlinedInput-root\": {\r\n padding: \"0\",\r\n color: palette.theme?.secondary[800],\r\n \"& fieldset\": {\r\n borderColor: palette.theme?.secondary[400],\r\n },\r\n \"&:hover fieldset\": {\r\n borderColor: palette.theme?.secondary[500],\r\n },\r\n \"&.Mui-focused fieldset\": {\r\n borderWidth: \"0.0625rem\",\r\n borderStyle: \"solid\",\r\n borderColor: palette.theme?.primary[700],\r\n },\r\n \"&.Mui-error fieldset\": {\r\n borderColor: palette.theme?.error[600],\r\n },\r\n \"&.Mui-disabled\": {\r\n background: palette.theme?.secondary[200],\r\n color: palette.theme?.secondary[800],\r\n },\r\n \"& .MuiInputBase-input::placeholder\": {\r\n color: palette.theme?.secondary[800],\r\n opacity: 1,\r\n },\r\n },\r\n \"& .MuiFormHelperText-root\": {\r\n marginLeft: 0,\r\n color: palette.theme?.secondary[800],\r\n \"&.Mui-error\": {\r\n color: palette.theme?.error[600],\r\n },\r\n },\r\n \"& .MuiIconButton-root\": {\r\n marginRight: 0,\r\n },\r\n \"& .MuiPickersCalendarHeader-labelContainer\": {\r\n fontWeight: 600,\r\n },\r\n}));\r\n\r\nconst TimePicker = memo((props: TimePickerProps) => {\r\n const {\r\n label,\r\n disabled,\r\n error,\r\n helperText,\r\n dataName,\r\n dataPosition,\r\n is24hrFormat = false,\r\n placeholder,\r\n required = false,\r\n ...rest\r\n } = props;\r\n return (\r\n <div>\r\n <LocalizationProvider dateAdapter={AdapterDayjs}>\r\n {label && (\r\n <Typography\r\n type=\"s4\"\r\n fontWeight={\"medium\"}\r\n mb={0.5}\r\n color={error ? \"theme.error.600\" : \"theme.secondary.800\"}\r\n data-position={dataPosition}\r\n data-name={dataName}\r\n >\r\n {label} {required && <span className=\"requiredStar\">*</span>}\r\n </Typography>\r\n )}\r\n <StyledTimePicker\r\n {...rest}\r\n disabled={disabled}\r\n slotProps={{\r\n textField: {\r\n helperText: helperText,\r\n error: error,\r\n placeholder: placeholder || \"HH:mm A\",\r\n // required: required,\r\n },\r\n }}\r\n format={is24hrFormat ? \"HH:MM\" : \"hh:mm a\"}\r\n className=\"timePicker\"\r\n />\r\n </LocalizationProvider>\r\n </div>\r\n );\r\n});\r\n\r\nexport { TimePicker };\r\nexport default TimePicker;\r\n","import { Controller } from 'react-hook-form';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport './element.scss';\r\nimport TimePicker from '../../../time-picker/time-picker';\r\nimport React from 'react';\r\n\r\nconst DynamicTime = React.memo((props: any) => {\r\n\r\n\treturn (\r\n\t\t<Controller\r\n\t\t\tcontrol={props.formControl}\r\n\t\t\tname={`${props.fieldArrayName}.${props.name}`}\r\n\t\t\trender={({ field, fieldState }) => (\r\n\t\t\t\t<TimePicker\r\n\t\t\t\t\t{...field}\r\n\t\t\t\t\tonChange={(e) => {\r\n\t\t\t\t\t\tfield.onChange(e);\r\n\t\t\t\t\t\tprops?.onChange(e);\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tdataPosition={props.position}\r\n\t\t\t\t\tdataName={`${props.fieldArrayName}.${props.name}`}\r\n\t\t\t\t\tlabel={props.label}\r\n\t\t\t\t\tplaceholder={props.placeholder}\r\n\t\t\t\t\trequired={props.formType === 'builder' ? false : props.required}\r\n\t\t\t\t\tis24hrFormat={props.options === '24hr'}\r\n\t\t\t\t\tdisabled={props.disabled}\r\n\t\t\t\t\thelperText={fieldState.error?.message}\r\n\t\t\t\t\terror={Boolean(fieldState.error)}\r\n\t\t\t\t\t{...(props?.rest || {})}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\t\t/>\r\n\t);\r\n});\r\n\r\n\r\nDynamicTime.propTypes = {\r\n\tformControl: PropTypes.shape({\r\n\t\tregister: PropTypes.func.isRequired,\r\n\t\tsetValue: PropTypes.func\r\n\t}).isRequired,\r\n\tname: PropTypes.string.isRequired,\r\n\tlabel: PropTypes.string.isRequired,\r\n\tfieldArrayName: PropTypes.string,\r\n\trequired: PropTypes.bool,\r\n\tposition: PropTypes.number,\r\n\tformType: PropTypes.string,\r\n\toption: PropTypes.string,\r\n\tplaceholder: PropTypes.string,\r\n\ttypeOfField: PropTypes.string,\r\n\tdisabled: PropTypes.bool,\r\n\tonChange: PropTypes.func,\r\n\trest: PropTypes.object,\r\n};\r\n\r\nexport { DynamicTime };\r\nexport default DynamicTime;\r\n","import { styled } from \"@mui/material/styles\";\nimport Switch, { SwitchProps } from \"@mui/material/Switch\";\nimport Stack from \"@mui/material/Stack\";\nimport Typography, { ITypography } from \"../typography/typography\";\nimport { useLanguage } from \"../../hooks/useLangauge\";\nimport { memo } from \"react\";\n\nexport interface ISwitchProps extends SwitchProps {\n label?: string;\n labelPosition?: \"start\" | \"end\";\n typographyProps?: ITypography;\n}\n\nconst CustomisedSwitch = styled((props: ISwitchProps) => (\n <Switch focusVisibleClassName=\".Mui-focusVisible\" disableRipple {...props} />\n))(({ theme, size, checked }) => ({\n width: 24,\n height: 16,\n padding: 0,\n \"& .MuiSwitch-switchBase\": {\n padding: 0,\n margin: size === \"medium\" ? 2 : 1,\n transitionDuration: \"300ms\",\n \"&.Mui-checked\": {\n transform: size === \"medium\" ? \"translateX(16px)\" : \"translateX(8px)\",\n color: \"#fff\",\n \"& + .MuiSwitch-track\": {\n backgroundColor: theme.palette.mode === \"dark\" ? \"#2ECA45\" : \"#65C466\",\n opacity: 1,\n border: 0,\n },\n \"&.Mui-disabled + .MuiSwitch-track\": {\n opacity: 0.5,\n },\n },\n \"&.Mui-focusVisible .MuiSwitch-thumb\": {\n color: \"#33cf4d\",\n border: \"6px solid #fff\",\n },\n \"&.Mui-disabled .MuiSwitch-thumb\": {\n color:\n theme.palette.mode === \"light\"\n ? theme.palette.grey[100]\n : theme.palette.grey[600],\n },\n \"&.Mui-disabled + .MuiSwitch-track\": {\n opacity: theme.palette.mode === \"light\" ? 0.7 : 0.3,\n },\n },\n \"& .MuiSwitch-thumb\": {\n boxSizing: \"border-box\",\n width: 14,\n height: 14,\n border: checked ? 0 : `1px solid ${theme.palette.theme?.secondary[300]}`,\n },\n \"& .MuiSwitch-track\": {\n borderRadius: 26 / 2,\n backgroundColor: theme.palette.theme?.secondary[200],\n opacity: 1,\n transition: theme.transitions.create([\"background-color\"], {\n duration: 500,\n }),\n },\n ...(size === \"medium\" && {\n width: 42,\n height: 26,\n \"& .MuiSwitch-thumb\": {\n boxSizing: \"border-box\",\n width: 22,\n height: 22,\n border: checked ? 0 : `1px solid ${theme.palette.theme?.secondary[300]}`,\n },\n }),\n}));\n\nconst ToggleSwitch: React.FC<ISwitchProps> = memo(({\n label,\n labelPosition = \"end\",\n typographyProps,\n ...rest\n}) => {\n const {isRtl}=useLanguage();\n return (\n <Stack direction=\"row\" spacing={isRtl ? '' : 0.5} alignItems=\"center\">\n {labelPosition === \"start\" && (\n <Typography type=\"s3\" color=\"theme.secondary.1000\" {...typographyProps}>\n {label}\n </Typography>\n )}\n <CustomisedSwitch sx={{ m: 1 }} {...rest} />\n {labelPosition === \"end\" && (\n <Typography type=\"s3\" color=\"theme.secondary.1000\" {...typographyProps}>\n {label}\n </Typography>\n )}\n </Stack>\n );\n});\n\nexport default ToggleSwitch;\n","import { Control, Controller } from \"react-hook-form\";\nimport Typography from \"../../../typography/typography\";\nimport ToggleSwitch, {\n ISwitchProps,\n} from \"../../../toggle-switch/toggle-switch\";\nimport { memo } from \"react\";\n\ninterface IDynamicToggleButton {\n formControl: Control<any>;\n fieldArrayName: string;\n name: string;\n label: string;\n position: number;\n disabled?: boolean;\n titlePosition?: \"start\" | \"end\";\n typeOfField?: string;\n title: string;\n toggleSwitchProps?: ISwitchProps;\n}\n\nconst DynamicToggleButton: React.FC<IDynamicToggleButton> = memo(({\n formControl,\n fieldArrayName,\n name,\n label,\n position,\n disabled,\n titlePosition,\n title,\n toggleSwitchProps,\n}) => {\n\treturn (\n\t\t<Controller\n\t\t\tcontrol={formControl}\n\t\t\tname={`${fieldArrayName}.${name}`}\n\t\t\trender={({ field }) => (\n\t\t\t\t<>\n\t\t\t\t\t<Typography\n\t\t\t\t\t\ttype='s5'\n\t\t\t\t\t\tcolor='theme.secondary.800'\n\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\tdata-position={position}\n\t\t\t\t\t\tsx={{ mb: 0.5 }}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</Typography>\n\t\t\t\t\t<ToggleSwitch\n\t\t\t\t\t\t{...toggleSwitchProps}\n\t\t\t\t\t\tname={name}\n\t\t\t\t\t\tchecked={field.value}\n\t\t\t\t\t\tonChange={field.onChange}\n\t\t\t\t\t\tlabel={title}\n\t\t\t\t\t\tdisabled={Boolean(disabled)}\n\t\t\t\t\t\tlabelPosition={titlePosition}\t\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t)}\n\t\t/>\n\t);\n});\n\nexport default DynamicToggleButton;\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable unused-imports/no-unused-vars */\nimport React, { ReactNode, useEffect, useState } from \"react\";\nimport { Box, IconButton } from \"@mui/material\";\nimport Tab from \"@mui/material/Tab\";\nimport TabContext from \"@mui/lab/TabContext\";\nimport TabList from \"@mui/lab/TabList\";\nimport TabPanel from \"@mui/lab/TabPanel\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\nimport \"./tabs.scss\";\nimport TextField from \"../text-field/text-field\";\nimport { useTranslation } from \"react-i18next\";\nimport Typography from \"../typography/typography\";\n\ninterface TabItem {\n tab_order: number;\n title: string;\n content?: string | ReactNode;\n data?: any;\n remove_tab?: boolean;\n}\nexport interface TabProps {\n tabs: TabItem[];\n activeValue?: number;\n setActiveValue?: React.Dispatch<React.SetStateAction<number | undefined>>;\n onEditTabTitle?: (tabId: number, newTitle: string) => void;\n handleTabChange?: () => void;\n handleRemoveTab?: (tabId: number) => void;\n isFormTabValid?: boolean ;\n isTabViewOnly?: boolean;\n activeTabs?: any[] ;\n setActiveTabs?: React.Dispatch<React.SetStateAction<number | undefined>>;\n containerProps?: any;\n}\n\nexport const TabBar = (props: TabProps) => {\n const { t } = useTranslation();\n const {\n tabs,\n onEditTabTitle,\n activeValue,\n setActiveValue,\n handleTabChange,\n handleRemoveTab,\n // isFormTabValid , \n isTabViewOnly,\n activeTabs, \n containerProps\n } = props; \n \n const [value, setValue] = useState<number>(activeValue || 0);\n const [editableTabId, setEditableTabId] = useState<number | null>(null);\n useEffect(()=>{\n activeValue && setValue(activeValue);\n\t} , [activeValue])\n\n const handleChange = (_event: React.SyntheticEvent, newValue: number) => {\n setValue(newValue);\n setActiveValue && setActiveValue(newValue);\n handleTabChange && handleTabChange();\n };\n\n const handleTabDoubleClick = (tabId: number) => {\n setEditableTabId(tabId);\n };\n\n const handleEditTabTitle = (\n event: React.ChangeEvent<HTMLInputElement>,\n tabId: number,\n ) => {\n onEditTabTitle && onEditTabTitle(tabId, event.target.value);\n };\n\n // useEffect(() => {\n // if (setActiveValue && Boolean(tabs?.length)) setActiveValue(value);\n // // eslint-disable-next-line\n // }, [tabs]);\n\n return (\n <Box mb={2} {...containerProps}>\n <TabContext value={activeValue ?? value }>\n <Box>\n <TabList className=\"account-payble-tabs-wrap\" onChange={handleChange} variant=\"scrollable\" scrollButtons=\"auto\" aria-label=\"scrollable tabs\" sx={{ overflowX: 'auto', maxWidth: '100%' }}>\n {tabs.map((tab: TabItem, index: any) => (\n <Tab\n className=\"account-payble-tab-items\"\n key={tab.tab_order}\n \n label={\n <Box display='flex' alignItems='center'>\n {\n onEditTabTitle && editableTabId === tab.tab_order ? (\n <TextField\n value={tab.title}\n autoFocus\n onBlur={() => setEditableTabId(null)}\n onChange={(e: any) =>\n handleEditTabTitle(e, tab.tab_order)\n }\n />\n ) : handleRemoveTab ? (\n <div className=\"Tabs--Title\">\n <Typography color='theme.secondary.1000' type='s3'>{t(tab.title)}</Typography>\n {!tab.remove_tab && (\n <IconButton size=\"small\" onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleRemoveTab(tab.tab_order);\n }}>\n <CloseIcon style={{ fontSize: \"15px\", cursor: \"pointer\" }}/>\n </IconButton>\n )}\n </div>\n ) : (\n <Typography color='theme.secondary.1000' type='s3'>{t(tab.title)}</Typography>\n )\n }\n </Box>\n }\n wrapped\n onDoubleClick={() => handleTabDoubleClick(tab.tab_order)}\n />\n ))}\n </TabList>\n </Box>\n {tabs.map(\n (tab: TabItem, index: number) =>\n tab.content && (\n <TabPanel value={index.toString()} key={tab.tab_order}>\n {value === index && tab.content}\n </TabPanel>\n ),\n )}\n </TabContext>\n </Box>\n );\n}\n\nexport default TabBar;","import { AlertProps, Alert as MUIAlert, styled } from \"@mui/material\";\r\n\r\nconst StyledAlert = styled(MUIAlert)(({ theme: { palette } }) => ({\r\n \"&.MuiAlert-root\": {\r\n fontSize: \"0.75rem\",\r\n fontWeight: \"500\",\r\n letterSpacing: \"-0.24px\",\r\n padding: \"0rem 0.75rem\",\r\n },\r\n \"&.MuiAlert-standardInfo\": {\r\n color: palette.theme?.secondary[900],\r\n backgroundColor: palette.theme?.secondary[200],\r\n },\r\n \"&.MuiAlert-standardSuccess\": {\r\n color: palette.theme?.primary[900],\r\n backgroundColor: palette.theme?.primary[100],\r\n },\r\n \"&.MuiAlert-standardError\": {\r\n color: palette.theme?.tertiary6[900],\r\n backgroundColor: palette.theme?.tertiary6[100],\r\n \"& .MuiAlert-icon\" : {\r\n color: palette.theme?.tertiary6[900],\r\n }\r\n },\r\n\r\n \".MuiAlert-action\": {\r\n svg: {\r\n fontSize: \"1rem\",\r\n },\r\n },\r\n}));\r\n\r\nconst Alert = (props: AlertProps) => {\r\n const { children, icon = false, ...rest } = props;\r\n\r\n return (\r\n <StyledAlert icon={icon} {...rest}>\r\n {children}\r\n </StyledAlert>\r\n );\r\n};\r\n\r\nexport { Alert };\r\nexport default Alert;\r\n","//eslint-disable @typescript-eslint/no-explicit-any\r\nimport React, { useState, useRef, KeyboardEvent, memo } from 'react';\r\nimport { Controller } from 'react-hook-form';\r\nimport { \r\n Chip, \r\n Box, \r\n FormControl, \r\n FormHelperText,\r\n InputAdornment,\r\n styled\r\n} from '@mui/material';\r\nimport Typography from '../typography/typography';\r\n\r\n// interface ValidationRule {\r\n// type: 'email' | 'url' | 'phone' | 'custom';\r\n// pattern?: RegExp;\r\n// message: string;\r\n// validator?: (value: string) => boolean;\r\n// }\r\n\r\ninterface ChipGeneratorProps {\r\n name: string;\r\n control: any;\r\n label?: string;\r\n placeholder?: string;\r\n required?: boolean;\r\n disabled?: boolean;\r\n validation?: any[];\r\n maxChips?: number;\r\n allowDuplicates?: boolean;\r\n fieldArrayName?: string;\r\n endIcon?: React.ReactNode;\r\n helperText?: string;\r\n error?: boolean;\r\n onChipAdd?: (chip: string) => void;\r\n onChipRemove?: (chip: string, index: number) => void;\r\n customChipProps?: any;\r\n textFieldProps?: any;\r\n allowMultipleAdd?: boolean;\r\n delimiters?: string[];\r\n // New props for data type handling\r\n dataType?: 'array' | 'string';\r\n separator?: string;\r\n}\r\n\r\n// Styled components for inline chips\r\nconst ChipContainer = styled(Box)(({ theme }) => ({\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n alignItems: 'center',\r\n gap: theme.spacing(0.5),\r\n minHeight: '1.4375em',\r\n border: `1px solid #D3D3D4`,\r\n borderRadius: '0.25rem',\r\n cursor: 'text',\r\n fontSize: '0.875rem',\r\n// '&:hover': {\r\n// borderColor: theme.palette.text.primary,\r\n// },\r\n '&.focused': {\r\n borderColor:'#54CC96',\r\n borderWidth: '1px',\r\n },\r\n '&.error': {\r\n borderColor: theme.palette.error.main,\r\n },\r\n '&.disabled': {\r\n backgroundColor: theme.palette.action.disabledBackground,\r\n cursor: 'default',\r\n },\r\n paddingLeft: 3 \r\n}));\r\n\r\nconst InlineInput = styled('input')(({ theme }) => ({\r\n border: 'none',\r\n outline: 'none',\r\n backgroundColor: 'transparent',\r\n flexGrow: 1,\r\n minWidth: '120px',\r\n padding: '0.5rem',\r\n fontSize: '0.875rem',\r\n fontFamily: theme.typography.fontFamily,\r\n '&::placeholder': {\r\n color: theme.palette.text.secondary,\r\n opacity: 1,\r\n },\r\n '&:disabled': {\r\n cursor: 'default',\r\n }\r\n}));\r\n\r\nconst InlineChip = styled(Chip)(({theme: { palette }}) => ({\r\n height: '24px',\r\n fontSize: '0.875rem',\r\n borderColor:' #54CC96',\r\n backgroundColor: palette.theme.primary[50],\r\n color:'#2EB273',\r\n margin: '1px',\r\n '& .MuiChip-deleteIcon': {\r\n fontSize: '16px',\r\n color:'#2EB273',\r\n '&:hover': {\r\n color: '#2EB273',\r\n },\r\n },\r\n}));\r\n\r\nconst ChipGenerator: React.FC<ChipGeneratorProps> = memo(({\r\n name,\r\n control,\r\n label,\r\n placeholder = \"Type and press space to add\",\r\n required = false,\r\n disabled = false,\r\n validation,\r\n maxChips,\r\n allowDuplicates = false,\r\n fieldArrayName,\r\n endIcon,\r\n helperText,\r\n error: externalError,\r\n onChipAdd,\r\n onChipRemove,\r\n customChipProps = {},\r\n allowMultipleAdd = true,\r\n delimiters = [',', ';', '\\n', '\\t'],\r\n dataType = 'string',\r\n separator = ',',\r\n}) => {\r\n const [inputValue, setInputValue] = useState('');\r\n const [validationError, setValidationError] = useState('');\r\n const [focused, setFocused] = useState(false);\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n\r\n const validateChip = (value: string,validation: any): { isValid: boolean; error: string } => {\r\n if (!validation) return { isValid: true, error: '' };\r\n\r\n const trimmedValue = value.trim();\r\n if (!trimmedValue) return { isValid: false, error: 'Empty values are not allowed' };\r\n\r\n switch (validation.type) {\r\n case 'email': {\r\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n const isValidEmail = emailRegex.test(trimmedValue);\r\n return {\r\n isValid: isValidEmail,\r\n error: isValidEmail ? '' : validation.message || 'Please enter a valid email address'\r\n };\r\n }\r\n\r\n // case 'url': {\r\n // const urlRegex = /^(https?:\\/\\/)?([\\da-z.-]+)\\.([a-z.]{2,6})([\\/\\w .-]*)*\\/?$/;\r\n // const isValidUrl = urlRegex.test(trimmedValue);\r\n // return {\r\n // isValid: isValidUrl,\r\n // error: isValidUrl ? '' : validation.message || 'Please enter a valid URL'\r\n // };\r\n // }\r\n\r\n case 'phone': {\r\n const phoneRegex = /^[+]?[1-9][\\d]{0,15}$/;\r\n const isValidPhone = phoneRegex.test(trimmedValue.replace(/[\\s()-]/g, ''));\r\n return {\r\n isValid: isValidPhone,\r\n error: isValidPhone ? '' : validation.message || 'Please enter a valid phone number'\r\n };\r\n }\r\n\r\n case 'custom': {\r\n if (validation.pattern) {\r\n const isValid = validation.pattern.test(trimmedValue);\r\n return {\r\n isValid,\r\n error: isValid ? '' : validation.message\r\n };\r\n }\r\n if (validation.validator) {\r\n const isValid = validation.validator(trimmedValue);\r\n return {\r\n isValid,\r\n error: isValid ? '' : validation.message\r\n };\r\n }\r\n return { isValid: true, error: '' };\r\n }\r\n\r\n default:\r\n return { isValid: true, error: '' };\r\n }\r\n };\r\n\r\n // Convert between string and array formats\r\n const stringToArray = (str: string): string[] => {\r\n if (!str || typeof str !== 'string') return [];\r\n return str.split(separator).map(item => item.trim()).filter(Boolean);\r\n };\r\n\r\n const arrayToString = (arr: string[]): string => {\r\n return arr.join(separator + ' ');\r\n };\r\n\r\n // Parse input value by delimiters\r\n const parseMultipleValues = (inputStr: string): string[] => {\r\n if (!allowMultipleAdd) {\r\n return [inputStr.trim()].filter(Boolean);\r\n }\r\n\r\n const delimiterPattern = delimiters.map(d => \r\n d.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\r\n ).join('|');\r\n \r\n const regex = new RegExp(`[${delimiterPattern}]`);\r\n \r\n return inputStr\r\n .split(regex)\r\n .map(val => val.trim())\r\n .filter(Boolean);\r\n };\r\n\r\n const addChips = (inputStr: string, currentChips: string[]): { \r\n newChips: string[]; \r\n errors: string[]; \r\n addedCount: number;\r\n } => {\r\n const valuesToAdd = parseMultipleValues(inputStr);\r\n if (valuesToAdd.length === 0) {\r\n return { newChips: currentChips, errors: [], addedCount: 0 };\r\n }\r\n\r\n const newChips = [...currentChips];\r\n const errors: string[] = [];\r\n let addedCount = 0;\r\n\r\n for (const value of valuesToAdd) {\r\n if (maxChips && newChips.length >= maxChips) {\r\n errors.push(`Maximum ${maxChips} items allowed`);\r\n break;\r\n }\r\n \r\n if (validation?.length > 0) {\r\n const errorMessages = validation\r\n .map(val => validateChip(value, val))\r\n .filter(result => !result.isValid)\r\n .map(result => result.error);\r\n\r\n if (errorMessages.length > 0) {\r\n errors.push(`\"${value}\": ${errorMessages.join(', ')}`);\r\n continue;\r\n }\r\n }\r\n \r\n\r\n if (!allowDuplicates && newChips.includes(value)) {\r\n errors.push(`\"${value}\": Duplicate values are not allowed`);\r\n continue;\r\n }\r\n\r\n newChips.push(value);\r\n addedCount++;\r\n onChipAdd?.(value);\r\n }\r\n\r\n return { newChips, errors, addedCount };\r\n };\r\n\r\n const removeChip = (chipToRemove: string, index: number, currentChips: string[]) => {\r\n const newChips = currentChips.filter((_, i) => i !== index);\r\n onChipRemove?.(chipToRemove, index);\r\n setValidationError('');\r\n return newChips;\r\n };\r\n\r\n const processInput = (\r\n inputStr: string,\r\n onChange: (value: string[] | string) => void,\r\n currentValue: string[] | string\r\n ) => {\r\n const currentChips = Array.isArray(currentValue) ? currentValue : stringToArray(currentValue);\r\n const { newChips, errors } = addChips(inputStr, currentChips);\r\n \r\n if (errors.length > 0) {\r\n setValidationError(errors.join('; '));\r\n } else {\r\n setValidationError('');\r\n }\r\n \r\n if (newChips.length !== currentChips.length) {\r\n const outputValue = dataType === 'string' ? arrayToString(newChips) : newChips;\r\n onChange(outputValue);\r\n setInputValue('');\r\n }\r\n };\r\n\r\n const handleKeyPress = (\r\n event: KeyboardEvent<HTMLInputElement>,\r\n onChange: (value: string[] | string) => void,\r\n currentValue: string[] | string\r\n ) => {\r\n if (event.key === ' ' || event.key === 'Enter') {\r\n event.preventDefault();\r\n if (inputValue.trim()) {\r\n processInput(inputValue, onChange, currentValue);\r\n }\r\n } else if (event.key === 'Backspace' && !inputValue) {\r\n const currentChips = Array.isArray(currentValue) ? currentValue : stringToArray(currentValue);\r\n if (currentChips.length > 0) {\r\n const lastIndex = currentChips.length - 1;\r\n const newChips = removeChip(currentChips[lastIndex], lastIndex, currentChips);\r\n const outputValue = dataType === 'string' ? arrayToString(newChips) : newChips;\r\n onChange(outputValue);\r\n }\r\n }\r\n };\r\n\r\n const handleBlur = (\r\n onChange: (value: string[] | string) => void,\r\n currentValue: string[] | string\r\n ) => {\r\n setFocused(false);\r\n if (inputValue.trim()) {\r\n processInput(inputValue, onChange, currentValue);\r\n }\r\n };\r\n\r\n const handlePaste = (\r\n event: React.ClipboardEvent<HTMLInputElement>,\r\n onChange: (value: string[] | string) => void,\r\n currentValue: string[] | string\r\n ) => {\r\n if (allowMultipleAdd) {\r\n event.preventDefault();\r\n const pastedText = event.clipboardData.getData('text');\r\n const combinedInput = inputValue + pastedText;\r\n processInput(combinedInput, onChange, currentValue);\r\n }\r\n };\r\n\r\n const handleContainerClick = () => {\r\n if (!disabled && inputRef.current) {\r\n inputRef.current.focus();\r\n }\r\n };\r\n\r\n const fieldName = fieldArrayName ? `${fieldArrayName}.${name}` : name;\r\n\r\n return (\r\n <Controller\r\n name={fieldName}\r\n control={control}\r\n defaultValue={dataType === 'string' ? '' : []}\r\n render={({ field: { onChange, value, ...field }, fieldState: { error } }) => {\r\n const currentChips = Array.isArray(value) ? value : stringToArray(value || '');\r\n const hasError = !!error || !!validationError || externalError;\r\n\r\n return (\r\n <FormControl fullWidth error={hasError}>\r\n {label && (\r\n <Typography\r\n type=\"s5\"\r\n weight={\"medium\"}\r\n mb={0.5}\r\n color={error ? \"theme.error.600\" : \"theme.secondary.800\"}\r\n >\r\n {label} {required && <span className=\"requiredStar\">*</span>}\r\n </Typography>\r\n )}\r\n\r\n <ChipContainer\r\n ref={containerRef}\r\n className={`${focused ? 'focused' : ''} ${hasError ? 'error' : ''} ${disabled ? 'disabled' : ''}`}\r\n onClick={handleContainerClick}\r\n >\r\n {currentChips.map((chip: string, index: number) => (\r\n <InlineChip\r\n key={`${chip}-${index}`}\r\n label={chip}\r\n onDelete={\r\n disabled\r\n ? undefined\r\n : (event) => {\r\n event.stopPropagation();\r\n const newChips = removeChip(chip, index, currentChips);\r\n const outputValue = dataType === 'string' ? arrayToString(newChips) : newChips;\r\n onChange(outputValue);\r\n }\r\n }\r\n size=\"small\"\r\n // color=\"primary\"\r\n // variant=\"outlined\"\r\n {...customChipProps}\r\n />\r\n ))}\r\n \r\n <InlineInput\r\n {...field}\r\n ref={inputRef}\r\n value={inputValue}\r\n onChange={(e) => setInputValue(e.target.value)}\r\n onKeyDown={(e) => handleKeyPress(e, onChange, value)}\r\n onFocus={() => setFocused(true)}\r\n onBlur={() => handleBlur(onChange, value)}\r\n onPaste={(e) => handlePaste(e, onChange, value)}\r\n placeholder={currentChips.length === 0 ? placeholder : ''}\r\n disabled={disabled}\r\n style={{ \r\n width: inputValue ? `${Math.max(inputValue.length * 8, 120)}px` : '120px',\r\n }}\r\n />\r\n \r\n {endIcon && (\r\n <InputAdornment position=\"end\" sx={{ ml: 1 }}>\r\n {endIcon}\r\n </InputAdornment>\r\n )}\r\n </ChipContainer>\r\n\r\n {(helperText || error?.message || validationError) && (\r\n <FormHelperText>\r\n {error?.message || validationError || helperText}\r\n </FormHelperText>\r\n )}\r\n\r\n {maxChips && (\r\n <FormHelperText>\r\n {currentChips.length} / {maxChips} items\r\n </FormHelperText>\r\n )}\r\n\r\n \r\n </FormControl>\r\n );\r\n }}\r\n />\r\n );\r\n});\r\n\r\nexport default ChipGenerator;","import {\r\n\tUseFormSetValue,\r\n\tFieldValues,\r\n\tuseFormContext,\r\n\tUseFormWatch,\r\n\tUseFormGetFieldState,\r\n\tControl\r\n} from 'react-hook-form';\r\nimport { useLocationFilter } from '../hooks/useLocationFilter';\r\nimport DynamicSearchSelect from './form-control/form-builder/form-builder-element/dynamic-select';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { memo, useEffect, useMemo, useRef } from 'react';\r\nimport _ from 'lodash';\r\n\r\n\r\nexport interface LocationSearchSelectProps<\r\n\tT extends FieldValues = FieldValues\r\n> {\r\n\tselectedCompany?: string[] | string | number | null | undefined;\r\n\tcontrol?: Control<T>;\r\n\tsetValue?: UseFormSetValue<T>;\r\n\tfieldArrayName: string;\r\n\tlocationFieldName?: string;\r\n\tlabel?: string;\r\n\tplaceholder?: string;\r\n\tresetValue?: any;\r\n\tfilterKey?: string;\r\n\t[key: string]: any;\r\n}\r\n\r\nexport interface LocationFilterType {\r\n\t[key: string]: string[] | string | number;\r\n}\r\n\r\nexport const LocationSearchSelect = memo(\r\n\t<T extends FieldValues = FieldValues>({\r\n\t\tselectedCompany,\r\n\t\tcontrol: propControl,\r\n\t\tsetValue: propSetValue,\r\n\t\tfieldArrayName,\r\n\t\tlocationFieldName = 'location_id',\r\n\t\tlabel,\r\n\t\tplaceholder,\r\n\t\tresetValue = undefined,\r\n\t\tfilterKey = '&company_id.in',\r\n\t\tfilterField = 'company_id',\r\n\t\t...dynamicSearchSelectProps\r\n\t}: LocationSearchSelectProps<T>): JSX.Element => {\r\n\t\tconst formContext = useFormContext();\r\n\t\tconst {\r\n\t\t\tcontrol: contextControl,\r\n\t\t\twatch: contextWatch,\r\n\t\t\tsetValue: contextSetValue,\r\n\t\t\tgetFieldState: contextGetFieldState\r\n\t\t} = formContext || {};\r\n\r\n\t\tconst controlToUse = propControl || contextControl;\r\n\t\tconst setValueToUse = propSetValue || contextSetValue;\r\n\t\tconst watchToUse: UseFormWatch<T> = contextWatch || (() => undefined);\r\n\t\tconst getFieldStateToUse: UseFormGetFieldState<T> =\r\n\t\t\tcontextGetFieldState || (() => ({}));\r\n\r\n\t\tconst filterFieldValue = watchToUse(`${fieldArrayName}.${filterField}`);\r\n\t\tconst isDirty = getFieldStateToUse(\r\n\t\t\t`${fieldArrayName}.${filterField}`\r\n\t\t)?.isDirty;\r\n\r\n\t\tconst prevFilterFieldValue = useRef<any>();\r\n\r\n\t\tconst { t } = useTranslation();\r\n\r\n\t\tconst isValueChanged = useMemo(() => {\r\n\t\t\treturn filterFieldValue && prevFilterFieldValue.current\r\n\t\t\t\t? !_.isEqual(prevFilterFieldValue.current, filterFieldValue)\r\n\t\t\t\t: false;\r\n\t\t}, [filterFieldValue]);\r\n\r\n\r\n\t\tuseEffect(() => {\r\n\t\t\tif (filterFieldValue) {\r\n\t\t\t\tprevFilterFieldValue.current = filterFieldValue;\r\n\t\t\t}\r\n\t\t}, [filterFieldValue]);\r\n\r\n\t\tconst locationFilter: LocationFilterType = useLocationFilter({\r\n\t\t\tselectedCompany: filterFieldValue || selectedCompany,\r\n\t\t\tsetValue: setValueToUse,\r\n\t\t\tfieldArrayName,\r\n\t\t\tlocationFieldName,\r\n\t\t\tresetValue,\r\n\t\t\tfilterKey,\r\n\t\t\tisDirty: isValueChanged || isDirty\r\n\t\t});\r\n\r\n\t\t// Now safely do the conditional render\r\n\t\tif (!controlToUse) {\r\n\t\t\tconsole.warn('LocationSearchSelect: No form control available.');\r\n\t\t\treturn <div>Location Search Select</div>;\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t<DynamicSearchSelect\r\n\t\t\t\tlabel={t(label) || t('crm.salesOrder.fields.location_label')}\r\n\t\t\t\tapiType='location'\r\n\t\t\t\taddType='location'\r\n\t\t\t\tenable_footer={true}\r\n\t\t\t\tname={locationFieldName}\r\n\t\t\t\tplaceholder={\r\n\t\t\t\t\tt(placeholder) || t('crm.salesOrder.fields.location_placeholder')\r\n\t\t\t\t}\r\n\t\t\t\tfieldArrayName={fieldArrayName}\r\n\t\t\t\tformControl={controlToUse}\r\n\t\t\t\tcustomeFilter={locationFilter}\r\n\t\t\t\t{...dynamicSearchSelectProps}\r\n\t\t\t/>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nLocationSearchSelect.defaultProps = {\r\n\tlocationFieldName: 'location_id',\r\n\tresetValue: undefined,\r\n\tfilterKey: '&company_id.in'\r\n};\r\n\r\nexport default LocationSearchSelect","// import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport { RadioGroup } from \"@mui/material\";\nimport Typography from \"../../typography/typography\";\nimport { memo } from \"react\";\n\nconst FormSwitcher = memo(({\n children,\n isFormSwitcher,\n control,\n fieldArrayName,\n formSwitcherName,\n label,\n resetForm,\n}: any) => {\n if (isFormSwitcher) {\n return (\n <Controller\n control={control}\n name={`${fieldArrayName}.${formSwitcherName}`}\n render={({ field }) => (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"24px\",\n }}\n >\n {label ? (\n <Typography\n type=\"s5\"\n style={{ fontWeight: 500 }}\n color={\"theme.secondary.900\"}\n >\n {label}\n </Typography>\n ) : null}\n <RadioGroup\n value={field.value}\n onChange={(e) => {\n resetForm(e.target.value)\n field.onChange(e.target.value)\n }}\n row={true}\n >\n {children}\n </RadioGroup>\n </div>\n )}\n />\n );\n }\n return null;\n});\n\nexport { FormSwitcher };\nexport default FormSwitcher;\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { memo, useMemo, useCallback } from 'react';\r\nimport { Grid, Divider, FormControlLabel, Radio } from '@mui/material';\r\nimport DynamicInput from '../form-builder/form-builder-element/text';\r\nimport DynamicDate from '../form-builder/form-builder-element/date';\r\nimport DynamicTime from '../form-builder/form-builder-element/time';\r\nimport DynamicPhone from '../form-builder/form-builder-element/phone';\r\nimport DynamicSearchSelect from '../form-builder/form-builder-element/dynamic-select';\r\nimport DynamicMedia from '../form-builder/form-builder-element/media';\r\nimport DynamicInfo from '../form-builder/form-builder-element/info';\r\nimport DynamicToggleButton from '../form-builder/form-builder-element/toggle-button';\r\nimport DynamicCheckBox from '../form-builder/form-builder-element/checkbox';\r\nimport DynamicTable from '../form-builder/form-builder-element/table';\r\nimport DynamicRadioButton from '../form-builder/form-builder-element/radio-button';\r\nimport DynamicTagsInput from '../form-builder/form-builder-element/dynamic-tags-input';\r\nimport DynamicCurrency from '../form-builder/form-builder-element/dynamic-currency-input';\r\nimport DynamicInputSelect from '../form-builder/form-builder-element/dynamic-input-select';\r\nimport ChipGenerator from '../../chip-generator/chip-generator';\r\nimport { LocationSearchSelect } from '../../location-select';\r\nimport FormSwitcher from './form-switcher';\r\nimport Typography from '../../typography/typography';\r\nimport Accordion from '../../accordion/accordion';\r\n\r\n// Types for better type safety\r\ninterface Field {\r\n name?: string;\r\n label: string;\r\n field_type: string;\r\n is_fullwidth?: boolean;\r\n custom_width?: number;\r\n is_hidden?: boolean;\r\n is_required?: boolean;\r\n disabled?: boolean;\r\n placeholder?: string;\r\n value?: any;\r\n default_value?: any;\r\n title?: string;\r\n title_position?: string;\r\n table_columns?: any[];\r\n table_rows?: any[];\r\n component?: React.ReactNode;\r\n field_properties?: {\r\n apiType?: string;\r\n customeFilter?: any;\r\n attributes?: any;\r\n disabledIds?: any[];\r\n sortOrder?: string;\r\n maxChips?: number;\r\n allowDuplicates?: boolean;\r\n };\r\n validation?: any;\r\n filterField?: string;\r\n}\r\n\r\ninterface Section {\r\n label?: string;\r\n is_accordion?: boolean;\r\n disabled?: boolean;\r\n form_switcher_label?: string;\r\n}\r\n\r\ninterface FormSectionProps {\r\n section: Section;\r\n index: number;\r\n members?: Field[];\r\n switchForms?: any[];\r\n isFormSwitcher: boolean;\r\n control: any;\r\n fieldArrayName: string;\r\n formSwitcherName: string;\r\n displayAvtar?: boolean;\r\n isButton?: boolean;\r\n currencyOption?: any;\r\n values: any;\r\n onBlur?: (e: any, fieldName?: string) => void;\r\n setValue: (name: string, value: any) => void;\r\n onSelectFooterClick?: (field: Field) => void;\r\n getSelectedData?: (row: any, key: any) => void;\r\n setCurrencyOptions: (options: any) => void;\r\n refreshOptions: any;\r\n handleFieldCleanUp: (forms: any[]) => void;\r\n handleSetCountryCodeField: (country: any, field: Field, fieldArrayName: string, values: any) => void;\r\n handleTableAddClick: (field: Field) => void;\r\n onTableCellChange?: (data: any) => void;\r\n // setDetailsData: (data: any) => void;\r\n t: (key: string) => string;\r\n images: any;\r\n}\r\n\r\n// Memoized field component to prevent unnecessary re-renders\r\nconst MemoizedField = memo(({\r\n field,\r\n fieldName,\r\n sectionLabel,\r\n index,\r\n ...props\r\n}: {\r\n field: Field;\r\n fieldName: string;\r\n sectionLabel?: string;\r\n index: number;\r\n [key: string]: any;\r\n}) => {\r\n const gridSize = useMemo(() =>\r\n field.is_fullwidth ? 12 : (field.custom_width ?? 6),\r\n [field.is_fullwidth, field.custom_width]\r\n );\r\n\r\n const fieldKey = useMemo(() =>\r\n `${sectionLabel}-${fieldName}-${index}`,\r\n [sectionLabel, fieldName, index]\r\n );\r\n\r\n const commonProps = useMemo(() => ({\r\n ...field,\r\n key: fieldKey,\r\n name: fieldName,\r\n position: index,\r\n formControl: props.control,\r\n fieldArrayName: props.fieldArrayName,\r\n required: field.is_required,\r\n label: props.t(field.label),\r\n placeholder: props.t(field.placeholder),\r\n defaultValue: field.value || field.default_value,\r\n disabled: field.disabled\r\n }), [field, fieldName, index, fieldKey, props.control, props.fieldArrayName, props.t]);\r\n\r\n const handleBlur = useCallback((e: any) => {\r\n if (props.onBlur && typeof props.onBlur === 'function') {\r\n props.onBlur(e, fieldName);\r\n }\r\n }, [props.onBlur, fieldName]);\r\n\r\n const endIcon = useMemo(() => {\r\n const iconMap: Record<string, string> = {\r\n email: props.images.sms,\r\n url: props.images.url,\r\n currency: props.images.dollar,\r\n geoLocation: props.images.location\r\n };\r\n\r\n const iconSrc = iconMap[field.field_type];\r\n return iconSrc ? <img src={iconSrc} alt={field.field_type} /> : null;\r\n }, [field.field_type, props.images]);\r\n\r\n const relationLabel = useMemo(() => (\r\n field.field_type === \"relation\" ? (\r\n <span className=\"formSection--Relation\">\r\n {props.t(field.label)}\r\n <img src={props.images.relation} alt=\"relation\" />\r\n </span>\r\n ) : props.t(field.label)\r\n ), [field.field_type, field.label, props.t, props.images.relation]);\r\n\r\n // Render field based on type\r\n const renderField = () => {\r\n switch (field.field_type) {\r\n case \"text\":\r\n case \"email\":\r\n case \"url\":\r\n case \"currency\":\r\n case \"number\":\r\n case \"geoLocation\":\r\n case \"relation\":\r\n return (\r\n <DynamicInput\r\n {...commonProps}\r\n key={commonProps.key}\r\n label={relationLabel}\r\n onBlur={handleBlur}\r\n type={field.field_type}\r\n endIcon={endIcon}\r\n disabled={field.disabled || field.field_type === \"relation\"}\r\n />\r\n );\r\n\r\n case \"date\":\r\n return <DynamicDate {...commonProps} key={commonProps.key} />;\r\n\r\n case \"time\":\r\n return <DynamicTime {...commonProps} key={commonProps.key} />;\r\n\r\n case \"phone\":\r\n return (\r\n <DynamicPhone\r\n {...commonProps}\r\n key={commonProps.key}\r\n setCountryCodeField={(country: any) =>\r\n props.handleSetCountryCodeField(country, field, props.fieldArrayName, props.values)\r\n }\r\n />\r\n );\r\n\r\n case \"select\":\r\n return (\r\n <DynamicSearchSelect\r\n {...commonProps}\r\n key={commonProps.key}\r\n apiType={field.field_properties?.apiType}\r\n customeFilter={field.field_properties?.customeFilter}\r\n attributes={field.field_properties?.attributes}\r\n disabledIds={field.field_properties?.disabledIds}\r\n onChipRemove={() => props.setValue(`${props.fieldArrayName}.${fieldName}`, [])}\r\n {\r\n ...(!field?.addType || !field?.field_properties?.addType\r\n ? { onFooterClick: () => props.onSelectFooterClick?.(field) }\r\n : {})\r\n }\r\n handleOptions={props.setCurrencyOptions}\r\n getSelectedData={props.getSelectedData}\r\n refresh={props.refreshOptions}\r\n sortOrder={field.field_properties?.sortOrder}\r\n showCancelButton={field.field_properties?.showCancelButton}\r\n addType={field?.addType || field?.field_properties?.addType}\r\n modalComponentProps={field?.field_properties?.modalComponentProps}\r\n />\r\n );\r\n\r\n case \"file\":\r\n case \"image\":\r\n return <DynamicMedia {...commonProps} key={commonProps.key} />;\r\n\r\n case \"info\":\r\n return <DynamicInfo {...commonProps} key={commonProps.key} />;\r\n\r\n case \"toggleButton\":\r\n return (\r\n <DynamicToggleButton\r\n {...commonProps}\r\n key={commonProps.key}\r\n titlePosition={field.title_position}\r\n title={props.t(field.title)}\r\n />\r\n );\r\n\r\n case \"checkbox\":\r\n return (\r\n <DynamicCheckBox\r\n {...commonProps}\r\n key={commonProps.key}\r\n titlePosition={field.title_position}\r\n title={props.t(field.title)}\r\n />\r\n );\r\n\r\n case \"table\":\r\n return (\r\n <DynamicTable\r\n {...commonProps}\r\n key={commonProps.key}\r\n columns={field.table_columns}\r\n rows={field.table_rows}\r\n onAddClick={() => props.handleTableAddClick(field)}\r\n disableTableAddButton={Boolean(field.disableTableAddButton)}\r\n is_button={props.isButton}\r\n onTableCellChange={props.onTableCellChange}\r\n />\r\n );\r\n\r\n case \"radioButton\":\r\n return (\r\n <DynamicRadioButton\r\n {...commonProps}\r\n key={commonProps.key}\r\n titlePosition={field.title_position}\r\n title={props.t(field.title)}\r\n />\r\n );\r\n\r\n case \"customComponent\":\r\n return field.component;\r\n\r\n case \"tagsInput\":\r\n return (\r\n <DynamicTagsInput\r\n {...commonProps}\r\n key={commonProps.key}\r\n label={relationLabel}\r\n type={field.field_type}\r\n endIcon={endIcon}\r\n />\r\n );\r\n\r\n case \"currency_with_amount\":\r\n return (\r\n <DynamicCurrency\r\n {...commonProps}\r\n key={commonProps.key}\r\n currencyType={props.currencyOption}\r\n />\r\n );\r\n\r\n case \"select_with_input\":\r\n return (\r\n <DynamicInputSelect\r\n {...commonProps}\r\n currencyType={props.currencyOption}\r\n />\r\n );\r\n\r\n case \"chipInput\":\r\n return (\r\n <ChipGenerator\r\n {...commonProps}\r\n key={commonProps.key}\r\n maxChips={field.field_properties?.maxChips}\r\n allowDuplicates={field.field_properties?.allowDuplicates}\r\n validation={field.validation}\r\n endIcon={endIcon}\r\n onChipAdd={(chip: any) => console.log('Chip added:', chip)}\r\n onChipRemove={(chip: any, index: number) => console.log('Chip removed:', chip, 'at index:', index)}\r\n />\r\n );\r\n\r\n case \"location_select\":\r\n return (\r\n <LocationSearchSelect\r\n fieldArrayName={props.fieldArrayName}\r\n filterField={field.filterField}\r\n getSelectedData={(row: any[]) => props.getSelectedData(row)}\r\n locationFieldName={field.name}\r\n addType=\"location\"\r\n enable_footer={true}\r\n />\r\n );\r\n\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n // For table fields, use full width\r\n if (field.field_type === \"table\" || field.field_type === \"customComponent\") {\r\n return (\r\n <Grid item xs={12}>\r\n {renderField()}\r\n </Grid>\r\n );\r\n }\r\n\r\n return (\r\n <Grid item xs={gridSize}>\r\n {renderField()}\r\n </Grid>\r\n );\r\n});\r\n\r\nMemoizedField.displayName = 'MemoizedField';\r\n\r\n// Memoized FormSwitcher component\r\nconst MemoizedFormSwitcher = memo(({\r\n section,\r\n switchForms,\r\n isFormSwitcher,\r\n control,\r\n fieldArrayName,\r\n formSwitcherName,\r\n handleFieldCleanUp,\r\n t\r\n}: {\r\n section: Section;\r\n switchForms?: any[];\r\n isFormSwitcher: boolean;\r\n control: any;\r\n fieldArrayName: string;\r\n formSwitcherName: string;\r\n handleFieldCleanUp: (forms: any[]) => void;\r\n t: (key: string) => string;\r\n}) => {\r\n const resetForm = useCallback(() => {\r\n handleFieldCleanUp(switchForms || []);\r\n }, [handleFieldCleanUp, switchForms]);\r\n\r\n if (!isFormSwitcher || !switchForms?.length) return null;\r\n\r\n return (\r\n <FormSwitcher\r\n {...section}\r\n isFormSwitcher={isFormSwitcher}\r\n control={control}\r\n fieldArrayName={fieldArrayName}\r\n formSwitcherName={formSwitcherName}\r\n label={t(section.form_switcher_label || '')}\r\n resetForm={resetForm}\r\n >\r\n {switchForms.map((forms: any) => (\r\n <FormControlLabel\r\n key={forms.id}\r\n value={forms.value || forms.name}\r\n control={<Radio />}\r\n slotProps={{ typography: { variant: \"body2\" } }}\r\n label={t(forms.name)}\r\n disabled={Boolean(section.disabled)}\r\n />\r\n ))}\r\n </FormSwitcher>\r\n );\r\n});\r\n\r\nMemoizedFormSwitcher.displayName = 'MemoizedFormSwitcher';\r\n\r\n// Main component\r\nconst FormSection = memo<FormSectionProps>(({\r\n section,\r\n index,\r\n members,\r\n switchForms,\r\n isFormSwitcher,\r\n control,\r\n fieldArrayName,\r\n formSwitcherName,\r\n displayAvtar,\r\n isButton,\r\n currencyOption,\r\n values,\r\n onBlur,\r\n setValue,\r\n onSelectFooterClick,\r\n getSelectedData,\r\n setCurrencyOptions,\r\n refreshOptions,\r\n handleFieldCleanUp,\r\n handleSetCountryCodeField,\r\n handleTableAddClick,\r\n onTableCellChange,\r\n setDetailsData,\r\n t,\r\n images\r\n}) => {\r\n // Memoize visible members to prevent recalculation\r\n const visibleMembers = useMemo(() =>\r\n members?.filter(f => !f.is_hidden) || [],\r\n [members]\r\n );\r\n\r\n // Memoize field names to prevent recalculation\r\n const fieldsWithNames = useMemo(() =>\r\n visibleMembers.map(field => ({\r\n ...field,\r\n fieldName: field.name || field.label.toLowerCase().split(\" \").join(\"_\")\r\n })),\r\n [visibleMembers]\r\n );\r\n\r\n // Memoize section header\r\n const sectionHeader = useMemo(() => {\r\n if (!section.label) return null;\r\n\r\n return (\r\n <div style={{ minHeight: \"16px\" }}>\r\n {index !== 0 && <Divider className='formParser--Section--SectionDivider' />}\r\n <Typography\r\n type=\"s3\"\r\n weight=\"medium\"\r\n mb={2}\r\n mt={4}\r\n color=\"theme.secondary.1000\"\r\n className='formParser--Section--SectionTitle'\r\n >\r\n {t(section.label)}\r\n </Typography>\r\n </div>\r\n );\r\n }, [section.label, index, t]);\r\n\r\n // Avatar component\r\n const avatarDisplay = useMemo(() =>\r\n displayAvtar ? <div className='avtarDisplay'>ERP</div> : null,\r\n [displayAvtar]\r\n );\r\n\r\n // Common props for field rendering\r\n const fieldProps = useMemo(() => ({\r\n control,\r\n fieldArrayName,\r\n isButton,\r\n currencyOption,\r\n values,\r\n onBlur,\r\n setValue,\r\n onSelectFooterClick,\r\n getSelectedData,\r\n setCurrencyOptions,\r\n refreshOptions,\r\n handleSetCountryCodeField,\r\n handleTableAddClick,\r\n onTableCellChange,\r\n setDetailsData,\r\n t,\r\n images\r\n }), [\r\n control, fieldArrayName, isButton, currencyOption, values,\r\n onBlur, setValue, onSelectFooterClick, getSelectedData,\r\n setCurrencyOptions, refreshOptions, handleSetCountryCodeField,\r\n handleTableAddClick, onTableCellChange, setDetailsData, t, images\r\n ]);\r\n\r\n if (section.is_accordion) {\r\n return (\r\n <section key={index} className='formParser--Section'>\r\n <div style={{ marginTop: '20px' }}>\r\n <Accordion title={t(section.label || '')}>\r\n <div className=\"formParser--Grid formParser--Accordion\">\r\n <MemoizedFormSwitcher\r\n section={section}\r\n switchForms={switchForms}\r\n isFormSwitcher={isFormSwitcher}\r\n control={control}\r\n fieldArrayName={fieldArrayName}\r\n formSwitcherName={formSwitcherName}\r\n handleFieldCleanUp={handleFieldCleanUp}\r\n t={t}\r\n />\r\n {fieldsWithNames.map((field, fieldIndex) => (\r\n <MemoizedField\r\n key={`${section.label}-${field.fieldName}-${fieldIndex}`}\r\n field={field}\r\n fieldName={field.fieldName}\r\n sectionLabel={section.label}\r\n index={fieldIndex}\r\n {...fieldProps}\r\n />\r\n ))}\r\n </div>\r\n </Accordion>\r\n </div>\r\n </section>\r\n );\r\n }\r\n\r\n return (\r\n <section key={index} className='formParser--Section'>\r\n {sectionHeader}\r\n\r\n <MemoizedFormSwitcher\r\n section={section}\r\n switchForms={switchForms}\r\n isFormSwitcher={isFormSwitcher}\r\n control={control}\r\n fieldArrayName={fieldArrayName}\r\n formSwitcherName={formSwitcherName}\r\n handleFieldCleanUp={handleFieldCleanUp}\r\n t={t}\r\n />\r\n\r\n <Grid container spacing={2}>\r\n {avatarDisplay}\r\n {fieldsWithNames.map((field, fieldIndex) => (\r\n <MemoizedField\r\n key={`${section.label}-${field.fieldName}-${fieldIndex}`}\r\n field={field}\r\n fieldName={field.fieldName}\r\n sectionLabel={section.label}\r\n index={fieldIndex}\r\n {...fieldProps}\r\n />\r\n ))}\r\n </Grid>\r\n </section>\r\n );\r\n});\r\n\r\nFormSection.displayName = 'FormSection';\r\n\r\nexport { FormSection };\r\nexport default FormSection;","import { FormProvider, useForm, useWatch } from \"react-hook-form\";\r\n// import { useLocation } from \"react-router-dom\";\r\nimport { Box } from \"@mui/material\";\r\n\r\n// import FullScreenLayout from \"../../../layout/fullScreen/fullScreen\";\r\n\r\nimport { useState, useEffect, useCallback } from \"react\";\r\nimport images from \"../../../assets/images\";\r\nimport \"./form-parser.scss\";\r\nimport TabBar from \"../../tabs/tabs\";\r\nimport formBuilderDeConversion from \"../../../utils/form-builder-deconversion\";\r\nimport { yupResolver } from \"@hookform/resolvers/yup\";\r\nimport * as yup from \"yup\";\r\nimport dayjs from \"dayjs\";\r\nimport { SECTION_TYPES } from '../../../utils/constant';\r\nimport { CountryData } from 'react-phone-input-2';\r\nimport Alert from '../../alert/alert';\r\nimport _ from \"lodash\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport FormSection from \"./form-section\";\r\nconst validationReducer = (validations: any, validation: any, field: any, translationFn: any) => {\r\n switch (validation.type) {\r\n case \"required\":\r\n return (field.field_properties?.is_multiselect ? validations.required(translationFn(validation.msg_en)).min(1, translationFn(validation.msg_en)) : validation.value\r\n ? validations.required(translationFn(validation.msg_en)).test('not-empty', translationFn(validation.msg_en), value => typeof value === 'string' ? value && value?.trim()?.length > 0 : true) : validations.nullable());\r\n case \"min_length\":\r\n return validations.min(validation.value, translationFn(validation.msg_en));\r\n case \"max_length\":\r\n return validations.max(validation.value, translationFn(validation.msg_en));\r\n case \"min_val\":\r\n return validations.min(validation.value, translationFn(validation.msg_en));\r\n case \"max_val\":\r\n return validations.max(validation.value, translationFn(validation.msg_en));\r\n case \"postive_number\":\r\n return validations.test('is-positive-number', translationFn(validation.msg_en), (value) => value >= 0)\r\n case 'email':\r\n return validations.email(validation.msg_en);\r\n case \"no_special_char\":\r\n return validations.test(\r\n \"no-special-char\",\r\n translationFn(validation.msg_en),\r\n value =>\r\n typeof value === \"string\"\r\n ? /^[^.\\-\\W_]+$/u.test(value) // allow letters/digits only\r\n : true\r\n );\r\n case \"when\":\r\n return validations.when(validation.relation, {\r\n is: (val: any) => val === validation.values,\r\n then: () => validation?.thenValidations?.reduce(\r\n (validations: any, validation: any) => validationReducer(validations, validation, field, translationFn),\r\n validations\r\n ) || validations,\r\n otherwise: () => validation?.otherWiseValidations?.reduce(\r\n (validations: any, validation: any) => validationReducer(validations, validation, field, translationFn),\r\n validations\r\n ) || validations,\r\n });\r\n // Add more cases for other validation types as needed\r\n default:\r\n return validations;\r\n }\r\n}\r\n\r\nconst FormParser = ({\r\n data,\r\n defaultValues,\r\n handleFormSubmit,\r\n fieldArrayName,\r\n mode,\r\n displayAvtar = false,\r\n onTableAddClick,\r\n handleFormValues,\r\n getFormMethods,\r\n setFields,\r\n onSelectFooterClick,\r\n setActiveTabValue,\r\n activeTab = 0,\r\n recieveTabDataLenght,\r\n recieveIsValidForm,\r\n activeTabs,\r\n onTableCellChange,\r\n containerStyles = undefined,\r\n isButton = true,\r\n getSelectedData,\r\n refreshOptions = false,\r\n onBlur,\r\n}: any) => {\r\n\r\n const { t } = useTranslation();\r\n\r\n function convertToNestedObject(dotNotationString: string, field: any, existingObject: any = {}) {\r\n const keys = dotNotationString.split('.');\r\n let currentLevel = existingObject;\r\n\r\n keys.forEach((key, index) => {\r\n if (index === keys.length - 1) {\r\n if (!currentLevel[key]) {\r\n const fieldValidations = field.validation.reduce(\r\n (validations: any, validation: any) => {\r\n switch (validation.type) {\r\n case \"required\":\r\n return validation.value\r\n ? validations.required(t(validation.msg_en)).test('not-empty', t(validation.msg_en), value => typeof value === 'string' ? value && value?.trim()?.length > 0 : true)\r\n : (field.field_properties?.is_multiselect ? validations.min(1, t(validation.msg_en)) : validations.nullable());\r\n case \"min_length\":\r\n return validations.min(validation.value, t(validation.msg_en));\r\n case \"max_length\":\r\n return validations.max(validation.value, t(validation.msg_en));\r\n case \"min_val\":\r\n return validations.min(validation.value, t(validation.msg_en));\r\n case \"max_val\":\r\n return validations.max(validation.value, t(validation.msg_en));\r\n // Add more cases for other validation types as needed\r\n default:\r\n return validations;\r\n }\r\n },\r\n getValidationType(field)\r\n );\r\n currentLevel[key] = fieldValidations;\r\n } else if (typeof currentLevel[key] !== 'object' || Array.isArray(currentLevel[key])) {\r\n throw new Error(`Conflict: The key \"${key}\" already exists and is not an object.`);\r\n }\r\n } else {\r\n if (!currentLevel[key]) {\r\n currentLevel[key] = {};\r\n } else if (typeof currentLevel[key] !== 'object' || Array.isArray(currentLevel[key])) {\r\n throw new Error(`Conflict: The key \"${key}\" already exists and is not an object.`);\r\n }\r\n currentLevel = currentLevel[key];\r\n\r\n }\r\n });\r\n\r\n return existingObject;\r\n }\r\n\r\n const getValidationType = (field: any) => {\r\n switch (field.field_type) {\r\n case 'select':\r\n return field.field_properties?.is_multiselect\r\n ? yup.array()\r\n : yup.string()\r\n\r\n case 'number':\r\n case 'currency':\r\n return yup.number().transform((value, originalValue) => (originalValue === '' ? undefined : value)).typeError('Please enter valid number').nullable()\r\n case 'currency_with_amount':\r\n return yup.number()\r\n case 'url':\r\n return yup.string().matches(/^(https?:\\/\\/)?((([a-zA-Z0-9_-]+\\.)+[a-zA-Z]{2,})|localhost)(:\\d{2,5})?(\\/[a-zA-Z0-9#_-]+\\/?)*(\\?[a-zA-Z0-9&=_-]+)?(#\\S+)?$/, { excludeEmptyString: true, message: \"Please enter valid URL.\" })\r\n\r\n default:\r\n return yup.string()\r\n }\r\n }\r\n\r\n const convertNestedFieldSchemaObject = (nestedFields: any) => {\r\n const schema: any = {};\r\n\r\n for (const key in nestedFields) {\r\n if (typeof nestedFields[key] === 'object' && !Object.hasOwn(nestedFields[key], 'tests')) {\r\n schema[key] = yup.object().shape(convertNestedFieldSchemaObject(nestedFields[key]));\r\n } else {\r\n schema[key] = nestedFields[key]\r\n }\r\n }\r\n return schema;\r\n }\r\n\r\n\r\n const generateValidationSchema = (data: any[]) => {\r\n const yupSchemaObject: any = {};\r\n let nestedFielvalidations: any = {},\r\n nestedYupSchemaObj: any = {};\r\n\r\n data &&\r\n data?.forEach((field: any) => {\r\n let fieldValidations: any;\r\n if (field.validation && field.validation.length > 0) {\r\n if (field.name?.includes(\".\")) {\r\n nestedFielvalidations = convertToNestedObject(field.name, field, nestedFielvalidations);\r\n } else {\r\n fieldValidations = field.validation.reduce((validations: any, validation: any) => validationReducer(validations, validation, field, t),\r\n getValidationType(field)\r\n );\r\n yupSchemaObject[field.name] = fieldValidations;\r\n }\r\n\r\n nestedYupSchemaObj = convertNestedFieldSchemaObject(nestedFielvalidations)\r\n }\r\n\r\n });\r\n\r\n return yup.object().shape({\r\n [fieldArrayName]: yup.object().shape({ ...yupSchemaObject, ...nestedYupSchemaObj }),\r\n });\r\n };\r\n\r\n const {\r\n control,\r\n handleSubmit,\r\n formState: { errors },\r\n setValue,\r\n reset,\r\n getValues,\r\n watch,\r\n resetField,\r\n unregister,\r\n trigger,\r\n getFieldState,\r\n ...rest\r\n } = useForm({\r\n ...(defaultValues && typeof defaultValues === 'object' ? { defaultValues } : {}),\r\n resolver: yupResolver(generateValidationSchema(data)),\r\n mode: \"all\",\r\n });\r\n\r\n const watchedValues = useWatch({\r\n control,\r\n name: fieldArrayName,\r\n });\r\n\r\n // Local States\r\n const [schema, setSchema] = useState<[]>([]);\r\n const [tabsData, setTabsData] = useState<any[]>([]);\r\n const [errorAlert, setErrorAlert] = useState<boolean>(false);\r\n const [currencyOption, setCurrencyOptions] = useState<string>('');\r\n const [isTabFormValid, setTabFormValid] = useState<boolean>(false);\r\n const [validateRequiredFields, setValidRequiredFields] = useState<any[]>([]);\r\n\r\n // Local Functions\r\n const handleTableAddClick = (tableName?: string) => {\r\n onTableAddClick?.(tableName)\r\n }\r\n\r\n const getSectionData = useCallback((section: any) => {\r\n const sectionMembers = section?.members?.map((ele: any) => ele) || []\r\n const values = getValues(fieldArrayName)\r\n const isFormSwitcher = section.section_type === SECTION_TYPES.FORM_SWITCH_SECTION\r\n const formSwitcherName =\r\n section?.form_switcher_name ||\r\n section?.form_switcher_label?.toLowerCase().split(\" \").join(\"_\");\r\n const switchForms = section?.switcher_forms?.map((form: any) => ({\r\n ...form,\r\n formMembers: sectionMembers.filter(\r\n (member: any) => member.section_form_id === form.id,\r\n )\r\n }));\r\n const selectedSectionForm =\r\n values?.[formSwitcherName] ?\r\n switchForms.find((ele: any) =>\r\n ele.name === values?.[formSwitcherName]\r\n ) : {};\r\n\r\n // When form switcher is active, include:\r\n // 1. Common fields (fields without section_form_id or is_form_switcher_section)\r\n // 2. Form-specific fields (fields with section_form_id matching the selected form)\r\n let members;\r\n if (isFormSwitcher) {\r\n const commonFields = sectionMembers.filter(\r\n (member: any) => !member.section_form_id && !member.is_form_switcher_section\r\n );\r\n const formSpecificFields = selectedSectionForm?.formMembers || [];\r\n members = [...commonFields, ...formSpecificFields];\r\n } else {\r\n members = section?.members;\r\n }\r\n\r\n return {\r\n isFormSwitcher,\r\n formSwitcherName,\r\n switchForms,\r\n selectedSectionForm,\r\n members,\r\n values\r\n }\r\n }, [fieldArrayName, getValues])\r\n\r\n const handleSetCountryCodeField = useCallback((country: CountryData, field: any, fieldArrayName: any, values: any) => {\r\n const oldVal = values?.[fieldArrayName]?.[field?.country_code_field_name]\r\n const newVal = `+${country.dialCode}`\r\n if (\r\n field?.is_country_code_separate &&\r\n field?.country_code_field_name &&\r\n oldVal !== newVal\r\n ) {\r\n setValue(\r\n `${fieldArrayName}.${field?.country_code_field_name}` as never,\r\n newVal as never\r\n )\r\n }\r\n }, [setValue])\r\n\r\n const handleFieldCleanUp = useCallback((switchForms: any) => {\r\n switchForms.forEach((form: any) => {\r\n form?.formMembers.forEach((member: any) => {\r\n const memberName = member?.name || member.label.toLowerCase().split(\" \").join(\"_\")\r\n const v = _.get(defaultValues, `${fieldArrayName}.${memberName}`, null)\r\n const newData = data.map((ele: any) => {\r\n if (member?.section_form_id === ele?.section_form_id) {\r\n delete ele.value\r\n }\r\n return ({\r\n ...ele,\r\n ...(v ? { value: v } : {}),\r\n })\r\n })\r\n if (!v) {\r\n resetField(`${fieldArrayName}.${memberName}` as never)\r\n unregister(`${fieldArrayName}.${memberName}` as never)\r\n }\r\n setFields?.(newData)\r\n })\r\n\r\n })\r\n }, [data, defaultValues, fieldArrayName, resetField, setFields, unregister])\r\n\r\n const createNestedObjectFromDot = useCallback((dotNotationString: string, field: any, existingObject: any = {}) => {\r\n const keys = dotNotationString.split('.');\r\n let currentLevel = existingObject;\r\n\r\n keys.forEach((key, index) => {\r\n if (index === keys.length - 1) {\r\n if (!currentLevel[key]) {\r\n let fieldValue = field.value\r\n if (fieldValue && (field.field_type !== 'image' || field.field_type !== 'file')) {\r\n if (field.field_type === 'date') {\r\n fieldValue = dayjs(fieldValue)\r\n } else if (field.field_type === 'time') {\r\n const [hours, minutes, seconds] = fieldValue.split(\":\").map(Number);\r\n fieldValue = dayjs().set('hour', hours).set('minute', minutes).set('second', seconds).set('millisecond', 0)\r\n } else if (field.name.includes('_id') && !Array.isArray(field?.value)) {\r\n fieldValue = Number(fieldValue)\r\n }\r\n }\r\n currentLevel[key] = fieldValue;\r\n } else if (typeof currentLevel[key] !== 'object' || Array.isArray(currentLevel[key])) {\r\n throw new Error(`Conflict: The key \"${key}\" already exists and is not an object.`);\r\n }\r\n } else {\r\n if (!currentLevel[key]) {\r\n currentLevel[key] = {};\r\n } else if (typeof currentLevel[key] !== 'object' || Array.isArray(currentLevel[key])) {\r\n throw new Error(`Conflict: The key \"${key}\" already exists and is not an object.`);\r\n }\r\n currentLevel = currentLevel[key];\r\n\r\n }\r\n });\r\n\r\n return existingObject;\r\n }, [])\r\n\r\n const removeMatchingKeyValuePairs = useCallback((obj1, obj2) => {\r\n _.forOwn(obj1, (value, key) => {\r\n if (_.has(obj2, key) && _.isEqual(value, obj2[key])) {\r\n delete obj1[key];\r\n }\r\n });\r\n return obj1;\r\n }, [])\r\n\r\n const validateRequiredSwitchFormData = useCallback((switchData: any) => {\r\n const requiredFields: string[] = [];\r\n if (switchData) {\r\n switchData && switchData[0]?.formMembers.forEach((member: any) => {\r\n if (member?.validation && Array.isArray(member?.validation)) {\r\n member?.validation.forEach((validation: any) => {\r\n if (validation?.thenValidations && Array.isArray(validation?.thenValidations)) {\r\n validation?.thenValidations.forEach((thenValidation: any) => {\r\n if (thenValidation?.type === \"required\" && thenValidation?.value === true) {\r\n if (member?.name) {\r\n requiredFields.push(member.name);\r\n }\r\n }\r\n });\r\n } else {\r\n const hasRequiredValidation = member.validation.some(\r\n (validation: any) => validation.type === 'required' && validation.value === true\r\n )\r\n if (hasRequiredValidation) {\r\n requiredFields.push(member.name);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n }\r\n if (requiredFields) {\r\n setValidRequiredFields(_.uniq(requiredFields))\r\n }\r\n\r\n }, [])\r\n\r\n const isEmpty = useCallback((value: any): boolean => {\r\n return (\r\n value === null ||\r\n value === undefined ||\r\n (Array.isArray(value) && value.length === 0) ||\r\n (typeof value === 'object' && Object.keys(value).length === 0)\r\n );\r\n }, [])\r\n\r\n const getMissingFields = useCallback((watchedFields: any, validationReqFields: string[]): string[] => {\r\n const missingFields: string[] = [];\r\n\r\n validationReqFields.forEach((fieldPath) => {\r\n const keys = fieldPath.split(\".\");\r\n let currentLevel = watchedFields;\r\n\r\n for (let i = 0; i < keys.length; i++) {\r\n const key = keys[i];\r\n\r\n if (!currentLevel?.[key] && currentLevel?.[key] !== 0) {\r\n // If any key in the path is missing, mark the field as missing\r\n missingFields.push(fieldPath);\r\n return;\r\n }\r\n\r\n // Move deeper into the object\r\n currentLevel = currentLevel[key];\r\n }\r\n\r\n // After navigating the full path, check if the final value is empty\r\n if (isEmpty(currentLevel)) {\r\n missingFields.push(fieldPath);\r\n }\r\n });\r\n\r\n\r\n return missingFields;\r\n }, [isEmpty])\r\n\r\n // Use Effects\r\n useEffect(() => {\r\n if (recieveTabDataLenght) {\r\n recieveTabDataLenght(tabsData.length)\r\n }\r\n }, [recieveTabDataLenght, tabsData])\r\n\r\n useEffect(() => {\r\n const handleMessage = (event: MessageEvent) => {\r\n if (event.origin !== window.origin) {\r\n return;\r\n }\r\n const { state } = event.data;\r\n\r\n if (state?.length) {\r\n const data: any = formBuilderDeConversion(state);\r\n\r\n if (data.tab) {\r\n setTabsData(data.tab);\r\n } else if (data.section) {\r\n setSchema(data.section);\r\n }\r\n }\r\n };\r\n\r\n window.addEventListener(\"message\", handleMessage);\r\n\r\n return () => {\r\n window.removeEventListener(\"message\", handleMessage);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (data) {\r\n const formData = formBuilderDeConversion(data)\r\n if (formData?.tab) {\r\n // setSchema([])\r\n setTabsData(formData.tab);\r\n if (activeTab !== undefined) {\r\n setSchema(formData.tab[activeTab]?.data || []);\r\n }\r\n } else {\r\n setSchema(formData.section);\r\n // setTabsData([])\r\n }\r\n const dVals = _.get(defaultValues, fieldArrayName, {})\r\n const wVals = removeMatchingKeyValuePairs((watchedValues || {}), (dVals || {}))\r\n if (mode === 'edit' && !Object.keys(wVals)?.length) {\r\n let formValues: any = {};\r\n let nestedFormValues: any = {};\r\n data.forEach((field: any) => {\r\n const fieldValue = field.value\r\n if (field.name?.includes(\".\")) {\r\n nestedFormValues = createNestedObjectFromDot(field.name, field, nestedFormValues)\r\n } else {\r\n if (fieldValue && (field.field_type !== 'image' || field.field_type !== 'file')) {\r\n if (field?.is_section_field) {\r\n const fieldName = field?.form_switcher_name || field?.form_switcher_label;\r\n formValues = { ...formValues, [fieldName]: fieldValue }\r\n } else if (\r\n field?.name &&\r\n ['company_id', 'email_ids'].includes(field?.name) &&\r\n ['edit_customer', 'add_customer', 'edit_vendor', 'add_vendor'].includes(fieldArrayName)\r\n ) {\r\n formValues = { ...formValues, [field.name]: fieldValue }\r\n } else if (field.field_type === 'date') {\r\n formValues = { ...formValues, [field.name]: dayjs(fieldValue) }\r\n } else if (field.field_type === 'time') {\r\n const [hours, minutes, seconds] = fieldValue.split(\":\").map(Number);\r\n formValues = { ...formValues, [field.name]: dayjs().set('hour', hours).set('minute', minutes).set('second', seconds).set('millisecond', 0) }\r\n } else if (field.name.includes('_id') && !Array.isArray(field?.value)) {\r\n if (fieldArrayName === \"edit_user\" && field.name === \"role_id\") {\r\n formValues = { ...formValues, [field.name]: fieldValue }\r\n } else {\r\n formValues = { ...formValues, [field.name]: Number(fieldValue) }\r\n }\r\n } else {\r\n formValues = { ...formValues, [field.name]: fieldValue }\r\n }\r\n }\r\n }\r\n })\r\n const finalFormValues = { ...formValues, ...nestedFormValues }\r\n reset({ [fieldArrayName]: { ...finalFormValues } })\r\n }\r\n getFormMethods?.({ control, handleSubmit, setValue, reset, resetField, getValues, unregister, trigger, watch, getFieldState, errors, ...rest })\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [data])\r\n\r\n useEffect(() => {\r\n if (activeTab?.toString()) {\r\n if (tabsData && tabsData[activeTab]) {\r\n setSchema(tabsData[activeTab].data);\r\n }\r\n }\r\n }, [activeTab, tabsData]);\r\n\r\n useEffect(() => {\r\n if (watchedValues && handleFormValues) {\r\n handleFormValues?.(watchedValues);\r\n }\r\n }, [handleFormValues, watchedValues])\r\n\r\n useEffect(() => {\r\n if (errors?.[fieldArrayName]) {\r\n setErrorAlert(true)\r\n } else {\r\n setErrorAlert(false)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [fieldArrayName, JSON.stringify(errors)])\r\n\r\n useEffect(() => {\r\n const validatedFields: string[] = [];\r\n if (activeTab != undefined) {\r\n tabsData[activeTab]?.data.forEach((section: any) => {\r\n\r\n if (section.members && Array.isArray(section.members)) {\r\n\r\n section.members.forEach((member: any) => {\r\n if (member.validation && Array.isArray(member.validation)) {\r\n const hasRequiredValidation = member.validation.some(\r\n (validation: any) => validation.type === 'required' && validation.value === true\r\n )\r\n if (hasRequiredValidation) {\r\n // validatedFields.push(fieldArrayName + '.' + member.name);\r\n validatedFields.push(member.name);\r\n }\r\n }\r\n });\r\n }\r\n })\r\n setValidRequiredFields(validatedFields);\r\n }\r\n }, [tabsData, activeTab]);\r\n\r\n useEffect(() => {\r\n if (watchedValues?.account_type) {\r\n\r\n const switchFormData: any[] = [];\r\n schema && schema.forEach((section: any) => {\r\n const sectionMembers = schema && section?.members?.map((ele: any) => ele) || [];\r\n\r\n const switchForms = schema && section?.switcher_forms?.map((form: any) => ({\r\n ...form,\r\n formMembers: sectionMembers.filter(\r\n (member: any) => member.section_form_id === form.id,\r\n ),\r\n }));\r\n if (switchForms) {\r\n switchFormData.push(switchForms)\r\n }\r\n })\r\n\r\n const selectValue = watchedValues?.account_type || \"Individual\";\r\n const switchData = switchFormData && Array.isArray(switchFormData[0])\r\n ? switchFormData[0].filter((form: any) => form.name === selectValue)\r\n : [];\r\n\r\n if (switchData) {\r\n validateRequiredSwitchFormData(switchData)\r\n }\r\n\r\n }\r\n }, [watchedValues?.account_type, schema, validateRequiredSwitchFormData]);\r\n\r\n useEffect(() => {\r\n if (validateRequiredFields.length > 0) {\r\n const updatedRequiredFields = getMissingFields(watchedValues, validateRequiredFields)\r\n\r\n // const updatedRequiredFields = validateRequiredFields.filter((fieldPath) => {\r\n // const watchedValue = watchedFields[fieldPath] ;\r\n // return watchedValue === undefined || watchedValue === null || watchedValue === 0 ;\r\n // });\r\n\r\n updatedRequiredFields.length === 0 ? setTabFormValid(true) : setTabFormValid(false);\r\n } else {\r\n setTabFormValid(true)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [validateRequiredFields, watchedValues, activeTab])\r\n\r\n useEffect(() => {\r\n if (recieveIsValidForm) {\r\n recieveIsValidForm(isTabFormValid)\r\n }\r\n }, [recieveIsValidForm, isTabFormValid])\r\n\r\n\r\n return (\r\n // <FullScreenLayout>\r\n <Box sx={{ width: \"100%\", padding: \"2rem\", ...containerStyles }}>\r\n <FormProvider {...{ control, handleSubmit, setValue, reset, resetField, getValues, unregister, trigger, watch, errors, ...rest }}>\r\n <form id={fieldArrayName} name={fieldArrayName} onSubmit={handleSubmit(handleFormSubmit)}>\r\n {Boolean(tabsData?.length) && (\r\n <>\r\n {errorAlert &&\r\n <Alert severity='error' onClose={() => setErrorAlert(false)}>\r\n Please fill all the required fields.\r\n </Alert>\r\n }\r\n <TabBar\r\n tabs={tabsData}\r\n activeTabs={activeTabs}\r\n activeValue={activeTab}\r\n setActiveValue={setActiveTabValue}\r\n isFormTabValid={isTabFormValid}\r\n />\r\n </>\r\n )}\r\n {schema &&\r\n schema.map((section: any, index: number) => {\r\n const {\r\n isFormSwitcher,\r\n formSwitcherName,\r\n switchForms,\r\n members,\r\n values,\r\n } = getSectionData(section)\r\n\r\n return (\r\n <FormSection\r\n section={section}\r\n index={index}\r\n members={members}\r\n switchForms={switchForms}\r\n isFormSwitcher={isFormSwitcher}\r\n control={control}\r\n fieldArrayName={fieldArrayName}\r\n formSwitcherName={formSwitcherName}\r\n displayAvtar={displayAvtar}\r\n isButton={isButton}\r\n currencyOption={currencyOption}\r\n values={values}\r\n onBlur={onBlur}\r\n setValue={setValue}\r\n onSelectFooterClick={onSelectFooterClick}\r\n getSelectedData={getSelectedData}\r\n setCurrencyOptions={setCurrencyOptions}\r\n refreshOptions={refreshOptions}\r\n handleFieldCleanUp={handleFieldCleanUp}\r\n handleSetCountryCodeField={handleSetCountryCodeField}\r\n handleTableAddClick={handleTableAddClick}\r\n onTableCellChange={onTableCellChange}\r\n // setDetailsData={setDetailsData}\r\n t={t}\r\n images={images}\r\n />\r\n );\r\n })}\r\n </form>\r\n </FormProvider>\r\n </Box>\r\n // </FullScreenLayout>\r\n );\r\n};\r\n\r\nexport default FormParser;","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport React, { useMemo } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport * as Yup from 'yup';\r\nimport {\r\n Box,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n Grid,\r\n IconButton\r\n} from '@mui/material';\r\nimport Close from '@mui/icons-material/Close';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport Modal from './modal/modal';\r\nimport Typography from './typography/typography';\r\nimport Button from './button/button';\r\nimport ModalLoader from './loaders/modal-loader';\r\nimport { DynamicInput, DynamicSearchSelect, IModalComponentProps } from './form-control';\r\n\r\ninterface IFormValues {\r\n team: {\r\n name: string;\r\n department_id: string | null;\r\n team_lead_id: string | null;\r\n member_ids: string[] | null;\r\n description: string;\r\n };\r\n}\r\n\r\nconst teamValidationSchema = Yup.object().shape({\r\n team: Yup.object().shape({\r\n name: Yup.string().required('Team Name is required'),\r\n department_id: Yup.string().nullable(),\r\n team_lead_id: Yup.string().nullable().required('Team Lead is required'),\r\n member_ids: Yup.array().nullable(),\r\n description: Yup.string(),\r\n })\r\n});\r\n\r\nconst DEFAULT_VALUES = {\r\n team: {\r\n name: '',\r\n department_id: null,\r\n team_lead_id: null,\r\n member_ids: null,\r\n description: '',\r\n }\r\n};\r\n\r\nexport const TeamAddModal: React.FC<IModalComponentProps> = ({\r\n isOpen,\r\n setIsOpen,\r\n onSave,\r\n isLoading,\r\n modalProps,\r\n}) => {\r\n const { t } = useTranslation();\r\n\r\n const { control, handleSubmit, reset, watch } = useForm<IFormValues>({\r\n mode: 'all',\r\n resolver: yupResolver(teamValidationSchema),\r\n defaultValues: DEFAULT_VALUES\r\n });\r\n\r\n const selectedDepartmentId = watch('team.department_id');\r\n const selectedTeamLeadId = watch('team.team_lead_id');\r\n\r\n const handleModalClose = () => {\r\n reset(DEFAULT_VALUES);\r\n setIsOpen();\r\n };\r\n\r\n const onSubmit = async (values: IFormValues) => {\r\n await onSave(values);\r\n handleModalClose();\r\n };\r\n\r\n // Memoize filters to prevent unnecessary re-renders of DynamicSearchSelect\r\n const leadFilter = useMemo(() => ({\r\n '&department_id.eq': selectedDepartmentId || 0\r\n }), [selectedDepartmentId]);\r\n\r\n const membersFilter = useMemo(() => ({\r\n '&department_id.eq': selectedDepartmentId || 0,\r\n ...(selectedTeamLeadId ? { '&id.ne': selectedTeamLeadId } : {})\r\n }), [selectedDepartmentId, selectedTeamLeadId]);\r\n\r\n return (\r\n <Modal\r\n open={isOpen}\r\n onClose={handleModalClose}\r\n maxWidth='sm'\r\n fullWidth\r\n {...modalProps}\r\n >\r\n <form onSubmit={handleSubmit(onSubmit)}>\r\n {isLoading && <ModalLoader />}\r\n <DialogTitle className='brandAddModal--DialogTitle'>\r\n <Typography type='s3' color='inherit' weight='medium'>\r\n {t('hrms.organization_structure.teamModal.title', 'Add Team')}\r\n </Typography>\r\n <IconButton onClick={handleModalClose}>\r\n <Close fontSize='small' />\r\n </IconButton>\r\n </DialogTitle>\r\n <DialogContent className='brandAddModal--DialogContents'>\r\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\r\n {/* Team Name - Required */}\r\n <Grid item sm={12}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t('hrms.organization_structure.teamModal.name_label', 'Team Name')}\r\n name='name'\r\n fieldArrayName='team'\r\n placeholder={t('hrms.organization_structure.teamModal.name_placeholder', 'Enter Team Name')}\r\n required\r\n />\r\n </Grid>\r\n\r\n {/* Department - Optional */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t('hrms.organization_structure.teamModal.department_label', 'Department')}\r\n name='department_id'\r\n placeholder={t('hrms.organization_structure.teamModal.department_placeholder', 'Select Department')}\r\n fieldArrayName='team'\r\n formControl={control as any}\r\n apiType='department'\r\n required={false}\r\n options={[]}\r\n />\r\n </Grid>\r\n\r\n {/* Team Lead - Required */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t('hrms.organization_structure.teamModal.team_lead_label', 'Team Lead')}\r\n name='team_lead_id'\r\n placeholder={t('hrms.organization_structure.teamModal.team_lead_placeholder', 'Select Team Lead')}\r\n fieldArrayName='team'\r\n formControl={control as any}\r\n apiType='employees'\r\n required\r\n options={[]}\r\n customeFilter={leadFilter}\r\n />\r\n </Grid>\r\n\r\n {/* Members - Optional, multi-select */}\r\n <Grid item sm={12}>\r\n <DynamicSearchSelect\r\n label={t('hrms.organization_structure.teamModal.members_label', 'Members')}\r\n name='member_ids'\r\n placeholder={t('hrms.organization_structure.teamModal.members_placeholder', 'Select Members')}\r\n fieldArrayName='team'\r\n formControl={control as any}\r\n apiType='employees'\r\n required={false}\r\n options={[]}\r\n is_multiselect\r\n customeFilter={membersFilter}\r\n />\r\n </Grid>\r\n\r\n {/* Description - Optional, full width */}\r\n <Grid item sm={12}>\r\n <DynamicInput\r\n type='textarea'\r\n formControl={control}\r\n label={t('hrms.organization_structure.teamModal.description_label', 'Description')}\r\n name='description'\r\n fieldArrayName='team'\r\n placeholder={t('hrms.organization_structure.teamModal.description_placeholder', 'Enter Description')}\r\n is_multiline\r\n rows={3}\r\n />\r\n </Grid>\r\n </Grid>\r\n </DialogContent>\r\n <DialogActions className='brandAddModal--DialogAction'>\r\n <span></span>\r\n <Box display='flex' gap={1.5}>\r\n <Button\r\n className='brandAddModal--DialogAction--WhiteBtn'\r\n onClick={handleModalClose}\r\n >\r\n {t('common.cancel')}\r\n </Button>\r\n <Button type='submit'>\r\n {t('common.save')}\r\n </Button>\r\n </Box>\r\n </DialogActions>\r\n </form>\r\n </Modal>\r\n );\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport React from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport * as Yup from 'yup';\r\nimport {\r\n Box,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n Grid,\r\n IconButton\r\n} from '@mui/material';\r\nimport Close from '@mui/icons-material/Close';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport Modal from './modal/modal';\r\nimport Typography from './typography/typography';\r\nimport Button from './button/button';\r\nimport ModalLoader from './loaders/modal-loader';\r\nimport { DynamicInput, DynamicSearchSelect, DynamicToggleButton, IModalComponentProps } from './form-control';\r\n\r\ninterface IFormValues {\r\n department: {\r\n company_id: string | null;\r\n department_code: string;\r\n name: string;\r\n parent_department_id: string | null;\r\n department_head_id: string | null;\r\n cost_code: string;\r\n status: boolean;\r\n description: string;\r\n };\r\n}\r\n\r\nconst departmentValidationSchema = Yup.object().shape({\r\n department: Yup.object().shape({\r\n company_id: Yup.string().nullable().required('Company is required'),\r\n department_code: Yup.string().required('Department Code is required'),\r\n name: Yup.string().required('Department Name is required'),\r\n parent_department_id: Yup.string().nullable(),\r\n department_head_id: Yup.string().nullable(),\r\n cost_code: Yup.string(),\r\n status: Yup.boolean(),\r\n description: Yup.string(),\r\n })\r\n});\r\n\r\nexport const DepartmentAddModal: React.FC<IModalComponentProps> = ({\r\n isOpen,\r\n setIsOpen,\r\n onSave,\r\n isLoading,\r\n modalProps,\r\n}) => {\r\n const { t } = useTranslation();\r\n\r\n const { control, handleSubmit, reset, trigger, watch } = useForm<any>({\r\n mode: 'all',\r\n resolver: yupResolver(departmentValidationSchema),\r\n defaultValues: {\r\n department: {\r\n company_id: null,\r\n department_code: '',\r\n name: '',\r\n parent_department_id: null,\r\n department_head_id: null,\r\n cost_code: '',\r\n status: true,\r\n description: '',\r\n }\r\n }\r\n });\r\n\r\n const rootCompanyId = watch('department.company_id');\r\n\r\n const handleModalClose = () => {\r\n reset({\r\n department: {\r\n company_id: null,\r\n department_code: '',\r\n name: '',\r\n parent_department_id: null,\r\n department_head_id: null,\r\n cost_code: '',\r\n status: true,\r\n description: '',\r\n }\r\n });\r\n setIsOpen();\r\n };\r\n\r\n const onSubmit = async (values: IFormValues) => {\r\n const isValid = await trigger();\r\n if (!isValid) return;\r\n await onSave(values as any);\r\n handleModalClose();\r\n };\r\n\r\n return (\r\n <Modal\r\n open={isOpen}\r\n onClose={handleModalClose}\r\n maxWidth='sm'\r\n fullWidth\r\n {...modalProps}\r\n >\r\n <>\r\n <form onSubmit={handleSubmit(onSubmit)}>\r\n {isLoading && <ModalLoader />}\r\n <DialogTitle className='brandAddModal--DialogTitle'>\r\n <Typography type='s3' color='inherit' weight='medium'>\r\n {t('hrms.organization_structure.departmentModal.title', 'Add Department')}\r\n </Typography>\r\n <IconButton onClick={handleModalClose}>\r\n <Close fontSize='small' />\r\n </IconButton>\r\n </DialogTitle>\r\n <DialogContent className='brandAddModal--DialogContents'>\r\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\r\n {/* Company - Required */}\r\n <Grid item sm={12}>\r\n <DynamicSearchSelect\r\n label={t('hrms.organization_structure.departmentModal.company_label', 'Company')}\r\n name='company_id'\r\n placeholder={t('hrms.organization_structure.departmentModal.company_placeholder', 'Select Company')}\r\n fieldArrayName='department'\r\n formControl={control as any}\r\n apiType='company'\r\n required\r\n options={[]}\r\n />\r\n </Grid>\r\n\r\n {/* Department Code - Required */}\r\n <Grid item sm={6}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t('hrms.organization_structure.departmentModal.code_label', 'Department Code')}\r\n name='department_code'\r\n fieldArrayName='department'\r\n placeholder={t('hrms.organization_structure.departmentModal.code_placeholder', 'Enter Department Code')}\r\n required\r\n />\r\n </Grid>\r\n\r\n {/* Department Name - Required */}\r\n <Grid item sm={6}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t('hrms.organization_structure.departmentModal.name_label', 'Department Name')}\r\n name='name'\r\n fieldArrayName='department'\r\n placeholder={t('hrms.organization_structure.departmentModal.name_placeholder', 'Enter Department Name')}\r\n required\r\n />\r\n </Grid>\r\n\r\n {/* Parent Department - Optional */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t('hrms.organization_structure.departmentModal.parent_department_label', 'Parent Department')}\r\n name='parent_department_id'\r\n placeholder={t('hrms.organization_structure.departmentModal.parent_department_placeholder', 'Select Parent Department')}\r\n fieldArrayName='department'\r\n formControl={control as any}\r\n apiType='department'\r\n required={false}\r\n options={[]}\r\n customeFilter={{\r\n 'is_parent.eq': true,\r\n '&company_id.eq': rootCompanyId || 0\r\n }}\r\n />\r\n </Grid>\r\n\r\n {/* Department Head - Optional */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t('hrms.organization_structure.departmentModal.department_head_label', 'Department Head')}\r\n name='department_head_id'\r\n placeholder={t('hrms.organization_structure.departmentModal.department_head_placeholder', 'Select Department Head')}\r\n fieldArrayName='department'\r\n formControl={control as any}\r\n apiType='employees'\r\n required={false}\r\n options={[]}\r\n customeFilter={{\r\n '&company_id.eq': rootCompanyId || 0\r\n }}\r\n />\r\n </Grid>\r\n\r\n {/* Cost Code - Optional */}\r\n <Grid item sm={6}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t('hrms.organization_structure.departmentModal.cost_code_label', 'Cost Code')}\r\n name='cost_code'\r\n fieldArrayName='department'\r\n placeholder={t('hrms.organization_structure.departmentModal.cost_code_placeholder', 'Enter Cost Code')}\r\n />\r\n </Grid>\r\n\r\n {/* Status Toggle */}\r\n <Grid item sm={6}>\r\n <DynamicToggleButton\r\n formControl={control as any}\r\n name='status'\r\n fieldArrayName='department'\r\n label={t('hrms.organization_structure.departmentModal.status_label', 'Status')}\r\n title={t('common.active', 'Active')}\r\n titlePosition='end'\r\n position={3}\r\n />\r\n </Grid>\r\n\r\n {/* Description - Optional, full width */}\r\n <Grid item sm={12}>\r\n <DynamicInput\r\n type='textarea'\r\n formControl={control}\r\n label={t('hrms.organization_structure.departmentModal.description_label', 'Description')}\r\n name='description'\r\n fieldArrayName='department'\r\n placeholder={t('hrms.organization_structure.departmentModal.description_placeholder', 'Enter Description')}\r\n is_multiline\r\n rows={3}\r\n />\r\n </Grid>\r\n </Grid>\r\n </DialogContent>\r\n <DialogActions className='brandAddModal--DialogAction'>\r\n <span></span>\r\n <Box display='flex' gap={1.5}>\r\n <Button\r\n className='brandAddModal--DialogAction--WhiteBtn'\r\n onClick={handleModalClose}\r\n >\r\n {t('common.cancel')}\r\n </Button>\r\n <Button type='button' onClick={handleSubmit(onSubmit)}>\r\n {t('common.save')}\r\n </Button>\r\n </Box>\r\n </DialogActions>\r\n </form>\r\n </>\r\n </Modal>\r\n );\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useState } from 'react';\n\nimport Modal from '../../../../modal/modal';\nimport Typography from '../../../../typography/typography';\nimport DynamicInput from '../text';\nimport Button from '../../../../button/button';\nimport ModalLoader from '../../../../loaders/modal-loader';\nimport Toast from '../../../../toast/toast';\nimport { useTranslation } from 'react-i18next';\n\nimport {\n Box,\n DialogActions,\n DialogContent,\n DialogProps,\n DialogTitle,\n Grid,\n IconButton\n} from '@mui/material';\nimport Close from '@mui/icons-material/Close';\n\nimport { useForm } from 'react-hook-form';\nimport * as Yup from 'yup';\nimport { yupResolver } from '@hookform/resolvers/yup';\n\nimport './location-add-modal.scss';\nimport DynamicSearchSelect from '../dynamic-select';\ninterface BrandAddModalProps {\n isOpen: boolean;\n setIsOpen: () => void;\n modalProps?: DialogProps;\n onSave: (data: string) => void;\n isLoading?: boolean;\n}\n\ninterface IFormValues {\n location_data: {\n name: string;\n };\n}\n\ninterface IToast {\n type: 'normal' | 'alert';\n message: string;\n}\n\nconst validationSchema = Yup.object().shape({\n location_data: Yup.object().shape({\n name: Yup.string().required('Name is required')\n })\n});\n\nconst LocationAddModal: React.FC<BrandAddModalProps> = ({\n isOpen,\n setIsOpen,\n modalProps,\n onSave,\n isLoading\n}) => {\n const { t } = useTranslation();\n const [toast, setToast] = useState<IToast | null>(null);\n const { control, handleSubmit, reset } = useForm<any>({\n mode: 'all',\n resolver: yupResolver(validationSchema)\n });\n const handleModalClose = () => {\n reset({ location_data: undefined });\n setIsOpen();\n };\n\n const onSubmit = async (values: IFormValues) => {\n // handleModalClose();\n onSave(values?.location_data)\n };\n\n return (\n <Modal\n open={isOpen}\n onClose={handleModalClose}\n maxWidth='sm'\n fullWidth\n {...modalProps}>\n <>\n \n <form onSubmit={handleSubmit(onSubmit)}>\n {isLoading && (\n <ModalLoader />\n )}\n <DialogTitle className='brandAddModal--DialogTitle'>\n <Typography type='s3' color='inherit' weight='medium'>\n {t(\"inventory.item.locationModal.title\")}\n </Typography>\n <IconButton onClick={handleModalClose}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n <DialogContent className='brandAddModal--DialogContents'>\n \n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t(\"inventory.item.locationModal.location_name_label\")}\n name='name'\n fieldArrayName='location_data'\n placeholder={t(\"inventory.item.locationModal.location_name_placeholder\")}\n required\n />\n </Grid>\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t(\"inventory.item.locationModal.location_code_label\")}\n name='short_name'\n fieldArrayName='location_data'\n placeholder={t(\"inventory.item.locationModal.location_code_placeholder\")}\n required\n />\n </Grid>\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\n \"accounting.authorize_commission.fields.company_label\"\n )}\n name=\"company_id\"\n placeholder={t(\n \"accounting.authorize_commission.fields.company_placeholder\"\n )}\n fieldArrayName='location_data'\n formControl={control}\n apiType='company'\n getSelectedData={(data: any) =>\n // setSelectedData(name, data)\n console.log(\"data\", data)\n }\n required={true}\n />\n </Grid>\n </Grid>\n \n </DialogContent>\n <DialogActions className='brandAddModal--DialogAction'>\n <span></span>\n <Box display='flex' gap={1.5}>\n <Button\n className='brandAddModal--DialogAction--WhiteBtn'\n onClick={handleModalClose}>\n {t(\"common.cancel\")}\n </Button>\n <Button type='button' onClick={handleSubmit(onSubmit)}>{t(\"common.save\")}</Button>\n </Box>\n </DialogActions>\n </form>\n </>\n <Toast\n open={Boolean(toast)}\n type={toast?.type}\n message={toast?.message}\n handleClose={() => setToast(null)}\n anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}\n />\n </Modal>\n );\n};\n\nexport default LocationAddModal;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport React from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport * as Yup from 'yup';\r\nimport {\r\n Box,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n Grid,\r\n IconButton\r\n} from '@mui/material';\r\nimport Close from '@mui/icons-material/Close';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport Modal from './modal/modal';\r\nimport Typography from './typography/typography';\r\nimport Button from './button/button';\r\nimport ModalLoader from './loaders/modal-loader';\r\nimport { DynamicInput, DynamicSearchSelect, DynamicToggleButton, IModalComponentProps } from './form-control';\r\n\r\ninterface IFormValues {\r\n designation: {\r\n company_id: string | null;\r\n designation_code: string;\r\n name: string;\r\n reports_to: string | null;\r\n level: string;\r\n status: boolean;\r\n description: string;\r\n };\r\n}\r\n\r\nconst designationValidationSchema = Yup.object().shape({\r\n designation: Yup.object().shape({\r\n company_id: Yup.string().nullable().required('Company is required'),\r\n designation_code: Yup.string(),\r\n name: Yup.string().required('Designation Name is required'),\r\n reports_to: Yup.string().nullable(),\r\n level: Yup.number().nullable().typeError('Level must be a number'),\r\n status: Yup.boolean(),\r\n description: Yup.string(),\r\n })\r\n});\r\n\r\nexport const DesignationAddModal: React.FC<IModalComponentProps> = ({\r\n isOpen,\r\n setIsOpen,\r\n onSave,\r\n isLoading,\r\n modalProps,\r\n}) => {\r\n const { t } = useTranslation();\r\n\r\n const { control, handleSubmit, reset, trigger, watch } = useForm<any>({\r\n mode: 'all',\r\n resolver: yupResolver(designationValidationSchema),\r\n defaultValues: {\r\n designation: {\r\n company_id: null,\r\n designation_code: '',\r\n name: '',\r\n reports_to: null,\r\n level: null,\r\n status: true,\r\n description: '',\r\n }\r\n }\r\n });\r\n\r\n const rootCompanyId = watch('designation.company_id');\r\n\r\n const handleModalClose = () => {\r\n reset({\r\n designation: {\r\n company_id: null,\r\n designation_code: '',\r\n name: '',\r\n reports_to: null,\r\n level: null,\r\n status: true,\r\n description: '',\r\n }\r\n });\r\n setIsOpen();\r\n };\r\n\r\n const onSubmit = async (values: IFormValues) => {\r\n const isValid = await trigger();\r\n if (!isValid) return;\r\n await onSave(values as any);\r\n handleModalClose();\r\n };\r\n\r\n return (\r\n <Modal\r\n open={isOpen}\r\n onClose={handleModalClose}\r\n maxWidth='sm'\r\n fullWidth\r\n {...modalProps}\r\n >\r\n <>\r\n <form onSubmit={handleSubmit(onSubmit)}>\r\n {isLoading && <ModalLoader />}\r\n <DialogTitle className='brandAddModal--DialogTitle'>\r\n <Typography type='s3' color='inherit' weight='medium'>\r\n {t('hrms.organization_structure.designationModal.title', 'Add Designation')}\r\n </Typography>\r\n <IconButton onClick={handleModalClose}>\r\n <Close fontSize='small' />\r\n </IconButton>\r\n </DialogTitle>\r\n <DialogContent className='brandAddModal--DialogContents'>\r\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\r\n {/* Company - Required */}\r\n <Grid item sm={12}>\r\n <DynamicSearchSelect\r\n label={t('hrms.organization_structure.designationModal.company_label', 'Company')}\r\n name='company_id'\r\n placeholder={t('hrms.organization_structure.designationModal.company_placeholder', 'Select Company')}\r\n fieldArrayName='designation'\r\n formControl={control as any}\r\n apiType='company'\r\n required\r\n options={[]}\r\n />\r\n </Grid>\r\n\r\n {/* Designation Code */}\r\n <Grid item sm={6}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t('hrms.organization_structure.designationModal.code_label', 'Designation Code')}\r\n name='designation_code'\r\n fieldArrayName='designation'\r\n placeholder={t('hrms.organization_structure.designationModal.code_placeholder', 'Enter Designation Code')}\r\n />\r\n </Grid>\r\n\r\n {/* Designation Name - Required */}\r\n <Grid item sm={6}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t('hrms.organization_structure.designationModal.name_label', 'Designation Name')}\r\n name='name'\r\n fieldArrayName='designation'\r\n placeholder={t('hrms.organization_structure.designationModal.name_placeholder', 'Enter Designation Name')}\r\n required\r\n />\r\n </Grid>\r\n\r\n {/* Reports To - Optional (employees) */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t('hrms.organization_structure.designationModal.reports_to_label', 'Reports To')}\r\n name='reports_to'\r\n placeholder={t('hrms.organization_structure.designationModal.reports_to_placeholder', 'Select Reports To')}\r\n fieldArrayName='designation'\r\n formControl={control as any}\r\n apiType='employees'\r\n required={false}\r\n options={[]}\r\n customeFilter={{\r\n '&company_id.eq': rootCompanyId || 0\r\n }}\r\n />\r\n </Grid>\r\n\r\n {/* Level - Optional */}\r\n <Grid item sm={6}>\r\n <DynamicInput\r\n type='number'\r\n formControl={control}\r\n label={t('hrms.organization_structure.designationModal.level_label', 'Level')}\r\n name='level'\r\n fieldArrayName='designation'\r\n placeholder={t('hrms.organization_structure.designationModal.level_placeholder', 'Enter Level')}\r\n />\r\n </Grid>\r\n\r\n {/* Status Toggle */}\r\n <Grid item sm={6}>\r\n <DynamicToggleButton\r\n formControl={control as any}\r\n name='status'\r\n fieldArrayName='designation'\r\n label={t('hrms.organization_structure.designationModal.status_label', 'Status')}\r\n title={t('common.active', 'Active')}\r\n titlePosition='end'\r\n position={3}\r\n />\r\n </Grid>\r\n\r\n {/* Description - Optional, full width */}\r\n <Grid item sm={12}>\r\n <DynamicInput\r\n type='textarea'\r\n formControl={control}\r\n label={t('hrms.organization_structure.designationModal.description_label', 'Description')}\r\n name='description'\r\n fieldArrayName='designation'\r\n placeholder={t('hrms.organization_structure.designationModal.description_placeholder', 'Enter Description')}\r\n is_multiline\r\n rows={3}\r\n />\r\n </Grid>\r\n </Grid>\r\n </DialogContent>\r\n <DialogActions className='brandAddModal--DialogAction'>\r\n <span></span>\r\n <Box display='flex' gap={1.5}>\r\n <Button\r\n className='brandAddModal--DialogAction--WhiteBtn'\r\n onClick={handleModalClose}\r\n >\r\n {t('common.cancel')}\r\n </Button>\r\n <Button type='button' onClick={handleSubmit(onSubmit)}>\r\n {t('common.save')}\r\n </Button>\r\n </Box>\r\n </DialogActions>\r\n </form>\r\n </>\r\n </Modal>\r\n );\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { useState, useEffect, useCallback } from 'react';\r\n\r\nimport Modal from '../../../../modal/modal';\r\nimport Typography from '../../../../typography/typography';\r\nimport DynamicInput from '../text';\r\nimport Button from '../../../../button/button';\r\nimport ModalLoader from '../../../../loaders/modal-loader';\r\nimport Toast from '../../../../toast/toast';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport {\r\n Box,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n Grid,\r\n IconButton\r\n} from '@mui/material';\r\nimport Close from '@mui/icons-material/Close';\r\n\r\nimport { FormProvider, useForm, useWatch } from 'react-hook-form';\r\nimport * as Yup from 'yup';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\n\r\nimport DynamicSearchSelect from '../dynamic-select';\r\nimport DynamicSelect from '../select';\r\nimport { IModalComponentProps } from '../../index';\r\nimport { fetchOptions, skuGenerator } from '../../../../../utils/common';\r\n\r\nimport './fixed-asset-item-add-modal.scss';\r\n\r\ninterface IFormValues {\r\n inventory_fixed_asset_item: {\r\n name: string;\r\n sku: string;\r\n category: number | null;\r\n base_unit: number | null;\r\n company: number[];\r\n unit_of_measurement: number | null;\r\n stock_unit: number | null;\r\n purchase_unit: number | null;\r\n sales_unit: number | null;\r\n costing_method: string;\r\n depreciation_method: string;\r\n computation_method: string;\r\n default_tax_id: number | null;\r\n income_account_id: number | null;\r\n asset_account_id: number | null;\r\n cogs_account_id: number | null;\r\n fixed_asset_account_id: number | null;\r\n depreciation_account_id: number | null;\r\n declining_factor: number | null;\r\n };\r\n}\r\n\r\ninterface IToast {\r\n type: 'normal' | 'alert';\r\n message: string;\r\n}\r\n\r\nconst COSTING_METHODS = [\r\n { label: 'FIFO', value: 'FIFO' },\r\n { label: 'LIFO', value: 'LIFO' },\r\n { label: 'Weighted Average Cost', value: 'Weighted Average Cost' }\r\n];\r\n\r\nconst DEPRECIATION_METHODS = [\r\n { label: 'Straight line', value: 'Straight line' },\r\n { label: 'Declining', value: 'Declining' }\r\n];\r\n\r\nconst COMPUTATION_METHODS = [\r\n { label: 'Constant periods', value: 'Constant periods' },\r\n { label: 'Based on days per period', value: 'Based on days per period' }\r\n];\r\n\r\nconst validationSchema = Yup.object().shape({\r\n inventory_fixed_asset_item: Yup.object().shape({\r\n name: Yup.string().required('Name is required'),\r\n sku: Yup.string().required('SKU is required'),\r\n category: Yup.mixed().required('Category is required'),\r\n base_unit: Yup.mixed().required('Base Unit is required'),\r\n company: Yup.array().min(1, 'At least one company is required').required('Company is required'),\r\n unit_of_measurement: Yup.mixed().required('Unit of Measurement is required'),\r\n stock_unit: Yup.mixed().nullable(),\r\n purchase_unit: Yup.mixed().nullable(),\r\n sales_unit: Yup.mixed().nullable(),\r\n costing_method: Yup.string().required('Costing Method is required'),\r\n depreciation_method: Yup.string().required('Depreciation Method is required'),\r\n computation_method: Yup.string().required('Computation Method is required'),\r\n default_tax_id: Yup.mixed().required('Default Tax is required'),\r\n income_account_id: Yup.mixed().required('Income Account is required'),\r\n asset_account_id: Yup.mixed().required('Asset Account is required'),\r\n cogs_account_id: Yup.mixed().required('COGS Account is required'),\r\n fixed_asset_account_id: Yup.mixed().required('Fixed Asset Account is required'),\r\n depreciation_account_id: Yup.mixed().required('Depreciation Account is required'),\r\n declining_factor: Yup.number()\r\n .nullable()\r\n .when('depreciation_method', {\r\n is: 'Declining',\r\n then: (schema) => schema.required('Declining Factor is required').min(0, 'Must be positive'),\r\n otherwise: (schema) => schema.nullable(),\r\n }),\r\n })\r\n});\r\n\r\nconst FixedAssetItemAddModal: React.FC<IModalComponentProps> = ({\r\n isOpen,\r\n setIsOpen,\r\n modalProps,\r\n onSave,\r\n isLoading\r\n}) => {\r\n const { t } = useTranslation();\r\n const [toast, setToast] = useState<IToast | null>(null);\r\n const [selectedCategoryData, setSelectedCategoryData] = useState<any>(null);\r\n const unitFields = ['stock_unit', 'purchase_unit', 'sales_unit', 'consumption_unit', 'base_unit'];\r\n const defaultValues = {\r\n inventory_fixed_asset_item: {\r\n name: '',\r\n sku: '',\r\n category: null,\r\n base_unit: null,\r\n company: [],\r\n unit_of_measurement: null,\r\n stock_unit: null,\r\n purchase_unit: null,\r\n sales_unit: null,\r\n costing_method: '',\r\n depreciation_method: '',\r\n computation_method: '',\r\n default_tax_id: null,\r\n income_account_id: null,\r\n asset_account_id: null,\r\n cogs_account_id: null,\r\n fixed_asset_account_id: null,\r\n depreciation_account_id: null,\r\n declining_factor: null,\r\n status: 1\r\n }\r\n }\r\n\r\n const methods = useForm<any>({\r\n mode: 'all',\r\n resolver: yupResolver(validationSchema),\r\n defaultValues: defaultValues,\r\n });\r\n const { control, handleSubmit, reset, setValue, trigger } = methods || {};\r\n\r\n // Watch name and category for auto-generating SKU\r\n const [watchedName, watchedCategory, watchedUom, watchedDepreciationMethod] = useWatch({\r\n control, name:\r\n ['inventory_fixed_asset_item.name',\r\n 'inventory_fixed_asset_item.category',\r\n 'inventory_fixed_asset_item.unit_of_measurement',\r\n 'inventory_fixed_asset_item.depreciation_method']\r\n });\r\n\r\n\r\n // Auto-generate SKU when name or category changes\r\n useEffect(() => {\r\n if (watchedName && selectedCategoryData?.category_name) {\r\n const generatedSku = skuGenerator({\r\n name: watchedName,\r\n category: selectedCategoryData.category_name\r\n });\r\n setValue('inventory_fixed_asset_item.sku', generatedSku);\r\n }\r\n }, [watchedName, selectedCategoryData, setValue]);\r\n\r\n const handleModalClose = () => {\r\n reset(defaultValues);\r\n setSelectedCategoryData(null);\r\n setIsOpen();\r\n };\r\n\r\n const onSubmit = async (values: IFormValues) => {\r\n const isValid = await trigger();\r\n if (!isValid) return;\r\n await onSave({\r\n ...values.inventory_fixed_asset_item as any,\r\n type: 'inventory-fixed-asset',\r\n status: 1\r\n });\r\n handleModalClose();\r\n };\r\n\r\n const handleCategorySelect = useCallback((data: any) => {\r\n setSelectedCategoryData(data);\r\n }, []);\r\n\r\n const updateUomFields = useCallback(async () => {\r\n if (!watchedUom) return\r\n const filter = {\r\n '&template_id.eq': watchedUom,\r\n '&is_base_unit.eq': 1\r\n }\r\n const uomData = await fetchOptions('uom', filter, [], false)\r\n unitFields.forEach((item) => {\r\n setValue(`inventory_fixed_asset_item.${item}`, uomData?.id)\r\n })\r\n }, [watchedUom])\r\n useEffect(() => {\r\n updateUomFields()\r\n }, [updateUomFields])\r\n\r\n return (\r\n <Modal\r\n open={isOpen}\r\n onClose={handleModalClose}\r\n maxWidth='md'\r\n fullWidth\r\n {...modalProps}>\r\n <>\r\n <FormProvider {...methods}>\r\n <form onSubmit={handleSubmit(onSubmit)}>\r\n {isLoading && (\r\n <ModalLoader />\r\n )}\r\n <DialogTitle className='fixedAssetItemAddModal--DialogTitle'>\r\n <Typography type='s3' color='inherit' weight='medium'>\r\n {t(\"inventory.fixed_asset_items.modal.title\", \"Add Fixed Asset Item\")}\r\n </Typography>\r\n <IconButton onClick={handleModalClose}>\r\n <Close fontSize='small' />\r\n </IconButton>\r\n </DialogTitle>\r\n <DialogContent className='fixedAssetItemAddModal--DialogContents'>\r\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\r\n {/* Name */}\r\n <Grid item sm={6}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t(\"inventory.fixed_asset_items.modal.name_label\", \"Name\")}\r\n name='name'\r\n fieldArrayName='inventory_fixed_asset_item'\r\n placeholder={t(\"inventory.fixed_asset_items.modal.name_placeholder\", \"Enter Name\")}\r\n required\r\n />\r\n </Grid>\r\n\r\n {/* SKU - Auto-generated */}\r\n <Grid item sm={6}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t(\"inventory.fixed_asset_items.modal.sku_label\", \"SKU\")}\r\n name='sku'\r\n fieldArrayName='inventory_fixed_asset_item'\r\n placeholder={t(\"inventory.fixed_asset_items.modal.sku_placeholder\", \"Auto-generated\")}\r\n required\r\n disabled\r\n />\r\n </Grid>\r\n\r\n {/* Category */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.category_label\", \"Category\")}\r\n name=\"category\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.category_placeholder\", \"Select Category\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='categoryItems'\r\n options={[]}\r\n required={true}\r\n getSelectedData={handleCategorySelect}\r\n />\r\n </Grid>\r\n\r\n\r\n {/* Company */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.company_label\", \"Company\")}\r\n name=\"company\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.company_placeholder\", \"Select Company\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='company'\r\n options={[]}\r\n is_multiselect={true}\r\n required={true}\r\n />\r\n </Grid>\r\n\r\n {/* Costing Method */}\r\n <Grid item sm={6}>\r\n <DynamicSelect\r\n label={t(\"inventory.fixed_asset_items.modal.costing_method_label\", \"Costing Method\")}\r\n name=\"costing_method\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.costing_method_placeholder\", \"Select Costing Method\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n options={COSTING_METHODS}\r\n required={true}\r\n />\r\n </Grid>\r\n\r\n {/* Unit of Measurement Section Header */}\r\n <Grid item xs={12} pt={2}>\r\n <Typography type='s3' weight='medium' color='theme.neutral.900'>\r\n {t(\"inventory.fixed_asset_items.modal.uom_section\", \"Unit of Measurement\")}\r\n </Typography>\r\n </Grid>\r\n\r\n {/* UOM Template */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.unit_of_measurement_label\", \"UOM Template\")}\r\n name=\"unit_of_measurement\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.unit_of_measurement_placeholder\", \"Select UOM Template\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='uom_templates'\r\n required={true}\r\n />\r\n </Grid>\r\n\r\n {/* Stock Unit */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.stock_unit_label\", \"Stock Unit\")}\r\n name=\"stock_unit\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.stock_unit_placeholder\", \"Select Stock Unit\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='uom'\r\n customFilter={{\r\n '&template_id.eq': watchedUom || 0\r\n }}\r\n />\r\n </Grid>\r\n\r\n {/* Purchase Unit */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.purchase_unit_label\", \"Purchase Unit\")}\r\n name=\"purchase_unit\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.purchase_unit_placeholder\", \"Select Purchase Unit\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='uom'\r\n customFilter={{\r\n '&template_id.eq': watchedUom || 0\r\n }}\r\n />\r\n </Grid>\r\n\r\n {/* Sales Unit */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.sales_unit_label\", \"Consumption Unit\")}\r\n name=\"sales_unit\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.sales_unit_placeholder\", \"Select Sales Unit\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='uom'\r\n customFilter={{\r\n '&template_id.eq': watchedUom || 0\r\n }}\r\n />\r\n </Grid>\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.sales_unit_label\", \"Consumption Unit\")}\r\n name=\"consumption_unit\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.sales_unit_placeholder\", \"Select Sales Unit\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='uom'\r\n customFilter={{\r\n '&template_id.eq': watchedUom || 0\r\n }}\r\n />\r\n </Grid>\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.base_unit_label\", \"Base Unit\")}\r\n name=\"base_unit\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.base_unit_placeholder\", \"Select Base Unit\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n disabled\r\n apiType='uom'\r\n customFilter={{\r\n '&template_id.eq': watchedUom || 0,\r\n '&is_base_unit.eq': 1\r\n }}\r\n />\r\n </Grid>\r\n\r\n {/* Depreciation Method */}\r\n <Grid item sm={6}>\r\n <DynamicSelect\r\n label={t(\"inventory.fixed_asset_items.modal.depreciation_method_label\", \"Depreciation Method\")}\r\n name=\"depreciation_method\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.depreciation_method_placeholder\", \"Select Depreciation Method\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n options={DEPRECIATION_METHODS}\r\n required={true}\r\n />\r\n </Grid>\r\n\r\n {/* Declining Factor */}\r\n {watchedDepreciationMethod === 'Declining' && (\r\n <Grid item sm={6}>\r\n <DynamicInput\r\n type='number'\r\n formControl={control}\r\n label={t(\"inventory.fixed_asset_items.modal.declining_factor_label\", \"Declining Factor\")}\r\n name='declining_factor'\r\n fieldArrayName='inventory_fixed_asset_item'\r\n placeholder={t(\"inventory.fixed_asset_items.modal.declining_factor_placeholder\", \"Enter Declining Factor\")}\r\n required\r\n />\r\n </Grid>\r\n )}\r\n\r\n {/* Computation Method */}\r\n <Grid item sm={6}>\r\n <DynamicSelect\r\n label={t(\"inventory.fixed_asset_items.modal.computation_method_label\", \"Computation Method\")}\r\n name=\"computation_method\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.computation_method_placeholder\", \"Select Computation Method\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n options={COMPUTATION_METHODS}\r\n required={true}\r\n />\r\n </Grid>\r\n\r\n {/* Accounting Section Header */}\r\n <Grid item xs={12} pt={2}>\r\n <Typography type='s3' weight='medium' color='theme.neutral.900'>\r\n {t(\"inventory.fixed_asset_items.modal.accounting_section\", \"Accounting\")}\r\n </Typography>\r\n </Grid>\r\n\r\n {/* Default Tax */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.default_tax_label\", \"Default Tax\")}\r\n name=\"default_tax_id\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.default_tax_placeholder\", \"Select Default Tax\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='taxTemplate'\r\n options={[]}\r\n required={true}\r\n />\r\n </Grid>\r\n\r\n {/* Income Account */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.income_account_label\", \"Income Account\")}\r\n name=\"income_account_id\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.income_account_placeholder\", \"Select Income Account\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='accounts'\r\n options={[]}\r\n required={true}\r\n customeFilter={{ '&account_parent_type.in': ['Income', 'Assets'] }}\r\n />\r\n </Grid>\r\n\r\n {/* Asset Account */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.asset_account_label\", \"Asset Account\")}\r\n name=\"asset_account_id\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.asset_account_placeholder\", \"Select Asset Account\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='accounts'\r\n options={[]}\r\n required={true}\r\n customeFilter={{ '&account_parent_type.eq': 'Assets' }}\r\n />\r\n </Grid>\r\n\r\n {/* COGS Account */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.cogs_account_label\", \"COGS Account\")}\r\n name=\"cogs_account_id\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.cogs_account_placeholder\", \"Select COGS Account\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='accounts'\r\n options={[]}\r\n required={true}\r\n />\r\n </Grid>\r\n\r\n {/* Fixed Asset Account */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.fixed_asset_account_label\", \"Fixed Asset Account\")}\r\n name=\"fixed_asset_account_id\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.fixed_asset_account_placeholder\", \"Select Fixed Asset Account\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='accounts'\r\n options={[]}\r\n required={true}\r\n customeFilter={{ '&account_parent_type.eq': 'Assets' }}\r\n />\r\n </Grid>\r\n\r\n {/* Depreciation Account */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.depreciation_account_label\", \"Depreciation Account\")}\r\n name=\"depreciation_account_id\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.depreciation_account_placeholder\", \"Select Depreciation Account\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='accounts'\r\n options={[]}\r\n required={true}\r\n customeFilter={{ '&account_parent_type.eq': 'Assets' }}\r\n />\r\n </Grid>\r\n </Grid>\r\n </DialogContent>\r\n <DialogActions className='fixedAssetItemAddModal--DialogAction'>\r\n <span></span>\r\n <Box display='flex' gap={1.5}>\r\n <Button\r\n className='fixedAssetItemAddModal--DialogAction--WhiteBtn'\r\n onClick={handleModalClose}>\r\n {t(\"common.cancel\")}\r\n </Button>\r\n <Button type=\"button\" onClick={handleSubmit(onSubmit)}>{t(\"common.save\")}</Button>\r\n </Box>\r\n </DialogActions>\r\n </form>\r\n </FormProvider>\r\n </>\r\n <Toast\r\n open={Boolean(toast)}\r\n type={toast?.type}\r\n message={toast?.message}\r\n handleClose={() => setToast(null)}\r\n anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}\r\n />\r\n </Modal>\r\n );\r\n};\r\n\r\nexport default FixedAssetItemAddModal;\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport React from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport * as Yup from 'yup';\r\nimport {\r\n Box,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n Grid,\r\n IconButton\r\n} from '@mui/material';\r\nimport Close from '@mui/icons-material/Close';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport Modal from './modal/modal';\r\nimport Typography from './typography/typography';\r\nimport Button from './button/button';\r\nimport ModalLoader from './loaders/modal-loader';\r\nimport { DynamicInput, IModalComponentProps } from './form-control';\r\n\r\ninterface IFormValues {\r\n brand_data: {\r\n name: string;\r\n };\r\n}\r\n\r\nconst brandValidationSchema = Yup.object().shape({\r\n brand_data: Yup.object().shape({\r\n name: Yup.string().required('Name is required')\r\n })\r\n});\r\n\r\nexport const BrandAddModal: React.FC<IModalComponentProps> = ({\r\n isOpen,\r\n setIsOpen,\r\n onSave,\r\n isLoading,\r\n modalProps,\r\n}) => {\r\n const { t } = useTranslation();\r\n\r\n const { control, handleSubmit, reset, trigger } = useForm<any>({\r\n mode: 'all',\r\n resolver: yupResolver(brandValidationSchema),\r\n defaultValues: {\r\n brand_data: {\r\n name: '',\r\n }\r\n }\r\n });\r\n\r\n const handleModalClose = () => {\r\n reset({ brand_data: { name: '' } });\r\n setIsOpen();\r\n };\r\n\r\n const onSubmit = async (values: IFormValues) => {\r\n const isValid = await trigger();\r\n if (!isValid) return;\r\n await onSave(values?.brand_data as any);\r\n handleModalClose();\r\n };\r\n\r\n return (\r\n <Modal\r\n open={isOpen}\r\n onClose={handleModalClose}\r\n maxWidth='sm'\r\n fullWidth\r\n {...modalProps}\r\n >\r\n <>\r\n <form onSubmit={handleSubmit(onSubmit)}>\r\n {isLoading && <ModalLoader />}\r\n <DialogTitle className='brandAddModal--DialogTitle'>\r\n <Typography type='s3' color='inherit' weight='medium'>\r\n {t(\"inventory.item.brandModal.title\")}\r\n </Typography>\r\n <IconButton onClick={handleModalClose}>\r\n <Close fontSize='small' />\r\n </IconButton>\r\n </DialogTitle>\r\n <DialogContent className='brandAddModal--DialogContents'>\r\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\r\n <Grid item sm={12}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t(\"inventory.item.brandModal.brand_name_label\")}\r\n name='name'\r\n fieldArrayName='brand_data'\r\n placeholder={t(\"inventory.item.brandModal.brand_name_placeholder\")}\r\n required\r\n />\r\n </Grid>\r\n </Grid>\r\n </DialogContent>\r\n <DialogActions className='brandAddModal--DialogAction'>\r\n <span></span>\r\n <Box display='flex' gap={1.5}>\r\n <Button\r\n className='brandAddModal--DialogAction--WhiteBtn'\r\n onClick={handleModalClose}\r\n >\r\n {t(\"common.cancel\")}\r\n </Button>\r\n <Button type='button' onClick={handleSubmit(onSubmit)}>{t(\"common.save\")}</Button>\r\n </Box>\r\n </DialogActions>\r\n </form>\r\n </>\r\n </Modal>\r\n );\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport React from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport * as Yup from 'yup';\r\nimport {\r\n Box,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n Grid,\r\n IconButton\r\n} from '@mui/material';\r\nimport Close from '@mui/icons-material/Close';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport Modal from './modal/modal';\r\nimport Typography from './typography/typography';\r\nimport Button from './button/button';\r\nimport ModalLoader from './loaders/modal-loader';\r\nimport { DynamicInput, IModalComponentProps } from './form-control';\r\n\r\ninterface IFormValues {\r\n category_data: {\r\n category_name: string;\r\n };\r\n}\r\n\r\nconst categoryValidationSchema = Yup.object().shape({\r\n category_data: Yup.object().shape({\r\n category_name: Yup.string().required('Category Name is required'),\r\n })\r\n});\r\n\r\nexport const CategoryAddModal: React.FC<IModalComponentProps> = ({\r\n isOpen,\r\n setIsOpen,\r\n onSave,\r\n isLoading,\r\n modalProps,\r\n}) => {\r\n const { t } = useTranslation();\r\n\r\n const { control, handleSubmit, reset, trigger } = useForm<any>({\r\n mode: 'all',\r\n resolver: yupResolver(categoryValidationSchema),\r\n defaultValues: {\r\n category_data: {\r\n category_name: '',\r\n }\r\n }\r\n });\r\n\r\n const handleModalClose = () => {\r\n reset({ category_data: { category_name: '' } });\r\n setIsOpen();\r\n };\r\n\r\n const onSubmit = async (values: IFormValues) => {\r\n const isValid = await trigger();\r\n if (!isValid) return;\r\n await onSave({\r\n category_data: {\r\n category_name: values.category_data.category_name,\r\n sku_prefix : values.category_data.sku_prefix,\r\n unique_items : values.category_data.unique_items,\r\n status: true,\r\n },\r\n attribute_data: [],\r\n } as any);\r\n handleModalClose();\r\n };\r\n\r\n return (\r\n <Modal\r\n open={isOpen}\r\n onClose={handleModalClose}\r\n maxWidth='sm'\r\n fullWidth\r\n {...modalProps}\r\n >\r\n <>\r\n <form onSubmit={handleSubmit(onSubmit)}>\r\n {isLoading && <ModalLoader />}\r\n <DialogTitle className='categoryAddModal--DialogTitle'>\r\n <Typography type='s3' color='inherit' weight='medium'>\r\n {t(\"inventory.item.categoryModal.title\")}\r\n </Typography>\r\n <IconButton onClick={handleModalClose}>\r\n <Close fontSize='small' />\r\n </IconButton>\r\n </DialogTitle>\r\n <DialogContent className='categoryAddModal--DialogContents'>\r\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\r\n <Grid item sm={12}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t(\"inventory.item.categoryModal.category_name_label\")}\r\n name='category_name'\r\n fieldArrayName='category_data'\r\n placeholder={t(\"inventory.item.categoryModal.category_name_placeholder\")}\r\n required\r\n />\r\n </Grid> \r\n <Grid item sm={12}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t(\"inventory.item.categoryModal.sku_prefix_label\")}\r\n name='sku_prefix'\r\n fieldArrayName='category_data'\r\n placeholder={t(\"inventory.item.categoryModal.sku_prefix_placeholder\")}\r\n />\r\n </Grid> \r\n\r\n <Grid item sm={12}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t(\"inventory.item.categoryModal.unique_items_label\")}\r\n name='unique_items'\r\n fieldArrayName='category_data'\r\n placeholder={t(\"inventory.item.categoryModal.unique_items_placeholder\")}\r\n />\r\n </Grid> \r\n </Grid>\r\n </DialogContent>\r\n <DialogActions className='categoryAddModal--DialogAction'>\r\n <span></span>\r\n <Box display='flex' gap={1.5}>\r\n <Button\r\n className='categoryAddModal--DialogAction--WhiteBtn'\r\n onClick={handleModalClose}\r\n >\r\n {t(\"common.cancel\")}\r\n </Button>\r\n <Button type='button' onClick={handleSubmit(onSubmit)}>{t(\"common.save\")}</Button>\r\n </Box>\r\n </DialogActions>\r\n </form>\r\n </>\r\n </Modal>\r\n );\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport React from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport * as Yup from 'yup';\r\nimport {\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n Grid,\r\n IconButton\r\n} from '@mui/material';\r\nimport Close from '@mui/icons-material/Close';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport Modal from './modal/modal';\r\nimport Typography from './typography/typography';\r\nimport Button from './button/button';\r\nimport ModalLoader from './loaders/modal-loader';\r\nimport { DynamicInput, IModalComponentProps } from './form-control';\r\n\r\ninterface IndustryFormValues {\r\n\tindustry: {\r\n\t\tname: string;\r\n\t};\r\n}\r\n\r\ninterface IndustryAddModalProps extends IModalComponentProps {\r\n\ttype?: string;\r\n}\r\n\r\nexport const IndustryAddModal: React.FC<IndustryAddModalProps> = ({\r\n\tisOpen,\r\n\tsetIsOpen,\r\n\tonSave,\r\n\tisLoading,\r\n\tmodalProps,\r\n}) => {\r\n\tconst { t } = useTranslation();\r\n\r\n\tconst validationSchema = Yup.object().shape({\r\n\t\tindustry: Yup.object().shape({\r\n\t\t\tname: Yup.string()\r\n\t\t\t\t.required('Industry name is required')\r\n\t\t\t\t.max(255, 'Industry name must be at most 255 characters'),\r\n\t\t}),\r\n\t});\r\n\r\n\tconst { control, handleSubmit, reset } = useForm<IndustryFormValues>({\r\n\t\tresolver: yupResolver(validationSchema),\r\n\t\tmode: 'all',\r\n\t\tdefaultValues: {\r\n\t\t\tindustry: {\r\n\t\t\t\tname: '',\r\n\t\t\t},\r\n\t\t},\r\n\t});\r\n\r\n\tconst handleClose = () => {\r\n\t\treset({\r\n\t\t\tindustry: {\r\n\t\t\t\tname: '',\r\n\t\t\t},\r\n\t\t});\r\n\t\tsetIsOpen(false);\r\n\t};\r\n\r\n\tconst handleFormSubmit = (event?: React.BaseSyntheticEvent) => {\r\n\t\tevent?.preventDefault();\r\n\t\tevent?.stopPropagation();\r\n\r\n\t\treturn handleSubmit(onSubmit)(event);\r\n\t};\r\n\r\n\tconst onSubmit = async (data: IndustryFormValues) => {\r\n\t\ttry {\r\n\t\t\tawait onSave(data.industry as any);\r\n\t\t\thandleClose();\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error('❌ ~ Error saving industry:', error);\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t<Modal\r\n\t\t\topen={isOpen}\r\n\t\t\tonClose={handleClose}\r\n\t\t\tmaxWidth={modalProps?.maxWidth || 'sm'}\r\n\t\t\tfullWidth={modalProps?.fullWidth || true}\r\n\t\t\tclassName=\"industry-add-modal\"\r\n\t\t>\r\n\t\t\t<DialogTitle>\r\n\t\t\t\t<Typography type=\"h5\" weight=\"medium\" color=\"theme.secondary.1000\">\r\n\t\t\t\t\t{t('crm.leads.fields.create_industry_label', 'Create New Industry')}\r\n\t\t\t\t</Typography>\r\n\t\t\t\t<IconButton onClick={handleClose}>\r\n\t\t\t\t\t<Close fontSize='small' />\r\n\t\t\t\t</IconButton>\r\n\t\t\t</DialogTitle>\r\n\r\n\t\t\t<form onSubmit={handleFormSubmit}>\r\n\t\t\t\t<DialogContent>\r\n\t\t\t\t\t{isLoading ? (\r\n\t\t\t\t\t\t<ModalLoader />\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t<Grid container spacing={3}>\r\n\t\t\t\t\t\t\t<Grid item xs={12}>\r\n\t\t\t\t\t\t\t\t<DynamicInput\r\n\t\t\t\t\t\t\t\t\tlabel={t('crm.leads.fields.industry_name_label', 'Industry Name')}\r\n\t\t\t\t\t\t\t\t\tname=\"name\"\r\n\t\t\t\t\t\t\t\t\tplaceholder={t('crm.leads.fields.industry_name_placeholder', 'Enter Industry Name')}\r\n\t\t\t\t\t\t\t\t\tfieldArrayName=\"industry\"\r\n\t\t\t\t\t\t\t\t\tformControl={control}\r\n\t\t\t\t\t\t\t\t\trequired\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t</Grid>\r\n\t\t\t\t\t\t</Grid>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</DialogContent>\r\n\r\n\t\t\t\t<DialogActions>\r\n\t\t\t\t\t<Button\r\n\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\tvariant=\"outlined\"\r\n\t\t\t\t\t\tonClick={handleClose}\r\n\t\t\t\t\t\tdisabled={isLoading}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{t('common.cancel', 'Cancel')}\r\n\t\t\t\t\t</Button>\r\n\t\t\t\t\t<Button\r\n\t\t\t\t\t\ttype=\"submit\"\r\n\t\t\t\t\t\tvariant=\"contained\"\r\n\t\t\t\t\t\tdisabled={isLoading}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{t('common.save', 'Save')}\r\n\t\t\t\t\t</Button>\r\n\t\t\t\t</DialogActions>\r\n\t\t\t</form>\r\n\t\t</Modal>\r\n\t);\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport React, { useState } from 'react';\r\nimport {\r\n\tBox,\r\n\tDialogActions,\r\n\tDialogContent,\r\n\tDialogTitle,\r\n\tGrid,\r\n\tIconButton,\r\n} from '@mui/material';\r\nimport Close from '@mui/icons-material/Close';\r\nimport { useForm } from 'react-hook-form';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport * as Yup from 'yup';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport Button from '../button/button';\r\nimport { DynamicInput } from '../form-control';\r\nimport Modal from '../modal/modal';\r\nimport ModalLoader from '../loaders/modal-loader';\r\nimport Typography from '../typography/typography';\r\n\r\ninterface SourceTypeAddModalProps {\r\n\tisOpen: boolean;\r\n\tsetIsOpen: (isOpen?: boolean) => void;\r\n\tisLoading?: boolean;\r\n\tonSave: (data: any) => Promise<void> | void;\r\n\tmodalProps?: any;\r\n}\r\n\r\ninterface SourceTypeFormValues {\r\n\tsource_type: {\r\n\t\tname: string;\r\n\t\tdescription: string;\r\n\t};\r\n}\r\n\r\nconst validationSchema = Yup.object().shape({\r\n\tsource_type: Yup.object().shape({\r\n\t\tname: Yup.string()\r\n\t\t\t.trim()\r\n\t\t\t.required('common.source_type.source_type_name_required')\r\n\t\t\t.max(255, 'common.source_type.source_type_name_max'),\r\n\t\tdescription: Yup.string()\r\n\t\t\t.nullable()\r\n\t\t\t.max(1000, 'common.source_type.description_max'),\r\n\t}),\r\n});\r\n\r\nconst defaultValues: SourceTypeFormValues = {\r\n\tsource_type: {\r\n\t\tname: '',\r\n\t\tdescription: '',\r\n\t},\r\n};\r\n\r\nconst SourceTypeAddModal: React.FC<SourceTypeAddModalProps> = ({\r\n\tisOpen,\r\n\tsetIsOpen,\r\n\tisLoading = false,\r\n\tonSave,\r\n\tmodalProps,\r\n}) => {\r\n\tconst { t } = useTranslation();\r\n\tconst [isSubmitting, setIsSubmitting] = useState(false);\r\n\r\n\tconst { control, handleSubmit, reset } = useForm<SourceTypeFormValues>({\r\n\t\tmode: 'all',\r\n\t\tresolver: yupResolver(validationSchema),\r\n\t\tdefaultValues,\r\n\t});\r\n\r\n\tconst handleClose = () => {\r\n\t\treset(defaultValues);\r\n\t\tsetIsOpen(false);\r\n\t};\r\n\r\n\tconst onSubmit = async (values: SourceTypeFormValues) => {\r\n\t\tsetIsSubmitting(true);\r\n\t\ttry {\r\n\t\t\tawait onSave({\r\n\t\t\t\t...values.source_type,\r\n\t\t\t\tdescription: values.source_type.description?.trim() || null,\r\n\t\t\t});\r\n\t\t\thandleClose();\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(t('common.source_type.error_creating_source_type'), error);\r\n\t\t} finally {\r\n\t\t\tsetIsSubmitting(false);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleSubmitForm = (e: React.FormEvent<HTMLFormElement>) => {\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\t\thandleSubmit(onSubmit)(e);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<Modal\r\n\t\t\topen={isOpen}\r\n\t\t\tonClose={handleClose}\r\n\t\t\tmaxWidth={modalProps?.maxWidth || 'sm'}\r\n\t\t\tfullWidth={modalProps?.fullWidth ?? true}\r\n\t\t\t{...modalProps}\r\n\t\t>\r\n\t\t\t<form onSubmit={handleSubmitForm}>\r\n\t\t\t\t{(isSubmitting || isLoading) && <ModalLoader />}\r\n\t\t\t\t<DialogTitle className=\"brandAddModal--DialogTitle\">\r\n\t\t\t\t\t<Typography type=\"s3\" color=\"inherit\" weight=\"medium\">\r\n\t\t\t\t\t\t{t('common.source_type.create_new_source_type')}\r\n\t\t\t\t\t</Typography>\r\n\t\t\t\t\t<IconButton onClick={(e) => {\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\thandleClose();\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\t\t<Close fontSize=\"small\" />\r\n\t\t\t\t\t</IconButton>\r\n\t\t\t\t</DialogTitle>\r\n\t\t\t\t<DialogContent dividers>\r\n\t\t\t\t\t<Grid container spacing={2}>\r\n\t\t\t\t\t\t<Grid item xs={12}>\r\n\t\t\t\t\t\t\t<DynamicInput\r\n\t\t\t\t\t\t\t\tlabel={t('common.source_type.source_type_name')}\r\n\t\t\t\t\t\t\t\tname=\"name\"\r\n\t\t\t\t\t\t\t\tfieldArrayName=\"source_type\"\r\n\t\t\t\t\t\t\t\tplaceholder={t('common.source_type.enter_source_type_name')}\r\n\t\t\t\t\t\t\t\tformControl={control}\r\n\t\t\t\t\t\t\t\trequired\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</Grid>\r\n\t\t\t\t\t\t<Grid item xs={12}>\r\n\t\t\t\t\t\t\t<DynamicInput\r\n\t\t\t\t\t\t\t\tlabel={t('common.source_type.description')}\r\n\t\t\t\t\t\t\t\tname=\"description\"\r\n\t\t\t\t\t\t\t\tfieldArrayName=\"source_type\"\r\n\t\t\t\t\t\t\t\tplaceholder={t('common.source_type.enter_description_optional')}\r\n\t\t\t\t\t\t\t\tformControl={control}\r\n\t\t\t\t\t\t\t\tis_multiline\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</Grid>\r\n\t\t\t\t\t</Grid>\r\n\t\t\t\t</DialogContent>\r\n\t\t\t\t<DialogActions>\r\n\t\t\t\t\t<Box display=\"flex\" gap={1.5} width=\"100%\" justifyContent=\"flex-end\">\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant=\"outlined\"\r\n\t\t\t\t\t\t\tonClick={(e) => {\r\n\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t\thandleClose();\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tdisabled={isSubmitting || isLoading}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{t('common.cancel')}\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant=\"contained\"\r\n\t\t\t\t\t\t\ttype=\"submit\"\r\n\t\t\t\t\t\t\tonClick={(e) => e.stopPropagation()}\r\n\t\t\t\t\t\t\tloading={isSubmitting || isLoading}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{t('common.source_type.create_source_type')}\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</DialogActions>\r\n\t\t\t</form>\r\n\t\t</Modal>\r\n\t);\r\n};\r\n\r\nexport { SourceTypeAddModal };\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport React from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport * as Yup from 'yup';\r\nimport {\r\n Box,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n Grid,\r\n IconButton\r\n} from '@mui/material';\r\nimport Close from '@mui/icons-material/Close';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport Modal from './modal/modal';\r\nimport Typography from './typography/typography';\r\nimport Button from './button/button';\r\nimport ModalLoader from './loaders/modal-loader';\r\nimport { DynamicInput, IModalComponentProps } from './form-control';\r\nimport DynamicCheckBox from './form-control/form-builder/form-builder-element/checkbox';\r\n\r\ninterface IFormValues {\r\n journal_type_data: {\r\n name: string;\r\n is_payment: boolean;\r\n };\r\n}\r\n\r\nconst journalTypeValidationSchema = Yup.object().shape({\r\n journal_type_data: Yup.object().shape({\r\n name: Yup.string()\r\n .required('Name is required')\r\n .max(100, 'Name must be at most 100 characters'),\r\n is_payment: Yup.boolean()\r\n })\r\n});\r\n\r\nexport const JournalTypeAddModal: React.FC<IModalComponentProps> = ({\r\n isOpen,\r\n setIsOpen,\r\n onSave,\r\n isLoading,\r\n modalProps,\r\n}) => {\r\n const { t } = useTranslation();\r\n\r\n const { control, handleSubmit, reset, trigger } = useForm<any>({\r\n mode: 'all',\r\n resolver: yupResolver(journalTypeValidationSchema),\r\n defaultValues: {\r\n journal_type_data: {\r\n name: '',\r\n is_payment: false\r\n }\r\n }\r\n });\r\n\r\n const handleModalClose = () => {\r\n reset({ \r\n journal_type_data: { \r\n name: '', \r\n is_payment: false \r\n } \r\n });\r\n setIsOpen();\r\n };\r\n\r\n const onSubmit = async (values: IFormValues) => {\r\n const isValid = await trigger();\r\n if (!isValid) return;\r\n await onSave(values?.journal_type_data as any);\r\n handleModalClose();\r\n };\r\n\r\n return (\r\n <Modal\r\n open={isOpen}\r\n onClose={handleModalClose}\r\n maxWidth='sm'\r\n fullWidth\r\n {...modalProps}\r\n >\r\n <>\r\n <form onSubmit={handleSubmit(onSubmit)}>\r\n {isLoading && <ModalLoader />}\r\n <DialogTitle className='journalTypeAddModal--DialogTitle'>\r\n <Typography type='s3' color='inherit' weight='medium'>\r\n {t(\"accounting.journalType.addModal.title\", \"Create New Journal Type\")}\r\n </Typography>\r\n <IconButton onClick={handleModalClose}>\r\n <Close fontSize='small' />\r\n </IconButton>\r\n </DialogTitle>\r\n <DialogContent className='journalTypeAddModal--DialogContents'>\r\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\r\n <Grid item sm={12}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t(\"accounting.journalType.form.name_label\", \"Name\")}\r\n name='name'\r\n fieldArrayName='journal_type_data'\r\n placeholder={t(\"accounting.journalType.form.name_placeholder\", \"Enter journal type name\")}\r\n required\r\n />\r\n </Grid>\r\n <Grid item sm={12}>\r\n <DynamicCheckBox\r\n formControl={control}\r\n label={t(\"accounting.journalType.form.is_payment_label\", \"Is Payment\")}\r\n name='is_payment'\r\n fieldArrayName='journal_type_data'\r\n title={t(\"accounting.journalType.form.is_payment_label\", \"Is Payment\")}\r\n />\r\n </Grid>\r\n </Grid>\r\n </DialogContent>\r\n <DialogActions className='journalTypeAddModal--DialogAction'>\r\n <span></span>\r\n <Box display='flex' gap={1.5}>\r\n <Button\r\n className='journalTypeAddModal--DialogAction--WhiteBtn'\r\n onClick={handleModalClose}\r\n >\r\n {t(\"common.cancel\", \"Cancel\")}\r\n </Button>\r\n <Button type='button' onClick={handleSubmit(onSubmit)}>\r\n {t(\"common.save\", \"Save\")}\r\n </Button>\r\n </Box>\r\n </DialogActions>\r\n </form>\r\n </>\r\n </Modal>\r\n );\r\n};\r\n","import { getErrorMessage, getToken } from '../../../../utils/common';\r\nimport { postV1WarehouseLocation, postV1InventoryFixedAssetItems, postV1CategoryItems, postV1Brand } from '../../../../api-client/api.inventory/api';\r\nimport { PostV1WarehouseLocationRequest } from '../../../../api-client/api.inventory/api-types';\r\nimport { enqueueSnackbar } from 'notistack';\r\nimport { postV1Parties, postV1PartiesIndustry, postV1JournalTypes } from '../../../../api-client/api.accounting/api';\r\nimport { postV1Teams, postV1Designation, postV1Departments, postV1DepartmentsTeams } from '../../../../api-client/api.hrms/api';\r\nimport { postV1SourceTypes } from '../../../../api-client/api.sales/api';\r\nimport { CustomerVendorModal } from '@/components/parties-modal';\r\nimport { TeamAddModal } from '../../../team-add-modal';\r\nimport { DepartmentAddModal } from '@/components/department-add-modal';\r\nimport { LocationAddModal } from './location-add-modal';\r\nimport { DesignationAddModal } from '@/components/designation-add-modal';\r\nimport { FixedAssetItemAddModal } from './fixed-asset-item-add-modal';\r\nimport { DialogProps } from '@mui/material';\r\nimport { BrandAddModal } from '@/components/brand-add-modal';\r\nimport { CategoryAddModal } from '@/components/category-add-modal';\r\nimport { IndustryAddModal } from '@/components/industry-add-modal';\r\nimport { SourceTypeAddModal } from '@/components/source-type-add-modal/source-type-add-modal';\r\nimport { JournalTypeAddModal } from '@/components/journal-type-add-modal';\r\n\r\nexport const createApiThunk = async (api: (payload: any) => Promise<any>, payload: any) => {\r\n\ttry {\r\n\t\treturn await api({ ...payload, ...getToken() })\r\n\t} catch (error) {\r\n\t\tenqueueSnackbar(getErrorMessage(error?.message), { variant: 'error' });\r\n\t\tthrow error;\r\n\t}\r\n}\r\n\r\nexport interface IAddConfig {\r\n\tapi: (payload: any) => Promise<any>;\r\n\tcomponent: any;\r\n}\r\n\r\nexport interface IModalComponentProps {\r\n\tisOpen: boolean;\r\n\tsetIsOpen: () => void;\r\n\tmodalProps?: DialogProps;\r\n\tonSave: (data: string) => void;\r\n\tisLoading?: boolean;\r\n}\r\n\r\nconst addMapper: Record<string, IAddConfig> = {\r\n\tlocation: {\r\n\t\tapi: (payload: PostV1WarehouseLocationRequest) => createApiThunk(postV1WarehouseLocation, payload),\r\n\t\tcomponent: LocationAddModal,\r\n\t},\r\n\tparty: {\r\n\t\tapi: (payload: any) => createApiThunk(postV1Parties, payload),\r\n\t\tcomponent: CustomerVendorModal,\r\n\t},\r\n\tdepartment: {\r\n\t\tapi: (payload: any) => createApiThunk(postV1Departments, payload),\r\n\t\tcomponent: DepartmentAddModal,\r\n\t},\r\n\tteam: {\r\n\t\tapi: (payload: any) => createApiThunk(postV1DepartmentsTeams, payload),\r\n\t\tcomponent: TeamAddModal,\r\n\t},\r\n\tdesignation: {\r\n\t\tapi: (payload: any) => createApiThunk(postV1Designation, payload),\r\n\t\tcomponent: DesignationAddModal,\r\n\t},\r\n\tfixedAssetItem: {\r\n\t\tapi: (payload: any) => createApiThunk(postV1InventoryFixedAssetItems, payload),\r\n\t\tcomponent: FixedAssetItemAddModal,\r\n\t},\r\n\tbrand: {\r\n\t\tapi: (payload: any) => createApiThunk(postV1Brand, payload),\r\n\t\tcomponent: BrandAddModal,\r\n\t},\r\n\tcategory: {\r\n\t\tapi: (payload: any) => createApiThunk(postV1CategoryItems, payload),\r\n\t\tcomponent: CategoryAddModal,\r\n\t},\r\n\tindustry: {\r\n\t\tapi: (payload: any) => createApiThunk(postV1PartiesIndustry, payload),\r\n\t\tcomponent: IndustryAddModal,\r\n\t},\r\n\tsourceType: {\r\n\t\tapi: (payload: any) => createApiThunk(postV1SourceTypes, payload),\r\n\t\tcomponent: SourceTypeAddModal,\r\n\t},\r\n\tjournalType: {\r\n\t\tapi: (payload: any) => createApiThunk(postV1JournalTypes, payload),\r\n\t\tcomponent: JournalTypeAddModal,\r\n\t},\r\n\tjournal_type: {\r\n\t\tapi: (payload: any) => createApiThunk(postV1JournalTypes, payload),\r\n\t\tcomponent: JournalTypeAddModal,\r\n\t},\r\n};\r\n\r\nexport const dynamicSelectAdd = (addType: string): IAddConfig | null => {\r\n\tconst config = addMapper[addType];\r\n\r\n\tif (!config) {\r\n\t\tconsole.warn(`No configuration found for addType: ${addType}`);\r\n\t\treturn null;\r\n\t}\r\n\r\n\treturn {\r\n\t\t...config\r\n\t};\r\n};\r\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\r\nimport {\r\n Box,\r\n CircularProgress,\r\n Divider,\r\n IconButton,\r\n InputAdornment,\r\n MenuItem,\r\n OutlinedInput,\r\n} from \"@mui/material\";\r\nimport Select from \"./select/select\";\r\nimport Checkbox from \"./checkbox/checkbox\";\r\nimport Typography from \"./typography/typography\";\r\nimport { Close } from \"./icons\";\r\nimport { debounce, sortBy } from \"lodash\";\r\nimport { fetchApi } from \"../utils/api\";\r\nimport ChipOrPlaceholder from \"./form-control/form-builder/form-builder-element/chip-or-placeholder\";\r\nimport { Add } from \"@mui/icons-material\";\r\nimport { useLanguage } from \"../hooks/useLangauge\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { dynamicSelectAdd } from \"./form-control/form-builder/form-builder-element/select-configuration\";\r\nimport { useAuth } from \"../hooks/useAuth\";\r\n\r\ninterface IOption {\r\n id: string | number;\r\n value: string | number;\r\n label: string | React.ReactNode;\r\n disabled?: boolean;\r\n isGroup?: boolean;\r\n options?: IOption[];\r\n searchLabel?: string;\r\n}\r\n\r\ninterface IPaginationState {\r\n page: number;\r\n hasMore: boolean;\r\n isLoadingMore: boolean;\r\n total: number;\r\n}\r\n\r\ninterface IMenuItems {\r\n options: IOption[];\r\n multiple: boolean;\r\n placeholder: string;\r\n with_checkboxes: boolean;\r\n values: string | string[];\r\n field: any;\r\n disabledIds: any[];\r\n handleClear: () => void;\r\n handleChange?: (value: string | string[]) => void;\r\n hasParent?: boolean;\r\n}\r\n\r\n// Custom API fetch function type for parent components\r\ninterface CustomFetchApiParams {\r\n search?: string;\r\n filters?: any;\r\n limit: number;\r\n skip: number;\r\n select?: string;\r\n order?: string;\r\n}\r\n\r\ninterface CustomFetchApiResponse {\r\n data: IOption[];\r\n pagination?: {\r\n totalCount: number;\r\n };\r\n}\r\n\r\ninterface SearchableSelectProps {\r\n labelId: string;\r\n label: string;\r\n value: any;\r\n onChange?: (event: any, selectedData?: any) => void;\r\n options: IOption[];\r\n multiple?: boolean;\r\n placeholder?: string;\r\n size?: \"small\" | \"medium\";\r\n searchPlaceholder?: string;\r\n CustomDropDownIcon: React.ReactNode;\r\n customStyle: any;\r\n name?: string;\r\n defaultValue?: any;\r\n apiType?: string;\r\n isInternal?: boolean;\r\n autoFocus?: any;\r\n error?: any;\r\n disabled: any;\r\n customeFilter?: string;\r\n attributes?: string;\r\n getSelectedData?: (row: any) => void;\r\n disabledIds: any[];\r\n labelKey?: string;\r\n valueKey?: string;\r\n inputStyle?: any;\r\n onChipRemove?: (value: string) => void;\r\n selectedLabel?: string;\r\n is_loading?: boolean;\r\n hasParent?: boolean;\r\n sortOrder?: string;\r\n handleChange?: (value: string | string[]) => void;\r\n enable_footer?: boolean;\r\n onFooterClick?: () => void;\r\n showCancelButton?: boolean;\r\n /** Custom API function to fetch options from parent component */\r\n customFetchApi?: (params: CustomFetchApiParams) => Promise<CustomFetchApiResponse>;\r\n addType?: string;\r\n isMergeOptions?: boolean;\r\n attributes?: string[];\r\n modalComponentProps?: any;\r\n}\r\n\r\nconst generateMenuItems = ({\r\n options,\r\n multiple,\r\n placeholder,\r\n with_checkboxes,\r\n values,\r\n field,\r\n disabledIds,\r\n handleClear,\r\n handleChange,\r\n hasParent = false,\r\n}: IMenuItems) => {\r\n const itemDisabled = (ls: any) => disabledIds?.includes(ls);\r\n const items: React.ReactElement[] = [];\r\n\r\n if (!multiple) {\r\n items.push(\r\n <MenuItem disabled value='' key=\"placeholder\" sx={{ opacity: `0 !important`, height: `0 !important`, p: `0 !important`, m: `0 !important` }}>\r\n <Typography type='s3' color='theme.secondary.1000'>\r\n <em>{placeholder}</em>\r\n </Typography>\r\n </MenuItem>\r\n );\r\n }\r\n\r\n const selectedValues = Array.isArray(values) ? values?.filter((value) => value) : [];\r\n\r\n // Parent selection handlers\r\n const handleParentChange = (parentValue: string, childOptions: IOption[]) => {\r\n const childValues = childOptions.map((child) => child.value);\r\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\r\n\r\n const isParentSelected = valueArray.includes(parentValue);\r\n const updatedValues = isParentSelected\r\n ? valueArray.filter((value) => value !== parentValue && !childValues.includes(value))\r\n : [...new Set([...valueArray, parentValue, ...childValues])];\r\n\r\n handleChange?.(updatedValues);\r\n };\r\n\r\n const isAllOptionsSelected = (parentValue: string, childOptions: IOption[]) => {\r\n const childValues = childOptions.map((child) => child.value);\r\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\r\n return childValues.every((childValue) => valueArray.includes(childValue));\r\n };\r\n\r\n const isSomeOptionsSelected = (childOptions: IOption[]) => {\r\n const childValues = childOptions.map((child) => child.value);\r\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\r\n return childValues.some((childValue) => valueArray.includes(childValue));\r\n };\r\n\r\n Array.isArray(options) && options?.length > 0 && options?.forEach((option, index) => {\r\n items.push(\r\n <MenuItem\r\n value={option?.value}\r\n key={`${option?.value}-${index}`}\r\n disabled={Boolean(option?.disabled) || itemDisabled(option?.value) || (hasParent && !multiple)}\r\n className={option?.isGroup ? 'select--MenuItemHeader' : ''}\r\n onClick={() => {\r\n if (values?.length == 1) {\r\n handleClear();\r\n }\r\n }}\r\n >\r\n <Box sx={{ display: 'flex', gap: 1 }}>\r\n {multiple && with_checkboxes && (\r\n <Checkbox\r\n checked={\r\n hasParent\r\n ? isAllOptionsSelected(option.value, option.options || [])\r\n : Boolean(Array.isArray(values) && values?.indexOf(option?.value) > -1)\r\n }\r\n indeterminate={\r\n hasParent && isSomeOptionsSelected(option.options || [])\r\n }\r\n onChange={() =>\r\n hasParent\r\n ? handleParentChange(option.value, option.options || [])\r\n : handleChange?.(option.value)\r\n }\r\n />\r\n )}\r\n <Typography\r\n type='s3'\r\n color='theme.secondary.1000'\r\n onClick={() => handleChange?.(option.value)}\r\n >\r\n {option?.label}\r\n </Typography>\r\n </Box>\r\n </MenuItem>\r\n );\r\n\r\n // Handle child options for grouped items\r\n if (option?.isGroup && Array.isArray(option?.options)) {\r\n option.options.forEach((opt, index) => {\r\n items.push(\r\n <MenuItem\r\n id={`${option.value}-${opt.value} ${index}`}\r\n value={opt.value}\r\n disabled={Boolean(opt.disabled) || itemDisabled(opt.value)}\r\n sx={{ pl: 5 }}\r\n onClick={() => {\r\n if (values?.length == 1) {\r\n handleClear();\r\n }\r\n }}\r\n key={`${option.value}-${opt.value} ${index}`}\r\n >\r\n <Box sx={{ display: 'flex', gap: 1 }}>\r\n {multiple && with_checkboxes && (\r\n <Checkbox\r\n checked={Boolean(Array.isArray(values) && values?.indexOf(opt.value) > -1)}\r\n />\r\n )}\r\n <Typography\r\n id={`${option.value}-${opt.value} ${index}`}\r\n type='s3'\r\n color='theme.secondary.1000'\r\n onClick={() => handleChange?.(String(opt.value))}\r\n >\r\n {opt.label == \"Payment Entries\" ? \"Payment and Collection Entries\" : opt.label || opt.value}\r\n </Typography>\r\n </Box>\r\n </MenuItem>\r\n );\r\n });\r\n }\r\n });\r\n\r\n // Footer item\r\n if (field.enable_footer || field.addType) {\r\n items.push(\r\n <Box key=\"footer\" sx={{ position: 'sticky', bottom: 0, background: '#fff', zIndex: 1 }}>\r\n <Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\r\n <MenuItem sx={{ gap: 1 }} onClick={() => {\r\n if (field.onFooterClick) {\r\n field.onFooterClick();\r\n } else if (field.handleModalOpen) {\r\n field.handleModalOpen();\r\n }\r\n }}>\r\n <Add fontSize='small' />\r\n <Typography type='s4' color='theme.secondary.1000'>\r\n Create New {field.label}\r\n </Typography>\r\n </MenuItem>\r\n </Box>\r\n );\r\n }\r\n\r\n // No data fallback\r\n if (!items.length || (items.length == 1 && !multiple)) {\r\n items.push(\r\n <MenuItem disabled key=\"no-data\">\r\n No data available\r\n </MenuItem>\r\n );\r\n }\r\n\r\n return items;\r\n};\r\n\r\nconst SearchableSelect: React.FC<SearchableSelectProps> = (props) => {\r\n const {\r\n labelId,\r\n label,\r\n value,\r\n onChange,\r\n options,\r\n multiple = false,\r\n size = \"small\",\r\n searchPlaceholder,\r\n placeholder,\r\n name,\r\n defaultValue,\r\n apiType,\r\n isInternal = false,\r\n autoFocus,\r\n error,\r\n disabled,\r\n customeFilter,\r\n attributes,\r\n getSelectedData,\r\n disabledIds,\r\n onChipRemove,\r\n selectedLabel,\r\n is_loading,\r\n customStyle = {},\r\n CustomDropDownIcon,\r\n labelKey,\r\n valueKey,\r\n inputStyle,\r\n hasParent = false,\r\n sortOrder = 'id:-1',\r\n handleChange,\r\n enable_footer = false,\r\n onFooterClick,\r\n showCancelButton = true,\r\n customFetchApi,\r\n addType,\r\n isMergeOptions = false,\r\n } = props;\r\n\r\n const [searchQuery, setSearchQuery] = useState(\"\");\r\n const [loading, setLoading] = useState<boolean>(false);\r\n const [dynamicOptions, setOptions] = useState<IOption[]>([]);\r\n const [selectedOptions, setSelectedOptions] = useState<IOption[]>([]);\r\n const [isAlreadyLoaded, setIsAlreadyLoaded] = useState(false);\r\n const [initailLoading, setInitialLoading] = useState(false);\r\n const [searchInitiate, setSearchInitiate] = useState(false);\r\n const [open, setOpen] = useState(false);\r\n const [prevFilter, setPrevFilter] = useState<any>(null);\r\n const [addConfig, setAddConfig] = useState<any>(null);\r\n const [isModalOpen, setIsModalOpen] = useState<boolean>(false);\r\n const [isAddLoading, setIsAddLoading] = useState<boolean>(false);\r\n const { t } = useTranslation();\r\n\r\n // Pagination state\r\n const [pagination, setPagination] = useState<IPaginationState>({\r\n page: 1,\r\n hasMore: true,\r\n isLoadingMore: false,\r\n total: 0\r\n });\r\n\r\n const { isRtl } = useLanguage();\r\n const limit = 25;\r\n\r\n const isInternalOptions = useMemo(() => {\r\n if (isMergeOptions && (apiType || customFetchApi)) return false;\r\n return isInternal || (!apiType && !customFetchApi);\r\n }, [isInternal, apiType, customFetchApi, isMergeOptions]);\r\n\r\n // Local search function for internal options\r\n const searchOptionsLocally = useCallback((searchTerm: string, value: any): IOption[] => {\r\n const currentOptions: IOption[] = (options && options.length > 0) ? options : [];\r\n if (!searchTerm) return currentOptions;\r\n\r\n const lowercasedSearchTerm = searchTerm.toLowerCase();\r\n\r\n const filteredOptions = hasParent\r\n ? options?.reduce((acc: IOption[], opt) => {\r\n const searchedOptions = opt.options?.filter((item) => {\r\n const label = React.isValidElement(item.label) ? item.searchLabel : String(item.label);\r\n return label?.toLowerCase().includes(lowercasedSearchTerm);\r\n });\r\n\r\n if (searchedOptions?.length) {\r\n acc.push({ ...opt, options: searchedOptions });\r\n }\r\n\r\n return acc;\r\n }, []) || []\r\n : options?.filter((opt) => {\r\n const label = React.isValidElement(opt.label) ? opt.searchLabel : String(opt.label);\r\n return label?.toLowerCase().includes(lowercasedSearchTerm);\r\n }) || [];\r\n\r\n return sortBySelectedValues(filteredOptions, value);\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [options, hasParent]);\r\n\r\n // Clear Selected Options\r\n const handleClear = () => {\r\n onChange?.({ target: { value: multiple ? [] : null } });\r\n if (getSelectedData && typeof getSelectedData === \"function\") {\r\n getSelectedData(null);\r\n }\r\n };\r\n\r\n // Get unique options\r\n const getUniqueOptions = useCallback((data: IOption[]): IOption[] => {\r\n const uniqueOptions = [\r\n ...new Map(data?.map(item => [item.value, item])).values()\r\n ];\r\n return uniqueOptions;\r\n }, []);\r\n\r\n // Sort by selected values\r\n const sortBySelectedValues = useCallback((arrayToSort: IOption[], value: any): IOption[] => {\r\n const selectedValues = Array.isArray(value) ? value : [value];\r\n const sortedValue = sortBy(arrayToSort, (item) => {\r\n const index = selectedValues.indexOf(item.id || item.value);\r\n return index === -1 ? Infinity : index;\r\n });\r\n return sortedValue;\r\n }, []);\r\n\r\n // Options with search and pagination support\r\n const filteredOptions = useMemo(() => {\r\n if (isInternalOptions) {\r\n return searchOptionsLocally(searchQuery, value);\r\n }\r\n const apiOptions = sortBySelectedValues(getUniqueOptions([...dynamicOptions, ...selectedOptions]), value);\r\n if (isMergeOptions) {\r\n const localOptions = searchOptionsLocally(searchQuery, value);\r\n return getUniqueOptions([...localOptions, ...apiOptions]);\r\n }\r\n return apiOptions;\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [searchQuery, dynamicOptions, options, value, isInternalOptions, selectedOptions, searchOptionsLocally, sortBySelectedValues, getUniqueOptions, isMergeOptions]);\r\n\r\n // Handle scroll pagination\r\n const handleScroll = useCallback((event: React.UIEvent<HTMLDivElement>) => {\r\n const { scrollTop, scrollHeight, clientHeight } = event.currentTarget;\r\n const isBottom = scrollHeight - scrollTop <= clientHeight + 10;\r\n\r\n if (isBottom && pagination.hasMore && !pagination.isLoadingMore && !isInternalOptions) {\r\n const nextPage = pagination.page + 1;\r\n fetchOptions(searchQuery, customeFilter, nextPage, true);\r\n }\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [pagination.hasMore, pagination.isLoadingMore, pagination.page, isInternalOptions, searchQuery, JSON.stringify(customeFilter)]);\r\n\r\n // Update Options\r\n const updateOptions = useCallback((newOptions: IOption[], append = false) => {\r\n setOptions((prevOptions) => {\r\n const oldOptions = append ? prevOptions : selectedOptions;\r\n const uniqueOptions = getUniqueOptions([...oldOptions, ...newOptions]);\r\n return uniqueOptions;\r\n });\r\n }, [selectedOptions, getUniqueOptions]);\r\n\r\n // Fetch Options with pagination support\r\n const fetchOptions = useCallback(async (searchTerm: any = '', filters = customeFilter, page = 1, append = false) => {\r\n // Skip if neither apiType nor customFetchApi is provided\r\n if (!apiType && !customFetchApi) return [];\r\n\r\n setLoading(true);\r\n if (page > 1) {\r\n setPagination(prev => ({ ...prev, isLoadingMore: true }));\r\n }\r\n\r\n try {\r\n let data: IOption[] = [];\r\n let paginationResult: { totalCount?: number } = {};\r\n\r\n // Use custom API if provided, otherwise use default fetchApi\r\n if (customFetchApi) {\r\n const response = await customFetchApi({\r\n search: searchTerm,\r\n filters,\r\n limit,\r\n skip: (page - 1) * limit,\r\n select: attributes,\r\n order: sortOrder\r\n });\r\n data = response?.data || [];\r\n paginationResult = response?.pagination || {};\r\n } else {\r\n const response = await fetchApi({\r\n apiKey: apiType!,\r\n filters: {\r\n limit,\r\n skip: (page - 1) * limit,\r\n search: searchTerm,\r\n filters,\r\n select: attributes,\r\n order: sortOrder\r\n },\r\n labelKey,\r\n valueKey\r\n });\r\n data = response?.data || [];\r\n paginationResult = response?.pagination || {};\r\n }\r\n\r\n if (data && Array.isArray(data)) {\r\n updateOptions(data, append);\r\n\r\n // Update pagination\r\n setPagination(prev => ({\r\n ...prev,\r\n page,\r\n hasMore: (paginationResult?.totalCount || 0) > (page * limit),\r\n total: paginationResult?.totalCount || 0,\r\n isLoadingMore: false\r\n }));\r\n\r\n if (data?.length > 0) {\r\n setSelectedData();\r\n }\r\n }\r\n\r\n return data || [];\r\n } catch (error) {\r\n console.error('Error fetching options:', error);\r\n setPagination(prev => ({ ...prev, isLoadingMore: false }));\r\n return [];\r\n } finally {\r\n setLoading(false);\r\n }\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [apiType, customFetchApi, attributes, sortOrder, limit, updateOptions, dynamicOptions]);\r\n\r\n // Search Options with debounce\r\n const debounceSearch = useMemo(\r\n () => debounce(async (searchTerm: string) => {\r\n if (loading) return;\r\n\r\n if (!searchTerm && !isInternalOptions && searchInitiate) {\r\n setPagination({\r\n page: 1,\r\n hasMore: true,\r\n isLoadingMore: false,\r\n total: 0\r\n });\r\n await fetchOptions('', customeFilter, 1, false);\r\n }\r\n if (searchTerm?.length > 1 && !isInternalOptions) {\r\n setPagination({\r\n page: 1,\r\n hasMore: true,\r\n isLoadingMore: false,\r\n total: 0\r\n });\r\n await fetchOptions(searchTerm, customeFilter, 1, false);\r\n }\r\n }, 700),\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n [isInternalOptions, searchInitiate, JSON.stringify(customeFilter)]\r\n );\r\n\r\n // Initial fetch with filter change detection\r\n const initialFetch = useCallback(async () => {\r\n const condition = JSON.stringify(customeFilter) !== JSON.stringify(prevFilter);\r\n\r\n if (condition && !isInternalOptions && !isAlreadyLoaded) {\r\n setPrevFilter(customeFilter);\r\n setOptions([]);\r\n setIsAlreadyLoaded(false);\r\n setPagination({\r\n page: 1,\r\n hasMore: true,\r\n isLoadingMore: false,\r\n total: 0\r\n });\r\n }\r\n\r\n if (!isInternalOptions && !isAlreadyLoaded) {\r\n await fetchOptions(searchQuery, customeFilter, 1, false);\r\n setIsAlreadyLoaded(true);\r\n }\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [JSON.stringify(customeFilter), isInternalOptions, isAlreadyLoaded]);\r\n\r\n // Set Selected Data\r\n const setSelectedData = useCallback(() => {\r\n let hasOptions = false;\r\n const isInOptions = filteredOptions?.filter((i: any) =>\r\n multiple ? value?.includes(i?.value) : i?.value == value\r\n );\r\n\r\n if ((Array.isArray(isInOptions) && isInOptions?.length > 0)) {\r\n getSelectedData?.(multiple ? isInOptions : isInOptions[0]);\r\n hasOptions = true;\r\n }\r\n\r\n return hasOptions;\r\n }, [JSON.stringify(filteredOptions), value, multiple]);\r\n\r\n // Fetch Options for Selected Id\r\n const fetchIdOptions = useCallback(async () => {\r\n if (await setSelectedData()) return;\r\n if (open) return;\r\n\r\n const fValue = multiple ? value && value?.filter(v => Boolean(Number(v))) : value ? value : null;\r\n const condition = (multiple ? fValue?.length > 0 : fValue) && !isInternalOptions;\r\n\r\n if (condition) {\r\n setInitialLoading(true);\r\n await fetchOptions('', { ...customeFilter, ...{ '&id.in': fValue } }, 1, false);\r\n setInitialLoading(false);\r\n }\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [open, value, JSON.stringify(customeFilter)]);\r\n\r\n const hasValue = multiple\r\n ? Array.isArray(value) && value.length > 0\r\n : value !== null && value !== undefined && value !== \"\";\r\n\r\n // Effects\r\n useEffect(() => {\r\n if (open) {\r\n debounceSearch(searchQuery);\r\n }\r\n return () => debounceSearch.cancel();\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [searchQuery, JSON.stringify(customeFilter), open, isAlreadyLoaded, debounceSearch]);\r\n\r\n useEffect(() => {\r\n setSelectedData();\r\n }, [setSelectedData]);\r\n\r\n useEffect(() => {\r\n fetchIdOptions();\r\n }, [fetchIdOptions]);\r\n\r\n useEffect(() => {\r\n if (open) {\r\n initialFetch();\r\n }\r\n }, [open, initialFetch]);\r\n\r\n useEffect(() => {\r\n const condition = JSON.stringify(customeFilter) !== JSON.stringify(prevFilter);\r\n if (customeFilter && condition) {\r\n setIsAlreadyLoaded(false);\r\n }\r\n }, [customeFilter, prevFilter]);\r\n\r\n useEffect(() => {\r\n if (value && !open) {\r\n const currentOptions: IOption[] = (options && options.length > 0) ? options : [];\r\n const selectedData = currentOptions?.filter((i: any) =>\r\n multiple ? value?.includes(i?.value) : i?.value == value\r\n ) || [];\r\n setSelectedOptions(selectedData);\r\n }\r\n setSelectedOptions(filteredOptions?.filter((i: any) =>\r\n multiple ? value?.includes(i?.value) : i?.value == value\r\n ));\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [value, open, options, multiple]);\r\n\r\n const handleModalOpen = useCallback(() => {\r\n setIsModalOpen(true);\r\n }, []);\r\n\r\n // Handle modal save\r\n const handleModalSave = useCallback(async (payload: any) => {\r\n if (!addConfig || !addConfig.api) {\r\n console.error('Add configuration is not properly set');\r\n return;\r\n }\r\n\r\n setIsAddLoading(true);\r\n try {\r\n const result = await addConfig.api(payload);\r\n setIsAddLoading(false);\r\n setIsModalOpen(false);\r\n if (!isInternalOptions) {\r\n setPagination({\r\n page: 1,\r\n hasMore: true,\r\n isLoadingMore: false,\r\n total: 0\r\n });\r\n setIsAlreadyLoaded(false);\r\n await fetchOptions('', customeFilter, 1, false);\r\n }\r\n if (result && result.data) {\r\n const newValue = multiple\r\n ? [...(value || []), result.data.id]\r\n : result.data.id;\r\n }\r\n } catch (error) {\r\n console.log(\"error\", error);\r\n setIsAddLoading(false);\r\n }\r\n\r\n\r\n }, [addConfig, isInternalOptions, fetchOptions, customeFilter, multiple, name, value]);\r\n\r\n useEffect(() => {\r\n const config = dynamicSelectAdd(addType!);\r\n setAddConfig(config);\r\n }, [addType])\r\n\r\n const handleOnChange = (event: any) => {\r\n const { value } = event.target;\r\n if ((multiple && Array.isArray(value) && value?.filter(v => v).length == 0) || !value) return;\r\n\r\n const isSelected = (item: any) => {\r\n return multiple ? value?.includes(item?.value) : item?.value === value;\r\n };\r\n\r\n const selected = filteredOptions?.filter(isSelected);\r\n onChange?.(event, multiple ? selected : selected?.[0]);\r\n getSelectedData?.(multiple ? selected : selected?.[0]);\r\n\r\n };\r\n\r\n const removeUndefine = (selectOptions: any[]) => {\r\n return Array.isArray(selectOptions) && selectOptions?.length > 0 && selectOptions?.filter((option) => option);\r\n };\r\n\r\n const showGroupLabel = (item: any) => {\r\n if (!item?.length) {\r\n return undefined\r\n }\r\n const mergedOptions = item?.flatMap((i: any) => i?.options)\r\n return mergedOptions?.find((option: any) => option?.value === value)?.label\r\n }\r\n\r\n return (\r\n <Select\r\n labelId={labelId}\r\n name={name}\r\n defaultValue={defaultValue || (multiple ? [] : '')}\r\n placeholder={t(placeholder)}\r\n className=\"filter-select\"\r\n size={size}\r\n onOpen={() => setOpen(true)}\r\n onClose={() => {\r\n setOpen(false);\r\n if (searchQuery?.length > 0) {\r\n setIsAlreadyLoaded(false);\r\n }\r\n setSearchInitiate(false);\r\n setSearchQuery('');\r\n }}\r\n onChange={handleOnChange}\r\n showCancelButton={showCancelButton}\r\n multiple={multiple}\r\n label={t(label)}\r\n fullWidth\r\n displayEmpty\r\n autoFocus={autoFocus}\r\n error={Boolean(error)}\r\n disabled={disabled}\r\n value={initailLoading ? (multiple ? [] : '') : value?.id || value || (multiple ? [] : '')}\r\n searchPlaceholder={searchPlaceholder}\r\n CustomDropdownIcon={CustomDropDownIcon}\r\n sx={(multiple && value?.length) ? { ...customStyle, \"& .MuiSelect-select\": { padding: '5.5px !important' } } : customStyle}\r\n MenuProps={{\r\n PaperProps: {\r\n onScroll: handleScroll,\r\n style: { maxHeight: 295, maxWidth: 250 }\r\n }\r\n }}\r\n input={\r\n !disabled ? (\r\n <OutlinedInput\r\n label=\"\"\r\n sx={inputStyle}\r\n endAdornment={\r\n <InputAdornment position=\"end\">\r\n {loading || is_loading ? (\r\n <CircularProgress\r\n size={20}\r\n sx={{ mr: 3, color: \"#4AC08C\" }}\r\n />\r\n ) : (\r\n showCancelButton && hasValue && (\r\n <IconButton\r\n aria-label=\"clear selection\"\r\n onClick={handleClear}\r\n edge=\"end\"\r\n sx={isRtl ? { ml: 2.5 } : { mr: 1.5 }}\r\n size=\"small\"\r\n >\r\n <Close fontSize=\"small\" color='theme.primary.800' />\r\n </IconButton>\r\n )\r\n )}\r\n </InputAdornment>\r\n }\r\n />\r\n ) : undefined\r\n }\r\n renderValue={(selected?: string | string[]) => {\r\n return (\r\n <>\r\n {Array.isArray(selected) ? (\r\n <ChipOrPlaceholder\r\n selectedLabel={selectedLabel}\r\n data={removeUndefine(selected)}\r\n placeholder={placeholder}\r\n onDelete={onChipRemove}\r\n disabled={disabled}\r\n chipProps={{\r\n sx: {\r\n bgcolor: 'theme.primary.100',\r\n border: 0,\r\n // borderRadius: '15px',\r\n '& .MuiTypography-body1': {\r\n color: 'theme.primary.800',\r\n fontWeight: \"500\",\r\n }\r\n }\r\n }}\r\n />\r\n ) : (\r\n hasParent ? showGroupLabel(filteredOptions) :\r\n Array.isArray(filteredOptions) && filteredOptions?.length > 0 && filteredOptions?.find(\r\n (option: any) => option?.value == value\r\n )?.label || selected || placeholder\r\n )}\r\n </>\r\n );\r\n }}\r\n handleSearch={(text) => {\r\n setSearchQuery(text);\r\n setSearchInitiate(true);\r\n }}\r\n >\r\n {generateMenuItems({\r\n options: filteredOptions,\r\n multiple: Boolean(multiple),\r\n placeholder,\r\n values: value,\r\n with_checkboxes: true,\r\n field: {\r\n ...props,\r\n enable_footer,\r\n onFooterClick,\r\n label,\r\n handleModalOpen\r\n },\r\n disabledIds,\r\n handleClear,\r\n handleChange,\r\n hasParent,\r\n t: (key: string) => key\r\n })}\r\n {pagination.isLoadingMore && (\r\n <MenuItem disabled>\r\n <Box sx={{ display: 'flex', justifyContent: 'center', width: '100%' }}>\r\n <CircularProgress size={20} />\r\n </Box>\r\n </MenuItem>\r\n )}\r\n {/* Modal for adding new items */}\r\n {addConfig && addConfig.component && (\r\n <>\r\n {React.createElement(addConfig.component, {\r\n isOpen: isModalOpen,\r\n setIsOpen: setIsModalOpen,\r\n isLoading: isAddLoading,\r\n onSave: handleModalSave,\r\n modalProps: {\r\n maxWidth: 'md',\r\n fullWidth: true\r\n },\r\n ...props?.modalComponentProps\r\n })}\r\n </>\r\n )}\r\n </Select>\r\n );\r\n};\r\n\r\nexport default SearchableSelect;","import { useMemo, useCallback } from 'react';\r\nimport { Box } from '@mui/material';\r\nimport TextField from '../../text-field/text-field';\r\nimport { ValueEditorProps } from 'react-querybuilder';\r\nimport '../filter.scss';\r\nimport DatePicker from '../../date-picker/date-picker';\r\nimport dayjs from 'dayjs';\r\n\r\nimport SearchableSelect from '../../searchable-select';\r\nimport _ from 'lodash';\r\nimport { formatLabel } from '../../../utils/format-text';\r\nimport { getToken } from '@/utils';\r\nimport { getV1FilterFilterTable } from '../../../api-client/api.system-feature/api';\r\n\r\nconst getFilterTableFields = async (\r\n\ttableName: string,\r\n\tsearchText: string,\r\n\tlimit: number,\r\n\toffset: number = 0\r\n) => {\r\n\ttry {\r\n\t\tconst tokenObj = getToken();\r\n\t\tconst response = await getV1FilterFilterTable({\r\n\t\t\ttable: tableName,\r\n\t\t\tsearch: searchText,\r\n\t\t\tlimit: limit,\r\n\t\t\toffset: offset,\r\n\t\t\t'x-token': tokenObj['x-token'],\r\n\t\t\t'x-timezone': String(tokenObj['x-timezone'])\r\n\t\t});\r\n\r\n\t\t// response could be of several types, but use optional chaining and type narrowing\r\n\t\tif ('data' in response && response.data) {\r\n\t\t\tconst result: any[] = (response.data as any)?.result ?? [];\r\n\t\t\tconst totalCount: number = (response as any)?.pagination?.totalCount ?? result.length;\r\n\t\t\tconst items = result.map((r: any) => ({ label: r.name, value: r.id }));\r\n\t\t\treturn { items, totalCount };\r\n\t\t}\r\n\t\treturn { items: [], totalCount: 0 };\r\n\t} catch {\r\n\t\treturn { items: [], totalCount: 0 };\r\n\t}\r\n};\r\n\r\nconst ValueEditor = (props: ValueEditorProps) => {\r\n\t// eslint-disable-next-line\r\n\tlet { values, value, handleOnChange, fieldData, rule, ...rest } = props;\r\n\tconsole.log(\"🚀 ~ ValueEditor ~ values:\", values)\r\n\r\n\tif (!value && fieldData.inputType == 'select') {\r\n\t\tvalue = null;\r\n\t} else if (!Array.isArray(value) && fieldData.inputType == 'select') {\r\n\t\tvalue = [];\r\n\t}\r\n\r\n\tconst isDisabled = useMemo(() => {\r\n\t\treturn rule.operator === 'null' || rule.operator === 'notNull';\r\n\t}, [rule.operator]);\r\n\r\n\tconst customFetch = useCallback(\r\n\t\tasync (params: any) => {\r\n\t\t\tconst search = params?.search || '';\r\n\t\t\tconst limit = params?.limit || 25;\r\n\t\t\tconst offset = params?.skip || 0;\r\n\t\t\tif (fieldData.table) {\r\n\t\t\t\tconst data = await getFilterTableFields(fieldData.table, search, limit, offset);\r\n\t\t\t\tconst optionData = data.items.map((r: any) => ({ id: r.value, value: r.value, label: r.label }));\r\n\t\t\t\treturn { data: optionData, pagination: { totalCount: data.totalCount } };\r\n\t\t\t} else {\r\n\t\t\t\t// const searchedOptions =\r\n\t\t\t\t// \tvalues?.filter((opt) => opt.label?.toLowerCase().includes(search.toLowerCase())) ||\r\n\t\t\t\t// \t[];\r\n\t\t\t\tconst optionData = values?.map((item: any) => ({\r\n\t\t\t\t\t...item,\r\n\t\t\t\t\tvalue: item?.name,\r\n\t\t\t\t\tlabel: item.label ? formatLabel(item.label) : ''\r\n\t\t\t\t}));\r\n\t\t\t\treturn {\r\n\t\t\t\t\tdata: optionData,\r\n\t\t\t\t\tpagination: { totalCount: optionData.length }\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t},\r\n\t\t[fieldData.table, values]\r\n\t);\r\n\r\n\tconst renderOptions = () => {\r\n\t\tswitch (fieldData.inputType) {\r\n\t\t\tcase 'select':\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<SearchableSelect\r\n\t\t\t\t\t\tkey={fieldData.name}\r\n\t\t\t\t\t\tlabel=''\r\n\t\t\t\t\t\tname='insurance_account'\r\n\t\t\t\t\t\tplaceholder='Select'\r\n\t\t\t\t\t\tonChange={(e: any, selected: any) => {\r\n\t\t\t\t\t\t\tconsole.log(\"🚀 ~ renderOptions ~ selected:\", selected)\r\n\t\t\t\t\t\t\tconst mappedValue = selected?.map((i: any) => ({\r\n\t\t\t\t\t\t\t\t...i,\r\n\t\t\t\t\t\t\t\tname: i?.value\r\n\t\t\t\t\t\t\t}))\r\n\t\t\t\t\t\t\thandleOnChange(mappedValue)\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tvalue={value?.map(i => i?.value)}\r\n\t\t\t\t\t\tmultiple={true}\r\n\t\t\t\t\t\tcustomFetchApi={customFetch}\r\n\t\t\t\t\t\tdisabled={isDisabled}\r\n\t\t\t\t\t\tonChipRemove={() => handleOnChange([])}\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\t\t\tcase 'date':\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<DatePicker\r\n\t\t\t\t\t\tonChange={(val) =>\r\n\t\t\t\t\t\t\thandleOnChange(\r\n\t\t\t\t\t\t\t\tdayjs(val).isValid() ? dayjs(val).format('YYYY-MM-DD') : ''\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvalue={value ? dayjs(value) : null}\r\n\t\t\t\t\t\tdisabled={isDisabled}\r\n\t\t\t\t\t\tslotProps={{\r\n\t\t\t\t\t\t\ttextField: {\r\n\t\t\t\t\t\t\t\tplaceholder: 'YYYY-MM-DD',\r\n\t\t\t\t\t\t\t\tclassName: 'select-drps'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tformat='YYYY-MM-DD'\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\r\n\t\t\tdefault:\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<TextField\r\n\t\t\t\t\t\tvalue={value}\r\n\t\t\t\t\t\tonChange={(e: any) => {\r\n\t\t\t\t\t\t\thandleOnChange(e.target.value);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t{...rest}\r\n\t\t\t\t\t\tinputProps={{\r\n\t\t\t\t\t\t\tstyle: {\r\n\t\t\t\t\t\t\t\tfontSize: '0.8125rem'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tclassName='select-drps'\r\n\t\t\t\t\t\ttype={fieldData.inputType}\r\n\t\t\t\t\t\tdisabled={isDisabled}\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\t\t}\r\n\t};\r\n\r\n\treturn <Box width='100%'>{renderOptions()}</Box>;\r\n};\r\n\r\nexport { ValueEditor };\r\nexport default ValueEditor;\r\n","import { Box, MenuItem } from \"@mui/material\";\nimport Select from \"../../select/select\";\nimport Typography from \"../../typography/typography\";\nimport { OperatorSelectorProps } from \"react-querybuilder\";\nimport formatText from \"../../../utils/format-text\";\n\nconst OperatorSelect = (props: OperatorSelectorProps) => {\n const { handleOnChange, options, ...rest } = props;\n\n\n return (\n <Box width='100%'>\n <Select\n fullWidth\n {...rest}\n onChange={(e: any) => handleOnChange(e.target.value)}\n className=\"select-drps\"\n variant=\"outlined\"\n renderValue= {(selected: string) => {\n const dValue = options?.find(o => o.name==selected)?.label\n return dValue ? formatText(dValue) : selected\n }}\n >\n {options?.filter(o => Boolean(o.label?.trim()))?.map((op: any) => (\n <MenuItem key={op.name} value={op.name}>\n <Typography type=\"s4\" color=\"theme.secondary.1000\">\n {formatText(op.label)}\n </Typography>\n </MenuItem>\n ))}\n </Select>\n </Box>\n );\n};\n\nexport { OperatorSelect };\nexport default OperatorSelect;\n","import Button from \"../../button/button\";\n// import Typography from \"../../typography/typography\";\nimport { ActionProps } from \"react-querybuilder\";\nimport { Trash } from \"../../icons\";\n\nconst RemoveGroupAction = (props: ActionProps) => {\n const { handleOnClick } = props;\n\n return (\n <Button\n className=\"filterGrp-remove-btn\"\n variant=\"outlined\"\n onClick={handleOnClick}\n sx={({palette}) => ({\n marginRight: \"0px\",\n marginLeft: \"auto\",\n color: `${palette.theme.error?.[600]} !important`\n })}\n startIcon={<Trash color=\"theme.error.600\" fontSize=\"small\"/>}\n >\n Delete Group\n </Button>\n );\n};\n\nexport { RemoveGroupAction };\nexport default RemoveGroupAction;\n","import {\n Box,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n} from \"@mui/material\";\nimport Close from \"@mui/icons-material/Close\";\nimport { useEffect, useState } from \"react\";\nimport Modal from \"../modal/modal\";\nimport Typography from \"../typography/typography\";\nimport TextField from \"../text-field/text-field\";\nimport Button from \"../button/button\";\nimport { FolderSave } from \"../icons\";\n\ninterface SaveFilter {\n open: boolean;\n onClose: () => void;\n handleSubmit: (name: string) => void;\n oldName?: string;\n}\n\nconst SaveFilterModal = ({\n open,\n onClose,\n handleSubmit,\n oldName,\n}: SaveFilter) => {\n const [name, setName] = useState<string>(\"\");\n\n useEffect(() => {\n if (oldName !== undefined) {\n setName(oldName);\n }\n }, [oldName]);\n\n const handleSave = async (name: string) => {\n if (name) {\n const saved = await handleSubmit(name);\n\n if(saved) {\n setName(\"\");\n onClose();\n }\n }\n\n };\n\n return (\n <>\n <Modal fullWidth onClose={onClose} open={open}>\n <DialogTitle>\n <Box sx={{ display: 'flex', alignItems: 'center', gap:0.5 }}>\n <FolderSave sx={{ fontSize: '1.25rem'}}/>\n <Typography type=\"s2\" weight=\"medium\" color={\"theme.secondary.1000\"}>\n Save active filters\n </Typography>\n </Box>\n <IconButton edge=\"end\" onClick={onClose} size=\"small\">\n <Close fontSize=\"inherit\" />\n </IconButton>\n </DialogTitle>\n <DialogContent dividers>\n <TextField\n label=\"Name\"\n fullWidth\n placeholder=\"Name Filter\"\n value={name}\n onChange={(e: any) => setName(e.target.value)}\n />\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"outlined\"\n onClick={onClose}\n style={{\n color: \"black\",\n }}\n >\n Cancel\n </Button>\n <Button onClick={() => handleSave(name)}>\n {oldName ? \"Rename\" : \"Save\"}\n </Button>\n </DialogActions>\n </Modal>\n </>\n );\n};\n\nexport { SaveFilterModal };\nexport default SaveFilterModal;\n","/* eslint-disable */\r\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\r\nimport type { RuleGroupType } from \"react-querybuilder\";\r\nimport \"react-querybuilder/dist/query-builder.scss\";\r\nimport { QueryBuilder /* , formatQuery */ } from \"react-querybuilder\";\r\nimport { QueryBuilderMaterial } from \"@react-querybuilder/material\";\r\nimport {\r\n Box,\r\n IconButton,\r\n MenuItem,\r\n Dialog,\r\n DialogTitle,\r\n DialogContent,\r\n DialogActions,\r\n OutlinedInput,\r\n InputAdornment,\r\n Alert,\r\n} from \"@mui/material\";\r\nimport \"./filter.scss\";\r\nimport Select from \"../select/select\";\r\nimport Typography from \"../typography/typography\";\r\nimport { Close } from \"@mui/icons-material\";\r\nimport CombinatorSelect from \"./components/combinator-select\";\r\nimport RemoveAction from \"./components/remove-action\";\r\nimport FieldSelect from \"./components/field-select\";\r\nimport AddFilterButton from \"./components/add-filter\";\r\nimport AddGroupButton from \"./components/add-group\";\r\nimport ValueEditor from \"./components/value-editor\";\r\nimport OperatorSelect from \"./components/operator-select\";\r\nimport Button from \"../button/button\";\r\nimport RemoveGroupAction from \"./components/delete-group\";\r\nimport SearchBar from \"../search-bar/search-bar\";\r\nimport SaveFilterModal from \"../save-filter-modal/save-filter-modal\";\r\n\r\nimport {\r\n putV1FilterId,\r\n deleteV1FilterId,\r\n} from \"../../api-client/api.system-feature/api\";\r\nimport type * as Types from \"../../api-client/api.system-feature/api-types\";\r\nimport { auth } from \"../../constants/auth\";\r\nimport { generateFields, generateQueryString, getErrorMessage } from \"../../utils/common\";\r\nimport { usePages } from \"../../hooks/use-pages\";\r\nimport _ from \"lodash\";\r\nimport { Edit, Trash } from \"../icons\";\r\nimport { enqueueSnackbar } from \"notistack\";\r\nimport { IResources, routeToResourceMap } from \"../../constants/route-page-map\";\r\nimport { useLocation } from \"react-router-dom\";\r\nimport { useLanguage } from \"../../hooks/useLangauge\";\r\n\r\ninterface IFilter {\r\n open: boolean;\r\n onClose: () => void;\r\n activeView?: string;\r\n savedFilters?: SavedFilter[];\r\n fetchSavedFilters?: () => Promise<void>;\r\n setFilterBar?: any;\r\n onSaveFilter?: (query: RuleGroupType) => void;\r\n onSelectedFilter?: (filterName: string) => void;\r\n fields: any;\r\n applyFilter: any;\r\n isUseFields?: boolean;\r\n}\r\n\r\ninterface SavedFilter {\r\n id: string;\r\n name: string;\r\n query: RuleGroupType;\r\n}\r\n\r\nconst initialQuery: RuleGroupType = { combinator: \"and\", rules: [] };\r\n\r\nconst Filter = ({\r\n open,\r\n onClose,\r\n // activeView,\r\n savedFilters,\r\n fetchSavedFilters,\r\n onSaveFilter,\r\n onSelectedFilter,\r\n applyFilter,\r\n fields = [],\r\n isUseFields = false\r\n}: IFilter) => {\r\n const location = useLocation();\r\n\r\n const token = localStorage.getItem(auth.storageTokenKeyName);\r\n const { updatePageInfo, activePage, schemaFields, setActivePage } = usePages()\r\n\r\n fields = isUseFields ? generateFields(fields) : (schemaFields.length ? generateFields(schemaFields) : fields)\r\n const [query, setQuery] = useState<RuleGroupType>(initialQuery);\r\n const [filteredSavedFilters, setFilteredSavedFilters] = useState<\r\n SavedFilter[]\r\n >(savedFilters ?? []);\r\n const [selectedFilter, setSelectedFilter] = useState<any>(null);\r\n const [openRenameFilter, setIsOpenRenameFilter] = useState<any>(null);\r\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\r\n const { isRtl } = useLanguage();\r\n const resources: IResources = useMemo(() => routeToResourceMap[location.pathname] || null, [location.pathname])\r\n\r\n useEffect(() => {\r\n savedFilters && setFilteredSavedFilters(savedFilters);\r\n }, [savedFilters]);\r\n\r\n\r\n const handleApplyFilter = useCallback((clear: boolean = false) => {\r\n let q = query\r\n const isInvalid = isDuplicatedFilters(q)\r\n if (isInvalid) {\r\n setErrorMessage(\"Invalid filter\")\r\n return\r\n }\r\n if (clear) {\r\n q = initialQuery\r\n setQuery(q)\r\n } else {\r\n const generatedSQLQuery = q ? generateQueryString(q) : q;\r\n updatePageInfo({ filters: q, filterQueryString: generatedSQLQuery })\r\n // applyFilter(generatedSQLQuery);\r\n onClose();\r\n }\r\n }, [query, applyFilter, onClose]);\r\n\r\n const handleQueryChange = (q: RuleGroupType) => {\r\n const updatedRules = q.rules.map((rule, i) => ({\r\n ...rule,\r\n value: rule.field !== query.rules?.[i]?.field || ['null', 'notNull'].includes(rule.operator) ? \"\" : rule.value\r\n }));\r\n let isValid = true;\r\n let errorMessage = '';\r\n\r\n // // Helper function to check for invalid aggregate usage, considering parent combinators\r\n // const checkForInvalidAggregateUsage = (rules: any[], combinator: string, parentCombinator: string | null): boolean => {\r\n // let hasAggregateField = false;\r\n // let hasNonAggregateField = false;\r\n\r\n // rules.forEach(rule => {\r\n // // Check nested groups\r\n // if (rule.rules) {\r\n // // If the current group or any parent has an 'OR', pass it down\r\n // const currentCombinator = combinator === 'or' || parentCombinator === 'or' ? 'or' : combinator;\r\n // checkForInvalidAggregateUsage(rule.rules, rule.combinator, currentCombinator);\r\n // } else {\r\n // // Find the field in the fields array and check if it's an aggregate\r\n // const field = fields.find((f: any) => f.name === rule.field);\r\n\r\n // if (field?.is_aggregate) {\r\n // hasAggregateField = true;\r\n // } else {\r\n // hasNonAggregateField = true;\r\n // }\r\n // }\r\n // });\r\n\r\n // // If any parent or current rule uses 'OR' with a mix of aggregate and non-aggregate fields, it's invalid\r\n // if ((combinator === 'or' || parentCombinator === 'or') && hasAggregateField && hasNonAggregateField) {\r\n // isValid = false;\r\n // errorMessage = 'Mixing aggregate and non-aggregate fields in OR conditions may lead to unexpected results.';\r\n // }\r\n\r\n // return isValid;\r\n // };\r\n\r\n // Start checking from the root level (no parent combinator initially)\r\n\r\n\r\n // Always set the query, regardless of validity\r\n setQuery({ ...q, rules: updatedRules });\r\n\r\n // Set error message if invalid, otherwise clear it\r\n if (!isValid) {\r\n setErrorMessage(errorMessage);\r\n } else {\r\n setErrorMessage(null);\r\n }\r\n\r\n // Always call onSaveFilter, if it exists\r\n if (onSaveFilter) {\r\n onSaveFilter(q);\r\n }\r\n };\r\n\r\n const handleFilterSwitch = (sf?: any) => {\r\n if (sf) {\r\n setSelectedFilter(sf);\r\n setQuery(sf.query);\r\n if (onSelectedFilter) {\r\n onSelectedFilter(sf);\r\n }\r\n } else {\r\n setSelectedFilter(null);\r\n setQuery(initialQuery);\r\n if (onSelectedFilter) {\r\n onSelectedFilter(null);\r\n }\r\n }\r\n };\r\n\r\n const handleSearchEvent = (searchText: string) => {\r\n const filteredFilters = savedFilters?.filter((filter: any) =>\r\n filter.name.toLowerCase().includes(searchText.toLowerCase())\r\n );\r\n if (filteredFilters) {\r\n setFilteredSavedFilters(filteredFilters);\r\n }\r\n };\r\n\r\n const handleRenameFilter = async (filterId: string, newName: string) => {\r\n const putFilterRequest: Types.PutV1FilterIdRequest = {\r\n \"x-token\": token,\r\n id: filterId,\r\n name: newName,\r\n module: resources?.fieldResource || resources?.pageResource\r\n };\r\n\r\n try {\r\n await putV1FilterId(putFilterRequest)\r\n // setSelectedFilter(newName);\r\n if (fetchSavedFilters) {\r\n fetchSavedFilters();\r\n }\r\n enqueueSnackbar('Filters renamed successfully.')\r\n } catch (error) {\r\n let m: string = 'Something went wrong on saving filters'\r\n if (error instanceof Error) {\r\n m = getErrorMessage(error.message)\r\n }\r\n enqueueSnackbar(m, { variant: 'error' })\r\n return false\r\n }\r\n return true\r\n };\r\n const handleUpdateSelectedFilterQuery = async () => {\r\n if (selectedFilter) {\r\n\r\n const putFilterRequest: Types.PutV1FilterIdRequest = {\r\n \"x-token\": token,\r\n id: selectedFilter.id,\r\n data: query,\r\n };\r\n\r\n putV1FilterId(putFilterRequest)\r\n .then((response: any) => {\r\n if (fetchSavedFilters) {\r\n fetchSavedFilters();\r\n }\r\n setActivePage((prev: any) => ({\r\n ...prev,\r\n filters: {\r\n ...prev.filters,\r\n rules: query.rules,\r\n combinator: query.combinator,\r\n name: selectedFilter.name\r\n\r\n }\r\n }));\r\n })\r\n .catch((err: any) => enqueueSnackbar(\"Error renaming saved filters:\", { variant: 'error' }));\r\n }\r\n };\r\n\r\n const handleSubmitRename = (name: string) => {\r\n if (openRenameFilter) {\r\n return handleRenameFilter(openRenameFilter.id, name);\r\n }\r\n };\r\n\r\n const handleDeleteFilter = async (filterId: string) => {\r\n const deleteFilterRequest: Types.DeleteV1FilterIdRequest = {\r\n \"x-token\": token,\r\n id: filterId,\r\n };\r\n\r\n deleteV1FilterId(deleteFilterRequest)\r\n .then((response: any) => {\r\n setSelectedFilter(null);\r\n setQuery(initialQuery);\r\n if (fetchSavedFilters) {\r\n fetchSavedFilters();\r\n }\r\n\r\n })\r\n .catch((err: any) => console.log(\"Error deleting saved filters:\", err));\r\n };\r\n\r\n useEffect(() => {\r\n let q = initialQuery\r\n if (!_.isEmpty(activePage.filters)) {\r\n q = activePage.filters\r\n }\r\n setQuery(q)\r\n const selectedFilter = savedFilters?.find((f: any) => f.name === activePage?.filters?.name);\r\n setSelectedFilter(selectedFilter || null);\r\n }, [activePage?.filters, savedFilters]);\r\n\r\n const isDuplicatedFilters = (rule) => {\r\n let uniques: string[] = []\r\n rule?.rules?.forEach((r: any) => {\r\n if (uniques.includes(r.field) && rule.combinator == 'and') {\r\n return true\r\n }\r\n uniques.push(r.field)\r\n })\r\n return uniques.length !== rule?.rules?.length\r\n }\r\n\r\n\r\n const isRuleInvalid = (rule: any): boolean => {\r\n // If it's a group (has nested rules), recurse\r\n if (Array.isArray(rule.rules)) {\r\n return rule.rules.length ? rule.rules.some(isRuleInvalid) : !rule.rules.length;\r\n }\r\n\r\n // Otherwise, validate individual rule\r\n return (\r\n !rule.field ||\r\n (_.isEmpty(rule.value) && !['null', 'notNull'].includes(rule.operator))\r\n );\r\n };\r\n\r\n const disabled = useMemo(() => isRuleInvalid(query) || errorMessage, [query, errorMessage])\r\n // const disabled = isRuleInvalid(query) || errorMessage;\r\n\r\n return (\r\n <div>\r\n <Dialog\r\n open={open}\r\n onClose={onClose}\r\n maxWidth='md'\r\n fullWidth={true}\r\n PaperProps={{\r\n sx: { borderRadius: 2 }\r\n }}\r\n >\r\n <DialogTitle className=\"filter-header\">\r\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\r\n Filters\r\n </Typography>\r\n <Box gap={1} display={\"flex\"}>\r\n <Select\r\n fullWidth\r\n size=\"small\"\r\n className=\"filter-dropdown\"\r\n value={selectedFilter ? selectedFilter.name : \"Saved Filters\"}\r\n onChange={(event: any) => {\r\n const sf = savedFilters?.find(f => f.name == event.target.value)\r\n handleFilterSwitch(sf)\r\n }}\r\n variant=\"outlined\"\r\n onClose={() => {\r\n setTimeout(() => {\r\n handleSearchEvent(\"\")\r\n }, 500);\r\n }}\r\n input={\r\n selectedFilter ? (\r\n <OutlinedInput\r\n label=''\r\n endAdornment={\r\n <InputAdornment position='end'>\r\n <IconButton\r\n aria-label='clear selection'\r\n onClick={() => {\r\n handleFilterSwitch()\r\n }}\r\n edge='end'\r\n sx={{ mr: 1.5 }}\r\n size='small'>\r\n <Close sx={{ fontSize: '1rem' }} />\r\n </IconButton>\r\n </InputAdornment>\r\n }\r\n />\r\n ) : undefined\r\n }\r\n >\r\n <div className=\"searchbar-box-list\">\r\n <SearchBar\r\n placeholder={\"Search Filters\"}\r\n handleSearch={(e) => handleSearchEvent(e)}\r\n />\r\n </div>\r\n {/* <Typography\r\n color=\"theme.secondary.1000\"\r\n type=\"s4\"\r\n className=\"filter-title\"\r\n >\r\n Saved Filters\r\n </Typography> */}\r\n {filteredSavedFilters?.map((savedFilter: SavedFilter) => (\r\n <MenuItem\r\n key={savedFilter.id}\r\n value={savedFilter?.name}\r\n className=\"menu-list\"\r\n selected={selectedFilter?.name == savedFilter?.name}\r\n >\r\n <Typography color=\"theme.secondary.1000\" type=\"s3\">\r\n {savedFilter?.name}\r\n </Typography>\r\n\r\n <div className=\"icon-list\">\r\n <IconButton size=\"small\" onClick={(e) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n setIsOpenRenameFilter(savedFilter)\r\n }}>\r\n <Edit fontSize=\"small\" color={selectedFilter?.name == savedFilter?.name ? \"theme.primary.800\" : 'inherit'} />\r\n </IconButton>\r\n <IconButton size=\"small\" onClick={(e) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n handleDeleteFilter(savedFilter.id)\r\n }} color=\"error\">\r\n <Trash fontSize=\"small\" color=\"theme.error.600\" />\r\n </IconButton>\r\n </div>\r\n </MenuItem>\r\n ))}\r\n </Select>\r\n <SaveFilterModal\r\n open={openRenameFilter !== null}\r\n onClose={() => setIsOpenRenameFilter(null)}\r\n handleSubmit={(name) => handleSubmitRename(name)}\r\n oldName={openRenameFilter?.name}\r\n />\r\n <Box>\r\n <IconButton size=\"small\" onClick={onClose}>\r\n <Close fontSize=\"small\" />\r\n </IconButton>\r\n </Box>\r\n </Box>\r\n </DialogTitle>\r\n <DialogContent className=\"content\">\r\n {/* Display error message */}\r\n {errorMessage && (\r\n <Alert severity=\"error\" sx={{ px: 1, pt: 0.5, mb: 1 }}>\r\n <Typography\r\n color=\"error\"\r\n type=\"s4\"\r\n >\r\n {errorMessage}\r\n </Typography>\r\n </Alert>\r\n )}\r\n <QueryBuilderMaterial>\r\n <QueryBuilder\r\n fields={fields || []}\r\n query={query}\r\n onQueryChange={handleQueryChange}\r\n showCombinatorsBetweenRules={true}\r\n controlClassnames={{\r\n header: \"actions\",\r\n }}\r\n controlElements={{\r\n addRuleAction: AddFilterButton,\r\n addGroupAction: AddGroupButton,\r\n combinatorSelector: CombinatorSelect,\r\n fieldSelector: FieldSelect,\r\n operatorSelector: OperatorSelect,\r\n removeRuleAction: RemoveAction,\r\n valueEditor: ValueEditor,\r\n removeGroupAction: RemoveGroupAction,\r\n }}\r\n />\r\n <Button\r\n variant=\"text\"\r\n className={isRtl ? 'remove-filters_rtl' : 'remove-filters'}\r\n onClick={() => {\r\n handleApplyFilter(true)\r\n }}\r\n disabled={disabled}\r\n >\r\n Clear all filters\r\n </Button>\r\n </QueryBuilderMaterial>\r\n </DialogContent>\r\n <DialogActions className=\"filter-footer\">\r\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: selectedFilter ? 'space-between' : 'flex-end', width: '100%' }}>\r\n {selectedFilter &&\r\n <Box>\r\n <Button onClick={handleUpdateSelectedFilterQuery}>\r\n Update Seleted filter\r\n </Button>\r\n </Box>\r\n }\r\n <Box sx={{ display: 'flex', gap: 1 }}>\r\n <Button className=\"cancel-filter-btn\" onClick={onClose}>\r\n Cancel\r\n </Button>\r\n <Button\r\n disabled={disabled}\r\n onClick={() => handleApplyFilter()}\r\n >\r\n Apply\r\n </Button>\r\n </Box>\r\n </Box>\r\n </DialogActions>\r\n </Dialog>\r\n </div>\r\n );\r\n};\r\n\r\nexport { Filter };\r\nexport default Filter;\r\n","import * as React from 'react';\nimport ButtonGroup, { ButtonGroupProps } from '@mui/material/ButtonGroup';\nimport ClickAwayListener from '@mui/material/ClickAwayListener';\nimport Grow from '@mui/material/Grow';\nimport Paper from '@mui/material/Paper';\nimport Popper from '@mui/material/Popper';\nimport MenuItem from '@mui/material/MenuItem';\nimport MenuList from '@mui/material/MenuList';\nimport Button from '../button/button';\nimport { ArrowDownTwo } from '../icons';\nimport Typography from '../typography/typography';\nimport { ButtonProps, CircularProgress, SxProps } from '@mui/material';\nimport { useLanguage } from '../../hooks/useLangauge';\n\nexport interface IDropdownMenuOption {\n\tlabel: string | JSX.Element;\n\tcallback: (event?: any, index?: number) => void;\n\tcolor?: string;\n\tdisableToggle?: boolean;\n}\n\ninterface DropdownButtonProps extends ButtonProps {\n\tchildren?: React.ReactNode;\n\toptions: IDropdownMenuOption[];\n\tisMenuThirdItemDisabled?: boolean;\n\tisOnlyDropDownButton?: boolean;\n\tonlyDropDownButtonProps?: {\n\t\tstyle?: SxProps;\n\t};\n\tbuttonGroupProps?: ButtonGroupProps;\n\tdropdownButtonProps?: ButtonGroupProps;\n\ttoggleCallback?: (e?: boolean) => void;\n\tloading?: boolean;\n}\n\nconst DropdownButton: React.FC<DropdownButtonProps> = ({\n\tchildren,\n\toptions,\n\tisMenuThirdItemDisabled,\n\tisOnlyDropDownButton = false,\n\tonlyDropDownButtonProps = null,\n\tbuttonGroupProps = null,\n\tdropdownButtonProps=null,\n\ttoggleCallback,\n\tloading = false,\n\t...rest\n}) => {\n\tconst [open, setOpen] = React.useState(false);\n\tconst anchorRef = React.useRef<HTMLDivElement>(null);\n const {isRtl}=useLanguage();\n\tconst handleToggle = () => {\n\t\tsetOpen((prevOpen) => !prevOpen);\n\t};\n\n\tconst handleClose = (event: Event) => {\n\t\tif (\n\t\t\tanchorRef.current &&\n\t\t\tanchorRef.current.contains(event.target as HTMLElement)\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetOpen(false);\n\t};\n\n\tReact.useEffect(() => {\n\t\ttoggleCallback?.(open);\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [open]);\n\n\treturn (\n\t\t<React.Fragment>\n\t\t\t<ButtonGroup\n\t\t\t\tsx={loading ? { boxShadow: 'none' } : isRtl?{flexDirection:'row-reverse'}:{}}\n\t\t\t\t{...buttonGroupProps}\n\t\t\t\tref={anchorRef}\n\t\t\t\tdisabled={loading}>\n\t\t\t\t{isOnlyDropDownButton ? (\n\t\t\t\t\t<Button\n\t\t\t\t\t\t{...rest}\n\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\tborderRightColor: '#ffffff20 !important',\n\t\t\t\t\t\t\t...onlyDropDownButtonProps?.style\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonClick={handleToggle}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</Button>\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t{...rest}\n\t\t\t\t\t\t\tsx={(theme) => ({\n\t\t\t\t\t\t\t\tborderRightColor: `${theme.palette.theme?.secondary[100]} !important`,\n\t\t\t\t\t\t\t\tborderRight: '1px solid',\n\t\t\t\t\t\t\t\tborderTopRightRadius: 0,\n\t\t\t\t\t\t\t\tborderBottomRightRadius: 0,\n\t\t\t\t\t\t\t\t...(typeof rest?.sx === 'function'\n\t\t\t\t\t\t\t\t\t? rest.sx(theme)\n\t\t\t\t\t\t\t\t\t: rest?.sx || {})\n\t\t\t\t\t\t\t})}>\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize='small'\n\t\t\t\t\t\t\taria-controls={open ? 'split-button-menu' : undefined}\n\t\t\t\t\t\t\taria-expanded={open ? 'true' : undefined}\n\t\t\t\t\t\t\taria-label='select merge strategy'\n\t\t\t\t\t\t\taria-haspopup='menu'\n\t\t\t\t\t\t\t{...dropdownButtonProps}\n\t\t\t\t\t\t\tsx={(theme) => ({\n\t\t\t\t\t\t\t\tp: 1,\n\t\t\t\t\t\t\t\tminWidth: 'unset !important',\n\t\t\t\t\t\t\t\tborderTopLeftRadius: 0,\n\t\t\t\t\t\t\t\tborderBottomLeftRadius: 0,\n\t\t\t\t\t\t\t\t...(typeof dropdownButtonProps?.sx === 'function'\n\t\t\t\t\t\t\t\t\t? dropdownButtonProps.sx(theme)\n\t\t\t\t\t\t\t\t\t: dropdownButtonProps?.sx || {})\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tonClick={handleToggle}>\n\t\t\t\t\t\t\t{loading ? (\n\t\t\t\t\t\t\t\t<CircularProgress size={15} color='inherit' />\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<ArrowDownTwo fontSize='small' />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</ButtonGroup>\n\t\t\t<Popper\n\t\t\t\tsx={{\n\t\t\t\t\tzIndex: 1\n\t\t\t\t}}\n\t\t\t\topen={open}\n\t\t\t\tanchorEl={anchorRef.current}\n\t\t\t\trole={undefined}\n\t\t\t\ttransition\n\t\t\t\tdisablePortal>\n\t\t\t\t{({ TransitionProps, placement }) => (\n\t\t\t\t\t<Grow\n\t\t\t\t\t\t{...TransitionProps}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\ttransformOrigin:\n\t\t\t\t\t\t\t\tplacement === 'bottom' ? 'center top' : 'center bottom'\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\t<Paper elevation={0} sx={{ border: '1px solid', borderColor: 'grey.300', borderRadius: '8px', mt:0.25}}>\n\t\t\t\t\t\t\t<ClickAwayListener onClickAway={handleClose}>\n\t\t\t\t\t\t\t\t<MenuList id='split-button-menu' autoFocusItem>\n\t\t\t\t\t\t\t\t\t{options.map((option, index) => (\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\t\t\tdisabled={isMenuThirdItemDisabled ? false : index === 2}\n\t\t\t\t\t\t\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\t\t\t\t\t\t\toption.callback(event, index);\n\t\t\t\t\t\t\t\t\t\t\t\tif (!option?.disableToggle) {\n\t\t\t\t\t\t\t\t\t\t\t\t\thandleToggle();\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}} >\n\t\t\t\t\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\t\t\t\t\ttype='s4'\n\t\t\t\t\t\t\t\t\t\t\t\tcolor={\n\t\t\t\t\t\t\t\t\t\t\t\t\toption.color ? option.color : 'theme.secondary.1000'\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\t\t\t\t\t\twidth: '100%'\n\t\t\t\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</MenuList>\n\t\t\t\t\t\t\t</ClickAwayListener>\n\t\t\t\t\t\t</Paper>\n\t\t\t\t\t</Grow>\n\t\t\t\t)}\n\t\t\t</Popper>\n\t\t</React.Fragment>\n\t);\n};\n\nexport default DropdownButton;\n","import * as React from 'react';\nimport ClickAwayListener from '@mui/material/ClickAwayListener';\nimport Grow from '@mui/material/Grow';\nimport Paper from '@mui/material/Paper';\nimport Popper from '@mui/material/Popper';\nimport MenuItem from '@mui/material/MenuItem';\nimport MenuList from '@mui/material/MenuList';\nimport { ArrowDownTwo } from '../icons';\nimport Typography from '../typography/typography';\nimport { ButtonProps } from '@mui/material';\n\nexport interface ITitleDropdownMenuOption {\n\tlabel: string | JSX.Element;\n\tcallback: (event?: any, index?: number) => void;\n\tcolor?: string;\n}\n\ninterface TitleDropdownButtonProps extends ButtonProps {\n\tchildren: React.ReactNode;\n\toptions: ITitleDropdownMenuOption[];\n\tisMenuThirdItemDisabled: boolean;\n\tcurrentTitle: string;\n}\n\nconst TitleDropdownButton: React.FC<TitleDropdownButtonProps> = ({\n\tchildren,\n\toptions,\n\tisMenuThirdItemDisabled,\n\tcurrentTitle = '',\n}) => {\n\tconst [open, setOpen] = React.useState(false);\n\tconst anchorRef = React.useRef<HTMLDivElement>(null);\n\n\tconst handleToggle = () => {\n\t\tsetOpen((prevOpen) => !prevOpen);\n\t};\n\n\tconst handleClose = (event: Event) => {\n\t\tif (\n\t\t\tanchorRef.current &&\n\t\t\tanchorRef.current.contains(event.target as HTMLElement)\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetOpen(false);\n\t};\n\n\treturn (\n\t\t<React.Fragment>\n\t\t\t<div style={{ display: 'flex', alignItems: 'flex-end', gap: '10px' }} ref={anchorRef}>\n\t\t\t\t<Typography type=\"h3\" weight=\"medium\" color=\"theme.secondary.1000\">\n\t\t\t\t\t{children}\n\t\t\t\t</Typography>\n\t\t\t\t<div\n\t\t\t\t\taria-controls={open ? 'split-button-menu' : undefined}\n\t\t\t\t\taria-expanded={open ? 'true' : undefined}\n\t\t\t\t\taria-label='select merge strategy'\n\t\t\t\t\taria-haspopup='menu'\n\t\t\t\t\tstyle={{ minWidth: 'unset !important', cursor: 'pointer' }}\n\t\t\t\t\tonClick={handleToggle}\n\t\t\t\t>\n\t\t\t\t\t<ArrowDownTwo fontSize='small' />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<Popper\n\t\t\t\tsx={{\n\t\t\t\t\tzIndex: 1\n\t\t\t\t}}\n\t\t\t\topen={open}\n\t\t\t\tanchorEl={anchorRef.current}\n\t\t\t\trole={undefined}\n\t\t\t\ttransition\n\t\t\t\tdisablePortal>\n\t\t\t\t{({ TransitionProps, placement }) => (\n\t\t\t\t\t<Grow\n\t\t\t\t\t\t{...TransitionProps}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\ttransformOrigin:\n\t\t\t\t\t\t\t\tplacement === 'bottom' ? 'center top' : 'center bottom'\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\t<Paper elevation={0} sx={{ border: '1px solid', borderRadius: 2, borderColor: 'theme.grey.200'}}>\n\t\t\t\t\t\t\t<ClickAwayListener onClickAway={handleClose}>\n\t\t\t\t\t\t\t\t<MenuList autoFocusItem>\n\t\t\t\t\t\t\t\t\t{options.map((option, index) => (\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\t\t\tdisabled={isMenuThirdItemDisabled ? false : (index === 2)}\n\t\t\t\t\t\t\t\t\t\t\tselected={currentTitle?.trim() === option.label?.trim()}\n\t\t\t\t\t\t\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\t\t\t\t\t\t\toption.callback(event, index);\n\t\t\t\t\t\t\t\t\t\t\t\thandleToggle();\n\t\t\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\t\t\t\t\ttype='s4'\n\t\t\t\t\t\t\t\t\t\t\t\tcolor={\n\t\t\t\t\t\t\t\t\t\t\t\t\toption.color ? option.color : 'theme.secondary.1000'\n\t\t\t\t\t\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</MenuList>\n\t\t\t\t\t\t\t</ClickAwayListener>\n\t\t\t\t\t\t</Paper>\n\t\t\t\t\t</Grow>\n\t\t\t\t)}\n\t\t\t</Popper>\n\t\t</React.Fragment>\n\t);\n};\n\nexport default TitleDropdownButton;\n","import React from \"react\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\n\r\n\r\nimport Typography from \"../typography/typography\";\r\nimport Box from \"@mui/material/Box\";\r\nimport \"./upload-excel.scss\";\r\nimport { useDropzone } from \"react-dropzone\";\r\nimport {\r\n CircularProgress,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n Divider,\r\n Grow,\r\n IconButton,\r\n \r\n} from \"@mui/material\";\r\nimport RemoveIcon from \"@mui/icons-material/Remove\";\r\n// import Checkbox from \"../checkbox/checkbox\";\r\nimport Avatar from \"../avatar/avatar\";\r\nimport images from \"../../assets/images\";\r\nimport ModalLoader from '../loaders/modal-loader';\r\nimport {Trash} from '../icons';\r\n\r\nimport { KeyboardArrowDown, KeyboardArrowUp, Upload } from \"@mui/icons-material\";\r\nimport { postImportSheet } from \"../../utils/common\";\r\nimport Button from \"../button/button\";\r\n\r\n\r\ninterface UploadProps {\r\n open: boolean;\r\n title: string;\r\n multiple?: boolean;\r\n accept?: string;\r\n showCameraButton?: boolean;\r\n onClose: () => void;\r\n onConfirm: () => void;\r\n onSubmit?: (files: any[]) => void;\r\n existingDriveData?: any;\r\n importModuleName?: any;\r\n pageName?: any;\r\n handleSuccessImport?: (e?: any) => void;\r\n\r\n}\r\n\r\nconst formatBytes = (bytes: number, decimals = 2) => {\r\n if (bytes === 0) return \"0 Bytes\";\r\n const k = 1024;\r\n const dm = decimals < 0 ? 0 : decimals;\r\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + \" \" + sizes[i];\r\n};\r\n\r\nconst UploadExcel = (props: UploadProps) => {\r\n const {\r\n open,\r\n title,\r\n onClose,\r\n onConfirm,\r\n onSubmit,\r\n accept = \"*\",\r\n multiple = false,\r\n importModuleName,\r\n pageName,\r\n handleSuccessImport\r\n } = props;\r\n const [files, setFiles] = useState<\r\n {\r\n file: File;\r\n isPrivate: boolean;\r\n checkboxDisabled: boolean;\r\n status: string;\r\n uploadProgress: number;\r\n fileSize: number;\r\n fileName: string;\r\n fileType: string;\r\n location: string;\r\n message: string;\r\n }[]\r\n >([]);\r\n\r\n const [isCollapsed, setIsCollapsed] = useState(false);\r\n const [isDialogMinimized, setIsDialogMinimized] = useState(false);\r\n const [isDragOver, setIsDragOver] = useState(false);\r\n const [dataResult, setDataResult] = useState<any>(null);\r\n const [isLoading, setIsLoading] = useState<boolean>(false);\r\n \r\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\r\n onDropAccepted: (newFiles) => {\r\n setFiles([\r\n ...files,\r\n ...newFiles.map((file) => ({\r\n file,\r\n isPrivate: false,\r\n checkboxDisabled: false,\r\n status: \"pending\",\r\n uploadProgress: 0,\r\n fileSize: file.size,\r\n fileName: file.name,\r\n fileType: file.type,\r\n location: \"\",\r\n message: \"\",\r\n })),\r\n ]);\r\n setIsDragOver(false);\r\n },\r\n onDragEnter: () => {\r\n setIsDragOver(true);\r\n },\r\n onDragLeave: () => {\r\n setIsDragOver(false);\r\n },\r\n noClick: true,\r\n noKeyboard: true,\r\n multiple: multiple,\r\n accept: accept ? convertAcceptObject(accept) : accept,\r\n });\r\n\r\n const handleClose = () => {\r\n onClose()\r\n setDataResult(null);\r\n }\r\n\r\n const fileInputRef = useRef<HTMLInputElement>(null);\r\n\r\n // useEffect(() => {\r\n // const driveTitles = existingDriveData.map(item => item['title'])\r\n // setAllDriveData(driveTitles);\r\n // }, [existingDriveData]);\r\n\r\n\r\n useEffect(() => {\r\n const handleBeforeUnload = (event: any) => {\r\n \r\n const message =\r\n \"Are you sure you want to leave? Your uploads are not complete.\";\r\n event.returnValue = message; // Standard for most browsers\r\n return message; // For some older browsers\r\n \r\n };\r\n if (fileInputRef.current) {\r\n fileInputRef.current.multiple = multiple;\r\n }\r\n\r\n window.addEventListener(\"beforeunload\", handleBeforeUnload);\r\n\r\n return () => {\r\n // Clean up the event listener when the component unmounts\r\n window.removeEventListener(\"beforeunload\", handleBeforeUnload);\r\n };\r\n }, [ multiple]);\r\n\r\n \r\n\r\n function convertAcceptObject(types: string) {\r\n const accepts = types.split(\",\").map((item) => item.trim());\r\n const acceptObject = accepts.reduce((acc: any, type: string) => {\r\n acc[type] = [];\r\n return acc;\r\n }, {});\r\n return acceptObject;\r\n }\r\n\r\n const renderFileIcon = (file: any) => {\r\n const fileType = file?.type.split(\"/\")[0];\r\n switch (fileType) {\r\n case \"image\":\r\n return (\r\n <div\r\n className={\r\n isDialogMinimized ? \"document-icon-sm\" : \"document-icon-lg\"\r\n }\r\n style={{ backgroundColor: \"#FFEBEB\" }}\r\n >\r\n <Avatar size={20} src={images.upload.documentPDF}></Avatar>\r\n </div>\r\n );\r\n case \"application\":\r\n return (\r\n <div\r\n className={\r\n isDialogMinimized ? \"document-icon-sm\" : \"document-icon-lg\"\r\n }\r\n style={{ backgroundColor: \"#FFEBEB\" }}\r\n >\r\n <Avatar size={150} src={images.upload.documentPDF} alt={\"PDF\"}></Avatar>\r\n <Typography color=\"theme.secondary.1000\" weight=\"bold\" type=\"s2\">{file.name}</Typography>\r\n <Typography color=\"theme.secondary.800\" type=\"s5\">{formatBytes(file.size)}</Typography>\r\n </div>\r\n );\r\n case \"text\":\r\n return (\r\n <div\r\n className={\r\n isDialogMinimized ? \"document-icon-sm\" : \"document-icon-lg\"\r\n }\r\n style={{ backgroundColor: \"#EBF9F2\" }}\r\n >\r\n <Avatar size={20} src={images.upload.docFile}></Avatar>\r\n </div>\r\n );\r\n default:\r\n return (\r\n <div\r\n className={\r\n isDialogMinimized ? \"document-icon-sm\" : \"document-icon-lg\"\r\n }\r\n style={{ backgroundColor: \"#EBF9F2\" }}\r\n >\r\n <Avatar size={20} src={images.upload.docFile}></Avatar>\r\n </div>\r\n );\r\n }\r\n };\r\n\r\n \r\n\r\n const handleChipClick = () => {\r\n if (fileInputRef.current) {\r\n // If multiple is true, set input for multiple files\r\n if (props.multiple) {\r\n fileInputRef.current.setAttribute(\"multiple\", \"true\");\r\n } else {\r\n // If multiple is false, set input for a single file\r\n fileInputRef.current.removeAttribute(\"multiple\");\r\n }\r\n fileInputRef.current.click();\r\n }\r\n };\r\n\r\n const handleFileChange = (e: any) => {\r\n // importData(e.target.files[0]);\r\n const file = e.target.files?.[0] || null;\r\n const f = {\r\n file,\r\n isPrivate: false,\r\n checkboxDisabled: false,\r\n status: \"pending\",\r\n uploadProgress: 0,\r\n fileSize: file.size,\r\n fileName: file.name,\r\n fileType: file.type,\r\n location: \"\",\r\n message: \"\",\r\n }\r\n\r\n \r\n setFiles([\r\n ...files,\r\n ...[f],\r\n ]);\r\n };\r\n\r\n const removeFile = (indexToRemove: number) => {\r\n\r\n setFiles((prevFiles) =>\r\n prevFiles.filter((file, index) =>index !== indexToRemove\r\n ),\r\n );\r\n };\r\n\r\n // const toggleIsPrivate = (index: number) => {\r\n // setFiles((prevFiles) =>\r\n // prevFiles.map((item, i) =>\r\n // i === index ? { ...item, isPrivate: !item.isPrivate } : item,\r\n // ),\r\n // );\r\n // };\r\n\r\n const toggleCollapse = () => {\r\n setIsCollapsed((prevIsCollapsed) => !prevIsCollapsed);\r\n };\r\n\r\n const handleMinimizeClick = () => {\r\n setIsDialogMinimized(!isDialogMinimized);\r\n isDialogMinimized ? onConfirm() : onClose();\r\n };\r\n\r\n const importData = async () => {\r\n const file = files[0].file\r\n\t\tconst formData = new FormData();\r\n\t\tformData.append('file', file); // Ensure the field name is correct.\r\n\t\tsetIsLoading(true)\r\n\t\ttry {\r\n\t\t\tconst response = await postImportSheet(formData, importModuleName, pageName);\r\n\t\t\tif(response) {\r\n\t\t\t\tsetDataResult(response.data)\r\n setIsLoading(false)\r\n if(response?.data?.failed?.length == 0){\r\n handleClose()\r\n handleSuccessImport(response?.data);\r\n }\r\n\t\t\t} \r\n\t\t} catch (error) {\r\n setIsLoading(false)\r\n\t\t}\r\n\r\n\t}\r\n\r\n useEffect(() => {\r\n open && setFiles([]);\r\n }, [open]);\r\n\r\n\r\n\r\n return (\r\n <>\r\n <Dialog open={open} onClose={handleClose} className=\"upload\">\r\n <DialogTitle className=\"upload--head\">\r\n <Box className=\"upload--title\">\r\n <Typography\r\n type=\"s3\"\r\n ml={1}\r\n weight=\"medium\"\r\n color=\"theme.secondary.1000\"\r\n >\r\n {title}\r\n </Typography>\r\n </Box>\r\n \r\n </DialogTitle>\r\n <Divider />\r\n <DialogContent className=\"upload--content\">\r\n {isLoading && <ModalLoader />}\r\n \r\n {files.length === 0 ? (\r\n <div\r\n className={`upload--fileContent ${isDragActive ? \"drag-active\" : \"\"\r\n }`}\r\n >\r\n <div {...getRootProps()} className=\"drop-view\">\r\n {!isDragOver ? (\r\n <>\r\n <input {...getInputProps()} ref={fileInputRef} />\r\n <p className=\"upload--text\">\r\n Drag and Drop files here or upload from\r\n </p>\r\n\r\n <div className=\"device-wrap\">\r\n <div className=\"select-button\" onClick={handleChipClick}>\r\n <img src={images.upload.monitor} />\r\n <Typography type=\"s5\">My Device</Typography>\r\n <input\r\n type=\"file\"\r\n {...getInputProps({ multiple: true })}\r\n ref={fileInputRef}\r\n style={{ display: \"none\" }}\r\n onChange={handleFileChange}\r\n accept={accept}\r\n />\r\n </div>\r\n \r\n </div>\r\n\r\n {dataResult?.successful?.length || dataResult?.failed?.length ? (\r\n <div className =\"mt-2\">\r\n {dataResult?.failed.length == 0 ? (\r\n <Typography type=\"s3\">\r\n All data imported successfully.\r\n </Typography> ) : (\r\n <Typography type=\"s4\" word-break=\"break-word\" color=\"theme.error.600\" weight=\"medium\">\r\n Failed to import the following records with IDs: {dataResult.failed?.map((item:any)=>item?.id).join(\", \")}\r\n </Typography> )\r\n } \r\n </div>\r\n ) : (\r\n \"\"\r\n )}\r\n </>\r\n ) : (\r\n <div className=\"after-drop\">\r\n <img src={images.upload.documentUpload} />\r\n <Typography type=\"s3\">\r\n Drag & Drop your files here\r\n </Typography>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n ) : (\r\n <Grow in={Boolean(files?.length)} timeout={500}>\r\n <Box>\r\n {files.map((file: any, index: number) => (\r\n <Box key={file?.file?.name} display='flex' width='100%' justifyContent='center' alignItems='center' flexDirection='column'>\r\n <Box className=\"icon-BG\">\r\n <IconButton onClick={() => removeFile(index)} className=\"remove-button\"><Trash fontSize='small' /> </IconButton>\r\n <Avatar size={150} src={images.upload.docFile} alt={\"PDF\"}></Avatar>\r\n </Box>\r\n <Typography type=\"s2\" weight=\"bold\" color='theme.secondary.1000'>{file?.file?.name}</Typography>\r\n <Typography type=\"s4\" color='theme.secondary.800'>{formatBytes(file?.file?.size)}</Typography>\r\n </Box>\r\n ))}\r\n {dataResult?.successful?.length || dataResult?.failed?.length ? (\r\n <div className =\"mt-2\">\r\n {dataResult?.failed.length == 0 ? (\r\n <Typography type=\"s3\">\r\n All data imported successfully.\r\n </Typography> ) : (\r\n <Typography type=\"s4\" word-break=\"break-word\" color=\"theme.error.600\" weight=\"medium\">\r\n Failed to import the following records with IDs: {dataResult?.failed?.map((item:any)=>item.id).join(\", \")}\r\n </Typography> )\r\n } \r\n </div>\r\n ) : (\r\n \"\"\r\n )}\r\n </Box>\r\n </Grow>\r\n )}\r\n </DialogContent>\r\n <DialogActions className=\"uploadActions\">\r\n <Button onClick={onSubmit ? ()=>{\r\n onSubmit(files)\r\n } : importData} startIcon={<Upload />}>Upload</Button>\r\n </DialogActions>\r\n </Dialog>\r\n {isDialogMinimized && (\r\n <div className=\"bottom-corner-box\">\r\n <div className=\"top-section\">\r\n <div className=\"top-text\">\r\n Uploading {files.length} Item{files.length !== 1 ? \"s\" : \"\"}\r\n </div>\r\n <div className=\"top-options\">\r\n <div className=\"btn\" onClick={handleMinimizeClick}>\r\n <RemoveIcon />\r\n </div>\r\n <div className=\"btn\" onClick={toggleCollapse}>\r\n <div className=\"arrow-btn\">\r\n {isCollapsed ? <KeyboardArrowUp /> : <KeyboardArrowDown />}\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div className=\"box-list\">\r\n {!isCollapsed &&\r\n files.map((file: any, index: number) => (\r\n <div className=\"bottom-section\">\r\n <div className=\"doc-icon\">{renderFileIcon(file?.file)}</div>\r\n <div className=\"file-detail\">\r\n <div className=\"file-name\">\r\n <div className=\"file-text\">\r\n {file?.file?.name}\r\n {index}\r\n </div>\r\n </div>\r\n <div className=\"file-status\">\r\n {file?.status !== \"canceled\" ? (\r\n <>\r\n {file.uploadProgress === 0 && (\r\n <div className=\"avatar-container\">\r\n <Avatar\r\n size={20}\r\n className=\"avatar\"\r\n src={images.upload.empty}\r\n ></Avatar>\r\n <Avatar\r\n size={20}\r\n onClick={() => removeFile(index)}\r\n src={images.upload.close}\r\n className=\"close-icon\"\r\n ></Avatar>\r\n </div>\r\n )}\r\n {file?.uploadProgress > 0 &&\r\n file?.uploadProgress < 100 && (\r\n <CircularProgress\r\n color=\"success\"\r\n variant=\"determinate\"\r\n value={file?.uploadProgress}\r\n />\r\n )}\r\n {file?.uploadProgress === 100 && (\r\n <div className=\"avatar-container\">\r\n <Avatar\r\n size={20}\r\n className=\"avatar\"\r\n src={images.upload.tick}\r\n ></Avatar>\r\n <Avatar\r\n size={20}\r\n src={images.upload.folder}\r\n className=\"close-icon\"\r\n ></Avatar>\r\n </div>\r\n )}\r\n </>\r\n ) : (\r\n <Typography type=\"s4\" className=\"canceled-text\">\r\n Upload Canceled\r\n </Typography>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport { UploadExcel };\r\nexport default UploadExcel;\r\n","import Button from '../button/button';\r\nimport Typography from '../typography/typography';\r\n/* eslint-disable no-mixed-spaces-and-tabs */\r\nimport './action-bar.scss';\r\nimport {\r\n\t/* IconButton, */ Box,\r\n\tDivider,\r\n\tIconButton,\r\n\tMenu,\r\n\tMenuItem,\r\n\tuseMediaQuery,\r\n\tuseTheme\r\n} from '@mui/material';\r\nimport AddIcon from '@mui/icons-material/Add';\r\nimport ViewModal from '../view-modal/view-modal';\r\nimport HeaderCard from '../header-card/header-card';\r\nimport SearchBar from '../search-bar/search-bar';\r\nimport { useEffect, useMemo, useState } from 'react';\r\nimport images from '../../assets/images';\r\nimport Toggle from '../toggle/toggle';\r\nimport Filter from '../filter/filter';\r\nimport Select from '../select/select';\r\nimport { RuleGroupType } from 'react-querybuilder';\r\nimport SaveFilterModal from '../save-filter-modal/save-filter-modal';\r\nimport {\r\n\tsetBaseUrl,\r\n\tpostV1Filter,\r\n\tgetV1FilterResource\r\n} from '../../api-client/api.system-feature/api';\r\nimport type * as Types from '../../api-client/api.system-feature/api-types';\r\nimport { auth } from '../../constants/auth';\r\nimport DropdownButton from '../dropdown-button/dropdown-button';\r\nimport TitleDropdownButton from '../title-dropdown-button/title-dropdown-button';\r\nimport { useAppDispatch, useAppSelector } from '../../redux/hooks';\r\nimport { getToken } from '../../utils/common';\r\nimport React from 'react';\r\nimport UploadExcel from '../upload-excel/upload-excel';\r\nimport { generateQueryString, getErrorMessage, getExcelTemplateGenerateTemplate, getOperatorLabel, getExcelExportTemplate, getPdfExportTemplate } from '../../utils/common';\r\nimport { initialFilter, ViewType } from '../../contexts/page-context';\r\nimport { usePages } from '../../hooks/use-pages';\r\nimport Chip from '../chip/chip';\r\nimport formatText, { formatLabel } from '../../utils/format-text';\r\nimport { Cancel } from '@mui/icons-material';\r\nimport { useLocation } from 'react-router-dom';\r\nimport { IResources, routeToResourceMap } from '../../constants/route-page-map';\r\nimport { enqueueSnackbar } from 'notistack';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { FilterRemove, Filter as FilterIcon, Search, FolderSave, Export, Import, DocumentDownload } from '../icons';\r\nimport { co } from 'node_modules/@fullcalendar/core/internal-common';\r\n\r\ninterface ActionData {\r\n\tlabel: string;\r\n\tposition: number;\r\n}\r\ninterface ActionBarPropsType {\r\n\ttitle: string;\r\n\tdata: ActionData[];\r\n\tsetData: React.Dispatch<React.SetStateAction<ActionData[]>>;\r\n\tactive: string;\r\n\tsetActive: (view: ViewType) => void;\r\n\thandleAddButton?: (e?: any) => void;\r\n\tbutton?: boolean;\r\n\thandleSearch?: (value: string) => void;\r\n\tfilters?: string;\r\n\tdisabledViews?: string[];\r\n\tisDropdownMenuButton?: boolean;\r\n\titemListingDropdownOptions?: any;\r\n\tisTitleMenu?: boolean;\r\n\ttitleMenus?: any;\r\n\tfolderData?: any;\r\n\ttype?: any;\r\n\tfields?: any;\r\n\tapplyFilter?: any;\r\n\tsavedFilters?: SavedFilter;\r\n\tsetSavedFilters?: (view: SavedFilter) => void;\r\n\tisToggleButton?: boolean;\r\n\thandleToggleButton?: (e?: any) => void;\r\n\tshowView?: boolean;\r\n\tshowSearch?: boolean;\r\n\tshowFilter?: boolean;\r\n\tcustomButtons?: React.ReactNode[] | JSX.Element[];\r\n\tactionBtn?: React.ReactNode[] | JSX.Element[];\r\n\tpageName?: string;\r\n\timportModuleName?: string;\r\n\tsearchText?: string;\r\n\tselectedIds?: any;\r\n\tisUseFields?: boolean;\r\n\thandleSuccessImport?: (e?: any) => void;\r\n}\r\n\r\ninterface SavedFilter {\r\n\tid: string;\r\n\tname: string;\r\n\tquery: RuleGroupType;\r\n}\r\n\r\nconst ActionBar = React.memo((props: ActionBarPropsType) => {\r\n\tconst token = localStorage.getItem(auth.storageTokenKeyName) || undefined;\r\n\tconst location = useLocation();\r\n\r\n\tconst {\r\n\t\ttitle,\r\n\t\tdata,\r\n\t\tsetData,\r\n\t\tactive,\r\n\t\tsetActive,\r\n\t\thandleAddButton,\r\n\t\thandleSearch,\r\n\t\tbutton = true,\r\n\t\tdisabledViews,\r\n\t\tisDropdownMenuButton = false,\r\n\t\titemListingDropdownOptions = [],\r\n\t\tisTitleMenu = false,\r\n\t\ttitleMenus = [],\r\n\t\ttype,\r\n\t\tfields = [],\r\n\t\tapplyFilter,\r\n\t\t// setSavedFilters,\r\n\t\t// savedFilters,\r\n\t\tisToggleButton = false,\r\n\t\thandleToggleButton,\r\n\t\tshowSearch = true,\r\n\t\tshowFilter = true,\r\n\t\tshowView = true,\r\n\t\tcustomButtons,\r\n\t\tpageName,\r\n\t\tactionBtn,\r\n\t\timportModuleName,\r\n\t\tselectedIds,\r\n\t\tsearchText,\r\n\t\tisUseFields,\r\n\t\thandleSuccessImport\r\n\t} = props;\r\n\tconst dispatch = useAppDispatch();\r\n\tconst [isToggled, setIsToggled] = useState<boolean>(false);\r\n\tconst [isToggledForItem, setIsToggledForItem] = useState<boolean>(false);\r\n\tconst [openFilterPopup, setOpenFilterPopup] = useState<boolean>(false);\r\n\tconst [status, setStatus] = useState<string>('');\r\n\tconst [openSaveFilter, setIsOpenSaveFilter] = useState<boolean>(false);\r\n\tconst [rowAnchorEl, setRowAnchorEl] = useState<null | HTMLElement>(null);\r\n\tconst [isUploadModalOpen, setIsUploadModalOpen] = useState(false);\r\n\tconst [savedFilters, setSavedFilters] = useState<any[]>([]);\r\n\t// const [selectedSavedFilter, setSelectedSavedFilter] = useState<any>(null);\r\n\tconst [searchedText, setSearchedText] = useState<string>(\"\");\r\n\tconst { t } = useTranslation();\r\n\tconst theme = useTheme();\r\n\tconst isLgUp = useMediaQuery(theme.breakpoints.up('xl'));\r\n\tconst { activePage, updatePageInfo, schemaFields, setActivePage } = usePages();\r\n\tconst { filters } = activePage;\r\n\r\n\tconst resources: IResources = useMemo(() => routeToResourceMap[location.pathname] || null, [location.pathname])\r\n\r\n\t// const { filterBar, filterQuery } = useAppSelector((store) => {\r\n\t// \treturn store?.drive;\r\n\t// });\r\n\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\tfetchSavedFilters();\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, []);\r\n\r\n\tconst fetchSavedFilters = async (): Promise<void> => {\r\n\t\tif (resources?.pageResource || resources?.fieldResource) {\r\n\t\t\tgetV1FilterResource({ ...getToken(), resource: resources?.pageResource || resources?.fieldResource })\r\n\t\t\t\t.then((response: any) => {\r\n\t\t\t\t\tconst savedFilters = response.data.result.map((e: any) => {\r\n\t\t\t\t\t\treturn { id: e._id, name: e.name, query: e.data };\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tsetSavedFilters?.(savedFilters);\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err: any) => console.log('Error fetching saved filters:', err));\r\n\t\t} else {\r\n\t\t\tsetSavedFilters([])\r\n\t\t}\r\n\t};\r\n\r\n\r\n\tconst handleFilterHide = () => {\r\n\t\t// dispatch(setFilterBar(false));\r\n\t\treturn\r\n\t};\r\n\r\n\tconst handleStatusChange = (event: any) => {\r\n\t\tsetStatus(event.target.value);\r\n\t};\r\n\r\n\tconst handleSaveFilterClick = () => {\r\n\t\tif (filters?.rules) {\r\n\t\t\tsetIsOpenSaveFilter(true);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleImportClick = (event: any) => {\r\n\t\tsetRowAnchorEl(event.currentTarget);\r\n\t};\r\n\r\n\tconst handleActionsClose = () => {\r\n\t\tsetRowAnchorEl(null);\r\n\t};\r\n\r\n\tconst handleSaveFilter = (query: RuleGroupType) => {\r\n\t\t// dispatch(setFilterQuery(query));\r\n\t\treturn\r\n\t};\r\n\r\n\tconst handleSave = async (name: string, filterQuery: RuleGroupType) => {\r\n\r\n\t\t// dispatch(setFilterBar(false));\r\n\r\n\t\tconst postFilterRequest: Types.PostV1FilterRequest = {\r\n\t\t\t'x-token': token,\r\n\t\t\tmodule: resources?.pageResource || resources?.fieldResource || 'erp-common',\r\n\t\t\tname: name,\r\n\t\t\tis_applied: true,\r\n\t\t\tdata: filterQuery\r\n\t\t};\r\n\t\ttry {\r\n\t\t\tawait postV1Filter(postFilterRequest)\r\n\t\t\tenqueueSnackbar('Filters saved successfully.')\r\n\t\t\tsetActivePage((prev: any) => ({\r\n\t\t\t\t...prev,\r\n\t\t\t\tfilters: {\r\n\t\t\t\t\t...prev.filters,\r\n\t\t\t\t\tname,\r\n\t\t\t\t\trules: filterQuery.rules\r\n\t\t\t\t},\r\n\t\t\t\tfilterQueryString: generateQueryString(filterQuery)\r\n\t\t\t}));\r\n\t\t\tsetIsOpenSaveFilter(false);\r\n\t\t} catch (error) {\r\n\t\t\tlet m: string = 'Something went wrong on saving filters'\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tm = getErrorMessage(error.message)\r\n\t\t\t}\r\n\t\t\tenqueueSnackbar(m, { variant: 'error' })\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn true\r\n\t};\r\n\r\n\tconst handleToggle = () => {\r\n\t\tsetIsToggled((prev) => !prev);\r\n\t\talert('Toggled');\r\n\t};\r\n\r\n\tconst handleChangeToggleButton = () => {\r\n\t\tsetIsToggledForItem((prev) => !prev);\r\n\t\thandleToggleButton?.();\r\n\t};\r\n\r\n\tconst handleCloseFilter = () => {\r\n\t\tsetOpenFilterPopup(false);\r\n\t};\r\n\r\n\tconst handleActiveHeaderCard = (data: ActionData) => {\r\n\t\tsetActive(data?.label);\r\n\t};\r\n\r\n\tconst downloadTemplate = async (moduleName: string) => {\r\n\t\tconst templateURL: any = await getExcelTemplateGenerateTemplate({\r\n\t\t\t'x-token': token,\r\n\t\t\tresource: moduleName\r\n\t\t});\r\n\t\tif (templateURL) {\r\n\t\t\tconst blob = await templateURL.blob();\r\n\r\n\t\t\tconst link = document.createElement('a');\r\n\r\n\t\t\tconst url = window.URL.createObjectURL(blob);\r\n\r\n\t\t\tlink.href = url;\r\n\t\t\tlink.download = `${moduleName}.xlsx`;\r\n\r\n\t\t\tdocument.body.appendChild(link);\r\n\t\t\tlink.click();\r\n\t\t\tdocument.body.removeChild(link);\r\n\t\t\twindow.URL.revokeObjectURL(url);\r\n\t\t}\r\n\t};\r\n\r\n\tconst exportExcel = async (moduleName: string, filterQueryString: string, selectedIds: any, title: string) => {\r\n\t\tconst templateURL: any = await getExcelExportTemplate({\r\n\t\t\t'x-token': token,\r\n\t\t\tactivePage: activePage,\r\n\t\t\tfilterQueryString: filterQueryString,\r\n\t\t\tselectedIds: selectedIds,\r\n\t\t\ttitle: title\r\n\t\t});\r\n\t\tif (templateURL) {\r\n\t\t\tconst blob = await templateURL.blob();\r\n\r\n\t\t\tconst link = document.createElement('a');\r\n\r\n\t\t\tconst url = window.URL.createObjectURL(blob);\r\n\r\n\t\t\tlink.href = url;\r\n\t\t\tlink.download = `${moduleName}.xlsx`;\r\n\r\n\t\t\tdocument.body.appendChild(link);\r\n\t\t\tlink.click();\r\n\t\t\tdocument.body.removeChild(link);\r\n\t\t\twindow.URL.revokeObjectURL(url);\r\n\t\t}\r\n\t};\r\n\r\n\tconst exportPdf = async (moduleName: string, filterQueryString: string, selectedIds: any, title: string) => {\r\n\t\tconst columns = activePage.visible_columns.map((col: any) => ({\r\n\t\t\t...col,\r\n\t\t\theader: t(col.header) \r\n\t\t}));\r\n\t\tconst templateURL: any = await getPdfExportTemplate({\r\n\t\t\t'x-token': token,\r\n\t\t\tactivePage: activePage,\r\n\t\t\tfilterQueryString: filterQueryString,\r\n\t\t\tselectedIds: selectedIds,\r\n\t\t\ttitle: title,\r\n\t\t\tcolumns: columns\r\n\t\t});\r\n\t\tif (templateURL) {\r\n\t\t\tconst blob = await templateURL.blob();\r\n\r\n\t\t\tconst link = document.createElement('a');\r\n\r\n\t\t\tconst url = window.URL.createObjectURL(blob);\r\n\r\n\t\t\tlink.href = url;\r\n\t\t\tlink.download = `${moduleName}.pdf`;\r\n\r\n\t\t\tdocument.body.appendChild(link);\r\n\t\t\tlink.click();\r\n\t\t\tdocument.body.removeChild(link);\r\n\t\t\twindow.URL.revokeObjectURL(url);\r\n\t\t}\r\n\t};\r\n\r\n\tconst openImportTemplate = () => {\r\n\t\tsetIsUploadModalOpen(true);\r\n\t};\r\n\tconst rowActionMenu = [];\r\n\tif (pageName && (!importModuleName || selectedIds)) {\r\n\t\trowActionMenu.push({\r\n\t\t\tlabel: 'Export Excel',\r\n\t\t\thandleAction: (moduleName: string) => exportExcel(moduleName, activePage.filterQueryString, selectedIds, title),\r\n\t\t\ticon: <Export fontSize='small' />\r\n\t\t})\r\n\t}\r\n\tif(pageName && (!importModuleName || selectedIds)){\r\n\t\trowActionMenu.push({\r\n\t\t\tlabel: 'Export PDF',\r\n\t\t\thandleAction: (moduleName: string) => exportPdf(moduleName, activePage.filterQueryString, selectedIds, title),\r\n\t\t\ticon: <Export fontSize='small'/>\r\n\t\t})\r\n\t}\r\n\tif (pageName && importModuleName) {\r\n\t\t{\r\n\t\t\trowActionMenu.push({\r\n\t\t\t\tlabel: 'Download Template ',\r\n\t\t\t\thandleAction: (moduleName: string) => downloadTemplate(moduleName),\r\n\t\t\t\ticon: <DocumentDownload fontSize='small' />\r\n\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Import Template',\r\n\t\t\t\t\thandleAction: (moduleName: string) => openImportTemplate(moduleName),\r\n\t\t\t\t\ticon: <Import fontSize='small' />\r\n\t\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\tconst getFilterChipLabels = (rule: any) => {\r\n\t\trule = { ...rule, field: rule.field?.replace(\"__replaceKey\", '') }\r\n\t\tlet label = schemaFields.find((f: any) => f.key === rule.field)?.label || rule.field;\r\n\t\tlabel = formatLabel(label?.replace('_id', ' '));\r\n\t\tconst opLabel = getOperatorLabel(rule, schemaFields);\r\n\r\n\t\tlet value = rule.value;\r\n\t\tif (Array.isArray(rule.value)) {\r\n\t\t\trule.value = rule.value.map(rv => formatLabel(typeof rv === 'object' ? (rv.label) : rv))\r\n\t\t\tvalue = rule.value.join(', ');\r\n\t\t}\r\n\r\n\t\treturn <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\r\n\t\t\t<Typography type='s5' color='theme.secondary.800' weight='medium'>{label}</Typography>\r\n\t\t\t<Divider orientation='vertical' flexItem />\r\n\t\t\t<Typography type='s5' color='theme.primary.800' weight='medium'>{formatText(opLabel)} {value}</Typography>\r\n\t\t</Box>\r\n\t\t// `${label}: ${value}`;\r\n\t};\r\n\r\n\tconst getFilterChip = (rr: any, index: any) => {\r\n\t\treturn (\r\n\t\t\t<Chip\r\n\t\t\t\tlabel={getFilterChipLabels(rr)}\r\n\t\t\t\tvariant='outlined'\r\n\t\t\t\tactive\r\n\t\t\t\tsx={({ palette }) => ({\r\n\t\t\t\t\tbackgroundColor: 'grey.200',\r\n\t\t\t\t\tborderColor: `${palette.grey[300]} !important`,\r\n\t\t\t\t\topacity: 0.8,\r\n\t\t\t\t\t'&:hover': { backgroundColor: `${palette.grey[200]} !important` },\r\n\t\t\t\t\tflexDirection: 'row-reverse',\r\n\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\tgap: 0.75,\r\n\t\t\t\t\tcursor: 'unset'\r\n\t\t\t\t})}\r\n\t\t\t\tdeleteIcon={\r\n\t\t\t\t\t<Cancel\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tfontSize: '1rem !important',\r\n\t\t\t\t\t\t\tcolor: '#919294 !important',\r\n\t\t\t\t\t\t\tmarginRight: 'auto !important',\r\n\t\t\t\t\t\t\tmarginLeft: `0 !important`,\r\n\t\t\t\t\t\t\t'&:hover': {\r\n\t\t\t\t\t\t\t\tcolor: 'inherit !important'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t}\r\n\t\t\t\tonDelete={() => removeSignleFilter(index)}\r\n\t\t\t\tclickable={false}\r\n\t\t\t/>\r\n\t\t)\r\n\t}\r\n\r\n\tconst removeSignleFilter = (ruleIndex: number) => {\r\n\t\tconst uRules: any[] = filters.rules.filter(\r\n\t\t\t(_, index) => index !== ruleIndex\r\n\t\t);\r\n\t\tconst uFilters = { ...filters, rules: uRules };\r\n\t\tconst filterQueryString = generateQueryString(uFilters);\r\n\r\n\t\tupdatePageInfo({\r\n\t\t\tfilters: uFilters,\r\n\t\t\tfilterQueryString\r\n\t\t});\r\n\t};\r\n\r\n\tconst isFilterApplied = (flt: any): boolean => Boolean(flt?.rules?.length);\r\n\tconst [searchAnchorEl, setSearchAnchorEl] = useState<HTMLElement | null>(null);\r\n\t// useEffect(() => {\r\n\t// \tif(activePage?.active_view ){\r\n\t// \t\tconst updateViews=activePage?.views?.length?activePage.views:[{\r\n\t// \t\t\tlabel:activePage?.active_view,\r\n\t// \t\t\tposition:0\r\n\t// \t\t}]\r\n\t// \t\tsetData(updateViews)\r\n\t// \t}\t\t\r\n\t// \t//eslint-disable-next-line\r\n\t// },[isCreatePage,activePage?.active_view])\r\n\r\n\tuseEffect(() => {\r\n\t\tif (activePage?.search) {\r\n\t\t\tsetSearchedText(activePage?.search)\r\n\t\t}\r\n\t}, [activePage?.search])\r\n\r\n\tuseEffect(() => {\r\n\t\tif (searchedText) {\r\n\t\t\thandleSearch?.(searchedText);\r\n\t\t\tupdatePageInfo({ search: searchedText });\r\n\t\t}\r\n\t\t//eslint-disable-next-line\r\n\t}, [searchedText])\r\n\treturn (\r\n\t\t<div>\r\n\t\t\t<div className='action-bar'>\r\n\t\t\t\t<div className='action-bar--LeftContent'>\r\n\t\t\t\t\t{isTitleMenu ? (\r\n\t\t\t\t\t\t<div style={{ zIndex: 999 }}>\r\n\t\t\t\t\t\t\t<TitleDropdownButton\r\n\t\t\t\t\t\t\t\tonClick={handleAddButton}\r\n\t\t\t\t\t\t\t\toptions={titleMenus}\r\n\t\t\t\t\t\t\t\tisMenuThirdItemDisabled={true}\r\n\t\t\t\t\t\t\t\tcurrentTitle={title}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{title}\r\n\t\t\t\t\t\t\t</TitleDropdownButton>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t<Typography type='h3' weight='medium' color='theme.secondary.1000'>\r\n\t\t\t\t\t\t\t{title}\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t<div className='action-bar--HeaderCard'>\r\n\t\t\t\t\t\t{Boolean(data) &&\r\n\t\t\t\t\t\t\tdata\r\n\t\t\t\t\t\t\t\t.map((ele) => ele)\r\n\t\t\t\t\t\t\t\t.sort((a, b) => a.position - b.position)\r\n\t\t\t\t\t\t\t\t.map((item: ActionData) => (\r\n\t\t\t\t\t\t\t\t\t<HeaderCard\r\n\t\t\t\t\t\t\t\t\t\tkey={item?.position}\r\n\t\t\t\t\t\t\t\t\t\ttitle={item?.label}\r\n\t\t\t\t\t\t\t\t\t\tactive={active}\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => handleActiveHeaderCard(item)}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t{showView && (\r\n\t\t\t\t\t\t\t<ViewModal\r\n\t\t\t\t\t\t\t\tsetData={setData}\r\n\t\t\t\t\t\t\t\tdata={data}\r\n\t\t\t\t\t\t\t\tsetActive={setActive}\r\n\t\t\t\t\t\t\t\tdisabledViews={disabledViews}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div className='action-bar--RightContent' style={{ gap: isLgUp ? `1rem` : `0.5rem` }}>\r\n\t\t\t\t\t{isToggleButton && (\r\n\t\t\t\t\t\t<div className='item--VariantDisplay'>\r\n\t\t\t\t\t\t\t<div className='item--VariantHeading'>Variant:</div>\r\n\t\t\t\t\t\t\t<div className='item--VariantToggal'>\r\n\t\t\t\t\t\t\t\t<Toggle\r\n\t\t\t\t\t\t\t\t\tchecked={isToggledForItem}\r\n\t\t\t\t\t\t\t\t\tonChange={handleChangeToggleButton}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{showSearch && (\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t{isLgUp ?\r\n\t\t\t\t\t\t\t\t<SearchBar\r\n\t\t\t\t\t\t\t\t\tplaceholder='Search'\r\n\t\t\t\t\t\t\t\t\thandleSearch={(e) => {\r\n\t\t\t\t\t\t\t\t\t\tsetSearchedText(e);\r\n\t\t\t\t\t\t\t\t\t\thandleSearch?.(e);\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tdebounceTime={1000}\r\n\t\t\t\t\t\t\t\t\tisDrivePage={true}\r\n\t\t\t\t\t\t\t\t\tsearchText={searchedText}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t<IconButton size='small' onClick={(e) => setSearchAnchorEl(e.currentTarget)}><Search fontSize='small' color='grey.1000' /> </IconButton>\r\n\t\t\t\t\t\t\t\t\t<Menu\r\n\t\t\t\t\t\t\t\t\t\tanchorEl={searchAnchorEl}\r\n\t\t\t\t\t\t\t\t\t\topen={Boolean(searchAnchorEl)}\r\n\t\t\t\t\t\t\t\t\t\tonClose={() => setSearchAnchorEl(null)}\r\n\t\t\t\t\t\t\t\t\t\tanchorOrigin={{\r\n\t\t\t\t\t\t\t\t\t\t\tvertical: 'top',\r\n\t\t\t\t\t\t\t\t\t\t\thorizontal: 'right',\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\ttransformOrigin={{\r\n\t\t\t\t\t\t\t\t\t\t\tvertical: 'top',\r\n\t\t\t\t\t\t\t\t\t\t\thorizontal: 'right',\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tsx={{ '& ul': { p: 0 }, '& .MuiMenu-paper': { boxShadow: `0px 4px 6px rgba(0, 0, 0, 0.1), 0px 1px 3px rgba(0, 0, 0, 0.06);` } }}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t<SearchBar\r\n\t\t\t\t\t\t\t\t\t\t\tplaceholder='Search'\r\n\t\t\t\t\t\t\t\t\t\t\thandleSearch={(e) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetSearchedText(e);\r\n\t\t\t\t\t\t\t\t\t\t\t\thandleSearch?.(e);\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\tdebounceTime={1000}\r\n\t\t\t\t\t\t\t\t\t\t\tisDrivePage={true}\r\n\t\t\t\t\t\t\t\t\t\t\tsearchText={searchText || searchedText}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t</Menu>\r\n\t\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{showFilter && (\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t{isLgUp ?\r\n\t\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\t\t// sx={{display:\"none\"}}\r\n\t\t\t\t\t\t\t\t\tvariant='text'\r\n\t\t\t\t\t\t\t\t\tstartIcon={<FilterIcon fontSize='small' />}\r\n\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\tsetOpenFilterPopup(true);\r\n\t\t\t\t\t\t\t\t\t\tfetchSavedFilters();\r\n\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t{t('common.filter')}\r\n\t\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t\t<IconButton onClick={() => {\r\n\t\t\t\t\t\t\t\t\tsetOpenFilterPopup(true);\r\n\t\t\t\t\t\t\t\t\tfetchSavedFilters();\r\n\t\t\t\t\t\t\t\t}} size='small'>\r\n\t\t\t\t\t\t\t\t\t<FilterIcon fontSize='small' color='grey.1000' />\r\n\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</>\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t{customButtons}\r\n\t\t\t\t\t{actionBtn}\r\n\t\t\t\t\t{button && (\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant='contained'\r\n\t\t\t\t\t\t\tstartIcon={<AddIcon />}\r\n\t\t\t\t\t\t\tonClick={handleAddButton}>\r\n\t\t\t\t\t\t\t{t('common.add')}\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{isDropdownMenuButton && (\r\n\t\t\t\t\t\t<div style={{ zIndex: 999 }}>\r\n\t\t\t\t\t\t\t<DropdownButton\r\n\t\t\t\t\t\t\t\tonClick={handleAddButton}\r\n\t\t\t\t\t\t\t\toptions={itemListingDropdownOptions}\r\n\t\t\t\t\t\t\t\tstartIcon={<AddIcon />}\r\n\t\t\t\t\t\t\t\tisMenuThirdItemDisabled={true}>\r\n\t\t\t\t\t\t\t\t{t('common.add')}\r\n\t\t\t\t\t\t\t</DropdownButton>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t{pageName ? (\r\n\t\t\t\t\t\t<IconButton onClick={(e) => handleImportClick(e)}>\r\n\t\t\t\t\t\t\t<img src={images.more} alt='More Icon' />\r\n\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t''\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t<Menu\r\n\t\t\t\t\t\tanchorEl={rowAnchorEl}\r\n\t\t\t\t\t\topen={Boolean(rowAnchorEl)}\r\n\t\t\t\t\t\tonClose={handleActionsClose}>\r\n\t\t\t\t\t\t{rowActionMenu?.map((option: any) => {\r\n\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t<MenuItem\r\n\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\toption.handleAction(pageName);\r\n\t\t\t\t\t\t\t\t\t\tsetRowAnchorEl(null);\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tsx={{ alignItems: 'center', gap: 0.5 }}\r\n\t\t\t\t\t\t\t\t\tdisabled={\r\n\t\t\t\t\t\t\t\t\t\ttypeof option.disabled === 'function'\r\n\t\t\t\t\t\t\t\t\t\t\t? option.disabled()\r\n\t\t\t\t\t\t\t\t\t\t\t: Boolean(option.disabled)\r\n\t\t\t\t\t\t\t\t\t}>\r\n\t\t\t\t\t\t\t\t\t{option?.icon}\r\n\t\t\t\t\t\t\t\t\t<Typography type='s4' color='inherit'>\r\n\t\t\t\t\t\t\t\t\t\t{option.label}\r\n\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t</MenuItem>\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t})}\r\n\t\t\t\t\t</Menu>\r\n\r\n\t\t\t\t\t<Filter\r\n\t\t\t\t\t\topen={openFilterPopup}\r\n\t\t\t\t\t\tonClose={handleCloseFilter}\r\n\t\t\t\t\t\tactiveView={active}\r\n\t\t\t\t\t\tsavedFilters={savedFilters}\r\n\t\t\t\t\t\tfetchSavedFilters={fetchSavedFilters}\r\n\t\t\t\t\t\tonSaveFilter={handleSaveFilter}\r\n\t\t\t\t\t\ttype={type}\r\n\t\t\t\t\t\tisUseFields={isUseFields}\r\n\t\t\t\t\t\tfields={fields}\r\n\t\t\t\t\t\tonSelectedFilter={f => setSelectedSavedFilter(f)}\r\n\t\t\t\t\t\tapplyFilter={applyFilter}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\r\n\t\t\t{/* Applied Filters view (Start) */}\r\n\t\t\t{isFilterApplied(filters) && (\r\n\t\t\t\t<Box\r\n\t\t\t\t\tmb={1}\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\t\tjustifyContent: 'space-between'\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tmb={1}\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\t\t\tgap: 1,\r\n\t\t\t\t\t\t\tmaxWidth: 400\r\n\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\r\n\t\t\t\t\t\t\t{t('common.filters')}:{' '}\r\n\t\t\t\t\t\t</Typography>\r\n\r\n\t\t\t\t\t\t{filters?.rules?.map((r, rIndex) => (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t{r?.rules?.length ? (\r\n\t\t\t\t\t\t\t\t\tr?.rules?.map((rr, rrIndex) => (\r\n\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t{getFilterChip(rr, rrIndex)}\r\n\t\t\t\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t\t\t) : <>\r\n\t\t\t\t\t\t\t\t\t{getFilterChip(r, rIndex)}\r\n\r\n\t\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant='text'\r\n\t\t\t\t\t\t\tclassName='enable-filter-btn'\r\n\t\t\t\t\t\t\tstartIcon={<FolderSave fontSize='small' />}\r\n\t\t\t\t\t\t\tonClick={handleSaveFilterClick}>\r\n\t\t\t\t\t\t\t<span> {t('common.saveFilter')}</span>\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t{/* {selectedSavedFilter && \r\n\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant='text'\r\n\t\t\t\t\t\t\tclassName='enable-filter-btn'\r\n\t\t\t\t\t\t\tstartIcon={<img src={images.common.saveFilterIcon} alt='Add Icon' />}\r\n\t\t\t\t\t\t\tonClick={handleSaveFilterClick}>\r\n\t\t\t\t\t\t\t\t<Typography type='s3' color=\"theme.secondary.1000\" weight='medium'>\r\n\t\t\t\t\t\t\t\t\tUpdate Filter <Typography type='s3' weight='medium'>{`(${selectedSavedFilter.name})`}</Typography>\r\n\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t} */}\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant='text'\r\n\t\t\t\t\t\t\tstartIcon={<FilterRemove fontSize='small' />}\r\n\t\t\t\t\t\t\tonClick={() =>\r\n\t\t\t\t\t\t\t\tupdatePageInfo({\r\n\t\t\t\t\t\t\t\t\tfilters: initialFilter,\r\n\t\t\t\t\t\t\t\t\tfilterQueryString: ''\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}>\r\n\t\t\t\t\t\t\t{t('common.clearFilter')}\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Box>\r\n\t\t\t)}\r\n\t\t\t{/* Applied Filters view (End) */}\r\n\r\n\t\t\t{/* {filterBar && (\r\n\t\t\t\t<div className='filter-bar'>\r\n\t\t\t\t\t<div className='filter-bar--LeftContent'>\r\n\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t<Select\r\n\t\t\t\t\t\t\t\tfullWidth\r\n\t\t\t\t\t\t\t\tplaceholder='Placeholder'\r\n\t\t\t\t\t\t\t\tsize={'small'}\r\n\t\t\t\t\t\t\t\tclassName='status-changes-drp'\r\n\t\t\t\t\t\t\t\tvalue={status}\r\n\t\t\t\t\t\t\t\tonChange={handleStatusChange}\r\n\t\t\t\t\t\t\t\tvariant='outlined'>\r\n\t\t\t\t\t\t\t\t<MenuItem value={'Status'}>{t('common.status')}</MenuItem>\r\n\t\t\t\t\t\t\t\t<MenuItem value={'Show'}>{t('common.show')}</MenuItem>\r\n\t\t\t\t\t\t\t</Select>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<Typography className='subtask-switch' variant='h6'>\r\n\t\t\t\t\t\t\t{t('common.subtask')}\r\n\t\t\t\t\t\t\t<Toggle checked={isToggled} onChange={handleToggle} />\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t|\r\n\t\t\t\t\t\t<Button className='hide-btn' onClick={handleFilterHide}>\r\n\t\t\t\t\t\t\t{t('common.hide')}\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div className='filter-bar--RightContent'>\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant='text'\r\n\t\t\t\t\t\t\tclassName='enable-filter-btn'\r\n\t\t\t\t\t\t\tonClick={handleSaveFilterClick}>\r\n\t\t\t\t\t\t\t<img src={images.common.saveFilterIcon} alt='Add Icon' />\r\n\t\t\t\t\t\t\t<span>{t('common.saveFilter')}</span>\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t)} */}\r\n\t\t\t<SaveFilterModal\r\n\t\t\t\topen={openSaveFilter}\r\n\t\t\t\tonClose={() => setIsOpenSaveFilter(false)}\r\n\t\t\t\thandleSubmit={(name: any) =>\r\n\t\t\t\t\thandleSave(name, filters as RuleGroupType)\r\n\t\t\t\t}\r\n\t\t\t/>\r\n\t\t\t<UploadExcel\r\n\t\t\t\topen={isUploadModalOpen}\r\n\t\t\t\tshowCameraButton={false}\r\n\t\t\t\tonClose={() => setIsUploadModalOpen(false)}\r\n\t\t\t\tonConfirm={() => setIsUploadModalOpen(true)}\r\n\t\t\t\ttitle='Upload'\r\n\t\t\t\tmultiple={false}\r\n\t\t\t\timportModuleName={importModuleName}\r\n\t\t\t\tpageName={importModuleName}\r\n\t\t\t\thandleSuccessImport={handleSuccessImport}\r\n\t\t\t\taccept='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n\t\t\t/>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nexport { ActionBar };\r\nexport default ActionBar;\r\n","import { Box, Breadcrumbs, BreadcrumbsProps } from '@mui/material';\nimport Typography from '../typography/typography';\nimport { Link } from 'react-router-dom';\n\ninterface BreadCrumbSlot {\n\tlink?: string;\n\tlabel: string | JSX.Element;\n\tlinkState?: any;\n\tonClick?: () => void;\n}\n\ninterface PropsType extends BreadcrumbsProps {\n\tpath: BreadCrumbSlot[];\n}\n\nconst BreadCrumb = (props: PropsType) => {\n\tconst { path } = props;\n\n\treturn (\n\t\t<>\n\t\t\t<Breadcrumbs\n\t\t\t\tsx={{\n\t\t\t\t\t'& .MuiBreadcrumbs-separator': {\n\t\t\t\t\t\tcolor: 'theme.secondary.600'\n\t\t\t\t\t}\n\t\t\t\t}}>\n\t\t\t\t{path?.map((slot, index) => (\n\t\t\t\t\t<Box key={index}>\n\t\t\t\t\t\t{index < path?.length - 1 ? (\n\t\t\t\t\t\t\t// <Link\n\t\t\t\t\t\t\t// \tto={String(slot?.link) ?? undefined}\n\t\t\t\t\t\t\t// \tstyle={{ display: 'block' }}>\n\t\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\t\ttype='s4'\n\t\t\t\t\t\t\t\t\tcolor='theme.secondary.600'\n\t\t\t\t\t\t\t\t\tweight='medium'\n\t\t\t\t\t\t\t\t\tcomponent={slot?.link ? Link : undefined}\n\t\t\t\t\t\t\t\t\tto={String(slot?.link) ?? undefined}\n\t\t\t\t\t\t\t\t\tstate={slot?.linkState}\n\t\t\t\t\t\t\t\t\tonClick={slot?.onClick} style={{ display: 'block' }}>\n\t\t\t\t\t\t\t\t\t{slot?.label}\n\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t// </Link>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\ttype='s4'\n\t\t\t\t\t\t\t\tweight='medium'\n\t\t\t\t\t\t\t\tcolor='theme.secondary.1000'>\n\t\t\t\t\t\t\t\t{slot?.label}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Box>\n\t\t\t\t))}\n\t\t\t</Breadcrumbs>\n\t\t</>\n\t);\n};\n\nexport { BreadCrumb };\nexport default BreadCrumb;\n","import { InputAdornment } from \"@mui/material\";\nimport TextField from \"../text-field/text-field\";\nimport ColorLensIcon from '@mui/icons-material/ColorLens';\nimport _ from \"lodash\";\nimport React from \"react\";\n\nconst ColorPickerInput = ({value, onChange, label, ...props}) => {\n\n // Debounced function to update text\n const debouncedSetColor = (\n _.debounce((value) => {\n onChange(value)\n }, 500)\n );\n\n const handleColorChange = (e) => {\n debouncedSetColor(e.target.value);\n };\n\n return (\n <TextField\n label={label || ''}\n variant='outlined'\n type=\"color\"\n value={value}\n onChange={handleColorChange}\n size=\"small\"\n fullWidth\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <ColorLensIcon fontSize=\"small\" />\n </InputAdornment>\n ),\n }}\n {...props}\n />\n );\n}\n \nexport { ColorPickerInput };\nexport default ColorPickerInput;","import Typography from \"../typography/typography\";\nimport { Box } from \"@mui/material\";\nimport \"./fallback.scss\";\n\ninterface FallbackProps {\n heading: string;\n subHeading: string;\n icon: React.ReactNode;\n children?: React.ReactNode;\n}\n\nconst Fallback = (props: FallbackProps) => {\n const { heading, subHeading, icon, children, ...rest } = props;\n return (\n <Box className=\"fallback\" {...rest}>\n {icon}\n <Typography\n type=\"h5\"\n weight=\"medium\"\n color=\"theme.secondary.1000\"\n className=\"fallback--Text\"\n >\n {heading}\n </Typography>\n <Typography\n type=\"s3\"\n weight=\"medium\"\n color=\"theme.secondary.800\"\n className=\"fallback--Text\"\n >\n {subHeading}\n </Typography>\n <div>{children}</div>\n </Box>\n );\n};\n\nexport { Fallback };\nexport default Fallback;\n","import { Box, IconButton, MenuItem, SelectChangeEvent, TextField } from \"@mui/material\";\r\nimport Typography from \"../typography/typography\";\r\nimport Select from \"../select/select\";\r\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\r\nimport ChevronRightICon from \"@mui/icons-material/ChevronRight\";\r\nimport \"./pagination.scss\";\r\nimport { IPaginationModel } from \"../../@types/pagination-model\";\r\nimport { useLanguage } from \"../../hooks/useLangauge\";\r\nimport { usePages } from \"../../hooks/use-pages\";\r\nimport { useEffect } from \"react\";\r\n\r\ninterface IPagination {\r\n paginationModel: IPaginationModel;\r\n handlePaginationModel: (model: IPaginationModel) => void;\r\n totalPages: number;\r\n}\r\n\r\nconst Pagination = ({\r\n paginationModel,\r\n totalPages,\r\n handlePaginationModel,\r\n}: IPagination) => {\r\n const { pageNo, limit } = paginationModel;\r\n const skip=limit*(pageNo-1)\r\n const pageSizeOptions = [10, 20, 50];\r\n const {isRtl}=useLanguage();\r\n const {setIsChanged,setActivePage,activePage}=usePages();\r\n const handleLimitChange = (e: SelectChangeEvent<unknown>) => {\r\n const newModel = {\r\n ...paginationModel,\r\n page: 1,\r\n pageNo: 1,\r\n limit: e?.target?.value as number,\r\n };\r\n handlePaginationModel(newModel);\r\n };\r\n\r\n const handleNextPage = () => {\r\n if (pageNo < totalPages) {\r\n const newModel = {\r\n ...paginationModel,\r\n pageNo: parseInt(pageNo) + 1,\r\n };\r\n handlePaginationModel(newModel);\r\n setIsChanged(true)\r\n }\r\n };\r\n const handlePrevPage = () => {\r\n if (pageNo > 1) {\r\n const newModel = {\r\n ...paginationModel,\r\n pageNo: parseInt(pageNo) - 1,\r\n };\r\n handlePaginationModel(newModel);\r\n setIsChanged(true)\r\n }\r\n };\r\n\r\n const handleEnterKey = (event) => {\r\n if (event.key === 'Enter') {\r\n const value = event.target.value;\r\n if (parseInt(value) > 0 && parseInt(value) <= totalPages) {\r\n const newModel = {\r\n ...paginationModel,\r\n pageNo: parseInt(value),\r\n }; \r\n handlePaginationModel(newModel);\r\n setIsChanged(true)\r\n }\r\n \r\n }\r\n };\r\n\r\n useEffect(()=>{\r\n setActivePage({...activePage,skip,pageNo})\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n },[pageNo])\r\n\r\n\r\n\r\n return (\r\n <Box className=\"pagination\" borderTop={\"2px solid theme.secondary.200\"}>\r\n <Typography color=\"theme.secondary.800\" type=\"s4\">\r\n Items per page :\r\n </Typography>\r\n <Select\r\n value={limit}\r\n size=\"small\"\r\n className=\"page-size-select page-size-select-pagination\"\r\n onChange={handleLimitChange}\r\n variant=\"outlined\"\r\n MenuProps={{\r\n sx:{\r\n maxWidth:\"unset\"\r\n }\r\n }}\r\n >\r\n {pageSizeOptions?.map((size) => (\r\n <MenuItem key={size} value={size}>\r\n {size}\r\n </MenuItem>\r\n ))}\r\n </Select>\r\n\r\n <Typography color=\"theme.secondary.800\" type=\"s4\">\r\n Go To :\r\n </Typography>\r\n\r\n <TextField\r\n type=\"number\"\r\n className=\"goto-box\"\r\n id=\"outlined-required\"\r\n defaultValue=\"\"\r\n onKeyDown={handleEnterKey}\r\n />\r\n\r\n <IconButton onClick={handlePrevPage} size=\"small\" disabled={paginationModel.pageNo === 1}>\r\n {isRtl ? <ChevronRightICon /> : <ChevronLeftIcon />} \r\n </IconButton>\r\n <Typography\r\n sx={{\r\n ...(isRtl ? { ml: 0.5 } : { mr: 0.5 })\r\n }}\r\n type=\"s4\"\r\n weight=\"normal\"\r\n color=\"theme.secondary.700\"\r\n >\r\n Page{\" \"}\r\n </Typography>\r\n {/* <input value={pageNo} type=\"number\" className=\"page-input\" />{\" \"} */}\r\n <Typography type=\"s4\" weight=\"medium\" color=\"theme.secondary.1000\">\r\n {pageNo}{\" \"}\r\n </Typography>\r\n <Typography\r\n mx={0.5}\r\n type=\"s4\"\r\n weight=\"normal\"\r\n color=\"theme.secondary.700\"\r\n >\r\n of{\" \"}\r\n </Typography>\r\n <Typography type=\"s4\" weight=\"medium\" color=\"theme.secondary.1000\">\r\n {totalPages || 1}\r\n </Typography>\r\n {/* </Box> */}\r\n <IconButton onClick={handleNextPage} size=\"small\" disabled={paginationModel.pageNo === totalPages}>\r\n {isRtl ? <ChevronLeftIcon /> :<ChevronRightICon />}\r\n </IconButton>\r\n </Box>\r\n );\r\n};\r\n\r\nexport { Pagination };\r\nexport default Pagination;\r\n","import {\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n IconButton,\r\n} from \"@mui/material\";\r\nimport Close from \"@mui/icons-material/Close\";\r\nimport Typography from \"../../typography/typography\";\r\nimport TextField from \"../../text-field/text-field\";\r\nimport Button from \"../../button/button\";\r\nimport Modal from \"../../modal/modal\";\r\nimport { useEffect, useMemo, useState } from \"react\";\r\nimport { IPage } from \"../../../@types/page\";\r\n\r\ninterface IAddPage {\r\n open: boolean;\r\n onClose: () => void;\r\n page?: IPage;\r\n handleSubmit: (page: IPage) => void;\r\n pages?: IPage[];\r\n}\r\n\r\nconst AddPageModal = ({ open, onClose, page, handleSubmit, pages }: IAddPage) => {\r\n const [name, setName] = useState<string>();\r\n const [error, setError] = useState<string>(\"\");\r\n const pageNames = useMemo(() => pages?.map((page) => page?.name || \"\"), [pages])\r\n\r\n useEffect(() => {\r\n setName(page?.name);\r\n }, [page]);\r\n\r\n useEffect(() => {\r\n setError(\"\")\r\n }, []);\r\n\r\n const handleSave = () => {\r\n let newPage: any = {};\r\n if (page) {\r\n newPage = {\r\n ...page,\r\n };\r\n }\r\n newPage[\"name\"] = name;\r\n\r\n handleSubmit(newPage);\r\n setName(\"\");\r\n onClose();\r\n };\r\n\r\n const handleInputChange = (e: any) => {\r\n const value = e.target.value\r\n\r\n setName(value)\r\n if (pageNames?.includes(value.trim())) {\r\n setError(\"Page name already in use\")\r\n } else if (!value.trim()) {\r\n setError(\"Page name can not be empty\")\r\n } else {\r\n setError(\"\")\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n <Modal fullWidth onClose={onClose} open={open}>\r\n <DialogTitle>\r\n <Typography type=\"s3\" weight=\"medium\" color={\"theme.secondary.1000\"}>\r\n {page ? \"Edit\" : \"Add\"} New View\r\n </Typography>\r\n <IconButton edge=\"end\" onClick={onClose} size=\"small\">\r\n <Close fontSize=\"inherit\" />\r\n </IconButton>\r\n </DialogTitle>\r\n <DialogContent dividers>\r\n <TextField\r\n label=\"View Name\"\r\n fullWidth\r\n placeholder=\"Enter view name\"\r\n error={error}\r\n helperText={error}\r\n value={name}\r\n onChange={handleInputChange}\r\n />\r\n </DialogContent>\r\n <DialogActions>\r\n <Button\r\n variant=\"outlined\"\r\n onClick={()=>{\r\n onClose();\r\n setName(\"\");\r\n }}\r\n style={{\r\n color: \"black\",\r\n }}\r\n >\r\n Cancel\r\n </Button>\r\n <Button disabled={error || !name} onClick={handleSave}>Save</Button>\r\n </DialogActions>\r\n </Modal>\r\n </>\r\n );\r\n};\r\n\r\nexport { AddPageModal };\r\nexport default AddPageModal;\r\n","import Typography from \"../../typography/typography\";\nimport images from \"../../../assets/images\";\nimport { Box, Tab, Tabs } from \"@mui/material\";\nimport { SyntheticEvent, useState } from \"react\";\n\nfunction SharedPageView(props: any) {\n const { pageValue, pages, onChange } = props;\n const [value, setValue] = useState(pages[pageValue]?.viewStyle - 1);\n\n const handleChange = (_event: SyntheticEvent, newValue: number) => {\n setValue(newValue);\n onChange(newValue + 1);\n };\n\n const renderContentView = () => {\n switch (value) {\n case 0:\n return (\n <img\n className=\"shared-img\"\n src={images.sharedPage.kanbanView}\n alt=\"Kanban View\"\n />\n );\n case 1:\n return (\n <img\n className=\"shared-img\"\n src={images.sharedPage.calendarView}\n alt=\"Gantt View\"\n />\n );\n case 2:\n return (\n <img\n className=\"shared-img\"\n src={images.sharedPage.tableView}\n alt=\"Grid View\"\n />\n );\n case 3:\n return (\n <img\n className=\"shared-img\"\n src={images.sharedPage.ganttView}\n alt=\"Table View\"\n />\n );\n case 4:\n return (\n <img\n className=\"shared-img\"\n src={images.sharedPage.gridView}\n alt=\"Calendar View\"\n />\n );\n default:\n return null;\n }\n };\n\n const renderViewName = (index: number) => {\n switch (index) {\n case 0:\n return value === 0 ? \"Kanban View\" : \"1\";\n case 1:\n return value === 1 ? \"Calendar View\" : \"2\";\n case 2:\n return value === 2 ? \"List View\" : \"3\";\n case 3:\n return value === 3 ? \"Timeline View\" : \"4\";\n case 4:\n return value === 4 ? \"Grid\" : \"5\";\n default:\n return \"\";\n }\n };\n\n return (\n <>\n <div className=\"shared-img-wrap\">\n <Typography>{renderContentView()}</Typography>\n <div className=\"shared-img-tab\">\n <Box sx={{ width: \"100%\" }}>\n <Tabs value={value} onChange={handleChange} centered>\n <Tab key={0} label={renderViewName(0)} />\n <Tab key={1} label={renderViewName(1)} />\n <Tab key={2} label={renderViewName(2)} />\n <Tab key={3} label={renderViewName(3)} />\n <Tab key={4} label={renderViewName(4)} />\n </Tabs>\n </Box>\n </div>\n </div>\n </>\n );\n}\n\nexport { SharedPageView };\nexport default SharedPageView;\n","import {\r\n Box,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n FormControlLabel,\r\n Grid,\r\n IconButton,\r\n Tab,\r\n Tabs,\r\n} from \"@mui/material\";\r\nimport Close from \"@mui/icons-material/Close\";\r\nimport Typography from \"../../typography/typography\";\r\nimport Button from \"../../button/button\";\r\nimport Modal from \"../../modal/modal\";\r\nimport \"./shared-page-modal.scss\";\r\nimport { useEffect, useState } from \"react\";\r\nimport SearchBar from \"../../search-bar/search-bar\";\r\nimport Toggle from \"../../toggle/toggle\";\r\nimport SharedPageView from \"./shared-page-view\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { setSharedPage } from \"../../../views/afterAuth/dashboard/redux/reducer\";\r\n\r\ninterface IAddPage {\r\n open: boolean;\r\n onClose: () => void;\r\n pages?: any;\r\n handleSubmit: (page: any) => void;\r\n}\r\n\r\ninterface TabPanelProps {\r\n children?: React.ReactNode;\r\n index: number;\r\n value: number;\r\n}\r\n\r\nfunction TabPanel(props: TabPanelProps) {\r\n const { children, value, index, ...other } = props;\r\n\r\n return (\r\n <div\r\n className=\"shared-tab\"\r\n role=\"tabpanel\"\r\n hidden={value !== index}\r\n id={`vertical-tabpanel-${index}`}\r\n aria-labelledby={`vertical-tab-${index}`}\r\n {...other}\r\n >\r\n {value === index && (\r\n <Box sx={{ p: 3 }}>\r\n <Typography>{children}</Typography>\r\n </Box>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nfunction a11yProps(index: number) {\r\n return {\r\n id: `vertical-tab-${index}`,\r\n \"aria-controls\": `vertical-tabpanel-${index}`,\r\n };\r\n}\r\n\r\nconst SharedPageModal = ({ open, onClose, pages, handleSubmit }: IAddPage) => {\r\n const [value, setValue] = useState(0);\r\n const [sharedPages, setSharedPages] = useState(pages);\r\n const [searchQuery, setSearchQuery] = useState(\"\");\r\n\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n dispatch(setSharedPage(sharedPages));\r\n }, [dispatch, sharedPages]);\r\n\r\n const handleChange = (_event: React.SyntheticEvent, newValue: number) => {\r\n setValue(newValue);\r\n };\r\n\r\n const handleSave = () => {\r\n handleSubmit(pages[value]);\r\n };\r\n\r\n const renderTabs = () => {\r\n const filteredPages = sharedPages.filter((page: any) =>\r\n page.name.toLowerCase().includes(searchQuery.toLowerCase()),\r\n );\r\n\r\n return filteredPages.map((page: any, index: number) => (\r\n <Tab key={index} label={page.name} {...a11yProps(index)} />\r\n ));\r\n };\r\n\r\n const PageDescription = ({ page }: { page: any }) => {\r\n let viewsMessage = \"\",\r\n filtersMessage = \"\";\r\n\r\n if (page?.details?.views?.length === 1) {\r\n viewsMessage = `This page has 1 view, you can customize it`;\r\n } else if (page?.details?.views?.length) {\r\n viewsMessage = `This page has ${page?.details?.views?.length} different views, you can customize them`;\r\n } else {\r\n viewsMessage = `In this page you can add different views and customize them`;\r\n }\r\n\r\n if (page?.details?.filters?.length === 1) {\r\n filtersMessage = `, and it also have a saved filters to make things easier for you.`;\r\n } else if (page?.details?.filters?.length) {\r\n filtersMessage = `, and there are also ${page?.details?.filters?.length} saved filters to make things easier for you.`;\r\n } else {\r\n filtersMessage = `, and you can also add filters to make things easier for you`;\r\n }\r\n\r\n return <p>{viewsMessage + filtersMessage}</p>;\r\n };\r\n\r\n const handleToggle = () => {\r\n setSharedPages((prevPages: any) => {\r\n const updatedPages = prevPages.map((page: any, index: any) => {\r\n if (index === value) {\r\n return {\r\n ...page,\r\n isPinToDashboard: !page.isPinToDashboard,\r\n };\r\n }\r\n return page;\r\n });\r\n return updatedPages;\r\n });\r\n };\r\n\r\n const handleSharedView = (viewStyle: number) => {\r\n setSharedPages((prevPages: any) => {\r\n const updatedPages = prevPages.map((page: any, index: any) => {\r\n if (index === value) {\r\n return {\r\n ...page,\r\n viewStyle: viewStyle,\r\n };\r\n }\r\n return page;\r\n });\r\n return updatedPages;\r\n });\r\n };\r\n\r\n const handleSearchBar = (value: string) => {\r\n setSearchQuery(value);\r\n setValue(0);\r\n };\r\n return (\r\n <>\r\n <Modal\r\n fullWidth\r\n onClose={onClose}\r\n open={open}\r\n className=\"shared-pages-modal\"\r\n >\r\n <DialogTitle>\r\n <Typography type=\"s3\" weight=\"medium\" color={\"theme.secondary.1000\"}>\r\n Shared Views\r\n </Typography>\r\n <IconButton edge=\"end\" onClick={onClose} size=\"small\">\r\n <Close fontSize=\"inherit\" />\r\n </IconButton>\r\n </DialogTitle>\r\n <DialogContent dividers>\r\n {sharedPages?.length ?\r\n <Box>\r\n <Grid container spacing={2}>\r\n <Grid item xs={4} className=\"tab-title-wrap\">\r\n <div className=\"tab-search-wrap\">\r\n <SearchBar\r\n placeholder={\"Search User\"}\r\n handleSearch={handleSearchBar}\r\n />\r\n </div>\r\n <Tabs\r\n orientation=\"vertical\"\r\n variant=\"scrollable\"\r\n value={value}\r\n onChange={handleChange}\r\n aria-label=\"Vertical tabs example\"\r\n sx={{ borderRight: 1, borderColor: \"divider\" }}\r\n >\r\n {renderTabs()}\r\n </Tabs>\r\n </Grid>\r\n <Grid className=\"shared-grid-wrap\" item xs={8}>\r\n {sharedPages\r\n .filter((page: any) =>\r\n page.name.toLowerCase().includes(searchQuery.toLowerCase()),\r\n )\r\n .map((page: any, index: number) => (\r\n <TabPanel value={value} index={index} key={index}>\r\n <div className=\"shared-pages-main\">\r\n <SharedPageView\r\n pageValue={index}\r\n pages={sharedPages}\r\n onChange={handleSharedView}\r\n />\r\n </div>\r\n <div className=\"tab-info-wrap\">\r\n <div className=\"tab-inner-info\">\r\n <div>\r\n <h1>{page.name}</h1>\r\n </div>\r\n <div className=\"tab-toggle\">\r\n <div>\r\n <FormControlLabel\r\n control={\r\n <Toggle\r\n checked={page.isPinToDashboard}\r\n onChange={handleToggle}\r\n />\r\n }\r\n label=\"Pined to dashboard\"\r\n labelPlacement=\"start\"\r\n />\r\n </div>\r\n <div className=\"owner-name-wrap\">\r\n <p>\r\n <span>Owner:</span> {page.owner}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"tab-content\">\r\n <PageDescription page={page} />\r\n </div>\r\n </div>\r\n </TabPanel>\r\n ))}\r\n </Grid>\r\n </Grid>\r\n </Box>\r\n : <Box display='flex' width='100%' height='100%' alignItems='center' justifyContent='center'><Typography type=\"s1\" color='theme.secondary.800'>No Views has been shared with you</Typography></Box>}\r\n </DialogContent>\r\n <DialogActions>\r\n <Button\r\n variant=\"outlined\"\r\n onClick={onClose}\r\n style={{\r\n color: \"black\",\r\n }}\r\n disabled={!sharedPages?.length}\r\n >\r\n Cancel\r\n </Button>\r\n <Button onClick={handleSave} disabled={!sharedPages?.length}>Duplicate</Button>\r\n </DialogActions>\r\n </Modal>\r\n </>\r\n );\r\n};\r\n\r\nexport { SharedPageModal };\r\nexport default SharedPageModal;\r\n","import React from \"react\";\r\nimport { IconButton, Menu, MenuItem } from \"@mui/material\";\r\nimport AddCircleOutlineRoundedIcon from \"@mui/icons-material/AddCircleOutlineRounded\";\r\nimport Typography from \"../../typography/typography\";\r\nimport AddPageModal from \"./add-page-modal\";\r\nimport KeyboardArrowRightIcon from \"@mui/icons-material/KeyboardArrowRight\";\r\nimport { IPage } from \"../../../@types/page\";\r\nimport SharedPageModal from \"./shared-page-modal\";\r\n\r\ninterface IAddPage {\r\n sharedPages: any;\r\n handleAddPage: (view: IPage) => void;\r\n pages?: IPage[];\r\n}\r\n\r\nconst AddPage = ({ sharedPages, handleAddPage, pages }: IAddPage) => {\r\n const [isAddMenuOpen, setIsAddMenuOpen] = React.useState<null | HTMLElement>(\r\n null,\r\n );\r\n const [isAddPageModalOpen, setIsAddPageModalOpen] = React.useState(false);\r\n const [isSharedPageModalOpen, setIsSharedPageModalOpen] =\r\n React.useState(false);\r\n\r\n const handleAddMenuOpen = (event: React.MouseEvent<HTMLButtonElement>) => {\r\n event.stopPropagation();\r\n setIsAddMenuOpen(event.currentTarget);\r\n };\r\n const handleAddMenuClose = () => setIsAddMenuOpen(null);\r\n\r\n const handleOpenAddPageModal = () => {\r\n handleAddMenuClose();\r\n setIsAddPageModalOpen(true);\r\n };\r\n const handleCloseAddPageModal = () => setIsAddPageModalOpen(false);\r\n\r\n const handleCloseSharedModal = () => {\r\n setIsSharedPageModalOpen(false);\r\n };\r\n const handleOpenSharedPageModal = () => {\r\n setIsSharedPageModalOpen(true);\r\n setIsAddMenuOpen(null);\r\n };\r\n const handleShared = (page: any) => {\r\n const newPage: any = { ...page.details, name: page.name };\r\n handleAddPage(newPage);\r\n setIsSharedPageModalOpen(false);\r\n };\r\n\r\n return (\r\n <>\r\n <IconButton size=\"small\" sx={{ ml: 1 }} onClick={handleAddMenuOpen}>\r\n <AddCircleOutlineRoundedIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n <Menu\r\n open={Boolean(isAddMenuOpen)}\r\n anchorEl={isAddMenuOpen}\r\n onClose={handleAddMenuClose}\r\n >\r\n <MenuItem onClick={handleOpenAddPageModal}>\r\n <Typography color=\"theme.secondary.1000\" type=\"s4\">\r\n Create New View\r\n </Typography>\r\n </MenuItem>\r\n <MenuItem onClick={handleOpenSharedPageModal}>\r\n <Typography color=\"theme.secondary.1000\" type=\"s4\">\r\n Shared Views\r\n </Typography>\r\n <KeyboardArrowRightIcon fontSize=\"small\" />\r\n </MenuItem>\r\n </Menu>\r\n\r\n <AddPageModal\r\n pages={pages}\r\n open={isAddPageModalOpen}\r\n onClose={handleCloseAddPageModal}\r\n handleSubmit={handleAddPage}\r\n />\r\n <SharedPageModal\r\n open={isSharedPageModalOpen}\r\n pages={sharedPages || []}\r\n onClose={handleCloseSharedModal}\r\n handleSubmit={handleShared}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport { AddPage };\r\nexport default AddPage;\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable unused-imports/no-unused-vars */\nimport {\n Box,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n IconButton,\n Accordion,\n AccordionSummary,\n AccordionDetails,\n List,\n ListItem,\n ListItemText,\n ListItemAvatar,\n MenuItem,\n FormControlLabel,\n} from \"@mui/material\";\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport Typography from \"../typography/typography\";\n\nimport Button from \"../button/button\";\nimport Avatar from \"../avatar/avatar\";\nimport Select from \"../select/select\";\nimport \"./share-modal.scss\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useAppDispatch, useAppSelector } from \"../../redux/hooks\";\nimport { getAllUserAndDepartmentDropdown } from \"./redux/actionCreator\";\nimport React from \"react\";\nimport Toggle from \"../toggle/toggle\";\nimport SearchableSelect from \"../searchable-select\";\nimport { flatMap } from \"lodash\";\nimport Checkbox from \"../checkbox/checkbox\";\n\ninterface SharePopUpProps {\n open: boolean;\n title: string;\n onClose: () => void;\n roles?: any;\n toggleSwitch: boolean;\n onSubmit: (selectedUsers: any) => void;\n value?: any;\n isPeopleAccessVisible?: boolean;\n}\ninterface UserDropdownData {\n isRoleVisible: boolean;\n selectedUsers: any[];\n}\n\nconst SharePopUp = (props: SharePopUpProps) => {\n const {\n open,\n title,\n onClose,\n roles,\n toggleSwitch,\n onSubmit,\n value = {},\n isPeopleAccessVisible = false,\n } = props;\n\n const { share } = useAppSelector((store) => store);\n\n const dispatch = useAppDispatch();\n\n const [isPublic, setIsPublic] = useState(value.isPublic || false);\n const [selectedOptions, setSelectedOptions] = useState(\n value.selectedUsers || [],\n );\n const [roleValue, setRoleValue] = useState([]);\n const [availableRole, setAvailableRole] = useState([]);\n\n const [userDropdownData, setUserDropdownData] = useState<UserDropdownData>({\n isRoleVisible: false,\n selectedUsers: [],\n });\n\nconst filteredOptions=useMemo(()=>userDropdownData?.isRoleVisible ? share.departments : share.users,[share,userDropdownData?.isRoleVisible])\nconst [selectedUsers, setSelectedUsers] = useState<any[]>([]);\n useEffect(() => {\n const role: any = [];\n const selRole: any = [];\n roles &&\n roles.map((item: any) => {\n const userRole: any = {};\n if (item.role !== \"Owner\") {\n role.push(item.role);\n userRole.id = item.id;\n userRole.role = item.role;\n selRole.push(userRole);\n }\n setAvailableRole(role);\n setRoleValue(selRole);\n });\n }, [roles]);\n\nuseEffect(()=>{\n if(!value?.selectedUsers?.length && !value?.role_id){\n resetOptions()\nreturn\n }\n userDropdownData.isRoleVisible=value.is_role\n setUserDropdownData(userDropdownData)\n setSelectedOptions({\n ...value,\n selectedUsers:value.is_role?value?.role_id:value?.selectedUsers\n })\n //eslint-disable-next-line\n},[value?.selectedUsers,open])\n\n const handleShareSubmit = () => {\n if(!selectedUsers?.length) return\n const uIds = flatMap(selectedUsers, 'userIds').filter(i=>i);\n let sOptions = selectedUsers\n if( Array.isArray(uIds) && uIds?.length) {\n sOptions = share.users?.filter(u => uIds.includes(u.id))\n \n }\n const sharedData = {\n is_private: !isPublic,\n selectedUsers: [...new Set(sOptions)],\n is_role:userDropdownData?.isRoleVisible,\n role_id:userDropdownData?.isRoleVisible?selectedUsers?.map((u: any) => u?.id):[],\n };\n onSubmit(sharedData);\n \n };\n\n const resetOptions=()=> {\n setSelectedOptions({\n ...value\n });\n setUserDropdownData((prevData) => ({\n ...prevData,\n selectedUsers: [],\n }));\n };\n\n\n\n const handleRoleChange = (event: any, id: any, user: any) => {\n const changeRole: any = roleValue.map((item: any) => {\n if (item.id === id) {\n item.role = event.target.value;\n }\n return item;\n });\n setRoleValue(changeRole);\n };\n\n const handleToggleChange = () => {\n setUserDropdownData((prevSettings) => ({\n ...prevSettings,\n isRoleVisible: !prevSettings.isRoleVisible,\n }));\n setSelectedOptions([]);\n setSelectedUsers(value.selectedUsers || []);\n };\n\n const handleChage=(value:any)=>{\n if(userDropdownData.isRoleVisible){\n setSelectedOptions({...selectedOptions,role_id:value})\n }\n setSelectedOptions({...selectedOptions,selectedUsers:value})\n }\n\n const toggleMakeItPublic = () => {\n setIsPublic(!isPublic);\n }\n \n useEffect(() => {\n if(!open)resetOptions()\n if (open) {\n dispatch(getAllUserAndDepartmentDropdown());\n }\n // eslint-disable-next-line\n }, [open]);\n\n\n\n return (\n <div>\n <Dialog open={open} onClose={onClose} className=\"share\">\n <DialogTitle className=\"share--head\">\n <Box className=\"share--title\">\n <Typography type=\"s3\" ml={1} className=\"dialog-box-title\">\n {title}\n </Typography>\n </Box>\n <IconButton disableRipple onClick={onClose}>\n <CloseIcon />\n </IconButton>\n </DialogTitle>\n\n <Divider />\n\n <DialogContent className=\"share--content\">\n <Box m={1} display={'flex'} alignItems={'center'} justifyContent={'space-between'}>\n <Typography type=\"s3\" className=\"input-label\">\n Add users\n </Typography>\n <FormControlLabel\n control={<Box mb={0.5} mr={0.5}><Toggle checked={userDropdownData?.isRoleVisible} onChange={handleToggleChange} /></Box>}\n label={\n <Typography type=\"s3\" className=\"input-label\">Show only Roles</Typography>\n }\n />\n </Box>\n \n\n {toggleSwitch && (\n <>\n \n <Box mb={4} className=\"d-flex\">\n \n <SearchableSelect \n options={filteredOptions}\n multiple\n value={selectedOptions?.selectedUsers}\n onChange={(e) =>handleChage(e.target.value)}\n placeholder={\n selectedOptions && selectedOptions.length\n ? \"\"\n : \"Add people and roles\"\n }\n getSelectedData={row=>setSelectedUsers(row)}\n />\n </Box>\n </>\n )}\n \n {isPeopleAccessVisible && (\n <div className={ \"share--blurClass\"}>\n <Accordion className=\"people-access-accordion\">\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <Typography>People with access</Typography>\n </AccordionSummary>\n <AccordionDetails className=\"user-accordion-details\">\n <List className=\"accordion-list\">\n {roles &&\n roles.map((user: any) => {\n const userRole: any =\n roleValue?.length > 0 &&\n roleValue?.filter((item: any) => item.id === user.id);\n return (\n <ListItem alignItems=\"flex-start\">\n <ListItemAvatar>\n <Avatar size={40} alt=\"Person\" icon />\n </ListItemAvatar>\n <ListItemText\n className=\"primary-user-name\"\n primary={user.name}\n secondary={\n <Typography\n component=\"span\"\n variant=\"body2\"\n className=\"secondary-email-text\"\n >\n {user.email}\n </Typography>\n }\n />\n {user.role == \"Owner\" ? (\n <p className=\"owner-role-badge\">{user.role}</p>\n ) : (\n <div>\n <Select\n className=\"role-edit-select-box\"\n value={\n userRole?.length > 0 ? userRole[0].role : \"\"\n }\n onChange={(e: any) =>\n handleRoleChange(e, user.id, user)\n }\n variant=\"outlined\"\n >\n {availableRole.map((role: any) => (\n <MenuItem\n className=\"select-menu-items\"\n value={role}\n >\n {role}\n </MenuItem>\n ))}\n </Select>\n </div>\n )}\n </ListItem>\n );\n })}\n </List>\n </AccordionDetails>\n </Accordion>\n </div>\n )}\n\n <div className=\"checkbox\">\n <Checkbox\n checked={isPublic}\n onChange={toggleMakeItPublic}\n />\n <div className=\"checkbox-text\">Make it public</div>\n </div>\n </DialogContent>\n\n <Divider />\n\n <DialogActions className=\"share--actions\">\n <Button className=\"cancel-btn\" variant=\"text\" onClick={onClose}>\n Cancel\n </Button>\n <Button className=\"success-btn\" onClick={handleShareSubmit}>\n Save and Share\n </Button>\n </DialogActions>\n </Dialog>\n </div>\n );\n};\n\nexport { SharePopUp };\nexport default SharePopUp;\n","export const userRoles = [\r\n {\r\n id: 1,\r\n name: \"Prasun Singh\",\r\n email: \"prasun@goldenflitch.com\",\r\n role: \"Owner\",\r\n },\r\n {\r\n id: 2,\r\n name: \"Sidhant Chandel\",\r\n email: \"sidhant@goldenflitch.com\",\r\n role: \"Editor\",\r\n },\r\n {\r\n id: 3,\r\n name: \"Amrit Sonar\",\r\n email: \"amrit@goldenflitch.com\",\r\n role: \"Viewer\",\r\n },\r\n];\r\n","import { Divider, MenuItem } from \"@mui/material\";\nimport Menu from \"../../menu/menu\";\nimport Typography from \"../../typography/typography\";\nimport { useEffect, useState } from \"react\";\nimport AddPageModal from \"./add-page-modal\";\nimport { IPage } from \"../../../@types/page\";\nimport SharePopUp from \"../../share-modal/share-modal\";\nimport { userRoles } from \"../../../views/beforeAuth/components/share-modal-data/share-modal-data\";\nimport ConfirmPopUp from \"../../confirm-modal/confirm-modal\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { pinToDashboardList } from \"../../../views/afterAuth/dashboard/redux/reducer\";\nimport {\n // deleteV1DashboardId,\n // putV1DashboardId,\n} from \"../../../api-client/api.system-feature/api\";\n// import type * as Types from \"../../api-client/api.system-feature/api-types\";\nimport { sharePage } from \"../../share-modal/redux/actionCreator\";\nimport { useAppDispatch } from \"../../../redux/hooks\";\nimport { generateRandomId } from \"../../../utils/common\";\nimport { usePages } from \"../../../hooks/use-pages\";\n\ninterface IPageAction {\n open: null | HTMLElement;\n onClose: () => void;\n page?: IPage;\n pages: IPage[];\n setCurrentPage: React.Dispatch<React.SetStateAction<number>>;\n setPages: React.Dispatch<React.SetStateAction<IPage[]>>;\n resource: string;\n handlePageDelete: (pages: any[]) => void;\n}\n\nconst moveLeft = (arr: IPage[], pageValue: number) => {\n const updatedArray = [...arr];\n if (updatedArray.length <= 1) return;\n\n const index = updatedArray.findIndex((item) => item._id === pageValue);\n\n if (index === 0) return;\n\n const elementToShift = updatedArray.splice(index, 1)[0];\n updatedArray.splice(index - 1, 0, elementToShift);\n return updatedArray;\n};\n\nconst moveRight = (arr: IPage[], pageValue: number) => {\n const updatedArray = [...arr];\n if (updatedArray.length <= 1) return;\n\n const index = updatedArray.findIndex((item) => item._id === pageValue);\n\n if (index === updatedArray.length - 1) return;\n\n const elementToShift = updatedArray.splice(index, 1)[0];\n updatedArray.splice(index + 1, 0, elementToShift);\n return updatedArray;\n};\n\nconst deletePage = (arr: IPage[], pageValue: number) => {\n const updatedArray = [...arr];\n if (updatedArray.length <= 1) return;\n\n const index = updatedArray.findIndex((item) => item._id === pageValue);\n\n updatedArray.splice(index, 1);\n return updatedArray;\n};\n\nconst PageAction = ({\n open,\n onClose,\n page,\n pages,\n setCurrentPage,\n setPages,\n resource,\n handlePageDelete,\n}: IPageAction) => {\n \n const [isEditPageModalOpen, setIsEditPageModalOpen] = useState(false);\n const [isShareModalOpen, setIsShareModalOpen] = useState(false);\n const [isConfirmOpen, setIsConfirmOpen] = useState(false);\n const [deletePageNo, setDeletePageNo] = useState<any>({});\n const [defaultSharedData, setDefaultSharedData] = useState<any>({});\n const [pageSharedData, setPageSharedData] = useState<any>([]);\n const pinToDashboardStore = useSelector((state: any) => state);\n const [pinToDashboardData, setPinToDashboardData] = useState<any>(\n pinToDashboardStore?.dashboard?.pinToDashboardList || [],\n );\n\n\n const appDispatch = useAppDispatch();\n const dispatch = useDispatch();\n const {setIsCreatePage}=usePages()\n // const token = zI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6OSwiaWF0IjoxNzA2NDcwNzQwfQ.6dtxBVGl4hF0TrNDanSBTiFtV_TUshjaiaYe9XT2Ld8\";\n useEffect(() => {\n dispatch(pinToDashboardList(pinToDashboardData));\n }, [dispatch, pageSharedData, pinToDashboardData]);\n\n useEffect(()=>{\n \n if(page){\n setPageSharedData([...pageSharedData,{\n page:{\n ...page,\n value:page?._id\n },\n isPublic: true,\n shareUsers:page?.selectedUsers,\n }])\n }\n //eslint-disable-next-line\n },[page])\n \n\n const handleOpenEditModal = () => {\n onClose();\n setIsEditPageModalOpen(true);\n };\n\n const handleCloseEditModal = () => {\n setIsEditPageModalOpen(false);\n };\n\n const handleShare = (pageData: any) => {\n pageData.pages = pages;\n appDispatch(sharePage(pageData)).then((res) => {\n if (res?.payload?.data?.pages?.length) {\n setPages(res?.payload?.data?.pages);\n }\n setIsShareModalOpen(false);\n });\n };\n\n const handleSharePage = (page: any) => {\n const defaultData = pageSharedData.find(\n (item: any) => item.page?.value === page?.value,\n );\n if (defaultData) {\n setDefaultSharedData({\n isPublic: defaultData.isPublic,\n selectedUsers: defaultData.shareUsers,\n \n });\n } else {\n setDefaultSharedData({\n isPublic: page?.selectedUsers?.length>0,\n ...page,\n });\n }\n setIsShareModalOpen(true);\n setIsShareModalOpen(true);\n };\n\n const handleDuplicatePage = (page: any) => {\n const labelExists = (label: string) =>\n pages.some((item) => item.name === label);\n const { uniqueNumberId: _id } = generateRandomId();\n let newLabel = page.name;\n\n if (labelExists(newLabel)) {\n let counter = 1;\n while (labelExists(`${page.name} ${counter}`)) {\n counter++;\n }\n newLabel = `${page.name} ${counter}`;\n }\n const updatedPage = [\n ...pages,\n { ...page, name: newLabel, _id, data: page.data, isShared: false },\n ];\n\n setPages(updatedPage);\n setIsCreatePage(true)\n };\n\n const handleEdit = (newPage: IPage) => {\n const updatedPages = pages.map((page) => {\n if (page._id === newPage._id) {\n return {\n ...page,\n name: newPage.name\n }\n }\n return page\n })\n\n setPages(updatedPages);\n setIsCreatePage(true)\n // const putDashboardRequest: Types.PutV1DashboardIdRequest = {\n // \"x-token\": token,\n // module: \"user\",\n // user_id: \"1\",\n // name: newPage.name,\n // id: newPage._id,\n // };\n // putV1DashboardId(putDashboardRequest)\n // .then((response: any) => {\n // const prevPages = [...pages];\n // const updatedPages = prevPages.map((page) =>\n // page._id === newPage._id ? newPage : page,\n // );\n // setPages(updatedPages);\n // updatePinToDashboardPage(updatedPages);\n // })\n // .catch((err: any) => console.log(\"Error in adding page\", err));\n };\n\n // const updatePinToDashboardPage = (updatedPages: any) => {\n // const currentPageLabel = updatedPages.find(\n // (item: any) => item.value === page?._id,\n // )?.label;\n\n // const updatedPinToDashboardData = pinToDashboardData.map((data: any) => ({\n // ...data,\n // label: data.value === page?._id ? currentPageLabel : data.label,\n // }));\n\n // setPinToDashboardData(updatedPinToDashboardData);\n // };\n\n const handleMoveLeft = (pageValue: any) => {\n const updatedArray = moveLeft(pages, pageValue?._id);\n if (updatedArray) setPages(updatedArray);\n };\n\n const handleMoveRight = (pageValue: any) => {\n const updatedArray = moveRight(pages, pageValue?._id);\n if (updatedArray) setPages(updatedArray);\n };\n\n const handleDeletePage = (pageValue: any) => {\n setIsConfirmOpen(true);\n setDeletePageNo(pageValue);\n };\n\n const handleConfirmDelete = () => {\n // if (!isNaN(deletePageNo._id)) {\n // const deleteDashboardRequest: Types.DeleteV1DashboardIdRequest = {\n // \"x-token\": token,\n // id: deletePageNo._id,\n // };\n // deleteV1DashboardId(deleteDashboardRequest)\n // .then((response: any) => {\n // })\n // .catch((err: any) => console.log(\"Error in deleting page\", err));\n // }\n \n const updatedArray = deletePage(pages, deletePageNo?._id);\n deletePinToDashboardPage();\n setDeletePageNo({});\n setIsConfirmOpen(false);\n if (updatedArray) {\n setCurrentPage(updatedArray[0]);\n setPages(updatedArray);\n handlePageDelete(updatedArray);\n } else {\n handlePageDelete([]);\n setPages([]);\n }\n };\n\n const deletePinToDashboardPage = () => {\n const updatedPinToDashboardData = pinToDashboardData.filter(\n (data: any) => data.value !== page?._id,\n );\n setPinToDashboardData(updatedPinToDashboardData);\n };\n\n const handleShareModal = (selectedUsers: any) => {\n\n let updatedData: any[] = [];\n const existingItem = pageSharedData.find(\n (item: any) => item.page.value === page?._id,\n );\n\n if (existingItem) {\n updatedData = pageSharedData.map((item: any) => {\n if (item.page.value === page?._id) {\n return {\n ...item,\n isPublic: selectedUsers.isPublic,\n shareUsers: selectedUsers.selectedUsers,\n };\n }\n return item;\n });\n } else {\n updatedData = [\n ...pageSharedData,\n {\n page: page,\n isPublic: selectedUsers.isPublic,\n shareUsers: selectedUsers.selectedUsers,\n viewStyle: 1,\n owner: 0,\n },\n ];\n }\n setPageSharedData(updatedData);\n handleShare({ ...selectedUsers, page: page, resource });\n };\n\n const handlePinToDashboard = () => {\n const index = pinToDashboardData.findIndex(\n (item: any) => item.value === page?._id,\n );\n\n if (index !== -1) {\n setPinToDashboardData((prevData: any) => {\n const updatedData = [...prevData];\n updatedData[index] = { ...updatedData[index], label: page?.name };\n return updatedData;\n });\n } else {\n setPinToDashboardData((prevData: any) => [...prevData, page]);\n }\n };\n\n const actions = [\n {\n label: \"Rename\",\n func: handleOpenEditModal,\n disabled: Boolean(page?.isShared)\n },\n {\n label: \"Duplicate\",\n func: handleDuplicatePage,\n },\n {\n label: \"Share\",\n func: handleSharePage,\n disabled: Boolean(page?.isShared)\n },\n {\n label: \"Pin to dashboard\",\n func: handlePinToDashboard,\n disabled: Boolean(page?.isShared)\n },\n {\n label: \"Move Right\",\n func: handleMoveRight,\n disabled: (pages?.length <= 1) || Boolean(page?.isShared)\n },\n {\n label: \"Move Left\",\n func: handleMoveLeft,\n disabled: (pages?.length <= 1) || Boolean(page?.isShared)\n },\n ];\n\n const handleAction = (func: any) => {\n func(page);\n onClose();\n };\n\n return (\n <>\n <Menu open={Boolean(open)} anchorEl={open} onClose={onClose}>\n {actions?.map((action) => (\n <MenuItem\n key={action?.label}\n onClick={() => handleAction(action.func)}\n disabled={Boolean(action?.disabled)}\n >\n <Typography color=\"theme.secondary.1000\" type=\"s4\">\n {action?.label}\n </Typography>\n </MenuItem>\n ))}\n <Divider sx={{ mt: `4px !important`, mb: `4px !important` }}/>\n <MenuItem onClick={() => handleAction(handleDeletePage)} disabled={Boolean(page?.isShared)}\n sx={{\n '&:hover': {\n backgroundColor: 'theme.error.100'\n }\n }}\n >\n <Typography color=\"theme.error.500\" type=\"s4\">\n Delete\n </Typography>\n </MenuItem>\n </Menu>\n\n <AddPageModal\n open={isEditPageModalOpen}\n page={page}\n pages={pages}\n onClose={handleCloseEditModal}\n handleSubmit={handleEdit}\n />\n\n <ConfirmPopUp\n open={isConfirmOpen}\n onClose={() => setIsConfirmOpen(false)}\n onConfirm={handleConfirmDelete}\n title=\"Delete Confirmation?\"\n description=\"Are you sure you want to delete this page ?\"\n />\n <SharePopUp\n open={isShareModalOpen}\n onClose={() => setIsShareModalOpen(false)}\n title={`Share page ${page?.name}`}\n roles={userRoles}\n toggleSwitch={true}\n value={defaultSharedData}\n onSubmit={handleShareModal}\n />\n </>\n );\n};\n\nexport { PageAction };\nexport default PageAction;\n","/* eslint-disable no-mixed-spaces-and-tabs */\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport {\r\n\tTabs,\r\n\tTab as MUITab,\r\n\tstyled,\r\n\tIconButton,\r\n\tMenuItem,\r\n\tDivider,\r\n\tBox,\r\n\tCircularProgress\r\n} from '@mui/material';\r\nimport MenuIcon from '@mui/icons-material/Menu';\r\nimport KeyboardArrowDown from '@mui/icons-material/KeyboardArrowDown';\r\nimport Typography from '../typography/typography';\r\nimport Menu from '../menu/menu';\r\nimport AddPage from './components/add-page';\r\nimport PageAction from './components/page-action';\r\nimport Tooltip from '../tooltip/Tooltip';\r\nimport { IPage } from '../../@types/page';\r\nimport { defaultPageState } from '../../contexts/page-context';\r\nimport { usePages } from '../../hooks/use-pages';\r\nimport Button from '../button/button';\r\nimport _ from 'lodash';\r\nimport { Save, Share } from '@mui/icons-material';\r\nimport './page-navigator.scss';\r\nimport React from 'react';\r\n\r\nconst StyledTabs = styled(Tabs)(() => ({\r\n\tminHeight: 'fit-content',\r\n\r\n\t'.MuiTabs-indicator': {\r\n\t\theight: '0px !important'\r\n\t},\r\n\t'& .MuiTabs-flexContainer': {\r\n\t\tgap: '4px'\r\n\t}\r\n}));\r\n\r\nconst StyledTab = styled(MUITab)(({ theme: { palette } }) => ({\r\n\tminHeight: '2rem',\r\n\ttextTransform: 'none',\r\n\tpadding: '0rem 1rem',\r\n\tminWidth: 'fit-content',\r\n\tborderRadius: 4,\r\n\t'&.Mui-selected': {\r\n\t\tbackground: palette.theme?.primary[100],\r\n\t\tcolor: palette.theme?.primary[700],\r\n\t\tborderTop: `2px solid ${palette.theme?.primary[700]}`\r\n\t},\r\n\t'.MuiIconButton-root': {\r\n\t\tpadding: '0rem'\r\n\t},\r\n\t\"&:hover\": {\r\n\t\tbackground: palette.theme?.primary[100]\r\n\t}\r\n}));\r\n\r\nconst title = `successfully created, complete with your saved filters, sorting options, and views.`;\r\n\r\nexport interface IPageNavigator {\r\n\tpages: IPage[];\r\n\tsetPages: React.Dispatch<React.SetStateAction<IPage[]>>;\r\n\tcurrentPage: string | number;\r\n\tsetCurrentPage: React.Dispatch<React.SetStateAction<number>>;\r\n\tsharedPages: any;\r\n\tresource: string;\r\n\thandlePageDelete: (pages: any[]) => void;\r\n\tisPageSaving?: boolean;\r\n}\r\n\r\nexport const PageNavigator = ({\r\n\t// sharedPages,\r\n\tresource,\r\n\t// handlePageDelete\r\n}: IPageNavigator) => {\r\n\tconst { pages, setPages, setActivePage, activePage, savePages,setIsChanged, isSaving, generatedColumns, sharedPages, isChanged,deletePage,isCreatePage,setIsCreatePage ,addOrDeletePage} = usePages();\r\n\tconst shareTitle = (owner) => `shared by ${owner}`;\r\n\tconst [isActionsMenuOpen, setIsActionsMenuOpen] =\r\n\t\tuseState<null | HTMLElement>(null);\r\n\tconst [page, setPage] = useState<IPage>();\r\n\r\n\tconst [isAllPagesMenuOpen, setIsAllPagesMenuOpen] =\r\n\t\tuseState<null | HTMLElement>(null);\r\n\r\n\tconst handleChangePage = (_: React.SyntheticEvent, newValue: number) => {\r\n\t\tconst pg = pages.find((p) => p?._id == newValue);\r\n\t\tsetActivePage(pg);\r\n\t};\r\n\r\n\tconst handleOpenActionsMenu = (\r\n\t\tevent: React.MouseEvent<HTMLButtonElement>,\r\n\t\tclickedPage: IPage\r\n\t) => {\r\n\t\tevent.stopPropagation();\r\n\t\tsetPage(clickedPage);\r\n\t\tsetIsActionsMenuOpen(event.currentTarget);\r\n\t};\r\n\tconst handleCloseActionsMenu = () => setIsActionsMenuOpen(null);\r\n\r\n\tconst handleOpenAllPagesMenu = (\r\n\t\tevent: React.MouseEvent<HTMLButtonElement>\r\n\t) => {\r\n\t\tevent.stopPropagation();\r\n\t\tsetIsAllPagesMenuOpen(event.currentTarget);\r\n\t};\r\n\tconst handleCloseAllPagesMenu = () => setIsAllPagesMenuOpen(null);\r\n\r\n\tconst handleChangePageFromMenu = (val: number) => {\r\n\t\tsetActivePage(val);\r\n\t\thandleCloseAllPagesMenu();\r\n\t};\r\n\r\n\tconst handleAddPage = (newPage: IPage) => {\r\n\t\tconst nPage = {\r\n\t\t\t...defaultPageState,\r\n\t\t\t...newPage,\r\n\t\t\tname: newPage.name,\r\n\t\t\tvisible_columns: generatedColumns.columns,\r\n\t\t\tcolumn_order: _.uniq(generatedColumns.orderKeys),\r\n\t\t\t_id: pages.length + 1,\r\n\t\t\tactive_view:'Table',\r\n\t\t\tviews:[{\r\n\t\t\t\tlabel:'Table',\r\n\t\t\t\tposition:0\r\n\t\t\t}]\r\n\t\t};\r\n\t\tconst updatedPages: any = [\r\n\t\t\t...pages,\r\n\t\t\t...[nPage]\r\n\t\t];\r\n\t\tsetActivePage({...nPage});\r\n\t\tsetPages([...updatedPages]);\r\n\t\tsetIsCreatePage(true)\r\n\t\t\r\n\t};\r\n\r\n\tconst handlePageDeleteFunction=(pages:any[])=>{\r\n\t\t\r\n\t\tdeletePage(pages)\r\n\t}\r\n\r\n\r\n\tconst handleAddOrdeletePage =useCallback(async\t () => {\r\n\t\tif(isCreatePage){\r\n\t\t\tconst res=await addOrDeletePage();\r\n\t\t\tif(res.status_code===200){\r\n\t\t\t\tsetPages(res?.data?.pages);\r\n\t\t\t\tsetIsChanged(false)\r\n\t\t\t}}\r\n\t\tsetTimeout(()=>{\r\n\t\t\tsetIsCreatePage(false);\r\n\t\t\t\r\n\t\t},2000)\r\n\t\t//eslint-disable-next-line\r\n\t},[isCreatePage])\r\n\r\n\tuseEffect(()=>{\r\n\t\thandleAddOrdeletePage()\r\n\t\t//eslint-disable-next-line\r\n\t},[handleAddOrdeletePage])\r\n\r\n\treturn (\r\n\t\t<Box display=\"flex\" gap={2} alignItems={'center'} className='page-navigator-container'>\r\n\t\t\t<Box\r\n\t\t\t\tdisplay={'flex'}\r\n\t\t\t\tclassName='page-navigator'\r\n\t\t\t\tsx={{ display: 'flex', opacity: isSaving ? 0.5 : 1 }}>\r\n\t\t\t\t<IconButton\r\n\t\t\t\t\t// size='small'\r\n\t\t\t\t\tonClick={handleOpenAllPagesMenu}\r\n\t\t\t\t\tdisabled={isSaving}>\r\n\t\t\t\t\t<MenuIcon fontSize='small' />\r\n\t\t\t\t</IconButton>\r\n\t\t\t\t<StyledTabs\r\n\t\t\t\t\tvalue={activePage?._id}\r\n\t\t\t\t\tvariant='scrollable'\r\n\t\t\t\t\tonChange={handleChangePage}\r\n\t\t\t\t\taria-label='basic tabs example'>\r\n\t\t\t\t\t{pages?.map((page) => (\r\n\t\t\t\t\t\t<StyledTab\r\n\t\t\t\t\t\t\ticonPosition='end'\r\n\t\t\t\t\t\t\tdisableRipple\r\n\t\t\t\t\t\t\tkey={page}\r\n\t\t\t\t\t\t\ticon={\r\n\t\t\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\t\t\tsize='small'\r\n\t\t\t\t\t\t\t\t\tedge='end'\r\n\t\t\t\t\t\t\t\t\tonClick={(e) => handleOpenActionsMenu(e, page)}\r\n\t\t\t\t\t\t\t\t\tdisabled={isSaving}>\r\n\t\t\t\t\t\t\t\t\t<KeyboardArrowDown fontSize='small' color={activePage?._id === page?._id ? 'primary' : undefined}/>\r\n\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tlabel={\r\n\t\t\t\t\t\t\t\t<Tooltip\r\n\t\t\t\t\t\t\t\t\ttitle={`The '${page.name}' page has been ${page?.isShared ? shareTitle(page?.owner) : title}`}\r\n\t\t\t\t\t\t\t\t\tkey={page._id}\r\n\t\t\t\t\t\t\t\t\tplacement='top'\r\n\t\t\t\t\t\t\t\t\tarrow>\r\n\t\t\t\t\t\t\t\t\t\t<Box sx={{ display: 'flex', alignItems: 'center', gap:1 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t{page?.isShared && <Share sx={{fontSize:'20px',color:'#4AC08C'}}/>}\r\n\t\t\t\t\t\t\t\t\t\t\t<span>{page.name}</span>\r\n\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tvalue={page?._id}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t))}\r\n\t\t\t\t</StyledTabs>\r\n\r\n\t\t\t\t<Divider\r\n\t\t\t\t\torientation='vertical'\r\n\t\t\t\t\tvariant='middle'\r\n\t\t\t\t\tflexItem\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\tml: 2,\r\n\t\t\t\t\t\tborderWidth: '1px'\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\t\t\t\t<Box display=\"flex\" alignItems={'center'}>\r\n\t\t\t\t\t<AddPage\r\n\t\t\t\t\t\tpages={pages}\r\n\t\t\t\t\t\thandleAddPage={handleAddPage}\r\n\t\t\t\t\t\tsharedPages={sharedPages}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</Box>\r\n\r\n\t\t\t\t<PageAction\r\n\t\t\t\t\topen={isActionsMenuOpen}\r\n\t\t\t\t\tonClose={handleCloseActionsMenu}\r\n\t\t\t\t\tpage={page}\r\n\t\t\t\t\tsetPages={setPages}\r\n\t\t\t\t\tsetCurrentPage={setActivePage}\r\n\t\t\t\t\tpages={pages}\r\n\t\t\t\t\tresource={resource}\r\n\t\t\t\t\thandlePageDelete={handlePageDeleteFunction}\r\n\t\t\t\t/>\r\n\r\n\t\t\t\t<Menu\r\n\t\t\t\t\topen={Boolean(isAllPagesMenuOpen)}\r\n\t\t\t\t\tanchorEl={isAllPagesMenuOpen}\r\n\t\t\t\t\tonClose={handleCloseAllPagesMenu}>\r\n\t\t\t\t\t{pages?.map((page) => (\r\n\t\t\t\t\t\t<MenuItem\r\n\t\t\t\t\t\t\tselected={page._id === activePage?._id}\r\n\t\t\t\t\t\t\tkey={page._id}\r\n\t\t\t\t\t\t\tonClick={() => handleChangePageFromMenu(page)}>\r\n\t\t\t\t\t\t\t<Typography color='theme.secondary.1000' type='s4'>\r\n\t\t\t\t\t\t\t\t{page.name}\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t</MenuItem>\r\n\t\t\t\t\t))}\r\n\t\t\t\t</Menu>\r\n\t\t\t</Box>\r\n\t\t\t<Box display=\"flex\" alignItems={'center'}>\r\n\t\t\t\t<Button\r\n\t\t\t\t\tsize='small'\r\n\t\t\t\t\tvariant='contained'\r\n\t\t\t\t\tonClick={() => savePages()}\r\n\t\t\t\t\t// sx={{fontWeight:600, marginBottom:'2px',px:3}}\r\n\t\t\t\t\tendIcon={\r\n\t\t\t\t\t\tisSaving ? <CircularProgress size={15} color='inherit' /> : <Save fontSize='small'/>\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdisabled={!isChanged || isSaving}>\r\n\t\t\t\t\tSave\r\n\t\t\t\t</Button>\r\n\t\t\t</Box>\r\n\t\t</Box>\r\n\t);\r\n};\r\n\r\nexport default PageNavigator;\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable unused-imports/no-unused-vars */\nimport { Box } from \"@mui/material\";\nimport Pagination from \"../pagination/pagination\";\nimport PageNavigator from \"../page-navigator/page-navigator\";\nimport \"./footer.scss\";\nimport { IPaginationModel } from \"../../@types/pagination-model\";\nimport React, { useEffect, useState } from \"react\";\n\ninterface IFooter {\n pages: any;\n setPages: any;\n currentPage: string | number;\n setCurrentPage: any;\n total: number;\n paginationModel: IPaginationModel;\n handlePaginationModel: (model: IPaginationModel) => void;\n sharedPages: any;\n resource: string;\n savePageConfiguration: () => void;\n handlePageDelete: (pages: any[]) => void;\n enablePages: boolean\n isPaginationDisplayed?: boolean\n isPageSaving?: boolean\n}\n\nconst Footer = React.memo(({\n pages,\n setPages,\n currentPage,\n setCurrentPage,\n total, // total number of pages in footer pagination\n paginationModel,\n handlePaginationModel,\n sharedPages,\n resource,\n savePageConfiguration,\n handlePageDelete,\n enablePages,\n isPaginationDisplayed = true,\n isPageSaving = false\n}: IFooter) => {\n const [isDrawerOpen, setIsDrawerOpen] = useState(\n window.localStorage.getItem('_is_drawer_open') === 'true'\n );\n\n useEffect(() => {\n const handleStorageChange = () => {\n setIsDrawerOpen(window.localStorage.getItem('_is_drawer_open') === 'true');\n };\n\n window.addEventListener('storage', handleStorageChange);\n\n const interval = setInterval(handleStorageChange, 10); \n\n return () => {\n window.removeEventListener('storage', handleStorageChange);\n clearInterval(interval);\n };\n }, []);\n\n // useEffect(()=>{\n // handlePaginationModel({...paginationModel,pageNo:activePage?.pageNo})\n // //eslint-disable-next-line react-hooks/exhaustive-deps\n // },[activePage?.pageNo])\n\n return (\n <Box className={`${!isDrawerOpen?'footer--drawerContainer':'footer--Container'}`} sx={{justifyContent: enablePages? 'space-between': 'flex-end'}}>\n \n \n {Boolean(enablePages) && <PageNavigator\n pages={pages}\n setPages={setPages}\n currentPage={currentPage}\n setCurrentPage={setCurrentPage}\n resource={resource}\n sharedPages={sharedPages}\n handlePageDelete={handlePageDelete}\n />}\n <Box>\n {isPaginationDisplayed && (\n <Pagination\n paginationModel={paginationModel}\n handlePaginationModel={handlePaginationModel}\n totalPages={total}\n />\n )}\n </Box>\n </Box>\n );\n});\n\nexport { Footer };\nexport default Footer;\n","import React from \"react\";\nimport BreadCrumb from \"../bread-crumb/bread-crumb\";\nimport \"./form-header.scss\";\n\ninterface BreadCrumbSlot {\n link: string;\n label: string | JSX.Element;\n linkState?: any;\n}\n\ninterface FormHeaderProps {\n breadCrumbPath: BreadCrumbSlot[];\n children?: React.ReactNode;\n containerProps?:any;\n}\nconst FormHeader = (props: FormHeaderProps) => {\n const { breadCrumbPath, children, containerProps } = props;\n return (\n <div className=\"formHeader--Header\" {...containerProps}>\n <BreadCrumb path={breadCrumbPath} />\n <div>{children}</div>\n </div>\n );\n};\n\nexport { FormHeader };\nexport default FormHeader;\n","const Loader = () => {\n return (\n <div className=\"loader loader--style1\" title=\"0\">\n <svg\n version=\"1.1\"\n id=\"loader-1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n x=\"0px\"\n y=\"0px\"\n width=\"80px\"\n height=\"80px\"\n viewBox=\"0 0 40 40\"\n enableBackground=\"new 0 0 40 40\"\n >\n <path\n opacity=\"0.2\"\n fill=\"#333\"\n d=\"M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946,14.946,14.946\n s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634\n c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z\"\n />\n <path\n fill=\"#333\"\n d=\"M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0\n C22.32,8.481,24.301,9.057,26.013,10.047z\"\n >\n <animateTransform\n attributeType=\"xml\"\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 20 20\"\n to=\"360 20 20\"\n dur=\"0.9s\"\n repeatCount=\"indefinite\"\n />\n </path>\n </svg>\n </div>\n );\n};\n\nexport { Loader };\nexport default Loader;\n","import { Link } from \"react-router-dom\";\nimport CardMedia from \"@mui/material/CardMedia\";\nimport Box from \"@mui/material/Box\";\nimport Typography from \"../typography/typography\";\nimport \"./module-button.scss\"; // Import the external CSS file\n\nexport interface IModuleTile {\n module: {\n bg: string;\n icon: string;\n label: string;\n link: string;\n };\n}\n\nexport const ModuleTile = (props: IModuleTile) => {\n const bgClass = props.module.bg === \"transparent\" ? \"transparent\" : \"\";\n\n return (\n <Link to={props.module.link}>\n <Box className=\"module-tile-container\">\n <Box\n className={`module-box ${bgClass}`}\n style={{ background: props.module.bg }}\n >\n <CardMedia\n component=\"img\"\n image={props.module.icon}\n alt={`${props.module.label} logo`}\n />\n </Box>\n <Typography type=\"s3\" className=\"module-label\">\n {props.module.label}\n </Typography>\n </Box>\n </Link>\n );\n}\n\nexport default ModuleTile;","import { Switch, styled } from \"@mui/material\";\r\n\r\nconst Android12Switch = styled(Switch)(({ theme }) => ({\r\n padding: 8,\r\n '& .MuiSwitch-track': {\r\n borderRadius: 22 / 2,\r\n '&::before, &::after': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n width: 16,\r\n height: 16,\r\n },\r\n '&::before': {\r\n backgroundImage: `url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"16\" width=\"16\" viewBox=\"0 0 24 24\"><path fill=\"${encodeURIComponent(\r\n theme.palette.getContrastText(theme.palette.primary.main),\r\n )}\" d=\"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\"/></svg>')`,\r\n left: 12,\r\n },\r\n '&::after': {\r\n backgroundImage: `url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"16\" width=\"16\" viewBox=\"0 0 24 24\"><path fill=\"${encodeURIComponent(\r\n theme.palette.getContrastText(theme.palette.primary.main),\r\n )}\" d=\"M19,13H5V11H19V13Z\" /></svg>')`,\r\n right: 12,\r\n },\r\n },\r\n '& .MuiSwitch-thumb': {\r\n boxShadow: 'none',\r\n width: 16,\r\n height: 16,\r\n margin: 2,\r\n // color: theme.palette.theme.primary[800]\r\n },\r\n '& .Mui-checked': {\r\n color: `${theme.palette.theme.primary[800]} !important`,\r\n },\r\n '& .Mui-checked+.MuiSwitch-track': {\r\n backgroundColor: `${theme.palette.theme.primary[800]} !important`,\r\n },\r\n}));\r\n\r\nexport { Android12Switch };\r\nexport default Android12Switch;"],"names":["title","MUIAccordion","_","logo","data","CloseIcon","styled","o","value","StyledAddButton","StyledDatePicker","Date","MUICheckbox","MUIRadio","addressPayload","contactPayload","yupResolver","generateMenuItems","SelectedItems","React","_a","filteredOptions","fetchOptions","updateOptions","Close","getFileName","validationSchema","col","row","yup","_b","valueKey","_c","validationReducer","validations","validation","columns","table","Tooltip","Add","rows","Loader","type","t","Select","Menu","Time","Stack","Tab","TabPanel","MUIAlert","Chip","index","Radio","images","defaultValues","keys","schema","fieldArrayName","label","error","name","location","selectedFilter","Alert","MenuItem","Box","Grow","savedFilters","selectedIds","FilterIcon","TextField","ChevronRightICon","page","Accordion","MUITab","deletePage","pages","KeyboardArrowDown","Save","Switch"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,MAAM,YAAY,KAAK,CAAC,UAA0B;AAChD,QAAM,EAAE,OAAAA,QAAO,UAAU,gBAAgB,mBAAmB;AAE5D,SACE,qBAAC,iBAAA,EAAiB,GAAG,gBACnB,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,gCAAa,gBAAA,EAAe;AAAA,QAC5B,iBAAc;AAAA,QACd,IAAG;AAAA,QAEF,UAAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAEH,oBAAC,oBAAkB,SAAA,CAAS;AAAA,EAAA,GAC9B;AAEJ,CAAC;AAGD,MAAM,kBAAkB,OAAOC,WAAY,EAAE,CAAC,EAAE,OAAO,EAAE,QAAA,QAAU;;AAAO;AAAA,IACxE,QAAO,aAAQ,UAAR,mBAAe,UAAU;AAAA,IAChC,UAAU;AAAA,IACV,WAAW;AAAA,IACX,6BAA6B;AAAA,MAC3B,SAAS;AAAA,MACT,WAAW;AAAA,MACX,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,oBAAmB,aAAQ,UAAR,mBAAe,UAAU;AAAA,IAAG;AAAA,IAEjD,gCAAgC;AAAA,MAC9B,QAAQ;AAAA,MACR,kBAAkB;AAAA,QAChB,QAAQ;AAAA,MAAA;AAAA,MAEV,wBAAwB;AAAA,QACtB,QAAQ;AAAA,QACR,8CAA8C;AAAA,UAC5C,QAAQ;AAAA,QAAA;AAAA,MACV;AAAA,IACF;AAAA,IAEF,6BAA6B;AAAA,MAC3B,SAAS;AAAA,IAAA;AAAA,EAEb;AAAA,CAAE;AC3BF,MAAM,YAAY,CAAC,UAA0B;AAC3C,QAAM,EAAE,MAAM,SAAS,WAAW,gBAAgB,CAAA,MAAO;AACzD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,OAAO;AAC1C,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,QAAM,QAAQ,SAAA;AACd,QAAM,SAAS,cAAc,MAAM,YAAY,GAAG,IAAI,CAAC;AACvD,QAAM,kBAAkB,CAACC,IAAyB,aAAqB;AACrE,aAAS,QAAQ;AACjB;AAAA,MACE;AAAA,QACE,KAAK;AAAA,UACH,CAAC,SAAc,KAAK,MAAM,YAAA,MAAkB,SAAS,YAAA;AAAA,QAAY;AAAA,MACnE;AAAA,IACF;AAAA,EAEJ;AAEA,QAAM,UAAU;AAAA,IACd;AAAA,MACE,OAAO;AAAA,MACP,MAAM,oBAACC,OAAK,WAAL,CAAA,CAAe;AAAA,MACtB,MAAM;AAAA,MACN,OAAO,oBAAC,OAAA,EAAI,KAAKA,OAAK,MAAA,CAAO;AAAA,IAAA;AAAA,IAE/B;AAAA,MACE,OAAO;AAAA,MACP,MAAM,oBAACA,OAAK,UAAL,CAAA,CAAc;AAAA,MACrB,MAAM;AAAA,MACN,OAAO,oBAAC,OAAA,EAAI,KAAKA,OAAK,KAAA,CAAM;AAAA,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAC9B;AAqBF,QAAM,eAAe,MAAM;AACzB,UAAM,kBAAkB,QAAQ;AAAA,MAC9B,CAACC,UAASA,MAAK,MAAM,YAAA,MAAkB,MAAM,YAAA;AAAA,IAAY;AAE3D,QAAI,mDAAiB,OAAO;AAC1B,UACE,CAAC,KAAK;AAAA,QACJ,CAAC,SAAc,KAAK,MAAM,YAAA,MAAkB,MAAM,YAAA;AAAA,MAAY,GAEhE;AACA,gBAAQ;AAAA,UACN,GAAI;AAAA,UACJ,EAAE,OAAO,gBAAgB,OAAO,UAAU,KAAK,OAAA;AAAA,QAAO,CACvD;AAED,kBAAU,mDAAiB,KAAK;AAChC,qBAAa,KAAK;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AAEA,SACE,qBAAC,OAAA,EAAI,WAAU,cACb,UAAA;AAAA,IAAA,qBAAC,OAAA,EAAI,WAAU,sBAAqB,UAAA;AAAA,MAAA;AAAA,MAElC;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,+BAAY,SAAA,EAAQ;AAAA,UACpB,IAAI,SAAS,CAAA,IAAK,EAAE,IAAG,EAAA;AAAA,UACvB,SAAS,MAAM;AACb,yBAAa,IAAI;AACjB;AAAA,cACE;AAAA,gBACE,KAAK;AAAA,kBACH,CAAC,SACC,KAAK,MAAM,YAAA,MAAkB,MAAM,YAAA;AAAA,gBAAY;AAAA,cACnD;AAAA,YACF;AAAA,UAEJ;AAAA,UAEC,mBAAS,SAAS;AAAA,QAAA;AAAA,MAAA;AAAA,IACrB,GACF;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,SAAS,MAAM,aAAa,KAAK;AAAA,QACjC,WAAU;AAAA,QAEV,UAAA;AAAA,UAAA,qBAAC,aAAA,EAAY,WAAU,oBACrB,UAAA;AAAA,YAAA,oBAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,QAAO,UAAA,WAAA,CAEnD;AAAA,YACA,oBAAC,YAAA,EAAW,SAAS,MAAM,aAAa,KAAK,GAC3C,UAAA,oBAACC,OAAA,EAAU,UAAS,QAAA,CAAO,EAAA,CAC7B;AAAA,UAAA,GACF;AAAA,UAEA,qBAAC,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,aAAY;AAAA,gBACZ;AAAA,gBACA,UAAU;AAAA,gBACV,WAAU;AAAA,gBAET,UAAA,YACC,mCAAS,IAAI,CAACD,UACZ;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBAEC,OAAO,GAAGA,+BAAM,KAAK;AAAA,oBACrB,cAAa;AAAA,oBACb,MAAMA,+BAAM;AAAA,oBACZ,OAAOA,MAAK;AAAA,oBACZ,WAAU;AAAA,oBACV,UAAU,QAAQ,+CAAe,SAASA,MAAK,MAAM;AAAA,kBAAA;AAAA,kBANhDA,MAAK;AAAA,gBAAA;AAAA,cAQb;AAAA,YAAA;AAAA,YAEJ,QAAQ,IAAI,CAACA,UACZ;AAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,QAAQ,UAAUA,MAAK;AAAA,gBACvB,WAAU;AAAA,gBAET,UAAA;AAAA,kBAAAA,MAAK;AAAA,kBACN,qBAAC,OAAA,EAAI,WAAU,oBACb,UAAA;AAAA,oBAAA,qBAAC,YAAA,EAAW,MAAK,MAAK,OAAO,wBAC1B,UAAA;AAAA,sBAAAA,+BAAM;AAAA,sBAAM;AAAA,oBAAA,GACf;AAAA,oBACA,oBAAC,cAAW,MAAK,MAAK,OAAO,uBAC1B,UAAAA,MAAK,MACR;AAAA,sBACEA,+BAAM,WAAU,UAAU,WAC1BA,+BAAM,WAAU,UAAU,aAC1B,qBAAC,OAAA,EAAI,WAAU,8BACb,UAAA;AAAA,sBAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,uBAAsB,UAAA,kBAElD;AAAA,sBACA;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACC,aAAY;AAAA,0BACZ,MAAM;AAAA,0BACN,cAAc;AAAA,0BACd,WAAU;AAAA,0BACV,SAAQ;AAAA,0BAER,UAAA;AAAA,4BAAA,oBAAC,UAAA,EAAS,OAAO,GAAG,UAAA,YAAQ;AAAA,4BAC5B,oBAAC,UAAA,EAAS,OAAO,GAAG,UAAA,WAAA,CAAQ;AAAA,0BAAA;AAAA,wBAAA;AAAA,sBAAA;AAAA,oBAC9B,EAAA,CACF;AAAA,kBAAA,EAAA,CAEJ;AAAA,gBAAA;AAAA,cAAA;AAAA,cA9BKA,MAAK;AAAA,YAAA,CAgCb;AAAA,UAAA,GACH;AAAA,UACA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,IAAI,EAAE,iBAAiB,sBAAA;AAAA,cAEvB,UAAA;AAAA,gBAAA,oBAAC,QAAA,EAAO,SAAQ,QAAO,SAAS,MAAM,aAAa,KAAK,GAAG,UAAA,SAAA,CAE3D;AAAA,qCACC,QAAA,EAAO,SAAQ,aAAY,SAAS,cAAc,UAAU,SAAS,UAAA;AAAA,kBAAA;AAAA,kBAC/D;AAAA,kBAAM;AAAA,gBAAA,EAAA,CACb;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;ACtMA,MAAM,aAAa,CAAC,UAAsB;AACxC,QAAM,EAAE,OAAAJ,QAAO,QAAQ,SAAS,KAAK,GAAG,SAAS;AACjD,QAAM,QAAQ,SAAA;AACd,QAAM,SAAS,cAAc,MAAM,YAAY,GAAG,IAAI,CAAC;AAEvD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MAEC,WACE,UAAUA,OAAM,SAAS,MAAM,IAC3B,oCACA;AAAA,MAEN;AAAA,MACC,GAAG;AAAA,MAEH,UAAA;AAAA,QAAAA,UAASA,WAAU,UAAU,QAC5B,oBAACG,OAAK,WAAL,CAAA,CAAe,IACdH,WAAU,UAAU,OACtB,oBAACG,OAAK,UAAL,CAAA,CAAc,IACbH,WAAU,UAAU,QACtB,oBAACG,OAAK,WAAL,CAAA,CAAe,IACdH,WAAU,UAAU,WACtB,oBAACG,OAAK,cAAL,CAAA,CAAkB,IACjBH,WAAU,UAAU,SACtB,oBAACG,OAAK,YAAL,CAAA,CAAgB,IACfH,WAAU,UAAU,QACtB,oBAACG,OAAK,WAAL,CAAA,CAAe,IAEhB;AAAA,QAED,UACC,qBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,WACzB,UAAA;AAAA,UAAAH;AAAA,UAAM;AAAA,QAAA,EAAA,CACT;AAAA,MAAA;AAAA,IAAA;AAAA,IA3BG;AAAA,EAAA;AA+BX;AC/CA,MAAM,gBAAgBM,SAAO,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,QAAA,SAAiB;AAAA,EAC7D,6BAA6B;AAAA,IAC3B,iBAAiB,QAAQ,MAAM,QAAQ,GAAG;AAAA,EAAA;AAAA,EAE5C,aAAa;AAAA,IACX,iBAAiB,QAAQ,MAAM,UAAU,GAAG;AAAA,IAC5C,UAAU;AAAA,MACR,iBAAiB,QAAQ,MAAM,UAAU,GAAG;AAAA,IAAA;AAAA,EAC9C;AAAA,EAEF,WAAW;AAAA,IACT,SAAS;AAAA,EAAA;AAEb,EAAE;AAOF,MAAM,SAAS,CAAC,UAAmB;AACjC,SACE,oBAAC,eAAA,EACC,UAAA,qBAAC,SAAA,EAAM,WAAU,UACf,UAAA;AAAA,IAAA,oBAAC,SAAA,EAAM,MAAK,YAAY,GAAG,MAAA,CAAO;AAAA,IAClC,oBAAC,QAAA,EAAK,WAAU,eAAA,CAAe;AAAA,EAAA,EAAA,CACjC,EAAA,CACF;AAEJ;AC7BA,MAAM,mBAAmB,CAAC,UAAe;;AACvC,QAAM,EAAE,gBAAgB,OAAO,SAAS,GAAG,SAAS;AAEpD,QAAM,iBAAe,WAAM,SAAN,mBAAa,QAAO,OAAK,WAAM,SAAN,mBAAa,QAAO;AAElE,SACE,oBAAA,UAAA,EACG,WAAC,eACA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,OAAM;AAAA,MACN,WAAU;AAAA,MAET,UAAA;AAAA,IAAA;AAAA,EAAA,IAGH;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,UAAU,CAAC,MAAW,eAAe,EAAE,OAAO,KAAK;AAAA,MAClD,GAAG;AAAA,MACJ,WAAU;AAAA,MAET,UAAA,mCAAS,IAAI,CAAC,EAAE,MAAM,MAAA,0BACpB,UAAA,EAAoB,OAAO,MAC1B,UAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,wBACzB,UAAA,OACH,EAAA,GAHa,IAIf;AAAA,IACD;AAAA,EAAA,GAGP;AAEJ;AChCA,MAAM,eAAe,CAAC,UAAuB;AAC3C,QAAM,EAAE,MAAA,IAAU,YAAA;AAClB,QAAM,YAAY;AAAA,IAChB,GAAI,QAAQ,EAAE,aAAY,SAAS,CAAA;AAAA,EAAC;AAEtC,QAAM,aAAa;AAAA,IACjB,OAAO;AAAA,IACP,WAAW;AAAA,MACT,OAAO;AAAA,IAAA;AAAA,EACT;AAEF,SACE,oBAAC,OACC,UAAA,oBAAC,YAAA,EAAW,IAAI,WAAW,MAAM,SAAS,SAAS,MAAM,eAAe,eAAa,MACnF,UAAA,oBAAC,OAAA,EAAM,IAAI,EAAE,UAAU,WAAW,GAAG,WAAA,EAAW,CAAG,EAAA,CACrD,EAAA,CACF;AAEJ;ACbA,MAAM,cAAc,CAAC,UAA8B;AAEjD,QAAM,EAAE,EAAA,IAAM,eAAA;AAEd,QAAM,EAAE,gBAAgB,OAAO,SAAS,GAAG,SAAS;AAEpD,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAA;AAE9C,QAAM,oBAAoB,CAAC,eAAuB;AAChD,UAAM,OAAM,mCAAS,OAAO,CAAAC,OAAA;;AAAK,sBAAQ,KAAAA,GAAE,UAAF,mBAAS,MAAM;AAAA,WAAM,CAAA;AAC9D,UAAM,eAAe,IAAI;AAAA,MAAO,CAAC,WAC/B,OAAO,KAAK,cAAc,SAAS,WAAW,YAAA,CAAa;AAAA,IAAA;AAE7D,uBAAmB,YAAY;AAAA,EACjC;AAEA,YAAU,MAAM;AACd,wBAAmB,mCAAS,OAAO,CAAAA,OAAA;;AAAK,sBAAQ,KAAAA,GAAE,UAAF,mBAAS,MAAM;AAAA,WAAM,CAAA,CAAE;AAAA,EAEzE,GAAE,CAAC,mCAAS,MAAM,CAAC;AAGnB,SACE,oBAAC,KAAA,EAAI,OAAM,QACT,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAS;AAAA,MACT;AAAA,MACA,UAAU,CAAC,MAAW,eAAe,EAAE,OAAO,KAAK;AAAA,MAClD,GAAG;AAAA,MACJ,WAAU;AAAA,MACV,SAAQ;AAAA,MACR,aAAa,CAACC,WAAAA;;AAAe,4BAAW,cAAE,wDAAiB,KAAK,CAAC,YAAe,QAAQ,SAASA,YAAvD,mBAA+D,KAAK,MAAtE,mBAAyE,QAAQ,OAAO,QAAxF,mBAA6F,WAAW,KAAK,SAAQ,gBAAgB;AAAA;AAAA,MAC7K,SAAS,MAAM,oBAAmB,mCAAS,OAAO,CAAAD,OAAA;;AAAK,wBAAQ,KAAAA,GAAE,UAAF,mBAAS,MAAM;AAAA,aAAM,CAAA,CAAE;AAAA,MAEtF,UAAA;AAAA,QAAA,oBAAC,OAAA,EAAI,WAAU,oCACb,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,aAAa;AAAA,YACb,cAAc,CAAC,MAAM,kBAAkB,CAAC;AAAA,UAAA;AAAA,QAAA,GAE5C;AAAA,QACC,mDAAiB,IAAI,CAAC,OAAA;;qCACpB,UAAA,EAAuB,OAAO,GAAG,MAChC,UAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,wBACzB,UAAA,YAAW,aAAE,GAAG,KAAK,MAAV,mBAAa,QAAQ,OAAO,QAA5B,mBAAiC,WAAW,KAAK,IAAI,EAAA,CACnE,EAAA,GAHa,GAAG,IAIlB;AAAA;AAAA,MACD;AAAA,IAAA;AAAA,EAAA,GAEL;AAEJ;ACvDA,MAAME,oBAAkBH,SAAO,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,QAAA,QAAU;;AAAO;AAAA,IAClE,UAAU;AAAA,MACR,kBAAiB,aAAQ,UAAR,mBAAe,UAAU;AAAA,IAAG;AAAA,IAE/C,oBAAoB;AAAA,MAClB,UAAU;AAAA,QACR,QAAO,aAAQ,UAAR,mBAAe,UAAU;AAAA,MAAI;AAAA,IACtC;AAAA,EAEJ;AAAA,CAAE;AAEF,MAAM,kBAAkB,CAAC,UAAuB;AAC9C,QAAM,EAAE,eAAe,GAAG,KAAA,IAAS;AACnC,SACE;AAAA,IAACG;AAAAA,IAAA;AAAA,MACC,SAAS;AAAA,MACR,GAAG;AAAA,MACJ,WAAU;AAAA,MACV,SAAQ;AAAA,MACR,+BAAY,KAAA,EAAG;AAAA,MAChB,UAAA;AAAA,IAAA;AAAA,EAAA;AAIL;ACxBA,MAAM,kBAAkBH,SAAO,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,QAAA,QAAU;;AAAO;AAAA,IAClE,UAAU;AAAA,MACR,kBAAiB,aAAQ,UAAR,mBAAe,UAAU;AAAA,IAAG;AAAA,IAE/C,oBAAoB;AAAA,MAClB,UAAU;AAAA,QACR,QAAO,aAAQ,UAAR,mBAAe,UAAU;AAAA,MAAI;AAAA,IACtC;AAAA,EAEJ;AAAA,CAAE;AAEF,MAAM,iBAAiB,CAAC,UAAuB;AAC7C,QAAM,EAAE,eAAe,GAAG,KAAA,IAAS;AACnC,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS;AAAA,MACR,GAAG;AAAA,MACJ,WAAU;AAAA,MACV,SAAQ;AAAA,MACR,+BAAY,KAAA,EAAG;AAAA,MAChB,UAAA;AAAA,IAAA;AAAA,EAAA;AAIL;ACAA,MAAMI,qBAAmBJ,SAAOK,YAAI,EAAE,CAAC,EAAE,OAAO,EAAE,QAAA,QAAU;;AAAO;AAAA,IAClE,4BAA4B;AAAA,MAC3B,SAAS;AAAA,MACT,QAAO,aAAQ,UAAR,mBAAe,UAAU;AAAA,MAChC,cAAc;AAAA,QACb,cAAa,aAAQ,UAAR,mBAAe,UAAU;AAAA,MAAG;AAAA,MAE1C,oBAAoB;AAAA,QACnB,cAAa,aAAQ,UAAR,mBAAe,UAAU;AAAA,MAAG;AAAA,MAE1C,0BAA0B;AAAA,QACzB,aAAa;AAAA,QACb,aAAa;AAAA,QACb,cAAa,aAAQ,UAAR,mBAAe,QAAQ;AAAA,MAAG;AAAA,MAExC,wBAAwB;AAAA,QACvB,cAAa,aAAQ,UAAR,mBAAe,MAAM;AAAA,MAAG;AAAA,MAEtC,kBAAkB;AAAA,QACjB,aAAY,aAAQ,UAAR,mBAAe,UAAU;AAAA,QACrC,QAAO,aAAQ,UAAR,mBAAe,UAAU;AAAA,MAAG;AAAA,MAEpC,sCAAsC;AAAA,QACrC,QAAO,aAAQ,UAAR,mBAAe,UAAU;AAAA,QAChC,SAAS;AAAA,MAAA;AAAA,IACV;AAAA,IAED,6BAA6B;AAAA,MAC5B,YAAY;AAAA,MACZ,QAAO,aAAQ,UAAR,mBAAe,UAAU;AAAA,MAChC,eAAe;AAAA,QACd,QAAO,aAAQ,UAAR,mBAAe,MAAM;AAAA,MAAG;AAAA,IAChC;AAAA,IAED,yBAAyB;AAAA,MACxB,aAAa;AAAA,IAAA;AAAA,IAEd,8CAA8C;AAAA,MAC7C,YAAY;AAAA,IAAA;AAAA,EAEd;AAAA,CAAE;AAEF,MAAM,aAAa,KAAK,CAAC,UAA2B;AACnD,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,qBAAqB;AAAA,IACrB;AAAA,IACA,WAAW;AAAA,IACX,mBAAmB;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,IACA;AAEJ,SACC,qBAAC,sBAAA,EAAqB,aAAa,cACjC,UAAA;AAAA,IAAA,SACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,MAAK;AAAA,QACL,QAAO;AAAA,QACP,IAAI;AAAA,QACJ,OAAO,QAAQ,oBAAoB;AAAA,QACnC,iBAAe;AAAA,QACf,aAAW;AAAA,QACV,UAAA;AAAA,UAAA;AAAA,UAAM;AAAA,UAAE,YAAY,oBAAC,QAAA,EAAK,WAAU,gBAAe,UAAA,IAAA,CAAC;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGvD;AAAA,MAACD;AAAAA,MAAA;AAAA,QACA;AAAA,QACA,eAAe;AAAA,QACf,aAAa;AAAA,QACb,WAAW;AAAA,UACV,WAAW;AAAA,YACV;AAAA,YACA;AAAA,YACA,aAAa,eAAe;AAAA,YAC5B,GAAG;AAAA;AAAA,UAAA;AAAA,UAGJ,cAAc;AAAA,YACb,IAAI;AAAA,cACH,sCAAsC;AAAA,gBACrC,OAAO;AAAA,gBACP,SAAS;AAAA,cAAA;AAAA,cAEV,+BAA+B;AAAA,gBAC9B,OAAO;AAAA,gBACP,SAAS;AAAA,cAAA;AAAA,YACV;AAAA,UACD;AAAA,QACD;AAAA,QAED,QAAQ,UAAU;AAAA,QAClB,OAAO,EAAE,gBAAgBP,OAAK,aAAA;AAAA,QAC7B,GAAG;AAAA,QAEJ,cAAc,eAAe,MAAM,YAAY,IAAI;AAAA,QACnD,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACX,GACD;AAEF,CAAC;ACpID,MAAM,iBAAiB,OAAOS,UAAW,EAAE,CAAC,EAAE,OAAO,EAAE,QAAA,QAAU;;AAAO;AAAA,IACvE,SAAS;AAAA,IACT,QAAO,aAAQ,UAAR,mBAAe,UAAU;AAAA,IAChC,cAAc;AAAA,IACd,iBAAiB;AAAA,MAChB,QAAO,aAAQ,UAAR,mBAAe,QAAQ;AAAA,MAC9B,WAAW;AAAA,QACV,QAAO,aAAQ,UAAR,mBAAe,QAAQ;AAAA,MAAG;AAAA,IAClC;AAAA,IAED,kBAAkB;AAAA,MACjB,QAAO,aAAQ,UAAR,mBAAe,UAAU;AAAA,IAAG;AAAA,EAErC;AAAA,CAAE;AAEF,MAAM,WAAW,KAAK,CAAC,UAAyB;AAC/C,SACC;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,MAAM,oBAAC,gBAAA,EAAe,WAAU,+BAAO,SAAQ,SAAS;AAAA,MACxD,aAAa,oBAAC,cAAA,EAAa,WAAU,+BAAO,SAAQ,SAAS;AAAA,MAC7D,eAAa;AAAA,MACZ,GAAG;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;ACbD,MAAM,oBAAsD,CAAC;AAAA,EAC5D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB;AACjB,MACC,oBAAA,UAAA,EACE,eAAK,SACL;AAAA,EAAC;AAAA,EAAA;AAAA,IAEA,MAAK;AAAA,IACL,OACC,qBAAC,YAAA,EAAW,OAAM,wBAAuB,MAAK,MAC5C,UAAA;AAAA,MAAA,KAAK;AAAA,MAAO;AAAA,MAAE;AAAA,MAAc;AAAA,IAAA,GAC9B;AAAA,IAGD;AAAA,IACA,aAAa,CAAC,UAAU,MAAM,gBAAA;AAAA,IAC9B,UAAU,QAAQ,QAAQ;AAAA,IACzB,GAAG;AAAA,IACJ,IAAI;AAAA,MACH,GAAG,uCAAW;AAAA,MACd,yBAAyB;AAAA,QACxB,OAAO;AAAA,QACP,UAAU;AAAA,QACV,WAAW;AAAA,UACV,OAAO;AAAA,QAAA;AAAA,MACR;AAAA,IACD;AAAA,EACD;AACD,wBAEC,YAAA,EAAW,OAAM,WAAU,MAAK,MAC/B,uBACF,EAAA,CAEF;AClDD,MAAM,QAAQ,KAAK,CAAC,UAAsB;AACzC,QAAM,EAAE,OAAO,GAAG,KAAA,IAAS;AAE3B,SACC,oBAAA,UAAA,EACC,UAAA;AAAA,IAACC;AAAAA,IAAA;AAAA,MACA,eAAa;AAAA,MACb,IAAI;AAAA,QACH,oBAAoB;AAAA,UACnB,OAAO,SAAS;AAAA,QAAA;AAAA,MACjB;AAAA,MAED,MAAM,oBAAC,aAAA,EAAY,OAAM,uBAAsB,UAAS,SAAO;AAAA,MAC/D,aAAa,oBAAC,cAAA,EAAa,UAAS,QAAA,CAAO;AAAA,MAC1C,GAAG;AAAA,IAAA;AAAA,EAAA,GAEN;AAEF,CAAC;ACID,MAAM,iBAAiBP,SAAO,KAAK;AAAA,EAClC,mBAAmB,CAAC,SAAS,SAAS,cAAc,SAAS;AAC9D,CAAC,EAA+C,CAAC,EAAE,OAAO,gBAAgB;AAAA,EACzE,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,GAAI,YAAY;AAAA,IACf,QAAQ,aAAa,MAAM,QAAQ,OAAO;AAAA,IAC1C,cAAc,MAAM,MAAM;AAAA,IAC1B,QAAQ,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC;AAAA,IAChC,SAAS,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC;AAAA,IACjC,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,WAAW;AAAA,MACV,iBAAiB,MAAM,QAAQ,OAAO;AAAA,IAAA;AAAA,EACvC;AAEF,EAAE;AAEK,MAAM,qBAAoD;AAAA,EAChE,CAAC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAAN;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,eAAe;AAAA,EAAA,MACV;AACL,WACC,qBAAA,UAAA,EACC,UAAA;AAAA,MAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,MAAK;AAAA,UACL,QAAO;AAAA,UACP,OAAM;AAAA,UACN,iBAAe;AAAA,UACf,IAAI,EAAE,IAAI,IAAA;AAAA,UACT,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAEF;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,SAAS;AAAA,UACT,MAAM,GAAG,cAAc,IAAI,IAAI;AAAA,UAE/B;AAAA,UACA,QAAQ,CAAC,EAAE,OAAO,YAAY,EAAE,MAAA,EAAM,MACrC,qBAAA,UAAA,EACC,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACA,OAAO,MAAM,SAAS;AAAA,gBACtB,UAAU,CAAC,MAAM,MAAM,SAAS,EAAE,OAAO,KAAK;AAAA,gBAC9C,KAAK,YAAY;AAAA,gBACjB,IAAI,EAAE,YAAY,UAAU,KAAK,EAAA;AAAA,gBAChC,UAAA;AAAA,kBAAAA,UAAS,kBAAkB,WAC3B;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACA,MAAK;AAAA,sBACL,OAAM;AAAA,sBACN,QAAO;AAAA,sBACN,UAAAA;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAGF,QAAQ,IAAI,CAAC,WACb;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBAEA;AAAA,sBACA,YAAY,MAAM,SAAS,OAAO;AAAA,sBAClC,UAAA;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACA,IAAI,EAAE,QAAQ,GAAG,SAAS,WAAW,MAAM,EAAA;AAAA,0BAC3C,OAAO,OAAO;AAAA,0BACd,SAAS,oBAAC,OAAA,EAAM,SAAS,MAAM,SAAS,OAAO,OAAO;AAAA,0BACtD,OACC;AAAA,4BAAC;AAAA,4BAAA;AAAA,8BACA,MAAK;AAAA,8BACL,QAAO;AAAA,8BACP,OAAM;AAAA,8BACL,UAAA,OAAO;AAAA,4BAAA;AAAA,0BAAA;AAAA,0BAGV;AAAA,wBAAA;AAAA,sBAAA;AAAA,oBACD;AAAA,oBAhBK,OAAO;AAAA,kBAAA,CAkBb;AAAA,kBACAA,UAAS,kBAAkB,SAC3B;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACA,MAAK;AAAA,sBACL,OAAM;AAAA,sBACN,QAAO;AAAA,sBACN,UAAAA;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBACF;AAAA,cAAA;AAAA,YAAA;AAAA,YAGD,6BACC,YAAA,EAAW,MAAK,MAAK,OAAM,mBAC1B,gBAAM,QAAA,CACR;AAAA,UAAA,EAAA,CAEF;AAAA,QAAA;AAAA,MAAA;AAAA,IAEF,GACD;AAAA,EAEF;AACD;ACjIO,MAAM,0BAA0B;AAEhC,MAAM,iBAAiB;AAAA,EAC1B,MAAM;AAAA,EAEN,YAAY;AAAA,EACZ,WAAW;AAAA,EAEX,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,KAAK;AAAA;AAAA,EAGL,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,oBAAqB;AAAA,EAErB,SAAS;AAAA,EACT,UAAU;AAAA,EAEV,oBAAoB;AAAA,EACpB,cAAc;AAClB;AAEO,MAAM,YAAY;AAAA,EACrB,EAAE,OAAO,cAAc,OAAO,aAAA;AAAA,EAC9B,EAAE,OAAO,WAAW,OAAO,UAAA;AAC/B;AAEO,MAAM,iBAAiB;AAAA,EAC1B,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,cAAc;AAAA,EACd,UAAU;AAAA,EACV,UAAU;AAAA,EACV,MAAM;AAAA,EACN,UAAU;AAAA,EACV,OAAO;AAAA,EACP,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,UAAU;AAAA,EACV,SAAS;AAAA,EACT,0BAA0B;AAAA,EAC1B,yBAAyB;AAAA,EACzB,cAAc;AAClB;AACO,MAAM,iBAAiB;AAAA,EAC1B,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,OAAO;AACX;AAGO,MAAM,iBAA6C;AAAA,EACtD;AAAA,IACI,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,IACN,aAAa;AAAA,IACb,gBAAgB;AAAA,MACZ,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,aAAa;AAAA,QACT;AAAA,UACI,MAAM;AAAA,UACN,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,QAAQ;AAAA,QAAA;AAAA,MACZ;AAAA,IACJ;AAAA,IAEJ,mBAAmB;AAAA,MACf,EAAE,OAAO,YAAY,OAAO,WAAA;AAAA,MAC5B,EAAE,OAAO,YAAY,OAAO,WAAA;AAAA,MAC5B,EAAE,OAAO,UAAU,OAAO,SAAA;AAAA,IAAS;AAAA,EACvC;AAAA,EAEJ;AAAA,IACI,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,IACN,gBAAgB;AAAA,MACZ,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,aAAa;AAAA,QACT;AAAA,UACI,MAAM;AAAA,UACN,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,QAAQ;AAAA,QAAA;AAAA,MACZ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEJ;AAAA,IACI,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,IACN,aAAa;AAAA,IACb,gBAAgB;AAAA,MACZ,YAAY;AAAA,IAAA;AAAA,EAChB;AAAA,EAEJ;AAAA,IACI,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,IACN,aAAa;AAAA,IACb,gBAAgB;AAAA,MACZ,YAAY;AAAA,IAAA;AAAA,EAChB;AAAA,EAEJ;AAAA,IACI,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,EAAA;AAAA,EAEnB;AAAA,IACI,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,IACN,aAAa;AAAA,IACb,gBAAgB;AAAA,MACZ,YAAY;AAAA,IAAA;AAAA,EAChB;AAAA,EAEJ;AAAA,IACI,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,IACN,gBAAgB;AAAA,MACZ,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,aAAa;AAAA,QACT;AAAA,UACI,MAAM;AAAA,UACN,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,QAAQ;AAAA,QAAA;AAAA,MACZ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEJ;AAAA,IACI,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,IACN,gBAAgB;AAAA,MACZ,aAAa;AAAA,MACb,YAAY;AAAA,IAAA;AAAA,EAChB;AAAA,EAEJ;AAAA,IACI,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,IACN,gBAAgB;AAAA,MACZ,aAAa;AAAA,MACb,YAAY;AAAA,IAAA;AAAA,EAChB;AAAA,EAEJ;AAAA,IACI,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,IACN,gBAAgB;AAAA,MACZ,YAAY;AAAA,MACZ,aAAa;AAAA,IAAA;AAAA,EACjB;AAAA,EAEJ;AAAA,IACI,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,IACN,aAAa;AAAA,IACb,gBAAgB;AAAA,MACZ,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA,QACT;AAAA,UACI,MAAM;AAAA,UACN,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,QAAQ;AAAA,QAAA;AAAA,MACZ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEJ;AAAA,IACI,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,IACN,aAAa;AAAA,IACb,gBAAgB;AAAA,MACZ,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA,QACT;AAAA,UACI,MAAM;AAAA,UACN,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,QAAQ;AAAA,QAAA;AAAA,MACZ;AAAA,MAEJ,eAAe,CAAC,KAAU,WAAW;AACjC,cAAM,UAAS,iCAAQ,gBAAe,EAAE,kBAAkB,iCAAQ,iBAAiB;AACnF,eAAO;AAAA,MACX;AAAA,IAAA;AAAA,EACJ;AAAA,EAEJ;AAAA,IACI,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,IACN,gBAAgB;AAAA,MACZ,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,aAAa;AAAA,QACT;AAAA,UACI,MAAM;AAAA,UACN,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,QAAQ;AAAA,QAAA;AAAA,MACZ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEJ;AAAA,IACI,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAOvB;AAGO,MAAM,iBAA6C;AAAA,EACtD;AAAA,IACI,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,IACN,gBAAgB;AAAA,MACZ,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,aAAa;AAAA,QACT;AAAA,UACI,MAAM;AAAA,UACN,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,QAAQ;AAAA,QAAA;AAAA,MACZ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEJ;AAAA,IACI,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,IACN,gBAAgB;AAAA,MACZ,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,aAAa;AAAA,QACT;AAAA,UACI,MAAM;AAAA,UACN,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,QAAQ;AAAA,QAAA;AAAA,QAEZ;AAAA,UACI,MAAM;AAAA,UACN,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,QAAQ;AAAA,QAAA;AAAA,MACZ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEJ;AAAA,IACI,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,EAAA;AAAA,EAEnB;AAAA,IACI,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,IACN,aAAa;AAAA,IACb,gBAAgB;AAAA,MACZ,YAAY;AAAA,IAAA;AAAA,EAChB;AAER;AAEO,MAAM,kBAAkB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AACO,MAAM,kBAAkB,CAAC,MAAM,SAAS;AAGxC,MAAM,wBAAwB,CAAC,YAAiB;AACnD,QAAM,EAAE,YAAY,CAAA,GAAI,WAAW,CAAA,GAAI,GAAG,KAAA,IAAS,WAAW,CAAA;AAC9D,QAAMc,kBAAiB,UAAU,IAAI,CAAA,YAAY,EAAE,KAAK,SAAS,GAAG,eAAe,CAAE;AACrF,QAAMC,kBAAiB,SAAS,IAAI,CAAA,YAAY,EAAE,KAAK,SAAS,GAAG,eAAe,CAAE;AACpF,SAAO;AAAA,IACH,GAAG;AAAA,IACH,WAAWD;AAAAA,IACX,UAAUC;AAAAA,EAAA;AAElB;AC3UO,MAAM,4BAA4B,MAAM;AAC9C,SAAOC;AAAAA,IACN,IAAI,OAAA,EAAS,MAAM;AAAA,MAClB,CAAC,uBAAuB,GAAG,IAAI,OAAA,EAAS,MAAM;AAAA,QAC7C,CAAC,eAAe,IAAI,GAAG,IAAI,OAAA,EAAS,SAAS,2BAA2B;AAAA,QAExE,CAAC,eAAe,UAAU,GAAG,IAAI,OAAA,EAAS,KAAK,gBAAgB;AAAA,UAC9D,IAAI,CAAC,QAAa,QAAQ;AAAA,UAC1B,MAAM,MAAM,IAAI,OAAA,EAAS,SAAS,wBAAwB;AAAA,UAC1D,WAAW,MAAM,IAAI,SAAS,SAAA,EAAW,SAAA;AAAA,QAAS,CAClD;AAAA,QAED,CAAC,eAAe,SAAS,GAAG,IAAI,OAAA,EAAS,KAAK,gBAAgB;AAAA,UAC7D,IAAI,CAAC,QAAa,QAAQ;AAAA,UAC1B,MAAM,MAAM,IAAI,OAAA,EAAS,SAAS,uBAAuB;AAAA,UACzD,WAAW,MAAM,IAAI,SAAS,SAAA,EAAW,SAAA;AAAA,QAAS,CAClD;AAAA,QAED,CAAC,eAAe,YAAY,GAAG,IAAI,OAAA,EAAS,KAAK,gBAAgB;AAAA,UAChE,IAAI,CAAC,QAAa,QAAQ;AAAA,UAC1B,MAAM,MAAM,IAAI,OAAA,EAAS,SAAS,qBAAqB;AAAA,UACvD,WAAW,MAAM,IAAI,SAAS,SAAA,EAAW,SAAA;AAAA,QAAS,CAClD;AAAA,QAED,CAAC,eAAe,UAAU,GAAG,IAAI,OAAA,EAAS,SAAA,EAAW,SAAA;AAAA,QAErD,CAAC,eAAe,GAAG,GAAG,IAAI,OAAA,EAAS,SAAA,EAAW,SAAA;AAAA,QAE/C,CAAC,eAAe,OAAO,GAAG,IAAI,MAAA,EAAQ,SAAS,qBAAqB;AAAA,QAEpE,CAAC,eAAe,QAAQ,GAAG,IAAI,MAAA,EAAQ,SAAS,sBAAsB;AAAA,QACrE,CAAC,eAAe,kBAAkB,GAAG,IAAI,OAAA,EAAS,SAAS,gCAAgC;AAAA,QAE3F,CAAC,eAAe,OAAO,GAAG,IAAI,MAAA,EAAQ,SAAA,EAAW,YAAA;AAAA,QAEjD,CAAC,eAAe,QAAQ,GAAG,IAAI,MAAA,EAC7B,SAAS,gCAAgC,EACzC,IAAI,GAAG,gCAAgC;AAAA,QAEzC,CAAC,eAAe,kBAAkB,GAAG,IAAI,OAAA,EAAS,SAAS,gCAAgC;AAAA,QAC3F,CAAC,eAAe,YAAY,GAAG,IAAI,OAAA,EAAS,SAAS,0BAA0B;AAAA,MAAA,CAC/E;AAAA,IAAA,CAED;AAAA,EAAA;AAEH;AC1DA,MAAM,mBAAmB,CAAC,gBAA0B;AAChD,MAAI,YAAa,QAAO;AACxB,MAAI;AACA,UAAM,SAAS,OAAO,aAAa,QAAQ,KAAK,kBAAkB;AAClE,WAAO,SAAS,KAAK,MAAM,MAAM,IAAI;AAAA,EACzC,QAAQ;AACJ,WAAO;AAAA,EACX;AACJ;AAEA,MAAM,aAAa,CAAC,SAAc;;AAC9B,SAAO;AAAA,IACH,OAAO,6BAAM;AAAA,IACb,SAAS,CAAC;AAAA;AAAA;AAAA,MAGN,SAAO,kCAAM,iBAAN,mBAAoB,UAAQ,6BAAM;AAAA,MACzC,OAAO,6BAAM;AAAA,IAAA,CAChB;AAAA,EAAA;AAET;AAEO,MAAM,eAAoC;AAAA,EAC7C,WAAW;AAAA,IACP,UAAU;AAAA,EAAA;AAAA,EAEd,cAAc;AAAA,IACV,UAAU;AAAA,EAAA;AAElB;AAEO,MAAM,mBAAmB,CAAC,OAAY,SAAc;AACvD,QAAM,EAAE,SAAS,KAAA,IAAS;AAC1B,QAAM,SAAS,aAAa,WAAW,IAAI;AAC3C,MAAI,QAAQ;AACR,WAAO,OAAO,SAAS,IAAI;AAAA,EAC/B;AACA,SAAO;AAAA,IACH,OAAO;AAAA,IACP,SAAS,CAAA;AAAA,EAAC;AAElB;AAEO,MAAM,mBAAmB,CAAC;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AACJ,MAIM;AACF,QAAM,EAAE,MAAM,SAAA,IAAa,QAAA;AAC3B,QAAM,cAAc,iBAAiB,QAAQ;AAC7C,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAc,CAAA,CAAE;AAE5D,YAAU,MAAM;AACZ,UAAM,OAAO,iBAAiB,WAAW;AACzC,UAAM,EAAE,OAAO,QAAA,IAAY,iBAAiB,OAAO,IAAI;AAEvD,QAAI,UAAU,QAAQ,UAAU,QAAW;AACvC;AAAA,IACJ;AAEA,QAAI,OAAO,aAAa,YAAY;AAChC,eAAS,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI,KAAI,+BAAO,kBAAiB,CAAC,KAAK,IAAI,KAAK;AAAA,IAC7F;AAEA,QAAI,CAAC,mBAAmB;AACpB,wBAAkB,OAAO;AAAA,IAC7B;AAAA,EAGJ,GAAG,CAAC,+BAAO,MAAM,+BAAO,SAAS,aAAa,UAAU,iBAAiB,CAAC;AAE1E,SAAO;AAAA,IACH;AAAA,EAAA;AAER;ACqCA,MAAMC,sBAAoB,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAEJ,MAA6C;AACzC,QAAM,eAAe,CAAC,OAAwB,2CAAa,SAAS;AACpE,QAAM,QAA8B,CAAA;AAEpC,MAAI,CAAC,UAAU;AACX,UAAM;AAAA,MACF,oBAAC,UAAA,EAAS,UAAQ,MAAC,OAAM,IAAqB,IAAI,EAAE,SAAS,gBAAgB,QAAQ,gBAAgB,GAAG,gBAAgB,GAAG,kBACvH,UAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,wBACxB,UAAA,oBAAC,MAAA,EAAI,UAAA,EAAE,WAAW,GAAE,EAAA,CACxB,KAH4B,aAIhC;AAAA,IAAA;AAAA,EAER;AACA,QAAM,iBAAkB,MAAM,QAAQ,MAAM,MAAK,iCAAQ,UAAS,IAAK,iCAAQ,OAAO,CAAC,UAAU,SAAS;AAE1G,QAAM,qBAAqB,CAAC,aAAqB,iBAA4B;AACzE,UAAM,cAAc,aAAa,IAAI,CAAC,UAAU,MAAM,KAAK;AAC3D,UAAM,aAAa,MAAM,QAAQ,cAAc,IAAI,iBAAiB,CAAC,cAAc;AAEnF,UAAM,mBAAmB,WAAW,SAAS,WAAW;AACxD,UAAM,gBAAgB,mBAChB,WAAW,OAAO,CAAC,UAAU,UAAU,eAAe,CAAC,YAAY,SAAS,KAAK,CAAC,IAClF,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,YAAY,aAAa,GAAG,WAAW,CAAC,CAAC;AAE/D,aAAS,aAAa;AACtB,iDAAe;AAAA,EACnB;AAEA,QAAM,uBAAuB,CAAC,aAAqB,iBAA4B;AAC3E,UAAM,cAAc,aAAa,IAAI,CAAC,UAAU,MAAM,KAAK;AAC3D,UAAM,aAAa,MAAM,QAAQ,cAAc,IAAI,iBAAiB,CAAC,cAAc;AACnF,WAAO,YAAY,MAAM,CAAC,eAAe,WAAW,SAAS,UAAU,CAAC;AAAA,EAC5E;AAEA,QAAM,wBAAwB,CAAC,iBAA4B;AACvD,UAAM,cAAc,aAAa,IAAI,CAAC,UAAU,MAAM,KAAK;AAC3D,UAAM,aAAa,MAAM,QAAQ,cAAc,IAAI,iBAAiB,CAAC,cAAc;AACnF,WAAO,YAAY,KAAK,CAAC,eAAe,WAAW,SAAS,UAAU,CAAC;AAAA,EAC3E;AAEA,MAAI,MAAM,QAAQ,OAAO,KAAK,QAAQ,SAAS,GAAG;AAC9C,YAAQ,QAAQ,CAAC,WAAW;AACxB,YAAM;AAAA,QACF;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,OAAO,OAAO;AAAA,YAEd,UAAU,QAAQ,OAAO,QAAQ,KAAK,aAAa,OAAO,MAAM,OAAO,KAAK;AAAA,YAC5E,WAAW,OAAO,UAAU,2BAA2B;AAAA,YAEvD,UAAA,qBAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,KAC5B,UAAA;AAAA,cAAA,YAAY,mBACT;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACG,SACI,YACM,qBAAqB,OAAO,OAAO,OAAO,WAAW,EAAE,IACvD,QAAQ,MAAM,QAAQ,cAAc,IAAI,eAAe,SAAS,OAAO,KAAK,IAAI,kBAAkB,OAAO,KAAK;AAAA,kBAExH,eACI,aAAa,sBAAsB,OAAO,WAAW,CAAA,CAAE;AAAA,kBAE3D,UAAU,MAAM,YAAY,mBAAmB,OAAO,OAAO,OAAO,WAAW,CAAA,CAAE,IAAI,6CAAe,OAAO;AAAA,gBAAK;AAAA,cAAA;AAAA,cAGxH;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACG,MAAK;AAAA,kBACL,OAAM;AAAA,kBACN,SAAS,MAAM,6CAAe,OAAO;AAAA,kBAEpC,UAAA,OAAO;AAAA,gBAAA;AAAA,cAAA;AAAA,YACZ,EAAA,CACJ;AAAA,UAAA;AAAA,UAzBK,OAAO;AAAA,QAAA;AAAA,MA0BhB;AAGJ,UAAI,OAAO,WAAW,MAAM,QAAQ,OAAO,OAAO,GAAG;AACjD,eAAO,QAAQ,QAAQ,CAAC,QAAQ;AAC5B,gBAAM;AAAA,YACF;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,OAAO,IAAI;AAAA,gBACX,UAAU,QAAQ,IAAI,QAAQ,KAAK,aAAa,IAAI,MAAM,IAAI,KAAK;AAAA,gBACnE,IAAI,EAAE,IAAI,EAAA;AAAA,gBAGV,UAAA,qBAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,KAC5B,UAAA;AAAA,kBAAA,YAAY,mBACT;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACG,SAAS,QAAQ,MAAM,QAAQ,MAAM,KAAK,OAAO,SAAS,IAAI,KAAK,CAAC;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAG5E;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACG,MAAK;AAAA,sBACL,OAAM;AAAA,sBACN,SAAS,MAAM,6CAAe,OAAO,IAAI,KAAK;AAAA,sBAE7C,cAAI,SAAS,oBAAoB,mCAAmC,IAAI,SAAS,IAAI;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAC1F,EAAA,CACJ;AAAA,cAAA;AAAA,cAfK,GAAG,OAAO,KAAK,IAAI,IAAI,KAAK;AAAA,YAAA;AAAA,UAgBrC;AAAA,QAER,CAAC;AAAA,MACL;AAAA,IACJ,CAAC;AAAA,EACL;AAMA,MAAI,CAAC,MAAM,UAAW,MAAM,UAAU,KAAK,CAAC,UAAW;AACnD,UAAM;AAAA,MACF,oBAAC,UAAA,EAAS,UAAQ,MAAe,iCAAV,SAEvB;AAAA,IAAA;AAAA,EAER;AAEA,SAAO;AACX;AAGA,MAAMC,kBAGD,CAAC,EAAE,MAAM,cAAc;AACxB,QAAM,eAAe,KAAK;AAAA,IACtB,CAAC,iBAAA;;AACG,uDAAS,KAAK,CAAC,WAAW,OAAO,SAAS,kBAA1C,mBAAyD,UAAS;AAAA;AAAA,EAAA;AAE1E,QAAM,uBAAuB,aAAa,OAAO,OAAO;AAExD,SACI;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,MAAK;AAAA,MACL,OAAM;AAAA,MACN,IAAI,EAAE,SAAS,QAAQ,KAAK,GAAG,YAAY,UAAU,IAAI,IAAA;AAAA,MAExD,UAAA;AAAA,QAAA,qBAAqB,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI;AAAA,QAC1C,KAAK,SAAS,KACX,oBAAC,MAAA,EAAK,SAAQ,YAAW,MAAK,UAAS,OAAO,oBAAC,UAAA,CAAA,CAAS,EAAA,CAAI;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAI5E;AAEA,MAAM,UAAU,MACZ,oBAAC,YAAA,EAAW,WAAU,UAAS,OAAM,WAAU,MAAK,MAAK,UAAA,aAAA,CAAU;AAGvE,MAAM,sBAA2DC,eAAM,KAAK,CAAC,UAAU;;AACnF,QAAM,eAAe,SAAS;AAAA,IAC1B,SAAS,MAAM;AAAA,IACf,MAAM,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,EAAA,CAC9C;AASD,QAAM,cAAc,eAAA;AACpB,QAAM,EAAE,UAAU,gBAAA,IAAoB,eAAe,CAAA;AAErD,QAAM,sBAAsB,YAAY,CAAC,WAAmB,UAAe;;AACvE,UAAM,OAAO,MAAM;AACnB,QAAI,CAAC,KAAM;AAEX,UAAM,QAAQ,UAAU,MAAM,GAAG;AACjC,QAAI,MAAM,KAAK;AACf,aAAS,IAAI,GAAG,IAAI,MAAM,SAAS,GAAG,KAAK;AACvC,UAAI,CAAC,IAAI,MAAM,CAAC,CAAC,EAAG,KAAI,MAAM,CAAC,CAAC,IAAI,CAAA;AACpC,YAAM,IAAI,MAAM,CAAC,CAAC;AAAA,IACtB;AACA,QAAI,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;AAE/B,WAAAC,MAAA,KAAK,cAAL,gBAAAA,IAAgB,UAAhB,mBAAuB,KAAK,EAAE,MAAM,WAAW,QAAQ,EAAE,GAAG,KAAK,YAAA,EAAY;AAAA,EAGjF,GAAG,CAAC,MAAM,WAAW,CAAC;AAEtB,QAAM,WAAgB,mBAAmB;AACzC,QAAM,EAAE,EAAA,IAAM,eAAA;AACd,QAAM,EAAE,MAAA,IAAU,YAAA;AAClB,QAAM,EAAE,MAAM,SAAA,IAAa,QAAA;AACP,UAAQ,MAAM;AAC9B,QAAI,SAAU,QAAO;AACrB,QAAI;AACA,YAAM,SAAS,OAAO,aAAa,QAAQ,KAAK,kBAAkB;AAClE,aAAO,SAAS,KAAK,MAAM,MAAM,IAAI;AAAA,IACzC,QAAQ;AACJ,aAAO;AAAA,IACX;AAAA,EACJ,GAAG,CAAC,QAAQ,CAAC;AACb,QAAM,YAAY,OAAuB,IAAI;AAG7C,QAAM,CAAC,SAAS,UAAU,IAAI,SAAoB,CAAA,CAAE;AACpD,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAc,IAAI;AAC5D,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAoB,CAAA,CAAE;AACpE,QAAM,CAAC,SAAS,UAAU,IAAI,SAAkB,KAAK;AACrD,QAAM,CAAC,MAAM,OAAO,IAAI,SAAkB,KAAK;AAC/C,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAkB,KAAK;AACrE,QAAM,CAAC,YAAY,aAAa,IAAI,SAAc,IAAI;AACtD,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAkB,KAAK;AACnE,QAAM,CAAC,aAAa,cAAc,IAAI,SAAiB,EAAE;AACzD,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAkB,KAAK;AACnE,QAAM,CAAC,WAAW,YAAY,IAAI,SAAc,IAAI;AAGpD,QAAM,CAAC,aAAa,cAAc,IAAI,SAAkB,KAAK;AAC7D,QAAM,CAAC,cAAc,eAAe,IAAI,SAAkB,KAAK;AAI/D,QAAM,CAAC,YAAY,aAAa,IAAI,SAA2B;AAAA,IAC3D,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe;AAAA,IACf,OAAO;AAAA,EAAA,CACV;AAGD,QAAM;AAAA,IACF;AAAA,IACA,aAAa;AAAA,IACb,cAAc,CAAA;AAAA,IACd;AAAA,IACA,aAAa,CAAA;AAAA,IACb,YAAY;AAAA,IACZ,gBAAgB,CAAA;AAAA,IAChB;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA,mBAAmB;AAAA,IACnB;AAAA,IACA,iBAAiB;AAAA,EAAA,IACjB;AAEJ,QAAM,kBAAkB,MAAM,mBAAoB,YAAY;AAE9D,QAAM,QAAQ;AAId,QAAM,oBAAoB,QAAQ,MAAM;;AACpC,QAAI,mBAAmB,WAAW,gBAAiB,QAAO;AAC1D,WAAQ,CAAC,WAAW,CAAC,mBAAoB,cAAc,WAAW,qBAAmBA,MAAA,MAAM,YAAN,gBAAAA,IAAe,WAAU,IAAI,QAAQ,OAAO;AAAA,EACrI,GAAG,CAAC,YAAY,SAAS,iBAAgB,WAAM,YAAN,mBAAe,QAAQ,cAAc,CAAC;AAI/E,QAAM,KAAK,QAAQ,MAAM,eAAe,CAAC,KAAK,UAAU,aAAa,CAAC,CAAC;AAKvE,QAAM,EAAE,iBAAiB,GAAC,IAAM,iBAAiB;AAAA,IAC7C;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACH;AAID,QAAM,uBAAuB,YAAY,CAAC,YAAoB,UAA0B;AACpF,UAAM,iBAA6B,MAAM,WAAW,MAAM,QAAQ,SAAS,IAAK,MAAM,UAAW,kBAAkB,CAAA;AACnH,QAAI,CAAC,WAAY,QAAO;AAExB,UAAM,uBAAuB,WAAW,YAAA;AAExC,UAAMC,mBAAkB,aAClB,iDAAgB,OAAO,CAAC,KAAgB,QAAiB;;AACvD,YAAM,mBAAkBD,MAAA,IAAI,YAAJ,gBAAAA,IAAa,OAAO,CAAC,SAAkB;AAC3D,cAAM,QAAQD,eAAM,eAAe,KAAK,KAAK,IAAI,KAAK,cAAc,OAAO,KAAK,KAAK;AACrF,eAAO,+BAAO,cAAc,SAAS;AAAA,MACzC;AAEA,UAAI,mDAAiB,QAAQ;AACzB,YAAI,KAAK,EAAE,GAAG,KAAK,SAAS,iBAAiB;AAAA,MACjD;AAEA,aAAO;AAAA,IACX,GAAG,CAAA,OAAO,CAAA,KACR,iDAAgB,OAAO,CAAC,QAAiB;AACvC,YAAM,QAAQA,eAAM,eAAe,IAAI,KAAK,IAAI,IAAI,cAAc,OAAO,IAAI,KAAK;AAClF,aAAO,+BAAO,cAAc,SAAS;AAAA,IACzC,OAAM,CAAA;AAGV,WAAO,qBAAqBE,kBAAiB,KAAK;AAAA,EAEtD,GAAG,CAAC,MAAM,SAAS,WAAW,cAAc,CAAC;AAG7C,QAAM,mBAAmB,YAAY,CAAC,SAA+B;AACjE,UAAM,gBAAgB;AAAA,MAClB,GAAG,IAAI,IAAI,6BAAM,IAAI,CAAA,SAAQ,CAAC,KAAK,OAAO,IAAI,EAAE,EAAE,OAAA;AAAA,IAAO;AAE7D,WAAO;AAAA,EACX,GAAG,CAAA,CAAE;AAGL,QAAM,uBAAuB,YAAY,CAAC,aAAwB,UAA0B;AACxF,QAAI,iBAAiB,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAC1D,qBAAiB,eAAe,IAAI,CAAC,SAAS,OAAO,IAAI,CAAC;AAC1D,UAAM,cAAc,OAAO,aAAa,CAAC,SAAS;AAC9C,YAAM,QAAQ,eAAe,QAAQ,KAAK,MAAM,KAAK,KAAK;AAC1D,aAAO,SAAS,KAAK,WAAW;AAAA,IACpC,CAAC;AACD,WAAO;AAAA,EACX,GAAG,CAAA,CAAE;AAGL,QAAM,kBAAkB,QAAQ,MAAM;AAClC,QAAI,mBAAmB;AACnB,aAAO,qBAAqB,aAAa,YAAY;AAAA,IACzD;AACA,UAAM,aAAa,qBAAqB,iBAAiB,CAAC,GAAG,SAAS,GAAG,eAAe,CAAC,GAAG,YAAY;AACxG,QAAI,gBAAgB;AAChB,YAAM,eAAe,qBAAqB,aAAa,YAAY;AACnE,aAAO,iBAAiB,CAAC,GAAG,cAAc,GAAG,UAAU,CAAC;AAAA,IAC5D;AACA,WAAO;AAAA,EAEX,GAAG,CAAC,SAAS,iBAAiB,mBAAmB,MAAM,SAAS,cAAc,aAAa,sBAAsB,sBAAsB,kBAAkB,cAAc,CAAC;AAGxK,QAAM,yBAAyB,QAAQ,MAAM;AACzC,QAAI,CAAC,gBAAgB,CAAC,gBAAgB,OAAQ,QAAO;AACrD,UAAM,WAAW,gBAAgB;AAAA,MAAK,CAAA,QAClC,IAAI,OAAO,gBAAgB,IAAI,UAAU;AAAA,IAAA;AAE7C,WAAO,YAAY;AAAA,EACvB,GAAG,CAAC,cAAc,eAAe,CAAC;AAGlC,QAAMC,gBAAe,YAAY,OAAO,aAAa,IAAI,MAAM,IAAI,OAAO,GAAG,SAAS,UAAU;AAE5F,QAAI,CAAC,WAAW,CAAC,uBAAuB,CAAA;AAExC,eAAW,IAAI;AACf,QAAI,OAAO,GAAG;AACV,oBAAc,WAAS,EAAE,GAAG,MAAM,eAAe,OAAO;AAAA,IAC5D;AAEA,QAAI;AACA,UAAI,OAAkB,CAAA;AACtB,UAAI,mBAA4C,CAAA;AAGhD,UAAI,gBAAgB;AAChB,cAAM,WAAW,MAAM,eAAe;AAAA,UAClC,QAAQ;AAAA,UACR,SAAS;AAAA,UACT;AAAA,UACA,OAAO,OAAO,KAAK;AAAA,UACnB,QAAQ,yCAAY,KAAK;AAAA,UACzB,OAAO;AAAA,QAAA,CACV;AACD,gBAAO,qCAAU,SAAQ,CAAA;AACzB,4BAAmB,qCAAU,eAAc,CAAA;AAAA,MAC/C,OAAO;AACH,cAAM,WAAW,MAAM,SAAS;AAAA,UAC5B,QAAQ;AAAA,UACR,SAAS;AAAA,YACL;AAAA,YACA,OAAO,OAAO,KAAK;AAAA,YACnB,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,QAAQ;AAAA,YACR,OAAO;AAAA,UAAA;AAAA,QACX,CACH;AACD,gBAAO,qCAAU,SAAQ,CAAA;AACzB,4BAAmB,qCAAU,eAAc,CAAA;AAAA,MAC/C;AAEA,UAAI,QAAQ,MAAM,QAAQ,IAAI,GAAG;AAC7B,cAAM,aAAa,SAAS,CAAC,GAAG,SAAS,GAAG,IAAI,IAAI;AAEpD,sBAAc,YAAY,MAAM;AAChC,4BAAoB,IAAI;AAExB,sBAAc,CAAA,UAAS;AAAA,UACnB,GAAG;AAAA,UACH;AAAA,UACA,WAAU,qDAAkB,eAAc,KAAM,OAAO;AAAA,UACvD,QAAO,qDAAkB,eAAc;AAAA,UACvC,eAAe;AAAA,QAAA,EACjB;AAAA,MACN;AAEA,aAAO,QAAQ,CAAA;AAAA,IACnB,SAAS,OAAO;AACZ,cAAQ,MAAM,2BAA2B,KAAK;AAC9C,oBAAc,WAAS,EAAE,GAAG,MAAM,eAAe,QAAQ;AACzD,aAAO,CAAA;AAAA,IACX,UAAA;AACI,iBAAW,KAAK;AAAA,IACpB;AAAA,EAEJ,GAAG,CAAC,SAAS,gBAAgB,SAAS,YAAY,WAAW,OAAO,EAAE,CAAC;AAGvE,QAAM,eAAe,YAAY,CAAC,UAAyC;AACvE,UAAM,EAAE,WAAW,cAAc,aAAA,IAAiB,MAAM;AACxD,UAAM,WAAW,eAAe,aAAa,eAAe;AAE5D,QAAI,YAAY,WAAW,WAAW,CAAC,WAAW,iBAAiB,CAAC,mBAAmB;AACnF,YAAM,WAAW,WAAW,OAAO;AACnC,MAAAA,cAAa,aAAa,IAAI,UAAU,IAAI;AAAA,IAChD;AAAA,EACJ,GAAG,CAAC,WAAW,SAAS,WAAW,eAAe,WAAW,MAAM,mBAAmB,aAAa,IAAIA,aAAY,CAAC;AAGpH,QAAM,gBAAgB,YAAY,CAAC,YAAuB,SAAS,UAAU;AACzE,UAAM,aAAa,SAAS,UAAU;AACtC,UAAM,gBAAgB,iBAAiB,CAAC,GAAG,YAAY,GAAG,UAAU,CAAC;AACrE,eAAW,aAAa;AAAA,EAC5B,GAAG,CAAC,SAAS,iBAAiB,gBAAgB,CAAC;AAG/C,QAAM,sBAAsB,YAAY,OAAOC,mBAA6B;AACxE,QAAI,CAAC,aAAc;AACnB,QAAI,cAAc,MAAM,iBAAiB,eAAe,CAAC,YAAY;AACrE,kBAAc,MAAM,QAAQ,WAAW,IAAI,2CAAa,OAAO,CAAA,MAAK,KAAK,CAAA;AACzE,kBAAc,MAAM,QAAQ,WAAW,IAAI,2CAAa,IAAI,CAAC,SAAS,OAAO,IAAI,KAAK,CAAA;AACtF,UAAM,cAAcA,iDAAe;AAAA,MAAO,CAAC,SACvC,MAAM,QAAQ,WAAW,IAAI,YAAY,SAAS,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,SAAS,KAAK,KAAK,SAAS,KAAK,OAAO;AAAA;AAG7H,QAAI,MAAM,QAAQ,WAAW,KAAK,YAAY,SAAS,GAAG;AACtD,yDAAkB,MAAM,iBAAiB,cAAc,YAAY,CAAC,GAAG,MAAM;AAC7E,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EAEX,GAAG,CAAC,MAAM,gBAAgB,MAAM,MAAM,cAAc,WAAW,iBAAiB,eAAe,CAAC;AAGhG,QAAM,iBAAiB,YAAY,YAAY;AAC3C,QAAI,KAAM;AACV,QAAI,MAAM,oBAAoB,eAAe,EAAG;AAEhD,UAAM,YAAY,MAAM,iBACpB,MAAM,QAAQ,YAAY,KAAK,aAAa,SAAS,IACrD,QAAQ,YAAY;AAExB,QAAI,WAAW;AACX,wBAAkB,IAAI;AACL,YAAMD,cAAa,IAAI,EAAE,GAAG,IAAI,UAAU,aAAA,GAAgB,GAAG,KAAK;AACnF,wBAAkB,KAAK;AAAA,IAK3B;AAAA,EAEJ,GAAG,CAAC,MAAM,cAAc,KAAK,UAAU,EAAE,CAAC,CAAC;AAG3C,QAAM,eAAe,YAAY,YAAY;AACzC,UAAM,YAAY,KAAK,UAAU,EAAE,MAAM,KAAK,UAAU,UAAU;AAElE,QAAI,WAAW;AACX,oBAAc,EAAE;AAChB,iBAAW,CAAA,CAAE;AACb,yBAAmB,KAAK;AACxB,oBAAc;AAAA,QACV,MAAM;AAAA,QACN,SAAS;AAAA,QACT,eAAe;AAAA,QACf,OAAO;AAAA,MAAA,CACV;AAAA,IACL;AAEA,QAAI,CAAC,qBAAqB,CAAC,iBAAiB;AACxC,YAAMA,cAAa,aAAa,IAAI,GAAG,KAAK;AAC5C,yBAAmB,IAAI;AAAA,IAC3B;AAAA,EAEJ,GAAG,CAAC,IAAI,mBAAmB,eAAe,CAAC;AAG3C,QAAM,kBAAkB;AAAA,IACpB,MAAM,SAAS,OAAO,eAAuB;AACzC,UAAI,QAAS;AAEb,UAAI,CAAC,cAAc,CAAC,qBAAqB,gBAAgB;AACrD,sBAAc;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,UACT,eAAe;AAAA,UACf,OAAO;AAAA,QAAA,CACV;AACD,cAAMA,cAAa,IAAI,IAAI,GAAG,KAAK;AAAA,MACvC;AACA,UAAI,WAAW,SAAS,KAAK,CAAC,mBAAmB;AAC7C,sBAAc;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,UACT,eAAe;AAAA,UACf,OAAO;AAAA,QAAA,CACV;AACD,cAAMA,cAAa,YAAY,IAAI,GAAG,KAAK;AAAA,MAC/C;AAAA,IACJ,GAAG,GAAG;AAAA;AAAA,IAEN,CAAC,mBAAmB,gBAAgB,EAAE;AAAA,EAAA;AAI1C,QAAM,aAAa,YAAY,CAAC,UAAe;AAC3C,UAAM,SAAS,MAAM,iBAAiB,CAAA,IAAK,IAAI;AAC/C,QAAI,iBAAiB;AACjB,sBAAgB,MAAM,MAAM,IAAI;AAAA,IACpC;AAAA,EACJ,GAAG,CAAC,MAAM,gBAAgB,MAAM,MAAM,eAAe,CAAC;AAGtD,QAAM,cAAc,YAAY,MAAM;AAClC,YAAQ,KAAK;AACb,QAAI,YAAY,SAAS,GAAG;AACxB,yBAAmB,KAAK;AAAA,IAC5B;AACA,sBAAkB,KAAK;AACvB,mBAAe,EAAE;AAAA,EACrB,GAAG,CAAC,WAAW,CAAC;AAEhB,QAAM,kBAAkB,YAAY,MAAM;AACtC,mBAAe,IAAI;AAAA,EACvB,GAAG,CAAA,CAAE;AAKL,QAAM,kBAAkB,YAAY,OAAO,YAAiB;AACxD,QAAI,CAAC,aAAa,CAAC,UAAU,KAAK;AAC9B,cAAQ,MAAM,uCAAuC;AACrD;AAAA,IACJ;AAEA,oBAAgB,IAAI;AACpB,QAAI;AACA,YAAM,SAAS,MAAM,UAAU,IAAI,OAAO;AAC1C,sBAAgB,KAAK;AACrB,qBAAe,KAAK;AACpB,UAAI,CAAC,mBAAmB;AACpB,sBAAc;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,UACT,eAAe;AAAA,UACf,OAAO;AAAA,QAAA,CACV;AACD,2BAAmB,KAAK;AACxB,cAAMA,cAAa,IAAI,IAAI,GAAG,KAAK;AAAA,MACvC;AACA,UAAI,UAAU,OAAO,MAAM;AACvB,cAAM,WAAW,MAAM,iBACjB,CAAC,GAAI,gBAAgB,CAAA,GAAK,OAAO,KAAK,EAAE,IACxC,OAAO,KAAK;AAElB,YAAI,UAAU;AACV,mBAAS,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI,IAAI,QAAQ;AAAA,QAC9D;AAAA,MACJ;AAAA,IACJ,SAAS,OAAO;AACZ,cAAQ,IAAI,SAAS,KAAK;AAC1B,sBAAgB,KAAK;AAAA,IACzB;AAAA,EAGJ,GAAG,CAAC,WAAW,mBAAmBA,eAAc,IAAI,MAAM,gBAAgB,MAAM,gBAAgB,MAAM,MAAM,cAAc,QAAQ,CAAC;AAGnI,YAAU,MAAM;AACZ,QAAI,eAAe;AACf,oBAAc,aAAa;AAAA,IAC/B;AAAA,EACJ,GAAG,CAAC,eAAe,aAAa,CAAC;AAEjC,YAAU,MAAM;AACZ,QAAI,MAAM;AACN,mBAAA;AAAA,IACJ;AAAA,EACJ,GAAG,CAAC,MAAM,YAAY,CAAC;AAEvB,YAAU,MAAM;AACZ,mBAAA;AAAA,EACJ,GAAG,CAAC,cAAc,CAAC;AAEnB,YAAU,MAAM;AACZ,QAAI,SAAS;AACT,oBAAc;AAAA,QACV,MAAM;AAAA,QACN,SAAS;AAAA,QACT,eAAe;AAAA,QACf,OAAO;AAAA,MAAA,CACV;AACD,MAAAA,cAAa,IAAI,IAAI,GAAG,KAAK;AAAA,IACjC;AAAA,EACJ,GAAG,CAAC,SAASA,eAAc,EAAE,CAAC;AAE9B,YAAU,MAAM;AACZ,QAAI,MAAM;AACN,sBAAgB,WAAW;AAAA,IAC/B;AACA,WAAO,MAAM,gBAAgB,OAAA;AAAA,EACjC,GAAG,CAAC,aAAa,MAAM,eAAe,CAAC;AAEvC,YAAU,MAAM;AACZ,QAAI,gBAAgB,CAAC,MAAM;AACvB,YAAM,eAAe,mCAAS;AAAA,QAAO,CAAC,SAClC,MAAM,iBACF,MAAM,QAAQ,YAAY,KAAK,aAAa,SAAS,KAAK,MAAM,KAAK,KAAK,KACzE,KAAK,MAAM,KAAK,UAAU;AAAA;AAEnC,yBAAmB,gBAAgB,EAAE;AAAA,IACzC;AAAA,EACJ,GAAG,CAAC,cAAc,SAAS,MAAM,cAAc,CAAC;AAEhD,QAAM,kBAAkB,YAAY,CAAC,kBAAyB;AAC1D,WAAO,MAAM,QAAQ,aAAa,IAAI,cAAc,OAAO,OAAO,IAAI,CAAA;AAAA,EAC1E,GAAG,CAAA,CAAE;AAEL,YAAU,MAAM;AACZ,UAAM,SAAS,iBAAiB,OAAO;AACvC,iBAAa,MAAM;AAAA,EACvB,GAAG,CAAC,OAAO,CAAC;AAIZ,SACI;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,SAAS,MAAM;AAAA,MACf,MAAM,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,MAC3C,QAAQ,CAAC,EAAE,OAAO,WAAA;;AACd,oCAAA,UAAA,EACK,UAAA;AAAA,UAAA,MAAM,eAAe,qBAAqB,iBAAiB,MAAM,KAAK;AAAA,UACtE,kBACG;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,QAAO,iEAAwB,SAAQ,OAAO,uBAAuB,KAAK,IAAI;AAAA,cAC9E,WAAU;AAAA,cACV,OAAK;AAAA,cACL,WAAW;AAAA,gBACP,QAAQ;AAAA,kBACJ,WAAW,CAAC,EAAE,MAAM,UAAU,SAAS,EAAE,QAAQ,CAAC,GAAG,GAAG,KAAK;AAAA,gBAAA;AAAA,gBAEjE,SAAS;AAAA,kBACL,IAAI,EAAE,UAAU,IAAA;AAAA,gBAAI;AAAA,cACxB;AAAA,cAGJ,8BAAC,QAAA,EACG,UAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACI,GAAG;AAAA,kBACJ,KAAK;AAAA,kBACL;AAAA,kBACA,QAAQ,MAAM;AACV,4BAAQ,IAAI;AACZ,+BAAW,MAAM;AACb,4BAAM,cAAc,SAAS;AAAA,wBACzB,6BAA6B,MAAM,KAAK;AAAA,sBAAA;AAE5C,8BAAQ,IAAI,wBAAwB,WAAW;AAC/C,iEAAa;AAAA,oBACjB,GAAG,GAAG;AAAA,kBACV;AAAA,kBACA,SAAS;AAAA,kBACT,WAAS;AAAA,kBACT,cAAc,MAAM;AAAA,kBACpB,UAAU,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,kBAC/C,aAAa,MAAM;AAAA,kBACnB,OAAO,MAAM;AAAA,kBACb,cAAc,MAAM,iBAAiB,MAAM,iBAAiB,CAAA,IAAK;AAAA,kBACjE,aAAa;AAAA,kBACb,UAAU,MAAM,YAAY,YAAY,QAAQ,MAAM;AAAA,kBACtD,MAAM,MAAM,QAAQ;AAAA,kBACpB,UAAU,MAAM,kBAAkB;AAAA,kBAClC,UAAU,MAAM;AAAA,kBAChB,IAAK,MAAM,oBAAkBF,MAAA,+BAAO,UAAP,gBAAAA,IAAc,UAAU,EAAE,uBAAuB,EAAE,SAAS,mBAAA,EAAmB,IAAM,CAAA;AAAA,kBAClH,SAAQ;AAAA,kBACR,OACI,iBACO,MAAM,iBAAiB,CAAA,IAAK,OAC5B,WAAM,UAAN,mBAAa,OAAM,MAAM,UAAU,MAAM,iBAAiB,CAAA,IAAK;AAAA,kBAE1E,WACI,MAAM,oBAAkB,qBAAgB,MAAM,KAAK,MAA3B,mBAA8B,UAChD,8BACA;AAAA,kBAEV,WAAW;AAAA,oBACP,YAAY;AAAA,sBACR,UAAU;AAAA,sBACV,OAAO,EAAE,WAAW,IAAA;AAAA,oBAAI;AAAA,kBAC5B;AAAA,kBAGJ,aAAa,CAAC,aAAkB;AAC5B,wBAAI,MAAM,QAAQ,QAAQ,GAAG;AACzB,6BACI;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACG,eAAe,MAAM;AAAA,0BACrB,MAAM,gBAAgB,QAAQ;AAAA,0BAC9B,aAAc,WAAW,MAAM,aAAc,oBAAC,SAAA,CAAA,CAAQ,IAAK,GAAG,EAAE,eAAe,CAAC,IAAI,MAAM,KAAK;AAAA,0BAC/F,UAAU,MAAM;AAAA,0BAChB,UAAU,MAAM;AAAA,0BAChB,WAAW;AAAA,4BACP,IAAI;AAAA,8BACA,YAAY;AAAA,8BACZ,QAAQ;AAAA;AAAA,8BAER,0BAA0B;AAAA,gCACtB,OAAO;AAAA,gCACP,YAAY;AAAA,8BAAA;AAAA,4BAChB;AAAA,0BACJ;AAAA,wBACJ;AAAA,sBAAA;AAAA,oBAGZ,OAAO;AACH,4BAAM,iBAAiB,gBAAgB;AAAA,wBACnC,CAAC,WAAA;;AAAY,oCAAAA,MAAA,OAAO,UAAP,gBAAAA,IAAc,OAAM,OAAO,UAAU;AAAA;AAAA,sBAAA;AAEtD,6BAAQ,WAAW,MAAM,aAAc,oBAAC,WAAQ,KAAK,iDAAgB,WAChE,OAAO,MAAM,SAAS,WACnB,GAAG,EAAE,eAAe,CAAC,IAAI,MAAM,KAAK,KACpC,MAAM;AAAA,oBAClB;AAAA,kBACJ;AAAA,kBACA,mBAAmB,GAAG,EAAE,eAAe,CAAC,IAAI,MAAM,KAAK;AAAA,kBACvD,cAAc,CAAC,SAAiB;AAC5B,mCAAe,IAAI;AACnB,sCAAkB,IAAI;AAAA,kBAC1B;AAAA,kBACA,OAAO,SAAQ,gBAAW,UAAX,mBAAkB,OAAO;AAAA,kBACxC,cAAY,gBAAW,UAAX,mBAAkB,YAAW;AAAA,kBACzC,QAAQ,MAAM;AAAA,kBACd,OACI;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACG,OAAM;AAAA,sBACN,cACI,oBAAC,gBAAA,EAAe,UAAS,OACnB,UAAA,WAAW,MAAM,aACf;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACG,MAAM;AAAA,0BACN,IAAI,EAAE,IAAI,GAAG,OAAO,UAAA;AAAA,wBAAU;AAAA,sBAAA,IAGlC,CAAC,MAAM,aACN,MAAM,iBACF,MAAM,QAAQ,MAAM,KAAK,KAAK,MAAM,MAAM,SAAS,IACpD,QAAQ,MAAM,KAAK,MAAM,oBACzB;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACG,cAAW;AAAA,0BACX,SAAS,MAAM,WAAW,KAAK;AAAA,0BAC/B,MAAK;AAAA,0BACL,IAAI,QAAQ,EAAE,IAAI,QAAQ,EAAE,IAAI,IAAA;AAAA,0BAChC,MAAK;AAAA,0BAEL,8BAACI,SAAA,EAAM,IAAI,EAAE,UAAU,SAAO,CAAG;AAAA,wBAAA;AAAA,sBAAA,EACrC,CAGZ;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAKX,UAAA;AAAA,oBAAAP,oBAAkB;AAAA,sBACf,SAAS;AAAA,sBACT,UAAU,QAAQ,MAAM,cAAc;AAAA,sBACtC,aAAa,MAAM;AAAA,sBACnB,QAAQ,MAAM;AAAA,sBACd,iBAAiB;AAAA,sBAEjB;AAAA,sBACA,UAAU,MAAM;AAAA,sBAChB;AAAA,sBACA;AAAA,sBACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAA,CAQH;AAAA,qBACA,+BAAO,kBACJ,qBAAC,KAAA,EAAiB,IAAI,EAAE,UAAU,UAAU,QAAQ,GAAG,YAAY,QAAQ,QAAQ,KAC/E,UAAA;AAAA,sBAAA,oBAAC,SAAA,EAAQ,UAAQ,MAAC,IAAI,EAAE,IAAI,sBAAsB,IAAI,qBAAA,EAAqB,CAAG;AAAA,sBAC9E,qBAAC,YAAS,IAAI,EAAE,KAAK,EAAA,GAAK,SACtB,MAAM;AACF,4BAAI,+BAAO,eAAe;AACtB,yDAAO;AAAA,wBACX,OAAO;AACH,0CAAA;AAAA,wBACJ;AAAA,sBACJ,GAGA,UAAA;AAAA,wBAAA,oBAAC,KAAA,EAAI,UAAS,QAAA,CAAQ;AAAA,wBACtB,qBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,wBAAuB,UAAA;AAAA,0BAAA;AAAA,0BACnC,MAAM;AAAA,wBAAA,EAAA,CACtB;AAAA,sBAAA,EAAA,CACJ;AAAA,oBAAA,EAAA,GAhBK,QAiBT;AAAA,oBACH,WAAW,iBACR,oBAAC,UAAA,EAAS,UAAQ,MACd,UAAA,oBAAC,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,gBAAgB,UAAU,OAAO,OAAA,GACzD,8BAAC,kBAAA,EAAiB,MAAM,GAAA,CAAI,EAAA,CAChC,EAAA,CACJ;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAAA,EAER,CACJ;AAAA,YAAA;AAAA,UAAA,IAGJ;AAAA,YAAC;AAAA,YAAA;AAAA,cACI,GAAG;AAAA,cACJ,KAAK;AAAA,cACL;AAAA,cACA,QAAQ,MAAM;AACV,wBAAQ,IAAI;AACZ,2BAAW,MAAM;AACb,wBAAM,cAAc,SAAS;AAAA,oBACzB,6BAA6B,MAAM,KAAK;AAAA,kBAAA;AAE5C,0BAAQ,IAAI,wBAAwB,WAAW;AAC/C,6DAAa;AAAA,gBACjB,GAAG,GAAG;AAAA,cACV;AAAA,cACA,SAAS;AAAA,cACT,WAAS;AAAA,cACT,cAAc,MAAM;AAAA,cACpB,UAAU,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,cAC/C,aAAa,MAAM;AAAA,cACnB,OAAO,MAAM;AAAA,cACb,cAAc,MAAM,iBAAiB,MAAM,iBAAiB,CAAA,IAAK;AAAA,cACjE,aAAa;AAAA,cACb,UAAU,MAAM,YAAY,YAAY,QAAQ,MAAM;AAAA,cACtD,MAAM,MAAM,QAAQ;AAAA,cACpB,UAAU,MAAM,kBAAkB;AAAA,cAClC,UAAU,MAAM;AAAA,cAChB,IAAK,MAAM,oBAAkB,oCAAO,UAAP,mBAAc,UAAU,EAAE,uBAAuB,EAAE,SAAS,mBAAA,EAAmB,IAAM,CAAA;AAAA,cAClH,SAAQ;AAAA,cACR,OACI,iBACO,MAAM,iBAAiB,CAAA,IAAK,OAC5B,WAAM,UAAN,mBAAa,OAAM,MAAM,UAAU,MAAM,iBAAiB,CAAA,IAAK;AAAA,cAE1E,WACI,MAAM,oBAAkB,qBAAgB,MAAM,KAAK,MAA3B,mBAA8B,UAChD,8BACA;AAAA,cAEV,WAAW;AAAA,gBACP,YAAY;AAAA,kBACR,UAAU;AAAA,kBACV,OAAO,EAAE,WAAW,IAAA;AAAA,gBAAI;AAAA,cAC5B;AAAA,cAGJ,aAAa,CAAC,aAAkB;AAC5B,oBAAI,MAAM,QAAQ,QAAQ,GAAG;AACzB,yBACI;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACG,eAAe,MAAM;AAAA,sBACrB,MAAM,gBAAgB,QAAQ;AAAA,sBAC9B,aAAc,WAAW,MAAM,aAAc,oBAAC,SAAA,CAAA,CAAQ,IAAK,GAAG,EAAE,eAAe,CAAC,IAAI,MAAM,KAAK;AAAA,sBAC/F,UAAU,MAAM;AAAA,sBAChB,UAAU,MAAM;AAAA,sBAChB,WAAW;AAAA,wBACP,IAAI;AAAA,0BACA,YAAY;AAAA,0BACZ,QAAQ;AAAA;AAAA,0BAER,0BAA0B;AAAA,4BACtB,OAAO;AAAA,4BACP,YAAY;AAAA,0BAAA;AAAA,wBAChB;AAAA,sBACJ;AAAA,oBACJ;AAAA,kBAAA;AAAA,gBAGZ,OAAO;AACH,wBAAM,iBAAiB,gBAAgB;AAAA,oBACnC,CAAC,WAAA;;AAAY,gCAAAG,MAAA,OAAO,UAAP,gBAAAA,IAAc,OAAM,OAAO,UAAU;AAAA;AAAA,kBAAA;AAEtD,yBAAQ,WAAW,MAAM,aAAc,oBAAC,WAAQ,KAAK,iDAAgB,WAChE,OAAO,MAAM,SAAS,WACnB,GAAG,EAAE,eAAe,CAAC,IAAI,MAAM,KAAK,KACpC,MAAM;AAAA,gBAClB;AAAA,cACJ;AAAA,cACA,mBAAmB,GAAG,EAAE,eAAe,CAAC,IAAI,MAAM,KAAK;AAAA,cACvD,cAAc,CAAC,SAAiB;AAC5B,+BAAe,IAAI;AACnB,kCAAkB,IAAI;AAAA,cAC1B;AAAA,cACA,OAAO,SAAQ,gBAAW,UAAX,mBAAkB,OAAO;AAAA,cACxC,cAAY,gBAAW,UAAX,mBAAkB,YAAW;AAAA,cACzC,QAAQ,MAAM;AAAA,cACd,OACI;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACG,OAAM;AAAA,kBACN,cACI,oBAAC,gBAAA,EAAe,UAAS,OACnB,UAAA,WAAW,MAAM,aACf;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACG,MAAM;AAAA,sBACN,IAAI,EAAE,IAAI,GAAG,OAAO,UAAA;AAAA,oBAAU;AAAA,kBAAA,IAGlC,CAAC,MAAM,aACN,MAAM,iBACF,MAAM,QAAQ,MAAM,KAAK,KAAK,MAAM,MAAM,SAAS,IACpD,QAAQ,MAAM,KAAK,MAAM,oBACzB;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACG,cAAW;AAAA,sBACX,SAAS,MAAM,WAAW,KAAK;AAAA,sBAC/B,MAAK;AAAA,sBACL,IAAI,QAAQ,EAAE,IAAI,QAAQ,EAAE,IAAI,IAAA;AAAA,sBAChC,MAAK;AAAA,sBAEL,8BAACI,SAAA,EAAM,IAAI,EAAE,UAAU,SAAO,CAAG;AAAA,oBAAA;AAAA,kBAAA,EACrC,CAGZ;AAAA,gBAAA;AAAA,cAAA;AAAA,cAKX,UAAA;AAAA,gBAAAP,oBAAkB;AAAA,kBACf,SAAS;AAAA,kBACT,UAAU,QAAQ,MAAM,cAAc;AAAA,kBACtC,aAAa,MAAM;AAAA,kBACnB,QAAQ,MAAM;AAAA,kBACd,iBAAiB;AAAA,kBAEjB;AAAA,kBACA,UAAU,MAAM;AAAA,kBAChB;AAAA,kBACA;AAAA,kBACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAA,CAQH;AAAA,iBACA,+BAAO,kBACJ,qBAAC,KAAA,EAAiB,IAAI,EAAE,UAAU,UAAU,QAAQ,GAAG,YAAY,QAAQ,QAAQ,KAC/E,UAAA;AAAA,kBAAA,oBAAC,SAAA,EAAQ,UAAQ,MAAC,IAAI,EAAE,IAAI,sBAAsB,IAAI,qBAAA,EAAqB,CAAG;AAAA,kBAC9E,qBAAC,YAAS,IAAI,EAAE,KAAK,EAAA,GAAK,SACtB,MAAM;AACF,wBAAI,+BAAO,eAAe;AACtB,qDAAO;AAAA,oBACX,OAAO;AACH,sCAAA;AAAA,oBACJ;AAAA,kBACJ,GAGA,UAAA;AAAA,oBAAA,oBAAC,KAAA,EAAI,UAAS,QAAA,CAAQ;AAAA,oBACtB,qBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,wBAAuB,UAAA;AAAA,sBAAA;AAAA,sBACnC,MAAM;AAAA,oBAAA,EAAA,CACtB;AAAA,kBAAA,EAAA,CACJ;AAAA,gBAAA,EAAA,GAhBK,QAiBT;AAAA,gBACH,WAAW,iBACR,oBAAC,UAAA,EAAS,UAAQ,MACd,UAAA,oBAAC,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,gBAAgB,UAAU,OAAO,OAAA,GACzD,8BAAC,kBAAA,EAAiB,MAAM,GAAA,CAAI,EAAA,CAChC,EAAA,CACJ;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAMX,aAAa,UAAU,6CAEf,UAAAE,eAAM,cAAc,UAAU,WAAW;AAAA,YACtC,QAAQ;AAAA,YACR,WAAW;AAAA,YACX,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,YAAY;AAAA,cACR,UAAU;AAAA,cACV,WAAW;AAAA,YAAA;AAAA,YAEf,GAAG,+BAAO;AAAA,UAAA,CACb,GACL;AAAA,UAGH,MAAM,kBAAkB,MAAM,QAAQ,MAAM,KAAK,KAC9C;AAAA,YAACD;AAAAA,YAAA;AAAA,cACG,MAAM,MAAM;AAAA,cACZ,SAAS;AAAA,YAAA;AAAA,UAAA;AAAA,QACb,EAAA,CAER;AAAA;AAAA,IAAA;AAAA,EAAA;AAIhB,CAAC;AAED,oBAAoB,YAAY;AAAA,EAC5B,MAAM,UAAU,OAAO;AAAA,EACvB,aAAa,UAAU,OAAO;AAAA,EAC9B,OAAO,UAAU,OAAO;AAAA,EACxB,MAAM,UAAU;AAAA,EAChB,SAAS,UAAU;AAAA,IACf,UAAU,MAAM;AAAA,MACZ,OAAO,UAAU,UAAU,CAAC,UAAU,QAAQ,UAAU,IAAI,CAAC;AAAA,MAC7D,OAAO,UAAU;AAAA,IAAA,CACpB;AAAA,EAAA,EACH;AAAA,EACF,aAAa,UAAU,OAAO;AAAA,EAC9B,cAAc,UAAU;AAAA,EACxB,gBAAgB,UAAU,OAAO;AAAA,EACjC,IAAI,UAAU;AAAA,EACd,UAAU,UAAU;AAAA,EACpB,gBAAgB,UAAU;AAAA,EAC1B,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,aAAa,UAAU;AAAA,EACvB,UAAU,UAAU;AAAA,EACpB,cAAc,UAAU;AAAA,EACxB,eAAe,UAAU;AAAA,EACzB,eAAe,UAAU;AAAA,EACzB,eAAe,UAAU;AAAA,EACzB,YAAY,UAAU;AAAA,EACtB,eAAe,UAAU;AAAA,EACzB,YAAY,UAAU;AAAA,EACtB,aAAa,UAAU;AAAA,EACvB,iBAAiB,UAAU;AAAA,EAC3B,YAAY,UAAU;AAAA,EACtB,cAAc,UAAU;AAAA,EACxB,WAAW,UAAU;AAAA,EACrB,WAAW,UAAU;AAAA,EACrB,SAAS,UAAU;AAAA,EACnB,eAAe,UAAU;AAAA,EACzB,WAAW,UAAU;AAAA,EACrB,eAAe,UAAU;AAAA,EACzB,SAAS,UAAU;AAAA,EACnB,SAAS,UAAU;AAAA,EACnB,qBAAqB,UAAU;AAAA,EAC/B,kBAAkB,UAAU;AAAA,EAC5B,gBAAgB,UAAU;AAC9B;ACrqCA,MAAM,cAAcZ,SAAO,eAAe,EAAsB,CAAC,EAAE,OAAO,EAAE,WAAW,YAAM;;AAAO;AAAA,IAClG,WAAW;AAAA,MACT,QAAQ;AAAA,IAAA;AAAA,IAEV,qBAAqB;AAAA,MACnB,iBAAiB;AAAA,QACf,cAAc;AAAA,QACd,SAAS;AAAA;AAAA,QACT,QAAQ,cAAa,aAAQ,UAAR,mBAAe,UAAU,IAAI;AAAA,QAClD,UAAU;AAAA,QACV,OAAO;AAAA,QACP,WAAW;AAAA,QACX,WAAW;AAAA;AAAA,QACX,WAAW;AAAA;AAAA,QAEX,UAAU;AAAA,UACR,QAAQ,cAAa,aAAQ,UAAR,mBAAe,UAAU,IAAI;AAAA,QAAA;AAAA,QAGpD,UAAU;AAAA,UACR,QAAQ,cAAa,aAAQ,UAAR,mBAAe,QAAQ,IAAI;AAAA,UAChD,WAAW;AAAA,QAAA;AAAA,QAEb,aAAa;AAAA,UACX,aAAY,aAAQ,UAAR,mBAAe,UAAU;AAAA,UACrC,QAAO,aAAQ,UAAR,mBAAe,UAAU;AAAA,QAAG;AAAA,QAGrC,oBAAoB;AAAA,UAClB,QAAQ,cAAa,aAAQ,UAAR,mBAAe,MAAM,IAAI;AAAA,UAC9C,UAAU;AAAA,YACR,WAAW;AAAA,UAAA;AAAA,QACb;AAAA,MACF;AAAA,MAGF,kBAAkB;AAAA,QAChB,MAAM;AAAA,QACN,OAAO;AAAA,QACP,cAAc;AAAA,QAEd,kBAAkB;AAAA,UAChB,cAAc;AAAA,UAEd,WAAW;AAAA,YACT,kBAAiB,aAAQ,UAAR,mBAAe,UAAU;AAAA,UAAG;AAAA,QAC/C;AAAA,MACF;AAAA,MAGF,iBAAiB;AAAA,QACf,MAAM,QAAQ,SAAS;AAAA,QACvB,OAAO,QAAQ,MAAM;AAAA,QAErB,WAAW;AAAA,UACT,SAAS;AAAA,UACT,cAAc;AAAA,UACd,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,WAAW,QAAQ,QAAQ;AAAA,UAE3B,iBAAiB;AAAA,YACf,UAAU;AAAA,YACV,MAAM,QAAQ,SAAS;AAAA,YACvB,OAAO,QAAQ,YAAY;AAAA,YAE3B,gBAAgB;AAAA,cACd,SAAS;AAAA,cACT,OAAO;AAAA,cACP,YAAY,OAAO,OAAO,MAAM;AAAA,cAChC,kBAAkB;AAAA,cAClB,oBAAoB;AAAA,YAAA;AAAA,UACtB;AAAA,UAGF,eAAe;AAAA,YACb,OAAO;AAAA,YACP,YAAY;AAAA,YACZ,QAAQ,cAAa,aAAQ,UAAR,mBAAe,UAAU,IAAI;AAAA,YAClD,kBAAiB,aAAQ,UAAR,mBAAe,UAAU;AAAA,YAC1C,cAAc;AAAA,YACd,SAAS;AAAA,YACT,aAAa,QAAQ,WAAW;AAAA,YAChC,cAAc,QAAQ,SAAS;AAAA,YAC/B,UAAU;AAAA,YACV,WAAW,QAAQ,QAAQ;AAAA,YAC3B,WAAW,QAAQ,UAAU;AAAA,YAE7B,UAAU;AAAA,cACR,QAAQ,cAAa,aAAQ,UAAR,mBAAe,UAAU,IAAI;AAAA,YAAA;AAAA,YAGpD,UAAU;AAAA,cACR,QAAQ,cAAa,aAAQ,UAAR,mBAAe,QAAQ,IAAI;AAAA,YAAA;AAAA,UAClD;AAAA,QACF;AAAA,QAGF,YAAY;AAAA,UACV,UAAU;AAAA,UACV,WAAW,QAAQ,QAAQ;AAAA,UAC3B,WAAW,QAAQ,UAAU;AAAA,UAE7B,cAAc;AAAA,YACZ,UAAU;AAAA,YACV,UAAU;AAAA,YACV,OAAO,QAAQ,SAAS;AAAA,YACxB,MAAM,QAAQ,WAAW;AAAA,UAAA;AAAA,QAC3B;AAAA,MACF;AAAA,IACF;AAAA,EAEJ;AAAA,CAAE;AAkBF,SAAS,mBAAmB;AAC1B,MAAI,UAAU;AAEd,QAAM,mBAAmB,MAAM;AAC7B,QAAI,CAAC,YAAY,CAAC,MAAO;AACzB,UAAM,OAAO,MAAM,sBAAA;AAEnB,aAAS,MAAM,WAAW;AAC1B,aAAS,MAAM,MAAM,KAAK,SAAS;AACnC,aAAS,MAAM,OAAO,KAAK,OAAO;AAClC,aAAS,MAAM,SAAS;AAAA,EAC1B;AAEA,WAAS,iBAAiB,SAAS,MAAM;AACvC,eAAW,SAAS,cAAc,gCAAgC;AAClE,YAAQ,SAAS,cAAc,wBAAwB;AAEvD,QAAI,YAAY,SAAS,CAAC,SAAS,KAAK,SAAS,QAAQ,GAAG;AAC1D,eAAS,KAAK,YAAY,QAAQ;AAAA,IACpC;AAEA,qBAAA;AAAA,EACF,CAAC;AAGD,SAAO,iBAAiB,UAAU,kBAAkB,IAAI;AACxD,SAAO,iBAAiB,UAAU,gBAAgB;AACpD;AAGA,MAAM,oBAAoBA,SAAO,KAAK,EAAE,OAAO;AAAA,EAC7C,WAAW;AACb,EAAE;AAEF,MAAM,aAAa,KAAK,CAAC;AAAA,EACvB;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,GAAG;AACL,MAAmB;AACjB,QAAM,EAAE,MAAA,IAAU,YAAA;AAElB,YAAU,MAAM;AACd,QAAI,iBAAiB;AACnB,uBAAgC;AAAA,IAClC;AAAA,EACF,GAAG,CAAC,eAAe,CAAC;AAEpB,YAAU,MAAM;AACd,QAAI,OAAO,wBAAwB,YAAY;AAC7C,iEAAsB,EAAE,UAAU;IACpC;AAAA,EACF,GAAG,CAAA,CAAE;AAEL,SACE,qBAAA,UAAA,EACE,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,QAAO;AAAA,QACP,IAAI;AAAA,QACJ,OAAO,QAAQ,oBAAoB;AAAA,QACnC,iBAAe;AAAA,QACf,aAAW;AAAA,QAEV,UAAA;AAAA,UAAA;AAAA,UAAM;AAAA,UAAE,YAAY,oBAAC,QAAA,EAAK,WAAU,gBAAe,UAAA,IAAA,CAAC;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAEvD;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,mBAAmB,SAAS;AAAA,QAC5B;AAAA,QACA,cAAc;AAAA,QACd,cAAY;AAAA,QACZ,mBAAkB;AAAA,QAClB,SAAS,CAAC;AAAA,QACV,SAAS;AAAA,QACT,gBAAe;AAAA,QACf,YAAY;AAAA,UACV;AAAA,UACA;AAAA,QAAA;AAAA,QAEF;AAAA,QACA,OAAO,kBAAiB,6BAAM;AAAA,QAC9B,UAAU,CAAC,OAAO,YAAY;AAC5B,qEAAsB;AACtB,+CAAW;AAAA,QACb;AAAA,QACA;AAAA,MAAA;AAAA,IAAA;AAAA,IAED,kCACE,mBAAA,EACC,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAO,QAAQ,oBAAoB;AAAA,QAElC,UAAA;AAAA,MAAA;AAAA,IAAA,EACH,CACF;AAAA,EAAA,GAEJ;AAEJ,CAAC;AClPD,MAAM,eAAe,KAAK,CAAC,UAAe;AACxC,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS,MAAM;AAAA,MACf,MAAM,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,MAC3C,QAAQ,CAAC,EAAE,OAAM,iBAAW;;AAC1B;AAAA,UAAC;AAAA,UAAA;AAAA,YACE,GAAG;AAAA,YACJ,cAAc,MAAM;AAAA,YACpB,UAAU,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,YAC/C,OAAO,MAAM;AAAA,YACb,UAAU,MAAM,aAAa,YAAY,QAAQ,MAAM;AAAA,YACvD,aAAa,MAAM;AAAA,YACnB,eAAe,MAAM;AAAA,YACrB,UAAU,CAAC,QAAQ,MAAM,SAAS,GAAG;AAAA,YACrC,OAAO,SAAQ,gBAAW,UAAX,mBAAkB,OAAO;AAAA,YACxC,UAAU,MAAM;AAAA,YAChB,cAAY,gBAAW,UAAX,mBAAkB,YAAW;AAAA,YACzC,qBAAqB,MAAM;AAAA,UAAA;AAAA,QAAA;AAAA;AAAA,IAC7B;AAAA,EAAA;AAIR,CAAC;AAED,aAAa,YAAY;AAAA,EACvB,aAAa,UAAU,MAAM;AAAA,IAC3B,UAAU,UAAU,KAAK;AAAA,IACzB,UAAU,UAAU;AAAA,EAAA,CACrB,EAAE;AAAA,EACH,MAAM,UAAU,OAAO;AAAA,EACvB,OAAO,UAAU,OAAO;AAAA,EACxB,gBAAgB,UAAU;AAAA,EAC1B,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,aAAa,UAAU;AAAA,EACvB,eAAe,UAAU;AAAA,EACzB,MAAM,UAAU;AAAA,EAChB,aAAa,UAAU;AAAA,EACvB,UAAU,UAAU;AAAA,EACpB,qBAAqB,UAAU;AACjC;ACpBA,MAAM,mBAAmBA,SAAOK,gBAAI,EAAE,CAAC,EAAE,OAAO,EAAE,QAAA,QAAU;;AAAO;AAAA,IAClE,4BAA4B;AAAA,MAC3B,SAAS;AAAA,MACT,QAAO,aAAQ,UAAR,mBAAe,UAAU;AAAA,MAChC,cAAc;AAAA,QACb,cAAa,aAAQ,UAAR,mBAAe,UAAU;AAAA,MAAG;AAAA,MAE1C,oBAAoB;AAAA,QACnB,cAAa,aAAQ,UAAR,mBAAe,UAAU;AAAA,MAAG;AAAA,MAE1C,0BAA0B;AAAA,QACzB,aAAa;AAAA,QACb,aAAa;AAAA,QACb,cAAa,aAAQ,UAAR,mBAAe,QAAQ;AAAA,MAAG;AAAA,MAExC,wBAAwB;AAAA,QACvB,cAAa,aAAQ,UAAR,mBAAe,MAAM;AAAA,MAAG;AAAA,MAEtC,kBAAkB;AAAA,QACjB,aAAY,aAAQ,UAAR,mBAAe,UAAU;AAAA,QACrC,QAAO,aAAQ,UAAR,mBAAe,UAAU;AAAA,MAAG;AAAA,MAEpC,sCAAsC;AAAA,QACrC,QAAO,aAAQ,UAAR,mBAAe,UAAU;AAAA,QAChC,SAAS;AAAA,MAAA;AAAA,IACV;AAAA,IAED,6BAA6B;AAAA,MAC5B,YAAY;AAAA,MACZ,QAAO,aAAQ,UAAR,mBAAe,UAAU;AAAA,MAChC,eAAe;AAAA,QACd,QAAO,aAAQ,UAAR,mBAAe,MAAM;AAAA,MAAG;AAAA,IAChC;AAAA,IAED,yBAAyB;AAAA,MACxB,aAAa;AAAA,IAAA;AAAA,IAEd,8CAA8C;AAAA,MAC7C,YAAY;AAAA,IAAA;AAAA,EAEd;AAAA,CAAE;AAEF,MAAM,iBAAiB,CAAC,UAA2B;AAClD,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,qBAAqB;AAAA,IACrB;AAAA,IACA,WAAW;AAAA,IACX,mBAAmB;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,IACA;AAEJ,SACC,qBAAC,sBAAA,EAAqB,aAAa,cACjC,UAAA;AAAA,IAAA,SACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,MAAK;AAAA,QACL,QAAO;AAAA,QACP,IAAI;AAAA,QACJ,OAAO,QAAQ,oBAAoB;AAAA,QACnC,iBAAe;AAAA,QACf,aAAW;AAAA,QACV,UAAA;AAAA,UAAA;AAAA,UAAM;AAAA,UAAE,YAAY,oBAAC,QAAA,EAAK,WAAU,gBAAe,UAAA,IAAA,CAAC;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGvD;AAAA,MAAC;AAAA,MAAA;AAAA,QACA;AAAA,QACA,eAAe;AAAA,QACf,aAAa;AAAA,QACb,WAAW;AAAA,UACV,WAAW;AAAA,YACV;AAAA,YACA;AAAA,YACA,aAAa,eAAe;AAAA,YAC5B,GAAG;AAAA;AAAA,UAAA;AAAA,QAEJ;AAAA,QAED,QAAQ,UAAU;AAAA,QAClB,OAAO,EAAE,gBAAgBR,OAAK,aAAA;AAAA,QAC7B,GAAG;AAAA,QACJ,cAAc,eAAe,MAAM,YAAY,IAAI;AAAA,QACnD,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACX,GACD;AAEF;ACnGA,MAAM,cAAc,KAAK,CAAC,UAA4B;AACpD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,IACD;AAEJ,QAAM,sBAAsB,OAAO,OAAO,EAAE;AAAA,IAC1C,MAAM;AAAA,IACN,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,OAAO;AAAA,EAAA,CACR;AAGD,QAAM,eAAe,OAAO,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,QAAA,QAAU;;AAAO;AAAA,MAC/D,cAAc;AAAA,MACd,wBAAwB;AAAA,QACtB,QAAO,aAAQ,UAAR,mBAAe,QAAQ;AAAA,MAAI;AAAA,MAEpC,kBAAkB;AAAA,QAChB,aAAY,aAAQ,UAAR,mBAAe,UAAU;AAAA,QACrC,QAAO,aAAQ,UAAR,mBAAe,UAAU;AAAA,QAChC,aAAa;AAAA,QACb,aAAa;AAAA,QACb,cAAa,aAAQ,UAAR,mBAAe,UAAU;AAAA,MAAG;AAAA,IAC3C;AAAA,GACA;AAEF,QAAM,oBAAoB;AAAA,IACxB;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA,EAAA;AAEF,QAAM,mBAAmB;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA,EAAA;AAGF,QAAM,kBAAkB,CAAC,SAAc;AACrC,QAAI,SAAS,SAAS;AACpB,aAAO,kBAAkB,SAAS,KAAK,IAAI;AAAA,IAC7C,WAAW,SAAS,QAAQ;AAC1B,aAAO,iBAAiB,SAAS,KAAK,IAAI;AAAA,IAC5C;AAAA,EACF;AAGA,QAAM,eAAe,CAAC,MAAW;;AAC/B,UAAM,QAAQ,CAAC,GAAG,EAAE,OAAO,KAAK;AAChC,UAAM,kBAAiB,WAAM,IAAI,CAAA,SAAQ;AACvC,UAAI,QAAQ,KAAK,QAAQ,WAAW,OAAO,MAAM;AAC/C,YAAI,gBAAgB,IAAI,GAAG;AACzB,iBAAO;AAAA,QACT,OAAO;AACL,0BAAgB,yBAAyB,KAAK,IAAI,qCAAqC,EAAE,SAAS,SAAS;AAC3G,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,CAAC,MATsB,mBASnB,OAAO;AACX,aAAS,YAAY,+BAAO,UAAS,CAAC,GAAG,OAAO,GAAG,cAAc,IAAI,iBAAkB,eAAe,CAAC,CAAC;AAAA,EAC1G;AAEA,QAAMsB,eAAc,CAAC,SAAS;AAC5B,QAAI,CAAC,KAAM,QAAO;AAClB,QAAI,gBAAgB,MAAM;AACxB,aAAO,KAAK;AAAA,IACd,WAAU,OAAO,SAAS,UAAU;AAClC,YAAM,QAAQ,6BAAM,MAAM;AAC1B,aAAO,gCAAQ,+BAAO,UAAS;AAAA,IACjC,WAAU,MAAM,QAAQ,IAAI,MAAK,6BAAM,UAAS,GAAG;AACjD,aAAO,KAAK,IAAI,CAAA,MAAK;AACnB,cAAM,QAAQ,uBAAG,MAAM;AACvB,eAAO,gCAAQ,+BAAO,UAAS;AAAA,MACjC,CAAC,EAAE,KAAK,IAAI;AAAA,IACd;AAAA,EACF;AAiBA,QAAM,mBAAmB,CAAC,UAAe;AAEvC,QAAI,OAAO;AACT,UAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,eAAO,MAAM,IAAI,CAAA,SACf,qBAAC,KAAA,EAAI,SAAQ,QAAO,KAAK,GAAG,IAAI,GAAG,YAAW,UAC3C,UAAA;AAAA,UAAA,SAAS,UAAU,oBAAC,UAAA,EAAS,UAAS,SAAQ;AAAA,UAE/C;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,QAAO;AAAA,cACP,OAAO,QAAQ,oBAAoB;AAAA,cACnC,iBAAe;AAAA,cACf,aAAW;AAAA,cACX,QAAM;AAAA,cAEL,uBAAY,IAAI;AAAA,YAAA;AAAA,UAAA;AAAA,QACnB,EAAA,CACF,CACD;AAAA,MACH,OAAO;AACL,oCACG,KAAA,EAAI,SAAQ,QAAO,KAAK,GAAG,YAAW,UACpC,UAAA;AAAA,UAAA,SAAS,UAAU,oBAAC,UAAA,EAAS,UAAS,SAAQ;AAAA,UAE/C;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,QAAQ;AAAA,cACR,OAAO,QAAQ,oBAAoB;AAAA,cACnC,iBAAe;AAAA,cACf,aAAW;AAAA,cACX,QAAM;AAAA,cAEL,uBAAY,KAAK;AAAA,YAAA;AAAA,UAAA;AAAA,QACpB,GACF;AAAA,MAEJ;AAAA,IACF;AAAA,EACF;AAaA,SACE,qBAAA,UAAA,EACE,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,QAAQ;AAAA,QACR,IAAI;AAAA,QACJ,OAAO,QAAQ,oBAAoB;AAAA,QACnC,iBAAe;AAAA,QACf,aAAW;AAAA,QAEV,UAAA;AAAA,UAAA;AAAA,UAAM;AAAA,UAAE,YAAY;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,wBAEtB,OAAA,EAAI,OAAO,EAAE,SAAS,UACrB,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,WACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAK,SAAS,UAAUtB,OAAK,cAAcA,OAAK;AAAA,UAAA;AAAA,QAAA;AAAA,QAGpD,SAAQ;AAAA,QACR;AAAA,QAEA,UAAA;AAAA,UAAA,oBAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAAuB,UAAA,SAAA,CAAM;AAAA,UACzE;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,QAAQ,SAAS,SAAS,iBAAiB,KAAK,GAAG,IAAK,SAAS,UAAU,kBAAkB,KAAK,GAAG,IAAI;AAAA,cAEzG,UAAU;AAAA,cACV;AAAA,cACA;AAAA,cACC,GAAG;AAAA,YAAA;AAAA,UAAA;AAAA,QACN;AAAA,MAAA;AAAA,IAAA,GAEJ;AAAA,IACC,iBAAiB,KAAK;AAAA,EAAA,GAEzB;AAEJ,CAAC;AC7ND,MAAM,mBAAgD,CAAC;AAAA;AAAA,EAEtD;AAAA,EACA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA,EACA,kBAAAuB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAAM;;AAEL,QAAM,CAAC,YAAY,aAAa,IAAI,SAAA;AACpC,QAAM,CAAC,cAAc,eAAe,IAAI,SAAc,KAAK;AAC3D,QAAM,eAAe,OAAO,IAAI;AAEhC,QAAM,WAAW,IACf,YAAA,EACA,IAAI,CAACC,SAAaA,KAAI,OAAO,SAAS,EACtC;AAAA,IACA,CAACA,UACAA,6BAAK,mBAAkB,WAAaA,6BAAK,mBAAkB;AAAA,EAAA;AAG9D,QAAM,cAAc,IAAI;AACxB,QAAM,oBAAkB,YAAO,cAAP,mBAAkB,mBAAkB,CAAA;AAG5D,MAAI,eAAe;AACnB,MAAI,mDAAiB,SAAS;AAC7B,QAAI,OAAO,gBAAgB,YAAY,YAAY;AAClD,qBAAe,QAAQ,mDAAiB,QAAQ,KAAK,IAAI,aAAa;AAAA,IACvE,OAAO;AACN,qBAAe,QAAQ,gBAAgB,OAAO;AAAA,IAC/C;AAAA,EACD;AAEA,QAAM,qBAAqB,YAAY,OAAOC,MAAK,WAAW;AAE7D,QAAI;AACH,UAAI,OAAO,gBAAgB,kBAAkB,YAAY;AACxD,cAAM,SAAS,MAAM,gBAAgB,cAAcA,MAAK,MAAM;AAC9D,qBAAa,UAAU;AACvB,eAAO;AAAA,MACR,OAAO;AACN,qBAAa,UAAU,mDAAiB;AAAA,MACzC;AAAA,IACD,SAAS,OAAO;AACf,aAAO;AAAA,IACR;AAAA,EAED,GAAG,CAAC,iBAAiB,KAAK,IAAI,YAAY,CAAC;AAG3C,YAAU,MAAM;AACf,uBAAmB,KAAK,IAAI,YAAY;AAAA,EACzC,GAAG,CAAC,oBAAoB,KAAK,IAAI,YAAY,CAAC;AAE9C,QAAM,WAAW,mDAAiB;AAClC,MAAI,eAAoB;AAExB,MAAI,gBAAgB,aAAY,mDAAiB,cAAa;AAC7D,mBAAe,WAAW,EAAE,IAAI,IAAI,UAAU,UAAU,CAAA,CAAE,IAAI,CAAA;AAAA,EAC/D,OAAO;AACN,mBAAe,WACZ,EAAE,IAAI,IAAI,UAAU,UAAU,IAAI,SAAS,OAAO,EAAE,CAAC,IACrD,IAAI,SAAS,OAAO,EAAE;AAAA,EAC1B;AAGA,QAAM,WAAW,OAAO,UAAe;AACtC,QAAI;AAEH,YAAMF,kBAAiB;AAAA,QACtB,OAAO;AAAA,QACP;AAAA,UACC,CAAC,OAAO,EAAE,GAAG;AAAA,QAAA;AAAA,QAEd;AAAA,UACC,YAAY;AAAA,QAAA;AAAA,MACb;AAGD,YAAM,KAAU,CAAA;AAChB,iBAAW,KAAK,QAAQ;AACvB,YAAI,KAAK,OAAO,IAAI;AACnB,aAAG,CAAC,IAAI,OAAO,CAAC;AAAA,QACjB;AAAA,MACD;AACA,0BAAoB,EAAE;AAAA,IAEvB,SAAS,KAAK;AACb,UAAI,eAAeG,IAAI,iBAAiB;AACvC,cAAM,IAA4B,CAAA;AAClC,YAAI,MAAM,QAAQ,CAAC,UAAU;AAC5B,cAAI,MAAM,MAAM;AACf,cAAE,MAAM,IAAI,IAAI,MAAM;AAAA,UACvB;AAAA,QACD,CAAC;AACD,cAAM,KAAK,EAAE,GAAG,QAAQ,GAAG,EAAA;AAC3B,4BAAoB,EAAE;AAAA,MACvB;AAAA,IACD;AAAA,EACD;AAKA,QAAM,WAAW,OAAO,GAAQ,MAAc,iBAAsB;AACnE,UAAM,OAAO;AACb,QAAI;AACJ,YAAQ,MAAA;AAAA,MACP,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACJ,gBAAQ;AAER;AAAA,MACD,KAAK;AAAA,MACL,KAAK;AACJ,gBAAQ,EAAE,OAAO;AAEjB;AAAA,MACD,KAAK;AACJ,gBAAQ,EAAE,OAAO;AAEjB;AAAA,MACD;AACC,gBAAQ,EAAE,OAAO;AACjB;AAAA,IAAA;AAEF,kBAAc,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,GAAG,OAAO;AAEnD,QAAI,kBAAkB;AACrB,YAAM,IAAI,MAAM,iBAAiB,GAAG,MAAM,KAAK,KAAK,IAAI;AACxD,UAAI,GAAG;AACN,YAAI,eAAe,EAAE,GAAG,IAAI,cAAc,GAAG,EAAA;AAC7C,sBAAc,EAAE,GAAG,YAAY,GAAG,GAAG;AAAA,MACtC;AAAA,IACD;AACA,kBAAc,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,GAAG,OAAO;AACnD,QAAI,eAAe,EAAE,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,GAAG,MAAA;AAEvD,UAAM,SAAS,KAAK;AAAA,EACrB;AAEA,YAAU,MAAM;AACf,kBAAc,EAAE,GAAG,YAAY,GAAG,IAAI,cAAc;AAAA,EAErD,GAAG,CAAC,IAAI,YAAY,CAAC;AAErB,YAAU,MAAM;AACf,QAAI,CAAC,cAAc;AAClB,YAAM,aAAa,OAAO,KAAK,IAAI,gBAAgB,CAAA,CAAE;AACrD,YAAM,UAAe,CAAA;AAErB,UAAI,YAAA,EAAc,QAAQ,CAAC,SAAS;;AACnC,cACCT,MAAA,KAAK,OAAO,cAAZ,gBAAAA,IAAuB,mBAAkB,YACzCU,MAAA,KAAK,OAAO,cAAZ,gBAAAA,IAAuB,mBAAkB,MACxC;AACD,gBAAM,EAAE,aAAa,UAAAC,UAAAA,MACpBC,MAAA,KAAK,OAAO,cAAZ,gBAAAA,IAAuB,mBAAkB,CAAA;AAC1C,cAAI,WAAW,SAAS,KAAK,OAAO,EAAE,GAAG;AACxC,kBAAM,KAAK,EAAE,IAAI,IAAI,UAAUD,SAAQ;AACvC,gBAAI,gBAAgB,YAAY,aAAa;AAC5C,sBAAQ,KAAK,OAAO,EAAE,IAAI,KACvB,MAAM,QAAQ,EAAE,IACf,KACA,CAAC,EAAE,IACJ,CAAA;AAAA,YACJ,WAAW,gBAAgB,UAAU,gBAAgB,aAAa;AACjE,sBAAQ,KAAK,OAAO,EAAE,IAAI,KACvB,MAAM,EAAE,EAAE,QAAA,IACT,MAAM,EAAE,IACR,SACD,MAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC,EAAE,QAAA,IACnC,MAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC,IAClC;AAAA,YACL,OAAO;AACN,sBAAQ,KAAK,OAAO,EAAE,IAAI,EAAE;AAAA,gBAC3B,IAAI;AAAA,gBACJA;AAAAA,gBACA,IAAI,SAAS,KAAK,OAAO,EAAE;AAAA,cAAA;AAAA,YAE7B;AAAA,UACD;AAAA,QACD;AAAA,MACD,CAAC;AAED,UAAI,eAAe;AACnB,oBAAc,OAAO;AACrB,sBAAgB,IAAI;AAAA,IACrB;AAAA,EACD,GAAG,CAAC,KAAK,aAAa,YAAY,CAAC;AAEnC,QAAM,gBAAgB,CAAC,UAAU,OAAO,SAAS,aAAa,MAAM,GAAG,IAAI;AAE3E,SACC,qBAAA,UAAA,EACG,UAAA;AAAA,KAAA,CAAC,eAAe,gBAAgB,aACjC;AAAA,MAAC;AAAA,MAAA;AAAA,QACA;AAAA,QAGA,UAAU,CAAC,MAAM,SAAS,GAAG,WAAW;AAAA,QACxC,OAAO,yCAAa,OAAO;AAAA,QAC3B,aAAW,0CAAW,OAAX,mBAAe,iBAAgB,OAAO;AAAA,QACjD,MAAM,eAAe;AAAA,QACrB,QAAO,iCAAS,OAAO,OAAM,OAAO;AAAA,QACpC,YAAY,iCAAS,OAAO;AAAA,QAC5B,cAAa,mDAAiB,gBAAe;AAAA,QAC7C,OAAM,mDAAiB,eAAc;AAAA,QACrC,UAAU;AAAA,MAAA;AAAA,IAAA;AAAA,IAGX,gBAAgB,YAChB,qBAAC,KAAA,EAAI,SAAQ,QAAO,eAAc,UAAS,OAAM,QAChD,UAAA;AAAA,MAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,OAAM,mDAAiB,eAAc;AAAA,UACrC;AAAA,UACA,cAAa,mDAAiB,gBAAe;AAAA,UAC7C,mBAAmB,UAAU,IAAI,MAAM;AAAA,UACvC,UAAU,CAAC,GAAGH,SAAQ,SAAS,GAAG,UAAUA,IAAG;AAAA,UAC/C,SAAS,mDAAiB;AAAA,UAC1B,aAAW,0CAAW,OAAX,mBAAe,iBAAgB,OAAO;AAAA,UACjD,SAAS,2BAAK;AAAA,UACd,eAAe,aAAa;AAAA,UAC5B,WAAW,mDAAiB;AAAA,UAC5B,UAAU,mDAAiB;AAAA,UAC3B,UAAU,mDAAiB;AAAA,UAC3B,YAAY,gBAAgB;AAAA,UAC5B,aAAY,mDAAiB,eAAc,EAAC,mDAAiB;AAAA,UAC7D,UAAU,mDAAiB;AAAA,UAC3B,QACC,mDAAiB,eACd,MAAM,QAAQ,yCAAa,OAAO,GAAG,IACpC,yCAAa,OAAO,MACpB,CAAA,IACD,yCAAa,OAAO;AAAA,UAExB,iBAAiB,CAACA,SAAQ,gBAAgB,mDAAiB,YAAYA,IAAG;AAAA,QAAA;AAAA,MAAA;AAAA,OAG1E,iCAAS,OAAO,QAChB,oBAAC,YAAA,EAAW,OAAM,mBAAkB,MAAK,MACvC,UAAA,iCAAS,OAAO,IAAE,CACpB;AAAA,IAAA,GAEF;AAAA,IAEA,gBAAgB,UAChB;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,OAAM,mDAAiB,eAAc;AAAA,QACrC;AAAA,QACA,UAAU,CAAC,MAAM,SAAS,GAAG,MAAM;AAAA,QACnC,gBAAgB;AAAA,UACf,aAAW,0CAAW,OAAX,mBAAe,iBAAgB,OAAO;AAAA,QAAA;AAAA,QAElD,QAAO,iCAAS,OAAO,OAAM,OAAO;AAAA,QACpC,YAAY,iCAAS,OAAO;AAAA,QAC5B,QAAQ,mDAAiB;AAAA,QACzB,cACC,mDAAiB,iBAAe,mDAAiB;AAAA,QAElD,OACC,MAAM,IAAI,aAAa,OAAO,EAAE,CAAC,EAAE,QAAA,IAChC,MAAM,IAAI,aAAa,OAAO,EAAE,CAAC,IACjC;AAAA,QAEJ,UAAU;AAAA,QACV,SAAS,MAAM,cAAc,mDAAiB,QAAQ;AAAA,QACtD,SAAS,MAAM,cAAc,mDAAiB,QAAQ;AAAA,MAAA;AAAA,IAAA;AAAA,IAGvD,gBAAgB,eAChB;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,OAAM,mDAAiB,eAAc;AAAA,QACrC;AAAA,QACA,UAAU,CAAC,MAAM,SAAS,GAAG,MAAM;AAAA,QACnC,gBAAgB;AAAA,UACf,aAAW,0CAAW,OAAX,mBAAe,iBAAgB,OAAO;AAAA,QAAA;AAAA,QAElD,QAAO,iCAAS,OAAO,OAAM,OAAO;AAAA,QACpC,YAAY,iCAAS,OAAO;AAAA,QAC5B,QAAQ,mDAAiB;AAAA,QACzB,cACC,mDAAiB,iBAAe,mDAAiB;AAAA,QAElD,OACC,MAAM,IAAI,aAAa,OAAO,EAAE,CAAC,EAAE,QAAA,IAChC,MAAM,IAAI,aAAa,OAAO,EAAE,CAAC,IACjC;AAAA,QAEJ,UAAU;AAAA,MAAA;AAAA,IAAA;AAAA,KAGV,gBAAgB,UAAU,gBAAgB,iCAC1C,KAAA,EAAI,SAAQ,QAAO,eAAc,UACjC,UAAA;AAAA,MAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,OAAM,mDAAiB,eAAc;AAAA,UACrC,cAAc;AAAA,UACd,UAAS;AAAA,UACT,OAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,UACV,UAAU,CAAC,MAAM,SAAS,GAAG,MAAM;AAAA,UACnC,QAAO,iCAAS,OAAO,OAAM,OAAO;AAAA,UACpC,UAAU,QAAQ,iCAAQ,WAAW;AAAA,UACrC,OAAO,IAAI,aAAa,OAAO,EAAE;AAAA,QAAA;AAAA,MAAA;AAAA,OAEjC,iCAAS,OAAO,QAChB,oBAAC,YAAA,EAAW,OAAM,mBAAkB,MAAK,MACvC,UAAA,iCAAS,OAAO,IAAE,CACpB;AAAA,IAAA,GAEF;AAAA,IAEA,gBAAgB,WAChB;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,OAAM,mDAAiB,eAAc;AAAA,QACrC,eAAe;AAAA,QACf,UAAU,CAAC,MAAM,SAAS,GAAG,OAAO;AAAA,QACpC,gBAAgB;AAAA,UACf,aAAW,0CAAW,OAAX,mBAAe,iBAAgB,OAAO;AAAA,QAAA;AAAA,QAElD,QAAO,iCAAS,OAAO,OAAM,OAAO;AAAA,QACpC,YAAY,iCAAS,OAAO;AAAA,QAC5B,QAAQ,mDAAiB;AAAA,QACzB,cACC,mDAAiB,iBAAe,mDAAiB;AAAA,QAElD,QAAO,SAAI,iBAAJ,mBAAmB,OAAO;AAAA,QACjC,UAAU;AAAA,QACV,iBAAiB;AAAA,MAAA;AAAA,IAAA;AAAA,IAGlB,gBAAgB,cAChB;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,OAAM,mDAAiB,eAAc;AAAA,QACrC,gBAAgB,QAAQ,YAAY;AAAA,QAEpC,UAAU,CAAC,MAAM,SAAS,GAAG,UAAU;AAAA,QACvC,QAAO,iCAAS,OAAO,OAAM,OAAO;AAAA,QACpC,YAAY,iCAAS,OAAO;AAAA,QAC5B,QAAQ,mDAAiB;AAAA,QACzB,cACC,mDAAiB,iBAAe,mDAAiB;AAAA,QAElD,QAAO,SAAI,iBAAJ,mBAAmB,OAAO;AAAA,QACjC,UAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACX,GAEF;AAEF;ACnNA,MAAM,eAAe,OAAO,KAAK;AAAA,EAChC,mBAAmB,CAAC,SAAS,SAAS;AACvC,CAAC,EAAkC,CAAC,EAAE,OAAO,EAAE,QAAA,GAAW,uBAAiB;;AAAO;AAAA,IACjF,sBAAsB;AAAA,MACrB,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA;AAAA,IASZ,sBAAsB;AAAA,MACrB,kBAAiB,aAAQ,UAAR,mBAAe,UAAU;AAAA,IAAG;AAAA,IAE9C,2BAA2B;AAAA,MAC1B,GAAI,CAAC,oBAAoB,EAAE,WAAW,iDAAA;AAAA,IAAiD;AAAA,IAGxF,kBAAkB;AAAA,MACjB,WAAW;AAAA,IAAA;AAAA,IAGZ,2BAA2B;AAAA,MAC1B,kBAAkB;AAAA,QACjB,kBAAiB,wCAAS,UAAT,mBAAgB,QAAQ;AAAA,QACzC,OAAO;AAAA,MAAA;AAAA,IACR;AAAA,IAED,qBAAqB;AAAA,MACpB,kBAAkB;AAAA,QACjB,iBAAiB,IAAG,wCAAS,UAAT,mBAAgB,QAAQ,IAAI;AAAA,QAChD,OAAO;AAAA,MAAA;AAAA,IACR;AAAA,IAED,8BAA8B;AAAA,MAC7B,OAAO,IAAG,wCAAS,UAAT,mBAAgB,QAAQ,IAAI;AAAA,MACtC,SAAS;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,MAAA;AAAA,IACR;AAAA,EAEF;AAAA,CAAE;AAEK,MAAM,gBAAgBT,eAAM,KAAK,CAAC;AAAA,EACxC,mBAAmB;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc,CAAC,gBAAgB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,2BAA2B,CAAA;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,uBAAuB;AAAA,EACvB,iBAAiB,CAAA;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA,kCAAkC;AAAA,EAClC,uBAAuB;AAAA,EACvB,oBAAoB;AAAA,EACpB,uBAAuB,MAAM;AAAA,EAAE;AAAA,EAC/B,cAAc,CAAA;AAAA,EACd,mBAAmB;AAAA,EACnB,cAAc;AAAA,EACd,gBAAgB,MAAM;AAAA,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA,EAKxB,GAAG;AACJ,MAA8B;AAC7B,QAAM,EAAE,EAAA,IAAM,eAAA;AACd,QAAM,EAAE,WAAW,MAAM,gBAAgB,YAAY,MAAA,IAAU,SAAA;AAC/D,QAAM,aAAa,YAAuB,KAAK;AAC/C,QAAM,EAAE,WAAW;AACnB,QAAM,CAAC,KAAK,MAAM,IAAI,SAAS,CAAA,CAAE;AACjC,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,OAAO;AACxD,QAAM,CAAC,UAAU,WAAW,IAAI,SAA6B,IAAI;AACjE,QAAM,CAAC,WAAW,YAAY,IAAI,SAAkB,KAAK;AACzD,QAAM,CAAC,aAAa,cAAc,IAAI,SAA6B,IAAI;AACvE,QAAM,iBAAiB,aAAa,OAAO,CAAC,WAAgB,OAAO,OAAO;AAC1E,QAAM,gBAAgB,aAAa,OAAO,CAAC,WAAgB,CAAC,OAAO,OAAO;AAC1E,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAS,aAAa;AACpE,QAAM,CAAC,aAAa,cAAc,IAAI,SAAwB,IAAI;AAClE,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAAc,CAAA,CAAE;AAChE,QAAM,CAACO,mBAAkB,mBAAmB,IAAI,SAAc,CAAA,CAAE;AAChE,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAkB,KAAK;AACjE,QAAM,CAAC,cAAc,eAAe,IAAI,SAAkB,KAAK;AAC/D,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAkB,KAAK;AACjE,QAAM,CAAC,aAAa,cAAc,IAAI,SAAc,IAAI;AACxD,QAAM,CAAC,cAAc,eAAe,IAAI,SAAgC,CAAA,CAAE;AAC1E,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,QAAM,CAAC,SAAS,UAAU,IAAI,SAA2B,CAAA,CAAE;AAC3D,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAS,KAAK;AAC5D,QAAM,CAAC,cAAc,eAAe,IAAI,SAAgC,WAAW,YAAY;AAC/F,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAAoC;AAAA,IACnF,mBAAmB,CAAA;AAAA,IACnB,aAAa;AAAA,IACb,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,aAAa;AAAA,IACb,WAAW;AAAA,EAAA,CACX;AAED,QAAM,WAAW,YAAA;AACjB,QAAM,gBAAgB,SAAS,SAAS,MAAM,GAAG,EAAE,CAAC;AAEpD,MAAI,kBAAkB;AACtB,UAAQ,eAAA;AAAA,IACP,KAAK;AACJ,wBAAkB,mBAAmB;AACrC;AAAA,IACD,KAAK;AACJ,wBAAkB,kBAAkB;AACpC;AAAA,IACD,KAAK;AAEJ,wBAAkB,sBAAsB;AACxC;AAAA,IACD,KAAK;AACJ,wBAAkB,iBAAiB;AACnC;AAAA,IACD,KAAK;AACJ,wBAAkB,YAAY;AAC9B;AAAA,IACD,KAAK;AACJ,wBAAkB,cAAc;AAChC;AAAA,IACD,KAAK;AACJ,wBAAkB,eAAe;AACjC;AAAA,IACD,KAAK;AACJ,wBAAkB,iBAAiB;AACnC;AAAA,EAAA;AAEF,QAAM,OAAO,cAAc,aAAa,GAAG,eAAe;AAC1D,QAAM,oBAAoB,CAAC,WAAgB;;AAC1C,YAAQ,OAAO,aAAA;AAAA,MACd,KAAK;AACJ,iBAAO,sCAAQ,mBAAR,mBAAwB,eAAcG,IAAI,MAAA,IAAUA,IAAI,OAAA;AAAA,MAEhE,KAAK;AACJ,eAAOA,IAAI,SAAS,SAAA,EAAW,UAAU,CAAC,OAAO,kBAAmB,kBAAkB,KAAK,OAAO,KAAM;AAAA,MAEzG,KAAK;AACJ,eAAOA,IACL,SACA;AAAA,UACA;AAAA,UACA,EAAE,oBAAoB,MAAM,SAAS,0BAAA;AAAA,QAA0B;AAAA,MAGlE;AACC,eAAOA,IAAI,OAAA;AAAA,IAAO;AAAA,EAErB;AAEA,QAAMI,qBAAoB,CACzB,aACA,YACA,WACI;;AACJ,QAAI,MAAM;AACV,YAAQ,WAAW,MAAA;AAAA,MAClB,KAAK;AACJ,cAAM,WAAW,QACd,YAAY,SAAS,WAAW,MAAM,EAAE,UAAU,WAAW,MAAM,MACnE,sCAAQ,mBAAR,mBAAwB,eACvB,YAAY,IAAI,GAAG,WAAW,MAAM,IACpC;AACJ;AAAA,MACD,KAAK;AACJ,cAAM,YAAY,IAAI,WAAW,OAAO,WAAW,MAAM;AACzD;AAAA,MACD,KAAK;AACJ,cAAM,YAAY,MAAM,WAAW,OAAO,WAAW,MAAM;AAC3D;AAAA,MACD,KAAK;AACJ,cAAM,YAAY,IAAI,WAAW,OAAO,WAAW,MAAM;AACzD;AAAA,MACD,KAAK;AACJ,cAAM,WAAW,UAAU,OAAO,YAAY,KAAK,sBAAsB,mCAAmC,CAAC,UAAU,CAAC,SAAS,SAAS,CAAC,IAAI;AAC/I;AAAA,MACD,KAAK;AACJ,eAAO,YAAY,KAAK,WAAW,UAAU;AAAA,UAC5C,IAAI,CAAC,QAAa,QAAQ,WAAW;AAAA,UACrC,MAAM,MAAA;;AACL,qBAAAb,MAAA,yCAAY,oBAAZ,gBAAAA,IAA6B;AAAA,cAC5B,CAACc,cAAkBC,gBAClBF,mBAAkBC,cAAaC,aAAY,MAAM;AAAA,cAClD;AAAA,kBACI;AAAA;AAAA,UACN,WAAW,MAAA;;AACV,qBAAAf,MAAA,yCAAY,yBAAZ,gBAAAA,IAAkC;AAAA,cACjC,CAACc,cAAkBC,gBAClBF,mBAAkBC,cAAaC,aAAY,MAAM;AAAA,cAClD;AAAA,kBACI;AAAA;AAAA,QAAA,CACN;AAAA,MAEF;AACC,cAAM;AACN;AAAA,IAAA;AAGF,QAAI,WAAW,QAAQ,cAAc,WAAW,UAAU,EAAC,iCAAQ,iBAAe,iCAAQ,gBAAe,SAAS;AACjH,YAAM,YAAY,KAAK,mBAAmB,8BAA8B,CAAC,UAAU;;AAClF,eAAO,WAASf,MAAA,MAAM,KAAA,MAAN,gBAAAA,IAAc,UAAS;AAAA,MACxC,CAAC;AAAA,IACF;AAEA,WAAO;AAAA,EAER;AAGA,QAAM,2BAA2B,CAACgB,aAAmB;AACpD,UAAM,SAAc,CAAA;AACpBA,aAAQ,QAAQ,CAAC,QAAQ;;AACxB,WAAI,sCAAK,mBAAL,mBAAqB,gBAArB,mBAAkC,QAAQ;AAC7C,cAAM,oBAAmB,gCAAK,mBAAL,mBAAqB,YAAY;AAAA,UACzD,CAAC,aAAkB,eAClBH,mBAAkB,aAAa,YAAY,GAAG;AAAA,UAC/C,kBAAkB,GAAG;AAAA;AAEtB,eAAO,IAAI,WAAW,IAAI;AAAA,MAC3B;AAAA,IACD,CAAC;AACD,WAAO;AAAA,EACR;AAEA,YAAU,MAAM;AACf,oBAAgB,OAAO;AAEvB,UAAM,SAAc,yBAAyB,OAAO;AACpD,wBAAoBJ,IAAI,OAAA,EAAS,MAAM,MAAM,CAAC;AAAA,EAE/C,GAAG,CAAC,OAAO,CAAC;AAEZ,YAAU,MAAM;AACf,QAAI,EAAC,qDAAkB,mBAAkB;AACxC,qBAAe,EAAE,cAAc,EAAE,GAAG,WAAW,cAAc,GAAG,aAAA,GAAgB;AAChF,mEAAuB;AAAA,IACxB;AAAA,EAED,GAAG,CAAC,qDAAkB,kBAAkB,YAAY,CAAC;AAErD,QAAM,oBAAoB,CAAC,UAAe;AACzC,gBAAY,MAAM,aAAa;AAAA,EAChC;AAEA,QAAM,oBAAoB,MAAM;AAC/B,gBAAY,IAAI;AAAA,EACjB;AAEA,QAAM,sBAAsB,CAAC,WAAgB;AAC5C,UAAM,iBAAiB,aAAa,IAAI,CAAC,SAAc;AAAA,MACtD,GAAG;AAAA,MACH,SAAS,IAAI,gBAAgB,OAAO,cAAc,QAAQ,IAAI;AAAA,IAAA,EAC7D;AACF,oBAAgB,cAAc;AAC9B,6DAAqB,KAAK,MAAM,KAAK,UAAU,cAAc,CAAC;AAC9D,uBAAmB,CAAC,GAAG,iBAAiB,MAAM,CAAC;AAC/C,gBAAY,IAAI;AAAA,EACjB;AAEA,QAAM,uBAAuB,MAAM;AAClC,iBAAa,IAAI;AAAA,EAClB;AAEA,QAAM,wBAAwB,MAAM;AACnC,iBAAa,KAAK;AAAA,EACnB;AAEA,QAAM,kBAAkB,CAAC,WAAgB;AACxC,UAAM,iBAAiB,aAAa,IAAI,CAAC,SAAc;AAAA,MACtD,GAAG;AAAA,MACH,SAAS,IAAI,gBAAgB,OAAO,cAAc,OAAO,IAAI;AAAA,IAAA,EAC5D;AACF,6DAAqB,KAAK,MAAM,KAAK,UAAU,cAAc,CAAC;AAC9D,oBAAgB,cAAc;AAE9B,UAAM,yBAAyB,gBAAgB;AAAA,MAC9C,CAAC,WAAgB,OAAO,gBAAgB,OAAO;AAAA,IAAA;AAEhD,uBAAmB,sBAAsB;AACzC,gBAAY,IAAI;AAChB,iBAAa,KAAK;AAAA,EACnB;AAEA,QAAM,oBAAoB,CAAC,gBAAwB;AAClD,UAAM,kBAAkB,cAAc;AAAA,MAAO,CAAC,WAC7C,OAAO,OAAO,cAAc,SAAS,YAAY,YAAA,CAAa;AAAA,IAAA;AAE/D,uBAAmB,eAAe;AAAA,EACnC;AAEA,QAAM,wBAAwB,MAAM;AACnC,aAAS,MAAM,EAAE,OAAO,SAAA,CAAU;AAClC,gBAAY,IAAI;AAChB,iBAAa,KAAK;AAAA,EACnB;AAEA,QAAM,iBAAiB,CAAC,UAAkB;AACzC,mBAAe,KAAK;AAAA,EACrB;AAEA,QAAM,qBAAqB,CAACD,SAAqB;AAChD,mDAAgBA;AAAAA,EACjB;AASA,QAAM,qBAAqB,CAAC,OAAY,SAAc;AACrD,WAAO,IAAI;AACX,mBAAe,MAAM,aAAa;AAAA,EACnC;AAEA,QAAM,qBAAqB,MAAM;AAChC,mBAAe,IAAI;AAAA,EACpB;AAEA,QAAM,cAAc,CAAC,QAAa,UAAiB;AAClD,UAAM,IAAS,CAAA;AACf,WAAO,KAAK,MAAM,EAAE,QAAQ,CAAC,OAAO;AACnC,YAAM,MAAM,OAAO,EAAE;AACrB,QAAE,EAAE,IAAI;AACR,YAAM,OAAO,MAAM,KAAK,CAAC,MAAM,EAAE,eAAe,EAAE;AAClD,UAAI,KAAK;AACR,YAAI,eAAe,MAAM;AACxB,YAAE,EAAE,IAAI,IAAI;AAAA,QACb;AACA,YAAI,SAAQ,6BAAM,gBAAe,QAAQ;AACxC,YAAE,EAAE,IAAI,MAAM,GAAG,EAAE,QAAO,6BAAM,eAAc,YAAY;AAAA,QAC3D;AAAA,MACD;AAAA,IACD,CAAC;AAED,WAAO;AAAA,EACR;AAEA,QAAM,kBAAkB,YAAY;AACnC,qBAAiB,IAAI;AACrB,QAAI,aAAa;AAChB,aAAM,2CAAc;AACpB,qBAAe,IAAI;AAAA,IACpB;AACA,qBAAiB,KAAK;AAAA,EACvB;AAEA,QAAM,gBAAgB,YAAY,CAAC,mBAAwB;;AAC1D,YAAO,sDAAgB,gBAAhB,mBAA6B,KAAK,CAAC,eAAoB,WAAW,SAAS;AAAA,EACnF,GAAG,CAAA,CAAE;AACL,YAAU,MAAM;AACf,UAAM,eAAe,CAAA;AAErB,QAAI,CAAC,aAAa,eAAe,QAAQ;AACxC,WAAK,QAAQ,CAACA,SAAQ;AACrB,YAAI,eAAe,SAASA,KAAI,EAAE,GAAG;AACpC,uBAAaA,KAAI,EAAE,IAAI;AAAA,QACxB;AAAA,MACD,CAAC;AACD,sBAAgB,YAAY;AAC5B,mBAAa,IAAI;AAAA,IAClB;AAAA,EAGD,GAAG,CAAC,MAAM,cAAc,CAAC;AAEzB,YAAU,MAAM;AACf,QAAI,2BAA2B,UAAU;AACxC,YAAM,eAAe,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAA;AACxD,sBAAgB,aAAa,CAAC,KAAK,IAAI;AAAA,IACxC;AAAA,EAED,GAAG,CAAC,OAAO,CAAC;AAGZ,QAAM,oBAAoB,MAAM;AAC/B,oBAAgB,CAAA,CAAE;AAClB,uBAAmB,KAAK;AAAA,EACzB;AACA,QAAM,eAAe,CAAC,SAAiB;AACtC,UAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,UAAM,MAAM,OAAO,WAAW,IAAI;AAClC,QAAI,CAAC,IAAK,QAAO;AACjB,WAAO,IAAI,YAAY,IAAI,EAAE,QAAQ;AAAA,EACtC;AACA,QAAM,QAAQ,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMnC,eAAe;AAAA,MACd,SAAS;AAAA;AAAA,MACT,MAAM;AAAA;AAAA,IAAA;AAAA,IAEP,SAAS;AAAA,MACR,GAAG,eAAe,IAAI,CAAC,MAAW;AACb,qBAAa,EAAE,UAAU,EAAE;AAC1B,aAAK;AAAA,UACzB,GAAG,KAAK,IAAI,CAAAA,SAAO,aAAa,OAAOA,KAAI,EAAE,WAAW,KAAK,EAAE,CAAC,CAAC;AAAA,QAAA;AAGlE,eAAO;AAAA,UACN,GAAG;AAAA,UACH,GAAI,oBAAoB,QACrB;AAAA,YACD,MAAM,CAAC,EAAE,MAAM,KAAAA,MAAK,OAAAS,QAAO,aAAa;AACvC,qBACC;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA,KAAK;AAAA,kBACL,KAAKT;AAAAA,kBACL,OAAOS;AAAAA,kBACP,UAAU,CAAC,MAAM,QAAQ,IAAI,QAAQ,CAAC;AAAA,kBACtC,QAAQ;AAAA,kBACR,kBAAAX;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA,iBAAiB,CAAC,MAAME,SAAQ,mDAAkB,MAAMA;AAAAA,gBAAG;AAAA,cAAA;AAAA,YAG9D;AAAA,UAAA,IAEC,CAAA;AAAA,UACH,QACC,qBAAC,KAAA,EAAI,SAAQ,QAAO,YAAW,UAC7B,UAAA;AAAA,YAAA,EAAE;AAAA,aACF,uBAAG,aAAY,cAAc,uBAAG,cAAc,KAC9C,oBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,mBAAkB,UAAA,IAAA,CAE9C;AAAA,UAAA,GAEF;AAAA,UAED,sBAAsB,EAAE,OAAO;AAAA;AAAA;AAAA;AAAA,UAI/B,MAAM;AAAA;AAAA,UAEN,SAAS;AAAA,QAAA;AAAA,MAEX,CAAC;AAAA,MACD,GAAI,cAAc;AAAA,QACjB;AAAA,UACC,IAAI;AAAA,UACJ,eAAe;AAAA,UACf,MAAM;AAAA,UACN,4BACE,YAAA,EAAW,MAAK,SAAQ,IAAI,EAAE,IAAI,QAAQ,WAAW,EAAE,iBAAiB,gBAAc,GACtF,UAAA,oBAAC,OAAA,EAAI,KAAK,OAAO,OAAO,SAAS,KAAI,WAAA,CAAW,EAAA,CACjD;AAAA,UAED,sBAAsB;AAAA,UACtB,SAAS;AAAA,UACT,uBAAuB;AAAA,YACtB,WAAW;AAAA,UAAA;AAAA,UAEZ,uBAAuB;AAAA,YACtB,WAAW;AAAA,YACX,IAAI;AAAA,cACH,YAAY;AAAA,YAAA;AAAA,UACb;AAAA,UAED,MAAM,CAAC,UACN;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,SAAS,MAAM,mBAAmB,MAAM,IAAI,QAAQ;AAAA,cACpD,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAED;AAAA,MACF,IACG,CAAA;AAAA,MACJ,GAAI,CAAC,6BACF;AAAA,QACD;AAAA,UACC,IAAI;AAAA,UACJ,eAAe;AAAA,UACf,OAAM,qEAA0B,UAAS,IAAI,KAAK;AAAA,UAClD,QACC,oBAAC,YAAA,EAAW,MAAK,SAAQ,IAAI,EAAE,GAAG,KAAK,WAAW,EAAE,iBAAiB,gBAAc,GAAK,SAAS,mBAChG,UAAA,oBAAC,OAAA,EAAI,KAAK,OAAO,OAAO,WAAW,KAAI,aAAA,CAAa,EAAA,CACrD;AAAA,UAED,sBAAsB;AAAA,UACtB,SAAS;AAAA,UACT,uBAAuB;AAAA,YACtB,WAAW;AAAA,UAAA;AAAA,UAEZ,uBAAuB;AAAA,YACtB,WAAW;AAAA,UAAA;AAAA,UAEZ,MAAM,CAAC,WACN,qEAA0B,UACzB,yBAAyB,IAAI,CAAC,SAAS;AACtC,kBAAM,eAAe;AAAA,cACpB,GAAG,KAAK;AAAA,cACR,SAAS,MAAM,KAAK,MAAM,QAAQ,KAAK;AAAA,YAAA;AAExC,mBAAO,aAAa,MAAM,YAAY;AAAA,UACvC,CAAC,IACE,CAAC,mCACJ;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,SAAS,CAAC,MAAM,mBAAmB,GAAG,MAAM,IAAI,QAAQ;AAAA,cAAG,UAAU,EAAC,+CAAe,WAAU,EAAC,+DAAuB;AAAA,cACvH,8BAAC,OAAA,EAAI,KAAK,OAAO,MAAM,KAAI,YAAA,CAAY;AAAA,YAAA;AAAA,UAAA;AAAA,QACxC;AAAA,MAEH,IAEC,CAAA;AAAA,IAAC;AAAA,IAEL,MAAM;AAAA,IACN,wBAAwB;AAAA,MACvB,IAAI;AAAA,QACH,GAAI,oBAAoB,EAAE,WAAW,kBAAA;AAAA,MAAkB;AAAA,IACxD;AAAA,IAED,oBAAoB;AAAA,MACnB,IAAI;AAAA,QACH,aAAa;AAAA;AAAA,MAAA;AAAA,IACd;AAAA,IAED,kBAAkB;AAAA,IAClB,kBAAkB,OAAO,SAAS;AACjC,UAAI;AACH,cAAMF,kBAAiB,SAAS,KAAK,QAAQ;AAAA,UAC5C,YAAY;AAAA,QAAA,CACZ;AACD,4BAAoB,CAAA,CAAE;AACtB,wBAAgB,IAAI;AACpB,2BAAmB,KAAK;AACxB,cAAM,QAAQ,KAAK,IAAI,YAAA,EAAc,IAAI,CAAC,MAAM,EAAE,OAAO,SAAS;AAClE,aAAK,IAAI,eAAe,YAAY,KAAK,QAAQ,KAAK;AAEtD,YAAI,WAAW;AACd,gBAAM,UAAU,MAAM,MAAM;AAAA,QAC7B;AACA,wBAAgB,KAAK;AACrB,aAAK,MAAM,cAAc,IAAI;AAAA,MAC9B,SAAS,KAAK;AACb,wBAAgB,KAAK;AACrB,YAAI,eAAeG,IAAI,iBAAiB;AACvC,gBAAM,SAAiC,CAAA;AAEvC,cAAI,MAAM,QAAQ,CAAC,UAAU;AAC5B,gBAAI,MAAM,MAAM;AACf,qBAAO,MAAM,IAAI,IAAI,MAAM;AAAA,YAC5B;AAAA,UACD,CAAC;AACD,8BAAoB,MAAM;AAAA,QAC3B,WAAW,eAAe,OAAO;AAChC,0BAAgB,IAAI,SAAS,EAAE,SAAS,SAAS;AAAA,QAClD,OAAO;AACN,0BAAgB,wBAAwB,EAAE,SAAS,QAAA,CAAS;AAAA,QAC7D;AAAA,MACD;AAAA,IACD;AAAA,IACA,mBAAmB,OAAO,SAAS;AAClC,UAAI;AACH,cAAMH,kBAAiB,SAAS,KAAK,QAAQ;AAAA,UAC5C,YAAY;AAAA,QAAA,CACZ;AACD,4BAAoB,CAAA,CAAE;AACtB,yBAAiB,IAAI;AACrB,2BAAmB,KAAK;AACxB,cAAM,QAAQ,KAAK,IAAI,YAAA,EAAc,IAAI,CAAC,MAAM,EAAE,OAAO,SAAS;AAElE,aAAK,IAAI,eAAe,YAAY,KAAK,QAAQ,KAAK;AAEtD,YAAI,aAAa;AAChB,gBAAM,YAAY,IAAI;AAAA,QACvB;AACA,yBAAiB,KAAK;AACtB,aAAK,MAAM,eAAe,IAAI;AAAA,MAC/B,SAAS,KAAK;AACb,yBAAiB,KAAK;AACtB,YAAI,eAAeG,IAAI,iBAAiB;AACvC,gBAAM,SAAiC,CAAA;AAEvC,cAAI,MAAM,QAAQ,CAAC,UAAU;AAC5B,gBAAI,MAAM,MAAM;AACf,qBAAO,MAAM,IAAI,IAAI,MAAM;AAAA,YAC5B;AAAA,UACD,CAAC;AACD,8BAAoB,MAAM;AAAA,QAC3B,WAAW,eAAe,OAAO;AAChC,0BAAgB,IAAI,SAAS,EAAE,SAAS,SAAS;AAAA,QAClD,OAAO;AACN,0BAAgB,wBAAwB,EAAE,SAAS,QAAA,CAAS;AAAA,QAC7D;AAAA,MACD;AAAA,IACD;AAAA,IACA,qBAAqB,MAAM,kBAAA;AAAA,IAC3B,oBAAoB,MAAM,kBAAA;AAAA,IAC1B,kBAAiB,iCAAQ,WAAU,kBAAkB;AAAA,IAErD,yBAAyB;AAAA,MACxB,mBAAmB;AAAA;AAAA,QAGlB,QACC,oBAAC,YAAA,EAAW,SAAS,mBAAmB,MAAK,SAC5C,UAAA,oBAAC,OAAA,EAAI,KAAK,OAAO,OAAO,WAAW,KAAI,cAAa,GACrD;AAAA,QAED,uBAAuB;AAAA,UACtB,IAAI;AAAA,YACH,kBAAkB;AAAA,cACjB,KAAK;AAAA,YAAA;AAAA,YAEN,iBAAiB;AAAA,UAAA;AAAA,UAElB,SAAS,CAAC,MAAM,QAAQ,IAAI,CAAC;AAAA,QAAA;AAAA,MAC9B;AAAA,MAED,kBAAkB;AAAA,QACjB,MAAM;AAAA;AAAA,MAAA;AAAA,MAEP,kBAAkB;AAAA,QACjB,MAAM;AAAA;AAAA,MAAA;AAAA,IACP;AAAA,IAED,kBAAkB,CAAC,EAAE,KAAAD,MAAK,OAAAS,OAAAA,MACzB,oBAAA,UAAA,EACE,WAAA,6BAAM,mDAEJ,WAAAT,6BAAK,aACL,qBAAC,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,EAAA,GAChC,UAAA;AAAA,MAAA,oBAACU,WAAA,EAAQ,OAAM,QACd,UAAA,oBAAC,cAAW,UAAU,iBAAiB,SAAS,MAAM;AACrDD,eAAM,cAAcT,IAAG;AACvB,2BAAmB,IAAI;AAAA,MACxB,GAEE,MAAK,SACN,UAAA,oBAAC,MAAA,EAAK,UAAS,SAAQ,IAAI,EAAE,OAAO,uBAAA,EAAuB,CAAG,GAC/D,GACD;AAAA,MACC,eACA,oBAACU,WAAA,EAAQ,OAAM,UACd,UAAA,oBAAC,YAAA,EAAW,UAAU,iBAAiB,SAAS,MAAM,eAAeV,IAAG,GAAG,MAAK,SAC/E,UAAA,oBAAC,OAAA,EAAM,UAAS,SAAQ,IAAI,EAAE,OAAO,uBAAA,EAAuB,CAAG,EAAA,CAChE,EAAA,CACD;AAAA,IAAA,EAAA,CAEF,EAAA,CAEF,IAEA,qBAAC,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,EAAA,GAChC,UAAA;AAAA,MAAA,oBAACU,WAAA,EAAQ,OAAM,QACd,UAAA,oBAAC,cAAW,UAAU,iBAAiB,SAAS,MAAM;AACrDD,eAAM,cAAcT,IAAG;AACvB,2BAAmB,IAAI;AAAA,MACxB,GAGC,UAAA,oBAAC,MAAA,EAAK,UAAS,SAAQ,IAAI,EAAE,OAAO,uBAAA,EAAuB,CAAG,EAAA,CAC/D,EAAA,CACD;AAAA,MACC,mCACCU,WAAA,EAAQ,OAAM,UACd,UAAA,oBAAC,YAAA,EAAW,SAAS,MAAM,eAAeV,IAAG,GAC5C,UAAA,oBAAC,OAAA,EAAM,UAAS,SAAQ,IAAI,EAAE,OAAO,yBAAuB,CAAG,EAAA,CAChE,EAAA,CACD;AAAA,IAAA,EAAA,CAEF,EAAA,CAEF;AAAA,IAGD,GAAI,QAAQ,eAAe,KAAK;AAAA,MAC/B,kCAAkC,CAAC,EAAE,OAAAS,aACpC;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,SAAQ;AAAA,UACR,+BAAYE,SAAA,EAAI;AAAA,UAChB,WAAU;AAAA,UACV,UAAU;AAAA,UACV,SAAS,MAAM;AACdF,mBAAM,eAAe,IAAI;AACzB,+BAAmB,IAAI;AAAA,UACxB;AAAA,UACC,YAAE,YAAY;AAAA,QAAA;AAAA,MAAA;AAAA,IAChB;AAAA,IAGF,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,IACtB,oBAAoB,sBAAsB;AAAA,IAC1C,eAAe,yBAAyB,WAAW,cAAA,IAAkB,iBAAiB;AAAA,IACtF,iBAAiB,mBAAmB;AAAA,IACpC,mBAAmB;AAAA,IACnB;AAAA,IACA;AAAA,IACA,kBAAkB;AAAA,IAClB,qBAAqB;AAAA,IACrB,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,qBAAqB,uBAAuB;AAAA,IAC5C,sBAAsB,wBAAwB;AAAA,IAC9C,oBAAoB;AAAA,IACpB,sBAAsB;AAAA;AAAA,IAEtB,OAAO;AAAA;AAAA;AAAA;AAAA,MAIN;AAAA,MACA,eAAe,EAAE,MAAM,CAAC,WAAW,iBAAiB,EAAA;AAAA,MACpD,UAAU,iBAAiB;AAAA,MAC3B,kBAAkB;AAAA,MAClB;AAAA,MACA,GAAG;AAAA,MACH,SAAS,MAAM,QAAQ,iCAAQ,OAAO,IAAI,iCAAQ,UACjD,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAA;AAAA,MACpC;AAAA,IAAA;AAAA,IAGD,UAAU,CAACT,SAAQA,6BAAK;AAAA;AAAA,IAExB,sBAAsB,CAAC,EAAE,KAAAA,WAAU;;AAClC,YAAM,iBACL,iBAAM,SAAA,MAAN,mBAAkB,eAAlB,mBAA8B,SAC9B,iBAAM,SAAA,MAAN,mBAAkB,gBAAlB,mBAA+B,OAC/B;AACD,YAAM,aAAa,SAAQA,kCAAK,aAALA,mBAAe,SAAS;AACnD,aAAO;AAAA,QACN,SAAS,MAAM,eAAeA,KAAI,EAAE;AAAA,QACpC,IAAI;AAAA,UACH,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAMR,iBAAiB,CAAC,eACd,aAAa,oBAAoB,YAClC;AAAA,UACH,WAAW;AAAA,YACV,iBAAiB,eAAe,gBAAiB,aAAa,oBAAoB;AAAA;AAAA,UAAA;AAAA,UAEnF,oBAAoB;AAAA,YACnB,iBAAiB;AAAA;AAAA,UAAA;AAAA,QAClB;AAAA,MACD;AAAA,IAEF;AAAA,IACA,qBAAqB,CAAC,aAAkB;AACvC,UAAI,2CAA2C,QAAQ;AAAA,IACxD;AAAA,IACA,sBAAsB;AAAA,IACtB,0BAA0B;AAAA,IAE1B,yBAAyB,MACxB,qBAAC,KAAA,EAAI,WAAU,WACd,UAAA;AAAA,MAAA,oBAAC,OAAA,EAAI,KAAK,OAAO,OAAO,aAAa;AAAA,MACrC,oBAAC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAE1C,UAAA,EAAE,eAAe,EAAA,CACnB;AAAA,IAAA,GACD;AAAA;AAAA,IAID;AAAA,IACA,uBAAuB;AAAA,IACvB,oBAAoB;AAAA,MACnB,OAAO;AAAA,MACP,MAAM;AAAA;AAAA,MACN,OAAO;AAAA;AAAA,MACP,iBAAiB;AAAA;AAAA,MACjB,eAAe;AAAA,IAAA;AAAA,IAGhB,uBAAuB,CAAC,EAAE,KAAAA,MAAK,cAAc;AAAA,MAC5C,YAAY;AAAA,QACX,kBAAkB;AAAA,MAAA;AAAA,MAEnB,QAAQ,CAAC,MAAM;AACd,mBAAW,EAAE,OAAO,OAAO,QAAQA,KAAI,EAAE;AAAA,MAC1C;AAAA;AAAA;AAAA;AAAA,MAIA,SAAS;AAAA,MACT,IAAI,CAAC,EAAE,cAAQ;;AAAO;AAAA,UACrB,4BAA4B;AAAA,YAC3B,cAAc;AAAA,cACb,aAAa,IAAG,aAAQ,UAAR,mBAAe,QAAQ,IAAI;AAAA;AAAA,YAAA;AAAA,UAE5C;AAAA,QACD;AAAA;AAAA,IACD;AAAA;AAAA,IAID,0BAA0B;AAAA,MACzB,IAAI;AAAA,QACH,OAAO;AAAA,MAAA;AAAA,IACR;AAAA;AAAA,IAID,uBAAuB;AAAA,MACtB,IAAI;AAAA,QACH,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,gCAAgC;AAAA,UAC/B,QAAQ;AAAA,QAAA;AAAA,QAET,uCAAuC;AAAA,UACtC,OAAO;AAAA,UACP,gBAAgB;AAAA,QAAA;AAAA,QAEjB,mBAAmB;AAAA,UAClB,iBAAiB;AAAA,QAAA;AAAA,QAElB,6CAA6C;AAAA,UAC5C,SAAS;AAAA,UACT,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,SAAS;AAAA,QAAA;AAAA,MACV;AAAA,IACD;AAAA;AAAA,IAID,mBAAmB;AAAA,MAClB,IAAI;AAAA,QACH,QAAQ;AAAA,MAAA;AAAA,IACT;AAAA,IAED,mBAAmB;AAAA,MAClB,IAAI;AAAA,QACH,QAAQ;AAAA,MAAA;AAAA,IACT;AAAA,IAED,uBAAuB,OAA0C;AAAA,MAChE,IAAI;AAAA,QACH,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,mBAAmB;AAAA,UAClB,iBAAiB;AAAA,QAAA;AAAA,QAElB,WAAW;AAAA,UACV,iBAAiB;AAAA;AAAA,QAAA;AAAA,MAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACD;AAAA;AAAA,IAmDD,wBAAwB;AAAA,MACvB,IAAI;AAAA,QACH,OAAO;AAAA,QACP,iBAAiB;AAAA,UAChB,OAAO;AAAA,UACP,WAAW;AAAA,YACV,OAAO;AAAA,UAAA;AAAA,QACR;AAAA,QAED,kBAAkB;AAAA,UACjB,OAAO;AAAA,QAAA;AAAA,MACR;AAAA,MAED,0BAAO,gBAAA,EAAe,IAAI,EAAE,OAAO,IAAI,QAAQ,GAAA,GAAM;AAAA,MACrD,iCAAc,cAAA,EAAa,IAAI,EAAE,OAAO,IAAI,QAAQ,KAAG,CAAG;AAAA,IAAA;AAAA,IAE3D,2BAA2B;AAAA,MAC1B,IAAI;AAAA,QACH,OAAO;AAAA,QACP,iBAAiB;AAAA,UAChB,OAAO;AAAA,UACP,WAAW;AAAA,YACV,OAAO;AAAA,UAAA;AAAA,QACR;AAAA,QAED,kBAAkB;AAAA,UACjB,OAAO;AAAA,QAAA;AAAA,MACR;AAAA,MAED,0BAAO,gBAAA,EAAe,IAAI,EAAE,OAAO,IAAI,QAAQ,GAAA,GAAM;AAAA,MACrD,iCAAc,cAAA,EAAa,IAAI,EAAE,OAAO,IAAI,QAAQ,KAAG,CAAG;AAAA,IAAA;AAAA,IAE3D,uBAAuB;AAAA,MACtB,IAAI;AAAA,QACH,WAAW;AAAA,QACX,kBAAkB;AAAA,UACjB,aAAa;AAAA,QAAA;AAAA,MACd;AAAA,IACD;AAAA,IAGD,YAAY;AAAA,IACZ,OAAO;AAAA,MACN,mBAAmB,CAAC,UACnB,oBAAC,eAAY,UAAS,UAAU,GAAG,OAAO;AAAA,MAE3C,UAAU,CAAC,UACV,oBAAC,eAAY,UAAS,UAAU,GAAG,OAAO;AAAA,MAE3C,aAAa,MAAM,oBAAC,aAAA,EAAY,UAAS,SAAA,CAAS;AAAA,MAClD,YAAY,CAAC,UACZ,oBAACJ,SAAA,EAAM,UAAS,SAAS,GAAG,OAAO,IAAI,EAAE,OAAO,yBAAuB,CAAG;AAAA,MAE3E,UAAU,CAAC,UACV,oBAAC,MAAA,EAAM,GAAG,OAAO,UAAS,SAAQ,IAAI,EAAE,OAAO,yBAAuB,CAAG;AAAA,IAAA;AAAA,IAI3E,GAAG;AAAA,EAAA,CACH;AAED,YAAU,MAAM;;AACf,QAAI,oBAAoB;AACvB,WAAI,oCAAO,0BAAP,mBAA8B,MAAM;AACvC,8DAAmB,oCAAO,0BAAP,mBAA8B;AAAA,MAClD;AAAA,IACD;AAAA,EAGD,GAAG,CAAC,kBAAkB,CAAC;AAEvB,YAAU,MAAM;AACf,QAAI,aAAa;AAChB,UAAI,6BAAM,iBAAiB;AAC1B,cAAM,oBAA2B,CAAA;AACjC,cAAM,YAAY,MAAM,SAAA,EAAW;AACnC,cAAM,eAAe,CAACgB,OAAM,YAAY,OAAO;AAC9CA,gBAAK,QAAQ,CAACZ,MAAK,UAAU;;AAC5B,kBAAM,SAAS,YAAY,GAAG,SAAS,IAAI,KAAK,KAAK,GAAGA,KAAI,EAAE;AAC9D,gBAAI,UAAU,MAAM,GAAG;AACtB,gCAAkB,KAAKA,IAAG;AAAA,YAC3B;AAGA,iBAAIA,UAAI,YAAJA,mBAAa,QAAQ;AACxB,2BAAaA,KAAI,SAAS,MAAM;AAAA,YACjC;AAAA,UACD,CAAC;AAAA,QACF;AAEA,qBAAa,MAAM,YAAA,EAAc,IAAI;AACrC,oBAAY,mBAAmB,YAAY;AAAA,MAC5C,OAAO;AACN,oBAAY,MAAM,sBAAsB,MAAM,YAAY;AAAA,MAC3D;AAAA,IAED;AAAA,EAED,GAAG,CAAC,cAAc,KAAK,CAAC;AAaxB,YAAU,MAAM;AACf,QAAI,YAAY;AACf,qCAAO;AAAA,IACR;AAAA,EACD,GAAG,CAAC,YAAY,KAAK,CAAC;AACtB,SACC,qBAAC,cAAA,EAAa,WAAU,iCAAgC,kBACvD,UAAA;AAAA,IAAA,oBAAC,sBAAmB,OAAc;AAAA,IAElC;AAAA,MAAC;AAAA,MAAA;AAAA,QACA;AAAA,QACA,MAAM,QAAQ,QAAQ;AAAA,QACtB,SAAS;AAAA,QACT,WAAU;AAAA,QACT,UAAA,iCACC,OAAA,EACA,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,SAAS;AAAA,cACT,WAAU;AAAA,cACV,UAAA;AAAA,gBAAA,oBAAC,cAAA,EAAa,WAAU,YACvB,UAAA,oBAAC,mBAAgB,GAClB;AAAA,oCACC,cAAA,EAAa,WAAU,SACtB,UAAA,EAAE,wBAAwB,EAAA,CAC5B;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAED,oBAAC,SAAA,EAAQ,UAAQ,MAAC,IAAI,EAAE,IAAI,sBAAsB,IAAI,qBAAA,EAAqB,CAAG;AAAA,UAC9E,oBAAC,OAAA,EAAI,WAAU,sBACd,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,aAAa;AAAA,cACb,cAAc,CAAC,MAAM,kBAAkB,CAAC;AAAA,YAAA;AAAA,UAAA,GAE1C;AAAA,UACA,oBAAC,OAAA,EAAI,WAAU,uBACd,UAAA,oBAAC,YAAA,EAAW,SAAQ,SAAQ,OAAM,kBAChC,UAAA,EAAE,4BAA4B,GAChC,GACD;AAAA,UACC,gBAAgB,IAAI,CAAC,WACrB;AAAA,YAAC;AAAA,YAAA;AAAA,cAEA,SAAS,MAAM,gBAAgB,MAAM;AAAA,cACrC,8BAAC,YAAA,EAAW,OAAM,wBAAuB,MAAK,MAC5C,iBAAO,OAAA,CACT;AAAA,YAAA;AAAA,YAJK,OAAO;AAAA,UAAA,CAMb;AAAA,UACD,oBAAC,SAAA,EAAQ,UAAQ,MAAC,IAAI,EAAE,IAAI,sBAAsB,IAAI,qBAAA,EAAqB,CAAG;AAAA,UAE7E,wBAAwB,qBAAC,UAAA,EAAS,SAAS,uBAAuB,WAAU,iBAC3E,UAAA;AAAA,YAAA,oBAAC,cAAA,EAAa,WAAU,YACvB,UAAA,oBAAC,OAAA,EAAI,KAAK,OAAO,OAAO,SAAS,KAAI,WAAA,CAAW,GACjD;AAAA,gCACC,cAAA,EAAa,WAAU,SACtB,UAAA,EAAE,6BAA6B,EAAA,CACjC;AAAA,UAAA,EAAA,CACD;AAAA,QAAA,EAAA,CAEF,IAEA,qBAAA,UAAA,EACE,UAAA;AAAA,UAAA,eAAe,IAAI,CAAC,WACpB;AAAA,YAAC;AAAA,YAAA;AAAA,cAEA,SAAS,MAAM,oBAAoB,MAAM;AAAA,cACzC,WAAU;AAAA,cACV,UAAA;AAAA,gBAAA,oBAAC,cAAA,EAAa,WAAU,YACvB,UAAA,oBAAC,OAAA,EAAI,KAAK,OAAO,OAAO,UAAU,KAAI,WAAA,CAAW,GAClD;AAAA,gBACA,oBAAC,cAAA,EAAa,WAAU,SAAS,iBAAO,QAAO;AAAA,gBAC/C,oBAAC,cAAA,EAAa,WAAU,YACvB,UAAA,oBAAC,OAAA,EAAI,KAAK,OAAO,OAAO,SAAS,KAAI,WAAA,CAAW,EAAA,CACjD;AAAA,cAAA;AAAA,YAAA;AAAA,YATK,OAAO;AAAA,UAAA,CAWb;AAAA,UACD,oBAAC,SAAA,EAAQ,UAAQ,MAAC,IAAI,EAAE,IAAI,sBAAsB,IAAI,qBAAA,EAAqB,CAAG;AAAA,UAC9E,qBAAC,UAAA,EAAS,SAAS,sBAAsB,WAAU,iBAClD,UAAA;AAAA,YAAA,oBAAC,cAAA,EAAa,WAAU,YACvB,UAAA,oBAAC,OAAA,EAAI,KAAK,OAAO,OAAO,SAAS,KAAI,WAAA,CAAW,GACjD;AAAA,gCACC,cAAA,EAAa,WAAU,SACtB,UAAA,EAAE,wBAAwB,GAC5B;AAAA,YACA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACA,SAAQ;AAAA,gBACR,OAAM;AAAA,gBACN,WAAU;AAAA,gBACV,8BAAC,kBAAA,EAAiB,IAAI,EAAE,UAAU,uBAAqB,CAAG;AAAA,cAAA;AAAA,YAAA;AAAA,UAC3D,EAAA,CACD;AAAA,QAAA,EAAA,CACD;AAAA,MAAA;AAAA,IAAA;AAAA,IAIF;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,UAAU;AAAA,QACV,MAAM,QAAQ,WAAW;AAAA,QACzB,SAAS;AAAA,QACR,UAAA;AAAA,UAAA,+CAAe,IAAI,CAAC,WAAgB;AAYpC,mBACC;AAAA,cAAC;AAAA,cAAA;AAAA,gBACA,SAAS,YAAY;AACpB,wBAAM,OAAO,aAAa,GAAG;AAC7B,iCAAe,IAAI;AAAA,gBACpB;AAAA,gBACA,UACC,OAAO,OAAO,aAAa,aACxB,OAAO,SAAS,GAAG,IACnB,QAAQ,OAAO,QAAQ;AAAA,gBAE3B,IAAI,EAAE,YAAY,UAAU,KAAK,IAAA;AAAA,gBAEhC,UAAA;AAAA,kBAAA,iCAAQ;AAAA,kBACT,oBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,WAC1B,UAAA,OAAO,OAAO,UAAU,aAAa,OAAO,MAAM,GAAG,IAAI,OAAO,MAAA,CAClE;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UAGH;AAAA,WACC,+DAAuB,UAAS,KAChC,qBAAA,UAAA,EACC,UAAA;AAAA,YAAA,oBAAC,SAAA,EAAQ,UAAQ,MAAC,IAAI,EAAE,IAAI,sBAAsB,IAAI,qBAAA,EAAqB,CAAG;AAAA,gCAC7E,OAAA,EAAI,WAAU,qCACb,UAAA,+DAAuB,IAAI,CAAC,WAC5B;AAAA,cAAC;AAAA,cAAA;AAAA,gBACA,SAAS,MAAM;AACd,yBAAO,aAAa,GAAG;AACvB,iCAAe,IAAI;AAAA,gBACpB;AAAA,gBACA,WAAU;AAAA,gBACV,UACC,OAAO,OAAO,aAAa,aACxB,OAAO,SAAS,GAAG,IACnB,QAAQ,OAAO,QAAQ;AAAA,gBAE3B,UAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,WAC1B,UAAA,OAAO,OAAO,UAAU,aAAa,OAAO,MAAM,GAAG,IAAI,OAAO,MAAA,CAClE;AAAA,cAAA;AAAA,YAAA,GAED,CACF;AAAA,UAAA,EAAA,CACD;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGF;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,MAAM,QAAQ,WAAW;AAAA,QACzB,SAAS,MAAM,eAAe,IAAI;AAAA,QAClC,WAAW,MAAM,gBAAA;AAAA,QACjB,OAAM;AAAA,QACN,aAAa;AAAA,QACb,SAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EACV,GACD;AAEF,CAAC;AC52CD,MAAMa,WAASnC,SAAO,gBAAgB,EAAE,CAAC,EAAE,YAAM;;AAAO;AAAA,IACvD,QAAO,WAAM,YAAN,mBAAe,MAAM,QAAQ;AAAA,EACrC;AAAA,CAAE;AAEF,MAAM,kBAAkBA,SAAO,GAAG,EAAE,OAAO;AAAA,EAC1C,UAAU;AAAA,EACV,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AACN,EAAE;AAEF,MAAM,cAAc,CAAC,UAAiC;AACrD,SACC,oBAAC,mBACA,UAAA,oBAACmC,UAAA,EAAO,MAAM,IAAK,GAAG,OAAO,EAAA,CAC9B;AAEF;AC6BA,MAAM,uBAAsC,EAAE,OAAO,IAAI,SAAS,GAAA;AAElE,SAAwB,oBAAoB;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA6B;AAG3B,QAAM,EAAE,EAAA,IAAM,eAAA;AACd,QAAM,WAAW,YAAA;AACjB,QAAM,EAAE,KAAA,IAAS,QAAA;AAGjB,QAAM,cAAc,OAAsB,oBAAoB;AAG9D,QAAM,CAAC,aAAa,cAAc,IAAI,SAAgB,CAAA,CAAE;AACxD,QAAM,CAAC,aAAa,cAAc,IAAI,SAAgB,CAAA,CAAE;AACxD,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AACI,WAAgB,CAAA,CAAE;AAGxE,QAAM;AAAA,IACJ;AAAA,IACA,WAAW,EAAE,OAAA;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IAEE,QAAQ;AAAA,IACZ,eAAe;AAAA,MACb,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,cAAc;AAAA,MAAA;AAAA,IAChB;AAAA,IAEA,MAAM;AAAA,IACN,UAAU,0BAAA;AAAA,EAA0B,CACrC;AAED,QAAM,gBAAgB;AAAA,IACpB,CAAC,eAAe,kBAAkB,GAAG;AAAA,IACrC,CAAC,eAAe,YAAY,GAAG;AAAA,EAAA;AAGjC,uBAAqB;AAAA,IACnB;AAAA,IACA,cAAc,eAAe;AAAA,IAC7B,gBAAgB;AAAA,IAChB,aAAa,EAAE,SAAS,UAAU,OAAO,cAAA;AAAA,IACzC,GAAI,EAAE,iBAAiB,KAAA;AAAA,EAAK,CAC7B;AAGD,QAAM,eAAe,SAAS;AAAA,IAC5B;AAAA,IACA,MAAM;AAAA,EAAA,CACP;AAED,QAAM,oBAAoB,SAAS;AAAA,IACjC;AAAA,IACA,MAAM,GAAG,uBAAuB,IAAI,eAAe,kBAAkB;AAAA,EAAA,CACtE;AAED,QAAM,gBAAgB,SAAS;AAAA,IAC7B;AAAA,IACA,MAAM,GAAG,uBAAuB,IAAI,eAAe,UAAU;AAAA,EAAA,CAC9D;AAED,QAAM,eAAe,SAAS;AAAA,IAC5B;AAAA,IACA,MAAM,GAAG,uBAAuB,IAAI,eAAe,SAAS;AAAA,EAAA,CAC7D;AAGD,QAAM,eAAe;AAAA,IACnB,CAAC,SAAc,cAAmB;AAChC,YAAM,uCAAuB,IAAA;AAE7B,aAAO,sBAAsB;AAAA,QAC3B;AAAA,QACA,gBAAgB;AAAA,QAChB,eAAe;AAAA,QACf,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,sBAAsB;AAAA,QACtB,MAAM;AAAA,QACN,eAAe;AAAA,QACf,gBAAgB,CAAC,KAAK,mBAAmB,UAAU;;AACjD,kBAAQ,mBAAA;AAAA,YACN,KAAK;AAAA,YACL,KAAK,2BAA2B;AAC9B,qBACE,oBAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,KAC/B,UAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,SAAS,QAAQ,KAAK;AAAA,kBACtB,IAAI,EAAE,eAAe,OAAA;AAAA,gBAAO;AAAA,cAAA,GAEhC;AAAA,YAEJ;AAAA,YAEA,KAAK;AAAA,YACL,KAAK,cAAc;AACjB,kBAAI,CAAC,MAAO,QAAO;AACnB,oBAAM,WAAW,SAAS,KAAK;AAC/B,kBAAI,CAAC,iBAAiB,IAAI,QAAQ,GAAG;AACnC,sBAAM,SAAS,2BAA2B,IAAI,KAAK,EAAE;AACrD,iCAAiB,IAAI,WAAU,iCAAQ,mBAAkB,EAAE;AAAA,cAC7D;AACA,qBAAO,iBAAiB,IAAI,QAAQ;AAAA,YACtC;AAAA,YAEA,KAAK,gBAAgB;AACnB,oBAAM,UAAQ,gCAAK,aAAL,mBAAe,YAAS,gCAAK,aAAL,mBAAe;AACrD,kBAAI,CAAC,MAAO,QAAO;AACnB,oBAAM,iBAAiB,WAAW,KAAK;AACvC,kBAAI,CAAC,iBAAiB,IAAI,cAAc,GAAG;AACzC,sBAAM,SAAS,2BAA2B,IAAI,KAAK,EAAE;AACrD,iCAAiB;AAAA,kBAAI;AAAA,mBACnB,iCAAQ,sBAAqB,IAAI,OAAO,kBAAkB,KAAK;AAAA,gBAAA;AAAA,cAEnE;AACA,qBAAO,iBAAiB,IAAI,cAAc;AAAA,YAC5C;AAAA,YAEA;AACE,qBAAO;AAAA,UAAA;AAAA,QAEb;AAAA,MAAA,CACD;AAAA,IACH;AAAA,IACA,CAAC,CAAC;AAAA,EAAA;AAKJ,QAAM,qBAAqB,OACzB,OACA,OACA,UACA,cACG;;AACH,QAAI;AACF,YAAM,EAAE,QAAQ,IAAA,IAAQ;AACxB,YAAM,UAAU,IAAI,SAAS;AAC7B,YAAM,UAAU,YAAY,iBAAiB;AAE7C,YAAM,kBAAuB,CAAA;AAC7B,iBAAW,OAAO,SAAS;AACzB,YAAI,EAAE,IAAI,QAAQ,GAAG,GAAG;AACtB,0BAAgB,GAAG,KAAI,iCAAS,QAAO,OAAO,GAAG,IAAI;AAAA,QACvD;AAAA,MACF;AAEA,UAAI,WAAW;AACb,cAAM,YAAY;AAAA,UAChB,IAAG,iBAAY,YAAZ,mBAAqB;AAAA,UACxB,IAAG,iBAAY,YAAZ,mBAAqB;AAAA,QAAA;AAG1B,cAAM,kBAAkB,MAAM,wBAAwB,iBAAiB,OAAO,IAAI,KAAK;AACvF,cAAM,gBAAgB;AAAA,UACpB,GAAG;AAAA,UACH,eAAc,eAAU,MAAV,mBAAa;AAAA,UAC3B,UAAS,eAAU,MAAV,mBAAa;AAAA,UACtB,aAAY,eAAU,MAAV,mBAAa;AAAA,UACzB,QAAO,eAAU,MAAV,mBAAa;AAAA,UACpB,cAAc,UAAU;AAAA,UACxB,YAAY,UAAU;AAAA,UACtB,aAAY,eAAU,MAAV,mBAAa;AAAA,UACzB,WAAU,eAAU,MAAV,mBAAa;AAAA,QAAA;AAGzB,YAAI,SAAS;AACX,iBAAO,SAAS,MAAM,IAAI,CAAC,IAAI,MAAM,MAAM,IAAI,QAAQ,EAAE,GAAG,IAAI,GAAG,cAAA,IAAkB,EAAE,CAAC;AAAA,QAC1F;AACA,eAAO,SAAS,CAAC,GAAG,OAAO,aAAa,CAAC;AAAA,MAC3C;AAEA,UAAI,SAAS;AACX,eAAO,SAAS,MAAM,IAAI,CAAC,IAAI,MAAM,MAAM,IAAI,QAAQ,EAAE,GAAG,IAAI,GAAG,gBAAA,IAAoB,EAAE,CAAC;AAAA,MAC5F;AACA,aAAO,SAAS,CAAC,GAAG,OAAO,eAAe,CAAC;AAAA,IAC7C,SAAS,OAAO;AACd,aAAO,QAAQ,OAAO,KAAK;AAAA,IAC7B;AAAA,EACF;AAEA,QAAM,0BAA0B,OAAO,QAAa,OAAc,UAAkB;AAClF,QAAI,gBAAgB,EAAE,GAAG,OAAA;AACzB,UAAM,WAAW,CAACC,UAAiC;AACjD,YAAM,SAAS,CAAC,GAAG,KAAK;AACxB,YAAM,QAAQA,UAAS,aAAa,6BAA6B;AACjE,UAAI,SAAS,GAAG;AACd,eAAO,OAAO,OAAO,CAAC;AAAA,MACxB;AACA,YAAM,aAAa,OAAO,KAAK,CAAC,MAAW,uBAAI,MAAM;AAErD,UAAI,eAAc,iCAAS,SAAQ;AACjC,cAAM,IAAI;AAAA,UACR,oDAAoDA,KAAI;AAAA,QAAA;AAAA,MAE5D,WACS,CAAC,YAAY;AACpB,wBAAgB;AAAA,UACd,GAAG;AAAA,UACH,CAAC,KAAK,IAAG,iCAAS,YAAU,+BAAO,WAAU,IAAI,IAAI;AAAA,QAAA;AAAA,MAEzD;AAAA,IAEF;AAEA,UAAM,SAAS,UAAU;AACzB,UAAM,SAAS,SAAS;AAExB,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,OAChB,OACA,UACA,QACG;AACH,UAAM,WAAW,IAAI;AACrB,UAAM,cAAc,MAAM,OAAO,CAACxC,IAAG,MAAM,MAAM,QAAQ;AACzD,aAAS,WAAW;AACpB,WAAO,QAAQ,QAAA;AAAA,EACjB;AAEA,QAAM,4BAA4B,OAAO,GAAQyC,IAAQ,GAAQ,KAAU,iBAAsB;;AAC/F,UAAM,aAAY,4BAAG,WAAH,mBAAW;AAC7B,QAAI,gBAAqB;AAEzB,SAAI,gCAAK,mBAAL,mBAAqB,YAAY;AACnC,kBAAY,UAAU;AAAA,QACpB,GAAG,YAAY;AAAA,QACf,CAAC,IAAI,eAAe,UAAU,GAAG;AAAA,MAAA;AAAA,IAErC;AAEA,QAAI,cAAc,WAAW;AAC3B,sBAAgB;AAAA,QACd,GAAG,EAAE;AAAA,QACL,SAAS,aAAa;AAAA,QACtB,YAAY,aAAa;AAAA,QACzB,OAAO;AAAA,QACP,UAAU;AAAA,QACV,YAAY;AAAA,MAAA;AAAA,IAEhB,WAAW,cAAc,SAAS;AAChC,sBAAgB;AAAA,QACd,GAAG,EAAE;AAAA,QACL,OAAO,aAAa;AAAA,QACpB,UAAU,aAAa;AAAA,MAAA;AAAA,IAE3B,WAAW,cAAc,SAAS;AAChC,YAAM,IAAI,2BAA2B,IAAI,CAAC,EAAE;AAC5C,sBAAgB;AAAA,QACd,GAAG,EAAE;AAAA,QACL,eAAc,uBAAG,sBAAqB,IAAI,EAAE,kBAAkB,KAAK;AAAA,MAAA;AAAA,IAEvE;AAEA,UAAM,gBAAgB;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,QAAI,EAAE,cAAc;AAClB,YAAM,cAAc,cAAc,IAAI,CAAA,UAAS;;AAC7C,YAAI,UAAU,WAAW;AACvB,mBAAOb,OAAAV,MAAA,YAAY,YAAZ,gBAAAA,IAAqB,YAArB,gBAAAU,IAA8B,SAAQ;AAAA,QAC/C,WAAW,UAAU,SAAS;AAC5B,mBAAO,uBAAY,YAAZ,mBAAqB,UAArB,mBAA4B,SAAQ;AAAA,QAC7C,WAAW,UAAU,WAAW;AAC9B,mBAAO,OAAE,WAAF,mBAAU,UAAS;AAAA,QAC5B;AACA,iBAAO,OAAE,iBAAF,mBAAiB,WAAU;AAAA,MACpC,CAAC;AAED,YAAM,UAAU,YAAY,OAAO,CAAC,KAAK,KAAK,QAAQ;AACpD,YAAI,CAAC,IAAK,QAAO;AACjB,YAAI,CAAC,IAAK,QAAO;AAEjB,eAAM,2BAAK,SAAQ;AACnB,eAAM,2BAAK,SAAQ;AAEnB,eAAO,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG;AAAA,EAAO,GAAG;AAAA,MAClE,GAAG,EAAE;AAEL,QAAE,aAAa,UAAU;AAAA,IAC3B;AAEA,QAAI,eAAe;AACjB,QAAE,YAAA,EAAc,QAAQ,CAAC,MAAW;AAClC,YAAI,EAAE,IAAI,eAAe,EAAE,OAAO,EAAE,GAAG;AACrC,YAAE,aAAa,EAAE,OAAO,EAAE,IAAI,cAAc,EAAE,OAAO,EAAE;AAAA,QACzD;AAAA,MACF,CAAC;AAAA,IACH;AAEA,WAAO,EAAE;AAAA,EACX;AAIA,QAAM,cACJ;AAEJ,QAAM,WAAW,YAAY;;AACzB,UAAM,UAAU,MAAM,QAAA;AACtB,QAAI,CAAC,QAAS;AAEd,UAAM,SAAS,UAAA;AACf,UAAM,aAAa,iCAAS;AAC5B,QAAI,aAAuB,CAAA;AAE3B,QAAI,yCAAY,WAAW;AACzB,oBAAa,8CAAY,cAAZ,mBACT,MAAM,WACP,IAAI,CAAC,aAAA;;AAAkB,gBAAAV,MAAA,qCAAU,WAAW,KAAK,QAA1B,gBAAAA,IAA+B;AAAA,SACtD,OAAO,CAAC,aAAkB,SAAS,MAAM,WAAW;AAAA,IACzD;AAEA,UAAM,UAAU;AAAA,MACd,OAAO;AAAA,QACL,GAAG,sBAAsB,UAAU;AAAA,QACnC,WAAW;AAAA,QACX,cAAc;AAAA,QACd,QAAQ;AAAA,QACR;AAAA,QACA,aAAY,yCAAa,eAAe,aAAY;AAAA,MAAA;AAAA,IACtD;AAEF,QAAI,OAAO,UAAU,YAAY;AAC/B,uCAAS;AACT;AAAA,IACF;AACA,kBAAc,IAAI;AAClB,QAAI;AAEF,YAAM,MAAM,MAAM,SAAS,cAAc,OAAO,CAAC;AAEjD,YAAI,gCAAK,SAAL,mBAAW,mBAAkB,aAAa;AAC5C,wBAAgB,GAAG,IAAI,IAAI,EAAE,0BAA0B,CAAC,EAAE;AAC1D,mBAAA;AACA,qBAAA;AAAA,MACF,aAAW,gCAAK,SAAL,mBAAW,mBAAkB,YAAY;AAClD,cAAM,eAAe,iBAAgB,gCAAK,UAAL,mBAAY,OAAO;AACxD,wBAAgB,cAAc,EAAE,SAAS,QAAA,CAAS;AAAA,MACpD;AAAA,IACF,UAAA;AACE,oBAAc,KAAK;AAAA,IACrB;AAAA,EACF;AAEA,QAAM,aAAa,MAAM;AACvB,cAAA;AACA,mBAAe,CAAA,CAAE;AACjB,mBAAe,CAAA,CAAE;AACjB;AACA,2CAAY;AAAA,EACd;AACA,QAAM,YAAY,MAAM;AACtB,UAAA;AAAA,EACF;AAGA,YAAU,MAAM;AACd,UAAM,cAAc,YAAY,IAAI,CAAA,MAAK,EAAE,KAAK,GAAG,eAAe,CAAC;AACnE,aAAS,GAAG,uBAAuB,IAAI,eAAe,OAAO,IAAI,WAAW;AAAA,EAC9E,GAAG,CAAC,aAAa,QAAQ,CAAC;AAE1B,YAAU,MAAM;AACd,UAAM,cAAc,YAAY,IAAI,CAAA,MAAK,EAAE,KAAK,GAAG,eAAe,CAAC;AACnE,aAAS,GAAG,uBAAuB,IAAI,eAAe,QAAQ,IAAI,WAAW;AAAA,EAC/E,GAAG,CAAC,aAAa,QAAQ,CAAC;AAE1B,YAAU,MAAM;AACd,kBAAc,SAAS;AAAA,EACzB,GAAG,CAAC,SAAS,CAAC;AAGd,YAAU,MAAM;AACd,QAAI,iBAAiB,cAAc;AAEjC,iBAAW,sBAAsB;AACjC,iBAAW,oBAAoB;AAC/B,iBAAW,aAAa;AAAA,IAC1B;AAEA,QAAI,iBAAiB,WAAW;AAE9B,iBAAW,oBAAoB;AAC/B,iBAAW,mBAAmB;AAAA,IAChC;AAAA,EACF,GAAG,CAAC,cAAc,UAAU,CAAC;AAG/B,YAAU,MAAM;;AACd,QAAI,WAAU,6BAAM,eAAc;AACjC,YAAM,aACL,6BAAM,sBACN,kCAAM,iBAAN,mBAAoB,OACnB,MAAM,QAAQ,6BAAM,YAAY,OAAK,kCAAM,aAAa,OAAnB,mBAAuB,OAC7D;AAGD,UAAI,WAAW;AACd,iBAAS,wBAAwB,SAAS;AACtC,iBAAS,GAAG,uBAAuB,IAAI,eAAe,OAAO,IAAI,SAAS;AAAA,MAC/E;AAAA,IACD;AAAA,EACA,GAAG,CAAC,QAAQ,6BAAM,cAAc,QAAQ,CAAC;AAEzC,YAAU,MAAM;AACd,QAAI,WAAU,6BAAM,qBAAoB;AACtC,YAAM,aAAa,OAAO,OAAO,KAAK,kBAAkB;AACxD,UAAI,WAAW,SAAS,GAAG;AACzB,iBAAS,GAAG,uBAAuB,IAAI,eAAe,QAAQ,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;AAAA,MACtF;AAAA,IACF;AAAA,EACF,GAAG,CAAC,QAAQ,6BAAM,oBAAqB,QAAQ,CAAC;AAGhD,YAAU,MAAM;;AACd,UAAM,kBAAkB,YAAY,CAAC;AACrC,UAAM,oBAAoB,gBACtB,MAAI,gCAA2B,IAAI,aAAa,EAAE,MAA9C,mBAAiD,uBAAsB,EAAE,KAC7E;AAEJ,UAAM,aAAa,eACf,aAAa,MAAM,SAAS,EAAE,IAAI,CAAC,MAAc,EAAE,KAAA,CAAM,EAAE,OAAO,CAAC,MAAc,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,KAC5G;AAEJ,UAAM,kBAAkB;AAAA,MACtB,MAAM,qBAAqB;AAAA,MAC3B,YAAY,iBAAiB;AAAA,MAC7B,OAAO;AAAA,MACP,cAAc;AAAA,IAAA;AAGhB,QAAI,iBAAiB;AACnB,YAAM,aAAa,OAAO,KAAK,eAAe,EAAE;AAAA,QAC9C,CAAC,QAAQ,gBAAgB,GAAG,MAAM,gBAAgB,GAAG;AAAA,MAAA;AAEvD,UAAI,YAAY;AACd,cAAM,cAAc,CAAC,GAAG,WAAW;AACnC,oBAAY,CAAC,IAAI,EAAE,GAAG,YAAY,CAAC,GAAG,GAAG,gBAAA;AACzC,uBAAe,WAAW;AAAA,MAC5B;AAAA,IACF,OAAO;AACL,qBAAe,CAAC,iBAAiB,GAAG,WAAW,CAAC;AAAA,IAClD;AAAA,EACF,GAAG,CAAC,mBAAmB,eAAe,YAAY,CAAC;AAGnD,YAAU,MAAM;;AACd,UAAM,WAAW,YAAY,CAAC;AAC9B,UAAM,qBAAoB,qCAAU,kBAAgB,qCAAU,cAAY,qCAAU;AAEpF,QAAI,qBAAqB,eAAe;AACtC,YAAM,oBAAoB,gBACtB,MAAI,gCAA2B,IAAI,aAAa,EAAE,MAA9C,mBAAiD,uBAAsB,EAAE,KAC7E;AAGJ,UAAI,CAAC,UAAU;AACb,uBAAe,CAAC;AAAA,UACd,GAAG;AAAA,UACH,cAAc;AAAA,UACd,OAAO;AAAA,UACP,cAAc;AAAA,QAAA,CACf,CAAC;AACF;AAAA,MACF;AAGA,UAAI,CAAC,mBAAmB;AACtB,cAAM,kBAAiB,qCAAU,kBAAiB;AAClD,cAAM,gBAAe,qCAAU,WAAU;AAEzC,YAAI,kBAAkB,cAAc;AAClC,yBAAe,UAAQ,KAAK;AAAA,YAAI,CAAC,KAAK,QACpC,QAAQ,IACJ,EAAE,GAAG,KAAK,cAAc,mBAAmB,OAAO,eAAe,cAAc,sBAC/E;AAAA,UAAA,CACL;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF,GAAG,CAAC,mBAAmB,aAAa,CAAC;AAErC,QAAM,sBAAsB,QAAQ,MAClC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OACE,oBAAC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBACzC,UAAA,EAAE,qCAAqC,EAAA,CAC1C;AAAA,MAEF,gBAAgB;AAAA,QACd,iBAAiB;AAAA,QACjB,WAAW;AAAA,MAAA;AAAA,MAGb,UAAA,qBAAC,MAAA,EAAK,WAAS,MAAC,SAAS,GAEvB,UAAA;AAAA,QAAA,oBAAC,QAAK,MAAI,MAAC,IAAI,IAAI,IAAI,IACrB,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAM;AAAA,YACN,MAAM,eAAe;AAAA,YACrB,gBAAgB;AAAA,YAChB,aAAa;AAAA,YACb,SAAS;AAAA,YACT,SAAQ;AAAA,YACR,OAAO,EAAE,EAAE,0BAA0B,CAAC;AAAA,YACtC,eAAc;AAAA,YACd,UAAU;AAAA,UAAA;AAAA,QAAA,GACd;AAAA,QAEC,iBAAiB,gBAChB,qBAAA,UAAA,EACE,UAAA;AAAA,UAAA,oBAAC,QAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACrB,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO,EAAE,qCAAqC;AAAA,cAC9C,MAAM,eAAe;AAAA,cACrB,aAAa,EAAE,2CAA2C;AAAA,cAC1D,gBAAgB;AAAA,cAChB,aAAa;AAAA,cACb,UAAQ;AAAA,YAAA;AAAA,UAAA,GAEZ;AAAA,8BACC,MAAA,EAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACrB,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO,EAAE,oCAAoC;AAAA,cAC7C,MAAM,eAAe;AAAA,cACrB,aAAa,EAAE,0CAA0C;AAAA,cACzD,gBAAgB;AAAA,cAChB,aAAa;AAAA,cACb,UAAQ;AAAA,YAAA;AAAA,UAAA,EACV,CACF;AAAA,QAAA,GACF;AAAA,QAID,iBAAiB,aAChB,qBAAA,UAAA,EACE,UAAA;AAAA,UAAA,oBAAC,QAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACrB,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO,EAAE,wCAAwC;AAAA,cACjD,MAAM,eAAe;AAAA,cACrB,aAAa,EAAE,8CAA8C;AAAA,cAC7D,gBAAgB;AAAA,cAChB,aAAa;AAAA,cACb,UAAQ;AAAA,YAAA;AAAA,UAAA,GAEZ;AAAA,8BAGC,MAAA,EAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACrB,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO,EAAE,sCAAsC;AAAA,cAC/C,MAAM,eAAe;AAAA,cACrB,aAAa,EAAE,4CAA4C;AAAA,cAC3D,gBAAgB;AAAA,cAChB,aAAa;AAAA,YAAA;AAAA,UAAA,GAGjB;AAAA,8BAEC,MAAA,EAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACrB,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO,EAAE,+BAA+B;AAAA,cACxC,MAAM,eAAe;AAAA,cACrB,aAAa,EAAE,qCAAqC;AAAA,cACpD,gBAAgB;AAAA,cAChB,aAAa;AAAA,YAAA;AAAA,UAAA,EACf,CACF;AAAA,QAAA,GACF;AAAA,4BAGD,MAAA,EAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACrB,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,OAAO,EAAE,mCAAmC;AAAA,YAC5C,MAAM,eAAe;AAAA,YACrB,aAAa,EAAE,yCAAyC;AAAA,YACxD,gBAAgB;AAAA,YAChB,aAAa;AAAA,YACb,UAAQ;AAAA,UAAA;AAAA,QAAA,GAEZ;AAAA,4BAEC,MAAA,EAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACrB,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO,EAAE,iCAAiC;AAAA,YAC1C,MAAM,eAAe;AAAA,YACrB,aAAa,EAAE,uCAAuC;AAAA,YACtD,gBAAgB;AAAA,YAChB,aAAa;AAAA,YACb,UAAQ;AAAA,UAAA;AAAA,QAAA,GAEZ;AAAA,4BAGC,MAAA,EAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACrB,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO,EAAE,mCAAmC;AAAA,YAC5C,SAAQ;AAAA,YACR,eAAc;AAAA,YACd,MAAM,eAAe;AAAA,YACrB,aAAa,EAAE,yCAAyC;AAAA,YACxD,gBAAgB;AAAA,YAChB,aAAa;AAAA,YACb,UAAQ;AAAA,UAAA;AAAA,QAAA,GAEZ;AAAA,4BAEC,MAAA,EAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACrB,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO,EAAE,oCAAoC;AAAA,YAC7C,SAAQ;AAAA,YACR,eAAc;AAAA,YACd,MAAM,eAAe;AAAA,YACrB,aAAa,EAAE,0CAA0C;AAAA,YACzD,gBAAgB;AAAA,YAChB,aAAa;AAAA,YACb,UAAQ;AAAA,YACR,gBAAc;AAAA,UAAA;AAAA,QAAA,GAElB;AAAA,4BAEC,MAAA,EAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACjB,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO,EAAE,8CAA8C;AAAA,YACvD,MAAM,eAAe;AAAA,YACrB,aAAa,EAAE,oDAAoD;AAAA,YACnE,gBAAgB;AAAA,YAChB,aAAa;AAAA,YACb,UAAQ;AAAA,UAAA;AAAA,QAAA,EACV,CACN;AAAA,MAAA,EAAA,CAGF;AAAA,IAAA;AAAA,EAAA,GAED,CAAC,GAAG,SAAS,YAAY,CAAC;AAE7B,QAAM,oBAAoB,QAAQ,MAChC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OACE,oBAAC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBACzC,UAAA,EAAE,kCAAkC,EAAA,CACvC;AAAA,MAEF,gBAAgB;AAAA,QACd,iBAAiB;AAAA,QACjB,WAAW;AAAA,MAAA;AAAA,MAGb,UAAA,qBAAC,MAAA,EAAK,WAAS,MAAC,SAAS,GACvB,UAAA;AAAA,QAAA,oBAAC,QAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACrB,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO,EAAE,8CAA8C;AAAA,YACvD,SAAQ;AAAA,YACR,eAAc;AAAA,YACd,MAAM,eAAe;AAAA,YACrB,aAAa,EAAE,oDAAoD;AAAA,YACnE,gBAAgB;AAAA,YAChB,aAAa;AAAA,YACb,UAAQ;AAAA,YACR,eAAe,EAAE,oBAAoB,aAAA;AAAA,YACrC,SAAS,CAAA;AAAA,UAAC;AAAA,QAAA,GAEd;AAAA,4BACC,MAAA,EAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACrB,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO,EAAE,wCAAwC;AAAA,YACjD,SAAQ;AAAA,YACR,eAAc;AAAA,YACd,MAAM,eAAe;AAAA,YACrB,aAAa,EAAE,8CAA8C;AAAA,YAC7D,gBAAgB;AAAA,YAChB,aAAa;AAAA,YACb,UAAQ;AAAA,YACR,SAAS,CAAA;AAAA,UAAC;AAAA,QAAA,EACZ,CACF;AAAA,MAAA,EAAA,CACF;AAAA,IAAA;AAAA,EAAA,GAED,CAAC,GAAG,OAAO,CAAC;AAEf,QAAM,iBAAiB,QAAQ;;AAC7B;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,4BACG,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBACzC,UAAA;AAAA,UAAA,EAAE,+BAA+B;AAAA,UAClC,oBAAC,QAAA,EAAK,WAAU,kBAAiB,UAAA,KAAC;AAAA,YACjC,sCAAS,6BAAT,mBAAoC,eAAe,aAClD,oBAAC,QAAA,EAAK,WAAU,SACb,uDAAS,gDAA2B,eAAe,gCAAU,QAAA,CAChE;AAAA,QAAA,GAEJ;AAAA,QAEF,gBAAgB;AAAA,UACd,iBAAiB;AAAA,UACjB,WAAW;AAAA,QAAA;AAAA,QAGb,UAAA,oBAAC,QAAK,SAAS,GACb,8BAAC,MAAA,EAAK,MAAI,MAAC,IAAI,IACb,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAM,CAAC,GAAG,WAAW;AAAA,YACrB,SAAS,aAAa,cAAc;AAAA,YACpC,iBAAiB,EAAE,QAAQ,GAAG,OAAO,GAAA;AAAA,YACrC,YAAY;AAAA,YACZ,sBAAsB;AAAA,YACtB,YAAY;AAAA,YACZ,aAAa,CAAC,gBAAgB;AAAA,YAC9B,oBAAoB;AAAA,YACpB,qBAAmB;AAAA,YACnB,4BAA0B;AAAA,YAC1B,iBAAgB;AAAA,YAChB,iBAAe;AAAA,YACf,aAAa,CAAC,SAAS,mBAAmB,MAAM,aAAa,gBAAgB,IAAI;AAAA,YACjF,WAAW,CAAC,SAAS,mBAAmB,MAAM,aAAa,gBAAgB,IAAI;AAAA,YAC/E,aAAa,CAAC,QAAQ,UAAU,aAAa,gBAAgB,GAAG;AAAA,YAChE,kBAAkB;AAAA,UAAA;AAAA,QAAA,GAEtB,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,KAGD,CAAC,GAAG,aAAa,cAAc,MAAM,CAAC;AAEzC,QAAM,iBAAiB,QAAQ;;AAC7B;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,4BACG,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBACzC,UAAA;AAAA,UAAA,EAAE,+BAA+B;AAAA,UAClC,oBAAC,QAAA,EAAK,WAAU,kBAAiB,UAAA,KAAC;AAAA,YACjC,sCAAS,6BAAT,mBAAoC,eAAe,cAClD,oBAAC,QAAA,EAAK,WAAU,SACb,uDAAS,gDAA2B,eAAe,iCAAW,QAAA,CACjE;AAAA,QAAA,GAEJ;AAAA,QAEF,gBAAgB;AAAA,UACd,iBAAiB;AAAA,UACjB,WAAW;AAAA,QAAA;AAAA,QAGb,UAAA,oBAAC,QAAK,SAAS,GACb,8BAAC,MAAA,EAAK,MAAI,MAAC,IAAI,IAEb,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAM,CAAC,GAAG,WAAW;AAAA,YACrB,SAAS,aAAa,cAAc;AAAA,YACpC,iBAAiB,EAAE,QAAQ,GAAG,OAAO,GAAA;AAAA,YACrC,YAAY;AAAA,YACZ,sBAAsB;AAAA,YACtB,YAAY;AAAA,YACZ,aAAa,CAAC,gBAAgB;AAAA,YAC9B,oBAAoB;AAAA,YACpB,qBAAmB;AAAA,YACnB,4BAA0B;AAAA,YAC1B,iBAAgB;AAAA,YAChB,iBAAe;AAAA,YACf,aAAa,CAAC,SAAS,mBAAmB,MAAM,aAAa,gBAAgB,KAAK;AAAA,YAClF,WAAW,CAAC,SAAS;AACnB,iCAAmB,MAAM,aAAa,gBAAgB,KAAK;AAE3D,kBAAI,KAAK,IAAI,UAAU,GAAG;AACxB;AAAA,kBACE,GAAG,uBAAuB,IAAI,eAAe,kBAAkB;AAAA,kBAC/D,KAAK,OAAO,QAAQ;AAAA,gBAAA;AAEtB;AAAA,kBACE,GAAG,uBAAuB,IAAI,eAAe,UAAU;AAAA,kBACvD,KAAK,OAAO,cAAc;AAAA,gBAAA;AAE5B;AAAA,kBACE,GAAG,uBAAuB,IAAI,eAAe,SAAS;AAAA,kBACtD,KAAK,OAAO,SAAS;AAAA,gBAAA;AAAA,cAEzB;AAAA,YACF;AAAA,YACA,aAAa,CAAC,QAAQ;AACpB,kBAAI,IAAI,UAAU,GAAG;AACnB,gCAAgB,EAAE,mDAAmD,GAAG,EAAE,SAAS,SAAS;AAC5F,uBAAO,QAAQ,QAAA;AAAA,cACjB;AACA,qBAAO,UAAU,aAAa,gBAAgB,GAAG;AAAA,YACnD;AAAA,YACA,kBAAkB;AAAA,UAAA;AAAA,QAAA,GAEtB,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,KAGD,CAAC,GAAG,aAAa,cAAc,MAAM,CAAC;AAEzC,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAS;AAAA,MACT,WAAS;AAAA,MACT,IAAI,EAAE,WAAW,SAAA;AAAA,MAChB,GAAG;AAAA,MAEH,UAAA;AAAA,QAAA,kCAAe,aAAA,EAAY;AAAA,QAC5B,qBAAC,QAAA,EAAK,UAAU,aAAa,QAAQ,GAAG,WAAU,oBAAmB,OAAO,EAAE,UAAU,YAAY,UAAU,UAC5G,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cAAY,WAAU;AAAA,cAErB,UAAA;AAAA,gBAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,WAAU,QAAO,UAC1C,UAAA,OAAO,IAAI,GAAA,CACd;AAAA,gBACA,oBAAC,cAAW,SAAS,YACnB,8BAACI,SAAA,EAAM,UAAS,SAAQ,EAAA,CAC1B;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,+BAGD,eAAA,EACE,UAAA;AAAA,YAAA;AAAA,YACD,oBAAC,SAAA,EAAQ,WAAU,uBAAA,CAAuB;AAAA,YACzC;AAAA,YACD,oBAAC,SAAA,EAAQ,WAAU,uBAAA,CAAuB;AAAA,YACzC;AAAA,YACD,oBAAC,SAAA,EAAQ,WAAU,uBAAA,CAAuB;AAAA,YACzC;AAAA,UAAA,GACH;AAAA,UAEA,oBAAC,eAAA,EAAc,WAAU,gCAA+B,IAAI;AAAA,YAC1D,UAAU;AAAA,YACV,QAAQ;AAAA,YACR,iBAAiB;AAAA,YACjB,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,gBAAgB;AAAA,UAAA,GAEhB,UAAA,qBAAC,KAAA,EAAI,SAAQ,QAAO,KAAK,KACvB,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,SAAS;AAAA,gBAER,YAAE,eAAe;AAAA,cAAA;AAAA,YAAA;AAAA,YAEpB;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,SAAS,aAAa,QAAQ;AAAA,gBAE7B,YAAE,aAAa;AAAA,cAAA;AAAA,YAAA;AAAA,UAClB,EAAA,CACF,EAAA,CACF;AAAA,QAAA,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;ACz4BA,MAAMP,sBAAoB,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAAkB;AACjB,QAAM,QAA8B,CAAA;AACpC,MAAI,CAAC,UAAU;AACd,UAAM;AAAA,MACL,oBAAC,UAAA,EAAS,UAAQ,MAAC,OAAM,IAAG,IAAI,EAAE,SAAS,gBAAgB,QAAQ,gBAAgB,GAAG,gBAAgB,GAAG,eAAA,GACxG,UAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,wBAC3B,UAAA,oBAAC,MAAA,EAAI,UAAA,YAAA,CAAY,EAAA,CAClB,EAAA,CACD;AAAA,IAAA;AAAA,EAEF;AACA,qCAAS,QAAQ,CAAC,QAAQ,UAAU;AACnC,UAAM;AAAA,MACL;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,OAAO,OAAO;AAAA,UAEd,UAAU,QAAQ,OAAO,QAAQ;AAAA,UACjC,YAAW,iCAAQ,WAAU,2BAA2B;AAAA,UACxD,UAAA,qBAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,KAC/B,UAAA;AAAA,YAAA,YAAY,mBACZ;AAAA,cAAC;AAAA,cAAA;AAAA,gBACA,SAAS,QAAQ,WAAU,iCAAQ,QAAQ,OAAO,UAAS,EAAE;AAAA,cAAA;AAAA,YAAA;AAAA,gCAG9D,YAAA,EAAW,MAAK,MAAK,OAAM,wBAC1B,iBAAO,MAAA,CACT;AAAA,UAAA,EAAA,CACD;AAAA,QAAA;AAAA,QAZK;AAAA,MAAA;AAAA,IAaN;AAED,SAAI,iCAAQ,YAAW,MAAM,QAAQ,iCAAQ,OAAO,GAAG;AACtD,aAAO,QAAQ,QAAQ,CAAC,QAAQ;AAC/B,cAAM;AAAA,UACL;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,OAAO,IAAI;AAAA,cACX,UAAU,QAAQ,IAAI,QAAQ;AAAA,cAC9B,IAAI,EAAE,IAAI,EAAA;AAAA,cAEV,UAAA,qBAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,KAC/B,UAAA;AAAA,gBAAA,YAAY,mBACZ;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACA,SAAS,QAAQ,WAAU,iCAAQ,QAAQ,IAAI,UAAS,EAAE;AAAA,kBAAA;AAAA,gBAAA;AAAA,oCAG3D,YAAA,EAAW,MAAK,MAAK,OAAM,wBAC1B,cAAI,MAAA,CACN;AAAA,cAAA,EAAA,CACD;AAAA,YAAA;AAAA,YAVK,GAAG,OAAO,KAAK,IAAI,IAAI,KAAK;AAAA,UAAA;AAAA,QAWlC;AAAA,MAEF,CAAC;AAAA,IACF;AAAA,EACD;AACA,MAAI,MAAM,eAAe;AACxB,UAAM;AAAA,2BACJ,KAAA,EACA,UAAA;AAAA,QAAA,oBAAC,SAAA,EAAQ,UAAQ,KAAA,CAAC;AAAA,QAClB,qBAAC,YAAS,IAAI,EAAE,KAAK,EAAA,GAAK,SAAS,MAAM,eACxC,UAAA;AAAA,UAAA,oBAAC,KAAA,EAAI,UAAS,QAAA,CAAQ;AAAA,UACtB,qBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,wBAAuB,UAAA;AAAA,YAAA;AAAA,YACtC,MAAM;AAAA,UAAA,EAAA,CACnB;AAAA,QAAA,EAAA,CACD;AAAA,MAAA,EAAA,CACD;AAAA,IAAA;AAAA,EAEF;AAEA,SAAO;AACR;AACA,MAAM,gBAAgB,CAAC;AAAA,EACtB;AAAA,EACA;AACD,MAGM;AACL,QAAM,eAAe,KAAK;AAAA,IACzB,CAAC,iBAAA;;AACA,uDAAS,KAAK,CAAC,WAAgB,OAAO,UAAU,kBAAhD,mBAA+D,UAC/D;AAAA;AAAA,EAAA;AAEF,QAAM,gBAAgB,aAAa,OAAO,OAAO;AACjD,SACC;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,MAAK;AAAA,MACL,OAAM;AAAA,MACN,IAAI,EAAE,SAAS,QAAQ,KAAK,GAAG,YAAY,UAAU,IAAI,IAAA;AAAA,MACxD,UAAA;AAAA,QAAA,cAAc,MAAM,GAAG,EAAE,KAAK,IAAI;AAAA,QAClC,KAAK,SAAS,KACd,oBAAC,MAAA,EAAK,SAAQ,YAAW,MAAK,UAAS,OAAO,oBAAC,UAAA,CAAA,CAAS,EAAA,CAAI;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIhE;AAEA,MAAM,gBAAiBE,eAAM,KAAK,CAAC,UAAe;AACjD,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,CAAA,CAAE;AACzC,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAS,IAAI;AACvD,QAAM,EAAE,kBAAkB;AAC1B,YAAU,MAAM;AACf,QAAI,eAAe;AAClB,oBAAc,aAAa;AAAA,IAC5B;AAAA,EACD,GAAG,CAAC,eAAe,aAAa,CAAC;AACjC,QAAM,eAAe,CAAC,WAAmB;;AACxC,UAAI,WAAM,YAAN,mBAAe,WAAU,QAAQ;AACpC,YAAM,kBAAkB,MAAM,QAAQ;AAAA,QAAO,CAAC;;AAC7CA,gCAAM,eAAe,IAAI,KAAK,KAC3B,MAAAC,MAAA,2BAAK,gBAAL,gBAAAA,IAAkB,kBAAlB,mBAAiC,SAAS,OAAO,iBACjD,IAAI,MAAM,cAAc,SAAS,OAAO,YAAA,CAAa;AAAA;AAAA,MAAA;AAEzD,iBAAW,eAAe;AAAA,IAC3B,OAAO;AACN,iBAAW,MAAM,OAAO;AAAA,IACzB;AAAA,EACD;AAEA,QAAM,iBAAiB,CAAC,kBAAyB;AAChD,WAAO,+CAAe,OAAO,CAAC,WAAW;AAAA,EAC1C;AACA,QAAM,mBAAmB,YAAY,MAAM;AAC1C,eAAW,MAAM,OAAO;AAAA,EACzB,GAAG,CAAC,MAAM,OAAO,CAAC;AAElB,YAAU,MAAM;AACf,qBAAA;AAAA,EACD,GAAG,CAAC,gBAAgB,CAAC;AACpB,QAAM,EAAE,EAAA,IAAM,eAAA;AAEf,SACC;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,SAAS,MAAM;AAAA,MACf,MAAM,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,MAC3C,QAAQ,CAAC,EAAE,OAAO,WAAA;;AACjB,oCAAA,UAAA,EACE,UAAA;AAAA,UAAA,MAAM,gBAAgB,oBACpB,iBAAiB,MAAM,KAAK,IAC5B,iBAAiB,IAAI;AAAA,UACxB;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,GAAG;AAAA,cAIJ,WAAS;AAAA,cACT,cAAc,MAAM;AAAA,cACpB,UAAU,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,cAC/C,aAAa,MAAM;AAAA,cACnB,OAAO,MAAM;AAAA,cACb,SACC,WAAM,UAAN,mBAAa,SAAM,WAAM,UAAN,mBAAa,UAAS,MAAM,UAAU,MAAM,iBAAiB,CAAA,IAAK;AAAA,cAEtF,cACC,MAAM,iBAAiB,MAAM,iBAAiB,CAAA,IAAK;AAAA,cAEpD,UAAU,MAAM,aAAa,YAAY,QAAQ,MAAM;AAAA,cACvD,MAAM,MAAM,QAAQ;AAAA,cACpB,UAAU,MAAM,kBAAkB;AAAA,cAClC,UAAU,MAAM;AAAA,cAChB,SAAQ;AAAA,cACR,WACC,MAAM,oBAAkB,oBAAe,MAAM,KAAK,MAA1B,mBAA6B,UAClD,gBACA;AAAA,cAEJ,aAAa,CAAC,aAAA;;uDAEX,UAAA,MAAM,QAAQ,QAAQ,IACtB;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACA,eAAe,MAAM;AAAA,oBACrB,MAAM,eAAe,QAAQ;AAAA,oBAC7B,aAAa,MAAM;AAAA,oBACnB,UAAU,+BAAO;AAAA,oBACjB,UAAU,MAAM;AAAA,kBAAA;AAAA,gBAAA,MAGjBA,MAAA,mCAAS;AAAA,kBACR,CAAC,WAAA;;AACC,8BAAAA,MAAA,OAAO,UAAP,gBAAAA,IAAc,OAAM,OAAO,WAAW;AAAA;AAAA,sBAFzC,gBAAAA,IAGG,UACH,YACA,MAAM,YAAA,CAER;AAAA;AAAA,cAED,mBAAmB,GAAG,EAAE,eAAe,CAAC,IAAI,MAAM,KAAK;AAAA,cACvD;AAAA,cACA,OAAO,SAAQ,gBAAW,UAAX,mBAAkB,OAAO;AAAA,cACxC,cAAY,gBAAW,UAAX,mBAAkB,YAAW;AAAA,cACzC,QAAQ,MAAM;AAAA,cACd,OACC,EAAC,+BAAO,mBAAkB,CAAC,MAAM,aAAY,+BAAO,SACnD;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACA,OAAM;AAAA,kBACN,cACC,oBAAC,gBAAA,EAAe,UAAS,OACvB,gBAAM,SACN;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACA,cAAW;AAAA,sBACX,SAAS,MAAM,MAAM,SAAS,IAAI;AAAA,sBAClC,MAAK;AAAA,sBACL,IAAI,EAAE,IAAI,IAAA;AAAA,sBACV,MAAK;AAAA,sBACL,8BAACI,SAAA,EAAM,IAAI,EAAE,UAAU,SAAO,CAAG;AAAA,oBAAA;AAAA,kBAAA,EAClC,CAEF;AAAA,gBAAA;AAAA,cAAA,IAGC;AAAA,cAEL,SAAS,+BAAO;AAAA,cACf,UAAAP,oBAAkB;AAAA,gBAClB;AAAA,gBACA,UAAU,QAAQ,MAAM,cAAc;AAAA,gBACtC,aAAa,MAAM;AAAA,gBACnB,QAAQ,MAAM;AAAA,gBACd,iBAAiB;AAAA,gBACjB,OAAO;AAAA,cAAA,CACP;AAAA,YAAA;AAAA,UAAA;AAAA,UAED,MAAM,kBAAkB,MAAM,QAAQ,+BAAO,KAAK,KAClD,oBAAC,eAAA,EAAc,MAAM,MAAM,OAAO,QAAA,CAAkB;AAAA,QAAA,EAAA,CAEtD;AAAA;AAAA,IAAA;AAAA,EAAA;AAIJ,CAAC;AAED,cAAc,YAAY;AAAA,EACzB,MAAM,UAAU,OAAO;AAAA,EACvB,aAAa,UAAU,OAAO;AAAA,EAC9B,OAAO,UAAU,OAAO;AAAA,EACxB,MAAM,UAAU;AAAA,EAChB,SAAS,UAAU;AAAA,IAClB,UAAU,MAAM;AAAA,MACf,OAAO,UAAU;AAAA,MACjB,OAAO,UAAU;AAAA,IAAA,CACjB;AAAA,EAAA,EACA;AAAA,EACF,aAAa,UAAU,MAAM;AAAA,IAC5B,UAAU,UAAU,KAAK;AAAA,IACzB,UAAU,UAAU;AAAA,EAAA,CACpB,EAAE;AAAA,EACH,cAAc,UAAU;AAAA,EACxB,gBAAgB,UAAU;AAAA,EAC1B,IAAI,UAAU;AAAA,EACd,UAAU,UAAU;AAAA,EACpB,gBAAgB,UAAU;AAAA,EAC1B,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,aAAa,UAAU;AAAA,EACvB,UAAU,UAAU;AAAA,EACpB,cAAc,UAAU;AAAA,EACxB,eAAe,UAAU;AAAA,EACzB,eAAe,UAAU;AAAA,EACzB,eAAe,UAAU;AAAA,EACzB,YAAY,UAAU;AAAA,EACtB,eAAe,UAAU;AAC1B;ACpSA,MAAM,gBAAgB,CAAC,UAAe;AACpC,QAAM,EAAE,MAAM,SAAS,WAAW,SAAS,GAAG,SAAS;AAEvD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACC,GAAG;AAAA,MACJ,UAAU;AAAA,MAET,UAAA,MAAM;AAAA,IAAA;AAAA,EAAA;AAGb;AAEA,cAAc,YAAY;AAAA,EACxB,MAAM,UAAU,OAAO;AAAA,EACvB,SAAS,UAAU;AAAA,EACnB,MAAM,UAAU;AAAA,EAChB,OAAO,UAAU;AAAA,EACjB,SAAS,UAAU;AAAA,EACnB,WAAW,UAAU;AAAA,EACrB,SAAS,UAAU;AAAA,EACnB,WAAW,UAAU;AACvB;ACTA,MAAM,kBAA8C,CAAC;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB,OAAAjB;AAAA,EACA,aAAa;AAAA;AAAA,EACb;AAAA,EACA;AACD,MAAM;AACL,QAAM,EAAC,MAAA,IAAO,YAAA;AACd,SACC;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,SAAS;AAAA,MACT,MAAM,GAAG,cAAc,IAAI,IAAI;AAAA,MAC/B,QAAQ,CAAC,EAAE,MAAA,MACV,qBAAA,UAAA,EACE,UAAA;AAAA,QAAA,SACA;AAAA,UAAC;AAAA,UAAA;AAAA,YACA,MAAK;AAAA,YACL,QAAO;AAAA,YACP,OAAM;AAAA,YACN,iBAAe;AAAA,YACf,IAAI,EAAE,IAAI,IAAA;AAAA,YACT,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAIH,qBAAC,OAAA,EAAM,WAAU,OAAM,SAAS,QAAM,KAAG,MAAM,YAAW,UAAU,GAAG,YACrE,UAAA;AAAA,UAAA,kBAAkB,WAClB;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,MAAK;AAAA,cACL,QAAO;AAAA,cACP,OAAO;AAAA,cAAY,UAAA;AAAA,gBAAA;AAAA,gBAClBA;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGH;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,SAAS,QAAQ,MAAM,KAAK;AAAA,cAC5B,UAAU,MAAM;AAAA,cAChB;AAAA,cACA,MAAK;AAAA,cACL,IAAI,EAAE,GAAG,EAAA;AAAA,cACR,GAAG;AAAA,YAAA;AAAA,UAAA;AAAA,UAEJ,kBAAkB,SAClB;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,MAAK;AAAA,cACL,QAAO;AAAA,cACP,OAAO;AAAA,cAAY,UAAA;AAAA,gBAAA;AAAA,gBAClBA;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QACF,EAAA,CAEF;AAAA,MAAA,EAAA,CACD;AAAA,IAAA;AAAA,EAAA;AAIJ;ACxDA,MAAM,cAAcmB,eAAM,KAAuB,CAAC,UAAU;AAI1D,QAAM,YAAY;AAAA,IAAQ,MACxB,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,IACrC,CAAC,MAAM,gBAAgB,MAAM,IAAI;AAAA,EAAA;AAInC,QAAM,EAAE,SAAS,QAAA,IAAY,QAAQ,MAAM;AACzC,UAAM,MAAM,MAAM,MAAM,YAAY,IAAI,EAAE,QAAA,IACtC,MAAM,MAAM,QAAQ,IACpB;AAEJ,UAAM,MAAM,MAAM,MAAM,YAAY,IAAI,EAAE,QAAA,IACtC,MAAM,MAAM,QAAQ,IACpB;AAEJ,WAAO,EAAE,SAAS,KAAK,SAAS,IAAA;AAAA,EAClC,GAAG,CAAC,MAAM,UAAU,MAAM,QAAQ,CAAC;AAGnC,QAAM,aAAa;AAAA,IAAQ,MACzB,MAAM,aAAa,YAAY,QAAQ,MAAM;AAAA,IAC7C,CAAC,MAAM,UAAU,MAAM,QAAQ;AAAA,EAAA;AAGjC,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS,MAAM;AAAA,MACf,MAAM;AAAA,MACN,QAAQ,CAAC,EAAE,OAAO,iBAAW;;AAC3B;AAAA,UAAC;AAAA,UAAA;AAAA,YACE,GAAG;AAAA,YAEJ,cAAc,MAAM;AAAA,YACpB,UAAU;AAAA,YACV,OAAO,MAAM;AAAA,YACb,aAAa,MAAM;AAAA,YACnB,UAAU;AAAA,YACV,cAAc,MAAM;AAAA,YACpB,oBAAoB,MAAM;AAAA,YAC1B,kBAAkB,MAAM;AAAA,YACxB,aAAY,gBAAW,UAAX,mBAAkB;AAAA,YAC9B,OAAO,QAAQ,WAAW,KAAK;AAAA,YAC/B,UAAU,MAAM;AAAA,YAChB;AAAA,YACA;AAAA,YACC,IAAI,+BAAO,UAAS,EAAE,OAAO,+BAAO,MAAA;AAAA,UAAM;AAAA,QAAA;AAAA;AAAA,IAC7C;AAAA,EAAA;AAIR,CAAC;AAED,YAAY,cAAc;AAE1B,YAAY,YAAY;AAAA,EACtB,aAAa,UAAU,MAAM;AAAA,IAC3B,UAAU,UAAU,KAAK;AAAA,IACzB,UAAU,UAAU;AAAA,EAAA,CACrB,EAAE;AAAA,EACH,MAAM,UAAU,OAAO;AAAA,EACvB,OAAO,UAAU,OAAO;AAAA,EACxB,gBAAgB,UAAU;AAAA,EAC1B,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,aAAa,UAAU;AAAA,EACvB,cAAc,UAAU;AAAA,EACxB,yBAAyB,UAAU;AAAA,EACnC,uBAAuB,UAAU;AAAA,EACjC,aAAa,UAAU;AAAA,EACvB,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AACtB;ACpGA,MAAM,kBAAkB,CAAC,UAAe;AACpC,SACI;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,SAAS,MAAM;AAAA,MACf,MAAM,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,MAC3C,QAAQ,CAAC,EAAE,OAAO,iBAAW;;AACzB;AAAA,UAAC;AAAA,UAAA;AAAA,YACI,GAAG;AAAA,YACJ,MAAM,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,YAC3C,WAAS;AAAA,YACT,OAAO,MAAM;AAAA,YACb,cAAc,MAAM,cAAc,QAAQ,WAAW,EAAE;AAAA,YACvD,aAAa,MAAM;AAAA,YACnB,WAAW,MAAM,gBAAgB;AAAA,YACjC,UAAU,MAAM;AAAA,YAChB,UAAU,MAAM;AAAA,YAChB,YAAY;AAAA,cACR,OAAM,+BAAO,eAAc;AAAA,cAC3B,KAAM,MAAM,cAAe;AAAA,cAC3B,KAAM,MAAM,cAAc;AAAA,cAC1B,WAAW;AAAA,cACX,SAAU,GAAG,MAAM,WAAW,KAAK,aAAa;AAAA,YAAA;AAAA,YAGpD,YAAY;AAAA,cACR,gBACI;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACG,UAAS;AAAA,kBACT,IAAI;AAAA,oBACA,SAAS;AAAA,oBACT,YAAY;AAAA,oBACZ,gBAAgB;AAAA,oBAChB,aAAa;AAAA,oBACb,OAAO;AAAA,oBACP,QAAQ;AAAA,oBACR,wBAAwB;AAAA,oBACxB,qBAAqB;AAAA,kBAAA;AAAA,kBAGvB,UAAA,MAAM,iBAAiB,OAAO,MAAM,eAAiB;AAAA,gBAAA;AAAA,cAAA;AAAA,YAC3D;AAAA,YAKR,OAAO,SAAQ,gBAAW,UAAX,mBAAkB,OAAO;AAAA,YACxC,cAAY,gBAAW,UAAX,mBAAkB,YAAW;AAAA,YACzC,QAAU,MAAM;AAAA,YACnB,UAAW,CAAC,MAAY;AACrB,oBAAM,eAAe,EAAE,OAAO,MAAM,QAAQ,WAAY,EAAE;AAC1D,oBAAM,SAAS,YAAY;AAAA,YAC9B;AAAA,UAAA;AAAA,QAAA;AAAA;AAAA,IACD;AAAA,EAAA;AAIhB;AACA,gBAAgB,YAAY;AAAA,EACxB,aAAa,UAAU,MAAM;AAAA,IACzB,UAAU,UAAU,KAAK;AAAA,IACzB,UAAU,UAAU;AAAA,IACpB,YAAY,UAAU,OAAO;AAAA,EAAA,CAChC,EAAE;AAAA,EACH,cAAc,UAAU;AAAA,EACxB,MAAM,UAAU,OAAO;AAAA,EACvB,OAAO,UAAU,KAAK;AAAA,EACtB,gBAAgB,UAAU;AAAA,EAC1B,UAAU,UAAU;AAAA,EACpB,cAAc,UAAU;AAAA,EACxB,KAAK,UAAU;AAAA,EACf,KAAK,UAAU;AAAA,EACf,YAAY,UAAU;AAAA,EACtB,YAAY,UAAU;AAAA,EACtB,YAAY,UAAU;AAAA,EACtB,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,YAAY,UAAU;AAAA,EACtB,aAAc,UAAU;AAAA,EACxB,cAAc,UAAU;AAE5B;AC7EA,MAAM,oBAAoB,CAAC,UAAe;;AACxC,QAAM,CAAA,EAAG,GAAG,IAAI,QAAQ;AAAA,IACtB,MAAM;AAAA,IACN,MAAM,EAAE,OAAO,MAAM,MAAA;AAAA,EAAM,CAC5B;AACD,QAAM,CAAA,EAAG,IAAI,IAAI,QAAQ;AAAA,IACvB,QAAQ;AAAA,IACR,OAAO,CAAC,mBAAwB;AAC9B,YAAM,eAAe,eAAe;AACpC,YAAM,YAAY,MAAM;AACxB,UAAI,cAAc,cAAc;AAC9B;AAAA,MACF;AAEA,YAAM,KAAK,cAAc,SAAS;AAAA,IACpC;AAAA,IACA,MAAM,MAAM;AACV,YAAM,YAAA;AAAA,IACR;AAAA,EAAA,CACD;AAGD,QAAM,kBAAkB,GACtB,MAAM,cACF,iCACA,+BACN;AACA,QAAM,mBAAmB,KACvB,0CAAO,aAAP,mBAAiB,UAAjB,mBAAwB,iBAAgB,WACpC,KACA,+BACN;AAEA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAI;AAAA,MACJ,KAAI,+BAAO,aAAY,UAAU,KAAK;AAAA,MACtC,WAAW,GAAG,eAAe,IAAI,gBAAgB;AAAA,MACjD,KAAK,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC;AAAA,MAE7B,UAAA;AAAA,QAAA,oBAAC,KAAA,EAAI,IAAI,EAAE,OAAO,OAAA,GAAU,SAAS,MAAM,SACxC,UAAA,MAAM,SAAA,CACT;AAAA,QACA,qBAAC,OAAA,EAAI,WAAU,iCACb,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAK,OAAO;AAAA,cACZ,SAAS,MAAM,MAAM,gBAAgB,MAAM,KAAK;AAAA,YAAA;AAAA,UAAA;AAAA,YAEjD,0CAAO,aAAP,mBAAiB,UAAjB,mBAAwB,iBAAgB,YACvC;AAAA,YAACd;AAAAA,YAAA;AAAA,cACC,OAAO,EAAE,UAAU,QAAQ,OAAO,UAAA;AAAA,cAClC,SAAS,MAAM;AACb,sBAAM,cAAc,MAAM,KAAK;AAC/B,sBAAM,cAAA;AAAA,cACR;AAAA,YAAA;AAAA,UAAA;AAAA,QACF,EAAA,CAEJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,kBAAkB,YAAY;AAAA,EAC5B,eAAe,UAAU,KAAK;AAAA,EAC9B,OAAO,UAAU,OAAO;AAAA,EACxB,SAAS,UAAU;AAAA,EACnB,UAAU,UAAU,KAAK;AAAA,EACzB,MAAM,UAAU;AAAA,EAChB,aAAa,UAAU;AAAA,EACvB,aAAa,UAAU;AAAA,EACvB,iBAAiB,UAAU;AAAA,EAC3B,eAAe,UAAU;AAAA,EACzB,SAAS,UAAU;AAAA,EACnB,eAAgB,UAAU;AAC5B;AC5EA,MAAM,qBAAqB,CAAC,UAAe;AACvC,QAAM,CAAC,eAAe,eAAe,IAAI,SAAS,MAAM,QAAQ,CAAC,EAAE,KAAK;AACxE,QAAM,qBAAqB,CAAC,UAAe;AACvC,oBAAgB,MAAM,OAAO,KAAK;AAAA,EACtC;AACA,SACI;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,SAAS,MAAM;AAAA,MACf,MAAM,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,MAC3C,QAAQ,CAAC,EAAE,OAAO,iBAAW;;AACzB;AAAA,UAAC;AAAA,UAAA;AAAA,YACI,GAAG;AAAA,YACJ,MAAM,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,YAC3C,WAAS;AAAA,YACT,OAAO,MAAM;AAAA,YACb,aAAa,MAAM;AAAA,YACnB,WAAW,MAAM,gBAAgB;AAAA,YACjC,UAAU,MAAM;AAAA,YAChB,UAAU,MAAM;AAAA,YAChB,YAAY;AAAA,cACR,OAAM,+BAAO,eAAc;AAAA,cAC3B,KAAK,MAAM,cAAc;AAAA,cACzB,KAAK,MAAM,cAAc;AAAA,cACzB,WAAW;AAAA,YAAA;AAAA,YAIf,YAAY;AAAA,cACR,cACI;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACG,UAAS;AAAA,kBACT,IAAI;AAAA,oBACA,SAAS;AAAA,oBACT,YAAY;AAAA,oBACZ,gBAAgB;AAAA,oBAChB,YAAY;AAAA,oBACZ,SAAS;AAAA,oBACT,QAAQ;AAAA,oBACR,wBAAwB;AAAA,oBACxB,qBAAqB;AAAA,oBACrB,iBAAiB;AAAA,oBACjB,QAAQ;AAAA,oBACR,WAAW;AAAA,oBACX,cAAc;AAAA,kBAAA;AAAA,kBAKlB,UAAA;AAAA,oBAACuC;AAAAA,oBAAA;AAAA,sBACG,OAAO;AAAA,sBACP,UAAU;AAAA,sBACV,IAAI;AAAA,wBACA,QAAQ;AAAA,wBACR,WAAW;AAAA,0BACP,iBAAiB;AAAA;AAAA,wBAAA;AAAA,wBAErB,WAAW;AAAA,0BACP,iBAAiB;AAAA;AAAA,wBAAA;AAAA,wBAErB,YAAY;AAAA,0BACR,iBAAiB;AAAA;AAAA,wBAAA;AAAA,wBAErB,iBAAiB;AAAA,0BACb,iBAAiB;AAAA;AAAA,wBAAA;AAAA,wBAErB,kDAAkD;AAAA,0BAC9C,aAAa;AAAA;AAAA,wBAAA;AAAA,sBACjB;AAAA,sBAEJ,SAAQ;AAAA,sBACR,kBAAgB;AAAA,sBAEhB,eAAe;AAAA,sBAGd,WAAA,WAAM,YAAN,mBAAe,IAAI,CAAC,MAAW,UAC5B;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BAEG,OAAO,KAAK;AAAA,0BACZ,IAAI;AAAA,4BACA,WAAW;AAAA,8BACP,iBAAiB;AAAA;AAAA,4BAAA;AAAA,4BAErB,kBAAkB;AAAA,8BACd,iBAAiB;AAAA;AAAA,4BAAA;AAAA,4BAErB,wBAAwB;AAAA,8BACpB,iBAAiB;AAAA;AAAA,4BAAA;AAAA,0BACrB;AAAA,0BAGH,UAAA,KAAK;AAAA,wBAAA;AAAA,wBAdD;AAAA,sBAAA;AAAA,oBAgBZ;AAAA,kBAAA;AAAA,gBACL;AAAA,cAAA;AAAA,YAEJ;AAAA,YAKR,OAAO,SAAQ,gBAAW,UAAX,mBAAkB,OAAO;AAAA,YACxC,cAAY,gBAAW,UAAX,mBAAkB,YAAW;AAAA,YACzC,QAAQ,MAAM;AAAA,YACd,UAAU,CAAC,MAAW;AAClB,oBAAM,SAAS,EAAE,OAAO,KAAK;AAAA,YACjC;AAAA,UAAA;AAAA,QAAA;AAAA;AAAA,IACJ;AAAA,EAAA;AAIhB;AACA,mBAAmB,YAAY;AAAA,EAC3B,aAAa,UAAU,MAAM;AAAA,IACzB,UAAU,UAAU,KAAK;AAAA,IACzB,UAAU,UAAU;AAAA,IACpB,YAAY,UAAU,OAAO;AAAA,EAAA,CAChC,EAAE;AAAA,EACH,cAAc,UAAU;AAAA,EACxB,MAAM,UAAU,OAAO;AAAA,EACvB,OAAO,UAAU,KAAK;AAAA,EACtB,gBAAgB,UAAU;AAAA,EAC1B,UAAU,UAAU;AAAA,EACpB,cAAc,UAAU;AAAA,EACxB,KAAK,UAAU;AAAA,EACf,KAAK,UAAU;AAAA,EACf,YAAY,UAAU;AAAA,EACtB,YAAY,UAAU;AAAA,EACtB,YAAY,UAAU;AAAA,EACtB,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,YAAY,UAAU;AAAA,EACtB,aAAa,UAAU;AAG3B;AC3HA,MAAM,mBAAmB,CAAmC;AAAA,EAC1D;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB;AACF,MAA2C;AAEzC,QAAM,CAAC,YAAY,aAAa,IAAI,SAAiB,EAAE;AAEvD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS;AAAA,MACT,MAAM,GAAG,cAAc,IAAI,IAAI;AAAA,MAC/B,QAAQ,CAAC,EAAE,OAAO,EAAE,QAAQ,IAAI,SAAA,QAAiB;AAC/C,cAAM,OAAO,QAAQ,MAAM,MAAM,GAAG,EAAE,IAAI,CAAC,QAAgB,IAAI,KAAA,CAAM,IAAI,CAAA;AAEzE,cAAM,gBAAgB,CAAC,UAAiD;AACtE,cAAI,MAAM,QAAQ,OAAO;AAEvB,kBAAM,oBAAoB,WAAW,KAAA;AAGrC,gBAAI,qBAAqB,CAAC,KAAK,SAAS,iBAAiB,GAAG;AAC1D,oBAAM,eAAA;AAGN,oBAAM,UAAU,CAAC,GAAG,MAAM,iBAAiB;AAC3C,oBAAM,iBAAiB,QAAQ,KAAK,IAAI;AACxC,uBAAS,cAAc;AACvB,4BAAc,EAAE;AAAA,YAClB;AAAA,UACF;AAAA,QACF;AAEA,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW;AAAA,YACX,SAAS,CAAA;AAAA,YACT,UAAQ;AAAA,YACR,UAAQ;AAAA,YACR,WAAS;AAAA,YACT,OAAO;AAAA,YACP,UAAU,CAAC,OAAmC,aAA8B;AAC1E,oBAAM,kBAAiB,qCAAU,KAAK,UAAS;AAC/C,uBAAS,cAAc;AAAA,YACzB;AAAA,YACA,YAAY,CAACpC,QAAiB,mBAC5BA,OAAM,IAAI,CAAC,QAAQ,UACjB;AAAA,cAAC;AAAA,cAAA;AAAA,gBAIC,MAAK;AAAA,gBACL,OACE,oBAAC,YAAA,EAAW,OAAM,wBAAuB,MAAK,MAC3C,UAAA,QACH;AAAA,gBAED,GAAG,eAAe,EAAE,MAAA,CAAO;AAAA,cAAA;AAAA,cATvB;AAAA,YAAA,CAWR;AAAA,YAEH,aAAa,CAAC,WACZ;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC;AAAA,gBACA,MAAK;AAAA,gBACJ,GAAG;AAAA,gBACJ,OAAO;AAAA,gBACP,UAAU,CAAC,UAAc,cAAc,MAAM,OAAO,KAAK;AAAA,gBACzD,WAAW;AAAA,cAAA;AAAA,YAAA;AAAA,UACb;AAAA,QAAA;AAAA,MAIR;AAAA,IAAA;AAAA,EAAA;AAGN;AAGA,iBAAiB,YAAY;AAAA,EAC3B,aAAa,UAAU,MAAM;AAAA,IAC3B,UAAU,UAAU,KAAK;AAAA,IACzB,UAAU,UAAU;AAAA,IACpB,YAAY,UAAU,OAAO;AAAA,EAAA,CAC9B,EAAE;AAAA,EACH,MAAM,UAAU,OAAO;AAAA,EACvB,OAAO,UAAU,KAAK;AAAA,EACtB,gBAAgB,UAAU;AAC5B;ACjGA,MAAM,WAAW,CAAC,UAAyB;AACzC,QAAM,EAAE,OAAO,cAAc,UAAU,UAAU;AACjD,SACE,qBAAA,UAAA,EACE,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,QAAO;AAAA,QACP,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,iBAAe;AAAA,QACf,aAAW;AAAA,QACX,WAAU;AAAA,QAET,UAAA;AAAA,UAAA;AAAA,UACD,oBAAC,OAAA,EAAI,KAAKL,OAAK,KAAA,CAAM;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAEvB,oBAAC,YAAA,EAAW,OAAO,wBAAyB,mBAAS,OAAA,CAAO;AAAA,EAAA,GAC9D;AAEJ;ACxBA,MAAM,cAAc,CAAC,UAAe;AAClC,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS,MAAM;AAAA,MACf,MAAM,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,MAC3C,QAAQ,CAAC,EAAE,MAAA,MACT;AAAA,QAAC;AAAA,QAAA;AAAA,UACE,GAAG;AAAA,UACJ,cAAc,MAAM;AAAA,UACpB,UAAU,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,UAC/C,OAAO,MAAM;AAAA,UACb,OAAO,MAAM,gBAAgB;AAAA,QAAA;AAAA,MAAA;AAAA,IAC/B;AAAA,EAAA;AAIR;AAEA,YAAY,YAAY;AAAA,EACtB,aAAa,UAAU,MAAM;AAAA,IAC3B,UAAU,UAAU,KAAK;AAAA,IACzB,UAAU,UAAU;AAAA,EAAA,CACrB,EAAE;AAAA,EACH,MAAM,UAAU,OAAO;AAAA,EACvB,OAAO,UAAU,OAAO;AAAA,EACxB,gBAAgB,UAAU;AAAA,EAC1B,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,cAAc,UAAU;AAAA,EACxB,aAAa,UAAU;AAAA,EACvB,UAAU,UAAU;AACtB;AC7BA,MAAM,eAAegB,eAAM,KAAK,CAAC,UAAe;AAE9C,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS,MAAM;AAAA,MACf,MAAM,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,MAC3C,QAAQ,CAAC,EAAE,OAAO,YAAY,EAAE,MAAA,EAAM,MACpC,qBAAA,UAAA,EACE,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,cAAc,MAAM;AAAA,YACpB,UAAU,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,YAC/C,OAAO,MAAM;AAAA,YACb,UAAU,MAAM,aAAa,YAAY,QAAQ,MAAM;AAAA,YACvD,MAAM,MAAM;AAAA,YACZ,UAAU,+BAAO;AAAA,YACjB,UAAU,+BAAO;AAAA,YACjB,UAAU,+BAAO;AAAA,YACjB,MAAM,MAAM;AAAA,YACZ,QAAO,+BAAO,WAAS,+BAAO;AAAA,YAC9B,UAAU,QAAQ,+BAAO,WAAW;AAAA,UAAA;AAAA,QAAA;AAAA,QAErC,6BACE,YAAA,EAAW,OAAM,mBAAkB,MAAK,MAAM,gBAAM,QAAA,CAAQ;AAAA,MAAA,EAAA,CAEjE;AAAA,IAAA;AAAA,EAAA;AAIR,CAAC;AAED,aAAa,YAAY;AAAA,EACvB,aAAa,UAAU,MAAM;AAAA,IAC3B,UAAU,UAAU,KAAK;AAAA,IACzB,UAAU,UAAU;AAAA,EAAA,CACrB,EAAE;AAAA,EACH,MAAM,UAAU,OAAO;AAAA,EACvB,OAAO,UAAU,OAAO;AAAA,EACxB,gBAAgB,UAAU;AAAA,EAC1B,UAAU,UAAU;AAAA,EACpB,aAAa,UAAU;AAAA,EACvB,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,aAAa,UAAU;AAAA,EACvB,eAAe,UAAU;AAAA,EACzB,MAAM,UAAU;AAAA,EAChB,YAAY,UAAU;AAAA,EACtB,UAAU,UAAU;AAAA,EACpB,aAAa,UAAU;AAAA,EACvB,UAAU,UAAU;AACtB;AChDA,MAAM,oBAAoB,CAAC,UAAe;;AACxC,QAAM,CAAC,UAAU,WAAW,IAAIA,eAAM,SAA6B,IAAI;AAEvE,QAAM,oBAAoB,CAAC,UAA+C;AACxE,gBAAY,MAAM,aAAa;AAAA,EACjC;AAEA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WACE,MAAM,YAAY,eAAe,MAAM,SAAS,KAAK;AAAA,MAGvD,UAAA;AAAA,QAAA,qBAAC,OAAA,EAAI,WAAU,uBACb,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,YAAY;AAAA,cACZ,IAAI;AAAA,cACJ,OAAO;AAAA,cACP,IAAI,EAAE,QAAQ,WAAW,GAAI,GAAC,WAAM,UAAN,mBAAa,UAAS,EAAE,WAAW,SAAA,IAAa,CAAA,EAAC;AAAA,cAC/E,SAAS,MAAM;AAAA,cACf,iBAAe,MAAM;AAAA,cACrB,aAAW,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,cAE/C,gBAAM,SAAS;AAAA,YAAA;AAAA,UAAA;AAAA,+BAEjB,OAAA,EACC,UAAA;AAAA,YAAA,oBAAC,YAAA,EAAW,OAAM,WAAU,MAAK,SAAQ,SAAS,mBAChD,UAAA,oBAAC,OAAA,EAAI,KAAK,OAAO,MAAM,KAAI,aAAY,GACzC;AAAA,YACA;AAAA,cAAC0B;AAAAA,cAAA;AAAA,gBACC,MAAM,QAAQ,QAAQ;AAAA,gBACtB;AAAA,gBACA,SAAS,MAAM,YAAY,IAAI;AAAA,gBAE/B,UAAA;AAAA,kBAAA;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,SAAS,MAAM;AACb,8BAAM,gBAAA;AACN,oCAAY,IAAI;AAAA,sBAClB;AAAA,sBACD,UAAA;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAGA,CAAC,MAAM,kBACN;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,IAAI,EAAE,OAAO,UAAA;AAAA,sBACb,SAAS,MAAM;AACb,8BAAM,cAAA;AACN,oCAAY,IAAI;AAAA,sBAClB;AAAA,sBACD,UAAA;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAED;AAAA,cAAA;AAAA,YAAA;AAAA,UAEJ,EAAA,CACF;AAAA,QAAA,GACF;AAAA,QACA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,GACT,MAAM,cAAc,wBAAwB,sBAC9C;AAAA,YAKA,UAAA;AAAA,cAAA,oBAAC,MAAA,EAAK,WAAS,MAAC,IAAI,EAAE,IAAI,EAAA,GACvB,UAAA,MAAM,SAAA,CACT;AAAA,cACC,CAAC,MAAM,iBACN;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,SAAQ;AAAA,kBACR,OAAO,EAAE,OAAO,WAAW,cAAc,WAAA;AAAA,kBACzC,+BAAY,SAAA,EAAQ;AAAA,kBACpB,iBAAe,MAAM;AAAA,kBACrB,aAAW,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,kBAChD,SAAS,MAAM;AAAA,kBAChB,UAAA;AAAA,gBAAA;AAAA,cAAA,IAGC;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACN;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,kBAAkB,YAAY;AAAA,EAC5B,OAAO,UAAU,OAAO;AAAA,EACxB,SAAS,UAAU;AAAA,EACnB,UAAU,UAAU,KAAK;AAAA,EACzB,OAAO,UAAU;AAAA,EACjB,UAAU,UAAU;AAAA,EACpB,gBAAgB,UAAU;AAAA,EAC1B,WAAW,UAAU;AAAA,EACrB,eAAe,UAAU,KAAK;AAAA,EAC9B,iBAAiB,UAAU;AAAA,EAC3B,aAAa,UAAU;AAAA,EACvB,iBAAiB,UAAU;AAAA,EAC3B,gBAAgB,UAAU;AAAA,EAC1B,gBAAgB,UAAU;AAC5B;ACzGA,MAAM,EAAC,OAAO,QAAQ,WAAW,WAAU,IAAI;AAC/C,MAAM,EAAC,KAAI,IAAI;AAEf,MAAM,YAAY;AAClB,MAAM,YAAY;AAElB,MAAM,SAAS,CAAA;AACf,MAAM,SAAS;AAEf,MAAM,OAAO,CAAC3C,IAAG,UAAU;AAE3B,MAAM,aAAa,WACjB,iBAAiB,YAAY,UAAU,KAAK,IAAI;AAGlD,MAAM,aAAa,CAACA,IAAG,UACrB,OAAO,UAAU,YAAY,IAAI,UAAU,KAAK,IAAI;AAGtD,MAAM,WAAW,CAAC,OAAO,MAAM,QAAQ,MAAM,YAAU;AACrD,WAAS,KAAK,KAAK,MAAM,GAAG,EAAC,OAAM,IAAI,IAAI,IAAI,GAAG,IAAI,QAAQ,KAAK;AACjE,UAAM,IAAI,GAAG,CAAC;AACd,UAAM,QAAQ,OAAO,CAAC;AACtB,QAAI,iBAAiB,WAAW;AAC9B,YAAM,MAAM,MAAM,CAAC,KAAK;AACxB,UAAI,OAAO,QAAQ,UAAU,CAAC,OAAO,IAAI,GAAG,GAAG;AAC7C,eAAO,IAAI,GAAG;AACd,eAAO,CAAC,IAAI;AACZ,aAAK,KAAK,EAAE,GAAG,QAAQ,GAAG,GAAG,KAAK;AAAA,MACpC;AAEE,eAAO,CAAC,IAAI,EAAE,KAAK,QAAQ,GAAG,GAAG;AAAA,IACrC,WACS,OAAO,CAAC,MAAM;AACrB,aAAO,CAAC,IAAI,EAAE,KAAK,QAAQ,GAAG,KAAK;AAAA,EACvC;AACA,SAAO;AACT;AAEA,MAAM,MAAM,CAAC,OAAO,OAAO,UAAU;AACnC,QAAM,QAAQ,UAAU,MAAM,KAAK,KAAK,IAAI,CAAC;AAC7C,QAAM,IAAI,OAAO,KAAK;AACtB,SAAO;AACT;AAQO,MAAM,QAAQ,CAAC,MAAM,YAAY;AACtC,QAAM,QAAQ,OAAO,MAAM,UAAU,EAAE,IAAI,UAAU;AACrD,QAAM,IAAI,WAAW;AAErB,MAAI,QAAQ,MAAM,CAAC;AAEnB,MAAI,OAAO,UAAU,UAAU,OAAO;AACpC,UAAM,OAAO,CAAA;AACb,UAAM,SAAS,SAAS,OAAO,MAAM,oBAAI,OAAK,CAAC;AAC/C,YAAQ,OAAO,KAAK;AAEpB,QAAI,IAAI;AACR,WAAO,IAAI,KAAK,QAAQ;AAEtB,YAAM,EAAC,GAAAK,IAAG,GAAG,EAAC,IAAI,KAAK,GAAG;AAC1B,MAAAA,GAAE,CAAC,IAAI,EAAE,KAAKA,IAAG,GAAG,OAAO,CAAC,CAAC;AAAA,IAC/B;AAAA,EACF;AAEA,SAAO,EAAE,KAAK,EAAC,IAAI,MAAK,GAAG,IAAI,KAAK;AACtC;AASO,MAAM,YAAY,CAAC,OAAO,UAAU,UAAU;AACnD,QAAM,IAEiB;AACvB,QAAM,QAAQ,oBAAI;AAClB,QAAM,QAAQ,CAAA;AACd,QAAM,SAAS,CAAA;AACf,MAAI,IAAI,CAAC,IAAI,OAAO,OAAO,EAAE,KAAK,EAAC,IAAI,MAAK,GAAG,IAAI,KAAK,CAAC;AACzD,MAAI,WAAW,CAAC;AAChB,SAAO,IAAI,MAAM,QAAQ;AACvB,eAAW;AACX,WAAO,CAAC,IAAI,WAAW,MAAM,GAAG,GAAG,SAAS,KAAK;AAAA,EACnD;AACA,SAAO,MAAM,OAAO,KAAK,GAAG,IAAI;AAChC,WAAS,QAAQ,KAAKC,QAAO;AAC3B,QAAI,UAAU;AACZ,iBAAW,CAAC;AACZ,aAAOA;AAAA,IACT;AACA,UAAM,QAAQ,EAAE,KAAK,MAAM,KAAKA,MAAK;AACrC,YAAQ,OAAO,OAAK;AAAA,MAClB,KAAK;AACH,YAAI,UAAU,KAAM,QAAO;AAAA,MAC7B,KAAK;AACH,eAAO,MAAM,IAAI,KAAK,KAAK,IAAI,OAAO,OAAO,KAAK;AAAA,IAC1D;AACI,WAAO;AAAA,EACT;AACF;ACpEA,MAAM,eAAwCW,eAAM,KAAK,CAAC;AAAA,EACzD;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO,CAAA;AAAA,EACP;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,GAAG;AAAA;AAEJ,MAAM;;AACL,QAAM,EAAE,EAAA,IAAM,eAAA;AACd,QAAM,EAAE,KAAA,IAAS,QAAA;AACjB,QAAM,KAAK,oBAAkB,kCAAM,kBAAN,mBAAqB,WAAU;AAC5D,QAAM,mBAAiB,kCAAM,kBAAN,mBAAqB,kBAAiB;AAC7D,QAAM,mBAAiB,kCAAM,kBAAN,mBAAqB,aAAY;AACxD,QAAM,0BAA0B,YAAY,CAAC,MAAc,UAAe;AACzE,YAAQ,MAAA;AAAA,MACP,KAAK;AACJ,eAAO,GAAG,KAAK;AAAA,MAChB,KAAK;AACJ,eAAO,GAAG,EAAE,GAAG,KAAK;AAAA,MAErB;AACC,eAAO;AAAA,IAAA;AAAA,EAEV,GAAG,CAAC,EAAE,CAAC;AAEP,QAAM,oBAAoB,6BAA6B;AAEvD,QAAM,eAAe;AAAA,IACpB,CAACiB,aAAwC;AACxC,aAAOA,SAAQ,IAAI,CAAC,YAAY;AAAA,QAC/B,GAAG;AAAA,QACH,QAAQ,EAAE,OAAO,MAAM;AAAA,QACvB,MAAM,CAAC,EAAE,mBAAmB,UAAe;;AAC1C,cAAI,IAAI;AACR,cAAI,OAAO,MAAM,YAAY,OAAKhB,MAAA,OAAO,CAAC,MAAR,gBAAAA,IAAW,SAAS,OAAM;AAC3D,mBAAO,IAAI,mBAAmB,CAAC;AAAA,UAChC;AACA,kBAAQ,OAAO,MAAA;AAAA,YACd,KAAK;AACJ,kBAAI,YAAY,iBAAiB,KAAK;AACtC;AAAA,YACD,KAAK;AACJ,kBAAI;AAAA,gBACH;AAAA,kBACAU,MAAA,OAAO,mBAAP,gBAAAA,IAAuB,eAAc;AAAA,cAAA,KACjC;AACL;AAAA,YACD,KAAK;AACJ,kBAAI,oBAAoB,GAAG,aAAa,mBAAmB,gBAAgB,gBAAgB,EAAE,CAAC,KAAK;AACnG;AAAA,YACD,KAAK,iBAAiB;AACrB,oBAAM,QAAO,MAAAE,MAAA,IAAI,aAAJ,gBAAAA,IAAc,uBAAd,mBAAkC;AAC/C,kBAAI,MAAM,QAAQ,iBAAiB,IAChC,kBAAkB,IAAI,CAAC,QACxB,MAAM,oBAAC,QAAK,OAAO,wBAAwB,MAAM,GAAG,EAAA,CAAG,IAAK,IAC5D,IACC,wBAAwB,MAAM,iBAAiB;AAClD;AAAA,YACD;AAAA,YACA,KAAK,YAAY;AAChB,kBAAI;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACJ,SAAS,QAAQ,iBAAiB;AAAA,kBAClC,SAAS,oBACN,CAAC,MAAM,kBAAkB;AAAA,oBAC1B,OAAO,EAAE,OAAO;AAAA,oBAChB,MAAM,IAAI;AAAA,oBACV,KAAK;AAAA,oBACL;AAAA,oBACA;AAAA,oBACA,OAAO;AAAA,kBAAA,CACP,IACC;AAAA,gBAAA;AAAA,cAAA;AAGJ;AAAA,YACD;AAAA,YACA,KAAK,SAAS;AACb,kBAAI,MAAM,QAAQ,iBAAiB,KAAK,kBAAkB,SACzD,oBAAC,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,KAAK,YAAY,UAAU,UAAU,OAAA,GACpE,UAAA,kBAAkB,IAAI,OAAM,oBAAC,MAAA,EAAK,MAAK,UAAS,OAAO,EAAE,IAAI,GAAG,iCAAQ,UAAU,EAAE,GAAG,QAAM,KAAA,CAAC,CAAG,GACnG,IACE;AACH;AAAA,YACD;AAAA,YACA,KAAK,QAAQ;AACZ,kBAAI,YAAY,iBAAiB,KAAK;AACtC;AAAA,YACD;AAAA,UAAA;AAGD,iBAAO;AAAA,QACR;AAAA,MAAA,EACC;AAAA,IACH;AAAA;AAAA,IAEA,CAAC,IAAI,yBAAyB,gBAAgB,IAAI;AAAA,EAAA;AAEnD,SACC,qBAAC,KAAA,EAAI,iBAAe,UACnB,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,MAAK;AAAA,QACL,QAAO;AAAA,QACP,OAAM;AAAA,QACN,iBAAe;AAAA,QACf,IAAI,EAAE,IAAI,IAAA;AAAA,QACT,YAAE,KAAK;AAAA,MAAA;AAAA,IAAA;AAAA,yBAER,KAAA,EACA,UAAA;AAAA,MAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,aAAa,CAAC,gBAAgB;AAAA,UAE9B;AAAA,UACA,SAAS,aAAa,MAAM,UAAU,OAAO,CAAC,CAAC;AAAA,UAC/C,YAAY;AAAA,UACZ,iBAAiB,EAAE,QAAQ,GAAG,OAAO,GAAA;AAAA,UACrC,eAAe;AAAA,UACf,sBAAsB;AAAA,UACtB,qBAAqB;AAAA,UACrB;AAAA,UACC,GAAG;AAAA,QAAA;AAAA,MAAA;AAAA,MAEJ,aAAa,CAAC,yBACd;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,IAAI;AAAA,YACH,SAAS;AAAA,YACT,OAAO;AAAA,YACP,gBAAgB;AAAA,YAChB,IAAI;AAAA,UAAA;AAAA,UAEL,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACA,SAAQ;AAAA,gBACR,SAAS,MAAM,yCAAa;AAAA,gBAC5B,+BAAY,KAAA,EAAI;AAAA,gBAChB,WAAU;AAAA,gBAAmB,UAAA;AAAA,cAAA;AAAA,YAAA;AAAA,YAG7B,QAAQ,6CAAc,MAAM,KAAK;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACnC,EAAA,CAEF;AAAA,EAAA,GACD;AAEF,CAAC;AC5KD,MAAM,mBAAmB1B,SAAOwC,YAAI,EAAE,CAAC,EAAE,OAAO,EAAE,QAAA,QAAU;;AAAO;AAAA,IACjE,4BAA4B;AAAA,MAC1B,SAAS;AAAA,MACT,QAAO,aAAQ,UAAR,mBAAe,UAAU;AAAA,MAChC,cAAc;AAAA,QACZ,cAAa,aAAQ,UAAR,mBAAe,UAAU;AAAA,MAAG;AAAA,MAE3C,oBAAoB;AAAA,QAClB,cAAa,aAAQ,UAAR,mBAAe,UAAU;AAAA,MAAG;AAAA,MAE3C,0BAA0B;AAAA,QACxB,aAAa;AAAA,QACb,aAAa;AAAA,QACb,cAAa,aAAQ,UAAR,mBAAe,QAAQ;AAAA,MAAG;AAAA,MAEzC,wBAAwB;AAAA,QACtB,cAAa,aAAQ,UAAR,mBAAe,MAAM;AAAA,MAAG;AAAA,MAEvC,kBAAkB;AAAA,QAChB,aAAY,aAAQ,UAAR,mBAAe,UAAU;AAAA,QACrC,QAAO,aAAQ,UAAR,mBAAe,UAAU;AAAA,MAAG;AAAA,MAErC,sCAAsC;AAAA,QACpC,QAAO,aAAQ,UAAR,mBAAe,UAAU;AAAA,QAChC,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,IAEF,6BAA6B;AAAA,MAC3B,YAAY;AAAA,MACZ,QAAO,aAAQ,UAAR,mBAAe,UAAU;AAAA,MAChC,eAAe;AAAA,QACb,QAAO,aAAQ,UAAR,mBAAe,MAAM;AAAA,MAAG;AAAA,IACjC;AAAA,IAEF,yBAAyB;AAAA,MACvB,aAAa;AAAA,IAAA;AAAA,IAEf,8CAA8C;AAAA,MAC5C,YAAY;AAAA,IAAA;AAAA,EAEhB;AAAA,CAAE;AAEF,MAAM,aAAa,KAAK,CAAC,UAA2B;AAClD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA,WAAW;AAAA,IACX,GAAG;AAAA,EAAA,IACD;AACJ,SACE,oBAAC,OAAA,EACC,UAAA,qBAAC,sBAAA,EAAqB,aAAa,cAChC,UAAA;AAAA,IAAA,SACD;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,YAAY;AAAA,QACZ,IAAI;AAAA,QACJ,OAAO,QAAQ,oBAAoB;AAAA,QACnC,iBAAe;AAAA,QACf,aAAW;AAAA,QAEV,UAAA;AAAA,UAAA;AAAA,UAAM;AAAA,UAAE,YAAY,oBAAC,QAAA,EAAK,WAAU,gBAAe,UAAA,IAAA,CAAC;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGvD;AAAA,MAAC;AAAA,MAAA;AAAA,QACE,GAAG;AAAA,QACJ;AAAA,QACA,WAAW;AAAA,UACT,WAAW;AAAA,YACT;AAAA,YACA;AAAA,YACA,aAAa,eAAe;AAAA;AAAA,UAAA;AAAA,QAE9B;AAAA,QAEF,QAAQ,eAAe,UAAU;AAAA,QACjC,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACZ,EAAA,CACF,EAAA,CACF;AAEJ,CAAC;ACtGD,MAAM,cAAc3B,eAAM,KAAK,CAAC,UAAe;AAE9C,SACC;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,SAAS,MAAM;AAAA,MACf,MAAM,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,MAC3C,QAAQ,CAAC,EAAE,OAAO,iBAAW;;AAC5B;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,GAAG;AAAA,YACJ,UAAU,CAAC,MAAM;AAChB,oBAAM,SAAS,CAAC;AAChB,6CAAO,SAAS;AAAA,YACjB;AAAA,YACA,cAAc,MAAM;AAAA,YACpB,UAAU,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,YAC/C,OAAO,MAAM;AAAA,YACb,aAAa,MAAM;AAAA,YACnB,UAAU,MAAM,aAAa,YAAY,QAAQ,MAAM;AAAA,YACvD,cAAc,MAAM,YAAY;AAAA,YAChC,UAAU,MAAM;AAAA,YAChB,aAAY,gBAAW,UAAX,mBAAkB;AAAA,YAC9B,OAAO,QAAQ,WAAW,KAAK;AAAA,YAC9B,IAAI,+BAAO,SAAQ,CAAA;AAAA,UAAC;AAAA,QAAA;AAAA;AAAA,IACtB;AAAA,EAAA;AAIJ,CAAC;AAGD,YAAY,YAAY;AAAA,EACvB,aAAa,UAAU,MAAM;AAAA,IAC5B,UAAU,UAAU,KAAK;AAAA,IACzB,UAAU,UAAU;AAAA,EAAA,CACpB,EAAE;AAAA,EACH,MAAM,UAAU,OAAO;AAAA,EACvB,OAAO,UAAU,OAAO;AAAA,EACxB,gBAAgB,UAAU;AAAA,EAC1B,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,QAAQ,UAAU;AAAA,EAClB,aAAa,UAAU;AAAA,EACvB,aAAa,UAAU;AAAA,EACvB,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,MAAM,UAAU;AACjB;ACzCA,MAAM,mBAAmBb,SAAO,CAAC,UAC/B,oBAAC,QAAA,EAAO,uBAAsB,qBAAoB,eAAa,MAAE,GAAG,MAAA,CAAO,CAC5E,EAAE,CAAC,EAAE,OAAO,MAAM,cAAQ;;AAAO;AAAA,IAChC,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,2BAA2B;AAAA,MACzB,SAAS;AAAA,MACT,QAAQ,SAAS,WAAW,IAAI;AAAA,MAChC,oBAAoB;AAAA,MACpB,iBAAiB;AAAA,QACf,WAAW,SAAS,WAAW,qBAAqB;AAAA,QACpD,OAAO;AAAA,QACP,wBAAwB;AAAA,UACtB,iBAAiB,MAAM,QAAQ,SAAS,SAAS,YAAY;AAAA,UAC7D,SAAS;AAAA,UACT,QAAQ;AAAA,QAAA;AAAA,QAEV,qCAAqC;AAAA,UACnC,SAAS;AAAA,QAAA;AAAA,MACX;AAAA,MAEF,uCAAuC;AAAA,QACrC,OAAO;AAAA,QACP,QAAQ;AAAA,MAAA;AAAA,MAEV,mCAAmC;AAAA,QACjC,OACE,MAAM,QAAQ,SAAS,UACnB,MAAM,QAAQ,KAAK,GAAG,IACtB,MAAM,QAAQ,KAAK,GAAG;AAAA,MAAA;AAAA,MAE9B,qCAAqC;AAAA,QACnC,SAAS,MAAM,QAAQ,SAAS,UAAU,MAAM;AAAA,MAAA;AAAA,IAClD;AAAA,IAEF,sBAAsB;AAAA,MACpB,WAAW;AAAA,MACX,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ,UAAU,IAAI,cAAa,WAAM,QAAQ,UAAd,mBAAqB,UAAU,IAAI;AAAA,IAAA;AAAA,IAExE,sBAAsB;AAAA,MACpB,cAAc,KAAK;AAAA,MACnB,kBAAiB,WAAM,QAAQ,UAAd,mBAAqB,UAAU;AAAA,MAChD,SAAS;AAAA,MACT,YAAY,MAAM,YAAY,OAAO,CAAC,kBAAkB,GAAG;AAAA,QACzD,UAAU;AAAA,MAAA,CACX;AAAA,IAAA;AAAA,IAEH,GAAI,SAAS,YAAY;AAAA,MACvB,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,sBAAsB;AAAA,QACpB,WAAW;AAAA,QACX,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ,UAAU,IAAI,cAAa,WAAM,QAAQ,UAAd,mBAAqB,UAAU,IAAI;AAAA,MAAA;AAAA,IACxE;AAAA,EAEJ;AAAA,CAAE;AAEF,MAAM,eAAuC,KAAK,CAAC;AAAA,EACjD;AAAA,EACA,gBAAgB;AAAA,EAChB;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,EAAC,MAAA,IAAO,YAAA;AACd,SACE,qBAACyC,WAAM,WAAU,OAAM,SAAS,QAAQ,KAAK,KAAK,YAAW,UAC1D,UAAA;AAAA,IAAA,kBAAkB,+BAChB,YAAA,EAAW,MAAK,MAAK,OAAM,wBAAwB,GAAG,iBACpD,UAAA,MAAA,CACH;AAAA,IAEF,oBAAC,oBAAkB,IAAI,EAAE,GAAG,EAAA,GAAM,GAAG,MAAM;AAAA,IAC1C,kBAAkB,SACjB,oBAAC,YAAA,EAAY,MAAK,MAAK,OAAM,wBAAwB,GAAG,iBACrD,UAAA,MAAA,CACH;AAAA,EAAA,GAEJ;AAEJ,CAAC;AC7ED,MAAM,sBAAsD,KAAK,CAAC;AAAA,EAChE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAA/C;AAAA,EACA;AACF,MAAM;AACL,SACC;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,SAAS;AAAA,MACT,MAAM,GAAG,cAAc,IAAI,IAAI;AAAA,MAC/B,QAAQ,CAAC,EAAE,MAAA,MACV,qBAAA,UAAA,EACC,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACA,MAAK;AAAA,YACL,OAAM;AAAA,YACN,QAAO;AAAA,YACP,iBAAe;AAAA,YACf,IAAI,EAAE,IAAI,IAAA;AAAA,YACT,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAEF;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,GAAG;AAAA,YACJ;AAAA,YACA,SAAS,MAAM;AAAA,YACf,UAAU,MAAM;AAAA,YAChB,OAAOA;AAAA,YACP,UAAU,QAAQ,QAAQ;AAAA,YAC1B,eAAe;AAAA,UAAA;AAAA,QAAA;AAAA,MAChB,EAAA,CACD;AAAA,IAAA;AAAA,EAAA;AAIJ,CAAC;ACtBM,MAAM,SAAS,CAAC,UAAoB;AACzC,QAAM,EAAE,EAAA,IAAM,eAAA;AACd,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAIA;AAAA,EAAA,IACE;AAEJ,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAiB,eAAe,CAAC;AAC3D,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAwB,IAAI;AACtE,YAAU,MAAI;AACZ,mBAAe,SAAS,WAAW;AAAA,EACtC,GAAI,CAAC,WAAW,CAAC;AAEhB,QAAM,eAAe,CAAC,QAA8B,aAAqB;AACvE,aAAS,QAAQ;AACjB,sBAAkB,eAAe,QAAQ;AACzC,uBAAmB,gBAAA;AAAA,EACrB;AAEA,QAAM,uBAAuB,CAAC,UAAkB;AAC9C,qBAAiB,KAAK;AAAA,EACxB;AAEA,QAAM,qBAAqB,CACzB,OACA,UACG;AACH,sBAAkB,eAAe,OAAO,MAAM,OAAO,KAAK;AAAA,EAC5D;AAOA,SACE,oBAAC,KAAA,EAAI,IAAI,GAAI,GAAG,gBACd,UAAA,qBAAC,YAAA,EAAW,OAAO,eAAe,OAChC,UAAA;AAAA,IAAA,oBAAC,KAAA,EACC,UAAA,oBAAC,SAAA,EAAQ,WAAU,4BAA2B,UAAU,cAAc,SAAQ,cAAa,eAAc,QAAO,cAAW,mBAAkB,IAAI,EAAE,WAAW,QAAQ,UAAU,UAC7K,UAAA,KAAK,IAAI,CAAC,KAAc,UACvB;AAAA,MAACgD;AAAAA,MAAA;AAAA,QACC,WAAU;AAAA,QAGV,OACE,oBAAC,KAAA,EAAI,SAAQ,QAAO,YAAW,UAEzB,UAAA,kBAAkB,kBAAkB,IAAI,YACtC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO,IAAI;AAAA,YACX,WAAS;AAAA,YACT,QAAQ,MAAM,iBAAiB,IAAI;AAAA,YACnC,UAAU,CAAC,MACT,mBAAmB,GAAG,IAAI,SAAS;AAAA,UAAA;AAAA,QAAA,IAGrC,kBACF,qBAAC,OAAA,EAAI,WAAU,eACb,UAAA;AAAA,UAAA,oBAAC,YAAA,EAAW,OAAM,wBAAuB,MAAK,MAAM,UAAA,EAAE,IAAI,KAAK,EAAA,CAAE;AAAA,UAChE,CAAC,IAAI,cACJ,oBAAC,cAAW,MAAK,SAAQ,SAAS,CAAC,MAAM;AACvC,cAAE,eAAA;AACF,cAAE,gBAAA;AACF,4BAAgB,IAAI,SAAS;AAAA,UAC/B,GACE,UAAA,oBAAC3C,OAAA,EAAU,OAAO,EAAE,UAAU,QAAQ,QAAQ,UAAA,EAAU,CAAE,EAAA,CAC5D;AAAA,QAAA,EAAA,CAEJ,IAEA,oBAAC,YAAA,EAAW,OAAM,wBAAuB,MAAK,MAAM,UAAA,EAAE,IAAI,KAAK,EAAA,CAAE,EAAA,CAGzE;AAAA,QAEF,SAAO;AAAA,QACP,eAAe,MAAM,qBAAqB,IAAI,SAAS;AAAA,MAAA;AAAA,MAlClD,IAAI;AAAA,IAAA,CAoCZ,GACH,EAAA,CACF;AAAA,IACC,KAAK;AAAA,MACJ,CAAC,KAAc,UACb,IAAI,+BACD4C,YAAA,EAAS,OAAO,MAAM,SAAA,GACpB,UAAA,UAAU,SAAS,IAAI,QAAA,GADc,IAAI,SAE5C;AAAA,IAAA;AAAA,EAEN,EAAA,CACF,EAAA,CACF;AAEJ;ACvIA,MAAM,cAAc,OAAOC,OAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,QAAA,QAAU;;AAAO;AAAA,IAChE,mBAAmB;AAAA,MACjB,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,SAAS;AAAA,IAAA;AAAA,IAEX,2BAA2B;AAAA,MACzB,QAAO,aAAQ,UAAR,mBAAe,UAAU;AAAA,MAChC,kBAAiB,aAAQ,UAAR,mBAAe,UAAU;AAAA,IAAG;AAAA,IAE/C,8BAA8B;AAAA,MAC5B,QAAO,aAAQ,UAAR,mBAAe,QAAQ;AAAA,MAC9B,kBAAiB,aAAQ,UAAR,mBAAe,QAAQ;AAAA,IAAG;AAAA,IAE7C,4BAA4B;AAAA,MAC1B,QAAO,aAAQ,UAAR,mBAAe,UAAU;AAAA,MAChC,kBAAiB,aAAQ,UAAR,mBAAe,UAAU;AAAA,MAC1C,oBAAqB;AAAA,QACnB,QAAO,aAAQ,UAAR,mBAAe,UAAU;AAAA,MAAG;AAAA,IACrC;AAAA,IAGF,oBAAoB;AAAA,MAClB,KAAK;AAAA,QACH,UAAU;AAAA,MAAA;AAAA,IACZ;AAAA,EAEJ;AAAA,CAAE;AAEF,MAAM,QAAQ,CAAC,UAAsB;AACnC,QAAM,EAAE,UAAU,OAAO,OAAO,GAAG,SAAS;AAE5C,SACE,oBAAC,aAAA,EAAY,MAAa,GAAG,MAC1B,UACH;AAEJ;ACMA,MAAM,gBAAgB,OAAO,GAAG,EAAE,CAAC,EAAE,aAAa;AAAA,EAChD,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,KAAK,MAAM,QAAQ,GAAG;AAAA,EACtB,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,UAAU;AAAA;AAAA;AAAA;AAAA,EAIV,aAAa;AAAA,IACX,aAAY;AAAA,IACZ,aAAa;AAAA,EAAA;AAAA,EAEf,WAAW;AAAA,IACT,aAAa,MAAM,QAAQ,MAAM;AAAA,EAAA;AAAA,EAEnC,cAAc;AAAA,IACZ,iBAAiB,MAAM,QAAQ,OAAO;AAAA,IACtC,QAAQ;AAAA,EAAA;AAAA,EAEV,aAAa;AACf,EAAE;AAEF,MAAM,cAAc,OAAO,OAAO,EAAE,CAAC,EAAE,aAAa;AAAA,EAClD,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY,MAAM,WAAW;AAAA,EAC7B,kBAAkB;AAAA,IAChB,OAAO,MAAM,QAAQ,KAAK;AAAA,IAC1B,SAAS;AAAA,EAAA;AAAA,EAEX,cAAc;AAAA,IACZ,QAAQ;AAAA,EAAA;AAEZ,EAAE;AAEF,MAAM,aAAa,OAAOC,MAAI,EAAE,CAAC,EAAC,OAAO,EAAE,QAAA,SAAgB;AAAA,EACzD,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,aAAY;AAAA,EACZ,iBAAiB,QAAQ,MAAM,QAAQ,EAAE;AAAA,EACzC,OAAM;AAAA,EACN,QAAQ;AAAA,EACR,yBAAyB;AAAA,IACvB,UAAU;AAAA,IACV,OAAM;AAAA,IACN,WAAW;AAAA,MACT,OAAO;AAAA,IAAA;AAAA,EACT;AAEJ,EAAE;AAEF,MAAM,gBAA8C,KAAK,CAAC;AAAA,EACxD;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,WAAW;AAAA,EACX,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,kBAAkB,CAAA;AAAA,EAClB,mBAAmB;AAAA,EACnB,aAAa,CAAC,KAAK,KAAK,MAAM,GAAI;AAAA,EAClC,WAAW;AAAA,EACX,YAAY;AACd,MAAM;AACJ,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,EAAE;AAC/C,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAS,EAAE;AACzD,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,QAAM,WAAW,OAAyB,IAAI;AAC9C,QAAM,eAAe,OAAuB,IAAI;AAEhD,QAAM,eAAe,CAAC,OAAchB,gBAAyD;AAC3F,QAAI,CAACA,YAAY,QAAO,EAAE,SAAS,MAAM,OAAO,GAAA;AAEhD,UAAM,eAAe,MAAM,KAAA;AAC3B,QAAI,CAAC,aAAc,QAAO,EAAE,SAAS,OAAO,OAAO,+BAAA;AAEnD,YAAQA,YAAW,MAAA;AAAA,MACjB,KAAK,SAAS;AACZ,cAAM,aAAa;AACnB,cAAM,eAAe,WAAW,KAAK,YAAY;AACjD,eAAO;AAAA,UACL,SAAS;AAAA,UACT,OAAO,eAAe,KAAKA,YAAW,WAAW;AAAA,QAAA;AAAA,MAErD;AAAA,MAWA,KAAK,SAAS;AACZ,cAAM,aAAa;AACnB,cAAM,eAAe,WAAW,KAAK,aAAa,QAAQ,YAAY,EAAE,CAAC;AACzE,eAAO;AAAA,UACL,SAAS;AAAA,UACT,OAAO,eAAe,KAAKA,YAAW,WAAW;AAAA,QAAA;AAAA,MAErD;AAAA,MAEA,KAAK,UAAU;AACb,YAAIA,YAAW,SAAS;AACtB,gBAAM,UAAUA,YAAW,QAAQ,KAAK,YAAY;AACpD,iBAAO;AAAA,YACL;AAAA,YACA,OAAO,UAAU,KAAKA,YAAW;AAAA,UAAA;AAAA,QAErC;AACA,YAAIA,YAAW,WAAW;AACxB,gBAAM,UAAUA,YAAW,UAAU,YAAY;AACjD,iBAAO;AAAA,YACL;AAAA,YACA,OAAO,UAAU,KAAKA,YAAW;AAAA,UAAA;AAAA,QAErC;AACA,eAAO,EAAE,SAAS,MAAM,OAAO,GAAA;AAAA,MACjC;AAAA,MAEA;AACE,eAAO,EAAE,SAAS,MAAM,OAAO,GAAA;AAAA,IAAG;AAAA,EAExC;AAGA,QAAM,gBAAgB,CAAC,QAA0B;AAC/C,QAAI,CAAC,OAAO,OAAO,QAAQ,iBAAiB,CAAA;AAC5C,WAAO,IAAI,MAAM,SAAS,EAAE,IAAI,CAAA,SAAQ,KAAK,KAAA,CAAM,EAAE,OAAO,OAAO;AAAA,EACrE;AAEA,QAAM,gBAAgB,CAAC,QAA0B;AAC/C,WAAO,IAAI,KAAK,YAAY,GAAG;AAAA,EACjC;AAGA,QAAM,sBAAsB,CAAC,aAA+B;AAC1D,QAAI,CAAC,kBAAkB;AACrB,aAAO,CAAC,SAAS,KAAA,CAAM,EAAE,OAAO,OAAO;AAAA,IACzC;AAEA,UAAM,mBAAmB,WAAW;AAAA,MAAI,CAAA,MACtC,EAAE,QAAQ,uBAAuB,MAAM;AAAA,IAAA,EACvC,KAAK,GAAG;AAEV,UAAM,QAAQ,IAAI,OAAO,IAAI,gBAAgB,GAAG;AAEhD,WAAO,SACJ,MAAM,KAAK,EACX,IAAI,CAAA,QAAO,IAAI,KAAA,CAAM,EACrB,OAAO,OAAO;AAAA,EACnB;AAEA,QAAM,WAAW,CAAC,UAAkB,iBAI/B;AACH,UAAM,cAAc,oBAAoB,QAAQ;AAChD,QAAI,YAAY,WAAW,GAAG;AAC5B,aAAO,EAAE,UAAU,cAAc,QAAQ,CAAA,GAAI,YAAY,EAAA;AAAA,IAC3D;AAEA,UAAM,WAAW,CAAC,GAAG,YAAY;AACjC,UAAM,SAAmB,CAAA;AACzB,QAAI,aAAa;AAEjB,eAAW,SAAS,aAAa;AAC/B,UAAI,YAAY,SAAS,UAAU,UAAU;AAC3C,eAAO,KAAK,WAAW,QAAQ,gBAAgB;AAC/C;AAAA,MACF;AAEF,WAAI,yCAAY,UAAS,GAAG;AAC1B,cAAM,gBAAgB,WACnB,IAAI,SAAO,aAAa,OAAO,GAAG,CAAC,EACnC,OAAO,CAAA,WAAU,CAAC,OAAO,OAAO,EAChC,IAAI,CAAA,WAAU,OAAO,KAAK;AAE7B,YAAI,cAAc,SAAS,GAAG;AAC5B,iBAAO,KAAK,IAAI,KAAK,MAAM,cAAc,KAAK,IAAI,CAAC,EAAE;AACrD;AAAA,QACF;AAAA,MACF;AAGE,UAAI,CAAC,mBAAmB,SAAS,SAAS,KAAK,GAAG;AAChD,eAAO,KAAK,IAAI,KAAK,qCAAqC;AAC1D;AAAA,MACF;AAEA,eAAS,KAAK,KAAK;AACnB;AACA,6CAAY;AAAA,IACd;AAEA,WAAO,EAAE,UAAU,QAAQ,WAAA;AAAA,EAC7B;AAEA,QAAM,aAAa,CAAC,cAAsB,OAAe,iBAA2B;AAClF,UAAM,WAAW,aAAa,OAAO,CAACjC,IAAG,MAAM,MAAM,KAAK;AAC1D,iDAAe,cAAc;AAC7B,uBAAmB,EAAE;AACrB,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,CACnB,UACA,UACA,iBACG;AACH,UAAM,eAAe,MAAM,QAAQ,YAAY,IAAI,eAAe,cAAc,YAAY;AAC5F,UAAM,EAAE,UAAU,OAAA,IAAW,SAAS,UAAU,YAAY;AAE5D,QAAI,OAAO,SAAS,GAAG;AACrB,yBAAmB,OAAO,KAAK,IAAI,CAAC;AAAA,IACtC,OAAO;AACL,yBAAmB,EAAE;AAAA,IACvB;AAEA,QAAI,SAAS,WAAW,aAAa,QAAQ;AAC3C,YAAM,cAAc,aAAa,WAAW,cAAc,QAAQ,IAAI;AACtE,eAAS,WAAW;AACpB,oBAAc,EAAE;AAAA,IAClB;AAAA,EACF;AAEA,QAAM,iBAAiB,CACrB,OACA,UACA,iBACG;AACH,QAAI,MAAM,QAAQ,OAAO,MAAM,QAAQ,SAAS;AAC9C,YAAM,eAAA;AACN,UAAI,WAAW,QAAQ;AACrB,qBAAa,YAAY,UAAU,YAAY;AAAA,MACjD;AAAA,IACF,WAAW,MAAM,QAAQ,eAAe,CAAC,YAAY;AACnD,YAAM,eAAe,MAAM,QAAQ,YAAY,IAAI,eAAe,cAAc,YAAY;AAC5F,UAAI,aAAa,SAAS,GAAG;AAC3B,cAAM,YAAY,aAAa,SAAS;AACxC,cAAM,WAAW,WAAW,aAAa,SAAS,GAAG,WAAW,YAAY;AAC5E,cAAM,cAAc,aAAa,WAAW,cAAc,QAAQ,IAAI;AACtE,iBAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,aAAa,CACjB,UACA,iBACG;AACH,eAAW,KAAK;AAChB,QAAI,WAAW,QAAQ;AACrB,mBAAa,YAAY,UAAU,YAAY;AAAA,IACjD;AAAA,EACF;AAEA,QAAM,cAAc,CAClB,OACA,UACA,iBACG;AACH,QAAI,kBAAkB;AACpB,YAAM,eAAA;AACN,YAAM,aAAa,MAAM,cAAc,QAAQ,MAAM;AACrD,YAAM,gBAAgB,aAAa;AACnC,mBAAa,eAAe,UAAU,YAAY;AAAA,IACpD;AAAA,EACF;AAEA,QAAM,uBAAuB,MAAM;AACjC,QAAI,CAAC,YAAY,SAAS,SAAS;AACjC,eAAS,QAAQ,MAAA;AAAA,IACnB;AAAA,EACF;AAEA,QAAM,YAAY,iBAAiB,GAAG,cAAc,IAAI,IAAI,KAAK;AAEjE,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAM;AAAA,MACN;AAAA,MACA,cAAc,aAAa,WAAW,KAAK,CAAA;AAAA,MAC3C,QAAQ,CAAC,EAAE,OAAO,EAAE,UAAU,OAAO,GAAG,SAAS,YAAY,EAAE,MAAA,QAAc;AAC3E,cAAM,eAAe,MAAM,QAAQ,KAAK,IAAI,QAAQ,cAAc,SAAS,EAAE;AAC7E,cAAM,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,mBAAmB;AAEjD,eACE,qBAAC,aAAA,EAAY,WAAS,MAAC,OAAO,UAC3B,UAAA;AAAA,UAAA,SACF;AAAA,YAAC;AAAA,YAAA;AAAA,cACO,MAAK;AAAA,cACL,QAAQ;AAAA,cACR,IAAI;AAAA,cACJ,OAAO,QAAQ,oBAAoB;AAAA,cAElC,UAAA;AAAA,gBAAA;AAAA,gBAAM;AAAA,gBAAE,YAAY,oBAAC,QAAA,EAAK,WAAU,gBAAe,UAAA,IAAA,CAAC;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAI5D;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAK;AAAA,cACL,WAAW,GAAG,UAAU,YAAY,EAAE,IAAI,WAAW,UAAU,EAAE,IAAI,WAAW,aAAa,EAAE;AAAA,cAC/F,SAAS;AAAA,cAER,UAAA;AAAA,gBAAA,aAAa,IAAI,CAAC,MAAc,UAC/B;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBAEC,OAAO;AAAA,oBACP,UACE,WACI,SACA,CAAC,UAAU;AACT,4BAAM,gBAAA;AACN,4BAAM,WAAW,WAAW,MAAM,OAAO,YAAY;AACrD,4BAAM,cAAc,aAAa,WAAW,cAAc,QAAQ,IAAI;AACtE,+BAAS,WAAW;AAAA,oBACtB;AAAA,oBAEN,MAAK;AAAA,oBAGJ,GAAG;AAAA,kBAAA;AAAA,kBAfC,GAAG,IAAI,IAAI,KAAK;AAAA,gBAAA,CAiBxB;AAAA,gBAED;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACE,GAAG;AAAA,oBACJ,KAAK;AAAA,oBACL,OAAO;AAAA,oBACP,UAAU,CAAC,MAAM,cAAc,EAAE,OAAO,KAAK;AAAA,oBAC7C,WAAW,CAAC,MAAM,eAAe,GAAG,UAAU,KAAK;AAAA,oBACnD,SAAS,MAAM,WAAW,IAAI;AAAA,oBAC9B,QAAQ,MAAM,WAAW,UAAU,KAAK;AAAA,oBACxC,SAAS,CAAC,MAAM,YAAY,GAAG,UAAU,KAAK;AAAA,oBAC9C,aAAa,aAAa,WAAW,IAAI,cAAc;AAAA,oBACvD;AAAA,oBACA,OAAO;AAAA,sBACL,OAAO,aAAa,GAAG,KAAK,IAAI,WAAW,SAAS,GAAG,GAAG,CAAC,OAAO;AAAA,oBAAA;AAAA,kBACpE;AAAA,gBAAA;AAAA,gBAGD,WACC,oBAAC,gBAAA,EAAe,UAAS,OAAM,IAAI,EAAE,IAAI,KACtC,UAAA,QAAA,CACH;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,WAIF,eAAc,+BAAO,YAAW,wCAC/B,gBAAA,EACE,WAAA,+BAAO,YAAW,mBAAmB,WAAA,CACxC;AAAA,UAGD,iCACE,gBAAA,EACE,UAAA;AAAA,YAAA,aAAa;AAAA,YAAO;AAAA,YAAI;AAAA,YAAS;AAAA,UAAA,EAAA,CACpC;AAAA,QAAA,GAIJ;AAAA,MAEJ;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;ACjZM,MAAM,uBAAuB;AAAA,EACnC,CAAsC;AAAA,IACrC;AAAA,IACA,SAAS;AAAA,IACT,UAAU;AAAA,IACV;AAAA,IACA,oBAAoB;AAAA,IACpB;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,GAAG;AAAA,EAAA,MAC6C;;AAChD,UAAM,cAAc,eAAA;AACpB,UAAM;AAAA,MACL,SAAS;AAAA,MACT,OAAO;AAAA,MACP,UAAU;AAAA,MACV,eAAe;AAAA,IAAA,IACZ,eAAe,CAAA;AAEnB,UAAM,eAAe,eAAe;AACpC,UAAM,gBAAgB,gBAAgB;AACtC,UAAM,aAA8B,iBAAiB,MAAM;AAC3D,UAAM,qBACL,yBAAyB,OAAO,CAAA;AAEjC,UAAM,mBAAmB,WAAW,GAAG,cAAc,IAAI,WAAW,EAAE;AACtE,UAAM,WAAU;AAAA,MACf,GAAG,cAAc,IAAI,WAAW;AAAA,IAAA,MADjB,mBAEb;AAEH,UAAM,uBAAuB,OAAA;AAE7B,UAAM,EAAE,EAAA,IAAM,eAAA;AAEd,UAAM,iBAAiB,QAAQ,MAAM;AACpC,aAAO,oBAAoB,qBAAqB,UAC7C,CAAC,EAAE,QAAQ,qBAAqB,SAAS,gBAAgB,IACzD;AAAA,IACJ,GAAG,CAAC,gBAAgB,CAAC;AAGrB,cAAU,MAAM;AACf,UAAI,kBAAkB;AACrB,6BAAqB,UAAU;AAAA,MAChC;AAAA,IACD,GAAG,CAAC,gBAAgB,CAAC;AAErB,UAAM,iBAAqC,kBAAkB;AAAA,MAC5D,iBAAiB,oBAAoB;AAAA,MACrC,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS,kBAAkB;AAAA,IAAA,CAC3B;AAGD,QAAI,CAAC,cAAc;AAClB,cAAQ,KAAK,kDAAkD;AAC/D,aAAO,oBAAC,SAAI,UAAA,yBAAA,CAAsB;AAAA,IACnC;AAEA,WACC;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,OAAO,EAAE,KAAK,KAAK,EAAE,sCAAsC;AAAA,QAC3D,SAAQ;AAAA,QACR,SAAQ;AAAA,QACR,eAAe;AAAA,QACf,MAAM;AAAA,QACN,aACC,EAAE,WAAW,KAAK,EAAE,4CAA4C;AAAA,QAEjE;AAAA,QACA,aAAa;AAAA,QACb,eAAe;AAAA,QACd,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACD;AAEA,qBAAqB,eAAe;AAAA,EACnC,mBAAmB;AAAA,EACnB,YAAY;AAAA,EACZ,WAAW;AACZ;ACrHA,MAAM,eAAe,KAAK,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAW;AACT,MAAI,gBAAgB;AAClB,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,MAAM,GAAG,cAAc,IAAI,gBAAgB;AAAA,QAC3C,QAAQ,CAAC,EAAE,MAAA,MACT;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,cACL,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,KAAK;AAAA,YAAA;AAAA,YAGN,UAAA;AAAA,cAAA,QACC;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,OAAO,EAAE,YAAY,IAAA;AAAA,kBACrB,OAAO;AAAA,kBAEN,UAAA;AAAA,gBAAA;AAAA,cAAA,IAED;AAAA,cACJ;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,OAAO,MAAM;AAAA,kBACb,UAAU,CAAC,MAAM;AACf,8BAAU,EAAE,OAAO,KAAK;AACxB,0BAAM,SAAS,EAAE,OAAO,KAAK;AAAA,kBAC/B;AAAA,kBACA,KAAK;AAAA,kBAEJ;AAAA,gBAAA;AAAA,cAAA;AAAA,YACH;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAIR;AACA,SAAO;AACT,CAAC;ACqCD,MAAM,gBAAgB,KAAK,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAMM;AACJ,QAAM,WAAW;AAAA,IAAQ,MACvB,MAAM,eAAe,KAAM,MAAM,gBAAgB;AAAA,IACjD,CAAC,MAAM,cAAc,MAAM,YAAY;AAAA,EAAA;AAGzC,QAAM,WAAW;AAAA,IAAQ,MACvB,GAAG,YAAY,IAAI,SAAS,IAAI,KAAK;AAAA,IACrC,CAAC,cAAc,WAAW,KAAK;AAAA,EAAA;AAGjC,QAAM,cAAc,QAAQ,OAAO;AAAA,IACjC,GAAG;AAAA,IACH,KAAK;AAAA,IACL,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa,MAAM;AAAA,IACnB,gBAAgB,MAAM;AAAA,IACtB,UAAU,MAAM;AAAA,IAChB,OAAO,MAAM,EAAE,MAAM,KAAK;AAAA,IAC1B,aAAa,MAAM,EAAE,MAAM,WAAW;AAAA,IACtC,cAAc,MAAM,SAAS,MAAM;AAAA,IACnC,UAAU,MAAM;AAAA,EAAA,IACd,CAAC,OAAO,WAAW,OAAO,UAAU,MAAM,SAAS,MAAM,gBAAgB,MAAM,CAAC,CAAC;AAErF,QAAM,aAAa,YAAY,CAAC,MAAW;AACzC,QAAI,MAAM,UAAU,OAAO,MAAM,WAAW,YAAY;AACtD,YAAM,OAAO,GAAG,SAAS;AAAA,IAC3B;AAAA,EACF,GAAG,CAAC,MAAM,QAAQ,SAAS,CAAC;AAE5B,QAAM,UAAU,QAAQ,MAAM;AAC5B,UAAM,UAAkC;AAAA,MACtC,OAAO,MAAM,OAAO;AAAA,MACpB,KAAK,MAAM,OAAO;AAAA,MAClB,UAAU,MAAM,OAAO;AAAA,MACvB,aAAa,MAAM,OAAO;AAAA,IAAA;AAG5B,UAAM,UAAU,QAAQ,MAAM,UAAU;AACxC,WAAO,8BAAW,OAAA,EAAI,KAAK,SAAS,KAAK,MAAM,YAAY,IAAK;AAAA,EAClE,GAAG,CAAC,MAAM,YAAY,MAAM,MAAM,CAAC;AAEnC,QAAM,gBAAgB,QAAQ,MAC5B,MAAM,eAAe,aACnB,qBAAC,QAAA,EAAK,WAAU,yBACb,UAAA;AAAA,IAAA,MAAM,EAAE,MAAM,KAAK;AAAA,wBACnB,OAAA,EAAI,KAAK,MAAM,OAAO,UAAU,KAAI,WAAA,CAAW;AAAA,EAAA,EAAA,CAClD,IACE,MAAM,EAAE,MAAM,KAAK,GACtB,CAAC,MAAM,YAAY,MAAM,OAAO,MAAM,GAAG,MAAM,OAAO,QAAQ,CAAC;AAGlE,QAAM,cAAc,MAAM;;AACxB,YAAQ,MAAM,YAAA;AAAA,MACZ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACE,GAAG;AAAA,YACJ,KAAK,YAAY;AAAA,YACjB,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,MAAM,MAAM;AAAA,YACZ;AAAA,YACA,UAAU,MAAM,YAAY,MAAM,eAAe;AAAA,UAAA;AAAA,QAAA;AAAA,MAIvD,KAAK;AACH,6CAAQ,aAAA,EAAa,GAAG,aAAa,KAAK,YAAY,KAAK;AAAA,MAE7D,KAAK;AACH,6CAAQ,aAAA,EAAa,GAAG,aAAa,KAAK,YAAY,KAAK;AAAA,MAE7D,KAAK;AACH,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACE,GAAG;AAAA,YACJ,KAAK,YAAY;AAAA,YACjB,qBAAqB,CAAC,YACpB,MAAM,0BAA0B,SAAS,OAAO,MAAM,gBAAgB,MAAM,MAAM;AAAA,UAAA;AAAA,QAAA;AAAA,MAK1F,KAAK;AACH,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACE,GAAG;AAAA,YACJ,KAAK,YAAY;AAAA,YACjB,UAAS,WAAM,qBAAN,mBAAwB;AAAA,YACjC,gBAAe,WAAM,qBAAN,mBAAwB;AAAA,YACvC,aAAY,WAAM,qBAAN,mBAAwB;AAAA,YACpC,cAAa,WAAM,qBAAN,mBAAwB;AAAA,YACrC,cAAc,MAAM,MAAM,SAAS,GAAG,MAAM,cAAc,IAAI,SAAS,IAAI,EAAE;AAAA,YAE7E,GAAI,EAAC,+BAAO,YAAW,GAAC,oCAAO,qBAAP,mBAAyB,WAC7C,EAAE,eAAe,MAAA;;AAAM,sBAAAkB,MAAA,MAAM,wBAAN,gBAAAA,IAAA,YAA4B;AAAA,cAAK,IACxD,CAAA;AAAA,YAEJ,eAAe,MAAM;AAAA,YACrB,iBAAiB,MAAM;AAAA,YACvB,SAAS,MAAM;AAAA,YACf,YAAW,WAAM,qBAAN,mBAAwB;AAAA,YACnC,mBAAkB,WAAM,qBAAN,mBAAwB;AAAA,YAC1C,UAAS,+BAAO,cAAW,oCAAO,qBAAP,mBAAyB;AAAA,YACpD,sBAAqB,oCAAO,qBAAP,mBAAyB;AAAA,UAAA;AAAA,QAAA;AAAA,MAIpD,KAAK;AAAA,MACL,KAAK;AACH,6CAAQ,cAAA,EAAc,GAAG,aAAa,KAAK,YAAY,KAAK;AAAA,MAE9D,KAAK;AACH,6CAAQ,aAAA,EAAa,GAAG,aAAa,KAAK,YAAY,KAAK;AAAA,MAE7D,KAAK;AACH,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACE,GAAG;AAAA,YACJ,KAAK,YAAY;AAAA,YACjB,eAAe,MAAM;AAAA,YACrB,OAAO,MAAM,EAAE,MAAM,KAAK;AAAA,UAAA;AAAA,QAAA;AAAA,MAIhC,KAAK;AACH,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACE,GAAG;AAAA,YACJ,KAAK,YAAY;AAAA,YACjB,eAAe,MAAM;AAAA,YACrB,OAAO,MAAM,EAAE,MAAM,KAAK;AAAA,UAAA;AAAA,QAAA;AAAA,MAIhC,KAAK;AACH,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACE,GAAG;AAAA,YACJ,KAAK,YAAY;AAAA,YACjB,SAAS,MAAM;AAAA,YACf,MAAM,MAAM;AAAA,YACZ,YAAY,MAAM,MAAM,oBAAoB,KAAK;AAAA,YACjD,uBAAuB,QAAQ,MAAM,qBAAqB;AAAA,YAC1D,WAAW,MAAM;AAAA,YACjB,mBAAmB,MAAM;AAAA,UAAA;AAAA,QAAA;AAAA,MAI/B,KAAK;AACH,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACE,GAAG;AAAA,YACJ,KAAK,YAAY;AAAA,YACjB,eAAe,MAAM;AAAA,YACrB,OAAO,MAAM,EAAE,MAAM,KAAK;AAAA,UAAA;AAAA,QAAA;AAAA,MAIhC,KAAK;AACH,eAAO,MAAM;AAAA,MAEf,KAAK;AACH,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACE,GAAG;AAAA,YACJ,KAAK,YAAY;AAAA,YACjB,OAAO;AAAA,YACP,MAAM,MAAM;AAAA,YACZ;AAAA,UAAA;AAAA,QAAA;AAAA,MAIN,KAAK;AACH,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACE,GAAG;AAAA,YACJ,KAAK,YAAY;AAAA,YACjB,cAAc,MAAM;AAAA,UAAA;AAAA,QAAA;AAAA,MAI1B,KAAK;AACH,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACE,GAAG;AAAA,YACJ,cAAc,MAAM;AAAA,UAAA;AAAA,QAAA;AAAA,MAI1B,KAAK;AACH,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACE,GAAG;AAAA,YACJ,KAAK,YAAY;AAAA,YACjB,WAAU,WAAM,qBAAN,mBAAwB;AAAA,YAClC,kBAAiB,WAAM,qBAAN,mBAAwB;AAAA,YACzC,YAAY,MAAM;AAAA,YAClB;AAAA,YACA,WAAW,CAAC,SAAc,QAAQ,IAAI,eAAe,IAAI;AAAA,YACzD,cAAc,CAAC,MAAWgC,WAAkB,QAAQ,IAAI,iBAAiB,MAAM,aAAaA,MAAK;AAAA,UAAA;AAAA,QAAA;AAAA,MAIvG,KAAK;AACH,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,gBAAgB,MAAM;AAAA,YACtB,aAAa,MAAM;AAAA,YACnB,iBAAiB,CAAC,QAAe,MAAM,gBAAgB,GAAG;AAAA,YAC1D,mBAAmB,MAAM;AAAA,YACzB,SAAQ;AAAA,YACR,eAAe;AAAA,UAAA;AAAA,QAAA;AAAA,MAIrB;AACE,eAAO;AAAA,IAAA;AAAA,EAEb;AAGA,MAAI,MAAM,eAAe,WAAW,MAAM,eAAe,mBAAmB;AAC1E,+BACG,MAAA,EAAK,MAAI,MAAC,IAAI,IACZ,yBACH;AAAA,EAEJ;AAEA,6BACG,MAAA,EAAK,MAAI,MAAC,IAAI,UACZ,yBACH;AAEJ,CAAC;AAED,cAAc,cAAc;AAG5B,MAAM,uBAAuB,KAAK,CAAC;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MASM;AACJ,QAAM,YAAY,YAAY,MAAM;AAClC,uBAAmB,eAAe,EAAE;AAAA,EACtC,GAAG,CAAC,oBAAoB,WAAW,CAAC;AAEpC,MAAI,CAAC,kBAAkB,EAAC,2CAAa,QAAQ,QAAO;AAEpD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO,EAAE,QAAQ,uBAAuB,EAAE;AAAA,MAC1C;AAAA,MAEC,UAAA,YAAY,IAAI,CAAC,UAChB;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,OAAO,MAAM,SAAS,MAAM;AAAA,UAC5B,6BAAUC,SAAA,EAAM;AAAA,UAChB,WAAW,EAAE,YAAY,EAAE,SAAS,UAAQ;AAAA,UAC5C,OAAO,EAAE,MAAM,IAAI;AAAA,UACnB,UAAU,QAAQ,QAAQ,QAAQ;AAAA,QAAA;AAAA,QAL7B,MAAM;AAAA,MAAA,CAOd;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;AAED,qBAAqB,cAAc;AAGnC,MAAM,cAAc,KAAuB,CAAC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAAC;AACF,MAAM;AAEJ,QAAM,iBAAiB;AAAA,IAAQ,OAC7B,mCAAS,OAAO,CAAA,MAAK,CAAC,EAAE,eAAc,CAAA;AAAA,IACtC,CAAC,OAAO;AAAA,EAAA;AAIV,QAAM,kBAAkB;AAAA,IAAQ,MAC9B,eAAe,IAAI,CAAA,WAAU;AAAA,MAC3B,GAAG;AAAA,MACH,WAAW,MAAM,QAAQ,MAAM,MAAM,YAAA,EAAc,MAAM,GAAG,EAAE,KAAK,GAAG;AAAA,IAAA,EACtE;AAAA,IACF,CAAC,cAAc;AAAA,EAAA;AAIjB,QAAM,gBAAgB,QAAQ,MAAM;AAClC,QAAI,CAAC,QAAQ,MAAO,QAAO;AAE3B,gCACG,OAAA,EAAI,OAAO,EAAE,WAAW,UACtB,UAAA;AAAA,MAAA,UAAU,KAAK,oBAAC,SAAA,EAAQ,WAAU,uCAAsC;AAAA,MACzE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,QAAO;AAAA,UACP,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,OAAM;AAAA,UACN,WAAU;AAAA,UAET,UAAA,EAAE,QAAQ,KAAK;AAAA,QAAA;AAAA,MAAA;AAAA,IAClB,GACF;AAAA,EAEJ,GAAG,CAAC,QAAQ,OAAO,OAAO,CAAC,CAAC;AAG5B,QAAM,gBAAgB;AAAA,IAAQ,MAC5B,eAAe,oBAAC,SAAI,WAAU,gBAAe,iBAAG,IAAS;AAAA,IACzD,CAAC,YAAY;AAAA,EAAA;AAIf,QAAM,aAAa,QAAQ,OAAO;AAAA,IAChC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAAA;AAAA,EAAA,IACE;AAAA,IACF;AAAA,IAAS;AAAA,IAAgB;AAAA,IAAU;AAAA,IAAgB;AAAA,IACnD;AAAA,IAAQ;AAAA,IAAU;AAAA,IAAqB;AAAA,IACvC;AAAA,IAAoB;AAAA,IAAgB;AAAA,IACpC;AAAA,IAAqB;AAAA,IAAmB;AAAA,IAAgB;AAAA,IAAGA;AAAA,EAAA,CAC5D;AAED,MAAI,QAAQ,cAAc;AACxB,WACE,oBAAC,aAAoB,WAAU,uBAC7B,8BAAC,OAAA,EAAI,OAAO,EAAE,WAAW,OAAA,GACvB,8BAAC,WAAA,EAAU,OAAO,EAAE,QAAQ,SAAS,EAAE,GACrC,UAAA,qBAAC,OAAA,EAAI,WAAU,0CACb,UAAA;AAAA,MAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAAA;AAAA,MAED,gBAAgB,IAAI,CAAC,OAAO,eAC3B;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC;AAAA,UACA,WAAW,MAAM;AAAA,UACjB,cAAc,QAAQ;AAAA,UACtB,OAAO;AAAA,UACN,GAAG;AAAA,QAAA;AAAA,QALC,GAAG,QAAQ,KAAK,IAAI,MAAM,SAAS,IAAI,UAAU;AAAA,MAAA,CAOzD;AAAA,IAAA,EAAA,CACH,EAAA,CACF,GACF,EAAA,GA1BY,KA2Bd;AAAA,EAEJ;AAEA,SACE,qBAAC,WAAA,EAAoB,WAAU,uBAC5B,UAAA;AAAA,IAAA;AAAA,IAED;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGF,qBAAC,MAAA,EAAK,WAAS,MAAC,SAAS,GACtB,UAAA;AAAA,MAAA;AAAA,MACA,gBAAgB,IAAI,CAAC,OAAO,eAC3B;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC;AAAA,UACA,WAAW,MAAM;AAAA,UACjB,cAAc,QAAQ;AAAA,UACtB,OAAO;AAAA,UACN,GAAG;AAAA,QAAA;AAAA,QALC,GAAG,QAAQ,KAAK,IAAI,MAAM,SAAS,IAAI,UAAU;AAAA,MAAA,CAOzD;AAAA,IAAA,EAAA,CACH;AAAA,EAAA,EAAA,GA1BY,KA2Bd;AAEJ,CAAC;AAED,YAAY,cAAc;AC9hB1B,MAAM,oBAAoB,CAAC,aAAkB,YAAiB,OAAY,kBAAuB;;AAC/F,UAAQ,WAAW,MAAA;AAAA,IACjB,KAAK;AACH,eAAQ,WAAM,qBAAN,mBAAwB,kBAAiB,YAAY,SAAS,cAAc,WAAW,MAAM,CAAC,EAAE,IAAI,GAAG,cAAc,WAAW,MAAM,CAAC,IAAI,WAAW,QAC1J,YAAY,SAAS,cAAc,WAAW,MAAM,CAAC,EAAE,KAAK,aAAa,cAAc,WAAW,MAAM,GAAG,CAAA;;AAAS,sBAAO,UAAU,WAAW,WAASlC,MAAA,+BAAO,WAAP,gBAAAA,IAAe,UAAS,IAAI;AAAA,OAAI,IAAI,YAAY,SAAA;AAAA,IAC/M,KAAK;AACH,aAAO,YAAY,IAAI,WAAW,OAAO,cAAc,WAAW,MAAM,CAAC;AAAA,IAC3E,KAAK;AACH,aAAO,YAAY,IAAI,WAAW,OAAO,cAAc,WAAW,MAAM,CAAC;AAAA,IAC3E,KAAK;AACH,aAAO,YAAY,IAAI,WAAW,OAAO,cAAc,WAAW,MAAM,CAAC;AAAA,IAC3E,KAAK;AACH,aAAO,YAAY,IAAI,WAAW,OAAO,cAAc,WAAW,MAAM,CAAC;AAAA,IAC3E,KAAK;AACH,aAAO,YAAY,KAAK,sBAAsB,cAAc,WAAW,MAAM,GAAG,CAAC,UAAU,SAAS,CAAC;AAAA,IACvG,KAAK;AACH,aAAO,YAAY,MAAM,WAAW,MAAM;AAAA,IAC5C,KAAK;AACH,aAAO,YAAY;AAAA,QACjB;AAAA,QACA,cAAc,WAAW,MAAM;AAAA,QAC/B,WACE,OAAO,UAAU,WACb,gBAAgB,KAAK,KAAK,IAC1B;AAAA,MAAA;AAAA,IAEV,KAAK;AACH,aAAO,YAAY,KAAK,WAAW,UAAU;AAAA,QAC3C,IAAI,CAAC,QAAa,QAAQ,WAAW;AAAA,QACrC,MAAM,MAAA;;AAAM,mBAAAA,MAAA,yCAAY,oBAAZ,gBAAAA,IAA6B;AAAA,YACvC,CAACc,cAAkBC,gBAAoB,kBAAkBD,cAAaC,aAAY,OAAO,aAAa;AAAA,YACtG;AAAA,gBACG;AAAA;AAAA,QACL,WAAW,MAAA;;AAAM,mBAAAf,MAAA,yCAAY,yBAAZ,gBAAAA,IAAkC;AAAA,YACjD,CAACc,cAAkBC,gBAAoB,kBAAkBD,cAAaC,aAAY,OAAO,aAAa;AAAA,YACtG;AAAA,gBACG;AAAA;AAAA,MAAA,CACN;AAAA,IAEH;AACE,aAAO;AAAA,EAAA;AAEb;AAEA,MAAM,aAAa,CAAC;AAAA,EAClB;AAAA,EACA,eAAAoB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,WAAW;AAAA,EACX;AAAA,EACA,iBAAiB;AAAA,EACjB;AACF,MAAW;AAET,QAAM,EAAE,EAAA,IAAM,eAAA;AAEd,WAAS,sBAAsB,mBAA2B,OAAY,iBAAsB,CAAA,GAAI;AAC9F,UAAMC,QAAO,kBAAkB,MAAM,GAAG;AACxC,QAAI,eAAe;AAEnB,IAAAA,MAAK,QAAQ,CAAC,KAAK,UAAU;AAC3B,UAAI,UAAUA,MAAK,SAAS,GAAG;AAC7B,YAAI,CAAC,aAAa,GAAG,GAAG;AACtB,gBAAM,mBAAmB,MAAM,WAAW;AAAA,YACxC,CAAC,aAAkB,eAAoB;;AACrC,sBAAQ,WAAW,MAAA;AAAA,gBACjB,KAAK;AACH,yBAAO,WAAW,QACd,YAAY,SAAS,EAAE,WAAW,MAAM,CAAC,EAAE,KAAK,aAAa,EAAE,WAAW,MAAM,GAAG,CAAA,UAAA;;AAAS,kCAAO,UAAU,WAAW,WAASpC,MAAA,+BAAO,WAAP,gBAAAA,IAAe,UAAS,IAAI;AAAA,mBAAI,MAChK,WAAM,qBAAN,mBAAwB,kBAAiB,YAAY,IAAI,GAAG,EAAE,WAAW,MAAM,CAAC,IAAI,YAAY,SAAA;AAAA,gBACvG,KAAK;AACH,yBAAO,YAAY,IAAI,WAAW,OAAO,EAAE,WAAW,MAAM,CAAC;AAAA,gBAC/D,KAAK;AACH,yBAAO,YAAY,IAAI,WAAW,OAAO,EAAE,WAAW,MAAM,CAAC;AAAA,gBAC/D,KAAK;AACH,yBAAO,YAAY,IAAI,WAAW,OAAO,EAAE,WAAW,MAAM,CAAC;AAAA,gBAC/D,KAAK;AACH,yBAAO,YAAY,IAAI,WAAW,OAAO,EAAE,WAAW,MAAM,CAAC;AAAA,gBAE/D;AACE,yBAAO;AAAA,cAAA;AAAA,YAEb;AAAA,YACA,kBAAkB,KAAK;AAAA,UAAA;AAEzB,uBAAa,GAAG,IAAI;AAAA,QACtB,WAAW,OAAO,aAAa,GAAG,MAAM,YAAY,MAAM,QAAQ,aAAa,GAAG,CAAC,GAAG;AACpF,gBAAM,IAAI,MAAM,sBAAsB,GAAG,wCAAwC;AAAA,QACnF;AAAA,MACF,OAAO;AACL,YAAI,CAAC,aAAa,GAAG,GAAG;AACtB,uBAAa,GAAG,IAAI,CAAA;AAAA,QACtB,WAAW,OAAO,aAAa,GAAG,MAAM,YAAY,MAAM,QAAQ,aAAa,GAAG,CAAC,GAAG;AACpF,gBAAM,IAAI,MAAM,sBAAsB,GAAG,wCAAwC;AAAA,QACnF;AACA,uBAAe,aAAa,GAAG;AAAA,MAEjC;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT;AAEA,QAAM,oBAAoB,CAAC,UAAe;;AACxC,YAAQ,MAAM,YAAA;AAAA,MACZ,KAAK;AACH,iBAAO,WAAM,qBAAN,mBAAwB,kBAC3BS,IAAI,MAAA,IACJA,IAAI,OAAA;AAAA,MAEV,KAAK;AAAA,MACL,KAAK;AACH,eAAOA,IAAI,OAAA,EAAS,UAAU,CAAC,OAAO,kBAAmB,kBAAkB,KAAK,SAAY,KAAM,EAAE,UAAU,2BAA2B,EAAE,SAAA;AAAA,MAC7I,KAAK;AACH,eAAOA,IAAI,OAAA;AAAA,MACb,KAAK;AACH,eAAOA,IAAI,OAAA,EAAS,QAAQ,+HAA+H,EAAE,oBAAoB,MAAM,SAAS,2BAA2B;AAAA,MAE7N;AACE,eAAOA,IAAI,OAAA;AAAA,IAAO;AAAA,EAExB;AAEA,QAAM,iCAAiC,CAAC,iBAAsB;AAC5D,UAAM4B,UAAc,CAAA;AAEpB,eAAW,OAAO,cAAc;AAC9B,UAAI,OAAO,aAAa,GAAG,MAAM,YAAY,CAAC,OAAO,OAAO,aAAa,GAAG,GAAG,OAAO,GAAG;AACvFA,gBAAO,GAAG,IAAI5B,IAAI,OAAA,EAAS,MAAM,+BAA+B,aAAa,GAAG,CAAC,CAAC;AAAA,MACpF,OAAO;AACL4B,gBAAO,GAAG,IAAI,aAAa,GAAG;AAAA,MAChC;AAAA,IACF;AACA,WAAOA;AAAAA,EACT;AAGA,QAAM,2BAA2B,CAACrD,UAAgB;AAChD,UAAM,kBAAuB,CAAA;AAC7B,QAAI,wBAA6B,IAC/B,qBAA0B,CAAA;AAE5BA,cACEA,+BAAM,QAAQ,CAAC,UAAe;;AAC5B,UAAI;AACJ,UAAI,MAAM,cAAc,MAAM,WAAW,SAAS,GAAG;AACnD,aAAI,WAAM,SAAN,mBAAY,SAAS,MAAM;AAC7B,kCAAwB,sBAAsB,MAAM,MAAM,OAAO,qBAAqB;AAAA,QACxF,OAAO;AACL,6BAAmB,MAAM,WAAW;AAAA,YAAO,CAAC,aAAkB,eAAoB,kBAAkB,aAAa,YAAY,OAAO,CAAC;AAAA,YACnI,kBAAkB,KAAK;AAAA,UAAA;AAEzB,0BAAgB,MAAM,IAAI,IAAI;AAAA,QAChC;AAEA,6BAAqB,+BAA+B,qBAAqB;AAAA,MAC3E;AAAA,IAEF;AAEF,WAAOyB,IAAI,OAAA,EAAS,MAAM;AAAA,MACxB,CAAC,cAAc,GAAGA,IAAI,OAAA,EAAS,MAAM,EAAE,GAAG,iBAAiB,GAAG,mBAAA,CAAoB;AAAA,IAAA,CACnF;AAAA,EACH;AAEA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,WAAW,EAAE,OAAA;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,IACD,QAAQ;AAAA,IACV,GAAI0B,kBAAiB,OAAOA,mBAAkB,WAAW,EAAE,eAAAA,eAAA,IAAkB,CAAA;AAAA,IAC7E,UAAUvC,EAAY,yBAAyB,IAAI,CAAC;AAAA,IACpD,MAAM;AAAA,EAAA,CACP;AAED,QAAM,gBAAgB,SAAS;AAAA,IAC7B;AAAA,IACA,MAAM;AAAA,EAAA,CACP;AAGD,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAa,CAAA,CAAE;AAC3C,QAAM,CAAC,UAAU,WAAW,IAAI,SAAgB,CAAA,CAAE;AAClD,QAAM,CAAC,YAAY,aAAa,IAAI,SAAkB,KAAK;AAC3D,QAAM,CAAC,gBAAgB,kBAAkB,IAAI,SAAiB,EAAE;AAChE,QAAM,CAAC,gBAAgB,eAAe,IAAI,SAAkB,KAAK;AACjE,QAAM,CAAC,wBAAwB,sBAAsB,IAAI,SAAgB,CAAA,CAAE;AAG3E,QAAM,sBAAsB,CAAC,cAAuB;AAClD,uDAAkB;AAAA,EACpB;AAEA,QAAM,iBAAiB,YAAY,CAAC,YAAiB;;AACnD,UAAM,mBAAiB,wCAAS,YAAT,mBAAkB,IAAI,CAAC,QAAa,SAAQ,CAAA;AACnE,UAAM,SAAS,UAAU,cAAc;AACvC,UAAM,iBAAiB,QAAQ,iBAAiB,cAAc;AAC9D,UAAM,oBACJ,mCAAS,yBACT,wCAAS,wBAAT,mBAA8B,cAAc,MAAM,KAAK,KAAK;AAC9D,UAAM,eAAc,wCAAS,mBAAT,mBAAyB,IAAI,CAAC,UAAe;AAAA,MAC/D,GAAG;AAAA,MACH,aAAa,eAAe;AAAA,QAC1B,CAAC,WAAgB,OAAO,oBAAoB,KAAK;AAAA,MAAA;AAAA,IACnD;AAEF,UAAM,uBACJ,iCAAS,qBACP,YAAY;AAAA,MAAK,CAAC,QAChB,IAAI,UAAS,iCAAS;AAAA,IAAgB,IACpC,CAAA;AAKR,QAAI;AACJ,QAAI,gBAAgB;AAClB,YAAM,eAAe,eAAe;AAAA,QAClC,CAAC,WAAgB,CAAC,OAAO,mBAAmB,CAAC,OAAO;AAAA,MAAA;AAEtD,YAAM,sBAAqB,2DAAqB,gBAAe,CAAA;AAC/D,gBAAU,CAAC,GAAG,cAAc,GAAG,kBAAkB;AAAA,IACnD,OAAO;AACL,gBAAU,mCAAS;AAAA,IACrB;AAEA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ,GAAG,CAAC,gBAAgB,SAAS,CAAC;AAE9B,QAAM,4BAA4B,YAAY,CAAC,SAAsB,OAAY0C,iBAAqB,WAAgB;;AACpH,UAAM,UAAS,sCAASA,qBAAT,mBAA2B,+BAAO;AACjD,UAAM,SAAS,IAAI,QAAQ,QAAQ;AACnC,SACE,+BAAO,8BACP,+BAAO,4BACP,WAAW,QACX;AACA;AAAA,QACE,GAAGA,eAAc,IAAI,+BAAO,uBAAuB;AAAA,QACnD;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,qBAAqB,YAAY,CAAC,gBAAqB;AAC3D,gBAAY,QAAQ,CAAC,SAAc;AACjC,mCAAM,YAAY,QAAQ,CAAC,WAAgB;AACzC,cAAM,cAAa,iCAAQ,SAAQ,OAAO,MAAM,YAAA,EAAc,MAAM,GAAG,EAAE,KAAK,GAAG;AACjF,cAAM,IAAI,EAAE,IAAIH,gBAAe,GAAG,cAAc,IAAI,UAAU,IAAI,IAAI;AACtE,cAAM,UAAU,KAAK,IAAI,CAAC,QAAa;AACrC,eAAI,iCAAQ,sBAAoB,2BAAK,kBAAiB;AACpD,mBAAO,IAAI;AAAA,UACb;AACA,iBAAQ;AAAA,YACN,GAAG;AAAA,YACH,GAAI,IAAI,EAAE,OAAO,MAAM,CAAA;AAAA,UAAC;AAAA,QAE5B,CAAC;AACD,YAAI,CAAC,GAAG;AACN,qBAAW,GAAG,cAAc,IAAI,UAAU,EAAW;AACrD,qBAAW,GAAG,cAAc,IAAI,UAAU,EAAW;AAAA,QACvD;AACA,+CAAY;AAAA,MACd;AAAA,IAEF,CAAC;AAAA,EACH,GAAG,CAAC,MAAMA,gBAAe,gBAAgB,YAAY,WAAW,UAAU,CAAC;AAE3E,QAAM,4BAA4B,YAAY,CAAC,mBAA2B,OAAY,iBAAsB,OAAO;AACjH,UAAMC,QAAO,kBAAkB,MAAM,GAAG;AACxC,QAAI,eAAe;AAEnB,IAAAA,MAAK,QAAQ,CAAC,KAAK,UAAU;AAC3B,UAAI,UAAUA,MAAK,SAAS,GAAG;AAC7B,YAAI,CAAC,aAAa,GAAG,GAAG;AACtB,cAAI,aAAa,MAAM;AACvB,cAAI,eAAe,MAAM,eAAe,WAAW,MAAM,eAAe,SAAS;AAC/E,gBAAI,MAAM,eAAe,QAAQ;AAC/B,2BAAa,MAAM,UAAU;AAAA,YAC/B,WAAW,MAAM,eAAe,QAAQ;AACtC,oBAAM,CAAC,OAAO,SAAS,OAAO,IAAI,WAAW,MAAM,GAAG,EAAE,IAAI,MAAM;AAClE,2BAAa,QAAQ,IAAI,QAAQ,KAAK,EAAE,IAAI,UAAU,OAAO,EAAE,IAAI,UAAU,OAAO,EAAE,IAAI,eAAe,CAAC;AAAA,YAC5G,WAAW,MAAM,KAAK,SAAS,KAAK,KAAK,CAAC,MAAM,QAAQ,+BAAO,KAAK,GAAG;AACrE,2BAAa,OAAO,UAAU;AAAA,YAChC;AAAA,UACF;AACA,uBAAa,GAAG,IAAI;AAAA,QACtB,WAAW,OAAO,aAAa,GAAG,MAAM,YAAY,MAAM,QAAQ,aAAa,GAAG,CAAC,GAAG;AACpF,gBAAM,IAAI,MAAM,sBAAsB,GAAG,wCAAwC;AAAA,QACnF;AAAA,MACF,OAAO;AACL,YAAI,CAAC,aAAa,GAAG,GAAG;AACtB,uBAAa,GAAG,IAAI,CAAA;AAAA,QACtB,WAAW,OAAO,aAAa,GAAG,MAAM,YAAY,MAAM,QAAQ,aAAa,GAAG,CAAC,GAAG;AACpF,gBAAM,IAAI,MAAM,sBAAsB,GAAG,wCAAwC;AAAA,QACnF;AACA,uBAAe,aAAa,GAAG;AAAA,MAEjC;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT,GAAG,CAAA,CAAE;AAEL,QAAM,8BAA8B,YAAY,CAAC,MAAM,SAAS;AAC9D,MAAE,OAAO,MAAM,CAAC,OAAO,QAAQ;AAC7B,UAAI,EAAE,IAAI,MAAM,GAAG,KAAK,EAAE,QAAQ,OAAO,KAAK,GAAG,CAAC,GAAG;AACnD,eAAO,KAAK,GAAG;AAAA,MACjB;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT,GAAG,CAAA,CAAE;AAEL,QAAM,iCAAiC,YAAY,CAAC,eAAoB;;AACtE,UAAM,iBAA2B,CAAA;AACjC,QAAI,YAAY;AACd,sBAAc,gBAAW,CAAC,MAAZ,mBAAe,YAAY,QAAQ,CAAC,WAAgB;AAChE,aAAI,iCAAQ,eAAc,MAAM,QAAQ,iCAAQ,UAAU,GAAG;AAC3D,2CAAQ,WAAW,QAAQ,CAAC,eAAoB;AAC9C,iBAAI,yCAAY,oBAAmB,MAAM,QAAQ,yCAAY,eAAe,GAAG;AAC7E,uDAAY,gBAAgB,QAAQ,CAAC,mBAAwB;AAC3D,qBAAI,iDAAgB,UAAS,eAAc,iDAAgB,WAAU,MAAM;AACzE,sBAAI,iCAAQ,MAAM;AAChB,mCAAe,KAAK,OAAO,IAAI;AAAA,kBACjC;AAAA,gBACF;AAAA,cACF;AAAA,YACF,OAAO;AACL,oBAAM,wBAAwB,OAAO,WAAW;AAAA,gBAC9C,CAACrB,gBAAoBA,YAAW,SAAS,cAAcA,YAAW,UAAU;AAAA,cAAA;AAE9E,kBAAI,uBAAuB;AACzB,+BAAe,KAAK,OAAO,IAAI;AAAA,cACjC;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IAEF;AACA,QAAI,gBAAgB;AAClB,6BAAuB,EAAE,KAAK,cAAc,CAAC;AAAA,IAC/C;AAAA,EAEF,GAAG,CAAA,CAAE;AAEL,QAAM,UAAU,YAAY,CAAC,UAAwB;AACnD,WACE,UAAU,QACV,UAAU,UACT,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW,KACzC,OAAO,UAAU,YAAY,OAAO,KAAK,KAAK,EAAE,WAAW;AAAA,EAEhE,GAAG,CAAA,CAAE;AAEL,QAAM,mBAAmB,YAAY,CAAC,eAAoB,wBAA4C;AACpG,UAAM,gBAA0B,CAAA;AAEhC,wBAAoB,QAAQ,CAAC,cAAc;AACzC,YAAMqB,QAAO,UAAU,MAAM,GAAG;AAChC,UAAI,eAAe;AAEnB,eAAS,IAAI,GAAG,IAAIA,MAAK,QAAQ,KAAK;AACpC,cAAM,MAAMA,MAAK,CAAC;AAElB,YAAI,EAAC,6CAAe,UAAQ,6CAAe,UAAS,GAAG;AAErD,wBAAc,KAAK,SAAS;AAC5B;AAAA,QACF;AAGA,uBAAe,aAAa,GAAG;AAAA,MACjC;AAGA,UAAI,QAAQ,YAAY,GAAG;AACzB,sBAAc,KAAK,SAAS;AAAA,MAC9B;AAAA,IACF,CAAC;AAGD,WAAO;AAAA,EACT,GAAG,CAAC,OAAO,CAAC;AAGZ,YAAU,MAAM;AACd,QAAI,sBAAsB;AACxB,2BAAqB,SAAS,MAAM;AAAA,IACtC;AAAA,EACF,GAAG,CAAC,sBAAsB,QAAQ,CAAC;AAEnC,YAAU,MAAM;AACd,UAAM,gBAAgB,CAAC,UAAwB;AAC7C,UAAI,MAAM,WAAW,OAAO,QAAQ;AAClC;AAAA,MACF;AACA,YAAM,EAAE,UAAU,MAAM;AAExB,UAAI,+BAAO,QAAQ;AACjB,cAAMpD,QAAY,wBAAwB,KAAK;AAE/C,YAAIA,MAAK,KAAK;AACZ,sBAAYA,MAAK,GAAG;AAAA,QACtB,WAAWA,MAAK,SAAS;AACvB,oBAAUA,MAAK,OAAO;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAEA,WAAO,iBAAiB,WAAW,aAAa;AAEhD,WAAO,MAAM;AACX,aAAO,oBAAoB,WAAW,aAAa;AAAA,IACrD;AAAA,EACF,GAAG,CAAA,CAAE;AAEL,YAAU,MAAM;;AACd,QAAI,MAAM;AACR,YAAM,WAAW,wBAAwB,IAAI;AAC7C,UAAI,qCAAU,KAAK;AAEjB,oBAAY,SAAS,GAAG;AACxB,YAAI,cAAc,QAAW;AAC3B,sBAAU,cAAS,IAAI,SAAS,MAAtB,mBAAyB,SAAQ,CAAA,CAAE;AAAA,QAC/C;AAAA,MACF,OAAO;AACL,kBAAU,SAAS,OAAO;AAAA,MAE5B;AACA,YAAM,QAAQ,EAAE,IAAImD,gBAAe,gBAAgB,CAAA,CAAE;AACrD,YAAM,QAAQ,4BAA6B,iBAAiB,CAAA,GAAM,SAAS,CAAA,CAAG;AAC9E,UAAI,SAAS,UAAU,GAAC,YAAO,KAAK,KAAK,MAAjB,mBAAoB,SAAQ;AAClD,YAAI,aAAkB,CAAA;AACtB,YAAI,mBAAwB,CAAA;AAC5B,aAAK,QAAQ,CAAC,UAAe;;AAC3B,gBAAM,aAAa,MAAM;AACzB,eAAInC,MAAA,MAAM,SAAN,gBAAAA,IAAY,SAAS,MAAM;AAC7B,+BAAmB,0BAA0B,MAAM,MAAM,OAAO,gBAAgB;AAAA,UAClF,OAAO;AACL,gBAAI,eAAe,MAAM,eAAe,WAAW,MAAM,eAAe,SAAS;AAC/E,kBAAI,+BAAO,kBAAkB;AAC3B,sBAAM,aAAY,+BAAO,wBAAsB,+BAAO;AACtD,6BAAa,EAAE,GAAG,YAAY,CAAC,SAAS,GAAG,WAAA;AAAA,cAC7C,YACE,+BAAO,SACP,CAAC,cAAc,WAAW,EAAE,SAAS,+BAAO,IAAI,KAChD,CAAC,iBAAiB,gBAAgB,eAAe,YAAY,EAAE,SAAS,cAAc,GACtF;AACA,6BAAa,EAAE,GAAG,YAAY,CAAC,MAAM,IAAI,GAAG,WAAA;AAAA,cAC9C,WAAW,MAAM,eAAe,QAAQ;AACtC,6BAAa,EAAE,GAAG,YAAY,CAAC,MAAM,IAAI,GAAG,MAAM,UAAU,EAAA;AAAA,cAC9D,WAAW,MAAM,eAAe,QAAQ;AACtC,sBAAM,CAAC,OAAO,SAAS,OAAO,IAAI,WAAW,MAAM,GAAG,EAAE,IAAI,MAAM;AAClE,6BAAa,EAAE,GAAG,YAAY,CAAC,MAAM,IAAI,GAAG,MAAA,EAAQ,IAAI,QAAQ,KAAK,EAAE,IAAI,UAAU,OAAO,EAAE,IAAI,UAAU,OAAO,EAAE,IAAI,eAAe,CAAC,EAAA;AAAA,cAC3I,WAAW,MAAM,KAAK,SAAS,KAAK,KAAK,CAAC,MAAM,QAAQ,+BAAO,KAAK,GAAG;AACrE,oBAAI,mBAAmB,eAAe,MAAM,SAAS,WAAW;AAC9D,+BAAa,EAAE,GAAG,YAAY,CAAC,MAAM,IAAI,GAAG,WAAA;AAAA,gBAC9C,OAAO;AACL,+BAAa,EAAE,GAAG,YAAY,CAAC,MAAM,IAAI,GAAG,OAAO,UAAU,EAAA;AAAA,gBAC/D;AAAA,cACF,OAAO;AACL,6BAAa,EAAE,GAAG,YAAY,CAAC,MAAM,IAAI,GAAG,WAAA;AAAA,cAC9C;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAC;AACD,cAAM,kBAAkB,EAAE,GAAG,YAAY,GAAG,iBAAA;AAC5C,cAAM,EAAE,CAAC,cAAc,GAAG,EAAE,GAAG,gBAAA,GAAmB;AAAA,MACpD;AACA,uDAAiB,EAAE,SAAS,cAAc,UAAU,OAAO,YAAY,WAAW,YAAY,SAAS,OAAO,eAAe,QAAQ,GAAG;IAC1I;AAAA,EAEF,GAAG,CAAC,IAAI,CAAC;AAET,YAAU,MAAM;AACd,QAAI,uCAAW,YAAY;AACzB,UAAI,YAAY,SAAS,SAAS,GAAG;AACnC,kBAAU,SAAS,SAAS,EAAE,IAAI;AAAA,MACpC;AAAA,IACF;AAAA,EACF,GAAG,CAAC,WAAW,QAAQ,CAAC;AAExB,YAAU,MAAM;AACd,QAAI,iBAAiB,kBAAkB;AACrC,2DAAmB;AAAA,IACrB;AAAA,EACF,GAAG,CAAC,kBAAkB,aAAa,CAAC;AAEpC,YAAU,MAAM;AACd,QAAI,iCAAS,iBAAiB;AAC5B,oBAAc,IAAI;AAAA,IACpB,OAAO;AACL,oBAAc,KAAK;AAAA,IACrB;AAAA,EAEF,GAAG,CAAC,gBAAgB,KAAK,UAAU,MAAM,CAAC,CAAC;AAE3C,YAAU,MAAM;;AACd,UAAM,kBAA4B,CAAA;AAClC,QAAI,aAAa,QAAW;AAC1B,qBAAS,SAAS,MAAlB,mBAAqB,KAAK,QAAQ,CAAC,YAAiB;AAElD,YAAI,QAAQ,WAAW,MAAM,QAAQ,QAAQ,OAAO,GAAG;AAErD,kBAAQ,QAAQ,QAAQ,CAAC,WAAgB;AACvC,gBAAI,OAAO,cAAc,MAAM,QAAQ,OAAO,UAAU,GAAG;AACzD,oBAAM,wBAAwB,OAAO,WAAW;AAAA,gBAC9C,CAAC,eAAoB,WAAW,SAAS,cAAc,WAAW,UAAU;AAAA,cAAA;AAE9E,kBAAI,uBAAuB;AAEzB,gCAAgB,KAAK,OAAO,IAAI;AAAA,cAClC;AAAA,YACF;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AACA,6BAAuB,eAAe;AAAA,IACxC;AAAA,EACF,GAAG,CAAC,UAAU,SAAS,CAAC;AAExB,YAAU,MAAM;AACd,QAAI,+CAAe,cAAc;AAE/B,YAAM,iBAAwB,CAAA;AAC9B,gBAAU,OAAO,QAAQ,CAAC,YAAiB;;AACzC,cAAM,iBAAiB,YAAU,wCAAS,YAAT,mBAAkB,IAAI,CAAC,QAAa,SAAQ,CAAA;AAE7E,cAAM,cAAc,YAAU,wCAAS,mBAAT,mBAAyB,IAAI,CAAC,UAAe;AAAA,UACzE,GAAG;AAAA,UACH,aAAa,eAAe;AAAA,YAC1B,CAAC,WAAgB,OAAO,oBAAoB,KAAK;AAAA,UAAA;AAAA,QACnD;AAEF,YAAI,aAAa;AACf,yBAAe,KAAK,WAAW;AAAA,QACjC;AAAA,MACF,CAAC;AAED,YAAM,eAAc,+CAAe,iBAAgB;AACnD,YAAM,aAAa,kBAAkB,MAAM,QAAQ,eAAe,CAAC,CAAC,IAChE,eAAe,CAAC,EAAE,OAAO,CAAC,SAAc,KAAK,SAAS,WAAW,IACjE,CAAA;AAEJ,UAAI,YAAY;AACd,uCAA+B,UAAU;AAAA,MAC3C;AAAA,IAEF;AAAA,EACF,GAAG,CAAC,+CAAe,cAAc,QAAQ,8BAA8B,CAAC;AAExE,YAAU,MAAM;AACd,QAAI,uBAAuB,SAAS,GAAG;AACrC,YAAM,wBAAwB,iBAAiB,eAAe,sBAAsB;AAOpF,4BAAsB,WAAW,IAAI,gBAAgB,IAAI,IAAI,gBAAgB,KAAK;AAAA,IACpF,OAAO;AACL,sBAAgB,IAAI;AAAA,IACtB;AAAA,EAEF,GAAG,CAAC,wBAAwB,eAAe,SAAS,CAAC;AAErD,YAAU,MAAM;AACd,QAAI,oBAAoB;AACtB,yBAAmB,cAAc;AAAA,IACnC;AAAA,EACF,GAAG,CAAC,oBAAoB,cAAc,CAAC;AAGvC;AAAA;AAAA,wBAEG,KAAA,EAAI,IAAI,EAAE,OAAO,QAAQ,SAAS,QAAQ,GAAG,gBAAA,GAC5C,UAAA,oBAAC,cAAA,EAAc,GAAG,EAAE,SAAS,cAAc,UAAU,OAAO,YAAY,WAAW,YAAY,SAAS,OAAO,QAAQ,GAAG,KAAA,GACxH,UAAA,qBAAC,QAAA,EAAK,IAAI,gBAAgB,MAAM,gBAAgB,UAAU,aAAa,gBAAgB,GACpF,UAAA;AAAA,MAAA,QAAQ,qCAAU,MAAM,KACvB,qBAAA,UAAA,EACG,UAAA;AAAA,QAAA,cACC,oBAAC,SAAM,UAAS,SAAQ,SAAS,MAAM,cAAc,KAAK,GAAG,UAAA,uCAAA,CAE7D;AAAA,QAEF;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAM;AAAA,YACN;AAAA,YACA,aAAa;AAAA,YACb,gBAAgB;AAAA,YAChB,gBAAgB;AAAA,UAAA;AAAA,QAAA;AAAA,MAClB,GACF;AAAA,MAED,UACC,OAAO,IAAI,CAAC,SAAc,UAAkB;AAC1C,cAAM;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA,IACE,eAAe,OAAO;AAE1B,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YAEA;AAAA,YACA;AAAA,UAAA;AAAA,QAAA;AAAA,MAGN,CAAC;AAAA,IAAA,EAAA,CACL,GACF,EAAA,CACF;AAAA;AAGJ;ACppBA,MAAM,uBAAuB,IAAI,OAAA,EAAS,MAAM;AAAA,EAC5C,MAAM,IAAI,OAAA,EAAS,MAAM;AAAA,IACrB,MAAM,IAAI,SAAS,SAAS,uBAAuB;AAAA,IACnD,eAAe,IAAI,OAAA,EAAS,SAAA;AAAA,IAC5B,cAAc,IAAI,OAAA,EAAS,SAAA,EAAW,SAAS,uBAAuB;AAAA,IACtE,YAAY,IAAI,MAAA,EAAQ,SAAA;AAAA,IACxB,aAAa,IAAI,OAAA;AAAA,EAAO,CAC3B;AACL,CAAC;AAED,MAAM,iBAAiB;AAAA,EACnB,MAAM;AAAA,IACF,MAAM;AAAA,IACN,eAAe;AAAA,IACf,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,aAAa;AAAA,EAAA;AAErB;AAEO,MAAM,eAA+C,CAAC;AAAA,EACzD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAM;AACF,QAAM,EAAE,EAAA,IAAM,eAAA;AAEd,QAAM,EAAE,SAAS,cAAc,OAAO,MAAA,IAAU,QAAqB;AAAA,IACjE,MAAM;AAAA,IACN,UAAUJ,EAAY,oBAAoB;AAAA,IAC1C,eAAe;AAAA,EAAA,CAClB;AAED,QAAM,uBAAuB,MAAM,oBAAoB;AACvD,QAAM,qBAAqB,MAAM,mBAAmB;AAEpD,QAAM,mBAAmB,MAAM;AAC3B,UAAM,cAAc;AACpB,cAAA;AAAA,EACJ;AAEA,QAAM,WAAW,OAAO,WAAwB;AAC5C,UAAM,OAAO,MAAM;AACnB,qBAAA;AAAA,EACJ;AAGA,QAAM,aAAa,QAAQ,OAAO;AAAA,IAC9B,qBAAqB,wBAAwB;AAAA,EAAA,IAC7C,CAAC,oBAAoB,CAAC;AAE1B,QAAM,gBAAgB,QAAQ,OAAO;AAAA,IACjC,qBAAqB,wBAAwB;AAAA,IAC7C,GAAI,qBAAqB,EAAE,UAAU,uBAAuB,CAAA;AAAA,EAAC,IAC7D,CAAC,sBAAsB,kBAAkB,CAAC;AAE9C,SACI;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAS;AAAA,MACT,WAAS;AAAA,MACR,GAAG;AAAA,MAEJ,UAAA,qBAAC,QAAA,EAAK,UAAU,aAAa,QAAQ,GAChC,UAAA;AAAA,QAAA,iCAAc,aAAA,EAAY;AAAA,QAC3B,qBAAC,aAAA,EAAY,WAAU,8BACnB,UAAA;AAAA,UAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,WAAU,QAAO,UACxC,UAAA,EAAE,+CAA+C,UAAU,EAAA,CAChE;AAAA,UACA,oBAAC,cAAW,SAAS,kBACjB,8BAAC,OAAA,EAAM,UAAS,SAAQ,EAAA,CAC5B;AAAA,QAAA,GACJ;AAAA,QACA,oBAAC,eAAA,EAAc,WAAU,iCACrB,UAAA,qBAAC,MAAA,EAAK,WAAS,MAAC,QAAQ,KAAK,eAAe,GAAG,IAAI,GAE/C,UAAA;AAAA,UAAA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,IACX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,aAAa;AAAA,cACb,OAAO,EAAE,oDAAoD,WAAW;AAAA,cACxE,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,aAAa,EAAE,0DAA0D,iBAAiB;AAAA,cAC1F,UAAQ;AAAA,YAAA;AAAA,UAAA,GAEhB;AAAA,UAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,OAAO,EAAE,0DAA0D,YAAY;AAAA,cAC/E,MAAK;AAAA,cACL,aAAa,EAAE,gEAAgE,mBAAmB;AAAA,cAClG,gBAAe;AAAA,cACf,aAAa;AAAA,cACb,SAAQ;AAAA,cACR,UAAU;AAAA,cACV,SAAS,CAAA;AAAA,YAAC;AAAA,UAAA,GAElB;AAAA,UAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,OAAO,EAAE,yDAAyD,WAAW;AAAA,cAC7E,MAAK;AAAA,cACL,aAAa,EAAE,+DAA+D,kBAAkB;AAAA,cAChG,gBAAe;AAAA,cACf,aAAa;AAAA,cACb,SAAQ;AAAA,cACR,UAAQ;AAAA,cACR,SAAS,CAAA;AAAA,cACT,eAAe;AAAA,YAAA;AAAA,UAAA,GAEvB;AAAA,UAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,IACX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,OAAO,EAAE,uDAAuD,SAAS;AAAA,cACzE,MAAK;AAAA,cACL,aAAa,EAAE,6DAA6D,gBAAgB;AAAA,cAC5F,gBAAe;AAAA,cACf,aAAa;AAAA,cACb,SAAQ;AAAA,cACR,UAAU;AAAA,cACV,SAAS,CAAA;AAAA,cACT,gBAAc;AAAA,cACd,eAAe;AAAA,YAAA;AAAA,UAAA,GAEvB;AAAA,UAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,IACX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,aAAa;AAAA,cACb,OAAO,EAAE,2DAA2D,aAAa;AAAA,cACjF,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,aAAa,EAAE,iEAAiE,mBAAmB;AAAA,cACnG,cAAY;AAAA,cACZ,MAAM;AAAA,YAAA;AAAA,UAAA,EACV,CACJ;AAAA,QAAA,EAAA,CACJ,EAAA,CACJ;AAAA,QACA,qBAAC,eAAA,EAAc,WAAU,+BACrB,UAAA;AAAA,UAAA,oBAAC,QAAA,EAAK;AAAA,UACN,qBAAC,KAAA,EAAI,SAAQ,QAAO,KAAK,KACrB,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,WAAU;AAAA,gBACV,SAAS;AAAA,gBAER,YAAE,eAAe;AAAA,cAAA;AAAA,YAAA;AAAA,gCAErB,QAAA,EAAO,MAAK,UACR,UAAA,EAAE,aAAa,EAAA,CACpB;AAAA,UAAA,EAAA,CACJ;AAAA,QAAA,EAAA,CACJ;AAAA,MAAA,EAAA,CACJ;AAAA,IAAA;AAAA,EAAA;AAGZ;ACrKA,MAAM,6BAA6B,IAAI,OAAA,EAAS,MAAM;AAAA,EAClD,YAAY,IAAI,OAAA,EAAS,MAAM;AAAA,IAC3B,YAAY,IAAI,OAAA,EAAS,SAAA,EAAW,SAAS,qBAAqB;AAAA,IAClE,iBAAiB,IAAI,SAAS,SAAS,6BAA6B;AAAA,IACpE,MAAM,IAAI,SAAS,SAAS,6BAA6B;AAAA,IACzD,sBAAsB,IAAI,OAAA,EAAS,SAAA;AAAA,IACnC,oBAAoB,IAAI,OAAA,EAAS,SAAA;AAAA,IACjC,WAAW,IAAI,OAAA;AAAA,IACf,QAAQ,IAAI,QAAA;AAAA,IACZ,aAAa,IAAI,OAAA;AAAA,EAAO,CAC3B;AACL,CAAC;AAEM,MAAM,qBAAqD,CAAC;AAAA,EAC/D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAM;AACF,QAAM,EAAE,EAAA,IAAM,eAAA;AAEd,QAAM,EAAE,SAAS,cAAc,OAAO,SAAS,MAAA,IAAU,QAAa;AAAA,IAClE,MAAM;AAAA,IACN,UAAUA,EAAY,0BAA0B;AAAA,IAChD,eAAe;AAAA,MACX,YAAY;AAAA,QACR,YAAY;AAAA,QACZ,iBAAiB;AAAA,QACjB,MAAM;AAAA,QACN,sBAAsB;AAAA,QACtB,oBAAoB;AAAA,QACpB,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,aAAa;AAAA,MAAA;AAAA,IACjB;AAAA,EACJ,CACH;AAED,QAAM,gBAAgB,MAAM,uBAAuB;AAEnD,QAAM,mBAAmB,MAAM;AAC3B,UAAM;AAAA,MACF,YAAY;AAAA,QACR,YAAY;AAAA,QACZ,iBAAiB;AAAA,QACjB,MAAM;AAAA,QACN,sBAAsB;AAAA,QACtB,oBAAoB;AAAA,QACpB,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,aAAa;AAAA,MAAA;AAAA,IACjB,CACH;AACD,cAAA;AAAA,EACJ;AAEA,QAAM,WAAW,OAAO,WAAwB;AAC5C,UAAM,UAAU,MAAM,QAAA;AACtB,QAAI,CAAC,QAAS;AACd,UAAM,OAAO,MAAa;AAC1B,qBAAA;AAAA,EACJ;AAEA,SACI;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAS;AAAA,MACT,WAAS;AAAA,MACR,GAAG;AAAA,MAEJ,0CACI,UAAA,qBAAC,QAAA,EAAK,UAAU,aAAa,QAAQ,GAChC,UAAA;AAAA,QAAA,iCAAc,aAAA,EAAY;AAAA,QAC3B,qBAAC,aAAA,EAAY,WAAU,8BACnB,UAAA;AAAA,UAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,WAAU,QAAO,UACxC,UAAA,EAAE,qDAAqD,gBAAgB,EAAA,CAC5E;AAAA,UACA,oBAAC,cAAW,SAAS,kBACjB,8BAAC,OAAA,EAAM,UAAS,SAAQ,EAAA,CAC5B;AAAA,QAAA,GACJ;AAAA,QACA,oBAAC,eAAA,EAAc,WAAU,iCACrB,UAAA,qBAAC,MAAA,EAAK,WAAS,MAAC,QAAQ,KAAK,eAAe,GAAG,IAAI,GAE/C,UAAA;AAAA,UAAA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,IACX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,OAAO,EAAE,6DAA6D,SAAS;AAAA,cAC/E,MAAK;AAAA,cACL,aAAa,EAAE,mEAAmE,gBAAgB;AAAA,cAClG,gBAAe;AAAA,cACf,aAAa;AAAA,cACb,SAAQ;AAAA,cACR,UAAQ;AAAA,cACR,SAAS,CAAA;AAAA,YAAC;AAAA,UAAA,GAElB;AAAA,UAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,aAAa;AAAA,cACb,OAAO,EAAE,0DAA0D,iBAAiB;AAAA,cACpF,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,aAAa,EAAE,gEAAgE,uBAAuB;AAAA,cACtG,UAAQ;AAAA,YAAA;AAAA,UAAA,GAEhB;AAAA,UAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,aAAa;AAAA,cACb,OAAO,EAAE,0DAA0D,iBAAiB;AAAA,cACpF,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,aAAa,EAAE,gEAAgE,uBAAuB;AAAA,cACtG,UAAQ;AAAA,YAAA;AAAA,UAAA,GAEhB;AAAA,UAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,OAAO,EAAE,uEAAuE,mBAAmB;AAAA,cACnG,MAAK;AAAA,cACL,aAAa,EAAE,6EAA6E,0BAA0B;AAAA,cACtH,gBAAe;AAAA,cACf,aAAa;AAAA,cACb,SAAQ;AAAA,cACR,UAAU;AAAA,cACV,SAAS,CAAA;AAAA,cACT,eAAe;AAAA,gBACX,gBAAgB;AAAA,gBAChB,kBAAkB,iBAAiB;AAAA,cAAA;AAAA,YACvC;AAAA,UAAA,GAER;AAAA,UAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,OAAO,EAAE,qEAAqE,iBAAiB;AAAA,cAC/F,MAAK;AAAA,cACL,aAAa,EAAE,2EAA2E,wBAAwB;AAAA,cAClH,gBAAe;AAAA,cACf,aAAa;AAAA,cACb,SAAQ;AAAA,cACR,UAAU;AAAA,cACV,SAAS,CAAA;AAAA,cACT,eAAe;AAAA,gBACX,kBAAkB,iBAAiB;AAAA,cAAA;AAAA,YACvC;AAAA,UAAA,GAER;AAAA,UAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,aAAa;AAAA,cACb,OAAO,EAAE,+DAA+D,WAAW;AAAA,cACnF,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,aAAa,EAAE,qEAAqE,iBAAiB;AAAA,YAAA;AAAA,UAAA,GAE7G;AAAA,UAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,aAAa;AAAA,cACb,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,OAAO,EAAE,4DAA4D,QAAQ;AAAA,cAC7E,OAAO,EAAE,iBAAiB,QAAQ;AAAA,cAClC,eAAc;AAAA,cACd,UAAU;AAAA,YAAA;AAAA,UAAA,GAElB;AAAA,UAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,IACX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,aAAa;AAAA,cACb,OAAO,EAAE,iEAAiE,aAAa;AAAA,cACvF,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,aAAa,EAAE,uEAAuE,mBAAmB;AAAA,cACzG,cAAY;AAAA,cACZ,MAAM;AAAA,YAAA;AAAA,UAAA,EACV,CACJ;AAAA,QAAA,EAAA,CACJ,EAAA,CACJ;AAAA,QACA,qBAAC,eAAA,EAAc,WAAU,+BACrB,UAAA;AAAA,UAAA,oBAAC,QAAA,EAAK;AAAA,UACN,qBAAC,KAAA,EAAI,SAAQ,QAAO,KAAK,KACrB,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,WAAU;AAAA,gBACV,SAAS;AAAA,gBAER,YAAE,eAAe;AAAA,cAAA;AAAA,YAAA;AAAA,YAEtB,oBAAC,QAAA,EAAO,MAAK,UAAS,SAAS,aAAa,QAAQ,GAC/C,UAAA,EAAE,aAAa,EAAA,CACpB;AAAA,UAAA,EAAA,CACJ;AAAA,QAAA,EAAA,CACJ;AAAA,MAAA,EAAA,CACJ,EAAA,CACJ;AAAA,IAAA;AAAA,EAAA;AAGZ;AC9MA,MAAMU,qBAAmB,IAAI,OAAA,EAAS,MAAM;AAAA,EACxC,eAAe,IAAI,OAAA,EAAS,MAAM;AAAA,IAC9B,MAAM,IAAI,OAAA,EAAS,SAAS,kBAAkB;AAAA,EAAA,CACjD;AACL,CAAC;AAED,MAAM,mBAAiD,CAAC;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAM;AACF,QAAM,EAAE,EAAA,IAAM,eAAA;AACd,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAwB,IAAI;AACtD,QAAM,EAAE,SAAS,cAAc,MAAA,IAAU,QAAa;AAAA,IAClD,MAAM;AAAA,IACN,UAAUV,EAAYU,kBAAgB;AAAA,EAAA,CACzC;AACD,QAAM,mBAAmB,MAAM;AAC3B,UAAM,EAAE,eAAe,QAAW;AAClC,cAAA;AAAA,EACJ;AAEA,QAAM,WAAW,OAAO,WAAwB;AAE5C,WAAO,iCAAQ,aAAa;AAAA,EAChC;AAEA,SACI;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAS;AAAA,MACT,WAAS;AAAA,MACR,GAAG;AAAA,MACA,UAAA;AAAA,QAAA,oBAAA,UAAA,EAEJ,UAAA,qBAAC,QAAA,EAAK,UAAU,aAAa,QAAQ,GACpC,UAAA;AAAA,UAAA,iCACgB,aAAA,EAAY;AAAA,UAEzB,qBAAC,aAAA,EAAY,WAAU,8BACnB,UAAA;AAAA,YAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,WAAU,QAAO,UACxC,UAAA,EAAE,oCAAoC,EAAA,CAC3C;AAAA,YACA,oBAAC,cAAW,SAAS,kBACjB,8BAAC,OAAA,EAAM,UAAS,SAAQ,EAAA,CAC5B;AAAA,UAAA,GACJ;AAAA,UACA,oBAAC,eAAA,EAAc,WAAU,iCAEjB,UAAA,qBAAC,MAAA,EAAK,WAAS,MAAC,QAAQ,KAAK,eAAe,GAAG,IAAI,GAC/C,UAAA;AAAA,YAAA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,MAAK;AAAA,gBACL,aAAa;AAAA,gBACb,OAAO,EAAE,kDAAkD;AAAA,gBAC3D,MAAK;AAAA,gBACL,gBAAe;AAAA,gBACf,aAAa,EAAE,wDAAwD;AAAA,gBACvE,UAAQ;AAAA,cAAA;AAAA,YAAA,GAEhB;AAAA,YACA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,MAAK;AAAA,gBACL,aAAa;AAAA,gBACb,OAAO,EAAE,kDAAkD;AAAA,gBAC3D,MAAK;AAAA,gBACL,gBAAe;AAAA,gBACf,aAAa,EAAE,wDAAwD;AAAA,gBACvE,UAAQ;AAAA,cAAA;AAAA,YAAA,GAEhB;AAAA,YACA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,OAAO;AAAA,kBACH;AAAA,gBAAA;AAAA,gBAEJ,MAAK;AAAA,gBACL,aAAa;AAAA,kBACT;AAAA,gBAAA;AAAA,gBAEJ,gBAAe;AAAA,gBACf,aAAa;AAAA,gBACb,SAAQ;AAAA,gBACR,iBAAiB,CAAC;AAAA;AAAA,kBAEd,QAAQ,IAAI,QAAQ,IAAI;AAAA;AAAA,gBAE5B,UAAU;AAAA,cAAA;AAAA,YAAA,EACd,CACJ;AAAA,UAAA,EAAA,CACJ,EAAA,CAER;AAAA,UACA,qBAAC,eAAA,EAAc,WAAU,+BACrB,UAAA;AAAA,YAAA,oBAAC,QAAA,EAAK;AAAA,YACN,qBAAC,KAAA,EAAI,SAAQ,QAAO,KAAK,KACrB,UAAA;AAAA,cAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACG,WAAU;AAAA,kBACV,SAAS;AAAA,kBACR,YAAE,eAAe;AAAA,gBAAA;AAAA,cAAA;AAAA,cAEtB,oBAAC,QAAA,EAAO,MAAK,UAAS,SAAS,aAAa,QAAQ,GAAI,UAAA,EAAE,aAAa,EAAA,CAAE;AAAA,YAAA,EAAA,CAC7E;AAAA,UAAA,EAAA,CACJ;AAAA,QAAA,EAAA,CACJ,EAAA,CACA;AAAA,QACA;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,MAAM,QAAQ,KAAK;AAAA,YACnB,MAAM,+BAAO;AAAA,YACb,SAAS,+BAAO;AAAA,YAChB,aAAa,MAAM,SAAS,IAAI;AAAA,YAChC,cAAc,EAAE,YAAY,SAAS,UAAU,SAAA;AAAA,UAAS;AAAA,QAAA;AAAA,MAC5D;AAAA,IAAA;AAAA,EAAA;AAGZ;ACpIA,MAAM,8BAA8B,IAAI,OAAA,EAAS,MAAM;AAAA,EACnD,aAAa,IAAI,OAAA,EAAS,MAAM;AAAA,IAC5B,YAAY,IAAI,OAAA,EAAS,SAAA,EAAW,SAAS,qBAAqB;AAAA,IAClE,kBAAkB,IAAI,OAAA;AAAA,IACtB,MAAM,IAAI,SAAS,SAAS,8BAA8B;AAAA,IAC1D,YAAY,IAAI,OAAA,EAAS,SAAA;AAAA,IACzB,OAAO,IAAI,OAAA,EAAS,SAAA,EAAW,UAAU,wBAAwB;AAAA,IACjE,QAAQ,IAAI,QAAA;AAAA,IACZ,aAAa,IAAI,OAAA;AAAA,EAAO,CAC3B;AACL,CAAC;AAEM,MAAM,sBAAsD,CAAC;AAAA,EAChE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAM;AACF,QAAM,EAAE,EAAA,IAAM,eAAA;AAEd,QAAM,EAAE,SAAS,cAAc,OAAO,SAAS,MAAA,IAAU,QAAa;AAAA,IAClE,MAAM;AAAA,IACN,UAAUV,EAAY,2BAA2B;AAAA,IACjD,eAAe;AAAA,MACX,aAAa;AAAA,QACT,YAAY;AAAA,QACZ,kBAAkB;AAAA,QAClB,MAAM;AAAA,QACN,YAAY;AAAA,QACZ,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,aAAa;AAAA,MAAA;AAAA,IACjB;AAAA,EACJ,CACH;AAED,QAAM,gBAAgB,MAAM,wBAAwB;AAEpD,QAAM,mBAAmB,MAAM;AAC3B,UAAM;AAAA,MACF,aAAa;AAAA,QACT,YAAY;AAAA,QACZ,kBAAkB;AAAA,QAClB,MAAM;AAAA,QACN,YAAY;AAAA,QACZ,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,aAAa;AAAA,MAAA;AAAA,IACjB,CACH;AACD,cAAA;AAAA,EACJ;AAEA,QAAM,WAAW,OAAO,WAAwB;AAC5C,UAAM,UAAU,MAAM,QAAA;AACtB,QAAI,CAAC,QAAS;AACd,UAAM,OAAO,MAAa;AAC1B,qBAAA;AAAA,EACJ;AAEA,SACI;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAS;AAAA,MACT,WAAS;AAAA,MACR,GAAG;AAAA,MAEJ,0CACI,UAAA,qBAAC,QAAA,EAAK,UAAU,aAAa,QAAQ,GAChC,UAAA;AAAA,QAAA,iCAAc,aAAA,EAAY;AAAA,QAC3B,qBAAC,aAAA,EAAY,WAAU,8BACnB,UAAA;AAAA,UAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,WAAU,QAAO,UACxC,UAAA,EAAE,sDAAsD,iBAAiB,EAAA,CAC9E;AAAA,UACA,oBAAC,cAAW,SAAS,kBACjB,8BAAC,OAAA,EAAM,UAAS,SAAQ,EAAA,CAC5B;AAAA,QAAA,GACJ;AAAA,QACA,oBAAC,eAAA,EAAc,WAAU,iCACrB,UAAA,qBAAC,MAAA,EAAK,WAAS,MAAC,QAAQ,KAAK,eAAe,GAAG,IAAI,GAE/C,UAAA;AAAA,UAAA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,IACX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,OAAO,EAAE,8DAA8D,SAAS;AAAA,cAChF,MAAK;AAAA,cACL,aAAa,EAAE,oEAAoE,gBAAgB;AAAA,cACnG,gBAAe;AAAA,cACf,aAAa;AAAA,cACb,SAAQ;AAAA,cACR,UAAQ;AAAA,cACR,SAAS,CAAA;AAAA,YAAC;AAAA,UAAA,GAElB;AAAA,UAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,aAAa;AAAA,cACb,OAAO,EAAE,2DAA2D,kBAAkB;AAAA,cACtF,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,aAAa,EAAE,iEAAiE,wBAAwB;AAAA,YAAA;AAAA,UAAA,GAEhH;AAAA,UAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,aAAa;AAAA,cACb,OAAO,EAAE,2DAA2D,kBAAkB;AAAA,cACtF,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,aAAa,EAAE,iEAAiE,wBAAwB;AAAA,cACxG,UAAQ;AAAA,YAAA;AAAA,UAAA,GAEhB;AAAA,UAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,OAAO,EAAE,iEAAiE,YAAY;AAAA,cACtF,MAAK;AAAA,cACL,aAAa,EAAE,uEAAuE,mBAAmB;AAAA,cACzG,gBAAe;AAAA,cACf,aAAa;AAAA,cACb,SAAQ;AAAA,cACR,UAAU;AAAA,cACV,SAAS,CAAA;AAAA,cACT,eAAe;AAAA,gBACX,kBAAkB,iBAAiB;AAAA,cAAA;AAAA,YACvC;AAAA,UAAA,GAER;AAAA,UAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,aAAa;AAAA,cACb,OAAO,EAAE,4DAA4D,OAAO;AAAA,cAC5E,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,aAAa,EAAE,kEAAkE,aAAa;AAAA,YAAA;AAAA,UAAA,GAEtG;AAAA,UAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,aAAa;AAAA,cACb,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,OAAO,EAAE,6DAA6D,QAAQ;AAAA,cAC9E,OAAO,EAAE,iBAAiB,QAAQ;AAAA,cAClC,eAAc;AAAA,cACd,UAAU;AAAA,YAAA;AAAA,UAAA,GAElB;AAAA,UAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,IACX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,aAAa;AAAA,cACb,OAAO,EAAE,kEAAkE,aAAa;AAAA,cACxF,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,aAAa,EAAE,wEAAwE,mBAAmB;AAAA,cAC1G,cAAY;AAAA,cACZ,MAAM;AAAA,YAAA;AAAA,UAAA,EACV,CACJ;AAAA,QAAA,EAAA,CACJ,EAAA,CACJ;AAAA,QACA,qBAAC,eAAA,EAAc,WAAU,+BACrB,UAAA;AAAA,UAAA,oBAAC,QAAA,EAAK;AAAA,UACN,qBAAC,KAAA,EAAI,SAAQ,QAAO,KAAK,KACrB,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,WAAU;AAAA,gBACV,SAAS;AAAA,gBAER,YAAE,eAAe;AAAA,cAAA;AAAA,YAAA;AAAA,YAEtB,oBAAC,QAAA,EAAO,MAAK,UAAS,SAAS,aAAa,QAAQ,GAC/C,UAAA,EAAE,aAAa,EAAA,CACpB;AAAA,UAAA,EAAA,CACJ;AAAA,QAAA,EAAA,CACJ;AAAA,MAAA,EAAA,CACJ,EAAA,CACJ;AAAA,IAAA;AAAA,EAAA;AAGZ;ACzKA,MAAM,kBAAkB;AAAA,EACpB,EAAE,OAAO,QAAQ,OAAO,OAAA;AAAA,EACxB,EAAE,OAAO,QAAQ,OAAO,OAAA;AAAA,EACxB,EAAE,OAAO,yBAAyB,OAAO,wBAAA;AAC7C;AAEA,MAAM,uBAAuB;AAAA,EACzB,EAAE,OAAO,iBAAiB,OAAO,gBAAA;AAAA,EACjC,EAAE,OAAO,aAAa,OAAO,YAAA;AACjC;AAEA,MAAM,sBAAsB;AAAA,EACxB,EAAE,OAAO,oBAAoB,OAAO,mBAAA;AAAA,EACpC,EAAE,OAAO,4BAA4B,OAAO,2BAAA;AAChD;AAEA,MAAMU,qBAAmB,IAAI,OAAA,EAAS,MAAM;AAAA,EACxC,4BAA4B,IAAI,OAAA,EAAS,MAAM;AAAA,IAC3C,MAAM,IAAI,SAAS,SAAS,kBAAkB;AAAA,IAC9C,KAAK,IAAI,SAAS,SAAS,iBAAiB;AAAA,IAC5C,UAAU,IAAI,QAAQ,SAAS,sBAAsB;AAAA,IACrD,WAAW,IAAI,QAAQ,SAAS,uBAAuB;AAAA,IACvD,SAAS,IAAI,QAAQ,IAAI,GAAG,kCAAkC,EAAE,SAAS,qBAAqB;AAAA,IAC9F,qBAAqB,IAAI,QAAQ,SAAS,iCAAiC;AAAA,IAC3E,YAAY,IAAI,MAAA,EAAQ,SAAA;AAAA,IACxB,eAAe,IAAI,MAAA,EAAQ,SAAA;AAAA,IAC3B,YAAY,IAAI,MAAA,EAAQ,SAAA;AAAA,IACxB,gBAAgB,IAAI,SAAS,SAAS,4BAA4B;AAAA,IAClE,qBAAqB,IAAI,SAAS,SAAS,iCAAiC;AAAA,IAC5E,oBAAoB,IAAI,SAAS,SAAS,gCAAgC;AAAA,IAC1E,gBAAgB,IAAI,QAAQ,SAAS,yBAAyB;AAAA,IAC9D,mBAAmB,IAAI,QAAQ,SAAS,4BAA4B;AAAA,IACpE,kBAAkB,IAAI,QAAQ,SAAS,2BAA2B;AAAA,IAClE,iBAAiB,IAAI,QAAQ,SAAS,0BAA0B;AAAA,IAChE,wBAAwB,IAAI,QAAQ,SAAS,iCAAiC;AAAA,IAC9E,yBAAyB,IAAI,QAAQ,SAAS,kCAAkC;AAAA,IAChF,kBAAkB,IAAI,OAAA,EACjB,SAAA,EACA,KAAK,uBAAuB;AAAA,MACzB,IAAI;AAAA,MACJ,MAAM,CAAC,WAAW,OAAO,SAAS,8BAA8B,EAAE,IAAI,GAAG,kBAAkB;AAAA,MAC3F,WAAW,CAAC,WAAW,OAAO,SAAA;AAAA,IAAS,CAC1C;AAAA,EAAA,CACR;AACL,CAAC;AAED,MAAM,yBAAyD,CAAC;AAAA,EAC5D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAM;AACF,QAAM,EAAE,EAAA,IAAM,eAAA;AACd,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAwB,IAAI;AACtD,QAAM,CAAC,sBAAsB,uBAAuB,IAAI,SAAc,IAAI;AAC1E,QAAM,aAAa,CAAC,cAAc,iBAAiB,cAAc,oBAAoB,WAAW;AAChG,QAAM6B,iBAAgB;AAAA,IAClB,4BAA4B;AAAA,MACxB,MAAM;AAAA,MACN,KAAK;AAAA,MACL,UAAU;AAAA,MACV,WAAW;AAAA,MACX,SAAS,CAAA;AAAA,MACT,qBAAqB;AAAA,MACrB,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,qBAAqB;AAAA,MACrB,oBAAoB;AAAA,MACpB,gBAAgB;AAAA,MAChB,mBAAmB;AAAA,MACnB,kBAAkB;AAAA,MAClB,iBAAiB;AAAA,MACjB,wBAAwB;AAAA,MACxB,yBAAyB;AAAA,MACzB,kBAAkB;AAAA,MAClB,QAAQ;AAAA,IAAA;AAAA,EACZ;AAGJ,QAAM,UAAU,QAAa;AAAA,IACzB,MAAM;AAAA,IACN,UAAUvC,EAAYU,kBAAgB;AAAA,IACtC,eAAA6B;AAAA,EAAA,CACH;AACD,QAAM,EAAE,SAAS,cAAc,OAAO,UAAU,QAAA,IAAY,WAAW,CAAA;AAGvE,QAAM,CAAC,aAAa,iBAAiB,YAAY,yBAAyB,IAAI,SAAS;AAAA,IACnF;AAAA,IAAS,MACL;AAAA,MAAC;AAAA,MACG;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAAgD,CAC3D;AAID,YAAU,MAAM;AACZ,QAAI,gBAAe,6DAAsB,gBAAe;AACpD,YAAM,eAAe,aAAa;AAAA,QAC9B,MAAM;AAAA,QACN,UAAU,qBAAqB;AAAA,MAAA,CAClC;AACD,eAAS,kCAAkC,YAAY;AAAA,IAC3D;AAAA,EACJ,GAAG,CAAC,aAAa,sBAAsB,QAAQ,CAAC;AAEhD,QAAM,mBAAmB,MAAM;AAC3B,UAAMA,cAAa;AACnB,4BAAwB,IAAI;AAC5B,cAAA;AAAA,EACJ;AAEA,QAAM,WAAW,OAAO,WAAwB;AAC5C,UAAM,UAAU,MAAM,QAAA;AACtB,QAAI,CAAC,QAAS;AACd,UAAM,OAAO;AAAA,MACT,GAAG,OAAO;AAAA,MACV,MAAM;AAAA,MACN,QAAQ;AAAA,IAAA,CACX;AACD,qBAAA;AAAA,EACJ;AAEA,QAAM,uBAAuB,YAAY,CAAC,SAAc;AACpD,4BAAwB,IAAI;AAAA,EAChC,GAAG,CAAA,CAAE;AAEL,QAAM,kBAAkB,YAAY,YAAY;AAC5C,QAAI,CAAC,WAAY;AACjB,UAAM,SAAS;AAAA,MACX,mBAAmB;AAAA,MACnB,oBAAoB;AAAA,IAAA;AAExB,UAAM,UAAU,MAAM,aAAa,OAAO,QAAQ,CAAA,GAAI,KAAK;AAC3D,eAAW,QAAQ,CAAC,SAAS;AACzB,eAAS,8BAA8B,IAAI,IAAI,mCAAS,EAAE;AAAA,IAC9D,CAAC;AAAA,EACL,GAAG,CAAC,UAAU,CAAC;AACf,YAAU,MAAM;AACZ,oBAAA;AAAA,EACJ,GAAG,CAAC,eAAe,CAAC;AAEpB,SACI;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAS;AAAA,MACT,WAAS;AAAA,MACR,GAAG;AAAA,MACJ,UAAA;AAAA,QAAA,oBAAA,UAAA,EACI,UAAA,oBAAC,gBAAc,GAAG,SACd,+BAAC,QAAA,EAAK,UAAU,aAAa,QAAQ,GAChC,UAAA;AAAA,UAAA,iCACI,aAAA,EAAY;AAAA,UAEjB,qBAAC,aAAA,EAAY,WAAU,uCACnB,UAAA;AAAA,YAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,WAAU,QAAO,UACxC,UAAA,EAAE,2CAA2C,sBAAsB,EAAA,CACxE;AAAA,YACA,oBAAC,cAAW,SAAS,kBACjB,8BAAC,OAAA,EAAM,UAAS,SAAQ,EAAA,CAC5B;AAAA,UAAA,GACJ;AAAA,UACA,oBAAC,eAAA,EAAc,WAAU,0CACrB,UAAA,qBAAC,MAAA,EAAK,WAAS,MAAC,QAAQ,KAAK,eAAe,GAAG,IAAI,GAE/C,UAAA;AAAA,YAAA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,MAAK;AAAA,gBACL,aAAa;AAAA,gBACb,OAAO,EAAE,gDAAgD,MAAM;AAAA,gBAC/D,MAAK;AAAA,gBACL,gBAAe;AAAA,gBACf,aAAa,EAAE,sDAAsD,YAAY;AAAA,gBACjF,UAAQ;AAAA,cAAA;AAAA,YAAA,GAEhB;AAAA,YAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,MAAK;AAAA,gBACL,aAAa;AAAA,gBACb,OAAO,EAAE,+CAA+C,KAAK;AAAA,gBAC7D,MAAK;AAAA,gBACL,gBAAe;AAAA,gBACf,aAAa,EAAE,qDAAqD,gBAAgB;AAAA,gBACpF,UAAQ;AAAA,gBACR,UAAQ;AAAA,cAAA;AAAA,YAAA,GAEhB;AAAA,YAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,OAAO,EAAE,oDAAoD,UAAU;AAAA,gBACvE,MAAK;AAAA,gBACL,aAAa,EAAE,0DAA0D,iBAAiB;AAAA,gBAC1F,gBAAe;AAAA,gBACf,aAAa;AAAA,gBACb,SAAQ;AAAA,gBACR,SAAS,CAAA;AAAA,gBACT,UAAU;AAAA,gBACV,iBAAiB;AAAA,cAAA;AAAA,YAAA,GAEzB;AAAA,YAIA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,OAAO,EAAE,mDAAmD,SAAS;AAAA,gBACrE,MAAK;AAAA,gBACL,aAAa,EAAE,yDAAyD,gBAAgB;AAAA,gBACxF,gBAAe;AAAA,gBACf,aAAa;AAAA,gBACb,SAAQ;AAAA,gBACR,SAAS,CAAA;AAAA,gBACT,gBAAgB;AAAA,gBAChB,UAAU;AAAA,cAAA;AAAA,YAAA,GAElB;AAAA,YAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,OAAO,EAAE,0DAA0D,gBAAgB;AAAA,gBACnF,MAAK;AAAA,gBACL,aAAa,EAAE,gEAAgE,uBAAuB;AAAA,gBACtG,gBAAe;AAAA,gBACf,aAAa;AAAA,gBACb,SAAS;AAAA,gBACT,UAAU;AAAA,cAAA;AAAA,YAAA,GAElB;AAAA,YAGA,oBAAC,QAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACnB,UAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,qBACvC,YAAE,iDAAiD,qBAAqB,GAC7E,EAAA,CACJ;AAAA,YAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,OAAO,EAAE,+DAA+D,cAAc;AAAA,gBACtF,MAAK;AAAA,gBACL,aAAa,EAAE,qEAAqE,qBAAqB;AAAA,gBACzG,gBAAe;AAAA,gBACf,aAAa;AAAA,gBACb,SAAQ;AAAA,gBACR,UAAU;AAAA,cAAA;AAAA,YAAA,GAElB;AAAA,YAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,OAAO,EAAE,sDAAsD,YAAY;AAAA,gBAC3E,MAAK;AAAA,gBACL,aAAa,EAAE,4DAA4D,mBAAmB;AAAA,gBAC9F,gBAAe;AAAA,gBACf,aAAa;AAAA,gBACb,SAAQ;AAAA,gBACR,cAAc;AAAA,kBACV,mBAAmB,cAAc;AAAA,gBAAA;AAAA,cACrC;AAAA,YAAA,GAER;AAAA,YAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,OAAO,EAAE,yDAAyD,eAAe;AAAA,gBACjF,MAAK;AAAA,gBACL,aAAa,EAAE,+DAA+D,sBAAsB;AAAA,gBACpG,gBAAe;AAAA,gBACf,aAAa;AAAA,gBACb,SAAQ;AAAA,gBACR,cAAc;AAAA,kBACV,mBAAmB,cAAc;AAAA,gBAAA;AAAA,cACrC;AAAA,YAAA,GAER;AAAA,YAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,OAAO,EAAE,sDAAsD,kBAAkB;AAAA,gBACjF,MAAK;AAAA,gBACL,aAAa,EAAE,4DAA4D,mBAAmB;AAAA,gBAC9F,gBAAe;AAAA,gBACf,aAAa;AAAA,gBACb,SAAQ;AAAA,gBACR,cAAc;AAAA,kBACV,mBAAmB,cAAc;AAAA,gBAAA;AAAA,cACrC;AAAA,YAAA,GAER;AAAA,YACA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,OAAO,EAAE,sDAAsD,kBAAkB;AAAA,gBACjF,MAAK;AAAA,gBACL,aAAa,EAAE,4DAA4D,mBAAmB;AAAA,gBAC9F,gBAAe;AAAA,gBACf,aAAa;AAAA,gBACb,SAAQ;AAAA,gBACR,cAAc;AAAA,kBACV,mBAAmB,cAAc;AAAA,gBAAA;AAAA,cACrC;AAAA,YAAA,GAER;AAAA,YACA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,OAAO,EAAE,qDAAqD,WAAW;AAAA,gBACzE,MAAK;AAAA,gBACL,aAAa,EAAE,2DAA2D,kBAAkB;AAAA,gBAC5F,gBAAe;AAAA,gBACf,aAAa;AAAA,gBACb,UAAQ;AAAA,gBACR,SAAQ;AAAA,gBACR,cAAc;AAAA,kBACV,mBAAmB,cAAc;AAAA,kBACjC,oBAAoB;AAAA,gBAAA;AAAA,cACxB;AAAA,YAAA,GAER;AAAA,YAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,OAAO,EAAE,+DAA+D,qBAAqB;AAAA,gBAC7F,MAAK;AAAA,gBACL,aAAa,EAAE,qEAAqE,4BAA4B;AAAA,gBAChH,gBAAe;AAAA,gBACf,aAAa;AAAA,gBACb,SAAS;AAAA,gBACT,UAAU;AAAA,cAAA;AAAA,YAAA,GAElB;AAAA,YAGC,8BAA8B,eAC3B,oBAAC,QAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,MAAK;AAAA,gBACL,aAAa;AAAA,gBACb,OAAO,EAAE,4DAA4D,kBAAkB;AAAA,gBACvF,MAAK;AAAA,gBACL,gBAAe;AAAA,gBACf,aAAa,EAAE,kEAAkE,wBAAwB;AAAA,gBACzG,UAAQ;AAAA,cAAA;AAAA,YAAA,GAEhB;AAAA,YAIJ,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,OAAO,EAAE,8DAA8D,oBAAoB;AAAA,gBAC3F,MAAK;AAAA,gBACL,aAAa,EAAE,oEAAoE,2BAA2B;AAAA,gBAC9G,gBAAe;AAAA,gBACf,aAAa;AAAA,gBACb,SAAS;AAAA,gBACT,UAAU;AAAA,cAAA;AAAA,YAAA,GAElB;AAAA,YAGA,oBAAC,QAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACnB,UAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,qBACvC,YAAE,wDAAwD,YAAY,GAC3E,EAAA,CACJ;AAAA,YAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,OAAO,EAAE,uDAAuD,aAAa;AAAA,gBAC7E,MAAK;AAAA,gBACL,aAAa,EAAE,6DAA6D,oBAAoB;AAAA,gBAChG,gBAAe;AAAA,gBACf,aAAa;AAAA,gBACb,SAAQ;AAAA,gBACR,SAAS,CAAA;AAAA,gBACT,UAAU;AAAA,cAAA;AAAA,YAAA,GAElB;AAAA,YAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,OAAO,EAAE,0DAA0D,gBAAgB;AAAA,gBACnF,MAAK;AAAA,gBACL,aAAa,EAAE,gEAAgE,uBAAuB;AAAA,gBACtG,gBAAe;AAAA,gBACf,aAAa;AAAA,gBACb,SAAQ;AAAA,gBACR,SAAS,CAAA;AAAA,gBACT,UAAU;AAAA,gBACV,eAAe,EAAE,2BAA2B,CAAC,UAAU,QAAQ,EAAA;AAAA,cAAE;AAAA,YAAA,GAEzE;AAAA,YAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,OAAO,EAAE,yDAAyD,eAAe;AAAA,gBACjF,MAAK;AAAA,gBACL,aAAa,EAAE,+DAA+D,sBAAsB;AAAA,gBACpG,gBAAe;AAAA,gBACf,aAAa;AAAA,gBACb,SAAQ;AAAA,gBACR,SAAS,CAAA;AAAA,gBACT,UAAU;AAAA,gBACV,eAAe,EAAE,2BAA2B,SAAA;AAAA,cAAS;AAAA,YAAA,GAE7D;AAAA,YAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,OAAO,EAAE,wDAAwD,cAAc;AAAA,gBAC/E,MAAK;AAAA,gBACL,aAAa,EAAE,8DAA8D,qBAAqB;AAAA,gBAClG,gBAAe;AAAA,gBACf,aAAa;AAAA,gBACb,SAAQ;AAAA,gBACR,SAAS,CAAA;AAAA,gBACT,UAAU;AAAA,cAAA;AAAA,YAAA,GAElB;AAAA,YAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,OAAO,EAAE,+DAA+D,qBAAqB;AAAA,gBAC7F,MAAK;AAAA,gBACL,aAAa,EAAE,qEAAqE,4BAA4B;AAAA,gBAChH,gBAAe;AAAA,gBACf,aAAa;AAAA,gBACb,SAAQ;AAAA,gBACR,SAAS,CAAA;AAAA,gBACT,UAAU;AAAA,gBACV,eAAe,EAAE,2BAA2B,SAAA;AAAA,cAAS;AAAA,YAAA,GAE7D;AAAA,YAGA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,OAAO,EAAE,gEAAgE,sBAAsB;AAAA,gBAC/F,MAAK;AAAA,gBACL,aAAa,EAAE,sEAAsE,6BAA6B;AAAA,gBAClH,gBAAe;AAAA,gBACf,aAAa;AAAA,gBACb,SAAQ;AAAA,gBACR,SAAS,CAAA;AAAA,gBACT,UAAU;AAAA,gBACV,eAAe,EAAE,2BAA2B,SAAA;AAAA,cAAS;AAAA,YAAA,EACzD,CACJ;AAAA,UAAA,EAAA,CACJ,EAAA,CACJ;AAAA,UACA,qBAAC,eAAA,EAAc,WAAU,wCACrB,UAAA;AAAA,YAAA,oBAAC,QAAA,EAAK;AAAA,YACN,qBAAC,KAAA,EAAI,SAAQ,QAAO,KAAK,KACrB,UAAA;AAAA,cAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACG,WAAU;AAAA,kBACV,SAAS;AAAA,kBACR,YAAE,eAAe;AAAA,gBAAA;AAAA,cAAA;AAAA,cAEtB,oBAAC,QAAA,EAAO,MAAK,UAAS,SAAS,aAAa,QAAQ,GAAI,UAAA,EAAE,aAAa,EAAA,CAAE;AAAA,YAAA,EAAA,CAC7E;AAAA,UAAA,EAAA,CACJ;AAAA,QAAA,EAAA,CACJ,GACJ,GACJ;AAAA,QACA;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,MAAM,QAAQ,KAAK;AAAA,YACnB,MAAM,+BAAO;AAAA,YACb,SAAS,+BAAO;AAAA,YAChB,aAAa,MAAM,SAAS,IAAI;AAAA,YAChC,cAAc,EAAE,YAAY,SAAS,UAAU,SAAA;AAAA,UAAS;AAAA,QAAA;AAAA,MAC5D;AAAA,IAAA;AAAA,EAAA;AAGZ;AC9gBA,MAAM,wBAAwB,IAAI,OAAA,EAAS,MAAM;AAAA,EAC7C,YAAY,IAAI,OAAA,EAAS,MAAM;AAAA,IAC3B,MAAM,IAAI,OAAA,EAAS,SAAS,kBAAkB;AAAA,EAAA,CACjD;AACL,CAAC;AAEM,MAAM,gBAAgD,CAAC;AAAA,EAC1D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAM;AACF,QAAM,EAAE,EAAA,IAAM,eAAA;AAEd,QAAM,EAAE,SAAS,cAAc,OAAO,QAAA,IAAY,QAAa;AAAA,IAC3D,MAAM;AAAA,IACN,UAAUvC,EAAY,qBAAqB;AAAA,IAC3C,eAAe;AAAA,MACX,YAAY;AAAA,QACR,MAAM;AAAA,MAAA;AAAA,IACV;AAAA,EACJ,CACH;AAED,QAAM,mBAAmB,MAAM;AAC3B,UAAM,EAAE,YAAY,EAAE,MAAM,GAAA,GAAM;AAClC,cAAA;AAAA,EACJ;AAEA,QAAM,WAAW,OAAO,WAAwB;AAC5C,UAAM,UAAU,MAAM,QAAA;AACtB,QAAI,CAAC,QAAS;AACd,UAAM,OAAO,iCAAQ,UAAiB;AACtC,qBAAA;AAAA,EACJ;AAEA,SACI;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAS;AAAA,MACT,WAAS;AAAA,MACR,GAAG;AAAA,MAEJ,0CACI,UAAA,qBAAC,QAAA,EAAK,UAAU,aAAa,QAAQ,GAChC,UAAA;AAAA,QAAA,iCAAc,aAAA,EAAY;AAAA,QAC3B,qBAAC,aAAA,EAAY,WAAU,8BACnB,UAAA;AAAA,UAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,WAAU,QAAO,UACxC,UAAA,EAAE,iCAAiC,EAAA,CACxC;AAAA,UACA,oBAAC,cAAW,SAAS,kBACjB,8BAAC,OAAA,EAAM,UAAS,SAAQ,EAAA,CAC5B;AAAA,QAAA,GACJ;AAAA,4BACC,eAAA,EAAc,WAAU,iCACrB,UAAA,oBAAC,MAAA,EAAK,WAAS,MAAC,QAAQ,KAAK,eAAe,GAAG,IAAI,GAC/C,UAAA,oBAAC,QAAK,MAAI,MAAC,IAAI,IACX,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,MAAK;AAAA,YACL,aAAa;AAAA,YACb,OAAO,EAAE,4CAA4C;AAAA,YACrD,MAAK;AAAA,YACL,gBAAe;AAAA,YACf,aAAa,EAAE,kDAAkD;AAAA,YACjE,UAAQ;AAAA,UAAA;AAAA,QAAA,EACZ,CACJ,GACJ,GACJ;AAAA,QACA,qBAAC,eAAA,EAAc,WAAU,+BACrB,UAAA;AAAA,UAAA,oBAAC,QAAA,EAAK;AAAA,UACN,qBAAC,KAAA,EAAI,SAAQ,QAAO,KAAK,KACrB,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,WAAU;AAAA,gBACV,SAAS;AAAA,gBAER,YAAE,eAAe;AAAA,cAAA;AAAA,YAAA;AAAA,YAEtB,oBAAC,QAAA,EAAO,MAAK,UAAS,SAAS,aAAa,QAAQ,GAAI,UAAA,EAAE,aAAa,EAAA,CAAE;AAAA,UAAA,EAAA,CAC7E;AAAA,QAAA,EAAA,CACJ;AAAA,MAAA,EAAA,CACJ,EAAA,CACJ;AAAA,IAAA;AAAA,EAAA;AAGZ;ACvFA,MAAM,2BAA2B,IAAI,OAAA,EAAS,MAAM;AAAA,EAChD,eAAe,IAAI,OAAA,EAAS,MAAM;AAAA,IAC9B,eAAe,IAAI,OAAA,EAAS,SAAS,2BAA2B;AAAA,EAAA,CACnE;AACL,CAAC;AAEM,MAAM,mBAAmD,CAAC;AAAA,EAC7D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAM;AACF,QAAM,EAAE,EAAA,IAAM,eAAA;AAEd,QAAM,EAAE,SAAS,cAAc,OAAO,QAAA,IAAY,QAAa;AAAA,IAC3D,MAAM;AAAA,IACN,UAAUA,EAAY,wBAAwB;AAAA,IAC9C,eAAe;AAAA,MACX,eAAe;AAAA,QACX,eAAe;AAAA,MAAA;AAAA,IACnB;AAAA,EACJ,CACH;AAED,QAAM,mBAAmB,MAAM;AAC3B,UAAM,EAAE,eAAe,EAAE,eAAe,GAAA,GAAM;AAC9C,cAAA;AAAA,EACJ;AAEA,QAAM,WAAW,OAAO,WAAwB;AAC5C,UAAM,UAAU,MAAM,QAAA;AACtB,QAAI,CAAC,QAAS;AACd,UAAM,OAAO;AAAA,MACT,eAAe;AAAA,QACX,eAAe,OAAO,cAAc;AAAA,QACpC,YAAa,OAAO,cAAc;AAAA,QAClC,cAAe,OAAO,cAAc;AAAA,QACpC,QAAQ;AAAA,MAAA;AAAA,MAEZ,gBAAgB,CAAA;AAAA,IAAC,CACb;AACR,qBAAA;AAAA,EACJ;AAEA,SACI;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAS;AAAA,MACT,WAAS;AAAA,MACR,GAAG;AAAA,MAEJ,0CACI,UAAA,qBAAC,QAAA,EAAK,UAAU,aAAa,QAAQ,GAChC,UAAA;AAAA,QAAA,iCAAc,aAAA,EAAY;AAAA,QAC3B,qBAAC,aAAA,EAAY,WAAU,iCACnB,UAAA;AAAA,UAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,WAAU,QAAO,UACxC,UAAA,EAAE,oCAAoC,EAAA,CAC3C;AAAA,UACA,oBAAC,cAAW,SAAS,kBACjB,8BAAC,OAAA,EAAM,UAAS,SAAQ,EAAA,CAC5B;AAAA,QAAA,GACJ;AAAA,QACA,oBAAC,eAAA,EAAc,WAAU,oCACrB,UAAA,qBAAC,MAAA,EAAK,WAAS,MAAC,QAAQ,KAAK,eAAe,GAAG,IAAI,GAC/C,UAAA;AAAA,UAAA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,IACX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,aAAa;AAAA,cACb,OAAO,EAAE,kDAAkD;AAAA,cAC3D,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,aAAa,EAAE,wDAAwD;AAAA,cACvE,UAAQ;AAAA,YAAA;AAAA,UAAA,GAEhB;AAAA,UACA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,IACX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,aAAa;AAAA,cACb,OAAO,EAAE,+CAA+C;AAAA,cACxD,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,aAAa,EAAE,qDAAqD;AAAA,YAAA;AAAA,UAAA,GAE5E;AAAA,UAEA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,IACX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,aAAa;AAAA,cACb,OAAO,EAAE,iDAAiD;AAAA,cAC1D,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,aAAa,EAAE,uDAAuD;AAAA,YAAA;AAAA,UAAA,EAC1E,CACJ;AAAA,QAAA,EAAA,CACJ,EAAA,CACJ;AAAA,QACA,qBAAC,eAAA,EAAc,WAAU,kCACrB,UAAA;AAAA,UAAA,oBAAC,QAAA,EAAK;AAAA,UACN,qBAAC,KAAA,EAAI,SAAQ,QAAO,KAAK,KACrB,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,WAAU;AAAA,gBACV,SAAS;AAAA,gBAER,YAAE,eAAe;AAAA,cAAA;AAAA,YAAA;AAAA,YAEtB,oBAAC,QAAA,EAAO,MAAK,UAAS,SAAS,aAAa,QAAQ,GAAI,UAAA,EAAE,aAAa,EAAA,CAAE;AAAA,UAAA,EAAA,CAC7E;AAAA,QAAA,EAAA,CACJ;AAAA,MAAA,EAAA,CACJ,EAAA,CACJ;AAAA,IAAA;AAAA,EAAA;AAGZ;ACjHO,MAAM,mBAAoD,CAAC;AAAA,EACjE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAAM;AACL,QAAM,EAAE,EAAA,IAAM,eAAA;AAEd,QAAMU,oBAAmB,IAAI,OAAA,EAAS,MAAM;AAAA,IAC3C,UAAU,IAAI,OAAA,EAAS,MAAM;AAAA,MAC5B,MAAM,IAAI,SACR,SAAS,2BAA2B,EACpC,IAAI,KAAK,8CAA8C;AAAA,IAAA,CACzD;AAAA,EAAA,CACD;AAED,QAAM,EAAE,SAAS,cAAc,MAAA,IAAU,QAA4B;AAAA,IACpE,UAAUV,EAAYU,iBAAgB;AAAA,IACtC,MAAM;AAAA,IACN,eAAe;AAAA,MACd,UAAU;AAAA,QACT,MAAM;AAAA,MAAA;AAAA,IACP;AAAA,EACD,CACA;AAED,QAAM,cAAc,MAAM;AACzB,UAAM;AAAA,MACL,UAAU;AAAA,QACT,MAAM;AAAA,MAAA;AAAA,IACP,CACA;AACD,cAAU,KAAK;AAAA,EAChB;AAEA,QAAM,mBAAmB,CAAC,UAAqC;AAC9D,mCAAO;AACP,mCAAO;AAEP,WAAO,aAAa,QAAQ,EAAE,KAAK;AAAA,EACpC;AAEA,QAAM,WAAW,OAAO,SAA6B;AACpD,QAAI;AACH,YAAM,OAAO,KAAK,QAAe;AACjC,kBAAA;AAAA,IACD,SAAS,OAAO;AACf,cAAQ,MAAM,8BAA8B,KAAK;AAAA,IAClD;AAAA,EACD;AAEA,SACC;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAU,yCAAY,aAAY;AAAA,MAClC,YAAW,yCAAY,cAAa;AAAA,MACpC,WAAU;AAAA,MAEV,UAAA;AAAA,QAAA,qBAAC,aAAA,EACA,UAAA;AAAA,UAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAC1C,UAAA,EAAE,0CAA0C,qBAAqB,EAAA,CACnE;AAAA,UACA,oBAAC,cAAW,SAAS,aACpB,8BAAC,OAAA,EAAM,UAAS,SAAQ,EAAA,CACzB;AAAA,QAAA,GACD;AAAA,QAEA,qBAAC,QAAA,EAAK,UAAU,kBACf,UAAA;AAAA,UAAA,oBAAC,iBACC,UAAA,YACA,oBAAC,aAAA,EAAY,wBAEZ,MAAA,EAAK,WAAS,MAAC,SAAS,GACxB,UAAA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,IACd,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,OAAO,EAAE,wCAAwC,eAAe;AAAA,cAChE,MAAK;AAAA,cACL,aAAa,EAAE,8CAA8C,qBAAqB;AAAA,cAClF,gBAAe;AAAA,cACf,aAAa;AAAA,cACb,UAAQ;AAAA,YAAA;AAAA,UAAA,EACT,CACD,GACD,GAEF;AAAA,+BAEC,eAAA,EACA,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACA,MAAK;AAAA,gBACL,SAAQ;AAAA,gBACR,SAAS;AAAA,gBACT,UAAU;AAAA,gBAET,UAAA,EAAE,iBAAiB,QAAQ;AAAA,cAAA;AAAA,YAAA;AAAA,YAE7B;AAAA,cAAC;AAAA,cAAA;AAAA,gBACA,MAAK;AAAA,gBACL,SAAQ;AAAA,gBACR,UAAU;AAAA,gBAET,UAAA,EAAE,eAAe,MAAM;AAAA,cAAA;AAAA,YAAA;AAAA,UACzB,EAAA,CACD;AAAA,QAAA,EAAA,CACD;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGH;ACvGA,MAAM,mBAAmB,IAAI,OAAA,EAAS,MAAM;AAAA,EAC3C,aAAa,IAAI,OAAA,EAAS,MAAM;AAAA,IAC/B,MAAM,IAAI,OAAA,EACR,KAAA,EACA,SAAS,8CAA8C,EACvD,IAAI,KAAK,yCAAyC;AAAA,IACpD,aAAa,IAAI,OAAA,EACf,WACA,IAAI,KAAM,oCAAoC;AAAA,EAAA,CAChD;AACF,CAAC;AAED,MAAM,gBAAsC;AAAA,EAC3C,aAAa;AAAA,IACZ,MAAM;AAAA,IACN,aAAa;AAAA,EAAA;AAEf;AAEA,MAAM,qBAAwD,CAAC;AAAA,EAC9D;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AACD,MAAM;AACL,QAAM,EAAE,EAAA,IAAM,eAAA;AACd,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,KAAK;AAEtD,QAAM,EAAE,SAAS,cAAc,MAAA,IAAU,QAA8B;AAAA,IACtE,MAAM;AAAA,IACN,UAAUV,EAAY,gBAAgB;AAAA,IACtC;AAAA,EAAA,CACA;AAED,QAAM,cAAc,MAAM;AACzB,UAAM,aAAa;AACnB,cAAU,KAAK;AAAA,EAChB;AAEA,QAAM,WAAW,OAAO,WAAiC;;AACxD,oBAAgB,IAAI;AACpB,QAAI;AACH,YAAM,OAAO;AAAA,QACZ,GAAG,OAAO;AAAA,QACV,eAAa,YAAO,YAAY,gBAAnB,mBAAgC,WAAU;AAAA,MAAA,CACvD;AACD,kBAAA;AAAA,IACD,SAAS,OAAO;AACf,cAAQ,MAAM,EAAE,+CAA+C,GAAG,KAAK;AAAA,IACxE,UAAA;AACC,sBAAgB,KAAK;AAAA,IACtB;AAAA,EACD;AAEA,QAAM,mBAAmB,CAAC,MAAwC;AACjE,MAAE,gBAAA;AACF,MAAE,eAAA;AACF,iBAAa,QAAQ,EAAE,CAAC;AAAA,EACzB;AAEA,SACC;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAU,yCAAY,aAAY;AAAA,MAClC,YAAW,yCAAY,cAAa;AAAA,MACnC,GAAG;AAAA,MAEJ,UAAA,qBAAC,QAAA,EAAK,UAAU,kBACb,UAAA;AAAA,SAAA,gBAAgB,kCAAe,aAAA,CAAA,CAAY;AAAA,QAC7C,qBAAC,aAAA,EAAY,WAAU,8BACtB,UAAA;AAAA,UAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,WAAU,QAAO,UAC3C,UAAA,EAAE,2CAA2C,EAAA,CAC/C;AAAA,UACA,oBAAC,YAAA,EAAW,SAAS,CAAC,MAAM;AAC3B,cAAE,gBAAA;AACF,wBAAA;AAAA,UACD,GACC,UAAA,oBAAC,OAAA,EAAM,UAAS,SAAQ,EAAA,CACzB;AAAA,QAAA,GACD;AAAA,QACA,oBAAC,iBAAc,UAAQ,MACtB,+BAAC,MAAA,EAAK,WAAS,MAAC,SAAS,GACxB,UAAA;AAAA,UAAA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,IACd,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,OAAO,EAAE,qCAAqC;AAAA,cAC9C,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,aAAa,EAAE,2CAA2C;AAAA,cAC1D,aAAa;AAAA,cACb,UAAQ;AAAA,YAAA;AAAA,UAAA,GAEV;AAAA,UACA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,IACd,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,OAAO,EAAE,gCAAgC;AAAA,cACzC,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,aAAa,EAAE,+CAA+C;AAAA,cAC9D,aAAa;AAAA,cACb,cAAY;AAAA,YAAA;AAAA,UAAA,EACb,CACD;AAAA,QAAA,EAAA,CACD,EAAA,CACD;AAAA,QACA,oBAAC,eAAA,EACA,UAAA,qBAAC,KAAA,EAAI,SAAQ,QAAO,KAAK,KAAK,OAAM,QAAO,gBAAe,YACzD,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,SAAQ;AAAA,cACR,SAAS,CAAC,MAAM;AACf,kBAAE,gBAAA;AACF,4BAAA;AAAA,cACD;AAAA,cACA,UAAU,gBAAgB;AAAA,cAEzB,YAAE,eAAe;AAAA,YAAA;AAAA,UAAA;AAAA,UAEnB;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,SAAS,CAAC,MAAM,EAAE,gBAAA;AAAA,cAClB,SAAS,gBAAgB;AAAA,cAExB,YAAE,uCAAuC;AAAA,YAAA;AAAA,UAAA;AAAA,QAC3C,EAAA,CACD,EAAA,CACD;AAAA,MAAA,EAAA,CACD;AAAA,IAAA;AAAA,EAAA;AAGH;AC1IA,MAAM,8BAA8B,IAAI,OAAA,EAAS,MAAM;AAAA,EACnD,mBAAmB,IAAI,OAAA,EAAS,MAAM;AAAA,IAClC,MAAM,IAAI,SACL,SAAS,kBAAkB,EAC3B,IAAI,KAAK,qCAAqC;AAAA,IACnD,YAAY,IAAI,QAAA;AAAA,EAAQ,CAC3B;AACL,CAAC;AAEM,MAAM,sBAAsD,CAAC;AAAA,EAChE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAM;AACF,QAAM,EAAE,EAAA,IAAM,eAAA;AAEd,QAAM,EAAE,SAAS,cAAc,OAAO,QAAA,IAAY,QAAa;AAAA,IAC3D,MAAM;AAAA,IACN,UAAUA,EAAY,2BAA2B;AAAA,IACjD,eAAe;AAAA,MACX,mBAAmB;AAAA,QACf,MAAM;AAAA,QACN,YAAY;AAAA,MAAA;AAAA,IAChB;AAAA,EACJ,CACH;AAED,QAAM,mBAAmB,MAAM;AAC3B,UAAM;AAAA,MACF,mBAAmB;AAAA,QACf,MAAM;AAAA,QACN,YAAY;AAAA,MAAA;AAAA,IAChB,CACH;AACD,cAAA;AAAA,EACJ;AAEA,QAAM,WAAW,OAAO,WAAwB;AAC5C,UAAM,UAAU,MAAM,QAAA;AACtB,QAAI,CAAC,QAAS;AACd,UAAM,OAAO,iCAAQ,iBAAwB;AAC7C,qBAAA;AAAA,EACJ;AAEA,SACI;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAS;AAAA,MACT,WAAS;AAAA,MACR,GAAG;AAAA,MAEJ,0CACI,UAAA,qBAAC,QAAA,EAAK,UAAU,aAAa,QAAQ,GAChC,UAAA;AAAA,QAAA,iCAAc,aAAA,EAAY;AAAA,QAC3B,qBAAC,aAAA,EAAY,WAAU,oCACnB,UAAA;AAAA,UAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,WAAU,QAAO,UACxC,UAAA,EAAE,yCAAyC,yBAAyB,EAAA,CACzE;AAAA,UACA,oBAAC,cAAW,SAAS,kBACjB,8BAAC,OAAA,EAAM,UAAS,SAAQ,EAAA,CAC5B;AAAA,QAAA,GACJ;AAAA,QACA,oBAAC,eAAA,EAAc,WAAU,uCACrB,UAAA,qBAAC,MAAA,EAAK,WAAS,MAAC,QAAQ,KAAK,eAAe,GAAG,IAAI,GAC/C,UAAA;AAAA,UAAA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,IACX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,aAAa;AAAA,cACb,OAAO,EAAE,0CAA0C,MAAM;AAAA,cACzD,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,aAAa,EAAE,gDAAgD,yBAAyB;AAAA,cACxF,UAAQ;AAAA,YAAA;AAAA,UAAA,GAEhB;AAAA,UACA,oBAAC,MAAA,EAAK,MAAI,MAAC,IAAI,IACX,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,aAAa;AAAA,cACb,OAAO,EAAE,gDAAgD,YAAY;AAAA,cACrE,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,OAAO,EAAE,gDAAgD,YAAY;AAAA,YAAA;AAAA,UAAA,EACzE,CACJ;AAAA,QAAA,EAAA,CACJ,EAAA,CACJ;AAAA,QACA,qBAAC,eAAA,EAAc,WAAU,qCACrB,UAAA;AAAA,UAAA,oBAAC,QAAA,EAAK;AAAA,UACN,qBAAC,KAAA,EAAI,SAAQ,QAAO,KAAK,KACrB,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,WAAU;AAAA,gBACV,SAAS;AAAA,gBAER,UAAA,EAAE,iBAAiB,QAAQ;AAAA,cAAA;AAAA,YAAA;AAAA,YAEhC,oBAAC,QAAA,EAAO,MAAK,UAAS,SAAS,aAAa,QAAQ,GAC/C,UAAA,EAAE,eAAe,MAAM,EAAA,CAC5B;AAAA,UAAA,EAAA,CACJ;AAAA,QAAA,EAAA,CACJ;AAAA,MAAA,EAAA,CACJ,EAAA,CACJ;AAAA,IAAA;AAAA,EAAA;AAGZ;ACrHO,MAAM,iBAAiB,OAAO,KAAqC,YAAiB;AAC1F,MAAI;AACH,WAAO,MAAM,IAAI,EAAE,GAAG,SAAS,GAAG,SAAA,GAAY;AAAA,EAC/C,SAAS,OAAO;AACf,oBAAgB,gBAAgB,+BAAO,OAAO,GAAG,EAAE,SAAS,SAAS;AACrE,UAAM;AAAA,EACP;AACD;AAeA,MAAM,YAAwC;AAAA,EAC7C,UAAU;AAAA,IACT,KAAK,CAAC,YAA4C,eAAe,yBAAyB,OAAO;AAAA,IACjG,WAAW;AAAA,EAAA;AAAA,EAEZ,OAAO;AAAA,IACN,KAAK,CAAC,YAAiB,eAAe,eAAe,OAAO;AAAA,IAC5D,WAAW;AAAA,EAAA;AAAA,EAEZ,YAAY;AAAA,IACX,KAAK,CAAC,YAAiB,eAAe,mBAAmB,OAAO;AAAA,IAChE,WAAW;AAAA,EAAA;AAAA,EAEZ,MAAM;AAAA,IACL,KAAK,CAAC,YAAiB,eAAe,wBAAwB,OAAO;AAAA,IACrE,WAAW;AAAA,EAAA;AAAA,EAEZ,aAAa;AAAA,IACZ,KAAK,CAAC,YAAiB,eAAe,mBAAmB,OAAO;AAAA,IAChE,WAAW;AAAA,EAAA;AAAA,EAEZ,gBAAgB;AAAA,IACf,KAAK,CAAC,YAAiB,eAAe,gCAAgC,OAAO;AAAA,IAC7E,WAAW;AAAA,EAAA;AAAA,EAEZ,OAAO;AAAA,IACN,KAAK,CAAC,YAAiB,eAAe,aAAa,OAAO;AAAA,IAC1D,WAAW;AAAA,EAAA;AAAA,EAEZ,UAAU;AAAA,IACT,KAAK,CAAC,YAAiB,eAAe,qBAAqB,OAAO;AAAA,IAClE,WAAW;AAAA,EAAA;AAAA,EAEZ,UAAU;AAAA,IACT,KAAK,CAAC,YAAiB,eAAe,uBAAuB,OAAO;AAAA,IACpE,WAAW;AAAA,EAAA;AAAA,EAEZ,YAAY;AAAA,IACX,KAAK,CAAC,YAAiB,eAAe,mBAAmB,OAAO;AAAA,IAChE,WAAW;AAAA,EAAA;AAAA,EAEZ,aAAa;AAAA,IACZ,KAAK,CAAC,YAAiB,eAAe,oBAAoB,OAAO;AAAA,IACjE,WAAW;AAAA,EAAA;AAAA,EAEZ,cAAc;AAAA,IACb,KAAK,CAAC,YAAiB,eAAe,oBAAoB,OAAO;AAAA,IACjE,WAAW;AAAA,EAAA;AAEb;AAEO,MAAM,mBAAmB,CAAC,YAAuC;AACvE,QAAM,SAAS,UAAU,OAAO;AAEhC,MAAI,CAAC,QAAQ;AACZ,YAAQ,KAAK,uCAAuC,OAAO,EAAE;AAC7D,WAAO;AAAA,EACR;AAEA,SAAO;AAAA,IACN,GAAG;AAAA,EAAA;AAEL;ACSA,MAAM,oBAAoB,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAChB,MAAkB;AACd,QAAM,eAAe,CAAC,OAAY,2CAAa,SAAS;AACxD,QAAM,QAA8B,CAAA;AAEpC,MAAI,CAAC,UAAU;AACX,UAAM;AAAA,MACF,oBAAC,UAAA,EAAS,UAAQ,MAAC,OAAM,IAAqB,IAAI,EAAE,SAAS,gBAAgB,QAAQ,gBAAgB,GAAG,gBAAgB,GAAG,eAAA,GACvH,UAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,wBACxB,UAAA,oBAAC,MAAA,EAAI,UAAA,aAAY,EAAA,CACrB,EAAA,GAH4B,aAIhC;AAAA,IAAA;AAAA,EAER;AAEA,QAAM,iBAAiB,MAAM,QAAQ,MAAM,IAAI,iCAAQ,OAAO,CAAC,UAAU,SAAS,CAAA;AAGlF,QAAM,qBAAqB,CAAC,aAAqB,iBAA4B;AACzE,UAAM,cAAc,aAAa,IAAI,CAAC,UAAU,MAAM,KAAK;AAC3D,UAAM,aAAa,MAAM,QAAQ,cAAc,IAAI,iBAAiB,CAAC,cAAc;AAEnF,UAAM,mBAAmB,WAAW,SAAS,WAAW;AACxD,UAAM,gBAAgB,mBAChB,WAAW,OAAO,CAAC,UAAU,UAAU,eAAe,CAAC,YAAY,SAAS,KAAK,CAAC,IAClF,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,YAAY,aAAa,GAAG,WAAW,CAAC,CAAC;AAE/D,iDAAe;AAAA,EACnB;AAEA,QAAM,uBAAuB,CAAC,aAAqB,iBAA4B;AAC3E,UAAM,cAAc,aAAa,IAAI,CAAC,UAAU,MAAM,KAAK;AAC3D,UAAM,aAAa,MAAM,QAAQ,cAAc,IAAI,iBAAiB,CAAC,cAAc;AACnF,WAAO,YAAY,MAAM,CAAC,eAAe,WAAW,SAAS,UAAU,CAAC;AAAA,EAC5E;AAEA,QAAM,wBAAwB,CAAC,iBAA4B;AACvD,UAAM,cAAc,aAAa,IAAI,CAAC,UAAU,MAAM,KAAK;AAC3D,UAAM,aAAa,MAAM,QAAQ,cAAc,IAAI,iBAAiB,CAAC,cAAc;AACnF,WAAO,YAAY,KAAK,CAAC,eAAe,WAAW,SAAS,UAAU,CAAC;AAAA,EAC3E;AAEA,QAAM,QAAQ,OAAO,MAAK,mCAAS,UAAS,MAAK,mCAAS,QAAQ,CAAC,QAAQ,UAAU;AACjF,UAAM;AAAA,MACF;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,OAAO,iCAAQ;AAAA,UAEf,UAAU,QAAQ,iCAAQ,QAAQ,KAAK,aAAa,iCAAQ,KAAK,KAAM,aAAa,CAAC;AAAA,UACrF,YAAW,iCAAQ,WAAU,2BAA2B;AAAA,UACxD,SAAS,MAAM;AACX,iBAAI,iCAAQ,WAAU,GAAG;AACrB,0BAAA;AAAA,YACJ;AAAA,UACJ;AAAA,UAEA,UAAA,qBAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,KAC5B,UAAA;AAAA,YAAA,YAAY,mBACT;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,SACI,YACM,qBAAqB,OAAO,OAAO,OAAO,WAAW,CAAA,CAAE,IACvD,QAAQ,MAAM,QAAQ,MAAM,MAAK,iCAAQ,QAAQ,iCAAQ,UAAS,EAAE;AAAA,gBAE9E,eACI,aAAa,sBAAsB,OAAO,WAAW,CAAA,CAAE;AAAA,gBAE3D,UAAU,MACN,YACM,mBAAmB,OAAO,OAAO,OAAO,WAAW,CAAA,CAAE,IACrD,6CAAe,OAAO;AAAA,cAAK;AAAA,YAAA;AAAA,YAI7C;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,SAAS,MAAM,6CAAe,OAAO;AAAA,gBAEpC,UAAA,iCAAQ;AAAA,cAAA;AAAA,YAAA;AAAA,UACb,EAAA,CACJ;AAAA,QAAA;AAAA,QAlCK,GAAG,iCAAQ,KAAK,IAAI,KAAK;AAAA,MAAA;AAAA,IAmClC;AAIJ,SAAI,iCAAQ,YAAW,MAAM,QAAQ,iCAAQ,OAAO,GAAG;AACnD,aAAO,QAAQ,QAAQ,CAAC,KAAKoC,WAAU;AACnC,cAAM;AAAA,UACF;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,IAAI,GAAG,OAAO,KAAK,IAAI,IAAI,KAAK,IAAIA,MAAK;AAAA,cACzC,OAAO,IAAI;AAAA,cACX,UAAU,QAAQ,IAAI,QAAQ,KAAK,aAAa,IAAI,KAAK;AAAA,cACzD,IAAI,EAAE,IAAI,EAAA;AAAA,cACV,SAAS,MAAM;AACX,qBAAI,iCAAQ,WAAU,GAAG;AACrB,8BAAA;AAAA,gBACJ;AAAA,cACJ;AAAA,cAGA,UAAA,qBAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,KAC5B,UAAA;AAAA,gBAAA,YAAY,mBACT;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACG,SAAS,QAAQ,MAAM,QAAQ,MAAM,MAAK,iCAAQ,QAAQ,IAAI,UAAS,EAAE;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAGjF;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACG,IAAI,GAAG,OAAO,KAAK,IAAI,IAAI,KAAK,IAAIA,MAAK;AAAA,oBACzC,MAAK;AAAA,oBACL,OAAM;AAAA,oBACN,SAAS,MAAM,6CAAe,OAAO,IAAI,KAAK;AAAA,oBAE7C,cAAI,SAAS,oBAAoB,mCAAmC,IAAI,SAAS,IAAI;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAC1F,EAAA,CACJ;AAAA,YAAA;AAAA,YAhBK,GAAG,OAAO,KAAK,IAAI,IAAI,KAAK,IAAIA,MAAK;AAAA,UAAA;AAAA,QAiB9C;AAAA,MAER,CAAC;AAAA,IACL;AAAA,EACJ;AAGA,MAAI,MAAM,iBAAiB,MAAM,SAAS;AACtC,UAAM;AAAA,MACF,qBAAC,KAAA,EAAiB,IAAI,EAAE,UAAU,UAAU,QAAQ,GAAG,YAAY,QAAQ,QAAQ,EAAA,GAC/E,UAAA;AAAA,QAAA,oBAAC,SAAA,EAAQ,UAAQ,MAAC,IAAI,EAAE,IAAI,sBAAsB,IAAI,qBAAA,EAAqB,CAAG;AAAA,QAC9E,qBAAC,YAAS,IAAI,EAAE,KAAK,EAAA,GAAK,SAAS,MAAM;AACrC,cAAI,MAAM,eAAe;AACrB,kBAAM,cAAA;AAAA,UACV,WAAW,MAAM,iBAAiB;AAC9B,kBAAM,gBAAA;AAAA,UACV;AAAA,QACJ,GACI,UAAA;AAAA,UAAA,oBAAC,KAAA,EAAI,UAAS,QAAA,CAAQ;AAAA,UACtB,qBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,wBAAuB,UAAA;AAAA,YAAA;AAAA,YACnC,MAAM;AAAA,UAAA,EAAA,CACtB;AAAA,QAAA,EAAA,CACJ;AAAA,MAAA,EAAA,GAbK,QAcT;AAAA,IAAA;AAAA,EAER;AAGA,MAAI,CAAC,MAAM,UAAW,MAAM,UAAU,KAAK,CAAC,UAAW;AACnD,UAAM;AAAA,MACF,oBAAC,UAAA,EAAS,UAAQ,MAAe,iCAAV,SAEvB;AAAA,IAAA;AAAA,EAER;AAEA,SAAO;AACX;AAEA,MAAM,mBAAoD,CAAC,UAAU;AACjE,QAAM;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,CAAA;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ;AAAA,IACA,gBAAgB;AAAA,IAChB;AAAA,IACA,mBAAmB;AAAA,IACnB;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,EAAA,IACjB;AAEJ,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,EAAE;AACjD,QAAM,CAAC,SAAS,UAAU,IAAI,SAAkB,KAAK;AACrD,QAAM,CAAC,gBAAgB,UAAU,IAAI,SAAoB,CAAA,CAAE;AAC3D,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAoB,CAAA,CAAE;AACpE,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAS,KAAK;AAC5D,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,KAAK;AAC1D,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,KAAK;AAC1D,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AACtC,QAAM,CAAC,YAAY,aAAa,IAAI,SAAc,IAAI;AACtD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAc,IAAI;AACpD,QAAM,CAAC,aAAa,cAAc,IAAI,SAAkB,KAAK;AAC7D,QAAM,CAAC,cAAc,eAAe,IAAI,SAAkB,KAAK;AAC/D,QAAM,EAAE,EAAA,IAAM,eAAA;AAGd,QAAM,CAAC,YAAY,aAAa,IAAI,SAA2B;AAAA,IAC3D,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe;AAAA,IACf,OAAO;AAAA,EAAA,CACV;AAED,QAAM,EAAE,MAAA,IAAU,YAAA;AAClB,QAAM,QAAQ;AAEd,QAAM,oBAAoB,QAAQ,MAAM;AACpC,QAAI,mBAAmB,WAAW,gBAAiB,QAAO;AAC1D,WAAO,cAAe,CAAC,WAAW,CAAC;AAAA,EACvC,GAAG,CAAC,YAAY,SAAS,gBAAgB,cAAc,CAAC;AAGxD,QAAM,uBAAuB,YAAY,CAAC,YAAoB5C,WAA0B;AACpF,UAAM,iBAA6B,WAAW,QAAQ,SAAS,IAAK,UAAU,CAAA;AAC9E,QAAI,CAAC,WAAY,QAAO;AAExB,UAAM,uBAAuB,WAAW,YAAA;AAExC,UAAMa,mBAAkB,aAClB,mCAAS,OAAO,CAAC,KAAgB,QAAQ;;AACvC,YAAM,mBAAkB,SAAI,YAAJ,mBAAa,OAAO,CAAC,SAAS;AAClD,cAAMsC,SAAQxC,eAAM,eAAe,KAAK,KAAK,IAAI,KAAK,cAAc,OAAO,KAAK,KAAK;AACrF,eAAOwC,iCAAO,cAAc,SAAS;AAAA,MACzC;AAEA,UAAI,mDAAiB,QAAQ;AACzB,YAAI,KAAK,EAAE,GAAG,KAAK,SAAS,iBAAiB;AAAA,MACjD;AAEA,aAAO;AAAA,IACX,GAAG,CAAA,OAAO,CAAA,KACR,mCAAS,OAAO,CAAC,QAAQ;AACvB,YAAMA,SAAQxC,eAAM,eAAe,IAAI,KAAK,IAAI,IAAI,cAAc,OAAO,IAAI,KAAK;AAClF,aAAOwC,iCAAO,cAAc,SAAS;AAAA,IACzC,OAAM,CAAA;AAEV,WAAO,qBAAqBtC,kBAAiBb,MAAK;AAAA,EAEtD,GAAG,CAAC,SAAS,SAAS,CAAC;AAGvB,QAAM,cAAc,MAAM;AACtB,yCAAW,EAAE,QAAQ,EAAE,OAAO,WAAW,CAAA,IAAK,KAAA;AAC9C,QAAI,mBAAmB,OAAO,oBAAoB,YAAY;AAC1D,sBAAgB,IAAI;AAAA,IACxB;AAAA,EACJ;AAGA,QAAM,mBAAmB,YAAY,CAAC,SAA+B;AACjE,UAAM,gBAAgB;AAAA,MAClB,GAAG,IAAI,IAAI,6BAAM,IAAI,CAAA,SAAQ,CAAC,KAAK,OAAO,IAAI,EAAE,EAAE,OAAA;AAAA,IAAO;AAE7D,WAAO;AAAA,EACX,GAAG,CAAA,CAAE;AAGL,QAAM,uBAAuB,YAAY,CAAC,aAAwBA,WAA0B;AACxF,UAAM,iBAAiB,MAAM,QAAQA,MAAK,IAAIA,SAAQ,CAACA,MAAK;AAC5D,UAAM,cAAc,OAAO,aAAa,CAAC,SAAS;AAC9C,YAAM,QAAQ,eAAe,QAAQ,KAAK,MAAM,KAAK,KAAK;AAC1D,aAAO,UAAU,KAAK,WAAW;AAAA,IACrC,CAAC;AACD,WAAO;AAAA,EACX,GAAG,CAAA,CAAE;AAGL,QAAM,kBAAkB,QAAQ,MAAM;AAClC,QAAI,mBAAmB;AACnB,aAAO,qBAAqB,aAAa,KAAK;AAAA,IAClD;AACA,UAAM,aAAa,qBAAqB,iBAAiB,CAAC,GAAG,gBAAgB,GAAG,eAAe,CAAC,GAAG,KAAK;AACxG,QAAI,gBAAgB;AAChB,YAAM,eAAe,qBAAqB,aAAa,KAAK;AAC5D,aAAO,iBAAiB,CAAC,GAAG,cAAc,GAAG,UAAU,CAAC;AAAA,IAC5D;AACA,WAAO;AAAA,EAEX,GAAG,CAAC,aAAa,gBAAgB,SAAS,OAAO,mBAAmB,iBAAiB,sBAAsB,sBAAsB,kBAAkB,cAAc,CAAC;AAGlK,QAAM,eAAe,YAAY,CAAC,UAAyC;AACvE,UAAM,EAAE,WAAW,cAAc,aAAA,IAAiB,MAAM;AACxD,UAAM,WAAW,eAAe,aAAa,eAAe;AAE5D,QAAI,YAAY,WAAW,WAAW,CAAC,WAAW,iBAAiB,CAAC,mBAAmB;AACnF,YAAM,WAAW,WAAW,OAAO;AACnC,MAAAc,cAAa,aAAa,eAAe,UAAU,IAAI;AAAA,IAC3D;AAAA,EAEJ,GAAG,CAAC,WAAW,SAAS,WAAW,eAAe,WAAW,MAAM,mBAAmB,aAAa,KAAK,UAAU,aAAa,CAAC,CAAC;AAGjI,QAAM,gBAAgB,YAAY,CAAC,YAAuB,SAAS,UAAU;AACzE,eAAW,CAAC,gBAAgB;AACxB,YAAM,aAAa,SAAS,cAAc;AAC1C,YAAM,gBAAgB,iBAAiB,CAAC,GAAG,YAAY,GAAG,UAAU,CAAC;AACrE,aAAO;AAAA,IACX,CAAC;AAAA,EACL,GAAG,CAAC,iBAAiB,gBAAgB,CAAC;AAGtC,QAAMA,gBAAe,YAAY,OAAO,aAAkB,IAAI,UAAU,eAAe,OAAO,GAAG,SAAS,UAAU;AAEhH,QAAI,CAAC,WAAW,CAAC,uBAAuB,CAAA;AAExC,eAAW,IAAI;AACf,QAAI,OAAO,GAAG;AACV,oBAAc,WAAS,EAAE,GAAG,MAAM,eAAe,OAAO;AAAA,IAC5D;AAEA,QAAI;AACA,UAAI,OAAkB,CAAA;AACtB,UAAI,mBAA4C,CAAA;AAGhD,UAAI,gBAAgB;AAChB,cAAM,WAAW,MAAM,eAAe;AAAA,UAClC,QAAQ;AAAA,UACR;AAAA,UACA;AAAA,UACA,OAAO,OAAO,KAAK;AAAA,UACnB,QAAQ;AAAA,UACR,OAAO;AAAA,QAAA,CACV;AACD,gBAAO,qCAAU,SAAQ,CAAA;AACzB,4BAAmB,qCAAU,eAAc,CAAA;AAAA,MAC/C,OAAO;AACH,cAAM,WAAW,MAAM,SAAS;AAAA,UAC5B,QAAQ;AAAA,UACR,SAAS;AAAA,YACL;AAAA,YACA,OAAO,OAAO,KAAK;AAAA,YACnB,QAAQ;AAAA,YACR;AAAA,YACA,QAAQ;AAAA,YACR,OAAO;AAAA,UAAA;AAAA,UAEX;AAAA,UACA;AAAA,QAAA,CACH;AACD,gBAAO,qCAAU,SAAQ,CAAA;AACzB,4BAAmB,qCAAU,eAAc,CAAA;AAAA,MAC/C;AAEA,UAAI,QAAQ,MAAM,QAAQ,IAAI,GAAG;AAC7B,sBAAc,MAAM,MAAM;AAG1B,sBAAc,CAAA,UAAS;AAAA,UACnB,GAAG;AAAA,UACH;AAAA,UACA,WAAU,qDAAkB,eAAc,KAAM,OAAO;AAAA,UACvD,QAAO,qDAAkB,eAAc;AAAA,UACvC,eAAe;AAAA,QAAA,EACjB;AAEF,aAAI,6BAAM,UAAS,GAAG;AAClB,0BAAA;AAAA,QACJ;AAAA,MACJ;AAEA,aAAO,QAAQ,CAAA;AAAA,IACnB,SAASsC,QAAO;AACZ,cAAQ,MAAM,2BAA2BA,MAAK;AAC9C,oBAAc,WAAS,EAAE,GAAG,MAAM,eAAe,QAAQ;AACzD,aAAO,CAAA;AAAA,IACX,UAAA;AACI,iBAAW,KAAK;AAAA,IACpB;AAAA,EAEJ,GAAG,CAAC,SAAS,gBAAgB,YAAY,WAAW,OAAO,eAAe,cAAc,CAAC;AAGzF,QAAM,iBAAiB;AAAA,IACnB,MAAM,SAAS,OAAO,eAAuB;AACzC,UAAI,QAAS;AAEb,UAAI,CAAC,cAAc,CAAC,qBAAqB,gBAAgB;AACrD,sBAAc;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,UACT,eAAe;AAAA,UACf,OAAO;AAAA,QAAA,CACV;AACD,cAAMtC,cAAa,IAAI,eAAe,GAAG,KAAK;AAAA,MAClD;AACA,WAAI,yCAAY,UAAS,KAAK,CAAC,mBAAmB;AAC9C,sBAAc;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,UACT,eAAe;AAAA,UACf,OAAO;AAAA,QAAA,CACV;AACD,cAAMA,cAAa,YAAY,eAAe,GAAG,KAAK;AAAA,MAC1D;AAAA,IACJ,GAAG,GAAG;AAAA;AAAA,IAEN,CAAC,mBAAmB,gBAAgB,KAAK,UAAU,aAAa,CAAC;AAAA,EAAA;AAIrE,QAAM,eAAe,YAAY,YAAY;AACzC,UAAM,YAAY,KAAK,UAAU,aAAa,MAAM,KAAK,UAAU,UAAU;AAE7E,QAAI,aAAa,CAAC,qBAAqB,CAAC,iBAAiB;AACrD,oBAAc,aAAa;AAC3B,iBAAW,CAAA,CAAE;AACb,yBAAmB,KAAK;AACxB,oBAAc;AAAA,QACV,MAAM;AAAA,QACN,SAAS;AAAA,QACT,eAAe;AAAA,QACf,OAAO;AAAA,MAAA,CACV;AAAA,IACL;AAEA,QAAI,CAAC,qBAAqB,CAAC,iBAAiB;AACxC,YAAMA,cAAa,aAAa,eAAe,GAAG,KAAK;AACvD,yBAAmB,IAAI;AAAA,IAC3B;AAAA,EAEJ,GAAG,CAAC,KAAK,UAAU,aAAa,GAAG,mBAAmB,eAAe,CAAC;AAGtE,QAAM,kBAAkB,YAAY,MAAM;AACtC,QAAI,aAAa;AACjB,UAAM,cAAc,mDAAiB;AAAA,MAAO,CAAC,MACzC,WAAW,+BAAO,SAAS,uBAAG,UAAS,uBAAG,UAAS;AAAA;AAGvD,QAAK,MAAM,QAAQ,WAAW,MAAK,2CAAa,UAAS,GAAI;AACzD,yDAAkB,WAAW,cAAc,YAAY,CAAC;AACxD,mBAAa;AAAA,IACjB;AAEA,WAAO;AAAA,EACX,GAAG,CAAC,KAAK,UAAU,eAAe,GAAG,OAAO,QAAQ,CAAC;AAGrD,QAAM,iBAAiB,YAAY,YAAY;AAC3C,QAAI,MAAM,kBAAmB;AAC7B,QAAI,KAAM;AAEV,UAAM,SAAS,WAAW,UAAS,+BAAO,OAAO,CAAA,MAAK,QAAQ,OAAO,CAAC,CAAC,MAAK,QAAQ,QAAQ;AAC5F,UAAM,aAAa,YAAW,iCAAQ,UAAS,IAAI,WAAW,CAAC;AAE/D,QAAI,WAAW;AACX,wBAAkB,IAAI;AACtB,YAAMA,cAAa,IAAI,EAAE,GAAG,eAAe,GAAG,EAAE,UAAU,OAAA,EAAO,GAAK,GAAG,KAAK;AAC9E,wBAAkB,KAAK;AAAA,IAC3B;AAAA,EAEJ,GAAG,CAAC,MAAM,OAAO,KAAK,UAAU,aAAa,CAAC,CAAC;AAE/C,QAAM,WAAW,WACX,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,IACvC,UAAU,QAAQ,UAAU,UAAa,UAAU;AAGzD,YAAU,MAAM;AACZ,QAAI,MAAM;AACN,qBAAe,WAAW;AAAA,IAC9B;AACA,WAAO,MAAM,eAAe,OAAA;AAAA,EAEhC,GAAG,CAAC,aAAa,KAAK,UAAU,aAAa,GAAG,MAAM,iBAAiB,cAAc,CAAC;AAEtF,YAAU,MAAM;AACZ,oBAAA;AAAA,EACJ,GAAG,CAAC,eAAe,CAAC;AAEpB,YAAU,MAAM;AACZ,mBAAA;AAAA,EACJ,GAAG,CAAC,cAAc,CAAC;AAEnB,YAAU,MAAM;AACZ,QAAI,MAAM;AACN,mBAAA;AAAA,IACJ;AAAA,EACJ,GAAG,CAAC,MAAM,YAAY,CAAC;AAEvB,YAAU,MAAM;AACZ,UAAM,YAAY,KAAK,UAAU,aAAa,MAAM,KAAK,UAAU,UAAU;AAC7E,QAAI,iBAAiB,WAAW;AAC5B,yBAAmB,KAAK;AAAA,IAC5B;AAAA,EACJ,GAAG,CAAC,eAAe,UAAU,CAAC;AAE9B,YAAU,MAAM;AACZ,QAAI,SAAS,CAAC,MAAM;AAChB,YAAM,iBAA6B,WAAW,QAAQ,SAAS,IAAK,UAAU,CAAA;AAC9E,YAAM,gBAAe,iDAAgB;AAAA,QAAO,CAAC,MACzC,WAAW,+BAAO,SAAS,uBAAG,UAAS,uBAAG,UAAS;AAAA,YAClD,CAAA;AACL,yBAAmB,YAAY;AAAA,IACnC;AACA,uBAAmB,mDAAiB;AAAA,MAAO,CAAC,MACxC,WAAW,+BAAO,SAAS,uBAAG,UAAS,uBAAG,UAAS;AAAA,KACtD;AAAA,EAEL,GAAG,CAAC,OAAO,MAAM,SAAS,QAAQ,CAAC;AAEnC,QAAM,kBAAkB,YAAY,MAAM;AACtC,mBAAe,IAAI;AAAA,EACvB,GAAG,CAAA,CAAE;AAGL,QAAM,kBAAkB,YAAY,OAAO,YAAiB;AACxD,QAAI,CAAC,aAAa,CAAC,UAAU,KAAK;AAC9B,cAAQ,MAAM,uCAAuC;AACrD;AAAA,IACJ;AAEA,oBAAgB,IAAI;AACpB,QAAI;AACe,YAAM,UAAU,IAAI,OAAO;AAC1C,sBAAgB,KAAK;AACrB,qBAAe,KAAK;AACpB,UAAI,CAAC,mBAAmB;AACpB,sBAAc;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,UACT,eAAe;AAAA,UACf,OAAO;AAAA,QAAA,CACV;AACD,2BAAmB,KAAK;AACxB,cAAMA,cAAa,IAAI,eAAe,GAAG,KAAK;AAAA,MAClD;AAAA,IAMJ,SAASsC,QAAO;AACZ,cAAQ,IAAI,SAASA,MAAK;AAC1B,sBAAgB,KAAK;AAAA,IACzB;AAAA,EAGJ,GAAG,CAAC,WAAW,mBAAmBtC,eAAc,eAAe,UAAU,MAAM,KAAK,CAAC;AAErF,YAAU,MAAM;AACZ,UAAM,SAAS,iBAAiB,OAAQ;AACxC,iBAAa,MAAM;AAAA,EACvB,GAAG,CAAC,OAAO,CAAC;AAEZ,QAAM,iBAAiB,CAAC,UAAe;AACnC,UAAM,EAAE,OAAAd,OAAAA,IAAU,MAAM;AACxB,QAAK,YAAY,MAAM,QAAQA,MAAK,MAAKA,iCAAO,OAAO,CAAA,MAAK,GAAG,WAAU,KAAM,CAACA,OAAO;AAEvF,UAAM,aAAa,CAAC,SAAc;AAC9B,aAAO,WAAWA,iCAAO,SAAS,6BAAM,UAAS,6BAAM,WAAUA;AAAAA,IACrE;AAEA,UAAM,WAAW,mDAAiB,OAAO;AACzC,yCAAW,OAAO,WAAW,WAAW,qCAAW;AACnD,uDAAkB,WAAW,WAAW,qCAAW;AAAA,EAEvD;AAEA,QAAM,iBAAiB,CAAC,kBAAyB;AAC7C,WAAO,MAAM,QAAQ,aAAa,MAAK,+CAAe,UAAS,MAAK,+CAAe,OAAO,CAAC,WAAW;AAAA,EAC1G;AAEA,QAAM,iBAAiB,CAAC,SAAc;;AAClC,QAAI,EAAC,6BAAM,SAAQ;AACf,aAAO;AAAA,IACX;AACA,UAAM,gBAAgB,6BAAM,QAAQ,CAAC,MAAW,uBAAG;AACnD,YAAO,oDAAe,KAAK,CAAC,YAAgB,iCAAQ,WAAU,WAAvD,mBAA+D;AAAA,EAC1E;AAEA,SACI;AAAA,IAAC;AAAA,IAAA;AAAA,MACG;AAAA,MACA;AAAA,MACA,cAAc,iBAAiB,WAAW,CAAA,IAAK;AAAA,MAC/C,aAAa,EAAE,WAAW;AAAA,MAC1B,WAAU;AAAA,MACV;AAAA,MACA,QAAQ,MAAM,QAAQ,IAAI;AAAA,MAC1B,SAAS,MAAM;AACX,gBAAQ,KAAK;AACb,aAAI,2CAAa,UAAS,GAAG;AACzB,6BAAmB,KAAK;AAAA,QAC5B;AACA,0BAAkB,KAAK;AACvB,uBAAe,EAAE;AAAA,MACrB;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA,OAAO,EAAE,KAAK;AAAA,MACd,WAAS;AAAA,MACT,cAAY;AAAA,MACZ;AAAA,MACA,OAAO,QAAQ,KAAK;AAAA,MACpB;AAAA,MACA,OAAO,iBAAkB,WAAW,CAAA,IAAK,MAAM,+BAAO,OAAM,UAAU,WAAW,CAAA,IAAK;AAAA,MACtF;AAAA,MACA,oBAAoB;AAAA,MACpB,IAAK,aAAY,+BAAO,UAAU,EAAE,GAAG,aAAa,uBAAuB,EAAE,SAAS,mBAAA,EAAmB,IAAM;AAAA,MAC/G,WAAW;AAAA,QACP,YAAY;AAAA,UACR,UAAU;AAAA,UACV,OAAO,EAAE,WAAW,KAAK,UAAU,IAAA;AAAA,QAAI;AAAA,MAC3C;AAAA,MAEJ,OACI,CAAC,WACG;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,OAAM;AAAA,UACN,IAAI;AAAA,UACJ,cACI,oBAAC,gBAAA,EAAe,UAAS,OACpB,qBAAW,aACR;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,MAAM;AAAA,cACN,IAAI,EAAE,IAAI,GAAG,OAAO,UAAA;AAAA,YAAU;AAAA,UAAA,IAGlC,oBAAoB,YAChB;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,cAAW;AAAA,cACX,SAAS;AAAA,cACT,MAAK;AAAA,cACL,IAAI,QAAQ,EAAE,IAAI,QAAQ,EAAE,IAAI,IAAA;AAAA,cAChC,MAAK;AAAA,cAEL,UAAA,oBAACgB,SAAA,EAAM,UAAS,SAAQ,OAAM,oBAAA,CAAoB;AAAA,YAAA;AAAA,UAAA,EACtD,CAGZ;AAAA,QAAA;AAAA,MAAA,IAGR;AAAA,MAER,aAAa,CAAC,aAAiC;;AAC3C,eACI,oBAAA,UAAA,EACK,UAAA,MAAM,QAAQ,QAAQ,IACnB;AAAA,UAAC;AAAA,UAAA;AAAA,YACG;AAAA,YACA,MAAM,eAAe,QAAQ;AAAA,YAC7B;AAAA,YACA,UAAU;AAAA,YACV;AAAA,YACA,WAAW;AAAA,cACP,IAAI;AAAA,gBACA,SAAS;AAAA,gBACT,QAAQ;AAAA;AAAA,gBAER,0BAA0B;AAAA,kBACtB,OAAO;AAAA,kBACP,YAAY;AAAA,gBAAA;AAAA,cAChB;AAAA,YACJ;AAAA,UACJ;AAAA,QAAA,IAGJ,YAAY,eAAe,eAAe,IACtC,MAAM,QAAQ,eAAe,MAAK,mDAAiB,UAAS,OAAK,wDAAiB;AAAA,UAC9E,CAAC,YAAgB,iCAAQ,UAAS;AAAA,cAD2B,mBAE9D,UAAS,YAAY,aAEpC;AAAA,MAER;AAAA,MACA,cAAc,CAAC,SAAS;AACpB,uBAAe,IAAI;AACnB,0BAAkB,IAAI;AAAA,MAC1B;AAAA,MAEC,UAAA;AAAA,QAAA,kBAAkB;AAAA,UACf,SAAS;AAAA,UACT,UAAU,QAAQ,QAAQ;AAAA,UAC1B;AAAA,UACA,QAAQ;AAAA,UACR,iBAAiB;AAAA,UACjB,OAAO;AAAA,YACH,GAAG;AAAA,YACH;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,UAEJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAEJ,CAAC;AAAA,QACA,WAAW,iBACR,oBAAC,UAAA,EAAS,UAAQ,MACd,UAAA,oBAAC,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,gBAAgB,UAAU,OAAO,OAAA,GACzD,8BAAC,kBAAA,EAAiB,MAAM,IAAI,EAAA,CAChC,EAAA,CACJ;AAAA,QAGH,aAAa,UAAU,6CAEf,UAAAL,eAAM,cAAc,UAAU,WAAW;AAAA,UACtC,QAAQ;AAAA,UACR,WAAW;AAAA,UACX,WAAW;AAAA,UACX,QAAQ;AAAA,UACR,YAAY;AAAA,YACR,UAAU;AAAA,YACV,WAAW;AAAA,UAAA;AAAA,UAEf,GAAG,+BAAO;AAAA,QAAA,CACb,EAAA,CACL;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIhB;AC10BA,MAAM,uBAAuB,OAC5B,WACA,YACA,OACA,SAAiB,MACb;;AACJ,MAAI;AACH,UAAM,WAAW,SAAA;AACjB,UAAM,WAAW,MAAM,uBAAuB;AAAA,MAC7C,OAAO;AAAA,MACP,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA,WAAW,SAAS,SAAS;AAAA,MAC7B,cAAc,OAAO,SAAS,YAAY,CAAC;AAAA,IAAA,CAC3C;AAGD,QAAI,UAAU,YAAY,SAAS,MAAM;AACxC,YAAM,WAAiB,cAAS,SAAT,mBAAuB,WAAU,CAAA;AACxD,YAAM,eAAsB,0CAAkB,eAAlB,mBAA8B,eAAc,OAAO;AAC/E,YAAM,QAAQ,OAAO,IAAI,CAAC,OAAY,EAAE,OAAO,EAAE,MAAM,OAAO,EAAE,GAAA,EAAK;AACrE,aAAO,EAAE,OAAO,WAAA;AAAA,IACjB;AACA,WAAO,EAAE,OAAO,IAAI,YAAY,EAAA;AAAA,EACjC,QAAQ;AACP,WAAO,EAAE,OAAO,IAAI,YAAY,EAAA;AAAA,EACjC;AACD;AAEA,MAAM,cAAc,CAAC,UAA4B;AAEhD,MAAI,EAAE,QAAQ,OAAO,gBAAgB,WAAW,MAAM,GAAG,SAAS;AAClE,UAAQ,IAAI,8BAA8B,MAAM;AAEhD,MAAI,CAAC,SAAS,UAAU,aAAa,UAAU;AAC9C,YAAQ;AAAA,EACT,WAAW,CAAC,MAAM,QAAQ,KAAK,KAAK,UAAU,aAAa,UAAU;AACpE,YAAQ,CAAA;AAAA,EACT;AAEA,QAAM,aAAa,QAAQ,MAAM;AAChC,WAAO,KAAK,aAAa,UAAU,KAAK,aAAa;AAAA,EACtD,GAAG,CAAC,KAAK,QAAQ,CAAC;AAElB,QAAM,cAAc;AAAA,IACnB,OAAO,WAAgB;AACtB,YAAM,UAAS,iCAAQ,WAAU;AACjC,YAAM,SAAQ,iCAAQ,UAAS;AAC/B,YAAM,UAAS,iCAAQ,SAAQ;AAC/B,UAAI,UAAU,OAAO;AACpB,cAAM,OAAO,MAAM,qBAAqB,UAAU,OAAO,QAAQ,OAAO,MAAM;AAC9E,cAAM,aAAa,KAAK,MAAM,IAAI,CAAC,OAAY,EAAE,IAAI,EAAE,OAAO,OAAO,EAAE,OAAO,OAAO,EAAE,QAAQ;AAC/F,eAAO,EAAE,MAAM,YAAY,YAAY,EAAE,YAAY,KAAK,aAAW;AAAA,MACtE,OAAO;AAIN,cAAM,aAAa,iCAAQ,IAAI,CAAC,UAAe;AAAA,UAC9C,GAAG;AAAA,UACH,OAAO,6BAAM;AAAA,UACb,OAAO,KAAK,QAAQ,YAAY,KAAK,KAAK,IAAI;AAAA,QAAA;AAE/C,eAAO;AAAA,UACN,MAAM;AAAA,UACN,YAAY,EAAE,YAAY,WAAW,OAAA;AAAA,QAAO;AAAA,MAE9C;AAAA,IACD;AAAA,IACA,CAAC,UAAU,OAAO,MAAM;AAAA,EAAA;AAGzB,QAAM,gBAAgB,MAAM;AAC3B,YAAQ,UAAU,WAAA;AAAA,MACjB,KAAK;AACJ,eACC;AAAA,UAAC;AAAA,UAAA;AAAA,YAEA,OAAM;AAAA,YACN,MAAK;AAAA,YACL,aAAY;AAAA,YACZ,UAAU,CAAC,GAAQ,aAAkB;AACpC,sBAAQ,IAAI,kCAAkC,QAAQ;AACtD,oBAAM,cAAc,qCAAU,IAAI,CAAC,OAAY;AAAA,gBAC9C,GAAG;AAAA,gBACH,MAAM,uBAAG;AAAA,cAAA;AAEV,6BAAe,WAAW;AAAA,YAC3B;AAAA,YACA,OAAO,+BAAO,IAAI,CAAA,MAAK,uBAAG;AAAA,YAC1B,UAAU;AAAA,YACV,gBAAgB;AAAA,YAChB,UAAU;AAAA,YACV,cAAc,MAAM,eAAe,CAAA,CAAE;AAAA,UAAA;AAAA,UAhBhC,UAAU;AAAA,QAAA;AAAA,MAmBlB,KAAK;AACJ,eACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACA,UAAU,CAAC,QACV;AAAA,cACC,MAAM,GAAG,EAAE,QAAA,IAAY,MAAM,GAAG,EAAE,OAAO,YAAY,IAAI;AAAA,YAAA;AAAA,YAG3D,OAAO,QAAQ,MAAM,KAAK,IAAI;AAAA,YAC9B,UAAU;AAAA,YACV,WAAW;AAAA,cACV,WAAW;AAAA,gBACV,aAAa;AAAA,gBACb,WAAW;AAAA,cAAA;AAAA,YACZ;AAAA,YAED,QAAO;AAAA,UAAA;AAAA,QAAA;AAAA,MAIV;AACC,eACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACA;AAAA,YACA,UAAU,CAAC,MAAW;AACrB,6BAAe,EAAE,OAAO,KAAK;AAAA,YAC9B;AAAA,YACC,GAAG;AAAA,YACJ,YAAY;AAAA,cACX,OAAO;AAAA,gBACN,UAAU;AAAA,cAAA;AAAA,YACX;AAAA,YAED,WAAU;AAAA,YACV,MAAM,UAAU;AAAA,YAChB,UAAU;AAAA,UAAA;AAAA,QAAA;AAAA,IACX;AAAA,EAGJ;AAEA,SAAO,oBAAC,KAAA,EAAI,OAAM,QAAQ,2BAAgB;AAC3C;AClJA,MAAM,iBAAiB,CAAC,UAAiC;;AACvD,QAAM,EAAE,gBAAgB,SAAS,GAAG,SAAS;AAG7C,SACE,oBAAC,KAAA,EAAI,OAAM,QACT,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAS;AAAA,MACR,GAAG;AAAA,MACJ,UAAU,CAAC,MAAW,eAAe,EAAE,OAAO,KAAK;AAAA,MACnD,WAAU;AAAA,MACV,SAAQ;AAAA,MACR,aAAc,CAAC,aAAqB;;AAClC,cAAM,UAASC,MAAA,mCAAS,KAAK,QAAKb,GAAE,QAAM,cAA3B,gBAAAa,IAAsC;AACrD,eAAO,SAAS,WAAW,MAAM,IAAI;AAAA,MACvC;AAAA,MAEC,WAAA,wCAAS,OAAO,CAAAb,OAAA;;AAAK,wBAAQa,MAAAb,GAAE,UAAF,gBAAAa,IAAS,MAAM;AAAA,aAA5C,mBAAgD,IAAI,CAAC,OACpD,oBAAC,UAAA,EAAuB,OAAO,GAAG,MAChC,UAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,wBACzB,UAAA,WAAW,GAAG,KAAK,EAAA,CACtB,EAAA,GAHa,GAAG,IAIlB;AAAA,IACD;AAAA,EAAA,GAEL;AAEJ;AC5BA,MAAM,oBAAoB,CAAC,UAAuB;AAChD,QAAM,EAAE,kBAAkB;AAE1B,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,SAAQ;AAAA,MACR,SAAS;AAAA,MACT,IAAI,CAAC,EAAC,cAAO;;AAAO;AAAA,UAClB,aAAa;AAAA,UACb,YAAY;AAAA,UACZ,OAAO,IAAG,aAAQ,MAAM,UAAd,mBAAsB,IAAI;AAAA,QAAA;AAAA;AAAA,MAEtC,WAAW,oBAAC,OAAA,EAAM,OAAM,mBAAkB,UAAS,SAAO;AAAA,MAC3D,UAAA;AAAA,IAAA;AAAA,EAAA;AAIL;ACDA,MAAM,kBAAkB,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAkB;AAChB,QAAM,CAAC,MAAM,OAAO,IAAI,SAAiB,EAAE;AAE3C,YAAU,MAAM;AACd,QAAI,YAAY,QAAW;AACzB,cAAQ,OAAO;AAAA,IACjB;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AAEZ,QAAM,aAAa,OAAOyC,UAAiB;AACzC,QAAIA,OAAM;AACR,YAAM,QAAQ,MAAM,aAAaA,KAAI;AAErC,UAAG,OAAO;AACR,gBAAQ,EAAE;AACV,gBAAA;AAAA,MACF;AAAA,IACF;AAAA,EAEF;AAEA,yCAEI,UAAA,qBAAC,OAAA,EAAM,WAAS,MAAC,SAAkB,MACjC,UAAA;AAAA,IAAA,qBAAC,aAAA,EACC,UAAA;AAAA,MAAA,qBAAC,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAI,IAAA,GACpD,UAAA;AAAA,QAAA,oBAAC,YAAA,EAAW,IAAI,EAAE,UAAU,aAAW;AAAA,QACvC,oBAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAO,wBAAwB,UAAA,sBAAA,CAErE;AAAA,MAAA,GACF;AAAA,MACA,oBAAC,YAAA,EAAW,MAAK,OAAM,SAAS,SAAS,MAAK,SAC5C,UAAA,oBAAC,OAAA,EAAM,UAAS,UAAA,CAAU,EAAA,CAC5B;AAAA,IAAA,GACF;AAAA,IACA,oBAAC,eAAA,EAAc,UAAQ,MACrB,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,WAAS;AAAA,QACT,aAAY;AAAA,QACZ,OAAO;AAAA,QACP,UAAU,CAAC,MAAW,QAAQ,EAAE,OAAO,KAAK;AAAA,MAAA;AAAA,IAAA,GAEhD;AAAA,yBACC,eAAA,EACC,UAAA;AAAA,MAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,SAAS;AAAA,UACT,OAAO;AAAA,YACL,OAAO;AAAA,UAAA;AAAA,UAEV,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAGD,oBAAC,UAAO,SAAS,MAAM,WAAW,IAAI,GACnC,UAAA,UAAU,WAAW,OAAA,CACxB;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;ACnBA,MAAM,eAA8B,EAAE,YAAY,OAAO,OAAO,CAAA,EAAC;AAEjE,MAAM,SAAS,CAAC;AAAA,EACd;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS,CAAA;AAAA,EACT,cAAc;AAChB,MAAe;AACb,QAAMC,YAAW,YAAA;AAEjB,QAAM,QAAQ,aAAa,QAAQ,KAAK,mBAAmB;AAC3D,QAAM,EAAE,gBAAgB,YAAY,cAAc,cAAA,IAAkB,SAAA;AAEpE,WAAS,cAAc,eAAe,MAAM,IAAK,aAAa,SAAS,eAAe,YAAY,IAAI;AACtG,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAwB,YAAY;AAC9D,QAAM,CAAC,sBAAsB,uBAAuB,IAAI,SAEtD,gBAAgB,CAAA,CAAE;AACpB,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAc,IAAI;AAC9D,QAAM,CAAC,kBAAkB,qBAAqB,IAAI,SAAc,IAAI;AACpE,QAAM,CAAC,cAAc,eAAe,IAAI,SAAwB,IAAI;AACpE,QAAM,EAAE,MAAA,IAAU,YAAA;AAClB,QAAM,YAAwB,QAAQ,MAAM,mBAAmBA,UAAS,QAAQ,KAAK,MAAM,CAACA,UAAS,QAAQ,CAAC;AAE9G,YAAU,MAAM;AACd,oBAAgB,wBAAwB,YAAY;AAAA,EACtD,GAAG,CAAC,YAAY,CAAC;AAGjB,QAAM,oBAAoB,YAAY,CAAC,QAAiB,UAAU;AAChE,QAAI,IAAI;AACR,UAAM,YAAY,oBAAoB,CAAC;AACvC,QAAI,WAAW;AACb,sBAAgB,gBAAgB;AAChC;AAAA,IACF;AACA,QAAI,OAAO;AACT,UAAI;AACJ,eAAS,CAAC;AAAA,IACZ,OAAO;AACL,YAAM,oBAAoB,IAAI,oBAAoB,CAAC,IAAI;AACvD,qBAAe,EAAE,SAAS,GAAG,mBAAmB,mBAAmB;AAEnE,cAAA;AAAA,IACF;AAAA,EACF,GAAG,CAAC,OAAO,aAAa,OAAO,CAAC;AAEhC,QAAM,oBAAoB,CAAC,MAAqB;AAC9C,UAAM,eAAe,EAAE,MAAM,IAAI,CAAC,MAAM,MAAA;;AAAO;AAAA,QAC7C,GAAG;AAAA,QACH,OAAO,KAAK,YAAU,iBAAM,UAAN,mBAAc,OAAd,mBAAkB,UAAS,CAAC,QAAQ,SAAS,EAAE,SAAS,KAAK,QAAQ,IAAI,KAAK,KAAK;AAAA,MAAA;AAAA,KACzG;AAwCF,aAAS,EAAE,GAAG,GAAG,OAAO,cAAc;AAK/B;AACL,sBAAgB,IAAI;AAAA,IACtB;AAGA,QAAI,cAAc;AAChB,mBAAa,CAAC;AAAA,IAChB;AAAA,EACF;AAEA,QAAM,qBAAqB,CAAC,OAAa;AACvC,QAAI,IAAI;AACN,wBAAkB,EAAE;AACpB,eAAS,GAAG,KAAK;AACjB,UAAI,kBAAkB;AACpB,yBAAiB,EAAE;AAAA,MACrB;AAAA,IACF,OAAO;AACL,wBAAkB,IAAI;AACtB,eAAS,YAAY;AACrB,UAAI,kBAAkB;AACpB,yBAAiB,IAAI;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,oBAAoB,CAAC,eAAuB;AAChD,UAAM,kBAAkB,6CAAc;AAAA,MAAO,CAAC,WAC5C,OAAO,KAAK,cAAc,SAAS,WAAW,YAAA,CAAa;AAAA;AAE7D,QAAI,iBAAiB;AACnB,8BAAwB,eAAe;AAAA,IACzC;AAAA,EACF;AAEA,QAAM,qBAAqB,OAAO,UAAkB,YAAoB;AACtE,UAAM,mBAA+C;AAAA,MACnD,WAAW;AAAA,MACX,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,SAAQ,uCAAW,mBAAiB,uCAAW;AAAA,IAAA;AAGjD,QAAI;AACF,YAAM,cAAc,gBAAgB;AAEpC,UAAI,mBAAmB;AACrB,0BAAA;AAAA,MACF;AACA,sBAAgB,+BAA+B;AAAA,IACjD,SAAS,OAAO;AACd,UAAI,IAAY;AAChB,UAAI,iBAAiB,OAAO;AAC1B,YAAI,gBAAgB,MAAM,OAAO;AAAA,MACnC;AACA,sBAAgB,GAAG,EAAE,SAAS,QAAA,CAAS;AACvC,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACA,QAAM,kCAAkC,YAAY;AAClD,QAAI,gBAAgB;AAElB,YAAM,mBAA+C;AAAA,QACnD,WAAW;AAAA,QACX,IAAI,eAAe;AAAA,QACnB,MAAM;AAAA,MAAA;AAGR,oBAAc,gBAAgB,EAC3B,KAAK,CAAC,aAAkB;AACvB,YAAI,mBAAmB;AACrB,4BAAA;AAAA,QACF;AACA,sBAAc,CAAC,UAAe;AAAA,UAC5B,GAAG;AAAA,UACH,SAAS;AAAA,YACP,GAAG,KAAK;AAAA,YACR,OAAO,MAAM;AAAA,YACb,YAAY,MAAM;AAAA,YAClB,MAAM,eAAe;AAAA,UAAA;AAAA,QAEvB,EACA;AAAA,MACJ,CAAC,EACA,MAAM,CAAC,QAAa,gBAAgB,iCAAiC,EAAE,SAAS,QAAA,CAAS,CAAC;AAAA,IAC/F;AAAA,EACF;AAEA,QAAM,qBAAqB,CAAC,SAAiB;AAC3C,QAAI,kBAAkB;AACpB,aAAO,mBAAmB,iBAAiB,IAAI,IAAI;AAAA,IACrD;AAAA,EACF;AAEA,QAAM,qBAAqB,OAAO,aAAqB;AACrD,UAAM,sBAAqD;AAAA,MACzD,WAAW;AAAA,MACX,IAAI;AAAA,IAAA;AAGN,qBAAiB,mBAAmB,EACjC,KAAK,CAAC,aAAkB;AACvB,wBAAkB,IAAI;AACtB,eAAS,YAAY;AACrB,UAAI,mBAAmB;AACrB,0BAAA;AAAA,MACF;AAAA,IAEF,CAAC,EACA,MAAM,CAAC,QAAa,QAAQ,IAAI,iCAAiC,GAAG,CAAC;AAAA,EAC1E;AAEA,YAAU,MAAM;AACd,QAAI,IAAI;AACR,QAAI,CAAC,EAAE,QAAQ,WAAW,OAAO,GAAG;AAClC,UAAI,WAAW;AAAA,IACjB;AACA,aAAS,CAAC;AACV,UAAMC,kBAAiB,6CAAc,KAAK,CAAC;;AAAW,eAAE,WAAS,8CAAY,YAAZ,mBAAqB;AAAA;AACtF,sBAAkBA,mBAAkB,IAAI;AAAA,EAC1C,GAAG,CAAC,yCAAY,SAAS,YAAY,CAAC;AAEtC,QAAM,sBAAsB,CAAC,SAAS;;AACpC,QAAI,UAAoB,CAAA;AACxB,uCAAM,UAAN,mBAAa,QAAQ,CAAC,MAAW;AAC/B,UAAI,QAAQ,SAAS,EAAE,KAAK,KAAK,KAAK,cAAc,OAAO;AACzD,eAAO;AAAA,MACT;AACA,cAAQ,KAAK,EAAE,KAAK;AAAA,IACtB;AACA,WAAO,QAAQ,aAAW,kCAAM,UAAN,mBAAa;AAAA,EACzC;AAGA,QAAM,gBAAgB,CAAC,SAAuB;AAE5C,QAAI,MAAM,QAAQ,KAAK,KAAK,GAAG;AAC7B,aAAO,KAAK,MAAM,SAAS,KAAK,MAAM,KAAK,aAAa,IAAI,CAAC,KAAK,MAAM;AAAA,IAC1E;AAGA,WACE,CAAC,KAAK,SACL,EAAE,QAAQ,KAAK,KAAK,KAAK,CAAC,CAAC,QAAQ,SAAS,EAAE,SAAS,KAAK,QAAQ;AAAA,EAEzE;AAEA,QAAM,WAAW,QAAQ,MAAM,cAAc,KAAK,KAAK,cAAc,CAAC,OAAO,YAAY,CAAC;AAG1F,6BACG,OAAA,EACC,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,UAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY;AAAA,QACV,IAAI,EAAE,cAAc,EAAA;AAAA,MAAE;AAAA,MAGxB,UAAA;AAAA,QAAA,qBAAC,aAAA,EAAY,WAAU,iBACrB,UAAA;AAAA,UAAA,oBAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAAuB,UAAA,UAAA,CAEnE;AAAA,UACA,qBAAC,KAAA,EAAI,KAAK,GAAG,SAAS,QACpB,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAS;AAAA,gBACT,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,OAAO,iBAAiB,eAAe,OAAO;AAAA,gBAC9C,UAAU,CAAC,UAAe;AACxB,wBAAM,KAAK,6CAAc,KAAK,CAAA,MAAK,EAAE,QAAQ,MAAM,OAAO;AAC1D,qCAAmB,EAAE;AAAA,gBACvB;AAAA,gBACA,SAAQ;AAAA,gBACR,SAAS,MAAM;AACb,6BAAW,MAAM;AACf,sCAAkB,EAAE;AAAA,kBACtB,GAAG,GAAG;AAAA,gBACR;AAAA,gBACA,OACE,iBACE;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,OAAM;AAAA,oBACN,cACE,oBAAC,gBAAA,EAAe,UAAS,OACvB,UAAA;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,cAAW;AAAA,wBACX,SAAS,MAAM;AACb,6CAAA;AAAA,wBACF;AAAA,wBACA,MAAK;AAAA,wBACL,IAAI,EAAE,IAAI,IAAA;AAAA,wBACV,MAAK;AAAA,wBACL,8BAACvC,SAAA,EAAM,IAAI,EAAE,UAAU,SAAO,CAAG;AAAA,sBAAA;AAAA,oBAAA,EACnC,CACF;AAAA,kBAAA;AAAA,gBAAA,IAGF;AAAA,gBAGN,UAAA;AAAA,kBAAA,oBAAC,OAAA,EAAI,WAAU,sBACb,UAAA;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,aAAa;AAAA,sBACb,cAAc,CAAC,MAAM,kBAAkB,CAAC;AAAA,oBAAA;AAAA,kBAAA,GAE5C;AAAA,kBAQC,6DAAsB,IAAI,CAAC,gBAC1B;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBAEC,OAAO,2CAAa;AAAA,sBACpB,WAAU;AAAA,sBACV,WAAU,iDAAgB,UAAQ,2CAAa;AAAA,sBAE/C,UAAA;AAAA,wBAAA,oBAAC,cAAW,OAAM,wBAAuB,MAAK,MAC3C,qDAAa,MAChB;AAAA,wBAEA,qBAAC,OAAA,EAAI,WAAU,aACb,UAAA;AAAA,0BAAA,oBAAC,YAAA,EAAW,MAAK,SAAQ,SAAS,CAAC,MAAM;AACvC,8BAAE,eAAA;AACF,8BAAE,gBAAA;AACF,kDAAsB,WAAW;AAAA,0BACnC,GACE,UAAA,oBAAC,MAAA,EAAK,UAAS,SAAQ,QAAO,iDAAgB,UAAQ,2CAAa,QAAO,sBAAsB,UAAA,CAAW,GAC7G;AAAA,8CACC,YAAA,EAAW,MAAK,SAAQ,SAAS,CAAC,MAAM;AACvC,8BAAE,eAAA;AACF,8BAAE,gBAAA;AACF,+CAAmB,YAAY,EAAE;AAAA,0BACnC,GAAG,OAAM,SACP,UAAA,oBAAC,SAAM,UAAS,SAAQ,OAAM,kBAAA,CAAkB,EAAA,CAClD;AAAA,wBAAA,EAAA,CACF;AAAA,sBAAA;AAAA,oBAAA;AAAA,oBAxBK,YAAY;AAAA,kBAAA;AAAA,gBA0BpB;AAAA,cAAA;AAAA,YAAA;AAAA,YAEH;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAM,qBAAqB;AAAA,gBAC3B,SAAS,MAAM,sBAAsB,IAAI;AAAA,gBACzC,cAAc,CAAC,SAAS,mBAAmB,IAAI;AAAA,gBAC/C,SAAS,qDAAkB;AAAA,cAAA;AAAA,YAAA;AAAA,YAE7B,oBAAC,KAAA,EACC,UAAA,oBAAC,YAAA,EAAW,MAAK,SAAQ,SAAS,SAChC,UAAA,oBAACA,SAAA,EAAM,UAAS,QAAA,CAAQ,GAC1B,EAAA,CACF;AAAA,UAAA,EAAA,CACF;AAAA,QAAA,GACF;AAAA,QACA,qBAAC,eAAA,EAAc,WAAU,WAEtB,UAAA;AAAA,UAAA,gBACC,oBAACwC,SAAA,EAAM,UAAS,SAAQ,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,EAAA,GAChD,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAM;AAAA,cACN,MAAK;AAAA,cAEJ,UAAA;AAAA,YAAA;AAAA,UAAA,GAEL;AAAA,+BAED,sBAAA,EACC,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,QAAQ,UAAU,CAAA;AAAA,gBAClB;AAAA,gBACA,eAAe;AAAA,gBACf,6BAA6B;AAAA,gBAC7B,mBAAmB;AAAA,kBACjB,QAAQ;AAAA,gBAAA;AAAA,gBAEV,iBAAiB;AAAA,kBACf,eAAe;AAAA,kBACf,gBAAgB;AAAA,kBAChB,oBAAoB;AAAA,kBACpB,eAAe;AAAA,kBACf,kBAAkB;AAAA,kBAClB,kBAAkB;AAAA,kBAClB,aAAa;AAAA,kBACb,mBAAmB;AAAA,gBAAA;AAAA,cACrB;AAAA,YAAA;AAAA,YAEF;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,WAAW,QAAQ,uBAAuB;AAAA,gBAC1C,SAAS,MAAM;AACb,oCAAkB,IAAI;AAAA,gBACxB;AAAA,gBACA;AAAA,gBACD,UAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UAED,EAAA,CACF;AAAA,QAAA,GACF;AAAA,4BACC,eAAA,EAAc,WAAU,iBACvB,UAAA,qBAAC,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,gBAAgB,iBAAiB,kBAAkB,YAAY,OAAO,UACrH,UAAA;AAAA,UAAA,sCACE,KAAA,EACC,UAAA,oBAAC,UAAO,SAAS,iCAAiC,mCAElD,EAAA,CACF;AAAA,UAEF,qBAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,KAC/B,UAAA;AAAA,YAAA,oBAAC,QAAA,EAAO,WAAU,qBAAoB,SAAS,SAAS,UAAA,UAExD;AAAA,YACA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC;AAAA,gBACA,SAAS,MAAM,kBAAA;AAAA,gBAChB,UAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UAED,EAAA,CACF;AAAA,QAAA,EAAA,CACF,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ;ACjdA,MAAM,iBAAgD,CAAC;AAAA,EACtD;AAAA,EACA;AAAA,EACA;AAAA,EACA,uBAAuB;AAAA,EACvB,0BAA0B;AAAA,EAC1B,mBAAmB;AAAA,EACnB,sBAAoB;AAAA,EACpB;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACJ,MAAM;AACL,QAAM,CAAC,MAAM,OAAO,IAAI,MAAM,SAAS,KAAK;AAC5C,QAAM,YAAY,MAAM,OAAuB,IAAI;AACjD,QAAM,EAAC,MAAA,IAAO,YAAA;AAChB,QAAM,eAAe,MAAM;AAC1B,YAAQ,CAAC,aAAa,CAAC,QAAQ;AAAA,EAChC;AAEA,QAAM,cAAc,CAAC,UAAiB;AACrC,QACC,UAAU,WACV,UAAU,QAAQ,SAAS,MAAM,MAAqB,GACrD;AACD;AAAA,IACD;AAEA,YAAQ,KAAK;AAAA,EACd;AAEA,QAAM,UAAU,MAAM;AACrB,qDAAiB;AAAA,EAElB,GAAG,CAAC,IAAI,CAAC;AAET,SACC,qBAAC,MAAM,UAAN,EACA,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,IAAI,UAAU,EAAE,WAAW,OAAA,IAAW,QAAM,EAAC,eAAc,cAAA,IAAe,CAAA;AAAA,QACzE,GAAG;AAAA,QACJ,KAAK;AAAA,QACL,UAAU;AAAA,QACT,UAAA,uBACA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,GAAG;AAAA,YACJ,IAAI;AAAA,cACH,kBAAkB;AAAA,cAClB,GAAG,mEAAyB;AAAA,YAAA;AAAA,YAE7B,SAAS;AAAA,YACR;AAAA,UAAA;AAAA,QAAA,IAGF,qBAAA,UAAA,EACC,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,GAAG;AAAA,cACJ,IAAI,CAAC,UAAA;;AAAW;AAAA,kBACf,kBAAkB,IAAG,WAAM,QAAQ,UAAd,mBAAqB,UAAU,IAAI;AAAA,kBACxD,aAAa;AAAA,kBACb,sBAAsB;AAAA,kBACtB,yBAAyB;AAAA,kBACzB,GAAI,QAAO,6BAAM,QAAO,aACrB,KAAK,GAAG,KAAK,KACb,6BAAM,OAAM,CAAA;AAAA,gBAAC;AAAA;AAAA,cAEhB;AAAA,YAAA;AAAA,UAAA;AAAA,UAEF;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,MAAK;AAAA,cACL,iBAAe,OAAO,sBAAsB;AAAA,cAC5C,iBAAe,OAAO,SAAS;AAAA,cAC/B,cAAW;AAAA,cACX,iBAAc;AAAA,cACb,GAAG;AAAA,cACJ,IAAI,CAAC,WAAW;AAAA,gBACf,GAAG;AAAA,gBACH,UAAU;AAAA,gBACV,qBAAqB;AAAA,gBACrB,wBAAwB;AAAA,gBACxB,GAAI,QAAO,2DAAqB,QAAO,aACpC,oBAAoB,GAAG,KAAK,KAC5B,2DAAqB,OAAM,CAAA;AAAA,cAAC;AAAA,cAEhC,SAAS;AAAA,cACR,UAAA,UACA,oBAAC,kBAAA,EAAiB,MAAM,IAAI,OAAM,UAAA,CAAU,IAE5C,oBAAC,cAAA,EAAa,UAAS,QAAA,CAAQ;AAAA,YAAA;AAAA,UAAA;AAAA,QAEjC,EAAA,CACD;AAAA,MAAA;AAAA,IAAA;AAAA,IAGF;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,IAAI;AAAA,UACH,QAAQ;AAAA,QAAA;AAAA,QAET;AAAA,QACA,UAAU,UAAU;AAAA,QACpB,MAAM;AAAA,QACN,YAAU;AAAA,QACV,eAAa;AAAA,QACZ,UAAA,CAAC,EAAE,iBAAiB,UAAA,MACpB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,GAAG;AAAA,YACJ,OAAO;AAAA,cACN,iBACC,cAAc,WAAW,eAAe;AAAA,YAAA;AAAA,YAE1C,UAAA,oBAAC,OAAA,EAAM,WAAW,GAAG,IAAI,EAAE,QAAQ,aAAa,aAAa,YAAY,cAAc,OAAO,IAAG,KAAA,GAChG,UAAA,oBAAC,mBAAA,EAAkB,aAAa,aAC/B,UAAA,oBAAC,UAAA,EAAS,IAAG,qBAAoB,eAAa,MAC5C,UAAA,QAAQ,IAAI,CAAC,QAAQ,UACrB;AAAA,cAACC;AAAAA,cAAA;AAAA,gBAEA,UAAU,0BAA0B,QAAQ,UAAU;AAAA,gBACtD,SAAS,CAAC,UAAU;AACnB,yBAAO,SAAS,OAAO,KAAK;AAC5B,sBAAI,EAAC,iCAAQ,gBAAe;AAC3B,iCAAA;AAAA,kBACD;AAAA,gBACD;AAAA,gBACA,UAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACA,MAAK;AAAA,oBACL,OACC,OAAO,QAAQ,OAAO,QAAQ;AAAA,oBAE/B,IAAI;AAAA,sBACH,OAAO;AAAA,oBAAA;AAAA,oBAEP,UAAA,OAAO;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACT;AAAA,cAjBK;AAAA,YAAA,CAmBN,EAAA,CACF,EAAA,CACD,EAAA,CACD;AAAA,UAAA;AAAA,QAAA;AAAA,MACD;AAAA,IAAA;AAAA,EAEF,GACD;AAEF;ACzJA,MAAM,sBAA0D,CAAC;AAAA,EAChE;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAChB,MAAM;AACL,QAAM,CAAC,MAAM,OAAO,IAAI,MAAM,SAAS,KAAK;AAC5C,QAAM,YAAY,MAAM,OAAuB,IAAI;AAEnD,QAAM,eAAe,MAAM;AAC1B,YAAQ,CAAC,aAAa,CAAC,QAAQ;AAAA,EAChC;AAEA,QAAM,cAAc,CAAC,UAAiB;AACrC,QACC,UAAU,WACV,UAAU,QAAQ,SAAS,MAAM,MAAqB,GACrD;AACD;AAAA,IACD;AAEA,YAAQ,KAAK;AAAA,EACd;AAEA,SACC,qBAAC,MAAM,UAAN,EACA,UAAA;AAAA,IAAA,qBAAC,OAAA,EAAI,OAAO,EAAE,SAAS,QAAQ,YAAY,YAAY,KAAK,OAAA,GAAU,KAAK,WAC1E,UAAA;AAAA,MAAA,oBAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAC1C,UACF;AAAA,MACA;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,iBAAe,OAAO,sBAAsB;AAAA,UAC5C,iBAAe,OAAO,SAAS;AAAA,UAC/B,cAAW;AAAA,UACX,iBAAc;AAAA,UACd,OAAO,EAAE,UAAU,oBAAoB,QAAQ,UAAA;AAAA,UAC/C,SAAS;AAAA,UAET,UAAA,oBAAC,cAAA,EAAa,UAAS,QAAA,CAAQ;AAAA,QAAA;AAAA,MAAA;AAAA,IAChC,GACD;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,IAAI;AAAA,UACH,QAAQ;AAAA,QAAA;AAAA,QAET;AAAA,QACA,UAAU,UAAU;AAAA,QACpB,MAAM;AAAA,QACN,YAAU;AAAA,QACV,eAAa;AAAA,QACZ,UAAA,CAAC,EAAE,iBAAiB,UAAA,MACpB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,GAAG;AAAA,YACJ,OAAO;AAAA,cACN,iBACC,cAAc,WAAW,eAAe;AAAA,YAAA;AAAA,YAE1C,UAAA,oBAAC,OAAA,EAAM,WAAW,GAAG,IAAI,EAAE,QAAQ,aAAa,cAAc,GAAG,aAAa,iBAAA,GAC7E,UAAA,oBAAC,mBAAA,EAAkB,aAAa,aAC/B,UAAA,oBAAC,UAAA,EAAS,eAAa,MACrB,UAAA,QAAQ,IAAI,CAAC,QAAQ,UAAA;;AACrB;AAAA,gBAACA;AAAAA,gBAAA;AAAA,kBAEA,UAAU,0BAA0B,QAAS,UAAU;AAAA,kBACvD,WAAU,6CAAc,cAAW,YAAO,UAAP,mBAAc;AAAA,kBACjD,SAAS,CAAC,UAAU;AACnB,2BAAO,SAAS,OAAO,KAAK;AAC5B,iCAAA;AAAA,kBACD;AAAA,kBACA,UAAA;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACA,MAAK;AAAA,sBACL,OACC,OAAO,QAAQ,OAAO,QAAQ;AAAA,sBAE9B,UAAA,OAAO;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBACT;AAAA,gBAbK;AAAA,cAAA;AAAA,aAeN,EAAA,CACF,EAAA,CACD,EAAA,CACD;AAAA,UAAA;AAAA,QAAA;AAAA,MACD;AAAA,IAAA;AAAA,EAEF,GACD;AAEF;AC/DA,MAAM,cAAc,CAAC,OAAe,WAAW,MAAM;AACnD,MAAI,UAAU,EAAG,QAAO;AACxB,QAAM,IAAI;AACV,QAAM,KAAK,WAAW,IAAI,IAAI;AAC9B,QAAM,QAAQ,CAAC,SAAS,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AACtE,QAAM,IAAI,KAAK,MAAM,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC;AAClD,SAAO,YAAY,QAAQ,KAAK,IAAI,GAAG,CAAC,GAAG,QAAQ,EAAE,CAAC,IAAI,MAAM,MAAM,CAAC;AACzE;AAEA,MAAM,cAAc,CAAC,UAAuB;;AAC1C,QAAM;AAAA,IACJ;AAAA,IACA,OAAAjE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,IAEA;AAAA,EAAA,IACE;AACJ,QAAM,CAAC,OAAO,QAAQ,IAAI,SAaxB,CAAA,CAAE;AAEJ,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,KAAK;AACpD,QAAM,CAAC,mBAAmB,oBAAoB,IAAI,SAAS,KAAK;AAChE,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAClD,QAAM,CAAC,YAAY,aAAa,IAAI,SAAc,IAAI;AACtD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAkB,KAAK;AAEzD,QAAM,EAAE,cAAc,eAAe,aAAA,IAAiB,YAAY;AAAA,IAChE,gBAAgB,CAAC,aAAa;AAC5B,eAAS;AAAA,QACP,GAAG;AAAA,QACH,GAAG,SAAS,IAAI,CAAC,UAAU;AAAA,UACzB;AAAA,UACA,WAAW;AAAA,UACX,kBAAkB;AAAA,UAClB,QAAQ;AAAA,UACR,gBAAgB;AAAA,UAChB,UAAU,KAAK;AAAA,UACf,UAAU,KAAK;AAAA,UACf,UAAU,KAAK;AAAA,UACf,UAAU;AAAA,UACV,SAAS;AAAA,QAAA,EACT;AAAA,MAAA,CACH;AACD,oBAAc,KAAK;AAAA,IACrB;AAAA,IACA,aAAa,MAAM;AACjB,oBAAc,IAAI;AAAA,IACpB;AAAA,IACA,aAAa,MAAM;AACjB,oBAAc,KAAK;AAAA,IACrB;AAAA,IACA,SAAS;AAAA,IACT,YAAY;AAAA,IACZ;AAAA,IACA,QAAQ,SAAS,oBAAoB,MAAM,IAAI;AAAA,EAAA,CAChD;AAED,QAAM,cAAc,MAAM;AACxB,YAAA;AACA,kBAAc,IAAI;AAAA,EACpB;AAEA,QAAM,eAAe,OAAyB,IAAI;AAQlD,YAAU,MAAM;AACd,UAAM,qBAAqB,CAAC,UAAe;AAEvC,YAAM,UACJ;AACF,YAAM,cAAc;AACpB,aAAO;AAAA,IAEX;AACA,QAAI,aAAa,SAAS;AACxB,mBAAa,QAAQ,WAAW;AAAA,IAClC;AAEA,WAAO,iBAAiB,gBAAgB,kBAAkB;AAE1D,WAAO,MAAM;AAEX,aAAO,oBAAoB,gBAAgB,kBAAkB;AAAA,IAC/D;AAAA,EACF,GAAG,CAAE,QAAQ,CAAC;AAId,WAAS,oBAAoB,OAAe;AAC1C,UAAM,UAAU,MAAM,MAAM,GAAG,EAAE,IAAI,CAAC,SAAS,KAAK,MAAM;AAC1D,UAAM,eAAe,QAAQ,OAAO,CAAC,KAAU,SAAiB;AAC9D,UAAI,IAAI,IAAI,CAAA;AACZ,aAAO;AAAA,IACT,GAAG,CAAA,CAAE;AACL,WAAO;AAAA,EACT;AAEA,QAAM,iBAAiB,CAAC,SAAc;AACpC,UAAM,WAAW,6BAAM,KAAK,MAAM,KAAK;AACvC,YAAQ,UAAA;AAAA,MACN,KAAK;AACH,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WACE,oBAAoB,qBAAqB;AAAA,YAE3C,OAAO,EAAE,iBAAiB,UAAA;AAAA,YAE1B,8BAAC,QAAA,EAAO,MAAM,IAAI,KAAK,OAAO,OAAO,YAAA,CAAa;AAAA,UAAA;AAAA,QAAA;AAAA,MAGxD,KAAK;AACH,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WACE,oBAAoB,qBAAqB;AAAA,YAE3C,OAAO,EAAE,iBAAiB,UAAA;AAAA,YAE1B,UAAA;AAAA,cAAA,oBAAC,QAAA,EAAO,MAAM,KAAK,KAAK,OAAO,OAAO,aAAa,KAAK,MAAA,CAAO;AAAA,cAC/D,oBAAC,cAAW,OAAM,wBAAuB,QAAO,QAAO,MAAK,MAAM,UAAA,KAAK,KAAA,CAAK;AAAA,cAC5E,oBAAC,cAAW,OAAM,uBAAsB,MAAK,MAAM,UAAA,YAAY,KAAK,IAAI,EAAA,CAAE;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAGhF,KAAK;AACH,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WACE,oBAAoB,qBAAqB;AAAA,YAE3C,OAAO,EAAE,iBAAiB,UAAA;AAAA,YAE1B,8BAAC,QAAA,EAAO,MAAM,IAAI,KAAK,OAAO,OAAO,QAAA,CAAS;AAAA,UAAA;AAAA,QAAA;AAAA,MAGpD;AACE,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WACE,oBAAoB,qBAAqB;AAAA,YAE3C,OAAO,EAAE,iBAAiB,UAAA;AAAA,YAE1B,8BAAC,QAAA,EAAO,MAAM,IAAI,KAAK,OAAO,OAAO,QAAA,CAAS;AAAA,UAAA;AAAA,QAAA;AAAA,IAChD;AAAA,EAGR;AAIA,QAAM,kBAAkB,MAAM;AAC5B,QAAI,aAAa,SAAS;AAExB,UAAI,MAAM,UAAU;AAClB,qBAAa,QAAQ,aAAa,YAAY,MAAM;AAAA,MACtD,OAAO;AAEL,qBAAa,QAAQ,gBAAgB,UAAU;AAAA,MACjD;AACA,mBAAa,QAAQ,MAAA;AAAA,IACvB;AAAA,EACF;AAEA,QAAM,mBAAmB,CAAC,MAAW;;AAEnC,UAAM,SAAOoB,MAAA,EAAE,OAAO,UAAT,gBAAAA,IAAiB,OAAM;AACpC,UAAM,IAAI;AAAA,MACR;AAAA,MACA,WAAW;AAAA,MACX,kBAAkB;AAAA,MAClB,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,UAAU,KAAK;AAAA,MACf,UAAU,KAAK;AAAA,MACf,UAAU,KAAK;AAAA,MACf,UAAU;AAAA,MACV,SAAS;AAAA,IAAA;AAIX,aAAS;AAAA,MACP,GAAG;AAAA,MACH,GAAG,CAAC,CAAC;AAAA,IAAA,CACN;AAAA,EACH;AAEA,QAAM,aAAa,CAAC,kBAA0B;AAE5C;AAAA,MAAS,CAAC,cACR,UAAU;AAAA,QAAO,CAAC,MAAM,UAAS,UAAU;AAAA,MAAA;AAAA,IAC3C;AAAA,EAEJ;AAUA,QAAM,iBAAiB,MAAM;AAC3B,mBAAe,CAAC,oBAAoB,CAAC,eAAe;AAAA,EACtD;AAEA,QAAM,sBAAsB,MAAM;AAChC,yBAAqB,CAAC,iBAAiB;AACvC,wBAAoB,UAAA,IAAc,QAAA;AAAA,EACpC;AAEA,QAAM,aAAa,YAAY;;AAC7B,UAAM,OAAO,MAAM,CAAC,EAAE;AACxB,UAAM,WAAW,IAAI,SAAA;AACrB,aAAS,OAAO,QAAQ,IAAI;AAC5B,iBAAa,IAAI;AACjB,QAAI;AACH,YAAM,WAAW,MAAM,gBAAgB,UAAU,gBAA0B;AAC3E,UAAG,UAAU;AACZ,sBAAc,SAAS,IAAI;AACvB,qBAAa,KAAK;AAClB,cAAGU,OAAAV,MAAA,qCAAU,SAAV,gBAAAA,IAAgB,WAAhB,gBAAAU,IAAwB,WAAU,GAAE;AACrC,sBAAA;AACA,8BAAoB,qCAAU,IAAI;AAAA,QACpC;AAAA,MACL;AAAA,IACD,SAAS,OAAO;AACZ,mBAAa,KAAK;AAAA,IACtB;AAAA,EAED;AAEC,YAAU,MAAM;AACd,YAAQ,SAAS,EAAE;AAAA,EACrB,GAAG,CAAC,IAAI,CAAC;AAIT,SACE,qBAAA,UAAA,EACE,UAAA;AAAA,IAAA,qBAAC,QAAA,EAAO,MAAY,SAAS,aAAa,WAAU,UAClD,UAAA;AAAA,MAAA,oBAAC,eAAY,WAAU,gBACrB,UAAA,oBAACoC,OAAA,EAAI,WAAU,iBACb,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,IAAI;AAAA,UACJ,QAAO;AAAA,UACP,OAAM;AAAA,UAEL,UAAAlE;AAAA,QAAA;AAAA,MAAA,GAEL,EAAA,CAEF;AAAA,0BACC,SAAA,EAAQ;AAAA,MACT,qBAAC,eAAA,EAAc,WAAU,mBACtB,UAAA;AAAA,QAAA,iCAAc,aAAA,EAAY;AAAA,QAE1B,MAAM,WAAW,IACd;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,uBAAuB,eAAe,gBAAgB,EAC/D;AAAA,YAEF,UAAA,oBAAC,SAAK,GAAG,aAAA,GAAgB,WAAU,aAChC,UAAA,CAAC,aACA,qBAAA,UAAA,EACE,UAAA;AAAA,cAAA,oBAAC,SAAA,EAAO,GAAG,cAAA,GAAiB,KAAK,cAAc;AAAA,cAC/C,oBAAC,KAAA,EAAE,WAAU,gBAAe,UAAA,2CAE5B;AAAA,cAEA,oBAAC,SAAI,WAAU,eACb,+BAAC,OAAA,EAAI,WAAU,iBAAgB,SAAS,iBACtC,UAAA;AAAA,gBAAA,oBAAC,OAAA,EAAI,KAAK,OAAO,OAAO,SAAS;AAAA,gBACjC,oBAAC,YAAA,EAAW,MAAK,MAAK,UAAA,aAAS;AAAA,gBAC/B;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACJ,GAAG,cAAc,EAAE,UAAU,MAAM;AAAA,oBACpC,KAAK;AAAA,oBACL,OAAO,EAAE,SAAS,OAAA;AAAA,oBAClB,UAAU;AAAA,oBACV;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACF,EAAA,CACF,EAAA,CAEF;AAAA,gBAED,8CAAY,eAAZ,mBAAwB,aAAU,8CAAY,WAAZ,mBAAoB,UACrD,oBAAC,OAAA,EAAI,WAAW,QACb,WAAA,yCAAY,OAAO,WAAU,IAC5B,oBAAC,YAAA,EAAW,MAAK,MAAK,UAAA,kCAAA,CAEtB,IACA,qBAAC,YAAA,EAAW,MAAK,MAAK,cAAW,cAAa,OAAM,mBAAkB,QAAO,UAAS,UAAA;AAAA,gBAAA;AAAA,iBACpC,gBAAW,WAAX,mBAAmB,IAAI,CAAC,SAAW,6BAAM,IAAI,KAAK;AAAA,cAAI,EAAA,CACxG,GAEJ,IAEE;AAAA,YAAA,EAAA,CAEJ,IAEA,qBAAC,OAAA,EAAI,WAAU,cACb,UAAA;AAAA,cAAA,oBAAC,OAAA,EAAI,KAAK,OAAO,OAAO,gBAAgB;AAAA,cACxC,oBAAC,YAAA,EAAW,MAAK,MAAK,UAAA,8BAAA,CAEtB;AAAA,YAAA,EAAA,CACF,EAAA,CAEJ;AAAA,UAAA;AAAA,QAAA,IAGF,oBAACmE,QAAA,EAAK,IAAI,QAAQ,+BAAO,MAAM,GAAG,SAAS,KACzC,UAAA,qBAACD,OAAA,EACI,UAAA;AAAA,UAAA,MAAM,IAAI,CAAC,MAAW,UAAA;;wCAClBA,OAAA,EAA2B,SAAQ,QAAO,OAAM,QAAO,gBAAe,UAAS,YAAW,UAAS,eAAc,UAChH,UAAA;AAAA,cAAA,qBAACA,OAAA,EAAI,WAAU,WACb,UAAA;AAAA,gBAAA,qBAAC,cAAW,SAAS,MAAM,WAAW,KAAK,GAAG,WAAU,iBAAgB,UAAA;AAAA,kBAAA,oBAAC,OAAA,EAAM,UAAS,QAAA,CAAQ;AAAA,kBAAE;AAAA,gBAAA,GAAC;AAAA,gBACnG,oBAAC,UAAO,MAAM,KAAK,KAAK,OAAO,OAAO,SAAS,KAAK,MAAA,CAAO;AAAA,cAAA,GAC7D;AAAA,cACA,oBAAC,YAAA,EAAW,MAAK,MAAK,QAAO,QAAO,OAAM,wBAAwB,WAAA9C,MAAA,6BAAM,SAAN,gBAAAA,IAAY,KAAA,CAAK;AAAA,cACnF,oBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,uBAAuB,UAAA,aAAYU,MAAA,6BAAM,SAAN,gBAAAA,IAAY,IAAI,EAAA,CAAE;AAAA,YAAA,EAAA,IANzEE,MAAA,6BAAM,SAAN,gBAAAA,IAAY,IAOtB;AAAA,WACH;AAAA,YACA,8CAAY,eAAZ,mBAAwB,aAAU,8CAAY,WAAZ,mBAAoB,UACrD,oBAAC,OAAA,EAAI,WAAW,QACb,WAAA,yCAAY,OAAO,WAAU,IAC5B,oBAAC,YAAA,EAAW,MAAK,MAAK,UAAA,kCAAA,CAEtB,IACA,qBAAC,YAAA,EAAW,MAAK,MAAK,cAAW,cAAa,OAAM,mBAAkB,QAAO,UAAS,UAAA;AAAA,YAAA;AAAA,aACpC,8CAAY,WAAZ,mBAAoB,IAAI,CAAC,SAAW,KAAK,IAAI,KAAK;AAAA,UAAI,EAAA,CACxG,GAEJ,IAEA;AAAA,QAAA,EAAA,CAEN,EAAA,CACJ;AAAA,MAAA,GAEJ;AAAA,MACA,oBAAC,iBAAc,WAAU,iBACvB,8BAAC,QAAA,EAAO,SAAS,WAAW,MAAI;AAC9B,iBAAS,KAAK;AAAA,MAChB,IAAI,YAAY,+BAAY,QAAA,CAAA,CAAO,GAAI,oBAAM,EAAA,CAC/C;AAAA,IAAA,GACF;AAAA,IACC,qBACC,qBAAC,OAAA,EAAI,WAAU,qBACb,UAAA;AAAA,MAAA,qBAAC,OAAA,EAAI,WAAU,eACb,UAAA;AAAA,QAAA,qBAAC,OAAA,EAAI,WAAU,YAAW,UAAA;AAAA,UAAA;AAAA,UACb,MAAM;AAAA,UAAO;AAAA,UAAM,MAAM,WAAW,IAAI,MAAM;AAAA,QAAA,GAC3D;AAAA,QACA,qBAAC,OAAA,EAAI,WAAU,eACb,UAAA;AAAA,UAAA,oBAAC,SAAI,WAAU,OAAM,SAAS,qBAC5B,UAAA,oBAAC,cAAW,EAAA,CACd;AAAA,8BACC,OAAA,EAAI,WAAU,OAAM,SAAS,gBAC5B,UAAA,oBAAC,OAAA,EAAI,WAAU,aACZ,wBAAc,oBAAC,iBAAA,CAAA,CAAgB,IAAK,oBAAC,mBAAA,EAAkB,GAC1D,EAAA,CACF;AAAA,QAAA,EAAA,CAEF;AAAA,MAAA,GACF;AAAA,MACA,oBAAC,OAAA,EAAI,WAAU,YACZ,WAAC,eACA,MAAM,IAAI,CAAC,MAAW;;AACpB,oCAAC,OAAA,EAAI,WAAU,kBACb,UAAA;AAAA,UAAA,oBAAC,SAAI,WAAU,YAAY,UAAA,eAAe,6BAAM,IAAI,GAAE;AAAA,UACtD,qBAAC,OAAA,EAAI,WAAU,eACb,UAAA;AAAA,YAAA,oBAAC,SAAI,WAAU,aACb,UAAA,qBAAC,OAAA,EAAI,WAAU,aACZ,UAAA;AAAA,eAAAZ,MAAA,6BAAM,SAAN,gBAAAA,IAAY;AAAA,cACZ;AAAA,YAAA,EAAA,CACH,EAAA,CACF;AAAA,gCACC,OAAA,EAAI,WAAU,eACZ,WAAA,6BAAM,YAAW,aAChB,qBAAA,UAAA,EACG,UAAA;AAAA,cAAA,KAAK,mBAAmB,KACvB,qBAAC,OAAA,EAAI,WAAU,oBACb,UAAA;AAAA,gBAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAM;AAAA,oBACN,WAAU;AAAA,oBACV,KAAK,OAAO,OAAO;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAErB;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAM;AAAA,oBACN,SAAS,MAAM,WAAW,KAAK;AAAA,oBAC/B,KAAK,OAAO,OAAO;AAAA,oBACnB,WAAU;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACX,GACH;AAAA,eAED,6BAAM,kBAAiB,MACtB,6BAAM,kBAAiB,OACrB;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,OAAM;AAAA,kBACN,SAAQ;AAAA,kBACR,OAAO,6BAAM;AAAA,gBAAA;AAAA,cAAA;AAAA,eAGlB,6BAAM,oBAAmB,OACxB,qBAAC,OAAA,EAAI,WAAU,oBACb,UAAA;AAAA,gBAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAM;AAAA,oBACN,WAAU;AAAA,oBACV,KAAK,OAAO,OAAO;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAErB;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAM;AAAA,oBACN,KAAK,OAAO,OAAO;AAAA,oBACnB,WAAU;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACX,EAAA,CACH;AAAA,YAAA,EAAA,CAEJ,wBAEC,YAAA,EAAW,MAAK,MAAK,WAAU,iBAAgB,6BAEhD,EAAA,CAEJ;AAAA,UAAA,EAAA,CACF;AAAA,QAAA,EAAA,CACF;AAAA,OACD,EAAA,CACL;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,GAEF;AAEN;ACxZA,MAAM,YAAYD,eAAM,KAAK,CAAC,UAA8B;;AAC3D,QAAM,QAAQ,aAAa,QAAQ,KAAK,mBAAmB,KAAK;AAChE,QAAM2C,YAAW,YAAA;AAEjB,QAAM;AAAA,IACL,OAAA9D;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA,uBAAuB;AAAA,IACvB,6BAA6B,CAAA;AAAA,IAC7B,cAAc;AAAA,IACd,aAAa,CAAA;AAAA,IACb;AAAA,IACA,SAAS,CAAA;AAAA,IACT;AAAA;AAAA;AAAA,IAGA,iBAAiB;AAAA,IACjB;AAAA,IACA,aAAa;AAAA,IACb,aAAa;AAAA,IACb,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACG;AACa,iBAAA;AACiB,WAAkB,KAAK;AACzD,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAAkB,KAAK;AACvE,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAkB,KAAK;AACzC,WAAiB,EAAE;AAC/C,QAAM,CAAC,gBAAgB,mBAAmB,IAAI,SAAkB,KAAK;AACrE,QAAM,CAAC,aAAa,cAAc,IAAI,SAA6B,IAAI;AACvE,QAAM,CAAC,mBAAmB,oBAAoB,IAAI,SAAS,KAAK;AAChE,QAAM,CAAC,cAAc,eAAe,IAAI,SAAgB,CAAA,CAAE;AAE1D,QAAM,CAAC,cAAc,eAAe,IAAI,SAAiB,EAAE;AAC3D,QAAM,EAAE,EAAA,IAAM,eAAA;AACd,QAAM,QAAQ,SAAA;AACd,QAAM,SAAS,cAAc,MAAM,YAAY,GAAG,IAAI,CAAC;AACvD,QAAM,EAAE,YAAY,gBAAgB,cAAc,cAAA,IAAkB,SAAA;AACpE,QAAM,EAAE,YAAY;AAEpB,QAAM,YAAwB,QAAQ,MAAM,mBAAmB8D,UAAS,QAAQ,KAAK,MAAM,CAACA,UAAS,QAAQ,CAAC;AAQ9G,YAAU,MAAM;AACf,sBAAA;AAAA,EAED,GAAG,CAAA,CAAE;AAEL,QAAM,oBAAoB,YAA2B;AACpD,SAAI,uCAAW,kBAAgB,uCAAW,gBAAe;AACxD,0BAAoB,EAAE,GAAG,SAAA,GAAY,WAAU,uCAAW,kBAAgB,uCAAW,eAAA,CAAe,EAClG,KAAK,CAAC,aAAkB;AACxB,cAAMM,gBAAe,SAAS,KAAK,OAAO,IAAI,CAAC,MAAW;AACzD,iBAAO,EAAE,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,OAAO,EAAE,KAAA;AAAA,QAC5C,CAAC;AAED,2DAAkBA;AAAAA,MACnB,CAAC,EACA,MAAM,CAAC,QAAa,QAAQ,IAAI,iCAAiC,GAAG,CAAC;AAAA,IACxE,OAAO;AACN,sBAAgB,CAAA,CAAE;AAAA,IACnB;AAAA,EACD;AAYA,QAAM,wBAAwB,MAAM;AACnC,QAAI,mCAAS,OAAO;AACnB,0BAAoB,IAAI;AAAA,IACzB;AAAA,EACD;AAEA,QAAM,oBAAoB,CAAC,UAAe;AACzC,mBAAe,MAAM,aAAa;AAAA,EACnC;AAEA,QAAM,qBAAqB,MAAM;AAChC,mBAAe,IAAI;AAAA,EACpB;AAEA,QAAM,mBAAmB,CAAC,UAAyB;AAElD;AAAA,EACD;AAEA,QAAM,aAAa,OAAO,MAAc,gBAA+B;AAItE,UAAM,oBAA+C;AAAA,MACpD,WAAW;AAAA,MACX,SAAQ,uCAAW,kBAAgB,uCAAW,kBAAiB;AAAA,MAC/D;AAAA,MACA,YAAY;AAAA,MACZ,MAAM;AAAA,IAAA;AAEP,QAAI;AACH,YAAM,aAAa,iBAAiB;AACpC,sBAAgB,6BAA6B;AAC7C,oBAAc,CAAC,UAAe;AAAA,QAC7B,GAAG;AAAA,QACH,SAAS;AAAA,UACR,GAAG,KAAK;AAAA,UACR;AAAA,UACA,OAAO,YAAY;AAAA,QAAA;AAAA,QAEpB,mBAAmB,oBAAoB,WAAW;AAAA,MAAA,EACjD;AACF,0BAAoB,KAAK;AAAA,IAC1B,SAAS,OAAO;AACf,UAAI,IAAY;AAChB,UAAI,iBAAiB,OAAO;AAC3B,YAAI,gBAAgB,MAAM,OAAO;AAAA,MAClC;AACA,sBAAgB,GAAG,EAAE,SAAS,QAAA,CAAS;AACvC,aAAO;AAAA,IACR;AACA,WAAO;AAAA,EACR;AAOA,QAAM,2BAA2B,MAAM;AACtC,wBAAoB,CAAC,SAAS,CAAC,IAAI;AACnC;AAAA,EACD;AAEA,QAAM,oBAAoB,MAAM;AAC/B,uBAAmB,KAAK;AAAA,EACzB;AAEA,QAAM,yBAAyB,CAAChE,UAAqB;AACpD,cAAUA,+BAAM,KAAK;AAAA,EACtB;AAEA,QAAM,mBAAmB,OAAO,eAAuB;AACtD,UAAM,cAAmB,MAAM,iCAAiC;AAAA,MAC/D,WAAW;AAAA,MACX,UAAU;AAAA,IAAA,CACV;AACD,QAAI,aAAa;AAChB,YAAM,OAAO,MAAM,YAAY,KAAA;AAE/B,YAAM,OAAO,SAAS,cAAc,GAAG;AAEvC,YAAM,MAAM,OAAO,IAAI,gBAAgB,IAAI;AAE3C,WAAK,OAAO;AACZ,WAAK,WAAW,GAAG,UAAU;AAE7B,eAAS,KAAK,YAAY,IAAI;AAC9B,WAAK,MAAA;AACL,eAAS,KAAK,YAAY,IAAI;AAC9B,aAAO,IAAI,gBAAgB,GAAG;AAAA,IAC/B;AAAA,EACD;AAEA,QAAM,cAAc,OAAO,YAAoB,mBAA2BiE,cAAkBrE,YAAkB;AAC7G,UAAM,cAAmB,MAAM,uBAAuB;AAAA,MACrD,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA,aAAaqE;AAAAA,MACb,OAAOrE;AAAAA,IAAA,CACP;AACD,QAAI,aAAa;AAChB,YAAM,OAAO,MAAM,YAAY,KAAA;AAE/B,YAAM,OAAO,SAAS,cAAc,GAAG;AAEvC,YAAM,MAAM,OAAO,IAAI,gBAAgB,IAAI;AAE3C,WAAK,OAAO;AACZ,WAAK,WAAW,GAAG,UAAU;AAE7B,eAAS,KAAK,YAAY,IAAI;AAC9B,WAAK,MAAA;AACL,eAAS,KAAK,YAAY,IAAI;AAC9B,aAAO,IAAI,gBAAgB,GAAG;AAAA,IAC/B;AAAA,EACD;AAEA,QAAM,YAAY,OAAO,YAAoB,mBAA2BqE,cAAkBrE,YAAkB;AAC3G,UAAM,UAAU,WAAW,gBAAgB,IAAI,CAAC,SAAc;AAAA,MAC7D,GAAG;AAAA,MACH,QAAQ,EAAE,IAAI,MAAM;AAAA,IAAA,EACnB;AACF,UAAM,cAAmB,MAAM,qBAAqB;AAAA,MACnD,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA,aAAaqE;AAAAA,MACb,OAAOrE;AAAAA,MACP;AAAA,IAAA,CACA;AACD,QAAI,aAAa;AAChB,YAAM,OAAO,MAAM,YAAY,KAAA;AAE/B,YAAM,OAAO,SAAS,cAAc,GAAG;AAEvC,YAAM,MAAM,OAAO,IAAI,gBAAgB,IAAI;AAE3C,WAAK,OAAO;AACZ,WAAK,WAAW,GAAG,UAAU;AAE7B,eAAS,KAAK,YAAY,IAAI;AAC9B,WAAK,MAAA;AACL,eAAS,KAAK,YAAY,IAAI;AAC9B,aAAO,IAAI,gBAAgB,GAAG;AAAA,IAC/B;AAAA,EACD;AAEA,QAAM,qBAAqB,MAAM;AAChC,yBAAqB,IAAI;AAAA,EAC1B;AACA,QAAM,gBAAgB,CAAA;AACtB,MAAI,aAAa,CAAC,oBAAoB,cAAc;AACnD,kBAAc,KAAK;AAAA,MAClB,OAAO;AAAA,MACP,cAAc,CAAC,eAAuB,YAAY,YAAY,WAAW,mBAAmB,aAAaA,MAAK;AAAA,MAC9G,MAAM,oBAAC,QAAA,EAAO,UAAS,QAAA,CAAQ;AAAA,IAAA,CAC/B;AAAA,EACF;AACA,MAAG,aAAa,CAAC,oBAAoB,cAAa;AACjD,kBAAc,KAAK;AAAA,MAClB,OAAO;AAAA,MACP,cAAc,CAAC,eAAuB,UAAU,YAAY,WAAW,mBAAmB,aAAaA,MAAK;AAAA,MAC5G,MAAM,oBAAC,QAAA,EAAO,UAAS,QAAA,CAAO;AAAA,IAAA,CAC9B;AAAA,EACF;AACA,MAAI,YAAY,kBAAkB;AACjC;AACC,oBAAc;AAAA,QAAK;AAAA,UAClB,OAAO;AAAA,UACP,cAAc,CAAC,eAAuB,iBAAiB,UAAU;AAAA,UACjE,MAAM,oBAAC,kBAAA,EAAiB,UAAS,QAAA,CAAQ;AAAA,QAAA;AAAA,QAEzC;AAAA,UACC,OAAO;AAAA,UACP,cAAc,CAAC,eAAuB,mBAA6B;AAAA,UACnE,MAAM,oBAAC,QAAA,EAAO,UAAS,QAAA,CAAQ;AAAA,QAAA;AAAA,MAChC;AAAA,IACF;AAAA,EACD;AAEA,QAAM,sBAAsB,CAAC,SAAc;;AAC1C,WAAO,EAAE,GAAG,MAAM,QAAOoB,MAAA,KAAK,UAAL,gBAAAA,IAAY,QAAQ,gBAAgB,IAAE;AAC/D,QAAI,UAAQ,kBAAa,KAAK,CAAC,MAAW,EAAE,QAAQ,KAAK,KAAK,MAAlD,mBAAqD,UAAS,KAAK;AAC/E,YAAQ,YAAY,+BAAO,QAAQ,OAAO,IAAI;AAC9C,UAAM,UAAU,iBAAiB,MAAM,YAAY;AAEnD,QAAI,QAAQ,KAAK;AACjB,QAAI,MAAM,QAAQ,KAAK,KAAK,GAAG;AAC9B,WAAK,QAAQ,KAAK,MAAM,IAAI,CAAA,OAAM,YAAY,OAAO,OAAO,WAAY,GAAG,QAAS,EAAE,CAAC;AACvF,cAAQ,KAAK,MAAM,KAAK,IAAI;AAAA,IAC7B;AAEA,WAAO,qBAAC,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,EAAA,GAC7D,UAAA;AAAA,MAAA,oBAAC,cAAW,MAAK,MAAK,OAAM,uBAAsB,QAAO,UAAU,UAAA,MAAA,CAAM;AAAA,MACzE,oBAAC,SAAA,EAAQ,aAAY,YAAW,UAAQ,MAAC;AAAA,2BACxC,YAAA,EAAW,MAAK,MAAK,OAAM,qBAAoB,QAAO,UAAU,UAAA;AAAA,QAAA,WAAW,OAAO;AAAA,QAAE;AAAA,QAAE;AAAA,MAAA,EAAA,CAAM;AAAA,IAAA,GAC9F;AAAA,EAED;AAEA,QAAM,gBAAgB,CAAC,IAAS,UAAe;AAC9C,WACC;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,OAAO,oBAAoB,EAAE;AAAA,QAC7B,SAAQ;AAAA,QACR,QAAM;AAAA,QACN,IAAI,CAAC,EAAE,eAAe;AAAA,UACrB,iBAAiB;AAAA,UACjB,aAAa,GAAG,QAAQ,KAAK,GAAG,CAAC;AAAA,UACjC,SAAS;AAAA,UACT,WAAW,EAAE,iBAAiB,GAAG,QAAQ,KAAK,GAAG,CAAC,cAAA;AAAA,UAClD,eAAe;AAAA,UACf,YAAY;AAAA,UACZ,KAAK;AAAA,UACL,QAAQ;AAAA,QAAA;AAAA,QAET,YACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACA,IAAI;AAAA,cACH,UAAU;AAAA,cACV,OAAO;AAAA,cACP,aAAa;AAAA,cACb,YAAY;AAAA,cACZ,WAAW;AAAA,gBACV,OAAO;AAAA,cAAA;AAAA,YACR;AAAA,UACD;AAAA,QAAA;AAAA,QAGF,UAAU,MAAM,mBAAmB,KAAK;AAAA,QACxC,WAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EAGd;AAEA,QAAM,qBAAqB,CAAC,cAAsB;AACjD,UAAM,SAAgB,QAAQ,MAAM;AAAA,MACnC,CAAClB,IAAG,UAAU,UAAU;AAAA,IAAA;AAEzB,UAAM,WAAW,EAAE,GAAG,SAAS,OAAO,OAAA;AACtC,UAAM,oBAAoB,oBAAoB,QAAQ;AAEtD,mBAAe;AAAA,MACd,SAAS;AAAA,MACT;AAAA,IAAA,CACA;AAAA,EACF;AAEA,QAAM,kBAAkB,CAAC,QAAA;;AAAsB,oBAAQkB,MAAA,2BAAK,UAAL,gBAAAA,IAAY,MAAM;AAAA;AACzE,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAA6B,IAAI;AAY7E,YAAU,MAAM;AACf,QAAI,yCAAY,QAAQ;AACvB,sBAAgB,yCAAY,MAAM;AAAA,IACnC;AAAA,EACD,GAAG,CAAC,yCAAY,MAAM,CAAC;AAEvB,YAAU,MAAM;AACf,QAAI,cAAc;AACjB,mDAAe;AACf,qBAAe,EAAE,QAAQ,cAAc;AAAA,IACxC;AAAA,EAED,GAAG,CAAC,YAAY,CAAC;AACjB,8BACE,OAAA,EACA,UAAA;AAAA,IAAA,qBAAC,OAAA,EAAI,WAAU,cACd,UAAA;AAAA,MAAA,qBAAC,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,QAAA,kCACC,OAAA,EAAI,OAAO,EAAE,QAAQ,OACrB,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACA,SAAS;AAAA,YACT,SAAS;AAAA,YACT,yBAAyB;AAAA,YACzB,cAAcpB;AAAA,YAEb,UAAAA;AAAA,UAAA;AAAA,QAAA,EACF,CACD,IAEA,oBAAC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAC1C,UAAAA,OAAA,CACF;AAAA,QAED,qBAAC,OAAA,EAAI,WAAU,0BACb,UAAA;AAAA,UAAA,QAAQ,IAAI,KACZ,KACE,IAAI,CAAC,QAAQ,GAAG,EAChB,KAAK,CAAC,GAAG,MAAM,EAAE,WAAW,EAAE,QAAQ,EACtC,IAAI,CAAC,SACL;AAAA,YAAC;AAAA,YAAA;AAAA,cAEA,OAAO,6BAAM;AAAA,cACb;AAAA,cACA,SAAS,MAAM,uBAAuB,IAAI;AAAA,YAAA;AAAA,YAHrC,6BAAM;AAAA,UAAA,CAKZ;AAAA,UACF,YACA;AAAA,YAAC;AAAA,YAAA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,UAAA;AAAA,QACD,EAAA,CAEF;AAAA,MAAA,GACD;AAAA,MAEA,qBAAC,OAAA,EAAI,WAAU,4BAA2B,OAAO,EAAE,KAAK,SAAS,SAAS,SAAA,GACxE,UAAA;AAAA,QAAA,kBACA,qBAAC,OAAA,EAAI,WAAU,wBACd,UAAA;AAAA,UAAA,oBAAC,OAAA,EAAI,WAAU,wBAAuB,UAAA,YAAQ;AAAA,UAC9C,oBAAC,OAAA,EAAI,WAAU,uBACd,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,SAAS;AAAA,cACT,UAAU;AAAA,YAAA;AAAA,UAAA,EACX,CACD;AAAA,QAAA,GACD;AAAA,QAEA,8CAEE,UAAA,SACA;AAAA,UAAC;AAAA,UAAA;AAAA,YACA,aAAY;AAAA,YACZ,cAAc,CAAC,MAAM;AACpB,8BAAgB,CAAC;AACjB,2DAAe;AAAA,YAChB;AAAA,YACA,cAAc;AAAA,YACd,aAAa;AAAA,YACb,YAAY;AAAA,UAAA;AAAA,QAAA,IAGb,qBAAA,UAAA,EACC,UAAA;AAAA,UAAA,qBAAC,YAAA,EAAW,MAAK,SAAQ,SAAS,CAAC,MAAM,kBAAkB,EAAE,aAAa,GAAG,UAAA;AAAA,YAAA,oBAAC,QAAA,EAAO,UAAS,SAAQ,OAAM,aAAY;AAAA,YAAE;AAAA,UAAA,GAAC;AAAA,UAC3H;AAAA,YAAC6C;AAAAA,YAAA;AAAA,cACA,UAAU;AAAA,cACV,MAAM,QAAQ,cAAc;AAAA,cAC5B,SAAS,MAAM,kBAAkB,IAAI;AAAA,cACrC,cAAc;AAAA,gBACb,UAAU;AAAA,gBACV,YAAY;AAAA,cAAA;AAAA,cAEb,iBAAiB;AAAA,gBAChB,UAAU;AAAA,gBACV,YAAY;AAAA,cAAA;AAAA,cAEb,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAA,GAAK,oBAAoB,EAAE,WAAW,qEAAmE;AAAA,cAE5H,UAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACA,aAAY;AAAA,kBACZ,cAAc,CAAC,MAAM;AACpB,oCAAgB,CAAC;AACjB,iEAAe;AAAA,kBAChB;AAAA,kBACA,cAAc;AAAA,kBACd,aAAa;AAAA,kBACb,YAAY,cAAc;AAAA,gBAAA;AAAA,cAAA;AAAA,YAC3B;AAAA,UAAA;AAAA,QACD,EAAA,CACD,EAAA,CAEF;AAAA,QAEA,8CAEE,UAAA,SACA;AAAA,UAAC;AAAA,UAAA;AAAA,YAEA,SAAQ;AAAA,YACR,WAAW,oBAACyB,UAAA,EAAW,UAAS,QAAA,CAAQ;AAAA,YACxC,SAAS,MAAM;AACd,iCAAmB,IAAI;AACvB,gCAAA;AAAA,YACD;AAAA,YACC,YAAE,eAAe;AAAA,UAAA;AAAA,QAAA,IAGnB,oBAAC,YAAA,EAAW,SAAS,MAAM;AAC1B,6BAAmB,IAAI;AACvB,4BAAA;AAAA,QACD,GAAG,MAAK,SACP,UAAA,oBAACA,UAAA,EAAW,UAAS,SAAQ,OAAM,YAAA,CAAY,EAAA,CAChD,EAAA,CAEF;AAAA,QAGA;AAAA,QACA;AAAA,QACA,UACA;AAAA,UAAC;AAAA,UAAA;AAAA,YACA,SAAQ;AAAA,YACR,+BAAY,SAAA,EAAQ;AAAA,YACpB,SAAS;AAAA,YACR,YAAE,YAAY;AAAA,UAAA;AAAA,QAAA;AAAA,QAGhB,wBACA,oBAAC,OAAA,EAAI,OAAO,EAAE,QAAQ,OACrB,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACA,SAAS;AAAA,YACT,SAAS;AAAA,YACT,+BAAY,SAAA,EAAQ;AAAA,YACpB,yBAAyB;AAAA,YACxB,YAAE,YAAY;AAAA,UAAA;AAAA,QAAA,GAEjB;AAAA,QAGA,WACA,oBAAC,YAAA,EAAW,SAAS,CAAC,MAAM,kBAAkB,CAAC,GAC9C,UAAA,oBAAC,SAAI,KAAK,OAAO,MAAM,KAAI,YAAA,CAAY,GACxC,IAEA;AAAA,QAGD;AAAA,UAACzB;AAAAA,UAAA;AAAA,YACA,UAAU;AAAA,YACV,MAAM,QAAQ,WAAW;AAAA,YACzB,SAAS;AAAA,YACR,UAAA,+CAAe,IAAI,CAAC,WAAgB;AACpC,qBACC;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACA,SAAS,MAAM;AACd,2BAAO,aAAa,QAAQ;AAC5B,mCAAe,IAAI;AAAA,kBACpB;AAAA,kBACA,IAAI,EAAE,YAAY,UAAU,KAAK,IAAA;AAAA,kBACjC,UACC,OAAO,OAAO,aAAa,aACxB,OAAO,aACP,QAAQ,OAAO,QAAQ;AAAA,kBAE1B,UAAA;AAAA,oBAAA,iCAAQ;AAAA,wCACR,YAAA,EAAW,MAAK,MAAK,OAAM,WAC1B,iBAAO,MAAA,CACT;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,YAGH;AAAA,UAAC;AAAA,QAAA;AAAA,QAGF;AAAA,UAAC;AAAA,UAAA;AAAA,YACA,MAAM;AAAA,YACN,SAAS;AAAA,YACT,YAAY;AAAA,YACZ;AAAA,YACA;AAAA,YACA,cAAc;AAAA,YACd;AAAA,YACA;AAAA,YACA;AAAA,YACA,kBAAkB,CAAA,MAAK,uBAAuB,CAAC;AAAA,YAC/C;AAAA,UAAA;AAAA,QAAA;AAAA,MACD,EAAA,CACD;AAAA,IAAA,GACD;AAAA,IAGC,gBAAgB,OAAO,KACvB;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,IAAI;AAAA,QACJ,IAAI;AAAA,UACH,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,gBAAgB;AAAA,QAAA;AAAA,QAEjB,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,IAAI;AAAA,cACJ,IAAI;AAAA,gBACH,SAAS;AAAA,gBACT,YAAY;AAAA,gBACZ,KAAK;AAAA,gBACL,UAAU;AAAA,cAAA;AAAA,cAEX,UAAA;AAAA,gBAAA,qBAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAC1C,UAAA;AAAA,kBAAA,EAAE,gBAAgB;AAAA,kBAAE;AAAA,kBAAE;AAAA,gBAAA,GACxB;AAAA,iBAEC,wCAAS,UAAT,mBAAgB,IAAI,CAAC,GAAG,WAAA;;AACxB,6CAAA,UAAA,EACE,YAAAzB,MAAA,uBAAG,UAAH,gBAAAA,IAAU,WACV,4BAAG,UAAH,mBAAU,IAAI,CAAC,IAAI,YAClB,oBAAA,UAAA,EACE,UAAA,cAAc,IAAI,OAAO,EAAA,CAC3B,KAEE,oBAAA,UAAA,EACF,UAAA,cAAc,GAAG,MAAM,EAAA,CAEzB,GAED;AAAA;AAAA,cACA;AAAA,YAAA;AAAA,UAAA;AAAA,+BAED,KAAA,EACA,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACA,SAAQ;AAAA,gBACR,WAAU;AAAA,gBACV,WAAW,oBAAC,YAAA,EAAW,UAAS,QAAA,CAAQ;AAAA,gBACxC,SAAS;AAAA,gBACT,+BAAC,QAAA,EAAK,UAAA;AAAA,kBAAA;AAAA,kBAAE,EAAE,mBAAmB;AAAA,gBAAA,EAAA,CAAE;AAAA,cAAA;AAAA,YAAA;AAAA,YAahC;AAAA,cAAC;AAAA,cAAA;AAAA,gBACA,SAAQ;AAAA,gBACR,WAAW,oBAAC,cAAA,EAAa,UAAS,QAAA,CAAQ;AAAA,gBAC1C,SAAS,MACR,eAAe;AAAA,kBACd,SAAS;AAAA,kBACT,mBAAmB;AAAA,gBAAA,CACnB;AAAA,gBAED,YAAE,oBAAoB;AAAA,cAAA;AAAA,YAAA;AAAA,UACxB,EAAA,CACD;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAyCF;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,MAAM;AAAA,QACN,SAAS,MAAM,oBAAoB,KAAK;AAAA,QACxC,cAAc,CAAC,SACd,WAAW,MAAM,OAAwB;AAAA,MAAA;AAAA,IAAA;AAAA,IAG3C;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,MAAM;AAAA,QACN,kBAAkB;AAAA,QAClB,SAAS,MAAM,qBAAqB,KAAK;AAAA,QACzC,WAAW,MAAM,qBAAqB,IAAI;AAAA,QAC1C,OAAM;AAAA,QACN,UAAU;AAAA,QACV;AAAA,QACA,UAAU;AAAA,QACV;AAAA,QACA,QAAO;AAAA,MAAA;AAAA,IAAA;AAAA,EACR,GACD;AAEF,CAAC;ACxwBD,MAAM,aAAa,CAAC,UAAqB;AACxC,QAAM,EAAE,SAAS;AAEjB,SACC,oBAAA,UAAA,EACC,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,IAAI;AAAA,QACH,+BAA+B;AAAA,UAC9B,OAAO;AAAA,QAAA;AAAA,MACR;AAAA,MAEA,UAAA,6BAAM,IAAI,CAAC,MAAM,UACjB,oBAAC,KAAA,EACC,UAAA,SAAQ,6BAAM,UAAS;AAAA;AAAA;AAAA;AAAA,QAItB;AAAA,UAAC;AAAA,UAAA;AAAA,YACA,MAAK;AAAA,YACL,OAAM;AAAA,YACN,QAAO;AAAA,YACP,YAAW,6BAAM,QAAO,OAAO;AAAA,YAC/B,IAAI,OAAO,6BAAM,IAAI,KAAK;AAAA,YAC1B,OAAO,6BAAM;AAAA,YACb,SAAS,6BAAM;AAAA,YAAS,OAAO,EAAE,SAAS,QAAA;AAAA,YACzC,UAAA,6BAAM;AAAA,UAAA;AAAA,QAAA;AAAA,UAIT;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,MAAK;AAAA,UACL,QAAO;AAAA,UACP,OAAM;AAAA,UACL,UAAA,6BAAM;AAAA,QAAA;AAAA,MAAA,EACR,GAtBQ,KAwBV;AAAA,IACA;AAAA,EAAA,GAEH;AAEF;AClDA,MAAM,mBAAmB,CAAC,EAAC,OAAO,UAAU,OAAO,GAAG,YAAW;AAG9D,QAAM,oBACL,EAAE,SAAS,CAACZ,WAAU;AACpB,aAASA,MAAK;AAAA,EAChB,GAAG,GAAG;AAGR,QAAM,oBAAoB,CAAC,MAAM;AAC/B,sBAAkB,EAAE,OAAO,KAAK;AAAA,EAClC;AAEA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACO,OAAO,SAAS;AAAA,MAChB,SAAQ;AAAA,MACR,MAAK;AAAA,MACL;AAAA,MACA,UAAU;AAAA,MACV,MAAK;AAAA,MACL,WAAS;AAAA,MACT,YAAY;AAAA,QACV,oCACG,gBAAA,EAAe,UAAS,SACvB,UAAA,oBAAC,eAAA,EAAc,UAAS,QAAA,CAAQ,EAAA,CAClC;AAAA,MAAA;AAAA,MAGH,GAAG;AAAA,IAAA;AAAA,EAAA;AAGhB;AC3BA,MAAM,WAAW,CAAC,UAAyB;AACzC,QAAM,EAAE,SAAS,YAAY,MAAM,UAAU,GAAG,SAAS;AACzD,SACE,qBAAC,KAAA,EAAI,WAAU,YAAY,GAAG,MAC3B,UAAA;AAAA,IAAA;AAAA,IACD;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,QAAO;AAAA,QACP,OAAM;AAAA,QACN,WAAU;AAAA,QAET,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAEH;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,QAAO;AAAA,QACP,OAAM;AAAA,QACN,WAAU;AAAA,QAET,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAEH,oBAAC,SAAK,SAAA,CAAS;AAAA,EAAA,GACjB;AAEJ;AClBA,MAAM,aAAa,CAAC;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AACF,MAAmB;AACjB,QAAM,EAAE,QAAQ,MAAA,IAAU;AAC1B,QAAM,OAAK,SAAO,SAAO;AACzB,QAAM,kBAAkB,CAAC,IAAI,IAAI,EAAE;AACnC,QAAM,EAAC,MAAA,IAAO,YAAA;AACf,QAAM,EAAC,cAAa,eAAc,WAAA,IAAY,SAAA;AAC7C,QAAM,oBAAoB,CAAC,MAAkC;;AAC3D,UAAM,WAAW;AAAA,MACf,GAAG;AAAA,MACH,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,QAAO,4BAAG,WAAH,mBAAW;AAAA,IAAA;AAEpB,0BAAsB,QAAQ;AAAA,EAChC;AAEA,QAAM,iBAAiB,MAAM;AAC3B,QAAI,SAAS,YAAY;AACvB,YAAM,WAAW;AAAA,QACf,GAAG;AAAA,QACH,QAAQ,SAAS,MAAM,IAAI;AAAA,MAAA;AAE7B,4BAAsB,QAAQ;AAC9B,mBAAa,IAAI;AAAA,IACnB;AAAA,EACF;AACA,QAAM,iBAAiB,MAAM;AAC3B,QAAI,SAAS,GAAG;AACd,YAAM,WAAW;AAAA,QACf,GAAG;AAAA,QACH,QAAQ,SAAS,MAAM,IAAI;AAAA,MAAA;AAE7B,4BAAsB,QAAQ;AAC9B,mBAAa,IAAI;AAAA,IACnB;AAAA,EACF;AAEA,QAAM,iBAAiB,CAAC,UAAU;AAChC,QAAI,MAAM,QAAQ,SAAS;AACzB,YAAM,QAAQ,MAAM,OAAO;AAC3B,UAAI,SAAS,KAAK,IAAI,KAAK,SAAS,KAAK,KAAK,YAAY;AACxD,cAAM,WAAW;AAAA,UACf,GAAG;AAAA,UACH,QAAQ,SAAS,KAAK;AAAA,QAAA;AAExB,8BAAsB,QAAQ;AAC9B,qBAAa,IAAI;AAAA,MACnB;AAAA,IAEF;AAAA,EACF;AAEA,YAAU,MAAI;AACZ,kBAAc,EAAC,GAAG,YAAW,MAAK,QAAO;AAAA,EAE3C,GAAE,CAAC,MAAM,CAAC;AAIV,SACE,qBAAC,KAAA,EAAI,WAAU,cAAa,WAAW,iCACrC,UAAA;AAAA,IAAA,oBAAC,YAAA,EAAW,OAAM,uBAAsB,MAAK,MAAK,UAAA,oBAElD;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,QACP,MAAK;AAAA,QACL,WAAU;AAAA,QACV,UAAU;AAAA,QACV,SAAQ;AAAA,QACR,WAAW;AAAA,UACT,IAAG;AAAA,YACD,UAAS;AAAA,UAAA;AAAA,QACX;AAAA,QAGD,UAAA,mDAAiB,IAAI,CAAC,SACrB,oBAAC,YAAoB,OAAO,MACzB,UAAA,KAAA,GADY,IAEf;AAAA,MACD;AAAA,IAAA;AAAA,wBAGF,YAAA,EAAW,OAAM,uBAAsB,MAAK,MAAK,UAAA,WAElD;AAAA,IAEE;AAAA,MAAC+D;AAAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAU;AAAA,QACV,IAAG;AAAA,QACH,cAAa;AAAA,QACb,WAAW;AAAA,MAAA;AAAA,IAAA;AAAA,wBAGd,YAAA,EAAW,SAAS,gBAAgB,MAAK,SAAQ,UAAU,gBAAgB,WAAW,GACrF,kBAAQ,oBAACC,kBAAA,CAAA,CAAiB,IAAK,oBAAC,mBAAgB,GAClD;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,IAAI;AAAA,UACF,GAAI,QAAQ,EAAE,IAAI,QAAQ,EAAE,IAAI,IAAA;AAAA,QAAI;AAAA,QAErC,MAAK;AAAA,QACL,QAAO;AAAA,QACP,OAAM;AAAA,QACP,UAAA;AAAA,UAAA;AAAA,UACM;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,yBAGN,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBACzC,UAAA;AAAA,MAAA;AAAA,MAAQ;AAAA,IAAA,GACX;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAI;AAAA,QACJ,MAAK;AAAA,QACL,QAAO;AAAA,QACP,OAAM;AAAA,QACP,UAAA;AAAA,UAAA;AAAA,UACI;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAEL,oBAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBACzC,UAAA,cAAc,EAAA,CACjB;AAAA,wBAEC,YAAA,EAAW,SAAS,gBAAgB,MAAK,SAAQ,UAAU,gBAAgB,WAAW,YACpF,kBAAQ,oBAAC,iBAAA,CAAA,CAAgB,IAAI,oBAACA,oBAAiB,EAAA,CAClD;AAAA,EAAA,GACF;AAEJ;AChIA,MAAM,eAAe,CAAC,EAAE,MAAM,SAAS,MAAM,cAAc,YAAsB;AAC/E,QAAM,CAAC,MAAM,OAAO,IAAI,SAAA;AACxB,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAiB,EAAE;AAC7C,QAAM,YAAY,QAAQ,MAAM,+BAAO,IAAI,CAACC,WAASA,+BAAM,SAAQ,KAAK,CAAC,KAAK,CAAC;AAE/E,YAAU,MAAM;AACd,YAAQ,6BAAM,IAAI;AAAA,EACpB,GAAG,CAAC,IAAI,CAAC;AAET,YAAU,MAAM;AACd,aAAS,EAAE;AAAA,EACb,GAAG,CAAA,CAAE;AAEL,QAAM,aAAa,MAAM;AACvB,QAAI,UAAe,CAAA;AACnB,QAAI,MAAM;AACR,gBAAU;AAAA,QACR,GAAG;AAAA,MAAA;AAAA,IAEP;AACA,YAAQ,MAAM,IAAI;AAElB,iBAAa,OAAO;AACpB,YAAQ,EAAE;AACV,YAAA;AAAA,EACF;AAEA,QAAM,oBAAoB,CAAC,MAAW;AACpC,UAAM,QAAQ,EAAE,OAAO;AAEvB,YAAQ,KAAK;AACb,QAAI,uCAAW,SAAS,MAAM,KAAA,IAAS;AACrC,eAAS,0BAA0B;AAAA,IACrC,WAAW,CAAC,MAAM,QAAQ;AACxB,eAAS,4BAA4B;AAAA,IACvC,OAAO;AACL,eAAS,EAAE;AAAA,IACb;AAAA,EACF;AAEA,yCAEI,UAAA,qBAAC,OAAA,EAAM,WAAS,MAAC,SAAkB,MACjC,UAAA;AAAA,IAAA,qBAAC,aAAA,EACC,UAAA;AAAA,MAAA,qBAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAO,wBAC1C,UAAA;AAAA,QAAA,OAAO,SAAS;AAAA,QAAM;AAAA,MAAA,GACzB;AAAA,MACA,oBAAC,YAAA,EAAW,MAAK,OAAM,SAAS,SAAS,MAAK,SAC5C,UAAA,oBAAC,OAAA,EAAM,UAAS,UAAA,CAAU,EAAA,CAC5B;AAAA,IAAA,GACF;AAAA,IACA,oBAAC,eAAA,EAAc,UAAQ,MACrB,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,WAAS;AAAA,QACT,aAAY;AAAA,QACZ;AAAA,QACA,YAAY;AAAA,QACZ,OAAO;AAAA,QACP,UAAU;AAAA,MAAA;AAAA,IAAA,GAEd;AAAA,yBACC,eAAA,EACC,UAAA;AAAA,MAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,SAAS,MAAI;AACX,oBAAA;AACA,oBAAQ,EAAE;AAAA,UACZ;AAAA,UACA,OAAO;AAAA,YACL,OAAO;AAAA,UAAA;AAAA,UAEV,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAGD,oBAAC,UAAO,UAAU,SAAS,CAAC,MAAM,SAAS,YAAY,UAAA,OAAA,CAAI;AAAA,IAAA,EAAA,CAC7D;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;ACjGA,SAAS,eAAe,OAAY;;AAClC,QAAM,EAAE,WAAW,OAAO,SAAA,IAAa;AACvC,QAAM,CAAC,OAAO,QAAQ,IAAI,WAAS,WAAM,SAAS,MAAf,mBAAkB,aAAY,CAAC;AAElE,QAAM,eAAe,CAAC,QAAwB,aAAqB;AACjE,aAAS,QAAQ;AACjB,aAAS,WAAW,CAAC;AAAA,EACvB;AAEA,QAAM,oBAAoB,MAAM;AAC9B,YAAQ,OAAA;AAAA,MACN,KAAK;AACH,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,KAAK,OAAO,WAAW;AAAA,YACvB,KAAI;AAAA,UAAA;AAAA,QAAA;AAAA,MAGV,KAAK;AACH,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,KAAK,OAAO,WAAW;AAAA,YACvB,KAAI;AAAA,UAAA;AAAA,QAAA;AAAA,MAGV,KAAK;AACH,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,KAAK,OAAO,WAAW;AAAA,YACvB,KAAI;AAAA,UAAA;AAAA,QAAA;AAAA,MAGV,KAAK;AACH,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,KAAK,OAAO,WAAW;AAAA,YACvB,KAAI;AAAA,UAAA;AAAA,QAAA;AAAA,MAGV,KAAK;AACH,eACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,KAAK,OAAO,WAAW;AAAA,YACvB,KAAI;AAAA,UAAA;AAAA,QAAA;AAAA,MAGV;AACE,eAAO;AAAA,IAAA;AAAA,EAEb;AAEA,QAAM,iBAAiB,CAAC,UAAkB;AACxC,YAAQ,OAAA;AAAA,MACN,KAAK;AACH,eAAO,UAAU,IAAI,gBAAgB;AAAA,MACvC,KAAK;AACH,eAAO,UAAU,IAAI,kBAAkB;AAAA,MACzC,KAAK;AACH,eAAO,UAAU,IAAI,cAAc;AAAA,MACrC,KAAK;AACH,eAAO,UAAU,IAAI,kBAAkB;AAAA,MACzC,KAAK;AACH,eAAO,UAAU,IAAI,SAAS;AAAA,MAChC;AACE,eAAO;AAAA,IAAA;AAAA,EAEb;AAEA,SACE,oBAAA,UAAA,EACE,UAAA,qBAAC,OAAA,EAAI,WAAU,mBACb,UAAA;AAAA,IAAA,oBAAC,YAAA,EAAY,8BAAkB,CAAE;AAAA,wBAChC,OAAA,EAAI,WAAU,kBACb,UAAA,oBAAC,OAAI,IAAI,EAAE,OAAO,OAAA,GAChB,UAAA,qBAAC,MAAA,EAAK,OAAc,UAAU,cAAc,UAAQ,MAClD,UAAA;AAAA,MAAA,oBAAC,KAAA,EAAY,OAAO,eAAe,CAAC,KAA1B,CAA6B;AAAA,0BACtC,KAAA,EAAY,OAAO,eAAe,CAAC,KAA1B,CAA6B;AAAA,0BACtC,KAAA,EAAY,OAAO,eAAe,CAAC,KAA1B,CAA6B;AAAA,0BACtC,KAAA,EAAY,OAAO,eAAe,CAAC,KAA1B,CAA6B;AAAA,0BACtC,KAAA,EAAY,OAAO,eAAe,CAAC,KAA1B,CAA6B;AAAA,IAAA,EAAA,CACzC,GACF,EAAA,CACF;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;AC5DA,SAAS,SAAS,OAAsB;AACtC,QAAM,EAAE,UAAU,OAAO,OAAO,GAAG,UAAU;AAE7C,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,MAAK;AAAA,MACL,QAAQ,UAAU;AAAA,MAClB,IAAI,qBAAqB,KAAK;AAAA,MAC9B,mBAAiB,gBAAgB,KAAK;AAAA,MACrC,GAAG;AAAA,MAEH,UAAA,UAAU,SACT,oBAAC,KAAA,EAAI,IAAI,EAAE,GAAG,EAAA,GACZ,UAAA,oBAAC,YAAA,EAAY,SAAA,CAAS,EAAA,CACxB;AAAA,IAAA;AAAA,EAAA;AAIR;AAEA,SAAS,UAAU,OAAe;AAChC,SAAO;AAAA,IACL,IAAI,gBAAgB,KAAK;AAAA,IACzB,iBAAiB,qBAAqB,KAAK;AAAA,EAAA;AAE/C;AAEA,MAAM,kBAAkB,CAAC,EAAE,MAAM,SAAS,OAAO,mBAA6B;AAC5E,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,CAAC;AACpC,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,KAAK;AACpD,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,EAAE;AAEjD,QAAM,WAAW,YAAA;AAEjB,YAAU,MAAM;AACd,aAAS,cAAc,WAAW,CAAC;AAAA,EACrC,GAAG,CAAC,UAAU,WAAW,CAAC;AAE1B,QAAM,eAAe,CAAC,QAA8B,aAAqB;AACvE,aAAS,QAAQ;AAAA,EACnB;AAEA,QAAM,aAAa,MAAM;AACvB,iBAAa,MAAM,KAAK,CAAC;AAAA,EAC3B;AAEA,QAAM,aAAa,MAAM;AACvB,UAAM,gBAAgB,YAAY;AAAA,MAAO,CAAC,SACxC,KAAK,KAAK,cAAc,SAAS,YAAY,YAAA,CAAa;AAAA,IAAA;AAG5D,WAAO,cAAc,IAAI,CAAC,MAAW,UACnC,oBAAC,KAAA,EAAgB,OAAO,KAAK,MAAO,GAAG,UAAU,KAAK,EAAA,GAA5C,KAA+C,CAC1D;AAAA,EACH;AAEA,QAAM,kBAAkB,CAAC,EAAE,WAA0B;;AACnD,QAAI,eAAe,IACjB,iBAAiB;AAEnB,UAAI,wCAAM,YAAN,mBAAe,UAAf,mBAAsB,YAAW,GAAG;AACtC,qBAAe;AAAA,IACjB,YAAW,wCAAM,YAAN,mBAAe,UAAf,mBAAsB,QAAQ;AACvC,qBAAe,kBAAiB,wCAAM,YAAN,mBAAe,UAAf,mBAAsB,MAAM;AAAA,IAC9D,OAAO;AACL,qBAAe;AAAA,IACjB;AAEA,UAAI,wCAAM,YAAN,mBAAe,YAAf,mBAAwB,YAAW,GAAG;AACxC,uBAAiB;AAAA,IACnB,YAAW,wCAAM,YAAN,mBAAe,YAAf,mBAAwB,QAAQ;AACzC,uBAAiB,yBAAwB,wCAAM,YAAN,mBAAe,YAAf,mBAAwB,MAAM;AAAA,IACzE,OAAO;AACL,uBAAiB;AAAA,IACnB;AAEA,WAAO,oBAAC,KAAA,EAAG,UAAA,eAAe,eAAA,CAAe;AAAA,EAC3C;AAEA,QAAM,eAAe,MAAM;AACzB,mBAAe,CAAC,cAAmB;AACjC,YAAM,eAAe,UAAU,IAAI,CAAC,MAAW,UAAe;AAC5D,YAAI,UAAU,OAAO;AACnB,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,kBAAkB,CAAC,KAAK;AAAA,UAAA;AAAA,QAE5B;AACA,eAAO;AAAA,MACT,CAAC;AACD,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,QAAM,mBAAmB,CAAC,cAAsB;AAC9C,mBAAe,CAAC,cAAmB;AACjC,YAAM,eAAe,UAAU,IAAI,CAAC,MAAW,UAAe;AAC5D,YAAI,UAAU,OAAO;AACnB,iBAAO;AAAA,YACL,GAAG;AAAA,YACH;AAAA,UAAA;AAAA,QAEJ;AACA,eAAO;AAAA,MACT,CAAC;AACD,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,QAAM,kBAAkB,CAACjE,WAAkB;AACzC,mBAAeA,MAAK;AACpB,aAAS,CAAC;AAAA,EACZ;AACA,SACE,oBAAA,UAAA,EACE,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA,WAAU;AAAA,MAEV,UAAA;AAAA,QAAA,qBAAC,aAAA,EACC,UAAA;AAAA,UAAA,oBAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAO,wBAAwB,UAAA,eAAA,CAErE;AAAA,UACA,oBAAC,YAAA,EAAW,MAAK,OAAM,SAAS,SAAS,MAAK,SAC5C,UAAA,oBAAC,OAAA,EAAM,UAAS,UAAA,CAAU,EAAA,CAC5B;AAAA,QAAA,GACF;AAAA,QACA,oBAAC,eAAA,EAAc,UAAQ,MAClB,WAAA,2CAAa,UACd,oBAAC,KAAA,EACC,UAAA,qBAAC,MAAA,EAAK,WAAS,MAAC,SAAS,GACvB,UAAA;AAAA,UAAA,qBAAC,QAAK,MAAI,MAAC,IAAI,GAAG,WAAU,kBAC1B,UAAA;AAAA,YAAA,oBAAC,OAAA,EAAI,WAAU,mBACb,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,aAAa;AAAA,gBACb,cAAc;AAAA,cAAA;AAAA,YAAA,GAElB;AAAA,YACA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,aAAY;AAAA,gBACZ,SAAQ;AAAA,gBACR;AAAA,gBACA,UAAU;AAAA,gBACV,cAAW;AAAA,gBACX,IAAI,EAAE,aAAa,GAAG,aAAa,UAAA;AAAA,gBAElC,UAAA,WAAA;AAAA,cAAW;AAAA,YAAA;AAAA,UACd,GACF;AAAA,UACA,oBAAC,QAAK,WAAU,oBAAmB,MAAI,MAAC,IAAI,GACzC,UAAA,YACE;AAAA,YAAO,CAAC,SACP,KAAK,KAAK,cAAc,SAAS,YAAY,YAAA,CAAa;AAAA,UAAA,EAE3D,IAAI,CAAC,MAAW,UACf,qBAAC,UAAA,EAAS,OAAc,OACtB,UAAA;AAAA,YAAA,oBAAC,OAAA,EAAI,WAAU,qBACb,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAW;AAAA,gBACX,OAAO;AAAA,gBACP,UAAU;AAAA,cAAA;AAAA,YAAA,GAEd;AAAA,YACA,qBAAC,OAAA,EAAI,WAAU,iBACb,UAAA;AAAA,cAAA,qBAAC,OAAA,EAAI,WAAU,kBACb,UAAA;AAAA,gBAAA,oBAAC,OAAA,EACC,UAAA,oBAAC,MAAA,EAAI,UAAA,KAAK,MAAK,GACjB;AAAA,gBACA,qBAAC,OAAA,EAAI,WAAU,cACb,UAAA;AAAA,kBAAA,oBAAC,OAAA,EACC,UAAA;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,SACE;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACC,SAAS,KAAK;AAAA,0BACd,UAAU;AAAA,wBAAA;AAAA,sBAAA;AAAA,sBAGd,OAAM;AAAA,sBACN,gBAAe;AAAA,oBAAA;AAAA,kBAAA,GAEnB;AAAA,kBACA,oBAAC,OAAA,EAAI,WAAU,mBACb,+BAAC,KAAA,EACC,UAAA;AAAA,oBAAA,oBAAC,UAAK,UAAA,SAAA,CAAM;AAAA,oBAAO;AAAA,oBAAE,KAAK;AAAA,kBAAA,EAAA,CAC5B,EAAA,CACF;AAAA,gBAAA,EAAA,CACF;AAAA,cAAA,GACF;AAAA,kCACC,OAAA,EAAI,WAAU,eACb,UAAA,oBAAC,iBAAA,EAAgB,MAAY,EAAA,CAC/B;AAAA,YAAA,EAAA,CACF;AAAA,UAAA,EAAA,GApCyC,KAqC3C,CACD,EAAA,CACL;AAAA,QAAA,EAAA,CACF,EAAA,CACF,IACG,oBAAC,KAAA,EAAI,SAAQ,QAAO,OAAM,QAAO,QAAO,QAAO,YAAW,UAAS,gBAAe,UAAS,8BAAC,YAAA,EAAW,MAAK,MAAK,OAAM,uBAAsB,UAAA,oCAAA,CAAiC,EAAA,CAAa,EAAA,CAClM;AAAA,6BACC,eAAA,EACC,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,SAAS;AAAA,cACT,OAAO;AAAA,gBACL,OAAO;AAAA,cAAA;AAAA,cAET,UAAU,EAAC,2CAAa;AAAA,cACzB,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGD,oBAAC,UAAO,SAAS,YAAY,UAAU,EAAC,2CAAa,SAAQ,UAAA,YAAA,CAAS;AAAA,QAAA,EAAA,CACxE;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ;AC/OA,MAAM,UAAU,CAAC,EAAE,aAAa,eAAe,YAAsB;AACnE,QAAM,CAAC,eAAe,gBAAgB,IAAIW,eAAM;AAAA,IAC9C;AAAA,EAAA;AAEF,QAAM,CAAC,oBAAoB,qBAAqB,IAAIA,eAAM,SAAS,KAAK;AACxE,QAAM,CAAC,uBAAuB,wBAAwB,IACpDA,eAAM,SAAS,KAAK;AAEtB,QAAM,oBAAoB,CAAC,UAA+C;AACxE,UAAM,gBAAA;AACN,qBAAiB,MAAM,aAAa;AAAA,EACtC;AACA,QAAM,qBAAqB,MAAM,iBAAiB,IAAI;AAEtD,QAAM,yBAAyB,MAAM;AACnC,uBAAA;AACA,0BAAsB,IAAI;AAAA,EAC5B;AACA,QAAM,0BAA0B,MAAM,sBAAsB,KAAK;AAEjE,QAAM,yBAAyB,MAAM;AACnC,6BAAyB,KAAK;AAAA,EAChC;AACA,QAAM,4BAA4B,MAAM;AACtC,6BAAyB,IAAI;AAC7B,qBAAiB,IAAI;AAAA,EACvB;AACA,QAAM,eAAe,CAAC,SAAc;AAClC,UAAM,UAAe,EAAE,GAAG,KAAK,SAAS,MAAM,KAAK,KAAA;AACnD,kBAAc,OAAO;AACrB,6BAAyB,KAAK;AAAA,EAChC;AAEA,SACE,qBAAA,UAAA,EACE,UAAA;AAAA,IAAA,oBAAC,YAAA,EAAW,MAAK,SAAQ,IAAI,EAAE,IAAI,EAAA,GAAK,SAAS,mBAC/C,UAAA,oBAAC,6BAAA,EAA4B,UAAS,WAAU,GAClD;AAAA,IACA;AAAA,MAAC0B;AAAAA,MAAA;AAAA,QACC,MAAM,QAAQ,aAAa;AAAA,QAC3B,UAAU;AAAA,QACV,SAAS;AAAA,QAET,UAAA;AAAA,UAAA,oBAAC,UAAA,EAAS,SAAS,wBACjB,UAAA,oBAAC,YAAA,EAAW,OAAM,wBAAuB,MAAK,MAAK,UAAA,kBAAA,CAEnD,GACF;AAAA,UACA,qBAAC,UAAA,EAAS,SAAS,2BACjB,UAAA;AAAA,YAAA,oBAAC,YAAA,EAAW,OAAM,wBAAuB,MAAK,MAAK,UAAA,gBAEnD;AAAA,YACA,oBAAC,wBAAA,EAAuB,UAAS,QAAA,CAAQ;AAAA,UAAA,EAAA,CAC3C;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGF;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,MAAM;AAAA,QACN,SAAS;AAAA,QACT,cAAc;AAAA,MAAA;AAAA,IAAA;AAAA,IAEhB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,OAAO,eAAe,CAAA;AAAA,QACtB,SAAS;AAAA,QACT,cAAc;AAAA,MAAA;AAAA,IAAA;AAAA,EAChB,GACF;AAEJ;ACjCA,MAAM,aAAa,CAAC,UAA2B;AAC7C,QAAM;AAAA,IACJ;AAAA,IACA,OAAA7C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ,CAAA;AAAA,IACR,wBAAwB;AAAA,EAAA,IACtB;AAEJ,QAAM,EAAE,MAAA,IAAU,eAAe,CAAC,UAAU,KAAK;AAEjD,QAAM,WAAW,eAAA;AAEjB,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,MAAM,YAAY,KAAK;AAChE,QAAM,CAAC,iBAAiB,kBAAkB,IAAI;AAAA,IAC5C,MAAM,iBAAiB,CAAA;AAAA,EAAC;AAE1B,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,CAAA,CAAE;AAC7C,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAS,CAAA,CAAE;AAErD,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAA2B;AAAA,IACzE,eAAe;AAAA,IACf,eAAe,CAAA;AAAA,EAAC,CACjB;AAEH,QAAM,kBAAgB,QAAQ,OAAI,qDAAkB,iBAAgB,MAAM,cAAc,MAAM,OAAM,CAAC,OAAM,qDAAkB,aAAa,CAAC;AAC3I,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAgB,CAAA,CAAE;AAC1D,YAAU,MAAM;AACd,UAAM,OAAY,CAAA;AAClB,UAAM,UAAe,CAAA;AACrB,aACE,MAAM,IAAI,CAAC,SAAc;AACvB,YAAM,WAAgB,CAAA;AACtB,UAAI,KAAK,SAAS,SAAS;AACzB,aAAK,KAAK,KAAK,IAAI;AACnB,iBAAS,KAAK,KAAK;AACnB,iBAAS,OAAO,KAAK;AACrB,gBAAQ,KAAK,QAAQ;AAAA,MACvB;AACA,uBAAiB,IAAI;AACrB,mBAAa,OAAO;AAAA,IACtB,CAAC;AAAA,EACL,GAAG,CAAC,KAAK,CAAC;AAEZ,YAAU,MAAI;;AACZ,QAAG,GAAC,oCAAO,kBAAP,mBAAsB,WAAU,EAAC,+BAAO,UAAQ;AAClD,mBAAA;AACJ;AAAA,IACE;AACC,qBAAiB,gBAAc,MAAM;AACtC,wBAAoB,gBAAgB;AACnC,uBAAmB;AAAA,MAClB,GAAG;AAAA,MACH,eAAc,MAAM,UAAQ,+BAAO,UAAQ,+BAAO;AAAA,IAAA,CAClD;AAAA,EAEJ,GAAE,CAAC,+BAAO,eAAc,IAAI,CAAC;AAE3B,QAAM,oBAAoB,MAAM;;AAC9B,QAAG,EAAC,+CAAe,QAAQ;AAC1B,UAAM,OAAO,QAAQ,eAAe,SAAS,EAAE,OAAO,OAAG,CAAC;AAC3D,QAAI,WAAW;AACf,QAAI,MAAM,QAAQ,IAAI,MAAK,6BAAM,SAAQ;AACvC,kBAAW,WAAM,UAAN,mBAAa,OAAO,CAAA,MAAK,KAAK,SAAS,EAAE,EAAE;AAAA,IAExD;AACA,UAAM,aAAa;AAAA,MACjB,YAAY,CAAC;AAAA,MACb,eAAe,CAAC,GAAG,IAAI,IAAI,QAAQ,CAAC;AAAA,MACpC,SAAQ,qDAAkB;AAAA,MAC1B,UAAQ,qDAAkB,iBAAc,+CAAe,IAAI,CAAC,MAAW,uBAAG,MAAI,CAAA;AAAA,IAAC;AAEjF,aAAS,UAAU;AAAA,EAErB;AAEA,QAAM,eAAa,MAAK;AACtB,uBAAmB;AAAA,MACjB,GAAG;AAAA,IAAA,CACJ;AACD,wBAAoB,CAAC,cAAc;AAAA,MACjC,GAAG;AAAA,MACH,eAAe,CAAA;AAAA,IAAC,EAChB;AAAA,EACJ;AAIA,QAAM,mBAAmB,CAAC,OAAY,IAAS,SAAc;AAC3D,UAAM,aAAkB,UAAU,IAAI,CAAC,SAAc;AACnD,UAAI,KAAK,OAAO,IAAI;AAClB,aAAK,OAAO,MAAM,OAAO;AAAA,MAC3B;AACA,aAAO;AAAA,IACT,CAAC;AACD,iBAAa,UAAU;AAAA,EACzB;AAEA,QAAM,qBAAqB,MAAM;AAC/B,wBAAoB,CAAC,kBAAkB;AAAA,MACrC,GAAG;AAAA,MACH,eAAe,CAAC,aAAa;AAAA,IAAA,EAC7B;AACF,uBAAmB,CAAA,CAAE;AACrB,qBAAiB,MAAM,iBAAiB,EAAE;AAAA,EAC5C;AAEA,QAAM,cAAY,CAACQ,WAAY;AAC7B,QAAG,iBAAiB,eAAc;AAChC,yBAAmB,EAAC,GAAG,iBAAgB,SAAQA,QAAM;AAAA,IACvD;AACA,uBAAmB,EAAC,GAAG,iBAAgB,eAAcA,QAAM;AAAA,EAC7D;AAEA,QAAM,qBAAqB,MAAM;AAC/B,gBAAY,CAAC,QAAQ;AAAA,EACvB;AAEA,YAAU,MAAM;AACd,QAAG,CAAC,KAAK,cAAA;AACT,QAAI,MAAM;AACR,eAAS,iCAAiC;AAAA,IAC5C;AAAA,EAEF,GAAG,CAAC,IAAI,CAAC;AAIT,6BACG,OAAA,EACC,UAAA,qBAAC,UAAO,MAAY,SAAkB,WAAU,SAC9C,UAAA;AAAA,IAAA,qBAAC,aAAA,EAAY,WAAU,eACrB,UAAA;AAAA,MAAA,oBAAC,KAAA,EAAI,WAAU,gBACb,UAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,IAAI,GAAG,WAAU,oBACpC,UAAAR,OAAA,CACH,GACF;AAAA,MACA,oBAAC,cAAW,eAAa,MAAC,SAAS,SACjC,UAAA,oBAACK,SAAU,EAAA,CACb;AAAA,IAAA,GACF;AAAA,wBAEC,SAAA,EAAQ;AAAA,IAET,qBAAC,eAAA,EAAc,WAAU,kBACvB,UAAA;AAAA,MAAA,qBAAC,KAAA,EAAI,GAAG,GAAG,SAAS,QAAQ,YAAY,UAAU,gBAAgB,iBACvD,UAAA;AAAA,QAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,WAAU,eAAc,UAAA,aAEzD;AAAA,QACI;AAAA,UAAC;AAAA,UAAA;AAAA,YACF,SAAS,oBAAC,KAAA,EAAI,IAAI,KAAK,IAAI,KAAK,UAAA,oBAAC,QAAA,EAAQ,SAAS,qDAAkB,eAAe,UAAU,oBAAoB,GAAE;AAAA,YACnH,OACC,oBAAC,YAAA,EAAW,MAAK,MAAK,WAAU,eAAc,UAAA,kBAAA,CAAe;AAAA,UAAA;AAAA,QAAA;AAAA,MAEhE,GACD;AAAA,MAGC,gBACC,oBAAA,UAAA,EAEA,UAAA,oBAAC,OAAI,IAAI,GAAG,WAAU,UAEpB,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACD,SAAS;AAAA,UACT,UAAQ;AAAA,UACR,OAAO,mDAAiB;AAAA,UACxB,UAAU,CAAC,MAAK,YAAY,EAAE,OAAO,KAAK;AAAA,UAC1C,aACE,mBAAmB,gBAAgB,SAC/B,KACA;AAAA,UAEN,iBAAiB,CAAA,QAAK,iBAAiB,GAAG;AAAA,QAAA;AAAA,MAAA,GAE5C,EAAA,CACA;AAAA,MAGD,6CACE,OAAA,EAAI,WAAY,oBACf,UAAA,qBAACqE,aAAA,EAAU,WAAU,2BACnB,UAAA;AAAA,QAAA,oBAAC,kBAAA,EAAiB,YAAY,oBAAC,gBAAA,CAAA,CAAe,GAC5C,UAAA,oBAAC,YAAA,EAAW,gCAAkB,EAAA,CAChC;AAAA,QACA,oBAAC,kBAAA,EAAiB,WAAU,0BAC1B,UAAA,oBAAC,MAAA,EAAK,WAAU,kBACb,UAAA,SACC,MAAM,IAAI,CAAC,SAAc;AACvB,gBAAM,YACJ,uCAAW,UAAS,MACpB,uCAAW,OAAO,CAAC,SAAc,KAAK,OAAO,KAAK;AACpD,iBACE,qBAAC,UAAA,EAAS,YAAW,cACnB,UAAA;AAAA,YAAA,oBAAC,gBAAA,EACC,8BAAC,QAAA,EAAO,MAAM,IAAI,KAAI,UAAS,MAAI,KAAA,CAAC,EAAA,CACtC;AAAA,YACA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,SAAS,KAAK;AAAA,gBACd,WACE;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,SAAQ;AAAA,oBACR,WAAU;AAAA,oBAET,UAAA,KAAK;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACR;AAAA,YAAA;AAAA,YAGH,KAAK,QAAQ,UACZ,oBAAC,KAAA,EAAE,WAAU,oBAAoB,UAAA,KAAK,KAAA,CAAK,IAE3C,oBAAC,OAAA,EACC,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,QACE,qCAAU,UAAS,IAAI,SAAS,CAAC,EAAE,OAAO;AAAA,gBAE5C,UAAU,CAAC,MACT,iBAAiB,GAAG,KAAK,EAAQ;AAAA,gBAEnC,SAAQ;AAAA,gBAEP,UAAA,cAAc,IAAI,CAAC,SAClB;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,OAAO;AAAA,oBAEN,UAAA;AAAA,kBAAA;AAAA,gBAAA,CAEJ;AAAA,cAAA;AAAA,YAAA,EACH,CACF;AAAA,UAAA,GAEJ;AAAA,QAEJ,CAAC,GACL,EAAA,CACF;AAAA,MAAA,EAAA,CACF,EAAA,CACF;AAAA,MAGF,qBAAC,OAAA,EAAI,WAAU,YACb,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAAS;AAAA,YACT,UAAU;AAAA,UAAA;AAAA,QAAA;AAAA,QAEZ,oBAAC,OAAA,EAAI,WAAU,iBAAgB,UAAA,iBAAA,CAAc;AAAA,MAAA,EAAA,CAC/C;AAAA,IAAA,GACF;AAAA,wBAEC,SAAA,EAAQ;AAAA,IAET,qBAAC,eAAA,EAAc,WAAU,kBACvB,UAAA;AAAA,MAAA,oBAAC,UAAO,WAAU,cAAa,SAAQ,QAAO,SAAS,SAAS,UAAA,SAAA,CAEhE;AAAA,0BACC,QAAA,EAAO,WAAU,eAAc,SAAS,mBAAmB,UAAA,iBAAA,CAE5D;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;ACjUO,MAAM,YAAY;AAAA,EACvB;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,EAAA;AAEV;ACaA,MAAM,WAAW,CAAC,KAAc,cAAsB;AACpD,QAAM,eAAe,CAAC,GAAG,GAAG;AAC5B,MAAI,aAAa,UAAU,EAAG;AAE9B,QAAM,QAAQ,aAAa,UAAU,CAAC,SAAS,KAAK,QAAQ,SAAS;AAErE,MAAI,UAAU,EAAG;AAEjB,QAAM,iBAAiB,aAAa,OAAO,OAAO,CAAC,EAAE,CAAC;AACtD,eAAa,OAAO,QAAQ,GAAG,GAAG,cAAc;AAChD,SAAO;AACT;AAEA,MAAM,YAAY,CAAC,KAAc,cAAsB;AACrD,QAAM,eAAe,CAAC,GAAG,GAAG;AAC5B,MAAI,aAAa,UAAU,EAAG;AAE9B,QAAM,QAAQ,aAAa,UAAU,CAAC,SAAS,KAAK,QAAQ,SAAS;AAErE,MAAI,UAAU,aAAa,SAAS,EAAG;AAEvC,QAAM,iBAAiB,aAAa,OAAO,OAAO,CAAC,EAAE,CAAC;AACtD,eAAa,OAAO,QAAQ,GAAG,GAAG,cAAc;AAChD,SAAO;AACT;AAEA,MAAM,aAAa,CAAC,KAAc,cAAsB;AACtD,QAAM,eAAe,CAAC,GAAG,GAAG;AAC5B,MAAI,aAAa,UAAU,EAAG;AAE9B,QAAM,QAAQ,aAAa,UAAU,CAAC,SAAS,KAAK,QAAQ,SAAS;AAErE,eAAa,OAAO,OAAO,CAAC;AAC5B,SAAO;AACT;AAEA,MAAM,aAAa,CAAC;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAmB;;AAEjB,QAAM,CAAC,qBAAqB,sBAAsB,IAAI,SAAS,KAAK;AACpE,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAAS,KAAK;AAC9D,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAS,KAAK;AACxD,QAAM,CAAC,cAAc,eAAe,IAAI,SAAc,CAAA,CAAE;AACxD,QAAM,CAAC,mBAAmB,oBAAoB,IAAI,SAAc,CAAA,CAAE;AAClE,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAc,CAAA,CAAE;AAC5D,QAAM,sBAAsB,YAAY,CAAC,UAAe,KAAK;AAC7D,QAAM,CAAC,oBAAoB,qBAAqB,IAAI;AAAA,MAClD,gEAAqB,cAArB,mBAAgC,uBAAsB,CAAA;AAAA,EAAC;AAIzD,QAAM,cAAc,eAAA;AACpB,QAAM,WAAW,YAAA;AACjB,QAAM,EAAC,gBAAA,IAAiB,SAAA;AAExB,YAAU,MAAM;AACd,aAAS,mBAAmB,kBAAkB,CAAC;AAAA,EACjD,GAAG,CAAC,UAAU,gBAAgB,kBAAkB,CAAC;AAEjD,YAAU,MAAI;AAEb,QAAG,MAAK;AACP,wBAAkB,CAAC,GAAG,gBAAe;AAAA,QACjC,MAAK;AAAA,UACH,GAAG;AAAA,UACH,OAAM,6BAAM;AAAA,QAAA;AAAA,QAEf,UAAU;AAAA,QACV,YAAW,6BAAM;AAAA,MAAA,CACnB,CAAC;AAAA,IACH;AAAA,EAED,GAAE,CAAC,IAAI,CAAC;AAGR,QAAM,sBAAsB,MAAM;AAChC,YAAA;AACA,2BAAuB,IAAI;AAAA,EAC7B;AAEA,QAAM,uBAAuB,MAAM;AACjC,2BAAuB,KAAK;AAAA,EAC9B;AAEA,QAAM,cAAc,CAAC,aAAkB;AACrC,aAAS,QAAQ;AACjB,gBAAY,UAAU,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ;;AAC7C,WAAI,YAAAtD,MAAA,2BAAK,YAAL,gBAAAA,IAAc,SAAd,mBAAoB,UAApB,mBAA2B,QAAQ;AACrC,kBAAS,sCAAK,YAAL,mBAAc,SAAd,mBAAoB,KAAK;AAAA,MACpC;AACA,0BAAoB,KAAK;AAAA,IAC3B,CAAC;AAAA,EACH;AAEA,QAAM,kBAAkB,CAACqD,UAAc;;AACrC,UAAM,cAAc,eAAe;AAAA,MACjC,CAAC,SAAA;;AAAc,iBAAArD,MAAA,KAAK,SAAL,gBAAAA,IAAW,YAAUqD,+BAAM;AAAA;AAAA,IAAA;AAE5C,QAAI,aAAa;AACf,2BAAqB;AAAA,QACnB,UAAU,YAAY;AAAA,QACtB,eAAe,YAAY;AAAA,MAAA,CAE5B;AAAA,IACH,OAAO;AACL,2BAAqB;AAAA,QACnB,YAAUA,MAAAA,+BAAM,kBAANA,gBAAAA,IAAqB,UAAO;AAAA,QACtC,GAAGA;AAAAA,MAAA,CACJ;AAAA,IACH;AACA,wBAAoB,IAAI;AACxB,wBAAoB,IAAI;AAAA,EAC1B;AAEA,QAAM,sBAAsB,CAACA,UAAc;AACzC,UAAM,cAAc,CAAC,UACnB,MAAM,KAAK,CAAC,SAAS,KAAK,SAAS,KAAK;AAC1C,UAAM,EAAE,gBAAgB,IAAA,IAAQ,iBAAA;AAChC,QAAI,WAAWA,MAAK;AAEpB,QAAI,YAAY,QAAQ,GAAG;AACzB,UAAI,UAAU;AACd,aAAO,YAAY,GAAGA,MAAK,IAAI,IAAI,OAAO,EAAE,GAAG;AAC7C;AAAA,MACF;AACA,iBAAW,GAAGA,MAAK,IAAI,IAAI,OAAO;AAAA,IACpC;AACA,UAAM,cAAc;AAAA,MAClB,GAAG;AAAA,MACH,EAAE,GAAGA,OAAM,MAAM,UAAU,KAAK,MAAMA,MAAK,MAAM,UAAU,MAAA;AAAA,IAAM;AAGnE,aAAS,WAAW;AACpB,oBAAgB,IAAI;AAAA,EACtB;AAEA,QAAM,aAAa,CAAC,YAAmB;AACrC,UAAM,eAAe,MAAM,IAAI,CAACA,UAAS;AACvC,UAAIA,MAAK,QAAQ,QAAQ,KAAK;AAC5B,eAAO;AAAA,UACL,GAAGA;AAAAA,UACH,MAAM,QAAQ;AAAA,QAAA;AAAA,MAElB;AACA,aAAOA;AAAAA,IACT,CAAC;AAED,aAAS,YAAY;AACrB,oBAAgB,IAAI;AAAA,EAkBtB;AAeA,QAAM,iBAAiB,CAAC,cAAmB;AACzC,UAAM,eAAe,SAAS,OAAO,uCAAW,GAAG;AACnD,QAAI,uBAAuB,YAAY;AAAA,EACzC;AAEA,QAAM,kBAAkB,CAAC,cAAmB;AAC1C,UAAM,eAAe,UAAU,OAAO,uCAAW,GAAG;AACpD,QAAI,uBAAuB,YAAY;AAAA,EACzC;AAEA,QAAM,mBAAmB,CAAC,cAAmB;AAC3C,qBAAiB,IAAI;AACrB,oBAAgB,SAAS;AAAA,EAC3B;AAEA,QAAM,sBAAsB,MAAM;AAYhC,UAAM,eAAe,WAAW,OAAO,6CAAc,GAAG;AACxD,6BAAA;AACA,oBAAgB,CAAA,CAAE;AAClB,qBAAiB,KAAK;AACtB,QAAI,cAAc;AAChB,qBAAe,aAAa,CAAC,CAAC;AAC9B,eAAS,YAAY;AACrB,uBAAiB,YAAY;AAAA,IAC/B,OAAO;AACL,uBAAiB,CAAA,CAAE;AACnB,eAAS,CAAA,CAAE;AAAA,IACb;AAAA,EACF;AAEA,QAAM,2BAA2B,MAAM;AACrC,UAAM,4BAA4B,mBAAmB;AAAA,MACnD,CAAC,SAAc,KAAK,WAAU,6BAAM;AAAA,IAAA;AAEtC,0BAAsB,yBAAyB;AAAA,EACjD;AAEA,QAAM,mBAAmB,CAAC,kBAAuB;AAE/C,QAAI,cAAqB,CAAA;AACzB,UAAM,eAAe,eAAe;AAAA,MAClC,CAAC,SAAc,KAAK,KAAK,WAAU,6BAAM;AAAA,IAAA;AAG3C,QAAI,cAAc;AAChB,oBAAc,eAAe,IAAI,CAAC,SAAc;AAC9C,YAAI,KAAK,KAAK,WAAU,6BAAM,MAAK;AACjC,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,UAAU,cAAc;AAAA,YACxB,YAAY,cAAc;AAAA,UAAA;AAAA,QAE9B;AACA,eAAO;AAAA,MACT,CAAC;AAAA,IACH,OAAO;AACL,oBAAc;AAAA,QACZ,GAAG;AAAA,QACH;AAAA,UACE;AAAA,UACA,UAAU,cAAc;AAAA,UACxB,YAAY,cAAc;AAAA,UAC1B,WAAW;AAAA,UACX,OAAO;AAAA,QAAA;AAAA,MACT;AAAA,IAEJ;AACA,sBAAkB,WAAW;AAC7B,gBAAY,EAAE,GAAG,eAAe,MAAY,UAAU;AAAA,EACxD;AAEA,QAAM,uBAAuB,MAAM;AACjC,UAAM,QAAQ,mBAAmB;AAAA,MAC/B,CAAC,SAAc,KAAK,WAAU,6BAAM;AAAA,IAAA;AAGtC,QAAI,UAAU,IAAI;AAChB,4BAAsB,CAAC,aAAkB;AACvC,cAAM,cAAc,CAAC,GAAG,QAAQ;AAChC,oBAAY,KAAK,IAAI,EAAE,GAAG,YAAY,KAAK,GAAG,OAAO,6BAAM,KAAA;AAC3D,eAAO;AAAA,MACT,CAAC;AAAA,IACH,OAAO;AACL,4BAAsB,CAAC,aAAkB,CAAC,GAAG,UAAU,IAAI,CAAC;AAAA,IAC9D;AAAA,EACF;AAEA,QAAM,UAAU;AAAA,IACd;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,UAAU,QAAQ,6BAAM,QAAQ;AAAA,IAAA;AAAA,IAElC;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,IAAA;AAAA,IAER;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,UAAU,QAAQ,6BAAM,QAAQ;AAAA,IAAA;AAAA,IAElC;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,UAAU,QAAQ,6BAAM,QAAQ;AAAA,IAAA;AAAA,IAElC;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,WAAW,+BAAO,WAAU,KAAM,QAAQ,6BAAM,QAAQ;AAAA,IAAA;AAAA,IAE1D;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,WAAW,+BAAO,WAAU,KAAM,QAAQ,6BAAM,QAAQ;AAAA,IAAA;AAAA,EAC1D;AAGF,QAAM,eAAe,CAAC,SAAc;AAClC,SAAK,IAAI;AACT,YAAA;AAAA,EACF;AAEA,SACE,qBAAA,UAAA,EACE,UAAA;AAAA,IAAA,qBAAC,QAAK,MAAM,QAAQ,IAAI,GAAG,UAAU,MAAM,SACxC,UAAA;AAAA,MAAA,mCAAS,IAAI,CAAC,WACb;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,SAAS,MAAM,aAAa,OAAO,IAAI;AAAA,UACvC,UAAU,QAAQ,iCAAQ,QAAQ;AAAA,UAElC,8BAAC,YAAA,EAAW,OAAM,wBAAuB,MAAK,MAC3C,2CAAQ,MAAA,CACX;AAAA,QAAA;AAAA,QANK,iCAAQ;AAAA,MAAA;AAAA,MASjB,oBAAC,WAAQ,IAAI,EAAE,IAAI,kBAAkB,IAAI,mBAAiB,CAAE;AAAA,MAC5D;AAAA,QAAC;AAAA,QAAA;AAAA,UAAS,SAAS,MAAM,aAAa,gBAAgB;AAAA,UAAG,UAAU,QAAQ,6BAAM,QAAQ;AAAA,UACvF,IAAI;AAAA,YACF,WAAW;AAAA,cACT,iBAAiB;AAAA,YAAA;AAAA,UACnB;AAAA,UAGF,8BAAC,YAAA,EAAW,OAAM,mBAAkB,MAAK,MAAK,UAAA,SAAA,CAE9C;AAAA,QAAA;AAAA,MAAA;AAAA,IACF,GACF;AAAA,IAEA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA,SAAS;AAAA,QACT,cAAc;AAAA,MAAA;AAAA,IAAA;AAAA,IAGhB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,SAAS,MAAM,iBAAiB,KAAK;AAAA,QACrC,WAAW;AAAA,QACX,OAAM;AAAA,QACN,aAAY;AAAA,MAAA;AAAA,IAAA;AAAA,IAEd;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,SAAS,MAAM,oBAAoB,KAAK;AAAA,QACxC,OAAO,cAAc,6BAAM,IAAI;AAAA,QAC/B,OAAO;AAAA,QACP,cAAc;AAAA,QACd,OAAO;AAAA,QACP,UAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACZ,GACF;AAEJ;AC9XA,MAAM,aAAa,OAAO,IAAI,EAAE,OAAO;AAAA,EACtC,WAAW;AAAA,EAEX,sBAAsB;AAAA,IACrB,QAAQ;AAAA,EAAA;AAAA,EAET,4BAA4B;AAAA,IAC3B,KAAK;AAAA,EAAA;AAEP,EAAE;AAEF,MAAM,YAAY,OAAOE,GAAM,EAAE,CAAC,EAAE,OAAO,EAAE,QAAA,QAAU;;AAAO;AAAA,IAC7D,WAAW;AAAA,IACX,eAAe;AAAA,IACf,SAAS;AAAA,IACT,UAAU;AAAA,IACV,cAAc;AAAA,IACd,kBAAkB;AAAA,MACjB,aAAY,aAAQ,UAAR,mBAAe,QAAQ;AAAA,MACnC,QAAO,aAAQ,UAAR,mBAAe,QAAQ;AAAA,MAC9B,WAAW,cAAa,aAAQ,UAAR,mBAAe,QAAQ,IAAI;AAAA,IAAA;AAAA,IAEpD,uBAAuB;AAAA,MACtB,SAAS;AAAA,IAAA;AAAA,IAEV,WAAW;AAAA,MACV,aAAY,aAAQ,UAAR,mBAAe,QAAQ;AAAA,IAAG;AAAA,EAExC;AAAA,CAAE;AAEF,MAAM,QAAQ;AAaP,MAAM,gBAAgB,CAAC;AAAA;AAAA,EAE7B;AAAA;AAED,MAAsB;AACrB,QAAM,EAAE,OAAO,UAAU,eAAe,YAAY,WAAU,cAAc,UAAU,kBAAkB,aAAa,WAAU,YAAAC,aAAW,cAAa,iBAAiB,gBAAA,IAAmB,SAAA;AAC3L,QAAM,aAAa,CAAC,UAAU,aAAa,KAAK;AAChD,QAAM,CAAC,mBAAmB,oBAAoB,IAC7C,SAA6B,IAAI;AAClC,QAAM,CAAC,MAAM,OAAO,IAAI,SAAA;AAExB,QAAM,CAAC,oBAAoB,qBAAqB,IAC/C,SAA6B,IAAI;AAElC,QAAM,mBAAmB,CAAC1E,IAAyB,aAAqB;AACvE,UAAM,KAAK,MAAM,KAAK,CAAC,OAAM,uBAAG,QAAO,QAAQ;AAC/C,kBAAc,EAAE;AAAA,EACjB;AAEA,QAAM,wBAAwB,CAC7B,OACA,gBACI;AACJ,UAAM,gBAAA;AACN,YAAQ,WAAW;AACnB,yBAAqB,MAAM,aAAa;AAAA,EACzC;AACA,QAAM,yBAAyB,MAAM,qBAAqB,IAAI;AAE9D,QAAM,yBAAyB,CAC9B,UACI;AACJ,UAAM,gBAAA;AACN,0BAAsB,MAAM,aAAa;AAAA,EAC1C;AACA,QAAM,0BAA0B,MAAM,sBAAsB,IAAI;AAEhE,QAAM,2BAA2B,CAAC,QAAgB;AACjD,kBAAc,GAAG;AACjB,4BAAA;AAAA,EACD;AAEA,QAAM,gBAAgB,CAAC,YAAmB;AACzC,UAAM,QAAQ;AAAA,MACb,GAAG;AAAA,MACH,GAAG;AAAA,MACH,MAAM,QAAQ;AAAA,MACd,iBAAiB,iBAAiB;AAAA,MAClC,cAAc,EAAE,KAAK,iBAAiB,SAAS;AAAA,MAC/C,KAAK,MAAM,SAAS;AAAA,MACpB,aAAY;AAAA,MACZ,OAAM,CAAC;AAAA,QACN,OAAM;AAAA,QACN,UAAS;AAAA,MAAA,CACT;AAAA,IAAA;AAEF,UAAM,eAAoB;AAAA,MACzB,GAAG;AAAA,MACH,GAAG,CAAC,KAAK;AAAA,IAAA;AAEV,kBAAc,EAAC,GAAG,OAAM;AACxB,aAAS,CAAC,GAAG,YAAY,CAAC;AAC1B,oBAAgB,IAAI;AAAA,EAErB;AAEA,QAAM,2BAAyB,CAAC2E,WAAc;AAE7C,IAAAD,YAAWC,MAAK;AAAA,EACjB;AAGA,QAAM,wBAAuB,YAAY,YAAa;;AACrD,QAAG,cAAa;AACf,YAAM,MAAI,MAAM,gBAAA;AAChB,UAAG,IAAI,gBAAc,KAAI;AACxB,kBAAS,gCAAK,SAAL,mBAAW,KAAK;AACzB,qBAAa,KAAK;AAAA,MACnB;AAAA,IAAC;AACF,eAAW,MAAI;AACd,sBAAgB,KAAK;AAAA,IAEtB,GAAE,GAAI;AAAA,EAEP,GAAE,CAAC,YAAY,CAAC;AAEhB,YAAU,MAAI;AACb,0BAAA;AAAA,EAED,GAAE,CAAC,qBAAqB,CAAC;AAEzB,SACC,qBAAC,OAAI,SAAQ,QAAO,KAAK,GAAG,YAAY,UAAU,WAAU,4BAC3D,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,SAAS;AAAA,QACT,WAAU;AAAA,QACV,IAAI,EAAE,SAAS,QAAQ,SAAS,WAAW,MAAM,EAAA;AAAA,QACjD,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cAEA,SAAS;AAAA,cACT,UAAU;AAAA,cACV,UAAA,oBAAC,UAAA,EAAS,UAAS,QAAA,CAAQ;AAAA,YAAA;AAAA,UAAA;AAAA,UAE5B;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,OAAO,yCAAY;AAAA,cACnB,SAAQ;AAAA,cACR,UAAU;AAAA,cACV,cAAW;AAAA,cACV,UAAA,+BAAO,IAAI,CAACJ,UACZ;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACA,cAAa;AAAA,kBACb,eAAa;AAAA,kBAEb,MACC;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACA,MAAK;AAAA,sBACL,MAAK;AAAA,sBACL,SAAS,CAAC,MAAM,sBAAsB,GAAGA,KAAI;AAAA,sBAC7C,UAAU;AAAA,sBACV,UAAA,oBAACK,uBAAA,EAAkB,UAAS,SAAQ,QAAO,yCAAY,UAAQL,+BAAM,OAAM,YAAY,OAAA,CAAU;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAGnG,OACC;AAAA,oBAACnC;AAAAA,oBAAA;AAAA,sBACA,OAAO,QAAQmC,MAAK,IAAI,qBAAoBA,+BAAM,YAAW,WAAWA,+BAAM,KAAK,IAAI,KAAK;AAAA,sBAE5F,WAAU;AAAA,sBACV,OAAK;AAAA,sBACJ,UAAA,qBAAC,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAI,EAAA,GACpD,UAAA;AAAA,yBAAAA,+BAAM,aAAY,oBAAC,OAAA,EAAM,IAAI,EAAC,UAAS,QAAO,OAAM,UAAA,EAAS,CAAE;AAAA,wBAChE,oBAAC,QAAA,EAAM,UAAAA,MAAK,KAAA,CAAK;AAAA,sBAAA,EAAA,CAClB;AAAA,oBAAA;AAAA,oBANIA,MAAK;AAAA,kBAAA;AAAA,kBASZ,OAAOA,+BAAM;AAAA,gBAAA;AAAA,gBAtBRA;AAAAA,cAAA;AAAA,YAwBN;AAAA,UAAA;AAAA,UAGF;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,aAAY;AAAA,cACZ,SAAQ;AAAA,cACR,UAAQ;AAAA,cACR,IAAI;AAAA,gBACH,IAAI;AAAA,gBACJ,aAAa;AAAA,cAAA;AAAA,YACd;AAAA,UAAA;AAAA,UAED,oBAAC,KAAA,EAAI,SAAQ,QAAO,YAAY,UAC/B,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,UAAA,GAEF;AAAA,UAEA;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,MAAM;AAAA,cACN,SAAS;AAAA,cACT;AAAA,cACA;AAAA,cACA,gBAAgB;AAAA,cAChB;AAAA,cACA;AAAA,cACA,kBAAkB;AAAA,YAAA;AAAA,UAAA;AAAA,UAGnB;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,MAAM,QAAQ,kBAAkB;AAAA,cAChC,UAAU;AAAA,cACV,SAAS;AAAA,cACR,UAAA,+BAAO,IAAI,CAACA,UACZ;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACA,UAAUA,MAAK,SAAQ,yCAAY;AAAA,kBAEnC,SAAS,MAAM,yBAAyBA,KAAI;AAAA,kBAC5C,UAAA,oBAAC,cAAW,OAAM,wBAAuB,MAAK,MAC5C,UAAAA,MAAK,KAAA,CACP;AAAA,gBAAA;AAAA,gBAJKA,MAAK;AAAA,cAAA;AAAA,YAMX;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA;AAAA,IAED,oBAAC,KAAA,EAAI,SAAQ,QAAO,YAAY,UAC/B,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,SAAS,MAAM,UAAA;AAAA,QAEf,SACC,WAAW,oBAAC,kBAAA,EAAiB,MAAM,IAAI,OAAM,UAAA,CAAU,IAAK,oBAACM,QAAA,EAAK,UAAS,QAAA,CAAO;AAAA,QAEnF,UAAU,CAAC,aAAa;AAAA,QAAU,UAAA;AAAA,MAAA;AAAA,IAAA,EAEnC,CACD;AAAA,EAAA,GACD;AAEF;ACnPA,MAAM,SAAS5D,eAAM,KAAK,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,wBAAwB;AAAA,EACxB,eAAe;AACjB,MAAe;AACZ,QAAM,CAAC,cAAc,eAAe,IAAI;AAAA,IACvC,OAAO,aAAa,QAAQ,iBAAiB,MAAM;AAAA,EAAA;AAGrD,YAAU,MAAM;AACd,UAAM,sBAAsB,MAAM;AAChC,sBAAgB,OAAO,aAAa,QAAQ,iBAAiB,MAAM,MAAM;AAAA,IAC3E;AAEA,WAAO,iBAAiB,WAAW,mBAAmB;AAEtD,UAAM,WAAW,YAAY,qBAAqB,EAAE;AAEpD,WAAO,MAAM;AACX,aAAO,oBAAoB,WAAW,mBAAmB;AACzD,oBAAc,QAAQ;AAAA,IACxB;AAAA,EACF,GAAG,CAAA,CAAE;AAOL,SACE,qBAAC,KAAA,EAAI,WAAW,GAAG,CAAC,eAAa,4BAA0B,mBAAmB,IAAI,IAAI,EAAC,gBAAgB,cAAa,kBAAiB,cAGhI,UAAA;AAAA,IAAA,QAAQ,WAAW,KAAK;AAAA,MAAC;AAAA,MAAA;AAAA,QACxB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IAAA;AAAA,IAEJ,oBAAC,OACE,UAAA,yBACC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,YAAY;AAAA,MAAA;AAAA,IAAA,EACd,CAEJ;AAAA,EAAA,GACF;AAEJ,CAAC;AC3ED,MAAM,aAAa,CAAC,UAA2B;AAC7C,QAAM,EAAE,gBAAgB,UAAU,eAAA,IAAmB;AACrD,SACE,qBAAC,OAAA,EAAI,WAAU,sBAAsB,GAAG,gBACtC,UAAA;AAAA,IAAA,oBAAC,YAAA,EAAW,MAAM,eAAA,CAAgB;AAAA,IAClC,oBAAC,SAAK,SAAA,CAAS;AAAA,EAAA,GACjB;AAEJ;ACvBA,MAAM,SAAS,MAAM;AACnB,SACE,oBAAC,OAAA,EAAI,WAAU,yBAAwB,OAAM,KAC3C,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,IAAG;AAAA,MACH,OAAM;AAAA,MACN,GAAE;AAAA,MACF,GAAE;AAAA,MACF,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,kBAAiB;AAAA,MAEjB,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,GAAE;AAAA,UAAA;AAAA,QAAA;AAAA,QAIJ;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,GAAE;AAAA,YAGF,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,eAAc;AAAA,gBACd,eAAc;AAAA,gBACd,MAAK;AAAA,gBACL,MAAK;AAAA,gBACL,IAAG;AAAA,gBACH,KAAI;AAAA,gBACJ,aAAY;AAAA,cAAA;AAAA,YAAA;AAAA,UACd;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ;ACxBO,MAAM,aAAa,CAAC,UAAuB;AAChD,QAAM,UAAU,MAAM,OAAO,OAAO,gBAAgB,gBAAgB;AAEpE,SACE,oBAAC,QAAK,IAAI,MAAM,OAAO,MACrB,UAAA,qBAAC+C,OAAA,EAAI,WAAU,yBACb,UAAA;AAAA,IAAA;AAAA,MAACA;AAAAA,MAAA;AAAA,QACC,WAAW,cAAc,OAAO;AAAA,QAChC,OAAO,EAAE,YAAY,MAAM,OAAO,GAAA;AAAA,QAElC,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO,MAAM,OAAO;AAAA,YACpB,KAAK,GAAG,MAAM,OAAO,KAAK;AAAA,UAAA;AAAA,QAAA;AAAA,MAC5B;AAAA,IAAA;AAAA,IAEF,oBAAC,cAAW,MAAK,MAAK,WAAU,gBAC7B,UAAA,MAAM,OAAO,MAAA,CAChB;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;ACnCA,MAAM,kBAAkB,OAAOc,QAAM,EAAE,CAAC,EAAE,aAAa;AAAA,EACrD,SAAS;AAAA,EACT,sBAAsB;AAAA,IACpB,cAAc,KAAK;AAAA,IACnB,uBAAuB;AAAA,MACrB,SAAS;AAAA,MACT,UAAU;AAAA,MACV,KAAK;AAAA,MACL,WAAW;AAAA,MACX,OAAO;AAAA,MACP,QAAQ;AAAA,IAAA;AAAA,IAEV,aAAa;AAAA,MACX,iBAAiB,+HAA+H;AAAA,QAC9I,MAAM,QAAQ,gBAAgB,MAAM,QAAQ,QAAQ,IAAI;AAAA,MAAA,CACzD;AAAA,MACD,MAAM;AAAA,IAAA;AAAA,IAER,YAAY;AAAA,MACV,iBAAiB,+HAA+H;AAAA,QAC9I,MAAM,QAAQ,gBAAgB,MAAM,QAAQ,QAAQ,IAAI;AAAA,MAAA,CACzD;AAAA,MACD,OAAO;AAAA,IAAA;AAAA,EACT;AAAA,EAEF,sBAAsB;AAAA,IACpB,WAAW;AAAA,IACX,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA;AAAA,EAAA;AAAA,EAGV,kBAAkB;AAAA,IAChB,OAAO,GAAG,MAAM,QAAQ,MAAM,QAAQ,GAAG,CAAC;AAAA,EAAA;AAAA,EAE5C,mCAAmC;AAAA,IACjC,iBAAiB,GAAG,MAAM,QAAQ,MAAM,QAAQ,GAAG,CAAC;AAAA,EAAA;AAExD,EAAE;","x_google_ignoreList":[38]}
1
+ {"version":3,"file":"android-12-switch-BUbQYnRQ.esm.js","sources":["../../src/components/accordion/accordion.tsx","../../src/components/view-modal/view-modal.tsx","../../src/components/header-card/header-card.tsx","../../src/components/toggle/toggle.tsx","../../src/components/filter/components/combinator-select.tsx","../../src/components/filter/components/remove-action.tsx","../../src/components/filter/components/field-select.tsx","../../src/components/filter/components/add-filter.tsx","../../src/components/filter/components/add-group.tsx","../../src/components/date-picker/date-picker.tsx","../../src/components/checkbox/checkbox.tsx","../../src/components/form-control/form-builder/form-builder-element/chip-or-placeholder.tsx","../../src/components/radio/radio.tsx","../../src/components/form-control/form-builder/form-builder-element/radio-button.tsx","../../src/components/parties-modal/utils/constant.ts","../../src/components/parties-modal/validator.tsx","../../src/hooks/useSetDefaultConfig.tsx","../../src/components/form-control/form-builder/form-builder-element/dynamic-select.tsx","../../src/components/phone-input/phone-input.tsx","../../src/components/form-control/form-builder/form-builder-element/phone.tsx","../../src/components/date-time-picker/date-time-picker.tsx","../../src/components/upload-media/upload-media.tsx","../../src/components/material-table/components/inline-edit-fields.tsx","../../src/components/material-table/material-table.tsx","../../src/components/loaders/modal-loader.tsx","../../src/components/parties-modal/parties-modal.tsx","../../src/components/form-control/form-builder/form-builder-element/select.tsx","../../src/components/form-control/form-builder/form-builder-element/button.tsx","../../src/components/form-control/form-builder/form-builder-element/checkbox.tsx","../../src/components/form-control/form-builder/form-builder-element/date.tsx","../../src/components/form-control/form-builder/form-builder-element/dynamic-currency-input.tsx","../../src/components/form-control/form-builder/form-builder-element/dynamic-element-hoc.tsx","../../src/components/form-control/form-builder/form-builder-element/dynamic-input-select.tsx","../../src/components/form-control/form-builder/form-builder-element/dynamic-tags-input.tsx","../../src/components/info-card/info-card.tsx","../../src/components/form-control/form-builder/form-builder-element/info.tsx","../../src/components/form-control/form-builder/form-builder-element/media.tsx","../../src/components/form-control/form-builder/form-builder-element/section.tsx","../../node_modules/flatted/esm/index.js","../../src/components/form-control/form-builder/form-builder-element/table.tsx","../../src/components/time-picker/time-picker.tsx","../../src/components/form-control/form-builder/form-builder-element/time.tsx","../../src/components/toggle-switch/toggle-switch.tsx","../../src/components/form-control/form-builder/form-builder-element/toggle-button.tsx","../../src/components/tabs/tabs.tsx","../../src/components/alert/alert.tsx","../../src/components/chip-generator/chip-generator.tsx","../../src/components/location-select.tsx","../../src/components/form-control/form-parser/form-switcher.tsx","../../src/components/form-control/form-parser/form-section.tsx","../../src/components/form-control/form-parser/form-parser.tsx","../../src/components/team-add-modal.tsx","../../src/components/department-add-modal.tsx","../../src/components/form-control/form-builder/form-builder-element/location-add-modal/location-add-modal.tsx","../../src/components/designation-add-modal.tsx","../../src/components/form-control/form-builder/form-builder-element/fixed-asset-item-add-modal/fixed-asset-item-add-modal.tsx","../../src/components/brand-add-modal.tsx","../../src/components/category-add-modal.tsx","../../src/components/industry-add-modal.tsx","../../src/components/source-type-add-modal/source-type-add-modal.tsx","../../src/components/journal-type-add-modal.tsx","../../src/components/form-control/form-builder/form-builder-element/select-configuration.tsx","../../src/components/searchable-select.tsx","../../src/components/filter/components/value-editor.tsx","../../src/components/filter/components/operator-select.tsx","../../src/components/filter/components/delete-group.tsx","../../src/components/save-filter-modal/save-filter-modal.tsx","../../src/components/filter/filter.tsx","../../src/components/dropdown-button/dropdown-button.tsx","../../src/components/title-dropdown-button/title-dropdown-button.tsx","../../src/components/upload-excel/upload-excel.tsx","../../src/components/action-bar/action-bar.tsx","../../src/components/bread-crumb/bread-crumb.tsx","../../src/components/color-picker-input/color-picker-input.tsx","../../src/components/fallback/fallback.tsx","../../src/components/pagination/pagination.tsx","../../src/components/page-navigator/components/add-page-modal.tsx","../../src/components/page-navigator/components/shared-page-view.tsx","../../src/components/page-navigator/components/shared-page-modal.tsx","../../src/components/page-navigator/components/add-page.tsx","../../src/components/share-modal/share-modal.tsx","../../src/views/beforeAuth/components/share-modal-data/share-modal-data.ts","../../src/components/page-navigator/components/page-action.tsx","../../src/components/page-navigator/page-navigator.tsx","../../src/components/footer/footer.tsx","../../src/components/form-header/form-header.tsx","../../src/components/loader.tsx","../../src/components/module-button/module-button.tsx","../../src/components/switches/android-12-switch.tsx"],"sourcesContent":["import {\r\n AccordionDetails,\r\n Accordion as MUIAccordion,\r\n AccordionSummary,\r\n styled,\r\n AccordionProps as MUIAccordionProps,\r\n} from \"@mui/material\";\r\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\r\nimport { memo } from \"react\";\r\n\r\ninterface AccordionProps {\r\n title: string | JSX.Element;\r\n children?: React.ReactNode;\r\n accordionProps?: Partial<MUIAccordionProps>\r\n}\r\nconst Accordion = memo((props: AccordionProps) => {\r\n const { title, children, accordionProps: accordianProps } = props;\r\n\r\n return (\r\n <StyledAccordion {...accordianProps} >\r\n <AccordionSummary\r\n expandIcon={<ExpandMoreIcon />}\r\n aria-controls=\"panel1-content\"\r\n id=\"panel1-header\"\r\n >\r\n {title}\r\n </AccordionSummary>\r\n <AccordionDetails>{children}</AccordionDetails>\r\n </StyledAccordion>\r\n );\r\n});\r\n\r\n\r\nconst StyledAccordion = styled(MUIAccordion)(({ theme: { palette } }) => ({\r\n color: palette.theme?.secondary[1000],\r\n fontSize: \" 0.875rem\",\r\n boxShadow: \"none\",\r\n \".MuiAccordionSummary-root\": {\r\n padding: \"0.625rem 1.5rem\",\r\n minHeight: \"0px !important\",\r\n borderBottomWidth: \"2px\",\r\n borderBottomStyle: \"solid\",\r\n borderBottomColor: palette.theme?.secondary[200],\r\n },\r\n \".MuiAccordionSummary-content\": {\r\n margin: \"0\",\r\n \"&.Mui-expanded\": {\r\n margin: \"0rem\",\r\n },\r\n \"&.MuiButtonBase-root\": {\r\n margin: \"0\",\r\n \"&.MuiAccordionSummary-content.Mui-expanded\": {\r\n margin: \"0\",\r\n },\r\n },\r\n },\r\n \".MuiAccordionDetails-root\": {\r\n padding: \"0\",\r\n },\r\n}));\r\n\r\nexport { Accordion };\r\nexport default Accordion;\r\n","import Button from \"../button/button\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport \"./view-modal.scss\";\nimport { useState } from \"react\";\nimport Modal from \"../modal/modal\";\nimport {\n DialogActions,\n DialogTitle,\n IconButton,\n MenuItem,\n Tab,\n Tabs,\n useMediaQuery,\n useTheme,\n} from \"@mui/material\";\nimport Typography from \"../typography/typography\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport logo from \"../../assets/images\";\nimport Select from \"../select/select\";\nimport viewTypes from \"../../constants/action-bar\";\n\ninterface ActionData {\n label: string;\n position: number;\n}\ninterface ModalPropsType {\n setData: React.Dispatch<React.SetStateAction<ActionData[]>>;\n data: Array<object>;\n setActive: React.Dispatch<React.SetStateAction<string>>;\n disabledViews?: string[]\n}\n\nconst ViewModal = (props: ModalPropsType) => {\n const { data, setData, setActive, disabledViews = [] } = props;\n const [openModal, setOpenModal] = useState(false);\n const [value, setValue] = useState(\"Table\");\n const [disable, setDisable] = useState(false);\n const theme = useTheme();\n const isMdUp = useMediaQuery(theme.breakpoints.up('lg'));\n const handleTabChange = (_: React.SyntheticEvent, newValue: string) => {\n setValue(newValue);\n setDisable(\n Boolean(\n data.find(\n (item: any) => item.label.toLowerCase() === newValue.toLowerCase(),\n ),\n ),\n );\n };\n\n const TabData = [\n {\n label: \"Table\",\n icon: <logo.TableIcon />,\n desc: \"Easily manage, update, and organize your tasks with Table view.\",\n image: <img src={logo.table} />,\n },\n {\n label: \"Grid\",\n icon: <logo.GridIcon />,\n desc: \"Grid of cards, use for mood boards, index cards, and recipes\",\n image: <img src={logo.grid} />,\n },\n // {\n // label: \"Kanban\",\n // icon: <logo.KanbanIcon />,\n // desc: \"Build your perfect Board and easily drag-and-drop tasks between columns.\",\n // image: <img src={logo.kanban} />,\n // },\n // {\n // label: \"Calendar\",\n // icon: <logo.CalenderIcon />,\n // desc: \"Calendar view is your place for planning, scheduling, and resource management.\",\n // image: <img src={logo.calendar} />,\n // },\n // {\n // label: \"Gantt\",\n // icon: <logo.GanttIcon />,\n // desc: \"Plan time, manage resources, visualize dependencies and more with Gantt view.\",\n // image: <img src={logo.gantt} />,\n // },\n ];\n\n const handleSubmit = () => {\n const selectedTabData = TabData.find(\n (data) => data.label.toLowerCase() === value.toLowerCase(),\n );\n if (selectedTabData?.label) {\n if (\n !data.some(\n (item: any) => item.label.toLowerCase() === value.toLowerCase(),\n )\n ) {\n setData([\n ...(data as ActionData[]),\n { label: selectedTabData.label, position: data.length },\n ]);\n\n setActive(selectedTabData?.label);\n setOpenModal(false);\n }\n }\n };\n\n return (\n <div className=\"view-modal\">\n <div className=\"view-modal--Header\">\n |\n <Button\n variant=\"text\"\n startIcon={<AddIcon />}\n sx={isMdUp ? {} : { pr:0 }}\n onClick={() => {\n setOpenModal(true);\n setDisable(\n Boolean(\n data.find(\n (item: any) =>\n item.label.toLowerCase() === value.toLowerCase(),\n ),\n ),\n );\n }}\n >\n {isMdUp ? 'View' : ''}\n </Button>\n </div>\n <Modal\n open={openModal}\n onClose={() => setOpenModal(false)}\n className=\"view-modal\"\n >\n <DialogTitle className=\"view-modal--Head\">\n <Typography type=\"s3\" weight=\"medium\" color=\"#000\">\n Add View\n </Typography>\n <IconButton onClick={() => setOpenModal(false)}>\n <CloseIcon fontSize=\"small\"/>\n </IconButton>\n </DialogTitle>\n\n <div className=\"view-modal--TabsContent\">\n <Tabs\n orientation=\"vertical\"\n value={value}\n onChange={handleTabChange}\n className=\"view-modal--Tab\"\n >\n {TabData &&\n TabData?.map((data) => (\n <Tab\n key={data.label}\n label={`${data?.label} View`}\n iconPosition=\"start\"\n icon={data?.icon}\n value={data.label}\n className=\"view-modal--Tabs\"\n disabled={Boolean(disabledViews?.includes(data.label))}\n />\n ))}\n </Tabs>\n {TabData.map((data) => (\n <div\n key={data.label}\n hidden={value !== data.label}\n className=\"view-modal--TabData\"\n >\n {data.image}\n <div className=\"view-modal--Desc\">\n <Typography type=\"s1\" color={\"theme.secondary.1000\"}>\n {data?.label} Views\n </Typography>\n <Typography type=\"s4\" color={\"theme.secondary.800\"}>\n {data.desc}\n </Typography>\n {(data?.label === viewTypes.KANBAN ||\n data?.label === viewTypes.CALENDAR) && (\n <div className=\"view-modal--BoardContainer\">\n <Typography type=\"s4\" color=\"theme.secondary.900\">\n Group Board by\n </Typography>\n <Select\n placeholder=\"Status\"\n size={\"small\"}\n defaultValue={1}\n className=\"view-modal--Select\"\n variant=\"outlined\"\n >\n <MenuItem value={1}>option 1</MenuItem>\n <MenuItem value={2}>option 2</MenuItem>\n </Select>\n </div>\n )}\n </div>\n </div>\n ))}\n </div>\n <DialogActions\n className=\"view-modal--Actions\"\n sx={{ backgroundColor: \"theme.secondary.200\" }}\n >\n <Button variant=\"text\" onClick={() => setOpenModal(false)}>\n Cancel\n </Button>\n <Button variant=\"contained\" onClick={handleSubmit} disabled={disable}>\n Add {value} View\n </Button>\n </DialogActions>\n </Modal>\n </div>\n );\n};\n\nexport { ViewModal };\nexport default ViewModal;\n","import Typography from \"../typography/typography\";\nimport \"./header-card.scss\";\nimport logo from \"../../assets/images\";\nimport viewTypes from \"../../constants/action-bar\";\nimport { useMediaQuery, useTheme } from \"@mui/material\";\n\ninterface HeaderCard {\n title: string;\n active: string;\n onClick: () => void;\n key: number;\n}\n\nconst HeaderCard = (props: HeaderCard) => {\n const { title, active, onClick, key, ...rest } = props;\n const theme = useTheme();\n const isMdUp = useMediaQuery(theme.breakpoints.up('lg'));\n\n return (\n <div\n key={key}\n className={\n active && title.includes(active)\n ? \"header-card header-card--Active\"\n : \"header-card\"\n }\n onClick={onClick}\n {...rest}\n >\n {title && title === viewTypes.TABLE ? (\n <logo.TableIcon />\n ) : title === viewTypes.GRID ? (\n <logo.GridIcon />\n ) : title === viewTypes.GANTT ? (\n <logo.GanttIcon />\n ) : title === viewTypes.CALENDAR ? (\n <logo.CalenderIcon />\n ) : title === viewTypes.KANBAN ? (\n <logo.KanbanIcon />\n ) : title === viewTypes.CHART ? (\n <logo.ChartIcon />\n ) : (\n \"\"\n )}\n {isMdUp && \n <Typography type=\"s3\" color=\"inherit\">\n {title} View\n </Typography>\n }\n </div>\n );\n};\n\nexport { HeaderCard };\nexport default HeaderCard;\n","import { Box } from \"@mui/material\";\r\nimport \"./toggle.scss\";\r\nimport { styled } from '@mui/material/styles';\r\n\r\nconst ToggleWrapper = styled(Box)(({ theme: { palette } }) => ({\r\n \"& input:checked + .slider\": {\r\n backgroundColor: palette.theme.primary[700],\r\n },\r\n \"& .slider\": {\r\n backgroundColor: palette.theme.secondary[200],\r\n \":hover\": {\r\n backgroundColor: palette.theme.secondary[300],\r\n },\r\n },\r\n \"& input\": {\r\n display: \"none\",\r\n },\r\n}));\r\n\r\ninterface IToggle {\r\n checked: boolean;\r\n onChange: () => void;\r\n}\r\n\r\nconst Toggle = (props: IToggle) => {\r\n return (\r\n <ToggleWrapper>\r\n <label className=\"switch\">\r\n <input type=\"checkbox\" {...props} />\r\n <span className=\"slider round\"></span>\r\n </label>\r\n </ToggleWrapper>\r\n );\r\n};\r\n\r\nexport { Toggle };\r\nexport default Toggle;\r\n","import { MenuItem } from \"@mui/material\";\nimport Select from \"../../select/select\";\nimport Typography from \"../../typography/typography\";\n\nconst CombinatorSelect = (props: any) => {\n const { handleOnChange, value, options, ...rest } = props;\n\n const showDropdown = props.path?.[0] === 1 || props.path?.[1] === 1;\n\n return (\n <>\n {!showDropdown ? (\n <Typography\n type=\"s4\"\n color=\"theme.secondary.1000\"\n className=\"combinator-value\"\n >\n {value}\n </Typography>\n ) : (\n <Select\n value={value}\n onChange={(e: any) => handleOnChange(e.target.value)}\n {...rest}\n className=\"combinator-list\"\n >\n {options?.map(({ name, label }: { name: string; label: string }) => (\n <MenuItem key={name} value={name}>\n <Typography type=\"s4\" color=\"theme.secondary.1000\">\n {label}\n </Typography>\n </MenuItem>\n ))}\n </Select>\n )}\n </>\n );\n};\n\nexport { CombinatorSelect };\nexport default CombinatorSelect;\n","import { Box, IconButton } from \"@mui/material\";\nimport { ActionProps } from \"react-querybuilder\";\nimport { useLanguage } from \"../../../hooks/useLangauge\";\nimport { Trash } from \"../../icons\";\n\nconst RemoveAction = (props: ActionProps) => {\n const { isRtl } = useLanguage();\n const btnStyles = {\n ...(isRtl ? { marginRight:-1.5 } : {}),\n }\n const iconStyles = {\n color: 'theme.grey.600',\n '&:hover': {\n color: 'theme.error.600'\n }\n }\n return (\n <Box>\n <IconButton sx={btnStyles} size={\"small\"} onClick={props.handleOnClick} disableRipple>\n <Trash sx={{ fontSize: '1.35rem', ...iconStyles }} />\n </IconButton>\n </Box>\n );\n};\n\nexport { RemoveAction };\nexport default RemoveAction;\n","import { useEffect, useState } from \"react\";\nimport { Box, MenuItem } from \"@mui/material\";\nimport Select from \"../../select/select\";\nimport Typography from \"../../typography/typography\";\nimport { FieldSelectorProps } from \"react-querybuilder\";\nimport SearchBar from \"../../search-bar/search-bar\";\nimport \"../filter.scss\";\nimport formatText from \"../../../utils/format-text\";\nimport { useTranslation } from \"react-i18next\";\n\nconst FieldSelect = (props: FieldSelectorProps) => {\n\n const { t } = useTranslation();\n\n const { handleOnChange, value, options, ...rest } = props;\n\n const [filteredOptions, setFilteredOptions] = useState<any[]>();\n\n const handleSearchEvent = (searchText: string) => {\n const ops = options?.filter(o => Boolean(o.label?.trim())) || []\n const filteredData = ops.filter((option: any) =>\n option.name.toLowerCase().includes(searchText.toLowerCase()),\n );\n setFilteredOptions(filteredData);\n };\n\n useEffect(() => {\n setFilteredOptions(options?.filter(o => Boolean(o.label?.trim())) || [])\n // eslint-disable-next-line react-hooks/exhaustive-deps\n },[options?.length])\n\n\n return (\n <Box width=\"100%\">\n <Select\n fullWidth\n value={value}\n onChange={(e: any) => handleOnChange(e.target.value)}\n {...rest}\n className=\"select-drps\"\n variant=\"outlined\"\n renderValue={(value: any) => formatText(t(filteredOptions?.find((opttion: any)=>opttion.name === value)?.label)?.replace(\"_id\", '')?.replaceAll(\"_\", \" \") || \"Select Default\")}\n onClose={() => setFilteredOptions(options?.filter(o => Boolean(o.label?.trim())) || [])}\n >\n <div className=\"searchbar-box-list new-searchbar\">\n <SearchBar\n placeholder={\"Search Attributes\"}\n handleSearch={(e) => handleSearchEvent(e)}\n />\n </div>\n {filteredOptions?.map((op: any) => (\n <MenuItem key={op.name} value={op.name}>\n <Typography type=\"s4\" color=\"theme.secondary.1000\">\n {formatText(t(op.label)?.replace(\"_id\", '')?.replaceAll(\"_\", \" \"))}\n </Typography>\n </MenuItem>\n ))}\n </Select>\n </Box>\n );\n};\n\nexport { FieldSelect };\nexport default FieldSelect;\n","import { ActionProps } from \"react-querybuilder\";\r\nimport Button from \"../../button/button\";\r\nimport { styled } from '@mui/material/styles';\r\nimport { Add } from \"@mui/icons-material\";\r\n\r\nconst StyledAddButton = styled(Button)(({ theme: { palette } }) => ({\r\n \":hover\": {\r\n backgroundColor: palette.theme?.secondary[100],\r\n },\r\n \"&.MuiButton-text\": {\r\n \":hover\": {\r\n color: palette.theme?.secondary[1000],\r\n },\r\n },\r\n}));\r\n\r\nconst AddFilterButton = (props: ActionProps) => {\r\n const { handleOnClick, ...rest } = props;\r\n return (\r\n <StyledAddButton\r\n onClick={handleOnClick}\r\n {...rest}\r\n className=\"add-filter\"\r\n variant=\"text\"\r\n startIcon={<Add/>}\r\n >\r\n Add Filter\r\n </StyledAddButton>\r\n );\r\n};\r\n\r\nexport { AddFilterButton };\r\nexport default AddFilterButton;\r\n","import { styled } from '@mui/material/styles';\r\nimport Button from \"../../button/button\";\r\nimport { ActionProps } from \"react-querybuilder\";\r\nimport { Add } from \"@mui/icons-material\";\r\n\r\nconst StyledAddButton = styled(Button)(({ theme: { palette } }) => ({\r\n \":hover\": {\r\n backgroundColor: palette.theme?.secondary[100],\r\n },\r\n \"&.MuiButton-text\": {\r\n \":hover\": {\r\n color: palette.theme?.secondary[1000],\r\n },\r\n },\r\n}));\r\n\r\nconst AddGroupButton = (props: ActionProps) => {\r\n const { handleOnClick, ...rest } = props;\r\n return (\r\n <StyledAddButton\r\n onClick={handleOnClick}\r\n {...rest}\r\n className=\"add-group\"\r\n variant=\"text\"\r\n startIcon={<Add/>}\r\n >\r\n Add Group\r\n </StyledAddButton>\r\n );\r\n};\r\n\r\nexport { AddGroupButton };\r\nexport default AddGroupButton;\r\n","import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\r\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\r\nimport { DatePicker as Date } from '@mui/x-date-pickers/DatePicker';\r\nimport Typography from '../typography/typography';\r\nimport { styled } from '@mui/material/styles';\r\nimport logo from '../../assets/images';\r\nimport './date-picker.scss';\r\nimport dayjs from 'dayjs';\r\nimport { memo } from 'react';\r\n\r\nexport interface DatePickerProps {\r\n\tlabel: string;\r\n\tdisabled?: boolean;\r\n\terror?: boolean;\r\n\tname?: string;\r\n\tvalue?: string | number | Date;\r\n\thelperText?: string;\r\n\tdataPosition?: number;\r\n\tdataName?: string;\r\n\tdisableFutureDates?: boolean;\r\n\tplaceholder?: string;\r\n\trequired?: boolean;\r\n\tdisablePastDates?: boolean;\r\n\tdefaultValue?: string | number | Date | undefined;\r\n\ttextFieldProps?: any;\r\n\tformat?: string;\r\n\r\n}\r\n\r\nconst StyledDatePicker = styled(Date)(({ theme: { palette } }) => ({\r\n\t'& .MuiOutlinedInput-root': {\r\n\t\tpadding: '0',\r\n\t\tcolor: palette.theme?.secondary[800],\r\n\t\t'& fieldset': {\r\n\t\t\tborderColor: palette.theme?.secondary[400]\r\n\t\t},\r\n\t\t'&:hover fieldset': {\r\n\t\t\tborderColor: palette.theme?.secondary[500]\r\n\t\t},\r\n\t\t'&.Mui-focused fieldset': {\r\n\t\t\tborderWidth: '0.0625rem',\r\n\t\t\tborderStyle: 'solid',\r\n\t\t\tborderColor: palette.theme?.primary[700]\r\n\t\t},\r\n\t\t'&.Mui-error fieldset': {\r\n\t\t\tborderColor: palette.theme?.error[600]\r\n\t\t},\r\n\t\t'&.Mui-disabled': {\r\n\t\t\tbackground: palette.theme?.secondary[200],\r\n\t\t\tcolor: palette.theme?.secondary[800]\r\n\t\t},\r\n\t\t'& .MuiInputBase-input::placeholder': {\r\n\t\t\tcolor: palette.theme?.secondary[800],\r\n\t\t\topacity: 1\r\n\t\t}\r\n\t},\r\n\t'& .MuiFormHelperText-root': {\r\n\t\tmarginLeft: 0,\r\n\t\tcolor: palette.theme?.secondary[800],\r\n\t\t'&.Mui-error': {\r\n\t\t\tcolor: palette.theme?.error[600]\r\n\t\t}\r\n\t},\r\n\t'& .MuiIconButton-root': {\r\n\t\tmarginRight: 0\r\n\t},\r\n\t'& .MuiPickersCalendarHeader-labelContainer': {\r\n\t\tfontWeight: 600\r\n\t}\r\n}));\r\n\r\nconst DatePicker = memo((props: DatePickerProps) => {\r\n\tconst {\r\n\t\tlabel,\r\n\t\tdisabled,\r\n\t\terror,\r\n\t\thelperText,\r\n\t\tdataName,\r\n\t\tdataPosition,\r\n\t\tdisableFutureDates = false,\r\n\t\tplaceholder,\r\n\t\trequired = false,\r\n\t\tdisablePastDates = false,\r\n\t\tdefaultValue,\r\n\t\ttextFieldProps,\r\n\t\tformat,\r\n\t\t...rest\r\n\t} = props;\r\n\r\n\treturn (\r\n\t\t<LocalizationProvider dateAdapter={AdapterDayjs}>\r\n\t\t\t{label && (\r\n\t\t\t\t<Typography\r\n\t\t\t\t\ttype='s5'\r\n\t\t\t\t\tweight='medium'\r\n\t\t\t\t\tmb={0.5}\r\n\t\t\t\t\tcolor={error ? 'theme.error.600' : 'theme.secondary.800'}\r\n\t\t\t\t\tdata-position={dataPosition}\r\n\t\t\t\t\tdata-name={dataName}>\r\n\t\t\t\t\t{label} {required && <span className='requiredStar'>*</span>}\r\n\t\t\t\t</Typography>\r\n\t\t\t)}\r\n\t\t\t<StyledDatePicker\r\n\t\t\t\tdisabled={disabled}\r\n\t\t\t\tdisableFuture={disableFutureDates}\r\n\t\t\t\tdisablePast={disablePastDates}\r\n\t\t\t\tslotProps={{\r\n\t\t\t\t\ttextField: {\r\n\t\t\t\t\t\thelperText: helperText,\r\n\t\t\t\t\t\terror: error,\r\n\t\t\t\t\t\tplaceholder: placeholder || 'MM/DD/YYYY',\r\n\t\t\t\t\t\t...textFieldProps\r\n\t\t\t\t\t\t// required: required,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdesktopPaper: {\r\n\t\t\t\t\t\tsx: {\r\n\t\t\t\t\t\t\t'& .MuiButtonBase-root.Mui-selected': {\r\n\t\t\t\t\t\t\t\tcolor: 'theme.primary.900',\r\n\t\t\t\t\t\t\t\tbgcolor: '#B6E9D6 !important'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t'& .MuiButtonBase-root:hover': {\r\n\t\t\t\t\t\t\t\tcolor: 'theme.primary.900',\r\n\t\t\t\t\t\t\t\tbgcolor: '#B6E9D6 !important'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}}\r\n\t\t\t\tformat={format || 'DD-MM-YYYY'}\r\n\t\t\t\tslots={{ openPickerIcon: logo.CalenderIcon }}\r\n\t\t\t\t{...rest}\r\n\t\t\t\t\r\n\t\t\t\tdefaultValue={defaultValue ? dayjs(defaultValue) : undefined}\r\n\t\t\t\tclassName='datePicker'\r\n\t\t\t/>\r\n\t\t</LocalizationProvider>\r\n\t);\r\n});\r\n\r\nexport { DatePicker };\r\nexport default DatePicker;\r\n","import { CheckboxProps, Checkbox as MUICheckbox, styled } from '@mui/material';\r\nimport { CheckBoxIcon, RecgtangleIcon } from '../icons';\r\nimport { memo } from 'react';\r\n\r\nconst StyledCheckbox = styled(MUICheckbox)(({ theme: { palette } }) => ({\r\n\tpadding: '0rem',\r\n\tcolor: palette.theme?.secondary[300],\r\n\tborderRadius: '.625rem',\r\n\t'&.Mui-checked': {\r\n\t\tcolor: palette.theme?.primary[600],\r\n\t\t'&:hover': {\r\n\t\t\tcolor: palette.theme?.primary[500]\r\n\t\t}\r\n\t},\r\n\t'&.Mui-disabled': {\r\n\t\tcolor: palette.theme?.secondary[400]\r\n\t}\r\n}));\r\n\r\nconst Checkbox = memo((props: CheckboxProps) => {\r\n\treturn (\r\n\t\t<StyledCheckbox\r\n\t\t\ticon={<RecgtangleIcon fontSize={props?.size || 'small'} />}\r\n\t\t\tcheckedIcon={<CheckBoxIcon fontSize={props?.size || 'small'} />}\r\n\t\t\tdisableRipple\r\n\t\t\t{...props}\r\n\t\t/>\r\n\t);\r\n});\r\n\r\nexport { Checkbox };\r\nexport default Checkbox;\r\n","import React from 'react';\n// import { Close } from '@mui/icons-material';\nimport { ChipProps } from '@mui/material';\nimport Chip from '../../../chip/chip';\nimport Typography from '../../../typography/typography';\n\ninterface ChipOrPlaceholderProps {\n\tdata: string[];\n\tplaceholder: string;\n\tonDelete?: () => void;\n\tchipProps?: Omit<ChipProps, 'label'>;\n\tdisabled?: boolean;\n\tselectedLabel?: string;\n}\n\nconst ChipOrPlaceholder: React.FC<ChipOrPlaceholderProps> = ({\n\tdata,\n\tplaceholder,\n\tonDelete,\n\tchipProps,\n\tdisabled,\n\tselectedLabel = 'Item'\n}) => (\n\t<>\n\t\t{data.length ? (\n\t\t\t<Chip\n\t\t\t\t// variant='outlined'\n\t\t\t\ttype='normal'\n\t\t\t\tlabel={\n\t\t\t\t\t<Typography color='theme.secondary.1000' type='s5'>\n\t\t\t\t\t\t{data.length} {selectedLabel} Selected\n\t\t\t\t\t</Typography>\n\t\t\t\t}\n\t\t\t\t// deleteIcon={<Close fontSize='large' />}\n\t\t\t\tonDelete={onDelete}\n\t\t\t\tonMouseDown={(event) => event.stopPropagation()}\n\t\t\t\tdisabled={Boolean(disabled)}\n\t\t\t\t{...chipProps}\n\t\t\t\tsx={{\n\t\t\t\t\t...chipProps?.sx,\n\t\t\t\t\t'& .MuiChip-deleteIcon': {\n\t\t\t\t\t\tcolor: 'theme.primary.800',\n\t\t\t\t\t\tfontSize: '1rem',\n\t\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\t\tcolor: 'theme.primary.900'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t) : (\n\t\t\t<Typography color='inherit' type='s3'>\n\t\t\t\t{placeholder}\n\t\t\t</Typography>\n\t\t)}\n\t</>\n);\n\nexport default ChipOrPlaceholder;\n","import { Radio as MUIRadio, RadioProps } from '@mui/material';\nimport { BlankCircle, FilledCircle } from '../icons';\nimport { memo } from 'react';\n\nconst Radio = memo((props: RadioProps) => {\n\tconst { color, ...rest } = props;\n\n\treturn (\n\t\t<>\n\t\t\t<MUIRadio\n\t\t\t\tdisableRipple\n\t\t\t\tsx={{\n\t\t\t\t\t'&, &.Mui-checked': {\n\t\t\t\t\t\tcolor: color || 'theme.primary.700'\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\ticon={<BlankCircle color='theme.secondary.300' fontSize='large'/>}\n\t\t\t\tcheckedIcon={<FilledCircle fontSize='large'/>}\n\t\t\t\t{...rest}\n\t\t\t/>\n\t\t</>\n\t);\n});\n\nexport { Radio };\nexport default Radio;\n","import React, { memo } from 'react';\r\nimport { Control, Controller } from 'react-hook-form';\r\nimport Typography from '../../../typography/typography';\r\nimport Radio from '../../../radio/radio';\r\nimport { FormControlLabel, RadioGroup, Box } from '@mui/material';\r\nimport { styled } from '@mui/material/styles';\r\n\r\ninterface IDynamicRadioButton {\r\n\tformControl: Control<any>;\r\n\tfieldArrayName: string;\r\n\tname: string;\r\n\tlabel: string;\r\n\ttitlePosition?: string;\r\n\tposition: number;\r\n\toptions: {\r\n\t\tlabel: string;\r\n\t\tvalue: string;\r\n\t}[];\r\n\tdisabled?: boolean;\r\n\ttypeOfField?: string;\r\n\tdisplay?: 'row' | 'column';\r\n\ttitle?: string;\r\n\tbordered?: boolean;\r\n\tdefaultValue?: string; // Optional defaultValue prop\r\n}\r\n\r\nconst BorderedOption = styled(Box, {\r\n\tshouldForwardProp: (prop) => prop !== 'bordered' && prop !== 'isSelected'\r\n})<{ bordered?: boolean; isSelected: boolean }>(({ theme, bordered }) => ({\r\n\tdisplay: 'flex',\r\n\talignItems: 'center',\r\n\tpadding: 0,\r\n\tmargin: 0,\r\n\t...(bordered && {\r\n\t\tborder: `1px solid ${theme.palette.divider}`,\r\n\t\tborderRadius: theme.shape.borderRadius,\r\n\t\tmargin: theme.spacing(0, 3, 0, 0),\r\n\t\tpadding: theme.spacing(0, 5, 0, 1),\r\n\t\theight: '36px',\r\n\t\talignContent: 'left',\r\n\t\t'&:hover': {\r\n\t\t\tbackgroundColor: theme.palette.action.hover\r\n\t\t}\r\n\t})\r\n}));\r\n\r\nexport const DynamicRadioButton: React.FC<IDynamicRadioButton> = memo(\r\n\t({\r\n\t\tformControl,\r\n\t\tfieldArrayName,\r\n\t\tname,\r\n\t\toptions,\r\n\t\tdisplay,\r\n\t\tlabel,\r\n\t\tposition,\r\n\t\tdisabled,\r\n\t\ttitle,\r\n\t\ttitlePosition,\r\n\t\tbordered = false,\r\n\t\tdefaultValue = ''\r\n\t}) => {\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t<Typography\r\n\t\t\t\t\ttype='s5'\r\n\t\t\t\t\tweight='medium'\r\n\t\t\t\t\tcolor='theme.secondary.800'\r\n\t\t\t\t\tdata-position={position}\r\n\t\t\t\t\tsx={{ mb: 0.5 }}>\r\n\t\t\t\t\t{label}\r\n\t\t\t\t</Typography>\r\n\t\t\t\t<Controller\r\n\t\t\t\t\tcontrol={formControl}\r\n\t\t\t\t\tname={`${fieldArrayName}.${name}`}\r\n\t\t\t\t\t// disabled={disabled}\r\n\t\t\t\t\tdefaultValue={defaultValue} // Set defaultValue to 'item' if none provided\r\n\t\t\t\t\trender={({ field, fieldState: { error } }) => (\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t<RadioGroup\r\n\t\t\t\t\t\t\t\tvalue={field.value ?? defaultValue} // Ensure 'item' if value is undefined\r\n\t\t\t\t\t\t\t\tonChange={(e) => field.onChange(e.target.value)}\r\n\t\t\t\t\t\t\t\trow={display === 'row'}\r\n\t\t\t\t\t\t\t\tsx={{ alignItems: 'center', gap: 1 }}>\r\n\t\t\t\t\t\t\t\t{title && titlePosition === 'start' && (\r\n\t\t\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\t\t\ttype='s4'\r\n\t\t\t\t\t\t\t\t\t\tcolor='theme.secondary.800'\r\n\t\t\t\t\t\t\t\t\t\tweight='medium'>\r\n\t\t\t\t\t\t\t\t\t\t{title}\r\n\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t{options.map((option) => (\r\n\t\t\t\t\t\t\t\t\t<BorderedOption\r\n\t\t\t\t\t\t\t\t\t\tkey={option.value}\r\n\t\t\t\t\t\t\t\t\t\tbordered={bordered}\r\n\t\t\t\t\t\t\t\t\t\tisSelected={field.value == option.value}>\r\n\t\t\t\t\t\t\t\t\t\t<FormControlLabel\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{ margin: 0, opacity: disabled ? 0.5 : 1 }}\r\n\t\t\t\t\t\t\t\t\t\t\tvalue={option.value}\r\n\t\t\t\t\t\t\t\t\t\t\tcontrol={<Radio checked={field.value == option.value} />}\r\n\t\t\t\t\t\t\t\t\t\t\tlabel={\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype='s5'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tweight='medium'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolor='theme.secondary.800'>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{option.label}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tdisabled={disabled}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t</BorderedOption>\r\n\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t{title && titlePosition === 'end' && (\r\n\t\t\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\t\t\ttype='s4'\r\n\t\t\t\t\t\t\t\t\t\tcolor='theme.secondary.800'\r\n\t\t\t\t\t\t\t\t\t\tweight='medium'>\r\n\t\t\t\t\t\t\t\t\t\t{title}\r\n\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</RadioGroup>\r\n\t\t\t\t\t\t\t{error && (\r\n\t\t\t\t\t\t\t\t<Typography type='s5' color='theme.error.600'>\r\n\t\t\t\t\t\t\t\t\t{error.message}\r\n\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</>\r\n\t\t\t\t\t)}\r\n\t\t\t\t/>\r\n\t\t\t</>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nexport default DynamicRadioButton;\r\n","import _ from \"lodash\";\r\nimport { MaterialTableColumnProps } from \"../../material-table/material-table\";\r\n\r\nexport const PARTIES_FORM_ARRAY_NAME = 'parties';\r\n\r\nexport const PARTIES_FIELDS = {\r\n TYPE: 'account_type',\r\n\r\n FIRST_NAME: 'first_name',\r\n LAST_NAME: 'last_name',\r\n\r\n COMPANY_NAME: 'company_name',\r\n VAT_NUMBER: 'vat_number',\r\n CRN: 'crn',\r\n\r\n // COMPANY: 'company_id',\r\n COMPANY: 'companies',\r\n CURRENCY: 'currencies',\r\n CONTACT_NO: 'contact_no',\r\n EMAIL_IDS: 'email_ids',\r\n RESPONSIBLE_PERSON : 'responsible_person',\r\n\r\n ADDRESS: 'addresses',\r\n CONTACTS: 'contacts',\r\n\r\n RECEIVABLE_ACCOUNT: 'account_id',\r\n TAX_TEMPLATE: 'default_tax_template'\r\n}\r\n\r\nexport const partyType = [\r\n { label: 'Individual', value: 'Individual' },\r\n { label: 'Company', value: 'Company' }\r\n];\r\n\r\nexport const addressPayload = {\r\n parties_id: null,\r\n address_type: null,\r\n contact_name: null,\r\n street_1: null,\r\n street_2: null,\r\n city: null,\r\n zip_code: null,\r\n state: null,\r\n country: null,\r\n email: null,\r\n mobile: null,\r\n phone: null,\r\n street_3: null,\r\n summary: null,\r\n default_shipping_address: 0,\r\n default_billing_address: 0,\r\n country_code: null\r\n};\r\nexport const contactPayload = {\r\n parties_id: null,\r\n name: null,\r\n country_code: null,\r\n contact_no: null,\r\n email: null\r\n};\r\n\r\n/* Address columns & rows */\r\nexport const addressColumns: MaterialTableColumnProps[] = [\r\n {\r\n header: 'common.party.table.addressType_header',\r\n accessorKey: 'address_type',\r\n visible: true,\r\n type: 'string',\r\n editVariant: 'select',\r\n editProperties: {\r\n placeholder: 'Select Address Type',\r\n field_name: 'address_type',\r\n validations: [\r\n {\r\n type: 'required',\r\n value: true,\r\n msg_en: 'Address Type is required',\r\n msg_ar: 'Address Type is required'\r\n }\r\n ]\r\n },\r\n editSelectOptions: [\r\n { label: 'Delivery', value: 'Delivery' },\r\n { label: 'Shipping', value: 'Shipping' },\r\n { label: 'Office', value: 'Office' }\r\n ]\r\n },\r\n {\r\n header: 'common.party.table.addressee_header',\r\n accessorKey: 'contact_name',\r\n visible: true,\r\n type: 'custom_link',\r\n editProperties: {\r\n placeholder: 'Enter Addressee',\r\n field_name: 'contact_name',\r\n validations: [\r\n {\r\n type: 'required',\r\n value: false,\r\n msg_en: 'Contact name is required',\r\n msg_ar: 'Contact name is required'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n header: 'common.party.table.defaultShippingAddress_header',\r\n accessorKey: 'default_shipping_address',\r\n visible: true,\r\n type: 'custom_link',\r\n editVariant: 'checkbox',\r\n editProperties: {\r\n field_name: 'default_shipping_address'\r\n }\r\n },\r\n {\r\n header: 'common.party.table.defaultBillingAddress_header',\r\n accessorKey: 'default_billing_address',\r\n visible: true,\r\n type: 'custom_link',\r\n editVariant: 'checkbox',\r\n editProperties: {\r\n field_name: 'default_billing_address'\r\n }\r\n },\r\n {\r\n header: 'common.party.table.countryCode_header',\r\n accessorKey: 'country_code',\r\n visible: true,\r\n type: 'custom_link',\r\n enableEditing: false\r\n },\r\n {\r\n header: 'common.party.table.contactNumber_header',\r\n accessorKey: 'phone',\r\n visible: true,\r\n type: 'custom_link',\r\n editVariant: 'phone',\r\n editProperties: {\r\n field_name: 'phone'\r\n }\r\n },\r\n {\r\n header: 'common.party.table.addrressOne_header',\r\n accessorKey: 'street_1',\r\n visible: true,\r\n type: 'string',\r\n editProperties: {\r\n placeholder: 'Enter Address',\r\n field_name: 'street_1',\r\n validations: [\r\n {\r\n type: 'required',\r\n value: false,\r\n msg_en: 'Address is required',\r\n msg_ar: 'Address is required'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n header: 'common.party.table.addressTwo_header',\r\n accessorKey: 'street_2',\r\n visible: true,\r\n type: 'string',\r\n editProperties: {\r\n placeholder: 'Enter Address',\r\n field_name: 'street_2',\r\n }\r\n },\r\n {\r\n header: 'common.party.table.addressThree_header',\r\n accessorKey: 'street_3',\r\n visible: true,\r\n type: 'string',\r\n editProperties: {\r\n placeholder: 'Enter Address',\r\n field_name: 'street_3',\r\n }\r\n },\r\n {\r\n header: 'common.party.table.zipCode_header',\r\n accessorKey: 'zip_code',\r\n visible: true,\r\n type: 'string',\r\n editProperties: {\r\n field_name: 'zip_code',\r\n placeholder: 'Enter Zip Code',\r\n }\r\n },\r\n {\r\n header: 'common.party.table.country_header',\r\n accessorKey: 'country_name',\r\n visible: true,\r\n type: 'string',\r\n editVariant: 'select',\r\n editProperties: {\r\n field_name: 'country',\r\n placeholder: 'Select country',\r\n valueKey: 'country_id',\r\n apiType: 'countries',\r\n validations: [\r\n {\r\n type: 'required',\r\n value: true,\r\n msg_en: 'Country is required',\r\n msg_ar: 'Country is required'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n header: 'common.party.table.state_header',\r\n accessorKey: 'state_name',\r\n visible: true,\r\n type: 'string',\r\n editVariant: 'select',\r\n editProperties: {\r\n field_name: 'state',\r\n placeholder: 'Select state',\r\n valueKey: 'state_id',\r\n apiType: 'states',\r\n validations: [\r\n {\r\n type: 'required',\r\n value: true,\r\n msg_en: 'State is required',\r\n msg_ar: 'State is required'\r\n }\r\n ],\r\n customeFilter: (row: any, values) => {\r\n const filter = values?.country_name ? { '&country_id.eq': values?.country_name } : null\r\n return filter\r\n }\r\n }\r\n },\r\n {\r\n header: 'common.party.table.city_header',\r\n accessorKey: 'city',\r\n visible: true,\r\n type: 'string',\r\n editProperties: {\r\n placeholder: 'Enter City',\r\n field_name: 'city',\r\n validations: [\r\n {\r\n type: 'required',\r\n value: true,\r\n msg_en: 'City is required',\r\n msg_ar: 'City is required'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n header: 'common.party.table.summary_header',\r\n accessorKey: 'summary',\r\n visible: true,\r\n type: 'string',\r\n enableEditing: false\r\n // editProperties: {\r\n // \tplaceholder: 'Populated after filling address',\r\n // \tfield_name: 'summary'\r\n // \tdisabled\r\n // }\r\n }\r\n];\r\n\r\n/* contact columns & rows */\r\nexport const contactColumns: MaterialTableColumnProps[] = [\r\n {\r\n header: 'common.party.table.name_header',\r\n accessorKey: 'name',\r\n visible: true,\r\n type: 'string',\r\n editProperties: {\r\n placeholder: 'Enter Name',\r\n field_name: 'name',\r\n validations: [\r\n {\r\n type: 'required',\r\n value: true,\r\n msg_en: 'Name is required',\r\n msg_ar: 'Name is required'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n header: 'common.party.table.email_header',\r\n accessorKey: 'email',\r\n visible: true,\r\n type: 'string',\r\n editProperties: {\r\n placeholder: 'Enter Email',\r\n field_name: 'email',\r\n validations: [\r\n {\r\n type: 'required',\r\n value: true,\r\n msg_en: 'Email is required',\r\n msg_ar: 'Email is required'\r\n },\r\n {\r\n type: 'email',\r\n value: true,\r\n msg_en: 'Invalid Email',\r\n msg_ar: 'Invalid Email'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n header: 'common.party.table.countryCode_header',\r\n accessorKey: 'country_code',\r\n visible: true,\r\n type: 'custom_link',\r\n enableEditing: false\r\n },\r\n {\r\n header: 'common.party.table.contactNumber_header',\r\n accessorKey: 'contact_no',\r\n visible: true,\r\n type: 'custom_link',\r\n editVariant: 'phone',\r\n editProperties: {\r\n field_name: 'contact_no'\r\n }\r\n }\r\n];\r\n\r\nexport const addressOmitKeys = [\r\n 'id',\r\n 'state_id',\r\n 'country_id',\r\n 'country_name',\r\n 'state_name',\r\n 'parties_id',\r\n 'state_data',\r\n 'country_data',\r\n 'summary'\r\n];\r\nexport const contactOmitKeys = ['id', 'summary'];\r\n\r\n\r\nexport const processPartiesPayload = (payload: any) => {\r\n const { addresses = [], contacts = [], ...rest } = payload || {}\r\n const addressPayload = addresses.map(address => (_.omit(address, ...addressOmitKeys)))\r\n const contactPayload = contacts.map(contact => (_.omit(contact, ...contactOmitKeys)))\r\n return {\r\n ...rest,\r\n addresses: addressPayload,\r\n contacts: contactPayload\r\n }\r\n}\r\n","import * as Yup from 'yup';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport { PARTIES_FIELDS, PARTIES_FORM_ARRAY_NAME } from './utils/constant';\r\n\r\nexport const generateValidationSchema = () => {\r\n\treturn yupResolver(\r\n\t\tYup.object().shape({\r\n\t\t\t[PARTIES_FORM_ARRAY_NAME]: Yup.object().shape({\r\n\t\t\t\t[PARTIES_FIELDS.FIRST_NAME]: Yup.string().required('First name is required'),\r\n\t\t\t\t[PARTIES_FIELDS.LAST_NAME]: Yup.string().required('Last name is required'),\r\n\t\t\t\t[PARTIES_FIELDS.COMPANY]: Yup.mixed().required('Company is required'),\r\n\t\t\t\t[PARTIES_FIELDS.CURRENCY]: Yup.array().required('Currency is required'),\r\n\t\t\t\t[PARTIES_FIELDS.ADDRESS]: Yup.array()\r\n\t\t\t\t\t.required('Please add atleast one address')\r\n\t\t\t\t\t.min(1, 'Please add atleast one address'),\r\n\t\t\t\t[PARTIES_FIELDS.CONTACTS]: Yup.array()\r\n\t\t\t\t\t.required('Please add atleast one Contact')\r\n\t\t\t\t\t.min(1, 'Please add atleast one Contact')\r\n\t\t\t})\r\n\t\t})\r\n\t);\r\n};\r\n\r\nexport const generateValidationSchema1 = () => {\r\n\treturn yupResolver(\r\n\t\tYup.object().shape({\r\n\t\t\t[PARTIES_FORM_ARRAY_NAME]: Yup.object().shape({\r\n\t\t\t\t[PARTIES_FIELDS.TYPE]: Yup.string().required('Customer type is required'),\r\n\r\n\t\t\t\t[PARTIES_FIELDS.FIRST_NAME]: Yup.string().when('account_type', {\r\n\t\t\t\t\tis: (val: any) => val === 'Individual',\r\n\t\t\t\t\tthen: () => Yup.string().required('First name is required'),\r\n\t\t\t\t\totherwise: () => Yup.string().optional().nullable()\r\n\t\t\t\t}),\r\n\r\n\t\t\t\t[PARTIES_FIELDS.LAST_NAME]: Yup.string().when('account_type', {\r\n\t\t\t\t\tis: (val: any) => val === 'Individual',\r\n\t\t\t\t\tthen: () => Yup.string().required('Last name is required'),\r\n\t\t\t\t\totherwise: () => Yup.string().optional().nullable()\r\n\t\t\t\t}),\r\n\r\n\t\t\t\t[PARTIES_FIELDS.COMPANY_NAME]: Yup.string().when('account_type', {\r\n\t\t\t\t\tis: (val: any) => val === 'Company',\r\n\t\t\t\t\tthen: () => Yup.string().required('Company is required'),\r\n\t\t\t\t\totherwise: () => Yup.string().optional().nullable()\r\n\t\t\t\t}),\r\n\r\n\t\t\t\t[PARTIES_FIELDS.VAT_NUMBER]: Yup.string().optional().nullable(),\r\n\r\n\t\t\t\t[PARTIES_FIELDS.CRN]: Yup.string().optional().nullable() ,\r\n\r\n\t\t\t[PARTIES_FIELDS.COMPANY]: Yup.mixed().required('Company is required'),\r\n\r\n\t\t\t[PARTIES_FIELDS.CURRENCY]: Yup.array().required('Currency is required'),\r\n\t\t\t\t[PARTIES_FIELDS.RESPONSIBLE_PERSON]: Yup.string().required('Responsible Person is required'),\r\n\r\n\t\t\t\t[PARTIES_FIELDS.ADDRESS]: Yup.array().nullable().notRequired(),\r\n\r\n\t\t\t\t[PARTIES_FIELDS.CONTACTS]: Yup.array()\r\n\t\t\t\t\t.required('Please add atleast one Contact')\r\n\t\t\t\t\t.min(1, 'Please add atleast one Contact'),\r\n\r\n\t\t\t\t[PARTIES_FIELDS.RECEIVABLE_ACCOUNT]: Yup.number().required('Receivable account is required'),\r\n\t\t\t\t[PARTIES_FIELDS.TAX_TEMPLATE]: Yup.number().required('Tax template is required')\r\n\t\t\t})\r\n\r\n\t\t})\r\n\t);\r\n}\r\n","import { useEffect, useState } from 'react';\r\nimport { useAuth } from './useAuth';\r\nimport { auth } from '../constants/auth';\r\n\r\n/**\r\n * In MFE mode the AuthContext of the common-hub is not bridged from the\r\n * host app, so `useAuth()` returns `user: null`. As a fallback we read\r\n * the persisted user object directly from localStorage so that default\r\n * values (e.g. company_id) are always available.\r\n */\r\nconst getEffectiveUser = (contextUser: any): any => {\r\n if (contextUser) return contextUser;\r\n try {\r\n const stored = window.localStorage.getItem(auth.storageUserKeyName);\r\n return stored ? JSON.parse(stored) : null;\r\n } catch {\r\n return null;\r\n }\r\n};\r\n\r\nconst setCompany = (user: any) => {\r\n return {\r\n value: user?.company_id,\r\n options: [{\r\n // Fallback to company_id when company_data is not present in the\r\n // user object (common in MFE where the stored payload is leaner).\r\n label: user?.company_data?.name ?? user?.company_id,\r\n value: user?.company_id\r\n }]\r\n }\r\n}\r\n\r\nexport const configMapper: Record<string, any> = {\r\n 'company': {\r\n callBack: setCompany,\r\n },\r\n 'company_id': {\r\n callBack: setCompany,\r\n },\r\n}\r\n\r\nexport const getDefaultConfig = (props: any, user: any) => {\r\n const { apiType, name } = props;\r\n const config = configMapper[apiType || name];\r\n if (config) {\r\n return config.callBack(user)\r\n }\r\n return {\r\n value: null,\r\n options: []\r\n }\r\n}\r\n\r\nexport const useDefaultConfig = ({\r\n props,\r\n setValue,\r\n isInternalOptions\r\n}: {\r\n props: any;\r\n setValue?: any;\r\n isInternalOptions: boolean;\r\n}) => {\r\n const { user: authUser } = useAuth();\r\n const contextUser = getEffectiveUser(authUser);\r\n const [defaultOptions, setDefaultOptions] = useState<any>([]);\r\n\r\n useEffect(() => {\r\n const user = getEffectiveUser(contextUser);\r\n const { value, options } = getDefaultConfig(props, user);\r\n\r\n if (value === null || value === undefined) {\r\n return;\r\n }\r\n\r\n if (typeof setValue === 'function') {\r\n setValue(`${props.fieldArrayName}.${props.name}`, props?.is_multiselect ? [value] : value);\r\n }\r\n\r\n if (!isInternalOptions) {\r\n setDefaultOptions(options);\r\n }\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props?.name, props?.apiType, contextUser, setValue, isInternalOptions]);\r\n\r\n return {\r\n defaultOptions\r\n }\r\n}","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\r\nimport { Controller, useFormContext, useWatch, Control } from 'react-hook-form';\r\nimport { dynamicSelectAdd } from './select-configuration';\r\nimport {\r\n Box,\r\n CircularProgress,\r\n Divider,\r\n IconButton,\r\n InputAdornment,\r\n MenuItem,\r\n MenuItemProps,\r\n OutlinedInput,\r\n Tooltip\r\n} from '@mui/material';\r\nimport PropTypes from 'prop-types';\r\nimport { debounce } from 'lodash';\r\nimport { sortBy } from \"lodash\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Add, Close } from '@mui/icons-material';\r\n\r\nimport Select from '../../../select/select';\r\nimport ChipOrPlaceholder from './chip-or-placeholder';\r\nimport Checkbox from '../../../checkbox/checkbox';\r\nimport Typography from '../../../typography/typography';\r\nimport Chip from '../../../chip/chip';\r\nimport { MoreIcon } from '../../../icons';\r\nimport { fetchApi } from '../../../../utils/api';\r\nimport './element.scss';\r\nimport { useAuth, useLanguage } from '@/hooks';\r\nimport { useDefaultConfig } from '@/hooks/useSetDefaultConfig';\r\nimport { auth } from '../../../../constants/auth';\r\n\r\n// Types\r\ninterface IOption {\r\n id: string | number;\r\n value: string | number;\r\n label: string | React.ReactNode;\r\n disabled?: boolean;\r\n isGroup?: boolean;\r\n options?: IOption[];\r\n searchLabel?: string;\r\n}\r\n\r\n// Custom API fetch function type for parent components\r\ninterface CustomFetchApiParams {\r\n search?: string;\r\n filters?: any;\r\n limit: number;\r\n skip: number;\r\n select?: string;\r\n order?: string;\r\n}\r\n\r\ninterface CustomFetchApiResponse {\r\n data: IOption[];\r\n pagination?: {\r\n totalCount: number;\r\n };\r\n}\r\n\r\ninterface IMenuItemsProps extends MenuItemProps {\r\n options: IOption[];\r\n multiple: boolean;\r\n placeholder: string;\r\n with_checkboxes: boolean;\r\n values: string | string[];\r\n field: IDynamicSearchSelectProps;\r\n disabledIds: (string | number)[];\r\n onChange: (value: string | string[]) => void;\r\n handleChange?: (value: string | string[]) => void;\r\n hasParent: boolean;\r\n t: (key: string) => string;\r\n // onFooterClick?: () => void;\r\n}\r\n\r\ninterface IDynamicSearchSelectProps {\r\n name: string;\r\n placeholder: string;\r\n label: string;\r\n size?: 'small' | 'medium';\r\n options: IOption[];\r\n formControl: Control<any>;\r\n defaultValue?: string | string[];\r\n fieldArrayName: string;\r\n id?: string;\r\n required?: boolean;\r\n is_multiselect?: boolean;\r\n position?: number;\r\n formType?: string;\r\n typeOfField?: string;\r\n disabled?: boolean;\r\n onChipRemove?: (value: string) => void;\r\n enable_footer?: boolean;\r\n footer_action?: string;\r\n onFooterClick?: () => void;\r\n is_loading?: boolean;\r\n selectedLabel?: string;\r\n isInternal?: boolean;\r\n disabledIds?: (string | number)[];\r\n getSelectedData?: (data: IOption | IOption[] | null, name: string) => void;\r\n attributes?: string[];\r\n handleChange?: (value: string | string[]) => void;\r\n hasParent?: boolean;\r\n sortOrder?: string;\r\n apiType?: string;\r\n handleOptions?: (value: any) => void;\r\n filterKey?: string;\r\n customeFilter?: Record<string, any>;\r\n refresh?: boolean;\r\n addType?: string;\r\n showCancelButton?: boolean;\r\n /** Custom API function to fetch options from parent component */\r\n customFetchApi?: (params: CustomFetchApiParams) => Promise<CustomFetchApiResponse>;\r\n isMergeOptions?: boolean;\r\n showItemTooltip?: boolean;\r\n}\r\n\r\ninterface IPaginationState {\r\n page: number;\r\n hasMore: boolean;\r\n isLoadingMore: boolean;\r\n total: number;\r\n}\r\n\r\n// Helper function to generate menu items\r\nconst generateMenuItems = ({\r\n options,\r\n multiple,\r\n placeholder,\r\n with_checkboxes,\r\n values,\r\n // field,\r\n disabledIds,\r\n onChange,\r\n handleChange,\r\n hasParent,\r\n t,\r\n // onFooterClick\r\n}: IMenuItemsProps): React.ReactElement[] => {\r\n const itemDisabled = (id: string | number) => disabledIds?.includes(id);\r\n const items: React.ReactElement[] = [];\r\n\r\n if (!multiple) {\r\n items.push(\r\n <MenuItem disabled value='' key=\"placeholder\" sx={{ opacity: `0 !important`, height: `0 !important`, p: `0 !important`, m: `0 !important` }}>\r\n <Typography type='s3' color='theme.secondary.1000'>\r\n <em>{t(placeholder)}</em>\r\n </Typography>\r\n </MenuItem>\r\n );\r\n }\r\n const selectedValues = (Array.isArray(values) && values?.length > 0) ? values?.filter((value) => value) : values;\r\n\r\n const handleParentChange = (parentValue: string, childOptions: IOption[]) => {\r\n const childValues = childOptions.map((child) => child.value);\r\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\r\n\r\n const isParentSelected = valueArray.includes(parentValue);\r\n const updatedValues = isParentSelected\r\n ? valueArray.filter((value) => value !== parentValue && !childValues.includes(value))\r\n : [...new Set([...valueArray, parentValue, ...childValues])];\r\n\r\n onChange(updatedValues);\r\n handleChange?.(updatedValues);\r\n };\r\n\r\n const isAllOptionsSelected = (parentValue: string, childOptions: IOption[]) => {\r\n const childValues = childOptions.map((child) => child.value);\r\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\r\n return childValues.every((childValue) => valueArray.includes(childValue));\r\n };\r\n\r\n const isSomeOptionsSelected = (childOptions: IOption[]) => {\r\n const childValues = childOptions.map((child) => child.value);\r\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\r\n return childValues.some((childValue) => valueArray.includes(childValue));\r\n };\r\n\r\n if (Array.isArray(options) && options.length > 0) {\r\n options.forEach((option) => {\r\n items.push(\r\n <MenuItem\r\n value={option.value}\r\n key={option.value}\r\n disabled={Boolean(option.disabled) || itemDisabled(option.id || option.value)}\r\n className={option.isGroup ? 'select--MenuItemHeader' : ''}\r\n >\r\n <Box sx={{ display: 'flex', gap: 1 }}>\r\n {multiple && with_checkboxes && (\r\n <Checkbox\r\n checked={\r\n hasParent\r\n ? isAllOptionsSelected(option.value, option.options || [])\r\n : Boolean(Array.isArray(selectedValues) ? selectedValues.includes(option.value) : selectedValues == option.value)\r\n }\r\n indeterminate={\r\n hasParent && isSomeOptionsSelected(option.options || [])\r\n }\r\n onChange={() => hasParent ? handleParentChange(option.value, option.options || []) : handleChange?.(option.value)}\r\n />\r\n )}\r\n <Typography\r\n type='s3'\r\n color='theme.secondary.1000'\r\n onClick={() => handleChange?.(option.value)}\r\n >\r\n {option.label}\r\n </Typography>\r\n </Box>\r\n </MenuItem>\r\n );\r\n\r\n if (option.isGroup && Array.isArray(option.options)) {\r\n option.options.forEach((opt) => {\r\n items.push(\r\n <MenuItem\r\n value={opt.value}\r\n disabled={Boolean(opt.disabled) || itemDisabled(opt.id || opt.value)}\r\n sx={{ pl: 5 }}\r\n key={`${option.value}-${opt.value}`}\r\n >\r\n <Box sx={{ display: 'flex', gap: 1 }}>\r\n {multiple && with_checkboxes && (\r\n <Checkbox\r\n checked={Boolean(Array.isArray(values) && values.includes(opt.value))}\r\n />\r\n )}\r\n <Typography\r\n type='s3'\r\n color='theme.secondary.1000'\r\n onClick={() => handleChange?.(String(opt.value))}\r\n >\r\n {opt.label == \"Payment Entries\" ? \"Payment and Collection Entries\" : opt.label || opt.value}\r\n </Typography>\r\n </Box>\r\n </MenuItem>\r\n );\r\n });\r\n }\r\n });\r\n }\r\n\r\n // if (field.enable_footer) {\r\n\r\n // }\r\n\r\n if (!items.length || (items.length == 1 && !multiple)) {\r\n items.push(\r\n <MenuItem disabled key=\"no-data\">\r\n No data available\r\n </MenuItem>\r\n );\r\n }\r\n\r\n return items;\r\n};\r\n\r\n// Selected items component\r\nconst SelectedItems: React.FC<{\r\n data: (string | number)[];\r\n options: IOption[];\r\n}> = ({ data, options }) => {\r\n const displayTitle = data.map(\r\n (selectedItem) =>\r\n options?.find((option) => option.value == selectedItem)?.label || ''\r\n );\r\n const filteredDisplayTitle = displayTitle.filter(Boolean);\r\n\r\n return (\r\n <Typography\r\n type='s4'\r\n color='inherit'\r\n sx={{ display: 'flex', gap: 1, alignItems: 'center', mt: 0.5 }}\r\n >\r\n {filteredDisplayTitle.slice(0, 4).join(', ')}\r\n {data.length > 4 && (\r\n <Chip variant='outlined' type='normal' label={<MoreIcon />} />\r\n )}\r\n </Typography>\r\n );\r\n};\r\n\r\nconst Loading = () => (\r\n <Typography fontStyle='italic' color='inherit' type='s3'>Loading...</Typography>\r\n)\r\n\r\nconst DynamicSearchSelect: React.FC<IDynamicSearchSelectProps> = React.memo((props) => {\r\n const watchedValue = useWatch({\r\n control: props.formControl,\r\n name: `${props.fieldArrayName}.${props.name}`\r\n });\r\n\r\n // In MFE mode each federated module ships its own copy of react-hook-form,\r\n // so the FormContext created by the host's FormProvider is invisible here\r\n // and useFormContext() returns null.\r\n // The internal `control` object (passed as formControl prop) does NOT expose\r\n // setValue — that lives only on the useForm() return value. We build a\r\n // stable fallback using useCallback so that useDefaultConfig's useEffect\r\n // (which has setValue as a dependency) does NOT re-fire on every render.\r\n const formContext = useFormContext();\r\n const { setValue: contextSetValue } = formContext || {};\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mfeFallbackSetValue = useCallback((fieldPath: string, value: any) => {\r\n const ctrl = props.formControl as any;\r\n if (!ctrl) return;\r\n // Write into internal form values\r\n const parts = fieldPath.split('.');\r\n let obj = ctrl._formValues;\r\n for (let i = 0; i < parts.length - 1; i++) {\r\n if (!obj[parts[i]]) obj[parts[i]] = {};\r\n obj = obj[parts[i]];\r\n }\r\n obj[parts[parts.length - 1]] = value;\r\n // Notify RHF subscribers so React re-renders\r\n ctrl._subjects?.state?.next({ name: fieldPath, values: { ...ctrl._formValues } });\r\n // props.formControl is stable for the lifetime of the form\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.formControl]);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const setValue: any = contextSetValue ?? mfeFallbackSetValue;\r\n const { t } = useTranslation();\r\n const { isRtl } = useLanguage();\r\n const { user: authUser } = useAuth();\r\n const contextUser = useMemo(() => {\r\n if (authUser) return authUser;\r\n try {\r\n const stored = window.localStorage.getItem(auth.storageUserKeyName);\r\n return stored ? JSON.parse(stored) : null;\r\n } catch {\r\n return null;\r\n }\r\n }, [authUser]);\r\n const selectRef = useRef<HTMLDivElement>(null);\r\n\r\n // State management\r\n const [options, setOptions] = useState<IOption[]>([]);\r\n const [selectedValue, setSelectedValue] = useState<any>(null);\r\n const [selectedOptions, setSelectedOptions] = useState<IOption[]>([]);\r\n const [loading, setLoading] = useState<boolean>(false);\r\n const [open, setOpen] = useState<boolean>(false);\r\n const [isAlreadyLoaded, setIsAlreadyLoaded] = useState<boolean>(false);\r\n const [prevFilter, setPrevFilter] = useState<any>(null);\r\n const [initialLoading, setInitialLoading] = useState<boolean>(false);\r\n const [searchQuery, setSearchQuery] = useState<string>(\"\");\r\n const [searchInitiate, setSearchInitiate] = useState<boolean>(false);\r\n const [addConfig, setAddConfig] = useState<any>(null);\r\n\r\n // Modal states\r\n const [isModalOpen, setIsModalOpen] = useState<boolean>(false);\r\n const [isAddLoading, setIsAddLoading] = useState<boolean>(false);\r\n\r\n\r\n // Pagination state\r\n const [pagination, setPagination] = useState<IPaginationState>({\r\n page: 1,\r\n hasMore: true,\r\n isLoadingMore: false,\r\n total: 0\r\n });\r\n\r\n // Props destructuring with defaults\r\n const {\r\n handleOptions,\r\n isInternal = false,\r\n disabledIds = [],\r\n getSelectedData,\r\n attributes = [],\r\n filterKey = 'id',\r\n customeFilter = {},\r\n refresh,\r\n handleChange,\r\n hasParent = false,\r\n sortOrder = 'id:-1',\r\n apiType,\r\n addType,\r\n showCancelButton = true,\r\n customFetchApi,\r\n isMergeOptions = false,\r\n } = props;\r\n\r\n const showItemTooltip = props.showItemTooltip ?? (apiType === 'salesItems');\r\n\r\n const limit = 25;\r\n\r\n // Memoized values\r\n // Memoized values\r\n const isInternalOptions = useMemo(() => {\r\n if (isMergeOptions && (apiType || customFetchApi)) return false;\r\n return (!apiType && !customFetchApi) || (isInternal ? (apiType || customFetchApi) && props.options?.length == 0 ? false : true : false);\r\n }, [isInternal, apiType, customFetchApi, props.options?.length, isMergeOptions]);\r\n\r\n\r\n //eslint-disable-next-line\r\n const cf = useMemo(() => customeFilter, [JSON.stringify(customeFilter)]);\r\n\r\n\r\n\r\n\r\n const { defaultOptions = [] } = useDefaultConfig({\r\n props,\r\n setValue,\r\n isInternalOptions\r\n });\r\n\r\n\r\n // Local search function\r\n const searchOptionsLocally = useCallback((searchTerm: string, value: any): IOption[] => {\r\n const currentOptions: IOption[] = (props.options && props.options.length > 0) ? props.options : (defaultOptions || []);\r\n if (!searchTerm) return currentOptions;\r\n\r\n const lowercasedSearchTerm = searchTerm.toLowerCase();\r\n\r\n const filteredOptions = hasParent\r\n ? currentOptions?.reduce((acc: IOption[], opt: IOption) => {\r\n const searchedOptions = opt.options?.filter((item: IOption) => {\r\n const label = React.isValidElement(item.label) ? item.searchLabel : String(item.label);\r\n return label?.toLowerCase().includes(lowercasedSearchTerm);\r\n });\r\n\r\n if (searchedOptions?.length) {\r\n acc.push({ ...opt, options: searchedOptions });\r\n }\r\n\r\n return acc;\r\n }, []) || []\r\n : currentOptions?.filter((opt: IOption) => {\r\n const label = React.isValidElement(opt.label) ? opt.searchLabel : String(opt.label);\r\n return label?.toLowerCase().includes(lowercasedSearchTerm);\r\n }) || [];\r\n\r\n //eslint-disable-next-line\r\n return sortBySelectedValues(filteredOptions, value);\r\n //eslint-disable-next-line\r\n }, [props.options, hasParent, defaultOptions]);\r\n\r\n // Get unique options\r\n const getUniqueOptions = useCallback((data: IOption[]): IOption[] => {\r\n const uniqueOptions = [\r\n ...new Map(data?.map(item => [item.value, item])).values()\r\n ];\r\n return uniqueOptions;\r\n }, []);\r\n\r\n // Sort by selected values\r\n const sortBySelectedValues = useCallback((arrayToSort: IOption[], value: any): IOption[] => {\r\n let selectedValues = Array.isArray(value) ? value : [value];\r\n selectedValues = selectedValues.map((item) => Number(item));\r\n const sortedValue = sortBy(arrayToSort, (item) => {\r\n const index = selectedValues.indexOf(item.id || item.value);\r\n return index == -1 ? Infinity : index;\r\n });\r\n return sortedValue;\r\n }, []);\r\n\r\n // Filtered options with pagination support\r\n const filteredOptions = useMemo(() => {\r\n if (isInternalOptions) {\r\n return searchOptionsLocally(searchQuery, watchedValue);\r\n }\r\n const apiOptions = sortBySelectedValues(getUniqueOptions([...options, ...selectedOptions]), watchedValue);\r\n if (isMergeOptions) {\r\n const localOptions = searchOptionsLocally(searchQuery, watchedValue);\r\n return getUniqueOptions([...localOptions, ...apiOptions]);\r\n }\r\n return apiOptions;\r\n //eslint-disable-next-line\r\n }, [options, selectedOptions, isInternalOptions, props.options, watchedValue, searchQuery, searchOptionsLocally, sortBySelectedValues, getUniqueOptions, isMergeOptions]);\r\n\r\n // Helper to get selected item data for tooltip\r\n const getSelectedDataOptions = useMemo(() => {\r\n if (!watchedValue || !filteredOptions.length) return null;\r\n const selected = filteredOptions.find(opt =>\r\n opt.id === watchedValue || opt.value === watchedValue\r\n );\r\n return selected || null;\r\n }, [watchedValue, filteredOptions]);\r\n\r\n // API Functions\r\n const fetchOptions = useCallback(async (searchTerm = '', flt = cf, page = 1, append = false) => {\r\n // Skip if neither apiType nor customFetchApi is provided\r\n if (!apiType && !customFetchApi) return [];\r\n\r\n setLoading(true);\r\n if (page > 1) {\r\n setPagination(prev => ({ ...prev, isLoadingMore: true }));\r\n }\r\n\r\n try {\r\n let data: IOption[] = [];\r\n let paginationResult: { totalCount?: number } = {};\r\n\r\n // Use custom API if provided, otherwise use default fetchApi\r\n if (customFetchApi) {\r\n const response = await customFetchApi({\r\n search: searchTerm,\r\n filters: flt,\r\n limit,\r\n skip: (page - 1) * limit,\r\n select: attributes?.join(','),\r\n order: sortOrder\r\n });\r\n data = response?.data || [];\r\n paginationResult = response?.pagination || {};\r\n } else {\r\n const response = await fetchApi({\r\n apiKey: apiType!,\r\n filters: {\r\n limit,\r\n skip: (page - 1) * limit,\r\n search: searchTerm,\r\n filters: flt,\r\n select: attributes,\r\n order: sortOrder\r\n }\r\n });\r\n data = response?.data || [];\r\n paginationResult = response?.pagination || {};\r\n }\r\n\r\n if (data && Array.isArray(data)) {\r\n const newOptions = append ? [...options, ...data] : data;\r\n\r\n updateOptions(newOptions, append);\r\n handleSelectedValue(data);\r\n // Update pagination\r\n setPagination(prev => ({\r\n ...prev,\r\n page,\r\n hasMore: (paginationResult?.totalCount || 0) > (page * limit),\r\n total: paginationResult?.totalCount || 0,\r\n isLoadingMore: false\r\n }));\r\n }\r\n\r\n return data || [];\r\n } catch (error) {\r\n console.error('Error fetching options:', error);\r\n setPagination(prev => ({ ...prev, isLoadingMore: false }));\r\n return [];\r\n } finally {\r\n setLoading(false);\r\n }\r\n //eslint-disable-next-line\r\n }, [apiType, customFetchApi, options, attributes, sortOrder, limit, cf]);\r\n\r\n // Handle scroll pagination\r\n const handleScroll = useCallback((event: React.UIEvent<HTMLDivElement>) => {\r\n const { scrollTop, scrollHeight, clientHeight } = event.currentTarget;\r\n const isBottom = scrollHeight - scrollTop <= clientHeight + 10;\r\n\r\n if (isBottom && pagination.hasMore && !pagination.isLoadingMore && !isInternalOptions) {\r\n const nextPage = pagination.page + 1;\r\n fetchOptions(searchQuery, cf, nextPage, true);\r\n }\r\n }, [pagination.hasMore, pagination.isLoadingMore, pagination.page, isInternalOptions, searchQuery, cf, fetchOptions]);\r\n\r\n // Update options\r\n const updateOptions = useCallback((newOptions: IOption[], append = false) => {\r\n const oldOptions = append ? options : selectedOptions;\r\n const uniqueOptions = getUniqueOptions([...oldOptions, ...newOptions]);\r\n setOptions(uniqueOptions);\r\n }, [options, selectedOptions, getUniqueOptions]);\r\n\r\n // Handle selected value\r\n const handleSelectedValue = useCallback(async (updateOptions: IOption[]) => {\r\n if (!watchedValue) return;\r\n let filterValue = props.is_multiselect ? watchedValue : [watchedValue];\r\n filterValue = Array.isArray(filterValue) ? filterValue?.filter(i => i) : [];\r\n filterValue = Array.isArray(filterValue) ? filterValue?.map((item) => Number(item)) : [];\r\n const isInOptions = updateOptions?.filter((item) =>\r\n Array.isArray(filterValue) ? filterValue.includes(item.id || item.value) : (item[filterKey] || item.value || item.id) == filterValue\r\n );\r\n\r\n if (Array.isArray(isInOptions) && isInOptions.length > 0) {\r\n getSelectedData?.(props.is_multiselect ? isInOptions : isInOptions[0], props.name);\r\n return true;\r\n }\r\n return false;\r\n //eslint-disable-next-line\r\n }, [props.is_multiselect, props.name, watchedValue, filterKey, getSelectedData, filteredOptions]);\r\n\r\n // Fetch options by ID\r\n const fetchIdOptions = useCallback(async () => {\r\n if (open) return;\r\n if (await handleSelectedValue(filteredOptions)) return;\r\n\r\n const condition = props.is_multiselect ?\r\n Array.isArray(watchedValue) && watchedValue.length > 0 :\r\n Boolean(watchedValue);\r\n\r\n if (condition) {\r\n setInitialLoading(true);\r\n const response = await fetchOptions('', { ...cf, '&id.in': watchedValue }, 1, false);\r\n setInitialLoading(false);\r\n\r\n if (response.length == 0 && setValue && !isInternalOptions) {\r\n // setValue(`${props.fieldArrayName}.${props.name}`, props.is_multiselect ? [] : null);\r\n }\r\n }\r\n //eslint-disable-next-line\r\n }, [open, watchedValue, JSON.stringify(cf)]);\r\n\r\n // Initial fetch\r\n const initialFetch = useCallback(async () => {\r\n const condition = JSON.stringify(cf) !== JSON.stringify(prevFilter);\r\n\r\n if (condition) {\r\n setPrevFilter(cf);\r\n setOptions([]);\r\n setIsAlreadyLoaded(false);\r\n setPagination({\r\n page: 1,\r\n hasMore: true,\r\n isLoadingMore: false,\r\n total: 0\r\n });\r\n }\r\n\r\n if (!isInternalOptions && !isAlreadyLoaded) {\r\n await fetchOptions(searchQuery, cf, 1, false);\r\n setIsAlreadyLoaded(true);\r\n }\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [cf, isInternalOptions, isAlreadyLoaded]);\r\n\r\n // Debounced search\r\n const debouncedSearch = useMemo(\r\n () => debounce(async (searchTerm: string) => {\r\n if (loading) return;\r\n\r\n if (!searchTerm && !isInternalOptions && searchInitiate) {\r\n setPagination({\r\n page: 1,\r\n hasMore: true,\r\n isLoadingMore: false,\r\n total: 0\r\n });\r\n await fetchOptions('', cf, 1, false);\r\n }\r\n if (searchTerm.length > 1 && !isInternalOptions) {\r\n setPagination({\r\n page: 1,\r\n hasMore: true,\r\n isLoadingMore: false,\r\n total: 0\r\n });\r\n await fetchOptions(searchTerm, cf, 1, false);\r\n }\r\n }, 700),\r\n //eslint-disable-next-line\r\n [isInternalOptions, searchInitiate, cf]\r\n );\r\n\r\n // Reset value function\r\n const resetValue = useCallback((field: any) => {\r\n field.onChange(props.is_multiselect ? [] : null);\r\n if (getSelectedData) {\r\n getSelectedData(null, props.name);\r\n }\r\n }, [props.is_multiselect, props.name, getSelectedData]);\r\n\r\n // Handle close\r\n const handleClose = useCallback(() => {\r\n setOpen(false);\r\n if (searchQuery.length > 0) {\r\n setIsAlreadyLoaded(false);\r\n }\r\n setSearchInitiate(false);\r\n setSearchQuery('');\r\n }, [searchQuery]);\r\n\r\n const handleModalOpen = useCallback(() => {\r\n setIsModalOpen(true);\r\n }, []);\r\n\r\n\r\n\r\n // Handle modal save\r\n const handleModalSave = useCallback(async (payload: any) => {\r\n if (!addConfig || !addConfig.api) {\r\n console.error('Add configuration is not properly set');\r\n return;\r\n }\r\n\r\n setIsAddLoading(true);\r\n try {\r\n const result = await addConfig.api(payload);\r\n setIsAddLoading(false);\r\n setIsModalOpen(false);\r\n if (!isInternalOptions) {\r\n setPagination({\r\n page: 1,\r\n hasMore: true,\r\n isLoadingMore: false,\r\n total: 0\r\n });\r\n setIsAlreadyLoaded(false);\r\n await fetchOptions('', cf, 1, false);\r\n }\r\n if (result && result.data) {\r\n const newValue = props.is_multiselect\r\n ? [...(watchedValue || []), result.data.id]\r\n : result.data.id;\r\n\r\n if (setValue) {\r\n setValue(`${props.fieldArrayName}.${props.name}`, newValue);\r\n }\r\n }\r\n } catch (error) {\r\n console.log(\"error\", error);\r\n setIsAddLoading(false);\r\n }\r\n\r\n\r\n }, [addConfig, isInternalOptions, fetchOptions, cf, props.is_multiselect, props.fieldArrayName, props.name, watchedValue, setValue]);\r\n\r\n // Effects\r\n useEffect(() => {\r\n if (handleOptions) {\r\n handleOptions(selectedValue);\r\n }\r\n }, [handleOptions, selectedValue]);\r\n\r\n useEffect(() => {\r\n if (open) {\r\n initialFetch();\r\n }\r\n }, [open, initialFetch]);\r\n\r\n useEffect(() => {\r\n fetchIdOptions();\r\n }, [fetchIdOptions]);\r\n\r\n useEffect(() => {\r\n if (refresh) {\r\n setPagination({\r\n page: 1,\r\n hasMore: true,\r\n isLoadingMore: false,\r\n total: 0\r\n });\r\n fetchOptions('', cf, 1, false);\r\n }\r\n }, [refresh, fetchOptions, cf]);\r\n\r\n useEffect(() => {\r\n if (open) {\r\n debouncedSearch(searchQuery);\r\n }\r\n return () => debouncedSearch.cancel();\r\n }, [searchQuery, open, debouncedSearch]);\r\n\r\n useEffect(() => {\r\n if (watchedValue && !open) {\r\n const selectedData = options?.filter((item) =>\r\n props.is_multiselect ?\r\n Array.isArray(watchedValue) && watchedValue.includes(item.id || item.value) :\r\n (item.id || item.value) == watchedValue\r\n );\r\n setSelectedOptions(selectedData || []);\r\n }\r\n }, [watchedValue, options, props.is_multiselect]);\r\n\r\n const removeUndefined = useCallback((selectOptions: any[]) => {\r\n return Array.isArray(selectOptions) ? selectOptions.filter(Boolean) : [];\r\n }, []);\r\n\r\n useEffect(() => {\r\n const config = dynamicSelectAdd(addType);\r\n setAddConfig(config);\r\n }, [addType])\r\n\r\n\r\n\r\n return (\r\n <Controller\r\n control={props.formControl}\r\n name={`${props.fieldArrayName}.${props.name}`}\r\n render={({ field, fieldState }) => (\r\n <>\r\n {props.placeholder == 'Select Currency' && setSelectedValue(field.value)}\r\n {showItemTooltip ? (\r\n <Tooltip\r\n title={getSelectedDataOptions?.label ? String(getSelectedDataOptions.label) : ''}\r\n placement='top'\r\n arrow\r\n slotProps={{\r\n popper: {\r\n modifiers: [{ name: 'offset', options: { offset: [0, -25] } }],\r\n },\r\n tooltip: {\r\n sx: { maxWidth: 500 },\r\n },\r\n }}\r\n >\r\n <span>\r\n <Select\r\n {...field}\r\n ref={selectRef}\r\n open={open}\r\n onOpen={() => {\r\n setOpen(true);\r\n setTimeout(() => {\r\n const searchInput = document.querySelector(\r\n `input[placeholder=\"Search ${props.label}\"]`\r\n ) as HTMLInputElement;\r\n console.log('Active Search input:', searchInput);\r\n searchInput?.focus();\r\n }, 150);\r\n }}\r\n onClose={handleClose}\r\n fullWidth\r\n dataPosition={props.position}\r\n dataName={`${props.fieldArrayName}.${props.name}`}\r\n placeholder={props.placeholder}\r\n label={props.label}\r\n defaultValue={props.defaultValue || (props.is_multiselect ? [] : '')}\r\n searchValue={searchQuery}\r\n required={props.formType == 'builder' ? false : props.required}\r\n size={props.size || 'small'}\r\n multiple={props.is_multiselect || false}\r\n disabled={props.disabled}\r\n sx={(props.is_multiselect && field?.value?.length) ? { \"& .MuiSelect-select\": { padding: '5.5px !important' } } : {}}\r\n variant='outlined'\r\n value={\r\n initialLoading\r\n ? (props.is_multiselect ? [] : '')\r\n : (field.value?.id || field.value || (props.is_multiselect ? [] : ''))\r\n }\r\n className={\r\n props.is_multiselect && removeUndefined(field.value)?.length\r\n ? 'MultiSelect filter-select'\r\n : ''\r\n }\r\n MenuProps={{\r\n PaperProps: {\r\n onScroll: handleScroll,\r\n style: { maxHeight: 300 }\r\n }\r\n }}\r\n\r\n renderValue={(selected: any) => {\r\n if (Array.isArray(selected)) {\r\n return (\r\n <ChipOrPlaceholder\r\n selectedLabel={props.selectedLabel}\r\n data={removeUndefined(selected)}\r\n placeholder={(loading || props.is_loading) ? <Loading /> : `${t('common.search')} ${props.label}`}\r\n onDelete={props.onChipRemove}\r\n disabled={props.disabled}\r\n chipProps={{\r\n sx: {\r\n background: '#ebf9f2',\r\n border: 0,\r\n // borderRadius: '15px',\r\n '& .MuiTypography-body1': {\r\n color: '#289b64',\r\n fontWeight: \"500\",\r\n }\r\n }\r\n }}\r\n />\r\n );\r\n } else {\r\n const selectedOption = filteredOptions.find(\r\n (option) => (option.value?.id || option.value) == selected\r\n );\r\n return (loading || props.is_loading) ? <Loading /> : selectedOption?.label ||\r\n (typeof props.label == 'string' ?\r\n `${t('common.search')} ${props.label}` :\r\n props.placeholder);\r\n }\r\n }}\r\n searchPlaceholder={`${t('common.search')} ${props.label}`}\r\n handleSearch={(text: string) => {\r\n setSearchQuery(text);\r\n setSearchInitiate(true);\r\n }}\r\n error={Boolean(fieldState.error?.message)}\r\n helperText={fieldState.error?.message || ''}\r\n onBlur={field.onBlur}\r\n input={\r\n <OutlinedInput\r\n label=''\r\n endAdornment={\r\n <InputAdornment position='end'>\r\n {(loading || props.is_loading) ? (\r\n <CircularProgress\r\n size={20}\r\n sx={{ mr: 3, color: \"#4AC08C\" }}\r\n />\r\n ) : (\r\n !props.disabled &&\r\n (props.is_multiselect ?\r\n (Array.isArray(field.value) && field.value.length > 0) :\r\n Boolean(field.value)) && showCancelButton && (\r\n <IconButton\r\n aria-label='clear selection'\r\n onClick={() => resetValue(field)}\r\n edge='end'\r\n sx={isRtl ? { ml: 2.5 } : { mr: 1.5 }}\r\n size='small'\r\n >\r\n <Close sx={{ fontSize: '1rem' }} />\r\n </IconButton>\r\n )\r\n )}\r\n </InputAdornment>\r\n }\r\n />\r\n }\r\n >\r\n {generateMenuItems({\r\n options: filteredOptions,\r\n multiple: Boolean(props.is_multiselect),\r\n placeholder: props.placeholder,\r\n values: field.value,\r\n with_checkboxes: true,\r\n field: props,\r\n disabledIds,\r\n onChange: field.onChange,\r\n handleChange,\r\n hasParent,\r\n t,\r\n // onFooterClick: () => {\r\n // if (props?.onFooterClick) {\r\n // props?.onFooterClick();\r\n // } else {\r\n // handleModalOpen();\r\n // }\r\n // }\r\n })}\r\n {props?.enable_footer &&\r\n <Box key=\"footer\" sx={{ position: 'sticky', bottom: 0, background: '#fff', zIndex: 1 }}>\r\n <Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\r\n <MenuItem sx={{ gap: 1 }} onClick={\r\n () => {\r\n if (props?.onFooterClick) {\r\n props?.onFooterClick();\r\n } else {\r\n handleModalOpen();\r\n }\r\n }\r\n\r\n }>\r\n <Add fontSize='small' />\r\n <Typography type='s4' color='theme.secondary.1000'>\r\n Create New {props.label}\r\n </Typography>\r\n </MenuItem>\r\n </Box>}\r\n {pagination.isLoadingMore && (\r\n <MenuItem disabled>\r\n <Box sx={{ display: 'flex', justifyContent: 'center', width: '100%' }}>\r\n <CircularProgress size={20} />\r\n </Box>\r\n </MenuItem>\r\n )}\r\n </Select>\r\n </span>\r\n </Tooltip>\r\n ) : (\r\n <Select\r\n {...field}\r\n ref={selectRef}\r\n open={open}\r\n onOpen={() => {\r\n setOpen(true);\r\n setTimeout(() => {\r\n const searchInput = document.querySelector(\r\n `input[placeholder=\"Search ${props.label}\"]`\r\n ) as HTMLInputElement;\r\n console.log('Active Search input:', searchInput);\r\n searchInput?.focus();\r\n }, 150);\r\n }}\r\n onClose={handleClose}\r\n fullWidth\r\n dataPosition={props.position}\r\n dataName={`${props.fieldArrayName}.${props.name}`}\r\n placeholder={props.placeholder}\r\n label={props.label}\r\n defaultValue={props.defaultValue || (props.is_multiselect ? [] : '')}\r\n searchValue={searchQuery}\r\n required={props.formType == 'builder' ? false : props.required}\r\n size={props.size || 'small'}\r\n multiple={props.is_multiselect || false}\r\n disabled={props.disabled}\r\n sx={(props.is_multiselect && field?.value?.length) ? { \"& .MuiSelect-select\": { padding: '5.5px !important' } } : {}}\r\n variant='outlined'\r\n value={\r\n initialLoading\r\n ? (props.is_multiselect ? [] : '')\r\n : (field.value?.id || field.value || (props.is_multiselect ? [] : ''))\r\n }\r\n className={\r\n props.is_multiselect && removeUndefined(field.value)?.length\r\n ? 'MultiSelect filter-select'\r\n : ''\r\n }\r\n MenuProps={{\r\n PaperProps: {\r\n onScroll: handleScroll,\r\n style: { maxHeight: 300 }\r\n }\r\n }}\r\n\r\n renderValue={(selected: any) => {\r\n if (Array.isArray(selected)) {\r\n return (\r\n <ChipOrPlaceholder\r\n selectedLabel={props.selectedLabel}\r\n data={removeUndefined(selected)}\r\n placeholder={(loading || props.is_loading) ? <Loading /> : `${t('common.search')} ${props.label}`}\r\n onDelete={props.onChipRemove}\r\n disabled={props.disabled}\r\n chipProps={{\r\n sx: {\r\n background: '#ebf9f2',\r\n border: 0,\r\n // borderRadius: '15px',\r\n '& .MuiTypography-body1': {\r\n color: '#289b64',\r\n fontWeight: \"500\",\r\n }\r\n }\r\n }}\r\n />\r\n );\r\n } else {\r\n const selectedOption = filteredOptions.find(\r\n (option) => (option.value?.id || option.value) == selected\r\n );\r\n return (loading || props.is_loading) ? <Loading /> : selectedOption?.label ||\r\n (typeof props.label == 'string' ?\r\n `${t('common.search')} ${props.label}` :\r\n props.placeholder);\r\n }\r\n }}\r\n searchPlaceholder={`${t('common.search')} ${props.label}`}\r\n handleSearch={(text: string) => {\r\n setSearchQuery(text);\r\n setSearchInitiate(true);\r\n }}\r\n error={Boolean(fieldState.error?.message)}\r\n helperText={fieldState.error?.message || ''}\r\n onBlur={field.onBlur}\r\n input={\r\n <OutlinedInput\r\n label=''\r\n endAdornment={\r\n <InputAdornment position='end'>\r\n {(loading || props.is_loading) ? (\r\n <CircularProgress\r\n size={20}\r\n sx={{ mr: 3, color: \"#4AC08C\" }}\r\n />\r\n ) : (\r\n !props.disabled &&\r\n (props.is_multiselect ?\r\n (Array.isArray(field.value) && field.value.length > 0) :\r\n Boolean(field.value)) && showCancelButton && (\r\n <IconButton\r\n aria-label='clear selection'\r\n onClick={() => resetValue(field)}\r\n edge='end'\r\n sx={isRtl ? { ml: 2.5 } : { mr: 1.5 }}\r\n size='small'\r\n >\r\n <Close sx={{ fontSize: '1rem' }} />\r\n </IconButton>\r\n )\r\n )}\r\n </InputAdornment>\r\n }\r\n />\r\n }\r\n >\r\n {generateMenuItems({\r\n options: filteredOptions,\r\n multiple: Boolean(props.is_multiselect),\r\n placeholder: props.placeholder,\r\n values: field.value,\r\n with_checkboxes: true,\r\n field: props,\r\n disabledIds,\r\n onChange: field.onChange,\r\n handleChange,\r\n hasParent,\r\n t,\r\n // onFooterClick: () => {\r\n // if (props?.onFooterClick) {\r\n // props?.onFooterClick();\r\n // } else {\r\n // handleModalOpen();\r\n // }\r\n // }\r\n })}\r\n {props?.enable_footer &&\r\n <Box key=\"footer\" sx={{ position: 'sticky', bottom: 0, background: '#fff', zIndex: 1 }}>\r\n <Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\r\n <MenuItem sx={{ gap: 1 }} onClick={\r\n () => {\r\n if (props?.onFooterClick) {\r\n props?.onFooterClick();\r\n } else {\r\n handleModalOpen();\r\n }\r\n }\r\n\r\n }>\r\n <Add fontSize='small' />\r\n <Typography type='s4' color='theme.secondary.1000'>\r\n Create New {props.label}\r\n </Typography>\r\n </MenuItem>\r\n </Box>}\r\n {pagination.isLoadingMore && (\r\n <MenuItem disabled>\r\n <Box sx={{ display: 'flex', justifyContent: 'center', width: '100%' }}>\r\n <CircularProgress size={20} />\r\n </Box>\r\n </MenuItem>\r\n )}\r\n </Select>\r\n )}\r\n\r\n {/* Modal for adding new items */}\r\n {addConfig && addConfig.component && (\r\n <>\r\n {React.createElement(addConfig.component, {\r\n isOpen: isModalOpen,\r\n setIsOpen: setIsModalOpen,\r\n isLoading: isAddLoading,\r\n onSave: handleModalSave,\r\n modalProps: {\r\n maxWidth: 'md',\r\n fullWidth: true\r\n },\r\n ...props?.modalComponentProps\r\n })}\r\n </>\r\n )}\r\n\r\n {props.is_multiselect && Array.isArray(field.value) && (\r\n <SelectedItems\r\n data={field.value}\r\n options={filteredOptions}\r\n />\r\n )}\r\n </>\r\n )}\r\n />\r\n );\r\n});\r\n\r\nDynamicSearchSelect.propTypes = {\r\n name: PropTypes.string.isRequired,\r\n placeholder: PropTypes.string.isRequired,\r\n label: PropTypes.string.isRequired,\r\n size: PropTypes.string,\r\n options: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\r\n value: PropTypes.any\r\n })\r\n ).isRequired,\r\n formControl: PropTypes.object.isRequired,\r\n defaultValue: PropTypes.any,\r\n fieldArrayName: PropTypes.string.isRequired,\r\n id: PropTypes.string,\r\n required: PropTypes.bool,\r\n is_multiselect: PropTypes.bool,\r\n position: PropTypes.number,\r\n formType: PropTypes.string,\r\n typeOfField: PropTypes.string,\r\n disabled: PropTypes.bool,\r\n onChipRemove: PropTypes.func,\r\n enable_footer: PropTypes.bool,\r\n footer_action: PropTypes.string,\r\n onFooterClick: PropTypes.func,\r\n is_loading: PropTypes.bool,\r\n selectedLabel: PropTypes.string,\r\n isInternal: PropTypes.bool,\r\n disabledIds: PropTypes.array,\r\n getSelectedData: PropTypes.func,\r\n attributes: PropTypes.array,\r\n handleChange: PropTypes.func,\r\n hasParent: PropTypes.bool,\r\n sortOrder: PropTypes.string,\r\n apiType: PropTypes.string,\r\n handleOptions: PropTypes.func,\r\n filterKey: PropTypes.string,\r\n customeFilter: PropTypes.object,\r\n refresh: PropTypes.bool,\r\n addType: PropTypes.string,\r\n modalComponentProps: PropTypes.object,\r\n showCancelButton: PropTypes.bool,\r\n customFetchApi: PropTypes.func\r\n};\r\n\r\nexport default DynamicSearchSelect;","/* eslint-disable @typescript-eslint/no-unused-vars */\r\n/* eslint-disable unused-imports/no-unused-vars */\r\nimport { styled } from '@mui/material/styles';\r\nimport Typography from \"../typography/typography\";\r\nimport ReactPhoneInput, { CountryData } from \"react-phone-input-2\";\r\nimport \"react-phone-input-2/lib/material.css\";\r\nimport { images } from \"../../assets/images\";\r\nimport { useLanguage } from \"../../hooks/useLangauge\";\r\nimport { memo, useEffect } from \"react\";\r\n\r\nconst StyledInput = styled(ReactPhoneInput)<{ isRtl: boolean }>(({ theme: { palette }, isRtl }) => ({\r\n \"&:hover\": {\r\n border: \"none\",\r\n },\r\n \"&.react-tel-input\": {\r\n \".form-control\": {\r\n borderRadius: \"0.25rem\",\r\n padding: \"8px 8px 8px 55px\", // Ensure space for flag on the left\r\n border: `1px solid ${palette.theme?.secondary[300]}`,\r\n fontSize: \"0.875rem\",\r\n width: \"100%\",\r\n maxHeight: \"36.13px\",\r\n direction: \"ltr\", // Force LTR direction for input to start from left\r\n textAlign: \"left\", // Force left alignment for input value\r\n\r\n \":hover\": {\r\n border: `1px solid ${palette.theme?.secondary[400]}`,\r\n },\r\n\r\n \":focus\": {\r\n border: `1px solid ${palette.theme?.primary[600]}`,\r\n boxShadow: \"none\",\r\n },\r\n \":disabled\": {\r\n background: palette.theme?.secondary[200],\r\n color: palette.theme?.secondary[800],\r\n },\r\n\r\n \"&.invalid-number\": {\r\n border: `1px solid ${palette.theme?.error[600]}`,\r\n \":focus\": {\r\n boxShadow: \"none\",\r\n },\r\n },\r\n },\r\n\r\n \".flag-dropdown\": {\r\n left: \"0\",\r\n right: \"auto\",\r\n borderRadius: \"0.25rem 0 0 0.25rem\",\r\n\r\n \".selected-flag\": {\r\n borderRadius: \"0.25rem 0 0 0.25rem\",\r\n\r\n \"&:hover\": {\r\n backgroundColor: palette.theme?.secondary[100],\r\n },\r\n },\r\n },\r\n\r\n \".country-list\": {\r\n left: isRtl ? \"auto\" : \"0\",\r\n right: isRtl ? \"0\" : \"auto\",\r\n\r\n \".search\": {\r\n padding: \"0.5rem 0.5rem 0.5rem 0.75rem\",\r\n borderBottom: \"1px solid #F3F2F2\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n direction: isRtl ? \"rtl\" : \"ltr\",\r\n\r\n \".search-emoji\": {\r\n position: \"absolute\",\r\n left: isRtl ? \"auto\" : \"1.25rem\",\r\n right: isRtl ? \"1.25rem\" : \"auto\",\r\n\r\n \":first-child\": {\r\n display: \"block\",\r\n color: \"transparent\",\r\n background: `url(${images.search})`,\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundPosition: \"center\",\r\n },\r\n },\r\n\r\n \".search-box\": {\r\n width: \"100%\",\r\n marginLeft: \"0rem\",\r\n border: `1px solid ${palette.theme?.secondary[200]}`,\r\n backgroundColor: palette.theme?.secondary[100],\r\n borderRadius: \"0.5rem\",\r\n padding: \"0.4rem\",\r\n paddingLeft: isRtl ? \"0.4rem\" : \"2rem\",\r\n paddingRight: isRtl ? \"2rem\" : \"0.4rem\",\r\n fontSize: \"0.8125rem\",\r\n direction: isRtl ? \"rtl\" : \"ltr\",\r\n textAlign: isRtl ? \"right\" : \"left\",\r\n\r\n \":hover\": {\r\n border: `1px solid ${palette.theme?.secondary[300]}`,\r\n },\r\n\r\n \":focus\": {\r\n border: `1px solid ${palette.theme?.primary[600]}`,\r\n },\r\n },\r\n },\r\n\r\n \".country\": {\r\n fontSize: \"0.8125rem\",\r\n direction: isRtl ? \"rtl\" : \"ltr\",\r\n textAlign: isRtl ? \"right\" : \"left\",\r\n\r\n \".dial-code\": {\r\n fontSize: \"0.75rem\",\r\n position: \"absolute\",\r\n right: isRtl ? \"auto\" : \"0.5rem\",\r\n left: isRtl ? \"0.5rem\" : \"auto\",\r\n },\r\n },\r\n },\r\n },\r\n}));\r\n\r\ninterface IPhoneInput {\r\n error?: boolean;\r\n name?: string;\r\n dataPosition?: number;\r\n dataName?: string;\r\n label: string;\r\n required?: boolean;\r\n placeholder?: string;\r\n default_value?: string;\r\n onChange?: (e: any) => void;\r\n disabled?: boolean;\r\n setCountryCodeField?: (country: CountryData) => void;\r\n helperText?: string;\r\n isInlineEditing?: boolean\r\n}\r\n\r\nfunction fixPhoneDropdown() {\r\n let dropdown, input;\r\n\r\n const positionDropdown = () => {\r\n if (!dropdown || !input) return;\r\n const rect = input.getBoundingClientRect();\r\n\r\n dropdown.style.position = \"fixed\";\r\n dropdown.style.top = rect.bottom + \"px\";\r\n dropdown.style.left = rect.left + \"px\";\r\n dropdown.style.zIndex = \"2000\";\r\n };\r\n\r\n document.addEventListener(\"click\", () => {\r\n dropdown = document.querySelector(\".react-tel-input .country-list\");\r\n input = document.querySelector(\".react-tel-input input\");\r\n\r\n if (dropdown && input && !document.body.contains(dropdown)) {\r\n document.body.appendChild(dropdown);\r\n }\r\n\r\n positionDropdown();\r\n });\r\n\r\n // reposition on scroll (any container) and resize\r\n window.addEventListener(\"scroll\", positionDropdown, true); // true = capture all scrolls\r\n window.addEventListener(\"resize\", positionDropdown);\r\n}\r\n\r\n\r\nconst HelperTextWrapper = styled('div')(() => ({\r\n marginTop: '0.4rem',\r\n}));\r\n\r\nconst PhoneInput = memo(({\r\n name,\r\n error = false,\r\n dataName,\r\n dataPosition,\r\n label,\r\n required = false,\r\n placeholder,\r\n default_value,\r\n onChange,\r\n disabled,\r\n setCountryCodeField,\r\n helperText,\r\n isInlineEditing = false,\r\n ...rest\r\n}: IPhoneInput) => {\r\n const { isRtl } = useLanguage();\r\n\r\n useEffect(() => {\r\n if (isInlineEditing) {\r\n fixPhoneDropdown(isInlineEditing)\r\n }\r\n }, [isInlineEditing])\r\n\r\n useEffect(() => {\r\n if (typeof setCountryCodeField === \"function\") {\r\n setCountryCodeField?.({ dialCode: \"971\" } as CountryData);\r\n }\r\n }, [])\r\n\r\n return (\r\n <>\r\n <Typography\r\n type=\"s5\"\r\n weight=\"medium\"\r\n mb={0.5}\r\n color={error ? \"theme.error.600\" : \"theme.secondary.800\"}\r\n data-position={dataPosition}\r\n data-name={dataName}\r\n >\r\n {label} {required && <span className=\"requiredStar\">*</span>}\r\n </Typography>\r\n <StyledInput\r\n dropdownContainer={document.body}\r\n isRtl={isRtl}\r\n specialLabel={\"\"}\r\n enableSearch\r\n searchPlaceholder=\"Search Country\"\r\n isValid={!error}\r\n country={\"ae\"}\r\n searchNotFound=\"Not Found!\"\r\n inputProps={{\r\n name: name,\r\n required: required,\r\n }}\r\n placeholder={placeholder}\r\n value={default_value || rest?.value}\r\n onChange={(value, country) => {\r\n setCountryCodeField?.(country as CountryData);\r\n onChange?.(value);\r\n }}\r\n disabled={disabled}\r\n />\r\n {helperText && (\r\n <HelperTextWrapper>\r\n <Typography\r\n type=\"s5\"\r\n color={error ? \"theme.error.600\" : \"theme.secondary.600\"}\r\n >\r\n {helperText}\r\n </Typography>\r\n </HelperTextWrapper>\r\n )}\r\n </>\r\n );\r\n});\r\n\r\nexport { PhoneInput };\r\nexport default PhoneInput;","import { Controller } from \"react-hook-form\";\nimport PropTypes from \"prop-types\";\n\nimport \"./element.scss\";\nimport PhoneInput from \"../../../phone-input/phone-input\";\nimport { memo } from \"react\";\n\nconst DynamicPhone = memo((props: any) => {\n return (\n <Controller\n control={props.formControl}\n name={`${props.fieldArrayName}.${props.name}`}\n render={({ field,fieldState }) => (\n <PhoneInput\n {...field}\n dataPosition={props.position}\n dataName={`${props.fieldArrayName}.${props.name}`}\n label={props.label}\n required={props.formType === \"builder\" ? false : props.required}\n placeholder={props.placeholder}\n default_value={props.default_value}\n onChange={(val) => field.onChange(val)}\n error={Boolean(fieldState.error?.message)}\n disabled={props.disabled}\n helperText={fieldState.error?.message || \"\"}\n setCountryCodeField={props.setCountryCodeField}\n />\n )}\n />\n );\n});\n\nDynamicPhone.propTypes = {\n formControl: PropTypes.shape({\n register: PropTypes.func.isRequired,\n setValue: PropTypes.func,\n }).isRequired,\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n fieldArrayName: PropTypes.string,\n required: PropTypes.bool,\n position: PropTypes.number,\n formType: PropTypes.string,\n placeholder: PropTypes.string,\n default_value: PropTypes.string,\n type: PropTypes.string,\n typeOfField: PropTypes.string,\n disabled: PropTypes.bool,\n setCountryCodeField: PropTypes.func,\n};\n\nexport { DynamicPhone };\nexport default DynamicPhone;\n","import React from 'react';\r\n\r\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\r\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\r\nimport { DateTimePicker as Date } from '@mui/x-date-pickers/DateTimePicker';\r\nimport Typography from '../typography/typography';\r\nimport { styled } from '@mui/material/styles';\r\nimport logo from '../../assets/images';\r\nimport dayjs from 'dayjs';\r\nimport './date-time-picker.scss'\r\n\r\nexport interface DatePickerProps {\r\n\tlabel: string;\r\n\tdisabled?: boolean;\r\n\terror?: boolean;\r\n\tname?: string;\r\n\tvalue?: string | number | Date;\r\n\thelperText?: string;\r\n\tdataPosition?: number;\r\n\tdataName?: string;\r\n\tdisableFutureDates?: boolean;\r\n\tplaceholder?: string;\r\n\trequired?: boolean;\r\n\tdisablePastDates?: boolean;\r\n\tdefaultValue?: string | number | Date | undefined;\r\n\ttextFieldProps?: any;\r\n\tformat?: string;\r\n}\r\n\r\nconst StyledDatePicker = styled(Date)(({ theme: { palette } }) => ({\r\n\t'& .MuiOutlinedInput-root': {\r\n\t\tpadding: '0',\r\n\t\tcolor: palette.theme?.secondary[800],\r\n\t\t'& fieldset': {\r\n\t\t\tborderColor: palette.theme?.secondary[400]\r\n\t\t},\r\n\t\t'&:hover fieldset': {\r\n\t\t\tborderColor: palette.theme?.secondary[500]\r\n\t\t},\r\n\t\t'&.Mui-focused fieldset': {\r\n\t\t\tborderWidth: '0.0625rem',\r\n\t\t\tborderStyle: 'solid',\r\n\t\t\tborderColor: palette.theme?.primary[700]\r\n\t\t},\r\n\t\t'&.Mui-error fieldset': {\r\n\t\t\tborderColor: palette.theme?.error[600]\r\n\t\t},\r\n\t\t'&.Mui-disabled': {\r\n\t\t\tbackground: palette.theme?.secondary[200],\r\n\t\t\tcolor: palette.theme?.secondary[800]\r\n\t\t},\r\n\t\t'& .MuiInputBase-input::placeholder': {\r\n\t\t\tcolor: palette.theme?.secondary[800],\r\n\t\t\topacity: 1\r\n\t\t}\r\n\t},\r\n\t'& .MuiFormHelperText-root': {\r\n\t\tmarginLeft: 0,\r\n\t\tcolor: palette.theme?.secondary[800],\r\n\t\t'&.Mui-error': {\r\n\t\t\tcolor: palette.theme?.error[600]\r\n\t\t}\r\n\t},\r\n\t'& .MuiIconButton-root': {\r\n\t\tmarginRight: 0\r\n\t},\r\n\t'& .MuiPickersCalendarHeader-labelContainer': {\r\n\t\tfontWeight: 600\r\n\t}\r\n}));\r\n\r\nconst DateTimePicker = (props: DatePickerProps) => {\r\n\tconst {\r\n\t\tlabel,\r\n\t\tdisabled,\r\n\t\terror,\r\n\t\thelperText,\r\n\t\tdataName,\r\n\t\tdataPosition,\r\n\t\tdisableFutureDates = false,\r\n\t\tplaceholder,\r\n\t\trequired = false,\r\n\t\tdisablePastDates = false,\r\n\t\tdefaultValue,\r\n\t\ttextFieldProps,\r\n\t\tformat,\r\n\t\t...rest\r\n\t} = props;\r\n\r\n\treturn (\r\n\t\t<LocalizationProvider dateAdapter={AdapterDayjs}>\r\n\t\t\t{label && (\r\n\t\t\t\t<Typography\r\n\t\t\t\t\ttype='s5'\r\n\t\t\t\t\tweight='medium'\r\n\t\t\t\t\tmb={0.5}\r\n\t\t\t\t\tcolor={error ? 'theme.error.600' : 'theme.secondary.800'}\r\n\t\t\t\t\tdata-position={dataPosition}\r\n\t\t\t\t\tdata-name={dataName}>\r\n\t\t\t\t\t{label} {required && <span className='requiredStar'>*</span>}\r\n\t\t\t\t</Typography>\r\n\t\t\t)}\r\n\t\t\t<StyledDatePicker\r\n\t\t\t\tdisabled={disabled}\r\n\t\t\t\tdisableFuture={disableFutureDates}\r\n\t\t\t\tdisablePast={disablePastDates}\r\n\t\t\t\tslotProps={{\r\n\t\t\t\t\ttextField: {\r\n\t\t\t\t\t\thelperText: helperText,\r\n\t\t\t\t\t\terror: error,\r\n\t\t\t\t\t\tplaceholder: placeholder || 'MM/DD/YYYY HH:mm:ss',\r\n\t\t\t\t\t\t...textFieldProps\r\n\t\t\t\t\t\t// required: required,\r\n\t\t\t\t\t}\r\n\t\t\t\t}}\r\n\t\t\t\tformat={format || 'MM/DD/YYYY HH:mm:ss'}\r\n\t\t\t\tslots={{ openPickerIcon: logo.CalenderIcon }}\r\n\t\t\t\t{...rest}\r\n\t\t\t\tdefaultValue={defaultValue ? dayjs(defaultValue) : undefined}\r\n\t\t\t\tclassName='datePicker'\r\n\t\t\t/>\r\n\t\t</LocalizationProvider>\r\n\t);\r\n};\r\n\r\nexport { DateTimePicker };\r\nexport default DateTimePicker;\r\n","import { Box, styled } from \"@mui/material\";\nimport logo from \"../../assets/images\";\nimport Button from \"../button/button\";\nimport Typography from \"../typography/typography\";\n// import { useEffect, useState } from \"react\";\nimport { Document } from \"../icons\";\nimport { enqueueSnackbar } from \"notistack\";\nimport { memo } from \"react\";\n// import Avatar from \"../avatar/avatar\";\n\nexport interface UploadImageProps {\n type?: string;\n label: string;\n disabled?: boolean;\n error?: boolean;\n dataPosition?: number;\n dataName?: string;\n required?: boolean;\n max_size?: number;\n name: string;\n value: string;\n onChange: (e: any) => any;\n multiple: boolean\n}\nconst UploadMedia = memo((props: UploadImageProps) => {\n const {\n type,\n label,\n disabled,\n error,\n dataName,\n dataPosition,\n required,\n max_size = 20,\n onChange,\n name,\n value,\n multiple,\n ...rest\n } = props;\n\n const VisuallyHiddenInput = styled(\"input\")({\n clip: \"rect(0 0 0 0)\",\n clipPath: \"inset(50%)\",\n height: 1,\n overflow: \"hidden\",\n position: \"absolute\",\n bottom: 0,\n left: 0,\n whiteSpace: \"nowrap\",\n width: 1,\n });\n\n // const [selectedFile, setSelectedFile] = useState<string | null>(null);\n const StyledButton = styled(Button)(({ theme: { palette } }) => ({\n marginBottom: 8,\n \"&.MuiButton-outlined\": {\n color: palette.theme?.primary[1000],\n },\n \"&.Mui-disabled\": {\n background: palette.theme?.secondary[200],\n color: palette.theme?.secondary[800],\n borderWidth: \"0.0625rem\",\n borderStyle: \"solid\",\n borderColor: palette.theme?.secondary[400],\n },\n }));\n\n const allowedImageTypes = [\n \"image/jpeg\", // JPG, JPEG\n \"image/png\", // PNG\n \"image/gif\", // GIF\n \"image/bmp\", // BMP\n \"image/webp\", // WebP\n \"image/svg+xml\", // SVG\n \"image/tiff\", // TIFF\n \"image/x-icon\", // ICO (icon files)\n \"image/heic\", // HEIC (High Efficiency Image Format)\n \"image/heif\"\n ]\n const allowedFileTypes = [\n \"application/pdf\",\n \"application/msword\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n 'application/vnd.ms-powerpoint',\n 'application/vnd.oasis.opendocument.text',\n 'text/csv',\n 'text/plain',\n 'application/rtf',\n 'application/vnd.ms-excel',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'application/vnd.oasis.opendocument.spreadsheet',\n 'application/vnd.oasis.opendocument.presentation',\n \"image/jpeg\", // JPG, JPEG\n \"image/png\", // PNG\n \"image/gif\", // GIF\n \"image/bmp\", // BMP\n \"image/webp\", // WebP\n \"image/svg+xml\", // SVG\n \"image/tiff\", // TIFF\n \"image/x-icon\", // ICO (icon files)\n \"image/heic\", // HEIC (High Efficiency Image Format)\n \"image/heif\"\n ];\n\n const isValidFileType = (file: any) => {\n if (type === \"image\") {\n return allowedImageTypes.includes(file.type);\n } else if (type === 'file') {\n return allowedFileTypes.includes(file.type);\n }\n };\n\n\n const handleUpload = (e: any) => {\n const files = [...e.target.files];\n const filterredFiles = files.map(file => {\n if (file && file.size <= max_size * 1024 * 1024) {\n if (isValidFileType(file)) {\n return file\n } else {\n enqueueSnackbar(`Invalid file type for ${file.name}. Please upload a valid document.`, { variant: 'error' })\n return null\n }\n }\n })?.filter(Boolean)\n onChange(multiple ? (value?.length ? [...value, ...filterredFiles] : filterredFiles) : filterredFiles[0]);\n };\n\n const getFileName = (file) => {\n if (!file) return \"\"\n if (file instanceof File) {\n return file.name\n } else if(typeof file === 'string') { \n const parts = file?.split('/');\n return parts?.[parts?.length - 1];\n } else if(Array.isArray(file) && file?.length > 0) {\n return file.map(f => {\n const parts = f?.split('/');\n return parts?.[parts?.length - 1];\n }).join(', ')\n }\n }\n // const getImagePreview = (file) => {\n // if (!file) return \"\"\n // if (file instanceof File) {\n // let previewUrl:any = ''\n // const reader = new FileReader();\n // reader.onload = () => {\n // previewUrl = reader.result;\n // };\n // reader.readAsDataURL(file);\n\n // return previewUrl\n // } else {\n // return file.includes(S3_BUCKET_URL) ? file : S3_BUCKET_URL + file\n // }\n // }\n\n const getSelectedFiles = (files: any) => {\n\n if (files) {\n if (Array.isArray(files)) {\n return files.map(file => (\n <Box display=\"flex\" gap={1} mb={1} alignItems='center'>\n {type === 'file' && <Document fontSize=\"small\" />}\n {/* {type === 'image' && <Avatar src={getImagePreview(file)} />} */}\n <Typography\n type=\"s5\"\n weight=\"medium\"\n color={error ? \"theme.error.600\" : \"theme.secondary.800\"}\n data-position={dataPosition}\n data-name={dataName}\n noWrap\n >\n {getFileName(file)}\n </Typography>\n </Box>\n ))\n } else {\n return (\n <Box display=\"flex\" gap={1} alignItems='center'>\n {type === 'file' && <Document fontSize=\"small\" />}\n {/* {type === 'image' && <Avatar src={getImagePreview(files)} />} */}\n <Typography\n type=\"s5\"\n weight={\"medium\"}\n color={error ? \"theme.error.600\" : \"theme.secondary.800\"}\n data-position={dataPosition}\n data-name={dataName}\n noWrap\n >\n {getFileName(files)}\n </Typography>\n </Box>\n )\n }\n }\n }\n\n // useEffect(() => {\n // if(!multiple) {\n // const parts = value?.split('/');\n // // const documentPath = parts?.slice(3, parts.length - 1).join('/');\n // const filename = parts?.[parts?.length - 1];\n\n \n // if (value) setSelectedFile(filename)\n // }\n // }, [multiple, value])\n\n return (\n <>\n <Typography\n type=\"s5\"\n weight={\"medium\"}\n mb={0.5}\n color={error ? \"theme.error.600\" : \"theme.secondary.800\"}\n data-position={dataPosition}\n data-name={dataName}\n >\n {label} {required && \" *\"}\n </Typography>\n <div style={{ display: \"flex\" }}>\n <StyledButton\n component=\"label\"\n startIcon={\n <img\n src={type === \"image\" ? logo.uploadImage : logo.uploadDocument}\n />\n }\n variant=\"outlined\"\n disabled={disabled}\n >\n <Typography type='s5' weight=\"medium\" color=\"theme.secondary.1000\">Upload</Typography>\n <VisuallyHiddenInput\n type=\"file\"\n accept={type === \"file\" ? allowedFileTypes.join(\",\") : (type === 'image' ? allowedImageTypes.join(\",\") : undefined)}\n // required={required}\n onChange={handleUpload}\n name={name}\n multiple={multiple}\n {...rest}\n />\n </StyledButton>\n </div >\n {getSelectedFiles(value)}\n\n </>\n );\n})\n\nexport { UploadMedia };\nexport default UploadMedia;\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\r\n\r\nimport { Box } from '@mui/material';\r\n\r\nimport Typography from '../../typography/typography';\r\nimport DatePicker from '../../date-picker/date-picker';\r\nimport DateTimePicker from '../../date-time-picker/date-time-picker';\r\nimport TextField from '../../text-field/text-field';\r\nimport UploadMedia from '../../upload-media/upload-media';\r\n\r\nimport * as yup from 'yup';\r\nimport _ from 'lodash';\r\nimport dayjs from 'dayjs';\r\nimport PhoneInput from '../../phone-input/phone-input';\r\nimport Checkbox from '../../checkbox/checkbox';\r\nimport SearchableSelect from '../../searchable-select';\r\n\r\ninterface IInlineEditFields {\r\n\tcell: any;\r\n\tcolumn: any;\r\n\trow: any;\r\n\ttable: any;\r\n\tcol: any;\r\n\tcallback: (value: any, column: any, rowId: any) => any;\r\n\terrors: any;\r\n\tvalidationSchema: any;\r\n\tsetValidationErrors: any;\r\n\tonChangeRowField?: (e: any, type: string, row: any) => any;\r\n\tgetSelectedData: any\r\n}\r\nconst InlineEditFields: React.FC<IInlineEditFields> = ({\r\n\t// cell,\r\n\tcolumn,\r\n\trow,\r\n\t// table,\r\n\tcol,\r\n\t// callback,\r\n\terrors,\r\n\tvalidationSchema,\r\n\tsetValidationErrors,\r\n\tonChangeRowField,\r\n\tgetSelectedData\r\n}) => {\r\n\r\n\tconst [inputValue, setInputValue] = useState<any>();\r\n\tconst [isInitialSet, setIsInitialSet] = useState<any>(false);\r\n\tconst customFilter = useRef(null)\r\n\t// ** Getting only editing enabled fields.\r\n\tconst editCols = row\r\n\t\t.getAllCells()\r\n\t\t.map((col: any) => col.column.columnDef)\r\n\t\t.filter(\r\n\t\t\t(col: any) =>\r\n\t\t\t\tcol?.enableEditing === undefined || col?.enableEditing === true\r\n\t\t);\r\n\r\n\tconst editVariant = col.editVariant;\r\n\tconst fieldProperties = column.columnDef?.editProperties || {};\r\n\r\n\t// ** Default and Dynamic disbaling a field with row data\r\n\tlet fieldDisbled = false;\r\n\tif (fieldProperties?.disable) {\r\n\t\tif (typeof fieldProperties.disable === 'function') {\r\n\t\t\tfieldDisbled = Boolean(fieldProperties?.disable(row, row._valuesCache));\r\n\t\t} else {\r\n\t\t\tfieldDisbled = Boolean(fieldProperties.disable);\r\n\t\t}\r\n\t}\r\n\r\n\tconst handleCustomFilter = useCallback(async (row, values) => {\r\n\r\n\t\ttry {\r\n\t\t\tif (typeof fieldProperties.customeFilter === 'function') {\r\n\t\t\t\tconst filter = await fieldProperties.customeFilter(row, values);\r\n\t\t\t\tcustomFilter.current = filter;\r\n\t\t\t\treturn filter;\r\n\t\t\t} else {\r\n\t\t\t\tcustomFilter.current = fieldProperties?.customeFilter;\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [fieldProperties, row, row._valuesCache]);\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\thandleCustomFilter(row, row._valuesCache)\r\n\t}, [handleCustomFilter, row, row._valuesCache]);\r\n\t// ** Setting a default value for edit mode.\r\n\tconst valueKey = fieldProperties?.valueKey;\r\n\tlet defaultValue: any = '';\r\n\r\n\tif (editVariant === 'select' && fieldProperties?.is_multiple) {\r\n\t\tdefaultValue = valueKey ? _.get(row.original, valueKey, []) : [];\r\n\t} else {\r\n\t\tdefaultValue = valueKey\r\n\t\t\t? _.get(row.original, valueKey, row.original[column.id])\r\n\t\t\t: row.original[column.id];\r\n\t}\r\n\r\n\t// ** Validate a field with Material Table Validation Schema.\r\n\tconst validate = async (value: any) => {\r\n\t\ttry {\r\n\t\t\t// const v = await validationSchema.validateAt( // * * This line has commented for rerendering purpose\r\n\t\t\tawait validationSchema.validateAt(\r\n\t\t\t\tcolumn.id,\r\n\t\t\t\t{\r\n\t\t\t\t\t[column.id]: value\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tabortEarly: false\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t\t// if (v) { // * * The if condition has commented for rerendering purpose\r\n\t\t\tconst fe: any = {}; // field error\r\n\t\t\tfor (const e in errors) {\r\n\t\t\t\tif (e != column.id) {\r\n\t\t\t\t\tfe[e] = errors[e];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tsetValidationErrors(fe);\r\n\t\t\t// }\r\n\t\t} catch (err) {\r\n\t\t\tif (err instanceof yup.ValidationError) {\r\n\t\t\t\tconst e: Record<string, string> = {};\r\n\t\t\t\terr.inner.forEach((error) => {\r\n\t\t\t\t\tif (error.path) {\r\n\t\t\t\t\t\te[error.path] = error.message;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tconst em = { ...errors, ...e };\r\n\t\t\t\tsetValidationErrors(em);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\r\n\r\n\t// ** Detect onChnage to perform the action on an input change.\r\n\tconst onChange = async (e: any, type: string, selectedData: any) => {\r\n\t\tconst data = selectedData\r\n\t\tlet value;\r\n\t\tswitch (type) {\r\n\t\t\tcase 'date':\r\n\t\t\tcase 'file':\r\n\t\t\tcase 'image':\r\n\t\t\tcase 'phone':\r\n\t\t\t\tvalue = e;\r\n\t\t\t\t// setInputValue({ ...inputValue, [column.id]: e });\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'text':\r\n\t\t\tcase 'number':\r\n\t\t\t\tvalue = e.target.value;\r\n\t\t\t\t// setInputValue({ ...inputValue, [column.id]: value });\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'checkbox':\r\n\t\t\t\tvalue = e.target.checked;\r\n\t\t\t\t// setInputValue({ ...inputValue, [column.id]: value });\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tvalue = e.target.value;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tsetInputValue({ ...inputValue, [column.id]: value });\r\n\r\n\t\tif (onChangeRowField) {\r\n\t\t\tconst v = await onChangeRowField(e, type, row, col, data);\r\n\t\t\tif (v) {\r\n\t\t\t\trow._valuesCache = { ...row._valuesCache, ...v };\r\n\t\t\t\tsetInputValue({ ...inputValue, ...v });\r\n\t\t\t}\r\n\t\t}\r\n\t\tsetInputValue({ ...inputValue, [column.id]: value });\r\n\t\trow._valuesCache = { ...row._valuesCache, [column.id]: value };\r\n\r\n\t\tawait validate(value);\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tsetInputValue({ ...inputValue, ...row._valuesCache });\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [row._valuesCache]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!isInitialSet) {\r\n\t\t\tconst editFields = Object.keys(row._valuesCache || {});\r\n\t\t\tconst dValues: any = {};\r\n\r\n\t\t\trow.getAllCells().forEach((cell) => {\r\n\t\t\t\tif (\r\n\t\t\t\t\tcell.column.columnDef?.enableEditing === undefined ||\r\n\t\t\t\t\tcell.column.columnDef?.enableEditing === true\r\n\t\t\t\t) {\r\n\t\t\t\t\tconst { is_multiple, valueKey } =\r\n\t\t\t\t\t\tcell.column.columnDef?.editProperties || {};\r\n\t\t\t\t\tif (editFields.includes(cell.column.id)) {\r\n\t\t\t\t\t\tconst vl = _.get(row.original, valueKey);\r\n\t\t\t\t\t\tif (editVariant === 'select' && is_multiple) {\r\n\t\t\t\t\t\t\tdValues[cell.column.id] = vl\r\n\t\t\t\t\t\t\t\t? Array.isArray(vl)\r\n\t\t\t\t\t\t\t\t\t? vl\r\n\t\t\t\t\t\t\t\t\t: [vl]\r\n\t\t\t\t\t\t\t\t: [];\r\n\t\t\t\t\t\t} else if (editVariant === 'date' || editVariant === 'date_time') {\r\n\t\t\t\t\t\t\tdValues[cell.column.id] = vl\r\n\t\t\t\t\t\t\t\t? dayjs(vl).isValid()\r\n\t\t\t\t\t\t\t\t\t? dayjs(vl)\r\n\t\t\t\t\t\t\t\t\t: undefined\r\n\t\t\t\t\t\t\t\t: dayjs(row.original[cell.column.id]).isValid()\r\n\t\t\t\t\t\t\t\t\t? dayjs(row.original[cell.column.id])\r\n\t\t\t\t\t\t\t\t\t: undefined;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tdValues[cell.column.id] = _.get(\r\n\t\t\t\t\t\t\t\trow.original,\r\n\t\t\t\t\t\t\t\tvalueKey,\r\n\t\t\t\t\t\t\t\trow.original[cell.column.id]\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t// setFieldsValues(dValues);\r\n\t\t\trow._valuesCache = dValues;\r\n\t\t\tsetInputValue(dValues);\r\n\t\t\tsetIsInitialSet(true);\r\n\t\t}\r\n\t}, [row, editVariant, isInitialSet]);\r\n\r\n\tconst handleMinDate = (state) => typeof state == 'function' ? state(row) : state\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{(!editVariant || editVariant === 'number') && (\r\n\t\t\t\t<TextField\r\n\t\t\t\t\tdefaultValue={defaultValue}\r\n\t\t\t\t\t// onBlur={(e) => onBlur(e)}\r\n\t\t\t\t\t// onKeyDown={onKeyDown}\r\n\t\t\t\t\tonChange={(e) => onChange(e, editVariant)}\r\n\t\t\t\t\tvalue={inputValue?.[column.id]}\r\n\t\t\t\t\tautoFocus={editCols?.[0]?.accessorKey === column.id}\r\n\t\t\t\t\ttype={editVariant || 'text'}\r\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\r\n\t\t\t\t\thelperText={errors?.[column.id]}\r\n\t\t\t\t\tplaceholder={fieldProperties?.placeholder || ''}\r\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\r\n\t\t\t\t\tdisabled={fieldDisbled}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\t\t\t{editVariant === 'select' && (\r\n\t\t\t\t<Box display='flex' flexDirection='column' width='100%'>\r\n\t\t\t\t\t<SearchableSelect\r\n\t\t\t\t\t\tname={fieldProperties?.field_name || ''}\r\n\t\t\t\t\t\tdefaultValue={defaultValue}\r\n\t\t\t\t\t\tplaceholder={fieldProperties?.placeholder || ''}\r\n\t\t\t\t\t\tsearchPlaceholder={`Search ${col.header}`}\r\n\t\t\t\t\t\tonChange={(e, row) => onChange(e, 'select', row)}\r\n\t\t\t\t\t\tapiType={fieldProperties?.apiType}\r\n\t\t\t\t\t\tautoFocus={editCols?.[0]?.accessorKey === column.id}\r\n\t\t\t\t\t\toptions={col?.editSelectOptions}\r\n\t\t\t\t\t\tcustomeFilter={customFilter.current}\r\n\t\t\t\t\t\tfilterKey={fieldProperties?.filterKey}\r\n\t\t\t\t\t\tlabelKey={fieldProperties?.labelKey}\r\n\t\t\t\t\t\tvalueKey={fieldProperties?.bindingKey}\r\n\t\t\t\t\t\tattributes={fieldProperties.attributes}\r\n\t\t\t\t\t\tisInternal={fieldProperties?.isInternal || !fieldProperties?.apiType}\r\n\t\t\t\t\t\tmultiple={fieldProperties?.is_multiple}\r\n\t\t\t\t\t\tvalue={\r\n\t\t\t\t\t\t\tfieldProperties?.is_multiple\r\n\t\t\t\t\t\t\t\t? Array.isArray(inputValue?.[column.id])\r\n\t\t\t\t\t\t\t\t\t? inputValue?.[column.id]\r\n\t\t\t\t\t\t\t\t\t: []\r\n\t\t\t\t\t\t\t\t: inputValue?.[column.id]\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tgetSelectedData={(row) => getSelectedData(fieldProperties?.field_name, row)}\r\n\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t{errors?.[column.id] && (\r\n\t\t\t\t\t\t<Typography color='theme.error.600' type='s5'>\r\n\t\t\t\t\t\t\t{errors?.[column.id]}\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</Box>\r\n\t\t\t)}\r\n\t\t\t{editVariant === 'date' && (\r\n\t\t\t\t<DatePicker\r\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\r\n\t\t\t\t\tdefaultValue={defaultValue}\r\n\t\t\t\t\tonChange={(v) => onChange(v, 'date')}\r\n\t\t\t\t\ttextFieldProps={{\r\n\t\t\t\t\t\tautoFocus: editCols?.[0]?.accessorKey === column.id\r\n\t\t\t\t\t}}\r\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\r\n\t\t\t\t\thelperText={errors?.[column.id]}\r\n\t\t\t\t\tformat={fieldProperties?.dateFormat}\r\n\t\t\t\t\tplaceholder={\r\n\t\t\t\t\t\tfieldProperties?.placeholder || fieldProperties?.dateFormat\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvalue={\r\n\t\t\t\t\t\tdayjs(row._valuesCache[column.id]).isValid()\r\n\t\t\t\t\t\t\t? dayjs(row._valuesCache[column.id])\r\n\t\t\t\t\t\t\t: undefined\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdisabled={fieldDisbled}\r\n\t\t\t\t\tminDate={() => handleMinDate(fieldProperties?.min_date)}\r\n\t\t\t\t\tmaxDate={() => handleMinDate(fieldProperties?.min_date)}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\t\t\t{editVariant === 'date_time' && (\r\n\t\t\t\t<DateTimePicker\r\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\r\n\t\t\t\t\tdefaultValue={defaultValue}\r\n\t\t\t\t\tonChange={(v) => onChange(v, 'date')}\r\n\t\t\t\t\ttextFieldProps={{\r\n\t\t\t\t\t\tautoFocus: editCols?.[0]?.accessorKey === column.id\r\n\t\t\t\t\t}}\r\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\r\n\t\t\t\t\thelperText={errors?.[column.id]}\r\n\t\t\t\t\tformat={fieldProperties?.dateFormat}\r\n\t\t\t\t\tplaceholder={\r\n\t\t\t\t\t\tfieldProperties?.placeholder || fieldProperties?.dateFormat\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvalue={\r\n\t\t\t\t\t\tdayjs(row._valuesCache[column.id]).isValid()\r\n\t\t\t\t\t\t\t? dayjs(row._valuesCache[column.id])\r\n\t\t\t\t\t\t\t: undefined\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdisabled={fieldDisbled}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\t\t\t{(editVariant === 'file' || editVariant === 'image') && (\r\n\t\t\t\t<Box display='flex' flexDirection='column'>\r\n\t\t\t\t\t<UploadMedia\r\n\t\t\t\t\t\tname={fieldProperties?.field_name || 'table_file'}\r\n\t\t\t\t\t\tdataPosition={0}\r\n\t\t\t\t\t\tdataName='table_file'\r\n\t\t\t\t\t\tlabel=''\r\n\t\t\t\t\t\ttype={editVariant}\r\n\t\t\t\t\t\tmax_size={10}\r\n\t\t\t\t\t\tonChange={(v) => onChange(v, 'file')}\r\n\t\t\t\t\t\terror={errors?.[column.id] ? true : false}\r\n\t\t\t\t\t\tmultiple={Boolean(column?.is_multiple)}\r\n\t\t\t\t\t\tvalue={row._valuesCache[column.id]}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t{errors?.[column.id] && (\r\n\t\t\t\t\t\t<Typography color='theme.error.600' type='s5'>\r\n\t\t\t\t\t\t\t{errors?.[column.id]}\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</Box>\r\n\t\t\t)}\r\n\t\t\t{editVariant === 'phone' && (\r\n\t\t\t\t<PhoneInput\r\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\r\n\t\t\t\t\tdefault_value={defaultValue}\r\n\t\t\t\t\tonChange={(v) => onChange(v, 'phone')}\r\n\t\t\t\t\ttextFieldProps={{\r\n\t\t\t\t\t\tautoFocus: editCols?.[0]?.accessorKey === column.id\r\n\t\t\t\t\t}}\r\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\r\n\t\t\t\t\thelperText={errors?.[column.id]}\r\n\t\t\t\t\tformat={fieldProperties?.dateFormat}\r\n\t\t\t\t\tplaceholder={\r\n\t\t\t\t\t\tfieldProperties?.placeholder || fieldProperties?.dateFormat\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvalue={row._valuesCache?.[column.id]}\r\n\t\t\t\t\tdisabled={fieldDisbled}\r\n\t\t\t\t\tisInlineEditing={true}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\t\t\t{editVariant === 'checkbox' && (\r\n\t\t\t\t<Checkbox\r\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\r\n\t\t\t\t\tdefaultChecked={Boolean(defaultValue)}\r\n\t\t\t\t\t// checked={Boolean(defaultValue)}\r\n\t\t\t\t\tonChange={(v) => onChange(v, 'checkbox')}\r\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\r\n\t\t\t\t\thelperText={errors?.[column.id]}\r\n\t\t\t\t\tformat={fieldProperties?.dateFormat}\r\n\t\t\t\t\tplaceholder={\r\n\t\t\t\t\t\tfieldProperties?.placeholder || fieldProperties?.dateFormat\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvalue={row._valuesCache?.[column.id]}\r\n\t\t\t\t\tdisabled={fieldDisbled}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\t\t</>\r\n\t);\r\n};\r\n\r\nexport default InlineEditFields;\r\n","/* eslint-disable unused-imports/no-unused-vars */\r\n/* eslint-disable @typescript-eslint/no-unused-vars */\r\n/* eslint-disable no-mixed-spaces-and-tabs */\r\nimport React, { cloneElement, useCallback, useEffect, useState } from 'react';\r\nimport {\r\n\tMRT_ColumnDef,\r\n\tMRT_ColumnSizingInfoState,\r\n\tMRT_ColumnSizingState,\r\n\tMRT_Header,\r\n\tMRT_Row,\r\n\tMRT_RowData,\r\n\tMRT_RowSelectionState,\r\n\tMRT_SortingState,\r\n\tMRT_TableInstance,\r\n\tMRT_TableState,\r\n\tMaterialReactTable,\r\n\tMaterialReactTableProps,\r\n\tuseMaterialReactTable,\r\n\t// Cell\r\n} from 'material-react-table';\r\nimport { IPaginationModel } from '../../@types/pagination-model';\r\nimport {\r\n\tBox,\r\n\tstyled,\r\n\tMenuItem,\r\n\tIconButton,\r\n\tListItemIcon,\r\n\tListItemText,\r\n\tSvgIconProps,\r\n\tDivider\r\n} from '@mui/material';\r\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\r\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\r\nimport Menu from '../menu/menu';\r\nimport Typography from '../typography/typography';\r\nimport SearchBar from '../search-bar/search-bar';\r\nimport images from '../../assets/images';\r\n// import DeleteIcon from \"@mui/icons-material/Delete\";\r\n// import UpdateIcon from \"@mui/icons-material/Update\";\r\n// import PlayIcon from \"@mui/icons-material/PlayArrow\";\r\n\r\nimport './material-table.scss';\r\nimport {\r\n\tArrowUpDown,\r\n\tCheckBoxIcon,\r\n\tClose,\r\n\tEdit,\r\n\tRecgtangleIcon,\r\n\tSave,\r\n\tTrash\r\n} from '../icons';\r\n// import {\r\n// \tArrowDropDown /* , SaveOutlined */,\r\n// \tArrowDropUp\r\n// } from '@mui/icons-material';\r\nimport InlineEditFields from './components/inline-edit-fields';\r\nimport Tooltip from '../tooltip/Tooltip';\r\nimport Button from '../button/button';\r\nimport Add from '@mui/icons-material/Add';\r\nimport dayjs from 'dayjs';\r\nimport * as yup from 'yup';\r\nimport ConfirmPopUp from '../confirm-modal/confirm-modal';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { enqueueSnackbar } from 'notistack';\r\nimport { usePages } from '../../hooks/use-pages';\r\nimport { useNavigate } from 'react-router-dom';\r\n// Module-specific pathname imports removed - should be passed as props or configured by consuming app\r\n// import { PathnameAccounting } from 'accounting/src/pathname.accounting';\r\n// import { PathnameInventory } from 'inventory/src/pathname.inventory';\r\n// import { PathnameManufacturing } from 'manufacturing/src/pathname.manufacturing';\r\n// import { PathnamePurchase } from 'procurement/src/pathname.procurement';\r\n// import { PathnameCrm } from 'crm/src/pathname.crm';\r\n// import { PathnameUsers } from 'user/src/pathname.user';\r\n// import { PathnameRental } from '../../../../rental/src/pathname.rental';\r\nimport { PathnameDocument } from '../../constants/pathnames/pathname.document';\r\nimport { PathnameAccounting } from '../../constants/pathnames/pathname.accounting';\r\nimport { PathnameInventory } from '../../constants/pathnames/pathname.inventory';\r\nimport { PathnameManufacturing } from '../../constants/pathnames/pathname.manufacturing';\r\nimport { PathnamePurchase } from '../../constants/pathnames/pathname.procurement';\r\nimport { PathnameCrm } from '../../constants/pathnames/pathname.crm';\r\nimport { PathnameUsers } from '../../constants/pathnames/pathname.user';\r\nimport { PathnameRental } from '../../constants/pathnames/pathname.rental';\r\nimport useDeepMemo from '../../hooks/use-deep-memo';\r\nimport { PageState } from '../../contexts/page-context';\r\n\r\ntype ExtraEditVariants =\r\n\t| 'file'\r\n\t| 'image'\r\n\t| 'date'\r\n\t| 'number'\r\n\t| 'time'\r\n\t| 'date_time'\r\n\t| 'phone'\r\n\t| 'checkbox';\r\n\r\ntype DisableFunction = (row: any, virtualRow?: any) => boolean;\r\n\r\nexport type TypeBooleanLabels = { 1: string; 0: string; true: string; false: string }\r\n\r\nexport interface MaterialTableColumnProps\r\n\textends Omit<MRT_ColumnDef<MRT_RowData>, 'editVariant'> {\r\n\tvisible?: boolean;\r\n\ttype?: string;\r\n\tshowDefaultCurrency?: boolean,\r\n\tvalueGet?: string;\r\n\tcustom_class?: string;\r\n\ttypeArrayAccessorKey?: string; //when type is an array of object\r\n\ttypeBooleanLabels?: TypeBooleanLabels; //when type is an boolean\r\n\teditVariant?: MRT_ColumnDef<MRT_RowData>['editVariant'] | ExtraEditVariants;\r\n\teditProperties?: {\r\n\t\tfield_name?: string;\r\n\t\tvalueKey?: string;\r\n\t\tplaceholder?: string;\r\n\t\tdateFormat?: string;\r\n\t\tvalidations?: any[];\r\n\t\tis_multiple?: boolean;\r\n\t\tis_multiline?: boolean;\r\n\t\tdisable?: boolean | DisableFunction;\r\n\t};\r\n\tredirectionPathWithId?: string;\r\n\thandleRowClick?: (row: any) => void;\r\n\tidField?: string;\r\n}\r\n\r\n\r\n\r\nexport interface MaterialTableColumnHeaderProps {\r\n\tcolumn: MRT_ColumnDef<any, any>;\r\n\theader: MRT_Header<any>;\r\n\ttable: MRT_TableInstance<any>;\r\n}\r\n\r\ntype rowSelectionCallback = (row: MRT_Row<any>) => boolean\r\n\r\ninterface MaterialTablePropsType {\r\n\tenablePagination?: boolean;\r\n\tdisableMaxHeight?: boolean;\r\n\trows: any;\r\n\ttotalPages: number;\r\n\tcolumns: any;\r\n\tpaginationModel: IPaginationModel;\r\n\tcolumnOrder?: string[];\r\n\tupdateData?: any;\r\n\thandleColumnOrdering?: (colOrder: any) => void;\r\n\tenableEditing?: boolean;\r\n\tenableColumnDragging?: boolean;\r\n\trowActionMenu?: any;\r\n\tdestructiveActionMenu?: any;\r\n\tgetRowId?: any;\r\n\tstates?: Partial<MRT_TableState<any>>;\r\n\tonSortingChange?: any;\r\n\tdisableDefaultActionColumn?: boolean;\r\n\tenableRowSelection?: boolean | rowSelectionCallback;\r\n\tdefaultActionColumnItems?: React.ReactElement[];\r\n\tenableBottomToolbar?: boolean;\r\n\tSetSelectedRowId?: any;\r\n\tisResetRow?: boolean;\r\n\tonCreateRow?: (data: any) => Promise<unknown>;\r\n\tonEditRow?: (data: any) => Promise<unknown>;\r\n\tonDeleteRow?: (data: any) => Promise<unknown>;\r\n\teditDisplayMode?: MaterialReactTableProps<any>['editDisplayMode'];\r\n\tenableRowCreate?: boolean;\r\n\tonChangeRowField?: (e: any, type: string, row: any) => void;\r\n\tonSelectRow?: (rows: any, prevSelected?: any) => any;\r\n\tenableColumnResizing?: boolean;\r\n\tselectedRowIds?: any[];\r\n\tonColumnVisibility?: (columns: MaterialTableColumnProps[]) => void\r\n\tgetSelectedData: any;\r\n\tenableAddCustomField?: boolean;\r\n\tdisabledDefaultActionColumnIcon?: boolean\r\n\tenableRowDragging?: boolean\r\n\thandleColumnResizing?: (sizes: MRT_ColumnSizingState) => void,\r\n\tcolumnSizes?: MRT_ColumnSizingState,\r\n\tshowPreview?: boolean;\r\n\thandlePreview?: (row: MRT_RowData) => void;\r\n}\r\n\r\nconst TableWrapper = styled(Box, {\r\n\tshouldForwardProp: (prop) => prop !== 'disableMaxHeight',\r\n})<{ disableMaxHeight?: boolean }>(({ theme: { palette }, disableMaxHeight }) => ({\r\n\t'.MuiTableCell-root': {\r\n\t\tborder: '1px solid #efefef',\r\n\t\tborderBottom: 0,\r\n\t\tborderLeft: 0,\r\n\t\tpadding: '0 0.5rem',\r\n\t\tlineHeight: '19px',\r\n\t\tfontSize: '14px',\r\n\t\tminHeight: 32,\r\n\t\t// '&:first-child': {\r\n\t\t// \tborderLeft: '1px solid #efefef'\r\n\t\t// },\r\n\t\t// '&:last-child': {\r\n\t\t// \tborderBottom: '1px solid #efefef'\r\n\t\t// }\r\n\r\n\t},\r\n\t'.MuiTableCell-head': {\r\n\t\tbackgroundColor: palette.theme?.secondary[100]\r\n\t},\r\n\t'.MuiTableContainer-root': {\r\n\t\t...(!disableMaxHeight && { maxHeight: 'clamp(350px, 100vh - 200px, 9999px) !important' }),\r\n\t},\r\n\r\n\t'.MuiPaper-root': {\r\n\t\tboxShadow: 'none',\r\n\r\n\t},\r\n\t'.MuiPaginationItem-root': {\r\n\t\t'&.Mui-selected': {\r\n\t\t\tbackgroundColor: palette?.theme?.primary[700],\r\n\t\t\tcolor: 'white'\r\n\t\t}\r\n\t},\r\n\t'.MuiTableRow-root': {\r\n\t\t'&.Mui-selected': {\r\n\t\t\tbackgroundColor: `${palette?.theme?.primary[100]} !important`,\r\n\t\t\tcolor: 'white'\r\n\t\t}\r\n\t},\r\n\t'.MuiCheckbox-indeterminate': {\r\n\t\tcolor: `${palette?.theme?.primary[700]} !important`,\r\n\t\t\"& svg\": {\r\n\t\t\theight: `20px !important`,\r\n\t\t\twidth: `20px !important`,\r\n\t\t}\r\n\t}\r\n}));\r\n\r\nexport const MaterialTable = React.memo(({\r\n\tenablePagination = false,\r\n\trows,\r\n\tcolumns,\r\n\ttotalPages,\r\n\tpaginationModel,\r\n\tcolumnOrder = ['mrt-row-select'],\r\n\tupdateData,\r\n\thandleColumnOrdering,\r\n\tenableEditing,\r\n\tenableColumnDragging,\r\n\tstates,\r\n\trowActionMenu,\r\n\tdestructiveActionMenu,\r\n\tdisableDefaultActionColumn,\r\n\tenableRowSelection,\r\n\tdefaultActionColumnItems = [],\r\n\tenableBottomToolbar,\r\n\tSetSelectedRowId,\r\n\tisResetRow,\r\n\tonCreateRow,\r\n\tonEditRow,\r\n\tonDeleteRow,\r\n\teditDisplayMode,\r\n\tenableRowCreate,\r\n\tonChangeRowField,\r\n\tonSelectRow,\r\n\tenableColumnResizing = true,\r\n\tselectedRowIds = [],\r\n\tonColumnVisibility,\r\n\tonSortingChange,\r\n\tgetSelectedData,\r\n\tdisabledDefaultActionColumnIcon = false,\r\n\tenableAddCustomField = true,\r\n\tenableRowDragging = false,\r\n\thandleColumnResizing = () => { },\r\n\tcolumnSizes = {},\r\n\tdisableMaxHeight = false,\r\n\tshowPreview = false,\r\n\thandlePreview = () => { },\r\n\t// eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\r\n\t// getRowId,\r\n\t// onDelete,\r\n\t// onUpdate,\r\n\t...rest\r\n}: MaterialTablePropsType) => {\r\n\tconst { t } = useTranslation();\r\n\tconst { formData = null, updatePageInfo, activePage: aPage } = usePages()\r\n\tconst activePage = useDeepMemo<PageState>(aPage);\r\n\tconst { pageNo } = paginationModel;\r\n\tconst [row, setRow] = useState({});\r\n\tconst [tableColumns, setTableColumns] = useState(columns);\r\n\tconst [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\r\n\tconst [popUpShow, setPopupShow] = useState<boolean>(false);\r\n\tconst [rowAnchorEl, setRowAnchorEl] = useState<null | HTMLElement>(null);\r\n\tconst visibleColumns = tableColumns.filter((column: any) => column.visible);\r\n\tconst hiddenColumns = tableColumns.filter((column: any) => !column.visible);\r\n\tconst [filteredOptions, setFilteredOptions] = useState(hiddenColumns);\r\n\tconst [selectedRow, setSelectedRow] = useState<number | null>(null);\r\n\tconst [validationErrors, setValidationErrors] = useState<any>({});\r\n\tconst [validationSchema, setValidationSchema] = useState<any>([]);\r\n\tconst [isCreatingRow, setIsCreatingRow] = useState<boolean>(false);\r\n\tconst [isEditingRow, setIsEditingRow] = useState<boolean>(false);\r\n\tconst [isDeletingRow, setIsDeletingRow] = useState<boolean>(false);\r\n\tconst [rowToDelete, setRowToDelete] = useState<any>(null);\r\n\tconst [rowSelection, setRowSelection] = useState<MRT_RowSelectionState>({});\r\n\tconst [isChecked, setIsChecked] = useState(false)\r\n\tconst [sorting, setSorting] = useState<MRT_SortingState>([]);\r\n\tconst [disableNextEdit, setDisableNextEdit] = useState(false);\r\n\tconst [columnSizing, setColumnSizing] = useState<MRT_ColumnSizingState>(activePage.column_sizes);\r\n\tconst [columnSizingInfo, setColumnSizingInfo] = useState<MRT_ColumnSizingInfoState>({\r\n\t\tcolumnSizingStart: [],\r\n\t\tdeltaOffset: null,\r\n\t\tdeltaPercentage: null,\r\n\t\tisResizingColumn: false,\r\n\t\tstartOffset: null,\r\n\t\tstartSize: null\r\n\t});\r\n\r\n\tconst navigate = useNavigate();\r\n\tconst currentModule = location.pathname.split('/')[2]\r\n\r\n\tlet redirectionPath = ''\r\n\tswitch (currentModule) {\r\n\t\tcase 'accounting':\r\n\t\t\tredirectionPath = PathnameAccounting.CUSTOM_FORM\r\n\t\t\tbreak;\r\n\t\tcase 'inventory':\r\n\t\t\tredirectionPath = PathnameInventory.CUSTOM_FORM\r\n\t\t\tbreak;\r\n\t\tcase 'manufacturing':\r\n\r\n\t\t\tredirectionPath = PathnameManufacturing.CUSTOM_FORM\r\n\t\t\tbreak;\r\n\t\tcase 'procurement':\r\n\t\t\tredirectionPath = PathnamePurchase.CUSTOM_FORM\r\n\t\t\tbreak;\r\n\t\tcase 'crm':\r\n\t\t\tredirectionPath = PathnameCrm.CUSTOM_FORM\r\n\t\t\tbreak;\r\n\t\tcase 'user':\r\n\t\t\tredirectionPath = PathnameUsers.CUSTOM_FORM\r\n\t\t\tbreak;\r\n\t\tcase 'rental':\r\n\t\t\tredirectionPath = PathnameRental.CUSTOM_FORM\r\n\t\t\tbreak;\r\n\t\tcase 'drive':\r\n\t\t\tredirectionPath = PathnameDocument.ADD_CUSTOM_FIELDS\r\n\t\t\tbreak;\r\n\t}\r\n\tconst path = `/dashboard/${currentModule}${redirectionPath}`\r\n\tconst getValidationType = (column: any) => {\r\n\t\tswitch (column.editVariant) {\r\n\t\t\tcase 'select':\r\n\t\t\t\treturn column?.editProperties?.is_multiple ? yup.array() : yup.string();\r\n\r\n\t\t\tcase 'number':\r\n\t\t\t\treturn yup.number().nullable().transform((value, originalValue) => (originalValue === \"\" ? null : value));\r\n\r\n\t\t\tcase 'url':\r\n\t\t\t\treturn yup\r\n\t\t\t\t\t.string()\r\n\t\t\t\t\t.matches(\r\n\t\t\t\t\t\t/^(https?:\\/\\/)?((([a-zA-Z0-9_-]+\\.)+[a-zA-Z]{2,})|localhost)(:\\d{2,5})?(\\/[a-zA-Z0-9#_-]+\\/?)*(\\?[a-zA-Z0-9&=_-]+)?(#\\S+)?$/,\r\n\t\t\t\t\t\t{ excludeEmptyString: true, message: 'Please enter valid URL.' }\r\n\t\t\t\t\t);\r\n\r\n\t\t\tdefault:\r\n\t\t\t\treturn yup.string()\r\n\t\t}\r\n\t};\r\n\r\n\tconst validationReducer = (\r\n\t\tvalidations: any,\r\n\t\tvalidation: any,\r\n\t\tcolumn: any\r\n\t) => {\r\n\t\tlet vld = validations\r\n\t\tswitch (validation.type) {\r\n\t\t\tcase 'required':\r\n\t\t\t\tvld = validation.value\r\n\t\t\t\t\t? validations.required(validation.msg_en).typeError(validation.msg_en)\r\n\t\t\t\t\t: column?.editProperties?.is_multiple\r\n\t\t\t\t\t\t? validations.min(1, validation.msg_en)\r\n\t\t\t\t\t\t: validations;\r\n\t\t\t\tbreak\r\n\t\t\tcase 'min':\r\n\t\t\t\tvld = validations.min(validation.value, validation.msg_en);\r\n\t\t\t\tbreak\r\n\t\t\tcase 'email':\r\n\t\t\t\tvld = validations.email(validation.value, validation.msg_en);\r\n\t\t\t\tbreak\r\n\t\t\tcase 'max':\r\n\t\t\t\tvld = validations.max(validation.value, validation.msg_en);\r\n\t\t\t\tbreak\r\n\t\t\tcase 'positive':\r\n\t\t\t\tvld = validation.value === true ? validations.test('is-positive-number', 'Value must be a positive number', (value) => !value || value >= 0) : validations;\r\n\t\t\t\tbreak\r\n\t\t\tcase 'when':\r\n\t\t\t\treturn validations.when(validation.relation, {\r\n\t\t\t\t\tis: (val: any) => val === validation.values,\r\n\t\t\t\t\tthen: () =>\r\n\t\t\t\t\t\tvalidation?.thenValidations?.reduce(\r\n\t\t\t\t\t\t\t(validations: any, validation: any) =>\r\n\t\t\t\t\t\t\t\tvalidationReducer(validations, validation, column),\r\n\t\t\t\t\t\t\tvalidations\r\n\t\t\t\t\t\t) || validations,\r\n\t\t\t\t\totherwise: () =>\r\n\t\t\t\t\t\tvalidation?.otherWiseValidations?.reduce(\r\n\t\t\t\t\t\t\t(validations: any, validation: any) =>\r\n\t\t\t\t\t\t\t\tvalidationReducer(validations, validation, column),\r\n\t\t\t\t\t\t\tvalidations\r\n\t\t\t\t\t\t) || validations\r\n\t\t\t\t});\r\n\t\t\t// Add more cases for other validation types as needed\r\n\t\t\tdefault:\r\n\t\t\t\tvld = validations;\r\n\t\t\t\tbreak\r\n\t\t}\r\n\r\n\t\tif (validation.type == 'required' && validation.value && (!column?.editVariant || column?.editVariant == 'text')) {\r\n\t\t\tvld = validations.test('no-blank-spaces', 'Blank space is not allowed', (value) => {\r\n\t\t\t\treturn value && value.trim()?.length > 0;\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\treturn vld\r\n\r\n\t};\r\n\r\n\r\n\tconst generateValidationSchema = (columns: any[]) => {\r\n\t\tconst schema: any = {};\r\n\t\tcolumns.forEach((clm) => {\r\n\t\t\tif (clm?.editProperties?.validations?.length) {\r\n\t\t\t\tconst fieldValidations = clm?.editProperties?.validations.reduce(\r\n\t\t\t\t\t(validations: any, validation: any) =>\r\n\t\t\t\t\t\tvalidationReducer(validations, validation, clm),\r\n\t\t\t\t\tgetValidationType(clm)\r\n\t\t\t\t);\r\n\t\t\t\tschema[clm.accessorKey] = fieldValidations;\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn schema;\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tsetTableColumns(columns);\r\n\r\n\t\tconst schema: any = generateValidationSchema(columns);\r\n\t\tsetValidationSchema(yup.object().shape(schema));\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [columns]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!columnSizingInfo?.isResizingColumn) {\r\n\t\t\tupdatePageInfo({ column_sizes: { ...activePage.column_sizes, ...columnSizing } })\r\n\t\t\thandleColumnResizing?.(columnSizing)\r\n\t\t}\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [columnSizingInfo?.isResizingColumn, columnSizing])\r\n\r\n\tconst handleHeaderClick = (event: any) => {\r\n\t\tsetAnchorEl(event.currentTarget);\r\n\t};\r\n\r\n\tconst handleHeaderClose = () => {\r\n\t\tsetAnchorEl(null);\r\n\t};\r\n\r\n\tconst handleVisibleColumn = (column: any) => {\r\n\t\tconst updatedColumns = tableColumns.map((col: any) => ({\r\n\t\t\t...col,\r\n\t\t\tvisible: col.accessorKey === column.accessorKey ? false : col.visible\r\n\t\t}));\r\n\t\tsetTableColumns(updatedColumns);\r\n\t\tonColumnVisibility?.(JSON.parse(JSON.stringify(updatedColumns)))\r\n\t\tsetFilteredOptions([...filteredOptions, column]);\r\n\t\tsetAnchorEl(null);\r\n\t};\r\n\r\n\tconst handleAddButtonClick = () => {\r\n\t\tsetPopupShow(true);\r\n\t};\r\n\r\n\tconst handleBackButtonClick = () => {\r\n\t\tsetPopupShow(false);\r\n\t};\r\n\r\n\tconst handleAddColumn = (column: any) => {\r\n\t\tconst updatedColumns = tableColumns.map((col: any) => ({\r\n\t\t\t...col,\r\n\t\t\tvisible: col.accessorKey === column.accessorKey ? true : col.visible\r\n\t\t}));\r\n\t\tonColumnVisibility?.(JSON.parse(JSON.stringify(updatedColumns)))\r\n\t\tsetTableColumns(updatedColumns);\r\n\r\n\t\tconst updatedFilteredOptions = filteredOptions.filter(\r\n\t\t\t(option: any) => option.accessorKey !== column.accessorKey\r\n\t\t);\r\n\t\tsetFilteredOptions(updatedFilteredOptions);\r\n\t\tsetAnchorEl(null);\r\n\t\tsetPopupShow(false);\r\n\t};\r\n\r\n\tconst handleSearchEvent = (searchQuery: string) => {\r\n\t\tconst filteredColumns = hiddenColumns.filter((option: any) =>\r\n\t\t\toption.header.toLowerCase().includes(searchQuery.toLowerCase())\r\n\t\t);\r\n\t\tsetFilteredOptions(filteredColumns);\r\n\t};\r\n\r\n\tconst handleCustomAddColumn = () => {\r\n\t\tnavigate(path, { state: formData })\r\n\t\tsetAnchorEl(null);\r\n\t\tsetPopupShow(false);\r\n\t};\r\n\r\n\tconst handleRowClick = (rowId: number) => {\r\n\t\tsetSelectedRow(rowId); // Update selected row ID when a row is clicked\r\n\t};\r\n\r\n\tconst handlePreviewClick = (row: MRT_RowData) => {\r\n\t\thandlePreview?.(row);\r\n\t};\r\n\r\n\t// const handleDeleteClick = (event: any, data: any) => {\r\n\t// onDelete?.(data.id);\r\n\t// };\r\n\t// const handleUpdateClick = (event: any, data: any) => {\r\n\t// onUpdate?.(data.id);\r\n\t// };\r\n\r\n\tconst handleActionsClick = (event: any, data: any) => {\r\n\t\tsetRow(data);\r\n\t\tsetRowAnchorEl(event.currentTarget);\r\n\t};\r\n\r\n\tconst handleActionsClose = () => {\r\n\t\tsetRowAnchorEl(null);\r\n\t};\r\n\r\n\tconst formtValues = (values: any, cells: any[]) => {\r\n\t\tconst v: any = {};\r\n\t\tObject.keys(values).forEach((vl) => {\r\n\t\t\tconst val = values[vl];\r\n\t\t\tv[vl] = val;\r\n\t\t\tconst cell = cells.find((c) => c.accessorKey == vl);\r\n\t\t\tif (val) {\r\n\t\t\t\tif (val instanceof File) {\r\n\t\t\t\t\tv[vl] = val.name;\r\n\t\t\t\t}\r\n\t\t\t\tif (cell && cell?.editVariant == 'date') {\r\n\t\t\t\t\tv[vl] = dayjs(val).format(cell?.dateFormat || 'DD-MM-YYYY');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn v;\r\n\t};\r\n\r\n\tconst handleRowDelete = async () => {\r\n\t\tsetIsDeletingRow(true);\r\n\t\tif (rowToDelete) {\r\n\t\t\tawait onDeleteRow?.(rowToDelete);\r\n\t\t\tsetRowToDelete(null);\r\n\t\t}\r\n\t\tsetIsDeletingRow(false);\r\n\t};\r\n\r\n\tconst checkRequired = useCallback((editProperties: any) => {\r\n\t\treturn editProperties?.validations?.some((validation: any) => validation.type === 'required')\r\n\t}, [])\r\n\tuseEffect(() => {\r\n\t\tconst selectedRows = {};\r\n\t\t// Build the selectedRows object\r\n\t\tif (!isChecked && selectedRowIds.length) {\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif (selectedRowIds.includes(row.id)) {\r\n\t\t\t\t\tselectedRows[row.id] = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tsetRowSelection(selectedRows);\r\n\t\t\tsetIsChecked(true)\r\n\t\t}\r\n\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [rows, selectedRowIds]); // Dependency only on rows and selectedRowIds\r\n\r\n\tuseEffect(() => {\r\n\t\tif (onSortingChange instanceof Function) {\r\n\t\t\tconst sortingArray = Array.isArray(sorting) ? sorting : [];\r\n\t\t\tonSortingChange(sortingArray[0] || null)\r\n\t\t}\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [sorting])\r\n\r\n\r\n\tconst resetRowSelection = () => {\r\n\t\tsetRowSelection({});\r\n\t\tsetDisableNextEdit(false)\r\n\t}\r\n\tconst getTextWidth = (text: string) => {\r\n\t\tconst canvas = document.createElement(\"canvas\");\r\n\t\tconst ctx = canvas.getContext(\"2d\");\r\n\t\tif (!ctx) return 50;\r\n\t\treturn ctx.measureText(text).width + 5; // padding\r\n\t}\r\n\tconst table = useMaterialReactTable({\r\n\t\t// options:{\r\n\t\t// \ttableLayout: \"auto\", // 👈 important\r\n\t\t// \tpadding: \"dense\",\r\n\t\t// },\r\n\t\t// columns: visibleColumns,\r\n\t\tdefaultColumn: {\r\n\t\t\tminSize: 0, // 👈 remove default min width\r\n\t\t\tsize: undefined, // 👈 optional, default size\r\n\t\t},\r\n\t\tcolumns: [\r\n\t\t\t...visibleColumns.map((c: any) => {\r\n\t\t\t\tconst headerWidth = getTextWidth(c.header || '');\r\n\t\t\t\tconst maxCellWidth = Math.max(\r\n\t\t\t\t\t...rows.map(row => getTextWidth(String(row[c.accessorKey] ?? '')))\r\n\t\t\t\t);\r\n\t\t\t\tconst finalWidth = Math.max(headerWidth, maxCellWidth);\r\n\t\t\t\treturn {\r\n\t\t\t\t\t...c,\r\n\t\t\t\t\t...(editDisplayMode === 'row'\r\n\t\t\t\t\t\t? {\r\n\t\t\t\t\t\t\tEdit: ({ cell, row, table, column }) => {\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t<InlineEditFields\r\n\t\t\t\t\t\t\t\t\t\tcell={cell}\r\n\t\t\t\t\t\t\t\t\t\tcolumn={column}\r\n\t\t\t\t\t\t\t\t\t\tcol={c}\r\n\t\t\t\t\t\t\t\t\t\trow={row}\r\n\t\t\t\t\t\t\t\t\t\ttable={table}\r\n\t\t\t\t\t\t\t\t\t\tcallback={(s) => console.log('Save', s)}\r\n\t\t\t\t\t\t\t\t\t\terrors={validationErrors}\r\n\t\t\t\t\t\t\t\t\t\tvalidationSchema={validationSchema}\r\n\t\t\t\t\t\t\t\t\t\tsetValidationErrors={setValidationErrors}\r\n\t\t\t\t\t\t\t\t\t\tonChangeRowField={onChangeRowField}\r\n\t\t\t\t\t\t\t\t\t\tgetSelectedData={(name, row) => getSelectedData?.(name, row)}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t: {}),\r\n\t\t\t\t\tHeader: (\r\n\t\t\t\t\t\t<Box display='flex' alignItems='center'>\r\n\t\t\t\t\t\t\t{c.header}\r\n\t\t\t\t\t\t\t{c?.required || checkRequired(c?.editProperties) && (\r\n\t\t\t\t\t\t\t\t<Typography type='s5' color='theme.error.600'>\r\n\t\t\t\t\t\t\t\t\t*\r\n\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t),\r\n\t\t\t\t\tenableColumnDragging: c.id !== 'actions',\r\n\t\t\t\t\t// cellStyle: { ...c.cellStyle, width: finalWidth },\r\n\t\t\t\t\t// headerStyle: { ...c.headerStyle, width: finalWidth },\r\n\t\t\t\t\t// size: finalWidth\r\n\t\t\t\t\tsize: undefined,\r\n\t\t\t\t\t// minSize: 40,\r\n\t\t\t\t\tmaxSize: 800,\r\n\t\t\t\t};\r\n\t\t\t}),\r\n\t\t\t...(showPreview ? [\r\n\t\t\t\t{\r\n\t\t\t\t\tid: 'preview',\r\n\t\t\t\t\tenableEditing: false,\r\n\t\t\t\t\tsize: 70,\r\n\t\t\t\t\theader: (\r\n\t\t\t\t\t\t<IconButton size=\"small\" sx={{ ml: '20px', '&:hover': { backgroundColor: 'transparent' } }}>\r\n\t\t\t\t\t\t\t<img src={images.common.eyeIcon} alt='Eye Icon' />\r\n\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t),\r\n\t\t\t\t\tenableColumnDragging: false,\r\n\t\t\t\t\tvisible: true,\r\n\t\t\t\t\tmuiTableHeadCellProps: {\r\n\t\t\t\t\t\tclassName: 'pinned-column'\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmuiTableBodyCellProps: {\r\n\t\t\t\t\t\tclassName: 'pinned-column',\r\n\t\t\t\t\t\tsx: {\r\n\t\t\t\t\t\t\twhiteSpace: 'pre-wrap'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tCell: (props) =>\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\tvariant=\"outlined\"\r\n\t\t\t\t\t\t\tonClick={() => handlePreviewClick(props.row.original)}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\tPreview\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t}\r\n\t\t\t] : []),\r\n\t\t\t...(!disableDefaultActionColumn\r\n\t\t\t\t? [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: 'actions',\r\n\t\t\t\t\t\tenableEditing: false,\r\n\t\t\t\t\t\tsize: defaultActionColumnItems?.length > 1 ? 80 : 50,\r\n\t\t\t\t\t\theader: (\r\n\t\t\t\t\t\t\t<IconButton size=\"small\" sx={{ p: 0.5, '&:hover': { backgroundColor: 'transparent' } }} onClick={handleHeaderClick}>\r\n\t\t\t\t\t\t\t\t<img src={images.common.arrowIcon} alt='Arrow Icon' />\r\n\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\tenableColumnDragging: false,\r\n\t\t\t\t\t\tvisible: true,\r\n\t\t\t\t\t\tmuiTableHeadCellProps: {\r\n\t\t\t\t\t\t\tclassName: 'pinned-column'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tmuiTableBodyCellProps: {\r\n\t\t\t\t\t\t\tclassName: 'pinned-column'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tCell: (props) =>\r\n\t\t\t\t\t\t\tdefaultActionColumnItems?.length ? (\r\n\t\t\t\t\t\t\t\tdefaultActionColumnItems.map((item) => {\r\n\t\t\t\t\t\t\t\t\tconst updatedProps = {\r\n\t\t\t\t\t\t\t\t\t\t...item.props,\r\n\t\t\t\t\t\t\t\t\t\tonClick: () => item.props.onClick(props)\r\n\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\t\treturn cloneElement(item, updatedProps);\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t) : !disabledDefaultActionColumnIcon && (\r\n\t\t\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\t\t\tonClick={(e) => handleActionsClick(e, props.row.original)} disabled={!rowActionMenu?.length && !destructiveActionMenu?.length}>\r\n\t\t\t\t\t\t\t\t\t<img src={images.more} alt='More Icon' />\r\n\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t\t: [])\r\n\t\t],\r\n\t\tdata: rows,\r\n\t\tmuiTableContainerProps: {\r\n\t\t\tsx: {\r\n\t\t\t\t...(disableMaxHeight && { maxHeight: 'none !important' }),\r\n\t\t\t},\r\n\t\t},\r\n\t\tmuiTablePaperProps: {\r\n\t\t\tsx: {\r\n\t\t\t\ttableLayout: 'auto', // lets columns shrink to fit content\r\n\t\t\t},\r\n\t\t},\r\n\t\tcolumnResizeMode: 'onChange',\r\n\t\tonEditingRowSave: async (data) => {\r\n\t\t\ttry {\r\n\t\t\t\tawait validationSchema.validate(data.values, {\r\n\t\t\t\t\tabortEarly: false\r\n\t\t\t\t});\r\n\t\t\t\tsetValidationErrors({});\r\n\t\t\t\tsetIsEditingRow(true);\r\n\t\t\t\tsetDisableNextEdit(false)\r\n\t\t\t\tconst cells = data.row.getAllCells().map((c) => c.column.columnDef);\r\n\t\t\t\tdata.row._valuesCache = formtValues(data.values, cells);\r\n\r\n\t\t\t\tif (onEditRow) {\r\n\t\t\t\t\tawait onEditRow(data, 'edit');\r\n\t\t\t\t}\r\n\t\t\t\tsetIsEditingRow(false);\r\n\t\t\t\tdata.table.setEditingRow(null);\r\n\t\t\t} catch (err) {\r\n\t\t\t\tsetIsEditingRow(false);\r\n\t\t\t\tif (err instanceof yup.ValidationError) {\r\n\t\t\t\t\tconst errors: Record<string, string> = {};\r\n\r\n\t\t\t\t\terr.inner.forEach((error) => {\r\n\t\t\t\t\t\tif (error.path) {\r\n\t\t\t\t\t\t\terrors[error.path] = error.message;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tsetValidationErrors(errors);\r\n\t\t\t\t} else if (err instanceof Error) {\r\n\t\t\t\t\tenqueueSnackbar(err.message, { variant: 'error' })\r\n\t\t\t\t} else {\r\n\t\t\t\t\tenqueueSnackbar('Something went wrong', { variant: 'error' })\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tonCreatingRowSave: async (data) => {\r\n\t\t\ttry {\r\n\t\t\t\tawait validationSchema.validate(data.values, {\r\n\t\t\t\t\tabortEarly: false\r\n\t\t\t\t});\r\n\t\t\t\tsetValidationErrors({});\r\n\t\t\t\tsetIsCreatingRow(true);\r\n\t\t\t\tsetDisableNextEdit(false)\r\n\t\t\t\tconst cells = data.row.getAllCells().map((c) => c.column.columnDef);\r\n\r\n\t\t\t\tdata.row._valuesCache = formtValues(data.values, cells);\r\n\r\n\t\t\t\tif (onCreateRow) {\r\n\t\t\t\t\tawait onCreateRow(data);\r\n\t\t\t\t}\r\n\t\t\t\tsetIsCreatingRow(false);\r\n\t\t\t\tdata.table.setCreatingRow(null);\r\n\t\t\t} catch (err) {\r\n\t\t\t\tsetIsCreatingRow(false);\r\n\t\t\t\tif (err instanceof yup.ValidationError) {\r\n\t\t\t\t\tconst errors: Record<string, string> = {};\r\n\r\n\t\t\t\t\terr.inner.forEach((error) => {\r\n\t\t\t\t\t\tif (error.path) {\r\n\t\t\t\t\t\t\terrors[error.path] = error.message;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tsetValidationErrors(errors);\r\n\t\t\t\t} else if (err instanceof Error) {\r\n\t\t\t\t\tenqueueSnackbar(err.message, { variant: 'error' })\r\n\t\t\t\t} else {\r\n\t\t\t\t\tenqueueSnackbar('Something went wrong', { variant: 'error' })\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tonCreatingRowCancel: () => resetRowSelection(),\r\n\t\tonEditingRowCancel: () => resetRowSelection(),\r\n\t\tonSortingChange: states?.sorting ? onSortingChange : setSorting,\r\n\r\n\t\tdisplayColumnDefOptions: {\r\n\t\t\t'mrt-row-actions': {\r\n\t\t\t\t// size: onDeleteRow ? 80 : 50,\r\n\r\n\t\t\t\tHeader: (\r\n\t\t\t\t\t<IconButton onClick={handleHeaderClick} size='small'>\r\n\t\t\t\t\t\t<img src={images.common.arrowIcon} alt='Arrow Icon' />\r\n\t\t\t\t\t</IconButton>\r\n\t\t\t\t),\r\n\t\t\t\tmuiTableBodyCellProps: {\r\n\t\t\t\t\tsx: {\r\n\t\t\t\t\t\t'& .MuiBox-root': {\r\n\t\t\t\t\t\t\tgap: 0\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tbackgroundColor: '#fff'\r\n\t\t\t\t\t},\r\n\t\t\t\t\tonKeyUp: (e) => console.log(e)\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t'mrt-row-expand': {\r\n\t\t\t\tsize: 70, // Set the size of the expand-collapse arrow column here\r\n\t\t\t},\r\n\t\t\t'mrt-row-select': {\r\n\t\t\t\tsize: 50, // Set the width of the checkbox column here\r\n\t\t\t},\r\n\t\t},\r\n\t\trenderRowActions: ({ row, table }) => (\r\n\t\t\t<>\r\n\t\t\t\t{rest?.enableExpanding ? (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t{row?.parentId && (\r\n\t\t\t\t\t\t\t<Box sx={{ display: 'flex', gap: 0 }}>\r\n\t\t\t\t\t\t\t\t<Tooltip title='Edit'>\r\n\t\t\t\t\t\t\t\t\t<IconButton disabled={disableNextEdit} onClick={() => {\r\n\t\t\t\t\t\t\t\t\t\ttable.setEditingRow(row)\r\n\t\t\t\t\t\t\t\t\t\tsetDisableNextEdit(true)\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t} size='small'>\r\n\t\t\t\t\t\t\t\t\t\t<Edit fontSize='small' sx={{ color: 'theme.secondary.1000' }} />\r\n\t\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t\t{onDeleteRow && (\r\n\t\t\t\t\t\t\t\t\t<Tooltip title='Delete'>\r\n\t\t\t\t\t\t\t\t\t\t<IconButton disabled={disableNextEdit} onClick={() => setRowToDelete(row)} size='small'>\r\n\t\t\t\t\t\t\t\t\t\t\t<Trash fontSize='small' sx={{ color: 'theme.secondary.1000' }} />\r\n\t\t\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</>\r\n\t\t\t\t) : (\r\n\t\t\t\t\t<Box sx={{ display: 'flex', gap: 0 }}>\r\n\t\t\t\t\t\t<Tooltip title='Edit'>\r\n\t\t\t\t\t\t\t<IconButton disabled={disableNextEdit} onClick={() => {\r\n\t\t\t\t\t\t\t\ttable.setEditingRow(row)\r\n\t\t\t\t\t\t\t\tsetDisableNextEdit(true)\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t}>\r\n\t\t\t\t\t\t\t\t<Edit fontSize='small' sx={{ color: 'theme.secondary.1000' }} />\r\n\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t{onDeleteRow && (\r\n\t\t\t\t\t\t\t<Tooltip title='Delete'>\r\n\t\t\t\t\t\t\t\t<IconButton onClick={() => setRowToDelete(row)}>\r\n\t\t\t\t\t\t\t\t\t<Trash fontSize='small' sx={{ color: 'theme.secondary.1000' }} />\r\n\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t)}\r\n\t\t\t</>\r\n\t\t),\r\n\r\n\t\t...(Boolean(enableRowCreate) && {\r\n\t\t\trenderBottomToolbarCustomActions: ({ table }) => (\r\n\t\t\t\t<Button\r\n\t\t\t\t\tvariant='outlined'\r\n\t\t\t\t\tstartIcon={<Add />}\r\n\t\t\t\t\tclassName='add-row-btn'\r\n\t\t\t\t\tdisabled={disableNextEdit}\r\n\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\ttable.setCreatingRow(true); //simplest way to open the create row modal with no default values\r\n\t\t\t\t\t\tsetDisableNextEdit(true)\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\t{t('common.add')}\r\n\t\t\t\t</Button>\r\n\t\t\t)\r\n\t\t}),\r\n\t\tonRowSelectionChange: setRowSelection,\r\n\t\tenableColumnOrdering: true,\r\n\t\tenableRowSelection: enableRowSelection ?? true,\r\n\t\tenableEditing: enableEditing instanceof Function ? enableEditing() : enableEditing ?? true,\r\n\t\teditDisplayMode: editDisplayMode ?? 'cell',\r\n\t\tcreateDisplayMode: 'row',\r\n\t\tenableColumnResizing: enableColumnResizing,\r\n\t\tenableRowDragging: enableRowDragging,\r\n\t\tenableTopToolbar: false,\r\n\t\tenableColumnActions: false,\r\n\t\tenableSorting: true,\r\n\t\tenableGrouping: true,\r\n\t\tenableBottomToolbar: enableBottomToolbar ?? false,\r\n\t\tenableColumnDragging: enableColumnDragging ?? true,\r\n\t\tenableStickyHeader: true,\r\n\t\tenableSortingRemoval: false,\r\n\t\t// column ordering\r\n\t\tstate: {\r\n\t\t\t// columnOrder: (!columnOrder || columnOrder.length <= 1) \r\n\t\t\t// ? [...internalColumnOrder] \r\n\t\t\t// : [...columnOrder],\r\n\t\t\tcolumnOrder: columnOrder,\r\n\t\t\tcolumnPinning: { left: ['actions', 'mrt-row-actions'] },\r\n\t\t\tisSaving: isCreatingRow || isEditingRow,\r\n\t\t\tshowProgressBars: false,\r\n\t\t\trowSelection,\r\n\t\t\t...states,\r\n\t\t\tsorting: Array.isArray(states?.sorting) ? states?.sorting :\r\n\t\t\t\tArray.isArray(sorting) ? sorting : [],\r\n\t\t\tcolumnSizing\r\n\r\n\t\t},\r\n\t\tgetRowId: (row) => row?.id,\r\n\t\t// table.getState().editingRow\r\n\t\tmuiTableBodyRowProps: ({ row }) => {\r\n\t\t\tconst editingRowId =\r\n\t\t\t\ttable.getState()?.editingRow?.id ||\r\n\t\t\t\ttable.getState()?.creatingRow?.id ||\r\n\t\t\t\tnull;\r\n\t\t\tconst isErrorRow = Boolean(row?.original?.has_error)\r\n\t\t\treturn {\r\n\t\t\t\tonClick: () => handleRowClick(row.id),\r\n\t\t\t\tsx: {\r\n\t\t\t\t\tcursor: 'pointer',\r\n\t\t\t\t\t// backgroundColor: !editingRowId\r\n\t\t\t\t\t// \t? (selectedRow === row.id\r\n\t\t\t\t\t// \t\t? '#e8e8e8'\r\n\t\t\t\t\t// \t\t: (isErrorRow ? 'theme.error.100' : 'inherit'))\r\n\t\t\t\t\t// \t: 'inherit',\r\n\t\t\t\t\tbackgroundColor: !editingRowId\r\n\t\t\t\t\t\t? (isErrorRow ? 'theme.error.100' : 'inherit')\r\n\t\t\t\t\t\t: 'inherit',\r\n\t\t\t\t\t'&:hover': {\r\n\t\t\t\t\t\tbackgroundColor: editingRowId ? 'transparent' : (isErrorRow ? 'theme.error.200' : '#e8e8e8') // Removes hover effect globally\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'&:hover td:after': {\r\n\t\t\t\t\t\tbackgroundColor: 'transparent' // Removes the grey background applied via :after\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t},\r\n\t\tonColumnOrderChange: (colOrder: any) => {\r\n\t\t\tif (handleColumnOrdering) handleColumnOrdering(colOrder);\r\n\t\t},\r\n\t\tonColumnSizingChange: setColumnSizing,\r\n\t\tonColumnSizingInfoChange: setColumnSizingInfo,\r\n\r\n\t\trenderEmptyRowsFallback: () => (\r\n\t\t\t<Box className='no-data'>\r\n\t\t\t\t<img src={images.common.tableNoData} />\r\n\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\r\n\t\t\t\t\t{/* sx={{ textAlign: 'center', pb: 4.75, pt: 4.75 }}> */}\r\n\t\t\t\t\t{t('common.noData')}\r\n\t\t\t\t</Typography>\r\n\t\t\t</Box>\r\n\t\t),\r\n\r\n\t\t// pagination\r\n\t\tenablePagination: enablePagination,\r\n\t\tpaginationDisplayMode: 'pages',\r\n\t\tmuiPaginationProps: {\r\n\t\t\tshape: 'rounded',\r\n\t\t\tpage: pageNo, // current page number\r\n\t\t\tcount: totalPages, // total pages\r\n\t\t\tshowRowsPerPage: false, // Hide rows per page options\r\n\t\t\tboundaryCount: 3\r\n\t\t},\r\n\r\n\t\tmuiEditTextFieldProps: ({ row, column }) => ({\r\n\t\t\tInputProps: {\r\n\t\t\t\tdisableUnderline: true\r\n\t\t\t},\r\n\t\t\tonBlur: (e) => {\r\n\t\t\t\tupdateData(e.target.value, column, row.id);\r\n\t\t\t},\r\n\t\t\t// onChange: (e) => {\r\n\t\t\t// \tupdateData(e.target.value, column, row.id);\r\n\t\t\t// },\r\n\t\t\tvariant: 'outlined',\r\n\t\t\tsx: ({ palette }) => ({\r\n\t\t\t\t'& .MuiOutlinedInput-root': {\r\n\t\t\t\t\t'& fieldset': {\r\n\t\t\t\t\t\tborderColor: `${palette.theme?.primary[700]} !important`\r\n\t\t\t\t\t\t// backgroundColor: palette.theme?.primary[700]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}),\r\n\r\n\t\t/* Table loader style */\r\n\t\tmuiCircularProgressProps: {\r\n\t\t\tsx: {\r\n\t\t\t\tcolor: '#289B64'\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Table header cell default styles\r\n\t\tmuiTableHeadCellProps: {\r\n\t\t\tsx: {\r\n\t\t\t\tlineHeight: '140%',\r\n\t\t\t\tletterSpacing: '-0.28px',\r\n\t\t\t\tfontWeight: '500',\r\n\t\t\t\tfontSize: '0.875rem',\r\n\t\t\t\t'& .Mui-TableHeadCell-Content': {\r\n\t\t\t\t\theight: '100%'\r\n\t\t\t\t},\r\n\t\t\t\t'& .Mui-TableHeadCell-Content-Labels': {\r\n\t\t\t\t\twidth: '100%',\r\n\t\t\t\t\tjustifyContent: 'space-between'\r\n\t\t\t\t},\r\n\t\t\t\t'&.pinned-column': {\r\n\t\t\t\t\tbackgroundColor: '#fff'\r\n\t\t\t\t},\r\n\t\t\t\t'& .Mui-TableHeadCell-ResizeHandle-Wrapper': {\r\n\t\t\t\t\tpadding: 0,\r\n\t\t\t\t\tmargin: 0,\r\n\t\t\t\t\tright: '-5px',\r\n\t\t\t\t\topacity: 0\r\n\t\t\t\t},\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Table body cell default styles\r\n\t\tmuiTableBodyProps: {\r\n\t\t\tsx: {\r\n\t\t\t\tzIndex: 500\r\n\t\t\t}\r\n\t\t},\r\n\t\tmuiTableHeadProps: {\r\n\t\t\tsx: {\r\n\t\t\t\tzIndex: 600\r\n\t\t\t}\r\n\t\t},\r\n\t\tmuiTableBodyCellProps: (/* { cell, column, table , row } */) => ({\r\n\t\t\tsx: {\r\n\t\t\t\tlineHeight: '140%',\r\n\t\t\t\tletterSpacing: '-0.26px',\r\n\t\t\t\tfontWeight: '400',\r\n\t\t\t\tfontSize: '0.8125rem',\r\n\t\t\t\t'&.pinned-column': {\r\n\t\t\t\t\tbackgroundColor: '#fff'\r\n\t\t\t\t},\r\n\t\t\t\t'&:hover': {\r\n\t\t\t\t\tbackgroundColor: 'transparent' // Removes hover effect globally\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// onClick: () => {\r\n\t\t\t// \ttable.setEditingCell(cell); //set editing cell\r\n\t\t\t// \tqueueMicrotask(() => {\r\n\t\t\t// \t\tconst textField = table.refs.editInputRefs.current[column.id];\r\n\t\t\t// \t\tif (textField) {\r\n\t\t\t// \t\t\ttextField.focus();\r\n\t\t\t// \t\t\ttextField.select?.();\r\n\t\t\t// \t\t}\r\n\t\t\t// \t});\r\n\t\t\t// }\r\n\t\t\t// onKeyDown: (event) => {\r\n\t\t\t// \tif (event.key === 'Tab') {\r\n\t\t\t// \t\ttry {\r\n\t\t\t// \t\t\t\t// if (column.columnDef.editVariant === 'select') {\r\n\t\t\t// \t\t\t\t// \ttable.refs.editInputRefs.current[column.id]?.node?.blur();\r\n\t\t\t// \t\t\t\t// } else {\r\n\t\t\t// \t\t\t\t// \ttable.refs.editInputRefs.current[column.id].blur();\r\n\t\t\t// \t\t\t\t// }\r\n\r\n\t\t\t// \t\t\tconst rowIdx = row.index;\r\n\t\t\t// \t\t\tconst colIdx = columns.findIndex(\r\n\t\t\t// \t\t\t\t(col) => col.accessorKey === column.id\r\n\t\t\t// \t\t\t);\r\n\t\t\t// \t\t\tconst newColIdx = colIdx + 1;\r\n\t\t\t// \t\t\tconst clm = columns[newColIdx];\r\n\t\t\t// \t\t\tconst nextCell = row\r\n\t\t\t// \t\t\t\t.getAllCells()\r\n\t\t\t// \t\t\t\t.find((cl) => (cl.id = `${rowIdx}_${clm.accessorKey}`));\r\n\r\n\t\t\t// \t\t\tif (nextCell) {\r\n\t\t\t// \t\t\t\t// updateData(event.target.value, column, row.id);\r\n\t\t\t// \t\t\t\ttable.setEditingCell(nextCell);\r\n\t\t\t// \t\t\t\tqueueMicrotask(() => {\r\n\t\t\t// \t\t\t\t\tconst textField = table.refs.editInputRefs.current[column.id];\r\n\t\t\t// \t\t\t\t\tif (textField) {\r\n\t\t\t// \t\t\t\t\t\ttextField.focus();\r\n\t\t\t// \t\t\t\t\t\ttextField.select?.();\r\n\t\t\t// \t\t\t\t\t}\r\n\t\t\t// \t\t\t\t});\r\n\t\t\t// \t\t\t}\r\n\t\t\t// \t\t} catch (error) {\r\n\t\t\t// \t\t}\r\n\t\t\t// \t}\r\n\t\t\t// },\r\n\t\t\t// onBlur: () => {\r\n\t\t\t// \ttable.setEditingCell(null);\r\n\t\t\t// }\r\n\t\t}),\r\n\r\n\t\t// Checkbox styling\r\n\t\tmuiSelectCheckboxProps: {\r\n\t\t\tsx: {\r\n\t\t\t\tcolor: 'theme.secondary.300',\r\n\t\t\t\t'&.Mui-checked': {\r\n\t\t\t\t\tcolor: 'theme.primary.600',\r\n\t\t\t\t\t'&:hover': {\r\n\t\t\t\t\t\tcolor: 'theme.primary.500'\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t'&.Mui-disabled': {\r\n\t\t\t\t\tcolor: 'theme.secondary.200'\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\ticon: <RecgtangleIcon sx={{ width: 20, height: 20 }} />,\r\n\t\t\tcheckedIcon: <CheckBoxIcon sx={{ width: 20, height: 20 }} />\r\n\t\t},\r\n\t\tmuiSelectAllCheckboxProps: {\r\n\t\t\tsx: {\r\n\t\t\t\tcolor: 'theme.secondary.300',\r\n\t\t\t\t'&.Mui-checked': {\r\n\t\t\t\t\tcolor: 'theme.primary.600',\r\n\t\t\t\t\t'&:hover': {\r\n\t\t\t\t\t\tcolor: 'theme.primary.500'\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t'&.Mui-disabled': {\r\n\t\t\t\t\tcolor: 'theme.secondary.600'\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\ticon: <RecgtangleIcon sx={{ width: 20, height: 20 }} />,\r\n\t\t\tcheckedIcon: <CheckBoxIcon sx={{ width: 20, height: 20 }} />\r\n\t\t},\r\n\t\tmuiBottomToolbarProps: {\r\n\t\t\tsx: {\r\n\t\t\t\tboxShadow: 'none',\r\n\t\t\t\t'& .MuiBox-root': {\r\n\t\t\t\t\tpaddingLeft: 0\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tlayoutMode: 'grid',\r\n\t\ticons: {\r\n\t\t\tArrowDownwardIcon: (props: SvgIconProps) => (\r\n\t\t\t\t<ArrowUpDown fontSize='medium' {...props} />\r\n\t\t\t),\r\n\t\t\tSortIcon: (props: SvgIconProps) => (\r\n\t\t\t\t<ArrowUpDown fontSize='medium' {...props} />\r\n\t\t\t),\r\n\t\t\tSyncAltIcon: () => <ArrowUpDown fontSize='medium' />,\r\n\t\t\tCancelIcon: (props: SvgIconProps) => (\r\n\t\t\t\t<Close fontSize='small' {...props} sx={{ color: 'theme.secondary.1000' }} />\r\n\t\t\t),\r\n\t\t\tSaveIcon: (props: SvgIconProps) => (\r\n\t\t\t\t<Save {...props} fontSize='small' sx={{ color: 'theme.secondary.1000' }} />\r\n\t\t\t)\r\n\t\t},\r\n\r\n\t\t...rest\r\n\t});\r\n\r\n\tuseEffect(() => {\r\n\t\tif (enableRowSelection) {\r\n\t\t\tif (table?.getSelectedRowModel()?.rows) {\r\n\t\t\t\tSetSelectedRowId?.(table?.getSelectedRowModel()?.rows);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [enableRowSelection]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (onSelectRow) {\r\n\t\t\tif (rest?.enableExpanding) {\r\n\t\t\t\tconst selectedRowModels: any[] = [];\r\n\t\t\t\tconst selection = table.getState().rowSelection; // e.g., { 0.0: true }\r\n\t\t\t\tconst traverseRows = (rows, parentKey = '') => {\r\n\t\t\t\t\trows.forEach((row, index) => {\r\n\t\t\t\t\t\tconst rowKey = parentKey ? `${parentKey}.${index}` : `${row.id}`;\r\n\t\t\t\t\t\tif (selection[rowKey]) {\r\n\t\t\t\t\t\t\tselectedRowModels.push(row);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Check for sub-rows and traverse further\r\n\t\t\t\t\t\tif (row.subRows?.length) {\r\n\t\t\t\t\t\t\ttraverseRows(row.subRows, rowKey);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\r\n\t\t\t\ttraverseRows(table.getRowModel().rows);\r\n\t\t\t\tonSelectRow(selectedRowModels, rowSelection);\r\n\t\t\t} else {\r\n\t\t\t\tonSelectRow(table.getSelectedRowModel().rows, rowSelection);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [rowSelection, table]);\r\n\r\n\t// useEffect(() => {\r\n\t// \tconst relativeContainer = document.getElementsByClassName(\r\n\t// \t\t'MuiTableContainer-root'\r\n\t// \t)[0];\r\n\t// \tconst fixedElement = document.getElementsByClassName('no-data')[0];\r\n\t// \trelativeContainer.addEventListener('scroll', () => {\r\n\t// \t\tconst scrollLeft = relativeContainer.scrollLeft;\r\n\t// \t\tfixedElement.style.left = `${scrollLeft + 100}px`;\r\n\t// \t});\r\n\t// }, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (isResetRow) {\r\n\t\t\ttable?.resetRowSelection();\r\n\t\t}\r\n\t}, [isResetRow, table]);\r\n\treturn (\r\n\t\t<TableWrapper className='MRT-TableWrapper custom-table' disableMaxHeight={disableMaxHeight}>\r\n\t\t\t<MaterialReactTable table={table} />\r\n\r\n\t\t\t<Menu\r\n\t\t\t\tanchorEl={anchorEl}\r\n\t\t\t\topen={Boolean(anchorEl)}\r\n\t\t\t\tonClose={handleHeaderClose}\r\n\t\t\t\tclassName='add-role-drp'>\r\n\t\t\t\t{popUpShow ? (\r\n\t\t\t\t\t<div>\r\n\t\t\t\t\t\t<MenuItem\r\n\t\t\t\t\t\t\tonClick={handleBackButtonClick}\r\n\t\t\t\t\t\t\tclassName='role-drp-list add-column-title'>\r\n\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\r\n\t\t\t\t\t\t\t\t<ChevronLeftIcon />\r\n\t\t\t\t\t\t\t</ListItemIcon>\r\n\t\t\t\t\t\t\t<ListItemText className='title'>\r\n\t\t\t\t\t\t\t\t{t('common.addColumn_label')}\r\n\t\t\t\t\t\t\t</ListItemText>\r\n\t\t\t\t\t\t</MenuItem>\r\n\t\t\t\t\t\t<Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\r\n\t\t\t\t\t\t<div className='searchbar-box-list'>\r\n\t\t\t\t\t\t\t<SearchBar\r\n\t\t\t\t\t\t\t\tplaceholder={'Search User'}\r\n\t\t\t\t\t\t\t\thandleSearch={(e) => handleSearchEvent(e)}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div className='all-attribute-title'>\r\n\t\t\t\t\t\t\t<Typography variant='body2' color='text.secondary'>\r\n\t\t\t\t\t\t\t\t{t('common.allAttributes_label')}\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t{filteredOptions.map((column: any) => (\r\n\t\t\t\t\t\t\t<MenuItem\r\n\t\t\t\t\t\t\t\tkey={column.accessorKey}\r\n\t\t\t\t\t\t\t\tonClick={() => handleAddColumn(column)}>\r\n\t\t\t\t\t\t\t\t<Typography color='theme.secondary.1000' type='s3'>\r\n\t\t\t\t\t\t\t\t\t{column.header}\r\n\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t</MenuItem>\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t<Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tenableAddCustomField && <MenuItem onClick={handleCustomAddColumn} className='role-drp-list'>\r\n\t\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\r\n\t\t\t\t\t\t\t\t\t<img src={images.common.addIcon} alt='Add Icon' />\r\n\t\t\t\t\t\t\t\t</ListItemIcon>\r\n\t\t\t\t\t\t\t\t<ListItemText className='title'>\r\n\t\t\t\t\t\t\t\t\t{t('common.addCustomField_label')}\r\n\t\t\t\t\t\t\t\t</ListItemText>\r\n\t\t\t\t\t\t\t</MenuItem>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t) : (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t{visibleColumns.map((column: any) => (\r\n\t\t\t\t\t\t\t<MenuItem\r\n\t\t\t\t\t\t\t\tkey={column.accessorKey}\r\n\t\t\t\t\t\t\t\tonClick={() => handleVisibleColumn(column)}\r\n\t\t\t\t\t\t\t\tclassName='role-drp-list'>\r\n\t\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\r\n\t\t\t\t\t\t\t\t\t<img src={images.common.dotsIcon} alt='Add Icon' />\r\n\t\t\t\t\t\t\t\t</ListItemIcon>\r\n\t\t\t\t\t\t\t\t<ListItemText className='title'>{column.header}</ListItemText>\r\n\t\t\t\t\t\t\t\t<ListItemIcon className='eye-icon'>\r\n\t\t\t\t\t\t\t\t\t<img src={images.common.eyeIcon} alt='Eye Icon' />\r\n\t\t\t\t\t\t\t\t</ListItemIcon>\r\n\t\t\t\t\t\t\t</MenuItem>\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t<Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\r\n\t\t\t\t\t\t<MenuItem onClick={handleAddButtonClick} className='role-drp-list'>\r\n\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\r\n\t\t\t\t\t\t\t\t<img src={images.common.addIcon} alt='Add Icon' />\r\n\t\t\t\t\t\t\t</ListItemIcon>\r\n\t\t\t\t\t\t\t<ListItemText className='title'>\r\n\t\t\t\t\t\t\t\t{t('common.addColumn_label')}\r\n\t\t\t\t\t\t\t</ListItemText>\r\n\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\tvariant='body2'\r\n\t\t\t\t\t\t\t\tcolor='text.secondary'\r\n\t\t\t\t\t\t\t\tclassName='eye-icon'>\r\n\t\t\t\t\t\t\t\t<ChevronRightIcon sx={{ fontSize: '1.25rem !important' }} />\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t</MenuItem>\r\n\t\t\t\t\t</>\r\n\t\t\t\t)}\r\n\t\t\t</Menu>\r\n\r\n\t\t\t<Menu\r\n\t\t\t\tanchorEl={rowAnchorEl}\r\n\t\t\t\topen={Boolean(rowAnchorEl)}\r\n\t\t\t\tonClose={handleActionsClose}>\r\n\t\t\t\t{rowActionMenu?.map((option: any) => {\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t(option.label === 'Move' &&\r\n\t\t\t\t\t\t\t(row?.is_directory === true || row?.is_directory === 1)) ||\r\n\t\t\t\t\t\t(option.label === 'Download' &&\r\n\t\t\t\t\t\t\t(row?.is_directory === true ||\r\n\t\t\t\t\t\t\t\trow?.is_directory === 1 ||\r\n\t\t\t\t\t\t\t\trow?.drive?.is_directory === true ||\r\n\t\t\t\t\t\t\t\trow?.drive?.is_directory === 1))\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\t// return null;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t<MenuItem\r\n\t\t\t\t\t\t\tonClick={async () => {\r\n\t\t\t\t\t\t\t\tawait option.handleAction(row);\r\n\t\t\t\t\t\t\t\tsetRowAnchorEl(null);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tdisabled={\r\n\t\t\t\t\t\t\t\ttypeof option.disabled === 'function'\r\n\t\t\t\t\t\t\t\t\t? option.disabled(row)\r\n\t\t\t\t\t\t\t\t\t: Boolean(option.disabled)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tsx={{ alignItems: 'center', gap: 0.5 }}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{option?.icon}\r\n\t\t\t\t\t\t\t<Typography type='s4' color='inherit'>\r\n\t\t\t\t\t\t\t\t{typeof option.label === 'function' ? option.label(row) : option.label}\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t</MenuItem>\r\n\t\t\t\t\t);\r\n\t\t\t\t})}\r\n\t\t\t\t{destructiveActionMenu?.length > 0 &&\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t<Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\r\n\t\t\t\t\t\t<div className='dropdown-inner--DestructiveHeader'>\r\n\t\t\t\t\t\t\t{destructiveActionMenu?.map((option: any) => (\r\n\t\t\t\t\t\t\t\t<MenuItem\r\n\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\toption.handleAction(row);\r\n\t\t\t\t\t\t\t\t\t\tsetRowAnchorEl(null);\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tclassName='dropdown-inner--DestructiveActions'\r\n\t\t\t\t\t\t\t\t\tdisabled={\r\n\t\t\t\t\t\t\t\t\t\ttypeof option.disabled === 'function'\r\n\t\t\t\t\t\t\t\t\t\t\t? option.disabled(row)\r\n\t\t\t\t\t\t\t\t\t\t\t: Boolean(option.disabled)\r\n\t\t\t\t\t\t\t\t\t}>\r\n\t\t\t\t\t\t\t\t\t<Typography type='s4' color='inherit'>\r\n\t\t\t\t\t\t\t\t\t\t{typeof option.label === 'function' ? option.label(row) : option.label}\r\n\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t</MenuItem>\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</>\r\n\t\t\t\t}\r\n\t\t\t</Menu>\r\n\t\t\t<ConfirmPopUp\r\n\t\t\t\topen={Boolean(rowToDelete)}\r\n\t\t\t\tonClose={() => setRowToDelete(null)}\r\n\t\t\t\tonConfirm={() => handleRowDelete()}\r\n\t\t\t\ttitle='Delete Item'\r\n\t\t\t\tdescription={`Are you sure you want to delete entry ?`}\r\n\t\t\t\tloading={isDeletingRow}\r\n\t\t\t/>\r\n\t\t</TableWrapper>\r\n\t);\r\n});\r\n\r\nexport default MaterialTable;","import React from 'react';\r\nimport { Box, CircularProgress, CircularProgressProps } from '@mui/material';\r\nimport { styled } from '@mui/material/styles';\r\n\r\nconst Loader = styled(CircularProgress)(({ theme }) => ({\r\n\tcolor: theme.palette?.theme.primary[500]\r\n}));\r\n\r\nconst LoaderContainer = styled(Box)(() => ({\r\n\tposition: 'absolute',\r\n\tdisplay: 'flex',\r\n\twidth: '100%',\r\n\theight: '100%',\r\n\tjustifyContent: 'center',\r\n\talignItems: 'center',\r\n\tbackgroundColor: '#ffffff96',\r\n\tzIndex: 3,\r\n\tleft: 0,\r\n\ttop: 0\r\n}));\r\n\r\nconst ModalLoader = (props: CircularProgressProps) => {\r\n\treturn (\r\n\t\t<LoaderContainer>\r\n\t\t\t<Loader size={50} {...props} />\r\n\t\t</LoaderContainer>\r\n\t);\r\n};\r\n\r\nexport { ModalLoader };\r\nexport default ModalLoader;\r\n","import { Box, DialogActions, DialogContent, DialogTitle, Divider, Grid, IconButton } from \"@mui/material\";\r\nimport Modal from '../modal/modal';\r\nimport Typography from \"../typography/typography\";\r\nimport DynamicInput from '../form-control/form-builder/form-builder-element/text';\r\nimport DynamicRadioButton from '../form-control/form-builder/form-builder-element/radio-button';\r\nimport { useForm, useWatch } from \"react-hook-form\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { generateValidationSchema, generateValidationSchema1 } from \"./validator\";\r\nimport DynamicSearchSelect from \"../form-control/form-builder/form-builder-element/dynamic-select\";\r\nimport DynamicPhone from '@/components/form-control/form-builder/form-builder-element/phone';\r\nimport Accordion from \"../accordion/accordion\";\r\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\r\nimport _ from \"lodash\";\r\nimport './parties-modal.scss';\r\nimport { useAccountingSetting } from \"../../hooks/useAccountSetting\";\r\nimport { useAuth } from '../../hooks/useAuth';\r\nimport {\r\n addressColumns,\r\n addressOmitKeys,\r\n addressPayload,\r\n contactColumns,\r\n contactOmitKeys,\r\n contactPayload,\r\n PARTIES_FIELDS,\r\n PARTIES_FORM_ARRAY_NAME,\r\n partyType,\r\n processPartiesPayload\r\n} from \"./utils/constant\";\r\nimport MaterialTable from \"../material-table/material-table\";\r\nimport parsePhoneNumberFromString from \"libphonenumber-js\";\r\nimport Checkbox from \"../checkbox/checkbox\";\r\nimport { transformTableColumns } from \"../../utils/common-utility\";\r\nimport { createParties } from \"../../redux/actionCreator\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { enqueueSnackbar } from 'notistack';\r\nimport { getErrorMessage } from \"../../utils/common\";\r\nimport ModalLoader from \"../loaders/modal-loader\";\r\nimport Button from \"../button/button\";\r\nimport { Close } from \"@mui/icons-material\";\r\n\r\ninterface CustomerVendorModalProps {\r\n isOpen: boolean;\r\n handleModalClose?: () => void;\r\n modalProps?: any;\r\n type?: string;\r\n partyCreated?: () => void;\r\n isLoading?: boolean;\r\n onSave?: (payload: any) => Promise<void>;\r\n setIsOpen?: (value: boolean) => void;\r\n}\r\n\r\ninterface LocationState {\r\n state: any;\r\n country: any;\r\n}\r\n\r\nconst defaultLocationState: LocationState = { state: '', country: '' };\r\n\r\nexport default function CustomerVendorModal({\r\n isOpen,\r\n handleModalClose,\r\n modalProps,\r\n type,\r\n partyCreated,\r\n isLoading,\r\n onSave,\r\n setIsOpen\r\n}: CustomerVendorModalProps) {\r\n\r\n //Hooks\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { user } = useAuth();\r\n\r\n //Refs\r\n const locationRef = useRef<LocationState>(defaultLocationState);\r\n\r\n //Local states\r\n const [addressRows, setAddressRows] = useState<any[]>([]);\r\n const [contactRows, setContactRows] = useState<any[]>([]);\r\n const [isCreating, setIsCreating] = useState(false);\r\n const [selectedCompanyData, setSelectedCompanyData] = useState<any[]>([]);\r\n\r\n //Form\r\n const {\r\n control,\r\n formState: { errors },\r\n trigger,\r\n getValues,\r\n handleSubmit,\r\n setValue,\r\n resetField,\r\n reset,\r\n watch,\r\n getFieldState\r\n\r\n } = useForm({\r\n defaultValues: {\r\n status: true,\r\n parties: {\r\n account_type: 'Company',\r\n },\r\n },\r\n mode: 'all',\r\n resolver: generateValidationSchema1()\r\n });\r\n\r\n const fieldToUpdate = {\r\n [PARTIES_FIELDS.RECEIVABLE_ACCOUNT]: 'receivable_account',\r\n [PARTIES_FIELDS.TAX_TEMPLATE]: 'default_tax',\r\n };\r\n\r\n useAccountingSetting({\r\n fieldToUpdate,\r\n companyField: PARTIES_FIELDS.COMPANY,\r\n fieldArrayName: PARTIES_FORM_ARRAY_NAME,\r\n formMethods: { control, setValue, watch, getFieldState },\r\n ...({ isUpdateAccount: true } as any),\r\n });\r\n\r\n\r\n const selectedType = useWatch({\r\n control,\r\n name: 'parties.account_type',\r\n });\r\n\r\n const responsiblePerson = useWatch({\r\n control,\r\n name: `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.RESPONSIBLE_PERSON}`,\r\n });\r\n\r\n const mainContactNo = useWatch({\r\n control,\r\n name: `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.CONTACT_NO}`,\r\n });\r\n\r\n const mainEmailIds = useWatch({\r\n control,\r\n name: `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.EMAIL_IDS}`,\r\n });\r\n\r\n //Call Back functions\r\n const tableColumns = useCallback(\r\n (columns: any, tableRows: any) => {\r\n const phoneNumberCache = new Map();\r\n\r\n return transformTableColumns({\r\n columns,\r\n currencySymbol: undefined,\r\n translationFn: t,\r\n enableFooter: false,\r\n redirectionLink: undefined,\r\n redirectionLinkState: undefined,\r\n rows: tableRows,\r\n statusClasses: undefined,\r\n customizeValue: (row, columnAccessorKey, value) => {\r\n switch (columnAccessorKey) {\r\n case 'default_shipping_address':\r\n case 'default_billing_address': {\r\n return (\r\n <Box sx={{ display: \"flex\", gap: 1 }}>\r\n <Checkbox\r\n checked={Boolean(value)}\r\n sx={{ pointerEvents: 'none' }}\r\n />\r\n </Box>\r\n );\r\n }\r\n\r\n case 'phone':\r\n case 'contact_no': {\r\n if (!value) return '';\r\n const phoneKey = `phone-${value}`;\r\n if (!phoneNumberCache.has(phoneKey)) {\r\n const parsed = parsePhoneNumberFromString(`+${value}`);\r\n phoneNumberCache.set(phoneKey, parsed?.nationalNumber || '');\r\n }\r\n return phoneNumberCache.get(phoneKey);\r\n }\r\n\r\n case 'country_code': {\r\n const phone = row?.original?.phone || row?.original?.contact_no;\r\n if (!phone) return '';\r\n const countryCodeKey = `country-${phone}`;\r\n if (!phoneNumberCache.has(countryCodeKey)) {\r\n const parsed = parsePhoneNumberFromString(`+${phone}`);\r\n phoneNumberCache.set(countryCodeKey,\r\n parsed?.countryCallingCode ? `+${parsed.countryCallingCode}` : ''\r\n );\r\n }\r\n return phoneNumberCache.get(countryCodeKey);\r\n }\r\n\r\n default:\r\n return value;\r\n }\r\n }\r\n });\r\n },\r\n [t]\r\n );\r\n\r\n //Methods\r\n\r\n const handleRowOperation = async (\r\n eData: any,\r\n state: any[],\r\n setState: React.Dispatch<React.SetStateAction<any[]>>,\r\n isAddress: boolean\r\n ) => {\r\n try {\r\n const { values, row } = eData;\r\n const editRow = row.index >= 0;\r\n const payload = isAddress ? addressPayload : contactPayload;\r\n\r\n const processedValues: any = {};\r\n for (const key in payload) {\r\n if (_.has(values, key)) {\r\n processedValues[key] = values?.[key] ? values[key] : null;\r\n }\r\n }\r\n\r\n if (isAddress) {\r\n const dropdowns = {\r\n c: locationRef.current?.country,\r\n s: locationRef.current?.state,\r\n };\r\n\r\n const validatedValues = await validateAddressDefaults(processedValues, state, row.index);\r\n const addressValues = {\r\n ...validatedValues,\r\n country_name: dropdowns.c?.name,\r\n country: dropdowns.c?.id,\r\n state_name: dropdowns.s?.name,\r\n state: dropdowns.s?.id,\r\n country_data: dropdowns.c,\r\n state_data: dropdowns.s,\r\n country_id: dropdowns.c?.id,\r\n state_id: dropdowns.s?.id,\r\n };\r\n\r\n if (editRow) {\r\n return setState(state.map((ar, i) => i === row.index ? { ...ar, ...addressValues } : ar));\r\n }\r\n return setState([...state, addressValues]);\r\n }\r\n\r\n if (editRow) {\r\n return setState(state.map((ar, i) => i === row.index ? { ...ar, ...processedValues } : ar));\r\n }\r\n return setState([...state, processedValues]);\r\n } catch (error) {\r\n return Promise.reject(error);\r\n }\r\n };\r\n\r\n const validateAddressDefaults = async (values: any, state: any[], index: number) => {\r\n let updatedValues = { ...values };\r\n const validate = (type: \"shipping\" | \"billing\") => {\r\n const u_data = [...state];\r\n const field = type === 'shipping' ? 'default_shipping_address' : 'default_billing_address';\r\n if (index >= 0) {\r\n u_data.splice(index, 1);\r\n }\r\n const hasDefault = u_data.some((d: any) => d?.[field]);\r\n\r\n if (hasDefault && values?.[field]) {\r\n throw new Error(\r\n `Another address is already marked as the default ${type} address. Please uncheck that before selecting this one`\r\n );\r\n }\r\n else if (!hasDefault) {\r\n updatedValues = {\r\n ...updatedValues,\r\n [field]: values?.[field] || state?.length == 0 ? 1 : 0,\r\n };\r\n }\r\n\r\n };\r\n\r\n await validate(\"shipping\");\r\n await validate(\"billing\");\r\n\r\n return updatedValues;\r\n };\r\n\r\n const deleteRow = async (\r\n state: any[],\r\n setState: React.Dispatch<React.SetStateAction<any[]>>,\r\n row: any\r\n ) => {\r\n const rowIndex = row.index;\r\n const updatedData = state.filter((_, i) => i !== rowIndex);\r\n setState(updatedData);\r\n return Promise.resolve();\r\n };\r\n\r\n const onChangeAddressTableField = async (e: any, t: any, r: any, col: any, selectedData: any) => {\r\n const fieldName = e?.target?.name;\r\n let updatedValues: any = null;\r\n\r\n if (col?.editProperties?.field_name) {\r\n locationRef.current = {\r\n ...locationRef.current,\r\n [col.editProperties.field_name]: selectedData,\r\n };\r\n }\r\n\r\n if (fieldName === 'country') {\r\n updatedValues = {\r\n ...r._valuesCache,\r\n country: selectedData.id,\r\n country_id: selectedData.id,\r\n state: null,\r\n state_id: null,\r\n state_name: null,\r\n };\r\n } else if (fieldName === 'state') {\r\n updatedValues = {\r\n ...r._valuesCache,\r\n state: selectedData.id,\r\n state_id: selectedData.id\r\n };\r\n } else if (fieldName === 'phone') {\r\n const p = parsePhoneNumberFromString(`+${e}`);\r\n updatedValues = {\r\n ...r._valuesCache,\r\n country_code: p?.countryCallingCode ? `+${p.countryCallingCode}` : '',\r\n };\r\n }\r\n\r\n const summaryFields = [\r\n 'contact_name',\r\n 'street_1',\r\n 'street_2',\r\n 'street_3',\r\n 'zip_code',\r\n 'city',\r\n 'state',\r\n 'country'\r\n ];\r\n\r\n if (r._valuesCache) {\r\n const fieldValues = summaryFields.map(field => {\r\n if (field === 'country') {\r\n return locationRef.current?.country?.name || '';\r\n } else if (field === 'state') {\r\n return locationRef.current?.state?.name || '';\r\n } else if (field === fieldName) {\r\n return e.target?.value || '';\r\n }\r\n return r._valuesCache?.[field] || '';\r\n });\r\n\r\n const summary = fieldValues.reduce((acc, val, idx) => {\r\n if (!val) return acc;\r\n if (!acc) return val;\r\n\r\n val = val?.name || val;\r\n acc = acc?.name || acc;\r\n\r\n return [2, 3].includes(idx) ? `${acc} ${val}` : `${acc}, \\n${val}`;\r\n }, '');\r\n\r\n r._valuesCache.summary = summary;\r\n }\r\n\r\n if (updatedValues) {\r\n r.getAllCells().forEach((c: any) => {\r\n if (_.has(updatedValues, c.column.id)) {\r\n r._valuesCache[c.column.id] = updatedValues[c.column.id];\r\n }\r\n });\r\n }\r\n\r\n return r._valuesCache;\r\n };\r\n\r\n\r\n\r\n const EMAIL_REGEX =\r\n /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\r\nconst onSubmit = async () => {\r\n const isValid = await trigger();\r\n if (!isValid) return;\r\n\r\n const values = getValues();\r\n const formValues = values?.[PARTIES_FORM_ARRAY_NAME];\r\n let emailArray: string[] = [];\r\n\r\n if (formValues?.email_ids) {\r\n emailArray = formValues?.email_ids\r\n ?.split(/\\s*,\\s*/)\r\n .map((email_id: any) => email_id?.replaceAll(',', '')?.trim())\r\n .filter((email_id: any) => email_id.match(EMAIL_REGEX));\r\n }\r\n\r\n const payload = {\r\n party: {\r\n ...processPartiesPayload(formValues),\r\n email_ids: emailArray,\r\n account_type: selectedType,\r\n status: 1,\r\n type,\r\n company_id: formValues?.[PARTIES_FIELDS.COMPANY] || null\r\n }\r\n };\r\n if (typeof onSave == 'function') {\r\n onSave?.(payload);\r\n return;\r\n }\r\n setIsCreating(true);\r\n try {\r\n\r\n const res = await dispatch(createParties(payload));\r\n\r\n if (res?.meta?.requestStatus === 'fulfilled') {\r\n enqueueSnackbar(`${type} ${t('common.party.msg.success')}`);\r\n closeModal();\r\n partyCreated();\r\n } else if (res?.meta?.requestStatus === 'rejected') {\r\n const errorMessage = getErrorMessage(res?.error?.message);\r\n enqueueSnackbar(errorMessage, { variant: 'error' });\r\n }\r\n } finally {\r\n setIsCreating(false);\r\n }\r\n };\r\n\r\n const closeModal = () => {\r\n resetForm()\r\n setAddressRows([]);\r\n setContactRows([]);\r\n handleModalClose?.();\r\n setIsOpen?.(false);\r\n }\r\n const resetForm = () => {\r\n reset();\r\n }\r\n\r\n //Use Effect\r\n useEffect(() => {\r\n const addressData = addressRows.map(a => _.omit(a, addressOmitKeys));\r\n setValue(`${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.ADDRESS}`, addressData);\r\n }, [addressRows, setValue]);\r\n\r\n useEffect(() => {\r\n const contactData = contactRows.map(c => _.omit(c, contactOmitKeys));\r\n setValue(`${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.CONTACTS}`, contactData);\r\n }, [contactRows, setValue]);\r\n\r\n useEffect(() => {\r\n setIsCreating(isLoading)\r\n }, [isLoading]);\r\n\r\n\r\n useEffect(() => {\r\n if (selectedType === 'Individual') {\r\n // Clear Company fields\r\n resetField('parties.company_name');\r\n resetField('parties.vat_number');\r\n resetField('parties.crn');\r\n }\r\n\r\n if (selectedType === 'Company') {\r\n // Clear Individual fields\r\n resetField('parties.first_name');\r\n resetField('parties.last_name');\r\n }\r\n }, [selectedType, resetField]);\r\n\r\n// Pre-fill company and currency from user data when modal opens\r\nuseEffect(() => {\r\n\t\tif (isOpen && user?.company_data) {\r\n\t\t\tconst companyId =\r\n\t\t\t\tuser?.entity_priority ||\r\n\t\t\t\tuser?.company_data?.id ||\r\n\t\t\t\t(Array.isArray(user?.company_data) && user?.company_data[0]?.id) ||\r\n\t\t\t\tnull;\r\n\r\n\r\n\t\t\tif (companyId) {\r\n\t\t\t\tsetValue('quotation.company_id', companyId);\r\n setValue(`${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.COMPANY}`, companyId);\r\n\t\t\t}\r\n\t\t}\r\n }, [isOpen, user?.company_data, setValue]);\r\n\r\n useEffect(() => {\r\n if (isOpen && user?.company_currencies) {\r\n const currencies = Object.values(user.company_currencies);\r\n if (currencies.length > 0) {\r\n setValue(`${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.CURRENCY}`, [currencies[0].id]);\r\n }\r\n }\r\n }, [isOpen, user?.company_currencies , setValue]);\r\n\r\n // Auto fill first contact row\r\n useEffect(() => {\r\n const firstContactRow = contactRows[0];\r\n const parsedCountryCode = mainContactNo\r\n ? `+${parsePhoneNumberFromString(`+${mainContactNo}`)?.countryCallingCode || ''}`\r\n : '';\r\n\r\n const firstEmail = mainEmailIds\r\n ? mainEmailIds.split(/\\s*,\\s*/).map((e: string) => e.trim()).filter((e: string) => EMAIL_REGEX.test(e))[0] || ''\r\n : '';\r\n\r\n const updatedFirstRow = {\r\n name: responsiblePerson || '',\r\n contact_no: mainContactNo || '',\r\n email: firstEmail,\r\n country_code: parsedCountryCode,\r\n };\r\n\r\n if (firstContactRow) {\r\n const hasChanged = Object.keys(updatedFirstRow).some(\r\n (key) => firstContactRow[key] !== updatedFirstRow[key]\r\n );\r\n if (hasChanged) {\r\n const updatedRows = [...contactRows];\r\n updatedRows[0] = { ...updatedRows[0], ...updatedFirstRow };\r\n setContactRows(updatedRows);\r\n }\r\n } else {\r\n setContactRows([updatedFirstRow, ...contactRows]);\r\n }\r\n }, [responsiblePerson, mainContactNo, mainEmailIds]);\r\n\r\n // Auto fill first Address Row\r\n useEffect(() => {\r\n const firstRow = addressRows[0];\r\n const hasAddressDetails = firstRow?.address_type || firstRow?.street_1 || firstRow?.city;\r\n\r\n if (responsiblePerson && mainContactNo) {\r\n const parsedCountryCode = mainContactNo\r\n ? `+${parsePhoneNumberFromString(`+${mainContactNo}`)?.countryCallingCode || ''}`\r\n : '';\r\n\r\n // Create first row if doesn't exist yet\r\n if (!firstRow) {\r\n setAddressRows([{\r\n ...addressPayload,\r\n contact_name: responsiblePerson,\r\n phone: mainContactNo,\r\n country_code: parsedCountryCode,\r\n }]);\r\n return;\r\n }\r\n\r\n // Update first row ONLY if address details are not yet filled\r\n if (!hasAddressDetails) {\r\n const contactChanged = firstRow?.contact_name !== responsiblePerson;\r\n const phoneChanged = firstRow?.phone !== mainContactNo;\r\n\r\n if (contactChanged || phoneChanged) {\r\n setAddressRows(prev => prev.map((row, idx) =>\r\n idx === 0\r\n ? { ...row, contact_name: responsiblePerson, phone: mainContactNo, country_code: parsedCountryCode }\r\n : row\r\n ));\r\n }\r\n }\r\n }\r\n }, [responsiblePerson, mainContactNo]);\r\n\r\n const basicDetailsSection = useMemo(() => (\r\n <Accordion\r\n title={\r\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\r\n {t(\"common.party.sections.basic_details\")}\r\n </Typography>\r\n }\r\n accordionProps={{\r\n defaultExpanded: true,\r\n className: \"form--Accordion\",\r\n }}\r\n >\r\n <Grid container spacing={2}>\r\n\r\n <Grid item xs={12} sm={12}>\r\n <DynamicRadioButton\r\n label=''\r\n name={PARTIES_FIELDS.TYPE}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n options={partyType}\r\n display='row'\r\n title={t(t('common.party.fields.type'))}\r\n titlePosition='start'\r\n position={2} />\r\n </Grid>\r\n\r\n {selectedType === \"Individual\" && (\r\n <>\r\n <Grid item xs={12} sm={6}>\r\n <DynamicInput\r\n label={t('common.party.fields.firstName_label')}\r\n name={PARTIES_FIELDS.FIRST_NAME}\r\n placeholder={t('common.party.fields.firstName_placeholder')}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n required\r\n />\r\n </Grid>\r\n <Grid item xs={12} sm={6}>\r\n <DynamicInput\r\n label={t('common.party.fields.lastName_label')}\r\n name={PARTIES_FIELDS.LAST_NAME}\r\n placeholder={t('common.party.fields.lastName_placeholder')}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n required\r\n />\r\n </Grid>\r\n </>\r\n )}\r\n\r\n\r\n {selectedType === \"Company\" && (\r\n <>\r\n <Grid item xs={12} sm={6}>\r\n <DynamicInput\r\n label={t('common.party.fields.company_name_label')}\r\n name={PARTIES_FIELDS.COMPANY_NAME}\r\n placeholder={t('common.party.fields.company_name_placeholder')}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n required\r\n />\r\n </Grid>\r\n\r\n\r\n <Grid item xs={12} sm={6}>\r\n <DynamicInput\r\n label={t('common.party.fields.vat_number_label')}\r\n name={PARTIES_FIELDS.VAT_NUMBER}\r\n placeholder={t('common.party.fields.vat_number_placeholder')}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={12} sm={6}>\r\n <DynamicInput\r\n label={t('common.party.fields.crn_label')}\r\n name={PARTIES_FIELDS.CRN}\r\n placeholder={t('common.party.fields.crn_placeholder')}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n />\r\n </Grid>\r\n </>\r\n )}\r\n\r\n <Grid item xs={12} sm={6}>\r\n <DynamicPhone\r\n type=\"text\"\r\n label={t('common.party.fields.contact_label')}\r\n name={PARTIES_FIELDS.CONTACT_NO}\r\n placeholder={t('common.party.fields.contact_placeholder')}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n required\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={12} sm={6}>\r\n <DynamicInput\r\n label={t('common.party.fields.email_label')}\r\n name={PARTIES_FIELDS.EMAIL_IDS}\r\n placeholder={t('common.party.fields.email_placeholder')}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n required\r\n />\r\n </Grid>\r\n\r\n {/*Entity Name */}\r\n <Grid item xs={12} sm={6}>\r\n <DynamicSearchSelect\r\n label={t('common.party.fields.company_label')}\r\n apiType=\"company\"\r\n selectedLabel='Companies'\r\n name={PARTIES_FIELDS.COMPANY}\r\n placeholder={t('common.party.fields.company_placeholder')}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n required\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={12} sm={6}>\r\n <DynamicSearchSelect\r\n label={t('common.party.fields.currency_label')}\r\n apiType='currency'\r\n selectedLabel='Currency'\r\n name={PARTIES_FIELDS.CURRENCY}\r\n placeholder={t('common.party.fields.currency_placeholder')}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n required\r\n is_multiselect\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={12} sm={6}>\r\n <DynamicInput\r\n label={t('common.party.fields.responsible_person_label')}\r\n name={PARTIES_FIELDS.RESPONSIBLE_PERSON}\r\n placeholder={t('common.party.fields.responsible_person_placeholder')}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n required\r\n />\r\n </Grid>\r\n\r\n\r\n </Grid>\r\n </Accordion>\r\n ), [t, control, selectedType]);\r\n\r\n const accountingSection = useMemo(() => (\r\n <Accordion\r\n title={\r\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\r\n {t(\"common.party.sections.accounting\")}\r\n </Typography>\r\n }\r\n accordionProps={{\r\n defaultExpanded: true,\r\n className: \"form--Accordion\",\r\n }}\r\n >\r\n <Grid container spacing={2}>\r\n <Grid item xs={12} sm={6}>\r\n <DynamicSearchSelect\r\n label={t('common.party.fields.receivable_account_label')}\r\n apiType=\"accounts\"\r\n selectedLabel='Account'\r\n name={PARTIES_FIELDS.RECEIVABLE_ACCOUNT}\r\n placeholder={t('common.party.fields.receivable_account_placeholder')}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n required\r\n customeFilter={{ '&account_type.eq': 'Receivable' }}\r\n options={[]}\r\n />\r\n </Grid>\r\n <Grid item xs={12} sm={6}>\r\n <DynamicSearchSelect\r\n label={t('common.party.fields.tax_template_label')}\r\n apiType=\"taxTemplate\"\r\n selectedLabel='Tax Template'\r\n name={PARTIES_FIELDS.TAX_TEMPLATE}\r\n placeholder={t('common.party.fields.tax_template_placeholder')}\r\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\r\n formControl={control}\r\n required\r\n options={[]}\r\n />\r\n </Grid>\r\n </Grid>\r\n </Accordion>\r\n ), [t, control]);\r\n\r\n const addressSection = useMemo(() => (\r\n <Accordion\r\n title={\r\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\r\n {t(\"common.party.sections.address\")}\r\n <span className='errorIndicator'>*</span>\r\n {errors?.[PARTIES_FORM_ARRAY_NAME]?.[PARTIES_FIELDS.ADDRESS] && (\r\n <span className='error'>\r\n {errors?.[PARTIES_FORM_ARRAY_NAME]?.[PARTIES_FIELDS.ADDRESS]?.message}\r\n </span>\r\n )}\r\n </Typography>\r\n }\r\n accordionProps={{\r\n defaultExpanded: true,\r\n className: \"form--Accordion\",\r\n }}\r\n >\r\n <Grid spacing={4}>\r\n <Grid item xs={12}>\r\n <MaterialTable\r\n rows={[...addressRows]}\r\n columns={tableColumns(addressColumns)}\r\n paginationModel={{ pageNo: 1, limit: 10 }}\r\n totalPages={20}\r\n enableColumnDragging={false}\r\n isResetRow={false}\r\n columnOrder={['mrt-row-select']}\r\n enableRowSelection={false}\r\n enableBottomToolbar\r\n disableDefaultActionColumn\r\n editDisplayMode='row'\r\n enableRowCreate\r\n onCreateRow={(data) => handleRowOperation(data, addressRows, setAddressRows, true)}\r\n onEditRow={(data) => handleRowOperation(data, addressRows, setAddressRows, true)}\r\n onDeleteRow={(row) => deleteRow(addressRows, setAddressRows, row)}\r\n onChangeRowField={onChangeAddressTableField}\r\n />\r\n </Grid>\r\n </Grid>\r\n </Accordion>\r\n // eslint-disable-next-line\r\n ), [t, addressRows, tableColumns, errors]);\r\n\r\n const contactSection = useMemo(() => (\r\n <Accordion\r\n title={\r\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\r\n {t(\"common.party.sections.contact\")}\r\n <span className='errorIndicator'>*</span>\r\n {errors?.[PARTIES_FORM_ARRAY_NAME]?.[PARTIES_FIELDS.CONTACTS] && (\r\n <span className='error'>\r\n {errors?.[PARTIES_FORM_ARRAY_NAME]?.[PARTIES_FIELDS.CONTACTS]?.message}\r\n </span>\r\n )}\r\n </Typography>\r\n }\r\n accordionProps={{\r\n defaultExpanded: true,\r\n className: \"form--Accordion\",\r\n }}\r\n >\r\n <Grid spacing={4}>\r\n <Grid item xs={12}>\r\n\r\n <MaterialTable\r\n rows={[...contactRows]}\r\n columns={tableColumns(contactColumns)}\r\n paginationModel={{ pageNo: 1, limit: 10 }}\r\n totalPages={20}\r\n enableColumnDragging={false}\r\n isResetRow={false}\r\n columnOrder={['mrt-row-select']}\r\n enableRowSelection={false}\r\n enableBottomToolbar\r\n disableDefaultActionColumn\r\n editDisplayMode='row'\r\n enableRowCreate\r\n onCreateRow={(data) => handleRowOperation(data, contactRows, setContactRows, false)}\r\n onEditRow={(data) => {\r\n handleRowOperation(data, contactRows, setContactRows, false);\r\n\r\n if (data.row.index === 0) {\r\n setValue(\r\n `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.RESPONSIBLE_PERSON}`,\r\n data.values.name || ''\r\n );\r\n setValue(\r\n `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.CONTACT_NO}`,\r\n data.values.contact_no || ''\r\n );\r\n setValue(\r\n `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.EMAIL_IDS}`,\r\n data.values.email || ''\r\n );\r\n }\r\n }}\r\n onDeleteRow={(row) => {\r\n if (row.index === 0) {\r\n enqueueSnackbar(t('common.party.errors.cannotDeleteResponsiblePerson'), { variant: 'error' });\r\n return Promise.resolve();\r\n }\r\n return deleteRow(contactRows, setContactRows, row);\r\n }}\r\n onChangeRowField={onChangeAddressTableField}\r\n />\r\n </Grid>\r\n </Grid>\r\n </Accordion>\r\n // eslint-disable-next-line\r\n ), [t, contactRows, tableColumns, errors]);\r\n\r\n return (\r\n <Modal\r\n open={isOpen}\r\n onClose={closeModal}\r\n maxWidth='lg'\r\n fullWidth\r\n sx={{ overflowY: 'hidden' }}\r\n {...modalProps}\r\n >\r\n {isCreating && <ModalLoader />}\r\n <form onSubmit={handleSubmit(onSubmit)} className=\"scroll-container\" style={{ position: 'relative', overflow: 'auto' }}>\r\n <DialogTitle className='itemEntryModal--DialogTitle'\r\n >\r\n <Typography type='s3' color='inherit' weight='medium'>\r\n {`Add ${type}`}\r\n </Typography>\r\n <IconButton onClick={closeModal}>\r\n <Close fontSize='small' />\r\n </IconButton>\r\n </DialogTitle>\r\n\r\n <DialogContent>\r\n {basicDetailsSection}\r\n <Divider className='form--SectionDivider' />\r\n {addressSection}\r\n <Divider className='form--SectionDivider' />\r\n {contactSection}\r\n <Divider className='form--SectionDivider' />\r\n {accountingSection}\r\n </DialogContent>\r\n\r\n <DialogActions className='itemEntryModal--DialogAction' sx={{\r\n position: 'sticky',\r\n bottom: 0,\r\n backgroundColor: 'white',\r\n zIndex: 1,\r\n padding: '8px 24px',\r\n justifyContent: 'end'\r\n }}>\r\n <Box display='flex' gap={1.5}>\r\n <Button\r\n className='itemEntryModal--DialogAction--WhiteBtn'\r\n onClick={closeModal}\r\n >\r\n {t('common.cancel')}\r\n </Button>\r\n <Button\r\n variant=\"contained\"\r\n onClick={handleSubmit(onSubmit)}\r\n >\r\n {t('common.save')}\r\n </Button>\r\n </Box>\r\n </DialogActions>\r\n </form>\r\n </Modal>\r\n );\r\n};\r\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { Controller } from 'react-hook-form';\nimport {\n\tBox,\n\tDivider,\n\tIconButton,\n\tInputAdornment,\n\tMenuItem,\n\tMenuItemProps,\n\tOutlinedInput\n} from '@mui/material';\nimport PropTypes from 'prop-types';\n\nimport Select from '../../../select/select';\nimport ChipOrPlaceholder from './chip-or-placeholder';\nimport Checkbox from '../../../checkbox/checkbox';\nimport Typography from '../../../typography/typography';\nimport Chip from '../../../chip/chip';\nimport { MoreIcon } from '../../../icons';\nimport './element.scss';\nimport { Add, Close } from '@mui/icons-material';\nimport { useTranslation } from \"react-i18next\";\n\ninterface IMenuItems extends MenuItemProps {\n\toptions: any[];\n\tmultiple: boolean;\n\tplaceholder: string;\n\twith_checkboxes: boolean;\n\tvalues: string | string[];\n\tfield: any;\n}\n\nconst generateMenuItems = ({\n\toptions,\n\tmultiple,\n\tplaceholder,\n\twith_checkboxes,\n\tvalues,\n\tfield\n}: IMenuItems) => {\n\tconst items: React.ReactElement[] = [];\n\tif (!multiple) {\n\t\titems.push(\n\t\t\t<MenuItem disabled value='' sx={{ opacity: `0 !important`, height: `0 !important`, p: `0 !important`, m: `0 !important` }}>\n\t\t\t\t<Typography type='s3' color='theme.secondary.1000'>\n\t\t\t\t\t<em>{placeholder}</em>\n\t\t\t\t</Typography>\n\t\t\t</MenuItem>\n\t\t);\n\t}\n\toptions?.forEach((option, index) => {\n\t\titems.push(\n\t\t\t<MenuItem\n\t\t\t\tvalue={option.value}\n\t\t\t\tkey={index}\n\t\t\t\tdisabled={Boolean(option.disabled)}\n\t\t\t\tclassName={option?.isGroup ? 'select--MenuItemHeader' : ''}>\n\t\t\t\t<Box sx={{ display: 'flex', gap: 1 }}>\n\t\t\t\t\t{multiple && with_checkboxes && (\n\t\t\t\t\t\t<Checkbox\n\t\t\t\t\t\t\tchecked={Boolean(values && values?.indexOf(option.value) > -1)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t<Typography type='s3' color='theme.secondary.1000'>\n\t\t\t\t\t\t{option.label}\n\t\t\t\t\t</Typography>\n\t\t\t\t</Box>\n\t\t\t</MenuItem>\n\t\t);\n\t\tif (option?.isGroup && Array.isArray(option?.options)) {\n\t\t\toption.options.forEach((opt) => {\n\t\t\t\titems.push(\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tvalue={opt.value}\n\t\t\t\t\t\tdisabled={Boolean(opt.disabled)}\n\t\t\t\t\t\tsx={{ pl: 5 }}\n\t\t\t\t\t\tkey={`${option.value}-${opt.value}`}>\n\t\t\t\t\t\t<Box sx={{ display: 'flex', gap: 1 }}>\n\t\t\t\t\t\t\t{multiple && with_checkboxes && (\n\t\t\t\t\t\t\t\t<Checkbox\n\t\t\t\t\t\t\t\t\tchecked={Boolean(values && values?.indexOf(opt.value) > -1)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t<Typography type='s3' color='theme.secondary.1000'>\n\t\t\t\t\t\t\t\t{opt.label}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t</MenuItem>\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\t});\n\tif (field.enable_footer) {\n\t\titems.push(\n\t\t\t<Box>\n\t\t\t\t<Divider flexItem />\n\t\t\t\t<MenuItem sx={{ gap: 1 }} onClick={field.onFooterClick}>\n\t\t\t\t\t<Add fontSize='small' />\n\t\t\t\t\t<Typography type='s4' color='theme.secondary.1000'>\n\t\t\t\t\t\tCreate New {field.label}\n\t\t\t\t\t</Typography>\n\t\t\t\t</MenuItem>\n\t\t\t</Box>\n\t\t);\n\t}\n\n\treturn items;\n};\nconst SelectedItems = ({\n\tdata,\n\toptions\n}: {\n\tdata: string[];\n\toptions: any[];\n}) => {\n\tconst displayTitle = data.map(\n\t\t(selectedItem) =>\n\t\t\toptions?.find((option: any) => option.value === selectedItem)?.label ||\n\t\t\tselectedItem\n\t);\n\tconst fDisplayTitle = displayTitle.filter(Boolean)\n\treturn (\n\t\t<Typography\n\t\t\ttype='s4'\n\t\t\tcolor='inherit'\n\t\t\tsx={{ display: 'flex', gap: 1, alignItems: 'center', mt: 0.5 }}>\n\t\t\t{fDisplayTitle.slice(0.4).join(', ')}\n\t\t\t{data.length > 4 && (\n\t\t\t\t<Chip variant='outlined' type='normal' label={<MoreIcon />} />\n\t\t\t)}\n\t\t</Typography>\n\t);\n};\n\nconst DynamicSelect = React.memo((props: any) => {\n\tconst [options, setOptions] = useState([]);\n\tconst [selectedValue, setSelectedValue] = useState(null);\n\tconst { handleOptions } = props;\n\tuseEffect(() => {\n\t\tif (handleOptions) {\n\t\t\thandleOptions(selectedValue);\n\t\t}\n\t}, [handleOptions, selectedValue]);\n\tconst handleSearch = (search: string) => {\n\t\tif (props.options?.length && search) {\n\t\t\tconst searchedOptions = props.options.filter((opt) =>\n\t\t\t\tReact.isValidElement(opt.label)\n\t\t\t\t\t? opt?.searchLabel?.toLowerCase()?.includes(search.toLowerCase())\n\t\t\t\t\t: opt.label.toLowerCase().includes(search.toLowerCase())\n\t\t\t);\n\t\t\tsetOptions(searchedOptions);\n\t\t} else {\n\t\t\tsetOptions(props.options);\n\t\t}\n\t};\n\n\tconst removeUndefine = (selectOptions: any[]) => {\n\t\treturn selectOptions?.filter((option) => option);\n\t};\n\tconst handleSetOptions = useCallback(() => {\n\t\tsetOptions(props.options);\n\t}, [props.options]);\n\n\tuseEffect(() => {\n\t\thandleSetOptions();\n\t}, [handleSetOptions]);\n\t\tconst { t } = useTranslation();\n\t\n\treturn (\n\t\t<Controller\n\t\t\tcontrol={props.formControl}\n\t\t\tname={`${props.fieldArrayName}.${props.name}`}\n\t\t\trender={({ field, fieldState }) => (\n\t\t\t\t<>\n\t\t\t\t\t{props.placeholder === 'Select Currency'\n\t\t\t\t\t\t? setSelectedValue(field.value)\n\t\t\t\t\t\t: setSelectedValue(null)}\n\t\t\t\t\t<Select\n\t\t\t\t\t\t{...field}\n\t\t\t\t\t\t// onFocus={() => {\n\t\t\t\t\t\t// \tsetOptions(props.options);\n\t\t\t\t\t\t// }}\n\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\tdataPosition={props.position}\n\t\t\t\t\t\tdataName={`${props.fieldArrayName}.${props.name}`}\n\t\t\t\t\t\tplaceholder={props.placeholder}\n\t\t\t\t\t\tlabel={props.label}\n\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\tfield.value?.id || field.value?.label || field.value || (props.is_multiselect ? [] : '')\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdefaultValue={\n\t\t\t\t\t\t\tprops.defaultValue || (props.is_multiselect ? [] : '')\n\t\t\t\t\t\t}\n\t\t\t\t\t\trequired={props.formType === 'builder' ? false : props.required}\n\t\t\t\t\t\tsize={props.size || 'small'}\n\t\t\t\t\t\tmultiple={props.is_multiselect || false}\n\t\t\t\t\t\tdisabled={props.disabled}\n\t\t\t\t\t\tvariant='outlined'\n\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\tprops.is_multiselect && removeUndefine(field.value)?.length\n\t\t\t\t\t\t\t\t? 'MultiSelect'\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t}\n\t\t\t\t\t\trenderValue={(selected: string | string[]) => (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{Array.isArray(selected) ? (\n\t\t\t\t\t\t\t\t\t<ChipOrPlaceholder\n\t\t\t\t\t\t\t\t\t\tselectedLabel={props.selectedLabel}\n\t\t\t\t\t\t\t\t\t\tdata={removeUndefine(selected)}\n\t\t\t\t\t\t\t\t\t\tplaceholder={props.placeholder}\n\t\t\t\t\t\t\t\t\t\tonDelete={props?.onChipRemove}\n\t\t\t\t\t\t\t\t\t\tdisabled={props.disabled}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\toptions?.find(\n\t\t\t\t\t\t\t\t\t\t(option: any) =>\n\t\t\t\t\t\t\t\t\t\t\t(option.value?.id || option.value) === selected\n\t\t\t\t\t\t\t\t\t)?.label ||\n\t\t\t\t\t\t\t\t\tselected ||\n\t\t\t\t\t\t\t\t\tprops.placeholder\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tsearchPlaceholder={`${t('common.search')} ${props.label}`}\n\t\t\t\t\t\thandleSearch={handleSearch}\n\t\t\t\t\t\terror={Boolean(fieldState.error?.message)}\n\t\t\t\t\t\thelperText={fieldState.error?.message || ''}\n\t\t\t\t\t\tonBlur={field.onBlur}\n\t\t\t\t\t\tinput={\n\t\t\t\t\t\t\t!props?.is_multiselect && !props.disabled && field?.value ? (\n\t\t\t\t\t\t\t\t<OutlinedInput\n\t\t\t\t\t\t\t\t\tlabel=''\n\t\t\t\t\t\t\t\t\tendAdornment={\n\t\t\t\t\t\t\t\t\t\t<InputAdornment position='end'>\n\t\t\t\t\t\t\t\t\t\t\t{field.value && (\n\t\t\t\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-label='clear selection'\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => field.onChange(null)}\n\t\t\t\t\t\t\t\t\t\t\t\t\tedge='end'\n\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{ mr: 1.5 }}\n\t\t\t\t\t\t\t\t\t\t\t\t\tsize='small'>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Close sx={{ fontSize: '1rem' }} />\n\t\t\t\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</InputAdornment>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tloading={props?.is_loading}>\n\t\t\t\t\t\t{generateMenuItems({\n\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\tmultiple: Boolean(props.is_multiselect),\n\t\t\t\t\t\t\tplaceholder: props.placeholder,\n\t\t\t\t\t\t\tvalues: field.value,\n\t\t\t\t\t\t\twith_checkboxes: true,\n\t\t\t\t\t\t\tfield: props\n\t\t\t\t\t\t})}\n\t\t\t\t\t</Select>\n\t\t\t\t\t{props.is_multiselect && Array.isArray(field?.value) && (\n\t\t\t\t\t\t<SelectedItems data={field.value} options={options} />\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t/>\n\t);\n});\n\nDynamicSelect.propTypes = {\n\tname: PropTypes.string.isRequired,\n\tplaceholder: PropTypes.string.isRequired,\n\tlabel: PropTypes.string.isRequired,\n\tsize: PropTypes.string,\n\toptions: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\tlabel: PropTypes.string,\n\t\t\tvalue: PropTypes.string\n\t\t})\n\t).isRequired,\n\tformControl: PropTypes.shape({\n\t\tregister: PropTypes.func.isRequired,\n\t\tsetValue: PropTypes.func\n\t}).isRequired,\n\tdefaultValue: PropTypes.string,\n\tfieldArrayName: PropTypes.string,\n\tid: PropTypes.string,\n\trequired: PropTypes.bool,\n\tis_multiselect: PropTypes.bool,\n\tposition: PropTypes.number,\n\tformType: PropTypes.string,\n\ttypeOfField: PropTypes.string,\n\tdisabled: PropTypes.bool,\n\tonChipRemove: PropTypes.func,\n\tenable_footer: PropTypes.bool,\n\tfooter_action: PropTypes.string,\n\tonFooterClick: PropTypes.any,\n\tis_loading: PropTypes.bool,\n\tselectedLabel: PropTypes.string\n};\n\nexport { DynamicSelect };\nexport default DynamicSelect;\n","// import { Controller } from 'react-hook-form';\nimport PropTypes from \"prop-types\";\nimport Button from \"../../../button/button\";\n\n// { control, index }\n\nconst DynamicButton = (props: any) => {\n const { type, onClick, className, disable, ...rest } = props;\n\n return (\n <Button\n type={type}\n onClick={onClick}\n className={className}\n {...rest}\n disabled={disable}\n >\n {props.text}\n </Button>\n );\n};\n\nDynamicButton.propTypes = {\n text: PropTypes.string.isRequired,\n onClick: PropTypes.func,\n type: PropTypes.string,\n style: PropTypes.object,\n variant: PropTypes.string,\n className: PropTypes.string,\n disable: PropTypes.bool,\n startIcon: PropTypes.node,\n};\n\nexport { DynamicButton };\nexport default DynamicButton;\n","import React from 'react';\nimport { Control, Controller } from 'react-hook-form';\nimport Checkbox from '../../../checkbox/checkbox';\nimport Typography from '../../../typography/typography';\nimport { CheckboxProps, Stack, StackProps } from '@mui/material';\nimport { useLanguage } from '../../../../hooks/useLangauge';\n\ninterface IDynamicCheckbox {\n\tformControl: Control<any>;\n\tfieldArrayName: string;\n\tname: string;\n\tlabel?: string;\n\tposition?: number;\n\tdisabled?: boolean;\n\ttitlePosition?: 'start' | 'end';\n\ttypeOfField?: string;\n\ttitle: string;\n\ttitleColor?: string; // New prop for title color\n\tcheckboxProps?: CheckboxProps;\n\tstackProps?: StackProps;\n}\n\nconst DynamicCheckBox: React.FC<IDynamicCheckbox> = ({\n\tformControl,\n\tfieldArrayName,\n\tname,\n\tlabel,\n\tposition,\n\tdisabled,\n\ttitlePosition = 'end',\n\ttitle,\n\ttitleColor = 'theme.secondary.800', // Default color\n\tcheckboxProps,\n\tstackProps,\n}) => {\n\tconst {isRtl}=useLanguage();\n\treturn (\n\t\t<Controller\n\t\t\tcontrol={formControl}\n\t\t\tname={`${fieldArrayName}.${name}`}\n\t\t\trender={({ field }) => (\n\t\t\t\t<>\n\t\t\t\t\t{label && (\n\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\ttype='s5'\n\t\t\t\t\t\t\tweight='medium'\n\t\t\t\t\t\t\tcolor='theme.secondary.800'\n\t\t\t\t\t\t\tdata-position={position}\n\t\t\t\t\t\t\tsx={{ mb: 0.5 }}>\n\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t)}\n\n\t\t\t\t\t<Stack direction='row' spacing={isRtl?'':0.25} alignItems='center' {...stackProps}>\n\t\t\t\t\t\t{titlePosition === 'start' && (\n\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\ttype='s4'\n\t\t\t\t\t\t\t\tweight='medium'\n\t\t\t\t\t\t\t\tcolor={titleColor}> {/* Use titleColor prop here */}\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<Checkbox\n\t\t\t\t\t\t\tchecked={Boolean(field.value)}\n\t\t\t\t\t\t\tonChange={field.onChange}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\tsize='small'\n\t\t\t\t\t\t\tsx={{ m: 1 }}\n\t\t\t\t\t\t\t{...checkboxProps}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{titlePosition === 'end' && (\n\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\ttype='s4'\n\t\t\t\t\t\t\t\tweight='medium'\n\t\t\t\t\t\t\t\tcolor={titleColor}> {/* Use titleColor prop here */}\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Stack>\n\t\t\t\t</>\n\t\t\t)}\n\t\t/>\n\t);\n};\n\nexport default DynamicCheckBox;","/* eslint-disable no-mixed-spaces-and-tabs */\r\nimport { Controller/* , useFormContext */ } from 'react-hook-form';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useMemo } from 'react';\r\nimport dayjs from 'dayjs';\r\n\r\nimport './element.scss';\r\nimport DatePicker from '../../../date-picker/date-picker';\r\n\r\ninterface DynamicDateProps {\r\n formControl: any;\r\n name: string;\r\n label: string;\r\n fieldArrayName?: string;\r\n required?: boolean;\r\n position?: number;\r\n formType?: string;\r\n placeholder?: string;\r\n defaultValue?: any;\r\n is_future_dates_allowed?: boolean;\r\n is_past_dates_allowed?: boolean;\r\n typeOfField?: string;\r\n disabled?: boolean;\r\n min_date?: any;\r\n max_date?: any;\r\n}\r\n\r\nconst DynamicDate = React.memo<DynamicDateProps>((props) => {\r\n // const formContext = useFormContext();\r\n\r\n // Memoize field name to prevent unnecessary recalculations\r\n const fieldName = useMemo(() =>\r\n `${props.fieldArrayName}.${props.name}`,\r\n [props.fieldArrayName, props.name]\r\n );\r\n\r\n // Memoize date calculations to prevent recalculation on every render\r\n const { minDate, maxDate } = useMemo(() => {\r\n const min = dayjs(props.min_date || null).isValid()\r\n ? dayjs(props.min_date)\r\n : null;\r\n\r\n const max = dayjs(props.max_date || null).isValid()\r\n ? dayjs(props.max_date)\r\n : null;\r\n\r\n return { minDate: min, maxDate: max };\r\n }, [props.min_date, props.max_date]);\r\n\r\n // Memoize required prop calculation\r\n const isRequired = useMemo(() =>\r\n props.formType === 'builder' ? false : props.required,\r\n [props.formType, props.required]\r\n );\r\n\r\n return (\r\n <Controller\r\n control={props.formControl}\r\n name={fieldName}\r\n render={({ field, fieldState }) => (\r\n <DatePicker\r\n {...field}\r\n // {...props}\r\n dataPosition={props.position}\r\n dataName={fieldName}\r\n label={props.label}\r\n placeholder={props.placeholder}\r\n required={isRequired}\r\n defaultValue={props.defaultValue}\r\n disableFutureDates={props.is_future_dates_allowed}\r\n disablePastDates={props.is_past_dates_allowed}\r\n helperText={fieldState.error?.message}\r\n error={Boolean(fieldState.error)}\r\n disabled={props.disabled}\r\n minDate={minDate}\r\n maxDate={maxDate}\r\n {...(props?.views && { views: props?.views })}\r\n />\r\n )}\r\n />\r\n );\r\n});\r\n\r\nDynamicDate.displayName = 'DynamicDate';\r\n\r\nDynamicDate.propTypes = {\r\n formControl: PropTypes.shape({\r\n register: PropTypes.func.isRequired,\r\n setValue: PropTypes.func\r\n }).isRequired,\r\n name: PropTypes.string.isRequired,\r\n label: PropTypes.string.isRequired,\r\n fieldArrayName: PropTypes.string,\r\n required: PropTypes.bool,\r\n position: PropTypes.number,\r\n formType: PropTypes.string,\r\n placeholder: PropTypes.string,\r\n defaultValue: PropTypes.any,\r\n is_future_dates_allowed: PropTypes.bool,\r\n is_past_dates_allowed: PropTypes.bool,\r\n typeOfField: PropTypes.string,\r\n disabled: PropTypes.bool,\r\n min_date: PropTypes.any,\r\n max_date: PropTypes.any\r\n};\r\n\r\nexport { DynamicDate };\r\nexport default DynamicDate;","import { Controller } from \"react-hook-form\";\nimport TextField from \"../../../text-field/text-field\";\nimport PropTypes from \"prop-types\"\nimport { InputAdornment } from \"@mui/material\";\nconst DynamicCurrency = (props: any) => {\n return (\n <Controller\n control={props.formControl}\n name={`${props.fieldArrayName}.${props.name}`}\n render={({ field, fieldState }) => (\n <TextField\n {...field}\n name={`${props.fieldArrayName}.${props.name}`}\n fullWidth\n label={props.label}\n defaultValue={props.default_value.replace(/[^0-9]/g, \"\")}\n placeholder={props.placeholder}\n multiline={props.is_multiline || false}\n disabled={props.disabled}\n required={props.is_required}\n inputProps={{\n step: props?.float_step || \"0\" , \n min : props.min_length || 0 , \n max : props.max_length || 1000 ,\n inputMode: 'numeric',\n pattern : `${props.is_negative}` ? '-?[0-9]*' : '[0-9]*' , \n \n }}\n InputProps={{\n startAdornment: (\n <InputAdornment\n position=\"start\"\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRight: '1px solid rgba(0, 0, 0, 0.23)',\n width: 50,\n height: '100%',\n borderBottomLeftRadius: 4, \n borderTopLeftRadius: 4,\n }}\n >\n {(props.currencyType !== null ? props.currencyType : \"-\")}\n </InputAdornment>\n )\n\n }}\n\n error={Boolean(fieldState.error?.message)}\n helperText={fieldState.error?.message || \"\"}\n onBlur = {field.onBlur}\n onChange ={(e : any) => {\n const numericValue = e.target.value.replace(/[^0-9]/g , \"\");\n field.onChange(numericValue)\n }}\n />\n )}\n />\n )\n}\nDynamicCurrency.propTypes = {\n formControl: PropTypes.shape({\n register: PropTypes.func.isRequired,\n setValue: PropTypes.func,\n _formState: PropTypes.object.isRequired\n }).isRequired,\n defaultValue: PropTypes.string,\n name: PropTypes.string.isRequired,\n label: PropTypes.node.isRequired,\n fieldArrayName: PropTypes.string,\n required: PropTypes.bool,\n is_multiline: PropTypes.bool,\n min: PropTypes.number,\n max: PropTypes.number,\n min_length: PropTypes.number,\n max_length: PropTypes.number,\n float_step: PropTypes.string,\n position: PropTypes.number,\n formType: PropTypes.string,\n disabled: PropTypes.bool,\n InputProps: PropTypes.object,\n placeholder : PropTypes.string , \n currencyType :PropTypes.string ,\n \n}\nexport { DynamicCurrency };\nexport default DynamicCurrency;\n\n\n\n","import PropTypes from \"prop-types\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Grid, Box } from \"@mui/material\";\nimport { useDrag, useDrop } from \"react-dnd\";\n\nimport \"./element.scss\";\nimport images from \"../../../../assets/images\";\n\nconst DynamicElementHOC = (props: any) => {\n const [, ref] = useDrag({\n type: \"element\",\n item: { index: props.index },\n });\n const [, drop] = useDrop({\n accept: \"element\",\n hover: (draggedElement: any) => {\n const draggedIndex = draggedElement.index;\n const dropIndex = props.index;\n if (dropIndex === draggedIndex) {\n return;\n }\n\n props.swap(draggedIndex, dropIndex);\n },\n drop: () => {\n props.elementSwap();\n },\n });\n\n \n const activeClassName = `${\n props.activeIndex\n ? \"form-element-wrapper--Active\"\n : \"form-element-wrapper--Element\"\n }`;\n const defaultClassName = `${\n props?.children?.props?.typeOfField === \"custom\"\n ? \"\"\n : \"form-element-wrapper--Default\"\n }`;\n\n return (\n <Grid\n item\n xs={props?.element === \"table\" ? 12 : 12}\n className={`${activeClassName} ${defaultClassName}`}\n ref={(node) => drop(ref(node))}\n >\n <Box sx={{ width: \"100%\" }} onClick={props.onClick}>\n {props.children}\n </Box>\n <div className=\"form-element-wrapper--Actions\">\n <img\n src={images.duplicate}\n onClick={() => props.handleDuplicate(props.index)}\n />\n {props?.children?.props?.typeOfField === \"custom\" && (\n <CloseIcon\n style={{ fontSize: \"1rem\", color: \"#656669\" }}\n onClick={() => {\n props.removeElement(props.index);\n props.setElementHoc();\n }}\n />\n )}\n </div>\n </Grid>\n );\n};\n\nDynamicElementHOC.propTypes = {\n removeElement: PropTypes.func.isRequired,\n index: PropTypes.number.isRequired,\n onClick: PropTypes.func,\n children: PropTypes.node.isRequired,\n swap: PropTypes.func,\n elementSwap: PropTypes.func,\n activeIndex: PropTypes.bool,\n handleDuplicate: PropTypes.func,\n setElementHoc: PropTypes.func,\n element: PropTypes.string,\n elementPerRow : PropTypes.number \n};\n\nexport { DynamicElementHOC };\nexport default DynamicElementHOC;\n","import { Controller } from \"react-hook-form\";\nimport TextField from \"../../../text-field/text-field\";\nimport PropTypes from \"prop-types\"\nimport { InputAdornment, Select, MenuItem } from \"@mui/material\";\nimport { useState } from \"react\";\nimport KeyboardArrowDownOutlinedIcon from '@mui/icons-material/KeyboardArrowDownOutlined';\nconst DynamicInputSelect = (props: any) => {\n const [defaultOption, setSelectOption] = useState(props.options[0].value); //need to be update \n const handleOptionChange = (event: any) => {\n setSelectOption(event.target.value);\n };\n return (\n <Controller\n control={props.formControl}\n name={`${props.fieldArrayName}.${props.name}`}\n render={({ field, fieldState }) => (\n <TextField\n {...field}\n name={`${props.fieldArrayName}.${props.name}`}\n fullWidth\n label={props.label}\n placeholder={props.placeholder}\n multiline={props.is_multiline || false}\n disabled={props.disabled}\n required={props.is_required}\n inputProps={{\n step: props?.float_step || \"0\",\n min: props.min_length || 0,\n max: props.max_length || 1000,\n inputMode: 'string',\n\n\n }}\n InputProps={{\n endAdornment: (\n <InputAdornment\n position=\"start\"\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderLeft: '1px solid rgba(0, 0, 0, 0.23)',\n padding: 1,\n height: '100%',\n borderBottomLeftRadius: 4,\n borderTopLeftRadius: 4,\n backgroundColor: 'rgba(245 , 245 , 245 )',\n margin: 0,\n boxSizing: 'border-box',\n borderRadius: 0,\n\n }}\n\n >\n <Select\n value={defaultOption}\n onChange={handleOptionChange}\n sx={{\n height: '100%',\n '&:focus': {\n backgroundColor: 'rgba(245 , 245 , 245 )' , // Prevent background color change on focus\n },\n '&:hover': {\n backgroundColor: 'rgba(245 , 245 , 245 )', // Prevent background color change on hover\n },\n '&:active': {\n backgroundColor: 'rgba(245 , 245 , 245)', // Prevent background color change on active\n },\n '&.Mui-focused': {\n backgroundColor: '#fff', // Override the focus background color\n },\n '&.Mui-focused .MuiOutlinedInput-notchedOutline': {\n borderColor: '#fff', // Prevent border color change on focus\n },\n }}\n variant=\"standard\"\n disableUnderline\n\n IconComponent={KeyboardArrowDownOutlinedIcon}\n\n >\n {props.options?.map((item: any, index: any) => (\n <MenuItem\n key={index}\n value={item.value}\n sx={{\n '&:hover': {\n backgroundColor: 'rgba(245 , 245 , 245 )', // Prevent background color change on hover\n },\n '&.Mui-selected': {\n backgroundColor: 'rgba(245 , 245 , 245)', // Prevent background color change on selection\n },\n '&.Mui-selected:hover': {\n backgroundColor: 'rgba(245 , 245 , 245)', // Prevent background color change on selection hover\n },\n }}\n >\n {item.label}\n </MenuItem>\n ))}\n </Select>\n\n </InputAdornment>\n )\n\n }}\n\n error={Boolean(fieldState.error?.message)}\n helperText={fieldState.error?.message || \"\"}\n onBlur={field.onBlur}\n onChange={(e: any) => {\n field.onChange(e.target.value)\n }}\n />\n )}\n />\n )\n}\nDynamicInputSelect.propTypes = {\n formControl: PropTypes.shape({\n register: PropTypes.func.isRequired,\n setValue: PropTypes.func,\n _formState: PropTypes.object.isRequired\n }).isRequired,\n defaultValue: PropTypes.string,\n name: PropTypes.string.isRequired,\n label: PropTypes.node.isRequired,\n fieldArrayName: PropTypes.string,\n required: PropTypes.bool,\n is_multiline: PropTypes.bool,\n min: PropTypes.number,\n max: PropTypes.number,\n min_length: PropTypes.number,\n max_length: PropTypes.number,\n float_step: PropTypes.string,\n position: PropTypes.number,\n formType: PropTypes.string,\n disabled: PropTypes.bool,\n InputProps: PropTypes.object,\n placeholder: PropTypes.string,\n\n\n}\nexport { DynamicInputSelect };\nexport default DynamicInputSelect;\n","import React, { useState } from 'react';\nimport { Controller, Control, FieldValues } from 'react-hook-form';\nimport PropTypes from 'prop-types';\nimport { Autocomplete } from '@mui/material';\nimport TextField from '../../../text-field/text-field';\nimport Chip from '../../../chip/chip';\n// import { Close } from '@mui/icons-material';\nimport Typography from '../../../typography/typography';\nimport './element.scss';\n\n// Define the type for props\ninterface DynamicTagsInputProps<TFieldValues extends FieldValues> {\n formControl: Control<TFieldValues>;\n name: string;\n fieldArrayName?: string;\n label: React.ReactNode;\n}\n\n// Define the component using generic type TFieldValues\nconst DynamicTagsInput = <TFieldValues extends FieldValues>({\n formControl,\n name,\n fieldArrayName = '',\n label,\n}: DynamicTagsInputProps<TFieldValues>) => {\n // Local state for managing the input value\n const [inputValue, setInputValue] = useState<string>('');\n\n return (\n <Controller\n control={formControl}\n name={`${fieldArrayName}.${name}`}\n render={({ field: { value = '', onChange } }) => {\n const tags = value ? value.split(',').map((tag: string) => tag.trim()) : [];\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Tab') {\n // Get the trimmed input value\n const trimmedInputValue = inputValue.trim();\n \n // Check if input is not empty and not already a tag\n if (trimmedInputValue && !tags.includes(trimmedInputValue)) {\n event.preventDefault(); // Prevent default tab action\n\n // Add new tag\n const newTags = [...tags, trimmedInputValue];\n const newValueString = newTags.join(', ');\n onChange(newValueString);\n setInputValue(''); // Clear the input field\n }\n }\n };\n\n return (\n <Autocomplete\n clearIcon={false}\n options={[]}\n freeSolo\n multiple\n fullWidth\n value={tags}\n onChange={(event: React.ChangeEvent<unknown>, newValue: string[] | null) => {\n const newValueString = newValue?.join(', ') || '';\n onChange(newValueString);\n }}\n renderTags={(value: string[], renderTagProps) =>\n value.map((option, index) => (\n <Chip\n key={index}\n // deleteIcon={<Close fontSize='large' />}\n // variant='outlined'\n type='normal'\n label={\n <Typography color='theme.secondary.1000' type='s4'>\n {option}\n </Typography>\n }\n {...renderTagProps({ index })}\n />\n ))\n }\n renderInput={(params) => (\n <TextField\n label={label}\n type=\"text\"\n {...params}\n value={inputValue}\n onChange={(event:any) => setInputValue(event.target.value)}\n onKeyDown={handleKeyDown}\n />\n )}\n />\n );\n }}\n />\n );\n};\n\n// Define PropTypes for runtime validation (optional)\nDynamicTagsInput.propTypes = {\n formControl: PropTypes.shape({\n register: PropTypes.func.isRequired,\n setValue: PropTypes.func,\n _formState: PropTypes.object.isRequired,\n }).isRequired,\n name: PropTypes.string.isRequired,\n label: PropTypes.node.isRequired,\n fieldArrayName: PropTypes.string,\n};\n\nexport { DynamicTagsInput };\nexport default DynamicTagsInput;\n\n","import Typography from \"../typography/typography\";\nimport logo from \"../../assets/images\";\nimport \"./info-card.scss\";\n\nexport interface InfoCardProps {\n label: string;\n dataPosition?: number;\n dataName?: string;\n value?: string;\n}\n\nconst InfoCard = (props: InfoCardProps) => {\n const { label, dataPosition, dataName, value } = props;\n return (\n <>\n <Typography\n type=\"s5\"\n weight=\"medium\"\n mb={0.5}\n color={\"theme.secondary.800\"}\n data-position={dataPosition}\n data-name={dataName}\n className=\"infoCard\"\n >\n {label}\n <img src={logo.info} />\n </Typography>\n <Typography color={\"theme.secondary.1000\"}>{value ?? \"Info\"}</Typography>\n </>\n );\n};\n\nexport { InfoCard };\nexport default InfoCard;\n","import { Controller } from \"react-hook-form\";\nimport PropTypes from \"prop-types\";\n\nimport \"./element.scss\";\nimport InfoCard from \"../../../info-card/info-card\";\n\nconst DynamicInfo = (props: any) => {\n return (\n <Controller\n control={props.formControl}\n name={`${props.fieldArrayName}.${props.name}`}\n render={({ field }) => (\n <InfoCard\n {...field}\n dataPosition={props.position}\n dataName={`${props.fieldArrayName}.${props.name}`}\n label={props.label}\n value={props.defaultValue || \"Info\"}\n />\n )}\n />\n );\n};\n\nDynamicInfo.propTypes = {\n formControl: PropTypes.shape({\n register: PropTypes.func.isRequired,\n setValue: PropTypes.func,\n }).isRequired,\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n fieldArrayName: PropTypes.string,\n position: PropTypes.number,\n formType: PropTypes.string,\n defaultValue: PropTypes.string,\n typeOfField: PropTypes.string,\n disabled: PropTypes.bool,\n};\n\nexport { DynamicInfo };\nexport default DynamicInfo;\n","import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport PropTypes from \"prop-types\";\n\nimport \"./element.scss\";\nimport UploadMedia from \"../../../upload-media/upload-media\";\nimport Typography from \"../../../typography/typography\";\n\nconst DynamicMedia = React.memo((props: any) => {\n\n return (\n <Controller\n control={props.formControl}\n name={`${props.fieldArrayName}.${props.name}`}\n render={({ field, fieldState: { error } }) => (\n <>\n <UploadMedia\n // {...field}\n dataPosition={props.position}\n dataName={`${props.fieldArrayName}.${props.name}`}\n label={props.label}\n required={props.formType === \"builder\" ? false : props.required}\n type={props.field_type}\n max_size={props?.max_size}\n disabled={props?.disabled}\n onChange={field?.onChange}\n name={props.name}\n value={field?.value || props?.value}\n multiple={Boolean(props?.is_multiple)}\n />\n {error &&\n <Typography color=\"theme.error.600\" type=\"s5\">{error.message}</Typography>\n }\n </>\n )}\n />\n );\n});\n\nDynamicMedia.propTypes = {\n formControl: PropTypes.shape({\n register: PropTypes.func.isRequired,\n setValue: PropTypes.func,\n }).isRequired,\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n fieldArrayName: PropTypes.string,\n required: PropTypes.bool,\n is_multiple: PropTypes.bool,\n position: PropTypes.number,\n formType: PropTypes.string,\n placeholder: PropTypes.string,\n default_value: PropTypes.string,\n type: PropTypes.string,\n field_type: PropTypes.string,\n max_size: PropTypes.number,\n typeOfField: PropTypes.string,\n disabled: PropTypes.bool,\n};\n\nexport { DynamicMedia };\nexport default DynamicMedia;\n","import PropTypes from \"prop-types\";\nimport { Grid, /* Box, */ IconButton, Menu, MenuItem } from \"@mui/material\";\n\nimport \"./element.scss\";\nimport Typography from \"../../../typography/typography\";\nimport images from \"../../../../assets/images\";\nimport React from \"react\";\nimport Button from \"../../../button/button\";\nimport AddIcon from \"@mui/icons-material/Add\";\n\nconst DynamicSectionHOC = (props: any) => {\n const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null);\n\n const handleActionClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n return (\n <Grid\n className={\n props.className ? `formBuilder ${props.className}` : \"formBuilder\"\n }\n >\n <div className=\"formBuilder--Header\">\n <Typography\n type=\"s4\"\n fontWeight={\"medium\"}\n mb={0.5}\n color={\"theme.secondary.800\"}\n sx={{ cursor: \"pointer\", ...(!props.label?.trim() ? { fontStyle: 'italic' } : {}) }}\n onClick={props.onClick}\n data-position={props.position}\n data-name={`${props.fieldArrayName}.${props.name}`}\n >\n {props.label || \"(Unnamed Section)\"}\n </Typography>\n <div>\n <IconButton color=\"inherit\" size=\"small\" onClick={handleActionClick}>\n <img src={images.more} alt=\"more icon\" />\n </IconButton>\n <Menu\n open={Boolean(anchorEl)}\n anchorEl={anchorEl}\n onClose={() => setAnchorEl(null)}\n >\n <MenuItem\n onClick={() => {\n props.handleAccordion();\n setAnchorEl(null);\n }}\n >\n Make this section accordion\n </MenuItem>\n {!props.remove_section && (\n <MenuItem\n sx={{ color: \"#F86060\" }}\n onClick={() => {\n props.removeSection();\n setAnchorEl(null);\n }}\n >\n Remove Section\n </MenuItem>\n )}\n </Menu>\n </div>\n </div>\n <div\n className={`${\n props.activeIndex ? \"formBuilder--Active\" : \"formBuilder--Section\"\n }`}\n >\n {/* <Box sx={{ width: \"100%\" }} className=\"formBuilder--GridLayout\">\n {props.children}\n </Box> */}\n <Grid container sx={{ mb: 2 }}>\n {props.children}\n </Grid>\n {!props.isFormSwitcher ? (\n <Button\n variant=\"outlined\"\n style={{ color: \"#292D32\", marginBottom: \"0.375rem\" }}\n startIcon={<AddIcon />}\n data-position={props.position}\n data-name={`${props.fieldArrayName}.${props.name}`}\n onClick={props.handleAddButton}\n >\n Add\n </Button>\n ) : null}\n </div>\n </Grid>\n );\n};\n\nDynamicSectionHOC.propTypes = {\n index: PropTypes.number.isRequired,\n onClick: PropTypes.func,\n children: PropTypes.node.isRequired,\n label: PropTypes.string,\n position: PropTypes.number,\n fieldArrayName: PropTypes.string,\n className: PropTypes.string,\n removeSection: PropTypes.func.isRequired,\n handleAccordion: PropTypes.func,\n activeIndex: PropTypes.bool,\n handleAddButton: PropTypes.func,\n remove_section: PropTypes.bool,\n isFormSwitcher: PropTypes.bool,\n};\n\nexport { DynamicSectionHOC };\nexport default DynamicSectionHOC;\n","/// <reference types=\"../types/index.d.ts\" />\n\n// (c) 2020-present Andrea Giammarchi\n\nconst {parse: $parse, stringify: $stringify} = JSON;\nconst {keys} = Object;\n\nconst Primitive = String; // it could be Number\nconst primitive = 'string'; // it could be 'number'\n\nconst ignore = {};\nconst object = 'object';\n\nconst noop = (_, value) => value;\n\nconst primitives = value => (\n value instanceof Primitive ? Primitive(value) : value\n);\n\nconst Primitives = (_, value) => (\n typeof value === primitive ? new Primitive(value) : value\n);\n\nconst resolver = (input, lazy, parsed, $) => output => {\n for (let ke = keys(output), {length} = ke, y = 0; y < length; y++) {\n const k = ke[y];\n const value = output[k];\n if (value instanceof Primitive) {\n const tmp = input[+value];\n if (typeof tmp === object && !parsed.has(tmp)) {\n parsed.add(tmp);\n output[k] = ignore;\n lazy.push({ o: output, k, r: tmp });\n }\n else\n output[k] = $.call(output, k, tmp);\n }\n else if (output[k] !== ignore)\n output[k] = $.call(output, k, value);\n }\n return output;\n};\n\nconst set = (known, input, value) => {\n const index = Primitive(input.push(value) - 1);\n known.set(value, index);\n return index;\n};\n\n/**\n * Converts a specialized flatted string into a JS value.\n * @param {string} text\n * @param {(this: any, key: string, value: any) => any} [reviver]\n * @returns {any}\n */\nexport const parse = (text, reviver) => {\n const input = $parse(text, Primitives).map(primitives);\n const $ = reviver || noop;\n\n let value = input[0];\n\n if (typeof value === object && value) {\n const lazy = [];\n const revive = resolver(input, lazy, new Set, $);\n value = revive(value);\n\n let i = 0;\n while (i < lazy.length) {\n // it could be a lazy.shift() but that's costly\n const {o, k, r} = lazy[i++];\n o[k] = $.call(o, k, revive(r));\n }\n }\n\n return $.call({'': value}, '', value);\n};\n\n/**\n * Converts a JS value into a specialized flatted string.\n * @param {any} value\n * @param {((this: any, key: string, value: any) => any) | (string | number)[] | null | undefined} [replacer]\n * @param {string | number | undefined} [space]\n * @returns {string}\n */\nexport const stringify = (value, replacer, space) => {\n const $ = replacer && typeof replacer === object ?\n (k, v) => (k === '' || -1 < replacer.indexOf(k) ? v : void 0) :\n (replacer || noop);\n const known = new Map;\n const input = [];\n const output = [];\n let i = +set(known, input, $.call({'': value}, '', value));\n let firstRun = !i;\n while (i < input.length) {\n firstRun = true;\n output[i] = $stringify(input[i++], replace, space);\n }\n return '[' + output.join(',') + ']';\n function replace(key, value) {\n if (firstRun) {\n firstRun = !firstRun;\n return value;\n }\n const after = $.call(this, key, value);\n switch (typeof after) {\n case object:\n if (after === null) return after;\n case primitive:\n return known.get(after) || set(known, input, after);\n }\n return after;\n }\n};\n\n/**\n * Converts a generic value into a JSON serializable object without losing recursion.\n * @param {any} value\n * @returns {any}\n */\nexport const toJSON = value => $parse(stringify(value));\n\n/**\n * Converts a previously serialized object with recursion into a recursive one.\n * @param {any} value\n * @returns {any}\n */\nexport const fromJSON = value => parse($stringify(value));\n","// import { MRT_ColumnDef, MRT_RowData } from 'material-react-table';\r\nimport { Add } from '@mui/icons-material';\r\nimport Button from '../../../button/button';\r\nimport MaterialTable, { MaterialTableColumnProps } from '../../../material-table/material-table';\r\nimport Typography from '../../../typography/typography';\r\nimport { Box } from '@mui/material';\r\nimport './element.scss';\r\nimport { parse, stringify } from 'flatted';\r\nimport React, { useCallback } from 'react';\r\nimport { useAuth } from '../../../../hooks/useAuth';\r\nimport { formatDate } from '../../../../utils/dateFormat';\r\nimport Chip from '../../../chip/chip';\r\nimport Checkbox from '../../../checkbox/checkbox';\r\nimport { MRT_Row } from 'material-react-table';\r\nimport _ from 'lodash';\r\nimport { formatAmount, getFileName, toFixedWithNumbers } from \"../../../../utils/common\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { formatLabel } from '../../../../utils/format-text';\r\nexport interface ICellChangeParam {\r\n\tvalue: any,\r\n\tdata: any,\r\n\tcol: MaterialTableColumnProps,\r\n\trow: MRT_Row<any>,\r\n\tname: string,\r\n\tuRows: any[]\r\n}\r\n\r\ninterface IDynamicTable {\r\n\tcolumns: any[];\r\n\trows?: any[];\r\n\tposition: number;\r\n\tlabel: string;\r\n\tdisabled?: boolean;\r\n\ttypeOfField?: string;\r\n\tonAddClick?: (name?: string) => void;\r\n\tname?: string;\r\n\tis_button?: boolean;\r\n\tdisableTableAddButton?: boolean;\r\n\totherButtons?: React.ReactNode[];\r\n\tdefaultActionColumnItems?: React.ReactElement[];\r\n\tonTableCellChange: ({ value, data, col, row }: ICellChangeParam) => void;\r\n\tcurrencySymbol?: string;\r\n}\r\n\r\nconst DynamicTable: React.FC<IDynamicTable> = React.memo(({\r\n\tcolumns,\r\n\tposition,\r\n\tlabel,\r\n\trows = [],\r\n\tonAddClick,\r\n\tname,\r\n\tis_button = true,\r\n\tdisableTableAddButton,\r\n\totherButtons,\r\n\tdefaultActionColumnItems,\r\n\tonTableCellChange,\r\n\tcurrencySymbol = '',\r\n\t...rest\r\n\t// disabled\r\n}) => {\r\n\tconst { t } = useTranslation();\r\n\tconst { user } = useAuth();\r\n\tconst cs = currencySymbol || user?.currency_data?.symbol || '';\r\n\tconst currencyFormat = user?.currency_data?.number_format || '';\r\n\tconst symbolPosition = user?.currency_data?.position || 'before';\r\n\tconst takeCurencyOrPercentage = useCallback((type: string, value: any) => {\r\n\t\tswitch (type) {\r\n\t\t\tcase 'Percentage':\r\n\t\t\t\treturn `${value}%`;\r\n\t\t\tcase 'Fixed Amount':\r\n\t\t\t\treturn `${cs}${value}`;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\treturn value;\r\n\t\t}\r\n\t}, [cs]);\r\n\r\n\tconst isCellChangeAFunc = onTableCellChange instanceof Function\r\n\r\n\tconst tableColumns = useCallback(\r\n\t\t(columns: MaterialTableColumnProps[]) => {\r\n\t\t\treturn columns.map((column) => ({\r\n\t\t\t\t...column,\r\n\t\t\t\theader: t(column.header),\r\n\t\t\t\tCell: ({ renderedCellValue, row }: any) => {\r\n\t\t\t\t\tlet v = renderedCellValue;\r\n\t\t\t\t\tif (typeof v === 'number' && v && String(v)?.includes('.')) {\r\n\t\t\t\t\t\treturn v = toFixedWithNumbers(v)\r\n\t\t\t\t\t}\r\n\t\t\t\t\tswitch (column.type) {\r\n\t\t\t\t\t\tcase 'formattedString':\r\n\t\t\t\t\t\t\tv = formatLabel(renderedCellValue) || '-';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 'date':\r\n\t\t\t\t\t\t\tv = formatDate(\r\n\t\t\t\t\t\t\t\trenderedCellValue,\r\n\t\t\t\t\t\t\t\tcolumn.editProperties?.dateFormat || 'DD-MM-YYYY'\r\n\t\t\t\t\t\t\t) || '-';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 'currency':\r\n\t\t\t\t\t\t\tv = renderedCellValue ? `${formatAmount(renderedCellValue, currencyFormat, symbolPosition, cs)}` : '-';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 'stringOrArray': {\r\n\t\t\t\t\t\t\tconst type = row.original?.promotion_map_data?.type;\r\n\t\t\t\t\t\t\tv = Array.isArray(renderedCellValue)\r\n\t\t\t\t\t\t\t\t? renderedCellValue.map((rcv) => (\r\n\t\t\t\t\t\t\t\t\trcv ? <Chip label={takeCurencyOrPercentage(type, rcv)} /> : null\r\n\t\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t\t\t: takeCurencyOrPercentage(type, renderedCellValue);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcase \"checkbox\": {\r\n\t\t\t\t\t\t\tv = <Checkbox\r\n\t\t\t\t\t\t\t\tchecked={Boolean(renderedCellValue)}\r\n\t\t\t\t\t\t\t\tonClick={isCellChangeAFunc\r\n\t\t\t\t\t\t\t\t\t? (e) => onTableCellChange({\r\n\t\t\t\t\t\t\t\t\t\tvalue: e.target.checked,\r\n\t\t\t\t\t\t\t\t\t\tdata: row.original,\r\n\t\t\t\t\t\t\t\t\t\tcol: column,\r\n\t\t\t\t\t\t\t\t\t\trow: row,\r\n\t\t\t\t\t\t\t\t\t\tname: name,\r\n\t\t\t\t\t\t\t\t\t\tuRows: rows\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t: undefined\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t/>;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcase \"array\": {\r\n\t\t\t\t\t\t\tv = Array.isArray(renderedCellValue) && renderedCellValue.length ?\r\n\t\t\t\t\t\t\t\t<Box sx={{ display: 'flex', gap: 0.5, alignItems: 'center', flexWrap: 'wrap' }}>\r\n\t\t\t\t\t\t\t\t\t{renderedCellValue.map(r => (<Chip type='normal' label={_.get(r, column?.valueGet, '')} active />))}\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t: '-';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcase \"file\": {\r\n\t\t\t\t\t\t\tv = getFileName(renderedCellValue) || '-';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn v;\r\n\t\t\t\t}\r\n\t\t\t}));\r\n\t\t},\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t\t[cs, takeCurencyOrPercentage, currencySymbol, rows]\r\n\t);\r\n\treturn (\r\n\t\t<Box data-position={position}>\r\n\t\t\t<Typography\r\n\t\t\t\ttype='s5'\r\n\t\t\t\tweight='medium'\r\n\t\t\t\tcolor='theme.secondary.800'\r\n\t\t\t\tdata-position={position}\r\n\t\t\t\tsx={{ mb: 0.5 }}>\r\n\t\t\t\t{t(label)}\r\n\t\t\t</Typography>\r\n\t\t\t<Box /* sx={disabled ? { pointerEvents: 'none' } : {}} */>\r\n\t\t\t\t<MaterialTable\r\n\t\t\t\t\tcolumnOrder={['mrt-row-select']}\r\n\t\t\t\t\t// rows={parse(stringify(rows))}\r\n\t\t\t\t\trows={rows}\r\n\t\t\t\t\tcolumns={tableColumns(parse(stringify(columns)))}\r\n\t\t\t\t\ttotalPages={20}\r\n\t\t\t\t\tpaginationModel={{ pageNo: 1, limit: 10 }}\r\n\t\t\t\t\tenableEditing={false}\r\n\t\t\t\t\tenableColumnDragging={false}\r\n\t\t\t\t\tenableBottomToolbar={false}\r\n\t\t\t\t\tdefaultActionColumnItems={defaultActionColumnItems}\r\n\t\t\t\t\t{...rest}\r\n\t\t\t\t/>\r\n\t\t\t\t{is_button && !disableTableAddButton && (\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\twidth: '100%',\r\n\t\t\t\t\t\t\tjustifyContent: 'space-between',\r\n\t\t\t\t\t\t\tmt: 1\r\n\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant='outlined'\r\n\t\t\t\t\t\t\tonClick={() => onAddClick?.(name)}\r\n\t\t\t\t\t\t\tstartIcon={<Add />}\r\n\t\t\t\t\t\t\tclassName='table--AddButton'>\r\n\t\t\t\t\t\t\tAdd\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t{Boolean(otherButtons?.length) && otherButtons}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t)}\r\n\t\t\t</Box>\r\n\t\t</Box>\r\n\t);\r\n});\r\n\r\nexport default DynamicTable;\r\n","import { styled } from '@mui/material/styles';\r\nimport { AdapterDayjs } from \"@mui/x-date-pickers/AdapterDayjs\";\r\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\r\nimport { TimePicker as Time } from \"@mui/x-date-pickers/TimePicker\";\r\nimport Typography from \"../typography/typography\";\r\nimport \"./time-picker.scss\";\r\nimport { memo } from \"react\";\r\n\r\nexport interface TimePickerProps {\r\n label: string;\r\n disabled?: boolean;\r\n error?: boolean;\r\n name?: string;\r\n value?: string | number | Date;\r\n helperText?: string;\r\n dataPosition?: number;\r\n dataName?: string;\r\n is24hrFormat?: boolean;\r\n placeholder?: string;\r\n required?: boolean;\r\n}\r\n\r\nconst StyledTimePicker = styled(Time)(({ theme: { palette } }) => ({\r\n \"& .MuiOutlinedInput-root\": {\r\n padding: \"0\",\r\n color: palette.theme?.secondary[800],\r\n \"& fieldset\": {\r\n borderColor: palette.theme?.secondary[400],\r\n },\r\n \"&:hover fieldset\": {\r\n borderColor: palette.theme?.secondary[500],\r\n },\r\n \"&.Mui-focused fieldset\": {\r\n borderWidth: \"0.0625rem\",\r\n borderStyle: \"solid\",\r\n borderColor: palette.theme?.primary[700],\r\n },\r\n \"&.Mui-error fieldset\": {\r\n borderColor: palette.theme?.error[600],\r\n },\r\n \"&.Mui-disabled\": {\r\n background: palette.theme?.secondary[200],\r\n color: palette.theme?.secondary[800],\r\n },\r\n \"& .MuiInputBase-input::placeholder\": {\r\n color: palette.theme?.secondary[800],\r\n opacity: 1,\r\n },\r\n },\r\n \"& .MuiFormHelperText-root\": {\r\n marginLeft: 0,\r\n color: palette.theme?.secondary[800],\r\n \"&.Mui-error\": {\r\n color: palette.theme?.error[600],\r\n },\r\n },\r\n \"& .MuiIconButton-root\": {\r\n marginRight: 0,\r\n },\r\n \"& .MuiPickersCalendarHeader-labelContainer\": {\r\n fontWeight: 600,\r\n },\r\n}));\r\n\r\nconst TimePicker = memo((props: TimePickerProps) => {\r\n const {\r\n label,\r\n disabled,\r\n error,\r\n helperText,\r\n dataName,\r\n dataPosition,\r\n is24hrFormat = false,\r\n placeholder,\r\n required = false,\r\n ...rest\r\n } = props;\r\n return (\r\n <div>\r\n <LocalizationProvider dateAdapter={AdapterDayjs}>\r\n {label && (\r\n <Typography\r\n type=\"s4\"\r\n fontWeight={\"medium\"}\r\n mb={0.5}\r\n color={error ? \"theme.error.600\" : \"theme.secondary.800\"}\r\n data-position={dataPosition}\r\n data-name={dataName}\r\n >\r\n {label} {required && <span className=\"requiredStar\">*</span>}\r\n </Typography>\r\n )}\r\n <StyledTimePicker\r\n {...rest}\r\n disabled={disabled}\r\n slotProps={{\r\n textField: {\r\n helperText: helperText,\r\n error: error,\r\n placeholder: placeholder || \"HH:mm A\",\r\n // required: required,\r\n },\r\n }}\r\n format={is24hrFormat ? \"HH:MM\" : \"hh:mm a\"}\r\n className=\"timePicker\"\r\n />\r\n </LocalizationProvider>\r\n </div>\r\n );\r\n});\r\n\r\nexport { TimePicker };\r\nexport default TimePicker;\r\n","import { Controller } from 'react-hook-form';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport './element.scss';\r\nimport TimePicker from '../../../time-picker/time-picker';\r\nimport React from 'react';\r\n\r\nconst DynamicTime = React.memo((props: any) => {\r\n\r\n\treturn (\r\n\t\t<Controller\r\n\t\t\tcontrol={props.formControl}\r\n\t\t\tname={`${props.fieldArrayName}.${props.name}`}\r\n\t\t\trender={({ field, fieldState }) => (\r\n\t\t\t\t<TimePicker\r\n\t\t\t\t\t{...field}\r\n\t\t\t\t\tonChange={(e) => {\r\n\t\t\t\t\t\tfield.onChange(e);\r\n\t\t\t\t\t\tprops?.onChange(e);\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tdataPosition={props.position}\r\n\t\t\t\t\tdataName={`${props.fieldArrayName}.${props.name}`}\r\n\t\t\t\t\tlabel={props.label}\r\n\t\t\t\t\tplaceholder={props.placeholder}\r\n\t\t\t\t\trequired={props.formType === 'builder' ? false : props.required}\r\n\t\t\t\t\tis24hrFormat={props.options === '24hr'}\r\n\t\t\t\t\tdisabled={props.disabled}\r\n\t\t\t\t\thelperText={fieldState.error?.message}\r\n\t\t\t\t\terror={Boolean(fieldState.error)}\r\n\t\t\t\t\t{...(props?.rest || {})}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\t\t/>\r\n\t);\r\n});\r\n\r\n\r\nDynamicTime.propTypes = {\r\n\tformControl: PropTypes.shape({\r\n\t\tregister: PropTypes.func.isRequired,\r\n\t\tsetValue: PropTypes.func\r\n\t}).isRequired,\r\n\tname: PropTypes.string.isRequired,\r\n\tlabel: PropTypes.string.isRequired,\r\n\tfieldArrayName: PropTypes.string,\r\n\trequired: PropTypes.bool,\r\n\tposition: PropTypes.number,\r\n\tformType: PropTypes.string,\r\n\toption: PropTypes.string,\r\n\tplaceholder: PropTypes.string,\r\n\ttypeOfField: PropTypes.string,\r\n\tdisabled: PropTypes.bool,\r\n\tonChange: PropTypes.func,\r\n\trest: PropTypes.object,\r\n};\r\n\r\nexport { DynamicTime };\r\nexport default DynamicTime;\r\n","import { styled } from \"@mui/material/styles\";\nimport Switch, { SwitchProps } from \"@mui/material/Switch\";\nimport Stack from \"@mui/material/Stack\";\nimport Typography, { ITypography } from \"../typography/typography\";\nimport { useLanguage } from \"../../hooks/useLangauge\";\nimport { memo } from \"react\";\n\nexport interface ISwitchProps extends SwitchProps {\n label?: string;\n labelPosition?: \"start\" | \"end\";\n typographyProps?: ITypography;\n}\n\nconst CustomisedSwitch = styled((props: ISwitchProps) => (\n <Switch focusVisibleClassName=\".Mui-focusVisible\" disableRipple {...props} />\n))(({ theme, size, checked }) => ({\n width: 24,\n height: 16,\n padding: 0,\n \"& .MuiSwitch-switchBase\": {\n padding: 0,\n margin: size === \"medium\" ? 2 : 1,\n transitionDuration: \"300ms\",\n \"&.Mui-checked\": {\n transform: size === \"medium\" ? \"translateX(16px)\" : \"translateX(8px)\",\n color: \"#fff\",\n \"& + .MuiSwitch-track\": {\n backgroundColor: theme.palette.mode === \"dark\" ? \"#2ECA45\" : \"#65C466\",\n opacity: 1,\n border: 0,\n },\n \"&.Mui-disabled + .MuiSwitch-track\": {\n opacity: 0.5,\n },\n },\n \"&.Mui-focusVisible .MuiSwitch-thumb\": {\n color: \"#33cf4d\",\n border: \"6px solid #fff\",\n },\n \"&.Mui-disabled .MuiSwitch-thumb\": {\n color:\n theme.palette.mode === \"light\"\n ? theme.palette.grey[100]\n : theme.palette.grey[600],\n },\n \"&.Mui-disabled + .MuiSwitch-track\": {\n opacity: theme.palette.mode === \"light\" ? 0.7 : 0.3,\n },\n },\n \"& .MuiSwitch-thumb\": {\n boxSizing: \"border-box\",\n width: 14,\n height: 14,\n border: checked ? 0 : `1px solid ${theme.palette.theme?.secondary[300]}`,\n },\n \"& .MuiSwitch-track\": {\n borderRadius: 26 / 2,\n backgroundColor: theme.palette.theme?.secondary[200],\n opacity: 1,\n transition: theme.transitions.create([\"background-color\"], {\n duration: 500,\n }),\n },\n ...(size === \"medium\" && {\n width: 42,\n height: 26,\n \"& .MuiSwitch-thumb\": {\n boxSizing: \"border-box\",\n width: 22,\n height: 22,\n border: checked ? 0 : `1px solid ${theme.palette.theme?.secondary[300]}`,\n },\n }),\n}));\n\nconst ToggleSwitch: React.FC<ISwitchProps> = memo(({\n label,\n labelPosition = \"end\",\n typographyProps,\n ...rest\n}) => {\n const {isRtl}=useLanguage();\n return (\n <Stack direction=\"row\" spacing={isRtl ? '' : 0.5} alignItems=\"center\">\n {labelPosition === \"start\" && (\n <Typography type=\"s3\" color=\"theme.secondary.1000\" {...typographyProps}>\n {label}\n </Typography>\n )}\n <CustomisedSwitch sx={{ m: 1 }} {...rest} />\n {labelPosition === \"end\" && (\n <Typography type=\"s3\" color=\"theme.secondary.1000\" {...typographyProps}>\n {label}\n </Typography>\n )}\n </Stack>\n );\n});\n\nexport default ToggleSwitch;\n","import { Control, Controller } from \"react-hook-form\";\nimport Typography from \"../../../typography/typography\";\nimport ToggleSwitch, {\n ISwitchProps,\n} from \"../../../toggle-switch/toggle-switch\";\nimport { memo } from \"react\";\n\ninterface IDynamicToggleButton {\n formControl: Control<any>;\n fieldArrayName: string;\n name: string;\n label: string;\n position: number;\n disabled?: boolean;\n titlePosition?: \"start\" | \"end\";\n typeOfField?: string;\n title: string;\n toggleSwitchProps?: ISwitchProps;\n}\n\nconst DynamicToggleButton: React.FC<IDynamicToggleButton> = memo(({\n formControl,\n fieldArrayName,\n name,\n label,\n position,\n disabled,\n titlePosition,\n title,\n toggleSwitchProps,\n}) => {\n\treturn (\n\t\t<Controller\n\t\t\tcontrol={formControl}\n\t\t\tname={`${fieldArrayName}.${name}`}\n\t\t\trender={({ field }) => (\n\t\t\t\t<>\n\t\t\t\t\t<Typography\n\t\t\t\t\t\ttype='s5'\n\t\t\t\t\t\tcolor='theme.secondary.800'\n\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\tdata-position={position}\n\t\t\t\t\t\tsx={{ mb: 0.5 }}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</Typography>\n\t\t\t\t\t<ToggleSwitch\n\t\t\t\t\t\t{...toggleSwitchProps}\n\t\t\t\t\t\tname={name}\n\t\t\t\t\t\tchecked={field.value}\n\t\t\t\t\t\tonChange={field.onChange}\n\t\t\t\t\t\tlabel={title}\n\t\t\t\t\t\tdisabled={Boolean(disabled)}\n\t\t\t\t\t\tlabelPosition={titlePosition}\t\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t)}\n\t\t/>\n\t);\n});\n\nexport default DynamicToggleButton;\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable unused-imports/no-unused-vars */\nimport React, { ReactNode, useEffect, useState } from \"react\";\nimport { Box, IconButton } from \"@mui/material\";\nimport Tab from \"@mui/material/Tab\";\nimport TabContext from \"@mui/lab/TabContext\";\nimport TabList from \"@mui/lab/TabList\";\nimport TabPanel from \"@mui/lab/TabPanel\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\nimport \"./tabs.scss\";\nimport TextField from \"../text-field/text-field\";\nimport { useTranslation } from \"react-i18next\";\nimport Typography from \"../typography/typography\";\n\ninterface TabItem {\n tab_order: number;\n title: string;\n content?: string | ReactNode;\n data?: any;\n remove_tab?: boolean;\n}\nexport interface TabProps {\n tabs: TabItem[];\n activeValue?: number;\n setActiveValue?: React.Dispatch<React.SetStateAction<number | undefined>>;\n onEditTabTitle?: (tabId: number, newTitle: string) => void;\n handleTabChange?: () => void;\n handleRemoveTab?: (tabId: number) => void;\n isFormTabValid?: boolean ;\n isTabViewOnly?: boolean;\n activeTabs?: any[] ;\n setActiveTabs?: React.Dispatch<React.SetStateAction<number | undefined>>;\n containerProps?: any;\n}\n\nexport const TabBar = (props: TabProps) => {\n const { t } = useTranslation();\n const {\n tabs,\n onEditTabTitle,\n activeValue,\n setActiveValue,\n handleTabChange,\n handleRemoveTab,\n // isFormTabValid , \n isTabViewOnly,\n activeTabs, \n containerProps\n } = props; \n \n const [value, setValue] = useState<number>(activeValue || 0);\n const [editableTabId, setEditableTabId] = useState<number | null>(null);\n useEffect(()=>{\n activeValue && setValue(activeValue);\n\t} , [activeValue])\n\n const handleChange = (_event: React.SyntheticEvent, newValue: number) => {\n setValue(newValue);\n setActiveValue && setActiveValue(newValue);\n handleTabChange && handleTabChange();\n };\n\n const handleTabDoubleClick = (tabId: number) => {\n setEditableTabId(tabId);\n };\n\n const handleEditTabTitle = (\n event: React.ChangeEvent<HTMLInputElement>,\n tabId: number,\n ) => {\n onEditTabTitle && onEditTabTitle(tabId, event.target.value);\n };\n\n // useEffect(() => {\n // if (setActiveValue && Boolean(tabs?.length)) setActiveValue(value);\n // // eslint-disable-next-line\n // }, [tabs]);\n\n return (\n <Box mb={2} {...containerProps}>\n <TabContext value={activeValue ?? value }>\n <Box>\n <TabList className=\"account-payble-tabs-wrap\" onChange={handleChange} variant=\"scrollable\" scrollButtons=\"auto\" aria-label=\"scrollable tabs\" sx={{ overflowX: 'auto', maxWidth: '100%' }}>\n {tabs.map((tab: TabItem, index: any) => (\n <Tab\n className=\"account-payble-tab-items\"\n key={tab.tab_order}\n \n label={\n <Box display='flex' alignItems='center'>\n {\n onEditTabTitle && editableTabId === tab.tab_order ? (\n <TextField\n value={tab.title}\n autoFocus\n onBlur={() => setEditableTabId(null)}\n onChange={(e: any) =>\n handleEditTabTitle(e, tab.tab_order)\n }\n />\n ) : handleRemoveTab ? (\n <div className=\"Tabs--Title\">\n <Typography color='theme.secondary.1000' type='s3'>{t(tab.title)}</Typography>\n {!tab.remove_tab && (\n <IconButton size=\"small\" onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleRemoveTab(tab.tab_order);\n }}>\n <CloseIcon style={{ fontSize: \"15px\", cursor: \"pointer\" }}/>\n </IconButton>\n )}\n </div>\n ) : (\n <Typography color='theme.secondary.1000' type='s3'>{t(tab.title)}</Typography>\n )\n }\n </Box>\n }\n wrapped\n onDoubleClick={() => handleTabDoubleClick(tab.tab_order)}\n />\n ))}\n </TabList>\n </Box>\n {tabs.map(\n (tab: TabItem, index: number) =>\n tab.content && (\n <TabPanel value={index.toString()} key={tab.tab_order}>\n {value === index && tab.content}\n </TabPanel>\n ),\n )}\n </TabContext>\n </Box>\n );\n}\n\nexport default TabBar;","import { AlertProps, Alert as MUIAlert, styled } from \"@mui/material\";\r\n\r\nconst StyledAlert = styled(MUIAlert)(({ theme: { palette } }) => ({\r\n \"&.MuiAlert-root\": {\r\n fontSize: \"0.75rem\",\r\n fontWeight: \"500\",\r\n letterSpacing: \"-0.24px\",\r\n padding: \"0rem 0.75rem\",\r\n },\r\n \"&.MuiAlert-standardInfo\": {\r\n color: palette.theme?.secondary[900],\r\n backgroundColor: palette.theme?.secondary[200],\r\n },\r\n \"&.MuiAlert-standardSuccess\": {\r\n color: palette.theme?.primary[900],\r\n backgroundColor: palette.theme?.primary[100],\r\n },\r\n \"&.MuiAlert-standardError\": {\r\n color: palette.theme?.tertiary6[900],\r\n backgroundColor: palette.theme?.tertiary6[100],\r\n \"& .MuiAlert-icon\" : {\r\n color: palette.theme?.tertiary6[900],\r\n }\r\n },\r\n\r\n \".MuiAlert-action\": {\r\n svg: {\r\n fontSize: \"1rem\",\r\n },\r\n },\r\n}));\r\n\r\nconst Alert = (props: AlertProps) => {\r\n const { children, icon = false, ...rest } = props;\r\n\r\n return (\r\n <StyledAlert icon={icon} {...rest}>\r\n {children}\r\n </StyledAlert>\r\n );\r\n};\r\n\r\nexport { Alert };\r\nexport default Alert;\r\n","//eslint-disable @typescript-eslint/no-explicit-any\r\nimport React, { useState, useRef, KeyboardEvent, memo } from 'react';\r\nimport { Controller } from 'react-hook-form';\r\nimport { \r\n Chip, \r\n Box, \r\n FormControl, \r\n FormHelperText,\r\n InputAdornment,\r\n styled\r\n} from '@mui/material';\r\nimport Typography from '../typography/typography';\r\n\r\n// interface ValidationRule {\r\n// type: 'email' | 'url' | 'phone' | 'custom';\r\n// pattern?: RegExp;\r\n// message: string;\r\n// validator?: (value: string) => boolean;\r\n// }\r\n\r\ninterface ChipGeneratorProps {\r\n name: string;\r\n control: any;\r\n label?: string;\r\n placeholder?: string;\r\n required?: boolean;\r\n disabled?: boolean;\r\n validation?: any[];\r\n maxChips?: number;\r\n allowDuplicates?: boolean;\r\n fieldArrayName?: string;\r\n endIcon?: React.ReactNode;\r\n helperText?: string;\r\n error?: boolean;\r\n onChipAdd?: (chip: string) => void;\r\n onChipRemove?: (chip: string, index: number) => void;\r\n customChipProps?: any;\r\n textFieldProps?: any;\r\n allowMultipleAdd?: boolean;\r\n delimiters?: string[];\r\n // New props for data type handling\r\n dataType?: 'array' | 'string';\r\n separator?: string;\r\n}\r\n\r\n// Styled components for inline chips\r\nconst ChipContainer = styled(Box)(({ theme }) => ({\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n alignItems: 'center',\r\n gap: theme.spacing(0.5),\r\n minHeight: '1.4375em',\r\n border: `1px solid #D3D3D4`,\r\n borderRadius: '0.25rem',\r\n cursor: 'text',\r\n fontSize: '0.875rem',\r\n// '&:hover': {\r\n// borderColor: theme.palette.text.primary,\r\n// },\r\n '&.focused': {\r\n borderColor:'#54CC96',\r\n borderWidth: '1px',\r\n },\r\n '&.error': {\r\n borderColor: theme.palette.error.main,\r\n },\r\n '&.disabled': {\r\n backgroundColor: theme.palette.action.disabledBackground,\r\n cursor: 'default',\r\n },\r\n paddingLeft: 3 \r\n}));\r\n\r\nconst InlineInput = styled('input')(({ theme }) => ({\r\n border: 'none',\r\n outline: 'none',\r\n backgroundColor: 'transparent',\r\n flexGrow: 1,\r\n minWidth: '120px',\r\n padding: '0.5rem',\r\n fontSize: '0.875rem',\r\n fontFamily: theme.typography.fontFamily,\r\n '&::placeholder': {\r\n color: theme.palette.text.secondary,\r\n opacity: 1,\r\n },\r\n '&:disabled': {\r\n cursor: 'default',\r\n }\r\n}));\r\n\r\nconst InlineChip = styled(Chip)(({theme: { palette }}) => ({\r\n height: '24px',\r\n fontSize: '0.875rem',\r\n borderColor:' #54CC96',\r\n backgroundColor: palette.theme.primary[50],\r\n color:'#2EB273',\r\n margin: '1px',\r\n '& .MuiChip-deleteIcon': {\r\n fontSize: '16px',\r\n color:'#2EB273',\r\n '&:hover': {\r\n color: '#2EB273',\r\n },\r\n },\r\n}));\r\n\r\nconst ChipGenerator: React.FC<ChipGeneratorProps> = memo(({\r\n name,\r\n control,\r\n label,\r\n placeholder = \"Type and press space to add\",\r\n required = false,\r\n disabled = false,\r\n validation,\r\n maxChips,\r\n allowDuplicates = false,\r\n fieldArrayName,\r\n endIcon,\r\n helperText,\r\n error: externalError,\r\n onChipAdd,\r\n onChipRemove,\r\n customChipProps = {},\r\n allowMultipleAdd = true,\r\n delimiters = [',', ';', '\\n', '\\t'],\r\n dataType = 'string',\r\n separator = ',',\r\n}) => {\r\n const [inputValue, setInputValue] = useState('');\r\n const [validationError, setValidationError] = useState('');\r\n const [focused, setFocused] = useState(false);\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n\r\n const validateChip = (value: string,validation: any): { isValid: boolean; error: string } => {\r\n if (!validation) return { isValid: true, error: '' };\r\n\r\n const trimmedValue = value.trim();\r\n if (!trimmedValue) return { isValid: false, error: 'Empty values are not allowed' };\r\n\r\n switch (validation.type) {\r\n case 'email': {\r\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n const isValidEmail = emailRegex.test(trimmedValue);\r\n return {\r\n isValid: isValidEmail,\r\n error: isValidEmail ? '' : validation.message || 'Please enter a valid email address'\r\n };\r\n }\r\n\r\n // case 'url': {\r\n // const urlRegex = /^(https?:\\/\\/)?([\\da-z.-]+)\\.([a-z.]{2,6})([\\/\\w .-]*)*\\/?$/;\r\n // const isValidUrl = urlRegex.test(trimmedValue);\r\n // return {\r\n // isValid: isValidUrl,\r\n // error: isValidUrl ? '' : validation.message || 'Please enter a valid URL'\r\n // };\r\n // }\r\n\r\n case 'phone': {\r\n const phoneRegex = /^[+]?[1-9][\\d]{0,15}$/;\r\n const isValidPhone = phoneRegex.test(trimmedValue.replace(/[\\s()-]/g, ''));\r\n return {\r\n isValid: isValidPhone,\r\n error: isValidPhone ? '' : validation.message || 'Please enter a valid phone number'\r\n };\r\n }\r\n\r\n case 'custom': {\r\n if (validation.pattern) {\r\n const isValid = validation.pattern.test(trimmedValue);\r\n return {\r\n isValid,\r\n error: isValid ? '' : validation.message\r\n };\r\n }\r\n if (validation.validator) {\r\n const isValid = validation.validator(trimmedValue);\r\n return {\r\n isValid,\r\n error: isValid ? '' : validation.message\r\n };\r\n }\r\n return { isValid: true, error: '' };\r\n }\r\n\r\n default:\r\n return { isValid: true, error: '' };\r\n }\r\n };\r\n\r\n // Convert between string and array formats\r\n const stringToArray = (str: string): string[] => {\r\n if (!str || typeof str !== 'string') return [];\r\n return str.split(separator).map(item => item.trim()).filter(Boolean);\r\n };\r\n\r\n const arrayToString = (arr: string[]): string => {\r\n return arr.join(separator + ' ');\r\n };\r\n\r\n // Parse input value by delimiters\r\n const parseMultipleValues = (inputStr: string): string[] => {\r\n if (!allowMultipleAdd) {\r\n return [inputStr.trim()].filter(Boolean);\r\n }\r\n\r\n const delimiterPattern = delimiters.map(d => \r\n d.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\r\n ).join('|');\r\n \r\n const regex = new RegExp(`[${delimiterPattern}]`);\r\n \r\n return inputStr\r\n .split(regex)\r\n .map(val => val.trim())\r\n .filter(Boolean);\r\n };\r\n\r\n const addChips = (inputStr: string, currentChips: string[]): { \r\n newChips: string[]; \r\n errors: string[]; \r\n addedCount: number;\r\n } => {\r\n const valuesToAdd = parseMultipleValues(inputStr);\r\n if (valuesToAdd.length === 0) {\r\n return { newChips: currentChips, errors: [], addedCount: 0 };\r\n }\r\n\r\n const newChips = [...currentChips];\r\n const errors: string[] = [];\r\n let addedCount = 0;\r\n\r\n for (const value of valuesToAdd) {\r\n if (maxChips && newChips.length >= maxChips) {\r\n errors.push(`Maximum ${maxChips} items allowed`);\r\n break;\r\n }\r\n \r\n if (validation?.length > 0) {\r\n const errorMessages = validation\r\n .map(val => validateChip(value, val))\r\n .filter(result => !result.isValid)\r\n .map(result => result.error);\r\n\r\n if (errorMessages.length > 0) {\r\n errors.push(`\"${value}\": ${errorMessages.join(', ')}`);\r\n continue;\r\n }\r\n }\r\n \r\n\r\n if (!allowDuplicates && newChips.includes(value)) {\r\n errors.push(`\"${value}\": Duplicate values are not allowed`);\r\n continue;\r\n }\r\n\r\n newChips.push(value);\r\n addedCount++;\r\n onChipAdd?.(value);\r\n }\r\n\r\n return { newChips, errors, addedCount };\r\n };\r\n\r\n const removeChip = (chipToRemove: string, index: number, currentChips: string[]) => {\r\n const newChips = currentChips.filter((_, i) => i !== index);\r\n onChipRemove?.(chipToRemove, index);\r\n setValidationError('');\r\n return newChips;\r\n };\r\n\r\n const processInput = (\r\n inputStr: string,\r\n onChange: (value: string[] | string) => void,\r\n currentValue: string[] | string\r\n ) => {\r\n const currentChips = Array.isArray(currentValue) ? currentValue : stringToArray(currentValue);\r\n const { newChips, errors } = addChips(inputStr, currentChips);\r\n \r\n if (errors.length > 0) {\r\n setValidationError(errors.join('; '));\r\n } else {\r\n setValidationError('');\r\n }\r\n \r\n if (newChips.length !== currentChips.length) {\r\n const outputValue = dataType === 'string' ? arrayToString(newChips) : newChips;\r\n onChange(outputValue);\r\n setInputValue('');\r\n }\r\n };\r\n\r\n const handleKeyPress = (\r\n event: KeyboardEvent<HTMLInputElement>,\r\n onChange: (value: string[] | string) => void,\r\n currentValue: string[] | string\r\n ) => {\r\n if (event.key === ' ' || event.key === 'Enter') {\r\n event.preventDefault();\r\n if (inputValue.trim()) {\r\n processInput(inputValue, onChange, currentValue);\r\n }\r\n } else if (event.key === 'Backspace' && !inputValue) {\r\n const currentChips = Array.isArray(currentValue) ? currentValue : stringToArray(currentValue);\r\n if (currentChips.length > 0) {\r\n const lastIndex = currentChips.length - 1;\r\n const newChips = removeChip(currentChips[lastIndex], lastIndex, currentChips);\r\n const outputValue = dataType === 'string' ? arrayToString(newChips) : newChips;\r\n onChange(outputValue);\r\n }\r\n }\r\n };\r\n\r\n const handleBlur = (\r\n onChange: (value: string[] | string) => void,\r\n currentValue: string[] | string\r\n ) => {\r\n setFocused(false);\r\n if (inputValue.trim()) {\r\n processInput(inputValue, onChange, currentValue);\r\n }\r\n };\r\n\r\n const handlePaste = (\r\n event: React.ClipboardEvent<HTMLInputElement>,\r\n onChange: (value: string[] | string) => void,\r\n currentValue: string[] | string\r\n ) => {\r\n if (allowMultipleAdd) {\r\n event.preventDefault();\r\n const pastedText = event.clipboardData.getData('text');\r\n const combinedInput = inputValue + pastedText;\r\n processInput(combinedInput, onChange, currentValue);\r\n }\r\n };\r\n\r\n const handleContainerClick = () => {\r\n if (!disabled && inputRef.current) {\r\n inputRef.current.focus();\r\n }\r\n };\r\n\r\n const fieldName = fieldArrayName ? `${fieldArrayName}.${name}` : name;\r\n\r\n return (\r\n <Controller\r\n name={fieldName}\r\n control={control}\r\n defaultValue={dataType === 'string' ? '' : []}\r\n render={({ field: { onChange, value, ...field }, fieldState: { error } }) => {\r\n const currentChips = Array.isArray(value) ? value : stringToArray(value || '');\r\n const hasError = !!error || !!validationError || externalError;\r\n\r\n return (\r\n <FormControl fullWidth error={hasError}>\r\n {label && (\r\n <Typography\r\n type=\"s5\"\r\n weight={\"medium\"}\r\n mb={0.5}\r\n color={error ? \"theme.error.600\" : \"theme.secondary.800\"}\r\n >\r\n {label} {required && <span className=\"requiredStar\">*</span>}\r\n </Typography>\r\n )}\r\n\r\n <ChipContainer\r\n ref={containerRef}\r\n className={`${focused ? 'focused' : ''} ${hasError ? 'error' : ''} ${disabled ? 'disabled' : ''}`}\r\n onClick={handleContainerClick}\r\n >\r\n {currentChips.map((chip: string, index: number) => (\r\n <InlineChip\r\n key={`${chip}-${index}`}\r\n label={chip}\r\n onDelete={\r\n disabled\r\n ? undefined\r\n : (event) => {\r\n event.stopPropagation();\r\n const newChips = removeChip(chip, index, currentChips);\r\n const outputValue = dataType === 'string' ? arrayToString(newChips) : newChips;\r\n onChange(outputValue);\r\n }\r\n }\r\n size=\"small\"\r\n // color=\"primary\"\r\n // variant=\"outlined\"\r\n {...customChipProps}\r\n />\r\n ))}\r\n \r\n <InlineInput\r\n {...field}\r\n ref={inputRef}\r\n value={inputValue}\r\n onChange={(e) => setInputValue(e.target.value)}\r\n onKeyDown={(e) => handleKeyPress(e, onChange, value)}\r\n onFocus={() => setFocused(true)}\r\n onBlur={() => handleBlur(onChange, value)}\r\n onPaste={(e) => handlePaste(e, onChange, value)}\r\n placeholder={currentChips.length === 0 ? placeholder : ''}\r\n disabled={disabled}\r\n style={{ \r\n width: inputValue ? `${Math.max(inputValue.length * 8, 120)}px` : '120px',\r\n }}\r\n />\r\n \r\n {endIcon && (\r\n <InputAdornment position=\"end\" sx={{ ml: 1 }}>\r\n {endIcon}\r\n </InputAdornment>\r\n )}\r\n </ChipContainer>\r\n\r\n {(helperText || error?.message || validationError) && (\r\n <FormHelperText>\r\n {error?.message || validationError || helperText}\r\n </FormHelperText>\r\n )}\r\n\r\n {maxChips && (\r\n <FormHelperText>\r\n {currentChips.length} / {maxChips} items\r\n </FormHelperText>\r\n )}\r\n\r\n \r\n </FormControl>\r\n );\r\n }}\r\n />\r\n );\r\n});\r\n\r\nexport default ChipGenerator;","import {\r\n\tUseFormSetValue,\r\n\tFieldValues,\r\n\tuseFormContext,\r\n\tUseFormWatch,\r\n\tUseFormGetFieldState,\r\n\tControl\r\n} from 'react-hook-form';\r\nimport { useLocationFilter } from '../hooks/useLocationFilter';\r\nimport DynamicSearchSelect from './form-control/form-builder/form-builder-element/dynamic-select';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { memo, useEffect, useMemo, useRef } from 'react';\r\nimport _ from 'lodash';\r\n\r\n\r\nexport interface LocationSearchSelectProps<\r\n\tT extends FieldValues = FieldValues\r\n> {\r\n\tselectedCompany?: string[] | string | number | null | undefined;\r\n\tcontrol?: Control<T>;\r\n\tsetValue?: UseFormSetValue<T>;\r\n\tfieldArrayName: string;\r\n\tlocationFieldName?: string;\r\n\tlabel?: string;\r\n\tplaceholder?: string;\r\n\tresetValue?: any;\r\n\tfilterKey?: string;\r\n\t[key: string]: any;\r\n}\r\n\r\nexport interface LocationFilterType {\r\n\t[key: string]: string[] | string | number;\r\n}\r\n\r\nexport const LocationSearchSelect = memo(\r\n\t<T extends FieldValues = FieldValues>({\r\n\t\tselectedCompany,\r\n\t\tcontrol: propControl,\r\n\t\tsetValue: propSetValue,\r\n\t\tfieldArrayName,\r\n\t\tlocationFieldName = 'location_id',\r\n\t\tlabel,\r\n\t\tplaceholder,\r\n\t\tresetValue = undefined,\r\n\t\tfilterKey = '&company_id.in',\r\n\t\tfilterField = 'company_id',\r\n\t\t...dynamicSearchSelectProps\r\n\t}: LocationSearchSelectProps<T>): JSX.Element => {\r\n\t\tconst formContext = useFormContext();\r\n\t\tconst {\r\n\t\t\tcontrol: contextControl,\r\n\t\t\twatch: contextWatch,\r\n\t\t\tsetValue: contextSetValue,\r\n\t\t\tgetFieldState: contextGetFieldState\r\n\t\t} = formContext || {};\r\n\r\n\t\tconst controlToUse = propControl || contextControl;\r\n\t\tconst setValueToUse = propSetValue || contextSetValue;\r\n\t\tconst watchToUse: UseFormWatch<T> = contextWatch || (() => undefined);\r\n\t\tconst getFieldStateToUse: UseFormGetFieldState<T> =\r\n\t\t\tcontextGetFieldState || (() => ({}));\r\n\r\n\t\tconst filterFieldValue = watchToUse(`${fieldArrayName}.${filterField}`);\r\n\t\tconst isDirty = getFieldStateToUse(\r\n\t\t\t`${fieldArrayName}.${filterField}`\r\n\t\t)?.isDirty;\r\n\r\n\t\tconst prevFilterFieldValue = useRef<any>();\r\n\r\n\t\tconst { t } = useTranslation();\r\n\r\n\t\tconst isValueChanged = useMemo(() => {\r\n\t\t\treturn filterFieldValue && prevFilterFieldValue.current\r\n\t\t\t\t? !_.isEqual(prevFilterFieldValue.current, filterFieldValue)\r\n\t\t\t\t: false;\r\n\t\t}, [filterFieldValue]);\r\n\r\n\r\n\t\tuseEffect(() => {\r\n\t\t\tif (filterFieldValue) {\r\n\t\t\t\tprevFilterFieldValue.current = filterFieldValue;\r\n\t\t\t}\r\n\t\t}, [filterFieldValue]);\r\n\r\n\t\tconst locationFilter: LocationFilterType = useLocationFilter({\r\n\t\t\tselectedCompany: filterFieldValue || selectedCompany,\r\n\t\t\tsetValue: setValueToUse,\r\n\t\t\tfieldArrayName,\r\n\t\t\tlocationFieldName,\r\n\t\t\tresetValue,\r\n\t\t\tfilterKey,\r\n\t\t\tisDirty: isValueChanged || isDirty\r\n\t\t});\r\n\r\n\t\t// Now safely do the conditional render\r\n\t\tif (!controlToUse) {\r\n\t\t\tconsole.warn('LocationSearchSelect: No form control available.');\r\n\t\t\treturn <div>Location Search Select</div>;\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t<DynamicSearchSelect\r\n\t\t\t\tlabel={t(label) || t('crm.salesOrder.fields.location_label')}\r\n\t\t\t\tapiType='location'\r\n\t\t\t\taddType='location'\r\n\t\t\t\tenable_footer={true}\r\n\t\t\t\tname={locationFieldName}\r\n\t\t\t\tplaceholder={\r\n\t\t\t\t\tt(placeholder) || t('crm.salesOrder.fields.location_placeholder')\r\n\t\t\t\t}\r\n\t\t\t\tfieldArrayName={fieldArrayName}\r\n\t\t\t\tformControl={controlToUse}\r\n\t\t\t\tcustomeFilter={locationFilter}\r\n\t\t\t\t{...dynamicSearchSelectProps}\r\n\t\t\t/>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nLocationSearchSelect.defaultProps = {\r\n\tlocationFieldName: 'location_id',\r\n\tresetValue: undefined,\r\n\tfilterKey: '&company_id.in'\r\n};\r\n\r\nexport default LocationSearchSelect","// import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport { RadioGroup } from \"@mui/material\";\nimport Typography from \"../../typography/typography\";\nimport { memo } from \"react\";\n\nconst FormSwitcher = memo(({\n children,\n isFormSwitcher,\n control,\n fieldArrayName,\n formSwitcherName,\n label,\n resetForm,\n}: any) => {\n if (isFormSwitcher) {\n return (\n <Controller\n control={control}\n name={`${fieldArrayName}.${formSwitcherName}`}\n render={({ field }) => (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"24px\",\n }}\n >\n {label ? (\n <Typography\n type=\"s5\"\n style={{ fontWeight: 500 }}\n color={\"theme.secondary.900\"}\n >\n {label}\n </Typography>\n ) : null}\n <RadioGroup\n value={field.value}\n onChange={(e) => {\n resetForm(e.target.value)\n field.onChange(e.target.value)\n }}\n row={true}\n >\n {children}\n </RadioGroup>\n </div>\n )}\n />\n );\n }\n return null;\n});\n\nexport { FormSwitcher };\nexport default FormSwitcher;\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { memo, useMemo, useCallback } from 'react';\r\nimport { Grid, Divider, FormControlLabel, Radio } from '@mui/material';\r\nimport DynamicInput from '../form-builder/form-builder-element/text';\r\nimport DynamicDate from '../form-builder/form-builder-element/date';\r\nimport DynamicTime from '../form-builder/form-builder-element/time';\r\nimport DynamicPhone from '../form-builder/form-builder-element/phone';\r\nimport DynamicSearchSelect from '../form-builder/form-builder-element/dynamic-select';\r\nimport DynamicMedia from '../form-builder/form-builder-element/media';\r\nimport DynamicInfo from '../form-builder/form-builder-element/info';\r\nimport DynamicToggleButton from '../form-builder/form-builder-element/toggle-button';\r\nimport DynamicCheckBox from '../form-builder/form-builder-element/checkbox';\r\nimport DynamicTable from '../form-builder/form-builder-element/table';\r\nimport DynamicRadioButton from '../form-builder/form-builder-element/radio-button';\r\nimport DynamicTagsInput from '../form-builder/form-builder-element/dynamic-tags-input';\r\nimport DynamicCurrency from '../form-builder/form-builder-element/dynamic-currency-input';\r\nimport DynamicInputSelect from '../form-builder/form-builder-element/dynamic-input-select';\r\nimport ChipGenerator from '../../chip-generator/chip-generator';\r\nimport { LocationSearchSelect } from '../../location-select';\r\nimport FormSwitcher from './form-switcher';\r\nimport Typography from '../../typography/typography';\r\nimport Accordion from '../../accordion/accordion';\r\n\r\n// Types for better type safety\r\ninterface Field {\r\n name?: string;\r\n label: string;\r\n field_type: string;\r\n is_fullwidth?: boolean;\r\n custom_width?: number;\r\n is_hidden?: boolean;\r\n is_required?: boolean;\r\n disabled?: boolean;\r\n placeholder?: string;\r\n value?: any;\r\n default_value?: any;\r\n title?: string;\r\n title_position?: string;\r\n table_columns?: any[];\r\n table_rows?: any[];\r\n component?: React.ReactNode;\r\n field_properties?: {\r\n apiType?: string;\r\n customeFilter?: any;\r\n attributes?: any;\r\n disabledIds?: any[];\r\n sortOrder?: string;\r\n maxChips?: number;\r\n allowDuplicates?: boolean;\r\n };\r\n validation?: any;\r\n filterField?: string;\r\n}\r\n\r\ninterface Section {\r\n label?: string;\r\n is_accordion?: boolean;\r\n disabled?: boolean;\r\n form_switcher_label?: string;\r\n}\r\n\r\ninterface FormSectionProps {\r\n section: Section;\r\n index: number;\r\n members?: Field[];\r\n switchForms?: any[];\r\n isFormSwitcher: boolean;\r\n control: any;\r\n fieldArrayName: string;\r\n formSwitcherName: string;\r\n displayAvtar?: boolean;\r\n isButton?: boolean;\r\n currencyOption?: any;\r\n values: any;\r\n onBlur?: (e: any, fieldName?: string) => void;\r\n setValue: (name: string, value: any) => void;\r\n onSelectFooterClick?: (field: Field) => void;\r\n getSelectedData?: (row: any, key: any) => void;\r\n setCurrencyOptions: (options: any) => void;\r\n refreshOptions: any;\r\n handleFieldCleanUp: (forms: any[]) => void;\r\n handleSetCountryCodeField: (country: any, field: Field, fieldArrayName: string, values: any) => void;\r\n handleTableAddClick: (field: Field) => void;\r\n onTableCellChange?: (data: any) => void;\r\n // setDetailsData: (data: any) => void;\r\n t: (key: string) => string;\r\n images: any;\r\n}\r\n\r\n// Memoized field component to prevent unnecessary re-renders\r\nconst MemoizedField = memo(({\r\n field,\r\n fieldName,\r\n sectionLabel,\r\n index,\r\n ...props\r\n}: {\r\n field: Field;\r\n fieldName: string;\r\n sectionLabel?: string;\r\n index: number;\r\n [key: string]: any;\r\n}) => {\r\n const gridSize = useMemo(() =>\r\n field.is_fullwidth ? 12 : (field.custom_width ?? 6),\r\n [field.is_fullwidth, field.custom_width]\r\n );\r\n\r\n const fieldKey = useMemo(() =>\r\n `${sectionLabel}-${fieldName}-${index}`,\r\n [sectionLabel, fieldName, index]\r\n );\r\n\r\n const commonProps = useMemo(() => ({\r\n ...field,\r\n key: fieldKey,\r\n name: fieldName,\r\n position: index,\r\n formControl: props.control,\r\n fieldArrayName: props.fieldArrayName,\r\n required: field.is_required,\r\n label: props.t(field.label),\r\n placeholder: props.t(field.placeholder),\r\n defaultValue: field.value || field.default_value,\r\n disabled: field.disabled\r\n }), [field, fieldName, index, fieldKey, props.control, props.fieldArrayName, props.t]);\r\n\r\n const handleBlur = useCallback((e: any) => {\r\n if (props.onBlur && typeof props.onBlur === 'function') {\r\n props.onBlur(e, fieldName);\r\n }\r\n }, [props.onBlur, fieldName]);\r\n\r\n const endIcon = useMemo(() => {\r\n const iconMap: Record<string, string> = {\r\n email: props.images.sms,\r\n url: props.images.url,\r\n currency: props.images.dollar,\r\n geoLocation: props.images.location\r\n };\r\n\r\n const iconSrc = iconMap[field.field_type];\r\n return iconSrc ? <img src={iconSrc} alt={field.field_type} /> : null;\r\n }, [field.field_type, props.images]);\r\n\r\n const relationLabel = useMemo(() => (\r\n field.field_type === \"relation\" ? (\r\n <span className=\"formSection--Relation\">\r\n {props.t(field.label)}\r\n <img src={props.images.relation} alt=\"relation\" />\r\n </span>\r\n ) : props.t(field.label)\r\n ), [field.field_type, field.label, props.t, props.images.relation]);\r\n\r\n // Render field based on type\r\n const renderField = () => {\r\n switch (field.field_type) {\r\n case \"text\":\r\n case \"email\":\r\n case \"url\":\r\n case \"currency\":\r\n case \"number\":\r\n case \"geoLocation\":\r\n case \"relation\":\r\n return (\r\n <DynamicInput\r\n {...commonProps}\r\n key={commonProps.key}\r\n label={relationLabel}\r\n onBlur={handleBlur}\r\n type={field.field_type}\r\n endIcon={endIcon}\r\n disabled={field.disabled || field.field_type === \"relation\"}\r\n />\r\n );\r\n\r\n case \"date\":\r\n return <DynamicDate {...commonProps} key={commonProps.key} />;\r\n\r\n case \"time\":\r\n return <DynamicTime {...commonProps} key={commonProps.key} />;\r\n\r\n case \"phone\":\r\n return (\r\n <DynamicPhone\r\n {...commonProps}\r\n key={commonProps.key}\r\n setCountryCodeField={(country: any) =>\r\n props.handleSetCountryCodeField(country, field, props.fieldArrayName, props.values)\r\n }\r\n />\r\n );\r\n\r\n case \"select\":\r\n return (\r\n <DynamicSearchSelect\r\n {...commonProps}\r\n key={commonProps.key}\r\n apiType={field.field_properties?.apiType}\r\n customeFilter={field.field_properties?.customeFilter}\r\n attributes={field.field_properties?.attributes}\r\n disabledIds={field.field_properties?.disabledIds}\r\n onChipRemove={() => props.setValue(`${props.fieldArrayName}.${fieldName}`, [])}\r\n {\r\n ...(!field?.addType || !field?.field_properties?.addType\r\n ? { onFooterClick: () => props.onSelectFooterClick?.(field) }\r\n : {})\r\n }\r\n handleOptions={props.setCurrencyOptions}\r\n getSelectedData={props.getSelectedData}\r\n refresh={props.refreshOptions}\r\n sortOrder={field.field_properties?.sortOrder}\r\n showCancelButton={field.field_properties?.showCancelButton}\r\n addType={field?.addType || field?.field_properties?.addType}\r\n modalComponentProps={field?.field_properties?.modalComponentProps}\r\n />\r\n );\r\n\r\n case \"file\":\r\n case \"image\":\r\n return <DynamicMedia {...commonProps} key={commonProps.key} />;\r\n\r\n case \"info\":\r\n return <DynamicInfo {...commonProps} key={commonProps.key} />;\r\n\r\n case \"toggleButton\":\r\n return (\r\n <DynamicToggleButton\r\n {...commonProps}\r\n key={commonProps.key}\r\n titlePosition={field.title_position}\r\n title={props.t(field.title)}\r\n />\r\n );\r\n\r\n case \"checkbox\":\r\n return (\r\n <DynamicCheckBox\r\n {...commonProps}\r\n key={commonProps.key}\r\n titlePosition={field.title_position}\r\n title={props.t(field.title)}\r\n />\r\n );\r\n\r\n case \"table\":\r\n return (\r\n <DynamicTable\r\n {...commonProps}\r\n key={commonProps.key}\r\n columns={field.table_columns}\r\n rows={field.table_rows}\r\n onAddClick={() => props.handleTableAddClick(field)}\r\n disableTableAddButton={Boolean(field.disableTableAddButton)}\r\n is_button={props.isButton}\r\n onTableCellChange={props.onTableCellChange}\r\n />\r\n );\r\n\r\n case \"radioButton\":\r\n return (\r\n <DynamicRadioButton\r\n {...commonProps}\r\n key={commonProps.key}\r\n titlePosition={field.title_position}\r\n title={props.t(field.title)}\r\n />\r\n );\r\n\r\n case \"customComponent\":\r\n return field.component;\r\n\r\n case \"tagsInput\":\r\n return (\r\n <DynamicTagsInput\r\n {...commonProps}\r\n key={commonProps.key}\r\n label={relationLabel}\r\n type={field.field_type}\r\n endIcon={endIcon}\r\n />\r\n );\r\n\r\n case \"currency_with_amount\":\r\n return (\r\n <DynamicCurrency\r\n {...commonProps}\r\n key={commonProps.key}\r\n currencyType={props.currencyOption}\r\n />\r\n );\r\n\r\n case \"select_with_input\":\r\n return (\r\n <DynamicInputSelect\r\n {...commonProps}\r\n currencyType={props.currencyOption}\r\n />\r\n );\r\n\r\n case \"chipInput\":\r\n return (\r\n <ChipGenerator\r\n {...commonProps}\r\n key={commonProps.key}\r\n maxChips={field.field_properties?.maxChips}\r\n allowDuplicates={field.field_properties?.allowDuplicates}\r\n validation={field.validation}\r\n endIcon={endIcon}\r\n onChipAdd={(chip: any) => console.log('Chip added:', chip)}\r\n onChipRemove={(chip: any, index: number) => console.log('Chip removed:', chip, 'at index:', index)}\r\n />\r\n );\r\n\r\n case \"location_select\":\r\n return (\r\n <LocationSearchSelect\r\n fieldArrayName={props.fieldArrayName}\r\n filterField={field.filterField}\r\n getSelectedData={(row: any[]) => props.getSelectedData(row)}\r\n locationFieldName={field.name}\r\n addType=\"location\"\r\n enable_footer={true}\r\n />\r\n );\r\n\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n // For table fields, use full width\r\n if (field.field_type === \"table\" || field.field_type === \"customComponent\") {\r\n return (\r\n <Grid item xs={12}>\r\n {renderField()}\r\n </Grid>\r\n );\r\n }\r\n\r\n return (\r\n <Grid item xs={gridSize}>\r\n {renderField()}\r\n </Grid>\r\n );\r\n});\r\n\r\nMemoizedField.displayName = 'MemoizedField';\r\n\r\n// Memoized FormSwitcher component\r\nconst MemoizedFormSwitcher = memo(({\r\n section,\r\n switchForms,\r\n isFormSwitcher,\r\n control,\r\n fieldArrayName,\r\n formSwitcherName,\r\n handleFieldCleanUp,\r\n t\r\n}: {\r\n section: Section;\r\n switchForms?: any[];\r\n isFormSwitcher: boolean;\r\n control: any;\r\n fieldArrayName: string;\r\n formSwitcherName: string;\r\n handleFieldCleanUp: (forms: any[]) => void;\r\n t: (key: string) => string;\r\n}) => {\r\n const resetForm = useCallback(() => {\r\n handleFieldCleanUp(switchForms || []);\r\n }, [handleFieldCleanUp, switchForms]);\r\n\r\n if (!isFormSwitcher || !switchForms?.length) return null;\r\n\r\n return (\r\n <FormSwitcher\r\n {...section}\r\n isFormSwitcher={isFormSwitcher}\r\n control={control}\r\n fieldArrayName={fieldArrayName}\r\n formSwitcherName={formSwitcherName}\r\n label={t(section.form_switcher_label || '')}\r\n resetForm={resetForm}\r\n >\r\n {switchForms.map((forms: any) => (\r\n <FormControlLabel\r\n key={forms.id}\r\n value={forms.value || forms.name}\r\n control={<Radio />}\r\n slotProps={{ typography: { variant: \"body2\" } }}\r\n label={t(forms.name)}\r\n disabled={Boolean(section.disabled)}\r\n />\r\n ))}\r\n </FormSwitcher>\r\n );\r\n});\r\n\r\nMemoizedFormSwitcher.displayName = 'MemoizedFormSwitcher';\r\n\r\n// Main component\r\nconst FormSection = memo<FormSectionProps>(({\r\n section,\r\n index,\r\n members,\r\n switchForms,\r\n isFormSwitcher,\r\n control,\r\n fieldArrayName,\r\n formSwitcherName,\r\n displayAvtar,\r\n isButton,\r\n currencyOption,\r\n values,\r\n onBlur,\r\n setValue,\r\n onSelectFooterClick,\r\n getSelectedData,\r\n setCurrencyOptions,\r\n refreshOptions,\r\n handleFieldCleanUp,\r\n handleSetCountryCodeField,\r\n handleTableAddClick,\r\n onTableCellChange,\r\n setDetailsData,\r\n t,\r\n images\r\n}) => {\r\n // Memoize visible members to prevent recalculation\r\n const visibleMembers = useMemo(() =>\r\n members?.filter(f => !f.is_hidden) || [],\r\n [members]\r\n );\r\n\r\n // Memoize field names to prevent recalculation\r\n const fieldsWithNames = useMemo(() =>\r\n visibleMembers.map(field => ({\r\n ...field,\r\n fieldName: field.name || field.label.toLowerCase().split(\" \").join(\"_\")\r\n })),\r\n [visibleMembers]\r\n );\r\n\r\n // Memoize section header\r\n const sectionHeader = useMemo(() => {\r\n if (!section.label) return null;\r\n\r\n return (\r\n <div style={{ minHeight: \"16px\" }}>\r\n {index !== 0 && <Divider className='formParser--Section--SectionDivider' />}\r\n <Typography\r\n type=\"s3\"\r\n weight=\"medium\"\r\n mb={2}\r\n mt={4}\r\n color=\"theme.secondary.1000\"\r\n className='formParser--Section--SectionTitle'\r\n >\r\n {t(section.label)}\r\n </Typography>\r\n </div>\r\n );\r\n }, [section.label, index, t]);\r\n\r\n // Avatar component\r\n const avatarDisplay = useMemo(() =>\r\n displayAvtar ? <div className='avtarDisplay'>ERP</div> : null,\r\n [displayAvtar]\r\n );\r\n\r\n // Common props for field rendering\r\n const fieldProps = useMemo(() => ({\r\n control,\r\n fieldArrayName,\r\n isButton,\r\n currencyOption,\r\n values,\r\n onBlur,\r\n setValue,\r\n onSelectFooterClick,\r\n getSelectedData,\r\n setCurrencyOptions,\r\n refreshOptions,\r\n handleSetCountryCodeField,\r\n handleTableAddClick,\r\n onTableCellChange,\r\n setDetailsData,\r\n t,\r\n images\r\n }), [\r\n control, fieldArrayName, isButton, currencyOption, values,\r\n onBlur, setValue, onSelectFooterClick, getSelectedData,\r\n setCurrencyOptions, refreshOptions, handleSetCountryCodeField,\r\n handleTableAddClick, onTableCellChange, setDetailsData, t, images\r\n ]);\r\n\r\n if (section.is_accordion) {\r\n return (\r\n <section key={index} className='formParser--Section'>\r\n <div style={{ marginTop: '20px' }}>\r\n <Accordion title={t(section.label || '')}>\r\n <div className=\"formParser--Grid formParser--Accordion\">\r\n <MemoizedFormSwitcher\r\n section={section}\r\n switchForms={switchForms}\r\n isFormSwitcher={isFormSwitcher}\r\n control={control}\r\n fieldArrayName={fieldArrayName}\r\n formSwitcherName={formSwitcherName}\r\n handleFieldCleanUp={handleFieldCleanUp}\r\n t={t}\r\n />\r\n {fieldsWithNames.map((field, fieldIndex) => (\r\n <MemoizedField\r\n key={`${section.label}-${field.fieldName}-${fieldIndex}`}\r\n field={field}\r\n fieldName={field.fieldName}\r\n sectionLabel={section.label}\r\n index={fieldIndex}\r\n {...fieldProps}\r\n />\r\n ))}\r\n </div>\r\n </Accordion>\r\n </div>\r\n </section>\r\n );\r\n }\r\n\r\n return (\r\n <section key={index} className='formParser--Section'>\r\n {sectionHeader}\r\n\r\n <MemoizedFormSwitcher\r\n section={section}\r\n switchForms={switchForms}\r\n isFormSwitcher={isFormSwitcher}\r\n control={control}\r\n fieldArrayName={fieldArrayName}\r\n formSwitcherName={formSwitcherName}\r\n handleFieldCleanUp={handleFieldCleanUp}\r\n t={t}\r\n />\r\n\r\n <Grid container spacing={2}>\r\n {avatarDisplay}\r\n {fieldsWithNames.map((field, fieldIndex) => (\r\n <MemoizedField\r\n key={`${section.label}-${field.fieldName}-${fieldIndex}`}\r\n field={field}\r\n fieldName={field.fieldName}\r\n sectionLabel={section.label}\r\n index={fieldIndex}\r\n {...fieldProps}\r\n />\r\n ))}\r\n </Grid>\r\n </section>\r\n );\r\n});\r\n\r\nFormSection.displayName = 'FormSection';\r\n\r\nexport { FormSection };\r\nexport default FormSection;","import { FormProvider, useForm, useWatch } from \"react-hook-form\";\r\n// import { useLocation } from \"react-router-dom\";\r\nimport { Box } from \"@mui/material\";\r\n\r\n// import FullScreenLayout from \"../../../layout/fullScreen/fullScreen\";\r\n\r\nimport { useState, useEffect, useCallback } from \"react\";\r\nimport images from \"../../../assets/images\";\r\nimport \"./form-parser.scss\";\r\nimport TabBar from \"../../tabs/tabs\";\r\nimport formBuilderDeConversion from \"../../../utils/form-builder-deconversion\";\r\nimport { yupResolver } from \"@hookform/resolvers/yup\";\r\nimport * as yup from \"yup\";\r\nimport dayjs from \"dayjs\";\r\nimport { SECTION_TYPES } from '../../../utils/constant';\r\nimport { CountryData } from 'react-phone-input-2';\r\nimport Alert from '../../alert/alert';\r\nimport _ from \"lodash\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport FormSection from \"./form-section\";\r\nconst validationReducer = (validations: any, validation: any, field: any, translationFn: any) => {\r\n switch (validation.type) {\r\n case \"required\":\r\n return (field.field_properties?.is_multiselect ? validations.required(translationFn(validation.msg_en)).min(1, translationFn(validation.msg_en)) : validation.value\r\n ? validations.required(translationFn(validation.msg_en)).test('not-empty', translationFn(validation.msg_en), value => typeof value === 'string' ? value && value?.trim()?.length > 0 : true) : validations.nullable());\r\n case \"min_length\":\r\n return validations.min(validation.value, translationFn(validation.msg_en));\r\n case \"max_length\":\r\n return validations.max(validation.value, translationFn(validation.msg_en));\r\n case \"min_val\":\r\n return validations.min(validation.value, translationFn(validation.msg_en));\r\n case \"max_val\":\r\n return validations.max(validation.value, translationFn(validation.msg_en));\r\n case \"postive_number\":\r\n return validations.test('is-positive-number', translationFn(validation.msg_en), (value) => value >= 0)\r\n case 'email':\r\n return validations.email(validation.msg_en);\r\n case \"no_special_char\":\r\n return validations.test(\r\n \"no-special-char\",\r\n translationFn(validation.msg_en),\r\n value =>\r\n typeof value === \"string\"\r\n ? /^[^.\\-\\W_]+$/u.test(value) // allow letters/digits only\r\n : true\r\n );\r\n case \"when\":\r\n return validations.when(validation.relation, {\r\n is: (val: any) => val === validation.values,\r\n then: () => validation?.thenValidations?.reduce(\r\n (validations: any, validation: any) => validationReducer(validations, validation, field, translationFn),\r\n validations\r\n ) || validations,\r\n otherwise: () => validation?.otherWiseValidations?.reduce(\r\n (validations: any, validation: any) => validationReducer(validations, validation, field, translationFn),\r\n validations\r\n ) || validations,\r\n });\r\n // Add more cases for other validation types as needed\r\n default:\r\n return validations;\r\n }\r\n}\r\n\r\nconst FormParser = ({\r\n data,\r\n defaultValues,\r\n handleFormSubmit,\r\n fieldArrayName,\r\n mode,\r\n displayAvtar = false,\r\n onTableAddClick,\r\n handleFormValues,\r\n getFormMethods,\r\n setFields,\r\n onSelectFooterClick,\r\n setActiveTabValue,\r\n activeTab = 0,\r\n recieveTabDataLenght,\r\n recieveIsValidForm,\r\n activeTabs,\r\n onTableCellChange,\r\n containerStyles = undefined,\r\n isButton = true,\r\n getSelectedData,\r\n refreshOptions = false,\r\n onBlur,\r\n}: any) => {\r\n\r\n const { t } = useTranslation();\r\n\r\n function convertToNestedObject(dotNotationString: string, field: any, existingObject: any = {}) {\r\n const keys = dotNotationString.split('.');\r\n let currentLevel = existingObject;\r\n\r\n keys.forEach((key, index) => {\r\n if (index === keys.length - 1) {\r\n if (!currentLevel[key]) {\r\n const fieldValidations = field.validation.reduce(\r\n (validations: any, validation: any) => {\r\n switch (validation.type) {\r\n case \"required\":\r\n return validation.value\r\n ? validations.required(t(validation.msg_en)).test('not-empty', t(validation.msg_en), value => typeof value === 'string' ? value && value?.trim()?.length > 0 : true)\r\n : (field.field_properties?.is_multiselect ? validations.min(1, t(validation.msg_en)) : validations.nullable());\r\n case \"min_length\":\r\n return validations.min(validation.value, t(validation.msg_en));\r\n case \"max_length\":\r\n return validations.max(validation.value, t(validation.msg_en));\r\n case \"min_val\":\r\n return validations.min(validation.value, t(validation.msg_en));\r\n case \"max_val\":\r\n return validations.max(validation.value, t(validation.msg_en));\r\n // Add more cases for other validation types as needed\r\n default:\r\n return validations;\r\n }\r\n },\r\n getValidationType(field)\r\n );\r\n currentLevel[key] = fieldValidations;\r\n } else if (typeof currentLevel[key] !== 'object' || Array.isArray(currentLevel[key])) {\r\n throw new Error(`Conflict: The key \"${key}\" already exists and is not an object.`);\r\n }\r\n } else {\r\n if (!currentLevel[key]) {\r\n currentLevel[key] = {};\r\n } else if (typeof currentLevel[key] !== 'object' || Array.isArray(currentLevel[key])) {\r\n throw new Error(`Conflict: The key \"${key}\" already exists and is not an object.`);\r\n }\r\n currentLevel = currentLevel[key];\r\n\r\n }\r\n });\r\n\r\n return existingObject;\r\n }\r\n\r\n const getValidationType = (field: any) => {\r\n switch (field.field_type) {\r\n case 'select':\r\n return field.field_properties?.is_multiselect\r\n ? yup.array()\r\n : yup.string()\r\n\r\n case 'number':\r\n case 'currency':\r\n return yup.number().transform((value, originalValue) => (originalValue === '' ? undefined : value)).typeError('Please enter valid number').nullable()\r\n case 'currency_with_amount':\r\n return yup.number()\r\n case 'url':\r\n return yup.string().matches(/^(https?:\\/\\/)?((([a-zA-Z0-9_-]+\\.)+[a-zA-Z]{2,})|localhost)(:\\d{2,5})?(\\/[a-zA-Z0-9#_-]+\\/?)*(\\?[a-zA-Z0-9&=_-]+)?(#\\S+)?$/, { excludeEmptyString: true, message: \"Please enter valid URL.\" })\r\n\r\n default:\r\n return yup.string()\r\n }\r\n }\r\n\r\n const convertNestedFieldSchemaObject = (nestedFields: any) => {\r\n const schema: any = {};\r\n\r\n for (const key in nestedFields) {\r\n if (typeof nestedFields[key] === 'object' && !Object.hasOwn(nestedFields[key], 'tests')) {\r\n schema[key] = yup.object().shape(convertNestedFieldSchemaObject(nestedFields[key]));\r\n } else {\r\n schema[key] = nestedFields[key]\r\n }\r\n }\r\n return schema;\r\n }\r\n\r\n\r\n const generateValidationSchema = (data: any[]) => {\r\n const yupSchemaObject: any = {};\r\n let nestedFielvalidations: any = {},\r\n nestedYupSchemaObj: any = {};\r\n\r\n data &&\r\n data?.forEach((field: any) => {\r\n let fieldValidations: any;\r\n if (field.validation && field.validation.length > 0) {\r\n if (field.name?.includes(\".\")) {\r\n nestedFielvalidations = convertToNestedObject(field.name, field, nestedFielvalidations);\r\n } else {\r\n fieldValidations = field.validation.reduce((validations: any, validation: any) => validationReducer(validations, validation, field, t),\r\n getValidationType(field)\r\n );\r\n yupSchemaObject[field.name] = fieldValidations;\r\n }\r\n\r\n nestedYupSchemaObj = convertNestedFieldSchemaObject(nestedFielvalidations)\r\n }\r\n\r\n });\r\n\r\n return yup.object().shape({\r\n [fieldArrayName]: yup.object().shape({ ...yupSchemaObject, ...nestedYupSchemaObj }),\r\n });\r\n };\r\n\r\n const {\r\n control,\r\n handleSubmit,\r\n formState: { errors },\r\n setValue,\r\n reset,\r\n getValues,\r\n watch,\r\n resetField,\r\n unregister,\r\n trigger,\r\n getFieldState,\r\n ...rest\r\n } = useForm({\r\n ...(defaultValues && typeof defaultValues === 'object' ? { defaultValues } : {}),\r\n resolver: yupResolver(generateValidationSchema(data)),\r\n mode: \"all\",\r\n });\r\n\r\n const watchedValues = useWatch({\r\n control,\r\n name: fieldArrayName,\r\n });\r\n\r\n // Local States\r\n const [schema, setSchema] = useState<[]>([]);\r\n const [tabsData, setTabsData] = useState<any[]>([]);\r\n const [errorAlert, setErrorAlert] = useState<boolean>(false);\r\n const [currencyOption, setCurrencyOptions] = useState<string>('');\r\n const [isTabFormValid, setTabFormValid] = useState<boolean>(false);\r\n const [validateRequiredFields, setValidRequiredFields] = useState<any[]>([]);\r\n\r\n // Local Functions\r\n const handleTableAddClick = (tableName?: string) => {\r\n onTableAddClick?.(tableName)\r\n }\r\n\r\n const getSectionData = useCallback((section: any) => {\r\n const sectionMembers = section?.members?.map((ele: any) => ele) || []\r\n const values = getValues(fieldArrayName)\r\n const isFormSwitcher = section.section_type === SECTION_TYPES.FORM_SWITCH_SECTION\r\n const formSwitcherName =\r\n section?.form_switcher_name ||\r\n section?.form_switcher_label?.toLowerCase().split(\" \").join(\"_\");\r\n const switchForms = section?.switcher_forms?.map((form: any) => ({\r\n ...form,\r\n formMembers: sectionMembers.filter(\r\n (member: any) => member.section_form_id === form.id,\r\n )\r\n }));\r\n const selectedSectionForm =\r\n values?.[formSwitcherName] ?\r\n switchForms.find((ele: any) =>\r\n ele.name === values?.[formSwitcherName]\r\n ) : {};\r\n\r\n // When form switcher is active, include:\r\n // 1. Common fields (fields without section_form_id or is_form_switcher_section)\r\n // 2. Form-specific fields (fields with section_form_id matching the selected form)\r\n let members;\r\n if (isFormSwitcher) {\r\n const commonFields = sectionMembers.filter(\r\n (member: any) => !member.section_form_id && !member.is_form_switcher_section\r\n );\r\n const formSpecificFields = selectedSectionForm?.formMembers || [];\r\n members = [...commonFields, ...formSpecificFields];\r\n } else {\r\n members = section?.members;\r\n }\r\n\r\n return {\r\n isFormSwitcher,\r\n formSwitcherName,\r\n switchForms,\r\n selectedSectionForm,\r\n members,\r\n values\r\n }\r\n }, [fieldArrayName, getValues])\r\n\r\n const handleSetCountryCodeField = useCallback((country: CountryData, field: any, fieldArrayName: any, values: any) => {\r\n const oldVal = values?.[fieldArrayName]?.[field?.country_code_field_name]\r\n const newVal = `+${country.dialCode}`\r\n if (\r\n field?.is_country_code_separate &&\r\n field?.country_code_field_name &&\r\n oldVal !== newVal\r\n ) {\r\n setValue(\r\n `${fieldArrayName}.${field?.country_code_field_name}` as never,\r\n newVal as never\r\n )\r\n }\r\n }, [setValue])\r\n\r\n const handleFieldCleanUp = useCallback((switchForms: any) => {\r\n switchForms.forEach((form: any) => {\r\n form?.formMembers.forEach((member: any) => {\r\n const memberName = member?.name || member.label.toLowerCase().split(\" \").join(\"_\")\r\n const v = _.get(defaultValues, `${fieldArrayName}.${memberName}`, null)\r\n const newData = data.map((ele: any) => {\r\n if (member?.section_form_id === ele?.section_form_id) {\r\n delete ele.value\r\n }\r\n return ({\r\n ...ele,\r\n ...(v ? { value: v } : {}),\r\n })\r\n })\r\n if (!v) {\r\n resetField(`${fieldArrayName}.${memberName}` as never)\r\n unregister(`${fieldArrayName}.${memberName}` as never)\r\n }\r\n setFields?.(newData)\r\n })\r\n\r\n })\r\n }, [data, defaultValues, fieldArrayName, resetField, setFields, unregister])\r\n\r\n const createNestedObjectFromDot = useCallback((dotNotationString: string, field: any, existingObject: any = {}) => {\r\n const keys = dotNotationString.split('.');\r\n let currentLevel = existingObject;\r\n\r\n keys.forEach((key, index) => {\r\n if (index === keys.length - 1) {\r\n if (!currentLevel[key]) {\r\n let fieldValue = field.value\r\n if (fieldValue && (field.field_type !== 'image' || field.field_type !== 'file')) {\r\n if (field.field_type === 'date') {\r\n fieldValue = dayjs(fieldValue)\r\n } else if (field.field_type === 'time') {\r\n const [hours, minutes, seconds] = fieldValue.split(\":\").map(Number);\r\n fieldValue = dayjs().set('hour', hours).set('minute', minutes).set('second', seconds).set('millisecond', 0)\r\n } else if (field.name.includes('_id') && !Array.isArray(field?.value)) {\r\n fieldValue = Number(fieldValue)\r\n }\r\n }\r\n currentLevel[key] = fieldValue;\r\n } else if (typeof currentLevel[key] !== 'object' || Array.isArray(currentLevel[key])) {\r\n throw new Error(`Conflict: The key \"${key}\" already exists and is not an object.`);\r\n }\r\n } else {\r\n if (!currentLevel[key]) {\r\n currentLevel[key] = {};\r\n } else if (typeof currentLevel[key] !== 'object' || Array.isArray(currentLevel[key])) {\r\n throw new Error(`Conflict: The key \"${key}\" already exists and is not an object.`);\r\n }\r\n currentLevel = currentLevel[key];\r\n\r\n }\r\n });\r\n\r\n return existingObject;\r\n }, [])\r\n\r\n const removeMatchingKeyValuePairs = useCallback((obj1, obj2) => {\r\n _.forOwn(obj1, (value, key) => {\r\n if (_.has(obj2, key) && _.isEqual(value, obj2[key])) {\r\n delete obj1[key];\r\n }\r\n });\r\n return obj1;\r\n }, [])\r\n\r\n const validateRequiredSwitchFormData = useCallback((switchData: any) => {\r\n const requiredFields: string[] = [];\r\n if (switchData) {\r\n switchData && switchData[0]?.formMembers.forEach((member: any) => {\r\n if (member?.validation && Array.isArray(member?.validation)) {\r\n member?.validation.forEach((validation: any) => {\r\n if (validation?.thenValidations && Array.isArray(validation?.thenValidations)) {\r\n validation?.thenValidations.forEach((thenValidation: any) => {\r\n if (thenValidation?.type === \"required\" && thenValidation?.value === true) {\r\n if (member?.name) {\r\n requiredFields.push(member.name);\r\n }\r\n }\r\n });\r\n } else {\r\n const hasRequiredValidation = member.validation.some(\r\n (validation: any) => validation.type === 'required' && validation.value === true\r\n )\r\n if (hasRequiredValidation) {\r\n requiredFields.push(member.name);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n }\r\n if (requiredFields) {\r\n setValidRequiredFields(_.uniq(requiredFields))\r\n }\r\n\r\n }, [])\r\n\r\n const isEmpty = useCallback((value: any): boolean => {\r\n return (\r\n value === null ||\r\n value === undefined ||\r\n (Array.isArray(value) && value.length === 0) ||\r\n (typeof value === 'object' && Object.keys(value).length === 0)\r\n );\r\n }, [])\r\n\r\n const getMissingFields = useCallback((watchedFields: any, validationReqFields: string[]): string[] => {\r\n const missingFields: string[] = [];\r\n\r\n validationReqFields.forEach((fieldPath) => {\r\n const keys = fieldPath.split(\".\");\r\n let currentLevel = watchedFields;\r\n\r\n for (let i = 0; i < keys.length; i++) {\r\n const key = keys[i];\r\n\r\n if (!currentLevel?.[key] && currentLevel?.[key] !== 0) {\r\n // If any key in the path is missing, mark the field as missing\r\n missingFields.push(fieldPath);\r\n return;\r\n }\r\n\r\n // Move deeper into the object\r\n currentLevel = currentLevel[key];\r\n }\r\n\r\n // After navigating the full path, check if the final value is empty\r\n if (isEmpty(currentLevel)) {\r\n missingFields.push(fieldPath);\r\n }\r\n });\r\n\r\n\r\n return missingFields;\r\n }, [isEmpty])\r\n\r\n // Use Effects\r\n useEffect(() => {\r\n if (recieveTabDataLenght) {\r\n recieveTabDataLenght(tabsData.length)\r\n }\r\n }, [recieveTabDataLenght, tabsData])\r\n\r\n useEffect(() => {\r\n const handleMessage = (event: MessageEvent) => {\r\n if (event.origin !== window.origin) {\r\n return;\r\n }\r\n const { state } = event.data;\r\n\r\n if (state?.length) {\r\n const data: any = formBuilderDeConversion(state);\r\n\r\n if (data.tab) {\r\n setTabsData(data.tab);\r\n } else if (data.section) {\r\n setSchema(data.section);\r\n }\r\n }\r\n };\r\n\r\n window.addEventListener(\"message\", handleMessage);\r\n\r\n return () => {\r\n window.removeEventListener(\"message\", handleMessage);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (data) {\r\n const formData = formBuilderDeConversion(data)\r\n if (formData?.tab) {\r\n // setSchema([])\r\n setTabsData(formData.tab);\r\n if (activeTab !== undefined) {\r\n setSchema(formData.tab[activeTab]?.data || []);\r\n }\r\n } else {\r\n setSchema(formData.section);\r\n // setTabsData([])\r\n }\r\n const dVals = _.get(defaultValues, fieldArrayName, {})\r\n const wVals = removeMatchingKeyValuePairs((watchedValues || {}), (dVals || {}))\r\n if (mode === 'edit' && !Object.keys(wVals)?.length) {\r\n let formValues: any = {};\r\n let nestedFormValues: any = {};\r\n data.forEach((field: any) => {\r\n const fieldValue = field.value\r\n if (field.name?.includes(\".\")) {\r\n nestedFormValues = createNestedObjectFromDot(field.name, field, nestedFormValues)\r\n } else {\r\n if (fieldValue && (field.field_type !== 'image' || field.field_type !== 'file')) {\r\n if (field?.is_section_field) {\r\n const fieldName = field?.form_switcher_name || field?.form_switcher_label;\r\n formValues = { ...formValues, [fieldName]: fieldValue }\r\n } else if (\r\n field?.name &&\r\n ['company_id', 'email_ids'].includes(field?.name) &&\r\n ['edit_customer', 'add_customer', 'edit_vendor', 'add_vendor'].includes(fieldArrayName)\r\n ) {\r\n formValues = { ...formValues, [field.name]: fieldValue }\r\n } else if (field.field_type === 'date') {\r\n formValues = { ...formValues, [field.name]: dayjs(fieldValue) }\r\n } else if (field.field_type === 'time') {\r\n const [hours, minutes, seconds] = fieldValue.split(\":\").map(Number);\r\n formValues = { ...formValues, [field.name]: dayjs().set('hour', hours).set('minute', minutes).set('second', seconds).set('millisecond', 0) }\r\n } else if (field.name.includes('_id') && !Array.isArray(field?.value)) {\r\n if (fieldArrayName === \"edit_user\" && field.name === \"role_id\") {\r\n formValues = { ...formValues, [field.name]: fieldValue }\r\n } else {\r\n formValues = { ...formValues, [field.name]: Number(fieldValue) }\r\n }\r\n } else {\r\n formValues = { ...formValues, [field.name]: fieldValue }\r\n }\r\n }\r\n }\r\n })\r\n const finalFormValues = { ...formValues, ...nestedFormValues }\r\n reset({ [fieldArrayName]: { ...finalFormValues } })\r\n }\r\n getFormMethods?.({ control, handleSubmit, setValue, reset, resetField, getValues, unregister, trigger, watch, getFieldState, errors, ...rest })\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [data])\r\n\r\n useEffect(() => {\r\n if (activeTab?.toString()) {\r\n if (tabsData && tabsData[activeTab]) {\r\n setSchema(tabsData[activeTab].data);\r\n }\r\n }\r\n }, [activeTab, tabsData]);\r\n\r\n useEffect(() => {\r\n if (watchedValues && handleFormValues) {\r\n handleFormValues?.(watchedValues);\r\n }\r\n }, [handleFormValues, watchedValues])\r\n\r\n useEffect(() => {\r\n if (errors?.[fieldArrayName]) {\r\n setErrorAlert(true)\r\n } else {\r\n setErrorAlert(false)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [fieldArrayName, JSON.stringify(errors)])\r\n\r\n useEffect(() => {\r\n const validatedFields: string[] = [];\r\n if (activeTab != undefined) {\r\n tabsData[activeTab]?.data.forEach((section: any) => {\r\n\r\n if (section.members && Array.isArray(section.members)) {\r\n\r\n section.members.forEach((member: any) => {\r\n if (member.validation && Array.isArray(member.validation)) {\r\n const hasRequiredValidation = member.validation.some(\r\n (validation: any) => validation.type === 'required' && validation.value === true\r\n )\r\n if (hasRequiredValidation) {\r\n // validatedFields.push(fieldArrayName + '.' + member.name);\r\n validatedFields.push(member.name);\r\n }\r\n }\r\n });\r\n }\r\n })\r\n setValidRequiredFields(validatedFields);\r\n }\r\n }, [tabsData, activeTab]);\r\n\r\n useEffect(() => {\r\n if (watchedValues?.account_type) {\r\n\r\n const switchFormData: any[] = [];\r\n schema && schema.forEach((section: any) => {\r\n const sectionMembers = schema && section?.members?.map((ele: any) => ele) || [];\r\n\r\n const switchForms = schema && section?.switcher_forms?.map((form: any) => ({\r\n ...form,\r\n formMembers: sectionMembers.filter(\r\n (member: any) => member.section_form_id === form.id,\r\n ),\r\n }));\r\n if (switchForms) {\r\n switchFormData.push(switchForms)\r\n }\r\n })\r\n\r\n const selectValue = watchedValues?.account_type || \"Individual\";\r\n const switchData = switchFormData && Array.isArray(switchFormData[0])\r\n ? switchFormData[0].filter((form: any) => form.name === selectValue)\r\n : [];\r\n\r\n if (switchData) {\r\n validateRequiredSwitchFormData(switchData)\r\n }\r\n\r\n }\r\n }, [watchedValues?.account_type, schema, validateRequiredSwitchFormData]);\r\n\r\n useEffect(() => {\r\n if (validateRequiredFields.length > 0) {\r\n const updatedRequiredFields = getMissingFields(watchedValues, validateRequiredFields)\r\n\r\n // const updatedRequiredFields = validateRequiredFields.filter((fieldPath) => {\r\n // const watchedValue = watchedFields[fieldPath] ;\r\n // return watchedValue === undefined || watchedValue === null || watchedValue === 0 ;\r\n // });\r\n\r\n updatedRequiredFields.length === 0 ? setTabFormValid(true) : setTabFormValid(false);\r\n } else {\r\n setTabFormValid(true)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [validateRequiredFields, watchedValues, activeTab])\r\n\r\n useEffect(() => {\r\n if (recieveIsValidForm) {\r\n recieveIsValidForm(isTabFormValid)\r\n }\r\n }, [recieveIsValidForm, isTabFormValid])\r\n\r\n\r\n return (\r\n // <FullScreenLayout>\r\n <Box sx={{ width: \"100%\", padding: \"2rem\", ...containerStyles }}>\r\n <FormProvider {...{ control, handleSubmit, setValue, reset, resetField, getValues, unregister, trigger, watch, errors, ...rest }}>\r\n <form id={fieldArrayName} name={fieldArrayName} onSubmit={handleSubmit(handleFormSubmit)}>\r\n {Boolean(tabsData?.length) && (\r\n <>\r\n {errorAlert &&\r\n <Alert severity='error' onClose={() => setErrorAlert(false)}>\r\n Please fill all the required fields.\r\n </Alert>\r\n }\r\n <TabBar\r\n tabs={tabsData}\r\n activeTabs={activeTabs}\r\n activeValue={activeTab}\r\n setActiveValue={setActiveTabValue}\r\n isFormTabValid={isTabFormValid}\r\n />\r\n </>\r\n )}\r\n {schema &&\r\n schema.map((section: any, index: number) => {\r\n const {\r\n isFormSwitcher,\r\n formSwitcherName,\r\n switchForms,\r\n members,\r\n values,\r\n } = getSectionData(section)\r\n\r\n return (\r\n <FormSection\r\n section={section}\r\n index={index}\r\n members={members}\r\n switchForms={switchForms}\r\n isFormSwitcher={isFormSwitcher}\r\n control={control}\r\n fieldArrayName={fieldArrayName}\r\n formSwitcherName={formSwitcherName}\r\n displayAvtar={displayAvtar}\r\n isButton={isButton}\r\n currencyOption={currencyOption}\r\n values={values}\r\n onBlur={onBlur}\r\n setValue={setValue}\r\n onSelectFooterClick={onSelectFooterClick}\r\n getSelectedData={getSelectedData}\r\n setCurrencyOptions={setCurrencyOptions}\r\n refreshOptions={refreshOptions}\r\n handleFieldCleanUp={handleFieldCleanUp}\r\n handleSetCountryCodeField={handleSetCountryCodeField}\r\n handleTableAddClick={handleTableAddClick}\r\n onTableCellChange={onTableCellChange}\r\n // setDetailsData={setDetailsData}\r\n t={t}\r\n images={images}\r\n />\r\n );\r\n })}\r\n </form>\r\n </FormProvider>\r\n </Box>\r\n // </FullScreenLayout>\r\n );\r\n};\r\n\r\nexport default FormParser;","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport React, { useMemo } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport * as Yup from 'yup';\r\nimport {\r\n Box,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n Grid,\r\n IconButton\r\n} from '@mui/material';\r\nimport Close from '@mui/icons-material/Close';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport Modal from './modal/modal';\r\nimport Typography from './typography/typography';\r\nimport Button from './button/button';\r\nimport ModalLoader from './loaders/modal-loader';\r\nimport { DynamicInput, DynamicSearchSelect, IModalComponentProps } from './form-control';\r\n\r\ninterface IFormValues {\r\n team: {\r\n name: string;\r\n department_id: string | null;\r\n team_lead_id: string | null;\r\n member_ids: string[] | null;\r\n description: string;\r\n };\r\n}\r\n\r\nconst teamValidationSchema = Yup.object().shape({\r\n team: Yup.object().shape({\r\n name: Yup.string().required('Team Name is required'),\r\n department_id: Yup.string().nullable(),\r\n team_lead_id: Yup.string().nullable().required('Team Lead is required'),\r\n member_ids: Yup.array().nullable(),\r\n description: Yup.string(),\r\n })\r\n});\r\n\r\nconst DEFAULT_VALUES = {\r\n team: {\r\n name: '',\r\n department_id: null,\r\n team_lead_id: null,\r\n member_ids: null,\r\n description: '',\r\n }\r\n};\r\n\r\nexport const TeamAddModal: React.FC<IModalComponentProps> = ({\r\n isOpen,\r\n setIsOpen,\r\n onSave,\r\n isLoading,\r\n modalProps,\r\n}) => {\r\n const { t } = useTranslation();\r\n\r\n const { control, handleSubmit, reset, watch } = useForm<IFormValues>({\r\n mode: 'all',\r\n resolver: yupResolver(teamValidationSchema),\r\n defaultValues: DEFAULT_VALUES\r\n });\r\n\r\n const selectedDepartmentId = watch('team.department_id');\r\n const selectedTeamLeadId = watch('team.team_lead_id');\r\n\r\n const handleModalClose = () => {\r\n reset(DEFAULT_VALUES);\r\n setIsOpen();\r\n };\r\n\r\n const onSubmit = async (values: IFormValues) => {\r\n await onSave(values);\r\n handleModalClose();\r\n };\r\n\r\n // Memoize filters to prevent unnecessary re-renders of DynamicSearchSelect\r\n const leadFilter = useMemo(() => ({\r\n '&department_id.eq': selectedDepartmentId || 0\r\n }), [selectedDepartmentId]);\r\n\r\n const membersFilter = useMemo(() => ({\r\n '&department_id.eq': selectedDepartmentId || 0,\r\n ...(selectedTeamLeadId ? { '&id.ne': selectedTeamLeadId } : {})\r\n }), [selectedDepartmentId, selectedTeamLeadId]);\r\n\r\n return (\r\n <Modal\r\n open={isOpen}\r\n onClose={handleModalClose}\r\n maxWidth='sm'\r\n fullWidth\r\n {...modalProps}\r\n >\r\n <form onSubmit={handleSubmit(onSubmit)}>\r\n {isLoading && <ModalLoader />}\r\n <DialogTitle className='brandAddModal--DialogTitle'>\r\n <Typography type='s3' color='inherit' weight='medium'>\r\n {t('hrms.organization_structure.teamModal.title', 'Add Team')}\r\n </Typography>\r\n <IconButton onClick={handleModalClose}>\r\n <Close fontSize='small' />\r\n </IconButton>\r\n </DialogTitle>\r\n <DialogContent className='brandAddModal--DialogContents'>\r\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\r\n {/* Team Name - Required */}\r\n <Grid item sm={12}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t('hrms.organization_structure.teamModal.name_label', 'Team Name')}\r\n name='name'\r\n fieldArrayName='team'\r\n placeholder={t('hrms.organization_structure.teamModal.name_placeholder', 'Enter Team Name')}\r\n required\r\n />\r\n </Grid>\r\n\r\n {/* Department - Optional */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t('hrms.organization_structure.teamModal.department_label', 'Department')}\r\n name='department_id'\r\n placeholder={t('hrms.organization_structure.teamModal.department_placeholder', 'Select Department')}\r\n fieldArrayName='team'\r\n formControl={control as any}\r\n apiType='department'\r\n required={false}\r\n options={[]}\r\n />\r\n </Grid>\r\n\r\n {/* Team Lead - Required */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t('hrms.organization_structure.teamModal.team_lead_label', 'Team Lead')}\r\n name='team_lead_id'\r\n placeholder={t('hrms.organization_structure.teamModal.team_lead_placeholder', 'Select Team Lead')}\r\n fieldArrayName='team'\r\n formControl={control as any}\r\n apiType='employees'\r\n required\r\n options={[]}\r\n customeFilter={leadFilter}\r\n />\r\n </Grid>\r\n\r\n {/* Members - Optional, multi-select */}\r\n <Grid item sm={12}>\r\n <DynamicSearchSelect\r\n label={t('hrms.organization_structure.teamModal.members_label', 'Members')}\r\n name='member_ids'\r\n placeholder={t('hrms.organization_structure.teamModal.members_placeholder', 'Select Members')}\r\n fieldArrayName='team'\r\n formControl={control as any}\r\n apiType='employees'\r\n required={false}\r\n options={[]}\r\n is_multiselect\r\n customeFilter={membersFilter}\r\n />\r\n </Grid>\r\n\r\n {/* Description - Optional, full width */}\r\n <Grid item sm={12}>\r\n <DynamicInput\r\n type='textarea'\r\n formControl={control}\r\n label={t('hrms.organization_structure.teamModal.description_label', 'Description')}\r\n name='description'\r\n fieldArrayName='team'\r\n placeholder={t('hrms.organization_structure.teamModal.description_placeholder', 'Enter Description')}\r\n is_multiline\r\n rows={3}\r\n />\r\n </Grid>\r\n </Grid>\r\n </DialogContent>\r\n <DialogActions className='brandAddModal--DialogAction'>\r\n <span></span>\r\n <Box display='flex' gap={1.5}>\r\n <Button\r\n className='brandAddModal--DialogAction--WhiteBtn'\r\n onClick={handleModalClose}\r\n >\r\n {t('common.cancel')}\r\n </Button>\r\n <Button type='submit'>\r\n {t('common.save')}\r\n </Button>\r\n </Box>\r\n </DialogActions>\r\n </form>\r\n </Modal>\r\n );\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport React from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport * as Yup from 'yup';\r\nimport {\r\n Box,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n Grid,\r\n IconButton\r\n} from '@mui/material';\r\nimport Close from '@mui/icons-material/Close';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport Modal from './modal/modal';\r\nimport Typography from './typography/typography';\r\nimport Button from './button/button';\r\nimport ModalLoader from './loaders/modal-loader';\r\nimport { DynamicInput, DynamicSearchSelect, DynamicToggleButton, IModalComponentProps } from './form-control';\r\n\r\ninterface IFormValues {\r\n department: {\r\n company_id: string | null;\r\n department_code: string;\r\n name: string;\r\n parent_department_id: string | null;\r\n department_head_id: string | null;\r\n cost_code: string;\r\n status: boolean;\r\n description: string;\r\n };\r\n}\r\n\r\nconst departmentValidationSchema = Yup.object().shape({\r\n department: Yup.object().shape({\r\n company_id: Yup.string().nullable().required('Company is required'),\r\n department_code: Yup.string().required('Department Code is required'),\r\n name: Yup.string().required('Department Name is required'),\r\n parent_department_id: Yup.string().nullable(),\r\n department_head_id: Yup.string().nullable(),\r\n cost_code: Yup.string(),\r\n status: Yup.boolean(),\r\n description: Yup.string(),\r\n })\r\n});\r\n\r\nexport const DepartmentAddModal: React.FC<IModalComponentProps> = ({\r\n isOpen,\r\n setIsOpen,\r\n onSave,\r\n isLoading,\r\n modalProps,\r\n}) => {\r\n const { t } = useTranslation();\r\n\r\n const { control, handleSubmit, reset, trigger, watch } = useForm<any>({\r\n mode: 'all',\r\n resolver: yupResolver(departmentValidationSchema),\r\n defaultValues: {\r\n department: {\r\n company_id: null,\r\n department_code: '',\r\n name: '',\r\n parent_department_id: null,\r\n department_head_id: null,\r\n cost_code: '',\r\n status: true,\r\n description: '',\r\n }\r\n }\r\n });\r\n\r\n const rootCompanyId = watch('department.company_id');\r\n\r\n const handleModalClose = () => {\r\n reset({\r\n department: {\r\n company_id: null,\r\n department_code: '',\r\n name: '',\r\n parent_department_id: null,\r\n department_head_id: null,\r\n cost_code: '',\r\n status: true,\r\n description: '',\r\n }\r\n });\r\n setIsOpen();\r\n };\r\n\r\n const onSubmit = async (values: IFormValues) => {\r\n const isValid = await trigger();\r\n if (!isValid) return;\r\n await onSave(values as any);\r\n handleModalClose();\r\n };\r\n\r\n return (\r\n <Modal\r\n open={isOpen}\r\n onClose={handleModalClose}\r\n maxWidth='sm'\r\n fullWidth\r\n {...modalProps}\r\n >\r\n <>\r\n <form onSubmit={handleSubmit(onSubmit)}>\r\n {isLoading && <ModalLoader />}\r\n <DialogTitle className='brandAddModal--DialogTitle'>\r\n <Typography type='s3' color='inherit' weight='medium'>\r\n {t('hrms.organization_structure.departmentModal.title', 'Add Department')}\r\n </Typography>\r\n <IconButton onClick={handleModalClose}>\r\n <Close fontSize='small' />\r\n </IconButton>\r\n </DialogTitle>\r\n <DialogContent className='brandAddModal--DialogContents'>\r\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\r\n {/* Company - Required */}\r\n <Grid item sm={12}>\r\n <DynamicSearchSelect\r\n label={t('hrms.organization_structure.departmentModal.company_label', 'Company')}\r\n name='company_id'\r\n placeholder={t('hrms.organization_structure.departmentModal.company_placeholder', 'Select Company')}\r\n fieldArrayName='department'\r\n formControl={control as any}\r\n apiType='company'\r\n required\r\n options={[]}\r\n />\r\n </Grid>\r\n\r\n {/* Department Code - Required */}\r\n <Grid item sm={6}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t('hrms.organization_structure.departmentModal.code_label', 'Department Code')}\r\n name='department_code'\r\n fieldArrayName='department'\r\n placeholder={t('hrms.organization_structure.departmentModal.code_placeholder', 'Enter Department Code')}\r\n required\r\n />\r\n </Grid>\r\n\r\n {/* Department Name - Required */}\r\n <Grid item sm={6}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t('hrms.organization_structure.departmentModal.name_label', 'Department Name')}\r\n name='name'\r\n fieldArrayName='department'\r\n placeholder={t('hrms.organization_structure.departmentModal.name_placeholder', 'Enter Department Name')}\r\n required\r\n />\r\n </Grid>\r\n\r\n {/* Parent Department - Optional */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t('hrms.organization_structure.departmentModal.parent_department_label', 'Parent Department')}\r\n name='parent_department_id'\r\n placeholder={t('hrms.organization_structure.departmentModal.parent_department_placeholder', 'Select Parent Department')}\r\n fieldArrayName='department'\r\n formControl={control as any}\r\n apiType='department'\r\n required={false}\r\n options={[]}\r\n customeFilter={{\r\n 'is_parent.eq': true,\r\n '&company_id.eq': rootCompanyId || 0\r\n }}\r\n />\r\n </Grid>\r\n\r\n {/* Department Head - Optional */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t('hrms.organization_structure.departmentModal.department_head_label', 'Department Head')}\r\n name='department_head_id'\r\n placeholder={t('hrms.organization_structure.departmentModal.department_head_placeholder', 'Select Department Head')}\r\n fieldArrayName='department'\r\n formControl={control as any}\r\n apiType='employees'\r\n required={false}\r\n options={[]}\r\n customeFilter={{\r\n '&company_id.eq': rootCompanyId || 0\r\n }}\r\n />\r\n </Grid>\r\n\r\n {/* Cost Code - Optional */}\r\n <Grid item sm={6}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t('hrms.organization_structure.departmentModal.cost_code_label', 'Cost Code')}\r\n name='cost_code'\r\n fieldArrayName='department'\r\n placeholder={t('hrms.organization_structure.departmentModal.cost_code_placeholder', 'Enter Cost Code')}\r\n />\r\n </Grid>\r\n\r\n {/* Status Toggle */}\r\n <Grid item sm={6}>\r\n <DynamicToggleButton\r\n formControl={control as any}\r\n name='status'\r\n fieldArrayName='department'\r\n label={t('hrms.organization_structure.departmentModal.status_label', 'Status')}\r\n title={t('common.active', 'Active')}\r\n titlePosition='end'\r\n position={3}\r\n />\r\n </Grid>\r\n\r\n {/* Description - Optional, full width */}\r\n <Grid item sm={12}>\r\n <DynamicInput\r\n type='textarea'\r\n formControl={control}\r\n label={t('hrms.organization_structure.departmentModal.description_label', 'Description')}\r\n name='description'\r\n fieldArrayName='department'\r\n placeholder={t('hrms.organization_structure.departmentModal.description_placeholder', 'Enter Description')}\r\n is_multiline\r\n rows={3}\r\n />\r\n </Grid>\r\n </Grid>\r\n </DialogContent>\r\n <DialogActions className='brandAddModal--DialogAction'>\r\n <span></span>\r\n <Box display='flex' gap={1.5}>\r\n <Button\r\n className='brandAddModal--DialogAction--WhiteBtn'\r\n onClick={handleModalClose}\r\n >\r\n {t('common.cancel')}\r\n </Button>\r\n <Button type='button' onClick={handleSubmit(onSubmit)}>\r\n {t('common.save')}\r\n </Button>\r\n </Box>\r\n </DialogActions>\r\n </form>\r\n </>\r\n </Modal>\r\n );\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useState } from 'react';\n\nimport Modal from '../../../../modal/modal';\nimport Typography from '../../../../typography/typography';\nimport DynamicInput from '../text';\nimport Button from '../../../../button/button';\nimport ModalLoader from '../../../../loaders/modal-loader';\nimport Toast from '../../../../toast/toast';\nimport { useTranslation } from 'react-i18next';\n\nimport {\n Box,\n DialogActions,\n DialogContent,\n DialogProps,\n DialogTitle,\n Grid,\n IconButton\n} from '@mui/material';\nimport Close from '@mui/icons-material/Close';\n\nimport { useForm } from 'react-hook-form';\nimport * as Yup from 'yup';\nimport { yupResolver } from '@hookform/resolvers/yup';\n\nimport './location-add-modal.scss';\nimport DynamicSearchSelect from '../dynamic-select';\ninterface BrandAddModalProps {\n isOpen: boolean;\n setIsOpen: () => void;\n modalProps?: DialogProps;\n onSave: (data: string) => void;\n isLoading?: boolean;\n}\n\ninterface IFormValues {\n location_data: {\n name: string;\n };\n}\n\ninterface IToast {\n type: 'normal' | 'alert';\n message: string;\n}\n\nconst validationSchema = Yup.object().shape({\n location_data: Yup.object().shape({\n name: Yup.string().required('Name is required')\n })\n});\n\nconst LocationAddModal: React.FC<BrandAddModalProps> = ({\n isOpen,\n setIsOpen,\n modalProps,\n onSave,\n isLoading\n}) => {\n const { t } = useTranslation();\n const [toast, setToast] = useState<IToast | null>(null);\n const { control, handleSubmit, reset } = useForm<any>({\n mode: 'all',\n resolver: yupResolver(validationSchema)\n });\n const handleModalClose = () => {\n reset({ location_data: undefined });\n setIsOpen();\n };\n\n const onSubmit = async (values: IFormValues) => {\n // handleModalClose();\n onSave(values?.location_data)\n };\n\n return (\n <Modal\n open={isOpen}\n onClose={handleModalClose}\n maxWidth='sm'\n fullWidth\n {...modalProps}>\n <>\n \n <form onSubmit={handleSubmit(onSubmit)}>\n {isLoading && (\n <ModalLoader />\n )}\n <DialogTitle className='brandAddModal--DialogTitle'>\n <Typography type='s3' color='inherit' weight='medium'>\n {t(\"inventory.item.locationModal.title\")}\n </Typography>\n <IconButton onClick={handleModalClose}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n <DialogContent className='brandAddModal--DialogContents'>\n \n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t(\"inventory.item.locationModal.location_name_label\")}\n name='name'\n fieldArrayName='location_data'\n placeholder={t(\"inventory.item.locationModal.location_name_placeholder\")}\n required\n />\n </Grid>\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t(\"inventory.item.locationModal.location_code_label\")}\n name='short_name'\n fieldArrayName='location_data'\n placeholder={t(\"inventory.item.locationModal.location_code_placeholder\")}\n required\n />\n </Grid>\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\n \"accounting.authorize_commission.fields.company_label\"\n )}\n name=\"company_id\"\n placeholder={t(\n \"accounting.authorize_commission.fields.company_placeholder\"\n )}\n fieldArrayName='location_data'\n formControl={control}\n apiType='company'\n getSelectedData={(data: any) =>\n // setSelectedData(name, data)\n console.log(\"data\", data)\n }\n required={true}\n />\n </Grid>\n </Grid>\n \n </DialogContent>\n <DialogActions className='brandAddModal--DialogAction'>\n <span></span>\n <Box display='flex' gap={1.5}>\n <Button\n className='brandAddModal--DialogAction--WhiteBtn'\n onClick={handleModalClose}>\n {t(\"common.cancel\")}\n </Button>\n <Button type='button' onClick={handleSubmit(onSubmit)}>{t(\"common.save\")}</Button>\n </Box>\n </DialogActions>\n </form>\n </>\n <Toast\n open={Boolean(toast)}\n type={toast?.type}\n message={toast?.message}\n handleClose={() => setToast(null)}\n anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}\n />\n </Modal>\n );\n};\n\nexport default LocationAddModal;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport React from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport * as Yup from 'yup';\r\nimport {\r\n Box,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n Grid,\r\n IconButton\r\n} from '@mui/material';\r\nimport Close from '@mui/icons-material/Close';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport Modal from './modal/modal';\r\nimport Typography from './typography/typography';\r\nimport Button from './button/button';\r\nimport ModalLoader from './loaders/modal-loader';\r\nimport { DynamicInput, DynamicSearchSelect, DynamicToggleButton, IModalComponentProps } from './form-control';\r\n\r\ninterface IFormValues {\r\n designation: {\r\n company_id: string | null;\r\n designation_code: string;\r\n name: string;\r\n reports_to: string | null;\r\n level: string;\r\n status: boolean;\r\n description: string;\r\n };\r\n}\r\n\r\nconst designationValidationSchema = Yup.object().shape({\r\n designation: Yup.object().shape({\r\n company_id: Yup.string().nullable().required('Company is required'),\r\n designation_code: Yup.string(),\r\n name: Yup.string().required('Designation Name is required'),\r\n reports_to: Yup.string().nullable(),\r\n level: Yup.number().nullable().typeError('Level must be a number'),\r\n status: Yup.boolean(),\r\n description: Yup.string(),\r\n })\r\n});\r\n\r\nexport const DesignationAddModal: React.FC<IModalComponentProps> = ({\r\n isOpen,\r\n setIsOpen,\r\n onSave,\r\n isLoading,\r\n modalProps,\r\n}) => {\r\n const { t } = useTranslation();\r\n\r\n const { control, handleSubmit, reset, trigger, watch } = useForm<any>({\r\n mode: 'all',\r\n resolver: yupResolver(designationValidationSchema),\r\n defaultValues: {\r\n designation: {\r\n company_id: null,\r\n designation_code: '',\r\n name: '',\r\n reports_to: null,\r\n level: null,\r\n status: true,\r\n description: '',\r\n }\r\n }\r\n });\r\n\r\n const rootCompanyId = watch('designation.company_id');\r\n\r\n const handleModalClose = () => {\r\n reset({\r\n designation: {\r\n company_id: null,\r\n designation_code: '',\r\n name: '',\r\n reports_to: null,\r\n level: null,\r\n status: true,\r\n description: '',\r\n }\r\n });\r\n setIsOpen();\r\n };\r\n\r\n const onSubmit = async (values: IFormValues) => {\r\n const isValid = await trigger();\r\n if (!isValid) return;\r\n await onSave(values as any);\r\n handleModalClose();\r\n };\r\n\r\n return (\r\n <Modal\r\n open={isOpen}\r\n onClose={handleModalClose}\r\n maxWidth='sm'\r\n fullWidth\r\n {...modalProps}\r\n >\r\n <>\r\n <form onSubmit={handleSubmit(onSubmit)}>\r\n {isLoading && <ModalLoader />}\r\n <DialogTitle className='brandAddModal--DialogTitle'>\r\n <Typography type='s3' color='inherit' weight='medium'>\r\n {t('hrms.organization_structure.designationModal.title', 'Add Designation')}\r\n </Typography>\r\n <IconButton onClick={handleModalClose}>\r\n <Close fontSize='small' />\r\n </IconButton>\r\n </DialogTitle>\r\n <DialogContent className='brandAddModal--DialogContents'>\r\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\r\n {/* Company - Required */}\r\n <Grid item sm={12}>\r\n <DynamicSearchSelect\r\n label={t('hrms.organization_structure.designationModal.company_label', 'Company')}\r\n name='company_id'\r\n placeholder={t('hrms.organization_structure.designationModal.company_placeholder', 'Select Company')}\r\n fieldArrayName='designation'\r\n formControl={control as any}\r\n apiType='company'\r\n required\r\n options={[]}\r\n />\r\n </Grid>\r\n\r\n {/* Designation Code */}\r\n <Grid item sm={6}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t('hrms.organization_structure.designationModal.code_label', 'Designation Code')}\r\n name='designation_code'\r\n fieldArrayName='designation'\r\n placeholder={t('hrms.organization_structure.designationModal.code_placeholder', 'Enter Designation Code')}\r\n />\r\n </Grid>\r\n\r\n {/* Designation Name - Required */}\r\n <Grid item sm={6}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t('hrms.organization_structure.designationModal.name_label', 'Designation Name')}\r\n name='name'\r\n fieldArrayName='designation'\r\n placeholder={t('hrms.organization_structure.designationModal.name_placeholder', 'Enter Designation Name')}\r\n required\r\n />\r\n </Grid>\r\n\r\n {/* Reports To - Optional (employees) */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t('hrms.organization_structure.designationModal.reports_to_label', 'Reports To')}\r\n name='reports_to'\r\n placeholder={t('hrms.organization_structure.designationModal.reports_to_placeholder', 'Select Reports To')}\r\n fieldArrayName='designation'\r\n formControl={control as any}\r\n apiType='employees'\r\n required={false}\r\n options={[]}\r\n customeFilter={{\r\n '&company_id.eq': rootCompanyId || 0\r\n }}\r\n />\r\n </Grid>\r\n\r\n {/* Level - Optional */}\r\n <Grid item sm={6}>\r\n <DynamicInput\r\n type='number'\r\n formControl={control}\r\n label={t('hrms.organization_structure.designationModal.level_label', 'Level')}\r\n name='level'\r\n fieldArrayName='designation'\r\n placeholder={t('hrms.organization_structure.designationModal.level_placeholder', 'Enter Level')}\r\n />\r\n </Grid>\r\n\r\n {/* Status Toggle */}\r\n <Grid item sm={6}>\r\n <DynamicToggleButton\r\n formControl={control as any}\r\n name='status'\r\n fieldArrayName='designation'\r\n label={t('hrms.organization_structure.designationModal.status_label', 'Status')}\r\n title={t('common.active', 'Active')}\r\n titlePosition='end'\r\n position={3}\r\n />\r\n </Grid>\r\n\r\n {/* Description - Optional, full width */}\r\n <Grid item sm={12}>\r\n <DynamicInput\r\n type='textarea'\r\n formControl={control}\r\n label={t('hrms.organization_structure.designationModal.description_label', 'Description')}\r\n name='description'\r\n fieldArrayName='designation'\r\n placeholder={t('hrms.organization_structure.designationModal.description_placeholder', 'Enter Description')}\r\n is_multiline\r\n rows={3}\r\n />\r\n </Grid>\r\n </Grid>\r\n </DialogContent>\r\n <DialogActions className='brandAddModal--DialogAction'>\r\n <span></span>\r\n <Box display='flex' gap={1.5}>\r\n <Button\r\n className='brandAddModal--DialogAction--WhiteBtn'\r\n onClick={handleModalClose}\r\n >\r\n {t('common.cancel')}\r\n </Button>\r\n <Button type='button' onClick={handleSubmit(onSubmit)}>\r\n {t('common.save')}\r\n </Button>\r\n </Box>\r\n </DialogActions>\r\n </form>\r\n </>\r\n </Modal>\r\n );\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { useState, useEffect, useCallback } from 'react';\r\n\r\nimport Modal from '../../../../modal/modal';\r\nimport Typography from '../../../../typography/typography';\r\nimport DynamicInput from '../text';\r\nimport Button from '../../../../button/button';\r\nimport ModalLoader from '../../../../loaders/modal-loader';\r\nimport Toast from '../../../../toast/toast';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport {\r\n Box,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n Grid,\r\n IconButton\r\n} from '@mui/material';\r\nimport Close from '@mui/icons-material/Close';\r\n\r\nimport { FormProvider, useForm, useWatch } from 'react-hook-form';\r\nimport * as Yup from 'yup';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\n\r\nimport DynamicSearchSelect from '../dynamic-select';\r\nimport DynamicSelect from '../select';\r\nimport { IModalComponentProps } from '../../index';\r\nimport { fetchOptions, skuGenerator } from '../../../../../utils/common';\r\n\r\nimport './fixed-asset-item-add-modal.scss';\r\n\r\ninterface IFormValues {\r\n inventory_fixed_asset_item: {\r\n name: string;\r\n sku: string;\r\n category: number | null;\r\n base_unit: number | null;\r\n company: number[];\r\n unit_of_measurement: number | null;\r\n stock_unit: number | null;\r\n purchase_unit: number | null;\r\n sales_unit: number | null;\r\n costing_method: string;\r\n depreciation_method: string;\r\n computation_method: string;\r\n default_tax_id: number | null;\r\n income_account_id: number | null;\r\n asset_account_id: number | null;\r\n cogs_account_id: number | null;\r\n fixed_asset_account_id: number | null;\r\n depreciation_account_id: number | null;\r\n declining_factor: number | null;\r\n };\r\n}\r\n\r\ninterface IToast {\r\n type: 'normal' | 'alert';\r\n message: string;\r\n}\r\n\r\nconst COSTING_METHODS = [\r\n { label: 'FIFO', value: 'FIFO' },\r\n { label: 'LIFO', value: 'LIFO' },\r\n { label: 'Weighted Average Cost', value: 'Weighted Average Cost' }\r\n];\r\n\r\nconst DEPRECIATION_METHODS = [\r\n { label: 'Straight line', value: 'Straight line' },\r\n { label: 'Declining', value: 'Declining' }\r\n];\r\n\r\nconst COMPUTATION_METHODS = [\r\n { label: 'Constant periods', value: 'Constant periods' },\r\n { label: 'Based on days per period', value: 'Based on days per period' }\r\n];\r\n\r\nconst validationSchema = Yup.object().shape({\r\n inventory_fixed_asset_item: Yup.object().shape({\r\n name: Yup.string().required('Name is required'),\r\n sku: Yup.string().required('SKU is required'),\r\n category: Yup.mixed().required('Category is required'),\r\n base_unit: Yup.mixed().required('Base Unit is required'),\r\n company: Yup.array().min(1, 'At least one company is required').required('Company is required'),\r\n unit_of_measurement: Yup.mixed().required('Unit of Measurement is required'),\r\n stock_unit: Yup.mixed().nullable(),\r\n purchase_unit: Yup.mixed().nullable(),\r\n sales_unit: Yup.mixed().nullable(),\r\n costing_method: Yup.string().required('Costing Method is required'),\r\n depreciation_method: Yup.string().required('Depreciation Method is required'),\r\n computation_method: Yup.string().required('Computation Method is required'),\r\n default_tax_id: Yup.mixed().required('Default Tax is required'),\r\n income_account_id: Yup.mixed().required('Income Account is required'),\r\n asset_account_id: Yup.mixed().required('Asset Account is required'),\r\n cogs_account_id: Yup.mixed().required('COGS Account is required'),\r\n fixed_asset_account_id: Yup.mixed().required('Fixed Asset Account is required'),\r\n depreciation_account_id: Yup.mixed().required('Depreciation Account is required'),\r\n declining_factor: Yup.number()\r\n .nullable()\r\n .when('depreciation_method', {\r\n is: 'Declining',\r\n then: (schema) => schema.required('Declining Factor is required').min(0, 'Must be positive'),\r\n otherwise: (schema) => schema.nullable(),\r\n }),\r\n })\r\n});\r\n\r\nconst FixedAssetItemAddModal: React.FC<IModalComponentProps> = ({\r\n isOpen,\r\n setIsOpen,\r\n modalProps,\r\n onSave,\r\n isLoading\r\n}) => {\r\n const { t } = useTranslation();\r\n const [toast, setToast] = useState<IToast | null>(null);\r\n const [selectedCategoryData, setSelectedCategoryData] = useState<any>(null);\r\n const unitFields = ['stock_unit', 'purchase_unit', 'sales_unit', 'consumption_unit', 'base_unit'];\r\n const defaultValues = {\r\n inventory_fixed_asset_item: {\r\n name: '',\r\n sku: '',\r\n category: null,\r\n base_unit: null,\r\n company: [],\r\n unit_of_measurement: null,\r\n stock_unit: null,\r\n purchase_unit: null,\r\n sales_unit: null,\r\n costing_method: '',\r\n depreciation_method: '',\r\n computation_method: '',\r\n default_tax_id: null,\r\n income_account_id: null,\r\n asset_account_id: null,\r\n cogs_account_id: null,\r\n fixed_asset_account_id: null,\r\n depreciation_account_id: null,\r\n declining_factor: null,\r\n status: 1\r\n }\r\n }\r\n\r\n const methods = useForm<any>({\r\n mode: 'all',\r\n resolver: yupResolver(validationSchema),\r\n defaultValues: defaultValues,\r\n });\r\n const { control, handleSubmit, reset, setValue, trigger } = methods || {};\r\n\r\n // Watch name and category for auto-generating SKU\r\n const [watchedName, watchedCategory, watchedUom, watchedDepreciationMethod] = useWatch({\r\n control, name:\r\n ['inventory_fixed_asset_item.name',\r\n 'inventory_fixed_asset_item.category',\r\n 'inventory_fixed_asset_item.unit_of_measurement',\r\n 'inventory_fixed_asset_item.depreciation_method']\r\n });\r\n\r\n\r\n // Auto-generate SKU when name or category changes\r\n useEffect(() => {\r\n if (watchedName && selectedCategoryData?.category_name) {\r\n const generatedSku = skuGenerator({\r\n name: watchedName,\r\n category: selectedCategoryData.category_name\r\n });\r\n setValue('inventory_fixed_asset_item.sku', generatedSku);\r\n }\r\n }, [watchedName, selectedCategoryData, setValue]);\r\n\r\n const handleModalClose = () => {\r\n reset(defaultValues);\r\n setSelectedCategoryData(null);\r\n setIsOpen();\r\n };\r\n\r\n const onSubmit = async (values: IFormValues) => {\r\n const isValid = await trigger();\r\n if (!isValid) return;\r\n await onSave({\r\n ...values.inventory_fixed_asset_item as any,\r\n type: 'inventory-fixed-asset',\r\n status: 1\r\n });\r\n handleModalClose();\r\n };\r\n\r\n const handleCategorySelect = useCallback((data: any) => {\r\n setSelectedCategoryData(data);\r\n }, []);\r\n\r\n const updateUomFields = useCallback(async () => {\r\n if (!watchedUom) return\r\n const filter = {\r\n '&template_id.eq': watchedUom,\r\n '&is_base_unit.eq': 1\r\n }\r\n const uomData = await fetchOptions('uom', filter, [], false)\r\n unitFields.forEach((item) => {\r\n setValue(`inventory_fixed_asset_item.${item}`, uomData?.id)\r\n })\r\n }, [watchedUom])\r\n useEffect(() => {\r\n updateUomFields()\r\n }, [updateUomFields])\r\n\r\n return (\r\n <Modal\r\n open={isOpen}\r\n onClose={handleModalClose}\r\n maxWidth='md'\r\n fullWidth\r\n {...modalProps}>\r\n <>\r\n <FormProvider {...methods}>\r\n <form onSubmit={handleSubmit(onSubmit)}>\r\n {isLoading && (\r\n <ModalLoader />\r\n )}\r\n <DialogTitle className='fixedAssetItemAddModal--DialogTitle'>\r\n <Typography type='s3' color='inherit' weight='medium'>\r\n {t(\"inventory.fixed_asset_items.modal.title\", \"Add Fixed Asset Item\")}\r\n </Typography>\r\n <IconButton onClick={handleModalClose}>\r\n <Close fontSize='small' />\r\n </IconButton>\r\n </DialogTitle>\r\n <DialogContent className='fixedAssetItemAddModal--DialogContents'>\r\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\r\n {/* Name */}\r\n <Grid item sm={6}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t(\"inventory.fixed_asset_items.modal.name_label\", \"Name\")}\r\n name='name'\r\n fieldArrayName='inventory_fixed_asset_item'\r\n placeholder={t(\"inventory.fixed_asset_items.modal.name_placeholder\", \"Enter Name\")}\r\n required\r\n />\r\n </Grid>\r\n\r\n {/* SKU - Auto-generated */}\r\n <Grid item sm={6}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t(\"inventory.fixed_asset_items.modal.sku_label\", \"SKU\")}\r\n name='sku'\r\n fieldArrayName='inventory_fixed_asset_item'\r\n placeholder={t(\"inventory.fixed_asset_items.modal.sku_placeholder\", \"Auto-generated\")}\r\n required\r\n disabled\r\n />\r\n </Grid>\r\n\r\n {/* Category */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.category_label\", \"Category\")}\r\n name=\"category\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.category_placeholder\", \"Select Category\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='categoryItems'\r\n options={[]}\r\n required={true}\r\n getSelectedData={handleCategorySelect}\r\n />\r\n </Grid>\r\n\r\n\r\n {/* Company */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.company_label\", \"Company\")}\r\n name=\"company\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.company_placeholder\", \"Select Company\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='company'\r\n options={[]}\r\n is_multiselect={true}\r\n required={true}\r\n />\r\n </Grid>\r\n\r\n {/* Costing Method */}\r\n <Grid item sm={6}>\r\n <DynamicSelect\r\n label={t(\"inventory.fixed_asset_items.modal.costing_method_label\", \"Costing Method\")}\r\n name=\"costing_method\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.costing_method_placeholder\", \"Select Costing Method\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n options={COSTING_METHODS}\r\n required={true}\r\n />\r\n </Grid>\r\n\r\n {/* Unit of Measurement Section Header */}\r\n <Grid item xs={12} pt={2}>\r\n <Typography type='s3' weight='medium' color='theme.neutral.900'>\r\n {t(\"inventory.fixed_asset_items.modal.uom_section\", \"Unit of Measurement\")}\r\n </Typography>\r\n </Grid>\r\n\r\n {/* UOM Template */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.unit_of_measurement_label\", \"UOM Template\")}\r\n name=\"unit_of_measurement\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.unit_of_measurement_placeholder\", \"Select UOM Template\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='uom_templates'\r\n required={true}\r\n />\r\n </Grid>\r\n\r\n {/* Stock Unit */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.stock_unit_label\", \"Stock Unit\")}\r\n name=\"stock_unit\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.stock_unit_placeholder\", \"Select Stock Unit\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='uom'\r\n customFilter={{\r\n '&template_id.eq': watchedUom || 0\r\n }}\r\n />\r\n </Grid>\r\n\r\n {/* Purchase Unit */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.purchase_unit_label\", \"Purchase Unit\")}\r\n name=\"purchase_unit\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.purchase_unit_placeholder\", \"Select Purchase Unit\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='uom'\r\n customFilter={{\r\n '&template_id.eq': watchedUom || 0\r\n }}\r\n />\r\n </Grid>\r\n\r\n {/* Sales Unit */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.sales_unit_label\", \"Consumption Unit\")}\r\n name=\"sales_unit\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.sales_unit_placeholder\", \"Select Sales Unit\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='uom'\r\n customFilter={{\r\n '&template_id.eq': watchedUom || 0\r\n }}\r\n />\r\n </Grid>\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.sales_unit_label\", \"Consumption Unit\")}\r\n name=\"consumption_unit\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.sales_unit_placeholder\", \"Select Sales Unit\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='uom'\r\n customFilter={{\r\n '&template_id.eq': watchedUom || 0\r\n }}\r\n />\r\n </Grid>\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.base_unit_label\", \"Base Unit\")}\r\n name=\"base_unit\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.base_unit_placeholder\", \"Select Base Unit\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n disabled\r\n apiType='uom'\r\n customFilter={{\r\n '&template_id.eq': watchedUom || 0,\r\n '&is_base_unit.eq': 1\r\n }}\r\n />\r\n </Grid>\r\n\r\n {/* Depreciation Method */}\r\n <Grid item sm={6}>\r\n <DynamicSelect\r\n label={t(\"inventory.fixed_asset_items.modal.depreciation_method_label\", \"Depreciation Method\")}\r\n name=\"depreciation_method\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.depreciation_method_placeholder\", \"Select Depreciation Method\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n options={DEPRECIATION_METHODS}\r\n required={true}\r\n />\r\n </Grid>\r\n\r\n {/* Declining Factor */}\r\n {watchedDepreciationMethod === 'Declining' && (\r\n <Grid item sm={6}>\r\n <DynamicInput\r\n type='number'\r\n formControl={control}\r\n label={t(\"inventory.fixed_asset_items.modal.declining_factor_label\", \"Declining Factor\")}\r\n name='declining_factor'\r\n fieldArrayName='inventory_fixed_asset_item'\r\n placeholder={t(\"inventory.fixed_asset_items.modal.declining_factor_placeholder\", \"Enter Declining Factor\")}\r\n required\r\n />\r\n </Grid>\r\n )}\r\n\r\n {/* Computation Method */}\r\n <Grid item sm={6}>\r\n <DynamicSelect\r\n label={t(\"inventory.fixed_asset_items.modal.computation_method_label\", \"Computation Method\")}\r\n name=\"computation_method\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.computation_method_placeholder\", \"Select Computation Method\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n options={COMPUTATION_METHODS}\r\n required={true}\r\n />\r\n </Grid>\r\n\r\n {/* Accounting Section Header */}\r\n <Grid item xs={12} pt={2}>\r\n <Typography type='s3' weight='medium' color='theme.neutral.900'>\r\n {t(\"inventory.fixed_asset_items.modal.accounting_section\", \"Accounting\")}\r\n </Typography>\r\n </Grid>\r\n\r\n {/* Default Tax */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.default_tax_label\", \"Default Tax\")}\r\n name=\"default_tax_id\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.default_tax_placeholder\", \"Select Default Tax\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='taxTemplate'\r\n options={[]}\r\n required={true}\r\n />\r\n </Grid>\r\n\r\n {/* Income Account */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.income_account_label\", \"Income Account\")}\r\n name=\"income_account_id\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.income_account_placeholder\", \"Select Income Account\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='accounts'\r\n options={[]}\r\n required={true}\r\n customeFilter={{ '&account_parent_type.in': ['Income', 'Assets'] }}\r\n />\r\n </Grid>\r\n\r\n {/* Asset Account */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.asset_account_label\", \"Asset Account\")}\r\n name=\"asset_account_id\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.asset_account_placeholder\", \"Select Asset Account\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='accounts'\r\n options={[]}\r\n required={true}\r\n customeFilter={{ '&account_parent_type.eq': 'Assets' }}\r\n />\r\n </Grid>\r\n\r\n {/* COGS Account */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.cogs_account_label\", \"COGS Account\")}\r\n name=\"cogs_account_id\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.cogs_account_placeholder\", \"Select COGS Account\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='accounts'\r\n options={[]}\r\n required={true}\r\n />\r\n </Grid>\r\n\r\n {/* Fixed Asset Account */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.fixed_asset_account_label\", \"Fixed Asset Account\")}\r\n name=\"fixed_asset_account_id\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.fixed_asset_account_placeholder\", \"Select Fixed Asset Account\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='accounts'\r\n options={[]}\r\n required={true}\r\n customeFilter={{ '&account_parent_type.eq': 'Assets' }}\r\n />\r\n </Grid>\r\n\r\n {/* Depreciation Account */}\r\n <Grid item sm={6}>\r\n <DynamicSearchSelect\r\n label={t(\"inventory.fixed_asset_items.modal.depreciation_account_label\", \"Depreciation Account\")}\r\n name=\"depreciation_account_id\"\r\n placeholder={t(\"inventory.fixed_asset_items.modal.depreciation_account_placeholder\", \"Select Depreciation Account\")}\r\n fieldArrayName='inventory_fixed_asset_item'\r\n formControl={control}\r\n apiType='accounts'\r\n options={[]}\r\n required={true}\r\n customeFilter={{ '&account_parent_type.eq': 'Assets' }}\r\n />\r\n </Grid>\r\n </Grid>\r\n </DialogContent>\r\n <DialogActions className='fixedAssetItemAddModal--DialogAction'>\r\n <span></span>\r\n <Box display='flex' gap={1.5}>\r\n <Button\r\n className='fixedAssetItemAddModal--DialogAction--WhiteBtn'\r\n onClick={handleModalClose}>\r\n {t(\"common.cancel\")}\r\n </Button>\r\n <Button type=\"button\" onClick={handleSubmit(onSubmit)}>{t(\"common.save\")}</Button>\r\n </Box>\r\n </DialogActions>\r\n </form>\r\n </FormProvider>\r\n </>\r\n <Toast\r\n open={Boolean(toast)}\r\n type={toast?.type}\r\n message={toast?.message}\r\n handleClose={() => setToast(null)}\r\n anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}\r\n />\r\n </Modal>\r\n );\r\n};\r\n\r\nexport default FixedAssetItemAddModal;\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport React from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport * as Yup from 'yup';\r\nimport {\r\n Box,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n Grid,\r\n IconButton\r\n} from '@mui/material';\r\nimport Close from '@mui/icons-material/Close';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport Modal from './modal/modal';\r\nimport Typography from './typography/typography';\r\nimport Button from './button/button';\r\nimport ModalLoader from './loaders/modal-loader';\r\nimport { DynamicInput, IModalComponentProps } from './form-control';\r\n\r\ninterface IFormValues {\r\n brand_data: {\r\n name: string;\r\n };\r\n}\r\n\r\nconst brandValidationSchema = Yup.object().shape({\r\n brand_data: Yup.object().shape({\r\n name: Yup.string().required('Name is required')\r\n })\r\n});\r\n\r\nexport const BrandAddModal: React.FC<IModalComponentProps> = ({\r\n isOpen,\r\n setIsOpen,\r\n onSave,\r\n isLoading,\r\n modalProps,\r\n}) => {\r\n const { t } = useTranslation();\r\n\r\n const { control, handleSubmit, reset, trigger } = useForm<any>({\r\n mode: 'all',\r\n resolver: yupResolver(brandValidationSchema),\r\n defaultValues: {\r\n brand_data: {\r\n name: '',\r\n }\r\n }\r\n });\r\n\r\n const handleModalClose = () => {\r\n reset({ brand_data: { name: '' } });\r\n setIsOpen();\r\n };\r\n\r\n const onSubmit = async (values: IFormValues) => {\r\n const isValid = await trigger();\r\n if (!isValid) return;\r\n await onSave(values?.brand_data as any);\r\n handleModalClose();\r\n };\r\n\r\n return (\r\n <Modal\r\n open={isOpen}\r\n onClose={handleModalClose}\r\n maxWidth='sm'\r\n fullWidth\r\n {...modalProps}\r\n >\r\n <>\r\n <form onSubmit={handleSubmit(onSubmit)}>\r\n {isLoading && <ModalLoader />}\r\n <DialogTitle className='brandAddModal--DialogTitle'>\r\n <Typography type='s3' color='inherit' weight='medium'>\r\n {t(\"inventory.item.brandModal.title\")}\r\n </Typography>\r\n <IconButton onClick={handleModalClose}>\r\n <Close fontSize='small' />\r\n </IconButton>\r\n </DialogTitle>\r\n <DialogContent className='brandAddModal--DialogContents'>\r\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\r\n <Grid item sm={12}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t(\"inventory.item.brandModal.brand_name_label\")}\r\n name='name'\r\n fieldArrayName='brand_data'\r\n placeholder={t(\"inventory.item.brandModal.brand_name_placeholder\")}\r\n required\r\n />\r\n </Grid>\r\n </Grid>\r\n </DialogContent>\r\n <DialogActions className='brandAddModal--DialogAction'>\r\n <span></span>\r\n <Box display='flex' gap={1.5}>\r\n <Button\r\n className='brandAddModal--DialogAction--WhiteBtn'\r\n onClick={handleModalClose}\r\n >\r\n {t(\"common.cancel\")}\r\n </Button>\r\n <Button type='button' onClick={handleSubmit(onSubmit)}>{t(\"common.save\")}</Button>\r\n </Box>\r\n </DialogActions>\r\n </form>\r\n </>\r\n </Modal>\r\n );\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport React from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport * as Yup from 'yup';\r\nimport {\r\n Box,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n Grid,\r\n IconButton\r\n} from '@mui/material';\r\nimport Close from '@mui/icons-material/Close';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport Modal from './modal/modal';\r\nimport Typography from './typography/typography';\r\nimport Button from './button/button';\r\nimport ModalLoader from './loaders/modal-loader';\r\nimport { DynamicInput, IModalComponentProps } from './form-control';\r\n\r\ninterface IFormValues {\r\n category_data: {\r\n category_name: string;\r\n };\r\n}\r\n\r\nconst categoryValidationSchema = Yup.object().shape({\r\n category_data: Yup.object().shape({\r\n category_name: Yup.string().required('Category Name is required'),\r\n })\r\n});\r\n\r\nexport const CategoryAddModal: React.FC<IModalComponentProps> = ({\r\n isOpen,\r\n setIsOpen,\r\n onSave,\r\n isLoading,\r\n modalProps,\r\n}) => {\r\n const { t } = useTranslation();\r\n\r\n const { control, handleSubmit, reset, trigger } = useForm<any>({\r\n mode: 'all',\r\n resolver: yupResolver(categoryValidationSchema),\r\n defaultValues: {\r\n category_data: {\r\n category_name: '',\r\n }\r\n }\r\n });\r\n\r\n const handleModalClose = () => {\r\n reset({ category_data: { category_name: '' } });\r\n setIsOpen();\r\n };\r\n\r\n const onSubmit = async (values: IFormValues) => {\r\n const isValid = await trigger();\r\n if (!isValid) return;\r\n await onSave({\r\n category_data: {\r\n category_name: values.category_data.category_name,\r\n sku_prefix : values.category_data.sku_prefix,\r\n unique_items : values.category_data.unique_items,\r\n status: true,\r\n },\r\n attribute_data: [],\r\n } as any);\r\n handleModalClose();\r\n };\r\n\r\n return (\r\n <Modal\r\n open={isOpen}\r\n onClose={handleModalClose}\r\n maxWidth='sm'\r\n fullWidth\r\n {...modalProps}\r\n >\r\n <>\r\n <form onSubmit={handleSubmit(onSubmit)}>\r\n {isLoading && <ModalLoader />}\r\n <DialogTitle className='categoryAddModal--DialogTitle'>\r\n <Typography type='s3' color='inherit' weight='medium'>\r\n {t(\"inventory.item.categoryModal.title\")}\r\n </Typography>\r\n <IconButton onClick={handleModalClose}>\r\n <Close fontSize='small' />\r\n </IconButton>\r\n </DialogTitle>\r\n <DialogContent className='categoryAddModal--DialogContents'>\r\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\r\n <Grid item sm={12}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t(\"inventory.item.categoryModal.category_name_label\")}\r\n name='category_name'\r\n fieldArrayName='category_data'\r\n placeholder={t(\"inventory.item.categoryModal.category_name_placeholder\")}\r\n required\r\n />\r\n </Grid> \r\n <Grid item sm={12}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t(\"inventory.item.categoryModal.sku_prefix_label\")}\r\n name='sku_prefix'\r\n fieldArrayName='category_data'\r\n placeholder={t(\"inventory.item.categoryModal.sku_prefix_placeholder\")}\r\n />\r\n </Grid> \r\n\r\n <Grid item sm={12}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t(\"inventory.item.categoryModal.unique_items_label\")}\r\n name='unique_items'\r\n fieldArrayName='category_data'\r\n placeholder={t(\"inventory.item.categoryModal.unique_items_placeholder\")}\r\n />\r\n </Grid> \r\n </Grid>\r\n </DialogContent>\r\n <DialogActions className='categoryAddModal--DialogAction'>\r\n <span></span>\r\n <Box display='flex' gap={1.5}>\r\n <Button\r\n className='categoryAddModal--DialogAction--WhiteBtn'\r\n onClick={handleModalClose}\r\n >\r\n {t(\"common.cancel\")}\r\n </Button>\r\n <Button type='button' onClick={handleSubmit(onSubmit)}>{t(\"common.save\")}</Button>\r\n </Box>\r\n </DialogActions>\r\n </form>\r\n </>\r\n </Modal>\r\n );\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport React from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport * as Yup from 'yup';\r\nimport {\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n Grid,\r\n IconButton\r\n} from '@mui/material';\r\nimport Close from '@mui/icons-material/Close';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport Modal from './modal/modal';\r\nimport Typography from './typography/typography';\r\nimport Button from './button/button';\r\nimport ModalLoader from './loaders/modal-loader';\r\nimport { DynamicInput, IModalComponentProps } from './form-control';\r\n\r\ninterface IndustryFormValues {\r\n\tindustry: {\r\n\t\tname: string;\r\n\t};\r\n}\r\n\r\ninterface IndustryAddModalProps extends IModalComponentProps {\r\n\ttype?: string;\r\n}\r\n\r\nexport const IndustryAddModal: React.FC<IndustryAddModalProps> = ({\r\n\tisOpen,\r\n\tsetIsOpen,\r\n\tonSave,\r\n\tisLoading,\r\n\tmodalProps,\r\n}) => {\r\n\tconst { t } = useTranslation();\r\n\r\n\tconst validationSchema = Yup.object().shape({\r\n\t\tindustry: Yup.object().shape({\r\n\t\t\tname: Yup.string()\r\n\t\t\t\t.required('Industry name is required')\r\n\t\t\t\t.max(255, 'Industry name must be at most 255 characters'),\r\n\t\t}),\r\n\t});\r\n\r\n\tconst { control, handleSubmit, reset } = useForm<IndustryFormValues>({\r\n\t\tresolver: yupResolver(validationSchema),\r\n\t\tmode: 'all',\r\n\t\tdefaultValues: {\r\n\t\t\tindustry: {\r\n\t\t\t\tname: '',\r\n\t\t\t},\r\n\t\t},\r\n\t});\r\n\r\n\tconst handleClose = () => {\r\n\t\treset({\r\n\t\t\tindustry: {\r\n\t\t\t\tname: '',\r\n\t\t\t},\r\n\t\t});\r\n\t\tsetIsOpen(false);\r\n\t};\r\n\r\n\tconst handleFormSubmit = (event?: React.BaseSyntheticEvent) => {\r\n\t\tevent?.preventDefault();\r\n\t\tevent?.stopPropagation();\r\n\r\n\t\treturn handleSubmit(onSubmit)(event);\r\n\t};\r\n\r\n\tconst onSubmit = async (data: IndustryFormValues) => {\r\n\t\ttry {\r\n\t\t\tawait onSave(data.industry as any);\r\n\t\t\thandleClose();\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error('❌ ~ Error saving industry:', error);\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t<Modal\r\n\t\t\topen={isOpen}\r\n\t\t\tonClose={handleClose}\r\n\t\t\tmaxWidth={modalProps?.maxWidth || 'sm'}\r\n\t\t\tfullWidth={modalProps?.fullWidth || true}\r\n\t\t\tclassName=\"industry-add-modal\"\r\n\t\t>\r\n\t\t\t<DialogTitle>\r\n\t\t\t\t<Typography type=\"h5\" weight=\"medium\" color=\"theme.secondary.1000\">\r\n\t\t\t\t\t{t('crm.leads.fields.create_industry_label', 'Create New Industry')}\r\n\t\t\t\t</Typography>\r\n\t\t\t\t<IconButton onClick={handleClose}>\r\n\t\t\t\t\t<Close fontSize='small' />\r\n\t\t\t\t</IconButton>\r\n\t\t\t</DialogTitle>\r\n\r\n\t\t\t<form onSubmit={handleFormSubmit}>\r\n\t\t\t\t<DialogContent>\r\n\t\t\t\t\t{isLoading ? (\r\n\t\t\t\t\t\t<ModalLoader />\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t<Grid container spacing={3}>\r\n\t\t\t\t\t\t\t<Grid item xs={12}>\r\n\t\t\t\t\t\t\t\t<DynamicInput\r\n\t\t\t\t\t\t\t\t\tlabel={t('crm.leads.fields.industry_name_label', 'Industry Name')}\r\n\t\t\t\t\t\t\t\t\tname=\"name\"\r\n\t\t\t\t\t\t\t\t\tplaceholder={t('crm.leads.fields.industry_name_placeholder', 'Enter Industry Name')}\r\n\t\t\t\t\t\t\t\t\tfieldArrayName=\"industry\"\r\n\t\t\t\t\t\t\t\t\tformControl={control}\r\n\t\t\t\t\t\t\t\t\trequired\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t</Grid>\r\n\t\t\t\t\t\t</Grid>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</DialogContent>\r\n\r\n\t\t\t\t<DialogActions>\r\n\t\t\t\t\t<Button\r\n\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\tvariant=\"outlined\"\r\n\t\t\t\t\t\tonClick={handleClose}\r\n\t\t\t\t\t\tdisabled={isLoading}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{t('common.cancel', 'Cancel')}\r\n\t\t\t\t\t</Button>\r\n\t\t\t\t\t<Button\r\n\t\t\t\t\t\ttype=\"submit\"\r\n\t\t\t\t\t\tvariant=\"contained\"\r\n\t\t\t\t\t\tdisabled={isLoading}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{t('common.save', 'Save')}\r\n\t\t\t\t\t</Button>\r\n\t\t\t\t</DialogActions>\r\n\t\t\t</form>\r\n\t\t</Modal>\r\n\t);\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport React, { useState } from 'react';\r\nimport {\r\n\tBox,\r\n\tDialogActions,\r\n\tDialogContent,\r\n\tDialogTitle,\r\n\tGrid,\r\n\tIconButton,\r\n} from '@mui/material';\r\nimport Close from '@mui/icons-material/Close';\r\nimport { useForm } from 'react-hook-form';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport * as Yup from 'yup';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport Button from '../button/button';\r\nimport { DynamicInput } from '../form-control';\r\nimport Modal from '../modal/modal';\r\nimport ModalLoader from '../loaders/modal-loader';\r\nimport Typography from '../typography/typography';\r\n\r\ninterface SourceTypeAddModalProps {\r\n\tisOpen: boolean;\r\n\tsetIsOpen: (isOpen?: boolean) => void;\r\n\tisLoading?: boolean;\r\n\tonSave: (data: any) => Promise<void> | void;\r\n\tmodalProps?: any;\r\n}\r\n\r\ninterface SourceTypeFormValues {\r\n\tsource_type: {\r\n\t\tname: string;\r\n\t\tdescription: string;\r\n\t};\r\n}\r\n\r\nconst validationSchema = Yup.object().shape({\r\n\tsource_type: Yup.object().shape({\r\n\t\tname: Yup.string()\r\n\t\t\t.trim()\r\n\t\t\t.required('common.source_type.source_type_name_required')\r\n\t\t\t.max(255, 'common.source_type.source_type_name_max'),\r\n\t\tdescription: Yup.string()\r\n\t\t\t.nullable()\r\n\t\t\t.max(1000, 'common.source_type.description_max'),\r\n\t}),\r\n});\r\n\r\nconst defaultValues: SourceTypeFormValues = {\r\n\tsource_type: {\r\n\t\tname: '',\r\n\t\tdescription: '',\r\n\t},\r\n};\r\n\r\nconst SourceTypeAddModal: React.FC<SourceTypeAddModalProps> = ({\r\n\tisOpen,\r\n\tsetIsOpen,\r\n\tisLoading = false,\r\n\tonSave,\r\n\tmodalProps,\r\n}) => {\r\n\tconst { t } = useTranslation();\r\n\tconst [isSubmitting, setIsSubmitting] = useState(false);\r\n\r\n\tconst { control, handleSubmit, reset } = useForm<SourceTypeFormValues>({\r\n\t\tmode: 'all',\r\n\t\tresolver: yupResolver(validationSchema),\r\n\t\tdefaultValues,\r\n\t});\r\n\r\n\tconst handleClose = () => {\r\n\t\treset(defaultValues);\r\n\t\tsetIsOpen(false);\r\n\t};\r\n\r\n\tconst onSubmit = async (values: SourceTypeFormValues) => {\r\n\t\tsetIsSubmitting(true);\r\n\t\ttry {\r\n\t\t\tawait onSave({\r\n\t\t\t\t...values.source_type,\r\n\t\t\t\tdescription: values.source_type.description?.trim() || null,\r\n\t\t\t});\r\n\t\t\thandleClose();\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(t('common.source_type.error_creating_source_type'), error);\r\n\t\t} finally {\r\n\t\t\tsetIsSubmitting(false);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleSubmitForm = (e: React.FormEvent<HTMLFormElement>) => {\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\t\thandleSubmit(onSubmit)(e);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<Modal\r\n\t\t\topen={isOpen}\r\n\t\t\tonClose={handleClose}\r\n\t\t\tmaxWidth={modalProps?.maxWidth || 'sm'}\r\n\t\t\tfullWidth={modalProps?.fullWidth ?? true}\r\n\t\t\t{...modalProps}\r\n\t\t>\r\n\t\t\t<form onSubmit={handleSubmitForm}>\r\n\t\t\t\t{(isSubmitting || isLoading) && <ModalLoader />}\r\n\t\t\t\t<DialogTitle className=\"brandAddModal--DialogTitle\">\r\n\t\t\t\t\t<Typography type=\"s3\" color=\"inherit\" weight=\"medium\">\r\n\t\t\t\t\t\t{t('common.source_type.create_new_source_type')}\r\n\t\t\t\t\t</Typography>\r\n\t\t\t\t\t<IconButton onClick={(e) => {\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\thandleClose();\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\t\t<Close fontSize=\"small\" />\r\n\t\t\t\t\t</IconButton>\r\n\t\t\t\t</DialogTitle>\r\n\t\t\t\t<DialogContent dividers>\r\n\t\t\t\t\t<Grid container spacing={2}>\r\n\t\t\t\t\t\t<Grid item xs={12}>\r\n\t\t\t\t\t\t\t<DynamicInput\r\n\t\t\t\t\t\t\t\tlabel={t('common.source_type.source_type_name')}\r\n\t\t\t\t\t\t\t\tname=\"name\"\r\n\t\t\t\t\t\t\t\tfieldArrayName=\"source_type\"\r\n\t\t\t\t\t\t\t\tplaceholder={t('common.source_type.enter_source_type_name')}\r\n\t\t\t\t\t\t\t\tformControl={control}\r\n\t\t\t\t\t\t\t\trequired\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</Grid>\r\n\t\t\t\t\t\t<Grid item xs={12}>\r\n\t\t\t\t\t\t\t<DynamicInput\r\n\t\t\t\t\t\t\t\tlabel={t('common.source_type.description')}\r\n\t\t\t\t\t\t\t\tname=\"description\"\r\n\t\t\t\t\t\t\t\tfieldArrayName=\"source_type\"\r\n\t\t\t\t\t\t\t\tplaceholder={t('common.source_type.enter_description_optional')}\r\n\t\t\t\t\t\t\t\tformControl={control}\r\n\t\t\t\t\t\t\t\tis_multiline\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</Grid>\r\n\t\t\t\t\t</Grid>\r\n\t\t\t\t</DialogContent>\r\n\t\t\t\t<DialogActions>\r\n\t\t\t\t\t<Box display=\"flex\" gap={1.5} width=\"100%\" justifyContent=\"flex-end\">\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant=\"outlined\"\r\n\t\t\t\t\t\t\tonClick={(e) => {\r\n\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t\thandleClose();\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tdisabled={isSubmitting || isLoading}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{t('common.cancel')}\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant=\"contained\"\r\n\t\t\t\t\t\t\ttype=\"submit\"\r\n\t\t\t\t\t\t\tonClick={(e) => e.stopPropagation()}\r\n\t\t\t\t\t\t\tloading={isSubmitting || isLoading}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{t('common.source_type.create_source_type')}\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</DialogActions>\r\n\t\t\t</form>\r\n\t\t</Modal>\r\n\t);\r\n};\r\n\r\nexport { SourceTypeAddModal };\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport React from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport * as Yup from 'yup';\r\nimport {\r\n Box,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n Grid,\r\n IconButton\r\n} from '@mui/material';\r\nimport Close from '@mui/icons-material/Close';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport Modal from './modal/modal';\r\nimport Typography from './typography/typography';\r\nimport Button from './button/button';\r\nimport ModalLoader from './loaders/modal-loader';\r\nimport { DynamicInput, IModalComponentProps } from './form-control';\r\nimport DynamicCheckBox from './form-control/form-builder/form-builder-element/checkbox';\r\n\r\ninterface IFormValues {\r\n journal_type_data: {\r\n name: string;\r\n is_payment: boolean;\r\n };\r\n}\r\n\r\nconst journalTypeValidationSchema = Yup.object().shape({\r\n journal_type_data: Yup.object().shape({\r\n name: Yup.string()\r\n .required('Name is required')\r\n .max(100, 'Name must be at most 100 characters'),\r\n is_payment: Yup.boolean()\r\n })\r\n});\r\n\r\nexport const JournalTypeAddModal: React.FC<IModalComponentProps> = ({\r\n isOpen,\r\n setIsOpen,\r\n onSave,\r\n isLoading,\r\n modalProps,\r\n}) => {\r\n const { t } = useTranslation();\r\n\r\n const { control, handleSubmit, reset, trigger } = useForm<any>({\r\n mode: 'all',\r\n resolver: yupResolver(journalTypeValidationSchema),\r\n defaultValues: {\r\n journal_type_data: {\r\n name: '',\r\n is_payment: false\r\n }\r\n }\r\n });\r\n\r\n const handleModalClose = () => {\r\n reset({ \r\n journal_type_data: { \r\n name: '', \r\n is_payment: false \r\n } \r\n });\r\n setIsOpen();\r\n };\r\n\r\n const onSubmit = async (values: IFormValues) => {\r\n const isValid = await trigger();\r\n if (!isValid) return;\r\n await onSave(values?.journal_type_data as any);\r\n handleModalClose();\r\n };\r\n\r\n return (\r\n <Modal\r\n open={isOpen}\r\n onClose={handleModalClose}\r\n maxWidth='sm'\r\n fullWidth\r\n {...modalProps}\r\n >\r\n <>\r\n <form onSubmit={handleSubmit(onSubmit)}>\r\n {isLoading && <ModalLoader />}\r\n <DialogTitle className='journalTypeAddModal--DialogTitle'>\r\n <Typography type='s3' color='inherit' weight='medium'>\r\n {t(\"accounting.journalType.addModal.title\", \"Create New Journal Type\")}\r\n </Typography>\r\n <IconButton onClick={handleModalClose}>\r\n <Close fontSize='small' />\r\n </IconButton>\r\n </DialogTitle>\r\n <DialogContent className='journalTypeAddModal--DialogContents'>\r\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\r\n <Grid item sm={12}>\r\n <DynamicInput\r\n type='text'\r\n formControl={control}\r\n label={t(\"accounting.journalType.form.name_label\", \"Name\")}\r\n name='name'\r\n fieldArrayName='journal_type_data'\r\n placeholder={t(\"accounting.journalType.form.name_placeholder\", \"Enter journal type name\")}\r\n required\r\n />\r\n </Grid>\r\n <Grid item sm={12}>\r\n <DynamicCheckBox\r\n formControl={control}\r\n label={t(\"accounting.journalType.form.is_payment_label\", \"Is Payment\")}\r\n name='is_payment'\r\n fieldArrayName='journal_type_data'\r\n title={t(\"accounting.journalType.form.is_payment_label\", \"Is Payment\")}\r\n />\r\n </Grid>\r\n </Grid>\r\n </DialogContent>\r\n <DialogActions className='journalTypeAddModal--DialogAction'>\r\n <span></span>\r\n <Box display='flex' gap={1.5}>\r\n <Button\r\n className='journalTypeAddModal--DialogAction--WhiteBtn'\r\n onClick={handleModalClose}\r\n >\r\n {t(\"common.cancel\", \"Cancel\")}\r\n </Button>\r\n <Button type='button' onClick={handleSubmit(onSubmit)}>\r\n {t(\"common.save\", \"Save\")}\r\n </Button>\r\n </Box>\r\n </DialogActions>\r\n </form>\r\n </>\r\n </Modal>\r\n );\r\n};\r\n","import { getErrorMessage, getToken } from '../../../../utils/common';\r\nimport { postV1WarehouseLocation, postV1InventoryFixedAssetItems, postV1CategoryItems, postV1Brand } from '../../../../api-client/api.inventory/api';\r\nimport { PostV1WarehouseLocationRequest } from '../../../../api-client/api.inventory/api-types';\r\nimport { enqueueSnackbar } from 'notistack';\r\nimport { postV1Parties, postV1PartiesIndustry, postV1JournalTypes } from '../../../../api-client/api.accounting/api';\r\nimport { postV1Teams, postV1Designation, postV1Departments, postV1DepartmentsTeams } from '../../../../api-client/api.hrms/api';\r\nimport { postV1SourceTypes } from '../../../../api-client/api.sales/api';\r\nimport { CustomerVendorModal } from '@/components/parties-modal';\r\nimport { TeamAddModal } from '../../../team-add-modal';\r\nimport { DepartmentAddModal } from '@/components/department-add-modal';\r\nimport { LocationAddModal } from './location-add-modal';\r\nimport { DesignationAddModal } from '@/components/designation-add-modal';\r\nimport { FixedAssetItemAddModal } from './fixed-asset-item-add-modal';\r\nimport { DialogProps } from '@mui/material';\r\nimport { BrandAddModal } from '@/components/brand-add-modal';\r\nimport { CategoryAddModal } from '@/components/category-add-modal';\r\nimport { IndustryAddModal } from '@/components/industry-add-modal';\r\nimport { SourceTypeAddModal } from '@/components/source-type-add-modal/source-type-add-modal';\r\nimport { JournalTypeAddModal } from '@/components/journal-type-add-modal';\r\n\r\nexport const createApiThunk = async (api: (payload: any) => Promise<any>, payload: any) => {\r\n\ttry {\r\n\t\treturn await api({ ...payload, ...getToken() })\r\n\t} catch (error) {\r\n\t\tenqueueSnackbar(getErrorMessage(error?.message), { variant: 'error' });\r\n\t\tthrow error;\r\n\t}\r\n}\r\n\r\nexport interface IAddConfig {\r\n\tapi: (payload: any) => Promise<any>;\r\n\tcomponent: any;\r\n}\r\n\r\nexport interface IModalComponentProps {\r\n\tisOpen: boolean;\r\n\tsetIsOpen: () => void;\r\n\tmodalProps?: DialogProps;\r\n\tonSave: (data: string) => void;\r\n\tisLoading?: boolean;\r\n}\r\n\r\nconst addMapper: Record<string, IAddConfig> = {\r\n\tlocation: {\r\n\t\tapi: (payload: PostV1WarehouseLocationRequest) => createApiThunk(postV1WarehouseLocation, payload),\r\n\t\tcomponent: LocationAddModal,\r\n\t},\r\n\tparty: {\r\n\t\tapi: (payload: any) => createApiThunk(postV1Parties, payload),\r\n\t\tcomponent: CustomerVendorModal,\r\n\t},\r\n\tdepartment: {\r\n\t\tapi: (payload: any) => createApiThunk(postV1Departments, payload),\r\n\t\tcomponent: DepartmentAddModal,\r\n\t},\r\n\tteam: {\r\n\t\tapi: (payload: any) => createApiThunk(postV1DepartmentsTeams, payload),\r\n\t\tcomponent: TeamAddModal,\r\n\t},\r\n\tdesignation: {\r\n\t\tapi: (payload: any) => createApiThunk(postV1Designation, payload),\r\n\t\tcomponent: DesignationAddModal,\r\n\t},\r\n\tfixedAssetItem: {\r\n\t\tapi: (payload: any) => createApiThunk(postV1InventoryFixedAssetItems, payload),\r\n\t\tcomponent: FixedAssetItemAddModal,\r\n\t},\r\n\tbrand: {\r\n\t\tapi: (payload: any) => createApiThunk(postV1Brand, payload),\r\n\t\tcomponent: BrandAddModal,\r\n\t},\r\n\tcategory: {\r\n\t\tapi: (payload: any) => createApiThunk(postV1CategoryItems, payload),\r\n\t\tcomponent: CategoryAddModal,\r\n\t},\r\n\tindustry: {\r\n\t\tapi: (payload: any) => createApiThunk(postV1PartiesIndustry, payload),\r\n\t\tcomponent: IndustryAddModal,\r\n\t},\r\n\tsourceType: {\r\n\t\tapi: (payload: any) => createApiThunk(postV1SourceTypes, payload),\r\n\t\tcomponent: SourceTypeAddModal,\r\n\t},\r\n\tjournalType: {\r\n\t\tapi: (payload: any) => createApiThunk(postV1JournalTypes, payload),\r\n\t\tcomponent: JournalTypeAddModal,\r\n\t},\r\n\tjournal_type: {\r\n\t\tapi: (payload: any) => createApiThunk(postV1JournalTypes, payload),\r\n\t\tcomponent: JournalTypeAddModal,\r\n\t},\r\n};\r\n\r\nexport const dynamicSelectAdd = (addType: string): IAddConfig | null => {\r\n\tconst config = addMapper[addType];\r\n\r\n\tif (!config) {\r\n\t\tconsole.warn(`No configuration found for addType: ${addType}`);\r\n\t\treturn null;\r\n\t}\r\n\r\n\treturn {\r\n\t\t...config\r\n\t};\r\n};\r\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\r\nimport {\r\n Box,\r\n CircularProgress,\r\n Divider,\r\n IconButton,\r\n InputAdornment,\r\n MenuItem,\r\n OutlinedInput,\r\n} from \"@mui/material\";\r\nimport Select from \"./select/select\";\r\nimport Checkbox from \"./checkbox/checkbox\";\r\nimport Typography from \"./typography/typography\";\r\nimport { Close } from \"./icons\";\r\nimport { debounce, sortBy } from \"lodash\";\r\nimport { fetchApi } from \"../utils/api\";\r\nimport ChipOrPlaceholder from \"./form-control/form-builder/form-builder-element/chip-or-placeholder\";\r\nimport { Add } from \"@mui/icons-material\";\r\nimport { useLanguage } from \"../hooks/useLangauge\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { dynamicSelectAdd } from \"./form-control/form-builder/form-builder-element/select-configuration\";\r\nimport { useAuth } from \"../hooks/useAuth\";\r\n\r\ninterface IOption {\r\n id: string | number;\r\n value: string | number;\r\n label: string | React.ReactNode;\r\n disabled?: boolean;\r\n isGroup?: boolean;\r\n options?: IOption[];\r\n searchLabel?: string;\r\n}\r\n\r\ninterface IPaginationState {\r\n page: number;\r\n hasMore: boolean;\r\n isLoadingMore: boolean;\r\n total: number;\r\n}\r\n\r\ninterface IMenuItems {\r\n options: IOption[];\r\n multiple: boolean;\r\n placeholder: string;\r\n with_checkboxes: boolean;\r\n values: string | string[];\r\n field: any;\r\n disabledIds: any[];\r\n handleClear: () => void;\r\n handleChange?: (value: string | string[]) => void;\r\n hasParent?: boolean;\r\n}\r\n\r\n// Custom API fetch function type for parent components\r\ninterface CustomFetchApiParams {\r\n search?: string;\r\n filters?: any;\r\n limit: number;\r\n skip: number;\r\n select?: string;\r\n order?: string;\r\n}\r\n\r\ninterface CustomFetchApiResponse {\r\n data: IOption[];\r\n pagination?: {\r\n totalCount: number;\r\n };\r\n}\r\n\r\ninterface SearchableSelectProps {\r\n labelId: string;\r\n label: string;\r\n value: any;\r\n onChange?: (event: any, selectedData?: any) => void;\r\n options: IOption[];\r\n multiple?: boolean;\r\n placeholder?: string;\r\n size?: \"small\" | \"medium\";\r\n searchPlaceholder?: string;\r\n CustomDropDownIcon: React.ReactNode;\r\n customStyle: any;\r\n name?: string;\r\n defaultValue?: any;\r\n apiType?: string;\r\n isInternal?: boolean;\r\n autoFocus?: any;\r\n error?: any;\r\n disabled: any;\r\n customeFilter?: string;\r\n attributes?: string;\r\n getSelectedData?: (row: any) => void;\r\n disabledIds: any[];\r\n labelKey?: string;\r\n valueKey?: string;\r\n inputStyle?: any;\r\n onChipRemove?: (value: string) => void;\r\n selectedLabel?: string;\r\n is_loading?: boolean;\r\n hasParent?: boolean;\r\n sortOrder?: string;\r\n handleChange?: (value: string | string[]) => void;\r\n enable_footer?: boolean;\r\n onFooterClick?: () => void;\r\n showCancelButton?: boolean;\r\n /** Custom API function to fetch options from parent component */\r\n customFetchApi?: (params: CustomFetchApiParams) => Promise<CustomFetchApiResponse>;\r\n addType?: string;\r\n isMergeOptions?: boolean;\r\n attributes?: string[];\r\n modalComponentProps?: any;\r\n}\r\n\r\nconst generateMenuItems = ({\r\n options,\r\n multiple,\r\n placeholder,\r\n with_checkboxes,\r\n values,\r\n field,\r\n disabledIds,\r\n handleClear,\r\n handleChange,\r\n hasParent = false,\r\n}: IMenuItems) => {\r\n const itemDisabled = (ls: any) => disabledIds?.includes(ls);\r\n const items: React.ReactElement[] = [];\r\n\r\n if (!multiple) {\r\n items.push(\r\n <MenuItem disabled value='' key=\"placeholder\" sx={{ opacity: `0 !important`, height: `0 !important`, p: `0 !important`, m: `0 !important` }}>\r\n <Typography type='s3' color='theme.secondary.1000'>\r\n <em>{placeholder}</em>\r\n </Typography>\r\n </MenuItem>\r\n );\r\n }\r\n\r\n const selectedValues = Array.isArray(values) ? values?.filter((value) => value) : [];\r\n\r\n // Parent selection handlers\r\n const handleParentChange = (parentValue: string, childOptions: IOption[]) => {\r\n const childValues = childOptions.map((child) => child.value);\r\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\r\n\r\n const isParentSelected = valueArray.includes(parentValue);\r\n const updatedValues = isParentSelected\r\n ? valueArray.filter((value) => value !== parentValue && !childValues.includes(value))\r\n : [...new Set([...valueArray, parentValue, ...childValues])];\r\n\r\n handleChange?.(updatedValues);\r\n };\r\n\r\n const isAllOptionsSelected = (parentValue: string, childOptions: IOption[]) => {\r\n const childValues = childOptions.map((child) => child.value);\r\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\r\n return childValues.every((childValue) => valueArray.includes(childValue));\r\n };\r\n\r\n const isSomeOptionsSelected = (childOptions: IOption[]) => {\r\n const childValues = childOptions.map((child) => child.value);\r\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\r\n return childValues.some((childValue) => valueArray.includes(childValue));\r\n };\r\n\r\n Array.isArray(options) && options?.length > 0 && options?.forEach((option, index) => {\r\n items.push(\r\n <MenuItem\r\n value={option?.value}\r\n key={`${option?.value}-${index}`}\r\n disabled={Boolean(option?.disabled) || itemDisabled(option?.value) || (hasParent && !multiple)}\r\n className={option?.isGroup ? 'select--MenuItemHeader' : ''}\r\n onClick={() => {\r\n if (values?.length == 1) {\r\n handleClear();\r\n }\r\n }}\r\n >\r\n <Box sx={{ display: 'flex', gap: 1 }}>\r\n {multiple && with_checkboxes && (\r\n <Checkbox\r\n checked={\r\n hasParent\r\n ? isAllOptionsSelected(option.value, option.options || [])\r\n : Boolean(Array.isArray(values) && values?.indexOf(option?.value) > -1)\r\n }\r\n indeterminate={\r\n hasParent && isSomeOptionsSelected(option.options || [])\r\n }\r\n onChange={() =>\r\n hasParent\r\n ? handleParentChange(option.value, option.options || [])\r\n : handleChange?.(option.value)\r\n }\r\n />\r\n )}\r\n <Typography\r\n type='s3'\r\n color='theme.secondary.1000'\r\n onClick={() => handleChange?.(option.value)}\r\n >\r\n {option?.label}\r\n </Typography>\r\n </Box>\r\n </MenuItem>\r\n );\r\n\r\n // Handle child options for grouped items\r\n if (option?.isGroup && Array.isArray(option?.options)) {\r\n option.options.forEach((opt, index) => {\r\n items.push(\r\n <MenuItem\r\n id={`${option.value}-${opt.value} ${index}`}\r\n value={opt.value}\r\n disabled={Boolean(opt.disabled) || itemDisabled(opt.value)}\r\n sx={{ pl: 5 }}\r\n onClick={() => {\r\n if (values?.length == 1) {\r\n handleClear();\r\n }\r\n }}\r\n key={`${option.value}-${opt.value} ${index}`}\r\n >\r\n <Box sx={{ display: 'flex', gap: 1 }}>\r\n {multiple && with_checkboxes && (\r\n <Checkbox\r\n checked={Boolean(Array.isArray(values) && values?.indexOf(opt.value) > -1)}\r\n />\r\n )}\r\n <Typography\r\n id={`${option.value}-${opt.value} ${index}`}\r\n type='s3'\r\n color='theme.secondary.1000'\r\n onClick={() => handleChange?.(String(opt.value))}\r\n >\r\n {opt.label == \"Payment Entries\" ? \"Payment and Collection Entries\" : opt.label || opt.value}\r\n </Typography>\r\n </Box>\r\n </MenuItem>\r\n );\r\n });\r\n }\r\n });\r\n\r\n // Footer item\r\n if (field.enable_footer || field.addType) {\r\n items.push(\r\n <Box key=\"footer\" sx={{ position: 'sticky', bottom: 0, background: '#fff', zIndex: 1 }}>\r\n <Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\r\n <MenuItem sx={{ gap: 1 }} onClick={() => {\r\n if (field.onFooterClick) {\r\n field.onFooterClick();\r\n } else if (field.handleModalOpen) {\r\n field.handleModalOpen();\r\n }\r\n }}>\r\n <Add fontSize='small' />\r\n <Typography type='s4' color='theme.secondary.1000'>\r\n Create New {field.label}\r\n </Typography>\r\n </MenuItem>\r\n </Box>\r\n );\r\n }\r\n\r\n // No data fallback\r\n if (!items.length || (items.length == 1 && !multiple)) {\r\n items.push(\r\n <MenuItem disabled key=\"no-data\">\r\n No data available\r\n </MenuItem>\r\n );\r\n }\r\n\r\n return items;\r\n};\r\n\r\nconst SearchableSelect: React.FC<SearchableSelectProps> = (props) => {\r\n const {\r\n labelId,\r\n label,\r\n value,\r\n onChange,\r\n options,\r\n multiple = false,\r\n size = \"small\",\r\n searchPlaceholder,\r\n placeholder,\r\n name,\r\n defaultValue,\r\n apiType,\r\n isInternal = false,\r\n autoFocus,\r\n error,\r\n disabled,\r\n customeFilter,\r\n attributes,\r\n getSelectedData,\r\n disabledIds,\r\n onChipRemove,\r\n selectedLabel,\r\n is_loading,\r\n customStyle = {},\r\n CustomDropDownIcon,\r\n labelKey,\r\n valueKey,\r\n inputStyle,\r\n hasParent = false,\r\n sortOrder = 'id:-1',\r\n handleChange,\r\n enable_footer = false,\r\n onFooterClick,\r\n showCancelButton = true,\r\n customFetchApi,\r\n addType,\r\n isMergeOptions = false,\r\n } = props;\r\n\r\n const [searchQuery, setSearchQuery] = useState(\"\");\r\n const [loading, setLoading] = useState<boolean>(false);\r\n const [dynamicOptions, setOptions] = useState<IOption[]>([]);\r\n const [selectedOptions, setSelectedOptions] = useState<IOption[]>([]);\r\n const [isAlreadyLoaded, setIsAlreadyLoaded] = useState(false);\r\n const [initailLoading, setInitialLoading] = useState(false);\r\n const [searchInitiate, setSearchInitiate] = useState(false);\r\n const [open, setOpen] = useState(false);\r\n const [prevFilter, setPrevFilter] = useState<any>(null);\r\n const [addConfig, setAddConfig] = useState<any>(null);\r\n const [isModalOpen, setIsModalOpen] = useState<boolean>(false);\r\n const [isAddLoading, setIsAddLoading] = useState<boolean>(false);\r\n const { t } = useTranslation();\r\n\r\n // Pagination state\r\n const [pagination, setPagination] = useState<IPaginationState>({\r\n page: 1,\r\n hasMore: true,\r\n isLoadingMore: false,\r\n total: 0\r\n });\r\n\r\n const { isRtl } = useLanguage();\r\n const limit = 25;\r\n\r\n const isInternalOptions = useMemo(() => {\r\n if (isMergeOptions && (apiType || customFetchApi)) return false;\r\n return isInternal || (!apiType && !customFetchApi);\r\n }, [isInternal, apiType, customFetchApi, isMergeOptions]);\r\n\r\n // Local search function for internal options\r\n const searchOptionsLocally = useCallback((searchTerm: string, value: any): IOption[] => {\r\n const currentOptions: IOption[] = (options && options.length > 0) ? options : [];\r\n if (!searchTerm) return currentOptions;\r\n\r\n const lowercasedSearchTerm = searchTerm.toLowerCase();\r\n\r\n const filteredOptions = hasParent\r\n ? options?.reduce((acc: IOption[], opt) => {\r\n const searchedOptions = opt.options?.filter((item) => {\r\n const label = React.isValidElement(item.label) ? item.searchLabel : String(item.label);\r\n return label?.toLowerCase().includes(lowercasedSearchTerm);\r\n });\r\n\r\n if (searchedOptions?.length) {\r\n acc.push({ ...opt, options: searchedOptions });\r\n }\r\n\r\n return acc;\r\n }, []) || []\r\n : options?.filter((opt) => {\r\n const label = React.isValidElement(opt.label) ? opt.searchLabel : String(opt.label);\r\n return label?.toLowerCase().includes(lowercasedSearchTerm);\r\n }) || [];\r\n\r\n return sortBySelectedValues(filteredOptions, value);\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [options, hasParent]);\r\n\r\n // Clear Selected Options\r\n const handleClear = () => {\r\n onChange?.({ target: { value: multiple ? [] : null } });\r\n if (getSelectedData && typeof getSelectedData === \"function\") {\r\n getSelectedData(null);\r\n }\r\n };\r\n\r\n // Get unique options\r\n const getUniqueOptions = useCallback((data: IOption[]): IOption[] => {\r\n const uniqueOptions = [\r\n ...new Map(data?.map(item => [item.value, item])).values()\r\n ];\r\n return uniqueOptions;\r\n }, []);\r\n\r\n // Sort by selected values\r\n const sortBySelectedValues = useCallback((arrayToSort: IOption[], value: any): IOption[] => {\r\n const selectedValues = Array.isArray(value) ? value : [value];\r\n const sortedValue = sortBy(arrayToSort, (item) => {\r\n const index = selectedValues.indexOf(item.id || item.value);\r\n return index === -1 ? Infinity : index;\r\n });\r\n return sortedValue;\r\n }, []);\r\n\r\n // Options with search and pagination support\r\n const filteredOptions = useMemo(() => {\r\n if (isInternalOptions) {\r\n return searchOptionsLocally(searchQuery, value);\r\n }\r\n const apiOptions = sortBySelectedValues(getUniqueOptions([...dynamicOptions, ...selectedOptions]), value);\r\n if (isMergeOptions) {\r\n const localOptions = searchOptionsLocally(searchQuery, value);\r\n return getUniqueOptions([...localOptions, ...apiOptions]);\r\n }\r\n return apiOptions;\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [searchQuery, dynamicOptions, options, value, isInternalOptions, selectedOptions, searchOptionsLocally, sortBySelectedValues, getUniqueOptions, isMergeOptions]);\r\n\r\n // Handle scroll pagination\r\n const handleScroll = useCallback((event: React.UIEvent<HTMLDivElement>) => {\r\n const { scrollTop, scrollHeight, clientHeight } = event.currentTarget;\r\n const isBottom = scrollHeight - scrollTop <= clientHeight + 10;\r\n\r\n if (isBottom && pagination.hasMore && !pagination.isLoadingMore && !isInternalOptions) {\r\n const nextPage = pagination.page + 1;\r\n fetchOptions(searchQuery, customeFilter, nextPage, true);\r\n }\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [pagination.hasMore, pagination.isLoadingMore, pagination.page, isInternalOptions, searchQuery, JSON.stringify(customeFilter)]);\r\n\r\n // Update Options\r\n const updateOptions = useCallback((newOptions: IOption[], append = false) => {\r\n setOptions((prevOptions) => {\r\n const oldOptions = append ? prevOptions : selectedOptions;\r\n const uniqueOptions = getUniqueOptions([...oldOptions, ...newOptions]);\r\n return uniqueOptions;\r\n });\r\n }, [selectedOptions, getUniqueOptions]);\r\n\r\n // Fetch Options with pagination support\r\n const fetchOptions = useCallback(async (searchTerm: any = '', filters = customeFilter, page = 1, append = false) => {\r\n // Skip if neither apiType nor customFetchApi is provided\r\n if (!apiType && !customFetchApi) return [];\r\n\r\n setLoading(true);\r\n if (page > 1) {\r\n setPagination(prev => ({ ...prev, isLoadingMore: true }));\r\n }\r\n\r\n try {\r\n let data: IOption[] = [];\r\n let paginationResult: { totalCount?: number } = {};\r\n\r\n // Use custom API if provided, otherwise use default fetchApi\r\n if (customFetchApi) {\r\n const response = await customFetchApi({\r\n search: searchTerm,\r\n filters,\r\n limit,\r\n skip: (page - 1) * limit,\r\n select: attributes,\r\n order: sortOrder\r\n });\r\n data = response?.data || [];\r\n paginationResult = response?.pagination || {};\r\n } else {\r\n const response = await fetchApi({\r\n apiKey: apiType!,\r\n filters: {\r\n limit,\r\n skip: (page - 1) * limit,\r\n search: searchTerm,\r\n filters,\r\n select: attributes,\r\n order: sortOrder\r\n },\r\n labelKey,\r\n valueKey\r\n });\r\n data = response?.data || [];\r\n paginationResult = response?.pagination || {};\r\n }\r\n\r\n if (data && Array.isArray(data)) {\r\n updateOptions(data, append);\r\n\r\n // Update pagination\r\n setPagination(prev => ({\r\n ...prev,\r\n page,\r\n hasMore: (paginationResult?.totalCount || 0) > (page * limit),\r\n total: paginationResult?.totalCount || 0,\r\n isLoadingMore: false\r\n }));\r\n\r\n if (data?.length > 0) {\r\n setSelectedData();\r\n }\r\n }\r\n\r\n return data || [];\r\n } catch (error) {\r\n console.error('Error fetching options:', error);\r\n setPagination(prev => ({ ...prev, isLoadingMore: false }));\r\n return [];\r\n } finally {\r\n setLoading(false);\r\n }\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [apiType, customFetchApi, attributes, sortOrder, limit, updateOptions, dynamicOptions]);\r\n\r\n // Search Options with debounce\r\n const debounceSearch = useMemo(\r\n () => debounce(async (searchTerm: string) => {\r\n if (loading) return;\r\n\r\n if (!searchTerm && !isInternalOptions && searchInitiate) {\r\n setPagination({\r\n page: 1,\r\n hasMore: true,\r\n isLoadingMore: false,\r\n total: 0\r\n });\r\n await fetchOptions('', customeFilter, 1, false);\r\n }\r\n if (searchTerm?.length > 1 && !isInternalOptions) {\r\n setPagination({\r\n page: 1,\r\n hasMore: true,\r\n isLoadingMore: false,\r\n total: 0\r\n });\r\n await fetchOptions(searchTerm, customeFilter, 1, false);\r\n }\r\n }, 700),\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n [isInternalOptions, searchInitiate, JSON.stringify(customeFilter)]\r\n );\r\n\r\n // Initial fetch with filter change detection\r\n const initialFetch = useCallback(async () => {\r\n const condition = JSON.stringify(customeFilter) !== JSON.stringify(prevFilter);\r\n\r\n if (condition && !isInternalOptions && !isAlreadyLoaded) {\r\n setPrevFilter(customeFilter);\r\n setOptions([]);\r\n setIsAlreadyLoaded(false);\r\n setPagination({\r\n page: 1,\r\n hasMore: true,\r\n isLoadingMore: false,\r\n total: 0\r\n });\r\n }\r\n\r\n if (!isInternalOptions && !isAlreadyLoaded) {\r\n await fetchOptions(searchQuery, customeFilter, 1, false);\r\n setIsAlreadyLoaded(true);\r\n }\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [JSON.stringify(customeFilter), isInternalOptions, isAlreadyLoaded]);\r\n\r\n // Set Selected Data\r\n const setSelectedData = useCallback(() => {\r\n let hasOptions = false;\r\n const isInOptions = filteredOptions?.filter((i: any) =>\r\n multiple ? value?.includes(i?.value) : i?.value == value\r\n );\r\n\r\n if ((Array.isArray(isInOptions) && isInOptions?.length > 0)) {\r\n getSelectedData?.(multiple ? isInOptions : isInOptions[0]);\r\n hasOptions = true;\r\n }\r\n\r\n return hasOptions;\r\n }, [JSON.stringify(filteredOptions), value, multiple]);\r\n\r\n // Fetch Options for Selected Id\r\n const fetchIdOptions = useCallback(async () => {\r\n if (await setSelectedData()) return;\r\n if (open) return;\r\n\r\n const fValue = multiple ? value && value?.filter(v => Boolean(Number(v))) : value ? value : null;\r\n const condition = (multiple ? fValue?.length > 0 : fValue) && !isInternalOptions;\r\n\r\n if (condition) {\r\n setInitialLoading(true);\r\n await fetchOptions('', { ...customeFilter, ...{ '&id.in': fValue } }, 1, false);\r\n setInitialLoading(false);\r\n }\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [open, value, JSON.stringify(customeFilter)]);\r\n\r\n const hasValue = multiple\r\n ? Array.isArray(value) && value.length > 0\r\n : value !== null && value !== undefined && value !== \"\";\r\n\r\n // Effects\r\n useEffect(() => {\r\n if (open) {\r\n debounceSearch(searchQuery);\r\n }\r\n return () => debounceSearch.cancel();\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [searchQuery, JSON.stringify(customeFilter), open, isAlreadyLoaded, debounceSearch]);\r\n\r\n useEffect(() => {\r\n setSelectedData();\r\n }, [setSelectedData]);\r\n\r\n useEffect(() => {\r\n fetchIdOptions();\r\n }, [fetchIdOptions]);\r\n\r\n useEffect(() => {\r\n if (open) {\r\n initialFetch();\r\n }\r\n }, [open, initialFetch]);\r\n\r\n useEffect(() => {\r\n const condition = JSON.stringify(customeFilter) !== JSON.stringify(prevFilter);\r\n if (customeFilter && condition) {\r\n setIsAlreadyLoaded(false);\r\n }\r\n }, [customeFilter, prevFilter]);\r\n\r\n useEffect(() => {\r\n if (value && !open) {\r\n const currentOptions: IOption[] = (options && options.length > 0) ? options : [];\r\n const selectedData = currentOptions?.filter((i: any) =>\r\n multiple ? value?.includes(i?.value) : i?.value == value\r\n ) || [];\r\n setSelectedOptions(selectedData);\r\n }\r\n setSelectedOptions(filteredOptions?.filter((i: any) =>\r\n multiple ? value?.includes(i?.value) : i?.value == value\r\n ));\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [value, open, options, multiple]);\r\n\r\n const handleModalOpen = useCallback(() => {\r\n setIsModalOpen(true);\r\n }, []);\r\n\r\n // Handle modal save\r\n const handleModalSave = useCallback(async (payload: any) => {\r\n if (!addConfig || !addConfig.api) {\r\n console.error('Add configuration is not properly set');\r\n return;\r\n }\r\n\r\n setIsAddLoading(true);\r\n try {\r\n const result = await addConfig.api(payload);\r\n setIsAddLoading(false);\r\n setIsModalOpen(false);\r\n if (!isInternalOptions) {\r\n setPagination({\r\n page: 1,\r\n hasMore: true,\r\n isLoadingMore: false,\r\n total: 0\r\n });\r\n setIsAlreadyLoaded(false);\r\n await fetchOptions('', customeFilter, 1, false);\r\n }\r\n if (result && result.data) {\r\n const newValue = multiple\r\n ? [...(value || []), result.data.id]\r\n : result.data.id;\r\n }\r\n } catch (error) {\r\n console.log(\"error\", error);\r\n setIsAddLoading(false);\r\n }\r\n\r\n\r\n }, [addConfig, isInternalOptions, fetchOptions, customeFilter, multiple, name, value]);\r\n\r\n useEffect(() => {\r\n const config = dynamicSelectAdd(addType!);\r\n setAddConfig(config);\r\n }, [addType])\r\n\r\n const handleOnChange = (event: any) => {\r\n const { value } = event.target;\r\n if ((multiple && Array.isArray(value) && value?.filter(v => v).length == 0) || !value) return;\r\n\r\n const isSelected = (item: any) => {\r\n return multiple ? value?.includes(item?.value) : item?.value === value;\r\n };\r\n\r\n const selected = filteredOptions?.filter(isSelected);\r\n onChange?.(event, multiple ? selected : selected?.[0]);\r\n getSelectedData?.(multiple ? selected : selected?.[0]);\r\n\r\n };\r\n\r\n const removeUndefine = (selectOptions: any[]) => {\r\n return Array.isArray(selectOptions) && selectOptions?.length > 0 && selectOptions?.filter((option) => option);\r\n };\r\n\r\n const showGroupLabel = (item: any) => {\r\n if (!item?.length) {\r\n return undefined\r\n }\r\n const mergedOptions = item?.flatMap((i: any) => i?.options)\r\n return mergedOptions?.find((option: any) => option?.value === value)?.label\r\n }\r\n\r\n return (\r\n <Select\r\n labelId={labelId}\r\n name={name}\r\n defaultValue={defaultValue || (multiple ? [] : '')}\r\n placeholder={t(placeholder)}\r\n className=\"filter-select\"\r\n size={size}\r\n onOpen={() => setOpen(true)}\r\n onClose={() => {\r\n setOpen(false);\r\n if (searchQuery?.length > 0) {\r\n setIsAlreadyLoaded(false);\r\n }\r\n setSearchInitiate(false);\r\n setSearchQuery('');\r\n }}\r\n onChange={handleOnChange}\r\n showCancelButton={showCancelButton}\r\n multiple={multiple}\r\n label={t(label)}\r\n fullWidth\r\n displayEmpty\r\n autoFocus={autoFocus}\r\n error={Boolean(error)}\r\n disabled={disabled}\r\n value={initailLoading ? (multiple ? [] : '') : value?.id || value || (multiple ? [] : '')}\r\n searchPlaceholder={searchPlaceholder}\r\n CustomDropdownIcon={CustomDropDownIcon}\r\n sx={(multiple && value?.length) ? { ...customStyle, \"& .MuiSelect-select\": { padding: '5.5px !important' } } : customStyle}\r\n MenuProps={{\r\n PaperProps: {\r\n onScroll: handleScroll,\r\n style: { maxHeight: 295, maxWidth: 250 }\r\n }\r\n }}\r\n input={\r\n !disabled ? (\r\n <OutlinedInput\r\n label=\"\"\r\n sx={inputStyle}\r\n endAdornment={\r\n <InputAdornment position=\"end\">\r\n {loading || is_loading ? (\r\n <CircularProgress\r\n size={20}\r\n sx={{ mr: 3, color: \"#4AC08C\" }}\r\n />\r\n ) : (\r\n showCancelButton && hasValue && (\r\n <IconButton\r\n aria-label=\"clear selection\"\r\n onClick={handleClear}\r\n edge=\"end\"\r\n sx={isRtl ? { ml: 2.5 } : { mr: 1.5 }}\r\n size=\"small\"\r\n >\r\n <Close fontSize=\"small\" color='theme.primary.800' />\r\n </IconButton>\r\n )\r\n )}\r\n </InputAdornment>\r\n }\r\n />\r\n ) : undefined\r\n }\r\n renderValue={(selected?: string | string[]) => {\r\n return (\r\n <>\r\n {Array.isArray(selected) ? (\r\n <ChipOrPlaceholder\r\n selectedLabel={selectedLabel}\r\n data={removeUndefine(selected)}\r\n placeholder={placeholder}\r\n onDelete={onChipRemove}\r\n disabled={disabled}\r\n chipProps={{\r\n sx: {\r\n bgcolor: 'theme.primary.100',\r\n border: 0,\r\n // borderRadius: '15px',\r\n '& .MuiTypography-body1': {\r\n color: 'theme.primary.800',\r\n fontWeight: \"500\",\r\n }\r\n }\r\n }}\r\n />\r\n ) : (\r\n hasParent ? showGroupLabel(filteredOptions) :\r\n Array.isArray(filteredOptions) && filteredOptions?.length > 0 && filteredOptions?.find(\r\n (option: any) => option?.value == value\r\n )?.label || selected || placeholder\r\n )}\r\n </>\r\n );\r\n }}\r\n handleSearch={(text) => {\r\n setSearchQuery(text);\r\n setSearchInitiate(true);\r\n }}\r\n >\r\n {generateMenuItems({\r\n options: filteredOptions,\r\n multiple: Boolean(multiple),\r\n placeholder,\r\n values: value,\r\n with_checkboxes: true,\r\n field: {\r\n ...props,\r\n enable_footer,\r\n onFooterClick,\r\n label,\r\n handleModalOpen\r\n },\r\n disabledIds,\r\n handleClear,\r\n handleChange,\r\n hasParent,\r\n t: (key: string) => key\r\n })}\r\n {pagination.isLoadingMore && (\r\n <MenuItem disabled>\r\n <Box sx={{ display: 'flex', justifyContent: 'center', width: '100%' }}>\r\n <CircularProgress size={20} />\r\n </Box>\r\n </MenuItem>\r\n )}\r\n {/* Modal for adding new items */}\r\n {addConfig && addConfig.component && (\r\n <>\r\n {React.createElement(addConfig.component, {\r\n isOpen: isModalOpen,\r\n setIsOpen: setIsModalOpen,\r\n isLoading: isAddLoading,\r\n onSave: handleModalSave,\r\n modalProps: {\r\n maxWidth: 'md',\r\n fullWidth: true\r\n },\r\n ...props?.modalComponentProps\r\n })}\r\n </>\r\n )}\r\n </Select>\r\n );\r\n};\r\n\r\nexport default SearchableSelect;","import { useMemo, useCallback } from 'react';\r\nimport { Box } from '@mui/material';\r\nimport TextField from '../../text-field/text-field';\r\nimport { ValueEditorProps } from 'react-querybuilder';\r\nimport '../filter.scss';\r\nimport DatePicker from '../../date-picker/date-picker';\r\nimport dayjs from 'dayjs';\r\n\r\nimport SearchableSelect from '../../searchable-select';\r\nimport _ from 'lodash';\r\nimport { formatLabel } from '../../../utils/format-text';\r\nimport { getToken } from '@/utils';\r\nimport { getV1FilterFilterTable } from '../../../api-client/api.system-feature/api';\r\n\r\nconst getFilterTableFields = async (\r\n\ttableName: string,\r\n\tsearchText: string,\r\n\tlimit: number,\r\n\toffset: number = 0\r\n) => {\r\n\ttry {\r\n\t\tconst tokenObj = getToken();\r\n\t\tconst response = await getV1FilterFilterTable({\r\n\t\t\ttable: tableName,\r\n\t\t\tsearch: searchText,\r\n\t\t\tlimit: limit,\r\n\t\t\toffset: offset,\r\n\t\t\t'x-token': tokenObj['x-token'],\r\n\t\t\t'x-timezone': String(tokenObj['x-timezone'])\r\n\t\t});\r\n\r\n\t\t// response could be of several types, but use optional chaining and type narrowing\r\n\t\tif ('data' in response && response.data) {\r\n\t\t\tconst result: any[] = (response.data as any)?.result ?? [];\r\n\t\t\tconst totalCount: number = (response as any)?.pagination?.totalCount ?? result.length;\r\n\t\t\tconst items = result.map((r: any) => ({ label: r.name, value: r.id }));\r\n\t\t\treturn { items, totalCount };\r\n\t\t}\r\n\t\treturn { items: [], totalCount: 0 };\r\n\t} catch {\r\n\t\treturn { items: [], totalCount: 0 };\r\n\t}\r\n};\r\n\r\nconst ValueEditor = (props: ValueEditorProps) => {\r\n\t// eslint-disable-next-line\r\n\tlet { values, value, handleOnChange, fieldData, rule, ...rest } = props;\r\n\tconsole.log(\"🚀 ~ ValueEditor ~ values:\", values)\r\n\r\n\tif (!value && fieldData.inputType == 'select') {\r\n\t\tvalue = null;\r\n\t} else if (!Array.isArray(value) && fieldData.inputType == 'select') {\r\n\t\tvalue = [];\r\n\t}\r\n\r\n\tconst isDisabled = useMemo(() => {\r\n\t\treturn rule.operator === 'null' || rule.operator === 'notNull';\r\n\t}, [rule.operator]);\r\n\r\n\tconst customFetch = useCallback(\r\n\t\tasync (params: any) => {\r\n\t\t\tconst search = params?.search || '';\r\n\t\t\tconst limit = params?.limit || 25;\r\n\t\t\tconst offset = params?.skip || 0;\r\n\t\t\tif (fieldData.table) {\r\n\t\t\t\tconst data = await getFilterTableFields(fieldData.table, search, limit, offset);\r\n\t\t\t\tconst optionData = data.items.map((r: any) => ({ id: r.value, value: r.value, label: r.label }));\r\n\t\t\t\treturn { data: optionData, pagination: { totalCount: data.totalCount } };\r\n\t\t\t} else {\r\n\t\t\t\t// const searchedOptions =\r\n\t\t\t\t// \tvalues?.filter((opt) => opt.label?.toLowerCase().includes(search.toLowerCase())) ||\r\n\t\t\t\t// \t[];\r\n\t\t\t\tconst optionData = values?.map((item: any) => ({\r\n\t\t\t\t\t...item,\r\n\t\t\t\t\tvalue: item?.name,\r\n\t\t\t\t\tlabel: item.label ? formatLabel(item.label) : ''\r\n\t\t\t\t}));\r\n\t\t\t\treturn {\r\n\t\t\t\t\tdata: optionData,\r\n\t\t\t\t\tpagination: { totalCount: optionData.length }\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t},\r\n\t\t[fieldData.table, values]\r\n\t);\r\n\r\n\tconst renderOptions = () => {\r\n\t\tswitch (fieldData.inputType) {\r\n\t\t\tcase 'select':\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<SearchableSelect\r\n\t\t\t\t\t\tkey={fieldData.name}\r\n\t\t\t\t\t\tlabel=''\r\n\t\t\t\t\t\tname='insurance_account'\r\n\t\t\t\t\t\tplaceholder='Select'\r\n\t\t\t\t\t\tonChange={(e: any, selected: any) => {\r\n\t\t\t\t\t\t\tconsole.log(\"🚀 ~ renderOptions ~ selected:\", selected)\r\n\t\t\t\t\t\t\tconst mappedValue = selected?.map((i: any) => ({\r\n\t\t\t\t\t\t\t\t...i,\r\n\t\t\t\t\t\t\t\tname: i?.value\r\n\t\t\t\t\t\t\t}))\r\n\t\t\t\t\t\t\thandleOnChange(mappedValue)\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tvalue={value?.map(i => i?.value)}\r\n\t\t\t\t\t\tmultiple={true}\r\n\t\t\t\t\t\tcustomFetchApi={customFetch}\r\n\t\t\t\t\t\tdisabled={isDisabled}\r\n\t\t\t\t\t\tonChipRemove={() => handleOnChange([])}\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\t\t\tcase 'date':\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<DatePicker\r\n\t\t\t\t\t\tonChange={(val) =>\r\n\t\t\t\t\t\t\thandleOnChange(\r\n\t\t\t\t\t\t\t\tdayjs(val).isValid() ? dayjs(val).format('YYYY-MM-DD') : ''\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvalue={value ? dayjs(value) : null}\r\n\t\t\t\t\t\tdisabled={isDisabled}\r\n\t\t\t\t\t\tslotProps={{\r\n\t\t\t\t\t\t\ttextField: {\r\n\t\t\t\t\t\t\t\tplaceholder: 'YYYY-MM-DD',\r\n\t\t\t\t\t\t\t\tclassName: 'select-drps'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tformat='YYYY-MM-DD'\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\r\n\t\t\tdefault:\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<TextField\r\n\t\t\t\t\t\tvalue={value}\r\n\t\t\t\t\t\tonChange={(e: any) => {\r\n\t\t\t\t\t\t\thandleOnChange(e.target.value);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t{...rest}\r\n\t\t\t\t\t\tinputProps={{\r\n\t\t\t\t\t\t\tstyle: {\r\n\t\t\t\t\t\t\t\tfontSize: '0.8125rem'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tclassName='select-drps'\r\n\t\t\t\t\t\ttype={fieldData.inputType}\r\n\t\t\t\t\t\tdisabled={isDisabled}\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\t\t}\r\n\t};\r\n\r\n\treturn <Box width='100%'>{renderOptions()}</Box>;\r\n};\r\n\r\nexport { ValueEditor };\r\nexport default ValueEditor;\r\n","import { Box, MenuItem } from \"@mui/material\";\nimport Select from \"../../select/select\";\nimport Typography from \"../../typography/typography\";\nimport { OperatorSelectorProps } from \"react-querybuilder\";\nimport formatText from \"../../../utils/format-text\";\n\nconst OperatorSelect = (props: OperatorSelectorProps) => {\n const { handleOnChange, options, ...rest } = props;\n\n\n return (\n <Box width='100%'>\n <Select\n fullWidth\n {...rest}\n onChange={(e: any) => handleOnChange(e.target.value)}\n className=\"select-drps\"\n variant=\"outlined\"\n renderValue= {(selected: string) => {\n const dValue = options?.find(o => o.name==selected)?.label\n return dValue ? formatText(dValue) : selected\n }}\n >\n {options?.filter(o => Boolean(o.label?.trim()))?.map((op: any) => (\n <MenuItem key={op.name} value={op.name}>\n <Typography type=\"s4\" color=\"theme.secondary.1000\">\n {formatText(op.label)}\n </Typography>\n </MenuItem>\n ))}\n </Select>\n </Box>\n );\n};\n\nexport { OperatorSelect };\nexport default OperatorSelect;\n","import Button from \"../../button/button\";\n// import Typography from \"../../typography/typography\";\nimport { ActionProps } from \"react-querybuilder\";\nimport { Trash } from \"../../icons\";\n\nconst RemoveGroupAction = (props: ActionProps) => {\n const { handleOnClick } = props;\n\n return (\n <Button\n className=\"filterGrp-remove-btn\"\n variant=\"outlined\"\n onClick={handleOnClick}\n sx={({palette}) => ({\n marginRight: \"0px\",\n marginLeft: \"auto\",\n color: `${palette.theme.error?.[600]} !important`\n })}\n startIcon={<Trash color=\"theme.error.600\" fontSize=\"small\"/>}\n >\n Delete Group\n </Button>\n );\n};\n\nexport { RemoveGroupAction };\nexport default RemoveGroupAction;\n","import {\n Box,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n} from \"@mui/material\";\nimport Close from \"@mui/icons-material/Close\";\nimport { useEffect, useState } from \"react\";\nimport Modal from \"../modal/modal\";\nimport Typography from \"../typography/typography\";\nimport TextField from \"../text-field/text-field\";\nimport Button from \"../button/button\";\nimport { FolderSave } from \"../icons\";\n\ninterface SaveFilter {\n open: boolean;\n onClose: () => void;\n handleSubmit: (name: string) => void;\n oldName?: string;\n}\n\nconst SaveFilterModal = ({\n open,\n onClose,\n handleSubmit,\n oldName,\n}: SaveFilter) => {\n const [name, setName] = useState<string>(\"\");\n\n useEffect(() => {\n if (oldName !== undefined) {\n setName(oldName);\n }\n }, [oldName]);\n\n const handleSave = async (name: string) => {\n if (name) {\n const saved = await handleSubmit(name);\n\n if(saved) {\n setName(\"\");\n onClose();\n }\n }\n\n };\n\n return (\n <>\n <Modal fullWidth onClose={onClose} open={open}>\n <DialogTitle>\n <Box sx={{ display: 'flex', alignItems: 'center', gap:0.5 }}>\n <FolderSave sx={{ fontSize: '1.25rem'}}/>\n <Typography type=\"s2\" weight=\"medium\" color={\"theme.secondary.1000\"}>\n Save active filters\n </Typography>\n </Box>\n <IconButton edge=\"end\" onClick={onClose} size=\"small\">\n <Close fontSize=\"inherit\" />\n </IconButton>\n </DialogTitle>\n <DialogContent dividers>\n <TextField\n label=\"Name\"\n fullWidth\n placeholder=\"Name Filter\"\n value={name}\n onChange={(e: any) => setName(e.target.value)}\n />\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"outlined\"\n onClick={onClose}\n style={{\n color: \"black\",\n }}\n >\n Cancel\n </Button>\n <Button onClick={() => handleSave(name)}>\n {oldName ? \"Rename\" : \"Save\"}\n </Button>\n </DialogActions>\n </Modal>\n </>\n );\n};\n\nexport { SaveFilterModal };\nexport default SaveFilterModal;\n","/* eslint-disable */\r\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\r\nimport type { RuleGroupType } from \"react-querybuilder\";\r\nimport \"react-querybuilder/dist/query-builder.scss\";\r\nimport { QueryBuilder /* , formatQuery */ } from \"react-querybuilder\";\r\nimport { QueryBuilderMaterial } from \"@react-querybuilder/material\";\r\nimport {\r\n Box,\r\n IconButton,\r\n MenuItem,\r\n Dialog,\r\n DialogTitle,\r\n DialogContent,\r\n DialogActions,\r\n OutlinedInput,\r\n InputAdornment,\r\n Alert,\r\n} from \"@mui/material\";\r\nimport \"./filter.scss\";\r\nimport Select from \"../select/select\";\r\nimport Typography from \"../typography/typography\";\r\nimport { Close } from \"@mui/icons-material\";\r\nimport CombinatorSelect from \"./components/combinator-select\";\r\nimport RemoveAction from \"./components/remove-action\";\r\nimport FieldSelect from \"./components/field-select\";\r\nimport AddFilterButton from \"./components/add-filter\";\r\nimport AddGroupButton from \"./components/add-group\";\r\nimport ValueEditor from \"./components/value-editor\";\r\nimport OperatorSelect from \"./components/operator-select\";\r\nimport Button from \"../button/button\";\r\nimport RemoveGroupAction from \"./components/delete-group\";\r\nimport SearchBar from \"../search-bar/search-bar\";\r\nimport SaveFilterModal from \"../save-filter-modal/save-filter-modal\";\r\n\r\nimport {\r\n putV1FilterId,\r\n deleteV1FilterId,\r\n} from \"../../api-client/api.system-feature/api\";\r\nimport type * as Types from \"../../api-client/api.system-feature/api-types\";\r\nimport { auth } from \"../../constants/auth\";\r\nimport { generateFields, generateQueryString, getErrorMessage } from \"../../utils/common\";\r\nimport { usePages } from \"../../hooks/use-pages\";\r\nimport _ from \"lodash\";\r\nimport { Edit, Trash } from \"../icons\";\r\nimport { enqueueSnackbar } from \"notistack\";\r\nimport { IResources, routeToResourceMap } from \"../../constants/route-page-map\";\r\nimport { useLocation } from \"react-router-dom\";\r\nimport { useLanguage } from \"../../hooks/useLangauge\";\r\n\r\ninterface IFilter {\r\n open: boolean;\r\n onClose: () => void;\r\n activeView?: string;\r\n savedFilters?: SavedFilter[];\r\n fetchSavedFilters?: () => Promise<void>;\r\n setFilterBar?: any;\r\n onSaveFilter?: (query: RuleGroupType) => void;\r\n onSelectedFilter?: (filterName: string) => void;\r\n fields: any;\r\n applyFilter: any;\r\n isUseFields?: boolean;\r\n}\r\n\r\ninterface SavedFilter {\r\n id: string;\r\n name: string;\r\n query: RuleGroupType;\r\n}\r\n\r\nconst initialQuery: RuleGroupType = { combinator: \"and\", rules: [] };\r\n\r\nconst Filter = ({\r\n open,\r\n onClose,\r\n // activeView,\r\n savedFilters,\r\n fetchSavedFilters,\r\n onSaveFilter,\r\n onSelectedFilter,\r\n applyFilter,\r\n fields = [],\r\n isUseFields = false\r\n}: IFilter) => {\r\n const location = useLocation();\r\n\r\n const token = localStorage.getItem(auth.storageTokenKeyName);\r\n const { updatePageInfo, activePage, schemaFields, setActivePage } = usePages()\r\n\r\n fields = isUseFields ? generateFields(fields) : (schemaFields.length ? generateFields(schemaFields) : fields)\r\n const [query, setQuery] = useState<RuleGroupType>(initialQuery);\r\n const [filteredSavedFilters, setFilteredSavedFilters] = useState<\r\n SavedFilter[]\r\n >(savedFilters ?? []);\r\n const [selectedFilter, setSelectedFilter] = useState<any>(null);\r\n const [openRenameFilter, setIsOpenRenameFilter] = useState<any>(null);\r\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\r\n const { isRtl } = useLanguage();\r\n const resources: IResources = useMemo(() => routeToResourceMap[location.pathname] || null, [location.pathname])\r\n\r\n useEffect(() => {\r\n savedFilters && setFilteredSavedFilters(savedFilters);\r\n }, [savedFilters]);\r\n\r\n\r\n const handleApplyFilter = useCallback((clear: boolean = false) => {\r\n let q = query\r\n const isInvalid = isDuplicatedFilters(q)\r\n if (isInvalid) {\r\n setErrorMessage(\"Invalid filter\")\r\n return\r\n }\r\n if (clear) {\r\n q = initialQuery\r\n setQuery(q)\r\n } else {\r\n const generatedSQLQuery = q ? generateQueryString(q) : q;\r\n updatePageInfo({ filters: q, filterQueryString: generatedSQLQuery })\r\n // applyFilter(generatedSQLQuery);\r\n onClose();\r\n }\r\n }, [query, applyFilter, onClose]);\r\n\r\n const handleQueryChange = (q: RuleGroupType) => {\r\n const updatedRules = q.rules.map((rule, i) => ({\r\n ...rule,\r\n value: rule.field !== query.rules?.[i]?.field || ['null', 'notNull'].includes(rule.operator) ? \"\" : rule.value\r\n }));\r\n let isValid = true;\r\n let errorMessage = '';\r\n\r\n // // Helper function to check for invalid aggregate usage, considering parent combinators\r\n // const checkForInvalidAggregateUsage = (rules: any[], combinator: string, parentCombinator: string | null): boolean => {\r\n // let hasAggregateField = false;\r\n // let hasNonAggregateField = false;\r\n\r\n // rules.forEach(rule => {\r\n // // Check nested groups\r\n // if (rule.rules) {\r\n // // If the current group or any parent has an 'OR', pass it down\r\n // const currentCombinator = combinator === 'or' || parentCombinator === 'or' ? 'or' : combinator;\r\n // checkForInvalidAggregateUsage(rule.rules, rule.combinator, currentCombinator);\r\n // } else {\r\n // // Find the field in the fields array and check if it's an aggregate\r\n // const field = fields.find((f: any) => f.name === rule.field);\r\n\r\n // if (field?.is_aggregate) {\r\n // hasAggregateField = true;\r\n // } else {\r\n // hasNonAggregateField = true;\r\n // }\r\n // }\r\n // });\r\n\r\n // // If any parent or current rule uses 'OR' with a mix of aggregate and non-aggregate fields, it's invalid\r\n // if ((combinator === 'or' || parentCombinator === 'or') && hasAggregateField && hasNonAggregateField) {\r\n // isValid = false;\r\n // errorMessage = 'Mixing aggregate and non-aggregate fields in OR conditions may lead to unexpected results.';\r\n // }\r\n\r\n // return isValid;\r\n // };\r\n\r\n // Start checking from the root level (no parent combinator initially)\r\n\r\n\r\n // Always set the query, regardless of validity\r\n setQuery({ ...q, rules: updatedRules });\r\n\r\n // Set error message if invalid, otherwise clear it\r\n if (!isValid) {\r\n setErrorMessage(errorMessage);\r\n } else {\r\n setErrorMessage(null);\r\n }\r\n\r\n // Always call onSaveFilter, if it exists\r\n if (onSaveFilter) {\r\n onSaveFilter(q);\r\n }\r\n };\r\n\r\n const handleFilterSwitch = (sf?: any) => {\r\n if (sf) {\r\n setSelectedFilter(sf);\r\n setQuery(sf.query);\r\n if (onSelectedFilter) {\r\n onSelectedFilter(sf);\r\n }\r\n } else {\r\n setSelectedFilter(null);\r\n setQuery(initialQuery);\r\n if (onSelectedFilter) {\r\n onSelectedFilter(null);\r\n }\r\n }\r\n };\r\n\r\n const handleSearchEvent = (searchText: string) => {\r\n const filteredFilters = savedFilters?.filter((filter: any) =>\r\n filter.name.toLowerCase().includes(searchText.toLowerCase())\r\n );\r\n if (filteredFilters) {\r\n setFilteredSavedFilters(filteredFilters);\r\n }\r\n };\r\n\r\n const handleRenameFilter = async (filterId: string, newName: string) => {\r\n const putFilterRequest: Types.PutV1FilterIdRequest = {\r\n \"x-token\": token,\r\n id: filterId,\r\n name: newName,\r\n module: resources?.fieldResource || resources?.pageResource\r\n };\r\n\r\n try {\r\n await putV1FilterId(putFilterRequest)\r\n // setSelectedFilter(newName);\r\n if (fetchSavedFilters) {\r\n fetchSavedFilters();\r\n }\r\n enqueueSnackbar('Filters renamed successfully.')\r\n } catch (error) {\r\n let m: string = 'Something went wrong on saving filters'\r\n if (error instanceof Error) {\r\n m = getErrorMessage(error.message)\r\n }\r\n enqueueSnackbar(m, { variant: 'error' })\r\n return false\r\n }\r\n return true\r\n };\r\n const handleUpdateSelectedFilterQuery = async () => {\r\n if (selectedFilter) {\r\n\r\n const putFilterRequest: Types.PutV1FilterIdRequest = {\r\n \"x-token\": token,\r\n id: selectedFilter.id,\r\n data: query,\r\n };\r\n\r\n putV1FilterId(putFilterRequest)\r\n .then((response: any) => {\r\n if (fetchSavedFilters) {\r\n fetchSavedFilters();\r\n }\r\n setActivePage((prev: any) => ({\r\n ...prev,\r\n filters: {\r\n ...prev.filters,\r\n rules: query.rules,\r\n combinator: query.combinator,\r\n name: selectedFilter.name\r\n\r\n }\r\n }));\r\n })\r\n .catch((err: any) => enqueueSnackbar(\"Error renaming saved filters:\", { variant: 'error' }));\r\n }\r\n };\r\n\r\n const handleSubmitRename = (name: string) => {\r\n if (openRenameFilter) {\r\n return handleRenameFilter(openRenameFilter.id, name);\r\n }\r\n };\r\n\r\n const handleDeleteFilter = async (filterId: string) => {\r\n const deleteFilterRequest: Types.DeleteV1FilterIdRequest = {\r\n \"x-token\": token,\r\n id: filterId,\r\n };\r\n\r\n deleteV1FilterId(deleteFilterRequest)\r\n .then((response: any) => {\r\n setSelectedFilter(null);\r\n setQuery(initialQuery);\r\n if (fetchSavedFilters) {\r\n fetchSavedFilters();\r\n }\r\n\r\n })\r\n .catch((err: any) => console.log(\"Error deleting saved filters:\", err));\r\n };\r\n\r\n useEffect(() => {\r\n let q = initialQuery\r\n if (!_.isEmpty(activePage.filters)) {\r\n q = activePage.filters\r\n }\r\n setQuery(q)\r\n const selectedFilter = savedFilters?.find((f: any) => f.name === activePage?.filters?.name);\r\n setSelectedFilter(selectedFilter || null);\r\n }, [activePage?.filters, savedFilters]);\r\n\r\n const isDuplicatedFilters = (rule) => {\r\n let uniques: string[] = []\r\n rule?.rules?.forEach((r: any) => {\r\n if (uniques.includes(r.field) && rule.combinator == 'and') {\r\n return true\r\n }\r\n uniques.push(r.field)\r\n })\r\n return uniques.length !== rule?.rules?.length\r\n }\r\n\r\n\r\n const isRuleInvalid = (rule: any): boolean => {\r\n // If it's a group (has nested rules), recurse\r\n if (Array.isArray(rule.rules)) {\r\n return rule.rules.length ? rule.rules.some(isRuleInvalid) : !rule.rules.length;\r\n }\r\n\r\n // Otherwise, validate individual rule\r\n return (\r\n !rule.field ||\r\n (_.isEmpty(rule.value) && !['null', 'notNull'].includes(rule.operator))\r\n );\r\n };\r\n\r\n const disabled = useMemo(() => isRuleInvalid(query) || errorMessage, [query, errorMessage])\r\n // const disabled = isRuleInvalid(query) || errorMessage;\r\n\r\n return (\r\n <div>\r\n <Dialog\r\n open={open}\r\n onClose={onClose}\r\n maxWidth='md'\r\n fullWidth={true}\r\n PaperProps={{\r\n sx: { borderRadius: 2 }\r\n }}\r\n >\r\n <DialogTitle className=\"filter-header\">\r\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\r\n Filters\r\n </Typography>\r\n <Box gap={1} display={\"flex\"}>\r\n <Select\r\n fullWidth\r\n size=\"small\"\r\n className=\"filter-dropdown\"\r\n value={selectedFilter ? selectedFilter.name : \"Saved Filters\"}\r\n onChange={(event: any) => {\r\n const sf = savedFilters?.find(f => f.name == event.target.value)\r\n handleFilterSwitch(sf)\r\n }}\r\n variant=\"outlined\"\r\n onClose={() => {\r\n setTimeout(() => {\r\n handleSearchEvent(\"\")\r\n }, 500);\r\n }}\r\n input={\r\n selectedFilter ? (\r\n <OutlinedInput\r\n label=''\r\n endAdornment={\r\n <InputAdornment position='end'>\r\n <IconButton\r\n aria-label='clear selection'\r\n onClick={() => {\r\n handleFilterSwitch()\r\n }}\r\n edge='end'\r\n sx={{ mr: 1.5 }}\r\n size='small'>\r\n <Close sx={{ fontSize: '1rem' }} />\r\n </IconButton>\r\n </InputAdornment>\r\n }\r\n />\r\n ) : undefined\r\n }\r\n >\r\n <div className=\"searchbar-box-list\">\r\n <SearchBar\r\n placeholder={\"Search Filters\"}\r\n handleSearch={(e) => handleSearchEvent(e)}\r\n />\r\n </div>\r\n {/* <Typography\r\n color=\"theme.secondary.1000\"\r\n type=\"s4\"\r\n className=\"filter-title\"\r\n >\r\n Saved Filters\r\n </Typography> */}\r\n {filteredSavedFilters?.map((savedFilter: SavedFilter) => (\r\n <MenuItem\r\n key={savedFilter.id}\r\n value={savedFilter?.name}\r\n className=\"menu-list\"\r\n selected={selectedFilter?.name == savedFilter?.name}\r\n >\r\n <Typography color=\"theme.secondary.1000\" type=\"s3\">\r\n {savedFilter?.name}\r\n </Typography>\r\n\r\n <div className=\"icon-list\">\r\n <IconButton size=\"small\" onClick={(e) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n setIsOpenRenameFilter(savedFilter)\r\n }}>\r\n <Edit fontSize=\"small\" color={selectedFilter?.name == savedFilter?.name ? \"theme.primary.800\" : 'inherit'} />\r\n </IconButton>\r\n <IconButton size=\"small\" onClick={(e) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n handleDeleteFilter(savedFilter.id)\r\n }} color=\"error\">\r\n <Trash fontSize=\"small\" color=\"theme.error.600\" />\r\n </IconButton>\r\n </div>\r\n </MenuItem>\r\n ))}\r\n </Select>\r\n <SaveFilterModal\r\n open={openRenameFilter !== null}\r\n onClose={() => setIsOpenRenameFilter(null)}\r\n handleSubmit={(name) => handleSubmitRename(name)}\r\n oldName={openRenameFilter?.name}\r\n />\r\n <Box>\r\n <IconButton size=\"small\" onClick={onClose}>\r\n <Close fontSize=\"small\" />\r\n </IconButton>\r\n </Box>\r\n </Box>\r\n </DialogTitle>\r\n <DialogContent className=\"content\">\r\n {/* Display error message */}\r\n {errorMessage && (\r\n <Alert severity=\"error\" sx={{ px: 1, pt: 0.5, mb: 1 }}>\r\n <Typography\r\n color=\"error\"\r\n type=\"s4\"\r\n >\r\n {errorMessage}\r\n </Typography>\r\n </Alert>\r\n )}\r\n <QueryBuilderMaterial>\r\n <QueryBuilder\r\n fields={fields || []}\r\n query={query}\r\n onQueryChange={handleQueryChange}\r\n showCombinatorsBetweenRules={true}\r\n controlClassnames={{\r\n header: \"actions\",\r\n }}\r\n controlElements={{\r\n addRuleAction: AddFilterButton,\r\n addGroupAction: AddGroupButton,\r\n combinatorSelector: CombinatorSelect,\r\n fieldSelector: FieldSelect,\r\n operatorSelector: OperatorSelect,\r\n removeRuleAction: RemoveAction,\r\n valueEditor: ValueEditor,\r\n removeGroupAction: RemoveGroupAction,\r\n }}\r\n />\r\n <Button\r\n variant=\"text\"\r\n className={isRtl ? 'remove-filters_rtl' : 'remove-filters'}\r\n onClick={() => {\r\n handleApplyFilter(true)\r\n }}\r\n disabled={disabled}\r\n >\r\n Clear all filters\r\n </Button>\r\n </QueryBuilderMaterial>\r\n </DialogContent>\r\n <DialogActions className=\"filter-footer\">\r\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: selectedFilter ? 'space-between' : 'flex-end', width: '100%' }}>\r\n {selectedFilter &&\r\n <Box>\r\n <Button onClick={handleUpdateSelectedFilterQuery}>\r\n Update Seleted filter\r\n </Button>\r\n </Box>\r\n }\r\n <Box sx={{ display: 'flex', gap: 1 }}>\r\n <Button className=\"cancel-filter-btn\" onClick={onClose}>\r\n Cancel\r\n </Button>\r\n <Button\r\n disabled={disabled}\r\n onClick={() => handleApplyFilter()}\r\n >\r\n Apply\r\n </Button>\r\n </Box>\r\n </Box>\r\n </DialogActions>\r\n </Dialog>\r\n </div>\r\n );\r\n};\r\n\r\nexport { Filter };\r\nexport default Filter;\r\n","import * as React from 'react';\nimport ButtonGroup, { ButtonGroupProps } from '@mui/material/ButtonGroup';\nimport ClickAwayListener from '@mui/material/ClickAwayListener';\nimport Grow from '@mui/material/Grow';\nimport Paper from '@mui/material/Paper';\nimport Popper from '@mui/material/Popper';\nimport MenuItem from '@mui/material/MenuItem';\nimport MenuList from '@mui/material/MenuList';\nimport Button from '../button/button';\nimport { ArrowDownTwo } from '../icons';\nimport Typography from '../typography/typography';\nimport { ButtonProps, CircularProgress, SxProps } from '@mui/material';\nimport { useLanguage } from '../../hooks/useLangauge';\n\nexport interface IDropdownMenuOption {\n\tlabel: string | JSX.Element;\n\tcallback: (event?: any, index?: number) => void;\n\tcolor?: string;\n\tdisableToggle?: boolean;\n}\n\ninterface DropdownButtonProps extends ButtonProps {\n\tchildren?: React.ReactNode;\n\toptions: IDropdownMenuOption[];\n\tisMenuThirdItemDisabled?: boolean;\n\tisOnlyDropDownButton?: boolean;\n\tonlyDropDownButtonProps?: {\n\t\tstyle?: SxProps;\n\t};\n\tbuttonGroupProps?: ButtonGroupProps;\n\tdropdownButtonProps?: ButtonGroupProps;\n\ttoggleCallback?: (e?: boolean) => void;\n\tloading?: boolean;\n}\n\nconst DropdownButton: React.FC<DropdownButtonProps> = ({\n\tchildren,\n\toptions,\n\tisMenuThirdItemDisabled,\n\tisOnlyDropDownButton = false,\n\tonlyDropDownButtonProps = null,\n\tbuttonGroupProps = null,\n\tdropdownButtonProps=null,\n\ttoggleCallback,\n\tloading = false,\n\t...rest\n}) => {\n\tconst [open, setOpen] = React.useState(false);\n\tconst anchorRef = React.useRef<HTMLDivElement>(null);\n const {isRtl}=useLanguage();\n\tconst handleToggle = () => {\n\t\tsetOpen((prevOpen) => !prevOpen);\n\t};\n\n\tconst handleClose = (event: Event) => {\n\t\tif (\n\t\t\tanchorRef.current &&\n\t\t\tanchorRef.current.contains(event.target as HTMLElement)\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetOpen(false);\n\t};\n\n\tReact.useEffect(() => {\n\t\ttoggleCallback?.(open);\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [open]);\n\n\treturn (\n\t\t<React.Fragment>\n\t\t\t<ButtonGroup\n\t\t\t\tsx={loading ? { boxShadow: 'none' } : isRtl?{flexDirection:'row-reverse'}:{}}\n\t\t\t\t{...buttonGroupProps}\n\t\t\t\tref={anchorRef}\n\t\t\t\tdisabled={loading}>\n\t\t\t\t{isOnlyDropDownButton ? (\n\t\t\t\t\t<Button\n\t\t\t\t\t\t{...rest}\n\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\tborderRightColor: '#ffffff20 !important',\n\t\t\t\t\t\t\t...onlyDropDownButtonProps?.style\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonClick={handleToggle}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</Button>\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t{...rest}\n\t\t\t\t\t\t\tsx={(theme) => ({\n\t\t\t\t\t\t\t\tborderRightColor: `${theme.palette.theme?.secondary[100]} !important`,\n\t\t\t\t\t\t\t\tborderRight: '1px solid',\n\t\t\t\t\t\t\t\tborderTopRightRadius: 0,\n\t\t\t\t\t\t\t\tborderBottomRightRadius: 0,\n\t\t\t\t\t\t\t\t...(typeof rest?.sx === 'function'\n\t\t\t\t\t\t\t\t\t? rest.sx(theme)\n\t\t\t\t\t\t\t\t\t: rest?.sx || {})\n\t\t\t\t\t\t\t})}>\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize='small'\n\t\t\t\t\t\t\taria-controls={open ? 'split-button-menu' : undefined}\n\t\t\t\t\t\t\taria-expanded={open ? 'true' : undefined}\n\t\t\t\t\t\t\taria-label='select merge strategy'\n\t\t\t\t\t\t\taria-haspopup='menu'\n\t\t\t\t\t\t\t{...dropdownButtonProps}\n\t\t\t\t\t\t\tsx={(theme) => ({\n\t\t\t\t\t\t\t\tp: 1,\n\t\t\t\t\t\t\t\tminWidth: 'unset !important',\n\t\t\t\t\t\t\t\tborderTopLeftRadius: 0,\n\t\t\t\t\t\t\t\tborderBottomLeftRadius: 0,\n\t\t\t\t\t\t\t\t...(typeof dropdownButtonProps?.sx === 'function'\n\t\t\t\t\t\t\t\t\t? dropdownButtonProps.sx(theme)\n\t\t\t\t\t\t\t\t\t: dropdownButtonProps?.sx || {})\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tonClick={handleToggle}>\n\t\t\t\t\t\t\t{loading ? (\n\t\t\t\t\t\t\t\t<CircularProgress size={15} color='inherit' />\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<ArrowDownTwo fontSize='small' />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</ButtonGroup>\n\t\t\t<Popper\n\t\t\t\tsx={{\n\t\t\t\t\tzIndex: 1\n\t\t\t\t}}\n\t\t\t\topen={open}\n\t\t\t\tanchorEl={anchorRef.current}\n\t\t\t\trole={undefined}\n\t\t\t\ttransition\n\t\t\t\tdisablePortal>\n\t\t\t\t{({ TransitionProps, placement }) => (\n\t\t\t\t\t<Grow\n\t\t\t\t\t\t{...TransitionProps}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\ttransformOrigin:\n\t\t\t\t\t\t\t\tplacement === 'bottom' ? 'center top' : 'center bottom'\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\t<Paper elevation={0} sx={{ border: '1px solid', borderColor: 'grey.300', borderRadius: '8px', mt:0.25}}>\n\t\t\t\t\t\t\t<ClickAwayListener onClickAway={handleClose}>\n\t\t\t\t\t\t\t\t<MenuList id='split-button-menu' autoFocusItem>\n\t\t\t\t\t\t\t\t\t{options.map((option, index) => (\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\t\t\tdisabled={isMenuThirdItemDisabled ? false : index === 2}\n\t\t\t\t\t\t\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\t\t\t\t\t\t\toption.callback(event, index);\n\t\t\t\t\t\t\t\t\t\t\t\tif (!option?.disableToggle) {\n\t\t\t\t\t\t\t\t\t\t\t\t\thandleToggle();\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}} >\n\t\t\t\t\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\t\t\t\t\ttype='s4'\n\t\t\t\t\t\t\t\t\t\t\t\tcolor={\n\t\t\t\t\t\t\t\t\t\t\t\t\toption.color ? option.color : 'theme.secondary.1000'\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\t\t\t\t\t\twidth: '100%'\n\t\t\t\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</MenuList>\n\t\t\t\t\t\t\t</ClickAwayListener>\n\t\t\t\t\t\t</Paper>\n\t\t\t\t\t</Grow>\n\t\t\t\t)}\n\t\t\t</Popper>\n\t\t</React.Fragment>\n\t);\n};\n\nexport default DropdownButton;\n","import * as React from 'react';\nimport ClickAwayListener from '@mui/material/ClickAwayListener';\nimport Grow from '@mui/material/Grow';\nimport Paper from '@mui/material/Paper';\nimport Popper from '@mui/material/Popper';\nimport MenuItem from '@mui/material/MenuItem';\nimport MenuList from '@mui/material/MenuList';\nimport { ArrowDownTwo } from '../icons';\nimport Typography from '../typography/typography';\nimport { ButtonProps } from '@mui/material';\n\nexport interface ITitleDropdownMenuOption {\n\tlabel: string | JSX.Element;\n\tcallback: (event?: any, index?: number) => void;\n\tcolor?: string;\n}\n\ninterface TitleDropdownButtonProps extends ButtonProps {\n\tchildren: React.ReactNode;\n\toptions: ITitleDropdownMenuOption[];\n\tisMenuThirdItemDisabled: boolean;\n\tcurrentTitle: string;\n}\n\nconst TitleDropdownButton: React.FC<TitleDropdownButtonProps> = ({\n\tchildren,\n\toptions,\n\tisMenuThirdItemDisabled,\n\tcurrentTitle = '',\n}) => {\n\tconst [open, setOpen] = React.useState(false);\n\tconst anchorRef = React.useRef<HTMLDivElement>(null);\n\n\tconst handleToggle = () => {\n\t\tsetOpen((prevOpen) => !prevOpen);\n\t};\n\n\tconst handleClose = (event: Event) => {\n\t\tif (\n\t\t\tanchorRef.current &&\n\t\t\tanchorRef.current.contains(event.target as HTMLElement)\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetOpen(false);\n\t};\n\n\treturn (\n\t\t<React.Fragment>\n\t\t\t<div style={{ display: 'flex', alignItems: 'flex-end', gap: '10px' }} ref={anchorRef}>\n\t\t\t\t<Typography type=\"h3\" weight=\"medium\" color=\"theme.secondary.1000\">\n\t\t\t\t\t{children}\n\t\t\t\t</Typography>\n\t\t\t\t<div\n\t\t\t\t\taria-controls={open ? 'split-button-menu' : undefined}\n\t\t\t\t\taria-expanded={open ? 'true' : undefined}\n\t\t\t\t\taria-label='select merge strategy'\n\t\t\t\t\taria-haspopup='menu'\n\t\t\t\t\tstyle={{ minWidth: 'unset !important', cursor: 'pointer' }}\n\t\t\t\t\tonClick={handleToggle}\n\t\t\t\t>\n\t\t\t\t\t<ArrowDownTwo fontSize='small' />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<Popper\n\t\t\t\tsx={{\n\t\t\t\t\tzIndex: 1\n\t\t\t\t}}\n\t\t\t\topen={open}\n\t\t\t\tanchorEl={anchorRef.current}\n\t\t\t\trole={undefined}\n\t\t\t\ttransition\n\t\t\t\tdisablePortal>\n\t\t\t\t{({ TransitionProps, placement }) => (\n\t\t\t\t\t<Grow\n\t\t\t\t\t\t{...TransitionProps}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\ttransformOrigin:\n\t\t\t\t\t\t\t\tplacement === 'bottom' ? 'center top' : 'center bottom'\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\t<Paper elevation={0} sx={{ border: '1px solid', borderRadius: 2, borderColor: 'theme.grey.200'}}>\n\t\t\t\t\t\t\t<ClickAwayListener onClickAway={handleClose}>\n\t\t\t\t\t\t\t\t<MenuList autoFocusItem>\n\t\t\t\t\t\t\t\t\t{options.map((option, index) => (\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\t\t\tdisabled={isMenuThirdItemDisabled ? false : (index === 2)}\n\t\t\t\t\t\t\t\t\t\t\tselected={currentTitle?.trim() === option.label?.trim()}\n\t\t\t\t\t\t\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\t\t\t\t\t\t\toption.callback(event, index);\n\t\t\t\t\t\t\t\t\t\t\t\thandleToggle();\n\t\t\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\t\t\t\t\ttype='s4'\n\t\t\t\t\t\t\t\t\t\t\t\tcolor={\n\t\t\t\t\t\t\t\t\t\t\t\t\toption.color ? option.color : 'theme.secondary.1000'\n\t\t\t\t\t\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</MenuList>\n\t\t\t\t\t\t\t</ClickAwayListener>\n\t\t\t\t\t\t</Paper>\n\t\t\t\t\t</Grow>\n\t\t\t\t)}\n\t\t\t</Popper>\n\t\t</React.Fragment>\n\t);\n};\n\nexport default TitleDropdownButton;\n","import React from \"react\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\n\r\n\r\nimport Typography from \"../typography/typography\";\r\nimport Box from \"@mui/material/Box\";\r\nimport \"./upload-excel.scss\";\r\nimport { useDropzone } from \"react-dropzone\";\r\nimport {\r\n CircularProgress,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n Divider,\r\n Grow,\r\n IconButton,\r\n \r\n} from \"@mui/material\";\r\nimport RemoveIcon from \"@mui/icons-material/Remove\";\r\n// import Checkbox from \"../checkbox/checkbox\";\r\nimport Avatar from \"../avatar/avatar\";\r\nimport images from \"../../assets/images\";\r\nimport ModalLoader from '../loaders/modal-loader';\r\nimport {Trash} from '../icons';\r\n\r\nimport { KeyboardArrowDown, KeyboardArrowUp, Upload } from \"@mui/icons-material\";\r\nimport { postImportSheet } from \"../../utils/common\";\r\nimport Button from \"../button/button\";\r\n\r\n\r\ninterface UploadProps {\r\n open: boolean;\r\n title: string;\r\n multiple?: boolean;\r\n accept?: string;\r\n showCameraButton?: boolean;\r\n onClose: () => void;\r\n onConfirm: () => void;\r\n onSubmit?: (files: any[]) => void;\r\n existingDriveData?: any;\r\n importModuleName?: any;\r\n pageName?: any;\r\n handleSuccessImport?: (e?: any) => void;\r\n\r\n}\r\n\r\nconst formatBytes = (bytes: number, decimals = 2) => {\r\n if (bytes === 0) return \"0 Bytes\";\r\n const k = 1024;\r\n const dm = decimals < 0 ? 0 : decimals;\r\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + \" \" + sizes[i];\r\n};\r\n\r\nconst UploadExcel = (props: UploadProps) => {\r\n const {\r\n open,\r\n title,\r\n onClose,\r\n onConfirm,\r\n onSubmit,\r\n accept = \"*\",\r\n multiple = false,\r\n importModuleName,\r\n pageName,\r\n handleSuccessImport\r\n } = props;\r\n const [files, setFiles] = useState<\r\n {\r\n file: File;\r\n isPrivate: boolean;\r\n checkboxDisabled: boolean;\r\n status: string;\r\n uploadProgress: number;\r\n fileSize: number;\r\n fileName: string;\r\n fileType: string;\r\n location: string;\r\n message: string;\r\n }[]\r\n >([]);\r\n\r\n const [isCollapsed, setIsCollapsed] = useState(false);\r\n const [isDialogMinimized, setIsDialogMinimized] = useState(false);\r\n const [isDragOver, setIsDragOver] = useState(false);\r\n const [dataResult, setDataResult] = useState<any>(null);\r\n const [isLoading, setIsLoading] = useState<boolean>(false);\r\n \r\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\r\n onDropAccepted: (newFiles) => {\r\n setFiles([\r\n ...files,\r\n ...newFiles.map((file) => ({\r\n file,\r\n isPrivate: false,\r\n checkboxDisabled: false,\r\n status: \"pending\",\r\n uploadProgress: 0,\r\n fileSize: file.size,\r\n fileName: file.name,\r\n fileType: file.type,\r\n location: \"\",\r\n message: \"\",\r\n })),\r\n ]);\r\n setIsDragOver(false);\r\n },\r\n onDragEnter: () => {\r\n setIsDragOver(true);\r\n },\r\n onDragLeave: () => {\r\n setIsDragOver(false);\r\n },\r\n noClick: true,\r\n noKeyboard: true,\r\n multiple: multiple,\r\n accept: accept ? convertAcceptObject(accept) : accept,\r\n });\r\n\r\n const handleClose = () => {\r\n onClose()\r\n setDataResult(null);\r\n }\r\n\r\n const fileInputRef = useRef<HTMLInputElement>(null);\r\n\r\n // useEffect(() => {\r\n // const driveTitles = existingDriveData.map(item => item['title'])\r\n // setAllDriveData(driveTitles);\r\n // }, [existingDriveData]);\r\n\r\n\r\n useEffect(() => {\r\n const handleBeforeUnload = (event: any) => {\r\n \r\n const message =\r\n \"Are you sure you want to leave? Your uploads are not complete.\";\r\n event.returnValue = message; // Standard for most browsers\r\n return message; // For some older browsers\r\n \r\n };\r\n if (fileInputRef.current) {\r\n fileInputRef.current.multiple = multiple;\r\n }\r\n\r\n window.addEventListener(\"beforeunload\", handleBeforeUnload);\r\n\r\n return () => {\r\n // Clean up the event listener when the component unmounts\r\n window.removeEventListener(\"beforeunload\", handleBeforeUnload);\r\n };\r\n }, [ multiple]);\r\n\r\n \r\n\r\n function convertAcceptObject(types: string) {\r\n const accepts = types.split(\",\").map((item) => item.trim());\r\n const acceptObject = accepts.reduce((acc: any, type: string) => {\r\n acc[type] = [];\r\n return acc;\r\n }, {});\r\n return acceptObject;\r\n }\r\n\r\n const renderFileIcon = (file: any) => {\r\n const fileType = file?.type.split(\"/\")[0];\r\n switch (fileType) {\r\n case \"image\":\r\n return (\r\n <div\r\n className={\r\n isDialogMinimized ? \"document-icon-sm\" : \"document-icon-lg\"\r\n }\r\n style={{ backgroundColor: \"#FFEBEB\" }}\r\n >\r\n <Avatar size={20} src={images.upload.documentPDF}></Avatar>\r\n </div>\r\n );\r\n case \"application\":\r\n return (\r\n <div\r\n className={\r\n isDialogMinimized ? \"document-icon-sm\" : \"document-icon-lg\"\r\n }\r\n style={{ backgroundColor: \"#FFEBEB\" }}\r\n >\r\n <Avatar size={150} src={images.upload.documentPDF} alt={\"PDF\"}></Avatar>\r\n <Typography color=\"theme.secondary.1000\" weight=\"bold\" type=\"s2\">{file.name}</Typography>\r\n <Typography color=\"theme.secondary.800\" type=\"s5\">{formatBytes(file.size)}</Typography>\r\n </div>\r\n );\r\n case \"text\":\r\n return (\r\n <div\r\n className={\r\n isDialogMinimized ? \"document-icon-sm\" : \"document-icon-lg\"\r\n }\r\n style={{ backgroundColor: \"#EBF9F2\" }}\r\n >\r\n <Avatar size={20} src={images.upload.docFile}></Avatar>\r\n </div>\r\n );\r\n default:\r\n return (\r\n <div\r\n className={\r\n isDialogMinimized ? \"document-icon-sm\" : \"document-icon-lg\"\r\n }\r\n style={{ backgroundColor: \"#EBF9F2\" }}\r\n >\r\n <Avatar size={20} src={images.upload.docFile}></Avatar>\r\n </div>\r\n );\r\n }\r\n };\r\n\r\n \r\n\r\n const handleChipClick = () => {\r\n if (fileInputRef.current) {\r\n // If multiple is true, set input for multiple files\r\n if (props.multiple) {\r\n fileInputRef.current.setAttribute(\"multiple\", \"true\");\r\n } else {\r\n // If multiple is false, set input for a single file\r\n fileInputRef.current.removeAttribute(\"multiple\");\r\n }\r\n fileInputRef.current.click();\r\n }\r\n };\r\n\r\n const handleFileChange = (e: any) => {\r\n // importData(e.target.files[0]);\r\n const file = e.target.files?.[0] || null;\r\n const f = {\r\n file,\r\n isPrivate: false,\r\n checkboxDisabled: false,\r\n status: \"pending\",\r\n uploadProgress: 0,\r\n fileSize: file.size,\r\n fileName: file.name,\r\n fileType: file.type,\r\n location: \"\",\r\n message: \"\",\r\n }\r\n\r\n \r\n setFiles([\r\n ...files,\r\n ...[f],\r\n ]);\r\n };\r\n\r\n const removeFile = (indexToRemove: number) => {\r\n\r\n setFiles((prevFiles) =>\r\n prevFiles.filter((file, index) =>index !== indexToRemove\r\n ),\r\n );\r\n };\r\n\r\n // const toggleIsPrivate = (index: number) => {\r\n // setFiles((prevFiles) =>\r\n // prevFiles.map((item, i) =>\r\n // i === index ? { ...item, isPrivate: !item.isPrivate } : item,\r\n // ),\r\n // );\r\n // };\r\n\r\n const toggleCollapse = () => {\r\n setIsCollapsed((prevIsCollapsed) => !prevIsCollapsed);\r\n };\r\n\r\n const handleMinimizeClick = () => {\r\n setIsDialogMinimized(!isDialogMinimized);\r\n isDialogMinimized ? onConfirm() : onClose();\r\n };\r\n\r\n const importData = async () => {\r\n const file = files[0].file\r\n\t\tconst formData = new FormData();\r\n\t\tformData.append('file', file); // Ensure the field name is correct.\r\n\t\tsetIsLoading(true)\r\n\t\ttry {\r\n\t\t\tconst response = await postImportSheet(formData, importModuleName, pageName);\r\n\t\t\tif(response) {\r\n\t\t\t\tsetDataResult(response.data)\r\n setIsLoading(false)\r\n if(response?.data?.failed?.length == 0){\r\n handleClose()\r\n handleSuccessImport(response?.data);\r\n }\r\n\t\t\t} \r\n\t\t} catch (error) {\r\n setIsLoading(false)\r\n\t\t}\r\n\r\n\t}\r\n\r\n useEffect(() => {\r\n open && setFiles([]);\r\n }, [open]);\r\n\r\n\r\n\r\n return (\r\n <>\r\n <Dialog open={open} onClose={handleClose} className=\"upload\">\r\n <DialogTitle className=\"upload--head\">\r\n <Box className=\"upload--title\">\r\n <Typography\r\n type=\"s3\"\r\n ml={1}\r\n weight=\"medium\"\r\n color=\"theme.secondary.1000\"\r\n >\r\n {title}\r\n </Typography>\r\n </Box>\r\n \r\n </DialogTitle>\r\n <Divider />\r\n <DialogContent className=\"upload--content\">\r\n {isLoading && <ModalLoader />}\r\n \r\n {files.length === 0 ? (\r\n <div\r\n className={`upload--fileContent ${isDragActive ? \"drag-active\" : \"\"\r\n }`}\r\n >\r\n <div {...getRootProps()} className=\"drop-view\">\r\n {!isDragOver ? (\r\n <>\r\n <input {...getInputProps()} ref={fileInputRef} />\r\n <p className=\"upload--text\">\r\n Drag and Drop files here or upload from\r\n </p>\r\n\r\n <div className=\"device-wrap\">\r\n <div className=\"select-button\" onClick={handleChipClick}>\r\n <img src={images.upload.monitor} />\r\n <Typography type=\"s5\">My Device</Typography>\r\n <input\r\n type=\"file\"\r\n {...getInputProps({ multiple: true })}\r\n ref={fileInputRef}\r\n style={{ display: \"none\" }}\r\n onChange={handleFileChange}\r\n accept={accept}\r\n />\r\n </div>\r\n \r\n </div>\r\n\r\n {dataResult?.successful?.length || dataResult?.failed?.length ? (\r\n <div className =\"mt-2\">\r\n {dataResult?.failed.length == 0 ? (\r\n <Typography type=\"s3\">\r\n All data imported successfully.\r\n </Typography> ) : (\r\n <Typography type=\"s4\" word-break=\"break-word\" color=\"theme.error.600\" weight=\"medium\">\r\n Failed to import the following records with IDs: {dataResult.failed?.map((item:any)=>item?.id).join(\", \")}\r\n </Typography> )\r\n } \r\n </div>\r\n ) : (\r\n \"\"\r\n )}\r\n </>\r\n ) : (\r\n <div className=\"after-drop\">\r\n <img src={images.upload.documentUpload} />\r\n <Typography type=\"s3\">\r\n Drag & Drop your files here\r\n </Typography>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n ) : (\r\n <Grow in={Boolean(files?.length)} timeout={500}>\r\n <Box>\r\n {files.map((file: any, index: number) => (\r\n <Box key={file?.file?.name} display='flex' width='100%' justifyContent='center' alignItems='center' flexDirection='column'>\r\n <Box className=\"icon-BG\">\r\n <IconButton onClick={() => removeFile(index)} className=\"remove-button\"><Trash fontSize='small' /> </IconButton>\r\n <Avatar size={150} src={images.upload.docFile} alt={\"PDF\"}></Avatar>\r\n </Box>\r\n <Typography type=\"s2\" weight=\"bold\" color='theme.secondary.1000'>{file?.file?.name}</Typography>\r\n <Typography type=\"s4\" color='theme.secondary.800'>{formatBytes(file?.file?.size)}</Typography>\r\n </Box>\r\n ))}\r\n {dataResult?.successful?.length || dataResult?.failed?.length ? (\r\n <div className =\"mt-2\">\r\n {dataResult?.failed.length == 0 ? (\r\n <Typography type=\"s3\">\r\n All data imported successfully.\r\n </Typography> ) : (\r\n <Typography type=\"s4\" word-break=\"break-word\" color=\"theme.error.600\" weight=\"medium\">\r\n Failed to import the following records with IDs: {dataResult?.failed?.map((item:any)=>item.id).join(\", \")}\r\n </Typography> )\r\n } \r\n </div>\r\n ) : (\r\n \"\"\r\n )}\r\n </Box>\r\n </Grow>\r\n )}\r\n </DialogContent>\r\n <DialogActions className=\"uploadActions\">\r\n <Button onClick={onSubmit ? ()=>{\r\n onSubmit(files)\r\n } : importData} startIcon={<Upload />}>Upload</Button>\r\n </DialogActions>\r\n </Dialog>\r\n {isDialogMinimized && (\r\n <div className=\"bottom-corner-box\">\r\n <div className=\"top-section\">\r\n <div className=\"top-text\">\r\n Uploading {files.length} Item{files.length !== 1 ? \"s\" : \"\"}\r\n </div>\r\n <div className=\"top-options\">\r\n <div className=\"btn\" onClick={handleMinimizeClick}>\r\n <RemoveIcon />\r\n </div>\r\n <div className=\"btn\" onClick={toggleCollapse}>\r\n <div className=\"arrow-btn\">\r\n {isCollapsed ? <KeyboardArrowUp /> : <KeyboardArrowDown />}\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div className=\"box-list\">\r\n {!isCollapsed &&\r\n files.map((file: any, index: number) => (\r\n <div className=\"bottom-section\">\r\n <div className=\"doc-icon\">{renderFileIcon(file?.file)}</div>\r\n <div className=\"file-detail\">\r\n <div className=\"file-name\">\r\n <div className=\"file-text\">\r\n {file?.file?.name}\r\n {index}\r\n </div>\r\n </div>\r\n <div className=\"file-status\">\r\n {file?.status !== \"canceled\" ? (\r\n <>\r\n {file.uploadProgress === 0 && (\r\n <div className=\"avatar-container\">\r\n <Avatar\r\n size={20}\r\n className=\"avatar\"\r\n src={images.upload.empty}\r\n ></Avatar>\r\n <Avatar\r\n size={20}\r\n onClick={() => removeFile(index)}\r\n src={images.upload.close}\r\n className=\"close-icon\"\r\n ></Avatar>\r\n </div>\r\n )}\r\n {file?.uploadProgress > 0 &&\r\n file?.uploadProgress < 100 && (\r\n <CircularProgress\r\n color=\"success\"\r\n variant=\"determinate\"\r\n value={file?.uploadProgress}\r\n />\r\n )}\r\n {file?.uploadProgress === 100 && (\r\n <div className=\"avatar-container\">\r\n <Avatar\r\n size={20}\r\n className=\"avatar\"\r\n src={images.upload.tick}\r\n ></Avatar>\r\n <Avatar\r\n size={20}\r\n src={images.upload.folder}\r\n className=\"close-icon\"\r\n ></Avatar>\r\n </div>\r\n )}\r\n </>\r\n ) : (\r\n <Typography type=\"s4\" className=\"canceled-text\">\r\n Upload Canceled\r\n </Typography>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport { UploadExcel };\r\nexport default UploadExcel;\r\n","import Button from '../button/button';\r\nimport Typography from '../typography/typography';\r\n/* eslint-disable no-mixed-spaces-and-tabs */\r\nimport './action-bar.scss';\r\nimport {\r\n\t/* IconButton, */ Box,\r\n\tDivider,\r\n\tIconButton,\r\n\tMenu,\r\n\tMenuItem,\r\n\tuseMediaQuery,\r\n\tuseTheme\r\n} from '@mui/material';\r\nimport AddIcon from '@mui/icons-material/Add';\r\nimport ViewModal from '../view-modal/view-modal';\r\nimport HeaderCard from '../header-card/header-card';\r\nimport SearchBar from '../search-bar/search-bar';\r\nimport { useEffect, useMemo, useState } from 'react';\r\nimport images from '../../assets/images';\r\nimport Toggle from '../toggle/toggle';\r\nimport Filter from '../filter/filter';\r\nimport Select from '../select/select';\r\nimport { RuleGroupType } from 'react-querybuilder';\r\nimport SaveFilterModal from '../save-filter-modal/save-filter-modal';\r\nimport {\r\n\tsetBaseUrl,\r\n\tpostV1Filter,\r\n\tgetV1FilterResource\r\n} from '../../api-client/api.system-feature/api';\r\nimport type * as Types from '../../api-client/api.system-feature/api-types';\r\nimport { auth } from '../../constants/auth';\r\nimport DropdownButton from '../dropdown-button/dropdown-button';\r\nimport TitleDropdownButton from '../title-dropdown-button/title-dropdown-button';\r\nimport { useAppDispatch, useAppSelector } from '../../redux/hooks';\r\nimport { getToken } from '../../utils/common';\r\nimport React from 'react';\r\nimport UploadExcel from '../upload-excel/upload-excel';\r\nimport { generateQueryString, getErrorMessage, getExcelTemplateGenerateTemplate, getOperatorLabel, getExcelExportTemplate, getPdfExportTemplate } from '../../utils/common';\r\nimport { initialFilter, ViewType } from '../../contexts/page-context';\r\nimport { usePages } from '../../hooks/use-pages';\r\nimport Chip from '../chip/chip';\r\nimport formatText, { formatLabel } from '../../utils/format-text';\r\nimport { Cancel } from '@mui/icons-material';\r\nimport { useLocation } from 'react-router-dom';\r\nimport { IResources, routeToResourceMap } from '../../constants/route-page-map';\r\nimport { enqueueSnackbar } from 'notistack';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { FilterRemove, Filter as FilterIcon, Search, FolderSave, Export, Import, DocumentDownload } from '../icons';\r\nimport { co } from 'node_modules/@fullcalendar/core/internal-common';\r\n\r\ninterface ActionData {\r\n\tlabel: string;\r\n\tposition: number;\r\n}\r\ninterface ActionBarPropsType {\r\n\ttitle: string;\r\n\tdata: ActionData[];\r\n\tsetData: React.Dispatch<React.SetStateAction<ActionData[]>>;\r\n\tactive: string;\r\n\tsetActive: (view: ViewType) => void;\r\n\thandleAddButton?: (e?: any) => void;\r\n\tbutton?: boolean;\r\n\thandleSearch?: (value: string) => void;\r\n\tfilters?: string;\r\n\tdisabledViews?: string[];\r\n\tisDropdownMenuButton?: boolean;\r\n\titemListingDropdownOptions?: any;\r\n\tisTitleMenu?: boolean;\r\n\ttitleMenus?: any;\r\n\tfolderData?: any;\r\n\ttype?: any;\r\n\tfields?: any;\r\n\tapplyFilter?: any;\r\n\tsavedFilters?: SavedFilter;\r\n\tsetSavedFilters?: (view: SavedFilter) => void;\r\n\tisToggleButton?: boolean;\r\n\thandleToggleButton?: (e?: any) => void;\r\n\tshowView?: boolean;\r\n\tshowSearch?: boolean;\r\n\tshowFilter?: boolean;\r\n\tcustomButtons?: React.ReactNode[] | JSX.Element[];\r\n\tactionBtn?: React.ReactNode[] | JSX.Element[];\r\n\tpageName?: string;\r\n\timportModuleName?: string;\r\n\tsearchText?: string;\r\n\tselectedIds?: any;\r\n\tisUseFields?: boolean;\r\n\thandleSuccessImport?: (e?: any) => void;\r\n}\r\n\r\ninterface SavedFilter {\r\n\tid: string;\r\n\tname: string;\r\n\tquery: RuleGroupType;\r\n}\r\n\r\nconst ActionBar = React.memo((props: ActionBarPropsType) => {\r\n\tconst token = localStorage.getItem(auth.storageTokenKeyName) || undefined;\r\n\tconst location = useLocation();\r\n\r\n\tconst {\r\n\t\ttitle,\r\n\t\tdata,\r\n\t\tsetData,\r\n\t\tactive,\r\n\t\tsetActive,\r\n\t\thandleAddButton,\r\n\t\thandleSearch,\r\n\t\tbutton = true,\r\n\t\tdisabledViews,\r\n\t\tisDropdownMenuButton = false,\r\n\t\titemListingDropdownOptions = [],\r\n\t\tisTitleMenu = false,\r\n\t\ttitleMenus = [],\r\n\t\ttype,\r\n\t\tfields = [],\r\n\t\tapplyFilter,\r\n\t\t// setSavedFilters,\r\n\t\t// savedFilters,\r\n\t\tisToggleButton = false,\r\n\t\thandleToggleButton,\r\n\t\tshowSearch = true,\r\n\t\tshowFilter = true,\r\n\t\tshowView = true,\r\n\t\tcustomButtons,\r\n\t\tpageName,\r\n\t\tactionBtn,\r\n\t\timportModuleName,\r\n\t\tselectedIds,\r\n\t\tsearchText,\r\n\t\tisUseFields,\r\n\t\thandleSuccessImport\r\n\t} = props;\r\n\tconst dispatch = useAppDispatch();\r\n\tconst [isToggled, setIsToggled] = useState<boolean>(false);\r\n\tconst [isToggledForItem, setIsToggledForItem] = useState<boolean>(false);\r\n\tconst [openFilterPopup, setOpenFilterPopup] = useState<boolean>(false);\r\n\tconst [status, setStatus] = useState<string>('');\r\n\tconst [openSaveFilter, setIsOpenSaveFilter] = useState<boolean>(false);\r\n\tconst [rowAnchorEl, setRowAnchorEl] = useState<null | HTMLElement>(null);\r\n\tconst [isUploadModalOpen, setIsUploadModalOpen] = useState(false);\r\n\tconst [savedFilters, setSavedFilters] = useState<any[]>([]);\r\n\t// const [selectedSavedFilter, setSelectedSavedFilter] = useState<any>(null);\r\n\tconst [searchedText, setSearchedText] = useState<string>(\"\");\r\n\tconst { t } = useTranslation();\r\n\tconst theme = useTheme();\r\n\tconst isLgUp = useMediaQuery(theme.breakpoints.up('xl'));\r\n\tconst { activePage, updatePageInfo, schemaFields, setActivePage } = usePages();\r\n\tconst { filters } = activePage;\r\n\r\n\tconst resources: IResources = useMemo(() => routeToResourceMap[location.pathname] || null, [location.pathname])\r\n\r\n\t// const { filterBar, filterQuery } = useAppSelector((store) => {\r\n\t// \treturn store?.drive;\r\n\t// });\r\n\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\tfetchSavedFilters();\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, []);\r\n\r\n\tconst fetchSavedFilters = async (): Promise<void> => {\r\n\t\tif (resources?.pageResource || resources?.fieldResource) {\r\n\t\t\tgetV1FilterResource({ ...getToken(), resource: resources?.pageResource || resources?.fieldResource })\r\n\t\t\t\t.then((response: any) => {\r\n\t\t\t\t\tconst savedFilters = response.data.result.map((e: any) => {\r\n\t\t\t\t\t\treturn { id: e._id, name: e.name, query: e.data };\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tsetSavedFilters?.(savedFilters);\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err: any) => console.log('Error fetching saved filters:', err));\r\n\t\t} else {\r\n\t\t\tsetSavedFilters([])\r\n\t\t}\r\n\t};\r\n\r\n\r\n\tconst handleFilterHide = () => {\r\n\t\t// dispatch(setFilterBar(false));\r\n\t\treturn\r\n\t};\r\n\r\n\tconst handleStatusChange = (event: any) => {\r\n\t\tsetStatus(event.target.value);\r\n\t};\r\n\r\n\tconst handleSaveFilterClick = () => {\r\n\t\tif (filters?.rules) {\r\n\t\t\tsetIsOpenSaveFilter(true);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleImportClick = (event: any) => {\r\n\t\tsetRowAnchorEl(event.currentTarget);\r\n\t};\r\n\r\n\tconst handleActionsClose = () => {\r\n\t\tsetRowAnchorEl(null);\r\n\t};\r\n\r\n\tconst handleSaveFilter = (query: RuleGroupType) => {\r\n\t\t// dispatch(setFilterQuery(query));\r\n\t\treturn\r\n\t};\r\n\r\n\tconst handleSave = async (name: string, filterQuery: RuleGroupType) => {\r\n\r\n\t\t// dispatch(setFilterBar(false));\r\n\r\n\t\tconst postFilterRequest: Types.PostV1FilterRequest = {\r\n\t\t\t'x-token': token,\r\n\t\t\tmodule: resources?.pageResource || resources?.fieldResource || 'erp-common',\r\n\t\t\tname: name,\r\n\t\t\tis_applied: true,\r\n\t\t\tdata: filterQuery\r\n\t\t};\r\n\t\ttry {\r\n\t\t\tawait postV1Filter(postFilterRequest)\r\n\t\t\tenqueueSnackbar('Filters saved successfully.')\r\n\t\t\tsetActivePage((prev: any) => ({\r\n\t\t\t\t...prev,\r\n\t\t\t\tfilters: {\r\n\t\t\t\t\t...prev.filters,\r\n\t\t\t\t\tname,\r\n\t\t\t\t\trules: filterQuery.rules\r\n\t\t\t\t},\r\n\t\t\t\tfilterQueryString: generateQueryString(filterQuery)\r\n\t\t\t}));\r\n\t\t\tsetIsOpenSaveFilter(false);\r\n\t\t} catch (error) {\r\n\t\t\tlet m: string = 'Something went wrong on saving filters'\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tm = getErrorMessage(error.message)\r\n\t\t\t}\r\n\t\t\tenqueueSnackbar(m, { variant: 'error' })\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn true\r\n\t};\r\n\r\n\tconst handleToggle = () => {\r\n\t\tsetIsToggled((prev) => !prev);\r\n\t\talert('Toggled');\r\n\t};\r\n\r\n\tconst handleChangeToggleButton = () => {\r\n\t\tsetIsToggledForItem((prev) => !prev);\r\n\t\thandleToggleButton?.();\r\n\t};\r\n\r\n\tconst handleCloseFilter = () => {\r\n\t\tsetOpenFilterPopup(false);\r\n\t};\r\n\r\n\tconst handleActiveHeaderCard = (data: ActionData) => {\r\n\t\tsetActive(data?.label);\r\n\t};\r\n\r\n\tconst downloadTemplate = async (moduleName: string) => {\r\n\t\tconst templateURL: any = await getExcelTemplateGenerateTemplate({\r\n\t\t\t'x-token': token,\r\n\t\t\tresource: moduleName\r\n\t\t});\r\n\t\tif (templateURL) {\r\n\t\t\tconst blob = await templateURL.blob();\r\n\r\n\t\t\tconst link = document.createElement('a');\r\n\r\n\t\t\tconst url = window.URL.createObjectURL(blob);\r\n\r\n\t\t\tlink.href = url;\r\n\t\t\tlink.download = `${moduleName}.xlsx`;\r\n\r\n\t\t\tdocument.body.appendChild(link);\r\n\t\t\tlink.click();\r\n\t\t\tdocument.body.removeChild(link);\r\n\t\t\twindow.URL.revokeObjectURL(url);\r\n\t\t}\r\n\t};\r\n\r\n\tconst exportExcel = async (moduleName: string, filterQueryString: string, selectedIds: any, title: string) => {\r\n\t\tconst templateURL: any = await getExcelExportTemplate({\r\n\t\t\t'x-token': token,\r\n\t\t\tactivePage: activePage,\r\n\t\t\tfilterQueryString: filterQueryString,\r\n\t\t\tselectedIds: selectedIds,\r\n\t\t\ttitle: title\r\n\t\t});\r\n\t\tif (templateURL) {\r\n\t\t\tconst blob = await templateURL.blob();\r\n\r\n\t\t\tconst link = document.createElement('a');\r\n\r\n\t\t\tconst url = window.URL.createObjectURL(blob);\r\n\r\n\t\t\tlink.href = url;\r\n\t\t\tlink.download = `${moduleName}.xlsx`;\r\n\r\n\t\t\tdocument.body.appendChild(link);\r\n\t\t\tlink.click();\r\n\t\t\tdocument.body.removeChild(link);\r\n\t\t\twindow.URL.revokeObjectURL(url);\r\n\t\t}\r\n\t};\r\n\r\n\tconst exportPdf = async (moduleName: string, filterQueryString: string, selectedIds: any, title: string) => {\r\n\t\tconst columns = activePage.visible_columns.map((col: any) => ({\r\n\t\t\t...col,\r\n\t\t\theader: t(col.header) \r\n\t\t}));\r\n\t\tconst templateURL: any = await getPdfExportTemplate({\r\n\t\t\t'x-token': token,\r\n\t\t\tactivePage: activePage,\r\n\t\t\tfilterQueryString: filterQueryString,\r\n\t\t\tselectedIds: selectedIds,\r\n\t\t\ttitle: title,\r\n\t\t\tcolumns: columns\r\n\t\t});\r\n\t\tif (templateURL) {\r\n\t\t\tconst blob = await templateURL.blob();\r\n\r\n\t\t\tconst link = document.createElement('a');\r\n\r\n\t\t\tconst url = window.URL.createObjectURL(blob);\r\n\r\n\t\t\tlink.href = url;\r\n\t\t\tlink.download = `${moduleName}.pdf`;\r\n\r\n\t\t\tdocument.body.appendChild(link);\r\n\t\t\tlink.click();\r\n\t\t\tdocument.body.removeChild(link);\r\n\t\t\twindow.URL.revokeObjectURL(url);\r\n\t\t}\r\n\t};\r\n\r\n\tconst openImportTemplate = () => {\r\n\t\tsetIsUploadModalOpen(true);\r\n\t};\r\n\tconst rowActionMenu = [];\r\n\tif (pageName && (!importModuleName || selectedIds)) {\r\n\t\trowActionMenu.push({\r\n\t\t\tlabel: 'Export Excel',\r\n\t\t\thandleAction: (moduleName: string) => exportExcel(moduleName, activePage.filterQueryString, selectedIds, title),\r\n\t\t\ticon: <Export fontSize='small' />\r\n\t\t})\r\n\t}\r\n\tif(pageName && (!importModuleName || selectedIds)){\r\n\t\trowActionMenu.push({\r\n\t\t\tlabel: 'Export PDF',\r\n\t\t\thandleAction: (moduleName: string) => exportPdf(moduleName, activePage.filterQueryString, selectedIds, title),\r\n\t\t\ticon: <Export fontSize='small'/>\r\n\t\t})\r\n\t}\r\n\tif (pageName && importModuleName) {\r\n\t\t{\r\n\t\t\trowActionMenu.push({\r\n\t\t\t\tlabel: 'Download Template ',\r\n\t\t\t\thandleAction: (moduleName: string) => downloadTemplate(moduleName),\r\n\t\t\t\ticon: <DocumentDownload fontSize='small' />\r\n\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Import Template',\r\n\t\t\t\t\thandleAction: (moduleName: string) => openImportTemplate(moduleName),\r\n\t\t\t\t\ticon: <Import fontSize='small' />\r\n\t\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\tconst getFilterChipLabels = (rule: any) => {\r\n\t\trule = { ...rule, field: rule.field?.replace(\"__replaceKey\", '') }\r\n\t\tlet label = schemaFields.find((f: any) => f.key === rule.field)?.label || rule.field;\r\n\t\tlabel = formatLabel(label?.replace('_id', ' '));\r\n\t\tconst opLabel = getOperatorLabel(rule, schemaFields);\r\n\r\n\t\tlet value = rule.value;\r\n\t\tif (Array.isArray(rule.value)) {\r\n\t\t\trule.value = rule.value.map(rv => formatLabel(typeof rv === 'object' ? (rv.label) : rv))\r\n\t\t\tvalue = rule.value.join(', ');\r\n\t\t}\r\n\r\n\t\treturn <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\r\n\t\t\t<Typography type='s5' color='theme.secondary.800' weight='medium'>{label}</Typography>\r\n\t\t\t<Divider orientation='vertical' flexItem />\r\n\t\t\t<Typography type='s5' color='theme.primary.800' weight='medium'>{formatText(opLabel)} {value}</Typography>\r\n\t\t</Box>\r\n\t\t// `${label}: ${value}`;\r\n\t};\r\n\r\n\tconst getFilterChip = (rr: any, index: any) => {\r\n\t\treturn (\r\n\t\t\t<Chip\r\n\t\t\t\tlabel={getFilterChipLabels(rr)}\r\n\t\t\t\tvariant='outlined'\r\n\t\t\t\tactive\r\n\t\t\t\tsx={({ palette }) => ({\r\n\t\t\t\t\tbackgroundColor: 'grey.200',\r\n\t\t\t\t\tborderColor: `${palette.grey[300]} !important`,\r\n\t\t\t\t\topacity: 0.8,\r\n\t\t\t\t\t'&:hover': { backgroundColor: `${palette.grey[200]} !important` },\r\n\t\t\t\t\tflexDirection: 'row-reverse',\r\n\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\tgap: 0.75,\r\n\t\t\t\t\tcursor: 'unset'\r\n\t\t\t\t})}\r\n\t\t\t\tdeleteIcon={\r\n\t\t\t\t\t<Cancel\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tfontSize: '1rem !important',\r\n\t\t\t\t\t\t\tcolor: '#919294 !important',\r\n\t\t\t\t\t\t\tmarginRight: 'auto !important',\r\n\t\t\t\t\t\t\tmarginLeft: `0 !important`,\r\n\t\t\t\t\t\t\t'&:hover': {\r\n\t\t\t\t\t\t\t\tcolor: 'inherit !important'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t}\r\n\t\t\t\tonDelete={() => removeSignleFilter(index)}\r\n\t\t\t\tclickable={false}\r\n\t\t\t/>\r\n\t\t)\r\n\t}\r\n\r\n\tconst removeSignleFilter = (ruleIndex: number) => {\r\n\t\tconst uRules: any[] = filters.rules.filter(\r\n\t\t\t(_, index) => index !== ruleIndex\r\n\t\t);\r\n\t\tconst uFilters = { ...filters, rules: uRules };\r\n\t\tconst filterQueryString = generateQueryString(uFilters);\r\n\r\n\t\tupdatePageInfo({\r\n\t\t\tfilters: uFilters,\r\n\t\t\tfilterQueryString\r\n\t\t});\r\n\t};\r\n\r\n\tconst isFilterApplied = (flt: any): boolean => Boolean(flt?.rules?.length);\r\n\tconst [searchAnchorEl, setSearchAnchorEl] = useState<HTMLElement | null>(null);\r\n\t// useEffect(() => {\r\n\t// \tif(activePage?.active_view ){\r\n\t// \t\tconst updateViews=activePage?.views?.length?activePage.views:[{\r\n\t// \t\t\tlabel:activePage?.active_view,\r\n\t// \t\t\tposition:0\r\n\t// \t\t}]\r\n\t// \t\tsetData(updateViews)\r\n\t// \t}\t\t\r\n\t// \t//eslint-disable-next-line\r\n\t// },[isCreatePage,activePage?.active_view])\r\n\r\n\tuseEffect(() => {\r\n\t\tif (activePage?.search) {\r\n\t\t\tsetSearchedText(activePage?.search)\r\n\t\t}\r\n\t}, [activePage?.search])\r\n\r\n\tuseEffect(() => {\r\n\t\tif (searchedText) {\r\n\t\t\thandleSearch?.(searchedText);\r\n\t\t\tupdatePageInfo({ search: searchedText });\r\n\t\t}\r\n\t\t//eslint-disable-next-line\r\n\t}, [searchedText])\r\n\treturn (\r\n\t\t<div>\r\n\t\t\t<div className='action-bar'>\r\n\t\t\t\t<div className='action-bar--LeftContent'>\r\n\t\t\t\t\t{isTitleMenu ? (\r\n\t\t\t\t\t\t<div style={{ zIndex: 999 }}>\r\n\t\t\t\t\t\t\t<TitleDropdownButton\r\n\t\t\t\t\t\t\t\tonClick={handleAddButton}\r\n\t\t\t\t\t\t\t\toptions={titleMenus}\r\n\t\t\t\t\t\t\t\tisMenuThirdItemDisabled={true}\r\n\t\t\t\t\t\t\t\tcurrentTitle={title}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{title}\r\n\t\t\t\t\t\t\t</TitleDropdownButton>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t<Typography type='h3' weight='medium' color='theme.secondary.1000'>\r\n\t\t\t\t\t\t\t{title}\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t<div className='action-bar--HeaderCard'>\r\n\t\t\t\t\t\t{Boolean(data) &&\r\n\t\t\t\t\t\t\tdata\r\n\t\t\t\t\t\t\t\t.map((ele) => ele)\r\n\t\t\t\t\t\t\t\t.sort((a, b) => a.position - b.position)\r\n\t\t\t\t\t\t\t\t.map((item: ActionData) => (\r\n\t\t\t\t\t\t\t\t\t<HeaderCard\r\n\t\t\t\t\t\t\t\t\t\tkey={item?.position}\r\n\t\t\t\t\t\t\t\t\t\ttitle={item?.label}\r\n\t\t\t\t\t\t\t\t\t\tactive={active}\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => handleActiveHeaderCard(item)}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t{showView && (\r\n\t\t\t\t\t\t\t<ViewModal\r\n\t\t\t\t\t\t\t\tsetData={setData}\r\n\t\t\t\t\t\t\t\tdata={data}\r\n\t\t\t\t\t\t\t\tsetActive={setActive}\r\n\t\t\t\t\t\t\t\tdisabledViews={disabledViews}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div className='action-bar--RightContent' style={{ gap: isLgUp ? `1rem` : `0.5rem` }}>\r\n\t\t\t\t\t{isToggleButton && (\r\n\t\t\t\t\t\t<div className='item--VariantDisplay'>\r\n\t\t\t\t\t\t\t<div className='item--VariantHeading'>Variant:</div>\r\n\t\t\t\t\t\t\t<div className='item--VariantToggal'>\r\n\t\t\t\t\t\t\t\t<Toggle\r\n\t\t\t\t\t\t\t\t\tchecked={isToggledForItem}\r\n\t\t\t\t\t\t\t\t\tonChange={handleChangeToggleButton}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{showSearch && (\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t{isLgUp ?\r\n\t\t\t\t\t\t\t\t<SearchBar\r\n\t\t\t\t\t\t\t\t\tplaceholder='Search'\r\n\t\t\t\t\t\t\t\t\thandleSearch={(e) => {\r\n\t\t\t\t\t\t\t\t\t\tsetSearchedText(e);\r\n\t\t\t\t\t\t\t\t\t\thandleSearch?.(e);\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tdebounceTime={1000}\r\n\t\t\t\t\t\t\t\t\tisDrivePage={true}\r\n\t\t\t\t\t\t\t\t\tsearchText={searchedText}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t<IconButton size='small' onClick={(e) => setSearchAnchorEl(e.currentTarget)}><Search fontSize='small' color='grey.1000' /> </IconButton>\r\n\t\t\t\t\t\t\t\t\t<Menu\r\n\t\t\t\t\t\t\t\t\t\tanchorEl={searchAnchorEl}\r\n\t\t\t\t\t\t\t\t\t\topen={Boolean(searchAnchorEl)}\r\n\t\t\t\t\t\t\t\t\t\tonClose={() => setSearchAnchorEl(null)}\r\n\t\t\t\t\t\t\t\t\t\tanchorOrigin={{\r\n\t\t\t\t\t\t\t\t\t\t\tvertical: 'top',\r\n\t\t\t\t\t\t\t\t\t\t\thorizontal: 'right',\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\ttransformOrigin={{\r\n\t\t\t\t\t\t\t\t\t\t\tvertical: 'top',\r\n\t\t\t\t\t\t\t\t\t\t\thorizontal: 'right',\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tsx={{ '& ul': { p: 0 }, '& .MuiMenu-paper': { boxShadow: `0px 4px 6px rgba(0, 0, 0, 0.1), 0px 1px 3px rgba(0, 0, 0, 0.06);` } }}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t<SearchBar\r\n\t\t\t\t\t\t\t\t\t\t\tplaceholder='Search'\r\n\t\t\t\t\t\t\t\t\t\t\thandleSearch={(e) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetSearchedText(e);\r\n\t\t\t\t\t\t\t\t\t\t\t\thandleSearch?.(e);\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\tdebounceTime={1000}\r\n\t\t\t\t\t\t\t\t\t\t\tisDrivePage={true}\r\n\t\t\t\t\t\t\t\t\t\t\tsearchText={searchText || searchedText}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t</Menu>\r\n\t\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{showFilter && (\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t{isLgUp ?\r\n\t\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\t\t// sx={{display:\"none\"}}\r\n\t\t\t\t\t\t\t\t\tvariant='text'\r\n\t\t\t\t\t\t\t\t\tstartIcon={<FilterIcon fontSize='small' />}\r\n\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\tsetOpenFilterPopup(true);\r\n\t\t\t\t\t\t\t\t\t\tfetchSavedFilters();\r\n\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t{t('common.filter')}\r\n\t\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t\t<IconButton onClick={() => {\r\n\t\t\t\t\t\t\t\t\tsetOpenFilterPopup(true);\r\n\t\t\t\t\t\t\t\t\tfetchSavedFilters();\r\n\t\t\t\t\t\t\t\t}} size='small'>\r\n\t\t\t\t\t\t\t\t\t<FilterIcon fontSize='small' color='grey.1000' />\r\n\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</>\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t{customButtons}\r\n\t\t\t\t\t{actionBtn}\r\n\t\t\t\t\t{button && (\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant='contained'\r\n\t\t\t\t\t\t\tstartIcon={<AddIcon />}\r\n\t\t\t\t\t\t\tonClick={handleAddButton}>\r\n\t\t\t\t\t\t\t{t('common.add')}\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{isDropdownMenuButton && (\r\n\t\t\t\t\t\t<div style={{ zIndex: 999 }}>\r\n\t\t\t\t\t\t\t<DropdownButton\r\n\t\t\t\t\t\t\t\tonClick={handleAddButton}\r\n\t\t\t\t\t\t\t\toptions={itemListingDropdownOptions}\r\n\t\t\t\t\t\t\t\tstartIcon={<AddIcon />}\r\n\t\t\t\t\t\t\t\tisMenuThirdItemDisabled={true}>\r\n\t\t\t\t\t\t\t\t{t('common.add')}\r\n\t\t\t\t\t\t\t</DropdownButton>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t{pageName ? (\r\n\t\t\t\t\t\t<IconButton onClick={(e) => handleImportClick(e)}>\r\n\t\t\t\t\t\t\t<img src={images.more} alt='More Icon' />\r\n\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t''\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t<Menu\r\n\t\t\t\t\t\tanchorEl={rowAnchorEl}\r\n\t\t\t\t\t\topen={Boolean(rowAnchorEl)}\r\n\t\t\t\t\t\tonClose={handleActionsClose}>\r\n\t\t\t\t\t\t{rowActionMenu?.map((option: any) => {\r\n\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t<MenuItem\r\n\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\toption.handleAction(pageName);\r\n\t\t\t\t\t\t\t\t\t\tsetRowAnchorEl(null);\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tsx={{ alignItems: 'center', gap: 0.5 }}\r\n\t\t\t\t\t\t\t\t\tdisabled={\r\n\t\t\t\t\t\t\t\t\t\ttypeof option.disabled === 'function'\r\n\t\t\t\t\t\t\t\t\t\t\t? option.disabled()\r\n\t\t\t\t\t\t\t\t\t\t\t: Boolean(option.disabled)\r\n\t\t\t\t\t\t\t\t\t}>\r\n\t\t\t\t\t\t\t\t\t{option?.icon}\r\n\t\t\t\t\t\t\t\t\t<Typography type='s4' color='inherit'>\r\n\t\t\t\t\t\t\t\t\t\t{option.label}\r\n\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t</MenuItem>\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t})}\r\n\t\t\t\t\t</Menu>\r\n\r\n\t\t\t\t\t<Filter\r\n\t\t\t\t\t\topen={openFilterPopup}\r\n\t\t\t\t\t\tonClose={handleCloseFilter}\r\n\t\t\t\t\t\tactiveView={active}\r\n\t\t\t\t\t\tsavedFilters={savedFilters}\r\n\t\t\t\t\t\tfetchSavedFilters={fetchSavedFilters}\r\n\t\t\t\t\t\tonSaveFilter={handleSaveFilter}\r\n\t\t\t\t\t\ttype={type}\r\n\t\t\t\t\t\tisUseFields={isUseFields}\r\n\t\t\t\t\t\tfields={fields}\r\n\t\t\t\t\t\tonSelectedFilter={f => setSelectedSavedFilter(f)}\r\n\t\t\t\t\t\tapplyFilter={applyFilter}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\r\n\t\t\t{/* Applied Filters view (Start) */}\r\n\t\t\t{isFilterApplied(filters) && (\r\n\t\t\t\t<Box\r\n\t\t\t\t\tmb={1}\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\t\tjustifyContent: 'space-between'\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tmb={1}\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\t\t\tgap: 1,\r\n\t\t\t\t\t\t\tmaxWidth: 400\r\n\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\r\n\t\t\t\t\t\t\t{t('common.filters')}:{' '}\r\n\t\t\t\t\t\t</Typography>\r\n\r\n\t\t\t\t\t\t{filters?.rules?.map((r, rIndex) => (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t{r?.rules?.length ? (\r\n\t\t\t\t\t\t\t\t\tr?.rules?.map((rr, rrIndex) => (\r\n\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t{getFilterChip(rr, rrIndex)}\r\n\t\t\t\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t\t\t) : <>\r\n\t\t\t\t\t\t\t\t\t{getFilterChip(r, rIndex)}\r\n\r\n\t\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant='text'\r\n\t\t\t\t\t\t\tclassName='enable-filter-btn'\r\n\t\t\t\t\t\t\tstartIcon={<FolderSave fontSize='small' />}\r\n\t\t\t\t\t\t\tonClick={handleSaveFilterClick}>\r\n\t\t\t\t\t\t\t<span> {t('common.saveFilter')}</span>\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t{/* {selectedSavedFilter && \r\n\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant='text'\r\n\t\t\t\t\t\t\tclassName='enable-filter-btn'\r\n\t\t\t\t\t\t\tstartIcon={<img src={images.common.saveFilterIcon} alt='Add Icon' />}\r\n\t\t\t\t\t\t\tonClick={handleSaveFilterClick}>\r\n\t\t\t\t\t\t\t\t<Typography type='s3' color=\"theme.secondary.1000\" weight='medium'>\r\n\t\t\t\t\t\t\t\t\tUpdate Filter <Typography type='s3' weight='medium'>{`(${selectedSavedFilter.name})`}</Typography>\r\n\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t} */}\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant='text'\r\n\t\t\t\t\t\t\tstartIcon={<FilterRemove fontSize='small' />}\r\n\t\t\t\t\t\t\tonClick={() =>\r\n\t\t\t\t\t\t\t\tupdatePageInfo({\r\n\t\t\t\t\t\t\t\t\tfilters: initialFilter,\r\n\t\t\t\t\t\t\t\t\tfilterQueryString: ''\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}>\r\n\t\t\t\t\t\t\t{t('common.clearFilter')}\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Box>\r\n\t\t\t)}\r\n\t\t\t{/* Applied Filters view (End) */}\r\n\r\n\t\t\t{/* {filterBar && (\r\n\t\t\t\t<div className='filter-bar'>\r\n\t\t\t\t\t<div className='filter-bar--LeftContent'>\r\n\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t<Select\r\n\t\t\t\t\t\t\t\tfullWidth\r\n\t\t\t\t\t\t\t\tplaceholder='Placeholder'\r\n\t\t\t\t\t\t\t\tsize={'small'}\r\n\t\t\t\t\t\t\t\tclassName='status-changes-drp'\r\n\t\t\t\t\t\t\t\tvalue={status}\r\n\t\t\t\t\t\t\t\tonChange={handleStatusChange}\r\n\t\t\t\t\t\t\t\tvariant='outlined'>\r\n\t\t\t\t\t\t\t\t<MenuItem value={'Status'}>{t('common.status')}</MenuItem>\r\n\t\t\t\t\t\t\t\t<MenuItem value={'Show'}>{t('common.show')}</MenuItem>\r\n\t\t\t\t\t\t\t</Select>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<Typography className='subtask-switch' variant='h6'>\r\n\t\t\t\t\t\t\t{t('common.subtask')}\r\n\t\t\t\t\t\t\t<Toggle checked={isToggled} onChange={handleToggle} />\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t|\r\n\t\t\t\t\t\t<Button className='hide-btn' onClick={handleFilterHide}>\r\n\t\t\t\t\t\t\t{t('common.hide')}\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div className='filter-bar--RightContent'>\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\tvariant='text'\r\n\t\t\t\t\t\t\tclassName='enable-filter-btn'\r\n\t\t\t\t\t\t\tonClick={handleSaveFilterClick}>\r\n\t\t\t\t\t\t\t<img src={images.common.saveFilterIcon} alt='Add Icon' />\r\n\t\t\t\t\t\t\t<span>{t('common.saveFilter')}</span>\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t)} */}\r\n\t\t\t<SaveFilterModal\r\n\t\t\t\topen={openSaveFilter}\r\n\t\t\t\tonClose={() => setIsOpenSaveFilter(false)}\r\n\t\t\t\thandleSubmit={(name: any) =>\r\n\t\t\t\t\thandleSave(name, filters as RuleGroupType)\r\n\t\t\t\t}\r\n\t\t\t/>\r\n\t\t\t<UploadExcel\r\n\t\t\t\topen={isUploadModalOpen}\r\n\t\t\t\tshowCameraButton={false}\r\n\t\t\t\tonClose={() => setIsUploadModalOpen(false)}\r\n\t\t\t\tonConfirm={() => setIsUploadModalOpen(true)}\r\n\t\t\t\ttitle='Upload'\r\n\t\t\t\tmultiple={false}\r\n\t\t\t\timportModuleName={importModuleName}\r\n\t\t\t\tpageName={importModuleName}\r\n\t\t\t\thandleSuccessImport={handleSuccessImport}\r\n\t\t\t\taccept='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n\t\t\t/>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nexport { ActionBar };\r\nexport default ActionBar;\r\n","import { Box, Breadcrumbs, BreadcrumbsProps } from '@mui/material';\nimport Typography from '../typography/typography';\nimport { Link } from 'react-router-dom';\n\ninterface BreadCrumbSlot {\n\tlink?: string;\n\tlabel: string | JSX.Element;\n\tlinkState?: any;\n\tonClick?: () => void;\n}\n\ninterface PropsType extends BreadcrumbsProps {\n\tpath: BreadCrumbSlot[];\n}\n\nconst BreadCrumb = (props: PropsType) => {\n\tconst { path } = props;\n\n\treturn (\n\t\t<>\n\t\t\t<Breadcrumbs\n\t\t\t\tsx={{\n\t\t\t\t\t'& .MuiBreadcrumbs-separator': {\n\t\t\t\t\t\tcolor: 'theme.secondary.600'\n\t\t\t\t\t}\n\t\t\t\t}}>\n\t\t\t\t{path?.map((slot, index) => (\n\t\t\t\t\t<Box key={index}>\n\t\t\t\t\t\t{index < path?.length - 1 ? (\n\t\t\t\t\t\t\t// <Link\n\t\t\t\t\t\t\t// \tto={String(slot?.link) ?? undefined}\n\t\t\t\t\t\t\t// \tstyle={{ display: 'block' }}>\n\t\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\t\ttype='s4'\n\t\t\t\t\t\t\t\t\tcolor='theme.secondary.600'\n\t\t\t\t\t\t\t\t\tweight='medium'\n\t\t\t\t\t\t\t\t\tcomponent={slot?.link ? Link : undefined}\n\t\t\t\t\t\t\t\t\tto={String(slot?.link) ?? undefined}\n\t\t\t\t\t\t\t\t\tstate={slot?.linkState}\n\t\t\t\t\t\t\t\t\tonClick={slot?.onClick} style={{ display: 'block' }}>\n\t\t\t\t\t\t\t\t\t{slot?.label}\n\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t// </Link>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\ttype='s4'\n\t\t\t\t\t\t\t\tweight='medium'\n\t\t\t\t\t\t\t\tcolor='theme.secondary.1000'>\n\t\t\t\t\t\t\t\t{slot?.label}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Box>\n\t\t\t\t))}\n\t\t\t</Breadcrumbs>\n\t\t</>\n\t);\n};\n\nexport { BreadCrumb };\nexport default BreadCrumb;\n","import { InputAdornment } from \"@mui/material\";\nimport TextField from \"../text-field/text-field\";\nimport ColorLensIcon from '@mui/icons-material/ColorLens';\nimport _ from \"lodash\";\nimport React from \"react\";\n\nconst ColorPickerInput = ({value, onChange, label, ...props}) => {\n\n // Debounced function to update text\n const debouncedSetColor = (\n _.debounce((value) => {\n onChange(value)\n }, 500)\n );\n\n const handleColorChange = (e) => {\n debouncedSetColor(e.target.value);\n };\n\n return (\n <TextField\n label={label || ''}\n variant='outlined'\n type=\"color\"\n value={value}\n onChange={handleColorChange}\n size=\"small\"\n fullWidth\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <ColorLensIcon fontSize=\"small\" />\n </InputAdornment>\n ),\n }}\n {...props}\n />\n );\n}\n \nexport { ColorPickerInput };\nexport default ColorPickerInput;","import Typography from \"../typography/typography\";\nimport { Box } from \"@mui/material\";\nimport \"./fallback.scss\";\n\ninterface FallbackProps {\n heading: string;\n subHeading: string;\n icon: React.ReactNode;\n children?: React.ReactNode;\n}\n\nconst Fallback = (props: FallbackProps) => {\n const { heading, subHeading, icon, children, ...rest } = props;\n return (\n <Box className=\"fallback\" {...rest}>\n {icon}\n <Typography\n type=\"h5\"\n weight=\"medium\"\n color=\"theme.secondary.1000\"\n className=\"fallback--Text\"\n >\n {heading}\n </Typography>\n <Typography\n type=\"s3\"\n weight=\"medium\"\n color=\"theme.secondary.800\"\n className=\"fallback--Text\"\n >\n {subHeading}\n </Typography>\n <div>{children}</div>\n </Box>\n );\n};\n\nexport { Fallback };\nexport default Fallback;\n","import { Box, IconButton, MenuItem, SelectChangeEvent, TextField } from \"@mui/material\";\r\nimport Typography from \"../typography/typography\";\r\nimport Select from \"../select/select\";\r\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\r\nimport ChevronRightICon from \"@mui/icons-material/ChevronRight\";\r\nimport \"./pagination.scss\";\r\nimport { IPaginationModel } from \"../../@types/pagination-model\";\r\nimport { useLanguage } from \"../../hooks/useLangauge\";\r\nimport { usePages } from \"../../hooks/use-pages\";\r\nimport { useEffect } from \"react\";\r\n\r\ninterface IPagination {\r\n paginationModel: IPaginationModel;\r\n handlePaginationModel: (model: IPaginationModel) => void;\r\n totalPages: number;\r\n}\r\n\r\nconst Pagination = ({\r\n paginationModel,\r\n totalPages,\r\n handlePaginationModel,\r\n}: IPagination) => {\r\n const { pageNo, limit } = paginationModel;\r\n const skip=limit*(pageNo-1)\r\n const pageSizeOptions = [10, 20, 50];\r\n const {isRtl}=useLanguage();\r\n const {setIsChanged,setActivePage,activePage}=usePages();\r\n const handleLimitChange = (e: SelectChangeEvent<unknown>) => {\r\n const newModel = {\r\n ...paginationModel,\r\n page: 1,\r\n pageNo: 1,\r\n limit: e?.target?.value as number,\r\n };\r\n handlePaginationModel(newModel);\r\n };\r\n\r\n const handleNextPage = () => {\r\n if (pageNo < totalPages) {\r\n const newModel = {\r\n ...paginationModel,\r\n pageNo: parseInt(pageNo) + 1,\r\n };\r\n handlePaginationModel(newModel);\r\n setIsChanged(true)\r\n }\r\n };\r\n const handlePrevPage = () => {\r\n if (pageNo > 1) {\r\n const newModel = {\r\n ...paginationModel,\r\n pageNo: parseInt(pageNo) - 1,\r\n };\r\n handlePaginationModel(newModel);\r\n setIsChanged(true)\r\n }\r\n };\r\n\r\n const handleEnterKey = (event) => {\r\n if (event.key === 'Enter') {\r\n const value = event.target.value;\r\n if (parseInt(value) > 0 && parseInt(value) <= totalPages) {\r\n const newModel = {\r\n ...paginationModel,\r\n pageNo: parseInt(value),\r\n }; \r\n handlePaginationModel(newModel);\r\n setIsChanged(true)\r\n }\r\n \r\n }\r\n };\r\n\r\n useEffect(()=>{\r\n setActivePage({...activePage,skip,pageNo})\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n },[pageNo])\r\n\r\n\r\n\r\n return (\r\n <Box className=\"pagination\" borderTop={\"2px solid theme.secondary.200\"}>\r\n <Typography color=\"theme.secondary.800\" type=\"s4\">\r\n Items per page :\r\n </Typography>\r\n <Select\r\n value={limit}\r\n size=\"small\"\r\n className=\"page-size-select page-size-select-pagination\"\r\n onChange={handleLimitChange}\r\n variant=\"outlined\"\r\n MenuProps={{\r\n sx:{\r\n maxWidth:\"unset\"\r\n }\r\n }}\r\n >\r\n {pageSizeOptions?.map((size) => (\r\n <MenuItem key={size} value={size}>\r\n {size}\r\n </MenuItem>\r\n ))}\r\n </Select>\r\n\r\n <Typography color=\"theme.secondary.800\" type=\"s4\">\r\n Go To :\r\n </Typography>\r\n\r\n <TextField\r\n type=\"number\"\r\n className=\"goto-box\"\r\n id=\"outlined-required\"\r\n defaultValue=\"\"\r\n onKeyDown={handleEnterKey}\r\n />\r\n\r\n <IconButton onClick={handlePrevPage} size=\"small\" disabled={paginationModel.pageNo === 1}>\r\n {isRtl ? <ChevronRightICon /> : <ChevronLeftIcon />} \r\n </IconButton>\r\n <Typography\r\n sx={{\r\n ...(isRtl ? { ml: 0.5 } : { mr: 0.5 })\r\n }}\r\n type=\"s4\"\r\n weight=\"normal\"\r\n color=\"theme.secondary.700\"\r\n >\r\n Page{\" \"}\r\n </Typography>\r\n {/* <input value={pageNo} type=\"number\" className=\"page-input\" />{\" \"} */}\r\n <Typography type=\"s4\" weight=\"medium\" color=\"theme.secondary.1000\">\r\n {pageNo}{\" \"}\r\n </Typography>\r\n <Typography\r\n mx={0.5}\r\n type=\"s4\"\r\n weight=\"normal\"\r\n color=\"theme.secondary.700\"\r\n >\r\n of{\" \"}\r\n </Typography>\r\n <Typography type=\"s4\" weight=\"medium\" color=\"theme.secondary.1000\">\r\n {totalPages || 1}\r\n </Typography>\r\n {/* </Box> */}\r\n <IconButton onClick={handleNextPage} size=\"small\" disabled={paginationModel.pageNo === totalPages}>\r\n {isRtl ? <ChevronLeftIcon /> :<ChevronRightICon />}\r\n </IconButton>\r\n </Box>\r\n );\r\n};\r\n\r\nexport { Pagination };\r\nexport default Pagination;\r\n","import {\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n IconButton,\r\n} from \"@mui/material\";\r\nimport Close from \"@mui/icons-material/Close\";\r\nimport Typography from \"../../typography/typography\";\r\nimport TextField from \"../../text-field/text-field\";\r\nimport Button from \"../../button/button\";\r\nimport Modal from \"../../modal/modal\";\r\nimport { useEffect, useMemo, useState } from \"react\";\r\nimport { IPage } from \"../../../@types/page\";\r\n\r\ninterface IAddPage {\r\n open: boolean;\r\n onClose: () => void;\r\n page?: IPage;\r\n handleSubmit: (page: IPage) => void;\r\n pages?: IPage[];\r\n}\r\n\r\nconst AddPageModal = ({ open, onClose, page, handleSubmit, pages }: IAddPage) => {\r\n const [name, setName] = useState<string>();\r\n const [error, setError] = useState<string>(\"\");\r\n const pageNames = useMemo(() => pages?.map((page) => page?.name || \"\"), [pages])\r\n\r\n useEffect(() => {\r\n setName(page?.name);\r\n }, [page]);\r\n\r\n useEffect(() => {\r\n setError(\"\")\r\n }, []);\r\n\r\n const handleSave = () => {\r\n let newPage: any = {};\r\n if (page) {\r\n newPage = {\r\n ...page,\r\n };\r\n }\r\n newPage[\"name\"] = name;\r\n\r\n handleSubmit(newPage);\r\n setName(\"\");\r\n onClose();\r\n };\r\n\r\n const handleInputChange = (e: any) => {\r\n const value = e.target.value\r\n\r\n setName(value)\r\n if (pageNames?.includes(value.trim())) {\r\n setError(\"Page name already in use\")\r\n } else if (!value.trim()) {\r\n setError(\"Page name can not be empty\")\r\n } else {\r\n setError(\"\")\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n <Modal fullWidth onClose={onClose} open={open}>\r\n <DialogTitle>\r\n <Typography type=\"s3\" weight=\"medium\" color={\"theme.secondary.1000\"}>\r\n {page ? \"Edit\" : \"Add\"} New View\r\n </Typography>\r\n <IconButton edge=\"end\" onClick={onClose} size=\"small\">\r\n <Close fontSize=\"inherit\" />\r\n </IconButton>\r\n </DialogTitle>\r\n <DialogContent dividers>\r\n <TextField\r\n label=\"View Name\"\r\n fullWidth\r\n placeholder=\"Enter view name\"\r\n error={error}\r\n helperText={error}\r\n value={name}\r\n onChange={handleInputChange}\r\n />\r\n </DialogContent>\r\n <DialogActions>\r\n <Button\r\n variant=\"outlined\"\r\n onClick={()=>{\r\n onClose();\r\n setName(\"\");\r\n }}\r\n style={{\r\n color: \"black\",\r\n }}\r\n >\r\n Cancel\r\n </Button>\r\n <Button disabled={error || !name} onClick={handleSave}>Save</Button>\r\n </DialogActions>\r\n </Modal>\r\n </>\r\n );\r\n};\r\n\r\nexport { AddPageModal };\r\nexport default AddPageModal;\r\n","import Typography from \"../../typography/typography\";\nimport images from \"../../../assets/images\";\nimport { Box, Tab, Tabs } from \"@mui/material\";\nimport { SyntheticEvent, useState } from \"react\";\n\nfunction SharedPageView(props: any) {\n const { pageValue, pages, onChange } = props;\n const [value, setValue] = useState(pages[pageValue]?.viewStyle - 1);\n\n const handleChange = (_event: SyntheticEvent, newValue: number) => {\n setValue(newValue);\n onChange(newValue + 1);\n };\n\n const renderContentView = () => {\n switch (value) {\n case 0:\n return (\n <img\n className=\"shared-img\"\n src={images.sharedPage.kanbanView}\n alt=\"Kanban View\"\n />\n );\n case 1:\n return (\n <img\n className=\"shared-img\"\n src={images.sharedPage.calendarView}\n alt=\"Gantt View\"\n />\n );\n case 2:\n return (\n <img\n className=\"shared-img\"\n src={images.sharedPage.tableView}\n alt=\"Grid View\"\n />\n );\n case 3:\n return (\n <img\n className=\"shared-img\"\n src={images.sharedPage.ganttView}\n alt=\"Table View\"\n />\n );\n case 4:\n return (\n <img\n className=\"shared-img\"\n src={images.sharedPage.gridView}\n alt=\"Calendar View\"\n />\n );\n default:\n return null;\n }\n };\n\n const renderViewName = (index: number) => {\n switch (index) {\n case 0:\n return value === 0 ? \"Kanban View\" : \"1\";\n case 1:\n return value === 1 ? \"Calendar View\" : \"2\";\n case 2:\n return value === 2 ? \"List View\" : \"3\";\n case 3:\n return value === 3 ? \"Timeline View\" : \"4\";\n case 4:\n return value === 4 ? \"Grid\" : \"5\";\n default:\n return \"\";\n }\n };\n\n return (\n <>\n <div className=\"shared-img-wrap\">\n <Typography>{renderContentView()}</Typography>\n <div className=\"shared-img-tab\">\n <Box sx={{ width: \"100%\" }}>\n <Tabs value={value} onChange={handleChange} centered>\n <Tab key={0} label={renderViewName(0)} />\n <Tab key={1} label={renderViewName(1)} />\n <Tab key={2} label={renderViewName(2)} />\n <Tab key={3} label={renderViewName(3)} />\n <Tab key={4} label={renderViewName(4)} />\n </Tabs>\n </Box>\n </div>\n </div>\n </>\n );\n}\n\nexport { SharedPageView };\nexport default SharedPageView;\n","import {\r\n Box,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n FormControlLabel,\r\n Grid,\r\n IconButton,\r\n Tab,\r\n Tabs,\r\n} from \"@mui/material\";\r\nimport Close from \"@mui/icons-material/Close\";\r\nimport Typography from \"../../typography/typography\";\r\nimport Button from \"../../button/button\";\r\nimport Modal from \"../../modal/modal\";\r\nimport \"./shared-page-modal.scss\";\r\nimport { useEffect, useState } from \"react\";\r\nimport SearchBar from \"../../search-bar/search-bar\";\r\nimport Toggle from \"../../toggle/toggle\";\r\nimport SharedPageView from \"./shared-page-view\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { setSharedPage } from \"../../../views/afterAuth/dashboard/redux/reducer\";\r\n\r\ninterface IAddPage {\r\n open: boolean;\r\n onClose: () => void;\r\n pages?: any;\r\n handleSubmit: (page: any) => void;\r\n}\r\n\r\ninterface TabPanelProps {\r\n children?: React.ReactNode;\r\n index: number;\r\n value: number;\r\n}\r\n\r\nfunction TabPanel(props: TabPanelProps) {\r\n const { children, value, index, ...other } = props;\r\n\r\n return (\r\n <div\r\n className=\"shared-tab\"\r\n role=\"tabpanel\"\r\n hidden={value !== index}\r\n id={`vertical-tabpanel-${index}`}\r\n aria-labelledby={`vertical-tab-${index}`}\r\n {...other}\r\n >\r\n {value === index && (\r\n <Box sx={{ p: 3 }}>\r\n <Typography>{children}</Typography>\r\n </Box>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nfunction a11yProps(index: number) {\r\n return {\r\n id: `vertical-tab-${index}`,\r\n \"aria-controls\": `vertical-tabpanel-${index}`,\r\n };\r\n}\r\n\r\nconst SharedPageModal = ({ open, onClose, pages, handleSubmit }: IAddPage) => {\r\n const [value, setValue] = useState(0);\r\n const [sharedPages, setSharedPages] = useState(pages);\r\n const [searchQuery, setSearchQuery] = useState(\"\");\r\n\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n dispatch(setSharedPage(sharedPages));\r\n }, [dispatch, sharedPages]);\r\n\r\n const handleChange = (_event: React.SyntheticEvent, newValue: number) => {\r\n setValue(newValue);\r\n };\r\n\r\n const handleSave = () => {\r\n handleSubmit(pages[value]);\r\n };\r\n\r\n const renderTabs = () => {\r\n const filteredPages = sharedPages.filter((page: any) =>\r\n page.name.toLowerCase().includes(searchQuery.toLowerCase()),\r\n );\r\n\r\n return filteredPages.map((page: any, index: number) => (\r\n <Tab key={index} label={page.name} {...a11yProps(index)} />\r\n ));\r\n };\r\n\r\n const PageDescription = ({ page }: { page: any }) => {\r\n let viewsMessage = \"\",\r\n filtersMessage = \"\";\r\n\r\n if (page?.details?.views?.length === 1) {\r\n viewsMessage = `This page has 1 view, you can customize it`;\r\n } else if (page?.details?.views?.length) {\r\n viewsMessage = `This page has ${page?.details?.views?.length} different views, you can customize them`;\r\n } else {\r\n viewsMessage = `In this page you can add different views and customize them`;\r\n }\r\n\r\n if (page?.details?.filters?.length === 1) {\r\n filtersMessage = `, and it also have a saved filters to make things easier for you.`;\r\n } else if (page?.details?.filters?.length) {\r\n filtersMessage = `, and there are also ${page?.details?.filters?.length} saved filters to make things easier for you.`;\r\n } else {\r\n filtersMessage = `, and you can also add filters to make things easier for you`;\r\n }\r\n\r\n return <p>{viewsMessage + filtersMessage}</p>;\r\n };\r\n\r\n const handleToggle = () => {\r\n setSharedPages((prevPages: any) => {\r\n const updatedPages = prevPages.map((page: any, index: any) => {\r\n if (index === value) {\r\n return {\r\n ...page,\r\n isPinToDashboard: !page.isPinToDashboard,\r\n };\r\n }\r\n return page;\r\n });\r\n return updatedPages;\r\n });\r\n };\r\n\r\n const handleSharedView = (viewStyle: number) => {\r\n setSharedPages((prevPages: any) => {\r\n const updatedPages = prevPages.map((page: any, index: any) => {\r\n if (index === value) {\r\n return {\r\n ...page,\r\n viewStyle: viewStyle,\r\n };\r\n }\r\n return page;\r\n });\r\n return updatedPages;\r\n });\r\n };\r\n\r\n const handleSearchBar = (value: string) => {\r\n setSearchQuery(value);\r\n setValue(0);\r\n };\r\n return (\r\n <>\r\n <Modal\r\n fullWidth\r\n onClose={onClose}\r\n open={open}\r\n className=\"shared-pages-modal\"\r\n >\r\n <DialogTitle>\r\n <Typography type=\"s3\" weight=\"medium\" color={\"theme.secondary.1000\"}>\r\n Shared Views\r\n </Typography>\r\n <IconButton edge=\"end\" onClick={onClose} size=\"small\">\r\n <Close fontSize=\"inherit\" />\r\n </IconButton>\r\n </DialogTitle>\r\n <DialogContent dividers>\r\n {sharedPages?.length ?\r\n <Box>\r\n <Grid container spacing={2}>\r\n <Grid item xs={4} className=\"tab-title-wrap\">\r\n <div className=\"tab-search-wrap\">\r\n <SearchBar\r\n placeholder={\"Search User\"}\r\n handleSearch={handleSearchBar}\r\n />\r\n </div>\r\n <Tabs\r\n orientation=\"vertical\"\r\n variant=\"scrollable\"\r\n value={value}\r\n onChange={handleChange}\r\n aria-label=\"Vertical tabs example\"\r\n sx={{ borderRight: 1, borderColor: \"divider\" }}\r\n >\r\n {renderTabs()}\r\n </Tabs>\r\n </Grid>\r\n <Grid className=\"shared-grid-wrap\" item xs={8}>\r\n {sharedPages\r\n .filter((page: any) =>\r\n page.name.toLowerCase().includes(searchQuery.toLowerCase()),\r\n )\r\n .map((page: any, index: number) => (\r\n <TabPanel value={value} index={index} key={index}>\r\n <div className=\"shared-pages-main\">\r\n <SharedPageView\r\n pageValue={index}\r\n pages={sharedPages}\r\n onChange={handleSharedView}\r\n />\r\n </div>\r\n <div className=\"tab-info-wrap\">\r\n <div className=\"tab-inner-info\">\r\n <div>\r\n <h1>{page.name}</h1>\r\n </div>\r\n <div className=\"tab-toggle\">\r\n <div>\r\n <FormControlLabel\r\n control={\r\n <Toggle\r\n checked={page.isPinToDashboard}\r\n onChange={handleToggle}\r\n />\r\n }\r\n label=\"Pined to dashboard\"\r\n labelPlacement=\"start\"\r\n />\r\n </div>\r\n <div className=\"owner-name-wrap\">\r\n <p>\r\n <span>Owner:</span> {page.owner}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"tab-content\">\r\n <PageDescription page={page} />\r\n </div>\r\n </div>\r\n </TabPanel>\r\n ))}\r\n </Grid>\r\n </Grid>\r\n </Box>\r\n : <Box display='flex' width='100%' height='100%' alignItems='center' justifyContent='center'><Typography type=\"s1\" color='theme.secondary.800'>No Views has been shared with you</Typography></Box>}\r\n </DialogContent>\r\n <DialogActions>\r\n <Button\r\n variant=\"outlined\"\r\n onClick={onClose}\r\n style={{\r\n color: \"black\",\r\n }}\r\n disabled={!sharedPages?.length}\r\n >\r\n Cancel\r\n </Button>\r\n <Button onClick={handleSave} disabled={!sharedPages?.length}>Duplicate</Button>\r\n </DialogActions>\r\n </Modal>\r\n </>\r\n );\r\n};\r\n\r\nexport { SharedPageModal };\r\nexport default SharedPageModal;\r\n","import React from \"react\";\r\nimport { IconButton, Menu, MenuItem } from \"@mui/material\";\r\nimport AddCircleOutlineRoundedIcon from \"@mui/icons-material/AddCircleOutlineRounded\";\r\nimport Typography from \"../../typography/typography\";\r\nimport AddPageModal from \"./add-page-modal\";\r\nimport KeyboardArrowRightIcon from \"@mui/icons-material/KeyboardArrowRight\";\r\nimport { IPage } from \"../../../@types/page\";\r\nimport SharedPageModal from \"./shared-page-modal\";\r\n\r\ninterface IAddPage {\r\n sharedPages: any;\r\n handleAddPage: (view: IPage) => void;\r\n pages?: IPage[];\r\n}\r\n\r\nconst AddPage = ({ sharedPages, handleAddPage, pages }: IAddPage) => {\r\n const [isAddMenuOpen, setIsAddMenuOpen] = React.useState<null | HTMLElement>(\r\n null,\r\n );\r\n const [isAddPageModalOpen, setIsAddPageModalOpen] = React.useState(false);\r\n const [isSharedPageModalOpen, setIsSharedPageModalOpen] =\r\n React.useState(false);\r\n\r\n const handleAddMenuOpen = (event: React.MouseEvent<HTMLButtonElement>) => {\r\n event.stopPropagation();\r\n setIsAddMenuOpen(event.currentTarget);\r\n };\r\n const handleAddMenuClose = () => setIsAddMenuOpen(null);\r\n\r\n const handleOpenAddPageModal = () => {\r\n handleAddMenuClose();\r\n setIsAddPageModalOpen(true);\r\n };\r\n const handleCloseAddPageModal = () => setIsAddPageModalOpen(false);\r\n\r\n const handleCloseSharedModal = () => {\r\n setIsSharedPageModalOpen(false);\r\n };\r\n const handleOpenSharedPageModal = () => {\r\n setIsSharedPageModalOpen(true);\r\n setIsAddMenuOpen(null);\r\n };\r\n const handleShared = (page: any) => {\r\n const newPage: any = { ...page.details, name: page.name };\r\n handleAddPage(newPage);\r\n setIsSharedPageModalOpen(false);\r\n };\r\n\r\n return (\r\n <>\r\n <IconButton size=\"small\" sx={{ ml: 1 }} onClick={handleAddMenuOpen}>\r\n <AddCircleOutlineRoundedIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n <Menu\r\n open={Boolean(isAddMenuOpen)}\r\n anchorEl={isAddMenuOpen}\r\n onClose={handleAddMenuClose}\r\n >\r\n <MenuItem onClick={handleOpenAddPageModal}>\r\n <Typography color=\"theme.secondary.1000\" type=\"s4\">\r\n Create New View\r\n </Typography>\r\n </MenuItem>\r\n <MenuItem onClick={handleOpenSharedPageModal}>\r\n <Typography color=\"theme.secondary.1000\" type=\"s4\">\r\n Shared Views\r\n </Typography>\r\n <KeyboardArrowRightIcon fontSize=\"small\" />\r\n </MenuItem>\r\n </Menu>\r\n\r\n <AddPageModal\r\n pages={pages}\r\n open={isAddPageModalOpen}\r\n onClose={handleCloseAddPageModal}\r\n handleSubmit={handleAddPage}\r\n />\r\n <SharedPageModal\r\n open={isSharedPageModalOpen}\r\n pages={sharedPages || []}\r\n onClose={handleCloseSharedModal}\r\n handleSubmit={handleShared}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport { AddPage };\r\nexport default AddPage;\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable unused-imports/no-unused-vars */\nimport {\n Box,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n IconButton,\n Accordion,\n AccordionSummary,\n AccordionDetails,\n List,\n ListItem,\n ListItemText,\n ListItemAvatar,\n MenuItem,\n FormControlLabel,\n} from \"@mui/material\";\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport Typography from \"../typography/typography\";\n\nimport Button from \"../button/button\";\nimport Avatar from \"../avatar/avatar\";\nimport Select from \"../select/select\";\nimport \"./share-modal.scss\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useAppDispatch, useAppSelector } from \"../../redux/hooks\";\nimport { getAllUserAndDepartmentDropdown } from \"./redux/actionCreator\";\nimport React from \"react\";\nimport Toggle from \"../toggle/toggle\";\nimport SearchableSelect from \"../searchable-select\";\nimport { flatMap } from \"lodash\";\nimport Checkbox from \"../checkbox/checkbox\";\n\ninterface SharePopUpProps {\n open: boolean;\n title: string;\n onClose: () => void;\n roles?: any;\n toggleSwitch: boolean;\n onSubmit: (selectedUsers: any) => void;\n value?: any;\n isPeopleAccessVisible?: boolean;\n}\ninterface UserDropdownData {\n isRoleVisible: boolean;\n selectedUsers: any[];\n}\n\nconst SharePopUp = (props: SharePopUpProps) => {\n const {\n open,\n title,\n onClose,\n roles,\n toggleSwitch,\n onSubmit,\n value = {},\n isPeopleAccessVisible = false,\n } = props;\n\n const { share } = useAppSelector((store) => store);\n\n const dispatch = useAppDispatch();\n\n const [isPublic, setIsPublic] = useState(value.isPublic || false);\n const [selectedOptions, setSelectedOptions] = useState(\n value.selectedUsers || [],\n );\n const [roleValue, setRoleValue] = useState([]);\n const [availableRole, setAvailableRole] = useState([]);\n\n const [userDropdownData, setUserDropdownData] = useState<UserDropdownData>({\n isRoleVisible: false,\n selectedUsers: [],\n });\n\nconst filteredOptions=useMemo(()=>userDropdownData?.isRoleVisible ? share.departments : share.users,[share,userDropdownData?.isRoleVisible])\nconst [selectedUsers, setSelectedUsers] = useState<any[]>([]);\n useEffect(() => {\n const role: any = [];\n const selRole: any = [];\n roles &&\n roles.map((item: any) => {\n const userRole: any = {};\n if (item.role !== \"Owner\") {\n role.push(item.role);\n userRole.id = item.id;\n userRole.role = item.role;\n selRole.push(userRole);\n }\n setAvailableRole(role);\n setRoleValue(selRole);\n });\n }, [roles]);\n\nuseEffect(()=>{\n if(!value?.selectedUsers?.length && !value?.role_id){\n resetOptions()\nreturn\n }\n userDropdownData.isRoleVisible=value.is_role\n setUserDropdownData(userDropdownData)\n setSelectedOptions({\n ...value,\n selectedUsers:value.is_role?value?.role_id:value?.selectedUsers\n })\n //eslint-disable-next-line\n},[value?.selectedUsers,open])\n\n const handleShareSubmit = () => {\n if(!selectedUsers?.length) return\n const uIds = flatMap(selectedUsers, 'userIds').filter(i=>i);\n let sOptions = selectedUsers\n if( Array.isArray(uIds) && uIds?.length) {\n sOptions = share.users?.filter(u => uIds.includes(u.id))\n \n }\n const sharedData = {\n is_private: !isPublic,\n selectedUsers: [...new Set(sOptions)],\n is_role:userDropdownData?.isRoleVisible,\n role_id:userDropdownData?.isRoleVisible?selectedUsers?.map((u: any) => u?.id):[],\n };\n onSubmit(sharedData);\n \n };\n\n const resetOptions=()=> {\n setSelectedOptions({\n ...value\n });\n setUserDropdownData((prevData) => ({\n ...prevData,\n selectedUsers: [],\n }));\n };\n\n\n\n const handleRoleChange = (event: any, id: any, user: any) => {\n const changeRole: any = roleValue.map((item: any) => {\n if (item.id === id) {\n item.role = event.target.value;\n }\n return item;\n });\n setRoleValue(changeRole);\n };\n\n const handleToggleChange = () => {\n setUserDropdownData((prevSettings) => ({\n ...prevSettings,\n isRoleVisible: !prevSettings.isRoleVisible,\n }));\n setSelectedOptions([]);\n setSelectedUsers(value.selectedUsers || []);\n };\n\n const handleChage=(value:any)=>{\n if(userDropdownData.isRoleVisible){\n setSelectedOptions({...selectedOptions,role_id:value})\n }\n setSelectedOptions({...selectedOptions,selectedUsers:value})\n }\n\n const toggleMakeItPublic = () => {\n setIsPublic(!isPublic);\n }\n \n useEffect(() => {\n if(!open)resetOptions()\n if (open) {\n dispatch(getAllUserAndDepartmentDropdown());\n }\n // eslint-disable-next-line\n }, [open]);\n\n\n\n return (\n <div>\n <Dialog open={open} onClose={onClose} className=\"share\">\n <DialogTitle className=\"share--head\">\n <Box className=\"share--title\">\n <Typography type=\"s3\" ml={1} className=\"dialog-box-title\">\n {title}\n </Typography>\n </Box>\n <IconButton disableRipple onClick={onClose}>\n <CloseIcon />\n </IconButton>\n </DialogTitle>\n\n <Divider />\n\n <DialogContent className=\"share--content\">\n <Box m={1} display={'flex'} alignItems={'center'} justifyContent={'space-between'}>\n <Typography type=\"s3\" className=\"input-label\">\n Add users\n </Typography>\n <FormControlLabel\n control={<Box mb={0.5} mr={0.5}><Toggle checked={userDropdownData?.isRoleVisible} onChange={handleToggleChange} /></Box>}\n label={\n <Typography type=\"s3\" className=\"input-label\">Show only Roles</Typography>\n }\n />\n </Box>\n \n\n {toggleSwitch && (\n <>\n \n <Box mb={4} className=\"d-flex\">\n \n <SearchableSelect \n options={filteredOptions}\n multiple\n value={selectedOptions?.selectedUsers}\n onChange={(e) =>handleChage(e.target.value)}\n placeholder={\n selectedOptions && selectedOptions.length\n ? \"\"\n : \"Add people and roles\"\n }\n getSelectedData={row=>setSelectedUsers(row)}\n />\n </Box>\n </>\n )}\n \n {isPeopleAccessVisible && (\n <div className={ \"share--blurClass\"}>\n <Accordion className=\"people-access-accordion\">\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <Typography>People with access</Typography>\n </AccordionSummary>\n <AccordionDetails className=\"user-accordion-details\">\n <List className=\"accordion-list\">\n {roles &&\n roles.map((user: any) => {\n const userRole: any =\n roleValue?.length > 0 &&\n roleValue?.filter((item: any) => item.id === user.id);\n return (\n <ListItem alignItems=\"flex-start\">\n <ListItemAvatar>\n <Avatar size={40} alt=\"Person\" icon />\n </ListItemAvatar>\n <ListItemText\n className=\"primary-user-name\"\n primary={user.name}\n secondary={\n <Typography\n component=\"span\"\n variant=\"body2\"\n className=\"secondary-email-text\"\n >\n {user.email}\n </Typography>\n }\n />\n {user.role == \"Owner\" ? (\n <p className=\"owner-role-badge\">{user.role}</p>\n ) : (\n <div>\n <Select\n className=\"role-edit-select-box\"\n value={\n userRole?.length > 0 ? userRole[0].role : \"\"\n }\n onChange={(e: any) =>\n handleRoleChange(e, user.id, user)\n }\n variant=\"outlined\"\n >\n {availableRole.map((role: any) => (\n <MenuItem\n className=\"select-menu-items\"\n value={role}\n >\n {role}\n </MenuItem>\n ))}\n </Select>\n </div>\n )}\n </ListItem>\n );\n })}\n </List>\n </AccordionDetails>\n </Accordion>\n </div>\n )}\n\n <div className=\"checkbox\">\n <Checkbox\n checked={isPublic}\n onChange={toggleMakeItPublic}\n />\n <div className=\"checkbox-text\">Make it public</div>\n </div>\n </DialogContent>\n\n <Divider />\n\n <DialogActions className=\"share--actions\">\n <Button className=\"cancel-btn\" variant=\"text\" onClick={onClose}>\n Cancel\n </Button>\n <Button className=\"success-btn\" onClick={handleShareSubmit}>\n Save and Share\n </Button>\n </DialogActions>\n </Dialog>\n </div>\n );\n};\n\nexport { SharePopUp };\nexport default SharePopUp;\n","export const userRoles = [\r\n {\r\n id: 1,\r\n name: \"Prasun Singh\",\r\n email: \"prasun@goldenflitch.com\",\r\n role: \"Owner\",\r\n },\r\n {\r\n id: 2,\r\n name: \"Sidhant Chandel\",\r\n email: \"sidhant@goldenflitch.com\",\r\n role: \"Editor\",\r\n },\r\n {\r\n id: 3,\r\n name: \"Amrit Sonar\",\r\n email: \"amrit@goldenflitch.com\",\r\n role: \"Viewer\",\r\n },\r\n];\r\n","import { Divider, MenuItem } from \"@mui/material\";\nimport Menu from \"../../menu/menu\";\nimport Typography from \"../../typography/typography\";\nimport { useEffect, useState } from \"react\";\nimport AddPageModal from \"./add-page-modal\";\nimport { IPage } from \"../../../@types/page\";\nimport SharePopUp from \"../../share-modal/share-modal\";\nimport { userRoles } from \"../../../views/beforeAuth/components/share-modal-data/share-modal-data\";\nimport ConfirmPopUp from \"../../confirm-modal/confirm-modal\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { pinToDashboardList } from \"../../../views/afterAuth/dashboard/redux/reducer\";\nimport {\n // deleteV1DashboardId,\n // putV1DashboardId,\n} from \"../../../api-client/api.system-feature/api\";\n// import type * as Types from \"../../api-client/api.system-feature/api-types\";\nimport { sharePage } from \"../../share-modal/redux/actionCreator\";\nimport { useAppDispatch } from \"../../../redux/hooks\";\nimport { generateRandomId } from \"../../../utils/common\";\nimport { usePages } from \"../../../hooks/use-pages\";\n\ninterface IPageAction {\n open: null | HTMLElement;\n onClose: () => void;\n page?: IPage;\n pages: IPage[];\n setCurrentPage: React.Dispatch<React.SetStateAction<number>>;\n setPages: React.Dispatch<React.SetStateAction<IPage[]>>;\n resource: string;\n handlePageDelete: (pages: any[]) => void;\n}\n\nconst moveLeft = (arr: IPage[], pageValue: number) => {\n const updatedArray = [...arr];\n if (updatedArray.length <= 1) return;\n\n const index = updatedArray.findIndex((item) => item._id === pageValue);\n\n if (index === 0) return;\n\n const elementToShift = updatedArray.splice(index, 1)[0];\n updatedArray.splice(index - 1, 0, elementToShift);\n return updatedArray;\n};\n\nconst moveRight = (arr: IPage[], pageValue: number) => {\n const updatedArray = [...arr];\n if (updatedArray.length <= 1) return;\n\n const index = updatedArray.findIndex((item) => item._id === pageValue);\n\n if (index === updatedArray.length - 1) return;\n\n const elementToShift = updatedArray.splice(index, 1)[0];\n updatedArray.splice(index + 1, 0, elementToShift);\n return updatedArray;\n};\n\nconst deletePage = (arr: IPage[], pageValue: number) => {\n const updatedArray = [...arr];\n if (updatedArray.length <= 1) return;\n\n const index = updatedArray.findIndex((item) => item._id === pageValue);\n\n updatedArray.splice(index, 1);\n return updatedArray;\n};\n\nconst PageAction = ({\n open,\n onClose,\n page,\n pages,\n setCurrentPage,\n setPages,\n resource,\n handlePageDelete,\n}: IPageAction) => {\n \n const [isEditPageModalOpen, setIsEditPageModalOpen] = useState(false);\n const [isShareModalOpen, setIsShareModalOpen] = useState(false);\n const [isConfirmOpen, setIsConfirmOpen] = useState(false);\n const [deletePageNo, setDeletePageNo] = useState<any>({});\n const [defaultSharedData, setDefaultSharedData] = useState<any>({});\n const [pageSharedData, setPageSharedData] = useState<any>([]);\n const pinToDashboardStore = useSelector((state: any) => state);\n const [pinToDashboardData, setPinToDashboardData] = useState<any>(\n pinToDashboardStore?.dashboard?.pinToDashboardList || [],\n );\n\n\n const appDispatch = useAppDispatch();\n const dispatch = useDispatch();\n const {setIsCreatePage}=usePages()\n // const token = zI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6OSwiaWF0IjoxNzA2NDcwNzQwfQ.6dtxBVGl4hF0TrNDanSBTiFtV_TUshjaiaYe9XT2Ld8\";\n useEffect(() => {\n dispatch(pinToDashboardList(pinToDashboardData));\n }, [dispatch, pageSharedData, pinToDashboardData]);\n\n useEffect(()=>{\n \n if(page){\n setPageSharedData([...pageSharedData,{\n page:{\n ...page,\n value:page?._id\n },\n isPublic: true,\n shareUsers:page?.selectedUsers,\n }])\n }\n //eslint-disable-next-line\n },[page])\n \n\n const handleOpenEditModal = () => {\n onClose();\n setIsEditPageModalOpen(true);\n };\n\n const handleCloseEditModal = () => {\n setIsEditPageModalOpen(false);\n };\n\n const handleShare = (pageData: any) => {\n pageData.pages = pages;\n appDispatch(sharePage(pageData)).then((res) => {\n if (res?.payload?.data?.pages?.length) {\n setPages(res?.payload?.data?.pages);\n }\n setIsShareModalOpen(false);\n });\n };\n\n const handleSharePage = (page: any) => {\n const defaultData = pageSharedData.find(\n (item: any) => item.page?.value === page?.value,\n );\n if (defaultData) {\n setDefaultSharedData({\n isPublic: defaultData.isPublic,\n selectedUsers: defaultData.shareUsers,\n \n });\n } else {\n setDefaultSharedData({\n isPublic: page?.selectedUsers?.length>0,\n ...page,\n });\n }\n setIsShareModalOpen(true);\n setIsShareModalOpen(true);\n };\n\n const handleDuplicatePage = (page: any) => {\n const labelExists = (label: string) =>\n pages.some((item) => item.name === label);\n const { uniqueNumberId: _id } = generateRandomId();\n let newLabel = page.name;\n\n if (labelExists(newLabel)) {\n let counter = 1;\n while (labelExists(`${page.name} ${counter}`)) {\n counter++;\n }\n newLabel = `${page.name} ${counter}`;\n }\n const updatedPage = [\n ...pages,\n { ...page, name: newLabel, _id, data: page.data, isShared: false },\n ];\n\n setPages(updatedPage);\n setIsCreatePage(true)\n };\n\n const handleEdit = (newPage: IPage) => {\n const updatedPages = pages.map((page) => {\n if (page._id === newPage._id) {\n return {\n ...page,\n name: newPage.name\n }\n }\n return page\n })\n\n setPages(updatedPages);\n setIsCreatePage(true)\n // const putDashboardRequest: Types.PutV1DashboardIdRequest = {\n // \"x-token\": token,\n // module: \"user\",\n // user_id: \"1\",\n // name: newPage.name,\n // id: newPage._id,\n // };\n // putV1DashboardId(putDashboardRequest)\n // .then((response: any) => {\n // const prevPages = [...pages];\n // const updatedPages = prevPages.map((page) =>\n // page._id === newPage._id ? newPage : page,\n // );\n // setPages(updatedPages);\n // updatePinToDashboardPage(updatedPages);\n // })\n // .catch((err: any) => console.log(\"Error in adding page\", err));\n };\n\n // const updatePinToDashboardPage = (updatedPages: any) => {\n // const currentPageLabel = updatedPages.find(\n // (item: any) => item.value === page?._id,\n // )?.label;\n\n // const updatedPinToDashboardData = pinToDashboardData.map((data: any) => ({\n // ...data,\n // label: data.value === page?._id ? currentPageLabel : data.label,\n // }));\n\n // setPinToDashboardData(updatedPinToDashboardData);\n // };\n\n const handleMoveLeft = (pageValue: any) => {\n const updatedArray = moveLeft(pages, pageValue?._id);\n if (updatedArray) setPages(updatedArray);\n };\n\n const handleMoveRight = (pageValue: any) => {\n const updatedArray = moveRight(pages, pageValue?._id);\n if (updatedArray) setPages(updatedArray);\n };\n\n const handleDeletePage = (pageValue: any) => {\n setIsConfirmOpen(true);\n setDeletePageNo(pageValue);\n };\n\n const handleConfirmDelete = () => {\n // if (!isNaN(deletePageNo._id)) {\n // const deleteDashboardRequest: Types.DeleteV1DashboardIdRequest = {\n // \"x-token\": token,\n // id: deletePageNo._id,\n // };\n // deleteV1DashboardId(deleteDashboardRequest)\n // .then((response: any) => {\n // })\n // .catch((err: any) => console.log(\"Error in deleting page\", err));\n // }\n \n const updatedArray = deletePage(pages, deletePageNo?._id);\n deletePinToDashboardPage();\n setDeletePageNo({});\n setIsConfirmOpen(false);\n if (updatedArray) {\n setCurrentPage(updatedArray[0]);\n setPages(updatedArray);\n handlePageDelete(updatedArray);\n } else {\n handlePageDelete([]);\n setPages([]);\n }\n };\n\n const deletePinToDashboardPage = () => {\n const updatedPinToDashboardData = pinToDashboardData.filter(\n (data: any) => data.value !== page?._id,\n );\n setPinToDashboardData(updatedPinToDashboardData);\n };\n\n const handleShareModal = (selectedUsers: any) => {\n\n let updatedData: any[] = [];\n const existingItem = pageSharedData.find(\n (item: any) => item.page.value === page?._id,\n );\n\n if (existingItem) {\n updatedData = pageSharedData.map((item: any) => {\n if (item.page.value === page?._id) {\n return {\n ...item,\n isPublic: selectedUsers.isPublic,\n shareUsers: selectedUsers.selectedUsers,\n };\n }\n return item;\n });\n } else {\n updatedData = [\n ...pageSharedData,\n {\n page: page,\n isPublic: selectedUsers.isPublic,\n shareUsers: selectedUsers.selectedUsers,\n viewStyle: 1,\n owner: 0,\n },\n ];\n }\n setPageSharedData(updatedData);\n handleShare({ ...selectedUsers, page: page, resource });\n };\n\n const handlePinToDashboard = () => {\n const index = pinToDashboardData.findIndex(\n (item: any) => item.value === page?._id,\n );\n\n if (index !== -1) {\n setPinToDashboardData((prevData: any) => {\n const updatedData = [...prevData];\n updatedData[index] = { ...updatedData[index], label: page?.name };\n return updatedData;\n });\n } else {\n setPinToDashboardData((prevData: any) => [...prevData, page]);\n }\n };\n\n const actions = [\n {\n label: \"Rename\",\n func: handleOpenEditModal,\n disabled: Boolean(page?.isShared)\n },\n {\n label: \"Duplicate\",\n func: handleDuplicatePage,\n },\n {\n label: \"Share\",\n func: handleSharePage,\n disabled: Boolean(page?.isShared)\n },\n {\n label: \"Pin to dashboard\",\n func: handlePinToDashboard,\n disabled: Boolean(page?.isShared)\n },\n {\n label: \"Move Right\",\n func: handleMoveRight,\n disabled: (pages?.length <= 1) || Boolean(page?.isShared)\n },\n {\n label: \"Move Left\",\n func: handleMoveLeft,\n disabled: (pages?.length <= 1) || Boolean(page?.isShared)\n },\n ];\n\n const handleAction = (func: any) => {\n func(page);\n onClose();\n };\n\n return (\n <>\n <Menu open={Boolean(open)} anchorEl={open} onClose={onClose}>\n {actions?.map((action) => (\n <MenuItem\n key={action?.label}\n onClick={() => handleAction(action.func)}\n disabled={Boolean(action?.disabled)}\n >\n <Typography color=\"theme.secondary.1000\" type=\"s4\">\n {action?.label}\n </Typography>\n </MenuItem>\n ))}\n <Divider sx={{ mt: `4px !important`, mb: `4px !important` }}/>\n <MenuItem onClick={() => handleAction(handleDeletePage)} disabled={Boolean(page?.isShared)}\n sx={{\n '&:hover': {\n backgroundColor: 'theme.error.100'\n }\n }}\n >\n <Typography color=\"theme.error.500\" type=\"s4\">\n Delete\n </Typography>\n </MenuItem>\n </Menu>\n\n <AddPageModal\n open={isEditPageModalOpen}\n page={page}\n pages={pages}\n onClose={handleCloseEditModal}\n handleSubmit={handleEdit}\n />\n\n <ConfirmPopUp\n open={isConfirmOpen}\n onClose={() => setIsConfirmOpen(false)}\n onConfirm={handleConfirmDelete}\n title=\"Delete Confirmation?\"\n description=\"Are you sure you want to delete this page ?\"\n />\n <SharePopUp\n open={isShareModalOpen}\n onClose={() => setIsShareModalOpen(false)}\n title={`Share page ${page?.name}`}\n roles={userRoles}\n toggleSwitch={true}\n value={defaultSharedData}\n onSubmit={handleShareModal}\n />\n </>\n );\n};\n\nexport { PageAction };\nexport default PageAction;\n","/* eslint-disable no-mixed-spaces-and-tabs */\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport {\r\n\tTabs,\r\n\tTab as MUITab,\r\n\tstyled,\r\n\tIconButton,\r\n\tMenuItem,\r\n\tDivider,\r\n\tBox,\r\n\tCircularProgress\r\n} from '@mui/material';\r\nimport MenuIcon from '@mui/icons-material/Menu';\r\nimport KeyboardArrowDown from '@mui/icons-material/KeyboardArrowDown';\r\nimport Typography from '../typography/typography';\r\nimport Menu from '../menu/menu';\r\nimport AddPage from './components/add-page';\r\nimport PageAction from './components/page-action';\r\nimport Tooltip from '../tooltip/Tooltip';\r\nimport { IPage } from '../../@types/page';\r\nimport { defaultPageState } from '../../contexts/page-context';\r\nimport { usePages } from '../../hooks/use-pages';\r\nimport Button from '../button/button';\r\nimport _ from 'lodash';\r\nimport { Save, Share } from '@mui/icons-material';\r\nimport './page-navigator.scss';\r\nimport React from 'react';\r\n\r\nconst StyledTabs = styled(Tabs)(() => ({\r\n\tminHeight: 'fit-content',\r\n\r\n\t'.MuiTabs-indicator': {\r\n\t\theight: '0px !important'\r\n\t},\r\n\t'& .MuiTabs-flexContainer': {\r\n\t\tgap: '4px'\r\n\t}\r\n}));\r\n\r\nconst StyledTab = styled(MUITab)(({ theme: { palette } }) => ({\r\n\tminHeight: '2rem',\r\n\ttextTransform: 'none',\r\n\tpadding: '0rem 1rem',\r\n\tminWidth: 'fit-content',\r\n\tborderRadius: 4,\r\n\t'&.Mui-selected': {\r\n\t\tbackground: palette.theme?.primary[100],\r\n\t\tcolor: palette.theme?.primary[700],\r\n\t\tborderTop: `2px solid ${palette.theme?.primary[700]}`\r\n\t},\r\n\t'.MuiIconButton-root': {\r\n\t\tpadding: '0rem'\r\n\t},\r\n\t\"&:hover\": {\r\n\t\tbackground: palette.theme?.primary[100]\r\n\t}\r\n}));\r\n\r\nconst title = `successfully created, complete with your saved filters, sorting options, and views.`;\r\n\r\nexport interface IPageNavigator {\r\n\tpages: IPage[];\r\n\tsetPages: React.Dispatch<React.SetStateAction<IPage[]>>;\r\n\tcurrentPage: string | number;\r\n\tsetCurrentPage: React.Dispatch<React.SetStateAction<number>>;\r\n\tsharedPages: any;\r\n\tresource: string;\r\n\thandlePageDelete: (pages: any[]) => void;\r\n\tisPageSaving?: boolean;\r\n}\r\n\r\nexport const PageNavigator = ({\r\n\t// sharedPages,\r\n\tresource,\r\n\t// handlePageDelete\r\n}: IPageNavigator) => {\r\n\tconst { pages, setPages, setActivePage, activePage, savePages,setIsChanged, isSaving, generatedColumns, sharedPages, isChanged,deletePage,isCreatePage,setIsCreatePage ,addOrDeletePage} = usePages();\r\n\tconst shareTitle = (owner) => `shared by ${owner}`;\r\n\tconst [isActionsMenuOpen, setIsActionsMenuOpen] =\r\n\t\tuseState<null | HTMLElement>(null);\r\n\tconst [page, setPage] = useState<IPage>();\r\n\r\n\tconst [isAllPagesMenuOpen, setIsAllPagesMenuOpen] =\r\n\t\tuseState<null | HTMLElement>(null);\r\n\r\n\tconst handleChangePage = (_: React.SyntheticEvent, newValue: number) => {\r\n\t\tconst pg = pages.find((p) => p?._id == newValue);\r\n\t\tsetActivePage(pg);\r\n\t};\r\n\r\n\tconst handleOpenActionsMenu = (\r\n\t\tevent: React.MouseEvent<HTMLButtonElement>,\r\n\t\tclickedPage: IPage\r\n\t) => {\r\n\t\tevent.stopPropagation();\r\n\t\tsetPage(clickedPage);\r\n\t\tsetIsActionsMenuOpen(event.currentTarget);\r\n\t};\r\n\tconst handleCloseActionsMenu = () => setIsActionsMenuOpen(null);\r\n\r\n\tconst handleOpenAllPagesMenu = (\r\n\t\tevent: React.MouseEvent<HTMLButtonElement>\r\n\t) => {\r\n\t\tevent.stopPropagation();\r\n\t\tsetIsAllPagesMenuOpen(event.currentTarget);\r\n\t};\r\n\tconst handleCloseAllPagesMenu = () => setIsAllPagesMenuOpen(null);\r\n\r\n\tconst handleChangePageFromMenu = (val: number) => {\r\n\t\tsetActivePage(val);\r\n\t\thandleCloseAllPagesMenu();\r\n\t};\r\n\r\n\tconst handleAddPage = (newPage: IPage) => {\r\n\t\tconst nPage = {\r\n\t\t\t...defaultPageState,\r\n\t\t\t...newPage,\r\n\t\t\tname: newPage.name,\r\n\t\t\tvisible_columns: generatedColumns.columns,\r\n\t\t\tcolumn_order: _.uniq(generatedColumns.orderKeys),\r\n\t\t\t_id: pages.length + 1,\r\n\t\t\tactive_view:'Table',\r\n\t\t\tviews:[{\r\n\t\t\t\tlabel:'Table',\r\n\t\t\t\tposition:0\r\n\t\t\t}]\r\n\t\t};\r\n\t\tconst updatedPages: any = [\r\n\t\t\t...pages,\r\n\t\t\t...[nPage]\r\n\t\t];\r\n\t\tsetActivePage({...nPage});\r\n\t\tsetPages([...updatedPages]);\r\n\t\tsetIsCreatePage(true)\r\n\t\t\r\n\t};\r\n\r\n\tconst handlePageDeleteFunction=(pages:any[])=>{\r\n\t\t\r\n\t\tdeletePage(pages)\r\n\t}\r\n\r\n\r\n\tconst handleAddOrdeletePage =useCallback(async\t () => {\r\n\t\tif(isCreatePage){\r\n\t\t\tconst res=await addOrDeletePage();\r\n\t\t\tif(res.status_code===200){\r\n\t\t\t\tsetPages(res?.data?.pages);\r\n\t\t\t\tsetIsChanged(false)\r\n\t\t\t}}\r\n\t\tsetTimeout(()=>{\r\n\t\t\tsetIsCreatePage(false);\r\n\t\t\t\r\n\t\t},2000)\r\n\t\t//eslint-disable-next-line\r\n\t},[isCreatePage])\r\n\r\n\tuseEffect(()=>{\r\n\t\thandleAddOrdeletePage()\r\n\t\t//eslint-disable-next-line\r\n\t},[handleAddOrdeletePage])\r\n\r\n\treturn (\r\n\t\t<Box display=\"flex\" gap={2} alignItems={'center'} className='page-navigator-container'>\r\n\t\t\t<Box\r\n\t\t\t\tdisplay={'flex'}\r\n\t\t\t\tclassName='page-navigator'\r\n\t\t\t\tsx={{ display: 'flex', opacity: isSaving ? 0.5 : 1 }}>\r\n\t\t\t\t<IconButton\r\n\t\t\t\t\t// size='small'\r\n\t\t\t\t\tonClick={handleOpenAllPagesMenu}\r\n\t\t\t\t\tdisabled={isSaving}>\r\n\t\t\t\t\t<MenuIcon fontSize='small' />\r\n\t\t\t\t</IconButton>\r\n\t\t\t\t<StyledTabs\r\n\t\t\t\t\tvalue={activePage?._id}\r\n\t\t\t\t\tvariant='scrollable'\r\n\t\t\t\t\tonChange={handleChangePage}\r\n\t\t\t\t\taria-label='basic tabs example'>\r\n\t\t\t\t\t{pages?.map((page) => (\r\n\t\t\t\t\t\t<StyledTab\r\n\t\t\t\t\t\t\ticonPosition='end'\r\n\t\t\t\t\t\t\tdisableRipple\r\n\t\t\t\t\t\t\tkey={page}\r\n\t\t\t\t\t\t\ticon={\r\n\t\t\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\t\t\tsize='small'\r\n\t\t\t\t\t\t\t\t\tedge='end'\r\n\t\t\t\t\t\t\t\t\tonClick={(e) => handleOpenActionsMenu(e, page)}\r\n\t\t\t\t\t\t\t\t\tdisabled={isSaving}>\r\n\t\t\t\t\t\t\t\t\t<KeyboardArrowDown fontSize='small' color={activePage?._id === page?._id ? 'primary' : undefined}/>\r\n\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tlabel={\r\n\t\t\t\t\t\t\t\t<Tooltip\r\n\t\t\t\t\t\t\t\t\ttitle={`The '${page.name}' page has been ${page?.isShared ? shareTitle(page?.owner) : title}`}\r\n\t\t\t\t\t\t\t\t\tkey={page._id}\r\n\t\t\t\t\t\t\t\t\tplacement='top'\r\n\t\t\t\t\t\t\t\t\tarrow>\r\n\t\t\t\t\t\t\t\t\t\t<Box sx={{ display: 'flex', alignItems: 'center', gap:1 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t{page?.isShared && <Share sx={{fontSize:'20px',color:'#4AC08C'}}/>}\r\n\t\t\t\t\t\t\t\t\t\t\t<span>{page.name}</span>\r\n\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tvalue={page?._id}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t))}\r\n\t\t\t\t</StyledTabs>\r\n\r\n\t\t\t\t<Divider\r\n\t\t\t\t\torientation='vertical'\r\n\t\t\t\t\tvariant='middle'\r\n\t\t\t\t\tflexItem\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\tml: 2,\r\n\t\t\t\t\t\tborderWidth: '1px'\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\t\t\t\t<Box display=\"flex\" alignItems={'center'}>\r\n\t\t\t\t\t<AddPage\r\n\t\t\t\t\t\tpages={pages}\r\n\t\t\t\t\t\thandleAddPage={handleAddPage}\r\n\t\t\t\t\t\tsharedPages={sharedPages}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</Box>\r\n\r\n\t\t\t\t<PageAction\r\n\t\t\t\t\topen={isActionsMenuOpen}\r\n\t\t\t\t\tonClose={handleCloseActionsMenu}\r\n\t\t\t\t\tpage={page}\r\n\t\t\t\t\tsetPages={setPages}\r\n\t\t\t\t\tsetCurrentPage={setActivePage}\r\n\t\t\t\t\tpages={pages}\r\n\t\t\t\t\tresource={resource}\r\n\t\t\t\t\thandlePageDelete={handlePageDeleteFunction}\r\n\t\t\t\t/>\r\n\r\n\t\t\t\t<Menu\r\n\t\t\t\t\topen={Boolean(isAllPagesMenuOpen)}\r\n\t\t\t\t\tanchorEl={isAllPagesMenuOpen}\r\n\t\t\t\t\tonClose={handleCloseAllPagesMenu}>\r\n\t\t\t\t\t{pages?.map((page) => (\r\n\t\t\t\t\t\t<MenuItem\r\n\t\t\t\t\t\t\tselected={page._id === activePage?._id}\r\n\t\t\t\t\t\t\tkey={page._id}\r\n\t\t\t\t\t\t\tonClick={() => handleChangePageFromMenu(page)}>\r\n\t\t\t\t\t\t\t<Typography color='theme.secondary.1000' type='s4'>\r\n\t\t\t\t\t\t\t\t{page.name}\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t</MenuItem>\r\n\t\t\t\t\t))}\r\n\t\t\t\t</Menu>\r\n\t\t\t</Box>\r\n\t\t\t<Box display=\"flex\" alignItems={'center'}>\r\n\t\t\t\t<Button\r\n\t\t\t\t\tsize='small'\r\n\t\t\t\t\tvariant='contained'\r\n\t\t\t\t\tonClick={() => savePages()}\r\n\t\t\t\t\t// sx={{fontWeight:600, marginBottom:'2px',px:3}}\r\n\t\t\t\t\tendIcon={\r\n\t\t\t\t\t\tisSaving ? <CircularProgress size={15} color='inherit' /> : <Save fontSize='small'/>\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdisabled={!isChanged || isSaving}>\r\n\t\t\t\t\tSave\r\n\t\t\t\t</Button>\r\n\t\t\t</Box>\r\n\t\t</Box>\r\n\t);\r\n};\r\n\r\nexport default PageNavigator;\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable unused-imports/no-unused-vars */\nimport { Box } from \"@mui/material\";\nimport Pagination from \"../pagination/pagination\";\nimport PageNavigator from \"../page-navigator/page-navigator\";\nimport \"./footer.scss\";\nimport { IPaginationModel } from \"../../@types/pagination-model\";\nimport React, { useEffect, useState } from \"react\";\n\ninterface IFooter {\n pages: any;\n setPages: any;\n currentPage: string | number;\n setCurrentPage: any;\n total: number;\n paginationModel: IPaginationModel;\n handlePaginationModel: (model: IPaginationModel) => void;\n sharedPages: any;\n resource: string;\n savePageConfiguration: () => void;\n handlePageDelete: (pages: any[]) => void;\n enablePages: boolean\n isPaginationDisplayed?: boolean\n isPageSaving?: boolean\n}\n\nconst Footer = React.memo(({\n pages,\n setPages,\n currentPage,\n setCurrentPage,\n total, // total number of pages in footer pagination\n paginationModel,\n handlePaginationModel,\n sharedPages,\n resource,\n savePageConfiguration,\n handlePageDelete,\n enablePages,\n isPaginationDisplayed = true,\n isPageSaving = false\n}: IFooter) => {\n const [isDrawerOpen, setIsDrawerOpen] = useState(\n window.localStorage.getItem('_is_drawer_open') === 'true'\n );\n\n useEffect(() => {\n const handleStorageChange = () => {\n setIsDrawerOpen(window.localStorage.getItem('_is_drawer_open') === 'true');\n };\n\n window.addEventListener('storage', handleStorageChange);\n\n const interval = setInterval(handleStorageChange, 10); \n\n return () => {\n window.removeEventListener('storage', handleStorageChange);\n clearInterval(interval);\n };\n }, []);\n\n // useEffect(()=>{\n // handlePaginationModel({...paginationModel,pageNo:activePage?.pageNo})\n // //eslint-disable-next-line react-hooks/exhaustive-deps\n // },[activePage?.pageNo])\n\n return (\n <Box className={`${!isDrawerOpen?'footer--drawerContainer':'footer--Container'}`} sx={{justifyContent: enablePages? 'space-between': 'flex-end'}}>\n \n \n {Boolean(enablePages) && <PageNavigator\n pages={pages}\n setPages={setPages}\n currentPage={currentPage}\n setCurrentPage={setCurrentPage}\n resource={resource}\n sharedPages={sharedPages}\n handlePageDelete={handlePageDelete}\n />}\n <Box>\n {isPaginationDisplayed && (\n <Pagination\n paginationModel={paginationModel}\n handlePaginationModel={handlePaginationModel}\n totalPages={total}\n />\n )}\n </Box>\n </Box>\n );\n});\n\nexport { Footer };\nexport default Footer;\n","import React from \"react\";\nimport BreadCrumb from \"../bread-crumb/bread-crumb\";\nimport \"./form-header.scss\";\n\ninterface BreadCrumbSlot {\n link: string;\n label: string | JSX.Element;\n linkState?: any;\n}\n\ninterface FormHeaderProps {\n breadCrumbPath: BreadCrumbSlot[];\n children?: React.ReactNode;\n containerProps?:any;\n}\nconst FormHeader = (props: FormHeaderProps) => {\n const { breadCrumbPath, children, containerProps } = props;\n return (\n <div className=\"formHeader--Header\" {...containerProps}>\n <BreadCrumb path={breadCrumbPath} />\n <div>{children}</div>\n </div>\n );\n};\n\nexport { FormHeader };\nexport default FormHeader;\n","const Loader = () => {\n return (\n <div className=\"loader loader--style1\" title=\"0\">\n <svg\n version=\"1.1\"\n id=\"loader-1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n x=\"0px\"\n y=\"0px\"\n width=\"80px\"\n height=\"80px\"\n viewBox=\"0 0 40 40\"\n enableBackground=\"new 0 0 40 40\"\n >\n <path\n opacity=\"0.2\"\n fill=\"#333\"\n d=\"M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946,14.946,14.946\n s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634\n c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z\"\n />\n <path\n fill=\"#333\"\n d=\"M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0\n C22.32,8.481,24.301,9.057,26.013,10.047z\"\n >\n <animateTransform\n attributeType=\"xml\"\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 20 20\"\n to=\"360 20 20\"\n dur=\"0.9s\"\n repeatCount=\"indefinite\"\n />\n </path>\n </svg>\n </div>\n );\n};\n\nexport { Loader };\nexport default Loader;\n","import { Link } from \"react-router-dom\";\nimport CardMedia from \"@mui/material/CardMedia\";\nimport Box from \"@mui/material/Box\";\nimport Typography from \"../typography/typography\";\nimport \"./module-button.scss\"; // Import the external CSS file\n\nexport interface IModuleTile {\n module: {\n bg: string;\n icon: string;\n label: string;\n link: string;\n };\n}\n\nexport const ModuleTile = (props: IModuleTile) => {\n const bgClass = props.module.bg === \"transparent\" ? \"transparent\" : \"\";\n\n return (\n <Link to={props.module.link}>\n <Box className=\"module-tile-container\">\n <Box\n className={`module-box ${bgClass}`}\n style={{ background: props.module.bg }}\n >\n <CardMedia\n component=\"img\"\n image={props.module.icon}\n alt={`${props.module.label} logo`}\n />\n </Box>\n <Typography type=\"s3\" className=\"module-label\">\n {props.module.label}\n </Typography>\n </Box>\n </Link>\n );\n}\n\nexport default ModuleTile;","import { Switch, styled } from \"@mui/material\";\r\n\r\nconst Android12Switch = styled(Switch)(({ theme }) => ({\r\n padding: 8,\r\n '& .MuiSwitch-track': {\r\n borderRadius: 22 / 2,\r\n '&::before, &::after': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n width: 16,\r\n height: 16,\r\n },\r\n '&::before': {\r\n backgroundImage: `url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"16\" width=\"16\" viewBox=\"0 0 24 24\"><path fill=\"${encodeURIComponent(\r\n theme.palette.getContrastText(theme.palette.primary.main),\r\n )}\" d=\"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\"/></svg>')`,\r\n left: 12,\r\n },\r\n '&::after': {\r\n backgroundImage: `url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"16\" width=\"16\" viewBox=\"0 0 24 24\"><path fill=\"${encodeURIComponent(\r\n theme.palette.getContrastText(theme.palette.primary.main),\r\n )}\" d=\"M19,13H5V11H19V13Z\" /></svg>')`,\r\n right: 12,\r\n },\r\n },\r\n '& .MuiSwitch-thumb': {\r\n boxShadow: 'none',\r\n width: 16,\r\n height: 16,\r\n margin: 2,\r\n // color: theme.palette.theme.primary[800]\r\n },\r\n '& .Mui-checked': {\r\n color: `${theme.palette.theme.primary[800]} !important`,\r\n },\r\n '& .Mui-checked+.MuiSwitch-track': {\r\n backgroundColor: `${theme.palette.theme.primary[800]} !important`,\r\n },\r\n}));\r\n\r\nexport { Android12Switch };\r\nexport default Android12Switch;"],"names":["title","MUIAccordion","_","logo","data","CloseIcon","styled","o","value","StyledAddButton","StyledDatePicker","Date","MUICheckbox","MUIRadio","addressPayload","contactPayload","yupResolver","generateMenuItems","SelectedItems","React","_a","filteredOptions","fetchOptions","updateOptions","Close","getFileName","validationSchema","col","row","yup","_b","valueKey","_c","validationReducer","validations","validation","generateValidationSchema","columns","table","Tooltip","Add","rows","Loader","type","t","Select","Menu","Time","Stack","Tab","TabPanel","MUIAlert","Chip","index","Radio","images","defaultValues","keys","schema","fieldArrayName","label","error","name","location","selectedFilter","Alert","MenuItem","Box","Grow","savedFilters","selectedIds","FilterIcon","TextField","ChevronRightICon","page","Accordion","MUITab","deletePage","pages","KeyboardArrowDown","Save","Switch"],"mappings":"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","x_google_ignoreList":[38]}