handsontable 13.1.0 → 14.0.0-next-e8f87aa-20231030
Sign up to get free protection for your applications and to get access to all the features.
- package/3rdparty/walkontable/src/calculator/constants.js +3 -6
- package/3rdparty/walkontable/src/calculator/viewportColumns.js +1 -2
- package/3rdparty/walkontable/src/calculator/viewportRows.js +1 -2
- package/3rdparty/walkontable/src/cell/coords.d.ts +8 -1
- package/3rdparty/walkontable/src/cell/coords.js +81 -13
- package/3rdparty/walkontable/src/cell/coords.mjs +80 -11
- package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
- package/3rdparty/walkontable/src/cell/range.js +39 -9
- 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 +13 -12
- 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/filter/column.js +1 -2
- package/3rdparty/walkontable/src/filter/row.js +1 -2
- package/3rdparty/walkontable/src/index.js +12 -4
- 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/constants.js +7 -14
- 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/overlays.js +1 -2
- 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 +13 -0
- package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +14 -1
- package/3rdparty/walkontable/src/renderer/rowHeaders.js +8 -0
- package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +8 -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 +3 -2
- package/3rdparty/walkontable/src/scroll.mjs +2 -0
- package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +8 -14
- package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
- package/3rdparty/walkontable/src/selection/border/constants.js +15 -0
- package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
- package/3rdparty/walkontable/src/selection/constants.js +54 -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 +100 -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/bottom.js +1 -2
- package/3rdparty/walkontable/src/table/bottomInlineStartCorner.js +1 -2
- package/3rdparty/walkontable/src/table/inlineStart.js +1 -2
- package/3rdparty/walkontable/src/table/master.js +3 -6
- package/3rdparty/walkontable/src/table/master.mjs +2 -4
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +10 -2
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +10 -2
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +10 -2
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +10 -2
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +10 -2
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
- package/3rdparty/walkontable/src/table/top.js +1 -2
- package/3rdparty/walkontable/src/table/topInlineStartCorner.js +1 -2
- package/3rdparty/walkontable/src/table.js +20 -80
- package/3rdparty/walkontable/src/table.mjs +20 -79
- package/3rdparty/walkontable/src/utils/orderView/constants.js +3 -6
- package/3rdparty/walkontable/src/viewport.js +1 -2
- package/CHANGELOG.md +51 -0
- package/base.js +3 -4
- package/base.mjs +2 -2
- package/cellTypes/autocompleteType/autocompleteType.js +3 -5
- package/cellTypes/checkboxType/checkboxType.js +3 -5
- package/cellTypes/dateType/dateType.d.ts +3 -3
- package/cellTypes/dateType/dateType.js +5 -7
- package/cellTypes/dateType/dateType.mjs +2 -2
- package/cellTypes/dropdownType/dropdownType.js +3 -5
- package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
- package/cellTypes/handsontableType/handsontableType.js +5 -7
- 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/numericType/numericType.js +3 -5
- package/cellTypes/passwordType/passwordType.js +3 -5
- 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 +11 -0
- package/cellTypes/selectType/selectType.mjs +8 -0
- package/cellTypes/textType/textType.js +3 -5
- package/cellTypes/timeType/timeType.js +3 -5
- package/common.d.ts +1 -1
- package/core/focusCatcher/focusDetector.js +63 -0
- package/core/focusCatcher/focusDetector.mjs +59 -0
- package/core/focusCatcher/index.js +148 -0
- package/core/focusCatcher/index.mjs +144 -0
- package/core/index.js +9 -0
- package/core/index.mjs +1 -0
- package/core.d.ts +10 -5
- package/core.js +327 -359
- package/core.mjs +327 -359
- package/dataMap/dataMap.js +1 -2
- package/dataMap/dataSource.js +1 -2
- 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 +94 -76
- package/dist/handsontable.full.css +94 -76
- package/dist/handsontable.full.js +23133 -15992
- package/dist/handsontable.full.min.css +8 -8
- package/dist/handsontable.full.min.js +170 -152
- package/dist/handsontable.js +21856 -15085
- package/dist/handsontable.min.css +7 -7
- package/dist/handsontable.min.js +30 -22
- package/dist/languages/all.js +47 -40
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/ar-AR.js +1 -2
- package/dist/languages/cs-CZ.js +1 -2
- package/dist/languages/de-CH.js +1 -2
- package/dist/languages/de-DE.js +1 -2
- package/dist/languages/en-US.js +15 -3
- package/dist/languages/en-US.min.js +1 -1
- package/dist/languages/es-MX.js +1 -2
- package/dist/languages/fr-FR.js +1 -2
- package/dist/languages/it-IT.js +1 -2
- package/dist/languages/ja-JP.js +1 -2
- package/dist/languages/ko-KR.js +1 -2
- package/dist/languages/lv-LV.js +1 -2
- package/dist/languages/nb-NO.js +1 -2
- package/dist/languages/nl-NL.js +1 -2
- package/dist/languages/pl-PL.js +15 -3
- package/dist/languages/pl-PL.min.js +1 -1
- package/dist/languages/pt-BR.js +1 -2
- package/dist/languages/ru-RU.js +1 -2
- package/dist/languages/sr-SP.js +1 -2
- package/dist/languages/zh-CN.js +1 -2
- package/dist/languages/zh-TW.js +1 -2
- package/editorManager.js +17 -91
- package/editorManager.mjs +16 -87
- package/editors/autocompleteEditor/autocompleteEditor.js +65 -11
- package/editors/autocompleteEditor/autocompleteEditor.mjs +65 -10
- package/editors/baseEditor/baseEditor.js +19 -13
- package/editors/baseEditor/baseEditor.mjs +16 -7
- package/editors/checkboxEditor/checkboxEditor.js +1 -2
- package/editors/dateEditor/dateEditor.js +27 -9
- package/editors/dateEditor/dateEditor.mjs +27 -8
- package/editors/dropdownEditor/dropdownEditor.js +1 -2
- package/editors/handsontableEditor/handsontableEditor.js +14 -7
- package/editors/handsontableEditor/handsontableEditor.mjs +14 -6
- package/editors/numericEditor/numericEditor.js +1 -2
- package/editors/passwordEditor/passwordEditor.js +1 -2
- package/editors/selectEditor/selectEditor.js +1 -2
- package/editors/textEditor/textEditor.js +20 -29
- package/editors/textEditor/textEditor.mjs +22 -30
- package/editors/timeEditor/timeEditor.js +1 -2
- package/eventManager.js +1 -2
- package/focusManager.d.ts +12 -0
- package/focusManager.js +265 -0
- package/focusManager.mjs +261 -0
- package/helpers/a11y.js +81 -0
- package/helpers/a11y.mjs +39 -0
- package/helpers/dom/element.js +224 -12
- package/helpers/dom/element.mjs +216 -10
- package/helpers/dom/event.d.ts +1 -0
- package/helpers/dom/event.js +25 -0
- package/helpers/dom/event.mjs +24 -0
- package/helpers/mixed.js +2 -2
- package/helpers/mixed.mjs +2 -2
- package/helpers/number.d.ts +1 -0
- package/helpers/number.js +18 -0
- package/helpers/number.mjs +17 -0
- package/helpers/unicode.js +1 -2
- package/i18n/constants.js +97 -160
- package/i18n/constants.mjs +17 -1
- package/i18n/languages/ar-AR.js +3 -4
- package/i18n/languages/cs-CZ.js +3 -4
- package/i18n/languages/de-CH.js +3 -4
- package/i18n/languages/de-DE.js +3 -4
- package/i18n/languages/en-US.js +17 -5
- package/i18n/languages/en-US.mjs +14 -1
- package/i18n/languages/es-MX.js +3 -4
- package/i18n/languages/fr-FR.js +3 -4
- package/i18n/languages/it-IT.js +3 -4
- package/i18n/languages/ja-JP.js +3 -4
- package/i18n/languages/ko-KR.js +3 -4
- package/i18n/languages/lv-LV.js +3 -4
- package/i18n/languages/nb-NO.js +3 -4
- package/i18n/languages/nl-NL.js +3 -4
- package/i18n/languages/pl-PL.js +17 -5
- package/i18n/languages/pl-PL.mjs +14 -1
- package/i18n/languages/pt-BR.js +3 -4
- package/i18n/languages/ru-RU.js +3 -4
- package/i18n/languages/sr-SP.js +3 -4
- package/i18n/languages/zh-CN.js +3 -4
- package/i18n/languages/zh-TW.js +3 -4
- package/i18n/registry.js +4 -6
- package/index.js +3 -4
- package/languages/all.js +47 -40
- package/languages/ar-AR.js +1 -2
- package/languages/cs-CZ.js +1 -2
- package/languages/de-CH.js +1 -2
- package/languages/de-DE.js +1 -2
- package/languages/en-US.js +15 -3
- package/languages/en-US.mjs +14 -1
- package/languages/es-MX.js +1 -2
- package/languages/fr-FR.js +1 -2
- package/languages/index.js +47 -40
- package/languages/it-IT.js +1 -2
- package/languages/ja-JP.js +1 -2
- package/languages/ko-KR.js +1 -2
- package/languages/lv-LV.js +1 -2
- package/languages/nb-NO.js +1 -2
- package/languages/nl-NL.js +1 -2
- package/languages/pl-PL.js +15 -3
- package/languages/pl-PL.mjs +14 -1
- package/languages/pt-BR.js +1 -2
- package/languages/ru-RU.js +1 -2
- package/languages/sr-SP.js +1 -2
- package/languages/zh-CN.js +1 -2
- package/languages/zh-TW.js +1 -2
- package/mixins/hooksRefRegisterer.js +1 -2
- package/mixins/localHooks.js +1 -2
- package/package.json +119 -96
- package/pluginHooks.d.ts +42 -7
- package/pluginHooks.js +301 -65
- package/pluginHooks.mjs +300 -63
- package/plugins/autoColumnSize/autoColumnSize.d.ts +2 -0
- package/plugins/autoColumnSize/autoColumnSize.js +2 -4
- package/plugins/autoRowSize/autoRowSize.d.ts +2 -0
- package/plugins/autoRowSize/autoRowSize.js +15 -10
- package/plugins/autoRowSize/autoRowSize.mjs +13 -6
- package/plugins/autofill/autofill.js +2 -4
- package/plugins/autofill/utils.js +1 -2
- package/plugins/base/base.js +1 -2
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +2 -4
- package/plugins/bindRowsWithHeaders/maps/looseBindsMap.js +1 -2
- package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +1 -2
- package/plugins/collapsibleColumns/collapsibleColumns.js +77 -8
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +76 -5
- package/plugins/columnSorting/columnSorting.js +71 -6
- package/plugins/columnSorting/columnSorting.mjs +70 -3
- package/plugins/columnSorting/index.js +3 -1
- package/plugins/columnSorting/index.mjs +1 -1
- package/plugins/columnSorting/sortFunction/checkbox.js +1 -2
- package/plugins/columnSorting/sortFunction/date.js +1 -2
- package/plugins/columnSorting/sortFunction/default.js +1 -2
- package/plugins/columnSorting/sortFunction/numeric.js +1 -2
- package/plugins/columnSorting/sortService/engine.js +3 -6
- package/plugins/columnSorting/utils.js +3 -6
- package/plugins/columnSummary/columnSummary.js +2 -4
- package/plugins/columnSummary/endpoints.js +1 -2
- package/plugins/comments/commentEditor.js +2 -2
- package/plugins/comments/commentEditor.mjs +1 -0
- package/plugins/comments/comments.js +254 -197
- 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/comments/displaySwitch.js +1 -2
- 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 +77 -40
- 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/defaultShortcutsList.js +88 -0
- package/plugins/contextMenu/menu/defaultShortcutsList.mjs +84 -0
- package/plugins/contextMenu/menu/index.js +9 -0
- package/plugins/contextMenu/menu/index.mjs +1 -0
- package/plugins/contextMenu/{menu.js → menu/menu.js} +145 -421
- package/plugins/contextMenu/{menu.mjs → menu/menu.mjs} +146 -422
- package/plugins/contextMenu/menu/menuItemRenderer.js +70 -0
- package/plugins/contextMenu/menu/menuItemRenderer.mjs +66 -0
- package/plugins/contextMenu/menu/navigator.js +27 -0
- package/plugins/contextMenu/menu/navigator.mjs +23 -0
- package/plugins/contextMenu/menu/positioner.js +213 -0
- package/plugins/contextMenu/menu/positioner.mjs +209 -0
- package/plugins/contextMenu/menu/shortcuts.js +114 -0
- package/plugins/contextMenu/menu/shortcuts.mjs +110 -0
- package/plugins/contextMenu/menu/utils.js +177 -0
- package/plugins/contextMenu/menu/utils.mjs +163 -0
- package/plugins/contextMenu/predefinedItems/alignment.js +10 -4
- package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
- package/plugins/contextMenu/predefinedItems/clearColumn.js +8 -7
- package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/columnLeft.js +8 -7
- package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/columnRight.js +8 -7
- package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/index.js +75 -0
- package/plugins/contextMenu/predefinedItems/index.mjs +68 -0
- package/plugins/contextMenu/predefinedItems/noItems.js +1 -2
- package/plugins/contextMenu/predefinedItems/readOnly.js +10 -4
- package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
- package/plugins/contextMenu/predefinedItems/redo.js +3 -4
- package/plugins/contextMenu/predefinedItems/removeColumn.js +10 -9
- package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/removeRow.js +10 -9
- package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/rowAbove.js +8 -7
- package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/rowBelow.js +8 -7
- package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/separator.js +1 -2
- package/plugins/contextMenu/predefinedItems/undo.js +3 -4
- package/plugins/contextMenu/utils.js +35 -151
- package/plugins/contextMenu/utils.mjs +35 -144
- package/plugins/copyPaste/clipboardData/clipboardData.js +516 -0
- package/plugins/copyPaste/clipboardData/clipboardData.mjs +512 -0
- package/plugins/copyPaste/clipboardData/copyClipboardData.js +69 -0
- package/plugins/copyPaste/clipboardData/copyClipboardData.mjs +65 -0
- package/plugins/copyPaste/clipboardData/index.js +9 -0
- package/plugins/copyPaste/clipboardData/index.mjs +4 -0
- package/plugins/copyPaste/clipboardData/pasteClipboardData.js +81 -0
- package/plugins/copyPaste/clipboardData/pasteClipboardData.mjs +77 -0
- 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 +9 -2
- package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
- package/plugins/copyPaste/copyPaste.js +160 -167
- package/plugins/copyPaste/copyPaste.mjs +161 -166
- package/plugins/customBorders/contextMenuItem/bottom.js +2 -2
- package/plugins/customBorders/contextMenuItem/left.js +2 -2
- package/plugins/customBorders/contextMenuItem/noBorders.js +2 -2
- package/plugins/customBorders/contextMenuItem/right.js +2 -2
- package/plugins/customBorders/contextMenuItem/top.js +2 -2
- package/plugins/customBorders/customBorders.js +27 -26
- package/plugins/customBorders/customBorders.mjs +24 -21
- package/plugins/dragToScroll/dragToScroll.js +2 -4
- package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
- package/plugins/dropdownMenu/dropdownMenu.js +130 -44
- package/plugins/dropdownMenu/dropdownMenu.mjs +127 -39
- package/plugins/exportFile/dataProvider.js +1 -2
- package/plugins/exportFile/exportFile.js +4 -6
- package/plugins/exportFile/typeFactory.js +5 -8
- package/plugins/exportFile/types/_base.js +1 -2
- package/plugins/exportFile/types/csv.js +1 -2
- package/plugins/filters/component/_base.js +23 -8
- package/plugins/filters/component/_base.mjs +23 -8
- package/plugins/filters/component/actionBar.js +31 -29
- package/plugins/filters/component/actionBar.mjs +26 -23
- package/plugins/filters/component/condition.js +48 -61
- package/plugins/filters/component/condition.mjs +40 -52
- package/plugins/filters/component/operators.js +21 -22
- package/plugins/filters/component/operators.mjs +18 -18
- package/plugins/filters/component/value.js +37 -28
- package/plugins/filters/component/value.mjs +32 -22
- package/plugins/filters/condition/beginsWith.js +3 -4
- package/plugins/filters/condition/between.js +3 -4
- package/plugins/filters/condition/byValue.js +1 -2
- package/plugins/filters/condition/contains.js +3 -4
- package/plugins/filters/condition/date/after.js +3 -4
- package/plugins/filters/condition/date/before.js +3 -4
- package/plugins/filters/condition/date/today.js +3 -4
- package/plugins/filters/condition/date/tomorrow.js +3 -4
- package/plugins/filters/condition/date/yesterday.js +3 -4
- package/plugins/filters/condition/empty.js +3 -4
- package/plugins/filters/condition/endsWith.js +3 -4
- package/plugins/filters/condition/equal.js +3 -4
- package/plugins/filters/condition/false.js +1 -2
- package/plugins/filters/condition/greaterThan.js +3 -4
- package/plugins/filters/condition/greaterThanOrEqual.js +3 -4
- package/plugins/filters/condition/lessThan.js +3 -4
- package/plugins/filters/condition/lessThanOrEqual.js +3 -4
- package/plugins/filters/condition/none.js +3 -4
- package/plugins/filters/condition/notBetween.js +3 -4
- package/plugins/filters/condition/notContains.js +3 -4
- package/plugins/filters/condition/notEmpty.js +3 -4
- package/plugins/filters/condition/notEqual.js +3 -4
- package/plugins/filters/condition/true.js +1 -2
- package/plugins/filters/conditionCollection.d.ts +3 -2
- package/plugins/filters/conditionCollection.js +1 -2
- package/plugins/filters/conditionRegisterer.js +1 -2
- package/plugins/filters/conditionUpdateObserver.js +1 -2
- package/plugins/filters/constants.js +4 -8
- package/plugins/filters/constants.mjs +1 -1
- package/plugins/filters/dataFilter.js +1 -2
- package/plugins/filters/filters.d.ts +3 -5
- package/plugins/filters/filters.js +118 -67
- package/plugins/filters/filters.mjs +109 -56
- package/plugins/filters/logicalOperationRegisterer.js +1 -2
- package/plugins/filters/logicalOperations/conjunction.js +4 -6
- package/plugins/filters/logicalOperations/disjunction.js +4 -6
- package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +4 -6
- package/plugins/filters/menu/focusController.js +123 -0
- package/plugins/filters/menu/focusController.mjs +119 -0
- package/plugins/filters/menu/focusNavigator.js +30 -0
- package/plugins/filters/menu/focusNavigator.mjs +26 -0
- package/plugins/filters/ui/_base.js +37 -15
- package/plugins/filters/ui/_base.mjs +35 -13
- package/plugins/filters/ui/input.js +43 -35
- package/plugins/filters/ui/input.mjs +42 -33
- package/plugins/filters/ui/link.js +44 -12
- package/plugins/filters/ui/link.mjs +44 -11
- package/plugins/filters/ui/multipleSelect.js +237 -133
- package/plugins/filters/ui/multipleSelect.mjs +232 -127
- package/plugins/filters/ui/radioInput.js +42 -18
- package/plugins/filters/ui/radioInput.mjs +42 -17
- package/plugins/filters/ui/select.js +152 -77
- package/plugins/filters/ui/select.mjs +148 -72
- package/plugins/formulas/engine/settings.js +2 -4
- package/plugins/formulas/formulas.js +3 -6
- package/plugins/formulas/indexSyncer/axisSyncer.js +1 -2
- package/plugins/formulas/indexSyncer/index.js +1 -2
- package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +2 -2
- package/plugins/hiddenColumns/contextMenuItem/showColumn.js +2 -2
- package/plugins/hiddenColumns/hiddenColumns.d.ts +1 -0
- package/plugins/hiddenColumns/hiddenColumns.js +49 -6
- package/plugins/hiddenColumns/hiddenColumns.mjs +48 -3
- package/plugins/hiddenRows/contextMenuItem/hideRow.js +2 -2
- package/plugins/hiddenRows/contextMenuItem/showRow.js +2 -2
- package/plugins/hiddenRows/hiddenRows.d.ts +1 -0
- package/plugins/hiddenRows/hiddenRows.js +49 -6
- package/plugins/hiddenRows/hiddenRows.mjs +48 -3
- package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +2 -2
- package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +2 -2
- package/plugins/manualColumnFreeze/manualColumnFreeze.js +2 -4
- package/plugins/manualColumnMove/manualColumnMove.js +9 -17
- package/plugins/manualColumnMove/manualColumnMove.mjs +7 -13
- package/plugins/manualColumnMove/ui/_base.js +1 -2
- package/plugins/manualColumnMove/ui/backlight.js +1 -2
- package/plugins/manualColumnMove/ui/guideline.js +1 -2
- package/plugins/manualColumnResize/manualColumnResize.js +2 -4
- package/plugins/manualRowMove/manualRowMove.js +6 -23
- package/plugins/manualRowMove/manualRowMove.mjs +4 -19
- package/plugins/manualRowMove/ui/_base.js +1 -2
- package/plugins/manualRowMove/ui/backlight.js +1 -2
- package/plugins/manualRowMove/ui/guideline.js +1 -2
- package/plugins/manualRowResize/manualRowResize.js +2 -4
- package/plugins/mergeCells/calculations/autofill.js +1 -2
- package/plugins/mergeCells/calculations/selection.js +1 -2
- package/plugins/mergeCells/cellCoords.js +1 -2
- package/plugins/mergeCells/cellsCollection.js +1 -2
- package/plugins/mergeCells/contextMenuItem/toggleMerge.js +2 -2
- package/plugins/mergeCells/mergeCells.js +7 -20
- package/plugins/mergeCells/mergeCells.mjs +5 -16
- package/plugins/multiColumnSorting/multiColumnSorting.js +60 -6
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +59 -3
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +2 -4
- package/plugins/nestedHeaders/nestedHeaders.js +263 -36
- package/plugins/nestedHeaders/nestedHeaders.mjs +262 -33
- package/plugins/nestedHeaders/stateManager/index.js +102 -3
- package/plugins/nestedHeaders/stateManager/index.mjs +102 -3
- package/plugins/nestedHeaders/stateManager/sourceSettings.js +1 -2
- package/plugins/nestedHeaders/utils/ghostTable.js +1 -2
- package/plugins/nestedRows/data/dataManager.js +1 -2
- package/plugins/nestedRows/nestedRows.js +47 -10
- package/plugins/nestedRows/nestedRows.mjs +45 -6
- package/plugins/nestedRows/ui/_base.js +1 -2
- package/plugins/nestedRows/ui/collapsing.js +1 -2
- package/plugins/nestedRows/ui/contextMenu.js +3 -4
- package/plugins/nestedRows/ui/headers.js +13 -3
- package/plugins/nestedRows/ui/headers.mjs +13 -2
- package/plugins/persistentState/persistentState.js +2 -4
- package/plugins/persistentState/storage.js +1 -2
- package/plugins/search/search.js +2 -4
- package/plugins/touchScroll/touchScroll.js +2 -4
- package/plugins/trimRows/trimRows.js +2 -4
- package/plugins/undoRedo/index.js +2 -2
- package/plugins/undoRedo/undoRedo.js +2 -4
- package/renderers/autocompleteRenderer/autocompleteRenderer.js +9 -2
- package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +8 -0
- package/renderers/baseRenderer/baseRenderer.js +18 -2
- package/renderers/baseRenderer/baseRenderer.mjs +18 -1
- package/renderers/checkboxRenderer/checkboxRenderer.js +10 -6
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
- package/renderers/dateRenderer/dateRenderer.d.ts +5 -0
- package/renderers/dateRenderer/dateRenderer.js +28 -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 +28 -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/htmlRenderer/htmlRenderer.js +1 -2
- package/renderers/index.d.ts +9 -0
- package/renderers/numericRenderer/numericRenderer.js +1 -2
- package/renderers/passwordRenderer/passwordRenderer.js +1 -2
- 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 +26 -0
- package/renderers/selectRenderer/selectRenderer.mjs +22 -0
- package/renderers/textRenderer/textRenderer.js +1 -2
- package/renderers/timeRenderer/timeRenderer.js +1 -2
- package/selection/highlight/highlight.js +257 -73
- 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 +32 -29
- 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 +9 -10
- package/selection/range.mjs +8 -8
- package/selection/selection.js +334 -154
- package/selection/selection.mjs +330 -151
- package/selection/transformation.js +233 -94
- package/selection/transformation.mjs +232 -92
- package/selection/utils.js +20 -31
- package/selection/utils.mjs +16 -21
- package/settings.d.ts +4 -0
- package/shortcutContexts/commands/editor/closeAndSave.js +11 -0
- package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.js +11 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
- package/shortcutContexts/commands/editor/fastOpen.js +15 -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 +26 -0
- package/shortcutContexts/commands/editor/open.mjs +23 -0
- package/shortcutContexts/commands/emptySelectedCells.js +10 -0
- package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
- package/shortcutContexts/commands/extendCellsSelection/down.js +14 -0
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +24 -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 +14 -0
- package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/right.js +14 -0
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +18 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +28 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +18 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +18 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +28 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +28 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +28 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +18 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/up.js +14 -0
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +24 -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 +12 -0
- package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +32 -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 +11 -0
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +11 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/left.js +9 -0
- package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/right.js +9 -0
- package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +16 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +16 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +18 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.js +20 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.js +16 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +18 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
- package/shortcutContexts/commands/moveCellSelection/up.js +12 -0
- package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +32 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +29 -0
- package/shortcutContexts/commands/populateSelectedCellsData.js +28 -0
- package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
- package/shortcutContexts/commands/scrollToFocusedCell.js +34 -0
- package/shortcutContexts/commands/scrollToFocusedCell.mjs +31 -0
- package/shortcutContexts/commands/selectAll.js +11 -0
- package/shortcutContexts/commands/selectAll.mjs +8 -0
- package/shortcutContexts/constants.js +11 -0
- package/shortcutContexts/constants.mjs +8 -0
- package/shortcutContexts/editor.js +25 -0
- package/shortcutContexts/editor.mjs +21 -0
- package/shortcutContexts/grid.js +167 -0
- package/shortcutContexts/grid.mjs +163 -0
- package/shortcutContexts/index.js +24 -0
- package/shortcutContexts/index.mjs +11 -0
- package/shortcuts/context.d.ts +1 -0
- package/shortcuts/context.js +23 -4
- package/shortcuts/context.mjs +23 -5
- package/shortcuts/manager.js +31 -7
- package/shortcuts/manager.mjs +32 -7
- package/shortcuts/recorder.js +30 -14
- package/shortcuts/recorder.mjs +30 -14
- package/shortcuts/utils.js +19 -5
- package/shortcuts/utils.mjs +18 -4
- package/tableView.js +113 -16
- package/tableView.mjs +113 -15
- package/utils/dataStructures/linkedList.js +1 -2
- package/utils/dataStructures/priorityMap.js +2 -4
- package/utils/dataStructures/queue.js +1 -2
- package/utils/dataStructures/stack.js +1 -2
- package/utils/dataStructures/tree.js +3 -6
- package/utils/ghostTable.js +32 -17
- package/utils/ghostTable.mjs +31 -15
- package/utils/interval.js +1 -2
- package/utils/paginator.js +151 -0
- package/utils/paginator.mjs +147 -0
- package/utils/parseTable.js +527 -83
- package/utils/parseTable.mjs +523 -82
- package/utils/rootInstance.js +2 -4
- package/utils/samplesGenerator.js +21 -13
- package/utils/samplesGenerator.mjs +20 -11
- package/utils/staticRegister.js +1 -2
- package/validators/autocompleteValidator/autocompleteValidator.js +1 -2
- package/validators/dateValidator/dateValidator.js +1 -2
- package/validators/numericValidator/numericValidator.js +1 -2
- package/validators/timeValidator/timeValidator.js +1 -2
- package/3rdparty/walkontable/src/selection.js +0 -295
- package/3rdparty/walkontable/src/selection.mjs +0 -290
- package/plugins/contextMenu/predefinedItems.js +0 -76
- package/plugins/contextMenu/predefinedItems.mjs +0 -68
- package/plugins/copyPaste/clipboardData.js +0 -18
- package/plugins/copyPaste/clipboardData.mjs +0 -14
- package/plugins/copyPaste/focusableElement.js +0 -186
- package/plugins/copyPaste/focusableElement.mjs +0 -180
- package/plugins/copyPaste/pasteEvent.js +0 -14
- package/plugins/copyPaste/pasteEvent.mjs +0 -9
- 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/selection/selection.js
CHANGED
@@ -2,21 +2,36 @@
|
|
2
2
|
|
3
3
|
exports.__esModule = true;
|
4
4
|
require("core-js/modules/es.error.cause.js");
|
5
|
-
var
|
6
|
-
var
|
5
|
+
var _src = require("./../3rdparty/walkontable/src");
|
6
|
+
var _highlight = _interopRequireWildcard(require("./highlight/highlight"));
|
7
7
|
var _range = _interopRequireDefault(require("./range"));
|
8
8
|
var _object = require("./../helpers/object");
|
9
9
|
var _mixed = require("./../helpers/mixed");
|
10
|
+
var _number = require("./../helpers/number");
|
10
11
|
var _array = require("./../helpers/array");
|
11
12
|
var _localHooks = _interopRequireDefault(require("./../mixins/localHooks"));
|
12
13
|
var _transformation = _interopRequireDefault(require("./transformation"));
|
13
14
|
var _utils = require("./utils");
|
14
15
|
var _templateLiteralTag = require("./../helpers/templateLiteralTag");
|
16
|
+
var _a11y = require("../helpers/a11y");
|
15
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
18
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
19
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
20
|
+
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
21
|
+
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
22
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
23
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
24
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
25
|
+
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
26
|
+
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; } }
|
27
|
+
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
|
28
|
+
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
29
|
+
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
16
30
|
/**
|
17
31
|
* @class Selection
|
18
32
|
* @util
|
19
33
|
*/
|
34
|
+
var _disableHeadersHighlight = /*#__PURE__*/new WeakMap();
|
20
35
|
class Selection {
|
21
36
|
constructor(settings, tableProps) {
|
22
37
|
var _this = this;
|
@@ -25,57 +40,73 @@ class Selection {
|
|
25
40
|
*
|
26
41
|
* @type {GridSettings}
|
27
42
|
*/
|
28
|
-
this
|
43
|
+
_defineProperty(this, "settings", void 0);
|
29
44
|
/**
|
30
45
|
* An additional object with dynamically defined properties which describes table state.
|
31
46
|
*
|
32
47
|
* @type {object}
|
33
48
|
*/
|
34
|
-
this
|
49
|
+
_defineProperty(this, "tableProps", void 0);
|
35
50
|
/**
|
36
51
|
* The flag which determines if the selection is in progress.
|
37
52
|
*
|
38
53
|
* @type {boolean}
|
39
54
|
*/
|
40
|
-
this
|
55
|
+
_defineProperty(this, "inProgress", false);
|
41
56
|
/**
|
42
|
-
*
|
57
|
+
* Selection data layer (handle visual coordinates).
|
43
58
|
*
|
44
|
-
* @type {
|
59
|
+
* @type {SelectionRange}
|
60
|
+
*/
|
61
|
+
_defineProperty(this, "selectedRange", new _range.default((highlight, from, to) => {
|
62
|
+
return this.tableProps.createCellRange(highlight, from, to);
|
63
|
+
}));
|
64
|
+
/**
|
65
|
+
* Visualization layer.
|
66
|
+
*
|
67
|
+
* @type {Highlight}
|
68
|
+
*/
|
69
|
+
_defineProperty(this, "highlight", void 0);
|
70
|
+
/**
|
71
|
+
* The module for modifying coordinates.
|
72
|
+
*
|
73
|
+
* @type {Transformation}
|
45
74
|
*/
|
46
|
-
this
|
75
|
+
_defineProperty(this, "transformation", void 0);
|
47
76
|
/**
|
48
77
|
* The collection of the selection layer levels where the whole row was selected using the row header or
|
49
78
|
* the corner header.
|
50
79
|
*
|
51
|
-
* @type {Set
|
80
|
+
* @type {Set<number>}
|
52
81
|
*/
|
53
|
-
this
|
82
|
+
_defineProperty(this, "selectedByRowHeader", new Set());
|
54
83
|
/**
|
55
84
|
* The collection of the selection layer levels where the whole column was selected using the column header or
|
56
85
|
* the corner header.
|
57
86
|
*
|
58
|
-
* @type {Set
|
87
|
+
* @type {Set<number>}
|
59
88
|
*/
|
60
|
-
this
|
89
|
+
_defineProperty(this, "selectedByColumnHeader", new Set());
|
61
90
|
/**
|
62
|
-
*
|
91
|
+
* When sets disable highlighting the headers even when the logical coordinates points on them.
|
63
92
|
*
|
64
|
-
* @type {
|
93
|
+
* @type {boolean}
|
65
94
|
*/
|
66
|
-
this
|
67
|
-
|
95
|
+
_classPrivateFieldInitSpec(this, _disableHeadersHighlight, {
|
96
|
+
writable: true,
|
97
|
+
value: false
|
68
98
|
});
|
69
|
-
|
70
|
-
|
71
|
-
*
|
72
|
-
* @type {Highlight}
|
73
|
-
*/
|
99
|
+
this.settings = settings;
|
100
|
+
this.tableProps = tableProps;
|
74
101
|
this.highlight = new _highlight.default({
|
75
102
|
headerClassName: settings.currentHeaderClassName,
|
103
|
+
headerAttributes: [(0, _a11y.A11Y_SELECTED)()],
|
76
104
|
activeHeaderClassName: settings.activeHeaderClassName,
|
77
105
|
rowClassName: settings.currentRowClassName,
|
78
106
|
columnClassName: settings.currentColClassName,
|
107
|
+
cellAttributes: [(0, _a11y.A11Y_SELECTED)()],
|
108
|
+
rowIndexMapper: this.tableProps.rowIndexMapper,
|
109
|
+
columnIndexMapper: this.tableProps.columnIndexMapper,
|
79
110
|
disabledCellSelection: (row, column) => this.tableProps.isDisabledCellSelection(row, column),
|
80
111
|
cellCornerVisible: function () {
|
81
112
|
return _this.isCellCornerVisible(...arguments);
|
@@ -86,21 +117,19 @@ class Selection {
|
|
86
117
|
visualToRenderableCoords: coords => this.tableProps.visualToRenderableCoords(coords),
|
87
118
|
renderableToVisualCoords: coords => this.tableProps.renderableToVisualCoords(coords),
|
88
119
|
createCellCoords: (row, column) => this.tableProps.createCellCoords(row, column),
|
89
|
-
createCellRange: (highlight, from, to) => this.tableProps.createCellRange(highlight, from, to)
|
90
|
-
rowIndexMapper: () => this.tableProps.rowIndexMapper(),
|
91
|
-
columnIndexMapper: () => this.tableProps.columnIndexMapper()
|
120
|
+
createCellRange: (highlight, from, to) => this.tableProps.createCellRange(highlight, from, to)
|
92
121
|
});
|
93
|
-
/**
|
94
|
-
* The module for modifying coordinates.
|
95
|
-
*
|
96
|
-
* @type {Transformation}
|
97
|
-
*/
|
98
122
|
this.transformation = new _transformation.default(this.selectedRange, {
|
99
|
-
|
100
|
-
|
123
|
+
rowIndexMapper: this.tableProps.rowIndexMapper,
|
124
|
+
columnIndexMapper: this.tableProps.columnIndexMapper,
|
125
|
+
countRenderableRows: () => this.tableProps.countRenderableRows(),
|
126
|
+
countRenderableColumns: () => this.tableProps.countRenderableColumns(),
|
127
|
+
countRowHeaders: () => this.tableProps.countRowHeaders(),
|
128
|
+
countColHeaders: () => this.tableProps.countColHeaders(),
|
101
129
|
visualToRenderableCoords: coords => this.tableProps.visualToRenderableCoords(coords),
|
102
130
|
renderableToVisualCoords: coords => this.tableProps.renderableToVisualCoords(coords),
|
103
131
|
createCellCoords: (row, column) => this.tableProps.createCellCoords(row, column),
|
132
|
+
navigableHeaders: () => settings.navigableHeaders,
|
104
133
|
fixedRowsBottom: () => settings.fixedRowsBottom,
|
105
134
|
minSpareRows: () => settings.minSpareRows,
|
106
135
|
minSpareCols: () => settings.minSpareCols,
|
@@ -143,6 +172,18 @@ class Selection {
|
|
143
172
|
}
|
144
173
|
return _this.runLocalHooks('insertColRequire', ...args);
|
145
174
|
});
|
175
|
+
this.transformation.addLocalHook('beforeRowWrap', function () {
|
176
|
+
for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
|
177
|
+
args[_key7] = arguments[_key7];
|
178
|
+
}
|
179
|
+
return _this.runLocalHooks('beforeRowWrap', ...args);
|
180
|
+
});
|
181
|
+
this.transformation.addLocalHook('beforeColumnWrap', function () {
|
182
|
+
for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
|
183
|
+
args[_key8] = arguments[_key8];
|
184
|
+
}
|
185
|
+
return _this.runLocalHooks('beforeColumnWrap', ...args);
|
186
|
+
});
|
146
187
|
}
|
147
188
|
|
148
189
|
/**
|
@@ -155,14 +196,14 @@ class Selection {
|
|
155
196
|
}
|
156
197
|
|
157
198
|
/**
|
158
|
-
* Indicate that selection process began. It sets
|
199
|
+
* Indicate that selection process began. It sets internally `.inProgress` property to `true`.
|
159
200
|
*/
|
160
201
|
begin() {
|
161
202
|
this.inProgress = true;
|
162
203
|
}
|
163
204
|
|
164
205
|
/**
|
165
|
-
* Indicate that selection process finished. It sets
|
206
|
+
* Indicate that selection process finished. It sets internally `.inProgress` property to `false`.
|
166
207
|
*/
|
167
208
|
finish() {
|
168
209
|
this.runLocalHooks('afterSelectionFinished', Array.from(this.selectedRange));
|
@@ -187,33 +228,25 @@ class Selection {
|
|
187
228
|
* the default trigger will be used.
|
188
229
|
* @param {boolean} [fragment=false] If `true`, the selection will be treated as a partial selection where the
|
189
230
|
* `setRangeEnd` method won't be called on every `setRangeStart` call.
|
231
|
+
* @param {CellCoords} [highlightCoords] If set, allows changing the coordinates of the highlight/focus cell.
|
190
232
|
*/
|
191
233
|
setRangeStart(coords, multipleSelection) {
|
192
234
|
let fragment = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
235
|
+
let highlightCoords = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : coords;
|
193
236
|
const isMultipleMode = this.settings.selectionMode === 'multiple';
|
194
237
|
const isMultipleSelection = (0, _mixed.isUndefined)(multipleSelection) ? this.tableProps.getShortcutManager().isCtrlPressed() : multipleSelection;
|
195
|
-
const isRowNegative = coords.row < 0;
|
196
|
-
const isColumnNegative = coords.col < 0;
|
197
|
-
const selectedByCorner = isRowNegative && isColumnNegative;
|
198
238
|
// We are creating copy. We would like to modify just the start of the selection by below hook. Then original coords
|
199
239
|
// should be handled by next methods.
|
200
240
|
const coordsClone = coords.clone();
|
201
|
-
this.selectedByCorner = selectedByCorner;
|
202
241
|
this.runLocalHooks(`beforeSetRangeStart${fragment ? 'Only' : ''}`, coordsClone);
|
203
242
|
if (!isMultipleMode || isMultipleMode && !isMultipleSelection && (0, _mixed.isUndefined)(multipleSelection)) {
|
204
243
|
this.selectedRange.clear();
|
205
244
|
}
|
206
|
-
this.selectedRange.add(coordsClone);
|
245
|
+
this.selectedRange.add(coordsClone).current().setHighlight(highlightCoords.clone());
|
207
246
|
if (this.getLayerLevel() === 0) {
|
208
247
|
this.selectedByRowHeader.clear();
|
209
248
|
this.selectedByColumnHeader.clear();
|
210
249
|
}
|
211
|
-
if (!selectedByCorner && isColumnNegative) {
|
212
|
-
this.selectedByRowHeader.add(this.getLayerLevel());
|
213
|
-
}
|
214
|
-
if (!selectedByCorner && isRowNegative) {
|
215
|
-
this.selectedByColumnHeader.add(this.getLayerLevel());
|
216
|
-
}
|
217
250
|
if (!fragment) {
|
218
251
|
this.setRangeEnd(coords);
|
219
252
|
}
|
@@ -226,9 +259,11 @@ class Selection {
|
|
226
259
|
* @param {boolean} [multipleSelection] If `true`, selection will be worked in 'multiple' mode. This option works
|
227
260
|
* only when 'selectionMode' is set as 'multiple'. If the argument is not defined
|
228
261
|
* the default trigger will be used.
|
262
|
+
* @param {CellCoords} [highlightCoords] If set, allows changing the coordinates of the highlight/focus cell.
|
229
263
|
*/
|
230
264
|
setRangeStartOnly(coords, multipleSelection) {
|
231
|
-
|
265
|
+
let highlightCoords = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : coords;
|
266
|
+
this.setRangeStart(coords, multipleSelection, true, highlightCoords);
|
232
267
|
}
|
233
268
|
|
234
269
|
/**
|
@@ -240,21 +275,40 @@ class Selection {
|
|
240
275
|
if (this.selectedRange.isEmpty()) {
|
241
276
|
return;
|
242
277
|
}
|
243
|
-
|
244
|
-
// We are creating copy. We would like to modify just the end of the selection by below hook. Then original coords
|
245
|
-
// should be handled by next methods.
|
246
278
|
const coordsClone = coords.clone();
|
279
|
+
const countRows = this.tableProps.countRows();
|
280
|
+
const countCols = this.tableProps.countCols();
|
281
|
+
const isSingle = this.selectedRange.current().clone().setTo(coords).isSingleHeader();
|
282
|
+
|
283
|
+
// Ignore processing the end range when the header selection starts overlapping the corner and
|
284
|
+
// the selection is not a single header highlight.
|
285
|
+
if ((countRows > 0 || countCols > 0) && (countRows === 0 && coordsClone.col < 0 && !isSingle || countCols === 0 && coordsClone.row < 0 && !isSingle)) {
|
286
|
+
return;
|
287
|
+
}
|
247
288
|
this.runLocalHooks('beforeSetRangeEnd', coordsClone);
|
248
289
|
this.begin();
|
249
290
|
const cellRange = this.selectedRange.current();
|
250
|
-
if (this.settings.
|
251
|
-
cellRange.
|
291
|
+
if (!this.settings.navigableHeaders) {
|
292
|
+
cellRange.highlight.normalize();
|
293
|
+
}
|
294
|
+
if (this.settings.selectionMode === 'single') {
|
295
|
+
cellRange.setFrom(cellRange.highlight);
|
296
|
+
cellRange.setTo(cellRange.highlight);
|
297
|
+
} else {
|
298
|
+
cellRange.setTo(coordsClone);
|
252
299
|
}
|
253
300
|
|
254
|
-
//
|
255
|
-
|
256
|
-
|
257
|
-
|
301
|
+
// Prevent creating "area" selection that overlaps headers.
|
302
|
+
if (countRows > 0 && countCols > 0) {
|
303
|
+
if (!this.settings.navigableHeaders || this.settings.navigableHeaders && !cellRange.isSingleHeader()) {
|
304
|
+
cellRange.to.normalize();
|
305
|
+
}
|
306
|
+
}
|
307
|
+
this.runLocalHooks('beforeHighlightSet');
|
308
|
+
const focusHighlight = this.highlight.getFocus();
|
309
|
+
focusHighlight.clear();
|
310
|
+
if (this.highlight.isEnabledFor(_highlight.FOCUS_TYPE, cellRange.highlight)) {
|
311
|
+
focusHighlight.add(this.selectedRange.current().highlight).commit().syncWith(cellRange);
|
258
312
|
}
|
259
313
|
const layerLevel = this.getLayerLevel();
|
260
314
|
|
@@ -262,69 +316,80 @@ class Selection {
|
|
262
316
|
// indication that the new selection is performing.
|
263
317
|
if (layerLevel < this.highlight.layerLevel) {
|
264
318
|
(0, _array.arrayEach)(this.highlight.getAreas(), highlight => void highlight.clear());
|
265
|
-
(0, _array.arrayEach)(this.highlight.
|
266
|
-
(0, _array.arrayEach)(this.highlight.
|
319
|
+
(0, _array.arrayEach)(this.highlight.getLayeredAreas(), highlight => void highlight.clear());
|
320
|
+
(0, _array.arrayEach)(this.highlight.getRowHeaders(), highlight => void highlight.clear());
|
321
|
+
(0, _array.arrayEach)(this.highlight.getColumnHeaders(), highlight => void highlight.clear());
|
322
|
+
(0, _array.arrayEach)(this.highlight.getActiveRowHeaders(), highlight => void highlight.clear());
|
323
|
+
(0, _array.arrayEach)(this.highlight.getActiveColumnHeaders(), highlight => void highlight.clear());
|
324
|
+
(0, _array.arrayEach)(this.highlight.getActiveCornerHeaders(), highlight => void highlight.clear());
|
325
|
+
(0, _array.arrayEach)(this.highlight.getRowHighlights(), highlight => void highlight.clear());
|
326
|
+
(0, _array.arrayEach)(this.highlight.getColumnHighlights(), highlight => void highlight.clear());
|
267
327
|
}
|
268
328
|
this.highlight.useLayerLevel(layerLevel);
|
269
|
-
const areaHighlight = this.highlight.
|
270
|
-
const
|
271
|
-
const
|
329
|
+
const areaHighlight = this.highlight.createArea();
|
330
|
+
const layeredAreaHighlight = this.highlight.createLayeredArea();
|
331
|
+
const rowHeaderHighlight = this.highlight.createRowHeader();
|
332
|
+
const columnHeaderHighlight = this.highlight.createColumnHeader();
|
333
|
+
const activeRowHeaderHighlight = this.highlight.createActiveRowHeader();
|
334
|
+
const activeColumnHeaderHighlight = this.highlight.createActiveColumnHeader();
|
335
|
+
const activeCornerHeaderHighlight = this.highlight.createActiveCornerHeader();
|
336
|
+
const rowHighlight = this.highlight.createRowHighlight();
|
337
|
+
const columnHighlight = this.highlight.createColumnHighlight();
|
272
338
|
areaHighlight.clear();
|
273
|
-
|
274
|
-
|
275
|
-
|
339
|
+
layeredAreaHighlight.clear();
|
340
|
+
rowHeaderHighlight.clear();
|
341
|
+
columnHeaderHighlight.clear();
|
342
|
+
activeRowHeaderHighlight.clear();
|
343
|
+
activeColumnHeaderHighlight.clear();
|
344
|
+
activeCornerHeaderHighlight.clear();
|
345
|
+
rowHighlight.clear();
|
346
|
+
columnHighlight.clear();
|
347
|
+
if (this.highlight.isEnabledFor(_highlight.AREA_TYPE, cellRange.highlight) && (this.isMultiple() || layerLevel >= 1)) {
|
276
348
|
areaHighlight.add(cellRange.from).add(cellRange.to).commit();
|
349
|
+
layeredAreaHighlight.add(cellRange.from).add(cellRange.to).commit();
|
277
350
|
if (layerLevel === 1) {
|
278
351
|
// For single cell selection in the same layer, we do not create area selection to prevent blue background.
|
279
352
|
// When non-consecutive selection is performed we have to add that missing area selection to the previous layer
|
280
353
|
// based on previous coordinates. It only occurs when the previous selection wasn't select multiple cells.
|
281
354
|
const previousRange = this.selectedRange.previous();
|
282
|
-
this.highlight.useLayerLevel(layerLevel - 1)
|
355
|
+
this.highlight.useLayerLevel(layerLevel - 1);
|
356
|
+
this.highlight.createArea().add(previousRange.from).commit()
|
357
|
+
// Range may start with hidden indexes. Commit would not found start point (as we add just the `from` coords).
|
358
|
+
.syncWith(previousRange);
|
359
|
+
this.highlight.createLayeredArea().add(previousRange.from).commit()
|
283
360
|
// Range may start with hidden indexes. Commit would not found start point (as we add just the `from` coords).
|
284
361
|
.syncWith(previousRange);
|
285
362
|
this.highlight.useLayerLevel(layerLevel);
|
286
363
|
}
|
287
364
|
}
|
288
|
-
if (this.highlight.isEnabledFor(
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
}
|
305
|
-
if (this.settings.selectionMode === 'single') {
|
306
|
-
if (this.isSelectedByAnyHeader()) {
|
307
|
-
headerCellRange.from.normalize();
|
365
|
+
if (this.highlight.isEnabledFor(_highlight.HEADER_TYPE, cellRange.highlight)) {
|
366
|
+
if (!cellRange.isSingleHeader()) {
|
367
|
+
const rowCoordsFrom = this.tableProps.createCellCoords(Math.max(cellRange.from.row, 0), -1);
|
368
|
+
const rowCoordsTo = this.tableProps.createCellCoords(cellRange.to.row, -1);
|
369
|
+
const columnCoordsFrom = this.tableProps.createCellCoords(-1, Math.max(cellRange.from.col, 0));
|
370
|
+
const columnCoordsTo = this.tableProps.createCellCoords(-1, cellRange.to.col);
|
371
|
+
if (this.settings.selectionMode === 'single') {
|
372
|
+
rowHeaderHighlight.add(rowCoordsFrom).commit();
|
373
|
+
columnHeaderHighlight.add(columnCoordsFrom).commit();
|
374
|
+
rowHighlight.add(rowCoordsFrom).commit();
|
375
|
+
columnHighlight.add(columnCoordsFrom).commit();
|
376
|
+
} else {
|
377
|
+
rowHeaderHighlight.add(rowCoordsFrom).add(rowCoordsTo).commit();
|
378
|
+
columnHeaderHighlight.add(columnCoordsFrom).add(columnCoordsTo).commit();
|
379
|
+
rowHighlight.add(rowCoordsFrom).add(rowCoordsTo).commit();
|
380
|
+
columnHighlight.add(columnCoordsFrom).add(columnCoordsTo).commit();
|
308
381
|
}
|
309
|
-
headerHighlight.add(headerCellRange.from).commit();
|
310
|
-
} else {
|
311
|
-
headerHighlight.add(headerCellRange.from).add(headerCellRange.to).commit();
|
312
382
|
}
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
if (isRowSelected) {
|
318
|
-
activeHeaderHighlight.add(this.tableProps.createCellCoords(cellRange.from.row, -1)).add(this.tableProps.createCellCoords(cellRange.to.row, -1)).commit();
|
319
|
-
}
|
383
|
+
const highlightRowHeaders = !_classPrivateFieldGet(this, _disableHeadersHighlight) && this.isEntireRowSelected() && (countCols > 0 && countCols === cellRange.getWidth() || countCols === 0 && this.isSelectedByRowHeader());
|
384
|
+
const highlightColumnHeaders = !_classPrivateFieldGet(this, _disableHeadersHighlight) && this.isEntireColumnSelected() && (countRows > 0 && countRows === cellRange.getHeight() || countRows === 0 && this.isSelectedByColumnHeader());
|
385
|
+
if (highlightRowHeaders) {
|
386
|
+
activeRowHeaderHighlight.add(this.tableProps.createCellCoords(Math.max(cellRange.from.row, 0), Math.min(-this.tableProps.countRowHeaders(), -1))).add(this.tableProps.createCellCoords(Math.max(cellRange.to.row, 0), -1)).commit();
|
320
387
|
}
|
321
|
-
if (
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
activeHeaderHighlight.add(this.tableProps.createCellCoords(-1, cellRange.from.col)).add(this.tableProps.createCellCoords(-1, cellRange.to.col)).commit();
|
327
|
-
}
|
388
|
+
if (highlightColumnHeaders) {
|
389
|
+
activeColumnHeaderHighlight.add(this.tableProps.createCellCoords(Math.min(-this.tableProps.countColHeaders(), -1), Math.max(cellRange.from.col, 0))).add(this.tableProps.createCellCoords(-1, Math.max(cellRange.to.col, 0))).commit();
|
390
|
+
}
|
391
|
+
if (highlightRowHeaders && highlightColumnHeaders) {
|
392
|
+
activeCornerHeaderHighlight.add(this.tableProps.createCellCoords(-this.tableProps.countColHeaders(), -this.tableProps.countRowHeaders())).add(this.tableProps.createCellCoords(-1, -1)).commit();
|
328
393
|
}
|
329
394
|
}
|
330
395
|
this.runLocalHooks('afterSetRangeEnd', coords);
|
@@ -347,12 +412,12 @@ class Selection {
|
|
347
412
|
*
|
348
413
|
* @param {number} rowDelta Rows number to move, value can be passed as negative number.
|
349
414
|
* @param {number} colDelta Columns number to move, value can be passed as negative number.
|
350
|
-
* @param {boolean} [
|
351
|
-
*
|
415
|
+
* @param {boolean} [createMissingRecords=false] If `true` the new rows/columns will be created if necessary.
|
416
|
+
* Otherwise, row/column will be created according to `minSpareRows/minSpareCols` settings of Handsontable.
|
352
417
|
*/
|
353
418
|
transformStart(rowDelta, colDelta) {
|
354
|
-
let
|
355
|
-
this.setRangeStart(this.transformation.transformStart(rowDelta, colDelta,
|
419
|
+
let createMissingRecords = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
420
|
+
this.setRangeStart(this.transformation.transformStart(rowDelta, colDelta, createMissingRecords));
|
356
421
|
}
|
357
422
|
|
358
423
|
/**
|
@@ -393,7 +458,7 @@ class Selection {
|
|
393
458
|
*/
|
394
459
|
isSelectedByRowHeader() {
|
395
460
|
let layerLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getLayerLevel();
|
396
|
-
return !this.isSelectedByCorner(layerLevel) && this.
|
461
|
+
return !this.isSelectedByCorner(layerLevel) && (layerLevel === -1 ? this.selectedByRowHeader.size > 0 : this.selectedByRowHeader.has(layerLevel));
|
397
462
|
}
|
398
463
|
|
399
464
|
/**
|
@@ -405,7 +470,19 @@ class Selection {
|
|
405
470
|
*/
|
406
471
|
isEntireRowSelected() {
|
407
472
|
let layerLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getLayerLevel();
|
408
|
-
|
473
|
+
const tester = range => {
|
474
|
+
const {
|
475
|
+
col
|
476
|
+
} = range.getOuterTopStartCorner();
|
477
|
+
const rowHeaders = this.tableProps.countRowHeaders();
|
478
|
+
const countCols = this.tableProps.countCols();
|
479
|
+
return (rowHeaders > 0 && col < 0 || rowHeaders === 0) && range.getWidth() === countCols;
|
480
|
+
};
|
481
|
+
if (layerLevel === -1) {
|
482
|
+
return Array.from(this.selectedRange).some(range => tester(range));
|
483
|
+
}
|
484
|
+
const range = this.selectedRange.peekByIndex(layerLevel);
|
485
|
+
return range ? tester(range) : false;
|
409
486
|
}
|
410
487
|
|
411
488
|
/**
|
@@ -418,7 +495,7 @@ class Selection {
|
|
418
495
|
*/
|
419
496
|
isSelectedByColumnHeader() {
|
420
497
|
let layerLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getLayerLevel();
|
421
|
-
return !this.isSelectedByCorner() && this.
|
498
|
+
return !this.isSelectedByCorner() && (layerLevel === -1 ? this.selectedByColumnHeader.size > 0 : this.selectedByColumnHeader.has(layerLevel));
|
422
499
|
}
|
423
500
|
|
424
501
|
/**
|
@@ -430,7 +507,19 @@ class Selection {
|
|
430
507
|
*/
|
431
508
|
isEntireColumnSelected() {
|
432
509
|
let layerLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getLayerLevel();
|
433
|
-
|
510
|
+
const tester = range => {
|
511
|
+
const {
|
512
|
+
row
|
513
|
+
} = range.getOuterTopStartCorner();
|
514
|
+
const colHeaders = this.tableProps.countColHeaders();
|
515
|
+
const countRows = this.tableProps.countRows();
|
516
|
+
return (colHeaders > 0 && row < 0 || colHeaders === 0) && range.getHeight() === countRows;
|
517
|
+
};
|
518
|
+
if (layerLevel === -1) {
|
519
|
+
return Array.from(this.selectedRange).some(range => tester(range));
|
520
|
+
}
|
521
|
+
const range = this.selectedRange.peekByIndex(layerLevel);
|
522
|
+
return range ? tester(range) : false;
|
434
523
|
}
|
435
524
|
|
436
525
|
/**
|
@@ -448,7 +537,7 @@ class Selection {
|
|
448
537
|
* @returns {boolean}
|
449
538
|
*/
|
450
539
|
isSelectedByCorner() {
|
451
|
-
return this.
|
540
|
+
return this.selectedByColumnHeader.has(this.getLayerLevel()) && this.selectedByRowHeader.has(this.getLayerLevel());
|
452
541
|
}
|
453
542
|
|
454
543
|
/**
|
@@ -507,31 +596,61 @@ class Selection {
|
|
507
596
|
}
|
508
597
|
|
509
598
|
/**
|
510
|
-
*
|
599
|
+
* Selects all cells and headers.
|
511
600
|
*
|
512
|
-
* @param {boolean} [includeRowHeaders=false] `true` If the selection should include the row headers,
|
513
|
-
* otherwise.
|
514
|
-
* @param {boolean} [includeColumnHeaders=false] `true` If the selection should include the column
|
515
|
-
* otherwise.
|
601
|
+
* @param {boolean} [includeRowHeaders=false] `true` If the selection should include the row headers,
|
602
|
+
* `false` otherwise.
|
603
|
+
* @param {boolean} [includeColumnHeaders=false] `true` If the selection should include the column
|
604
|
+
* headers, `false` otherwise.
|
605
|
+
* @param {object} [options] Additional object with options.
|
606
|
+
* @param {{row: number, col: number} | boolean} [options.focusPosition] The argument allows changing the cell/header
|
607
|
+
* focus position. The value takes an object with a `row` and `col` properties from -N to N, where
|
608
|
+
* negative values point to the headers and positive values point to the cell range. If `false`, the focus
|
609
|
+
* position won't be changed.
|
610
|
+
* @param {boolean} [options.disableHeadersHighlight] If `true`, disables highlighting the headers even when
|
611
|
+
* the logical coordinates points on them.
|
516
612
|
*/
|
517
613
|
selectAll() {
|
614
|
+
var _this$getSelectedRang;
|
518
615
|
let includeRowHeaders = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
519
616
|
let includeColumnHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
617
|
+
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
|
618
|
+
focusPosition: false,
|
619
|
+
disableHeadersHighlight: false
|
620
|
+
};
|
520
621
|
const nrOfRows = this.tableProps.countRows();
|
521
622
|
const nrOfColumns = this.tableProps.countCols();
|
623
|
+
const countRowHeaders = this.tableProps.countRowHeaders();
|
624
|
+
const countColHeaders = this.tableProps.countColHeaders();
|
625
|
+
const rowFrom = includeColumnHeaders ? -countColHeaders : 0;
|
626
|
+
const columnFrom = includeRowHeaders ? -countRowHeaders : 0;
|
522
627
|
|
523
628
|
// We can't select cells when there is no data.
|
524
|
-
if (
|
629
|
+
if (rowFrom === 0 && columnFrom === 0 && (nrOfRows === 0 || nrOfColumns === 0)) {
|
525
630
|
return;
|
526
631
|
}
|
527
|
-
|
632
|
+
let highlight = (_this$getSelectedRang = this.getSelectedRange().current()) === null || _this$getSelectedRang === void 0 ? void 0 : _this$getSelectedRang.highlight;
|
633
|
+
const {
|
634
|
+
focusPosition,
|
635
|
+
disableHeadersHighlight
|
636
|
+
} = options;
|
637
|
+
_classPrivateFieldSet(this, _disableHeadersHighlight, disableHeadersHighlight);
|
638
|
+
if (focusPosition && Number.isInteger(focusPosition === null || focusPosition === void 0 ? void 0 : focusPosition.row) && Number.isInteger(focusPosition === null || focusPosition === void 0 ? void 0 : focusPosition.col)) {
|
639
|
+
highlight = this.tableProps.createCellCoords((0, _number.clamp)(focusPosition.row, rowFrom, nrOfRows - 1), (0, _number.clamp)(focusPosition.col, columnFrom, nrOfColumns - 1));
|
640
|
+
}
|
641
|
+
const startCoords = this.tableProps.createCellCoords(rowFrom, columnFrom);
|
528
642
|
const endCoords = this.tableProps.createCellCoords(nrOfRows - 1, nrOfColumns - 1);
|
529
643
|
this.clear();
|
530
|
-
this.setRangeStartOnly(startCoords);
|
531
|
-
|
532
|
-
|
644
|
+
this.setRangeStartOnly(startCoords, void 0, highlight);
|
645
|
+
if (columnFrom < 0) {
|
646
|
+
this.selectedByRowHeader.add(this.getLayerLevel());
|
647
|
+
}
|
648
|
+
if (rowFrom < 0) {
|
649
|
+
this.selectedByColumnHeader.add(this.getLayerLevel());
|
650
|
+
}
|
533
651
|
this.setRangeEnd(endCoords);
|
534
652
|
this.finish();
|
653
|
+
_classPrivateFieldSet(this, _disableHeadersHighlight, false);
|
535
654
|
}
|
536
655
|
|
537
656
|
/**
|
@@ -556,21 +675,29 @@ class Selection {
|
|
556
675
|
propToCol: prop => this.tableProps.propToCol(prop),
|
557
676
|
keepDirection: true
|
558
677
|
});
|
559
|
-
const
|
560
|
-
const
|
678
|
+
const navigableHeaders = this.settings.navigableHeaders;
|
679
|
+
const tableParams = {
|
680
|
+
countRows: this.tableProps.countRows(),
|
681
|
+
countCols: this.tableProps.countCols(),
|
682
|
+
countRowHeaders: navigableHeaders ? this.tableProps.countRowHeaders() : 0,
|
683
|
+
countColHeaders: navigableHeaders ? this.tableProps.countColHeaders() : 0
|
684
|
+
};
|
561
685
|
|
562
686
|
// Check if every layer of the coordinates are valid.
|
563
687
|
const isValid = !selectionRanges.some(selection => {
|
564
|
-
const
|
565
|
-
const
|
566
|
-
return !
|
688
|
+
const cellRange = selectionSchemaNormalizer(selection);
|
689
|
+
const rangeValidity = cellRange.isValid(tableParams);
|
690
|
+
return !(rangeValidity && !cellRange.containsHeaders() || rangeValidity && cellRange.containsHeaders() && cellRange.isSingleHeader());
|
567
691
|
});
|
568
692
|
if (isValid) {
|
569
693
|
this.clear();
|
570
694
|
(0, _array.arrayEach)(selectionRanges, selection => {
|
571
|
-
const
|
572
|
-
|
573
|
-
|
695
|
+
const {
|
696
|
+
from,
|
697
|
+
to
|
698
|
+
} = selectionSchemaNormalizer(selection);
|
699
|
+
this.setRangeStartOnly(from.clone(), false);
|
700
|
+
this.setRangeEnd(to.clone());
|
574
701
|
this.finish();
|
575
702
|
});
|
576
703
|
}
|
@@ -583,22 +710,43 @@ class Selection {
|
|
583
710
|
*
|
584
711
|
* @param {number|string} startColumn Visual column index or column property from which the selection starts.
|
585
712
|
* @param {number|string} [endColumn] Visual column index or column property from to the selection finishes.
|
586
|
-
* @param {number} [
|
587
|
-
*
|
588
|
-
*
|
713
|
+
* @param {number} [focusPosition=0] The argument allows changing the cell/header focus position.
|
714
|
+
* The value can take visual row index from -N to N, where negative values
|
715
|
+
* point to the headers and positive values point to the cell range.
|
589
716
|
* @returns {boolean} Returns `true` if selection was successful, `false` otherwise.
|
590
717
|
*/
|
591
718
|
selectColumns(startColumn) {
|
592
719
|
let endColumn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : startColumn;
|
593
|
-
let
|
720
|
+
let focusPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
594
721
|
const start = typeof startColumn === 'string' ? this.tableProps.propToCol(startColumn) : startColumn;
|
595
722
|
const end = typeof endColumn === 'string' ? this.tableProps.propToCol(endColumn) : endColumn;
|
596
|
-
const
|
597
|
-
const
|
598
|
-
const
|
723
|
+
const countRows = this.tableProps.countRows();
|
724
|
+
const countCols = this.tableProps.countCols();
|
725
|
+
const countColHeaders = this.tableProps.countColHeaders();
|
726
|
+
const columnHeaderLastIndex = countColHeaders === 0 ? 0 : -countColHeaders;
|
727
|
+
const fromCoords = new _src.CellCoords(columnHeaderLastIndex, start);
|
728
|
+
const toCoords = new _src.CellCoords(countRows - 1, end);
|
729
|
+
const isValid = new _src.CellRange(fromCoords, fromCoords, toCoords).isValid({
|
730
|
+
countRows,
|
731
|
+
countCols,
|
732
|
+
countRowHeaders: 0,
|
733
|
+
countColHeaders
|
734
|
+
});
|
599
735
|
if (isValid) {
|
600
|
-
|
601
|
-
|
736
|
+
const fromRow = countColHeaders === 0 ? 0 : (0, _number.clamp)(focusPosition, columnHeaderLastIndex, -1);
|
737
|
+
const toRow = countRows - 1;
|
738
|
+
const from = this.tableProps.createCellCoords(fromRow, start);
|
739
|
+
const to = this.tableProps.createCellCoords(toRow, end);
|
740
|
+
const highlight = this.tableProps.createCellCoords((0, _number.clamp)(focusPosition, columnHeaderLastIndex, countRows - 1), start);
|
741
|
+
this.runLocalHooks('beforeSelectColumns', from, to, highlight);
|
742
|
+
|
743
|
+
// disallow modifying row axis for that hooks
|
744
|
+
from.row = fromRow;
|
745
|
+
to.row = toRow;
|
746
|
+
this.setRangeStartOnly(from, void 0, highlight);
|
747
|
+
this.selectedByColumnHeader.add(this.getLayerLevel());
|
748
|
+
this.setRangeEnd(to);
|
749
|
+
this.runLocalHooks('afterSelectColumns', from, to, highlight);
|
602
750
|
this.finish();
|
603
751
|
}
|
604
752
|
return isValid;
|
@@ -609,20 +757,41 @@ class Selection {
|
|
609
757
|
*
|
610
758
|
* @param {number} startRow Visual row index from which the selection starts.
|
611
759
|
* @param {number} [endRow] Visual row index from to the selection finishes.
|
612
|
-
* @param {number} [
|
613
|
-
*
|
614
|
-
*
|
760
|
+
* @param {number} [focusPosition=0] The argument allows changing the cell/header focus position.
|
761
|
+
* The value can take visual column index from -N to N, where negative values
|
762
|
+
* point to the headers and positive values point to the cell range.
|
615
763
|
* @returns {boolean} Returns `true` if selection was successful, `false` otherwise.
|
616
764
|
*/
|
617
765
|
selectRows(startRow) {
|
618
766
|
let endRow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : startRow;
|
619
|
-
let
|
620
|
-
const
|
621
|
-
const
|
622
|
-
const
|
767
|
+
let focusPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
768
|
+
const countRows = this.tableProps.countRows();
|
769
|
+
const countCols = this.tableProps.countCols();
|
770
|
+
const countRowHeaders = this.tableProps.countRowHeaders();
|
771
|
+
const rowHeaderLastIndex = countRowHeaders === 0 ? 0 : -countRowHeaders;
|
772
|
+
const fromCoords = new _src.CellCoords(startRow, rowHeaderLastIndex);
|
773
|
+
const toCoords = new _src.CellCoords(endRow, countCols - 1);
|
774
|
+
const isValid = new _src.CellRange(fromCoords, fromCoords, toCoords).isValid({
|
775
|
+
countRows,
|
776
|
+
countCols,
|
777
|
+
countRowHeaders,
|
778
|
+
countColHeaders: 0
|
779
|
+
});
|
623
780
|
if (isValid) {
|
624
|
-
|
625
|
-
|
781
|
+
const fromColumn = countRowHeaders === 0 ? 0 : (0, _number.clamp)(focusPosition, rowHeaderLastIndex, -1);
|
782
|
+
const toColumn = countCols - 1;
|
783
|
+
const from = this.tableProps.createCellCoords(startRow, fromColumn);
|
784
|
+
const to = this.tableProps.createCellCoords(endRow, toColumn);
|
785
|
+
const highlight = this.tableProps.createCellCoords(startRow, (0, _number.clamp)(focusPosition, rowHeaderLastIndex, countCols - 1));
|
786
|
+
this.runLocalHooks('beforeSelectRows', from, to, highlight);
|
787
|
+
|
788
|
+
// disallow modifying column axis for that hooks
|
789
|
+
from.col = fromColumn;
|
790
|
+
to.col = toColumn;
|
791
|
+
this.setRangeStartOnly(from, void 0, highlight);
|
792
|
+
this.selectedByRowHeader.add(this.getLayerLevel());
|
793
|
+
this.setRangeEnd(to);
|
794
|
+
this.runLocalHooks('afterSelectRows', from, to, highlight);
|
626
795
|
this.finish();
|
627
796
|
}
|
628
797
|
return isValid;
|
@@ -639,19 +808,31 @@ class Selection {
|
|
639
808
|
if (!this.isSelected()) {
|
640
809
|
return;
|
641
810
|
}
|
642
|
-
const
|
811
|
+
const focusHighlight = this.highlight.getFocus();
|
643
812
|
const currentLayer = this.getLayerLevel();
|
644
|
-
|
813
|
+
focusHighlight.commit().syncWith(this.selectedRange.current());
|
645
814
|
|
646
815
|
// Rewriting rendered ranges going through all layers.
|
647
816
|
for (let layerLevel = 0; layerLevel < this.selectedRange.size(); layerLevel += 1) {
|
648
817
|
this.highlight.useLayerLevel(layerLevel);
|
649
|
-
const areaHighlight = this.highlight.
|
650
|
-
const
|
651
|
-
const
|
818
|
+
const areaHighlight = this.highlight.createArea();
|
819
|
+
const areaLayeredHighlight = this.highlight.createLayeredArea();
|
820
|
+
const rowHeaderHighlight = this.highlight.createRowHeader();
|
821
|
+
const columnHeaderHighlight = this.highlight.createColumnHeader();
|
822
|
+
const activeRowHeaderHighlight = this.highlight.createActiveRowHeader();
|
823
|
+
const activeColumnHeaderHighlight = this.highlight.createActiveColumnHeader();
|
824
|
+
const activeCornerHeaderHighlight = this.highlight.createActiveCornerHeader();
|
825
|
+
const rowHighlight = this.highlight.createRowHighlight();
|
826
|
+
const columnHighlight = this.highlight.createColumnHighlight();
|
652
827
|
areaHighlight.commit();
|
653
|
-
|
654
|
-
|
828
|
+
areaLayeredHighlight.commit();
|
829
|
+
rowHeaderHighlight.commit();
|
830
|
+
columnHeaderHighlight.commit();
|
831
|
+
activeRowHeaderHighlight.commit();
|
832
|
+
activeColumnHeaderHighlight.commit();
|
833
|
+
activeCornerHeaderHighlight.commit();
|
834
|
+
rowHighlight.commit();
|
835
|
+
columnHighlight.commit();
|
655
836
|
}
|
656
837
|
|
657
838
|
// Reverting starting layer for the Highlight.
|
@@ -659,5 +840,4 @@ class Selection {
|
|
659
840
|
}
|
660
841
|
}
|
661
842
|
(0, _object.mixin)(Selection, _localHooks.default);
|
662
|
-
var _default = Selection;
|
663
|
-
exports.default = _default;
|
843
|
+
var _default = exports.default = Selection;
|