@lax-wp/design-system 0.14.36 → 0.14.37

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 (20) hide show
  1. package/dist/components/data-display/infinite-table/CellContextMenuPortal.cjs.js +1 -1
  2. package/dist/components/data-display/infinite-table/CellContextMenuPortal.cjs.js.map +1 -1
  3. package/dist/components/data-display/infinite-table/CellContextMenuPortal.d.ts +16 -1
  4. package/dist/components/data-display/infinite-table/CellContextMenuPortal.es.js +176 -124
  5. package/dist/components/data-display/infinite-table/CellContextMenuPortal.es.js.map +1 -1
  6. package/dist/components/data-display/infinite-table/body/cell/DataCell.cjs.js +1 -1
  7. package/dist/components/data-display/infinite-table/body/cell/DataCell.cjs.js.map +1 -1
  8. package/dist/components/data-display/infinite-table/body/cell/DataCell.es.js +128 -129
  9. package/dist/components/data-display/infinite-table/body/cell/DataCell.es.js.map +1 -1
  10. package/dist/components/data-display/infinite-table/copy-text.cjs.js +3 -0
  11. package/dist/components/data-display/infinite-table/copy-text.cjs.js.map +1 -0
  12. package/dist/components/data-display/infinite-table/copy-text.d.ts +13 -0
  13. package/dist/components/data-display/infinite-table/copy-text.es.js +19 -0
  14. package/dist/components/data-display/infinite-table/copy-text.es.js.map +1 -0
  15. package/dist/components/data-display/infinite-table/index.cjs.js +1 -1
  16. package/dist/components/data-display/infinite-table/index.cjs.js.map +1 -1
  17. package/dist/components/data-display/infinite-table/index.es.js +260 -255
  18. package/dist/components/data-display/infinite-table/index.es.js.map +1 -1
  19. package/dist/components/data-display/infinite-table/types.d.ts +5 -1
  20. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DataCell.es.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/DataCell.tsx"],"sourcesContent":["import { useTheme } from '../../../../../hooks/useTheme';\nimport { formatCurrency } from '../../../../../utils/formatters';\nimport { formatDate } from '../../../../../utils/formatters';\nimport { getTableRowBgClassNamesByStatus } from '../../../../../constants/table';\nimport type { ICell, ICellContextMenuTarget, IPendingEdit, ValidateAndSaveResult } from '../../types';\nimport { useTableConfig } from '../../../../../providers/design-system-provider/hooks';\nimport Tooltip from '../../../../tooltip/Tooltip';\nimport { Typography } from '../../../../data-display/typography/Typography';\nimport { KeyboardArrowDownIcon, KeyboardArrowRightFilledIcon, LinkIcon, LoadingSpinnerIcon } from '../../../../icon';\nimport { OpenInNewRounded } from '@mui/icons-material';\nimport cn from 'classnames';\nimport React, { useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport { TableContext } from '../../context';\nimport { InlineEditField } from './InlineEditField';\nimport { CELL_DEFAULT_RIGHT_OFFSET, CELL_INDENT_PER_LEVEL_PX, CELL_STICKY_SHADOW_DARK, CELL_STICKY_SHADOW_LIGHT } from '../../constants';\n\ntype CellProps = {\n cell: ICell;\n id: string | number;\n nextWidthSum: number;\n isLastCell: boolean;\n rowHovering: string | number | null;\n index: number;\n isFirstStickyCell: boolean;\n handleCellClick: (e?: React.MouseEvent) => void | null;\n currentData: { is_row_modified?: boolean; is_deleted?: boolean; is_added?: boolean };\n highlightSubstring?: (value: string) => JSX.Element;\n is_read: boolean;\n is_modified: boolean;\n is_row_modified: boolean;\n is_deleted: boolean;\n is_added: boolean;\n level: number;\n inlineEditing: string | null;\n isInlineEditing?: boolean;\n setRowHovering: (id: string | number | null) => void;\n handleCellValueChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n cellRef: React.RefObject<HTMLDivElement>;\n handleUpdateCellData: (directValue?: string | boolean | null, meta?: { currency_code?: string | null; reference?: unknown | null;[key: string]: unknown | null } | null) => void;\n registerValidation?: (validateFn: () => ValidateAndSaveResult) => void;\n loadingExpand: boolean;\n toggleRowExpand: () => void;\n isDraggingOver?: boolean;\n isLoading?: boolean;\n is_incomplete?: boolean;\n pendingEdit?: IPendingEdit;\n hasPendingEdit?: boolean;\n pendingValidationError?: string | null;\n};\n\nlet interval: ReturnType<typeof setInterval> | undefined;\n\nconst formatDurationFallback = (duration: unknown): string => {\n const durationInMs = Number(duration);\n\n if (Number.isNaN(durationInMs) || duration === null || duration === undefined) {\n return '0ms';\n }\n\n if (durationInMs >= 86400000) {\n const days = Math.floor(durationInMs / 86400000);\n const hours = Math.floor((durationInMs % 86400000) / 3600000);\n const minutes = Math.floor((durationInMs % 3600000) / 60000);\n const seconds = Math.floor((durationInMs % 60000) / 1000);\n return `${days}d ${hours}h ${minutes}m ${seconds}s`;\n }\n\n if (durationInMs >= 3600000) {\n const hours = Math.floor(durationInMs / 3600000);\n const minutes = Math.floor((durationInMs % 3600000) / 60000);\n const seconds = Math.floor((durationInMs % 60000) / 1000);\n return `${hours}h ${minutes}m ${seconds}s`;\n }\n\n if (durationInMs >= 60000) {\n const minutes = Math.floor(durationInMs / 60000);\n const seconds = Math.floor((durationInMs % 60000) / 1000);\n return `${minutes}m ${seconds}s`;\n }\n\n if (durationInMs >= 1000) {\n return `${(durationInMs / 1000).toFixed(2)}s`;\n }\n\n return `${durationInMs}ms`;\n};\n\n/**\n * Plain-text rendering of a cell for the clipboard: prefer the formatted value shown in\n * the cell, fall back to the raw value, and finally to the rendered text (chips, custom\n * cell renderers) so every cell yields something copyable.\n */\nconst getCellText = (displayValue: unknown, rawValue: unknown, cellElement: HTMLElement | null): string => {\n const isPrimitive = (value: unknown) => ['string', 'number', 'boolean'].includes(typeof value);\n const candidate = isPrimitive(displayValue) ? displayValue : rawValue;\n\n if (isPrimitive(candidate)) return String(candidate);\n\n // The value span only — the cell also holds overlays (validation error, spinner).\n const contentElement = cellElement?.querySelector<HTMLElement>('[data-cell-content]') ?? cellElement;\n\n return contentElement?.innerText?.trim() || '';\n};\n\nconst CellWrapper = ({ children, withLink, linkTo, rowData, disableRowClick }: { children: React.ReactNode; withLink?: boolean; linkTo?: (id: string, _rowData?: Record<string, unknown>) => string; rowData?: Record<string, unknown>; disableRowClick?: boolean }) => {\n return withLink && !disableRowClick ? <Link to={linkTo?.(rowData?.id as string, rowData) || ''}>{children}</Link> : children;\n};\n\nconst DataCellInner: React.FC<CellProps> = ({\n cell, id, nextWidthSum, isLastCell, rowHovering, index, isFirstStickyCell, handleCellClick, currentData, highlightSubstring,\n is_read, is_modified, is_row_modified, is_deleted, is_added, level, inlineEditing, isInlineEditing, setRowHovering,\n handleCellValueChange, cellRef, handleUpdateCellData, registerValidation, loadingExpand, toggleRowExpand,\n isDraggingOver, isLoading, is_incomplete, pendingEdit, hasPendingEdit, pendingValidationError,\n}) => {\n const {\n cascadingTableConfig, originalsOnly, maxLevel, showNewItem, expandedRows, rowLinkConfig, multiSelectConfig,\n cellEditing, cellEditingValue, allowInlineEdit, fieldOperationLoading, pendingEdits: contextPendingEdits,\n selectedRowId, cellContextMenuConfig, openCellContextMenu,\n } = useContext(TableContext);\n\n const isSelectedRow =\n selectedRowId !== null && selectedRowId !== undefined && String(selectedRowId) === String(id);\n\n const tableConfig = useTableConfig();\n\n const rowCellMeta = cell?.column?.key ? (cell?.row?.original?.__cellMetadata as Record<string, Record<string, unknown>> | undefined)?.[cell.column.key] : undefined;\n const isLocked = rowCellMeta?.is_locked ?? cell?.column?.is_locked;\n const cellValidationError = (cell?.column?.key ? contextPendingEdits?.[id]?.[cell.column.key]?.validationError : null) || pendingValidationError || null;\n const isActuallyInlineEditing = inlineEditing === cell.column.key && cell?.column?.canEdit && !isLocked && !cell?.column?.is_disabled;\n const isFieldOperationLoading = fieldOperationLoading === `${id}-${cell?.column?.id}`;\n const { theme } = useTheme();\n const isDark = theme === 'dark';\n const onMouseEnter = useCallback(() => setRowHovering(id), [setRowHovering, id]);\n const onMouseLeave = useCallback(() => setRowHovering(null), [setRowHovering]);\n\n const getNodeExecutionDuration = tableConfig?.formatDuration;\n const [cellValue, setCellValue] = useState(\n cell?.column?.dataType === 'duration' && cell?.value\n ? getNodeExecutionDuration\n ? getNodeExecutionDuration(cell.value)\n : formatDurationFallback(cell.value)\n : cell.value,\n );\n const [tooltipText, setTooltipText] = useState<string | null>(null);\n const [isTruncated, setIsTruncated] = useState(false);\n const [urlTooltipOpen, setUrlTooltipOpen] = useState(false);\n const [truncateTooltipOpen, setTruncateTooltipOpen] = useState(false);\n const textRef = useRef<HTMLSpanElement>(null);\n const urlTooltipTimer = useRef<ReturnType<typeof setTimeout>>();\n const truncateTooltipTimer = useRef<ReturnType<typeof setTimeout>>();\n const { selectedColumnIds = [] } = multiSelectConfig || {};\n const shouldHighlight = !Object.prototype.hasOwnProperty.call(cell?.column?.meta ?? {}, 'shouldHighlight') || cell?.column?.meta?.shouldHighlight;\n\n const checkTruncation = useCallback(() => {\n if (textRef.current) {\n setIsTruncated(textRef.current.scrollWidth > textRef.current.clientWidth);\n }\n }, []);\n\n const handleUrlTooltipChange = useCallback((open: boolean) => {\n if (urlTooltipTimer.current) {\n clearTimeout(urlTooltipTimer.current);\n }\n\n if (open) {\n setUrlTooltipOpen(true);\n } else {\n urlTooltipTimer.current = setTimeout(() => setUrlTooltipOpen(false), 200);\n }\n }, []);\n\n const handleTruncateTooltipChange = useCallback((open: boolean) => {\n if (truncateTooltipTimer.current) {\n clearTimeout(truncateTooltipTimer.current);\n }\n\n if (open) {\n setTruncateTooltipOpen(true);\n } else {\n truncateTooltipTimer.current = setTimeout(() => setTruncateTooltipOpen(false), 200);\n }\n }, []);\n\n const bgColor = cn({\n 'bg-amber-100 dark:bg-amber-900/30': hasPendingEdit,\n 'bg-neutral-100 dark:bg-black-600': rowHovering === id && !isInlineEditing && !hasPendingEdit && !(is_deleted || currentData?.is_deleted) && !(is_added || currentData?.is_added),\n 'bg-error-200 dark:bg-error-900': rowHovering === id && !isInlineEditing && !hasPendingEdit && (is_deleted || currentData?.is_deleted),\n 'bg-success-100 dark:bg-success-800': rowHovering === id && !isInlineEditing && !hasPendingEdit && (is_added || currentData?.is_added),\n 'bg-warning-100 dark:bg-warning-950': rowHovering === id && !isInlineEditing && !hasPendingEdit && (is_incomplete || is_modified || is_row_modified || currentData?.is_row_modified),\n // 'bg-primary-50 dark:bg-black-700': !is_incomplete && !is_read && showNewItem && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-warning-50 dark:bg-orange-900': (is_incomplete || is_modified || is_row_modified || currentData?.is_row_modified) && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-error-100 dark:bg-error-975': (is_deleted || currentData?.is_deleted) && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-success-50 dark:bg-success-900': (is_added || currentData?.is_added) && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-primary-50 dark:bg-primary-900': (isDraggingOver || isInlineEditing) && !hasPendingEdit,\n 'bg-primary-50 dark:bg-primary-800': selectedColumnIds?.includes(cell.column.id) && !isInlineEditing && !hasPendingEdit,\n 'bg-primary-50 dark:bg-primary-700': isSelectedRow && rowHovering !== id && !isInlineEditing && !hasPendingEdit && !isLoading,\n [getTableRowBgClassNamesByStatus[cell?.row?.original?.__rowBgStatus as string]]: cell?.row?.original?.__rowBgStatus && !isInlineEditing && !hasPendingEdit,\n });\n\n const onClick = (e: React.MouseEvent) => { if (cell.column?.disableRowClick) return; handleCellClick(e); };\n\n const handleContextMenu = useCallback((event: React.MouseEvent<HTMLTableCellElement>) => {\n // Keep the native menu when the table opted out, or while inline editing (cut/paste/undo).\n if (cellContextMenuConfig?.isEnabled === false || !openCellContextMenu || isActuallyInlineEditing) return;\n\n const target: ICellContextMenuTarget = {\n rowId: id,\n rowData: (cell?.row?.original ?? {}) as Record<string, unknown>,\n columnKey: cell?.column?.key ?? '',\n column: cell.column,\n value: cell?.value,\n text: getCellText(cellValue, cell?.value, event.currentTarget),\n cell,\n };\n\n if (cellContextMenuConfig?.isDisabledForCell?.(target)) return;\n\n event.preventDefault();\n event.stopPropagation();\n openCellContextMenu({ x: event.clientX, y: event.clientY, target });\n }, [cellContextMenuConfig, openCellContextMenu, isActuallyInlineEditing, id, cell, cellValue]);\n\n useEffect(() => {\n const isRunning = cell?.row?.original?.status === 'running';\n if (isRunning && cell.column?.dataType === 'duration') {\n interval = setInterval(() => {\n const startedTime = new Date(formatDate((cell?.row?.original?.created_at || cell?.row?.original?.executed_on) as string | undefined, { withTime: true, format: 'yyyy-MM-dd HH:mm:ss' }) as unknown as Date);\n const timeDiff = Math.abs(new Date().getTime() - new Date(startedTime).getTime());\n setCellValue(getNodeExecutionDuration ? getNodeExecutionDuration(timeDiff) : formatDurationFallback(timeDiff));\n }, 500);\n }\n return () => { if (interval) clearInterval(interval); };\n }, [cellValue, cell.value, cell?.row?.original?.created_at, cell?.row?.original?.executed_on, cell?.row?.original?.status, cell.column?.dataType, getNodeExecutionDuration]);\n\n useEffect(() => {\n if (cell?.column?.tooltipCellKey || cell?.column?.type?.toLowerCase() === 'url') {\n if (cell?.column?.type?.toLowerCase() === 'url') setTooltipText(cell?.value as string | null);\n else setTooltipText(cell?.row?.original?.[String(cell?.column?.tooltipCellKey)] as string | null);\n }\n }, [cell?.column?.tooltipCellKey, cell?.row?.original, cell?.column?.type, cell?.value]);\n\n useEffect(() => {\n if (cell?.column?.type?.toLowerCase() === 'currency') {\n if (pendingEdit?.value !== undefined) {\n const rawData = cell?.row?.original?.__rawData as Record<string, Record<string, unknown>> | undefined;\n const headerKey = cell?.column?.Header as unknown as string;\n const currencyCode = pendingEdit?.meta?.currency_code || rawData?.[headerKey]?.currency_code || 'USD';\n setCellValue(formatCurrency(pendingEdit.value, currencyCode as string));\n } else {\n const rawData = cell?.row?.original?.__rawData as Record<string, Record<string, unknown>> | undefined;\n const headerKey = cell?.column?.Header as unknown as string;\n setCellValue(formatCurrency(cell?.value, (rawData?.[headerKey]?.currency_code as string) || 'USD'));\n }\n }\n }, [cell?.value, cell?.column?.type, cell?.column?.Header, cell?.row?.original?.__rawData, pendingEdit?.value, pendingEdit?.meta?.currency_code]);\n\n useEffect(() => {\n if (cell?.column?.type?.toLowerCase() === 'percentage') {\n if (pendingEdit?.value !== undefined) setCellValue(pendingEdit.value?.toString() + '%' || '');\n else setCellValue(cell?.value?.toString() + '%' || '');\n }\n }, [cell?.value, cell?.column?.type, pendingEdit?.value]);\n\n useEffect(() => {\n const columnType = cell?.column?.type?.toLowerCase() || '';\n if (['date', 'datetime'].includes(columnType)) {\n if (pendingEdit?.value !== undefined) {\n const hasTime = columnType === 'datetime';\n const formattedValue = formatDate(pendingEdit.value as string, { withTime: hasTime, skipTimezone: true });\n setCellValue(formattedValue || pendingEdit.value);\n } else setCellValue(cell.value);\n }\n }, [cell?.value, cell?.column?.type, pendingEdit?.value]);\n\n useEffect(() => {\n const columnType = cell?.column?.type?.toLowerCase() || '';\n if (['currency', 'percentage', 'duration', 'boolean', 'date', 'datetime'].includes(columnType)) return;\n if (pendingEdit?.value !== undefined) setCellValue(pendingEdit.value);\n else if (cell?.column?.dataType !== 'duration') setCellValue(cell.value);\n }, [cell?.value, cell?.column?.type, cell?.column?.dataType, pendingEdit?.value]);\n\n useEffect(() => {\n if (cell?.column?.type?.toLowerCase() === 'boolean' && allowInlineEdit) {\n const rawValue = pendingEdit?.value !== undefined ? pendingEdit.value : cell?.value;\n const booleanValue = rawValue === true || rawValue === 'true' || rawValue === 'True' || rawValue === 'Yes' || rawValue === 1;\n setCellValue(booleanValue ? 'Yes' : 'No');\n }\n }, [cell?.value, cell?.column?.type, allowInlineEdit, pendingEdit?.value]);\n\n useEffect(() => {\n return () => {\n if (urlTooltipTimer.current) {\n clearTimeout(urlTooltipTimer.current);\n }\n if (truncateTooltipTimer.current) {\n clearTimeout(truncateTooltipTimer.current);\n }\n };\n }, []);\n\n const isUiElementCell = React.isValidElement(cellValue);\n\n return (\n <td\n key={index} id={cell.value as string | undefined} data-column-key={cell?.column?.key} {...cell.getCellProps()}\n onClick={rowLinkConfig?.isEnabled ? undefined : onClick}\n className={cn('h-row', {\n 'sticky left-0': cell?.column?.sticky,\n relative: !cell?.column?.sticky,\n 'w-full': isLastCell,\n 'overflow-visible': inlineEditing === cell.column.key,\n /** Chips/badges: avoid vertical clip from overflow-x-hidden + truncate (see isUiElementCell branch below) */\n 'overflow-x-hidden overflow-y-visible': inlineEditing !== cell.column.key && isUiElementCell,\n 'overflow-hidden': inlineEditing !== cell.column.key && !isUiElementCell,\n },\n cellValidationError && !isActuallyInlineEditing ? 'outline outline-2 outline-error-500 -outline-offset-2 z-[5]' : '',\n `${bgColor ? bgColor : 'bg-white dark:bg-black-800'}`,\n )}\n style={{ minWidth: `${cell.column.width}px`, maxWidth: `${cell.column.width}px`, right: cell?.column?.sticky ? `${nextWidthSum}px` : CELL_DEFAULT_RIGHT_OFFSET, paddingLeft: level > 0 && index === 0 ? `${level * CELL_INDENT_PER_LEVEL_PX}px` : undefined }}\n onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}\n onContextMenu={handleContextMenu}\n >\n <CellWrapper withLink={rowLinkConfig?.isEnabled} linkTo={rowLinkConfig?.linkTo || undefined} rowData={cell?.row?.original} disableRowClick={cell?.column?.disableRowClick}>\n {(Array.isArray(cellEditing) ? cellEditing.includes(`${id}-${cell?.column?.id}`) : cellEditing === `${id}-${cell?.column?.id}`) ? (\n <div className='h-row top-0 font-medium font-inter w-full absolute flex items-center px-4'>\n <span className='text-neutral-400 dark:text-black-400 truncate'>\n {(() => {\n const currentCellId = `${id}-${cell?.column?.id}`;\n const editValue = typeof cellEditingValue === 'object' ? cellEditingValue?.[currentCellId] : cellEditingValue;\n const columnType = cell?.column?.type?.toLowerCase();\n\n if (columnType === 'boolean') {\n return (editValue as unknown) === true || editValue === 'true' || editValue === 'True' ? 'Yes' : 'No';\n }\n\n if ((columnType === 'date' || columnType === 'datetime') && editValue) {\n const hasTime = columnType === 'datetime';\n return formatDate(editValue as string, { withTime: hasTime, skipTimezone: true }) || String(editValue);\n }\n\n return editValue !== undefined && editValue !== null ? String(editValue) : (cellValue as React.ReactNode);\n })()}\n </span>\n <div className='ml-2 flex items-center gap-1.5'><LoadingSpinnerIcon className='spinner text-neutral-600 dark:text-white' size={12} /></div>\n </div>\n ) : inlineEditing === cell.column.key && cell?.column?.canEdit && !isLocked && !cell?.column?.is_disabled ? (\n <div className='h-row w-full absolute top-0 left-0 flex items-center' style={{ marginLeft: level > 0 && index === 0 ? `-${level * CELL_INDENT_PER_LEVEL_PX}px` : undefined, width: level > 0 && index === 0 ? `calc(100% + ${level * CELL_INDENT_PER_LEVEL_PX}px)` : '100%' }}>\n <InlineEditField cell={cell} id={id} inlineEditing={inlineEditing} cellRef={cellRef} handleCellValueChange={handleCellValueChange} handleUpdateCellData={handleUpdateCellData} registerValidation={registerValidation} />\n </div>\n ) : (\n <>\n {level > 0 && index === 0 && <div className='h-row border-l border-neutral-300 dark:border-black-600 ml-2' />}\n <div className='min-h-6'>\n <Tooltip\n title={tooltipText && cell?.column?.type?.toLowerCase() !== 'url' ? tooltipText : undefined}\n hideTooltip={!tooltipText || cell?.column?.type?.toLowerCase() === 'url'}\n delayShow\n placement='top'\n >\n <div className={cn(`h-row top-0 font-medium font-inter overflow-index-auto whitespace-nowrap text-ellipsis dark:text-black-200 w-full absolute flex items-center ${bgColor ? bgColor : 'bg-white dark:bg-black-800'}`, isUiElementCell ? 'overflow-x-hidden overflow-y-visible' : 'overflow-x-hidden', { 'border border-b-0 border-t-0 border-primary-600 dark:border-blue-800': selectedColumnIds?.includes(cell.column.id) })}\n style={cell?.column?.sticky && isFirstStickyCell ? { boxShadow: isDark ? CELL_STICKY_SHADOW_DARK : CELL_STICKY_SHADOW_LIGHT } : {}}>\n {cascadingTableConfig?.isCascading && !originalsOnly && index === 0 && (\n <div className={cn('w-[22px] h-row flex items-center px-4', `${bgColor ? bgColor : 'bg-white dark:bg-black-800'}`)} id='cascading'>\n {maxLevel! > level && (cell?.row?.original?.__has_children || cascadingTableConfig?.showAllDropdown) && (\n <div>{loadingExpand ? <LoadingSpinnerIcon className='text-neutral-600 dark:text-white' size={8} /> : <div>{expandedRows?.[id]?.isOpen ? <KeyboardArrowDownIcon size={20} className='text-neutral-400 dark:text-neutral-400' onClick={(e) => { toggleRowExpand(); e.stopPropagation(); }} /> : <KeyboardArrowRightFilledIcon size={20} className='text-neutral-400 dark:text-neutral-400' onClick={(e) => { toggleRowExpand(); e.stopPropagation(); }} />}</div>}</div>\n )}\n </div>\n )}\n\n {cell?.column?.type?.toLowerCase() === 'url' && tooltipText ? (\n <Tooltip\n title={(\n <div onMouseEnter={() => handleUrlTooltipChange(true)} onMouseLeave={() => handleUrlTooltipChange(false)}>\n <a href={tooltipText} target='_blank' rel='noopener noreferrer' onClick={(e) => e.stopPropagation()}>\n <div className='flex gap-1 items-center w-full'>\n <div className='w-4 h-4'>\n <LinkIcon height={16} width={16} />\n </div>\n <Typography variant='medium' size='small' className='truncate' appearance='custom'>{tooltipText}</Typography>\n <OpenInNewRounded sx={{ height: '16px', width: '16px', color: '#016DCF' }} />\n </div>\n </a>\n </div>\n )}\n placement='top'\n open={urlTooltipOpen}\n onOpenChange={handleUrlTooltipChange}\n className='block w-full min-w-0 overflow-hidden'\n >\n <div className='w-full h-row flex items-center px-4 min-w-0 overflow-hidden text-primary-400'>\n <span ref={textRef} data-cell-content onMouseEnter={checkTruncation} className='truncate w-full'>\n {highlightSubstring && shouldHighlight && !React.isValidElement(cellValue) && typeof cellValue !== 'object'\n ? highlightSubstring(cellValue as string)\n : cellValue as React.ReactNode}\n </span>\n </div>\n </Tooltip>\n ) : (\n <Tooltip\n title={\n isTruncated && cellValue && !isUiElementCell ? (\n <div\n onMouseEnter={() => handleTruncateTooltipChange(true)}\n onMouseLeave={() => handleTruncateTooltipChange(false)}\n className='max-h-96 overflow-y-auto whitespace-pre-wrap break-words no-scroll'\n >\n {String(cellValue)}\n </div>\n ) : undefined\n }\n placement='top'\n delayShow\n hideTooltip={!!tooltipText}\n open={isTruncated && !tooltipText && !isUiElementCell ? truncateTooltipOpen : undefined}\n onOpenChange={isTruncated && !tooltipText && !isUiElementCell ? handleTruncateTooltipChange : undefined}\n className={cn('block w-full min-w-0', isUiElementCell ? 'overflow-x-hidden overflow-y-visible' : 'overflow-hidden')}\n >\n <div className={cn('w-full h-row flex items-center px-4 min-w-0', isUiElementCell ? 'overflow-x-hidden overflow-y-visible' : 'overflow-hidden')}>\n <span\n ref={isUiElementCell ? undefined : textRef}\n data-cell-content\n onMouseEnter={isUiElementCell ? undefined : checkTruncation}\n className={cn(isUiElementCell ? 'flex min-w-0 max-w-full items-center justify-start gap-1' : 'truncate w-full')}\n >\n {highlightSubstring && shouldHighlight && !React.isValidElement(cellValue) && typeof cellValue !== 'object'\n ? highlightSubstring(cellValue as string)\n : React.isValidElement(cellValue)\n ? (typeof (cellValue as React.ReactElement<Record<string, unknown>>).type === 'string'\n ? cellValue\n : React.cloneElement(cellValue as React.ReactElement<Record<string, unknown>>, {\n ...((cellValue as React.ReactElement<Record<string, unknown>>).props as Record<string, unknown>),\n containerWidth: cell.column.width,\n }))\n : cellValue as React.ReactNode}\n </span>\n </div>\n </Tooltip>\n )}\n </div>\n </Tooltip>\n </div>\n </>\n )}\n </CellWrapper>\n {cellValidationError && !isActuallyInlineEditing && (\n <div className='absolute bottom-0 left-0 right-0 h-row flex items-end pointer-events-none z-[5]'>\n <div className='w-full bg-error-50 dark:bg-error-975 px-1.5 py-0.5 truncate'><span className='text-error-600 text-2xs font-medium leading-none'>{cellValidationError}</span></div>\n </div>\n )}\n {isFieldOperationLoading && !(inlineEditing === cell.column.key && cell?.column?.canEdit && !isLocked && !cell?.column?.is_disabled) && (\n <div className='absolute top-0 right-0 bg-white dark:bg-black-800 rounded-full w-5 h-5 flex items-center justify-center border border-primary-300 dark:border-primary-600 shadow-sm z-10'>\n <LoadingSpinnerIcon className='text-primary-600 dark:text-white' size={8} />\n </div>\n )}\n </td>\n );\n};\n\nexport const DataCell = React.memo(DataCellInner);\n"],"names":["interval","formatDurationFallback","duration","durationInMs","days","hours","minutes","seconds","getCellText","displayValue","rawValue","cellElement","isPrimitive","value","candidate","CellWrapper","children","withLink","linkTo","rowData","disableRowClick","jsx","Link","DataCellInner","cell","id","nextWidthSum","isLastCell","rowHovering","index","isFirstStickyCell","handleCellClick","currentData","highlightSubstring","is_read","is_modified","is_row_modified","is_deleted","is_added","level","inlineEditing","isInlineEditing","setRowHovering","handleCellValueChange","cellRef","handleUpdateCellData","registerValidation","loadingExpand","toggleRowExpand","isDraggingOver","isLoading","is_incomplete","pendingEdit","hasPendingEdit","pendingValidationError","cascadingTableConfig","originalsOnly","maxLevel","showNewItem","expandedRows","rowLinkConfig","multiSelectConfig","cellEditing","cellEditingValue","allowInlineEdit","fieldOperationLoading","contextPendingEdits","selectedRowId","cellContextMenuConfig","openCellContextMenu","useContext","TableContext","isSelectedRow","tableConfig","useTableConfig","isLocked","cellValidationError","isActuallyInlineEditing","isFieldOperationLoading","theme","useTheme","isDark","onMouseEnter","useCallback","onMouseLeave","getNodeExecutionDuration","cellValue","setCellValue","useState","tooltipText","setTooltipText","isTruncated","setIsTruncated","urlTooltipOpen","setUrlTooltipOpen","truncateTooltipOpen","setTruncateTooltipOpen","textRef","useRef","urlTooltipTimer","truncateTooltipTimer","selectedColumnIds","shouldHighlight","checkTruncation","handleUrlTooltipChange","open","handleTruncateTooltipChange","bgColor","cn","getTableRowBgClassNamesByStatus","onClick","e","handleContextMenu","event","target","useEffect","startedTime","formatDate","timeDiff","rawData","headerKey","currencyCode","formatCurrency","columnType","hasTime","formattedValue","isUiElementCell","React","jsxs","CELL_DEFAULT_RIGHT_OFFSET","CELL_INDENT_PER_LEVEL_PX","currentCellId","editValue","LoadingSpinnerIcon","InlineEditField","Fragment","Tooltip","CELL_STICKY_SHADOW_DARK","CELL_STICKY_SHADOW_LIGHT","KeyboardArrowDownIcon","KeyboardArrowRightFilledIcon","LinkIcon","Typography","OpenInNewRounded","DataCell"],"mappings":"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"}
1
+ {"version":3,"file":"DataCell.es.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/DataCell.tsx"],"sourcesContent":["import { useTheme } from '../../../../../hooks/useTheme';\nimport { formatCurrency } from '../../../../../utils/formatters';\nimport { formatDate } from '../../../../../utils/formatters';\nimport { getTableRowBgClassNamesByStatus } from '../../../../../constants/table';\nimport type { ICell, ICellContextMenuTarget, IPendingEdit, ValidateAndSaveResult } from '../../types';\nimport { useTableConfig } from '../../../../../providers/design-system-provider/hooks';\nimport Tooltip from '../../../../tooltip/Tooltip';\nimport { Typography } from '../../../../data-display/typography/Typography';\nimport { KeyboardArrowDownIcon, KeyboardArrowRightFilledIcon, LinkIcon, LoadingSpinnerIcon } from '../../../../icon';\nimport { OpenInNewRounded } from '@mui/icons-material';\nimport cn from 'classnames';\nimport React, { useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport { TableContext } from '../../context';\nimport { getCellText, getRowText } from '../../copy-text';\nimport { InlineEditField } from './InlineEditField';\nimport { CELL_DEFAULT_RIGHT_OFFSET, CELL_INDENT_PER_LEVEL_PX, CELL_STICKY_SHADOW_DARK, CELL_STICKY_SHADOW_LIGHT } from '../../constants';\n\ntype CellProps = {\n cell: ICell;\n id: string | number;\n nextWidthSum: number;\n isLastCell: boolean;\n rowHovering: string | number | null;\n index: number;\n isFirstStickyCell: boolean;\n handleCellClick: (e?: React.MouseEvent) => void | null;\n currentData: { is_row_modified?: boolean; is_deleted?: boolean; is_added?: boolean };\n highlightSubstring?: (value: string) => JSX.Element;\n is_read: boolean;\n is_modified: boolean;\n is_row_modified: boolean;\n is_deleted: boolean;\n is_added: boolean;\n level: number;\n inlineEditing: string | null;\n isInlineEditing?: boolean;\n setRowHovering: (id: string | number | null) => void;\n handleCellValueChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n cellRef: React.RefObject<HTMLDivElement>;\n handleUpdateCellData: (directValue?: string | boolean | null, meta?: { currency_code?: string | null; reference?: unknown | null;[key: string]: unknown | null } | null) => void;\n registerValidation?: (validateFn: () => ValidateAndSaveResult) => void;\n loadingExpand: boolean;\n toggleRowExpand: () => void;\n isDraggingOver?: boolean;\n isLoading?: boolean;\n is_incomplete?: boolean;\n pendingEdit?: IPendingEdit;\n hasPendingEdit?: boolean;\n pendingValidationError?: string | null;\n};\n\nlet interval: ReturnType<typeof setInterval> | undefined;\n\nconst formatDurationFallback = (duration: unknown): string => {\n const durationInMs = Number(duration);\n\n if (Number.isNaN(durationInMs) || duration === null || duration === undefined) {\n return '0ms';\n }\n\n if (durationInMs >= 86400000) {\n const days = Math.floor(durationInMs / 86400000);\n const hours = Math.floor((durationInMs % 86400000) / 3600000);\n const minutes = Math.floor((durationInMs % 3600000) / 60000);\n const seconds = Math.floor((durationInMs % 60000) / 1000);\n return `${days}d ${hours}h ${minutes}m ${seconds}s`;\n }\n\n if (durationInMs >= 3600000) {\n const hours = Math.floor(durationInMs / 3600000);\n const minutes = Math.floor((durationInMs % 3600000) / 60000);\n const seconds = Math.floor((durationInMs % 60000) / 1000);\n return `${hours}h ${minutes}m ${seconds}s`;\n }\n\n if (durationInMs >= 60000) {\n const minutes = Math.floor(durationInMs / 60000);\n const seconds = Math.floor((durationInMs % 60000) / 1000);\n return `${minutes}m ${seconds}s`;\n }\n\n if (durationInMs >= 1000) {\n return `${(durationInMs / 1000).toFixed(2)}s`;\n }\n\n return `${durationInMs}ms`;\n};\n\nconst CellWrapper = ({ children, withLink, linkTo, rowData, disableRowClick }: { children: React.ReactNode; withLink?: boolean; linkTo?: (id: string, _rowData?: Record<string, unknown>) => string; rowData?: Record<string, unknown>; disableRowClick?: boolean }) => {\n return withLink && !disableRowClick ? <Link to={linkTo?.(rowData?.id as string, rowData) || ''}>{children}</Link> : children;\n};\n\nconst DataCellInner: React.FC<CellProps> = ({\n cell, id, nextWidthSum, isLastCell, rowHovering, index, isFirstStickyCell, handleCellClick, currentData, highlightSubstring,\n is_read, is_modified, is_row_modified, is_deleted, is_added, level, inlineEditing, isInlineEditing, setRowHovering,\n handleCellValueChange, cellRef, handleUpdateCellData, registerValidation, loadingExpand, toggleRowExpand,\n isDraggingOver, isLoading, is_incomplete, pendingEdit, hasPendingEdit, pendingValidationError,\n}) => {\n const {\n cascadingTableConfig, originalsOnly, maxLevel, showNewItem, expandedRows, rowLinkConfig, multiSelectConfig,\n cellEditing, cellEditingValue, allowInlineEdit, fieldOperationLoading, pendingEdits: contextPendingEdits,\n selectedRowId, cellContextMenuConfig, openCellContextMenu,\n } = useContext(TableContext);\n\n const isSelectedRow =\n selectedRowId !== null && selectedRowId !== undefined && String(selectedRowId) === String(id);\n\n const tableConfig = useTableConfig();\n\n const rowCellMeta = cell?.column?.key ? (cell?.row?.original?.__cellMetadata as Record<string, Record<string, unknown>> | undefined)?.[cell.column.key] : undefined;\n const isLocked = rowCellMeta?.is_locked ?? cell?.column?.is_locked;\n const cellValidationError = (cell?.column?.key ? contextPendingEdits?.[id]?.[cell.column.key]?.validationError : null) || pendingValidationError || null;\n const isActuallyInlineEditing = inlineEditing === cell.column.key && cell?.column?.canEdit && !isLocked && !cell?.column?.is_disabled;\n const isFieldOperationLoading = fieldOperationLoading === `${id}-${cell?.column?.id}`;\n const { theme } = useTheme();\n const isDark = theme === 'dark';\n const onMouseEnter = useCallback(() => setRowHovering(id), [setRowHovering, id]);\n const onMouseLeave = useCallback(() => setRowHovering(null), [setRowHovering]);\n\n const getNodeExecutionDuration = tableConfig?.formatDuration;\n const [cellValue, setCellValue] = useState(\n cell?.column?.dataType === 'duration' && cell?.value\n ? getNodeExecutionDuration\n ? getNodeExecutionDuration(cell.value)\n : formatDurationFallback(cell.value)\n : cell.value,\n );\n const [tooltipText, setTooltipText] = useState<string | null>(null);\n const [isTruncated, setIsTruncated] = useState(false);\n const [urlTooltipOpen, setUrlTooltipOpen] = useState(false);\n const [truncateTooltipOpen, setTruncateTooltipOpen] = useState(false);\n const textRef = useRef<HTMLSpanElement>(null);\n const urlTooltipTimer = useRef<ReturnType<typeof setTimeout>>();\n const truncateTooltipTimer = useRef<ReturnType<typeof setTimeout>>();\n const { selectedColumnIds = [] } = multiSelectConfig || {};\n const shouldHighlight = !Object.prototype.hasOwnProperty.call(cell?.column?.meta ?? {}, 'shouldHighlight') || cell?.column?.meta?.shouldHighlight;\n\n const checkTruncation = useCallback(() => {\n if (textRef.current) {\n setIsTruncated(textRef.current.scrollWidth > textRef.current.clientWidth);\n }\n }, []);\n\n const handleUrlTooltipChange = useCallback((open: boolean) => {\n if (urlTooltipTimer.current) {\n clearTimeout(urlTooltipTimer.current);\n }\n\n if (open) {\n setUrlTooltipOpen(true);\n } else {\n urlTooltipTimer.current = setTimeout(() => setUrlTooltipOpen(false), 200);\n }\n }, []);\n\n const handleTruncateTooltipChange = useCallback((open: boolean) => {\n if (truncateTooltipTimer.current) {\n clearTimeout(truncateTooltipTimer.current);\n }\n\n if (open) {\n setTruncateTooltipOpen(true);\n } else {\n truncateTooltipTimer.current = setTimeout(() => setTruncateTooltipOpen(false), 200);\n }\n }, []);\n\n const bgColor = cn({\n 'bg-amber-100 dark:bg-amber-900/30': hasPendingEdit,\n 'bg-neutral-100 dark:bg-black-600': rowHovering === id && !isInlineEditing && !hasPendingEdit && !(is_deleted || currentData?.is_deleted) && !(is_added || currentData?.is_added),\n 'bg-error-200 dark:bg-error-900': rowHovering === id && !isInlineEditing && !hasPendingEdit && (is_deleted || currentData?.is_deleted),\n 'bg-success-100 dark:bg-success-800': rowHovering === id && !isInlineEditing && !hasPendingEdit && (is_added || currentData?.is_added),\n 'bg-warning-100 dark:bg-warning-950': rowHovering === id && !isInlineEditing && !hasPendingEdit && (is_incomplete || is_modified || is_row_modified || currentData?.is_row_modified),\n // 'bg-primary-50 dark:bg-black-700': !is_incomplete && !is_read && showNewItem && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-warning-50 dark:bg-orange-900': (is_incomplete || is_modified || is_row_modified || currentData?.is_row_modified) && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-error-100 dark:bg-error-975': (is_deleted || currentData?.is_deleted) && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-success-50 dark:bg-success-900': (is_added || currentData?.is_added) && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-primary-50 dark:bg-primary-900': (isDraggingOver || isInlineEditing) && !hasPendingEdit,\n 'bg-primary-50 dark:bg-primary-800': selectedColumnIds?.includes(cell.column.id) && !isInlineEditing && !hasPendingEdit,\n 'bg-primary-50 dark:bg-primary-700': isSelectedRow && rowHovering !== id && !isInlineEditing && !hasPendingEdit && !isLoading,\n [getTableRowBgClassNamesByStatus[cell?.row?.original?.__rowBgStatus as string]]: cell?.row?.original?.__rowBgStatus && !isInlineEditing && !hasPendingEdit,\n });\n\n const onClick = (e: React.MouseEvent) => { if (cell.column?.disableRowClick) return; handleCellClick(e); };\n\n const handleContextMenu = useCallback((event: React.MouseEvent<HTMLTableCellElement>) => {\n // Keep the native menu when the table opted out, or while inline editing (cut/paste/undo).\n if (cellContextMenuConfig?.isEnabled === false || !openCellContextMenu || isActuallyInlineEditing) return;\n\n const target: ICellContextMenuTarget = {\n rowId: id,\n rowData: (cell?.row?.original ?? {}) as Record<string, unknown>,\n columnKey: cell?.column?.key ?? '',\n column: cell.column,\n value: cell?.value,\n text: getCellText(cellValue, cell?.value, event.currentTarget),\n rowText: getRowText(event.currentTarget),\n cell,\n };\n\n if (cellContextMenuConfig?.isDisabledForCell?.(target)) return;\n\n event.preventDefault();\n event.stopPropagation();\n openCellContextMenu({ x: event.clientX, y: event.clientY, target });\n }, [cellContextMenuConfig, openCellContextMenu, isActuallyInlineEditing, id, cell, cellValue]);\n\n useEffect(() => {\n const isRunning = cell?.row?.original?.status === 'running';\n if (isRunning && cell.column?.dataType === 'duration') {\n interval = setInterval(() => {\n const startedTime = new Date(formatDate((cell?.row?.original?.created_at || cell?.row?.original?.executed_on) as string | undefined, { withTime: true, format: 'yyyy-MM-dd HH:mm:ss' }) as unknown as Date);\n const timeDiff = Math.abs(new Date().getTime() - new Date(startedTime).getTime());\n setCellValue(getNodeExecutionDuration ? getNodeExecutionDuration(timeDiff) : formatDurationFallback(timeDiff));\n }, 500);\n }\n return () => { if (interval) clearInterval(interval); };\n }, [cellValue, cell.value, cell?.row?.original?.created_at, cell?.row?.original?.executed_on, cell?.row?.original?.status, cell.column?.dataType, getNodeExecutionDuration]);\n\n useEffect(() => {\n if (cell?.column?.tooltipCellKey || cell?.column?.type?.toLowerCase() === 'url') {\n if (cell?.column?.type?.toLowerCase() === 'url') setTooltipText(cell?.value as string | null);\n else setTooltipText(cell?.row?.original?.[String(cell?.column?.tooltipCellKey)] as string | null);\n }\n }, [cell?.column?.tooltipCellKey, cell?.row?.original, cell?.column?.type, cell?.value]);\n\n useEffect(() => {\n if (cell?.column?.type?.toLowerCase() === 'currency') {\n if (pendingEdit?.value !== undefined) {\n const rawData = cell?.row?.original?.__rawData as Record<string, Record<string, unknown>> | undefined;\n const headerKey = cell?.column?.Header as unknown as string;\n const currencyCode = pendingEdit?.meta?.currency_code || rawData?.[headerKey]?.currency_code || 'USD';\n setCellValue(formatCurrency(pendingEdit.value, currencyCode as string));\n } else {\n const rawData = cell?.row?.original?.__rawData as Record<string, Record<string, unknown>> | undefined;\n const headerKey = cell?.column?.Header as unknown as string;\n setCellValue(formatCurrency(cell?.value, (rawData?.[headerKey]?.currency_code as string) || 'USD'));\n }\n }\n }, [cell?.value, cell?.column?.type, cell?.column?.Header, cell?.row?.original?.__rawData, pendingEdit?.value, pendingEdit?.meta?.currency_code]);\n\n useEffect(() => {\n if (cell?.column?.type?.toLowerCase() === 'percentage') {\n if (pendingEdit?.value !== undefined) setCellValue(pendingEdit.value?.toString() + '%' || '');\n else setCellValue(cell?.value?.toString() + '%' || '');\n }\n }, [cell?.value, cell?.column?.type, pendingEdit?.value]);\n\n useEffect(() => {\n const columnType = cell?.column?.type?.toLowerCase() || '';\n if (['date', 'datetime'].includes(columnType)) {\n if (pendingEdit?.value !== undefined) {\n const hasTime = columnType === 'datetime';\n const formattedValue = formatDate(pendingEdit.value as string, { withTime: hasTime, skipTimezone: true });\n setCellValue(formattedValue || pendingEdit.value);\n } else setCellValue(cell.value);\n }\n }, [cell?.value, cell?.column?.type, pendingEdit?.value]);\n\n useEffect(() => {\n const columnType = cell?.column?.type?.toLowerCase() || '';\n if (['currency', 'percentage', 'duration', 'boolean', 'date', 'datetime'].includes(columnType)) return;\n if (pendingEdit?.value !== undefined) setCellValue(pendingEdit.value);\n else if (cell?.column?.dataType !== 'duration') setCellValue(cell.value);\n }, [cell?.value, cell?.column?.type, cell?.column?.dataType, pendingEdit?.value]);\n\n useEffect(() => {\n if (cell?.column?.type?.toLowerCase() === 'boolean' && allowInlineEdit) {\n const rawValue = pendingEdit?.value !== undefined ? pendingEdit.value : cell?.value;\n const booleanValue = rawValue === true || rawValue === 'true' || rawValue === 'True' || rawValue === 'Yes' || rawValue === 1;\n setCellValue(booleanValue ? 'Yes' : 'No');\n }\n }, [cell?.value, cell?.column?.type, allowInlineEdit, pendingEdit?.value]);\n\n useEffect(() => {\n return () => {\n if (urlTooltipTimer.current) {\n clearTimeout(urlTooltipTimer.current);\n }\n if (truncateTooltipTimer.current) {\n clearTimeout(truncateTooltipTimer.current);\n }\n };\n }, []);\n\n const isUiElementCell = React.isValidElement(cellValue);\n\n return (\n <td\n key={index} id={cell.value as string | undefined} data-column-key={cell?.column?.key} {...cell.getCellProps()}\n onClick={rowLinkConfig?.isEnabled ? undefined : onClick}\n className={cn('h-row', {\n 'sticky left-0': cell?.column?.sticky,\n relative: !cell?.column?.sticky,\n 'w-full': isLastCell,\n 'overflow-visible': inlineEditing === cell.column.key,\n /** Chips/badges: avoid vertical clip from overflow-x-hidden + truncate (see isUiElementCell branch below) */\n 'overflow-x-hidden overflow-y-visible': inlineEditing !== cell.column.key && isUiElementCell,\n 'overflow-hidden': inlineEditing !== cell.column.key && !isUiElementCell,\n },\n cellValidationError && !isActuallyInlineEditing ? 'outline outline-2 outline-error-500 -outline-offset-2 z-[5]' : '',\n `${bgColor ? bgColor : 'bg-white dark:bg-black-800'}`,\n )}\n style={{ minWidth: `${cell.column.width}px`, maxWidth: `${cell.column.width}px`, right: cell?.column?.sticky ? `${nextWidthSum}px` : CELL_DEFAULT_RIGHT_OFFSET, paddingLeft: level > 0 && index === 0 ? `${level * CELL_INDENT_PER_LEVEL_PX}px` : undefined }}\n onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}\n onContextMenu={handleContextMenu}\n >\n <CellWrapper withLink={rowLinkConfig?.isEnabled} linkTo={rowLinkConfig?.linkTo || undefined} rowData={cell?.row?.original} disableRowClick={cell?.column?.disableRowClick}>\n {(Array.isArray(cellEditing) ? cellEditing.includes(`${id}-${cell?.column?.id}`) : cellEditing === `${id}-${cell?.column?.id}`) ? (\n <div className='h-row top-0 font-medium font-inter w-full absolute flex items-center px-4'>\n <span className='text-neutral-400 dark:text-black-400 truncate'>\n {(() => {\n const currentCellId = `${id}-${cell?.column?.id}`;\n const editValue = typeof cellEditingValue === 'object' ? cellEditingValue?.[currentCellId] : cellEditingValue;\n const columnType = cell?.column?.type?.toLowerCase();\n\n if (columnType === 'boolean') {\n return (editValue as unknown) === true || editValue === 'true' || editValue === 'True' ? 'Yes' : 'No';\n }\n\n if ((columnType === 'date' || columnType === 'datetime') && editValue) {\n const hasTime = columnType === 'datetime';\n return formatDate(editValue as string, { withTime: hasTime, skipTimezone: true }) || String(editValue);\n }\n\n return editValue !== undefined && editValue !== null ? String(editValue) : (cellValue as React.ReactNode);\n })()}\n </span>\n <div className='ml-2 flex items-center gap-1.5'><LoadingSpinnerIcon className='spinner text-neutral-600 dark:text-white' size={12} /></div>\n </div>\n ) : inlineEditing === cell.column.key && cell?.column?.canEdit && !isLocked && !cell?.column?.is_disabled ? (\n <div className='h-row w-full absolute top-0 left-0 flex items-center' style={{ marginLeft: level > 0 && index === 0 ? `-${level * CELL_INDENT_PER_LEVEL_PX}px` : undefined, width: level > 0 && index === 0 ? `calc(100% + ${level * CELL_INDENT_PER_LEVEL_PX}px)` : '100%' }}>\n <InlineEditField cell={cell} id={id} inlineEditing={inlineEditing} cellRef={cellRef} handleCellValueChange={handleCellValueChange} handleUpdateCellData={handleUpdateCellData} registerValidation={registerValidation} />\n </div>\n ) : (\n <>\n {level > 0 && index === 0 && <div className='h-row border-l border-neutral-300 dark:border-black-600 ml-2' />}\n <div className='min-h-6'>\n <Tooltip\n title={tooltipText && cell?.column?.type?.toLowerCase() !== 'url' ? tooltipText : undefined}\n hideTooltip={!tooltipText || cell?.column?.type?.toLowerCase() === 'url'}\n delayShow\n placement='top'\n >\n <div className={cn(`h-row top-0 font-medium font-inter overflow-index-auto whitespace-nowrap text-ellipsis dark:text-black-200 w-full absolute flex items-center ${bgColor ? bgColor : 'bg-white dark:bg-black-800'}`, isUiElementCell ? 'overflow-x-hidden overflow-y-visible' : 'overflow-x-hidden', { 'border border-b-0 border-t-0 border-primary-600 dark:border-blue-800': selectedColumnIds?.includes(cell.column.id) })}\n style={cell?.column?.sticky && isFirstStickyCell ? { boxShadow: isDark ? CELL_STICKY_SHADOW_DARK : CELL_STICKY_SHADOW_LIGHT } : {}}>\n {cascadingTableConfig?.isCascading && !originalsOnly && index === 0 && (\n <div className={cn('w-[22px] h-row flex items-center px-4', `${bgColor ? bgColor : 'bg-white dark:bg-black-800'}`)} id='cascading'>\n {maxLevel! > level && (cell?.row?.original?.__has_children || cascadingTableConfig?.showAllDropdown) && (\n <div>{loadingExpand ? <LoadingSpinnerIcon className='text-neutral-600 dark:text-white' size={8} /> : <div>{expandedRows?.[id]?.isOpen ? <KeyboardArrowDownIcon size={20} className='text-neutral-400 dark:text-neutral-400' onClick={(e) => { toggleRowExpand(); e.stopPropagation(); }} /> : <KeyboardArrowRightFilledIcon size={20} className='text-neutral-400 dark:text-neutral-400' onClick={(e) => { toggleRowExpand(); e.stopPropagation(); }} />}</div>}</div>\n )}\n </div>\n )}\n\n {cell?.column?.type?.toLowerCase() === 'url' && tooltipText ? (\n <Tooltip\n title={(\n <div onMouseEnter={() => handleUrlTooltipChange(true)} onMouseLeave={() => handleUrlTooltipChange(false)}>\n <a href={tooltipText} target='_blank' rel='noopener noreferrer' onClick={(e) => e.stopPropagation()}>\n <div className='flex gap-1 items-center w-full'>\n <div className='w-4 h-4'>\n <LinkIcon height={16} width={16} />\n </div>\n <Typography variant='medium' size='small' className='truncate' appearance='custom'>{tooltipText}</Typography>\n <OpenInNewRounded sx={{ height: '16px', width: '16px', color: '#016DCF' }} />\n </div>\n </a>\n </div>\n )}\n placement='top'\n open={urlTooltipOpen}\n onOpenChange={handleUrlTooltipChange}\n className='block w-full min-w-0 overflow-hidden'\n >\n <div className='w-full h-row flex items-center px-4 min-w-0 overflow-hidden text-primary-400'>\n <span ref={textRef} data-cell-content onMouseEnter={checkTruncation} className='truncate w-full'>\n {highlightSubstring && shouldHighlight && !React.isValidElement(cellValue) && typeof cellValue !== 'object'\n ? highlightSubstring(cellValue as string)\n : cellValue as React.ReactNode}\n </span>\n </div>\n </Tooltip>\n ) : (\n <Tooltip\n title={\n isTruncated && cellValue && !isUiElementCell ? (\n <div\n onMouseEnter={() => handleTruncateTooltipChange(true)}\n onMouseLeave={() => handleTruncateTooltipChange(false)}\n className='max-h-96 overflow-y-auto whitespace-pre-wrap break-words no-scroll'\n >\n {String(cellValue)}\n </div>\n ) : undefined\n }\n placement='top'\n delayShow\n hideTooltip={!!tooltipText}\n open={isTruncated && !tooltipText && !isUiElementCell ? truncateTooltipOpen : undefined}\n onOpenChange={isTruncated && !tooltipText && !isUiElementCell ? handleTruncateTooltipChange : undefined}\n className={cn('block w-full min-w-0', isUiElementCell ? 'overflow-x-hidden overflow-y-visible' : 'overflow-hidden')}\n >\n <div className={cn('w-full h-row flex items-center px-4 min-w-0', isUiElementCell ? 'overflow-x-hidden overflow-y-visible' : 'overflow-hidden')}>\n <span\n ref={isUiElementCell ? undefined : textRef}\n data-cell-content\n onMouseEnter={isUiElementCell ? undefined : checkTruncation}\n className={cn(isUiElementCell ? 'flex min-w-0 max-w-full items-center justify-start gap-1' : 'truncate w-full')}\n >\n {highlightSubstring && shouldHighlight && !React.isValidElement(cellValue) && typeof cellValue !== 'object'\n ? highlightSubstring(cellValue as string)\n : React.isValidElement(cellValue)\n ? (typeof (cellValue as React.ReactElement<Record<string, unknown>>).type === 'string'\n ? cellValue\n : React.cloneElement(cellValue as React.ReactElement<Record<string, unknown>>, {\n ...((cellValue as React.ReactElement<Record<string, unknown>>).props as Record<string, unknown>),\n containerWidth: cell.column.width,\n }))\n : cellValue as React.ReactNode}\n </span>\n </div>\n </Tooltip>\n )}\n </div>\n </Tooltip>\n </div>\n </>\n )}\n </CellWrapper>\n {cellValidationError && !isActuallyInlineEditing && (\n <div className='absolute bottom-0 left-0 right-0 h-row flex items-end pointer-events-none z-[5]'>\n <div className='w-full bg-error-50 dark:bg-error-975 px-1.5 py-0.5 truncate'><span className='text-error-600 text-2xs font-medium leading-none'>{cellValidationError}</span></div>\n </div>\n )}\n {isFieldOperationLoading && !(inlineEditing === cell.column.key && cell?.column?.canEdit && !isLocked && !cell?.column?.is_disabled) && (\n <div className='absolute top-0 right-0 bg-white dark:bg-black-800 rounded-full w-5 h-5 flex items-center justify-center border border-primary-300 dark:border-primary-600 shadow-sm z-10'>\n <LoadingSpinnerIcon className='text-primary-600 dark:text-white' size={8} />\n </div>\n )}\n </td>\n );\n};\n\nexport const DataCell = React.memo(DataCellInner);\n"],"names":["interval","formatDurationFallback","duration","durationInMs","days","hours","minutes","seconds","CellWrapper","children","withLink","linkTo","rowData","disableRowClick","jsx","Link","DataCellInner","cell","id","nextWidthSum","isLastCell","rowHovering","index","isFirstStickyCell","handleCellClick","currentData","highlightSubstring","is_read","is_modified","is_row_modified","is_deleted","is_added","level","inlineEditing","isInlineEditing","setRowHovering","handleCellValueChange","cellRef","handleUpdateCellData","registerValidation","loadingExpand","toggleRowExpand","isDraggingOver","isLoading","is_incomplete","pendingEdit","hasPendingEdit","pendingValidationError","cascadingTableConfig","originalsOnly","maxLevel","showNewItem","expandedRows","rowLinkConfig","multiSelectConfig","cellEditing","cellEditingValue","allowInlineEdit","fieldOperationLoading","contextPendingEdits","selectedRowId","cellContextMenuConfig","openCellContextMenu","useContext","TableContext","isSelectedRow","tableConfig","useTableConfig","isLocked","cellValidationError","isActuallyInlineEditing","isFieldOperationLoading","theme","useTheme","isDark","onMouseEnter","useCallback","onMouseLeave","getNodeExecutionDuration","cellValue","setCellValue","useState","tooltipText","setTooltipText","isTruncated","setIsTruncated","urlTooltipOpen","setUrlTooltipOpen","truncateTooltipOpen","setTruncateTooltipOpen","textRef","useRef","urlTooltipTimer","truncateTooltipTimer","selectedColumnIds","shouldHighlight","checkTruncation","handleUrlTooltipChange","open","handleTruncateTooltipChange","bgColor","cn","getTableRowBgClassNamesByStatus","onClick","e","handleContextMenu","event","target","getCellText","getRowText","useEffect","startedTime","formatDate","timeDiff","rawData","headerKey","currencyCode","formatCurrency","columnType","hasTime","formattedValue","rawValue","isUiElementCell","React","jsxs","CELL_DEFAULT_RIGHT_OFFSET","CELL_INDENT_PER_LEVEL_PX","currentCellId","editValue","LoadingSpinnerIcon","InlineEditField","Fragment","Tooltip","CELL_STICKY_SHADOW_DARK","CELL_STICKY_SHADOW_LIGHT","KeyboardArrowDownIcon","KeyboardArrowRightFilledIcon","LinkIcon","Typography","OpenInNewRounded","DataCell"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c="[data-cell-content]",l=" ",S=`
2
+ `,s=t=>["string","number","boolean"].includes(typeof t),g=t=>t?(t.innerText??t.textContent??"").trim():"",T=(t,n,r)=>{const i=s(t)?t:n;return s(i)?String(i):g(r?.querySelector(c)??r)},f=t=>{const n=t?.closest("tr")?.querySelectorAll(c);return n?.length?Array.from(n,g).join(l):""},u=(t,n,r)=>{if(!t?.length||!n?.length||!r?.length)return"";const i=new Set(r.map(String)),a=n.filter(e=>e.visible!==!1&&e.is_visible!==!1).map(e=>e.key);return t.filter(e=>i.has(String(e.id))).map(e=>a.map(o=>o&&s(e[o])?String(e[o]):"").join(l)).join(S)};exports.getCellText=T;exports.getRowText=f;exports.getSelectedRowsText=u;
3
+ //# sourceMappingURL=copy-text.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy-text.cjs.js","sources":["../../../../src/components/data-display/infinite-table/copy-text.ts"],"sourcesContent":["import type { IColumn } from './types';\n\nconst CELL_CONTENT_SELECTOR = '[data-cell-content]';\nconst COLUMN_SEPARATOR = '\\t';\nconst ROW_SEPARATOR = '\\n';\n\nconst isPrimitive = (value: unknown): value is string | number | boolean => ['string', 'number', 'boolean'].includes(typeof value);\n\n/** innerText keeps the on-screen spacing between chips; textContent covers non-rendering hosts. */\nconst readText = (element: HTMLElement | null): string => (element ? (element.innerText ?? element.textContent ?? '').trim() : '');\n\n/**\n * Clipboard text for a cell: the formatted value, else the raw value, else what is on\n * screen — chips and custom cell renderers only exist as rendered nodes.\n */\nexport const getCellText = (displayValue: unknown, rawValue: unknown, cellElement: HTMLElement | null): string => {\n const candidate = isPrimitive(displayValue) ? displayValue : rawValue;\n\n if (isPrimitive(candidate)) return String(candidate);\n\n // The value span only — the cell also holds overlays (validation error, spinner).\n return readText(cellElement?.querySelector<HTMLElement>(CELL_CONTENT_SELECTOR) ?? cellElement);\n};\n\n/** Tab-separated text of the row the cell belongs to, taken from what is rendered so values keep their cell formatting. */\nexport const getRowText = (cellElement: HTMLElement | null): string => {\n const cells = cellElement?.closest('tr')?.querySelectorAll<HTMLElement>(CELL_CONTENT_SELECTOR);\n\n if (!cells?.length) return '';\n\n return Array.from(cells, readText).join(COLUMN_SEPARATOR);\n};\n\n/**\n * Tab-separated text of the checked rows, one row per line. Built from the data rather than\n * the DOM because a selected row may be scrolled out of the virtualized viewport.\n */\nexport const getSelectedRowsText = (\n rows: Record<string, unknown>[] | undefined,\n columns: IColumn[] | undefined,\n checkedIds: (string | number)[] | undefined,\n): string => {\n if (!rows?.length || !columns?.length || !checkedIds?.length) return '';\n\n const checked = new Set(checkedIds.map(String));\n const keys = columns.filter((column) => column.visible !== false && column.is_visible !== false).map((column) => column.key);\n\n return rows\n .filter((row) => checked.has(String(row.id)))\n .map((row) => keys.map((key) => (key && isPrimitive(row[key]) ? String(row[key]) : '')).join(COLUMN_SEPARATOR))\n .join(ROW_SEPARATOR);\n};\n"],"names":["CELL_CONTENT_SELECTOR","COLUMN_SEPARATOR","ROW_SEPARATOR","isPrimitive","value","readText","element","getCellText","displayValue","rawValue","cellElement","candidate","getRowText","cells","getSelectedRowsText","rows","columns","checkedIds","checked","keys","column","row","key"],"mappings":"gFAEA,MAAMA,EAAwB,sBACxBC,EAAmB,IACnBC,EAAgB;AAAA,EAEhBC,EAAeC,GAAuD,CAAC,SAAU,SAAU,SAAS,EAAE,SAAS,OAAOA,CAAK,EAG3HC,EAAYC,GAAyCA,GAAWA,EAAQ,WAAaA,EAAQ,aAAe,IAAI,KAAA,EAAS,GAMlHC,EAAc,CAACC,EAAuBC,EAAmBC,IAA4C,CAChH,MAAMC,EAAYR,EAAYK,CAAY,EAAIA,EAAeC,EAE7D,OAAIN,EAAYQ,CAAS,EAAU,OAAOA,CAAS,EAG5CN,EAASK,GAAa,cAA2BV,CAAqB,GAAKU,CAAW,CAC/F,EAGaE,EAAcF,GAA4C,CACrE,MAAMG,EAAQH,GAAa,QAAQ,IAAI,GAAG,iBAA8BV,CAAqB,EAE7F,OAAKa,GAAO,OAEL,MAAM,KAAKA,EAAOR,CAAQ,EAAE,KAAKJ,CAAgB,EAF7B,EAG7B,EAMaa,EAAsB,CACjCC,EACAC,EACAC,IACW,CACX,GAAI,CAACF,GAAM,QAAU,CAACC,GAAS,QAAU,CAACC,GAAY,OAAQ,MAAO,GAErE,MAAMC,EAAU,IAAI,IAAID,EAAW,IAAI,MAAM,CAAC,EACxCE,EAAOH,EAAQ,OAAQI,GAAWA,EAAO,UAAY,IAASA,EAAO,aAAe,EAAK,EAAE,IAAKA,GAAWA,EAAO,GAAG,EAE3H,OAAOL,EACJ,OAAQM,GAAQH,EAAQ,IAAI,OAAOG,EAAI,EAAE,CAAC,CAAC,EAC3C,IAAKA,GAAQF,EAAK,IAAKG,GAASA,GAAOnB,EAAYkB,EAAIC,CAAG,CAAC,EAAI,OAAOD,EAAIC,CAAG,CAAC,EAAI,EAAG,EAAE,KAAKrB,CAAgB,CAAC,EAC7G,KAAKC,CAAa,CACvB"}
@@ -0,0 +1,13 @@
1
+ import type { IColumn } from './types';
2
+ /**
3
+ * Clipboard text for a cell: the formatted value, else the raw value, else what is on
4
+ * screen — chips and custom cell renderers only exist as rendered nodes.
5
+ */
6
+ export declare const getCellText: (displayValue: unknown, rawValue: unknown, cellElement: HTMLElement | null) => string;
7
+ /** Tab-separated text of the row the cell belongs to, taken from what is rendered so values keep their cell formatting. */
8
+ export declare const getRowText: (cellElement: HTMLElement | null) => string;
9
+ /**
10
+ * Tab-separated text of the checked rows, one row per line. Built from the data rather than
11
+ * the DOM because a selected row may be scrolled out of the virtualized viewport.
12
+ */
13
+ export declare const getSelectedRowsText: (rows: Record<string, unknown>[] | undefined, columns: IColumn[] | undefined, checkedIds: (string | number)[] | undefined) => string;
@@ -0,0 +1,19 @@
1
+ const c = "[data-cell-content]";
2
+ const s = (t) => ["string", "number", "boolean"].includes(typeof t), l = (t) => t ? (t.innerText ?? t.textContent ?? "").trim() : "", S = (t, n, r) => {
3
+ const i = s(t) ? t : n;
4
+ return s(i) ? String(i) : l(r?.querySelector(c) ?? r);
5
+ }, T = (t) => {
6
+ const n = t?.closest("tr")?.querySelectorAll(c);
7
+ return n?.length ? Array.from(n, l).join(" ") : "";
8
+ }, a = (t, n, r) => {
9
+ if (!t?.length || !n?.length || !r?.length) return "";
10
+ const i = new Set(r.map(String)), R = n.filter((e) => e.visible !== !1 && e.is_visible !== !1).map((e) => e.key);
11
+ return t.filter((e) => i.has(String(e.id))).map((e) => R.map((o) => o && s(e[o]) ? String(e[o]) : "").join(" ")).join(`
12
+ `);
13
+ };
14
+ export {
15
+ S as getCellText,
16
+ T as getRowText,
17
+ a as getSelectedRowsText
18
+ };
19
+ //# sourceMappingURL=copy-text.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy-text.es.js","sources":["../../../../src/components/data-display/infinite-table/copy-text.ts"],"sourcesContent":["import type { IColumn } from './types';\n\nconst CELL_CONTENT_SELECTOR = '[data-cell-content]';\nconst COLUMN_SEPARATOR = '\\t';\nconst ROW_SEPARATOR = '\\n';\n\nconst isPrimitive = (value: unknown): value is string | number | boolean => ['string', 'number', 'boolean'].includes(typeof value);\n\n/** innerText keeps the on-screen spacing between chips; textContent covers non-rendering hosts. */\nconst readText = (element: HTMLElement | null): string => (element ? (element.innerText ?? element.textContent ?? '').trim() : '');\n\n/**\n * Clipboard text for a cell: the formatted value, else the raw value, else what is on\n * screen — chips and custom cell renderers only exist as rendered nodes.\n */\nexport const getCellText = (displayValue: unknown, rawValue: unknown, cellElement: HTMLElement | null): string => {\n const candidate = isPrimitive(displayValue) ? displayValue : rawValue;\n\n if (isPrimitive(candidate)) return String(candidate);\n\n // The value span only — the cell also holds overlays (validation error, spinner).\n return readText(cellElement?.querySelector<HTMLElement>(CELL_CONTENT_SELECTOR) ?? cellElement);\n};\n\n/** Tab-separated text of the row the cell belongs to, taken from what is rendered so values keep their cell formatting. */\nexport const getRowText = (cellElement: HTMLElement | null): string => {\n const cells = cellElement?.closest('tr')?.querySelectorAll<HTMLElement>(CELL_CONTENT_SELECTOR);\n\n if (!cells?.length) return '';\n\n return Array.from(cells, readText).join(COLUMN_SEPARATOR);\n};\n\n/**\n * Tab-separated text of the checked rows, one row per line. Built from the data rather than\n * the DOM because a selected row may be scrolled out of the virtualized viewport.\n */\nexport const getSelectedRowsText = (\n rows: Record<string, unknown>[] | undefined,\n columns: IColumn[] | undefined,\n checkedIds: (string | number)[] | undefined,\n): string => {\n if (!rows?.length || !columns?.length || !checkedIds?.length) return '';\n\n const checked = new Set(checkedIds.map(String));\n const keys = columns.filter((column) => column.visible !== false && column.is_visible !== false).map((column) => column.key);\n\n return rows\n .filter((row) => checked.has(String(row.id)))\n .map((row) => keys.map((key) => (key && isPrimitive(row[key]) ? String(row[key]) : '')).join(COLUMN_SEPARATOR))\n .join(ROW_SEPARATOR);\n};\n"],"names":["CELL_CONTENT_SELECTOR","isPrimitive","value","readText","element","getCellText","displayValue","rawValue","cellElement","candidate","getRowText","cells","getSelectedRowsText","rows","columns","checkedIds","checked","keys","column","row","key"],"mappings":"AAEA,MAAMA,IAAwB;AAI9B,MAAMC,IAAc,CAACC,MAAuD,CAAC,UAAU,UAAU,SAAS,EAAE,SAAS,OAAOA,CAAK,GAG3HC,IAAW,CAACC,MAAyCA,KAAWA,EAAQ,aAAaA,EAAQ,eAAe,IAAI,KAAA,IAAS,IAMlHC,IAAc,CAACC,GAAuBC,GAAmBC,MAA4C;AAChH,QAAMC,IAAYR,EAAYK,CAAY,IAAIA,IAAeC;AAE7D,SAAIN,EAAYQ,CAAS,IAAU,OAAOA,CAAS,IAG5CN,EAASK,GAAa,cAA2BR,CAAqB,KAAKQ,CAAW;AAC/F,GAGaE,IAAa,CAACF,MAA4C;AACrE,QAAMG,IAAQH,GAAa,QAAQ,IAAI,GAAG,iBAA8BR,CAAqB;AAE7F,SAAKW,GAAO,SAEL,MAAM,KAAKA,GAAOR,CAAQ,EAAE,KAAK,GAAgB,IAF7B;AAG7B,GAMaS,IAAsB,CACjCC,GACAC,GACAC,MACW;AACX,MAAI,CAACF,GAAM,UAAU,CAACC,GAAS,UAAU,CAACC,GAAY,OAAQ,QAAO;AAErE,QAAMC,IAAU,IAAI,IAAID,EAAW,IAAI,MAAM,CAAC,GACxCE,IAAOH,EAAQ,OAAO,CAACI,MAAWA,EAAO,YAAY,MAASA,EAAO,eAAe,EAAK,EAAE,IAAI,CAACA,MAAWA,EAAO,GAAG;AAE3H,SAAOL,EACJ,OAAO,CAACM,MAAQH,EAAQ,IAAI,OAAOG,EAAI,EAAE,CAAC,CAAC,EAC3C,IAAI,CAACA,MAAQF,EAAK,IAAI,CAACG,MAASA,KAAOnB,EAAYkB,EAAIC,CAAG,CAAC,IAAI,OAAOD,EAAIC,CAAG,CAAC,IAAI,EAAG,EAAE,KAAK,GAAgB,CAAC,EAC7G,KAAK;AAAA,CAAa;AACvB;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),Ts=require("../../../hooks/useCheckbox.cjs.js"),ys=require("../../../providers/design-system-provider/hooks.cjs.js"),Be=require("../../../utils/table.cjs.js"),Nt=require("../../button/Button.cjs.js"),Rs=require("../../floating-bar/FloatingBar.cjs.js"),ve=require("../typography/Typography.cjs.js"),E=require("@dnd-kit/core"),l=require("react"),Os=require("react-virtualized-auto-sizer"),js=require("react-dom"),At=require("react-table"),ks=require("./body/index.cjs.js"),_t=require("./validateCell.cjs.js"),Es=require("./body/rows/row.cjs.js"),Ds=require("./context.cjs.js"),Ns=require("./CellContextMenuPortal.cjs.js"),As=require("./CurrencyDropdownPortal.cjs.js"),_s=require("./head/index.cjs.js"),Ms=require("./PendingEditsFloatingBar.cjs.js"),h=require("./constants.cjs.js"),Mt=require("./useRowHeight.cjs.js"),Is=require("../empty-state/NoDataFoundWidgets.cjs.js"),Ls=require("../empty-state/NoDataFound.cjs.js"),gs=require("../../icon/icons.generated.cjs.js"),Cs=Os.AutoSizer,It="Create Column",Vs=(M,T)=>`button-admin-${M.toLowerCase().trim().replace(/\s+/g,"-").replace(/[^a-z0-9-_]/g,"")||T}`,Bs=l.memo(({tableKey:M,searchConfig:T={search:"",handleSearch:()=>null,allowAStarSearch:!1},filterConfig:a={columnFilters:[],onFilter:()=>null,onRemoveFilter:()=>null,onClearFilter:()=>null,onResetFilter:()=>Promise.resolve({}),asyncRowOptionsFilter:()=>Promise.resolve({})},sortConfig:m={onSort:()=>null,columnSort:{field:"",order:""},onRemoveSort:()=>null},headerConfig:i={showExportButton:null,showFilters:!0,showSorts:!0,showSearch:!0,showTableView:!0,showTableViewAsModal:!1,content:null,postContent:null,preContent:null,isLoading:!1,showDivider:!1},hoverConfig:Lt=null,columns:R,modelName:G,enableMasterDataEnumSuggestions:X=!1,agreementId:Y,enumSuggestionsExtraParams:Z,enumSuggestionsData:Q,data:f=[],onRowClick:gt,showHeader:Se,showSubHeader:Ct=!0,tableActions:Pe,rowOptions:q,hideRowOptionWidth:qe,checkboxUtilities:I,isLoading:K=!1,onScroll:Vt,onScrolling:Bt,isColumnConfigurable:ee,onAddColumnClick:te,emptyMessage:We,noDataWidget:He,buttons:$e,onEditColumnClick:ze,onDeleteColumnClick:Ue,onRowTooltipClick:Pt,tooltiptext:qt,cascadingTableConfig:Wt,originalsOnly:Ht,disableOptionsForRowIndex:$t,tableHeightClass:le="h-[calc(100vh-220px)]",getFullRowDataOnClick:zt,selectedRowId:Ut=null,onRowEdit:D,onBulkRowEdit:L,inlineEditColumns:Jt,isResizable:Gt=!0,paginationConfig:se,dndSortableUtils:re,multipleContexts:Je,withSortable:be,withDraggable:Xt,enableRootDrag:Yt,pageSize:Zt=h.DEFAULT_PAGE_SIZE,onCascadingRowExpand:Qt,totalItems:Ge,showRecordCount:we=!1,getInnerRowData:Kt,maxLevel:el,expandedRows:tl={},setExpandedRows:ll,showNewItem:sl,rawData:Xe,dragConfig:rl,isOverlayLoading:nl,style:al={},floatingBarConfig:pe,rowWrapper:ol,rowLinkConfig:cl,isCellClickDisabled:il,setHeaderOnParent:Fe,optimizeTable:ul=!1,multiSelectConfig:dl,cellContextMenuConfig:Ye,headerContextOptions:hl,showHeaderContextOptions:ml,setShowHeaderContextOptions:fl,showDataTypeIcon:xl=!1,rowAdditionalActions:ne,rowAdditionalActionsWidth:Te,setVisibleHeaders:ye,cellEditing:vl=null,cellEditingValue:Sl=null,allowInlineEdit:bl=!1,onFieldOperationFlow:wl,fieldOperationLoading:g=null,onTableActionsReady:Re,onPendingEditsChange:Ze,onCancelPendingEdits:C})=>{const c=ys.useTableConfig(),pl=Mt.getRowSlotHeight(Mt.useRowHeight()),Fl=!!T?.search,Qe=a?.columnFilters?.length>0,W=Fl||Qe,Tl=!!I,y=c?.getTableView?.(M)??null,[p,H]=l.useState(y||null),N=!Be.canEditTableView(p,c?.getUserId?.()),[Oe,je]=l.useState(!1),[ke,Ke]=l.useState(!1),[yl,et]=l.useState(null),[S,Ee]=l.useState(R),tt=(f.length===0||!S.length)&&!K,[lt,ae]=l.useState(null),[Rl,Ol]=l.useState(!1),[jl,kl]=l.useState(null),[El,Dl]=l.useState(!1),[Nl,oe]=l.useState(null),[Al,ce]=l.useState(null),[_l,st]=l.useState({}),[$,De]=l.useState(null),[Ml,rt]=l.useState(!1),[O,Il]=l.useState(0),Ne=l.useRef(null),Ae=l.useRef(null),[nt,Ll]=l.useState({width:0,height:0}),[gl,V]=l.useState(null),[j,at]=l.useState(null),[Cl,ot]=l.useState(null),[ct,it]=l.useState(null),[Vl,ut]=l.useState(null),[_e,z]=l.useState({}),Me=l.useRef(!1),ie=l.useRef(!1),Ie=l.useRef(p);Ie.current=p;const dt=l.useRef(c);dt.current=c;const ht=l.useRef(R);ht.current=R;const ue=l.useRef(a);ue.current=a;const mt=l.useRef(null),ft=l.useRef(()=>({})),xt=l.useRef(()=>({})),[d,k]=l.useState({}),Le=l.useCallback((e,t,r)=>{k(n=>{const o=n[e]?.[t];let u=r.validationError;if(u===void 0){const b=S.find(x=>x.key===t);if(b){const x=_t.validateCellValue(r.value,b);u=x.isValid?null:x.error||"Invalid"}else u=o?.validationError??null}return{...n,[e]:{...n[e]||{},[t]:{...r,validationError:u??null}}}})},[S]),vt=l.useCallback(()=>Object.values(d).some(e=>Object.keys(e).length>0),[d]);l.useEffect(()=>{Re&&Re({addPendingEdit:Le,hasPendingEdits:vt})},[Re,Le,vt]);const Bl=l.useCallback((e,t)=>{k(r=>{const n={...r};if(n[e]){const{[t]:o,...u}=n[e];Object.keys(u).length===0?delete n[e]:n[e]=u}return n})},[]),Pl=l.useCallback((e,t)=>d[e]?.[t],[d]),ql=l.useCallback((e,t)=>!!d[e]?.[t],[d]),St=l.useCallback(()=>{g||(C&&Object.keys(d).length>0&&C(d),k({}),z({}),V(null))},[g,C,d]),B=l.useCallback((e,t,r)=>{setTimeout(()=>{c?.dispatchEvent?.("SCROLL_TO_TABLE_ROW",{rowIndex:r});const n=S.findIndex(o=>o.key===t);setTimeout(()=>{const o=document.querySelector(`[${h.DATA_ROW_ID_ATTR}="${e}"] [${h.DATA_COLUMN_KEY_ATTR}="${t}"]`);if(o)o.scrollIntoView({behavior:"smooth",block:"center",inline:"center"});else if(n>0){const u=document.querySelector(h.OS_VIEWPORT_SELECTOR);if(u){let b=0;for(let x=0;x<n;x++){const F=S[x];F?.sticky||(b+=F?.width||h.SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK)}b=Math.max(0,b-h.SCROLL_TO_CELL_LEFT_OFFSET),u.scrollTo({left:b,behavior:"smooth"})}}V({rowId:e,columnKey:t})},350)},100)},[S,c]),U=l.useCallback(e=>{let t=!1,r=null;const n={},o=new Set;return Object.entries(e).forEach(([u,b])=>{n[u]={},Object.entries(b).forEach(([x,F])=>{const _=S.find(w=>w.key===x),v=_t.validateCellValue(F.value,_);v.isValid?n[u][x]={...F,validationError:null}:(t=!0,v.error&&o.add(v.error),r||(r={rowId:u,columnKey:x}),n[u][x]={...F,validationError:v.error})})}),{hasErrors:t,updatedEdits:n,firstError:r,errorTypes:o}},[S]),de=l.useCallback(e=>{const t=e.has("Field required"),r=e.size>(t?1:0);return t&&r?"Missing required field(s) and invalid format detected. Please review highlighted field(s).":t?"Missing required field(s). Please review highlighted field(s).":"Invalid field value(s). Please review highlighted field(s)."},[]),bt=l.useCallback(()=>{const{hasErrors:e,updatedEdits:t,firstError:r,errorTypes:n}=U(d);if(e){if(k(t),c?.showNotification?.("error",de(n)),r){const u=f.findIndex(b=>b.id===r.rowId);B(r.rowId,r.columnKey,u)}return}const o=[];Object.entries(d).forEach(([u,b])=>{const x=f.find(F=>F.id===u);if(x){const F={...x},_={};Object.entries(b).forEach(([v,w])=>{F[v]=w.value,_[v]={value:w.value,meta:w.meta}}),o.push({...F,__editedFields:_})}}),o.length>0&&(L?L(o):D&&D(null,null,null,null,null,{isBulk:!0,rows:o})),k({}),z({}),V(null)},[d,f,D,L,U,de,B,c]),Wl=l.useCallback(e=>{if(g)return;const t=d[e];t&&C&&C({[e]:t}),k(r=>{const n={...r};return delete n[e],n}),z(r=>{const n={...r};return Object.keys(n).forEach(o=>{o.startsWith(`${e}-`)&&delete n[o]}),n}),V(null)},[g,C,d]),Hl=l.useCallback(e=>{const t=d[e];if(!t||Object.keys(t).length===0)return;const{hasErrors:r,updatedEdits:n,firstError:o,errorTypes:u}=U({[e]:t});if(r){if(k(v=>({...v,[e]:n[e]})),c?.showNotification?.("error",de(u)),o){const v=f.findIndex(w=>w.id===o.rowId);B(o.rowId,o.columnKey,v)}return}const b=f.find(v=>v.id===e);if(!b)return;const x={...b},F={};Object.entries(t).forEach(([v,w])=>{x[v]=w.value,F[v]={value:w.value,meta:w.meta}});const _={...x,__editedFields:F};L?L([_]):D&&D(null,null,null,null,null,{isBulk:!0,rows:[_]}),k(v=>{const w={...v};return delete w[e],w}),z(v=>{const w={...v};return Object.keys(w).forEach(Dt=>{Dt.startsWith(`${e}-`)&&delete w[Dt]}),w}),V(null)},[d,f,D,L,U,de,B,c]),P=l.useMemo(()=>Object.values(d).reduce((e,t)=>e+Object.keys(t).length,0),[d]);l.useEffect(()=>{Ze?.(P>0,P)},[P,Ze]);const $l=l.useMemo(()=>{const e=[];return Object.entries(d).forEach(([t,r])=>{const n=f.findIndex(o=>o.id===t);Object.entries(r).forEach(([o,u])=>{const b=S.find(x=>x.key===o);e.push({rowId:t,columnKey:o,fieldName:b?.Header||b?.display_name||o,value:u.value,originalValue:u.originalValue,meta:u.meta,originalMeta:u.originalMeta,rowIndex:n})})}),e},[d,S,f]),zl=l.useMemo(()=>{const e=new Map;return Object.entries(d).forEach(([t,r])=>{const n=f.findIndex(o=>o.id===t);e.set(t,{rowId:t,rowIndex:n,editCount:Object.keys(r).length})}),Array.from(e.values()).sort((t,r)=>t.rowIndex-r.rowIndex)},[d,f]),Ul=l.useCallback(e=>at(e),[]),he=l.useCallback(()=>at(null),[]),Jl=l.useCallback((e,t)=>{ot({value:e,reference:t}),j?.onSelected&&j.onSelected(e,t),he()},[j,he]),Gl=l.useCallback(()=>ot(null),[]),Xl=l.useCallback(e=>it(e),[]),wt=l.useCallback(()=>it(null),[]),Yl=l.useCallback(e=>ut(e),[]),pt=l.useCallback(()=>ut(null),[]),Zl=l.useCallback((e,t)=>{z(r=>({...r,[e]:t}))},[]),Ql=l.useCallback(e=>_e[e],[_e]),Kl=l.useMemo(()=>{const e=le.match(/h-\[(\d+px)\]/);if(e)return e[1];const t=le.match(/h-\[(calc\(.+\))\]/);if(t)return t[1].replace(/([+-])/g," $1 ").replace(/\s+/g," ")},[le]),es={isEmpty:tt,isFilters:W,isColumnConfigurable:ee,handleOnClick:te,emptyMessage:We,buttons:$e,noDataWidget:He},ts=c?.t?.(It)??It,me=W?"No Results Found":We||"No Data Found",ls=typeof me=="string"?c?.t?.(me)??me:me,Ft={__isLoading:!0},ss=new Array(1).fill(Ft),rs=new Array(Zt).fill(Ft),J=l.useMemo(()=>S.filter(e=>!!e?.visible),[S]),ns=At.useTable({columns:ul?J:S,data:[...f,...K?f?.length?ss:rs:[]],defaultColumn:{minWidth:h.DEFAULT_COLUMN_MIN_WIDTH,width:h.DEFAULT_COLUMN_WIDTH,maxWidth:h.DEFAULT_COLUMN_MAX_WIDTH}},At.useResizeColumns),{getTableProps:Tt,getTableBodyProps:yt,headerGroups:fe,prepareRow:Rt,rows:A}=ns;mt.current=fe;const as=JSON.stringify(fe[0]?.headers?.map(e=>e?.Header));l.useEffect(()=>{if(ye){const e=mt.current;ye?.(e?.[0]?.headers?.map(t=>t?.Header)??[])}},[as,ye]);const{checkboxConfig:Ot}=Ts.useCheckbox({rows:A,checkedIds:I?.checkedIds,isCheckAllDisabled:I?.isCheckAllDisabled,selectionDisabledRowIds:I?.selectionDisabledRowIds,rawData:Xe,onAllChecked:Dl,setCheckedIds:I?.setCheckedIds,checkboxMetadata:I?.checkboxMetadata}),os=E.useSensors(E.useSensor(E.MouseSensor,{activationConstraint:{distance:h.DND_ACTIVATION_DISTANCE}}),E.useSensor(E.TouchSensor,{activationConstraint:{distance:h.DND_ACTIVATION_DISTANCE}})),cs={easing:h.DROP_ANIMATION_EASING,duration:h.DROP_ANIMATION_DURATION};function is(){return!Je?.length||!be?A:Je.reduce((e,t)=>(e[t]=A.filter(r=>r.original?.type===t),e),{})}xt.current=is;const us=e=>{const{active:t}=e;De(A.find(r=>r.original?.id===t?.id)??null)},ds=e=>{const{active:t,over:r}=e;r&&(re?.checkDndDragEnd&&re.checkDndDragEnd(t,r,_l,n=>{st(n),rt(!0),re.onDragSuccess?.({draggedId:t.id,droppedId:r.id,draggedType:t.data.current?.type,droppedType:r.data.current?.type,updatedList:n,cb:()=>rt(!1)})}),De(null))},hs=()=>De(null),ms=e=>{!m?.onSort&&!a?.onFilter||ae(lt===e?null:e)},fs=e=>{kl(e),Ol(!Rl),ae(null)},ge=l.useCallback(()=>{m?.onRemoveSort?m.onRemoveSort():m?.onSort&&m.onSort("","")},[m]),xe=l.useCallback((e=null)=>{et(e),je(t=>e?!0:!t)},[]),Ce=l.useCallback(()=>Ke(e=>!e),[]),xs=()=>{const e=fe[0]?.headers?.filter(t=>t?.visible!==!1);for(let t=0;t<e.length;t++)if(e[t].sticky)return t-1;return e.length-1},vs=l.useCallback(e=>{let t=0;for(let r=e+1;r<J.length;r++)J[r].visible!==!1&&(t+=J[r].width??0);return ne&&(t+=Te||h.ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH),q&&(t+=qe?0:h.ROW_OPTIONS_COLUMN_WIDTH),t},[J,Te,qe,ne,q]),jt=()=>{const e=c?.getUserId?.();return{...p||{},name:p?.name||"Untitled View",created_by:p?.created_by||e,filters:p?.filters||a?.columnFilters,id:p?.id||"untitled-view",table_key:p?.table_key||M,columns:p?.columns||R?.map((t,r)=>({name:t.Header,width:t.width,visible:t.visible,sticky:t.sticky,order:r+1,display_name:t.Header,sequence:r+1,Header:t.Header}))}};ft.current=jt;const Ss=(e,t)=>{const r=jt();H({...r,columns:r?.columns?.map(n=>n.name===e?{...n,width:t}:n),unsaved:N?r?.unsaved:!0})};l.useEffect(()=>{if(a?.columnFilters?.length>0&&je(!0),N)return;const e=Ie.current;if(JSON.stringify(e?.filters||[])!==JSON.stringify(a?.columnFilters||[])){const t=(e?.filters?.length??0)>0,r=a?.columnFilters?.length>0;if(!(t&&!r&&!ie.current)){const o=ft.current();H({...o,filters:JSON.parse(JSON.stringify(a?.columnFilters||[])),unsaved:!0})}ie.current=!1}},[a?.columnFilters,N]);const bs=l.useCallback(e=>{ie.current=!0,a?.onRemoveFilter?.(e)},[a?.onRemoveFilter]),ws=l.useCallback(()=>{ie.current=!0,a?.onClearFilter?.()},[a?.onClearFilter]);l.useEffect(()=>{m?.columnSort?.field?(Ke(!0),m.columnSort.order==="asc"?(oe(m.columnSort.field),ce(null)):m.columnSort.order==="desc"&&(ce(m.columnSort.field),oe(null))):(oe(null),ce(null))},[m?.columnSort?.field,m?.columnSort?.order]),l.useEffect(()=>{Ee(Be.mergeViewColumnsWithTableColumns(Ie.current?.columns||[],R))},[R]),l.useEffect(()=>{p?.unsaved&&dt.current?.persistTableView?.(p)},[p]),l.useEffect(()=>{st(xt.current())},[A.length]),l.useEffect(()=>{H(y||null),y?.columns&&Ee(Be.mergeViewColumnsWithTableColumns(y?.columns||[],ht.current)),y?.filters&&y.filters.length>0&&!Me.current?(requestAnimationFrame(()=>{ue.current?.onFilter?.(y.filters)}),Me.current=!0):y?.filters&&Me.current&&JSON.stringify(y.filters)!==JSON.stringify(ue.current?.columnFilters)&&ue.current?.onFilter?.(y.filters)},[y]),l.useEffect(()=>{if(Ne.current){const e=new ResizeObserver(t=>Il(t[0].contentRect.width));return e.observe(Ne.current),()=>e.disconnect()}},[]),l.useEffect(()=>{if(!Ae.current)return;const e=new ResizeObserver(t=>{const{width:r,height:n}=t[0].contentRect;Ll({width:r,height:n})});return e.observe(Ae.current),()=>e.disconnect()},[]);const kt=s.jsx(_s.Head,{isResizable:Gt,headerGroups:fe,isCheckbox:Tl,checkboxConfig:Ot,isAllChecked:El,showHeaderOptions:lt??"",setShowHeaderOptions:ae,isShowSortArrowAsc:Nl,isShowSortArrowDesc:Al,onSort:m?.onSort,onFilter:a?.onFilter,toggleHeaderOption:ms,setIsShowSortArrowAsc:oe,setIsShowSortArrowDesc:ce,toggleDataFilterModal:xe,rowOptions:Array.isArray(q)?q:[],isColumnConfigurable:ee??!1,onAddColumnClick:te,onEditColumnClick:ze,onDeleteColumnClick:Ue,tableActions:Pe||null,isLoading:K,rowAdditionalActions:ne??null,showPendingEditsColumn:P>0}),Et=s.jsxs(s.Fragment,{children:[Ml||nl?s.jsx("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"}):null,s.jsx("div",{...Tt(),className:"w-full text-sm text-left text-neutral-500 dark:text-neutral-200 h-full bg-white dark:bg-black-800",children:tt?s.jsxs("div",{className:"z-10",children:[kt,s.jsx("div",{className:"absolute w-full",children:c?.renderEmpty?c.renderEmpty(es):s.jsxs("div",{className:"flex flex-col items-center justify-center w-full h-[12rem] text-neutral-900 dark:text-neutral-200 mt-8",children:[He&&!W?s.jsx(Is.NoDataFoundWidgets,{widgetType:"TABLE"}):s.jsx(Ls.NoDataFound,{text:ls}),ee&&!W?s.jsx("div",{className:"my-4",children:s.jsxs(Nt,{id:"btn-table-shell-create-column",status:"primary",appearance:"ghost",onClick:te,children:[s.jsx(gs.Add2Icon,{className:"text-white dark:text-white"})," ",ts]})}):null,!W&&$e?.map((e,t)=>s.jsx(Nt,{status:"secondary",id:Vs(e.label,t),onClick:e.onClick,children:c?.t?.(e.label)??e.label},`${e.label}-${t}`))]})})]}):s.jsx(Cs,{style:{width:"100%",height:"100%"},renderProp:({width:e,height:t})=>{const r=e>0?e:nt.width,n=t>0?t:nt.height;return r>0&&n>0?s.jsx(ks.Body,{getTableBodyProps:yt,rows:A,prepareRow:Rt,isLoading:K,onScroll:Vt,onScrolling:Bt,columns:R,width:r,height:n,withSortable:be,allowAstarSearch:T?.allowAStarSearch||!1}):null}})})]}),ps=l.forwardRef((e,t)=>s.jsxs("div",{className:"h-full w-full",...e,ref:t,children:[kt,s.jsx("div",{className:"relative w-full h-full",children:e?.children})]})),Fs=l.forwardRef((e,t)=>s.jsx("div",{className:"h-full w-full",...e,ref:t,children:s.jsx("div",{className:"relative w-full h-full",children:e?.children})})),Ve=l.useMemo(()=>c?.renderTableHeader?c.renderTableHeader({tableKey:M,search:T?.search,handleSearch:T?.handleSearch,toggleShowFilters:xe,toggleShowSorts:Ce,filterCounts:a?.columnFilters?.length,columns:R,columnFilters:a?.columnFilters,setSelectedTableView:H,selectedTableView:p,enableTableView:i?.showTableView,modelName:G,enableMasterDataEnumSuggestions:X,onRemoveFilter:a?.onRemoveFilter,onClearFilter:a?.onClearFilter,onFilter:a?.onFilter,data:Q??f,tableHeaders:S,showTableViewAsModal:i?.showTableViewAsModal,additionalOptions:i?.additionalOptions,inlineActions:i?.inlineActions,showFilters:i?.showFilters,showSorts:i?.showSorts,showSearch:i?.showSearch,isLoading:!!i?.isLoading,setTableHeaders:Ee,allowAStarSearch:!!T?.allowAStarSearch,withContent:!!i?.content,setShowFilters:je,sort:m?.columnSort,onSort:m?.onSort,onRemoveSort:ge,showExportButton:i?.showExportButton,onExportClick:i?.onExportClick,agreementId:Y,enumSuggestionsExtraParams:Z}):null,[M,T?.search,T?.handleSearch,xe,Ce,a?.columnFilters,R,H,p,i,G,a?.onRemoveFilter,a?.onClearFilter,a?.onFilter,f,Q,S,m?.columnSort,m?.onSort,ge,c,T?.allowAStarSearch,X,Y,Z]);return l.useEffect(()=>{Fe&&Fe(Ve)},[Ve,Fe]),s.jsxs(Ds.TableContext.Provider,{value:{tableWrapper:ps,tableBodyWrapper:Fs,lastNonStickyColumnIndex:xs,search:T?.search,columnFilters:a?.columnFilters,onRowClick:gt,onSort:m?.onSort,onFilter:a?.onFilter,toggleShowFilters:xe,toggleShowSorts:Ce,onRemoveFilter:a?.onRemoveFilter,onClearFilter:a?.onClearFilter,rowOptions:q,checkboxConfig:Ot,onResetFilter:a?.onResetFilter,isColumnConfigurable:ee,onAddColumnClick:te,onEditColumnClick:ze,onDeleteColumnClick:Ue,onRowTooltipClick:Pt,tooltiptext:qt,cascadingTableConfig:Wt,activeInlineEdit:gl,setActiveInlineEdit:V,originalsOnly:Ht,disableOptionsForRowIndex:$t,getFullRowDataOnClick:zt,selectedRowId:Ut,getSumOfNextVisibleColumnWidth:vs,onRowEdit:D,inlineEditColumns:Jt,tableActions:Pe,dndSortableUtils:re,withSortable:be,withDraggable:Xt,onCascadingRowExpand:Qt,getInnerRowData:Kt,tableHeaders:S,maxLevel:el,expandedRows:tl,setExpandedRows:ll,showNewItem:sl,rawData:Xe,dragConfig:rl,rowWrapper:ol,rowLinkConfig:cl,isCellClickDisabled:il,asyncRowOptionsFilter:a?.asyncRowOptionsFilter,handleUpdateColumnWidth:Ss,isTableViewReadOnly:N,multiSelectConfig:dl,cellContextMenuConfig:Ye,openCellContextMenu:Yl,closeCellContextMenu:pt,headerContextOptions:hl,showHeaderContextOptions:ml,setShowHeaderContextOptions:fl,headerDivWidth:O,showDataTypeIcon:xl,rowAdditionalActions:ne,hoverConfig:Lt,rowAdditionalActionsWidth:Te,cellEditing:vl,cellEditingValue:Sl,openMasterDataModal:Ul,closeMasterDataModal:he,selectedMasterData:Cl,clearSelectedMasterData:Gl,allowInlineEdit:bl,openCurrencyDropdown:Xl,closeCurrencyDropdown:wt,currencyDropdownConfig:ct,selectedCurrenciesMap:_e,setCurrencyForCell:Zl,getCurrencyForCell:Ql,pendingEdits:d,addPendingEdit:Le,removePendingEdit:Bl,getPendingEdit:Pl,hasPendingEdit:ql,clearAllPendingEdits:St,saveAllPendingEdits:bt,clearRowPendingEdits:Wl,saveRowPendingEdits:Hl,pendingEditsCount:P,scrollToCell:B,onFieldOperationFlow:wl,fieldOperationLoading:g,validateAllPendingEdits:U},children:[Se?s.jsxs("div",{ref:Ne,className:`mb-2 flex w-full min-w-0 gap-2 justify-end dark:bg-black-800 ${O<h.TOOLBAR_FIRST_BREAKPOINT?"flex-col items-stretch":"flex-row flex-wrap items-center"}`,children:[s.jsxs("div",{className:`flex items-center gap-x-2 gap-y-1 ${O<h.TOOLBAR_FIRST_BREAKPOINT?"w-full flex-wrap":""} ${i?.content?"min-w-0 flex-1":"shrink-0"}`,children:[i?.content?s.jsx("div",{className:`min-w-0 ${O<h.TOOLBAR_FIRST_BREAKPOINT?"w-full":"flex-1"}`,children:i.content}):null,we?s.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[s.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"text-neutral-500 dark:text-neutral-400 flex-shrink-0","aria-hidden":!0,children:[s.jsx("ellipse",{cx:"12",cy:"5",rx:"9",ry:"3"}),s.jsx("path",{d:"M3 5v4c0 1.66 4.03 3 9 3s9-1.34 9-3V5"}),s.jsx("path",{d:"M3 9v4c0 1.66 4.03 3 9 3s9-1.34 9-3V9"}),s.jsx("path",{d:"M3 13v4c0 1.66 4.03 3 9 3s9-1.34 9-3v-4"})]}),s.jsx(ve.Typography,{size:"small",variant:"semibold",appearance:"title",children:(Ge??f.length).toLocaleString()}),s.jsx(ve.Typography,{size:"small",variant:"regular",appearance:"subtitle",children:"total records"})]}):i?.preContent?s.jsx("div",{className:"flex min-w-0 shrink-0 justify-start items-center",children:i.preContent}):null]}),s.jsxs("div",{className:`flex min-w-0 items-center justify-end ${O<h.TOOLBAR_FIRST_BREAKPOINT?"w-full":i?.content?"shrink-0":"flex-1"} ${O<h.TOOLBAR_SECOND_BREAKPOINT?"flex-col":"flex-row flex-wrap"} ${i?.postContent?"gap-2":""}`,children:[we&&i?.preContent?s.jsx("div",{className:"flex w-full justify-start items-center",children:i.preContent}):null,s.jsx("div",{className:`flex justify-end items-center min-w-0 ${O<h.TOOLBAR_SECOND_BREAKPOINT||O<h.TOOLBAR_FIRST_BREAKPOINT?"w-full":""}`,children:Ve}),i?.postContent?s.jsx("div",{className:`flex justify-end items-center ${O<h.TOOLBAR_SECOND_BREAKPOINT?"w-full":""}`,children:i.postContent}):null]})]}):null,i?.showDivider?s.jsx("div",{className:"border-b pb-2 w-full dark:bg-black-800"}):null,Ct&&(Oe||ke)?s.jsx("div",{className:"flex justify-between items-center pb-4 dark:bg-black-800",children:s.jsxs("div",{className:"flex gap-2 items-center",children:[ke&&c?.renderSortItem?c.renderSortItem({sort:m?.columnSort,onRemoveSort:ge,onSort:m?.onSort,tableHeaders:S,data:f,disabled:N}):null,Oe&&ke&&m?.columnSort?.field!==""?s.jsx("div",{className:"h-8 w-[1px] flex-shrink-0 bg-neutral-200"}):null,Oe?s.jsxs("div",{className:"flex gap-2 items-center",children:[(Qe||a?.onResetFilter)&&c?.renderActiveFilters&&c.renderActiveFilters({filters:a?.columnFilters,onRemoveFilter:bs,onClearFilter:ws,onResetFilter:a?.onResetFilter,onFilter:a?.onFilter,tableHeaders:S,columnFilters:a?.columnFilters,modelName:G,enableMasterDataEnumSuggestions:X,noSpacing:!0,notionStyle:a?.notionStyle,context:a?.context,data:Q??f,agreementId:Y,enumSuggestionsExtraParams:Z,disabled:N}),c?.renderFilterButtons&&c.renderFilterButtons({onClearFilter:a?.onClearFilter,onClose:fs,modelName:G,enableMasterDataEnumSuggestions:X,defaultFilterColumn:yl,resetDefaultFilterColumn:()=>et(null),column:jl,onFilter:a?.onFilter,tableHeaders:S,columnFilters:a?.columnFilters,data:Q??f,notionStyle:a?.notionStyle,context:a?.context,agreementId:Y,enumSuggestionsExtraParams:Z,disabled:N})]}):null]})}):null,pe&&Object.keys(pe).length?s.jsx(Rs.FloatingBar,{...pe}):null,!Se&&we?s.jsxs("div",{className:"flex items-center gap-1.5 mb-2",children:[s.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"text-neutral-500 dark:text-neutral-400 flex-shrink-0","aria-hidden":!0,children:[s.jsx("ellipse",{cx:"12",cy:"5",rx:"9",ry:"3"}),s.jsx("path",{d:"M3 5v4c0 1.66 4.03 3 9 3s9-1.34 9-3V5"}),s.jsx("path",{d:"M3 9v4c0 1.66 4.03 3 9 3s9-1.34 9-3V9"}),s.jsx("path",{d:"M3 13v4c0 1.66 4.03 3 9 3s9-1.34 9-3v-4"})]}),s.jsx(ve.Typography,{size:"small",variant:"semibold",appearance:"title",children:(Ge??f.length).toLocaleString()}),s.jsx(ve.Typography,{size:"small",variant:"regular",appearance:"subtitle",children:"total records"})]}):!Se&&i?.preContent?s.jsx("div",{className:"flex items-center mb-2",children:i.preContent}):null,s.jsx("div",{ref:Ae,className:`w-full ${se?"h-auto":le} rounded-lg relative border overflow-x-hidden`,style:{...se?{height:f?.length>0?`${(f?.length+1)*pl+4}px`:"350px"}:{height:Kl},...al},children:Yt?Et:s.jsxs(E.DndContext,{sensors:os,onDragEnd:ds,onDragStart:us,onDragCancel:hs,collisionDetection:E.closestCorners,children:[Et,$?js.createPortal(s.jsx(E.DragOverlay,{adjustScale:!0,dropAnimation:cs,children:s.jsx("table",{...Tt(),className:"w-full text-sm text-left text-neutral-500 dark:text-neutral-200 bg-white dark:bg-black-700 table-auto border-collapse",children:s.jsxs("tbody",{...yt(),className:"bg-transparent divide-y divide-neutral-200",children:[void Rt($),s.jsx(Es.Row,{row:$,index:A?.findIndex(e=>e.id===$.original.id)},$.original.id)]})})}),document.getElementById("full-screen-container")||document.body):null]})}),se&&c?.renderPagination?c.renderPagination(se):null,c?.renderMasterDataModal&&c.renderMasterDataModal({isVisible:!!j,onSelected:Jl,onClose:he,masterDataColumnName:j?.masterDataColumnName,masterDataFormula:j?.masterDataFormula,masterDataFilters:j?.masterDataFilters,masterDataName:j?.masterDataName,masterDataId:j?.masterDataName,showFilters:!0}),s.jsx(As.CurrencyDropdownPortal,{config:ct,onClose:wt}),s.jsx(Ns.CellContextMenuPortal,{state:Vl,config:Ye,onClose:pt}),s.jsx(Ms.PendingEditsFloatingBar,{pendingEditsCount:P,pendingEditsList:$l,rowsWithPendingEdits:zl,fieldOperationLoading:g,onClearAll:St,onSaveAll:bt,onScrollToCell:B})]})});exports.InfiniteTable=Bs;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),Ts=require("../../../hooks/useCheckbox.cjs.js"),ys=require("../../../providers/design-system-provider/hooks.cjs.js"),Pe=require("../../../utils/table.cjs.js"),Nt=require("../../button/Button.cjs.js"),Rs=require("../../floating-bar/FloatingBar.cjs.js"),ve=require("../typography/Typography.cjs.js"),E=require("@dnd-kit/core"),l=require("react"),Os=require("react-virtualized-auto-sizer"),js=require("react-dom"),At=require("react-table"),ks=require("./body/index.cjs.js"),_t=require("./validateCell.cjs.js"),Es=require("./body/rows/row.cjs.js"),Ds=require("./context.cjs.js"),Ns=require("./CellContextMenuPortal.cjs.js"),As=require("./CurrencyDropdownPortal.cjs.js"),_s=require("./head/index.cjs.js"),Is=require("./PendingEditsFloatingBar.cjs.js"),m=require("./constants.cjs.js"),It=require("./useRowHeight.cjs.js"),Ms=require("../empty-state/NoDataFoundWidgets.cjs.js"),Ls=require("../empty-state/NoDataFound.cjs.js"),gs=require("../../icon/icons.generated.cjs.js"),Cs=Os.AutoSizer,Mt="Create Column",Vs=(I,T)=>`button-admin-${I.toLowerCase().trim().replace(/\s+/g,"-").replace(/[^a-z0-9-_]/g,"")||T}`,Bs=l.memo(({tableKey:I,searchConfig:T={search:"",handleSearch:()=>null,allowAStarSearch:!1},filterConfig:a={columnFilters:[],onFilter:()=>null,onRemoveFilter:()=>null,onClearFilter:()=>null,onResetFilter:()=>Promise.resolve({}),asyncRowOptionsFilter:()=>Promise.resolve({})},sortConfig:f={onSort:()=>null,columnSort:{field:"",order:""},onRemoveSort:()=>null},headerConfig:i={showExportButton:null,showFilters:!0,showSorts:!0,showSearch:!0,showTableView:!0,showTableViewAsModal:!1,content:null,postContent:null,preContent:null,isLoading:!1,showDivider:!1},hoverConfig:Lt=null,columns:R,modelName:G,enableMasterDataEnumSuggestions:X=!1,agreementId:Y,enumSuggestionsExtraParams:Z,enumSuggestionsData:Q,data:d=[],onRowClick:gt,showHeader:we,showSubHeader:Ct=!0,tableActions:qe,rowOptions:M,hideRowOptionWidth:We,checkboxUtilities:L,isLoading:K=!1,onScroll:Vt,onScrolling:Bt,isColumnConfigurable:ee,onAddColumnClick:te,emptyMessage:He,noDataWidget:$e,buttons:ze,onEditColumnClick:Ue,onDeleteColumnClick:Je,onRowTooltipClick:Pt,tooltiptext:qt,cascadingTableConfig:Wt,originalsOnly:Ht,disableOptionsForRowIndex:$t,tableHeightClass:le="h-[calc(100vh-220px)]",getFullRowDataOnClick:zt,selectedRowId:Ut=null,onRowEdit:D,onBulkRowEdit:g,inlineEditColumns:Jt,isResizable:Gt=!0,paginationConfig:se,dndSortableUtils:re,multipleContexts:Ge,withSortable:Se,withDraggable:Xt,enableRootDrag:Yt,pageSize:Zt=m.DEFAULT_PAGE_SIZE,onCascadingRowExpand:Qt,totalItems:Xe,showRecordCount:be=!1,getInnerRowData:Kt,maxLevel:el,expandedRows:tl={},setExpandedRows:ll,showNewItem:sl,rawData:Ye,dragConfig:rl,isOverlayLoading:nl,style:al={},floatingBarConfig:pe,rowWrapper:ol,rowLinkConfig:cl,isCellClickDisabled:il,setHeaderOnParent:Fe,optimizeTable:ul=!1,multiSelectConfig:dl,cellContextMenuConfig:Ze,headerContextOptions:hl,showHeaderContextOptions:ml,setShowHeaderContextOptions:fl,showDataTypeIcon:xl=!1,rowAdditionalActions:ne,rowAdditionalActionsWidth:Te,setVisibleHeaders:ye,cellEditing:vl=null,cellEditingValue:wl=null,allowInlineEdit:Sl=!1,onFieldOperationFlow:bl,fieldOperationLoading:C=null,onTableActionsReady:Re,onPendingEditsChange:Qe,onCancelPendingEdits:V})=>{const c=ys.useTableConfig(),pl=It.getRowSlotHeight(It.useRowHeight()),Fl=!!T?.search,Ke=a?.columnFilters?.length>0,W=Fl||Ke,Tl=!!L,y=c?.getTableView?.(I)??null,[p,H]=l.useState(y||null),N=!Pe.canEditTableView(p,c?.getUserId?.()),[Oe,je]=l.useState(!1),[ke,et]=l.useState(!1),[yl,tt]=l.useState(null),[v,Ee]=l.useState(R),lt=(d.length===0||!v.length)&&!K,[st,ae]=l.useState(null),[Rl,Ol]=l.useState(!1),[jl,kl]=l.useState(null),[El,Dl]=l.useState(!1),[Nl,oe]=l.useState(null),[Al,ce]=l.useState(null),[_l,rt]=l.useState({}),[$,De]=l.useState(null),[Il,nt]=l.useState(!1),[O,Ml]=l.useState(0),Ne=l.useRef(null),Ae=l.useRef(null),[at,Ll]=l.useState({width:0,height:0}),[gl,B]=l.useState(null),[j,ot]=l.useState(null),[Cl,ct]=l.useState(null),[it,ut]=l.useState(null),[Vl,dt]=l.useState(null),[_e,z]=l.useState({}),Ie=l.useRef(!1),ie=l.useRef(!1),Me=l.useRef(p);Me.current=p;const ht=l.useRef(c);ht.current=c;const mt=l.useRef(R);mt.current=R;const ue=l.useRef(a);ue.current=a;const ft=l.useRef(null),xt=l.useRef(()=>({})),vt=l.useRef(()=>({})),[h,k]=l.useState({}),Le=l.useCallback((e,t,r)=>{k(n=>{const o=n[e]?.[t];let u=r.validationError;if(u===void 0){const S=v.find(x=>x.key===t);if(S){const x=_t.validateCellValue(r.value,S);u=x.isValid?null:x.error||"Invalid"}else u=o?.validationError??null}return{...n,[e]:{...n[e]||{},[t]:{...r,validationError:u??null}}}})},[v]),wt=l.useCallback(()=>Object.values(h).some(e=>Object.keys(e).length>0),[h]);l.useEffect(()=>{Re&&Re({addPendingEdit:Le,hasPendingEdits:wt})},[Re,Le,wt]);const Bl=l.useCallback((e,t)=>{k(r=>{const n={...r};if(n[e]){const{[t]:o,...u}=n[e];Object.keys(u).length===0?delete n[e]:n[e]=u}return n})},[]),Pl=l.useCallback((e,t)=>h[e]?.[t],[h]),ql=l.useCallback((e,t)=>!!h[e]?.[t],[h]),St=l.useCallback(()=>{C||(V&&Object.keys(h).length>0&&V(h),k({}),z({}),B(null))},[C,V,h]),P=l.useCallback((e,t,r)=>{setTimeout(()=>{c?.dispatchEvent?.("SCROLL_TO_TABLE_ROW",{rowIndex:r});const n=v.findIndex(o=>o.key===t);setTimeout(()=>{const o=document.querySelector(`[${m.DATA_ROW_ID_ATTR}="${e}"] [${m.DATA_COLUMN_KEY_ATTR}="${t}"]`);if(o)o.scrollIntoView({behavior:"smooth",block:"center",inline:"center"});else if(n>0){const u=document.querySelector(m.OS_VIEWPORT_SELECTOR);if(u){let S=0;for(let x=0;x<n;x++){const F=v[x];F?.sticky||(S+=F?.width||m.SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK)}S=Math.max(0,S-m.SCROLL_TO_CELL_LEFT_OFFSET),u.scrollTo({left:S,behavior:"smooth"})}}B({rowId:e,columnKey:t})},350)},100)},[v,c]),U=l.useCallback(e=>{let t=!1,r=null;const n={},o=new Set;return Object.entries(e).forEach(([u,S])=>{n[u]={},Object.entries(S).forEach(([x,F])=>{const _=v.find(b=>b.key===x),w=_t.validateCellValue(F.value,_);w.isValid?n[u][x]={...F,validationError:null}:(t=!0,w.error&&o.add(w.error),r||(r={rowId:u,columnKey:x}),n[u][x]={...F,validationError:w.error})})}),{hasErrors:t,updatedEdits:n,firstError:r,errorTypes:o}},[v]),de=l.useCallback(e=>{const t=e.has("Field required"),r=e.size>(t?1:0);return t&&r?"Missing required field(s) and invalid format detected. Please review highlighted field(s).":t?"Missing required field(s). Please review highlighted field(s).":"Invalid field value(s). Please review highlighted field(s)."},[]),bt=l.useCallback(()=>{const{hasErrors:e,updatedEdits:t,firstError:r,errorTypes:n}=U(h);if(e){if(k(t),c?.showNotification?.("error",de(n)),r){const u=d.findIndex(S=>S.id===r.rowId);P(r.rowId,r.columnKey,u)}return}const o=[];Object.entries(h).forEach(([u,S])=>{const x=d.find(F=>F.id===u);if(x){const F={...x},_={};Object.entries(S).forEach(([w,b])=>{F[w]=b.value,_[w]={value:b.value,meta:b.meta}}),o.push({...F,__editedFields:_})}}),o.length>0&&(g?g(o):D&&D(null,null,null,null,null,{isBulk:!0,rows:o})),k({}),z({}),B(null)},[h,d,D,g,U,de,P,c]),Wl=l.useCallback(e=>{if(C)return;const t=h[e];t&&V&&V({[e]:t}),k(r=>{const n={...r};return delete n[e],n}),z(r=>{const n={...r};return Object.keys(n).forEach(o=>{o.startsWith(`${e}-`)&&delete n[o]}),n}),B(null)},[C,V,h]),Hl=l.useCallback(e=>{const t=h[e];if(!t||Object.keys(t).length===0)return;const{hasErrors:r,updatedEdits:n,firstError:o,errorTypes:u}=U({[e]:t});if(r){if(k(w=>({...w,[e]:n[e]})),c?.showNotification?.("error",de(u)),o){const w=d.findIndex(b=>b.id===o.rowId);P(o.rowId,o.columnKey,w)}return}const S=d.find(w=>w.id===e);if(!S)return;const x={...S},F={};Object.entries(t).forEach(([w,b])=>{x[w]=b.value,F[w]={value:b.value,meta:b.meta}});const _={...x,__editedFields:F};g?g([_]):D&&D(null,null,null,null,null,{isBulk:!0,rows:[_]}),k(w=>{const b={...w};return delete b[e],b}),z(w=>{const b={...w};return Object.keys(b).forEach(Dt=>{Dt.startsWith(`${e}-`)&&delete b[Dt]}),b}),B(null)},[h,d,D,g,U,de,P,c]),q=l.useMemo(()=>Object.values(h).reduce((e,t)=>e+Object.keys(t).length,0),[h]);l.useEffect(()=>{Qe?.(q>0,q)},[q,Qe]);const $l=l.useMemo(()=>{const e=[];return Object.entries(h).forEach(([t,r])=>{const n=d.findIndex(o=>o.id===t);Object.entries(r).forEach(([o,u])=>{const S=v.find(x=>x.key===o);e.push({rowId:t,columnKey:o,fieldName:S?.Header||S?.display_name||o,value:u.value,originalValue:u.originalValue,meta:u.meta,originalMeta:u.originalMeta,rowIndex:n})})}),e},[h,v,d]),zl=l.useMemo(()=>{const e=new Map;return Object.entries(h).forEach(([t,r])=>{const n=d.findIndex(o=>o.id===t);e.set(t,{rowId:t,rowIndex:n,editCount:Object.keys(r).length})}),Array.from(e.values()).sort((t,r)=>t.rowIndex-r.rowIndex)},[h,d]),Ul=l.useCallback(e=>ot(e),[]),he=l.useCallback(()=>ot(null),[]),Jl=l.useCallback((e,t)=>{ct({value:e,reference:t}),j?.onSelected&&j.onSelected(e,t),he()},[j,he]),Gl=l.useCallback(()=>ct(null),[]),Xl=l.useCallback(e=>ut(e),[]),pt=l.useCallback(()=>ut(null),[]),Yl=l.useCallback(e=>dt(e),[]),Ft=l.useCallback(()=>dt(null),[]),Zl=l.useCallback((e,t)=>{z(r=>({...r,[e]:t}))},[]),Ql=l.useCallback(e=>_e[e],[_e]),Kl=l.useMemo(()=>{const e=le.match(/h-\[(\d+px)\]/);if(e)return e[1];const t=le.match(/h-\[(calc\(.+\))\]/);if(t)return t[1].replace(/([+-])/g," $1 ").replace(/\s+/g," ")},[le]),es={isEmpty:lt,isFilters:W,isColumnConfigurable:ee,handleOnClick:te,emptyMessage:He,buttons:ze,noDataWidget:$e},ts=c?.t?.(Mt)??Mt,me=W?"No Results Found":He||"No Data Found",ls=typeof me=="string"?c?.t?.(me)??me:me,Tt={__isLoading:!0},ss=new Array(1).fill(Tt),rs=new Array(Zt).fill(Tt),J=l.useMemo(()=>v.filter(e=>!!e?.visible),[v]),ns=At.useTable({columns:ul?J:v,data:[...d,...K?d?.length?ss:rs:[]],defaultColumn:{minWidth:m.DEFAULT_COLUMN_MIN_WIDTH,width:m.DEFAULT_COLUMN_WIDTH,maxWidth:m.DEFAULT_COLUMN_MAX_WIDTH}},At.useResizeColumns),{getTableProps:yt,getTableBodyProps:Rt,headerGroups:fe,prepareRow:Ot,rows:A}=ns;ft.current=fe;const as=JSON.stringify(fe[0]?.headers?.map(e=>e?.Header));l.useEffect(()=>{if(ye){const e=ft.current;ye?.(e?.[0]?.headers?.map(t=>t?.Header)??[])}},[as,ye]);const{checkboxConfig:ge}=Ts.useCheckbox({rows:A,checkedIds:L?.checkedIds,isCheckAllDisabled:L?.isCheckAllDisabled,selectionDisabledRowIds:L?.selectionDisabledRowIds,rawData:Ye,onAllChecked:Dl,setCheckedIds:L?.setCheckedIds,checkboxMetadata:L?.checkboxMetadata}),os=E.useSensors(E.useSensor(E.MouseSensor,{activationConstraint:{distance:m.DND_ACTIVATION_DISTANCE}}),E.useSensor(E.TouchSensor,{activationConstraint:{distance:m.DND_ACTIVATION_DISTANCE}})),cs={easing:m.DROP_ANIMATION_EASING,duration:m.DROP_ANIMATION_DURATION};function is(){return!Ge?.length||!Se?A:Ge.reduce((e,t)=>(e[t]=A.filter(r=>r.original?.type===t),e),{})}vt.current=is;const us=e=>{const{active:t}=e;De(A.find(r=>r.original?.id===t?.id)??null)},ds=e=>{const{active:t,over:r}=e;r&&(re?.checkDndDragEnd&&re.checkDndDragEnd(t,r,_l,n=>{rt(n),nt(!0),re.onDragSuccess?.({draggedId:t.id,droppedId:r.id,draggedType:t.data.current?.type,droppedType:r.data.current?.type,updatedList:n,cb:()=>nt(!1)})}),De(null))},hs=()=>De(null),ms=e=>{!f?.onSort&&!a?.onFilter||ae(st===e?null:e)},fs=e=>{kl(e),Ol(!Rl),ae(null)},Ce=l.useCallback(()=>{f?.onRemoveSort?f.onRemoveSort():f?.onSort&&f.onSort("","")},[f]),xe=l.useCallback((e=null)=>{tt(e),je(t=>e?!0:!t)},[]),Ve=l.useCallback(()=>et(e=>!e),[]),xs=()=>{const e=fe[0]?.headers?.filter(t=>t?.visible!==!1);for(let t=0;t<e.length;t++)if(e[t].sticky)return t-1;return e.length-1},vs=l.useCallback(e=>{let t=0;for(let r=e+1;r<J.length;r++)J[r].visible!==!1&&(t+=J[r].width??0);return ne&&(t+=Te||m.ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH),M&&(t+=We?0:m.ROW_OPTIONS_COLUMN_WIDTH),t},[J,Te,We,ne,M]),jt=()=>{const e=c?.getUserId?.();return{...p||{},name:p?.name||"Untitled View",created_by:p?.created_by||e,filters:p?.filters||a?.columnFilters,id:p?.id||"untitled-view",table_key:p?.table_key||I,columns:p?.columns||R?.map((t,r)=>({name:t.Header,width:t.width,visible:t.visible,sticky:t.sticky,order:r+1,display_name:t.Header,sequence:r+1,Header:t.Header}))}};xt.current=jt;const ws=(e,t)=>{const r=jt();H({...r,columns:r?.columns?.map(n=>n.name===e?{...n,width:t}:n),unsaved:N?r?.unsaved:!0})};l.useEffect(()=>{if(a?.columnFilters?.length>0&&je(!0),N)return;const e=Me.current;if(JSON.stringify(e?.filters||[])!==JSON.stringify(a?.columnFilters||[])){const t=(e?.filters?.length??0)>0,r=a?.columnFilters?.length>0;if(!(t&&!r&&!ie.current)){const o=xt.current();H({...o,filters:JSON.parse(JSON.stringify(a?.columnFilters||[])),unsaved:!0})}ie.current=!1}},[a?.columnFilters,N]);const Ss=l.useCallback(e=>{ie.current=!0,a?.onRemoveFilter?.(e)},[a?.onRemoveFilter]),bs=l.useCallback(()=>{ie.current=!0,a?.onClearFilter?.()},[a?.onClearFilter]);l.useEffect(()=>{f?.columnSort?.field?(et(!0),f.columnSort.order==="asc"?(oe(f.columnSort.field),ce(null)):f.columnSort.order==="desc"&&(ce(f.columnSort.field),oe(null))):(oe(null),ce(null))},[f?.columnSort?.field,f?.columnSort?.order]),l.useEffect(()=>{Ee(Pe.mergeViewColumnsWithTableColumns(Me.current?.columns||[],R))},[R]),l.useEffect(()=>{p?.unsaved&&ht.current?.persistTableView?.(p)},[p]),l.useEffect(()=>{rt(vt.current())},[A.length]),l.useEffect(()=>{H(y||null),y?.columns&&Ee(Pe.mergeViewColumnsWithTableColumns(y?.columns||[],mt.current)),y?.filters&&y.filters.length>0&&!Ie.current?(requestAnimationFrame(()=>{ue.current?.onFilter?.(y.filters)}),Ie.current=!0):y?.filters&&Ie.current&&JSON.stringify(y.filters)!==JSON.stringify(ue.current?.columnFilters)&&ue.current?.onFilter?.(y.filters)},[y]),l.useEffect(()=>{if(Ne.current){const e=new ResizeObserver(t=>Ml(t[0].contentRect.width));return e.observe(Ne.current),()=>e.disconnect()}},[]),l.useEffect(()=>{if(!Ae.current)return;const e=new ResizeObserver(t=>{const{width:r,height:n}=t[0].contentRect;Ll({width:r,height:n})});return e.observe(Ae.current),()=>e.disconnect()},[]);const kt=s.jsx(_s.Head,{isResizable:Gt,headerGroups:fe,isCheckbox:Tl,checkboxConfig:ge,isAllChecked:El,showHeaderOptions:st??"",setShowHeaderOptions:ae,isShowSortArrowAsc:Nl,isShowSortArrowDesc:Al,onSort:f?.onSort,onFilter:a?.onFilter,toggleHeaderOption:ms,setIsShowSortArrowAsc:oe,setIsShowSortArrowDesc:ce,toggleDataFilterModal:xe,rowOptions:Array.isArray(M)?M:[],isColumnConfigurable:ee??!1,onAddColumnClick:te,onEditColumnClick:Ue,onDeleteColumnClick:Je,tableActions:qe||null,isLoading:K,rowAdditionalActions:ne??null,showPendingEditsColumn:q>0}),Et=s.jsxs(s.Fragment,{children:[Il||nl?s.jsx("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"}):null,s.jsx("div",{...yt(),className:"w-full text-sm text-left text-neutral-500 dark:text-neutral-200 h-full bg-white dark:bg-black-800",children:lt?s.jsxs("div",{className:"z-10",children:[kt,s.jsx("div",{className:"absolute w-full",children:c?.renderEmpty?c.renderEmpty(es):s.jsxs("div",{className:"flex flex-col items-center justify-center w-full h-[12rem] text-neutral-900 dark:text-neutral-200 mt-8",children:[$e&&!W?s.jsx(Ms.NoDataFoundWidgets,{widgetType:"TABLE"}):s.jsx(Ls.NoDataFound,{text:ls}),ee&&!W?s.jsx("div",{className:"my-4",children:s.jsxs(Nt,{id:"btn-table-shell-create-column",status:"primary",appearance:"ghost",onClick:te,children:[s.jsx(gs.Add2Icon,{className:"text-white dark:text-white"})," ",ts]})}):null,!W&&ze?.map((e,t)=>s.jsx(Nt,{status:"secondary",id:Vs(e.label,t),onClick:e.onClick,children:c?.t?.(e.label)??e.label},`${e.label}-${t}`))]})})]}):s.jsx(Cs,{style:{width:"100%",height:"100%"},renderProp:({width:e,height:t})=>{const r=e>0?e:at.width,n=t>0?t:at.height;return r>0&&n>0?s.jsx(ks.Body,{getTableBodyProps:Rt,rows:A,prepareRow:Ot,isLoading:K,onScroll:Vt,onScrolling:Bt,columns:R,width:r,height:n,withSortable:Se,allowAstarSearch:T?.allowAStarSearch||!1}):null}})})]}),ps=l.forwardRef((e,t)=>s.jsxs("div",{className:"h-full w-full",...e,ref:t,children:[kt,s.jsx("div",{className:"relative w-full h-full",children:e?.children})]})),Fs=l.forwardRef((e,t)=>s.jsx("div",{className:"h-full w-full",...e,ref:t,children:s.jsx("div",{className:"relative w-full h-full",children:e?.children})})),Be=l.useMemo(()=>c?.renderTableHeader?c.renderTableHeader({tableKey:I,search:T?.search,handleSearch:T?.handleSearch,toggleShowFilters:xe,toggleShowSorts:Ve,filterCounts:a?.columnFilters?.length,columns:R,columnFilters:a?.columnFilters,setSelectedTableView:H,selectedTableView:p,enableTableView:i?.showTableView,modelName:G,enableMasterDataEnumSuggestions:X,onRemoveFilter:a?.onRemoveFilter,onClearFilter:a?.onClearFilter,onFilter:a?.onFilter,data:Q??d,tableHeaders:v,showTableViewAsModal:i?.showTableViewAsModal,additionalOptions:i?.additionalOptions,inlineActions:i?.inlineActions,showFilters:i?.showFilters,showSorts:i?.showSorts,showSearch:i?.showSearch,isLoading:!!i?.isLoading,setTableHeaders:Ee,allowAStarSearch:!!T?.allowAStarSearch,withContent:!!i?.content,setShowFilters:je,sort:f?.columnSort,onSort:f?.onSort,onRemoveSort:Ce,showExportButton:i?.showExportButton,onExportClick:i?.onExportClick,agreementId:Y,enumSuggestionsExtraParams:Z}):null,[I,T?.search,T?.handleSearch,xe,Ve,a?.columnFilters,R,H,p,i,G,a?.onRemoveFilter,a?.onClearFilter,a?.onFilter,d,Q,v,f?.columnSort,f?.onSort,Ce,c,T?.allowAStarSearch,X,Y,Z]);return l.useEffect(()=>{Fe&&Fe(Be)},[Be,Fe]),s.jsxs(Ds.TableContext.Provider,{value:{tableWrapper:ps,tableBodyWrapper:Fs,lastNonStickyColumnIndex:xs,search:T?.search,columnFilters:a?.columnFilters,onRowClick:gt,onSort:f?.onSort,onFilter:a?.onFilter,toggleShowFilters:xe,toggleShowSorts:Ve,onRemoveFilter:a?.onRemoveFilter,onClearFilter:a?.onClearFilter,rowOptions:M,checkboxConfig:ge,onResetFilter:a?.onResetFilter,isColumnConfigurable:ee,onAddColumnClick:te,onEditColumnClick:Ue,onDeleteColumnClick:Je,onRowTooltipClick:Pt,tooltiptext:qt,cascadingTableConfig:Wt,activeInlineEdit:gl,setActiveInlineEdit:B,originalsOnly:Ht,disableOptionsForRowIndex:$t,getFullRowDataOnClick:zt,selectedRowId:Ut,getSumOfNextVisibleColumnWidth:vs,onRowEdit:D,inlineEditColumns:Jt,tableActions:qe,dndSortableUtils:re,withSortable:Se,withDraggable:Xt,onCascadingRowExpand:Qt,getInnerRowData:Kt,tableHeaders:v,maxLevel:el,expandedRows:tl,setExpandedRows:ll,showNewItem:sl,rawData:Ye,dragConfig:rl,rowWrapper:ol,rowLinkConfig:cl,isCellClickDisabled:il,asyncRowOptionsFilter:a?.asyncRowOptionsFilter,handleUpdateColumnWidth:ws,isTableViewReadOnly:N,multiSelectConfig:dl,cellContextMenuConfig:Ze,openCellContextMenu:Yl,closeCellContextMenu:Ft,headerContextOptions:hl,showHeaderContextOptions:ml,setShowHeaderContextOptions:fl,headerDivWidth:O,showDataTypeIcon:xl,rowAdditionalActions:ne,hoverConfig:Lt,rowAdditionalActionsWidth:Te,cellEditing:vl,cellEditingValue:wl,openMasterDataModal:Ul,closeMasterDataModal:he,selectedMasterData:Cl,clearSelectedMasterData:Gl,allowInlineEdit:Sl,openCurrencyDropdown:Xl,closeCurrencyDropdown:pt,currencyDropdownConfig:it,selectedCurrenciesMap:_e,setCurrencyForCell:Zl,getCurrencyForCell:Ql,pendingEdits:h,addPendingEdit:Le,removePendingEdit:Bl,getPendingEdit:Pl,hasPendingEdit:ql,clearAllPendingEdits:St,saveAllPendingEdits:bt,clearRowPendingEdits:Wl,saveRowPendingEdits:Hl,pendingEditsCount:q,scrollToCell:P,onFieldOperationFlow:bl,fieldOperationLoading:C,validateAllPendingEdits:U},children:[we?s.jsxs("div",{ref:Ne,className:`mb-2 flex w-full min-w-0 gap-2 justify-end dark:bg-black-800 ${O<m.TOOLBAR_FIRST_BREAKPOINT?"flex-col items-stretch":"flex-row flex-wrap items-center"}`,children:[s.jsxs("div",{className:`flex items-center gap-x-2 gap-y-1 ${O<m.TOOLBAR_FIRST_BREAKPOINT?"w-full flex-wrap":""} ${i?.content?"min-w-0 flex-1":"shrink-0"}`,children:[i?.content?s.jsx("div",{className:`min-w-0 ${O<m.TOOLBAR_FIRST_BREAKPOINT?"w-full":"flex-1"}`,children:i.content}):null,be?s.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[s.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"text-neutral-500 dark:text-neutral-400 flex-shrink-0","aria-hidden":!0,children:[s.jsx("ellipse",{cx:"12",cy:"5",rx:"9",ry:"3"}),s.jsx("path",{d:"M3 5v4c0 1.66 4.03 3 9 3s9-1.34 9-3V5"}),s.jsx("path",{d:"M3 9v4c0 1.66 4.03 3 9 3s9-1.34 9-3V9"}),s.jsx("path",{d:"M3 13v4c0 1.66 4.03 3 9 3s9-1.34 9-3v-4"})]}),s.jsx(ve.Typography,{size:"small",variant:"semibold",appearance:"title",children:(Xe??d.length).toLocaleString()}),s.jsx(ve.Typography,{size:"small",variant:"regular",appearance:"subtitle",children:"total records"})]}):i?.preContent?s.jsx("div",{className:"flex min-w-0 shrink-0 justify-start items-center",children:i.preContent}):null]}),s.jsxs("div",{className:`flex min-w-0 items-center justify-end ${O<m.TOOLBAR_FIRST_BREAKPOINT?"w-full":i?.content?"shrink-0":"flex-1"} ${O<m.TOOLBAR_SECOND_BREAKPOINT?"flex-col":"flex-row flex-wrap"} ${i?.postContent?"gap-2":""}`,children:[be&&i?.preContent?s.jsx("div",{className:"flex w-full justify-start items-center",children:i.preContent}):null,s.jsx("div",{className:`flex justify-end items-center min-w-0 ${O<m.TOOLBAR_SECOND_BREAKPOINT||O<m.TOOLBAR_FIRST_BREAKPOINT?"w-full":""}`,children:Be}),i?.postContent?s.jsx("div",{className:`flex justify-end items-center ${O<m.TOOLBAR_SECOND_BREAKPOINT?"w-full":""}`,children:i.postContent}):null]})]}):null,i?.showDivider?s.jsx("div",{className:"border-b pb-2 w-full dark:bg-black-800"}):null,Ct&&(Oe||ke)?s.jsx("div",{className:"flex justify-between items-center pb-4 dark:bg-black-800",children:s.jsxs("div",{className:"flex gap-2 items-center",children:[ke&&c?.renderSortItem?c.renderSortItem({sort:f?.columnSort,onRemoveSort:Ce,onSort:f?.onSort,tableHeaders:v,data:d,disabled:N}):null,Oe&&ke&&f?.columnSort?.field!==""?s.jsx("div",{className:"h-8 w-[1px] flex-shrink-0 bg-neutral-200"}):null,Oe?s.jsxs("div",{className:"flex gap-2 items-center",children:[(Ke||a?.onResetFilter)&&c?.renderActiveFilters&&c.renderActiveFilters({filters:a?.columnFilters,onRemoveFilter:Ss,onClearFilter:bs,onResetFilter:a?.onResetFilter,onFilter:a?.onFilter,tableHeaders:v,columnFilters:a?.columnFilters,modelName:G,enableMasterDataEnumSuggestions:X,noSpacing:!0,notionStyle:a?.notionStyle,context:a?.context,data:Q??d,agreementId:Y,enumSuggestionsExtraParams:Z,disabled:N}),c?.renderFilterButtons&&c.renderFilterButtons({onClearFilter:a?.onClearFilter,onClose:fs,modelName:G,enableMasterDataEnumSuggestions:X,defaultFilterColumn:yl,resetDefaultFilterColumn:()=>tt(null),column:jl,onFilter:a?.onFilter,tableHeaders:v,columnFilters:a?.columnFilters,data:Q??d,notionStyle:a?.notionStyle,context:a?.context,agreementId:Y,enumSuggestionsExtraParams:Z,disabled:N})]}):null]})}):null,pe&&Object.keys(pe).length?s.jsx(Rs.FloatingBar,{...pe}):null,!we&&be?s.jsxs("div",{className:"flex items-center gap-1.5 mb-2",children:[s.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"text-neutral-500 dark:text-neutral-400 flex-shrink-0","aria-hidden":!0,children:[s.jsx("ellipse",{cx:"12",cy:"5",rx:"9",ry:"3"}),s.jsx("path",{d:"M3 5v4c0 1.66 4.03 3 9 3s9-1.34 9-3V5"}),s.jsx("path",{d:"M3 9v4c0 1.66 4.03 3 9 3s9-1.34 9-3V9"}),s.jsx("path",{d:"M3 13v4c0 1.66 4.03 3 9 3s9-1.34 9-3v-4"})]}),s.jsx(ve.Typography,{size:"small",variant:"semibold",appearance:"title",children:(Xe??d.length).toLocaleString()}),s.jsx(ve.Typography,{size:"small",variant:"regular",appearance:"subtitle",children:"total records"})]}):!we&&i?.preContent?s.jsx("div",{className:"flex items-center mb-2",children:i.preContent}):null,s.jsx("div",{ref:Ae,className:`w-full ${se?"h-auto":le} rounded-lg relative border overflow-x-hidden`,style:{...se?{height:d?.length>0?`${(d?.length+1)*pl+4}px`:"350px"}:{height:Kl},...al},children:Yt?Et:s.jsxs(E.DndContext,{sensors:os,onDragEnd:ds,onDragStart:us,onDragCancel:hs,collisionDetection:E.closestCorners,children:[Et,$?js.createPortal(s.jsx(E.DragOverlay,{adjustScale:!0,dropAnimation:cs,children:s.jsx("table",{...yt(),className:"w-full text-sm text-left text-neutral-500 dark:text-neutral-200 bg-white dark:bg-black-700 table-auto border-collapse",children:s.jsxs("tbody",{...Rt(),className:"bg-transparent divide-y divide-neutral-200",children:[void Ot($),s.jsx(Es.Row,{row:$,index:A?.findIndex(e=>e.id===$.original.id)},$.original.id)]})})}),document.getElementById("full-screen-container")||document.body):null]})}),se&&c?.renderPagination?c.renderPagination(se):null,c?.renderMasterDataModal&&c.renderMasterDataModal({isVisible:!!j,onSelected:Jl,onClose:he,masterDataColumnName:j?.masterDataColumnName,masterDataFormula:j?.masterDataFormula,masterDataFilters:j?.masterDataFilters,masterDataName:j?.masterDataName,masterDataId:j?.masterDataName,showFilters:!0}),s.jsx(As.CurrencyDropdownPortal,{config:it,onClose:pt}),s.jsx(Ns.CellContextMenuPortal,{state:Vl,config:Ze,rowOptions:M,asyncRowOptionsFilter:a?.asyncRowOptionsFilter,checkedIds:ge?.checkedIds,rows:d,columns:v,onClose:Ft}),s.jsx(Is.PendingEditsFloatingBar,{pendingEditsCount:q,pendingEditsList:$l,rowsWithPendingEdits:zl,fieldOperationLoading:C,onClearAll:St,onSaveAll:bt,onScrollToCell:P})]})});exports.InfiniteTable=Bs;
2
2
  //# sourceMappingURL=index.cjs.js.map