@lax-wp/design-system 0.13.61 → 0.13.62

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../../../../src/components/data-display/infinite-table/index.tsx"],"sourcesContent":["import { useCheckbox } from '../../../hooks/useCheckbox';\nimport { useTableConfig } from '../../../providers/design-system-provider/hooks';\nimport { canEditTableView, mergeViewColumnsWithTableColumns } from '../../../utils/table';\nimport Button from '../../button/Button';\nimport { FloatingBar } from '../../floating-bar/FloatingBar';\nimport { NoDataFound, NoDataFoundWidgets } from '../empty-state';\nimport { Typography } from '../typography/Typography';\nimport { DndContext, DragOverlay, type DragEndEvent, type DragStartEvent, type DropAnimation, MouseSensor, TouchSensor, closestCorners, useSensor, useSensors } from '@dnd-kit/core';\nimport React, { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { AutoSizer as _AutoSizer } from 'react-virtualized-auto-sizer';\nimport { createPortal } from 'react-dom';\nimport type { Row as ReactTableRow } from 'react-table';\nimport { useResizeColumns, useTable } from 'react-table';\n\nimport { Body } from './body';\nimport { validateCellValue } from './validateCell';\nimport { Row } from './body/rows/row';\nimport { TableContext } from './context';\nimport { CurrencyDropdownPortal } from './CurrencyDropdownPortal';\nimport { Head } from './head';\nimport { PendingEditsFloatingBar } from './PendingEditsFloatingBar';\nimport type { ICurrencyDropdownConfig, IColumn, IMasterDataModalConfig, ITableProps, ITableView, PendingEditsMap, IPendingEdit } from './types';\nimport { Add2Icon } from '../../icon';\nimport {\n TOOLBAR_FIRST_BREAKPOINT,\n TOOLBAR_SECOND_BREAKPOINT,\n DEFAULT_PAGE_SIZE,\n DEFAULT_COLUMN_MIN_WIDTH,\n DEFAULT_COLUMN_WIDTH,\n DEFAULT_COLUMN_MAX_WIDTH,\n DND_ACTIVATION_DISTANCE,\n DROP_ANIMATION_EASING,\n DROP_ANIMATION_DURATION,\n SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK,\n SCROLL_TO_CELL_LEFT_OFFSET,\n ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH,\n ROW_OPTIONS_COLUMN_WIDTH,\n OS_VIEWPORT_SELECTOR,\n DATA_ROW_ID_ATTR,\n DATA_COLUMN_KEY_ATTR,\n} from './constants';\nimport { getRowSlotHeight, useRowHeight } from './useRowHeight';\n\nconst AutoSizer = _AutoSizer as unknown as React.ComponentType<{\n renderProp: (size: { width: number; height: number }) => React.ReactNode;\n style?: React.CSSProperties;\n}>;\n\nconst CREATE_COLUMN_LABEL = 'Create Column';\n\nconst getEmptyButtonId = (label: string, index: number): string => {\n const slug = label.toLowerCase().trim().replace(/\\s+/g, '-').replace(/[^a-z0-9-_]/g, '');\n return `button-admin-${slug || index}`;\n};\n\nexport const InfiniteTable = React.memo(\n ({\n tableKey,\n searchConfig = { search: '', handleSearch: () => null, allowAStarSearch: false },\n filterConfig = {\n columnFilters: [],\n onFilter: () => null,\n onRemoveFilter: () => null,\n onClearFilter: () => null,\n onResetFilter: () => Promise.resolve({}),\n asyncRowOptionsFilter: () => Promise.resolve({}),\n },\n sortConfig = { onSort: () => null, columnSort: { field: '', order: '' }, onRemoveSort: () => null },\n headerConfig = {\n showExportButton: null,\n showFilters: true,\n showSorts: true,\n showSearch: true,\n showTableView: true,\n showTableViewAsModal: false,\n content: null,\n postContent: null,\n preContent: null,\n isLoading: false,\n showDivider: false,\n },\n hoverConfig = null,\n columns,\n modelName,\n enableMasterDataEnumSuggestions = false,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId,\n enumSuggestionsData,\n data = [],\n onRowClick,\n showHeader,\n tableActions,\n rowOptions,\n hideRowOptionWidth,\n checkboxUtilities,\n isLoading = false,\n onScroll,\n onScrolling,\n isColumnConfigurable,\n onAddColumnClick,\n emptyMessage,\n noDataWidget,\n buttons,\n onEditColumnClick,\n onDeleteColumnClick,\n onRowTooltipClick,\n tooltiptext,\n cascadingTableConfig,\n originalsOnly,\n disableOptionsForRowIndex,\n tableHeightClass = 'h-[calc(100vh-220px)]',\n getFullRowDataOnClick,\n selectedRowId = null,\n onRowEdit,\n onBulkRowEdit,\n inlineEditColumns,\n isResizable = true,\n paginationConfig,\n dndSortableUtils,\n multipleContexts,\n withSortable,\n withDraggable,\n enableRootDrag,\n pageSize = DEFAULT_PAGE_SIZE,\n onCascadingRowExpand,\n totalItems,\n showRecordCount = false,\n getInnerRowData,\n maxLevel,\n expandedRows = {},\n setExpandedRows,\n showNewItem,\n rawData,\n dragConfig,\n isOverlayLoading,\n style = {},\n floatingBarConfig,\n rowWrapper,\n rowLinkConfig,\n isCellClickDisabled,\n setHeaderOnParent,\n optimizeTable = false,\n multiSelectConfig,\n headerContextOptions,\n showHeaderContextOptions,\n setShowHeaderContextOptions,\n showDataTypeIcon = false,\n rowAdditionalActions,\n rowAdditionalActionsWidth,\n setVisibleHeaders,\n cellEditing = null,\n cellEditingValue = null,\n allowInlineEdit = false,\n onFieldOperationFlow,\n fieldOperationLoading = null,\n onTableActionsReady,\n onPendingEditsChange,\n onCancelPendingEdits,\n }: ITableProps) => {\n const tableConfig = useTableConfig();\n\n // Row slot height tracks the `h-row` viewport clamp so the paginated\n // container sizes to the rows the virtualized body actually renders.\n const rowSlotHeight = getRowSlotHeight(useRowHeight());\n\n const isSearch = Boolean(searchConfig?.search);\n\n const isFilters = filterConfig?.columnFilters?.length > 0;\n const isAnyFilters = isSearch || isFilters;\n\n const isCheckbox = Boolean(checkboxUtilities);\n\n const defaultTableView = tableConfig?.getTableView?.(tableKey as string) ?? null;\n const [selectedTableView, setSelectedTableView] = useState<ITableView | null>(defaultTableView || null);\n const isReadOnlyView = !canEditTableView(selectedTableView, tableConfig?.getUserId?.());\n const [showFilters, setShowFilters] = useState(false);\n const [showSorts, setShowSorts] = useState(false);\n const [newFilterColumn, setNewFilterColumn] = useState<unknown>(null);\n const [tableHeaders, setTableHeaders] = useState<IColumn[]>(columns);\n const isEmpty = (data.length === 0 || !tableHeaders.length) && !isLoading;\n const [showHeaderOptions, setShowHeaderOptions] = useState<string | null>(null);\n const [showDataFilterModal, setShowDataFilterModal] = useState<boolean>(false);\n const [dataFilterColumn, setDataFilterColumn] = useState<unknown>(null);\n const [isAllChecked, setIsAllChecked] = useState(false);\n const [isShowSortArrowAsc, setIsShowSortArrowAsc] = useState<string | null>(null);\n const [isShowSortArrowDesc, setIsShowSortArrowDesc] = useState<string | null>(null);\n const [sortableListByContext, setSortableListByContext] = useState<Record<string, unknown>>({});\n const [activeItem, setActiveItem] = useState<ReactTableRow<object> | null>(null);\n const [dndLoading, setDndLoading] = useState<boolean>(false);\n const [headerDivWidth, setHeaderDivWidth] = useState(0);\n const headerDivRef = useRef<HTMLDivElement>(null);\n const tableContainerRef = useRef<HTMLDivElement>(null);\n const [tableContainerSize, setTableContainerSize] = useState({ width: 0, height: 0 });\n const [activeInlineEdit, setActiveInlineEdit] = useState<{ rowId: string; columnKey: string } | null>(null);\n const [masterDataModalConfig, setMasterDataModalConfig] = useState<IMasterDataModalConfig | null>(null);\n const [selectedMasterData, setSelectedMasterData] = useState<{ value: unknown; reference: unknown } | null>(null);\n const [currencyDropdownConfig, setCurrencyDropdownConfig] = useState<ICurrencyDropdownConfig | null>(null);\n const [selectedCurrenciesMap, setSelectedCurrenciesMap] = useState<Record<string, string>>({});\n const hasAppliedInitialFilters = useRef(false);\n const userClearedFiltersRef = useRef(false);\n\n const selectedTableViewRef = useRef(selectedTableView);\n selectedTableViewRef.current = selectedTableView;\n const tableConfigRef = useRef(tableConfig);\n tableConfigRef.current = tableConfig;\n const columnsRef = useRef(columns);\n columnsRef.current = columns;\n const filterConfigRef = useRef(filterConfig);\n filterConfigRef.current = filterConfig;\n const headerGroupsRef = useRef<unknown[] | null>(null);\n const resolveTableViewRef = useRef<() => ITableView>(() => ({}) as ITableView);\n const computeListRef = useRef<() => unknown>(() => ({}));\n\n const [pendingEdits, setPendingEdits] = useState<PendingEditsMap>({});\n\n const addPendingEdit = useCallback(\n (rowId: string, columnKey: string, edit: IPendingEdit) => {\n setPendingEdits((prev) => {\n const existingEdit = prev[rowId]?.[columnKey];\n let resolvedValidationError: string | null | undefined = edit.validationError;\n if (resolvedValidationError === undefined) {\n const column = tableHeaders.find((col) => col.key === columnKey);\n if (column) {\n const result = validateCellValue(edit.value, column as { type?: string; is_required?: boolean });\n resolvedValidationError = !result.isValid ? (result.error || 'Invalid') : null;\n } else {\n resolvedValidationError = existingEdit?.validationError ?? null;\n }\n }\n return { ...prev, [rowId]: { ...(prev[rowId] || {}), [columnKey]: { ...edit, validationError: resolvedValidationError ?? null } } };\n });\n },\n [tableHeaders],\n );\n\n const hasPendingEdits = useCallback(() => {\n return Object.values(pendingEdits).some((rowEdits) => Object.keys(rowEdits).length > 0);\n }, [pendingEdits]);\n\n useEffect(() => {\n if (onTableActionsReady) onTableActionsReady({ addPendingEdit: addPendingEdit as (rowId: string, columnKey: string, edit: { value: unknown; originalValue?: unknown; meta?: unknown }) => void, hasPendingEdits });\n }, [onTableActionsReady, addPendingEdit, hasPendingEdits]);\n\n const removePendingEdit = useCallback((rowId: string, columnKey: string) => {\n setPendingEdits((prev) => {\n const newEdits = { ...prev };\n if (newEdits[rowId]) {\n const { [columnKey]: _removed, ...rest } = newEdits[rowId]; void _removed;\n if (Object.keys(rest).length === 0) delete newEdits[rowId];\n else newEdits[rowId] = rest;\n }\n return newEdits;\n });\n }, []);\n\n const getPendingEdit = useCallback(\n (rowId: string, columnKey: string): IPendingEdit | undefined => pendingEdits[rowId]?.[columnKey],\n [pendingEdits],\n );\n\n const hasPendingEdit = useCallback(\n (rowId: string, columnKey: string): boolean => Boolean(pendingEdits[rowId]?.[columnKey]),\n [pendingEdits],\n );\n\n const clearAllPendingEdits = useCallback(() => {\n if (fieldOperationLoading) return;\n if (onCancelPendingEdits && Object.keys(pendingEdits).length > 0) onCancelPendingEdits(pendingEdits);\n setPendingEdits({});\n setSelectedCurrenciesMap({});\n setActiveInlineEdit(null);\n }, [fieldOperationLoading, onCancelPendingEdits, pendingEdits]);\n\n const scrollToCell = useCallback(\n (rowId: string, columnKey: string, rowIndex: number) => {\n setTimeout(() => {\n tableConfig?.dispatchEvent?.('SCROLL_TO_TABLE_ROW', { rowIndex });\n const colIndex = tableHeaders.findIndex((col) => col.key === columnKey);\n setTimeout(() => {\n const cellElement = document.querySelector(`[${DATA_ROW_ID_ATTR}=\"${rowId}\"] [${DATA_COLUMN_KEY_ATTR}=\"${columnKey}\"]`);\n if (cellElement) {\n cellElement.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' });\n } else if (colIndex > 0) {\n const scrollContainer = document.querySelector(OS_VIEWPORT_SELECTOR);\n if (scrollContainer) {\n let scrollLeft = 0;\n for (let i = 0; i < colIndex; i++) {\n const col = tableHeaders[i];\n if (!col?.sticky) scrollLeft += col?.width || SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK;\n }\n scrollLeft = Math.max(0, scrollLeft - SCROLL_TO_CELL_LEFT_OFFSET);\n scrollContainer.scrollTo({ left: scrollLeft, behavior: 'smooth' });\n }\n }\n setActiveInlineEdit({ rowId, columnKey });\n }, 350);\n }, 100);\n },\n [tableHeaders, tableConfig],\n );\n\n const validateAllPendingEdits = useCallback(\n (editsToValidate: PendingEditsMap): { hasErrors: boolean; updatedEdits: PendingEditsMap; firstError: { rowId: string; columnKey: string } | null; errorTypes: Set<string> } => {\n let hasErrors = false;\n let firstError: { rowId: string; columnKey: string } | null = null;\n const updatedEdits: PendingEditsMap = {};\n const errorTypes = new Set<string>();\n\n Object.entries(editsToValidate).forEach(([rowId, rowEdits]) => {\n updatedEdits[rowId] = {};\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n const column = tableHeaders.find((col) => col.key === columnKey);\n const result = validateCellValue(edit.value, column as { type?: string; is_required?: boolean });\n if (!result.isValid) {\n hasErrors = true;\n if (result.error) errorTypes.add(result.error);\n if (!firstError) firstError = { rowId, columnKey };\n updatedEdits[rowId][columnKey] = { ...edit, validationError: result.error };\n } else {\n updatedEdits[rowId][columnKey] = { ...edit, validationError: null };\n }\n });\n });\n\n return { hasErrors, updatedEdits, firstError, errorTypes };\n },\n [tableHeaders],\n );\n\n const getValidationToastMessage = useCallback((errorTypes: Set<string>) => {\n const hasRequired = errorTypes.has('Field required');\n const hasFormat = errorTypes.size > (hasRequired ? 1 : 0);\n if (hasRequired && hasFormat) return 'Missing required field(s) and invalid format detected. Please review highlighted field(s).';\n if (hasRequired) return 'Missing required field(s). Please review highlighted field(s).';\n return 'Invalid field value(s). Please review highlighted field(s).';\n }, []);\n\n const saveAllPendingEdits = useCallback(() => {\n const { hasErrors, updatedEdits, firstError, errorTypes } = validateAllPendingEdits(pendingEdits);\n if (hasErrors) {\n setPendingEdits(updatedEdits);\n tableConfig?.showNotification?.('error', getValidationToastMessage(errorTypes));\n if (firstError) {\n const rowIndex = data.findIndex((row: Record<string, unknown>) => row.id === firstError!.rowId);\n scrollToCell(firstError!.rowId, firstError!.columnKey, rowIndex);\n }\n return;\n }\n\n const editedRows: Array<Record<string, unknown>> = [];\n Object.entries(pendingEdits).forEach(([rowId, rowEdits]) => {\n const originalRow = data.find((row: Record<string, unknown>) => row.id === rowId);\n if (originalRow) {\n const updatedRow = { ...originalRow };\n const editedFields: Record<string, { value: unknown; meta?: unknown }> = {};\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n updatedRow[columnKey] = edit.value;\n editedFields[columnKey] = { value: edit.value, meta: edit.meta };\n });\n editedRows.push({ ...updatedRow, __editedFields: editedFields });\n }\n });\n\n if (editedRows.length > 0) {\n if (onBulkRowEdit) onBulkRowEdit(editedRows);\n else if (onRowEdit) onRowEdit(null, null, null, null, null, { isBulk: true, rows: editedRows });\n }\n\n setPendingEdits({});\n setSelectedCurrenciesMap({});\n setActiveInlineEdit(null);\n }, [pendingEdits, data, onRowEdit, onBulkRowEdit, validateAllPendingEdits, getValidationToastMessage, scrollToCell, tableConfig]);\n\n const clearRowPendingEdits = useCallback(\n (rowId: string) => {\n if (fieldOperationLoading) return;\n const rowEdits = pendingEdits[rowId];\n if (rowEdits && onCancelPendingEdits) onCancelPendingEdits({ [rowId]: rowEdits });\n setPendingEdits((prev) => { const n = { ...prev }; delete n[rowId]; return n; });\n setSelectedCurrenciesMap((prev) => { const n = { ...prev }; Object.keys(n).forEach((k) => { if (k.startsWith(`${rowId}-`)) delete n[k]; }); return n; });\n setActiveInlineEdit(null);\n },\n [fieldOperationLoading, onCancelPendingEdits, pendingEdits],\n );\n\n const saveRowPendingEdits = useCallback(\n (rowId: string) => {\n const rowEdits = pendingEdits[rowId];\n if (!rowEdits || Object.keys(rowEdits).length === 0) return;\n\n const { hasErrors, updatedEdits, firstError, errorTypes } = validateAllPendingEdits({ [rowId]: rowEdits });\n if (hasErrors) {\n setPendingEdits((prev) => ({ ...prev, [rowId]: updatedEdits[rowId] }));\n tableConfig?.showNotification?.('error', getValidationToastMessage(errorTypes));\n if (firstError) {\n const rowIndex = data.findIndex((row: Record<string, unknown>) => row.id === firstError!.rowId);\n scrollToCell(firstError!.rowId, firstError!.columnKey, rowIndex);\n }\n return;\n }\n\n const originalRow = data.find((row: Record<string, unknown>) => row.id === rowId);\n if (!originalRow) return;\n const updatedRow = { ...originalRow };\n const editedFields: Record<string, { value: unknown; meta?: unknown }> = {};\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n updatedRow[columnKey] = edit.value;\n editedFields[columnKey] = { value: edit.value, meta: edit.meta };\n });\n\n const editedRowData = { ...updatedRow, __editedFields: editedFields };\n\n if (onBulkRowEdit) onBulkRowEdit([editedRowData]);\n else if (onRowEdit) onRowEdit(null, null, null, null, null, { isBulk: true, rows: [editedRowData] });\n\n setPendingEdits((prev) => { const n = { ...prev }; delete n[rowId]; return n; });\n setSelectedCurrenciesMap((prev) => { const n = { ...prev }; Object.keys(n).forEach((k) => { if (k.startsWith(`${rowId}-`)) delete n[k]; }); return n; });\n setActiveInlineEdit(null);\n },\n [pendingEdits, data, onRowEdit, onBulkRowEdit, validateAllPendingEdits, getValidationToastMessage, scrollToCell, tableConfig],\n );\n\n const pendingEditsCount = useMemo(() => {\n return Object.values(pendingEdits).reduce((total, rowEdits) => total + Object.keys(rowEdits).length, 0);\n }, [pendingEdits]);\n\n useEffect(() => {\n onPendingEditsChange?.(pendingEditsCount > 0, pendingEditsCount);\n }, [pendingEditsCount, onPendingEditsChange]);\n\n const pendingEditsList = useMemo(() => {\n const list: Array<{ rowId: string; columnKey: string; fieldName: string; value: unknown; originalValue: unknown; meta?: IPendingEdit['meta']; originalMeta?: IPendingEdit['originalMeta']; rowIndex: number }> = [];\n Object.entries(pendingEdits).forEach(([rowId, rowEdits]) => {\n const rowIndex = data.findIndex((row: Record<string, unknown>) => row.id === rowId);\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n const column = tableHeaders.find((col) => col.key === columnKey);\n list.push({ rowId, columnKey, fieldName: column?.Header || column?.display_name || columnKey, value: edit.value, originalValue: edit.originalValue, meta: edit.meta, originalMeta: edit.originalMeta, rowIndex });\n });\n });\n return list;\n }, [pendingEdits, tableHeaders, data]);\n\n const rowsWithPendingEdits = useMemo(() => {\n const rowsMap = new Map<string, { rowId: string; rowIndex: number; editCount: number }>();\n Object.entries(pendingEdits).forEach(([rowId, rowEdits]) => {\n const rowIndex = data.findIndex((row: Record<string, unknown>) => row.id === rowId);\n rowsMap.set(rowId, { rowId, rowIndex, editCount: Object.keys(rowEdits).length });\n });\n return Array.from(rowsMap.values()).sort((a, b) => a.rowIndex - b.rowIndex);\n }, [pendingEdits, data]);\n\n const openMasterDataModal = useCallback((config: IMasterDataModalConfig) => setMasterDataModalConfig(config), []);\n const closeMasterDataModal = useCallback(() => setMasterDataModalConfig(null), []);\n\n const handleMasterDataSelected = useCallback(\n (value: unknown, row?: unknown) => {\n setSelectedMasterData({ value, reference: row });\n if (masterDataModalConfig?.onSelected) masterDataModalConfig.onSelected(value, row);\n closeMasterDataModal();\n },\n [masterDataModalConfig, closeMasterDataModal],\n );\n\n const clearSelectedMasterData = useCallback(() => setSelectedMasterData(null), []);\n\n const openCurrencyDropdown = useCallback((config: ICurrencyDropdownConfig) => setCurrencyDropdownConfig(config), []);\n const closeCurrencyDropdown = useCallback(() => setCurrencyDropdownConfig(null), []);\n\n const setCurrencyForCell = useCallback((cellKey: string, currency: string) => {\n setSelectedCurrenciesMap((prev) => ({ ...prev, [cellKey]: currency }));\n }, []);\n\n const getCurrencyForCell = useCallback(\n (cellKey: string): string | undefined => selectedCurrenciesMap[cellKey],\n [selectedCurrenciesMap],\n );\n\n const fallbackHeight = useMemo(() => {\n const pxMatch = tableHeightClass.match(/h-\\[(\\d+px)\\]/);\n if (pxMatch) return pxMatch[1];\n const calcMatch = tableHeightClass.match(/h-\\[(calc\\(.+\\))\\]/);\n if (calcMatch) return calcMatch[1].replace(/([+-])/g, ' $1 ').replace(/\\s+/g, ' ');\n return undefined;\n }, [tableHeightClass]);\n\n const emptySwitchProps = {\n isEmpty,\n isFilters: isAnyFilters,\n isColumnConfigurable,\n handleOnClick: onAddColumnClick,\n emptyMessage,\n buttons,\n noDataWidget,\n };\n const translatedCreateColumnLabel = tableConfig?.t?.(CREATE_COLUMN_LABEL) ?? CREATE_COLUMN_LABEL;\n const defaultEmptyText = isAnyFilters ? 'No Results Found' : emptyMessage || 'No Data Found';\n const resolvedEmptyText = typeof defaultEmptyText === 'string' ? (tableConfig?.t?.(defaultEmptyText) ?? defaultEmptyText) : defaultEmptyText;\n\n const loaderData = { __isLoading: true };\n const cellLoaders = new Array(1).fill(loaderData);\n const tableLoaders = new Array(pageSize).fill(loaderData);\n\n const visibleColumns = useMemo(() => tableHeaders.filter((header) => Boolean(header?.visible)), [tableHeaders]);\n\n const table = useTable(\n {\n columns: optimizeTable ? visibleColumns : tableHeaders,\n data: [...data, ...(isLoading ? (data?.length ? cellLoaders : tableLoaders) : [])],\n defaultColumn: { minWidth: DEFAULT_COLUMN_MIN_WIDTH, width: DEFAULT_COLUMN_WIDTH, maxWidth: DEFAULT_COLUMN_MAX_WIDTH },\n },\n useResizeColumns,\n );\n\n const { getTableProps, getTableBodyProps, headerGroups, prepareRow, rows } = table;\n headerGroupsRef.current = headerGroups;\n\n const headerKeys = JSON.stringify(headerGroups[0]?.headers?.map((header) => (header as unknown as Record<string, unknown>)?.Header));\n useEffect(() => {\n if (setVisibleHeaders) {\n const groups = headerGroupsRef.current as Array<{ headers?: Array<Record<string, unknown>> }> | null;\n setVisibleHeaders?.(groups?.[0]?.headers?.map((header) => header?.Header as string) ?? []);\n }\n }, [headerKeys, setVisibleHeaders]);\n\n const { checkboxConfig } = useCheckbox({\n rows: rows as never,\n checkedIds: checkboxUtilities?.checkedIds as string[],\n isCheckAllDisabled: checkboxUtilities?.isCheckAllDisabled,\n selectionDisabledRowIds: checkboxUtilities?.selectionDisabledRowIds,\n rawData,\n onAllChecked: setIsAllChecked,\n setCheckedIds: checkboxUtilities?.setCheckedIds as (ids: string[]) => void,\n checkboxMetadata: checkboxUtilities?.checkboxMetadata as { checkedIds: string[]; tooltip: string; highlight: string },\n });\n\n const sensors = useSensors(\n useSensor(MouseSensor, { activationConstraint: { distance: DND_ACTIVATION_DISTANCE } }),\n useSensor(TouchSensor, { activationConstraint: { distance: DND_ACTIVATION_DISTANCE } }),\n );\n\n const dropAnimation: DropAnimation = { easing: DROP_ANIMATION_EASING, duration: DROP_ANIMATION_DURATION };\n\n function computeList() {\n if (!multipleContexts?.length || !withSortable) return rows;\n return multipleContexts.reduce((acc: Record<string, unknown>, contextKey: string) => {\n acc[contextKey] = rows.filter((e) => (e.original as Record<string, unknown>)?.type === contextKey);\n return acc;\n }, {});\n }\n computeListRef.current = computeList;\n\n const handleDragStart = (event: DragStartEvent) => {\n const { active } = event;\n setActiveItem(rows.find((item) => (item.original as Record<string, unknown>)?.id === active?.id) ?? null);\n };\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n if (!over) return;\n if (dndSortableUtils?.checkDndDragEnd) {\n dndSortableUtils.checkDndDragEnd(active, over, sortableListByContext, (newState: Record<string, unknown>) => {\n setSortableListByContext(newState as Record<string, unknown>);\n setDndLoading(true);\n dndSortableUtils.onDragSuccess?.({\n draggedId: active.id as string,\n droppedId: over.id as string,\n draggedType: (active.data.current as Record<string, unknown>)?.type,\n droppedType: (over.data.current as Record<string, unknown>)?.type,\n updatedList: newState,\n cb: () => setDndLoading(false),\n });\n });\n }\n setActiveItem(null);\n };\n\n const handleDragCancel = () => setActiveItem(null);\n\n const toggleHeaderOption = (key: string) => {\n if (!sortConfig?.onSort && !filterConfig?.onFilter) return;\n if (showHeaderOptions === key) setShowHeaderOptions(null);\n else setShowHeaderOptions(key);\n };\n\n const toggleDataFilterModal = (col: unknown) => {\n setDataFilterColumn(col);\n setShowDataFilterModal(!showDataFilterModal);\n setShowHeaderOptions(null);\n };\n\n const handleRemoveSort = useCallback(() => {\n if (sortConfig?.onRemoveSort) sortConfig.onRemoveSort();\n else if (sortConfig?.onSort) sortConfig.onSort('', '');\n }, [sortConfig]);\n\n const toggleShowFilters = useCallback((col: unknown = null) => {\n setNewFilterColumn(col);\n setShowFilters(prev => col ? true : !prev);\n }, []);\n const toggleShowSorts = useCallback(() => setShowSorts(prev => !prev), []);\n\n const lastNonStickyColumnIndex = () => {\n const reverseHeaders = (headerGroups[0]?.headers as unknown as Array<Record<string, unknown>>)?.filter((header) => header?.visible !== false);\n for (let i = 0; i < reverseHeaders.length; i++) {\n if (reverseHeaders[i].sticky) return i - 1;\n }\n return reverseHeaders.length - 1;\n };\n\n const getSumOfNextVisibleColumnWidth = useCallback(\n (currentIndex: number) => {\n let sum = 0;\n for (let i = currentIndex + 1; i < visibleColumns.length; i++) {\n if (visibleColumns[i].visible !== false) sum += visibleColumns[i].width ?? 0;\n }\n if (rowAdditionalActions) sum += rowAdditionalActionsWidth || ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH;\n if (rowOptions) sum += hideRowOptionWidth ? 0 : ROW_OPTIONS_COLUMN_WIDTH;\n return sum;\n },\n [visibleColumns, rowAdditionalActionsWidth, hideRowOptionWidth, rowAdditionalActions, rowOptions],\n );\n\n const resolveTableView = (): ITableView => {\n const userId = tableConfig?.getUserId?.();\n return {\n ...(selectedTableView || {}),\n name: selectedTableView?.name || 'Untitled View',\n created_by: selectedTableView?.created_by || userId,\n filters: selectedTableView?.filters || filterConfig?.columnFilters,\n id: selectedTableView?.id || 'untitled-view',\n table_key: selectedTableView?.table_key || tableKey,\n columns: selectedTableView?.columns || columns?.map((column, index) => ({\n name: column.Header,\n width: column.width,\n visible: column.visible,\n sticky: column.sticky,\n order: index + 1,\n display_name: column.Header,\n sequence: index + 1,\n Header: column.Header,\n })),\n };\n };\n resolveTableViewRef.current = resolveTableView;\n\n const handleUpdateColumnWidth = (columnName: string, width: number) => {\n if (isReadOnlyView) return;\n\n const updatedTableView = resolveTableView();\n setSelectedTableView({\n ...updatedTableView,\n columns: updatedTableView?.columns?.map((column) => (column.name === columnName ? { ...column, width } : column)),\n unsaved: true,\n });\n };\n\n useEffect(() => {\n if (filterConfig?.columnFilters?.length > 0) setShowFilters(true);\n if (isReadOnlyView) return;\n const currentView = selectedTableViewRef.current;\n if (JSON.stringify(currentView?.filters || []) !== JSON.stringify(filterConfig?.columnFilters || [])) {\n const hasViewFilters = (currentView?.filters?.length ?? 0) > 0;\n const hasConfigFilters = filterConfig?.columnFilters?.length > 0;\n // Skip sync only during the initial load window where the view already has filters\n // but they haven't propagated to columnFilters yet. If the user explicitly cleared\n // filters from ActiveFilters (X button or Clear), we must propagate the empty state.\n const isClearingFilters = hasViewFilters && !hasConfigFilters && !userClearedFiltersRef.current;\n if (!isClearingFilters) {\n const updatedTableView = resolveTableViewRef.current();\n setSelectedTableView({ ...updatedTableView, filters: JSON.parse(JSON.stringify(filterConfig?.columnFilters || [])), unsaved: true });\n }\n userClearedFiltersRef.current = false;\n }\n }, [filterConfig?.columnFilters, isReadOnlyView]);\n\n const handleActiveRemoveFilter = useCallback(\n (key: string) => {\n userClearedFiltersRef.current = true;\n filterConfig?.onRemoveFilter?.(key);\n },\n [filterConfig?.onRemoveFilter],\n );\n\n const handleActiveClearFilter = useCallback(() => {\n userClearedFiltersRef.current = true;\n filterConfig?.onClearFilter?.();\n }, [filterConfig?.onClearFilter]);\n\n useEffect(() => {\n if (sortConfig?.columnSort?.field) {\n setShowSorts(true);\n if (sortConfig.columnSort.order === 'asc') { setIsShowSortArrowAsc(sortConfig.columnSort.field); setIsShowSortArrowDesc(null); }\n else if (sortConfig.columnSort.order === 'desc') { setIsShowSortArrowDesc(sortConfig.columnSort.field); setIsShowSortArrowAsc(null); }\n } else { setIsShowSortArrowAsc(null); setIsShowSortArrowDesc(null); }\n }, [sortConfig?.columnSort?.field, sortConfig?.columnSort?.order]);\n\n useEffect(() => {\n setTableHeaders(mergeViewColumnsWithTableColumns(selectedTableViewRef.current?.columns || [], columns));\n }, [columns]);\n\n useEffect(() => {\n if (selectedTableView?.unsaved) tableConfigRef.current?.persistTableView?.(selectedTableView);\n }, [selectedTableView]);\n\n useEffect(() => { setSortableListByContext(computeListRef.current() as Record<string, unknown>); }, [rows.length]);\n\n useEffect(() => {\n setSelectedTableView(defaultTableView || null);\n if (defaultTableView?.columns) {\n setTableHeaders(mergeViewColumnsWithTableColumns(defaultTableView?.columns || [], columnsRef.current));\n }\n if (defaultTableView?.filters && defaultTableView.filters.length > 0 && !hasAppliedInitialFilters.current) {\n requestAnimationFrame(() => { filterConfigRef.current?.onFilter?.(defaultTableView.filters); });\n hasAppliedInitialFilters.current = true;\n } else if (defaultTableView?.filters && hasAppliedInitialFilters.current) {\n const filtersAreDifferent = JSON.stringify(defaultTableView.filters) !== JSON.stringify(filterConfigRef.current?.columnFilters);\n if (filtersAreDifferent) filterConfigRef.current?.onFilter?.(defaultTableView.filters);\n }\n }, [defaultTableView]);\n\n useEffect(() => {\n if (headerDivRef.current) {\n const resizeObserver = new ResizeObserver((entries) => setHeaderDivWidth(entries[0].contentRect.width));\n resizeObserver.observe(headerDivRef.current);\n return () => resizeObserver.disconnect();\n }\n }, []);\n\n useEffect(() => {\n if (!tableContainerRef.current) return;\n const resizeObserver = new ResizeObserver((entries) => {\n const { width, height } = entries[0].contentRect;\n setTableContainerSize({ width, height });\n });\n resizeObserver.observe(tableContainerRef.current);\n return () => resizeObserver.disconnect();\n }, []);\n\n const tableHeader = (\n <Head\n isResizable={isResizable}\n headerGroups={headerGroups as never}\n isCheckbox={isCheckbox}\n checkboxConfig={checkboxConfig}\n isAllChecked={isAllChecked}\n showHeaderOptions={showHeaderOptions ?? ''}\n setShowHeaderOptions={setShowHeaderOptions}\n isShowSortArrowAsc={isShowSortArrowAsc}\n isShowSortArrowDesc={isShowSortArrowDesc}\n onSort={sortConfig?.onSort as ((field: string, order?: string) => void) | undefined}\n onFilter={filterConfig?.onFilter}\n toggleHeaderOption={toggleHeaderOption}\n setIsShowSortArrowAsc={setIsShowSortArrowAsc}\n setIsShowSortArrowDesc={setIsShowSortArrowDesc}\n toggleDataFilterModal={toggleShowFilters}\n rowOptions={(Array.isArray(rowOptions) ? rowOptions : []) as unknown[]}\n isColumnConfigurable={isColumnConfigurable ?? false}\n onAddColumnClick={onAddColumnClick as (column: { id: string; key: string; [k: string]: unknown }) => void}\n onEditColumnClick={onEditColumnClick as (column: { id: string; key: string; [k: string]: unknown }) => void}\n onDeleteColumnClick={onDeleteColumnClick as (column: { id: string; key: string; [k: string]: unknown }) => void}\n tableActions={(tableActions || null)}\n isLoading={isLoading}\n rowAdditionalActions={(rowAdditionalActions ?? null) as (() => React.ReactNode) | null}\n showPendingEditsColumn={pendingEditsCount > 0}\n />\n );\n\n const tableView = (\n <>\n {dndLoading || isOverlayLoading ? (\n <div className='absolute left-0 top-0 w-full h-full z-40 flex items-center justify-center bg-neutral-100 dark:bg-black-700' />\n ) : null}\n <div\n {...getTableProps()}\n className='w-full text-sm text-left text-neutral-500 dark:text-neutral-200 h-full bg-white dark:bg-black-800'\n >\n {isEmpty ? (\n <div className='z-10'>\n {tableHeader}\n <div className='absolute w-full'>\n {tableConfig?.renderEmpty ? tableConfig.renderEmpty(emptySwitchProps) : (\n <div className='flex flex-col items-center justify-center w-full h-[12rem] text-neutral-900 dark:text-neutral-200 mt-8'>\n {noDataWidget && !isAnyFilters ? <NoDataFoundWidgets widgetType='TABLE' /> : <NoDataFound text={resolvedEmptyText} />}\n {isColumnConfigurable && !isAnyFilters ? (\n <div className='my-4'>\n <Button\n id='btn-table-shell-create-column'\n status='primary'\n appearance='ghost'\n onClick={onAddColumnClick as ((event: React.MouseEvent<HTMLButtonElement>) => void) | undefined}\n >\n <Add2Icon className='text-white dark:text-white' /> {translatedCreateColumnLabel}\n </Button>\n </div>\n ) : null}\n {!isAnyFilters &&\n buttons?.map((button, index) => (\n <Button key={`${button.label}-${index}`} status='secondary' id={getEmptyButtonId(button.label, index)} onClick={button.onClick}>\n {tableConfig?.t?.(button.label) ?? button.label}\n </Button>\n ))}\n </div>\n )}\n </div>\n </div>\n ) : (\n <AutoSizer\n style={{ width: '100%', height: '100%' }}\n renderProp={({ width, height }) => {\n const effectiveWidth = width > 0 ? width : tableContainerSize.width;\n const effectiveHeight = height > 0 ? height : tableContainerSize.height;\n return effectiveWidth > 0 && effectiveHeight > 0 ? (\n <Body\n {...{\n getTableBodyProps: getTableBodyProps as unknown as () => Record<string, unknown>, rows: rows as never, prepareRow: prepareRow as never, isLoading, onScroll, onScrolling, columns, width: effectiveWidth, height: effectiveHeight, withSortable,\n allowAstarSearch: searchConfig?.allowAStarSearch || false,\n }}\n />\n ) : null;\n }}\n />\n )}\n </div>\n </>\n );\n\n const tableWrapper = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>((props, ref) => (\n <div className='h-full w-full' {...props} ref={ref}>\n {tableHeader}\n <div className='relative w-full h-full'>{props?.children}</div>\n </div>\n ));\n\n const tableBodyWrapper = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>((props, ref) => (\n <div className='h-full w-full' {...props} ref={ref}>\n <div className='relative w-full h-full'>{props?.children}</div>\n </div>\n ));\n\n const TableHeaderComponent = useMemo(() => {\n if (tableConfig?.renderTableHeader) {\n return tableConfig.renderTableHeader({\n tableKey, search: searchConfig?.search, handleSearch: searchConfig?.handleSearch,\n toggleShowFilters, toggleShowSorts, filterCounts: filterConfig?.columnFilters?.length,\n columns, columnFilters: filterConfig?.columnFilters, setSelectedTableView, selectedTableView,\n enableTableView: headerConfig?.showTableView, modelName: modelName as string,\n enableMasterDataEnumSuggestions,\n onRemoveFilter: filterConfig?.onRemoveFilter, onClearFilter: filterConfig?.onClearFilter,\n onFilter: filterConfig?.onFilter, data: enumSuggestionsData ?? data, tableHeaders, showTableViewAsModal: headerConfig?.showTableViewAsModal,\n additionalOptions: headerConfig?.additionalOptions, inlineActions: headerConfig?.inlineActions, showFilters: headerConfig?.showFilters,\n showSorts: headerConfig?.showSorts, showSearch: headerConfig?.showSearch,\n isLoading: Boolean(headerConfig?.isLoading), setTableHeaders,\n allowAStarSearch: Boolean(searchConfig?.allowAStarSearch), withContent: !!headerConfig?.content,\n setShowFilters, sort: sortConfig?.columnSort, onSort: sortConfig?.onSort, onRemoveSort: handleRemoveSort,\n showExportButton: headerConfig?.showExportButton,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId\n });\n }\n return null;\n }, [\n tableKey, searchConfig?.search, searchConfig?.handleSearch, toggleShowFilters, toggleShowSorts,\n filterConfig?.columnFilters, columns, setSelectedTableView, selectedTableView, headerConfig,\n modelName, filterConfig?.onRemoveFilter, filterConfig?.onClearFilter, filterConfig?.onFilter,\n data, enumSuggestionsData, tableHeaders, sortConfig?.columnSort, sortConfig?.onSort, handleRemoveSort, tableConfig,\n searchConfig?.allowAStarSearch, enableMasterDataEnumSuggestions,agreementCategoryId, agreementDomainId, agreementId,modificationId,lineItemRowId,\n ]);\n\n useEffect(() => {\n if (setHeaderOnParent) setHeaderOnParent(TableHeaderComponent);\n }, [TableHeaderComponent, setHeaderOnParent]);\n\n return (\n <TableContext.Provider\n value={{\n tableWrapper, tableBodyWrapper, lastNonStickyColumnIndex, search: searchConfig?.search,\n columnFilters: filterConfig?.columnFilters, onRowClick, onSort: sortConfig?.onSort,\n onFilter: filterConfig?.onFilter, toggleShowFilters, toggleShowSorts,\n onRemoveFilter: filterConfig?.onRemoveFilter, onClearFilter: filterConfig?.onClearFilter,\n rowOptions, checkboxConfig, onResetFilter: filterConfig?.onResetFilter, isColumnConfigurable,\n onAddColumnClick, onEditColumnClick, onDeleteColumnClick, onRowTooltipClick, tooltiptext,\n cascadingTableConfig, activeInlineEdit, setActiveInlineEdit, originalsOnly,\n disableOptionsForRowIndex, getFullRowDataOnClick, selectedRowId, getSumOfNextVisibleColumnWidth,\n onRowEdit, inlineEditColumns, tableActions, dndSortableUtils, withSortable, withDraggable,\n onCascadingRowExpand, getInnerRowData, tableHeaders, maxLevel, expandedRows, setExpandedRows,\n showNewItem, rawData, dragConfig, rowWrapper, rowLinkConfig, isCellClickDisabled,\n asyncRowOptionsFilter: filterConfig?.asyncRowOptionsFilter, handleUpdateColumnWidth,\n isTableViewReadOnly: isReadOnlyView,\n multiSelectConfig, headerContextOptions, showHeaderContextOptions, setShowHeaderContextOptions: setShowHeaderContextOptions as ((value: string | null) => void) | undefined,\n headerDivWidth, showDataTypeIcon, rowAdditionalActions, hoverConfig, rowAdditionalActionsWidth,\n cellEditing, cellEditingValue, openMasterDataModal, closeMasterDataModal, selectedMasterData,\n clearSelectedMasterData, allowInlineEdit, openCurrencyDropdown, closeCurrencyDropdown,\n currencyDropdownConfig, selectedCurrenciesMap, setCurrencyForCell, getCurrencyForCell,\n pendingEdits, addPendingEdit, removePendingEdit, getPendingEdit, hasPendingEdit,\n clearAllPendingEdits, saveAllPendingEdits, clearRowPendingEdits, saveRowPendingEdits,\n pendingEditsCount, scrollToCell, onFieldOperationFlow, fieldOperationLoading, validateAllPendingEdits,\n }}\n >\n {showHeader ? (\n <div\n ref={headerDivRef}\n className={`mb-2 flex w-full min-w-0 gap-2 dark:bg-black-800 ${\n headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? 'flex-col items-stretch' : 'flex-row items-center'\n }`}\n >\n <div\n className={`flex items-center gap-x-2 gap-y-1 ${\n headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? 'w-full flex-wrap' : ''\n } ${headerConfig?.content ? 'min-w-0 flex-1' : 'shrink-0'}`}\n >\n {headerConfig?.content ? (\n <div className={`min-w-0 ${headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? 'w-full' : 'flex-1'}`}>\n {headerConfig.content}\n </div>\n ) : null}\n {showRecordCount ? (\n <div className='flex items-center gap-1.5 shrink-0'>\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width='16'\n height='16'\n viewBox='0 0 24 24'\n fill='none'\n stroke='currentColor'\n strokeWidth='2'\n strokeLinecap='round'\n strokeLinejoin='round'\n className='text-neutral-500 dark:text-neutral-400 flex-shrink-0'\n aria-hidden\n >\n <ellipse cx='12' cy='5' rx='9' ry='3' />\n <path d='M3 5v4c0 1.66 4.03 3 9 3s9-1.34 9-3V5' />\n <path d='M3 9v4c0 1.66 4.03 3 9 3s9-1.34 9-3V9' />\n <path d='M3 13v4c0 1.66 4.03 3 9 3s9-1.34 9-3v-4' />\n </svg>\n <Typography size='small' variant='semibold' appearance='title'>\n {(totalItems ?? data.length).toLocaleString()}\n </Typography>\n <Typography size='small' variant='regular' appearance='subtitle'>\n total records\n </Typography>\n </div>\n ) : headerConfig?.preContent ? (\n <div className='flex min-w-0 shrink-0 justify-start items-center'>{headerConfig.preContent}</div>\n ) : null}\n </div>\n <div\n className={`flex min-w-0 items-center justify-end ${\n headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? 'w-full' : headerConfig?.content ? 'shrink-0' : 'flex-1'\n } ${headerDivWidth < TOOLBAR_SECOND_BREAKPOINT ? 'flex-col' : 'flex-row'} ${\n headerConfig?.postContent ? 'gap-2' : ''\n }`}\n >\n {showRecordCount && headerConfig?.preContent ? (\n <div className='flex w-full justify-start items-center'>{headerConfig.preContent}</div>\n ) : null}\n <div\n className={`flex justify-end items-center min-w-0 ${\n headerDivWidth < TOOLBAR_SECOND_BREAKPOINT ? 'w-full' : headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? 'w-full' : ''\n }`}\n >\n {TableHeaderComponent}\n </div>\n {headerConfig?.postContent ? (\n <div className={`flex justify-end items-center ${headerDivWidth < TOOLBAR_SECOND_BREAKPOINT ? 'w-full' : ''}`}>\n {headerConfig.postContent}\n </div>\n ) : null}\n </div>\n </div>\n ) : null}\n {headerConfig?.showDivider ? <div className='border-b pb-2 w-full dark:bg-black-800' /> : null}\n {showFilters || showSorts ? (\n <div className='flex justify-between items-center pb-4 dark:bg-black-800'>\n <div className='flex gap-2 items-center'>\n {showSorts && tableConfig?.renderSortItem ? (\n tableConfig.renderSortItem({ sort: sortConfig?.columnSort, onRemoveSort: handleRemoveSort, onSort: sortConfig?.onSort, tableHeaders, data, disabled: isReadOnlyView })\n ) : null}\n {showFilters && showSorts && sortConfig?.columnSort?.field !== '' ? (\n <div className='h-8 w-[1px] flex-shrink-0 bg-neutral-200' />\n ) : null}\n {showFilters ? (\n <div className='flex gap-2 items-center'>\n {(isFilters || filterConfig?.onResetFilter) && tableConfig?.renderActiveFilters && (\n tableConfig.renderActiveFilters({\n filters: filterConfig?.columnFilters, onRemoveFilter: handleActiveRemoveFilter,\n onClearFilter: handleActiveClearFilter, onResetFilter: filterConfig?.onResetFilter,\n onFilter: filterConfig?.onFilter, tableHeaders, columnFilters: filterConfig?.columnFilters,\n modelName, enableMasterDataEnumSuggestions, noSpacing: true, notionStyle: filterConfig?.notionStyle, context: filterConfig?.context, data: enumSuggestionsData ?? data,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId,\n disabled: isReadOnlyView,\n })\n )}\n {tableConfig?.renderFilterButtons && (\n tableConfig.renderFilterButtons({\n onClearFilter: filterConfig?.onClearFilter, onClose: toggleDataFilterModal,\n modelName, enableMasterDataEnumSuggestions, defaultFilterColumn: newFilterColumn, resetDefaultFilterColumn: () => setNewFilterColumn(null),\n column: dataFilterColumn, onFilter: filterConfig?.onFilter, tableHeaders,\n columnFilters: filterConfig?.columnFilters, data: enumSuggestionsData ?? data, notionStyle: filterConfig?.notionStyle,\n context: filterConfig?.context,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId,\n disabled: isReadOnlyView,\n })\n )}\n </div>\n ) : null}\n </div>\n </div>\n ) : null}\n {floatingBarConfig && Object.keys(floatingBarConfig).length ? <FloatingBar {...floatingBarConfig} /> : null}\n {!showHeader && showRecordCount ? (\n <div className='flex items-center gap-1.5 mb-2'>\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width='16'\n height='16'\n viewBox='0 0 24 24'\n fill='none'\n stroke='currentColor'\n strokeWidth='2'\n strokeLinecap='round'\n strokeLinejoin='round'\n className='text-neutral-500 dark:text-neutral-400 flex-shrink-0'\n aria-hidden\n >\n <ellipse cx='12' cy='5' rx='9' ry='3' />\n <path d='M3 5v4c0 1.66 4.03 3 9 3s9-1.34 9-3V5' />\n <path d='M3 9v4c0 1.66 4.03 3 9 3s9-1.34 9-3V9' />\n <path d='M3 13v4c0 1.66 4.03 3 9 3s9-1.34 9-3v-4' />\n </svg>\n <Typography size='small' variant='semibold' appearance='title'>\n {(totalItems ?? data.length).toLocaleString()}\n </Typography>\n <Typography size='small' variant='regular' appearance='subtitle'>\n total records\n </Typography>\n </div>\n ) : !showHeader && headerConfig?.preContent ? (\n <div className='flex items-center mb-2'>{headerConfig.preContent}</div>\n ) : null}\n <div\n ref={tableContainerRef}\n className={`w-full ${paginationConfig ? `h-auto` : tableHeightClass} rounded-lg relative border overflow-x-hidden`}\n style={{\n ...(paginationConfig\n ? { height: data?.length > 0 ? `${(data?.length + 1) * rowSlotHeight + 4}px` : '350px' }\n : { height: fallbackHeight }),\n ...style,\n }}\n >\n {enableRootDrag ? (\n tableView\n ) : (\n <DndContext sensors={sensors} onDragEnd={handleDragEnd} onDragStart={handleDragStart} onDragCancel={handleDragCancel} collisionDetection={closestCorners}>\n {tableView}\n {activeItem\n ? createPortal(\n <DragOverlay adjustScale={true} dropAnimation={dropAnimation}>\n <table {...getTableProps()} className='w-full text-sm text-left text-neutral-500 dark:text-neutral-200 bg-white dark:bg-black-700 table-auto border-collapse'>\n <tbody {...getTableBodyProps()} className='bg-transparent divide-y divide-neutral-200'>\n {void prepareRow(activeItem)}\n <Row key={(activeItem.original as Record<string, unknown>).id as string} row={activeItem as never} index={rows?.findIndex((item) => item.id === (activeItem.original as Record<string, unknown>).id)} />\n </tbody>\n </table>\n </DragOverlay>,\n document.getElementById('full-screen-container') || document.body,\n )\n : null}\n </DndContext>\n )}\n </div>\n {paginationConfig && tableConfig?.renderPagination ? tableConfig.renderPagination(paginationConfig) : null}\n\n {tableConfig?.renderMasterDataModal && tableConfig.renderMasterDataModal({\n isVisible: !!masterDataModalConfig, onSelected: handleMasterDataSelected, onClose: closeMasterDataModal,\n masterDataColumnName: masterDataModalConfig?.masterDataColumnName, masterDataFilters: masterDataModalConfig?.masterDataFilters,\n masterDataName: masterDataModalConfig?.masterDataName, masterDataId: masterDataModalConfig?.masterDataName, showFilters: true,\n })}\n\n <CurrencyDropdownPortal config={currencyDropdownConfig} onClose={closeCurrencyDropdown} />\n\n <PendingEditsFloatingBar\n pendingEditsCount={pendingEditsCount}\n pendingEditsList={pendingEditsList}\n rowsWithPendingEdits={rowsWithPendingEdits}\n fieldOperationLoading={fieldOperationLoading}\n onClearAll={clearAllPendingEdits}\n onSaveAll={saveAllPendingEdits}\n onScrollToCell={scrollToCell}\n />\n </TableContext.Provider>\n );\n },\n);\n"],"names":["AutoSizer","_AutoSizer","CREATE_COLUMN_LABEL","getEmptyButtonId","label","index","InfiniteTable","React","tableKey","searchConfig","filterConfig","sortConfig","headerConfig","hoverConfig","columns","modelName","enableMasterDataEnumSuggestions","agreementCategoryId","agreementDomainId","agreementId","modificationId","lineItemRowId","enumSuggestionsData","data","onRowClick","showHeader","tableActions","rowOptions","hideRowOptionWidth","checkboxUtilities","isLoading","onScroll","onScrolling","isColumnConfigurable","onAddColumnClick","emptyMessage","noDataWidget","buttons","onEditColumnClick","onDeleteColumnClick","onRowTooltipClick","tooltiptext","cascadingTableConfig","originalsOnly","disableOptionsForRowIndex","tableHeightClass","getFullRowDataOnClick","selectedRowId","onRowEdit","onBulkRowEdit","inlineEditColumns","isResizable","paginationConfig","dndSortableUtils","multipleContexts","withSortable","withDraggable","enableRootDrag","pageSize","DEFAULT_PAGE_SIZE","onCascadingRowExpand","totalItems","showRecordCount","getInnerRowData","maxLevel","expandedRows","setExpandedRows","showNewItem","rawData","dragConfig","isOverlayLoading","style","floatingBarConfig","rowWrapper","rowLinkConfig","isCellClickDisabled","setHeaderOnParent","optimizeTable","multiSelectConfig","headerContextOptions","showHeaderContextOptions","setShowHeaderContextOptions","showDataTypeIcon","rowAdditionalActions","rowAdditionalActionsWidth","setVisibleHeaders","cellEditing","cellEditingValue","allowInlineEdit","onFieldOperationFlow","fieldOperationLoading","onTableActionsReady","onPendingEditsChange","onCancelPendingEdits","tableConfig","useTableConfig","rowSlotHeight","getRowSlotHeight","useRowHeight","isSearch","isFilters","isAnyFilters","isCheckbox","defaultTableView","selectedTableView","setSelectedTableView","useState","isReadOnlyView","canEditTableView","showFilters","setShowFilters","showSorts","setShowSorts","newFilterColumn","setNewFilterColumn","tableHeaders","setTableHeaders","isEmpty","showHeaderOptions","setShowHeaderOptions","showDataFilterModal","setShowDataFilterModal","dataFilterColumn","setDataFilterColumn","isAllChecked","setIsAllChecked","isShowSortArrowAsc","setIsShowSortArrowAsc","isShowSortArrowDesc","setIsShowSortArrowDesc","sortableListByContext","setSortableListByContext","activeItem","setActiveItem","dndLoading","setDndLoading","headerDivWidth","setHeaderDivWidth","headerDivRef","useRef","tableContainerRef","tableContainerSize","setTableContainerSize","activeInlineEdit","setActiveInlineEdit","masterDataModalConfig","setMasterDataModalConfig","selectedMasterData","setSelectedMasterData","currencyDropdownConfig","setCurrencyDropdownConfig","selectedCurrenciesMap","setSelectedCurrenciesMap","hasAppliedInitialFilters","userClearedFiltersRef","selectedTableViewRef","tableConfigRef","columnsRef","filterConfigRef","headerGroupsRef","resolveTableViewRef","computeListRef","pendingEdits","setPendingEdits","addPendingEdit","useCallback","rowId","columnKey","edit","prev","existingEdit","resolvedValidationError","column","col","result","validateCellValue","hasPendingEdits","rowEdits","useEffect","removePendingEdit","newEdits","_removed","rest","getPendingEdit","hasPendingEdit","clearAllPendingEdits","scrollToCell","rowIndex","colIndex","cellElement","DATA_ROW_ID_ATTR","DATA_COLUMN_KEY_ATTR","scrollContainer","OS_VIEWPORT_SELECTOR","scrollLeft","i","SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK","SCROLL_TO_CELL_LEFT_OFFSET","validateAllPendingEdits","editsToValidate","hasErrors","firstError","updatedEdits","errorTypes","getValidationToastMessage","hasRequired","hasFormat","saveAllPendingEdits","row","editedRows","originalRow","updatedRow","editedFields","clearRowPendingEdits","n","k","saveRowPendingEdits","editedRowData","pendingEditsCount","useMemo","total","pendingEditsList","list","rowsWithPendingEdits","rowsMap","a","b","openMasterDataModal","config","closeMasterDataModal","handleMasterDataSelected","value","clearSelectedMasterData","openCurrencyDropdown","closeCurrencyDropdown","setCurrencyForCell","cellKey","currency","getCurrencyForCell","fallbackHeight","pxMatch","calcMatch","emptySwitchProps","translatedCreateColumnLabel","defaultEmptyText","resolvedEmptyText","loaderData","cellLoaders","tableLoaders","visibleColumns","header","table","useTable","DEFAULT_COLUMN_MIN_WIDTH","DEFAULT_COLUMN_WIDTH","DEFAULT_COLUMN_MAX_WIDTH","useResizeColumns","getTableProps","getTableBodyProps","headerGroups","prepareRow","rows","headerKeys","groups","checkboxConfig","useCheckbox","sensors","useSensors","useSensor","MouseSensor","DND_ACTIVATION_DISTANCE","TouchSensor","dropAnimation","DROP_ANIMATION_EASING","DROP_ANIMATION_DURATION","computeList","acc","contextKey","e","handleDragStart","event","active","item","handleDragEnd","over","newState","handleDragCancel","toggleHeaderOption","key","toggleDataFilterModal","handleRemoveSort","toggleShowFilters","toggleShowSorts","lastNonStickyColumnIndex","reverseHeaders","getSumOfNextVisibleColumnWidth","currentIndex","sum","ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH","ROW_OPTIONS_COLUMN_WIDTH","resolveTableView","userId","handleUpdateColumnWidth","columnName","width","updatedTableView","currentView","hasViewFilters","hasConfigFilters","handleActiveRemoveFilter","handleActiveClearFilter","mergeViewColumnsWithTableColumns","resizeObserver","entries","height","tableHeader","jsx","Head","tableView","jsxs","Fragment","NoDataFoundWidgets","NoDataFound","Button","Add2Icon","button","effectiveWidth","effectiveHeight","Body","tableWrapper","forwardRef","props","ref","tableBodyWrapper","TableHeaderComponent","TableContext","TOOLBAR_FIRST_BREAKPOINT","Typography","TOOLBAR_SECOND_BREAKPOINT","FloatingBar","DndContext","closestCorners","createPortal","DragOverlay","Row","CurrencyDropdownPortal","PendingEditsFloatingBar"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA2CA,MAAMA,KAAYC,IAKZC,KAAsB,iBAEtBC,KAAmB,CAACC,GAAeC,MAEhC,gBADMD,EAAM,YAAA,EAAc,KAAA,EAAO,QAAQ,QAAQ,GAAG,EAAE,QAAQ,gBAAgB,EAAE,KACxDC,CAAK,IAGzBC,KAAgBC,GAAM;AAAA,EACjC,CAAC;AAAA,IACC,UAAAC;AAAA,IACA,cAAAC,IAAe,EAAE,QAAQ,IAAI,cAAc,MAAM,MAAM,kBAAkB,GAAA;AAAA,IACzE,cAAAC,IAAe;AAAA,MACb,eAAe,CAAA;AAAA,MACf,UAAU,MAAM;AAAA,MAChB,gBAAgB,MAAM;AAAA,MACtB,eAAe,MAAM;AAAA,MACrB,eAAe,MAAM,QAAQ,QAAQ,EAAE;AAAA,MACvC,uBAAuB,MAAM,QAAQ,QAAQ,CAAA,CAAE;AAAA,IAAA;AAAA,IAEjD,YAAAC,IAAa,EAAE,QAAQ,MAAM,MAAM,YAAY,EAAE,OAAO,IAAI,OAAO,GAAA,GAAM,cAAc,MAAM,KAAA;AAAA,IAC7F,cAAAC,IAAe;AAAA,MACb,kBAAkB;AAAA,MAClB,aAAa;AAAA,MACb,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,sBAAsB;AAAA,MACtB,SAAS;AAAA,MACT,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,aAAa;AAAA,IAAA;AAAA,IAEf,aAAAC,KAAc;AAAA,IACd,SAAAC;AAAA,IACA,WAAAC;AAAA,IACA,iCAAAC,IAAkC;AAAA,IAClC,qBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,MAAAC,IAAO,CAAA;AAAA,IACP,YAAAC;AAAA,IACA,YAAAC;AAAA,IACA,cAAAC;AAAA,IACA,YAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,WAAAC,KAAY;AAAA,IACZ,UAAAC;AAAA,IACA,aAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,cAAAC;AAAA,IACA,SAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,2BAAAC;AAAA,IACA,kBAAAC,KAAmB;AAAA,IACnB,uBAAAC;AAAA,IACA,eAAAC,KAAgB;AAAA,IAChB,WAAAC;AAAA,IACA,eAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,aAAAC,KAAc;AAAA,IACd,kBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,eAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,UAAAC,KAAWC;AAAA,IACX,sBAAAC;AAAA,IACA,YAAAC;AAAA,IACA,iBAAAC,KAAkB;AAAA,IAClB,iBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,cAAAC,KAAe,CAAA;AAAA,IACf,iBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,SAAAC;AAAA,IACA,YAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,OAAAC,KAAQ,CAAA;AAAA,IACR,mBAAAC;AAAA,IACA,YAAAC;AAAA,IACA,eAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,eAAAC,KAAgB;AAAA,IAChB,mBAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,0BAAAC;AAAA,IACA,6BAAAC;AAAA,IACA,kBAAAC,KAAmB;AAAA,IACnB,sBAAAC;AAAA,IACA,2BAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,aAAAC,KAAc;AAAA,IACd,kBAAAC,KAAmB;AAAA,IACnB,iBAAAC,KAAkB;AAAA,IAClB,sBAAAC;AAAA,IACA,uBAAAC,IAAwB;AAAA,IACxB,qBAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,sBAAAC;AAAA,EAAA,MACiB;AACjB,UAAMC,IAAcC,GAAA,GAIdC,KAAgBC,GAAiBC,IAAc,GAE/CC,KAAW,EAAQ1F,GAAc,QAEjC2F,KAAY1F,GAAc,eAAe,SAAS,GAClD2F,IAAeF,MAAYC,IAE3BE,KAAa,EAAQzE,GAErB0E,IAAmBT,GAAa,eAAetF,CAAkB,KAAK,MACtE,CAACgG,GAAmBC,CAAoB,IAAIC,EAA4BH,KAAoB,IAAI,GAChGI,IAAiB,CAACC,GAAiBJ,GAAmBV,GAAa,aAAa,GAChF,CAACe,IAAaC,EAAc,IAAIJ,EAAS,EAAK,GAC9C,CAACK,IAAWC,EAAY,IAAIN,EAAS,EAAK,GAC1C,CAACO,IAAiBC,EAAkB,IAAIR,EAAkB,IAAI,GAC9D,CAACS,GAAcC,EAAe,IAAIV,EAAoB5F,CAAO,GAC7DuG,MAAW9F,EAAK,WAAW,KAAK,CAAC4F,EAAa,WAAW,CAACrF,IAC1D,CAACwF,IAAmBC,EAAoB,IAAIb,EAAwB,IAAI,GACxE,CAACc,IAAqBC,EAAsB,IAAIf,EAAkB,EAAK,GACvE,CAACgB,IAAkBC,EAAmB,IAAIjB,EAAkB,IAAI,GAChE,CAACkB,IAAcC,EAAe,IAAInB,EAAS,EAAK,GAChD,CAACoB,IAAoBC,EAAqB,IAAIrB,EAAwB,IAAI,GAC1E,CAACsB,IAAqBC,EAAsB,IAAIvB,EAAwB,IAAI,GAC5E,CAACwB,IAAuBC,EAAwB,IAAIzB,EAAkC,CAAA,CAAE,GACxF,CAAC0B,GAAYC,EAAa,IAAI3B,EAAuC,IAAI,GACzE,CAAC4B,IAAYC,EAAa,IAAI7B,EAAkB,EAAK,GACrD,CAAC8B,GAAgBC,EAAiB,IAAI/B,EAAS,CAAC,GAChDgC,KAAeC,EAAuB,IAAI,GAC1CC,KAAoBD,EAAuB,IAAI,GAC/C,CAACE,IAAoBC,EAAqB,IAAIpC,EAAS,EAAE,OAAO,GAAG,QAAQ,GAAG,GAC9E,CAACqC,IAAkBC,CAAmB,IAAItC,EAAsD,IAAI,GACpG,CAACuC,GAAuBC,EAAwB,IAAIxC,EAAwC,IAAI,GAChG,CAACyC,IAAoBC,EAAqB,IAAI1C,EAAwD,IAAI,GAC1G,CAAC2C,IAAwBC,EAAyB,IAAI5C,EAAyC,IAAI,GACnG,CAAC6C,IAAuBC,CAAwB,IAAI9C,EAAiC,CAAA,CAAE,GACvF+C,KAA2Bd,EAAO,EAAK,GACvCe,KAAwBf,EAAO,EAAK,GAEpCgB,KAAuBhB,EAAOnC,CAAiB;AACrD,IAAAmD,GAAqB,UAAUnD;AAC/B,UAAMoD,KAAiBjB,EAAO7C,CAAW;AACzC,IAAA8D,GAAe,UAAU9D;AACzB,UAAM+D,KAAalB,EAAO7H,CAAO;AACjC,IAAA+I,GAAW,UAAU/I;AACrB,UAAMgJ,KAAkBnB,EAAOjI,CAAY;AAC3C,IAAAoJ,GAAgB,UAAUpJ;AAC1B,UAAMqJ,KAAkBpB,EAAyB,IAAI,GAC/CqB,KAAsBrB,EAAyB,OAAO,CAAA,EAAiB,GACvEsB,KAAiBtB,EAAsB,OAAO,CAAA,EAAG,GAEjD,CAACuB,GAAcC,CAAe,IAAIzD,EAA0B,CAAA,CAAE,GAE9D0D,KAAiBC;AAAA,MACrB,CAACC,GAAeC,GAAmBC,MAAuB;AACxD,QAAAL,EAAgB,CAACM,MAAS;AACxB,gBAAMC,IAAeD,EAAKH,CAAK,IAAIC,CAAS;AAC5C,cAAII,IAAqDH,EAAK;AAC9D,cAAIG,MAA4B,QAAW;AACzC,kBAAMC,IAASzD,EAAa,KAAK,CAAC0D,MAAQA,EAAI,QAAQN,CAAS;AAC/D,gBAAIK,GAAQ;AACV,oBAAME,IAASC,GAAkBP,EAAK,OAAOI,CAAkD;AAC/F,cAAAD,IAA2BG,EAAO,UAAwC,OAA7BA,EAAO,SAAS;AAAA,YAC/D;AACE,cAAAH,IAA0BD,GAAc,mBAAmB;AAAA,UAE/D;AACA,iBAAO,EAAE,GAAGD,GAAM,CAACH,CAAK,GAAG,EAAE,GAAIG,EAAKH,CAAK,KAAK,CAAA,GAAK,CAACC,CAAS,GAAG,EAAE,GAAGC,GAAM,iBAAiBG,KAA2B,KAAA,IAAO;AAAA,QAClI,CAAC;AAAA,MACH;AAAA,MACA,CAACxD,CAAY;AAAA,IAAA,GAGT6D,KAAkBX,EAAY,MAC3B,OAAO,OAAOH,CAAY,EAAE,KAAK,CAACe,MAAa,OAAO,KAAKA,CAAQ,EAAE,SAAS,CAAC,GACrF,CAACf,CAAY,CAAC;AAEjB,IAAAgB,EAAU,MAAM;AACd,MAAIvF,MAAqBA,GAAoB,EAAE,gBAAAyE,IAAiJ,iBAAAY,IAAiB;AAAA,IACnN,GAAG,CAACrF,IAAqByE,IAAgBY,EAAe,CAAC;AAEzD,UAAMG,KAAoBd,EAAY,CAACC,GAAeC,MAAsB;AAC1E,MAAAJ,EAAgB,CAACM,MAAS;AACxB,cAAMW,IAAW,EAAE,GAAGX,EAAA;AACtB,YAAIW,EAASd,CAAK,GAAG;AACnB,gBAAM,EAAE,CAACC,CAAS,GAAGc,GAAU,GAAGC,EAAA,IAASF,EAASd,CAAK;AACzD,UAAI,OAAO,KAAKgB,CAAI,EAAE,WAAW,IAAG,OAAOF,EAASd,CAAK,IACpDc,EAASd,CAAK,IAAIgB;AAAA,QACzB;AACA,eAAOF;AAAA,MACT,CAAC;AAAA,IACH,GAAG,CAAA,CAAE,GAECG,KAAiBlB;AAAA,MACrB,CAACC,GAAeC,MAAgDL,EAAaI,CAAK,IAAIC,CAAS;AAAA,MAC/F,CAACL,CAAY;AAAA,IAAA,GAGTsB,KAAiBnB;AAAA,MACrB,CAACC,GAAeC,MAA+B,EAAQL,EAAaI,CAAK,IAAIC,CAAS;AAAA,MACtF,CAACL,CAAY;AAAA,IAAA,GAGTuB,KAAuBpB,EAAY,MAAM;AAC7C,MAAI3E,MACAG,KAAwB,OAAO,KAAKqE,CAAY,EAAE,SAAS,OAAwBA,CAAY,GACnGC,EAAgB,CAAA,CAAE,GAClBX,EAAyB,CAAA,CAAE,GAC3BR,EAAoB,IAAI;AAAA,IAC1B,GAAG,CAACtD,GAAuBG,GAAsBqE,CAAY,CAAC,GAExDwB,IAAerB;AAAA,MACnB,CAACC,GAAeC,GAAmBoB,MAAqB;AACtD,mBAAW,MAAM;AACf,UAAA7F,GAAa,gBAAgB,uBAAuB,EAAE,UAAA6F,EAAA,CAAU;AAChE,gBAAMC,IAAWzE,EAAa,UAAU,CAAC0D,MAAQA,EAAI,QAAQN,CAAS;AACtE,qBAAW,MAAM;AACf,kBAAMsB,IAAc,SAAS,cAAc,IAAIC,EAAgB,KAAKxB,CAAK,OAAOyB,EAAoB,KAAKxB,CAAS,IAAI;AACtH,gBAAIsB;AACF,cAAAA,EAAY,eAAe,EAAE,UAAU,UAAU,OAAO,UAAU,QAAQ,UAAU;AAAA,qBAC3ED,IAAW,GAAG;AACvB,oBAAMI,IAAkB,SAAS,cAAcC,EAAoB;AACnE,kBAAID,GAAiB;AACnB,oBAAIE,IAAa;AACjB,yBAASC,IAAI,GAAGA,IAAIP,GAAUO,KAAK;AACjC,wBAAMtB,IAAM1D,EAAagF,CAAC;AAC1B,kBAAKtB,GAAK,WAAQqB,KAAcrB,GAAK,SAASuB;AAAA,gBAChD;AACA,gBAAAF,IAAa,KAAK,IAAI,GAAGA,IAAaG,EAA0B,GAChEL,EAAgB,SAAS,EAAE,MAAME,GAAY,UAAU,UAAU;AAAA,cACnE;AAAA,YACF;AACA,YAAAlD,EAAoB,EAAE,OAAAsB,GAAO,WAAAC,GAAW;AAAA,UAC1C,GAAG,GAAG;AAAA,QACR,GAAG,GAAG;AAAA,MACR;AAAA,MACA,CAACpD,GAAcrB,CAAW;AAAA,IAAA,GAGtBwG,IAA0BjC;AAAA,MAC9B,CAACkC,MAA8K;AAC7K,YAAIC,IAAY,IACZC,IAA0D;AAC9D,cAAMC,IAAgC,CAAA,GAChCC,wBAAiB,IAAA;AAEvB,sBAAO,QAAQJ,CAAe,EAAE,QAAQ,CAAC,CAACjC,GAAOW,CAAQ,MAAM;AAC7D,UAAAyB,EAAapC,CAAK,IAAI,CAAA,GACtB,OAAO,QAAQW,CAAQ,EAAE,QAAQ,CAAC,CAACV,GAAWC,CAAI,MAAM;AACtD,kBAAMI,IAASzD,EAAa,KAAK,CAAC0D,MAAQA,EAAI,QAAQN,CAAS,GACzDO,IAASC,GAAkBP,EAAK,OAAOI,CAAkD;AAC/F,YAAKE,EAAO,UAMV4B,EAAapC,CAAK,EAAEC,CAAS,IAAI,EAAE,GAAGC,GAAM,iBAAiB,KAAA,KAL7DgC,IAAY,IACR1B,EAAO,SAAO6B,EAAW,IAAI7B,EAAO,KAAK,GACxC2B,MAAYA,IAAa,EAAE,OAAAnC,GAAO,WAAAC,EAAA,IACvCmC,EAAapC,CAAK,EAAEC,CAAS,IAAI,EAAE,GAAGC,GAAM,iBAAiBM,EAAO,MAAA;AAAA,UAIxE,CAAC;AAAA,QACH,CAAC,GAEM,EAAE,WAAA0B,GAAW,cAAAE,GAAc,YAAAD,GAAY,YAAAE,EAAA;AAAA,MAChD;AAAA,MACA,CAACxF,CAAY;AAAA,IAAA,GAGTyF,KAA4BvC,EAAY,CAACsC,MAA4B;AACzE,YAAME,IAAcF,EAAW,IAAI,gBAAgB,GAC7CG,IAAYH,EAAW,QAAQE,IAAc,IAAI;AACvD,aAAIA,KAAeC,IAAkB,+FACjCD,IAAoB,mEACjB;AAAA,IACT,GAAG,CAAA,CAAE,GAECE,KAAsB1C,EAAY,MAAM;AAC5C,YAAM,EAAE,WAAAmC,GAAW,cAAAE,GAAc,YAAAD,GAAY,YAAAE,EAAA,IAAeL,EAAwBpC,CAAY;AAChG,UAAIsC,GAAW;AAGb,YAFArC,EAAgBuC,CAAY,GAC5B5G,GAAa,mBAAmB,SAAS8G,GAA0BD,CAAU,CAAC,GAC1EF,GAAY;AACd,gBAAMd,IAAWpK,EAAK,UAAU,CAACyL,MAAiCA,EAAI,OAAOP,EAAY,KAAK;AAC9F,UAAAf,EAAae,EAAY,OAAOA,EAAY,WAAWd,CAAQ;AAAA,QACjE;AACA;AAAA,MACF;AAEA,YAAMsB,IAA6C,CAAA;AACnD,aAAO,QAAQ/C,CAAY,EAAE,QAAQ,CAAC,CAACI,GAAOW,CAAQ,MAAM;AAC1D,cAAMiC,IAAc3L,EAAK,KAAK,CAACyL,MAAiCA,EAAI,OAAO1C,CAAK;AAChF,YAAI4C,GAAa;AACf,gBAAMC,IAAa,EAAE,GAAGD,EAAA,GAClBE,IAAmE,CAAA;AACzE,iBAAO,QAAQnC,CAAQ,EAAE,QAAQ,CAAC,CAACV,GAAWC,CAAI,MAAM;AACtD,YAAA2C,EAAW5C,CAAS,IAAIC,EAAK,OAC7B4C,EAAa7C,CAAS,IAAI,EAAE,OAAOC,EAAK,OAAO,MAAMA,EAAK,KAAA;AAAA,UAC5D,CAAC,GACDyC,EAAW,KAAK,EAAE,GAAGE,GAAY,gBAAgBC,GAAc;AAAA,QACjE;AAAA,MACF,CAAC,GAEGH,EAAW,SAAS,MAClBhK,MAA6BgK,CAAU,IAClCjK,KAAWA,EAAU,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,QAAQ,IAAM,MAAMiK,EAAA,CAAY,IAGhG9C,EAAgB,CAAA,CAAE,GAClBX,EAAyB,CAAA,CAAE,GAC3BR,EAAoB,IAAI;AAAA,IAC1B,GAAG,CAACkB,GAAc3I,GAAMyB,GAAWC,GAAeqJ,GAAyBM,IAA2BlB,GAAc5F,CAAW,CAAC,GAE1HuH,KAAuBhD;AAAA,MAC3B,CAACC,MAAkB;AACjB,YAAI5E,EAAuB;AAC3B,cAAMuF,IAAWf,EAAaI,CAAK;AACnC,QAAIW,KAAYpF,KAAsBA,EAAqB,EAAE,CAACyE,CAAK,GAAGW,GAAU,GAChFd,EAAgB,CAACM,MAAS;AAAE,gBAAM6C,IAAI,EAAE,GAAG7C,EAAA;AAAQ,wBAAO6C,EAAEhD,CAAK,GAAUgD;AAAA,QAAG,CAAC,GAC/E9D,EAAyB,CAACiB,MAAS;AAAE,gBAAM6C,IAAI,EAAE,GAAG7C,EAAA;AAAQ,wBAAO,KAAK6C,CAAC,EAAE,QAAQ,CAACC,MAAM;AAAE,YAAIA,EAAE,WAAW,GAAGjD,CAAK,GAAG,KAAG,OAAOgD,EAAEC,CAAC;AAAA,UAAG,CAAC,GAAUD;AAAA,QAAG,CAAC,GACvJtE,EAAoB,IAAI;AAAA,MAC1B;AAAA,MACA,CAACtD,GAAuBG,GAAsBqE,CAAY;AAAA,IAAA,GAGtDsD,KAAsBnD;AAAA,MAC1B,CAACC,MAAkB;AACjB,cAAMW,IAAWf,EAAaI,CAAK;AACnC,YAAI,CAACW,KAAY,OAAO,KAAKA,CAAQ,EAAE,WAAW,EAAG;AAErD,cAAM,EAAE,WAAAuB,GAAW,cAAAE,GAAc,YAAAD,GAAY,YAAAE,MAAeL,EAAwB,EAAE,CAAChC,CAAK,GAAGW,GAAU;AACzG,YAAIuB,GAAW;AAGb,cAFArC,EAAgB,CAACM,OAAU,EAAE,GAAGA,GAAM,CAACH,CAAK,GAAGoC,EAAapC,CAAK,EAAA,EAAI,GACrExE,GAAa,mBAAmB,SAAS8G,GAA0BD,CAAU,CAAC,GAC1EF,GAAY;AACd,kBAAMd,IAAWpK,EAAK,UAAU,CAACyL,MAAiCA,EAAI,OAAOP,EAAY,KAAK;AAC9F,YAAAf,EAAae,EAAY,OAAOA,EAAY,WAAWd,CAAQ;AAAA,UACjE;AACA;AAAA,QACF;AAEA,cAAMuB,IAAc3L,EAAK,KAAK,CAACyL,MAAiCA,EAAI,OAAO1C,CAAK;AAChF,YAAI,CAAC4C,EAAa;AAClB,cAAMC,IAAa,EAAE,GAAGD,EAAA,GAClBE,IAAmE,CAAA;AACzE,eAAO,QAAQnC,CAAQ,EAAE,QAAQ,CAAC,CAACV,GAAWC,CAAI,MAAM;AACtD,UAAA2C,EAAW5C,CAAS,IAAIC,EAAK,OAC7B4C,EAAa7C,CAAS,IAAI,EAAE,OAAOC,EAAK,OAAO,MAAMA,EAAK,KAAA;AAAA,QAC5D,CAAC;AAED,cAAMiD,IAAgB,EAAE,GAAGN,GAAY,gBAAgBC,EAAA;AAEvD,QAAInK,IAAeA,EAAc,CAACwK,CAAa,CAAC,IACvCzK,KAAWA,EAAU,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,QAAQ,IAAM,MAAM,CAACyK,CAAa,GAAG,GAEnGtD,EAAgB,CAACM,MAAS;AAAE,gBAAM6C,IAAI,EAAE,GAAG7C,EAAA;AAAQ,wBAAO6C,EAAEhD,CAAK,GAAUgD;AAAA,QAAG,CAAC,GAC/E9D,EAAyB,CAACiB,MAAS;AAAE,gBAAM6C,IAAI,EAAE,GAAG7C,EAAA;AAAQ,wBAAO,KAAK6C,CAAC,EAAE,QAAQ,CAACC,OAAM;AAAE,YAAIA,GAAE,WAAW,GAAGjD,CAAK,GAAG,KAAG,OAAOgD,EAAEC,EAAC;AAAA,UAAG,CAAC,GAAUD;AAAA,QAAG,CAAC,GACvJtE,EAAoB,IAAI;AAAA,MAC1B;AAAA,MACA,CAACkB,GAAc3I,GAAMyB,GAAWC,GAAeqJ,GAAyBM,IAA2BlB,GAAc5F,CAAW;AAAA,IAAA,GAGxH4H,IAAoBC,EAAQ,MACzB,OAAO,OAAOzD,CAAY,EAAE,OAAO,CAAC0D,GAAO3C,MAAa2C,IAAQ,OAAO,KAAK3C,CAAQ,EAAE,QAAQ,CAAC,GACrG,CAACf,CAAY,CAAC;AAEjB,IAAAgB,EAAU,MAAM;AACd,MAAAtF,KAAuB8H,IAAoB,GAAGA,CAAiB;AAAA,IACjE,GAAG,CAACA,GAAmB9H,EAAoB,CAAC;AAE5C,UAAMiI,KAAmBF,EAAQ,MAAM;AACrC,YAAMG,IAA2M,CAAA;AACjN,oBAAO,QAAQ5D,CAAY,EAAE,QAAQ,CAAC,CAACI,GAAOW,CAAQ,MAAM;AAC1D,cAAMU,IAAWpK,EAAK,UAAU,CAACyL,MAAiCA,EAAI,OAAO1C,CAAK;AAClF,eAAO,QAAQW,CAAQ,EAAE,QAAQ,CAAC,CAACV,GAAWC,CAAI,MAAM;AACtD,gBAAMI,IAASzD,EAAa,KAAK,CAAC0D,MAAQA,EAAI,QAAQN,CAAS;AAC/D,UAAAuD,EAAK,KAAK,EAAE,OAAAxD,GAAO,WAAAC,GAAW,WAAWK,GAAQ,UAAUA,GAAQ,gBAAgBL,GAAW,OAAOC,EAAK,OAAO,eAAeA,EAAK,eAAe,MAAMA,EAAK,MAAM,cAAcA,EAAK,cAAc,UAAAmB,EAAA,CAAU;AAAA,QAClN,CAAC;AAAA,MACH,CAAC,GACMmC;AAAA,IACT,GAAG,CAAC5D,GAAc/C,GAAc5F,CAAI,CAAC,GAE/BwM,KAAuBJ,EAAQ,MAAM;AACzC,YAAMK,wBAAc,IAAA;AACpB,oBAAO,QAAQ9D,CAAY,EAAE,QAAQ,CAAC,CAACI,GAAOW,CAAQ,MAAM;AAC1D,cAAMU,IAAWpK,EAAK,UAAU,CAACyL,MAAiCA,EAAI,OAAO1C,CAAK;AAClF,QAAA0D,EAAQ,IAAI1D,GAAO,EAAE,OAAAA,GAAO,UAAAqB,GAAU,WAAW,OAAO,KAAKV,CAAQ,EAAE,OAAA,CAAQ;AAAA,MACjF,CAAC,GACM,MAAM,KAAK+C,EAAQ,OAAA,CAAQ,EAAE,KAAK,CAACC,GAAGC,MAAMD,EAAE,WAAWC,EAAE,QAAQ;AAAA,IAC5E,GAAG,CAAChE,GAAc3I,CAAI,CAAC,GAEjB4M,KAAsB9D,EAAY,CAAC+D,MAAmClF,GAAyBkF,CAAM,GAAG,EAAE,GAC1GC,KAAuBhE,EAAY,MAAMnB,GAAyB,IAAI,GAAG,CAAA,CAAE,GAE3EoF,KAA2BjE;AAAA,MAC/B,CAACkE,GAAgBvB,MAAkB;AACjC,QAAA5D,GAAsB,EAAE,OAAAmF,GAAO,WAAWvB,EAAA,CAAK,GAC3C/D,GAAuB,cAAYA,EAAsB,WAAWsF,GAAOvB,CAAG,GAClFqB,GAAA;AAAA,MACF;AAAA,MACA,CAACpF,GAAuBoF,EAAoB;AAAA,IAAA,GAGxCG,KAA0BnE,EAAY,MAAMjB,GAAsB,IAAI,GAAG,CAAA,CAAE,GAE3EqF,KAAuBpE,EAAY,CAAC+D,MAAoC9E,GAA0B8E,CAAM,GAAG,EAAE,GAC7GM,KAAwBrE,EAAY,MAAMf,GAA0B,IAAI,GAAG,CAAA,CAAE,GAE7EqF,KAAqBtE,EAAY,CAACuE,GAAiBC,MAAqB;AAC5E,MAAArF,EAAyB,CAACiB,OAAU,EAAE,GAAGA,GAAM,CAACmE,CAAO,GAAGC,EAAA,EAAW;AAAA,IACvE,GAAG,CAAA,CAAE,GAECC,KAAqBzE;AAAA,MACzB,CAACuE,MAAwCrF,GAAsBqF,CAAO;AAAA,MACtE,CAACrF,EAAqB;AAAA,IAAA,GAGlBwF,KAAiBpB,EAAQ,MAAM;AACnC,YAAMqB,IAAUnM,GAAiB,MAAM,eAAe;AACtD,UAAImM,EAAS,QAAOA,EAAQ,CAAC;AAC7B,YAAMC,IAAYpM,GAAiB,MAAM,oBAAoB;AAC7D,UAAIoM,EAAW,QAAOA,EAAU,CAAC,EAAE,QAAQ,WAAW,MAAM,EAAE,QAAQ,QAAQ,GAAG;AAAA,IAEnF,GAAG,CAACpM,EAAgB,CAAC,GAEfqM,KAAmB;AAAA,MACvB,SAAA7H;AAAA,MACA,WAAWhB;AAAA,MACX,sBAAApE;AAAA,MACA,eAAeC;AAAA,MACf,cAAAC;AAAA,MACA,SAAAE;AAAA,MACA,cAAAD;AAAA,IAAA,GAEI+M,KAA8BrJ,GAAa,IAAI5F,EAAmB,KAAKA,IACvEkP,KAAmB/I,IAAe,qBAAqBlE,MAAgB,iBACvEkN,KAAoB,OAAOD,MAAqB,WAAYtJ,GAAa,IAAIsJ,EAAgB,KAAKA,KAAoBA,IAEtHE,KAAa,EAAE,aAAa,GAAA,GAC5BC,KAAc,IAAI,MAAM,CAAC,EAAE,KAAKD,EAAU,GAC1CE,KAAe,IAAI,MAAM9L,EAAQ,EAAE,KAAK4L,EAAU,GAElDG,IAAiB9B,EAAQ,MAAMxG,EAAa,OAAO,CAACuI,MAAW,EAAQA,GAAQ,OAAQ,GAAG,CAACvI,CAAY,CAAC,GAExGwI,KAAQC;AAAA,MACZ;AAAA,QACE,SAAS/K,KAAgB4K,IAAiBtI;AAAA,QAC1C,MAAM,CAAC,GAAG5F,GAAM,GAAIO,KAAaP,GAAM,SAASgO,KAAcC,KAAgB,EAAG;AAAA,QACjF,eAAe,EAAE,UAAUK,IAA0B,OAAOC,IAAsB,UAAUC,GAAA;AAAA,MAAyB;AAAA,MAEvHC;AAAA,IAAA,GAGI,EAAE,eAAAC,IAAe,mBAAAC,IAAmB,cAAAC,IAAc,YAAAC,IAAY,MAAAC,MAASV;AAC7E,IAAA5F,GAAgB,UAAUoG;AAE1B,UAAMG,KAAa,KAAK,UAAUH,GAAa,CAAC,GAAG,SAAS,IAAI,CAACT,MAAYA,GAA+C,MAAM,CAAC;AACnI,IAAAxE,EAAU,MAAM;AACd,UAAI7F,IAAmB;AACrB,cAAMkL,IAASxG,GAAgB;AAC/B,QAAA1E,KAAoBkL,IAAS,CAAC,GAAG,SAAS,IAAI,CAACb,MAAWA,GAAQ,MAAgB,KAAK,EAAE;AAAA,MAC3F;AAAA,IACF,GAAG,CAACY,IAAYjL,EAAiB,CAAC;AAElC,UAAM,EAAE,gBAAAmL,GAAA,IAAmBC,GAAY;AAAA,MACrC,MAAAJ;AAAA,MACA,YAAYxO,GAAmB;AAAA,MAC/B,oBAAoBA,GAAmB;AAAA,MACvC,yBAAyBA,GAAmB;AAAA,MAC5C,SAAAuC;AAAA,MACA,cAAcyD;AAAA,MACd,eAAehG,GAAmB;AAAA,MAClC,kBAAkBA,GAAmB;AAAA,IAAA,CACtC,GAEK6O,KAAUC;AAAA,MACdC,GAAUC,IAAa,EAAE,sBAAsB,EAAE,UAAUC,GAAA,GAA2B;AAAA,MACtFF,GAAUG,IAAa,EAAE,sBAAsB,EAAE,UAAUD,GAAA,GAA2B;AAAA,IAAA,GAGlFE,KAA+B,EAAE,QAAQC,IAAuB,UAAUC,GAAA;AAEhF,aAASC,KAAc;AACrB,aAAI,CAAC7N,IAAkB,UAAU,CAACC,KAAqB8M,IAChD/M,GAAiB,OAAO,CAAC8N,GAA8BC,OAC5DD,EAAIC,CAAU,IAAIhB,EAAK,OAAO,CAACiB,MAAOA,EAAE,UAAsC,SAASD,CAAU,GAC1FD,IACN,CAAA,CAAE;AAAA,IACP;AACA,IAAAnH,GAAe,UAAUkH;AAEzB,UAAMI,KAAkB,CAACC,MAA0B;AACjD,YAAM,EAAE,QAAAC,MAAWD;AACnB,MAAAnJ,GAAcgI,EAAK,KAAK,CAACqB,MAAUA,EAAK,UAAsC,OAAOD,GAAQ,EAAE,KAAK,IAAI;AAAA,IAC1G,GAEME,KAAgB,CAACH,MAAwB;AAC7C,YAAM,EAAE,QAAAC,GAAQ,MAAAG,EAAA,IAASJ;AACzB,MAAKI,MACDvO,IAAkB,mBACpBA,GAAiB,gBAAgBoO,GAAQG,GAAM1J,IAAuB,CAAC2J,MAAsC;AAC3G,QAAA1J,GAAyB0J,CAAmC,GAC5DtJ,GAAc,EAAI,GAClBlF,GAAiB,gBAAgB;AAAA,UAC/B,WAAWoO,EAAO;AAAA,UAClB,WAAWG,EAAK;AAAA,UAChB,aAAcH,EAAO,KAAK,SAAqC;AAAA,UAC/D,aAAcG,EAAK,KAAK,SAAqC;AAAA,UAC7D,aAAaC;AAAA,UACb,IAAI,MAAMtJ,GAAc,EAAK;AAAA,QAAA,CAC9B;AAAA,MACH,CAAC,GAEHF,GAAc,IAAI;AAAA,IACpB,GAEMyJ,KAAmB,MAAMzJ,GAAc,IAAI,GAE3C0J,KAAqB,CAACC,MAAgB;AAC1C,MAAI,CAACrR,GAAY,UAAU,CAACD,GAAc,YACX6G,GAA3BD,OAAsB0K,IAA0B,OAC1BA,CAD8B;AAAA,IAE1D,GAEMC,KAAwB,CAACpH,MAAiB;AAC9C,MAAAlD,GAAoBkD,CAAG,GACvBpD,GAAuB,CAACD,EAAmB,GAC3CD,GAAqB,IAAI;AAAA,IAC3B,GAEM2K,KAAmB7H,EAAY,MAAM;AACzC,MAAI1J,GAAY,eAAcA,EAAW,aAAA,IAChCA,GAAY,UAAQA,EAAW,OAAO,IAAI,EAAE;AAAA,IACvD,GAAG,CAACA,CAAU,CAAC,GAETwR,KAAoB9H,EAAY,CAACQ,IAAe,SAAS;AAC7D,MAAA3D,GAAmB2D,CAAG,GACtB/D,GAAe,CAAA2D,MAAQI,IAAM,KAAO,CAACJ,CAAI;AAAA,IAC3C,GAAG,CAAA,CAAE,GACC2H,KAAkB/H,EAAY,MAAMrD,GAAa,OAAQ,CAACyD,CAAI,GAAG,EAAE,GAEnE4H,KAA2B,MAAM;AACrC,YAAMC,IAAkBnC,GAAa,CAAC,GAAG,SAAuD,OAAO,CAACT,MAAWA,GAAQ,YAAY,EAAK;AAC5I,eAASvD,IAAI,GAAGA,IAAImG,EAAe,QAAQnG;AACzC,YAAImG,EAAenG,CAAC,EAAE,eAAeA,IAAI;AAE3C,aAAOmG,EAAe,SAAS;AAAA,IACjC,GAEMC,KAAiClI;AAAA,MACrC,CAACmI,MAAyB;AACxB,YAAIC,IAAM;AACV,iBAAStG,IAAIqG,IAAe,GAAGrG,IAAIsD,EAAe,QAAQtD;AACxD,UAAIsD,EAAetD,CAAC,EAAE,YAAY,OAAOsG,KAAOhD,EAAetD,CAAC,EAAE,SAAS;AAE7E,eAAIhH,YAA6BC,MAA6BsN,KAC1D/Q,MAAY8Q,KAAO7Q,KAAqB,IAAI+Q,KACzCF;AAAA,MACT;AAAA,MACA,CAAChD,GAAgBrK,IAA2BxD,IAAoBuD,IAAsBxD,CAAU;AAAA,IAAA,GAG5FiR,KAAmB,MAAkB;AACzC,YAAMC,IAAS/M,GAAa,YAAA;AAC5B,aAAO;AAAA,QACL,GAAIU,KAAqB,CAAA;AAAA,QACzB,MAAMA,GAAmB,QAAQ;AAAA,QACjC,YAAYA,GAAmB,cAAcqM;AAAA,QAC7C,SAASrM,GAAmB,WAAW9F,GAAc;AAAA,QACrD,IAAI8F,GAAmB,MAAM;AAAA,QAC7B,WAAWA,GAAmB,aAAahG;AAAA,QAC3C,SAASgG,GAAmB,WAAW1F,GAAS,IAAI,CAAC8J,GAAQvK,OAAW;AAAA,UACtE,MAAMuK,EAAO;AAAA,UACb,OAAOA,EAAO;AAAA,UACd,SAASA,EAAO;AAAA,UAChB,QAAQA,EAAO;AAAA,UACf,OAAOvK,IAAQ;AAAA,UACf,cAAcuK,EAAO;AAAA,UACrB,UAAUvK,IAAQ;AAAA,UAClB,QAAQuK,EAAO;AAAA,QAAA,EACf;AAAA,MAAA;AAAA,IAEN;AACA,IAAAZ,GAAoB,UAAU4I;AAE9B,UAAME,KAA0B,CAACC,GAAoBC,MAAkB;AACrE,UAAIrM,EAAgB;AAEpB,YAAMsM,IAAmBL,GAAA;AACzB,MAAAnM,EAAqB;AAAA,QACnB,GAAGwM;AAAA,QACH,SAASA,GAAkB,SAAS,IAAI,CAACrI,MAAYA,EAAO,SAASmI,IAAa,EAAE,GAAGnI,GAAQ,OAAAoI,EAAA,IAAUpI,CAAO;AAAA,QAChH,SAAS;AAAA,MAAA,CACV;AAAA,IACH;AAEA,IAAAM,EAAU,MAAM;AAEd,UADIxK,GAAc,eAAe,SAAS,QAAkB,EAAI,GAC5DiG,EAAgB;AACpB,YAAMuM,IAAcvJ,GAAqB;AACzC,UAAI,KAAK,UAAUuJ,GAAa,WAAW,CAAA,CAAE,MAAM,KAAK,UAAUxS,GAAc,iBAAiB,CAAA,CAAE,GAAG;AACpG,cAAMyS,KAAkBD,GAAa,SAAS,UAAU,KAAK,GACvDE,IAAmB1S,GAAc,eAAe,SAAS;AAK/D,YAAI,EADsByS,KAAkB,CAACC,KAAoB,CAAC1J,GAAsB,UAChE;AACtB,gBAAMuJ,IAAmBjJ,GAAoB,QAAA;AAC7C,UAAAvD,EAAqB,EAAE,GAAGwM,GAAkB,SAAS,KAAK,MAAM,KAAK,UAAUvS,GAAc,iBAAiB,CAAA,CAAE,CAAC,GAAG,SAAS,IAAM;AAAA,QACrI;AACA,QAAAgJ,GAAsB,UAAU;AAAA,MAClC;AAAA,IACF,GAAG,CAAChJ,GAAc,eAAeiG,CAAc,CAAC;AAEhD,UAAM0M,KAA2BhJ;AAAA,MAC/B,CAAC2H,MAAgB;AACf,QAAAtI,GAAsB,UAAU,IAChChJ,GAAc,iBAAiBsR,CAAG;AAAA,MACpC;AAAA,MACA,CAACtR,GAAc,cAAc;AAAA,IAAA,GAGzB4S,KAA0BjJ,EAAY,MAAM;AAChD,MAAAX,GAAsB,UAAU,IAChChJ,GAAc,gBAAA;AAAA,IAChB,GAAG,CAACA,GAAc,aAAa,CAAC;AAEhC,IAAAwK,EAAU,MAAM;AACd,MAAIvK,GAAY,YAAY,SAC1BqG,GAAa,EAAI,GACbrG,EAAW,WAAW,UAAU,SAASoH,GAAsBpH,EAAW,WAAW,KAAK,GAAGsH,GAAuB,IAAI,KACnHtH,EAAW,WAAW,UAAU,WAAUsH,GAAuBtH,EAAW,WAAW,KAAK,GAAGoH,GAAsB,IAAI,OAC3HA,GAAsB,IAAI,GAAGE,GAAuB,IAAI;AAAA,IACnE,GAAG,CAACtH,GAAY,YAAY,OAAOA,GAAY,YAAY,KAAK,CAAC,GAEjEuK,EAAU,MAAM;AACd,MAAA9D,GAAgBmM,GAAiC5J,GAAqB,SAAS,WAAW,CAAA,GAAI7I,CAAO,CAAC;AAAA,IACxG,GAAG,CAACA,CAAO,CAAC,GAEZoK,EAAU,MAAM;AACd,MAAI1E,GAAmB,WAASoD,GAAe,SAAS,mBAAmBpD,CAAiB;AAAA,IAC9F,GAAG,CAACA,CAAiB,CAAC,GAEtB0E,EAAU,MAAM;AAAE,MAAA/C,GAAyB8B,GAAe,SAAoC;AAAA,IAAG,GAAG,CAACoG,EAAK,MAAM,CAAC,GAEjHnF,EAAU,MAAM;AACd,MAAAzE,EAAqBF,KAAoB,IAAI,GACzCA,GAAkB,WACpBa,GAAgBmM,GAAiChN,GAAkB,WAAW,CAAA,GAAIsD,GAAW,OAAO,CAAC,GAEnGtD,GAAkB,WAAWA,EAAiB,QAAQ,SAAS,KAAK,CAACkD,GAAyB,WAChG,sBAAsB,MAAM;AAAE,QAAAK,GAAgB,SAAS,WAAWvD,EAAiB,OAAO;AAAA,MAAG,CAAC,GAC9FkD,GAAyB,UAAU,MAC1BlD,GAAkB,WAAWkD,GAAyB,WACnC,KAAK,UAAUlD,EAAiB,OAAO,MAAM,KAAK,UAAUuD,GAAgB,SAAS,aAAa,KACrGA,GAAgB,SAAS,WAAWvD,EAAiB,OAAO;AAAA,IAEzF,GAAG,CAACA,CAAgB,CAAC,GAErB2E,EAAU,MAAM;AACd,UAAIxC,GAAa,SAAS;AACxB,cAAM8K,IAAiB,IAAI,eAAe,CAACC,MAAYhL,GAAkBgL,EAAQ,CAAC,EAAE,YAAY,KAAK,CAAC;AACtG,eAAAD,EAAe,QAAQ9K,GAAa,OAAO,GACpC,MAAM8K,EAAe,WAAA;AAAA,MAC9B;AAAA,IACF,GAAG,CAAA,CAAE,GAELtI,EAAU,MAAM;AACd,UAAI,CAACtC,GAAkB,QAAS;AAChC,YAAM4K,IAAiB,IAAI,eAAe,CAACC,MAAY;AACrD,cAAM,EAAE,OAAAT,GAAO,QAAAU,EAAA,IAAWD,EAAQ,CAAC,EAAE;AACrC,QAAA3K,GAAsB,EAAE,OAAAkK,GAAO,QAAAU,GAAQ;AAAA,MACzC,CAAC;AACD,aAAAF,EAAe,QAAQ5K,GAAkB,OAAO,GACzC,MAAM4K,EAAe,WAAA;AAAA,IAC9B,GAAG,CAAA,CAAE;AAEL,UAAMG,KACJ,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,aAAA1Q;AAAA,QACA,cAAAgN;AAAA,QACA,YAAA7J;AAAA,QACA,gBAAAkK;AAAA,QACA,cAAA5I;AAAA,QACA,mBAAmBN,MAAqB;AAAA,QACxC,sBAAAC;AAAA,QACA,oBAAAO;AAAA,QACA,qBAAAE;AAAA,QACA,QAAQrH,GAAY;AAAA,QACpB,UAAUD,GAAc;AAAA,QACxB,oBAAAqR;AAAA,QACA,uBAAAhK;AAAA,QACA,wBAAAE;AAAA,QACA,uBAAuBkK;AAAA,QACvB,YAAa,MAAM,QAAQxQ,CAAU,IAAIA,IAAa,CAAA;AAAA,QACtD,sBAAsBM,MAAwB;AAAA,QAC9C,kBAAAC;AAAA,QACA,mBAAAI;AAAA,QACA,qBAAAC;AAAA,QACA,cAAeb,MAAgB;AAAA,QAC/B,WAAAI;AAAA,QACA,sBAAuBqD,MAAwB;AAAA,QAC/C,wBAAwBuI,IAAoB;AAAA,MAAA;AAAA,IAAA,GAI1CoG,KACJ,gBAAAC,EAAAC,IAAA,EACG,UAAA;AAAA,MAAA1L,MAAchE,KACb,gBAAAsP,EAAC,OAAA,EAAI,WAAU,8GAA6G,IAC1H;AAAA,MACJ,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACE,GAAG3D,GAAA;AAAA,UACJ,WAAU;AAAA,UAET,UAAA5I,KACC,gBAAA0M,EAAC,OAAA,EAAI,WAAU,QACZ,UAAA;AAAA,YAAAJ;AAAA,YACD,gBAAAC,EAAC,OAAA,EAAI,WAAU,mBACZ,UAAA9N,GAAa,cAAcA,EAAY,YAAYoJ,EAAgB,IAClE,gBAAA6E,EAAC,OAAA,EAAI,WAAU,0GACZ,UAAA;AAAA,cAAA3R,MAAgB,CAACiE,IAAe,gBAAAuN,EAACK,IAAA,EAAmB,YAAW,SAAQ,IAAK,gBAAAL,EAACM,IAAA,EAAY,MAAM7E,GAAA,CAAmB;AAAA,cAClHpN,MAAwB,CAACoE,IACxB,gBAAAuN,EAAC,OAAA,EAAI,WAAU,QACb,UAAA,gBAAAG;AAAA,gBAACI;AAAA,gBAAA;AAAA,kBACC,IAAG;AAAA,kBACH,QAAO;AAAA,kBACP,YAAW;AAAA,kBACX,SAASjS;AAAA,kBAET,UAAA;AAAA,oBAAA,gBAAA0R,EAACQ,IAAA,EAAS,WAAU,6BAAA,CAA6B;AAAA,oBAAE;AAAA,oBAAEjF;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAAA,GAEzD,IACE;AAAA,cACH,CAAC9I,KACAhE,IAAS,IAAI,CAACgS,GAAQhU,MACpB,gBAAAuT,EAACO,IAAA,EAAwC,QAAO,aAAY,IAAIhU,GAAiBkU,EAAO,OAAOhU,CAAK,GAAG,SAASgU,EAAO,SACpH,UAAAvO,GAAa,IAAIuO,EAAO,KAAK,KAAKA,EAAO,MAAA,GAD/B,GAAGA,EAAO,KAAK,IAAIhU,CAAK,EAErC,CACD;AAAA,YAAA,EAAA,CACL,EAAA,CAEJ;AAAA,UAAA,EAAA,CACF,IAEA,gBAAAuT;AAAA,YAAC5T;AAAA,YAAA;AAAA,cACC,OAAO,EAAE,OAAO,QAAQ,QAAQ,OAAA;AAAA,cAChC,YAAY,CAAC,EAAE,OAAAgT,GAAO,QAAAU,QAAa;AACjC,sBAAMY,IAAiBtB,IAAQ,IAAIA,IAAQnK,GAAmB,OACxD0L,IAAkBb,IAAS,IAAIA,IAAS7K,GAAmB;AACjE,uBAAOyL,IAAiB,KAAKC,IAAkB,IAC7C,gBAAAX;AAAA,kBAACY;AAAA,kBAAA;AAAA,oBAEG,mBAAAtE;AAAA,oBAAkF,MAAAG;AAAA,oBAAqB,YAAAD;AAAA,oBAAiC,WAAAtO;AAAA,oBAAW,UAAAC;AAAA,oBAAU,aAAAC;AAAA,oBAAa,SAAAlB;AAAA,oBAAS,OAAOwT;AAAA,oBAAgB,QAAQC;AAAA,oBAAiB,cAAAhR;AAAA,oBACnO,kBAAkB9C,GAAc,oBAAoB;AAAA,kBACtD;AAAA,gBAAA,IAEA;AAAA,cACN;AAAA,YAAA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAEJ,GACF,GAGIgU,KAAeC,GAAiE,CAACC,GAAOC,MAC5F,gBAAAb,EAAC,OAAA,EAAI,WAAU,iBAAiB,GAAGY,GAAO,KAAAC,GACvC,UAAA;AAAA,MAAAjB;AAAA,MACD,gBAAAC,EAAC,OAAA,EAAI,WAAU,0BAA0B,aAAO,SAAA,CAAS;AAAA,IAAA,EAAA,CAC3D,CACD,GAEKiB,KAAmBH,GAAiE,CAACC,GAAOC,MAChG,gBAAAhB,EAAC,SAAI,WAAU,iBAAiB,GAAGe,GAAO,KAAAC,GACxC,4BAAC,OAAA,EAAI,WAAU,0BAA0B,UAAAD,GAAO,UAAS,GAC3D,CACD,GAEKG,KAAuBnH,EAAQ,MAC/B7H,GAAa,oBACRA,EAAY,kBAAkB;AAAA,MACnC,UAAAtF;AAAA,MAAU,QAAQC,GAAc;AAAA,MAAQ,cAAcA,GAAc;AAAA,MACpE,mBAAA0R;AAAA,MAAmB,iBAAAC;AAAA,MAAiB,cAAc1R,GAAc,eAAe;AAAA,MAC/E,SAAAI;AAAA,MAAS,eAAeJ,GAAc;AAAA,MAAe,sBAAA+F;AAAA,MAAsB,mBAAAD;AAAA,MAC3E,iBAAiB5F,GAAc;AAAA,MAAe,WAAAG;AAAA,MAC9C,iCAAAC;AAAA,MACA,gBAAgBN,GAAc;AAAA,MAAgB,eAAeA,GAAc;AAAA,MAC3E,UAAUA,GAAc;AAAA,MAAU,MAAMY,MAAuBC;AAAA,MAAM,cAAA4F;AAAA,MAAc,sBAAsBvG,GAAc;AAAA,MACvH,mBAAmBA,GAAc;AAAA,MAAmB,eAAeA,GAAc;AAAA,MAAe,aAAaA,GAAc;AAAA,MAC3H,WAAWA,GAAc;AAAA,MAAW,YAAYA,GAAc;AAAA,MAC9D,WAAW,EAAQA,GAAc;AAAA,MAAY,iBAAAwG;AAAA,MAC7C,kBAAkB,EAAQ3G,GAAc;AAAA,MAAmB,aAAa,CAAC,CAACG,GAAc;AAAA,MACxF,gBAAAkG;AAAA,MAAgB,MAAMnG,GAAY;AAAA,MAAY,QAAQA,GAAY;AAAA,MAAQ,cAAcuR;AAAA,MACxF,kBAAkBtR,GAAc;AAAA,MAChC,qBAAAK;AAAA,MACA,mBAAAC;AAAA,MACA,aAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,eAAAC;AAAA,IAAA,CACD,IAEI,MACN;AAAA,MACDb;AAAA,MAAUC,GAAc;AAAA,MAAQA,GAAc;AAAA,MAAc0R;AAAA,MAAmBC;AAAA,MAC/E1R,GAAc;AAAA,MAAeI;AAAA,MAAS2F;AAAA,MAAsBD;AAAA,MAAmB5F;AAAA,MAC/EG;AAAA,MAAWL,GAAc;AAAA,MAAgBA,GAAc;AAAA,MAAeA,GAAc;AAAA,MACpFa;AAAA,MAAMD;AAAA,MAAqB6F;AAAA,MAAcxG,GAAY;AAAA,MAAYA,GAAY;AAAA,MAAQuR;AAAA,MAAkBpM;AAAA,MACvGrF,GAAc;AAAA,MAAkBO;AAAA,MAAgCC;AAAA,MAAqBC;AAAA,MAAmBC;AAAA,MAAYC;AAAA,MAAeC;AAAA,IAAA,CACpI;AAED,WAAA6J,EAAU,MAAM;AACd,MAAItG,SAAqCkQ,EAAoB;AAAA,IAC/D,GAAG,CAACA,IAAsBlQ,EAAiB,CAAC,GAG1C,gBAAAmP;AAAA,MAACgB,GAAa;AAAA,MAAb;AAAA,QACC,OAAO;AAAA,UACL,cAAAN;AAAA,UAAc,kBAAAI;AAAA,UAAkB,0BAAAxC;AAAA,UAA0B,QAAQ5R,GAAc;AAAA,UAChF,eAAeC,GAAc;AAAA,UAAe,YAAAc;AAAA,UAAY,QAAQb,GAAY;AAAA,UAC5E,UAAUD,GAAc;AAAA,UAAU,mBAAAyR;AAAA,UAAmB,iBAAAC;AAAA,UACrD,gBAAgB1R,GAAc;AAAA,UAAgB,eAAeA,GAAc;AAAA,UAC3E,YAAAiB;AAAA,UAAY,gBAAA6O;AAAA,UAAgB,eAAe9P,GAAc;AAAA,UAAe,sBAAAuB;AAAA,UACxE,kBAAAC;AAAA,UAAkB,mBAAAI;AAAA,UAAmB,qBAAAC;AAAA,UAAqB,mBAAAC;AAAA,UAAmB,aAAAC;AAAA,UAC7E,sBAAAC;AAAA,UAAsB,kBAAAqG;AAAA,UAAkB,qBAAAC;AAAA,UAAqB,eAAArG;AAAA,UAC7D,2BAAAC;AAAA,UAA2B,uBAAAE;AAAA,UAAuB,eAAAC;AAAA,UAAe,gCAAAwP;AAAA,UACjE,WAAAvP;AAAA,UAAW,mBAAAE;AAAA,UAAmB,cAAAxB;AAAA,UAAc,kBAAA2B;AAAA,UAAkB,cAAAE;AAAA,UAAc,eAAAC;AAAA,UAC5E,sBAAAI;AAAA,UAAsB,iBAAAG;AAAA,UAAiB,cAAAoD;AAAA,UAAc,UAAAnD;AAAA,UAAU,cAAAC;AAAA,UAAc,iBAAAC;AAAA,UAC7E,aAAAC;AAAA,UAAa,SAAAC;AAAA,UAAS,YAAAC;AAAA,UAAY,YAAAI;AAAA,UAAY,eAAAC;AAAA,UAAe,qBAAAC;AAAA,UAC7D,uBAAuBjE,GAAc;AAAA,UAAuB,yBAAAoS;AAAA,UAC5D,qBAAqBnM;AAAA,UACrB,mBAAA7B;AAAA,UAAmB,sBAAAC;AAAA,UAAsB,0BAAAC;AAAA,UAA0B,6BAAAC;AAAA,UACnE,gBAAAuD;AAAA,UAAgB,kBAAAtD;AAAA,UAAkB,sBAAAC;AAAA,UAAsB,aAAAtE;AAAA,UAAa,2BAAAuE;AAAA,UACrE,aAAAE;AAAA,UAAa,kBAAAC;AAAA,UAAkB,qBAAA4I;AAAA,UAAqB,sBAAAE;AAAA,UAAsB,oBAAAlF;AAAA,UAC1E,yBAAAqF;AAAA,UAAyB,iBAAAhJ;AAAA,UAAiB,sBAAAiJ;AAAA,UAAsB,uBAAAC;AAAA,UAChE,wBAAArF;AAAA,UAAwB,uBAAAE;AAAA,UAAuB,oBAAAoF;AAAA,UAAoB,oBAAAG;AAAA,UACnE,cAAA5E;AAAA,UAAc,gBAAAE;AAAA,UAAgB,mBAAAe;AAAA,UAAmB,gBAAAI;AAAA,UAAgB,gBAAAC;AAAA,UACjE,sBAAAC;AAAA,UAAsB,qBAAAsB;AAAA,UAAqB,sBAAAM;AAAA,UAAsB,qBAAAG;AAAA,UACjE,mBAAAE;AAAA,UAAmB,cAAAhC;AAAA,UAAc,sBAAAjG;AAAA,UAAsB,uBAAAC;AAAA,UAAuB,yBAAA4G;AAAA,QAAA;AAAA,QAG/E,UAAA;AAAA,UAAA7K,KACC,gBAAAsS;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAKrL;AAAA,cACL,WAAW,oDACTF,IAAiBwM,IAA2B,2BAA2B,uBACzE;AAAA,cAEA,UAAA;AAAA,gBAAA,gBAAAjB;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAW,qCACTvL,IAAiBwM,IAA2B,qBAAqB,EACnE,IAAIpU,GAAc,UAAU,mBAAmB,UAAU;AAAA,oBAExD,UAAA;AAAA,sBAAAA,GAAc,UACb,gBAAAgT,EAAC,OAAA,EAAI,WAAW,WAAWpL,IAAiBwM,IAA2B,WAAW,QAAQ,IACvF,UAAApU,EAAa,QAAA,CAChB,IACE;AAAA,sBACHkD,KACC,gBAAAiQ,EAAC,OAAA,EAAI,WAAU,sCACb,UAAA;AAAA,wBAAA,gBAAAA;AAAA,0BAAC;AAAA,0BAAA;AAAA,4BACC,OAAM;AAAA,4BACN,OAAM;AAAA,4BACN,QAAO;AAAA,4BACP,SAAQ;AAAA,4BACR,MAAK;AAAA,4BACL,QAAO;AAAA,4BACP,aAAY;AAAA,4BACZ,eAAc;AAAA,4BACd,gBAAe;AAAA,4BACf,WAAU;AAAA,4BACV,eAAW;AAAA,4BAEX,UAAA;AAAA,8BAAA,gBAAAH,EAAC,WAAA,EAAQ,IAAG,MAAK,IAAG,KAAI,IAAG,KAAI,IAAG,IAAA,CAAI;AAAA,8BACtC,gBAAAA,EAAC,QAAA,EAAK,GAAE,wCAAA,CAAwC;AAAA,8BAChD,gBAAAA,EAAC,QAAA,EAAK,GAAE,wCAAA,CAAwC;AAAA,8BAChD,gBAAAA,EAAC,QAAA,EAAK,GAAE,0CAAA,CAA0C;AAAA,4BAAA;AAAA,0BAAA;AAAA,wBAAA;AAAA,wBAEpD,gBAAAA,EAACqB,IAAA,EAAW,MAAK,SAAQ,SAAQ,YAAW,YAAW,SACnD,WAAApR,MAActC,EAAK,QAAQ,eAAA,GAC/B;AAAA,wBACA,gBAAAqS,EAACqB,MAAW,MAAK,SAAQ,SAAQ,WAAU,YAAW,YAAW,UAAA,gBAAA,CAEjE;AAAA,sBAAA,EAAA,CACF,IACErU,GAAc,aAChB,gBAAAgT,EAAC,SAAI,WAAU,oDAAoD,UAAAhT,EAAa,WAAA,CAAW,IACzF;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAEN,gBAAAmT;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAW,yCACTvL,IAAiBwM,IAA2B,WAAWpU,GAAc,UAAU,aAAa,QAC9F,IAAI4H,IAAiB0M,KAA4B,aAAa,UAAU,IACtEtU,GAAc,cAAc,UAAU,EACxC;AAAA,oBAEC,UAAA;AAAA,sBAAAkD,MAAmBlD,GAAc,aAChC,gBAAAgT,EAAC,OAAA,EAAI,WAAU,0CAA0C,UAAAhT,EAAa,YAAW,IAC/E;AAAA,sBACJ,gBAAAgT;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACC,WAAW,yCACTpL,IAAiB0M,MAAuC1M,IAAiBwM,IAA5B,WAAkE,EACjH;AAAA,0BAEC,UAAAF;AAAA,wBAAA;AAAA,sBAAA;AAAA,sBAEFlU,GAAc,cACb,gBAAAgT,EAAC,OAAA,EAAI,WAAW,iCAAiCpL,IAAiB0M,KAA4B,WAAW,EAAE,IACxG,UAAAtU,EAAa,aAChB,IACE;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACN;AAAA,YAAA;AAAA,UAAA,IAEA;AAAA,UACHA,GAAc,cAAc,gBAAAgT,EAAC,OAAA,EAAI,WAAU,0CAAyC,IAAK;AAAA,UACzF/M,MAAeE,KACd,gBAAA6M,EAAC,OAAA,EAAI,WAAU,4DACb,UAAA,gBAAAG,EAAC,OAAA,EAAI,WAAU,2BACZ,UAAA;AAAA,YAAAhN,MAAajB,GAAa,iBACzBA,EAAY,eAAe,EAAE,MAAMnF,GAAY,YAAY,cAAcuR,IAAkB,QAAQvR,GAAY,QAAQ,cAAAwG,GAAc,MAAA5F,GAAM,UAAUoF,EAAA,CAAgB,IACnK;AAAA,YACHE,MAAeE,MAAapG,GAAY,YAAY,UAAU,KAC7D,gBAAAiT,EAAC,OAAA,EAAI,WAAU,2CAAA,CAA2C,IACxD;AAAA,YACH/M,KACC,gBAAAkN,EAAC,OAAA,EAAI,WAAU,2BACX,UAAA;AAAA,eAAA3N,MAAa1F,GAAc,kBAAkBoF,GAAa,uBAC1DA,EAAY,oBAAoB;AAAA,gBAC9B,SAASpF,GAAc;AAAA,gBAAe,gBAAgB2S;AAAA,gBACtD,eAAeC;AAAA,gBAAyB,eAAe5S,GAAc;AAAA,gBACrE,UAAUA,GAAc;AAAA,gBAAU,cAAAyG;AAAA,gBAAc,eAAezG,GAAc;AAAA,gBAC7E,WAAAK;AAAA,gBAAW,iCAAAC;AAAA,gBAAiC,WAAW;AAAA,gBAAM,aAAaN,GAAc;AAAA,gBAAa,SAASA,GAAc;AAAA,gBAAS,MAAMY,MAAuBC;AAAA,gBAClK,qBAAAN;AAAA,gBACA,mBAAAC;AAAA,gBACA,aAAAC;AAAA,gBACA,gBAAAC;AAAA,gBACA,eAAAC;AAAA,gBACA,UAAUsF;AAAA,cAAA,CACX;AAAA,cAEFb,GAAa,uBACZA,EAAY,oBAAoB;AAAA,gBAC9B,eAAepF,GAAc;AAAA,gBAAe,SAASuR;AAAA,gBACrD,WAAAlR;AAAA,gBAAW,iCAAAC;AAAA,gBAAiC,qBAAqBiG;AAAA,gBAAiB,0BAA0B,MAAMC,GAAmB,IAAI;AAAA,gBACzI,QAAQQ;AAAA,gBAAkB,UAAUhH,GAAc;AAAA,gBAAU,cAAAyG;AAAA,gBAC5D,eAAezG,GAAc;AAAA,gBAAe,MAAMY,MAAuBC;AAAA,gBAAM,aAAab,GAAc;AAAA,gBAC1G,SAASA,GAAc;AAAA,gBACvB,qBAAAO;AAAA,gBACA,mBAAAC;AAAA,gBACA,aAAAC;AAAA,gBACA,gBAAAC;AAAA,gBACA,eAAAC;AAAA,gBACA,UAAUsF;AAAA,cAAA,CACX;AAAA,YAAA,EAAA,CAEL,IACE;AAAA,UAAA,EAAA,CACN,GACF,IACE;AAAA,UACHnC,MAAqB,OAAO,KAAKA,EAAiB,EAAE,SAAS,gBAAAoP,EAACuB,IAAA,EAAa,GAAG3Q,GAAA,CAAmB,IAAK;AAAA,UACtG,CAAC/C,MAAcqC,KACd,gBAAAiQ,EAAC,OAAA,EAAI,WAAU,kCACb,UAAA;AAAA,YAAA,gBAAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,OAAM;AAAA,gBACN,OAAM;AAAA,gBACN,QAAO;AAAA,gBACP,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,QAAO;AAAA,gBACP,aAAY;AAAA,gBACZ,eAAc;AAAA,gBACd,gBAAe;AAAA,gBACf,WAAU;AAAA,gBACV,eAAW;AAAA,gBAEX,UAAA;AAAA,kBAAA,gBAAAH,EAAC,WAAA,EAAQ,IAAG,MAAK,IAAG,KAAI,IAAG,KAAI,IAAG,IAAA,CAAI;AAAA,kBACtC,gBAAAA,EAAC,QAAA,EAAK,GAAE,wCAAA,CAAwC;AAAA,kBAChD,gBAAAA,EAAC,QAAA,EAAK,GAAE,wCAAA,CAAwC;AAAA,kBAChD,gBAAAA,EAAC,QAAA,EAAK,GAAE,0CAAA,CAA0C;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,YAEpD,gBAAAA,EAACqB,IAAA,EAAW,MAAK,SAAQ,SAAQ,YAAW,YAAW,SACnD,WAAApR,MAActC,EAAK,QAAQ,eAAA,GAC/B;AAAA,YACA,gBAAAqS,EAACqB,MAAW,MAAK,SAAQ,SAAQ,WAAU,YAAW,YAAW,UAAA,gBAAA,CAEjE;AAAA,UAAA,EAAA,CACF,IACE,CAACxT,MAAcb,GAAc,aAC/B,gBAAAgT,EAAC,OAAA,EAAI,WAAU,0BAA0B,UAAAhT,EAAa,WAAA,CAAW,IAC/D;AAAA,UACJ,gBAAAgT;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAKhL;AAAA,cACL,WAAW,UAAUxF,KAAmB,WAAWP,EAAgB;AAAA,cACnE,OAAO;AAAA,gBACL,GAAIO,KACA,EAAE,QAAQ7B,GAAM,SAAS,IAAI,IAAIA,GAAM,SAAS,KAAKyE,KAAgB,CAAC,OAAO,YAC7E,EAAE,QAAQ+I,GAAA;AAAA,gBACd,GAAGxK;AAAA,cAAA;AAAA,cAGJ,UAAAd,KACCqQ,KAEA,gBAAAC,EAACqB,IAAA,EAAW,SAAA1E,IAAkB,WAAWiB,IAAe,aAAaJ,IAAiB,cAAcO,IAAkB,oBAAoBuD,IACvI,UAAA;AAAA,gBAAAvB;AAAA,gBACA1L,IACGkN;AAAA,oCACGC,IAAA,EAAY,aAAa,IAAM,eAAAvE,IAC9B,UAAA,gBAAA4C,EAAC,WAAO,GAAG3D,GAAA,GAAiB,WAAU,yHACpC,UAAA,gBAAA8D,EAAC,SAAA,EAAO,GAAG7D,MAAqB,WAAU,8CACvC,UAAA;AAAA,oBAAA,KAAKE,GAAWhI,CAAU;AAAA,sCAC1BoN,IAAA,EAAwE,KAAKpN,GAAqB,OAAOiI,GAAM,UAAU,CAACqB,MAASA,EAAK,OAAQtJ,EAAW,SAAqC,EAAE,KAAxLA,EAAW,SAAqC,EAA2I;AAAA,kBAAA,EAAA,CACxM,GACF,GACF;AAAA,kBACA,SAAS,eAAe,uBAAuB,KAAK,SAAS;AAAA,gBAAA,IAE/D;AAAA,cAAA,EAAA,CACN;AAAA,YAAA;AAAA,UAAA;AAAA,UAGHhF,MAAoB0C,GAAa,mBAAmBA,EAAY,iBAAiB1C,EAAgB,IAAI;AAAA,UAErG0C,GAAa,yBAAyBA,EAAY,sBAAsB;AAAA,YACvE,WAAW,CAAC,CAACmD;AAAA,YAAuB,YAAYqF;AAAA,YAA0B,SAASD;AAAA,YACnF,sBAAsBpF,GAAuB;AAAA,YAAsB,mBAAmBA,GAAuB;AAAA,YAC7G,gBAAgBA,GAAuB;AAAA,YAAgB,cAAcA,GAAuB;AAAA,YAAgB,aAAa;AAAA,UAAA,CAC1H;AAAA,UAED,gBAAA2K,EAAC6B,IAAA,EAAuB,QAAQpM,IAAwB,SAASqF,IAAuB;AAAA,UAExF,gBAAAkF;AAAA,YAAC8B;AAAA,YAAA;AAAA,cACC,mBAAAhI;AAAA,cACA,kBAAAG;AAAA,cACA,sBAAAE;AAAA,cACA,uBAAArI;AAAA,cACA,YAAY+F;AAAA,cACZ,WAAWsB;AAAA,cACX,gBAAgBrB;AAAA,YAAA;AAAA,UAAA;AAAA,QAClB;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;"}
1
+ {"version":3,"file":"index.es.js","sources":["../../../../src/components/data-display/infinite-table/index.tsx"],"sourcesContent":["import { useCheckbox } from \"../../../hooks/useCheckbox\";\nimport { useTableConfig } from \"../../../providers/design-system-provider/hooks\";\nimport {\n canEditTableView,\n mergeViewColumnsWithTableColumns,\n} from \"../../../utils/table\";\nimport Button from \"../../button/Button\";\nimport { FloatingBar } from \"../../floating-bar/FloatingBar\";\nimport { NoDataFound, NoDataFoundWidgets } from \"../empty-state\";\nimport { Typography } from \"../typography/Typography\";\nimport {\n DndContext,\n DragOverlay,\n type DragEndEvent,\n type DragStartEvent,\n type DropAnimation,\n MouseSensor,\n TouchSensor,\n closestCorners,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { AutoSizer as _AutoSizer } from \"react-virtualized-auto-sizer\";\nimport { createPortal } from \"react-dom\";\nimport type { Row as ReactTableRow } from \"react-table\";\nimport { useResizeColumns, useTable } from \"react-table\";\n\nimport { Body } from \"./body\";\nimport { validateCellValue } from \"./validateCell\";\nimport { Row } from \"./body/rows/row\";\nimport { TableContext } from \"./context\";\nimport { CurrencyDropdownPortal } from \"./CurrencyDropdownPortal\";\nimport { Head } from \"./head\";\nimport { PendingEditsFloatingBar } from \"./PendingEditsFloatingBar\";\nimport type {\n ICurrencyDropdownConfig,\n IColumn,\n IMasterDataModalConfig,\n ITableProps,\n ITableView,\n PendingEditsMap,\n IPendingEdit,\n} from \"./types\";\nimport { Add2Icon } from \"../../icon\";\nimport {\n TOOLBAR_FIRST_BREAKPOINT,\n TOOLBAR_SECOND_BREAKPOINT,\n DEFAULT_PAGE_SIZE,\n DEFAULT_COLUMN_MIN_WIDTH,\n DEFAULT_COLUMN_WIDTH,\n DEFAULT_COLUMN_MAX_WIDTH,\n DND_ACTIVATION_DISTANCE,\n DROP_ANIMATION_EASING,\n DROP_ANIMATION_DURATION,\n SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK,\n SCROLL_TO_CELL_LEFT_OFFSET,\n ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH,\n ROW_OPTIONS_COLUMN_WIDTH,\n OS_VIEWPORT_SELECTOR,\n DATA_ROW_ID_ATTR,\n DATA_COLUMN_KEY_ATTR,\n} from \"./constants\";\nimport { getRowSlotHeight, useRowHeight } from \"./useRowHeight\";\n\nconst AutoSizer = _AutoSizer as unknown as React.ComponentType<{\n renderProp: (size: { width: number; height: number }) => React.ReactNode;\n style?: React.CSSProperties;\n}>;\n\nconst CREATE_COLUMN_LABEL = \"Create Column\";\n\nconst getEmptyButtonId = (label: string, index: number): string => {\n const slug = label\n .toLowerCase()\n .trim()\n .replace(/\\s+/g, \"-\")\n .replace(/[^a-z0-9-_]/g, \"\");\n return `button-admin-${slug || index}`;\n};\n\nexport const InfiniteTable = React.memo(\n ({\n tableKey,\n searchConfig = {\n search: \"\",\n handleSearch: () => null,\n allowAStarSearch: false,\n },\n filterConfig = {\n columnFilters: [],\n onFilter: () => null,\n onRemoveFilter: () => null,\n onClearFilter: () => null,\n onResetFilter: () => Promise.resolve({}),\n asyncRowOptionsFilter: () => Promise.resolve({}),\n },\n sortConfig = {\n onSort: () => null,\n columnSort: { field: \"\", order: \"\" },\n onRemoveSort: () => null,\n },\n headerConfig = {\n showExportButton: null,\n showFilters: true,\n showSorts: true,\n showSearch: true,\n showTableView: true,\n showTableViewAsModal: false,\n content: null,\n postContent: null,\n preContent: null,\n isLoading: false,\n showDivider: false,\n },\n hoverConfig = null,\n columns,\n modelName,\n enableMasterDataEnumSuggestions = false,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId,\n enumSuggestionsData,\n data = [],\n onRowClick,\n showHeader,\n tableActions,\n rowOptions,\n hideRowOptionWidth,\n checkboxUtilities,\n isLoading = false,\n onScroll,\n onScrolling,\n isColumnConfigurable,\n onAddColumnClick,\n emptyMessage,\n noDataWidget,\n buttons,\n onEditColumnClick,\n onDeleteColumnClick,\n onRowTooltipClick,\n tooltiptext,\n cascadingTableConfig,\n originalsOnly,\n disableOptionsForRowIndex,\n tableHeightClass = \"h-[calc(100vh-220px)]\",\n getFullRowDataOnClick,\n selectedRowId = null,\n onRowEdit,\n onBulkRowEdit,\n inlineEditColumns,\n isResizable = true,\n paginationConfig,\n dndSortableUtils,\n multipleContexts,\n withSortable,\n withDraggable,\n enableRootDrag,\n pageSize = DEFAULT_PAGE_SIZE,\n onCascadingRowExpand,\n totalItems,\n showRecordCount = false,\n getInnerRowData,\n maxLevel,\n expandedRows = {},\n setExpandedRows,\n showNewItem,\n rawData,\n dragConfig,\n isOverlayLoading,\n style = {},\n floatingBarConfig,\n rowWrapper,\n rowLinkConfig,\n isCellClickDisabled,\n setHeaderOnParent,\n optimizeTable = false,\n multiSelectConfig,\n headerContextOptions,\n showHeaderContextOptions,\n setShowHeaderContextOptions,\n showDataTypeIcon = false,\n rowAdditionalActions,\n rowAdditionalActionsWidth,\n setVisibleHeaders,\n cellEditing = null,\n cellEditingValue = null,\n allowInlineEdit = false,\n onFieldOperationFlow,\n fieldOperationLoading = null,\n onTableActionsReady,\n onPendingEditsChange,\n onCancelPendingEdits,\n }: ITableProps) => {\n const tableConfig = useTableConfig();\n\n // Row slot height tracks the `h-row` viewport clamp so the paginated\n // container sizes to the rows the virtualized body actually renders.\n const rowSlotHeight = getRowSlotHeight(useRowHeight());\n\n const isSearch = Boolean(searchConfig?.search);\n\n const isFilters = filterConfig?.columnFilters?.length > 0;\n const isAnyFilters = isSearch || isFilters;\n\n const isCheckbox = Boolean(checkboxUtilities);\n\n const defaultTableView =\n tableConfig?.getTableView?.(tableKey as string) ?? null;\n const [selectedTableView, setSelectedTableView] =\n useState<ITableView | null>(defaultTableView || null);\n const isReadOnlyView = !canEditTableView(\n selectedTableView,\n tableConfig?.getUserId?.()\n );\n const [showFilters, setShowFilters] = useState(false);\n const [showSorts, setShowSorts] = useState(false);\n const [newFilterColumn, setNewFilterColumn] = useState<unknown>(null);\n const [tableHeaders, setTableHeaders] = useState<IColumn[]>(columns);\n const isEmpty = (data.length === 0 || !tableHeaders.length) && !isLoading;\n const [showHeaderOptions, setShowHeaderOptions] = useState<string | null>(\n null\n );\n const [showDataFilterModal, setShowDataFilterModal] =\n useState<boolean>(false);\n const [dataFilterColumn, setDataFilterColumn] = useState<unknown>(null);\n const [isAllChecked, setIsAllChecked] = useState(false);\n const [isShowSortArrowAsc, setIsShowSortArrowAsc] = useState<string | null>(\n null\n );\n const [isShowSortArrowDesc, setIsShowSortArrowDesc] = useState<\n string | null\n >(null);\n const [sortableListByContext, setSortableListByContext] = useState<\n Record<string, unknown>\n >({});\n const [activeItem, setActiveItem] = useState<ReactTableRow<object> | null>(\n null\n );\n const [dndLoading, setDndLoading] = useState<boolean>(false);\n const [headerDivWidth, setHeaderDivWidth] = useState(0);\n const headerDivRef = useRef<HTMLDivElement>(null);\n const tableContainerRef = useRef<HTMLDivElement>(null);\n const [tableContainerSize, setTableContainerSize] = useState({\n width: 0,\n height: 0,\n });\n const [activeInlineEdit, setActiveInlineEdit] = useState<{\n rowId: string;\n columnKey: string;\n } | null>(null);\n const [masterDataModalConfig, setMasterDataModalConfig] =\n useState<IMasterDataModalConfig | null>(null);\n const [selectedMasterData, setSelectedMasterData] = useState<{\n value: unknown;\n reference: unknown;\n } | null>(null);\n const [currencyDropdownConfig, setCurrencyDropdownConfig] =\n useState<ICurrencyDropdownConfig | null>(null);\n const [selectedCurrenciesMap, setSelectedCurrenciesMap] = useState<\n Record<string, string>\n >({});\n const hasAppliedInitialFilters = useRef(false);\n const userClearedFiltersRef = useRef(false);\n\n const selectedTableViewRef = useRef(selectedTableView);\n selectedTableViewRef.current = selectedTableView;\n const tableConfigRef = useRef(tableConfig);\n tableConfigRef.current = tableConfig;\n const columnsRef = useRef(columns);\n columnsRef.current = columns;\n const filterConfigRef = useRef(filterConfig);\n filterConfigRef.current = filterConfig;\n const headerGroupsRef = useRef<unknown[] | null>(null);\n const resolveTableViewRef = useRef<() => ITableView>(\n () => ({}) as ITableView\n );\n const computeListRef = useRef<() => unknown>(() => ({}));\n\n const [pendingEdits, setPendingEdits] = useState<PendingEditsMap>({});\n\n const addPendingEdit = useCallback(\n (rowId: string, columnKey: string, edit: IPendingEdit) => {\n setPendingEdits((prev) => {\n const existingEdit = prev[rowId]?.[columnKey];\n let resolvedValidationError: string | null | undefined =\n edit.validationError;\n if (resolvedValidationError === undefined) {\n const column = tableHeaders.find((col) => col.key === columnKey);\n if (column) {\n const result = validateCellValue(\n edit.value,\n column as { type?: string; is_required?: boolean }\n );\n resolvedValidationError = !result.isValid\n ? result.error || \"Invalid\"\n : null;\n } else {\n resolvedValidationError = existingEdit?.validationError ?? null;\n }\n }\n return {\n ...prev,\n [rowId]: {\n ...(prev[rowId] || {}),\n [columnKey]: {\n ...edit,\n validationError: resolvedValidationError ?? null,\n },\n },\n };\n });\n },\n [tableHeaders]\n );\n\n const hasPendingEdits = useCallback(() => {\n return Object.values(pendingEdits).some(\n (rowEdits) => Object.keys(rowEdits).length > 0\n );\n }, [pendingEdits]);\n\n useEffect(() => {\n if (onTableActionsReady)\n onTableActionsReady({\n addPendingEdit: addPendingEdit as (\n rowId: string,\n columnKey: string,\n edit: { value: unknown; originalValue?: unknown; meta?: unknown }\n ) => void,\n hasPendingEdits,\n });\n }, [onTableActionsReady, addPendingEdit, hasPendingEdits]);\n\n const removePendingEdit = useCallback(\n (rowId: string, columnKey: string) => {\n setPendingEdits((prev) => {\n const newEdits = { ...prev };\n if (newEdits[rowId]) {\n const { [columnKey]: _removed, ...rest } = newEdits[rowId];\n void _removed;\n if (Object.keys(rest).length === 0) delete newEdits[rowId];\n else newEdits[rowId] = rest;\n }\n return newEdits;\n });\n },\n []\n );\n\n const getPendingEdit = useCallback(\n (rowId: string, columnKey: string): IPendingEdit | undefined =>\n pendingEdits[rowId]?.[columnKey],\n [pendingEdits]\n );\n\n const hasPendingEdit = useCallback(\n (rowId: string, columnKey: string): boolean =>\n Boolean(pendingEdits[rowId]?.[columnKey]),\n [pendingEdits]\n );\n\n const clearAllPendingEdits = useCallback(() => {\n if (fieldOperationLoading) return;\n if (onCancelPendingEdits && Object.keys(pendingEdits).length > 0)\n onCancelPendingEdits(pendingEdits);\n setPendingEdits({});\n setSelectedCurrenciesMap({});\n setActiveInlineEdit(null);\n }, [fieldOperationLoading, onCancelPendingEdits, pendingEdits]);\n\n const scrollToCell = useCallback(\n (rowId: string, columnKey: string, rowIndex: number) => {\n setTimeout(() => {\n tableConfig?.dispatchEvent?.(\"SCROLL_TO_TABLE_ROW\", { rowIndex });\n const colIndex = tableHeaders.findIndex(\n (col) => col.key === columnKey\n );\n setTimeout(() => {\n const cellElement = document.querySelector(\n `[${DATA_ROW_ID_ATTR}=\"${rowId}\"] [${DATA_COLUMN_KEY_ATTR}=\"${columnKey}\"]`\n );\n if (cellElement) {\n cellElement.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n inline: \"center\",\n });\n } else if (colIndex > 0) {\n const scrollContainer =\n document.querySelector(OS_VIEWPORT_SELECTOR);\n if (scrollContainer) {\n let scrollLeft = 0;\n for (let i = 0; i < colIndex; i++) {\n const col = tableHeaders[i];\n if (!col?.sticky)\n scrollLeft +=\n col?.width || SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK;\n }\n scrollLeft = Math.max(\n 0,\n scrollLeft - SCROLL_TO_CELL_LEFT_OFFSET\n );\n scrollContainer.scrollTo({\n left: scrollLeft,\n behavior: \"smooth\",\n });\n }\n }\n setActiveInlineEdit({ rowId, columnKey });\n }, 350);\n }, 100);\n },\n [tableHeaders, tableConfig]\n );\n\n const validateAllPendingEdits = useCallback(\n (\n editsToValidate: PendingEditsMap\n ): {\n hasErrors: boolean;\n updatedEdits: PendingEditsMap;\n firstError: { rowId: string; columnKey: string } | null;\n errorTypes: Set<string>;\n } => {\n let hasErrors = false;\n let firstError: { rowId: string; columnKey: string } | null = null;\n const updatedEdits: PendingEditsMap = {};\n const errorTypes = new Set<string>();\n\n Object.entries(editsToValidate).forEach(([rowId, rowEdits]) => {\n updatedEdits[rowId] = {};\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n const column = tableHeaders.find((col) => col.key === columnKey);\n const result = validateCellValue(\n edit.value,\n column as { type?: string; is_required?: boolean }\n );\n if (!result.isValid) {\n hasErrors = true;\n if (result.error) errorTypes.add(result.error);\n if (!firstError) firstError = { rowId, columnKey };\n updatedEdits[rowId][columnKey] = {\n ...edit,\n validationError: result.error,\n };\n } else {\n updatedEdits[rowId][columnKey] = {\n ...edit,\n validationError: null,\n };\n }\n });\n });\n\n return { hasErrors, updatedEdits, firstError, errorTypes };\n },\n [tableHeaders]\n );\n\n const getValidationToastMessage = useCallback((errorTypes: Set<string>) => {\n const hasRequired = errorTypes.has(\"Field required\");\n const hasFormat = errorTypes.size > (hasRequired ? 1 : 0);\n if (hasRequired && hasFormat)\n return \"Missing required field(s) and invalid format detected. Please review highlighted field(s).\";\n if (hasRequired)\n return \"Missing required field(s). Please review highlighted field(s).\";\n return \"Invalid field value(s). Please review highlighted field(s).\";\n }, []);\n\n const saveAllPendingEdits = useCallback(() => {\n const { hasErrors, updatedEdits, firstError, errorTypes } =\n validateAllPendingEdits(pendingEdits);\n if (hasErrors) {\n setPendingEdits(updatedEdits);\n tableConfig?.showNotification?.(\n \"error\",\n getValidationToastMessage(errorTypes)\n );\n if (firstError) {\n const rowIndex = data.findIndex(\n (row: Record<string, unknown>) => row.id === firstError!.rowId\n );\n scrollToCell(firstError!.rowId, firstError!.columnKey, rowIndex);\n }\n return;\n }\n\n const editedRows: Array<Record<string, unknown>> = [];\n Object.entries(pendingEdits).forEach(([rowId, rowEdits]) => {\n const originalRow = data.find(\n (row: Record<string, unknown>) => row.id === rowId\n );\n if (originalRow) {\n const updatedRow = { ...originalRow };\n const editedFields: Record<\n string,\n { value: unknown; meta?: unknown }\n > = {};\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n updatedRow[columnKey] = edit.value;\n editedFields[columnKey] = { value: edit.value, meta: edit.meta };\n });\n editedRows.push({ ...updatedRow, __editedFields: editedFields });\n }\n });\n\n if (editedRows.length > 0) {\n if (onBulkRowEdit) onBulkRowEdit(editedRows);\n else if (onRowEdit)\n onRowEdit(null, null, null, null, null, {\n isBulk: true,\n rows: editedRows,\n });\n }\n\n setPendingEdits({});\n setSelectedCurrenciesMap({});\n setActiveInlineEdit(null);\n }, [\n pendingEdits,\n data,\n onRowEdit,\n onBulkRowEdit,\n validateAllPendingEdits,\n getValidationToastMessage,\n scrollToCell,\n tableConfig,\n ]);\n\n const clearRowPendingEdits = useCallback(\n (rowId: string) => {\n if (fieldOperationLoading) return;\n const rowEdits = pendingEdits[rowId];\n if (rowEdits && onCancelPendingEdits)\n onCancelPendingEdits({ [rowId]: rowEdits });\n setPendingEdits((prev) => {\n const n = { ...prev };\n delete n[rowId];\n return n;\n });\n setSelectedCurrenciesMap((prev) => {\n const n = { ...prev };\n Object.keys(n).forEach((k) => {\n if (k.startsWith(`${rowId}-`)) delete n[k];\n });\n return n;\n });\n setActiveInlineEdit(null);\n },\n [fieldOperationLoading, onCancelPendingEdits, pendingEdits]\n );\n\n const saveRowPendingEdits = useCallback(\n (rowId: string) => {\n const rowEdits = pendingEdits[rowId];\n if (!rowEdits || Object.keys(rowEdits).length === 0) return;\n\n const { hasErrors, updatedEdits, firstError, errorTypes } =\n validateAllPendingEdits({ [rowId]: rowEdits });\n if (hasErrors) {\n setPendingEdits((prev) => ({\n ...prev,\n [rowId]: updatedEdits[rowId],\n }));\n tableConfig?.showNotification?.(\n \"error\",\n getValidationToastMessage(errorTypes)\n );\n if (firstError) {\n const rowIndex = data.findIndex(\n (row: Record<string, unknown>) => row.id === firstError!.rowId\n );\n scrollToCell(firstError!.rowId, firstError!.columnKey, rowIndex);\n }\n return;\n }\n\n const originalRow = data.find(\n (row: Record<string, unknown>) => row.id === rowId\n );\n if (!originalRow) return;\n const updatedRow = { ...originalRow };\n const editedFields: Record<string, { value: unknown; meta?: unknown }> =\n {};\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n updatedRow[columnKey] = edit.value;\n editedFields[columnKey] = { value: edit.value, meta: edit.meta };\n });\n\n const editedRowData = { ...updatedRow, __editedFields: editedFields };\n\n if (onBulkRowEdit) onBulkRowEdit([editedRowData]);\n else if (onRowEdit)\n onRowEdit(null, null, null, null, null, {\n isBulk: true,\n rows: [editedRowData],\n });\n\n setPendingEdits((prev) => {\n const n = { ...prev };\n delete n[rowId];\n return n;\n });\n setSelectedCurrenciesMap((prev) => {\n const n = { ...prev };\n Object.keys(n).forEach((k) => {\n if (k.startsWith(`${rowId}-`)) delete n[k];\n });\n return n;\n });\n setActiveInlineEdit(null);\n },\n [\n pendingEdits,\n data,\n onRowEdit,\n onBulkRowEdit,\n validateAllPendingEdits,\n getValidationToastMessage,\n scrollToCell,\n tableConfig,\n ]\n );\n\n const pendingEditsCount = useMemo(() => {\n return Object.values(pendingEdits).reduce(\n (total, rowEdits) => total + Object.keys(rowEdits).length,\n 0\n );\n }, [pendingEdits]);\n\n useEffect(() => {\n onPendingEditsChange?.(pendingEditsCount > 0, pendingEditsCount);\n }, [pendingEditsCount, onPendingEditsChange]);\n\n const pendingEditsList = useMemo(() => {\n const list: Array<{\n rowId: string;\n columnKey: string;\n fieldName: string;\n value: unknown;\n originalValue: unknown;\n meta?: IPendingEdit[\"meta\"];\n originalMeta?: IPendingEdit[\"originalMeta\"];\n rowIndex: number;\n }> = [];\n Object.entries(pendingEdits).forEach(([rowId, rowEdits]) => {\n const rowIndex = data.findIndex(\n (row: Record<string, unknown>) => row.id === rowId\n );\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n const column = tableHeaders.find((col) => col.key === columnKey);\n list.push({\n rowId,\n columnKey,\n fieldName: column?.Header || column?.display_name || columnKey,\n value: edit.value,\n originalValue: edit.originalValue,\n meta: edit.meta,\n originalMeta: edit.originalMeta,\n rowIndex,\n });\n });\n });\n return list;\n }, [pendingEdits, tableHeaders, data]);\n\n const rowsWithPendingEdits = useMemo(() => {\n const rowsMap = new Map<\n string,\n { rowId: string; rowIndex: number; editCount: number }\n >();\n Object.entries(pendingEdits).forEach(([rowId, rowEdits]) => {\n const rowIndex = data.findIndex(\n (row: Record<string, unknown>) => row.id === rowId\n );\n rowsMap.set(rowId, {\n rowId,\n rowIndex,\n editCount: Object.keys(rowEdits).length,\n });\n });\n return Array.from(rowsMap.values()).sort(\n (a, b) => a.rowIndex - b.rowIndex\n );\n }, [pendingEdits, data]);\n\n const openMasterDataModal = useCallback(\n (config: IMasterDataModalConfig) => setMasterDataModalConfig(config),\n []\n );\n const closeMasterDataModal = useCallback(\n () => setMasterDataModalConfig(null),\n []\n );\n\n const handleMasterDataSelected = useCallback(\n (value: unknown, row?: unknown) => {\n setSelectedMasterData({ value, reference: row });\n if (masterDataModalConfig?.onSelected)\n masterDataModalConfig.onSelected(value, row);\n closeMasterDataModal();\n },\n [masterDataModalConfig, closeMasterDataModal]\n );\n\n const clearSelectedMasterData = useCallback(\n () => setSelectedMasterData(null),\n []\n );\n\n const openCurrencyDropdown = useCallback(\n (config: ICurrencyDropdownConfig) => setCurrencyDropdownConfig(config),\n []\n );\n const closeCurrencyDropdown = useCallback(\n () => setCurrencyDropdownConfig(null),\n []\n );\n\n const setCurrencyForCell = useCallback(\n (cellKey: string, currency: string) => {\n setSelectedCurrenciesMap((prev) => ({ ...prev, [cellKey]: currency }));\n },\n []\n );\n\n const getCurrencyForCell = useCallback(\n (cellKey: string): string | undefined => selectedCurrenciesMap[cellKey],\n [selectedCurrenciesMap]\n );\n\n const fallbackHeight = useMemo(() => {\n const pxMatch = tableHeightClass.match(/h-\\[(\\d+px)\\]/);\n if (pxMatch) return pxMatch[1];\n const calcMatch = tableHeightClass.match(/h-\\[(calc\\(.+\\))\\]/);\n if (calcMatch)\n return calcMatch[1].replace(/([+-])/g, \" $1 \").replace(/\\s+/g, \" \");\n return undefined;\n }, [tableHeightClass]);\n\n const emptySwitchProps = {\n isEmpty,\n isFilters: isAnyFilters,\n isColumnConfigurable,\n handleOnClick: onAddColumnClick,\n emptyMessage,\n buttons,\n noDataWidget,\n };\n const translatedCreateColumnLabel =\n tableConfig?.t?.(CREATE_COLUMN_LABEL) ?? CREATE_COLUMN_LABEL;\n const defaultEmptyText = isAnyFilters\n ? \"No Results Found\"\n : emptyMessage || \"No Data Found\";\n const resolvedEmptyText =\n typeof defaultEmptyText === \"string\"\n ? (tableConfig?.t?.(defaultEmptyText) ?? defaultEmptyText)\n : defaultEmptyText;\n\n const loaderData = { __isLoading: true };\n const cellLoaders = new Array(1).fill(loaderData);\n const tableLoaders = new Array(pageSize).fill(loaderData);\n\n const visibleColumns = useMemo(\n () => tableHeaders.filter((header) => Boolean(header?.visible)),\n [tableHeaders]\n );\n\n const table = useTable(\n {\n columns: optimizeTable ? visibleColumns : tableHeaders,\n data: [\n ...data,\n ...(isLoading ? (data?.length ? cellLoaders : tableLoaders) : []),\n ],\n defaultColumn: {\n minWidth: DEFAULT_COLUMN_MIN_WIDTH,\n width: DEFAULT_COLUMN_WIDTH,\n maxWidth: DEFAULT_COLUMN_MAX_WIDTH,\n },\n },\n useResizeColumns\n );\n\n const { getTableProps, getTableBodyProps, headerGroups, prepareRow, rows } =\n table;\n headerGroupsRef.current = headerGroups;\n\n const headerKeys = JSON.stringify(\n headerGroups[0]?.headers?.map(\n (header) => (header as unknown as Record<string, unknown>)?.Header\n )\n );\n useEffect(() => {\n if (setVisibleHeaders) {\n const groups = headerGroupsRef.current as Array<{\n headers?: Array<Record<string, unknown>>;\n }> | null;\n setVisibleHeaders?.(\n groups?.[0]?.headers?.map((header) => header?.Header as string) ?? []\n );\n }\n }, [headerKeys, setVisibleHeaders]);\n\n const { checkboxConfig } = useCheckbox({\n rows: rows as never,\n checkedIds: checkboxUtilities?.checkedIds as string[],\n isCheckAllDisabled: checkboxUtilities?.isCheckAllDisabled,\n selectionDisabledRowIds: checkboxUtilities?.selectionDisabledRowIds,\n rawData,\n onAllChecked: setIsAllChecked,\n setCheckedIds: checkboxUtilities?.setCheckedIds as (\n ids: string[]\n ) => void,\n checkboxMetadata: checkboxUtilities?.checkboxMetadata as {\n checkedIds: string[];\n tooltip: string;\n highlight: string;\n },\n });\n\n const sensors = useSensors(\n useSensor(MouseSensor, {\n activationConstraint: { distance: DND_ACTIVATION_DISTANCE },\n }),\n useSensor(TouchSensor, {\n activationConstraint: { distance: DND_ACTIVATION_DISTANCE },\n })\n );\n\n const dropAnimation: DropAnimation = {\n easing: DROP_ANIMATION_EASING,\n duration: DROP_ANIMATION_DURATION,\n };\n\n function computeList() {\n if (!multipleContexts?.length || !withSortable) return rows;\n return multipleContexts.reduce(\n (acc: Record<string, unknown>, contextKey: string) => {\n acc[contextKey] = rows.filter(\n (e) => (e.original as Record<string, unknown>)?.type === contextKey\n );\n return acc;\n },\n {}\n );\n }\n computeListRef.current = computeList;\n\n const handleDragStart = (event: DragStartEvent) => {\n const { active } = event;\n setActiveItem(\n rows.find(\n (item) =>\n (item.original as Record<string, unknown>)?.id === active?.id\n ) ?? null\n );\n };\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n if (!over) return;\n if (dndSortableUtils?.checkDndDragEnd) {\n dndSortableUtils.checkDndDragEnd(\n active,\n over,\n sortableListByContext,\n (newState: Record<string, unknown>) => {\n setSortableListByContext(newState as Record<string, unknown>);\n setDndLoading(true);\n dndSortableUtils.onDragSuccess?.({\n draggedId: active.id as string,\n droppedId: over.id as string,\n draggedType: (active.data.current as Record<string, unknown>)\n ?.type,\n droppedType: (over.data.current as Record<string, unknown>)?.type,\n updatedList: newState,\n cb: () => setDndLoading(false),\n });\n }\n );\n }\n setActiveItem(null);\n };\n\n const handleDragCancel = () => setActiveItem(null);\n\n const toggleHeaderOption = (key: string) => {\n if (!sortConfig?.onSort && !filterConfig?.onFilter) return;\n if (showHeaderOptions === key) setShowHeaderOptions(null);\n else setShowHeaderOptions(key);\n };\n\n const toggleDataFilterModal = (col: unknown) => {\n setDataFilterColumn(col);\n setShowDataFilterModal(!showDataFilterModal);\n setShowHeaderOptions(null);\n };\n\n const handleRemoveSort = useCallback(() => {\n if (sortConfig?.onRemoveSort) sortConfig.onRemoveSort();\n else if (sortConfig?.onSort) sortConfig.onSort(\"\", \"\");\n }, [sortConfig]);\n\n const toggleShowFilters = useCallback((col: unknown = null) => {\n setNewFilterColumn(col);\n setShowFilters((prev) => (col ? true : !prev));\n }, []);\n const toggleShowSorts = useCallback(\n () => setShowSorts((prev) => !prev),\n []\n );\n\n const lastNonStickyColumnIndex = () => {\n const reverseHeaders = (\n headerGroups[0]?.headers as unknown as Array<Record<string, unknown>>\n )?.filter((header) => header?.visible !== false);\n for (let i = 0; i < reverseHeaders.length; i++) {\n if (reverseHeaders[i].sticky) return i - 1;\n }\n return reverseHeaders.length - 1;\n };\n\n const getSumOfNextVisibleColumnWidth = useCallback(\n (currentIndex: number) => {\n let sum = 0;\n for (let i = currentIndex + 1; i < visibleColumns.length; i++) {\n if (visibleColumns[i].visible !== false)\n sum += visibleColumns[i].width ?? 0;\n }\n if (rowAdditionalActions)\n sum +=\n rowAdditionalActionsWidth || ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH;\n if (rowOptions)\n sum += hideRowOptionWidth ? 0 : ROW_OPTIONS_COLUMN_WIDTH;\n return sum;\n },\n [\n visibleColumns,\n rowAdditionalActionsWidth,\n hideRowOptionWidth,\n rowAdditionalActions,\n rowOptions,\n ]\n );\n\n const resolveTableView = (): ITableView => {\n const userId = tableConfig?.getUserId?.();\n return {\n ...(selectedTableView || {}),\n name: selectedTableView?.name || \"Untitled View\",\n created_by: selectedTableView?.created_by || userId,\n filters: selectedTableView?.filters || filterConfig?.columnFilters,\n id: selectedTableView?.id || \"untitled-view\",\n table_key: selectedTableView?.table_key || tableKey,\n columns:\n selectedTableView?.columns ||\n columns?.map((column, index) => ({\n name: column.Header,\n width: column.width,\n visible: column.visible,\n sticky: column.sticky,\n order: index + 1,\n display_name: column.Header,\n sequence: index + 1,\n Header: column.Header,\n })),\n };\n };\n resolveTableViewRef.current = resolveTableView;\n\n const handleUpdateColumnWidth = (columnName: string, width: number) => {\n if (isReadOnlyView) return;\n\n const updatedTableView = resolveTableView();\n setSelectedTableView({\n ...updatedTableView,\n columns: updatedTableView?.columns?.map((column) =>\n column.name === columnName ? { ...column, width } : column\n ),\n unsaved: true,\n });\n };\n\n useEffect(() => {\n if (filterConfig?.columnFilters?.length > 0) setShowFilters(true);\n if (isReadOnlyView) return;\n const currentView = selectedTableViewRef.current;\n if (\n JSON.stringify(currentView?.filters || []) !==\n JSON.stringify(filterConfig?.columnFilters || [])\n ) {\n const hasViewFilters = (currentView?.filters?.length ?? 0) > 0;\n const hasConfigFilters = filterConfig?.columnFilters?.length > 0;\n // Skip sync only during the initial load window where the view already has filters\n // but they haven't propagated to columnFilters yet. If the user explicitly cleared\n // filters from ActiveFilters (X button or Clear), we must propagate the empty state.\n const isClearingFilters =\n hasViewFilters && !hasConfigFilters && !userClearedFiltersRef.current;\n if (!isClearingFilters) {\n const updatedTableView = resolveTableViewRef.current();\n setSelectedTableView({\n ...updatedTableView,\n filters: JSON.parse(\n JSON.stringify(filterConfig?.columnFilters || [])\n ),\n unsaved: true,\n });\n }\n userClearedFiltersRef.current = false;\n }\n }, [filterConfig?.columnFilters, isReadOnlyView]);\n\n const handleActiveRemoveFilter = useCallback(\n (key: string) => {\n userClearedFiltersRef.current = true;\n filterConfig?.onRemoveFilter?.(key);\n },\n [filterConfig?.onRemoveFilter]\n );\n\n const handleActiveClearFilter = useCallback(() => {\n userClearedFiltersRef.current = true;\n filterConfig?.onClearFilter?.();\n }, [filterConfig?.onClearFilter]);\n\n useEffect(() => {\n if (sortConfig?.columnSort?.field) {\n setShowSorts(true);\n if (sortConfig.columnSort.order === \"asc\") {\n setIsShowSortArrowAsc(sortConfig.columnSort.field);\n setIsShowSortArrowDesc(null);\n } else if (sortConfig.columnSort.order === \"desc\") {\n setIsShowSortArrowDesc(sortConfig.columnSort.field);\n setIsShowSortArrowAsc(null);\n }\n } else {\n setIsShowSortArrowAsc(null);\n setIsShowSortArrowDesc(null);\n }\n }, [sortConfig?.columnSort?.field, sortConfig?.columnSort?.order]);\n\n useEffect(() => {\n setTableHeaders(\n mergeViewColumnsWithTableColumns(\n selectedTableViewRef.current?.columns || [],\n columns\n )\n );\n }, [columns]);\n\n useEffect(() => {\n if (selectedTableView?.unsaved)\n tableConfigRef.current?.persistTableView?.(selectedTableView);\n }, [selectedTableView]);\n\n useEffect(() => {\n setSortableListByContext(\n computeListRef.current() as Record<string, unknown>\n );\n }, [rows.length]);\n\n useEffect(() => {\n setSelectedTableView(defaultTableView || null);\n if (defaultTableView?.columns) {\n setTableHeaders(\n mergeViewColumnsWithTableColumns(\n defaultTableView?.columns || [],\n columnsRef.current\n )\n );\n }\n if (\n defaultTableView?.filters &&\n defaultTableView.filters.length > 0 &&\n !hasAppliedInitialFilters.current\n ) {\n requestAnimationFrame(() => {\n filterConfigRef.current?.onFilter?.(defaultTableView.filters);\n });\n hasAppliedInitialFilters.current = true;\n } else if (\n defaultTableView?.filters &&\n hasAppliedInitialFilters.current\n ) {\n const filtersAreDifferent =\n JSON.stringify(defaultTableView.filters) !==\n JSON.stringify(filterConfigRef.current?.columnFilters);\n if (filtersAreDifferent)\n filterConfigRef.current?.onFilter?.(defaultTableView.filters);\n }\n }, [defaultTableView]);\n\n useEffect(() => {\n if (headerDivRef.current) {\n const resizeObserver = new ResizeObserver((entries) =>\n setHeaderDivWidth(entries[0].contentRect.width)\n );\n resizeObserver.observe(headerDivRef.current);\n return () => resizeObserver.disconnect();\n }\n }, []);\n\n useEffect(() => {\n if (!tableContainerRef.current) return;\n const resizeObserver = new ResizeObserver((entries) => {\n const { width, height } = entries[0].contentRect;\n setTableContainerSize({ width, height });\n });\n resizeObserver.observe(tableContainerRef.current);\n return () => resizeObserver.disconnect();\n }, []);\n\n const tableHeader = (\n <Head\n isResizable={isResizable}\n headerGroups={headerGroups as never}\n isCheckbox={isCheckbox}\n checkboxConfig={checkboxConfig}\n isAllChecked={isAllChecked}\n showHeaderOptions={showHeaderOptions ?? \"\"}\n setShowHeaderOptions={setShowHeaderOptions}\n isShowSortArrowAsc={isShowSortArrowAsc}\n isShowSortArrowDesc={isShowSortArrowDesc}\n onSort={\n sortConfig?.onSort as\n | ((field: string, order?: string) => void)\n | undefined\n }\n onFilter={filterConfig?.onFilter}\n toggleHeaderOption={toggleHeaderOption}\n setIsShowSortArrowAsc={setIsShowSortArrowAsc}\n setIsShowSortArrowDesc={setIsShowSortArrowDesc}\n toggleDataFilterModal={toggleShowFilters}\n rowOptions={(Array.isArray(rowOptions) ? rowOptions : []) as unknown[]}\n isColumnConfigurable={isColumnConfigurable ?? false}\n onAddColumnClick={\n onAddColumnClick as (column: {\n id: string;\n key: string;\n [k: string]: unknown;\n }) => void\n }\n onEditColumnClick={\n onEditColumnClick as (column: {\n id: string;\n key: string;\n [k: string]: unknown;\n }) => void\n }\n onDeleteColumnClick={\n onDeleteColumnClick as (column: {\n id: string;\n key: string;\n [k: string]: unknown;\n }) => void\n }\n tableActions={tableActions || null}\n isLoading={isLoading}\n rowAdditionalActions={\n (rowAdditionalActions ?? null) as (() => React.ReactNode) | null\n }\n showPendingEditsColumn={pendingEditsCount > 0}\n />\n );\n\n const tableView = (\n <>\n {dndLoading || isOverlayLoading ? (\n <div className=\"absolute left-0 top-0 w-full h-full z-40 flex items-center justify-center bg-neutral-100 dark:bg-black-700\" />\n ) : null}\n <div\n {...getTableProps()}\n className=\"w-full text-sm text-left text-neutral-500 dark:text-neutral-200 h-full bg-white dark:bg-black-800\"\n >\n {isEmpty ? (\n <div className=\"z-10\">\n {tableHeader}\n <div className=\"absolute w-full\">\n {tableConfig?.renderEmpty ? (\n tableConfig.renderEmpty(emptySwitchProps)\n ) : (\n <div className=\"flex flex-col items-center justify-center w-full h-[12rem] text-neutral-900 dark:text-neutral-200 mt-8\">\n {noDataWidget && !isAnyFilters ? (\n <NoDataFoundWidgets widgetType=\"TABLE\" />\n ) : (\n <NoDataFound text={resolvedEmptyText} />\n )}\n {isColumnConfigurable && !isAnyFilters ? (\n <div className=\"my-4\">\n <Button\n id=\"btn-table-shell-create-column\"\n status=\"primary\"\n appearance=\"ghost\"\n onClick={\n onAddColumnClick as\n | ((\n event: React.MouseEvent<HTMLButtonElement>\n ) => void)\n | undefined\n }\n >\n <Add2Icon className=\"text-white dark:text-white\" />{\" \"}\n {translatedCreateColumnLabel}\n </Button>\n </div>\n ) : null}\n {!isAnyFilters &&\n buttons?.map((button, index) => (\n <Button\n key={`${button.label}-${index}`}\n status=\"secondary\"\n id={getEmptyButtonId(button.label, index)}\n onClick={button.onClick}\n >\n {tableConfig?.t?.(button.label) ?? button.label}\n </Button>\n ))}\n </div>\n )}\n </div>\n </div>\n ) : (\n <AutoSizer\n style={{ width: \"100%\", height: \"100%\" }}\n renderProp={({ width, height }) => {\n const effectiveWidth =\n width > 0 ? width : tableContainerSize.width;\n const effectiveHeight =\n height > 0 ? height : tableContainerSize.height;\n return effectiveWidth > 0 && effectiveHeight > 0 ? (\n <Body\n {...{\n getTableBodyProps:\n getTableBodyProps as unknown as () => Record<\n string,\n unknown\n >,\n rows: rows as never,\n prepareRow: prepareRow as never,\n isLoading,\n onScroll,\n onScrolling,\n columns,\n width: effectiveWidth,\n height: effectiveHeight,\n withSortable,\n allowAstarSearch: searchConfig?.allowAStarSearch || false,\n }}\n />\n ) : null;\n }}\n />\n )}\n </div>\n </>\n );\n\n const tableWrapper = forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n >((props, ref) => (\n <div className=\"h-full w-full\" {...props} ref={ref}>\n {tableHeader}\n <div className=\"relative w-full h-full\">{props?.children}</div>\n </div>\n ));\n\n const tableBodyWrapper = forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n >((props, ref) => (\n <div className=\"h-full w-full\" {...props} ref={ref}>\n <div className=\"relative w-full h-full\">{props?.children}</div>\n </div>\n ));\n\n const TableHeaderComponent = useMemo(() => {\n if (tableConfig?.renderTableHeader) {\n return tableConfig.renderTableHeader({\n tableKey,\n search: searchConfig?.search,\n handleSearch: searchConfig?.handleSearch,\n toggleShowFilters,\n toggleShowSorts,\n filterCounts: filterConfig?.columnFilters?.length,\n columns,\n columnFilters: filterConfig?.columnFilters,\n setSelectedTableView,\n selectedTableView,\n enableTableView: headerConfig?.showTableView,\n modelName: modelName as string,\n enableMasterDataEnumSuggestions,\n onRemoveFilter: filterConfig?.onRemoveFilter,\n onClearFilter: filterConfig?.onClearFilter,\n onFilter: filterConfig?.onFilter,\n data: enumSuggestionsData ?? data,\n tableHeaders,\n showTableViewAsModal: headerConfig?.showTableViewAsModal,\n additionalOptions: headerConfig?.additionalOptions,\n inlineActions: headerConfig?.inlineActions,\n showFilters: headerConfig?.showFilters,\n showSorts: headerConfig?.showSorts,\n showSearch: headerConfig?.showSearch,\n isLoading: Boolean(headerConfig?.isLoading),\n setTableHeaders,\n allowAStarSearch: Boolean(searchConfig?.allowAStarSearch),\n withContent: !!headerConfig?.content,\n setShowFilters,\n sort: sortConfig?.columnSort,\n onSort: sortConfig?.onSort,\n onRemoveSort: handleRemoveSort,\n showExportButton: headerConfig?.showExportButton,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId,\n });\n }\n return null;\n }, [\n tableKey,\n searchConfig?.search,\n searchConfig?.handleSearch,\n toggleShowFilters,\n toggleShowSorts,\n filterConfig?.columnFilters,\n columns,\n setSelectedTableView,\n selectedTableView,\n headerConfig,\n modelName,\n filterConfig?.onRemoveFilter,\n filterConfig?.onClearFilter,\n filterConfig?.onFilter,\n data,\n enumSuggestionsData,\n tableHeaders,\n sortConfig?.columnSort,\n sortConfig?.onSort,\n handleRemoveSort,\n tableConfig,\n searchConfig?.allowAStarSearch,\n enableMasterDataEnumSuggestions,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId,\n ]);\n\n useEffect(() => {\n if (setHeaderOnParent) setHeaderOnParent(TableHeaderComponent);\n }, [TableHeaderComponent, setHeaderOnParent]);\n\n return (\n <TableContext.Provider\n value={{\n tableWrapper,\n tableBodyWrapper,\n lastNonStickyColumnIndex,\n search: searchConfig?.search,\n columnFilters: filterConfig?.columnFilters,\n onRowClick,\n onSort: sortConfig?.onSort,\n onFilter: filterConfig?.onFilter,\n toggleShowFilters,\n toggleShowSorts,\n onRemoveFilter: filterConfig?.onRemoveFilter,\n onClearFilter: filterConfig?.onClearFilter,\n rowOptions,\n checkboxConfig,\n onResetFilter: filterConfig?.onResetFilter,\n isColumnConfigurable,\n onAddColumnClick,\n onEditColumnClick,\n onDeleteColumnClick,\n onRowTooltipClick,\n tooltiptext,\n cascadingTableConfig,\n activeInlineEdit,\n setActiveInlineEdit,\n originalsOnly,\n disableOptionsForRowIndex,\n getFullRowDataOnClick,\n selectedRowId,\n getSumOfNextVisibleColumnWidth,\n onRowEdit,\n inlineEditColumns,\n tableActions,\n dndSortableUtils,\n withSortable,\n withDraggable,\n onCascadingRowExpand,\n getInnerRowData,\n tableHeaders,\n maxLevel,\n expandedRows,\n setExpandedRows,\n showNewItem,\n rawData,\n dragConfig,\n rowWrapper,\n rowLinkConfig,\n isCellClickDisabled,\n asyncRowOptionsFilter: filterConfig?.asyncRowOptionsFilter,\n handleUpdateColumnWidth,\n isTableViewReadOnly: isReadOnlyView,\n multiSelectConfig,\n headerContextOptions,\n showHeaderContextOptions,\n setShowHeaderContextOptions: setShowHeaderContextOptions as\n | ((value: string | null) => void)\n | undefined,\n headerDivWidth,\n showDataTypeIcon,\n rowAdditionalActions,\n hoverConfig,\n rowAdditionalActionsWidth,\n cellEditing,\n cellEditingValue,\n openMasterDataModal,\n closeMasterDataModal,\n selectedMasterData,\n clearSelectedMasterData,\n allowInlineEdit,\n openCurrencyDropdown,\n closeCurrencyDropdown,\n currencyDropdownConfig,\n selectedCurrenciesMap,\n setCurrencyForCell,\n getCurrencyForCell,\n pendingEdits,\n addPendingEdit,\n removePendingEdit,\n getPendingEdit,\n hasPendingEdit,\n clearAllPendingEdits,\n saveAllPendingEdits,\n clearRowPendingEdits,\n saveRowPendingEdits,\n pendingEditsCount,\n scrollToCell,\n onFieldOperationFlow,\n fieldOperationLoading,\n validateAllPendingEdits,\n }}\n >\n {showHeader ? (\n <div\n ref={headerDivRef}\n className={`mb-2 flex w-full min-w-0 gap-2 dark:bg-black-800 ${\n headerDivWidth < TOOLBAR_FIRST_BREAKPOINT\n ? \"flex-col items-stretch\"\n : \"flex-row items-center\"\n }`}\n >\n <div\n className={`flex items-center gap-x-2 gap-y-1 ${\n headerDivWidth < TOOLBAR_FIRST_BREAKPOINT\n ? \"w-full flex-wrap\"\n : \"\"\n } ${headerConfig?.content ? \"min-w-0 flex-1\" : \"shrink-0\"}`}\n >\n {headerConfig?.content ? (\n <div\n className={`min-w-0 ${headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? \"w-full\" : \"flex-1\"}`}\n >\n {headerConfig.content}\n </div>\n ) : null}\n {showRecordCount ? (\n <div className=\"flex items-center gap-1.5 shrink-0\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"text-neutral-500 dark:text-neutral-400 flex-shrink-0\"\n aria-hidden\n >\n <ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\" />\n <path d=\"M3 5v4c0 1.66 4.03 3 9 3s9-1.34 9-3V5\" />\n <path d=\"M3 9v4c0 1.66 4.03 3 9 3s9-1.34 9-3V9\" />\n <path d=\"M3 13v4c0 1.66 4.03 3 9 3s9-1.34 9-3v-4\" />\n </svg>\n <Typography\n size=\"small\"\n variant=\"semibold\"\n appearance=\"title\"\n >\n {(totalItems ?? data.length).toLocaleString()}\n </Typography>\n <Typography\n size=\"small\"\n variant=\"regular\"\n appearance=\"subtitle\"\n >\n total records\n </Typography>\n </div>\n ) : headerConfig?.preContent ? (\n <div className=\"flex min-w-0 shrink-0 justify-start items-center\">\n {headerConfig.preContent}\n </div>\n ) : null}\n </div>\n <div\n className={`flex min-w-0 items-center justify-end ${\n headerDivWidth < TOOLBAR_FIRST_BREAKPOINT\n ? \"w-full\"\n : headerConfig?.content\n ? \"shrink-0\"\n : \"flex-1\"\n } ${headerDivWidth < TOOLBAR_SECOND_BREAKPOINT ? \"flex-col\" : \"flex-row\"} ${\n headerConfig?.postContent ? \"gap-2\" : \"\"\n }`}\n >\n {showRecordCount && headerConfig?.preContent ? (\n <div className=\"flex w-full justify-start items-center\">\n {headerConfig.preContent}\n </div>\n ) : null}\n <div\n className={`flex justify-end items-center min-w-0 ${\n headerDivWidth < TOOLBAR_SECOND_BREAKPOINT\n ? \"w-full\"\n : headerDivWidth < TOOLBAR_FIRST_BREAKPOINT\n ? \"w-full\"\n : \"\"\n }`}\n >\n {TableHeaderComponent}\n </div>\n {headerConfig?.postContent ? (\n <div\n className={`flex justify-end items-center ${headerDivWidth < TOOLBAR_SECOND_BREAKPOINT ? \"w-full\" : \"\"}`}\n >\n {headerConfig.postContent}\n </div>\n ) : null}\n </div>\n </div>\n ) : null}\n {headerConfig?.showDivider ? (\n <div className=\"border-b pb-2 w-full dark:bg-black-800\" />\n ) : null}\n {showFilters || showSorts ? (\n <div className=\"flex justify-between items-center pb-4 dark:bg-black-800\">\n <div className=\"flex gap-2 items-center\">\n {showSorts && tableConfig?.renderSortItem\n ? tableConfig.renderSortItem({\n sort: sortConfig?.columnSort,\n onRemoveSort: handleRemoveSort,\n onSort: sortConfig?.onSort,\n tableHeaders,\n data,\n disabled: isReadOnlyView,\n })\n : null}\n {showFilters &&\n showSorts &&\n sortConfig?.columnSort?.field !== \"\" ? (\n <div className=\"h-8 w-[1px] flex-shrink-0 bg-neutral-200\" />\n ) : null}\n {showFilters ? (\n <div className=\"flex gap-2 items-center\">\n {(isFilters || filterConfig?.onResetFilter) &&\n tableConfig?.renderActiveFilters &&\n tableConfig.renderActiveFilters({\n filters: filterConfig?.columnFilters,\n onRemoveFilter: handleActiveRemoveFilter,\n onClearFilter: handleActiveClearFilter,\n onResetFilter: filterConfig?.onResetFilter,\n onFilter: filterConfig?.onFilter,\n tableHeaders,\n columnFilters: filterConfig?.columnFilters,\n modelName,\n enableMasterDataEnumSuggestions,\n noSpacing: true,\n notionStyle: filterConfig?.notionStyle,\n context: filterConfig?.context,\n data: enumSuggestionsData ?? data,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId,\n disabled: isReadOnlyView,\n })}\n {tableConfig?.renderFilterButtons &&\n tableConfig.renderFilterButtons({\n onClearFilter: filterConfig?.onClearFilter,\n onClose: toggleDataFilterModal,\n modelName,\n enableMasterDataEnumSuggestions,\n defaultFilterColumn: newFilterColumn,\n resetDefaultFilterColumn: () => setNewFilterColumn(null),\n column: dataFilterColumn,\n onFilter: filterConfig?.onFilter,\n tableHeaders,\n columnFilters: filterConfig?.columnFilters,\n data: enumSuggestionsData ?? data,\n notionStyle: filterConfig?.notionStyle,\n context: filterConfig?.context,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId,\n disabled: isReadOnlyView,\n })}\n </div>\n ) : null}\n </div>\n </div>\n ) : null}\n {floatingBarConfig && Object.keys(floatingBarConfig).length ? (\n <FloatingBar {...floatingBarConfig} />\n ) : null}\n {!showHeader && showRecordCount ? (\n <div className=\"flex items-center gap-1.5 mb-2\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"text-neutral-500 dark:text-neutral-400 flex-shrink-0\"\n aria-hidden\n >\n <ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\" />\n <path d=\"M3 5v4c0 1.66 4.03 3 9 3s9-1.34 9-3V5\" />\n <path d=\"M3 9v4c0 1.66 4.03 3 9 3s9-1.34 9-3V9\" />\n <path d=\"M3 13v4c0 1.66 4.03 3 9 3s9-1.34 9-3v-4\" />\n </svg>\n <Typography size=\"small\" variant=\"semibold\" appearance=\"title\">\n {(totalItems ?? data.length).toLocaleString()}\n </Typography>\n <Typography size=\"small\" variant=\"regular\" appearance=\"subtitle\">\n total records\n </Typography>\n </div>\n ) : !showHeader && headerConfig?.preContent ? (\n <div className=\"flex items-center mb-2\">\n {headerConfig.preContent}\n </div>\n ) : null}\n <div\n ref={tableContainerRef}\n className={`w-full ${paginationConfig ? `h-auto` : tableHeightClass} rounded-lg relative border overflow-x-hidden`}\n style={{\n ...(paginationConfig\n ? {\n height:\n data?.length > 0\n ? `${(data?.length + 1) * rowSlotHeight + 4}px`\n : \"350px\",\n }\n : { height: fallbackHeight }),\n ...style,\n }}\n >\n {enableRootDrag ? (\n tableView\n ) : (\n <DndContext\n sensors={sensors}\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n onDragCancel={handleDragCancel}\n collisionDetection={closestCorners}\n >\n {tableView}\n {activeItem\n ? createPortal(\n <DragOverlay\n adjustScale={true}\n dropAnimation={dropAnimation}\n >\n <table\n {...getTableProps()}\n className=\"w-full text-sm text-left text-neutral-500 dark:text-neutral-200 bg-white dark:bg-black-700 table-auto border-collapse\"\n >\n <tbody\n {...getTableBodyProps()}\n className=\"bg-transparent divide-y divide-neutral-200\"\n >\n {void prepareRow(activeItem)}\n <Row\n key={\n (activeItem.original as Record<string, unknown>)\n .id as string\n }\n row={activeItem as never}\n index={rows?.findIndex(\n (item) =>\n item.id ===\n (activeItem.original as Record<string, unknown>)\n .id\n )}\n />\n </tbody>\n </table>\n </DragOverlay>,\n document.getElementById(\"full-screen-container\") ||\n document.body\n )\n : null}\n </DndContext>\n )}\n </div>\n {paginationConfig && tableConfig?.renderPagination\n ? tableConfig.renderPagination(paginationConfig)\n : null}\n\n {tableConfig?.renderMasterDataModal &&\n tableConfig.renderMasterDataModal({\n isVisible: !!masterDataModalConfig,\n onSelected: handleMasterDataSelected,\n onClose: closeMasterDataModal,\n masterDataColumnName: masterDataModalConfig?.masterDataColumnName,\n masterDataFormula: masterDataModalConfig?.masterDataFormula,\n masterDataFilters: masterDataModalConfig?.masterDataFilters,\n masterDataName: masterDataModalConfig?.masterDataName,\n masterDataId: masterDataModalConfig?.masterDataName,\n showFilters: true,\n })}\n\n <CurrencyDropdownPortal\n config={currencyDropdownConfig}\n onClose={closeCurrencyDropdown}\n />\n\n <PendingEditsFloatingBar\n pendingEditsCount={pendingEditsCount}\n pendingEditsList={pendingEditsList}\n rowsWithPendingEdits={rowsWithPendingEdits}\n fieldOperationLoading={fieldOperationLoading}\n onClearAll={clearAllPendingEdits}\n onSaveAll={saveAllPendingEdits}\n onScrollToCell={scrollToCell}\n />\n </TableContext.Provider>\n );\n }\n);\n"],"names":["AutoSizer","_AutoSizer","CREATE_COLUMN_LABEL","getEmptyButtonId","label","index","InfiniteTable","React","tableKey","searchConfig","filterConfig","sortConfig","headerConfig","hoverConfig","columns","modelName","enableMasterDataEnumSuggestions","agreementCategoryId","agreementDomainId","agreementId","modificationId","lineItemRowId","enumSuggestionsData","data","onRowClick","showHeader","tableActions","rowOptions","hideRowOptionWidth","checkboxUtilities","isLoading","onScroll","onScrolling","isColumnConfigurable","onAddColumnClick","emptyMessage","noDataWidget","buttons","onEditColumnClick","onDeleteColumnClick","onRowTooltipClick","tooltiptext","cascadingTableConfig","originalsOnly","disableOptionsForRowIndex","tableHeightClass","getFullRowDataOnClick","selectedRowId","onRowEdit","onBulkRowEdit","inlineEditColumns","isResizable","paginationConfig","dndSortableUtils","multipleContexts","withSortable","withDraggable","enableRootDrag","pageSize","DEFAULT_PAGE_SIZE","onCascadingRowExpand","totalItems","showRecordCount","getInnerRowData","maxLevel","expandedRows","setExpandedRows","showNewItem","rawData","dragConfig","isOverlayLoading","style","floatingBarConfig","rowWrapper","rowLinkConfig","isCellClickDisabled","setHeaderOnParent","optimizeTable","multiSelectConfig","headerContextOptions","showHeaderContextOptions","setShowHeaderContextOptions","showDataTypeIcon","rowAdditionalActions","rowAdditionalActionsWidth","setVisibleHeaders","cellEditing","cellEditingValue","allowInlineEdit","onFieldOperationFlow","fieldOperationLoading","onTableActionsReady","onPendingEditsChange","onCancelPendingEdits","tableConfig","useTableConfig","rowSlotHeight","getRowSlotHeight","useRowHeight","isSearch","isFilters","isAnyFilters","isCheckbox","defaultTableView","selectedTableView","setSelectedTableView","useState","isReadOnlyView","canEditTableView","showFilters","setShowFilters","showSorts","setShowSorts","newFilterColumn","setNewFilterColumn","tableHeaders","setTableHeaders","isEmpty","showHeaderOptions","setShowHeaderOptions","showDataFilterModal","setShowDataFilterModal","dataFilterColumn","setDataFilterColumn","isAllChecked","setIsAllChecked","isShowSortArrowAsc","setIsShowSortArrowAsc","isShowSortArrowDesc","setIsShowSortArrowDesc","sortableListByContext","setSortableListByContext","activeItem","setActiveItem","dndLoading","setDndLoading","headerDivWidth","setHeaderDivWidth","headerDivRef","useRef","tableContainerRef","tableContainerSize","setTableContainerSize","activeInlineEdit","setActiveInlineEdit","masterDataModalConfig","setMasterDataModalConfig","selectedMasterData","setSelectedMasterData","currencyDropdownConfig","setCurrencyDropdownConfig","selectedCurrenciesMap","setSelectedCurrenciesMap","hasAppliedInitialFilters","userClearedFiltersRef","selectedTableViewRef","tableConfigRef","columnsRef","filterConfigRef","headerGroupsRef","resolveTableViewRef","computeListRef","pendingEdits","setPendingEdits","addPendingEdit","useCallback","rowId","columnKey","edit","prev","existingEdit","resolvedValidationError","column","col","result","validateCellValue","hasPendingEdits","rowEdits","useEffect","removePendingEdit","newEdits","_removed","rest","getPendingEdit","hasPendingEdit","clearAllPendingEdits","scrollToCell","rowIndex","colIndex","cellElement","DATA_ROW_ID_ATTR","DATA_COLUMN_KEY_ATTR","scrollContainer","OS_VIEWPORT_SELECTOR","scrollLeft","i","SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK","SCROLL_TO_CELL_LEFT_OFFSET","validateAllPendingEdits","editsToValidate","hasErrors","firstError","updatedEdits","errorTypes","getValidationToastMessage","hasRequired","hasFormat","saveAllPendingEdits","row","editedRows","originalRow","updatedRow","editedFields","clearRowPendingEdits","n","k","saveRowPendingEdits","editedRowData","pendingEditsCount","useMemo","total","pendingEditsList","list","rowsWithPendingEdits","rowsMap","a","b","openMasterDataModal","config","closeMasterDataModal","handleMasterDataSelected","value","clearSelectedMasterData","openCurrencyDropdown","closeCurrencyDropdown","setCurrencyForCell","cellKey","currency","getCurrencyForCell","fallbackHeight","pxMatch","calcMatch","emptySwitchProps","translatedCreateColumnLabel","defaultEmptyText","resolvedEmptyText","loaderData","cellLoaders","tableLoaders","visibleColumns","header","table","useTable","DEFAULT_COLUMN_MIN_WIDTH","DEFAULT_COLUMN_WIDTH","DEFAULT_COLUMN_MAX_WIDTH","useResizeColumns","getTableProps","getTableBodyProps","headerGroups","prepareRow","rows","headerKeys","groups","checkboxConfig","useCheckbox","sensors","useSensors","useSensor","MouseSensor","DND_ACTIVATION_DISTANCE","TouchSensor","dropAnimation","DROP_ANIMATION_EASING","DROP_ANIMATION_DURATION","computeList","acc","contextKey","e","handleDragStart","event","active","item","handleDragEnd","over","newState","handleDragCancel","toggleHeaderOption","key","toggleDataFilterModal","handleRemoveSort","toggleShowFilters","toggleShowSorts","lastNonStickyColumnIndex","reverseHeaders","getSumOfNextVisibleColumnWidth","currentIndex","sum","ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH","ROW_OPTIONS_COLUMN_WIDTH","resolveTableView","userId","handleUpdateColumnWidth","columnName","width","updatedTableView","currentView","hasViewFilters","hasConfigFilters","handleActiveRemoveFilter","handleActiveClearFilter","mergeViewColumnsWithTableColumns","resizeObserver","entries","height","tableHeader","jsx","Head","tableView","jsxs","Fragment","NoDataFoundWidgets","NoDataFound","Button","Add2Icon","button","effectiveWidth","effectiveHeight","Body","tableWrapper","forwardRef","props","ref","tableBodyWrapper","TableHeaderComponent","TableContext","TOOLBAR_FIRST_BREAKPOINT","Typography","TOOLBAR_SECOND_BREAKPOINT","FloatingBar","DndContext","closestCorners","createPortal","DragOverlay","Row","CurrencyDropdownPortal","PendingEditsFloatingBar"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAwEA,MAAMA,KAAYC,IAKZC,KAAsB,iBAEtBC,KAAmB,CAACC,GAAeC,MAMhC,gBALMD,EACV,YAAA,EACA,KAAA,EACA,QAAQ,QAAQ,GAAG,EACnB,QAAQ,gBAAgB,EAAE,KACEC,CAAK,IAGzBC,KAAgBC,GAAM;AAAA,EACjC,CAAC;AAAA,IACC,UAAAC;AAAA,IACA,cAAAC,IAAe;AAAA,MACb,QAAQ;AAAA,MACR,cAAc,MAAM;AAAA,MACpB,kBAAkB;AAAA,IAAA;AAAA,IAEpB,cAAAC,IAAe;AAAA,MACb,eAAe,CAAA;AAAA,MACf,UAAU,MAAM;AAAA,MAChB,gBAAgB,MAAM;AAAA,MACtB,eAAe,MAAM;AAAA,MACrB,eAAe,MAAM,QAAQ,QAAQ,EAAE;AAAA,MACvC,uBAAuB,MAAM,QAAQ,QAAQ,CAAA,CAAE;AAAA,IAAA;AAAA,IAEjD,YAAAC,IAAa;AAAA,MACX,QAAQ,MAAM;AAAA,MACd,YAAY,EAAE,OAAO,IAAI,OAAO,GAAA;AAAA,MAChC,cAAc,MAAM;AAAA,IAAA;AAAA,IAEtB,cAAAC,IAAe;AAAA,MACb,kBAAkB;AAAA,MAClB,aAAa;AAAA,MACb,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,sBAAsB;AAAA,MACtB,SAAS;AAAA,MACT,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,aAAa;AAAA,IAAA;AAAA,IAEf,aAAAC,KAAc;AAAA,IACd,SAAAC;AAAA,IACA,WAAAC;AAAA,IACA,iCAAAC,IAAkC;AAAA,IAClC,qBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,MAAAC,IAAO,CAAA;AAAA,IACP,YAAAC;AAAA,IACA,YAAAC;AAAA,IACA,cAAAC;AAAA,IACA,YAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,WAAAC,KAAY;AAAA,IACZ,UAAAC;AAAA,IACA,aAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,cAAAC;AAAA,IACA,SAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,2BAAAC;AAAA,IACA,kBAAAC,KAAmB;AAAA,IACnB,uBAAAC;AAAA,IACA,eAAAC,KAAgB;AAAA,IAChB,WAAAC;AAAA,IACA,eAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,aAAAC,KAAc;AAAA,IACd,kBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,eAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,UAAAC,KAAWC;AAAA,IACX,sBAAAC;AAAA,IACA,YAAAC;AAAA,IACA,iBAAAC,KAAkB;AAAA,IAClB,iBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,cAAAC,KAAe,CAAA;AAAA,IACf,iBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,SAAAC;AAAA,IACA,YAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,OAAAC,KAAQ,CAAA;AAAA,IACR,mBAAAC;AAAA,IACA,YAAAC;AAAA,IACA,eAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,eAAAC,KAAgB;AAAA,IAChB,mBAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,0BAAAC;AAAA,IACA,6BAAAC;AAAA,IACA,kBAAAC,KAAmB;AAAA,IACnB,sBAAAC;AAAA,IACA,2BAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,aAAAC,KAAc;AAAA,IACd,kBAAAC,KAAmB;AAAA,IACnB,iBAAAC,KAAkB;AAAA,IAClB,sBAAAC;AAAA,IACA,uBAAAC,IAAwB;AAAA,IACxB,qBAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,sBAAAC;AAAA,EAAA,MACiB;AACjB,UAAMC,IAAcC,GAAA,GAIdC,KAAgBC,GAAiBC,IAAc,GAE/CC,KAAW,EAAQ1F,GAAc,QAEjC2F,KAAY1F,GAAc,eAAe,SAAS,GAClD2F,IAAeF,MAAYC,IAE3BE,KAAa,EAAQzE,GAErB0E,IACJT,GAAa,eAAetF,CAAkB,KAAK,MAC/C,CAACgG,GAAmBC,CAAoB,IAC5CC,EAA4BH,KAAoB,IAAI,GAChDI,IAAiB,CAACC;AAAA,MACtBJ;AAAA,MACAV,GAAa,YAAA;AAAA,IAAY,GAErB,CAACe,IAAaC,EAAc,IAAIJ,EAAS,EAAK,GAC9C,CAACK,IAAWC,EAAY,IAAIN,EAAS,EAAK,GAC1C,CAACO,IAAiBC,EAAkB,IAAIR,EAAkB,IAAI,GAC9D,CAACS,GAAcC,EAAe,IAAIV,EAAoB5F,CAAO,GAC7DuG,MAAW9F,EAAK,WAAW,KAAK,CAAC4F,EAAa,WAAW,CAACrF,IAC1D,CAACwF,IAAmBC,EAAoB,IAAIb;AAAA,MAChD;AAAA,IAAA,GAEI,CAACc,IAAqBC,EAAsB,IAChDf,EAAkB,EAAK,GACnB,CAACgB,IAAkBC,EAAmB,IAAIjB,EAAkB,IAAI,GAChE,CAACkB,IAAcC,EAAe,IAAInB,EAAS,EAAK,GAChD,CAACoB,IAAoBC,EAAqB,IAAIrB;AAAA,MAClD;AAAA,IAAA,GAEI,CAACsB,IAAqBC,EAAsB,IAAIvB,EAEpD,IAAI,GACA,CAACwB,IAAuBC,EAAwB,IAAIzB,EAExD,CAAA,CAAE,GACE,CAAC0B,GAAYC,EAAa,IAAI3B;AAAA,MAClC;AAAA,IAAA,GAEI,CAAC4B,IAAYC,EAAa,IAAI7B,EAAkB,EAAK,GACrD,CAAC8B,GAAgBC,EAAiB,IAAI/B,EAAS,CAAC,GAChDgC,KAAeC,EAAuB,IAAI,GAC1CC,KAAoBD,EAAuB,IAAI,GAC/C,CAACE,IAAoBC,EAAqB,IAAIpC,EAAS;AAAA,MAC3D,OAAO;AAAA,MACP,QAAQ;AAAA,IAAA,CACT,GACK,CAACqC,IAAkBC,CAAmB,IAAItC,EAGtC,IAAI,GACR,CAACuC,GAAuBC,EAAwB,IACpDxC,EAAwC,IAAI,GACxC,CAACyC,IAAoBC,EAAqB,IAAI1C,EAG1C,IAAI,GACR,CAAC2C,IAAwBC,EAAyB,IACtD5C,EAAyC,IAAI,GACzC,CAAC6C,IAAuBC,CAAwB,IAAI9C,EAExD,CAAA,CAAE,GACE+C,KAA2Bd,EAAO,EAAK,GACvCe,KAAwBf,EAAO,EAAK,GAEpCgB,KAAuBhB,EAAOnC,CAAiB;AACrD,IAAAmD,GAAqB,UAAUnD;AAC/B,UAAMoD,KAAiBjB,EAAO7C,CAAW;AACzC,IAAA8D,GAAe,UAAU9D;AACzB,UAAM+D,KAAalB,EAAO7H,CAAO;AACjC,IAAA+I,GAAW,UAAU/I;AACrB,UAAMgJ,KAAkBnB,EAAOjI,CAAY;AAC3C,IAAAoJ,GAAgB,UAAUpJ;AAC1B,UAAMqJ,KAAkBpB,EAAyB,IAAI,GAC/CqB,KAAsBrB;AAAA,MAC1B,OAAO,CAAA;AAAA,IAAC,GAEJsB,KAAiBtB,EAAsB,OAAO,CAAA,EAAG,GAEjD,CAACuB,GAAcC,CAAe,IAAIzD,EAA0B,CAAA,CAAE,GAE9D0D,KAAiBC;AAAA,MACrB,CAACC,GAAeC,GAAmBC,MAAuB;AACxD,QAAAL,EAAgB,CAACM,MAAS;AACxB,gBAAMC,IAAeD,EAAKH,CAAK,IAAIC,CAAS;AAC5C,cAAII,IACFH,EAAK;AACP,cAAIG,MAA4B,QAAW;AACzC,kBAAMC,IAASzD,EAAa,KAAK,CAAC0D,MAAQA,EAAI,QAAQN,CAAS;AAC/D,gBAAIK,GAAQ;AACV,oBAAME,IAASC;AAAA,gBACbP,EAAK;AAAA,gBACLI;AAAA,cAAA;AAEF,cAAAD,IAA2BG,EAAO,UAE9B,OADAA,EAAO,SAAS;AAAA,YAEtB;AACE,cAAAH,IAA0BD,GAAc,mBAAmB;AAAA,UAE/D;AACA,iBAAO;AAAA,YACL,GAAGD;AAAA,YACH,CAACH,CAAK,GAAG;AAAA,cACP,GAAIG,EAAKH,CAAK,KAAK,CAAA;AAAA,cACnB,CAACC,CAAS,GAAG;AAAA,gBACX,GAAGC;AAAA,gBACH,iBAAiBG,KAA2B;AAAA,cAAA;AAAA,YAC9C;AAAA,UACF;AAAA,QAEJ,CAAC;AAAA,MACH;AAAA,MACA,CAACxD,CAAY;AAAA,IAAA,GAGT6D,KAAkBX,EAAY,MAC3B,OAAO,OAAOH,CAAY,EAAE;AAAA,MACjC,CAACe,MAAa,OAAO,KAAKA,CAAQ,EAAE,SAAS;AAAA,IAAA,GAE9C,CAACf,CAAY,CAAC;AAEjB,IAAAgB,EAAU,MAAM;AACd,MAAIvF,MACFA,GAAoB;AAAA,QAClB,gBAAAyE;AAAA,QAKA,iBAAAY;AAAA,MAAA,CACD;AAAA,IACL,GAAG,CAACrF,IAAqByE,IAAgBY,EAAe,CAAC;AAEzD,UAAMG,KAAoBd;AAAA,MACxB,CAACC,GAAeC,MAAsB;AACpC,QAAAJ,EAAgB,CAACM,MAAS;AACxB,gBAAMW,IAAW,EAAE,GAAGX,EAAA;AACtB,cAAIW,EAASd,CAAK,GAAG;AACnB,kBAAM,EAAE,CAACC,CAAS,GAAGc,GAAU,GAAGC,EAAA,IAASF,EAASd,CAAK;AAEzD,YAAI,OAAO,KAAKgB,CAAI,EAAE,WAAW,IAAG,OAAOF,EAASd,CAAK,IACpDc,EAASd,CAAK,IAAIgB;AAAA,UACzB;AACA,iBAAOF;AAAA,QACT,CAAC;AAAA,MACH;AAAA,MACA,CAAA;AAAA,IAAC,GAGGG,KAAiBlB;AAAA,MACrB,CAACC,GAAeC,MACdL,EAAaI,CAAK,IAAIC,CAAS;AAAA,MACjC,CAACL,CAAY;AAAA,IAAA,GAGTsB,KAAiBnB;AAAA,MACrB,CAACC,GAAeC,MACd,EAAQL,EAAaI,CAAK,IAAIC,CAAS;AAAA,MACzC,CAACL,CAAY;AAAA,IAAA,GAGTuB,KAAuBpB,EAAY,MAAM;AAC7C,MAAI3E,MACAG,KAAwB,OAAO,KAAKqE,CAAY,EAAE,SAAS,KAC7DrE,EAAqBqE,CAAY,GACnCC,EAAgB,CAAA,CAAE,GAClBX,EAAyB,CAAA,CAAE,GAC3BR,EAAoB,IAAI;AAAA,IAC1B,GAAG,CAACtD,GAAuBG,GAAsBqE,CAAY,CAAC,GAExDwB,IAAerB;AAAA,MACnB,CAACC,GAAeC,GAAmBoB,MAAqB;AACtD,mBAAW,MAAM;AACf,UAAA7F,GAAa,gBAAgB,uBAAuB,EAAE,UAAA6F,EAAA,CAAU;AAChE,gBAAMC,IAAWzE,EAAa;AAAA,YAC5B,CAAC0D,MAAQA,EAAI,QAAQN;AAAA,UAAA;AAEvB,qBAAW,MAAM;AACf,kBAAMsB,IAAc,SAAS;AAAA,cAC3B,IAAIC,EAAgB,KAAKxB,CAAK,OAAOyB,EAAoB,KAAKxB,CAAS;AAAA,YAAA;AAEzE,gBAAIsB;AACF,cAAAA,EAAY,eAAe;AAAA,gBACzB,UAAU;AAAA,gBACV,OAAO;AAAA,gBACP,QAAQ;AAAA,cAAA,CACT;AAAA,qBACQD,IAAW,GAAG;AACvB,oBAAMI,IACJ,SAAS,cAAcC,EAAoB;AAC7C,kBAAID,GAAiB;AACnB,oBAAIE,IAAa;AACjB,yBAASC,IAAI,GAAGA,IAAIP,GAAUO,KAAK;AACjC,wBAAMtB,IAAM1D,EAAagF,CAAC;AAC1B,kBAAKtB,GAAK,WACRqB,KACErB,GAAK,SAASuB;AAAA,gBACpB;AACA,gBAAAF,IAAa,KAAK;AAAA,kBAChB;AAAA,kBACAA,IAAaG;AAAA,gBAAA,GAEfL,EAAgB,SAAS;AAAA,kBACvB,MAAME;AAAA,kBACN,UAAU;AAAA,gBAAA,CACX;AAAA,cACH;AAAA,YACF;AACA,YAAAlD,EAAoB,EAAE,OAAAsB,GAAO,WAAAC,GAAW;AAAA,UAC1C,GAAG,GAAG;AAAA,QACR,GAAG,GAAG;AAAA,MACR;AAAA,MACA,CAACpD,GAAcrB,CAAW;AAAA,IAAA,GAGtBwG,IAA0BjC;AAAA,MAC9B,CACEkC,MAMG;AACH,YAAIC,IAAY,IACZC,IAA0D;AAC9D,cAAMC,IAAgC,CAAA,GAChCC,wBAAiB,IAAA;AAEvB,sBAAO,QAAQJ,CAAe,EAAE,QAAQ,CAAC,CAACjC,GAAOW,CAAQ,MAAM;AAC7D,UAAAyB,EAAapC,CAAK,IAAI,CAAA,GACtB,OAAO,QAAQW,CAAQ,EAAE,QAAQ,CAAC,CAACV,GAAWC,CAAI,MAAM;AACtD,kBAAMI,IAASzD,EAAa,KAAK,CAAC0D,MAAQA,EAAI,QAAQN,CAAS,GACzDO,IAASC;AAAA,cACbP,EAAK;AAAA,cACLI;AAAA,YAAA;AAEF,YAAKE,EAAO,UASV4B,EAAapC,CAAK,EAAEC,CAAS,IAAI;AAAA,cAC/B,GAAGC;AAAA,cACH,iBAAiB;AAAA,YAAA,KAVnBgC,IAAY,IACR1B,EAAO,SAAO6B,EAAW,IAAI7B,EAAO,KAAK,GACxC2B,MAAYA,IAAa,EAAE,OAAAnC,GAAO,WAAAC,EAAA,IACvCmC,EAAapC,CAAK,EAAEC,CAAS,IAAI;AAAA,cAC/B,GAAGC;AAAA,cACH,iBAAiBM,EAAO;AAAA,YAAA;AAAA,UAQ9B,CAAC;AAAA,QACH,CAAC,GAEM,EAAE,WAAA0B,GAAW,cAAAE,GAAc,YAAAD,GAAY,YAAAE,EAAA;AAAA,MAChD;AAAA,MACA,CAACxF,CAAY;AAAA,IAAA,GAGTyF,KAA4BvC,EAAY,CAACsC,MAA4B;AACzE,YAAME,IAAcF,EAAW,IAAI,gBAAgB,GAC7CG,IAAYH,EAAW,QAAQE,IAAc,IAAI;AACvD,aAAIA,KAAeC,IACV,+FACLD,IACK,mEACF;AAAA,IACT,GAAG,CAAA,CAAE,GAECE,KAAsB1C,EAAY,MAAM;AAC5C,YAAM,EAAE,WAAAmC,GAAW,cAAAE,GAAc,YAAAD,GAAY,YAAAE,EAAA,IAC3CL,EAAwBpC,CAAY;AACtC,UAAIsC,GAAW;AAMb,YALArC,EAAgBuC,CAAY,GAC5B5G,GAAa;AAAA,UACX;AAAA,UACA8G,GAA0BD,CAAU;AAAA,QAAA,GAElCF,GAAY;AACd,gBAAMd,IAAWpK,EAAK;AAAA,YACpB,CAACyL,MAAiCA,EAAI,OAAOP,EAAY;AAAA,UAAA;AAE3D,UAAAf,EAAae,EAAY,OAAOA,EAAY,WAAWd,CAAQ;AAAA,QACjE;AACA;AAAA,MACF;AAEA,YAAMsB,IAA6C,CAAA;AACnD,aAAO,QAAQ/C,CAAY,EAAE,QAAQ,CAAC,CAACI,GAAOW,CAAQ,MAAM;AAC1D,cAAMiC,IAAc3L,EAAK;AAAA,UACvB,CAACyL,MAAiCA,EAAI,OAAO1C;AAAA,QAAA;AAE/C,YAAI4C,GAAa;AACf,gBAAMC,IAAa,EAAE,GAAGD,EAAA,GAClBE,IAGF,CAAA;AACJ,iBAAO,QAAQnC,CAAQ,EAAE,QAAQ,CAAC,CAACV,GAAWC,CAAI,MAAM;AACtD,YAAA2C,EAAW5C,CAAS,IAAIC,EAAK,OAC7B4C,EAAa7C,CAAS,IAAI,EAAE,OAAOC,EAAK,OAAO,MAAMA,EAAK,KAAA;AAAA,UAC5D,CAAC,GACDyC,EAAW,KAAK,EAAE,GAAGE,GAAY,gBAAgBC,GAAc;AAAA,QACjE;AAAA,MACF,CAAC,GAEGH,EAAW,SAAS,MAClBhK,MAA6BgK,CAAU,IAClCjK,KACPA,EAAU,MAAM,MAAM,MAAM,MAAM,MAAM;AAAA,QACtC,QAAQ;AAAA,QACR,MAAMiK;AAAA,MAAA,CACP,IAGL9C,EAAgB,CAAA,CAAE,GAClBX,EAAyB,CAAA,CAAE,GAC3BR,EAAoB,IAAI;AAAA,IAC1B,GAAG;AAAA,MACDkB;AAAA,MACA3I;AAAA,MACAyB;AAAA,MACAC;AAAA,MACAqJ;AAAA,MACAM;AAAA,MACAlB;AAAA,MACA5F;AAAA,IAAA,CACD,GAEKuH,KAAuBhD;AAAA,MAC3B,CAACC,MAAkB;AACjB,YAAI5E,EAAuB;AAC3B,cAAMuF,IAAWf,EAAaI,CAAK;AACnC,QAAIW,KAAYpF,KACdA,EAAqB,EAAE,CAACyE,CAAK,GAAGW,GAAU,GAC5Cd,EAAgB,CAACM,MAAS;AACxB,gBAAM6C,IAAI,EAAE,GAAG7C,EAAA;AACf,wBAAO6C,EAAEhD,CAAK,GACPgD;AAAA,QACT,CAAC,GACD9D,EAAyB,CAACiB,MAAS;AACjC,gBAAM6C,IAAI,EAAE,GAAG7C,EAAA;AACf,wBAAO,KAAK6C,CAAC,EAAE,QAAQ,CAACC,MAAM;AAC5B,YAAIA,EAAE,WAAW,GAAGjD,CAAK,GAAG,KAAG,OAAOgD,EAAEC,CAAC;AAAA,UAC3C,CAAC,GACMD;AAAA,QACT,CAAC,GACDtE,EAAoB,IAAI;AAAA,MAC1B;AAAA,MACA,CAACtD,GAAuBG,GAAsBqE,CAAY;AAAA,IAAA,GAGtDsD,KAAsBnD;AAAA,MAC1B,CAACC,MAAkB;AACjB,cAAMW,IAAWf,EAAaI,CAAK;AACnC,YAAI,CAACW,KAAY,OAAO,KAAKA,CAAQ,EAAE,WAAW,EAAG;AAErD,cAAM,EAAE,WAAAuB,GAAW,cAAAE,GAAc,YAAAD,GAAY,YAAAE,MAC3CL,EAAwB,EAAE,CAAChC,CAAK,GAAGW,GAAU;AAC/C,YAAIuB,GAAW;AASb,cARArC,EAAgB,CAACM,OAAU;AAAA,YACzB,GAAGA;AAAA,YACH,CAACH,CAAK,GAAGoC,EAAapC,CAAK;AAAA,UAAA,EAC3B,GACFxE,GAAa;AAAA,YACX;AAAA,YACA8G,GAA0BD,CAAU;AAAA,UAAA,GAElCF,GAAY;AACd,kBAAMd,IAAWpK,EAAK;AAAA,cACpB,CAACyL,MAAiCA,EAAI,OAAOP,EAAY;AAAA,YAAA;AAE3D,YAAAf,EAAae,EAAY,OAAOA,EAAY,WAAWd,CAAQ;AAAA,UACjE;AACA;AAAA,QACF;AAEA,cAAMuB,IAAc3L,EAAK;AAAA,UACvB,CAACyL,MAAiCA,EAAI,OAAO1C;AAAA,QAAA;AAE/C,YAAI,CAAC4C,EAAa;AAClB,cAAMC,IAAa,EAAE,GAAGD,EAAA,GAClBE,IACJ,CAAA;AACF,eAAO,QAAQnC,CAAQ,EAAE,QAAQ,CAAC,CAACV,GAAWC,CAAI,MAAM;AACtD,UAAA2C,EAAW5C,CAAS,IAAIC,EAAK,OAC7B4C,EAAa7C,CAAS,IAAI,EAAE,OAAOC,EAAK,OAAO,MAAMA,EAAK,KAAA;AAAA,QAC5D,CAAC;AAED,cAAMiD,IAAgB,EAAE,GAAGN,GAAY,gBAAgBC,EAAA;AAEvD,QAAInK,IAAeA,EAAc,CAACwK,CAAa,CAAC,IACvCzK,KACPA,EAAU,MAAM,MAAM,MAAM,MAAM,MAAM;AAAA,UACtC,QAAQ;AAAA,UACR,MAAM,CAACyK,CAAa;AAAA,QAAA,CACrB,GAEHtD,EAAgB,CAACM,MAAS;AACxB,gBAAM6C,IAAI,EAAE,GAAG7C,EAAA;AACf,wBAAO6C,EAAEhD,CAAK,GACPgD;AAAA,QACT,CAAC,GACD9D,EAAyB,CAACiB,MAAS;AACjC,gBAAM6C,IAAI,EAAE,GAAG7C,EAAA;AACf,wBAAO,KAAK6C,CAAC,EAAE,QAAQ,CAACC,OAAM;AAC5B,YAAIA,GAAE,WAAW,GAAGjD,CAAK,GAAG,KAAG,OAAOgD,EAAEC,EAAC;AAAA,UAC3C,CAAC,GACMD;AAAA,QACT,CAAC,GACDtE,EAAoB,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,QACEkB;AAAA,QACA3I;AAAA,QACAyB;AAAA,QACAC;AAAA,QACAqJ;AAAA,QACAM;AAAA,QACAlB;AAAA,QACA5F;AAAA,MAAA;AAAA,IACF,GAGI4H,IAAoBC,EAAQ,MACzB,OAAO,OAAOzD,CAAY,EAAE;AAAA,MACjC,CAAC0D,GAAO3C,MAAa2C,IAAQ,OAAO,KAAK3C,CAAQ,EAAE;AAAA,MACnD;AAAA,IAAA,GAED,CAACf,CAAY,CAAC;AAEjB,IAAAgB,EAAU,MAAM;AACd,MAAAtF,KAAuB8H,IAAoB,GAAGA,CAAiB;AAAA,IACjE,GAAG,CAACA,GAAmB9H,EAAoB,CAAC;AAE5C,UAAMiI,KAAmBF,EAAQ,MAAM;AACrC,YAAMG,IASD,CAAA;AACL,oBAAO,QAAQ5D,CAAY,EAAE,QAAQ,CAAC,CAACI,GAAOW,CAAQ,MAAM;AAC1D,cAAMU,IAAWpK,EAAK;AAAA,UACpB,CAACyL,MAAiCA,EAAI,OAAO1C;AAAA,QAAA;AAE/C,eAAO,QAAQW,CAAQ,EAAE,QAAQ,CAAC,CAACV,GAAWC,CAAI,MAAM;AACtD,gBAAMI,IAASzD,EAAa,KAAK,CAAC0D,MAAQA,EAAI,QAAQN,CAAS;AAC/D,UAAAuD,EAAK,KAAK;AAAA,YACR,OAAAxD;AAAA,YACA,WAAAC;AAAA,YACA,WAAWK,GAAQ,UAAUA,GAAQ,gBAAgBL;AAAA,YACrD,OAAOC,EAAK;AAAA,YACZ,eAAeA,EAAK;AAAA,YACpB,MAAMA,EAAK;AAAA,YACX,cAAcA,EAAK;AAAA,YACnB,UAAAmB;AAAA,UAAA,CACD;AAAA,QACH,CAAC;AAAA,MACH,CAAC,GACMmC;AAAA,IACT,GAAG,CAAC5D,GAAc/C,GAAc5F,CAAI,CAAC,GAE/BwM,KAAuBJ,EAAQ,MAAM;AACzC,YAAMK,wBAAc,IAAA;AAIpB,oBAAO,QAAQ9D,CAAY,EAAE,QAAQ,CAAC,CAACI,GAAOW,CAAQ,MAAM;AAC1D,cAAMU,IAAWpK,EAAK;AAAA,UACpB,CAACyL,MAAiCA,EAAI,OAAO1C;AAAA,QAAA;AAE/C,QAAA0D,EAAQ,IAAI1D,GAAO;AAAA,UACjB,OAAAA;AAAA,UACA,UAAAqB;AAAA,UACA,WAAW,OAAO,KAAKV,CAAQ,EAAE;AAAA,QAAA,CAClC;AAAA,MACH,CAAC,GACM,MAAM,KAAK+C,EAAQ,OAAA,CAAQ,EAAE;AAAA,QAClC,CAACC,GAAGC,MAAMD,EAAE,WAAWC,EAAE;AAAA,MAAA;AAAA,IAE7B,GAAG,CAAChE,GAAc3I,CAAI,CAAC,GAEjB4M,KAAsB9D;AAAA,MAC1B,CAAC+D,MAAmClF,GAAyBkF,CAAM;AAAA,MACnE,CAAA;AAAA,IAAC,GAEGC,KAAuBhE;AAAA,MAC3B,MAAMnB,GAAyB,IAAI;AAAA,MACnC,CAAA;AAAA,IAAC,GAGGoF,KAA2BjE;AAAA,MAC/B,CAACkE,GAAgBvB,MAAkB;AACjC,QAAA5D,GAAsB,EAAE,OAAAmF,GAAO,WAAWvB,EAAA,CAAK,GAC3C/D,GAAuB,cACzBA,EAAsB,WAAWsF,GAAOvB,CAAG,GAC7CqB,GAAA;AAAA,MACF;AAAA,MACA,CAACpF,GAAuBoF,EAAoB;AAAA,IAAA,GAGxCG,KAA0BnE;AAAA,MAC9B,MAAMjB,GAAsB,IAAI;AAAA,MAChC,CAAA;AAAA,IAAC,GAGGqF,KAAuBpE;AAAA,MAC3B,CAAC+D,MAAoC9E,GAA0B8E,CAAM;AAAA,MACrE,CAAA;AAAA,IAAC,GAEGM,KAAwBrE;AAAA,MAC5B,MAAMf,GAA0B,IAAI;AAAA,MACpC,CAAA;AAAA,IAAC,GAGGqF,KAAqBtE;AAAA,MACzB,CAACuE,GAAiBC,MAAqB;AACrC,QAAArF,EAAyB,CAACiB,OAAU,EAAE,GAAGA,GAAM,CAACmE,CAAO,GAAGC,EAAA,EAAW;AAAA,MACvE;AAAA,MACA,CAAA;AAAA,IAAC,GAGGC,KAAqBzE;AAAA,MACzB,CAACuE,MAAwCrF,GAAsBqF,CAAO;AAAA,MACtE,CAACrF,EAAqB;AAAA,IAAA,GAGlBwF,KAAiBpB,EAAQ,MAAM;AACnC,YAAMqB,IAAUnM,GAAiB,MAAM,eAAe;AACtD,UAAImM,EAAS,QAAOA,EAAQ,CAAC;AAC7B,YAAMC,IAAYpM,GAAiB,MAAM,oBAAoB;AAC7D,UAAIoM;AACF,eAAOA,EAAU,CAAC,EAAE,QAAQ,WAAW,MAAM,EAAE,QAAQ,QAAQ,GAAG;AAAA,IAEtE,GAAG,CAACpM,EAAgB,CAAC,GAEfqM,KAAmB;AAAA,MACvB,SAAA7H;AAAA,MACA,WAAWhB;AAAA,MACX,sBAAApE;AAAA,MACA,eAAeC;AAAA,MACf,cAAAC;AAAA,MACA,SAAAE;AAAA,MACA,cAAAD;AAAA,IAAA,GAEI+M,KACJrJ,GAAa,IAAI5F,EAAmB,KAAKA,IACrCkP,KAAmB/I,IACrB,qBACAlE,MAAgB,iBACdkN,KACJ,OAAOD,MAAqB,WACvBtJ,GAAa,IAAIsJ,EAAgB,KAAKA,KACvCA,IAEAE,KAAa,EAAE,aAAa,GAAA,GAC5BC,KAAc,IAAI,MAAM,CAAC,EAAE,KAAKD,EAAU,GAC1CE,KAAe,IAAI,MAAM9L,EAAQ,EAAE,KAAK4L,EAAU,GAElDG,IAAiB9B;AAAA,MACrB,MAAMxG,EAAa,OAAO,CAACuI,MAAW,EAAQA,GAAQ,OAAQ;AAAA,MAC9D,CAACvI,CAAY;AAAA,IAAA,GAGTwI,KAAQC;AAAA,MACZ;AAAA,QACE,SAAS/K,KAAgB4K,IAAiBtI;AAAA,QAC1C,MAAM;AAAA,UACJ,GAAG5F;AAAA,UACH,GAAIO,KAAaP,GAAM,SAASgO,KAAcC,KAAgB,CAAA;AAAA,QAAC;AAAA,QAEjE,eAAe;AAAA,UACb,UAAUK;AAAA,UACV,OAAOC;AAAA,UACP,UAAUC;AAAA,QAAA;AAAA,MACZ;AAAA,MAEFC;AAAA,IAAA,GAGI,EAAE,eAAAC,IAAe,mBAAAC,IAAmB,cAAAC,IAAc,YAAAC,IAAY,MAAAC,MAClEV;AACF,IAAA5F,GAAgB,UAAUoG;AAE1B,UAAMG,KAAa,KAAK;AAAA,MACtBH,GAAa,CAAC,GAAG,SAAS;AAAA,QACxB,CAACT,MAAYA,GAA+C;AAAA,MAAA;AAAA,IAC9D;AAEF,IAAAxE,EAAU,MAAM;AACd,UAAI7F,IAAmB;AACrB,cAAMkL,IAASxG,GAAgB;AAG/B,QAAA1E;AAAA,UACEkL,IAAS,CAAC,GAAG,SAAS,IAAI,CAACb,MAAWA,GAAQ,MAAgB,KAAK,CAAA;AAAA,QAAC;AAAA,MAExE;AAAA,IACF,GAAG,CAACY,IAAYjL,EAAiB,CAAC;AAElC,UAAM,EAAE,gBAAAmL,GAAA,IAAmBC,GAAY;AAAA,MACrC,MAAAJ;AAAA,MACA,YAAYxO,GAAmB;AAAA,MAC/B,oBAAoBA,GAAmB;AAAA,MACvC,yBAAyBA,GAAmB;AAAA,MAC5C,SAAAuC;AAAA,MACA,cAAcyD;AAAA,MACd,eAAehG,GAAmB;AAAA,MAGlC,kBAAkBA,GAAmB;AAAA,IAAA,CAKtC,GAEK6O,KAAUC;AAAA,MACdC,GAAUC,IAAa;AAAA,QACrB,sBAAsB,EAAE,UAAUC,GAAA;AAAA,MAAwB,CAC3D;AAAA,MACDF,GAAUG,IAAa;AAAA,QACrB,sBAAsB,EAAE,UAAUD,GAAA;AAAA,MAAwB,CAC3D;AAAA,IAAA,GAGGE,KAA+B;AAAA,MACnC,QAAQC;AAAA,MACR,UAAUC;AAAA,IAAA;AAGZ,aAASC,KAAc;AACrB,aAAI,CAAC7N,IAAkB,UAAU,CAACC,KAAqB8M,IAChD/M,GAAiB;AAAA,QACtB,CAAC8N,GAA8BC,OAC7BD,EAAIC,CAAU,IAAIhB,EAAK;AAAA,UACrB,CAACiB,MAAOA,EAAE,UAAsC,SAASD;AAAA,QAAA,GAEpDD;AAAA,QAET,CAAA;AAAA,MAAC;AAAA,IAEL;AACA,IAAAnH,GAAe,UAAUkH;AAEzB,UAAMI,KAAkB,CAACC,MAA0B;AACjD,YAAM,EAAE,QAAAC,MAAWD;AACnB,MAAAnJ;AAAA,QACEgI,EAAK;AAAA,UACH,CAACqB,MACEA,EAAK,UAAsC,OAAOD,GAAQ;AAAA,QAAA,KAC1D;AAAA,MAAA;AAAA,IAET,GAEME,KAAgB,CAACH,MAAwB;AAC7C,YAAM,EAAE,QAAAC,GAAQ,MAAAG,EAAA,IAASJ;AACzB,MAAKI,MACDvO,IAAkB,mBACpBA,GAAiB;AAAA,QACfoO;AAAA,QACAG;AAAA,QACA1J;AAAA,QACA,CAAC2J,MAAsC;AACrC,UAAA1J,GAAyB0J,CAAmC,GAC5DtJ,GAAc,EAAI,GAClBlF,GAAiB,gBAAgB;AAAA,YAC/B,WAAWoO,EAAO;AAAA,YAClB,WAAWG,EAAK;AAAA,YAChB,aAAcH,EAAO,KAAK,SACtB;AAAA,YACJ,aAAcG,EAAK,KAAK,SAAqC;AAAA,YAC7D,aAAaC;AAAA,YACb,IAAI,MAAMtJ,GAAc,EAAK;AAAA,UAAA,CAC9B;AAAA,QACH;AAAA,MAAA,GAGJF,GAAc,IAAI;AAAA,IACpB,GAEMyJ,KAAmB,MAAMzJ,GAAc,IAAI,GAE3C0J,KAAqB,CAACC,MAAgB;AAC1C,MAAI,CAACrR,GAAY,UAAU,CAACD,GAAc,YACX6G,GAA3BD,OAAsB0K,IAA0B,OAC1BA,CAD8B;AAAA,IAE1D,GAEMC,KAAwB,CAACpH,MAAiB;AAC9C,MAAAlD,GAAoBkD,CAAG,GACvBpD,GAAuB,CAACD,EAAmB,GAC3CD,GAAqB,IAAI;AAAA,IAC3B,GAEM2K,KAAmB7H,EAAY,MAAM;AACzC,MAAI1J,GAAY,eAAcA,EAAW,aAAA,IAChCA,GAAY,UAAQA,EAAW,OAAO,IAAI,EAAE;AAAA,IACvD,GAAG,CAACA,CAAU,CAAC,GAETwR,KAAoB9H,EAAY,CAACQ,IAAe,SAAS;AAC7D,MAAA3D,GAAmB2D,CAAG,GACtB/D,GAAe,CAAC2D,MAAUI,IAAM,KAAO,CAACJ,CAAK;AAAA,IAC/C,GAAG,CAAA,CAAE,GACC2H,KAAkB/H;AAAA,MACtB,MAAMrD,GAAa,CAACyD,MAAS,CAACA,CAAI;AAAA,MAClC,CAAA;AAAA,IAAC,GAGG4H,KAA2B,MAAM;AACrC,YAAMC,IACJnC,GAAa,CAAC,GAAG,SAChB,OAAO,CAACT,MAAWA,GAAQ,YAAY,EAAK;AAC/C,eAASvD,IAAI,GAAGA,IAAImG,EAAe,QAAQnG;AACzC,YAAImG,EAAenG,CAAC,EAAE,eAAeA,IAAI;AAE3C,aAAOmG,EAAe,SAAS;AAAA,IACjC,GAEMC,KAAiClI;AAAA,MACrC,CAACmI,MAAyB;AACxB,YAAIC,IAAM;AACV,iBAAStG,IAAIqG,IAAe,GAAGrG,IAAIsD,EAAe,QAAQtD;AACxD,UAAIsD,EAAetD,CAAC,EAAE,YAAY,OAChCsG,KAAOhD,EAAetD,CAAC,EAAE,SAAS;AAEtC,eAAIhH,OACFsN,KACErN,MAA6BsN,KAC7B/Q,MACF8Q,KAAO7Q,KAAqB,IAAI+Q,KAC3BF;AAAA,MACT;AAAA,MACA;AAAA,QACEhD;AAAA,QACArK;AAAA,QACAxD;AAAA,QACAuD;AAAA,QACAxD;AAAA,MAAA;AAAA,IACF,GAGIiR,KAAmB,MAAkB;AACzC,YAAMC,IAAS/M,GAAa,YAAA;AAC5B,aAAO;AAAA,QACL,GAAIU,KAAqB,CAAA;AAAA,QACzB,MAAMA,GAAmB,QAAQ;AAAA,QACjC,YAAYA,GAAmB,cAAcqM;AAAA,QAC7C,SAASrM,GAAmB,WAAW9F,GAAc;AAAA,QACrD,IAAI8F,GAAmB,MAAM;AAAA,QAC7B,WAAWA,GAAmB,aAAahG;AAAA,QAC3C,SACEgG,GAAmB,WACnB1F,GAAS,IAAI,CAAC8J,GAAQvK,OAAW;AAAA,UAC/B,MAAMuK,EAAO;AAAA,UACb,OAAOA,EAAO;AAAA,UACd,SAASA,EAAO;AAAA,UAChB,QAAQA,EAAO;AAAA,UACf,OAAOvK,IAAQ;AAAA,UACf,cAAcuK,EAAO;AAAA,UACrB,UAAUvK,IAAQ;AAAA,UAClB,QAAQuK,EAAO;AAAA,QAAA,EACf;AAAA,MAAA;AAAA,IAER;AACA,IAAAZ,GAAoB,UAAU4I;AAE9B,UAAME,KAA0B,CAACC,GAAoBC,MAAkB;AACrE,UAAIrM,EAAgB;AAEpB,YAAMsM,IAAmBL,GAAA;AACzB,MAAAnM,EAAqB;AAAA,QACnB,GAAGwM;AAAA,QACH,SAASA,GAAkB,SAAS;AAAA,UAAI,CAACrI,MACvCA,EAAO,SAASmI,IAAa,EAAE,GAAGnI,GAAQ,OAAAoI,MAAUpI;AAAA,QAAA;AAAA,QAEtD,SAAS;AAAA,MAAA,CACV;AAAA,IACH;AAEA,IAAAM,EAAU,MAAM;AAEd,UADIxK,GAAc,eAAe,SAAS,QAAkB,EAAI,GAC5DiG,EAAgB;AACpB,YAAMuM,IAAcvJ,GAAqB;AACzC,UACE,KAAK,UAAUuJ,GAAa,WAAW,CAAA,CAAE,MACzC,KAAK,UAAUxS,GAAc,iBAAiB,CAAA,CAAE,GAChD;AACA,cAAMyS,KAAkBD,GAAa,SAAS,UAAU,KAAK,GACvDE,IAAmB1S,GAAc,eAAe,SAAS;AAM/D,YAAI,EADFyS,KAAkB,CAACC,KAAoB,CAAC1J,GAAsB,UACxC;AACtB,gBAAMuJ,IAAmBjJ,GAAoB,QAAA;AAC7C,UAAAvD,EAAqB;AAAA,YACnB,GAAGwM;AAAA,YACH,SAAS,KAAK;AAAA,cACZ,KAAK,UAAUvS,GAAc,iBAAiB,CAAA,CAAE;AAAA,YAAA;AAAA,YAElD,SAAS;AAAA,UAAA,CACV;AAAA,QACH;AACA,QAAAgJ,GAAsB,UAAU;AAAA,MAClC;AAAA,IACF,GAAG,CAAChJ,GAAc,eAAeiG,CAAc,CAAC;AAEhD,UAAM0M,KAA2BhJ;AAAA,MAC/B,CAAC2H,MAAgB;AACf,QAAAtI,GAAsB,UAAU,IAChChJ,GAAc,iBAAiBsR,CAAG;AAAA,MACpC;AAAA,MACA,CAACtR,GAAc,cAAc;AAAA,IAAA,GAGzB4S,KAA0BjJ,EAAY,MAAM;AAChD,MAAAX,GAAsB,UAAU,IAChChJ,GAAc,gBAAA;AAAA,IAChB,GAAG,CAACA,GAAc,aAAa,CAAC;AAEhC,IAAAwK,EAAU,MAAM;AACd,MAAIvK,GAAY,YAAY,SAC1BqG,GAAa,EAAI,GACbrG,EAAW,WAAW,UAAU,SAClCoH,GAAsBpH,EAAW,WAAW,KAAK,GACjDsH,GAAuB,IAAI,KAClBtH,EAAW,WAAW,UAAU,WACzCsH,GAAuBtH,EAAW,WAAW,KAAK,GAClDoH,GAAsB,IAAI,OAG5BA,GAAsB,IAAI,GAC1BE,GAAuB,IAAI;AAAA,IAE/B,GAAG,CAACtH,GAAY,YAAY,OAAOA,GAAY,YAAY,KAAK,CAAC,GAEjEuK,EAAU,MAAM;AACd,MAAA9D;AAAA,QACEmM;AAAA,UACE5J,GAAqB,SAAS,WAAW,CAAA;AAAA,UACzC7I;AAAA,QAAA;AAAA,MACF;AAAA,IAEJ,GAAG,CAACA,CAAO,CAAC,GAEZoK,EAAU,MAAM;AACd,MAAI1E,GAAmB,WACrBoD,GAAe,SAAS,mBAAmBpD,CAAiB;AAAA,IAChE,GAAG,CAACA,CAAiB,CAAC,GAEtB0E,EAAU,MAAM;AACd,MAAA/C;AAAA,QACE8B,GAAe,QAAA;AAAA,MAAQ;AAAA,IAE3B,GAAG,CAACoG,EAAK,MAAM,CAAC,GAEhBnF,EAAU,MAAM;AACd,MAAAzE,EAAqBF,KAAoB,IAAI,GACzCA,GAAkB,WACpBa;AAAA,QACEmM;AAAA,UACEhN,GAAkB,WAAW,CAAA;AAAA,UAC7BsD,GAAW;AAAA,QAAA;AAAA,MACb,GAIFtD,GAAkB,WAClBA,EAAiB,QAAQ,SAAS,KAClC,CAACkD,GAAyB,WAE1B,sBAAsB,MAAM;AAC1B,QAAAK,GAAgB,SAAS,WAAWvD,EAAiB,OAAO;AAAA,MAC9D,CAAC,GACDkD,GAAyB,UAAU,MAEnClD,GAAkB,WAClBkD,GAAyB,WAGvB,KAAK,UAAUlD,EAAiB,OAAO,MACvC,KAAK,UAAUuD,GAAgB,SAAS,aAAa,KAErDA,GAAgB,SAAS,WAAWvD,EAAiB,OAAO;AAAA,IAElE,GAAG,CAACA,CAAgB,CAAC,GAErB2E,EAAU,MAAM;AACd,UAAIxC,GAAa,SAAS;AACxB,cAAM8K,IAAiB,IAAI;AAAA,UAAe,CAACC,MACzChL,GAAkBgL,EAAQ,CAAC,EAAE,YAAY,KAAK;AAAA,QAAA;AAEhD,eAAAD,EAAe,QAAQ9K,GAAa,OAAO,GACpC,MAAM8K,EAAe,WAAA;AAAA,MAC9B;AAAA,IACF,GAAG,CAAA,CAAE,GAELtI,EAAU,MAAM;AACd,UAAI,CAACtC,GAAkB,QAAS;AAChC,YAAM4K,IAAiB,IAAI,eAAe,CAACC,MAAY;AACrD,cAAM,EAAE,OAAAT,GAAO,QAAAU,EAAA,IAAWD,EAAQ,CAAC,EAAE;AACrC,QAAA3K,GAAsB,EAAE,OAAAkK,GAAO,QAAAU,GAAQ;AAAA,MACzC,CAAC;AACD,aAAAF,EAAe,QAAQ5K,GAAkB,OAAO,GACzC,MAAM4K,EAAe,WAAA;AAAA,IAC9B,GAAG,CAAA,CAAE;AAEL,UAAMG,KACJ,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,aAAA1Q;AAAA,QACA,cAAAgN;AAAA,QACA,YAAA7J;AAAA,QACA,gBAAAkK;AAAA,QACA,cAAA5I;AAAA,QACA,mBAAmBN,MAAqB;AAAA,QACxC,sBAAAC;AAAA,QACA,oBAAAO;AAAA,QACA,qBAAAE;AAAA,QACA,QACErH,GAAY;AAAA,QAId,UAAUD,GAAc;AAAA,QACxB,oBAAAqR;AAAA,QACA,uBAAAhK;AAAA,QACA,wBAAAE;AAAA,QACA,uBAAuBkK;AAAA,QACvB,YAAa,MAAM,QAAQxQ,CAAU,IAAIA,IAAa,CAAA;AAAA,QACtD,sBAAsBM,MAAwB;AAAA,QAC9C,kBAAAC;AAAA,QAOA,mBAAAI;AAAA,QAOA,qBAAAC;AAAA,QAOA,cAAcb,MAAgB;AAAA,QAC9B,WAAAI;AAAA,QACA,sBACGqD,MAAwB;AAAA,QAE3B,wBAAwBuI,IAAoB;AAAA,MAAA;AAAA,IAAA,GAI1CoG,KACJ,gBAAAC,EAAAC,IAAA,EACG,UAAA;AAAA,MAAA1L,MAAchE,KACb,gBAAAsP,EAAC,OAAA,EAAI,WAAU,8GAA6G,IAC1H;AAAA,MACJ,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACE,GAAG3D,GAAA;AAAA,UACJ,WAAU;AAAA,UAET,UAAA5I,KACC,gBAAA0M,EAAC,OAAA,EAAI,WAAU,QACZ,UAAA;AAAA,YAAAJ;AAAA,YACD,gBAAAC,EAAC,OAAA,EAAI,WAAU,mBACZ,UAAA9N,GAAa,cACZA,EAAY,YAAYoJ,EAAgB,IAExC,gBAAA6E,EAAC,OAAA,EAAI,WAAU,0GACZ,UAAA;AAAA,cAAA3R,MAAgB,CAACiE,IAChB,gBAAAuN,EAACK,IAAA,EAAmB,YAAW,SAAQ,IAEvC,gBAAAL,EAACM,IAAA,EAAY,MAAM7E,GAAA,CAAmB;AAAA,cAEvCpN,MAAwB,CAACoE,IACxB,gBAAAuN,EAAC,OAAA,EAAI,WAAU,QACb,UAAA,gBAAAG;AAAA,gBAACI;AAAA,gBAAA;AAAA,kBACC,IAAG;AAAA,kBACH,QAAO;AAAA,kBACP,YAAW;AAAA,kBACX,SACEjS;AAAA,kBAOF,UAAA;AAAA,oBAAA,gBAAA0R,EAACQ,IAAA,EAAS,WAAU,6BAAA,CAA6B;AAAA,oBAAG;AAAA,oBACnDjF;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAAA,GAEL,IACE;AAAA,cACH,CAAC9I,KACAhE,IAAS,IAAI,CAACgS,GAAQhU,MACpB,gBAAAuT;AAAA,gBAACO;AAAA,gBAAA;AAAA,kBAEC,QAAO;AAAA,kBACP,IAAIhU,GAAiBkU,EAAO,OAAOhU,CAAK;AAAA,kBACxC,SAASgU,EAAO;AAAA,kBAEf,UAAAvO,GAAa,IAAIuO,EAAO,KAAK,KAAKA,EAAO;AAAA,gBAAA;AAAA,gBALrC,GAAGA,EAAO,KAAK,IAAIhU,CAAK;AAAA,cAAA,CAOhC;AAAA,YAAA,EAAA,CACL,EAAA,CAEJ;AAAA,UAAA,EAAA,CACF,IAEA,gBAAAuT;AAAA,YAAC5T;AAAA,YAAA;AAAA,cACC,OAAO,EAAE,OAAO,QAAQ,QAAQ,OAAA;AAAA,cAChC,YAAY,CAAC,EAAE,OAAAgT,GAAO,QAAAU,QAAa;AACjC,sBAAMY,IACJtB,IAAQ,IAAIA,IAAQnK,GAAmB,OACnC0L,IACJb,IAAS,IAAIA,IAAS7K,GAAmB;AAC3C,uBAAOyL,IAAiB,KAAKC,IAAkB,IAC7C,gBAAAX;AAAA,kBAACY;AAAA,kBAAA;AAAA,oBAEG,mBAAAtE;AAAA,oBAKA,MAAAG;AAAA,oBACA,YAAAD;AAAA,oBACA,WAAAtO;AAAA,oBACA,UAAAC;AAAA,oBACA,aAAAC;AAAA,oBACA,SAAAlB;AAAA,oBACA,OAAOwT;AAAA,oBACP,QAAQC;AAAA,oBACR,cAAAhR;AAAA,oBACA,kBAAkB9C,GAAc,oBAAoB;AAAA,kBACtD;AAAA,gBAAA,IAEA;AAAA,cACN;AAAA,YAAA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAEJ,GACF,GAGIgU,KAAeC,GAGnB,CAACC,GAAOC,MACR,gBAAAb,EAAC,OAAA,EAAI,WAAU,iBAAiB,GAAGY,GAAO,KAAAC,GACvC,UAAA;AAAA,MAAAjB;AAAA,MACD,gBAAAC,EAAC,OAAA,EAAI,WAAU,0BAA0B,aAAO,SAAA,CAAS;AAAA,IAAA,EAAA,CAC3D,CACD,GAEKiB,KAAmBH,GAGvB,CAACC,GAAOC,MACR,gBAAAhB,EAAC,SAAI,WAAU,iBAAiB,GAAGe,GAAO,KAAAC,GACxC,4BAAC,OAAA,EAAI,WAAU,0BAA0B,UAAAD,GAAO,UAAS,GAC3D,CACD,GAEKG,KAAuBnH,EAAQ,MAC/B7H,GAAa,oBACRA,EAAY,kBAAkB;AAAA,MACnC,UAAAtF;AAAA,MACA,QAAQC,GAAc;AAAA,MACtB,cAAcA,GAAc;AAAA,MAC5B,mBAAA0R;AAAA,MACA,iBAAAC;AAAA,MACA,cAAc1R,GAAc,eAAe;AAAA,MAC3C,SAAAI;AAAA,MACA,eAAeJ,GAAc;AAAA,MAC7B,sBAAA+F;AAAA,MACA,mBAAAD;AAAA,MACA,iBAAiB5F,GAAc;AAAA,MAC/B,WAAAG;AAAA,MACA,iCAAAC;AAAA,MACA,gBAAgBN,GAAc;AAAA,MAC9B,eAAeA,GAAc;AAAA,MAC7B,UAAUA,GAAc;AAAA,MACxB,MAAMY,MAAuBC;AAAA,MAC7B,cAAA4F;AAAA,MACA,sBAAsBvG,GAAc;AAAA,MACpC,mBAAmBA,GAAc;AAAA,MACjC,eAAeA,GAAc;AAAA,MAC7B,aAAaA,GAAc;AAAA,MAC3B,WAAWA,GAAc;AAAA,MACzB,YAAYA,GAAc;AAAA,MAC1B,WAAW,EAAQA,GAAc;AAAA,MACjC,iBAAAwG;AAAA,MACA,kBAAkB,EAAQ3G,GAAc;AAAA,MACxC,aAAa,CAAC,CAACG,GAAc;AAAA,MAC7B,gBAAAkG;AAAA,MACA,MAAMnG,GAAY;AAAA,MAClB,QAAQA,GAAY;AAAA,MACpB,cAAcuR;AAAA,MACd,kBAAkBtR,GAAc;AAAA,MAChC,qBAAAK;AAAA,MACA,mBAAAC;AAAA,MACA,aAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,eAAAC;AAAA,IAAA,CACD,IAEI,MACN;AAAA,MACDb;AAAA,MACAC,GAAc;AAAA,MACdA,GAAc;AAAA,MACd0R;AAAA,MACAC;AAAA,MACA1R,GAAc;AAAA,MACdI;AAAA,MACA2F;AAAA,MACAD;AAAA,MACA5F;AAAA,MACAG;AAAA,MACAL,GAAc;AAAA,MACdA,GAAc;AAAA,MACdA,GAAc;AAAA,MACda;AAAA,MACAD;AAAA,MACA6F;AAAA,MACAxG,GAAY;AAAA,MACZA,GAAY;AAAA,MACZuR;AAAA,MACApM;AAAA,MACArF,GAAc;AAAA,MACdO;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,IAAA,CACD;AAED,WAAA6J,EAAU,MAAM;AACd,MAAItG,SAAqCkQ,EAAoB;AAAA,IAC/D,GAAG,CAACA,IAAsBlQ,EAAiB,CAAC,GAG1C,gBAAAmP;AAAA,MAACgB,GAAa;AAAA,MAAb;AAAA,QACC,OAAO;AAAA,UACL,cAAAN;AAAA,UACA,kBAAAI;AAAA,UACA,0BAAAxC;AAAA,UACA,QAAQ5R,GAAc;AAAA,UACtB,eAAeC,GAAc;AAAA,UAC7B,YAAAc;AAAA,UACA,QAAQb,GAAY;AAAA,UACpB,UAAUD,GAAc;AAAA,UACxB,mBAAAyR;AAAA,UACA,iBAAAC;AAAA,UACA,gBAAgB1R,GAAc;AAAA,UAC9B,eAAeA,GAAc;AAAA,UAC7B,YAAAiB;AAAA,UACA,gBAAA6O;AAAA,UACA,eAAe9P,GAAc;AAAA,UAC7B,sBAAAuB;AAAA,UACA,kBAAAC;AAAA,UACA,mBAAAI;AAAA,UACA,qBAAAC;AAAA,UACA,mBAAAC;AAAA,UACA,aAAAC;AAAA,UACA,sBAAAC;AAAA,UACA,kBAAAqG;AAAA,UACA,qBAAAC;AAAA,UACA,eAAArG;AAAA,UACA,2BAAAC;AAAA,UACA,uBAAAE;AAAA,UACA,eAAAC;AAAA,UACA,gCAAAwP;AAAA,UACA,WAAAvP;AAAA,UACA,mBAAAE;AAAA,UACA,cAAAxB;AAAA,UACA,kBAAA2B;AAAA,UACA,cAAAE;AAAA,UACA,eAAAC;AAAA,UACA,sBAAAI;AAAA,UACA,iBAAAG;AAAA,UACA,cAAAoD;AAAA,UACA,UAAAnD;AAAA,UACA,cAAAC;AAAA,UACA,iBAAAC;AAAA,UACA,aAAAC;AAAA,UACA,SAAAC;AAAA,UACA,YAAAC;AAAA,UACA,YAAAI;AAAA,UACA,eAAAC;AAAA,UACA,qBAAAC;AAAA,UACA,uBAAuBjE,GAAc;AAAA,UACrC,yBAAAoS;AAAA,UACA,qBAAqBnM;AAAA,UACrB,mBAAA7B;AAAA,UACA,sBAAAC;AAAA,UACA,0BAAAC;AAAA,UACA,6BAAAC;AAAA,UAGA,gBAAAuD;AAAA,UACA,kBAAAtD;AAAA,UACA,sBAAAC;AAAA,UACA,aAAAtE;AAAA,UACA,2BAAAuE;AAAA,UACA,aAAAE;AAAA,UACA,kBAAAC;AAAA,UACA,qBAAA4I;AAAA,UACA,sBAAAE;AAAA,UACA,oBAAAlF;AAAA,UACA,yBAAAqF;AAAA,UACA,iBAAAhJ;AAAA,UACA,sBAAAiJ;AAAA,UACA,uBAAAC;AAAA,UACA,wBAAArF;AAAA,UACA,uBAAAE;AAAA,UACA,oBAAAoF;AAAA,UACA,oBAAAG;AAAA,UACA,cAAA5E;AAAA,UACA,gBAAAE;AAAA,UACA,mBAAAe;AAAA,UACA,gBAAAI;AAAA,UACA,gBAAAC;AAAA,UACA,sBAAAC;AAAA,UACA,qBAAAsB;AAAA,UACA,sBAAAM;AAAA,UACA,qBAAAG;AAAA,UACA,mBAAAE;AAAA,UACA,cAAAhC;AAAA,UACA,sBAAAjG;AAAA,UACA,uBAAAC;AAAA,UACA,yBAAA4G;AAAA,QAAA;AAAA,QAGD,UAAA;AAAA,UAAA7K,KACC,gBAAAsS;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAKrL;AAAA,cACL,WAAW,oDACTF,IAAiBwM,IACb,2BACA,uBACN;AAAA,cAEA,UAAA;AAAA,gBAAA,gBAAAjB;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAW,qCACTvL,IAAiBwM,IACb,qBACA,EACN,IAAIpU,GAAc,UAAU,mBAAmB,UAAU;AAAA,oBAExD,UAAA;AAAA,sBAAAA,GAAc,UACb,gBAAAgT;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACC,WAAW,WAAWpL,IAAiBwM,IAA2B,WAAW,QAAQ;AAAA,0BAEpF,UAAApU,EAAa;AAAA,wBAAA;AAAA,sBAAA,IAEd;AAAA,sBACHkD,KACC,gBAAAiQ,EAAC,OAAA,EAAI,WAAU,sCACb,UAAA;AAAA,wBAAA,gBAAAA;AAAA,0BAAC;AAAA,0BAAA;AAAA,4BACC,OAAM;AAAA,4BACN,OAAM;AAAA,4BACN,QAAO;AAAA,4BACP,SAAQ;AAAA,4BACR,MAAK;AAAA,4BACL,QAAO;AAAA,4BACP,aAAY;AAAA,4BACZ,eAAc;AAAA,4BACd,gBAAe;AAAA,4BACf,WAAU;AAAA,4BACV,eAAW;AAAA,4BAEX,UAAA;AAAA,8BAAA,gBAAAH,EAAC,WAAA,EAAQ,IAAG,MAAK,IAAG,KAAI,IAAG,KAAI,IAAG,IAAA,CAAI;AAAA,8BACtC,gBAAAA,EAAC,QAAA,EAAK,GAAE,wCAAA,CAAwC;AAAA,8BAChD,gBAAAA,EAAC,QAAA,EAAK,GAAE,wCAAA,CAAwC;AAAA,8BAChD,gBAAAA,EAAC,QAAA,EAAK,GAAE,0CAAA,CAA0C;AAAA,4BAAA;AAAA,0BAAA;AAAA,wBAAA;AAAA,wBAEpD,gBAAAA;AAAA,0BAACqB;AAAA,0BAAA;AAAA,4BACC,MAAK;AAAA,4BACL,SAAQ;AAAA,4BACR,YAAW;AAAA,4BAET,WAAApR,MAActC,EAAK,QAAQ,eAAA;AAAA,0BAAe;AAAA,wBAAA;AAAA,wBAE9C,gBAAAqS;AAAA,0BAACqB;AAAA,0BAAA;AAAA,4BACC,MAAK;AAAA,4BACL,SAAQ;AAAA,4BACR,YAAW;AAAA,4BACZ,UAAA;AAAA,0BAAA;AAAA,wBAAA;AAAA,sBAED,EAAA,CACF,IACErU,GAAc,aAChB,gBAAAgT,EAAC,SAAI,WAAU,oDACZ,UAAAhT,EAAa,WAAA,CAChB,IACE;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAEN,gBAAAmT;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAW,yCACTvL,IAAiBwM,IACb,WACApU,GAAc,UACZ,aACA,QACR,IAAI4H,IAAiB0M,KAA4B,aAAa,UAAU,IACtEtU,GAAc,cAAc,UAAU,EACxC;AAAA,oBAEC,UAAA;AAAA,sBAAAkD,MAAmBlD,GAAc,aAChC,gBAAAgT,EAAC,OAAA,EAAI,WAAU,0CACZ,UAAAhT,EAAa,YAChB,IACE;AAAA,sBACJ,gBAAAgT;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACC,WAAW,yCACTpL,IAAiB0M,MAEb1M,IAAiBwM,IADjB,WAGE,EACR;AAAA,0BAEC,UAAAF;AAAA,wBAAA;AAAA,sBAAA;AAAA,sBAEFlU,GAAc,cACb,gBAAAgT;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACC,WAAW,iCAAiCpL,IAAiB0M,KAA4B,WAAW,EAAE;AAAA,0BAErG,UAAAtU,EAAa;AAAA,wBAAA;AAAA,sBAAA,IAEd;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACN;AAAA,YAAA;AAAA,UAAA,IAEA;AAAA,UACHA,GAAc,cACb,gBAAAgT,EAAC,OAAA,EAAI,WAAU,0CAAyC,IACtD;AAAA,UACH/M,MAAeE,KACd,gBAAA6M,EAAC,OAAA,EAAI,WAAU,4DACb,UAAA,gBAAAG,EAAC,OAAA,EAAI,WAAU,2BACZ,UAAA;AAAA,YAAAhN,MAAajB,GAAa,iBACvBA,EAAY,eAAe;AAAA,cACzB,MAAMnF,GAAY;AAAA,cAClB,cAAcuR;AAAA,cACd,QAAQvR,GAAY;AAAA,cACpB,cAAAwG;AAAA,cACA,MAAA5F;AAAA,cACA,UAAUoF;AAAA,YAAA,CACX,IACD;AAAA,YACHE,MACDE,MACApG,GAAY,YAAY,UAAU,KAChC,gBAAAiT,EAAC,OAAA,EAAI,WAAU,2CAAA,CAA2C,IACxD;AAAA,YACH/M,KACC,gBAAAkN,EAAC,OAAA,EAAI,WAAU,2BACX,UAAA;AAAA,eAAA3N,MAAa1F,GAAc,kBAC3BoF,GAAa,uBACbA,EAAY,oBAAoB;AAAA,gBAC9B,SAASpF,GAAc;AAAA,gBACvB,gBAAgB2S;AAAA,gBAChB,eAAeC;AAAA,gBACf,eAAe5S,GAAc;AAAA,gBAC7B,UAAUA,GAAc;AAAA,gBACxB,cAAAyG;AAAA,gBACA,eAAezG,GAAc;AAAA,gBAC7B,WAAAK;AAAA,gBACA,iCAAAC;AAAA,gBACA,WAAW;AAAA,gBACX,aAAaN,GAAc;AAAA,gBAC3B,SAASA,GAAc;AAAA,gBACvB,MAAMY,MAAuBC;AAAA,gBAC7B,qBAAAN;AAAA,gBACA,mBAAAC;AAAA,gBACA,aAAAC;AAAA,gBACA,gBAAAC;AAAA,gBACA,eAAAC;AAAA,gBACA,UAAUsF;AAAA,cAAA,CACX;AAAA,cACFb,GAAa,uBACZA,EAAY,oBAAoB;AAAA,gBAC9B,eAAepF,GAAc;AAAA,gBAC7B,SAASuR;AAAA,gBACT,WAAAlR;AAAA,gBACA,iCAAAC;AAAA,gBACA,qBAAqBiG;AAAA,gBACrB,0BAA0B,MAAMC,GAAmB,IAAI;AAAA,gBACvD,QAAQQ;AAAA,gBACR,UAAUhH,GAAc;AAAA,gBACxB,cAAAyG;AAAA,gBACA,eAAezG,GAAc;AAAA,gBAC7B,MAAMY,MAAuBC;AAAA,gBAC7B,aAAab,GAAc;AAAA,gBAC3B,SAASA,GAAc;AAAA,gBACvB,qBAAAO;AAAA,gBACA,mBAAAC;AAAA,gBACA,aAAAC;AAAA,gBACA,gBAAAC;AAAA,gBACA,eAAAC;AAAA,gBACA,UAAUsF;AAAA,cAAA,CACX;AAAA,YAAA,EAAA,CACL,IACE;AAAA,UAAA,EAAA,CACN,GACF,IACE;AAAA,UACHnC,MAAqB,OAAO,KAAKA,EAAiB,EAAE,SACnD,gBAAAoP,EAACuB,IAAA,EAAa,GAAG3Q,GAAA,CAAmB,IAClC;AAAA,UACH,CAAC/C,MAAcqC,KACd,gBAAAiQ,EAAC,OAAA,EAAI,WAAU,kCACb,UAAA;AAAA,YAAA,gBAAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,OAAM;AAAA,gBACN,OAAM;AAAA,gBACN,QAAO;AAAA,gBACP,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,QAAO;AAAA,gBACP,aAAY;AAAA,gBACZ,eAAc;AAAA,gBACd,gBAAe;AAAA,gBACf,WAAU;AAAA,gBACV,eAAW;AAAA,gBAEX,UAAA;AAAA,kBAAA,gBAAAH,EAAC,WAAA,EAAQ,IAAG,MAAK,IAAG,KAAI,IAAG,KAAI,IAAG,IAAA,CAAI;AAAA,kBACtC,gBAAAA,EAAC,QAAA,EAAK,GAAE,wCAAA,CAAwC;AAAA,kBAChD,gBAAAA,EAAC,QAAA,EAAK,GAAE,wCAAA,CAAwC;AAAA,kBAChD,gBAAAA,EAAC,QAAA,EAAK,GAAE,0CAAA,CAA0C;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,YAEpD,gBAAAA,EAACqB,IAAA,EAAW,MAAK,SAAQ,SAAQ,YAAW,YAAW,SACnD,WAAApR,MAActC,EAAK,QAAQ,eAAA,GAC/B;AAAA,YACA,gBAAAqS,EAACqB,MAAW,MAAK,SAAQ,SAAQ,WAAU,YAAW,YAAW,UAAA,gBAAA,CAEjE;AAAA,UAAA,EAAA,CACF,IACE,CAACxT,MAAcb,GAAc,aAC/B,gBAAAgT,EAAC,OAAA,EAAI,WAAU,0BACZ,UAAAhT,EAAa,WAAA,CAChB,IACE;AAAA,UACJ,gBAAAgT;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAKhL;AAAA,cACL,WAAW,UAAUxF,KAAmB,WAAWP,EAAgB;AAAA,cACnE,OAAO;AAAA,gBACL,GAAIO,KACA;AAAA,kBACE,QACE7B,GAAM,SAAS,IACX,IAAIA,GAAM,SAAS,KAAKyE,KAAgB,CAAC,OACzC;AAAA,gBAAA,IAER,EAAE,QAAQ+I,GAAA;AAAA,gBACd,GAAGxK;AAAA,cAAA;AAAA,cAGJ,eACCuP,KAEA,gBAAAC;AAAA,gBAACqB;AAAA,gBAAA;AAAA,kBACC,SAAA1E;AAAA,kBACA,WAAWiB;AAAA,kBACX,aAAaJ;AAAA,kBACb,cAAcO;AAAA,kBACd,oBAAoBuD;AAAA,kBAEnB,UAAA;AAAA,oBAAAvB;AAAA,oBACA1L,IACGkN;AAAA,sBACE,gBAAA1B;AAAA,wBAAC2B;AAAA,wBAAA;AAAA,0BACC,aAAa;AAAA,0BACb,eAAAvE;AAAA,0BAEA,UAAA,gBAAA4C;AAAA,4BAAC;AAAA,4BAAA;AAAA,8BACE,GAAG3D,GAAA;AAAA,8BACJ,WAAU;AAAA,8BAEV,UAAA,gBAAA8D;AAAA,gCAAC;AAAA,gCAAA;AAAA,kCACE,GAAG7D,GAAA;AAAA,kCACJ,WAAU;AAAA,kCAET,UAAA;AAAA,oCAAA,KAAKE,GAAWhI,CAAU;AAAA,oCAC3B,gBAAAwL;AAAA,sCAAC4B;AAAA,sCAAA;AAAA,wCAKC,KAAKpN;AAAA,wCACL,OAAOiI,GAAM;AAAA,0CACX,CAACqB,MACCA,EAAK,OACJtJ,EAAW,SACT;AAAA,wCAAA;AAAA,sCACP;AAAA,sCATGA,EAAW,SACT;AAAA,oCAAA;AAAA,kCASP;AAAA,gCAAA;AAAA,8BAAA;AAAA,4BACF;AAAA,0BAAA;AAAA,wBACF;AAAA,sBAAA;AAAA,sBAEF,SAAS,eAAe,uBAAuB,KAC7C,SAAS;AAAA,oBAAA,IAEb;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,YACN;AAAA,UAAA;AAAA,UAGHhF,MAAoB0C,GAAa,mBAC9BA,EAAY,iBAAiB1C,EAAgB,IAC7C;AAAA,UAEH0C,GAAa,yBACZA,EAAY,sBAAsB;AAAA,YAChC,WAAW,CAAC,CAACmD;AAAA,YACb,YAAYqF;AAAA,YACZ,SAASD;AAAA,YACT,sBAAsBpF,GAAuB;AAAA,YAC7C,mBAAmBA,GAAuB;AAAA,YAC1C,mBAAmBA,GAAuB;AAAA,YAC1C,gBAAgBA,GAAuB;AAAA,YACvC,cAAcA,GAAuB;AAAA,YACrC,aAAa;AAAA,UAAA,CACd;AAAA,UAEH,gBAAA2K;AAAA,YAAC6B;AAAA,YAAA;AAAA,cACC,QAAQpM;AAAA,cACR,SAASqF;AAAA,YAAA;AAAA,UAAA;AAAA,UAGX,gBAAAkF;AAAA,YAAC8B;AAAA,YAAA;AAAA,cACC,mBAAAhI;AAAA,cACA,kBAAAG;AAAA,cACA,sBAAAE;AAAA,cACA,uBAAArI;AAAA,cACA,YAAY+F;AAAA,cACZ,WAAWsB;AAAA,cACX,gBAAgBrB;AAAA,YAAA;AAAA,UAAA;AAAA,QAClB;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),O=require("@mui/icons-material/EditOutlined"),V=require("@mui/icons-material/WarningRounded"),s=require("../../_virtual/index.cjs.js"),n=require("react"),l=require("../data-display/typography/Typography.cjs.js"),x=require("../data-display/tag/Tag.cjs.js"),D=require("../data-display/skeleton/Skeleton.cjs.js"),ee=require("../../utils/countryFlags.cjs.js"),re=require("./UserAvatarPopper.cjs.js"),ae=require("./StatusInfoRow.cjs.js"),u=require("./constants.cjs.js"),se=require("./PersonIcon.cjs.js"),oe=require("./useDynamicPosition.cjs.js"),ne=require("../icon/icons.generated.cjs.js"),j=({label:t,content:i})=>e.jsxs("div",{className:"flex justify-between items-center",children:[e.jsx(l.Typography,{size:"small",variant:"medium",className:"mr-5",appearance:"body",children:t}),i]}),H=({firstName:t,lastName:i,email:U,profilePic:c,size:v="md",hoverSize:k="lg",containerClassName:F="",enablePopper:P=!0,className:A,userId:C,lastViewedOn:m,isActive:b,statusIndicator:B=!1,userDetails:r,isFetchingUserDetails:$=!1,authToken:z,onHover:G,currentlyEditing:R})=>{const[W,w]=n.useState(!1),[M,d]=n.useState(!1),_=u.sizeClasses[v],{triggerRef:J,dropdownRef:K,position:f,isVisible:Q,show:S,hide:q}=oe.useDynamicPosition(),N=n.useRef({}),I=n.useMemo(()=>{if(b||!m)return!1;const a=new Date(m);return(new Date().getTime()-a.getTime())/(1e3*60*60)<24},[b,m]),h=b?"bg-primary-600 dark:bg-primary-600":I?"bg-primary-300 dark:bg-primary-300":m?"bg-neutral-400 dark:bg-neutral-400":null,p=b?"border-primary-600 dark:border-primary-600":I?"border-primary-300 dark:border-primary-300":m?"border-neutral-400 dark:border-neutral-400":"border-primary-200 dark:border-neutral-800",X={"2xs":"w-1.5 h-1.5",xs:"w-2 h-2",sm:"w-2.5 h-2.5",md:"w-3 h-3",lg:"w-3.5 h-3.5",xl:"w-4 h-4"};n.useEffect(()=>{if(c)if(N.current[c])d(!0);else{d(!1);const a=new Image,g=z||(typeof localStorage<"u"?localStorage.getItem("token"):null);a.src=c+(g?"?token="+g:""),a.onload=()=>{N.current[c]=a.src,d(!0)},a.onerror=()=>{d(!1)}}else d(!1)},[c,z]),n.useEffect(()=>()=>{o.current&&clearTimeout(o.current)},[]);const y=c?N.current[c]:void 0,o=n.useRef(null),T=n.useRef(null),Y=()=>{G?.(),t&&i&&P&&(o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{w(!0)},300))},L=a=>{o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{T.current&&!T.current.contains(a.relatedTarget)&&w(!1)},200)},Z=e.jsxs("div",{ref:T,className:"bg-white dark:bg-black-800 shadow rounded-lg border border-neutral-200 dark:border-black-700 min-w-[280px]",onMouseEnter:()=>{o.current&&clearTimeout(o.current)},onMouseLeave:a=>L(a),children:[e.jsxs("div",{className:"flex flex-col gap-1 items-center p-5",children:[e.jsxs("div",{className:s("relative",u.sizeClasses[k]),children:[y&&M?e.jsx("img",{src:y,alt:"Profile",className:s("rounded-full border-2 object-cover w-full h-full",p),onError:()=>d(!1)}):e.jsx("div",{className:s("bg-primary-100 dark:bg-primary-950 border-2 flex items-center justify-center rounded-full w-full h-full",p),children:e.jsx(l.Typography,{size:"large",variant:"semibold",appearance:"custom",className:s("text-primary-600",u.initialsFontSizeClasses[k]),children:u.getInitials((t||"")+" "+(i||""))})}),h&&e.jsx("div",{className:s("absolute bottom-0 right-0 rounded-full border-2 border-white dark:border-black-800",X[k],h)})]}),e.jsxs("div",{className:"flex flex-row gap-1 items-center justify-center",children:[e.jsxs(l.Typography,{size:"medium",variant:"semibold",className:"w-full text-center",children:[t||""," ",i||""]}),r?.region&&e.jsx("span",{children:ee.getFlagComponentRectangleMd(r?.region)})]}),e.jsx(l.Typography,{size:"small",variant:"medium",appearance:"body",children:U||r?.email||""})]}),R?e.jsx("div",{className:"px-5 pb-3",children:e.jsxs("div",{className:"flex items-center gap-3 rounded-lg border border-primary-100 dark:border-primary-900 bg-[rgba(230,241,252,0.60)] dark:bg-primary-950/40 px-[13px] py-[7px]",children:[e.jsx("div",{className:"flex items-center justify-center shrink-0 w-7 h-7 rounded-[5px] border-[0.4px] border-primary-100 dark:border-primary-900 bg-primary-50 dark:bg-primary-950",children:e.jsx(O,{sx:{width:13,height:13},className:"text-primary-600 dark:text-primary-500"})}),e.jsxs("div",{className:"flex flex-col min-w-0",children:[e.jsx(l.Typography,{size:"extra-small",variant:"semibold",appearance:"custom",className:"text-2xs leading-4 uppercase tracking-[0.2px] text-primary-600 dark:text-primary-500",children:"Currently editing"}),e.jsx(l.Typography,{size:"extra-small",variant:"semibold",className:"truncate",children:R})]})]})}):null,C&&($?e.jsx("div",{className:"p-5",children:e.jsx(D.Skeleton,{})}):C&&(r?.teams||r?.clearanceLevel||r?.group)?e.jsxs("div",{className:"flex flex-col gap-4 bg-neutral-50 border-t border-neutral-200 dark:bg-black-700 dark:border-none p-5 rounded-b-lg",children:[e.jsx(ae.StatusInfoRow,{isActive:b,lastViewedOn:m}),r.username&&e.jsx(j,{label:"Username",content:e.jsx("div",{className:"flex gap-2",children:e.jsx(l.Typography,{size:"small",variant:"medium",appearance:"body",children:r.username})})}),r?.teams&&r?.teams?.length>0&&e.jsx(j,{label:"Team",content:e.jsxs("div",{className:"flex gap-2",children:[r?.teams?.length>0&&e.jsx(x.Tag,{label:r?.teams[0]?.name,color:r?.teams[0]?.color||"#e38715",size:"md",isHashColor:!0},r?.teams[0]?.id),r?.teams?.length>=2&&e.jsxs("div",{ref:J,className:"relative cursor-pointer",onMouseEnter:S,onMouseLeave:q,onClick:a=>a.stopPropagation(),children:[e.jsx(x.Tag,{label:`+ ${r?.teams?.length-1} More`,color:"#004f08",size:"md",isHashColor:!0},1),Q&&e.jsx("div",{ref:K,className:s("absolute w-max bg-white dark:text-black-200 dark:bg-black-800 shadow-md border border-neutral-200 dark:border-black-800 rounded-md px-2 z-10 overflow-y-auto max-h-60",{"top-full":f.vertical==="bottom","bottom-full":f.vertical==="top","left-0":f.horizontal==="left","right-0":f.horizontal==="right"}),onMouseEnter:S,onMouseLeave:q,children:r?.teams?.slice(1)?.map((a,g)=>e.jsx("div",{className:"my-2",children:e.jsx(x.Tag,{label:a?.name,color:a?.color||"#4A5568",size:"md",isHashColor:!0,className:"w-fit"},a?.id)},a?.id||g))})]})]})}),r?.group&&e.jsx(j,{label:"Role",content:e.jsx(x.Tag,{label:r?.group,color:"#004094",size:"md",isHashColor:!0},r?.group)}),r?.clearanceLevel&&e.jsx(j,{label:"Clearance Level",content:e.jsx(x.Tag,{label:`Level ${r?.clearanceLevel}`,color:"#b30000",size:"md",isHashColor:!0},String(r?.clearanceLevel))})]}):e.jsx("div",{className:"flex items-center justify-center bg-neutral-50 dark:bg-black-700 border-t border-neutral-200 dark:border-black-700 p-5 rounded-b-lg",children:e.jsxs(l.Typography,{className:"flex items-center justify-center gap-1",size:"extra-small",variant:"medium",appearance:"body",children:[e.jsx(V,{sx:{height:"16px",width:"16px",color:"#F04438"}}),"No other information found!"]})}))]}),E=n.useRef(null);return e.jsxs("div",{onMouseEnter:Y,onMouseLeave:L,className:s("inline-block relative cursor-pointer",A),ref:E,children:[e.jsxs("div",{className:s("relative",F||_),children:[y&&M?e.jsx("img",{src:y,alt:"Profile",className:s("rounded-full border object-cover w-full h-full",p),onError:()=>d(!1)}):t==="All"&&i==="Users"?e.jsx("div",{className:s("rounded-full bg-primary-100 dark:bg-black-600 flex items-center justify-center"),children:e.jsx(ne.GroupsIcon,{className:"text-primary-600 dark:text-primary-600 w-md h-md"})}):t&&i?e.jsx("div",{className:s("bg-primary-100 flex items-center justify-center rounded-full border dark:bg-black-700",u.sizeClasses[v],p),children:e.jsx(l.Typography,{size:"extra-small",variant:"semibold",appearance:"custom",className:s("text-primary-600",u.initialsFontSizeClasses[v]),children:u.getInitials((t||"")+" "+(i||""))})}):e.jsx("div",{className:s(p,"p-1 rounded-full bg-neutral-200 dark:bg-black-600 flex items-center justify-center border w-full h-full"),children:e.jsx(se.PersonIcon,{fill:"#98A2B3"})}),B&&h&&e.jsx("div",{className:s("absolute bottom-0 right-0 rounded-full border border-white dark:border-black-800 w-2 h-2",h)})]}),e.jsx(re.UserAvatarPopper,{isOpen:W,onClose:()=>w(!1),anchorEl:E.current,className:"bg-white dark:bg-black-700 shadow rounded-lg border border-neutral-200 dark:border-black-600",children:Z})]})};H.displayName="UserAvatar";exports.UserAvatar=H;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),O=require("@mui/icons-material/EditOutlined"),V=require("@mui/icons-material/WarningRounded"),s=require("../../_virtual/index.cjs.js"),n=require("react"),l=require("../data-display/typography/Typography.cjs.js"),x=require("../data-display/tag/Tag.cjs.js"),D=require("../data-display/skeleton/Skeleton.cjs.js"),ee=require("../../utils/countryFlags.cjs.js"),re=require("./UserAvatarPopper.cjs.js"),ae=require("./StatusInfoRow.cjs.js"),u=require("./constants.cjs.js"),se=require("./PersonIcon.cjs.js"),oe=require("./useDynamicPosition.cjs.js"),ne=require("../icon/icons.generated.cjs.js"),j=({label:t,content:i})=>e.jsxs("div",{className:"flex justify-between items-center",children:[e.jsx(l.Typography,{size:"small",variant:"medium",className:"mr-5",appearance:"body",children:t}),i]}),H=({firstName:t,lastName:i,email:U,profilePic:c,size:v="md",hoverSize:k="lg",containerClassName:F="",enablePopper:P=!0,className:A,userId:C,lastViewedOn:m,isActive:b,statusIndicator:B=!1,userDetails:r,isFetchingUserDetails:$=!1,authToken:z,onHover:G,currentlyEditing:R})=>{if(t==="All"&&i==="Users")return e.jsx("div",{className:"p-1 rounded-full bg-primary-100 dark:bg-black-600 flex items-center justify-center",children:e.jsx(ne.GroupsIcon,{className:"text-primary-600 dark:text-primary-600 w-4 h-4"})});const[W,w]=n.useState(!1),[M,d]=n.useState(!1),_=u.sizeClasses[v],{triggerRef:J,dropdownRef:K,position:f,isVisible:Q,show:S,hide:q}=oe.useDynamicPosition(),N=n.useRef({}),I=n.useMemo(()=>{if(b||!m)return!1;const a=new Date(m);return(new Date().getTime()-a.getTime())/(1e3*60*60)<24},[b,m]),h=b?"bg-primary-600 dark:bg-primary-600":I?"bg-primary-300 dark:bg-primary-300":m?"bg-neutral-400 dark:bg-neutral-400":null,p=b?"border-primary-600 dark:border-primary-600":I?"border-primary-300 dark:border-primary-300":m?"border-neutral-400 dark:border-neutral-400":"border-primary-200 dark:border-neutral-800",X={"2xs":"w-1.5 h-1.5",xs:"w-2 h-2",sm:"w-2.5 h-2.5",md:"w-3 h-3",lg:"w-3.5 h-3.5",xl:"w-4 h-4"};n.useEffect(()=>{if(c)if(N.current[c])d(!0);else{d(!1);const a=new Image,g=z||(typeof localStorage<"u"?localStorage.getItem("token"):null);a.src=c+(g?"?token="+g:""),a.onload=()=>{N.current[c]=a.src,d(!0)},a.onerror=()=>{d(!1)}}else d(!1)},[c,z]),n.useEffect(()=>()=>{o.current&&clearTimeout(o.current)},[]);const y=c?N.current[c]:void 0,o=n.useRef(null),T=n.useRef(null),Y=()=>{G?.(),t&&i&&P&&(o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{w(!0)},300))},L=a=>{o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{T.current&&!T.current.contains(a.relatedTarget)&&w(!1)},200)},Z=e.jsxs("div",{ref:T,className:"bg-white dark:bg-black-800 shadow rounded-lg border border-neutral-200 dark:border-black-700 min-w-[280px]",onMouseEnter:()=>{o.current&&clearTimeout(o.current)},onMouseLeave:a=>L(a),children:[e.jsxs("div",{className:"flex flex-col gap-1 items-center p-5",children:[e.jsxs("div",{className:s("relative",u.sizeClasses[k]),children:[y&&M?e.jsx("img",{src:y,alt:"Profile",className:s("rounded-full border-2 object-cover w-full h-full",p),onError:()=>d(!1)}):e.jsx("div",{className:s("bg-primary-100 dark:bg-primary-950 border-2 flex items-center justify-center rounded-full w-full h-full",p),children:e.jsx(l.Typography,{size:"large",variant:"semibold",appearance:"custom",className:s("text-primary-600",u.initialsFontSizeClasses[k]),children:u.getInitials((t||"")+" "+(i||""))})}),h&&e.jsx("div",{className:s("absolute bottom-0 right-0 rounded-full border-2 border-white dark:border-black-800",X[k],h)})]}),e.jsxs("div",{className:"flex flex-row gap-1 items-center justify-center",children:[e.jsxs(l.Typography,{size:"medium",variant:"semibold",className:"w-full text-center",children:[t||""," ",i||""]}),r?.region&&e.jsx("span",{children:ee.getFlagComponentRectangleMd(r?.region)})]}),e.jsx(l.Typography,{size:"small",variant:"medium",appearance:"body",children:U||r?.email||""})]}),R?e.jsx("div",{className:"px-5 pb-3",children:e.jsxs("div",{className:"flex items-center gap-3 rounded-lg border border-primary-100 dark:border-primary-900 bg-[rgba(230,241,252,0.60)] dark:bg-primary-950/40 px-[13px] py-[7px]",children:[e.jsx("div",{className:"flex items-center justify-center shrink-0 w-7 h-7 rounded-[5px] border-[0.4px] border-primary-100 dark:border-primary-900 bg-primary-50 dark:bg-primary-950",children:e.jsx(O,{sx:{width:13,height:13},className:"text-primary-600 dark:text-primary-500"})}),e.jsxs("div",{className:"flex flex-col min-w-0",children:[e.jsx(l.Typography,{size:"extra-small",variant:"semibold",appearance:"custom",className:"text-2xs leading-4 uppercase tracking-[0.2px] text-primary-600 dark:text-primary-500",children:"Currently editing"}),e.jsx(l.Typography,{size:"extra-small",variant:"semibold",className:"truncate",children:R})]})]})}):null,C&&($?e.jsx("div",{className:"p-5",children:e.jsx(D.Skeleton,{})}):C&&(r?.teams||r?.clearanceLevel||r?.group)?e.jsxs("div",{className:"flex flex-col gap-4 bg-neutral-50 border-t border-neutral-200 dark:bg-black-700 dark:border-none p-5 rounded-b-lg",children:[e.jsx(ae.StatusInfoRow,{isActive:b,lastViewedOn:m}),r.username&&e.jsx(j,{label:"Username",content:e.jsx("div",{className:"flex gap-2",children:e.jsx(l.Typography,{size:"small",variant:"medium",appearance:"body",children:r.username})})}),r?.teams&&r?.teams?.length>0&&e.jsx(j,{label:"Team",content:e.jsxs("div",{className:"flex gap-2",children:[r?.teams?.length>0&&e.jsx(x.Tag,{label:r?.teams[0]?.name,color:r?.teams[0]?.color||"#e38715",size:"md",isHashColor:!0},r?.teams[0]?.id),r?.teams?.length>=2&&e.jsxs("div",{ref:J,className:"relative cursor-pointer",onMouseEnter:S,onMouseLeave:q,onClick:a=>a.stopPropagation(),children:[e.jsx(x.Tag,{label:`+ ${r?.teams?.length-1} More`,color:"#004f08",size:"md",isHashColor:!0},1),Q&&e.jsx("div",{ref:K,className:s("absolute w-max bg-white dark:text-black-200 dark:bg-black-800 shadow-md border border-neutral-200 dark:border-black-800 rounded-md px-2 z-10 overflow-y-auto max-h-60",{"top-full":f.vertical==="bottom","bottom-full":f.vertical==="top","left-0":f.horizontal==="left","right-0":f.horizontal==="right"}),onMouseEnter:S,onMouseLeave:q,children:r?.teams?.slice(1)?.map((a,g)=>e.jsx("div",{className:"my-2",children:e.jsx(x.Tag,{label:a?.name,color:a?.color||"#4A5568",size:"md",isHashColor:!0,className:"w-fit"},a?.id)},a?.id||g))})]})]})}),r?.group&&e.jsx(j,{label:"Role",content:e.jsx(x.Tag,{label:r?.group,color:"#004094",size:"md",isHashColor:!0},r?.group)}),r?.clearanceLevel&&e.jsx(j,{label:"Clearance Level",content:e.jsx(x.Tag,{label:`Level ${r?.clearanceLevel}`,color:"#b30000",size:"md",isHashColor:!0},String(r?.clearanceLevel))})]}):e.jsx("div",{className:"flex items-center justify-center bg-neutral-50 dark:bg-black-700 border-t border-neutral-200 dark:border-black-700 p-5 rounded-b-lg",children:e.jsxs(l.Typography,{className:"flex items-center justify-center gap-1",size:"extra-small",variant:"medium",appearance:"body",children:[e.jsx(V,{sx:{height:"16px",width:"16px",color:"#F04438"}}),"No other information found!"]})}))]}),E=n.useRef(null);return e.jsxs("div",{onMouseEnter:Y,onMouseLeave:L,className:s("inline-block relative cursor-pointer",A),ref:E,children:[e.jsxs("div",{className:s("relative",F||_),children:[y&&M?e.jsx("img",{src:y,alt:"Profile",className:s("rounded-full border object-cover w-full h-full",p),onError:()=>d(!1)}):t&&i?e.jsx("div",{className:s("bg-primary-100 flex items-center justify-center rounded-full border dark:bg-black-700",u.sizeClasses[v],p),children:e.jsx(l.Typography,{size:"extra-small",variant:"semibold",appearance:"custom",className:s("text-primary-600",u.initialsFontSizeClasses[v]),children:u.getInitials((t||"")+" "+(i||""))})}):e.jsx("div",{className:s(p,"p-1 rounded-full bg-neutral-200 dark:bg-black-600 flex items-center justify-center border w-full h-full"),children:e.jsx(se.PersonIcon,{fill:"#98A2B3"})}),B&&h&&e.jsx("div",{className:s("absolute bottom-0 right-0 rounded-full border border-white dark:border-black-800 w-2 h-2",h)})]}),e.jsx(re.UserAvatarPopper,{isOpen:W,onClose:()=>w(!1),anchorEl:E.current,className:"bg-white dark:bg-black-700 shadow rounded-lg border border-neutral-200 dark:border-black-600",children:Z})]})};H.displayName="UserAvatar";exports.UserAvatar=H;
2
2
  //# sourceMappingURL=UserAvatar.cjs.js.map