@lax-wp/design-system 0.14.6 → 0.14.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"row.es.js","sources":["../../../../../../src/components/data-display/infinite-table/body/rows/row.tsx"],"sourcesContent":["import { getTableRowBgClassNamesByStatus } from '../../../../../constants/table';\nimport { useTableConfig } from '../../../../../providers/design-system-provider/hooks';\nimport { useDraggable, useDroppable } from '@dnd-kit/core';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { SubdirectoryArrowLeftRounded } from '@mui/icons-material';\nimport AddRounded from '@mui/icons-material/AddRounded';\nimport cn from 'classnames';\nimport React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { TableContext } from '../../context';\nimport { ActionCell } from '../cell/ActionCell';\nimport { CheckboxCell } from '../cell/CheckboxCell';\nimport { DataCell } from '../cell/DataCell';\nimport { validateCellValue } from '../../validateCell';\nimport { LoaderCell } from '../cell/LoaderCell';\nimport { PendingEditCell } from '../cell/PendingEditCell';\nimport { RowActionCell } from '../cell/RowActionCell';\nimport { RowOptionsCell } from '../cell/RowOptionsCell';\n\ntype TRowMetadata = {\n is_modified: object;\n is_new: boolean;\n is_deleted: boolean;\n is_added: boolean;\n __is_modified?: boolean;\n __is_edited?: boolean;\n __is_deleted?: boolean;\n __is_new?: boolean;\n __is_added?: boolean;\n};\n\ninterface TableCell {\n column: {\n key?: string;\n visible?: boolean;\n width?: number;\n sticky?: boolean;\n Header?: string;\n type?: string;\n is_required?: boolean;\n meta?: Record<string, unknown>;\n [key: string]: unknown;\n };\n value?: unknown;\n [key: string]: unknown;\n}\n\ninterface RowOriginal {\n id: string | number;\n is_read?: boolean;\n is_modified?: boolean;\n is_row_modified?: boolean;\n is_deleted?: boolean;\n is_added?: boolean;\n status?: string;\n type?: string;\n __isLoading?: boolean;\n __level?: number;\n __rowBgStatus?: string;\n __rowMetadata?: { __is_modified?: boolean };\n isDefinedActionRow?: boolean;\n isRoot?: boolean;\n name?: string | { props?: { text?: string } };\n onClick?: () => void;\n uploadCell?: boolean;\n disabled?: boolean;\n disabledTooltip?: string;\n [key: string]: unknown;\n}\n\ninterface TableRowData {\n original: RowOriginal;\n cells: TableCell[];\n getRowProps: () => Record<string, unknown>;\n index: number;\n [key: string]: unknown;\n}\n\ntype TRowOption = {\n key: string;\n label: React.ReactNode;\n isVisible?: boolean;\n [k: string]: unknown;\n};\n\ntype TProps = {\n row: TableRowData;\n isLastRow?: boolean;\n lastRow?: unknown;\n getSubRows?: () => unknown;\n prepareRow?: (row: unknown) => void;\n highlightSubstring?: (value: string) => JSX.Element;\n index: number;\n style?: Record<string, unknown>;\n visibleSubRowIds?: Record<string, unknown>;\n rowsLength?: number;\n level?: number;\n columns?: Record<string, unknown>;\n expandedRows?: Record<string, { isOpen: boolean }>;\n rows?: Array<{ original: unknown }>;\n};\n\nexport const Row = ({ row, isLastRow, lastRow, highlightSubstring, index, style, level = 0, expandedRows, rows }: TProps) => {\n const {\n lastNonStickyColumnIndex,\n checkboxConfig,\n onRowClick,\n rowOptions,\n disableOptionsForRowIndex = null,\n getSumOfNextVisibleColumnWidth,\n onRowEdit,\n inlineEditColumns,\n tableActions,\n dndSortableUtils,\n withSortable,\n withDraggable,\n getInnerRowData,\n showNewItem,\n rawData,\n dragConfig,\n getFullRowDataOnClick,\n selectedRowId,\n rowWrapper: RowWrapper,\n isCellClickDisabled,\n rowAdditionalActions,\n hoverConfig,\n addPendingEdit,\n removePendingEdit,\n fieldOperationLoading,\n clearRowPendingEdits,\n saveRowPendingEdits,\n pendingEdits: contextPendingEdits,\n } = useContext(TableContext);\n\n const tableConfig = useTableConfig();\n\n const isCheckbox = Boolean(checkboxConfig);\n const { activeInlineEdit, setActiveInlineEdit } = useContext(TableContext);\n const inlineEditing = activeInlineEdit?.rowId === row.original.id ? activeInlineEdit?.columnKey : null;\n const isInlineEditing = Boolean(inlineEditing);\n const setInlineEditing = (columnKey: string | null) => {\n if (columnKey === null) setActiveInlineEdit?.(null);\n else setActiveInlineEdit?.({ rowId: String(row.original.id), columnKey });\n };\n const [rowHovering, setRowHovering] = useState<string | number | null>(null);\n const [editedCellValue, setEditedCellValue] = useState<string | null>(null);\n const [currentData, setCurrentData] = useState<Record<string, unknown> | null>(null);\n const [loadingExpand, setLoadingExpand] = useState(false);\n const [isDraggingFile, setIsDraggingFile] = useState(false);\n\n const prevInlineEditingRef = useRef<string | null>(null);\n useEffect(() => {\n const wasEditing = prevInlineEditingRef.current;\n const isNowEditing = inlineEditing;\n\n if (wasEditing && !isNowEditing) {\n const pendingEdit = contextPendingEdits?.[row.original.id]?.[wasEditing];\n if (pendingEdit) {\n const currentCell = row.cells?.find((c: TableCell) => c.column?.key === wasEditing);\n if (currentCell) {\n const result = validateCellValue(pendingEdit.value, currentCell.column as { type?: string; is_required?: boolean });\n if (!result.isValid && addPendingEdit) {\n addPendingEdit(String(row.original.id), wasEditing, {\n ...pendingEdit,\n validationError: result.error,\n });\n }\n }\n }\n }\n\n prevInlineEditingRef.current = isNowEditing ?? null;\n }, [inlineEditing, row.original.id, row.cells, contextPendingEdits, addPendingEdit]);\n\n useEffect(() => {\n if (rawData) {\n const idKey = String(row?.original?.id);\n setCurrentData(rawData[idKey]?.[row?.cells[0].column.Header as string] || rawData[idKey]?.[0]);\n }\n }, [rawData, row?.original?.id, row?.cells]);\n\n const sortableResult = useSortable({ id: row.original.id, data: { ...row.original }, disabled: !withSortable });\n const draggableResult = useDraggable({ id: row.original.id, data: { ...row.original }, disabled: !!withSortable });\n const { listeners, transform, setNodeRef, isDragging, attributes, active, over, ...rest } = withSortable\n ? sortableResult\n : draggableResult;\n\n const { setNodeRef: setDroppableNodeRef } = useDroppable({\n id: `table-file-dropzone-${row?.original?.id}`,\n data: { type: 'table-file-dropzone', folderId: row?.original?.id, isFolder: row?.original?.type === 'folder' },\n });\n\n const dndStyles = {\n transform: CSS.Transform.toString(transform),\n transition: withSortable ? (rest as { transition?: string }).transition : undefined,\n cursor: isDragging ? 'grabbing' : 'grab',\n opacity: isDragging ? '0.5' : '1',\n };\n\n const isOverOtherContext = (): boolean => {\n if (!active || !over || !withSortable) return false;\n if (dndSortableUtils?.checkOverEachItem) return dndSortableUtils.checkOverEachItem(active, over) && Boolean(over);\n return active.data.current?.type !== over.data.current?.type && Boolean(over);\n };\n\n const handleCellValueChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setEditedCellValue(e.target.value);\n };\n\n const handleCloseEdit = () => {\n if (fieldOperationLoading) return;\n setInlineEditing(null);\n };\n\n const validationRef = useRef<(() => { isValid: boolean; value?: string | boolean | null; meta?: Record<string, unknown> | null }) | null>(null);\n\n const registerValidation = useCallback(\n (validateFn: () => { isValid: boolean; value?: string | boolean | null; meta?: Record<string, unknown> | null }) => {\n validationRef.current = validateFn;\n },\n [],\n );\n\n const tableConfigRef = useRef(tableConfig);\n tableConfigRef.current = tableConfig;\n\n const handleRowCancelEdit = useCallback(() => {\n if (clearRowPendingEdits) clearRowPendingEdits(String(row.original.id));\n }, [clearRowPendingEdits, row.original.id]);\n\n const handleRowConfirmEdit = useCallback(() => {\n if (validationRef.current) {\n const result = validationRef.current();\n if (!result.isValid) return;\n if (inlineEditing && result.value !== undefined && addPendingEdit) {\n addPendingEdit(String(row.original.id), inlineEditing, {\n value: result.value,\n originalValue: row.original[inlineEditing],\n meta: result.meta || undefined,\n });\n }\n } else if (inlineEditing) {\n const currentCell = row.cells?.find((c: TableCell) => c.column?.key === inlineEditing);\n if (currentCell) {\n const pendingValue = contextPendingEdits?.[row.original.id]?.[inlineEditing]?.value;\n const valueToValidate = pendingValue !== undefined ? pendingValue : currentCell.value;\n const result = validateCellValue(valueToValidate as string | boolean | null | undefined, currentCell.column as { type?: string; is_required?: boolean });\n if (!result.isValid) {\n tableConfigRef.current?.showNotification?.('error', result.error || 'Validation failed');\n return;\n }\n }\n }\n\n if (saveRowPendingEdits) saveRowPendingEdits(String(row.original.id));\n }, [saveRowPendingEdits, row.original, row.cells, inlineEditing, addPendingEdit, contextPendingEdits]);\n\n const handleUpdateCellData = (\n directValue?: string | boolean | null,\n meta?: { currency_code?: string | null; reference?: unknown | null;[key: string]: unknown | null } | null,\n ) => {\n const _item = { ...row.original };\n const updatedValue = directValue !== undefined ? directValue : editedCellValue;\n if (inlineEditing && updatedValue !== undefined) {\n _item[inlineEditing] = updatedValue;\n if (onRowEdit) onRowEdit(_item, index, inlineEditing, updatedValue, meta);\n if (removePendingEdit) removePendingEdit(String(row.original.id), inlineEditing);\n }\n handleCloseEdit();\n };\n\n const ref = useRef<HTMLElement>(null);\n\n const handleCellClick = (event: React.MouseEvent, data: string | Record<string, unknown>, idx: number, key: string) => {\n if (isCellClickDisabled) return;\n event?.stopPropagation();\n if (inlineEditing === key) return;\n\n if (onRowEdit) {\n if (inlineEditColumns?.includes(key)) {\n setInlineEditing(key);\n setEditedCellValue(String(row.original[key]));\n } else {\n const msg = tableConfig?.getSystemMessage?.('notAllowedInlineEdit') || 'Inline Edit is not allowed for this column';\n tableConfig?.showNotification?.('error', msg);\n }\n return;\n }\n\n if (onRowClick) {\n onRowClick(data, idx, row.original, rows?.map((_row: { original: unknown }) => _row.original) || []);\n } else if (!onRowClick && checkboxConfig) {\n const _id = row.original.id;\n const checkEvent = { target: { checked: !checkboxConfig.checkedIds.includes(_id) } };\n checkboxConfig.onItemCheck(checkEvent, _id);\n }\n };\n\n const toggleRowExpand = async () => {\n setLoadingExpand(true);\n if (getInnerRowData) {\n await getInnerRowData(row?.original?.id, row?.original, !(expandedRows?.[row?.original?.id as string]?.isOpen ?? false), row?.original?.__level || 0);\n }\n setLoadingExpand(false);\n };\n\n\n\n\n const totalWidth = useMemo(() => {\n return row.cells.filter((c: TableCell) => c.column?.visible).map((c: TableCell) => c.column?.width ?? 0).reduce((a: number, b: number) => a + b, 0);\n }, [row.cells]);\n\n const isDraggingOver = useMemo(() => {\n return dragConfig?.draggingOver && dragConfig?.draggingOver === row?.original?.id;\n }, [dragConfig, row?.original?.id]);\n\n const dropPosition = useMemo(() => {\n if (!isDraggingOver) return null;\n return dragConfig?.dropPosition || 'inside';\n }, [isDraggingOver, dragConfig?.dropPosition]);\n\n const isDraggingOverInside = Boolean(isDraggingOver && dropPosition === 'inside');\n\n const _meta = (row?.original?.__rowMetadata as TRowMetadata) || (row?.original?._meta as TRowMetadata | undefined);\n const _notHovering = rowHovering !== row?.original?.id;\n const _notLoading = !row?.original?.__isLoading;\n const _isNewRow = !!(\n _meta?.__is_new ||\n _meta?.__is_added ||\n row?.original?.is_added ||\n (currentData?.is_added as boolean) ||\n _meta?.is_added ||\n _meta?.is_new\n );\n const _isDeletedRow = !!(row?.original?.is_deleted || _meta?.__is_deleted || (currentData?.is_deleted as boolean) || _meta?.is_deleted);\n const _isModifiedRow =\n !!(\n row?.original?.is_modified ||\n row?.original?.is_row_modified ||\n _meta?.__is_modified ||\n _meta?.__is_edited ||\n (currentData?.is_row_modified as boolean) ||\n _meta?.is_modified\n ) && !_isNewRow;\n\n const isSelected =\n selectedRowId !== null && selectedRowId !== undefined && String(selectedRowId) === String(row?.original?.id);\n\n const bgColor = cn({\n 'bg-neutral-100 dark:bg-black-600': rowHovering === row?.original?.id && !isInlineEditing,\n 'bg-primary-100 dark:bg-primary-950': isSelected && _notHovering && !isInlineEditing,\n 'bg-primary-50 dark:bg-black-700': !row?.original?.is_read && showNewItem && !row?.original?.__isLoading && _notHovering && !isInlineEditing,\n // 'bg-white dark:bg-black-700': cell.column.sticky && rowHovering !== id,\n 'bg-warning-50 dark:bg-warning-975': _isModifiedRow && _notLoading && _notHovering && !isInlineEditing,\n 'bg-error-50 dark:bg-error-975': _isDeletedRow && _notLoading && _notHovering && !isInlineEditing,\n 'bg-success-50 dark:bg-success-975': _isNewRow && _notLoading && _notHovering && !isInlineEditing,\n 'bg-primary-50 dark:bg-primary-900': isInlineEditing,\n [getTableRowBgClassNamesByStatus[row?.original?.__rowBgStatus as string]]: row?.original?.__rowBgStatus && !isInlineEditing,\n });\n\n return (\n <tr\n {...row.getRowProps()}\n ref={withDraggable || withSortable ? setNodeRef : null}\n key={row.original.id}\n data-row-id={row.original.id}\n className={cn(\n `text-neutral-900 dark:text-white cursor-pointer min-w-full relative ${checkboxConfig?.selectionDisabledRowIds?.includes(row?.original?.id) ? 'opacity-50' : ''} border-t`,\n isDragging ? 'z-40' : '',\n isOverOtherContext() ? 'shadow-dnd-drop' : '',\n withDraggable && over && over?.data?.current?.type === 'table-file-dropzone' && over?.data?.current?.folderId === row?.original?.id && row?.original?.type === 'folder' ? 'bg-primary-50' : '',\n row?.original?.isDefinedActionRow ? 'bg-primary-50' : '',\n isDraggingOverInside ? 'z-50' : '',\n bgColor ? bgColor : 'bg-white dark:bg-black-800',\n )}\n style={{ ...style, ...(withSortable ? dndStyles : {}), width: 'max-content' }}\n {...(withDraggable || withSortable ? attributes : {})}\n {...(withDraggable || withSortable ? listeners : {})}\n >\n {isDraggingOverInside && dragConfig?.dragOperation ? (\n <div className='absolute right-2 h-row flex items-center z-20 pointer-events-none'>\n <div className='bg-primary-200 px-2 py-1 rounded'>\n {dragConfig?.dragOperation === 'COPY' ? (\n <AddRounded sx={{ fontSize: 12 }} className='text-primary-700' />\n ) : (\n <SubdirectoryArrowLeftRounded sx={{ fontSize: 12 }} className='text-primary-700' />\n )}\n </div>\n </div>\n ) : null}\n {isDraggingOverInside && !dragConfig?.dragOperation ? (\n <div className='absolute right-2 h-row flex items-center z-20 pointer-events-none'>\n <SubdirectoryArrowLeftRounded sx={{ fontSize: 16 }} className='text-primary-500' />\n </div>\n ) : null}\n {isDraggingOver && dropPosition === 'before' && !row?.original?.isDefinedActionRow ? (\n <div className='absolute -top-[1px] left-0 right-0 h-[2px] bg-primary-500 z-20 pointer-events-none'>\n <div className='absolute left-0 top-1/2 -translate-y-1/2 w-2 h-2 rounded-full bg-primary-500' />\n </div>\n ) : null}\n {isDraggingOver && dropPosition === 'after' && !row?.original?.isDefinedActionRow ? (\n <div className='absolute -bottom-[1px] left-0 right-0 h-[2px] bg-primary-500 z-20 pointer-events-none'>\n <div className='absolute left-0 top-1/2 -translate-y-1/2 w-2 h-2 rounded-full bg-primary-500' />\n </div>\n ) : null}\n\n {row?.original?.isDefinedActionRow ? (\n <ActionCell\n cells={row.cells}\n id={row?.original?.id}\n isCheckbox={checkboxConfig}\n level={level}\n name={row?.original?.name as string}\n onClick={row?.original?.onClick as () => void}\n rowHovering={rowHovering || ''}\n isRoot={row?.original?.isRoot as boolean}\n totalWidth={totalWidth}\n row={row.original as Record<string, unknown>}\n uploadCell={row?.original?.uploadCell as boolean}\n disabled={row?.original?.disabled as boolean}\n disabledTooltip={row?.original?.disabledTooltip as string}\n />\n ) : RowWrapper ? (\n <RowWrapper data={row.original} setIsDraggingFile={setIsDraggingFile}>\n <RowContent\n isDraggingOver={isDraggingOverInside}\n level={level}\n withDraggable={withDraggable}\n setDroppableNodeRef={setDroppableNodeRef}\n isLastRow={isLastRow}\n lastRow={lastRow}\n isCheckbox={isCheckbox}\n checkboxConfig={checkboxConfig}\n row={row}\n rowHovering={rowHovering}\n tableActions={tableActions}\n disableOptionsForRowIndex={disableOptionsForRowIndex}\n index={index}\n showNewItem={showNewItem}\n currentData={currentData}\n lastNonStickyColumnIndex={lastNonStickyColumnIndex}\n getSumOfNextVisibleColumnWidth={getSumOfNextVisibleColumnWidth}\n toggleRowExpand={toggleRowExpand}\n loadingExpand={loadingExpand}\n cellRef={ref}\n handleCellClick={handleCellClick}\n getFullRowDataOnClick={getFullRowDataOnClick}\n handleCellValueChange={handleCellValueChange}\n handleUpdateCellData={handleUpdateCellData}\n handleRowCancelEdit={handleRowCancelEdit}\n handleRowConfirmEdit={handleRowConfirmEdit}\n registerValidation={registerValidation}\n inlineEditing={inlineEditing}\n isInlineEditing={isInlineEditing}\n setRowHovering={setRowHovering}\n highlightSubstring={highlightSubstring}\n rowOptions={rowOptions}\n isDraggingFile={isDraggingFile}\n rowAdditionalActions={rowAdditionalActions}\n hoverConfig={hoverConfig}\n isSelected={isSelected}\n />\n </RowWrapper>\n ) : (\n <RowContent\n level={level}\n withDraggable={withDraggable}\n setDroppableNodeRef={setDroppableNodeRef}\n isLastRow={isLastRow}\n lastRow={lastRow}\n isCheckbox={isCheckbox}\n checkboxConfig={checkboxConfig}\n row={row}\n rowHovering={rowHovering}\n tableActions={tableActions}\n disableOptionsForRowIndex={disableOptionsForRowIndex}\n index={index}\n showNewItem={showNewItem}\n currentData={currentData}\n lastNonStickyColumnIndex={lastNonStickyColumnIndex}\n getSumOfNextVisibleColumnWidth={getSumOfNextVisibleColumnWidth}\n toggleRowExpand={toggleRowExpand}\n loadingExpand={loadingExpand}\n cellRef={ref}\n handleCellClick={handleCellClick}\n getFullRowDataOnClick={getFullRowDataOnClick}\n handleCellValueChange={handleCellValueChange}\n handleUpdateCellData={handleUpdateCellData}\n handleRowCancelEdit={handleRowCancelEdit}\n handleRowConfirmEdit={handleRowConfirmEdit}\n registerValidation={registerValidation}\n inlineEditing={inlineEditing}\n isInlineEditing={isInlineEditing}\n setRowHovering={setRowHovering}\n highlightSubstring={highlightSubstring}\n rowOptions={rowOptions}\n isDraggingFile={isDraggingFile}\n isDraggingOver={isDraggingOverInside}\n rowAdditionalActions={rowAdditionalActions}\n hoverConfig={hoverConfig}\n isSelected={isSelected}\n />\n )}\n </tr>\n );\n};\n\ninterface RowContentProps {\n withDraggable?: boolean;\n setDroppableNodeRef: (node: HTMLElement | null) => void;\n isLastRow?: boolean;\n lastRow?: unknown;\n isCheckbox: boolean;\n checkboxConfig: Record<string, unknown> | null;\n row: TableRowData;\n rowHovering: string | number | null;\n tableActions?: ((rowData: Record<string, unknown>, index: number) => React.ReactNode) | null;\n disableOptionsForRowIndex?: number | null;\n index: number;\n showNewItem?: boolean;\n currentData: Record<string, unknown> | null;\n lastNonStickyColumnIndex?: (() => number | null) | null;\n getSumOfNextVisibleColumnWidth?: (index: number) => number | null;\n toggleRowExpand: () => Promise<void>;\n loadingExpand: boolean;\n cellRef: React.RefObject<HTMLElement | null>;\n handleCellClick: (event: React.MouseEvent, data: string | Record<string, unknown>, idx: number, key: string) => void;\n getFullRowDataOnClick?: boolean;\n handleCellValueChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n handleUpdateCellData: (directValue?: string | boolean | null, meta?: Record<string, unknown> | null) => void;\n handleRowCancelEdit: () => void;\n handleRowConfirmEdit: () => void;\n registerValidation: (fn: () => { isValid: boolean; value?: string | boolean | null; meta?: Record<string, unknown> | null }) => void;\n inlineEditing: string | null;\n isInlineEditing: boolean;\n setRowHovering: (id: string | number | null) => void;\n highlightSubstring?: (value: string) => React.ReactNode;\n rowOptions?: TRowOption[] | ((rowData: Record<string, unknown>) => TRowOption[] | null) | null;\n level?: number;\n isDraggingFile?: boolean;\n isDraggingOver?: boolean;\n rowAdditionalActions?: unknown;\n hoverConfig?: { onHover?: (data: Record<string, unknown>) => React.ReactNode };\n isSelected?: boolean;\n}\n\nconst RowContent = ({\n withDraggable,\n setDroppableNodeRef,\n isLastRow,\n lastRow,\n isCheckbox,\n checkboxConfig,\n row,\n rowHovering,\n tableActions,\n disableOptionsForRowIndex,\n index,\n showNewItem,\n currentData,\n lastNonStickyColumnIndex,\n getSumOfNextVisibleColumnWidth,\n toggleRowExpand,\n loadingExpand,\n cellRef,\n handleCellClick,\n getFullRowDataOnClick,\n handleCellValueChange,\n handleUpdateCellData,\n handleRowCancelEdit,\n handleRowConfirmEdit,\n registerValidation,\n inlineEditing,\n isInlineEditing,\n setRowHovering,\n highlightSubstring,\n rowOptions,\n level,\n isDraggingFile,\n isDraggingOver,\n rowAdditionalActions,\n hoverConfig,\n isSelected,\n}: RowContentProps) => {\n const [isRowContentHovering, setIsRowContentHovering] = useState(false);\n const {\n getPendingEdit: getPendingEditFn,\n hasPendingEdit: hasPendingEditFn,\n pendingEdits,\n tableHeaders,\n pendingEditsCount,\n scrollToCell,\n } = useContext(TableContext);\n const rowHasPendingEdits = pendingEdits?.[row.original.id] && Object.keys(pendingEdits[row.original.id]).length > 0;\n const tableHasAnyPendingEdits = (pendingEditsCount ?? 0) > 0;\n const resolvedRowOptions = useMemo<TRowOption[]>(() => {\n if (Array.isArray(rowOptions)) return rowOptions;\n if (typeof rowOptions === 'function') {\n const options = rowOptions({ ...row.original, rowIndex: index });\n return Array.isArray(options) ? options : [];\n }\n return [];\n }, [rowOptions, row.original, index]);\n\n\n const _meta = (row?.original?.__rowMetadata as TRowMetadata | undefined) || (row?.original?._meta as TRowMetadata | undefined);\n const _notHovering = rowHovering !== row?.original?.id;\n const _notLoading = !row?.original?.__isLoading;\n const _isNewRow = !!(\n _meta?.__is_new ||\n _meta?.__is_added ||\n row?.original?.is_added ||\n (currentData?.is_added as boolean) ||\n _meta?.is_added ||\n _meta?.is_new\n );\n const _isDeletedRow = !!(row?.original?.is_deleted || _meta?.__is_deleted || (currentData?.is_deleted as boolean) || _meta?.is_deleted);\n const _isModifiedRow =\n !!(\n row?.original?.is_modified ||\n row?.original?.is_row_modified ||\n _meta?.__is_modified ||\n _meta?.__is_edited ||\n (currentData?.is_row_modified as boolean) ||\n _meta?.is_deleted\n ) && !_isNewRow;\n\n // Only apply the selected background when the row is not being hovered, so on hover the icon cells\n // (checkbox, actions, options) fall back to the same gray hover background as the data cells.\n const selectedBg =\n isSelected && !isInlineEditing && rowHovering !== row?.original?.id ? 'bg-primary-100 dark:bg-primary-950' : undefined;\n\n const statusBorderClass = cn('pointer-events-none absolute left-0 top-0 bottom-0 w-[3px] z-40', {\n 'bg-success-400 dark:bg-success-500': _isNewRow && _notLoading && _notHovering && !isInlineEditing,\n 'bg-error-400 dark:bg-error-500': _isDeletedRow && _notLoading && _notHovering && !isInlineEditing,\n 'bg-warning-400 dark:bg-warning-500': _isModifiedRow && _notLoading && _notHovering && !isInlineEditing,\n });\n\n return (\n <div\n ref={withDraggable ? setDroppableNodeRef : null}\n className={isDraggingOver ? 'border-2 border-primary-400 dark:border-primary-500 rounded-sm' : ''}\n >\n <div className={statusBorderClass} />\n <div className='flex' ref={isLastRow ? (lastRow as React.Ref<HTMLDivElement>) : null}>\n {tableHasAnyPendingEdits && (\n <PendingEditCell\n rowId={String(row.original.id)}\n rowIndex={index}\n pendingEdits={pendingEdits}\n tableHeaders={tableHeaders}\n rowHasPendingEdits={!!rowHasPendingEdits}\n rowHovering={rowHovering != null ? String(rowHovering) : undefined}\n isInlineEditing={isInlineEditing}\n is_read={!!row.original.is_read}\n is_modified={_isModifiedRow}\n is_row_modified={!!row.original.is_row_modified}\n is_deleted={_isDeletedRow}\n is_added={_isNewRow}\n is_incomplete={row?.original?.status === 'Incomplete'}\n showNewItem={showNewItem}\n onScrollToCell={scrollToCell}\n />\n )}\n\n {isCheckbox && (\n <CheckboxCell\n checkboxConfig={checkboxConfig as never}\n id={String(row.original.id)}\n rowHovering={rowHovering != null ? String(rowHovering) : undefined}\n isDisabled={!!row?.original?.__isLoading}\n isDraggingOver={isDraggingOver}\n is_added={_isNewRow}\n is_deleted={_isDeletedRow}\n is_incomplete={row?.original?.status === 'Incomplete'}\n is_modified={_isModifiedRow}\n is_read={!!row.original.is_read}\n is_row_modified={!!row.original.is_row_modified}\n showNewItem={showNewItem}\n currentData={currentData ?? {}}\n bgColor={row?.original?.__rowBgStatus ? getTableRowBgClassNamesByStatus[row?.original?.__rowBgStatus as string] : selectedBg}\n isInlineEditing={isInlineEditing}\n hasPendingEditsColumn={tableHasAnyPendingEdits}\n rowHasPendingEdits={rowHasPendingEdits}\n />\n )}\n\n {tableActions ? (\n <RowActionCell\n tableActions={tableActions as (rowData: Record<string, unknown>, index: number) => JSX.Element}\n disableOptionsForRowIndex={disableOptionsForRowIndex ?? null}\n id={String(row.original.id)}\n index={index}\n is_read={!!row?.original?.is_read}\n is_incomplete={row?.original?.status === 'Incomplete'}\n showNewItem={!!showNewItem}\n is_modified={_isModifiedRow}\n is_row_modified={!!row?.original?.is_row_modified}\n is_deleted={_isDeletedRow}\n currentData={currentData ?? {}}\n is_added={_isNewRow}\n rowData={row.original as Record<string, unknown>}\n rowHovering={rowHovering}\n isDisabled={!!row?.original?.__isLoading}\n bgColor={isDraggingFile ? 'bg-primary-50' : row?.original?.__rowBgStatus ? getTableRowBgClassNamesByStatus[row?.original?.__rowBgStatus as string] : selectedBg}\n isInlineEditing={isInlineEditing}\n rowHasPendingEdits={rowHasPendingEdits}\n />\n ) : null}\n\n <div\n className='relative flex-1'\n id={`row-${row.original.id}`}\n onMouseEnter={() => setIsRowContentHovering(true)}\n onMouseLeave={() => setIsRowContentHovering(false)}\n >\n {row.cells\n .filter((cell: TableCell) => cell?.column?.visible !== false)\n .map((cell: TableCell, y: number) => {\n const isLastCell = y === lastNonStickyColumnIndex?.();\n const isFirstStickyCell = y === (lastNonStickyColumnIndex?.() ?? -1) + 1;\n const nextWidthSum = cell?.column?.sticky ? (getSumOfNextVisibleColumnWidth?.(y) ?? 0) : 0;\n\n if (row.original?.__isLoading) {\n return (\n <LoaderCell cell={cell as unknown as { column: { width: number; sticky?: boolean; sequence?: number } }} id={y} nextWidthSum={nextWidthSum} isLastCell={isLastCell} rowHovering={rowHovering} index={y} key={y} isFirstStickyCell={isFirstStickyCell} />\n );\n }\n\n const pendingEdit = getPendingEditFn?.(String(row.original.id), cell?.column?.key || '');\n const hasPending = hasPendingEditFn?.(String(row.original.id), cell?.column?.key || '');\n\n return (\n <DataCell\n cell={cell as unknown as import('../../types').ICell}\n rowHovering={rowHovering}\n isFirstStickyCell={isFirstStickyCell}\n level={level ?? 0}\n toggleRowExpand={toggleRowExpand}\n loadingExpand={loadingExpand}\n key={cell?.column?.key}\n index={y}\n cellRef={cellRef as React.RefObject<HTMLDivElement>}\n currentData={currentData as { is_row_modified?: boolean; is_deleted?: boolean; is_added?: boolean }}\n handleCellClick={(e?: React.MouseEvent) => { if (e) handleCellClick(e, getFullRowDataOnClick ? row.original : String(row.original.id), y, cell?.column?.key || ''); }}\n handleCellValueChange={handleCellValueChange}\n handleUpdateCellData={handleUpdateCellData}\n registerValidation={registerValidation}\n id={row.original.id}\n inlineEditing={inlineEditing}\n isInlineEditing={isInlineEditing}\n isLastCell={isLastCell}\n is_incomplete={row?.original?.status === 'Incomplete'}\n is_added={_isNewRow}\n is_deleted={_isDeletedRow}\n is_modified={_isModifiedRow}\n is_read={!!row.original.is_read}\n is_row_modified={!!row.original.is_row_modified}\n nextWidthSum={nextWidthSum}\n setRowHovering={setRowHovering}\n highlightSubstring={highlightSubstring as ((value: string) => JSX.Element) | undefined}\n isDraggingOver={isDraggingOver}\n isLoading={!!row?.original?.__isLoading}\n pendingEdit={pendingEdit}\n hasPendingEdit={hasPending}\n pendingValidationError={pendingEdit?.validationError}\n />\n );\n })}\n\n {hoverConfig?.onHover &&\n isRowContentHovering &&\n createPortal(\n <div className='absolute top-full left-10 z-50 bg-white dark:bg-black-800 rounded-xl'>{hoverConfig.onHover(row.original) as React.ReactNode}</div>,\n document.getElementById(`row-${row.original.id}`) as HTMLElement,\n )}\n </div>\n\n {(resolvedRowOptions.length > 0 || !!rowAdditionalActions) && (\n <RowOptionsCell\n rowId={row.original.id}\n rowOptions={resolvedRowOptions}\n disableOption={disableOptionsForRowIndex !== null || !!row?.original?.__isLoading}\n rowHovering={rowHovering}\n setRowHovering={setRowHovering}\n is_read={!!row.original.is_read}\n showNewItem={!!showNewItem}\n is_modified={_isModifiedRow}\n is_row_modified={!!row.original.is_row_modified}\n is_incomplete={row?.original?.status === 'Incomplete'}\n currentData={currentData ?? {}}\n is_deleted={_isDeletedRow}\n is_added={_isNewRow}\n isDraggingOver={!!isDraggingOver}\n rowAdditionalActions={rowAdditionalActions as (rowData: Record<string, unknown>, index: number, isHovering: boolean) => React.ReactNode}\n rowData={row.original as Record<string, unknown>}\n index={index}\n bgColor={row?.original?.__rowBgStatus ? getTableRowBgClassNamesByStatus[row?.original?.__rowBgStatus as string] : selectedBg}\n isInlineEditing={isInlineEditing}\n onConfirmEdit={handleRowConfirmEdit}\n onCancelEdit={handleRowCancelEdit}\n rowHasPendingEdits={rowHasPendingEdits}\n />\n )}\n </div>\n </div>\n );\n};\n"],"names":["Row","row","isLastRow","lastRow","highlightSubstring","index","style","level","expandedRows","rows","lastNonStickyColumnIndex","checkboxConfig","onRowClick","rowOptions","disableOptionsForRowIndex","getSumOfNextVisibleColumnWidth","onRowEdit","inlineEditColumns","tableActions","dndSortableUtils","withSortable","withDraggable","getInnerRowData","showNewItem","rawData","dragConfig","getFullRowDataOnClick","selectedRowId","RowWrapper","isCellClickDisabled","rowAdditionalActions","hoverConfig","addPendingEdit","removePendingEdit","fieldOperationLoading","clearRowPendingEdits","saveRowPendingEdits","contextPendingEdits","useContext","TableContext","tableConfig","useTableConfig","isCheckbox","activeInlineEdit","setActiveInlineEdit","inlineEditing","isInlineEditing","setInlineEditing","columnKey","rowHovering","setRowHovering","useState","editedCellValue","setEditedCellValue","currentData","setCurrentData","loadingExpand","setLoadingExpand","isDraggingFile","setIsDraggingFile","prevInlineEditingRef","useRef","useEffect","wasEditing","isNowEditing","pendingEdit","currentCell","c","result","validateCellValue","idKey","sortableResult","useSortable","draggableResult","useDraggable","listeners","transform","setNodeRef","isDragging","attributes","active","over","rest","setDroppableNodeRef","useDroppable","dndStyles","CSS","isOverOtherContext","handleCellValueChange","e","handleCloseEdit","validationRef","registerValidation","useCallback","validateFn","tableConfigRef","handleRowCancelEdit","handleRowConfirmEdit","pendingValue","valueToValidate","handleUpdateCellData","directValue","meta","_item","updatedValue","ref","handleCellClick","event","data","idx","key","msg","_row","_id","checkEvent","toggleRowExpand","totalWidth","useMemo","a","b","isDraggingOver","dropPosition","isDraggingOverInside","_meta","_notHovering","_notLoading","_isNewRow","_isDeletedRow","_isModifiedRow","isSelected","bgColor","cn","getTableRowBgClassNamesByStatus","createElement","jsx","AddRounded","SubdirectoryArrowLeftRounded","ActionCell","RowContent","cellRef","isRowContentHovering","setIsRowContentHovering","getPendingEditFn","hasPendingEditFn","pendingEdits","tableHeaders","pendingEditsCount","scrollToCell","rowHasPendingEdits","tableHasAnyPendingEdits","resolvedRowOptions","options","selectedBg","statusBorderClass","jsxs","PendingEditCell","CheckboxCell","RowActionCell","cell","y","isLastCell","isFirstStickyCell","nextWidthSum","LoaderCell","hasPending","DataCell","createPortal","RowOptionsCell"],"mappings":"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"}
1
+ {"version":3,"file":"row.es.js","sources":["../../../../../../src/components/data-display/infinite-table/body/rows/row.tsx"],"sourcesContent":["import { getTableRowBgClassNamesByStatus } from '../../../../../constants/table';\nimport { useTableConfig } from '../../../../../providers/design-system-provider/hooks';\nimport { useDraggable, useDroppable } from '@dnd-kit/core';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { SubdirectoryArrowLeftRounded } from '@mui/icons-material';\nimport AddRounded from '@mui/icons-material/AddRounded';\nimport cn from 'classnames';\nimport React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { TableContext } from '../../context';\nimport { ActionCell } from '../cell/ActionCell';\nimport { CheckboxCell } from '../cell/CheckboxCell';\nimport { DataCell } from '../cell/DataCell';\nimport { validateCellValue } from '../../validateCell';\nimport { LoaderCell } from '../cell/LoaderCell';\nimport { PendingEditCell } from '../cell/PendingEditCell';\nimport { RowActionCell } from '../cell/RowActionCell';\nimport { RowOptionsCell } from '../cell/RowOptionsCell';\n\ntype TRowMetadata = {\n is_modified: object;\n is_new: boolean;\n is_deleted: boolean;\n is_added: boolean;\n __is_modified?: boolean;\n __is_edited?: boolean;\n __is_deleted?: boolean;\n __is_new?: boolean;\n __is_added?: boolean;\n};\n\ninterface TableCell {\n column: {\n key?: string;\n visible?: boolean;\n width?: number;\n sticky?: boolean;\n Header?: string;\n type?: string;\n is_required?: boolean;\n meta?: Record<string, unknown>;\n [key: string]: unknown;\n };\n value?: unknown;\n [key: string]: unknown;\n}\n\ninterface RowOriginal {\n id: string | number;\n is_read?: boolean;\n is_modified?: boolean;\n is_row_modified?: boolean;\n is_deleted?: boolean;\n is_added?: boolean;\n status?: string;\n type?: string;\n __isLoading?: boolean;\n __level?: number;\n __rowBgStatus?: string;\n __rowMetadata?: { __is_modified?: boolean };\n isDefinedActionRow?: boolean;\n isRoot?: boolean;\n name?: string | { props?: { text?: string } };\n onClick?: () => void;\n uploadCell?: boolean;\n disabled?: boolean;\n disabledTooltip?: string;\n [key: string]: unknown;\n}\n\ninterface TableRowData {\n original: RowOriginal;\n cells: TableCell[];\n getRowProps: () => Record<string, unknown>;\n index: number;\n [key: string]: unknown;\n}\n\ntype TRowOption = {\n key: string;\n label: React.ReactNode;\n isVisible?: boolean;\n [k: string]: unknown;\n};\n\ntype TProps = {\n row: TableRowData;\n isLastRow?: boolean;\n lastRow?: unknown;\n getSubRows?: () => unknown;\n prepareRow?: (row: unknown) => void;\n highlightSubstring?: (value: string) => JSX.Element;\n index: number;\n style?: Record<string, unknown>;\n visibleSubRowIds?: Record<string, unknown>;\n rowsLength?: number;\n level?: number;\n columns?: Record<string, unknown>;\n expandedRows?: Record<string, { isOpen: boolean }>;\n rows?: Array<{ original: unknown }>;\n};\n\nexport const Row = ({ row, isLastRow, lastRow, highlightSubstring, index, style, level = 0, expandedRows, rows }: TProps) => {\n const {\n lastNonStickyColumnIndex,\n checkboxConfig,\n onRowClick,\n rowOptions,\n disableOptionsForRowIndex = null,\n getSumOfNextVisibleColumnWidth,\n onRowEdit,\n inlineEditColumns,\n tableActions,\n dndSortableUtils,\n withSortable,\n withDraggable,\n getInnerRowData,\n showNewItem,\n rawData,\n dragConfig,\n getFullRowDataOnClick,\n selectedRowId,\n rowWrapper: RowWrapper,\n isCellClickDisabled,\n rowAdditionalActions,\n hoverConfig,\n addPendingEdit,\n removePendingEdit,\n fieldOperationLoading,\n clearRowPendingEdits,\n saveRowPendingEdits,\n pendingEdits: contextPendingEdits,\n } = useContext(TableContext);\n\n const tableConfig = useTableConfig();\n\n const isCheckbox = Boolean(checkboxConfig);\n const { activeInlineEdit, setActiveInlineEdit } = useContext(TableContext);\n const inlineEditing = activeInlineEdit?.rowId === row.original.id ? activeInlineEdit?.columnKey : null;\n const isInlineEditing = Boolean(inlineEditing);\n const setInlineEditing = (columnKey: string | null) => {\n if (columnKey === null) setActiveInlineEdit?.(null);\n else setActiveInlineEdit?.({ rowId: String(row.original.id), columnKey });\n };\n const [rowHovering, setRowHovering] = useState<string | number | null>(null);\n const [editedCellValue, setEditedCellValue] = useState<string | null>(null);\n const [currentData, setCurrentData] = useState<Record<string, unknown> | null>(null);\n const [loadingExpand, setLoadingExpand] = useState(false);\n const [isDraggingFile, setIsDraggingFile] = useState(false);\n\n const prevInlineEditingRef = useRef<string | null>(null);\n useEffect(() => {\n const wasEditing = prevInlineEditingRef.current;\n const isNowEditing = inlineEditing;\n\n if (wasEditing && !isNowEditing) {\n const pendingEdit = contextPendingEdits?.[row.original.id]?.[wasEditing];\n if (pendingEdit) {\n const currentCell = row.cells?.find((c: TableCell) => c.column?.key === wasEditing);\n if (currentCell) {\n const result = validateCellValue(pendingEdit.value, currentCell.column as { type?: string; is_required?: boolean });\n if (!result.isValid && addPendingEdit) {\n addPendingEdit(String(row.original.id), wasEditing, {\n ...pendingEdit,\n validationError: result.error,\n });\n }\n }\n }\n }\n\n prevInlineEditingRef.current = isNowEditing ?? null;\n }, [inlineEditing, row.original.id, row.cells, contextPendingEdits, addPendingEdit]);\n\n useEffect(() => {\n if (rawData) {\n const idKey = String(row?.original?.id);\n setCurrentData(rawData[idKey]?.[row?.cells[0].column.Header as string] || rawData[idKey]?.[0]);\n }\n }, [rawData, row?.original?.id, row?.cells]);\n\n const sortableResult = useSortable({ id: row.original.id, data: { ...row.original }, disabled: !withSortable });\n const draggableResult = useDraggable({ id: row.original.id, data: { ...row.original }, disabled: !!withSortable });\n const { listeners, transform, setNodeRef, isDragging, attributes, active, over, ...rest } = withSortable\n ? sortableResult\n : draggableResult;\n\n const { setNodeRef: setDroppableNodeRef } = useDroppable({\n id: `table-file-dropzone-${row?.original?.id}`,\n data: { type: 'table-file-dropzone', folderId: row?.original?.id, isFolder: row?.original?.type === 'folder' },\n });\n\n const dndStyles = {\n transform: CSS.Transform.toString(transform),\n transition: withSortable ? (rest as { transition?: string }).transition : undefined,\n cursor: isDragging ? 'grabbing' : 'grab',\n opacity: isDragging ? '0.5' : '1',\n };\n\n const isOverOtherContext = (): boolean => {\n if (!active || !over || !withSortable) return false;\n if (dndSortableUtils?.checkOverEachItem) return dndSortableUtils.checkOverEachItem(active, over) && Boolean(over);\n return active.data.current?.type !== over.data.current?.type && Boolean(over);\n };\n\n const handleCellValueChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setEditedCellValue(e.target.value);\n };\n\n const handleCloseEdit = () => {\n if (fieldOperationLoading) return;\n setInlineEditing(null);\n };\n\n const validationRef = useRef<(() => { isValid: boolean; value?: string | boolean | null; meta?: Record<string, unknown> | null }) | null>(null);\n\n const registerValidation = useCallback(\n (validateFn: () => { isValid: boolean; value?: string | boolean | null; meta?: Record<string, unknown> | null }) => {\n validationRef.current = validateFn;\n },\n [],\n );\n\n const tableConfigRef = useRef(tableConfig);\n tableConfigRef.current = tableConfig;\n\n const handleRowCancelEdit = useCallback(() => {\n if (clearRowPendingEdits) clearRowPendingEdits(String(row.original.id));\n }, [clearRowPendingEdits, row.original.id]);\n\n const handleRowConfirmEdit = useCallback(() => {\n if (validationRef.current) {\n const result = validationRef.current();\n if (!result.isValid) return;\n if (inlineEditing && result.value !== undefined && addPendingEdit) {\n addPendingEdit(String(row.original.id), inlineEditing, {\n value: result.value,\n originalValue: row.original[inlineEditing],\n meta: result.meta || undefined,\n });\n }\n } else if (inlineEditing) {\n const currentCell = row.cells?.find((c: TableCell) => c.column?.key === inlineEditing);\n if (currentCell) {\n const pendingValue = contextPendingEdits?.[row.original.id]?.[inlineEditing]?.value;\n const valueToValidate = pendingValue !== undefined ? pendingValue : currentCell.value;\n const result = validateCellValue(valueToValidate as string | boolean | null | undefined, currentCell.column as { type?: string; is_required?: boolean });\n if (!result.isValid) {\n tableConfigRef.current?.showNotification?.('error', result.error || 'Validation failed');\n return;\n }\n }\n }\n\n if (saveRowPendingEdits) saveRowPendingEdits(String(row.original.id));\n }, [saveRowPendingEdits, row.original, row.cells, inlineEditing, addPendingEdit, contextPendingEdits]);\n\n const handleUpdateCellData = (\n directValue?: string | boolean | null,\n meta?: { currency_code?: string | null; reference?: unknown | null;[key: string]: unknown | null } | null,\n ) => {\n const _item = { ...row.original };\n const updatedValue = directValue !== undefined ? directValue : editedCellValue;\n if (inlineEditing && updatedValue !== undefined) {\n _item[inlineEditing] = updatedValue;\n if (onRowEdit) onRowEdit(_item, index, inlineEditing, updatedValue, meta);\n if (removePendingEdit) removePendingEdit(String(row.original.id), inlineEditing);\n }\n handleCloseEdit();\n };\n\n const ref = useRef<HTMLElement>(null);\n\n const handleCellClick = (event: React.MouseEvent, data: string | Record<string, unknown>, idx: number, key: string) => {\n if (isCellClickDisabled) return;\n event?.stopPropagation();\n if (inlineEditing === key) return;\n\n if (onRowEdit) {\n if (inlineEditColumns?.includes(key)) {\n setInlineEditing(key);\n setEditedCellValue(String(row.original[key]));\n } else {\n const msg = tableConfig?.getSystemMessage?.('notAllowedInlineEdit') || 'Inline Edit is not allowed for this column';\n tableConfig?.showNotification?.('error', msg);\n }\n return;\n }\n\n if (onRowClick) {\n onRowClick(data, idx, row.original, rows?.map((_row: { original: unknown }) => _row.original) || []);\n } else if (!onRowClick && checkboxConfig) {\n const _id = row.original.id;\n const checkEvent = { target: { checked: !checkboxConfig.checkedIds.includes(_id) } };\n checkboxConfig.onItemCheck(checkEvent, _id);\n }\n };\n\n const toggleRowExpand = async () => {\n setLoadingExpand(true);\n if (getInnerRowData) {\n await getInnerRowData(row?.original?.id, row?.original, !(expandedRows?.[row?.original?.id as string]?.isOpen ?? false), row?.original?.__level || 0);\n }\n setLoadingExpand(false);\n };\n\n\n\n\n const totalWidth = useMemo(() => {\n return row.cells.filter((c: TableCell) => c.column?.visible).map((c: TableCell) => c.column?.width ?? 0).reduce((a: number, b: number) => a + b, 0);\n }, [row.cells]);\n\n const isDraggingOver = useMemo(() => {\n return dragConfig?.draggingOver && dragConfig?.draggingOver === row?.original?.id;\n }, [dragConfig, row?.original?.id]);\n\n const dropPosition = useMemo(() => {\n if (!isDraggingOver) return null;\n return dragConfig?.dropPosition || 'inside';\n }, [isDraggingOver, dragConfig?.dropPosition]);\n\n const isDraggingOverInside = Boolean(isDraggingOver && dropPosition === 'inside');\n\n const _meta = (row?.original?.__rowMetadata as TRowMetadata) || (row?.original?._meta as TRowMetadata | undefined);\n const _notHovering = rowHovering !== row?.original?.id;\n const _notLoading = !row?.original?.__isLoading;\n const _isNewRow = !!(\n _meta?.__is_new ||\n _meta?.__is_added ||\n row?.original?.is_added ||\n (currentData?.is_added as boolean) ||\n // _meta.is_added alone is not reliable — the API sends it on modified/deleted rows too; only is_new confirms \"added\".\n _meta?.is_new\n );\n const _isDeletedRow = !!(row?.original?.is_deleted || _meta?.__is_deleted || (currentData?.is_deleted as boolean) || _meta?.is_deleted);\n const _isModifiedRow =\n !!(\n row?.original?.is_modified ||\n row?.original?.is_row_modified ||\n _meta?.__is_modified ||\n _meta?.__is_edited ||\n (currentData?.is_row_modified as boolean) ||\n _meta?.is_modified\n ) && !_isNewRow;\n\n const isSelected =\n selectedRowId !== null && selectedRowId !== undefined && String(selectedRowId) === String(row?.original?.id);\n\n const bgColor = cn({\n 'bg-neutral-100 dark:bg-black-600': rowHovering === row?.original?.id && !isInlineEditing,\n 'bg-primary-100 dark:bg-primary-950': isSelected && _notHovering && !isInlineEditing,\n 'bg-primary-50 dark:bg-black-700': !row?.original?.is_read && showNewItem && !row?.original?.__isLoading && _notHovering && !isInlineEditing,\n // 'bg-white dark:bg-black-700': cell.column.sticky && rowHovering !== id,\n 'bg-warning-50 dark:bg-warning-975': _isModifiedRow && _notLoading && _notHovering && !isInlineEditing,\n 'bg-error-50 dark:bg-error-975': _isDeletedRow && _notLoading && _notHovering && !isInlineEditing,\n 'bg-success-50 dark:bg-success-975': _isNewRow && _notLoading && _notHovering && !isInlineEditing,\n 'bg-primary-50 dark:bg-primary-900': isInlineEditing,\n [getTableRowBgClassNamesByStatus[row?.original?.__rowBgStatus as string]]: row?.original?.__rowBgStatus && !isInlineEditing,\n });\n\n return (\n <tr\n {...row.getRowProps()}\n ref={withDraggable || withSortable ? setNodeRef : null}\n key={row.original.id}\n data-row-id={row.original.id}\n className={cn(\n `text-neutral-900 dark:text-white cursor-pointer min-w-full relative ${checkboxConfig?.selectionDisabledRowIds?.includes(row?.original?.id) ? 'opacity-50' : ''} border-t`,\n isDragging ? 'z-40' : '',\n isOverOtherContext() ? 'shadow-dnd-drop' : '',\n withDraggable && over && over?.data?.current?.type === 'table-file-dropzone' && over?.data?.current?.folderId === row?.original?.id && row?.original?.type === 'folder' ? 'bg-primary-50' : '',\n row?.original?.isDefinedActionRow ? 'bg-primary-50' : '',\n isDraggingOverInside ? 'z-50' : '',\n bgColor ? bgColor : 'bg-white dark:bg-black-800',\n )}\n style={{ ...style, ...(withSortable ? dndStyles : {}), width: 'max-content' }}\n {...(withDraggable || withSortable ? attributes : {})}\n {...(withDraggable || withSortable ? listeners : {})}\n >\n {isDraggingOverInside && dragConfig?.dragOperation ? (\n <div className='absolute right-2 h-row flex items-center z-20 pointer-events-none'>\n <div className='bg-primary-200 px-2 py-1 rounded'>\n {dragConfig?.dragOperation === 'COPY' ? (\n <AddRounded sx={{ fontSize: 12 }} className='text-primary-700' />\n ) : (\n <SubdirectoryArrowLeftRounded sx={{ fontSize: 12 }} className='text-primary-700' />\n )}\n </div>\n </div>\n ) : null}\n {isDraggingOverInside && !dragConfig?.dragOperation ? (\n <div className='absolute right-2 h-row flex items-center z-20 pointer-events-none'>\n <SubdirectoryArrowLeftRounded sx={{ fontSize: 16 }} className='text-primary-500' />\n </div>\n ) : null}\n {isDraggingOver && dropPosition === 'before' && !row?.original?.isDefinedActionRow ? (\n <div className='absolute -top-[1px] left-0 right-0 h-[2px] bg-primary-500 z-20 pointer-events-none'>\n <div className='absolute left-0 top-1/2 -translate-y-1/2 w-2 h-2 rounded-full bg-primary-500' />\n </div>\n ) : null}\n {isDraggingOver && dropPosition === 'after' && !row?.original?.isDefinedActionRow ? (\n <div className='absolute -bottom-[1px] left-0 right-0 h-[2px] bg-primary-500 z-20 pointer-events-none'>\n <div className='absolute left-0 top-1/2 -translate-y-1/2 w-2 h-2 rounded-full bg-primary-500' />\n </div>\n ) : null}\n\n {row?.original?.isDefinedActionRow ? (\n <ActionCell\n cells={row.cells}\n id={row?.original?.id}\n isCheckbox={checkboxConfig}\n level={level}\n name={row?.original?.name as string}\n onClick={row?.original?.onClick as () => void}\n rowHovering={rowHovering || ''}\n isRoot={row?.original?.isRoot as boolean}\n totalWidth={totalWidth}\n row={row.original as Record<string, unknown>}\n uploadCell={row?.original?.uploadCell as boolean}\n disabled={row?.original?.disabled as boolean}\n disabledTooltip={row?.original?.disabledTooltip as string}\n />\n ) : RowWrapper ? (\n <RowWrapper data={row.original} setIsDraggingFile={setIsDraggingFile}>\n <RowContent\n isDraggingOver={isDraggingOverInside}\n level={level}\n withDraggable={withDraggable}\n setDroppableNodeRef={setDroppableNodeRef}\n isLastRow={isLastRow}\n lastRow={lastRow}\n isCheckbox={isCheckbox}\n checkboxConfig={checkboxConfig}\n row={row}\n rowHovering={rowHovering}\n tableActions={tableActions}\n disableOptionsForRowIndex={disableOptionsForRowIndex}\n index={index}\n showNewItem={showNewItem}\n currentData={currentData}\n lastNonStickyColumnIndex={lastNonStickyColumnIndex}\n getSumOfNextVisibleColumnWidth={getSumOfNextVisibleColumnWidth}\n toggleRowExpand={toggleRowExpand}\n loadingExpand={loadingExpand}\n cellRef={ref}\n handleCellClick={handleCellClick}\n getFullRowDataOnClick={getFullRowDataOnClick}\n handleCellValueChange={handleCellValueChange}\n handleUpdateCellData={handleUpdateCellData}\n handleRowCancelEdit={handleRowCancelEdit}\n handleRowConfirmEdit={handleRowConfirmEdit}\n registerValidation={registerValidation}\n inlineEditing={inlineEditing}\n isInlineEditing={isInlineEditing}\n setRowHovering={setRowHovering}\n highlightSubstring={highlightSubstring}\n rowOptions={rowOptions}\n isDraggingFile={isDraggingFile}\n rowAdditionalActions={rowAdditionalActions}\n hoverConfig={hoverConfig}\n isSelected={isSelected}\n />\n </RowWrapper>\n ) : (\n <RowContent\n level={level}\n withDraggable={withDraggable}\n setDroppableNodeRef={setDroppableNodeRef}\n isLastRow={isLastRow}\n lastRow={lastRow}\n isCheckbox={isCheckbox}\n checkboxConfig={checkboxConfig}\n row={row}\n rowHovering={rowHovering}\n tableActions={tableActions}\n disableOptionsForRowIndex={disableOptionsForRowIndex}\n index={index}\n showNewItem={showNewItem}\n currentData={currentData}\n lastNonStickyColumnIndex={lastNonStickyColumnIndex}\n getSumOfNextVisibleColumnWidth={getSumOfNextVisibleColumnWidth}\n toggleRowExpand={toggleRowExpand}\n loadingExpand={loadingExpand}\n cellRef={ref}\n handleCellClick={handleCellClick}\n getFullRowDataOnClick={getFullRowDataOnClick}\n handleCellValueChange={handleCellValueChange}\n handleUpdateCellData={handleUpdateCellData}\n handleRowCancelEdit={handleRowCancelEdit}\n handleRowConfirmEdit={handleRowConfirmEdit}\n registerValidation={registerValidation}\n inlineEditing={inlineEditing}\n isInlineEditing={isInlineEditing}\n setRowHovering={setRowHovering}\n highlightSubstring={highlightSubstring}\n rowOptions={rowOptions}\n isDraggingFile={isDraggingFile}\n isDraggingOver={isDraggingOverInside}\n rowAdditionalActions={rowAdditionalActions}\n hoverConfig={hoverConfig}\n isSelected={isSelected}\n />\n )}\n </tr>\n );\n};\n\ninterface RowContentProps {\n withDraggable?: boolean;\n setDroppableNodeRef: (node: HTMLElement | null) => void;\n isLastRow?: boolean;\n lastRow?: unknown;\n isCheckbox: boolean;\n checkboxConfig: Record<string, unknown> | null;\n row: TableRowData;\n rowHovering: string | number | null;\n tableActions?: ((rowData: Record<string, unknown>, index: number) => React.ReactNode) | null;\n disableOptionsForRowIndex?: number | null;\n index: number;\n showNewItem?: boolean;\n currentData: Record<string, unknown> | null;\n lastNonStickyColumnIndex?: (() => number | null) | null;\n getSumOfNextVisibleColumnWidth?: (index: number) => number | null;\n toggleRowExpand: () => Promise<void>;\n loadingExpand: boolean;\n cellRef: React.RefObject<HTMLElement | null>;\n handleCellClick: (event: React.MouseEvent, data: string | Record<string, unknown>, idx: number, key: string) => void;\n getFullRowDataOnClick?: boolean;\n handleCellValueChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n handleUpdateCellData: (directValue?: string | boolean | null, meta?: Record<string, unknown> | null) => void;\n handleRowCancelEdit: () => void;\n handleRowConfirmEdit: () => void;\n registerValidation: (fn: () => { isValid: boolean; value?: string | boolean | null; meta?: Record<string, unknown> | null }) => void;\n inlineEditing: string | null;\n isInlineEditing: boolean;\n setRowHovering: (id: string | number | null) => void;\n highlightSubstring?: (value: string) => React.ReactNode;\n rowOptions?: TRowOption[] | ((rowData: Record<string, unknown>) => TRowOption[] | null) | null;\n level?: number;\n isDraggingFile?: boolean;\n isDraggingOver?: boolean;\n rowAdditionalActions?: unknown;\n hoverConfig?: { onHover?: (data: Record<string, unknown>) => React.ReactNode };\n isSelected?: boolean;\n}\n\nconst RowContent = ({\n withDraggable,\n setDroppableNodeRef,\n isLastRow,\n lastRow,\n isCheckbox,\n checkboxConfig,\n row,\n rowHovering,\n tableActions,\n disableOptionsForRowIndex,\n index,\n showNewItem,\n currentData,\n lastNonStickyColumnIndex,\n getSumOfNextVisibleColumnWidth,\n toggleRowExpand,\n loadingExpand,\n cellRef,\n handleCellClick,\n getFullRowDataOnClick,\n handleCellValueChange,\n handleUpdateCellData,\n handleRowCancelEdit,\n handleRowConfirmEdit,\n registerValidation,\n inlineEditing,\n isInlineEditing,\n setRowHovering,\n highlightSubstring,\n rowOptions,\n level,\n isDraggingFile,\n isDraggingOver,\n rowAdditionalActions,\n hoverConfig,\n isSelected,\n}: RowContentProps) => {\n const [isRowContentHovering, setIsRowContentHovering] = useState(false);\n const {\n getPendingEdit: getPendingEditFn,\n hasPendingEdit: hasPendingEditFn,\n pendingEdits,\n tableHeaders,\n pendingEditsCount,\n scrollToCell,\n } = useContext(TableContext);\n const rowHasPendingEdits = pendingEdits?.[row.original.id] && Object.keys(pendingEdits[row.original.id]).length > 0;\n const tableHasAnyPendingEdits = (pendingEditsCount ?? 0) > 0;\n const resolvedRowOptions = useMemo<TRowOption[]>(() => {\n if (Array.isArray(rowOptions)) return rowOptions;\n if (typeof rowOptions === 'function') {\n const options = rowOptions({ ...row.original, rowIndex: index });\n return Array.isArray(options) ? options : [];\n }\n return [];\n }, [rowOptions, row.original, index]);\n\n\n const _meta = (row?.original?.__rowMetadata as TRowMetadata | undefined) || (row?.original?._meta as TRowMetadata | undefined);\n const _notHovering = rowHovering !== row?.original?.id;\n const _notLoading = !row?.original?.__isLoading;\n const _isNewRow = !!(\n _meta?.__is_new ||\n _meta?.__is_added ||\n row?.original?.is_added ||\n (currentData?.is_added as boolean) ||\n // _meta.is_added alone is not reliable — the API sends it on modified/deleted rows too; only is_new confirms \"added\".\n _meta?.is_new\n );\n const _isDeletedRow = !!(row?.original?.is_deleted || _meta?.__is_deleted || (currentData?.is_deleted as boolean) || _meta?.is_deleted);\n const _isModifiedRow =\n !!(\n row?.original?.is_modified ||\n row?.original?.is_row_modified ||\n _meta?.__is_modified ||\n _meta?.__is_edited ||\n (currentData?.is_row_modified as boolean) ||\n _meta?.is_modified\n ) && !_isNewRow;\n\n // Only apply the selected background when the row is not being hovered, so on hover the icon cells\n // (checkbox, actions, options) fall back to the same gray hover background as the data cells.\n const selectedBg =\n isSelected && !isInlineEditing && rowHovering !== row?.original?.id ? 'bg-primary-100 dark:bg-primary-950' : undefined;\n\n const statusBorderClass = cn('pointer-events-none absolute left-0 top-0 bottom-0 w-[3px] z-40', {\n 'bg-success-400 dark:bg-success-500': _isNewRow && _notLoading && _notHovering && !isInlineEditing,\n 'bg-error-400 dark:bg-error-500': _isDeletedRow && _notLoading && _notHovering && !isInlineEditing,\n 'bg-warning-400 dark:bg-warning-500': _isModifiedRow && _notLoading && _notHovering && !isInlineEditing,\n });\n\n return (\n <div\n ref={withDraggable ? setDroppableNodeRef : null}\n className={isDraggingOver ? 'border-2 border-primary-400 dark:border-primary-500 rounded-sm' : ''}\n >\n <div className={statusBorderClass} />\n <div className='flex' ref={isLastRow ? (lastRow as React.Ref<HTMLDivElement>) : null}>\n {tableHasAnyPendingEdits && (\n <PendingEditCell\n rowId={String(row.original.id)}\n rowIndex={index}\n pendingEdits={pendingEdits}\n tableHeaders={tableHeaders}\n rowHasPendingEdits={!!rowHasPendingEdits}\n rowHovering={rowHovering != null ? String(rowHovering) : undefined}\n isInlineEditing={isInlineEditing}\n is_read={!!row.original.is_read}\n is_modified={_isModifiedRow}\n is_row_modified={!!row.original.is_row_modified}\n is_deleted={_isDeletedRow}\n is_added={_isNewRow}\n is_incomplete={row?.original?.status === 'Incomplete'}\n showNewItem={showNewItem}\n onScrollToCell={scrollToCell}\n />\n )}\n\n {isCheckbox && (\n <CheckboxCell\n checkboxConfig={checkboxConfig as never}\n id={String(row.original.id)}\n rowHovering={rowHovering != null ? String(rowHovering) : undefined}\n isDisabled={!!row?.original?.__isLoading}\n isDraggingOver={isDraggingOver}\n is_added={_isNewRow}\n is_deleted={_isDeletedRow}\n is_incomplete={row?.original?.status === 'Incomplete'}\n is_modified={_isModifiedRow}\n is_read={!!row.original.is_read}\n is_row_modified={!!row.original.is_row_modified}\n showNewItem={showNewItem}\n currentData={currentData ?? {}}\n bgColor={row?.original?.__rowBgStatus ? getTableRowBgClassNamesByStatus[row?.original?.__rowBgStatus as string] : selectedBg}\n isInlineEditing={isInlineEditing}\n hasPendingEditsColumn={tableHasAnyPendingEdits}\n rowHasPendingEdits={rowHasPendingEdits}\n />\n )}\n\n {tableActions ? (\n <RowActionCell\n tableActions={tableActions as (rowData: Record<string, unknown>, index: number) => JSX.Element}\n disableOptionsForRowIndex={disableOptionsForRowIndex ?? null}\n id={String(row.original.id)}\n index={index}\n is_read={!!row?.original?.is_read}\n is_incomplete={row?.original?.status === 'Incomplete'}\n showNewItem={!!showNewItem}\n is_modified={_isModifiedRow}\n is_row_modified={!!row?.original?.is_row_modified}\n is_deleted={_isDeletedRow}\n currentData={currentData ?? {}}\n is_added={_isNewRow}\n rowData={row.original as Record<string, unknown>}\n rowHovering={rowHovering}\n isDisabled={!!row?.original?.__isLoading}\n bgColor={isDraggingFile ? 'bg-primary-50' : row?.original?.__rowBgStatus ? getTableRowBgClassNamesByStatus[row?.original?.__rowBgStatus as string] : selectedBg}\n isInlineEditing={isInlineEditing}\n rowHasPendingEdits={rowHasPendingEdits}\n />\n ) : null}\n\n <div\n className='relative flex-1'\n id={`row-${row.original.id}`}\n onMouseEnter={() => setIsRowContentHovering(true)}\n onMouseLeave={() => setIsRowContentHovering(false)}\n >\n {row.cells\n .filter((cell: TableCell) => cell?.column?.visible !== false)\n .map((cell: TableCell, y: number) => {\n const isLastCell = y === lastNonStickyColumnIndex?.();\n const isFirstStickyCell = y === (lastNonStickyColumnIndex?.() ?? -1) + 1;\n const nextWidthSum = cell?.column?.sticky ? (getSumOfNextVisibleColumnWidth?.(y) ?? 0) : 0;\n\n if (row.original?.__isLoading) {\n return (\n <LoaderCell cell={cell as unknown as { column: { width: number; sticky?: boolean; sequence?: number } }} id={y} nextWidthSum={nextWidthSum} isLastCell={isLastCell} rowHovering={rowHovering} index={y} key={y} isFirstStickyCell={isFirstStickyCell} />\n );\n }\n\n const pendingEdit = getPendingEditFn?.(String(row.original.id), cell?.column?.key || '');\n const hasPending = hasPendingEditFn?.(String(row.original.id), cell?.column?.key || '');\n\n return (\n <DataCell\n cell={cell as unknown as import('../../types').ICell}\n rowHovering={rowHovering}\n isFirstStickyCell={isFirstStickyCell}\n level={level ?? 0}\n toggleRowExpand={toggleRowExpand}\n loadingExpand={loadingExpand}\n key={cell?.column?.key}\n index={y}\n cellRef={cellRef as React.RefObject<HTMLDivElement>}\n currentData={currentData as { is_row_modified?: boolean; is_deleted?: boolean; is_added?: boolean }}\n handleCellClick={(e?: React.MouseEvent) => { if (e) handleCellClick(e, getFullRowDataOnClick ? row.original : String(row.original.id), y, cell?.column?.key || ''); }}\n handleCellValueChange={handleCellValueChange}\n handleUpdateCellData={handleUpdateCellData}\n registerValidation={registerValidation}\n id={row.original.id}\n inlineEditing={inlineEditing}\n isInlineEditing={isInlineEditing}\n isLastCell={isLastCell}\n is_incomplete={row?.original?.status === 'Incomplete'}\n is_added={_isNewRow}\n is_deleted={_isDeletedRow}\n is_modified={_isModifiedRow}\n is_read={!!row.original.is_read}\n is_row_modified={!!row.original.is_row_modified}\n nextWidthSum={nextWidthSum}\n setRowHovering={setRowHovering}\n highlightSubstring={highlightSubstring as ((value: string) => JSX.Element) | undefined}\n isDraggingOver={isDraggingOver}\n isLoading={!!row?.original?.__isLoading}\n pendingEdit={pendingEdit}\n hasPendingEdit={hasPending}\n pendingValidationError={pendingEdit?.validationError}\n />\n );\n })}\n\n {hoverConfig?.onHover &&\n isRowContentHovering &&\n createPortal(\n <div className='absolute top-full left-10 z-50 bg-white dark:bg-black-800 rounded-xl'>{hoverConfig.onHover(row.original) as React.ReactNode}</div>,\n document.getElementById(`row-${row.original.id}`) as HTMLElement,\n )}\n </div>\n\n {(resolvedRowOptions.length > 0 || !!rowAdditionalActions) && (\n <RowOptionsCell\n rowId={row.original.id}\n rowOptions={resolvedRowOptions}\n disableOption={disableOptionsForRowIndex !== null || !!row?.original?.__isLoading}\n rowHovering={rowHovering}\n setRowHovering={setRowHovering}\n is_read={!!row.original.is_read}\n showNewItem={!!showNewItem}\n is_modified={_isModifiedRow}\n is_row_modified={!!row.original.is_row_modified}\n is_incomplete={row?.original?.status === 'Incomplete'}\n currentData={currentData ?? {}}\n is_deleted={_isDeletedRow}\n is_added={_isNewRow}\n isDraggingOver={!!isDraggingOver}\n rowAdditionalActions={rowAdditionalActions as (rowData: Record<string, unknown>, index: number, isHovering: boolean) => React.ReactNode}\n rowData={row.original as Record<string, unknown>}\n index={index}\n bgColor={row?.original?.__rowBgStatus ? getTableRowBgClassNamesByStatus[row?.original?.__rowBgStatus as string] : selectedBg}\n isInlineEditing={isInlineEditing}\n onConfirmEdit={handleRowConfirmEdit}\n onCancelEdit={handleRowCancelEdit}\n rowHasPendingEdits={rowHasPendingEdits}\n />\n )}\n </div>\n </div>\n );\n};\n"],"names":["Row","row","isLastRow","lastRow","highlightSubstring","index","style","level","expandedRows","rows","lastNonStickyColumnIndex","checkboxConfig","onRowClick","rowOptions","disableOptionsForRowIndex","getSumOfNextVisibleColumnWidth","onRowEdit","inlineEditColumns","tableActions","dndSortableUtils","withSortable","withDraggable","getInnerRowData","showNewItem","rawData","dragConfig","getFullRowDataOnClick","selectedRowId","RowWrapper","isCellClickDisabled","rowAdditionalActions","hoverConfig","addPendingEdit","removePendingEdit","fieldOperationLoading","clearRowPendingEdits","saveRowPendingEdits","contextPendingEdits","useContext","TableContext","tableConfig","useTableConfig","isCheckbox","activeInlineEdit","setActiveInlineEdit","inlineEditing","isInlineEditing","setInlineEditing","columnKey","rowHovering","setRowHovering","useState","editedCellValue","setEditedCellValue","currentData","setCurrentData","loadingExpand","setLoadingExpand","isDraggingFile","setIsDraggingFile","prevInlineEditingRef","useRef","useEffect","wasEditing","isNowEditing","pendingEdit","currentCell","c","result","validateCellValue","idKey","sortableResult","useSortable","draggableResult","useDraggable","listeners","transform","setNodeRef","isDragging","attributes","active","over","rest","setDroppableNodeRef","useDroppable","dndStyles","CSS","isOverOtherContext","handleCellValueChange","e","handleCloseEdit","validationRef","registerValidation","useCallback","validateFn","tableConfigRef","handleRowCancelEdit","handleRowConfirmEdit","pendingValue","valueToValidate","handleUpdateCellData","directValue","meta","_item","updatedValue","ref","handleCellClick","event","data","idx","key","msg","_row","_id","checkEvent","toggleRowExpand","totalWidth","useMemo","a","b","isDraggingOver","dropPosition","isDraggingOverInside","_meta","_notHovering","_notLoading","_isNewRow","_isDeletedRow","_isModifiedRow","isSelected","bgColor","cn","getTableRowBgClassNamesByStatus","createElement","jsx","AddRounded","SubdirectoryArrowLeftRounded","ActionCell","RowContent","cellRef","isRowContentHovering","setIsRowContentHovering","getPendingEditFn","hasPendingEditFn","pendingEdits","tableHeaders","pendingEditsCount","scrollToCell","rowHasPendingEdits","tableHasAnyPendingEdits","resolvedRowOptions","options","selectedBg","statusBorderClass","jsxs","PendingEditCell","CheckboxCell","RowActionCell","cell","y","isLastCell","isFirstStickyCell","nextWidthSum","LoaderCell","hasPending","DataCell","createPortal","RowOptionsCell"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),v=require("@dnd-kit/core"),ne=require("@dnd-kit/sortable"),we=require("antd"),c=require("../../../_virtual/index.cjs.js"),a=require("react"),Dt=require("react-i18next"),Je=require("@mui/icons-material/MoreHorizOutlined"),Vt=require("./types.cjs.js"),Mt=require("../../../utils/formatters.cjs.js"),Lt=require("../../../providers/design-system-provider/hooks.cjs.js"),qt=require("../../../hooks/useTextWidth.cjs.js"),Rt=require("../../button/IconButton.cjs.js"),S=require("../../buttons/option-button/OptionButton.cjs.js"),Bt=require("../../forms/search-bar/SearchBar.cjs.js"),ke=require("../../tooltip/Tooltip.cjs.js"),Ht=require("../../icons/EditIcon.cjs.js"),Ut=require("react-toastify"),ye=require("./TabSwitch.cjs.js"),k=require("../../icon/icons.generated.cjs.js"),Qe=require("./SortableTab.cjs.js"),Wt=require("./DropableWrapper.cjs.js"),zt=require("./MoreButton.cjs.js"),Pt=require("./TabOptions.cjs.js"),Ft=require("./TabDragOverlay.cjs.js"),$t=()=>Math.random().toString(16).slice(2,13),se=["[&_.ant-dropdown-menu-item]:!outline-none","[&_.ant-dropdown-menu-submenu-title]:!outline-none","[&_.ant-dropdown-menu-item:focus-visible_.option-button-inner]:ring-2","[&_.ant-dropdown-menu-item:focus-visible_.option-button-inner]:ring-primary-500","[&_.ant-dropdown-menu-item:focus-visible_.option-button-inner]:bg-gray-50","[&_.ant-dropdown-menu-item:focus-visible_.option-button-inner]:dark:bg-black-600","[&_.ant-dropdown-menu-submenu-title:focus-visible_.option-button-inner]:ring-2","[&_.ant-dropdown-menu-submenu-title:focus-visible_.option-button-inner]:ring-primary-500","[&_.ant-dropdown-menu-submenu-title:focus-visible_.option-button-inner]:bg-gray-50","[&_.ant-dropdown-menu-submenu-title:focus-visible_.option-button-inner]:dark:bg-black-600"].join(" ");let Se=null;const Te=T=>{T?(Se=document.activeElement,setTimeout(()=>{document.querySelector(".row-option-cell .ant-dropdown-menu-item:not(.ant-dropdown-menu-item-disabled), .row-option-cell .ant-dropdown-menu-submenu-title")?.focus()},50)):setTimeout(()=>{Se?.focus(),Se=null},0)},d={SELECT:"Select",MOVE_LEFT:"MoveLeft",MOVE_RIGHT:"MoveRight",HIDE:"Hide",UNHIDE:"Unhide",COPY_LINK:"CopyLink",DELETE:"Delete",PIN:"Pin",UNPIN:"Unpin",EDIT:"Edit"},At=({variant:T="default",tabs:O=[],activeTab:i,onTabClick:Xe,suffixRecord:P,isLoading:Ze,size:_="md",className:Ce,draggable:E=!1,showAllItems:F=!1,copyLink:Ke=!1,isDisabled:et=!1,color:ae="light",iconsOnly:tt=!1,tabIcons:oe={},height:nt="h-6",fullWidth:re=!1,fitContentWidth:st=!1,disableAnimation:at=!1,onEdit:je,onDelete:Ie,onCopyLink:Ne,allowPin:C=!1,isFullWidth:$=!1,rightSection:L,initialTabs:ot,tabConfig:rt,onTabConfigChange:ve,onTabsChange:Oe,parentContainer:it=document.body,tabKey:j,linkConfig:x,showTabOptions:lt=!0})=>{const g=Lt.useTabConfig(),_e=j?g?.getTabSettings(j):void 0,ie=ot??_e?.tab_items,A=rt??_e?.tab_options,[le,ct]=a.useState(""),[N,G]=a.useState(!1),[q,dt]=a.useState(0),[u,ce]=a.useState([]),[Y,ut]=a.useState([]),[pt,J]=a.useState(null),[D,Q]=a.useState(null),[xt,Ee]=a.useState(!1),[De,Ve]=a.useState(A??Vt.INITIAL_TAB_OPTION_CONFIG),[de,bt]=a.useState(""),[Me,mt]=a.useState("contains"),{showCounts:y,lockOrder:R,sortOrder:ue}=De,{t:p}=Dt.useTranslation(),X=a.useRef(null),ft=a.useRef(null),Le=a.useRef(q),{measureText:B}=qt.useTextWidth(),H=a.useMemo(()=>$t(),[]),ht=v.useSensors(v.useSensor(v.MouseSensor,{activationConstraint:{distance:5}}),v.useSensor(v.TouchSensor,{activationConstraint:{delay:300,tolerance:5}})),b=a.useMemo(()=>P&&Object.fromEntries(Object.entries(P).map(([e,t])=>[e,Mt.formatCount(t)])),[P]),qe=a.useMemo(()=>Y.filter(({is_hidden:e})=>!e),[Y]),V=a.useMemo(()=>Y.filter(({is_hidden:e})=>e),[Y]),Re=a.useMemo(()=>qe.filter(({name:e})=>{if(!de)return!0;const t=(e??"").toLowerCase(),s=de.toLowerCase();return Me==="contains"?t.includes(s):!t.includes(s)}),[qe,de,Me]),r=a.useMemo(()=>[...Re].sort((e,t)=>e.is_pinned&&!t.is_pinned?-1:!e.is_pinned&&t.is_pinned?1:0),[Re]),gt=q<r.length,Z=F?r.length:gt?q:r.length,Be=r.findIndex(e=>e.name===i)>=Z,He=u.length-Z-(Be?1:0);Le.current=q;const U=a.useCallback(e=>{ce(e),Oe?.(e),j&&g?.persistTabSettings&&g.persistTabSettings({tab_type:j,tab_items:e})},[Oe,j,g]),wt=a.useCallback(e=>{Ve(e),ve?.(e),j&&g?.persistTabSettings&&g.persistTabSettings({tab_type:j,tab_options:e})},[ve,j,g]),Ue=e=>e.is_pinned?32:0,pe=a.useCallback(e=>{if(!e)return;const t=E?30:0,s=y?190:84,l=_==="sm"?4:8,o=32;let m=0,ee=0,w=0;const f=e-(L?.width||0)-t,Fe=Le.current,$e=Fe<r.length,Ae=V.length>0;for(let h=0;h<r.length;h++){const I=r[h],te=b?.[I.name]?String(b?.[I.name]):"",fe=y&&te?B(te,{fontSize:"16px",fontWeight:"500",fontFamily:"Inter, system-ui, -apple-system, sans-serif"})+18+2:0,he=B(I?.name||"",{fontSize:"16px",fontWeight:"600",fontFamily:"Inter, system-ui, -apple-system, sans-serif"}),ge=C?Ue(I):0,Ye=he+fe+o+l+ge;if(I.name===i&&(ee=Ye),m+=Ye,f>m+($e||Ae?s:0)+h*25)w=h+1;else break}const Ge=r.length-w;if(Ge+V.length===1&&V.length===0&&Ge===1&&w<r.length){const h=r[w];if(h){const I=b?.[h.name]?String(b?.[h.name]):"",te=y&&I?B(I,{fontSize:"16px",fontWeight:"500",fontFamily:"Inter, system-ui, -apple-system, sans-serif"})+18+2:0,fe=B(h?.name||"",{fontSize:"16px",fontWeight:"600",fontFamily:"Inter, system-ui, -apple-system, sans-serif"}),he=C?Ue(h):0,ge=fe+te+o+l+he;f>=m+ge&&(w+=1)}}const Et=F?r.length:w;r.findIndex(h=>h.name===i)>=Et&&(m+=ee,f<m+($e||Ae?s:0)&&(w=Math.max(w-1,0))),w!==Fe&&dt(w)},[r,y,F,C,b,L?.width,i,_,E,V.length,B]),xe=a.useCallback(()=>{if(typeof window<"u")return new URLSearchParams(window.location.search);if(x&&g?.getSearchParam){const e=new URLSearchParams,t=g.getSearchParam(x.key);return t&&e.set(x.key,t),e}return new URLSearchParams},[x,g]),be=a.useCallback((e,t)=>(x&&(t===x.defaultLink?e.delete(x.key):e.set(x.key,t),x.onResolve?.(e)),e),[x]),W=a.useCallback(e=>x?`?${be(xe(),e).toString()}`:void 0,[be,xe,x]),kt=Ke||!!x,yt=a.useCallback(async e=>{const t=W(e),s=typeof window<"u"?window.location.origin:"",l=typeof window<"u"?window.location.pathname:"",o=t?`${s}${l}${t}`:`${s}${l}`;await navigator.clipboard.writeText(o),Ut.toast.success(p("Link copied to clipboard"),{toastId:"Link copied to clipboard"}),Ne?.(e,o)},[W,p,Ne]),z=e=>{if(G(!1),Xe?.(e),x&&g?.navigate){const t=be(xe(),e);g.navigate(`?${t.toString()}`)}},We=e=>{if(r.length<=1)return;const t=u.map(o=>o.name===e?{...o,is_hidden:!0}:o),s=r.findIndex(o=>o.name===e),l=s===0?1:s-1;z(r[l].name),U(t)},St=e=>{const t=u.map(s=>s.name===e?{...s,is_hidden:!1}:s);G(!1),U(t)},K=e=>{if(!C)return;const t=u.map(s=>s.name===e?{...s,is_pinned:!s.is_pinned}:s);U(t)},ze=(e,t)=>{const s=u.findIndex(({name:o})=>o===e),l=t==="left"?s-(u[s-1]?.name===i?2:1):s+1;U(ne.arrayMove(u,s,l))},Pe=()=>G(!N),Tt=e=>Q(e.active.id),Ct=e=>{const{active:t,over:s}=e;if(s?.id==="more-tabs"){We(t.id),Q(null),J(null);return}const l=u.findIndex(({name:m})=>m===t.id),o=u.findIndex(({name:m})=>m===s?.id);U(ne.arrayMove(u,l,o)),Q(null),J(null)},jt=()=>{Q(null),J(null)},It=e=>{J(e.over?.id==="more-tabs"?"more-tabs":null)},Nt=()=>{},vt=(e,t)=>{bt(e),mt(t)},me=(e,t=!1,s=!1)=>{const o=u.find(f=>f.name===e)?.is_pinned,m=[{label:n.jsx(S.OptionButton,{icon:n.jsx(k.ArrowOutwardIcon,{size:18,className:"text-inherit dark:text-inherit"}),text:p("Select Tab"),className:"text-black-900 dark:text-white"}),key:d.SELECT,onClick:()=>z(e)},{label:n.jsx(S.OptionButton,{icon:n.jsx(k.ArrowUpwardIcon,{size:18,className:"text-inherit dark:text-inherit"}),text:p("Move Up"),isDisabled:R,className:"text-black-900 dark:text-white"}),key:d.MOVE_LEFT,disabled:R,onClick:()=>ze(e,"left")},{label:n.jsx(S.OptionButton,{icon:n.jsx(k.ArrowDownwardIcon,{size:18,className:"text-inherit dark:text-inherit"}),text:p("Move Down"),isDisabled:R,className:"text-black-900 dark:text-white"}),key:d.MOVE_RIGHT,disabled:R,onClick:()=>ze(e,"right")},{label:n.jsx(S.OptionButton,{icon:n.jsx(k.ContentCopyIcon,{size:18,className:"text-inherit dark:text-inherit"}),text:p("Copy Link"),className:"text-black-900 dark:text-white"}),key:d.COPY_LINK,onClick:()=>yt(e)},{label:n.jsx(S.OptionButton,{icon:n.jsx(k.VisibilityOffIcon,{size:18,className:"text-inherit dark:text-inherit"}),text:p("Hide"),className:"text-black-900 dark:text-white"}),key:d.HIDE,onClick:()=>We(e)},{label:n.jsx(S.OptionButton,{icon:n.jsx(k.VisibilityIcon,{size:18,className:"text-inherit dark:text-inherit"}),text:p("Unhide"),className:"text-black-900 dark:text-white"}),key:d.UNHIDE,onClick:()=>St(e)},{label:n.jsx(S.OptionButton,{icon:o?n.jsx(k.UnpinFilledIcon,{size:20,className:"rotate-12 text-inherit dark:text-inherit"}):n.jsx(k.PinIcon,{size:20,className:"rotate-45 text-inherit dark:text-inherit"}),text:p(o?"Unpin":"Pin"),className:"text-black-900 dark:text-white",notVisible:!C}),key:o?d.UNPIN:d.PIN,onClick:()=>K(e)},{label:n.jsx(S.OptionButton,{className:"text-black-900 dark:text-white",icon:n.jsx(Ht.EditIcon,{}),text:p("Edit"),notVisible:!je}),key:d.EDIT,onClick:()=>je?.(e)},{label:n.jsx(S.OptionButton,{className:"text-error-600 dark:text-error-600",icon:n.jsx(k.DeleteIcon,{size:18,className:"text-error-600 dark:text-error-600"}),text:p("Delete"),notVisible:!Ie}),key:d.DELETE,onClick:()=>Ie?.(e)}],ee=[d.HIDE,d.UNHIDE],w=[d.SELECT,d.MOVE_LEFT,d.MOVE_RIGHT,d.UNHIDE];return m.filter(f=>t?f.key===d.UNHIDE:s?!ee.includes(f.key):!w.includes(f.key)).filter(f=>kt?!0:f.key!==d.COPY_LINK).filter(f=>r.length===1?f.key!==d.HIDE:!0)},M=(e,t)=>({classValue:{default:c("relative inline-flex pt-2 pb-3 px-2 pl-3 sm:px-2 rounded-t-sm group"),secondary:c("flex w-full sm:w-auto relative rounded-lg font-sans font-semibold text-center cursor-pointer uppercase",_==="sm"?"py-1 px-3 text-sm":"py-2 px-4 text-base")},selectedClassValue:{default:c("absolute left-0 bottom-0 w-full h-[3px] bg-primary-600"),secondary:c("absolute inset-0 bg-primary-50 dark:bg-primary-975 rounded-lg")},textClassValue:{default:c("relative uppercase font-sans font-semibold text-sm whitespace-nowrap",t?"text-primary-600 dark:text-primary-500":"text-neutral-400 hover:text-neutral-500 dark:text-neutral-100 dark:hover:text-white"),secondary:c("relative whitespace-nowrap text-sm",t?"text-primary-600 dark:text-primary-500":"text-neutral-400 dark:text-neutral-400")}})[e][T];a.useEffect(()=>{if(!X.current||T==="switch")return;const e=new ResizeObserver(t=>{const s=t[0].contentRect.width;pe(s)});return e.observe(X.current),pe(X.current.clientWidth),()=>e.disconnect()},[pe,T]);const Ot=JSON.stringify(O),_t=JSON.stringify(ie?.map(({name:e})=>e));return a.useEffect(()=>{if(ie?.length){let e=[...ie];O.forEach(t=>{e.find(s=>s.name===t)||e.push({name:t,is_default:!1,is_hidden:!1,is_pinned:!1})}),e=e.filter((t,s,l)=>O.includes(t.name)&&s===l.findIndex(o=>o.name===t.name)),ce(e)}else ce(O.map(e=>({name:e,is_default:!1,is_hidden:!1,is_pinned:!1})).filter((e,t,s)=>t===s.findIndex(l=>l.name===e.name)))},[Ot,_t]),a.useEffect(()=>{A&&Ve(A)},[A]),a.useEffect(()=>{if(!u.length)return;const e=[...u];ue==="asc"?e.sort((t,s)=>t.name.localeCompare(s.name)):ue==="desc"&&e.sort((t,s)=>s.name.localeCompare(t.name)),ut(e)},[u,ue]),a.useEffect(()=>{Te(N)},[N]),T==="switch"?n.jsx("div",{className:c("inline",Ce),children:n.jsx("ul",{role:"tablist","aria-orientation":"horizontal",className:c("inline-flex grow-0 p-1 rounded-lg",ae==="dark"?"border-[1.5px] border-neutral-800 bg-neutral-800 dark:border-black-800":"bg-neutral-100 dark:bg-black-700",re?"w-full":"w-auto"),children:O.map(e=>{const t=i===e,s=oe?.[e],l=u.find(m=>m.name===e),o=C&&l?.is_pinned;return n.jsx("li",{role:"presentation",className:c("inline-flex",re?"w-full":"w-auto"),children:n.jsx(ye.TabSwitch,{title:e,showCounts:y,role:"tab",ariaSelected:t,tabIndex:0,icon:o?n.jsx(ke,{title:"Unpin",children:n.jsx("span",{onClick:()=>K(e),children:n.jsx(k.PinIcon,{className:"rotate-45 w-icon h-icon text-inherit dark:text-inherit"})})}):s,iconsOnly:tt,classValue:c("relative py-0.5 border-gray-200",nt,re?"w-full flex items-center justify-center":"px-2"),selectedClassValue:c("absolute inset-0 rounded-md z-0",ae==="dark"?"bg-neutral-900":"bg-white dark:bg-black-800"),textClassValue:c("relative text-xs font-semibold font-sans whitespace-nowrap",t?"text-neutral-900 dark:text-neutral-100":"text-neutral-700 dark:text-neutral-100"),isSelected:t,href:W(e),onClick:et?void 0:()=>z(e),suffixRecord:b,selectedId:H,color:ae,disableAnimation:at})},e)})})}):n.jsx("div",{ref:X,className:c(st?"w-fit":"w-full"),onMouseEnter:()=>Ee(!0),onMouseLeave:()=>Ee(!1),children:n.jsxs(v.DndContext,{sensors:ht,onDragEnd:Ct,onDragStart:Tt,onDragCancel:jt,collisionDetection:v.closestCenter,onDragOver:It,children:[n.jsxs("ul",{role:"tablist","aria-orientation":"horizontal",className:c("flex items-center w-full",Ce,$?"gap-0":_==="sm"?"gap-1":"gap-2"),ref:ft,children:[Ze?n.jsx("div",{className:"skeleton bg-neutral-300 dark:bg-black-700 animate-pulse h-10 min-w-[100px] w-full rounded"}):n.jsxs(ne.SortableContext,{items:r.map(({name:e})=>e),strategy:ne.horizontalListSortingStrategy,id:"sortable",disabled:!E||R,children:[r.slice(0,Z).map(({name:e,is_pinned:t})=>{const s=i===e&&!N,l=C&&t;return n.jsx(Qe.SortableTab,{title:e,isDragging:D===e,className:$?"flex-1 flex justify-center":"",children:n.jsx("li",{role:"presentation",className:c($?"w-full flex":"sm:mr-2"),children:n.jsx(ye.TabSwitch,{showCounts:y,title:e,role:"tab",ariaSelected:s,tabIndex:0,classValue:c(M("classValue",s),$?"w-full justify-center":""),selectedClassValue:M("selectedClassValue",s),textClassValue:M("textClassValue",s),isSelected:s,tabOptions:s&&E?n.jsx(we.Dropdown,{menu:{items:me(e),className:se},trigger:["click"],onOpenChange:Te,overlayClassName:"row-option-cell",rootClassName:"",openClassName:"max-h-[350px] overflow-y-auto",placement:"bottom",children:n.jsx(Rt,{tooltip:p("More"),variant:"ghost",className:"!text-primary-500 hover:!bg-primary-100 dark:hover:!bg-primary-900",children:n.jsx(Je,{sx:{fontSize:20}})})}):null,draggingTab:D===e,href:W(e),onClick:()=>z(e),suffixRecord:b,selectedId:H,icon:l?n.jsx(ke,{title:p("Unpin"),children:n.jsx("span",{onClick:()=>K(e),children:n.jsx(k.PinIcon,{size:20,className:"rotate-45 text-inherit dark:text-inherit"})})}):oe?.[e]??null})},e)},e)}),i&&Be?n.jsx(Qe.SortableTab,{title:i,isDragging:D===i,children:n.jsx("li",{role:"presentation",className:c("sm:mr-2"),children:n.jsx(ye.TabSwitch,{showCounts:y,title:i,role:"tab",ariaSelected:!0,tabIndex:0,classValue:M("classValue",!0),selectedClassValue:M("selectedClassValue",!0),textClassValue:M("textClassValue",!0),isSelected:!0,tabOptions:E?n.jsx(we.Dropdown,{menu:{items:me(i),className:se},trigger:["click"],onOpenChange:Te,overlayClassName:"row-option-cell",rootClassName:"",openClassName:"max-h-[350px] overflow-y-auto",placement:"bottom",children:n.jsx(Je,{sx:{fontSize:20},className:"text-primary-600"})}):null,draggingTab:D===i,href:W(i),suffixRecord:b,selectedId:H,icon:C&&u.find(e=>e.name===i)?.is_pinned?n.jsx(ke,{title:p("Pinned"),children:n.jsx("span",{onClick:()=>K(i),children:n.jsx(k.PinIcon,{size:20,className:"rotate-45 text-inherit dark:text-inherit"})})}):oe?.[i]??null})},i)},i):null,(q<r.length&&!F||V.length>0)&&He>0?n.jsx(Wt.DropableWrapper,{id:"more-tabs",children:n.jsx(we.Dropdown,{overlayStyle:{maxHeight:"calc(100vh - 350px)",overflow:"auto",marginTop:"8px",scrollbarWidth:"none",borderRadius:8,boxShadow:"0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05)"},onOpenChange:()=>Pe(),open:N,menu:{items:[{key:"Search",disabled:!0,style:{minWidth:"190px",marginBottom:"8px"},label:n.jsx("div",{className:"px-2 bg-white dark:bg-black-800",children:n.jsx(Bt.SearchBar,{id:"search-bar-more-tabs",value:le,classValues:"!rounded-lg",onChange:e=>ct(e)})})},...r.slice(Z).filter(e=>e.name!==i).concat(V).filter(({name:e})=>typeof e=="string"&&(e??"").toLowerCase().includes(le.toLowerCase())).map(({name:e,is_hidden:t})=>({key:e,label:n.jsx(S.OptionButton,{className:c("uppercase",t?"text-neutral-400 dark:text-neutral-500":"text-black-900 dark:text-black-200"),text:e,suffixRecord:y?b:{},highlight:le,truncateText:!0,isDisabled:t,onClick:t?void 0:()=>{z(e),G(!1)}}),popupClassName:se,children:N?me(e,t,!0):null}))],className:se},openClassName:"max-h-[350px] overflow-y-auto",trigger:["click"],overlayClassName:"row-option-cell",placement:"bottomRight",getPopupContainer:e=>e.parentElement,children:n.jsx(zt.MoreButton,{title:`${y?He:""} MORE...`,variant:T,size:_,draggingOver:pt,suffixRecord:b,handleShowMoreDropdown:Pe,selectedId:H,showMoreDropdown:N})})}):null]}),L?n.jsx("div",{className:c(L?.className),children:n.jsx("li",{children:L.component})}):null,E&&lt&&n.jsx("li",{className:c(xt?"opacity-100":"opacity-0","transition-opacity duration-300"),children:n.jsx(Pt.TabOptions,{hasSuffixRecord:!!(b&&Object.keys(b).length>0),savedConfig:De,onApplyFilter:e=>wt(e),setUnsavedChanges:()=>{},handleTabSort:Nt,onSearchChange:vt})})]}),D?n.jsx(Ft.TabDragOverlay,{draggingTab:D,suffixRecord:b,size:_,variant:T,selectedId:H,parentContainer:it}):null]})})};exports.Tabs=At;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),v=require("@dnd-kit/core"),ne=require("@dnd-kit/sortable"),we=require("antd"),c=require("../../../_virtual/index.cjs.js"),a=require("react"),Dt=require("react-i18next"),Je=require("@mui/icons-material/MoreHorizOutlined"),Vt=require("./types.cjs.js"),Mt=require("../../../utils/formatters.cjs.js"),Lt=require("../../../providers/design-system-provider/hooks.cjs.js"),qt=require("../../../hooks/useTextWidth.cjs.js"),Rt=require("../../button/IconButton.cjs.js"),S=require("../../buttons/option-button/OptionButton.cjs.js"),Bt=require("../../forms/search-bar/SearchBar.cjs.js"),ke=require("../../tooltip/Tooltip.cjs.js"),Ht=require("../../icons/EditIcon.cjs.js"),Ut=require("react-toastify"),ye=require("./TabSwitch.cjs.js"),k=require("../../icon/icons.generated.cjs.js"),Qe=require("./SortableTab.cjs.js"),Wt=require("./DropableWrapper.cjs.js"),Pt=require("./MoreButton.cjs.js"),Ft=require("./TabOptions.cjs.js"),zt=require("./TabDragOverlay.cjs.js"),$t=()=>Math.random().toString(16).slice(2,13),se=["[&_.ant-dropdown-menu-item]:!outline-none","[&_.ant-dropdown-menu-submenu-title]:!outline-none","[&_.ant-dropdown-menu-item:focus-visible_.option-button-inner]:ring-2","[&_.ant-dropdown-menu-item:focus-visible_.option-button-inner]:ring-primary-500","[&_.ant-dropdown-menu-item:focus-visible_.option-button-inner]:bg-gray-50","[&_.ant-dropdown-menu-item:focus-visible_.option-button-inner]:dark:bg-black-600","[&_.ant-dropdown-menu-submenu-title:focus-visible_.option-button-inner]:ring-2","[&_.ant-dropdown-menu-submenu-title:focus-visible_.option-button-inner]:ring-primary-500","[&_.ant-dropdown-menu-submenu-title:focus-visible_.option-button-inner]:bg-gray-50","[&_.ant-dropdown-menu-submenu-title:focus-visible_.option-button-inner]:dark:bg-black-600"].join(" ");let Se=null;const Te=T=>{T?(Se=document.activeElement,setTimeout(()=>{document.querySelector(".row-option-cell .ant-dropdown-menu-item:not(.ant-dropdown-menu-item-disabled), .row-option-cell .ant-dropdown-menu-submenu-title")?.focus()},50)):setTimeout(()=>{Se?.focus(),Se=null},0)},d={SELECT:"Select",MOVE_LEFT:"MoveLeft",MOVE_RIGHT:"MoveRight",HIDE:"Hide",UNHIDE:"Unhide",COPY_LINK:"CopyLink",DELETE:"Delete",PIN:"Pin",UNPIN:"Unpin",EDIT:"Edit"},At=({variant:T="default",tabs:O=[],activeTab:r,onTabClick:Xe,suffixRecord:F,isLoading:Ze,size:_="md",className:Ce,draggable:E=!1,showAllItems:z=!1,copyLink:Ke=!1,isDisabled:et=!1,color:ae="light",iconsOnly:tt=!1,tabIcons:oe={},height:nt="h-6",fullWidth:ie=!1,fitContentWidth:st=!1,disableAnimation:at=!1,onEdit:je,onDelete:Ie,onCopyLink:Ne,allowPin:C=!1,isFullWidth:$=!1,rightSection:L,initialTabs:ot,tabConfig:it,onTabConfigChange:ve,onTabsChange:Oe,parentContainer:rt=document.body,tabKey:j,linkConfig:x,showTabOptions:lt=!0})=>{const g=Lt.useTabConfig(),_e=j?g?.getTabSettings(j):void 0,re=ot??_e?.tab_items,A=it??_e?.tab_options,[le,ct]=a.useState(""),[N,G]=a.useState(!1),[q,dt]=a.useState(0),[u,ce]=a.useState([]),[Y,ut]=a.useState([]),[pt,J]=a.useState(null),[D,Q]=a.useState(null),[xt,Ee]=a.useState(!1),[De,Ve]=a.useState(A??Vt.INITIAL_TAB_OPTION_CONFIG),[de,bt]=a.useState(""),[Me,mt]=a.useState("contains"),{showCounts:y,lockOrder:R,sortOrder:ue}=De,{t:p}=Dt.useTranslation(),X=a.useRef(null),ht=a.useRef(null),Le=a.useRef(q),{measureText:B}=qt.useTextWidth(),H=a.useMemo(()=>$t(),[]),ft=v.useSensors(v.useSensor(v.MouseSensor,{activationConstraint:{distance:5}}),v.useSensor(v.TouchSensor,{activationConstraint:{delay:300,tolerance:5}})),b=a.useMemo(()=>F&&Object.fromEntries(Object.entries(F).map(([e,t])=>[e,Mt.formatCount(t)])),[F]),qe=a.useMemo(()=>Y.filter(({is_hidden:e})=>!e),[Y]),V=a.useMemo(()=>Y.filter(({is_hidden:e})=>e),[Y]),Re=a.useMemo(()=>qe.filter(({name:e})=>{if(!de)return!0;const t=(e??"").toLowerCase(),s=de.toLowerCase();return Me==="contains"?t.includes(s):!t.includes(s)}),[qe,de,Me]),i=a.useMemo(()=>[...Re].sort((e,t)=>e.is_pinned&&!t.is_pinned?-1:!e.is_pinned&&t.is_pinned?1:0),[Re]),gt=q<i.length,Z=z?i.length:gt?q:i.length,Be=i.findIndex(e=>e.name===r)>=Z,He=u.length-Z-(Be?1:0);Le.current=q;const U=a.useCallback(e=>{ce(e),Oe?.(e),j&&g?.persistTabSettings&&g.persistTabSettings({tab_type:j,tab_items:e})},[Oe,j,g]),wt=a.useCallback(e=>{Ve(e),ve?.(e),j&&g?.persistTabSettings&&g.persistTabSettings({tab_type:j,tab_options:e})},[ve,j,g]),Ue=e=>e.is_pinned?32:0,pe=a.useCallback(e=>{if(!e)return;const t=E?30:0,s=y?190:84,l=_==="sm"?4:8,o=32;let m=0,ee=0,w=0;const h=e-(L?.width||0)-t,ze=Le.current,$e=ze<i.length,Ae=V.length>0;for(let f=0;f<i.length;f++){const I=i[f],te=b?.[I.name]?String(b?.[I.name]):"",he=y&&te?B(te,{fontSize:"16px",fontWeight:"500",fontFamily:"Inter, system-ui, -apple-system, sans-serif"})+18+2:0,fe=B(I?.name||"",{fontSize:"16px",fontWeight:"600",fontFamily:"Inter, system-ui, -apple-system, sans-serif"}),ge=C?Ue(I):0,Ye=fe+he+o+l+ge;if(I.name===r&&(ee=Ye),m+=Ye,h>m+($e||Ae?s:0)+f*25)w=f+1;else break}const Ge=i.length-w;if(Ge+V.length===1&&V.length===0&&Ge===1&&w<i.length){const f=i[w];if(f){const I=b?.[f.name]?String(b?.[f.name]):"",te=y&&I?B(I,{fontSize:"16px",fontWeight:"500",fontFamily:"Inter, system-ui, -apple-system, sans-serif"})+18+2:0,he=B(f?.name||"",{fontSize:"16px",fontWeight:"600",fontFamily:"Inter, system-ui, -apple-system, sans-serif"}),fe=C?Ue(f):0,ge=he+te+o+l+fe;h>=m+ge&&(w+=1)}}const Et=z?i.length:w;i.findIndex(f=>f.name===r)>=Et&&(m+=ee,h<m+($e||Ae?s:0)&&(w=Math.max(w-1,0))),w!==ze&&dt(w)},[i,y,z,C,b,L?.width,r,_,E,V.length,B]),xe=a.useCallback(()=>{if(typeof window<"u")return new URLSearchParams(window.location.search);if(x&&g?.getSearchParam){const e=new URLSearchParams,t=g.getSearchParam(x.key);return t&&e.set(x.key,t),e}return new URLSearchParams},[x,g]),be=a.useCallback((e,t)=>(x&&(t===x.defaultLink?e.delete(x.key):e.set(x.key,t),x.onResolve?.(e)),e),[x]),W=a.useCallback(e=>x?`?${be(xe(),e).toString()}`:void 0,[be,xe,x]),kt=Ke||!!x,yt=a.useCallback(async e=>{const t=W(e),s=typeof window<"u"?window.location.origin:"",l=typeof window<"u"?window.location.pathname:"",o=t?`${s}${l}${t}`:`${s}${l}`;await navigator.clipboard.writeText(o),Ut.toast.success(p("Link copied to clipboard"),{toastId:"Link copied to clipboard"}),Ne?.(e,o)},[W,p,Ne]),P=e=>{if(G(!1),Xe?.(e),x&&g?.navigate){const t=be(xe(),e);g.navigate(`?${t.toString()}`)}},We=e=>{if(i.length<=1)return;const t=u.map(o=>o.name===e?{...o,is_hidden:!0}:o),s=i.findIndex(o=>o.name===e),l=s===0?1:s-1;P(i[l].name),U(t)},St=e=>{const t=u.map(s=>s.name===e?{...s,is_hidden:!1}:s);G(!1),U(t)},K=e=>{if(!C)return;const t=u.map(s=>s.name===e?{...s,is_pinned:!s.is_pinned}:s);U(t)},Pe=(e,t)=>{const s=u.findIndex(({name:o})=>o===e),l=t==="left"?s-(u[s-1]?.name===r?2:1):s+1;U(ne.arrayMove(u,s,l))},Fe=()=>G(!N),Tt=e=>Q(e.active.id),Ct=e=>{const{active:t,over:s}=e;if(s?.id==="more-tabs"){We(t.id),Q(null),J(null);return}const l=u.findIndex(({name:m})=>m===t.id),o=u.findIndex(({name:m})=>m===s?.id);U(ne.arrayMove(u,l,o)),Q(null),J(null)},jt=()=>{Q(null),J(null)},It=e=>{J(e.over?.id==="more-tabs"?"more-tabs":null)},Nt=()=>{},vt=(e,t)=>{bt(e),mt(t)},me=(e,t=!1,s=!1)=>{const o=u.find(h=>h.name===e)?.is_pinned,m=[{label:n.jsx(S.OptionButton,{icon:n.jsx(k.ArrowOutwardIcon,{className:"w-icon h-icon text-inherit dark:text-inherit"}),text:p("Select Tab"),className:"text-black-900 dark:text-white"}),key:d.SELECT,onClick:()=>P(e)},{label:n.jsx(S.OptionButton,{icon:n.jsx(k.ArrowUpwardIcon,{className:"w-icon h-icon text-inherit dark:text-inherit"}),text:p("Move Up"),isDisabled:R,className:"text-black-900 dark:text-white"}),key:d.MOVE_LEFT,disabled:R,onClick:()=>Pe(e,"left")},{label:n.jsx(S.OptionButton,{icon:n.jsx(k.ArrowDownwardIcon,{className:"w-icon h-icon text-inherit dark:text-inherit"}),text:p("Move Down"),isDisabled:R,className:"text-black-900 dark:text-white"}),key:d.MOVE_RIGHT,disabled:R,onClick:()=>Pe(e,"right")},{label:n.jsx(S.OptionButton,{icon:n.jsx(k.ContentCopyIcon,{className:"w-icon h-icon text-inherit dark:text-inherit"}),text:p("Copy Link"),className:"text-black-900 dark:text-white"}),key:d.COPY_LINK,onClick:()=>yt(e)},{label:n.jsx(S.OptionButton,{icon:n.jsx(k.VisibilityOffIcon,{className:"w-icon h-icon text-inherit dark:text-inherit"}),text:p("Hide"),className:"text-black-900 dark:text-white"}),key:d.HIDE,onClick:()=>We(e)},{label:n.jsx(S.OptionButton,{icon:n.jsx(k.VisibilityIcon,{className:"w-icon h-icon text-inherit dark:text-inherit"}),text:p("Unhide"),className:"text-black-900 dark:text-white"}),key:d.UNHIDE,onClick:()=>St(e)},{label:n.jsx(S.OptionButton,{icon:o?n.jsx(k.UnpinFilledIcon,{className:"w-icon h-icon rotate-12 text-inherit dark:text-inherit"}):n.jsx(k.PinIcon,{className:"w-icon h-icon rotate-45 text-inherit dark:text-inherit"}),text:p(o?"Unpin":"Pin"),className:"text-black-900 dark:text-white",notVisible:!C}),key:o?d.UNPIN:d.PIN,onClick:()=>K(e)},{label:n.jsx(S.OptionButton,{className:"text-black-900 dark:text-white",icon:n.jsx(Ht.EditIcon,{className:"w-icon h-icon"}),text:p("Edit"),notVisible:!je}),key:d.EDIT,onClick:()=>je?.(e)},{label:n.jsx(S.OptionButton,{className:"text-error-600 dark:text-error-600",icon:n.jsx(k.DeleteIcon,{className:"w-icon h-icon text-error-600 dark:text-error-600"}),text:p("Delete"),notVisible:!Ie}),key:d.DELETE,onClick:()=>Ie?.(e)}],ee=[d.HIDE,d.UNHIDE],w=[d.SELECT,d.MOVE_LEFT,d.MOVE_RIGHT,d.UNHIDE];return m.filter(h=>t?h.key===d.UNHIDE:s?!ee.includes(h.key):!w.includes(h.key)).filter(h=>kt?!0:h.key!==d.COPY_LINK).filter(h=>i.length===1?h.key!==d.HIDE:!0)},M=(e,t)=>({classValue:{default:c("relative inline-flex pt-2 pb-3 px-2 pl-3 sm:px-2 rounded-t-sm group"),secondary:c("flex w-full sm:w-auto relative rounded-lg font-sans font-semibold text-center cursor-pointer uppercase",_==="sm"?"py-1 px-3 text-sm":"py-2 px-4 text-base")},selectedClassValue:{default:c("absolute left-0 bottom-0 w-full h-[3px] bg-primary-600"),secondary:c("absolute inset-0 bg-primary-50 dark:bg-primary-975 rounded-lg")},textClassValue:{default:c("relative uppercase font-sans font-semibold text-sm whitespace-nowrap",t?"text-primary-600 dark:text-primary-500":"text-neutral-400 hover:text-neutral-500 dark:text-neutral-100 dark:hover:text-white"),secondary:c("relative whitespace-nowrap text-sm",t?"text-primary-600 dark:text-primary-500":"text-neutral-400 dark:text-neutral-400")}})[e][T];a.useEffect(()=>{if(!X.current||T==="switch")return;const e=new ResizeObserver(t=>{const s=t[0].contentRect.width;pe(s)});return e.observe(X.current),pe(X.current.clientWidth),()=>e.disconnect()},[pe,T]);const Ot=JSON.stringify(O),_t=JSON.stringify(re?.map(({name:e})=>e));return a.useEffect(()=>{if(re?.length){let e=[...re];O.forEach(t=>{e.find(s=>s.name===t)||e.push({name:t,is_default:!1,is_hidden:!1,is_pinned:!1})}),e=e.filter((t,s,l)=>O.includes(t.name)&&s===l.findIndex(o=>o.name===t.name)),ce(e)}else ce(O.map(e=>({name:e,is_default:!1,is_hidden:!1,is_pinned:!1})).filter((e,t,s)=>t===s.findIndex(l=>l.name===e.name)))},[Ot,_t]),a.useEffect(()=>{A&&Ve(A)},[A]),a.useEffect(()=>{if(!u.length)return;const e=[...u];ue==="asc"?e.sort((t,s)=>t.name.localeCompare(s.name)):ue==="desc"&&e.sort((t,s)=>s.name.localeCompare(t.name)),ut(e)},[u,ue]),a.useEffect(()=>{Te(N)},[N]),T==="switch"?n.jsx("div",{className:c("inline",Ce),children:n.jsx("ul",{role:"tablist","aria-orientation":"horizontal",className:c("inline-flex grow-0 p-1 rounded-lg",ae==="dark"?"border-[1.5px] border-neutral-800 bg-neutral-800 dark:border-black-800":"bg-neutral-100 dark:bg-black-700",ie?"w-full":"w-auto"),children:O.map(e=>{const t=r===e,s=oe?.[e],l=u.find(m=>m.name===e),o=C&&l?.is_pinned;return n.jsx("li",{role:"presentation",className:c("inline-flex",ie?"w-full":"w-auto"),children:n.jsx(ye.TabSwitch,{title:e,showCounts:y,role:"tab",ariaSelected:t,tabIndex:0,icon:o?n.jsx(ke,{title:"Unpin",children:n.jsx("span",{onClick:()=>K(e),children:n.jsx(k.PinIcon,{className:"rotate-45 w-icon h-icon text-inherit dark:text-inherit"})})}):s,iconsOnly:tt,classValue:c("relative py-0.5 border-gray-200",nt,ie?"w-full flex items-center justify-center":"px-2"),selectedClassValue:c("absolute inset-0 rounded-md z-0",ae==="dark"?"bg-neutral-900":"bg-white dark:bg-black-800"),textClassValue:c("relative text-xs font-semibold font-sans whitespace-nowrap",t?"text-neutral-900 dark:text-neutral-100":"text-neutral-700 dark:text-neutral-100"),isSelected:t,href:W(e),onClick:et?void 0:()=>P(e),suffixRecord:b,selectedId:H,color:ae,disableAnimation:at})},e)})})}):n.jsx("div",{ref:X,className:c(st?"w-fit":"w-full"),onMouseEnter:()=>Ee(!0),onMouseLeave:()=>Ee(!1),children:n.jsxs(v.DndContext,{sensors:ft,onDragEnd:Ct,onDragStart:Tt,onDragCancel:jt,collisionDetection:v.closestCenter,onDragOver:It,children:[n.jsxs("ul",{role:"tablist","aria-orientation":"horizontal",className:c("flex items-center w-full",Ce,$?"gap-0":_==="sm"?"gap-1":"gap-2"),ref:ht,children:[Ze?n.jsx("div",{className:"skeleton bg-neutral-300 dark:bg-black-700 animate-pulse h-10 min-w-[100px] w-full rounded"}):n.jsxs(ne.SortableContext,{items:i.map(({name:e})=>e),strategy:ne.horizontalListSortingStrategy,id:"sortable",disabled:!E||R,children:[i.slice(0,Z).map(({name:e,is_pinned:t})=>{const s=r===e&&!N,l=C&&t;return n.jsx(Qe.SortableTab,{title:e,isDragging:D===e,className:$?"flex-1 flex justify-center":"",children:n.jsx("li",{role:"presentation",className:c($?"w-full flex":"sm:mr-2"),children:n.jsx(ye.TabSwitch,{showCounts:y,title:e,role:"tab",ariaSelected:s,tabIndex:0,classValue:c(M("classValue",s),$?"w-full justify-center":""),selectedClassValue:M("selectedClassValue",s),textClassValue:M("textClassValue",s),isSelected:s,tabOptions:s&&E?n.jsx(we.Dropdown,{menu:{items:me(e),className:se},trigger:["click"],onOpenChange:Te,overlayClassName:"row-option-cell",rootClassName:"",openClassName:"max-h-[350px] overflow-y-auto",placement:"bottom",children:n.jsx(Rt,{tooltip:p("More"),variant:"ghost",className:"!text-primary-500 hover:!bg-primary-100 dark:hover:!bg-primary-900",children:n.jsx(Je,{sx:{fontSize:20}})})}):null,draggingTab:D===e,href:W(e),onClick:()=>P(e),suffixRecord:b,selectedId:H,icon:l?n.jsx(ke,{title:p("Unpin"),children:n.jsx("span",{onClick:()=>K(e),children:n.jsx(k.PinIcon,{size:20,className:"rotate-45 text-inherit dark:text-inherit"})})}):oe?.[e]??null})},e)},e)}),r&&Be?n.jsx(Qe.SortableTab,{title:r,isDragging:D===r,children:n.jsx("li",{role:"presentation",className:c("sm:mr-2"),children:n.jsx(ye.TabSwitch,{showCounts:y,title:r,role:"tab",ariaSelected:!0,tabIndex:0,classValue:M("classValue",!0),selectedClassValue:M("selectedClassValue",!0),textClassValue:M("textClassValue",!0),isSelected:!0,tabOptions:E?n.jsx(we.Dropdown,{menu:{items:me(r),className:se},trigger:["click"],onOpenChange:Te,overlayClassName:"row-option-cell",rootClassName:"",openClassName:"max-h-[350px] overflow-y-auto",placement:"bottom",children:n.jsx(Je,{sx:{fontSize:20},className:"text-primary-600"})}):null,draggingTab:D===r,href:W(r),suffixRecord:b,selectedId:H,icon:C&&u.find(e=>e.name===r)?.is_pinned?n.jsx(ke,{title:p("Pinned"),children:n.jsx("span",{onClick:()=>K(r),children:n.jsx(k.PinIcon,{size:20,className:"rotate-45 text-inherit dark:text-inherit"})})}):oe?.[r]??null})},r)},r):null,(q<i.length&&!z||V.length>0)&&He>0?n.jsx(Wt.DropableWrapper,{id:"more-tabs",children:n.jsx(we.Dropdown,{overlayStyle:{maxHeight:"calc(100vh - 350px)",overflow:"auto",marginTop:"8px",scrollbarWidth:"none",borderRadius:8,boxShadow:"0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05)"},onOpenChange:()=>Fe(),open:N,menu:{items:[{key:"Search",disabled:!0,style:{minWidth:"190px",marginBottom:"8px"},label:n.jsx("div",{className:"px-2 bg-white dark:bg-black-800",children:n.jsx(Bt.SearchBar,{id:"search-bar-more-tabs",value:le,classValues:"!rounded-lg",onChange:e=>ct(e)})})},...i.slice(Z).filter(e=>e.name!==r).concat(V).filter(({name:e})=>typeof e=="string"&&(e??"").toLowerCase().includes(le.toLowerCase())).map(({name:e,is_hidden:t})=>({key:e,label:n.jsx(S.OptionButton,{className:c("uppercase",t?"text-neutral-400 dark:text-neutral-500":"text-black-900 dark:text-black-200"),text:e,suffixRecord:y?b:{},highlight:le,truncateText:!0,isDisabled:t,onClick:t?void 0:()=>{P(e),G(!1)}}),popupClassName:se,children:N?me(e,t,!0):null}))],className:se},openClassName:"max-h-[350px] overflow-y-auto",trigger:["click"],overlayClassName:"row-option-cell",placement:"bottomRight",getPopupContainer:e=>e.parentElement,children:n.jsx(Pt.MoreButton,{title:`${y?He:""} MORE...`,variant:T,size:_,draggingOver:pt,suffixRecord:b,handleShowMoreDropdown:Fe,selectedId:H,showMoreDropdown:N})})}):null]}),L?n.jsx("div",{className:c(L?.className),children:n.jsx("li",{children:L.component})}):null,E&&lt&&n.jsx("li",{className:c(xt?"opacity-100":"opacity-0","transition-opacity duration-300"),children:n.jsx(Ft.TabOptions,{hasSuffixRecord:!!(b&&Object.keys(b).length>0),savedConfig:De,onApplyFilter:e=>wt(e),setUnsavedChanges:()=>{},handleTabSort:Nt,onSearchChange:vt})})]}),D?n.jsx(zt.TabDragOverlay,{draggingTab:D,suffixRecord:b,size:_,variant:T,selectedId:H,parentContainer:rt}):null]})})};exports.Tabs=At;
2
2
  //# sourceMappingURL=Tabs.cjs.js.map