handsontable 11.0.0 → 12.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/3rdparty/walkontable/src/border.js +121 -99
- package/3rdparty/walkontable/src/border.mjs +122 -96
- package/3rdparty/walkontable/src/calculator/viewportColumns.js +1 -1
- package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +1 -1
- package/3rdparty/walkontable/src/calculator/viewportRows.js +1 -1
- package/3rdparty/walkontable/src/calculator/viewportRows.mjs +1 -1
- package/3rdparty/walkontable/src/cell/coords.js +60 -18
- package/3rdparty/walkontable/src/cell/coords.mjs +56 -18
- package/3rdparty/walkontable/src/cell/range.d.ts +10 -2
- package/3rdparty/walkontable/src/cell/range.js +279 -100
- package/3rdparty/walkontable/src/cell/range.mjs +274 -100
- package/3rdparty/walkontable/src/core/_base.js +452 -0
- package/3rdparty/walkontable/src/core/_base.mjs +440 -0
- package/3rdparty/walkontable/src/core/clone.js +97 -0
- package/3rdparty/walkontable/src/core/clone.mjs +80 -0
- package/3rdparty/walkontable/src/core/core.js +183 -0
- package/3rdparty/walkontable/src/core/core.mjs +160 -0
- package/3rdparty/walkontable/src/event.js +100 -67
- package/3rdparty/walkontable/src/event.mjs +100 -64
- package/3rdparty/walkontable/src/facade/core.js +251 -0
- package/3rdparty/walkontable/src/facade/core.mjs +243 -0
- package/3rdparty/walkontable/src/filter/column.js +1 -1
- package/3rdparty/walkontable/src/filter/column.mjs +1 -1
- package/3rdparty/walkontable/src/filter/row.js +1 -1
- package/3rdparty/walkontable/src/filter/row.mjs +1 -1
- package/3rdparty/walkontable/src/index.js +3 -47
- package/3rdparty/walkontable/src/index.mjs +3 -13
- package/3rdparty/walkontable/src/overlay/_base.js +125 -58
- package/3rdparty/walkontable/src/overlay/_base.mjs +126 -59
- package/3rdparty/walkontable/src/overlay/bottom.js +86 -76
- package/3rdparty/walkontable/src/overlay/bottom.mjs +86 -76
- package/3rdparty/walkontable/src/overlay/{bottomLeftCorner.js → bottomInlineStartCorner.js} +35 -58
- package/3rdparty/walkontable/src/overlay/{bottomLeftCorner.mjs → bottomInlineStartCorner.mjs} +34 -57
- package/3rdparty/walkontable/src/overlay/constants.js +25 -9
- package/3rdparty/walkontable/src/overlay/constants.mjs +14 -4
- package/3rdparty/walkontable/src/overlay/index.js +10 -19
- package/3rdparty/walkontable/src/overlay/index.mjs +4 -5
- package/3rdparty/walkontable/src/overlay/{left.js → inlineStart.js} +102 -80
- package/3rdparty/walkontable/src/overlay/{left.mjs → inlineStart.mjs} +101 -79
- package/3rdparty/walkontable/src/overlay/top.js +84 -79
- package/3rdparty/walkontable/src/overlay/top.mjs +84 -79
- package/3rdparty/walkontable/src/overlay/{topLeftCorner.js → topInlineStartCorner.js} +56 -57
- package/3rdparty/walkontable/src/overlay/{topLeftCorner.mjs → topInlineStartCorner.mjs} +51 -52
- package/3rdparty/walkontable/src/overlays.js +226 -157
- package/3rdparty/walkontable/src/overlays.mjs +226 -156
- package/3rdparty/walkontable/src/renderer/_base.js +1 -1
- package/3rdparty/walkontable/src/renderer/_base.mjs +1 -1
- package/3rdparty/walkontable/src/renderer/cells.js +5 -4
- package/3rdparty/walkontable/src/renderer/cells.mjs +5 -4
- package/3rdparty/walkontable/src/renderer/colGroup.js +3 -3
- package/3rdparty/walkontable/src/renderer/colGroup.mjs +3 -3
- package/3rdparty/walkontable/src/renderer/columnHeaders.js +3 -3
- package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +3 -3
- package/3rdparty/walkontable/src/renderer/index.js +1 -1
- package/3rdparty/walkontable/src/renderer/index.mjs +1 -1
- package/3rdparty/walkontable/src/renderer/rowHeaders.js +3 -3
- package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +3 -3
- package/3rdparty/walkontable/src/renderer/rows.js +3 -3
- package/3rdparty/walkontable/src/renderer/rows.mjs +3 -3
- package/3rdparty/walkontable/src/renderer/table.js +1 -1
- package/3rdparty/walkontable/src/renderer/table.mjs +1 -1
- package/3rdparty/walkontable/src/scroll.js +61 -88
- package/3rdparty/walkontable/src/scroll.mjs +61 -88
- package/3rdparty/walkontable/src/selection.js +12 -16
- package/3rdparty/walkontable/src/selection.mjs +12 -14
- package/3rdparty/walkontable/src/settings.js +236 -127
- package/3rdparty/walkontable/src/settings.mjs +236 -126
- package/3rdparty/walkontable/src/table/bottom.js +21 -6
- package/3rdparty/walkontable/src/table/bottom.mjs +20 -6
- package/3rdparty/walkontable/src/table/{bottomLeftCorner.js → bottomInlineStartCorner.js} +31 -15
- package/3rdparty/walkontable/src/table/{bottomLeftCorner.mjs → bottomInlineStartCorner.mjs} +30 -15
- package/3rdparty/walkontable/src/table/{left.js → inlineStart.js} +27 -15
- package/3rdparty/walkontable/src/table/{left.mjs → inlineStart.mjs} +26 -15
- package/3rdparty/walkontable/src/table/master.js +23 -13
- package/3rdparty/walkontable/src/table/master.mjs +23 -13
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +12 -6
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +12 -6
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +12 -6
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +12 -6
- package/3rdparty/walkontable/src/table/mixin/{stickyColumnsLeft.js → stickyColumnsStart.js} +13 -7
- package/3rdparty/walkontable/src/table/mixin/{stickyColumnsLeft.mjs → stickyColumnsStart.mjs} +13 -7
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +11 -5
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +11 -5
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -3
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -3
- package/3rdparty/walkontable/src/table/top.js +21 -6
- package/3rdparty/walkontable/src/table/top.mjs +20 -6
- package/3rdparty/walkontable/src/table/{topLeftCorner.js → topInlineStartCorner.js} +31 -15
- package/3rdparty/walkontable/src/table/{topLeftCorner.mjs → topInlineStartCorner.mjs} +30 -15
- package/3rdparty/walkontable/src/table.js +236 -141
- package/3rdparty/walkontable/src/table.mjs +232 -135
- package/3rdparty/walkontable/src/types.js +103 -0
- package/3rdparty/walkontable/src/types.mjs +102 -0
- package/3rdparty/walkontable/src/utils/column.js +23 -34
- package/3rdparty/walkontable/src/utils/column.mjs +23 -31
- package/3rdparty/walkontable/src/utils/nodesPool.js +1 -1
- package/3rdparty/walkontable/src/utils/nodesPool.mjs +1 -1
- package/3rdparty/walkontable/src/utils/orderView/sharedView.js +3 -3
- package/3rdparty/walkontable/src/utils/orderView/sharedView.mjs +3 -3
- package/3rdparty/walkontable/src/utils/orderView/view.js +1 -1
- package/3rdparty/walkontable/src/utils/orderView/view.mjs +1 -1
- package/3rdparty/walkontable/src/utils/orderView/viewSize.js +1 -1
- package/3rdparty/walkontable/src/utils/orderView/viewSize.mjs +1 -1
- package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.js +1 -1
- package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.mjs +1 -1
- package/3rdparty/walkontable/src/utils/row.js +10 -5
- package/3rdparty/walkontable/src/utils/row.mjs +10 -5
- package/3rdparty/walkontable/src/viewport.js +78 -81
- package/3rdparty/walkontable/src/viewport.mjs +78 -78
- package/CHANGELOG.md +94 -17
- package/README.md +10 -7
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/cellTypes/timeType/timeType.d.ts +6 -6
- package/cellTypes/timeType/timeType.js +4 -5
- package/cellTypes/timeType/timeType.mjs +4 -5
- package/core.d.ts +9 -3
- package/core.js +590 -157
- package/core.mjs +599 -169
- package/dataMap/dataMap.js +2 -2
- package/dataMap/dataMap.mjs +2 -2
- package/dataMap/index.js +8 -0
- package/dataMap/index.mjs +3 -1
- package/dataMap/metaManager/index.js +3 -3
- package/dataMap/metaManager/index.mjs +3 -3
- package/dataMap/metaManager/lazyFactoryMap.js +1 -1
- package/dataMap/metaManager/lazyFactoryMap.mjs +1 -1
- package/dataMap/metaManager/metaLayers/cellMeta.js +1 -1
- package/dataMap/metaManager/metaLayers/cellMeta.mjs +1 -1
- package/dataMap/metaManager/metaLayers/columnMeta.js +1 -1
- package/dataMap/metaManager/metaLayers/columnMeta.mjs +1 -1
- package/dataMap/metaManager/metaLayers/globalMeta.js +7 -3
- package/dataMap/metaManager/metaLayers/globalMeta.mjs +7 -3
- package/dataMap/metaManager/metaLayers/tableMeta.js +3 -3
- package/dataMap/metaManager/metaLayers/tableMeta.mjs +3 -3
- package/dataMap/metaManager/metaSchema.js +2931 -2676
- package/dataMap/metaManager/metaSchema.mjs +2931 -2676
- package/dataMap/metaManager/mods/dynamicCellMeta.js +1 -1
- package/dataMap/metaManager/mods/dynamicCellMeta.mjs +1 -1
- package/dataMap/metaManager/mods/extendMetaProperties.js +126 -0
- package/dataMap/metaManager/mods/extendMetaProperties.mjs +113 -0
- package/dataMap/replaceData.js +140 -0
- package/dataMap/replaceData.mjs +124 -0
- package/dataSource.js +1 -1
- package/dataSource.mjs +1 -1
- package/dist/README.md +2 -2
- package/dist/handsontable.css +424 -166
- package/dist/handsontable.full.css +559 -298
- package/dist/handsontable.full.js +47163 -41289
- package/dist/handsontable.full.min.css +8 -13
- package/dist/handsontable.full.min.js +143 -142
- package/dist/handsontable.js +28270 -24105
- package/dist/handsontable.min.css +8 -11
- package/dist/handsontable.min.js +3 -3
- package/dist/languages/all.js +69 -38
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/ar-AR.js +167 -0
- package/dist/languages/ar-AR.min.js +1 -0
- package/dist/languages/de-CH.js +32 -33
- package/dist/languages/de-CH.min.js +1 -1
- package/dist/languages/de-DE.js +5 -6
- package/dist/languages/de-DE.min.js +1 -1
- package/dist/languages/en-US.js +5 -6
- package/dist/languages/en-US.min.js +1 -1
- package/dist/languages/es-MX.js +5 -6
- package/dist/languages/es-MX.min.js +1 -1
- package/dist/languages/fr-FR.js +5 -6
- package/dist/languages/fr-FR.min.js +1 -1
- package/dist/languages/it-IT.js +5 -6
- package/dist/languages/it-IT.min.js +1 -1
- package/dist/languages/ja-JP.js +5 -6
- package/dist/languages/ja-JP.min.js +1 -1
- package/dist/languages/ko-KR.js +37 -42
- package/dist/languages/ko-KR.min.js +1 -1
- package/dist/languages/lv-LV.js +4 -6
- package/dist/languages/lv-LV.min.js +1 -1
- package/dist/languages/nb-NO.js +4 -6
- package/dist/languages/nb-NO.min.js +1 -1
- package/dist/languages/nl-NL.js +4 -6
- package/dist/languages/nl-NL.min.js +1 -1
- package/dist/languages/pl-PL.js +4 -6
- package/dist/languages/pl-PL.min.js +1 -1
- package/dist/languages/pt-BR.js +4 -6
- package/dist/languages/pt-BR.min.js +1 -1
- package/dist/languages/ru-RU.js +4 -6
- package/dist/languages/ru-RU.min.js +1 -1
- package/dist/languages/zh-CN.js +4 -6
- package/dist/languages/zh-CN.min.js +1 -1
- package/dist/languages/zh-TW.js +25 -27
- package/dist/languages/zh-TW.min.js +1 -1
- package/editorManager.js +121 -268
- package/editorManager.mjs +129 -279
- package/editors/autocompleteEditor/autocompleteEditor.js +19 -17
- package/editors/autocompleteEditor/autocompleteEditor.mjs +19 -17
- package/editors/baseEditor/baseEditor.js +207 -36
- package/editors/baseEditor/baseEditor.mjs +202 -34
- package/editors/checkboxEditor/checkboxEditor.js +3 -3
- package/editors/checkboxEditor/checkboxEditor.mjs +3 -3
- package/editors/dateEditor/dateEditor.js +22 -9
- package/editors/dateEditor/dateEditor.mjs +23 -10
- package/editors/dropdownEditor/dropdownEditor.js +4 -4
- package/editors/dropdownEditor/dropdownEditor.mjs +4 -4
- package/editors/handsontableEditor/handsontableEditor.js +107 -56
- package/editors/handsontableEditor/handsontableEditor.mjs +107 -56
- package/editors/index.d.ts +3 -0
- package/editors/index.js +6 -0
- package/editors/index.mjs +3 -1
- package/editors/numericEditor/numericEditor.js +3 -3
- package/editors/numericEditor/numericEditor.mjs +3 -3
- package/editors/passwordEditor/passwordEditor.js +4 -4
- package/editors/passwordEditor/passwordEditor.mjs +4 -4
- package/editors/selectEditor/selectEditor.js +66 -111
- package/editors/selectEditor/selectEditor.mjs +67 -110
- package/editors/textEditor/caretPositioner.js +49 -0
- package/editors/textEditor/caretPositioner.mjs +42 -0
- package/editors/textEditor/textEditor.js +206 -182
- package/editors/textEditor/textEditor.mjs +200 -180
- package/editors/timeEditor/index.d.ts +1 -0
- package/editors/timeEditor/index.js +9 -0
- package/editors/timeEditor/index.mjs +1 -0
- package/editors/timeEditor/timeEditor.d.ts +7 -0
- package/editors/timeEditor/timeEditor.js +105 -0
- package/editors/timeEditor/timeEditor.mjs +84 -0
- package/eventManager.js +11 -5
- package/eventManager.mjs +11 -5
- package/helpers/data.js +1 -1
- package/helpers/data.mjs +1 -1
- package/helpers/dom/element.js +1 -1
- package/helpers/dom/element.mjs +1 -1
- package/helpers/feature.js +1 -1
- package/helpers/feature.mjs +1 -1
- package/helpers/mixed.js +3 -3
- package/helpers/mixed.mjs +3 -3
- package/helpers/number.js +4 -4
- package/helpers/number.mjs +4 -4
- package/helpers/object.js +1 -1
- package/helpers/object.mjs +1 -1
- package/i18n/languages/ar-AR.js +41 -0
- package/i18n/languages/ar-AR.mjs +17 -0
- package/i18n/languages/de-CH.js +1 -1
- package/i18n/languages/de-DE.js +1 -1
- package/i18n/languages/en-US.js +1 -1
- package/i18n/languages/es-MX.js +1 -1
- package/i18n/languages/fr-FR.js +1 -1
- package/i18n/languages/index.js +4 -0
- package/i18n/languages/index.mjs +2 -1
- package/i18n/languages/it-IT.js +1 -1
- package/i18n/languages/ja-JP.js +1 -1
- package/i18n/languages/ko-KR.js +1 -1
- package/i18n/languages/lv-LV.js +1 -1
- package/i18n/languages/nb-NO.js +1 -1
- package/i18n/languages/nl-NL.js +1 -1
- package/i18n/languages/pl-PL.js +1 -1
- package/i18n/languages/pt-BR.js +1 -1
- package/i18n/languages/ru-RU.js +1 -1
- package/i18n/languages/zh-CN.js +1 -1
- package/i18n/languages/zh-TW.js +1 -1
- package/i18n/registry.js +1 -1
- package/index.d.ts +4 -0
- package/index.js +1 -1
- package/languages/all.js +69 -38
- package/languages/ar-AR.js +167 -0
- package/languages/ar-AR.mjs +19 -0
- package/languages/de-CH.js +32 -33
- package/languages/de-DE.js +5 -6
- package/languages/en-US.js +5 -6
- package/languages/es-MX.js +5 -6
- package/languages/fr-FR.js +5 -6
- package/languages/index.js +69 -38
- package/languages/index.mjs +2 -1
- package/languages/it-IT.js +5 -6
- package/languages/ja-JP.js +5 -6
- package/languages/ko-KR.js +37 -42
- package/languages/lv-LV.js +4 -6
- package/languages/nb-NO.js +4 -6
- package/languages/nl-NL.js +4 -6
- package/languages/pl-PL.js +4 -6
- package/languages/pt-BR.js +4 -6
- package/languages/ru-RU.js +4 -6
- package/languages/zh-CN.js +4 -6
- package/languages/zh-TW.js +25 -27
- package/package.json +26 -8
- package/pluginHooks.d.ts +2 -0
- package/pluginHooks.js +58 -27
- package/pluginHooks.mjs +58 -27
- package/plugins/autoColumnSize/autoColumnSize.js +14 -9
- package/plugins/autoColumnSize/autoColumnSize.mjs +14 -9
- package/plugins/autoRowSize/autoRowSize.js +15 -10
- package/plugins/autoRowSize/autoRowSize.mjs +15 -10
- package/plugins/autofill/autofill.js +50 -34
- package/plugins/autofill/autofill.mjs +50 -33
- package/plugins/autofill/utils.js +10 -11
- package/plugins/autofill/utils.mjs +10 -10
- package/plugins/base/base.d.ts +8 -2
- package/plugins/base/base.js +68 -5
- package/plugins/base/base.mjs +67 -5
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +4 -4
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +4 -4
- package/plugins/bindRowsWithHeaders/maps/looseBindsMap.js +4 -4
- package/plugins/bindRowsWithHeaders/maps/looseBindsMap.mjs +4 -4
- package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +4 -4
- package/plugins/bindRowsWithHeaders/maps/strictBindsMap.mjs +4 -4
- package/plugins/collapsibleColumns/collapsibleColumns.js +49 -30
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +49 -30
- package/plugins/columnSorting/columnSorting.d.ts +1 -1
- package/plugins/columnSorting/columnSorting.js +10 -12
- package/plugins/columnSorting/columnSorting.mjs +10 -11
- package/plugins/columnSorting/columnStatesManager.js +3 -3
- package/plugins/columnSorting/columnStatesManager.mjs +3 -3
- package/plugins/columnSummary/columnSummary.js +4 -4
- package/plugins/columnSummary/columnSummary.mjs +4 -4
- package/plugins/columnSummary/endpoints.js +1 -1
- package/plugins/columnSummary/endpoints.mjs +1 -1
- package/plugins/comments/commentEditor.js +24 -4
- package/plugins/comments/commentEditor.mjs +25 -5
- package/plugins/comments/comments.js +63 -104
- package/plugins/comments/comments.mjs +63 -102
- package/plugins/comments/displaySwitch.js +1 -1
- package/plugins/comments/displaySwitch.mjs +1 -1
- package/plugins/contextMenu/commandExecutor.js +1 -1
- package/plugins/contextMenu/commandExecutor.mjs +1 -1
- package/plugins/contextMenu/contextMenu.js +11 -7
- package/plugins/contextMenu/contextMenu.mjs +11 -7
- package/plugins/contextMenu/cursor.js +1 -1
- package/plugins/contextMenu/cursor.mjs +1 -1
- package/plugins/contextMenu/itemsFactory.js +1 -1
- package/plugins/contextMenu/itemsFactory.mjs +1 -1
- package/plugins/contextMenu/menu.js +223 -111
- package/plugins/contextMenu/menu.mjs +220 -112
- package/plugins/contextMenu/predefinedItems/alignment.js +1 -1
- package/plugins/contextMenu/predefinedItems/clearColumn.js +1 -1
- package/plugins/contextMenu/predefinedItems/columnLeft.js +13 -5
- package/plugins/contextMenu/predefinedItems/columnLeft.mjs +11 -4
- package/plugins/contextMenu/predefinedItems/columnRight.js +10 -10
- package/plugins/contextMenu/predefinedItems/columnRight.mjs +9 -9
- package/plugins/contextMenu/predefinedItems/readOnly.js +1 -1
- package/plugins/contextMenu/predefinedItems/redo.js +1 -1
- package/plugins/contextMenu/predefinedItems/removeColumn.js +1 -1
- package/plugins/contextMenu/predefinedItems/removeRow.js +1 -1
- package/plugins/contextMenu/predefinedItems/rowAbove.js +1 -1
- package/plugins/contextMenu/predefinedItems/rowBelow.js +1 -1
- package/plugins/contextMenu/predefinedItems/undo.js +1 -1
- package/plugins/contextMenu/predefinedItems.js +1 -1
- package/plugins/contextMenu/utils.js +2 -2
- package/plugins/contextMenu/utils.mjs +2 -2
- package/plugins/copyPaste/clipboardData.js +1 -1
- package/plugins/copyPaste/clipboardData.mjs +1 -1
- package/plugins/copyPaste/contextMenuItem/copy.js +1 -1
- package/plugins/copyPaste/contextMenuItem/cut.js +1 -1
- package/plugins/copyPaste/copyPaste.js +29 -19
- package/plugins/copyPaste/copyPaste.mjs +28 -19
- package/plugins/copyPaste/focusableElement.js +1 -1
- package/plugins/copyPaste/focusableElement.mjs +1 -1
- package/plugins/copyPaste/pasteEvent.js +6 -2
- package/plugins/copyPaste/pasteEvent.mjs +6 -2
- package/plugins/customBorders/contextMenuItem/bottom.js +1 -1
- package/plugins/customBorders/contextMenuItem/left.js +5 -4
- package/plugins/customBorders/contextMenuItem/left.mjs +4 -3
- package/plugins/customBorders/contextMenuItem/noBorders.js +1 -1
- package/plugins/customBorders/contextMenuItem/right.js +5 -4
- package/plugins/customBorders/contextMenuItem/right.mjs +4 -3
- package/plugins/customBorders/contextMenuItem/top.js +1 -1
- package/plugins/customBorders/customBorders.js +141 -85
- package/plugins/customBorders/customBorders.mjs +139 -82
- package/plugins/customBorders/utils.js +131 -27
- package/plugins/customBorders/utils.mjs +115 -27
- package/plugins/dragToScroll/dragToScroll.js +11 -6
- package/plugins/dragToScroll/dragToScroll.mjs +11 -6
- package/plugins/dropdownMenu/dropdownMenu.js +8 -7
- package/plugins/dropdownMenu/dropdownMenu.mjs +8 -7
- package/plugins/exportFile/dataProvider.js +1 -1
- package/plugins/exportFile/dataProvider.mjs +1 -1
- package/plugins/exportFile/exportFile.js +3 -3
- package/plugins/exportFile/exportFile.mjs +3 -3
- package/plugins/exportFile/types/_base.js +1 -1
- package/plugins/exportFile/types/_base.mjs +1 -1
- package/plugins/exportFile/types/csv.js +3 -3
- package/plugins/exportFile/types/csv.mjs +3 -3
- package/plugins/filters/component/_base.js +1 -1
- package/plugins/filters/component/_base.mjs +1 -1
- package/plugins/filters/component/actionBar.js +3 -3
- package/plugins/filters/component/actionBar.mjs +3 -3
- package/plugins/filters/component/condition.js +4 -4
- package/plugins/filters/component/condition.mjs +4 -4
- package/plugins/filters/component/operators.js +3 -3
- package/plugins/filters/component/operators.mjs +3 -3
- package/plugins/filters/component/value.js +4 -4
- package/plugins/filters/component/value.mjs +4 -4
- package/plugins/filters/condition/beginsWith.js +1 -1
- package/plugins/filters/condition/between.js +1 -1
- package/plugins/filters/condition/contains.js +1 -1
- package/plugins/filters/condition/date/after.js +1 -1
- package/plugins/filters/condition/date/before.js +1 -1
- package/plugins/filters/condition/date/today.js +1 -1
- package/plugins/filters/condition/date/tomorrow.js +1 -1
- package/plugins/filters/condition/date/yesterday.js +1 -1
- package/plugins/filters/condition/empty.js +1 -1
- package/plugins/filters/condition/endsWith.js +1 -1
- package/plugins/filters/condition/equal.js +1 -1
- package/plugins/filters/condition/greaterThan.js +1 -1
- package/plugins/filters/condition/greaterThanOrEqual.js +1 -1
- package/plugins/filters/condition/lessThan.js +1 -1
- package/plugins/filters/condition/lessThanOrEqual.js +1 -1
- package/plugins/filters/condition/none.js +1 -1
- package/plugins/filters/condition/notBetween.js +1 -1
- package/plugins/filters/condition/notContains.js +1 -1
- package/plugins/filters/condition/notEmpty.js +1 -1
- package/plugins/filters/condition/notEqual.js +1 -1
- package/plugins/filters/conditionCollection.js +1 -1
- package/plugins/filters/conditionCollection.mjs +1 -1
- package/plugins/filters/conditionUpdateObserver.js +1 -1
- package/plugins/filters/conditionUpdateObserver.mjs +1 -1
- package/plugins/filters/dataFilter.js +1 -1
- package/plugins/filters/dataFilter.mjs +1 -1
- package/plugins/filters/filters.js +12 -9
- package/plugins/filters/filters.mjs +12 -9
- package/plugins/filters/logicalOperations/conjunction.js +1 -1
- package/plugins/filters/logicalOperations/disjunction.js +1 -1
- package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +1 -1
- package/plugins/filters/ui/_base.js +2 -2
- package/plugins/filters/ui/_base.mjs +1 -1
- package/plugins/filters/ui/input.js +4 -4
- package/plugins/filters/ui/input.mjs +4 -4
- package/plugins/filters/ui/link.js +4 -4
- package/plugins/filters/ui/link.mjs +4 -4
- package/plugins/filters/ui/multipleSelect.js +19 -32
- package/plugins/filters/ui/multipleSelect.mjs +19 -32
- package/plugins/filters/ui/radioInput.js +4 -4
- package/plugins/filters/ui/radioInput.mjs +4 -4
- package/plugins/filters/ui/select.js +5 -5
- package/plugins/filters/ui/select.mjs +5 -5
- package/plugins/formulas/engine/register.js +1 -1
- package/plugins/formulas/engine/register.mjs +1 -1
- package/plugins/formulas/engine/settings.js +2 -2
- package/plugins/formulas/engine/settings.mjs +2 -2
- package/plugins/formulas/formulas.js +10 -10
- package/plugins/formulas/formulas.mjs +10 -10
- package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +1 -1
- package/plugins/hiddenColumns/contextMenuItem/showColumn.js +3 -3
- package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +2 -2
- package/plugins/hiddenColumns/hiddenColumns.js +10 -5
- package/plugins/hiddenColumns/hiddenColumns.mjs +10 -5
- package/plugins/hiddenRows/contextMenuItem/hideRow.js +1 -1
- package/plugins/hiddenRows/contextMenuItem/showRow.js +3 -3
- package/plugins/hiddenRows/contextMenuItem/showRow.mjs +2 -2
- package/plugins/hiddenRows/hiddenRows.js +10 -5
- package/plugins/hiddenRows/hiddenRows.mjs +10 -5
- package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +2 -2
- package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +1 -1
- package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +2 -2
- package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +1 -1
- package/plugins/manualColumnFreeze/manualColumnFreeze.js +26 -13
- package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +26 -13
- package/plugins/manualColumnMove/manualColumnMove.js +73 -62
- package/plugins/manualColumnMove/manualColumnMove.mjs +74 -63
- package/plugins/manualColumnMove/ui/_base.js +26 -13
- package/plugins/manualColumnMove/ui/_base.mjs +25 -13
- package/plugins/manualColumnMove/ui/backlight.js +4 -4
- package/plugins/manualColumnMove/ui/backlight.mjs +4 -4
- package/plugins/manualColumnMove/ui/guideline.js +4 -4
- package/plugins/manualColumnMove/ui/guideline.mjs +4 -4
- package/plugins/manualColumnResize/manualColumnResize.js +38 -22
- package/plugins/manualColumnResize/manualColumnResize.mjs +38 -22
- package/plugins/manualRowMove/manualRowMove.js +27 -17
- package/plugins/manualRowMove/manualRowMove.mjs +27 -17
- package/plugins/manualRowMove/ui/_base.js +1 -1
- package/plugins/manualRowMove/ui/_base.mjs +1 -1
- package/plugins/manualRowMove/ui/backlight.js +4 -4
- package/plugins/manualRowMove/ui/backlight.mjs +4 -4
- package/plugins/manualRowMove/ui/guideline.js +4 -4
- package/plugins/manualRowMove/ui/guideline.mjs +4 -4
- package/plugins/manualRowResize/manualRowResize.js +35 -20
- package/plugins/manualRowResize/manualRowResize.mjs +35 -20
- package/plugins/mergeCells/calculations/autofill.js +7 -6
- package/plugins/mergeCells/calculations/autofill.mjs +7 -5
- package/plugins/mergeCells/calculations/selection.js +10 -5
- package/plugins/mergeCells/calculations/selection.mjs +10 -5
- package/plugins/mergeCells/cellCoords.js +17 -5
- package/plugins/mergeCells/cellCoords.mjs +17 -4
- package/plugins/mergeCells/cellsCollection.js +28 -21
- package/plugins/mergeCells/cellsCollection.mjs +28 -20
- package/plugins/mergeCells/contextMenuItem/toggleMerge.js +1 -1
- package/plugins/mergeCells/mergeCells.js +83 -50
- package/plugins/mergeCells/mergeCells.mjs +83 -48
- package/plugins/multiColumnSorting/multiColumnSorting.js +5 -7
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +5 -6
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +52 -58
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +53 -58
- package/plugins/nestedHeaders/nestedHeaders.js +26 -19
- package/plugins/nestedHeaders/nestedHeaders.mjs +26 -19
- package/plugins/nestedHeaders/stateManager/headersTree.js +3 -3
- package/plugins/nestedHeaders/stateManager/headersTree.mjs +3 -3
- package/plugins/nestedHeaders/stateManager/index.js +3 -3
- package/plugins/nestedHeaders/stateManager/index.mjs +3 -3
- package/plugins/nestedHeaders/stateManager/sourceSettings.js +3 -3
- package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +3 -3
- package/plugins/nestedHeaders/utils/ghostTable.js +1 -1
- package/plugins/nestedHeaders/utils/ghostTable.mjs +1 -1
- package/plugins/nestedRows/data/dataManager.js +2 -2
- package/plugins/nestedRows/data/dataManager.mjs +2 -2
- package/plugins/nestedRows/nestedRows.js +11 -5
- package/plugins/nestedRows/nestedRows.mjs +11 -5
- package/plugins/nestedRows/ui/_base.js +6 -2
- package/plugins/nestedRows/ui/_base.mjs +6 -2
- package/plugins/nestedRows/ui/collapsing.js +3 -3
- package/plugins/nestedRows/ui/collapsing.mjs +3 -3
- package/plugins/nestedRows/ui/contextMenu.js +3 -3
- package/plugins/nestedRows/ui/contextMenu.mjs +3 -3
- package/plugins/nestedRows/ui/headers.js +3 -3
- package/plugins/nestedRows/ui/headers.mjs +3 -3
- package/plugins/nestedRows/utils/rowMoveController.js +3 -5
- package/plugins/nestedRows/utils/rowMoveController.mjs +3 -4
- package/plugins/persistentState/persistentState.js +10 -5
- package/plugins/persistentState/persistentState.mjs +10 -5
- package/plugins/persistentState/storage.js +1 -1
- package/plugins/persistentState/storage.mjs +1 -1
- package/plugins/search/search.js +10 -5
- package/plugins/search/search.mjs +10 -5
- package/plugins/touchScroll/touchScroll.js +32 -26
- package/plugins/touchScroll/touchScroll.mjs +32 -25
- package/plugins/trimRows/trimRows.js +10 -5
- package/plugins/trimRows/trimRows.mjs +10 -5
- package/plugins/undoRedo/index.js +1 -1
- package/plugins/undoRedo/undoRedo.js +54 -48
- package/plugins/undoRedo/undoRedo.mjs +54 -47
- package/renderers/autocompleteRenderer/autocompleteRenderer.js +1 -3
- package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +1 -2
- package/renderers/checkboxRenderer/checkboxRenderer.js +48 -43
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +48 -41
- package/renderers/index.d.ts +4 -1
- package/renderers/index.js +6 -0
- package/renderers/index.mjs +3 -1
- package/renderers/numericRenderer/numericRenderer.js +1 -0
- package/renderers/numericRenderer/numericRenderer.mjs +1 -0
- package/renderers/timeRenderer/index.d.ts +1 -0
- package/renderers/timeRenderer/index.js +9 -0
- package/renderers/timeRenderer/index.mjs +1 -0
- package/renderers/timeRenderer/timeRenderer.d.ts +5 -0
- package/renderers/timeRenderer/timeRenderer.js +31 -0
- package/renderers/timeRenderer/timeRenderer.mjs +20 -0
- package/selection/highlight/highlight.js +3 -3
- package/selection/highlight/highlight.mjs +3 -3
- package/selection/highlight/types/activeHeader.js +2 -2
- package/selection/highlight/types/activeHeader.mjs +2 -2
- package/selection/highlight/types/area.js +2 -2
- package/selection/highlight/types/area.mjs +2 -2
- package/selection/highlight/types/cell.js +2 -2
- package/selection/highlight/types/cell.mjs +2 -2
- package/selection/highlight/types/customSelection.js +2 -2
- package/selection/highlight/types/customSelection.mjs +2 -2
- package/selection/highlight/types/fill.js +2 -2
- package/selection/highlight/types/fill.mjs +2 -2
- package/selection/highlight/types/header.js +2 -2
- package/selection/highlight/types/header.mjs +2 -2
- package/selection/highlight/types/index.js +2 -2
- package/selection/highlight/types/index.mjs +2 -2
- package/selection/highlight/visualSelection.js +17 -16
- package/selection/highlight/visualSelection.mjs +18 -17
- package/selection/mouseEventHandler.js +15 -10
- package/selection/mouseEventHandler.mjs +15 -9
- package/selection/range.js +5 -6
- package/selection/range.mjs +5 -6
- package/selection/selection.js +27 -20
- package/selection/selection.mjs +27 -18
- package/selection/transformation.js +5 -7
- package/selection/transformation.mjs +5 -6
- package/selection/utils.js +1 -1
- package/selection/utils.mjs +1 -1
- package/settings.d.ts +3 -1
- package/shortcuts/context.d.ts +20 -0
- package/shortcuts/context.js +296 -0
- package/shortcuts/context.mjs +268 -0
- package/shortcuts/index.d.ts +1 -0
- package/shortcuts/index.js +8 -0
- package/shortcuts/index.mjs +1 -0
- package/shortcuts/keyObserver.js +67 -0
- package/shortcuts/keyObserver.mjs +58 -0
- package/shortcuts/manager.d.ts +10 -0
- package/shortcuts/manager.js +183 -0
- package/shortcuts/manager.mjs +174 -0
- package/shortcuts/recorder.js +183 -0
- package/shortcuts/recorder.mjs +171 -0
- package/shortcuts/utils.js +77 -0
- package/shortcuts/utils.mjs +54 -0
- package/tableView.js +138 -80
- package/tableView.mjs +138 -70
- package/translations/changesObservable/observable.js +1 -1
- package/translations/changesObservable/observable.mjs +1 -1
- package/translations/changesObservable/observer.js +1 -2
- package/translations/changesObservable/observer.mjs +1 -2
- package/translations/indexMapper.d.ts +1 -0
- package/translations/indexMapper.js +25 -2
- package/translations/indexMapper.mjs +24 -2
- package/translations/mapCollections/aggregatedCollection.js +3 -3
- package/translations/mapCollections/aggregatedCollection.mjs +3 -3
- package/translations/mapCollections/mapCollection.js +1 -1
- package/translations/mapCollections/mapCollection.mjs +1 -1
- package/translations/maps/hidingMap.js +5 -3
- package/translations/maps/hidingMap.mjs +5 -3
- package/translations/maps/indexMap.js +3 -1
- package/translations/maps/indexMap.mjs +3 -1
- package/translations/maps/indexesSequence.js +6 -4
- package/translations/maps/indexesSequence.mjs +6 -4
- package/translations/maps/linkedPhysicalIndexToValueMap.js +6 -4
- package/translations/maps/linkedPhysicalIndexToValueMap.mjs +6 -4
- package/translations/maps/physicalIndexToValueMap.js +6 -4
- package/translations/maps/physicalIndexToValueMap.mjs +6 -4
- package/translations/maps/trimmingMap.js +5 -3
- package/translations/maps/trimmingMap.mjs +5 -3
- package/utils/dataStructures/linkedList.js +3 -3
- package/utils/dataStructures/linkedList.mjs +3 -3
- package/utils/dataStructures/queue.js +1 -1
- package/utils/dataStructures/queue.mjs +1 -1
- package/utils/dataStructures/stack.js +1 -1
- package/utils/dataStructures/stack.mjs +1 -1
- package/utils/dataStructures/tree.js +3 -3
- package/utils/dataStructures/tree.mjs +3 -3
- package/utils/dataStructures/uniqueMap.js +14 -1
- package/utils/dataStructures/uniqueMap.mjs +14 -1
- package/utils/dataStructures/uniqueSet.js +9 -0
- package/utils/dataStructures/uniqueSet.mjs +9 -0
- package/utils/ghostTable.js +14 -3
- package/utils/ghostTable.mjs +15 -4
- package/utils/interval.js +1 -1
- package/utils/interval.mjs +1 -1
- package/utils/samplesGenerator.js +1 -1
- package/utils/samplesGenerator.mjs +1 -1
- package/3rdparty/walkontable/src/core.js +0 -309
- package/3rdparty/walkontable/src/core.mjs +0 -293
- package/3rdparty/walkontable/src/overlay/registerer.js +0 -70
- package/3rdparty/walkontable/src/overlay/registerer.mjs +0 -57
- package/utils/keyStateObserver.js +0 -121
- package/utils/keyStateObserver.mjs +0 -103
package/core.mjs
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
function _typeof(obj) { "@babel/helpers - typeof";
|
1
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
2
2
|
|
3
3
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
4
4
|
|
@@ -8,6 +8,19 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
|
|
8
8
|
|
9
9
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
10
10
|
|
11
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
12
|
+
|
13
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
14
|
+
|
15
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
16
|
+
|
17
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
18
|
+
|
19
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
20
|
+
|
21
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
22
|
+
|
23
|
+
import "core-js/modules/es.array.includes.js";
|
11
24
|
import "core-js/modules/es.array.sort.js";
|
12
25
|
import "core-js/modules/es.array.splice.js";
|
13
26
|
import "core-js/modules/es.number.is-integer.js";
|
@@ -26,25 +39,13 @@ import "core-js/modules/es.object.to-string.js";
|
|
26
39
|
import "core-js/modules/web.dom-collections.for-each.js";
|
27
40
|
import "core-js/modules/web.timers.js";
|
28
41
|
import "core-js/modules/web.immediate.js";
|
42
|
+
import "core-js/modules/es.array.iterator.js";
|
43
|
+
import "core-js/modules/es.map.js";
|
44
|
+
import "core-js/modules/web.dom-collections.iterator.js";
|
29
45
|
import "core-js/modules/es.symbol.js";
|
30
46
|
import "core-js/modules/es.symbol.description.js";
|
31
47
|
import "core-js/modules/es.symbol.iterator.js";
|
32
|
-
import "core-js/modules/es.array.iterator.js";
|
33
|
-
import "core-js/modules/web.dom-collections.iterator.js";
|
34
48
|
import "core-js/modules/es.function.name.js";
|
35
|
-
|
36
|
-
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
37
|
-
|
38
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
39
|
-
|
40
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
41
|
-
|
42
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
43
|
-
|
44
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
45
|
-
|
46
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
47
|
-
|
48
49
|
import { addClass, empty, removeClass } from "./helpers/dom/element.mjs";
|
49
50
|
import { isFunction } from "./helpers/function.mjs";
|
50
51
|
import { isDefined, isUndefined, isRegExp, _injectProductInfo, isEmpty } from "./helpers/mixed.mjs";
|
@@ -64,14 +65,15 @@ import DataSource from "./dataSource.mjs";
|
|
64
65
|
import { cellMethodLookupFactory, spreadsheetColumnLabel } from "./helpers/data.mjs";
|
65
66
|
import { IndexMapper } from "./translations/index.mjs";
|
66
67
|
import { registerAsRootInstance, hasValidParameter, isRootInstance } from "./utils/rootInstance.mjs";
|
67
|
-
import {
|
68
|
+
import { ViewportColumnsCalculator } from "./3rdparty/walkontable/src/index.mjs";
|
68
69
|
import Hooks from "./pluginHooks.mjs";
|
69
70
|
import { hasLanguageDictionary, getValidLanguageCode, getTranslatedPhrase } from "./i18n/registry.mjs";
|
70
71
|
import { warnUserAboutLanguageRegistration, normalizeLanguageCode } from "./i18n/utils.mjs";
|
71
|
-
import { startObserving as keyStateStartObserving, stopObserving as keyStateStopObserving } from "./utils/keyStateObserver.mjs";
|
72
72
|
import { Selection } from "./selection/index.mjs";
|
73
|
-
import { MetaManager, DynamicCellMetaMod,
|
73
|
+
import { MetaManager, DynamicCellMetaMod, ExtendMetaPropertiesMod, replaceData } from "./dataMap/index.mjs";
|
74
74
|
import { createUniqueMap } from "./utils/dataStructures/uniqueMap.mjs";
|
75
|
+
import { createShortcutManager } from "./shortcuts/index.mjs";
|
76
|
+
var SHORTCUTS_GROUP = 'gridDefault';
|
75
77
|
var activeGuid = null;
|
76
78
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
77
79
|
|
@@ -100,7 +102,8 @@ var activeGuid = null;
|
|
100
102
|
*/
|
101
103
|
|
102
104
|
export default function Core(rootElement, userSettings) {
|
103
|
-
var
|
105
|
+
var _userSettings$layoutD,
|
106
|
+
_this = this;
|
104
107
|
|
105
108
|
var rootInstanceSymbol = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
106
109
|
var preventScrollingToCell = false;
|
@@ -111,11 +114,6 @@ export default function Core(rootElement, userSettings) {
|
|
111
114
|
var grid;
|
112
115
|
var editorManager;
|
113
116
|
var firstRun = true;
|
114
|
-
userSettings.language = getValidLanguageCode(userSettings.language);
|
115
|
-
var metaManager = new MetaManager(instance, userSettings, [DynamicCellMetaMod]);
|
116
|
-
var tableMeta = metaManager.getTableMeta();
|
117
|
-
var globalMeta = metaManager.getGlobalMeta();
|
118
|
-
var pluginsRegistry = createUniqueMap();
|
119
117
|
|
120
118
|
if (hasValidParameter(rootInstanceSymbol)) {
|
121
119
|
registerAsRootInstance(this);
|
@@ -130,8 +128,6 @@ export default function Core(rootElement, userSettings) {
|
|
130
128
|
|
131
129
|
|
132
130
|
this.rootElement = rootElement;
|
133
|
-
/* eslint-enable jsdoc/require-description-complete-sentence */
|
134
|
-
|
135
131
|
/**
|
136
132
|
* The nearest document over container.
|
137
133
|
*
|
@@ -180,7 +176,53 @@ export default function Core(rootElement, userSettings) {
|
|
180
176
|
*/
|
181
177
|
|
182
178
|
this.executionSuspendedCounter = 0;
|
183
|
-
|
179
|
+
var layoutDirection = (_userSettings$layoutD = userSettings === null || userSettings === void 0 ? void 0 : userSettings.layoutDirection) !== null && _userSettings$layoutD !== void 0 ? _userSettings$layoutD : 'inherit';
|
180
|
+
var rootElementDirection = ['rtl', 'ltr'].includes(layoutDirection) ? layoutDirection : this.rootWindow.getComputedStyle(this.rootElement).direction;
|
181
|
+
this.rootElement.setAttribute('dir', rootElementDirection);
|
182
|
+
/**
|
183
|
+
* Checks if the grid is rendered using the right-to-left layout direction.
|
184
|
+
*
|
185
|
+
* @since 12.0.0
|
186
|
+
* @memberof Core#
|
187
|
+
* @function isRtl
|
188
|
+
* @returns {boolean} True if RTL.
|
189
|
+
*/
|
190
|
+
|
191
|
+
this.isRtl = function () {
|
192
|
+
return rootElementDirection === 'rtl';
|
193
|
+
};
|
194
|
+
/**
|
195
|
+
* Checks if the grid is rendered using the left-to-right layout direction.
|
196
|
+
*
|
197
|
+
* @since 12.0.0
|
198
|
+
* @memberof Core#
|
199
|
+
* @function isLtr
|
200
|
+
* @returns {boolean} True if LTR.
|
201
|
+
*/
|
202
|
+
|
203
|
+
|
204
|
+
this.isLtr = function () {
|
205
|
+
return !instance.isRtl();
|
206
|
+
};
|
207
|
+
/**
|
208
|
+
* Returns 1 for LTR; -1 for RTL. Useful for calculations.
|
209
|
+
*
|
210
|
+
* @since 12.0.0
|
211
|
+
* @memberof Core#
|
212
|
+
* @function getDirectionFactor
|
213
|
+
* @returns {number} Returns 1 for LTR; -1 for RTL.
|
214
|
+
*/
|
215
|
+
|
216
|
+
|
217
|
+
this.getDirectionFactor = function () {
|
218
|
+
return instance.isLtr() ? 1 : -1;
|
219
|
+
};
|
220
|
+
|
221
|
+
userSettings.language = getValidLanguageCode(userSettings.language);
|
222
|
+
var metaManager = new MetaManager(instance, userSettings, [DynamicCellMetaMod, ExtendMetaPropertiesMod]);
|
223
|
+
var tableMeta = metaManager.getTableMeta();
|
224
|
+
var globalMeta = metaManager.getGlobalMeta();
|
225
|
+
var pluginsRegistry = createUniqueMap();
|
184
226
|
this.container = this.rootDocument.createElement('div');
|
185
227
|
this.renderCall = false;
|
186
228
|
rootElement.insertBefore(this.container, rootElement.firstChild);
|
@@ -218,14 +260,14 @@ export default function Core(rootElement, userSettings) {
|
|
218
260
|
var visualToRenderableCoords = function visualToRenderableCoords(coords) {
|
219
261
|
var visualRow = coords.row,
|
220
262
|
visualColumn = coords.col;
|
221
|
-
return
|
263
|
+
return instance._createCellCoords( // We just store indexes for rows and columns without headers.
|
222
264
|
visualRow >= 0 ? instance.rowIndexMapper.getRenderableFromVisualIndex(visualRow) : visualRow, visualColumn >= 0 ? instance.columnIndexMapper.getRenderableFromVisualIndex(visualColumn) : visualColumn);
|
223
265
|
};
|
224
266
|
|
225
267
|
var renderableToVisualCoords = function renderableToVisualCoords(coords) {
|
226
268
|
var renderableRow = coords.row,
|
227
269
|
renderableColumn = coords.col;
|
228
|
-
return
|
270
|
+
return instance._createCellCoords( // We just store indexes for rows and columns without headers.
|
229
271
|
renderableRow >= 0 ? instance.rowIndexMapper.getVisualFromRenderableIndex(renderableRow) : renderableRow, renderableColumn >= 0 ? instance.columnIndexMapper.getVisualFromRenderableIndex(renderableColumn) : renderableColumn // eslint-disable-line max-len
|
230
272
|
);
|
231
273
|
};
|
@@ -249,6 +291,15 @@ export default function Core(rootElement, userSettings) {
|
|
249
291
|
countRowsTranslated: function countRowsTranslated() {
|
250
292
|
return _this.view.countRenderableRows();
|
251
293
|
},
|
294
|
+
getShortcutManager: function getShortcutManager() {
|
295
|
+
return instance.getShortcutManager();
|
296
|
+
},
|
297
|
+
createCellCoords: function createCellCoords(row, column) {
|
298
|
+
return instance._createCellCoords(row, column);
|
299
|
+
},
|
300
|
+
createCellRange: function createCellRange(highlight, from, to) {
|
301
|
+
return instance._createCellRange(highlight, from, to);
|
302
|
+
},
|
252
303
|
visualToRenderableCoords: visualToRenderableCoords,
|
253
304
|
renderableToVisualCoords: renderableToVisualCoords,
|
254
305
|
isDisabledCellSelection: function isDisabledCellSelection(visualRow, visualColumn) {
|
@@ -277,11 +328,11 @@ export default function Core(rootElement, userSettings) {
|
|
277
328
|
_this.runHooks('beforeSetRangeEnd', cellCoords);
|
278
329
|
|
279
330
|
if (cellCoords.row < 0) {
|
280
|
-
cellCoords.row = _this.view.
|
331
|
+
cellCoords.row = _this.view._wt.wtTable.getFirstVisibleRow();
|
281
332
|
}
|
282
333
|
|
283
334
|
if (cellCoords.col < 0) {
|
284
|
-
cellCoords.col = _this.view.
|
335
|
+
cellCoords.col = _this.view._wt.wtTable.getFirstVisibleColumn();
|
285
336
|
}
|
286
337
|
});
|
287
338
|
this.selection.addLocalHook('afterSetRangeEnd', function (cellCoords) {
|
@@ -495,8 +546,8 @@ export default function Core(rootElement, userSettings) {
|
|
495
546
|
|
496
547
|
selection.getSelectedRange().pop(); // I can't use transforms as they don't work in negative indexes.
|
497
548
|
|
498
|
-
selection.setRangeStartOnly(
|
499
|
-
selection.setRangeEnd(
|
549
|
+
selection.setRangeStartOnly(instance._createCellCoords(currentFromRow + delta, currentFromColumn), true);
|
550
|
+
selection.setRangeEnd(instance._createCellCoords(currentToRow + delta, currentToColumn)); // will call render() internally
|
500
551
|
} else {
|
501
552
|
instance._refreshBorders(); // it will call render and prepare methods
|
502
553
|
|
@@ -540,8 +591,8 @@ export default function Core(rootElement, userSettings) {
|
|
540
591
|
|
541
592
|
selection.getSelectedRange().pop(); // I can't use transforms as they don't work in negative indexes.
|
542
593
|
|
543
|
-
selection.setRangeStartOnly(
|
544
|
-
selection.setRangeEnd(
|
594
|
+
selection.setRangeStartOnly(instance._createCellCoords(_currentFromRow, _currentFromColumn + delta), true);
|
595
|
+
selection.setRangeEnd(instance._createCellCoords(_currentToRow, _currentToColumn + delta)); // will call render() internally
|
545
596
|
} else {
|
546
597
|
instance._refreshBorders(); // it will call render and prepare methods
|
547
598
|
|
@@ -633,10 +684,10 @@ export default function Core(rootElement, userSettings) {
|
|
633
684
|
}
|
634
685
|
|
635
686
|
metaManager.removeColumn(physicalColumnIndex, groupAmount);
|
636
|
-
var
|
687
|
+
var fixedColumnsStart = tableMeta.fixedColumnsStart;
|
637
688
|
|
638
|
-
if (
|
639
|
-
tableMeta.
|
689
|
+
if (fixedColumnsStart >= calcIndex + 1) {
|
690
|
+
tableMeta.fixedColumnsStart -= Math.min(groupAmount, fixedColumnsStart - calcIndex);
|
640
691
|
}
|
641
692
|
|
642
693
|
if (Array.isArray(tableMeta.colHeaders)) {
|
@@ -1344,6 +1395,38 @@ export default function Core(rootElement, userSettings) {
|
|
1344
1395
|
activeEditor.refreshValue();
|
1345
1396
|
}
|
1346
1397
|
}
|
1398
|
+
/**
|
1399
|
+
* Creates and returns the CellCoords object.
|
1400
|
+
*
|
1401
|
+
* @private
|
1402
|
+
* @memberof Core#
|
1403
|
+
* @function _createCellCoords
|
1404
|
+
* @param {number} row The row index.
|
1405
|
+
* @param {number} column The column index.
|
1406
|
+
* @returns {CellCoords}
|
1407
|
+
*/
|
1408
|
+
|
1409
|
+
|
1410
|
+
this._createCellCoords = function (row, column) {
|
1411
|
+
return instance.view._wt.createCellCoords(row, column);
|
1412
|
+
};
|
1413
|
+
/**
|
1414
|
+
* Creates and returns the CellRange object.
|
1415
|
+
*
|
1416
|
+
* @private
|
1417
|
+
* @memberof Core#
|
1418
|
+
* @function _createCellRange
|
1419
|
+
* @param {CellCoords} highlight Defines the border around a cell where selection was started and to edit the cell
|
1420
|
+
* when you press Enter. The highlight cannot point to headers (negative values).
|
1421
|
+
* @param {CellCoords} from Initial coordinates.
|
1422
|
+
* @param {CellCoords} to Final coordinates.
|
1423
|
+
* @returns {CellRange}
|
1424
|
+
*/
|
1425
|
+
|
1426
|
+
|
1427
|
+
this._createCellRange = function (highlight, from, to) {
|
1428
|
+
return instance.view._wt.createCellRange(highlight, from, to);
|
1429
|
+
};
|
1347
1430
|
/**
|
1348
1431
|
* Validate a single cell.
|
1349
1432
|
*
|
@@ -1382,7 +1465,8 @@ export default function Core(rootElement, userSettings) {
|
|
1382
1465
|
if (td && td.nodeName !== 'TH') {
|
1383
1466
|
var renderableRow = instance.rowIndexMapper.getRenderableFromVisualIndex(row);
|
1384
1467
|
var renderableColumn = instance.columnIndexMapper.getRenderableFromVisualIndex(col);
|
1385
|
-
|
1468
|
+
|
1469
|
+
instance.view._wt.getSetting('cellRenderer', renderableRow, renderableColumn, td);
|
1386
1470
|
}
|
1387
1471
|
|
1388
1472
|
callback(valid);
|
@@ -1607,8 +1691,8 @@ export default function Core(rootElement, userSettings) {
|
|
1607
1691
|
throw new Error('populateFromArray parameter `input` must be an array of arrays'); // API changed in 0.9-beta2, let's check if you use it correctly
|
1608
1692
|
}
|
1609
1693
|
|
1610
|
-
var c = typeof endRow === 'number' ?
|
1611
|
-
return grid.populateFromArray(
|
1694
|
+
var c = typeof endRow === 'number' ? instance._createCellCoords(endRow, endCol) : null;
|
1695
|
+
return grid.populateFromArray(instance._createCellCoords(row, column), input, c, source, method, direction, deltas);
|
1612
1696
|
};
|
1613
1697
|
/**
|
1614
1698
|
* Adds/removes data from the column. This method works the same as Array.splice for arrays.
|
@@ -1757,10 +1841,10 @@ export default function Core(rootElement, userSettings) {
|
|
1757
1841
|
|
1758
1842
|
var changes = [];
|
1759
1843
|
arrayEach(selection.getSelectedRange(), function (cellRange) {
|
1760
|
-
var
|
1761
|
-
var
|
1762
|
-
rangeEach(
|
1763
|
-
rangeEach(
|
1844
|
+
var topStart = cellRange.getTopStartCorner();
|
1845
|
+
var bottomEnd = cellRange.getBottomEndCorner();
|
1846
|
+
rangeEach(topStart.row, bottomEnd.row, function (row) {
|
1847
|
+
rangeEach(topStart.col, bottomEnd.col, function (column) {
|
1764
1848
|
if (!_this2.getCellMeta(row, column).readOnly) {
|
1765
1849
|
changes.push([row, column, null]);
|
1766
1850
|
}
|
@@ -2118,7 +2202,7 @@ export default function Core(rootElement, userSettings) {
|
|
2118
2202
|
return;
|
2119
2203
|
}
|
2120
2204
|
|
2121
|
-
if (isSizeChanged || instance.view.
|
2205
|
+
if (isSizeChanged || instance.view._wt.wtOverlays.scrollableElement === instance.rootWindow) {
|
2122
2206
|
instance.view.setLastSize(width, height);
|
2123
2207
|
instance.render();
|
2124
2208
|
}
|
@@ -2132,14 +2216,67 @@ export default function Core(rootElement, userSettings) {
|
|
2132
2216
|
}, isSizeChanged);
|
2133
2217
|
};
|
2134
2218
|
/**
|
2135
|
-
*
|
2136
|
-
*
|
2137
|
-
* (
|
2219
|
+
* The `updateData()` method replaces Handsontable's [`data`](@/api/options.md#data) with a new dataset.
|
2220
|
+
*
|
2221
|
+
* The `updateData()` method:
|
2222
|
+
* - Keeps cells' states (e.g. cells' [formatting](@/guides/cell-features/formatting-cells.md) and cells' [`readOnly`](@/api/options.md#readonly) states)
|
2223
|
+
* - Keeps rows' states (e.g. row order)
|
2224
|
+
* - Keeps columns' states (e.g. column order)
|
2225
|
+
*
|
2226
|
+
* To replace Handsontable's [`data`](@/api/options.md#data) and reset states, use the [`loadData()`](#loaddata) method.
|
2227
|
+
*
|
2228
|
+
* Read more:
|
2229
|
+
* - [Binding to data →](@/guides/getting-started/binding-to-data.md)
|
2230
|
+
* - [Saving data →](@/guides/getting-started/saving-data.md)
|
2231
|
+
*
|
2232
|
+
* @memberof Core#
|
2233
|
+
* @function updateData
|
2234
|
+
* @since 11.1.0
|
2235
|
+
* @param {Array} data An [array of arrays](@/guides/getting-started/binding-to-data.md#array-of-arrays), or an [array of objects](@/guides/getting-started/binding-to-data.md#array-of-objects), that contains Handsontable's data
|
2236
|
+
* @param {string} [source] The source of the `updateData()` call
|
2237
|
+
* @fires Hooks#beforeUpdateData
|
2238
|
+
* @fires Hooks#afterUpdateData
|
2239
|
+
* @fires Hooks#afterChange
|
2240
|
+
*/
|
2241
|
+
|
2242
|
+
|
2243
|
+
this.updateData = function (data, source) {
|
2244
|
+
var _this3 = this;
|
2245
|
+
|
2246
|
+
replaceData(data, function (newDataMap) {
|
2247
|
+
datamap = newDataMap;
|
2248
|
+
}, function (newDataMap) {
|
2249
|
+
datamap = newDataMap;
|
2250
|
+
instance.columnIndexMapper.fitToLength(_this3.getInitialColumnCount());
|
2251
|
+
instance.rowIndexMapper.fitToLength(_this3.countSourceRows());
|
2252
|
+
grid.adjustRowsAndCols();
|
2253
|
+
}, {
|
2254
|
+
hotInstance: instance,
|
2255
|
+
dataMap: datamap,
|
2256
|
+
dataSource: dataSource,
|
2257
|
+
internalSource: 'updateData',
|
2258
|
+
source: source,
|
2259
|
+
firstRun: firstRun
|
2260
|
+
});
|
2261
|
+
};
|
2262
|
+
/**
|
2263
|
+
* The `loadData()` method replaces Handsontable's [`data`](@/api/options.md#data) with a new dataset.
|
2264
|
+
*
|
2265
|
+
* Additionally, the `loadData()` method:
|
2266
|
+
* - Resets cells' states (e.g. cells' [formatting](@/guides/cell-features/formatting-cells.md) and cells' [`readOnly`](@/api/options.md#readonly) states)
|
2267
|
+
* - Resets rows' states (e.g. row order)
|
2268
|
+
* - Resets columns' states (e.g. column order)
|
2269
|
+
*
|
2270
|
+
* To replace Handsontable's [`data`](@/api/options.md#data) without resetting states, use the [`updateData()`](#updatedata) method.
|
2271
|
+
*
|
2272
|
+
* Read more:
|
2273
|
+
* - [Binding to data →](@/guides/getting-started/binding-to-data.md)
|
2274
|
+
* - [Saving data →](@/guides/getting-started/saving-data.md)
|
2138
2275
|
*
|
2139
2276
|
* @memberof Core#
|
2140
2277
|
* @function loadData
|
2141
|
-
* @param {Array} data
|
2142
|
-
* @param {string} [source]
|
2278
|
+
* @param {Array} data An [array of arrays](@/guides/getting-started/binding-to-data.md#array-of-arrays), or an [array of objects](@/guides/getting-started/binding-to-data.md#array-of-objects), that contains Handsontable's data
|
2279
|
+
* @param {string} [source] The source of the `loadData()` call
|
2143
2280
|
* @fires Hooks#beforeLoadData
|
2144
2281
|
* @fires Hooks#afterLoadData
|
2145
2282
|
* @fires Hooks#afterChange
|
@@ -2147,88 +2284,34 @@ export default function Core(rootElement, userSettings) {
|
|
2147
2284
|
|
2148
2285
|
|
2149
2286
|
this.loadData = function (data, source) {
|
2150
|
-
|
2151
|
-
|
2152
|
-
}
|
2153
|
-
|
2154
|
-
|
2155
|
-
|
2156
|
-
}
|
2157
|
-
|
2158
|
-
if (datamap) {
|
2159
|
-
datamap.destroy();
|
2160
|
-
}
|
2161
|
-
|
2162
|
-
data = instance.runHooks('beforeLoadData', data, firstRun, source);
|
2163
|
-
datamap = new DataMap(instance, data, tableMeta);
|
2164
|
-
|
2165
|
-
if (_typeof(data) === 'object' && data !== null) {
|
2166
|
-
if (!(data.push && data.splice)) {
|
2167
|
-
// check if data is array. Must use duck-type check so Backbone Collections also pass it
|
2168
|
-
// when data is not an array, attempt to make a single-row array of it
|
2169
|
-
// eslint-disable-next-line no-param-reassign
|
2170
|
-
data = [data];
|
2171
|
-
}
|
2172
|
-
} else if (data === null) {
|
2173
|
-
var dataSchema = datamap.getSchema(); // eslint-disable-next-line no-param-reassign
|
2174
|
-
|
2175
|
-
data = [];
|
2176
|
-
var row;
|
2177
|
-
var r = 0;
|
2178
|
-
var rlen = 0;
|
2179
|
-
|
2180
|
-
for (r = 0, rlen = tableMeta.startRows; r < rlen; r++) {
|
2181
|
-
if ((instance.dataType === 'object' || instance.dataType === 'function') && tableMeta.dataSchema) {
|
2182
|
-
row = deepClone(dataSchema);
|
2183
|
-
data.push(row);
|
2184
|
-
} else if (instance.dataType === 'array') {
|
2185
|
-
row = deepClone(dataSchema[0]);
|
2186
|
-
data.push(row);
|
2187
|
-
} else {
|
2188
|
-
row = [];
|
2189
|
-
|
2190
|
-
for (var c = 0, clen = tableMeta.startCols; c < clen; c++) {
|
2191
|
-
row.push(null);
|
2192
|
-
}
|
2287
|
+
replaceData(data, function (newDataMap) {
|
2288
|
+
datamap = newDataMap;
|
2289
|
+
}, function () {
|
2290
|
+
metaManager.clearCellsCache();
|
2291
|
+
instance.initIndexMappers();
|
2292
|
+
grid.adjustRowsAndCols();
|
2193
2293
|
|
2194
|
-
|
2195
|
-
|
2294
|
+
if (firstRun) {
|
2295
|
+
firstRun = [null, 'loadData'];
|
2196
2296
|
}
|
2197
|
-
}
|
2198
|
-
|
2199
|
-
|
2200
|
-
|
2201
|
-
|
2202
|
-
|
2203
|
-
|
2204
|
-
|
2205
|
-
tableMeta.data = data;
|
2206
|
-
datamap.dataSource = data;
|
2207
|
-
dataSource.data = data;
|
2208
|
-
dataSource.dataType = instance.dataType;
|
2209
|
-
dataSource.colToProp = datamap.colToProp.bind(datamap);
|
2210
|
-
dataSource.propToCol = datamap.propToCol.bind(datamap);
|
2211
|
-
dataSource.countCachedColumns = datamap.countCachedColumns.bind(datamap);
|
2212
|
-
metaManager.clearCellsCache();
|
2213
|
-
instance.initIndexMappers();
|
2214
|
-
grid.adjustRowsAndCols();
|
2215
|
-
instance.runHooks('afterLoadData', data, firstRun, source);
|
2216
|
-
|
2217
|
-
if (firstRun) {
|
2218
|
-
firstRun = [null, 'loadData'];
|
2219
|
-
} else {
|
2220
|
-
instance.runHooks('afterChange', null, 'loadData');
|
2221
|
-
instance.render();
|
2222
|
-
}
|
2297
|
+
}, {
|
2298
|
+
hotInstance: instance,
|
2299
|
+
dataMap: datamap,
|
2300
|
+
dataSource: dataSource,
|
2301
|
+
internalSource: 'loadData',
|
2302
|
+
source: source,
|
2303
|
+
firstRun: firstRun
|
2304
|
+
});
|
2223
2305
|
};
|
2224
2306
|
/**
|
2225
|
-
*
|
2307
|
+
* Gets the initial column count, calculated based on the `columns` setting.
|
2226
2308
|
*
|
2227
2309
|
* @private
|
2310
|
+
* @returns {number} The calculated number of columns.
|
2228
2311
|
*/
|
2229
2312
|
|
2230
2313
|
|
2231
|
-
this.
|
2314
|
+
this.getInitialColumnCount = function () {
|
2232
2315
|
var columnsSettings = tableMeta.columns;
|
2233
2316
|
var finalNrOfColumns = 0; // We will check number of columns when the `columns` property was defined as an array. Columns option may
|
2234
2317
|
// narrow down or expand displayed dataset in that case.
|
@@ -2258,7 +2341,17 @@ export default function Core(rootElement, userSettings) {
|
|
2258
2341
|
finalNrOfColumns = this.countSourceCols();
|
2259
2342
|
}
|
2260
2343
|
|
2261
|
-
|
2344
|
+
return finalNrOfColumns;
|
2345
|
+
};
|
2346
|
+
/**
|
2347
|
+
* Init index mapper which manage indexes assigned to the data.
|
2348
|
+
*
|
2349
|
+
* @private
|
2350
|
+
*/
|
2351
|
+
|
2352
|
+
|
2353
|
+
this.initIndexMappers = function () {
|
2354
|
+
this.columnIndexMapper.initToLength(this.getInitialColumnCount());
|
2262
2355
|
this.rowIndexMapper.initToLength(this.countSourceRows());
|
2263
2356
|
};
|
2264
2357
|
/**
|
@@ -2292,7 +2385,7 @@ export default function Core(rootElement, userSettings) {
|
|
2292
2385
|
return datamap.getAll();
|
2293
2386
|
}
|
2294
2387
|
|
2295
|
-
return datamap.getRange(
|
2388
|
+
return datamap.getRange(instance._createCellCoords(row, column), instance._createCellCoords(row2, column2), datamap.DESTINATION_RENDERER);
|
2296
2389
|
};
|
2297
2390
|
/**
|
2298
2391
|
* Returns a string value of the selected range. Each column is separated by tab, each row is separated by a new
|
@@ -2309,7 +2402,7 @@ export default function Core(rootElement, userSettings) {
|
|
2309
2402
|
|
2310
2403
|
|
2311
2404
|
this.getCopyableText = function (startRow, startCol, endRow, endCol) {
|
2312
|
-
return datamap.getCopyableText(
|
2405
|
+
return datamap.getCopyableText(instance._createCellCoords(startRow, startCol), instance._createCellCoords(endRow, endCol));
|
2313
2406
|
};
|
2314
2407
|
/**
|
2315
2408
|
* Returns the data's copyable value at specified `row` and `column` index.
|
@@ -2339,7 +2432,7 @@ export default function Core(rootElement, userSettings) {
|
|
2339
2432
|
return datamap.getSchema();
|
2340
2433
|
};
|
2341
2434
|
/**
|
2342
|
-
* Use it if you need to change configuration after initialization. The `settings` argument is an object containing the
|
2435
|
+
* Use it if you need to change configuration after initialization. The `settings` argument is an object containing the changed
|
2343
2436
|
* settings, declared the same way as in the initial settings object.
|
2344
2437
|
*
|
2345
2438
|
* __Note__, that although the `updateSettings` method doesn't overwrite the previously declared settings, it might reset
|
@@ -2348,9 +2441,12 @@ export default function Core(rootElement, userSettings) {
|
|
2348
2441
|
* Since 8.0.0 passing `columns` or `data` inside `settings` objects will result in resetting states corresponding to rows and columns
|
2349
2442
|
* (for example, row/column sequence, column width, row height, frozen columns etc.).
|
2350
2443
|
*
|
2444
|
+
* Since 12.0.0 passing `data` inside `settings` objects no longer results in resetting states corresponding to rows and columns
|
2445
|
+
* (for example, row/column sequence, column width, row height, frozen columns etc.).
|
2446
|
+
*
|
2351
2447
|
* @memberof Core#
|
2352
2448
|
* @function updateSettings
|
2353
|
-
* @param {object} settings
|
2449
|
+
* @param {object} settings A settings object (see {@link Options}). Only provide the settings that are changed, not the whole settings object that was used for initialization.
|
2354
2450
|
* @param {boolean} [init=false] Internally used for in initialization mode.
|
2355
2451
|
* @example
|
2356
2452
|
* ```js
|
@@ -2367,6 +2463,7 @@ export default function Core(rootElement, userSettings) {
|
|
2367
2463
|
|
2368
2464
|
this.updateSettings = function (settings) {
|
2369
2465
|
var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
2466
|
+
var dataUpdateFunction = (firstRun ? instance.loadData : instance.updateData).bind(this);
|
2370
2467
|
var columnsAsFunc = false;
|
2371
2468
|
var i;
|
2372
2469
|
var j;
|
@@ -2385,19 +2482,15 @@ export default function Core(rootElement, userSettings) {
|
|
2385
2482
|
|
2386
2483
|
|
2387
2484
|
for (i in settings) {
|
2388
|
-
if (i === 'data') {
|
2389
|
-
/* eslint-disable-next-line no-continue */
|
2390
|
-
continue; // loadData will be triggered later
|
2485
|
+
if (i === 'data') {// Do nothing. loadData will be triggered later
|
2391
2486
|
} else if (i === 'language') {
|
2392
2487
|
setLanguage(settings.language);
|
2393
|
-
/* eslint-disable-next-line no-continue */
|
2394
|
-
|
2395
|
-
continue;
|
2396
2488
|
} else if (i === 'className') {
|
2397
2489
|
setClassName('className', settings.className);
|
2398
2490
|
} else if (i === 'tableClassName' && instance.table) {
|
2399
2491
|
setClassName('tableClassName', settings.tableClassName);
|
2400
|
-
|
2492
|
+
|
2493
|
+
instance.view._wt.wtOverlays.syncOverlayTableClassNames();
|
2401
2494
|
} else if (Hooks.getSingleton().isRegistered(i) || Hooks.getSingleton().isDeprecated(i)) {
|
2402
2495
|
if (isFunction(settings[i]) || Array.isArray(settings[i])) {
|
2403
2496
|
settings[i].initialHook = true;
|
@@ -2411,9 +2504,9 @@ export default function Core(rootElement, userSettings) {
|
|
2411
2504
|
|
2412
2505
|
|
2413
2506
|
if (settings.data === void 0 && tableMeta.data === void 0) {
|
2414
|
-
|
2507
|
+
dataUpdateFunction(null, 'updateSettings'); // data source created just now
|
2415
2508
|
} else if (settings.data !== void 0) {
|
2416
|
-
|
2509
|
+
dataUpdateFunction(settings.data, 'updateSettings'); // data source given as option
|
2417
2510
|
} else if (settings.columns !== void 0) {
|
2418
2511
|
datamap.createMap(); // The `column` property has changed - dataset may be expanded or narrowed down. The `loadData` do the same.
|
2419
2512
|
|
@@ -2500,8 +2593,9 @@ export default function Core(rootElement, userSettings) {
|
|
2500
2593
|
|
2501
2594
|
if (!init) {
|
2502
2595
|
if (instance.view) {
|
2503
|
-
instance.view.
|
2504
|
-
|
2596
|
+
instance.view._wt.wtViewport.resetHasOversizedColumnHeadersMarked();
|
2597
|
+
|
2598
|
+
instance.view._wt.exportSettingsAsClassNames();
|
2505
2599
|
}
|
2506
2600
|
|
2507
2601
|
instance.runHooks('afterUpdateSettings', settings);
|
@@ -2516,12 +2610,13 @@ export default function Core(rootElement, userSettings) {
|
|
2516
2610
|
|
2517
2611
|
instance._refreshBorders(null);
|
2518
2612
|
|
2519
|
-
instance.view.
|
2613
|
+
instance.view._wt.wtOverlays.adjustElementsSize();
|
2614
|
+
|
2520
2615
|
editorManager.unlockEditor();
|
2521
2616
|
}
|
2522
2617
|
|
2523
2618
|
if (!init && instance.view && (currentHeight === '' || height === '' || height === void 0) && currentHeight !== height) {
|
2524
|
-
instance.view.
|
2619
|
+
instance.view._wt.wtOverlays.updateMainScrollableElements();
|
2525
2620
|
}
|
2526
2621
|
};
|
2527
2622
|
/**
|
@@ -2551,7 +2646,7 @@ export default function Core(rootElement, userSettings) {
|
|
2551
2646
|
*
|
2552
2647
|
* @memberof Core#
|
2553
2648
|
* @function getSettings
|
2554
|
-
* @returns {
|
2649
|
+
* @returns {TableMeta} Object containing the current table settings.
|
2555
2650
|
*/
|
2556
2651
|
|
2557
2652
|
|
@@ -2645,7 +2740,7 @@ export default function Core(rootElement, userSettings) {
|
|
2645
2740
|
return null;
|
2646
2741
|
}
|
2647
2742
|
|
2648
|
-
return instance.view.getCellAtCoords(
|
2743
|
+
return instance.view.getCellAtCoords(instance._createCellCoords(renderableRowIndex, renderableColumnIndex), topmost);
|
2649
2744
|
};
|
2650
2745
|
/**
|
2651
2746
|
* Returns the coordinates of the cell, provided as a HTML table cell element.
|
@@ -2663,7 +2758,7 @@ export default function Core(rootElement, userSettings) {
|
|
2663
2758
|
|
2664
2759
|
|
2665
2760
|
this.getCoords = function (element) {
|
2666
|
-
var renderableCoords = this.view.
|
2761
|
+
var renderableCoords = this.view._wt.wtTable.getCoords(element);
|
2667
2762
|
|
2668
2763
|
if (renderableCoords === null) {
|
2669
2764
|
return null;
|
@@ -2682,7 +2777,7 @@ export default function Core(rootElement, userSettings) {
|
|
2682
2777
|
visualColumn = this.columnIndexMapper.getVisualFromRenderableIndex(renderableColumn);
|
2683
2778
|
}
|
2684
2779
|
|
2685
|
-
return
|
2780
|
+
return instance._createCellCoords(visualRow, visualColumn);
|
2686
2781
|
};
|
2687
2782
|
/**
|
2688
2783
|
* Returns the property name that corresponds with the given column index.
|
@@ -2824,7 +2919,7 @@ export default function Core(rootElement, userSettings) {
|
|
2824
2919
|
this.getDataAtCol = function (column) {
|
2825
2920
|
var _ref13;
|
2826
2921
|
|
2827
|
-
return (_ref13 = []).concat.apply(_ref13, _toConsumableArray(datamap.getRange(
|
2922
|
+
return (_ref13 = []).concat.apply(_ref13, _toConsumableArray(datamap.getRange(instance._createCellCoords(0, column), instance._createCellCoords(tableMeta.data.length - 1, column), datamap.DESTINATION_RENDERER)));
|
2828
2923
|
};
|
2829
2924
|
/**
|
2830
2925
|
* Given the object property name (e.g. `'first.name'` or `'0'`), returns an array of column's values from the table data.
|
@@ -2841,7 +2936,7 @@ export default function Core(rootElement, userSettings) {
|
|
2841
2936
|
this.getDataAtProp = function (prop) {
|
2842
2937
|
var _ref14;
|
2843
2938
|
|
2844
|
-
var range = datamap.getRange(
|
2939
|
+
var range = datamap.getRange(instance._createCellCoords(0, datamap.propToCol(prop)), instance._createCellCoords(tableMeta.data.length - 1, datamap.propToCol(prop)), datamap.DESTINATION_RENDERER);
|
2845
2940
|
return (_ref14 = []).concat.apply(_ref14, _toConsumableArray(range));
|
2846
2941
|
};
|
2847
2942
|
/**
|
@@ -2868,7 +2963,7 @@ export default function Core(rootElement, userSettings) {
|
|
2868
2963
|
if (row === void 0) {
|
2869
2964
|
data = dataSource.getData();
|
2870
2965
|
} else {
|
2871
|
-
data = dataSource.getByRange(
|
2966
|
+
data = dataSource.getByRange(instance._createCellCoords(row, column), instance._createCellCoords(row2, column2));
|
2872
2967
|
}
|
2873
2968
|
|
2874
2969
|
return data;
|
@@ -2897,7 +2992,7 @@ export default function Core(rootElement, userSettings) {
|
|
2897
2992
|
if (row === void 0) {
|
2898
2993
|
data = dataSource.getData(true);
|
2899
2994
|
} else {
|
2900
|
-
data = dataSource.getByRange(
|
2995
|
+
data = dataSource.getByRange(instance._createCellCoords(row, column), instance._createCellCoords(row2, column2), true);
|
2901
2996
|
}
|
2902
2997
|
|
2903
2998
|
return data;
|
@@ -3014,7 +3109,7 @@ export default function Core(rootElement, userSettings) {
|
|
3014
3109
|
|
3015
3110
|
|
3016
3111
|
this.getDataAtRow = function (row) {
|
3017
|
-
var data = datamap.getRange(
|
3112
|
+
var data = datamap.getRange(instance._createCellCoords(row, 0), instance._createCellCoords(row, this.countCols() - 1), datamap.DESTINATION_RENDERER);
|
3018
3113
|
return data[0] || [];
|
3019
3114
|
};
|
3020
3115
|
/**
|
@@ -3035,7 +3130,7 @@ export default function Core(rootElement, userSettings) {
|
|
3035
3130
|
|
3036
3131
|
|
3037
3132
|
this.getDataType = function (rowFrom, columnFrom, rowTo, columnTo) {
|
3038
|
-
var
|
3133
|
+
var _this4 = this;
|
3039
3134
|
|
3040
3135
|
var coords = rowFrom === void 0 ? [0, 0, this.countRows(), this.countCols()] : [rowFrom, columnFrom, rowTo, columnTo];
|
3041
3136
|
var rowStart = coords[0],
|
@@ -3057,7 +3152,7 @@ export default function Core(rootElement, userSettings) {
|
|
3057
3152
|
rangeEach(Math.max(Math.min(rowStart, rowEnd), 0), Math.max(rowStart, rowEnd), function (row) {
|
3058
3153
|
var isTypeEqual = true;
|
3059
3154
|
rangeEach(Math.max(Math.min(columnStart, columnEnd), 0), Math.max(columnStart, columnEnd), function (column) {
|
3060
|
-
var cellType =
|
3155
|
+
var cellType = _this4.getCellMeta(row, column);
|
3061
3156
|
|
3062
3157
|
currentType = cellType.type;
|
3063
3158
|
|
@@ -3114,7 +3209,7 @@ export default function Core(rootElement, userSettings) {
|
|
3114
3209
|
|
3115
3210
|
|
3116
3211
|
this.spliceCellsMeta = function (visualIndex) {
|
3117
|
-
var
|
3212
|
+
var _this5 = this;
|
3118
3213
|
|
3119
3214
|
var deleteAmount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
3120
3215
|
|
@@ -3132,9 +3227,9 @@ export default function Core(rootElement, userSettings) {
|
|
3132
3227
|
|
3133
3228
|
if (cellMetaRows.length > 0) {
|
3134
3229
|
arrayEach(cellMetaRows.reverse(), function (cellMetaRow) {
|
3135
|
-
metaManager.createRow(
|
3230
|
+
metaManager.createRow(_this5.toPhysicalRow(visualIndex));
|
3136
3231
|
arrayEach(cellMetaRow, function (cellMeta, columnIndex) {
|
3137
|
-
return
|
3232
|
+
return _this5.setCellMetaObject(visualIndex, columnIndex, cellMeta);
|
3138
3233
|
});
|
3139
3234
|
});
|
3140
3235
|
}
|
@@ -3153,11 +3248,11 @@ export default function Core(rootElement, userSettings) {
|
|
3153
3248
|
|
3154
3249
|
|
3155
3250
|
this.setCellMetaObject = function (row, column, prop) {
|
3156
|
-
var
|
3251
|
+
var _this6 = this;
|
3157
3252
|
|
3158
3253
|
if (_typeof(prop) === 'object') {
|
3159
3254
|
objectEach(prop, function (value, key) {
|
3160
|
-
|
3255
|
+
_this6.setCellMeta(row, column, key, value);
|
3161
3256
|
});
|
3162
3257
|
}
|
3163
3258
|
};
|
@@ -3777,7 +3872,8 @@ export default function Core(rootElement, userSettings) {
|
|
3777
3872
|
return Math.min(maxCols, dataLen);
|
3778
3873
|
};
|
3779
3874
|
/**
|
3780
|
-
* Returns the number of rendered rows
|
3875
|
+
* Returns the number of rendered rows including rows that are partially or fully rendered
|
3876
|
+
* outside the table viewport.
|
3781
3877
|
*
|
3782
3878
|
* @memberof Core#
|
3783
3879
|
* @function countRenderedRows
|
@@ -3786,10 +3882,11 @@ export default function Core(rootElement, userSettings) {
|
|
3786
3882
|
|
3787
3883
|
|
3788
3884
|
this.countRenderedRows = function () {
|
3789
|
-
return instance.view.
|
3885
|
+
return instance.view._wt.drawn ? instance.view._wt.wtTable.getRenderedRowsCount() : -1;
|
3790
3886
|
};
|
3791
3887
|
/**
|
3792
|
-
* Returns the number of
|
3888
|
+
* Returns the number of rendered rows that are only visible in the table viewport.
|
3889
|
+
* The rows that are partially visible are not counted.
|
3793
3890
|
*
|
3794
3891
|
* @memberof Core#
|
3795
3892
|
* @function countVisibleRows
|
@@ -3798,10 +3895,11 @@ export default function Core(rootElement, userSettings) {
|
|
3798
3895
|
|
3799
3896
|
|
3800
3897
|
this.countVisibleRows = function () {
|
3801
|
-
return instance.view.
|
3898
|
+
return instance.view._wt.drawn ? instance.view._wt.wtTable.getVisibleRowsCount() : -1;
|
3802
3899
|
};
|
3803
3900
|
/**
|
3804
|
-
* Returns the number of rendered
|
3901
|
+
* Returns the number of rendered rows including columns that are partially or fully rendered
|
3902
|
+
* outside the table viewport.
|
3805
3903
|
*
|
3806
3904
|
* @memberof Core#
|
3807
3905
|
* @function countRenderedCols
|
@@ -3810,10 +3908,11 @@ export default function Core(rootElement, userSettings) {
|
|
3810
3908
|
|
3811
3909
|
|
3812
3910
|
this.countRenderedCols = function () {
|
3813
|
-
return instance.view.
|
3911
|
+
return instance.view._wt.drawn ? instance.view._wt.wtTable.getRenderedColumnsCount() : -1;
|
3814
3912
|
};
|
3815
3913
|
/**
|
3816
|
-
* Returns the number of
|
3914
|
+
* Returns the number of rendered columns that are only visible in the table viewport.
|
3915
|
+
* The columns that are partially visible are not counted.
|
3817
3916
|
*
|
3818
3917
|
* @memberof Core#
|
3819
3918
|
* @function countVisibleCols
|
@@ -3822,7 +3921,7 @@ export default function Core(rootElement, userSettings) {
|
|
3822
3921
|
|
3823
3922
|
|
3824
3923
|
this.countVisibleCols = function () {
|
3825
|
-
return instance.view.
|
3924
|
+
return instance.view._wt.drawn ? instance.view._wt.wtTable.getVisibleColumnsCount() : -1;
|
3826
3925
|
};
|
3827
3926
|
/**
|
3828
3927
|
* Returns the number of empty rows. If the optional ending parameter is `true`, returns the
|
@@ -4132,7 +4231,7 @@ export default function Core(rootElement, userSettings) {
|
|
4132
4231
|
var isColumnInteger = Number.isInteger(renderableColumn);
|
4133
4232
|
|
4134
4233
|
if (isRowInteger && isColumnInteger) {
|
4135
|
-
return instance.view.scrollViewport(
|
4234
|
+
return instance.view.scrollViewport(instance._createCellCoords(renderableRow, renderableColumn), snapToTop, snapToRight, snapToBottom, snapToLeft);
|
4136
4235
|
}
|
4137
4236
|
|
4138
4237
|
if (isRowInteger && isColumnInteger === false) {
|
@@ -4169,8 +4268,8 @@ export default function Core(rootElement, userSettings) {
|
|
4169
4268
|
}
|
4170
4269
|
|
4171
4270
|
dataSource = null;
|
4271
|
+
this.getShortcutManager().destroy();
|
4172
4272
|
metaManager.clearCache();
|
4173
|
-
keyStateStopObserving();
|
4174
4273
|
|
4175
4274
|
if (isRootInstance(instance)) {
|
4176
4275
|
var licenseInfo = this.rootDocument.querySelector('#hot-display-license-info');
|
@@ -4566,6 +4665,337 @@ export default function Core(rootElement, userSettings) {
|
|
4566
4665
|
return instance.isLtr() ? 1 : -1;
|
4567
4666
|
};
|
4568
4667
|
|
4668
|
+
var shortcutManager = createShortcutManager({
|
4669
|
+
beforeKeyDown: function beforeKeyDown(event) {
|
4670
|
+
if (_this.isListening() === false) {
|
4671
|
+
// Performing action (executing a callback) and triggering hook only for listening Handsontable.
|
4672
|
+
return false;
|
4673
|
+
}
|
4674
|
+
|
4675
|
+
return _this.runHooks('beforeKeyDown', event);
|
4676
|
+
},
|
4677
|
+
afterKeyDown: function afterKeyDown(event) {
|
4678
|
+
if (_this.isDestroyed) {
|
4679
|
+
// Handsontable could be destroyed after performing action (executing a callback).
|
4680
|
+
return;
|
4681
|
+
}
|
4682
|
+
|
4683
|
+
instance.runHooks('afterDocumentKeyDown', event);
|
4684
|
+
},
|
4685
|
+
ownerWindow: this.rootWindow
|
4686
|
+
});
|
4687
|
+
/**
|
4688
|
+
* Returns instance of a manager responsible for handling shortcuts stored in some contexts. It run actions after
|
4689
|
+
* pressing key combination in active Handsontable instance.
|
4690
|
+
*
|
4691
|
+
* @memberof Core#
|
4692
|
+
* @since 12.0.0
|
4693
|
+
* @function getShortcutManager
|
4694
|
+
* @returns {ShortcutManager} Instance of {@link ShortcutManager}
|
4695
|
+
*/
|
4696
|
+
|
4697
|
+
this.getShortcutManager = function () {
|
4698
|
+
return shortcutManager;
|
4699
|
+
};
|
4700
|
+
|
4701
|
+
var gridContext = shortcutManager.addContext('grid');
|
4702
|
+
var gridConfig = {
|
4703
|
+
runOnlyIf: function runOnlyIf() {
|
4704
|
+
return isDefined(instance.getSelected()) && instance.countRenderedRows() > 0 && instance.countRenderedCols() > 0;
|
4705
|
+
},
|
4706
|
+
group: SHORTCUTS_GROUP
|
4707
|
+
};
|
4708
|
+
shortcutManager.setActiveContextName('grid');
|
4709
|
+
gridContext.addShortcuts([{
|
4710
|
+
keys: [['Control/Meta', 'A']],
|
4711
|
+
callback: function callback() {
|
4712
|
+
instance.selectAll();
|
4713
|
+
}
|
4714
|
+
}, {
|
4715
|
+
keys: [['Control/Meta', 'Enter']],
|
4716
|
+
callback: function callback() {
|
4717
|
+
var selectedRange = instance.getSelectedRange();
|
4718
|
+
var _selectedRange$highli = selectedRange[selectedRange.length - 1].highlight,
|
4719
|
+
highlightRow = _selectedRange$highli.row,
|
4720
|
+
highlightColumn = _selectedRange$highli.col;
|
4721
|
+
var valueToPopulate = instance.getDataAtCell(highlightRow, highlightColumn);
|
4722
|
+
var cellValues = new Map();
|
4723
|
+
|
4724
|
+
for (var i = 0; i < selectedRange.length; i++) {
|
4725
|
+
selectedRange[i].forAll(function (row, column) {
|
4726
|
+
if (row >= 0 && column >= 0 && (row !== highlightRow || column !== highlightColumn)) {
|
4727
|
+
var _instance$getCellMeta = instance.getCellMeta(row, column),
|
4728
|
+
readOnly = _instance$getCellMeta.readOnly;
|
4729
|
+
|
4730
|
+
if (!readOnly) {
|
4731
|
+
cellValues.set("".concat(row, "x").concat(column), [row, column, valueToPopulate]);
|
4732
|
+
}
|
4733
|
+
}
|
4734
|
+
});
|
4735
|
+
}
|
4736
|
+
|
4737
|
+
instance.setDataAtCell(Array.from(cellValues.values()));
|
4738
|
+
},
|
4739
|
+
runOnlyIf: function runOnlyIf() {
|
4740
|
+
return instance.getSelectedRangeLast().getCellsCount() > 1;
|
4741
|
+
}
|
4742
|
+
}, {
|
4743
|
+
keys: [['ArrowUp']],
|
4744
|
+
callback: function callback() {
|
4745
|
+
selection.transformStart(-1, 0);
|
4746
|
+
}
|
4747
|
+
}, {
|
4748
|
+
keys: [['ArrowUp', 'Control/Meta']],
|
4749
|
+
captureCtrl: true,
|
4750
|
+
callback: function callback() {
|
4751
|
+
selection.setRangeStart(instance._createCellCoords(instance.rowIndexMapper.getFirstNotHiddenIndex(0, 1), instance.getSelectedRangeLast().highlight.col));
|
4752
|
+
}
|
4753
|
+
}, {
|
4754
|
+
keys: [['ArrowUp', 'Shift']],
|
4755
|
+
callback: function callback() {
|
4756
|
+
selection.transformEnd(-1, 0);
|
4757
|
+
}
|
4758
|
+
}, {
|
4759
|
+
keys: [['ArrowUp', 'Shift', 'Control/Meta']],
|
4760
|
+
captureCtrl: true,
|
4761
|
+
callback: function callback() {
|
4762
|
+
var _instance$getSelected = instance.getSelectedRangeLast(),
|
4763
|
+
from = _instance$getSelected.from,
|
4764
|
+
to = _instance$getSelected.to;
|
4765
|
+
|
4766
|
+
var row = instance.rowIndexMapper.getFirstNotHiddenIndex(0, 1);
|
4767
|
+
selection.setRangeStart(from.clone());
|
4768
|
+
selection.setRangeEnd(instance._createCellCoords(row, to.col));
|
4769
|
+
},
|
4770
|
+
runOnlyIf: function runOnlyIf() {
|
4771
|
+
return !(instance.selection.isSelectedByCorner() || instance.selection.isSelectedByColumnHeader());
|
4772
|
+
}
|
4773
|
+
}, {
|
4774
|
+
keys: [['ArrowDown']],
|
4775
|
+
callback: function callback() {
|
4776
|
+
selection.transformStart(1, 0);
|
4777
|
+
}
|
4778
|
+
}, {
|
4779
|
+
keys: [['ArrowDown', 'Control/Meta']],
|
4780
|
+
captureCtrl: true,
|
4781
|
+
callback: function callback() {
|
4782
|
+
selection.setRangeStart(instance._createCellCoords(instance.rowIndexMapper.getFirstNotHiddenIndex(instance.countRows() - 1, -1), instance.getSelectedRangeLast().highlight.col));
|
4783
|
+
}
|
4784
|
+
}, {
|
4785
|
+
keys: [['ArrowDown', 'Shift']],
|
4786
|
+
callback: function callback() {
|
4787
|
+
selection.transformEnd(1, 0);
|
4788
|
+
}
|
4789
|
+
}, {
|
4790
|
+
keys: [['ArrowDown', 'Shift', 'Control/Meta']],
|
4791
|
+
captureCtrl: true,
|
4792
|
+
callback: function callback() {
|
4793
|
+
var _instance$getSelected2 = instance.getSelectedRangeLast(),
|
4794
|
+
from = _instance$getSelected2.from,
|
4795
|
+
to = _instance$getSelected2.to;
|
4796
|
+
|
4797
|
+
var row = instance.rowIndexMapper.getFirstNotHiddenIndex(instance.countRows() - 1, -1);
|
4798
|
+
selection.setRangeStart(from.clone());
|
4799
|
+
selection.setRangeEnd(instance._createCellCoords(row, to.col));
|
4800
|
+
},
|
4801
|
+
runOnlyIf: function runOnlyIf() {
|
4802
|
+
return !(instance.selection.isSelectedByCorner() || instance.selection.isSelectedByColumnHeader());
|
4803
|
+
}
|
4804
|
+
}, {
|
4805
|
+
keys: [['ArrowLeft']],
|
4806
|
+
callback: function callback() {
|
4807
|
+
selection.transformStart(0, -1 * instance.getDirectionFactor());
|
4808
|
+
}
|
4809
|
+
}, {
|
4810
|
+
keys: [['ArrowLeft', 'Control/Meta']],
|
4811
|
+
captureCtrl: true,
|
4812
|
+
callback: function callback() {
|
4813
|
+
var _instance$columnIndex;
|
4814
|
+
|
4815
|
+
var row = instance.getSelectedRangeLast().highlight.row;
|
4816
|
+
|
4817
|
+
var column = (_instance$columnIndex = instance.columnIndexMapper).getFirstNotHiddenIndex.apply(_instance$columnIndex, _toConsumableArray(instance.isRtl() ? [instance.countCols() - 1, -1] : [0, 1]));
|
4818
|
+
|
4819
|
+
selection.setRangeStart(instance._createCellCoords(row, column));
|
4820
|
+
}
|
4821
|
+
}, {
|
4822
|
+
keys: [['ArrowLeft', 'Shift']],
|
4823
|
+
callback: function callback() {
|
4824
|
+
selection.transformEnd(0, -1 * instance.getDirectionFactor());
|
4825
|
+
}
|
4826
|
+
}, {
|
4827
|
+
keys: [['ArrowLeft', 'Shift', 'Control/Meta']],
|
4828
|
+
captureCtrl: true,
|
4829
|
+
callback: function callback() {
|
4830
|
+
var _instance$columnIndex2;
|
4831
|
+
|
4832
|
+
var _instance$getSelected3 = instance.getSelectedRangeLast(),
|
4833
|
+
from = _instance$getSelected3.from,
|
4834
|
+
to = _instance$getSelected3.to;
|
4835
|
+
|
4836
|
+
var column = (_instance$columnIndex2 = instance.columnIndexMapper).getFirstNotHiddenIndex.apply(_instance$columnIndex2, _toConsumableArray(instance.isRtl() ? [instance.countCols() - 1, -1] : [0, 1]));
|
4837
|
+
|
4838
|
+
selection.setRangeStart(from.clone());
|
4839
|
+
selection.setRangeEnd(instance._createCellCoords(to.row, column));
|
4840
|
+
},
|
4841
|
+
runOnlyIf: function runOnlyIf() {
|
4842
|
+
return !(instance.selection.isSelectedByCorner() || instance.selection.isSelectedByRowHeader());
|
4843
|
+
}
|
4844
|
+
}, {
|
4845
|
+
keys: [['ArrowRight']],
|
4846
|
+
callback: function callback() {
|
4847
|
+
selection.transformStart(0, instance.getDirectionFactor());
|
4848
|
+
}
|
4849
|
+
}, {
|
4850
|
+
keys: [['ArrowRight', 'Control/Meta']],
|
4851
|
+
captureCtrl: true,
|
4852
|
+
callback: function callback() {
|
4853
|
+
var _instance$columnIndex3;
|
4854
|
+
|
4855
|
+
var row = instance.getSelectedRangeLast().highlight.row;
|
4856
|
+
|
4857
|
+
var column = (_instance$columnIndex3 = instance.columnIndexMapper).getFirstNotHiddenIndex.apply(_instance$columnIndex3, _toConsumableArray(instance.isRtl() ? [0, 1] : [instance.countCols() - 1, -1]));
|
4858
|
+
|
4859
|
+
selection.setRangeStart(instance._createCellCoords(row, column));
|
4860
|
+
}
|
4861
|
+
}, {
|
4862
|
+
keys: [['ArrowRight', 'Shift']],
|
4863
|
+
callback: function callback() {
|
4864
|
+
selection.transformEnd(0, instance.getDirectionFactor());
|
4865
|
+
}
|
4866
|
+
}, {
|
4867
|
+
keys: [['ArrowRight', 'Shift', 'Control/Meta']],
|
4868
|
+
captureCtrl: true,
|
4869
|
+
callback: function callback() {
|
4870
|
+
var _instance$columnIndex4;
|
4871
|
+
|
4872
|
+
var _instance$getSelected4 = instance.getSelectedRangeLast(),
|
4873
|
+
from = _instance$getSelected4.from,
|
4874
|
+
to = _instance$getSelected4.to;
|
4875
|
+
|
4876
|
+
var column = (_instance$columnIndex4 = instance.columnIndexMapper).getFirstNotHiddenIndex.apply(_instance$columnIndex4, _toConsumableArray(instance.isRtl() ? [0, 1] : [instance.countCols() - 1, -1]));
|
4877
|
+
|
4878
|
+
selection.setRangeStart(from.clone());
|
4879
|
+
selection.setRangeEnd(instance._createCellCoords(to.row, column));
|
4880
|
+
},
|
4881
|
+
runOnlyIf: function runOnlyIf() {
|
4882
|
+
return !(instance.selection.isSelectedByCorner() || instance.selection.isSelectedByRowHeader());
|
4883
|
+
}
|
4884
|
+
}, {
|
4885
|
+
keys: [['Home']],
|
4886
|
+
captureCtrl: true,
|
4887
|
+
callback: function callback() {
|
4888
|
+
var fixedColumns = parseInt(instance.getSettings().fixedColumnsStart, 10);
|
4889
|
+
var row = instance.getSelectedRangeLast().highlight.row;
|
4890
|
+
var column = instance.columnIndexMapper.getFirstNotHiddenIndex(fixedColumns, 1);
|
4891
|
+
selection.setRangeStart(instance._createCellCoords(row, column));
|
4892
|
+
},
|
4893
|
+
runOnlyIf: function runOnlyIf() {
|
4894
|
+
return instance.view.isMainTableNotFullyCoveredByOverlays();
|
4895
|
+
}
|
4896
|
+
}, {
|
4897
|
+
keys: [['Home', 'Shift']],
|
4898
|
+
callback: function callback() {
|
4899
|
+
selection.setRangeEnd(instance._createCellCoords(selection.selectedRange.current().from.row, instance.columnIndexMapper.getFirstNotHiddenIndex(0, 1)));
|
4900
|
+
}
|
4901
|
+
}, {
|
4902
|
+
keys: [['Home', 'Control/Meta']],
|
4903
|
+
captureCtrl: true,
|
4904
|
+
callback: function callback() {
|
4905
|
+
var fixedRows = parseInt(instance.getSettings().fixedRowsTop, 10);
|
4906
|
+
var fixedColumns = parseInt(instance.getSettings().fixedColumnsStart, 10);
|
4907
|
+
var row = instance.rowIndexMapper.getFirstNotHiddenIndex(fixedRows, 1);
|
4908
|
+
var column = instance.columnIndexMapper.getFirstNotHiddenIndex(fixedColumns, 1);
|
4909
|
+
selection.setRangeStart(instance._createCellCoords(row, column));
|
4910
|
+
},
|
4911
|
+
runOnlyIf: function runOnlyIf() {
|
4912
|
+
return instance.view.isMainTableNotFullyCoveredByOverlays();
|
4913
|
+
}
|
4914
|
+
}, {
|
4915
|
+
keys: [['End']],
|
4916
|
+
captureCtrl: true,
|
4917
|
+
callback: function callback() {
|
4918
|
+
selection.setRangeStart(instance._createCellCoords(instance.getSelectedRangeLast().highlight.row, instance.columnIndexMapper.getFirstNotHiddenIndex(instance.countCols() - 1, -1)));
|
4919
|
+
},
|
4920
|
+
runOnlyIf: function runOnlyIf() {
|
4921
|
+
return instance.view.isMainTableNotFullyCoveredByOverlays();
|
4922
|
+
}
|
4923
|
+
}, {
|
4924
|
+
keys: [['End', 'Shift']],
|
4925
|
+
callback: function callback() {
|
4926
|
+
selection.setRangeEnd(instance._createCellCoords(selection.selectedRange.current().from.row, instance.columnIndexMapper.getFirstNotHiddenIndex(instance.countCols() - 1, -1)));
|
4927
|
+
}
|
4928
|
+
}, {
|
4929
|
+
keys: [['End', 'Control/Meta']],
|
4930
|
+
captureCtrl: true,
|
4931
|
+
callback: function callback() {
|
4932
|
+
var fixedRows = parseInt(instance.getSettings().fixedRowsBottom, 10);
|
4933
|
+
var row = instance.rowIndexMapper.getFirstNotHiddenIndex(instance.countRows() - fixedRows - 1, -1);
|
4934
|
+
var column = instance.columnIndexMapper.getFirstNotHiddenIndex(instance.countCols() - 1, -1);
|
4935
|
+
selection.setRangeStart(instance._createCellCoords(row, column));
|
4936
|
+
},
|
4937
|
+
runOnlyIf: function runOnlyIf() {
|
4938
|
+
return instance.view.isMainTableNotFullyCoveredByOverlays();
|
4939
|
+
}
|
4940
|
+
}, {
|
4941
|
+
keys: [['PageUp']],
|
4942
|
+
callback: function callback() {
|
4943
|
+
selection.transformStart(-instance.countVisibleRows(), 0);
|
4944
|
+
}
|
4945
|
+
}, {
|
4946
|
+
keys: [['PageUp', 'Shift']],
|
4947
|
+
callback: function callback() {
|
4948
|
+
var _instance$getSelected5 = instance.getSelectedRangeLast(),
|
4949
|
+
to = _instance$getSelected5.to;
|
4950
|
+
|
4951
|
+
var nextRowIndexToSelect = Math.max(to.row - instance.countVisibleRows(), 0);
|
4952
|
+
var row = instance.rowIndexMapper.getFirstNotHiddenIndex(nextRowIndexToSelect, 1);
|
4953
|
+
|
4954
|
+
if (row !== null) {
|
4955
|
+
var coords = instance._createCellCoords(row, to.col);
|
4956
|
+
|
4957
|
+
var scrollPadding = to.row - instance.view.getFirstFullyVisibleRow();
|
4958
|
+
var nextVerticalScroll = Math.max(coords.row - scrollPadding, 0);
|
4959
|
+
selection.setRangeEnd(coords);
|
4960
|
+
instance.scrollViewportTo(nextVerticalScroll);
|
4961
|
+
}
|
4962
|
+
}
|
4963
|
+
}, {
|
4964
|
+
keys: [['PageDown']],
|
4965
|
+
callback: function callback() {
|
4966
|
+
selection.transformStart(instance.countVisibleRows(), 0);
|
4967
|
+
}
|
4968
|
+
}, {
|
4969
|
+
keys: [['PageDown', 'Shift']],
|
4970
|
+
callback: function callback() {
|
4971
|
+
var _instance$getSelected6 = instance.getSelectedRangeLast(),
|
4972
|
+
to = _instance$getSelected6.to;
|
4973
|
+
|
4974
|
+
var nextRowIndexToSelect = Math.min(to.row + instance.countVisibleRows(), instance.countRows() - 1);
|
4975
|
+
var row = instance.rowIndexMapper.getFirstNotHiddenIndex(nextRowIndexToSelect, -1);
|
4976
|
+
|
4977
|
+
if (row !== null) {
|
4978
|
+
var coords = instance._createCellCoords(row, to.col);
|
4979
|
+
|
4980
|
+
var scrollPadding = to.row - instance.view.getFirstFullyVisibleRow();
|
4981
|
+
var nextVerticalScroll = Math.min(coords.row - scrollPadding, instance.countRows() - 1);
|
4982
|
+
selection.setRangeEnd(coords);
|
4983
|
+
instance.scrollViewportTo(nextVerticalScroll);
|
4984
|
+
}
|
4985
|
+
}
|
4986
|
+
}, {
|
4987
|
+
keys: [['Tab']],
|
4988
|
+
callback: function callback(event) {
|
4989
|
+
var tabMoves = typeof tableMeta.tabMoves === 'function' ? tableMeta.tabMoves(event) : tableMeta.tabMoves;
|
4990
|
+
selection.transformStart(tabMoves.row, tabMoves.col, true);
|
4991
|
+
}
|
4992
|
+
}, {
|
4993
|
+
keys: [['Shift', 'Tab']],
|
4994
|
+
callback: function callback(event) {
|
4995
|
+
var tabMoves = typeof tableMeta.tabMoves === 'function' ? tableMeta.tabMoves(event) : tableMeta.tabMoves;
|
4996
|
+
selection.transformStart(-tabMoves.row, -tabMoves.col);
|
4997
|
+
}
|
4998
|
+
}], gridConfig);
|
4569
4999
|
getPluginsNames().forEach(function (pluginName) {
|
4570
5000
|
var PluginClass = getPlugin(pluginName);
|
4571
5001
|
pluginsRegistry.addItem(pluginName, new PluginClass(_this));
|