handsontable 14.2.0 → 14.3.0-next-3fa6b18-20240410
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/calculator/renderAllColumns.js +1 -1
- package/3rdparty/walkontable/src/calculator/renderAllColumns.mjs +1 -1
- package/3rdparty/walkontable/src/calculator/renderAllRows.js +1 -1
- package/3rdparty/walkontable/src/calculator/renderAllRows.mjs +1 -1
- package/3rdparty/walkontable/src/calculator/viewportColumns.js +13 -18
- package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +13 -18
- package/3rdparty/walkontable/src/calculator/viewportRows.js +11 -16
- package/3rdparty/walkontable/src/calculator/viewportRows.mjs +11 -16
- package/3rdparty/walkontable/src/cell/coords.js +13 -18
- package/3rdparty/walkontable/src/cell/coords.mjs +13 -18
- package/3rdparty/walkontable/src/cell/range.d.ts +2 -1
- package/3rdparty/walkontable/src/cell/range.js +42 -30
- package/3rdparty/walkontable/src/cell/range.mjs +42 -30
- package/3rdparty/walkontable/src/core/_base.js +2 -2
- package/3rdparty/walkontable/src/core/_base.mjs +2 -2
- package/3rdparty/walkontable/src/core/clone.js +1 -1
- package/3rdparty/walkontable/src/core/clone.mjs +1 -1
- package/3rdparty/walkontable/src/event.js +72 -104
- package/3rdparty/walkontable/src/event.mjs +72 -104
- 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 +1 -1
- package/3rdparty/walkontable/src/overlay/_base.js +1 -1
- package/3rdparty/walkontable/src/overlay/_base.mjs +1 -1
- package/3rdparty/walkontable/src/overlay/bottom.js +1 -1
- package/3rdparty/walkontable/src/overlay/bottom.mjs +1 -1
- package/3rdparty/walkontable/src/overlay/inlineStart.js +15 -1
- package/3rdparty/walkontable/src/overlay/inlineStart.mjs +16 -2
- package/3rdparty/walkontable/src/overlay/top.js +12 -1
- package/3rdparty/walkontable/src/overlay/top.mjs +13 -2
- package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +1 -1
- package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +1 -1
- package/3rdparty/walkontable/src/overlays.js +47 -5
- package/3rdparty/walkontable/src/overlays.mjs +47 -5
- 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 +1 -1
- package/3rdparty/walkontable/src/renderer/cells.mjs +1 -1
- package/3rdparty/walkontable/src/renderer/rowHeaders.js +1 -1
- package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +1 -1
- package/3rdparty/walkontable/src/renderer/rows.js +1 -1
- package/3rdparty/walkontable/src/renderer/rows.mjs +1 -1
- package/3rdparty/walkontable/src/renderer/table.js +1 -1
- package/3rdparty/walkontable/src/renderer/table.mjs +1 -1
- package/3rdparty/walkontable/src/scroll.js +16 -18
- package/3rdparty/walkontable/src/scroll.mjs +16 -18
- package/3rdparty/walkontable/src/selection/manager.js +48 -69
- package/3rdparty/walkontable/src/selection/manager.mjs +48 -69
- package/3rdparty/walkontable/src/selection/scanner.js +33 -42
- package/3rdparty/walkontable/src/selection/scanner.mjs +33 -42
- package/3rdparty/walkontable/src/settings.js +1 -1
- package/3rdparty/walkontable/src/settings.mjs +1 -1
- package/3rdparty/walkontable/src/table.js +1 -1
- package/3rdparty/walkontable/src/table.mjs +1 -1
- package/3rdparty/walkontable/src/utils/column.js +1 -1
- package/3rdparty/walkontable/src/utils/column.mjs +1 -1
- package/3rdparty/walkontable/src/utils/columnStretching.js +28 -45
- package/3rdparty/walkontable/src/utils/columnStretching.mjs +28 -45
- package/3rdparty/walkontable/src/utils/nodesPool.js +1 -1
- package/3rdparty/walkontable/src/utils/nodesPool.mjs +1 -1
- package/3rdparty/walkontable/src/utils/orderView/view.js +2 -2
- package/3rdparty/walkontable/src/utils/orderView/view.mjs +2 -2
- 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 +1 -1
- package/3rdparty/walkontable/src/utils/row.mjs +1 -1
- package/CHANGELOG.md +20 -0
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/core/viewportScroll/index.js +4 -1
- package/core/viewportScroll/index.mjs +4 -1
- package/core/viewportScroll/scrollStrategies/focusScroll.js +15 -0
- package/core/viewportScroll/scrollStrategies/focusScroll.mjs +11 -0
- package/core.d.ts +4 -3
- package/core.js +98 -43
- package/core.mjs +98 -43
- package/dataMap/dataMap.js +1 -1
- package/dataMap/dataMap.mjs +1 -1
- package/dataMap/dataSource.js +2 -2
- package/dataMap/dataSource.mjs +2 -2
- package/dataMap/metaManager/lazyFactoryMap.js +3 -5
- package/dataMap/metaManager/lazyFactoryMap.mjs +2 -4
- package/dataMap/metaManager/metaLayers/cellMeta.js +2 -2
- package/dataMap/metaManager/metaLayers/cellMeta.mjs +2 -2
- package/dataMap/metaManager/metaLayers/columnMeta.js +1 -1
- package/dataMap/metaManager/metaLayers/columnMeta.mjs +1 -1
- package/dataMap/metaManager/metaLayers/globalMeta.js +1 -1
- package/dataMap/metaManager/metaLayers/globalMeta.mjs +1 -1
- package/dataMap/metaManager/metaLayers/tableMeta.js +1 -1
- package/dataMap/metaManager/metaLayers/tableMeta.mjs +1 -1
- package/dataMap/metaManager/metaSchema.js +272 -272
- package/dataMap/metaManager/metaSchema.mjs +272 -272
- package/dataMap/metaManager/mods/dynamicCellMeta.js +1 -1
- package/dataMap/metaManager/mods/dynamicCellMeta.mjs +1 -1
- package/dataMap/metaManager/mods/extendMetaProperties.js +1 -1
- package/dataMap/metaManager/mods/extendMetaProperties.mjs +1 -1
- package/dataMap/replaceData.js +1 -1
- package/dataMap/replaceData.mjs +1 -1
- package/dist/handsontable.css +4 -4
- package/dist/handsontable.full.css +4 -4
- package/dist/handsontable.full.js +9814 -10020
- package/dist/handsontable.full.min.css +3 -3
- package/dist/handsontable.full.min.js +292 -292
- package/dist/handsontable.js +7484 -7056
- package/dist/handsontable.min.css +3 -3
- package/dist/handsontable.min.js +25 -25
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/ar-AR.min.js +1 -1
- package/dist/languages/cs-CZ.min.js +1 -1
- package/dist/languages/de-CH.min.js +1 -1
- package/dist/languages/de-DE.min.js +1 -1
- package/dist/languages/en-US.min.js +1 -1
- package/dist/languages/es-MX.min.js +1 -1
- package/dist/languages/fr-FR.min.js +1 -1
- package/dist/languages/hr-HR.min.js +1 -1
- package/dist/languages/it-IT.min.js +1 -1
- package/dist/languages/ja-JP.min.js +1 -1
- package/dist/languages/ko-KR.min.js +1 -1
- package/dist/languages/lv-LV.min.js +1 -1
- package/dist/languages/nb-NO.min.js +1 -1
- package/dist/languages/nl-NL.min.js +1 -1
- package/dist/languages/pl-PL.min.js +1 -1
- package/dist/languages/pt-BR.min.js +1 -1
- package/dist/languages/ru-RU.min.js +1 -1
- package/dist/languages/sr-SP.min.js +1 -1
- package/dist/languages/zh-CN.min.js +1 -1
- package/dist/languages/zh-TW.min.js +1 -1
- package/editorManager.js +26 -24
- package/editorManager.mjs +26 -24
- package/editors/autocompleteEditor/autocompleteEditor.js +7 -11
- package/editors/autocompleteEditor/autocompleteEditor.mjs +7 -11
- package/editors/baseEditor/baseEditor.js +1 -1
- package/editors/baseEditor/baseEditor.mjs +1 -1
- package/editors/dateEditor/dateEditor.js +49 -11
- package/editors/dateEditor/dateEditor.mjs +49 -11
- package/editors/selectEditor/selectEditor.js +20 -19
- package/editors/selectEditor/selectEditor.mjs +20 -19
- package/editors/textEditor/textEditor.js +1 -1
- package/editors/textEditor/textEditor.mjs +1 -1
- package/eventManager.js +2 -2
- package/eventManager.mjs +2 -2
- package/focusManager.js +64 -82
- package/focusManager.mjs +64 -82
- package/helpers/dom/element.js +23 -1
- package/helpers/dom/element.mjs +21 -1
- package/helpers/mixed.js +2 -2
- package/helpers/mixed.mjs +2 -2
- package/helpers/object.js +2 -2
- package/helpers/object.mjs +2 -2
- package/i18n/languages/ar-AR.d.ts +5 -0
- package/i18n/languages/ar-AR.js +1 -1
- package/i18n/languages/cs-CZ.d.ts +5 -0
- package/i18n/languages/cs-CZ.js +1 -1
- 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/hr-HR.d.ts +5 -0
- package/i18n/languages/hr-HR.js +1 -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/sr-SP.d.ts +5 -0
- package/i18n/languages/sr-SP.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 +10 -0
- package/index.js +1 -1
- package/package.json +14 -10
- package/pluginHooks.d.ts +4 -3
- package/pluginHooks.js +143 -82
- package/pluginHooks.mjs +143 -82
- package/plugins/autoColumnSize/autoColumnSize.js +50 -66
- package/plugins/autoColumnSize/autoColumnSize.mjs +50 -66
- package/plugins/autoRowSize/autoRowSize.js +29 -35
- package/plugins/autoRowSize/autoRowSize.mjs +29 -35
- package/plugins/autofill/autofill.js +31 -39
- package/plugins/autofill/autofill.mjs +31 -39
- package/plugins/base/base.js +13 -18
- package/plugins/base/base.mjs +13 -18
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +6 -6
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +6 -6
- package/plugins/collapsibleColumns/collapsibleColumns.js +60 -51
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +60 -51
- package/plugins/columnSorting/columnSorting.js +50 -46
- package/plugins/columnSorting/columnSorting.mjs +50 -46
- package/plugins/columnSorting/columnStatesManager.js +1 -1
- package/plugins/columnSorting/columnStatesManager.mjs +1 -1
- package/plugins/columnSummary/columnSummary.js +36 -40
- package/plugins/columnSummary/columnSummary.mjs +36 -40
- package/plugins/columnSummary/endpoints.js +1 -1
- package/plugins/columnSummary/endpoints.mjs +1 -1
- package/plugins/comments/commentEditor.js +1 -1
- package/plugins/comments/commentEditor.mjs +1 -1
- package/plugins/comments/comments.js +117 -159
- package/plugins/comments/comments.mjs +117 -159
- package/plugins/comments/contextMenuItem/addEditComment.js +1 -1
- package/plugins/comments/contextMenuItem/readOnlyComment.js +1 -1
- package/plugins/comments/contextMenuItem/removeComment.js +1 -1
- 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 +24 -30
- package/plugins/contextMenu/contextMenu.mjs +24 -30
- package/plugins/contextMenu/itemsFactory.js +2 -2
- package/plugins/contextMenu/itemsFactory.mjs +2 -2
- package/plugins/contextMenu/menu/cursor.js +1 -1
- package/plugins/contextMenu/menu/cursor.mjs +1 -1
- package/plugins/contextMenu/menu/defaultShortcutsList.js +26 -10
- package/plugins/contextMenu/menu/defaultShortcutsList.mjs +26 -10
- package/plugins/contextMenu/menu/menu.js +14 -22
- package/plugins/contextMenu/menu/menu.mjs +14 -22
- package/plugins/contextMenu/menu/positioner.js +41 -58
- package/plugins/contextMenu/menu/positioner.mjs +41 -58
- package/plugins/contextMenu/predefinedItems/alignment.js +1 -1
- package/plugins/contextMenu/predefinedItems/clearColumn.js +1 -1
- package/plugins/contextMenu/predefinedItems/columnLeft.js +1 -1
- package/plugins/contextMenu/predefinedItems/columnRight.js +1 -1
- package/plugins/contextMenu/predefinedItems/index.js +1 -1
- 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/copyPaste/contextMenuItem/cut.js +1 -1
- package/plugins/copyPaste/copyPaste.js +120 -161
- package/plugins/copyPaste/copyPaste.mjs +120 -161
- package/plugins/copyPaste/copyableRanges.js +43 -66
- package/plugins/copyPaste/copyableRanges.mjs +43 -66
- package/plugins/customBorders/contextMenuItem/bottom.js +1 -1
- package/plugins/customBorders/contextMenuItem/left.js +1 -1
- package/plugins/customBorders/contextMenuItem/noBorders.js +1 -1
- package/plugins/customBorders/contextMenuItem/right.js +1 -1
- package/plugins/customBorders/contextMenuItem/top.js +1 -1
- package/plugins/customBorders/customBorders.js +14 -16
- package/plugins/customBorders/customBorders.mjs +13 -15
- package/plugins/dragToScroll/dragToScroll.js +7 -7
- package/plugins/dragToScroll/dragToScroll.mjs +7 -7
- package/plugins/dropdownMenu/dropdownMenu.js +84 -110
- package/plugins/dropdownMenu/dropdownMenu.mjs +84 -110
- package/plugins/exportFile/dataProvider.js +2 -2
- package/plugins/exportFile/dataProvider.mjs +2 -2
- package/plugins/exportFile/exportFile.js +2 -2
- package/plugins/exportFile/exportFile.mjs +1 -1
- package/plugins/exportFile/types/_base.js +1 -1
- package/plugins/exportFile/types/_base.mjs +1 -1
- package/plugins/filters/component/_base.js +1 -1
- package/plugins/filters/component/_base.mjs +1 -1
- package/plugins/filters/component/actionBar.js +11 -11
- package/plugins/filters/component/actionBar.mjs +9 -9
- package/plugins/filters/component/condition.js +15 -17
- package/plugins/filters/component/condition.mjs +14 -16
- package/plugins/filters/component/operators.js +7 -7
- package/plugins/filters/component/operators.mjs +7 -7
- package/plugins/filters/component/value.js +26 -30
- package/plugins/filters/component/value.mjs +25 -29
- 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 +23 -25
- package/plugins/filters/conditionUpdateObserver.mjs +23 -25
- package/plugins/filters/dataFilter.js +2 -2
- package/plugins/filters/dataFilter.mjs +2 -2
- package/plugins/filters/filters.js +84 -98
- package/plugins/filters/filters.mjs +83 -97
- 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 +13 -19
- package/plugins/filters/ui/input.mjs +13 -19
- package/plugins/filters/ui/link.js +8 -13
- package/plugins/filters/ui/link.mjs +8 -13
- package/plugins/filters/ui/multipleSelect.js +86 -113
- package/plugins/filters/ui/multipleSelect.mjs +85 -112
- package/plugins/filters/ui/radioInput.js +12 -20
- package/plugins/filters/ui/radioInput.mjs +12 -20
- package/plugins/filters/ui/select.js +51 -73
- package/plugins/filters/ui/select.mjs +49 -71
- package/plugins/formulas/formulas.js +270 -328
- package/plugins/formulas/formulas.mjs +271 -329
- package/plugins/formulas/indexSyncer/axisSyncer.js +38 -61
- package/plugins/formulas/indexSyncer/axisSyncer.mjs +38 -61
- package/plugins/formulas/indexSyncer/index.js +25 -48
- package/plugins/formulas/indexSyncer/index.mjs +25 -48
- package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +1 -1
- package/plugins/hiddenColumns/contextMenuItem/showColumn.js +1 -1
- package/plugins/hiddenColumns/hiddenColumns.js +68 -87
- package/plugins/hiddenColumns/hiddenColumns.mjs +68 -87
- package/plugins/hiddenRows/contextMenuItem/hideRow.js +1 -1
- package/plugins/hiddenRows/contextMenuItem/showRow.js +1 -1
- package/plugins/hiddenRows/hiddenRows.js +67 -86
- package/plugins/hiddenRows/hiddenRows.mjs +67 -86
- package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -1
- package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -1
- package/plugins/manualColumnFreeze/manualColumnFreeze.js +24 -32
- package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +25 -33
- package/plugins/manualColumnMove/manualColumnMove.js +133 -177
- package/plugins/manualColumnMove/manualColumnMove.mjs +133 -177
- package/plugins/manualColumnMove/ui/_base.js +1 -1
- package/plugins/manualColumnMove/ui/_base.mjs +1 -1
- package/plugins/manualColumnResize/manualColumnResize.js +169 -230
- package/plugins/manualColumnResize/manualColumnResize.mjs +169 -230
- package/plugins/manualRowMove/manualRowMove.js +106 -135
- package/plugins/manualRowMove/manualRowMove.mjs +106 -135
- package/plugins/manualRowMove/ui/_base.js +1 -1
- package/plugins/manualRowMove/ui/_base.mjs +1 -1
- package/plugins/manualRowResize/manualRowResize.js +150 -209
- package/plugins/manualRowResize/manualRowResize.mjs +150 -209
- package/plugins/mergeCells/calculations/autofill.js +1 -1
- package/plugins/mergeCells/calculations/autofill.mjs +1 -1
- package/plugins/mergeCells/calculations/selection.js +3 -72
- package/plugins/mergeCells/calculations/selection.mjs +3 -72
- package/plugins/mergeCells/cellCoords.js +1 -1
- package/plugins/mergeCells/cellCoords.mjs +1 -1
- package/plugins/mergeCells/cellsCollection.js +118 -2
- package/plugins/mergeCells/cellsCollection.mjs +118 -2
- package/plugins/mergeCells/contextMenuItem/toggleMerge.js +12 -2
- package/plugins/mergeCells/contextMenuItem/toggleMerge.mjs +11 -1
- package/plugins/mergeCells/focusOrder.js +305 -0
- package/plugins/mergeCells/focusOrder.mjs +300 -0
- package/plugins/mergeCells/mergeCells.js +500 -398
- package/plugins/mergeCells/mergeCells.mjs +500 -398
- package/plugins/multiColumnSorting/multiColumnSorting.js +9 -3
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +9 -3
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +2 -2
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +2 -2
- package/plugins/nestedHeaders/nestedHeaders.js +206 -254
- package/plugins/nestedHeaders/nestedHeaders.mjs +207 -255
- package/plugins/nestedHeaders/stateManager/headersTree.js +21 -32
- package/plugins/nestedHeaders/stateManager/headersTree.mjs +21 -32
- package/plugins/nestedHeaders/stateManager/index.js +30 -41
- package/plugins/nestedHeaders/stateManager/index.mjs +30 -41
- package/plugins/nestedHeaders/stateManager/sourceSettings.js +19 -30
- package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +19 -30
- 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 +154 -185
- package/plugins/nestedRows/nestedRows.mjs +155 -186
- package/plugins/nestedRows/ui/_base.js +1 -1
- package/plugins/nestedRows/ui/_base.mjs +1 -1
- package/plugins/nestedRows/ui/contextMenu.js +13 -17
- package/plugins/nestedRows/ui/contextMenu.mjs +11 -15
- package/plugins/nestedRows/utils/rowMoveController.js +6 -6
- package/plugins/nestedRows/utils/rowMoveController.mjs +6 -6
- package/plugins/persistentState/persistentState.js +1 -1
- package/plugins/persistentState/persistentState.mjs +1 -1
- package/plugins/persistentState/storage.js +3 -3
- package/plugins/persistentState/storage.mjs +3 -3
- package/plugins/search/search.js +8 -8
- package/plugins/search/search.mjs +8 -8
- package/plugins/touchScroll/touchScroll.js +16 -20
- package/plugins/touchScroll/touchScroll.mjs +17 -21
- package/plugins/trimRows/trimRows.js +7 -7
- package/plugins/trimRows/trimRows.mjs +7 -7
- package/plugins/undoRedo/index.js +1 -1
- package/renderers/checkboxRenderer/checkboxRenderer.js +8 -5
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +8 -5
- package/selection/highlight/highlight.js +16 -18
- package/selection/highlight/highlight.mjs +15 -17
- package/selection/highlight/visualSelection.js +3 -1
- package/selection/highlight/visualSelection.mjs +3 -1
- package/selection/range.js +3 -5
- package/selection/range.mjs +2 -4
- package/selection/selection.js +227 -69
- package/selection/selection.mjs +225 -67
- package/selection/transformation.js +149 -118
- package/selection/transformation.mjs +149 -118
- package/shortcutContexts/commands/editor/closeAndSave.js +2 -2
- package/shortcutContexts/commands/editor/closeAndSave.mjs +2 -2
- package/shortcutContexts/commands/editor/open.js +18 -3
- package/shortcutContexts/commands/editor/open.mjs +18 -3
- package/shortcutContexts/commands/extendCellsSelection/down.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/left.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/left.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/right.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +9 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +9 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +10 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +10 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/up.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +1 -1
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +6 -1
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +6 -1
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +6 -1
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +6 -1
- package/shortcutContexts/grid.js +9 -3
- package/shortcutContexts/grid.mjs +9 -3
- package/shortcuts/context.js +3 -2
- package/shortcuts/context.mjs +3 -2
- package/shortcuts/manager.js +2 -2
- package/shortcuts/manager.mjs +2 -2
- package/tableView.js +53 -79
- package/tableView.mjs +53 -79
- package/translations/changesObservable/observable.js +21 -38
- package/translations/changesObservable/observable.mjs +21 -38
- package/translations/changesObservable/observer.js +7 -12
- package/translations/changesObservable/observer.mjs +6 -11
- package/translations/indexMapper.js +1 -1
- package/translations/indexMapper.mjs +1 -1
- package/translations/mapCollections/aggregatedCollection.js +2 -2
- package/translations/mapCollections/aggregatedCollection.mjs +2 -2
- package/translations/mapCollections/mapCollection.js +1 -1
- package/translations/mapCollections/mapCollection.mjs +1 -1
- package/translations/maps/indexMap.js +2 -2
- package/translations/maps/indexMap.mjs +2 -2
- package/translations/maps/linkedPhysicalIndexToValueMap.js +1 -1
- package/translations/maps/linkedPhysicalIndexToValueMap.mjs +1 -1
- package/utils/dataStructures/linkedList.js +7 -2
- package/utils/dataStructures/linkedList.mjs +7 -2
- package/utils/dataStructures/tree.js +2 -2
- package/utils/dataStructures/tree.mjs +2 -2
- package/utils/ghostTable.js +1 -1
- package/utils/ghostTable.mjs +1 -1
- package/utils/interval.js +27 -45
- package/utils/interval.mjs +27 -45
- package/utils/samplesGenerator.js +1 -1
- package/utils/samplesGenerator.mjs +1 -1
@@ -15,16 +15,13 @@ var _ghostTable = _interopRequireDefault(require("./utils/ghostTable"));
|
|
15
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
16
16
|
function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
|
17
17
|
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; }
|
18
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i :
|
18
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
19
19
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
20
20
|
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
21
21
|
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
22
|
-
function _classPrivateFieldSet(
|
23
|
-
function
|
24
|
-
function
|
25
|
-
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
26
|
-
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
27
|
-
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
22
|
+
function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
|
23
|
+
function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
|
24
|
+
function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
|
28
25
|
const PLUGIN_KEY = exports.PLUGIN_KEY = 'nestedHeaders';
|
29
26
|
const PLUGIN_PRIORITY = exports.PLUGIN_PRIORITY = 280;
|
30
27
|
|
@@ -77,203 +74,40 @@ var _stateManager = /*#__PURE__*/new WeakMap();
|
|
77
74
|
var _hidingIndexMapObserver = /*#__PURE__*/new WeakMap();
|
78
75
|
var _focusInitialCoords = /*#__PURE__*/new WeakMap();
|
79
76
|
var _isColumnsSelectionInProgress = /*#__PURE__*/new WeakMap();
|
80
|
-
var
|
81
|
-
var _onBeforeViewportScrollHorizontally = /*#__PURE__*/new WeakSet();
|
82
|
-
var _onBeforeHighlightingColumnHeader = /*#__PURE__*/new WeakSet();
|
83
|
-
var _onBeforeCopy = /*#__PURE__*/new WeakSet();
|
84
|
-
var _onBeforeOnCellMouseDown = /*#__PURE__*/new WeakSet();
|
85
|
-
var _onAfterOnCellMouseDown = /*#__PURE__*/new WeakSet();
|
86
|
-
var _onBeforeOnCellMouseOver = /*#__PURE__*/new WeakSet();
|
87
|
-
var _onBeforeOnCellMouseUp = /*#__PURE__*/new WeakSet();
|
88
|
-
var _onBeforeSelectionHighlightSet = /*#__PURE__*/new WeakSet();
|
89
|
-
var _onModifyTransformStart = /*#__PURE__*/new WeakSet();
|
90
|
-
var _onBeforeSelectColumns = /*#__PURE__*/new WeakSet();
|
91
|
-
var _onAfterGetColumnHeaderRenderers = /*#__PURE__*/new WeakSet();
|
92
|
-
var _onAfterViewportColumnCalculatorOverride = /*#__PURE__*/new WeakSet();
|
93
|
-
var _onModifyColWidth = /*#__PURE__*/new WeakSet();
|
94
|
-
var _onModifyColumnHeaderValue = /*#__PURE__*/new WeakSet();
|
95
|
-
var _onModifyFocusedElement = /*#__PURE__*/new WeakSet();
|
96
|
-
var _onInit = /*#__PURE__*/new WeakSet();
|
97
|
-
var _onAfterLoadData = /*#__PURE__*/new WeakSet();
|
77
|
+
var _NestedHeaders_brand = /*#__PURE__*/new WeakSet();
|
98
78
|
class NestedHeaders extends _base.BasePlugin {
|
99
79
|
constructor() {
|
100
80
|
super(...arguments);
|
101
|
-
/**
|
102
|
-
* Updates the plugin state after new dataset load.
|
103
|
-
*
|
104
|
-
* @param {Array[]} sourceData Array of arrays or array of objects containing data.
|
105
|
-
* @param {boolean} initialLoad Flag that determines whether the data has been loaded
|
106
|
-
* during the initialization.
|
107
|
-
*/
|
108
|
-
_classPrivateMethodInitSpec(this, _onAfterLoadData);
|
109
|
-
/**
|
110
|
-
* Updates the plugin state after HoT initialization.
|
111
|
-
*/
|
112
|
-
_classPrivateMethodInitSpec(this, _onInit);
|
113
|
-
/**
|
114
|
-
* `modifyFocusedElement` hook callback.
|
115
|
-
*
|
116
|
-
* @param {number} row Row index.
|
117
|
-
* @param {number} column Column index.
|
118
|
-
* @returns {HTMLTableCellElement} The `TH` element to be focused.
|
119
|
-
*/
|
120
|
-
_classPrivateMethodInitSpec(this, _onModifyFocusedElement);
|
121
|
-
/**
|
122
|
-
* Listens the `modifyColumnHeaderValue` hook that overwrites the column headers values based on
|
123
|
-
* the internal state and settings of the plugin.
|
124
|
-
*
|
125
|
-
* @param {string} value The column header value.
|
126
|
-
* @param {number} visualColumnIndex The visual column index.
|
127
|
-
* @param {number} headerLevel The index of header level. The header level accepts positive (0 to N)
|
128
|
-
* and negative (-1 to -N) values. For positive values, 0 points to the
|
129
|
-
* top most header, and for negative direction, -1 points to the most bottom
|
130
|
-
* header (the header closest to the cells).
|
131
|
-
* @returns {string} Returns the column header value to update.
|
132
|
-
*/
|
133
|
-
_classPrivateMethodInitSpec(this, _onModifyColumnHeaderValue);
|
134
|
-
/**
|
135
|
-
* `modifyColWidth` hook callback - returns width from cache, when is greater than incoming from hook.
|
136
|
-
*
|
137
|
-
* @param {number} width Width from hook.
|
138
|
-
* @param {number} column Visual index of an column.
|
139
|
-
* @returns {number}
|
140
|
-
*/
|
141
|
-
_classPrivateMethodInitSpec(this, _onModifyColWidth);
|
142
|
-
/**
|
143
|
-
* Make the renderer render the first nested column in its entirety.
|
144
|
-
*
|
145
|
-
* @param {object} calc Viewport column calculator.
|
146
|
-
*/
|
147
|
-
_classPrivateMethodInitSpec(this, _onAfterViewportColumnCalculatorOverride);
|
148
|
-
/**
|
149
|
-
* `afterGetColumnHeader` hook callback - prepares the header structure.
|
150
|
-
*
|
151
|
-
* @param {Array} renderersArray Array of renderers.
|
152
|
-
*/
|
153
|
-
_classPrivateMethodInitSpec(this, _onAfterGetColumnHeaderRenderers);
|
154
|
-
/**
|
155
|
-
* The hook observes the column selection from the Selection API and modifies the column range to
|
156
|
-
* ensure that the whole nested column will be covered.
|
157
|
-
*
|
158
|
-
* @param {CellCoords} from The coords object where the selection starts.
|
159
|
-
* @param {CellCoords} to The coords object where the selection ends.
|
160
|
-
*/
|
161
|
-
_classPrivateMethodInitSpec(this, _onBeforeSelectColumns);
|
162
|
-
/**
|
163
|
-
* `modifyTransformStart` hook is called every time the keyboard navigation is used.
|
164
|
-
*
|
165
|
-
* @param {object} delta The transformation delta.
|
166
|
-
*/
|
167
|
-
_classPrivateMethodInitSpec(this, _onModifyTransformStart);
|
168
|
-
/**
|
169
|
-
* The hook checks and ensures that the focus position that depends on the selected columns
|
170
|
-
* range is always positioned within the range.
|
171
|
-
*/
|
172
|
-
_classPrivateMethodInitSpec(this, _onBeforeSelectionHighlightSet);
|
173
|
-
/**
|
174
|
-
* Switches internal flag about selection progress to `false`.
|
175
|
-
*/
|
176
|
-
_classPrivateMethodInitSpec(this, _onBeforeOnCellMouseUp);
|
177
|
-
/**
|
178
|
-
* Makes the header-selection properly select the nested headers.
|
179
|
-
*
|
180
|
-
* @param {MouseEvent} event Mouse event.
|
181
|
-
* @param {CellCoords} coords Cell coords object containing the visual coordinates of the clicked cell.
|
182
|
-
* @param {HTMLElement} TD The cell element.
|
183
|
-
* @param {object} controller An object with properties `row`, `column` and `cell`. Each property contains
|
184
|
-
* a boolean value that allows or disallows changing the selection for that particular area.
|
185
|
-
*/
|
186
|
-
_classPrivateMethodInitSpec(this, _onBeforeOnCellMouseOver);
|
187
|
-
/**
|
188
|
-
* Allows to control how the column selection based on the coordinates and the nested headers is made.
|
189
|
-
*
|
190
|
-
* @param {MouseEvent} event Mouse event.
|
191
|
-
* @param {CellCoords} coords Cell coords object containing the visual coordinates of the clicked cell.
|
192
|
-
*/
|
193
|
-
_classPrivateMethodInitSpec(this, _onAfterOnCellMouseDown);
|
194
|
-
/**
|
195
|
-
* Allows blocking the column selection that is controlled by the core Selection module.
|
196
|
-
*
|
197
|
-
* @param {MouseEvent} event Mouse event.
|
198
|
-
* @param {CellCoords} coords Cell coords object containing the visual coordinates of the clicked cell.
|
199
|
-
* @param {CellCoords} TD The table cell or header element.
|
200
|
-
* @param {object} controller An object with properties `row`, `column` and `cell`. Each property contains
|
201
|
-
* a boolean value that allows or disallows changing the selection for that particular area.
|
202
|
-
*/
|
203
|
-
_classPrivateMethodInitSpec(this, _onBeforeOnCellMouseDown);
|
204
|
-
/**
|
205
|
-
* Listens the `beforeCopy` hook that allows processing the copied column headers so that the
|
206
|
-
* merged column headers do not propagate the value for each column but only once at the beginning
|
207
|
-
* of the column.
|
208
|
-
*
|
209
|
-
* @private
|
210
|
-
* @param {Array[]} data An array of arrays which contains data to copied.
|
211
|
-
* @param {object[]} copyableRanges An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`)
|
212
|
-
* which will copied.
|
213
|
-
* @param {{ columnHeadersCount: number }} copiedHeadersCount An object with keys that holds information with
|
214
|
-
* the number of copied headers.
|
215
|
-
*/
|
216
|
-
_classPrivateMethodInitSpec(this, _onBeforeCopy);
|
217
|
-
/**
|
218
|
-
* Allows to control which header DOM element will be used to highlight.
|
219
|
-
*
|
220
|
-
* @param {number} visualColumn A visual column index of the highlighted row header.
|
221
|
-
* @param {number} headerLevel A row header level that is currently highlighted.
|
222
|
-
* @param {object} highlightMeta An object with meta data that describes the highlight state.
|
223
|
-
* @returns {number}
|
224
|
-
*/
|
225
|
-
_classPrivateMethodInitSpec(this, _onBeforeHighlightingColumnHeader);
|
226
|
-
/**
|
227
|
-
* Allows to control to which column index the viewport will be scrolled. To ensure that the viewport
|
228
|
-
* is scrolled to the correct column for the nested header the most left and the most right visual column
|
229
|
-
* indexes are used.
|
230
|
-
*
|
231
|
-
* @param {number} visualColumn A visual column index to which the viewport will be scrolled.
|
232
|
-
* @returns {number}
|
233
|
-
*/
|
234
|
-
_classPrivateMethodInitSpec(this, _onBeforeViewportScrollHorizontally);
|
235
81
|
/**
|
236
82
|
* Updates the selection focus highlight position to point to the nested header root element (TH)
|
237
83
|
* even when the logical coordinates point in-between the header.
|
238
84
|
*/
|
239
|
-
_classPrivateMethodInitSpec(this,
|
85
|
+
_classPrivateMethodInitSpec(this, _NestedHeaders_brand);
|
240
86
|
/**
|
241
87
|
* The state manager for the nested headers.
|
242
88
|
*
|
243
89
|
* @type {StateManager}
|
244
90
|
*/
|
245
|
-
_classPrivateFieldInitSpec(this, _stateManager,
|
246
|
-
writable: true,
|
247
|
-
value: new _stateManager2.default()
|
248
|
-
});
|
91
|
+
_classPrivateFieldInitSpec(this, _stateManager, new _stateManager2.default());
|
249
92
|
/**
|
250
93
|
* The instance of the ChangesObservable class that allows track the changes that happens in the
|
251
94
|
* column indexes.
|
252
95
|
*
|
253
96
|
* @type {ChangesObservable}
|
254
97
|
*/
|
255
|
-
_classPrivateFieldInitSpec(this, _hidingIndexMapObserver,
|
256
|
-
writable: true,
|
257
|
-
value: null
|
258
|
-
});
|
98
|
+
_classPrivateFieldInitSpec(this, _hidingIndexMapObserver, null);
|
259
99
|
/**
|
260
100
|
* Holds the coords that points to the place where the column selection starts.
|
261
101
|
*
|
262
102
|
* @type {number|null}
|
263
103
|
*/
|
264
|
-
_classPrivateFieldInitSpec(this, _focusInitialCoords,
|
265
|
-
writable: true,
|
266
|
-
value: null
|
267
|
-
});
|
104
|
+
_classPrivateFieldInitSpec(this, _focusInitialCoords, null);
|
268
105
|
/**
|
269
106
|
* Determines if there is performed the column selection.
|
270
107
|
*
|
271
108
|
* @type {boolean}
|
272
109
|
*/
|
273
|
-
_classPrivateFieldInitSpec(this, _isColumnsSelectionInProgress,
|
274
|
-
writable: true,
|
275
|
-
value: false
|
276
|
-
});
|
110
|
+
_classPrivateFieldInitSpec(this, _isColumnsSelectionInProgress, false);
|
277
111
|
/**
|
278
112
|
* Custom helper for getting widths of the nested headers.
|
279
113
|
*
|
@@ -320,101 +154,102 @@ class NestedHeaders extends _base.BasePlugin {
|
|
320
154
|
(0, _console.warn)((0, _templateLiteralTag.toSingleLine)`Your Nested Headers plugin configuration is invalid. The settings has to be\x20
|
321
155
|
passed as an array of arrays e.q. [['A1', { label: 'A2', colspan: 2 }]]`);
|
322
156
|
}
|
323
|
-
this.addHook('init', () =>
|
157
|
+
this.addHook('init', () => _assertClassBrand(_NestedHeaders_brand, this, _onInit).call(this));
|
324
158
|
this.addHook('afterLoadData', function () {
|
325
159
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
326
160
|
args[_key] = arguments[_key];
|
327
161
|
}
|
328
|
-
return
|
162
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onAfterLoadData).call(_this, ...args);
|
329
163
|
});
|
330
164
|
this.addHook('beforeOnCellMouseDown', function () {
|
331
165
|
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
332
166
|
args[_key2] = arguments[_key2];
|
333
167
|
}
|
334
|
-
return
|
168
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onBeforeOnCellMouseDown).call(_this, ...args);
|
335
169
|
});
|
336
170
|
this.addHook('afterOnCellMouseDown', function () {
|
337
171
|
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
338
172
|
args[_key3] = arguments[_key3];
|
339
173
|
}
|
340
|
-
return
|
174
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onAfterOnCellMouseDown).call(_this, ...args);
|
341
175
|
});
|
342
176
|
this.addHook('beforeOnCellMouseOver', function () {
|
343
177
|
for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
344
178
|
args[_key4] = arguments[_key4];
|
345
179
|
}
|
346
|
-
return
|
180
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onBeforeOnCellMouseOver).call(_this, ...args);
|
347
181
|
});
|
348
182
|
this.addHook('beforeOnCellMouseUp', function () {
|
349
183
|
for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
|
350
184
|
args[_key5] = arguments[_key5];
|
351
185
|
}
|
352
|
-
return
|
186
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onBeforeOnCellMouseUp).call(_this, ...args);
|
353
187
|
});
|
354
188
|
this.addHook('beforeSelectionHighlightSet', function () {
|
355
189
|
for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
|
356
190
|
args[_key6] = arguments[_key6];
|
357
191
|
}
|
358
|
-
return
|
192
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onBeforeSelectionHighlightSet).call(_this, ...args);
|
359
193
|
});
|
360
194
|
this.addHook('modifyTransformStart', function () {
|
361
195
|
for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
|
362
196
|
args[_key7] = arguments[_key7];
|
363
197
|
}
|
364
|
-
return
|
198
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onModifyTransformStart).call(_this, ...args);
|
365
199
|
});
|
366
|
-
this.addHook('afterSelection', () =>
|
200
|
+
this.addHook('afterSelection', () => _assertClassBrand(_NestedHeaders_brand, this, _updateFocusHighlightPosition).call(this));
|
201
|
+
this.addHook('afterSelectionFocusSet', () => _assertClassBrand(_NestedHeaders_brand, this, _updateFocusHighlightPosition).call(this));
|
367
202
|
this.addHook('beforeViewportScrollHorizontally', function () {
|
368
203
|
for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
|
369
204
|
args[_key8] = arguments[_key8];
|
370
205
|
}
|
371
|
-
return
|
206
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onBeforeViewportScrollHorizontally).call(_this, ...args);
|
372
207
|
});
|
373
|
-
this.addHook('afterGetColumnHeaderRenderers', array =>
|
208
|
+
this.addHook('afterGetColumnHeaderRenderers', array => _assertClassBrand(_NestedHeaders_brand, this, _onAfterGetColumnHeaderRenderers).call(this, array));
|
374
209
|
this.addHook('modifyColWidth', function () {
|
375
210
|
for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
|
376
211
|
args[_key9] = arguments[_key9];
|
377
212
|
}
|
378
|
-
return
|
213
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onModifyColWidth).call(_this, ...args);
|
379
214
|
});
|
380
215
|
this.addHook('modifyColumnHeaderValue', function () {
|
381
216
|
for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {
|
382
217
|
args[_key10] = arguments[_key10];
|
383
218
|
}
|
384
|
-
return
|
219
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onModifyColumnHeaderValue).call(_this, ...args);
|
385
220
|
});
|
386
221
|
this.addHook('beforeHighlightingColumnHeader', function () {
|
387
222
|
for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {
|
388
223
|
args[_key11] = arguments[_key11];
|
389
224
|
}
|
390
|
-
return
|
225
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onBeforeHighlightingColumnHeader).call(_this, ...args);
|
391
226
|
});
|
392
227
|
this.addHook('beforeCopy', function () {
|
393
228
|
for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
|
394
229
|
args[_key12] = arguments[_key12];
|
395
230
|
}
|
396
|
-
return
|
231
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onBeforeCopy).call(_this, ...args);
|
397
232
|
});
|
398
233
|
this.addHook('beforeSelectColumns', function () {
|
399
234
|
for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {
|
400
235
|
args[_key13] = arguments[_key13];
|
401
236
|
}
|
402
|
-
return
|
237
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onBeforeSelectColumns).call(_this, ...args);
|
403
238
|
});
|
404
239
|
this.addHook('afterViewportColumnCalculatorOverride', function () {
|
405
240
|
for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {
|
406
241
|
args[_key14] = arguments[_key14];
|
407
242
|
}
|
408
|
-
return
|
243
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onAfterViewportColumnCalculatorOverride).call(_this, ...args);
|
409
244
|
});
|
410
245
|
this.addHook('modifyFocusedElement', function () {
|
411
246
|
for (var _len15 = arguments.length, args = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {
|
412
247
|
args[_key15] = arguments[_key15];
|
413
248
|
}
|
414
|
-
return
|
249
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onModifyFocusedElement).call(_this, ...args);
|
415
250
|
});
|
416
|
-
this.hot.columnIndexMapper.addLocalHook('cacheUpdated', () =>
|
417
|
-
this.hot.rowIndexMapper.addLocalHook('cacheUpdated', () =>
|
251
|
+
this.hot.columnIndexMapper.addLocalHook('cacheUpdated', () => _assertClassBrand(_NestedHeaders_brand, this, _updateFocusHighlightPosition).call(this));
|
252
|
+
this.hot.rowIndexMapper.addLocalHook('cacheUpdated', () => _assertClassBrand(_NestedHeaders_brand, this, _updateFocusHighlightPosition).call(this));
|
418
253
|
super.enablePlugin();
|
419
254
|
this.updatePlugin(); // @TODO: Workaround for broken plugin initialization abstraction.
|
420
255
|
}
|
@@ -433,9 +268,9 @@ class NestedHeaders extends _base.BasePlugin {
|
|
433
268
|
const {
|
434
269
|
nestedHeaders
|
435
270
|
} = this.hot.getSettings();
|
436
|
-
_classPrivateFieldGet(
|
271
|
+
_classPrivateFieldGet(_stateManager, this).setColumnsLimit(this.hot.countCols());
|
437
272
|
if (Array.isArray(nestedHeaders)) {
|
438
|
-
this.detectedOverlappedHeaders = _classPrivateFieldGet(
|
273
|
+
this.detectedOverlappedHeaders = _classPrivateFieldGet(_stateManager, this).setState(nestedHeaders);
|
439
274
|
}
|
440
275
|
if (this.detectedOverlappedHeaders) {
|
441
276
|
(0, _console.warn)((0, _templateLiteralTag.toSingleLine)`Your Nested Headers plugin setup contains overlapping headers. This kind of configuration\x20
|
@@ -447,11 +282,11 @@ class NestedHeaders extends _base.BasePlugin {
|
|
447
282
|
// as if all the columns are visible, needs to be modified to be in sync with a dataset.
|
448
283
|
this.hot.columnIndexMapper.hidingMapsCollection.getMergedValues().forEach((isColumnHidden, physicalColumnIndex) => {
|
449
284
|
const actionName = isColumnHidden === true ? 'hide-column' : 'show-column';
|
450
|
-
_classPrivateFieldGet(
|
285
|
+
_classPrivateFieldGet(_stateManager, this).triggerColumnModification(actionName, physicalColumnIndex);
|
451
286
|
});
|
452
287
|
}
|
453
|
-
if (!_classPrivateFieldGet(
|
454
|
-
_classPrivateFieldSet(
|
288
|
+
if (!_classPrivateFieldGet(_hidingIndexMapObserver, this) && this.enabled) {
|
289
|
+
_classPrivateFieldSet(_hidingIndexMapObserver, this, this.hot.columnIndexMapper.createChangesObserver('hiding').subscribe(changes => {
|
455
290
|
changes.forEach(_ref => {
|
456
291
|
let {
|
457
292
|
op,
|
@@ -460,7 +295,7 @@ class NestedHeaders extends _base.BasePlugin {
|
|
460
295
|
} = _ref;
|
461
296
|
if (op === 'replace') {
|
462
297
|
const actionName = newValue === true ? 'hide-column' : 'show-column';
|
463
|
-
_classPrivateFieldGet(
|
298
|
+
_classPrivateFieldGet(_stateManager, this).triggerColumnModification(actionName, columnIndex);
|
464
299
|
}
|
465
300
|
});
|
466
301
|
this.ghostTable.buildWidthsMap();
|
@@ -475,9 +310,9 @@ class NestedHeaders extends _base.BasePlugin {
|
|
475
310
|
*/
|
476
311
|
disablePlugin() {
|
477
312
|
this.clearColspans();
|
478
|
-
_classPrivateFieldGet(
|
479
|
-
_classPrivateFieldGet(
|
480
|
-
_classPrivateFieldSet(
|
313
|
+
_classPrivateFieldGet(_stateManager, this).clear();
|
314
|
+
_classPrivateFieldGet(_hidingIndexMapObserver, this).unsubscribe();
|
315
|
+
_classPrivateFieldSet(_hidingIndexMapObserver, this, null);
|
481
316
|
this.ghostTable.clear();
|
482
317
|
super.disablePlugin();
|
483
318
|
}
|
@@ -489,7 +324,7 @@ class NestedHeaders extends _base.BasePlugin {
|
|
489
324
|
* @returns {StateManager}
|
490
325
|
*/
|
491
326
|
getStateManager() {
|
492
|
-
return _classPrivateFieldGet(
|
327
|
+
return _classPrivateFieldGet(_stateManager, this);
|
493
328
|
}
|
494
329
|
|
495
330
|
/**
|
@@ -499,7 +334,7 @@ class NestedHeaders extends _base.BasePlugin {
|
|
499
334
|
* @returns {number}
|
500
335
|
*/
|
501
336
|
getLayersCount() {
|
502
|
-
return _classPrivateFieldGet(
|
337
|
+
return _classPrivateFieldGet(_stateManager, this).getLayersCount();
|
503
338
|
}
|
504
339
|
|
505
340
|
/**
|
@@ -513,7 +348,7 @@ class NestedHeaders extends _base.BasePlugin {
|
|
513
348
|
* @returns {object}
|
514
349
|
*/
|
515
350
|
getHeaderSettings(headerLevel, columnIndex) {
|
516
|
-
return _classPrivateFieldGet(
|
351
|
+
return _classPrivateFieldGet(_stateManager, this).getHeaderSettings(headerLevel, columnIndex);
|
517
352
|
}
|
518
353
|
|
519
354
|
/**
|
@@ -582,7 +417,7 @@ class NestedHeaders extends _base.BasePlugin {
|
|
582
417
|
colspan,
|
583
418
|
isHidden,
|
584
419
|
isPlaceholder
|
585
|
-
} = (_classPrivateFieldGet2 = _classPrivateFieldGet(
|
420
|
+
} = (_classPrivateFieldGet2 = _classPrivateFieldGet(_stateManager, this).getHeaderSettings(headerLevel, visualColumnIndex)) !== null && _classPrivateFieldGet2 !== void 0 ? _classPrivateFieldGet2 : {
|
586
421
|
label: ''
|
587
422
|
};
|
588
423
|
if (isPlaceholder || isHidden) {
|
@@ -623,7 +458,7 @@ class NestedHeaders extends _base.BasePlugin {
|
|
623
458
|
const {
|
624
459
|
isHidden,
|
625
460
|
isPlaceholder
|
626
|
-
} = (_classPrivateFieldGet3 = _classPrivateFieldGet(
|
461
|
+
} = (_classPrivateFieldGet3 = _classPrivateFieldGet(_stateManager, this).getHeaderSettings(headerLevel, visualColumnIndex)) !== null && _classPrivateFieldGet3 !== void 0 ? _classPrivateFieldGet3 : {};
|
627
462
|
if (isPlaceholder || isHidden) {
|
628
463
|
return '';
|
629
464
|
}
|
@@ -633,10 +468,10 @@ class NestedHeaders extends _base.BasePlugin {
|
|
633
468
|
* Destroys the plugin instance.
|
634
469
|
*/
|
635
470
|
destroy() {
|
636
|
-
_classPrivateFieldSet(
|
637
|
-
if (_classPrivateFieldGet(
|
638
|
-
_classPrivateFieldGet(
|
639
|
-
_classPrivateFieldSet(
|
471
|
+
_classPrivateFieldSet(_stateManager, this, null);
|
472
|
+
if (_classPrivateFieldGet(_hidingIndexMapObserver, this) !== null) {
|
473
|
+
_classPrivateFieldGet(_hidingIndexMapObserver, this).unsubscribe();
|
474
|
+
_classPrivateFieldSet(_hidingIndexMapObserver, this, null);
|
640
475
|
}
|
641
476
|
super.destroy();
|
642
477
|
}
|
@@ -652,11 +487,11 @@ class NestedHeaders extends _base.BasePlugin {
|
|
652
487
|
if (coords.row >= 0 || coords.col < 0) {
|
653
488
|
return;
|
654
489
|
}
|
655
|
-
return _classPrivateFieldGet(
|
490
|
+
return _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(coords.row, coords.col);
|
656
491
|
}
|
657
492
|
}
|
658
493
|
exports.NestedHeaders = NestedHeaders;
|
659
|
-
function
|
494
|
+
function _updateFocusHighlightPosition() {
|
660
495
|
var _this$hot;
|
661
496
|
const selection = (_this$hot = this.hot) === null || _this$hot === void 0 ? void 0 : _this$hot.getSelectedRangeLast();
|
662
497
|
if (!selection) {
|
@@ -667,7 +502,7 @@ function _updateFocusHighlightPosition2() {
|
|
667
502
|
} = selection;
|
668
503
|
const isNestedHeadersRange = highlight.isHeader() && highlight.col >= 0;
|
669
504
|
if (isNestedHeadersRange) {
|
670
|
-
const columnIndex = _classPrivateFieldGet(
|
505
|
+
const columnIndex = _classPrivateFieldGet(_stateManager, this).findLeftMostColumnIndex(highlight.row, highlight.col);
|
671
506
|
const focusHighlight = this.hot.selection.highlight.getFocus();
|
672
507
|
|
673
508
|
// Correct the highlight/focus selection to highlight the correct TH element
|
@@ -677,7 +512,15 @@ function _updateFocusHighlightPosition2() {
|
|
677
512
|
focusHighlight.commit();
|
678
513
|
}
|
679
514
|
}
|
680
|
-
|
515
|
+
/**
|
516
|
+
* Allows to control to which column index the viewport will be scrolled. To ensure that the viewport
|
517
|
+
* is scrolled to the correct column for the nested header the most left and the most right visual column
|
518
|
+
* indexes are used.
|
519
|
+
*
|
520
|
+
* @param {number} visualColumn A visual column index to which the viewport will be scrolled.
|
521
|
+
* @returns {number}
|
522
|
+
*/
|
523
|
+
function _onBeforeViewportScrollHorizontally(visualColumn) {
|
681
524
|
const selection = this.hot.getSelectedRangeLast();
|
682
525
|
if (!selection) {
|
683
526
|
return visualColumn;
|
@@ -691,8 +534,8 @@ function _onBeforeViewportScrollHorizontally2(visualColumn) {
|
|
691
534
|
}
|
692
535
|
const firstColumn = this.hot.view.getFirstFullyVisibleColumn();
|
693
536
|
const lastColumn = this.hot.view.getLastFullyVisibleColumn();
|
694
|
-
const mostLeftColumnIndex = _classPrivateFieldGet(
|
695
|
-
const mostRightColumnIndex = _classPrivateFieldGet(
|
537
|
+
const mostLeftColumnIndex = _classPrivateFieldGet(_stateManager, this).findLeftMostColumnIndex(highlight.row, highlight.col);
|
538
|
+
const mostRightColumnIndex = _classPrivateFieldGet(_stateManager, this).findRightMostColumnIndex(highlight.row, highlight.col);
|
696
539
|
|
697
540
|
// do not scroll the viewport when the header is wider than the viewport
|
698
541
|
if (mostLeftColumnIndex < firstColumn && mostRightColumnIndex > lastColumn) {
|
@@ -700,8 +543,16 @@ function _onBeforeViewportScrollHorizontally2(visualColumn) {
|
|
700
543
|
}
|
701
544
|
return mostLeftColumnIndex < firstColumn ? mostLeftColumnIndex : mostRightColumnIndex;
|
702
545
|
}
|
703
|
-
|
704
|
-
|
546
|
+
/**
|
547
|
+
* Allows to control which header DOM element will be used to highlight.
|
548
|
+
*
|
549
|
+
* @param {number} visualColumn A visual column index of the highlighted row header.
|
550
|
+
* @param {number} headerLevel A row header level that is currently highlighted.
|
551
|
+
* @param {object} highlightMeta An object with meta data that describes the highlight state.
|
552
|
+
* @returns {number}
|
553
|
+
*/
|
554
|
+
function _onBeforeHighlightingColumnHeader(visualColumn, headerLevel, highlightMeta) {
|
555
|
+
const headerNodeData = _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(headerLevel, visualColumn);
|
705
556
|
if (!headerNodeData) {
|
706
557
|
return visualColumn;
|
707
558
|
}
|
@@ -713,7 +564,7 @@ function _onBeforeHighlightingColumnHeader2(visualColumn, headerLevel, highlight
|
|
713
564
|
const {
|
714
565
|
isRoot,
|
715
566
|
colspan
|
716
|
-
} = _classPrivateFieldGet(
|
567
|
+
} = _classPrivateFieldGet(_stateManager, this).getHeaderSettings(headerLevel, visualColumn);
|
717
568
|
if (selectionType === _selection.HEADER_TYPE) {
|
718
569
|
if (!isRoot) {
|
719
570
|
return headerNodeData.columnIndex;
|
@@ -726,7 +577,19 @@ function _onBeforeHighlightingColumnHeader2(visualColumn, headerLevel, highlight
|
|
726
577
|
}
|
727
578
|
return visualColumn;
|
728
579
|
}
|
729
|
-
|
580
|
+
/**
|
581
|
+
* Listens the `beforeCopy` hook that allows processing the copied column headers so that the
|
582
|
+
* merged column headers do not propagate the value for each column but only once at the beginning
|
583
|
+
* of the column.
|
584
|
+
*
|
585
|
+
* @private
|
586
|
+
* @param {Array[]} data An array of arrays which contains data to copied.
|
587
|
+
* @param {object[]} copyableRanges An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`)
|
588
|
+
* which will copied.
|
589
|
+
* @param {{ columnHeadersCount: number }} copiedHeadersCount An object with keys that holds information with
|
590
|
+
* the number of copied headers.
|
591
|
+
*/
|
592
|
+
function _onBeforeCopy(data, copyableRanges, _ref2) {
|
730
593
|
let {
|
731
594
|
columnHeadersCount
|
732
595
|
} = _ref2;
|
@@ -755,7 +618,7 @@ function _onBeforeCopy2(data, copyableRanges, _ref2) {
|
|
755
618
|
if (zeroBasedColumnIndex === 0) {
|
756
619
|
continue; // eslint-disable-line no-continue
|
757
620
|
}
|
758
|
-
const isRoot = (_classPrivateFieldGet4 = _classPrivateFieldGet(
|
621
|
+
const isRoot = (_classPrivateFieldGet4 = _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(row, column)) === null || _classPrivateFieldGet4 === void 0 ? void 0 : _classPrivateFieldGet4.isRoot;
|
759
622
|
if (isRoot === false) {
|
760
623
|
data[zeroBasedColumnHeaderLevel][zeroBasedColumnIndex] = '';
|
761
624
|
}
|
@@ -763,7 +626,16 @@ function _onBeforeCopy2(data, copyableRanges, _ref2) {
|
|
763
626
|
}
|
764
627
|
}
|
765
628
|
}
|
766
|
-
|
629
|
+
/**
|
630
|
+
* Allows blocking the column selection that is controlled by the core Selection module.
|
631
|
+
*
|
632
|
+
* @param {MouseEvent} event Mouse event.
|
633
|
+
* @param {CellCoords} coords Cell coords object containing the visual coordinates of the clicked cell.
|
634
|
+
* @param {CellCoords} TD The table cell or header element.
|
635
|
+
* @param {object} controller An object with properties `row`, `column` and `cell`. Each property contains
|
636
|
+
* a boolean value that allows or disallows changing the selection for that particular area.
|
637
|
+
*/
|
638
|
+
function _onBeforeOnCellMouseDown(event, coords, TD, controller) {
|
767
639
|
const headerNodeData = this._getHeaderTreeNodeDataByCoords(coords);
|
768
640
|
if (headerNodeData) {
|
769
641
|
// Block the Selection module in controlling how the columns are selected. Pass the
|
@@ -771,13 +643,19 @@ function _onBeforeOnCellMouseDown2(event, coords, TD, controller) {
|
|
771
643
|
controller.column = true;
|
772
644
|
}
|
773
645
|
}
|
774
|
-
|
646
|
+
/**
|
647
|
+
* Allows to control how the column selection based on the coordinates and the nested headers is made.
|
648
|
+
*
|
649
|
+
* @param {MouseEvent} event Mouse event.
|
650
|
+
* @param {CellCoords} coords Cell coords object containing the visual coordinates of the clicked cell.
|
651
|
+
*/
|
652
|
+
function _onAfterOnCellMouseDown(event, coords) {
|
775
653
|
const headerNodeData = this._getHeaderTreeNodeDataByCoords(coords);
|
776
654
|
if (!headerNodeData) {
|
777
655
|
return;
|
778
656
|
}
|
779
|
-
_classPrivateFieldSet(
|
780
|
-
_classPrivateFieldSet(
|
657
|
+
_classPrivateFieldSet(_focusInitialCoords, this, coords.clone());
|
658
|
+
_classPrivateFieldSet(_isColumnsSelectionInProgress, this, true);
|
781
659
|
const {
|
782
660
|
selection
|
783
661
|
} = this.hot;
|
@@ -808,7 +686,16 @@ function _onAfterOnCellMouseDown2(event, coords) {
|
|
808
686
|
// The plugin takes control of how the columns are selected.
|
809
687
|
selection.selectColumns(...columnsToSelect);
|
810
688
|
}
|
811
|
-
|
689
|
+
/**
|
690
|
+
* Makes the header-selection properly select the nested headers.
|
691
|
+
*
|
692
|
+
* @param {MouseEvent} event Mouse event.
|
693
|
+
* @param {CellCoords} coords Cell coords object containing the visual coordinates of the clicked cell.
|
694
|
+
* @param {HTMLElement} TD The cell element.
|
695
|
+
* @param {object} controller An object with properties `row`, `column` and `cell`. Each property contains
|
696
|
+
* a boolean value that allows or disallows changing the selection for that particular area.
|
697
|
+
*/
|
698
|
+
function _onBeforeOnCellMouseOver(event, coords, TD, controller) {
|
812
699
|
if (!this.hot.view.isMouseDown()) {
|
813
700
|
return;
|
814
701
|
}
|
@@ -842,14 +729,21 @@ function _onBeforeOnCellMouseOver2(event, coords, TD, controller) {
|
|
842
729
|
}
|
843
730
|
this.hot.selection.selectColumns(...columnsToSelect);
|
844
731
|
}
|
845
|
-
|
846
|
-
|
732
|
+
/**
|
733
|
+
* Switches internal flag about selection progress to `false`.
|
734
|
+
*/
|
735
|
+
function _onBeforeOnCellMouseUp() {
|
736
|
+
_classPrivateFieldSet(_isColumnsSelectionInProgress, this, false);
|
847
737
|
}
|
848
|
-
|
738
|
+
/**
|
739
|
+
* The hook checks and ensures that the focus position that depends on the selected columns
|
740
|
+
* range is always positioned within the range.
|
741
|
+
*/
|
742
|
+
function _onBeforeSelectionHighlightSet() {
|
849
743
|
const {
|
850
744
|
navigableHeaders
|
851
745
|
} = this.hot.getSettings();
|
852
|
-
if (!this.hot.view.isMouseDown() || !_classPrivateFieldGet(
|
746
|
+
if (!this.hot.view.isMouseDown() || !_classPrivateFieldGet(_isColumnsSelectionInProgress, this) || !navigableHeaders) {
|
853
747
|
return;
|
854
748
|
}
|
855
749
|
const selectedRange = this.hot.getSelectedRangeLast();
|
@@ -858,15 +752,20 @@ function _onBeforeSelectionHighlightSet2() {
|
|
858
752
|
const {
|
859
753
|
columnIndex,
|
860
754
|
origColspan
|
861
|
-
} = _classPrivateFieldGet(
|
862
|
-
selectedRange.setHighlight(_classPrivateFieldGet(
|
755
|
+
} = _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(_classPrivateFieldGet(_focusInitialCoords, this).row, _classPrivateFieldGet(_focusInitialCoords, this).col);
|
756
|
+
selectedRange.setHighlight(_classPrivateFieldGet(_focusInitialCoords, this));
|
863
757
|
if (origColspan > selectedRange.getWidth() || columnIndex < columnStart || columnIndex + origColspan - 1 > columnEnd) {
|
864
|
-
const headerLevel = _classPrivateFieldGet(
|
758
|
+
const headerLevel = _classPrivateFieldGet(_stateManager, this).findTopMostEntireHeaderLevel((0, _number.clamp)(columnStart, columnIndex, columnIndex + origColspan - 1), (0, _number.clamp)(columnEnd, columnIndex, columnIndex + origColspan - 1));
|
865
759
|
selectedRange.highlight.row = headerLevel;
|
866
760
|
selectedRange.highlight.col = selectedRange.from.col;
|
867
761
|
}
|
868
762
|
}
|
869
|
-
|
763
|
+
/**
|
764
|
+
* `modifyTransformStart` hook is called every time the keyboard navigation is used.
|
765
|
+
*
|
766
|
+
* @param {object} delta The transformation delta.
|
767
|
+
*/
|
768
|
+
function _onModifyTransformStart(delta) {
|
870
769
|
const {
|
871
770
|
highlight
|
872
771
|
} = this.hot.getSelectedRangeLast();
|
@@ -875,8 +774,8 @@ function _onModifyTransformStart2(delta) {
|
|
875
774
|
if (!isNestedHeadersRange) {
|
876
775
|
return;
|
877
776
|
}
|
878
|
-
const visualColumnIndexStart = _classPrivateFieldGet(
|
879
|
-
const visualColumnIndexEnd = _classPrivateFieldGet(
|
777
|
+
const visualColumnIndexStart = _classPrivateFieldGet(_stateManager, this).findLeftMostColumnIndex(nextCoords.row, nextCoords.col);
|
778
|
+
const visualColumnIndexEnd = _classPrivateFieldGet(_stateManager, this).findRightMostColumnIndex(nextCoords.row, nextCoords.col);
|
880
779
|
if (delta.col < 0) {
|
881
780
|
const nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexStart - 1 : visualColumnIndexEnd;
|
882
781
|
const notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(nextColumn, -1);
|
@@ -899,7 +798,14 @@ function _onModifyTransformStart2(delta) {
|
|
899
798
|
}
|
900
799
|
}
|
901
800
|
}
|
902
|
-
|
801
|
+
/**
|
802
|
+
* The hook observes the column selection from the Selection API and modifies the column range to
|
803
|
+
* ensure that the whole nested column will be covered.
|
804
|
+
*
|
805
|
+
* @param {CellCoords} from The coords object where the selection starts.
|
806
|
+
* @param {CellCoords} to The coords object where the selection ends.
|
807
|
+
*/
|
808
|
+
function _onBeforeSelectColumns(from, to) {
|
903
809
|
const headerLevel = from.row;
|
904
810
|
const startNodeData = this._getHeaderTreeNodeDataByCoords({
|
905
811
|
row: headerLevel,
|
@@ -927,18 +833,28 @@ function _onBeforeSelectColumns2(from, to) {
|
|
927
833
|
}
|
928
834
|
}
|
929
835
|
}
|
930
|
-
|
836
|
+
/**
|
837
|
+
* `afterGetColumnHeader` hook callback - prepares the header structure.
|
838
|
+
*
|
839
|
+
* @param {Array} renderersArray Array of renderers.
|
840
|
+
*/
|
841
|
+
function _onAfterGetColumnHeaderRenderers(renderersArray) {
|
931
842
|
renderersArray.length = 0;
|
932
|
-
for (let headerLayer = 0; headerLayer < _classPrivateFieldGet(
|
843
|
+
for (let headerLayer = 0; headerLayer < _classPrivateFieldGet(_stateManager, this).getLayersCount(); headerLayer++) {
|
933
844
|
renderersArray.push(this.headerRendererFactory(headerLayer));
|
934
845
|
}
|
935
846
|
}
|
936
|
-
|
937
|
-
|
847
|
+
/**
|
848
|
+
* Make the renderer render the first nested column in its entirety.
|
849
|
+
*
|
850
|
+
* @param {object} calc Viewport column calculator.
|
851
|
+
*/
|
852
|
+
function _onAfterViewportColumnCalculatorOverride(calc) {
|
853
|
+
const headerLayersCount = _classPrivateFieldGet(_stateManager, this).getLayersCount();
|
938
854
|
let newStartColumn = calc.startColumn;
|
939
855
|
let nonRenderable = !!headerLayersCount;
|
940
856
|
for (let headerLayer = 0; headerLayer < headerLayersCount; headerLayer++) {
|
941
|
-
const startColumn = _classPrivateFieldGet(
|
857
|
+
const startColumn = _classPrivateFieldGet(_stateManager, this).findLeftMostColumnIndex(headerLayer, calc.startColumn);
|
942
858
|
const renderedStartColumn = this.hot.columnIndexMapper.getRenderableFromVisualIndex(startColumn);
|
943
859
|
|
944
860
|
// If any of the headers for that column index is rendered, all of them should be rendered properly, see
|
@@ -957,31 +873,67 @@ function _onAfterViewportColumnCalculatorOverride2(calc) {
|
|
957
873
|
|
958
874
|
// If no headers for the provided column index are renderable, start rendering from the beginning of the upmost
|
959
875
|
// header for that position.
|
960
|
-
calc.startColumn = nonRenderable ? _classPrivateFieldGet(
|
876
|
+
calc.startColumn = nonRenderable ? _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(0, newStartColumn).columnIndex : newStartColumn;
|
961
877
|
}
|
962
|
-
|
878
|
+
/**
|
879
|
+
* `modifyColWidth` hook callback - returns width from cache, when is greater than incoming from hook.
|
880
|
+
*
|
881
|
+
* @param {number} width Width from hook.
|
882
|
+
* @param {number} column Visual index of an column.
|
883
|
+
* @returns {number}
|
884
|
+
*/
|
885
|
+
function _onModifyColWidth(width, column) {
|
963
886
|
const cachedWidth = this.ghostTable.getWidth(column);
|
964
887
|
return width > cachedWidth ? width : cachedWidth;
|
965
888
|
}
|
966
|
-
|
889
|
+
/**
|
890
|
+
* Listens the `modifyColumnHeaderValue` hook that overwrites the column headers values based on
|
891
|
+
* the internal state and settings of the plugin.
|
892
|
+
*
|
893
|
+
* @param {string} value The column header value.
|
894
|
+
* @param {number} visualColumnIndex The visual column index.
|
895
|
+
* @param {number} headerLevel The index of header level. The header level accepts positive (0 to N)
|
896
|
+
* and negative (-1 to -N) values. For positive values, 0 points to the
|
897
|
+
* top most header, and for negative direction, -1 points to the most bottom
|
898
|
+
* header (the header closest to the cells).
|
899
|
+
* @returns {string} Returns the column header value to update.
|
900
|
+
*/
|
901
|
+
function _onModifyColumnHeaderValue(value, visualColumnIndex, headerLevel) {
|
967
902
|
var _classPrivateFieldGet5;
|
968
903
|
const {
|
969
904
|
label
|
970
|
-
} = (_classPrivateFieldGet5 = _classPrivateFieldGet(
|
905
|
+
} = (_classPrivateFieldGet5 = _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(headerLevel, visualColumnIndex)) !== null && _classPrivateFieldGet5 !== void 0 ? _classPrivateFieldGet5 : {
|
971
906
|
label: ''
|
972
907
|
};
|
973
908
|
return label;
|
974
909
|
}
|
975
|
-
|
910
|
+
/**
|
911
|
+
* `modifyFocusedElement` hook callback.
|
912
|
+
*
|
913
|
+
* @param {number} row Row index.
|
914
|
+
* @param {number} column Column index.
|
915
|
+
* @returns {HTMLTableCellElement} The `TH` element to be focused.
|
916
|
+
*/
|
917
|
+
function _onModifyFocusedElement(row, column) {
|
976
918
|
if (row < 0) {
|
977
|
-
return this.hot.getCell(row, _classPrivateFieldGet(
|
919
|
+
return this.hot.getCell(row, _classPrivateFieldGet(_stateManager, this).findLeftMostColumnIndex(row, column), true);
|
978
920
|
}
|
979
921
|
}
|
980
|
-
|
922
|
+
/**
|
923
|
+
* Updates the plugin state after HoT initialization.
|
924
|
+
*/
|
925
|
+
function _onInit() {
|
981
926
|
// @TODO: Workaround for broken plugin initialization abstraction.
|
982
927
|
this.updatePlugin();
|
983
928
|
}
|
984
|
-
|
929
|
+
/**
|
930
|
+
* Updates the plugin state after new dataset load.
|
931
|
+
*
|
932
|
+
* @param {Array[]} sourceData Array of arrays or array of objects containing data.
|
933
|
+
* @param {boolean} initialLoad Flag that determines whether the data has been loaded
|
934
|
+
* during the initialization.
|
935
|
+
*/
|
936
|
+
function _onAfterLoadData(sourceData, initialLoad) {
|
985
937
|
if (!initialLoad) {
|
986
938
|
this.updatePlugin();
|
987
939
|
}
|