@lax-wp/design-system 0.13.33 → 0.13.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/button/Button.cjs.js +5 -5
- package/dist/components/button/Button.cjs.js.map +1 -1
- package/dist/components/button/Button.es.js +18 -18
- package/dist/components/button/Button.es.js.map +1 -1
- package/dist/components/button/IconButton.cjs.js +1 -1
- package/dist/components/button/IconButton.cjs.js.map +1 -1
- package/dist/components/button/IconButton.es.js +8 -8
- package/dist/components/button/IconButton.es.js.map +1 -1
- package/dist/components/buttons/option-button/OptionButton.cjs.js +1 -1
- package/dist/components/buttons/option-button/OptionButton.cjs.js.map +1 -1
- package/dist/components/buttons/option-button/OptionButton.es.js +1 -1
- package/dist/components/buttons/option-button/OptionButton.es.js.map +1 -1
- package/dist/components/data-display/comparison/components/Header.cjs.js +1 -1
- package/dist/components/data-display/comparison/components/Header.cjs.js.map +1 -1
- package/dist/components/data-display/comparison/components/Header.es.js +13 -13
- package/dist/components/data-display/comparison/components/Header.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/DataCell.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/DataCell.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/DataCell.es.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/DataCell.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/rows/index.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/rows/index.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/rows/index.es.js +104 -101
- package/dist/components/data-display/infinite-table/body/rows/index.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/constants.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/constants.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/constants.d.ts +6 -0
- package/dist/components/data-display/infinite-table/constants.es.js +17 -16
- package/dist/components/data-display/infinite-table/constants.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/index.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/index.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/index.es.js +188 -187
- package/dist/components/data-display/infinite-table/index.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/useRowHeight.cjs.js +2 -0
- package/dist/components/data-display/infinite-table/useRowHeight.cjs.js.map +1 -0
- package/dist/components/data-display/infinite-table/useRowHeight.d.ts +15 -0
- package/dist/components/data-display/infinite-table/useRowHeight.es.js +24 -0
- package/dist/components/data-display/infinite-table/useRowHeight.es.js.map +1 -0
- package/dist/components/data-display/tag/Tag.cjs.js +1 -1
- package/dist/components/data-display/tag/Tag.cjs.js.map +1 -1
- package/dist/components/data-display/tag/Tag.es.js +11 -9
- package/dist/components/data-display/tag/Tag.es.js.map +1 -1
- package/dist/components/floating-bar/FloatingBar.cjs.js +1 -1
- package/dist/components/floating-bar/FloatingBar.cjs.js.map +1 -1
- package/dist/components/floating-bar/FloatingBar.es.js +9 -9
- package/dist/components/floating-bar/FloatingBar.es.js.map +1 -1
- package/dist/components/forms/base-input-field/BaseInputField.cjs.js +2 -2
- package/dist/components/forms/base-input-field/BaseInputField.cjs.js.map +1 -1
- package/dist/components/forms/base-input-field/BaseInputField.es.js +40 -42
- package/dist/components/forms/base-input-field/BaseInputField.es.js.map +1 -1
- package/dist/components/forms/creatable-select/CreatableSelect.cjs.js +1 -1
- package/dist/components/forms/creatable-select/CreatableSelect.cjs.js.map +1 -1
- package/dist/components/forms/creatable-select/CreatableSelect.es.js +14 -15
- package/dist/components/forms/creatable-select/CreatableSelect.es.js.map +1 -1
- package/dist/components/forms/currency-input/CurrencyInputField.cjs.js +1 -1
- package/dist/components/forms/currency-input/CurrencyInputField.cjs.js.map +1 -1
- package/dist/components/forms/currency-input/CurrencyInputField.es.js +57 -65
- package/dist/components/forms/currency-input/CurrencyInputField.es.js.map +1 -1
- package/dist/components/forms/date-time-field/DateTimeField.cjs.js +1 -1
- package/dist/components/forms/date-time-field/DateTimeField.cjs.js.map +1 -1
- package/dist/components/forms/date-time-field/DateTimeField.es.js +33 -33
- package/dist/components/forms/date-time-field/DateTimeField.es.js.map +1 -1
- package/dist/components/forms/debounce-input/DebounceInputField.cjs.js +1 -1
- package/dist/components/forms/debounce-input/DebounceInputField.cjs.js.map +1 -1
- package/dist/components/forms/debounce-input/DebounceInputField.es.js +2 -2
- package/dist/components/forms/debounce-input/DebounceInputField.es.js.map +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInput.cjs.js +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInput.cjs.js.map +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInput.es.js +7 -7
- package/dist/components/forms/dynamic-data-input/DynamicDataInput.es.js.map +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInputField.cjs.js +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInputField.cjs.js.map +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInputField.es.js +17 -19
- package/dist/components/forms/dynamic-data-input/DynamicDataInputField.es.js.map +1 -1
- package/dist/components/forms/field-options/Item.cjs.js +1 -1
- package/dist/components/forms/field-options/Item.cjs.js.map +1 -1
- package/dist/components/forms/field-options/Item.es.js +5 -5
- package/dist/components/forms/field-options/Item.es.js.map +1 -1
- package/dist/components/forms/formula-input/FormulaInput.cjs.js +1 -1
- package/dist/components/forms/formula-input/FormulaInput.cjs.js.map +1 -1
- package/dist/components/forms/formula-input/FormulaInput.es.js +10 -10
- package/dist/components/forms/formula-input/FormulaInput.es.js.map +1 -1
- package/dist/components/forms/icon-picker/IconPicker.cjs.js +1 -1
- package/dist/components/forms/icon-picker/IconPicker.cjs.js.map +1 -1
- package/dist/components/forms/icon-picker/IconPicker.es.js +42 -57
- package/dist/components/forms/icon-picker/IconPicker.es.js.map +1 -1
- package/dist/components/forms/input-field/InputField.cjs.js.map +1 -1
- package/dist/components/forms/input-field/InputField.es.js.map +1 -1
- package/dist/components/forms/master-data-input/MasterDataInputField.cjs.js +1 -1
- package/dist/components/forms/master-data-input/MasterDataInputField.cjs.js.map +1 -1
- package/dist/components/forms/master-data-input/MasterDataInputField.es.js +54 -60
- package/dist/components/forms/master-data-input/MasterDataInputField.es.js.map +1 -1
- package/dist/components/forms/md-input/RichMarkdownInput.cjs.js +3 -3
- package/dist/components/forms/md-input/RichMarkdownInput.cjs.js.map +1 -1
- package/dist/components/forms/md-input/RichMarkdownInput.es.js +63 -63
- package/dist/components/forms/md-input/RichMarkdownInput.es.js.map +1 -1
- package/dist/components/forms/number-input-field/NumberInputField.cjs.js +1 -1
- package/dist/components/forms/number-input-field/NumberInputField.cjs.js.map +1 -1
- package/dist/components/forms/number-input-field/NumberInputField.es.js +5 -5
- package/dist/components/forms/number-input-field/NumberInputField.es.js.map +1 -1
- package/dist/components/forms/percentage-input/PercentageInputField.cjs.js +2 -2
- package/dist/components/forms/percentage-input/PercentageInputField.cjs.js.map +1 -1
- package/dist/components/forms/percentage-input/PercentageInputField.es.js +20 -20
- package/dist/components/forms/percentage-input/PercentageInputField.es.js.map +1 -1
- package/dist/components/forms/search-bar/SearchBar.cjs.js +1 -1
- package/dist/components/forms/search-bar/SearchBar.cjs.js.map +1 -1
- package/dist/components/forms/search-bar/SearchBar.es.js +16 -16
- package/dist/components/forms/search-bar/SearchBar.es.js.map +1 -1
- package/dist/components/forms/select-field/SelectField.cjs.js +2 -2
- package/dist/components/forms/select-field/SelectField.cjs.js.map +1 -1
- package/dist/components/forms/select-field/SelectField.d.ts +4 -0
- package/dist/components/forms/select-field/SelectField.es.js +202 -203
- package/dist/components/forms/select-field/SelectField.es.js.map +1 -1
- package/dist/components/forms/text-area-field/TextAreaField.cjs.js +1 -1
- package/dist/components/forms/text-area-field/TextAreaField.cjs.js.map +1 -1
- package/dist/components/forms/text-area-field/TextAreaField.es.js +14 -14
- package/dist/components/forms/text-area-field/TextAreaField.es.js.map +1 -1
- package/dist/components/forms/toggle/Toggle.cjs.js +1 -1
- package/dist/components/forms/toggle/Toggle.cjs.js.map +1 -1
- package/dist/components/forms/toggle/Toggle.es.js +65 -59
- package/dist/components/forms/toggle/Toggle.es.js.map +1 -1
- package/dist/components/navigation/accordion/Accordion.cjs.js +1 -1
- package/dist/components/navigation/accordion/Accordion.cjs.js.map +1 -1
- package/dist/components/navigation/accordion/Accordion.es.js +5 -5
- package/dist/components/navigation/accordion/Accordion.es.js.map +1 -1
- package/dist/components/navigation/stepper/Stepper.cjs.js +1 -1
- package/dist/components/navigation/stepper/Stepper.cjs.js.map +1 -1
- package/dist/components/navigation/stepper/Stepper.es.js +1 -1
- package/dist/components/navigation/stepper/Stepper.es.js.map +1 -1
- package/dist/components/navigation/tabs/TabOptions.cjs.js +1 -1
- package/dist/components/navigation/tabs/TabOptions.cjs.js.map +1 -1
- package/dist/components/navigation/tabs/TabOptions.es.js +15 -15
- package/dist/components/navigation/tabs/TabOptions.es.js.map +1 -1
- package/dist/components/navigation/tabs/TabSwitch.cjs.js +1 -1
- package/dist/components/navigation/tabs/TabSwitch.cjs.js.map +1 -1
- package/dist/components/navigation/tabs/TabSwitch.es.js +7 -7
- package/dist/components/navigation/tabs/TabSwitch.es.js.map +1 -1
- package/dist/components/navigation/tabs/Tabs.cjs.js +1 -1
- package/dist/components/navigation/tabs/Tabs.cjs.js.map +1 -1
- package/dist/components/navigation/tabs/Tabs.es.js +1 -1
- package/dist/components/navigation/tabs/Tabs.es.js.map +1 -1
- package/dist/components/tooltip/Tooltip.cjs.js +1 -1
- package/dist/components/tooltip/Tooltip.cjs.js.map +1 -1
- package/dist/components/tooltip/Tooltip.es.js +19 -19
- package/dist/components/tooltip/Tooltip.es.js.map +1 -1
- package/dist/components/user-avatar/UserAvatar.cjs.js +1 -1
- package/dist/components/user-avatar/UserAvatar.cjs.js.map +1 -1
- package/dist/components/user-avatar/UserAvatar.d.ts +1 -1
- package/dist/components/user-avatar/UserAvatar.es.js +40 -38
- package/dist/components/user-avatar/UserAvatar.es.js.map +1 -1
- package/dist/components/user-avatar/constants.cjs.js +1 -1
- package/dist/components/user-avatar/constants.cjs.js.map +1 -1
- package/dist/components/user-avatar/constants.d.ts +1 -0
- package/dist/components/user-avatar/constants.es.js +10 -9
- package/dist/components/user-avatar/constants.es.js.map +1 -1
- package/dist/design-system.css +1 -1
- package/package.json +2 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataCell.cjs.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, 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\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,\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-primary-50 dark:bg-black-700': !is_incomplete && !is_read && showNewItem && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-warning-50 dark:bg-black-500': (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-100 dark:bg-primary-950': 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 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 >\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-full flex items-center px-4 min-w-0 overflow-hidden text-primary-400'>\n <span ref={textRef} 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-full 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 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-[10px] 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","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","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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"}
|
|
1
|
+
{"version":3,"file":"DataCell.cjs.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, 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\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,\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-primary-50 dark:bg-black-700': !is_incomplete && !is_read && showNewItem && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-warning-50 dark:bg-black-500': (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-100 dark:bg-primary-950': 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 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 >\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-full flex items-center px-4 min-w-0 overflow-hidden text-primary-400'>\n <span ref={textRef} 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-full 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 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","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","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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"}
|
|
@@ -242,7 +242,7 @@ const le = (e) => {
|
|
|
242
242
|
}
|
|
243
243
|
) })
|
|
244
244
|
] }) }),
|
|
245
|
-
W && !oe && /* @__PURE__ */ t("div", { className: "absolute bottom-0 left-0 right-0 h-row flex items-end pointer-events-none z-[5]", children: /* @__PURE__ */ t("div", { className: "w-full bg-error-50 dark:bg-error-975 px-1.5 py-0.5 truncate", children: /* @__PURE__ */ t("span", { className: "text-error-600 text-
|
|
245
|
+
W && !oe && /* @__PURE__ */ t("div", { className: "absolute bottom-0 left-0 right-0 h-row flex items-end pointer-events-none z-[5]", children: /* @__PURE__ */ t("div", { className: "w-full bg-error-50 dark:bg-error-975 px-1.5 py-0.5 truncate", children: /* @__PURE__ */ t("span", { className: "text-error-600 text-2xs font-medium leading-none", children: W }) }) }),
|
|
246
246
|
De && !(k === e.column.key && e?.column?.canEdit && !j && !e?.column?.is_disabled) && /* @__PURE__ */ t("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", children: /* @__PURE__ */ t(J, { className: "text-primary-600 dark:text-white", size: 8 }) })
|
|
247
247
|
]
|
|
248
248
|
},
|
|
@@ -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, 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\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,\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-primary-50 dark:bg-black-700': !is_incomplete && !is_read && showNewItem && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-warning-50 dark:bg-black-500': (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-100 dark:bg-primary-950': 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 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 >\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-full flex items-center px-4 min-w-0 overflow-hidden text-primary-400'>\n <span ref={textRef} 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-full 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 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-[10px] 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","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","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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"}
|
|
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, 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\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,\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-primary-50 dark:bg-black-700': !is_incomplete && !is_read && showNewItem && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-warning-50 dark:bg-black-500': (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-100 dark:bg-primary-950': 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 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 >\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-full flex items-center px-4 min-w-0 overflow-hidden text-primary-400'>\n <span ref={textRef} 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-full 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 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","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","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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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),U=require("../../../../../utils/table.cjs.js"),z=require("../../../../../providers/design-system-provider/hooks.cjs.js"),G=require("../../../../layout/CustomScrollbar.cjs.js"),t=require("react"),J=require("react-window"),K=require("../../context.cjs.js"),Q=require("./row.cjs.js"),H=require("../../useRowHeight.cjs.js"),X=({onScroll:c,forwardedRef:l,style:u,children:g,dispatchEvent:f})=>{const[p,m]=t.useState(null),h=t.useCallback(d=>{const x=d;if(x){const C=x.getInstance;m(C),l(C?.view??x.view??null)}else l(null)},[l]);return t.useEffect(()=>{p&&f&&f("SET_SCROLLBAR_REF_FOR_INFINITY_TABLE",{scrollbarsInstance:p})},[p,f]),o.jsx(G.CustomScrollbar,{ref:h,style:{...u,overflow:"hidden"},onScroll:c,renderViewClassName:"!h-[calc(100%+5px)]",children:g})},Z=t.forwardRef((c,l)=>{const u=z.useTableConfig();return o.jsx(X,{...c,forwardedRef:l,dispatchEvent:u?.dispatchEvent})}),ee=({rows:c,prepareRow:l,isLoading:u,onScroll:g,columns:f,width:p,height:m,onScrolling:h,level:d=0,allowAstarSearch:x=!1})=>{const C=t.useRef(null),E=t.useRef(null),S=z.useTableConfig(),{tableWrapper:B,tableBodyWrapper:F,search:i,expandedRows:R,setActiveInlineEdit:k,activeInlineEdit:_,closeCurrencyDropdown:j,currencyDropdownConfig:v}=t.useContext(K.TableContext),b=t.useRef(S);b.current=S,t.useEffect(()=>{if(b.current?.onEvent)return b.current.onEvent("SET_SCROLLBAR_REF_FOR_INFINITY_TABLE",e=>{const{scrollbarsInstance:n}=e;C.current=n})},[S?.onEvent]);const I=t.useRef(null);t.useEffect(()=>{if(b.current?.onEvent)return b.current.onEvent("SCROLL_TO_TABLE_ROW",e=>{const{rowIndex:n}=e;I.current&&typeof n=="number"&&I.current.scrollToItem(n,"center")})},[S?.onEvent]);const y=t.useRef({}),P=H.useRowHeight(),w=H.getRowSlotHeight(P),L=t.useRef(w);L.current=w;const O=t.useCallback((e,n)=>0,[R]),W=t.useCallback(()=>{const e={...y.current};for(const n of c){const r=n.original.id;if(R[r]?.isOpen){const T=O(r,0);e[n.index]=w*(T+1)}else e[n.index]=w*1}y.current=e,I.current?.resetAfterIndex(0)},[R,c,O,w]);t.useEffect(()=>{W()},[W]);const M=t.useCallback(e=>y.current[e]||L.current,[]),$=t.useCallback(e=>{u||e&&(E.current&&E.current.disconnect(),E.current=new IntersectionObserver(n=>{n[0].isIntersecting&&g&&g()},{threshold:1e-5}),E.current.observe(e))},[u,g,c.length]),V=e=>e.split(/(<span[^>]*>.*?<\/span>)/g).map((n,r)=>{if(n.startsWith("<span")){const s=n.replace(/<[^>]+>/g,"");return o.jsx("span",{className:"bg-yellow-300 dark:bg-primary-100 dark:text-black-900",children:s},r)}return o.jsx("span",{children:n},r)}),q=t.useCallback(e=>{if(!i||!e||typeof e!="string"&&typeof e!="number")return e;const n=U.escapeRegExp(i);if(i.includes("*")){const r=i.replace(/[.+?^${}()|[\]\\]/g,"\\$&");let s;if(i.startsWith("*")&&i.endsWith("*")){const a=r.slice(1,-1).replace(/\*/g,".*");s=new RegExp(`(${a})`,"gi")}else if(i.startsWith("*")){const a=r.slice(1).replace(/\*/g,".*");s=new RegExp(`(${a})$`,"gi")}else if(i.endsWith("*")){const a=r.slice(0,-1).replace(/\*/g,".*");s=new RegExp(`^(${a})`,"gi")}else{const a=r.replace(/\*/g,".*");s=new RegExp(`^(${a})$`,"gi")}const T=e?.toString().replace(s,a=>`<span class="highlight">${a}</span>`);return o.jsx("span",{children:V(T)})}else{const r=new RegExp(`(${n?.trim()})`,"gi"),s=e?.toString()?.split(r);return o.jsxs("span",{className:"overflow-clip text-ellipsis",children:[s[0],o.jsx("span",{className:"bg-yellow-300 dark:bg-primary-100 dark:text-black-900",children:s[1]}),s?.slice(2)?.join("")]})}},[i]),D=t.useCallback(({index:e,style:n})=>{const r=c[e];if(!r)return o.jsx("span",{children:"Loading"});const s=!u&&e>=c.length-6;return l(r),o.jsx(Q.Row,{row:r,isLastRow:s,lastRow:$,prepareRow:l,highlightSubstring:q,index:e,style:n,rowsLength:c.length,level:d||r?.original?.__level,columns:f,expandedRows:R,rows:c})},[f,c,u,$,l,R,q,d]),A=t.useRef(_);A.current=_;const N=t.useRef(!!v);N.current=!!v;const Y=t.useCallback(e=>{e.scrollUpdateWasRequested||(A.current&&k?.(null),N.current&&j?.()),h&&h(e)},[h,k,j]);return o.jsx(J.VariableSizeList,{outerElementType:Z,width:p-2,height:m-2,ref:I,innerElementType:d?F:B,itemCount:c.length,itemSize:M,layout:"vertical",overscanCount:20,onScroll:Y,children:D})};exports.Rows=ee;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../../../../../../src/components/data-display/infinite-table/body/rows/index.tsx"],"sourcesContent":["import { escapeRegExp } from '../../../../../utils/table';\nimport { useTableConfig } from '../../../../../providers/design-system-provider/hooks';\nimport { CustomScrollbar } from '../../../../layout/CustomScrollbar';\nimport React, { forwardRef, useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport { VariableSizeList } from 'react-window';\nimport type { ListOnScrollProps } from 'react-window';\n\nimport { TableContext } from '../../context';\nimport { Row } from './row';\n\ninterface TableRow {\n original: Record<string, unknown>;\n index: number;\n [key: string]: unknown;\n}\n\ninterface CustomScrollbarsProps {\n onScroll?: (e: React.UIEvent) => void;\n forwardedRef: (node: HTMLElement | null) => void;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n dispatchEvent?: (eventName: string, payload: Record<string, unknown>) => void;\n}\n\nconst CustomScrollbars = ({ onScroll, forwardedRef, style, children, dispatchEvent }: CustomScrollbarsProps) => {\n const [scrollbarsInstance, setScrollbarInstance] = useState<unknown>(null);\n const refSetter = useCallback(\n (scrollbarsRef: unknown) => {\n const ref = scrollbarsRef as { getInstance?: { view?: HTMLElement }; view?: HTMLElement } | null;\n if (ref) {\n const instance = ref.getInstance;\n setScrollbarInstance(instance);\n forwardedRef(instance?.view ?? ref.view ?? null);\n } else {\n forwardedRef(null);\n }\n },\n [forwardedRef],\n );\n\n useEffect(() => {\n if (scrollbarsInstance && dispatchEvent) {\n dispatchEvent('SET_SCROLLBAR_REF_FOR_INFINITY_TABLE', { scrollbarsInstance });\n }\n }, [scrollbarsInstance, dispatchEvent]);\n\n return (\n <CustomScrollbar ref={refSetter} style={{ ...style, overflow: 'hidden' }} onScroll={onScroll} renderViewClassName='!h-[calc(100%+5px)]'>\n {children}\n </CustomScrollbar>\n );\n};\n\nconst CustomScrollbarsVirtualList = forwardRef((props: Record<string, unknown>, ref: React.Ref<HTMLElement>) => {\n const tableConfig = useTableConfig();\n return <CustomScrollbars {...(props as unknown as CustomScrollbarsProps)} forwardedRef={ref as (node: HTMLElement | null) => void} dispatchEvent={tableConfig?.dispatchEvent} />;\n});\n\ninterface RowsProps {\n rows: TableRow[];\n prepareRow: (row: TableRow) => void;\n isLoading: boolean;\n onScroll?: () => void;\n columns: unknown[];\n width: number;\n height: number;\n onScrolling?: (value: ListOnScrollProps) => void;\n level?: number;\n allowAstarSearch?: boolean;\n}\n\nexport const Rows = ({ rows, prepareRow, isLoading, onScroll, columns, width, height, onScrolling, level = 0, allowAstarSearch = false }: RowsProps) => {\n void allowAstarSearch;\n const scrollbarRef = useRef<unknown>(null);\n const observer = useRef<IntersectionObserver | null>(null);\n const tableConfig = useTableConfig();\n const {\n tableWrapper,\n tableBodyWrapper,\n search,\n expandedRows,\n setActiveInlineEdit,\n activeInlineEdit,\n closeCurrencyDropdown,\n currencyDropdownConfig,\n } = useContext(TableContext);\n\n const tableConfigRef = useRef(tableConfig);\n tableConfigRef.current = tableConfig;\n\n useEffect(() => {\n if (!tableConfigRef.current?.onEvent) return;\n return tableConfigRef.current.onEvent('SET_SCROLLBAR_REF_FOR_INFINITY_TABLE', (payload: unknown) => {\n const { scrollbarsInstance } = payload as { scrollbarsInstance: unknown };\n scrollbarRef.current = scrollbarsInstance;\n });\n }, [tableConfig?.onEvent]);\n\n const listRef = useRef<VariableSizeList>(null);\n\n useEffect(() => {\n if (!tableConfigRef.current?.onEvent) return;\n return tableConfigRef.current.onEvent('SCROLL_TO_TABLE_ROW', (payload: unknown) => {\n const { rowIndex } = payload as { rowIndex: number };\n if (listRef.current && typeof rowIndex === 'number') {\n listRef.current.scrollToItem(rowIndex, 'center');\n }\n });\n }, [tableConfig?.onEvent]);\n\n const sizeMap = useRef<Record<number, number>>({});\n\n const calculateRowHeightWithChildren = useCallback((rowId: string | number, rowCounts: number): number => {\n return 0;\n\n const children = expandedRows[rowId];\n if (!children?.isOpen) return rowCounts;\n if (children?.isOpen) {\n rowCounts += children.data.length;\n for (const child of children.data) {\n rowCounts = calculateRowHeightWithChildren(child.id, rowCounts);\n }\n }\n return rowCounts;\n }, [expandedRows]);\n\n const setMultipleRowSize = useCallback(() => {\n const newSizeMap: Record<number, number> = { ...sizeMap.current };\n\n for (const row of rows) {\n const rowId = row.original.id as string | number;\n const children = expandedRows[rowId];\n if (children?.isOpen) {\n const additionalRowCounts = calculateRowHeightWithChildren(rowId, 0);\n newSizeMap[row.index] = (40 + 1) * (additionalRowCounts + 1);\n } else {\n newSizeMap[row.index] = (40 + 1) * 1;\n }\n }\n\n sizeMap.current = newSizeMap;\n listRef.current?.resetAfterIndex(0);\n }, [expandedRows, rows, calculateRowHeightWithChildren]);\n\n useEffect(() => {\n setMultipleRowSize();\n }, [setMultipleRowSize]);\n\n const getSize = useCallback((index: number) => {\n return sizeMap.current[index] || 40 + 1;\n }, []);\n\n const lastRow = useCallback(\n (node: HTMLElement | null) => {\n if (isLoading) return;\n if (!node) return;\n if (observer.current) observer.current.disconnect();\n observer.current = new IntersectionObserver(\n (entries) => {\n if (entries[0].isIntersecting) {\n if (onScroll) onScroll();\n }\n },\n { threshold: 0.00001 },\n );\n observer.current.observe(node);\n },\n [isLoading, onScroll, rows.length],\n );\n\n const parseString = (input: string) =>\n input.split(/(<span[^>]*>.*?<\\/span>)/g).map((segment: string, index: number) => {\n if (segment.startsWith('<span')) {\n const value = segment.replace(/<[^>]+>/g, '');\n return (\n <span key={index} className='bg-yellow-300 dark:bg-primary-100 dark:text-black-900'>\n {value}\n </span>\n );\n }\n return <span key={index}>{segment}</span>;\n });\n\n const highlightSubstring = useCallback((value: string | number | null | undefined): JSX.Element | string | number | null | undefined => {\n if (!search) return value;\n if (!value || (typeof value !== 'string' && typeof value !== 'number')) return value;\n const escapedSearch = escapeRegExp(search);\n\n if (search.includes('*')) {\n const escapedPattern = search.replace(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&');\n let regex;\n if (search.startsWith('*') && search.endsWith('*')) {\n const middlePattern = escapedPattern.slice(1, -1).replace(/\\*/g, '.*');\n regex = new RegExp(`(${middlePattern})`, 'gi');\n } else if (search.startsWith('*')) {\n const endPattern = escapedPattern.slice(1).replace(/\\*/g, '.*');\n regex = new RegExp(`(${endPattern})$`, 'gi');\n } else if (search.endsWith('*')) {\n const startPattern = escapedPattern.slice(0, -1).replace(/\\*/g, '.*');\n regex = new RegExp(`^(${startPattern})`, 'gi');\n } else {\n const exactPattern = escapedPattern.replace(/\\*/g, '.*');\n regex = new RegExp(`^(${exactPattern})$`, 'gi');\n }\n\n const highlightedText = value?.toString().replace(regex, (match) => `<span class=\"highlight\">${match}</span>`);\n return <span>{parseString(highlightedText)}</span>;\n } else {\n const regex = new RegExp(`(${escapedSearch?.trim()})`, 'gi');\n const searchValue = value?.toString()?.split(regex);\n return (\n <span className='overflow-clip text-ellipsis'>\n {searchValue[0]}\n <span className='bg-yellow-300 dark:bg-primary-100 dark:text-black-900'>{searchValue[1]}</span>\n {searchValue?.slice(2)?.join('')}\n </span>\n );\n }\n }, [search]);\n\n const RenderRow = useCallback(\n ({ index, style }: { index: number; style: React.CSSProperties }) => {\n const row = rows[index];\n if (!row) return <span>Loading</span>;\n const isLastRow = !isLoading && index >= rows.length - 6;\n prepareRow(row);\n\n return (\n <Row\n {...({\n row,\n isLastRow,\n lastRow,\n prepareRow,\n highlightSubstring,\n index,\n style,\n rowsLength: rows.length,\n level: level || row?.original?.__level,\n columns,\n expandedRows,\n rows,\n } as unknown as React.ComponentProps<typeof Row>)}\n />\n );\n },\n [columns, rows, isLoading, lastRow, prepareRow, expandedRows, highlightSubstring, level],\n );\n\n const activeInlineEditRef = useRef(activeInlineEdit);\n activeInlineEditRef.current = activeInlineEdit;\n\n const currencyDropdownOpenRef = useRef(!!currencyDropdownConfig);\n currencyDropdownOpenRef.current = !!currencyDropdownConfig;\n\n const handleScroll = useCallback(\n (value: ListOnScrollProps) => {\n if (!value.scrollUpdateWasRequested) {\n if (activeInlineEditRef.current) setActiveInlineEdit?.(null);\n if (currencyDropdownOpenRef.current) closeCurrencyDropdown?.();\n }\n if (onScrolling) onScrolling(value);\n },\n [onScrolling, setActiveInlineEdit, closeCurrencyDropdown],\n );\n\n return (\n <VariableSizeList\n outerElementType={CustomScrollbarsVirtualList}\n width={width - 2}\n height={height - 2}\n ref={listRef}\n innerElementType={level ? tableBodyWrapper : tableWrapper}\n itemCount={rows.length}\n itemSize={getSize}\n layout='vertical'\n overscanCount={20}\n onScroll={handleScroll}\n >\n {RenderRow}\n </VariableSizeList>\n );\n};\n"],"names":["CustomScrollbars","onScroll","forwardedRef","style","children","dispatchEvent","scrollbarsInstance","setScrollbarInstance","useState","refSetter","useCallback","scrollbarsRef","ref","instance","useEffect","jsx","CustomScrollbar","CustomScrollbarsVirtualList","forwardRef","props","tableConfig","useTableConfig","Rows","rows","prepareRow","isLoading","columns","width","height","onScrolling","level","allowAstarSearch","scrollbarRef","useRef","observer","tableWrapper","tableBodyWrapper","search","expandedRows","setActiveInlineEdit","activeInlineEdit","closeCurrencyDropdown","currencyDropdownConfig","useContext","TableContext","tableConfigRef","payload","listRef","rowIndex","sizeMap","calculateRowHeightWithChildren","rowId","rowCounts","setMultipleRowSize","newSizeMap","row","additionalRowCounts","getSize","index","lastRow","node","entries","parseString","input","segment","value","highlightSubstring","escapedSearch","escapeRegExp","escapedPattern","regex","middlePattern","endPattern","startPattern","exactPattern","highlightedText","match","searchValue","jsxs","RenderRow","isLastRow","Row","activeInlineEditRef","currencyDropdownOpenRef","handleScroll","VariableSizeList"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../../../../../../src/components/data-display/infinite-table/body/rows/index.tsx"],"sourcesContent":["import { escapeRegExp } from '../../../../../utils/table';\nimport { useTableConfig } from '../../../../../providers/design-system-provider/hooks';\nimport { CustomScrollbar } from '../../../../layout/CustomScrollbar';\nimport React, { forwardRef, useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport { VariableSizeList } from 'react-window';\nimport type { ListOnScrollProps } from 'react-window';\n\nimport { TableContext } from '../../context';\nimport { Row } from './row';\nimport { getRowSlotHeight, useRowHeight } from '../../useRowHeight';\n\ninterface TableRow {\n original: Record<string, unknown>;\n index: number;\n [key: string]: unknown;\n}\n\ninterface CustomScrollbarsProps {\n onScroll?: (e: React.UIEvent) => void;\n forwardedRef: (node: HTMLElement | null) => void;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n dispatchEvent?: (eventName: string, payload: Record<string, unknown>) => void;\n}\n\nconst CustomScrollbars = ({ onScroll, forwardedRef, style, children, dispatchEvent }: CustomScrollbarsProps) => {\n const [scrollbarsInstance, setScrollbarInstance] = useState<unknown>(null);\n const refSetter = useCallback(\n (scrollbarsRef: unknown) => {\n const ref = scrollbarsRef as { getInstance?: { view?: HTMLElement }; view?: HTMLElement } | null;\n if (ref) {\n const instance = ref.getInstance;\n setScrollbarInstance(instance);\n forwardedRef(instance?.view ?? ref.view ?? null);\n } else {\n forwardedRef(null);\n }\n },\n [forwardedRef],\n );\n\n useEffect(() => {\n if (scrollbarsInstance && dispatchEvent) {\n dispatchEvent('SET_SCROLLBAR_REF_FOR_INFINITY_TABLE', { scrollbarsInstance });\n }\n }, [scrollbarsInstance, dispatchEvent]);\n\n return (\n <CustomScrollbar ref={refSetter} style={{ ...style, overflow: 'hidden' }} onScroll={onScroll} renderViewClassName='!h-[calc(100%+5px)]'>\n {children}\n </CustomScrollbar>\n );\n};\n\nconst CustomScrollbarsVirtualList = forwardRef((props: Record<string, unknown>, ref: React.Ref<HTMLElement>) => {\n const tableConfig = useTableConfig();\n return <CustomScrollbars {...(props as unknown as CustomScrollbarsProps)} forwardedRef={ref as (node: HTMLElement | null) => void} dispatchEvent={tableConfig?.dispatchEvent} />;\n});\n\ninterface RowsProps {\n rows: TableRow[];\n prepareRow: (row: TableRow) => void;\n isLoading: boolean;\n onScroll?: () => void;\n columns: unknown[];\n width: number;\n height: number;\n onScrolling?: (value: ListOnScrollProps) => void;\n level?: number;\n allowAstarSearch?: boolean;\n}\n\nexport const Rows = ({ rows, prepareRow, isLoading, onScroll, columns, width, height, onScrolling, level = 0, allowAstarSearch = false }: RowsProps) => {\n void allowAstarSearch;\n const scrollbarRef = useRef<unknown>(null);\n const observer = useRef<IntersectionObserver | null>(null);\n const tableConfig = useTableConfig();\n const {\n tableWrapper,\n tableBodyWrapper,\n search,\n expandedRows,\n setActiveInlineEdit,\n activeInlineEdit,\n closeCurrencyDropdown,\n currencyDropdownConfig,\n } = useContext(TableContext);\n\n const tableConfigRef = useRef(tableConfig);\n tableConfigRef.current = tableConfig;\n\n useEffect(() => {\n if (!tableConfigRef.current?.onEvent) return;\n return tableConfigRef.current.onEvent('SET_SCROLLBAR_REF_FOR_INFINITY_TABLE', (payload: unknown) => {\n const { scrollbarsInstance } = payload as { scrollbarsInstance: unknown };\n scrollbarRef.current = scrollbarsInstance;\n });\n }, [tableConfig?.onEvent]);\n\n const listRef = useRef<VariableSizeList>(null);\n\n useEffect(() => {\n if (!tableConfigRef.current?.onEvent) return;\n return tableConfigRef.current.onEvent('SCROLL_TO_TABLE_ROW', (payload: unknown) => {\n const { rowIndex } = payload as { rowIndex: number };\n if (listRef.current && typeof rowIndex === 'number') {\n listRef.current.scrollToItem(rowIndex, 'center');\n }\n });\n }, [tableConfig?.onEvent]);\n\n const sizeMap = useRef<Record<number, number>>({});\n\n // Row height tracks the `h-row` viewport clamp; keep a ref so `getSize` (stable\n // identity for react-window) always reads the latest measured value.\n const rowHeight = useRowHeight();\n const rowSlotHeight = getRowSlotHeight(rowHeight);\n const rowSlotHeightRef = useRef(rowSlotHeight);\n rowSlotHeightRef.current = rowSlotHeight;\n\n const calculateRowHeightWithChildren = useCallback((rowId: string | number, rowCounts: number): number => {\n return 0;\n\n const children = expandedRows[rowId];\n if (!children?.isOpen) return rowCounts;\n if (children?.isOpen) {\n rowCounts += children.data.length;\n for (const child of children.data) {\n rowCounts = calculateRowHeightWithChildren(child.id, rowCounts);\n }\n }\n return rowCounts;\n }, [expandedRows]);\n\n const setMultipleRowSize = useCallback(() => {\n const newSizeMap: Record<number, number> = { ...sizeMap.current };\n\n for (const row of rows) {\n const rowId = row.original.id as string | number;\n const children = expandedRows[rowId];\n if (children?.isOpen) {\n const additionalRowCounts = calculateRowHeightWithChildren(rowId, 0);\n newSizeMap[row.index] = rowSlotHeight * (additionalRowCounts + 1);\n } else {\n newSizeMap[row.index] = rowSlotHeight * 1;\n }\n }\n\n sizeMap.current = newSizeMap;\n listRef.current?.resetAfterIndex(0);\n }, [expandedRows, rows, calculateRowHeightWithChildren, rowSlotHeight]);\n\n useEffect(() => {\n setMultipleRowSize();\n }, [setMultipleRowSize]);\n\n const getSize = useCallback((index: number) => {\n return sizeMap.current[index] || rowSlotHeightRef.current;\n }, []);\n\n const lastRow = useCallback(\n (node: HTMLElement | null) => {\n if (isLoading) return;\n if (!node) return;\n if (observer.current) observer.current.disconnect();\n observer.current = new IntersectionObserver(\n (entries) => {\n if (entries[0].isIntersecting) {\n if (onScroll) onScroll();\n }\n },\n { threshold: 0.00001 },\n );\n observer.current.observe(node);\n },\n [isLoading, onScroll, rows.length],\n );\n\n const parseString = (input: string) =>\n input.split(/(<span[^>]*>.*?<\\/span>)/g).map((segment: string, index: number) => {\n if (segment.startsWith('<span')) {\n const value = segment.replace(/<[^>]+>/g, '');\n return (\n <span key={index} className='bg-yellow-300 dark:bg-primary-100 dark:text-black-900'>\n {value}\n </span>\n );\n }\n return <span key={index}>{segment}</span>;\n });\n\n const highlightSubstring = useCallback((value: string | number | null | undefined): JSX.Element | string | number | null | undefined => {\n if (!search) return value;\n if (!value || (typeof value !== 'string' && typeof value !== 'number')) return value;\n const escapedSearch = escapeRegExp(search);\n\n if (search.includes('*')) {\n const escapedPattern = search.replace(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&');\n let regex;\n if (search.startsWith('*') && search.endsWith('*')) {\n const middlePattern = escapedPattern.slice(1, -1).replace(/\\*/g, '.*');\n regex = new RegExp(`(${middlePattern})`, 'gi');\n } else if (search.startsWith('*')) {\n const endPattern = escapedPattern.slice(1).replace(/\\*/g, '.*');\n regex = new RegExp(`(${endPattern})$`, 'gi');\n } else if (search.endsWith('*')) {\n const startPattern = escapedPattern.slice(0, -1).replace(/\\*/g, '.*');\n regex = new RegExp(`^(${startPattern})`, 'gi');\n } else {\n const exactPattern = escapedPattern.replace(/\\*/g, '.*');\n regex = new RegExp(`^(${exactPattern})$`, 'gi');\n }\n\n const highlightedText = value?.toString().replace(regex, (match) => `<span class=\"highlight\">${match}</span>`);\n return <span>{parseString(highlightedText)}</span>;\n } else {\n const regex = new RegExp(`(${escapedSearch?.trim()})`, 'gi');\n const searchValue = value?.toString()?.split(regex);\n return (\n <span className='overflow-clip text-ellipsis'>\n {searchValue[0]}\n <span className='bg-yellow-300 dark:bg-primary-100 dark:text-black-900'>{searchValue[1]}</span>\n {searchValue?.slice(2)?.join('')}\n </span>\n );\n }\n }, [search]);\n\n const RenderRow = useCallback(\n ({ index, style }: { index: number; style: React.CSSProperties }) => {\n const row = rows[index];\n if (!row) return <span>Loading</span>;\n const isLastRow = !isLoading && index >= rows.length - 6;\n prepareRow(row);\n\n return (\n <Row\n {...({\n row,\n isLastRow,\n lastRow,\n prepareRow,\n highlightSubstring,\n index,\n style,\n rowsLength: rows.length,\n level: level || row?.original?.__level,\n columns,\n expandedRows,\n rows,\n } as unknown as React.ComponentProps<typeof Row>)}\n />\n );\n },\n [columns, rows, isLoading, lastRow, prepareRow, expandedRows, highlightSubstring, level],\n );\n\n const activeInlineEditRef = useRef(activeInlineEdit);\n activeInlineEditRef.current = activeInlineEdit;\n\n const currencyDropdownOpenRef = useRef(!!currencyDropdownConfig);\n currencyDropdownOpenRef.current = !!currencyDropdownConfig;\n\n const handleScroll = useCallback(\n (value: ListOnScrollProps) => {\n if (!value.scrollUpdateWasRequested) {\n if (activeInlineEditRef.current) setActiveInlineEdit?.(null);\n if (currencyDropdownOpenRef.current) closeCurrencyDropdown?.();\n }\n if (onScrolling) onScrolling(value);\n },\n [onScrolling, setActiveInlineEdit, closeCurrencyDropdown],\n );\n\n return (\n <VariableSizeList\n outerElementType={CustomScrollbarsVirtualList}\n width={width - 2}\n height={height - 2}\n ref={listRef}\n innerElementType={level ? tableBodyWrapper : tableWrapper}\n itemCount={rows.length}\n itemSize={getSize}\n layout='vertical'\n overscanCount={20}\n onScroll={handleScroll}\n >\n {RenderRow}\n </VariableSizeList>\n );\n};\n"],"names":["CustomScrollbars","onScroll","forwardedRef","style","children","dispatchEvent","scrollbarsInstance","setScrollbarInstance","useState","refSetter","useCallback","scrollbarsRef","ref","instance","useEffect","jsx","CustomScrollbar","CustomScrollbarsVirtualList","forwardRef","props","tableConfig","useTableConfig","Rows","rows","prepareRow","isLoading","columns","width","height","onScrolling","level","allowAstarSearch","scrollbarRef","useRef","observer","tableWrapper","tableBodyWrapper","search","expandedRows","setActiveInlineEdit","activeInlineEdit","closeCurrencyDropdown","currencyDropdownConfig","useContext","TableContext","tableConfigRef","payload","listRef","rowIndex","sizeMap","rowHeight","useRowHeight","rowSlotHeight","getRowSlotHeight","rowSlotHeightRef","calculateRowHeightWithChildren","rowId","rowCounts","setMultipleRowSize","newSizeMap","row","additionalRowCounts","getSize","index","lastRow","node","entries","parseString","input","segment","value","highlightSubstring","escapedSearch","escapeRegExp","escapedPattern","regex","middlePattern","endPattern","startPattern","exactPattern","highlightedText","match","searchValue","jsxs","RenderRow","isLastRow","Row","activeInlineEditRef","currencyDropdownOpenRef","handleScroll","VariableSizeList"],"mappings":"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"}
|