@lax-wp/design-system 0.13.33 → 0.13.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/dist/components/button/Button.cjs.js +5 -5
  2. package/dist/components/button/Button.cjs.js.map +1 -1
  3. package/dist/components/button/Button.es.js +18 -18
  4. package/dist/components/button/Button.es.js.map +1 -1
  5. package/dist/components/button/IconButton.cjs.js +1 -1
  6. package/dist/components/button/IconButton.cjs.js.map +1 -1
  7. package/dist/components/button/IconButton.es.js +8 -8
  8. package/dist/components/button/IconButton.es.js.map +1 -1
  9. package/dist/components/buttons/option-button/OptionButton.cjs.js +1 -1
  10. package/dist/components/buttons/option-button/OptionButton.cjs.js.map +1 -1
  11. package/dist/components/buttons/option-button/OptionButton.es.js +1 -1
  12. package/dist/components/buttons/option-button/OptionButton.es.js.map +1 -1
  13. package/dist/components/data-display/comparison/components/Header.cjs.js +1 -1
  14. package/dist/components/data-display/comparison/components/Header.cjs.js.map +1 -1
  15. package/dist/components/data-display/comparison/components/Header.es.js +13 -13
  16. package/dist/components/data-display/comparison/components/Header.es.js.map +1 -1
  17. package/dist/components/data-display/infinite-table/body/cell/DataCell.cjs.js +1 -1
  18. package/dist/components/data-display/infinite-table/body/cell/DataCell.cjs.js.map +1 -1
  19. package/dist/components/data-display/infinite-table/body/cell/DataCell.es.js +1 -1
  20. package/dist/components/data-display/infinite-table/body/cell/DataCell.es.js.map +1 -1
  21. package/dist/components/data-display/infinite-table/body/rows/index.cjs.js +1 -1
  22. package/dist/components/data-display/infinite-table/body/rows/index.cjs.js.map +1 -1
  23. package/dist/components/data-display/infinite-table/body/rows/index.es.js +104 -101
  24. package/dist/components/data-display/infinite-table/body/rows/index.es.js.map +1 -1
  25. package/dist/components/data-display/infinite-table/constants.cjs.js +1 -1
  26. package/dist/components/data-display/infinite-table/constants.cjs.js.map +1 -1
  27. package/dist/components/data-display/infinite-table/constants.d.ts +6 -0
  28. package/dist/components/data-display/infinite-table/constants.es.js +17 -16
  29. package/dist/components/data-display/infinite-table/constants.es.js.map +1 -1
  30. package/dist/components/data-display/infinite-table/index.cjs.js +1 -1
  31. package/dist/components/data-display/infinite-table/index.cjs.js.map +1 -1
  32. package/dist/components/data-display/infinite-table/index.es.js +188 -187
  33. package/dist/components/data-display/infinite-table/index.es.js.map +1 -1
  34. package/dist/components/data-display/infinite-table/useRowHeight.cjs.js +2 -0
  35. package/dist/components/data-display/infinite-table/useRowHeight.cjs.js.map +1 -0
  36. package/dist/components/data-display/infinite-table/useRowHeight.d.ts +15 -0
  37. package/dist/components/data-display/infinite-table/useRowHeight.es.js +24 -0
  38. package/dist/components/data-display/infinite-table/useRowHeight.es.js.map +1 -0
  39. package/dist/components/data-display/tag/Tag.cjs.js +1 -1
  40. package/dist/components/data-display/tag/Tag.cjs.js.map +1 -1
  41. package/dist/components/data-display/tag/Tag.es.js +11 -9
  42. package/dist/components/data-display/tag/Tag.es.js.map +1 -1
  43. package/dist/components/floating-bar/FloatingBar.cjs.js +1 -1
  44. package/dist/components/floating-bar/FloatingBar.cjs.js.map +1 -1
  45. package/dist/components/floating-bar/FloatingBar.es.js +9 -9
  46. package/dist/components/floating-bar/FloatingBar.es.js.map +1 -1
  47. package/dist/components/forms/base-input-field/BaseInputField.cjs.js +2 -2
  48. package/dist/components/forms/base-input-field/BaseInputField.cjs.js.map +1 -1
  49. package/dist/components/forms/base-input-field/BaseInputField.es.js +40 -42
  50. package/dist/components/forms/base-input-field/BaseInputField.es.js.map +1 -1
  51. package/dist/components/forms/creatable-select/CreatableSelect.cjs.js +1 -1
  52. package/dist/components/forms/creatable-select/CreatableSelect.cjs.js.map +1 -1
  53. package/dist/components/forms/creatable-select/CreatableSelect.es.js +14 -15
  54. package/dist/components/forms/creatable-select/CreatableSelect.es.js.map +1 -1
  55. package/dist/components/forms/currency-input/CurrencyInputField.cjs.js +1 -1
  56. package/dist/components/forms/currency-input/CurrencyInputField.cjs.js.map +1 -1
  57. package/dist/components/forms/currency-input/CurrencyInputField.es.js +57 -65
  58. package/dist/components/forms/currency-input/CurrencyInputField.es.js.map +1 -1
  59. package/dist/components/forms/date-time-field/DateTimeField.cjs.js +1 -1
  60. package/dist/components/forms/date-time-field/DateTimeField.cjs.js.map +1 -1
  61. package/dist/components/forms/date-time-field/DateTimeField.es.js +33 -33
  62. package/dist/components/forms/date-time-field/DateTimeField.es.js.map +1 -1
  63. package/dist/components/forms/debounce-input/DebounceInputField.cjs.js +1 -1
  64. package/dist/components/forms/debounce-input/DebounceInputField.cjs.js.map +1 -1
  65. package/dist/components/forms/debounce-input/DebounceInputField.es.js +2 -2
  66. package/dist/components/forms/debounce-input/DebounceInputField.es.js.map +1 -1
  67. package/dist/components/forms/dynamic-data-input/DynamicDataInput.cjs.js +1 -1
  68. package/dist/components/forms/dynamic-data-input/DynamicDataInput.cjs.js.map +1 -1
  69. package/dist/components/forms/dynamic-data-input/DynamicDataInput.es.js +7 -7
  70. package/dist/components/forms/dynamic-data-input/DynamicDataInput.es.js.map +1 -1
  71. package/dist/components/forms/dynamic-data-input/DynamicDataInputField.cjs.js +1 -1
  72. package/dist/components/forms/dynamic-data-input/DynamicDataInputField.cjs.js.map +1 -1
  73. package/dist/components/forms/dynamic-data-input/DynamicDataInputField.es.js +17 -19
  74. package/dist/components/forms/dynamic-data-input/DynamicDataInputField.es.js.map +1 -1
  75. package/dist/components/forms/field-options/Item.cjs.js +1 -1
  76. package/dist/components/forms/field-options/Item.cjs.js.map +1 -1
  77. package/dist/components/forms/field-options/Item.es.js +5 -5
  78. package/dist/components/forms/field-options/Item.es.js.map +1 -1
  79. package/dist/components/forms/formula-input/FormulaInput.cjs.js +1 -1
  80. package/dist/components/forms/formula-input/FormulaInput.cjs.js.map +1 -1
  81. package/dist/components/forms/formula-input/FormulaInput.es.js +10 -10
  82. package/dist/components/forms/formula-input/FormulaInput.es.js.map +1 -1
  83. package/dist/components/forms/icon-picker/IconPicker.cjs.js +1 -1
  84. package/dist/components/forms/icon-picker/IconPicker.cjs.js.map +1 -1
  85. package/dist/components/forms/icon-picker/IconPicker.es.js +42 -57
  86. package/dist/components/forms/icon-picker/IconPicker.es.js.map +1 -1
  87. package/dist/components/forms/input-field/InputField.cjs.js.map +1 -1
  88. package/dist/components/forms/input-field/InputField.es.js.map +1 -1
  89. package/dist/components/forms/master-data-input/MasterDataInputField.cjs.js +1 -1
  90. package/dist/components/forms/master-data-input/MasterDataInputField.cjs.js.map +1 -1
  91. package/dist/components/forms/master-data-input/MasterDataInputField.es.js +54 -60
  92. package/dist/components/forms/master-data-input/MasterDataInputField.es.js.map +1 -1
  93. package/dist/components/forms/md-input/RichMarkdownInput.cjs.js +3 -3
  94. package/dist/components/forms/md-input/RichMarkdownInput.cjs.js.map +1 -1
  95. package/dist/components/forms/md-input/RichMarkdownInput.es.js +63 -63
  96. package/dist/components/forms/md-input/RichMarkdownInput.es.js.map +1 -1
  97. package/dist/components/forms/number-input-field/NumberInputField.cjs.js +1 -1
  98. package/dist/components/forms/number-input-field/NumberInputField.cjs.js.map +1 -1
  99. package/dist/components/forms/number-input-field/NumberInputField.es.js +5 -5
  100. package/dist/components/forms/number-input-field/NumberInputField.es.js.map +1 -1
  101. package/dist/components/forms/percentage-input/PercentageInputField.cjs.js +2 -2
  102. package/dist/components/forms/percentage-input/PercentageInputField.cjs.js.map +1 -1
  103. package/dist/components/forms/percentage-input/PercentageInputField.es.js +20 -20
  104. package/dist/components/forms/percentage-input/PercentageInputField.es.js.map +1 -1
  105. package/dist/components/forms/search-bar/SearchBar.cjs.js +1 -1
  106. package/dist/components/forms/search-bar/SearchBar.cjs.js.map +1 -1
  107. package/dist/components/forms/search-bar/SearchBar.es.js +16 -16
  108. package/dist/components/forms/search-bar/SearchBar.es.js.map +1 -1
  109. package/dist/components/forms/select-field/SelectField.cjs.js +2 -2
  110. package/dist/components/forms/select-field/SelectField.cjs.js.map +1 -1
  111. package/dist/components/forms/select-field/SelectField.d.ts +4 -0
  112. package/dist/components/forms/select-field/SelectField.es.js +202 -203
  113. package/dist/components/forms/select-field/SelectField.es.js.map +1 -1
  114. package/dist/components/forms/text-area-field/TextAreaField.cjs.js +1 -1
  115. package/dist/components/forms/text-area-field/TextAreaField.cjs.js.map +1 -1
  116. package/dist/components/forms/text-area-field/TextAreaField.es.js +14 -14
  117. package/dist/components/forms/text-area-field/TextAreaField.es.js.map +1 -1
  118. package/dist/components/forms/toggle/Toggle.cjs.js +1 -1
  119. package/dist/components/forms/toggle/Toggle.cjs.js.map +1 -1
  120. package/dist/components/forms/toggle/Toggle.es.js +65 -59
  121. package/dist/components/forms/toggle/Toggle.es.js.map +1 -1
  122. package/dist/components/navigation/accordion/Accordion.cjs.js +1 -1
  123. package/dist/components/navigation/accordion/Accordion.cjs.js.map +1 -1
  124. package/dist/components/navigation/accordion/Accordion.es.js +5 -5
  125. package/dist/components/navigation/accordion/Accordion.es.js.map +1 -1
  126. package/dist/components/navigation/stepper/Stepper.cjs.js +1 -1
  127. package/dist/components/navigation/stepper/Stepper.cjs.js.map +1 -1
  128. package/dist/components/navigation/stepper/Stepper.es.js +1 -1
  129. package/dist/components/navigation/stepper/Stepper.es.js.map +1 -1
  130. package/dist/components/navigation/tabs/TabOptions.cjs.js +1 -1
  131. package/dist/components/navigation/tabs/TabOptions.cjs.js.map +1 -1
  132. package/dist/components/navigation/tabs/TabOptions.es.js +15 -15
  133. package/dist/components/navigation/tabs/TabOptions.es.js.map +1 -1
  134. package/dist/components/navigation/tabs/TabSwitch.cjs.js +1 -1
  135. package/dist/components/navigation/tabs/TabSwitch.cjs.js.map +1 -1
  136. package/dist/components/navigation/tabs/TabSwitch.es.js +7 -7
  137. package/dist/components/navigation/tabs/TabSwitch.es.js.map +1 -1
  138. package/dist/components/navigation/tabs/Tabs.cjs.js +1 -1
  139. package/dist/components/navigation/tabs/Tabs.cjs.js.map +1 -1
  140. package/dist/components/navigation/tabs/Tabs.es.js +1 -1
  141. package/dist/components/navigation/tabs/Tabs.es.js.map +1 -1
  142. package/dist/components/tooltip/Tooltip.cjs.js +1 -1
  143. package/dist/components/tooltip/Tooltip.cjs.js.map +1 -1
  144. package/dist/components/tooltip/Tooltip.es.js +19 -19
  145. package/dist/components/tooltip/Tooltip.es.js.map +1 -1
  146. package/dist/components/user-avatar/UserAvatar.cjs.js +1 -1
  147. package/dist/components/user-avatar/UserAvatar.cjs.js.map +1 -1
  148. package/dist/components/user-avatar/UserAvatar.d.ts +1 -1
  149. package/dist/components/user-avatar/UserAvatar.es.js +40 -38
  150. package/dist/components/user-avatar/UserAvatar.es.js.map +1 -1
  151. package/dist/components/user-avatar/constants.cjs.js +1 -1
  152. package/dist/components/user-avatar/constants.cjs.js.map +1 -1
  153. package/dist/components/user-avatar/constants.d.ts +1 -0
  154. package/dist/components/user-avatar/constants.es.js +10 -9
  155. package/dist/components/user-avatar/constants.es.js.map +1 -1
  156. package/dist/design-system.css +1 -1
  157. package/package.json +2 -3
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../../../../src/components/data-display/infinite-table/index.tsx"],"sourcesContent":["import { useCheckbox } from '../../../hooks/useCheckbox';\nimport { useTableConfig } from '../../../providers/design-system-provider/hooks';\nimport { 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';\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 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) * 41 + 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","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","n","k","saveRowPendingEdits","editedRowData","pendingEditsCount","useMemo","total","pendingEditsList","list","rowsWithPendingEdits","rowsMap","a","b","openMasterDataModal","config","closeMasterDataModal","handleMasterDataSelected","value","clearSelectedMasterData","openCurrencyDropdown","closeCurrencyDropdown","setCurrencyForCell","cellKey","currency","getCurrencyForCell","fallbackHeight","pxMatch","calcMatch","emptySwitchProps","translatedCreateColumnLabel","defaultEmptyText","resolvedEmptyText","loaderData","cellLoaders","tableLoaders","visibleColumns","header","table","useTable","DEFAULT_COLUMN_MIN_WIDTH","DEFAULT_COLUMN_WIDTH","DEFAULT_COLUMN_MAX_WIDTH","useResizeColumns","getTableProps","getTableBodyProps","headerGroups","prepareRow","rows","headerKeys","groups","checkboxConfig","useCheckbox","sensors","useSensors","useSensor","MouseSensor","DND_ACTIVATION_DISTANCE","TouchSensor","dropAnimation","DROP_ANIMATION_EASING","DROP_ANIMATION_DURATION","computeList","acc","contextKey","e","handleDragStart","event","active","item","handleDragEnd","over","newState","handleDragCancel","toggleHeaderOption","key","toggleDataFilterModal","handleRemoveSort","toggleShowFilters","toggleShowSorts","lastNonStickyColumnIndex","reverseHeaders","getSumOfNextVisibleColumnWidth","currentIndex","sum","ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH","ROW_OPTIONS_COLUMN_WIDTH","resolveTableView","userId","handleUpdateColumnWidth","columnName","width","updatedTableView","currentView","hasViewFilters","hasConfigFilters","handleActiveRemoveFilter","handleActiveClearFilter","mergeViewColumnsWithTableColumns","resizeObserver","entries","height","tableHeader","jsx","Head","tableView","jsxs","Fragment","NoDataFoundWidgets","NoDataFound","Button","Add2Icon","button","effectiveWidth","effectiveHeight","Body","tableWrapper","forwardRef","props","ref","tableBodyWrapper","TableHeaderComponent","TableContext","TOOLBAR_FIRST_BREAKPOINT","Typography","TOOLBAR_SECOND_BREAKPOINT","FloatingBar","DndContext","closestCorners","createPortal","DragOverlay","Row","CurrencyDropdownPortal","PendingEditsFloatingBar"],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../../../../src/components/data-display/infinite-table/index.tsx"],"sourcesContent":["import { useCheckbox } from '../../../hooks/useCheckbox';\nimport { useTableConfig } from '../../../providers/design-system-provider/hooks';\nimport { 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","n","k","saveRowPendingEdits","editedRowData","pendingEditsCount","useMemo","total","pendingEditsList","list","rowsWithPendingEdits","rowsMap","a","b","openMasterDataModal","config","closeMasterDataModal","handleMasterDataSelected","value","clearSelectedMasterData","openCurrencyDropdown","closeCurrencyDropdown","setCurrencyForCell","cellKey","currency","getCurrencyForCell","fallbackHeight","pxMatch","calcMatch","emptySwitchProps","translatedCreateColumnLabel","defaultEmptyText","resolvedEmptyText","loaderData","cellLoaders","tableLoaders","visibleColumns","header","table","useTable","DEFAULT_COLUMN_MIN_WIDTH","DEFAULT_COLUMN_WIDTH","DEFAULT_COLUMN_MAX_WIDTH","useResizeColumns","getTableProps","getTableBodyProps","headerGroups","prepareRow","rows","headerKeys","groups","checkboxConfig","useCheckbox","sensors","useSensors","useSensor","MouseSensor","DND_ACTIVATION_DISTANCE","TouchSensor","dropAnimation","DROP_ANIMATION_EASING","DROP_ANIMATION_DURATION","computeList","acc","contextKey","e","handleDragStart","event","active","item","handleDragEnd","over","newState","handleDragCancel","toggleHeaderOption","key","toggleDataFilterModal","handleRemoveSort","toggleShowFilters","toggleShowSorts","lastNonStickyColumnIndex","reverseHeaders","getSumOfNextVisibleColumnWidth","currentIndex","sum","ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH","ROW_OPTIONS_COLUMN_WIDTH","resolveTableView","userId","handleUpdateColumnWidth","columnName","width","updatedTableView","currentView","hasViewFilters","hasConfigFilters","handleActiveRemoveFilter","handleActiveClearFilter","mergeViewColumnsWithTableColumns","resizeObserver","entries","height","tableHeader","jsx","Head","tableView","jsxs","Fragment","NoDataFoundWidgets","NoDataFound","Button","Add2Icon","button","effectiveWidth","effectiveHeight","Body","tableWrapper","forwardRef","props","ref","tableBodyWrapper","TableHeaderComponent","TableContext","TOOLBAR_FIRST_BREAKPOINT","Typography","TOOLBAR_SECOND_BREAKPOINT","FloatingBar","DndContext","closestCorners","createPortal","DragOverlay","Row","CurrencyDropdownPortal","PendingEditsFloatingBar"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react"),u=require("./constants.cjs.js"),d=(t=40)=>{const[r,c]=i.useState(t);return i.useEffect(()=>{if(typeof document>"u")return;const e=document.createElement("div");e.className="h-row",e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.top="-9999px",e.style.left="-9999px",e.style.width="0",e.style.visibility="hidden",e.style.pointerEvents="none",document.body.appendChild(e);const o=()=>{const n=e.getBoundingClientRect().height;n>0&&c(n)};o();const s=new ResizeObserver(o);return s.observe(e),()=>{s.disconnect(),e.remove()}},[]),r},l=t=>t+u.ROW_SLOT_BORDER_PX;exports.getRowSlotHeight=l;exports.useRowHeight=d;
2
+ //# sourceMappingURL=useRowHeight.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRowHeight.cjs.js","sources":["../../../../src/components/data-display/infinite-table/useRowHeight.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { ROW_SLOT_BORDER_PX } from './constants';\n\n/**\n * Measures the resolved pixel height of the `h-row` Tailwind utility.\n *\n * `h-row` is a viewport-based `clamp()` (see `tailwind.config.js`), so its value\n * only exists after CSS resolves it — a hard-coded number in JS layout math\n * (react-window `itemSize`, pagination container height) would drift from what\n * the browser actually renders. This hook keeps them in sync by measuring an\n * off-screen probe element and re-measuring whenever the viewport resizes.\n *\n * @param fallback Height (px) used before the first measurement / in SSR.\n * @returns The measured content height of one row, in px.\n */\nexport const useRowHeight = (fallback = 40): number => {\n const [rowHeight, setRowHeight] = useState(fallback);\n\n useEffect(() => {\n if (typeof document === 'undefined') return;\n\n const probe = document.createElement('div');\n probe.className = 'h-row';\n probe.setAttribute('aria-hidden', 'true');\n probe.style.position = 'absolute';\n probe.style.top = '-9999px';\n probe.style.left = '-9999px';\n probe.style.width = '0';\n probe.style.visibility = 'hidden';\n probe.style.pointerEvents = 'none';\n document.body.appendChild(probe);\n\n const measure = () => {\n const height = probe.getBoundingClientRect().height;\n if (height > 0) setRowHeight(height);\n };\n measure();\n\n const observer = new ResizeObserver(measure);\n observer.observe(probe);\n\n return () => {\n observer.disconnect();\n probe.remove();\n };\n }, []);\n\n return rowHeight;\n};\n\n/** Row slot height (content + the `<tr>` border) used by virtualization/layout math. */\nexport const getRowSlotHeight = (rowHeight: number): number => rowHeight + ROW_SLOT_BORDER_PX;\n"],"names":["useRowHeight","fallback","rowHeight","setRowHeight","useState","useEffect","probe","measure","height","observer","getRowSlotHeight","ROW_SLOT_BORDER_PX"],"mappings":"yIAgBaA,EAAe,CAACC,EAAW,KAAe,CACrD,KAAM,CAACC,EAAWC,CAAY,EAAIC,EAAAA,SAASH,CAAQ,EAEnDI,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAI,OAAO,SAAa,IAAa,OAErC,MAAMC,EAAQ,SAAS,cAAc,KAAK,EAC1CA,EAAM,UAAY,QAClBA,EAAM,aAAa,cAAe,MAAM,EACxCA,EAAM,MAAM,SAAW,WACvBA,EAAM,MAAM,IAAM,UAClBA,EAAM,MAAM,KAAO,UACnBA,EAAM,MAAM,MAAQ,IACpBA,EAAM,MAAM,WAAa,SACzBA,EAAM,MAAM,cAAgB,OAC5B,SAAS,KAAK,YAAYA,CAAK,EAE/B,MAAMC,EAAU,IAAM,CACpB,MAAMC,EAASF,EAAM,sBAAA,EAAwB,OACzCE,EAAS,GAAGL,EAAaK,CAAM,CACrC,EACAD,EAAA,EAEA,MAAME,EAAW,IAAI,eAAeF,CAAO,EAC3C,OAAAE,EAAS,QAAQH,CAAK,EAEf,IAAM,CACXG,EAAS,WAAA,EACTH,EAAM,OAAA,CACR,CACF,EAAG,CAAA,CAAE,EAEEJ,CACT,EAGaQ,EAAoBR,GAA8BA,EAAYS,EAAAA"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Measures the resolved pixel height of the `h-row` Tailwind utility.
3
+ *
4
+ * `h-row` is a viewport-based `clamp()` (see `tailwind.config.js`), so its value
5
+ * only exists after CSS resolves it — a hard-coded number in JS layout math
6
+ * (react-window `itemSize`, pagination container height) would drift from what
7
+ * the browser actually renders. This hook keeps them in sync by measuring an
8
+ * off-screen probe element and re-measuring whenever the viewport resizes.
9
+ *
10
+ * @param fallback Height (px) used before the first measurement / in SSR.
11
+ * @returns The measured content height of one row, in px.
12
+ */
13
+ export declare const useRowHeight: (fallback?: number) => number;
14
+ /** Row slot height (content + the `<tr>` border) used by virtualization/layout math. */
15
+ export declare const getRowSlotHeight: (rowHeight: number) => number;
@@ -0,0 +1,24 @@
1
+ import { useState as c, useEffect as d } from "react";
2
+ import { ROW_SLOT_BORDER_PX as u } from "./constants.es.js";
3
+ const p = (t = 40) => {
4
+ const [i, r] = c(t);
5
+ return d(() => {
6
+ if (typeof document > "u") return;
7
+ const e = document.createElement("div");
8
+ e.className = "h-row", e.setAttribute("aria-hidden", "true"), e.style.position = "absolute", e.style.top = "-9999px", e.style.left = "-9999px", e.style.width = "0", e.style.visibility = "hidden", e.style.pointerEvents = "none", document.body.appendChild(e);
9
+ const o = () => {
10
+ const s = e.getBoundingClientRect().height;
11
+ s > 0 && r(s);
12
+ };
13
+ o();
14
+ const n = new ResizeObserver(o);
15
+ return n.observe(e), () => {
16
+ n.disconnect(), e.remove();
17
+ };
18
+ }, []), i;
19
+ }, m = (t) => t + u;
20
+ export {
21
+ m as getRowSlotHeight,
22
+ p as useRowHeight
23
+ };
24
+ //# sourceMappingURL=useRowHeight.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRowHeight.es.js","sources":["../../../../src/components/data-display/infinite-table/useRowHeight.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { ROW_SLOT_BORDER_PX } from './constants';\n\n/**\n * Measures the resolved pixel height of the `h-row` Tailwind utility.\n *\n * `h-row` is a viewport-based `clamp()` (see `tailwind.config.js`), so its value\n * only exists after CSS resolves it — a hard-coded number in JS layout math\n * (react-window `itemSize`, pagination container height) would drift from what\n * the browser actually renders. This hook keeps them in sync by measuring an\n * off-screen probe element and re-measuring whenever the viewport resizes.\n *\n * @param fallback Height (px) used before the first measurement / in SSR.\n * @returns The measured content height of one row, in px.\n */\nexport const useRowHeight = (fallback = 40): number => {\n const [rowHeight, setRowHeight] = useState(fallback);\n\n useEffect(() => {\n if (typeof document === 'undefined') return;\n\n const probe = document.createElement('div');\n probe.className = 'h-row';\n probe.setAttribute('aria-hidden', 'true');\n probe.style.position = 'absolute';\n probe.style.top = '-9999px';\n probe.style.left = '-9999px';\n probe.style.width = '0';\n probe.style.visibility = 'hidden';\n probe.style.pointerEvents = 'none';\n document.body.appendChild(probe);\n\n const measure = () => {\n const height = probe.getBoundingClientRect().height;\n if (height > 0) setRowHeight(height);\n };\n measure();\n\n const observer = new ResizeObserver(measure);\n observer.observe(probe);\n\n return () => {\n observer.disconnect();\n probe.remove();\n };\n }, []);\n\n return rowHeight;\n};\n\n/** Row slot height (content + the `<tr>` border) used by virtualization/layout math. */\nexport const getRowSlotHeight = (rowHeight: number): number => rowHeight + ROW_SLOT_BORDER_PX;\n"],"names":["useRowHeight","fallback","rowHeight","setRowHeight","useState","useEffect","probe","measure","height","observer","getRowSlotHeight","ROW_SLOT_BORDER_PX"],"mappings":";;AAgBO,MAAMA,IAAe,CAACC,IAAW,OAAe;AACrD,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAASH,CAAQ;AAEnD,SAAAI,EAAU,MAAM;AACd,QAAI,OAAO,WAAa,IAAa;AAErC,UAAMC,IAAQ,SAAS,cAAc,KAAK;AAC1C,IAAAA,EAAM,YAAY,SAClBA,EAAM,aAAa,eAAe,MAAM,GACxCA,EAAM,MAAM,WAAW,YACvBA,EAAM,MAAM,MAAM,WAClBA,EAAM,MAAM,OAAO,WACnBA,EAAM,MAAM,QAAQ,KACpBA,EAAM,MAAM,aAAa,UACzBA,EAAM,MAAM,gBAAgB,QAC5B,SAAS,KAAK,YAAYA,CAAK;AAE/B,UAAMC,IAAU,MAAM;AACpB,YAAMC,IAASF,EAAM,sBAAA,EAAwB;AAC7C,MAAIE,IAAS,KAAGL,EAAaK,CAAM;AAAA,IACrC;AACA,IAAAD,EAAA;AAEA,UAAME,IAAW,IAAI,eAAeF,CAAO;AAC3C,WAAAE,EAAS,QAAQH,CAAK,GAEf,MAAM;AACX,MAAAG,EAAS,WAAA,GACTH,EAAM,OAAA;AAAA,IACR;AAAA,EACF,GAAG,CAAA,CAAE,GAEEJ;AACT,GAGaQ,IAAmB,CAACR,MAA8BA,IAAYS;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),N=require("../../../_virtual/index.cjs.js"),_=require("react"),L=require("react-router-dom"),O=require("../../icons/CloseIcon.cjs.js"),I=require("../../tooltip/Tooltip.cjs.js"),k={primary:"bg-primary-50 border-primary-100 text-primary-600 dark:bg-primary-900 dark:border-primary-800 dark:text-primary-400",success:"bg-green-50 border-green-200 text-green-700 dark:bg-green-950 dark:border-green-900 dark:text-green-300",warning:"bg-yellow-50 border-yellow-200 text-yellow-700 dark:bg-yellow-950 dark:border-yellow-900 dark:text-yellow-300",error:"bg-red-50 border-red-200 text-red-700 dark:bg-red-950 dark:border-red-900 dark:text-red-300",neutral:"bg-gray-50 border-gray-200 text-gray-700 dark:bg-gray-900 dark:border-gray-700 dark:text-gray-300",red:"bg-red-50 border-red-200 text-red-700 dark:bg-red-950 dark:border-red-900 dark:text-red-300",green:"bg-green-50 border-green-200 text-green-700 dark:bg-green-950 dark:border-green-900 dark:text-green-300",blue:"bg-blue-50 border-blue-200 text-blue-700 dark:bg-blue-950 dark:border-blue-900 dark:text-blue-300",teal:"bg-teal-50 border-teal-200 text-teal-700 dark:bg-teal-950 dark:border-teal-900 dark:text-teal-300",orange:"bg-orange-50 border-orange-200 text-orange-700 dark:bg-orange-950 dark:border-orange-900 dark:text-orange-300",peach:"bg-peach-50 border-peach-200 text-peach-700 dark:bg-peach-950 dark:border-peach-900 dark:text-peach-300",navy:"bg-slate-50 border-slate-200 text-slate-700 dark:bg-slate-900 dark:border-slate-700 dark:text-slate-300",gray:"bg-gray-50 border-gray-200 text-gray-700 dark:bg-gray-900 dark:border-gray-700 dark:text-gray-300",grey:"bg-gray-50 border-gray-200 text-gray-700 dark:bg-gray-900 dark:border-gray-700 dark:text-gray-300",yellow:"bg-yellow-50 border-yellow-200 text-yellow-700 dark:bg-yellow-950 dark:border-yellow-900 dark:text-yellow-300",purple:"bg-purple-50 border-purple-200 text-purple-700 dark:bg-purple-950 dark:border-purple-900 dark:text-purple-300"},C=/^#[0-9a-fA-F]{6}$/,W=/^(?:[a-z][a-z\d+\-.]*:|\/\/)/i,B=(e,r)=>r?"":e?k[e.toLowerCase()]??k.primary:k.primary,F=e=>{const r=e.trim().toLowerCase();return C.test(r)?r:void 0},P=e=>W.test(e),X=e=>{switch(e){case"lg":return"text-[14px] leading-[20px] px-1.5 border rounded-md";case"sm":return"text-[10px] leading-[15px] px-1 border-[0.5px] rounded";default:return"text-[12px] leading-[18px] px-1.5 border rounded-md"}},j=_.forwardRef(({label:e,href:r,color:l,size:v="md",className:R,onClick:s,onMouseDown:n,truncate:i,isHashColor:E=!1,theme:g,icon:$,removable:S=!1,onRemove:m,onUpload:h,acceptsUpload:w=!1,tooltip:A=!1,"aria-label":b,role:x},c)=>{const d=typeof l=="string"&&(E||C.test(l))?F(l):void 0,q=!!d,p={maxWidth:"100%",...d?{backgroundColor:`${d}26`,borderColor:`${d}59`,color:d}:{}},o=!!(s||w||r),z=!!(r&&P(r)),H=a=>{const T=a.target.files?.[0];T&&h&&h(T),a.target.value=""},y=N("inline-flex items-center transition-colors font-medium",B(l,q),X(v),o&&"cursor-pointer hover:opacity-80",R),f=t.jsxs("div",{className:"flex items-center gap-0.5 min-w-0 overflow-hidden",style:{maxWidth:"100%"},children:[$,i?t.jsx("p",{title:e,className:N("overflow-hidden whitespace-nowrap text-ellipsis",o&&"cursor-pointer"),style:{maxWidth:"100%"},children:e.length>i?`${e.slice(0,i)}...`:e}):t.jsx("p",{className:"overflow-hidden whitespace-nowrap text-ellipsis",style:{maxWidth:"100%"},children:e}),w&&t.jsx("input",{type:"file",onChange:H,className:"absolute inset-0 h-full w-full cursor-pointer opacity-0","aria-label":`Upload file for ${e}`}),S&&m&&t.jsx("button",{onClick:m,className:"ml-1 flex-shrink-0","aria-label":`Remove ${e}`,type:"button",children:t.jsx(O.CloseIcon,{size:12,className:"cursor-pointer"})})]}),u=A?t.jsx(I,{title:e,delayShow:!0,children:f}):f;return r?z?t.jsx("a",{ref:c,href:r,className:y,style:p,onMouseDown:n,onClick:s,"aria-label":b||`Tag: ${e}`,role:x,"data-theme":g,children:u}):t.jsx(L.Link,{ref:c,to:r,className:y,style:p,onMouseDown:n,onClick:s,"aria-label":b||`Tag: ${e}`,role:x,"data-theme":g,children:u}):t.jsx("div",{ref:c,className:y,style:p,onMouseDown:n,onClick:s,onKeyDown:o?a=>{(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),a.currentTarget.click())}:void 0,"aria-label":b||`Tag: ${e}`,role:x??(o?"button":void 0),tabIndex:o?0:void 0,"data-theme":g,children:u})});j.displayName="Tag";exports.Tag=j;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),N=require("../../../_virtual/index.cjs.js"),_=require("react"),L=require("react-router-dom"),O=require("../../icons/CloseIcon.cjs.js"),I=require("../../tooltip/Tooltip.cjs.js"),k={primary:"bg-primary-50 border-primary-100 text-primary-600 dark:bg-primary-900 dark:border-primary-800 dark:text-primary-400",success:"bg-green-50 border-green-200 text-green-700 dark:bg-green-950 dark:border-green-900 dark:text-green-300",warning:"bg-yellow-50 border-yellow-200 text-yellow-700 dark:bg-yellow-950 dark:border-yellow-900 dark:text-yellow-300",error:"bg-red-50 border-red-200 text-red-700 dark:bg-red-950 dark:border-red-900 dark:text-red-300",neutral:"bg-gray-50 border-gray-200 text-gray-700 dark:bg-gray-900 dark:border-gray-700 dark:text-gray-300",red:"bg-red-50 border-red-200 text-red-700 dark:bg-red-950 dark:border-red-900 dark:text-red-300",green:"bg-green-50 border-green-200 text-green-700 dark:bg-green-950 dark:border-green-900 dark:text-green-300",blue:"bg-blue-50 border-blue-200 text-blue-700 dark:bg-blue-950 dark:border-blue-900 dark:text-blue-300",teal:"bg-teal-50 border-teal-200 text-teal-700 dark:bg-teal-950 dark:border-teal-900 dark:text-teal-300",orange:"bg-orange-50 border-orange-200 text-orange-700 dark:bg-orange-950 dark:border-orange-900 dark:text-orange-300",peach:"bg-peach-50 border-peach-200 text-peach-700 dark:bg-peach-950 dark:border-peach-900 dark:text-peach-300",navy:"bg-slate-50 border-slate-200 text-slate-700 dark:bg-slate-900 dark:border-slate-700 dark:text-slate-300",gray:"bg-gray-50 border-gray-200 text-gray-700 dark:bg-gray-900 dark:border-gray-700 dark:text-gray-300",grey:"bg-gray-50 border-gray-200 text-gray-700 dark:bg-gray-900 dark:border-gray-700 dark:text-gray-300",yellow:"bg-yellow-50 border-yellow-200 text-yellow-700 dark:bg-yellow-950 dark:border-yellow-900 dark:text-yellow-300",purple:"bg-purple-50 border-purple-200 text-purple-700 dark:bg-purple-950 dark:border-purple-900 dark:text-purple-300"},C=/^#[0-9a-fA-F]{6}$/,W=/^(?:[a-z][a-z\d+\-.]*:|\/\/)/i,B=(e,r)=>r?"":e?k[e.toLowerCase()]??k.primary:k.primary,F=e=>{const r=e.trim().toLowerCase();return C.test(r)?r:void 0},P=e=>W.test(e),X=e=>{switch(e){case"xs":return"text-3xs leading-3 px-1 border-[0.5px] rounded";case"lg":return"text-sm leading-5 px-1.5 border rounded-md";case"sm":return"text-2xs leading-4 px-1 border-[0.5px] rounded";default:return"text-xs leading-4 px-1.5 border rounded-md"}},j=_.forwardRef(({label:e,href:r,color:l,size:v="md",className:R,onClick:s,onMouseDown:n,truncate:i,isHashColor:E=!1,theme:g,icon:$,removable:S=!1,onRemove:m,onUpload:h,acceptsUpload:w=!1,tooltip:A=!1,"aria-label":b,role:x},c)=>{const d=typeof l=="string"&&(E||C.test(l))?F(l):void 0,q=!!d,y={maxWidth:"100%",...d?{backgroundColor:`${d}26`,borderColor:`${d}59`,color:d}:{}},o=!!(s||w||r),z=!!(r&&P(r)),H=a=>{const T=a.target.files?.[0];T&&h&&h(T),a.target.value=""},p=N("inline-flex items-center transition-colors font-medium",B(l,q),X(v),o&&"cursor-pointer hover:opacity-80",R),f=t.jsxs("div",{className:"flex items-center gap-0.5 min-w-0 overflow-hidden",style:{maxWidth:"100%"},children:[$,i?t.jsx("p",{title:e,className:N("overflow-hidden whitespace-nowrap text-ellipsis",o&&"cursor-pointer"),style:{maxWidth:"100%"},children:e.length>i?`${e.slice(0,i)}...`:e}):t.jsx("p",{className:"overflow-hidden whitespace-nowrap text-ellipsis",style:{maxWidth:"100%"},children:e}),w&&t.jsx("input",{type:"file",onChange:H,className:"absolute inset-0 h-full w-full cursor-pointer opacity-0","aria-label":`Upload file for ${e}`}),S&&m&&t.jsx("button",{onClick:m,className:"ml-1 flex-shrink-0","aria-label":`Remove ${e}`,type:"button",children:t.jsx(O.CloseIcon,{size:12,className:"cursor-pointer"})})]}),u=A?t.jsx(I,{title:e,delayShow:!0,children:f}):f;return r?z?t.jsx("a",{ref:c,href:r,className:p,style:y,onMouseDown:n,onClick:s,"aria-label":b||`Tag: ${e}`,role:x,"data-theme":g,children:u}):t.jsx(L.Link,{ref:c,to:r,className:p,style:y,onMouseDown:n,onClick:s,"aria-label":b||`Tag: ${e}`,role:x,"data-theme":g,children:u}):t.jsx("div",{ref:c,className:p,style:y,onMouseDown:n,onClick:s,onKeyDown:o?a=>{(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),a.currentTarget.click())}:void 0,"aria-label":b||`Tag: ${e}`,role:x??(o?"button":void 0),tabIndex:o?0:void 0,"data-theme":g,children:u})});j.displayName="Tag";exports.Tag=j;
2
2
  //# sourceMappingURL=Tag.cjs.js.map