@salt-ds/data-grid 1.0.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.
- package/dist-cjs/node_modules/style-inject/dist/style-inject.es.js +31 -0
- package/dist-cjs/node_modules/style-inject/dist/style-inject.es.js.map +1 -0
- package/dist-cjs/packages/grid/src/BaseCell.css.js +9 -0
- package/dist-cjs/packages/grid/src/BaseCell.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/BaseCell.js +81 -0
- package/dist-cjs/packages/grid/src/BaseCell.js.map +1 -0
- package/dist-cjs/packages/grid/src/CellEditor.js +29 -0
- package/dist-cjs/packages/grid/src/CellEditor.js.map +1 -0
- package/dist-cjs/packages/grid/src/CheckboxCell.css.js +9 -0
- package/dist-cjs/packages/grid/src/CheckboxCell.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/ColumnDataContext.js +18 -0
- package/dist-cjs/packages/grid/src/ColumnDataContext.js.map +1 -0
- package/dist-cjs/packages/grid/src/ColumnDragContext.js +20 -0
- package/dist-cjs/packages/grid/src/ColumnDragContext.js.map +1 -0
- package/dist-cjs/packages/grid/src/ColumnGroup.js +32 -0
- package/dist-cjs/packages/grid/src/ColumnGroup.js.map +1 -0
- package/dist-cjs/packages/grid/src/CornerTag.css.js +9 -0
- package/dist-cjs/packages/grid/src/CornerTag.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/CornerTag.js +15 -0
- package/dist-cjs/packages/grid/src/CornerTag.js.map +1 -0
- package/dist-cjs/packages/grid/src/CursorContext.js +20 -0
- package/dist-cjs/packages/grid/src/CursorContext.js.map +1 -0
- package/dist-cjs/packages/grid/src/DropdownCellEditor.css.js +9 -0
- package/dist-cjs/packages/grid/src/DropdownCellEditor.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/DropdownCellEditor.js +75 -0
- package/dist-cjs/packages/grid/src/DropdownCellEditor.js.map +1 -0
- package/dist-cjs/packages/grid/src/EditorContext.js +20 -0
- package/dist-cjs/packages/grid/src/EditorContext.js.map +1 -0
- package/dist-cjs/packages/grid/src/Grid.css.js +9 -0
- package/dist-cjs/packages/grid/src/Grid.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/Grid.js +938 -0
- package/dist-cjs/packages/grid/src/Grid.js.map +1 -0
- package/dist-cjs/packages/grid/src/GridColumn.js +43 -0
- package/dist-cjs/packages/grid/src/GridColumn.js.map +1 -0
- package/dist-cjs/packages/grid/src/GridContext.js +20 -0
- package/dist-cjs/packages/grid/src/GridContext.js.map +1 -0
- package/dist-cjs/packages/grid/src/GroupHeaderCell.css.js +9 -0
- package/dist-cjs/packages/grid/src/GroupHeaderCell.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/GroupHeaderCell.js +50 -0
- package/dist-cjs/packages/grid/src/GroupHeaderCell.js.map +1 -0
- package/dist-cjs/packages/grid/src/GroupHeaderCellValue.js +16 -0
- package/dist-cjs/packages/grid/src/GroupHeaderCellValue.js.map +1 -0
- package/dist-cjs/packages/grid/src/HeaderCell.css.js +9 -0
- package/dist-cjs/packages/grid/src/HeaderCell.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/HeaderCell.js +120 -0
- package/dist-cjs/packages/grid/src/HeaderCell.js.map +1 -0
- package/dist-cjs/packages/grid/src/HeaderCellValue.js +19 -0
- package/dist-cjs/packages/grid/src/HeaderCellValue.js.map +1 -0
- package/dist-cjs/packages/grid/src/LayoutContext.js +12 -0
- package/dist-cjs/packages/grid/src/LayoutContext.js.map +1 -0
- package/dist-cjs/packages/grid/src/NumberRange.js +63 -0
- package/dist-cjs/packages/grid/src/NumberRange.js.map +1 -0
- package/dist-cjs/packages/grid/src/NumericColumn.css.js +9 -0
- package/dist-cjs/packages/grid/src/NumericColumn.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/NumericColumn.js +108 -0
- package/dist-cjs/packages/grid/src/NumericColumn.js.map +1 -0
- package/dist-cjs/packages/grid/src/RowSelectionCheckboxCellValue.js +37 -0
- package/dist-cjs/packages/grid/src/RowSelectionCheckboxCellValue.js.map +1 -0
- package/dist-cjs/packages/grid/src/RowSelectionCheckboxColumn.js +32 -0
- package/dist-cjs/packages/grid/src/RowSelectionCheckboxColumn.js.map +1 -0
- package/dist-cjs/packages/grid/src/RowSelectionCheckboxHeaderCellValue.js +48 -0
- package/dist-cjs/packages/grid/src/RowSelectionCheckboxHeaderCellValue.js.map +1 -0
- package/dist-cjs/packages/grid/src/RowSelectionRadioCellValue.js +25 -0
- package/dist-cjs/packages/grid/src/RowSelectionRadioCellValue.js.map +1 -0
- package/dist-cjs/packages/grid/src/RowSelectionRadioColumn.js +30 -0
- package/dist-cjs/packages/grid/src/RowSelectionRadioColumn.js.map +1 -0
- package/dist-cjs/packages/grid/src/RowSelectionRadioHeaderCell.js +26 -0
- package/dist-cjs/packages/grid/src/RowSelectionRadioHeaderCell.js.map +1 -0
- package/dist-cjs/packages/grid/src/SelectionContext.js +20 -0
- package/dist-cjs/packages/grid/src/SelectionContext.js.map +1 -0
- package/dist-cjs/packages/grid/src/SizingContext.js +20 -0
- package/dist-cjs/packages/grid/src/SizingContext.js.map +1 -0
- package/dist-cjs/packages/grid/src/TextCellEditor.css.js +9 -0
- package/dist-cjs/packages/grid/src/TextCellEditor.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/TextCellEditor.js +85 -0
- package/dist-cjs/packages/grid/src/TextCellEditor.js.map +1 -0
- package/dist-cjs/packages/grid/src/index.js +59 -0
- package/dist-cjs/packages/grid/src/index.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/Cell.css.js +9 -0
- package/dist-cjs/packages/grid/src/internal/Cell.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/Cell.js +59 -0
- package/dist-cjs/packages/grid/src/internal/Cell.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/CellMeasure.css.js +9 -0
- package/dist-cjs/packages/grid/src/internal/CellMeasure.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/CellMeasure.js +41 -0
- package/dist-cjs/packages/grid/src/internal/CellMeasure.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/ColumnDropTarget.css.js +9 -0
- package/dist-cjs/packages/grid/src/internal/ColumnDropTarget.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/ColumnDropTarget.js +28 -0
- package/dist-cjs/packages/grid/src/internal/ColumnDropTarget.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/ColumnGhost.css.js +9 -0
- package/dist-cjs/packages/grid/src/internal/ColumnGhost.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/ColumnGhost.js +51 -0
- package/dist-cjs/packages/grid/src/internal/ColumnGhost.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/Cursor.css.js +9 -0
- package/dist-cjs/packages/grid/src/internal/Cursor.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/Cursor.js +17 -0
- package/dist-cjs/packages/grid/src/internal/Cursor.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/DefaultCellValue.css.js +9 -0
- package/dist-cjs/packages/grid/src/internal/DefaultCellValue.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/DefaultCellValue.js +26 -0
- package/dist-cjs/packages/grid/src/internal/DefaultCellValue.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/FakeCell.css.js +9 -0
- package/dist-cjs/packages/grid/src/internal/FakeCell.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/FakeCell.js +19 -0
- package/dist-cjs/packages/grid/src/internal/FakeCell.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/FakeGroupCell.js +12 -0
- package/dist-cjs/packages/grid/src/internal/FakeGroupCell.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/FakeHeaderCell.js +14 -0
- package/dist-cjs/packages/grid/src/internal/FakeHeaderCell.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/GroupHeaderRow.css.js +9 -0
- package/dist-cjs/packages/grid/src/internal/GroupHeaderRow.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/GroupHeaderRow.js +38 -0
- package/dist-cjs/packages/grid/src/internal/GroupHeaderRow.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/HeaderRow.css.js +9 -0
- package/dist-cjs/packages/grid/src/internal/HeaderRow.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/HeaderRow.js +42 -0
- package/dist-cjs/packages/grid/src/internal/HeaderRow.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/LeftPart.css.js +9 -0
- package/dist-cjs/packages/grid/src/internal/LeftPart.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/LeftPart.js +62 -0
- package/dist-cjs/packages/grid/src/internal/LeftPart.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/MiddlePart.css.js +9 -0
- package/dist-cjs/packages/grid/src/internal/MiddlePart.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/MiddlePart.js +54 -0
- package/dist-cjs/packages/grid/src/internal/MiddlePart.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/RightPart.css.js +9 -0
- package/dist-cjs/packages/grid/src/internal/RightPart.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/RightPart.js +62 -0
- package/dist-cjs/packages/grid/src/internal/RightPart.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/Scrollable.css.js +9 -0
- package/dist-cjs/packages/grid/src/internal/Scrollable.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/Scrollable.js +89 -0
- package/dist-cjs/packages/grid/src/internal/Scrollable.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/TableBody.js +70 -0
- package/dist-cjs/packages/grid/src/internal/TableBody.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/TableColGroup.js +37 -0
- package/dist-cjs/packages/grid/src/internal/TableColGroup.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/TableRow.css.js +9 -0
- package/dist-cjs/packages/grid/src/internal/TableRow.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/TableRow.js +99 -0
- package/dist-cjs/packages/grid/src/internal/TableRow.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/TopLeftPart.css.js +9 -0
- package/dist-cjs/packages/grid/src/internal/TopLeftPart.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/TopLeftPart.js +54 -0
- package/dist-cjs/packages/grid/src/internal/TopLeftPart.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/TopPart.css.js +9 -0
- package/dist-cjs/packages/grid/src/internal/TopPart.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/TopPart.js +57 -0
- package/dist-cjs/packages/grid/src/internal/TopPart.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/TopRightPart.css.js +9 -0
- package/dist-cjs/packages/grid/src/internal/TopRightPart.css.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/TopRightPart.js +55 -0
- package/dist-cjs/packages/grid/src/internal/TopRightPart.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/gridHooks.js +916 -0
- package/dist-cjs/packages/grid/src/internal/gridHooks.js.map +1 -0
- package/dist-cjs/packages/grid/src/internal/utils.js +71 -0
- package/dist-cjs/packages/grid/src/internal/utils.js.map +1 -0
- package/dist-es/node_modules/style-inject/dist/style-inject.es.js +29 -0
- package/dist-es/node_modules/style-inject/dist/style-inject.es.js.map +1 -0
- package/dist-es/packages/grid/src/BaseCell.css.js +7 -0
- package/dist-es/packages/grid/src/BaseCell.css.js.map +1 -0
- package/dist-es/packages/grid/src/BaseCell.js +72 -0
- package/dist-es/packages/grid/src/BaseCell.js.map +1 -0
- package/dist-es/packages/grid/src/CellEditor.js +25 -0
- package/dist-es/packages/grid/src/CellEditor.js.map +1 -0
- package/dist-es/packages/grid/src/CheckboxCell.css.js +7 -0
- package/dist-es/packages/grid/src/CheckboxCell.css.js.map +1 -0
- package/dist-es/packages/grid/src/ColumnDataContext.js +13 -0
- package/dist-es/packages/grid/src/ColumnDataContext.js.map +1 -0
- package/dist-es/packages/grid/src/ColumnDragContext.js +15 -0
- package/dist-es/packages/grid/src/ColumnDragContext.js.map +1 -0
- package/dist-es/packages/grid/src/ColumnGroup.js +28 -0
- package/dist-es/packages/grid/src/ColumnGroup.js.map +1 -0
- package/dist-es/packages/grid/src/CornerTag.css.js +7 -0
- package/dist-es/packages/grid/src/CornerTag.css.js.map +1 -0
- package/dist-es/packages/grid/src/CornerTag.js +11 -0
- package/dist-es/packages/grid/src/CornerTag.js.map +1 -0
- package/dist-es/packages/grid/src/CursorContext.js +15 -0
- package/dist-es/packages/grid/src/CursorContext.js.map +1 -0
- package/dist-es/packages/grid/src/DropdownCellEditor.css.js +7 -0
- package/dist-es/packages/grid/src/DropdownCellEditor.css.js.map +1 -0
- package/dist-es/packages/grid/src/DropdownCellEditor.js +71 -0
- package/dist-es/packages/grid/src/DropdownCellEditor.js.map +1 -0
- package/dist-es/packages/grid/src/EditorContext.js +15 -0
- package/dist-es/packages/grid/src/EditorContext.js.map +1 -0
- package/dist-es/packages/grid/src/Grid.css.js +7 -0
- package/dist-es/packages/grid/src/Grid.css.js.map +1 -0
- package/dist-es/packages/grid/src/Grid.js +930 -0
- package/dist-es/packages/grid/src/Grid.js.map +1 -0
- package/dist-es/packages/grid/src/GridColumn.js +39 -0
- package/dist-es/packages/grid/src/GridColumn.js.map +1 -0
- package/dist-es/packages/grid/src/GridContext.js +15 -0
- package/dist-es/packages/grid/src/GridContext.js.map +1 -0
- package/dist-es/packages/grid/src/GroupHeaderCell.css.js +7 -0
- package/dist-es/packages/grid/src/GroupHeaderCell.css.js.map +1 -0
- package/dist-es/packages/grid/src/GroupHeaderCell.js +42 -0
- package/dist-es/packages/grid/src/GroupHeaderCell.js.map +1 -0
- package/dist-es/packages/grid/src/GroupHeaderCellValue.js +12 -0
- package/dist-es/packages/grid/src/GroupHeaderCellValue.js.map +1 -0
- package/dist-es/packages/grid/src/HeaderCell.css.js +7 -0
- package/dist-es/packages/grid/src/HeaderCell.css.js.map +1 -0
- package/dist-es/packages/grid/src/HeaderCell.js +110 -0
- package/dist-es/packages/grid/src/HeaderCell.js.map +1 -0
- package/dist-es/packages/grid/src/HeaderCellValue.js +15 -0
- package/dist-es/packages/grid/src/HeaderCellValue.js.map +1 -0
- package/dist-es/packages/grid/src/LayoutContext.js +8 -0
- package/dist-es/packages/grid/src/LayoutContext.js.map +1 -0
- package/dist-es/packages/grid/src/NumberRange.js +58 -0
- package/dist-es/packages/grid/src/NumberRange.js.map +1 -0
- package/dist-es/packages/grid/src/NumericColumn.css.js +7 -0
- package/dist-es/packages/grid/src/NumericColumn.css.js.map +1 -0
- package/dist-es/packages/grid/src/NumericColumn.js +102 -0
- package/dist-es/packages/grid/src/NumericColumn.js.map +1 -0
- package/dist-es/packages/grid/src/RowSelectionCheckboxCellValue.js +33 -0
- package/dist-es/packages/grid/src/RowSelectionCheckboxCellValue.js.map +1 -0
- package/dist-es/packages/grid/src/RowSelectionCheckboxColumn.js +28 -0
- package/dist-es/packages/grid/src/RowSelectionCheckboxColumn.js.map +1 -0
- package/dist-es/packages/grid/src/RowSelectionCheckboxHeaderCellValue.js +44 -0
- package/dist-es/packages/grid/src/RowSelectionCheckboxHeaderCellValue.js.map +1 -0
- package/dist-es/packages/grid/src/RowSelectionRadioCellValue.js +21 -0
- package/dist-es/packages/grid/src/RowSelectionRadioCellValue.js.map +1 -0
- package/dist-es/packages/grid/src/RowSelectionRadioColumn.js +26 -0
- package/dist-es/packages/grid/src/RowSelectionRadioColumn.js.map +1 -0
- package/dist-es/packages/grid/src/RowSelectionRadioHeaderCell.js +18 -0
- package/dist-es/packages/grid/src/RowSelectionRadioHeaderCell.js.map +1 -0
- package/dist-es/packages/grid/src/SelectionContext.js +15 -0
- package/dist-es/packages/grid/src/SelectionContext.js.map +1 -0
- package/dist-es/packages/grid/src/SizingContext.js +15 -0
- package/dist-es/packages/grid/src/SizingContext.js.map +1 -0
- package/dist-es/packages/grid/src/TextCellEditor.css.js +7 -0
- package/dist-es/packages/grid/src/TextCellEditor.css.js.map +1 -0
- package/dist-es/packages/grid/src/TextCellEditor.js +81 -0
- package/dist-es/packages/grid/src/TextCellEditor.js.map +1 -0
- package/dist-es/packages/grid/src/index.js +22 -0
- package/dist-es/packages/grid/src/index.js.map +1 -0
- package/dist-es/packages/grid/src/internal/Cell.css.js +7 -0
- package/dist-es/packages/grid/src/internal/Cell.css.js.map +1 -0
- package/dist-es/packages/grid/src/internal/Cell.js +51 -0
- package/dist-es/packages/grid/src/internal/Cell.js.map +1 -0
- package/dist-es/packages/grid/src/internal/CellMeasure.css.js +7 -0
- package/dist-es/packages/grid/src/internal/CellMeasure.css.js.map +1 -0
- package/dist-es/packages/grid/src/internal/CellMeasure.js +37 -0
- package/dist-es/packages/grid/src/internal/CellMeasure.js.map +1 -0
- package/dist-es/packages/grid/src/internal/ColumnDropTarget.css.js +7 -0
- package/dist-es/packages/grid/src/internal/ColumnDropTarget.css.js.map +1 -0
- package/dist-es/packages/grid/src/internal/ColumnDropTarget.js +24 -0
- package/dist-es/packages/grid/src/internal/ColumnDropTarget.js.map +1 -0
- package/dist-es/packages/grid/src/internal/ColumnGhost.css.js +7 -0
- package/dist-es/packages/grid/src/internal/ColumnGhost.css.js.map +1 -0
- package/dist-es/packages/grid/src/internal/ColumnGhost.js +47 -0
- package/dist-es/packages/grid/src/internal/ColumnGhost.js.map +1 -0
- package/dist-es/packages/grid/src/internal/Cursor.css.js +7 -0
- package/dist-es/packages/grid/src/internal/Cursor.css.js.map +1 -0
- package/dist-es/packages/grid/src/internal/Cursor.js +13 -0
- package/dist-es/packages/grid/src/internal/Cursor.js.map +1 -0
- package/dist-es/packages/grid/src/internal/DefaultCellValue.css.js +7 -0
- package/dist-es/packages/grid/src/internal/DefaultCellValue.css.js.map +1 -0
- package/dist-es/packages/grid/src/internal/DefaultCellValue.js +18 -0
- package/dist-es/packages/grid/src/internal/DefaultCellValue.js.map +1 -0
- package/dist-es/packages/grid/src/internal/FakeCell.css.js +7 -0
- package/dist-es/packages/grid/src/internal/FakeCell.css.js.map +1 -0
- package/dist-es/packages/grid/src/internal/FakeCell.js +15 -0
- package/dist-es/packages/grid/src/internal/FakeCell.js.map +1 -0
- package/dist-es/packages/grid/src/internal/FakeGroupCell.js +8 -0
- package/dist-es/packages/grid/src/internal/FakeGroupCell.js.map +1 -0
- package/dist-es/packages/grid/src/internal/FakeHeaderCell.js +10 -0
- package/dist-es/packages/grid/src/internal/FakeHeaderCell.js.map +1 -0
- package/dist-es/packages/grid/src/internal/GroupHeaderRow.css.js +7 -0
- package/dist-es/packages/grid/src/internal/GroupHeaderRow.css.js.map +1 -0
- package/dist-es/packages/grid/src/internal/GroupHeaderRow.js +34 -0
- package/dist-es/packages/grid/src/internal/GroupHeaderRow.js.map +1 -0
- package/dist-es/packages/grid/src/internal/HeaderRow.css.js +7 -0
- package/dist-es/packages/grid/src/internal/HeaderRow.css.js.map +1 -0
- package/dist-es/packages/grid/src/internal/HeaderRow.js +38 -0
- package/dist-es/packages/grid/src/internal/HeaderRow.js.map +1 -0
- package/dist-es/packages/grid/src/internal/LeftPart.css.js +7 -0
- package/dist-es/packages/grid/src/internal/LeftPart.css.js.map +1 -0
- package/dist-es/packages/grid/src/internal/LeftPart.js +54 -0
- package/dist-es/packages/grid/src/internal/LeftPart.js.map +1 -0
- package/dist-es/packages/grid/src/internal/MiddlePart.css.js +7 -0
- package/dist-es/packages/grid/src/internal/MiddlePart.css.js.map +1 -0
- package/dist-es/packages/grid/src/internal/MiddlePart.js +50 -0
- package/dist-es/packages/grid/src/internal/MiddlePart.js.map +1 -0
- package/dist-es/packages/grid/src/internal/RightPart.css.js +7 -0
- package/dist-es/packages/grid/src/internal/RightPart.css.js.map +1 -0
- package/dist-es/packages/grid/src/internal/RightPart.js +54 -0
- package/dist-es/packages/grid/src/internal/RightPart.js.map +1 -0
- package/dist-es/packages/grid/src/internal/Scrollable.css.js +7 -0
- package/dist-es/packages/grid/src/internal/Scrollable.css.js.map +1 -0
- package/dist-es/packages/grid/src/internal/Scrollable.js +85 -0
- package/dist-es/packages/grid/src/internal/Scrollable.js.map +1 -0
- package/dist-es/packages/grid/src/internal/TableBody.js +66 -0
- package/dist-es/packages/grid/src/internal/TableBody.js.map +1 -0
- package/dist-es/packages/grid/src/internal/TableColGroup.js +32 -0
- package/dist-es/packages/grid/src/internal/TableColGroup.js.map +1 -0
- package/dist-es/packages/grid/src/internal/TableRow.css.js +7 -0
- package/dist-es/packages/grid/src/internal/TableRow.css.js.map +1 -0
- package/dist-es/packages/grid/src/internal/TableRow.js +91 -0
- package/dist-es/packages/grid/src/internal/TableRow.js.map +1 -0
- package/dist-es/packages/grid/src/internal/TopLeftPart.css.js +7 -0
- package/dist-es/packages/grid/src/internal/TopLeftPart.css.js.map +1 -0
- package/dist-es/packages/grid/src/internal/TopLeftPart.js +46 -0
- package/dist-es/packages/grid/src/internal/TopLeftPart.js.map +1 -0
- package/dist-es/packages/grid/src/internal/TopPart.css.js +7 -0
- package/dist-es/packages/grid/src/internal/TopPart.css.js.map +1 -0
- package/dist-es/packages/grid/src/internal/TopPart.js +49 -0
- package/dist-es/packages/grid/src/internal/TopPart.js.map +1 -0
- package/dist-es/packages/grid/src/internal/TopRightPart.css.js +7 -0
- package/dist-es/packages/grid/src/internal/TopRightPart.css.js.map +1 -0
- package/dist-es/packages/grid/src/internal/TopRightPart.js +47 -0
- package/dist-es/packages/grid/src/internal/TopRightPart.js.map +1 -0
- package/dist-es/packages/grid/src/internal/gridHooks.js +886 -0
- package/dist-es/packages/grid/src/internal/gridHooks.js.map +1 -0
- package/dist-es/packages/grid/src/internal/utils.js +61 -0
- package/dist-es/packages/grid/src/internal/utils.js.map +1 -0
- package/dist-types/BaseCell.d.ts +6 -0
- package/dist-types/CellEditor.d.ts +10 -0
- package/dist-types/ColumnDataContext.d.ts +7 -0
- package/dist-types/ColumnDragContext.d.ts +7 -0
- package/dist-types/ColumnGroup.d.ts +18 -0
- package/dist-types/CornerTag.d.ts +6 -0
- package/dist-types/CursorContext.d.ts +12 -0
- package/dist-types/DropdownCellEditor.d.ts +9 -0
- package/dist-types/EditorContext.d.ts +10 -0
- package/dist-types/Grid.d.ts +99 -0
- package/dist-types/GridColumn.d.ts +113 -0
- package/dist-types/GridContext.d.ts +16 -0
- package/dist-types/GroupHeaderCell.d.ts +8 -0
- package/dist-types/GroupHeaderCellValue.d.ts +3 -0
- package/dist-types/HeaderCell.d.ts +10 -0
- package/dist-types/HeaderCellValue.d.ts +3 -0
- package/dist-types/LayoutContext.d.ts +9 -0
- package/dist-types/NumberRange.d.ts +15 -0
- package/dist-types/NumericColumn.d.ts +15 -0
- package/dist-types/RowSelectionCheckboxCellValue.d.ts +4 -0
- package/dist-types/RowSelectionCheckboxColumn.d.ts +4 -0
- package/dist-types/RowSelectionCheckboxHeaderCellValue.d.ts +4 -0
- package/dist-types/RowSelectionRadioCellValue.d.ts +4 -0
- package/dist-types/RowSelectionRadioColumn.d.ts +4 -0
- package/dist-types/RowSelectionRadioHeaderCell.d.ts +4 -0
- package/dist-types/SelectionContext.d.ts +13 -0
- package/dist-types/SizingContext.d.ts +8 -0
- package/dist-types/TextCellEditor.d.ts +8 -0
- package/dist-types/index.d.ts +21 -0
- package/dist-types/internal/Cell.d.ts +9 -0
- package/dist-types/internal/CellMeasure.d.ts +6 -0
- package/dist-types/internal/ColumnDropTarget.d.ts +6 -0
- package/dist-types/internal/ColumnGhost.d.ts +11 -0
- package/dist-types/internal/Cursor.d.ts +5 -0
- package/dist-types/internal/DefaultCellValue.d.ts +4 -0
- package/dist-types/internal/FakeCell.d.ts +5 -0
- package/dist-types/internal/FakeGroupCell.d.ts +2 -0
- package/dist-types/internal/FakeHeaderCell.d.ts +2 -0
- package/dist-types/internal/GroupHeaderRow.d.ts +8 -0
- package/dist-types/internal/HeaderRow.d.ts +8 -0
- package/dist-types/internal/LeftPart.d.ts +14 -0
- package/dist-types/internal/MiddlePart.d.ts +14 -0
- package/dist-types/internal/RightPart.d.ts +14 -0
- package/dist-types/internal/Scrollable.d.ts +16 -0
- package/dist-types/internal/TableBody.d.ts +11 -0
- package/dist-types/internal/TableColGroup.d.ts +11 -0
- package/dist-types/internal/TableRow.d.ts +19 -0
- package/dist-types/internal/TopLeftPart.d.ts +11 -0
- package/dist-types/internal/TopPart.d.ts +12 -0
- package/dist-types/internal/TopRightPart.d.ts +11 -0
- package/dist-types/internal/gridHooks.d.ts +91 -0
- package/dist-types/internal/index.d.ts +21 -0
- package/dist-types/internal/utils.d.ts +13 -0
- package/package.json +41 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gridHooks.js","sources":["../src/internal/gridHooks.tsx"],"sourcesContent":["import React, {\n Children,\n FocusEventHandler,\n isValidElement,\n MouseEventHandler,\n ReactNode,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n GridCellSelectionMode,\n GridColumnGroupModel,\n GridColumnModel,\n GridColumnMoveHandler,\n GridRowModel,\n GridRowSelectionMode,\n RowKeyGetter,\n} from \"../Grid\";\nimport { ColumnGroupProps } from \"../ColumnGroup\";\nimport { NumberRange } from \"../NumberRange\";\nimport { GridColumnInfo, GridColumnPin } from \"../GridColumn\";\nimport {\n getAttribute,\n getCellPosition,\n makeMapAdder,\n makeMapDeleter,\n} from \"./utils\";\nimport { GridContext } from \"../GridContext\";\nimport { CellEditorInfo } from \"../CellEditor\";\nimport { useControlled } from \"@salt-ds/core\";\nimport { FocusedPart } from \"../CursorContext\";\n\n// Attaches active onWheel event to a table element\n// Grid needs to prevent default onWheel event handling for situations when a\n// scrollable grid is on a scrollable page. Page should not scroll when the grid\n// is being scrolled.\nexport function useActiveOnWheel(onWheel: EventListener) {\n const tableRef = useRef<HTMLTableElement>(null);\n\n useEffect(() => {\n const table = tableRef.current;\n if (table && onWheel) {\n table.addEventListener(\"wheel\", onWheel, { passive: false });\n return () => {\n table.removeEventListener(\"wheel\", onWheel);\n };\n }\n }, [tableRef.current]);\n\n return tableRef;\n}\n\n// Total width of the given columns.\nfunction sumWidth<T>(columns: GridColumnModel<T>[]) {\n return columns.reduce((p, x) => p + x.info.width, 0);\n}\n\n// Returns total width of the given columns wrapped in useMemo.\nexport function useSumWidth<T>(columns: GridColumnModel<T>[]) {\n return useMemo(() => sumWidth(columns), [columns]);\n}\n\n// Memoized sum of the given numbers.\nexport function useSum(source: number[]) {\n return useMemo(() => source.reduce((p, x) => p + x, 0), source);\n}\n\n// Sum width of the given range of columns.\nfunction sumRangeWidth<T>(columns: GridColumnModel<T>[], range: NumberRange) {\n let w = 0;\n range.forEach((i) => {\n w += columns[i].info.width;\n });\n return w;\n}\n\n// Sum width of the given range of columns wrapped in useMemo.\nexport function useSumRangeWidth<T>(\n columns: GridColumnModel<T>[],\n range: NumberRange\n) {\n return useMemo(() => sumRangeWidth(columns, range), [columns, range]);\n}\n\n// Range memoization using Rng.equals comparator.\nfunction useMemoRng(fn: () => NumberRange, deps: any[]) {\n const prevRef = useRef<NumberRange>(NumberRange.empty);\n const range = useMemo(fn, deps);\n if (!NumberRange.equals(prevRef.current, range)) {\n prevRef.current = range;\n }\n return prevRef.current;\n}\n\n// Visible range of columns within the body.\nexport function useBodyVisibleColumnRange<T>(\n midColumns: GridColumnModel<T>[],\n scrollLeft: number,\n clientMidWidth: number\n): NumberRange {\n return useMemoRng(() => {\n if (clientMidWidth === 0 || midColumns.length === 0) {\n return NumberRange.empty;\n }\n let width = scrollLeft;\n let start = 0;\n for (let i = 0; i < midColumns.length; ++i) {\n const colWidth = midColumns[i].info.width;\n if (width > colWidth) {\n width -= colWidth;\n } else {\n start = i;\n width += clientMidWidth;\n break;\n }\n }\n let end = start + 1;\n for (let i = start; i < midColumns.length; ++i) {\n const colWidth = midColumns[i].info.width;\n width -= colWidth;\n end = i + 1;\n if (width <= 0) {\n break;\n }\n }\n if (end > midColumns.length) {\n end = midColumns.length;\n }\n return new NumberRange(start, end);\n }, [midColumns, scrollLeft, clientMidWidth]);\n}\n\n// Client width of the middle (scrollable) part of the grid.\nexport function useClientMidWidth(\n clientWidth: number,\n leftWidth: number,\n rightWidth: number\n) {\n return useMemo(\n () => clientWidth - leftWidth - rightWidth,\n [clientWidth, leftWidth, rightWidth]\n );\n}\n\n// Client height of the middle part of the grid.\nexport function useClientMidHeight(\n clientHeight: number,\n topHeight: number,\n botHeight: number\n) {\n return useMemo(\n () => clientHeight - topHeight - botHeight,\n [clientHeight, topHeight, botHeight]\n );\n}\n\n// Y coordinate of the visible area within the virtual space.\nexport function useBodyVisibleAreaTop<T>(\n rowHeight: number,\n visibleRowRange: NumberRange,\n topHeight: number\n) {\n return useMemo(() => {\n let top = topHeight + visibleRowRange.start * rowHeight;\n if (visibleRowRange.start > 0) {\n top += 1; // First row (row #0) has an extra border\n }\n return top;\n }, [rowHeight, visibleRowRange, topHeight]);\n}\n\n// Visible range of rows.\nexport function useVisibleRowRange(\n scrollTop: number,\n clientMidHeight: number,\n rowHeight: number,\n rowCount: number\n) {\n return useMemoRng(() => {\n if (rowHeight < 1) {\n return NumberRange.empty;\n }\n const firstRowHeight = rowHeight + 1; // First row has an extra 1px\n const start =\n scrollTop > firstRowHeight\n ? 1 + Math.floor((scrollTop - firstRowHeight) / rowHeight)\n : 0;\n let endPos = scrollTop + clientMidHeight;\n if (start === 0) {\n endPos -= 1;\n }\n const end = Math.min(\n rowCount,\n Math.max(start, Math.ceil(endPos / rowHeight))\n );\n return new NumberRange(start, end);\n }, [scrollTop, clientMidHeight, rowHeight, rowCount]);\n}\n\nexport function useColumnRange<T>(\n columns: GridColumnModel<T>[],\n range: NumberRange\n): GridColumnModel<T>[] {\n return useMemo(() => columns.slice(range.start, range.end), [columns, range]);\n}\n\n// Total width of the columns scrolled out to the left of the visible area.\nexport function useLeftScrolledOutWidth<T>(\n midColumns: GridColumnModel<T>[],\n bodyVisibleColumnRange: NumberRange\n) {\n return useMemo(() => {\n let w = 0;\n for (let i = 0; i < bodyVisibleColumnRange.start; ++i) {\n w += midColumns[i].info.width;\n }\n return w;\n }, [midColumns, bodyVisibleColumnRange]);\n}\n\n// Row positions by row keys.\nexport function useRowIdxByKey<T>(rowKeyGetter: RowKeyGetter<T>, rowData: T[]) {\n return useMemo(() => {\n return new Map<string, number>(\n rowData.map((r, i) => [rowKeyGetter(r, i), i])\n );\n }, [rowData, rowKeyGetter]);\n}\n\nexport type SetState<T> = (v: T | ((p: T) => T)) => void;\n\n// Row models for the visible rows.\nexport function useRowModels<T>(\n getKey: RowKeyGetter<T>,\n rowData: T[],\n visibleRowRange: NumberRange\n) {\n return useMemo(() => {\n const rows: GridRowModel<T>[] = [];\n visibleRowRange.forEach((i) => {\n const key = getKey(rowData[i], i);\n rows.push({ data: rowData[i], key, index: i });\n });\n return rows;\n }, [getKey, rowData, visibleRowRange]);\n}\n\n// Creates column group models.\nexport const useColumnGroups = (\n grpPs: ColumnGroupProps[],\n startIdx: number\n): GridColumnGroupModel[] =>\n useMemo(\n () =>\n grpPs.map((data, i) => {\n const childrenIds = Children.toArray(data.children)\n .map((child) => {\n if (!isValidElement(child)) {\n return undefined;\n }\n return child.props.id;\n })\n .filter((x) => x !== undefined) as string[];\n const colSpan = childrenIds.length;\n\n return {\n data,\n index: i + startIdx,\n childrenIds,\n colSpan,\n columnSeparator: \"regular\",\n rowSeparator: \"regular\",\n };\n }),\n [grpPs, startIdx]\n );\n\n// Visible range of column groups.\nexport function useVisibleColumnGroupRange<T>(\n bodyVisColRng: NumberRange,\n midCols: GridColumnModel<T>[],\n midGrpByColId: Map<string, GridColumnGroupModel>,\n leftGrpCount: number\n): NumberRange {\n return useMemoRng(() => {\n if (bodyVisColRng.length === 0) {\n return NumberRange.empty;\n }\n const firstVisibleCol = midCols[bodyVisColRng.start];\n const lastVisibleCol = midCols[bodyVisColRng.end - 1];\n const firstVisibleGroup = midGrpByColId.get(firstVisibleCol.info.props.id);\n const lastVisibleGroup = midGrpByColId.get(lastVisibleCol.info.props.id);\n if (!firstVisibleGroup || !lastVisibleGroup) {\n return NumberRange.empty;\n }\n return new NumberRange(\n firstVisibleGroup.index - leftGrpCount,\n lastVisibleGroup.index + 1 - leftGrpCount\n );\n }, [bodyVisColRng, midCols, midGrpByColId, leftGrpCount]);\n}\n\nexport function last<T>(source: T[]): T {\n return source[source.length - 1];\n}\n\n// Range of columns visible in the header.\nexport function useHeadVisibleColumnRange<T>(\n bodyVisColRng: NumberRange,\n visColGrps: GridColumnGroupModel[],\n midColsById: Map<string, GridColumnModel<T>>,\n leftColCount: number\n) {\n return useMemoRng(() => {\n if (visColGrps.length === 0) {\n return bodyVisColRng;\n }\n const firstVisibleGroup = visColGrps[0];\n const lastVisibleGroup = last(visColGrps);\n const firstColId = firstVisibleGroup.childrenIds[0];\n const lastColId = last(lastVisibleGroup.childrenIds);\n const firstColIdx = midColsById.get(firstColId)?.index;\n const lastColIdx = midColsById.get(lastColId)?.index;\n if (firstColIdx === undefined || lastColIdx === undefined) {\n return NumberRange.empty;\n }\n return new NumberRange(\n firstColIdx - leftColCount,\n lastColIdx + 1 - leftColCount\n );\n }, [bodyVisColRng, visColGrps, midColsById, leftColCount]);\n}\n\n// Creates column models.\nexport function useCols<T>(\n colInfos: GridColumnInfo<T>[],\n startIdx: number,\n groups: GridColumnGroupModel[]\n): GridColumnModel<T>[] {\n return useMemo(() => {\n const edgeColIds = new Set<string>();\n groups.forEach((g) => {\n edgeColIds.add(last(g.childrenIds));\n });\n const columnModels: GridColumnModel<T>[] = colInfos.map((info, i) => ({\n info,\n index: i + startIdx,\n separator: edgeColIds.has(info.props.id) ? \"groupEdge\" : \"regular\",\n }));\n return columnModels;\n }, [colInfos, startIdx, groups]);\n}\n\n// Returns a function that scrolls the grid to the given cell.\nexport function useScrollToCell<T>(\n visRowRng: NumberRange,\n rowHeight: number,\n clientMidHeight: number,\n midCols: GridColumnModel<T>[],\n bodyVisColRng: NumberRange,\n clientMidWidth: number,\n scroll: (left?: number, top?: number, source?: \"user\" | \"table\") => void\n) {\n return useCallback(\n (part: FocusedPart, rowIdx: number, colIdx: number) => {\n if (part !== \"body\") {\n return; // TODO\n }\n let x: number | undefined = undefined;\n let y: number | undefined = undefined;\n if (rowIdx <= visRowRng.start) {\n // First row is 1px wider than other rows (additional top border)\n y = rowIdx === 0 ? 0 : 1 + rowHeight * rowIdx;\n } else if (rowIdx >= visRowRng.end - 1) {\n const extraBorder = rowIdx > 0 ? 1 : 0;\n y = Math.max(\n 0,\n rowHeight * rowIdx + extraBorder - clientMidHeight + rowHeight\n );\n }\n const isMidCol =\n midCols.length > 0 &&\n colIdx >= midCols[0].index &&\n colIdx <= last(midCols).index;\n if (isMidCol) {\n const midColIdx = colIdx - midCols[0].index;\n if (midColIdx <= bodyVisColRng.start) {\n let w = 0;\n for (let i = 0; i < midColIdx; ++i) {\n w += midCols[i].info.width;\n }\n x = w;\n } else if (midColIdx >= bodyVisColRng.end - 1) {\n let w = 0;\n for (let i = 0; i <= midColIdx; ++i) {\n w += midCols[i].info.width;\n }\n x = Math.max(0, w - clientMidWidth);\n }\n }\n if (x !== undefined || y !== undefined) {\n scroll(x, y, \"table\");\n }\n },\n [\n visRowRng,\n rowHeight,\n clientMidHeight,\n midCols,\n bodyVisColRng,\n clientMidWidth,\n scroll,\n ]\n );\n}\n\nconst MIN_COLUMN_WIDTH = 10;\n\n// Returns onMouseDown handler to be attached to column resize handlers.\n// TODO There might be some problems if column is removed while it is being resized\nexport function useColumnResize<T>(\n cols: GridColumnModel<T>[],\n resizeColumn: (columnIndex: number, width: number) => void\n) {\n const columnResizeDataRef = useRef<{\n startX: number;\n startY: number;\n eventsUnsubscription: () => void;\n columnIndex: number;\n initialColumnWidth: number;\n minWidth: number;\n resizeColumn: (columnIndex: number, width: number) => void;\n }>();\n\n const onMouseUp = useCallback(() => {\n columnResizeDataRef.current?.eventsUnsubscription();\n columnResizeDataRef.current = undefined;\n }, []);\n\n const onMouseMove = useCallback((event: MouseEvent) => {\n const x = event.screenX;\n const { startX, columnIndex, initialColumnWidth, minWidth } =\n columnResizeDataRef.current!;\n const shift = x - startX;\n let width = Math.max(minWidth, initialColumnWidth + shift);\n columnResizeDataRef.current!.resizeColumn(columnIndex, Math.round(width));\n }, []);\n\n return useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const targetElement = event.target as HTMLElement;\n const [columnIndexAttribute, thElement] = getAttribute(\n targetElement,\n \"data-column-index\"\n );\n\n const columnIndex = parseInt(columnIndexAttribute, 10);\n\n document.addEventListener(\"mouseup\", onMouseUp);\n document.addEventListener(\"mousemove\", onMouseMove);\n\n const initialColumnWidth = thElement.getBoundingClientRect().width;\n\n columnResizeDataRef.current = {\n startX: event.screenX,\n startY: event.screenY,\n eventsUnsubscription: () => {\n document.removeEventListener(\"mouseup\", onMouseUp);\n document.removeEventListener(\"mousemove\", onMouseMove);\n },\n columnIndex,\n initialColumnWidth,\n resizeColumn,\n minWidth: cols[columnIndex].info.props.minWidth || MIN_COLUMN_WIDTH,\n };\n\n event.preventDefault();\n },\n [resizeColumn]\n );\n}\n\n// Map values to array.\nexport function useFlatten<T>(map: Map<number, T>): T[] {\n return useMemo(() => {\n const entries = [...map.entries()].filter(([index, value]) => !!value);\n entries.sort((a, b) => a[0] - b[0]);\n return entries.map((x) => x[1]);\n }, [map]);\n}\n\nfunction useColMap<T>() {\n return useState<Map<number, GridColumnInfo<T>>>(new Map());\n}\n\nfunction useGrpMap() {\n return useState<Map<number, ColumnGroupProps>>(new Map());\n}\n\n// Instances of TableColumn and TableColumnGroup register/unregister themselves\n// using onColumnAdded, onColumnRemoved, onColumnGroupAdded, onColumnGroupRemoved\n// taken from context\n// The order of columns/groups is based on the order of \"children\" (Grid.props children)\nexport function useColumnRegistry<T>(children: ReactNode) {\n const [leftColMap, setLeftColMap] = useColMap<T>();\n const [rightColMap, setRightColMap] = useColMap<T>();\n const [midColMap, setMidColMap] = useColMap<T>();\n\n const [leftGrpMap, setLeftGrpMap] = useGrpMap();\n const [rightGrpMap, setRightGrpMap] = useGrpMap();\n const [midGrpMap, setMidGrpMap] = useGrpMap();\n\n const [editorMap, setEditorMap] = useState<Map<string, CellEditorInfo<T>>>(\n new Map()\n );\n\n const leftColInfos = useFlatten(leftColMap);\n const rightColInfos = useFlatten(rightColMap);\n const midColInfos = useFlatten(midColMap);\n\n const leftGrpPs = useFlatten(leftGrpMap);\n const rightGrpPs = useFlatten(rightGrpMap);\n const midGrpPs = useFlatten(midGrpMap);\n\n const leftGroups = useColumnGroups(leftGrpPs, 0);\n const midGroups = useColumnGroups(midGrpPs, leftGroups.length);\n const rightGroups = useColumnGroups(\n rightGrpPs,\n leftGroups.length + midGroups.length\n );\n if (leftGroups.length > 0) {\n last(leftGroups).columnSeparator = \"pinned\";\n }\n if (rightGroups.length > 0 && midGroups.length > 0) {\n last(midGroups).columnSeparator = \"pinned\";\n }\n\n const leftCols: GridColumnModel<T>[] = useCols(leftColInfos, 0, leftGroups);\n const midCols: GridColumnModel<T>[] = useCols(\n midColInfos,\n leftCols.length,\n midGroups\n );\n const rightCols: GridColumnModel<T>[] = useCols(\n rightColInfos,\n leftCols.length + midCols.length,\n rightGroups\n );\n if (leftCols.length > 0) {\n last(leftCols).separator = \"pinned\";\n }\n if (rightCols.length > 0 && midCols.length > 0) {\n last(midCols).separator = \"pinned\";\n }\n\n const chPosById = useRef<Map<string, number>>(new Map());\n\n const indexChildren = () => {\n const m = new Map<string, number>();\n let i = 0;\n const indexChildrenRec = (c: ReactNode) => {\n if (!c) {\n return;\n }\n Children.forEach(c, (x) => {\n if (isValidElement(x) && x.props.id !== undefined) {\n m.set(x.props.id, i);\n i++;\n indexChildrenRec(x.props.children);\n }\n });\n };\n indexChildrenRec(children);\n return m;\n };\n chPosById.current = indexChildren();\n\n const getChildIndex = useCallback((id: string): number => {\n const idx = chPosById.current.get(id);\n if (idx === undefined) {\n console.log(`Unknown child id \"${id}\"`);\n console.log(\n `Known ids: ${Array.from(chPosById.current.keys())\n .map((x) => `\"${x}\"`)\n .join(\", \")}`\n );\n throw new Error(`Unknown child id: \"${id}\"`);\n }\n return idx;\n }, []);\n\n const getColMapSet = (pinned?: GridColumnPin) =>\n pinned === \"left\"\n ? setLeftColMap\n : pinned === \"right\"\n ? setRightColMap\n : setMidColMap;\n\n const onColumnAdded = useCallback((columnInfo: GridColumnInfo<T>) => {\n // console.log(\n // `Column added: \"${columnInfo.props.id}\"; pinned: ${columnInfo.props.pinned}`\n // );\n const { id, pinned } = columnInfo.props;\n const index = getChildIndex(id);\n getColMapSet(pinned)(makeMapAdder(index, columnInfo));\n }, []);\n\n const onColumnRemoved = useCallback(\n (index: number, columnInfo: GridColumnInfo<T>) => {\n const { id, pinned } = columnInfo.props;\n getColMapSet(pinned)(makeMapDeleter(index));\n // console.log(`Column removed: \"${columnInfo.props.id}\"`);\n },\n []\n );\n\n const getGrpMapSet = (pinned?: GridColumnPin) =>\n pinned === \"left\"\n ? setLeftGrpMap\n : pinned === \"right\"\n ? setRightGrpMap\n : setMidGrpMap;\n\n const onColumnGroupAdded = useCallback((colGroupProps: ColumnGroupProps) => {\n const { id, pinned } = colGroupProps;\n getGrpMapSet(pinned)(makeMapAdder(getChildIndex(id), colGroupProps));\n // console.log(`Group added: \"${colGroupProps.name}\"`);\n }, []);\n\n const onColumnGroupRemoved = useCallback(\n (index: number, colGroupProps: ColumnGroupProps) => {\n const { id, pinned } = colGroupProps;\n getGrpMapSet(pinned)(makeMapDeleter(index));\n // console.log(`Group removed: \"${colGroupProps.name}\"`);\n },\n []\n );\n\n const onEditorAdded = useCallback((info: CellEditorInfo<T>) => {\n const { columnId } = info;\n setEditorMap(makeMapAdder(columnId, info));\n // console.log(`Editor added for column ${columnId}`);\n }, []);\n\n const onEditorRemoved = useCallback((info: CellEditorInfo<T>) => {\n const { columnId } = info;\n setEditorMap(makeMapDeleter(columnId));\n // console.log(`Editor removed for column ${columnId}`);\n }, []);\n\n const getEditor = useCallback(\n (columnId: string) => editorMap.get(columnId),\n [editorMap]\n );\n\n const contextValue: GridContext<T> = useMemo(\n () => ({\n getChildIndex,\n onColumnAdded,\n onColumnRemoved,\n onColumnGroupAdded,\n onColumnGroupRemoved,\n onEditorAdded,\n onEditorRemoved,\n getEditor,\n }),\n [\n getChildIndex,\n onColumnAdded,\n onColumnRemoved,\n onColumnGroupAdded,\n onColumnGroupRemoved,\n onEditorAdded,\n onEditorRemoved,\n getEditor,\n ]\n );\n\n return {\n leftCols,\n midCols,\n rightCols,\n leftGroups,\n midGroups,\n rightGroups,\n contextValue,\n };\n}\n\nexport type SelectRowsOptions = {\n rowIndex: number;\n isRange?: boolean;\n // Update selection incrementally based on previous state.\n // If rowIndex is selected then unselect it, otherwise select it.\n // This is what happens when the user clicks a row selection checkbox.\n // Shift + Space is another case when this behaviour is used.\n incremental?: boolean;\n // Unusual behaviour, applied on space keypress on a non-checkbox cell\n // The row is toggled, other rows unselected.\n unselectOtherRows?: boolean;\n};\n\n// Returns functions related to row selection.\n// TODO test use case when selection mode changes\nexport function useRowSelection<T>(\n rowKeyGetter: RowKeyGetter<T>,\n rowData: T[],\n defaultSelectedRowIdxs?: number[],\n selectedRowIdxs?: number[],\n rowSelectionMode?: GridRowSelectionMode,\n onRowSelected?: (selectedRowIdxs: number[]) => void\n) {\n const selectedRowIdxsProp = useMemo(() => {\n if (selectedRowIdxs == undefined) {\n return undefined;\n }\n return new Set(selectedRowIdxs);\n }, [selectedRowIdxs]);\n\n const defaultSelectedRowIdxsProp = useMemo(() => {\n if (defaultSelectedRowIdxs == undefined) {\n return new Set([]);\n }\n return new Set(defaultSelectedRowIdxs);\n }, [defaultSelectedRowIdxs]);\n\n const [selRowIdxs, setSelRowIdxs] = useControlled({\n controlled: selectedRowIdxsProp,\n default: defaultSelectedRowIdxsProp,\n name: \"useRowSelection\",\n state: \"selRowIdxs\",\n });\n\n const [lastSelRowIdx, setLastSelRowIdx] = useState<number | undefined>(\n undefined\n );\n\n useEffect(() => {\n if (\n (rowSelectionMode === \"none\" && selRowIdxs.size > 0) ||\n (rowSelectionMode === \"single\" && selRowIdxs.size > 1)\n ) {\n setSelRowIdxs(new Set());\n }\n }, [rowSelectionMode, selRowIdxs, setSelRowIdxs]);\n\n const selectRows = useCallback(\n ({\n rowIndex,\n isRange = false,\n incremental = false,\n unselectOtherRows = false,\n }: SelectRowsOptions) => {\n const idxFrom =\n rowSelectionMode === \"multi\" && lastSelRowIdx !== undefined && isRange\n ? lastSelRowIdx\n : undefined;\n\n let nextSelRowIdxs: Set<number> | undefined = undefined;\n let nextLastSelRowIdx: number | undefined = undefined;\n\n if (idxFrom === undefined) {\n if (unselectOtherRows) {\n if (incremental && selRowIdxs.has(rowIndex)) {\n nextSelRowIdxs = new Set<number>([]);\n nextLastSelRowIdx = undefined;\n } else {\n nextSelRowIdxs = new Set<number>([rowIndex]);\n nextLastSelRowIdx = rowIndex;\n }\n } else {\n if (incremental && rowSelectionMode === \"multi\") {\n nextSelRowIdxs = new Set<number>(selRowIdxs);\n if (nextSelRowIdxs.has(rowIndex)) {\n nextSelRowIdxs.delete(rowIndex);\n nextLastSelRowIdx = undefined;\n } else {\n nextSelRowIdxs.add(rowIndex);\n nextLastSelRowIdx = rowIndex;\n }\n } else {\n nextSelRowIdxs = new Set([rowIndex]);\n nextLastSelRowIdx = rowIndex;\n }\n }\n } else {\n const s = incremental ? new Set<number>(selRowIdxs) : new Set<number>();\n const idxs = [rowIndex, idxFrom];\n idxs.sort((a, b) => a - b);\n const rowIdxs: number[] = [];\n for (let i = idxs[0]; i <= idxs[1]; ++i) {\n rowIdxs.push(i);\n }\n if (selRowIdxs.has(rowIndex)) {\n rowIdxs.forEach((k) => s.delete(k));\n } else {\n rowIdxs.forEach((k) => s.add(k));\n }\n nextSelRowIdxs = s;\n nextLastSelRowIdx = rowIndex;\n }\n\n setSelRowIdxs(nextSelRowIdxs);\n setLastSelRowIdx(nextLastSelRowIdx);\n if (onRowSelected) {\n onRowSelected(Array.from(nextSelRowIdxs.keys()));\n }\n },\n [\n selRowIdxs,\n lastSelRowIdx,\n setSelRowIdxs,\n setLastSelRowIdx,\n rowData,\n rowKeyGetter,\n onRowSelected,\n ]\n );\n\n const isAllSelected = selRowIdxs.size === rowData.length;\n const isAnySelected = selRowIdxs.size > 0;\n\n const selectAll = useCallback(() => {\n const allRowIdxs = [...new Array(rowData.length).keys()].map((_, i) => i);\n setSelRowIdxs(new Set(allRowIdxs));\n if (onRowSelected) {\n onRowSelected(allRowIdxs);\n }\n }, [rowData, setSelRowIdxs]);\n\n const unselectAll = useCallback(() => {\n setSelRowIdxs(new Set());\n if (onRowSelected) {\n onRowSelected([]);\n }\n }, [setSelRowIdxs]);\n\n const onMouseDown = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n if (rowSelectionMode === \"none\") {\n return;\n }\n const target = event.target as HTMLElement;\n try {\n const [rowIndex] = getCellPosition(target);\n selectRows({\n rowIndex,\n isRange: event.shiftKey,\n incremental: event.metaKey || event.ctrlKey,\n });\n } catch (e) {}\n },\n [selectRows, rowSelectionMode]\n );\n\n return {\n onMouseDown,\n selRowIdxs,\n isAllSelected,\n isAnySelected,\n selectRows,\n selectAll,\n unselectAll,\n };\n}\n\nexport interface ColumnDragState {\n columnIndex: number;\n x: number;\n y: number;\n}\n\nconst COLUMN_DRAG_TOLERANCE = 10;\n\nexport interface Target {\n columnIndex: number;\n x: number;\n}\n\n// Returns onMouseDown handler to be attached to column headers (or any element\n// working as a drag-and-drop handle for moving columns)\n// Also returns dragState and active target (the drop target nearest to current\n// mouse positions.\nexport function useColumnMove<T = any>(\n columnMove: boolean | undefined,\n rootRef: RefObject<HTMLDivElement>,\n leftCols: GridColumnModel<T>[],\n midCols: GridColumnModel<T>[],\n rightCols: GridColumnModel<T>[],\n cols: GridColumnModel<T>[],\n scrollLeft: number,\n clientMidWidth: number,\n onColumnMove: GridColumnMoveHandler\n) {\n const moveRef = useRef<{\n unsubscribe: () => void;\n startScreenX: number;\n startScreenY: number;\n startHeaderX: number;\n startHeaderY: number;\n\n columnIndex: number;\n columnId: string;\n dragTriggered: boolean;\n onColumnMove: GridColumnMoveHandler;\n }>();\n\n const activeTargetRef = useRef<Target | undefined>(undefined);\n\n const [dragState, setDragState] = useState<ColumnDragState | undefined>(\n undefined\n );\n\n const columnDragStart = useCallback(\n (columnIndex: number, x: number, y: number) => {\n setDragState({ columnIndex, x, y });\n },\n [setDragState]\n );\n\n const columnDrag = useCallback(\n (x: number, y: number) => {\n setDragState((old) => {\n return { ...old!, x, y };\n });\n },\n [setDragState]\n );\n\n const columnDrop = useCallback(() => {\n const toIndex = activeTargetRef.current?.columnIndex;\n const fromIndex = moveRef.current?.columnIndex;\n const columnId = moveRef.current?.columnId;\n const handler = moveRef.current?.onColumnMove;\n if (\n toIndex !== undefined &&\n fromIndex !== undefined &&\n handler !== undefined &&\n columnId !== undefined\n ) {\n handler(columnId, fromIndex, toIndex);\n }\n setDragState(undefined);\n }, [setDragState]);\n\n const onMouseUp = useCallback(() => {\n if (moveRef.current?.dragTriggered) {\n columnDrop();\n }\n moveRef.current?.unsubscribe();\n moveRef.current = undefined;\n }, [columnDrop]);\n\n const onMouseMove = useCallback(\n (event: MouseEvent) => {\n const {\n columnIndex,\n startHeaderX,\n startHeaderY,\n startScreenX,\n startScreenY,\n dragTriggered,\n } = moveRef.current!;\n\n const shiftX = event.screenX - startScreenX;\n const shiftY = event.screenY - startScreenY;\n const x = startHeaderX + shiftX;\n const y = startHeaderY + shiftY;\n\n if (!dragTriggered) {\n if (\n Math.sqrt(shiftX * shiftX + shiftY * shiftY) > COLUMN_DRAG_TOLERANCE\n ) {\n moveRef.current!.dragTriggered = true;\n columnDragStart(columnIndex, x, y);\n }\n } else {\n columnDrag(x, y);\n }\n },\n [columnDrag]\n );\n\n const onColumnMoveHandleMouseDown: MouseEventHandler<HTMLDivElement> =\n useCallback(\n (event) => {\n const [columnIndexAttribute, thElement] = getAttribute(\n event.target as HTMLElement,\n \"data-column-index\"\n );\n const rootElement = rootRef.current!;\n\n document.addEventListener(\"mouseup\", onMouseUp);\n document.addEventListener(\"mousemove\", onMouseMove);\n\n const columnIndex = parseInt(columnIndexAttribute, 10);\n const columnId = cols[columnIndex].info.props.id;\n\n const thRect = thElement.getBoundingClientRect();\n const rootRect = rootElement!.getBoundingClientRect();\n\n const x = thRect.x - rootRect.x;\n const y = thRect.y - rootRect.y;\n\n moveRef.current = {\n unsubscribe: () => {\n document.removeEventListener(\"mouseup\", onMouseUp);\n document.removeEventListener(\"mousemove\", onMouseMove);\n },\n startScreenX: event.screenX,\n startScreenY: event.screenY,\n startHeaderX: x,\n startHeaderY: y,\n columnIndex,\n columnId,\n dragTriggered: false,\n onColumnMove,\n };\n\n event.preventDefault();\n },\n [columnDragStart, cols]\n );\n\n const onColumnMoveCancel = useCallback(() => {\n setDragState(undefined);\n moveRef.current?.unsubscribe();\n moveRef.current = undefined;\n }, [setDragState]);\n\n const targets = useMemo(() => {\n if (!dragState) {\n return undefined;\n }\n let ts: Target[] = [];\n let x = 0;\n leftCols.forEach((c, i) => {\n ts.push({ columnIndex: c.index, x });\n x += c.info.width;\n });\n let w = scrollLeft;\n let i = 0;\n while (w > 0 && i < midCols.length) {\n w -= midCols[i].info.width;\n i++;\n }\n x -= w;\n w += clientMidWidth;\n while (w > 0 && i < midCols.length) {\n const c = midCols[i];\n ts.push({ columnIndex: c.index, x });\n x += c.info.width;\n w -= c.info.width;\n i++;\n }\n if (rightCols.length > 0) {\n x += w;\n rightCols.forEach((c, i) => {\n ts.push({ columnIndex: c.index, x });\n x += c.info.width;\n });\n ts.push({ columnIndex: last(rightCols).index + 1, x });\n } else {\n ts.push({ columnIndex: last(midCols).index + 1, x });\n }\n return ts;\n }, [dragState, leftCols, midCols, rightCols, scrollLeft, clientMidWidth]);\n\n const activeTargetIdx = useMemo(() => {\n const x = dragState?.x;\n if (x === undefined || targets === undefined || targets.length < 1) {\n return undefined;\n }\n let i = 0;\n while (i < targets.length && targets[i].x < x) {\n i++;\n }\n if (i === 0) {\n return 0;\n }\n if (i >= targets.length) {\n return targets.length - 1;\n }\n return targets[i].x - x < x - targets[i - 1].x ? i : i - 1;\n }, [targets, dragState?.x]);\n\n const activeTarget =\n activeTargetIdx === undefined ? undefined : targets![activeTargetIdx];\n\n activeTargetRef.current = activeTarget;\n\n return {\n onColumnMoveHandleMouseDown,\n dragState,\n activeTarget,\n onColumnMoveCancel,\n };\n}\n\nexport interface CellPosition {\n rowIdx: number;\n colIdx: number;\n}\n\nexport interface CellRange {\n start: CellPosition;\n end: CellPosition;\n}\n\nexport function cellPositionEquals(a: CellPosition, b: CellPosition) {\n return a.rowIdx === b.rowIdx && a.colIdx === b.colIdx;\n}\n\nexport function cellRangeEquals(\n a: CellRange | undefined,\n b: CellRange | undefined\n) {\n if (!a) {\n return !b;\n }\n return (\n !!b &&\n cellPositionEquals(a.start, b.start) &&\n cellPositionEquals(a.end, b.end)\n );\n}\n\n// TODO test the use case when cellSelectionMode changes during dnd.\n// Cell range selection. This is experimental.\nexport function useRangeSelection(cellSelectionMode?: GridCellSelectionMode) {\n const mouseSelectionRef = useRef<{\n unsubscribe: () => void;\n start: CellPosition;\n }>();\n\n const keyboardSelectionRef = useRef<{\n start: CellPosition;\n }>();\n\n if (cellSelectionMode !== \"range\") {\n if (mouseSelectionRef.current) {\n mouseSelectionRef.current.unsubscribe();\n mouseSelectionRef.current = undefined;\n }\n if (keyboardSelectionRef.current) {\n keyboardSelectionRef.current = undefined;\n }\n }\n\n const [selectedCellRange, setSelectedCellRange] = useState<\n CellRange | undefined\n >(undefined);\n\n const onMouseMove = useCallback((event: MouseEvent) => {\n const { clientX, clientY } = event;\n const element = document.elementFromPoint(clientX, clientY) as HTMLElement;\n try {\n const [rowIdx, colIdx] = getCellPosition(element);\n\n setSelectedCellRange((old) => {\n const { start } = mouseSelectionRef.current!;\n const p: CellRange = { start, end: { rowIdx, colIdx } };\n return cellRangeEquals(old, p) ? old : p;\n });\n } catch (exc) {}\n }, []);\n\n const onMouseUp = useCallback((event: MouseEvent) => {\n if (!mouseSelectionRef.current) {\n throw new Error(`useRangeSelection state is not initialized`);\n }\n mouseSelectionRef.current.unsubscribe();\n mouseSelectionRef.current = undefined;\n }, []);\n\n const onCellMouseDown = useCallback(\n (event: React.MouseEvent) => {\n if (cellSelectionMode !== \"range\") {\n return;\n }\n const target = event.target as HTMLElement;\n try {\n const [rowIdx, colIdx] = getCellPosition(target);\n document.addEventListener(\"mouseup\", onMouseUp);\n document.addEventListener(\"mousemove\", onMouseMove);\n const pos: CellPosition = { rowIdx, colIdx };\n mouseSelectionRef.current = {\n start: pos,\n unsubscribe: () => {\n document.removeEventListener(\"mouseup\", onMouseUp);\n document.removeEventListener(\"mousemove\", onMouseMove);\n },\n };\n setSelectedCellRange({ start: pos, end: pos });\n } catch (exc) {}\n },\n [cellSelectionMode]\n );\n\n const onKeyboardRangeSelectionStart = useCallback((pos: CellPosition) => {\n keyboardSelectionRef.current = {\n start: pos,\n };\n }, []);\n\n const onKeyboardRangeSelectionEnd = useCallback(() => {\n keyboardSelectionRef.current = undefined;\n }, []);\n\n const onCursorMove = useCallback((pos: CellPosition) => {\n if (!keyboardSelectionRef.current) {\n return;\n }\n setSelectedCellRange((old) => {\n if (!keyboardSelectionRef.current) {\n return old;\n }\n const { start } = keyboardSelectionRef.current;\n const p: CellRange = { start, end: pos };\n return cellRangeEquals(old, p) ? old : p;\n });\n }, []);\n\n const selectRange = useCallback((range: CellRange) => {\n if (cellSelectionMode !== \"range\") {\n return;\n }\n setSelectedCellRange(range);\n }, []);\n\n return {\n selectedCellRange,\n onCellMouseDown,\n onKeyboardRangeSelectionStart,\n onKeyboardRangeSelectionEnd,\n onCursorMove,\n selectRange,\n };\n}\n\nexport function useFocusableContent<T extends HTMLElement>() {\n const ref = useRef<T>(null);\n const [isFocusableContent, setFocusableContent] = useState<boolean>(false);\n\n const onFocus: FocusEventHandler<T> = (event) => {\n if (event.target === ref.current) {\n const nestedInteractive = ref.current.querySelector(`[tabindex=\"0\"]`);\n if (nestedInteractive) {\n (nestedInteractive as HTMLElement).focus();\n setFocusableContent(true);\n }\n }\n };\n\n return { ref, isFocusableContent, onFocus };\n}\n"],"names":["useRef","useEffect","useMemo","NumberRange","Children","isValidElement","useCallback","getAttribute","useState","makeMapAdder","makeMapDeleter","useControlled","getCellPosition","i"],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
function getAttribute(element, attributeName) {
|
|
6
|
+
if (!element || !element.hasAttribute) {
|
|
7
|
+
throw new Error(`Attribute "${attributeName}" not found`);
|
|
8
|
+
}
|
|
9
|
+
if (element.hasAttribute(attributeName)) {
|
|
10
|
+
return [element.getAttribute(attributeName), element];
|
|
11
|
+
}
|
|
12
|
+
return getAttribute(element.parentNode, attributeName);
|
|
13
|
+
}
|
|
14
|
+
function getRowKeyAttribute(element) {
|
|
15
|
+
const [rowKey] = getAttribute(element, "data-row-key");
|
|
16
|
+
return rowKey;
|
|
17
|
+
}
|
|
18
|
+
function getFocusablePosition(element) {
|
|
19
|
+
const [columnIndexAttr, cellElement] = getAttribute(
|
|
20
|
+
element,
|
|
21
|
+
"data-column-index"
|
|
22
|
+
);
|
|
23
|
+
const columnIndex = parseInt(columnIndexAttr, 10);
|
|
24
|
+
const role = cellElement.getAttribute("role");
|
|
25
|
+
if (role === "columnheader") {
|
|
26
|
+
return { part: "header", columnIndex, rowIndex: 0 };
|
|
27
|
+
}
|
|
28
|
+
const [rowIndexAttr] = getAttribute(element, "data-row-index");
|
|
29
|
+
const rowIndex = parseInt(rowIndexAttr, 10);
|
|
30
|
+
return { part: "body", rowIndex, columnIndex };
|
|
31
|
+
}
|
|
32
|
+
function getCellPosition(element) {
|
|
33
|
+
const [rowIndexAttr] = getAttribute(element, "data-row-index");
|
|
34
|
+
const [columnIndexAttr] = getAttribute(element, "data-column-index");
|
|
35
|
+
const rowIndex = parseInt(rowIndexAttr, 10);
|
|
36
|
+
const columnIndex = parseInt(columnIndexAttr, 10);
|
|
37
|
+
return [rowIndex, columnIndex];
|
|
38
|
+
}
|
|
39
|
+
const addMapItem = (old, k, v) => {
|
|
40
|
+
const m = new Map(old);
|
|
41
|
+
m.set(k, v);
|
|
42
|
+
return m;
|
|
43
|
+
};
|
|
44
|
+
const makeMapAdder = (k, v) => (old) => addMapItem(old, k, v);
|
|
45
|
+
const deleteMapItem = (old, k) => {
|
|
46
|
+
const m = new Map(old);
|
|
47
|
+
m.delete(k);
|
|
48
|
+
return m;
|
|
49
|
+
};
|
|
50
|
+
const makeMapDeleter = (k) => (old) => deleteMapItem(old, k);
|
|
51
|
+
const clamp = (x, min, max) => {
|
|
52
|
+
if (x == void 0) {
|
|
53
|
+
x = 0;
|
|
54
|
+
}
|
|
55
|
+
if (x < min) {
|
|
56
|
+
return min;
|
|
57
|
+
}
|
|
58
|
+
if (x > max) {
|
|
59
|
+
return max;
|
|
60
|
+
}
|
|
61
|
+
return x;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
exports.clamp = clamp;
|
|
65
|
+
exports.getAttribute = getAttribute;
|
|
66
|
+
exports.getCellPosition = getCellPosition;
|
|
67
|
+
exports.getFocusablePosition = getFocusablePosition;
|
|
68
|
+
exports.getRowKeyAttribute = getRowKeyAttribute;
|
|
69
|
+
exports.makeMapAdder = makeMapAdder;
|
|
70
|
+
exports.makeMapDeleter = makeMapDeleter;
|
|
71
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../src/internal/utils.ts"],"sourcesContent":["import { FocusedPart } from \"../CursorContext\";\n\nexport function getAttribute(\n element: HTMLElement,\n attributeName: string\n): [string, HTMLElement] {\n if (!element || !element.hasAttribute) {\n throw new Error(`Attribute \"${attributeName}\" not found`);\n }\n if (element.hasAttribute(attributeName)) {\n return [element.getAttribute(attributeName) as string, element];\n }\n return getAttribute(element.parentNode as HTMLElement, attributeName);\n}\n\nexport function getRowIndexAttribute(element: HTMLElement): number {\n const [attribute] = getAttribute(element, \"data-row-index\");\n return parseInt(attribute, 10);\n}\n\nexport function getRowKeyAttribute(element: HTMLElement): string {\n const [rowKey] = getAttribute(element, \"data-row-key\");\n return rowKey;\n}\n\nexport function getFocusablePosition(element: HTMLElement): {\n part: FocusedPart;\n columnIndex: number;\n rowIndex: number;\n} {\n const [columnIndexAttr, cellElement] = getAttribute(\n element,\n \"data-column-index\"\n );\n const columnIndex = parseInt(columnIndexAttr, 10);\n const role = cellElement.getAttribute(\"role\");\n if (role === \"columnheader\") {\n return { part: \"header\", columnIndex, rowIndex: 0 };\n }\n const [rowIndexAttr] = getAttribute(element, \"data-row-index\");\n const rowIndex = parseInt(rowIndexAttr, 10);\n return { part: \"body\", rowIndex, columnIndex };\n}\n\nexport function getCellPosition(element: HTMLElement): [number, number] {\n const [rowIndexAttr] = getAttribute(element, \"data-row-index\");\n const [columnIndexAttr] = getAttribute(element, \"data-column-index\");\n const rowIndex = parseInt(rowIndexAttr, 10);\n const columnIndex = parseInt(columnIndexAttr, 10);\n return [rowIndex, columnIndex];\n}\n\nconst addMapItem = <K, V>(old: Map<K, V>, k: K, v: V): Map<K, V> => {\n const m = new Map(old);\n m.set(k, v);\n return m;\n};\n\nexport const makeMapAdder =\n <K, V>(k: K, v: V) =>\n (old: Map<K, V>) =>\n addMapItem(old, k, v);\n\nconst deleteMapItem = <K, V>(old: Map<K, V>, k: K): Map<K, V> => {\n const m = new Map(old);\n m.delete(k);\n return m;\n};\n\nexport const makeMapDeleter =\n <K, V>(k: K) =>\n (old: Map<K, V>) =>\n deleteMapItem(old, k);\n\nexport const clamp = (x: number | undefined, min: number, max: number) => {\n if (x == undefined) {\n x = 0;\n }\n if (x < min) {\n return min;\n }\n if (x > max) {\n return max;\n }\n return x;\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
function styleInject(css, ref) {
|
|
2
|
+
if ( ref === void 0 ) ref = {};
|
|
3
|
+
var insertAt = ref.insertAt;
|
|
4
|
+
|
|
5
|
+
if (!css || typeof document === 'undefined') { return; }
|
|
6
|
+
|
|
7
|
+
var head = document.head || document.getElementsByTagName('head')[0];
|
|
8
|
+
var style = document.createElement('style');
|
|
9
|
+
style.type = 'text/css';
|
|
10
|
+
|
|
11
|
+
if (insertAt === 'top') {
|
|
12
|
+
if (head.firstChild) {
|
|
13
|
+
head.insertBefore(style, head.firstChild);
|
|
14
|
+
} else {
|
|
15
|
+
head.appendChild(style);
|
|
16
|
+
}
|
|
17
|
+
} else {
|
|
18
|
+
head.appendChild(style);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (style.styleSheet) {
|
|
22
|
+
style.styleSheet.cssText = css;
|
|
23
|
+
} else {
|
|
24
|
+
style.appendChild(document.createTextNode(css));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export { styleInject as default };
|
|
29
|
+
//# sourceMappingURL=style-inject.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style-inject.es.js","sources":["../../../node_modules/style-inject/dist/style-inject.es.js"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n"],"names":[],"mappings":"AAAA,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;AAC/B,EAAE,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;AACjC,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,EAAE,OAAO,EAAE;AAC1D;AACA,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC9C,EAAE,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;AAC1B;AACA,EAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC1B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAChD,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC9B,KAAK;AACL,GAAG,MAAM;AACT,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5B,GAAG;AACH;AACA,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;AACxB,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC;AACnC,GAAG,MAAM;AACT,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;AACpD,GAAG;AACH;;;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import styleInject from '../../../node_modules/style-inject/dist/style-inject.es.js';
|
|
2
|
+
|
|
3
|
+
var css_248z = ".saltGridBaseCell-valueContainer {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n box-sizing: border-box;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: calc(var(--grid-row-height) - 2px);\n border-style: solid;\n border-width: 1px;\n border-color: transparent;\n --grid-cell-padding: 0 calc(var(--grid-padding) - 1px);\n}\n\n.saltGridCell-editable .saltGridBaseCell-valueContainer {\n border-style: solid;\n border-width: 1px;\n border-color: var(--grid-editableCell-borderColor);\n}\n\n.saltGridCell-editable:hover .saltGridBaseCell-valueContainer {\n border-color: var(--grid-editableCell-borderColor-hover);\n}\n\n.saltGridCell-editable:focus .saltGridBaseCell-valueContainer {\n border-color: transparent;\n}\n";
|
|
4
|
+
styleInject(css_248z);
|
|
5
|
+
|
|
6
|
+
export { css_248z as default };
|
|
7
|
+
//# sourceMappingURL=BaseCell.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseCell.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import cn from 'classnames';
|
|
3
|
+
import './BaseCell.css.js';
|
|
4
|
+
import { makePrefixer } from '@salt-ds/core';
|
|
5
|
+
import { Cell } from './internal/Cell.js';
|
|
6
|
+
import './internal/CellMeasure.js';
|
|
7
|
+
import { Cursor } from './internal/Cursor.js';
|
|
8
|
+
import './internal/GroupHeaderRow.js';
|
|
9
|
+
import './internal/HeaderRow.js';
|
|
10
|
+
import './internal/LeftPart.js';
|
|
11
|
+
import './internal/MiddlePart.js';
|
|
12
|
+
import './internal/RightPart.js';
|
|
13
|
+
import './internal/Scrollable.js';
|
|
14
|
+
import 'react';
|
|
15
|
+
import './internal/TableRow.js';
|
|
16
|
+
import './SelectionContext.js';
|
|
17
|
+
import './EditorContext.js';
|
|
18
|
+
import './CursorContext.js';
|
|
19
|
+
import { useFocusableContent } from './internal/gridHooks.js';
|
|
20
|
+
import './internal/TopLeftPart.js';
|
|
21
|
+
import './internal/TopPart.js';
|
|
22
|
+
import './internal/TopRightPart.js';
|
|
23
|
+
import './internal/FakeCell.css.js';
|
|
24
|
+
import './internal/DefaultCellValue.js';
|
|
25
|
+
import { CornerTag } from './CornerTag.js';
|
|
26
|
+
|
|
27
|
+
const withBaseName = makePrefixer("saltGridBaseCell");
|
|
28
|
+
function getCellId(rowKey, column) {
|
|
29
|
+
return `R${rowKey}C${column.info.props.id}`;
|
|
30
|
+
}
|
|
31
|
+
function BaseCell(props) {
|
|
32
|
+
const {
|
|
33
|
+
column,
|
|
34
|
+
className,
|
|
35
|
+
row,
|
|
36
|
+
style,
|
|
37
|
+
isFocused,
|
|
38
|
+
isSelected,
|
|
39
|
+
isEditable,
|
|
40
|
+
children
|
|
41
|
+
} = props;
|
|
42
|
+
const { ref, isFocusableContent, onFocus } = useFocusableContent();
|
|
43
|
+
return /* @__PURE__ */ jsxs(Cell, {
|
|
44
|
+
ref,
|
|
45
|
+
id: getCellId(row.key, column),
|
|
46
|
+
"data-row-index": row.index,
|
|
47
|
+
"data-column-index": column.index,
|
|
48
|
+
"data-testid": isFocused ? "grid-cell-focused" : void 0,
|
|
49
|
+
"aria-colindex": column.index + 1,
|
|
50
|
+
role: "gridcell",
|
|
51
|
+
separator: column.separator,
|
|
52
|
+
isSelected,
|
|
53
|
+
isEditable,
|
|
54
|
+
className,
|
|
55
|
+
style,
|
|
56
|
+
tabIndex: isFocused && !isFocusableContent ? 0 : -1,
|
|
57
|
+
onFocus,
|
|
58
|
+
children: [
|
|
59
|
+
/* @__PURE__ */ jsx("div", {
|
|
60
|
+
className: cn(withBaseName("valueContainer")),
|
|
61
|
+
children
|
|
62
|
+
}),
|
|
63
|
+
isFocused && isEditable && /* @__PURE__ */ jsx(CornerTag, {
|
|
64
|
+
focusOnly: true
|
|
65
|
+
}),
|
|
66
|
+
isFocused && !isFocusableContent && /* @__PURE__ */ jsx(Cursor, {})
|
|
67
|
+
]
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export { BaseCell, getCellId };
|
|
72
|
+
//# sourceMappingURL=BaseCell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseCell.js","sources":["../src/BaseCell.tsx"],"sourcesContent":["import cn from \"classnames\";\nimport \"./BaseCell.css\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { GridCellProps } from \"./GridColumn\";\nimport { GridColumnModel } from \"./Grid\";\nimport { Cell, Cursor, useFocusableContent } from \"./internal\";\nimport { CornerTag } from \"./CornerTag\";\n\nconst withBaseName = makePrefixer(\"saltGridBaseCell\");\n\nexport function getCellId<T>(rowKey: string, column: GridColumnModel<T>) {\n return `R${rowKey}C${column.info.props.id}`;\n}\n\n// Default component for grid cells. Provides selection, on-hover highlighting,\n// cursor etc.\nexport function BaseCell<T>(props: GridCellProps<T>) {\n const {\n column,\n className,\n row,\n style,\n isFocused,\n isSelected,\n isEditable,\n children,\n } = props;\n\n const { ref, isFocusableContent, onFocus } =\n useFocusableContent<HTMLTableCellElement>();\n\n return (\n <Cell\n ref={ref}\n id={getCellId(row.key, column)}\n data-row-index={row.index}\n data-column-index={column.index}\n data-testid={isFocused ? \"grid-cell-focused\" : undefined}\n // aria-colindex uses one-based array indexing\n aria-colindex={column.index + 1}\n role=\"gridcell\"\n separator={column.separator}\n isSelected={isSelected}\n isEditable={isEditable}\n className={className}\n style={style}\n tabIndex={isFocused && !isFocusableContent ? 0 : -1}\n onFocus={onFocus}\n >\n <div className={cn(withBaseName(\"valueContainer\"))}>{children}</div>\n {isFocused && isEditable && <CornerTag focusOnly={true} />}\n {isFocused && !isFocusableContent && <Cursor />}\n </Cell>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,MAAM,YAAA,GAAe,aAAa,kBAAkB,CAAA,CAAA;AAEpC,SAAA,SAAA,CAAa,QAAgB,MAA4B,EAAA;AACvE,EAAA,OAAO,CAAI,CAAA,EAAA,MAAA,CAAA,CAAA,EAAU,MAAO,CAAA,IAAA,CAAK,KAAM,CAAA,EAAA,CAAA,CAAA,CAAA;AACzC,CAAA;AAIO,SAAS,SAAY,KAAyB,EAAA;AACnD,EAAM,MAAA;AAAA,IACJ,MAAA;AAAA,IACA,SAAA;AAAA,IACA,GAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,GACE,GAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,EAAE,GAAA,EAAK,kBAAoB,EAAA,OAAA,KAC/B,mBAA0C,EAAA,CAAA;AAE5C,EAAA,uBACG,IAAA,CAAA,IAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,EAAI,EAAA,SAAA,CAAU,GAAI,CAAA,GAAA,EAAK,MAAM,CAAA;AAAA,IAC7B,kBAAgB,GAAI,CAAA,KAAA;AAAA,IACpB,qBAAmB,MAAO,CAAA,KAAA;AAAA,IAC1B,aAAA,EAAa,YAAY,mBAAsB,GAAA,KAAA,CAAA;AAAA,IAE/C,eAAA,EAAe,OAAO,KAAQ,GAAA,CAAA;AAAA,IAC9B,IAAK,EAAA,UAAA;AAAA,IACL,WAAW,MAAO,CAAA,SAAA;AAAA,IAClB,UAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAU,EAAA,SAAA,IAAa,CAAC,kBAAA,GAAqB,CAAI,GAAA,CAAA,CAAA;AAAA,IACjD,OAAA;AAAA,IAEA,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,KAAA,EAAA;AAAA,QAAI,SAAW,EAAA,EAAA,CAAG,YAAa,CAAA,gBAAgB,CAAC,CAAA;AAAA,QAAI,QAAA;AAAA,OAAS,CAAA;AAAA,MAC7D,SAAA,IAAa,8BAAe,GAAA,CAAA,SAAA,EAAA;AAAA,QAAU,SAAW,EAAA,IAAA;AAAA,OAAM,CAAA;AAAA,MACvD,SAAa,IAAA,CAAC,kBAAsB,oBAAA,GAAA,CAAC,MAAO,EAAA,EAAA,CAAA;AAAA,KAAA;AAAA,GAC/C,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { useMemo, useEffect } from 'react';
|
|
2
|
+
import { useGridContext } from './GridContext.js';
|
|
3
|
+
|
|
4
|
+
function CellEditor(props) {
|
|
5
|
+
const { children } = props;
|
|
6
|
+
const columnId = props.columnId;
|
|
7
|
+
const grid = useGridContext();
|
|
8
|
+
const info = useMemo(
|
|
9
|
+
() => ({
|
|
10
|
+
columnId,
|
|
11
|
+
children
|
|
12
|
+
}),
|
|
13
|
+
[columnId, children]
|
|
14
|
+
);
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
grid.onEditorAdded(info);
|
|
17
|
+
return () => {
|
|
18
|
+
grid.onEditorRemoved(info);
|
|
19
|
+
};
|
|
20
|
+
}, [info]);
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { CellEditor };
|
|
25
|
+
//# sourceMappingURL=CellEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CellEditor.js","sources":["../src/CellEditor.tsx"],"sourcesContent":["import { ReactNode, useEffect, useMemo } from \"react\";\nimport { useGridContext } from \"./GridContext\";\n\nexport interface CellEditorInfo<T> {\n columnId: string;\n children: ReactNode;\n}\n\nexport interface CellEditorProps<T> {\n columnId?: string;\n children: ReactNode;\n}\n\n// Non-rendered component. Used as a child of GridColumn. Children prop is\n// expected to be a specific implementation of cell editor (text, dropdown etc)\n// Registers the editor in the grid. The grid then renders the editor when\n// edit mode is activated.\n// TODO This feature is experimental.\nexport function CellEditor<T>(props: CellEditorProps<T>) {\n const { children } = props;\n const columnId = props.columnId!;\n const grid = useGridContext();\n\n const info = useMemo(\n () => ({\n columnId,\n children,\n }),\n [columnId, children]\n );\n\n useEffect(() => {\n grid.onEditorAdded(info);\n return () => {\n grid.onEditorRemoved(info);\n };\n }, [info]);\n\n return null;\n}\n"],"names":[],"mappings":";;;AAkBO,SAAS,WAAc,KAA2B,EAAA;AACvD,EAAM,MAAA,EAAE,UAAa,GAAA,KAAA,CAAA;AACrB,EAAA,MAAM,WAAW,KAAM,CAAA,QAAA,CAAA;AACvB,EAAA,MAAM,OAAO,cAAe,EAAA,CAAA;AAE5B,EAAA,MAAM,IAAO,GAAA,OAAA;AAAA,IACX,OAAO;AAAA,MACL,QAAA;AAAA,MACA,QAAA;AAAA,KACF,CAAA;AAAA,IACA,CAAC,UAAU,QAAQ,CAAA;AAAA,GACrB,CAAA;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAA,CAAK,cAAc,IAAI,CAAA,CAAA;AACvB,IAAA,OAAO,MAAM;AACX,MAAA,IAAA,CAAK,gBAAgB,IAAI,CAAA,CAAA;AAAA,KAC3B,CAAA;AAAA,GACF,EAAG,CAAC,IAAI,CAAC,CAAA,CAAA;AAET,EAAO,OAAA,IAAA,CAAA;AACT;;;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import styleInject from '../../../node_modules/style-inject/dist/style-inject.es.js';
|
|
2
|
+
|
|
3
|
+
var css_248z = ".saltGridCheckboxContainer {\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n";
|
|
4
|
+
styleInject(css_248z);
|
|
5
|
+
|
|
6
|
+
export { css_248z as default };
|
|
7
|
+
//# sourceMappingURL=CheckboxCell.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckboxCell.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createContext, useContext } from 'react';
|
|
2
|
+
|
|
3
|
+
const ColumnDataContext = createContext(void 0);
|
|
4
|
+
const useColumnDataContext = () => {
|
|
5
|
+
const c = useContext(ColumnDataContext);
|
|
6
|
+
if (!c) {
|
|
7
|
+
throw new Error(`useColumnDataContext invoked outside of a Grid`);
|
|
8
|
+
}
|
|
9
|
+
return c;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export { ColumnDataContext, useColumnDataContext };
|
|
13
|
+
//# sourceMappingURL=ColumnDataContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColumnDataContext.js","sources":["../src/ColumnDataContext.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { GridColumnModel } from \"./Grid\";\n\nexport interface ColumnDataContext<T> {\n getColById: (id: string) => GridColumnModel<T> | undefined;\n}\n\nexport const ColumnDataContext = createContext<\n ColumnDataContext<any> | undefined\n>(undefined);\n\nexport const useColumnDataContext = () => {\n const c = useContext(ColumnDataContext);\n if (!c) {\n throw new Error(`useColumnDataContext invoked outside of a Grid`);\n }\n return c;\n};\n"],"names":[],"mappings":";;AAOa,MAAA,iBAAA,GAAoB,cAE/B,KAAS,CAAA,EAAA;AAEJ,MAAM,uBAAuB,MAAM;AACxC,EAAM,MAAA,CAAA,GAAI,WAAW,iBAAiB,CAAA,CAAA;AACtC,EAAA,IAAI,CAAC,CAAG,EAAA;AACN,IAAM,MAAA,IAAI,MAAM,CAAgD,8CAAA,CAAA,CAAA,CAAA;AAAA,GAClE;AACA,EAAO,OAAA,CAAA,CAAA;AACT;;;;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createContext, useContext } from 'react';
|
|
2
|
+
|
|
3
|
+
const ColumnDragContext = createContext(
|
|
4
|
+
void 0
|
|
5
|
+
);
|
|
6
|
+
const useColumnDragContext = () => {
|
|
7
|
+
const c = useContext(ColumnDragContext);
|
|
8
|
+
if (!c) {
|
|
9
|
+
throw new Error(`useColumnDragContext invoked outside of a Grid`);
|
|
10
|
+
}
|
|
11
|
+
return c;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export { ColumnDragContext, useColumnDragContext };
|
|
15
|
+
//# sourceMappingURL=ColumnDragContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColumnDragContext.js","sources":["../src/ColumnDragContext.ts"],"sourcesContent":["import { createContext, MouseEventHandler, useContext } from \"react\";\n\nexport interface ColumnDragContext {\n columnMove?: boolean;\n onColumnMoveHandleMouseDown: MouseEventHandler<HTMLDivElement>;\n}\n\nexport const ColumnDragContext = createContext<ColumnDragContext | undefined>(\n undefined\n);\n\nexport const useColumnDragContext = () => {\n const c = useContext(ColumnDragContext);\n if (!c) {\n throw new Error(`useColumnDragContext invoked outside of a Grid`);\n }\n return c;\n};\n"],"names":[],"mappings":";;AAOO,MAAM,iBAAoB,GAAA,aAAA;AAAA,EAC/B,KAAA,CAAA;AACF,EAAA;AAEO,MAAM,uBAAuB,MAAM;AACxC,EAAM,MAAA,CAAA,GAAI,WAAW,iBAAiB,CAAA,CAAA;AACtC,EAAA,IAAI,CAAC,CAAG,EAAA;AACN,IAAM,MAAA,IAAI,MAAM,CAAgD,8CAAA,CAAA,CAAA,CAAA;AAAA,GAClE;AACA,EAAO,OAAA,CAAA,CAAA;AACT;;;;"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { useGridContext } from './GridContext.js';
|
|
3
|
+
import { useRef, useEffect, Children, isValidElement, cloneElement } from 'react';
|
|
4
|
+
|
|
5
|
+
function ColumnGroup(props) {
|
|
6
|
+
const pinned = props.pinned || null;
|
|
7
|
+
const indexRef = useRef();
|
|
8
|
+
const grid = useGridContext();
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
indexRef.current = grid.getChildIndex(props.id);
|
|
11
|
+
grid.onColumnGroupAdded(props);
|
|
12
|
+
return () => {
|
|
13
|
+
grid.onColumnGroupRemoved(indexRef.current, props);
|
|
14
|
+
};
|
|
15
|
+
});
|
|
16
|
+
const childrenWithPinnedOverridden = Children.map(props.children, (child) => {
|
|
17
|
+
if (isValidElement(child)) {
|
|
18
|
+
return cloneElement(child, { pinned });
|
|
19
|
+
}
|
|
20
|
+
return child;
|
|
21
|
+
});
|
|
22
|
+
return /* @__PURE__ */ jsx(Fragment, {
|
|
23
|
+
children: childrenWithPinnedOverridden
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export { ColumnGroup };
|
|
28
|
+
//# sourceMappingURL=ColumnGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColumnGroup.js","sources":["../src/ColumnGroup.tsx"],"sourcesContent":["import { useGridContext } from \"./GridContext\";\nimport {\n Children,\n cloneElement,\n ComponentType,\n isValidElement,\n ReactNode,\n useEffect,\n useRef,\n} from \"react\";\nimport { GridColumnPin } from \"./GridColumn\";\nimport { GridColumnGroupModel } from \"./Grid\";\n\nexport interface ColumnGroupCellProps {\n group: GridColumnGroupModel;\n}\n\nexport interface ColumnGroupCellValueProps {\n group: GridColumnGroupModel;\n}\n\nexport interface ColumnGroupProps {\n children: ReactNode;\n name: string;\n id: string;\n pinned?: GridColumnPin;\n headerComponent?: ComponentType<ColumnGroupCellProps>;\n headerValueComponent?: ComponentType<ColumnGroupCellValueProps>;\n}\n\nexport function ColumnGroup(props: ColumnGroupProps) {\n const pinned = props.pinned || null;\n const indexRef = useRef<number>();\n const grid = useGridContext();\n useEffect(() => {\n indexRef.current = grid.getChildIndex(props.id);\n grid.onColumnGroupAdded(props);\n return () => {\n grid.onColumnGroupRemoved(indexRef.current!, props);\n };\n });\n const childrenWithPinnedOverridden = Children.map(props.children, (child) => {\n if (isValidElement(child)) {\n return cloneElement(child, { pinned });\n }\n return child;\n });\n return <>{childrenWithPinnedOverridden}</>;\n}\n"],"names":[],"mappings":";;;;AA8BO,SAAS,YAAY,KAAyB,EAAA;AACnD,EAAM,MAAA,MAAA,GAAS,MAAM,MAAU,IAAA,IAAA,CAAA;AAC/B,EAAA,MAAM,WAAW,MAAe,EAAA,CAAA;AAChC,EAAA,MAAM,OAAO,cAAe,EAAA,CAAA;AAC5B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,QAAA,CAAS,OAAU,GAAA,IAAA,CAAK,aAAc,CAAA,KAAA,CAAM,EAAE,CAAA,CAAA;AAC9C,IAAA,IAAA,CAAK,mBAAmB,KAAK,CAAA,CAAA;AAC7B,IAAA,OAAO,MAAM;AACX,MAAK,IAAA,CAAA,oBAAA,CAAqB,QAAS,CAAA,OAAA,EAAU,KAAK,CAAA,CAAA;AAAA,KACpD,CAAA;AAAA,GACD,CAAA,CAAA;AACD,EAAA,MAAM,+BAA+B,QAAS,CAAA,GAAA,CAAI,KAAM,CAAA,QAAA,EAAU,CAAC,KAAU,KAAA;AAC3E,IAAI,IAAA,cAAA,CAAe,KAAK,CAAG,EAAA;AACzB,MAAA,OAAO,YAAa,CAAA,KAAA,EAAO,EAAE,MAAA,EAAQ,CAAA,CAAA;AAAA,KACvC;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACR,CAAA,CAAA;AACD,EAAO,uBAAA,GAAA,CAAA,QAAA,EAAA;AAAA,IAAG,QAAA,EAAA,4BAAA;AAAA,GAA6B,CAAA,CAAA;AACzC;;;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import styleInject from '../../../node_modules/style-inject/dist/style-inject.es.js';
|
|
2
|
+
|
|
3
|
+
var css_248z = ".saltGridCornerTag,\n:focus .saltGridCornerTag-focusOnly {\n position: absolute;\n top: 0;\n left: 0;\n width: 0;\n height: 0;\n border-top: 0 solid transparent;\n border-left: var(--grid-editableCell-cornerTag-size) solid var(--grid-cursor-borderColor);\n border-bottom: var(--grid-editableCell-cornerTag-size) solid transparent;\n}\n";
|
|
4
|
+
styleInject(css_248z);
|
|
5
|
+
|
|
6
|
+
export { css_248z as default };
|
|
7
|
+
//# sourceMappingURL=CornerTag.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CornerTag.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import './CornerTag.css.js';
|
|
3
|
+
|
|
4
|
+
function CornerTag(props) {
|
|
5
|
+
return /* @__PURE__ */ jsx("div", {
|
|
6
|
+
className: props.focusOnly ? "saltGridCornerTag-focusOnly" : "saltGridCornerTag"
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { CornerTag };
|
|
11
|
+
//# sourceMappingURL=CornerTag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CornerTag.js","sources":["../src/CornerTag.tsx"],"sourcesContent":["import \"./CornerTag.css\";\n\nexport interface CornerTagProps {\n focusOnly?: boolean; // Show when the parent is focused, hide when not\n}\n\nexport function CornerTag(props: CornerTagProps) {\n return (\n <div\n className={\n props.focusOnly ? \"saltGridCornerTag-focusOnly\" : \"saltGridCornerTag\"\n }\n />\n );\n}\n"],"names":[],"mappings":";;;AAMO,SAAS,UAAU,KAAuB,EAAA;AAC/C,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IACC,SAAA,EACE,KAAM,CAAA,SAAA,GAAY,6BAAgC,GAAA,mBAAA;AAAA,GAEtD,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createContext, useContext } from 'react';
|
|
2
|
+
|
|
3
|
+
const CursorContext = createContext(
|
|
4
|
+
void 0
|
|
5
|
+
);
|
|
6
|
+
const useCursorContext = () => {
|
|
7
|
+
const c = useContext(CursorContext);
|
|
8
|
+
if (!c) {
|
|
9
|
+
throw new Error(`useCursorContext invoked outside of a Grid`);
|
|
10
|
+
}
|
|
11
|
+
return c;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export { CursorContext, useCursorContext };
|
|
15
|
+
//# sourceMappingURL=CursorContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CursorContext.js","sources":["../src/CursorContext.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\nexport type FocusedPart = \"header\" | \"body\";\n\nexport interface CursorContext {\n isFocused: boolean;\n cursorRowIdx: number | undefined;\n cursorColIdx: number | undefined;\n moveCursor: (part: FocusedPart, rowIdx: number, colIdx: number) => void;\n focusedPart: FocusedPart;\n headerIsFocusable: boolean;\n}\n\nexport const CursorContext = createContext<CursorContext | undefined>(\n undefined\n);\nexport const useCursorContext = () => {\n const c = useContext(CursorContext);\n if (!c) {\n throw new Error(`useCursorContext invoked outside of a Grid`);\n }\n return c;\n};\n"],"names":[],"mappings":";;AAaO,MAAM,aAAgB,GAAA,aAAA;AAAA,EAC3B,KAAA,CAAA;AACF,EAAA;AACO,MAAM,mBAAmB,MAAM;AACpC,EAAM,MAAA,CAAA,GAAI,WAAW,aAAa,CAAA,CAAA;AAClC,EAAA,IAAI,CAAC,CAAG,EAAA;AACN,IAAM,MAAA,IAAI,MAAM,CAA4C,0CAAA,CAAA,CAAA,CAAA;AAAA,GAC9D;AACA,EAAO,OAAA,CAAA,CAAA;AACT;;;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import styleInject from '../../../node_modules/style-inject/dist/style-inject.es.js';
|
|
2
|
+
|
|
3
|
+
var css_248z = ".saltGridDropdownCellEditor {\n font-size: var(--grid-fontSize);\n}\n\n.saltGridDropdownCellEditor-dropdownContainer {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n box-sizing: border-box;\n background: var(--grid-background);\n border-style: dotted;\n border-width: 2px;\n border-color: var(--grid-cursor-borderColor);\n padding: 0;\n}\n\n/* TODO this is currently the same as saltGridBaseCell-valueContainer. Update when UX is available. */\n.saltGridDropdownCellEditor-currentValue {\n height: calc(var(--grid-row-height) - 4px);\n box-sizing: border-box;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: calc(var(--grid-row-height) - 4px);\n\n outline: none;\n\n padding: 0 calc(var(--grid-padding) - 2px);\n}\n";
|
|
4
|
+
styleInject(css_248z);
|
|
5
|
+
|
|
6
|
+
export { css_248z as default };
|
|
7
|
+
//# sourceMappingURL=DropdownCellEditor.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DropdownCellEditor.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|