@lax-wp/design-system 0.13.42 → 0.13.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/data-display/infinite-table/context.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/context.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/context.d.ts +1 -0
- package/dist/components/data-display/infinite-table/context.es.js +1 -0
- package/dist/components/data-display/infinite-table/context.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/head/cell/Options.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/head/cell/Options.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/head/cell/Options.d.ts +2 -1
- package/dist/components/data-display/infinite-table/head/cell/Options.es.js +79 -70
- package/dist/components/data-display/infinite-table/head/cell/Options.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/head/cell/Resizer.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/head/cell/Resizer.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/head/cell/Resizer.d.ts +2 -1
- package/dist/components/data-display/infinite-table/head/cell/Resizer.es.js +23 -19
- package/dist/components/data-display/infinite-table/head/cell/Resizer.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/head/cell/index.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/head/cell/index.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/head/cell/index.es.js +46 -44
- package/dist/components/data-display/infinite-table/head/cell/index.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/index.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/index.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/index.es.js +474 -470
- package/dist/components/data-display/infinite-table/index.es.js.map +1 -1
- package/dist/components/dropdown/Dropdown.cjs.js +1 -1
- package/dist/components/dropdown/Dropdown.cjs.js.map +1 -1
- package/dist/components/dropdown/Dropdown.es.js +11 -11
- package/dist/components/dropdown/Dropdown.es.js.map +1 -1
- package/dist/utils/table.cjs.js +1 -1
- package/dist/utils/table.cjs.js.map +1 -1
- package/dist/utils/table.d.ts +2 -1
- package/dist/utils/table.es.js +19 -18
- package/dist/utils/table.es.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.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 { 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 [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 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 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]);\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 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 })\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 })\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 })\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","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","k","saveRowPendingEdits","editedRowData","n","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":"8gCA2CMA,GAAYC,GAAAA,UAKZC,GAAsB,gBAEtBC,GAAmB,CAACC,EAAeC,IAEhC,gBADMD,EAAM,YAAA,EAAc,KAAA,EAAO,QAAQ,OAAQ,GAAG,EAAE,QAAQ,eAAgB,EAAE,GACxDC,CAAK,GAGzBC,GAAgBC,EAAM,KACjC,CAAC,CACC,SAAAC,EACA,aAAAC,EAAe,CAAE,OAAQ,GAAI,aAAc,IAAM,KAAM,iBAAkB,EAAA,EACzE,aAAAC,EAAe,CACb,cAAe,CAAA,EACf,SAAU,IAAM,KAChB,eAAgB,IAAM,KACtB,cAAe,IAAM,KACrB,cAAe,IAAM,QAAQ,QAAQ,EAAE,EACvC,sBAAuB,IAAM,QAAQ,QAAQ,CAAA,CAAE,CAAA,EAEjD,WAAAC,EAAa,CAAE,OAAQ,IAAM,KAAM,WAAY,CAAE,MAAO,GAAI,MAAO,EAAA,EAAM,aAAc,IAAM,IAAA,EAC7F,aAAAC,EAAe,CACb,iBAAkB,KAClB,YAAa,GACb,UAAW,GACX,WAAY,GACZ,cAAe,GACf,qBAAsB,GACtB,QAAS,KACT,YAAa,KACb,WAAY,KACZ,UAAW,GACX,YAAa,EAAA,EAEf,YAAAC,GAAc,KACd,QAAAC,EACA,UAAAC,EACA,gCAAAC,EAAkC,GAClC,oBAAAC,EACA,kBAAAC,EACA,YAAAC,EACA,eAAAC,EACA,cAAAC,EACA,oBAAAC,GACA,KAAAC,EAAO,CAAA,EACP,WAAAC,GACA,WAAAC,GACA,aAAAC,GACA,WAAAC,EACA,mBAAAC,GACA,kBAAAC,EACA,UAAAC,GAAY,GACZ,SAAAC,GACA,YAAAC,GACA,qBAAAC,GACA,iBAAAC,GACA,aAAAC,GACA,aAAAC,GACA,QAAAC,GACA,kBAAAC,GACA,oBAAAC,GACA,kBAAAC,GACA,YAAAC,GACA,qBAAAC,GACA,cAAAC,GACA,0BAAAC,GACA,iBAAAC,GAAmB,wBACnB,sBAAAC,GACA,cAAAC,GAAgB,KAChB,UAAAC,EACA,cAAAC,EACA,kBAAAC,GACA,YAAAC,GAAc,GACd,iBAAAC,GACA,iBAAAC,GACA,iBAAAC,GACA,aAAAC,GACA,cAAAC,GACA,eAAAC,GACA,SAAAC,GAAWC,EAAAA,kBACX,qBAAAC,GACA,WAAAC,GACA,gBAAAC,GAAkB,GAClB,gBAAAC,GACA,SAAAC,GACA,aAAAC,GAAe,CAAA,EACf,gBAAAC,GACA,YAAAC,GACA,QAAAC,GACA,WAAAC,GACA,iBAAAC,GACA,MAAAC,GAAQ,CAAA,EACR,kBAAAC,GACA,WAAAC,GACA,cAAAC,GACA,oBAAAC,GACA,kBAAAC,GACA,cAAAC,GAAgB,GAChB,kBAAAC,GACA,qBAAAC,GACA,yBAAAC,GACA,4BAAAC,GACA,iBAAAC,GAAmB,GACnB,qBAAAC,GACA,0BAAAC,GACA,kBAAAC,GACA,YAAAC,GAAc,KACd,iBAAAC,GAAmB,KACnB,gBAAAC,GAAkB,GAClB,qBAAAC,GACA,sBAAAC,EAAwB,KACxB,oBAAAC,GACA,qBAAAC,GACA,qBAAAC,CAAA,IACiB,CACjB,MAAMC,EAAcC,GAAAA,eAAA,EAIdC,GAAgBC,oBAAiBC,GAAAA,cAAc,EAE/CC,GAAW,EAAQ1F,GAAc,OAEjC2F,GAAY1F,GAAc,eAAe,OAAS,EAClD2F,EAAeF,IAAYC,GAE3BE,GAAa,EAAQzE,EAErB0E,EAAmBT,GAAa,eAAetF,CAAkB,GAAK,KACtE,CAACgG,EAAmBC,CAAoB,EAAIC,EAAAA,SAA4BH,GAAoB,IAAI,EAChG,CAACI,GAAaC,EAAc,EAAIF,EAAAA,SAAS,EAAK,EAC9C,CAACG,GAAWC,EAAY,EAAIJ,EAAAA,SAAS,EAAK,EAC1C,CAACK,GAAiBC,EAAkB,EAAIN,EAAAA,SAAkB,IAAI,EAC9D,CAACO,EAAcC,EAAe,EAAIR,EAAAA,SAAoB5F,CAAO,EAC7DqG,IAAW5F,EAAK,SAAW,GAAK,CAAC0F,EAAa,SAAW,CAACnF,GAC1D,CAACsF,GAAmBC,EAAoB,EAAIX,EAAAA,SAAwB,IAAI,EACxE,CAACY,GAAqBC,EAAsB,EAAIb,EAAAA,SAAkB,EAAK,EACvE,CAACc,GAAkBC,EAAmB,EAAIf,EAAAA,SAAkB,IAAI,EAChE,CAACgB,GAAcC,EAAe,EAAIjB,EAAAA,SAAS,EAAK,EAChD,CAACkB,GAAoBC,EAAqB,EAAInB,EAAAA,SAAwB,IAAI,EAC1E,CAACoB,GAAqBC,EAAsB,EAAIrB,EAAAA,SAAwB,IAAI,EAC5E,CAACsB,GAAuBC,EAAwB,EAAIvB,EAAAA,SAAkC,CAAA,CAAE,EACxF,CAACwB,EAAYC,EAAa,EAAIzB,EAAAA,SAAuC,IAAI,EACzE,CAAC0B,GAAYC,EAAa,EAAI3B,EAAAA,SAAkB,EAAK,EACrD,CAAC4B,EAAgBC,EAAiB,EAAI7B,EAAAA,SAAS,CAAC,EAChD8B,GAAeC,EAAAA,OAAuB,IAAI,EAC1CC,GAAoBD,EAAAA,OAAuB,IAAI,EAC/C,CAACE,GAAoBC,EAAqB,EAAIlC,EAAAA,SAAS,CAAE,MAAO,EAAG,OAAQ,EAAG,EAC9E,CAACmC,GAAkBC,CAAmB,EAAIpC,EAAAA,SAAsD,IAAI,EACpG,CAACqC,EAAuBC,EAAwB,EAAItC,EAAAA,SAAwC,IAAI,EAChG,CAACuC,GAAoBC,EAAqB,EAAIxC,EAAAA,SAAwD,IAAI,EAC1G,CAACyC,GAAwBC,EAAyB,EAAI1C,EAAAA,SAAyC,IAAI,EACnG,CAAC2C,GAAuBC,CAAwB,EAAI5C,EAAAA,SAAiC,CAAA,CAAE,EACvF6C,GAA2Bd,EAAAA,OAAO,EAAK,EACvCe,GAAwBf,EAAAA,OAAO,EAAK,EAEpCgB,GAAuBhB,EAAAA,OAAOjC,CAAiB,EACrDiD,GAAqB,QAAUjD,EAC/B,MAAMkD,GAAiBjB,EAAAA,OAAO3C,CAAW,EACzC4D,GAAe,QAAU5D,EACzB,MAAM6D,GAAalB,EAAAA,OAAO3H,CAAO,EACjC6I,GAAW,QAAU7I,EACrB,MAAM8I,GAAkBnB,EAAAA,OAAO/H,CAAY,EAC3CkJ,GAAgB,QAAUlJ,EAC1B,MAAMmJ,GAAkBpB,EAAAA,OAAyB,IAAI,EAC/CqB,GAAsBrB,EAAAA,OAAyB,KAAO,CAAA,EAAiB,EACvEsB,GAAiBtB,EAAAA,OAAsB,KAAO,CAAA,EAAG,EAEjD,CAACuB,EAAcC,CAAe,EAAIvD,EAAAA,SAA0B,CAAA,CAAE,EAE9DwD,GAAiBC,EAAAA,YACrB,CAACC,EAAeC,EAAmBC,IAAuB,CACxDL,EAAiBM,GAAS,CACxB,MAAMC,EAAeD,EAAKH,CAAK,IAAIC,CAAS,EAC5C,IAAII,EAAqDH,EAAK,gBAC9D,GAAIG,IAA4B,OAAW,CACzC,MAAMC,EAASzD,EAAa,KAAM0D,GAAQA,EAAI,MAAQN,CAAS,EAC/D,GAAIK,EAAQ,CACV,MAAME,EAASC,GAAAA,kBAAkBP,EAAK,MAAOI,CAAkD,EAC/FD,EAA2BG,EAAO,QAAwC,KAA7BA,EAAO,OAAS,SAC/D,MACEH,EAA0BD,GAAc,iBAAmB,IAE/D,CACA,MAAO,CAAE,GAAGD,EAAM,CAACH,CAAK,EAAG,CAAE,GAAIG,EAAKH,CAAK,GAAK,CAAA,EAAK,CAACC,CAAS,EAAG,CAAE,GAAGC,EAAM,gBAAiBG,GAA2B,IAAA,EAAO,CAClI,CAAC,CACH,EACA,CAACxD,CAAY,CAAA,EAGT6D,GAAkBX,EAAAA,YAAY,IAC3B,OAAO,OAAOH,CAAY,EAAE,KAAMe,GAAa,OAAO,KAAKA,CAAQ,EAAE,OAAS,CAAC,EACrF,CAACf,CAAY,CAAC,EAEjBgB,EAAAA,UAAU,IAAM,CACVrF,IAAqBA,GAAoB,CAAE,eAAAuE,GAAiJ,gBAAAY,GAAiB,CACnN,EAAG,CAACnF,GAAqBuE,GAAgBY,EAAe,CAAC,EAEzD,MAAMG,GAAoBd,EAAAA,YAAY,CAACC,EAAeC,IAAsB,CAC1EJ,EAAiBM,GAAS,CACxB,MAAMW,EAAW,CAAE,GAAGX,CAAA,EACtB,GAAIW,EAASd,CAAK,EAAG,CACnB,KAAM,CAAE,CAACC,CAAS,EAAGc,EAAU,GAAGC,CAAA,EAASF,EAASd,CAAK,EACrD,OAAO,KAAKgB,CAAI,EAAE,SAAW,EAAG,OAAOF,EAASd,CAAK,EACpDc,EAASd,CAAK,EAAIgB,CACzB,CACA,OAAOF,CACT,CAAC,CACH,EAAG,CAAA,CAAE,EAECG,GAAiBlB,EAAAA,YACrB,CAACC,EAAeC,IAAgDL,EAAaI,CAAK,IAAIC,CAAS,EAC/F,CAACL,CAAY,CAAA,EAGTsB,GAAiBnB,EAAAA,YACrB,CAACC,EAAeC,IAA+B,EAAQL,EAAaI,CAAK,IAAIC,CAAS,EACtF,CAACL,CAAY,CAAA,EAGTuB,GAAuBpB,EAAAA,YAAY,IAAM,CACzCzE,IACAG,GAAwB,OAAO,KAAKmE,CAAY,EAAE,OAAS,KAAwBA,CAAY,EACnGC,EAAgB,CAAA,CAAE,EAClBX,EAAyB,CAAA,CAAE,EAC3BR,EAAoB,IAAI,EAC1B,EAAG,CAACpD,EAAuBG,EAAsBmE,CAAY,CAAC,EAExDwB,EAAerB,EAAAA,YACnB,CAACC,EAAeC,EAAmBoB,IAAqB,CACtD,WAAW,IAAM,CACf3F,GAAa,gBAAgB,sBAAuB,CAAE,SAAA2F,CAAA,CAAU,EAChE,MAAMC,EAAWzE,EAAa,UAAW0D,GAAQA,EAAI,MAAQN,CAAS,EACtE,WAAW,IAAM,CACf,MAAMsB,EAAc,SAAS,cAAc,IAAIC,EAAAA,gBAAgB,KAAKxB,CAAK,OAAOyB,EAAAA,oBAAoB,KAAKxB,CAAS,IAAI,EACtH,GAAIsB,EACFA,EAAY,eAAe,CAAE,SAAU,SAAU,MAAO,SAAU,OAAQ,SAAU,UAC3ED,EAAW,EAAG,CACvB,MAAMI,EAAkB,SAAS,cAAcC,sBAAoB,EACnE,GAAID,EAAiB,CACnB,IAAIE,EAAa,EACjB,QAASC,EAAI,EAAGA,EAAIP,EAAUO,IAAK,CACjC,MAAMtB,EAAM1D,EAAagF,CAAC,EACrBtB,GAAK,SAAQqB,GAAcrB,GAAK,OAASuB,EAAAA,qCAChD,CACAF,EAAa,KAAK,IAAI,EAAGA,EAAaG,EAAAA,0BAA0B,EAChEL,EAAgB,SAAS,CAAE,KAAME,EAAY,SAAU,SAAU,CACnE,CACF,CACAlD,EAAoB,CAAE,MAAAsB,EAAO,UAAAC,EAAW,CAC1C,EAAG,GAAG,CACR,EAAG,GAAG,CACR,EACA,CAACpD,EAAcnB,CAAW,CAAA,EAGtBsG,EAA0BjC,EAAAA,YAC7BkC,GAA8K,CAC7K,IAAIC,EAAY,GACZC,EAA0D,KAC9D,MAAMC,EAAgC,CAAA,EAChCC,MAAiB,IAEvB,cAAO,QAAQJ,CAAe,EAAE,QAAQ,CAAC,CAACjC,EAAOW,CAAQ,IAAM,CAC7DyB,EAAapC,CAAK,EAAI,CAAA,EACtB,OAAO,QAAQW,CAAQ,EAAE,QAAQ,CAAC,CAACV,EAAWC,CAAI,IAAM,CACtD,MAAMI,EAASzD,EAAa,KAAM0D,GAAQA,EAAI,MAAQN,CAAS,EACzDO,EAASC,GAAAA,kBAAkBP,EAAK,MAAOI,CAAkD,EAC1FE,EAAO,QAMV4B,EAAapC,CAAK,EAAEC,CAAS,EAAI,CAAE,GAAGC,EAAM,gBAAiB,IAAA,GAL7DgC,EAAY,GACR1B,EAAO,OAAO6B,EAAW,IAAI7B,EAAO,KAAK,EACxC2B,IAAYA,EAAa,CAAE,MAAAnC,EAAO,UAAAC,CAAA,GACvCmC,EAAapC,CAAK,EAAEC,CAAS,EAAI,CAAE,GAAGC,EAAM,gBAAiBM,EAAO,KAAA,EAIxE,CAAC,CACH,CAAC,EAEM,CAAE,UAAA0B,EAAW,aAAAE,EAAc,WAAAD,EAAY,WAAAE,CAAA,CAChD,EACA,CAACxF,CAAY,CAAA,EAGTyF,GAA4BvC,cAAasC,GAA4B,CACzE,MAAME,EAAcF,EAAW,IAAI,gBAAgB,EAC7CG,EAAYH,EAAW,MAAQE,EAAc,EAAI,GACvD,OAAIA,GAAeC,EAAkB,6FACjCD,EAAoB,iEACjB,6DACT,EAAG,CAAA,CAAE,EAECE,GAAsB1C,EAAAA,YAAY,IAAM,CAC5C,KAAM,CAAE,UAAAmC,EAAW,aAAAE,EAAc,WAAAD,EAAY,WAAAE,CAAA,EAAeL,EAAwBpC,CAAY,EAChG,GAAIsC,EAAW,CAGb,GAFArC,EAAgBuC,CAAY,EAC5B1G,GAAa,mBAAmB,QAAS4G,GAA0BD,CAAU,CAAC,EAC1EF,EAAY,CACd,MAAMd,EAAWlK,EAAK,UAAWuL,GAAiCA,EAAI,KAAOP,EAAY,KAAK,EAC9Ff,EAAae,EAAY,MAAOA,EAAY,UAAWd,CAAQ,CACjE,CACA,MACF,CAEA,MAAMsB,EAA6C,CAAA,EACnD,OAAO,QAAQ/C,CAAY,EAAE,QAAQ,CAAC,CAACI,EAAOW,CAAQ,IAAM,CAC1D,MAAMiC,EAAczL,EAAK,KAAMuL,GAAiCA,EAAI,KAAO1C,CAAK,EAChF,GAAI4C,EAAa,CACf,MAAMC,EAAa,CAAE,GAAGD,CAAA,EAClBE,EAAmE,CAAA,EACzE,OAAO,QAAQnC,CAAQ,EAAE,QAAQ,CAAC,CAACV,EAAWC,CAAI,IAAM,CACtD2C,EAAW5C,CAAS,EAAIC,EAAK,MAC7B4C,EAAa7C,CAAS,EAAI,CAAE,MAAOC,EAAK,MAAO,KAAMA,EAAK,IAAA,CAC5D,CAAC,EACDyC,EAAW,KAAK,CAAE,GAAGE,EAAY,eAAgBC,EAAc,CACjE,CACF,CAAC,EAEGH,EAAW,OAAS,IAClB9J,IAA6B8J,CAAU,EAClC/J,GAAWA,EAAU,KAAM,KAAM,KAAM,KAAM,KAAM,CAAE,OAAQ,GAAM,KAAM+J,CAAA,CAAY,GAGhG9C,EAAgB,CAAA,CAAE,EAClBX,EAAyB,CAAA,CAAE,EAC3BR,EAAoB,IAAI,CAC1B,EAAG,CAACkB,EAAczI,EAAMyB,EAAWC,EAAemJ,EAAyBM,GAA2BlB,EAAc1F,CAAW,CAAC,EAE1HqH,GAAuBhD,EAAAA,YAC1BC,GAAkB,CACjB,GAAI1E,EAAuB,OAC3B,MAAMqF,EAAWf,EAAaI,CAAK,EAC/BW,GAAYlF,GAAsBA,EAAqB,CAAE,CAACuE,CAAK,EAAGW,EAAU,EAChFd,EAAiBM,GAAS,CAAE,MAAM,EAAI,CAAE,GAAGA,CAAA,EAAQ,cAAO,EAAEH,CAAK,EAAU,CAAG,CAAC,EAC/Ed,EAA0BiB,GAAS,CAAE,MAAM,EAAI,CAAE,GAAGA,CAAA,EAAQ,cAAO,KAAK,CAAC,EAAE,QAAS6C,GAAM,CAAMA,EAAE,WAAW,GAAGhD,CAAK,GAAG,GAAG,OAAO,EAAEgD,CAAC,CAAG,CAAC,EAAU,CAAG,CAAC,EACvJtE,EAAoB,IAAI,CAC1B,EACA,CAACpD,EAAuBG,EAAsBmE,CAAY,CAAA,EAGtDqD,GAAsBlD,EAAAA,YACzBC,GAAkB,CACjB,MAAMW,EAAWf,EAAaI,CAAK,EACnC,GAAI,CAACW,GAAY,OAAO,KAAKA,CAAQ,EAAE,SAAW,EAAG,OAErD,KAAM,CAAE,UAAAuB,EAAW,aAAAE,EAAc,WAAAD,EAAY,WAAAE,GAAeL,EAAwB,CAAE,CAAChC,CAAK,EAAGW,EAAU,EACzG,GAAIuB,EAAW,CAGb,GAFArC,EAAiBM,IAAU,CAAE,GAAGA,EAAM,CAACH,CAAK,EAAGoC,EAAapC,CAAK,CAAA,EAAI,EACrEtE,GAAa,mBAAmB,QAAS4G,GAA0BD,CAAU,CAAC,EAC1EF,EAAY,CACd,MAAMd,EAAWlK,EAAK,UAAWuL,GAAiCA,EAAI,KAAOP,EAAY,KAAK,EAC9Ff,EAAae,EAAY,MAAOA,EAAY,UAAWd,CAAQ,CACjE,CACA,MACF,CAEA,MAAMuB,EAAczL,EAAK,KAAMuL,GAAiCA,EAAI,KAAO1C,CAAK,EAChF,GAAI,CAAC4C,EAAa,OAClB,MAAMC,EAAa,CAAE,GAAGD,CAAA,EAClBE,EAAmE,CAAA,EACzE,OAAO,QAAQnC,CAAQ,EAAE,QAAQ,CAAC,CAACV,EAAWC,CAAI,IAAM,CACtD2C,EAAW5C,CAAS,EAAIC,EAAK,MAC7B4C,EAAa7C,CAAS,EAAI,CAAE,MAAOC,EAAK,MAAO,KAAMA,EAAK,IAAA,CAC5D,CAAC,EAED,MAAMgD,EAAgB,CAAE,GAAGL,EAAY,eAAgBC,CAAA,EAEnDjK,EAAeA,EAAc,CAACqK,CAAa,CAAC,EACvCtK,GAAWA,EAAU,KAAM,KAAM,KAAM,KAAM,KAAM,CAAE,OAAQ,GAAM,KAAM,CAACsK,CAAa,EAAG,EAEnGrD,EAAiBM,GAAS,CAAE,MAAMgD,EAAI,CAAE,GAAGhD,CAAA,EAAQ,cAAOgD,EAAEnD,CAAK,EAAUmD,CAAG,CAAC,EAC/EjE,EAA0BiB,GAAS,CAAE,MAAMgD,EAAI,CAAE,GAAGhD,CAAA,EAAQ,cAAO,KAAKgD,CAAC,EAAE,QAASH,IAAM,CAAMA,GAAE,WAAW,GAAGhD,CAAK,GAAG,GAAG,OAAOmD,EAAEH,EAAC,CAAG,CAAC,EAAUG,CAAG,CAAC,EACvJzE,EAAoB,IAAI,CAC1B,EACA,CAACkB,EAAczI,EAAMyB,EAAWC,EAAemJ,EAAyBM,GAA2BlB,EAAc1F,CAAW,CAAA,EAGxH0H,EAAoBC,EAAAA,QAAQ,IACzB,OAAO,OAAOzD,CAAY,EAAE,OAAO,CAAC0D,EAAO3C,IAAa2C,EAAQ,OAAO,KAAK3C,CAAQ,EAAE,OAAQ,CAAC,EACrG,CAACf,CAAY,CAAC,EAEjBgB,EAAAA,UAAU,IAAM,CACdpF,KAAuB4H,EAAoB,EAAGA,CAAiB,CACjE,EAAG,CAACA,EAAmB5H,EAAoB,CAAC,EAE5C,MAAM+H,GAAmBF,EAAAA,QAAQ,IAAM,CACrC,MAAMG,EAA2M,CAAA,EACjN,cAAO,QAAQ5D,CAAY,EAAE,QAAQ,CAAC,CAACI,EAAOW,CAAQ,IAAM,CAC1D,MAAMU,EAAWlK,EAAK,UAAWuL,GAAiCA,EAAI,KAAO1C,CAAK,EAClF,OAAO,QAAQW,CAAQ,EAAE,QAAQ,CAAC,CAACV,EAAWC,CAAI,IAAM,CACtD,MAAMI,EAASzD,EAAa,KAAM0D,GAAQA,EAAI,MAAQN,CAAS,EAC/DuD,EAAK,KAAK,CAAE,MAAAxD,EAAO,UAAAC,EAAW,UAAWK,GAAQ,QAAUA,GAAQ,cAAgBL,EAAW,MAAOC,EAAK,MAAO,cAAeA,EAAK,cAAe,KAAMA,EAAK,KAAM,aAAcA,EAAK,aAAc,SAAAmB,CAAA,CAAU,CAClN,CAAC,CACH,CAAC,EACMmC,CACT,EAAG,CAAC5D,EAAc/C,EAAc1F,CAAI,CAAC,EAE/BsM,GAAuBJ,EAAAA,QAAQ,IAAM,CACzC,MAAMK,MAAc,IACpB,cAAO,QAAQ9D,CAAY,EAAE,QAAQ,CAAC,CAACI,EAAOW,CAAQ,IAAM,CAC1D,MAAMU,EAAWlK,EAAK,UAAWuL,GAAiCA,EAAI,KAAO1C,CAAK,EAClF0D,EAAQ,IAAI1D,EAAO,CAAE,MAAAA,EAAO,SAAAqB,EAAU,UAAW,OAAO,KAAKV,CAAQ,EAAE,MAAA,CAAQ,CACjF,CAAC,EACM,MAAM,KAAK+C,EAAQ,OAAA,CAAQ,EAAE,KAAK,CAACC,EAAGC,IAAMD,EAAE,SAAWC,EAAE,QAAQ,CAC5E,EAAG,CAAChE,EAAczI,CAAI,CAAC,EAEjB0M,GAAsB9D,EAAAA,YAAa+D,GAAmClF,GAAyBkF,CAAM,EAAG,EAAE,EAC1GC,GAAuBhE,EAAAA,YAAY,IAAMnB,GAAyB,IAAI,EAAG,CAAA,CAAE,EAE3EoF,GAA2BjE,EAAAA,YAC/B,CAACkE,EAAgBvB,IAAkB,CACjC5D,GAAsB,CAAE,MAAAmF,EAAO,UAAWvB,CAAA,CAAK,EAC3C/D,GAAuB,YAAYA,EAAsB,WAAWsF,EAAOvB,CAAG,EAClFqB,GAAA,CACF,EACA,CAACpF,EAAuBoF,EAAoB,CAAA,EAGxCG,GAA0BnE,EAAAA,YAAY,IAAMjB,GAAsB,IAAI,EAAG,CAAA,CAAE,EAE3EqF,GAAuBpE,EAAAA,YAAa+D,GAAoC9E,GAA0B8E,CAAM,EAAG,EAAE,EAC7GM,GAAwBrE,EAAAA,YAAY,IAAMf,GAA0B,IAAI,EAAG,CAAA,CAAE,EAE7EqF,GAAqBtE,EAAAA,YAAY,CAACuE,EAAiBC,IAAqB,CAC5ErF,EAA0BiB,IAAU,CAAE,GAAGA,EAAM,CAACmE,CAAO,EAAGC,CAAA,EAAW,CACvE,EAAG,CAAA,CAAE,EAECC,GAAqBzE,EAAAA,YACxBuE,GAAwCrF,GAAsBqF,CAAO,EACtE,CAACrF,EAAqB,CAAA,EAGlBwF,GAAiBpB,EAAAA,QAAQ,IAAM,CACnC,MAAMqB,EAAUjM,GAAiB,MAAM,eAAe,EACtD,GAAIiM,EAAS,OAAOA,EAAQ,CAAC,EAC7B,MAAMC,EAAYlM,GAAiB,MAAM,oBAAoB,EAC7D,GAAIkM,EAAW,OAAOA,EAAU,CAAC,EAAE,QAAQ,UAAW,MAAM,EAAE,QAAQ,OAAQ,GAAG,CAEnF,EAAG,CAAClM,EAAgB,CAAC,EAEfmM,GAAmB,CACvB,QAAA7H,GACA,UAAWd,EACX,qBAAApE,GACA,cAAeC,GACf,aAAAC,GACA,QAAAE,GACA,aAAAD,EAAA,EAEI6M,GAA8BnJ,GAAa,IAAI5F,EAAmB,GAAKA,GACvEgP,GAAmB7I,EAAe,mBAAqBlE,IAAgB,gBACvEgN,GAAoB,OAAOD,IAAqB,SAAYpJ,GAAa,IAAIoJ,EAAgB,GAAKA,GAAoBA,GAEtHE,GAAa,CAAE,YAAa,EAAA,EAC5BC,GAAc,IAAI,MAAM,CAAC,EAAE,KAAKD,EAAU,EAC1CE,GAAe,IAAI,MAAM5L,EAAQ,EAAE,KAAK0L,EAAU,EAElDG,EAAiB9B,EAAAA,QAAQ,IAAMxG,EAAa,OAAQuI,GAAW,EAAQA,GAAQ,OAAQ,EAAG,CAACvI,CAAY,CAAC,EAExGwI,GAAQC,GAAAA,SACZ,CACE,QAAS7K,GAAgB0K,EAAiBtI,EAC1C,KAAM,CAAC,GAAG1F,EAAM,GAAIO,GAAaP,GAAM,OAAS8N,GAAcC,GAAgB,EAAG,EACjF,cAAe,CAAE,SAAUK,EAAAA,yBAA0B,MAAOC,EAAAA,qBAAsB,SAAUC,EAAAA,wBAAA,CAAyB,EAEvHC,GAAAA,gBAAA,EAGI,CAAE,cAAAC,GAAe,kBAAAC,GAAmB,aAAAC,GAAc,WAAAC,GAAY,KAAAC,GAASV,GAC7E5F,GAAgB,QAAUoG,GAE1B,MAAMG,GAAa,KAAK,UAAUH,GAAa,CAAC,GAAG,SAAS,IAAKT,GAAYA,GAA+C,MAAM,CAAC,EACnIxE,EAAAA,UAAU,IAAM,CACd,GAAI3F,GAAmB,CACrB,MAAMgL,EAASxG,GAAgB,QAC/BxE,KAAoBgL,IAAS,CAAC,GAAG,SAAS,IAAKb,GAAWA,GAAQ,MAAgB,GAAK,EAAE,CAC3F,CACF,EAAG,CAACY,GAAY/K,EAAiB,CAAC,EAElC,KAAM,CAAE,eAAAiL,EAAA,EAAmBC,eAAY,CACrC,KAAAJ,EACA,WAAYtO,GAAmB,WAC/B,mBAAoBA,GAAmB,mBACvC,wBAAyBA,GAAmB,wBAC5C,QAAAuC,GACA,aAAcuD,GACd,cAAe9F,GAAmB,cAClC,iBAAkBA,GAAmB,gBAAA,CACtC,EAEK2O,GAAUC,EAAAA,WACdC,EAAAA,UAAUC,EAAAA,YAAa,CAAE,qBAAsB,CAAE,SAAUC,EAAAA,uBAAA,EAA2B,EACtFF,EAAAA,UAAUG,EAAAA,YAAa,CAAE,qBAAsB,CAAE,SAAUD,EAAAA,uBAAA,EAA2B,CAAA,EAGlFE,GAA+B,CAAE,OAAQC,EAAAA,sBAAuB,SAAUC,EAAAA,uBAAA,EAEhF,SAASC,IAAc,CACrB,MAAI,CAAC3N,IAAkB,QAAU,CAACC,GAAqB4M,EAChD7M,GAAiB,OAAO,CAAC4N,EAA8BC,KAC5DD,EAAIC,CAAU,EAAIhB,EAAK,OAAQiB,GAAOA,EAAE,UAAsC,OAASD,CAAU,EAC1FD,GACN,CAAA,CAAE,CACP,CACAnH,GAAe,QAAUkH,GAEzB,MAAMI,GAAmBC,GAA0B,CACjD,KAAM,CAAE,OAAAC,GAAWD,EACnBnJ,GAAcgI,EAAK,KAAMqB,GAAUA,EAAK,UAAsC,KAAOD,GAAQ,EAAE,GAAK,IAAI,CAC1G,EAEME,GAAiBH,GAAwB,CAC7C,KAAM,CAAE,OAAAC,EAAQ,KAAAG,CAAA,EAASJ,EACpBI,IACDrO,IAAkB,iBACpBA,GAAiB,gBAAgBkO,EAAQG,EAAM1J,GAAwB2J,GAAsC,CAC3G1J,GAAyB0J,CAAmC,EAC5DtJ,GAAc,EAAI,EAClBhF,GAAiB,gBAAgB,CAC/B,UAAWkO,EAAO,GAClB,UAAWG,EAAK,GAChB,YAAcH,EAAO,KAAK,SAAqC,KAC/D,YAAcG,EAAK,KAAK,SAAqC,KAC7D,YAAaC,EACb,GAAI,IAAMtJ,GAAc,EAAK,CAAA,CAC9B,CACH,CAAC,EAEHF,GAAc,IAAI,EACpB,EAEMyJ,GAAmB,IAAMzJ,GAAc,IAAI,EAE3C0J,GAAsBC,GAAgB,CACtC,CAACnR,GAAY,QAAU,CAACD,GAAc,UACX2G,GAA3BD,KAAsB0K,EAA0B,KAC1BA,CAD8B,CAE1D,EAEMC,GAAyBpH,GAAiB,CAC9ClD,GAAoBkD,CAAG,EACvBpD,GAAuB,CAACD,EAAmB,EAC3CD,GAAqB,IAAI,CAC3B,EAEM2K,GAAmB7H,EAAAA,YAAY,IAAM,CACrCxJ,GAAY,aAAcA,EAAW,aAAA,EAChCA,GAAY,QAAQA,EAAW,OAAO,GAAI,EAAE,CACvD,EAAG,CAACA,CAAU,CAAC,EAETsR,GAAoB9H,EAAAA,YAAY,CAACQ,EAAe,OAAS,CAC7D3D,GAAmB2D,CAAG,EACtB/D,GAAe2D,GAAQI,EAAM,GAAO,CAACJ,CAAI,CAC3C,EAAG,CAAA,CAAE,EACC2H,GAAkB/H,EAAAA,YAAY,IAAMrD,MAAqB,CAACyD,CAAI,EAAG,EAAE,EAEnE4H,GAA2B,IAAM,CACrC,MAAMC,EAAkBnC,GAAa,CAAC,GAAG,SAAuD,OAAQT,GAAWA,GAAQ,UAAY,EAAK,EAC5I,QAASvD,EAAI,EAAGA,EAAImG,EAAe,OAAQnG,IACzC,GAAImG,EAAenG,CAAC,EAAE,cAAeA,EAAI,EAE3C,OAAOmG,EAAe,OAAS,CACjC,EAEMC,GAAiClI,EAAAA,YACpCmI,GAAyB,CACxB,IAAIC,EAAM,EACV,QAAStG,EAAIqG,EAAe,EAAGrG,EAAIsD,EAAe,OAAQtD,IACpDsD,EAAetD,CAAC,EAAE,UAAY,KAAOsG,GAAOhD,EAAetD,CAAC,EAAE,OAAS,GAE7E,OAAI9G,QAA6BC,IAA6BoN,EAAAA,sCAC1D7Q,IAAY4Q,GAAO3Q,GAAqB,EAAI6Q,EAAAA,0BACzCF,CACT,EACA,CAAChD,EAAgBnK,GAA2BxD,GAAoBuD,GAAsBxD,CAAU,CAAA,EAG5F+Q,GAAmB,IAAkB,CACzC,MAAMC,EAAS7M,GAAa,YAAA,EAC5B,MAAO,CACL,GAAIU,GAAqB,CAAA,EACzB,KAAMA,GAAmB,MAAQ,gBACjC,WAAYA,GAAmB,YAAcmM,EAC7C,QAASnM,GAAmB,SAAW9F,GAAc,cACrD,GAAI8F,GAAmB,IAAM,gBAC7B,UAAWA,GAAmB,WAAahG,EAC3C,QAASgG,GAAmB,SAAW1F,GAAS,IAAI,CAAC4J,EAAQrK,KAAW,CACtE,KAAMqK,EAAO,OACb,MAAOA,EAAO,MACd,QAASA,EAAO,QAChB,OAAQA,EAAO,OACf,MAAOrK,EAAQ,EACf,aAAcqK,EAAO,OACrB,SAAUrK,EAAQ,EAClB,OAAQqK,EAAO,MAAA,EACf,CAAA,CAEN,EACAZ,GAAoB,QAAU4I,GAE9B,MAAME,GAA0B,CAACC,EAAoBC,IAAkB,CACrE,MAAMC,EAAmBL,GAAA,EACzBjM,EAAqB,CACnB,GAAGsM,EACH,QAASA,GAAkB,SAAS,IAAKrI,GAAYA,EAAO,OAASmI,EAAa,CAAE,GAAGnI,EAAQ,MAAAoI,CAAA,EAAUpI,CAAO,EAChH,QAAS,EAAA,CACV,CACH,EAEAM,EAAAA,UAAU,IAAM,CACVtK,GAAc,eAAe,OAAS,MAAkB,EAAI,EAChE,MAAMsS,EAAcvJ,GAAqB,QACzC,GAAI,KAAK,UAAUuJ,GAAa,SAAW,CAAA,CAAE,IAAM,KAAK,UAAUtS,GAAc,eAAiB,CAAA,CAAE,EAAG,CACpG,MAAMuS,GAAkBD,GAAa,SAAS,QAAU,GAAK,EACvDE,EAAmBxS,GAAc,eAAe,OAAS,EAK/D,GAAI,EADsBuS,GAAkB,CAACC,GAAoB,CAAC1J,GAAsB,SAChE,CACtB,MAAMuJ,EAAmBjJ,GAAoB,QAAA,EAC7CrD,EAAqB,CAAE,GAAGsM,EAAkB,QAAS,KAAK,MAAM,KAAK,UAAUrS,GAAc,eAAiB,CAAA,CAAE,CAAC,EAAG,QAAS,GAAM,CACrI,CACA8I,GAAsB,QAAU,EAClC,CACF,EAAG,CAAC9I,GAAc,aAAa,CAAC,EAEhC,MAAMyS,GAA2BhJ,EAAAA,YAC9B2H,GAAgB,CACftI,GAAsB,QAAU,GAChC9I,GAAc,iBAAiBoR,CAAG,CACpC,EACA,CAACpR,GAAc,cAAc,CAAA,EAGzB0S,GAA0BjJ,EAAAA,YAAY,IAAM,CAChDX,GAAsB,QAAU,GAChC9I,GAAc,gBAAA,CAChB,EAAG,CAACA,GAAc,aAAa,CAAC,EAEhCsK,EAAAA,UAAU,IAAM,CACVrK,GAAY,YAAY,OAC1BmG,GAAa,EAAI,EACbnG,EAAW,WAAW,QAAU,OAASkH,GAAsBlH,EAAW,WAAW,KAAK,EAAGoH,GAAuB,IAAI,GACnHpH,EAAW,WAAW,QAAU,SAAUoH,GAAuBpH,EAAW,WAAW,KAAK,EAAGkH,GAAsB,IAAI,KAC3HA,GAAsB,IAAI,EAAGE,GAAuB,IAAI,EACnE,EAAG,CAACpH,GAAY,YAAY,MAAOA,GAAY,YAAY,KAAK,CAAC,EAEjEqK,EAAAA,UAAU,IAAM,CACd9D,GAAgBmM,GAAAA,iCAAiC5J,GAAqB,SAAS,SAAW,CAAA,EAAI3I,CAAO,CAAC,CACxG,EAAG,CAACA,CAAO,CAAC,EAEZkK,EAAAA,UAAU,IAAM,CACVxE,GAAmB,SAASkD,GAAe,SAAS,mBAAmBlD,CAAiB,CAC9F,EAAG,CAACA,CAAiB,CAAC,EAEtBwE,EAAAA,UAAU,IAAM,CAAE/C,GAAyB8B,GAAe,SAAoC,CAAG,EAAG,CAACoG,EAAK,MAAM,CAAC,EAEjHnF,EAAAA,UAAU,IAAM,CACdvE,EAAqBF,GAAoB,IAAI,EACzCA,GAAkB,SACpBW,GAAgBmM,GAAAA,iCAAiC9M,GAAkB,SAAW,CAAA,EAAIoD,GAAW,OAAO,CAAC,EAEnGpD,GAAkB,SAAWA,EAAiB,QAAQ,OAAS,GAAK,CAACgD,GAAyB,SAChG,sBAAsB,IAAM,CAAEK,GAAgB,SAAS,WAAWrD,EAAiB,OAAO,CAAG,CAAC,EAC9FgD,GAAyB,QAAU,IAC1BhD,GAAkB,SAAWgD,GAAyB,SACnC,KAAK,UAAUhD,EAAiB,OAAO,IAAM,KAAK,UAAUqD,GAAgB,SAAS,aAAa,GACrGA,GAAgB,SAAS,WAAWrD,EAAiB,OAAO,CAEzF,EAAG,CAACA,CAAgB,CAAC,EAErByE,EAAAA,UAAU,IAAM,CACd,GAAIxC,GAAa,QAAS,CACxB,MAAM8K,EAAiB,IAAI,eAAgBC,GAAYhL,GAAkBgL,EAAQ,CAAC,EAAE,YAAY,KAAK,CAAC,EACtG,OAAAD,EAAe,QAAQ9K,GAAa,OAAO,EACpC,IAAM8K,EAAe,WAAA,CAC9B,CACF,EAAG,CAAA,CAAE,EAELtI,EAAAA,UAAU,IAAM,CACd,GAAI,CAACtC,GAAkB,QAAS,OAChC,MAAM4K,EAAiB,IAAI,eAAgBC,GAAY,CACrD,KAAM,CAAE,MAAAT,EAAO,OAAAU,CAAA,EAAWD,EAAQ,CAAC,EAAE,YACrC3K,GAAsB,CAAE,MAAAkK,EAAO,OAAAU,EAAQ,CACzC,CAAC,EACD,OAAAF,EAAe,QAAQ5K,GAAkB,OAAO,EACzC,IAAM4K,EAAe,WAAA,CAC9B,EAAG,CAAA,CAAE,EAEL,MAAMG,GACJC,EAAAA,IAACC,GAAAA,KAAA,CACC,YAAAxQ,GACA,aAAA8M,GACA,WAAA3J,GACA,eAAAgK,GACA,aAAA5I,GACA,kBAAmBN,IAAqB,GACxC,qBAAAC,GACA,mBAAAO,GACA,oBAAAE,GACA,OAAQnH,GAAY,OACpB,SAAUD,GAAc,SACxB,mBAAAmR,GACA,sBAAAhK,GACA,uBAAAE,GACA,sBAAuBkK,GACvB,WAAa,MAAM,QAAQtQ,CAAU,EAAIA,EAAa,CAAA,EACtD,qBAAsBM,IAAwB,GAC9C,iBAAAC,GACA,kBAAAI,GACA,oBAAAC,GACA,aAAeb,IAAgB,KAC/B,UAAAI,GACA,qBAAuBqD,IAAwB,KAC/C,uBAAwBqI,EAAoB,CAAA,CAAA,EAI1CoG,GACJC,EAAAA,KAAAC,EAAAA,SAAA,CACG,SAAA,CAAA1L,IAAc9D,GACboP,MAAC,MAAA,CAAI,UAAU,6GAA6G,EAC1H,KACJA,EAAAA,IAAC,MAAA,CACE,GAAG3D,GAAA,EACJ,UAAU,oGAET,SAAA5I,GACC0M,OAAC,MAAA,CAAI,UAAU,OACZ,SAAA,CAAAJ,GACDC,EAAAA,IAAC,MAAA,CAAI,UAAU,kBACZ,SAAA5N,GAAa,YAAcA,EAAY,YAAYkJ,EAAgB,EAClE6E,OAAC,MAAA,CAAI,UAAU,yGACZ,SAAA,CAAAzR,IAAgB,CAACiE,EAAeqN,MAACK,GAAAA,mBAAA,CAAmB,WAAW,QAAQ,EAAKL,EAAAA,IAACM,GAAAA,YAAA,CAAY,KAAM7E,EAAA,CAAmB,EAClHlN,IAAwB,CAACoE,EACxBqN,MAAC,MAAA,CAAI,UAAU,OACb,SAAAG,EAAAA,KAACI,GAAA,CACC,GAAG,gCACH,OAAO,UACP,WAAW,QACX,QAAS/R,GAET,SAAA,CAAAwR,EAAAA,IAACQ,GAAAA,SAAA,CAAS,UAAU,4BAAA,CAA6B,EAAE,IAAEjF,EAAA,CAAA,CAAA,EAEzD,EACE,KACH,CAAC5I,GACAhE,IAAS,IAAI,CAAC8R,EAAQ9T,IACpBqT,MAACO,GAAA,CAAwC,OAAO,YAAY,GAAI9T,GAAiBgU,EAAO,MAAO9T,CAAK,EAAG,QAAS8T,EAAO,QACpH,SAAArO,GAAa,IAAIqO,EAAO,KAAK,GAAKA,EAAO,KAAA,EAD/B,GAAGA,EAAO,KAAK,IAAI9T,CAAK,EAErC,CACD,CAAA,CAAA,CACL,CAAA,CAEJ,CAAA,CAAA,CACF,EAEAqT,EAAAA,IAAC1T,GAAA,CACC,MAAO,CAAE,MAAO,OAAQ,OAAQ,MAAA,EAChC,WAAY,CAAC,CAAE,MAAA8S,EAAO,OAAAU,KAAa,CACjC,MAAMY,EAAiBtB,EAAQ,EAAIA,EAAQnK,GAAmB,MACxD0L,EAAkBb,EAAS,EAAIA,EAAS7K,GAAmB,OACjE,OAAOyL,EAAiB,GAAKC,EAAkB,EAC7CX,EAAAA,IAACY,GAAAA,KAAA,CAEG,kBAAAtE,GAAkF,KAAAG,EAAqB,WAAAD,GAAiC,UAAApO,GAAW,SAAAC,GAAU,YAAAC,GAAa,QAAAlB,EAAS,MAAOsT,EAAgB,OAAQC,EAAiB,aAAA9Q,GACnO,iBAAkB9C,GAAc,kBAAoB,EACtD,CAAA,EAEA,IACN,CAAA,CAAA,CACF,CAAA,CAEJ,EACF,EAGI8T,GAAeC,EAAAA,WAAiE,CAACC,EAAOC,IAC5Fb,EAAAA,KAAC,MAAA,CAAI,UAAU,gBAAiB,GAAGY,EAAO,IAAAC,EACvC,SAAA,CAAAjB,GACDC,EAAAA,IAAC,MAAA,CAAI,UAAU,yBAA0B,YAAO,QAAA,CAAS,CAAA,CAAA,CAC3D,CACD,EAEKiB,GAAmBH,EAAAA,WAAiE,CAACC,EAAOC,IAChGhB,MAAC,OAAI,UAAU,gBAAiB,GAAGe,EAAO,IAAAC,EACxC,eAAC,MAAA,CAAI,UAAU,yBAA0B,SAAAD,GAAO,SAAS,EAC3D,CACD,EAEKG,GAAuBnH,EAAAA,QAAQ,IAC/B3H,GAAa,kBACRA,EAAY,kBAAkB,CACnC,SAAAtF,EAAU,OAAQC,GAAc,OAAQ,aAAcA,GAAc,aACpE,kBAAAwR,GAAmB,gBAAAC,GAAiB,aAAcxR,GAAc,eAAe,OAC/E,QAAAI,EAAS,cAAeJ,GAAc,cAAe,qBAAA+F,EAAsB,kBAAAD,EAC3E,gBAAiB5F,GAAc,cAAe,UAAAG,EAC9C,gCAAAC,EACA,eAAgBN,GAAc,eAAgB,cAAeA,GAAc,cAC3E,SAAUA,GAAc,SAAU,KAAMY,IAAuBC,EAAM,aAAA0F,EAAc,qBAAsBrG,GAAc,qBACvH,kBAAmBA,GAAc,kBAAmB,cAAeA,GAAc,cAAe,YAAaA,GAAc,YAC3H,UAAWA,GAAc,UAAW,WAAYA,GAAc,WAC9D,UAAW,EAAQA,GAAc,UAAY,gBAAAsG,GAC7C,iBAAkB,EAAQzG,GAAc,iBAAmB,YAAa,CAAC,CAACG,GAAc,QACxF,eAAAgG,GAAgB,KAAMjG,GAAY,WAAY,OAAQA,GAAY,OAAQ,aAAcqR,GACxF,iBAAkBpR,GAAc,iBAChC,oBAAAK,EACA,kBAAAC,EACA,YAAAC,EACA,eAAAC,EACA,cAAAC,CAAA,CACD,EAEI,KACN,CACDb,EAAUC,GAAc,OAAQA,GAAc,aAAcwR,GAAmBC,GAC/ExR,GAAc,cAAeI,EAAS2F,EAAsBD,EAAmB5F,EAC/EG,EAAWL,GAAc,eAAgBA,GAAc,cAAeA,GAAc,SACpFa,EAAMD,GAAqB2F,EAActG,GAAY,WAAYA,GAAY,OAAQqR,GAAkBlM,EACvGrF,GAAc,iBAAkBO,EAAgCC,EAAqBC,EAAmBC,EAAYC,EAAeC,CAAA,CACpI,EAED2J,OAAAA,EAAAA,UAAU,IAAM,CACVpG,OAAqCgQ,EAAoB,CAC/D,EAAG,CAACA,GAAsBhQ,EAAiB,CAAC,EAG1CiP,EAAAA,KAACgB,GAAAA,aAAa,SAAb,CACC,MAAO,CACL,aAAAN,GAAc,iBAAAI,GAAkB,yBAAAxC,GAA0B,OAAQ1R,GAAc,OAChF,cAAeC,GAAc,cAAe,WAAAc,GAAY,OAAQb,GAAY,OAC5E,SAAUD,GAAc,SAAU,kBAAAuR,GAAmB,gBAAAC,GACrD,eAAgBxR,GAAc,eAAgB,cAAeA,GAAc,cAC3E,WAAAiB,EAAY,eAAA2O,GAAgB,cAAe5P,GAAc,cAAe,qBAAAuB,GACxE,iBAAAC,GAAkB,kBAAAI,GAAmB,oBAAAC,GAAqB,kBAAAC,GAAmB,YAAAC,GAC7E,qBAAAC,GAAsB,iBAAAmG,GAAkB,oBAAAC,EAAqB,cAAAnG,GAC7D,0BAAAC,GAA2B,sBAAAE,GAAuB,cAAAC,GAAe,+BAAAsP,GACjE,UAAArP,EAAW,kBAAAE,GAAmB,aAAAxB,GAAc,iBAAA2B,GAAkB,aAAAE,GAAc,cAAAC,GAC5E,qBAAAI,GAAsB,gBAAAG,GAAiB,aAAAkD,EAAc,SAAAjD,GAAU,aAAAC,GAAc,gBAAAC,GAC7E,YAAAC,GAAa,QAAAC,GAAS,WAAAC,GAAY,WAAAI,GAAY,cAAAC,GAAe,oBAAAC,GAC7D,sBAAuBjE,GAAc,sBAAuB,wBAAAkS,GAC5D,kBAAA9N,GAAmB,qBAAAC,GAAsB,yBAAAC,GAA0B,4BAAAC,GACnE,eAAAqD,EAAgB,iBAAApD,GAAkB,qBAAAC,GAAsB,YAAAtE,GAAa,0BAAAuE,GACrE,YAAAE,GAAa,iBAAAC,GAAkB,oBAAA0I,GAAqB,qBAAAE,GAAsB,mBAAAlF,GAC1E,wBAAAqF,GAAyB,gBAAA9I,GAAiB,qBAAA+I,GAAsB,sBAAAC,GAChE,uBAAArF,GAAwB,sBAAAE,GAAuB,mBAAAoF,GAAoB,mBAAAG,GACnE,aAAA5E,EAAc,eAAAE,GAAgB,kBAAAe,GAAmB,eAAAI,GAAgB,eAAAC,GACjE,qBAAAC,GAAsB,oBAAAsB,GAAqB,qBAAAM,GAAsB,oBAAAE,GACjE,kBAAAG,EAAmB,aAAAhC,EAAc,qBAAA/F,GAAsB,sBAAAC,EAAuB,wBAAA0G,CAAA,EAG/E,SAAA,CAAA3K,GACCoS,EAAAA,KAAC,MAAA,CACC,IAAKrL,GACL,UAAW,oDACTF,EAAiBwM,EAAAA,yBAA2B,yBAA2B,uBACzE,GAEA,SAAA,CAAAjB,EAAAA,KAAC,MAAA,CACC,UAAW,qCACTvL,EAAiBwM,EAAAA,yBAA2B,mBAAqB,EACnE,IAAIlU,GAAc,QAAU,iBAAmB,UAAU,GAExD,SAAA,CAAAA,GAAc,QACb8S,MAAC,MAAA,CAAI,UAAW,WAAWpL,EAAiBwM,EAAAA,yBAA2B,SAAW,QAAQ,GACvF,SAAAlU,EAAa,OAAA,CAChB,EACE,KACHkD,GACC+P,EAAAA,KAAC,MAAA,CAAI,UAAU,qCACb,SAAA,CAAAA,EAAAA,KAAC,MAAA,CACC,MAAM,6BACN,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,OAAO,eACP,YAAY,IACZ,cAAc,QACd,eAAe,QACf,UAAU,uDACV,cAAW,GAEX,SAAA,CAAAH,EAAAA,IAAC,UAAA,CAAQ,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,GAAA,CAAI,EACtCA,EAAAA,IAAC,OAAA,CAAK,EAAE,uCAAA,CAAwC,EAChDA,EAAAA,IAAC,OAAA,CAAK,EAAE,uCAAA,CAAwC,EAChDA,EAAAA,IAAC,OAAA,CAAK,EAAE,yCAAA,CAA0C,CAAA,CAAA,CAAA,EAEpDA,EAAAA,IAACqB,GAAAA,WAAA,CAAW,KAAK,QAAQ,QAAQ,WAAW,WAAW,QACnD,UAAAlR,IAActC,EAAK,QAAQ,eAAA,EAC/B,EACAmS,EAAAA,IAACqB,GAAAA,YAAW,KAAK,QAAQ,QAAQ,UAAU,WAAW,WAAW,SAAA,eAAA,CAEjE,CAAA,CAAA,CACF,EACEnU,GAAc,WAChB8S,EAAAA,IAAC,OAAI,UAAU,mDAAoD,SAAA9S,EAAa,UAAA,CAAW,EACzF,IAAA,CAAA,CAAA,EAENiT,EAAAA,KAAC,MAAA,CACC,UAAW,yCACTvL,EAAiBwM,EAAAA,yBAA2B,SAAWlU,GAAc,QAAU,WAAa,QAC9F,IAAI0H,EAAiB0M,EAAAA,0BAA4B,WAAa,UAAU,IACtEpU,GAAc,YAAc,QAAU,EACxC,GAEC,SAAA,CAAAkD,IAAmBlD,GAAc,WAChC8S,EAAAA,IAAC,MAAA,CAAI,UAAU,yCAA0C,SAAA9S,EAAa,WAAW,EAC/E,KACJ8S,EAAAA,IAAC,MAAA,CACC,UAAW,yCACTpL,EAAiB0M,EAAAA,2BAAuC1M,EAAiBwM,EAAAA,yBAA5B,SAAkE,EACjH,GAEC,SAAAF,EAAA,CAAA,EAEFhU,GAAc,YACb8S,EAAAA,IAAC,MAAA,CAAI,UAAW,iCAAiCpL,EAAiB0M,EAAAA,0BAA4B,SAAW,EAAE,GACxG,SAAApU,EAAa,YAChB,EACE,IAAA,CAAA,CAAA,CACN,CAAA,CAAA,EAEA,KACHA,GAAc,YAAc8S,MAAC,MAAA,CAAI,UAAU,yCAAyC,EAAK,KACzF/M,IAAeE,GACd6M,EAAAA,IAAC,MAAA,CAAI,UAAU,2DACb,SAAAG,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACZ,SAAA,CAAAhN,IAAaf,GAAa,eACzBA,EAAY,eAAe,CAAE,KAAMnF,GAAY,WAAY,aAAcqR,GAAkB,OAAQrR,GAAY,OAAQ,aAAAsG,EAAc,KAAA1F,CAAA,CAAM,EACzI,KACHoF,IAAeE,IAAalG,GAAY,YAAY,QAAU,GAC7D+S,EAAAA,IAAC,MAAA,CAAI,UAAU,0CAAA,CAA2C,EACxD,KACH/M,GACCkN,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACX,SAAA,EAAAzN,IAAa1F,GAAc,gBAAkBoF,GAAa,qBAC1DA,EAAY,oBAAoB,CAC9B,QAASpF,GAAc,cAAe,eAAgByS,GACtD,cAAeC,GAAyB,cAAe1S,GAAc,cACrE,SAAUA,GAAc,SAAU,aAAAuG,EAAc,cAAevG,GAAc,cAC7E,UAAAK,EAAW,gCAAAC,EAAiC,UAAW,GAAM,YAAaN,GAAc,YAAa,QAASA,GAAc,QAAS,KAAMY,IAAuBC,EAClK,oBAAAN,EACA,kBAAAC,EACA,YAAAC,EACA,eAAAC,EACA,cAAAC,CAAA,CACD,EAEFyE,GAAa,qBACZA,EAAY,oBAAoB,CAC9B,cAAepF,GAAc,cAAe,QAASqR,GACrD,UAAAhR,EAAW,gCAAAC,EAAiC,oBAAqB+F,GAAiB,yBAA0B,IAAMC,GAAmB,IAAI,EACzI,OAAQQ,GAAkB,SAAU9G,GAAc,SAAU,aAAAuG,EAC5D,cAAevG,GAAc,cAAe,KAAMY,IAAuBC,EAAM,YAAab,GAAc,YAC1G,QAASA,GAAc,QACvB,oBAAAO,EACA,kBAAAC,EACA,YAAAC,EACA,eAAAC,EACA,cAAAC,CAAA,CACD,CAAA,CAAA,CAEL,EACE,IAAA,CAAA,CACN,EACF,EACE,KACHmD,IAAqB,OAAO,KAAKA,EAAiB,EAAE,OAASkP,EAAAA,IAACuB,eAAA,CAAa,GAAGzQ,EAAA,CAAmB,EAAK,KACtG,CAAC/C,IAAcqC,GACd+P,EAAAA,KAAC,MAAA,CAAI,UAAU,iCACb,SAAA,CAAAA,EAAAA,KAAC,MAAA,CACC,MAAM,6BACN,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,OAAO,eACP,YAAY,IACZ,cAAc,QACd,eAAe,QACf,UAAU,uDACV,cAAW,GAEX,SAAA,CAAAH,EAAAA,IAAC,UAAA,CAAQ,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,GAAA,CAAI,EACtCA,EAAAA,IAAC,OAAA,CAAK,EAAE,uCAAA,CAAwC,EAChDA,EAAAA,IAAC,OAAA,CAAK,EAAE,uCAAA,CAAwC,EAChDA,EAAAA,IAAC,OAAA,CAAK,EAAE,yCAAA,CAA0C,CAAA,CAAA,CAAA,EAEpDA,EAAAA,IAACqB,GAAAA,WAAA,CAAW,KAAK,QAAQ,QAAQ,WAAW,WAAW,QACnD,UAAAlR,IAActC,EAAK,QAAQ,eAAA,EAC/B,EACAmS,EAAAA,IAACqB,GAAAA,YAAW,KAAK,QAAQ,QAAQ,UAAU,WAAW,WAAW,SAAA,eAAA,CAEjE,CAAA,CAAA,CACF,EACE,CAACtT,IAAcb,GAAc,WAC/B8S,EAAAA,IAAC,MAAA,CAAI,UAAU,yBAA0B,SAAA9S,EAAa,UAAA,CAAW,EAC/D,KACJ8S,EAAAA,IAAC,MAAA,CACC,IAAKhL,GACL,UAAW,UAAUtF,GAAmB,SAAWP,EAAgB,gDACnE,MAAO,CACL,GAAIO,GACA,CAAE,OAAQ7B,GAAM,OAAS,EAAI,IAAIA,GAAM,OAAS,GAAKyE,GAAgB,CAAC,KAAO,SAC7E,CAAE,OAAQ6I,EAAA,EACd,GAAGtK,EAAA,EAGJ,SAAAd,GACCmQ,GAEAC,EAAAA,KAACqB,EAAAA,WAAA,CAAW,QAAA1E,GAAkB,UAAWiB,GAAe,YAAaJ,GAAiB,aAAcO,GAAkB,mBAAoBuD,EAAAA,eACvI,SAAA,CAAAvB,GACA1L,EACGkN,GAAAA,mBACGC,EAAAA,YAAA,CAAY,YAAa,GAAM,cAAAvE,GAC9B,SAAA4C,EAAAA,IAAC,SAAO,GAAG3D,GAAA,EAAiB,UAAU,wHACpC,SAAA8D,EAAAA,KAAC,QAAA,CAAO,GAAG7D,KAAqB,UAAU,6CACvC,SAAA,CAAA,KAAKE,GAAWhI,CAAU,QAC1BoN,GAAAA,IAAA,CAAwE,IAAKpN,EAAqB,MAAOiI,GAAM,UAAWqB,GAASA,EAAK,KAAQtJ,EAAW,SAAqC,EAAE,GAAxLA,EAAW,SAAqC,EAA2I,CAAA,CAAA,CACxM,EACF,EACF,EACA,SAAS,eAAe,uBAAuB,GAAK,SAAS,IAAA,EAE/D,IAAA,CAAA,CACN,CAAA,CAAA,EAGH9E,IAAoB0C,GAAa,iBAAmBA,EAAY,iBAAiB1C,EAAgB,EAAI,KAErG0C,GAAa,uBAAyBA,EAAY,sBAAsB,CACvE,UAAW,CAAC,CAACiD,EAAuB,WAAYqF,GAA0B,QAASD,GACnF,qBAAsBpF,GAAuB,qBAAsB,kBAAmBA,GAAuB,kBAC7G,eAAgBA,GAAuB,eAAgB,aAAcA,GAAuB,eAAgB,YAAa,EAAA,CAC1H,EAED2K,EAAAA,IAAC6B,GAAAA,uBAAA,CAAuB,OAAQpM,GAAwB,QAASqF,GAAuB,EAExFkF,EAAAA,IAAC8B,GAAAA,wBAAA,CACC,kBAAAhI,EACA,iBAAAG,GACA,qBAAAE,GACA,sBAAAnI,EACA,WAAY6F,GACZ,UAAWsB,GACX,eAAgBrB,CAAA,CAAA,CAClB,CAAA,CAAA,CAGN,CACF"}
|
|
1
|
+
{"version":3,"file":"index.cjs.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","k","saveRowPendingEdits","editedRowData","n","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":"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"}
|