handsontable 0.0.0-next-010265d-20231005 → 0.0.0-next-9379dd1-20231020
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of handsontable might be problematic. Click here for more details.
- package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
- package/3rdparty/walkontable/src/cell/coords.js +50 -11
- package/3rdparty/walkontable/src/cell/coords.mjs +50 -11
- package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
- package/3rdparty/walkontable/src/cell/range.js +38 -7
- package/3rdparty/walkontable/src/cell/range.mjs +38 -7
- package/3rdparty/walkontable/src/core/_base.js +9 -3
- package/3rdparty/walkontable/src/core/_base.mjs +9 -3
- package/3rdparty/walkontable/src/core/clone.js +2 -2
- package/3rdparty/walkontable/src/core/clone.mjs +2 -2
- package/3rdparty/walkontable/src/core/core.js +3 -2
- package/3rdparty/walkontable/src/core/core.mjs +3 -2
- package/3rdparty/walkontable/src/event.js +12 -10
- package/3rdparty/walkontable/src/event.mjs +12 -10
- package/3rdparty/walkontable/src/facade/core.js +2 -2
- package/3rdparty/walkontable/src/facade/core.mjs +2 -2
- package/3rdparty/walkontable/src/index.js +10 -2
- package/3rdparty/walkontable/src/index.mjs +2 -2
- package/3rdparty/walkontable/src/overlay/_base.js +13 -2
- package/3rdparty/walkontable/src/overlay/_base.mjs +14 -3
- package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -6
- package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
- package/3rdparty/walkontable/src/overlay/top.js +2 -6
- package/3rdparty/walkontable/src/overlay/top.mjs +2 -6
- package/3rdparty/walkontable/src/renderer/cells.js +10 -0
- package/3rdparty/walkontable/src/renderer/cells.mjs +11 -1
- package/3rdparty/walkontable/src/renderer/columnHeaders.js +10 -0
- package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +11 -1
- package/3rdparty/walkontable/src/renderer/rowHeaders.js +5 -0
- package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +5 -0
- package/3rdparty/walkontable/src/renderer/rows.js +13 -0
- package/3rdparty/walkontable/src/renderer/rows.mjs +13 -0
- package/3rdparty/walkontable/src/renderer/table.js +9 -0
- package/3rdparty/walkontable/src/renderer/table.mjs +9 -0
- package/3rdparty/walkontable/src/scroll.js +2 -0
- package/3rdparty/walkontable/src/scroll.mjs +2 -0
- package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
- package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
- package/3rdparty/walkontable/src/selection/border/constants.js +16 -0
- package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
- package/3rdparty/walkontable/src/selection/constants.js +62 -0
- package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
- package/3rdparty/walkontable/src/selection/index.js +26 -0
- package/3rdparty/walkontable/src/selection/index.mjs +5 -0
- package/3rdparty/walkontable/src/selection/manager.js +274 -0
- package/3rdparty/walkontable/src/selection/manager.mjs +269 -0
- package/3rdparty/walkontable/src/selection/scanner.js +270 -0
- package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
- package/3rdparty/walkontable/src/selection/selection.js +101 -0
- package/3rdparty/walkontable/src/selection/selection.mjs +96 -0
- package/3rdparty/walkontable/src/settings.js +13 -4
- package/3rdparty/walkontable/src/settings.mjs +13 -4
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
- package/3rdparty/walkontable/src/table.js +19 -78
- package/3rdparty/walkontable/src/table.mjs +20 -79
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/cellTypes/dateType/dateType.d.ts +3 -3
- package/cellTypes/dateType/dateType.js +2 -2
- package/cellTypes/dateType/dateType.mjs +2 -2
- package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
- package/cellTypes/handsontableType/handsontableType.js +2 -2
- package/cellTypes/handsontableType/handsontableType.mjs +2 -2
- package/cellTypes/index.d.ts +3 -0
- package/cellTypes/index.js +4 -0
- package/cellTypes/index.mjs +3 -1
- package/cellTypes/selectType/index.d.ts +1 -0
- package/cellTypes/selectType/index.js +6 -0
- package/cellTypes/selectType/index.mjs +1 -0
- package/cellTypes/selectType/selectType.d.ts +14 -0
- package/cellTypes/selectType/selectType.js +13 -0
- package/cellTypes/selectType/selectType.mjs +8 -0
- package/core/focusCatcher/focusDetector.js +63 -0
- package/core/focusCatcher/focusDetector.mjs +59 -0
- package/core/focusCatcher/index.js +142 -0
- package/core/focusCatcher/index.mjs +138 -0
- package/core/index.js +9 -0
- package/core/index.mjs +1 -0
- package/core.d.ts +9 -4
- package/core.js +285 -327
- package/core.mjs +285 -327
- package/dataMap/metaManager/metaSchema.js +65 -0
- package/dataMap/metaManager/metaSchema.mjs +65 -0
- package/dataMap/metaManager/mods/extendMetaProperties.js +7 -1
- package/dataMap/metaManager/mods/extendMetaProperties.mjs +7 -1
- package/dataMap/replaceData.js +5 -0
- package/dataMap/replaceData.mjs +5 -0
- package/dist/handsontable.css +40 -5
- package/dist/handsontable.full.css +40 -5
- package/dist/handsontable.full.js +11744 -6945
- package/dist/handsontable.full.min.css +4 -4
- package/dist/handsontable.full.min.js +141 -141
- package/dist/handsontable.js +14036 -9237
- package/dist/handsontable.min.css +3 -3
- package/dist/handsontable.min.js +21 -21
- package/dist/languages/all.js +6 -2
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/en-US.js +3 -1
- package/dist/languages/en-US.min.js +1 -1
- package/dist/languages/pl-PL.js +3 -1
- package/dist/languages/pl-PL.min.js +1 -1
- package/editorManager.js +15 -87
- package/editorManager.mjs +16 -87
- package/editors/autocompleteEditor/autocompleteEditor.js +53 -2
- package/editors/autocompleteEditor/autocompleteEditor.mjs +54 -3
- package/editors/dateEditor/dateEditor.js +26 -7
- package/editors/dateEditor/dateEditor.mjs +27 -8
- package/editors/handsontableEditor/handsontableEditor.js +9 -1
- package/editors/handsontableEditor/handsontableEditor.mjs +10 -2
- package/editors/textEditor/textEditor.js +19 -27
- package/editors/textEditor/textEditor.mjs +22 -30
- package/focusManager.d.ts +12 -0
- package/focusManager.js +265 -0
- package/focusManager.mjs +261 -0
- package/helpers/a11y.js +79 -0
- package/helpers/a11y.mjs +38 -0
- package/helpers/dom/element.js +188 -9
- package/helpers/dom/element.mjs +182 -9
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/helpers/number.d.ts +1 -0
- package/helpers/number.js +18 -0
- package/helpers/number.mjs +17 -0
- package/i18n/constants.js +7 -1
- package/i18n/constants.mjs +4 -1
- package/i18n/languages/en-US.js +3 -1
- package/i18n/languages/en-US.mjs +3 -1
- package/i18n/languages/pl-PL.js +3 -1
- package/i18n/languages/pl-PL.mjs +3 -1
- package/languages/all.js +6 -2
- package/languages/en-US.js +3 -1
- package/languages/en-US.mjs +3 -1
- package/languages/index.js +6 -2
- package/languages/pl-PL.js +3 -1
- package/languages/pl-PL.mjs +3 -1
- package/package.json +21 -1
- package/pluginHooks.d.ts +12 -1
- package/pluginHooks.js +152 -1
- package/pluginHooks.mjs +152 -1
- package/plugins/collapsibleColumns/collapsibleColumns.js +74 -4
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +75 -5
- package/plugins/columnSorting/columnSorting.js +43 -0
- package/plugins/columnSorting/columnSorting.mjs +44 -3
- package/plugins/columnSorting/index.js +3 -1
- package/plugins/columnSorting/index.mjs +1 -1
- package/plugins/comments/commentEditor.js +1 -0
- package/plugins/comments/commentEditor.mjs +1 -0
- package/plugins/comments/comments.js +252 -189
- package/plugins/comments/comments.mjs +251 -190
- package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
- package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
- package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
- package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
- package/plugins/comments/contextMenuItem/removeComment.js +38 -0
- package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
- package/plugins/contextMenu/commandExecutor.js +2 -3
- package/plugins/contextMenu/commandExecutor.mjs +2 -3
- package/plugins/contextMenu/contextMenu.d.ts +1 -1
- package/plugins/contextMenu/contextMenu.js +75 -36
- package/plugins/contextMenu/contextMenu.mjs +74 -35
- package/plugins/contextMenu/itemsFactory.js +2 -3
- package/plugins/contextMenu/itemsFactory.mjs +3 -4
- package/plugins/contextMenu/{cursor.mjs → menu/cursor.js} +6 -4
- package/plugins/contextMenu/{cursor.js → menu/cursor.mjs} +4 -10
- package/plugins/contextMenu/menu/index.js +9 -0
- package/plugins/contextMenu/menu/index.mjs +1 -0
- package/plugins/contextMenu/{menu.js → menu/menu.js} +96 -308
- package/plugins/contextMenu/{menu.mjs → menu/menu.mjs} +97 -309
- package/plugins/contextMenu/menu/navigator.js +152 -0
- package/plugins/contextMenu/menu/navigator.mjs +148 -0
- package/plugins/contextMenu/menu/positioner.js +213 -0
- package/plugins/contextMenu/menu/positioner.mjs +209 -0
- package/plugins/contextMenu/menu/utils.js +177 -0
- package/plugins/contextMenu/menu/utils.mjs +163 -0
- package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
- package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
- package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
- package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
- package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
- package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
- package/plugins/contextMenu/{predefinedItems.js → predefinedItems/index.js} +14 -14
- package/plugins/contextMenu/predefinedItems/index.mjs +68 -0
- package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
- package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
- package/plugins/contextMenu/predefinedItems/removeColumn.js +7 -5
- package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/removeRow.js +7 -5
- package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
- package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
- package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
- package/plugins/contextMenu/utils.js +35 -151
- package/plugins/contextMenu/utils.mjs +35 -144
- package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
- package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
- package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
- package/plugins/copyPaste/copyPaste.js +127 -78
- package/plugins/copyPaste/copyPaste.mjs +128 -79
- package/plugins/customBorders/customBorders.js +23 -20
- package/plugins/customBorders/customBorders.mjs +24 -21
- package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
- package/plugins/dropdownMenu/dropdownMenu.js +97 -38
- package/plugins/dropdownMenu/dropdownMenu.mjs +96 -37
- package/plugins/filters/constants.mjs +1 -1
- package/plugins/filters/filters.js +31 -14
- package/plugins/filters/filters.mjs +31 -14
- package/plugins/filters/ui/select.js +3 -3
- package/plugins/filters/ui/select.mjs +2 -2
- package/plugins/hiddenColumns/hiddenColumns.mjs +1 -1
- package/plugins/hiddenRows/hiddenRows.mjs +1 -1
- package/plugins/manualColumnMove/manualColumnMove.js +3 -1
- package/plugins/manualColumnMove/manualColumnMove.mjs +3 -1
- package/plugins/mergeCells/mergeCells.js +5 -16
- package/plugins/mergeCells/mergeCells.mjs +5 -16
- package/plugins/multiColumnSorting/multiColumnSorting.js +37 -2
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +37 -2
- package/plugins/nestedHeaders/nestedHeaders.js +240 -10
- package/plugins/nestedHeaders/nestedHeaders.mjs +241 -11
- package/plugins/nestedHeaders/stateManager/index.js +102 -3
- package/plugins/nestedHeaders/stateManager/index.mjs +102 -3
- package/plugins/nestedRows/nestedRows.js +41 -0
- package/plugins/nestedRows/nestedRows.mjs +41 -0
- package/plugins/nestedRows/ui/headers.js +11 -0
- package/plugins/nestedRows/ui/headers.mjs +12 -1
- package/renderers/autocompleteRenderer/autocompleteRenderer.js +8 -0
- package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +8 -0
- package/renderers/baseRenderer/baseRenderer.js +17 -0
- package/renderers/baseRenderer/baseRenderer.mjs +18 -1
- package/renderers/checkboxRenderer/checkboxRenderer.js +9 -4
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
- package/renderers/dateRenderer/dateRenderer.d.ts +5 -0
- package/renderers/dateRenderer/dateRenderer.js +29 -0
- package/renderers/dateRenderer/dateRenderer.mjs +24 -0
- package/renderers/dateRenderer/index.d.ts +1 -0
- package/renderers/dateRenderer/index.js +6 -0
- package/renderers/dateRenderer/index.mjs +1 -0
- package/renderers/handsontableRenderer/handsontableRenderer.d.ts +5 -0
- package/renderers/handsontableRenderer/handsontableRenderer.js +29 -0
- package/renderers/handsontableRenderer/handsontableRenderer.mjs +24 -0
- package/renderers/handsontableRenderer/index.d.ts +1 -0
- package/renderers/handsontableRenderer/index.js +6 -0
- package/renderers/handsontableRenderer/index.mjs +1 -0
- package/renderers/index.d.ts +9 -0
- package/renderers/selectRenderer/index.d.ts +1 -0
- package/renderers/selectRenderer/index.js +6 -0
- package/renderers/selectRenderer/index.mjs +1 -0
- package/renderers/selectRenderer/selectRenderer.d.ts +5 -0
- package/renderers/selectRenderer/selectRenderer.js +27 -0
- package/renderers/selectRenderer/selectRenderer.mjs +22 -0
- package/selection/highlight/highlight.js +256 -71
- package/selection/highlight/highlight.mjs +250 -71
- package/selection/highlight/types/activeHeader.js +10 -8
- package/selection/highlight/types/activeHeader.mjs +10 -8
- package/selection/highlight/types/area.js +6 -18
- package/selection/highlight/types/area.mjs +6 -18
- package/selection/highlight/types/areaLayered.js +31 -0
- package/selection/highlight/types/areaLayered.mjs +26 -0
- package/selection/highlight/types/column.js +27 -0
- package/selection/highlight/types/column.mjs +22 -0
- package/selection/highlight/types/customSelection.js +7 -9
- package/selection/highlight/types/customSelection.mjs +7 -9
- package/selection/highlight/types/fill.js +5 -7
- package/selection/highlight/types/fill.mjs +5 -7
- package/selection/highlight/types/{cell.js → focus.js} +5 -7
- package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
- package/selection/highlight/types/header.js +9 -18
- package/selection/highlight/types/header.mjs +9 -18
- package/selection/highlight/types/row.js +27 -0
- package/selection/highlight/types/row.mjs +22 -0
- package/selection/highlight/visualSelection.js +31 -27
- package/selection/highlight/visualSelection.mjs +31 -27
- package/selection/index.js +4 -7
- package/selection/index.mjs +2 -3
- package/selection/mouseEventHandler.js +7 -1
- package/selection/mouseEventHandler.mjs +7 -1
- package/selection/range.js +8 -8
- package/selection/range.mjs +8 -8
- package/selection/selection.js +321 -152
- package/selection/selection.mjs +318 -151
- package/selection/transformation.js +232 -90
- package/selection/transformation.mjs +232 -90
- package/selection/utils.js +15 -21
- package/selection/utils.mjs +16 -21
- package/settings.d.ts +4 -0
- package/shortcutContexts/commands/editor/closeAndSave.js +12 -0
- package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.js +12 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
- package/shortcutContexts/commands/editor/fastOpen.js +16 -0
- package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
- package/shortcutContexts/commands/editor/index.js +16 -0
- package/shortcutContexts/commands/editor/index.mjs +12 -0
- package/shortcutContexts/commands/editor/open.js +27 -0
- package/shortcutContexts/commands/editor/open.mjs +23 -0
- package/shortcutContexts/commands/emptySelectedCells.js +11 -0
- package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
- package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +25 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +21 -0
- package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
- package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
- package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +25 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +21 -0
- package/shortcutContexts/commands/index.js +35 -0
- package/shortcutContexts/commands/index.mjs +31 -0
- package/shortcutContexts/commands/moveCellSelection/down.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +33 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +29 -0
- package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
- package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +12 -0
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +12 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/left.js +10 -0
- package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/right.js +10 -0
- package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +18 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +14 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +19 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.js +21 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +19 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
- package/shortcutContexts/commands/moveCellSelection/up.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +33 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +29 -0
- package/shortcutContexts/commands/populateSelectedCellsData.js +29 -0
- package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
- package/shortcutContexts/commands/scrollToFocusedCell.js +35 -0
- package/shortcutContexts/commands/scrollToFocusedCell.mjs +31 -0
- package/shortcutContexts/commands/selectAll.js +12 -0
- package/shortcutContexts/commands/selectAll.mjs +8 -0
- package/shortcutContexts/constants.js +13 -0
- package/shortcutContexts/constants.mjs +8 -0
- package/shortcutContexts/editor.js +25 -0
- package/shortcutContexts/editor.mjs +21 -0
- package/shortcutContexts/grid.js +163 -0
- package/shortcutContexts/grid.mjs +159 -0
- package/shortcutContexts/index.js +24 -0
- package/shortcutContexts/index.mjs +11 -0
- package/shortcuts/context.js +20 -2
- package/shortcuts/context.mjs +20 -3
- package/shortcuts/manager.js +25 -7
- package/shortcuts/manager.mjs +26 -7
- package/shortcuts/recorder.js +3 -3
- package/shortcuts/recorder.mjs +3 -3
- package/shortcuts/utils.js +19 -5
- package/shortcuts/utils.mjs +18 -4
- package/tableView.js +111 -13
- package/tableView.mjs +112 -14
- package/3rdparty/walkontable/src/selection.js +0 -295
- package/3rdparty/walkontable/src/selection.mjs +0 -290
- package/plugins/contextMenu/predefinedItems.mjs +0 -68
- package/plugins/copyPaste/focusableElement.js +0 -186
- package/plugins/copyPaste/focusableElement.mjs +0 -180
- package/selection/highlight/constants.js +0 -15
- package/selection/highlight/constants.mjs +0 -6
- package/selection/highlight/types/index.js +0 -35
- package/selection/highlight/types/index.mjs +0 -31
package/tableView.mjs
CHANGED
@@ -10,12 +10,13 @@ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) {
|
|
10
10
|
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
11
11
|
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
12
12
|
function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
|
13
|
-
import { addClass, clearTextSelection, empty, fastInnerHTML, fastInnerText, getScrollbarWidth, hasClass, isChildOf, isInput, isOutsideInput, isVisible } from "./helpers/dom/element.mjs";
|
13
|
+
import { addClass, clearTextSelection, empty, fastInnerHTML, fastInnerText, getScrollbarWidth, hasClass, isChildOf, isInput, isOutsideInput, isVisible, setAttribute } from "./helpers/dom/element.mjs";
|
14
14
|
import EventManager from "./eventManager.mjs";
|
15
15
|
import { isImmediatePropagationStopped, isRightClick, isLeftClick } from "./helpers/dom/event.mjs";
|
16
16
|
import Walkontable from "./3rdparty/walkontable/src/index.mjs";
|
17
17
|
import { handleMouseEvent } from "./selection/mouseEventHandler.mjs";
|
18
18
|
import { isRootInstance } from "./utils/rootInstance.mjs";
|
19
|
+
import { A11Y_COLCOUNT, A11Y_MULTISELECTABLE, A11Y_PRESENTATION, A11Y_ROWCOUNT, A11Y_TREEGRID } from "./helpers/a11y.mjs";
|
19
20
|
const privatePool = new WeakMap();
|
20
21
|
|
21
22
|
/**
|
@@ -255,6 +256,10 @@ class TableView {
|
|
255
256
|
if (this.instance.getSettings().tableClassName) {
|
256
257
|
addClass(priv.table, this.instance.getSettings().tableClassName);
|
257
258
|
}
|
259
|
+
if (this.settings.ariaTags) {
|
260
|
+
setAttribute(priv.table, [A11Y_PRESENTATION()]);
|
261
|
+
setAttribute(rootElement, [A11Y_TREEGRID(), A11Y_ROWCOUNT(this.instance.countRows()), A11Y_COLCOUNT(this.instance.countCols()), A11Y_MULTISELECTABLE()]);
|
262
|
+
}
|
258
263
|
this.THEAD = rootDocument.createElement('THEAD');
|
259
264
|
priv.table.appendChild(this.THEAD);
|
260
265
|
this.TBODY = rootDocument.createElement('TBODY');
|
@@ -308,11 +313,14 @@ class TableView {
|
|
308
313
|
});
|
309
314
|
this.eventManager.addEventListener(documentElement, 'mouseup', event => {
|
310
315
|
if (selection.isInProgress() && isLeftClick(event)) {
|
311
|
-
// is left mouse button
|
312
316
|
selection.finish();
|
313
317
|
}
|
314
318
|
priv.mouseDown = false;
|
315
|
-
|
319
|
+
const isOutsideInputElement = isOutsideInput(rootDocument.activeElement);
|
320
|
+
if (!isOutsideInputElement) {
|
321
|
+
return;
|
322
|
+
}
|
323
|
+
if (isOutsideInputElement || !selection.isSelected() && !selection.isSelectedByAnyHeader() && !rootElement.contains(event.target) && !isRightClick(event)) {
|
316
324
|
this.instance.unlisten();
|
317
325
|
}
|
318
326
|
});
|
@@ -546,6 +554,40 @@ class TableView {
|
|
546
554
|
return this.countNotHiddenRowIndexes(visualFixedRowsBottom, 1);
|
547
555
|
}
|
548
556
|
|
557
|
+
/**
|
558
|
+
* The function returns the number of renderable column indexes within the passed range of the visual indexes.
|
559
|
+
*
|
560
|
+
* @param {number} columnStart The column visual start index.
|
561
|
+
* @param {number} columnEnd The column visual end index.
|
562
|
+
* @returns {number}
|
563
|
+
*/
|
564
|
+
countRenderableColumnsInRange(columnStart, columnEnd) {
|
565
|
+
let count = 0;
|
566
|
+
for (let column = columnStart; column <= columnEnd; column++) {
|
567
|
+
if (this.instance.columnIndexMapper.getRenderableFromVisualIndex(column) !== null) {
|
568
|
+
count += 1;
|
569
|
+
}
|
570
|
+
}
|
571
|
+
return count;
|
572
|
+
}
|
573
|
+
|
574
|
+
/**
|
575
|
+
* The function returns the number of renderable row indexes within the passed range of the visual indexes.
|
576
|
+
*
|
577
|
+
* @param {number} rowStart The row visual start index.
|
578
|
+
* @param {number} rowEnd The row visual end index.
|
579
|
+
* @returns {number}
|
580
|
+
*/
|
581
|
+
countRenderableRowsInRange(rowStart, rowEnd) {
|
582
|
+
let count = 0;
|
583
|
+
for (let row = rowStart; row <= rowEnd; row++) {
|
584
|
+
if (this.instance.rowIndexMapper.getRenderableFromVisualIndex(row) !== null) {
|
585
|
+
count += 1;
|
586
|
+
}
|
587
|
+
}
|
588
|
+
return count;
|
589
|
+
}
|
590
|
+
|
549
591
|
/**
|
550
592
|
* Checks if at least one cell than belongs to the main table is not covered by the top, left or
|
551
593
|
* bottom overlay.
|
@@ -566,6 +608,7 @@ class TableView {
|
|
566
608
|
initializeWalkontable() {
|
567
609
|
const priv = privatePool.get(this);
|
568
610
|
const walkontableConfig = {
|
611
|
+
ariaTags: this.settings.ariaTags,
|
569
612
|
rtlMode: this.instance.isRtl(),
|
570
613
|
externalRowCalculator: this.instance.getPlugin('autoRowSize') && this.instance.getPlugin('autoRowSize').isEnabled(),
|
571
614
|
table: priv.table,
|
@@ -765,20 +808,78 @@ class TableView {
|
|
765
808
|
},
|
766
809
|
beforeDraw: (force, skipRender) => this.beforeRender(force, skipRender),
|
767
810
|
onDraw: force => this.afterRender(force),
|
768
|
-
|
769
|
-
|
811
|
+
onBeforeViewportScrollVertically: renderableRow => {
|
812
|
+
const rowMapper = this.instance.rowIndexMapper;
|
813
|
+
const areColumnHeadersSelected = renderableRow < 0;
|
814
|
+
let visualRow = renderableRow;
|
815
|
+
if (!areColumnHeadersSelected) {
|
816
|
+
visualRow = rowMapper.getVisualFromRenderableIndex(renderableRow);
|
817
|
+
|
818
|
+
// for an empty data return index as is
|
819
|
+
if (visualRow === null) {
|
820
|
+
return renderableRow;
|
821
|
+
}
|
822
|
+
}
|
823
|
+
visualRow = this.instance.runHooks('beforeViewportScrollVertically', visualRow);
|
824
|
+
this.instance.runHooks('beforeViewportScroll');
|
825
|
+
if (!areColumnHeadersSelected) {
|
826
|
+
return rowMapper.getRenderableFromVisualIndex(visualRow);
|
827
|
+
}
|
828
|
+
return visualRow;
|
829
|
+
},
|
830
|
+
onBeforeViewportScrollHorizontally: renderableColumn => {
|
831
|
+
const columnMapper = this.instance.columnIndexMapper;
|
832
|
+
const areRowHeadersSelected = renderableColumn < 0;
|
833
|
+
let visualColumn = renderableColumn;
|
834
|
+
if (!areRowHeadersSelected) {
|
835
|
+
visualColumn = columnMapper.getVisualFromRenderableIndex(renderableColumn);
|
836
|
+
|
837
|
+
// for an empty data return index as is
|
838
|
+
if (visualColumn === null) {
|
839
|
+
return renderableColumn;
|
840
|
+
}
|
841
|
+
}
|
842
|
+
visualColumn = this.instance.runHooks('beforeViewportScrollHorizontally', visualColumn);
|
843
|
+
this.instance.runHooks('beforeViewportScroll');
|
844
|
+
if (!areRowHeadersSelected) {
|
845
|
+
return columnMapper.getRenderableFromVisualIndex(visualColumn);
|
846
|
+
}
|
847
|
+
return visualColumn;
|
848
|
+
},
|
849
|
+
onScrollVertically: () => {
|
850
|
+
this.instance.runHooks('afterScrollVertically');
|
851
|
+
this.instance.runHooks('afterScroll');
|
852
|
+
},
|
853
|
+
onScrollHorizontally: () => {
|
854
|
+
this.instance.runHooks('afterScrollHorizontally');
|
855
|
+
this.instance.runHooks('afterScroll');
|
856
|
+
},
|
770
857
|
onBeforeRemoveCellClassNames: () => this.instance.runHooks('beforeRemoveCellClassNames'),
|
771
858
|
onBeforeHighlightingRowHeader: (renderableRow, headerLevel, highlightMeta) => {
|
772
859
|
const rowMapper = this.instance.rowIndexMapper;
|
773
|
-
const
|
860
|
+
const areColumnHeadersSelected = renderableRow < 0;
|
861
|
+
let visualRow = renderableRow;
|
862
|
+
if (!areColumnHeadersSelected) {
|
863
|
+
visualRow = rowMapper.getVisualFromRenderableIndex(renderableRow);
|
864
|
+
}
|
774
865
|
const newVisualRow = this.instance.runHooks('beforeHighlightingRowHeader', visualRow, headerLevel, highlightMeta);
|
775
|
-
|
866
|
+
if (!areColumnHeadersSelected) {
|
867
|
+
return rowMapper.getRenderableFromVisualIndex(rowMapper.getNearestNotHiddenIndex(newVisualRow, 1));
|
868
|
+
}
|
869
|
+
return newVisualRow;
|
776
870
|
},
|
777
871
|
onBeforeHighlightingColumnHeader: (renderableColumn, headerLevel, highlightMeta) => {
|
778
872
|
const columnMapper = this.instance.columnIndexMapper;
|
779
|
-
const
|
873
|
+
const areRowHeadersSelected = renderableColumn < 0;
|
874
|
+
let visualColumn = renderableColumn;
|
875
|
+
if (!areRowHeadersSelected) {
|
876
|
+
visualColumn = columnMapper.getVisualFromRenderableIndex(renderableColumn);
|
877
|
+
}
|
780
878
|
const newVisualColumn = this.instance.runHooks('beforeHighlightingColumnHeader', visualColumn, headerLevel, highlightMeta);
|
781
|
-
|
879
|
+
if (!areRowHeadersSelected) {
|
880
|
+
return columnMapper.getRenderableFromVisualIndex(columnMapper.getNearestNotHiddenIndex(newVisualColumn, 1));
|
881
|
+
}
|
882
|
+
return newVisualColumn;
|
782
883
|
},
|
783
884
|
onAfterDrawSelection: (currentRow, currentColumn, layerLevel) => {
|
784
885
|
let cornersOfSelection;
|
@@ -786,10 +887,7 @@ class TableView {
|
|
786
887
|
const selectedRange = this.instance.selection.getSelectedRange();
|
787
888
|
const selectionRangeSize = selectedRange.size();
|
788
889
|
if (selectionRangeSize > 0) {
|
789
|
-
|
790
|
-
// Please look at the `SelectedRange` class and it's method for getting selection's layer for more information.
|
791
|
-
const selectionOffset = (layerLevel !== null && layerLevel !== void 0 ? layerLevel : 0) + 1 - selectionRangeSize;
|
792
|
-
const selectionForLayer = selectedRange.peekByIndex(selectionOffset);
|
890
|
+
const selectionForLayer = selectedRange.peekByIndex(layerLevel !== null && layerLevel !== void 0 ? layerLevel : 0);
|
793
891
|
cornersOfSelection = [selectionForLayer.from.row, selectionForLayer.from.col, selectionForLayer.to.row, selectionForLayer.to.col];
|
794
892
|
}
|
795
893
|
return this.instance.runHooks('afterDrawSelection', visualRowIndex, visualColumnIndex, cornersOfSelection, layerLevel);
|
@@ -942,7 +1040,7 @@ class TableView {
|
|
942
1040
|
*/
|
943
1041
|
isSelectedOnlyCell() {
|
944
1042
|
var _this$instance$getSel, _this$instance$getSel2;
|
945
|
-
return (_this$instance$getSel = (_this$instance$getSel2 = this.instance.getSelectedRangeLast()) === null || _this$instance$getSel2 === void 0 ? void 0 : _this$instance$getSel2.
|
1043
|
+
return (_this$instance$getSel = (_this$instance$getSel2 = this.instance.getSelectedRangeLast()) === null || _this$instance$getSel2 === void 0 ? void 0 : _this$instance$getSel2.isSingleCell()) !== null && _this$instance$getSel !== void 0 ? _this$instance$getSel : false;
|
946
1044
|
}
|
947
1045
|
|
948
1046
|
/**
|
@@ -1,295 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
exports.__esModule = true;
|
4
|
-
require("core-js/modules/es.array.push.js");
|
5
|
-
var _element = require("./../../../helpers/dom/element");
|
6
|
-
var _border = _interopRequireDefault(require("./border"));
|
7
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
8
|
-
/**
|
9
|
-
* @class Selection
|
10
|
-
*/
|
11
|
-
class Selection {
|
12
|
-
/**
|
13
|
-
* @param {object} settings The selection settings object. @todo type.
|
14
|
-
* @param {CellRange} cellRange The cell range instance.
|
15
|
-
*/
|
16
|
-
constructor(settings, cellRange) {
|
17
|
-
this.settings = settings;
|
18
|
-
this.cellRange = cellRange || null;
|
19
|
-
this.instanceBorders = {};
|
20
|
-
this.classNames = [this.settings.className];
|
21
|
-
this.classNameGenerator = this.linearClassNameGenerator(this.settings.className, this.settings.layerLevel);
|
22
|
-
}
|
23
|
-
|
24
|
-
/**
|
25
|
-
* Each Walkontable clone requires it's own border for every selection. This method creates and returns selection
|
26
|
-
* borders per instance.
|
27
|
-
*
|
28
|
-
* @param {WalkontableFacade} wotInstance The Walkontable instance.
|
29
|
-
* @returns {Border}
|
30
|
-
*/
|
31
|
-
getBorder(wotInstance) {
|
32
|
-
if (!this.instanceBorders[wotInstance.guid]) {
|
33
|
-
this.instanceBorders[wotInstance.guid] = new _border.default(wotInstance, this.settings);
|
34
|
-
}
|
35
|
-
return this.instanceBorders[wotInstance.guid];
|
36
|
-
}
|
37
|
-
|
38
|
-
/**
|
39
|
-
* Checks if selection is empty.
|
40
|
-
*
|
41
|
-
* @returns {boolean}
|
42
|
-
*/
|
43
|
-
isEmpty() {
|
44
|
-
return this.cellRange === null;
|
45
|
-
}
|
46
|
-
|
47
|
-
/**
|
48
|
-
* Adds a cell coords to the selection.
|
49
|
-
*
|
50
|
-
* @param {CellCoords} coords The cell coordinates to add.
|
51
|
-
* @returns {Selection}
|
52
|
-
*/
|
53
|
-
add(coords) {
|
54
|
-
if (this.isEmpty()) {
|
55
|
-
this.cellRange = this.settings.createCellRange(coords);
|
56
|
-
} else {
|
57
|
-
this.cellRange.expand(coords);
|
58
|
-
}
|
59
|
-
return this;
|
60
|
-
}
|
61
|
-
|
62
|
-
/**
|
63
|
-
* If selection range from or to property equals oldCoords, replace it with newCoords. Return boolean
|
64
|
-
* information about success.
|
65
|
-
*
|
66
|
-
* @param {CellCoords} oldCoords An old cell coordinates to replace.
|
67
|
-
* @param {CellCoords} newCoords The new cell coordinates.
|
68
|
-
* @returns {boolean}
|
69
|
-
*/
|
70
|
-
replace(oldCoords, newCoords) {
|
71
|
-
if (!this.isEmpty()) {
|
72
|
-
if (this.cellRange.from.isEqual(oldCoords)) {
|
73
|
-
this.cellRange.from = newCoords;
|
74
|
-
return true;
|
75
|
-
}
|
76
|
-
if (this.cellRange.to.isEqual(oldCoords)) {
|
77
|
-
this.cellRange.to = newCoords;
|
78
|
-
return true;
|
79
|
-
}
|
80
|
-
}
|
81
|
-
return false;
|
82
|
-
}
|
83
|
-
|
84
|
-
/**
|
85
|
-
* Clears selection.
|
86
|
-
*
|
87
|
-
* @returns {Selection}
|
88
|
-
*/
|
89
|
-
clear() {
|
90
|
-
this.cellRange = null;
|
91
|
-
return this;
|
92
|
-
}
|
93
|
-
|
94
|
-
/**
|
95
|
-
* Returns the top left (or top right in RTL) and bottom right (or bottom left in RTL) selection coordinates.
|
96
|
-
*
|
97
|
-
* @returns {Array} Returns array of coordinates for example `[1, 1, 5, 5]`.
|
98
|
-
*/
|
99
|
-
getCorners() {
|
100
|
-
const topStart = this.cellRange.getOuterTopStartCorner();
|
101
|
-
const bottomEnd = this.cellRange.getOuterBottomEndCorner();
|
102
|
-
return [topStart.row, topStart.col, bottomEnd.row, bottomEnd.col];
|
103
|
-
}
|
104
|
-
|
105
|
-
/**
|
106
|
-
* Adds class name to cell element at given coords.
|
107
|
-
*
|
108
|
-
* @param {WalkontableFacade} wotInstance Walkontable instance.
|
109
|
-
* @param {number} sourceRow Cell row coord.
|
110
|
-
* @param {number} sourceColumn Cell column coord.
|
111
|
-
* @param {string} className Class name.
|
112
|
-
* @param {boolean} [markIntersections=false] If `true`, linear className generator will be used to add CSS classes
|
113
|
-
* in a continuous way.
|
114
|
-
* @returns {Selection}
|
115
|
-
*/
|
116
|
-
addClassAtCoords(wotInstance, sourceRow, sourceColumn, className) {
|
117
|
-
let markIntersections = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
|
118
|
-
const TD = wotInstance.wtTable.getCell(this.settings.createCellCoords(sourceRow, sourceColumn));
|
119
|
-
if (typeof TD === 'object') {
|
120
|
-
let cellClassName = className;
|
121
|
-
if (markIntersections) {
|
122
|
-
cellClassName = this.classNameGenerator(TD);
|
123
|
-
if (!this.classNames.includes(cellClassName)) {
|
124
|
-
this.classNames.push(cellClassName);
|
125
|
-
}
|
126
|
-
}
|
127
|
-
(0, _element.addClass)(TD, cellClassName);
|
128
|
-
}
|
129
|
-
return this;
|
130
|
-
}
|
131
|
-
|
132
|
-
/**
|
133
|
-
* Generate helper for calculating classNames based on previously added base className.
|
134
|
-
* The generated className is always generated as a continuation of the previous className. For example, when
|
135
|
-
* the currently checked element has 'area-2' className the generated new className will be 'area-3'. When
|
136
|
-
* the element doesn't have any classNames than the base className will be returned ('area');.
|
137
|
-
*
|
138
|
-
* @param {string} baseClassName Base className to be used.
|
139
|
-
* @param {number} layerLevelOwner Layer level which the instance of the Selection belongs to.
|
140
|
-
* @returns {Function}
|
141
|
-
*/
|
142
|
-
linearClassNameGenerator(baseClassName, layerLevelOwner) {
|
143
|
-
// TODO: Make this recursive function Proper Tail Calls (TCO/PTC) friendly.
|
144
|
-
return function calcClassName(element) {
|
145
|
-
let previousIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1;
|
146
|
-
if (layerLevelOwner === 0 || previousIndex === 0) {
|
147
|
-
return baseClassName;
|
148
|
-
}
|
149
|
-
let index = previousIndex >= 0 ? previousIndex : layerLevelOwner;
|
150
|
-
let className = baseClassName;
|
151
|
-
index -= 1;
|
152
|
-
const previousClassName = index === 0 ? baseClassName : `${baseClassName}-${index}`;
|
153
|
-
if ((0, _element.hasClass)(element, previousClassName)) {
|
154
|
-
const currentLayer = index + 1;
|
155
|
-
className = `${baseClassName}-${currentLayer}`;
|
156
|
-
} else {
|
157
|
-
className = calcClassName(element, index);
|
158
|
-
}
|
159
|
-
return className;
|
160
|
-
};
|
161
|
-
}
|
162
|
-
|
163
|
-
/**
|
164
|
-
* @param {WalkontableFacade} wotInstance The Walkontable instance.
|
165
|
-
*/
|
166
|
-
draw(wotInstance) {
|
167
|
-
if (this.isEmpty()) {
|
168
|
-
if (this.settings.border) {
|
169
|
-
this.getBorder(wotInstance).disappear();
|
170
|
-
}
|
171
|
-
return;
|
172
|
-
}
|
173
|
-
const renderedRows = wotInstance.wtTable.getRenderedRowsCount();
|
174
|
-
const renderedColumns = wotInstance.wtTable.getRenderedColumnsCount();
|
175
|
-
const corners = this.getCorners();
|
176
|
-
const [topRow, topColumn, bottomRow, bottomColumn] = corners;
|
177
|
-
const {
|
178
|
-
highlightHeaderClassName,
|
179
|
-
highlightColumnClassName,
|
180
|
-
highlightRowClassName,
|
181
|
-
highlightOnlyClosestHeader,
|
182
|
-
selectionType
|
183
|
-
} = this.settings;
|
184
|
-
const isHeaderSelectionType = selectionType === void 0 || ['active-header', 'header'].includes(selectionType);
|
185
|
-
if (isHeaderSelectionType && topColumn !== null && bottomColumn !== null) {
|
186
|
-
let selectionColumnCursor = 0;
|
187
|
-
for (let column = 0; column < renderedColumns; column += 1) {
|
188
|
-
const sourceCol = wotInstance.wtTable.columnFilter.renderedToSource(column);
|
189
|
-
if (sourceCol >= topColumn && sourceCol <= bottomColumn) {
|
190
|
-
let THs = wotInstance.wtTable.getColumnHeaders(sourceCol);
|
191
|
-
const closestHeaderLevel = THs.length - 1;
|
192
|
-
if (highlightOnlyClosestHeader && THs.length > 1) {
|
193
|
-
THs = [THs[closestHeaderLevel]];
|
194
|
-
}
|
195
|
-
for (let headerLevel = 0; headerLevel < THs.length; headerLevel += 1) {
|
196
|
-
const newClasses = [];
|
197
|
-
let TH = THs[headerLevel];
|
198
|
-
if (highlightHeaderClassName) {
|
199
|
-
newClasses.push(highlightHeaderClassName);
|
200
|
-
}
|
201
|
-
if (highlightColumnClassName) {
|
202
|
-
newClasses.push(highlightColumnClassName);
|
203
|
-
}
|
204
|
-
headerLevel = highlightOnlyClosestHeader ? closestHeaderLevel : headerLevel;
|
205
|
-
const newSourceCol = wotInstance.getSetting('onBeforeHighlightingColumnHeader', sourceCol, headerLevel, {
|
206
|
-
selectionType,
|
207
|
-
columnCursor: selectionColumnCursor,
|
208
|
-
selectionWidth: bottomColumn - topColumn + 1,
|
209
|
-
classNames: newClasses
|
210
|
-
});
|
211
|
-
if (newSourceCol !== sourceCol) {
|
212
|
-
TH = wotInstance.wtTable.getColumnHeader(newSourceCol, headerLevel);
|
213
|
-
}
|
214
|
-
(0, _element.addClass)(TH, newClasses);
|
215
|
-
}
|
216
|
-
selectionColumnCursor += 1;
|
217
|
-
}
|
218
|
-
}
|
219
|
-
}
|
220
|
-
if (topRow !== null && bottomRow !== null) {
|
221
|
-
let selectionRowCursor = 0;
|
222
|
-
for (let row = 0; row < renderedRows; row += 1) {
|
223
|
-
const sourceRow = wotInstance.wtTable.rowFilter.renderedToSource(row);
|
224
|
-
if (isHeaderSelectionType && sourceRow >= topRow && sourceRow <= bottomRow) {
|
225
|
-
let THs = wotInstance.wtTable.getRowHeaders(sourceRow);
|
226
|
-
const closestHeaderLevel = THs.length - 1;
|
227
|
-
if (highlightOnlyClosestHeader && THs.length > 1) {
|
228
|
-
THs = [THs[closestHeaderLevel]];
|
229
|
-
}
|
230
|
-
for (let headerLevel = 0; headerLevel < THs.length; headerLevel += 1) {
|
231
|
-
const newClasses = [];
|
232
|
-
let TH = THs[headerLevel];
|
233
|
-
if (highlightHeaderClassName) {
|
234
|
-
newClasses.push(highlightHeaderClassName);
|
235
|
-
}
|
236
|
-
if (highlightRowClassName) {
|
237
|
-
newClasses.push(highlightRowClassName);
|
238
|
-
}
|
239
|
-
headerLevel = highlightOnlyClosestHeader ? closestHeaderLevel : headerLevel;
|
240
|
-
const newSourceRow = wotInstance.getSetting('onBeforeHighlightingRowHeader', sourceRow, headerLevel, {
|
241
|
-
selectionType,
|
242
|
-
rowCursor: selectionRowCursor,
|
243
|
-
selectionHeight: bottomRow - topRow + 1,
|
244
|
-
classNames: newClasses
|
245
|
-
});
|
246
|
-
if (newSourceRow !== sourceRow) {
|
247
|
-
TH = wotInstance.wtTable.getRowHeader(newSourceRow, headerLevel);
|
248
|
-
}
|
249
|
-
(0, _element.addClass)(TH, newClasses);
|
250
|
-
}
|
251
|
-
selectionRowCursor += 1;
|
252
|
-
}
|
253
|
-
if (topColumn !== null && bottomColumn !== null) {
|
254
|
-
for (let column = 0; column < renderedColumns; column += 1) {
|
255
|
-
const sourceCol = wotInstance.wtTable.columnFilter.renderedToSource(column);
|
256
|
-
if (sourceRow >= topRow && sourceRow <= bottomRow && sourceCol >= topColumn && sourceCol <= bottomColumn) {
|
257
|
-
// selected cell
|
258
|
-
if (this.settings.className) {
|
259
|
-
this.addClassAtCoords(wotInstance, sourceRow, sourceCol, this.settings.className, this.settings.markIntersections);
|
260
|
-
}
|
261
|
-
} else if (sourceRow >= topRow && sourceRow <= bottomRow) {
|
262
|
-
// selection is in this row
|
263
|
-
if (highlightRowClassName) {
|
264
|
-
this.addClassAtCoords(wotInstance, sourceRow, sourceCol, highlightRowClassName);
|
265
|
-
}
|
266
|
-
} else if (sourceCol >= topColumn && sourceCol <= bottomColumn) {
|
267
|
-
// selection is in this column
|
268
|
-
if (highlightColumnClassName) {
|
269
|
-
this.addClassAtCoords(wotInstance, sourceRow, sourceCol, highlightColumnClassName);
|
270
|
-
}
|
271
|
-
}
|
272
|
-
const additionalSelectionClass = wotInstance.getSetting('onAfterDrawSelection', sourceRow, sourceCol, this.settings.layerLevel);
|
273
|
-
if (typeof additionalSelectionClass === 'string') {
|
274
|
-
this.addClassAtCoords(wotInstance, sourceRow, sourceCol, additionalSelectionClass);
|
275
|
-
}
|
276
|
-
}
|
277
|
-
}
|
278
|
-
}
|
279
|
-
}
|
280
|
-
wotInstance.getSetting('onBeforeDrawBorders', corners, this.settings.className);
|
281
|
-
if (this.settings.border) {
|
282
|
-
// warning! border.appear modifies corners!
|
283
|
-
this.getBorder(wotInstance).appear(corners);
|
284
|
-
}
|
285
|
-
}
|
286
|
-
|
287
|
-
/**
|
288
|
-
* Cleans up all the DOM state related to a Selection instance. Call this prior to deleting a Selection instance.
|
289
|
-
*/
|
290
|
-
destroy() {
|
291
|
-
Object.values(this.instanceBorders).forEach(border => border.destroy());
|
292
|
-
}
|
293
|
-
}
|
294
|
-
var _default = Selection;
|
295
|
-
exports.default = _default;
|