@clickhouse/click-ui 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/cjs/click-ui.css +362 -0
  2. package/dist/cjs/components/Assets/Icons/Horizontal-Loading.cjs +13 -49
  3. package/dist/cjs/components/Assets/Icons/Horizontal-Loading.cjs.map +1 -1
  4. package/dist/cjs/components/Assets/Icons/Loaders.css +94 -0
  5. package/dist/cjs/components/Assets/Icons/Loaders.module.css.cjs +13 -0
  6. package/dist/cjs/components/Assets/Icons/Loaders.module.css.cjs.map +1 -0
  7. package/dist/cjs/components/Assets/Icons/Loading-Animated.cjs +8 -12
  8. package/dist/cjs/components/Assets/Icons/Loading-Animated.cjs.map +1 -1
  9. package/dist/cjs/components/Assets/Icons/Loading.cjs +13 -6
  10. package/dist/cjs/components/Assets/Icons/Loading.cjs.map +1 -1
  11. package/dist/cjs/components/DatePicker/DateRangePicker.cjs +12 -2
  12. package/dist/cjs/components/DatePicker/DateRangePicker.cjs.map +1 -1
  13. package/dist/cjs/components/DatePicker/index.cjs +1 -3
  14. package/dist/cjs/components/DatePicker/index.cjs.map +1 -1
  15. package/dist/cjs/components/DatePicker/utils.cjs +3 -0
  16. package/dist/cjs/components/DatePicker/utils.cjs.map +1 -1
  17. package/dist/cjs/components/Grid/Cell.cjs +1 -3
  18. package/dist/cjs/components/Grid/Cell.cjs.map +1 -1
  19. package/dist/cjs/components/Grid/ColumnResizer.cjs +18 -15
  20. package/dist/cjs/components/Grid/ColumnResizer.cjs.map +1 -1
  21. package/dist/cjs/components/Grid/ColumnResizer.css +22 -0
  22. package/dist/cjs/components/Grid/ColumnResizer.module.css.cjs +11 -0
  23. package/dist/cjs/components/Grid/ColumnResizer.module.css.cjs.map +1 -0
  24. package/dist/cjs/components/Grid/Grid.css +34 -0
  25. package/dist/cjs/components/Grid/Grid.module.css.cjs +21 -0
  26. package/dist/cjs/components/Grid/Grid.module.css.cjs.map +1 -0
  27. package/dist/cjs/components/Grid/Header.cjs +22 -43
  28. package/dist/cjs/components/Grid/Header.cjs.map +1 -1
  29. package/dist/cjs/components/Grid/Header.css +44 -0
  30. package/dist/cjs/components/Grid/Header.module.css.cjs +19 -0
  31. package/dist/cjs/components/Grid/Header.module.css.cjs.map +1 -0
  32. package/dist/cjs/components/Grid/RowNumberColumn.cjs +12 -29
  33. package/dist/cjs/components/Grid/RowNumberColumn.cjs.map +1 -1
  34. package/dist/cjs/components/Grid/RowNumberColumn.css +22 -0
  35. package/dist/cjs/components/Grid/RowNumberColumn.module.css.cjs +12 -0
  36. package/dist/cjs/components/Grid/RowNumberColumn.module.css.cjs.map +1 -0
  37. package/dist/cjs/components/Grid/StyledCell.cjs +84 -56
  38. package/dist/cjs/components/Grid/StyledCell.cjs.map +1 -1
  39. package/dist/cjs/components/Grid/StyledCell.css +146 -0
  40. package/dist/cjs/components/Grid/StyledCell.module.css.cjs +47 -0
  41. package/dist/cjs/components/Grid/StyledCell.module.css.cjs.map +1 -0
  42. package/dist/cjs/components/Grid/index.cjs +30 -30
  43. package/dist/cjs/components/Grid/index.cjs.map +1 -1
  44. package/dist/esm/click-ui.css +362 -0
  45. package/dist/esm/components/Assets/Icons/Horizontal-Loading.js +13 -49
  46. package/dist/esm/components/Assets/Icons/Horizontal-Loading.js.map +1 -1
  47. package/dist/esm/components/Assets/Icons/Loaders.css +94 -0
  48. package/dist/esm/components/Assets/Icons/Loaders.module.css.js +8 -0
  49. package/dist/esm/components/Assets/Icons/Loaders.module.css.js.map +1 -0
  50. package/dist/esm/components/Assets/Icons/Loading-Animated.js +9 -13
  51. package/dist/esm/components/Assets/Icons/Loading-Animated.js.map +1 -1
  52. package/dist/esm/components/Assets/Icons/Loading.js +13 -6
  53. package/dist/esm/components/Assets/Icons/Loading.js.map +1 -1
  54. package/dist/esm/components/Assets/Icons/system/IconsLight.js +2 -2
  55. package/dist/esm/components/Assets/Icons/system/IconsLight.js.map +1 -1
  56. package/dist/esm/components/DatePicker/DateRangePicker.js +14 -4
  57. package/dist/esm/components/DatePicker/DateRangePicker.js.map +1 -1
  58. package/dist/esm/components/DatePicker/index.js +2 -4
  59. package/dist/esm/components/DatePicker/index.js.map +1 -1
  60. package/dist/esm/components/DatePicker/utils.js +3 -1
  61. package/dist/esm/components/DatePicker/utils.js.map +1 -1
  62. package/dist/esm/components/Grid/Cell.js +1 -3
  63. package/dist/esm/components/Grid/Cell.js.map +1 -1
  64. package/dist/esm/components/Grid/ColumnResizer.css +22 -0
  65. package/dist/esm/components/Grid/ColumnResizer.js +18 -15
  66. package/dist/esm/components/Grid/ColumnResizer.js.map +1 -1
  67. package/dist/esm/components/Grid/ColumnResizer.module.css.js +7 -0
  68. package/dist/esm/components/Grid/ColumnResizer.module.css.js.map +1 -0
  69. package/dist/esm/components/Grid/Grid.css +34 -0
  70. package/dist/esm/components/Grid/Grid.module.css.js +13 -0
  71. package/dist/esm/components/Grid/Grid.module.css.js.map +1 -0
  72. package/dist/esm/components/Grid/Header.css +44 -0
  73. package/dist/esm/components/Grid/Header.js +22 -43
  74. package/dist/esm/components/Grid/Header.js.map +1 -1
  75. package/dist/esm/components/Grid/Header.module.css.js +13 -0
  76. package/dist/esm/components/Grid/Header.module.css.js.map +1 -0
  77. package/dist/esm/components/Grid/RowNumberColumn.css +22 -0
  78. package/dist/esm/components/Grid/RowNumberColumn.js +12 -29
  79. package/dist/esm/components/Grid/RowNumberColumn.js.map +1 -1
  80. package/dist/esm/components/Grid/RowNumberColumn.module.css.js +8 -0
  81. package/dist/esm/components/Grid/RowNumberColumn.module.css.js.map +1 -0
  82. package/dist/esm/components/Grid/StyledCell.css +146 -0
  83. package/dist/esm/components/Grid/StyledCell.js +84 -56
  84. package/dist/esm/components/Grid/StyledCell.js.map +1 -1
  85. package/dist/esm/components/Grid/StyledCell.module.css.js +32 -0
  86. package/dist/esm/components/Grid/StyledCell.module.css.js.map +1 -0
  87. package/dist/esm/components/Grid/index.js +30 -30
  88. package/dist/esm/components/Grid/index.js.map +1 -1
  89. package/dist/types/components/Assets/Icons/Horizontal-Loading.d.ts +2 -3
  90. package/dist/types/components/Assets/Icons/Loading-Animated.d.ts +2 -3
  91. package/dist/types/components/Assets/Icons/Loading.d.ts +2 -4
  92. package/dist/types/components/DatePicker/DateRangePicker.d.ts +2 -1
  93. package/dist/types/components/DatePicker/utils.d.ts +1 -0
  94. package/dist/types/components/Grid/RowNumberColumn.d.ts +1 -2
  95. package/dist/types/components/Grid/StyledCell.d.ts +10 -5
  96. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/Grid/Grid.tsx"],"sourcesContent":["import {\n HTMLAttributes,\n KeyboardEventHandler,\n MouseEventHandler,\n PointerEventHandler,\n ReactElement,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n GridOnScrollProps,\n VariableSizeGrid,\n GridOnItemsRenderedProps,\n GridChildComponentProps,\n} from 'react-window';\nimport AutoSizer, { Size } from 'react-virtualized-auto-sizer';\nimport RowNumberColumn from './RowNumberColumn';\nimport Header from './Header';\nimport { styled } from 'styled-components';\nimport {\n GetResizerPositionFn,\n GridContextMenuItemProps,\n GridProps,\n ItemDataType,\n ResizerPosition,\n RoundedType,\n SelectedRegion,\n SelectionAction,\n SelectionFocus,\n onSelectFn,\n} from './types';\nimport { useSelectionActions } from './useSelectionActions';\nimport { mergeRefs } from '@/utils/mergeRefs';\nimport { Cell } from './Cell';\nimport { ContextMenu } from '@/components/ContextMenu';\nimport { createToast } from '@/components/Toast/toastEmitter';\nimport copyGridElements from './copyGridElements';\nimport useColumns from './useColumns';\nimport useResizingState from './useResizingState';\n\nconst NO_BUTTONS_PRESSED = 0;\nconst LEFT_BUTTON_PRESSED = 1;\nconst RIGHT_BUTTON_PRESSED = 2;\n\nconst GridContainer = styled.div`\n display: flex;\n flex-direction: column-reverse;\n user-select: none;\n overflow-anchor: none;\n`;\n\nconst getRenderedCursor = (children: ReactElement[]) =>\n children.reduce(\n ([minRow, maxRow, minColumn, maxColumn], { props: { columnIndex, rowIndex } }) => {\n if (rowIndex < minRow) {\n minRow = rowIndex;\n }\n if (rowIndex > maxRow) {\n maxRow = rowIndex;\n }\n if (columnIndex < minColumn) {\n minColumn = columnIndex;\n }\n if (columnIndex > maxColumn) {\n maxColumn = columnIndex;\n }\n\n return [minRow, maxRow, minColumn, maxColumn];\n },\n [\n Number.POSITIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n ]\n );\n\nconst GridDataContainer = styled.div<{ $top: number; $left: number }>`\n position: absolute;\n top: 0;\n left: 0;\n ${({ $top, $left }) => `\n margin-top: ${$top}px;\n margin-left: ${$left}px;\n `}\n`;\n\nconst ContextMenuTrigger = styled.div<{\n $height?: number;\n $rounded: RoundedType;\n $showBorder: boolean;\n}>`\n outline: none;\n overflow: hidden;\n height: ${({ $height }) => ($height ? `${$height}px` : '100%')};\n width: 100%;\n background: ${({ theme }) => theme.click.grid.body.cell.color.background.default};\n border-radius: ${({ theme, $rounded }) => theme.click.grid.radii[$rounded]};\n ${({ $showBorder, theme }) =>\n $showBorder &&\n `border: 1px solid ${theme.click.grid.header.cell.color.stroke.default}`};\n`;\n\ninterface InnerElementTypeTypes extends HTMLAttributes<HTMLDivElement> {\n children: ReactElement[];\n}\n\nconst OuterElementType = forwardRef<HTMLDivElement>((props, ref) => (\n <div\n ref={ref}\n data-testid=\"grid-outer-element\"\n tabIndex={0}\n {...props}\n />\n));\n\nexport const Grid = forwardRef<HTMLDivElement, GridProps>(\n (\n {\n autoFocus,\n autoHeight = false,\n rowStart = 0,\n showRowNumber = true,\n rounded = 'none',\n showHeader = true,\n focus: focusProp,\n useIsScrolling = true,\n rowHeight = 33,\n columnCount,\n columnWidth: columnWidthProp,\n onSelect: onSelectProp,\n headerHeight = 33,\n rowCount,\n cell,\n onColumnResize: onColumnResizeProp,\n onFocusChange: onFocusChangeProp,\n getMenuOptions,\n onKeyDown: onKeyDownProp,\n selection: selectionProp,\n showToast,\n onMouseDown: onMouseDownProp,\n onMouseMove: onMouseMoveProp,\n showBorder = false,\n onCopy: onCopyProp,\n onCopyCallback,\n onContextMenu: onContextMenuProp,\n forwardedGridRef,\n onItemsRendered: onItemsRenderedProp,\n rowAutoHeight,\n ...props\n },\n forwardedRef\n ) => {\n const [focus, setFocus] = useState<SelectionFocus>(\n focusProp ?? {\n row: rowStart,\n column: 0,\n }\n );\n const [selection, setSelection] = useState<SelectedRegion>(\n selectionProp ?? {\n type: 'empty',\n }\n );\n\n const defaultOnCopy: () => Promise<void> = useCallback(async () => {\n try {\n await copyGridElements({\n cell,\n selection,\n focus: focusProp ?? focus,\n rowCount,\n columnCount,\n outerRef: outerRef,\n });\n\n if (onCopyCallback) {\n onCopyCallback(true);\n }\n if (showToast) {\n createToast({\n title: 'Copied successfully',\n description: 'Now you can paste the content',\n type: 'success',\n });\n }\n } catch (e) {\n console.error(e);\n\n if (onCopyCallback) {\n onCopyCallback(false);\n }\n\n if (showToast) {\n createToast({\n title: 'Failed to copy',\n description: 'Encountered an error while copying. Try again after sometime',\n type: 'danger',\n });\n }\n }\n }, [\n cell,\n columnCount,\n focus,\n focusProp,\n rowCount,\n selection,\n showToast,\n onCopyCallback,\n ]);\n\n const customOnCopy: () => Promise<void> = useMemo(() => {\n const result = async () => {\n if (onCopyProp) {\n await onCopyProp(selection, focus);\n }\n };\n return result;\n }, [onCopyProp, selection, focus]);\n\n const onCopy: () => Promise<void> =\n typeof onCopyProp === 'function' ? customOnCopy : defaultOnCopy;\n\n const defaultMenuOptions = [\n {\n label: 'Copy',\n onSelect: onCopy,\n },\n ];\n\n const [menuOptions, setMenuOptions] =\n useState<GridContextMenuItemProps[]>(defaultMenuOptions);\n const [contextMenuOpen, setContextMenuOpen] = useState(false);\n const [scrolledVertical, setScrolledVertical] = useState(false);\n const [scrolledHorizontal, setScrolledHorizontal] = useState(false);\n const dragState = useRef<number | false>(false);\n const gridRef = useRef<VariableSizeGrid>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const outerRef = useRef<HTMLDivElement>(null);\n const elementBorderRef = useRef({\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n scrollBarWidth: 0,\n scrollBarHeight: 0,\n width: 0,\n height: 0,\n });\n const onCellSelect: onSelectFn = useCallback(\n (action, selection, focus) => {\n setSelection(selection);\n if (typeof onSelectProp === 'function') {\n onSelectProp(action, selection, focus);\n }\n },\n [onSelectProp]\n );\n const resizingState = useResizingState();\n\n const [rowHeights, setRowHeights] = useState<{ [key: number]: number }>({});\n\n const getRowHeight = useCallback(\n (index: number) => {\n if (rowAutoHeight && rowHeights[index] !== undefined) {\n return rowHeights[index] + rowHeight;\n }\n return rowHeight;\n },\n [rowHeight, rowAutoHeight, rowHeights]\n );\n\n const updateRowHeight = useCallback(\n (rowIndex: number, height: number) => {\n if (!rowAutoHeight) {\n return;\n }\n\n setRowHeights(prevRowHeights => {\n if (height > (prevRowHeights[rowIndex] || 0) && gridRef.current) {\n const newRowHeights = { ...prevRowHeights, [rowIndex]: height };\n gridRef.current.resetAfterRowIndex(rowIndex);\n return newRowHeights;\n }\n return prevRowHeights;\n });\n },\n [rowAutoHeight, gridRef]\n );\n\n const onFocusChange = useCallback(\n (row: number, column: number) => {\n setFocus(focus => ({\n row: row ?? focusProp?.row ?? focus.row,\n column: column ?? focusProp?.column ?? focus.column,\n }));\n if (typeof onFocusChangeProp === 'function') {\n onFocusChangeProp(row, column);\n }\n },\n [onFocusChangeProp, focusProp]\n );\n\n const rowNumberWidth = ((rowStart + rowCount).toString().length + 2) * 8 + 3; // 128 includes 8px left and right padding and (8px + 8px + 8x(1ch) * rowcount) and 3 is for avoiding ellipsis\n\n const { getColumnHorizontalPosition, onColumnResize, columnWidth, initColumnSize } =\n useColumns({\n columnCount,\n columnWidth: columnWidthProp,\n outerGridRef: outerRef,\n gridRef,\n onColumnResize: onColumnResizeProp,\n });\n\n const scrollGridTo = useCallback(\n async ({ row, column }: { row?: number; column?: number }) => {\n if (!outerRef.current || !gridRef.current) {\n return;\n }\n\n const rowIndex = row ?? 0;\n const columnIndex = column ?? 0;\n let element = outerRef.current?.querySelector<HTMLElement>(\n `[data-row=\"${rowIndex}\"][data-column=\"${columnIndex}\"]`\n );\n if (!element) {\n return;\n }\n\n const { scrollTop, scrollLeft } = outerRef.current;\n // this is for the test to perform correctly\n if (typeof element?.scrollIntoView === 'function') {\n element?.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n // This is for the element to be available after the scroll.\n await new Promise(requestAnimationFrame);\n }\n element = outerRef.current?.querySelector<HTMLElement>(\n `[data-row=\"${rowIndex}\"][data-column=\"${columnIndex}\"]`\n );\n if (!element) {\n return;\n }\n if (scrollLeft > element.offsetLeft || scrollTop > element.offsetTop) {\n outerRef.current?.scrollBy(\n scrollLeft > element.offsetLeft ? -rowNumberWidth : 0,\n scrollTop > element.offsetTop ? -headerHeight : 0\n );\n }\n },\n [headerHeight, rowNumberWidth]\n );\n\n const getFixedResizerLeftPosition = useCallback(\n (clientX: number, width: number, columnIndex: number): string | number => {\n const columnPosition = getColumnHorizontalPosition(columnIndex);\n const columnLeft = columnPosition + width;\n const { width: containerWidth, left, scrollBarWidth } = elementBorderRef.current;\n const scrollLeft = outerRef.current?.scrollLeft ?? 0;\n if (clientX + rowNumberWidth - left > containerWidth + scrollBarWidth) {\n return scrollLeft + containerWidth - scrollBarWidth - 4;\n }\n\n if (width < 50) {\n //50 is the minWidth for the column\n return columnPosition + rowNumberWidth + 50;\n }\n\n return columnLeft + rowNumberWidth - 4;\n },\n [getColumnHorizontalPosition, rowNumberWidth]\n );\n\n const getResizerPosition: GetResizerPositionFn = useCallback(\n (clientX, width, columnIndex) => {\n const result: ResizerPosition = {\n left: `${getFixedResizerLeftPosition(clientX, width, columnIndex)}px`,\n };\n\n if (outerRef.current) {\n result.top = `${outerRef.current.scrollTop}px`;\n }\n return result;\n },\n [getFixedResizerLeftPosition]\n );\n\n const clearSelectionAndFocus = useCallback(\n (force: boolean) => {\n setSelection(selection => {\n if (selection.type === 'columns' && !force) {\n return selection;\n } else {\n return { type: 'empty' };\n }\n });\n const newFocus = focusProp ?? focus;\n onFocusChange(newFocus.row, newFocus.column);\n scrollGridTo(newFocus);\n },\n [focus, focusProp, onFocusChange, scrollGridTo]\n );\n\n useEffect(() => {\n clearSelectionAndFocus(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [rowStart]);\n\n const { getSelectionType, onSelection, mouseMoveCellSelect, moveSelection } =\n useSelectionActions({\n onCellSelect,\n focus: focusProp ?? focus,\n columnCount,\n rowCount,\n onFocusChange,\n scrollGridTo,\n selection: selectionProp ?? selection,\n rowStart,\n });\n\n const data: ItemDataType = {\n showRowNumber,\n cell,\n rowCount,\n columnCount,\n showHeader,\n focus: focusProp ?? focus,\n getSelectionType,\n rowHeight,\n headerHeight,\n rowNumberWidth,\n rowStart,\n rowAutoHeight,\n updateRowHeight,\n getRowHeight,\n };\n\n const InnerElementType = forwardRef<HTMLDivElement, InnerElementTypeTypes>(\n ({ children, ...containerProps }, ref) => {\n const [minRow, maxRow, minColumn, maxColumn] = getRenderedCursor(children);\n return (\n <GridContainer\n {...containerProps}\n className={`sticky-grid__container grid-outer ${props.className ?? ''}`}\n >\n <GridDataContainer\n $top={showHeader ? headerHeight : 0}\n $left={showRowNumber ? rowNumberWidth : 0}\n ref={ref}\n >\n {children}\n </GridDataContainer>\n {showRowNumber && (\n <RowNumberColumn\n scrolledHorizontal={scrolledHorizontal}\n minRow={minRow}\n maxRow={maxRow}\n rowHeight={rowHeight}\n headerHeight={headerHeight}\n rowWidth={rowNumberWidth}\n rowCount={rowCount}\n getSelectionType={getSelectionType}\n showHeader={showHeader}\n rowStart={rowStart}\n showBorder={showBorder}\n rowAutoHeight={rowAutoHeight}\n />\n )}\n\n {showHeader && (\n <Header\n scrolledVertical={scrolledVertical}\n scrolledHorizontal={scrolledHorizontal}\n showRowNumber={showRowNumber}\n minColumn={minColumn}\n maxColumn={maxColumn}\n height={headerHeight}\n getColumnWidth={columnWidth}\n cell={cell}\n rowNumberWidth={rowNumberWidth}\n getSelectionType={getSelectionType}\n columnCount={columnCount}\n onColumnResize={onColumnResize}\n getColumnHorizontalPosition={getColumnHorizontalPosition}\n getResizerPosition={getResizerPosition}\n showBorder={showBorder}\n resizingState={resizingState}\n />\n )}\n </GridContainer>\n );\n }\n );\n useEffect(() => {\n if (autoFocus) {\n containerRef.current?.focus();\n }\n }, [autoFocus]);\n\n const onMouseDown: MouseEventHandler<HTMLDivElement> = useCallback(\n e => {\n containerRef.current?.focus();\n if (typeof onMouseDownProp === 'function' && e.buttons === LEFT_BUTTON_PRESSED) {\n onMouseDownProp(e);\n }\n const target = (e.target as HTMLElement).closest(\n '[data-grid-row][data-grid-column]'\n ) as HTMLElement;\n if (\n !target ||\n target.dataset.gridRow === undefined ||\n target.dataset.gridColumn === undefined\n ) {\n return;\n }\n\n if (e.buttons === RIGHT_BUTTON_PRESSED && target.dataset.selected === 'true') {\n return;\n }\n\n const { gridRow: rowIndexString, gridColumn: columnIndexString } = target.dataset;\n const row = parseInt(rowIndexString);\n const column = parseInt(columnIndexString);\n if (row === -1 && column === -1) {\n onSelection({ type: 'all' });\n return;\n }\n const shiftKeyPressed = e.shiftKey;\n\n if (row === -1) {\n onSelection({\n type: shiftKeyPressed ? 'shiftColumnSelection' : 'columnSelection',\n column,\n event: 'click',\n });\n if (!shiftKeyPressed) {\n onFocusChange(rowStart, column);\n }\n return;\n }\n if (column === -1) {\n onSelection({\n type: shiftKeyPressed ? 'shiftRowSelection' : 'rowSelection',\n row,\n event: 'click',\n });\n if (!shiftKeyPressed) {\n onFocusChange(row, 0);\n }\n return;\n }\n onSelection({\n type: shiftKeyPressed ? 'shiftSelection' : 'normal',\n row,\n column,\n event: 'click',\n });\n if (!shiftKeyPressed) {\n onFocusChange(row, column);\n }\n },\n [onFocusChange, onMouseDownProp, onSelection, rowStart]\n );\n\n const onPointerDown: PointerEventHandler<HTMLDivElement> = useCallback(e => {\n dragState.current = e.pointerId;\n }, []);\n\n const setPointerCapture: PointerEventHandler<HTMLDivElement> = useCallback(e => {\n if (e.buttons === NO_BUTTONS_PRESSED || dragState.current === false) {\n return;\n }\n\n containerRef.current?.setPointerCapture(dragState.current);\n }, []);\n\n const onPointerUp: PointerEventHandler<HTMLDivElement> = useCallback(\n e => {\n if (containerRef.current) {\n containerRef.current.releasePointerCapture(e.pointerId);\n if (!contextMenuOpen) {\n containerRef.current.focus();\n }\n }\n\n dragState.current = false;\n const newFocus = focusProp ?? focus;\n onFocusChange(newFocus.row, newFocus.column);\n },\n [contextMenuOpen, focus, focusProp, onFocusChange]\n );\n\n const onMouseMove: MouseEventHandler<HTMLDivElement> = useCallback(\n async e => {\n e.preventDefault();\n e.stopPropagation();\n if (typeof onMouseMoveProp === 'function') {\n onMouseMoveProp(e);\n }\n if (\n dragState.current === false ||\n e.buttons === NO_BUTTONS_PRESSED ||\n !containerRef.current ||\n !outerRef.current\n ) {\n return;\n }\n\n containerRef.current.setPointerCapture(dragState.current);\n let verticalSign = 0,\n horizontalSign = 0,\n x = e.clientX,\n y = e.clientY;\n if (\n elementBorderRef.current.left >= e.clientX ||\n e.clientX >=\n elementBorderRef.current.right - elementBorderRef.current.scrollBarWidth\n ) {\n const scrollHorizontalDirection =\n e.clientX <= elementBorderRef.current.left ? 'left' : 'right';\n if (\n (scrollHorizontalDirection === 'left' && e.movementX < 0) ||\n (scrollHorizontalDirection === 'right' && e.movementX > 0)\n ) {\n horizontalSign = scrollHorizontalDirection === 'left' ? -1 : 1;\n }\n x =\n scrollHorizontalDirection === 'left'\n ? elementBorderRef.current.left + rowNumberWidth + 10\n : elementBorderRef.current.right -\n elementBorderRef.current.scrollBarWidth -\n 10;\n }\n\n if (\n elementBorderRef.current.top >= e.clientY ||\n e.clientY >=\n elementBorderRef.current.bottom - elementBorderRef.current.scrollBarHeight\n ) {\n const scrollVerticalDirection =\n e.clientY <= elementBorderRef.current.top ? 'top' : 'bottom';\n if (\n (scrollVerticalDirection === 'top' && e.movementY < 0) ||\n (scrollVerticalDirection === 'bottom' && e.movementY > 0)\n ) {\n verticalSign = scrollVerticalDirection === 'top' ? -1 : 1;\n }\n y =\n scrollVerticalDirection === 'top'\n ? elementBorderRef.current.top + headerHeight + 10\n : elementBorderRef.current.bottom -\n elementBorderRef.current.scrollBarHeight -\n 10;\n }\n\n await new Promise(requestAnimationFrame);\n const cell = document.elementFromPoint(x, y) as HTMLElement | null;\n\n if (!cell) {\n return;\n }\n\n const { gridRow, gridColumn } = cell.dataset;\n if (!gridRow || !gridColumn) {\n return;\n }\n const rowIndex = Number(gridRow) + verticalSign;\n const columnIndex = Number(gridColumn) + horizontalSign;\n\n mouseMoveCellSelect(rowIndex, columnIndex);\n },\n [headerHeight, mouseMoveCellSelect, onMouseMoveProp, rowNumberWidth]\n );\n\n const onScroll = ({ scrollLeft, scrollTop }: GridOnScrollProps) => {\n setScrolledVertical(scrollTop > 0);\n setScrolledHorizontal(scrollLeft > 0);\n };\n\n const onResize = useCallback(\n ({ height, width }: Size) => {\n setTimeout(() => {\n if (!outerRef.current) {\n return;\n }\n\n const { top, bottom, left, right } =\n outerRef.current.getBoundingClientRect() ?? {};\n elementBorderRef.current = {\n top,\n bottom,\n left,\n right,\n scrollBarWidth: width - outerRef.current.clientWidth,\n scrollBarHeight: height - outerRef.current.clientHeight,\n width,\n height,\n };\n initColumnSize(outerRef.current.clientWidth - rowNumberWidth);\n }, 0);\n },\n [initColumnSize, rowNumberWidth]\n );\n\n const onKeyDown: KeyboardEventHandler<HTMLDivElement> = useCallback(\n async e => {\n if (typeof onKeyDownProp === 'function') {\n onKeyDownProp(e);\n }\n if (!e.defaultPrevented) {\n e.preventDefault();\n e.stopPropagation();\n }\n const moveAnchor = e.shiftKey;\n const { row, column } = focusProp ?? focus;\n\n const applyAction = (action: SelectionAction | null): void => {\n if (action) {\n onSelection({ ...action, event: 'keypress' });\n }\n if (action?.type === 'normal') {\n onFocusChange(action.row, action.column);\n }\n };\n if ((e.ctrlKey || e.metaKey) && e.key === 'c') {\n onCopy();\n return;\n }\n\n switch (e.key) {\n case 'ArrowLeft':\n applyAction(moveSelection(-1, 0, moveAnchor, 'keypress'));\n break;\n case 'ArrowRight':\n applyAction(moveSelection(1, 0, moveAnchor, 'keypress'));\n break;\n case 'ArrowUp':\n applyAction(moveSelection(0, -1, moveAnchor, 'keypress'));\n break;\n case 'ArrowDown':\n applyAction(moveSelection(0, 1, moveAnchor, 'keypress'));\n break;\n case 'Enter':\n onSelection({\n type: 'normal',\n row,\n column,\n event: 'keypress',\n });\n onFocusChange(row, column);\n break;\n case 'Escape':\n clearSelectionAndFocus(true);\n break;\n }\n containerRef.current?.focus();\n },\n [\n onKeyDownProp,\n focusProp,\n focus,\n onSelection,\n onFocusChange,\n onCopy,\n moveSelection,\n clearSelectionAndFocus,\n ]\n );\n const onContextMenu: MouseEventHandler<HTMLDivElement> = e => {\n onMouseDown(e);\n\n if (typeof onContextMenuProp === 'function') {\n onContextMenuProp(e);\n }\n if (typeof getMenuOptions === 'function') {\n const newOptions = getMenuOptions(selection, focusProp ?? focus);\n setMenuOptions([...defaultMenuOptions, ...newOptions]);\n }\n };\n\n const lastItemsRenderedProps = useRef<GridOnItemsRenderedProps>();\n const lastRowStart = useRef(rowStart);\n\n const onItemsRendered = useCallback(\n (props: GridOnItemsRenderedProps) => {\n lastItemsRenderedProps.current = props;\n return onItemsRenderedProp?.({\n ...props,\n visibleRowStartIndex: props.visibleRowStartIndex + rowStart,\n visibleRowStopIndex: props.visibleRowStopIndex + rowStart,\n overscanRowStartIndex: props.overscanRowStartIndex + rowStart,\n overscanRowStopIndex: props.overscanRowStopIndex + rowStart,\n });\n },\n [onItemsRenderedProp, rowStart]\n );\n\n // handles the case where rowStart changes, make sure to inform caller\n // of the new visible rows.\n useEffect(() => {\n if (lastItemsRenderedProps.current && rowStart !== lastRowStart.current) {\n onItemsRendered(lastItemsRenderedProps.current);\n lastRowStart.current = rowStart;\n }\n }, [rowStart, onItemsRendered]);\n\n const CellWithWidth = (\n args: GridChildComponentProps<ItemDataType>\n ): React.JSX.Element => {\n const width = columnWidth(args.columnIndex);\n return (\n <Cell\n {...args}\n width={width}\n />\n );\n };\n\n // Handles the case when rowCount/columnCount changes, rerenders styles\n useEffect(() => {\n if (gridRef.current) {\n gridRef.current.resetAfterRowIndex(0);\n }\n }, [rowCount, columnCount]);\n\n return (\n <ContextMenu\n modal={false}\n onOpenChange={setContextMenuOpen}\n >\n <ContextMenuTrigger\n as={ContextMenu.Trigger}\n ref={mergeRefs([forwardedRef, containerRef])}\n tabIndex={0}\n onMouseDown={onMouseDown}\n onMouseMove={onMouseMove}\n onKeyDown={onKeyDown}\n onPointerDown={onPointerDown}\n onPointerUp={onPointerUp}\n onPointerLeave={setPointerCapture}\n onPointerEnter={setPointerCapture}\n onContextMenu={onContextMenu}\n $rounded={rounded}\n $height={\n autoHeight\n ? rowCount * rowHeight +\n (showHeader ? headerHeight : 0) +\n elementBorderRef.current.scrollBarHeight\n : undefined\n }\n $showBorder={showBorder}\n >\n <AutoSizer onResize={onResize}>\n {({ height, width }) => (\n <VariableSizeGrid\n ref={forwardedGridRef ? mergeRefs([forwardedGridRef, gridRef]) : gridRef}\n height={height}\n width={width}\n columnCount={columnCount}\n rowHeight={getRowHeight}\n useIsScrolling={useIsScrolling}\n innerElementType={InnerElementType}\n itemData={data}\n initialScrollTop={\n focus.row < rowStart\n ? focus.row * rowHeight\n : (focus.row - rowStart) * rowHeight\n }\n initialScrollLeft={getColumnHorizontalPosition(focus.column)}\n columnWidth={columnWidth}\n rowCount={rowCount}\n onScroll={onScroll}\n outerRef={outerRef}\n outerElementType={OuterElementType}\n onItemsRendered={onItemsRendered}\n {...props}\n >\n {CellWithWidth}\n </VariableSizeGrid>\n )}\n </AutoSizer>\n </ContextMenuTrigger>\n <ContextMenu.Content>\n {menuOptions.map((option, index) => (\n <ContextMenu.Item\n key={`grid-${index}`}\n onSelect={option.onSelect}\n >\n {option.label}\n </ContextMenu.Item>\n ))}\n </ContextMenu.Content>\n </ContextMenu>\n );\n }\n);\n"],"names":["NO_BUTTONS_PRESSED","LEFT_BUTTON_PRESSED","RIGHT_BUTTON_PRESSED","GridContainer","styled","div","withConfig","componentId","getRenderedCursor","children","reduce","minRow","maxRow","minColumn","maxColumn","props","columnIndex","rowIndex","Number","POSITIVE_INFINITY","NEGATIVE_INFINITY","GridDataContainer","$top","$left","ContextMenuTrigger","$height","theme","click","grid","body","cell","color","background","default","$rounded","radii","$showBorder","header","stroke","OuterElementType","forwardRef","ref","Grid","autoFocus","autoHeight","rowStart","showRowNumber","rounded","showHeader","focus","focusProp","useIsScrolling","rowHeight","columnCount","columnWidth","columnWidthProp","onSelect","onSelectProp","headerHeight","rowCount","onColumnResize","onColumnResizeProp","onFocusChange","onFocusChangeProp","getMenuOptions","onKeyDown","onKeyDownProp","selection","selectionProp","showToast","onMouseDown","onMouseDownProp","onMouseMove","onMouseMoveProp","showBorder","onCopy","onCopyProp","onCopyCallback","onContextMenu","onContextMenuProp","forwardedGridRef","onItemsRendered","onItemsRenderedProp","rowAutoHeight","forwardedRef","setFocus","useState","row","column","setSelection","type","defaultOnCopy","useCallback","copyGridElements","outerRef","createToast","title","description","e","console","error","customOnCopy","useMemo","result","defaultMenuOptions","label","menuOptions","setMenuOptions","contextMenuOpen","setContextMenuOpen","scrolledVertical","setScrolledVertical","scrolledHorizontal","setScrolledHorizontal","dragState","useRef","gridRef","containerRef","elementBorderRef","top","bottom","left","right","scrollBarWidth","scrollBarHeight","width","height","onCellSelect","action","resizingState","useResizingState","rowHeights","setRowHeights","getRowHeight","index","undefined","updateRowHeight","prevRowHeights","current","newRowHeights","resetAfterRowIndex","rowNumberWidth","toString","length","getColumnHorizontalPosition","initColumnSize","useColumns","outerGridRef","scrollGridTo","element","querySelector","scrollTop","scrollLeft","scrollIntoView","block","inline","Promise","requestAnimationFrame","offsetLeft","offsetTop","scrollBy","getFixedResizerLeftPosition","clientX","columnPosition","columnLeft","containerWidth","getResizerPosition","clearSelectionAndFocus","force","newFocus","useEffect","getSelectionType","onSelection","mouseMoveCellSelect","moveSelection","useSelectionActions","data","InnerElementType","containerProps","className","buttons","target","closest","dataset","gridRow","gridColumn","selected","rowIndexString","columnIndexString","parseInt","shiftKeyPressed","shiftKey","event","onPointerDown","pointerId","setPointerCapture","onPointerUp","releasePointerCapture","preventDefault","stopPropagation","verticalSign","horizontalSign","x","y","clientY","scrollHorizontalDirection","movementX","scrollVerticalDirection","movementY","document","elementFromPoint","onScroll","onResize","setTimeout","getBoundingClientRect","clientWidth","clientHeight","defaultPrevented","moveAnchor","applyAction","ctrlKey","metaKey","key","newOptions","lastItemsRenderedProps","lastRowStart","visibleRowStartIndex","visibleRowStopIndex","overscanRowStartIndex","overscanRowStopIndex","CellWithWidth","args","ContextMenu","Trigger","mergeRefs","map","option"],"mappings":";;;;;;;;;;;;;;;;AA4CA,MAAMA,kBAAAA,GAAqB,CAAA;AAC3B,MAAMC,mBAAAA,GAAsB,CAAA;AAC5B,MAAMC,oBAAAA,GAAuB,CAAA;AAE7B,MAAMC,aAAAA,GAAgBC,MAAAA,CAAOC,GAAAA,CAAGC,UAAAA,CAAA;AAAA,EAAAC,WAAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,mFAAA,CAAA,CAAA;AAOhC,MAAMC,iBAAAA,GAAoBA,CAACC,QAAAA,KACzBA,QAAAA,CAASC,MAAAA,CACP,CAAC,CAACC,MAAAA,EAAQC,MAAAA,EAAQC,SAAAA,EAAWC,SAAS,CAAA,EAAG;AAAA,EAAEC,KAAAA,EAAO;AAAA,IAAEC,WAAAA;AAAAA,IAAaC;AAAAA;AAAW,CAAA,KAAM;AAChF,EAAA,IAAIA,WAAWN,MAAAA,EAAQ;AACrBA,IAAAA,MAAAA,GAASM,QAAAA;AAAAA,EACX;AACA,EAAA,IAAIA,WAAWL,MAAAA,EAAQ;AACrBA,IAAAA,MAAAA,GAASK,QAAAA;AAAAA,EACX;AACA,EAAA,IAAID,cAAcH,SAAAA,EAAW;AAC3BA,IAAAA,SAAAA,GAAYG,WAAAA;AAAAA,EACd;AACA,EAAA,IAAIA,cAAcF,SAAAA,EAAW;AAC3BA,IAAAA,SAAAA,GAAYE,WAAAA;AAAAA,EACd;AAEA,EAAA,OAAO,CAACL,MAAAA,EAAQC,MAAAA,EAAQC,SAAAA,EAAWC,SAAS,CAAA;AAC9C,CAAA,EACA,CACEI,OAAOC,iBAAAA,EACPD,MAAAA,CAAOE,mBACPF,MAAAA,CAAOC,iBAAAA,EACPD,MAAAA,CAAOE,iBAAiB,CAE5B,CAAA;AAEF,MAAMC,iBAAAA,GAAoBjB,MAAAA,CAAOC,GAAAA,CAAGC,UAAAA,CAAA;AAAA,EAAAC,WAAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,iCAAA,EAAA,EAAA,GAIhC,CAAC;AAAA,EAAEe,IAAAA;AAAAA,EAAMC;AAAM,CAAA,KAAM;AAAA,gBAAA,EACPD,IAAI,CAAA;AAAA,iBAAA,EACHC,KAAK,CAAA;AAAA,EAAA,CACrB,CAAA;AAGH,MAAMC,kBAAAA,GAAqBpB,MAAAA,CAAOC,GAAAA,CAAGC,UAAAA,CAAA;AAAA,EAAAC,WAAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,sCAAA,EAAA,yBAAA,EAAA,mBAAA,GAAA,EAAA,GAAA,GAOzB,CAAC;AAAA,EAAEkB;AAAQ,CAAA,KAAOA,OAAAA,GAAU,CAAA,EAAGA,OAAO,CAAA,EAAA,CAAA,GAAO,QAEzC,CAAC;AAAA,EAAEC;AAAM,CAAA,KAAMA,KAAAA,CAAMC,MAAMC,IAAAA,CAAKC,IAAAA,CAAKC,KAAKC,KAAAA,CAAMC,UAAAA,CAAWC,SACxD,CAAC;AAAA,EAAEP,KAAAA;AAAAA,EAAOQ;AAAS,CAAA,KAAMR,MAAMC,KAAAA,CAAMC,IAAAA,CAAKO,KAAAA,CAAMD,QAAQ,GACvE,CAAC;AAAA,EAAEE,WAAAA;AAAAA,EAAaV;AAAM,CAAA,KACtBU,WAAAA,IACA,CAAA,kBAAA,EAAqBV,KAAAA,CAAMC,KAAAA,CAAMC,IAAAA,CAAKS,OAAOP,IAAAA,CAAKC,KAAAA,CAAMO,MAAAA,CAAOL,OAAO,CAAA,CAAE,CAAA;AAO5E,MAAMM,gBAAAA,GAAmBC,UAAAA,CAA2B,CAACzB,KAAAA,EAAO0B,wBAC1D,GAAA,CAAC,KAAA,EAAA,EACC,GAAA,EACA,aAAA,EAAY,oBAAA,EACZ,QAAA,EAAU,CAAA,EACV,GAAI1B,QAEP,CAAA;AAEM,MAAM2B,IAAAA,GAAOF,WAClB,CACE;AAAA,EACEG,SAAAA;AAAAA,EACAC,UAAAA,GAAa,KAAA;AAAA,EACbC,QAAAA,GAAW,CAAA;AAAA,EACXC,aAAAA,GAAgB,IAAA;AAAA,EAChBC,OAAAA,GAAU,MAAA;AAAA,EACVC,UAAAA,GAAa,IAAA;AAAA,EACbC,KAAAA,EAAOC,SAAAA;AAAAA,EACPC,cAAAA,GAAiB,IAAA;AAAA,EACjBC,SAAAA,GAAY,EAAA;AAAA,EACZC,WAAAA;AAAAA,EACAC,WAAAA,EAAaC,eAAAA;AAAAA,EACbC,QAAAA,EAAUC,YAAAA;AAAAA,EACVC,YAAAA,GAAe,EAAA;AAAA,EACfC,QAAAA;AAAAA,EACA7B,IAAAA;AAAAA,EACA8B,cAAAA,EAAgBC,kBAAAA;AAAAA,EAChBC,aAAAA,EAAeC,iBAAAA;AAAAA,EACfC,cAAAA;AAAAA,EACAC,SAAAA,EAAWC,aAAAA;AAAAA,EACXC,SAAAA,EAAWC,aAAAA;AAAAA,EACXC,SAAAA;AAAAA,EACAC,WAAAA,EAAaC,eAAAA;AAAAA,EACbC,WAAAA,EAAaC,eAAAA;AAAAA,EACbC,UAAAA,GAAa,KAAA;AAAA,EACbC,MAAAA,EAAQC,UAAAA;AAAAA,EACRC,cAAAA;AAAAA,EACAC,aAAAA,EAAeC,iBAAAA;AAAAA,EACfC,gBAAAA;AAAAA,EACAC,eAAAA,EAAiBC,mBAAAA;AAAAA,EACjBC,aAAAA;AAAAA,EACA,GAAGpE;AACL,CAAA,EACAqE,YAAAA,KACG;AACH,EAAA,MAAM,CAACnC,KAAAA,EAAOoC,QAAQ,CAAA,GAAIC,SACxBpC,SAAAA,IAAa;AAAA,IACXqC,GAAAA,EAAK1C,QAAAA;AAAAA,IACL2C,MAAAA,EAAQ;AAAA,GAEZ,CAAA;AACA,EAAA,MAAM,CAACrB,SAAAA,EAAWsB,YAAY,CAAA,GAAIH,SAChClB,aAAAA,IAAiB;AAAA,IACfsB,IAAAA,EAAM;AAAA,GAEV,CAAA;AAEA,EAAA,MAAMC,aAAAA,GAAqCC,YAAY,YAAY;AACjE,IAAA,IAAI;AACF,MAAA,MAAMC,gBAAAA,CAAiB;AAAA,QACrB/D,IAAAA;AAAAA,QACAqC,SAAAA;AAAAA,QACAlB,OAAOC,SAAAA,IAAaD,KAAAA;AAAAA,QACpBU,QAAAA;AAAAA,QACAN,WAAAA;AAAAA,QACAyC;AAAAA,OACD,CAAA;AAED,MAAA,IAAIjB,cAAAA,EAAgB;AAClBA,QAAAA,cAAAA,CAAe,IAAI,CAAA;AAAA,MACrB;AACA,MAAA,IAAIR,SAAAA,EAAW;AACb0B,QAAAA,WAAAA,CAAY;AAAA,UACVC,KAAAA,EAAO,qBAAA;AAAA,UACPC,WAAAA,EAAa,+BAAA;AAAA,UACbP,IAAAA,EAAM;AAAA,SACP,CAAA;AAAA,MACH;AAAA,IACF,SAASQ,CAAAA,EAAG;AACVC,MAAAA,OAAAA,CAAQC,MAAMF,CAAC,CAAA;AAEf,MAAA,IAAIrB,cAAAA,EAAgB;AAClBA,QAAAA,cAAAA,CAAe,KAAK,CAAA;AAAA,MACtB;AAEA,MAAA,IAAIR,SAAAA,EAAW;AACb0B,QAAAA,WAAAA,CAAY;AAAA,UACVC,KAAAA,EAAO,gBAAA;AAAA,UACPC,WAAAA,EAAa,8DAAA;AAAA,UACbP,IAAAA,EAAM;AAAA,SACP,CAAA;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAA,EAAG,CACD5D,IAAAA,EACAuB,WAAAA,EACAJ,KAAAA,EACAC,WACAS,QAAAA,EACAQ,SAAAA,EACAE,SAAAA,EACAQ,cAAc,CACf,CAAA;AAED,EAAA,MAAMwB,YAAAA,GAAoCC,QAAQ,MAAM;AACtD,IAAA,MAAMC,SAAS,YAAY;AACzB,MAAA,IAAI3B,UAAAA,EAAY;AACd,QAAA,MAAMA,UAAAA,CAAWT,WAAWlB,KAAK,CAAA;AAAA,MACnC;AAAA,IACF,CAAA;AACA,IAAA,OAAOsD,MAAAA;AAAAA,EACT,CAAA,EAAG,CAAC3B,UAAAA,EAAYT,SAAAA,EAAWlB,KAAK,CAAC,CAAA;AAEjC,EAAA,MAAM0B,MAAAA,GACJ,OAAOC,UAAAA,KAAe,UAAA,GAAayB,YAAAA,GAAeV,aAAAA;AAEpD,EAAA,MAAMa,qBAAqB,CACzB;AAAA,IACEC,KAAAA,EAAO,MAAA;AAAA,IACPjD,QAAAA,EAAUmB;AAAAA,GACX,CAAA;AAGH,EAAA,MAAM,CAAC+B,WAAAA,EAAaC,cAAc,CAAA,GAChCrB,SAAqCkB,kBAAkB,CAAA;AACzD,EAAA,MAAM,CAACI,eAAAA,EAAiBC,kBAAkB,CAAA,GAAIvB,SAAS,KAAK,CAAA;AAC5D,EAAA,MAAM,CAACwB,gBAAAA,EAAkBC,mBAAmB,CAAA,GAAIzB,SAAS,KAAK,CAAA;AAC9D,EAAA,MAAM,CAAC0B,kBAAAA,EAAoBC,qBAAqB,CAAA,GAAI3B,SAAS,KAAK,CAAA;AAClE,EAAA,MAAM4B,SAAAA,GAAYC,OAAuB,KAAK,CAAA;AAC9C,EAAA,MAAMC,OAAAA,GAAUD,OAAyB,IAAI,CAAA;AAC7C,EAAA,MAAME,YAAAA,GAAeF,OAAuB,IAAI,CAAA;AAChD,EAAA,MAAMrB,QAAAA,GAAWqB,OAAuB,IAAI,CAAA;AAC5C,EAAA,MAAMG,mBAAmBH,MAAAA,CAAO;AAAA,IAC9BI,GAAAA,EAAK,CAAA;AAAA,IACLC,MAAAA,EAAQ,CAAA;AAAA,IACRC,IAAAA,EAAM,CAAA;AAAA,IACNC,KAAAA,EAAO,CAAA;AAAA,IACPC,cAAAA,EAAgB,CAAA;AAAA,IAChBC,eAAAA,EAAiB,CAAA;AAAA,IACjBC,KAAAA,EAAO,CAAA;AAAA,IACPC,MAAAA,EAAQ;AAAA,GACT,CAAA;AACD,EAAA,MAAMC,YAAAA,GAA2BnC,WAAAA,CAC/B,CAACoC,MAAAA,EAAQ7D,YAAWlB,MAAAA,KAAU;AAC5BwC,IAAAA,YAAAA,CAAatB,UAAS,CAAA;AACtB,IAAA,IAAI,OAAOV,iBAAiB,UAAA,EAAY;AACtCA,MAAAA,YAAAA,CAAauE,MAAAA,EAAQ7D,YAAWlB,MAAK,CAAA;AAAA,IACvC;AAAA,EACF,CAAA,EACA,CAACQ,YAAY,CACf,CAAA;AACA,EAAA,MAAMwE,gBAAgBC,gBAAAA,EAAiB;AAEvC,EAAA,MAAM,CAACC,UAAAA,EAAYC,aAAa,CAAA,GAAI9C,QAAAA,CAAoC,EAAE,CAAA;AAE1E,EAAA,MAAM+C,YAAAA,GAAezC,WAAAA,CACnB,CAAC0C,KAAAA,KAAkB;AACjB,IAAA,IAAInD,aAAAA,IAAiBgD,UAAAA,CAAWG,KAAK,CAAA,KAAMC,MAAAA,EAAW;AACpD,MAAA,OAAOJ,UAAAA,CAAWG,KAAK,CAAA,GAAIlF,SAAAA;AAAAA,IAC7B;AACA,IAAA,OAAOA,SAAAA;AAAAA,EACT,CAAA,EACA,CAACA,SAAAA,EAAW+B,aAAAA,EAAegD,UAAU,CACvC,CAAA;AAEA,EAAA,MAAMK,eAAAA,GAAkB5C,WAAAA,CACtB,CAAC3E,QAAAA,EAAkB6G,MAAAA,KAAmB;AACpC,IAAA,IAAI,CAAC3C,aAAAA,EAAe;AAClB,MAAA;AAAA,IACF;AAEAiD,IAAAA,aAAAA,CAAcK,CAAAA,cAAAA,KAAkB;AAC9B,MAAA,IAAIX,UAAUW,cAAAA,CAAexH,QAAQ,CAAA,IAAK,CAAA,CAAA,IAAMmG,QAAQsB,OAAAA,EAAS;AAC/D,QAAA,MAAMC,aAAAA,GAAgB;AAAA,UAAE,GAAGF,cAAAA;AAAAA,UAAgB,CAACxH,QAAQ,GAAG6G;AAAAA,SAAO;AAC9DV,QAAAA,OAAAA,CAAQsB,OAAAA,CAAQE,mBAAmB3H,QAAQ,CAAA;AAC3C,QAAA,OAAO0H,aAAAA;AAAAA,MACT;AACA,MAAA,OAAOF,cAAAA;AAAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAA,EACA,CAACtD,aAAAA,EAAeiC,OAAO,CACzB,CAAA;AAEA,EAAA,MAAMtD,aAAAA,GAAgB8B,WAAAA,CACpB,CAACL,GAAAA,EAAaC,MAAAA,KAAmB;AAC/BH,IAAAA,QAAAA,CAASpC,CAAAA,MAAAA,MAAU;AAAA,MACjBsC,GAAAA,EAAKA,GAAAA,IAAOrC,SAAAA,EAAWqC,GAAAA,IAAOtC,MAAAA,CAAMsC,GAAAA;AAAAA,MACpCC,MAAAA,EAAQA,MAAAA,IAAUtC,SAAAA,EAAWsC,MAAAA,IAAUvC,MAAAA,CAAMuC;AAAAA,KAC/C,CAAE,CAAA;AACF,IAAA,IAAI,OAAOzB,sBAAsB,UAAA,EAAY;AAC3CA,MAAAA,iBAAAA,CAAkBwB,KAAKC,MAAM,CAAA;AAAA,IAC/B;AAAA,EACF,CAAA,EACA,CAACzB,iBAAAA,EAAmBb,SAAS,CAC/B,CAAA;AAEA,EAAA,MAAM2F,mBAAmBhG,QAAAA,GAAWc,QAAAA,EAAUmF,UAAS,CAAEC,MAAAA,GAAS,KAAK,CAAA,GAAI,CAAA;AAE3E,EAAA,MAAM;AAAA,IAAEC,2BAAAA;AAAAA,IAA6BpF,cAAAA;AAAAA,IAAgBN,WAAAA;AAAAA,IAAa2F;AAAAA,MAChEC,UAAAA,CAAW;AAAA,IACT7F,WAAAA;AAAAA,IACAC,WAAAA,EAAaC,eAAAA;AAAAA,IACb4F,YAAAA,EAAcrD,QAAAA;AAAAA,IACdsB,OAAAA;AAAAA,IACAxD,cAAAA,EAAgBC;AAAAA,GACjB,CAAA;AAEH,EAAA,MAAMuF,YAAAA,GAAexD,YACnB,OAAO;AAAA,IAAEL,GAAAA;AAAAA,IAAKC;AAAAA,GAA0C,KAAM;AAC5D,IAAA,IAAI,CAACM,QAAAA,CAAS4C,OAAAA,IAAW,CAACtB,QAAQsB,OAAAA,EAAS;AACzC,MAAA;AAAA,IACF;AAEA,IAAA,MAAMzH,WAAWsE,GAAAA,IAAO,CAAA;AACxB,IAAA,MAAMvE,cAAcwE,MAAAA,IAAU,CAAA;AAC9B,IAAA,IAAI6D,OAAAA,GAAUvD,SAAS4C,OAAAA,EAASY,aAAAA,CAC9B,cAAcrI,QAAQ,CAAA,gBAAA,EAAmBD,WAAW,CAAA,EAAA,CACtD,CAAA;AACA,IAAA,IAAI,CAACqI,OAAAA,EAAS;AACZ,MAAA;AAAA,IACF;AAEA,IAAA,MAAM;AAAA,MAAEE,SAAAA;AAAAA,MAAWC;AAAAA,QAAe1D,QAAAA,CAAS4C,OAAAA;AAE3C,IAAA,IAAI,OAAOW,OAAAA,EAASI,cAAAA,KAAmB,UAAA,EAAY;AACjDJ,MAAAA,OAAAA,EAASI,cAAAA,CAAe;AAAA,QACtBC,KAAAA,EAAO,SAAA;AAAA,QACPC,MAAAA,EAAQ;AAAA,OACT,CAAA;AAED,MAAA,MAAM,IAAIC,QAAQC,qBAAqB,CAAA;AAAA,IACzC;AACAR,IAAAA,OAAAA,GAAUvD,SAAS4C,OAAAA,EAASY,aAAAA,CAC1B,cAAcrI,QAAQ,CAAA,gBAAA,EAAmBD,WAAW,CAAA,EAAA,CACtD,CAAA;AACA,IAAA,IAAI,CAACqI,OAAAA,EAAS;AACZ,MAAA;AAAA,IACF;AACA,IAAA,IAAIG,UAAAA,GAAaH,OAAAA,CAAQS,UAAAA,IAAcP,SAAAA,GAAYF,QAAQU,SAAAA,EAAW;AACpEjE,MAAAA,QAAAA,CAAS4C,OAAAA,EAASsB,QAAAA,CAChBR,UAAAA,GAAaH,OAAAA,CAAQS,UAAAA,GAAa,CAACjB,cAAAA,GAAiB,CAAA,EACpDU,SAAAA,GAAYF,OAAAA,CAAQU,SAAAA,GAAY,CAACrG,eAAe,CAClD,CAAA;AAAA,IACF;AAAA,EACF,CAAA,EACA,CAACA,YAAAA,EAAcmF,cAAc,CAC/B,CAAA;AAEA,EAAA,MAAMoB,2BAAAA,GAA8BrE,WAAAA,CAClC,CAACsE,OAAAA,EAAiBrC,OAAe7G,WAAAA,KAAyC;AACxE,IAAA,MAAMmJ,cAAAA,GAAiBnB,4BAA4BhI,WAAW,CAAA;AAC9D,IAAA,MAAMoJ,aAAaD,cAAAA,GAAiBtC,KAAAA;AACpC,IAAA,MAAM;AAAA,MAAEA,KAAAA,EAAOwC,cAAAA;AAAAA,MAAgB5C,IAAAA;AAAAA,MAAME;AAAAA,QAAmBL,gBAAAA,CAAiBoB,OAAAA;AACzE,IAAA,MAAMc,UAAAA,GAAa1D,QAAAA,CAAS4C,OAAAA,EAASc,UAAAA,IAAc,CAAA;AACnD,IAAA,IAAIU,OAAAA,GAAUrB,cAAAA,GAAiBpB,IAAAA,GAAO4C,cAAAA,GAAiB1C,cAAAA,EAAgB;AACrE,MAAA,OAAO6B,UAAAA,GAAaa,iBAAiB1C,cAAAA,GAAiB,CAAA;AAAA,IACxD;AAEA,IAAA,IAAIE,QAAQ,EAAA,EAAI;AAEd,MAAA,OAAOsC,iBAAiBtB,cAAAA,GAAiB,EAAA;AAAA,IAC3C;AAEA,IAAA,OAAOuB,aAAavB,cAAAA,GAAiB,CAAA;AAAA,EACvC,CAAA,EACA,CAACG,2BAAAA,EAA6BH,cAAc,CAC9C,CAAA;AAEA,EAAA,MAAMyB,kBAAAA,GAA2C1E,WAAAA,CAC/C,CAACsE,OAAAA,EAASrC,OAAO7G,WAAAA,KAAgB;AAC/B,IAAA,MAAMuF,MAAAA,GAA0B;AAAA,MAC9BkB,MAAM,CAAA,EAAGwC,2BAAAA,CAA4BC,OAAAA,EAASrC,KAAAA,EAAO7G,WAAW,CAAC,CAAA,EAAA;AAAA,KACnE;AAEA,IAAA,IAAI8E,SAAS4C,OAAAA,EAAS;AACpBnC,MAAAA,MAAAA,CAAOgB,GAAAA,GAAM,CAAA,EAAGzB,QAAAA,CAAS4C,OAAAA,CAAQa,SAAS,CAAA,EAAA,CAAA;AAAA,IAC5C;AACA,IAAA,OAAOhD,MAAAA;AAAAA,EACT,CAAA,EACA,CAAC0D,2BAA2B,CAC9B,CAAA;AAEA,EAAA,MAAMM,sBAAAA,GAAyB3E,WAAAA,CAC7B,CAAC4E,KAAAA,KAAmB;AAClB/E,IAAAA,YAAAA,CAAatB,CAAAA,UAAAA,KAAa;AACxB,MAAA,IAAIA,UAAAA,CAAUuB,IAAAA,KAAS,SAAA,IAAa,CAAC8E,KAAAA,EAAO;AAC1C,QAAA,OAAOrG,UAAAA;AAAAA,MACT,CAAA,MAAO;AACL,QAAA,OAAO;AAAA,UAAEuB,IAAAA,EAAM;AAAA,SAAQ;AAAA,MACzB;AAAA,IACF,CAAC,CAAA;AACD,IAAA,MAAM+E,WAAWvH,SAAAA,IAAaD,KAAAA;AAC9Ba,IAAAA,aAAAA,CAAc2G,QAAAA,CAASlF,GAAAA,EAAKkF,QAAAA,CAASjF,MAAM,CAAA;AAC3C4D,IAAAA,YAAAA,CAAaqB,QAAQ,CAAA;AAAA,EACvB,GACA,CAACxH,KAAAA,EAAOC,SAAAA,EAAWY,aAAAA,EAAesF,YAAY,CAChD,CAAA;AAEAsB,EAAAA,SAAAA,CAAU,MAAM;AACdH,IAAAA,sBAAAA,CAAuB,IAAI,CAAA;AAAA,EAE7B,CAAA,EAAG,CAAC1H,QAAQ,CAAC,CAAA;AAEb,EAAA,MAAM;AAAA,IAAE8H,gBAAAA;AAAAA,IAAkBC,WAAAA;AAAAA,IAAaC,mBAAAA;AAAAA,IAAqBC;AAAAA,MAC1DC,mBAAAA,CAAoB;AAAA,IAClBhD,YAAAA;AAAAA,IACA9E,OAAOC,SAAAA,IAAaD,KAAAA;AAAAA,IACpBI,WAAAA;AAAAA,IACAM,QAAAA;AAAAA,IACAG,aAAAA;AAAAA,IACAsF,YAAAA;AAAAA,IACAjF,WAAWC,aAAAA,IAAiBD,SAAAA;AAAAA,IAC5BtB;AAAAA,GACD,CAAA;AAEH,EAAA,MAAMmI,IAAAA,GAAqB;AAAA,IACzBlI,aAAAA;AAAAA,IACAhB,IAAAA;AAAAA,IACA6B,QAAAA;AAAAA,IACAN,WAAAA;AAAAA,IACAL,UAAAA;AAAAA,IACAC,OAAOC,SAAAA,IAAaD,KAAAA;AAAAA,IACpB0H,gBAAAA;AAAAA,IACAvH,SAAAA;AAAAA,IACAM,YAAAA;AAAAA,IACAmF,cAAAA;AAAAA,IACAhG,QAAAA;AAAAA,IACAsC,aAAAA;AAAAA,IACAqD,eAAAA;AAAAA,IACAH;AAAAA,GACF;AAEA,EAAA,MAAM4C,gBAAAA,GAAmBzI,WACvB,CAAC;AAAA,IAAE/B,QAAAA;AAAAA,IAAU,GAAGyK;AAAAA,KAAkBzI,GAAAA,KAAQ;AACxC,IAAA,MAAM,CAAC9B,MAAAA,EAAQC,MAAAA,EAAQC,WAAWC,SAAS,CAAA,GAAIN,kBAAkBC,QAAQ,CAAA;AACzE,IAAA,uBACE,IAAA,CAAC,iBACC,GAAIyK,cAAAA,EACJ,WAAW,CAAA,kCAAA,EAAqCnK,KAAAA,CAAMoK,SAAAA,IAAa,EAAE,CAAA,CAAA,EAErE,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,iBAAA,EAAA,EACC,IAAA,EAAMnI,UAAAA,GAAaU,YAAAA,GAAe,CAAA,EAClC,OAAOZ,aAAAA,GAAgB+F,cAAAA,GAAiB,CAAA,EACxC,GAAA,EAECpI,QAAAA,EACH,CAAA;AAAA,MACCqC,aAAAA,oBACC,GAAA,CAAC,eAAA,EAAA,EACC,kBAAA,EACA,QACA,MAAA,EACA,SAAA,EACA,YAAA,EACA,QAAA,EAAU+F,gBACV,QAAA,EACA,gBAAA,EACA,UAAA,EACA,QAAA,EACA,YACA,aAAA,EAA6B,CAAA;AAAA,MAIhC7F,UAAAA,wBACE,MAAA,EAAA,EACC,gBAAA,EACA,oBACA,aAAA,EACA,SAAA,EACA,WACA,MAAA,EAAQU,YAAAA,EACR,gBAAgBJ,WAAAA,EAChB,IAAA,EACA,gBACA,gBAAA,EACA,WAAA,EACA,gBACA,2BAAA,EACA,kBAAA,EACA,YACA,aAAA,EAA6B;AAAA,KAAA,EAGnC,CAAA;AAAA,EAEJ,CACF,CAAA;AACAoH,EAAAA,SAAAA,CAAU,MAAM;AACd,IAAA,IAAI/H,SAAAA,EAAW;AACb0E,MAAAA,YAAAA,CAAaqB,SAASzF,KAAAA,EAAM;AAAA,IAC9B;AAAA,EACF,CAAA,EAAG,CAACN,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM2B,WAAAA,GAAiDsB,YACrDM,CAAAA,CAAAA,KAAK;AACHmB,IAAAA,YAAAA,CAAaqB,SAASzF,KAAAA,EAAM;AAC5B,IAAA,IAAI,OAAOsB,eAAAA,KAAoB,UAAA,IAAc2B,CAAAA,CAAEkF,YAAYnL,mBAAAA,EAAqB;AAC9EsE,MAAAA,eAAAA,CAAgB2B,CAAC,CAAA;AAAA,IACnB;AACA,IAAA,MAAMmF,MAAAA,GAAUnF,CAAAA,CAAEmF,MAAAA,CAAuBC,OAAAA,CACvC,mCACF,CAAA;AACA,IAAA,IACE,CAACD,UACDA,MAAAA,CAAOE,OAAAA,CAAQC,YAAYjD,MAAAA,IAC3B8C,MAAAA,CAAOE,OAAAA,CAAQE,UAAAA,KAAelD,MAAAA,EAC9B;AACA,MAAA;AAAA,IACF;AAEA,IAAA,IAAIrC,EAAEkF,OAAAA,KAAYlL,oBAAAA,IAAwBmL,MAAAA,CAAOE,OAAAA,CAAQG,aAAa,MAAA,EAAQ;AAC5E,MAAA;AAAA,IACF;AAEA,IAAA,MAAM;AAAA,MAAEF,OAAAA,EAASG,cAAAA;AAAAA,MAAgBF,UAAAA,EAAYG;AAAAA,QAAsBP,MAAAA,CAAOE,OAAAA;AAC1E,IAAA,MAAMhG,GAAAA,GAAMsG,SAASF,cAAc,CAAA;AACnC,IAAA,MAAMnG,MAAAA,GAASqG,SAASD,iBAAiB,CAAA;AACzC,IAAA,IAAIrG,GAAAA,KAAQ,EAAA,IAAMC,MAAAA,KAAW,EAAA,EAAI;AAC/BoF,MAAAA,WAAAA,CAAY;AAAA,QAAElF,IAAAA,EAAM;AAAA,OAAO,CAAA;AAC3B,MAAA;AAAA,IACF;AACA,IAAA,MAAMoG,kBAAkB5F,CAAAA,CAAE6F,QAAAA;AAE1B,IAAA,IAAIxG,QAAQ,EAAA,EAAI;AACdqF,MAAAA,WAAAA,CAAY;AAAA,QACVlF,IAAAA,EAAMoG,kBAAkB,sBAAA,GAAyB,iBAAA;AAAA,QACjDtG,MAAAA;AAAAA,QACAwG,KAAAA,EAAO;AAAA,OACR,CAAA;AACD,MAAA,IAAI,CAACF,eAAAA,EAAiB;AACpBhI,QAAAA,aAAAA,CAAcjB,UAAU2C,MAAM,CAAA;AAAA,MAChC;AACA,MAAA;AAAA,IACF;AACA,IAAA,IAAIA,WAAW,EAAA,EAAI;AACjBoF,MAAAA,WAAAA,CAAY;AAAA,QACVlF,IAAAA,EAAMoG,kBAAkB,mBAAA,GAAsB,cAAA;AAAA,QAC9CvG,GAAAA;AAAAA,QACAyG,KAAAA,EAAO;AAAA,OACR,CAAA;AACD,MAAA,IAAI,CAACF,eAAAA,EAAiB;AACpBhI,QAAAA,aAAAA,CAAcyB,KAAK,CAAC,CAAA;AAAA,MACtB;AACA,MAAA;AAAA,IACF;AACAqF,IAAAA,WAAAA,CAAY;AAAA,MACVlF,IAAAA,EAAMoG,kBAAkB,gBAAA,GAAmB,QAAA;AAAA,MAC3CvG,GAAAA;AAAAA,MACAC,MAAAA;AAAAA,MACAwG,KAAAA,EAAO;AAAA,KACR,CAAA;AACD,IAAA,IAAI,CAACF,eAAAA,EAAiB;AACpBhI,MAAAA,aAAAA,CAAcyB,KAAKC,MAAM,CAAA;AAAA,IAC3B;AAAA,EACF,GACA,CAAC1B,aAAAA,EAAeS,eAAAA,EAAiBqG,WAAAA,EAAa/H,QAAQ,CACxD,CAAA;AAEA,EAAA,MAAMoJ,aAAAA,GAAqDrG,YAAYM,CAAAA,CAAAA,KAAK;AAC1EgB,IAAAA,SAAAA,CAAUwB,UAAUxC,CAAAA,CAAEgG,SAAAA;AAAAA,EACxB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAMC,iBAAAA,GAAyDvG,YAAYM,CAAAA,CAAAA,KAAK;AAC9E,IAAA,IAAIA,CAAAA,CAAEkF,OAAAA,KAAYpL,kBAAAA,IAAsBkH,SAAAA,CAAUwB,YAAY,KAAA,EAAO;AACnE,MAAA;AAAA,IACF;AAEArB,IAAAA,YAAAA,CAAaqB,OAAAA,EAASyD,iBAAAA,CAAkBjF,SAAAA,CAAUwB,OAAO,CAAA;AAAA,EAC3D,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM0D,WAAAA,GAAmDxG,YACvDM,CAAAA,CAAAA,KAAK;AACH,IAAA,IAAImB,aAAaqB,OAAAA,EAAS;AACxBrB,MAAAA,YAAAA,CAAaqB,OAAAA,CAAQ2D,qBAAAA,CAAsBnG,CAAAA,CAAEgG,SAAS,CAAA;AACtD,MAAA,IAAI,CAACtF,eAAAA,EAAiB;AACpBS,QAAAA,YAAAA,CAAaqB,QAAQzF,KAAAA,EAAM;AAAA,MAC7B;AAAA,IACF;AAEAiE,IAAAA,SAAAA,CAAUwB,OAAAA,GAAU,KAAA;AACpB,IAAA,MAAM+B,WAAWvH,SAAAA,IAAaD,KAAAA;AAC9Ba,IAAAA,aAAAA,CAAc2G,QAAAA,CAASlF,GAAAA,EAAKkF,QAAAA,CAASjF,MAAM,CAAA;AAAA,EAC7C,GACA,CAACoB,eAAAA,EAAiB3D,KAAAA,EAAOC,SAAAA,EAAWY,aAAa,CACnD,CAAA;AAEA,EAAA,MAAMU,WAAAA,GAAiDoB,WAAAA,CACrD,OAAMM,CAAAA,KAAK;AACTA,IAAAA,CAAAA,CAAEoG,cAAAA,EAAe;AACjBpG,IAAAA,CAAAA,CAAEqG,eAAAA,EAAgB;AAClB,IAAA,IAAI,OAAO9H,oBAAoB,UAAA,EAAY;AACzCA,MAAAA,eAAAA,CAAgByB,CAAC,CAAA;AAAA,IACnB;AACA,IAAA,IACEgB,SAAAA,CAAUwB,OAAAA,KAAY,KAAA,IACtBxC,CAAAA,CAAEkF,OAAAA,KAAYpL,kBAAAA,IACd,CAACqH,YAAAA,CAAaqB,OAAAA,IACd,CAAC5C,QAAAA,CAAS4C,OAAAA,EACV;AACA,MAAA;AAAA,IACF;AAEArB,IAAAA,YAAAA,CAAaqB,OAAAA,CAAQyD,iBAAAA,CAAkBjF,SAAAA,CAAUwB,OAAO,CAAA;AACxD,IAAA,IAAI8D,YAAAA,GAAe,GACjBC,cAAAA,GAAiB,CAAA,EACjBC,IAAIxG,CAAAA,CAAEgE,OAAAA,EACNyC,IAAIzG,CAAAA,CAAE0G,OAAAA;AACR,IAAA,IACEtF,gBAAAA,CAAiBoB,OAAAA,CAAQjB,IAAAA,IAAQvB,CAAAA,CAAEgE,OAAAA,IACnChE,CAAAA,CAAEgE,OAAAA,IACA5C,gBAAAA,CAAiBoB,OAAAA,CAAQhB,KAAAA,GAAQJ,gBAAAA,CAAiBoB,OAAAA,CAAQf,cAAAA,EAC5D;AACA,MAAA,MAAMkF,4BACJ3G,CAAAA,CAAEgE,OAAAA,IAAW5C,gBAAAA,CAAiBoB,OAAAA,CAAQjB,OAAO,MAAA,GAAS,OAAA;AACxD,MAAA,IACGoF,yBAAAA,KAA8B,UAAU3G,CAAAA,CAAE4G,SAAAA,GAAY,KACtDD,yBAAAA,KAA8B,OAAA,IAAW3G,CAAAA,CAAE4G,SAAAA,GAAY,CAAA,EACxD;AACAL,QAAAA,cAAAA,GAAiBI,yBAAAA,KAA8B,SAAS,EAAA,GAAK,CAAA;AAAA,MAC/D;AACAH,MAAAA,CAAAA,GACEG,yBAAAA,KAA8B,MAAA,GAC1BvF,gBAAAA,CAAiBoB,OAAAA,CAAQjB,IAAAA,GAAOoB,cAAAA,GAAiB,EAAA,GACjDvB,gBAAAA,CAAiBoB,OAAAA,CAAQhB,KAAAA,GACzBJ,gBAAAA,CAAiBoB,OAAAA,CAAQf,cAAAA,GACzB,EAAA;AAAA,IACR;AAEA,IAAA,IACEL,gBAAAA,CAAiBoB,OAAAA,CAAQnB,GAAAA,IAAOrB,CAAAA,CAAE0G,OAAAA,IAClC1G,CAAAA,CAAE0G,OAAAA,IACAtF,gBAAAA,CAAiBoB,OAAAA,CAAQlB,MAAAA,GAASF,gBAAAA,CAAiBoB,OAAAA,CAAQd,eAAAA,EAC7D;AACA,MAAA,MAAMmF,0BACJ7G,CAAAA,CAAE0G,OAAAA,IAAWtF,gBAAAA,CAAiBoB,OAAAA,CAAQnB,MAAM,KAAA,GAAQ,QAAA;AACtD,MAAA,IACGwF,uBAAAA,KAA4B,SAAS7G,CAAAA,CAAE8G,SAAAA,GAAY,KACnDD,uBAAAA,KAA4B,QAAA,IAAY7G,CAAAA,CAAE8G,SAAAA,GAAY,CAAA,EACvD;AACAR,QAAAA,YAAAA,GAAeO,uBAAAA,KAA4B,QAAQ,EAAA,GAAK,CAAA;AAAA,MAC1D;AACAJ,MAAAA,CAAAA,GACEI,uBAAAA,KAA4B,KAAA,GACxBzF,gBAAAA,CAAiBoB,OAAAA,CAAQnB,GAAAA,GAAM7D,YAAAA,GAAe,EAAA,GAC9C4D,gBAAAA,CAAiBoB,OAAAA,CAAQlB,MAAAA,GACzBF,gBAAAA,CAAiBoB,OAAAA,CAAQd,eAAAA,GACzB,EAAA;AAAA,IACR;AAEA,IAAA,MAAM,IAAIgC,QAAQC,qBAAqB,CAAA;AACvC,IAAA,MAAM/H,KAAAA,GAAOmL,QAAAA,CAASC,gBAAAA,CAAiBR,CAAAA,EAAGC,CAAC,CAAA;AAE3C,IAAA,IAAI,CAAC7K,KAAAA,EAAM;AACT,MAAA;AAAA,IACF;AAEA,IAAA,MAAM;AAAA,MAAE0J,OAAAA;AAAAA,MAASC;AAAAA,QAAe3J,KAAAA,CAAKyJ,OAAAA;AACrC,IAAA,IAAI,CAACC,OAAAA,IAAW,CAACC,UAAAA,EAAY;AAC3B,MAAA;AAAA,IACF;AACA,IAAA,MAAMxK,QAAAA,GAAWC,MAAAA,CAAOsK,OAAO,CAAA,GAAIgB,YAAAA;AACnC,IAAA,MAAMxL,WAAAA,GAAcE,MAAAA,CAAOuK,UAAU,CAAA,GAAIgB,cAAAA;AAEzC5B,IAAAA,mBAAAA,CAAoB5J,UAAUD,WAAW,CAAA;AAAA,EAC3C,GACA,CAAC0C,YAAAA,EAAcmH,mBAAAA,EAAqBpG,eAAAA,EAAiBoE,cAAc,CACrE,CAAA;AAEA,EAAA,MAAMsE,WAAWA,CAAC;AAAA,IAAE3D,UAAAA;AAAAA,IAAYD;AAAAA,GAA6B,KAAM;AACjExC,IAAAA,mBAAAA,CAAoBwC,YAAY,CAAC,CAAA;AACjCtC,IAAAA,qBAAAA,CAAsBuC,aAAa,CAAC,CAAA;AAAA,EACtC,CAAA;AAEA,EAAA,MAAM4D,QAAAA,GAAWxH,YACf,CAAC;AAAA,IAAEkC,MAAAA;AAAAA,IAAQD;AAAAA,GAAY,KAAM;AAC3BwF,IAAAA,UAAAA,CAAW,MAAM;AACf,MAAA,IAAI,CAACvH,SAAS4C,OAAAA,EAAS;AACrB,QAAA;AAAA,MACF;AAEA,MAAA,MAAM;AAAA,QAAEnB,GAAAA;AAAAA,QAAKC,MAAAA;AAAAA,QAAQC,IAAAA;AAAAA,QAAMC;AAAAA,OAAM,GAC/B5B,QAAAA,CAAS4C,OAAAA,CAAQ4E,qBAAAA,MAA2B,EAAC;AAC/ChG,MAAAA,gBAAAA,CAAiBoB,OAAAA,GAAU;AAAA,QACzBnB,GAAAA;AAAAA,QACAC,MAAAA;AAAAA,QACAC,IAAAA;AAAAA,QACAC,KAAAA;AAAAA,QACAC,cAAAA,EAAgBE,KAAAA,GAAQ/B,QAAAA,CAAS4C,OAAAA,CAAQ6E,WAAAA;AAAAA,QACzC3F,eAAAA,EAAiBE,MAAAA,GAAShC,QAAAA,CAAS4C,OAAAA,CAAQ8E,YAAAA;AAAAA,QAC3C3F,KAAAA;AAAAA,QACAC;AAAAA,OACF;AACAmB,MAAAA,cAAAA,CAAenD,QAAAA,CAAS4C,OAAAA,CAAQ6E,WAAAA,GAAc1E,cAAc,CAAA;AAAA,IAC9D,GAAG,CAAC,CAAA;AAAA,EACN,CAAA,EACA,CAACI,cAAAA,EAAgBJ,cAAc,CACjC,CAAA;AAEA,EAAA,MAAM5E,SAAAA,GAAkD2B,WAAAA,CACtD,OAAMM,CAAAA,KAAK;AACT,IAAA,IAAI,OAAOhC,kBAAkB,UAAA,EAAY;AACvCA,MAAAA,aAAAA,CAAcgC,CAAC,CAAA;AAAA,IACjB;AACA,IAAA,IAAI,CAACA,EAAEuH,gBAAAA,EAAkB;AACvBvH,MAAAA,CAAAA,CAAEoG,cAAAA,EAAe;AACjBpG,MAAAA,CAAAA,CAAEqG,eAAAA,EAAgB;AAAA,IACpB;AACA,IAAA,MAAMmB,aAAaxH,CAAAA,CAAE6F,QAAAA;AACrB,IAAA,MAAM;AAAA,MAAExG,GAAAA;AAAAA,MAAKC;AAAAA,QAAWtC,SAAAA,IAAaD,KAAAA;AAErC,IAAA,MAAM0K,WAAAA,GAAcA,CAAC3F,MAAAA,KAAyC;AAC5D,MAAA,IAAIA,MAAAA,EAAQ;AACV4C,QAAAA,WAAAA,CAAY;AAAA,UAAE,GAAG5C,MAAAA;AAAAA,UAAQgE,KAAAA,EAAO;AAAA,SAAY,CAAA;AAAA,MAC9C;AACA,MAAA,IAAIhE,MAAAA,EAAQtC,SAAS,QAAA,EAAU;AAC7B5B,QAAAA,aAAAA,CAAckE,MAAAA,CAAOzC,GAAAA,EAAKyC,MAAAA,CAAOxC,MAAM,CAAA;AAAA,MACzC;AAAA,IACF,CAAA;AACA,IAAA,IAAA,CAAKU,EAAE0H,OAAAA,IAAW1H,CAAAA,CAAE2H,OAAAA,KAAY3H,CAAAA,CAAE4H,QAAQ,GAAA,EAAK;AAC7CnJ,MAAAA,MAAAA,EAAO;AACP,MAAA;AAAA,IACF;AAEA,IAAA,QAAQuB,EAAE4H,GAAAA;AAAG,MACX,KAAK,WAAA;AACHH,QAAAA,WAAAA,CAAY7C,aAAAA,CAAc,EAAA,EAAI,CAAA,EAAG4C,UAAAA,EAAY,UAAU,CAAC,CAAA;AACxD,QAAA;AAAA,MACF,KAAK,YAAA;AACHC,QAAAA,WAAAA,CAAY7C,aAAAA,CAAc,CAAA,EAAG,CAAA,EAAG4C,UAAAA,EAAY,UAAU,CAAC,CAAA;AACvD,QAAA;AAAA,MACF,KAAK,SAAA;AACHC,QAAAA,WAAAA,CAAY7C,aAAAA,CAAc,CAAA,EAAG,EAAA,EAAI4C,UAAAA,EAAY,UAAU,CAAC,CAAA;AACxD,QAAA;AAAA,MACF,KAAK,WAAA;AACHC,QAAAA,WAAAA,CAAY7C,aAAAA,CAAc,CAAA,EAAG,CAAA,EAAG4C,UAAAA,EAAY,UAAU,CAAC,CAAA;AACvD,QAAA;AAAA,MACF,KAAK,OAAA;AACH9C,QAAAA,WAAAA,CAAY;AAAA,UACVlF,IAAAA,EAAM,QAAA;AAAA,UACNH,GAAAA;AAAAA,UACAC,MAAAA;AAAAA,UACAwG,KAAAA,EAAO;AAAA,SACR,CAAA;AACDlI,QAAAA,aAAAA,CAAcyB,KAAKC,MAAM,CAAA;AACzB,QAAA;AAAA,MACF,KAAK,QAAA;AACH+E,QAAAA,sBAAAA,CAAuB,IAAI,CAAA;AAC3B,QAAA;AAAA;AAEJlD,IAAAA,YAAAA,CAAaqB,SAASzF,KAAAA,EAAM;AAAA,EAC9B,CAAA,EACA,CACEiB,aAAAA,EACAhB,SAAAA,EACAD,KAAAA,EACA2H,aACA9G,aAAAA,EACAa,MAAAA,EACAmG,aAAAA,EACAP,sBAAsB,CAE1B,CAAA;AACA,EAAA,MAAMzF,gBAAmDoB,CAAAA,CAAAA,KAAK;AAC5D5B,IAAAA,WAAAA,CAAY4B,CAAC,CAAA;AAEb,IAAA,IAAI,OAAOnB,sBAAsB,UAAA,EAAY;AAC3CA,MAAAA,iBAAAA,CAAkBmB,CAAC,CAAA;AAAA,IACrB;AACA,IAAA,IAAI,OAAOlC,mBAAmB,UAAA,EAAY;AACxC,MAAA,MAAM+J,UAAAA,GAAa/J,cAAAA,CAAeG,SAAAA,EAAWjB,SAAAA,IAAaD,KAAK,CAAA;AAC/D0D,MAAAA,cAAAA,CAAe,CAAC,GAAGH,kBAAAA,EAAoB,GAAGuH,UAAU,CAAC,CAAA;AAAA,IACvD;AAAA,EACF,CAAA;AAEA,EAAA,MAAMC,yBAAyB7G,MAAAA,EAAiC;AAChE,EAAA,MAAM8G,YAAAA,GAAe9G,OAAOtE,QAAQ,CAAA;AAEpC,EAAA,MAAMoC,eAAAA,GAAkBW,WAAAA,CACtB,CAAC7E,MAAAA,KAAoC;AACnCiN,IAAAA,sBAAAA,CAAuBtF,OAAAA,GAAU3H,MAAAA;AACjC,IAAA,OAAOmE,mBAAAA,GAAsB;AAAA,MAC3B,GAAGnE,MAAAA;AAAAA,MACHmN,oBAAAA,EAAsBnN,OAAMmN,oBAAAA,GAAuBrL,QAAAA;AAAAA,MACnDsL,mBAAAA,EAAqBpN,OAAMoN,mBAAAA,GAAsBtL,QAAAA;AAAAA,MACjDuL,qBAAAA,EAAuBrN,OAAMqN,qBAAAA,GAAwBvL,QAAAA;AAAAA,MACrDwL,oBAAAA,EAAsBtN,OAAMsN,oBAAAA,GAAuBxL;AAAAA,KACpD,CAAA;AAAA,EACH,CAAA,EACA,CAACqC,mBAAAA,EAAqBrC,QAAQ,CAChC,CAAA;AAIA6H,EAAAA,SAAAA,CAAU,MAAM;AACd,IAAA,IAAIsD,sBAAAA,CAAuBtF,OAAAA,IAAW7F,QAAAA,KAAaoL,YAAAA,CAAavF,OAAAA,EAAS;AACvEzD,MAAAA,eAAAA,CAAgB+I,uBAAuBtF,OAAO,CAAA;AAC9CuF,MAAAA,YAAAA,CAAavF,OAAAA,GAAU7F,QAAAA;AAAAA,IACzB;AAAA,EACF,CAAA,EAAG,CAACA,QAAAA,EAAUoC,eAAe,CAAC,CAAA;AAE9B,EAAA,MAAMqJ,aAAAA,GAAgBA,CACpBC,IAAAA,KACsB;AACtB,IAAA,MAAM1G,KAAAA,GAAQvE,WAAAA,CAAYiL,IAAAA,CAAKvN,WAAW,CAAA;AAC1C,IAAA,uBACE,GAAA,CAAC,IAAA,EAAA,EACC,GAAIuN,IAAAA,EACJ,KAAA,EAAa,CAAA;AAAA,EAGnB,CAAA;AAGA7D,EAAAA,SAAAA,CAAU,MAAM;AACd,IAAA,IAAItD,QAAQsB,OAAAA,EAAS;AACnBtB,MAAAA,OAAAA,CAAQsB,OAAAA,CAAQE,mBAAmB,CAAC,CAAA;AAAA,IACtC;AAAA,EACF,CAAA,EAAG,CAACjF,QAAAA,EAAUN,WAAW,CAAC,CAAA;AAE1B,EAAA,uBACE,IAAA,CAAC,WAAA,EAAA,EACC,KAAA,EAAO,KAAA,EACP,cAAcwD,kBAAAA,EAEd,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,sBACC,EAAA,EAAI2H,WAAAA,CAAYC,SAChB,GAAA,EAAKC,SAAAA,CAAU,CAACtJ,YAAAA,EAAciC,YAAY,CAAC,CAAA,EAC3C,UAAU,CAAA,EACV,WAAA,EACA,aACA,SAAA,EACA,aAAA,EACA,aACA,cAAA,EAAgB8E,iBAAAA,EAChB,cAAA,EAAgBA,iBAAAA,EAChB,eACA,QAAA,EAAUpJ,OAAAA,EACV,SACEH,UAAAA,GACIe,QAAAA,GAAWP,aACVJ,UAAAA,GAAaU,YAAAA,GAAe,KAC7B4D,gBAAAA,CAAiBoB,OAAAA,CAAQd,kBACzBW,MAAAA,EAEN,WAAA,EAAa7D,YAEb,QAAA,kBAAA,GAAA,CAAC,SAAA,EAAA,EAAU,UACR,QAAA,EAAA,CAAC;AAAA,MAAEoD,MAAAA;AAAAA,MAAQD;AAAAA,KAAM,yBACf,gBAAA,EAAA,EACC,GAAA,EAAK7C,mBAAmB0J,SAAAA,CAAU,CAAC1J,gBAAAA,EAAkBoC,OAAO,CAAC,CAAA,GAAIA,SACjE,MAAA,EACA,KAAA,EACA,aACA,SAAA,EAAWiB,YAAAA,EACX,gBACA,gBAAA,EAAkB4C,gBAAAA,EAClB,QAAA,EAAUD,IAAAA,EACV,gBAAA,EACE/H,KAAAA,CAAMsC,MAAM1C,QAAAA,GACRI,KAAAA,CAAMsC,MAAMnC,SAAAA,GAAAA,CACXH,KAAAA,CAAMsC,MAAM1C,QAAAA,IAAYO,SAAAA,EAE/B,iBAAA,EAAmB4F,2BAAAA,CAA4B/F,KAAAA,CAAMuC,MAAM,GAC3D,WAAA,EACA,QAAA,EACA,QAAA,EACA,QAAA,EACA,gBAAA,EAAkBjD,gBAAAA,EAClB,iBACA,GAAIxB,KAAAA,EAEHuN,QAAAA,EAAAA,aAAAA,EACH,CAAA,EAEJ,CAAA,EACF,CAAA;AAAA,oBACA,GAAA,CAAC,YAAY,OAAA,EAAZ,EACE5H,sBAAYiI,GAAAA,CAAI,CAACC,MAAAA,EAAQtG,KAAAA,qBACxB,GAAA,CAAC,WAAA,CAAY,MAAZ,EAEC,QAAA,EAAUsG,OAAOpL,QAAAA,EAEhBoL,QAAAA,EAAAA,MAAAA,CAAOnI,SAHH,CAAA,KAAA,EAAQ6B,KAAK,CAAA,CAIpB,CACD,CAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ,CACF;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/Grid/Grid.tsx"],"sourcesContent":["import {\n CSSProperties,\n HTMLAttributes,\n KeyboardEventHandler,\n MouseEventHandler,\n PointerEventHandler,\n ReactElement,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n GridOnScrollProps,\n VariableSizeGrid,\n GridOnItemsRenderedProps,\n GridChildComponentProps,\n} from 'react-window';\nimport AutoSizer, { Size } from 'react-virtualized-auto-sizer';\nimport RowNumberColumn from './RowNumberColumn';\nimport Header from './Header';\nimport { cn, cva } from '@/lib/cva';\nimport styles from './Grid.module.css';\nimport {\n GetResizerPositionFn,\n GridContextMenuItemProps,\n GridProps,\n ItemDataType,\n ResizerPosition,\n RoundedType,\n SelectedRegion,\n SelectionAction,\n SelectionFocus,\n onSelectFn,\n} from './types';\nimport { useSelectionActions } from './useSelectionActions';\nimport { mergeRefs } from '@/utils/mergeRefs';\nimport { Cell } from './Cell';\nimport { ContextMenu } from '@/components/ContextMenu';\nimport { createToast } from '@/components/Toast/toastEmitter';\nimport copyGridElements from './copyGridElements';\nimport useColumns from './useColumns';\nimport useResizingState from './useResizingState';\n\nconst gridVariants = cva(styles['grid'], {\n variants: {\n bordered: { true: styles['grid_bordered'] },\n },\n});\n\nconst NO_BUTTONS_PRESSED = 0;\nconst LEFT_BUTTON_PRESSED = 1;\nconst RIGHT_BUTTON_PRESSED = 2;\n\nconst getRenderedCursor = (children: ReactElement[]) =>\n children.reduce(\n ([minRow, maxRow, minColumn, maxColumn], { props: { columnIndex, rowIndex } }) => {\n if (rowIndex < minRow) {\n minRow = rowIndex;\n }\n if (rowIndex > maxRow) {\n maxRow = rowIndex;\n }\n if (columnIndex < minColumn) {\n minColumn = columnIndex;\n }\n if (columnIndex > maxColumn) {\n maxColumn = columnIndex;\n }\n\n return [minRow, maxRow, minColumn, maxColumn];\n },\n [\n Number.POSITIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n ]\n );\n\nconst roundedRadii: Record<RoundedType, string> = {\n none: 'var(--click-grid-radii-none)',\n lg: 'var(--click-grid-radii-lg)',\n md: 'var(--click-grid-radii-md)',\n sm: 'var(--click-grid-radii-sm)',\n};\n\ninterface InnerElementTypeTypes extends HTMLAttributes<HTMLDivElement> {\n children: ReactElement[];\n}\n\nconst OuterElementType = forwardRef<HTMLDivElement>((props, ref) => (\n <div\n ref={ref}\n data-testid=\"grid-outer-element\"\n tabIndex={0}\n {...props}\n />\n));\n\nexport const Grid = forwardRef<HTMLDivElement, GridProps>(\n (\n {\n autoFocus,\n autoHeight = false,\n rowStart = 0,\n showRowNumber = true,\n rounded = 'none',\n showHeader = true,\n focus: focusProp,\n useIsScrolling = true,\n rowHeight = 33,\n columnCount,\n columnWidth: columnWidthProp,\n onSelect: onSelectProp,\n headerHeight = 33,\n rowCount,\n cell,\n onColumnResize: onColumnResizeProp,\n onFocusChange: onFocusChangeProp,\n getMenuOptions,\n onKeyDown: onKeyDownProp,\n selection: selectionProp,\n showToast,\n onMouseDown: onMouseDownProp,\n onMouseMove: onMouseMoveProp,\n showBorder = false,\n onCopy: onCopyProp,\n onCopyCallback,\n onContextMenu: onContextMenuProp,\n forwardedGridRef,\n onItemsRendered: onItemsRenderedProp,\n rowAutoHeight,\n ...props\n },\n forwardedRef\n ) => {\n const [focus, setFocus] = useState<SelectionFocus>(\n focusProp ?? {\n row: rowStart,\n column: 0,\n }\n );\n const [selection, setSelection] = useState<SelectedRegion>(\n selectionProp ?? {\n type: 'empty',\n }\n );\n\n const defaultOnCopy: () => Promise<void> = useCallback(async () => {\n try {\n await copyGridElements({\n cell,\n selection,\n focus: focusProp ?? focus,\n rowCount,\n columnCount,\n outerRef: outerRef,\n });\n\n if (onCopyCallback) {\n onCopyCallback(true);\n }\n if (showToast) {\n createToast({\n title: 'Copied successfully',\n description: 'Now you can paste the content',\n type: 'success',\n });\n }\n } catch (e) {\n console.error(e);\n\n if (onCopyCallback) {\n onCopyCallback(false);\n }\n\n if (showToast) {\n createToast({\n title: 'Failed to copy',\n description: 'Encountered an error while copying. Try again after sometime',\n type: 'danger',\n });\n }\n }\n }, [\n cell,\n columnCount,\n focus,\n focusProp,\n rowCount,\n selection,\n showToast,\n onCopyCallback,\n ]);\n\n const customOnCopy: () => Promise<void> = useMemo(() => {\n const result = async () => {\n if (onCopyProp) {\n await onCopyProp(selection, focus);\n }\n };\n return result;\n }, [onCopyProp, selection, focus]);\n\n const onCopy: () => Promise<void> =\n typeof onCopyProp === 'function' ? customOnCopy : defaultOnCopy;\n\n const defaultMenuOptions = [\n {\n label: 'Copy',\n onSelect: onCopy,\n },\n ];\n\n const [menuOptions, setMenuOptions] =\n useState<GridContextMenuItemProps[]>(defaultMenuOptions);\n const [contextMenuOpen, setContextMenuOpen] = useState(false);\n const [scrolledVertical, setScrolledVertical] = useState(false);\n const [scrolledHorizontal, setScrolledHorizontal] = useState(false);\n const dragState = useRef<number | false>(false);\n const gridRef = useRef<VariableSizeGrid>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const outerRef = useRef<HTMLDivElement>(null);\n const elementBorderRef = useRef({\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n scrollBarWidth: 0,\n scrollBarHeight: 0,\n width: 0,\n height: 0,\n });\n const onCellSelect: onSelectFn = useCallback(\n (action, selection, focus) => {\n setSelection(selection);\n if (typeof onSelectProp === 'function') {\n onSelectProp(action, selection, focus);\n }\n },\n [onSelectProp]\n );\n const resizingState = useResizingState();\n\n const [rowHeights, setRowHeights] = useState<{ [key: number]: number }>({});\n\n const getRowHeight = useCallback(\n (index: number) => {\n if (rowAutoHeight && rowHeights[index] !== undefined) {\n return rowHeights[index] + rowHeight;\n }\n return rowHeight;\n },\n [rowHeight, rowAutoHeight, rowHeights]\n );\n\n const updateRowHeight = useCallback(\n (rowIndex: number, height: number) => {\n if (!rowAutoHeight) {\n return;\n }\n\n setRowHeights(prevRowHeights => {\n if (height > (prevRowHeights[rowIndex] || 0) && gridRef.current) {\n const newRowHeights = { ...prevRowHeights, [rowIndex]: height };\n gridRef.current.resetAfterRowIndex(rowIndex);\n return newRowHeights;\n }\n return prevRowHeights;\n });\n },\n [rowAutoHeight, gridRef]\n );\n\n const onFocusChange = useCallback(\n (row: number, column: number) => {\n setFocus(focus => ({\n row: row ?? focusProp?.row ?? focus.row,\n column: column ?? focusProp?.column ?? focus.column,\n }));\n if (typeof onFocusChangeProp === 'function') {\n onFocusChangeProp(row, column);\n }\n },\n [onFocusChangeProp, focusProp]\n );\n\n const rowNumberWidth = ((rowStart + rowCount).toString().length + 2) * 8 + 3; // 128 includes 8px left and right padding and (8px + 8px + 8x(1ch) * rowcount) and 3 is for avoiding ellipsis\n\n const { getColumnHorizontalPosition, onColumnResize, columnWidth, initColumnSize } =\n useColumns({\n columnCount,\n columnWidth: columnWidthProp,\n outerGridRef: outerRef,\n gridRef,\n onColumnResize: onColumnResizeProp,\n });\n\n const scrollGridTo = useCallback(\n async ({ row, column }: { row?: number; column?: number }) => {\n if (!outerRef.current || !gridRef.current) {\n return;\n }\n\n const rowIndex = row ?? 0;\n const columnIndex = column ?? 0;\n let element = outerRef.current?.querySelector<HTMLElement>(\n `[data-row=\"${rowIndex}\"][data-column=\"${columnIndex}\"]`\n );\n if (!element) {\n return;\n }\n\n const { scrollTop, scrollLeft } = outerRef.current;\n // this is for the test to perform correctly\n if (typeof element?.scrollIntoView === 'function') {\n element?.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n // This is for the element to be available after the scroll.\n await new Promise(requestAnimationFrame);\n }\n element = outerRef.current?.querySelector<HTMLElement>(\n `[data-row=\"${rowIndex}\"][data-column=\"${columnIndex}\"]`\n );\n if (!element) {\n return;\n }\n if (scrollLeft > element.offsetLeft || scrollTop > element.offsetTop) {\n outerRef.current?.scrollBy(\n scrollLeft > element.offsetLeft ? -rowNumberWidth : 0,\n scrollTop > element.offsetTop ? -headerHeight : 0\n );\n }\n },\n [headerHeight, rowNumberWidth]\n );\n\n const getFixedResizerLeftPosition = useCallback(\n (clientX: number, width: number, columnIndex: number): string | number => {\n const columnPosition = getColumnHorizontalPosition(columnIndex);\n const columnLeft = columnPosition + width;\n const { width: containerWidth, left, scrollBarWidth } = elementBorderRef.current;\n const scrollLeft = outerRef.current?.scrollLeft ?? 0;\n if (clientX + rowNumberWidth - left > containerWidth + scrollBarWidth) {\n return scrollLeft + containerWidth - scrollBarWidth - 4;\n }\n\n if (width < 50) {\n //50 is the minWidth for the column\n return columnPosition + rowNumberWidth + 50;\n }\n\n return columnLeft + rowNumberWidth - 4;\n },\n [getColumnHorizontalPosition, rowNumberWidth]\n );\n\n const getResizerPosition: GetResizerPositionFn = useCallback(\n (clientX, width, columnIndex) => {\n const result: ResizerPosition = {\n left: `${getFixedResizerLeftPosition(clientX, width, columnIndex)}px`,\n };\n\n if (outerRef.current) {\n result.top = `${outerRef.current.scrollTop}px`;\n }\n return result;\n },\n [getFixedResizerLeftPosition]\n );\n\n const clearSelectionAndFocus = useCallback(\n (force: boolean) => {\n setSelection(selection => {\n if (selection.type === 'columns' && !force) {\n return selection;\n } else {\n return { type: 'empty' };\n }\n });\n const newFocus = focusProp ?? focus;\n onFocusChange(newFocus.row, newFocus.column);\n scrollGridTo(newFocus);\n },\n [focus, focusProp, onFocusChange, scrollGridTo]\n );\n\n useEffect(() => {\n clearSelectionAndFocus(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [rowStart]);\n\n const { getSelectionType, onSelection, mouseMoveCellSelect, moveSelection } =\n useSelectionActions({\n onCellSelect,\n focus: focusProp ?? focus,\n columnCount,\n rowCount,\n onFocusChange,\n scrollGridTo,\n selection: selectionProp ?? selection,\n rowStart,\n });\n\n const data: ItemDataType = {\n showRowNumber,\n cell,\n rowCount,\n columnCount,\n showHeader,\n focus: focusProp ?? focus,\n getSelectionType,\n rowHeight,\n headerHeight,\n rowNumberWidth,\n rowStart,\n rowAutoHeight,\n updateRowHeight,\n getRowHeight,\n };\n\n const InnerElementType = forwardRef<HTMLDivElement, InnerElementTypeTypes>(\n ({ children, ...containerProps }, ref) => {\n const [minRow, maxRow, minColumn, maxColumn] = getRenderedCursor(children);\n return (\n <div\n {...containerProps}\n className={cn(\n styles['grid__inner'],\n `sticky-grid__container grid-outer ${props.className ?? ''}`\n )}\n >\n <div\n className={styles['grid__data']}\n style={\n {\n '--grid-data-top': `${showHeader ? headerHeight : 0}px`,\n '--grid-data-left': `${showRowNumber ? rowNumberWidth : 0}px`,\n } as CSSProperties\n }\n ref={ref}\n >\n {children}\n </div>\n {showRowNumber && (\n <RowNumberColumn\n scrolledHorizontal={scrolledHorizontal}\n minRow={minRow}\n maxRow={maxRow}\n rowHeight={rowHeight}\n headerHeight={headerHeight}\n rowWidth={rowNumberWidth}\n rowCount={rowCount}\n getSelectionType={getSelectionType}\n rowStart={rowStart}\n showBorder={showBorder}\n rowAutoHeight={rowAutoHeight}\n />\n )}\n\n {showHeader && (\n <Header\n scrolledVertical={scrolledVertical}\n scrolledHorizontal={scrolledHorizontal}\n showRowNumber={showRowNumber}\n minColumn={minColumn}\n maxColumn={maxColumn}\n height={headerHeight}\n getColumnWidth={columnWidth}\n cell={cell}\n rowNumberWidth={rowNumberWidth}\n getSelectionType={getSelectionType}\n columnCount={columnCount}\n onColumnResize={onColumnResize}\n getColumnHorizontalPosition={getColumnHorizontalPosition}\n getResizerPosition={getResizerPosition}\n showBorder={showBorder}\n resizingState={resizingState}\n />\n )}\n </div>\n );\n }\n );\n useEffect(() => {\n if (autoFocus) {\n containerRef.current?.focus();\n }\n }, [autoFocus]);\n\n const onMouseDown: MouseEventHandler<HTMLDivElement> = useCallback(\n e => {\n containerRef.current?.focus();\n if (typeof onMouseDownProp === 'function' && e.buttons === LEFT_BUTTON_PRESSED) {\n onMouseDownProp(e);\n }\n const target = (e.target as HTMLElement).closest(\n '[data-grid-row][data-grid-column]'\n ) as HTMLElement;\n if (\n !target ||\n target.dataset.gridRow === undefined ||\n target.dataset.gridColumn === undefined\n ) {\n return;\n }\n\n if (e.buttons === RIGHT_BUTTON_PRESSED && target.dataset.selected === 'true') {\n return;\n }\n\n const { gridRow: rowIndexString, gridColumn: columnIndexString } = target.dataset;\n const row = parseInt(rowIndexString);\n const column = parseInt(columnIndexString);\n if (row === -1 && column === -1) {\n onSelection({ type: 'all' });\n return;\n }\n const shiftKeyPressed = e.shiftKey;\n\n if (row === -1) {\n onSelection({\n type: shiftKeyPressed ? 'shiftColumnSelection' : 'columnSelection',\n column,\n event: 'click',\n });\n if (!shiftKeyPressed) {\n onFocusChange(rowStart, column);\n }\n return;\n }\n if (column === -1) {\n onSelection({\n type: shiftKeyPressed ? 'shiftRowSelection' : 'rowSelection',\n row,\n event: 'click',\n });\n if (!shiftKeyPressed) {\n onFocusChange(row, 0);\n }\n return;\n }\n onSelection({\n type: shiftKeyPressed ? 'shiftSelection' : 'normal',\n row,\n column,\n event: 'click',\n });\n if (!shiftKeyPressed) {\n onFocusChange(row, column);\n }\n },\n [onFocusChange, onMouseDownProp, onSelection, rowStart]\n );\n\n const onPointerDown: PointerEventHandler<HTMLDivElement> = useCallback(e => {\n dragState.current = e.pointerId;\n }, []);\n\n const setPointerCapture: PointerEventHandler<HTMLDivElement> = useCallback(e => {\n if (e.buttons === NO_BUTTONS_PRESSED || dragState.current === false) {\n return;\n }\n\n containerRef.current?.setPointerCapture(dragState.current);\n }, []);\n\n const onPointerUp: PointerEventHandler<HTMLDivElement> = useCallback(\n e => {\n if (containerRef.current) {\n containerRef.current.releasePointerCapture(e.pointerId);\n if (!contextMenuOpen) {\n containerRef.current.focus();\n }\n }\n\n dragState.current = false;\n const newFocus = focusProp ?? focus;\n onFocusChange(newFocus.row, newFocus.column);\n },\n [contextMenuOpen, focus, focusProp, onFocusChange]\n );\n\n const onMouseMove: MouseEventHandler<HTMLDivElement> = useCallback(\n async e => {\n e.preventDefault();\n e.stopPropagation();\n if (typeof onMouseMoveProp === 'function') {\n onMouseMoveProp(e);\n }\n if (\n dragState.current === false ||\n e.buttons === NO_BUTTONS_PRESSED ||\n !containerRef.current ||\n !outerRef.current\n ) {\n return;\n }\n\n containerRef.current.setPointerCapture(dragState.current);\n let verticalSign = 0,\n horizontalSign = 0,\n x = e.clientX,\n y = e.clientY;\n if (\n elementBorderRef.current.left >= e.clientX ||\n e.clientX >=\n elementBorderRef.current.right - elementBorderRef.current.scrollBarWidth\n ) {\n const scrollHorizontalDirection =\n e.clientX <= elementBorderRef.current.left ? 'left' : 'right';\n if (\n (scrollHorizontalDirection === 'left' && e.movementX < 0) ||\n (scrollHorizontalDirection === 'right' && e.movementX > 0)\n ) {\n horizontalSign = scrollHorizontalDirection === 'left' ? -1 : 1;\n }\n x =\n scrollHorizontalDirection === 'left'\n ? elementBorderRef.current.left + rowNumberWidth + 10\n : elementBorderRef.current.right -\n elementBorderRef.current.scrollBarWidth -\n 10;\n }\n\n if (\n elementBorderRef.current.top >= e.clientY ||\n e.clientY >=\n elementBorderRef.current.bottom - elementBorderRef.current.scrollBarHeight\n ) {\n const scrollVerticalDirection =\n e.clientY <= elementBorderRef.current.top ? 'top' : 'bottom';\n if (\n (scrollVerticalDirection === 'top' && e.movementY < 0) ||\n (scrollVerticalDirection === 'bottom' && e.movementY > 0)\n ) {\n verticalSign = scrollVerticalDirection === 'top' ? -1 : 1;\n }\n y =\n scrollVerticalDirection === 'top'\n ? elementBorderRef.current.top + headerHeight + 10\n : elementBorderRef.current.bottom -\n elementBorderRef.current.scrollBarHeight -\n 10;\n }\n\n await new Promise(requestAnimationFrame);\n const cell = document.elementFromPoint(x, y) as HTMLElement | null;\n\n if (!cell) {\n return;\n }\n\n const { gridRow, gridColumn } = cell.dataset;\n if (!gridRow || !gridColumn) {\n return;\n }\n const rowIndex = Number(gridRow) + verticalSign;\n const columnIndex = Number(gridColumn) + horizontalSign;\n\n mouseMoveCellSelect(rowIndex, columnIndex);\n },\n [headerHeight, mouseMoveCellSelect, onMouseMoveProp, rowNumberWidth]\n );\n\n const onScroll = ({ scrollLeft, scrollTop }: GridOnScrollProps) => {\n setScrolledVertical(scrollTop > 0);\n setScrolledHorizontal(scrollLeft > 0);\n };\n\n const onResize = useCallback(\n ({ height, width }: Size) => {\n setTimeout(() => {\n if (!outerRef.current) {\n return;\n }\n\n const { top, bottom, left, right } =\n outerRef.current.getBoundingClientRect() ?? {};\n elementBorderRef.current = {\n top,\n bottom,\n left,\n right,\n scrollBarWidth: width - outerRef.current.clientWidth,\n scrollBarHeight: height - outerRef.current.clientHeight,\n width,\n height,\n };\n initColumnSize(outerRef.current.clientWidth - rowNumberWidth);\n }, 0);\n },\n [initColumnSize, rowNumberWidth]\n );\n\n const onKeyDown: KeyboardEventHandler<HTMLDivElement> = useCallback(\n async e => {\n if (typeof onKeyDownProp === 'function') {\n onKeyDownProp(e);\n }\n if (!e.defaultPrevented) {\n e.preventDefault();\n e.stopPropagation();\n }\n const moveAnchor = e.shiftKey;\n const { row, column } = focusProp ?? focus;\n\n const applyAction = (action: SelectionAction | null): void => {\n if (action) {\n onSelection({ ...action, event: 'keypress' });\n }\n if (action?.type === 'normal') {\n onFocusChange(action.row, action.column);\n }\n };\n if ((e.ctrlKey || e.metaKey) && e.key === 'c') {\n onCopy();\n return;\n }\n\n switch (e.key) {\n case 'ArrowLeft':\n applyAction(moveSelection(-1, 0, moveAnchor, 'keypress'));\n break;\n case 'ArrowRight':\n applyAction(moveSelection(1, 0, moveAnchor, 'keypress'));\n break;\n case 'ArrowUp':\n applyAction(moveSelection(0, -1, moveAnchor, 'keypress'));\n break;\n case 'ArrowDown':\n applyAction(moveSelection(0, 1, moveAnchor, 'keypress'));\n break;\n case 'Enter':\n onSelection({\n type: 'normal',\n row,\n column,\n event: 'keypress',\n });\n onFocusChange(row, column);\n break;\n case 'Escape':\n clearSelectionAndFocus(true);\n break;\n }\n containerRef.current?.focus();\n },\n [\n onKeyDownProp,\n focusProp,\n focus,\n onSelection,\n onFocusChange,\n onCopy,\n moveSelection,\n clearSelectionAndFocus,\n ]\n );\n const onContextMenu: MouseEventHandler<HTMLDivElement> = e => {\n onMouseDown(e);\n\n if (typeof onContextMenuProp === 'function') {\n onContextMenuProp(e);\n }\n if (typeof getMenuOptions === 'function') {\n const newOptions = getMenuOptions(selection, focusProp ?? focus);\n setMenuOptions([...defaultMenuOptions, ...newOptions]);\n }\n };\n\n const lastItemsRenderedProps = useRef<GridOnItemsRenderedProps>();\n const lastRowStart = useRef(rowStart);\n\n const onItemsRendered = useCallback(\n (props: GridOnItemsRenderedProps) => {\n lastItemsRenderedProps.current = props;\n return onItemsRenderedProp?.({\n ...props,\n visibleRowStartIndex: props.visibleRowStartIndex + rowStart,\n visibleRowStopIndex: props.visibleRowStopIndex + rowStart,\n overscanRowStartIndex: props.overscanRowStartIndex + rowStart,\n overscanRowStopIndex: props.overscanRowStopIndex + rowStart,\n });\n },\n [onItemsRenderedProp, rowStart]\n );\n\n // handles the case where rowStart changes, make sure to inform caller\n // of the new visible rows.\n useEffect(() => {\n if (lastItemsRenderedProps.current && rowStart !== lastRowStart.current) {\n onItemsRendered(lastItemsRenderedProps.current);\n lastRowStart.current = rowStart;\n }\n }, [rowStart, onItemsRendered]);\n\n const CellWithWidth = (\n args: GridChildComponentProps<ItemDataType>\n ): React.JSX.Element => {\n const width = columnWidth(args.columnIndex);\n return (\n <Cell\n {...args}\n width={width}\n />\n );\n };\n\n // Handles the case when rowCount/columnCount changes, rerenders styles\n useEffect(() => {\n if (gridRef.current) {\n gridRef.current.resetAfterRowIndex(0);\n }\n }, [rowCount, columnCount]);\n\n const contextMenuTriggerHeight = autoHeight\n ? rowCount * rowHeight +\n (showHeader ? headerHeight : 0) +\n elementBorderRef.current.scrollBarHeight\n : undefined;\n\n return (\n <ContextMenu\n modal={false}\n onOpenChange={setContextMenuOpen}\n >\n <ContextMenu.Trigger\n className={gridVariants({ bordered: showBorder })}\n style={\n {\n '--grid-radius': roundedRadii[rounded],\n '--grid-height': contextMenuTriggerHeight\n ? `${contextMenuTriggerHeight}px`\n : '100%',\n } as CSSProperties\n }\n ref={mergeRefs([forwardedRef, containerRef])}\n tabIndex={0}\n onMouseDown={onMouseDown}\n onMouseMove={onMouseMove}\n onKeyDown={onKeyDown}\n onPointerDown={onPointerDown}\n onPointerUp={onPointerUp}\n onPointerLeave={setPointerCapture}\n onPointerEnter={setPointerCapture}\n onContextMenu={onContextMenu}\n >\n <AutoSizer onResize={onResize}>\n {({ height, width }) => (\n <VariableSizeGrid\n ref={forwardedGridRef ? mergeRefs([forwardedGridRef, gridRef]) : gridRef}\n height={height}\n width={width}\n columnCount={columnCount}\n rowHeight={getRowHeight}\n useIsScrolling={useIsScrolling}\n innerElementType={InnerElementType}\n itemData={data}\n initialScrollTop={\n focus.row < rowStart\n ? focus.row * rowHeight\n : (focus.row - rowStart) * rowHeight\n }\n initialScrollLeft={getColumnHorizontalPosition(focus.column)}\n columnWidth={columnWidth}\n rowCount={rowCount}\n onScroll={onScroll}\n outerRef={outerRef}\n outerElementType={OuterElementType}\n onItemsRendered={onItemsRendered}\n {...props}\n >\n {CellWithWidth}\n </VariableSizeGrid>\n )}\n </AutoSizer>\n </ContextMenu.Trigger>\n <ContextMenu.Content>\n {menuOptions.map((option, index) => (\n <ContextMenu.Item\n key={`grid-${index}`}\n onSelect={option.onSelect}\n >\n {option.label}\n </ContextMenu.Item>\n ))}\n </ContextMenu.Content>\n </ContextMenu>\n );\n }\n);\n"],"names":["gridVariants","cva","styles","variants","bordered","true","NO_BUTTONS_PRESSED","LEFT_BUTTON_PRESSED","RIGHT_BUTTON_PRESSED","getRenderedCursor","children","reduce","minRow","maxRow","minColumn","maxColumn","props","columnIndex","rowIndex","Number","POSITIVE_INFINITY","NEGATIVE_INFINITY","roundedRadii","none","lg","md","sm","OuterElementType","forwardRef","ref","Grid","autoFocus","autoHeight","rowStart","showRowNumber","rounded","showHeader","focus","focusProp","useIsScrolling","rowHeight","columnCount","columnWidth","columnWidthProp","onSelect","onSelectProp","headerHeight","rowCount","cell","onColumnResize","onColumnResizeProp","onFocusChange","onFocusChangeProp","getMenuOptions","onKeyDown","onKeyDownProp","selection","selectionProp","showToast","onMouseDown","onMouseDownProp","onMouseMove","onMouseMoveProp","showBorder","onCopy","onCopyProp","onCopyCallback","onContextMenu","onContextMenuProp","forwardedGridRef","onItemsRendered","onItemsRenderedProp","rowAutoHeight","forwardedRef","setFocus","useState","row","column","setSelection","type","defaultOnCopy","useCallback","copyGridElements","outerRef","createToast","title","description","e","console","error","customOnCopy","useMemo","result","defaultMenuOptions","label","menuOptions","setMenuOptions","contextMenuOpen","setContextMenuOpen","scrolledVertical","setScrolledVertical","scrolledHorizontal","setScrolledHorizontal","dragState","useRef","gridRef","containerRef","elementBorderRef","top","bottom","left","right","scrollBarWidth","scrollBarHeight","width","height","onCellSelect","action","resizingState","useResizingState","rowHeights","setRowHeights","getRowHeight","index","undefined","updateRowHeight","prevRowHeights","current","newRowHeights","resetAfterRowIndex","rowNumberWidth","toString","length","getColumnHorizontalPosition","initColumnSize","useColumns","outerGridRef","scrollGridTo","element","querySelector","scrollTop","scrollLeft","scrollIntoView","block","inline","Promise","requestAnimationFrame","offsetLeft","offsetTop","scrollBy","getFixedResizerLeftPosition","clientX","columnPosition","columnLeft","containerWidth","getResizerPosition","clearSelectionAndFocus","force","newFocus","useEffect","getSelectionType","onSelection","mouseMoveCellSelect","moveSelection","useSelectionActions","data","InnerElementType","containerProps","cn","className","buttons","target","closest","dataset","gridRow","gridColumn","selected","rowIndexString","columnIndexString","parseInt","shiftKeyPressed","shiftKey","event","onPointerDown","pointerId","setPointerCapture","onPointerUp","releasePointerCapture","preventDefault","stopPropagation","verticalSign","horizontalSign","x","y","clientY","scrollHorizontalDirection","movementX","scrollVerticalDirection","movementY","document","elementFromPoint","onScroll","onResize","setTimeout","getBoundingClientRect","clientWidth","clientHeight","defaultPrevented","moveAnchor","applyAction","ctrlKey","metaKey","key","newOptions","lastItemsRenderedProps","lastRowStart","visibleRowStartIndex","visibleRowStopIndex","overscanRowStartIndex","overscanRowStopIndex","CellWithWidth","args","contextMenuTriggerHeight","mergeRefs","map","option"],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- declare const Horizontal_Loading: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').SVGAttributes<SVGElement> & {
2
- theme?: import('../../..').ThemeName;
3
- }, never>> & string & Omit<(props: import('../../../types').SVGAssetProps) => import("react/jsx-runtime").JSX.Element, keyof import('react').Component<any, {}, any>>;
1
+ import { SVGAssetProps } from '../../../types';
2
+ declare const Horizontal_Loading: ({ className, theme, ...props }: SVGAssetProps) => import("react/jsx-runtime").JSX.Element;
4
3
  export default Horizontal_Loading;
@@ -1,4 +1,3 @@
1
- declare const Loading_Animated: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('styled-components').FastOmit<import('react').SVGAttributes<SVGElement> & {
2
- theme?: import('../../..').ThemeName;
3
- }, never>, never>> & string;
1
+ import { SVGAssetProps } from '../../../types';
2
+ declare const Loading_Animated: ({ className, ...props }: SVGAssetProps) => import("react/jsx-runtime").JSX.Element;
4
3
  export default Loading_Animated;
@@ -1,5 +1,3 @@
1
1
  import { SVGAssetProps } from '../../../types';
2
- declare const LoadingFlipped: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').SVGAttributes<SVGElement> & {
3
- theme?: import('../../..').ThemeName;
4
- }, never>> & string & Omit<(props: SVGAssetProps) => import("react/jsx-runtime").JSX.Element, keyof import('react').Component<any, {}, any>>;
5
- export default LoadingFlipped;
2
+ declare const Loading: ({ className, theme, ...props }: SVGAssetProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default Loading;
@@ -1,6 +1,7 @@
1
1
  import { DateRange, Timezone } from './utils';
2
2
  type OpenDirection = 'left' | 'right';
3
3
  export interface DateRangePickerProps {
4
+ allowOnlyDatesList?: Array<Date>;
4
5
  endDate?: Date;
5
6
  disabled?: boolean;
6
7
  futureDatesDisabled?: boolean;
@@ -14,5 +15,5 @@ export interface DateRangePickerProps {
14
15
  responsivePositioning?: boolean;
15
16
  timezone?: Timezone;
16
17
  }
17
- export declare const DateRangePicker: ({ endDate, startDate, disabled, futureDatesDisabled, futureStartDatesDisabled, maxRangeLength, onSelectDateRange, openDirection, placeholder, predefinedDatesList, responsivePositioning, timezone, }: DateRangePickerProps) => import("react/jsx-runtime").JSX.Element;
18
+ export declare const DateRangePicker: ({ allowOnlyDatesList, endDate, startDate, disabled, futureDatesDisabled, futureStartDatesDisabled, maxRangeLength, onSelectDateRange, openDirection, placeholder, predefinedDatesList, responsivePositioning, timezone, }: DateRangePickerProps) => import("react/jsx-runtime").JSX.Element;
18
19
  export {};
@@ -22,6 +22,7 @@ export declare const shiftFromTimezone: (date: Date, timezone: Timezone) => Date
22
22
  export declare const getPredefinedMonthsForDateRangePicker: (numberOfMonths: number) => DateRange[];
23
23
  export declare const getPredefinedTimePeriodsForDateTimePicker: () => DateRangeListItem[];
24
24
  export declare const getNextNDatesForDatePickerAllowOnlyList: (numberOfDays: number) => Date[];
25
+ export declare const isDateNotInAllowList: (allowList: Array<Date> | undefined, date: Date) => boolean;
25
26
  export declare const datesAreWithinMaxRange: (startDate: Date, endDate: Date, maxRangeLength: number) => boolean;
26
27
  export declare const isDateRangeTheWholeMonth: ({ startDate, endDate }: DateRange, timezone?: Timezone) => boolean;
27
28
  export declare const dateRangeIsValid: (dateRange: DateRange) => boolean;
@@ -7,11 +7,10 @@ interface RowNumberColumnProps {
7
7
  rowWidth: number;
8
8
  getSelectionType: SelectionTypeFn;
9
9
  rowCount: number;
10
- showHeader: boolean;
11
10
  scrolledHorizontal: boolean;
12
11
  rowStart: number;
13
12
  showBorder: boolean;
14
13
  rowAutoHeight?: boolean;
15
14
  }
16
- declare const RowNumberColumn: ({ minRow, maxRow, rowHeight, headerHeight, rowWidth, getSelectionType, rowCount, showHeader, scrolledHorizontal, rowStart, showBorder, rowAutoHeight, }: RowNumberColumnProps) => import("react/jsx-runtime").JSX.Element;
15
+ declare const RowNumberColumn: ({ minRow, maxRow, rowHeight, headerHeight, rowWidth, getSelectionType, rowCount, scrolledHorizontal, rowStart, showBorder, rowAutoHeight, }: RowNumberColumnProps) => import("react/jsx-runtime").JSX.Element;
17
16
  export default RowNumberColumn;
@@ -1,15 +1,20 @@
1
+ import { ComponentProps, ElementType, ReactNode } from 'react';
1
2
  import { SelectionType } from './types';
2
- export declare const StyledCell: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components/dist/types').Substitute<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
3
+ interface StyledCellOwnProps {
3
4
  $isFocused: boolean;
4
5
  $selectionType: SelectionType;
5
6
  $isSelectedTop: boolean;
6
7
  $isSelectedLeft: boolean;
7
8
  $isLastRow: boolean;
8
9
  $isLastColumn: boolean;
9
- $isFirstRow: boolean;
10
- $isFirstColumn: boolean;
11
10
  $height: number;
12
- $type?: "body" | "header";
11
+ $type?: 'body' | 'header';
13
12
  $showBorder: boolean;
14
13
  $rowAutoHeight?: boolean;
15
- }>> & string;
14
+ }
15
+ type StyledCellProps<T extends ElementType> = StyledCellOwnProps & {
16
+ as?: T;
17
+ children?: ReactNode;
18
+ } & Omit<ComponentProps<T>, keyof StyledCellOwnProps | 'as' | 'children'>;
19
+ export declare const StyledCell: <T extends ElementType = "div">({ as, $isFocused, $selectionType, $isSelectedTop, $isSelectedLeft, $isLastRow, $isLastColumn, $height, $type, $showBorder, $rowAutoHeight, className, style, children, ...props }: StyledCellProps<T>) => import("react/jsx-runtime").JSX.Element;
20
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clickhouse/click-ui",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "Official ClickHouse design system react library",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",