@erpsquad/common 1.11.0-deep-imports → 1.11.1-deep-imports
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/searchable-select--dhEG2CL.js.map +1 -1
- package/dist/chunks/searchable-select-DR-q54Zn.esm.js.map +1 -1
- package/dist/components/parties-modal/index.esm.js +2 -3
- package/dist/components/parties-modal/index.js +0 -1
- package/dist/components/parties-modal/index.js.map +1 -1
- package/dist/hooks/useApi/index.esm.js +2 -3
- package/dist/hooks/useApi/index.js +0 -1
- package/dist/hooks/useApi/index.js.map +1 -1
- package/dist/hooks/useUniquenessCheck/index.esm.js +2 -3
- package/dist/hooks/useUniquenessCheck/index.js +0 -1
- package/dist/hooks/useUniquenessCheck/index.js.map +1 -1
- package/dist/src/components/parties-modal/index.d.ts +0 -1
- package/dist/src/hooks/useApi/index.d.ts +1 -1
- package/dist/src/hooks/useUniquenessCheck/index.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"searchable-select--dhEG2CL.js","sources":["../../src/components/form-control/form-builder/form-builder-element/dynamic-select.tsx","../../src/components/material-table/components/inline-edit-fields.tsx","../../src/components/material-table/material-table.tsx","../../src/components/parties-modal/parties-modal.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/payment-term-add-modal.tsx","../../src/components/form-control/form-builder/form-builder-element/select-configuration.tsx","../../src/components/searchable-select.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Controller, useFormContext, useWatch, Control } from 'react-hook-form';\nimport { dynamicSelectAdd } from './select-configuration';\nimport {\n Box,\n CircularProgress,\n Divider,\n IconButton,\n InputAdornment,\n MenuItem,\n MenuItemProps,\n OutlinedInput,\n Tooltip\n} from '@mui/material';\nimport { debounce } from 'lodash';\nimport { sortBy } from \"lodash\";\nimport { useTranslation } from \"react-i18next\";\nimport { Add, Close } from '@mui/icons-material';\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 { fetchApi } from '../../../../utils/api';\nimport './element.scss';\nimport { useAuth } from '@/contexts';\nimport { useApi, useLanguage } from '@/hooks';\nimport { useDefaultConfig } from '@/hooks/useSetDefaultConfig';\nimport { auth } from '../../../../constants/auth';\n\n\ninterface DynamicSelectProps {\n formControl: any;\n fieldArrayName: string;\n name: string;\n label?: string;\n placeholder?: string;\n defaultValue?: any;\n required?: boolean;\n disabled?: boolean;\n hidden?: boolean;\n options?: Array<{ label: string; value: any }>;\n multiple?: boolean;\n searchable?: boolean;\n onSearch?: (query: string) => void;\n}\n\n// Types\ninterface IOption {\n id: string | number;\n value: string | number;\n label: string | React.ReactNode;\n disabled?: boolean;\n isGroup?: boolean;\n options?: IOption[];\n searchLabel?: string;\n}\n\n// Custom API fetch function type for parent components\ninterface CustomFetchApiParams {\n search?: string;\n filters?: any;\n limit: number;\n skip: number;\n select?: string;\n order?: string;\n}\n\ninterface CustomFetchApiResponse {\n data: IOption[];\n pagination?: {\n totalCount: number;\n };\n}\n\ninterface IMenuItemsProps extends MenuItemProps {\n options: IOption[];\n multiple: boolean;\n placeholder: string;\n with_checkboxes: boolean;\n values: string | string[];\n field: IDynamicSearchSelectProps;\n disabledIds: (string | number)[];\n onChange: (value: string | string[]) => void;\n handleChange?: (value: string | string[]) => void;\n hasParent: boolean;\n t: (key: string) => string;\n // onFooterClick?: () => void;\n}\n\ninterface IDynamicSearchSelectProps {\n name: string;\n placeholder: string;\n label: string;\n size?: 'small' | 'medium';\n options: IOption[];\n formControl: Control<any>;\n defaultValue?: string | string[];\n fieldArrayName: string;\n id?: string;\n required?: boolean;\n is_multiselect?: boolean;\n position?: number;\n formType?: string;\n typeOfField?: string;\n disabled?: boolean;\n onChipRemove?: (value: string) => void;\n enable_footer?: boolean;\n footer_action?: string;\n onFooterClick?: () => void;\n is_loading?: boolean;\n selectedLabel?: string;\n isInternal?: boolean;\n disabledIds?: (string | number)[];\n getSelectedData?: (data: IOption | IOption[] | null, name: string) => void;\n attributes?: string[];\n handleChange?: (value: string | string[]) => void;\n hasParent?: boolean;\n sortOrder?: string;\n apiType?: string;\n handleOptions?: (value: any) => void;\n filterKey?: string;\n customeFilter?: Record<string, any>;\n refresh?: boolean;\n addType?: string;\n showCancelButton?: boolean;\n /** Custom API function to fetch options from parent component */\n customFetchApi?: (params: CustomFetchApiParams) => Promise<CustomFetchApiResponse>;\n isMergeOptions?: boolean;\n showItemTooltip?: boolean;\n modalComponentProps?: any;\n}\n\ninterface IPaginationState {\n page: number;\n hasMore: boolean;\n isLoadingMore: boolean;\n total: number;\n}\n\n// Helper function to generate menu items\nconst generateMenuItems = ({\n options,\n multiple,\n placeholder,\n with_checkboxes,\n values,\n // field,\n disabledIds,\n onChange,\n handleChange,\n hasParent,\n t,\n // onFooterClick\n}: IMenuItemsProps): React.ReactElement[] => {\n const itemDisabled = (id: string | number) => disabledIds?.includes(id);\n const items: React.ReactElement[] = [];\n\n if (!multiple) {\n items.push(\n <MenuItem disabled value='' key=\"placeholder\" sx={{ opacity: `0 !important`, height: `0 !important`, p: `0 !important`, m: `0 !important` }}>\n <Typography type='s3' color='theme.secondary.1000'>\n <em>{t(placeholder)}</em>\n </Typography>\n </MenuItem>\n );\n }\n const selectedValues = (Array.isArray(values) && values?.length > 0) ? values?.filter((value) => value) : values;\n\n const handleParentChange = (parentValue: string, childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n\n const isParentSelected = valueArray.includes(parentValue);\n const updatedValues = isParentSelected\n ? valueArray.filter((value) => value !== parentValue && !childValues.includes(value))\n : [...new Set([...valueArray, parentValue, ...childValues])];\n\n onChange(updatedValues);\n handleChange?.(updatedValues);\n };\n\n const isAllOptionsSelected = (parentValue: string, childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n return childValues.every((childValue) => valueArray.includes(childValue));\n };\n\n const isSomeOptionsSelected = (childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n return childValues.some((childValue) => valueArray.includes(childValue));\n };\n\n if (Array.isArray(options) && options.length > 0) {\n options.forEach((option) => {\n items.push(\n <MenuItem\n value={option.value}\n key={option.value}\n disabled={Boolean(option.disabled) || itemDisabled(option.id || option.value)}\n className={option.isGroup ? 'select--MenuItemHeader' : ''}\n >\n <Box sx={{ display: 'flex', gap: 1 }}>\n {multiple && with_checkboxes && (\n <Checkbox\n checked={\n hasParent\n ? isAllOptionsSelected(option.value, option.options || [])\n : Boolean(Array.isArray(selectedValues) ? selectedValues.includes(option.value) : selectedValues == option.value)\n }\n indeterminate={\n hasParent && isSomeOptionsSelected(option.options || [])\n }\n onChange={() => hasParent ? handleParentChange(option.value, option.options || []) : handleChange?.(option.value)}\n />\n )}\n <Typography\n type='s3'\n color='theme.secondary.1000'\n onClick={() => handleChange?.(option.value)}\n >\n {option.label}\n </Typography>\n </Box>\n </MenuItem>\n );\n\n if (option.isGroup && Array.isArray(option.options)) {\n option.options.forEach((opt) => {\n items.push(\n <MenuItem\n value={opt.value}\n disabled={Boolean(opt.disabled) || itemDisabled(opt.id || opt.value)}\n sx={{ pl: 5 }}\n key={`${option.value}-${opt.value}`}\n >\n <Box sx={{ display: 'flex', gap: 1 }}>\n {multiple && with_checkboxes && (\n <Checkbox\n checked={Boolean(Array.isArray(values) && values.includes(opt.value))}\n />\n )}\n <Typography\n type='s3'\n color='theme.secondary.1000'\n onClick={() => handleChange?.(String(opt.value))}\n >\n {opt.label == \"Payment Entries\" ? \"Payment and Collection Entries\" : opt.label || opt.value}\n </Typography>\n </Box>\n </MenuItem>\n );\n });\n }\n });\n }\n\n // if (field.enable_footer) {\n\n // }\n\n if (!items.length || (items.length == 1 && !multiple)) {\n items.push(\n <MenuItem disabled key=\"no-data\">\n No data available\n </MenuItem>\n );\n }\n\n return items;\n};\n\n// Selected items component\nconst SelectedItems: React.FC<{\n data: (string | number)[];\n options: IOption[];\n}> = ({ data, options }) => {\n const displayTitle = data.map(\n (selectedItem) =>\n options?.find((option) => option.value == selectedItem)?.label || ''\n );\n const filteredDisplayTitle = displayTitle.filter(Boolean);\n\n return (\n <Typography\n type='s4'\n color='inherit'\n sx={{ display: 'flex', gap: 1, alignItems: 'center', mt: 0.5 }}\n >\n {filteredDisplayTitle.slice(0, 4).join(', ')}\n {data.length > 4 && (\n <Chip variant='outlined' type='normal' label={<MoreIcon />} />\n )}\n </Typography>\n );\n};\n\nconst Loading = () => (\n <Typography fontStyle='italic' color='inherit' type='s3'>Loading...</Typography>\n)\n\nconst DynamicSearchSelect: React.FC<IDynamicSearchSelectProps> = React.memo((props) => {\n const watchedValue = useWatch({\n control: props.formControl,\n name: `${props.fieldArrayName}.${props.name}`\n });\n\n const { callApi } = useApi()\n // In MFE mode each federated module ships its own copy of react-hook-form,\n // so the FormContext created by the host's FormProvider is invisible here\n // and useFormContext() returns null.\n // The internal `control` object (passed as formControl prop) does NOT expose\n // setValue — that lives only on the useForm() return value. We build a\n // stable fallback using useCallback so that useDefaultConfig's useEffect\n // (which has setValue as a dependency) does NOT re-fire on every render.\n const formContext = useFormContext();\n const { setValue: contextSetValue } = formContext || {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const mfeFallbackSetValue = useCallback((fieldPath: string, value: any) => {\n const ctrl = props.formControl as any;\n if (!ctrl) return;\n // Write into internal form values\n const parts = fieldPath.split('.');\n let obj = ctrl._formValues;\n for (let i = 0; i < parts.length - 1; i++) {\n if (!obj[parts[i]]) obj[parts[i]] = {};\n obj = obj[parts[i]];\n }\n obj[parts[parts.length - 1]] = value;\n // Notify RHF subscribers so React re-renders\n ctrl._subjects?.state?.next({ name: fieldPath, values: { ...ctrl._formValues } });\n // props.formControl is stable for the lifetime of the form\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.formControl]);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const setValue: any = contextSetValue ?? mfeFallbackSetValue;\n const { t } = useTranslation();\n const { isRtl } = useLanguage();\n const { user: authUser } = useAuth();\n const contextUser = useMemo(() => {\n if (authUser) return authUser;\n try {\n const stored = window.localStorage.getItem(auth.storageUserKeyName);\n return stored ? JSON.parse(stored) : null;\n } catch {\n return null;\n }\n }, [authUser]);\n const selectRef = useRef<HTMLDivElement>(null);\n\n // State management\n const [options, setOptions] = useState<IOption[]>([]);\n const [selectedValue, setSelectedValue] = useState<any>(null);\n const [selectedOptions, setSelectedOptions] = useState<IOption[]>([]);\n const [loading, setLoading] = useState<boolean>(false);\n const [open, setOpen] = useState<boolean>(false);\n const [isAlreadyLoaded, setIsAlreadyLoaded] = useState<boolean>(false);\n const [prevFilter, setPrevFilter] = useState<any>(null);\n const [initialLoading, setInitialLoading] = useState<boolean>(false);\n const [searchQuery, setSearchQuery] = useState<string>(\"\");\n const [searchInitiate, setSearchInitiate] = useState<boolean>(false);\n const [addConfig, setAddConfig] = useState<any>(null);\n\n // Modal states\n const [isModalOpen, setIsModalOpen] = useState<boolean>(false);\n const [isAddLoading, setIsAddLoading] = useState<boolean>(false);\n\n\n // Pagination state\n const [pagination, setPagination] = useState<IPaginationState>({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n\n // Props destructuring with defaults\n const {\n handleOptions,\n isInternal = false,\n disabledIds = [],\n getSelectedData,\n attributes = [],\n filterKey = 'id',\n customeFilter = {},\n refresh,\n handleChange,\n hasParent = false,\n sortOrder = 'id:-1',\n apiType,\n addType,\n showCancelButton = true,\n customFetchApi,\n isMergeOptions = false,\n } = props;\n\n const showItemTooltip = props.showItemTooltip ?? (apiType === 'salesItems');\n\n const limit = 25;\n\n // Memoized values\n // Memoized values\n const isInternalOptions = useMemo(() => {\n if (isMergeOptions && (apiType || customFetchApi)) return false;\n return (!apiType && !customFetchApi) || (isInternal ? (apiType || customFetchApi) && props.options?.length == 0 ? false : true : false);\n }, [isInternal, apiType, customFetchApi, props.options?.length, isMergeOptions]);\n\n\n //eslint-disable-next-line\n const cf = useMemo(() => customeFilter, [JSON.stringify(customeFilter)]);\n\n\n\n\n const { defaultOptions = [] } = useDefaultConfig({\n props,\n setValue,\n isInternalOptions,\n watchedValue\n });\n\n\n // Local search function\n const searchOptionsLocally = useCallback((searchTerm: string, value: any): IOption[] => {\n const currentOptions: IOption[] = (props.options && props.options.length > 0) ? props.options : (defaultOptions || []);\n if (!searchTerm) return currentOptions;\n\n const lowercasedSearchTerm = searchTerm.toLowerCase();\n\n const filteredOptions = hasParent\n ? currentOptions?.reduce((acc: IOption[], opt: IOption) => {\n const searchedOptions = opt.options?.filter((item: IOption) => {\n const label = React.isValidElement(item.label) ? item.searchLabel : String(item.label);\n return label?.toLowerCase().includes(lowercasedSearchTerm);\n });\n\n if (searchedOptions?.length) {\n acc.push({ ...opt, options: searchedOptions });\n }\n\n return acc;\n }, []) || []\n : currentOptions?.filter((opt: IOption) => {\n const label = React.isValidElement(opt.label) ? opt.searchLabel : String(opt.label);\n return label?.toLowerCase().includes(lowercasedSearchTerm);\n }) || [];\n\n //eslint-disable-next-line\n return sortBySelectedValues(filteredOptions, value);\n //eslint-disable-next-line\n }, [props.options, hasParent, defaultOptions]);\n\n // Get unique options\n const getUniqueOptions = useCallback((data: IOption[]): IOption[] => {\n const uniqueOptions = [\n ...new Map(data?.map(item => [item.value, item])).values()\n ];\n return uniqueOptions;\n }, []);\n\n // Sort by selected values\n const sortBySelectedValues = useCallback((arrayToSort: IOption[], value: any): IOption[] => {\n let selectedValues = Array.isArray(value) ? value : [value];\n selectedValues = selectedValues.map((item) => Number(item));\n const sortedValue = sortBy(arrayToSort, (item) => {\n const index = selectedValues.indexOf(item.id || item.value);\n return index == -1 ? Infinity : index;\n });\n return sortedValue;\n }, []);\n\n // Filtered options with pagination support\n const filteredOptions = useMemo(() => {\n if (isInternalOptions) {\n return searchOptionsLocally(searchQuery, watchedValue);\n }\n const apiOptions = sortBySelectedValues(getUniqueOptions([...options, ...selectedOptions]), watchedValue);\n if (isMergeOptions) {\n const localOptions = searchOptionsLocally(searchQuery, watchedValue);\n return getUniqueOptions([...localOptions, ...apiOptions]);\n }\n return apiOptions;\n //eslint-disable-next-line\n }, [options, selectedOptions, isInternalOptions, props.options, watchedValue, searchQuery, searchOptionsLocally, sortBySelectedValues, getUniqueOptions, isMergeOptions]);\n\n // Helper to get selected item data for tooltip\n const getSelectedDataOptions = useMemo(() => {\n if (!watchedValue || !filteredOptions.length) return null;\n const selected = filteredOptions.find(opt =>\n opt.id === watchedValue || opt.value === watchedValue\n );\n return selected || null;\n }, [watchedValue, filteredOptions]);\n\n // API Functions\n const fetchOptions = useCallback(async (searchTerm = '', flt = cf, page = 1, append = false) => {\n // Skip if neither apiType nor customFetchApi is provided\n if (!apiType && !customFetchApi) return [];\n\n setLoading(true);\n if (page > 1) {\n setPagination(prev => ({ ...prev, isLoadingMore: true }));\n }\n\n try {\n let data: IOption[] = [];\n let paginationResult: { totalCount?: number } = {};\n\n // Use custom API if provided, otherwise use default fetchApi\n if (customFetchApi) {\n const response = await customFetchApi({\n search: searchTerm,\n filters: flt,\n limit,\n skip: (page - 1) * limit,\n select: attributes?.join(','),\n order: sortOrder\n });\n data = response?.data || [];\n paginationResult = response?.pagination || {};\n } else {\n const response = await fetchApi({\n apiKey: apiType!,\n filters: {\n limit,\n skip: (page - 1) * limit,\n search: searchTerm,\n filters: flt,\n select: attributes,\n order: sortOrder\n }\n });\n data = response?.data || [];\n paginationResult = response?.pagination || {};\n }\n\n if (data && Array.isArray(data)) {\n const newOptions = append ? [...options, ...data] : data;\n\n updateOptions(newOptions, append);\n handleSelectedValue(data);\n // Update pagination\n setPagination(prev => ({\n ...prev,\n page,\n hasMore: (paginationResult?.totalCount || 0) > (page * limit),\n total: paginationResult?.totalCount || 0,\n isLoadingMore: false\n }));\n }\n\n return data || [];\n } catch (error) {\n console.error('Error fetching options:', error);\n setPagination(prev => ({ ...prev, isLoadingMore: false }));\n return [];\n } finally {\n setLoading(false);\n }\n //eslint-disable-next-line\n }, [apiType, customFetchApi, options, attributes, sortOrder, limit, cf]);\n\n // Handle scroll pagination\n const handleScroll = useCallback((event: React.UIEvent<HTMLDivElement>) => {\n const { scrollTop, scrollHeight, clientHeight } = event.currentTarget;\n const isBottom = scrollHeight - scrollTop <= clientHeight + 10;\n\n if (isBottom && pagination.hasMore && !pagination.isLoadingMore && !isInternalOptions) {\n const nextPage = pagination.page + 1;\n fetchOptions(searchQuery, cf, nextPage, true);\n }\n }, [pagination.hasMore, pagination.isLoadingMore, pagination.page, isInternalOptions, searchQuery, cf, fetchOptions]);\n\n // Update options\n const updateOptions = useCallback((newOptions: IOption[], append = false) => {\n const oldOptions = append ? options : selectedOptions;\n const uniqueOptions = getUniqueOptions([...oldOptions, ...newOptions]);\n setOptions(uniqueOptions);\n }, [options, selectedOptions, getUniqueOptions]);\n\n // Handle selected value\n const handleSelectedValue = useCallback(async (updateOptions: IOption[]) => {\n if (!watchedValue) return;\n let filterValue = props.is_multiselect ? watchedValue : [watchedValue];\n filterValue = Array.isArray(filterValue) ? filterValue?.filter(i => i) : [];\n filterValue = Array.isArray(filterValue) ? filterValue?.map((item) => Number(item)) : [];\n const isInOptions = updateOptions?.filter((item) =>\n Array.isArray(filterValue) ? filterValue.includes(item.id || item.value) : (item[filterKey] || item.value || item.id) == filterValue\n );\n\n if (Array.isArray(isInOptions) && isInOptions.length > 0) {\n getSelectedData?.(props.is_multiselect ? isInOptions : isInOptions[0], props.name);\n return true;\n }\n return false;\n //eslint-disable-next-line\n }, [props.is_multiselect, props.name, watchedValue, filterKey, getSelectedData, filteredOptions]);\n\n // Fetch options by ID\n const fetchIdOptions = useCallback(async () => {\n if (open) return;\n if (await handleSelectedValue(filteredOptions)) return;\n\n const condition = props.is_multiselect ?\n Array.isArray(watchedValue) && watchedValue.length > 0 :\n Boolean(watchedValue);\n\n if (condition) {\n setInitialLoading(true);\n const response = await fetchOptions('', { ...cf, '&id.in': watchedValue }, 1, false);\n setInitialLoading(false);\n\n if (response.length == 0 && setValue && !isInternalOptions) {\n // setValue(`${props.fieldArrayName}.${props.name}`, props.is_multiselect ? [] : null);\n }\n }\n //eslint-disable-next-line\n }, [open, watchedValue, JSON.stringify(cf)]);\n\n // Initial fetch\n const initialFetch = useCallback(async () => {\n const condition = JSON.stringify(cf) !== JSON.stringify(prevFilter);\n\n if (condition) {\n setPrevFilter(cf);\n setOptions([]);\n setIsAlreadyLoaded(false);\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n }\n\n if (!isInternalOptions && !isAlreadyLoaded) {\n await fetchOptions(searchQuery, cf, 1, false);\n setIsAlreadyLoaded(true);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [cf, isInternalOptions, isAlreadyLoaded]);\n\n // Debounced search\n const debouncedSearch = useMemo(\n () => debounce(async (searchTerm: string) => {\n if (loading) return;\n\n if (!searchTerm && !isInternalOptions && searchInitiate) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n await fetchOptions('', cf, 1, false);\n }\n if (searchTerm.length > 1 && !isInternalOptions) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n await fetchOptions(searchTerm, cf, 1, false);\n }\n }, 700),\n //eslint-disable-next-line\n [isInternalOptions, searchInitiate, cf]\n );\n\n // Reset value function\n const resetValue = useCallback((field: any) => {\n field.onChange(props.is_multiselect ? [] : null);\n if (getSelectedData) {\n getSelectedData(null, props.name);\n }\n }, [props.is_multiselect, props.name, getSelectedData]);\n\n // Handle close\n const handleClose = useCallback(() => {\n setOpen(false);\n if (searchQuery.length > 0) {\n setIsAlreadyLoaded(false);\n }\n setSearchInitiate(false);\n setSearchQuery('');\n }, [searchQuery]);\n\n const handleModalOpen = useCallback(() => {\n setIsModalOpen(true);\n }, []);\n\n\n\n // Handle modal save\n const handleModalSave = useCallback(async (payload: any) => {\n if (!addConfig || !addConfig.api) {\n console.error('Add configuration is not properly set');\n return;\n }\n\n\n callApi({\n apiFunc: () => addConfig.api(payload),\n successMessage: `${props.label} ${t('common.added_successfully')}`,\n loadingState: setIsAddLoading,\n onSuccess: async (result) => {\n setIsModalOpen(false);\n if (!isInternalOptions) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n setIsAlreadyLoaded(false);\n await fetchOptions('', cf, 1, false);\n }\n if (result && result.data) {\n const newValue = props.is_multiselect\n ? [...(watchedValue || []), result.data.id]\n : result.data.id;\n setValue(`${props.fieldArrayName}.${props.name}`, newValue);\n if (getSelectedData) {\n getSelectedData(result.data, props.name, true);\n }\n }\n },\n onError: () => {\n setIsAddLoading(false);\n }\n })\n\n\n\n }, [addConfig, isInternalOptions, fetchOptions, cf, props.is_multiselect, props.fieldArrayName, props.name, watchedValue, setValue]);\n\n // Effects\n useEffect(() => {\n if (handleOptions) {\n handleOptions(selectedValue);\n }\n }, [handleOptions, selectedValue]);\n\n useEffect(() => {\n if (open) {\n initialFetch();\n }\n }, [open, initialFetch]);\n\n useEffect(() => {\n fetchIdOptions();\n }, [fetchIdOptions]);\n\n useEffect(() => {\n if (refresh) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n fetchOptions('', cf, 1, false);\n }\n }, [refresh, fetchOptions, cf]);\n\n useEffect(() => {\n if (open) {\n debouncedSearch(searchQuery);\n }\n return () => debouncedSearch.cancel();\n }, [searchQuery, open, debouncedSearch]);\n\n useEffect(() => {\n if (watchedValue && !open) {\n const selectedData = options?.filter((item) =>\n props.is_multiselect ?\n Array.isArray(watchedValue) && watchedValue.includes(item.id || item.value) :\n (item.id || item.value) == watchedValue\n );\n setSelectedOptions(selectedData || []);\n }\n }, [watchedValue, options, props.is_multiselect]);\n\n const removeUndefined = useCallback((selectOptions: any[]) => {\n return Array.isArray(selectOptions) ? selectOptions.filter(Boolean) : [];\n }, []);\n\n useEffect(() => {\n const config = dynamicSelectAdd(addType);\n setAddConfig(config);\n }, [addType])\n\n\n\n return (\n <Controller\n control={props.formControl}\n name={`${props.fieldArrayName}.${props.name}`}\n render={({ field, fieldState }) => (\n <>\n {props.placeholder == 'Select Currency' && setSelectedValue(field.value)}\n {showItemTooltip ? (\n <Tooltip\n title={getSelectedDataOptions?.label ? String(getSelectedDataOptions.label) : ''}\n placement='top'\n arrow\n slotProps={{\n popper: {\n modifiers: [{ name: 'offset', options: { offset: [0, -25] } }],\n },\n tooltip: {\n sx: { maxWidth: 500 },\n },\n }}\n >\n <span>\n <Select\n {...field}\n ref={selectRef}\n open={open}\n onOpen={() => {\n setOpen(true);\n setTimeout(() => {\n const searchInput = document.querySelector(\n `input[placeholder=\"Search ${props.label}\"]`\n ) as HTMLInputElement;\n console.log('Active Search input:', searchInput);\n searchInput?.focus();\n }, 150);\n }}\n onClose={handleClose}\n fullWidth\n dataPosition={props.position}\n dataName={`${props.fieldArrayName}.${props.name}`}\n placeholder={props.placeholder}\n label={props.label}\n defaultValue={props.defaultValue || (props.is_multiselect ? [] : '')}\n searchValue={searchQuery}\n required={props.formType == 'builder' ? false : props.required}\n size={props.size || 'small'}\n multiple={props.is_multiselect || false}\n disabled={props.disabled}\n sx={(props.is_multiselect && field?.value?.length) ? { \"& .MuiSelect-select\": { padding: '5.5px !important' } } : {}}\n variant='outlined'\n value={\n initialLoading\n ? (props.is_multiselect ? [] : '')\n : (field.value?.id || field.value || (props.is_multiselect ? [] : ''))\n }\n className={\n props.is_multiselect && removeUndefined(field.value)?.length\n ? 'MultiSelect filter-select'\n : ''\n }\n MenuProps={{\n PaperProps: {\n onScroll: handleScroll,\n style: { maxHeight: 300 }\n }\n }}\n\n renderValue={(selected: any) => {\n if (Array.isArray(selected)) {\n return (\n <ChipOrPlaceholder\n selectedLabel={props.selectedLabel}\n data={removeUndefined(selected)}\n placeholder={(loading || props.is_loading) ? <Loading /> : `${t('common.search')} ${props.label}`}\n onDelete={props.onChipRemove}\n disabled={props.disabled}\n chipProps={{\n sx: {\n background: '#ebf9f2',\n border: 0,\n // borderRadius: '15px',\n '& .MuiTypography-body1': {\n color: '#289b64',\n fontWeight: \"500\",\n }\n }\n }}\n />\n );\n } else {\n const selectedOption = filteredOptions.find(\n (option) => (option.value?.id || option.value) == selected\n );\n return (loading || props.is_loading) ? <Loading /> : selectedOption?.label ||\n (typeof props.label == 'string' ?\n `${t('common.search')} ${props.label}` :\n props.placeholder);\n }\n }}\n searchPlaceholder={`${t('common.search')} ${props.label}`}\n handleSearch={(text: string) => {\n setSearchQuery(text);\n setSearchInitiate(true);\n }}\n error={Boolean(fieldState.error?.message)}\n helperText={fieldState.error?.message || ''}\n onBlur={field.onBlur}\n input={\n <OutlinedInput\n label=''\n endAdornment={\n <InputAdornment position='end'>\n {(loading || props.is_loading) ? (\n <CircularProgress\n size={20}\n sx={{ mr: 3, color: \"#4AC08C\" }}\n />\n ) : (\n !props.disabled &&\n (props.is_multiselect ?\n (Array.isArray(field.value) && field.value.length > 0) :\n Boolean(field.value)) && showCancelButton && (\n <IconButton\n aria-label='clear selection'\n onClick={() => resetValue(field)}\n edge='end'\n sx={isRtl ? { ml: 2.5 } : { mr: 1.5 }}\n size='small'\n >\n <Close sx={{ fontSize: '1rem' }} />\n </IconButton>\n )\n )}\n </InputAdornment>\n }\n />\n }\n >\n {generateMenuItems({\n options: filteredOptions,\n multiple: Boolean(props.is_multiselect),\n placeholder: props.placeholder,\n values: field.value,\n with_checkboxes: true,\n field: props,\n disabledIds,\n onChange: field.onChange,\n handleChange,\n hasParent,\n t,\n // onFooterClick: () => {\n // if (props?.onFooterClick) {\n // props?.onFooterClick();\n // } else {\n // handleModalOpen();\n // }\n // }\n })}\n {props?.enable_footer &&\n <Box key=\"footer\" sx={{ position: 'sticky', bottom: 0, background: '#fff', zIndex: 1 }}>\n <Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n <MenuItem sx={{ gap: 1 }} onClick={\n () => {\n if (props?.onFooterClick) {\n props?.onFooterClick();\n } else {\n handleModalOpen();\n }\n }\n\n }>\n <Add fontSize='small' />\n <Typography type='s4' color='theme.secondary.1000'>\n Create New {props.label}\n </Typography>\n </MenuItem>\n </Box>}\n {pagination.isLoadingMore && (\n <MenuItem disabled>\n <Box sx={{ display: 'flex', justifyContent: 'center', width: '100%' }}>\n <CircularProgress size={20} />\n </Box>\n </MenuItem>\n )}\n </Select>\n </span>\n </Tooltip>\n ) : (\n <Select\n {...field}\n ref={selectRef}\n open={open}\n onOpen={() => {\n setOpen(true);\n setTimeout(() => {\n const searchInput = document.querySelector(\n `input[placeholder=\"Search ${props.label}\"]`\n ) as HTMLInputElement;\n console.log('Active Search input:', searchInput);\n searchInput?.focus();\n }, 150);\n }}\n onClose={handleClose}\n fullWidth\n dataPosition={props.position}\n dataName={`${props.fieldArrayName}.${props.name}`}\n placeholder={props.placeholder}\n label={props.label}\n defaultValue={props.defaultValue || (props.is_multiselect ? [] : '')}\n searchValue={searchQuery}\n required={props.formType == 'builder' ? false : props.required}\n size={props.size || 'small'}\n multiple={props.is_multiselect || false}\n disabled={props.disabled}\n sx={(props.is_multiselect && field?.value?.length) ? { \"& .MuiSelect-select\": { padding: '5.5px !important' } } : {}}\n variant='outlined'\n value={\n initialLoading\n ? (props.is_multiselect ? [] : '')\n : (field.value?.id || field.value || (props.is_multiselect ? [] : ''))\n }\n className={\n props.is_multiselect && removeUndefined(field.value)?.length\n ? 'MultiSelect filter-select'\n : ''\n }\n MenuProps={{\n PaperProps: {\n onScroll: handleScroll,\n style: { maxHeight: 300 }\n }\n }}\n\n renderValue={(selected: any) => {\n if (Array.isArray(selected)) {\n return (\n <ChipOrPlaceholder\n selectedLabel={props.selectedLabel}\n data={removeUndefined(selected)}\n placeholder={(loading || props.is_loading) ? <Loading /> : `${t('common.search')} ${props.label}`}\n onDelete={props.onChipRemove}\n disabled={props.disabled}\n chipProps={{\n sx: {\n background: '#ebf9f2',\n border: 0,\n // borderRadius: '15px',\n '& .MuiTypography-body1': {\n color: '#289b64',\n fontWeight: \"500\",\n }\n }\n }}\n />\n );\n } else {\n const selectedOption = filteredOptions.find(\n (option) => (option.value?.id || option.value) == selected\n );\n return (loading || props.is_loading) ? <Loading /> : selectedOption?.label ||\n (typeof props.label == 'string' ?\n `${t('common.search')} ${props.label}` :\n props.placeholder);\n }\n }}\n searchPlaceholder={`${t('common.search')} ${props.label}`}\n handleSearch={(text: string) => {\n setSearchQuery(text);\n setSearchInitiate(true);\n }}\n error={Boolean(fieldState.error?.message)}\n helperText={fieldState.error?.message || ''}\n onBlur={field.onBlur}\n input={\n <OutlinedInput\n label=''\n endAdornment={\n <InputAdornment position='end'>\n {(loading || props.is_loading) ? (\n <CircularProgress\n size={20}\n sx={{ mr: 3, color: \"#4AC08C\" }}\n />\n ) : (\n !props.disabled &&\n (props.is_multiselect ?\n (Array.isArray(field.value) && field.value.length > 0) :\n Boolean(field.value)) && showCancelButton && (\n <IconButton\n aria-label='clear selection'\n onClick={() => resetValue(field)}\n edge='end'\n sx={isRtl ? { ml: 2.5 } : { mr: 1.5 }}\n size='small'\n >\n <Close sx={{ fontSize: '1rem' }} />\n </IconButton>\n )\n )}\n </InputAdornment>\n }\n />\n }\n >\n {generateMenuItems({\n options: filteredOptions,\n multiple: Boolean(props.is_multiselect),\n placeholder: props.placeholder,\n values: field.value,\n with_checkboxes: true,\n field: props,\n disabledIds,\n onChange: field.onChange,\n handleChange,\n hasParent,\n t,\n // onFooterClick: () => {\n // if (props?.onFooterClick) {\n // props?.onFooterClick();\n // } else {\n // handleModalOpen();\n // }\n // }\n })}\n {props?.enable_footer &&\n <Box key=\"footer\" sx={{ position: 'sticky', bottom: 0, background: '#fff', zIndex: 1 }}>\n <Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n <MenuItem sx={{ gap: 1 }} onClick={\n () => {\n if (props?.onFooterClick) {\n props?.onFooterClick();\n } else {\n handleModalOpen();\n }\n }\n\n }>\n <Add fontSize='small' />\n <Typography type='s4' color='theme.secondary.1000'>\n Create New {props.label}\n </Typography>\n </MenuItem>\n </Box>}\n {pagination.isLoadingMore && (\n <MenuItem disabled>\n <Box sx={{ display: 'flex', justifyContent: 'center', width: '100%' }}>\n <CircularProgress size={20} />\n </Box>\n </MenuItem>\n )}\n </Select>\n )}\n\n {/* Modal for adding new items */}\n {addConfig && addConfig.component && (\n <>\n {React.createElement(addConfig.component, {\n isOpen: isModalOpen,\n setIsOpen: setIsModalOpen,\n isLoading: isAddLoading,\n onSave: handleModalSave,\n modalProps: {\n maxWidth: 'md',\n fullWidth: true\n },\n ...props?.modalComponentProps\n })}\n </>\n )}\n\n {props.is_multiselect && Array.isArray(field.value) && (\n <SelectedItems\n data={field.value}\n options={filteredOptions}\n />\n )}\n </>\n )}\n />\n );\n});\nexport default DynamicSearchSelect;","import React, { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { Box } from '@mui/material';\n\nimport Typography from '../../typography/typography';\nimport DatePicker from '../../date-picker/date-picker';\nimport DateTimePicker from '../../date-time-picker/date-time-picker';\nimport TextField from '../../text-field/text-field';\nimport UploadMedia from '../../upload-media/upload-media';\n\nimport * as yup from 'yup';\nimport _ from 'lodash';\nimport dayjs from 'dayjs';\nimport PhoneInput from '../../phone-input/phone-input';\nimport Checkbox from '../../checkbox/checkbox';\nimport SearchableSelect from '../../searchable-select';\n\ninterface IInlineEditFields {\n\tcell: any;\n\tcolumn: any;\n\trow: any;\n\ttable: any;\n\tcol: any;\n\tcallback: (value: any, column: any, rowId: any) => any;\n\terrors: any;\n\tvalidationSchema: any;\n\tsetValidationErrors: any;\n\tonChangeRowField?: (e: any, type: string, row: any) => any;\n\tgetSelectedData: any;\n}\nconst InlineEditFields: React.FC<IInlineEditFields> = ({\n\t// cell,\n\tcolumn,\n\trow,\n\t// table,\n\tcol,\n\t// callback,\n\terrors,\n\tvalidationSchema,\n\tsetValidationErrors,\n\tonChangeRowField,\n\tgetSelectedData\n}) => {\n\n\tconst [inputValue, setInputValue] = useState<any>();\n\tconst [isInitialSet, setIsInitialSet] = useState<any>(false);\n\tconst customFilter = useRef(null)\n\t// ** Getting only editing enabled fields.\n\tconst editCols = row\n\t\t.getAllCells()\n\t\t.map((col: any) => col.column.columnDef)\n\t\t.filter(\n\t\t\t(col: any) =>\n\t\t\t\tcol?.enableEditing === undefined || col?.enableEditing === true\n\t\t);\n\n\tconst editVariant = col.editVariant;\n\tconst fieldProperties = column.columnDef?.editProperties || {};\n\n\t// ** Default and Dynamic disbaling a field with row data\n\tlet fieldDisbled = false;\n\tif (fieldProperties?.disable) {\n\t\tif (typeof fieldProperties.disable === 'function') {\n\t\t\tfieldDisbled = Boolean(fieldProperties?.disable(row, row._valuesCache));\n\t\t} else {\n\t\t\tfieldDisbled = Boolean(fieldProperties.disable);\n\t\t}\n\t}\n\n\tconst handleCustomFilter = useCallback(async (row, values) => {\n\t\ttry {\n\t\t\tif (typeof fieldProperties.customeFilter === 'function') {\n\t\t\t\tconst filter = await fieldProperties.customeFilter(row, values);\n\t\t\t\tcustomFilter.current = filter;\n\t\t\t\treturn filter;\n\t\t\t} else {\n\t\t\t\tcustomFilter.current = fieldProperties?.customeFilter;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn null;\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [fieldProperties, row, row._valuesCache]);\n\n\n\tuseEffect(() => {\n\t\thandleCustomFilter(row, row._valuesCache)\n\t}, [handleCustomFilter, row, row._valuesCache]);\n\t// ** Setting a default value for edit mode.\n\tconst valueKey = fieldProperties?.valueKey;\n\tlet defaultValue: any = '';\n\n\tif (editVariant === 'select' && fieldProperties?.is_multiple) {\n\t\tdefaultValue = valueKey ? _.get(row.original, valueKey, []) : [];\n\t} else {\n\t\tdefaultValue = valueKey\n\t\t\t? _.get(row.original, valueKey, row.original[column.id])\n\t\t\t: row.original[column.id];\n\t}\n\n\t// ** Validate a field with Material Table Validation Schema.\n\tconst validate = async (value: any) => {\n\t\ttry {\n\t\t\t// const v = await validationSchema.validateAt( // * * This line has commented for rerendering purpose\n\t\t\tawait validationSchema.validateAt(\n\t\t\t\tcolumn.id,\n\t\t\t\t{\n\t\t\t\t\t[column.id]: value\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tabortEarly: false\n\t\t\t\t}\n\t\t\t);\n\t\t\t// if (v) { // * * The if condition has commented for rerendering purpose\n\t\t\tconst fe: any = {}; // field error\n\t\t\tfor (const e in errors) {\n\t\t\t\tif (e != column.id) {\n\t\t\t\t\tfe[e] = errors[e];\n\t\t\t\t}\n\t\t\t}\n\t\t\tsetValidationErrors(fe);\n\t\t\t// }\n\t\t} catch (err) {\n\t\t\tif (err instanceof yup.ValidationError) {\n\t\t\t\tconst e: Record<string, string> = {};\n\t\t\t\terr.inner.forEach((error) => {\n\t\t\t\t\tif (error.path) {\n\t\t\t\t\t\te[error.path] = error.message;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst em = { ...errors, ...e };\n\t\t\t\tsetValidationErrors(em);\n\t\t\t}\n\t\t}\n\t};\n\n\n\n\t// ** Detect onChnage to perform the action on an input change.\n\tconst onChange = async (e: any, type: string, selectedData: any) => {\n\t\tconst data = selectedData\n\t\tlet value;\n\t\tswitch (type) {\n\t\t\tcase 'date':\n\t\t\tcase 'file':\n\t\t\tcase 'image':\n\t\t\tcase 'phone':\n\t\t\t\tvalue = e;\n\t\t\t\t// setInputValue({ ...inputValue, [column.id]: e });\n\t\t\t\tbreak;\n\t\t\tcase 'text':\n\t\t\tcase 'number':\n\t\t\t\tvalue = e.target.value;\n\t\t\t\t// setInputValue({ ...inputValue, [column.id]: value });\n\t\t\t\tbreak;\n\t\t\tcase 'checkbox':\n\t\t\t\tvalue = e.target.checked;\n\t\t\t\t// setInputValue({ ...inputValue, [column.id]: value });\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tvalue = e.target.value;\n\t\t\t\tbreak;\n\t\t}\n\t\tsetInputValue({ ...inputValue, [column.id]: value });\n\n\t\tif (onChangeRowField) {\n\t\t\tconst v = await onChangeRowField(e, type, row, col, data);\n\t\t\tif (v) {\n\t\t\t\trow._valuesCache = { ...row._valuesCache, ...v };\n\t\t\t\tsetInputValue({ ...inputValue, ...v });\n\t\t\t}\n\t\t}\n\t\tsetInputValue({ ...inputValue, [column.id]: value });\n\t\trow._valuesCache = { ...row._valuesCache, [column.id]: value };\n\n\t\tawait validate(value);\n\t};\n\n\tuseEffect(() => {\n\t\tsetInputValue({ ...inputValue, ...row._valuesCache });\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [row._valuesCache]);\n\n\tuseEffect(() => {\n\t\tif (!isInitialSet) {\n\t\t\tconst editFields = Object.keys(row._valuesCache || {});\n\t\t\tconst dValues: any = {};\n\n\t\t\trow.getAllCells().forEach((cell) => {\n\t\t\t\tif (\n\t\t\t\t\tcell.column.columnDef?.enableEditing === undefined ||\n\t\t\t\t\tcell.column.columnDef?.enableEditing === true\n\t\t\t\t) {\n\t\t\t\t\tconst { is_multiple, valueKey } =\n\t\t\t\t\t\tcell.column.columnDef?.editProperties || {};\n\t\t\t\t\tif (editFields.length === 0 || editFields.includes(cell.column.id)) {\n\t\t\t\t\t\tconst cachedValue = row._valuesCache?.[cell.column.id];\n\t\t\t\t\t\tconst vl = _.get(row.original, valueKey);\n\t\t\t\t\t\tif (editVariant === 'select' && is_multiple) {\n\t\t\t\t\t\t\tdValues[cell.column.id] = cachedValue ?? (vl\n\t\t\t\t\t\t\t\t? Array.isArray(vl)\n\t\t\t\t\t\t\t\t\t? vl\n\t\t\t\t\t\t\t\t\t: [vl]\n\t\t\t\t\t\t\t\t: []);\n\t\t\t\t\t\t} else if (editVariant === 'date' || editVariant === 'date_time') {\n\t\t\t\t\t\t\tdValues[cell.column.id] = cachedValue ?? (vl\n\t\t\t\t\t\t\t\t? dayjs(vl).isValid()\n\t\t\t\t\t\t\t\t\t? dayjs(vl)\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t: dayjs(row.original[cell.column.id]).isValid()\n\t\t\t\t\t\t\t\t\t? dayjs(row.original[cell.column.id])\n\t\t\t\t\t\t\t\t\t: undefined);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst rawValue = _.get(\n\t\t\t\t\t\t\t\trow.original,\n\t\t\t\t\t\t\t\tvalueKey,\n\t\t\t\t\t\t\t\trow.original[cell.column.id]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst cellDefaultValue = cell.column.columnDef?.editProperties?.defaultValue;\n\t\t\t\t\t\t\tdValues[cell.column.id] = cachedValue ?? ((rawValue === '' || rawValue === undefined || rawValue === null)\n\t\t\t\t\t\t\t\t&& cellDefaultValue !== undefined\n\t\t\t\t\t\t\t\t? cellDefaultValue\n\t\t\t\t\t\t\t\t: rawValue);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t// setFieldsValues(dValues);\n\t\t\trow._valuesCache = dValues;\n\t\t\tsetInputValue(dValues);\n\t\t\tsetIsInitialSet(true);\n\t\t}\n\t}, [row, editVariant, isInitialSet]);\n\n\tconst handleMinDate = (state) => typeof state == 'function' ? state(row) : state\n\n\treturn (\n\t\t<>\n\t\t\t{(!editVariant || editVariant === 'number') && (\n\t\t\t\t<TextField\n\t\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\t\t// onBlur={(e) => onBlur(e)}\n\t\t\t\t\t// onKeyDown={onKeyDown}\n\t\t\t\t\tonChange={(e) => onChange(e, editVariant)}\n\t\t\t\t\tvalue={inputValue?.[column.id]}\n\t\t\t\t\tautoFocus={editCols?.[0]?.accessorKey === column.id}\n\t\t\t\t\ttype={editVariant || 'text'}\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\n\t\t\t\t\thelperText={errors?.[column.id]}\n\t\t\t\t\tplaceholder={fieldProperties?.placeholder || ''}\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\tdisabled={fieldDisbled}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{editVariant === 'select' && (\n\t\t\t\t<Box display='flex' flexDirection='column' width='100%'>\n\t\t\t\t\t<SearchableSelect\n\t\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\t\t\tplaceholder={fieldProperties?.placeholder || ''}\n\t\t\t\t\t\tsearchPlaceholder={`Search ${col.header}`}\n\t\t\t\t\t\tonChange={(e, row) => onChange(e, 'select', row)}\n\t\t\t\t\t\tapiType={fieldProperties?.apiType}\n\t\t\t\t\t\tautoFocus={editCols?.[0]?.accessorKey === column.id}\n\t\t\t\t\t\toptions={col?.editSelectOptions}\n\t\t\t\t\t\tcustomeFilter={customFilter.current}\n\t\t\t\t\t\tfilterKey={fieldProperties?.filterKey}\n\t\t\t\t\t\tlabelKey={fieldProperties?.labelKey}\n\t\t\t\t\t\tvalueKey={fieldProperties?.bindingKey}\n\t\t\t\t\t\tattributes={fieldProperties.attributes}\n\t\t\t\t\t\tisInternal={fieldProperties?.isInternal || !fieldProperties?.apiType}\n\t\t\t\t\t\tmultiple={fieldProperties?.is_multiple}\n\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\tfieldProperties?.is_multiple\n\t\t\t\t\t\t\t\t? Array.isArray(inputValue?.[column.id])\n\t\t\t\t\t\t\t\t\t? inputValue?.[column.id]\n\t\t\t\t\t\t\t\t\t: []\n\t\t\t\t\t\t\t\t: inputValue?.[column.id]\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgetSelectedData={(row) => getSelectedData(fieldProperties?.field_name, row)}\n\t\t\t\t\t\tdisabled={fieldDisbled}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{errors?.[column.id] && (\n\t\t\t\t\t\t<Typography color='theme.error.600' type='s5'>\n\t\t\t\t\t\t\t{errors?.[column.id]}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t)}\n\t\t\t\t</Box>\n\t\t\t)}\n\t\t\t{editVariant === 'date' && (\n\t\t\t\t<DatePicker\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\t\tonChange={(v) => onChange(v, 'date')}\n\t\t\t\t\ttextFieldProps={{\n\t\t\t\t\t\tautoFocus: editCols?.[0]?.accessorKey === column.id\n\t\t\t\t\t}}\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\n\t\t\t\t\thelperText={errors?.[column.id]}\n\t\t\t\t\tformat={fieldProperties?.dateFormat}\n\t\t\t\t\tplaceholder={\n\t\t\t\t\t\tfieldProperties?.placeholder || fieldProperties?.dateFormat\n\t\t\t\t\t}\n\t\t\t\t\tvalue={\n\t\t\t\t\t\tdayjs(row._valuesCache[column.id]).isValid()\n\t\t\t\t\t\t\t? dayjs(row._valuesCache[column.id])\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\tdisabled={fieldDisbled}\n\t\t\t\t\tminDate={() => handleMinDate(fieldProperties?.min_date)}\n\t\t\t\t\tmaxDate={() => handleMinDate(fieldProperties?.min_date)}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{editVariant === 'date_time' && (\n\t\t\t\t<DateTimePicker\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\t\tonChange={(v) => onChange(v, 'date')}\n\t\t\t\t\ttextFieldProps={{\n\t\t\t\t\t\tautoFocus: editCols?.[0]?.accessorKey === column.id\n\t\t\t\t\t}}\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\n\t\t\t\t\thelperText={errors?.[column.id]}\n\t\t\t\t\tformat={fieldProperties?.dateFormat}\n\t\t\t\t\tplaceholder={\n\t\t\t\t\t\tfieldProperties?.placeholder || fieldProperties?.dateFormat\n\t\t\t\t\t}\n\t\t\t\t\tvalue={\n\t\t\t\t\t\tdayjs(row._valuesCache[column.id]).isValid()\n\t\t\t\t\t\t\t? dayjs(row._valuesCache[column.id])\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\tdisabled={fieldDisbled}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{(editVariant === 'file' || editVariant === 'image') && (\n\t\t\t\t<Box display='flex' flexDirection='column'>\n\t\t\t\t\t<UploadMedia\n\t\t\t\t\t\tname={fieldProperties?.field_name || 'table_file'}\n\t\t\t\t\t\tdataPosition={0}\n\t\t\t\t\t\tdataName='table_file'\n\t\t\t\t\t\tlabel=''\n\t\t\t\t\t\ttype={editVariant}\n\t\t\t\t\t\tmax_size={10}\n\t\t\t\t\t\tonChange={(v) => onChange(v, 'file')}\n\t\t\t\t\t\terror={errors?.[column.id] ? true : false}\n\t\t\t\t\t\tmultiple={Boolean(column?.is_multiple)}\n\t\t\t\t\t\tvalue={row._valuesCache[column.id]}\n\t\t\t\t\t/>\n\t\t\t\t\t{errors?.[column.id] && (\n\t\t\t\t\t\t<Typography color='theme.error.600' type='s5'>\n\t\t\t\t\t\t\t{errors?.[column.id]}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t)}\n\t\t\t\t</Box>\n\t\t\t)}\n\t\t\t{editVariant === 'phone' && (\n\t\t\t\t<PhoneInput\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\tdefault_value={defaultValue}\n\t\t\t\t\tonChange={(v) => onChange(v, 'phone')}\n\t\t\t\t\ttextFieldProps={{\n\t\t\t\t\t\tautoFocus: editCols?.[0]?.accessorKey === column.id\n\t\t\t\t\t}}\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\n\t\t\t\t\thelperText={errors?.[column.id]}\n\t\t\t\t\tformat={fieldProperties?.dateFormat}\n\t\t\t\t\tplaceholder={\n\t\t\t\t\t\tfieldProperties?.placeholder || fieldProperties?.dateFormat\n\t\t\t\t\t}\n\t\t\t\t\tvalue={row._valuesCache?.[column.id]}\n\t\t\t\t\tdisabled={fieldDisbled}\n\t\t\t\t\tisInlineEditing={true}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{editVariant === 'checkbox' && (\n\t\t\t\t<Checkbox\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\tdefaultChecked={Boolean(defaultValue)}\n\t\t\t\t\t// checked={Boolean(defaultValue)}\n\t\t\t\t\tonChange={(v) => onChange(v, 'checkbox')}\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\n\t\t\t\t\thelperText={errors?.[column.id]}\n\t\t\t\t\tformat={fieldProperties?.dateFormat}\n\t\t\t\t\tplaceholder={\n\t\t\t\t\t\tfieldProperties?.placeholder || fieldProperties?.dateFormat\n\t\t\t\t\t}\n\t\t\t\t\tvalue={row._valuesCache?.[column.id]}\n\t\t\t\t\tdisabled={fieldDisbled}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n};\n\nexport default InlineEditFields;\n","/* eslint-disable unused-imports/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable no-mixed-spaces-and-tabs */\nimport React, { cloneElement, useCallback, useEffect, useState } from 'react';\nimport {\n\tMRT_ColumnDef,\n\tMRT_ColumnSizingInfoState,\n\tMRT_ColumnSizingState,\n\tMRT_Header,\n\tMRT_Row,\n\tMRT_RowData,\n\tMRT_RowSelectionState,\n\tMRT_SortingState,\n\tMRT_TableInstance,\n\tMRT_TableState,\n\tMaterialReactTable,\n\tMaterialReactTableProps,\n\tuseMaterialReactTable,\n\t// Cell\n} from 'material-react-table';\nimport { IPaginationModel } from '../../@types/pagination-model';\nimport {\n\tBox,\n\tstyled,\n\tMenuItem,\n\tIconButton,\n\tListItemIcon,\n\tListItemText,\n\tSvgIconProps,\n\tDivider\n} from '@mui/material';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nimport Menu from '../menu/menu';\nimport Typography from '../typography/typography';\nimport SearchBar from '../search-bar/search-bar';\nimport images from '../../assets/images';\n// import DeleteIcon from \"@mui/icons-material/Delete\";\n// import UpdateIcon from \"@mui/icons-material/Update\";\n// import PlayIcon from \"@mui/icons-material/PlayArrow\";\n\nimport './material-table.scss';\nimport {\n\tArrowUpDown,\n\tCheckBoxIcon,\n\tClose,\n\tEdit,\n\tRecgtangleIcon,\n\tSave,\n\tTrash\n} from '../icons';\n// import {\n// \tArrowDropDown /* , SaveOutlined */,\n// \tArrowDropUp\n// } from '@mui/icons-material';\nimport InlineEditFields from './components/inline-edit-fields';\nimport Tooltip from '../tooltip/Tooltip';\nimport Button from '../button/button';\nimport Add from '@mui/icons-material/Add';\nimport dayjs from 'dayjs';\nimport * as yup from 'yup';\nimport ConfirmPopUp from '../confirm-modal/confirm-modal';\nimport { useTranslation } from 'react-i18next';\nimport { enqueueSnackbar } from 'notistack';\nimport { usePages } from '@erpsquad/common/runtime';\nimport { useNavigate } from 'react-router-dom';\n// Module-specific pathname imports removed - should be passed as props or configured by consuming app\n// import { PathnameAccounting } from 'accounting/src/pathname.accounting';\n// import { PathnameInventory } from 'inventory/src/pathname.inventory';\n// import { PathnameManufacturing } from 'manufacturing/src/pathname.manufacturing';\n// import { PathnamePurchase } from 'procurement/src/pathname.procurement';\n// import { PathnameCrm } from 'crm/src/pathname.crm';\n// import { PathnameUsers } from 'user/src/pathname.user';\n// import { PathnameRental } from '../../../../rental/src/pathname.rental';\nimport { PathnameDocument } from '../../constants/pathnames/pathname.document';\nimport { PathnameAccounting } from '../../constants/pathnames/pathname.accounting';\nimport { PathnameInventory } from '../../constants/pathnames/pathname.inventory';\nimport { PathnameManufacturing } from '../../constants/pathnames/pathname.manufacturing';\nimport { PathnamePurchase } from '../../constants/pathnames/pathname.procurement';\nimport { PathnameCrm } from '../../constants/pathnames/pathname.crm';\nimport { PathnameUsers } from '../../constants/pathnames/pathname.user';\nimport { PathnameRental } from '../../constants/pathnames/pathname.rental';\nimport useDeepMemo from '../../hooks/use-deep-memo';\nimport { PageState } from '@erpsquad/common/runtime';\nimport { PathnameHrms } from '@/constants';\n\ntype ExtraEditVariants =\n\t| 'file'\n\t| 'image'\n\t| 'date'\n\t| 'number'\n\t| 'time'\n\t| 'date_time'\n\t| 'phone'\n\t| 'checkbox';\n\ntype DisableFunction = (row: any, virtualRow?: any) => boolean;\n\nexport type TypeBooleanLabels = { 1: string; 0: string; true: string; false: string }\n\nexport interface MaterialTableColumnProps\n\textends Omit<MRT_ColumnDef<MRT_RowData>, 'editVariant'> {\n\tvisible?: boolean;\n\ttype?: string;\n\tshowDefaultCurrency?: boolean,\n\tvalueGet?: string;\n\tcustom_class?: string;\n\ttypeArrayAccessorKey?: string; //when type is an array of object\n\ttypeBooleanLabels?: TypeBooleanLabels; //when type is an boolean\n\teditVariant?: MRT_ColumnDef<MRT_RowData>['editVariant'] | ExtraEditVariants;\n\teditProperties?: {\n\t\tfield_name?: string;\n\t\tvalueKey?: string;\n\t\tplaceholder?: string;\n\t\tdateFormat?: string;\n\t\tvalidations?: any[];\n\t\tis_multiple?: boolean;\n\t\tis_multiline?: boolean;\n\t\tdisable?: boolean | DisableFunction;\n\t};\n\tredirectionPathWithId?: string;\n\thandleRowClick?: (row: any) => void;\n\tidField?: string;\n}\n\n\n\nexport interface MaterialTableColumnHeaderProps {\n\tcolumn: MRT_ColumnDef<any, any>;\n\theader: MRT_Header<any>;\n\ttable: MRT_TableInstance<any>;\n}\n\ntype rowSelectionCallback = (row: MRT_Row<any>) => boolean\n\ninterface MaterialTablePropsType {\n\tenablePagination?: boolean;\n\tdisableMaxHeight?: boolean;\n\trows: any;\n\ttotalPages: number;\n\tcolumns: any;\n\tpaginationModel: IPaginationModel;\n\tcolumnOrder?: string[];\n\tupdateData?: any;\n\thandleColumnOrdering?: (colOrder: any) => void;\n\tenableEditing?: boolean;\n\tenableColumnDragging?: boolean;\n\trowActionMenu?: any;\n\tdestructiveActionMenu?: any;\n\tgetRowId?: any;\n\tstates?: Partial<MRT_TableState<any>>;\n\tonSortingChange?: any;\n\tdisableDefaultActionColumn?: boolean;\n\tenableRowSelection?: boolean | rowSelectionCallback;\n\tdefaultActionColumnItems?: React.ReactElement[];\n\tenableBottomToolbar?: boolean;\n\tSetSelectedRowId?: any;\n\tisResetRow?: boolean;\n\tonCreateRow?: (data: any) => Promise<unknown>;\n\tonEditRow?: (data: any) => Promise<unknown>;\n\tonDeleteRow?: (data: any) => Promise<unknown>;\n\teditDisplayMode?: MaterialReactTableProps<any>['editDisplayMode'];\n\tenableRowCreate?: boolean;\n\tonChangeRowField?: (e: any, type: string, row: any) => void;\n\tonSelectRow?: (rows: any, prevSelected?: any) => any;\n\tenableColumnResizing?: boolean;\n\tselectedRowIds?: any[];\n\tonColumnVisibility?: (columns: MaterialTableColumnProps[]) => void\n\tgetSelectedData: any;\n\tenableAddCustomField?: boolean;\n\tdisabledDefaultActionColumnIcon?: boolean\n\tenableRowDragging?: boolean\n\thandleColumnResizing?: (sizes: MRT_ColumnSizingState) => void,\n\tcolumnSizes?: MRT_ColumnSizingState,\n\tshowPreview?: boolean;\n\thandlePreview?: (row: MRT_RowData) => void;\n}\n\nconst TableWrapper = styled(Box, {\n\tshouldForwardProp: (prop) => prop !== 'disableMaxHeight',\n})<{ disableMaxHeight?: boolean }>(({ theme: { palette }, disableMaxHeight }) => ({\n\t'.MuiTableCell-root': {\n\t\tborder: '1px solid #efefef',\n\t\tborderBottom: 0,\n\t\tborderLeft: 0,\n\t\tpadding: '0 0.5rem',\n\t\tlineHeight: '19px',\n\t\tfontSize: '14px',\n\t\tminHeight: 32,\n\t\t// '&:first-child': {\n\t\t// \tborderLeft: '1px solid #efefef'\n\t\t// },\n\t\t// '&:last-child': {\n\t\t// \tborderBottom: '1px solid #efefef'\n\t\t// }\n\n\t},\n\t'.MuiTableCell-head': {\n\t\tbackgroundColor: palette.theme?.secondary[100]\n\t},\n\t'.MuiTableContainer-root': {\n\t\t...(!disableMaxHeight && { maxHeight: 'clamp(350px, 100vh - 200px, 9999px) !important' }),\n\t},\n\n\t'.MuiPaper-root': {\n\t\tboxShadow: 'none',\n\n\t},\n\t'.MuiPaginationItem-root': {\n\t\t'&.Mui-selected': {\n\t\t\tbackgroundColor: palette?.theme?.primary[700],\n\t\t\tcolor: 'white'\n\t\t}\n\t},\n\t'.MuiTableRow-root': {\n\t\t'&.Mui-selected': {\n\t\t\tbackgroundColor: `${palette?.theme?.primary[100]} !important`,\n\t\t\tcolor: 'white'\n\t\t}\n\t},\n\t'.MuiCheckbox-indeterminate': {\n\t\tcolor: `${palette?.theme?.primary[700]} !important`,\n\t\t\"& svg\": {\n\t\t\theight: `20px !important`,\n\t\t\twidth: `20px !important`,\n\t\t}\n\t}\n}));\n\nexport const MaterialTable = React.memo(({\n\tenablePagination = false,\n\trows,\n\tcolumns,\n\ttotalPages,\n\tpaginationModel,\n\tcolumnOrder = ['mrt-row-select'],\n\tupdateData,\n\thandleColumnOrdering,\n\tenableEditing,\n\tenableColumnDragging,\n\tstates,\n\trowActionMenu,\n\tdestructiveActionMenu,\n\tdisableDefaultActionColumn,\n\tenableRowSelection,\n\tdefaultActionColumnItems = [],\n\tenableBottomToolbar,\n\tSetSelectedRowId,\n\tisResetRow,\n\tonCreateRow,\n\tonEditRow,\n\tonDeleteRow,\n\teditDisplayMode,\n\tenableRowCreate,\n\tonChangeRowField,\n\tonSelectRow,\n\tenableColumnResizing = true,\n\tselectedRowIds = [],\n\tonColumnVisibility,\n\tonSortingChange,\n\tgetSelectedData,\n\tdisabledDefaultActionColumnIcon = false,\n\tenableAddCustomField = true,\n\tenableRowDragging = false,\n\thandleColumnResizing = () => { },\n\tcolumnSizes = {},\n\tdisableMaxHeight = false,\n\tshowPreview = false,\n\thandlePreview = () => { },\n\t// eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\n\t// getRowId,\n\t// onDelete,\n\t// onUpdate,\n\t...rest\n}: MaterialTablePropsType) => {\n\tconst { t } = useTranslation();\n\tconst { formData = null, updatePageInfo, activePage: aPage } = usePages()\n\tconst activePage = useDeepMemo<PageState>(aPage);\n\tconst { pageNo } = paginationModel;\n\tconst [row, setRow] = useState({});\n\tconst [tableColumns, setTableColumns] = useState(columns);\n\tconst [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\tconst [popUpShow, setPopupShow] = useState<boolean>(false);\n\tconst [rowAnchorEl, setRowAnchorEl] = useState<null | HTMLElement>(null);\n\tconst visibleColumns = tableColumns.filter((column: any) => column.visible);\n\tconst hiddenColumns = tableColumns.filter((column: any) => !column.visible);\n\tconst [filteredOptions, setFilteredOptions] = useState(hiddenColumns);\n\tconst [selectedRow, setSelectedRow] = useState<number | null>(null);\n\tconst [validationErrors, setValidationErrors] = useState<any>({});\n\tconst [validationSchema, setValidationSchema] = useState<any>([]);\n\tconst [isCreatingRow, setIsCreatingRow] = useState<boolean>(false);\n\tconst [isEditingRow, setIsEditingRow] = useState<boolean>(false);\n\tconst [isDeletingRow, setIsDeletingRow] = useState<boolean>(false);\n\tconst [rowToDelete, setRowToDelete] = useState<any>(null);\n\tconst [rowSelection, setRowSelection] = useState<MRT_RowSelectionState>({});\n\tconst [isChecked, setIsChecked] = useState(false)\n\tconst [sorting, setSorting] = useState<MRT_SortingState>([]);\n\tconst [disableNextEdit, setDisableNextEdit] = useState(false);\n\tconst [columnSizing, setColumnSizing] = useState<MRT_ColumnSizingState>(activePage.column_sizes);\n\tconst [columnSizingInfo, setColumnSizingInfo] = useState<MRT_ColumnSizingInfoState>({\n\t\tcolumnSizingStart: [],\n\t\tdeltaOffset: null,\n\t\tdeltaPercentage: null,\n\t\tisResizingColumn: false,\n\t\tstartOffset: null,\n\t\tstartSize: null\n\t});\n\n\tconst navigate = useNavigate();\n\tconst currentModule = location.pathname.split('/')[2]\n\n\tlet redirectionPath = ''\n\tswitch (currentModule) {\n\t\tcase 'accounting':\n\t\t\tredirectionPath = PathnameAccounting.CUSTOM_FORM\n\t\t\tbreak;\n\t\tcase 'inventory':\n\t\t\tredirectionPath = PathnameInventory.CUSTOM_FORM\n\t\t\tbreak;\n\t\tcase 'manufacturing':\n\n\t\t\tredirectionPath = PathnameManufacturing.CUSTOM_FORM\n\t\t\tbreak;\n\t\tcase 'procurement':\n\t\t\tredirectionPath = PathnamePurchase.CUSTOM_FORM\n\t\t\tbreak;\n\t\tcase 'crm':\n\t\t\tredirectionPath = PathnameCrm.CUSTOM_FORM\n\t\t\tbreak;\n\t\tcase 'user':\n\t\t\tredirectionPath = PathnameUsers.CUSTOM_FORM\n\t\t\tbreak;\n\t\tcase 'rental':\n\t\t\tredirectionPath = PathnameRental.CUSTOM_FORM\n\t\t\tbreak;\n\t\tcase 'drive':\n\t\t\tredirectionPath = PathnameDocument.ADD_CUSTOM_FIELDS\n\t\t\tbreak;\n\t\tcase 'hrms':\n\t\t\tredirectionPath = PathnameHrms.CUSTOM_FORM;\n\t\t\tbreak;\n\t}\n\tconst path = `/dashboard/${currentModule}${redirectionPath}`\n\tconst getValidationType = (column: any) => {\n\t\tswitch (column.editVariant) {\n\t\t\tcase 'select':\n\t\t\t\treturn column?.editProperties?.is_multiple ? yup.array() : yup.string();\n\n\t\t\tcase 'number':\n\t\t\t\treturn yup.number().nullable().transform((value, originalValue) => (originalValue === \"\" ? null : value));\n\n\t\t\tcase 'url':\n\t\t\t\treturn yup\n\t\t\t\t\t.string()\n\t\t\t\t\t.matches(\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+)?$/,\n\t\t\t\t\t\t{ excludeEmptyString: true, message: 'Please enter valid URL.' }\n\t\t\t\t\t);\n\n\t\t\tcase 'date':\n\t\t\tcase 'date_time':\n\t\t\tcase 'time':\n\t\t\t\treturn yup.date().transform((value, originalValue) => {\n\t\t\t\t\tif (originalValue && typeof originalValue === 'object' && 'toDate' in originalValue) {\n\t\t\t\t\t\treturn (originalValue as any).toDate();\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}).typeError('Valid date is required');\n\n\t\t\tcase 'file':\n\t\t\tcase 'image':\n\t\t\t\treturn yup.mixed().nullable();\n\n\t\t\tdefault:\n\t\t\t\treturn yup.string()\n\t\t}\n\t};\n\n\tconst validationReducer = (\n\t\tvalidations: any,\n\t\tvalidation: any,\n\t\tcolumn: any\n\t) => {\n\t\tlet vld = validations\n\t\tswitch (validation.type) {\n\t\t\tcase 'required':\n\t\t\t\tvld = validation.value\n\t\t\t\t\t? validations.required(validation.msg_en).typeError(validation.msg_en)\n\t\t\t\t\t: column?.editProperties?.is_multiple\n\t\t\t\t\t\t? validations.min(1, validation.msg_en)\n\t\t\t\t\t\t: validations;\n\t\t\t\tbreak\n\t\t\tcase 'min':\n\t\t\t\tvld = validations.min(validation.value, validation.msg_en);\n\t\t\t\tbreak\n\t\t\tcase 'email':\n\t\t\t\tvld = validations.email(validation.value, validation.msg_en);\n\t\t\t\tbreak\n\t\t\tcase 'max':\n\t\t\t\tvld = validations.max(validation.value, validation.msg_en);\n\t\t\t\tbreak\n\t\t\tcase 'positive':\n\t\t\t\tvld = validation.value === true ? validations.test('is-positive-number', 'Value must be a positive number', (value) => !value || value >= 0) : validations;\n\t\t\t\tbreak\n\t\t\tcase 'when':\n\t\t\t\treturn validations.when(validation.relation, {\n\t\t\t\t\tis: (val: any) => val === validation.values,\n\t\t\t\t\tthen: () =>\n\t\t\t\t\t\tvalidation?.thenValidations?.reduce(\n\t\t\t\t\t\t\t(validations: any, validation: any) =>\n\t\t\t\t\t\t\t\tvalidationReducer(validations, validation, column),\n\t\t\t\t\t\t\tvalidations\n\t\t\t\t\t\t) || validations,\n\t\t\t\t\totherwise: () =>\n\t\t\t\t\t\tvalidation?.otherWiseValidations?.reduce(\n\t\t\t\t\t\t\t(validations: any, validation: any) =>\n\t\t\t\t\t\t\t\tvalidationReducer(validations, validation, column),\n\t\t\t\t\t\t\tvalidations\n\t\t\t\t\t\t) || validations\n\t\t\t\t});\n\t\t\tcase 'validate':\n\t\t\t\tif (typeof validation.callback === 'function') {\n\t\t\t\t\tvld = vld.test(\n\t\t\t\t\t\tvalidation.name || 'custom-validate',\n\t\t\t\t\t\tvalidation.msg_en || 'Validation failed',\n\t\t\t\t\t\tfunction (value) {\n\t\t\t\t\t\t\t// `this.parent` provides all sibling field values in the Yup context\n\t\t\t\t\t\t\treturn validation.callback(value, this.parent);\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t// Add more cases for other validation types as needed\n\t\t\tdefault:\n\t\t\t\tvld = validations;\n\t\t\t\tbreak\n\t\t}\n\n\t\tif (validation.type == 'required' && validation.value && (!column?.editVariant || column?.editVariant == 'text')) {\n\t\t\tvld = vld.test('no-blank-spaces', 'Blank space is not allowed', (value) => {\n\t\t\t\tif (!value) return true; // let .required() handle empty\n\t\t\t\treturn value.trim()?.length > 0;\n\t\t\t})\n\t\t}\n\n\t\treturn vld\n\n\t};\n\n\n\tconst generateValidationSchema = (columns: any[]) => {\n\t\tconst schema: any = {};\n\t\tcolumns.forEach((clm) => {\n\t\t\tif (clm?.editProperties?.validations?.length) {\n\t\t\t\tconst fieldValidations = clm?.editProperties?.validations.reduce(\n\t\t\t\t\t(validations: any, validation: any) =>\n\t\t\t\t\t\tvalidationReducer(validations, validation, clm),\n\t\t\t\t\tgetValidationType(clm)\n\t\t\t\t);\n\t\t\t\tschema[clm.accessorKey] = fieldValidations;\n\t\t\t}\n\t\t});\n\t\treturn schema;\n\t};\n\n\tuseEffect(() => {\n\t\tsetTableColumns(columns);\n\n\t\tconst schema: any = generateValidationSchema(columns);\n\t\tsetValidationSchema(yup.object().shape(schema));\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [columns]);\n\n\tuseEffect(() => {\n\t\tif (!columnSizingInfo?.isResizingColumn) {\n\t\t\tupdatePageInfo({ column_sizes: { ...activePage.column_sizes, ...columnSizing } })\n\t\t\thandleColumnResizing?.(columnSizing)\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [columnSizingInfo?.isResizingColumn, columnSizing])\n\n\tconst handleHeaderClick = (event: any) => {\n\t\tsetAnchorEl(event.currentTarget);\n\t};\n\n\tconst handleHeaderClose = () => {\n\t\tsetAnchorEl(null);\n\t};\n\n\tconst handleVisibleColumn = (column: any) => {\n\t\tconst updatedColumns = tableColumns.map((col: any) => ({\n\t\t\t...col,\n\t\t\tvisible: col.accessorKey === column.accessorKey ? false : col.visible\n\t\t}));\n\t\tsetTableColumns(updatedColumns);\n\t\tonColumnVisibility?.(JSON.parse(JSON.stringify(updatedColumns)))\n\t\tsetFilteredOptions([...filteredOptions, column]);\n\t\tsetAnchorEl(null);\n\t};\n\n\tconst handleAddButtonClick = () => {\n\t\tsetPopupShow(true);\n\t};\n\n\tconst handleBackButtonClick = () => {\n\t\tsetPopupShow(false);\n\t};\n\n\tconst handleAddColumn = (column: any) => {\n\t\tconst updatedColumns = tableColumns.map((col: any) => ({\n\t\t\t...col,\n\t\t\tvisible: col.accessorKey === column.accessorKey ? true : col.visible\n\t\t}));\n\t\tonColumnVisibility?.(JSON.parse(JSON.stringify(updatedColumns)))\n\t\tsetTableColumns(updatedColumns);\n\n\t\tconst updatedFilteredOptions = filteredOptions.filter(\n\t\t\t(option: any) => option.accessorKey !== column.accessorKey\n\t\t);\n\t\tsetFilteredOptions(updatedFilteredOptions);\n\t\tsetAnchorEl(null);\n\t\tsetPopupShow(false);\n\t};\n\n\tconst handleSearchEvent = (searchQuery: string) => {\n\t\tconst filteredColumns = hiddenColumns.filter((option: any) =>\n\t\t\toption.header.toLowerCase().includes(searchQuery.toLowerCase())\n\t\t);\n\t\tsetFilteredOptions(filteredColumns);\n\t};\n\n\tconst handleCustomAddColumn = () => {\n\t\tnavigate(path, { state: formData })\n\t\tsetAnchorEl(null);\n\t\tsetPopupShow(false);\n\t};\n\n\tconst handleRowClick = (rowId: number) => {\n\t\tsetSelectedRow(rowId); // Update selected row ID when a row is clicked\n\t};\n\n\tconst handlePreviewClick = (row: MRT_RowData) => {\n\t\thandlePreview?.(row);\n\t};\n\n\t// const handleDeleteClick = (event: any, data: any) => {\n\t// onDelete?.(data.id);\n\t// };\n\t// const handleUpdateClick = (event: any, data: any) => {\n\t// onUpdate?.(data.id);\n\t// };\n\n\tconst handleActionsClick = (event: any, data: any) => {\n\t\tsetRow(data);\n\t\tsetRowAnchorEl(event.currentTarget);\n\t};\n\n\tconst handleActionsClose = () => {\n\t\tsetRowAnchorEl(null);\n\t};\n\n\tconst formtValues = (values: any, cells: any[]) => {\n\t\tconst v: any = {};\n\t\tObject.keys(values).forEach((vl) => {\n\t\t\tconst val = values[vl];\n\t\t\tv[vl] = val;\n\t\t\tconst cell = cells.find((c) => c.accessorKey == vl);\n\t\t\tif (val) {\n\t\t\t\tif (val instanceof File) {\n\t\t\t\t\tv[vl] = val.name;\n\t\t\t\t}\n\t\t\t\tif (cell && cell?.editVariant == 'date') {\n\t\t\t\t\tv[vl] = dayjs(val).format(cell?.dateFormat || 'DD-MM-YYYY');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn v;\n\t};\n\n\tconst handleRowDelete = async () => {\n\t\tsetIsDeletingRow(true);\n\t\tif (rowToDelete) {\n\t\t\tawait onDeleteRow?.(rowToDelete);\n\t\t\tsetRowToDelete(null);\n\t\t}\n\t\tsetIsDeletingRow(false);\n\t};\n\n\tconst checkRequired = useCallback((editProperties: any) => {\n\t\treturn editProperties?.validations?.some((validation: any) => validation.type === 'required')\n\t}, [])\n\tuseEffect(() => {\n\t\tconst selectedRows = {};\n\t\t// Build the selectedRows object\n\t\tif (!isChecked && selectedRowIds.length) {\n\t\t\trows.forEach((row) => {\n\t\t\t\tif (selectedRowIds.includes(row.id)) {\n\t\t\t\t\tselectedRows[row.id] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\tsetRowSelection(selectedRows);\n\t\t\tsetIsChecked(true)\n\t\t}\n\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [rows, selectedRowIds]); // Dependency only on rows and selectedRowIds\n\n\tuseEffect(() => {\n\t\tif (onSortingChange instanceof Function) {\n\t\t\tconst sortingArray = Array.isArray(sorting) ? sorting : [];\n\t\t\tonSortingChange(sortingArray[0] || null)\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [sorting])\n\n\n\tconst resetRowSelection = () => {\n\t\tsetRowSelection({});\n\t\tsetDisableNextEdit(false);\n\t\tsetValidationErrors({});\n\t}\n\n\tconst getTextWidth = (text: string) => {\n\t\tconst canvas = document.createElement(\"canvas\");\n\t\tconst ctx = canvas.getContext(\"2d\");\n\t\tif (!ctx) return 50;\n\t\treturn ctx.measureText(text).width + 5; // padding\n\t}\n\tconst table = useMaterialReactTable({\n\t\t// options:{\n\t\t// \ttableLayout: \"auto\", // 👈 important\n\t\t// \tpadding: \"dense\",\n\t\t// },\n\t\t// columns: visibleColumns,\n\t\tdefaultColumn: {\n\t\t\tminSize: 0, // 👈 remove default min width\n\t\t\tsize: undefined, // 👈 optional, default size\n\t\t},\n\t\tcolumns: [\n\t\t\t...visibleColumns.map((c: any) => {\n\t\t\t\tconst headerWidth = getTextWidth(c.header || '');\n\t\t\t\tconst maxCellWidth = Math.max(\n\t\t\t\t\t...rows.map(row => getTextWidth(String(row[c.accessorKey] ?? '')))\n\t\t\t\t);\n\t\t\t\tconst finalWidth = Math.max(headerWidth, maxCellWidth);\n\t\t\t\treturn {\n\t\t\t\t\t...c,\n\t\t\t\t\t...(editDisplayMode === 'row'\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\tEdit: ({ cell, row, table, column }) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<InlineEditFields\n\t\t\t\t\t\t\t\t\t\tcell={cell}\n\t\t\t\t\t\t\t\t\t\tcolumn={column}\n\t\t\t\t\t\t\t\t\t\tcol={c}\n\t\t\t\t\t\t\t\t\t\trow={row}\n\t\t\t\t\t\t\t\t\t\ttable={table}\n\t\t\t\t\t\t\t\t\t\terrors={validationErrors}\n\t\t\t\t\t\t\t\t\t\tvalidationSchema={validationSchema}\n\t\t\t\t\t\t\t\t\t\tsetValidationErrors={setValidationErrors}\n\t\t\t\t\t\t\t\t\t\tonChangeRowField={onChangeRowField}\n\t\t\t\t\t\t\t\t\t\tgetSelectedData={(name, row) => getSelectedData?.(name, row)}\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},\n\t\t\t\t\t\t}\n\t\t\t\t\t\t: {}),\n\t\t\t\t\tHeader: (\n\t\t\t\t\t\t<Box display='flex' alignItems='center'>\n\t\t\t\t\t\t\t{c.header}\n\t\t\t\t\t\t\t{c?.required || checkRequired(c?.editProperties) && (\n\t\t\t\t\t\t\t\t<Typography type='s5' color='theme.error.600'>\n\t\t\t\t\t\t\t\t\t*\n\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t),\n\t\t\t\t\tenableColumnDragging: c.id !== 'actions',\n\t\t\t\t\t// cellStyle: { ...c.cellStyle, width: finalWidth },\n\t\t\t\t\t// headerStyle: { ...c.headerStyle, width: finalWidth },\n\t\t\t\t\t// size: finalWidth\n\t\t\t\t\tsize: undefined,\n\t\t\t\t\t// minSize: 40,\n\t\t\t\t\tmaxSize: 800,\n\t\t\t\t};\n\t\t\t}),\n\t\t\t...(showPreview ? [\n\t\t\t\t{\n\t\t\t\t\tid: 'preview',\n\t\t\t\t\tenableEditing: false,\n\t\t\t\t\tsize: 70,\n\t\t\t\t\theader: (\n\t\t\t\t\t\t<IconButton size=\"small\" sx={{ ml: '20px', '&:hover': { backgroundColor: 'transparent' } }}>\n\t\t\t\t\t\t\t<img src={images.common.eyeIcon} alt='Eye Icon' />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t),\n\t\t\t\t\tenableColumnDragging: false,\n\t\t\t\t\tvisible: true,\n\t\t\t\t\tmuiTableHeadCellProps: {\n\t\t\t\t\t\tclassName: 'pinned-column'\n\t\t\t\t\t},\n\t\t\t\t\tmuiTableBodyCellProps: {\n\t\t\t\t\t\tclassName: 'pinned-column',\n\t\t\t\t\t\tsx: {\n\t\t\t\t\t\t\twhiteSpace: 'pre-wrap'\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tCell: (props) =>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\tonClick={() => handlePreviewClick(props.row.original)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tPreview\n\t\t\t\t\t\t</Button>\n\t\t\t\t}\n\t\t\t] : []),\n\t\t\t...(!disableDefaultActionColumn\n\t\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'actions',\n\t\t\t\t\t\tenableEditing: false,\n\t\t\t\t\t\tsize: defaultActionColumnItems?.length > 1 ? 80 : 50,\n\t\t\t\t\t\theader: (\n\t\t\t\t\t\t\t<IconButton size=\"small\" sx={{ p: 0.5, '&:hover': { backgroundColor: 'transparent' } }} onClick={handleHeaderClick}>\n\t\t\t\t\t\t\t\t<img src={images.common.arrowIcon} alt='Arrow Icon' />\n\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t),\n\t\t\t\t\t\tenableColumnDragging: false,\n\t\t\t\t\t\tvisible: true,\n\t\t\t\t\t\tmuiTableHeadCellProps: {\n\t\t\t\t\t\t\tclassName: 'pinned-column'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmuiTableBodyCellProps: {\n\t\t\t\t\t\t\tclassName: 'pinned-column'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCell: (props) =>\n\t\t\t\t\t\t\tdefaultActionColumnItems?.length ? (\n\t\t\t\t\t\t\t\tdefaultActionColumnItems.map((item) => {\n\t\t\t\t\t\t\t\t\tconst updatedProps = {\n\t\t\t\t\t\t\t\t\t\t...item.props,\n\t\t\t\t\t\t\t\t\t\tonClick: () => item.props.onClick(props)\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\treturn cloneElement(item, updatedProps);\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t) : !disabledDefaultActionColumnIcon && (\n\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\tonClick={(e) => handleActionsClick(e, props.row.original)} disabled={!rowActionMenu?.length && !destructiveActionMenu?.length}>\n\t\t\t\t\t\t\t\t\t<img src={images.more} alt='More Icon' />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t: [])\n\t\t],\n\t\tdata: rows,\n\t\tmuiTableContainerProps: {\n\t\t\tsx: {\n\t\t\t\t...(disableMaxHeight && { maxHeight: 'none !important' }),\n\t\t\t},\n\t\t},\n\t\tmuiTablePaperProps: {\n\t\t\tsx: {\n\t\t\t\ttableLayout: 'auto', // lets columns shrink to fit content\n\t\t\t},\n\t\t},\n\t\tcolumnResizeMode: 'onChange',\n\t\tonEditingRowSave: async (data) => {\n\t\t\ttry {\n\t\t\t\tawait validationSchema.validate(data.values, {\n\t\t\t\t\tabortEarly: false\n\t\t\t\t});\n\t\t\t\tsetValidationErrors({});\n\t\t\t\tsetIsEditingRow(true);\n\t\t\t\tsetDisableNextEdit(false)\n\t\t\t\tconst cells = data.row.getAllCells().map((c) => c.column.columnDef);\n\t\t\t\tdata.row._valuesCache = formtValues(data.values, cells);\n\n\t\t\t\tif (onEditRow) {\n\t\t\t\t\tawait onEditRow(data, 'edit');\n\t\t\t\t}\n\t\t\t\tsetIsEditingRow(false);\n\t\t\t\tdata.table.setEditingRow(null);\n\t\t\t} catch (err) {\n\t\t\t\tsetIsEditingRow(false);\n\t\t\t\tif (err instanceof yup.ValidationError) {\n\t\t\t\t\tconst errors: Record<string, string> = {};\n\n\t\t\t\t\terr.inner.forEach((error) => {\n\t\t\t\t\t\tif (error.path) {\n\t\t\t\t\t\t\terrors[error.path] = error.message;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tsetValidationErrors(errors);\n\t\t\t\t} else if (err instanceof Error) {\n\t\t\t\t\tenqueueSnackbar(err.message, { variant: 'error' })\n\t\t\t\t} else {\n\t\t\t\t\tenqueueSnackbar('Something went wrong', { variant: 'error' })\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonCreatingRowSave: async (data) => {\n\t\t\ttry {\n\t\t\t\tawait validationSchema.validate(data.values, {\n\t\t\t\t\tabortEarly: false\n\t\t\t\t});\n\t\t\t\tsetValidationErrors({});\n\t\t\t\tsetIsCreatingRow(true);\n\t\t\t\tsetDisableNextEdit(false)\n\t\t\t\tconst cells = data.row.getAllCells().map((c) => c.column.columnDef);\n\n\t\t\t\tdata.row._valuesCache = formtValues(data.values, cells);\n\n\t\t\t\tif (onCreateRow) {\n\t\t\t\t\tawait onCreateRow(data);\n\t\t\t\t}\n\t\t\t\tsetIsCreatingRow(false);\n\t\t\t\tdata.table.setCreatingRow(null);\n\t\t\t} catch (err) {\n\t\t\t\tsetIsCreatingRow(false);\n\t\t\t\tif (err instanceof yup.ValidationError) {\n\t\t\t\t\tconst errors: Record<string, string> = {};\n\n\t\t\t\t\terr.inner.forEach((error) => {\n\t\t\t\t\t\tif (error.path) {\n\t\t\t\t\t\t\terrors[error.path] = error.message;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tsetValidationErrors(errors);\n\t\t\t\t} else if (err instanceof Error) {\n\t\t\t\t\tenqueueSnackbar(err.message, { variant: 'error' })\n\t\t\t\t} else {\n\t\t\t\t\tenqueueSnackbar('Something went wrong', { variant: 'error' })\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonCreatingRowCancel: () => resetRowSelection(),\n\t\tonEditingRowCancel: () => resetRowSelection(),\n\t\tonSortingChange: states?.sorting ? onSortingChange : setSorting,\n\n\t\tdisplayColumnDefOptions: {\n\t\t\t'mrt-row-actions': {\n\t\t\t\t// size: onDeleteRow ? 80 : 50,\n\n\t\t\t\tHeader: (\n\t\t\t\t\t<IconButton onClick={handleHeaderClick} size='small'>\n\t\t\t\t\t\t<img src={images.common.arrowIcon} alt='Arrow Icon' />\n\t\t\t\t\t</IconButton>\n\t\t\t\t),\n\t\t\t\tmuiTableBodyCellProps: {\n\t\t\t\t\tsx: {\n\t\t\t\t\t\t'& .MuiBox-root': {\n\t\t\t\t\t\t\tgap: 0\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbackgroundColor: '#fff'\n\t\t\t\t\t},\n\t\t\t\t\tonKeyUp: (e) => console.log(e)\n\t\t\t\t}\n\t\t\t},\n\t\t\t'mrt-row-expand': {\n\t\t\t\tsize: 70, // Set the size of the expand-collapse arrow column here\n\t\t\t},\n\t\t\t'mrt-row-select': {\n\t\t\t\tsize: 50, // Set the width of the checkbox column here\n\t\t\t},\n\t\t},\n\t\trenderRowActions: ({ row, table }) => (\n\t\t\t<>\n\t\t\t\t{rest?.enableExpanding ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{row?.parentId && (\n\t\t\t\t\t\t\t<Box sx={{ display: 'flex', gap: 0 }}>\n\t\t\t\t\t\t\t\t<Tooltip title='Edit'>\n\t\t\t\t\t\t\t\t\t<IconButton disabled={disableNextEdit} onClick={() => {\n\t\t\t\t\t\t\t\t\t\tsetValidationErrors({});\n\t\t\t\t\t\t\t\t\t\ttable.setEditingRow(row)\n\t\t\t\t\t\t\t\t\t\tsetDisableNextEdit(true)\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t} size='small'>\n\t\t\t\t\t\t\t\t\t\t<Edit fontSize='small' sx={{ color: 'theme.secondary.1000' }} />\n\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t{onDeleteRow && (\n\t\t\t\t\t\t\t\t\t<Tooltip title='Delete'>\n\t\t\t\t\t\t\t\t\t\t<IconButton disabled={disableNextEdit} onClick={() => setRowToDelete(row)} size='small'>\n\t\t\t\t\t\t\t\t\t\t\t<Trash fontSize='small' sx={{ color: 'theme.secondary.1000' }} />\n\t\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\t<Box sx={{ display: 'flex', gap: 0 }}>\n\t\t\t\t\t\t<Tooltip title='Edit'>\n\t\t\t\t\t\t\t<IconButton disabled={disableNextEdit} onClick={() => {\n\t\t\t\t\t\t\t\tsetValidationErrors({});\n\t\t\t\t\t\t\t\ttable.setEditingRow(row);\n\t\t\t\t\t\t\t\tsetDisableNextEdit(true);\n\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t<Edit fontSize='small' sx={{ color: 'theme.secondary.1000' }} />\n\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t{onDeleteRow && (\n\t\t\t\t\t\t\t<Tooltip title='Delete'>\n\t\t\t\t\t\t\t\t<IconButton onClick={() => setRowToDelete(row)}>\n\t\t\t\t\t\t\t\t\t<Trash fontSize='small' sx={{ color: 'theme.secondary.1000' }} />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Box>\n\t\t\t\t)}\n\t\t\t</>\n\t\t),\n\n\t\t...(Boolean(enableRowCreate) && {\n\t\t\trenderBottomToolbarCustomActions: ({ table }) => (\n\t\t\t\t<Button\n\t\t\t\t\tvariant='outlined'\n\t\t\t\t\tstartIcon={<Add />}\n\t\t\t\t\tclassName='add-row-btn'\n\t\t\t\t\tdisabled={disableNextEdit}\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tsetValidationErrors({});\n\t\t\t\t\t\ttable.setCreatingRow(true); //simplest way to open the create row modal with no default values\n\t\t\t\t\t\tsetDisableNextEdit(true)\n\t\t\t\t\t}}>\n\t\t\t\t\t{t('common.add')}\n\t\t\t\t</Button>\n\t\t\t)\n\t\t}),\n\t\tonRowSelectionChange: setRowSelection,\n\t\tenableColumnOrdering: true,\n\t\tenableRowSelection: enableRowSelection ?? true,\n\t\tenableEditing: enableEditing instanceof Function ? enableEditing() : enableEditing ?? true,\n\t\teditDisplayMode: editDisplayMode ?? 'cell',\n\t\tcreateDisplayMode: 'row',\n\t\tenableColumnResizing: enableColumnResizing,\n\t\tenableRowDragging: enableRowDragging,\n\t\tenableTopToolbar: false,\n\t\tenableColumnActions: false,\n\t\tenableSorting: true,\n\t\tenableGrouping: true,\n\t\tenableBottomToolbar: enableBottomToolbar ?? false,\n\t\tenableColumnDragging: enableColumnDragging ?? true,\n\t\tenableStickyHeader: true,\n\t\tenableSortingRemoval: false,\n\t\t// column ordering\n\t\tstate: {\n\t\t\t// columnOrder: (!columnOrder || columnOrder.length <= 1) \n\t\t\t// ? [...internalColumnOrder] \n\t\t\t// : [...columnOrder],\n\t\t\tcolumnOrder: columnOrder,\n\t\t\tcolumnPinning: { left: ['actions', 'mrt-row-actions'] },\n\t\t\tisSaving: isCreatingRow || isEditingRow,\n\t\t\tshowProgressBars: false,\n\t\t\trowSelection,\n\t\t\t...states,\n\t\t\tsorting: Array.isArray(states?.sorting) ? states?.sorting :\n\t\t\t\tArray.isArray(sorting) ? sorting : [],\n\t\t\tcolumnSizing,\n\t\t\tshowLoadingOverlay: false\n\n\t\t},\n\t\tgetRowId: (row) => row?.id,\n\t\t// table.getState().editingRow\n\t\tmuiTableBodyRowProps: ({ row }) => {\n\t\t\tconst editingRowId =\n\t\t\t\ttable.getState()?.editingRow?.id ||\n\t\t\t\ttable.getState()?.creatingRow?.id ||\n\t\t\t\tnull;\n\t\t\tconst isErrorRow = Boolean(row?.original?.has_error)\n\t\t\treturn {\n\t\t\t\tonClick: () => handleRowClick(row.id),\n\t\t\t\tsx: {\n\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t// backgroundColor: !editingRowId\n\t\t\t\t\t// \t? (selectedRow === row.id\n\t\t\t\t\t// \t\t? '#e8e8e8'\n\t\t\t\t\t// \t\t: (isErrorRow ? 'theme.error.100' : 'inherit'))\n\t\t\t\t\t// \t: 'inherit',\n\t\t\t\t\tbackgroundColor: !editingRowId\n\t\t\t\t\t\t? (isErrorRow ? 'theme.error.100' : 'inherit')\n\t\t\t\t\t\t: 'inherit',\n\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\tbackgroundColor: editingRowId ? 'transparent' : (isErrorRow ? 'theme.error.200' : '#e8e8e8') // Removes hover effect globally\n\t\t\t\t\t},\n\t\t\t\t\t'&:hover td:after': {\n\t\t\t\t\t\tbackgroundColor: 'transparent' // Removes the grey background applied via :after\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\tonColumnOrderChange: (colOrder: any) => {\n\t\t\tif (handleColumnOrdering) handleColumnOrdering(colOrder);\n\t\t},\n\t\tonColumnSizingChange: setColumnSizing,\n\t\tonColumnSizingInfoChange: setColumnSizingInfo,\n\n\t\trenderEmptyRowsFallback: () => (\n\t\t\t<Box className='no-data'>\n\t\t\t\t<img src={images.common.tableNoData} />\n\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\t{/* sx={{ textAlign: 'center', pb: 4.75, pt: 4.75 }}> */}\n\t\t\t\t\t{t('common.noData')}\n\t\t\t\t</Typography>\n\t\t\t</Box>\n\t\t),\n\n\t\t// pagination\n\t\tenablePagination: enablePagination,\n\t\tpaginationDisplayMode: 'pages',\n\t\tmuiPaginationProps: {\n\t\t\tshape: 'rounded',\n\t\t\tpage: pageNo, // current page number\n\t\t\tcount: totalPages, // total pages\n\t\t\tshowRowsPerPage: false, // Hide rows per page options\n\t\t\tboundaryCount: 3\n\t\t},\n\n\t\tmuiEditTextFieldProps: ({ row, column }) => ({\n\t\t\tInputProps: {\n\t\t\t\tdisableUnderline: true\n\t\t\t},\n\t\t\tonBlur: (e) => {\n\t\t\t\tupdateData(e.target.value, column, row.id);\n\t\t\t},\n\t\t\t// onChange: (e) => {\n\t\t\t// \tupdateData(e.target.value, column, row.id);\n\t\t\t// },\n\t\t\tvariant: 'outlined',\n\t\t\tsx: ({ palette }) => ({\n\t\t\t\t'& .MuiOutlinedInput-root': {\n\t\t\t\t\t'& fieldset': {\n\t\t\t\t\t\tborderColor: `${palette.theme?.primary[700]} !important`\n\t\t\t\t\t\t// backgroundColor: palette.theme?.primary[700]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}),\n\n\t\t/* Table loader style */\n\t\tmuiCircularProgressProps: {\n\t\t\tComponent: null,\n\t\t\tsx: {\n\t\t\t\tcolor: '#289B64'\n\t\t\t}\n\t\t},\n\n\t\t// Table header cell default styles\n\t\tmuiTableHeadCellProps: {\n\t\t\tsx: {\n\t\t\t\tlineHeight: '140%',\n\t\t\t\tletterSpacing: '-0.28px',\n\t\t\t\tfontWeight: '500',\n\t\t\t\tfontSize: '0.875rem',\n\t\t\t\t'& .Mui-TableHeadCell-Content': {\n\t\t\t\t\theight: '100%'\n\t\t\t\t},\n\t\t\t\t'& .Mui-TableHeadCell-Content-Labels': {\n\t\t\t\t\twidth: '100%',\n\t\t\t\t\tjustifyContent: 'space-between'\n\t\t\t\t},\n\t\t\t\t'&.pinned-column': {\n\t\t\t\t\tbackgroundColor: '#fff'\n\t\t\t\t},\n\t\t\t\t'& .Mui-TableHeadCell-ResizeHandle-Wrapper': {\n\t\t\t\t\tpadding: 0,\n\t\t\t\t\tmargin: 0,\n\t\t\t\t\tright: '-5px',\n\t\t\t\t\topacity: 0\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\n\t\t// Table body cell default styles\n\t\tmuiTableBodyProps: {\n\t\t\tsx: {\n\t\t\t\tzIndex: 500\n\t\t\t}\n\t\t},\n\t\tmuiTableHeadProps: {\n\t\t\tsx: {\n\t\t\t\tzIndex: 600\n\t\t\t}\n\t\t},\n\t\tmuiTableBodyCellProps: (/* { cell, column, table , row } */) => ({\n\t\t\tsx: {\n\t\t\t\tlineHeight: '140%',\n\t\t\t\tletterSpacing: '-0.26px',\n\t\t\t\tfontWeight: '400',\n\t\t\t\tfontSize: '0.8125rem',\n\t\t\t\t'&.pinned-column': {\n\t\t\t\t\tbackgroundColor: '#fff'\n\t\t\t\t},\n\t\t\t\t'&:hover': {\n\t\t\t\t\tbackgroundColor: 'transparent' // Removes hover effect globally\n\t\t\t\t}\n\t\t\t}\n\t\t\t// onClick: () => {\n\t\t\t// \ttable.setEditingCell(cell); //set editing cell\n\t\t\t// \tqueueMicrotask(() => {\n\t\t\t// \t\tconst textField = table.refs.editInputRefs.current[column.id];\n\t\t\t// \t\tif (textField) {\n\t\t\t// \t\t\ttextField.focus();\n\t\t\t// \t\t\ttextField.select?.();\n\t\t\t// \t\t}\n\t\t\t// \t});\n\t\t\t// }\n\t\t\t// onKeyDown: (event) => {\n\t\t\t// \tif (event.key === 'Tab') {\n\t\t\t// \t\ttry {\n\t\t\t// \t\t\t\t// if (column.columnDef.editVariant === 'select') {\n\t\t\t// \t\t\t\t// \ttable.refs.editInputRefs.current[column.id]?.node?.blur();\n\t\t\t// \t\t\t\t// } else {\n\t\t\t// \t\t\t\t// \ttable.refs.editInputRefs.current[column.id].blur();\n\t\t\t// \t\t\t\t// }\n\n\t\t\t// \t\t\tconst rowIdx = row.index;\n\t\t\t// \t\t\tconst colIdx = columns.findIndex(\n\t\t\t// \t\t\t\t(col) => col.accessorKey === column.id\n\t\t\t// \t\t\t);\n\t\t\t// \t\t\tconst newColIdx = colIdx + 1;\n\t\t\t// \t\t\tconst clm = columns[newColIdx];\n\t\t\t// \t\t\tconst nextCell = row\n\t\t\t// \t\t\t\t.getAllCells()\n\t\t\t// \t\t\t\t.find((cl) => (cl.id = `${rowIdx}_${clm.accessorKey}`));\n\n\t\t\t// \t\t\tif (nextCell) {\n\t\t\t// \t\t\t\t// updateData(event.target.value, column, row.id);\n\t\t\t// \t\t\t\ttable.setEditingCell(nextCell);\n\t\t\t// \t\t\t\tqueueMicrotask(() => {\n\t\t\t// \t\t\t\t\tconst textField = table.refs.editInputRefs.current[column.id];\n\t\t\t// \t\t\t\t\tif (textField) {\n\t\t\t// \t\t\t\t\t\ttextField.focus();\n\t\t\t// \t\t\t\t\t\ttextField.select?.();\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} catch (error) {\n\t\t\t// \t\t}\n\t\t\t// \t}\n\t\t\t// },\n\t\t\t// onBlur: () => {\n\t\t\t// \ttable.setEditingCell(null);\n\t\t\t// }\n\t\t}),\n\n\t\t// Checkbox styling\n\t\tmuiSelectCheckboxProps: {\n\t\t\tsx: {\n\t\t\t\tcolor: 'theme.secondary.300',\n\t\t\t\t'&.Mui-checked': {\n\t\t\t\t\tcolor: 'theme.primary.600',\n\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\tcolor: 'theme.primary.500'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'&.Mui-disabled': {\n\t\t\t\t\tcolor: 'theme.secondary.200'\n\t\t\t\t}\n\t\t\t},\n\t\t\ticon: <RecgtangleIcon sx={{ width: 20, height: 20 }} />,\n\t\t\tcheckedIcon: <CheckBoxIcon sx={{ width: 20, height: 20 }} />\n\t\t},\n\t\tmuiSelectAllCheckboxProps: {\n\t\t\tsx: {\n\t\t\t\tcolor: 'theme.secondary.300',\n\t\t\t\t'&.Mui-checked': {\n\t\t\t\t\tcolor: 'theme.primary.600',\n\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\tcolor: 'theme.primary.500'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'&.Mui-disabled': {\n\t\t\t\t\tcolor: 'theme.secondary.600'\n\t\t\t\t}\n\t\t\t},\n\t\t\ticon: <RecgtangleIcon sx={{ width: 20, height: 20 }} />,\n\t\t\tcheckedIcon: <CheckBoxIcon sx={{ width: 20, height: 20 }} />\n\t\t},\n\t\tmuiBottomToolbarProps: {\n\t\t\tsx: {\n\t\t\t\tboxShadow: 'none',\n\t\t\t\t'& .MuiBox-root': {\n\t\t\t\t\tpaddingLeft: 0\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tlayoutMode: 'grid',\n\t\ticons: {\n\t\t\tArrowDownwardIcon: (props: SvgIconProps) => (\n\t\t\t\t<ArrowUpDown fontSize='medium' {...props} />\n\t\t\t),\n\t\t\tSortIcon: (props: SvgIconProps) => (\n\t\t\t\t<ArrowUpDown fontSize='medium' {...props} />\n\t\t\t),\n\t\t\tSyncAltIcon: () => <ArrowUpDown fontSize='medium' />,\n\t\t\tCancelIcon: (props: SvgIconProps) => (\n\t\t\t\t<Close fontSize='small' {...props} sx={{ color: 'theme.secondary.1000' }} />\n\t\t\t),\n\t\t\tSaveIcon: (props: SvgIconProps) => (\n\t\t\t\t<Save {...props} fontSize='small' sx={{ color: 'theme.secondary.1000' }} />\n\t\t\t)\n\t\t},\n\n\t\t...rest\n\t});\n\n\tuseEffect(() => {\n\t\tif (enableRowSelection) {\n\t\t\tif (table?.getSelectedRowModel()?.rows) {\n\t\t\t\tSetSelectedRowId?.(table?.getSelectedRowModel()?.rows);\n\t\t\t}\n\t\t}\n\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [enableRowSelection]);\n\n\tuseEffect(() => {\n\t\tif (onSelectRow) {\n\t\t\tif (rest?.enableExpanding) {\n\t\t\t\tconst selectedRowModels: any[] = [];\n\t\t\t\tconst selection = table.getState().rowSelection; // e.g., { 0.0: true }\n\t\t\t\tconst traverseRows = (rows, parentKey = '') => {\n\t\t\t\t\trows.forEach((row, index) => {\n\t\t\t\t\t\tconst rowKey = parentKey ? `${parentKey}.${index}` : `${row.id}`;\n\t\t\t\t\t\tif (selection[rowKey]) {\n\t\t\t\t\t\t\tselectedRowModels.push(row);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Check for sub-rows and traverse further\n\t\t\t\t\t\tif (row.subRows?.length) {\n\t\t\t\t\t\t\ttraverseRows(row.subRows, rowKey);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t};\n\n\t\t\t\ttraverseRows(table.getRowModel().rows);\n\t\t\t\tonSelectRow(selectedRowModels, rowSelection);\n\t\t\t} else {\n\t\t\t\tonSelectRow(table.getSelectedRowModel().rows, rowSelection);\n\t\t\t}\n\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [rowSelection, table]);\n\n\t// useEffect(() => {\n\t// \tconst relativeContainer = document.getElementsByClassName(\n\t// \t\t'MuiTableContainer-root'\n\t// \t)[0];\n\t// \tconst fixedElement = document.getElementsByClassName('no-data')[0];\n\t// \trelativeContainer.addEventListener('scroll', () => {\n\t// \t\tconst scrollLeft = relativeContainer.scrollLeft;\n\t// \t\tfixedElement.style.left = `${scrollLeft + 100}px`;\n\t// \t});\n\t// }, []);\n\n\tuseEffect(() => {\n\t\tif (isResetRow) {\n\t\t\ttable?.resetRowSelection();\n\t\t}\n\t}, [isResetRow, table]);\n\treturn (\n\t\t<TableWrapper className='MRT-TableWrapper custom-table' disableMaxHeight={disableMaxHeight}>\n\t\t\t<MaterialReactTable table={table} />\n\n\t\t\t<Menu\n\t\t\t\tanchorEl={anchorEl}\n\t\t\t\topen={Boolean(anchorEl)}\n\t\t\t\tonClose={handleHeaderClose}\n\t\t\t\tclassName='add-role-drp'>\n\t\t\t\t{popUpShow ? (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={handleBackButtonClick}\n\t\t\t\t\t\t\tclassName='role-drp-list add-column-title'>\n\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\n\t\t\t\t\t\t\t\t<ChevronLeftIcon />\n\t\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t\t<ListItemText className='title'>\n\t\t\t\t\t\t\t\t{t('common.addColumn_label')}\n\t\t\t\t\t\t\t</ListItemText>\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t<Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n\t\t\t\t\t\t<div className='searchbar-box-list'>\n\t\t\t\t\t\t\t<SearchBar\n\t\t\t\t\t\t\t\tplaceholder={'Search User'}\n\t\t\t\t\t\t\t\thandleSearch={(e) => handleSearchEvent(e)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className='all-attribute-title'>\n\t\t\t\t\t\t\t<Typography variant='body2' color='text.secondary'>\n\t\t\t\t\t\t\t\t{t('common.allAttributes_label')}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{filteredOptions.map((column: any) => (\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\tkey={column.accessorKey}\n\t\t\t\t\t\t\t\tonClick={() => handleAddColumn(column)}>\n\t\t\t\t\t\t\t\t<Typography color='theme.secondary.1000' type='s3'>\n\t\t\t\t\t\t\t\t\t{column.header}\n\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t<Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenableAddCustomField && <MenuItem onClick={handleCustomAddColumn} className='role-drp-list'>\n\t\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\n\t\t\t\t\t\t\t\t\t<img src={images.common.addIcon} alt='Add Icon' />\n\t\t\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t\t\t<ListItemText className='title'>\n\t\t\t\t\t\t\t\t\t{t('common.addCustomField_label')}\n\t\t\t\t\t\t\t\t</ListItemText>\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{visibleColumns.map((column: any) => (\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\tkey={column.accessorKey}\n\t\t\t\t\t\t\t\tonClick={() => handleVisibleColumn(column)}\n\t\t\t\t\t\t\t\tclassName='role-drp-list'>\n\t\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\n\t\t\t\t\t\t\t\t\t<img src={images.common.dotsIcon} alt='Add Icon' />\n\t\t\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t\t\t<ListItemText className='title'>{column.header}</ListItemText>\n\t\t\t\t\t\t\t\t<ListItemIcon className='eye-icon'>\n\t\t\t\t\t\t\t\t\t<img src={images.common.eyeIcon} alt='Eye Icon' />\n\t\t\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t<Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n\t\t\t\t\t\t<MenuItem onClick={handleAddButtonClick} className='role-drp-list'>\n\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\n\t\t\t\t\t\t\t\t<img src={images.common.addIcon} alt='Add Icon' />\n\t\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t\t<ListItemText className='title'>\n\t\t\t\t\t\t\t\t{t('common.addColumn_label')}\n\t\t\t\t\t\t\t</ListItemText>\n\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\tvariant='body2'\n\t\t\t\t\t\t\t\tcolor='text.secondary'\n\t\t\t\t\t\t\t\tclassName='eye-icon'>\n\t\t\t\t\t\t\t\t<ChevronRightIcon sx={{ fontSize: '1.25rem !important' }} />\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</Menu>\n\n\t\t\t<Menu\n\t\t\t\tanchorEl={rowAnchorEl}\n\t\t\t\topen={Boolean(rowAnchorEl)}\n\t\t\t\tonClose={handleActionsClose}>\n\t\t\t\t{rowActionMenu?.map((option: any) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\t(option.label === 'Move' &&\n\t\t\t\t\t\t\t(row?.is_directory === true || row?.is_directory === 1)) ||\n\t\t\t\t\t\t(option.label === 'Download' &&\n\t\t\t\t\t\t\t(row?.is_directory === true ||\n\t\t\t\t\t\t\t\trow?.is_directory === 1 ||\n\t\t\t\t\t\t\t\trow?.drive?.is_directory === true ||\n\t\t\t\t\t\t\t\trow?.drive?.is_directory === 1))\n\t\t\t\t\t) {\n\t\t\t\t\t\t// return null;\n\t\t\t\t\t}\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={async () => {\n\t\t\t\t\t\t\t\tawait option.handleAction(row);\n\t\t\t\t\t\t\t\tsetRowAnchorEl(null);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\ttypeof option.disabled === 'function'\n\t\t\t\t\t\t\t\t\t? option.disabled(row)\n\t\t\t\t\t\t\t\t\t: Boolean(option.disabled)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsx={{ alignItems: 'center', gap: 0.5 }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{option?.icon}\n\t\t\t\t\t\t\t<Typography type='s4' color='inherit'>\n\t\t\t\t\t\t\t\t{typeof option.label === 'function' ? option.label(row) : option.label}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t\t{destructiveActionMenu?.length > 0 &&\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n\t\t\t\t\t\t<div className='dropdown-inner--DestructiveHeader'>\n\t\t\t\t\t\t\t{destructiveActionMenu?.map((option: any) => (\n\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\toption.handleAction(row);\n\t\t\t\t\t\t\t\t\t\tsetRowAnchorEl(null);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tclassName='dropdown-inner--DestructiveActions'\n\t\t\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t\t\ttypeof option.disabled === 'function'\n\t\t\t\t\t\t\t\t\t\t\t? option.disabled(row)\n\t\t\t\t\t\t\t\t\t\t\t: Boolean(option.disabled)\n\t\t\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t\t\t\t<Typography type='s4' color='inherit'>\n\t\t\t\t\t\t\t\t\t\t{typeof option.label === 'function' ? option.label(row) : option.label}\n\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t</Menu>\n\t\t\t<ConfirmPopUp\n\t\t\t\topen={Boolean(rowToDelete)}\n\t\t\t\tonClose={() => setRowToDelete(null)}\n\t\t\t\tonConfirm={() => handleRowDelete()}\n\t\t\t\ttitle='Delete Item'\n\t\t\t\tdescription={`Are you sure you want to delete entry ?`}\n\t\t\t\tloading={isDeletingRow}\n\t\t\t/>\n\t\t</TableWrapper>\n\t);\n});\n\nexport default MaterialTable;","import { Box, DialogActions, DialogContent, DialogTitle, Divider, Grid, IconButton } from \"@mui/material\";\nimport Modal from '../modal/modal';\nimport Typography from \"../typography/typography\";\nimport DynamicInput from '../form-control/form-builder/form-builder-element/text';\nimport DynamicRadioButton from '../form-control/form-builder/form-builder-element/radio-button';\nimport { useForm, useWatch } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { generateValidationSchema, generateValidationSchema1 } from \"./validator\";\nimport DynamicSearchSelect from \"../form-control/form-builder/form-builder-element/dynamic-select\";\nimport DynamicPhone from '@/components/form-control/form-builder/form-builder-element/phone';\nimport Accordion from \"../accordion/accordion\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport _ from \"lodash\";\nimport './parties-modal.scss';\nimport { useAccountingSetting } from \"../../hooks/useAccountSetting\";\nimport { useAuth } from '@erpsquad/common/runtime';\nimport { checkUniqueFields } from '../../utils/common';\nimport { getApiConfigSafe } from '../../utils/api-config';\nimport {\n addressColumns,\n addressOmitKeys,\n addressPayload,\n contactColumns,\n contactOmitKeys,\n contactPayload,\n PARTIES_FIELDS,\n PARTIES_FORM_ARRAY_NAME,\n partyType,\n processPartiesPayload\n} from \"./utils/constant\";\nimport MaterialTable from \"../material-table/material-table\";\nimport parsePhoneNumberFromString from \"libphonenumber-js\";\nimport Checkbox from \"../checkbox/checkbox\";\nimport { transformTableColumns } from \"../../utils/common-utility\";\nimport { createParties } from \"../../redux/actionCreator\";\nimport { useDispatch } from \"react-redux\";\nimport { enqueueSnackbar } from 'notistack';\nimport { getErrorMessage } from \"../../utils/common\";\nimport ModalLoader from \"../loaders/modal-loader\";\nimport Button from \"../button/button\";\nimport { Close } from \"@mui/icons-material\";\n\ninterface CustomerVendorModalProps {\n isOpen: boolean;\n handleModalClose?: () => void;\n modalProps?: any;\n type?: string;\n partyCreated?: () => void;\n isLoading?: boolean;\n onSave?: (payload: any) => Promise<void>;\n setIsOpen?: (value: boolean) => void;\n}\n\ninterface LocationState {\n state: any;\n country: any;\n}\n\nconst defaultLocationState: LocationState = { state: '', country: '' };\n\nexport default function CustomerVendorModal({\n isOpen,\n handleModalClose,\n modalProps,\n type,\n partyCreated,\n isLoading,\n onSave,\n setIsOpen\n}: CustomerVendorModalProps) {\n\n //Hooks\n const { t } = useTranslation();\n const dispatch = useDispatch();\n const { user } = useAuth();\n const isKSA = getApiConfigSafe()?.countryEnv === 'ksa';\n\n //Refs\n const locationRef = useRef<LocationState>(defaultLocationState);\n\n //Local states\n const [addressRows, setAddressRows] = useState<any[]>([]);\n const [contactRows, setContactRows] = useState<any[]>([]);\n const [isCreating, setIsCreating] = useState(false);\n const [selectedCompanyData, setSelectedCompanyData] = useState<any[]>([]);\n const lastCheckedValues = useRef<Record<string, any>>({})\n\n //Form\n const {\n control,\n formState: { errors },\n trigger,\n getValues,\n handleSubmit,\n setValue,\n resetField,\n reset,\n watch,\n getFieldState,\n setError\n\n } = useForm({\n defaultValues: {\n status: true,\n parties: {\n account_type: 'Company',\n },\n },\n mode: 'all',\n resolver: generateValidationSchema1()\n });\n\n const fieldToUpdate = {\n [PARTIES_FIELDS.RECEIVABLE_ACCOUNT]: 'receivable_account',\n [PARTIES_FIELDS.TAX_TEMPLATE]: 'default_tax',\n };\n\n useAccountingSetting({\n fieldToUpdate,\n companyField: PARTIES_FIELDS.COMPANY,\n fieldArrayName: PARTIES_FORM_ARRAY_NAME,\n formMethods: { control, setValue, watch, getFieldState },\n ...({ isUpdateAccount: true } as any),\n });\n\n\n const selectedType = useWatch({\n control,\n name: 'parties.account_type',\n });\n\n const responsiblePerson = useWatch({\n control,\n name: `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.RESPONSIBLE_PERSON}`,\n });\n\n const mainContactNo = useWatch({\n control,\n name: `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.CONTACT_NO}`,\n });\n\n const mainEmailIds = useWatch({\n control,\n name: `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.EMAIL_IDS}`,\n });\n\n const checkUniqueness = useCallback(async () => {\n const values = getValues()\n const formValues = values?.[PARTIES_FORM_ARRAY_NAME]\n const fieldsToCheck = ['crn', 'email_ids', 'company_name']\n const allFields = ['crn', 'email_ids', 'contact_no', 'company_name']\n\n const nothingChanged = fieldsToCheck.every(\n (field) => lastCheckedValues.current[field] === formValues?.[field]\n )\n if (nothingChanged) return true\n\n const payload = {}\n allFields.forEach((field) => (payload[field] = formValues?.[field]))\n\n const response = await checkUniqueFields(payload)\n let isUnique = true\n\n for (const [field, exists] of Object.entries(response)) {\n if (exists) {\n setError(`${PARTIES_FORM_ARRAY_NAME}.${field}`, {\n type: 'manual',\n message: `${field.replace(/_/g, ' ').toLowerCase()} already exists`,\n })\n isUnique = false\n }\n }\n\n lastCheckedValues.current = { ...formValues }\n\n return isUnique\n }, [getValues, setError])\n\n const handleFieldBlur = useCallback(\n async (fieldName: string) => {\n const uniquenessFields = ['crn', 'email_ids', 'company_name']\n if (!uniquenessFields.includes(fieldName)) return\n await checkUniqueness()\n },\n [checkUniqueness]\n )\n\n //Call Back functions\n const tableColumns = useCallback(\n (columns: any, tableRows: any) => {\n const phoneNumberCache = new Map();\n\n return transformTableColumns({\n columns,\n currencySymbol: undefined,\n translationFn: t,\n enableFooter: false,\n redirectionLink: undefined,\n redirectionLinkState: undefined,\n rows: tableRows,\n statusClasses: undefined,\n customizeValue: (row, columnAccessorKey, value) => {\n switch (columnAccessorKey) {\n case 'default_shipping_address':\n case 'default_billing_address': {\n return (\n <Box sx={{ display: \"flex\", gap: 1 }}>\n <Checkbox\n checked={Boolean(value)}\n sx={{ pointerEvents: 'none' }}\n />\n </Box>\n );\n }\n\n case 'phone':\n case 'contact_no': {\n if (!value) return '';\n const phoneKey = `phone-${value}`;\n if (!phoneNumberCache.has(phoneKey)) {\n const parsed = parsePhoneNumberFromString(`+${value}`);\n phoneNumberCache.set(phoneKey, parsed?.nationalNumber || '');\n }\n return phoneNumberCache.get(phoneKey);\n }\n\n case 'country_code': {\n const phone = row?.original?.phone || row?.original?.contact_no;\n if (!phone) return '';\n const countryCodeKey = `country-${phone}`;\n if (!phoneNumberCache.has(countryCodeKey)) {\n const parsed = parsePhoneNumberFromString(`+${phone}`);\n phoneNumberCache.set(countryCodeKey,\n parsed?.countryCallingCode ? `+${parsed.countryCallingCode}` : ''\n );\n }\n return phoneNumberCache.get(countryCodeKey);\n }\n\n default:\n return value;\n }\n }\n });\n },\n [t]\n );\n\n //Methods\n\n const handleRowOperation = async (\n eData: any,\n state: any[],\n setState: React.Dispatch<React.SetStateAction<any[]>>,\n isAddress: boolean\n ) => {\n try {\n const { values, row } = eData;\n const editRow = row.index >= 0;\n const payload = isAddress ? addressPayload : contactPayload;\n\n const processedValues: any = {};\n for (const key in payload) {\n if (_.has(values, key)) {\n processedValues[key] = values?.[key] ? values[key] : null;\n }\n }\n\n if (isAddress) {\n const dropdowns = {\n c: locationRef.current?.country,\n s: locationRef.current?.state,\n };\n\n const validatedValues = await validateAddressDefaults(processedValues, state, row.index);\n const addressValues = {\n ...validatedValues,\n country_name: dropdowns.c?.name,\n country: dropdowns.c?.id,\n state_name: dropdowns.s?.name,\n state: dropdowns.s?.id,\n country_data: dropdowns.c,\n state_data: dropdowns.s,\n country_id: dropdowns.c?.id,\n state_id: dropdowns.s?.id,\n };\n\n if (editRow) {\n return setState(state.map((ar, i) => i === row.index ? { ...ar, ...addressValues } : ar));\n }\n return setState([...state, addressValues]);\n }\n\n if (editRow) {\n return setState(state.map((ar, i) => i === row.index ? { ...ar, ...processedValues } : ar));\n }\n return setState([...state, processedValues]);\n } catch (error) {\n return Promise.reject(error);\n }\n };\n\n const validateAddressDefaults = async (values: any, state: any[], index: number) => {\n let updatedValues = { ...values };\n const validate = (type: \"shipping\" | \"billing\") => {\n const u_data = [...state];\n const field = type === 'shipping' ? 'default_shipping_address' : 'default_billing_address';\n if (index >= 0) {\n u_data.splice(index, 1);\n }\n const hasDefault = u_data.some((d: any) => d?.[field]);\n\n if (hasDefault && values?.[field]) {\n throw new Error(\n `Another address is already marked as the default ${type} address. Please uncheck that before selecting this one`\n );\n }\n else if (!hasDefault) {\n updatedValues = {\n ...updatedValues,\n [field]: values?.[field] || state?.length == 0 ? 1 : 0,\n };\n }\n\n };\n\n await validate(\"shipping\");\n await validate(\"billing\");\n\n return updatedValues;\n };\n\n const deleteRow = async (\n state: any[],\n setState: React.Dispatch<React.SetStateAction<any[]>>,\n row: any\n ) => {\n const rowIndex = row.index;\n const updatedData = state.filter((_, i) => i !== rowIndex);\n setState(updatedData);\n return Promise.resolve();\n };\n\n const onChangeAddressTableField = async (e: any, t: any, r: any, col: any, selectedData: any) => {\n const fieldName = e?.target?.name;\n let updatedValues: any = null;\n\n if (col?.editProperties?.field_name) {\n locationRef.current = {\n ...locationRef.current,\n [col.editProperties.field_name]: selectedData,\n };\n }\n\n if (fieldName === 'country') {\n updatedValues = {\n ...r._valuesCache,\n country: selectedData.id,\n country_id: selectedData.id,\n state: null,\n state_id: null,\n state_name: null,\n };\n } else if (fieldName === 'state') {\n updatedValues = {\n ...r._valuesCache,\n state: selectedData.id,\n state_id: selectedData.id\n };\n } else if (fieldName === 'phone') {\n const p = parsePhoneNumberFromString(`+${e}`);\n updatedValues = {\n ...r._valuesCache,\n country_code: p?.countryCallingCode ? `+${p.countryCallingCode}` : '',\n };\n }\n\n const summaryFields = [\n 'contact_name',\n 'street_1',\n 'street_2',\n 'street_3',\n 'building_no',\n 'additional_no',\n 'zip_code',\n 'city',\n 'state',\n 'country'\n ];\n\n if (r._valuesCache) {\n const fieldValues = summaryFields.map(field => {\n if (field === 'country') {\n return locationRef.current?.country?.name || '';\n } else if (field === 'state') {\n return locationRef.current?.state?.name || '';\n } else if (field === fieldName) {\n return e.target?.value || '';\n }\n return r._valuesCache?.[field] || '';\n });\n\n const summary = fieldValues.reduce((acc, val, idx) => {\n if (!val) return acc;\n if (!acc) return val;\n\n val = val?.name || val;\n acc = acc?.name || acc;\n\n return [2, 3, 4, 5].includes(idx) ? `${acc} ${val}` : `${acc}, \\n${val}`;\n }, '');\n\n r._valuesCache.summary = summary;\n }\n\n if (updatedValues) {\n r.getAllCells().forEach((c: any) => {\n if (_.has(updatedValues, c.column.id)) {\n r._valuesCache[c.column.id] = updatedValues[c.column.id];\n }\n });\n }\n\n return r._valuesCache;\n };\n\n\n\n const EMAIL_REGEX =\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,}))$/;\n\nconst onSubmit = async () => {\n const isValid = await trigger();\n if (!isValid) return;\n\n const isUnique = await checkUniqueness()\n if (!isUnique) return\n\n const values = getValues();\n const formValues = values?.[PARTIES_FORM_ARRAY_NAME];\n let emailArray: string[] = [];\n\n if (formValues?.email_ids) {\n emailArray = formValues?.email_ids\n ?.split(/\\s*,\\s*/)\n .map((email_id: any) => email_id?.replaceAll(',', '')?.trim())\n .filter((email_id: any) => email_id.match(EMAIL_REGEX));\n }\n\n const payload = {\n party: {\n ...processPartiesPayload(formValues),\n email_ids: emailArray,\n account_type: selectedType,\n status: 1,\n type,\n company_id: formValues?.[PARTIES_FIELDS.COMPANY] || null\n }\n };\n if (typeof onSave == 'function') {\n onSave?.(payload);\n return;\n }\n setIsCreating(true);\n try {\n\n const res = await dispatch(createParties(payload));\n\n if (res?.meta?.requestStatus === 'fulfilled') {\n enqueueSnackbar(`${type} ${t('common.party.msg.success')}`);\n closeModal();\n partyCreated();\n } else if (res?.meta?.requestStatus === 'rejected') {\n const errorMessage = getErrorMessage(res?.error?.message);\n enqueueSnackbar(errorMessage, { variant: 'error' });\n }\n } finally {\n setIsCreating(false);\n }\n };\n\n const closeModal = () => {\n resetForm()\n setAddressRows([]);\n setContactRows([]);\n handleModalClose?.();\n setIsOpen?.(false);\n }\n const resetForm = () => {\n reset();\n }\n\n //Use Effect\n useEffect(() => {\n const addressData = addressRows.map(a => _.omit(a, addressOmitKeys));\n setValue(`${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.ADDRESS}`, addressData);\n }, [addressRows, setValue]);\n\n useEffect(() => {\n const contactData = contactRows.map(c => _.omit(c, contactOmitKeys));\n setValue(`${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.CONTACTS}`, contactData);\n }, [contactRows, setValue]);\n\n useEffect(() => {\n setIsCreating(isLoading)\n }, [isLoading]);\n\n\n useEffect(() => {\n if (selectedType === 'Individual') {\n // Clear Company fields\n resetField('parties.company_name');\n resetField('parties.vat_number');\n resetField('parties.crn');\n }\n\n if (selectedType === 'Company') {\n // Clear Individual fields\n resetField('parties.first_name');\n resetField('parties.last_name');\n }\n }, [selectedType, resetField]);\n\n// Pre-fill company and currency from user data when modal opens\nuseEffect(() => {\n\t\tif (isOpen && user?.company_data) {\n\t\t\tconst companyId =\n\t\t\t\tuser?.entity_priority ||\n\t\t\t\tuser?.company_data?.id ||\n\t\t\t\t(Array.isArray(user?.company_data) && user?.company_data[0]?.id) ||\n\t\t\t\tnull;\n\n\n\t\t\tif (companyId) {\n\t\t\t\tsetValue('quotation.company_id', companyId);\n setValue(`${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.COMPANY}`, companyId);\n\t\t\t}\n\t\t}\n }, [isOpen, user?.company_data, setValue]);\n\n useEffect(() => {\n if (isOpen && user?.company_currencies) {\n const currencies = Object.values(user.company_currencies);\n if (currencies.length > 0) {\n setValue(`${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.CURRENCY}`, [currencies[0].id]);\n }\n }\n }, [isOpen, user?.company_currencies , setValue]);\n\n // Auto fill first contact row\n useEffect(() => {\n const firstContactRow = contactRows[0];\n const parsedCountryCode = mainContactNo\n ? `+${parsePhoneNumberFromString(`+${mainContactNo}`)?.countryCallingCode || ''}`\n : '';\n\n const firstEmail = mainEmailIds\n ? mainEmailIds.split(/\\s*,\\s*/).map((e: string) => e.trim()).filter((e: string) => EMAIL_REGEX.test(e))[0] || ''\n : '';\n\n const updatedFirstRow = {\n name: responsiblePerson || '',\n contact_no: mainContactNo || '',\n email: firstEmail,\n country_code: parsedCountryCode,\n };\n\n if (firstContactRow) {\n const hasChanged = Object.keys(updatedFirstRow).some(\n (key) => firstContactRow[key] !== updatedFirstRow[key]\n );\n if (hasChanged) {\n const updatedRows = [...contactRows];\n updatedRows[0] = { ...updatedRows[0], ...updatedFirstRow };\n setContactRows(updatedRows);\n }\n } else {\n setContactRows([updatedFirstRow, ...contactRows]);\n }\n }, [responsiblePerson, mainContactNo, mainEmailIds]);\n\n // Auto fill first Address Row\n useEffect(() => {\n const firstRow = addressRows[0];\n const hasAddressDetails = firstRow?.address_type || firstRow?.street_1 || firstRow?.city;\n\n if (responsiblePerson && mainContactNo) {\n const parsedCountryCode = mainContactNo\n ? `+${parsePhoneNumberFromString(`+${mainContactNo}`)?.countryCallingCode || ''}`\n : '';\n\n // Create first row if doesn't exist yet\n if (!firstRow) {\n setAddressRows([{\n ...addressPayload,\n contact_name: responsiblePerson,\n phone: mainContactNo,\n country_code: parsedCountryCode,\n }]);\n return;\n }\n\n // Update first row ONLY if address details are not yet filled\n if (!hasAddressDetails) {\n const contactChanged = firstRow?.contact_name !== responsiblePerson;\n const phoneChanged = firstRow?.phone !== mainContactNo;\n\n if (contactChanged || phoneChanged) {\n setAddressRows(prev => prev.map((row, idx) =>\n idx === 0\n ? { ...row, contact_name: responsiblePerson, phone: mainContactNo, country_code: parsedCountryCode }\n : row\n ));\n }\n }\n }\n }, [responsiblePerson, mainContactNo]);\n\n const basicDetailsSection = useMemo(() => (\n <Accordion\n title={\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\n {t(\"common.party.sections.basic_details\")}\n </Typography>\n }\n accordionProps={{\n defaultExpanded: true,\n className: \"form--Accordion\",\n }}\n >\n <Grid container spacing={2}>\n\n <Grid item xs={12} sm={12}>\n <DynamicRadioButton\n label=''\n name={PARTIES_FIELDS.TYPE}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n options={partyType}\n display='row'\n title={t(t('common.party.fields.type'))}\n titlePosition='start'\n position={2} />\n </Grid>\n\n {selectedType === \"Individual\" && (\n <>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.firstName_label')}\n name={PARTIES_FIELDS.FIRST_NAME}\n placeholder={t('common.party.fields.firstName_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.lastName_label')}\n name={PARTIES_FIELDS.LAST_NAME}\n placeholder={t('common.party.fields.lastName_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n />\n </Grid>\n </>\n )}\n\n\n {selectedType === \"Company\" && (\n <>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.company_name_label')}\n name={PARTIES_FIELDS.COMPANY_NAME}\n placeholder={t('common.party.fields.company_name_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n onBlur={() => handleFieldBlur(PARTIES_FIELDS.COMPANY_NAME)}\n />\n </Grid>\n\n\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.vat_number_label')}\n name={PARTIES_FIELDS.VAT_NUMBER}\n placeholder={t('common.party.fields.vat_number_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n type=\"number\"\n max={15}\n onlyNumbers\n />\n </Grid>\n\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.crn_label')}\n name={PARTIES_FIELDS.CRN}\n placeholder={t('common.party.fields.crn_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n type=\"number\"\n max={10}\n onlyNumbers\n onBlur={() => handleFieldBlur(PARTIES_FIELDS.CRN)}\n />\n </Grid>\n </>\n )}\n\n <Grid item xs={12} sm={6}>\n <DynamicPhone\n type=\"text\"\n label={t('common.party.fields.contact_label')}\n name={PARTIES_FIELDS.CONTACT_NO}\n placeholder={t('common.party.fields.contact_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n />\n </Grid>\n\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.email_label')}\n name={PARTIES_FIELDS.EMAIL_IDS}\n placeholder={t('common.party.fields.email_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n onBlur={() => handleFieldBlur(PARTIES_FIELDS.EMAIL_IDS)}\n />\n </Grid>\n\n {/*Entity Name */}\n <Grid item xs={12} sm={6}>\n <DynamicSearchSelect\n label={t('common.party.fields.company_label')}\n apiType=\"company\"\n selectedLabel='Companies'\n name={PARTIES_FIELDS.COMPANY}\n placeholder={t('common.party.fields.company_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n />\n </Grid>\n\n <Grid item xs={12} sm={6}>\n <DynamicSearchSelect\n label={t('common.party.fields.currency_label')}\n apiType='currency'\n selectedLabel='Currency'\n name={PARTIES_FIELDS.CURRENCY}\n placeholder={t('common.party.fields.currency_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n is_multiselect\n />\n </Grid>\n\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.responsible_person_label')}\n name={PARTIES_FIELDS.RESPONSIBLE_PERSON}\n placeholder={t('common.party.fields.responsible_person_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n />\n </Grid>\n\n\n </Grid>\n </Accordion>\n ), [t, control, selectedType]);\n\n const accountingSection = useMemo(() => (\n <Accordion\n title={\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\n {t(\"common.party.sections.accounting\")}\n </Typography>\n }\n accordionProps={{\n defaultExpanded: true,\n className: \"form--Accordion\",\n }}\n >\n <Grid container spacing={2}>\n <Grid item xs={12} sm={6}>\n <DynamicSearchSelect\n label={t('common.party.fields.receivable_account_label')}\n apiType=\"accounts\"\n selectedLabel='Account'\n name={PARTIES_FIELDS.RECEIVABLE_ACCOUNT}\n placeholder={t('common.party.fields.receivable_account_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n customeFilter={{ '&account_type.eq': 'Receivable' }}\n options={[]}\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicSearchSelect\n label={t('common.party.fields.tax_template_label')}\n apiType=\"taxTemplate\"\n selectedLabel='Tax Template'\n name={PARTIES_FIELDS.TAX_TEMPLATE}\n placeholder={t('common.party.fields.tax_template_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n options={[]}\n />\n </Grid>\n </Grid>\n </Accordion>\n ), [t, control]);\n\n const addressSection = useMemo(() => (\n <Accordion\n title={\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\n {t(\"common.party.sections.address\")}\n <span className='errorIndicator'>*</span>\n {errors?.[PARTIES_FORM_ARRAY_NAME]?.[PARTIES_FIELDS.ADDRESS] && (\n <span className='error'>\n {errors?.[PARTIES_FORM_ARRAY_NAME]?.[PARTIES_FIELDS.ADDRESS]?.message}\n </span>\n )}\n </Typography>\n }\n accordionProps={{\n defaultExpanded: true,\n className: \"form--Accordion\",\n }}\n >\n <Grid spacing={4}>\n <Grid item xs={12}>\n <MaterialTable\n rows={[...addressRows]}\n columns={tableColumns(addressColumns(isKSA))}\n paginationModel={{ pageNo: 1, limit: 10 }}\n totalPages={20}\n enableColumnDragging={false}\n isResetRow={false}\n columnOrder={['mrt-row-select']}\n enableRowSelection={false}\n enableBottomToolbar\n disableDefaultActionColumn\n editDisplayMode='row'\n enableRowCreate\n onCreateRow={(data) => handleRowOperation(data, addressRows, setAddressRows, true)}\n onEditRow={(data) => handleRowOperation(data, addressRows, setAddressRows, true)}\n onDeleteRow={(row) => deleteRow(addressRows, setAddressRows, row)}\n onChangeRowField={onChangeAddressTableField}\n />\n </Grid>\n </Grid>\n </Accordion>\n // eslint-disable-next-line\n ), [t, addressRows, tableColumns, errors]);\n\n const contactSection = useMemo(() => (\n <Accordion\n title={\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\n {t(\"common.party.sections.contact\")}\n <span className='errorIndicator'>*</span>\n {errors?.[PARTIES_FORM_ARRAY_NAME]?.[PARTIES_FIELDS.CONTACTS] && (\n <span className='error'>\n {errors?.[PARTIES_FORM_ARRAY_NAME]?.[PARTIES_FIELDS.CONTACTS]?.message}\n </span>\n )}\n </Typography>\n }\n accordionProps={{\n defaultExpanded: true,\n className: \"form--Accordion\",\n }}\n >\n <Grid spacing={4}>\n <Grid item xs={12}>\n\n <MaterialTable\n rows={[...contactRows]}\n columns={tableColumns(contactColumns)}\n paginationModel={{ pageNo: 1, limit: 10 }}\n totalPages={20}\n enableColumnDragging={false}\n isResetRow={false}\n columnOrder={['mrt-row-select']}\n enableRowSelection={false}\n enableBottomToolbar\n disableDefaultActionColumn\n editDisplayMode='row'\n enableRowCreate\n onCreateRow={(data) => handleRowOperation(data, contactRows, setContactRows, false)}\n onEditRow={(data) => {\n handleRowOperation(data, contactRows, setContactRows, false);\n\n if (data.row.index === 0) {\n setValue(\n `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.RESPONSIBLE_PERSON}`,\n data.values.name || ''\n );\n setValue(\n `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.CONTACT_NO}`,\n data.values.contact_no || ''\n );\n setValue(\n `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.EMAIL_IDS}`,\n data.values.email || ''\n );\n }\n }}\n onDeleteRow={(row) => {\n if (row.index === 0) {\n enqueueSnackbar(t('common.party.errors.cannotDeleteResponsiblePerson'), { variant: 'error' });\n return Promise.resolve();\n }\n return deleteRow(contactRows, setContactRows, row);\n }}\n onChangeRowField={onChangeAddressTableField}\n />\n </Grid>\n </Grid>\n </Accordion>\n // eslint-disable-next-line\n ), [t, contactRows, tableColumns, errors]);\n\n return (\n <Modal\n open={isOpen}\n onClose={closeModal}\n maxWidth='lg'\n fullWidth\n sx={{ overflowY: 'hidden' }}\n {...modalProps}\n >\n {isCreating && <ModalLoader />}\n <form onSubmit={handleSubmit(onSubmit)} className=\"scroll-container\" style={{ position: 'relative', overflow: 'auto' }}>\n <DialogTitle className='itemEntryModal--DialogTitle'\n >\n <Typography type='s3' color='inherit' weight='medium'>\n {`Add ${type}`}\n </Typography>\n <IconButton onClick={closeModal}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n\n <DialogContent>\n {basicDetailsSection}\n <Divider className='form--SectionDivider' />\n {addressSection}\n <Divider className='form--SectionDivider' />\n {contactSection}\n <Divider className='form--SectionDivider' />\n {accountingSection}\n </DialogContent>\n\n <DialogActions className='itemEntryModal--DialogAction' sx={{\n position: 'sticky',\n bottom: 0,\n backgroundColor: 'white',\n zIndex: 1,\n padding: '8px 24px',\n justifyContent: 'end'\n }}>\n <Box display='flex' gap={1.5}>\n <Button\n className='itemEntryModal--DialogAction--WhiteBtn'\n onClick={closeModal}\n >\n {t('common.cancel')}\n </Button>\n <Button\n variant=\"contained\"\n onClick={handleSubmit(onSubmit)}\n >\n {t('common.save')}\n </Button>\n </Box>\n </DialogActions>\n </form>\n </Modal>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useMemo } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as Yup from 'yup';\nimport {\n Box,\n DialogActions,\n DialogContent,\n DialogTitle,\n Grid,\n IconButton\n} from '@mui/material';\nimport Close from '@mui/icons-material/Close';\nimport { useTranslation } from 'react-i18next';\n\nimport Modal from './modal/modal';\nimport Typography from './typography/typography';\nimport Button from './button/button';\nimport ModalLoader from './loaders/modal-loader';\nimport { DynamicInput, DynamicSearchSelect, IModalComponentProps } from './form-control';\n\ninterface IFormValues {\n team: {\n name: string;\n department_id: string | null;\n team_lead_id: string | null;\n member_ids: string[] | null;\n description: string;\n };\n}\n\ninterface ITeamAddModalProps extends IModalComponentProps {\n initialValues?: {\n department_id?: string | number | null;\n };\n}\n\nconst teamValidationSchema = Yup.object().shape({\n team: Yup.object().shape({\n name: Yup.string().required('Team Name is required'),\n department_id: Yup.string().nullable(),\n team_lead_id: Yup.string().nullable().required('Team Lead is required'),\n member_ids: Yup.array().nullable(),\n description: Yup.string(),\n })\n});\n\nconst getDefaultValues = (initialValues?: ITeamAddModalProps['initialValues']) => ({\n team: {\n name: '',\n department_id: initialValues?.department_id ?? null,\n team_lead_id: null,\n member_ids: null,\n description: '',\n }\n});\n\nexport const TeamAddModal: React.FC<ITeamAddModalProps> = ({\n isOpen,\n setIsOpen,\n onSave,\n isLoading,\n modalProps,\n initialValues,\n}) => {\n const { t } = useTranslation();\n\n const { control, handleSubmit, reset, watch } = useForm<IFormValues>({\n mode: 'all',\n resolver: yupResolver(teamValidationSchema),\n defaultValues: getDefaultValues(initialValues)\n });\n\n const selectedDepartmentId = watch('team.department_id');\n const selectedTeamLeadId = watch('team.team_lead_id');\n\n useEffect(() => {\n if (isOpen) {\n reset(getDefaultValues(initialValues));\n }\n }, [isOpen]);\n\n const handleModalClose = () => {\n reset(getDefaultValues(initialValues));\n setIsOpen();\n };\n\n const onSubmit = async (values: IFormValues) => {\n await onSave(values);\n handleModalClose();\n };\n\n const leadFilter = useMemo(() => ({\n '&department_id.eq': selectedDepartmentId || 0\n }), [selectedDepartmentId]);\n\n const membersFilter = useMemo(() => ({\n '&department_id.eq': selectedDepartmentId || 0,\n ...(selectedTeamLeadId ? { '&id.ne': selectedTeamLeadId } : {})\n }), [selectedDepartmentId, selectedTeamLeadId]);\n\n return (\n <Modal\n open={isOpen}\n onClose={handleModalClose}\n maxWidth='sm'\n fullWidth\n {...modalProps}\n >\n <form onSubmit={handleSubmit(onSubmit)}>\n {isLoading && <ModalLoader />}\n <DialogTitle className='brandAddModal--DialogTitle'>\n <Typography type='s3' color='inherit' weight='medium'>\n {t('hrms.organization_structure.teamModal.title', 'Add Team')}\n </Typography>\n <IconButton onClick={handleModalClose}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n <DialogContent className='brandAddModal--DialogContents'>\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\n {/* Team Name - Required */}\n <Grid item sm={12}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t('hrms.organization_structure.teamModal.name_label', 'Team Name')}\n name='name'\n fieldArrayName='team'\n placeholder={t('hrms.organization_structure.teamModal.name_placeholder', 'Enter Team Name')}\n required\n />\n </Grid>\n\n {/* Department - Optional */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.teamModal.department_label', 'Department')}\n name='department_id'\n placeholder={t('hrms.organization_structure.teamModal.department_placeholder', 'Select Department')}\n fieldArrayName='team'\n formControl={control as any}\n apiType='department'\n required={false}\n options={[]}\n />\n </Grid>\n\n {/* Team Lead - Required */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.teamModal.team_lead_label', 'Team Lead')}\n name='team_lead_id'\n placeholder={t('hrms.organization_structure.teamModal.team_lead_placeholder', 'Select Team Lead')}\n fieldArrayName='team'\n formControl={control as any}\n apiType='employees'\n required\n options={[]}\n customeFilter={leadFilter}\n />\n </Grid>\n\n {/* Members - Optional, multi-select */}\n <Grid item sm={12}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.teamModal.members_label', 'Members')}\n name='member_ids'\n placeholder={t('hrms.organization_structure.teamModal.members_placeholder', 'Select Members')}\n fieldArrayName='team'\n formControl={control as any}\n apiType='employees'\n required={false}\n options={[]}\n is_multiselect\n customeFilter={membersFilter}\n />\n </Grid>\n\n {/* Description - Optional, full width */}\n <Grid item sm={12}>\n <DynamicInput\n type='textarea'\n formControl={control}\n label={t('hrms.organization_structure.teamModal.description_label', 'Description')}\n name='description'\n fieldArrayName='team'\n placeholder={t('hrms.organization_structure.teamModal.description_placeholder', 'Enter Description')}\n is_multiline\n rows={3}\n />\n </Grid>\n </Grid>\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 >\n {t('common.cancel')}\n </Button>\n <Button type='submit'>\n {t('common.save')}\n </Button>\n </Box>\n </DialogActions>\n </form>\n </Modal>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as Yup from 'yup';\nimport {\n Box,\n DialogActions,\n DialogContent,\n DialogTitle,\n Grid,\n IconButton\n} from '@mui/material';\nimport Close from '@mui/icons-material/Close';\nimport { useTranslation } from 'react-i18next';\n\nimport Modal from './modal/modal';\nimport Typography from './typography/typography';\nimport Button from './button/button';\nimport ModalLoader from './loaders/modal-loader';\nimport { DynamicInput, DynamicSearchSelect, DynamicToggleButton, IModalComponentProps } from './form-control';\n\ninterface IFormValues {\n department: {\n company_id: string | null;\n department_code: string;\n name: string;\n parent_department_id: string | null;\n department_head_id: string | null;\n cost_code: string;\n status: boolean;\n description: string;\n };\n}\n\ninterface IDepartmentAddModalProps extends IModalComponentProps {\n initialValues?: {\n parent_department_id?: string | number | null;\n company_id?: string | number | null;\n };\n}\n\nconst departmentValidationSchema = Yup.object().shape({\n department: Yup.object().shape({\n company_id: Yup.string().nullable().required('Company is required'),\n department_code: Yup.string().required('Department Code is required'),\n name: Yup.string().required('Department Name is required'),\n parent_department_id: Yup.string().nullable(),\n department_head_id: Yup.string().nullable(),\n cost_code: Yup.string(),\n status: Yup.boolean(),\n description: Yup.string(),\n })\n});\n\nconst getDefaultValues = (initialValues?: IDepartmentAddModalProps['initialValues']) => ({\n department: {\n company_id: initialValues?.company_id ?? null,\n department_code: '',\n name: '',\n parent_department_id: initialValues?.parent_department_id ?? null,\n department_head_id: null,\n cost_code: '',\n status: true,\n description: '',\n }\n});\n\nexport const DepartmentAddModal: React.FC<IDepartmentAddModalProps> = ({\n isOpen,\n setIsOpen,\n onSave,\n isLoading,\n modalProps,\n initialValues,\n}) => {\n const { t } = useTranslation();\n\n const { control, handleSubmit, reset, trigger, watch } = useForm<any>({\n mode: 'all',\n resolver: yupResolver(departmentValidationSchema),\n defaultValues: getDefaultValues(initialValues)\n });\n\n const rootCompanyId = watch('department.company_id');\n\n useEffect(() => {\n if (isOpen) {\n reset(getDefaultValues(initialValues));\n }\n }, [isOpen]);\n\n const handleModalClose = () => {\n reset(getDefaultValues(initialValues));\n setIsOpen();\n };\n\n const onSubmit = async (values: IFormValues) => {\n const isValid = await trigger();\n if (!isValid) return;\n await onSave(values as any);\n handleModalClose();\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 && <ModalLoader />}\n <DialogTitle className='brandAddModal--DialogTitle'>\n <Typography type='s3' color='inherit' weight='medium'>\n {t('hrms.organization_structure.departmentModal.title', 'Add Department')}\n </Typography>\n <IconButton onClick={handleModalClose}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n <DialogContent className='brandAddModal--DialogContents'>\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\n {/* Company - Required */}\n <Grid item sm={12}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.departmentModal.company_label', 'Company')}\n name='company_id'\n placeholder={t('hrms.organization_structure.departmentModal.company_placeholder', 'Select Company')}\n fieldArrayName='department'\n formControl={control as any}\n apiType='company'\n required\n options={[]}\n />\n </Grid>\n\n {/* Department Code - Required */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t('hrms.organization_structure.departmentModal.code_label', 'Department Code')}\n name='department_code'\n fieldArrayName='department'\n placeholder={t('hrms.organization_structure.departmentModal.code_placeholder', 'Enter Department Code')}\n required\n />\n </Grid>\n\n {/* Department Name - Required */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t('hrms.organization_structure.departmentModal.name_label', 'Department Name')}\n name='name'\n fieldArrayName='department'\n placeholder={t('hrms.organization_structure.departmentModal.name_placeholder', 'Enter Department Name')}\n required\n />\n </Grid>\n\n {/* Parent Department - Optional */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.departmentModal.parent_department_label', 'Parent Department')}\n name='parent_department_id'\n placeholder={t('hrms.organization_structure.departmentModal.parent_department_placeholder', 'Select Parent Department')}\n fieldArrayName='department'\n formControl={control as any}\n apiType='department'\n required={false}\n options={[]}\n customeFilter={{\n '&is_parent.eq': true,\n '&company_id.eq': rootCompanyId || 0\n }}\n />\n </Grid>\n\n {/* Department Head - Optional */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.departmentModal.department_head_label', 'Department Head')}\n name='department_head_id'\n placeholder={t('hrms.organization_structure.departmentModal.department_head_placeholder', 'Select Department Head')}\n fieldArrayName='department'\n formControl={control as any}\n apiType='employees'\n required={false}\n options={[]}\n customeFilter={{\n '&company_id.eq': rootCompanyId || 0,\n '&is_active.eq': 1\n }}\n />\n </Grid>\n\n {/* Cost Code - Optional */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t('hrms.organization_structure.departmentModal.cost_code_label', 'Cost Code')}\n name='cost_code'\n fieldArrayName='department'\n placeholder={t('hrms.organization_structure.departmentModal.cost_code_placeholder', 'Enter Cost Code')}\n />\n </Grid>\n\n {/* Status Toggle */}\n <Grid item sm={6}>\n <DynamicToggleButton\n formControl={control as any}\n name='status'\n fieldArrayName='department'\n label={t('hrms.organization_structure.departmentModal.status_label', 'Status')}\n title={t('common.active', 'Active')}\n titlePosition='end'\n position={3}\n />\n </Grid>\n\n {/* Description - Optional, full width */}\n <Grid item sm={12}>\n <DynamicInput\n type='textarea'\n formControl={control}\n label={t('hrms.organization_structure.departmentModal.description_label', 'Description')}\n name='description'\n fieldArrayName='department'\n placeholder={t('hrms.organization_structure.departmentModal.description_placeholder', 'Enter Description')}\n is_multiline\n rows={3}\n />\n </Grid>\n </Grid>\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 >\n {t('common.cancel')}\n </Button>\n <Button type='button' onClick={handleSubmit(onSubmit)}>\n {t('common.save')}\n </Button>\n </Box>\n </DialogActions>\n </form>\n </>\n </Modal>\n );\n};\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 short_name: Yup.string().required('Short name is required'),\n company_id: Yup.number().required('Company 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 */\nimport React, { useEffect } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as Yup from 'yup';\nimport {\n Box,\n DialogActions,\n DialogContent,\n DialogTitle,\n Grid,\n IconButton\n} from '@mui/material';\nimport Close from '@mui/icons-material/Close';\nimport { useTranslation } from 'react-i18next';\n\nimport Modal from './modal/modal';\nimport Typography from './typography/typography';\nimport Button from './button/button';\nimport ModalLoader from './loaders/modal-loader';\nimport { DynamicInput, DynamicSearchSelect, DynamicToggleButton, IModalComponentProps } from './form-control';\n\ninterface IFormValues {\n designation: {\n company_id: number | null;\n designation_code: string;\n name: string;\n department_id: number | null;\n reports_to: string | null;\n level: string;\n status: boolean;\n description: string;\n };\n}\n\ninterface IDesignationAddModalProps extends IModalComponentProps {\n initialValues?: {\n company_id?: number | null;\n department_id?: number | null;\n parent_designation_id?: number | null;\n };\n}\n\nconst designationValidationSchema = Yup.object().shape({\n designation: Yup.object().shape({\n company_id: Yup.number().nullable().required('Company is required'),\n designation_code: Yup.string(),\n name: Yup.string().required('Designation Name is required'),\n department_id: Yup.number().nullable().required('Department is required'),\n reports_to: Yup.string().nullable(),\n level: Yup.number().nullable().typeError('Level must be a number'),\n status: Yup.boolean(),\n description: Yup.string(),\n })\n});\n\nconst getDefaultValues = (initialValues?: IDesignationAddModalProps['initialValues']) => ({\n designation: {\n company_id: initialValues?.company_id ?? null,\n designation_code: '',\n name: '',\n department_id: initialValues?.department_id ?? null,\n reports_to: initialValues?.parent_designation_id ?? null,\n level: null,\n status: true,\n description: '',\n }\n});\n\nexport const DesignationAddModal: React.FC<IDesignationAddModalProps> = ({\n isOpen,\n setIsOpen,\n onSave,\n isLoading,\n modalProps,\n initialValues,\n}) => {\n const { t } = useTranslation();\n\n const { control, handleSubmit, reset, trigger, watch } = useForm<any>({\n mode: 'all',\n resolver: yupResolver(designationValidationSchema),\n defaultValues: getDefaultValues(initialValues)\n });\n\n const rootCompanyId = watch('designation.company_id');\n const rootDepartmentId = watch('designation.department_id');\n\n useEffect(() => {\n if (isOpen) {\n reset(getDefaultValues(initialValues));\n }\n }, [isOpen]);\n\n const handleModalClose = () => {\n reset(getDefaultValues(initialValues));\n setIsOpen();\n };\n\n const onSubmit = async (values: IFormValues) => {\n const isValid = await trigger();\n if (!isValid) return;\n await onSave(values as any);\n handleModalClose();\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 && <ModalLoader />}\n <DialogTitle className='brandAddModal--DialogTitle'>\n <Typography type='s3' color='inherit' weight='medium'>\n {t('hrms.organization_structure.designationModal.title', 'Add Designation')}\n </Typography>\n <IconButton onClick={handleModalClose}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n <DialogContent className='brandAddModal--DialogContents'>\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\n {/* Company - Required */}\n <Grid item sm={12}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.designationModal.company_label', 'Company')}\n name='company_id'\n placeholder={t('hrms.organization_structure.designationModal.company_placeholder', 'Select Company')}\n fieldArrayName='designation'\n formControl={control as any}\n apiType='company'\n required\n options={[]}\n />\n </Grid>\n\n {/* Department - Required */}\n <Grid item sm={12}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.designationModal.department_label', 'Department')}\n name='department_id'\n placeholder={t('hrms.organization_structure.designationModal.department_placeholder', 'Select Department')}\n fieldArrayName='designation'\n formControl={control as any}\n apiType='department'\n required\n options={[]}\n customeFilter={{\n '&company_id.eq': rootCompanyId || 0,\n // '&is_active.eq': 1\n }}\n />\n </Grid>\n\n {/* Designation Code */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t('hrms.organization_structure.designationModal.code_label', 'Designation Code')}\n name='designation_code'\n fieldArrayName='designation'\n placeholder={t('hrms.organization_structure.designationModal.code_placeholder', 'Enter Designation Code')}\n />\n </Grid>\n\n {/* Designation Name - Required */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t('hrms.organization_structure.designationModal.name_label', 'Designation Name')}\n name='name'\n fieldArrayName='designation'\n placeholder={t('hrms.organization_structure.designationModal.name_placeholder', 'Enter Designation Name')}\n required\n />\n </Grid>\n\n {/* Reports To (Parent Designation) - Optional */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.designationModal.reports_to_label', 'Reports To')}\n name='reports_to'\n placeholder={t('hrms.organization_structure.designationModal.reports_to_placeholder', 'Select Reports To')}\n fieldArrayName='designation'\n formControl={control as any}\n apiType='designation'\n required={false}\n options={[]}\n customeFilter={{\n '&company_id.eq': rootCompanyId || 0,\n '&department_id.eq': rootDepartmentId || 0,\n }}\n />\n </Grid>\n\n {/* Level - Optional */}\n <Grid item sm={6}>\n <DynamicInput\n type='number'\n formControl={control}\n label={t('hrms.organization_structure.designationModal.level_label', 'Level')}\n name='level'\n fieldArrayName='designation'\n disabled\n placeholder={t('hrms.organization_structure.designationModal.level_placeholder', 'Enter Level')}\n />\n </Grid>\n\n {/* Status Toggle */}\n <Grid item sm={6}>\n <DynamicToggleButton\n formControl={control as any}\n name='status'\n fieldArrayName='designation'\n label={t('hrms.organization_structure.designationModal.status_label', 'Status')}\n title={t('common.active', 'Active')}\n titlePosition='end'\n position={3}\n />\n </Grid>\n\n {/* Description - Optional, full width */}\n <Grid item sm={12}>\n <DynamicInput\n type='textarea'\n formControl={control}\n label={t('hrms.organization_structure.designationModal.description_label', 'Description')}\n name='description'\n fieldArrayName='designation'\n placeholder={t('hrms.organization_structure.designationModal.description_placeholder', 'Enter Description')}\n is_multiline\n rows={3}\n />\n </Grid>\n </Grid>\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 >\n {t('common.cancel')}\n </Button>\n <Button type='button' onClick={handleSubmit(onSubmit)}>\n {t('common.save')}\n </Button>\n </Box>\n </DialogActions>\n </form>\n </>\n </Modal>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useState, useEffect, useCallback } 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 DialogTitle,\n Grid,\n IconButton\n} from '@mui/material';\nimport Close from '@mui/icons-material/Close';\n\nimport { FormProvider, useForm, useWatch } from 'react-hook-form';\nimport * as Yup from 'yup';\nimport { yupResolver } from '@hookform/resolvers/yup';\n\nimport DynamicSearchSelect from '../dynamic-select';\nimport DynamicSelect from '../select';\nimport { IModalComponentProps } from '../../index';\nimport { fetchOptions, skuGenerator } from '../../../../../utils/common';\n\nimport './fixed-asset-item-add-modal.scss';\n\ninterface IFormValues {\n inventory_fixed_asset_item: {\n name: string;\n sku: string;\n category: number | null;\n base_unit: number | null;\n company: number[];\n unit_of_measurement: number | null;\n stock_unit: number | null;\n purchase_unit: number | null;\n sales_unit: number | null;\n costing_method: string;\n depreciation_method: string;\n computation_method: string;\n default_tax_id: number | null;\n income_account_id: number | null;\n asset_account_id: number | null;\n cogs_account_id: number | null;\n fixed_asset_account_id: number | null;\n depreciation_account_id: number | null;\n declining_factor: number | null;\n };\n}\n\ninterface IToast {\n type: 'normal' | 'alert';\n message: string;\n}\n\nconst COSTING_METHODS = [\n { label: 'FIFO', value: 'FIFO' },\n { label: 'LIFO', value: 'LIFO' },\n { label: 'Weighted Average Cost', value: 'Weighted Average Cost' }\n];\n\nconst DEPRECIATION_METHODS = [\n { label: 'Straight line', value: 'Straight line' },\n { label: 'Declining', value: 'Declining' }\n];\n\nconst COMPUTATION_METHODS = [\n { label: 'Constant periods', value: 'Constant periods' },\n { label: 'Based on days per period', value: 'Based on days per period' }\n];\n\nconst validationSchema = Yup.object().shape({\n inventory_fixed_asset_item: Yup.object().shape({\n name: Yup.string().required('Name is required'),\n sku: Yup.string().required('SKU is required'),\n category: Yup.mixed().required('Category is required'),\n base_unit: Yup.mixed().required('Base Unit is required'),\n company: Yup.array().min(1, 'At least one company is required').required('Company is required'),\n unit_of_measurement: Yup.mixed().required('Unit of Measurement is required'),\n stock_unit: Yup.mixed().nullable(),\n purchase_unit: Yup.mixed().nullable(),\n sales_unit: Yup.mixed().nullable(),\n costing_method: Yup.string().required('Costing Method is required'),\n depreciation_method: Yup.string().required('Depreciation Method is required'),\n computation_method: Yup.string().required('Computation Method is required'),\n default_tax_id: Yup.mixed().required('Default Tax is required'),\n income_account_id: Yup.mixed().required('Income Account is required'),\n asset_account_id: Yup.mixed().required('Asset Account is required'),\n cogs_account_id: Yup.mixed().required('COGS Account is required'),\n fixed_asset_account_id: Yup.mixed().required('Fixed Asset Account is required'),\n depreciation_account_id: Yup.mixed().required('Depreciation Account is required'),\n declining_factor: Yup.number()\n .nullable()\n .when('depreciation_method', {\n is: 'Declining',\n then: (schema) => schema.required('Declining Factor is required').min(0, 'Must be positive'),\n otherwise: (schema) => schema.nullable(),\n }),\n })\n});\n\nconst FixedAssetItemAddModal: React.FC<IModalComponentProps> = ({\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 [selectedCategoryData, setSelectedCategoryData] = useState<any>(null);\n const unitFields = ['stock_unit', 'purchase_unit', 'sales_unit', 'consumption_unit', 'base_unit'];\n const defaultValues = {\n inventory_fixed_asset_item: {\n name: '',\n sku: '',\n category: null,\n base_unit: null,\n company: [],\n unit_of_measurement: null,\n stock_unit: null,\n purchase_unit: null,\n sales_unit: null,\n costing_method: '',\n depreciation_method: '',\n computation_method: '',\n default_tax_id: null,\n income_account_id: null,\n asset_account_id: null,\n cogs_account_id: null,\n fixed_asset_account_id: null,\n depreciation_account_id: null,\n declining_factor: null,\n status: 1\n }\n }\n\n const methods = useForm<any>({\n mode: 'all',\n resolver: yupResolver(validationSchema),\n defaultValues: defaultValues,\n });\n const { control, handleSubmit, reset, setValue, trigger } = methods || {};\n\n // Watch name and category for auto-generating SKU\n const [watchedName, watchedCategory, watchedUom, watchedDepreciationMethod] = useWatch({\n control, name:\n ['inventory_fixed_asset_item.name',\n 'inventory_fixed_asset_item.category',\n 'inventory_fixed_asset_item.unit_of_measurement',\n 'inventory_fixed_asset_item.depreciation_method']\n });\n\n\n // Auto-generate SKU when name or category changes\n useEffect(() => {\n if (watchedName && selectedCategoryData?.category_name) {\n const generatedSku = skuGenerator({\n name: watchedName,\n category: selectedCategoryData.category_name\n });\n setValue('inventory_fixed_asset_item.sku', generatedSku);\n }\n }, [watchedName, selectedCategoryData, setValue]);\n\n const handleModalClose = () => {\n reset(defaultValues);\n setSelectedCategoryData(null);\n setIsOpen();\n };\n\n const onSubmit = async (values: IFormValues) => {\n const isValid = await trigger();\n if (!isValid) return;\n await onSave({\n ...values.inventory_fixed_asset_item as any,\n type: 'inventory-fixed-asset',\n status: 1\n });\n handleModalClose();\n };\n\n const handleCategorySelect = useCallback((data: any) => {\n setSelectedCategoryData(data);\n }, []);\n\n const updateUomFields = useCallback(async () => {\n if (!watchedUom) return\n const filter = {\n '&template_id.eq': watchedUom,\n '&is_base_unit.eq': 1\n }\n const uomData = await fetchOptions('uom', filter, [], false)\n unitFields.forEach((item) => {\n setValue(`inventory_fixed_asset_item.${item}`, uomData?.id)\n })\n }, [watchedUom])\n useEffect(() => {\n updateUomFields()\n }, [updateUomFields])\n\n return (\n <Modal\n open={isOpen}\n onClose={handleModalClose}\n maxWidth='md'\n fullWidth\n {...modalProps}>\n <>\n <FormProvider {...methods}>\n <form onSubmit={handleSubmit(onSubmit)}>\n {isLoading && (\n <ModalLoader />\n )}\n <DialogTitle className='fixedAssetItemAddModal--DialogTitle'>\n <Typography type='s3' color='inherit' weight='medium'>\n {t(\"inventory.fixed_asset_items.modal.title\", \"Add Fixed Asset Item\")}\n </Typography>\n <IconButton onClick={handleModalClose}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n <DialogContent className='fixedAssetItemAddModal--DialogContents'>\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\n {/* Name */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t(\"inventory.fixed_asset_items.modal.name_label\", \"Name\")}\n name='name'\n fieldArrayName='inventory_fixed_asset_item'\n placeholder={t(\"inventory.fixed_asset_items.modal.name_placeholder\", \"Enter Name\")}\n required\n />\n </Grid>\n\n {/* SKU - Auto-generated */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t(\"inventory.fixed_asset_items.modal.sku_label\", \"SKU\")}\n name='sku'\n fieldArrayName='inventory_fixed_asset_item'\n placeholder={t(\"inventory.fixed_asset_items.modal.sku_placeholder\", \"Auto-generated\")}\n required\n disabled\n />\n </Grid>\n\n {/* Category */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.category_label\", \"Category\")}\n name=\"category\"\n placeholder={t(\"inventory.fixed_asset_items.modal.category_placeholder\", \"Select Category\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='categoryItems'\n options={[]}\n required={true}\n getSelectedData={handleCategorySelect}\n />\n </Grid>\n\n\n {/* Company */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.company_label\", \"Company\")}\n name=\"company\"\n placeholder={t(\"inventory.fixed_asset_items.modal.company_placeholder\", \"Select Company\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='company'\n options={[]}\n is_multiselect={true}\n required={true}\n />\n </Grid>\n\n {/* Costing Method */}\n <Grid item sm={6}>\n <DynamicSelect\n label={t(\"inventory.fixed_asset_items.modal.costing_method_label\", \"Costing Method\")}\n name=\"costing_method\"\n placeholder={t(\"inventory.fixed_asset_items.modal.costing_method_placeholder\", \"Select Costing Method\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n options={COSTING_METHODS}\n required={true}\n />\n </Grid>\n\n {/* Unit of Measurement Section Header */}\n <Grid item xs={12} pt={2}>\n <Typography type='s3' weight='medium' color='theme.neutral.900'>\n {t(\"inventory.fixed_asset_items.modal.uom_section\", \"Unit of Measurement\")}\n </Typography>\n </Grid>\n\n {/* UOM Template */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.unit_of_measurement_label\", \"UOM Template\")}\n name=\"unit_of_measurement\"\n placeholder={t(\"inventory.fixed_asset_items.modal.unit_of_measurement_placeholder\", \"Select UOM Template\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='uom_templates'\n required={true}\n />\n </Grid>\n\n {/* Stock Unit */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.stock_unit_label\", \"Stock Unit\")}\n name=\"stock_unit\"\n placeholder={t(\"inventory.fixed_asset_items.modal.stock_unit_placeholder\", \"Select Stock Unit\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='uom'\n customFilter={{\n '&template_id.eq': watchedUom || 0\n }}\n />\n </Grid>\n\n {/* Purchase Unit */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.purchase_unit_label\", \"Purchase Unit\")}\n name=\"purchase_unit\"\n placeholder={t(\"inventory.fixed_asset_items.modal.purchase_unit_placeholder\", \"Select Purchase Unit\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='uom'\n customFilter={{\n '&template_id.eq': watchedUom || 0\n }}\n />\n </Grid>\n\n {/* Sales Unit */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.sales_unit_label\", \"Consumption Unit\")}\n name=\"sales_unit\"\n placeholder={t(\"inventory.fixed_asset_items.modal.sales_unit_placeholder\", \"Select Sales Unit\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='uom'\n customFilter={{\n '&template_id.eq': watchedUom || 0\n }}\n />\n </Grid>\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.sales_unit_label\", \"Consumption Unit\")}\n name=\"consumption_unit\"\n placeholder={t(\"inventory.fixed_asset_items.modal.sales_unit_placeholder\", \"Select Sales Unit\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='uom'\n customFilter={{\n '&template_id.eq': watchedUom || 0\n }}\n />\n </Grid>\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.base_unit_label\", \"Base Unit\")}\n name=\"base_unit\"\n placeholder={t(\"inventory.fixed_asset_items.modal.base_unit_placeholder\", \"Select Base Unit\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n disabled\n apiType='uom'\n customFilter={{\n '&template_id.eq': watchedUom || 0,\n '&is_base_unit.eq': 1\n }}\n />\n </Grid>\n\n {/* Depreciation Method */}\n <Grid item sm={6}>\n <DynamicSelect\n label={t(\"inventory.fixed_asset_items.modal.depreciation_method_label\", \"Depreciation Method\")}\n name=\"depreciation_method\"\n placeholder={t(\"inventory.fixed_asset_items.modal.depreciation_method_placeholder\", \"Select Depreciation Method\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n options={DEPRECIATION_METHODS}\n required={true}\n />\n </Grid>\n\n {/* Declining Factor */}\n {watchedDepreciationMethod === 'Declining' && (\n <Grid item sm={6}>\n <DynamicInput\n type='number'\n formControl={control}\n label={t(\"inventory.fixed_asset_items.modal.declining_factor_label\", \"Declining Factor\")}\n name='declining_factor'\n fieldArrayName='inventory_fixed_asset_item'\n placeholder={t(\"inventory.fixed_asset_items.modal.declining_factor_placeholder\", \"Enter Declining Factor\")}\n required\n />\n </Grid>\n )}\n\n {/* Computation Method */}\n <Grid item sm={6}>\n <DynamicSelect\n label={t(\"inventory.fixed_asset_items.modal.computation_method_label\", \"Computation Method\")}\n name=\"computation_method\"\n placeholder={t(\"inventory.fixed_asset_items.modal.computation_method_placeholder\", \"Select Computation Method\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n options={COMPUTATION_METHODS}\n required={true}\n />\n </Grid>\n\n {/* Accounting Section Header */}\n <Grid item xs={12} pt={2}>\n <Typography type='s3' weight='medium' color='theme.neutral.900'>\n {t(\"inventory.fixed_asset_items.modal.accounting_section\", \"Accounting\")}\n </Typography>\n </Grid>\n\n {/* Default Tax */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.default_tax_label\", \"Default Tax\")}\n name=\"default_tax_id\"\n placeholder={t(\"inventory.fixed_asset_items.modal.default_tax_placeholder\", \"Select Default Tax\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='taxTemplate'\n options={[]}\n required={true}\n />\n </Grid>\n\n {/* Income Account */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.income_account_label\", \"Income Account\")}\n name=\"income_account_id\"\n placeholder={t(\"inventory.fixed_asset_items.modal.income_account_placeholder\", \"Select Income Account\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='accounts'\n options={[]}\n required={true}\n customeFilter={{ '&account_parent_type.in': ['Income', 'Assets'] }}\n />\n </Grid>\n\n {/* Asset Account */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.asset_account_label\", \"Asset Account\")}\n name=\"asset_account_id\"\n placeholder={t(\"inventory.fixed_asset_items.modal.asset_account_placeholder\", \"Select Asset Account\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='accounts'\n options={[]}\n required={true}\n customeFilter={{ '&account_parent_type.eq': 'Assets' }}\n />\n </Grid>\n\n {/* COGS Account */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.cogs_account_label\", \"COGS Account\")}\n name=\"cogs_account_id\"\n placeholder={t(\"inventory.fixed_asset_items.modal.cogs_account_placeholder\", \"Select COGS Account\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='accounts'\n options={[]}\n required={true}\n />\n </Grid>\n\n {/* Fixed Asset Account */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.fixed_asset_account_label\", \"Fixed Asset Account\")}\n name=\"fixed_asset_account_id\"\n placeholder={t(\"inventory.fixed_asset_items.modal.fixed_asset_account_placeholder\", \"Select Fixed Asset Account\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='accounts'\n options={[]}\n required={true}\n customeFilter={{ '&account_parent_type.eq': 'Assets' }}\n />\n </Grid>\n\n {/* Depreciation Account */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.depreciation_account_label\", \"Depreciation Account\")}\n name=\"depreciation_account_id\"\n placeholder={t(\"inventory.fixed_asset_items.modal.depreciation_account_placeholder\", \"Select Depreciation Account\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='accounts'\n options={[]}\n required={true}\n customeFilter={{ '&account_parent_type.eq': 'Assets' }}\n />\n </Grid>\n </Grid>\n </DialogContent>\n <DialogActions className='fixedAssetItemAddModal--DialogAction'>\n <span></span>\n <Box display='flex' gap={1.5}>\n <Button\n className='fixedAssetItemAddModal--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 </FormProvider>\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 FixedAssetItemAddModal;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React from 'react';\nimport { useForm } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as Yup from 'yup';\nimport {\n Box,\n DialogActions,\n DialogContent,\n DialogTitle,\n Grid,\n IconButton\n} from '@mui/material';\nimport Close from '@mui/icons-material/Close';\nimport { useTranslation } from 'react-i18next';\n\nimport Modal from './modal/modal';\nimport Typography from './typography/typography';\nimport Button from './button/button';\nimport ModalLoader from './loaders/modal-loader';\nimport { DynamicInput, DynamicSelect, DynamicSearchSelect, IModalComponentProps } from './form-control';\n\ninterface IFormValues {\n payment_term: {\n name: string;\n due_date_based_on: number | null;\n credit_days: number | null;\n mode_of_payment: string;\n discount_type: string;\n discount: number | null;\n discount_due_date_based_on: number | null;\n discount_validity: number | null;\n description: string;\n };\n}\n\nconst validationSchema = Yup.object().shape({\n payment_term: Yup.object().shape({\n name: Yup.string().required('Name is required'),\n due_date_based_on: Yup.number()\n .typeError('Due date based on is required')\n .required('Due date based on is required'),\n credit_days: Yup.number()\n .typeError('Credit days is required')\n .required('Credit days is required')\n .positive('Must be positive')\n .integer('Must be a whole number'),\n mode_of_payment: Yup.string().nullable(),\n discount_type: Yup.string().nullable(),\n discount: Yup.number().nullable().typeError('Must be a number'),\n discount_due_date_based_on: Yup.number().nullable().typeError('Must be a number'),\n discount_validity: Yup.number().nullable().typeError('Must be a number').integer('Must be a whole number'),\n description: Yup.string().nullable(),\n })\n});\n\nconst MODE_OF_PAYMENT_OPTIONS = [\n { label: 'Bank Draft', value: 'BANK_DRAFT' },\n { label: 'Cash', value: 'CASH' },\n { label: 'Credit Card', value: 'CREDIT_CARD' },\n { label: 'Wire Transfer', value: 'WIRE_TRANSFER' }\n];\n\nconst DISCOUNT_TYPE_OPTIONS = [\n { label: 'Percentage', value: 'PERCENTAGE' },\n { label: 'Amount', value: 'AMOUNT' }\n];\n\nexport const PaymentTermAddModal: React.FC<IModalComponentProps> = ({\n isOpen,\n setIsOpen,\n onSave,\n isLoading,\n modalProps,\n}) => {\n const { t } = useTranslation();\n\n const { control, handleSubmit, reset, trigger } = useForm<any>({\n mode: 'all',\n resolver: yupResolver(validationSchema),\n defaultValues: {\n payment_term: {\n name: '',\n due_date_based_on: null,\n credit_days: null,\n mode_of_payment: '',\n discount_type: '',\n discount: null,\n discount_due_date_based_on: null,\n discount_validity: null,\n description: '',\n }\n }\n });\n\n const handleModalClose = () => {\n reset({\n payment_term: {\n name: '',\n due_date_based_on: null,\n credit_days: null,\n mode_of_payment: '',\n discount_type: '',\n discount: null,\n discount_due_date_based_on: null,\n discount_validity: null,\n description: '',\n }\n });\n setIsOpen();\n };\n\n const onSubmit = async (values: IFormValues) => {\n const isValid = await trigger();\n if (!isValid) return;\n await onSave(values?.payment_term as any);\n handleModalClose();\n };\n\n return (\n <Modal\n open={isOpen}\n onClose={handleModalClose}\n maxWidth='md'\n fullWidth\n {...modalProps}\n >\n <>\n <form onSubmit={handleSubmit(onSubmit)}>\n {isLoading && <ModalLoader />}\n <DialogTitle className='paymentTermAddModal--DialogTitle'>\n <Typography type='s3' color='inherit' weight='medium'>\n {t(\"common.paymentTerm.title\")}\n </Typography>\n <IconButton onClick={handleModalClose}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n <DialogContent className='paymentTermAddModal--DialogContents'>\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t(\"common.paymentTerm.fields.name_label\")}\n name='name'\n fieldArrayName='payment_term'\n placeholder={t(\"common.paymentTerm.fields.name_placeholder\")}\n required\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicSearchSelect\n label={t(\"common.paymentTerm.fields.due_date_based_on_label\")}\n apiType='dueDateType'\n name='due_date_based_on'\n fieldArrayName='payment_term'\n formControl={control}\n placeholder={t(\"common.paymentTerm.fields.due_date_based_on_placeholder\")}\n required\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n type='number'\n formControl={control}\n label={t(\"common.paymentTerm.fields.credit_days_label\")}\n name='credit_days'\n fieldArrayName='payment_term'\n placeholder={t(\"common.paymentTerm.fields.credit_days_placeholder\")}\n required\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicSelect\n label={t(\"common.paymentTerm.fields.mode_of_payment_label\")}\n name='mode_of_payment'\n fieldArrayName='payment_term'\n formControl={control}\n placeholder={t(\"common.paymentTerm.fields.mode_of_payment_placeholder\")}\n options={MODE_OF_PAYMENT_OPTIONS}\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicSelect\n label={t(\"common.paymentTerm.fields.discount_type_label\")}\n name='discount_type'\n fieldArrayName='payment_term'\n formControl={control}\n placeholder={t(\"common.paymentTerm.fields.discount_type_placeholder\")}\n options={DISCOUNT_TYPE_OPTIONS}\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n type='number'\n formControl={control}\n label={t(\"common.paymentTerm.fields.discount_label\")}\n name='discount'\n fieldArrayName='payment_term'\n placeholder={t(\"common.paymentTerm.fields.discount_placeholder\")}\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicSearchSelect\n label={t(\"common.paymentTerm.fields.discount_due_date_based_on_label\")}\n apiType='dueDateType'\n name='discount_due_date_based_on'\n fieldArrayName='payment_term'\n formControl={control}\n placeholder={t(\"common.paymentTerm.fields.discount_due_date_based_on_placeholder\")}\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n type='number'\n formControl={control}\n label={t(\"common.paymentTerm.fields.discount_validity_label\")}\n name='discount_validity'\n fieldArrayName='payment_term'\n placeholder={t(\"common.paymentTerm.fields.discount_validity_placeholder\")}\n />\n </Grid>\n <Grid item xs={12}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t(\"common.paymentTerm.fields.description_label\")}\n name='description'\n fieldArrayName='payment_term'\n placeholder={t(\"common.paymentTerm.fields.description_placeholder\")}\n is_multiline\n />\n </Grid>\n </Grid>\n </DialogContent>\n <DialogActions className='paymentTermAddModal--DialogAction'>\n <span></span>\n <Box display='flex' gap={1.5}>\n <Button\n className='paymentTermAddModal--DialogAction--WhiteBtn'\n onClick={handleModalClose}\n >\n {t(\"common.cancel\")}\n </Button>\n <Button type='button' onClick={handleSubmit(onSubmit)}>\n {t(\"common.save\")}\n </Button>\n </Box>\n </DialogActions>\n </form>\n </>\n </Modal>\n );\n};\n","import { getErrorMessage, getToken } from '../../../../utils/common';\nimport { postV1WarehouseLocation, postV1InventoryFixedAssetItems, postV1CategoryItems, postV1Brand } from '../../../../api-client/api.inventory/api';\nimport { PostV1WarehouseLocationRequest } from '../../../../api-client/api.inventory/api-types';\nimport { enqueueSnackbar } from 'notistack';\nimport { postV1Parties, postV1PartiesIndustry, postV1JournalTypes, postV1PaymentTerms } from '../../../../api-client/api.accounting/api';\nimport { postV1Teams, postV1Designation, postV1Departments, postV1DepartmentsTeams } from '../../../../api-client/api.hrms/api';\nimport { postV1SourceTypes } from '../../../../api-client/api.sales/api';\nimport { CustomerVendorModal } from '@/components/parties-modal';\nimport { TeamAddModal } from '../../../team-add-modal';\nimport { DepartmentAddModal } from '@/components/department-add-modal';\nimport { LocationAddModal } from './location-add-modal';\nimport { DesignationAddModal } from '@/components/designation-add-modal';\nimport { FixedAssetItemAddModal } from './fixed-asset-item-add-modal';\nimport { DialogProps } from '@mui/material';\nimport { BrandAddModal } from '@/components/brand-add-modal';\nimport { CategoryAddModal } from '@/components/category-add-modal';\nimport { IndustryAddModal } from '@/components/industry-add-modal';\nimport { SourceTypeAddModal } from '@/components/source-type-add-modal/source-type-add-modal';\nimport { JournalTypeAddModal } from '@/components/journal-type-add-modal';\nimport { PaymentTermAddModal } from '@/components/payment-term-add-modal';\n\nexport const createApiThunk = async (api: (payload: any) => Promise<any>, payload: any) => {\n\ttry {\n\t\treturn await api({ ...payload, ...getToken() })\n\t} catch (error) {\n\t\ttry {\n\t\t\tenqueueSnackbar(getErrorMessage(error?.message), { variant: 'error' });\n\t\t} catch {\n\t\t\tconsole.error('[createApiThunk] enqueueSnackbar not available:', getErrorMessage(error?.message));\n\t\t}\n\t\tthrow error;\n\t}\n}\n\nexport interface IAddConfig {\n\tapi: (payload: any) => Promise<any>;\n\tcomponent: any;\n}\n\nexport interface IModalComponentProps {\n\tisOpen: boolean;\n\tsetIsOpen: () => void;\n\tmodalProps?: DialogProps;\n\tonSave: (data: string) => void;\n\tisLoading?: boolean;\n}\n\nconst addMapper: Record<string, IAddConfig> = {\n\tlocation: {\n\t\tapi: (payload: PostV1WarehouseLocationRequest) => createApiThunk(postV1WarehouseLocation, payload),\n\t\tcomponent: LocationAddModal,\n\t},\n\tparty: {\n\t\tapi: (payload: any) => createApiThunk(postV1Parties, payload),\n\t\tcomponent: CustomerVendorModal,\n\t},\n\tdepartment: {\n\t\tapi: (payload: any) => createApiThunk(postV1Departments, payload),\n\t\tcomponent: DepartmentAddModal,\n\t},\n\tteam: {\n\t\tapi: (payload: any) => createApiThunk(postV1DepartmentsTeams, payload),\n\t\tcomponent: TeamAddModal,\n\t},\n\tdesignation: {\n\t\tapi: (payload: any) => createApiThunk(postV1Designation, payload),\n\t\tcomponent: DesignationAddModal,\n\t},\n\tfixedAssetItem: {\n\t\tapi: (payload: any) => createApiThunk(postV1InventoryFixedAssetItems, payload),\n\t\tcomponent: FixedAssetItemAddModal,\n\t},\n\tbrand: {\n\t\tapi: (payload: any) => createApiThunk(postV1Brand, payload),\n\t\tcomponent: BrandAddModal,\n\t},\n\tcategory: {\n\t\tapi: (payload: any) => createApiThunk(postV1CategoryItems, payload),\n\t\tcomponent: CategoryAddModal,\n\t},\n\tindustry: {\n\t\tapi: (payload: any) => createApiThunk(postV1PartiesIndustry, payload),\n\t\tcomponent: IndustryAddModal,\n\t},\n\tsourceType: {\n\t\tapi: (payload: any) => createApiThunk(postV1SourceTypes, payload),\n\t\tcomponent: SourceTypeAddModal,\n\t},\n\tjournalType: {\n\t\tapi: (payload: any) => createApiThunk(postV1JournalTypes, payload),\n\t\tcomponent: JournalTypeAddModal,\n\t},\n\tjournal_type: {\n\t\tapi: (payload: any) => createApiThunk(postV1JournalTypes, payload),\n\t\tcomponent: JournalTypeAddModal,\n\t},\n\tpaymentTerm: {\n\t\tapi: (payload: any) => createApiThunk(postV1PaymentTerms, payload),\n\t\tcomponent: PaymentTermAddModal,\n\t},\n};\n\nexport const dynamicSelectAdd = (addType: string): IAddConfig | null => {\n\tconst config = addMapper[addType];\n\n\tif (!config) {\n\t\tconsole.warn(`No configuration found for addType: ${addType}`);\n\t\treturn null;\n\t}\n\n\treturn {\n\t\t...config\n\t};\n};\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n Box,\n CircularProgress,\n Divider,\n IconButton,\n InputAdornment,\n MenuItem,\n OutlinedInput,\n} from \"@mui/material\";\nimport Select from \"./select/select\";\nimport Checkbox from \"./checkbox/checkbox\";\nimport Typography from \"./typography/typography\";\nimport { Close } from \"./icons\";\nimport { debounce, sortBy } from \"lodash\";\nimport { fetchApi } from \"../utils/api\";\nimport ChipOrPlaceholder from \"./form-control/form-builder/form-builder-element/chip-or-placeholder\";\nimport { Add } from \"@mui/icons-material\";\nimport { useLanguage } from '@erpsquad/common/runtime';\nimport { useTranslation } from \"react-i18next\";\nimport { dynamicSelectAdd } from \"./form-control/form-builder/form-builder-element/select-configuration\";\nimport { useAuth } from '@erpsquad/common/runtime';\n\ninterface IOption {\n id: string | number;\n value: string | number;\n label: string | React.ReactNode;\n disabled?: boolean;\n isGroup?: boolean;\n options?: IOption[];\n searchLabel?: string;\n}\n\ninterface IPaginationState {\n page: number;\n hasMore: boolean;\n isLoadingMore: boolean;\n total: number;\n}\n\ninterface IMenuItems {\n options: IOption[];\n multiple: boolean;\n placeholder: string;\n with_checkboxes: boolean;\n values: string | string[];\n field: any;\n disabledIds: any[];\n handleClear: () => void;\n handleChange?: (value: string | string[]) => void;\n hasParent?: boolean;\n}\n\n// Custom API fetch function type for parent components\ninterface CustomFetchApiParams {\n search?: string;\n filters?: any;\n limit: number;\n skip: number;\n select?: string;\n order?: string;\n}\n\ninterface CustomFetchApiResponse {\n data: IOption[];\n pagination?: {\n totalCount: number;\n };\n}\n\ninterface SearchableSelectProps {\n labelId: string;\n label: string;\n value: any;\n onChange?: (event: any, selectedData?: any) => void;\n options: IOption[];\n multiple?: boolean;\n placeholder?: string;\n size?: \"small\" | \"medium\";\n searchPlaceholder?: string;\n CustomDropDownIcon: React.ReactNode;\n customStyle: any;\n name?: string;\n defaultValue?: any;\n apiType?: string;\n isInternal?: boolean;\n autoFocus?: any;\n error?: any;\n disabled: any;\n customeFilter?: string;\n attributes?: string;\n getSelectedData?: (row: any) => void;\n disabledIds: any[];\n labelKey?: string;\n valueKey?: string;\n inputStyle?: any;\n onChipRemove?: (value: string) => void;\n selectedLabel?: string;\n is_loading?: boolean;\n hasParent?: boolean;\n sortOrder?: string;\n handleChange?: (value: string | string[]) => void;\n enable_footer?: boolean;\n onFooterClick?: () => void;\n showCancelButton?: boolean;\n /** Custom API function to fetch options from parent component */\n customFetchApi?: (params: CustomFetchApiParams) => Promise<CustomFetchApiResponse>;\n addType?: string;\n isMergeOptions?: boolean;\n attributes?: string[];\n modalComponentProps?: any;\n}\n\nconst generateMenuItems = ({\n options,\n multiple,\n placeholder,\n with_checkboxes,\n values,\n field,\n disabledIds,\n handleClear,\n handleChange,\n hasParent = false,\n}: IMenuItems) => {\n const itemDisabled = (ls: any) => disabledIds?.includes(ls);\n const items: React.ReactElement[] = [];\n\n if (!multiple) {\n items.push(\n <MenuItem disabled value='' key=\"placeholder\" sx={{ opacity: `0 !important`, height: `0 !important`, p: `0 !important`, m: `0 !important` }}>\n <Typography type='s3' color='theme.secondary.1000'>\n <em>{placeholder}</em>\n </Typography>\n </MenuItem>\n );\n }\n\n const selectedValues = Array.isArray(values) ? values?.filter((value) => value) : [];\n\n // Parent selection handlers\n const handleParentChange = (parentValue: string, childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n\n const isParentSelected = valueArray.includes(parentValue);\n const updatedValues = isParentSelected\n ? valueArray.filter((value) => value !== parentValue && !childValues.includes(value))\n : [...new Set([...valueArray, parentValue, ...childValues])];\n\n handleChange?.(updatedValues);\n };\n\n const isAllOptionsSelected = (parentValue: string, childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n return childValues.every((childValue) => valueArray.includes(childValue));\n };\n\n const isSomeOptionsSelected = (childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n return childValues.some((childValue) => valueArray.includes(childValue));\n };\n\n Array.isArray(options) && options?.length > 0 && options?.forEach((option, index) => {\n items.push(\n <MenuItem\n value={option?.value}\n key={`${option?.value}-${index}`}\n disabled={Boolean(option?.disabled) || itemDisabled(option?.value) || (hasParent && !multiple)}\n className={option?.isGroup ? 'select--MenuItemHeader' : ''}\n onClick={() => {\n if (values?.length == 1) {\n handleClear();\n }\n }}\n >\n <Box sx={{ display: 'flex', gap: 1 }}>\n {multiple && with_checkboxes && (\n <Checkbox\n checked={\n hasParent\n ? isAllOptionsSelected(option.value, option.options || [])\n : Boolean(Array.isArray(values) && values?.indexOf(option?.value) > -1)\n }\n indeterminate={\n hasParent && isSomeOptionsSelected(option.options || [])\n }\n onChange={() =>\n hasParent\n ? handleParentChange(option.value, option.options || [])\n : handleChange?.(option.value)\n }\n />\n )}\n <Typography\n type='s3'\n color='theme.secondary.1000'\n onClick={() => handleChange?.(option.value)}\n >\n {option?.label}\n </Typography>\n </Box>\n </MenuItem>\n );\n\n // Handle child options for grouped items\n if (option?.isGroup && Array.isArray(option?.options)) {\n option.options.forEach((opt, index) => {\n items.push(\n <MenuItem\n id={`${option.value}-${opt.value} ${index}`}\n value={opt.value}\n disabled={Boolean(opt.disabled) || itemDisabled(opt.value)}\n sx={{ pl: 5 }}\n onClick={() => {\n if (values?.length == 1) {\n handleClear();\n }\n }}\n key={`${option.value}-${opt.value} ${index}`}\n >\n <Box sx={{ display: 'flex', gap: 1 }}>\n {multiple && with_checkboxes && (\n <Checkbox\n checked={Boolean(Array.isArray(values) && values?.indexOf(opt.value) > -1)}\n />\n )}\n <Typography\n id={`${option.value}-${opt.value} ${index}`}\n type='s3'\n color='theme.secondary.1000'\n onClick={() => handleChange?.(String(opt.value))}\n >\n {opt.label == \"Payment Entries\" ? \"Payment and Collection Entries\" : opt.label || opt.value}\n </Typography>\n </Box>\n </MenuItem>\n );\n });\n }\n });\n\n // Footer item\n if (field.enable_footer || field.addType) {\n items.push(\n <Box key=\"footer\" sx={{ position: 'sticky', bottom: 0, background: '#fff', zIndex: 1 }}>\n <Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n <MenuItem sx={{ gap: 1 }} onClick={() => {\n if (field.onFooterClick) {\n field.onFooterClick();\n } else if (field.handleModalOpen) {\n field.handleModalOpen();\n }\n }}>\n <Add fontSize='small' />\n <Typography type='s4' color='theme.secondary.1000'>\n Create New {field.label}\n </Typography>\n </MenuItem>\n </Box>\n );\n }\n\n // No data fallback\n if (!items.length || (items.length == 1 && !multiple)) {\n items.push(\n <MenuItem disabled key=\"no-data\">\n No data available\n </MenuItem>\n );\n }\n\n return items;\n};\n\nconst SearchableSelect: React.FC<SearchableSelectProps> = (props) => {\n const {\n labelId,\n label,\n value,\n onChange,\n options,\n multiple = false,\n size = \"small\",\n searchPlaceholder,\n placeholder,\n name,\n defaultValue,\n apiType,\n isInternal = false,\n autoFocus,\n error,\n disabled,\n customeFilter,\n attributes,\n getSelectedData,\n disabledIds,\n onChipRemove,\n selectedLabel,\n is_loading,\n customStyle = {},\n CustomDropDownIcon,\n labelKey,\n valueKey,\n inputStyle,\n hasParent = false,\n sortOrder = 'id:-1',\n handleChange,\n enable_footer = false,\n onFooterClick,\n showCancelButton = true,\n customFetchApi,\n addType,\n isMergeOptions = false,\n } = props;\n\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [loading, setLoading] = useState<boolean>(false);\n const [dynamicOptions, setOptions] = useState<IOption[]>([]);\n const [selectedOptions, setSelectedOptions] = useState<IOption[]>([]);\n const [isAlreadyLoaded, setIsAlreadyLoaded] = useState(false);\n const [initailLoading, setInitialLoading] = useState(false);\n const [searchInitiate, setSearchInitiate] = useState(false);\n const [open, setOpen] = useState(false);\n const [prevFilter, setPrevFilter] = useState<any>(null);\n const [addConfig, setAddConfig] = useState<any>(null);\n const [isModalOpen, setIsModalOpen] = useState<boolean>(false);\n const [isAddLoading, setIsAddLoading] = useState<boolean>(false);\n const { t } = useTranslation();\n\n // Pagination state\n const [pagination, setPagination] = useState<IPaginationState>({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n\n const { isRtl } = useLanguage();\n const limit = 25;\n\n const isInternalOptions = useMemo(() => {\n if (isMergeOptions && (apiType || customFetchApi)) return false;\n return isInternal || (!apiType && !customFetchApi);\n }, [isInternal, apiType, customFetchApi, isMergeOptions]);\n\n // Local search function for internal options\n const searchOptionsLocally = useCallback((searchTerm: string, value: any): IOption[] => {\n const currentOptions: IOption[] = (options && options.length > 0) ? options : [];\n if (!searchTerm) return currentOptions;\n\n const lowercasedSearchTerm = searchTerm.toLowerCase();\n\n const filteredOptions = hasParent\n ? options?.reduce((acc: IOption[], opt) => {\n const searchedOptions = opt.options?.filter((item) => {\n const label = React.isValidElement(item.label) ? item.searchLabel : String(item.label);\n return label?.toLowerCase().includes(lowercasedSearchTerm);\n });\n\n if (searchedOptions?.length) {\n acc.push({ ...opt, options: searchedOptions });\n }\n\n return acc;\n }, []) || []\n : options?.filter((opt) => {\n const label = React.isValidElement(opt.label) ? opt.searchLabel : String(opt.label);\n return label?.toLowerCase().includes(lowercasedSearchTerm);\n }) || [];\n\n return sortBySelectedValues(filteredOptions, value);\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [options, hasParent]);\n\n // Clear Selected Options\n const handleClear = () => {\n onChange?.({ target: { value: multiple ? [] : null } });\n if (getSelectedData && typeof getSelectedData === \"function\") {\n getSelectedData(null);\n }\n };\n\n // Get unique options\n const getUniqueOptions = useCallback((data: IOption[]): IOption[] => {\n const uniqueOptions = [\n ...new Map(data?.map(item => [item.value, item])).values()\n ];\n return uniqueOptions;\n }, []);\n\n // Sort by selected values\n const sortBySelectedValues = useCallback((arrayToSort: IOption[], value: any): IOption[] => {\n const selectedValues = Array.isArray(value) ? value : [value];\n const sortedValue = sortBy(arrayToSort, (item) => {\n const index = selectedValues.indexOf(item.id || item.value);\n return index === -1 ? Infinity : index;\n });\n return sortedValue;\n }, []);\n\n // Options with search and pagination support\n const filteredOptions = useMemo(() => {\n if (isInternalOptions) {\n return searchOptionsLocally(searchQuery, value);\n }\n const apiOptions = sortBySelectedValues(getUniqueOptions([...dynamicOptions, ...selectedOptions]), value);\n if (isMergeOptions) {\n const localOptions = searchOptionsLocally(searchQuery, value);\n return getUniqueOptions([...localOptions, ...apiOptions]);\n }\n return apiOptions;\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchQuery, dynamicOptions, options, value, isInternalOptions, selectedOptions, searchOptionsLocally, sortBySelectedValues, getUniqueOptions, isMergeOptions]);\n\n // Handle scroll pagination\n const handleScroll = useCallback((event: React.UIEvent<HTMLDivElement>) => {\n const { scrollTop, scrollHeight, clientHeight } = event.currentTarget;\n const isBottom = scrollHeight - scrollTop <= clientHeight + 10;\n\n if (isBottom && pagination.hasMore && !pagination.isLoadingMore && !isInternalOptions) {\n const nextPage = pagination.page + 1;\n fetchOptions(searchQuery, customeFilter, nextPage, true);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pagination.hasMore, pagination.isLoadingMore, pagination.page, isInternalOptions, searchQuery, JSON.stringify(customeFilter)]);\n\n // Update Options\n const updateOptions = useCallback((newOptions: IOption[], append = false) => {\n setOptions((prevOptions) => {\n const oldOptions = append ? prevOptions : selectedOptions;\n const uniqueOptions = getUniqueOptions([...oldOptions, ...newOptions]);\n return uniqueOptions;\n });\n }, [selectedOptions, getUniqueOptions]);\n\n // Fetch Options with pagination support\n const fetchOptions = useCallback(async (searchTerm: any = '', filters = customeFilter, page = 1, append = false) => {\n // Skip if neither apiType nor customFetchApi is provided\n if (!apiType && !customFetchApi) return [];\n\n setLoading(true);\n if (page > 1) {\n setPagination(prev => ({ ...prev, isLoadingMore: true }));\n }\n\n try {\n let data: IOption[] = [];\n let paginationResult: { totalCount?: number } = {};\n\n // Use custom API if provided, otherwise use default fetchApi\n if (customFetchApi) {\n const response = await customFetchApi({\n search: searchTerm,\n filters,\n limit,\n skip: (page - 1) * limit,\n select: attributes,\n order: sortOrder\n });\n data = response?.data || [];\n paginationResult = response?.pagination || {};\n } else {\n const response = await fetchApi({\n apiKey: apiType!,\n filters: {\n limit,\n skip: (page - 1) * limit,\n search: searchTerm,\n filters,\n select: attributes,\n order: sortOrder\n },\n labelKey,\n valueKey\n });\n data = response?.data || [];\n paginationResult = response?.pagination || {};\n }\n\n if (data && Array.isArray(data)) {\n updateOptions(data, append);\n\n // Update pagination\n setPagination(prev => ({\n ...prev,\n page,\n hasMore: (paginationResult?.totalCount || 0) > (page * limit),\n total: paginationResult?.totalCount || 0,\n isLoadingMore: false\n }));\n\n if (data?.length > 0) {\n setSelectedData();\n }\n }\n\n return data || [];\n } catch (error) {\n console.error('Error fetching options:', error);\n setPagination(prev => ({ ...prev, isLoadingMore: false }));\n return [];\n } finally {\n setLoading(false);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [apiType, customFetchApi, attributes, sortOrder, limit, updateOptions, dynamicOptions]);\n\n // Search Options with debounce\n const debounceSearch = useMemo(\n () => debounce(async (searchTerm: string) => {\n if (loading) return;\n\n if (!searchTerm && !isInternalOptions && searchInitiate) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n await fetchOptions('', customeFilter, 1, false);\n }\n if (searchTerm?.length > 1 && !isInternalOptions) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n await fetchOptions(searchTerm, customeFilter, 1, false);\n }\n }, 700),\n //eslint-disable-next-line react-hooks/exhaustive-deps\n [isInternalOptions, searchInitiate, JSON.stringify(customeFilter)]\n );\n\n // Initial fetch with filter change detection\n const initialFetch = useCallback(async () => {\n const condition = JSON.stringify(customeFilter) !== JSON.stringify(prevFilter);\n\n if (condition && !isInternalOptions && !isAlreadyLoaded) {\n setPrevFilter(customeFilter);\n setOptions([]);\n setIsAlreadyLoaded(false);\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n }\n\n if (!isInternalOptions && !isAlreadyLoaded) {\n await fetchOptions(searchQuery, customeFilter, 1, false);\n setIsAlreadyLoaded(true);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(customeFilter), isInternalOptions, isAlreadyLoaded]);\n\n // Set Selected Data\n const setSelectedData = useCallback(() => {\n let hasOptions = false;\n const isInOptions = filteredOptions?.filter((i: any) =>\n multiple ? value?.includes(i?.value) : i?.value == value\n );\n\n if ((Array.isArray(isInOptions) && isInOptions?.length > 0)) {\n getSelectedData?.(multiple ? isInOptions : isInOptions[0]);\n hasOptions = true;\n }\n\n return hasOptions;\n }, [JSON.stringify(filteredOptions), value, multiple]);\n\n // Fetch Options for Selected Id\n const fetchIdOptions = useCallback(async () => {\n if (await setSelectedData()) return;\n if (open) return;\n\n const fValue = multiple ? value && value?.filter(v => Boolean(Number(v))) : value ? value : null;\n const condition = (multiple ? fValue?.length > 0 : fValue) && !isInternalOptions;\n\n if (condition) {\n setInitialLoading(true);\n await fetchOptions('', { ...customeFilter, ...{ '&id.in': fValue } }, 1, false);\n setInitialLoading(false);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, value, JSON.stringify(customeFilter)]);\n\n const hasValue = multiple\n ? Array.isArray(value) && value.length > 0\n : value !== null && value !== undefined && value !== \"\";\n\n // Effects\n useEffect(() => {\n if (open) {\n debounceSearch(searchQuery);\n }\n return () => debounceSearch.cancel();\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchQuery, JSON.stringify(customeFilter), open, isAlreadyLoaded, debounceSearch]);\n\n useEffect(() => {\n setSelectedData();\n }, [setSelectedData]);\n\n useEffect(() => {\n fetchIdOptions();\n }, [fetchIdOptions]);\n\n useEffect(() => {\n if (open) {\n initialFetch();\n }\n }, [open, initialFetch]);\n\n useEffect(() => {\n const condition = JSON.stringify(customeFilter) !== JSON.stringify(prevFilter);\n if (customeFilter && condition) {\n setIsAlreadyLoaded(false);\n }\n }, [customeFilter, prevFilter]);\n\n useEffect(() => {\n if (value && !open) {\n const currentOptions: IOption[] = (options && options.length > 0) ? options : [];\n const selectedData = currentOptions?.filter((i: any) =>\n multiple ? value?.includes(i?.value) : i?.value == value\n ) || [];\n setSelectedOptions(selectedData);\n }\n setSelectedOptions(filteredOptions?.filter((i: any) =>\n multiple ? value?.includes(i?.value) : i?.value == value\n ));\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, open, options, multiple]);\n\n const handleModalOpen = useCallback(() => {\n setIsModalOpen(true);\n }, []);\n\n // Handle modal save\n const handleModalSave = useCallback(async (payload: any) => {\n if (!addConfig || !addConfig.api) {\n console.error('Add configuration is not properly set');\n return;\n }\n\n setIsAddLoading(true);\n try {\n const result = await addConfig.api(payload);\n setIsAddLoading(false);\n setIsModalOpen(false);\n if (!isInternalOptions) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n setIsAlreadyLoaded(false);\n await fetchOptions('', customeFilter, 1, false);\n }\n if (result && result.data) {\n const newValue = multiple\n ? [...(value || []), result.data.id]\n : result.data.id;\n }\n } catch (error) {\n console.log(\"error\", error);\n setIsAddLoading(false);\n }\n\n\n }, [addConfig, isInternalOptions, fetchOptions, customeFilter, multiple, name, value]);\n\n useEffect(() => {\n const config = dynamicSelectAdd(addType!);\n setAddConfig(config);\n }, [addType])\n\n const handleOnChange = (event: any) => {\n const { value } = event.target;\n if ((multiple && Array.isArray(value) && value?.filter(v => v).length == 0) || !value) return;\n\n const isSelected = (item: any) => {\n return multiple ? value?.includes(item?.value) : item?.value === value;\n };\n\n const selected = filteredOptions?.filter(isSelected);\n onChange?.(event, multiple ? selected : selected?.[0]);\n getSelectedData?.(multiple ? selected : selected?.[0]);\n\n };\n\n const removeUndefine = (selectOptions: any[]) => {\n return Array.isArray(selectOptions) && selectOptions?.length > 0 && selectOptions?.filter((option) => option);\n };\n\n const showGroupLabel = (item: any) => {\n if (!item?.length) {\n return undefined\n }\n const mergedOptions = item?.flatMap((i: any) => i?.options)\n return mergedOptions?.find((option: any) => option?.value === value)?.label\n }\n\n return (\n <Select\n labelId={labelId}\n name={name}\n defaultValue={defaultValue || (multiple ? [] : '')}\n placeholder={t(placeholder)}\n className=\"filter-select\"\n size={size}\n onOpen={() => setOpen(true)}\n onClose={() => {\n setOpen(false);\n if (searchQuery?.length > 0) {\n setIsAlreadyLoaded(false);\n }\n setSearchInitiate(false);\n setSearchQuery('');\n }}\n onChange={handleOnChange}\n showCancelButton={showCancelButton}\n multiple={multiple}\n label={t(label)}\n fullWidth\n displayEmpty\n autoFocus={autoFocus}\n error={Boolean(error)}\n disabled={disabled}\n value={initailLoading ? (multiple ? [] : '') : value?.id || value || (multiple ? [] : '')}\n searchPlaceholder={searchPlaceholder}\n CustomDropdownIcon={CustomDropDownIcon}\n sx={(multiple && value?.length) ? { ...customStyle, \"& .MuiSelect-select\": { padding: '5.5px !important' } } : customStyle}\n MenuProps={{\n PaperProps: {\n onScroll: handleScroll,\n style: { maxHeight: 295, maxWidth: 250 }\n }\n }}\n input={\n !disabled ? (\n <OutlinedInput\n label=\"\"\n sx={inputStyle}\n endAdornment={\n <InputAdornment position=\"end\">\n {loading || is_loading ? (\n <CircularProgress\n size={20}\n sx={{ mr: 3, color: \"#4AC08C\" }}\n />\n ) : (\n showCancelButton && hasValue && (\n <IconButton\n aria-label=\"clear selection\"\n onClick={handleClear}\n edge=\"end\"\n sx={isRtl ? { ml: 2.5 } : { mr: 1.5 }}\n size=\"small\"\n >\n <Close fontSize=\"small\" color='theme.primary.800' />\n </IconButton>\n )\n )}\n </InputAdornment>\n }\n />\n ) : undefined\n }\n renderValue={(selected?: string | string[]) => {\n return (\n <>\n {Array.isArray(selected) ? (\n <ChipOrPlaceholder\n selectedLabel={selectedLabel}\n data={removeUndefine(selected)}\n placeholder={placeholder}\n onDelete={onChipRemove}\n disabled={disabled}\n chipProps={{\n sx: {\n bgcolor: 'theme.primary.100',\n border: 0,\n // borderRadius: '15px',\n '& .MuiTypography-body1': {\n color: 'theme.primary.800',\n fontWeight: \"500\",\n }\n }\n }}\n />\n ) : (\n hasParent ? showGroupLabel(filteredOptions) :\n Array.isArray(filteredOptions) && filteredOptions?.length > 0 && filteredOptions?.find(\n (option: any) => option?.value == value\n )?.label || selected || placeholder\n )}\n </>\n );\n }}\n handleSearch={(text) => {\n setSearchQuery(text);\n setSearchInitiate(true);\n }}\n >\n {generateMenuItems({\n options: filteredOptions,\n multiple: Boolean(multiple),\n placeholder,\n values: value,\n with_checkboxes: true,\n field: {\n ...props,\n enable_footer,\n onFooterClick,\n label,\n handleModalOpen\n },\n disabledIds,\n handleClear,\n handleChange,\n hasParent,\n t: (key: string) => key\n })}\n {pagination.isLoadingMore && (\n <MenuItem disabled>\n <Box sx={{ display: 'flex', justifyContent: 'center', width: '100%' }}>\n <CircularProgress size={20} />\n </Box>\n </MenuItem>\n )}\n {/* Modal for adding new items */}\n {addConfig && addConfig.component && (\n <>\n {React.createElement(addConfig.component, {\n isOpen: isModalOpen,\n setIsOpen: setIsModalOpen,\n isLoading: isAddLoading,\n onSave: handleModalSave,\n modalProps: {\n maxWidth: 'md',\n fullWidth: true\n },\n ...props?.modalComponentProps\n })}\n </>\n )}\n </Select>\n );\n};\n\nexport default SearchableSelect;"],"names":["generateMenuItems","jsx","MenuItem","Typography","jsxs","Box","Checkbox","Chip","MoreIcon","useWatch","useApi","useFormContext","useCallback","_a","useTranslation","useLanguage","useAuth","useMemo","auth","useRef","useState","useDefaultConfig","filteredOptions","sortBy","fetchApi","updateOptions","debounce","useEffect","Controller","Fragment","Tooltip","Select","ChipOrPlaceholder","text","OutlinedInput","InputAdornment","CircularProgress","IconButton","Close","Divider","Add","validationSchema","col","row","yup","_b","valueKey","_c","_d","_f","_e","TextField","DatePicker","DateTimePicker","UploadMedia","PhoneInput","styled","usePages","useDeepMemo","useNavigate","PathnameAccounting","PathnameInventory","PathnameManufacturing","PathnamePurchase","PathnameCrm","PathnameUsers","PathnameRental","PathnameDocument","PathnameHrms","validations","validation","columns","useMaterialReactTable","table","images","Button","cloneElement","enqueueSnackbar","Edit","Trash","RecgtangleIcon","CheckBoxIcon","ArrowUpDown","Save","rows","MaterialReactTable","Menu","ListItemIcon","ListItemText","SearchBar","ConfirmPopUp","useDispatch","getApiConfigSafe","useForm","generateValidationSchema1","PARTIES_FIELDS","useAccountingSetting","PARTIES_FORM_ARRAY_NAME","checkUniqueFields","transformTableColumns","phone","addressPayload","contactPayload","type","_","t","processPartiesPayload","createParties","getErrorMessage","addressOmitKeys","contactOmitKeys","Accordion","Grid","DynamicRadioButton","partyType","DynamicInput","DynamicPhone","addressColumns","contactColumns","Modal","ModalLoader","DialogTitle","DialogContent","DialogActions","Yup","getDefaultValues","yupResolver","DynamicToggleButton","toast","Toast","skuGenerator","fetchOptions","FormProvider","DynamicSelect","api","getToken","postV1WarehouseLocation","postV1Parties","postV1Departments","postV1DepartmentsTeams","postV1Designation","postV1InventoryFixedAssetItems","postV1Brand","BrandAddModal","postV1CategoryItems","CategoryAddModal","postV1PartiesIndustry","IndustryAddModal","postV1SourceTypes","SourceTypeAddModal","postV1JournalTypes","JournalTypeAddModal","postV1PaymentTerms","index","value","label","error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"searchable-select--dhEG2CL.js","sources":["../../src/components/form-control/form-builder/form-builder-element/dynamic-select.tsx","../../src/components/material-table/components/inline-edit-fields.tsx","../../src/components/material-table/material-table.tsx","../../src/components/parties-modal/parties-modal.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/payment-term-add-modal.tsx","../../src/components/form-control/form-builder/form-builder-element/select-configuration.tsx","../../src/components/searchable-select.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Controller, useFormContext, useWatch, Control } from 'react-hook-form';\nimport { dynamicSelectAdd } from './select-configuration';\nimport {\n Box,\n CircularProgress,\n Divider,\n IconButton,\n InputAdornment,\n MenuItem,\n MenuItemProps,\n OutlinedInput,\n Tooltip\n} from '@mui/material';\nimport { debounce } from 'lodash';\nimport { sortBy } from \"lodash\";\nimport { useTranslation } from \"react-i18next\";\nimport { Add, Close } from '@mui/icons-material';\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 { fetchApi } from '../../../../utils/api';\nimport './element.scss';\nimport { useAuth } from '@/contexts';\nimport { useApi, useLanguage } from '@/hooks';\nimport { useDefaultConfig } from '@/hooks/useSetDefaultConfig';\nimport { auth } from '../../../../constants/auth';\n\n\ninterface DynamicSelectProps {\n formControl: any;\n fieldArrayName: string;\n name: string;\n label?: string;\n placeholder?: string;\n defaultValue?: any;\n required?: boolean;\n disabled?: boolean;\n hidden?: boolean;\n options?: Array<{ label: string; value: any }>;\n multiple?: boolean;\n searchable?: boolean;\n onSearch?: (query: string) => void;\n}\n\n// Types\ninterface IOption {\n id: string | number;\n value: string | number;\n label: string | React.ReactNode;\n disabled?: boolean;\n isGroup?: boolean;\n options?: IOption[];\n searchLabel?: string;\n}\n\n// Custom API fetch function type for parent components\ninterface CustomFetchApiParams {\n search?: string;\n filters?: any;\n limit: number;\n skip: number;\n select?: string;\n order?: string;\n}\n\ninterface CustomFetchApiResponse {\n data: IOption[];\n pagination?: {\n totalCount: number;\n };\n}\n\ninterface IMenuItemsProps extends MenuItemProps {\n options: IOption[];\n multiple: boolean;\n placeholder: string;\n with_checkboxes: boolean;\n values: string | string[];\n field: IDynamicSearchSelectProps;\n disabledIds: (string | number)[];\n onChange: (value: string | string[]) => void;\n handleChange?: (value: string | string[]) => void;\n hasParent: boolean;\n t: (key: string) => string;\n // onFooterClick?: () => void;\n}\n\ninterface IDynamicSearchSelectProps {\n name: string;\n placeholder: string;\n label: string;\n size?: 'small' | 'medium';\n options: IOption[];\n formControl: Control<any>;\n defaultValue?: string | string[];\n fieldArrayName: string;\n id?: string;\n required?: boolean;\n is_multiselect?: boolean;\n position?: number;\n formType?: string;\n typeOfField?: string;\n disabled?: boolean;\n onChipRemove?: (value: string) => void;\n enable_footer?: boolean;\n footer_action?: string;\n onFooterClick?: () => void;\n is_loading?: boolean;\n selectedLabel?: string;\n isInternal?: boolean;\n disabledIds?: (string | number)[];\n getSelectedData?: (data: IOption | IOption[] | null, name: string) => void;\n attributes?: string[];\n handleChange?: (value: string | string[]) => void;\n hasParent?: boolean;\n sortOrder?: string;\n apiType?: string;\n handleOptions?: (value: any) => void;\n filterKey?: string;\n customeFilter?: Record<string, any>;\n refresh?: boolean;\n addType?: string;\n showCancelButton?: boolean;\n /** Custom API function to fetch options from parent component */\n customFetchApi?: (params: CustomFetchApiParams) => Promise<CustomFetchApiResponse>;\n isMergeOptions?: boolean;\n showItemTooltip?: boolean;\n modalComponentProps?: any;\n}\n\ninterface IPaginationState {\n page: number;\n hasMore: boolean;\n isLoadingMore: boolean;\n total: number;\n}\n\n// Helper function to generate menu items\nconst generateMenuItems = ({\n options,\n multiple,\n placeholder,\n with_checkboxes,\n values,\n // field,\n disabledIds,\n onChange,\n handleChange,\n hasParent,\n t,\n // onFooterClick\n}: IMenuItemsProps): React.ReactElement[] => {\n const itemDisabled = (id: string | number) => disabledIds?.includes(id);\n const items: React.ReactElement[] = [];\n\n if (!multiple) {\n items.push(\n <MenuItem disabled value='' key=\"placeholder\" sx={{ opacity: `0 !important`, height: `0 !important`, p: `0 !important`, m: `0 !important` }}>\n <Typography type='s3' color='theme.secondary.1000'>\n <em>{t(placeholder)}</em>\n </Typography>\n </MenuItem>\n );\n }\n const selectedValues = (Array.isArray(values) && values?.length > 0) ? values?.filter((value) => value) : values;\n\n const handleParentChange = (parentValue: string, childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n\n const isParentSelected = valueArray.includes(parentValue);\n const updatedValues = isParentSelected\n ? valueArray.filter((value) => value !== parentValue && !childValues.includes(value))\n : [...new Set([...valueArray, parentValue, ...childValues])];\n\n onChange(updatedValues);\n handleChange?.(updatedValues);\n };\n\n const isAllOptionsSelected = (parentValue: string, childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n return childValues.every((childValue) => valueArray.includes(childValue));\n };\n\n const isSomeOptionsSelected = (childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n return childValues.some((childValue) => valueArray.includes(childValue));\n };\n\n if (Array.isArray(options) && options.length > 0) {\n options.forEach((option) => {\n items.push(\n <MenuItem\n value={option.value}\n key={option.value}\n disabled={Boolean(option.disabled) || itemDisabled(option.id || option.value)}\n className={option.isGroup ? 'select--MenuItemHeader' : ''}\n >\n <Box sx={{ display: 'flex', gap: 1 }}>\n {multiple && with_checkboxes && (\n <Checkbox\n checked={\n hasParent\n ? isAllOptionsSelected(option.value, option.options || [])\n : Boolean(Array.isArray(selectedValues) ? selectedValues.includes(option.value) : selectedValues == option.value)\n }\n indeterminate={\n hasParent && isSomeOptionsSelected(option.options || [])\n }\n onChange={() => hasParent ? handleParentChange(option.value, option.options || []) : handleChange?.(option.value)}\n />\n )}\n <Typography\n type='s3'\n color='theme.secondary.1000'\n onClick={() => handleChange?.(option.value)}\n >\n {option.label}\n </Typography>\n </Box>\n </MenuItem>\n );\n\n if (option.isGroup && Array.isArray(option.options)) {\n option.options.forEach((opt) => {\n items.push(\n <MenuItem\n value={opt.value}\n disabled={Boolean(opt.disabled) || itemDisabled(opt.id || opt.value)}\n sx={{ pl: 5 }}\n key={`${option.value}-${opt.value}`}\n >\n <Box sx={{ display: 'flex', gap: 1 }}>\n {multiple && with_checkboxes && (\n <Checkbox\n checked={Boolean(Array.isArray(values) && values.includes(opt.value))}\n />\n )}\n <Typography\n type='s3'\n color='theme.secondary.1000'\n onClick={() => handleChange?.(String(opt.value))}\n >\n {opt.label == \"Payment Entries\" ? \"Payment and Collection Entries\" : opt.label || opt.value}\n </Typography>\n </Box>\n </MenuItem>\n );\n });\n }\n });\n }\n\n // if (field.enable_footer) {\n\n // }\n\n if (!items.length || (items.length == 1 && !multiple)) {\n items.push(\n <MenuItem disabled key=\"no-data\">\n No data available\n </MenuItem>\n );\n }\n\n return items;\n};\n\n// Selected items component\nconst SelectedItems: React.FC<{\n data: (string | number)[];\n options: IOption[];\n}> = ({ data, options }) => {\n const displayTitle = data.map(\n (selectedItem) =>\n options?.find((option) => option.value == selectedItem)?.label || ''\n );\n const filteredDisplayTitle = displayTitle.filter(Boolean);\n\n return (\n <Typography\n type='s4'\n color='inherit'\n sx={{ display: 'flex', gap: 1, alignItems: 'center', mt: 0.5 }}\n >\n {filteredDisplayTitle.slice(0, 4).join(', ')}\n {data.length > 4 && (\n <Chip variant='outlined' type='normal' label={<MoreIcon />} />\n )}\n </Typography>\n );\n};\n\nconst Loading = () => (\n <Typography fontStyle='italic' color='inherit' type='s3'>Loading...</Typography>\n)\n\nconst DynamicSearchSelect: React.FC<IDynamicSearchSelectProps> = React.memo((props) => {\n const watchedValue = useWatch({\n control: props.formControl,\n name: `${props.fieldArrayName}.${props.name}`\n });\n\n const { callApi } = useApi()\n // In MFE mode each federated module ships its own copy of react-hook-form,\n // so the FormContext created by the host's FormProvider is invisible here\n // and useFormContext() returns null.\n // The internal `control` object (passed as formControl prop) does NOT expose\n // setValue — that lives only on the useForm() return value. We build a\n // stable fallback using useCallback so that useDefaultConfig's useEffect\n // (which has setValue as a dependency) does NOT re-fire on every render.\n const formContext = useFormContext();\n const { setValue: contextSetValue } = formContext || {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const mfeFallbackSetValue = useCallback((fieldPath: string, value: any) => {\n const ctrl = props.formControl as any;\n if (!ctrl) return;\n // Write into internal form values\n const parts = fieldPath.split('.');\n let obj = ctrl._formValues;\n for (let i = 0; i < parts.length - 1; i++) {\n if (!obj[parts[i]]) obj[parts[i]] = {};\n obj = obj[parts[i]];\n }\n obj[parts[parts.length - 1]] = value;\n // Notify RHF subscribers so React re-renders\n ctrl._subjects?.state?.next({ name: fieldPath, values: { ...ctrl._formValues } });\n // props.formControl is stable for the lifetime of the form\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.formControl]);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const setValue: any = contextSetValue ?? mfeFallbackSetValue;\n const { t } = useTranslation();\n const { isRtl } = useLanguage();\n const { user: authUser } = useAuth();\n const contextUser = useMemo(() => {\n if (authUser) return authUser;\n try {\n const stored = window.localStorage.getItem(auth.storageUserKeyName);\n return stored ? JSON.parse(stored) : null;\n } catch {\n return null;\n }\n }, [authUser]);\n const selectRef = useRef<HTMLDivElement>(null);\n\n // State management\n const [options, setOptions] = useState<IOption[]>([]);\n const [selectedValue, setSelectedValue] = useState<any>(null);\n const [selectedOptions, setSelectedOptions] = useState<IOption[]>([]);\n const [loading, setLoading] = useState<boolean>(false);\n const [open, setOpen] = useState<boolean>(false);\n const [isAlreadyLoaded, setIsAlreadyLoaded] = useState<boolean>(false);\n const [prevFilter, setPrevFilter] = useState<any>(null);\n const [initialLoading, setInitialLoading] = useState<boolean>(false);\n const [searchQuery, setSearchQuery] = useState<string>(\"\");\n const [searchInitiate, setSearchInitiate] = useState<boolean>(false);\n const [addConfig, setAddConfig] = useState<any>(null);\n\n // Modal states\n const [isModalOpen, setIsModalOpen] = useState<boolean>(false);\n const [isAddLoading, setIsAddLoading] = useState<boolean>(false);\n\n\n // Pagination state\n const [pagination, setPagination] = useState<IPaginationState>({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n\n // Props destructuring with defaults\n const {\n handleOptions,\n isInternal = false,\n disabledIds = [],\n getSelectedData,\n attributes = [],\n filterKey = 'id',\n customeFilter = {},\n refresh,\n handleChange,\n hasParent = false,\n sortOrder = 'id:-1',\n apiType,\n addType,\n showCancelButton = true,\n customFetchApi,\n isMergeOptions = false,\n } = props;\n\n const showItemTooltip = props.showItemTooltip ?? (apiType === 'salesItems');\n\n const limit = 25;\n\n // Memoized values\n // Memoized values\n const isInternalOptions = useMemo(() => {\n if (isMergeOptions && (apiType || customFetchApi)) return false;\n return (!apiType && !customFetchApi) || (isInternal ? (apiType || customFetchApi) && props.options?.length == 0 ? false : true : false);\n }, [isInternal, apiType, customFetchApi, props.options?.length, isMergeOptions]);\n\n\n //eslint-disable-next-line\n const cf = useMemo(() => customeFilter, [JSON.stringify(customeFilter)]);\n\n\n\n\n const { defaultOptions = [] } = useDefaultConfig({\n props,\n setValue,\n isInternalOptions,\n watchedValue\n });\n\n\n // Local search function\n const searchOptionsLocally = useCallback((searchTerm: string, value: any): IOption[] => {\n const currentOptions: IOption[] = (props.options && props.options.length > 0) ? props.options : (defaultOptions || []);\n if (!searchTerm) return currentOptions;\n\n const lowercasedSearchTerm = searchTerm.toLowerCase();\n\n const filteredOptions = hasParent\n ? currentOptions?.reduce((acc: IOption[], opt: IOption) => {\n const searchedOptions = opt.options?.filter((item: IOption) => {\n const label = React.isValidElement(item.label) ? item.searchLabel : String(item.label);\n return label?.toLowerCase().includes(lowercasedSearchTerm);\n });\n\n if (searchedOptions?.length) {\n acc.push({ ...opt, options: searchedOptions });\n }\n\n return acc;\n }, []) || []\n : currentOptions?.filter((opt: IOption) => {\n const label = React.isValidElement(opt.label) ? opt.searchLabel : String(opt.label);\n return label?.toLowerCase().includes(lowercasedSearchTerm);\n }) || [];\n\n //eslint-disable-next-line\n return sortBySelectedValues(filteredOptions, value);\n //eslint-disable-next-line\n }, [props.options, hasParent, defaultOptions]);\n\n // Get unique options\n const getUniqueOptions = useCallback((data: IOption[]): IOption[] => {\n const uniqueOptions = [\n ...new Map(data?.map(item => [item.value, item])).values()\n ];\n return uniqueOptions;\n }, []);\n\n // Sort by selected values\n const sortBySelectedValues = useCallback((arrayToSort: IOption[], value: any): IOption[] => {\n let selectedValues = Array.isArray(value) ? value : [value];\n selectedValues = selectedValues.map((item) => Number(item));\n const sortedValue = sortBy(arrayToSort, (item) => {\n const index = selectedValues.indexOf(item.id || item.value);\n return index == -1 ? Infinity : index;\n });\n return sortedValue;\n }, []);\n\n // Filtered options with pagination support\n const filteredOptions = useMemo(() => {\n if (isInternalOptions) {\n return searchOptionsLocally(searchQuery, watchedValue);\n }\n const apiOptions = sortBySelectedValues(getUniqueOptions([...options, ...selectedOptions]), watchedValue);\n if (isMergeOptions) {\n const localOptions = searchOptionsLocally(searchQuery, watchedValue);\n return getUniqueOptions([...localOptions, ...apiOptions]);\n }\n return apiOptions;\n //eslint-disable-next-line\n }, [options, selectedOptions, isInternalOptions, props.options, watchedValue, searchQuery, searchOptionsLocally, sortBySelectedValues, getUniqueOptions, isMergeOptions]);\n\n // Helper to get selected item data for tooltip\n const getSelectedDataOptions = useMemo(() => {\n if (!watchedValue || !filteredOptions.length) return null;\n const selected = filteredOptions.find(opt =>\n opt.id === watchedValue || opt.value === watchedValue\n );\n return selected || null;\n }, [watchedValue, filteredOptions]);\n\n // API Functions\n const fetchOptions = useCallback(async (searchTerm = '', flt = cf, page = 1, append = false) => {\n // Skip if neither apiType nor customFetchApi is provided\n if (!apiType && !customFetchApi) return [];\n\n setLoading(true);\n if (page > 1) {\n setPagination(prev => ({ ...prev, isLoadingMore: true }));\n }\n\n try {\n let data: IOption[] = [];\n let paginationResult: { totalCount?: number } = {};\n\n // Use custom API if provided, otherwise use default fetchApi\n if (customFetchApi) {\n const response = await customFetchApi({\n search: searchTerm,\n filters: flt,\n limit,\n skip: (page - 1) * limit,\n select: attributes?.join(','),\n order: sortOrder\n });\n data = response?.data || [];\n paginationResult = response?.pagination || {};\n } else {\n const response = await fetchApi({\n apiKey: apiType!,\n filters: {\n limit,\n skip: (page - 1) * limit,\n search: searchTerm,\n filters: flt,\n select: attributes,\n order: sortOrder\n }\n });\n data = response?.data || [];\n paginationResult = response?.pagination || {};\n }\n\n if (data && Array.isArray(data)) {\n const newOptions = append ? [...options, ...data] : data;\n\n updateOptions(newOptions, append);\n handleSelectedValue(data);\n // Update pagination\n setPagination(prev => ({\n ...prev,\n page,\n hasMore: (paginationResult?.totalCount || 0) > (page * limit),\n total: paginationResult?.totalCount || 0,\n isLoadingMore: false\n }));\n }\n\n return data || [];\n } catch (error) {\n console.error('Error fetching options:', error);\n setPagination(prev => ({ ...prev, isLoadingMore: false }));\n return [];\n } finally {\n setLoading(false);\n }\n //eslint-disable-next-line\n }, [apiType, customFetchApi, options, attributes, sortOrder, limit, cf]);\n\n // Handle scroll pagination\n const handleScroll = useCallback((event: React.UIEvent<HTMLDivElement>) => {\n const { scrollTop, scrollHeight, clientHeight } = event.currentTarget;\n const isBottom = scrollHeight - scrollTop <= clientHeight + 10;\n\n if (isBottom && pagination.hasMore && !pagination.isLoadingMore && !isInternalOptions) {\n const nextPage = pagination.page + 1;\n fetchOptions(searchQuery, cf, nextPage, true);\n }\n }, [pagination.hasMore, pagination.isLoadingMore, pagination.page, isInternalOptions, searchQuery, cf, fetchOptions]);\n\n // Update options\n const updateOptions = useCallback((newOptions: IOption[], append = false) => {\n const oldOptions = append ? options : selectedOptions;\n const uniqueOptions = getUniqueOptions([...oldOptions, ...newOptions]);\n setOptions(uniqueOptions);\n }, [options, selectedOptions, getUniqueOptions]);\n\n // Handle selected value\n const handleSelectedValue = useCallback(async (updateOptions: IOption[]) => {\n if (!watchedValue) return;\n let filterValue = props.is_multiselect ? watchedValue : [watchedValue];\n filterValue = Array.isArray(filterValue) ? filterValue?.filter(i => i) : [];\n filterValue = Array.isArray(filterValue) ? filterValue?.map((item) => Number(item)) : [];\n const isInOptions = updateOptions?.filter((item) =>\n Array.isArray(filterValue) ? filterValue.includes(item.id || item.value) : (item[filterKey] || item.value || item.id) == filterValue\n );\n\n if (Array.isArray(isInOptions) && isInOptions.length > 0) {\n getSelectedData?.(props.is_multiselect ? isInOptions : isInOptions[0], props.name);\n return true;\n }\n return false;\n //eslint-disable-next-line\n }, [props.is_multiselect, props.name, watchedValue, filterKey, getSelectedData, filteredOptions]);\n\n // Fetch options by ID\n const fetchIdOptions = useCallback(async () => {\n if (open) return;\n if (await handleSelectedValue(filteredOptions)) return;\n\n const condition = props.is_multiselect ?\n Array.isArray(watchedValue) && watchedValue.length > 0 :\n Boolean(watchedValue);\n\n if (condition) {\n setInitialLoading(true);\n const response = await fetchOptions('', { ...cf, '&id.in': watchedValue }, 1, false);\n setInitialLoading(false);\n\n if (response.length == 0 && setValue && !isInternalOptions) {\n // setValue(`${props.fieldArrayName}.${props.name}`, props.is_multiselect ? [] : null);\n }\n }\n //eslint-disable-next-line\n }, [open, watchedValue, JSON.stringify(cf)]);\n\n // Initial fetch\n const initialFetch = useCallback(async () => {\n const condition = JSON.stringify(cf) !== JSON.stringify(prevFilter);\n\n if (condition) {\n setPrevFilter(cf);\n setOptions([]);\n setIsAlreadyLoaded(false);\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n }\n\n if (!isInternalOptions && !isAlreadyLoaded) {\n await fetchOptions(searchQuery, cf, 1, false);\n setIsAlreadyLoaded(true);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [cf, isInternalOptions, isAlreadyLoaded]);\n\n // Debounced search\n const debouncedSearch = useMemo(\n () => debounce(async (searchTerm: string) => {\n if (loading) return;\n\n if (!searchTerm && !isInternalOptions && searchInitiate) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n await fetchOptions('', cf, 1, false);\n }\n if (searchTerm.length > 1 && !isInternalOptions) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n await fetchOptions(searchTerm, cf, 1, false);\n }\n }, 700),\n //eslint-disable-next-line\n [isInternalOptions, searchInitiate, cf]\n );\n\n // Reset value function\n const resetValue = useCallback((field: any) => {\n field.onChange(props.is_multiselect ? [] : null);\n if (getSelectedData) {\n getSelectedData(null, props.name);\n }\n }, [props.is_multiselect, props.name, getSelectedData]);\n\n // Handle close\n const handleClose = useCallback(() => {\n setOpen(false);\n if (searchQuery.length > 0) {\n setIsAlreadyLoaded(false);\n }\n setSearchInitiate(false);\n setSearchQuery('');\n }, [searchQuery]);\n\n const handleModalOpen = useCallback(() => {\n setIsModalOpen(true);\n }, []);\n\n\n\n // Handle modal save\n const handleModalSave = useCallback(async (payload: any) => {\n if (!addConfig || !addConfig.api) {\n console.error('Add configuration is not properly set');\n return;\n }\n\n\n callApi({\n apiFunc: () => addConfig.api(payload),\n successMessage: `${props.label} ${t('common.added_successfully')}`,\n loadingState: setIsAddLoading,\n onSuccess: async (result) => {\n setIsModalOpen(false);\n if (!isInternalOptions) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n setIsAlreadyLoaded(false);\n await fetchOptions('', cf, 1, false);\n }\n if (result && result.data) {\n const newValue = props.is_multiselect\n ? [...(watchedValue || []), result.data.id]\n : result.data.id;\n setValue(`${props.fieldArrayName}.${props.name}`, newValue);\n if (getSelectedData) {\n getSelectedData(result.data, props.name, true);\n }\n }\n },\n onError: () => {\n setIsAddLoading(false);\n }\n })\n\n\n\n }, [addConfig, isInternalOptions, fetchOptions, cf, props.is_multiselect, props.fieldArrayName, props.name, watchedValue, setValue]);\n\n // Effects\n useEffect(() => {\n if (handleOptions) {\n handleOptions(selectedValue);\n }\n }, [handleOptions, selectedValue]);\n\n useEffect(() => {\n if (open) {\n initialFetch();\n }\n }, [open, initialFetch]);\n\n useEffect(() => {\n fetchIdOptions();\n }, [fetchIdOptions]);\n\n useEffect(() => {\n if (refresh) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n fetchOptions('', cf, 1, false);\n }\n }, [refresh, fetchOptions, cf]);\n\n useEffect(() => {\n if (open) {\n debouncedSearch(searchQuery);\n }\n return () => debouncedSearch.cancel();\n }, [searchQuery, open, debouncedSearch]);\n\n useEffect(() => {\n if (watchedValue && !open) {\n const selectedData = options?.filter((item) =>\n props.is_multiselect ?\n Array.isArray(watchedValue) && watchedValue.includes(item.id || item.value) :\n (item.id || item.value) == watchedValue\n );\n setSelectedOptions(selectedData || []);\n }\n }, [watchedValue, options, props.is_multiselect]);\n\n const removeUndefined = useCallback((selectOptions: any[]) => {\n return Array.isArray(selectOptions) ? selectOptions.filter(Boolean) : [];\n }, []);\n\n useEffect(() => {\n const config = dynamicSelectAdd(addType);\n setAddConfig(config);\n }, [addType])\n\n\n\n return (\n <Controller\n control={props.formControl}\n name={`${props.fieldArrayName}.${props.name}`}\n render={({ field, fieldState }) => (\n <>\n {props.placeholder == 'Select Currency' && setSelectedValue(field.value)}\n {showItemTooltip ? (\n <Tooltip\n title={getSelectedDataOptions?.label ? String(getSelectedDataOptions.label) : ''}\n placement='top'\n arrow\n slotProps={{\n popper: {\n modifiers: [{ name: 'offset', options: { offset: [0, -25] } }],\n },\n tooltip: {\n sx: { maxWidth: 500 },\n },\n }}\n >\n <span>\n <Select\n {...field}\n ref={selectRef}\n open={open}\n onOpen={() => {\n setOpen(true);\n setTimeout(() => {\n const searchInput = document.querySelector(\n `input[placeholder=\"Search ${props.label}\"]`\n ) as HTMLInputElement;\n console.log('Active Search input:', searchInput);\n searchInput?.focus();\n }, 150);\n }}\n onClose={handleClose}\n fullWidth\n dataPosition={props.position}\n dataName={`${props.fieldArrayName}.${props.name}`}\n placeholder={props.placeholder}\n label={props.label}\n defaultValue={props.defaultValue || (props.is_multiselect ? [] : '')}\n searchValue={searchQuery}\n required={props.formType == 'builder' ? false : props.required}\n size={props.size || 'small'}\n multiple={props.is_multiselect || false}\n disabled={props.disabled}\n sx={(props.is_multiselect && field?.value?.length) ? { \"& .MuiSelect-select\": { padding: '5.5px !important' } } : {}}\n variant='outlined'\n value={\n initialLoading\n ? (props.is_multiselect ? [] : '')\n : (field.value?.id || field.value || (props.is_multiselect ? [] : ''))\n }\n className={\n props.is_multiselect && removeUndefined(field.value)?.length\n ? 'MultiSelect filter-select'\n : ''\n }\n MenuProps={{\n PaperProps: {\n onScroll: handleScroll,\n style: { maxHeight: 300 }\n }\n }}\n\n renderValue={(selected: any) => {\n if (Array.isArray(selected)) {\n return (\n <ChipOrPlaceholder\n selectedLabel={props.selectedLabel}\n data={removeUndefined(selected)}\n placeholder={(loading || props.is_loading) ? <Loading /> : `${t('common.search')} ${props.label}`}\n onDelete={props.onChipRemove}\n disabled={props.disabled}\n chipProps={{\n sx: {\n background: '#ebf9f2',\n border: 0,\n // borderRadius: '15px',\n '& .MuiTypography-body1': {\n color: '#289b64',\n fontWeight: \"500\",\n }\n }\n }}\n />\n );\n } else {\n const selectedOption = filteredOptions.find(\n (option) => (option.value?.id || option.value) == selected\n );\n return (loading || props.is_loading) ? <Loading /> : selectedOption?.label ||\n (typeof props.label == 'string' ?\n `${t('common.search')} ${props.label}` :\n props.placeholder);\n }\n }}\n searchPlaceholder={`${t('common.search')} ${props.label}`}\n handleSearch={(text: string) => {\n setSearchQuery(text);\n setSearchInitiate(true);\n }}\n error={Boolean(fieldState.error?.message)}\n helperText={fieldState.error?.message || ''}\n onBlur={field.onBlur}\n input={\n <OutlinedInput\n label=''\n endAdornment={\n <InputAdornment position='end'>\n {(loading || props.is_loading) ? (\n <CircularProgress\n size={20}\n sx={{ mr: 3, color: \"#4AC08C\" }}\n />\n ) : (\n !props.disabled &&\n (props.is_multiselect ?\n (Array.isArray(field.value) && field.value.length > 0) :\n Boolean(field.value)) && showCancelButton && (\n <IconButton\n aria-label='clear selection'\n onClick={() => resetValue(field)}\n edge='end'\n sx={isRtl ? { ml: 2.5 } : { mr: 1.5 }}\n size='small'\n >\n <Close sx={{ fontSize: '1rem' }} />\n </IconButton>\n )\n )}\n </InputAdornment>\n }\n />\n }\n >\n {generateMenuItems({\n options: filteredOptions,\n multiple: Boolean(props.is_multiselect),\n placeholder: props.placeholder,\n values: field.value,\n with_checkboxes: true,\n field: props,\n disabledIds,\n onChange: field.onChange,\n handleChange,\n hasParent,\n t,\n // onFooterClick: () => {\n // if (props?.onFooterClick) {\n // props?.onFooterClick();\n // } else {\n // handleModalOpen();\n // }\n // }\n })}\n {props?.enable_footer &&\n <Box key=\"footer\" sx={{ position: 'sticky', bottom: 0, background: '#fff', zIndex: 1 }}>\n <Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n <MenuItem sx={{ gap: 1 }} onClick={\n () => {\n if (props?.onFooterClick) {\n props?.onFooterClick();\n } else {\n handleModalOpen();\n }\n }\n\n }>\n <Add fontSize='small' />\n <Typography type='s4' color='theme.secondary.1000'>\n Create New {props.label}\n </Typography>\n </MenuItem>\n </Box>}\n {pagination.isLoadingMore && (\n <MenuItem disabled>\n <Box sx={{ display: 'flex', justifyContent: 'center', width: '100%' }}>\n <CircularProgress size={20} />\n </Box>\n </MenuItem>\n )}\n </Select>\n </span>\n </Tooltip>\n ) : (\n <Select\n {...field}\n ref={selectRef}\n open={open}\n onOpen={() => {\n setOpen(true);\n setTimeout(() => {\n const searchInput = document.querySelector(\n `input[placeholder=\"Search ${props.label}\"]`\n ) as HTMLInputElement;\n console.log('Active Search input:', searchInput);\n searchInput?.focus();\n }, 150);\n }}\n onClose={handleClose}\n fullWidth\n dataPosition={props.position}\n dataName={`${props.fieldArrayName}.${props.name}`}\n placeholder={props.placeholder}\n label={props.label}\n defaultValue={props.defaultValue || (props.is_multiselect ? [] : '')}\n searchValue={searchQuery}\n required={props.formType == 'builder' ? false : props.required}\n size={props.size || 'small'}\n multiple={props.is_multiselect || false}\n disabled={props.disabled}\n sx={(props.is_multiselect && field?.value?.length) ? { \"& .MuiSelect-select\": { padding: '5.5px !important' } } : {}}\n variant='outlined'\n value={\n initialLoading\n ? (props.is_multiselect ? [] : '')\n : (field.value?.id || field.value || (props.is_multiselect ? [] : ''))\n }\n className={\n props.is_multiselect && removeUndefined(field.value)?.length\n ? 'MultiSelect filter-select'\n : ''\n }\n MenuProps={{\n PaperProps: {\n onScroll: handleScroll,\n style: { maxHeight: 300 }\n }\n }}\n\n renderValue={(selected: any) => {\n if (Array.isArray(selected)) {\n return (\n <ChipOrPlaceholder\n selectedLabel={props.selectedLabel}\n data={removeUndefined(selected)}\n placeholder={(loading || props.is_loading) ? <Loading /> : `${t('common.search')} ${props.label}`}\n onDelete={props.onChipRemove}\n disabled={props.disabled}\n chipProps={{\n sx: {\n background: '#ebf9f2',\n border: 0,\n // borderRadius: '15px',\n '& .MuiTypography-body1': {\n color: '#289b64',\n fontWeight: \"500\",\n }\n }\n }}\n />\n );\n } else {\n const selectedOption = filteredOptions.find(\n (option) => (option.value?.id || option.value) == selected\n );\n return (loading || props.is_loading) ? <Loading /> : selectedOption?.label ||\n (typeof props.label == 'string' ?\n `${t('common.search')} ${props.label}` :\n props.placeholder);\n }\n }}\n searchPlaceholder={`${t('common.search')} ${props.label}`}\n handleSearch={(text: string) => {\n setSearchQuery(text);\n setSearchInitiate(true);\n }}\n error={Boolean(fieldState.error?.message)}\n helperText={fieldState.error?.message || ''}\n onBlur={field.onBlur}\n input={\n <OutlinedInput\n label=''\n endAdornment={\n <InputAdornment position='end'>\n {(loading || props.is_loading) ? (\n <CircularProgress\n size={20}\n sx={{ mr: 3, color: \"#4AC08C\" }}\n />\n ) : (\n !props.disabled &&\n (props.is_multiselect ?\n (Array.isArray(field.value) && field.value.length > 0) :\n Boolean(field.value)) && showCancelButton && (\n <IconButton\n aria-label='clear selection'\n onClick={() => resetValue(field)}\n edge='end'\n sx={isRtl ? { ml: 2.5 } : { mr: 1.5 }}\n size='small'\n >\n <Close sx={{ fontSize: '1rem' }} />\n </IconButton>\n )\n )}\n </InputAdornment>\n }\n />\n }\n >\n {generateMenuItems({\n options: filteredOptions,\n multiple: Boolean(props.is_multiselect),\n placeholder: props.placeholder,\n values: field.value,\n with_checkboxes: true,\n field: props,\n disabledIds,\n onChange: field.onChange,\n handleChange,\n hasParent,\n t,\n // onFooterClick: () => {\n // if (props?.onFooterClick) {\n // props?.onFooterClick();\n // } else {\n // handleModalOpen();\n // }\n // }\n })}\n {props?.enable_footer &&\n <Box key=\"footer\" sx={{ position: 'sticky', bottom: 0, background: '#fff', zIndex: 1 }}>\n <Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n <MenuItem sx={{ gap: 1 }} onClick={\n () => {\n if (props?.onFooterClick) {\n props?.onFooterClick();\n } else {\n handleModalOpen();\n }\n }\n\n }>\n <Add fontSize='small' />\n <Typography type='s4' color='theme.secondary.1000'>\n Create New {props.label}\n </Typography>\n </MenuItem>\n </Box>}\n {pagination.isLoadingMore && (\n <MenuItem disabled>\n <Box sx={{ display: 'flex', justifyContent: 'center', width: '100%' }}>\n <CircularProgress size={20} />\n </Box>\n </MenuItem>\n )}\n </Select>\n )}\n\n {/* Modal for adding new items */}\n {addConfig && addConfig.component && (\n <>\n {React.createElement(addConfig.component, {\n isOpen: isModalOpen,\n setIsOpen: setIsModalOpen,\n isLoading: isAddLoading,\n onSave: handleModalSave,\n modalProps: {\n maxWidth: 'md',\n fullWidth: true\n },\n ...props?.modalComponentProps\n })}\n </>\n )}\n\n {props.is_multiselect && Array.isArray(field.value) && (\n <SelectedItems\n data={field.value}\n options={filteredOptions}\n />\n )}\n </>\n )}\n />\n );\n});\nexport default DynamicSearchSelect;","import React, { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { Box } from '@mui/material';\n\nimport Typography from '../../typography/typography';\nimport DatePicker from '../../date-picker/date-picker';\nimport DateTimePicker from '../../date-time-picker/date-time-picker';\nimport TextField from '../../text-field/text-field';\nimport UploadMedia from '../../upload-media/upload-media';\n\nimport * as yup from 'yup';\nimport _ from 'lodash';\nimport dayjs from 'dayjs';\nimport PhoneInput from '../../phone-input/phone-input';\nimport Checkbox from '../../checkbox/checkbox';\nimport SearchableSelect from '../../searchable-select';\n\ninterface IInlineEditFields {\n\tcell: any;\n\tcolumn: any;\n\trow: any;\n\ttable: any;\n\tcol: any;\n\tcallback: (value: any, column: any, rowId: any) => any;\n\terrors: any;\n\tvalidationSchema: any;\n\tsetValidationErrors: any;\n\tonChangeRowField?: (e: any, type: string, row: any) => any;\n\tgetSelectedData: any;\n}\nconst InlineEditFields: React.FC<IInlineEditFields> = ({\n\t// cell,\n\tcolumn,\n\trow,\n\t// table,\n\tcol,\n\t// callback,\n\terrors,\n\tvalidationSchema,\n\tsetValidationErrors,\n\tonChangeRowField,\n\tgetSelectedData\n}) => {\n\n\tconst [inputValue, setInputValue] = useState<any>();\n\tconst [isInitialSet, setIsInitialSet] = useState<any>(false);\n\tconst customFilter = useRef(null)\n\t// ** Getting only editing enabled fields.\n\tconst editCols = row\n\t\t.getAllCells()\n\t\t.map((col: any) => col.column.columnDef)\n\t\t.filter(\n\t\t\t(col: any) =>\n\t\t\t\tcol?.enableEditing === undefined || col?.enableEditing === true\n\t\t);\n\n\tconst editVariant = col.editVariant;\n\tconst fieldProperties = column.columnDef?.editProperties || {};\n\n\t// ** Default and Dynamic disbaling a field with row data\n\tlet fieldDisbled = false;\n\tif (fieldProperties?.disable) {\n\t\tif (typeof fieldProperties.disable === 'function') {\n\t\t\tfieldDisbled = Boolean(fieldProperties?.disable(row, row._valuesCache));\n\t\t} else {\n\t\t\tfieldDisbled = Boolean(fieldProperties.disable);\n\t\t}\n\t}\n\n\tconst handleCustomFilter = useCallback(async (row, values) => {\n\t\ttry {\n\t\t\tif (typeof fieldProperties.customeFilter === 'function') {\n\t\t\t\tconst filter = await fieldProperties.customeFilter(row, values);\n\t\t\t\tcustomFilter.current = filter;\n\t\t\t\treturn filter;\n\t\t\t} else {\n\t\t\t\tcustomFilter.current = fieldProperties?.customeFilter;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn null;\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [fieldProperties, row, row._valuesCache]);\n\n\n\tuseEffect(() => {\n\t\thandleCustomFilter(row, row._valuesCache)\n\t}, [handleCustomFilter, row, row._valuesCache]);\n\t// ** Setting a default value for edit mode.\n\tconst valueKey = fieldProperties?.valueKey;\n\tlet defaultValue: any = '';\n\n\tif (editVariant === 'select' && fieldProperties?.is_multiple) {\n\t\tdefaultValue = valueKey ? _.get(row.original, valueKey, []) : [];\n\t} else {\n\t\tdefaultValue = valueKey\n\t\t\t? _.get(row.original, valueKey, row.original[column.id])\n\t\t\t: row.original[column.id];\n\t}\n\n\t// ** Validate a field with Material Table Validation Schema.\n\tconst validate = async (value: any) => {\n\t\ttry {\n\t\t\t// const v = await validationSchema.validateAt( // * * This line has commented for rerendering purpose\n\t\t\tawait validationSchema.validateAt(\n\t\t\t\tcolumn.id,\n\t\t\t\t{\n\t\t\t\t\t[column.id]: value\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tabortEarly: false\n\t\t\t\t}\n\t\t\t);\n\t\t\t// if (v) { // * * The if condition has commented for rerendering purpose\n\t\t\tconst fe: any = {}; // field error\n\t\t\tfor (const e in errors) {\n\t\t\t\tif (e != column.id) {\n\t\t\t\t\tfe[e] = errors[e];\n\t\t\t\t}\n\t\t\t}\n\t\t\tsetValidationErrors(fe);\n\t\t\t// }\n\t\t} catch (err) {\n\t\t\tif (err instanceof yup.ValidationError) {\n\t\t\t\tconst e: Record<string, string> = {};\n\t\t\t\terr.inner.forEach((error) => {\n\t\t\t\t\tif (error.path) {\n\t\t\t\t\t\te[error.path] = error.message;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst em = { ...errors, ...e };\n\t\t\t\tsetValidationErrors(em);\n\t\t\t}\n\t\t}\n\t};\n\n\n\n\t// ** Detect onChnage to perform the action on an input change.\n\tconst onChange = async (e: any, type: string, selectedData: any) => {\n\t\tconst data = selectedData\n\t\tlet value;\n\t\tswitch (type) {\n\t\t\tcase 'date':\n\t\t\tcase 'file':\n\t\t\tcase 'image':\n\t\t\tcase 'phone':\n\t\t\t\tvalue = e;\n\t\t\t\t// setInputValue({ ...inputValue, [column.id]: e });\n\t\t\t\tbreak;\n\t\t\tcase 'text':\n\t\t\tcase 'number':\n\t\t\t\tvalue = e.target.value;\n\t\t\t\t// setInputValue({ ...inputValue, [column.id]: value });\n\t\t\t\tbreak;\n\t\t\tcase 'checkbox':\n\t\t\t\tvalue = e.target.checked;\n\t\t\t\t// setInputValue({ ...inputValue, [column.id]: value });\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tvalue = e.target.value;\n\t\t\t\tbreak;\n\t\t}\n\t\tsetInputValue({ ...inputValue, [column.id]: value });\n\n\t\tif (onChangeRowField) {\n\t\t\tconst v = await onChangeRowField(e, type, row, col, data);\n\t\t\tif (v) {\n\t\t\t\trow._valuesCache = { ...row._valuesCache, ...v };\n\t\t\t\tsetInputValue({ ...inputValue, ...v });\n\t\t\t}\n\t\t}\n\t\tsetInputValue({ ...inputValue, [column.id]: value });\n\t\trow._valuesCache = { ...row._valuesCache, [column.id]: value };\n\n\t\tawait validate(value);\n\t};\n\n\tuseEffect(() => {\n\t\tsetInputValue({ ...inputValue, ...row._valuesCache });\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [row._valuesCache]);\n\n\tuseEffect(() => {\n\t\tif (!isInitialSet) {\n\t\t\tconst editFields = Object.keys(row._valuesCache || {});\n\t\t\tconst dValues: any = {};\n\n\t\t\trow.getAllCells().forEach((cell) => {\n\t\t\t\tif (\n\t\t\t\t\tcell.column.columnDef?.enableEditing === undefined ||\n\t\t\t\t\tcell.column.columnDef?.enableEditing === true\n\t\t\t\t) {\n\t\t\t\t\tconst { is_multiple, valueKey } =\n\t\t\t\t\t\tcell.column.columnDef?.editProperties || {};\n\t\t\t\t\tif (editFields.length === 0 || editFields.includes(cell.column.id)) {\n\t\t\t\t\t\tconst cachedValue = row._valuesCache?.[cell.column.id];\n\t\t\t\t\t\tconst vl = _.get(row.original, valueKey);\n\t\t\t\t\t\tif (editVariant === 'select' && is_multiple) {\n\t\t\t\t\t\t\tdValues[cell.column.id] = cachedValue ?? (vl\n\t\t\t\t\t\t\t\t? Array.isArray(vl)\n\t\t\t\t\t\t\t\t\t? vl\n\t\t\t\t\t\t\t\t\t: [vl]\n\t\t\t\t\t\t\t\t: []);\n\t\t\t\t\t\t} else if (editVariant === 'date' || editVariant === 'date_time') {\n\t\t\t\t\t\t\tdValues[cell.column.id] = cachedValue ?? (vl\n\t\t\t\t\t\t\t\t? dayjs(vl).isValid()\n\t\t\t\t\t\t\t\t\t? dayjs(vl)\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t: dayjs(row.original[cell.column.id]).isValid()\n\t\t\t\t\t\t\t\t\t? dayjs(row.original[cell.column.id])\n\t\t\t\t\t\t\t\t\t: undefined);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst rawValue = _.get(\n\t\t\t\t\t\t\t\trow.original,\n\t\t\t\t\t\t\t\tvalueKey,\n\t\t\t\t\t\t\t\trow.original[cell.column.id]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst cellDefaultValue = cell.column.columnDef?.editProperties?.defaultValue;\n\t\t\t\t\t\t\tdValues[cell.column.id] = cachedValue ?? ((rawValue === '' || rawValue === undefined || rawValue === null)\n\t\t\t\t\t\t\t\t&& cellDefaultValue !== undefined\n\t\t\t\t\t\t\t\t? cellDefaultValue\n\t\t\t\t\t\t\t\t: rawValue);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t// setFieldsValues(dValues);\n\t\t\trow._valuesCache = dValues;\n\t\t\tsetInputValue(dValues);\n\t\t\tsetIsInitialSet(true);\n\t\t}\n\t}, [row, editVariant, isInitialSet]);\n\n\tconst handleMinDate = (state) => typeof state == 'function' ? state(row) : state\n\n\treturn (\n\t\t<>\n\t\t\t{(!editVariant || editVariant === 'number') && (\n\t\t\t\t<TextField\n\t\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\t\t// onBlur={(e) => onBlur(e)}\n\t\t\t\t\t// onKeyDown={onKeyDown}\n\t\t\t\t\tonChange={(e) => onChange(e, editVariant)}\n\t\t\t\t\tvalue={inputValue?.[column.id]}\n\t\t\t\t\tautoFocus={editCols?.[0]?.accessorKey === column.id}\n\t\t\t\t\ttype={editVariant || 'text'}\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\n\t\t\t\t\thelperText={errors?.[column.id]}\n\t\t\t\t\tplaceholder={fieldProperties?.placeholder || ''}\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\tdisabled={fieldDisbled}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{editVariant === 'select' && (\n\t\t\t\t<Box display='flex' flexDirection='column' width='100%'>\n\t\t\t\t\t<SearchableSelect\n\t\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\t\t\tplaceholder={fieldProperties?.placeholder || ''}\n\t\t\t\t\t\tsearchPlaceholder={`Search ${col.header}`}\n\t\t\t\t\t\tonChange={(e, row) => onChange(e, 'select', row)}\n\t\t\t\t\t\tapiType={fieldProperties?.apiType}\n\t\t\t\t\t\tautoFocus={editCols?.[0]?.accessorKey === column.id}\n\t\t\t\t\t\toptions={col?.editSelectOptions}\n\t\t\t\t\t\tcustomeFilter={customFilter.current}\n\t\t\t\t\t\tfilterKey={fieldProperties?.filterKey}\n\t\t\t\t\t\tlabelKey={fieldProperties?.labelKey}\n\t\t\t\t\t\tvalueKey={fieldProperties?.bindingKey}\n\t\t\t\t\t\tattributes={fieldProperties.attributes}\n\t\t\t\t\t\tisInternal={fieldProperties?.isInternal || !fieldProperties?.apiType}\n\t\t\t\t\t\tmultiple={fieldProperties?.is_multiple}\n\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\tfieldProperties?.is_multiple\n\t\t\t\t\t\t\t\t? Array.isArray(inputValue?.[column.id])\n\t\t\t\t\t\t\t\t\t? inputValue?.[column.id]\n\t\t\t\t\t\t\t\t\t: []\n\t\t\t\t\t\t\t\t: inputValue?.[column.id]\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgetSelectedData={(row) => getSelectedData(fieldProperties?.field_name, row)}\n\t\t\t\t\t\tdisabled={fieldDisbled}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{errors?.[column.id] && (\n\t\t\t\t\t\t<Typography color='theme.error.600' type='s5'>\n\t\t\t\t\t\t\t{errors?.[column.id]}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t)}\n\t\t\t\t</Box>\n\t\t\t)}\n\t\t\t{editVariant === 'date' && (\n\t\t\t\t<DatePicker\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\t\tonChange={(v) => onChange(v, 'date')}\n\t\t\t\t\ttextFieldProps={{\n\t\t\t\t\t\tautoFocus: editCols?.[0]?.accessorKey === column.id\n\t\t\t\t\t}}\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\n\t\t\t\t\thelperText={errors?.[column.id]}\n\t\t\t\t\tformat={fieldProperties?.dateFormat}\n\t\t\t\t\tplaceholder={\n\t\t\t\t\t\tfieldProperties?.placeholder || fieldProperties?.dateFormat\n\t\t\t\t\t}\n\t\t\t\t\tvalue={\n\t\t\t\t\t\tdayjs(row._valuesCache[column.id]).isValid()\n\t\t\t\t\t\t\t? dayjs(row._valuesCache[column.id])\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\tdisabled={fieldDisbled}\n\t\t\t\t\tminDate={() => handleMinDate(fieldProperties?.min_date)}\n\t\t\t\t\tmaxDate={() => handleMinDate(fieldProperties?.min_date)}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{editVariant === 'date_time' && (\n\t\t\t\t<DateTimePicker\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\t\tonChange={(v) => onChange(v, 'date')}\n\t\t\t\t\ttextFieldProps={{\n\t\t\t\t\t\tautoFocus: editCols?.[0]?.accessorKey === column.id\n\t\t\t\t\t}}\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\n\t\t\t\t\thelperText={errors?.[column.id]}\n\t\t\t\t\tformat={fieldProperties?.dateFormat}\n\t\t\t\t\tplaceholder={\n\t\t\t\t\t\tfieldProperties?.placeholder || fieldProperties?.dateFormat\n\t\t\t\t\t}\n\t\t\t\t\tvalue={\n\t\t\t\t\t\tdayjs(row._valuesCache[column.id]).isValid()\n\t\t\t\t\t\t\t? dayjs(row._valuesCache[column.id])\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\tdisabled={fieldDisbled}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{(editVariant === 'file' || editVariant === 'image') && (\n\t\t\t\t<Box display='flex' flexDirection='column'>\n\t\t\t\t\t<UploadMedia\n\t\t\t\t\t\tname={fieldProperties?.field_name || 'table_file'}\n\t\t\t\t\t\tdataPosition={0}\n\t\t\t\t\t\tdataName='table_file'\n\t\t\t\t\t\tlabel=''\n\t\t\t\t\t\ttype={editVariant}\n\t\t\t\t\t\tmax_size={10}\n\t\t\t\t\t\tonChange={(v) => onChange(v, 'file')}\n\t\t\t\t\t\terror={errors?.[column.id] ? true : false}\n\t\t\t\t\t\tmultiple={Boolean(column?.is_multiple)}\n\t\t\t\t\t\tvalue={row._valuesCache[column.id]}\n\t\t\t\t\t/>\n\t\t\t\t\t{errors?.[column.id] && (\n\t\t\t\t\t\t<Typography color='theme.error.600' type='s5'>\n\t\t\t\t\t\t\t{errors?.[column.id]}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t)}\n\t\t\t\t</Box>\n\t\t\t)}\n\t\t\t{editVariant === 'phone' && (\n\t\t\t\t<PhoneInput\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\tdefault_value={defaultValue}\n\t\t\t\t\tonChange={(v) => onChange(v, 'phone')}\n\t\t\t\t\ttextFieldProps={{\n\t\t\t\t\t\tautoFocus: editCols?.[0]?.accessorKey === column.id\n\t\t\t\t\t}}\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\n\t\t\t\t\thelperText={errors?.[column.id]}\n\t\t\t\t\tformat={fieldProperties?.dateFormat}\n\t\t\t\t\tplaceholder={\n\t\t\t\t\t\tfieldProperties?.placeholder || fieldProperties?.dateFormat\n\t\t\t\t\t}\n\t\t\t\t\tvalue={row._valuesCache?.[column.id]}\n\t\t\t\t\tdisabled={fieldDisbled}\n\t\t\t\t\tisInlineEditing={true}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{editVariant === 'checkbox' && (\n\t\t\t\t<Checkbox\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\tdefaultChecked={Boolean(defaultValue)}\n\t\t\t\t\t// checked={Boolean(defaultValue)}\n\t\t\t\t\tonChange={(v) => onChange(v, 'checkbox')}\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\n\t\t\t\t\thelperText={errors?.[column.id]}\n\t\t\t\t\tformat={fieldProperties?.dateFormat}\n\t\t\t\t\tplaceholder={\n\t\t\t\t\t\tfieldProperties?.placeholder || fieldProperties?.dateFormat\n\t\t\t\t\t}\n\t\t\t\t\tvalue={row._valuesCache?.[column.id]}\n\t\t\t\t\tdisabled={fieldDisbled}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n};\n\nexport default InlineEditFields;\n","/* eslint-disable unused-imports/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable no-mixed-spaces-and-tabs */\nimport React, { cloneElement, useCallback, useEffect, useState } from 'react';\nimport {\n\tMRT_ColumnDef,\n\tMRT_ColumnSizingInfoState,\n\tMRT_ColumnSizingState,\n\tMRT_Header,\n\tMRT_Row,\n\tMRT_RowData,\n\tMRT_RowSelectionState,\n\tMRT_SortingState,\n\tMRT_TableInstance,\n\tMRT_TableState,\n\tMaterialReactTable,\n\tMaterialReactTableProps,\n\tuseMaterialReactTable,\n\t// Cell\n} from 'material-react-table';\nimport { IPaginationModel } from '../../@types/pagination-model';\nimport {\n\tBox,\n\tstyled,\n\tMenuItem,\n\tIconButton,\n\tListItemIcon,\n\tListItemText,\n\tSvgIconProps,\n\tDivider\n} from '@mui/material';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nimport Menu from '../menu/menu';\nimport Typography from '../typography/typography';\nimport SearchBar from '../search-bar/search-bar';\nimport images from '../../assets/images';\n// import DeleteIcon from \"@mui/icons-material/Delete\";\n// import UpdateIcon from \"@mui/icons-material/Update\";\n// import PlayIcon from \"@mui/icons-material/PlayArrow\";\n\nimport './material-table.scss';\nimport {\n\tArrowUpDown,\n\tCheckBoxIcon,\n\tClose,\n\tEdit,\n\tRecgtangleIcon,\n\tSave,\n\tTrash\n} from '../icons';\n// import {\n// \tArrowDropDown /* , SaveOutlined */,\n// \tArrowDropUp\n// } from '@mui/icons-material';\nimport InlineEditFields from './components/inline-edit-fields';\nimport Tooltip from '../tooltip/Tooltip';\nimport Button from '../button/button';\nimport Add from '@mui/icons-material/Add';\nimport dayjs from 'dayjs';\nimport * as yup from 'yup';\nimport ConfirmPopUp from '../confirm-modal/confirm-modal';\nimport { useTranslation } from 'react-i18next';\nimport { enqueueSnackbar } from 'notistack';\nimport { usePages } from '@erpsquad/common/runtime';\nimport { useNavigate } from 'react-router-dom';\n// Module-specific pathname imports removed - should be passed as props or configured by consuming app\n// import { PathnameAccounting } from 'accounting/src/pathname.accounting';\n// import { PathnameInventory } from 'inventory/src/pathname.inventory';\n// import { PathnameManufacturing } from 'manufacturing/src/pathname.manufacturing';\n// import { PathnamePurchase } from 'procurement/src/pathname.procurement';\n// import { PathnameCrm } from 'crm/src/pathname.crm';\n// import { PathnameUsers } from 'user/src/pathname.user';\n// import { PathnameRental } from '../../../../rental/src/pathname.rental';\nimport { PathnameDocument } from '../../constants/pathnames/pathname.document';\nimport { PathnameAccounting } from '../../constants/pathnames/pathname.accounting';\nimport { PathnameInventory } from '../../constants/pathnames/pathname.inventory';\nimport { PathnameManufacturing } from '../../constants/pathnames/pathname.manufacturing';\nimport { PathnamePurchase } from '../../constants/pathnames/pathname.procurement';\nimport { PathnameCrm } from '../../constants/pathnames/pathname.crm';\nimport { PathnameUsers } from '../../constants/pathnames/pathname.user';\nimport { PathnameRental } from '../../constants/pathnames/pathname.rental';\nimport useDeepMemo from '../../hooks/use-deep-memo';\nimport { PageState } from '@erpsquad/common/runtime';\nimport { PathnameHrms } from '@/constants';\n\ntype ExtraEditVariants =\n\t| 'file'\n\t| 'image'\n\t| 'date'\n\t| 'number'\n\t| 'time'\n\t| 'date_time'\n\t| 'phone'\n\t| 'checkbox';\n\ntype DisableFunction = (row: any, virtualRow?: any) => boolean;\n\nexport type TypeBooleanLabels = { 1: string; 0: string; true: string; false: string }\n\nexport interface MaterialTableColumnProps\n\textends Omit<MRT_ColumnDef<MRT_RowData>, 'editVariant'> {\n\tvisible?: boolean;\n\ttype?: string;\n\tshowDefaultCurrency?: boolean,\n\tvalueGet?: string;\n\tcustom_class?: string;\n\ttypeArrayAccessorKey?: string; //when type is an array of object\n\ttypeBooleanLabels?: TypeBooleanLabels; //when type is an boolean\n\teditVariant?: MRT_ColumnDef<MRT_RowData>['editVariant'] | ExtraEditVariants;\n\teditProperties?: {\n\t\tfield_name?: string;\n\t\tvalueKey?: string;\n\t\tplaceholder?: string;\n\t\tdateFormat?: string;\n\t\tvalidations?: any[];\n\t\tis_multiple?: boolean;\n\t\tis_multiline?: boolean;\n\t\tdisable?: boolean | DisableFunction;\n\t};\n\tredirectionPathWithId?: string;\n\thandleRowClick?: (row: any) => void;\n\tidField?: string;\n}\n\n\n\nexport interface MaterialTableColumnHeaderProps {\n\tcolumn: MRT_ColumnDef<any, any>;\n\theader: MRT_Header<any>;\n\ttable: MRT_TableInstance<any>;\n}\n\ntype rowSelectionCallback = (row: MRT_Row<any>) => boolean\n\ninterface MaterialTablePropsType {\n\tenablePagination?: boolean;\n\tdisableMaxHeight?: boolean;\n\trows: any;\n\ttotalPages: number;\n\tcolumns: any;\n\tpaginationModel: IPaginationModel;\n\tcolumnOrder?: string[];\n\tupdateData?: any;\n\thandleColumnOrdering?: (colOrder: any) => void;\n\tenableEditing?: boolean;\n\tenableColumnDragging?: boolean;\n\trowActionMenu?: any;\n\tdestructiveActionMenu?: any;\n\tgetRowId?: any;\n\tstates?: Partial<MRT_TableState<any>>;\n\tonSortingChange?: any;\n\tdisableDefaultActionColumn?: boolean;\n\tenableRowSelection?: boolean | rowSelectionCallback;\n\tdefaultActionColumnItems?: React.ReactElement[];\n\tenableBottomToolbar?: boolean;\n\tSetSelectedRowId?: any;\n\tisResetRow?: boolean;\n\tonCreateRow?: (data: any) => Promise<unknown>;\n\tonEditRow?: (data: any) => Promise<unknown>;\n\tonDeleteRow?: (data: any) => Promise<unknown>;\n\teditDisplayMode?: MaterialReactTableProps<any>['editDisplayMode'];\n\tenableRowCreate?: boolean;\n\tonChangeRowField?: (e: any, type: string, row: any) => void;\n\tonSelectRow?: (rows: any, prevSelected?: any) => any;\n\tenableColumnResizing?: boolean;\n\tselectedRowIds?: any[];\n\tonColumnVisibility?: (columns: MaterialTableColumnProps[]) => void\n\tgetSelectedData: any;\n\tenableAddCustomField?: boolean;\n\tdisabledDefaultActionColumnIcon?: boolean\n\tenableRowDragging?: boolean\n\thandleColumnResizing?: (sizes: MRT_ColumnSizingState) => void,\n\tcolumnSizes?: MRT_ColumnSizingState,\n\tshowPreview?: boolean;\n\thandlePreview?: (row: MRT_RowData) => void;\n}\n\nconst TableWrapper = styled(Box, {\n\tshouldForwardProp: (prop) => prop !== 'disableMaxHeight',\n})<{ disableMaxHeight?: boolean }>(({ theme: { palette }, disableMaxHeight }) => ({\n\t'.MuiTableCell-root': {\n\t\tborder: '1px solid #efefef',\n\t\tborderBottom: 0,\n\t\tborderLeft: 0,\n\t\tpadding: '0 0.5rem',\n\t\tlineHeight: '19px',\n\t\tfontSize: '14px',\n\t\tminHeight: 32,\n\t\t// '&:first-child': {\n\t\t// \tborderLeft: '1px solid #efefef'\n\t\t// },\n\t\t// '&:last-child': {\n\t\t// \tborderBottom: '1px solid #efefef'\n\t\t// }\n\n\t},\n\t'.MuiTableCell-head': {\n\t\tbackgroundColor: palette.theme?.secondary[100]\n\t},\n\t'.MuiTableContainer-root': {\n\t\t...(!disableMaxHeight && { maxHeight: 'clamp(350px, 100vh - 200px, 9999px) !important' }),\n\t},\n\n\t'.MuiPaper-root': {\n\t\tboxShadow: 'none',\n\n\t},\n\t'.MuiPaginationItem-root': {\n\t\t'&.Mui-selected': {\n\t\t\tbackgroundColor: palette?.theme?.primary[700],\n\t\t\tcolor: 'white'\n\t\t}\n\t},\n\t'.MuiTableRow-root': {\n\t\t'&.Mui-selected': {\n\t\t\tbackgroundColor: `${palette?.theme?.primary[100]} !important`,\n\t\t\tcolor: 'white'\n\t\t}\n\t},\n\t'.MuiCheckbox-indeterminate': {\n\t\tcolor: `${palette?.theme?.primary[700]} !important`,\n\t\t\"& svg\": {\n\t\t\theight: `20px !important`,\n\t\t\twidth: `20px !important`,\n\t\t}\n\t}\n}));\n\nexport const MaterialTable = React.memo(({\n\tenablePagination = false,\n\trows,\n\tcolumns,\n\ttotalPages,\n\tpaginationModel,\n\tcolumnOrder = ['mrt-row-select'],\n\tupdateData,\n\thandleColumnOrdering,\n\tenableEditing,\n\tenableColumnDragging,\n\tstates,\n\trowActionMenu,\n\tdestructiveActionMenu,\n\tdisableDefaultActionColumn,\n\tenableRowSelection,\n\tdefaultActionColumnItems = [],\n\tenableBottomToolbar,\n\tSetSelectedRowId,\n\tisResetRow,\n\tonCreateRow,\n\tonEditRow,\n\tonDeleteRow,\n\teditDisplayMode,\n\tenableRowCreate,\n\tonChangeRowField,\n\tonSelectRow,\n\tenableColumnResizing = true,\n\tselectedRowIds = [],\n\tonColumnVisibility,\n\tonSortingChange,\n\tgetSelectedData,\n\tdisabledDefaultActionColumnIcon = false,\n\tenableAddCustomField = true,\n\tenableRowDragging = false,\n\thandleColumnResizing = () => { },\n\tcolumnSizes = {},\n\tdisableMaxHeight = false,\n\tshowPreview = false,\n\thandlePreview = () => { },\n\t// eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\n\t// getRowId,\n\t// onDelete,\n\t// onUpdate,\n\t...rest\n}: MaterialTablePropsType) => {\n\tconst { t } = useTranslation();\n\tconst { formData = null, updatePageInfo, activePage: aPage } = usePages()\n\tconst activePage = useDeepMemo<PageState>(aPage);\n\tconst { pageNo } = paginationModel;\n\tconst [row, setRow] = useState({});\n\tconst [tableColumns, setTableColumns] = useState(columns);\n\tconst [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\tconst [popUpShow, setPopupShow] = useState<boolean>(false);\n\tconst [rowAnchorEl, setRowAnchorEl] = useState<null | HTMLElement>(null);\n\tconst visibleColumns = tableColumns.filter((column: any) => column.visible);\n\tconst hiddenColumns = tableColumns.filter((column: any) => !column.visible);\n\tconst [filteredOptions, setFilteredOptions] = useState(hiddenColumns);\n\tconst [selectedRow, setSelectedRow] = useState<number | null>(null);\n\tconst [validationErrors, setValidationErrors] = useState<any>({});\n\tconst [validationSchema, setValidationSchema] = useState<any>([]);\n\tconst [isCreatingRow, setIsCreatingRow] = useState<boolean>(false);\n\tconst [isEditingRow, setIsEditingRow] = useState<boolean>(false);\n\tconst [isDeletingRow, setIsDeletingRow] = useState<boolean>(false);\n\tconst [rowToDelete, setRowToDelete] = useState<any>(null);\n\tconst [rowSelection, setRowSelection] = useState<MRT_RowSelectionState>({});\n\tconst [isChecked, setIsChecked] = useState(false)\n\tconst [sorting, setSorting] = useState<MRT_SortingState>([]);\n\tconst [disableNextEdit, setDisableNextEdit] = useState(false);\n\tconst [columnSizing, setColumnSizing] = useState<MRT_ColumnSizingState>(activePage.column_sizes);\n\tconst [columnSizingInfo, setColumnSizingInfo] = useState<MRT_ColumnSizingInfoState>({\n\t\tcolumnSizingStart: [],\n\t\tdeltaOffset: null,\n\t\tdeltaPercentage: null,\n\t\tisResizingColumn: false,\n\t\tstartOffset: null,\n\t\tstartSize: null\n\t});\n\n\tconst navigate = useNavigate();\n\tconst currentModule = location.pathname.split('/')[2]\n\n\tlet redirectionPath = ''\n\tswitch (currentModule) {\n\t\tcase 'accounting':\n\t\t\tredirectionPath = PathnameAccounting.CUSTOM_FORM\n\t\t\tbreak;\n\t\tcase 'inventory':\n\t\t\tredirectionPath = PathnameInventory.CUSTOM_FORM\n\t\t\tbreak;\n\t\tcase 'manufacturing':\n\n\t\t\tredirectionPath = PathnameManufacturing.CUSTOM_FORM\n\t\t\tbreak;\n\t\tcase 'procurement':\n\t\t\tredirectionPath = PathnamePurchase.CUSTOM_FORM\n\t\t\tbreak;\n\t\tcase 'crm':\n\t\t\tredirectionPath = PathnameCrm.CUSTOM_FORM\n\t\t\tbreak;\n\t\tcase 'user':\n\t\t\tredirectionPath = PathnameUsers.CUSTOM_FORM\n\t\t\tbreak;\n\t\tcase 'rental':\n\t\t\tredirectionPath = PathnameRental.CUSTOM_FORM\n\t\t\tbreak;\n\t\tcase 'drive':\n\t\t\tredirectionPath = PathnameDocument.ADD_CUSTOM_FIELDS\n\t\t\tbreak;\n\t\tcase 'hrms':\n\t\t\tredirectionPath = PathnameHrms.CUSTOM_FORM;\n\t\t\tbreak;\n\t}\n\tconst path = `/dashboard/${currentModule}${redirectionPath}`\n\tconst getValidationType = (column: any) => {\n\t\tswitch (column.editVariant) {\n\t\t\tcase 'select':\n\t\t\t\treturn column?.editProperties?.is_multiple ? yup.array() : yup.string();\n\n\t\t\tcase 'number':\n\t\t\t\treturn yup.number().nullable().transform((value, originalValue) => (originalValue === \"\" ? null : value));\n\n\t\t\tcase 'url':\n\t\t\t\treturn yup\n\t\t\t\t\t.string()\n\t\t\t\t\t.matches(\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+)?$/,\n\t\t\t\t\t\t{ excludeEmptyString: true, message: 'Please enter valid URL.' }\n\t\t\t\t\t);\n\n\t\t\tcase 'date':\n\t\t\tcase 'date_time':\n\t\t\tcase 'time':\n\t\t\t\treturn yup.date().transform((value, originalValue) => {\n\t\t\t\t\tif (originalValue && typeof originalValue === 'object' && 'toDate' in originalValue) {\n\t\t\t\t\t\treturn (originalValue as any).toDate();\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}).typeError('Valid date is required');\n\n\t\t\tcase 'file':\n\t\t\tcase 'image':\n\t\t\t\treturn yup.mixed().nullable();\n\n\t\t\tdefault:\n\t\t\t\treturn yup.string()\n\t\t}\n\t};\n\n\tconst validationReducer = (\n\t\tvalidations: any,\n\t\tvalidation: any,\n\t\tcolumn: any\n\t) => {\n\t\tlet vld = validations\n\t\tswitch (validation.type) {\n\t\t\tcase 'required':\n\t\t\t\tvld = validation.value\n\t\t\t\t\t? validations.required(validation.msg_en).typeError(validation.msg_en)\n\t\t\t\t\t: column?.editProperties?.is_multiple\n\t\t\t\t\t\t? validations.min(1, validation.msg_en)\n\t\t\t\t\t\t: validations;\n\t\t\t\tbreak\n\t\t\tcase 'min':\n\t\t\t\tvld = validations.min(validation.value, validation.msg_en);\n\t\t\t\tbreak\n\t\t\tcase 'email':\n\t\t\t\tvld = validations.email(validation.value, validation.msg_en);\n\t\t\t\tbreak\n\t\t\tcase 'max':\n\t\t\t\tvld = validations.max(validation.value, validation.msg_en);\n\t\t\t\tbreak\n\t\t\tcase 'positive':\n\t\t\t\tvld = validation.value === true ? validations.test('is-positive-number', 'Value must be a positive number', (value) => !value || value >= 0) : validations;\n\t\t\t\tbreak\n\t\t\tcase 'when':\n\t\t\t\treturn validations.when(validation.relation, {\n\t\t\t\t\tis: (val: any) => val === validation.values,\n\t\t\t\t\tthen: () =>\n\t\t\t\t\t\tvalidation?.thenValidations?.reduce(\n\t\t\t\t\t\t\t(validations: any, validation: any) =>\n\t\t\t\t\t\t\t\tvalidationReducer(validations, validation, column),\n\t\t\t\t\t\t\tvalidations\n\t\t\t\t\t\t) || validations,\n\t\t\t\t\totherwise: () =>\n\t\t\t\t\t\tvalidation?.otherWiseValidations?.reduce(\n\t\t\t\t\t\t\t(validations: any, validation: any) =>\n\t\t\t\t\t\t\t\tvalidationReducer(validations, validation, column),\n\t\t\t\t\t\t\tvalidations\n\t\t\t\t\t\t) || validations\n\t\t\t\t});\n\t\t\tcase 'validate':\n\t\t\t\tif (typeof validation.callback === 'function') {\n\t\t\t\t\tvld = vld.test(\n\t\t\t\t\t\tvalidation.name || 'custom-validate',\n\t\t\t\t\t\tvalidation.msg_en || 'Validation failed',\n\t\t\t\t\t\tfunction (value) {\n\t\t\t\t\t\t\t// `this.parent` provides all sibling field values in the Yup context\n\t\t\t\t\t\t\treturn validation.callback(value, this.parent);\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t// Add more cases for other validation types as needed\n\t\t\tdefault:\n\t\t\t\tvld = validations;\n\t\t\t\tbreak\n\t\t}\n\n\t\tif (validation.type == 'required' && validation.value && (!column?.editVariant || column?.editVariant == 'text')) {\n\t\t\tvld = vld.test('no-blank-spaces', 'Blank space is not allowed', (value) => {\n\t\t\t\tif (!value) return true; // let .required() handle empty\n\t\t\t\treturn value.trim()?.length > 0;\n\t\t\t})\n\t\t}\n\n\t\treturn vld\n\n\t};\n\n\n\tconst generateValidationSchema = (columns: any[]) => {\n\t\tconst schema: any = {};\n\t\tcolumns.forEach((clm) => {\n\t\t\tif (clm?.editProperties?.validations?.length) {\n\t\t\t\tconst fieldValidations = clm?.editProperties?.validations.reduce(\n\t\t\t\t\t(validations: any, validation: any) =>\n\t\t\t\t\t\tvalidationReducer(validations, validation, clm),\n\t\t\t\t\tgetValidationType(clm)\n\t\t\t\t);\n\t\t\t\tschema[clm.accessorKey] = fieldValidations;\n\t\t\t}\n\t\t});\n\t\treturn schema;\n\t};\n\n\tuseEffect(() => {\n\t\tsetTableColumns(columns);\n\n\t\tconst schema: any = generateValidationSchema(columns);\n\t\tsetValidationSchema(yup.object().shape(schema));\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [columns]);\n\n\tuseEffect(() => {\n\t\tif (!columnSizingInfo?.isResizingColumn) {\n\t\t\tupdatePageInfo({ column_sizes: { ...activePage.column_sizes, ...columnSizing } })\n\t\t\thandleColumnResizing?.(columnSizing)\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [columnSizingInfo?.isResizingColumn, columnSizing])\n\n\tconst handleHeaderClick = (event: any) => {\n\t\tsetAnchorEl(event.currentTarget);\n\t};\n\n\tconst handleHeaderClose = () => {\n\t\tsetAnchorEl(null);\n\t};\n\n\tconst handleVisibleColumn = (column: any) => {\n\t\tconst updatedColumns = tableColumns.map((col: any) => ({\n\t\t\t...col,\n\t\t\tvisible: col.accessorKey === column.accessorKey ? false : col.visible\n\t\t}));\n\t\tsetTableColumns(updatedColumns);\n\t\tonColumnVisibility?.(JSON.parse(JSON.stringify(updatedColumns)))\n\t\tsetFilteredOptions([...filteredOptions, column]);\n\t\tsetAnchorEl(null);\n\t};\n\n\tconst handleAddButtonClick = () => {\n\t\tsetPopupShow(true);\n\t};\n\n\tconst handleBackButtonClick = () => {\n\t\tsetPopupShow(false);\n\t};\n\n\tconst handleAddColumn = (column: any) => {\n\t\tconst updatedColumns = tableColumns.map((col: any) => ({\n\t\t\t...col,\n\t\t\tvisible: col.accessorKey === column.accessorKey ? true : col.visible\n\t\t}));\n\t\tonColumnVisibility?.(JSON.parse(JSON.stringify(updatedColumns)))\n\t\tsetTableColumns(updatedColumns);\n\n\t\tconst updatedFilteredOptions = filteredOptions.filter(\n\t\t\t(option: any) => option.accessorKey !== column.accessorKey\n\t\t);\n\t\tsetFilteredOptions(updatedFilteredOptions);\n\t\tsetAnchorEl(null);\n\t\tsetPopupShow(false);\n\t};\n\n\tconst handleSearchEvent = (searchQuery: string) => {\n\t\tconst filteredColumns = hiddenColumns.filter((option: any) =>\n\t\t\toption.header.toLowerCase().includes(searchQuery.toLowerCase())\n\t\t);\n\t\tsetFilteredOptions(filteredColumns);\n\t};\n\n\tconst handleCustomAddColumn = () => {\n\t\tnavigate(path, { state: formData })\n\t\tsetAnchorEl(null);\n\t\tsetPopupShow(false);\n\t};\n\n\tconst handleRowClick = (rowId: number) => {\n\t\tsetSelectedRow(rowId); // Update selected row ID when a row is clicked\n\t};\n\n\tconst handlePreviewClick = (row: MRT_RowData) => {\n\t\thandlePreview?.(row);\n\t};\n\n\t// const handleDeleteClick = (event: any, data: any) => {\n\t// onDelete?.(data.id);\n\t// };\n\t// const handleUpdateClick = (event: any, data: any) => {\n\t// onUpdate?.(data.id);\n\t// };\n\n\tconst handleActionsClick = (event: any, data: any) => {\n\t\tsetRow(data);\n\t\tsetRowAnchorEl(event.currentTarget);\n\t};\n\n\tconst handleActionsClose = () => {\n\t\tsetRowAnchorEl(null);\n\t};\n\n\tconst formtValues = (values: any, cells: any[]) => {\n\t\tconst v: any = {};\n\t\tObject.keys(values).forEach((vl) => {\n\t\t\tconst val = values[vl];\n\t\t\tv[vl] = val;\n\t\t\tconst cell = cells.find((c) => c.accessorKey == vl);\n\t\t\tif (val) {\n\t\t\t\tif (val instanceof File) {\n\t\t\t\t\tv[vl] = val.name;\n\t\t\t\t}\n\t\t\t\tif (cell && cell?.editVariant == 'date') {\n\t\t\t\t\tv[vl] = dayjs(val).format(cell?.dateFormat || 'DD-MM-YYYY');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn v;\n\t};\n\n\tconst handleRowDelete = async () => {\n\t\tsetIsDeletingRow(true);\n\t\tif (rowToDelete) {\n\t\t\tawait onDeleteRow?.(rowToDelete);\n\t\t\tsetRowToDelete(null);\n\t\t}\n\t\tsetIsDeletingRow(false);\n\t};\n\n\tconst checkRequired = useCallback((editProperties: any) => {\n\t\treturn editProperties?.validations?.some((validation: any) => validation.type === 'required')\n\t}, [])\n\tuseEffect(() => {\n\t\tconst selectedRows = {};\n\t\t// Build the selectedRows object\n\t\tif (!isChecked && selectedRowIds.length) {\n\t\t\trows.forEach((row) => {\n\t\t\t\tif (selectedRowIds.includes(row.id)) {\n\t\t\t\t\tselectedRows[row.id] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\tsetRowSelection(selectedRows);\n\t\t\tsetIsChecked(true)\n\t\t}\n\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [rows, selectedRowIds]); // Dependency only on rows and selectedRowIds\n\n\tuseEffect(() => {\n\t\tif (onSortingChange instanceof Function) {\n\t\t\tconst sortingArray = Array.isArray(sorting) ? sorting : [];\n\t\t\tonSortingChange(sortingArray[0] || null)\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [sorting])\n\n\n\tconst resetRowSelection = () => {\n\t\tsetRowSelection({});\n\t\tsetDisableNextEdit(false);\n\t\tsetValidationErrors({});\n\t}\n\n\tconst getTextWidth = (text: string) => {\n\t\tconst canvas = document.createElement(\"canvas\");\n\t\tconst ctx = canvas.getContext(\"2d\");\n\t\tif (!ctx) return 50;\n\t\treturn ctx.measureText(text).width + 5; // padding\n\t}\n\tconst table = useMaterialReactTable({\n\t\t// options:{\n\t\t// \ttableLayout: \"auto\", // 👈 important\n\t\t// \tpadding: \"dense\",\n\t\t// },\n\t\t// columns: visibleColumns,\n\t\tdefaultColumn: {\n\t\t\tminSize: 0, // 👈 remove default min width\n\t\t\tsize: undefined, // 👈 optional, default size\n\t\t},\n\t\tcolumns: [\n\t\t\t...visibleColumns.map((c: any) => {\n\t\t\t\tconst headerWidth = getTextWidth(c.header || '');\n\t\t\t\tconst maxCellWidth = Math.max(\n\t\t\t\t\t...rows.map(row => getTextWidth(String(row[c.accessorKey] ?? '')))\n\t\t\t\t);\n\t\t\t\tconst finalWidth = Math.max(headerWidth, maxCellWidth);\n\t\t\t\treturn {\n\t\t\t\t\t...c,\n\t\t\t\t\t...(editDisplayMode === 'row'\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\tEdit: ({ cell, row, table, column }) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<InlineEditFields\n\t\t\t\t\t\t\t\t\t\tcell={cell}\n\t\t\t\t\t\t\t\t\t\tcolumn={column}\n\t\t\t\t\t\t\t\t\t\tcol={c}\n\t\t\t\t\t\t\t\t\t\trow={row}\n\t\t\t\t\t\t\t\t\t\ttable={table}\n\t\t\t\t\t\t\t\t\t\terrors={validationErrors}\n\t\t\t\t\t\t\t\t\t\tvalidationSchema={validationSchema}\n\t\t\t\t\t\t\t\t\t\tsetValidationErrors={setValidationErrors}\n\t\t\t\t\t\t\t\t\t\tonChangeRowField={onChangeRowField}\n\t\t\t\t\t\t\t\t\t\tgetSelectedData={(name, row) => getSelectedData?.(name, row)}\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},\n\t\t\t\t\t\t}\n\t\t\t\t\t\t: {}),\n\t\t\t\t\tHeader: (\n\t\t\t\t\t\t<Box display='flex' alignItems='center'>\n\t\t\t\t\t\t\t{c.header}\n\t\t\t\t\t\t\t{c?.required || checkRequired(c?.editProperties) && (\n\t\t\t\t\t\t\t\t<Typography type='s5' color='theme.error.600'>\n\t\t\t\t\t\t\t\t\t*\n\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t),\n\t\t\t\t\tenableColumnDragging: c.id !== 'actions',\n\t\t\t\t\t// cellStyle: { ...c.cellStyle, width: finalWidth },\n\t\t\t\t\t// headerStyle: { ...c.headerStyle, width: finalWidth },\n\t\t\t\t\t// size: finalWidth\n\t\t\t\t\tsize: undefined,\n\t\t\t\t\t// minSize: 40,\n\t\t\t\t\tmaxSize: 800,\n\t\t\t\t};\n\t\t\t}),\n\t\t\t...(showPreview ? [\n\t\t\t\t{\n\t\t\t\t\tid: 'preview',\n\t\t\t\t\tenableEditing: false,\n\t\t\t\t\tsize: 70,\n\t\t\t\t\theader: (\n\t\t\t\t\t\t<IconButton size=\"small\" sx={{ ml: '20px', '&:hover': { backgroundColor: 'transparent' } }}>\n\t\t\t\t\t\t\t<img src={images.common.eyeIcon} alt='Eye Icon' />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t),\n\t\t\t\t\tenableColumnDragging: false,\n\t\t\t\t\tvisible: true,\n\t\t\t\t\tmuiTableHeadCellProps: {\n\t\t\t\t\t\tclassName: 'pinned-column'\n\t\t\t\t\t},\n\t\t\t\t\tmuiTableBodyCellProps: {\n\t\t\t\t\t\tclassName: 'pinned-column',\n\t\t\t\t\t\tsx: {\n\t\t\t\t\t\t\twhiteSpace: 'pre-wrap'\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tCell: (props) =>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\tonClick={() => handlePreviewClick(props.row.original)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tPreview\n\t\t\t\t\t\t</Button>\n\t\t\t\t}\n\t\t\t] : []),\n\t\t\t...(!disableDefaultActionColumn\n\t\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'actions',\n\t\t\t\t\t\tenableEditing: false,\n\t\t\t\t\t\tsize: defaultActionColumnItems?.length > 1 ? 80 : 50,\n\t\t\t\t\t\theader: (\n\t\t\t\t\t\t\t<IconButton size=\"small\" sx={{ p: 0.5, '&:hover': { backgroundColor: 'transparent' } }} onClick={handleHeaderClick}>\n\t\t\t\t\t\t\t\t<img src={images.common.arrowIcon} alt='Arrow Icon' />\n\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t),\n\t\t\t\t\t\tenableColumnDragging: false,\n\t\t\t\t\t\tvisible: true,\n\t\t\t\t\t\tmuiTableHeadCellProps: {\n\t\t\t\t\t\t\tclassName: 'pinned-column'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmuiTableBodyCellProps: {\n\t\t\t\t\t\t\tclassName: 'pinned-column'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCell: (props) =>\n\t\t\t\t\t\t\tdefaultActionColumnItems?.length ? (\n\t\t\t\t\t\t\t\tdefaultActionColumnItems.map((item) => {\n\t\t\t\t\t\t\t\t\tconst updatedProps = {\n\t\t\t\t\t\t\t\t\t\t...item.props,\n\t\t\t\t\t\t\t\t\t\tonClick: () => item.props.onClick(props)\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\treturn cloneElement(item, updatedProps);\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t) : !disabledDefaultActionColumnIcon && (\n\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\tonClick={(e) => handleActionsClick(e, props.row.original)} disabled={!rowActionMenu?.length && !destructiveActionMenu?.length}>\n\t\t\t\t\t\t\t\t\t<img src={images.more} alt='More Icon' />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t: [])\n\t\t],\n\t\tdata: rows,\n\t\tmuiTableContainerProps: {\n\t\t\tsx: {\n\t\t\t\t...(disableMaxHeight && { maxHeight: 'none !important' }),\n\t\t\t},\n\t\t},\n\t\tmuiTablePaperProps: {\n\t\t\tsx: {\n\t\t\t\ttableLayout: 'auto', // lets columns shrink to fit content\n\t\t\t},\n\t\t},\n\t\tcolumnResizeMode: 'onChange',\n\t\tonEditingRowSave: async (data) => {\n\t\t\ttry {\n\t\t\t\tawait validationSchema.validate(data.values, {\n\t\t\t\t\tabortEarly: false\n\t\t\t\t});\n\t\t\t\tsetValidationErrors({});\n\t\t\t\tsetIsEditingRow(true);\n\t\t\t\tsetDisableNextEdit(false)\n\t\t\t\tconst cells = data.row.getAllCells().map((c) => c.column.columnDef);\n\t\t\t\tdata.row._valuesCache = formtValues(data.values, cells);\n\n\t\t\t\tif (onEditRow) {\n\t\t\t\t\tawait onEditRow(data, 'edit');\n\t\t\t\t}\n\t\t\t\tsetIsEditingRow(false);\n\t\t\t\tdata.table.setEditingRow(null);\n\t\t\t} catch (err) {\n\t\t\t\tsetIsEditingRow(false);\n\t\t\t\tif (err instanceof yup.ValidationError) {\n\t\t\t\t\tconst errors: Record<string, string> = {};\n\n\t\t\t\t\terr.inner.forEach((error) => {\n\t\t\t\t\t\tif (error.path) {\n\t\t\t\t\t\t\terrors[error.path] = error.message;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tsetValidationErrors(errors);\n\t\t\t\t} else if (err instanceof Error) {\n\t\t\t\t\tenqueueSnackbar(err.message, { variant: 'error' })\n\t\t\t\t} else {\n\t\t\t\t\tenqueueSnackbar('Something went wrong', { variant: 'error' })\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonCreatingRowSave: async (data) => {\n\t\t\ttry {\n\t\t\t\tawait validationSchema.validate(data.values, {\n\t\t\t\t\tabortEarly: false\n\t\t\t\t});\n\t\t\t\tsetValidationErrors({});\n\t\t\t\tsetIsCreatingRow(true);\n\t\t\t\tsetDisableNextEdit(false)\n\t\t\t\tconst cells = data.row.getAllCells().map((c) => c.column.columnDef);\n\n\t\t\t\tdata.row._valuesCache = formtValues(data.values, cells);\n\n\t\t\t\tif (onCreateRow) {\n\t\t\t\t\tawait onCreateRow(data);\n\t\t\t\t}\n\t\t\t\tsetIsCreatingRow(false);\n\t\t\t\tdata.table.setCreatingRow(null);\n\t\t\t} catch (err) {\n\t\t\t\tsetIsCreatingRow(false);\n\t\t\t\tif (err instanceof yup.ValidationError) {\n\t\t\t\t\tconst errors: Record<string, string> = {};\n\n\t\t\t\t\terr.inner.forEach((error) => {\n\t\t\t\t\t\tif (error.path) {\n\t\t\t\t\t\t\terrors[error.path] = error.message;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tsetValidationErrors(errors);\n\t\t\t\t} else if (err instanceof Error) {\n\t\t\t\t\tenqueueSnackbar(err.message, { variant: 'error' })\n\t\t\t\t} else {\n\t\t\t\t\tenqueueSnackbar('Something went wrong', { variant: 'error' })\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonCreatingRowCancel: () => resetRowSelection(),\n\t\tonEditingRowCancel: () => resetRowSelection(),\n\t\tonSortingChange: states?.sorting ? onSortingChange : setSorting,\n\n\t\tdisplayColumnDefOptions: {\n\t\t\t'mrt-row-actions': {\n\t\t\t\t// size: onDeleteRow ? 80 : 50,\n\n\t\t\t\tHeader: (\n\t\t\t\t\t<IconButton onClick={handleHeaderClick} size='small'>\n\t\t\t\t\t\t<img src={images.common.arrowIcon} alt='Arrow Icon' />\n\t\t\t\t\t</IconButton>\n\t\t\t\t),\n\t\t\t\tmuiTableBodyCellProps: {\n\t\t\t\t\tsx: {\n\t\t\t\t\t\t'& .MuiBox-root': {\n\t\t\t\t\t\t\tgap: 0\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbackgroundColor: '#fff'\n\t\t\t\t\t},\n\t\t\t\t\tonKeyUp: (e) => console.log(e)\n\t\t\t\t}\n\t\t\t},\n\t\t\t'mrt-row-expand': {\n\t\t\t\tsize: 70, // Set the size of the expand-collapse arrow column here\n\t\t\t},\n\t\t\t'mrt-row-select': {\n\t\t\t\tsize: 50, // Set the width of the checkbox column here\n\t\t\t},\n\t\t},\n\t\trenderRowActions: ({ row, table }) => (\n\t\t\t<>\n\t\t\t\t{rest?.enableExpanding ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{row?.parentId && (\n\t\t\t\t\t\t\t<Box sx={{ display: 'flex', gap: 0 }}>\n\t\t\t\t\t\t\t\t<Tooltip title='Edit'>\n\t\t\t\t\t\t\t\t\t<IconButton disabled={disableNextEdit} onClick={() => {\n\t\t\t\t\t\t\t\t\t\tsetValidationErrors({});\n\t\t\t\t\t\t\t\t\t\ttable.setEditingRow(row)\n\t\t\t\t\t\t\t\t\t\tsetDisableNextEdit(true)\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t} size='small'>\n\t\t\t\t\t\t\t\t\t\t<Edit fontSize='small' sx={{ color: 'theme.secondary.1000' }} />\n\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t{onDeleteRow && (\n\t\t\t\t\t\t\t\t\t<Tooltip title='Delete'>\n\t\t\t\t\t\t\t\t\t\t<IconButton disabled={disableNextEdit} onClick={() => setRowToDelete(row)} size='small'>\n\t\t\t\t\t\t\t\t\t\t\t<Trash fontSize='small' sx={{ color: 'theme.secondary.1000' }} />\n\t\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\t<Box sx={{ display: 'flex', gap: 0 }}>\n\t\t\t\t\t\t<Tooltip title='Edit'>\n\t\t\t\t\t\t\t<IconButton disabled={disableNextEdit} onClick={() => {\n\t\t\t\t\t\t\t\tsetValidationErrors({});\n\t\t\t\t\t\t\t\ttable.setEditingRow(row);\n\t\t\t\t\t\t\t\tsetDisableNextEdit(true);\n\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t<Edit fontSize='small' sx={{ color: 'theme.secondary.1000' }} />\n\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t{onDeleteRow && (\n\t\t\t\t\t\t\t<Tooltip title='Delete'>\n\t\t\t\t\t\t\t\t<IconButton onClick={() => setRowToDelete(row)}>\n\t\t\t\t\t\t\t\t\t<Trash fontSize='small' sx={{ color: 'theme.secondary.1000' }} />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Box>\n\t\t\t\t)}\n\t\t\t</>\n\t\t),\n\n\t\t...(Boolean(enableRowCreate) && {\n\t\t\trenderBottomToolbarCustomActions: ({ table }) => (\n\t\t\t\t<Button\n\t\t\t\t\tvariant='outlined'\n\t\t\t\t\tstartIcon={<Add />}\n\t\t\t\t\tclassName='add-row-btn'\n\t\t\t\t\tdisabled={disableNextEdit}\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tsetValidationErrors({});\n\t\t\t\t\t\ttable.setCreatingRow(true); //simplest way to open the create row modal with no default values\n\t\t\t\t\t\tsetDisableNextEdit(true)\n\t\t\t\t\t}}>\n\t\t\t\t\t{t('common.add')}\n\t\t\t\t</Button>\n\t\t\t)\n\t\t}),\n\t\tonRowSelectionChange: setRowSelection,\n\t\tenableColumnOrdering: true,\n\t\tenableRowSelection: enableRowSelection ?? true,\n\t\tenableEditing: enableEditing instanceof Function ? enableEditing() : enableEditing ?? true,\n\t\teditDisplayMode: editDisplayMode ?? 'cell',\n\t\tcreateDisplayMode: 'row',\n\t\tenableColumnResizing: enableColumnResizing,\n\t\tenableRowDragging: enableRowDragging,\n\t\tenableTopToolbar: false,\n\t\tenableColumnActions: false,\n\t\tenableSorting: true,\n\t\tenableGrouping: true,\n\t\tenableBottomToolbar: enableBottomToolbar ?? false,\n\t\tenableColumnDragging: enableColumnDragging ?? true,\n\t\tenableStickyHeader: true,\n\t\tenableSortingRemoval: false,\n\t\t// column ordering\n\t\tstate: {\n\t\t\t// columnOrder: (!columnOrder || columnOrder.length <= 1) \n\t\t\t// ? [...internalColumnOrder] \n\t\t\t// : [...columnOrder],\n\t\t\tcolumnOrder: columnOrder,\n\t\t\tcolumnPinning: { left: ['actions', 'mrt-row-actions'] },\n\t\t\tisSaving: isCreatingRow || isEditingRow,\n\t\t\tshowProgressBars: false,\n\t\t\trowSelection,\n\t\t\t...states,\n\t\t\tsorting: Array.isArray(states?.sorting) ? states?.sorting :\n\t\t\t\tArray.isArray(sorting) ? sorting : [],\n\t\t\tcolumnSizing,\n\t\t\tshowLoadingOverlay: false\n\n\t\t},\n\t\tgetRowId: (row) => row?.id,\n\t\t// table.getState().editingRow\n\t\tmuiTableBodyRowProps: ({ row }) => {\n\t\t\tconst editingRowId =\n\t\t\t\ttable.getState()?.editingRow?.id ||\n\t\t\t\ttable.getState()?.creatingRow?.id ||\n\t\t\t\tnull;\n\t\t\tconst isErrorRow = Boolean(row?.original?.has_error)\n\t\t\treturn {\n\t\t\t\tonClick: () => handleRowClick(row.id),\n\t\t\t\tsx: {\n\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t// backgroundColor: !editingRowId\n\t\t\t\t\t// \t? (selectedRow === row.id\n\t\t\t\t\t// \t\t? '#e8e8e8'\n\t\t\t\t\t// \t\t: (isErrorRow ? 'theme.error.100' : 'inherit'))\n\t\t\t\t\t// \t: 'inherit',\n\t\t\t\t\tbackgroundColor: !editingRowId\n\t\t\t\t\t\t? (isErrorRow ? 'theme.error.100' : 'inherit')\n\t\t\t\t\t\t: 'inherit',\n\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\tbackgroundColor: editingRowId ? 'transparent' : (isErrorRow ? 'theme.error.200' : '#e8e8e8') // Removes hover effect globally\n\t\t\t\t\t},\n\t\t\t\t\t'&:hover td:after': {\n\t\t\t\t\t\tbackgroundColor: 'transparent' // Removes the grey background applied via :after\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\tonColumnOrderChange: (colOrder: any) => {\n\t\t\tif (handleColumnOrdering) handleColumnOrdering(colOrder);\n\t\t},\n\t\tonColumnSizingChange: setColumnSizing,\n\t\tonColumnSizingInfoChange: setColumnSizingInfo,\n\n\t\trenderEmptyRowsFallback: () => (\n\t\t\t<Box className='no-data'>\n\t\t\t\t<img src={images.common.tableNoData} />\n\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\t{/* sx={{ textAlign: 'center', pb: 4.75, pt: 4.75 }}> */}\n\t\t\t\t\t{t('common.noData')}\n\t\t\t\t</Typography>\n\t\t\t</Box>\n\t\t),\n\n\t\t// pagination\n\t\tenablePagination: enablePagination,\n\t\tpaginationDisplayMode: 'pages',\n\t\tmuiPaginationProps: {\n\t\t\tshape: 'rounded',\n\t\t\tpage: pageNo, // current page number\n\t\t\tcount: totalPages, // total pages\n\t\t\tshowRowsPerPage: false, // Hide rows per page options\n\t\t\tboundaryCount: 3\n\t\t},\n\n\t\tmuiEditTextFieldProps: ({ row, column }) => ({\n\t\t\tInputProps: {\n\t\t\t\tdisableUnderline: true\n\t\t\t},\n\t\t\tonBlur: (e) => {\n\t\t\t\tupdateData(e.target.value, column, row.id);\n\t\t\t},\n\t\t\t// onChange: (e) => {\n\t\t\t// \tupdateData(e.target.value, column, row.id);\n\t\t\t// },\n\t\t\tvariant: 'outlined',\n\t\t\tsx: ({ palette }) => ({\n\t\t\t\t'& .MuiOutlinedInput-root': {\n\t\t\t\t\t'& fieldset': {\n\t\t\t\t\t\tborderColor: `${palette.theme?.primary[700]} !important`\n\t\t\t\t\t\t// backgroundColor: palette.theme?.primary[700]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}),\n\n\t\t/* Table loader style */\n\t\tmuiCircularProgressProps: {\n\t\t\tComponent: null,\n\t\t\tsx: {\n\t\t\t\tcolor: '#289B64'\n\t\t\t}\n\t\t},\n\n\t\t// Table header cell default styles\n\t\tmuiTableHeadCellProps: {\n\t\t\tsx: {\n\t\t\t\tlineHeight: '140%',\n\t\t\t\tletterSpacing: '-0.28px',\n\t\t\t\tfontWeight: '500',\n\t\t\t\tfontSize: '0.875rem',\n\t\t\t\t'& .Mui-TableHeadCell-Content': {\n\t\t\t\t\theight: '100%'\n\t\t\t\t},\n\t\t\t\t'& .Mui-TableHeadCell-Content-Labels': {\n\t\t\t\t\twidth: '100%',\n\t\t\t\t\tjustifyContent: 'space-between'\n\t\t\t\t},\n\t\t\t\t'&.pinned-column': {\n\t\t\t\t\tbackgroundColor: '#fff'\n\t\t\t\t},\n\t\t\t\t'& .Mui-TableHeadCell-ResizeHandle-Wrapper': {\n\t\t\t\t\tpadding: 0,\n\t\t\t\t\tmargin: 0,\n\t\t\t\t\tright: '-5px',\n\t\t\t\t\topacity: 0\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\n\t\t// Table body cell default styles\n\t\tmuiTableBodyProps: {\n\t\t\tsx: {\n\t\t\t\tzIndex: 500\n\t\t\t}\n\t\t},\n\t\tmuiTableHeadProps: {\n\t\t\tsx: {\n\t\t\t\tzIndex: 600\n\t\t\t}\n\t\t},\n\t\tmuiTableBodyCellProps: (/* { cell, column, table , row } */) => ({\n\t\t\tsx: {\n\t\t\t\tlineHeight: '140%',\n\t\t\t\tletterSpacing: '-0.26px',\n\t\t\t\tfontWeight: '400',\n\t\t\t\tfontSize: '0.8125rem',\n\t\t\t\t'&.pinned-column': {\n\t\t\t\t\tbackgroundColor: '#fff'\n\t\t\t\t},\n\t\t\t\t'&:hover': {\n\t\t\t\t\tbackgroundColor: 'transparent' // Removes hover effect globally\n\t\t\t\t}\n\t\t\t}\n\t\t\t// onClick: () => {\n\t\t\t// \ttable.setEditingCell(cell); //set editing cell\n\t\t\t// \tqueueMicrotask(() => {\n\t\t\t// \t\tconst textField = table.refs.editInputRefs.current[column.id];\n\t\t\t// \t\tif (textField) {\n\t\t\t// \t\t\ttextField.focus();\n\t\t\t// \t\t\ttextField.select?.();\n\t\t\t// \t\t}\n\t\t\t// \t});\n\t\t\t// }\n\t\t\t// onKeyDown: (event) => {\n\t\t\t// \tif (event.key === 'Tab') {\n\t\t\t// \t\ttry {\n\t\t\t// \t\t\t\t// if (column.columnDef.editVariant === 'select') {\n\t\t\t// \t\t\t\t// \ttable.refs.editInputRefs.current[column.id]?.node?.blur();\n\t\t\t// \t\t\t\t// } else {\n\t\t\t// \t\t\t\t// \ttable.refs.editInputRefs.current[column.id].blur();\n\t\t\t// \t\t\t\t// }\n\n\t\t\t// \t\t\tconst rowIdx = row.index;\n\t\t\t// \t\t\tconst colIdx = columns.findIndex(\n\t\t\t// \t\t\t\t(col) => col.accessorKey === column.id\n\t\t\t// \t\t\t);\n\t\t\t// \t\t\tconst newColIdx = colIdx + 1;\n\t\t\t// \t\t\tconst clm = columns[newColIdx];\n\t\t\t// \t\t\tconst nextCell = row\n\t\t\t// \t\t\t\t.getAllCells()\n\t\t\t// \t\t\t\t.find((cl) => (cl.id = `${rowIdx}_${clm.accessorKey}`));\n\n\t\t\t// \t\t\tif (nextCell) {\n\t\t\t// \t\t\t\t// updateData(event.target.value, column, row.id);\n\t\t\t// \t\t\t\ttable.setEditingCell(nextCell);\n\t\t\t// \t\t\t\tqueueMicrotask(() => {\n\t\t\t// \t\t\t\t\tconst textField = table.refs.editInputRefs.current[column.id];\n\t\t\t// \t\t\t\t\tif (textField) {\n\t\t\t// \t\t\t\t\t\ttextField.focus();\n\t\t\t// \t\t\t\t\t\ttextField.select?.();\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} catch (error) {\n\t\t\t// \t\t}\n\t\t\t// \t}\n\t\t\t// },\n\t\t\t// onBlur: () => {\n\t\t\t// \ttable.setEditingCell(null);\n\t\t\t// }\n\t\t}),\n\n\t\t// Checkbox styling\n\t\tmuiSelectCheckboxProps: {\n\t\t\tsx: {\n\t\t\t\tcolor: 'theme.secondary.300',\n\t\t\t\t'&.Mui-checked': {\n\t\t\t\t\tcolor: 'theme.primary.600',\n\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\tcolor: 'theme.primary.500'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'&.Mui-disabled': {\n\t\t\t\t\tcolor: 'theme.secondary.200'\n\t\t\t\t}\n\t\t\t},\n\t\t\ticon: <RecgtangleIcon sx={{ width: 20, height: 20 }} />,\n\t\t\tcheckedIcon: <CheckBoxIcon sx={{ width: 20, height: 20 }} />\n\t\t},\n\t\tmuiSelectAllCheckboxProps: {\n\t\t\tsx: {\n\t\t\t\tcolor: 'theme.secondary.300',\n\t\t\t\t'&.Mui-checked': {\n\t\t\t\t\tcolor: 'theme.primary.600',\n\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\tcolor: 'theme.primary.500'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'&.Mui-disabled': {\n\t\t\t\t\tcolor: 'theme.secondary.600'\n\t\t\t\t}\n\t\t\t},\n\t\t\ticon: <RecgtangleIcon sx={{ width: 20, height: 20 }} />,\n\t\t\tcheckedIcon: <CheckBoxIcon sx={{ width: 20, height: 20 }} />\n\t\t},\n\t\tmuiBottomToolbarProps: {\n\t\t\tsx: {\n\t\t\t\tboxShadow: 'none',\n\t\t\t\t'& .MuiBox-root': {\n\t\t\t\t\tpaddingLeft: 0\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tlayoutMode: 'grid',\n\t\ticons: {\n\t\t\tArrowDownwardIcon: (props: SvgIconProps) => (\n\t\t\t\t<ArrowUpDown fontSize='medium' {...props} />\n\t\t\t),\n\t\t\tSortIcon: (props: SvgIconProps) => (\n\t\t\t\t<ArrowUpDown fontSize='medium' {...props} />\n\t\t\t),\n\t\t\tSyncAltIcon: () => <ArrowUpDown fontSize='medium' />,\n\t\t\tCancelIcon: (props: SvgIconProps) => (\n\t\t\t\t<Close fontSize='small' {...props} sx={{ color: 'theme.secondary.1000' }} />\n\t\t\t),\n\t\t\tSaveIcon: (props: SvgIconProps) => (\n\t\t\t\t<Save {...props} fontSize='small' sx={{ color: 'theme.secondary.1000' }} />\n\t\t\t)\n\t\t},\n\n\t\t...rest\n\t});\n\n\tuseEffect(() => {\n\t\tif (enableRowSelection) {\n\t\t\tif (table?.getSelectedRowModel()?.rows) {\n\t\t\t\tSetSelectedRowId?.(table?.getSelectedRowModel()?.rows);\n\t\t\t}\n\t\t}\n\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [enableRowSelection]);\n\n\tuseEffect(() => {\n\t\tif (onSelectRow) {\n\t\t\tif (rest?.enableExpanding) {\n\t\t\t\tconst selectedRowModels: any[] = [];\n\t\t\t\tconst selection = table.getState().rowSelection; // e.g., { 0.0: true }\n\t\t\t\tconst traverseRows = (rows, parentKey = '') => {\n\t\t\t\t\trows.forEach((row, index) => {\n\t\t\t\t\t\tconst rowKey = parentKey ? `${parentKey}.${index}` : `${row.id}`;\n\t\t\t\t\t\tif (selection[rowKey]) {\n\t\t\t\t\t\t\tselectedRowModels.push(row);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Check for sub-rows and traverse further\n\t\t\t\t\t\tif (row.subRows?.length) {\n\t\t\t\t\t\t\ttraverseRows(row.subRows, rowKey);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t};\n\n\t\t\t\ttraverseRows(table.getRowModel().rows);\n\t\t\t\tonSelectRow(selectedRowModels, rowSelection);\n\t\t\t} else {\n\t\t\t\tonSelectRow(table.getSelectedRowModel().rows, rowSelection);\n\t\t\t}\n\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [rowSelection, table]);\n\n\t// useEffect(() => {\n\t// \tconst relativeContainer = document.getElementsByClassName(\n\t// \t\t'MuiTableContainer-root'\n\t// \t)[0];\n\t// \tconst fixedElement = document.getElementsByClassName('no-data')[0];\n\t// \trelativeContainer.addEventListener('scroll', () => {\n\t// \t\tconst scrollLeft = relativeContainer.scrollLeft;\n\t// \t\tfixedElement.style.left = `${scrollLeft + 100}px`;\n\t// \t});\n\t// }, []);\n\n\tuseEffect(() => {\n\t\tif (isResetRow) {\n\t\t\ttable?.resetRowSelection();\n\t\t}\n\t}, [isResetRow, table]);\n\treturn (\n\t\t<TableWrapper className='MRT-TableWrapper custom-table' disableMaxHeight={disableMaxHeight}>\n\t\t\t<MaterialReactTable table={table} />\n\n\t\t\t<Menu\n\t\t\t\tanchorEl={anchorEl}\n\t\t\t\topen={Boolean(anchorEl)}\n\t\t\t\tonClose={handleHeaderClose}\n\t\t\t\tclassName='add-role-drp'>\n\t\t\t\t{popUpShow ? (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={handleBackButtonClick}\n\t\t\t\t\t\t\tclassName='role-drp-list add-column-title'>\n\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\n\t\t\t\t\t\t\t\t<ChevronLeftIcon />\n\t\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t\t<ListItemText className='title'>\n\t\t\t\t\t\t\t\t{t('common.addColumn_label')}\n\t\t\t\t\t\t\t</ListItemText>\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t<Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n\t\t\t\t\t\t<div className='searchbar-box-list'>\n\t\t\t\t\t\t\t<SearchBar\n\t\t\t\t\t\t\t\tplaceholder={'Search User'}\n\t\t\t\t\t\t\t\thandleSearch={(e) => handleSearchEvent(e)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className='all-attribute-title'>\n\t\t\t\t\t\t\t<Typography variant='body2' color='text.secondary'>\n\t\t\t\t\t\t\t\t{t('common.allAttributes_label')}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{filteredOptions.map((column: any) => (\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\tkey={column.accessorKey}\n\t\t\t\t\t\t\t\tonClick={() => handleAddColumn(column)}>\n\t\t\t\t\t\t\t\t<Typography color='theme.secondary.1000' type='s3'>\n\t\t\t\t\t\t\t\t\t{column.header}\n\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t<Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenableAddCustomField && <MenuItem onClick={handleCustomAddColumn} className='role-drp-list'>\n\t\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\n\t\t\t\t\t\t\t\t\t<img src={images.common.addIcon} alt='Add Icon' />\n\t\t\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t\t\t<ListItemText className='title'>\n\t\t\t\t\t\t\t\t\t{t('common.addCustomField_label')}\n\t\t\t\t\t\t\t\t</ListItemText>\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{visibleColumns.map((column: any) => (\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\tkey={column.accessorKey}\n\t\t\t\t\t\t\t\tonClick={() => handleVisibleColumn(column)}\n\t\t\t\t\t\t\t\tclassName='role-drp-list'>\n\t\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\n\t\t\t\t\t\t\t\t\t<img src={images.common.dotsIcon} alt='Add Icon' />\n\t\t\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t\t\t<ListItemText className='title'>{column.header}</ListItemText>\n\t\t\t\t\t\t\t\t<ListItemIcon className='eye-icon'>\n\t\t\t\t\t\t\t\t\t<img src={images.common.eyeIcon} alt='Eye Icon' />\n\t\t\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t<Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n\t\t\t\t\t\t<MenuItem onClick={handleAddButtonClick} className='role-drp-list'>\n\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\n\t\t\t\t\t\t\t\t<img src={images.common.addIcon} alt='Add Icon' />\n\t\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t\t<ListItemText className='title'>\n\t\t\t\t\t\t\t\t{t('common.addColumn_label')}\n\t\t\t\t\t\t\t</ListItemText>\n\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\tvariant='body2'\n\t\t\t\t\t\t\t\tcolor='text.secondary'\n\t\t\t\t\t\t\t\tclassName='eye-icon'>\n\t\t\t\t\t\t\t\t<ChevronRightIcon sx={{ fontSize: '1.25rem !important' }} />\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</Menu>\n\n\t\t\t<Menu\n\t\t\t\tanchorEl={rowAnchorEl}\n\t\t\t\topen={Boolean(rowAnchorEl)}\n\t\t\t\tonClose={handleActionsClose}>\n\t\t\t\t{rowActionMenu?.map((option: any) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\t(option.label === 'Move' &&\n\t\t\t\t\t\t\t(row?.is_directory === true || row?.is_directory === 1)) ||\n\t\t\t\t\t\t(option.label === 'Download' &&\n\t\t\t\t\t\t\t(row?.is_directory === true ||\n\t\t\t\t\t\t\t\trow?.is_directory === 1 ||\n\t\t\t\t\t\t\t\trow?.drive?.is_directory === true ||\n\t\t\t\t\t\t\t\trow?.drive?.is_directory === 1))\n\t\t\t\t\t) {\n\t\t\t\t\t\t// return null;\n\t\t\t\t\t}\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={async () => {\n\t\t\t\t\t\t\t\tawait option.handleAction(row);\n\t\t\t\t\t\t\t\tsetRowAnchorEl(null);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\ttypeof option.disabled === 'function'\n\t\t\t\t\t\t\t\t\t? option.disabled(row)\n\t\t\t\t\t\t\t\t\t: Boolean(option.disabled)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsx={{ alignItems: 'center', gap: 0.5 }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{option?.icon}\n\t\t\t\t\t\t\t<Typography type='s4' color='inherit'>\n\t\t\t\t\t\t\t\t{typeof option.label === 'function' ? option.label(row) : option.label}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t\t{destructiveActionMenu?.length > 0 &&\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n\t\t\t\t\t\t<div className='dropdown-inner--DestructiveHeader'>\n\t\t\t\t\t\t\t{destructiveActionMenu?.map((option: any) => (\n\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\toption.handleAction(row);\n\t\t\t\t\t\t\t\t\t\tsetRowAnchorEl(null);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tclassName='dropdown-inner--DestructiveActions'\n\t\t\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t\t\ttypeof option.disabled === 'function'\n\t\t\t\t\t\t\t\t\t\t\t? option.disabled(row)\n\t\t\t\t\t\t\t\t\t\t\t: Boolean(option.disabled)\n\t\t\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t\t\t\t<Typography type='s4' color='inherit'>\n\t\t\t\t\t\t\t\t\t\t{typeof option.label === 'function' ? option.label(row) : option.label}\n\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t</Menu>\n\t\t\t<ConfirmPopUp\n\t\t\t\topen={Boolean(rowToDelete)}\n\t\t\t\tonClose={() => setRowToDelete(null)}\n\t\t\t\tonConfirm={() => handleRowDelete()}\n\t\t\t\ttitle='Delete Item'\n\t\t\t\tdescription={`Are you sure you want to delete entry ?`}\n\t\t\t\tloading={isDeletingRow}\n\t\t\t/>\n\t\t</TableWrapper>\n\t);\n});\n\nexport default MaterialTable;","import { Box, DialogActions, DialogContent, DialogTitle, Divider, Grid, IconButton } from \"@mui/material\";\nimport Modal from '../modal/modal';\nimport Typography from \"../typography/typography\";\nimport DynamicInput from '../form-control/form-builder/form-builder-element/text';\nimport DynamicRadioButton from '../form-control/form-builder/form-builder-element/radio-button';\nimport { useForm, useWatch } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { generateValidationSchema, generateValidationSchema1 } from \"./validator\";\nimport DynamicSearchSelect from \"../form-control/form-builder/form-builder-element/dynamic-select\";\nimport DynamicPhone from '@/components/form-control/form-builder/form-builder-element/phone';\nimport Accordion from \"../accordion/accordion\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport _ from \"lodash\";\nimport './parties-modal.scss';\nimport { useAccountingSetting } from \"../../hooks/useAccountSetting\";\nimport { useAuth } from '@erpsquad/common/runtime';\nimport { checkUniqueFields } from '../../utils/common';\nimport { getApiConfigSafe } from '../../utils/api-config';\nimport {\n addressColumns,\n addressOmitKeys,\n addressPayload,\n contactColumns,\n contactOmitKeys,\n contactPayload,\n PARTIES_FIELDS,\n PARTIES_FORM_ARRAY_NAME,\n partyType,\n processPartiesPayload\n} from \"./utils/constant\";\nimport MaterialTable from \"../material-table/material-table\";\nimport parsePhoneNumberFromString from \"libphonenumber-js\";\nimport Checkbox from \"../checkbox/checkbox\";\nimport { transformTableColumns } from \"../../utils/common-utility\";\nimport { createParties } from \"../../redux/actionCreator\";\nimport { useDispatch } from \"react-redux\";\nimport { enqueueSnackbar } from 'notistack';\nimport { getErrorMessage } from \"../../utils/common\";\nimport ModalLoader from \"../loaders/modal-loader\";\nimport Button from \"../button/button\";\nimport { Close } from \"@mui/icons-material\";\n\ninterface CustomerVendorModalProps {\n isOpen: boolean;\n handleModalClose?: () => void;\n modalProps?: any;\n type?: string;\n partyCreated?: () => void;\n isLoading?: boolean;\n onSave?: (payload: any) => Promise<void>;\n setIsOpen?: (value: boolean) => void;\n}\n\ninterface LocationState {\n state: any;\n country: any;\n}\n\nconst defaultLocationState: LocationState = { state: '', country: '' };\n\nexport default function CustomerVendorModal({\n isOpen,\n handleModalClose,\n modalProps,\n type,\n partyCreated,\n isLoading,\n onSave,\n setIsOpen\n}: CustomerVendorModalProps) {\n\n //Hooks\n const { t } = useTranslation();\n const dispatch = useDispatch();\n const { user } = useAuth();\n const isKSA = getApiConfigSafe()?.countryEnv === 'ksa';\n\n //Refs\n const locationRef = useRef<LocationState>(defaultLocationState);\n\n //Local states\n const [addressRows, setAddressRows] = useState<any[]>([]);\n const [contactRows, setContactRows] = useState<any[]>([]);\n const [isCreating, setIsCreating] = useState(false);\n const [selectedCompanyData, setSelectedCompanyData] = useState<any[]>([]);\n const lastCheckedValues = useRef<Record<string, any>>({})\n\n //Form\n const {\n control,\n formState: { errors },\n trigger,\n getValues,\n handleSubmit,\n setValue,\n resetField,\n reset,\n watch,\n getFieldState,\n setError\n\n } = useForm({\n defaultValues: {\n status: true,\n parties: {\n account_type: 'Company',\n },\n },\n mode: 'all',\n resolver: generateValidationSchema1()\n });\n\n const fieldToUpdate = {\n [PARTIES_FIELDS.RECEIVABLE_ACCOUNT]: 'receivable_account',\n [PARTIES_FIELDS.TAX_TEMPLATE]: 'default_tax',\n };\n\n useAccountingSetting({\n fieldToUpdate,\n companyField: PARTIES_FIELDS.COMPANY,\n fieldArrayName: PARTIES_FORM_ARRAY_NAME,\n formMethods: { control, setValue, watch, getFieldState },\n ...({ isUpdateAccount: true } as any),\n });\n\n\n const selectedType = useWatch({\n control,\n name: 'parties.account_type',\n });\n\n const responsiblePerson = useWatch({\n control,\n name: `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.RESPONSIBLE_PERSON}`,\n });\n\n const mainContactNo = useWatch({\n control,\n name: `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.CONTACT_NO}`,\n });\n\n const mainEmailIds = useWatch({\n control,\n name: `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.EMAIL_IDS}`,\n });\n\n const checkUniqueness = useCallback(async () => {\n const values = getValues()\n const formValues = values?.[PARTIES_FORM_ARRAY_NAME]\n const fieldsToCheck = ['crn', 'email_ids', 'company_name']\n const allFields = ['crn', 'email_ids', 'contact_no', 'company_name']\n\n const nothingChanged = fieldsToCheck.every(\n (field) => lastCheckedValues.current[field] === formValues?.[field]\n )\n if (nothingChanged) return true\n\n const payload = {}\n allFields.forEach((field) => (payload[field] = formValues?.[field]))\n\n const response = await checkUniqueFields(payload)\n let isUnique = true\n\n for (const [field, exists] of Object.entries(response)) {\n if (exists) {\n setError(`${PARTIES_FORM_ARRAY_NAME}.${field}`, {\n type: 'manual',\n message: `${field.replace(/_/g, ' ').toLowerCase()} already exists`,\n })\n isUnique = false\n }\n }\n\n lastCheckedValues.current = { ...formValues }\n\n return isUnique\n }, [getValues, setError])\n\n const handleFieldBlur = useCallback(\n async (fieldName: string) => {\n const uniquenessFields = ['crn', 'email_ids', 'company_name']\n if (!uniquenessFields.includes(fieldName)) return\n await checkUniqueness()\n },\n [checkUniqueness]\n )\n\n //Call Back functions\n const tableColumns = useCallback(\n (columns: any, tableRows: any) => {\n const phoneNumberCache = new Map();\n\n return transformTableColumns({\n columns,\n currencySymbol: undefined,\n translationFn: t,\n enableFooter: false,\n redirectionLink: undefined,\n redirectionLinkState: undefined,\n rows: tableRows,\n statusClasses: undefined,\n customizeValue: (row, columnAccessorKey, value) => {\n switch (columnAccessorKey) {\n case 'default_shipping_address':\n case 'default_billing_address': {\n return (\n <Box sx={{ display: \"flex\", gap: 1 }}>\n <Checkbox\n checked={Boolean(value)}\n sx={{ pointerEvents: 'none' }}\n />\n </Box>\n );\n }\n\n case 'phone':\n case 'contact_no': {\n if (!value) return '';\n const phoneKey = `phone-${value}`;\n if (!phoneNumberCache.has(phoneKey)) {\n const parsed = parsePhoneNumberFromString(`+${value}`);\n phoneNumberCache.set(phoneKey, parsed?.nationalNumber || '');\n }\n return phoneNumberCache.get(phoneKey);\n }\n\n case 'country_code': {\n const phone = row?.original?.phone || row?.original?.contact_no;\n if (!phone) return '';\n const countryCodeKey = `country-${phone}`;\n if (!phoneNumberCache.has(countryCodeKey)) {\n const parsed = parsePhoneNumberFromString(`+${phone}`);\n phoneNumberCache.set(countryCodeKey,\n parsed?.countryCallingCode ? `+${parsed.countryCallingCode}` : ''\n );\n }\n return phoneNumberCache.get(countryCodeKey);\n }\n\n default:\n return value;\n }\n }\n });\n },\n [t]\n );\n\n //Methods\n\n const handleRowOperation = async (\n eData: any,\n state: any[],\n setState: React.Dispatch<React.SetStateAction<any[]>>,\n isAddress: boolean\n ) => {\n try {\n const { values, row } = eData;\n const editRow = row.index >= 0;\n const payload = isAddress ? addressPayload : contactPayload;\n\n const processedValues: any = {};\n for (const key in payload) {\n if (_.has(values, key)) {\n processedValues[key] = values?.[key] ? values[key] : null;\n }\n }\n\n if (isAddress) {\n const dropdowns = {\n c: locationRef.current?.country,\n s: locationRef.current?.state,\n };\n\n const validatedValues = await validateAddressDefaults(processedValues, state, row.index);\n const addressValues = {\n ...validatedValues,\n country_name: dropdowns.c?.name,\n country: dropdowns.c?.id,\n state_name: dropdowns.s?.name,\n state: dropdowns.s?.id,\n country_data: dropdowns.c,\n state_data: dropdowns.s,\n country_id: dropdowns.c?.id,\n state_id: dropdowns.s?.id,\n };\n\n if (editRow) {\n return setState(state.map((ar, i) => i === row.index ? { ...ar, ...addressValues } : ar));\n }\n return setState([...state, addressValues]);\n }\n\n if (editRow) {\n return setState(state.map((ar, i) => i === row.index ? { ...ar, ...processedValues } : ar));\n }\n return setState([...state, processedValues]);\n } catch (error) {\n return Promise.reject(error);\n }\n };\n\n const validateAddressDefaults = async (values: any, state: any[], index: number) => {\n let updatedValues = { ...values };\n const validate = (type: \"shipping\" | \"billing\") => {\n const u_data = [...state];\n const field = type === 'shipping' ? 'default_shipping_address' : 'default_billing_address';\n if (index >= 0) {\n u_data.splice(index, 1);\n }\n const hasDefault = u_data.some((d: any) => d?.[field]);\n\n if (hasDefault && values?.[field]) {\n throw new Error(\n `Another address is already marked as the default ${type} address. Please uncheck that before selecting this one`\n );\n }\n else if (!hasDefault) {\n updatedValues = {\n ...updatedValues,\n [field]: values?.[field] || state?.length == 0 ? 1 : 0,\n };\n }\n\n };\n\n await validate(\"shipping\");\n await validate(\"billing\");\n\n return updatedValues;\n };\n\n const deleteRow = async (\n state: any[],\n setState: React.Dispatch<React.SetStateAction<any[]>>,\n row: any\n ) => {\n const rowIndex = row.index;\n const updatedData = state.filter((_, i) => i !== rowIndex);\n setState(updatedData);\n return Promise.resolve();\n };\n\n const onChangeAddressTableField = async (e: any, t: any, r: any, col: any, selectedData: any) => {\n const fieldName = e?.target?.name;\n let updatedValues: any = null;\n\n if (col?.editProperties?.field_name) {\n locationRef.current = {\n ...locationRef.current,\n [col.editProperties.field_name]: selectedData,\n };\n }\n\n if (fieldName === 'country') {\n updatedValues = {\n ...r._valuesCache,\n country: selectedData.id,\n country_id: selectedData.id,\n state: null,\n state_id: null,\n state_name: null,\n };\n } else if (fieldName === 'state') {\n updatedValues = {\n ...r._valuesCache,\n state: selectedData.id,\n state_id: selectedData.id\n };\n } else if (fieldName === 'phone') {\n const p = parsePhoneNumberFromString(`+${e}`);\n updatedValues = {\n ...r._valuesCache,\n country_code: p?.countryCallingCode ? `+${p.countryCallingCode}` : '',\n };\n }\n\n const summaryFields = [\n 'contact_name',\n 'street_1',\n 'street_2',\n 'street_3',\n 'building_no',\n 'additional_no',\n 'zip_code',\n 'city',\n 'state',\n 'country'\n ];\n\n if (r._valuesCache) {\n const fieldValues = summaryFields.map(field => {\n if (field === 'country') {\n return locationRef.current?.country?.name || '';\n } else if (field === 'state') {\n return locationRef.current?.state?.name || '';\n } else if (field === fieldName) {\n return e.target?.value || '';\n }\n return r._valuesCache?.[field] || '';\n });\n\n const summary = fieldValues.reduce((acc, val, idx) => {\n if (!val) return acc;\n if (!acc) return val;\n\n val = val?.name || val;\n acc = acc?.name || acc;\n\n return [2, 3, 4, 5].includes(idx) ? `${acc} ${val}` : `${acc}, \\n${val}`;\n }, '');\n\n r._valuesCache.summary = summary;\n }\n\n if (updatedValues) {\n r.getAllCells().forEach((c: any) => {\n if (_.has(updatedValues, c.column.id)) {\n r._valuesCache[c.column.id] = updatedValues[c.column.id];\n }\n });\n }\n\n return r._valuesCache;\n };\n\n\n\n const EMAIL_REGEX =\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,}))$/;\n\nconst onSubmit = async () => {\n const isValid = await trigger();\n if (!isValid) return;\n\n const isUnique = await checkUniqueness()\n if (!isUnique) return\n\n const values = getValues();\n const formValues = values?.[PARTIES_FORM_ARRAY_NAME];\n let emailArray: string[] = [];\n\n if (formValues?.email_ids) {\n emailArray = formValues?.email_ids\n ?.split(/\\s*,\\s*/)\n .map((email_id: any) => email_id?.replaceAll(',', '')?.trim())\n .filter((email_id: any) => email_id.match(EMAIL_REGEX));\n }\n\n const payload = {\n party: {\n ...processPartiesPayload(formValues),\n email_ids: emailArray,\n account_type: selectedType,\n status: 1,\n type,\n company_id: formValues?.[PARTIES_FIELDS.COMPANY] || null\n }\n };\n if (typeof onSave == 'function') {\n onSave?.(payload);\n return;\n }\n setIsCreating(true);\n try {\n\n const res = await dispatch(createParties(payload));\n\n if (res?.meta?.requestStatus === 'fulfilled') {\n enqueueSnackbar(`${type} ${t('common.party.msg.success')}`);\n closeModal();\n partyCreated();\n } else if (res?.meta?.requestStatus === 'rejected') {\n const errorMessage = getErrorMessage(res?.error?.message);\n enqueueSnackbar(errorMessage, { variant: 'error' });\n }\n } finally {\n setIsCreating(false);\n }\n };\n\n const closeModal = () => {\n resetForm()\n setAddressRows([]);\n setContactRows([]);\n handleModalClose?.();\n setIsOpen?.(false);\n }\n const resetForm = () => {\n reset();\n }\n\n //Use Effect\n useEffect(() => {\n const addressData = addressRows.map(a => _.omit(a, addressOmitKeys));\n setValue(`${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.ADDRESS}`, addressData);\n }, [addressRows, setValue]);\n\n useEffect(() => {\n const contactData = contactRows.map(c => _.omit(c, contactOmitKeys));\n setValue(`${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.CONTACTS}`, contactData);\n }, [contactRows, setValue]);\n\n useEffect(() => {\n setIsCreating(isLoading)\n }, [isLoading]);\n\n\n useEffect(() => {\n if (selectedType === 'Individual') {\n // Clear Company fields\n resetField('parties.company_name');\n resetField('parties.vat_number');\n resetField('parties.crn');\n }\n\n if (selectedType === 'Company') {\n // Clear Individual fields\n resetField('parties.first_name');\n resetField('parties.last_name');\n }\n }, [selectedType, resetField]);\n\n// Pre-fill company and currency from user data when modal opens\nuseEffect(() => {\n\t\tif (isOpen && user?.company_data) {\n\t\t\tconst companyId =\n\t\t\t\tuser?.entity_priority ||\n\t\t\t\tuser?.company_data?.id ||\n\t\t\t\t(Array.isArray(user?.company_data) && user?.company_data[0]?.id) ||\n\t\t\t\tnull;\n\n\n\t\t\tif (companyId) {\n\t\t\t\tsetValue('quotation.company_id', companyId);\n setValue(`${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.COMPANY}`, companyId);\n\t\t\t}\n\t\t}\n }, [isOpen, user?.company_data, setValue]);\n\n useEffect(() => {\n if (isOpen && user?.company_currencies) {\n const currencies = Object.values(user.company_currencies);\n if (currencies.length > 0) {\n setValue(`${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.CURRENCY}`, [currencies[0].id]);\n }\n }\n }, [isOpen, user?.company_currencies , setValue]);\n\n // Auto fill first contact row\n useEffect(() => {\n const firstContactRow = contactRows[0];\n const parsedCountryCode = mainContactNo\n ? `+${parsePhoneNumberFromString(`+${mainContactNo}`)?.countryCallingCode || ''}`\n : '';\n\n const firstEmail = mainEmailIds\n ? mainEmailIds.split(/\\s*,\\s*/).map((e: string) => e.trim()).filter((e: string) => EMAIL_REGEX.test(e))[0] || ''\n : '';\n\n const updatedFirstRow = {\n name: responsiblePerson || '',\n contact_no: mainContactNo || '',\n email: firstEmail,\n country_code: parsedCountryCode,\n };\n\n if (firstContactRow) {\n const hasChanged = Object.keys(updatedFirstRow).some(\n (key) => firstContactRow[key] !== updatedFirstRow[key]\n );\n if (hasChanged) {\n const updatedRows = [...contactRows];\n updatedRows[0] = { ...updatedRows[0], ...updatedFirstRow };\n setContactRows(updatedRows);\n }\n } else {\n setContactRows([updatedFirstRow, ...contactRows]);\n }\n }, [responsiblePerson, mainContactNo, mainEmailIds]);\n\n // Auto fill first Address Row\n useEffect(() => {\n const firstRow = addressRows[0];\n const hasAddressDetails = firstRow?.address_type || firstRow?.street_1 || firstRow?.city;\n\n if (responsiblePerson && mainContactNo) {\n const parsedCountryCode = mainContactNo\n ? `+${parsePhoneNumberFromString(`+${mainContactNo}`)?.countryCallingCode || ''}`\n : '';\n\n // Create first row if doesn't exist yet\n if (!firstRow) {\n setAddressRows([{\n ...addressPayload,\n contact_name: responsiblePerson,\n phone: mainContactNo,\n country_code: parsedCountryCode,\n }]);\n return;\n }\n\n // Update first row ONLY if address details are not yet filled\n if (!hasAddressDetails) {\n const contactChanged = firstRow?.contact_name !== responsiblePerson;\n const phoneChanged = firstRow?.phone !== mainContactNo;\n\n if (contactChanged || phoneChanged) {\n setAddressRows(prev => prev.map((row, idx) =>\n idx === 0\n ? { ...row, contact_name: responsiblePerson, phone: mainContactNo, country_code: parsedCountryCode }\n : row\n ));\n }\n }\n }\n }, [responsiblePerson, mainContactNo]);\n\n const basicDetailsSection = useMemo(() => (\n <Accordion\n title={\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\n {t(\"common.party.sections.basic_details\")}\n </Typography>\n }\n accordionProps={{\n defaultExpanded: true,\n className: \"form--Accordion\",\n }}\n >\n <Grid container spacing={2}>\n\n <Grid item xs={12} sm={12}>\n <DynamicRadioButton\n label=''\n name={PARTIES_FIELDS.TYPE}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n options={partyType}\n display='row'\n title={t(t('common.party.fields.type'))}\n titlePosition='start'\n position={2} />\n </Grid>\n\n {selectedType === \"Individual\" && (\n <>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.firstName_label')}\n name={PARTIES_FIELDS.FIRST_NAME}\n placeholder={t('common.party.fields.firstName_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.lastName_label')}\n name={PARTIES_FIELDS.LAST_NAME}\n placeholder={t('common.party.fields.lastName_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n />\n </Grid>\n </>\n )}\n\n\n {selectedType === \"Company\" && (\n <>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.company_name_label')}\n name={PARTIES_FIELDS.COMPANY_NAME}\n placeholder={t('common.party.fields.company_name_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n onBlur={() => handleFieldBlur(PARTIES_FIELDS.COMPANY_NAME)}\n />\n </Grid>\n\n\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.vat_number_label')}\n name={PARTIES_FIELDS.VAT_NUMBER}\n placeholder={t('common.party.fields.vat_number_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n type=\"number\"\n max={15}\n onlyNumbers\n />\n </Grid>\n\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.crn_label')}\n name={PARTIES_FIELDS.CRN}\n placeholder={t('common.party.fields.crn_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n type=\"number\"\n max={10}\n onlyNumbers\n onBlur={() => handleFieldBlur(PARTIES_FIELDS.CRN)}\n />\n </Grid>\n </>\n )}\n\n <Grid item xs={12} sm={6}>\n <DynamicPhone\n type=\"text\"\n label={t('common.party.fields.contact_label')}\n name={PARTIES_FIELDS.CONTACT_NO}\n placeholder={t('common.party.fields.contact_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n />\n </Grid>\n\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.email_label')}\n name={PARTIES_FIELDS.EMAIL_IDS}\n placeholder={t('common.party.fields.email_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n onBlur={() => handleFieldBlur(PARTIES_FIELDS.EMAIL_IDS)}\n />\n </Grid>\n\n {/*Entity Name */}\n <Grid item xs={12} sm={6}>\n <DynamicSearchSelect\n label={t('common.party.fields.company_label')}\n apiType=\"company\"\n selectedLabel='Companies'\n name={PARTIES_FIELDS.COMPANY}\n placeholder={t('common.party.fields.company_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n />\n </Grid>\n\n <Grid item xs={12} sm={6}>\n <DynamicSearchSelect\n label={t('common.party.fields.currency_label')}\n apiType='currency'\n selectedLabel='Currency'\n name={PARTIES_FIELDS.CURRENCY}\n placeholder={t('common.party.fields.currency_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n is_multiselect\n />\n </Grid>\n\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.responsible_person_label')}\n name={PARTIES_FIELDS.RESPONSIBLE_PERSON}\n placeholder={t('common.party.fields.responsible_person_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n />\n </Grid>\n\n\n </Grid>\n </Accordion>\n ), [t, control, selectedType]);\n\n const accountingSection = useMemo(() => (\n <Accordion\n title={\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\n {t(\"common.party.sections.accounting\")}\n </Typography>\n }\n accordionProps={{\n defaultExpanded: true,\n className: \"form--Accordion\",\n }}\n >\n <Grid container spacing={2}>\n <Grid item xs={12} sm={6}>\n <DynamicSearchSelect\n label={t('common.party.fields.receivable_account_label')}\n apiType=\"accounts\"\n selectedLabel='Account'\n name={PARTIES_FIELDS.RECEIVABLE_ACCOUNT}\n placeholder={t('common.party.fields.receivable_account_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n customeFilter={{ '&account_type.eq': 'Receivable' }}\n options={[]}\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicSearchSelect\n label={t('common.party.fields.tax_template_label')}\n apiType=\"taxTemplate\"\n selectedLabel='Tax Template'\n name={PARTIES_FIELDS.TAX_TEMPLATE}\n placeholder={t('common.party.fields.tax_template_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n options={[]}\n />\n </Grid>\n </Grid>\n </Accordion>\n ), [t, control]);\n\n const addressSection = useMemo(() => (\n <Accordion\n title={\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\n {t(\"common.party.sections.address\")}\n <span className='errorIndicator'>*</span>\n {errors?.[PARTIES_FORM_ARRAY_NAME]?.[PARTIES_FIELDS.ADDRESS] && (\n <span className='error'>\n {errors?.[PARTIES_FORM_ARRAY_NAME]?.[PARTIES_FIELDS.ADDRESS]?.message}\n </span>\n )}\n </Typography>\n }\n accordionProps={{\n defaultExpanded: true,\n className: \"form--Accordion\",\n }}\n >\n <Grid spacing={4}>\n <Grid item xs={12}>\n <MaterialTable\n rows={[...addressRows]}\n columns={tableColumns(addressColumns(isKSA))}\n paginationModel={{ pageNo: 1, limit: 10 }}\n totalPages={20}\n enableColumnDragging={false}\n isResetRow={false}\n columnOrder={['mrt-row-select']}\n enableRowSelection={false}\n enableBottomToolbar\n disableDefaultActionColumn\n editDisplayMode='row'\n enableRowCreate\n onCreateRow={(data) => handleRowOperation(data, addressRows, setAddressRows, true)}\n onEditRow={(data) => handleRowOperation(data, addressRows, setAddressRows, true)}\n onDeleteRow={(row) => deleteRow(addressRows, setAddressRows, row)}\n onChangeRowField={onChangeAddressTableField}\n />\n </Grid>\n </Grid>\n </Accordion>\n // eslint-disable-next-line\n ), [t, addressRows, tableColumns, errors]);\n\n const contactSection = useMemo(() => (\n <Accordion\n title={\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\n {t(\"common.party.sections.contact\")}\n <span className='errorIndicator'>*</span>\n {errors?.[PARTIES_FORM_ARRAY_NAME]?.[PARTIES_FIELDS.CONTACTS] && (\n <span className='error'>\n {errors?.[PARTIES_FORM_ARRAY_NAME]?.[PARTIES_FIELDS.CONTACTS]?.message}\n </span>\n )}\n </Typography>\n }\n accordionProps={{\n defaultExpanded: true,\n className: \"form--Accordion\",\n }}\n >\n <Grid spacing={4}>\n <Grid item xs={12}>\n\n <MaterialTable\n rows={[...contactRows]}\n columns={tableColumns(contactColumns)}\n paginationModel={{ pageNo: 1, limit: 10 }}\n totalPages={20}\n enableColumnDragging={false}\n isResetRow={false}\n columnOrder={['mrt-row-select']}\n enableRowSelection={false}\n enableBottomToolbar\n disableDefaultActionColumn\n editDisplayMode='row'\n enableRowCreate\n onCreateRow={(data) => handleRowOperation(data, contactRows, setContactRows, false)}\n onEditRow={(data) => {\n handleRowOperation(data, contactRows, setContactRows, false);\n\n if (data.row.index === 0) {\n setValue(\n `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.RESPONSIBLE_PERSON}`,\n data.values.name || ''\n );\n setValue(\n `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.CONTACT_NO}`,\n data.values.contact_no || ''\n );\n setValue(\n `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.EMAIL_IDS}`,\n data.values.email || ''\n );\n }\n }}\n onDeleteRow={(row) => {\n if (row.index === 0) {\n enqueueSnackbar(t('common.party.errors.cannotDeleteResponsiblePerson'), { variant: 'error' });\n return Promise.resolve();\n }\n return deleteRow(contactRows, setContactRows, row);\n }}\n onChangeRowField={onChangeAddressTableField}\n />\n </Grid>\n </Grid>\n </Accordion>\n // eslint-disable-next-line\n ), [t, contactRows, tableColumns, errors]);\n\n return (\n <Modal\n open={isOpen}\n onClose={closeModal}\n maxWidth='lg'\n fullWidth\n sx={{ overflowY: 'hidden' }}\n {...modalProps}\n >\n {isCreating && <ModalLoader />}\n <form onSubmit={handleSubmit(onSubmit)} className=\"scroll-container\" style={{ position: 'relative', overflow: 'auto' }}>\n <DialogTitle className='itemEntryModal--DialogTitle'\n >\n <Typography type='s3' color='inherit' weight='medium'>\n {`Add ${type}`}\n </Typography>\n <IconButton onClick={closeModal}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n\n <DialogContent>\n {basicDetailsSection}\n <Divider className='form--SectionDivider' />\n {addressSection}\n <Divider className='form--SectionDivider' />\n {contactSection}\n <Divider className='form--SectionDivider' />\n {accountingSection}\n </DialogContent>\n\n <DialogActions className='itemEntryModal--DialogAction' sx={{\n position: 'sticky',\n bottom: 0,\n backgroundColor: 'white',\n zIndex: 1,\n padding: '8px 24px',\n justifyContent: 'end'\n }}>\n <Box display='flex' gap={1.5}>\n <Button\n className='itemEntryModal--DialogAction--WhiteBtn'\n onClick={closeModal}\n >\n {t('common.cancel')}\n </Button>\n <Button\n variant=\"contained\"\n onClick={handleSubmit(onSubmit)}\n >\n {t('common.save')}\n </Button>\n </Box>\n </DialogActions>\n </form>\n </Modal>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useMemo } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as Yup from 'yup';\nimport {\n Box,\n DialogActions,\n DialogContent,\n DialogTitle,\n Grid,\n IconButton\n} from '@mui/material';\nimport Close from '@mui/icons-material/Close';\nimport { useTranslation } from 'react-i18next';\n\nimport Modal from './modal/modal';\nimport Typography from './typography/typography';\nimport Button from './button/button';\nimport ModalLoader from './loaders/modal-loader';\nimport { DynamicInput, DynamicSearchSelect, IModalComponentProps } from './form-control';\n\ninterface IFormValues {\n team: {\n name: string;\n department_id: string | null;\n team_lead_id: string | null;\n member_ids: string[] | null;\n description: string;\n };\n}\n\ninterface ITeamAddModalProps extends IModalComponentProps {\n initialValues?: {\n department_id?: string | number | null;\n };\n}\n\nconst teamValidationSchema = Yup.object().shape({\n team: Yup.object().shape({\n name: Yup.string().required('Team Name is required'),\n department_id: Yup.string().nullable(),\n team_lead_id: Yup.string().nullable().required('Team Lead is required'),\n member_ids: Yup.array().nullable(),\n description: Yup.string(),\n })\n});\n\nconst getDefaultValues = (initialValues?: ITeamAddModalProps['initialValues']) => ({\n team: {\n name: '',\n department_id: initialValues?.department_id ?? null,\n team_lead_id: null,\n member_ids: null,\n description: '',\n }\n});\n\nexport const TeamAddModal: React.FC<ITeamAddModalProps> = ({\n isOpen,\n setIsOpen,\n onSave,\n isLoading,\n modalProps,\n initialValues,\n}) => {\n const { t } = useTranslation();\n\n const { control, handleSubmit, reset, watch } = useForm<IFormValues>({\n mode: 'all',\n resolver: yupResolver(teamValidationSchema),\n defaultValues: getDefaultValues(initialValues)\n });\n\n const selectedDepartmentId = watch('team.department_id');\n const selectedTeamLeadId = watch('team.team_lead_id');\n\n useEffect(() => {\n if (isOpen) {\n reset(getDefaultValues(initialValues));\n }\n }, [isOpen]);\n\n const handleModalClose = () => {\n reset(getDefaultValues(initialValues));\n setIsOpen();\n };\n\n const onSubmit = async (values: IFormValues) => {\n await onSave(values);\n handleModalClose();\n };\n\n const leadFilter = useMemo(() => ({\n '&department_id.eq': selectedDepartmentId || 0\n }), [selectedDepartmentId]);\n\n const membersFilter = useMemo(() => ({\n '&department_id.eq': selectedDepartmentId || 0,\n ...(selectedTeamLeadId ? { '&id.ne': selectedTeamLeadId } : {})\n }), [selectedDepartmentId, selectedTeamLeadId]);\n\n return (\n <Modal\n open={isOpen}\n onClose={handleModalClose}\n maxWidth='sm'\n fullWidth\n {...modalProps}\n >\n <form onSubmit={handleSubmit(onSubmit)}>\n {isLoading && <ModalLoader />}\n <DialogTitle className='brandAddModal--DialogTitle'>\n <Typography type='s3' color='inherit' weight='medium'>\n {t('hrms.organization_structure.teamModal.title', 'Add Team')}\n </Typography>\n <IconButton onClick={handleModalClose}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n <DialogContent className='brandAddModal--DialogContents'>\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\n {/* Team Name - Required */}\n <Grid item sm={12}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t('hrms.organization_structure.teamModal.name_label', 'Team Name')}\n name='name'\n fieldArrayName='team'\n placeholder={t('hrms.organization_structure.teamModal.name_placeholder', 'Enter Team Name')}\n required\n />\n </Grid>\n\n {/* Department - Optional */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.teamModal.department_label', 'Department')}\n name='department_id'\n placeholder={t('hrms.organization_structure.teamModal.department_placeholder', 'Select Department')}\n fieldArrayName='team'\n formControl={control as any}\n apiType='department'\n required={false}\n options={[]}\n />\n </Grid>\n\n {/* Team Lead - Required */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.teamModal.team_lead_label', 'Team Lead')}\n name='team_lead_id'\n placeholder={t('hrms.organization_structure.teamModal.team_lead_placeholder', 'Select Team Lead')}\n fieldArrayName='team'\n formControl={control as any}\n apiType='employees'\n required\n options={[]}\n customeFilter={leadFilter}\n />\n </Grid>\n\n {/* Members - Optional, multi-select */}\n <Grid item sm={12}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.teamModal.members_label', 'Members')}\n name='member_ids'\n placeholder={t('hrms.organization_structure.teamModal.members_placeholder', 'Select Members')}\n fieldArrayName='team'\n formControl={control as any}\n apiType='employees'\n required={false}\n options={[]}\n is_multiselect\n customeFilter={membersFilter}\n />\n </Grid>\n\n {/* Description - Optional, full width */}\n <Grid item sm={12}>\n <DynamicInput\n type='textarea'\n formControl={control}\n label={t('hrms.organization_structure.teamModal.description_label', 'Description')}\n name='description'\n fieldArrayName='team'\n placeholder={t('hrms.organization_structure.teamModal.description_placeholder', 'Enter Description')}\n is_multiline\n rows={3}\n />\n </Grid>\n </Grid>\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 >\n {t('common.cancel')}\n </Button>\n <Button type='submit'>\n {t('common.save')}\n </Button>\n </Box>\n </DialogActions>\n </form>\n </Modal>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as Yup from 'yup';\nimport {\n Box,\n DialogActions,\n DialogContent,\n DialogTitle,\n Grid,\n IconButton\n} from '@mui/material';\nimport Close from '@mui/icons-material/Close';\nimport { useTranslation } from 'react-i18next';\n\nimport Modal from './modal/modal';\nimport Typography from './typography/typography';\nimport Button from './button/button';\nimport ModalLoader from './loaders/modal-loader';\nimport { DynamicInput, DynamicSearchSelect, DynamicToggleButton, IModalComponentProps } from './form-control';\n\ninterface IFormValues {\n department: {\n company_id: string | null;\n department_code: string;\n name: string;\n parent_department_id: string | null;\n department_head_id: string | null;\n cost_code: string;\n status: boolean;\n description: string;\n };\n}\n\ninterface IDepartmentAddModalProps extends IModalComponentProps {\n initialValues?: {\n parent_department_id?: string | number | null;\n company_id?: string | number | null;\n };\n}\n\nconst departmentValidationSchema = Yup.object().shape({\n department: Yup.object().shape({\n company_id: Yup.string().nullable().required('Company is required'),\n department_code: Yup.string().required('Department Code is required'),\n name: Yup.string().required('Department Name is required'),\n parent_department_id: Yup.string().nullable(),\n department_head_id: Yup.string().nullable(),\n cost_code: Yup.string(),\n status: Yup.boolean(),\n description: Yup.string(),\n })\n});\n\nconst getDefaultValues = (initialValues?: IDepartmentAddModalProps['initialValues']) => ({\n department: {\n company_id: initialValues?.company_id ?? null,\n department_code: '',\n name: '',\n parent_department_id: initialValues?.parent_department_id ?? null,\n department_head_id: null,\n cost_code: '',\n status: true,\n description: '',\n }\n});\n\nexport const DepartmentAddModal: React.FC<IDepartmentAddModalProps> = ({\n isOpen,\n setIsOpen,\n onSave,\n isLoading,\n modalProps,\n initialValues,\n}) => {\n const { t } = useTranslation();\n\n const { control, handleSubmit, reset, trigger, watch } = useForm<any>({\n mode: 'all',\n resolver: yupResolver(departmentValidationSchema),\n defaultValues: getDefaultValues(initialValues)\n });\n\n const rootCompanyId = watch('department.company_id');\n\n useEffect(() => {\n if (isOpen) {\n reset(getDefaultValues(initialValues));\n }\n }, [isOpen]);\n\n const handleModalClose = () => {\n reset(getDefaultValues(initialValues));\n setIsOpen();\n };\n\n const onSubmit = async (values: IFormValues) => {\n const isValid = await trigger();\n if (!isValid) return;\n await onSave(values as any);\n handleModalClose();\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 && <ModalLoader />}\n <DialogTitle className='brandAddModal--DialogTitle'>\n <Typography type='s3' color='inherit' weight='medium'>\n {t('hrms.organization_structure.departmentModal.title', 'Add Department')}\n </Typography>\n <IconButton onClick={handleModalClose}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n <DialogContent className='brandAddModal--DialogContents'>\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\n {/* Company - Required */}\n <Grid item sm={12}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.departmentModal.company_label', 'Company')}\n name='company_id'\n placeholder={t('hrms.organization_structure.departmentModal.company_placeholder', 'Select Company')}\n fieldArrayName='department'\n formControl={control as any}\n apiType='company'\n required\n options={[]}\n />\n </Grid>\n\n {/* Department Code - Required */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t('hrms.organization_structure.departmentModal.code_label', 'Department Code')}\n name='department_code'\n fieldArrayName='department'\n placeholder={t('hrms.organization_structure.departmentModal.code_placeholder', 'Enter Department Code')}\n required\n />\n </Grid>\n\n {/* Department Name - Required */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t('hrms.organization_structure.departmentModal.name_label', 'Department Name')}\n name='name'\n fieldArrayName='department'\n placeholder={t('hrms.organization_structure.departmentModal.name_placeholder', 'Enter Department Name')}\n required\n />\n </Grid>\n\n {/* Parent Department - Optional */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.departmentModal.parent_department_label', 'Parent Department')}\n name='parent_department_id'\n placeholder={t('hrms.organization_structure.departmentModal.parent_department_placeholder', 'Select Parent Department')}\n fieldArrayName='department'\n formControl={control as any}\n apiType='department'\n required={false}\n options={[]}\n customeFilter={{\n '&is_parent.eq': true,\n '&company_id.eq': rootCompanyId || 0\n }}\n />\n </Grid>\n\n {/* Department Head - Optional */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.departmentModal.department_head_label', 'Department Head')}\n name='department_head_id'\n placeholder={t('hrms.organization_structure.departmentModal.department_head_placeholder', 'Select Department Head')}\n fieldArrayName='department'\n formControl={control as any}\n apiType='employees'\n required={false}\n options={[]}\n customeFilter={{\n '&company_id.eq': rootCompanyId || 0,\n '&is_active.eq': 1\n }}\n />\n </Grid>\n\n {/* Cost Code - Optional */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t('hrms.organization_structure.departmentModal.cost_code_label', 'Cost Code')}\n name='cost_code'\n fieldArrayName='department'\n placeholder={t('hrms.organization_structure.departmentModal.cost_code_placeholder', 'Enter Cost Code')}\n />\n </Grid>\n\n {/* Status Toggle */}\n <Grid item sm={6}>\n <DynamicToggleButton\n formControl={control as any}\n name='status'\n fieldArrayName='department'\n label={t('hrms.organization_structure.departmentModal.status_label', 'Status')}\n title={t('common.active', 'Active')}\n titlePosition='end'\n position={3}\n />\n </Grid>\n\n {/* Description - Optional, full width */}\n <Grid item sm={12}>\n <DynamicInput\n type='textarea'\n formControl={control}\n label={t('hrms.organization_structure.departmentModal.description_label', 'Description')}\n name='description'\n fieldArrayName='department'\n placeholder={t('hrms.organization_structure.departmentModal.description_placeholder', 'Enter Description')}\n is_multiline\n rows={3}\n />\n </Grid>\n </Grid>\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 >\n {t('common.cancel')}\n </Button>\n <Button type='button' onClick={handleSubmit(onSubmit)}>\n {t('common.save')}\n </Button>\n </Box>\n </DialogActions>\n </form>\n </>\n </Modal>\n );\n};\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 short_name: Yup.string().required('Short name is required'),\n company_id: Yup.number().required('Company 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 */\nimport React, { useEffect } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as Yup from 'yup';\nimport {\n Box,\n DialogActions,\n DialogContent,\n DialogTitle,\n Grid,\n IconButton\n} from '@mui/material';\nimport Close from '@mui/icons-material/Close';\nimport { useTranslation } from 'react-i18next';\n\nimport Modal from './modal/modal';\nimport Typography from './typography/typography';\nimport Button from './button/button';\nimport ModalLoader from './loaders/modal-loader';\nimport { DynamicInput, DynamicSearchSelect, DynamicToggleButton, IModalComponentProps } from './form-control';\n\ninterface IFormValues {\n designation: {\n company_id: number | null;\n designation_code: string;\n name: string;\n department_id: number | null;\n reports_to: string | null;\n level: string;\n status: boolean;\n description: string;\n };\n}\n\ninterface IDesignationAddModalProps extends IModalComponentProps {\n initialValues?: {\n company_id?: number | null;\n department_id?: number | null;\n parent_designation_id?: number | null;\n };\n}\n\nconst designationValidationSchema = Yup.object().shape({\n designation: Yup.object().shape({\n company_id: Yup.number().nullable().required('Company is required'),\n designation_code: Yup.string(),\n name: Yup.string().required('Designation Name is required'),\n department_id: Yup.number().nullable().required('Department is required'),\n reports_to: Yup.string().nullable(),\n level: Yup.number().nullable().typeError('Level must be a number'),\n status: Yup.boolean(),\n description: Yup.string(),\n })\n});\n\nconst getDefaultValues = (initialValues?: IDesignationAddModalProps['initialValues']) => ({\n designation: {\n company_id: initialValues?.company_id ?? null,\n designation_code: '',\n name: '',\n department_id: initialValues?.department_id ?? null,\n reports_to: initialValues?.parent_designation_id ?? null,\n level: null,\n status: true,\n description: '',\n }\n});\n\nexport const DesignationAddModal: React.FC<IDesignationAddModalProps> = ({\n isOpen,\n setIsOpen,\n onSave,\n isLoading,\n modalProps,\n initialValues,\n}) => {\n const { t } = useTranslation();\n\n const { control, handleSubmit, reset, trigger, watch } = useForm<any>({\n mode: 'all',\n resolver: yupResolver(designationValidationSchema),\n defaultValues: getDefaultValues(initialValues)\n });\n\n const rootCompanyId = watch('designation.company_id');\n const rootDepartmentId = watch('designation.department_id');\n\n useEffect(() => {\n if (isOpen) {\n reset(getDefaultValues(initialValues));\n }\n }, [isOpen]);\n\n const handleModalClose = () => {\n reset(getDefaultValues(initialValues));\n setIsOpen();\n };\n\n const onSubmit = async (values: IFormValues) => {\n const isValid = await trigger();\n if (!isValid) return;\n await onSave(values as any);\n handleModalClose();\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 && <ModalLoader />}\n <DialogTitle className='brandAddModal--DialogTitle'>\n <Typography type='s3' color='inherit' weight='medium'>\n {t('hrms.organization_structure.designationModal.title', 'Add Designation')}\n </Typography>\n <IconButton onClick={handleModalClose}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n <DialogContent className='brandAddModal--DialogContents'>\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\n {/* Company - Required */}\n <Grid item sm={12}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.designationModal.company_label', 'Company')}\n name='company_id'\n placeholder={t('hrms.organization_structure.designationModal.company_placeholder', 'Select Company')}\n fieldArrayName='designation'\n formControl={control as any}\n apiType='company'\n required\n options={[]}\n />\n </Grid>\n\n {/* Department - Required */}\n <Grid item sm={12}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.designationModal.department_label', 'Department')}\n name='department_id'\n placeholder={t('hrms.organization_structure.designationModal.department_placeholder', 'Select Department')}\n fieldArrayName='designation'\n formControl={control as any}\n apiType='department'\n required\n options={[]}\n customeFilter={{\n '&company_id.eq': rootCompanyId || 0,\n // '&is_active.eq': 1\n }}\n />\n </Grid>\n\n {/* Designation Code */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t('hrms.organization_structure.designationModal.code_label', 'Designation Code')}\n name='designation_code'\n fieldArrayName='designation'\n placeholder={t('hrms.organization_structure.designationModal.code_placeholder', 'Enter Designation Code')}\n />\n </Grid>\n\n {/* Designation Name - Required */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t('hrms.organization_structure.designationModal.name_label', 'Designation Name')}\n name='name'\n fieldArrayName='designation'\n placeholder={t('hrms.organization_structure.designationModal.name_placeholder', 'Enter Designation Name')}\n required\n />\n </Grid>\n\n {/* Reports To (Parent Designation) - Optional */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.designationModal.reports_to_label', 'Reports To')}\n name='reports_to'\n placeholder={t('hrms.organization_structure.designationModal.reports_to_placeholder', 'Select Reports To')}\n fieldArrayName='designation'\n formControl={control as any}\n apiType='designation'\n required={false}\n options={[]}\n customeFilter={{\n '&company_id.eq': rootCompanyId || 0,\n '&department_id.eq': rootDepartmentId || 0,\n }}\n />\n </Grid>\n\n {/* Level - Optional */}\n <Grid item sm={6}>\n <DynamicInput\n type='number'\n formControl={control}\n label={t('hrms.organization_structure.designationModal.level_label', 'Level')}\n name='level'\n fieldArrayName='designation'\n disabled\n placeholder={t('hrms.organization_structure.designationModal.level_placeholder', 'Enter Level')}\n />\n </Grid>\n\n {/* Status Toggle */}\n <Grid item sm={6}>\n <DynamicToggleButton\n formControl={control as any}\n name='status'\n fieldArrayName='designation'\n label={t('hrms.organization_structure.designationModal.status_label', 'Status')}\n title={t('common.active', 'Active')}\n titlePosition='end'\n position={3}\n />\n </Grid>\n\n {/* Description - Optional, full width */}\n <Grid item sm={12}>\n <DynamicInput\n type='textarea'\n formControl={control}\n label={t('hrms.organization_structure.designationModal.description_label', 'Description')}\n name='description'\n fieldArrayName='designation'\n placeholder={t('hrms.organization_structure.designationModal.description_placeholder', 'Enter Description')}\n is_multiline\n rows={3}\n />\n </Grid>\n </Grid>\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 >\n {t('common.cancel')}\n </Button>\n <Button type='button' onClick={handleSubmit(onSubmit)}>\n {t('common.save')}\n </Button>\n </Box>\n </DialogActions>\n </form>\n </>\n </Modal>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useState, useEffect, useCallback } 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 DialogTitle,\n Grid,\n IconButton\n} from '@mui/material';\nimport Close from '@mui/icons-material/Close';\n\nimport { FormProvider, useForm, useWatch } from 'react-hook-form';\nimport * as Yup from 'yup';\nimport { yupResolver } from '@hookform/resolvers/yup';\n\nimport DynamicSearchSelect from '../dynamic-select';\nimport DynamicSelect from '../select';\nimport { IModalComponentProps } from '../../index';\nimport { fetchOptions, skuGenerator } from '../../../../../utils/common';\n\nimport './fixed-asset-item-add-modal.scss';\n\ninterface IFormValues {\n inventory_fixed_asset_item: {\n name: string;\n sku: string;\n category: number | null;\n base_unit: number | null;\n company: number[];\n unit_of_measurement: number | null;\n stock_unit: number | null;\n purchase_unit: number | null;\n sales_unit: number | null;\n costing_method: string;\n depreciation_method: string;\n computation_method: string;\n default_tax_id: number | null;\n income_account_id: number | null;\n asset_account_id: number | null;\n cogs_account_id: number | null;\n fixed_asset_account_id: number | null;\n depreciation_account_id: number | null;\n declining_factor: number | null;\n };\n}\n\ninterface IToast {\n type: 'normal' | 'alert';\n message: string;\n}\n\nconst COSTING_METHODS = [\n { label: 'FIFO', value: 'FIFO' },\n { label: 'LIFO', value: 'LIFO' },\n { label: 'Weighted Average Cost', value: 'Weighted Average Cost' }\n];\n\nconst DEPRECIATION_METHODS = [\n { label: 'Straight line', value: 'Straight line' },\n { label: 'Declining', value: 'Declining' }\n];\n\nconst COMPUTATION_METHODS = [\n { label: 'Constant periods', value: 'Constant periods' },\n { label: 'Based on days per period', value: 'Based on days per period' }\n];\n\nconst validationSchema = Yup.object().shape({\n inventory_fixed_asset_item: Yup.object().shape({\n name: Yup.string().required('Name is required'),\n sku: Yup.string().required('SKU is required'),\n category: Yup.mixed().required('Category is required'),\n base_unit: Yup.mixed().required('Base Unit is required'),\n company: Yup.array().min(1, 'At least one company is required').required('Company is required'),\n unit_of_measurement: Yup.mixed().required('Unit of Measurement is required'),\n stock_unit: Yup.mixed().nullable(),\n purchase_unit: Yup.mixed().nullable(),\n sales_unit: Yup.mixed().nullable(),\n costing_method: Yup.string().required('Costing Method is required'),\n depreciation_method: Yup.string().required('Depreciation Method is required'),\n computation_method: Yup.string().required('Computation Method is required'),\n default_tax_id: Yup.mixed().required('Default Tax is required'),\n income_account_id: Yup.mixed().required('Income Account is required'),\n asset_account_id: Yup.mixed().required('Asset Account is required'),\n cogs_account_id: Yup.mixed().required('COGS Account is required'),\n fixed_asset_account_id: Yup.mixed().required('Fixed Asset Account is required'),\n depreciation_account_id: Yup.mixed().required('Depreciation Account is required'),\n declining_factor: Yup.number()\n .nullable()\n .when('depreciation_method', {\n is: 'Declining',\n then: (schema) => schema.required('Declining Factor is required').min(0, 'Must be positive'),\n otherwise: (schema) => schema.nullable(),\n }),\n })\n});\n\nconst FixedAssetItemAddModal: React.FC<IModalComponentProps> = ({\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 [selectedCategoryData, setSelectedCategoryData] = useState<any>(null);\n const unitFields = ['stock_unit', 'purchase_unit', 'sales_unit', 'consumption_unit', 'base_unit'];\n const defaultValues = {\n inventory_fixed_asset_item: {\n name: '',\n sku: '',\n category: null,\n base_unit: null,\n company: [],\n unit_of_measurement: null,\n stock_unit: null,\n purchase_unit: null,\n sales_unit: null,\n costing_method: '',\n depreciation_method: '',\n computation_method: '',\n default_tax_id: null,\n income_account_id: null,\n asset_account_id: null,\n cogs_account_id: null,\n fixed_asset_account_id: null,\n depreciation_account_id: null,\n declining_factor: null,\n status: 1\n }\n }\n\n const methods = useForm<any>({\n mode: 'all',\n resolver: yupResolver(validationSchema),\n defaultValues: defaultValues,\n });\n const { control, handleSubmit, reset, setValue, trigger } = methods || {};\n\n // Watch name and category for auto-generating SKU\n const [watchedName, watchedCategory, watchedUom, watchedDepreciationMethod] = useWatch({\n control, name:\n ['inventory_fixed_asset_item.name',\n 'inventory_fixed_asset_item.category',\n 'inventory_fixed_asset_item.unit_of_measurement',\n 'inventory_fixed_asset_item.depreciation_method']\n });\n\n\n // Auto-generate SKU when name or category changes\n useEffect(() => {\n if (watchedName && selectedCategoryData?.category_name) {\n const generatedSku = skuGenerator({\n name: watchedName,\n category: selectedCategoryData.category_name\n });\n setValue('inventory_fixed_asset_item.sku', generatedSku);\n }\n }, [watchedName, selectedCategoryData, setValue]);\n\n const handleModalClose = () => {\n reset(defaultValues);\n setSelectedCategoryData(null);\n setIsOpen();\n };\n\n const onSubmit = async (values: IFormValues) => {\n const isValid = await trigger();\n if (!isValid) return;\n await onSave({\n ...values.inventory_fixed_asset_item as any,\n type: 'inventory-fixed-asset',\n status: 1\n });\n handleModalClose();\n };\n\n const handleCategorySelect = useCallback((data: any) => {\n setSelectedCategoryData(data);\n }, []);\n\n const updateUomFields = useCallback(async () => {\n if (!watchedUom) return\n const filter = {\n '&template_id.eq': watchedUom,\n '&is_base_unit.eq': 1\n }\n const uomData = await fetchOptions('uom', filter, [], false)\n unitFields.forEach((item) => {\n setValue(`inventory_fixed_asset_item.${item}`, uomData?.id)\n })\n }, [watchedUom])\n useEffect(() => {\n updateUomFields()\n }, [updateUomFields])\n\n return (\n <Modal\n open={isOpen}\n onClose={handleModalClose}\n maxWidth='md'\n fullWidth\n {...modalProps}>\n <>\n <FormProvider {...methods}>\n <form onSubmit={handleSubmit(onSubmit)}>\n {isLoading && (\n <ModalLoader />\n )}\n <DialogTitle className='fixedAssetItemAddModal--DialogTitle'>\n <Typography type='s3' color='inherit' weight='medium'>\n {t(\"inventory.fixed_asset_items.modal.title\", \"Add Fixed Asset Item\")}\n </Typography>\n <IconButton onClick={handleModalClose}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n <DialogContent className='fixedAssetItemAddModal--DialogContents'>\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\n {/* Name */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t(\"inventory.fixed_asset_items.modal.name_label\", \"Name\")}\n name='name'\n fieldArrayName='inventory_fixed_asset_item'\n placeholder={t(\"inventory.fixed_asset_items.modal.name_placeholder\", \"Enter Name\")}\n required\n />\n </Grid>\n\n {/* SKU - Auto-generated */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t(\"inventory.fixed_asset_items.modal.sku_label\", \"SKU\")}\n name='sku'\n fieldArrayName='inventory_fixed_asset_item'\n placeholder={t(\"inventory.fixed_asset_items.modal.sku_placeholder\", \"Auto-generated\")}\n required\n disabled\n />\n </Grid>\n\n {/* Category */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.category_label\", \"Category\")}\n name=\"category\"\n placeholder={t(\"inventory.fixed_asset_items.modal.category_placeholder\", \"Select Category\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='categoryItems'\n options={[]}\n required={true}\n getSelectedData={handleCategorySelect}\n />\n </Grid>\n\n\n {/* Company */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.company_label\", \"Company\")}\n name=\"company\"\n placeholder={t(\"inventory.fixed_asset_items.modal.company_placeholder\", \"Select Company\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='company'\n options={[]}\n is_multiselect={true}\n required={true}\n />\n </Grid>\n\n {/* Costing Method */}\n <Grid item sm={6}>\n <DynamicSelect\n label={t(\"inventory.fixed_asset_items.modal.costing_method_label\", \"Costing Method\")}\n name=\"costing_method\"\n placeholder={t(\"inventory.fixed_asset_items.modal.costing_method_placeholder\", \"Select Costing Method\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n options={COSTING_METHODS}\n required={true}\n />\n </Grid>\n\n {/* Unit of Measurement Section Header */}\n <Grid item xs={12} pt={2}>\n <Typography type='s3' weight='medium' color='theme.neutral.900'>\n {t(\"inventory.fixed_asset_items.modal.uom_section\", \"Unit of Measurement\")}\n </Typography>\n </Grid>\n\n {/* UOM Template */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.unit_of_measurement_label\", \"UOM Template\")}\n name=\"unit_of_measurement\"\n placeholder={t(\"inventory.fixed_asset_items.modal.unit_of_measurement_placeholder\", \"Select UOM Template\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='uom_templates'\n required={true}\n />\n </Grid>\n\n {/* Stock Unit */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.stock_unit_label\", \"Stock Unit\")}\n name=\"stock_unit\"\n placeholder={t(\"inventory.fixed_asset_items.modal.stock_unit_placeholder\", \"Select Stock Unit\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='uom'\n customFilter={{\n '&template_id.eq': watchedUom || 0\n }}\n />\n </Grid>\n\n {/* Purchase Unit */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.purchase_unit_label\", \"Purchase Unit\")}\n name=\"purchase_unit\"\n placeholder={t(\"inventory.fixed_asset_items.modal.purchase_unit_placeholder\", \"Select Purchase Unit\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='uom'\n customFilter={{\n '&template_id.eq': watchedUom || 0\n }}\n />\n </Grid>\n\n {/* Sales Unit */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.sales_unit_label\", \"Consumption Unit\")}\n name=\"sales_unit\"\n placeholder={t(\"inventory.fixed_asset_items.modal.sales_unit_placeholder\", \"Select Sales Unit\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='uom'\n customFilter={{\n '&template_id.eq': watchedUom || 0\n }}\n />\n </Grid>\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.sales_unit_label\", \"Consumption Unit\")}\n name=\"consumption_unit\"\n placeholder={t(\"inventory.fixed_asset_items.modal.sales_unit_placeholder\", \"Select Sales Unit\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='uom'\n customFilter={{\n '&template_id.eq': watchedUom || 0\n }}\n />\n </Grid>\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.base_unit_label\", \"Base Unit\")}\n name=\"base_unit\"\n placeholder={t(\"inventory.fixed_asset_items.modal.base_unit_placeholder\", \"Select Base Unit\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n disabled\n apiType='uom'\n customFilter={{\n '&template_id.eq': watchedUom || 0,\n '&is_base_unit.eq': 1\n }}\n />\n </Grid>\n\n {/* Depreciation Method */}\n <Grid item sm={6}>\n <DynamicSelect\n label={t(\"inventory.fixed_asset_items.modal.depreciation_method_label\", \"Depreciation Method\")}\n name=\"depreciation_method\"\n placeholder={t(\"inventory.fixed_asset_items.modal.depreciation_method_placeholder\", \"Select Depreciation Method\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n options={DEPRECIATION_METHODS}\n required={true}\n />\n </Grid>\n\n {/* Declining Factor */}\n {watchedDepreciationMethod === 'Declining' && (\n <Grid item sm={6}>\n <DynamicInput\n type='number'\n formControl={control}\n label={t(\"inventory.fixed_asset_items.modal.declining_factor_label\", \"Declining Factor\")}\n name='declining_factor'\n fieldArrayName='inventory_fixed_asset_item'\n placeholder={t(\"inventory.fixed_asset_items.modal.declining_factor_placeholder\", \"Enter Declining Factor\")}\n required\n />\n </Grid>\n )}\n\n {/* Computation Method */}\n <Grid item sm={6}>\n <DynamicSelect\n label={t(\"inventory.fixed_asset_items.modal.computation_method_label\", \"Computation Method\")}\n name=\"computation_method\"\n placeholder={t(\"inventory.fixed_asset_items.modal.computation_method_placeholder\", \"Select Computation Method\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n options={COMPUTATION_METHODS}\n required={true}\n />\n </Grid>\n\n {/* Accounting Section Header */}\n <Grid item xs={12} pt={2}>\n <Typography type='s3' weight='medium' color='theme.neutral.900'>\n {t(\"inventory.fixed_asset_items.modal.accounting_section\", \"Accounting\")}\n </Typography>\n </Grid>\n\n {/* Default Tax */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.default_tax_label\", \"Default Tax\")}\n name=\"default_tax_id\"\n placeholder={t(\"inventory.fixed_asset_items.modal.default_tax_placeholder\", \"Select Default Tax\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='taxTemplate'\n options={[]}\n required={true}\n />\n </Grid>\n\n {/* Income Account */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.income_account_label\", \"Income Account\")}\n name=\"income_account_id\"\n placeholder={t(\"inventory.fixed_asset_items.modal.income_account_placeholder\", \"Select Income Account\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='accounts'\n options={[]}\n required={true}\n customeFilter={{ '&account_parent_type.in': ['Income', 'Assets'] }}\n />\n </Grid>\n\n {/* Asset Account */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.asset_account_label\", \"Asset Account\")}\n name=\"asset_account_id\"\n placeholder={t(\"inventory.fixed_asset_items.modal.asset_account_placeholder\", \"Select Asset Account\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='accounts'\n options={[]}\n required={true}\n customeFilter={{ '&account_parent_type.eq': 'Assets' }}\n />\n </Grid>\n\n {/* COGS Account */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.cogs_account_label\", \"COGS Account\")}\n name=\"cogs_account_id\"\n placeholder={t(\"inventory.fixed_asset_items.modal.cogs_account_placeholder\", \"Select COGS Account\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='accounts'\n options={[]}\n required={true}\n />\n </Grid>\n\n {/* Fixed Asset Account */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.fixed_asset_account_label\", \"Fixed Asset Account\")}\n name=\"fixed_asset_account_id\"\n placeholder={t(\"inventory.fixed_asset_items.modal.fixed_asset_account_placeholder\", \"Select Fixed Asset Account\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='accounts'\n options={[]}\n required={true}\n customeFilter={{ '&account_parent_type.eq': 'Assets' }}\n />\n </Grid>\n\n {/* Depreciation Account */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.depreciation_account_label\", \"Depreciation Account\")}\n name=\"depreciation_account_id\"\n placeholder={t(\"inventory.fixed_asset_items.modal.depreciation_account_placeholder\", \"Select Depreciation Account\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='accounts'\n options={[]}\n required={true}\n customeFilter={{ '&account_parent_type.eq': 'Assets' }}\n />\n </Grid>\n </Grid>\n </DialogContent>\n <DialogActions className='fixedAssetItemAddModal--DialogAction'>\n <span></span>\n <Box display='flex' gap={1.5}>\n <Button\n className='fixedAssetItemAddModal--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 </FormProvider>\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 FixedAssetItemAddModal;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React from 'react';\nimport { useForm } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as Yup from 'yup';\nimport {\n Box,\n DialogActions,\n DialogContent,\n DialogTitle,\n Grid,\n IconButton\n} from '@mui/material';\nimport Close from '@mui/icons-material/Close';\nimport { useTranslation } from 'react-i18next';\n\nimport Modal from './modal/modal';\nimport Typography from './typography/typography';\nimport Button from './button/button';\nimport ModalLoader from './loaders/modal-loader';\nimport { DynamicInput, DynamicSelect, DynamicSearchSelect, IModalComponentProps } from './form-control';\n\ninterface IFormValues {\n payment_term: {\n name: string;\n due_date_based_on: number | null;\n credit_days: number | null;\n mode_of_payment: string;\n discount_type: string;\n discount: number | null;\n discount_due_date_based_on: number | null;\n discount_validity: number | null;\n description: string;\n };\n}\n\nconst validationSchema = Yup.object().shape({\n payment_term: Yup.object().shape({\n name: Yup.string().required('Name is required'),\n due_date_based_on: Yup.number()\n .typeError('Due date based on is required')\n .required('Due date based on is required'),\n credit_days: Yup.number()\n .typeError('Credit days is required')\n .required('Credit days is required')\n .positive('Must be positive')\n .integer('Must be a whole number'),\n mode_of_payment: Yup.string().nullable(),\n discount_type: Yup.string().nullable(),\n discount: Yup.number().nullable().typeError('Must be a number'),\n discount_due_date_based_on: Yup.number().nullable().typeError('Must be a number'),\n discount_validity: Yup.number().nullable().typeError('Must be a number').integer('Must be a whole number'),\n description: Yup.string().nullable(),\n })\n});\n\nconst MODE_OF_PAYMENT_OPTIONS = [\n { label: 'Bank Draft', value: 'BANK_DRAFT' },\n { label: 'Cash', value: 'CASH' },\n { label: 'Credit Card', value: 'CREDIT_CARD' },\n { label: 'Wire Transfer', value: 'WIRE_TRANSFER' }\n];\n\nconst DISCOUNT_TYPE_OPTIONS = [\n { label: 'Percentage', value: 'PERCENTAGE' },\n { label: 'Amount', value: 'AMOUNT' }\n];\n\nexport const PaymentTermAddModal: React.FC<IModalComponentProps> = ({\n isOpen,\n setIsOpen,\n onSave,\n isLoading,\n modalProps,\n}) => {\n const { t } = useTranslation();\n\n const { control, handleSubmit, reset, trigger } = useForm<any>({\n mode: 'all',\n resolver: yupResolver(validationSchema),\n defaultValues: {\n payment_term: {\n name: '',\n due_date_based_on: null,\n credit_days: null,\n mode_of_payment: '',\n discount_type: '',\n discount: null,\n discount_due_date_based_on: null,\n discount_validity: null,\n description: '',\n }\n }\n });\n\n const handleModalClose = () => {\n reset({\n payment_term: {\n name: '',\n due_date_based_on: null,\n credit_days: null,\n mode_of_payment: '',\n discount_type: '',\n discount: null,\n discount_due_date_based_on: null,\n discount_validity: null,\n description: '',\n }\n });\n setIsOpen();\n };\n\n const onSubmit = async (values: IFormValues) => {\n const isValid = await trigger();\n if (!isValid) return;\n await onSave(values?.payment_term as any);\n handleModalClose();\n };\n\n return (\n <Modal\n open={isOpen}\n onClose={handleModalClose}\n maxWidth='md'\n fullWidth\n {...modalProps}\n >\n <>\n <form onSubmit={handleSubmit(onSubmit)}>\n {isLoading && <ModalLoader />}\n <DialogTitle className='paymentTermAddModal--DialogTitle'>\n <Typography type='s3' color='inherit' weight='medium'>\n {t(\"common.paymentTerm.title\")}\n </Typography>\n <IconButton onClick={handleModalClose}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n <DialogContent className='paymentTermAddModal--DialogContents'>\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t(\"common.paymentTerm.fields.name_label\")}\n name='name'\n fieldArrayName='payment_term'\n placeholder={t(\"common.paymentTerm.fields.name_placeholder\")}\n required\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicSearchSelect\n label={t(\"common.paymentTerm.fields.due_date_based_on_label\")}\n apiType='dueDateType'\n name='due_date_based_on'\n fieldArrayName='payment_term'\n formControl={control}\n placeholder={t(\"common.paymentTerm.fields.due_date_based_on_placeholder\")}\n required\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n type='number'\n formControl={control}\n label={t(\"common.paymentTerm.fields.credit_days_label\")}\n name='credit_days'\n fieldArrayName='payment_term'\n placeholder={t(\"common.paymentTerm.fields.credit_days_placeholder\")}\n required\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicSelect\n label={t(\"common.paymentTerm.fields.mode_of_payment_label\")}\n name='mode_of_payment'\n fieldArrayName='payment_term'\n formControl={control}\n placeholder={t(\"common.paymentTerm.fields.mode_of_payment_placeholder\")}\n options={MODE_OF_PAYMENT_OPTIONS}\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicSelect\n label={t(\"common.paymentTerm.fields.discount_type_label\")}\n name='discount_type'\n fieldArrayName='payment_term'\n formControl={control}\n placeholder={t(\"common.paymentTerm.fields.discount_type_placeholder\")}\n options={DISCOUNT_TYPE_OPTIONS}\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n type='number'\n formControl={control}\n label={t(\"common.paymentTerm.fields.discount_label\")}\n name='discount'\n fieldArrayName='payment_term'\n placeholder={t(\"common.paymentTerm.fields.discount_placeholder\")}\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicSearchSelect\n label={t(\"common.paymentTerm.fields.discount_due_date_based_on_label\")}\n apiType='dueDateType'\n name='discount_due_date_based_on'\n fieldArrayName='payment_term'\n formControl={control}\n placeholder={t(\"common.paymentTerm.fields.discount_due_date_based_on_placeholder\")}\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n type='number'\n formControl={control}\n label={t(\"common.paymentTerm.fields.discount_validity_label\")}\n name='discount_validity'\n fieldArrayName='payment_term'\n placeholder={t(\"common.paymentTerm.fields.discount_validity_placeholder\")}\n />\n </Grid>\n <Grid item xs={12}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t(\"common.paymentTerm.fields.description_label\")}\n name='description'\n fieldArrayName='payment_term'\n placeholder={t(\"common.paymentTerm.fields.description_placeholder\")}\n is_multiline\n />\n </Grid>\n </Grid>\n </DialogContent>\n <DialogActions className='paymentTermAddModal--DialogAction'>\n <span></span>\n <Box display='flex' gap={1.5}>\n <Button\n className='paymentTermAddModal--DialogAction--WhiteBtn'\n onClick={handleModalClose}\n >\n {t(\"common.cancel\")}\n </Button>\n <Button type='button' onClick={handleSubmit(onSubmit)}>\n {t(\"common.save\")}\n </Button>\n </Box>\n </DialogActions>\n </form>\n </>\n </Modal>\n );\n};\n","import { getErrorMessage, getToken } from '../../../../utils/common';\nimport { postV1WarehouseLocation, postV1InventoryFixedAssetItems, postV1CategoryItems, postV1Brand } from '../../../../api-client/api.inventory/api';\nimport { PostV1WarehouseLocationRequest } from '../../../../api-client/api.inventory/api-types';\nimport { enqueueSnackbar } from 'notistack';\nimport { postV1Parties, postV1PartiesIndustry, postV1JournalTypes, postV1PaymentTerms } from '../../../../api-client/api.accounting/api';\nimport { postV1Teams, postV1Designation, postV1Departments, postV1DepartmentsTeams } from '../../../../api-client/api.hrms/api';\nimport { postV1SourceTypes } from '../../../../api-client/api.sales/api';\nimport CustomerVendorModal from '@/components/parties-modal';\nimport { TeamAddModal } from '../../../team-add-modal';\nimport { DepartmentAddModal } from '@/components/department-add-modal';\nimport { LocationAddModal } from './location-add-modal';\nimport { DesignationAddModal } from '@/components/designation-add-modal';\nimport { FixedAssetItemAddModal } from './fixed-asset-item-add-modal';\nimport { DialogProps } from '@mui/material';\nimport { BrandAddModal } from '@/components/brand-add-modal';\nimport { CategoryAddModal } from '@/components/category-add-modal';\nimport { IndustryAddModal } from '@/components/industry-add-modal';\nimport { SourceTypeAddModal } from '@/components/source-type-add-modal/source-type-add-modal';\nimport { JournalTypeAddModal } from '@/components/journal-type-add-modal';\nimport { PaymentTermAddModal } from '@/components/payment-term-add-modal';\n\nexport const createApiThunk = async (api: (payload: any) => Promise<any>, payload: any) => {\n\ttry {\n\t\treturn await api({ ...payload, ...getToken() })\n\t} catch (error) {\n\t\ttry {\n\t\t\tenqueueSnackbar(getErrorMessage(error?.message), { variant: 'error' });\n\t\t} catch {\n\t\t\tconsole.error('[createApiThunk] enqueueSnackbar not available:', getErrorMessage(error?.message));\n\t\t}\n\t\tthrow error;\n\t}\n}\n\nexport interface IAddConfig {\n\tapi: (payload: any) => Promise<any>;\n\tcomponent: any;\n}\n\nexport interface IModalComponentProps {\n\tisOpen: boolean;\n\tsetIsOpen: () => void;\n\tmodalProps?: DialogProps;\n\tonSave: (data: string) => void;\n\tisLoading?: boolean;\n}\n\nconst addMapper: Record<string, IAddConfig> = {\n\tlocation: {\n\t\tapi: (payload: PostV1WarehouseLocationRequest) => createApiThunk(postV1WarehouseLocation, payload),\n\t\tcomponent: LocationAddModal,\n\t},\n\tparty: {\n\t\tapi: (payload: any) => createApiThunk(postV1Parties, payload),\n\t\tcomponent: CustomerVendorModal,\n\t},\n\tdepartment: {\n\t\tapi: (payload: any) => createApiThunk(postV1Departments, payload),\n\t\tcomponent: DepartmentAddModal,\n\t},\n\tteam: {\n\t\tapi: (payload: any) => createApiThunk(postV1DepartmentsTeams, payload),\n\t\tcomponent: TeamAddModal,\n\t},\n\tdesignation: {\n\t\tapi: (payload: any) => createApiThunk(postV1Designation, payload),\n\t\tcomponent: DesignationAddModal,\n\t},\n\tfixedAssetItem: {\n\t\tapi: (payload: any) => createApiThunk(postV1InventoryFixedAssetItems, payload),\n\t\tcomponent: FixedAssetItemAddModal,\n\t},\n\tbrand: {\n\t\tapi: (payload: any) => createApiThunk(postV1Brand, payload),\n\t\tcomponent: BrandAddModal,\n\t},\n\tcategory: {\n\t\tapi: (payload: any) => createApiThunk(postV1CategoryItems, payload),\n\t\tcomponent: CategoryAddModal,\n\t},\n\tindustry: {\n\t\tapi: (payload: any) => createApiThunk(postV1PartiesIndustry, payload),\n\t\tcomponent: IndustryAddModal,\n\t},\n\tsourceType: {\n\t\tapi: (payload: any) => createApiThunk(postV1SourceTypes, payload),\n\t\tcomponent: SourceTypeAddModal,\n\t},\n\tjournalType: {\n\t\tapi: (payload: any) => createApiThunk(postV1JournalTypes, payload),\n\t\tcomponent: JournalTypeAddModal,\n\t},\n\tjournal_type: {\n\t\tapi: (payload: any) => createApiThunk(postV1JournalTypes, payload),\n\t\tcomponent: JournalTypeAddModal,\n\t},\n\tpaymentTerm: {\n\t\tapi: (payload: any) => createApiThunk(postV1PaymentTerms, payload),\n\t\tcomponent: PaymentTermAddModal,\n\t},\n};\n\nexport const dynamicSelectAdd = (addType: string): IAddConfig | null => {\n\tconst config = addMapper[addType];\n\n\tif (!config) {\n\t\tconsole.warn(`No configuration found for addType: ${addType}`);\n\t\treturn null;\n\t}\n\n\treturn {\n\t\t...config\n\t};\n};\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n Box,\n CircularProgress,\n Divider,\n IconButton,\n InputAdornment,\n MenuItem,\n OutlinedInput,\n} from \"@mui/material\";\nimport Select from \"./select/select\";\nimport Checkbox from \"./checkbox/checkbox\";\nimport Typography from \"./typography/typography\";\nimport { Close } from \"./icons\";\nimport { debounce, sortBy } from \"lodash\";\nimport { fetchApi } from \"../utils/api\";\nimport ChipOrPlaceholder from \"./form-control/form-builder/form-builder-element/chip-or-placeholder\";\nimport { Add } from \"@mui/icons-material\";\nimport { useLanguage } from '@erpsquad/common/runtime';\nimport { useTranslation } from \"react-i18next\";\nimport { dynamicSelectAdd } from \"./form-control/form-builder/form-builder-element/select-configuration\";\nimport { useAuth } from '@erpsquad/common/runtime';\n\ninterface IOption {\n id: string | number;\n value: string | number;\n label: string | React.ReactNode;\n disabled?: boolean;\n isGroup?: boolean;\n options?: IOption[];\n searchLabel?: string;\n}\n\ninterface IPaginationState {\n page: number;\n hasMore: boolean;\n isLoadingMore: boolean;\n total: number;\n}\n\ninterface IMenuItems {\n options: IOption[];\n multiple: boolean;\n placeholder: string;\n with_checkboxes: boolean;\n values: string | string[];\n field: any;\n disabledIds: any[];\n handleClear: () => void;\n handleChange?: (value: string | string[]) => void;\n hasParent?: boolean;\n}\n\n// Custom API fetch function type for parent components\ninterface CustomFetchApiParams {\n search?: string;\n filters?: any;\n limit: number;\n skip: number;\n select?: string;\n order?: string;\n}\n\ninterface CustomFetchApiResponse {\n data: IOption[];\n pagination?: {\n totalCount: number;\n };\n}\n\ninterface SearchableSelectProps {\n labelId: string;\n label: string;\n value: any;\n onChange?: (event: any, selectedData?: any) => void;\n options: IOption[];\n multiple?: boolean;\n placeholder?: string;\n size?: \"small\" | \"medium\";\n searchPlaceholder?: string;\n CustomDropDownIcon: React.ReactNode;\n customStyle: any;\n name?: string;\n defaultValue?: any;\n apiType?: string;\n isInternal?: boolean;\n autoFocus?: any;\n error?: any;\n disabled: any;\n customeFilter?: string;\n attributes?: string;\n getSelectedData?: (row: any) => void;\n disabledIds: any[];\n labelKey?: string;\n valueKey?: string;\n inputStyle?: any;\n onChipRemove?: (value: string) => void;\n selectedLabel?: string;\n is_loading?: boolean;\n hasParent?: boolean;\n sortOrder?: string;\n handleChange?: (value: string | string[]) => void;\n enable_footer?: boolean;\n onFooterClick?: () => void;\n showCancelButton?: boolean;\n /** Custom API function to fetch options from parent component */\n customFetchApi?: (params: CustomFetchApiParams) => Promise<CustomFetchApiResponse>;\n addType?: string;\n isMergeOptions?: boolean;\n attributes?: string[];\n modalComponentProps?: any;\n}\n\nconst generateMenuItems = ({\n options,\n multiple,\n placeholder,\n with_checkboxes,\n values,\n field,\n disabledIds,\n handleClear,\n handleChange,\n hasParent = false,\n}: IMenuItems) => {\n const itemDisabled = (ls: any) => disabledIds?.includes(ls);\n const items: React.ReactElement[] = [];\n\n if (!multiple) {\n items.push(\n <MenuItem disabled value='' key=\"placeholder\" sx={{ opacity: `0 !important`, height: `0 !important`, p: `0 !important`, m: `0 !important` }}>\n <Typography type='s3' color='theme.secondary.1000'>\n <em>{placeholder}</em>\n </Typography>\n </MenuItem>\n );\n }\n\n const selectedValues = Array.isArray(values) ? values?.filter((value) => value) : [];\n\n // Parent selection handlers\n const handleParentChange = (parentValue: string, childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n\n const isParentSelected = valueArray.includes(parentValue);\n const updatedValues = isParentSelected\n ? valueArray.filter((value) => value !== parentValue && !childValues.includes(value))\n : [...new Set([...valueArray, parentValue, ...childValues])];\n\n handleChange?.(updatedValues);\n };\n\n const isAllOptionsSelected = (parentValue: string, childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n return childValues.every((childValue) => valueArray.includes(childValue));\n };\n\n const isSomeOptionsSelected = (childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n return childValues.some((childValue) => valueArray.includes(childValue));\n };\n\n Array.isArray(options) && options?.length > 0 && options?.forEach((option, index) => {\n items.push(\n <MenuItem\n value={option?.value}\n key={`${option?.value}-${index}`}\n disabled={Boolean(option?.disabled) || itemDisabled(option?.value) || (hasParent && !multiple)}\n className={option?.isGroup ? 'select--MenuItemHeader' : ''}\n onClick={() => {\n if (values?.length == 1) {\n handleClear();\n }\n }}\n >\n <Box sx={{ display: 'flex', gap: 1 }}>\n {multiple && with_checkboxes && (\n <Checkbox\n checked={\n hasParent\n ? isAllOptionsSelected(option.value, option.options || [])\n : Boolean(Array.isArray(values) && values?.indexOf(option?.value) > -1)\n }\n indeterminate={\n hasParent && isSomeOptionsSelected(option.options || [])\n }\n onChange={() =>\n hasParent\n ? handleParentChange(option.value, option.options || [])\n : handleChange?.(option.value)\n }\n />\n )}\n <Typography\n type='s3'\n color='theme.secondary.1000'\n onClick={() => handleChange?.(option.value)}\n >\n {option?.label}\n </Typography>\n </Box>\n </MenuItem>\n );\n\n // Handle child options for grouped items\n if (option?.isGroup && Array.isArray(option?.options)) {\n option.options.forEach((opt, index) => {\n items.push(\n <MenuItem\n id={`${option.value}-${opt.value} ${index}`}\n value={opt.value}\n disabled={Boolean(opt.disabled) || itemDisabled(opt.value)}\n sx={{ pl: 5 }}\n onClick={() => {\n if (values?.length == 1) {\n handleClear();\n }\n }}\n key={`${option.value}-${opt.value} ${index}`}\n >\n <Box sx={{ display: 'flex', gap: 1 }}>\n {multiple && with_checkboxes && (\n <Checkbox\n checked={Boolean(Array.isArray(values) && values?.indexOf(opt.value) > -1)}\n />\n )}\n <Typography\n id={`${option.value}-${opt.value} ${index}`}\n type='s3'\n color='theme.secondary.1000'\n onClick={() => handleChange?.(String(opt.value))}\n >\n {opt.label == \"Payment Entries\" ? \"Payment and Collection Entries\" : opt.label || opt.value}\n </Typography>\n </Box>\n </MenuItem>\n );\n });\n }\n });\n\n // Footer item\n if (field.enable_footer || field.addType) {\n items.push(\n <Box key=\"footer\" sx={{ position: 'sticky', bottom: 0, background: '#fff', zIndex: 1 }}>\n <Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n <MenuItem sx={{ gap: 1 }} onClick={() => {\n if (field.onFooterClick) {\n field.onFooterClick();\n } else if (field.handleModalOpen) {\n field.handleModalOpen();\n }\n }}>\n <Add fontSize='small' />\n <Typography type='s4' color='theme.secondary.1000'>\n Create New {field.label}\n </Typography>\n </MenuItem>\n </Box>\n );\n }\n\n // No data fallback\n if (!items.length || (items.length == 1 && !multiple)) {\n items.push(\n <MenuItem disabled key=\"no-data\">\n No data available\n </MenuItem>\n );\n }\n\n return items;\n};\n\nconst SearchableSelect: React.FC<SearchableSelectProps> = (props) => {\n const {\n labelId,\n label,\n value,\n onChange,\n options,\n multiple = false,\n size = \"small\",\n searchPlaceholder,\n placeholder,\n name,\n defaultValue,\n apiType,\n isInternal = false,\n autoFocus,\n error,\n disabled,\n customeFilter,\n attributes,\n getSelectedData,\n disabledIds,\n onChipRemove,\n selectedLabel,\n is_loading,\n customStyle = {},\n CustomDropDownIcon,\n labelKey,\n valueKey,\n inputStyle,\n hasParent = false,\n sortOrder = 'id:-1',\n handleChange,\n enable_footer = false,\n onFooterClick,\n showCancelButton = true,\n customFetchApi,\n addType,\n isMergeOptions = false,\n } = props;\n\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [loading, setLoading] = useState<boolean>(false);\n const [dynamicOptions, setOptions] = useState<IOption[]>([]);\n const [selectedOptions, setSelectedOptions] = useState<IOption[]>([]);\n const [isAlreadyLoaded, setIsAlreadyLoaded] = useState(false);\n const [initailLoading, setInitialLoading] = useState(false);\n const [searchInitiate, setSearchInitiate] = useState(false);\n const [open, setOpen] = useState(false);\n const [prevFilter, setPrevFilter] = useState<any>(null);\n const [addConfig, setAddConfig] = useState<any>(null);\n const [isModalOpen, setIsModalOpen] = useState<boolean>(false);\n const [isAddLoading, setIsAddLoading] = useState<boolean>(false);\n const { t } = useTranslation();\n\n // Pagination state\n const [pagination, setPagination] = useState<IPaginationState>({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n\n const { isRtl } = useLanguage();\n const limit = 25;\n\n const isInternalOptions = useMemo(() => {\n if (isMergeOptions && (apiType || customFetchApi)) return false;\n return isInternal || (!apiType && !customFetchApi);\n }, [isInternal, apiType, customFetchApi, isMergeOptions]);\n\n // Local search function for internal options\n const searchOptionsLocally = useCallback((searchTerm: string, value: any): IOption[] => {\n const currentOptions: IOption[] = (options && options.length > 0) ? options : [];\n if (!searchTerm) return currentOptions;\n\n const lowercasedSearchTerm = searchTerm.toLowerCase();\n\n const filteredOptions = hasParent\n ? options?.reduce((acc: IOption[], opt) => {\n const searchedOptions = opt.options?.filter((item) => {\n const label = React.isValidElement(item.label) ? item.searchLabel : String(item.label);\n return label?.toLowerCase().includes(lowercasedSearchTerm);\n });\n\n if (searchedOptions?.length) {\n acc.push({ ...opt, options: searchedOptions });\n }\n\n return acc;\n }, []) || []\n : options?.filter((opt) => {\n const label = React.isValidElement(opt.label) ? opt.searchLabel : String(opt.label);\n return label?.toLowerCase().includes(lowercasedSearchTerm);\n }) || [];\n\n return sortBySelectedValues(filteredOptions, value);\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [options, hasParent]);\n\n // Clear Selected Options\n const handleClear = () => {\n onChange?.({ target: { value: multiple ? [] : null } });\n if (getSelectedData && typeof getSelectedData === \"function\") {\n getSelectedData(null);\n }\n };\n\n // Get unique options\n const getUniqueOptions = useCallback((data: IOption[]): IOption[] => {\n const uniqueOptions = [\n ...new Map(data?.map(item => [item.value, item])).values()\n ];\n return uniqueOptions;\n }, []);\n\n // Sort by selected values\n const sortBySelectedValues = useCallback((arrayToSort: IOption[], value: any): IOption[] => {\n const selectedValues = Array.isArray(value) ? value : [value];\n const sortedValue = sortBy(arrayToSort, (item) => {\n const index = selectedValues.indexOf(item.id || item.value);\n return index === -1 ? Infinity : index;\n });\n return sortedValue;\n }, []);\n\n // Options with search and pagination support\n const filteredOptions = useMemo(() => {\n if (isInternalOptions) {\n return searchOptionsLocally(searchQuery, value);\n }\n const apiOptions = sortBySelectedValues(getUniqueOptions([...dynamicOptions, ...selectedOptions]), value);\n if (isMergeOptions) {\n const localOptions = searchOptionsLocally(searchQuery, value);\n return getUniqueOptions([...localOptions, ...apiOptions]);\n }\n return apiOptions;\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchQuery, dynamicOptions, options, value, isInternalOptions, selectedOptions, searchOptionsLocally, sortBySelectedValues, getUniqueOptions, isMergeOptions]);\n\n // Handle scroll pagination\n const handleScroll = useCallback((event: React.UIEvent<HTMLDivElement>) => {\n const { scrollTop, scrollHeight, clientHeight } = event.currentTarget;\n const isBottom = scrollHeight - scrollTop <= clientHeight + 10;\n\n if (isBottom && pagination.hasMore && !pagination.isLoadingMore && !isInternalOptions) {\n const nextPage = pagination.page + 1;\n fetchOptions(searchQuery, customeFilter, nextPage, true);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pagination.hasMore, pagination.isLoadingMore, pagination.page, isInternalOptions, searchQuery, JSON.stringify(customeFilter)]);\n\n // Update Options\n const updateOptions = useCallback((newOptions: IOption[], append = false) => {\n setOptions((prevOptions) => {\n const oldOptions = append ? prevOptions : selectedOptions;\n const uniqueOptions = getUniqueOptions([...oldOptions, ...newOptions]);\n return uniqueOptions;\n });\n }, [selectedOptions, getUniqueOptions]);\n\n // Fetch Options with pagination support\n const fetchOptions = useCallback(async (searchTerm: any = '', filters = customeFilter, page = 1, append = false) => {\n // Skip if neither apiType nor customFetchApi is provided\n if (!apiType && !customFetchApi) return [];\n\n setLoading(true);\n if (page > 1) {\n setPagination(prev => ({ ...prev, isLoadingMore: true }));\n }\n\n try {\n let data: IOption[] = [];\n let paginationResult: { totalCount?: number } = {};\n\n // Use custom API if provided, otherwise use default fetchApi\n if (customFetchApi) {\n const response = await customFetchApi({\n search: searchTerm,\n filters,\n limit,\n skip: (page - 1) * limit,\n select: attributes,\n order: sortOrder\n });\n data = response?.data || [];\n paginationResult = response?.pagination || {};\n } else {\n const response = await fetchApi({\n apiKey: apiType!,\n filters: {\n limit,\n skip: (page - 1) * limit,\n search: searchTerm,\n filters,\n select: attributes,\n order: sortOrder\n },\n labelKey,\n valueKey\n });\n data = response?.data || [];\n paginationResult = response?.pagination || {};\n }\n\n if (data && Array.isArray(data)) {\n updateOptions(data, append);\n\n // Update pagination\n setPagination(prev => ({\n ...prev,\n page,\n hasMore: (paginationResult?.totalCount || 0) > (page * limit),\n total: paginationResult?.totalCount || 0,\n isLoadingMore: false\n }));\n\n if (data?.length > 0) {\n setSelectedData();\n }\n }\n\n return data || [];\n } catch (error) {\n console.error('Error fetching options:', error);\n setPagination(prev => ({ ...prev, isLoadingMore: false }));\n return [];\n } finally {\n setLoading(false);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [apiType, customFetchApi, attributes, sortOrder, limit, updateOptions, dynamicOptions]);\n\n // Search Options with debounce\n const debounceSearch = useMemo(\n () => debounce(async (searchTerm: string) => {\n if (loading) return;\n\n if (!searchTerm && !isInternalOptions && searchInitiate) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n await fetchOptions('', customeFilter, 1, false);\n }\n if (searchTerm?.length > 1 && !isInternalOptions) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n await fetchOptions(searchTerm, customeFilter, 1, false);\n }\n }, 700),\n //eslint-disable-next-line react-hooks/exhaustive-deps\n [isInternalOptions, searchInitiate, JSON.stringify(customeFilter)]\n );\n\n // Initial fetch with filter change detection\n const initialFetch = useCallback(async () => {\n const condition = JSON.stringify(customeFilter) !== JSON.stringify(prevFilter);\n\n if (condition && !isInternalOptions && !isAlreadyLoaded) {\n setPrevFilter(customeFilter);\n setOptions([]);\n setIsAlreadyLoaded(false);\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n }\n\n if (!isInternalOptions && !isAlreadyLoaded) {\n await fetchOptions(searchQuery, customeFilter, 1, false);\n setIsAlreadyLoaded(true);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(customeFilter), isInternalOptions, isAlreadyLoaded]);\n\n // Set Selected Data\n const setSelectedData = useCallback(() => {\n let hasOptions = false;\n const isInOptions = filteredOptions?.filter((i: any) =>\n multiple ? value?.includes(i?.value) : i?.value == value\n );\n\n if ((Array.isArray(isInOptions) && isInOptions?.length > 0)) {\n getSelectedData?.(multiple ? isInOptions : isInOptions[0]);\n hasOptions = true;\n }\n\n return hasOptions;\n }, [JSON.stringify(filteredOptions), value, multiple]);\n\n // Fetch Options for Selected Id\n const fetchIdOptions = useCallback(async () => {\n if (await setSelectedData()) return;\n if (open) return;\n\n const fValue = multiple ? value && value?.filter(v => Boolean(Number(v))) : value ? value : null;\n const condition = (multiple ? fValue?.length > 0 : fValue) && !isInternalOptions;\n\n if (condition) {\n setInitialLoading(true);\n await fetchOptions('', { ...customeFilter, ...{ '&id.in': fValue } }, 1, false);\n setInitialLoading(false);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, value, JSON.stringify(customeFilter)]);\n\n const hasValue = multiple\n ? Array.isArray(value) && value.length > 0\n : value !== null && value !== undefined && value !== \"\";\n\n // Effects\n useEffect(() => {\n if (open) {\n debounceSearch(searchQuery);\n }\n return () => debounceSearch.cancel();\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchQuery, JSON.stringify(customeFilter), open, isAlreadyLoaded, debounceSearch]);\n\n useEffect(() => {\n setSelectedData();\n }, [setSelectedData]);\n\n useEffect(() => {\n fetchIdOptions();\n }, [fetchIdOptions]);\n\n useEffect(() => {\n if (open) {\n initialFetch();\n }\n }, [open, initialFetch]);\n\n useEffect(() => {\n const condition = JSON.stringify(customeFilter) !== JSON.stringify(prevFilter);\n if (customeFilter && condition) {\n setIsAlreadyLoaded(false);\n }\n }, [customeFilter, prevFilter]);\n\n useEffect(() => {\n if (value && !open) {\n const currentOptions: IOption[] = (options && options.length > 0) ? options : [];\n const selectedData = currentOptions?.filter((i: any) =>\n multiple ? value?.includes(i?.value) : i?.value == value\n ) || [];\n setSelectedOptions(selectedData);\n }\n setSelectedOptions(filteredOptions?.filter((i: any) =>\n multiple ? value?.includes(i?.value) : i?.value == value\n ));\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, open, options, multiple]);\n\n const handleModalOpen = useCallback(() => {\n setIsModalOpen(true);\n }, []);\n\n // Handle modal save\n const handleModalSave = useCallback(async (payload: any) => {\n if (!addConfig || !addConfig.api) {\n console.error('Add configuration is not properly set');\n return;\n }\n\n setIsAddLoading(true);\n try {\n const result = await addConfig.api(payload);\n setIsAddLoading(false);\n setIsModalOpen(false);\n if (!isInternalOptions) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n setIsAlreadyLoaded(false);\n await fetchOptions('', customeFilter, 1, false);\n }\n if (result && result.data) {\n const newValue = multiple\n ? [...(value || []), result.data.id]\n : result.data.id;\n }\n } catch (error) {\n console.log(\"error\", error);\n setIsAddLoading(false);\n }\n\n\n }, [addConfig, isInternalOptions, fetchOptions, customeFilter, multiple, name, value]);\n\n useEffect(() => {\n const config = dynamicSelectAdd(addType!);\n setAddConfig(config);\n }, [addType])\n\n const handleOnChange = (event: any) => {\n const { value } = event.target;\n if ((multiple && Array.isArray(value) && value?.filter(v => v).length == 0) || !value) return;\n\n const isSelected = (item: any) => {\n return multiple ? value?.includes(item?.value) : item?.value === value;\n };\n\n const selected = filteredOptions?.filter(isSelected);\n onChange?.(event, multiple ? selected : selected?.[0]);\n getSelectedData?.(multiple ? selected : selected?.[0]);\n\n };\n\n const removeUndefine = (selectOptions: any[]) => {\n return Array.isArray(selectOptions) && selectOptions?.length > 0 && selectOptions?.filter((option) => option);\n };\n\n const showGroupLabel = (item: any) => {\n if (!item?.length) {\n return undefined\n }\n const mergedOptions = item?.flatMap((i: any) => i?.options)\n return mergedOptions?.find((option: any) => option?.value === value)?.label\n }\n\n return (\n <Select\n labelId={labelId}\n name={name}\n defaultValue={defaultValue || (multiple ? [] : '')}\n placeholder={t(placeholder)}\n className=\"filter-select\"\n size={size}\n onOpen={() => setOpen(true)}\n onClose={() => {\n setOpen(false);\n if (searchQuery?.length > 0) {\n setIsAlreadyLoaded(false);\n }\n setSearchInitiate(false);\n setSearchQuery('');\n }}\n onChange={handleOnChange}\n showCancelButton={showCancelButton}\n multiple={multiple}\n label={t(label)}\n fullWidth\n displayEmpty\n autoFocus={autoFocus}\n error={Boolean(error)}\n disabled={disabled}\n value={initailLoading ? (multiple ? [] : '') : value?.id || value || (multiple ? [] : '')}\n searchPlaceholder={searchPlaceholder}\n CustomDropdownIcon={CustomDropDownIcon}\n sx={(multiple && value?.length) ? { ...customStyle, \"& .MuiSelect-select\": { padding: '5.5px !important' } } : customStyle}\n MenuProps={{\n PaperProps: {\n onScroll: handleScroll,\n style: { maxHeight: 295, maxWidth: 250 }\n }\n }}\n input={\n !disabled ? (\n <OutlinedInput\n label=\"\"\n sx={inputStyle}\n endAdornment={\n <InputAdornment position=\"end\">\n {loading || is_loading ? (\n <CircularProgress\n size={20}\n sx={{ mr: 3, color: \"#4AC08C\" }}\n />\n ) : (\n showCancelButton && hasValue && (\n <IconButton\n aria-label=\"clear selection\"\n onClick={handleClear}\n edge=\"end\"\n sx={isRtl ? { ml: 2.5 } : { mr: 1.5 }}\n size=\"small\"\n >\n <Close fontSize=\"small\" color='theme.primary.800' />\n </IconButton>\n )\n )}\n </InputAdornment>\n }\n />\n ) : undefined\n }\n renderValue={(selected?: string | string[]) => {\n return (\n <>\n {Array.isArray(selected) ? (\n <ChipOrPlaceholder\n selectedLabel={selectedLabel}\n data={removeUndefine(selected)}\n placeholder={placeholder}\n onDelete={onChipRemove}\n disabled={disabled}\n chipProps={{\n sx: {\n bgcolor: 'theme.primary.100',\n border: 0,\n // borderRadius: '15px',\n '& .MuiTypography-body1': {\n color: 'theme.primary.800',\n fontWeight: \"500\",\n }\n }\n }}\n />\n ) : (\n hasParent ? showGroupLabel(filteredOptions) :\n Array.isArray(filteredOptions) && filteredOptions?.length > 0 && filteredOptions?.find(\n (option: any) => option?.value == value\n )?.label || selected || placeholder\n )}\n </>\n );\n }}\n handleSearch={(text) => {\n setSearchQuery(text);\n setSearchInitiate(true);\n }}\n >\n {generateMenuItems({\n options: filteredOptions,\n multiple: Boolean(multiple),\n placeholder,\n values: value,\n with_checkboxes: true,\n field: {\n ...props,\n enable_footer,\n onFooterClick,\n label,\n handleModalOpen\n },\n disabledIds,\n handleClear,\n handleChange,\n hasParent,\n t: (key: string) => key\n })}\n {pagination.isLoadingMore && (\n <MenuItem disabled>\n <Box sx={{ display: 'flex', justifyContent: 'center', width: '100%' }}>\n <CircularProgress size={20} />\n </Box>\n </MenuItem>\n )}\n {/* Modal for adding new items */}\n {addConfig && addConfig.component && (\n <>\n {React.createElement(addConfig.component, {\n isOpen: isModalOpen,\n setIsOpen: setIsModalOpen,\n isLoading: isAddLoading,\n onSave: handleModalSave,\n modalProps: {\n maxWidth: 'md',\n fullWidth: true\n },\n ...props?.modalComponentProps\n })}\n </>\n )}\n </Select>\n );\n};\n\nexport default SearchableSelect;"],"names":["generateMenuItems","jsx","MenuItem","Typography","jsxs","Box","Checkbox","Chip","MoreIcon","useWatch","useApi","useFormContext","useCallback","_a","useTranslation","useLanguage","useAuth","useMemo","auth","useRef","useState","useDefaultConfig","filteredOptions","sortBy","fetchApi","updateOptions","debounce","useEffect","Controller","Fragment","Tooltip","Select","ChipOrPlaceholder","text","OutlinedInput","InputAdornment","CircularProgress","IconButton","Close","Divider","Add","validationSchema","col","row","yup","_b","valueKey","_c","_d","_f","_e","TextField","DatePicker","DateTimePicker","UploadMedia","PhoneInput","styled","usePages","useDeepMemo","useNavigate","PathnameAccounting","PathnameInventory","PathnameManufacturing","PathnamePurchase","PathnameCrm","PathnameUsers","PathnameRental","PathnameDocument","PathnameHrms","validations","validation","columns","useMaterialReactTable","table","images","Button","cloneElement","enqueueSnackbar","Edit","Trash","RecgtangleIcon","CheckBoxIcon","ArrowUpDown","Save","rows","MaterialReactTable","Menu","ListItemIcon","ListItemText","SearchBar","ConfirmPopUp","useDispatch","getApiConfigSafe","useForm","generateValidationSchema1","PARTIES_FIELDS","useAccountingSetting","PARTIES_FORM_ARRAY_NAME","checkUniqueFields","transformTableColumns","phone","addressPayload","contactPayload","type","_","t","processPartiesPayload","createParties","getErrorMessage","addressOmitKeys","contactOmitKeys","Accordion","Grid","DynamicRadioButton","partyType","DynamicInput","DynamicPhone","addressColumns","contactColumns","Modal","ModalLoader","DialogTitle","DialogContent","DialogActions","Yup","getDefaultValues","yupResolver","DynamicToggleButton","toast","Toast","skuGenerator","fetchOptions","FormProvider","DynamicSelect","api","getToken","postV1WarehouseLocation","postV1Parties","postV1Departments","postV1DepartmentsTeams","postV1Designation","postV1InventoryFixedAssetItems","postV1Brand","BrandAddModal","postV1CategoryItems","CategoryAddModal","postV1PartiesIndustry","IndustryAddModal","postV1SourceTypes","SourceTypeAddModal","postV1JournalTypes","JournalTypeAddModal","postV1PaymentTerms","index","value","label","error"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+IA,MAAMA,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,MACFC,2BAAAA,IAACC,SAAAA,UAAA,EAAS,UAAQ,MAAC,OAAM,IAAqB,IAAI,EAAE,SAAS,gBAAgB,QAAQ,gBAAgB,GAAG,gBAAgB,GAAG,kBACvH,UAAAD,2BAAAA,IAACE,WAAAA,YAAA,EAAW,MAAK,MAAK,OAAM,wBACxB,UAAAF,2BAAAA,IAAC,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,QACFA,2BAAAA;AAAAA,UAACC,SAAAA;AAAAA,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,UAAAE,2BAAAA,KAACC,gBAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,KAC5B,UAAA;AAAA,cAAA,YAAY,mBACTJ,2BAAAA;AAAAA,gBAACK,SAAAA;AAAAA,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,cAGxHL,2BAAAA;AAAAA,gBAACE,WAAAA;AAAAA,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,YACFF,2BAAAA;AAAAA,cAACC,SAAAA;AAAAA,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,UAAAE,2BAAAA,KAACC,gBAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,KAC5B,UAAA;AAAA,kBAAA,YAAY,mBACTJ,2BAAAA;AAAAA,oBAACK,SAAAA;AAAAA,oBAAA;AAAA,sBACG,SAAS,QAAQ,MAAM,QAAQ,MAAM,KAAK,OAAO,SAAS,IAAI,KAAK,CAAC;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAG5EL,2BAAAA;AAAAA,oBAACE,WAAAA;AAAAA,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,MACFF,2BAAAA,IAACC,SAAAA,UAAA,EAAS,UAAQ,MAAe,iCAAV,SAEvB;AAAA,IAAA;AAAA,EAER;AAEA,SAAO;AACX;AAGA,MAAM,gBAGD,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,SACIE,2BAAAA;AAAAA,IAACD,WAAAA;AAAAA,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,KACXF,2BAAAA,IAACM,KAAAA,MAAA,EAAK,SAAQ,YAAW,MAAK,UAAS,OAAON,2BAAAA,IAACO,KAAAA,UAAA,CAAA,CAAS,EAAA,CAAI;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAI5E;AAEA,MAAM,UAAU,MACZP,2BAAAA,IAACE,uBAAA,EAAW,WAAU,UAAS,OAAM,WAAU,MAAK,MAAK,UAAA,aAAA,CAAU;AAGvE,MAAM,sBAA2D,MAAM,KAAK,CAAC,UAAU;;AACnF,QAAM,eAAeM,cAAAA,SAAS;AAAA,IAC1B,SAAS,MAAM;AAAA,IACf,MAAM,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,EAAA,CAC9C;AAED,QAAM,EAAE,QAAA,IAAYC,cAAA;AAQpB,QAAM,cAAcC,cAAAA,eAAA;AACpB,QAAM,EAAE,UAAU,gBAAA,IAAoB,eAAe,CAAA;AAErD,QAAM,sBAAsBC,MAAAA,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,IAAMC,4BAAA;AACd,QAAM,EAAE,MAAA,IAAUC,oBAAA;AAClB,QAAM,EAAE,MAAM,SAAA,IAAaC,gBAAA;AACPC,QAAAA,QAAQ,MAAM;AAC9B,QAAI,SAAU,QAAO;AACrB,QAAI;AACA,YAAM,SAAS,OAAO,aAAa,QAAQC,KAAAA,KAAK,kBAAkB;AAClE,aAAO,SAAS,KAAK,MAAM,MAAM,IAAI;AAAA,IACzC,QAAQ;AACJ,aAAO;AAAA,IACX;AAAA,EACJ,GAAG,CAAC,QAAQ,CAAC;AACb,QAAM,YAAYC,MAAAA,OAAuB,IAAI;AAG7C,QAAM,CAAC,SAAS,UAAU,IAAIC,MAAAA,SAAoB,CAAA,CAAE;AACpD,QAAM,CAAC,eAAe,gBAAgB,IAAIA,MAAAA,SAAc,IAAI;AAC5D,QAAM,CAAC,iBAAiB,kBAAkB,IAAIA,MAAAA,SAAoB,CAAA,CAAE;AACpE,QAAM,CAAC,SAAS,UAAU,IAAIA,MAAAA,SAAkB,KAAK;AACrD,QAAM,CAAC,MAAM,OAAO,IAAIA,MAAAA,SAAkB,KAAK;AAC/C,QAAM,CAAC,iBAAiB,kBAAkB,IAAIA,MAAAA,SAAkB,KAAK;AACrE,QAAM,CAAC,YAAY,aAAa,IAAIA,MAAAA,SAAc,IAAI;AACtD,QAAM,CAAC,gBAAgB,iBAAiB,IAAIA,MAAAA,SAAkB,KAAK;AACnE,QAAM,CAAC,aAAa,cAAc,IAAIA,MAAAA,SAAiB,EAAE;AACzD,QAAM,CAAC,gBAAgB,iBAAiB,IAAIA,MAAAA,SAAkB,KAAK;AACnE,QAAM,CAAC,WAAW,YAAY,IAAIA,MAAAA,SAAc,IAAI;AAGpD,QAAM,CAAC,aAAa,cAAc,IAAIA,MAAAA,SAAkB,KAAK;AAC7D,QAAM,CAAC,cAAc,eAAe,IAAIA,MAAAA,SAAkB,KAAK;AAI/D,QAAM,CAAC,YAAY,aAAa,IAAIA,eAA2B;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,oBAAoBH,MAAAA,QAAQ,MAAM;;AACpC,QAAI,mBAAmB,WAAW,gBAAiB,QAAO;AAC1D,WAAQ,CAAC,WAAW,CAAC,mBAAoB,cAAc,WAAW,qBAAmBJ,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,KAAKI,MAAAA,QAAQ,MAAM,eAAe,CAAC,KAAK,UAAU,aAAa,CAAC,CAAC;AAKvE,QAAM,EAAE,iBAAiB,GAAC,IAAMI,qCAAiB;AAAA,IAC7C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACH;AAID,QAAM,uBAAuBT,MAAAA,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,UAAMU,mBAAkB,aAClB,iDAAgB,OAAO,CAAC,KAAgB,QAAiB;;AACvD,YAAM,mBAAkBT,MAAA,IAAI,YAAJ,gBAAAA,IAAa,OAAO,CAAC,SAAkB;AAC3D,cAAM,QAAQ,MAAM,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,QAAQ,MAAM,eAAe,IAAI,KAAK,IAAI,IAAI,cAAc,OAAO,IAAI,KAAK;AAClF,aAAO,+BAAO,cAAc,SAAS;AAAA,IACzC,OAAM,CAAA;AAGV,WAAO,qBAAqBS,kBAAiB,KAAK;AAAA,EAEtD,GAAG,CAAC,MAAM,SAAS,WAAW,cAAc,CAAC;AAG7C,QAAM,mBAAmBV,kBAAY,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,uBAAuBA,MAAAA,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,cAAcW,EAAAA,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,kBAAkBN,MAAAA,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,yBAAyBA,MAAAA,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,QAAM,eAAeL,MAAAA,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,MAAMY,aAAS;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,eAAeZ,kBAAY,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,mBAAa,aAAa,IAAI,UAAU,IAAI;AAAA,IAChD;AAAA,EACJ,GAAG,CAAC,WAAW,SAAS,WAAW,eAAe,WAAW,MAAM,mBAAmB,aAAa,IAAI,YAAY,CAAC;AAGpH,QAAM,gBAAgBA,MAAAA,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,sBAAsBA,kBAAY,OAAOa,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,iBAAiBb,MAAAA,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;AACtB,YAAM,WAAW,MAAM,aAAa,IAAI,EAAE,GAAG,IAAI,UAAU,aAAA,GAAgB,GAAG,KAAK;AACnF,wBAAkB,KAAK;AAEvB,UAAI,SAAS,UAAU,KAAK,YAAY,CAAC,kBAAmB;AAAA,IAGhE;AAAA,EAEJ,GAAG,CAAC,MAAM,cAAc,KAAK,UAAU,EAAE,CAAC,CAAC;AAG3C,QAAM,eAAeA,MAAAA,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,YAAM,aAAa,aAAa,IAAI,GAAG,KAAK;AAC5C,yBAAmB,IAAI;AAAA,IAC3B;AAAA,EAEJ,GAAG,CAAC,IAAI,mBAAmB,eAAe,CAAC;AAG3C,QAAM,kBAAkBK,MAAAA;AAAAA,IACpB,MAAMS,EAAAA,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,cAAM,aAAa,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,cAAM,aAAa,YAAY,IAAI,GAAG,KAAK;AAAA,MAC/C;AAAA,IACJ,GAAG,GAAG;AAAA;AAAA,IAEN,CAAC,mBAAmB,gBAAgB,EAAE;AAAA,EAAA;AAI1C,QAAM,aAAad,kBAAY,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,cAAcA,MAAAA,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,kBAAkBA,MAAAA,YAAY,MAAM;AACtC,mBAAe,IAAI;AAAA,EACvB,GAAG,CAAA,CAAE;AAKL,QAAM,kBAAkBA,kBAAY,OAAO,YAAiB;AACxD,QAAI,CAAC,aAAa,CAAC,UAAU,KAAK;AAC9B,cAAQ,MAAM,uCAAuC;AACrD;AAAA,IACJ;AAGA,YAAQ;AAAA,MACJ,SAAS,MAAM,UAAU,IAAI,OAAO;AAAA,MACpC,gBAAgB,GAAG,MAAM,KAAK,IAAI,EAAE,2BAA2B,CAAC;AAAA,MAChE,cAAc;AAAA,MACd,WAAW,OAAO,WAAW;AACzB,uBAAe,KAAK;AACpB,YAAI,CAAC,mBAAmB;AACpB,wBAAc;AAAA,YACV,MAAM;AAAA,YACN,SAAS;AAAA,YACT,eAAe;AAAA,YACf,OAAO;AAAA,UAAA,CACV;AACD,6BAAmB,KAAK;AACxB,gBAAM,aAAa,IAAI,IAAI,GAAG,KAAK;AAAA,QACvC;AACA,YAAI,UAAU,OAAO,MAAM;AACvB,gBAAM,WAAW,MAAM,iBACjB,CAAC,GAAI,gBAAgB,CAAA,GAAK,OAAO,KAAK,EAAE,IACxC,OAAO,KAAK;AAClB,mBAAS,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI,IAAI,QAAQ;AAC1D,cAAI,iBAAiB;AACjB,4BAAgB,OAAO,MAAM,MAAM,MAAM,IAAI;AAAA,UACjD;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,SAAS,MAAM;AACX,wBAAgB,KAAK;AAAA,MACzB;AAAA,IAAA,CACH;AAAA,EAIL,GAAG,CAAC,WAAW,mBAAmB,cAAc,IAAI,MAAM,gBAAgB,MAAM,gBAAgB,MAAM,MAAM,cAAc,QAAQ,CAAC;AAGnIe,QAAAA,UAAU,MAAM;AACZ,QAAI,eAAe;AACf,oBAAc,aAAa;AAAA,IAC/B;AAAA,EACJ,GAAG,CAAC,eAAe,aAAa,CAAC;AAEjCA,QAAAA,UAAU,MAAM;AACZ,QAAI,MAAM;AACN,mBAAA;AAAA,IACJ;AAAA,EACJ,GAAG,CAAC,MAAM,YAAY,CAAC;AAEvBA,QAAAA,UAAU,MAAM;AACZ,mBAAA;AAAA,EACJ,GAAG,CAAC,cAAc,CAAC;AAEnBA,QAAAA,UAAU,MAAM;AACZ,QAAI,SAAS;AACT,oBAAc;AAAA,QACV,MAAM;AAAA,QACN,SAAS;AAAA,QACT,eAAe;AAAA,QACf,OAAO;AAAA,MAAA,CACV;AACD,mBAAa,IAAI,IAAI,GAAG,KAAK;AAAA,IACjC;AAAA,EACJ,GAAG,CAAC,SAAS,cAAc,EAAE,CAAC;AAE9BA,QAAAA,UAAU,MAAM;AACZ,QAAI,MAAM;AACN,sBAAgB,WAAW;AAAA,IAC/B;AACA,WAAO,MAAM,gBAAgB,OAAA;AAAA,EACjC,GAAG,CAAC,aAAa,MAAM,eAAe,CAAC;AAEvCA,QAAAA,UAAU,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,kBAAkBf,kBAAY,CAAC,kBAAyB;AAC1D,WAAO,MAAM,QAAQ,aAAa,IAAI,cAAc,OAAO,OAAO,IAAI,CAAA;AAAA,EAC1E,GAAG,CAAA,CAAE;AAELe,QAAAA,UAAU,MAAM;AACZ,UAAM,SAAS,iBAAiB,OAAO;AACvC,iBAAa,MAAM;AAAA,EACvB,GAAG,CAAC,OAAO,CAAC;AAIZ,SACI1B,2BAAAA;AAAAA,IAAC2B,cAAAA;AAAAA,IAAA;AAAA,MACG,SAAS,MAAM;AAAA,MACf,MAAM,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,MAC3C,QAAQ,CAAC,EAAE,OAAO,WAAA;;AACdxB,+CAAAyB,WAAAA,UAAA,EACK,UAAA;AAAA,UAAA,MAAM,eAAe,qBAAqB,iBAAiB,MAAM,KAAK;AAAA,UACtE,kBACG5B,2BAAAA;AAAAA,YAAC6B,SAAAA;AAAAA,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,yCAAC,QAAA,EACG,UAAA1B,2BAAAA;AAAAA,gBAAC2B,OAAAA;AAAAA,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,oBAAkBlB,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,6BACIZ,2BAAAA;AAAAA,wBAAC+B,kBAAAA;AAAAA,wBAAA;AAAA,0BACG,eAAe,MAAM;AAAA,0BACrB,MAAM,gBAAgB,QAAQ;AAAA,0BAC9B,aAAc,WAAW,MAAM,aAAc/B,2BAAAA,IAAC,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,oCAAAY,MAAA,OAAO,UAAP,gBAAAA,IAAc,OAAM,OAAO,UAAU;AAAA;AAAA,sBAAA;AAEtD,6BAAQ,WAAW,MAAM,aAAcZ,2BAAAA,IAAC,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,CAACgC,UAAiB;AAC5B,mCAAeA,KAAI;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,OACIhC,2BAAAA;AAAAA,oBAACiC,SAAAA;AAAAA,oBAAA;AAAA,sBACG,OAAM;AAAA,sBACN,cACIjC,2BAAAA,IAACkC,SAAAA,gBAAA,EAAe,UAAS,OACnB,UAAA,WAAW,MAAM,aACflC,2BAAAA;AAAAA,wBAACmC,SAAAA;AAAAA,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,oBACzBnC,2BAAAA;AAAAA,wBAACoC,SAAAA;AAAAA,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,yCAACC,qBAAA,EAAM,IAAI,EAAE,UAAU,SAAO,CAAG;AAAA,wBAAA;AAAA,sBAAA,EACrC,CAGZ;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAKX,UAAA;AAAA,oBAAAtC,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,kBACJI,2BAAAA,KAACC,SAAAA,KAAA,EAAiB,IAAI,EAAE,UAAU,UAAU,QAAQ,GAAG,YAAY,QAAQ,QAAQ,KAC/E,UAAA;AAAA,sBAAAJ,2BAAAA,IAACsC,SAAAA,SAAA,EAAQ,UAAQ,MAAC,IAAI,EAAE,IAAI,sBAAsB,IAAI,qBAAA,EAAqB,CAAG;AAAA,sBAC9EnC,2BAAAA,KAACF,SAAAA,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,wBAAAD,2BAAAA,IAACuC,cAAAA,KAAA,EAAI,UAAS,QAAA,CAAQ;AAAA,wBACtBpC,2BAAAA,KAACD,WAAAA,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,iBACRF,+BAACC,SAAAA,UAAA,EAAS,UAAQ,MACd,UAAAD,2BAAAA,IAACI,SAAAA,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,gBAAgB,UAAU,OAAO,OAAA,GACzD,yCAAC+B,SAAAA,kBAAA,EAAiB,MAAM,GAAA,CAAI,EAAA,CAChC,EAAA,CACJ;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAAA,EAER,CACJ;AAAA,YAAA;AAAA,UAAA,IAGJhC,2BAAAA;AAAAA,YAAC2B,OAAAA;AAAAA,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,yBACI9B,2BAAAA;AAAAA,oBAAC+B,kBAAAA;AAAAA,oBAAA;AAAA,sBACG,eAAe,MAAM;AAAA,sBACrB,MAAM,gBAAgB,QAAQ;AAAA,sBAC9B,aAAc,WAAW,MAAM,aAAc/B,2BAAAA,IAAC,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,gCAAAY,MAAA,OAAO,UAAP,gBAAAA,IAAc,OAAM,OAAO,UAAU;AAAA;AAAA,kBAAA;AAEtD,yBAAQ,WAAW,MAAM,aAAcZ,2BAAAA,IAAC,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,CAACgC,UAAiB;AAC5B,+BAAeA,KAAI;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,OACIhC,2BAAAA;AAAAA,gBAACiC,SAAAA;AAAAA,gBAAA;AAAA,kBACG,OAAM;AAAA,kBACN,cACIjC,2BAAAA,IAACkC,SAAAA,gBAAA,EAAe,UAAS,OACnB,UAAA,WAAW,MAAM,aACflC,2BAAAA;AAAAA,oBAACmC,SAAAA;AAAAA,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,oBACzBnC,2BAAAA;AAAAA,oBAACoC,SAAAA;AAAAA,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,yCAACC,qBAAA,EAAM,IAAI,EAAE,UAAU,SAAO,CAAG;AAAA,oBAAA;AAAA,kBAAA,EACrC,CAGZ;AAAA,gBAAA;AAAA,cAAA;AAAA,cAKX,UAAA;AAAA,gBAAAtC,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,kBACJI,2BAAAA,KAACC,SAAAA,KAAA,EAAiB,IAAI,EAAE,UAAU,UAAU,QAAQ,GAAG,YAAY,QAAQ,QAAQ,KAC/E,UAAA;AAAA,kBAAAJ,2BAAAA,IAACsC,SAAAA,SAAA,EAAQ,UAAQ,MAAC,IAAI,EAAE,IAAI,sBAAsB,IAAI,qBAAA,EAAqB,CAAG;AAAA,kBAC9EnC,2BAAAA,KAACF,SAAAA,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,oBAAAD,2BAAAA,IAACuC,cAAAA,KAAA,EAAI,UAAS,QAAA,CAAQ;AAAA,oBACtBpC,2BAAAA,KAACD,WAAAA,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,iBACRF,+BAACC,SAAAA,UAAA,EAAS,UAAQ,MACd,UAAAD,2BAAAA,IAACI,SAAAA,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,gBAAgB,UAAU,OAAO,OAAA,GACzD,yCAAC+B,SAAAA,kBAAA,EAAiB,MAAM,GAAA,CAAI,EAAA,CAChC,EAAA,CACJ;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAMX,aAAa,UAAU,mEAEf,UAAA,MAAM,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,KAC9CnC,2BAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACG,MAAM,MAAM;AAAA,cACZ,SAAS;AAAA,YAAA;AAAA,UAAA;AAAA,QACb,EAAA,CAER;AAAA;AAAA,IAAA;AAAA,EAAA;AAIhB,CAAC;AC5nCD,MAAM,mBAAgD,CAAC;AAAA;AAAA,EAEtD;AAAA,EACA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA,EACA,kBAAAwC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAAM;;AAEL,QAAM,CAAC,YAAY,aAAa,IAAIrB,eAAA;AACpC,QAAM,CAAC,cAAc,eAAe,IAAIA,MAAAA,SAAc,KAAK;AAC3D,QAAM,eAAeD,MAAAA,OAAO,IAAI;AAEhC,QAAM,WAAW,IACf,YAAA,EACA,IAAI,CAACuB,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,qBAAqB9B,MAAAA,YAAY,OAAO+B,MAAK,WAAW;AAC7D,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;AAG3ChB,QAAAA,UAAU,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,YAAMc,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,eAAI,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;AAEAjB,QAAAA,UAAU,MAAM;AACf,kBAAc,EAAE,GAAG,YAAY,GAAG,IAAI,cAAc;AAAA,EAErD,GAAG,CAAC,IAAI,YAAY,CAAC;AAErBA,QAAAA,UAAU,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,cACCd,MAAA,KAAK,OAAO,cAAZ,gBAAAA,IAAuB,mBAAkB,YACzCgC,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,WAAW,KAAK,WAAW,SAAS,KAAK,OAAO,EAAE,GAAG;AACnE,kBAAM,eAAcC,MAAA,IAAI,iBAAJ,gBAAAA,IAAmB,KAAK,OAAO;AACnD,kBAAM,KAAK,EAAE,IAAI,IAAI,UAAUF,SAAQ;AACvC,gBAAI,gBAAgB,YAAY,aAAa;AAC5C,sBAAQ,KAAK,OAAO,EAAE,IAAI,gBAAgB,KACvC,MAAM,QAAQ,EAAE,IACf,KACA,CAAC,EAAE,IACJ,CAAA;AAAA,YACJ,WAAW,gBAAgB,UAAU,gBAAgB,aAAa;AACjE,sBAAQ,KAAK,OAAO,EAAE,IAAI,gBAAgB,KACvC,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,oBAAM,WAAW,EAAE;AAAA,gBAClB,IAAI;AAAA,gBACJA;AAAAA,gBACA,IAAI,SAAS,KAAK,OAAO,EAAE;AAAA,cAAA;AAE5B,oBAAM,oBAAmBG,OAAAC,MAAA,KAAK,OAAO,cAAZ,gBAAAA,IAAuB,mBAAvB,gBAAAD,IAAuC;AAChE,sBAAQ,KAAK,OAAO,EAAE,IAAI,iBAAiB,aAAa,MAAM,aAAa,UAAa,aAAa,SACjG,qBAAqB,SACtB,mBACA;AAAA,YACL;AAAA,UACD;AAAA,QACA;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,SACC7C,2BAAAA,KAAAyB,qBAAA,EACG,UAAA;AAAA,KAAA,CAAC,eAAe,gBAAgB,aACjC5B,2BAAAA;AAAAA,MAACkD,UAAAA;AAAAA,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/C,gCAACC,SAAAA,KAAA,EAAI,SAAQ,QAAO,eAAc,UAAS,OAAM,QAChD,UAAA;AAAA,MAAAJ,2BAAAA;AAAAA,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,GAAG0C,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,UAC1E,UAAU;AAAA,QAAA;AAAA,MAAA;AAAA,OAGV,iCAAS,OAAO,QAChB1C,2BAAAA,IAACE,WAAAA,YAAA,EAAW,OAAM,mBAAkB,MAAK,MACvC,UAAA,iCAAS,OAAO,IAAE,CACpB;AAAA,IAAA,GAEF;AAAA,IAEA,gBAAgB,UAChBF,2BAAAA;AAAAA,MAACmD,WAAAA;AAAAA,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,eAChBnD,2BAAAA;AAAAA,MAACoD,eAAAA;AAAAA,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,4CAC1ChD,cAAA,EAAI,SAAQ,QAAO,eAAc,UACjC,UAAA;AAAA,MAAAJ,2BAAAA;AAAAA,QAACqD,YAAAA;AAAAA,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,QAChBrD,2BAAAA,IAACE,WAAAA,YAAA,EAAW,OAAM,mBAAkB,MAAK,MACvC,UAAA,iCAAS,OAAO,IAAE,CACpB;AAAA,IAAA,GAEF;AAAA,IAEA,gBAAgB,WAChBF,2BAAAA;AAAAA,MAACsD,WAAAA;AAAAA,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,cAChBtD,2BAAAA;AAAAA,MAACK,SAAAA;AAAAA,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;ACxNA,MAAM,eAAekD,SAAAA,OAAOnD,cAAK;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,gBAAgB,MAAM,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,IAAMS,4BAAA;AACd,QAAM,EAAE,WAAW,MAAM,gBAAgB,YAAY,MAAA,IAAU2C,iBAAA;AAC/D,QAAM,aAAaC,YAAAA,YAAuB,KAAK;AAC/C,QAAM,EAAE,WAAW;AACnB,QAAM,CAAC,KAAK,MAAM,IAAItC,MAAAA,SAAS,CAAA,CAAE;AACjC,QAAM,CAAC,cAAc,eAAe,IAAIA,MAAAA,SAAS,OAAO;AACxD,QAAM,CAAC,UAAU,WAAW,IAAIA,MAAAA,SAA6B,IAAI;AACjE,QAAM,CAAC,WAAW,YAAY,IAAIA,MAAAA,SAAkB,KAAK;AACzD,QAAM,CAAC,aAAa,cAAc,IAAIA,MAAAA,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,IAAIA,MAAAA,SAAS,aAAa;AACpE,QAAM,CAAC,aAAa,cAAc,IAAIA,MAAAA,SAAwB,IAAI;AAClE,QAAM,CAAC,kBAAkB,mBAAmB,IAAIA,MAAAA,SAAc,CAAA,CAAE;AAChE,QAAM,CAACqB,mBAAkB,mBAAmB,IAAIrB,MAAAA,SAAc,CAAA,CAAE;AAChE,QAAM,CAAC,eAAe,gBAAgB,IAAIA,MAAAA,SAAkB,KAAK;AACjE,QAAM,CAAC,cAAc,eAAe,IAAIA,MAAAA,SAAkB,KAAK;AAC/D,QAAM,CAAC,eAAe,gBAAgB,IAAIA,MAAAA,SAAkB,KAAK;AACjE,QAAM,CAAC,aAAa,cAAc,IAAIA,MAAAA,SAAc,IAAI;AACxD,QAAM,CAAC,cAAc,eAAe,IAAIA,MAAAA,SAAgC,CAAA,CAAE;AAC1E,QAAM,CAAC,WAAW,YAAY,IAAIA,MAAAA,SAAS,KAAK;AAChD,QAAM,CAAC,SAAS,UAAU,IAAIA,MAAAA,SAA2B,CAAA,CAAE;AAC3D,QAAM,CAAC,iBAAiB,kBAAkB,IAAIA,MAAAA,SAAS,KAAK;AAC5D,QAAM,CAAC,cAAc,eAAe,IAAIA,MAAAA,SAAgC,WAAW,YAAY;AAC/F,QAAM,CAAC,kBAAkB,mBAAmB,IAAIA,eAAoC;AAAA,IACnF,mBAAmB,CAAA;AAAA,IACnB,aAAa;AAAA,IACb,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,aAAa;AAAA,IACb,WAAW;AAAA,EAAA,CACX;AAED,QAAM,WAAWuC,eAAAA,YAAA;AACjB,QAAM,gBAAgB,SAAS,SAAS,MAAM,GAAG,EAAE,CAAC;AAEpD,MAAI,kBAAkB;AACtB,UAAQ,eAAA;AAAA,IACP,KAAK;AACJ,wBAAkBC,gBAAAA,mBAAmB;AACrC;AAAA,IACD,KAAK;AACJ,wBAAkBC,gBAAAA,kBAAkB;AACpC;AAAA,IACD,KAAK;AAEJ,wBAAkBC,gBAAAA,sBAAsB;AACxC;AAAA,IACD,KAAK;AACJ,wBAAkBC,gBAAAA,iBAAiB;AACnC;AAAA,IACD,KAAK;AACJ,wBAAkBC,gBAAAA,YAAY;AAC9B;AAAA,IACD,KAAK;AACJ,wBAAkBC,cAAAA,cAAc;AAChC;AAAA,IACD,KAAK;AACJ,wBAAkBC,gBAAAA,eAAe;AACjC;AAAA,IACD,KAAK;AACJ,wBAAkBC,kBAAAA,iBAAiB;AACnC;AAAA,IACD,KAAK;AACJ,wBAAkBC,cAAAA,aAAa;AAC/B;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,eAAcxB,eAAI,MAAA,IAAUA,eAAI,OAAA;AAAA,MAEhE,KAAK;AACJ,eAAOA,eAAI,SAAS,SAAA,EAAW,UAAU,CAAC,OAAO,kBAAmB,kBAAkB,KAAK,OAAO,KAAM;AAAA,MAEzG,KAAK;AACJ,eAAOA,eACL,SACA;AAAA,UACA;AAAA,UACA,EAAE,oBAAoB,MAAM,SAAS,0BAAA;AAAA,QAA0B;AAAA,MAGlE,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACJ,eAAOA,eAAI,KAAA,EAAO,UAAU,CAAC,OAAO,kBAAkB;AACrD,cAAI,iBAAiB,OAAO,kBAAkB,YAAY,YAAY,eAAe;AACpF,mBAAQ,cAAsB,OAAA;AAAA,UAC/B;AACA,iBAAO;AAAA,QACR,CAAC,EAAE,UAAU,wBAAwB;AAAA,MAEtC,KAAK;AAAA,MACL,KAAK;AACJ,eAAOA,eAAI,MAAA,EAAQ,SAAA;AAAA,MAEpB;AACC,eAAOA,eAAI,OAAA;AAAA,IAAO;AAAA,EAErB;AAEA,QAAM,oBAAoB,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,qBAAA/B,MAAA,yCAAY,oBAAZ,gBAAAA,IAA6B;AAAA,cAC5B,CAACwD,cAAkBC,gBAClB,kBAAkBD,cAAaC,aAAY,MAAM;AAAA,cAClD;AAAA,kBACI;AAAA;AAAA,UACN,WAAW,MAAA;;AACV,qBAAAzD,MAAA,yCAAY,yBAAZ,gBAAAA,IAAkC;AAAA,cACjC,CAACwD,cAAkBC,gBAClB,kBAAkBD,cAAaC,aAAY,MAAM;AAAA,cAClD;AAAA,kBACI;AAAA;AAAA,QAAA,CACN;AAAA,MACF,KAAK;AACJ,YAAI,OAAO,WAAW,aAAa,YAAY;AAC9C,gBAAM,IAAI;AAAA,YACT,WAAW,QAAQ;AAAA,YACnB,WAAW,UAAU;AAAA,YACrB,SAAU,OAAO;AAEhB,qBAAO,WAAW,SAAS,OAAO,KAAK,MAAM;AAAA,YAC9C;AAAA,UAAA;AAAA,QAEF;AACA;AAAA,MAED;AACC,cAAM;AACN;AAAA,IAAA;AAGF,QAAI,WAAW,QAAQ,cAAc,WAAW,UAAU,EAAC,iCAAQ,iBAAe,iCAAQ,gBAAe,SAAS;AACjH,YAAM,IAAI,KAAK,mBAAmB,8BAA8B,CAAC,UAAU;;AAC1E,YAAI,CAAC,MAAO,QAAO;AACnB,iBAAOzD,MAAA,MAAM,WAAN,gBAAAA,IAAc,UAAS;AAAA,MAC/B,CAAC;AAAA,IACF;AAEA,WAAO;AAAA,EAER;AAGA,QAAM,2BAA2B,CAAC0D,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,eAClB,kBAAkB,aAAa,YAAY,GAAG;AAAA,UAC/C,kBAAkB,GAAG;AAAA;AAEtB,eAAO,IAAI,WAAW,IAAI;AAAA,MAC3B;AAAA,IACD,CAAC;AACD,WAAO;AAAA,EACR;AAEA5C,QAAAA,UAAU,MAAM;AACf,oBAAgB,OAAO;AAEvB,UAAM,SAAc,yBAAyB,OAAO;AACpD,wBAAoBiB,eAAI,OAAA,EAAS,MAAM,MAAM,CAAC;AAAA,EAE/C,GAAG,CAAC,OAAO,CAAC;AAEZjB,QAAAA,UAAU,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,CAACgB,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/B,kBAAY,CAAC,mBAAwB;;AAC1D,YAAO,sDAAgB,gBAAhB,mBAA6B,KAAK,CAAC,eAAoB,WAAW,SAAS;AAAA,EACnF,GAAG,CAAA,CAAE;AACLe,QAAAA,UAAU,MAAM;AACf,UAAM,eAAe,CAAA;AAErB,QAAI,CAAC,aAAa,eAAe,QAAQ;AACxC,WAAK,QAAQ,CAACgB,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;AAEzBhB,QAAAA,UAAU,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;AACxB,wBAAoB,CAAA,CAAE;AAAA,EACvB;AAEA,QAAM,eAAe,CAACM,UAAiB;AACtC,UAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,UAAM,MAAM,OAAO,WAAW,IAAI;AAClC,QAAI,CAAC,IAAK,QAAO;AACjB,WAAO,IAAI,YAAYA,KAAI,EAAE,QAAQ;AAAA,EACtC;AACA,QAAM,QAAQuC,mBAAAA,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,CAAA7B,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,OAAA8B,QAAO,aAAa;AACvC,qBACCxE,2BAAAA;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA,KAAK;AAAA,kBACL,KAAK0C;AAAAA,kBACL,OAAO8B;AAAAA,kBACP,QAAQ;AAAA,kBACR,kBAAAhC;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA,iBAAiB,CAAC,MAAME,SAAQ,mDAAkB,MAAMA;AAAAA,gBAAG;AAAA,cAAA;AAAA,YAG9D;AAAA,UAAA,IAEC,CAAA;AAAA,UACH,QACCvC,2BAAAA,KAACC,SAAAA,KAAA,EAAI,SAAQ,QAAO,YAAW,UAC7B,UAAA;AAAA,YAAA,EAAE;AAAA,aACF,uBAAG,aAAY,cAAc,uBAAG,cAAc,KAC9CJ,2BAAAA,IAACE,WAAAA,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,uCACEkC,qBAAA,EAAW,MAAK,SAAQ,IAAI,EAAE,IAAI,QAAQ,WAAW,EAAE,iBAAiB,gBAAc,GACtF,UAAApC,2BAAAA,IAAC,OAAA,EAAI,KAAKyE,OAAAA,QAAO,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,UACNzE,2BAAAA;AAAAA,YAAC0E,OAAAA;AAAAA,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,QACC1E,2BAAAA,IAACoC,SAAAA,YAAA,EAAW,MAAK,SAAQ,IAAI,EAAE,GAAG,KAAK,WAAW,EAAE,iBAAiB,gBAAc,GAAK,SAAS,mBAChG,UAAApC,+BAAC,OAAA,EAAI,KAAKyE,eAAO,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,mBAAOE,MAAAA,aAAa,MAAM,YAAY;AAAA,UACvC,CAAC,IACE,CAAC,mCACJ3E,2BAAAA;AAAAA,YAACoC,SAAAA;AAAAA,YAAA;AAAA,cACA,SAAS,CAAC,MAAM,mBAAmB,GAAG,MAAM,IAAI,QAAQ;AAAA,cAAG,UAAU,EAAC,+CAAe,WAAU,EAAC,+DAAuB;AAAA,cACvH,yCAAC,OAAA,EAAI,KAAKqC,OAAAA,QAAO,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,cAAMjC,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,eAAI,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;AAChCiC,oBAAAA,gBAAgB,IAAI,SAAS,EAAE,SAAS,SAAS;AAAA,QAClD,OAAO;AACNA,oBAAAA,gBAAgB,wBAAwB,EAAE,SAAS,QAAA,CAAS;AAAA,QAC7D;AAAA,MACD;AAAA,IACD;AAAA,IACA,mBAAmB,OAAO,SAAS;AAClC,UAAI;AACH,cAAMpC,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,eAAI,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;AAChCiC,oBAAAA,gBAAgB,IAAI,SAAS,EAAE,SAAS,SAAS;AAAA,QAClD,OAAO;AACNA,oBAAAA,gBAAgB,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,QACC5E,2BAAAA,IAACoC,SAAAA,YAAA,EAAW,SAAS,mBAAmB,MAAK,SAC5C,UAAApC,2BAAAA,IAAC,OAAA,EAAI,KAAKyE,OAAAA,QAAO,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,KAAA/B,MAAK,OAAA8B,OAAAA,MACzBxE,2BAAAA,IAAA4B,WAAAA,UAAA,EACE,WAAA,6BAAM,yEAEJ,WAAAc,6BAAK,aACLvC,2BAAAA,KAACC,SAAAA,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,EAAA,GAChC,UAAA;AAAA,MAAAJ,2BAAAA,IAAC6B,QAAAA,SAAA,EAAQ,OAAM,QACd,UAAA7B,+BAACoC,SAAAA,cAAW,UAAU,iBAAiB,SAAS,MAAM;AACrD,4BAAoB,CAAA,CAAE;AACtBoC,eAAM,cAAc9B,IAAG;AACvB,2BAAmB,IAAI;AAAA,MACxB,GAEE,MAAK,SACN,UAAA1C,2BAAAA,IAAC6E,KAAAA,MAAA,EAAK,UAAS,SAAQ,IAAI,EAAE,OAAO,uBAAA,EAAuB,CAAG,GAC/D,GACD;AAAA,MACC,eACA7E,2BAAAA,IAAC6B,QAAAA,SAAA,EAAQ,OAAM,UACd,UAAA7B,+BAACoC,SAAAA,YAAA,EAAW,UAAU,iBAAiB,SAAS,MAAM,eAAeM,IAAG,GAAG,MAAK,SAC/E,UAAA1C,2BAAAA,IAAC8E,MAAAA,OAAA,EAAM,UAAS,SAAQ,IAAI,EAAE,OAAO,uBAAA,EAAuB,CAAG,EAAA,CAChE,EAAA,CACD;AAAA,IAAA,EAAA,CAEF,EAAA,CAEF,IAEA3E,2BAAAA,KAACC,SAAAA,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,EAAA,GAChC,UAAA;AAAA,MAAAJ,2BAAAA,IAAC6B,QAAAA,SAAA,EAAQ,OAAM,QACd,UAAA7B,+BAACoC,SAAAA,cAAW,UAAU,iBAAiB,SAAS,MAAM;AACrD,4BAAoB,CAAA,CAAE;AACtBoC,eAAM,cAAc9B,IAAG;AACvB,2BAAmB,IAAI;AAAA,MACxB,GACC,UAAA1C,2BAAAA,IAAC6E,KAAAA,MAAA,EAAK,UAAS,SAAQ,IAAI,EAAE,OAAO,uBAAA,EAAuB,CAAG,EAAA,CAC/D,EAAA,CACD;AAAA,MACC,8CACChD,iBAAA,EAAQ,OAAM,UACd,UAAA7B,2BAAAA,IAACoC,SAAAA,YAAA,EAAW,SAAS,MAAM,eAAeM,IAAG,GAC5C,UAAA1C,2BAAAA,IAAC8E,aAAA,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,OAAAN,aACpCxE,2BAAAA;AAAAA,QAAC0E,OAAAA;AAAAA,QAAA;AAAA,UACA,SAAQ;AAAA,UACR,0CAAYnC,SAAA,EAAI;AAAA,UAChB,WAAU;AAAA,UACV,UAAU;AAAA,UACV,SAAS,MAAM;AACd,gCAAoB,CAAA,CAAE;AACtBiC,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,MACA,oBAAoB;AAAA,IAAA;AAAA,IAGrB,UAAU,CAAC9B,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,MACxBvC,2BAAAA,KAACC,SAAAA,KAAA,EAAI,WAAU,WACd,UAAA;AAAA,MAAAJ,2BAAAA,IAAC,OAAA,EAAI,KAAKyE,OAAAA,QAAO,OAAO,aAAa;AAAA,MACrCzE,2BAAAA,IAACE,WAAAA,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,KAAAwC,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,WAAW;AAAA,MACX,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,qCAAOqC,UAAAA,gBAAA,EAAe,IAAI,EAAE,OAAO,IAAI,QAAQ,GAAA,GAAM;AAAA,MACrD,4CAAcC,SAAAA,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,qCAAOD,UAAAA,gBAAA,EAAe,IAAI,EAAE,OAAO,IAAI,QAAQ,GAAA,GAAM;AAAA,MACrD,4CAAcC,SAAAA,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,UACnBhF,+BAACiF,YAAAA,eAAY,UAAS,UAAU,GAAG,OAAO;AAAA,MAE3C,UAAU,CAAC,UACVjF,+BAACiF,YAAAA,eAAY,UAAS,UAAU,GAAG,OAAO;AAAA,MAE3C,aAAa,MAAMjF,2BAAAA,IAACiF,YAAAA,aAAA,EAAY,UAAS,SAAA,CAAS;AAAA,MAClD,YAAY,CAAC,UACZjF,+BAACqC,MAAAA,OAAA,EAAM,UAAS,SAAS,GAAG,OAAO,IAAI,EAAE,OAAO,yBAAuB,CAAG;AAAA,MAE3E,UAAU,CAAC,UACVrC,+BAACkF,KAAAA,MAAA,EAAM,GAAG,OAAO,UAAS,SAAQ,IAAI,EAAE,OAAO,yBAAuB,CAAG;AAAA,IAAA;AAAA,IAI3E,GAAG;AAAA,EAAA,CACH;AAEDxD,QAAAA,UAAU,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;AAEvBA,QAAAA,UAAU,MAAM;AACf,QAAI,aAAa;AAChB,UAAI,6BAAM,iBAAiB;AAC1B,cAAM,oBAA2B,CAAA;AACjC,cAAM,YAAY,MAAM,SAAA,EAAW;AACnC,cAAM,eAAe,CAACyD,OAAM,YAAY,OAAO;AAC9CA,gBAAK,QAAQ,CAACzC,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;AAaxBhB,QAAAA,UAAU,MAAM;AACf,QAAI,YAAY;AACf,qCAAO;AAAA,IACR;AAAA,EACD,GAAG,CAAC,YAAY,KAAK,CAAC;AACtB,SACCvB,2BAAAA,KAAC,cAAA,EAAa,WAAU,iCAAgC,kBACvD,UAAA;AAAA,IAAAH,+BAACoF,mBAAAA,sBAAmB,OAAc;AAAA,IAElCpF,2BAAAA;AAAAA,MAACqF,KAAAA;AAAAA,MAAA;AAAA,QACA;AAAA,QACA,MAAM,QAAQ,QAAQ;AAAA,QACtB,SAAS;AAAA,QACT,WAAU;AAAA,QACT,UAAA,4CACC,OAAA,EACA,UAAA;AAAA,UAAAlF,2BAAAA;AAAAA,YAACF,SAAAA;AAAAA,YAAA;AAAA,cACA,SAAS;AAAA,cACT,WAAU;AAAA,cACV,UAAA;AAAA,gBAAAD,+BAACsF,SAAAA,cAAA,EAAa,WAAU,YACvB,UAAAtF,+BAAC,mBAAgB,GAClB;AAAA,+CACCuF,SAAAA,cAAA,EAAa,WAAU,SACtB,UAAA,EAAE,wBAAwB,EAAA,CAC5B;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAEDvF,2BAAAA,IAACsC,SAAAA,SAAA,EAAQ,UAAQ,MAAC,IAAI,EAAE,IAAI,sBAAsB,IAAI,qBAAA,EAAqB,CAAG;AAAA,UAC9EtC,2BAAAA,IAAC,OAAA,EAAI,WAAU,sBACd,UAAAA,2BAAAA;AAAAA,YAACwF,UAAAA;AAAAA,YAAA;AAAA,cACA,aAAa;AAAA,cACb,cAAc,CAAC,MAAM,kBAAkB,CAAC;AAAA,YAAA;AAAA,UAAA,GAE1C;AAAA,UACAxF,2BAAAA,IAAC,OAAA,EAAI,WAAU,uBACd,UAAAA,2BAAAA,IAACE,uBAAA,EAAW,SAAQ,SAAQ,OAAM,kBAChC,UAAA,EAAE,4BAA4B,GAChC,GACD;AAAA,UACC,gBAAgB,IAAI,CAAC,WACrBF,2BAAAA;AAAAA,YAACC,SAAAA;AAAAA,YAAA;AAAA,cAEA,SAAS,MAAM,gBAAgB,MAAM;AAAA,cACrC,yCAACC,uBAAA,EAAW,OAAM,wBAAuB,MAAK,MAC5C,iBAAO,OAAA,CACT;AAAA,YAAA;AAAA,YAJK,OAAO;AAAA,UAAA,CAMb;AAAA,UACDF,2BAAAA,IAACsC,SAAAA,SAAA,EAAQ,UAAQ,MAAC,IAAI,EAAE,IAAI,sBAAsB,IAAI,qBAAA,EAAqB,CAAG;AAAA,UAE7E,wBAAwBnC,2BAAAA,KAACF,SAAAA,UAAA,EAAS,SAAS,uBAAuB,WAAU,iBAC3E,UAAA;AAAA,YAAAD,2BAAAA,IAACsF,SAAAA,cAAA,EAAa,WAAU,YACvB,UAAAtF,2BAAAA,IAAC,OAAA,EAAI,KAAKyE,OAAAA,QAAO,OAAO,SAAS,KAAI,WAAA,CAAW,GACjD;AAAA,2CACCc,SAAAA,cAAA,EAAa,WAAU,SACtB,UAAA,EAAE,6BAA6B,EAAA,CACjC;AAAA,UAAA,EAAA,CACD;AAAA,QAAA,EAAA,CAEF,IAEApF,2BAAAA,KAAAyB,WAAAA,UAAA,EACE,UAAA;AAAA,UAAA,eAAe,IAAI,CAAC,WACpBzB,2BAAAA;AAAAA,YAACF,SAAAA;AAAAA,YAAA;AAAA,cAEA,SAAS,MAAM,oBAAoB,MAAM;AAAA,cACzC,WAAU;AAAA,cACV,UAAA;AAAA,gBAAAD,2BAAAA,IAACsF,SAAAA,cAAA,EAAa,WAAU,YACvB,UAAAtF,2BAAAA,IAAC,OAAA,EAAI,KAAKyE,OAAAA,QAAO,OAAO,UAAU,KAAI,WAAA,CAAW,GAClD;AAAA,gBACAzE,2BAAAA,IAACuF,SAAAA,cAAA,EAAa,WAAU,SAAS,iBAAO,QAAO;AAAA,gBAC/CvF,2BAAAA,IAACsF,SAAAA,cAAA,EAAa,WAAU,YACvB,UAAAtF,2BAAAA,IAAC,OAAA,EAAI,KAAKyE,OAAAA,QAAO,OAAO,SAAS,KAAI,WAAA,CAAW,EAAA,CACjD;AAAA,cAAA;AAAA,YAAA;AAAA,YATK,OAAO;AAAA,UAAA,CAWb;AAAA,UACDzE,2BAAAA,IAACsC,SAAAA,SAAA,EAAQ,UAAQ,MAAC,IAAI,EAAE,IAAI,sBAAsB,IAAI,qBAAA,EAAqB,CAAG;AAAA,UAC9EnC,2BAAAA,KAACF,SAAAA,UAAA,EAAS,SAAS,sBAAsB,WAAU,iBAClD,UAAA;AAAA,YAAAD,2BAAAA,IAACsF,SAAAA,cAAA,EAAa,WAAU,YACvB,UAAAtF,2BAAAA,IAAC,OAAA,EAAI,KAAKyE,OAAAA,QAAO,OAAO,SAAS,KAAI,WAAA,CAAW,GACjD;AAAA,2CACCc,SAAAA,cAAA,EAAa,WAAU,SACtB,UAAA,EAAE,wBAAwB,GAC5B;AAAA,YACAvF,2BAAAA;AAAAA,cAACE,WAAAA;AAAAA,cAAA;AAAA,gBACA,SAAQ;AAAA,gBACR,OAAM;AAAA,gBACN,WAAU;AAAA,gBACV,yCAAC,kBAAA,EAAiB,IAAI,EAAE,UAAU,uBAAqB,CAAG;AAAA,cAAA;AAAA,YAAA;AAAA,UAC3D,EAAA,CACD;AAAA,QAAA,EAAA,CACD;AAAA,MAAA;AAAA,IAAA;AAAA,IAIFC,2BAAAA;AAAAA,MAACkF,KAAAA;AAAAA,MAAA;AAAA,QACA,UAAU;AAAA,QACV,MAAM,QAAQ,WAAW;AAAA,QACzB,SAAS;AAAA,QACR,UAAA;AAAA,UAAA,+CAAe,IAAI,CAAC,WAAgB;;AACpC,gBACE,OAAO,UAAU,YAChB,2BAAK,kBAAiB,SAAQ,2BAAK,kBAAiB,MACrD,OAAO,UAAU,gBAChB,2BAAK,kBAAiB,SACtB,2BAAK,kBAAiB,OACtB,gCAAK,UAAL,mBAAY,kBAAiB,UAC7B,gCAAK,UAAL,mBAAY,kBAAiB,GAC9B;AAGF,mBACClF,2BAAAA;AAAAA,cAACF,SAAAA;AAAAA,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,kBACTD,2BAAAA,IAACE,WAAAA,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,KAChCC,2BAAAA,KAAAyB,WAAAA,UAAA,EACC,UAAA;AAAA,YAAA5B,2BAAAA,IAACsC,SAAAA,SAAA,EAAQ,UAAQ,MAAC,IAAI,EAAE,IAAI,sBAAsB,IAAI,qBAAA,EAAqB,CAAG;AAAA,2CAC7E,OAAA,EAAI,WAAU,qCACb,UAAA,+DAAuB,IAAI,CAAC,WAC5BtC,2BAAAA;AAAAA,cAACC,SAAAA;AAAAA,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,UAAAD,2BAAAA,IAACE,uBAAA,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,IAGFF,2BAAAA;AAAAA,MAACyF,aAAAA;AAAAA,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;ACz1CD,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,IAAM5E,4BAAA;AACd,QAAM,WAAW6E,WAAAA,YAAA;AACjB,QAAM,EAAE,KAAA,IAAS3E,gBAAA;AACjB,QAAM,UAAQ4E,qBAAAA,uBAAAA,mBAAoB,gBAAe;AAGjD,QAAM,cAAczE,MAAAA,OAAsB,oBAAoB;AAG9D,QAAM,CAAC,aAAa,cAAc,IAAIC,MAAAA,SAAgB,CAAA,CAAE;AACxD,QAAM,CAAC,aAAa,cAAc,IAAIA,MAAAA,SAAgB,CAAA,CAAE;AACxD,QAAM,CAAC,YAAY,aAAa,IAAIA,MAAAA,SAAS,KAAK;AAClD,QAAM,CAAC,qBAAqB,sBAAsB,IAAIA,MAAAA,SAAgB,CAAA,CAAE;AACxE,QAAM,oBAAoBD,MAAAA,OAA4B,EAAE;AAGxD,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,IACA;AAAA,EAAA,IAEE0E,sBAAQ;AAAA,IACZ,eAAe;AAAA,MACb,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,cAAc;AAAA,MAAA;AAAA,IAChB;AAAA,IAEA,MAAM;AAAA,IACN,UAAUC,UAAAA,0BAAA;AAAA,EAA0B,CACrC;AAED,QAAM,gBAAgB;AAAA,IACpB,CAACC,SAAAA,eAAe,kBAAkB,GAAG;AAAA,IACrC,CAACA,SAAAA,eAAe,YAAY,GAAG;AAAA,EAAA;AAGjCC,yCAAqB;AAAA,IACnB;AAAA,IACA,cAAcD,SAAAA,eAAe;AAAA,IAC7B,gBAAgBE,SAAAA;AAAAA,IAChB,aAAa,EAAE,SAAS,UAAU,OAAO,cAAA;AAAA,IACzC,GAAI,EAAE,iBAAiB,KAAA;AAAA,EAAK,CAC7B;AAGD,QAAM,eAAexF,cAAAA,SAAS;AAAA,IAC5B;AAAA,IACA,MAAM;AAAA,EAAA,CACP;AAED,QAAM,oBAAoBA,cAAAA,SAAS;AAAA,IACjC;AAAA,IACA,MAAM,GAAGwF,SAAAA,uBAAuB,IAAIF,SAAAA,eAAe,kBAAkB;AAAA,EAAA,CACtE;AAED,QAAM,gBAAgBtF,cAAAA,SAAS;AAAA,IAC7B;AAAA,IACA,MAAM,GAAGwF,SAAAA,uBAAuB,IAAIF,SAAAA,eAAe,UAAU;AAAA,EAAA,CAC9D;AAED,QAAM,eAAetF,cAAAA,SAAS;AAAA,IAC5B;AAAA,IACA,MAAM,GAAGwF,SAAAA,uBAAuB,IAAIF,SAAAA,eAAe,SAAS;AAAA,EAAA,CAC7D;AAED,QAAM,kBAAkBnF,MAAAA,YAAY,YAAY;AAC9C,UAAM,SAAS,UAAA;AACf,UAAM,aAAa,iCAASqF;AAC5B,UAAM,gBAAgB,CAAC,OAAO,aAAa,cAAc;AACzD,UAAM,YAAY,CAAC,OAAO,aAAa,cAAc,cAAc;AAEnE,UAAM,iBAAiB,cAAc;AAAA,MACnC,CAAC,UAAU,kBAAkB,QAAQ,KAAK,OAAM,yCAAa;AAAA,IAAK;AAEpE,QAAI,eAAgB,QAAO;AAE3B,UAAM,UAAU,CAAA;AAChB,cAAU,QAAQ,CAAC,UAAW,QAAQ,KAAK,IAAI,yCAAa,MAAO;AAEnE,UAAM,WAAW,MAAMC,IAAAA,kBAAkB,OAAO;AAChD,QAAI,WAAW;AAEf,eAAW,CAAC,OAAO,MAAM,KAAK,OAAO,QAAQ,QAAQ,GAAG;AACtD,UAAI,QAAQ;AACV,iBAAS,GAAGD,SAAAA,uBAAuB,IAAI,KAAK,IAAI;AAAA,UAC9C,MAAM;AAAA,UACN,SAAS,GAAG,MAAM,QAAQ,MAAM,GAAG,EAAE,aAAa;AAAA,QAAA,CACnD;AACD,mBAAW;AAAA,MACb;AAAA,IACF;AAEA,sBAAkB,UAAU,EAAE,GAAG,WAAA;AAEjC,WAAO;AAAA,EACT,GAAG,CAAC,WAAW,QAAQ,CAAC;AAExB,QAAM,kBAAkBrF,MAAAA;AAAAA,IACtB,OAAO,cAAsB;AAC3B,YAAM,mBAAmB,CAAC,OAAO,aAAa,cAAc;AAC5D,UAAI,CAAC,iBAAiB,SAAS,SAAS,EAAG;AAC3C,YAAM,gBAAA;AAAA,IACR;AAAA,IACA,CAAC,eAAe;AAAA,EAAA;AAIlB,QAAM,eAAeA,MAAAA;AAAAA,IACnB,CAAC,SAAc,cAAmB;AAChC,YAAM,uCAAuB,IAAA;AAE7B,aAAOuF,oCAAsB;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,qBACElG,+BAACI,SAAAA,OAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,KAC/B,UAAAJ,2BAAAA;AAAAA,gBAACK,SAAAA;AAAAA,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,oBAAM8F,WAAQvF,MAAA,2BAAK,aAAL,gBAAAA,IAAe,YAAS,gCAAK,aAAL,mBAAe;AACrD,kBAAI,CAACuF,OAAO,QAAO;AACnB,oBAAM,iBAAiB,WAAWA,MAAK;AACvC,kBAAI,CAAC,iBAAiB,IAAI,cAAc,GAAG;AACzC,sBAAM,SAAS,2BAA2B,IAAIA,MAAK,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,YAAYC,SAAAA,iBAAiBC,SAAAA;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,IAAGzF,MAAA,YAAY,YAAZ,gBAAAA,IAAqB;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,CAAC0F,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,CAACC,IAAG,MAAM,MAAM,QAAQ;AACzD,aAAS,WAAW;AACpB,WAAO,QAAQ,QAAA;AAAA,EACjB;AAEA,QAAM,4BAA4B,OAAO,GAAQC,IAAQ,GAAQ,KAAU,iBAAsB;;AAC/F,UAAM,aAAY5F,MAAA,uBAAG,WAAH,gBAAAA,IAAW;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,MACA;AAAA,MACA;AAAA,IAAA;AAGF,QAAI,EAAE,cAAc;AAClB,YAAM,cAAc,cAAc,IAAI,CAAA,UAAS;;AAC7C,YAAI,UAAU,WAAW;AACvB,mBAAOgC,OAAAhC,MAAA,YAAY,YAAZ,gBAAAA,IAAqB,YAArB,gBAAAgC,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,GAAG,GAAG,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG;AAAA,EAAO,GAAG;AAAA,MACxE,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,WAAW,MAAM,gBAAA;AACvB,QAAI,CAAC,SAAU;AAEf,UAAM,SAAS,UAAA;AACf,UAAM,aAAa,iCAASoD;AAC5B,QAAI,aAAuB,CAAA;AAE3B,QAAI,yCAAY,WAAW;AACzB,oBAAapF,MAAA,yCAAY,cAAZ,gBAAAA,IACT,MAAM,WACP,IAAI,CAAC,aAAA;;AAAkB,gBAAAA,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,GAAG6F,SAAAA,sBAAsB,UAAU;AAAA,QACnC,WAAW;AAAA,QACX,cAAc;AAAA,QACd,QAAQ;AAAA,QACR;AAAA,QACA,aAAY,yCAAaX,wBAAe,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,SAASY,cAAAA,cAAc,OAAO,CAAC;AAEjD,YAAI,gCAAK,SAAL,mBAAW,mBAAkB,aAAa;AAC5C9B,kBAAAA,gBAAgB,GAAG,IAAI,IAAI,EAAE,0BAA0B,CAAC,EAAE;AAC1D,mBAAA;AACA,qBAAA;AAAA,MACF,aAAW,gCAAK,SAAL,mBAAW,mBAAkB,YAAY;AAClD,cAAM,eAAe+B,IAAAA,iBAAgB,gCAAK,UAAL,mBAAY,OAAO;AACxD/B,kBAAAA,gBAAgB,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;AAGAlD,QAAAA,UAAU,MAAM;AACd,UAAM,cAAc,YAAY,IAAI,CAAA,MAAK,EAAE,KAAK,GAAGkF,SAAAA,eAAe,CAAC;AACnE,aAAS,GAAGZ,gCAAuB,IAAIF,SAAAA,eAAe,OAAO,IAAI,WAAW;AAAA,EAC9E,GAAG,CAAC,aAAa,QAAQ,CAAC;AAE1BpE,QAAAA,UAAU,MAAM;AACd,UAAM,cAAc,YAAY,IAAI,CAAA,MAAK,EAAE,KAAK,GAAGmF,SAAAA,eAAe,CAAC;AACnE,aAAS,GAAGb,gCAAuB,IAAIF,SAAAA,eAAe,QAAQ,IAAI,WAAW;AAAA,EAC/E,GAAG,CAAC,aAAa,QAAQ,CAAC;AAE1BpE,QAAAA,UAAU,MAAM;AACd,kBAAc,SAAS;AAAA,EACzB,GAAG,CAAC,SAAS,CAAC;AAGdA,QAAAA,UAAU,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/BA,QAAAA,UAAU,MAAM;;AACd,QAAI,WAAU,6BAAM,eAAc;AACjC,YAAM,aACL,6BAAM,sBACNd,MAAA,6BAAM,iBAAN,gBAAAA,IAAoB,OACnB,MAAM,QAAQ,6BAAM,YAAY,OAAK,kCAAM,aAAa,OAAnB,mBAAuB,OAC7D;AAGD,UAAI,WAAW;AACd,iBAAS,wBAAwB,SAAS;AACtC,iBAAS,GAAGoF,gCAAuB,IAAIF,SAAAA,eAAe,OAAO,IAAI,SAAS;AAAA,MAC/E;AAAA,IACD;AAAA,EACA,GAAG,CAAC,QAAQ,6BAAM,cAAc,QAAQ,CAAC;AAEzCpE,QAAAA,UAAU,MAAM;AACd,QAAI,WAAU,6BAAM,qBAAoB;AACtC,YAAM,aAAa,OAAO,OAAO,KAAK,kBAAkB;AACxD,UAAI,WAAW,SAAS,GAAG;AACzB,iBAAS,GAAGsE,gCAAuB,IAAIF,SAAAA,eAAe,QAAQ,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;AAAA,MACtF;AAAA,IACF;AAAA,EACF,GAAG,CAAC,QAAQ,6BAAM,oBAAqB,QAAQ,CAAC;AAGhDpE,QAAAA,UAAU,MAAM;;AACd,UAAM,kBAAkB,YAAY,CAAC;AACrC,UAAM,oBAAoB,gBACtB,MAAId,MAAA,2BAA2B,IAAI,aAAa,EAAE,MAA9C,gBAAAA,IAAiD,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;AAGnDc,QAAAA,UAAU,MAAM;;AACd,UAAM,WAAW,YAAY,CAAC;AAC9B,UAAM,qBAAoB,qCAAU,kBAAgB,qCAAU,cAAY,qCAAU;AAEpF,QAAI,qBAAqB,eAAe;AACtC,YAAM,oBAAoB,gBACtB,MAAId,MAAA,2BAA2B,IAAI,aAAa,EAAE,MAA9C,gBAAAA,IAAiD,uBAAsB,EAAE,KAC7E;AAGJ,UAAI,CAAC,UAAU;AACb,uBAAe,CAAC;AAAA,UACd,GAAGwF,SAAAA;AAAAA,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,sBAAsBpF,MAAAA,QAAQ,MAClChB,2BAAAA;AAAAA,IAAC8G,UAAAA;AAAAA,IAAA;AAAA,MACC,OACE9G,2BAAAA,IAACE,WAAAA,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,UAAAC,2BAAAA,KAAC4G,SAAAA,MAAA,EAAK,WAAS,MAAC,SAAS,GAEvB,UAAA;AAAA,QAAA/G,+BAAC+G,SAAAA,QAAK,MAAI,MAAC,IAAI,IAAI,IAAI,IACrB,UAAA/G,2BAAAA;AAAAA,UAACgH,YAAAA;AAAAA,UAAA;AAAA,YACC,OAAM;AAAA,YACN,MAAMlB,SAAAA,eAAe;AAAA,YACrB,gBAAgBE,SAAAA;AAAAA,YAChB,aAAa;AAAA,YACb,SAASiB,SAAAA;AAAAA,YACT,SAAQ;AAAA,YACR,OAAO,EAAE,EAAE,0BAA0B,CAAC;AAAA,YACtC,eAAc;AAAA,YACd,UAAU;AAAA,UAAA;AAAA,QAAA,GACd;AAAA,QAEC,iBAAiB,gBAChB9G,2BAAAA,KAAAyB,WAAAA,UAAA,EACE,UAAA;AAAA,UAAA5B,+BAAC+G,SAAAA,QAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACrB,UAAA/G,2BAAAA;AAAAA,YAACkH,KAAAA;AAAAA,YAAA;AAAA,cACC,OAAO,EAAE,qCAAqC;AAAA,cAC9C,MAAMpB,SAAAA,eAAe;AAAA,cACrB,aAAa,EAAE,2CAA2C;AAAA,cAC1D,gBAAgBE,SAAAA;AAAAA,cAChB,aAAa;AAAA,cACb,UAAQ;AAAA,YAAA;AAAA,UAAA,GAEZ;AAAA,yCACCe,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACrB,UAAA/G,2BAAAA;AAAAA,YAACkH,KAAAA;AAAAA,YAAA;AAAA,cACC,OAAO,EAAE,oCAAoC;AAAA,cAC7C,MAAMpB,SAAAA,eAAe;AAAA,cACrB,aAAa,EAAE,0CAA0C;AAAA,cACzD,gBAAgBE,SAAAA;AAAAA,cAChB,aAAa;AAAA,cACb,UAAQ;AAAA,YAAA;AAAA,UAAA,EACV,CACF;AAAA,QAAA,GACF;AAAA,QAID,iBAAiB,aAChB7F,2BAAAA,KAAAyB,WAAAA,UAAA,EACE,UAAA;AAAA,UAAA5B,+BAAC+G,SAAAA,QAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACrB,UAAA/G,2BAAAA;AAAAA,YAACkH,KAAAA;AAAAA,YAAA;AAAA,cACC,OAAO,EAAE,wCAAwC;AAAA,cACjD,MAAMpB,SAAAA,eAAe;AAAA,cACrB,aAAa,EAAE,8CAA8C;AAAA,cAC7D,gBAAgBE,SAAAA;AAAAA,cAChB,aAAa;AAAA,cACb,UAAQ;AAAA,cACR,QAAQ,MAAM,gBAAgBF,SAAAA,eAAe,YAAY;AAAA,YAAA;AAAA,UAAA,GAE7D;AAAA,yCAGCiB,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACrB,UAAA/G,2BAAAA;AAAAA,YAACkH,KAAAA;AAAAA,YAAA;AAAA,cACC,OAAO,EAAE,sCAAsC;AAAA,cAC/C,MAAMpB,SAAAA,eAAe;AAAA,cACrB,aAAa,EAAE,4CAA4C;AAAA,cAC3D,gBAAgBE,SAAAA;AAAAA,cAChB,aAAa;AAAA,cACb,MAAK;AAAA,cACL,KAAK;AAAA,cACL,aAAW;AAAA,YAAA;AAAA,UAAA,GAEf;AAAA,yCAECe,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACrB,UAAA/G,2BAAAA;AAAAA,YAACkH,KAAAA;AAAAA,YAAA;AAAA,cACC,OAAO,EAAE,+BAA+B;AAAA,cACxC,MAAMpB,SAAAA,eAAe;AAAA,cACrB,aAAa,EAAE,qCAAqC;AAAA,cACpD,gBAAgBE,SAAAA;AAAAA,cAChB,aAAa;AAAA,cACb,MAAK;AAAA,cACL,KAAK;AAAA,cACL,aAAW;AAAA,cACX,QAAQ,MAAM,gBAAgBF,SAAAA,eAAe,GAAG;AAAA,YAAA;AAAA,UAAA,EAClD,CACF;AAAA,QAAA,GACF;AAAA,uCAGDiB,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACrB,UAAA/G,2BAAAA;AAAAA,UAACmH,MAAAA;AAAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,OAAO,EAAE,mCAAmC;AAAA,YAC5C,MAAMrB,SAAAA,eAAe;AAAA,YACrB,aAAa,EAAE,yCAAyC;AAAA,YACxD,gBAAgBE,SAAAA;AAAAA,YAChB,aAAa;AAAA,YACb,UAAQ;AAAA,UAAA;AAAA,QAAA,GAEZ;AAAA,uCAECe,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACrB,UAAA/G,2BAAAA;AAAAA,UAACkH,KAAAA;AAAAA,UAAA;AAAA,YACC,OAAO,EAAE,iCAAiC;AAAA,YAC1C,MAAMpB,SAAAA,eAAe;AAAA,YACrB,aAAa,EAAE,uCAAuC;AAAA,YACtD,gBAAgBE,SAAAA;AAAAA,YAChB,aAAa;AAAA,YACb,UAAQ;AAAA,YACR,QAAQ,MAAM,gBAAgBF,SAAAA,eAAe,SAAS;AAAA,UAAA;AAAA,QAAA,GAE1D;AAAA,uCAGCiB,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACrB,UAAA/G,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO,EAAE,mCAAmC;AAAA,YAC5C,SAAQ;AAAA,YACR,eAAc;AAAA,YACd,MAAM8F,SAAAA,eAAe;AAAA,YACrB,aAAa,EAAE,yCAAyC;AAAA,YACxD,gBAAgBE,SAAAA;AAAAA,YAChB,aAAa;AAAA,YACb,UAAQ;AAAA,UAAA;AAAA,QAAA,GAEZ;AAAA,uCAECe,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACrB,UAAA/G,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO,EAAE,oCAAoC;AAAA,YAC7C,SAAQ;AAAA,YACR,eAAc;AAAA,YACd,MAAM8F,SAAAA,eAAe;AAAA,YACrB,aAAa,EAAE,0CAA0C;AAAA,YACzD,gBAAgBE,SAAAA;AAAAA,YAChB,aAAa;AAAA,YACb,UAAQ;AAAA,YACR,gBAAc;AAAA,UAAA;AAAA,QAAA,GAElB;AAAA,uCAECe,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACjB,UAAA/G,2BAAAA;AAAAA,UAACkH,KAAAA;AAAAA,UAAA;AAAA,YACC,OAAO,EAAE,8CAA8C;AAAA,YACvD,MAAMpB,SAAAA,eAAe;AAAA,YACrB,aAAa,EAAE,oDAAoD;AAAA,YACnE,gBAAgBE,SAAAA;AAAAA,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,oBAAoBhF,MAAAA,QAAQ,MAChChB,2BAAAA;AAAAA,IAAC8G,UAAAA;AAAAA,IAAA;AAAA,MACC,OACE9G,2BAAAA,IAACE,WAAAA,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,UAAAC,2BAAAA,KAAC4G,SAAAA,MAAA,EAAK,WAAS,MAAC,SAAS,GACvB,UAAA;AAAA,QAAA/G,+BAAC+G,SAAAA,QAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACrB,UAAA/G,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO,EAAE,8CAA8C;AAAA,YACvD,SAAQ;AAAA,YACR,eAAc;AAAA,YACd,MAAM8F,SAAAA,eAAe;AAAA,YACrB,aAAa,EAAE,oDAAoD;AAAA,YACnE,gBAAgBE,SAAAA;AAAAA,YAChB,aAAa;AAAA,YACb,UAAQ;AAAA,YACR,eAAe,EAAE,oBAAoB,aAAA;AAAA,YACrC,SAAS,CAAA;AAAA,UAAC;AAAA,QAAA,GAEd;AAAA,uCACCe,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACrB,UAAA/G,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO,EAAE,wCAAwC;AAAA,YACjD,SAAQ;AAAA,YACR,eAAc;AAAA,YACd,MAAM8F,SAAAA,eAAe;AAAA,YACrB,aAAa,EAAE,8CAA8C;AAAA,YAC7D,gBAAgBE,SAAAA;AAAAA,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,iBAAiBhF,MAAAA,QAAQ;;AAC7BhB,sCAAAA;AAAAA,MAAC8G,UAAAA;AAAAA,MAAA;AAAA,QACC,uCACG5G,uBAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBACzC,UAAA;AAAA,UAAA,EAAE,+BAA+B;AAAA,UAClCF,2BAAAA,IAAC,QAAA,EAAK,WAAU,kBAAiB,UAAA,KAAC;AAAA,YACjCY,MAAA,iCAASoF,SAAAA,6BAAT,gBAAApF,IAAoCkF,SAAAA,eAAe,aAClD9F,2BAAAA,IAAC,QAAA,EAAK,WAAU,SACb,uDAASgG,SAAAA,gDAA2BF,SAAAA,eAAe,gCAAU,QAAA,CAChE;AAAA,QAAA,GAEJ;AAAA,QAEF,gBAAgB;AAAA,UACd,iBAAiB;AAAA,UACjB,WAAW;AAAA,QAAA;AAAA,QAGb,UAAA9F,2BAAAA,IAAC+G,SAAAA,QAAK,SAAS,GACb,yCAACA,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IACb,UAAA/G,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAM,CAAC,GAAG,WAAW;AAAA,YACrB,SAAS,aAAaoH,wBAAe,KAAK,CAAC;AAAA,YAC3C,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,iBAAiBpG,MAAAA,QAAQ;;AAC7BhB,sCAAAA;AAAAA,MAAC8G,UAAAA;AAAAA,MAAA;AAAA,QACC,uCACG5G,uBAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBACzC,UAAA;AAAA,UAAA,EAAE,+BAA+B;AAAA,UAClCF,2BAAAA,IAAC,QAAA,EAAK,WAAU,kBAAiB,UAAA,KAAC;AAAA,YACjCY,MAAA,iCAASoF,SAAAA,6BAAT,gBAAApF,IAAoCkF,SAAAA,eAAe,cAClD9F,2BAAAA,IAAC,QAAA,EAAK,WAAU,SACb,uDAASgG,SAAAA,gDAA2BF,SAAAA,eAAe,iCAAW,QAAA,CACjE;AAAA,QAAA,GAEJ;AAAA,QAEF,gBAAgB;AAAA,UACd,iBAAiB;AAAA,UACjB,WAAW;AAAA,QAAA;AAAA,QAGb,UAAA9F,2BAAAA,IAAC+G,SAAAA,QAAK,SAAS,GACb,yCAACA,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IAEb,UAAA/G,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAM,CAAC,GAAG,WAAW;AAAA,YACrB,SAAS,aAAaqH,uBAAc;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,GAAGrB,SAAAA,uBAAuB,IAAIF,SAAAA,eAAe,kBAAkB;AAAA,kBAC/D,KAAK,OAAO,QAAQ;AAAA,gBAAA;AAEtB;AAAA,kBACE,GAAGE,SAAAA,uBAAuB,IAAIF,SAAAA,eAAe,UAAU;AAAA,kBACvD,KAAK,OAAO,cAAc;AAAA,gBAAA;AAE5B;AAAA,kBACE,GAAGE,SAAAA,uBAAuB,IAAIF,SAAAA,eAAe,SAAS;AAAA,kBACtD,KAAK,OAAO,SAAS;AAAA,gBAAA;AAAA,cAEzB;AAAA,YACF;AAAA,YACA,aAAa,CAAC,QAAQ;AACpB,kBAAI,IAAI,UAAU,GAAG;AACnBlB,0BAAAA,gBAAgB,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,SACEzE,2BAAAA;AAAAA,IAACmH,MAAAA;AAAAA,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,6CAAeC,YAAAA,aAAA,EAAY;AAAA,QAC5BpH,2BAAAA,KAAC,QAAA,EAAK,UAAU,aAAa,QAAQ,GAAG,WAAU,oBAAmB,OAAO,EAAE,UAAU,YAAY,UAAU,UAC5G,UAAA;AAAA,UAAAA,2BAAAA;AAAAA,YAACqH,SAAAA;AAAAA,YAAA;AAAA,cAAY,WAAU;AAAA,cAErB,UAAA;AAAA,gBAAAxH,2BAAAA,IAACE,WAAAA,YAAA,EAAW,MAAK,MAAK,OAAM,WAAU,QAAO,UAC1C,UAAA,OAAO,IAAI,GAAA,CACd;AAAA,gBACAF,2BAAAA,IAACoC,SAAAA,cAAW,SAAS,YACnB,yCAACC,qBAAA,EAAM,UAAS,SAAQ,EAAA,CAC1B;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,0CAGDoF,SAAAA,eAAA,EACE,UAAA;AAAA,YAAA;AAAA,YACDzH,2BAAAA,IAACsC,SAAAA,SAAA,EAAQ,WAAU,uBAAA,CAAuB;AAAA,YACzC;AAAA,YACDtC,2BAAAA,IAACsC,SAAAA,SAAA,EAAQ,WAAU,uBAAA,CAAuB;AAAA,YACzC;AAAA,YACDtC,2BAAAA,IAACsC,SAAAA,SAAA,EAAQ,WAAU,uBAAA,CAAuB;AAAA,YACzC;AAAA,UAAA,GACH;AAAA,UAEAtC,2BAAAA,IAAC0H,SAAAA,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,UAAAvH,2BAAAA,KAACC,cAAA,EAAI,SAAQ,QAAO,KAAK,KACvB,UAAA;AAAA,YAAAJ,2BAAAA;AAAAA,cAAC0E,OAAAA;AAAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,SAAS;AAAA,gBAER,YAAE,eAAe;AAAA,cAAA;AAAA,YAAA;AAAA,YAEpB1E,2BAAAA;AAAAA,cAAC0E,OAAAA;AAAAA,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;AC97BA,MAAM,uBAAuBiD,eAAI,OAAA,EAAS,MAAM;AAAA,EAC5C,MAAMA,eAAI,OAAA,EAAS,MAAM;AAAA,IACrB,MAAMA,eAAI,SAAS,SAAS,uBAAuB;AAAA,IACnD,eAAeA,eAAI,OAAA,EAAS,SAAA;AAAA,IAC5B,cAAcA,eAAI,OAAA,EAAS,SAAA,EAAW,SAAS,uBAAuB;AAAA,IACtE,YAAYA,eAAI,MAAA,EAAQ,SAAA;AAAA,IACxB,aAAaA,eAAI,OAAA;AAAA,EAAO,CAC3B;AACL,CAAC;AAED,MAAMC,qBAAmB,CAAC,mBAAyD;AAAA,EAC/E,MAAM;AAAA,IACF,MAAM;AAAA,IACN,gBAAe,+CAAe,kBAAiB;AAAA,IAC/C,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,aAAa;AAAA,EAAA;AAErB;AAEO,MAAM,eAA6C,CAAC;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAM;AACF,QAAM,EAAE,EAAA,IAAM/G,4BAAA;AAEd,QAAM,EAAE,SAAS,cAAc,OAAO,MAAA,IAAU+E,cAAAA,QAAqB;AAAA,IACjE,MAAM;AAAA,IACN,UAAUiC,IAAAA,YAAY,oBAAoB;AAAA,IAC1C,eAAeD,mBAAiB,aAAa;AAAA,EAAA,CAChD;AAED,QAAM,uBAAuB,MAAM,oBAAoB;AACvD,QAAM,qBAAqB,MAAM,mBAAmB;AAEpDlG,QAAAA,UAAU,MAAM;AACZ,QAAI,QAAQ;AACR,YAAMkG,mBAAiB,aAAa,CAAC;AAAA,IACzC;AAAA,EACJ,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,mBAAmB,MAAM;AAC3B,UAAMA,mBAAiB,aAAa,CAAC;AACrC,cAAA;AAAA,EACJ;AAEA,QAAM,WAAW,OAAO,WAAwB;AAC5C,UAAM,OAAO,MAAM;AACnB,qBAAA;AAAA,EACJ;AAEA,QAAM,aAAa5G,MAAAA,QAAQ,OAAO;AAAA,IAC9B,qBAAqB,wBAAwB;AAAA,EAAA,IAC7C,CAAC,oBAAoB,CAAC;AAE1B,QAAM,gBAAgBA,MAAAA,QAAQ,OAAO;AAAA,IACjC,qBAAqB,wBAAwB;AAAA,IAC7C,GAAI,qBAAqB,EAAE,UAAU,uBAAuB,CAAA;AAAA,EAAC,IAC7D,CAAC,sBAAsB,kBAAkB,CAAC;AAE9C,SACIhB,2BAAAA;AAAAA,IAACsH,MAAAA;AAAAA,IAAA;AAAA,MACG,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAS;AAAA,MACT,WAAS;AAAA,MACR,GAAG;AAAA,MAEJ,UAAAnH,2BAAAA,KAAC,QAAA,EAAK,UAAU,aAAa,QAAQ,GAChC,UAAA;AAAA,QAAA,4CAAcoH,YAAAA,aAAA,EAAY;AAAA,QAC3BpH,2BAAAA,KAACqH,SAAAA,aAAA,EAAY,WAAU,8BACnB,UAAA;AAAA,UAAAxH,2BAAAA,IAACE,WAAAA,YAAA,EAAW,MAAK,MAAK,OAAM,WAAU,QAAO,UACxC,UAAA,EAAE,+CAA+C,UAAU,EAAA,CAChE;AAAA,UACAF,2BAAAA,IAACoC,SAAAA,cAAW,SAAS,kBACjB,yCAAC,OAAA,EAAM,UAAS,SAAQ,EAAA,CAC5B;AAAA,QAAA,GACJ;AAAA,QACApC,2BAAAA,IAACyH,SAAAA,eAAA,EAAc,WAAU,iCACrB,UAAAtH,2BAAAA,KAAC4G,eAAA,EAAK,WAAS,MAAC,QAAQ,KAAK,eAAe,GAAG,IAAI,GAE/C,UAAA;AAAA,UAAA/G,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IACX,UAAA/G,2BAAAA;AAAAA,YAACkH,KAAAA;AAAAA,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,UAGAlH,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,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,UAGAA,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,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,UAGAA,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IACX,UAAA/G,2BAAAA;AAAAA,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,UAGAA,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IACX,UAAA/G,2BAAAA;AAAAA,YAACkH,KAAAA;AAAAA,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/G,2BAAAA,KAACuH,SAAAA,eAAA,EAAc,WAAU,+BACrB,UAAA;AAAA,UAAA1H,2BAAAA,IAAC,QAAA,EAAK;AAAA,UACNG,2BAAAA,KAACC,SAAAA,KAAA,EAAI,SAAQ,QAAO,KAAK,KACrB,UAAA;AAAA,YAAAJ,2BAAAA;AAAAA,cAAC0E,OAAAA;AAAAA,cAAA;AAAA,gBACG,WAAU;AAAA,gBACV,SAAS;AAAA,gBAER,YAAE,eAAe;AAAA,cAAA;AAAA,YAAA;AAAA,2CAErBA,OAAAA,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;AC1KA,MAAM,6BAA6BiD,eAAI,OAAA,EAAS,MAAM;AAAA,EAClD,YAAYA,eAAI,OAAA,EAAS,MAAM;AAAA,IAC3B,YAAYA,eAAI,OAAA,EAAS,SAAA,EAAW,SAAS,qBAAqB;AAAA,IAClE,iBAAiBA,eAAI,SAAS,SAAS,6BAA6B;AAAA,IACpE,MAAMA,eAAI,SAAS,SAAS,6BAA6B;AAAA,IACzD,sBAAsBA,eAAI,OAAA,EAAS,SAAA;AAAA,IACnC,oBAAoBA,eAAI,OAAA,EAAS,SAAA;AAAA,IACjC,WAAWA,eAAI,OAAA;AAAA,IACf,QAAQA,eAAI,QAAA;AAAA,IACZ,aAAaA,eAAI,OAAA;AAAA,EAAO,CAC3B;AACL,CAAC;AAED,MAAMC,qBAAmB,CAAC,mBAA+D;AAAA,EACrF,YAAY;AAAA,IACR,aAAY,+CAAe,eAAc;AAAA,IACzC,iBAAiB;AAAA,IACjB,MAAM;AAAA,IACN,uBAAsB,+CAAe,yBAAwB;AAAA,IAC7D,oBAAoB;AAAA,IACpB,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,aAAa;AAAA,EAAA;AAErB;AAEO,MAAM,qBAAyD,CAAC;AAAA,EACnE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAM;AACF,QAAM,EAAE,EAAA,IAAM/G,4BAAA;AAEd,QAAM,EAAE,SAAS,cAAc,OAAO,SAAS,MAAA,IAAU+E,sBAAa;AAAA,IAClE,MAAM;AAAA,IACN,UAAUiC,IAAAA,YAAY,0BAA0B;AAAA,IAChD,eAAeD,mBAAiB,aAAa;AAAA,EAAA,CAChD;AAED,QAAM,gBAAgB,MAAM,uBAAuB;AAEnDlG,QAAAA,UAAU,MAAM;AACZ,QAAI,QAAQ;AACR,YAAMkG,mBAAiB,aAAa,CAAC;AAAA,IACzC;AAAA,EACJ,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,mBAAmB,MAAM;AAC3B,UAAMA,mBAAiB,aAAa,CAAC;AACrC,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,SACI5H,2BAAAA;AAAAA,IAACsH,MAAAA;AAAAA,IAAA;AAAA,MACG,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAS;AAAA,MACT,WAAS;AAAA,MACR,GAAG;AAAA,MAEJ,gEACI,UAAAnH,2BAAAA,KAAC,QAAA,EAAK,UAAU,aAAa,QAAQ,GAChC,UAAA;AAAA,QAAA,4CAAcoH,YAAAA,aAAA,EAAY;AAAA,QAC3BpH,2BAAAA,KAACqH,SAAAA,aAAA,EAAY,WAAU,8BACnB,UAAA;AAAA,UAAAxH,2BAAAA,IAACE,WAAAA,YAAA,EAAW,MAAK,MAAK,OAAM,WAAU,QAAO,UACxC,UAAA,EAAE,qDAAqD,gBAAgB,EAAA,CAC5E;AAAA,UACAF,2BAAAA,IAACoC,SAAAA,cAAW,SAAS,kBACjB,yCAAC,OAAA,EAAM,UAAS,SAAQ,EAAA,CAC5B;AAAA,QAAA,GACJ;AAAA,QACApC,2BAAAA,IAACyH,SAAAA,eAAA,EAAc,WAAU,iCACrB,UAAAtH,2BAAAA,KAAC4G,eAAA,EAAK,WAAS,MAAC,QAAQ,KAAK,eAAe,GAAG,IAAI,GAE/C,UAAA;AAAA,UAAA/G,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IACX,UAAA/G,2BAAAA;AAAAA,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,UAGAA,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,YAACkH,KAAAA;AAAAA,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,UAGAlH,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,YAACkH,KAAAA;AAAAA,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,UAGAlH,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,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,iBAAiB;AAAA,gBACjB,kBAAkB,iBAAiB;AAAA,cAAA;AAAA,YACvC;AAAA,UAAA,GAER;AAAA,UAGAA,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,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,gBACnC,iBAAiB;AAAA,cAAA;AAAA,YACrB;AAAA,UAAA,GAER;AAAA,UAGAA,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,YAACkH,KAAAA;AAAAA,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,UAGAlH,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,YAAC8H,aAAAA;AAAAA,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,UAGA9H,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IACX,UAAA/G,2BAAAA;AAAAA,YAACkH,KAAAA;AAAAA,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/G,2BAAAA,KAACuH,SAAAA,eAAA,EAAc,WAAU,+BACrB,UAAA;AAAA,UAAA1H,2BAAAA,IAAC,QAAA,EAAK;AAAA,UACNG,2BAAAA,KAACC,SAAAA,KAAA,EAAI,SAAQ,QAAO,KAAK,KACrB,UAAA;AAAA,YAAAJ,2BAAAA;AAAAA,cAAC0E,OAAAA;AAAAA,cAAA;AAAA,gBACG,WAAU;AAAA,gBACV,SAAS;AAAA,gBAER,YAAE,eAAe;AAAA,cAAA;AAAA,YAAA;AAAA,YAEtB1E,2BAAAA,IAAC0E,OAAAA,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;ACpNA,MAAMlC,qBAAmBmF,eAAI,OAAA,EAAS,MAAM;AAAA,EACxC,eAAeA,eAAI,OAAA,EAAS,MAAM;AAAA,IAC9B,MAAMA,eAAI,SAAS,SAAS,kBAAkB;AAAA,IAC9C,YAAYA,eAAI,SAAS,SAAS,wBAAwB;AAAA,IAC1D,YAAYA,eAAI,OAAA,EAAS,SAAS,qBAAqB;AAAA,EAAA,CAC1D;AACL,CAAC;AAED,MAAM,mBAAiD,CAAC;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAM;AACF,QAAM,EAAE,EAAA,IAAM9G,4BAAA;AACd,QAAM,CAACkH,SAAO,QAAQ,IAAI5G,MAAAA,SAAwB,IAAI;AACtD,QAAM,EAAE,SAAS,cAAc,MAAA,IAAUyE,cAAAA,QAAa;AAAA,IAClD,MAAM;AAAA,IACN,UAAUiC,IAAAA,YAAYrF,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,SACIrC,2BAAAA;AAAAA,IAACmH,MAAAA;AAAAA,IAAA;AAAA,MACG,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAS;AAAA,MACT,WAAS;AAAA,MACR,GAAG;AAAA,MACJ,UAAA;AAAA,QAAAtH,2BAAAA,IAAA4B,WAAAA,UAAA,EAEI,UAAAzB,gCAAC,QAAA,EAAK,UAAU,aAAa,QAAQ,GAChC,UAAA;AAAA,UAAA,4CACIoH,YAAAA,aAAA,EAAY;AAAA,UAEjBpH,2BAAAA,KAACqH,SAAAA,aAAA,EAAY,WAAU,8BACnB,UAAA;AAAA,YAAAxH,2BAAAA,IAACE,WAAAA,YAAA,EAAW,MAAK,MAAK,OAAM,WAAU,QAAO,UACxC,UAAA,EAAE,oCAAoC,EAAA,CAC3C;AAAA,YACAF,2BAAAA,IAACoC,SAAAA,cAAW,SAAS,kBACjB,yCAAC,OAAA,EAAM,UAAS,SAAQ,EAAA,CAC5B;AAAA,UAAA,GACJ;AAAA,UACApC,2BAAAA,IAACyH,SAAAA,eAAA,EAAc,WAAU,iCAErB,UAAAtH,2BAAAA,KAAC4G,eAAA,EAAK,WAAS,MAAC,QAAQ,KAAK,eAAe,GAAG,IAAI,GAC/C,UAAA;AAAA,YAAA/G,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,cAACkH,KAAAA;AAAAA,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,YACAlH,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,cAACkH,KAAAA;AAAAA,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,YACAlH,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,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,CAEJ;AAAA,UACAG,2BAAAA,KAACuH,SAAAA,eAAA,EAAc,WAAU,+BACrB,UAAA;AAAA,YAAA1H,2BAAAA,IAAC,QAAA,EAAK;AAAA,YACNG,2BAAAA,KAACC,SAAAA,KAAA,EAAI,SAAQ,QAAO,KAAK,KACrB,UAAA;AAAA,cAAAJ,2BAAAA;AAAAA,gBAAC0E,OAAAA;AAAAA,gBAAA;AAAA,kBACG,WAAU;AAAA,kBACV,SAAS;AAAA,kBACR,YAAE,eAAe;AAAA,gBAAA;AAAA,cAAA;AAAA,cAEtB1E,2BAAAA,IAAC0E,OAAAA,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,CACJ;AAAA,QACA1E,2BAAAA;AAAAA,UAACgI,MAAAA;AAAAA,UAAA;AAAA,YACG,MAAM,QAAQD,OAAK;AAAA,YACnB,MAAMA,mCAAO;AAAA,YACb,SAASA,mCAAO;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;AC7HA,MAAM,8BAA8BJ,eAAI,OAAA,EAAS,MAAM;AAAA,EACnD,aAAaA,eAAI,OAAA,EAAS,MAAM;AAAA,IAC5B,YAAYA,eAAI,OAAA,EAAS,SAAA,EAAW,SAAS,qBAAqB;AAAA,IAClE,kBAAkBA,eAAI,OAAA;AAAA,IACtB,MAAMA,eAAI,SAAS,SAAS,8BAA8B;AAAA,IAC1D,eAAeA,eAAI,OAAA,EAAS,SAAA,EAAW,SAAS,wBAAwB;AAAA,IACxE,YAAYA,eAAI,OAAA,EAAS,SAAA;AAAA,IACzB,OAAOA,eAAI,OAAA,EAAS,SAAA,EAAW,UAAU,wBAAwB;AAAA,IACjE,QAAQA,eAAI,QAAA;AAAA,IACZ,aAAaA,eAAI,OAAA;AAAA,EAAO,CAC3B;AACL,CAAC;AAED,MAAM,mBAAmB,CAAC,mBAAgE;AAAA,EACtF,aAAa;AAAA,IACT,aAAY,+CAAe,eAAc;AAAA,IACzC,kBAAkB;AAAA,IAClB,MAAM;AAAA,IACN,gBAAe,+CAAe,kBAAiB;AAAA,IAC/C,aAAY,+CAAe,0BAAyB;AAAA,IACpD,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,aAAa;AAAA,EAAA;AAErB;AAEO,MAAM,sBAA2D,CAAC;AAAA,EACrE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAM;AACF,QAAM,EAAE,EAAA,IAAM9G,4BAAA;AAEd,QAAM,EAAE,SAAS,cAAc,OAAO,SAAS,MAAA,IAAU+E,sBAAa;AAAA,IAClE,MAAM;AAAA,IACN,UAAUiC,IAAAA,YAAY,2BAA2B;AAAA,IACjD,eAAe,iBAAiB,aAAa;AAAA,EAAA,CAChD;AAED,QAAM,gBAAgB,MAAM,wBAAwB;AACpD,QAAM,mBAAmB,MAAM,2BAA2B;AAE1DnG,QAAAA,UAAU,MAAM;AACZ,QAAI,QAAQ;AACR,YAAM,iBAAiB,aAAa,CAAC;AAAA,IACzC;AAAA,EACJ,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,mBAAmB,MAAM;AAC3B,UAAM,iBAAiB,aAAa,CAAC;AACrC,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,SACI1B,2BAAAA;AAAAA,IAACsH,MAAAA;AAAAA,IAAA;AAAA,MACG,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAS;AAAA,MACT,WAAS;AAAA,MACR,GAAG;AAAA,MAEJ,gEACI,UAAAnH,2BAAAA,KAAC,QAAA,EAAK,UAAU,aAAa,QAAQ,GAChC,UAAA;AAAA,QAAA,4CAAcoH,YAAAA,aAAA,EAAY;AAAA,QAC3BpH,2BAAAA,KAACqH,SAAAA,aAAA,EAAY,WAAU,8BACnB,UAAA;AAAA,UAAAxH,2BAAAA,IAACE,WAAAA,YAAA,EAAW,MAAK,MAAK,OAAM,WAAU,QAAO,UACxC,UAAA,EAAE,sDAAsD,iBAAiB,EAAA,CAC9E;AAAA,UACAF,2BAAAA,IAACoC,SAAAA,cAAW,SAAS,kBACjB,yCAAC,OAAA,EAAM,UAAS,SAAQ,EAAA,CAC5B;AAAA,QAAA,GACJ;AAAA,QACApC,2BAAAA,IAACyH,SAAAA,eAAA,EAAc,WAAU,iCACrB,UAAAtH,2BAAAA,KAAC4G,eAAA,EAAK,WAAS,MAAC,QAAQ,KAAK,eAAe,GAAG,IAAI,GAE/C,UAAA;AAAA,UAAA/G,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IACX,UAAA/G,2BAAAA;AAAAA,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,UAGAA,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IACX,UAAA/G,2BAAAA;AAAAA,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,UAAQ;AAAA,cACR,SAAS,CAAA;AAAA,cACT,eAAe;AAAA,gBACX,kBAAkB,iBAAiB;AAAA;AAAA,cAAA;AAAA,YAEvC;AAAA,UAAA,GAER;AAAA,UAGAA,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,YAACkH,KAAAA;AAAAA,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,UAGAlH,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,YAACkH,KAAAA;AAAAA,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,UAGAlH,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,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,gBACnC,qBAAqB,oBAAoB;AAAA,cAAA;AAAA,YAC7C;AAAA,UAAA,GAER;AAAA,UAGAA,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,YAACkH,KAAAA;AAAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,aAAa;AAAA,cACb,OAAO,EAAE,4DAA4D,OAAO;AAAA,cAC5E,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,UAAQ;AAAA,cACR,aAAa,EAAE,kEAAkE,aAAa;AAAA,YAAA;AAAA,UAAA,GAEtG;AAAA,UAGAlH,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,YAAC8H,aAAAA;AAAAA,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,UAGA9H,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IACX,UAAA/G,2BAAAA;AAAAA,YAACkH,KAAAA;AAAAA,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/G,2BAAAA,KAACuH,SAAAA,eAAA,EAAc,WAAU,+BACrB,UAAA;AAAA,UAAA1H,2BAAAA,IAAC,QAAA,EAAK;AAAA,UACNG,2BAAAA,KAACC,SAAAA,KAAA,EAAI,SAAQ,QAAO,KAAK,KACrB,UAAA;AAAA,YAAAJ,2BAAAA;AAAAA,cAAC0E,OAAAA;AAAAA,cAAA;AAAA,gBACG,WAAU;AAAA,gBACV,SAAS;AAAA,gBAER,YAAE,eAAe;AAAA,cAAA;AAAA,YAAA;AAAA,YAEtB1E,2BAAAA,IAAC0E,OAAAA,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;ACxMA,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,MAAMlC,qBAAmBmF,eAAI,OAAA,EAAS,MAAM;AAAA,EACxC,4BAA4BA,eAAI,OAAA,EAAS,MAAM;AAAA,IAC3C,MAAMA,eAAI,SAAS,SAAS,kBAAkB;AAAA,IAC9C,KAAKA,eAAI,SAAS,SAAS,iBAAiB;AAAA,IAC5C,UAAUA,eAAI,QAAQ,SAAS,sBAAsB;AAAA,IACrD,WAAWA,eAAI,QAAQ,SAAS,uBAAuB;AAAA,IACvD,SAASA,eAAI,QAAQ,IAAI,GAAG,kCAAkC,EAAE,SAAS,qBAAqB;AAAA,IAC9F,qBAAqBA,eAAI,QAAQ,SAAS,iCAAiC;AAAA,IAC3E,YAAYA,eAAI,MAAA,EAAQ,SAAA;AAAA,IACxB,eAAeA,eAAI,MAAA,EAAQ,SAAA;AAAA,IAC3B,YAAYA,eAAI,MAAA,EAAQ,SAAA;AAAA,IACxB,gBAAgBA,eAAI,SAAS,SAAS,4BAA4B;AAAA,IAClE,qBAAqBA,eAAI,SAAS,SAAS,iCAAiC;AAAA,IAC5E,oBAAoBA,eAAI,SAAS,SAAS,gCAAgC;AAAA,IAC1E,gBAAgBA,eAAI,QAAQ,SAAS,yBAAyB;AAAA,IAC9D,mBAAmBA,eAAI,QAAQ,SAAS,4BAA4B;AAAA,IACpE,kBAAkBA,eAAI,QAAQ,SAAS,2BAA2B;AAAA,IAClE,iBAAiBA,eAAI,QAAQ,SAAS,0BAA0B;AAAA,IAChE,wBAAwBA,eAAI,QAAQ,SAAS,iCAAiC;AAAA,IAC9E,yBAAyBA,eAAI,QAAQ,SAAS,kCAAkC;AAAA,IAChF,kBAAkBA,eAAI,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,IAAM9G,4BAAA;AACd,QAAM,CAACkH,SAAO,QAAQ,IAAI5G,MAAAA,SAAwB,IAAI;AACtD,QAAM,CAAC,sBAAsB,uBAAuB,IAAIA,MAAAA,SAAc,IAAI;AAC1E,QAAM,aAAa,CAAC,cAAc,iBAAiB,cAAc,oBAAoB,WAAW;AAChG,QAAM,gBAAgB;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,UAAUyE,cAAAA,QAAa;AAAA,IACzB,MAAM;AAAA,IACN,UAAUiC,IAAAA,YAAYrF,kBAAgB;AAAA,IACtC;AAAA,EAAA,CACH;AACD,QAAM,EAAE,SAAS,cAAc,OAAO,UAAU,QAAA,IAAY,WAAW,CAAA;AAGvE,QAAM,CAAC,aAAa,iBAAiB,YAAY,yBAAyB,IAAIhC,cAAAA,SAAS;AAAA,IACnF;AAAA,IAAS,MACL;AAAA,MAAC;AAAA,MACG;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAAgD,CAC3D;AAIDkB,QAAAA,UAAU,MAAM;AACZ,QAAI,gBAAe,6DAAsB,gBAAe;AACpD,YAAM,eAAeuG,IAAAA,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,UAAM,aAAa;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,uBAAuBtH,kBAAY,CAAC,SAAc;AACpD,4BAAwB,IAAI;AAAA,EAChC,GAAG,CAAA,CAAE;AAEL,QAAM,kBAAkBA,MAAAA,YAAY,YAAY;AAC5C,QAAI,CAAC,WAAY;AACjB,UAAM,SAAS;AAAA,MACX,mBAAmB;AAAA,MACnB,oBAAoB;AAAA,IAAA;AAExB,UAAM,UAAU,MAAMuH,IAAAA,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;AACfxG,QAAAA,UAAU,MAAM;AACZ,oBAAA;AAAA,EACJ,GAAG,CAAC,eAAe,CAAC;AAEpB,SACIvB,2BAAAA;AAAAA,IAACmH,MAAAA;AAAAA,IAAA;AAAA,MACG,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAS;AAAA,MACT,WAAS;AAAA,MACR,GAAG;AAAA,MACJ,UAAA;AAAA,QAAAtH,2BAAAA,IAAA4B,WAAAA,UAAA,EACI,UAAA5B,2BAAAA,IAACmI,cAAAA,gBAAc,GAAG,SACd,0CAAC,QAAA,EAAK,UAAU,aAAa,QAAQ,GAChC,UAAA;AAAA,UAAA,4CACIZ,YAAAA,aAAA,EAAY;AAAA,UAEjBpH,2BAAAA,KAACqH,SAAAA,aAAA,EAAY,WAAU,uCACnB,UAAA;AAAA,YAAAxH,2BAAAA,IAACE,WAAAA,YAAA,EAAW,MAAK,MAAK,OAAM,WAAU,QAAO,UACxC,UAAA,EAAE,2CAA2C,sBAAsB,EAAA,CACxE;AAAA,YACAF,2BAAAA,IAACoC,SAAAA,cAAW,SAAS,kBACjB,yCAAC,OAAA,EAAM,UAAS,SAAQ,EAAA,CAC5B;AAAA,UAAA,GACJ;AAAA,UACApC,2BAAAA,IAACyH,SAAAA,eAAA,EAAc,WAAU,0CACrB,UAAAtH,2BAAAA,KAAC4G,eAAA,EAAK,WAAS,MAAC,QAAQ,KAAK,eAAe,GAAG,IAAI,GAE/C,UAAA;AAAA,YAAA/G,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,cAACkH,KAAAA;AAAAA,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,YAGAlH,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,cAACkH,KAAAA;AAAAA,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,YAGAlH,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,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,YAIAA,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,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,YAGAA,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,cAACoI,SAAAA;AAAAA,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,YAGApI,2BAAAA,IAAC+G,SAAAA,QAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACnB,UAAA/G,2BAAAA,IAACE,WAAAA,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,qBACvC,YAAE,iDAAiD,qBAAqB,GAC7E,EAAA,CACJ;AAAA,YAGAF,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,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,YAGAA,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,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,YAGAA,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,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,YAGAA,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,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,YACAA,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,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,YACAA,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,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,YAGAA,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,cAACoI,SAAAA;AAAAA,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,eAC3BpI,2BAAAA,IAAC+G,iBAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,cAACkH,KAAAA;AAAAA,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,YAIJlH,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,cAACoI,SAAAA;AAAAA,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,YAGApI,2BAAAA,IAAC+G,SAAAA,QAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACnB,UAAA/G,2BAAAA,IAACE,WAAAA,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,qBACvC,YAAE,wDAAwD,YAAY,GAC3E,EAAA,CACJ;AAAA,YAGAF,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,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,YAGAA,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,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,YAGAA,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,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,YAGAA,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,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,YAGAA,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,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,YAGAA,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,GACX,UAAA/G,2BAAAA;AAAAA,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,UACAG,2BAAAA,KAACuH,SAAAA,eAAA,EAAc,WAAU,wCACrB,UAAA;AAAA,YAAA1H,2BAAAA,IAAC,QAAA,EAAK;AAAA,YACNG,2BAAAA,KAACC,SAAAA,KAAA,EAAI,SAAQ,QAAO,KAAK,KACrB,UAAA;AAAA,cAAAJ,2BAAAA;AAAAA,gBAAC0E,OAAAA;AAAAA,gBAAA;AAAA,kBACG,WAAU;AAAA,kBACV,SAAS;AAAA,kBACR,YAAE,eAAe;AAAA,gBAAA;AAAA,cAAA;AAAA,cAEtB1E,2BAAAA,IAAC0E,OAAAA,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,QACA1E,2BAAAA;AAAAA,UAACgI,MAAAA;AAAAA,UAAA;AAAA,YACG,MAAM,QAAQD,OAAK;AAAA,YACnB,MAAMA,mCAAO;AAAA,YACb,SAASA,mCAAO;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;ACtgBA,MAAM,mBAAmBJ,eAAI,OAAA,EAAS,MAAM;AAAA,EACxC,cAAcA,eAAI,OAAA,EAAS,MAAM;AAAA,IAC7B,MAAMA,eAAI,SAAS,SAAS,kBAAkB;AAAA,IAC9C,mBAAmBA,eAAI,OAAA,EAClB,UAAU,+BAA+B,EACzC,SAAS,+BAA+B;AAAA,IAC7C,aAAaA,eAAI,SACZ,UAAU,yBAAyB,EACnC,SAAS,yBAAyB,EAClC,SAAS,kBAAkB,EAC3B,QAAQ,wBAAwB;AAAA,IACrC,iBAAiBA,eAAI,OAAA,EAAS,SAAA;AAAA,IAC9B,eAAeA,eAAI,OAAA,EAAS,SAAA;AAAA,IAC5B,UAAUA,eAAI,OAAA,EAAS,SAAA,EAAW,UAAU,kBAAkB;AAAA,IAC9D,4BAA4BA,eAAI,OAAA,EAAS,SAAA,EAAW,UAAU,kBAAkB;AAAA,IAChF,mBAAmBA,eAAI,OAAA,EAAS,SAAA,EAAW,UAAU,kBAAkB,EAAE,QAAQ,wBAAwB;AAAA,IACzG,aAAaA,eAAI,OAAA,EAAS,SAAA;AAAA,EAAS,CACtC;AACL,CAAC;AAED,MAAM,0BAA0B;AAAA,EAC5B,EAAE,OAAO,cAAc,OAAO,aAAA;AAAA,EAC9B,EAAE,OAAO,QAAQ,OAAO,OAAA;AAAA,EACxB,EAAE,OAAO,eAAe,OAAO,cAAA;AAAA,EAC/B,EAAE,OAAO,iBAAiB,OAAO,gBAAA;AACrC;AAEA,MAAM,wBAAwB;AAAA,EAC1B,EAAE,OAAO,cAAc,OAAO,aAAA;AAAA,EAC9B,EAAE,OAAO,UAAU,OAAO,SAAA;AAC9B;AAEO,MAAM,sBAAsD,CAAC;AAAA,EAChE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAM;AACF,QAAM,EAAE,EAAA,IAAM9G,4BAAA;AAEd,QAAM,EAAE,SAAS,cAAc,OAAO,QAAA,IAAY+E,cAAAA,QAAa;AAAA,IAC3D,MAAM;AAAA,IACN,UAAUiC,IAAAA,YAAY,gBAAgB;AAAA,IACtC,eAAe;AAAA,MACX,cAAc;AAAA,QACV,MAAM;AAAA,QACN,mBAAmB;AAAA,QACnB,aAAa;AAAA,QACb,iBAAiB;AAAA,QACjB,eAAe;AAAA,QACf,UAAU;AAAA,QACV,4BAA4B;AAAA,QAC5B,mBAAmB;AAAA,QACnB,aAAa;AAAA,MAAA;AAAA,IACjB;AAAA,EACJ,CACH;AAED,QAAM,mBAAmB,MAAM;AAC3B,UAAM;AAAA,MACF,cAAc;AAAA,QACV,MAAM;AAAA,QACN,mBAAmB;AAAA,QACnB,aAAa;AAAA,QACb,iBAAiB;AAAA,QACjB,eAAe;AAAA,QACf,UAAU;AAAA,QACV,4BAA4B;AAAA,QAC5B,mBAAmB;AAAA,QACnB,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,iCAAQ,YAAmB;AACxC,qBAAA;AAAA,EACJ;AAEA,SACI7H,2BAAAA;AAAAA,IAACsH,MAAAA;AAAAA,IAAA;AAAA,MACG,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAS;AAAA,MACT,WAAS;AAAA,MACR,GAAG;AAAA,MAEJ,gEACI,UAAAnH,2BAAAA,KAAC,QAAA,EAAK,UAAU,aAAa,QAAQ,GAChC,UAAA;AAAA,QAAA,4CAAcoH,YAAAA,aAAA,EAAY;AAAA,QAC3BpH,2BAAAA,KAACqH,SAAAA,aAAA,EAAY,WAAU,oCACnB,UAAA;AAAA,UAAAxH,2BAAAA,IAACE,WAAAA,YAAA,EAAW,MAAK,MAAK,OAAM,WAAU,QAAO,UACxC,UAAA,EAAE,0BAA0B,EAAA,CACjC;AAAA,UACAF,2BAAAA,IAACoC,SAAAA,cAAW,SAAS,kBACjB,yCAAC,OAAA,EAAM,UAAS,SAAQ,EAAA,CAC5B;AAAA,QAAA,GACJ;AAAA,QACApC,2BAAAA,IAACyH,SAAAA,eAAA,EAAc,WAAU,uCACrB,UAAAtH,2BAAAA,KAAC4G,eAAA,EAAK,WAAS,MAAC,QAAQ,KAAK,eAAe,GAAG,IAAI,GAC/C,UAAA;AAAA,UAAA/G,+BAAC+G,SAAAA,QAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACnB,UAAA/G,2BAAAA;AAAAA,YAACkH,KAAAA;AAAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,aAAa;AAAA,cACb,OAAO,EAAE,sCAAsC;AAAA,cAC/C,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,aAAa,EAAE,4CAA4C;AAAA,cAC3D,UAAQ;AAAA,YAAA;AAAA,UAAA,GAEhB;AAAA,yCACCH,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACnB,UAAA/G,2BAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACG,OAAO,EAAE,mDAAmD;AAAA,cAC5D,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,aAAa;AAAA,cACb,aAAa,EAAE,yDAAyD;AAAA,cACxE,UAAQ;AAAA,YAAA;AAAA,UAAA,GAEhB;AAAA,yCACC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACnB,UAAA/G,2BAAAA;AAAAA,YAACkH,KAAAA;AAAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,aAAa;AAAA,cACb,OAAO,EAAE,6CAA6C;AAAA,cACtD,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,aAAa,EAAE,mDAAmD;AAAA,cAClE,UAAQ;AAAA,YAAA;AAAA,UAAA,GAEhB;AAAA,yCACCH,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACnB,UAAA/G,2BAAAA;AAAAA,YAACoI,SAAAA;AAAAA,YAAA;AAAA,cACG,OAAO,EAAE,iDAAiD;AAAA,cAC1D,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,aAAa;AAAA,cACb,aAAa,EAAE,uDAAuD;AAAA,cACtE,SAAS;AAAA,YAAA;AAAA,UAAA,GAEjB;AAAA,yCACCrB,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACnB,UAAA/G,2BAAAA;AAAAA,YAACoI,SAAAA;AAAAA,YAAA;AAAA,cACG,OAAO,EAAE,+CAA+C;AAAA,cACxD,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,aAAa;AAAA,cACb,aAAa,EAAE,qDAAqD;AAAA,cACpE,SAAS;AAAA,YAAA;AAAA,UAAA,GAEjB;AAAA,yCACCrB,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACnB,UAAA/G,2BAAAA;AAAAA,YAACkH,KAAAA;AAAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,aAAa;AAAA,cACb,OAAO,EAAE,0CAA0C;AAAA,cACnD,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,aAAa,EAAE,gDAAgD;AAAA,YAAA;AAAA,UAAA,GAEvE;AAAA,yCACCH,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACnB,UAAA/G,2BAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACG,OAAO,EAAE,4DAA4D;AAAA,cACrE,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,aAAa;AAAA,cACb,aAAa,EAAE,kEAAkE;AAAA,YAAA;AAAA,UAAA,GAEzF;AAAA,yCACC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IAAI,IAAI,GACnB,UAAA/G,2BAAAA;AAAAA,YAACkH,KAAAA;AAAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,aAAa;AAAA,cACb,OAAO,EAAE,mDAAmD;AAAA,cAC5D,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,aAAa,EAAE,yDAAyD;AAAA,YAAA;AAAA,UAAA,GAEhF;AAAA,UACAlH,2BAAAA,IAAC+G,SAAAA,MAAA,EAAK,MAAI,MAAC,IAAI,IACX,UAAA/G,2BAAAA;AAAAA,YAACkH,KAAAA;AAAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,aAAa;AAAA,cACb,OAAO,EAAE,6CAA6C;AAAA,cACtD,MAAK;AAAA,cACL,gBAAe;AAAA,cACf,aAAa,EAAE,mDAAmD;AAAA,cAClE,cAAY;AAAA,YAAA;AAAA,UAAA,EAChB,CACJ;AAAA,QAAA,EAAA,CACJ,EAAA,CACJ;AAAA,QACA/G,2BAAAA,KAACuH,SAAAA,eAAA,EAAc,WAAU,qCACrB,UAAA;AAAA,UAAA1H,2BAAAA,IAAC,QAAA,EAAK;AAAA,UACNG,2BAAAA,KAACC,SAAAA,KAAA,EAAI,SAAQ,QAAO,KAAK,KACrB,UAAA;AAAA,YAAAJ,2BAAAA;AAAAA,cAAC0E,OAAAA;AAAAA,cAAA;AAAA,gBACG,WAAU;AAAA,gBACV,SAAS;AAAA,gBAER,YAAE,eAAe;AAAA,cAAA;AAAA,YAAA;AAAA,YAEtB1E,2BAAAA,IAAC0E,OAAAA,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;ACzOO,MAAM,iBAAiB,OAAO2D,QAAqC,YAAiB;AAC1F,MAAI;AACH,WAAO,MAAMA,OAAI,EAAE,GAAG,SAAS,GAAGC,IAAAA,SAAA,GAAY;AAAA,EAC/C,SAAS,OAAO;AACf,QAAI;AACH1D,gBAAAA,gBAAgB+B,IAAAA,gBAAgB,+BAAO,OAAO,GAAG,EAAE,SAAS,SAAS;AAAA,IACtE,QAAQ;AACP,cAAQ,MAAM,mDAAmDA,IAAAA,gBAAgB,+BAAO,OAAO,CAAC;AAAA,IACjG;AACA,UAAM;AAAA,EACP;AACD;AAeA,MAAM,YAAwC;AAAA,EAC7C,UAAU;AAAA,IACT,KAAK,CAAC,YAA4C,eAAe4B,MAAAA,yBAAyB,OAAO;AAAA,IACjG,WAAW;AAAA,EAAA;AAAA,EAEZ,OAAO;AAAA,IACN,KAAK,CAAC,YAAiB,eAAeC,MAAAA,eAAe,OAAO;AAAA,IAC5D,WAAW;AAAA,EAAA;AAAA,EAEZ,YAAY;AAAA,IACX,KAAK,CAAC,YAAiB,eAAeC,IAAAA,mBAAmB,OAAO;AAAA,IAChE,WAAW;AAAA,EAAA;AAAA,EAEZ,MAAM;AAAA,IACL,KAAK,CAAC,YAAiB,eAAeC,IAAAA,wBAAwB,OAAO;AAAA,IACrE,WAAW;AAAA,EAAA;AAAA,EAEZ,aAAa;AAAA,IACZ,KAAK,CAAC,YAAiB,eAAeC,IAAAA,mBAAmB,OAAO;AAAA,IAChE,WAAW;AAAA,EAAA;AAAA,EAEZ,gBAAgB;AAAA,IACf,KAAK,CAAC,YAAiB,eAAeC,MAAAA,gCAAgC,OAAO;AAAA,IAC7E,WAAW;AAAA,EAAA;AAAA,EAEZ,OAAO;AAAA,IACN,KAAK,CAAC,YAAiB,eAAeC,MAAAA,aAAa,OAAO;AAAA,IAC1D,WAAWC,cAAAA;AAAAA,EAAA;AAAA,EAEZ,UAAU;AAAA,IACT,KAAK,CAAC,YAAiB,eAAeC,MAAAA,qBAAqB,OAAO;AAAA,IAClE,WAAWC,iBAAAA;AAAAA,EAAA;AAAA,EAEZ,UAAU;AAAA,IACT,KAAK,CAAC,YAAiB,eAAeC,MAAAA,uBAAuB,OAAO;AAAA,IACpE,WAAWC,iBAAAA;AAAAA,EAAA;AAAA,EAEZ,YAAY;AAAA,IACX,KAAK,CAAC,YAAiB,eAAeC,MAAAA,mBAAmB,OAAO;AAAA,IAChE,WAAWC,mBAAAA;AAAAA,EAAA;AAAA,EAEZ,aAAa;AAAA,IACZ,KAAK,CAAC,YAAiB,eAAeC,MAAAA,oBAAoB,OAAO;AAAA,IACjE,WAAWC,oBAAAA;AAAAA,EAAA;AAAA,EAEZ,cAAc;AAAA,IACb,KAAK,CAAC,YAAiB,eAAeD,MAAAA,oBAAoB,OAAO;AAAA,IACjE,WAAWC,oBAAAA;AAAAA,EAAA;AAAA,EAEZ,aAAa;AAAA,IACZ,KAAK,CAAC,YAAiB,eAAeC,MAAAA,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;ACAA,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,MACFvJ,2BAAAA,IAACC,SAAAA,UAAA,EAAS,UAAQ,MAAC,OAAM,IAAqB,IAAI,EAAE,SAAS,gBAAgB,QAAQ,gBAAgB,GAAG,gBAAgB,GAAG,eAAA,GACvH,UAAAD,2BAAAA,IAACE,WAAAA,YAAA,EAAW,MAAK,MAAK,OAAM,wBACxB,UAAAF,2BAAAA,IAAC,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,MACFA,2BAAAA;AAAAA,QAACC,SAAAA;AAAAA,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,UAAAE,2BAAAA,KAACC,gBAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,KAC5B,UAAA;AAAA,YAAA,YAAY,mBACTJ,2BAAAA;AAAAA,cAACK,SAAAA;AAAAA,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,YAI7CL,2BAAAA;AAAAA,cAACE,WAAAA;AAAAA,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,KAAKsJ,WAAU;AACnC,cAAM;AAAA,UACFxJ,2BAAAA;AAAAA,YAACC,SAAAA;AAAAA,YAAA;AAAA,cACG,IAAI,GAAG,OAAO,KAAK,IAAI,IAAI,KAAK,IAAIuJ,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,UAAArJ,2BAAAA,KAACC,gBAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,KAC5B,UAAA;AAAA,gBAAA,YAAY,mBACTJ,2BAAAA;AAAAA,kBAACK,SAAAA;AAAAA,kBAAA;AAAA,oBACG,SAAS,QAAQ,MAAM,QAAQ,MAAM,MAAK,iCAAQ,QAAQ,IAAI,UAAS,EAAE;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAGjFL,2BAAAA;AAAAA,kBAACE,WAAAA;AAAAA,kBAAA;AAAA,oBACG,IAAI,GAAG,OAAO,KAAK,IAAI,IAAI,KAAK,IAAIsJ,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,MACFrJ,2BAAAA,KAACC,SAAAA,KAAA,EAAiB,IAAI,EAAE,UAAU,UAAU,QAAQ,GAAG,YAAY,QAAQ,QAAQ,EAAA,GAC/E,UAAA;AAAA,QAAAJ,2BAAAA,IAACsC,SAAAA,SAAA,EAAQ,UAAQ,MAAC,IAAI,EAAE,IAAI,sBAAsB,IAAI,qBAAA,EAAqB,CAAG;AAAA,QAC9EnC,2BAAAA,KAACF,SAAAA,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,UAAAD,2BAAAA,IAACuC,cAAAA,KAAA,EAAI,UAAS,QAAA,CAAQ;AAAA,UACtBpC,2BAAAA,KAACD,WAAAA,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,MACFF,2BAAAA,IAACC,SAAAA,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,IAAIkB,MAAAA,SAAS,EAAE;AACjD,QAAM,CAAC,SAAS,UAAU,IAAIA,MAAAA,SAAkB,KAAK;AACrD,QAAM,CAAC,gBAAgB,UAAU,IAAIA,MAAAA,SAAoB,CAAA,CAAE;AAC3D,QAAM,CAAC,iBAAiB,kBAAkB,IAAIA,MAAAA,SAAoB,CAAA,CAAE;AACpE,QAAM,CAAC,iBAAiB,kBAAkB,IAAIA,MAAAA,SAAS,KAAK;AAC5D,QAAM,CAAC,gBAAgB,iBAAiB,IAAIA,MAAAA,SAAS,KAAK;AAC1D,QAAM,CAAC,gBAAgB,iBAAiB,IAAIA,MAAAA,SAAS,KAAK;AAC1D,QAAM,CAAC,MAAM,OAAO,IAAIA,MAAAA,SAAS,KAAK;AACtC,QAAM,CAAC,YAAY,aAAa,IAAIA,MAAAA,SAAc,IAAI;AACtD,QAAM,CAAC,WAAW,YAAY,IAAIA,MAAAA,SAAc,IAAI;AACpD,QAAM,CAAC,aAAa,cAAc,IAAIA,MAAAA,SAAkB,KAAK;AAC7D,QAAM,CAAC,cAAc,eAAe,IAAIA,MAAAA,SAAkB,KAAK;AAC/D,QAAM,EAAE,EAAA,IAAMN,4BAAA;AAGd,QAAM,CAAC,YAAY,aAAa,IAAIM,eAA2B;AAAA,IAC3D,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe;AAAA,IACf,OAAO;AAAA,EAAA,CACV;AAED,QAAM,EAAE,MAAA,IAAUL,oBAAA;AAClB,QAAM,QAAQ;AAEd,QAAM,oBAAoBE,MAAAA,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,uBAAuBL,MAAAA,YAAY,CAAC,YAAoB8I,WAA0B;AACpF,UAAM,iBAA6B,WAAW,QAAQ,SAAS,IAAK,UAAU,CAAA;AAC9E,QAAI,CAAC,WAAY,QAAO;AAExB,UAAM,uBAAuB,WAAW,YAAA;AAExC,UAAMpI,mBAAkB,aAClB,mCAAS,OAAO,CAAC,KAAgB,QAAQ;;AACvC,YAAM,mBAAkB,SAAI,YAAJ,mBAAa,OAAO,CAAC,SAAS;AAClD,cAAMqI,SAAQ,MAAM,eAAe,KAAK,KAAK,IAAI,KAAK,cAAc,OAAO,KAAK,KAAK;AACrF,eAAOA,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,SAAQ,MAAM,eAAe,IAAI,KAAK,IAAI,IAAI,cAAc,OAAO,IAAI,KAAK;AAClF,aAAOA,iCAAO,cAAc,SAAS;AAAA,IACzC,OAAM,CAAA;AAEV,WAAO,qBAAqBrI,kBAAiBoI,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,mBAAmB9I,kBAAY,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,uBAAuBA,MAAAA,YAAY,CAAC,aAAwB8I,WAA0B;AACxF,UAAM,iBAAiB,MAAM,QAAQA,MAAK,IAAIA,SAAQ,CAACA,MAAK;AAC5D,UAAM,cAAcnI,EAAAA,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,kBAAkBN,MAAAA,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,eAAeL,kBAAY,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,mBAAa,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,gBAAgBA,MAAAA,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,QAAM,eAAeA,MAAAA,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,MAAMY,aAAS;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,SAASoI,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,iBAAiB3I,MAAAA;AAAAA,IACnB,MAAMS,EAAAA,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,cAAM,aAAa,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,cAAM,aAAa,YAAY,eAAe,GAAG,KAAK;AAAA,MAC1D;AAAA,IACJ,GAAG,GAAG;AAAA;AAAA,IAEN,CAAC,mBAAmB,gBAAgB,KAAK,UAAU,aAAa,CAAC;AAAA,EAAA;AAIrE,QAAM,eAAed,MAAAA,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,YAAM,aAAa,aAAa,eAAe,GAAG,KAAK;AACvD,yBAAmB,IAAI;AAAA,IAC3B;AAAA,EAEJ,GAAG,CAAC,KAAK,UAAU,aAAa,GAAG,mBAAmB,eAAe,CAAC;AAGtE,QAAM,kBAAkBA,MAAAA,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,iBAAiBA,MAAAA,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,YAAM,aAAa,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;AAGzDe,QAAAA,UAAU,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;AAEtFA,QAAAA,UAAU,MAAM;AACZ,oBAAA;AAAA,EACJ,GAAG,CAAC,eAAe,CAAC;AAEpBA,QAAAA,UAAU,MAAM;AACZ,mBAAA;AAAA,EACJ,GAAG,CAAC,cAAc,CAAC;AAEnBA,QAAAA,UAAU,MAAM;AACZ,QAAI,MAAM;AACN,mBAAA;AAAA,IACJ;AAAA,EACJ,GAAG,CAAC,MAAM,YAAY,CAAC;AAEvBA,QAAAA,UAAU,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;AAE9BA,QAAAA,UAAU,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,kBAAkBf,MAAAA,YAAY,MAAM;AACtC,mBAAe,IAAI;AAAA,EACvB,GAAG,CAAA,CAAE;AAGL,QAAM,kBAAkBA,kBAAY,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,cAAM,aAAa,IAAI,eAAe,GAAG,KAAK;AAAA,MAClD;AACA,UAAI,UAAU,OAAO,MAAM;AACvB,cAAM,WAAW,WACX,CAAC,GAAI,SAAS,CAAA,GAAK,OAAO,KAAK,EAAE,IACjC,OAAO,KAAK;AAAA,MACtB;AAAA,IACJ,SAASgJ,QAAO;AACZ,cAAQ,IAAI,SAASA,MAAK;AAC1B,sBAAgB,KAAK;AAAA,IACzB;AAAA,EAGJ,GAAG,CAAC,WAAW,mBAAmB,cAAc,eAAe,UAAU,MAAM,KAAK,CAAC;AAErFjI,QAAAA,UAAU,MAAM;AACZ,UAAM,SAAS,iBAAiB,OAAQ;AACxC,iBAAa,MAAM;AAAA,EACvB,GAAG,CAAC,OAAO,CAAC;AAEZ,QAAM,iBAAiB,CAAC,UAAe;AACnC,UAAM,EAAE,OAAA+H,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,SACItJ,2BAAAA;AAAAA,IAAC2B,OAAAA;AAAAA,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,WACG9B,2BAAAA;AAAAA,QAACiC,SAAAA;AAAAA,QAAA;AAAA,UACG,OAAM;AAAA,UACN,IAAI;AAAA,UACJ,cACIjC,2BAAAA,IAACkC,SAAAA,gBAAA,EAAe,UAAS,OACpB,qBAAW,aACRlC,2BAAAA;AAAAA,YAACmC,SAAAA;AAAAA,YAAA;AAAA,cACG,MAAM;AAAA,cACN,IAAI,EAAE,IAAI,GAAG,OAAO,UAAA;AAAA,YAAU;AAAA,UAAA,IAGlC,oBAAoB,YAChBnC,2BAAAA;AAAAA,YAACoC,SAAAA;AAAAA,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,UAAApC,2BAAAA,IAACqC,aAAA,EAAM,UAAS,SAAQ,OAAM,oBAAA,CAAoB;AAAA,YAAA;AAAA,UAAA,EACtD,CAGZ;AAAA,QAAA;AAAA,MAAA,IAGR;AAAA,MAER,aAAa,CAAC,aAAiC;;AAC3C,eACIrC,2BAAAA,IAAA4B,WAAAA,UAAA,EACK,UAAA,MAAM,QAAQ,QAAQ,IACnB5B,2BAAAA;AAAAA,UAAC+B,kBAAAA;AAAAA,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,CAACC,UAAS;AACpB,uBAAeA,KAAI;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,iBACRhC,+BAACC,SAAAA,UAAA,EAAS,UAAQ,MACd,UAAAD,2BAAAA,IAACI,SAAAA,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,gBAAgB,UAAU,OAAO,OAAA,GACzD,yCAAC+B,SAAAA,kBAAA,EAAiB,MAAM,IAAI,EAAA,CAChC,EAAA,CACJ;AAAA,QAGH,aAAa,UAAU,mEAEf,UAAA,MAAM,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;;;;;;;;;;;;;"}
|