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
@@ -1,17 +1,14 @@
|
|
1
|
-
import "core-js/modules/es.array.push.js";
|
2
1
|
import "core-js/modules/es.error.cause.js";
|
2
|
+
import "core-js/modules/es.array.push.js";
|
3
3
|
function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
|
4
4
|
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; }
|
5
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i :
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
6
6
|
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); }
|
7
7
|
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
8
8
|
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
9
|
-
function _classPrivateFieldSet(
|
10
|
-
function
|
11
|
-
function
|
12
|
-
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
13
|
-
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
14
|
-
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
9
|
+
function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
|
10
|
+
function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
|
11
|
+
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"); }
|
15
12
|
import { addClass, removeClass } from "../../helpers/dom/element.mjs";
|
16
13
|
import { isNumeric, clamp } from "../../helpers/number.mjs";
|
17
14
|
import { toSingleLine } from "../../helpers/templateLiteralTag.mjs";
|
@@ -73,203 +70,40 @@ var _stateManager = /*#__PURE__*/new WeakMap();
|
|
73
70
|
var _hidingIndexMapObserver = /*#__PURE__*/new WeakMap();
|
74
71
|
var _focusInitialCoords = /*#__PURE__*/new WeakMap();
|
75
72
|
var _isColumnsSelectionInProgress = /*#__PURE__*/new WeakMap();
|
76
|
-
var
|
77
|
-
var _onBeforeViewportScrollHorizontally = /*#__PURE__*/new WeakSet();
|
78
|
-
var _onBeforeHighlightingColumnHeader = /*#__PURE__*/new WeakSet();
|
79
|
-
var _onBeforeCopy = /*#__PURE__*/new WeakSet();
|
80
|
-
var _onBeforeOnCellMouseDown = /*#__PURE__*/new WeakSet();
|
81
|
-
var _onAfterOnCellMouseDown = /*#__PURE__*/new WeakSet();
|
82
|
-
var _onBeforeOnCellMouseOver = /*#__PURE__*/new WeakSet();
|
83
|
-
var _onBeforeOnCellMouseUp = /*#__PURE__*/new WeakSet();
|
84
|
-
var _onBeforeSelectionHighlightSet = /*#__PURE__*/new WeakSet();
|
85
|
-
var _onModifyTransformStart = /*#__PURE__*/new WeakSet();
|
86
|
-
var _onBeforeSelectColumns = /*#__PURE__*/new WeakSet();
|
87
|
-
var _onAfterGetColumnHeaderRenderers = /*#__PURE__*/new WeakSet();
|
88
|
-
var _onAfterViewportColumnCalculatorOverride = /*#__PURE__*/new WeakSet();
|
89
|
-
var _onModifyColWidth = /*#__PURE__*/new WeakSet();
|
90
|
-
var _onModifyColumnHeaderValue = /*#__PURE__*/new WeakSet();
|
91
|
-
var _onModifyFocusedElement = /*#__PURE__*/new WeakSet();
|
92
|
-
var _onInit = /*#__PURE__*/new WeakSet();
|
93
|
-
var _onAfterLoadData = /*#__PURE__*/new WeakSet();
|
73
|
+
var _NestedHeaders_brand = /*#__PURE__*/new WeakSet();
|
94
74
|
export class NestedHeaders extends BasePlugin {
|
95
75
|
constructor() {
|
96
76
|
super(...arguments);
|
97
|
-
/**
|
98
|
-
* Updates the plugin state after new dataset load.
|
99
|
-
*
|
100
|
-
* @param {Array[]} sourceData Array of arrays or array of objects containing data.
|
101
|
-
* @param {boolean} initialLoad Flag that determines whether the data has been loaded
|
102
|
-
* during the initialization.
|
103
|
-
*/
|
104
|
-
_classPrivateMethodInitSpec(this, _onAfterLoadData);
|
105
|
-
/**
|
106
|
-
* Updates the plugin state after HoT initialization.
|
107
|
-
*/
|
108
|
-
_classPrivateMethodInitSpec(this, _onInit);
|
109
|
-
/**
|
110
|
-
* `modifyFocusedElement` hook callback.
|
111
|
-
*
|
112
|
-
* @param {number} row Row index.
|
113
|
-
* @param {number} column Column index.
|
114
|
-
* @returns {HTMLTableCellElement} The `TH` element to be focused.
|
115
|
-
*/
|
116
|
-
_classPrivateMethodInitSpec(this, _onModifyFocusedElement);
|
117
|
-
/**
|
118
|
-
* Listens the `modifyColumnHeaderValue` hook that overwrites the column headers values based on
|
119
|
-
* the internal state and settings of the plugin.
|
120
|
-
*
|
121
|
-
* @param {string} value The column header value.
|
122
|
-
* @param {number} visualColumnIndex The visual column index.
|
123
|
-
* @param {number} headerLevel The index of header level. The header level accepts positive (0 to N)
|
124
|
-
* and negative (-1 to -N) values. For positive values, 0 points to the
|
125
|
-
* top most header, and for negative direction, -1 points to the most bottom
|
126
|
-
* header (the header closest to the cells).
|
127
|
-
* @returns {string} Returns the column header value to update.
|
128
|
-
*/
|
129
|
-
_classPrivateMethodInitSpec(this, _onModifyColumnHeaderValue);
|
130
|
-
/**
|
131
|
-
* `modifyColWidth` hook callback - returns width from cache, when is greater than incoming from hook.
|
132
|
-
*
|
133
|
-
* @param {number} width Width from hook.
|
134
|
-
* @param {number} column Visual index of an column.
|
135
|
-
* @returns {number}
|
136
|
-
*/
|
137
|
-
_classPrivateMethodInitSpec(this, _onModifyColWidth);
|
138
|
-
/**
|
139
|
-
* Make the renderer render the first nested column in its entirety.
|
140
|
-
*
|
141
|
-
* @param {object} calc Viewport column calculator.
|
142
|
-
*/
|
143
|
-
_classPrivateMethodInitSpec(this, _onAfterViewportColumnCalculatorOverride);
|
144
|
-
/**
|
145
|
-
* `afterGetColumnHeader` hook callback - prepares the header structure.
|
146
|
-
*
|
147
|
-
* @param {Array} renderersArray Array of renderers.
|
148
|
-
*/
|
149
|
-
_classPrivateMethodInitSpec(this, _onAfterGetColumnHeaderRenderers);
|
150
|
-
/**
|
151
|
-
* The hook observes the column selection from the Selection API and modifies the column range to
|
152
|
-
* ensure that the whole nested column will be covered.
|
153
|
-
*
|
154
|
-
* @param {CellCoords} from The coords object where the selection starts.
|
155
|
-
* @param {CellCoords} to The coords object where the selection ends.
|
156
|
-
*/
|
157
|
-
_classPrivateMethodInitSpec(this, _onBeforeSelectColumns);
|
158
|
-
/**
|
159
|
-
* `modifyTransformStart` hook is called every time the keyboard navigation is used.
|
160
|
-
*
|
161
|
-
* @param {object} delta The transformation delta.
|
162
|
-
*/
|
163
|
-
_classPrivateMethodInitSpec(this, _onModifyTransformStart);
|
164
|
-
/**
|
165
|
-
* The hook checks and ensures that the focus position that depends on the selected columns
|
166
|
-
* range is always positioned within the range.
|
167
|
-
*/
|
168
|
-
_classPrivateMethodInitSpec(this, _onBeforeSelectionHighlightSet);
|
169
|
-
/**
|
170
|
-
* Switches internal flag about selection progress to `false`.
|
171
|
-
*/
|
172
|
-
_classPrivateMethodInitSpec(this, _onBeforeOnCellMouseUp);
|
173
|
-
/**
|
174
|
-
* Makes the header-selection properly select the nested headers.
|
175
|
-
*
|
176
|
-
* @param {MouseEvent} event Mouse event.
|
177
|
-
* @param {CellCoords} coords Cell coords object containing the visual coordinates of the clicked cell.
|
178
|
-
* @param {HTMLElement} TD The cell element.
|
179
|
-
* @param {object} controller An object with properties `row`, `column` and `cell`. Each property contains
|
180
|
-
* a boolean value that allows or disallows changing the selection for that particular area.
|
181
|
-
*/
|
182
|
-
_classPrivateMethodInitSpec(this, _onBeforeOnCellMouseOver);
|
183
|
-
/**
|
184
|
-
* Allows to control how the column selection based on the coordinates and the nested headers is made.
|
185
|
-
*
|
186
|
-
* @param {MouseEvent} event Mouse event.
|
187
|
-
* @param {CellCoords} coords Cell coords object containing the visual coordinates of the clicked cell.
|
188
|
-
*/
|
189
|
-
_classPrivateMethodInitSpec(this, _onAfterOnCellMouseDown);
|
190
|
-
/**
|
191
|
-
* Allows blocking the column selection that is controlled by the core Selection module.
|
192
|
-
*
|
193
|
-
* @param {MouseEvent} event Mouse event.
|
194
|
-
* @param {CellCoords} coords Cell coords object containing the visual coordinates of the clicked cell.
|
195
|
-
* @param {CellCoords} TD The table cell or header element.
|
196
|
-
* @param {object} controller An object with properties `row`, `column` and `cell`. Each property contains
|
197
|
-
* a boolean value that allows or disallows changing the selection for that particular area.
|
198
|
-
*/
|
199
|
-
_classPrivateMethodInitSpec(this, _onBeforeOnCellMouseDown);
|
200
|
-
/**
|
201
|
-
* Listens the `beforeCopy` hook that allows processing the copied column headers so that the
|
202
|
-
* merged column headers do not propagate the value for each column but only once at the beginning
|
203
|
-
* of the column.
|
204
|
-
*
|
205
|
-
* @private
|
206
|
-
* @param {Array[]} data An array of arrays which contains data to copied.
|
207
|
-
* @param {object[]} copyableRanges An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`)
|
208
|
-
* which will copied.
|
209
|
-
* @param {{ columnHeadersCount: number }} copiedHeadersCount An object with keys that holds information with
|
210
|
-
* the number of copied headers.
|
211
|
-
*/
|
212
|
-
_classPrivateMethodInitSpec(this, _onBeforeCopy);
|
213
|
-
/**
|
214
|
-
* Allows to control which header DOM element will be used to highlight.
|
215
|
-
*
|
216
|
-
* @param {number} visualColumn A visual column index of the highlighted row header.
|
217
|
-
* @param {number} headerLevel A row header level that is currently highlighted.
|
218
|
-
* @param {object} highlightMeta An object with meta data that describes the highlight state.
|
219
|
-
* @returns {number}
|
220
|
-
*/
|
221
|
-
_classPrivateMethodInitSpec(this, _onBeforeHighlightingColumnHeader);
|
222
|
-
/**
|
223
|
-
* Allows to control to which column index the viewport will be scrolled. To ensure that the viewport
|
224
|
-
* is scrolled to the correct column for the nested header the most left and the most right visual column
|
225
|
-
* indexes are used.
|
226
|
-
*
|
227
|
-
* @param {number} visualColumn A visual column index to which the viewport will be scrolled.
|
228
|
-
* @returns {number}
|
229
|
-
*/
|
230
|
-
_classPrivateMethodInitSpec(this, _onBeforeViewportScrollHorizontally);
|
231
77
|
/**
|
232
78
|
* Updates the selection focus highlight position to point to the nested header root element (TH)
|
233
79
|
* even when the logical coordinates point in-between the header.
|
234
80
|
*/
|
235
|
-
_classPrivateMethodInitSpec(this,
|
81
|
+
_classPrivateMethodInitSpec(this, _NestedHeaders_brand);
|
236
82
|
/**
|
237
83
|
* The state manager for the nested headers.
|
238
84
|
*
|
239
85
|
* @type {StateManager}
|
240
86
|
*/
|
241
|
-
_classPrivateFieldInitSpec(this, _stateManager,
|
242
|
-
writable: true,
|
243
|
-
value: new StateManager()
|
244
|
-
});
|
87
|
+
_classPrivateFieldInitSpec(this, _stateManager, new StateManager());
|
245
88
|
/**
|
246
89
|
* The instance of the ChangesObservable class that allows track the changes that happens in the
|
247
90
|
* column indexes.
|
248
91
|
*
|
249
92
|
* @type {ChangesObservable}
|
250
93
|
*/
|
251
|
-
_classPrivateFieldInitSpec(this, _hidingIndexMapObserver,
|
252
|
-
writable: true,
|
253
|
-
value: null
|
254
|
-
});
|
94
|
+
_classPrivateFieldInitSpec(this, _hidingIndexMapObserver, null);
|
255
95
|
/**
|
256
96
|
* Holds the coords that points to the place where the column selection starts.
|
257
97
|
*
|
258
98
|
* @type {number|null}
|
259
99
|
*/
|
260
|
-
_classPrivateFieldInitSpec(this, _focusInitialCoords,
|
261
|
-
writable: true,
|
262
|
-
value: null
|
263
|
-
});
|
100
|
+
_classPrivateFieldInitSpec(this, _focusInitialCoords, null);
|
264
101
|
/**
|
265
102
|
* Determines if there is performed the column selection.
|
266
103
|
*
|
267
104
|
* @type {boolean}
|
268
105
|
*/
|
269
|
-
_classPrivateFieldInitSpec(this, _isColumnsSelectionInProgress,
|
270
|
-
writable: true,
|
271
|
-
value: false
|
272
|
-
});
|
106
|
+
_classPrivateFieldInitSpec(this, _isColumnsSelectionInProgress, false);
|
273
107
|
/**
|
274
108
|
* Custom helper for getting widths of the nested headers.
|
275
109
|
*
|
@@ -316,101 +150,102 @@ export class NestedHeaders extends BasePlugin {
|
|
316
150
|
warn(toSingleLine`Your Nested Headers plugin configuration is invalid. The settings has to be\x20
|
317
151
|
passed as an array of arrays e.q. [['A1', { label: 'A2', colspan: 2 }]]`);
|
318
152
|
}
|
319
|
-
this.addHook('init', () =>
|
153
|
+
this.addHook('init', () => _assertClassBrand(_NestedHeaders_brand, this, _onInit).call(this));
|
320
154
|
this.addHook('afterLoadData', function () {
|
321
155
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
322
156
|
args[_key] = arguments[_key];
|
323
157
|
}
|
324
|
-
return
|
158
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onAfterLoadData).call(_this, ...args);
|
325
159
|
});
|
326
160
|
this.addHook('beforeOnCellMouseDown', function () {
|
327
161
|
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
328
162
|
args[_key2] = arguments[_key2];
|
329
163
|
}
|
330
|
-
return
|
164
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onBeforeOnCellMouseDown).call(_this, ...args);
|
331
165
|
});
|
332
166
|
this.addHook('afterOnCellMouseDown', function () {
|
333
167
|
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
334
168
|
args[_key3] = arguments[_key3];
|
335
169
|
}
|
336
|
-
return
|
170
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onAfterOnCellMouseDown).call(_this, ...args);
|
337
171
|
});
|
338
172
|
this.addHook('beforeOnCellMouseOver', function () {
|
339
173
|
for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
340
174
|
args[_key4] = arguments[_key4];
|
341
175
|
}
|
342
|
-
return
|
176
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onBeforeOnCellMouseOver).call(_this, ...args);
|
343
177
|
});
|
344
178
|
this.addHook('beforeOnCellMouseUp', function () {
|
345
179
|
for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
|
346
180
|
args[_key5] = arguments[_key5];
|
347
181
|
}
|
348
|
-
return
|
182
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onBeforeOnCellMouseUp).call(_this, ...args);
|
349
183
|
});
|
350
184
|
this.addHook('beforeSelectionHighlightSet', function () {
|
351
185
|
for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
|
352
186
|
args[_key6] = arguments[_key6];
|
353
187
|
}
|
354
|
-
return
|
188
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onBeforeSelectionHighlightSet).call(_this, ...args);
|
355
189
|
});
|
356
190
|
this.addHook('modifyTransformStart', function () {
|
357
191
|
for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
|
358
192
|
args[_key7] = arguments[_key7];
|
359
193
|
}
|
360
|
-
return
|
194
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onModifyTransformStart).call(_this, ...args);
|
361
195
|
});
|
362
|
-
this.addHook('afterSelection', () =>
|
196
|
+
this.addHook('afterSelection', () => _assertClassBrand(_NestedHeaders_brand, this, _updateFocusHighlightPosition).call(this));
|
197
|
+
this.addHook('afterSelectionFocusSet', () => _assertClassBrand(_NestedHeaders_brand, this, _updateFocusHighlightPosition).call(this));
|
363
198
|
this.addHook('beforeViewportScrollHorizontally', function () {
|
364
199
|
for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
|
365
200
|
args[_key8] = arguments[_key8];
|
366
201
|
}
|
367
|
-
return
|
202
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onBeforeViewportScrollHorizontally).call(_this, ...args);
|
368
203
|
});
|
369
|
-
this.addHook('afterGetColumnHeaderRenderers', array =>
|
204
|
+
this.addHook('afterGetColumnHeaderRenderers', array => _assertClassBrand(_NestedHeaders_brand, this, _onAfterGetColumnHeaderRenderers).call(this, array));
|
370
205
|
this.addHook('modifyColWidth', function () {
|
371
206
|
for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
|
372
207
|
args[_key9] = arguments[_key9];
|
373
208
|
}
|
374
|
-
return
|
209
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onModifyColWidth).call(_this, ...args);
|
375
210
|
});
|
376
211
|
this.addHook('modifyColumnHeaderValue', function () {
|
377
212
|
for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {
|
378
213
|
args[_key10] = arguments[_key10];
|
379
214
|
}
|
380
|
-
return
|
215
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onModifyColumnHeaderValue).call(_this, ...args);
|
381
216
|
});
|
382
217
|
this.addHook('beforeHighlightingColumnHeader', function () {
|
383
218
|
for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {
|
384
219
|
args[_key11] = arguments[_key11];
|
385
220
|
}
|
386
|
-
return
|
221
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onBeforeHighlightingColumnHeader).call(_this, ...args);
|
387
222
|
});
|
388
223
|
this.addHook('beforeCopy', function () {
|
389
224
|
for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
|
390
225
|
args[_key12] = arguments[_key12];
|
391
226
|
}
|
392
|
-
return
|
227
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onBeforeCopy).call(_this, ...args);
|
393
228
|
});
|
394
229
|
this.addHook('beforeSelectColumns', function () {
|
395
230
|
for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {
|
396
231
|
args[_key13] = arguments[_key13];
|
397
232
|
}
|
398
|
-
return
|
233
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onBeforeSelectColumns).call(_this, ...args);
|
399
234
|
});
|
400
235
|
this.addHook('afterViewportColumnCalculatorOverride', function () {
|
401
236
|
for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {
|
402
237
|
args[_key14] = arguments[_key14];
|
403
238
|
}
|
404
|
-
return
|
239
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onAfterViewportColumnCalculatorOverride).call(_this, ...args);
|
405
240
|
});
|
406
241
|
this.addHook('modifyFocusedElement', function () {
|
407
242
|
for (var _len15 = arguments.length, args = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {
|
408
243
|
args[_key15] = arguments[_key15];
|
409
244
|
}
|
410
|
-
return
|
245
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onModifyFocusedElement).call(_this, ...args);
|
411
246
|
});
|
412
|
-
this.hot.columnIndexMapper.addLocalHook('cacheUpdated', () =>
|
413
|
-
this.hot.rowIndexMapper.addLocalHook('cacheUpdated', () =>
|
247
|
+
this.hot.columnIndexMapper.addLocalHook('cacheUpdated', () => _assertClassBrand(_NestedHeaders_brand, this, _updateFocusHighlightPosition).call(this));
|
248
|
+
this.hot.rowIndexMapper.addLocalHook('cacheUpdated', () => _assertClassBrand(_NestedHeaders_brand, this, _updateFocusHighlightPosition).call(this));
|
414
249
|
super.enablePlugin();
|
415
250
|
this.updatePlugin(); // @TODO: Workaround for broken plugin initialization abstraction.
|
416
251
|
}
|
@@ -429,9 +264,9 @@ export class NestedHeaders extends BasePlugin {
|
|
429
264
|
const {
|
430
265
|
nestedHeaders
|
431
266
|
} = this.hot.getSettings();
|
432
|
-
_classPrivateFieldGet(
|
267
|
+
_classPrivateFieldGet(_stateManager, this).setColumnsLimit(this.hot.countCols());
|
433
268
|
if (Array.isArray(nestedHeaders)) {
|
434
|
-
this.detectedOverlappedHeaders = _classPrivateFieldGet(
|
269
|
+
this.detectedOverlappedHeaders = _classPrivateFieldGet(_stateManager, this).setState(nestedHeaders);
|
435
270
|
}
|
436
271
|
if (this.detectedOverlappedHeaders) {
|
437
272
|
warn(toSingleLine`Your Nested Headers plugin setup contains overlapping headers. This kind of configuration\x20
|
@@ -443,11 +278,11 @@ export class NestedHeaders extends BasePlugin {
|
|
443
278
|
// as if all the columns are visible, needs to be modified to be in sync with a dataset.
|
444
279
|
this.hot.columnIndexMapper.hidingMapsCollection.getMergedValues().forEach((isColumnHidden, physicalColumnIndex) => {
|
445
280
|
const actionName = isColumnHidden === true ? 'hide-column' : 'show-column';
|
446
|
-
_classPrivateFieldGet(
|
281
|
+
_classPrivateFieldGet(_stateManager, this).triggerColumnModification(actionName, physicalColumnIndex);
|
447
282
|
});
|
448
283
|
}
|
449
|
-
if (!_classPrivateFieldGet(
|
450
|
-
_classPrivateFieldSet(
|
284
|
+
if (!_classPrivateFieldGet(_hidingIndexMapObserver, this) && this.enabled) {
|
285
|
+
_classPrivateFieldSet(_hidingIndexMapObserver, this, this.hot.columnIndexMapper.createChangesObserver('hiding').subscribe(changes => {
|
451
286
|
changes.forEach(_ref => {
|
452
287
|
let {
|
453
288
|
op,
|
@@ -456,7 +291,7 @@ export class NestedHeaders extends BasePlugin {
|
|
456
291
|
} = _ref;
|
457
292
|
if (op === 'replace') {
|
458
293
|
const actionName = newValue === true ? 'hide-column' : 'show-column';
|
459
|
-
_classPrivateFieldGet(
|
294
|
+
_classPrivateFieldGet(_stateManager, this).triggerColumnModification(actionName, columnIndex);
|
460
295
|
}
|
461
296
|
});
|
462
297
|
this.ghostTable.buildWidthsMap();
|
@@ -471,9 +306,9 @@ export class NestedHeaders extends BasePlugin {
|
|
471
306
|
*/
|
472
307
|
disablePlugin() {
|
473
308
|
this.clearColspans();
|
474
|
-
_classPrivateFieldGet(
|
475
|
-
_classPrivateFieldGet(
|
476
|
-
_classPrivateFieldSet(
|
309
|
+
_classPrivateFieldGet(_stateManager, this).clear();
|
310
|
+
_classPrivateFieldGet(_hidingIndexMapObserver, this).unsubscribe();
|
311
|
+
_classPrivateFieldSet(_hidingIndexMapObserver, this, null);
|
477
312
|
this.ghostTable.clear();
|
478
313
|
super.disablePlugin();
|
479
314
|
}
|
@@ -485,7 +320,7 @@ export class NestedHeaders extends BasePlugin {
|
|
485
320
|
* @returns {StateManager}
|
486
321
|
*/
|
487
322
|
getStateManager() {
|
488
|
-
return _classPrivateFieldGet(
|
323
|
+
return _classPrivateFieldGet(_stateManager, this);
|
489
324
|
}
|
490
325
|
|
491
326
|
/**
|
@@ -495,7 +330,7 @@ export class NestedHeaders extends BasePlugin {
|
|
495
330
|
* @returns {number}
|
496
331
|
*/
|
497
332
|
getLayersCount() {
|
498
|
-
return _classPrivateFieldGet(
|
333
|
+
return _classPrivateFieldGet(_stateManager, this).getLayersCount();
|
499
334
|
}
|
500
335
|
|
501
336
|
/**
|
@@ -509,7 +344,7 @@ export class NestedHeaders extends BasePlugin {
|
|
509
344
|
* @returns {object}
|
510
345
|
*/
|
511
346
|
getHeaderSettings(headerLevel, columnIndex) {
|
512
|
-
return _classPrivateFieldGet(
|
347
|
+
return _classPrivateFieldGet(_stateManager, this).getHeaderSettings(headerLevel, columnIndex);
|
513
348
|
}
|
514
349
|
|
515
350
|
/**
|
@@ -578,7 +413,7 @@ export class NestedHeaders extends BasePlugin {
|
|
578
413
|
colspan,
|
579
414
|
isHidden,
|
580
415
|
isPlaceholder
|
581
|
-
} = (_classPrivateFieldGet2 = _classPrivateFieldGet(
|
416
|
+
} = (_classPrivateFieldGet2 = _classPrivateFieldGet(_stateManager, this).getHeaderSettings(headerLevel, visualColumnIndex)) !== null && _classPrivateFieldGet2 !== void 0 ? _classPrivateFieldGet2 : {
|
582
417
|
label: ''
|
583
418
|
};
|
584
419
|
if (isPlaceholder || isHidden) {
|
@@ -619,7 +454,7 @@ export class NestedHeaders extends BasePlugin {
|
|
619
454
|
const {
|
620
455
|
isHidden,
|
621
456
|
isPlaceholder
|
622
|
-
} = (_classPrivateFieldGet3 = _classPrivateFieldGet(
|
457
|
+
} = (_classPrivateFieldGet3 = _classPrivateFieldGet(_stateManager, this).getHeaderSettings(headerLevel, visualColumnIndex)) !== null && _classPrivateFieldGet3 !== void 0 ? _classPrivateFieldGet3 : {};
|
623
458
|
if (isPlaceholder || isHidden) {
|
624
459
|
return '';
|
625
460
|
}
|
@@ -629,10 +464,10 @@ export class NestedHeaders extends BasePlugin {
|
|
629
464
|
* Destroys the plugin instance.
|
630
465
|
*/
|
631
466
|
destroy() {
|
632
|
-
_classPrivateFieldSet(
|
633
|
-
if (_classPrivateFieldGet(
|
634
|
-
_classPrivateFieldGet(
|
635
|
-
_classPrivateFieldSet(
|
467
|
+
_classPrivateFieldSet(_stateManager, this, null);
|
468
|
+
if (_classPrivateFieldGet(_hidingIndexMapObserver, this) !== null) {
|
469
|
+
_classPrivateFieldGet(_hidingIndexMapObserver, this).unsubscribe();
|
470
|
+
_classPrivateFieldSet(_hidingIndexMapObserver, this, null);
|
636
471
|
}
|
637
472
|
super.destroy();
|
638
473
|
}
|
@@ -648,10 +483,10 @@ export class NestedHeaders extends BasePlugin {
|
|
648
483
|
if (coords.row >= 0 || coords.col < 0) {
|
649
484
|
return;
|
650
485
|
}
|
651
|
-
return _classPrivateFieldGet(
|
486
|
+
return _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(coords.row, coords.col);
|
652
487
|
}
|
653
488
|
}
|
654
|
-
function
|
489
|
+
function _updateFocusHighlightPosition() {
|
655
490
|
var _this$hot;
|
656
491
|
const selection = (_this$hot = this.hot) === null || _this$hot === void 0 ? void 0 : _this$hot.getSelectedRangeLast();
|
657
492
|
if (!selection) {
|
@@ -662,7 +497,7 @@ function _updateFocusHighlightPosition2() {
|
|
662
497
|
} = selection;
|
663
498
|
const isNestedHeadersRange = highlight.isHeader() && highlight.col >= 0;
|
664
499
|
if (isNestedHeadersRange) {
|
665
|
-
const columnIndex = _classPrivateFieldGet(
|
500
|
+
const columnIndex = _classPrivateFieldGet(_stateManager, this).findLeftMostColumnIndex(highlight.row, highlight.col);
|
666
501
|
const focusHighlight = this.hot.selection.highlight.getFocus();
|
667
502
|
|
668
503
|
// Correct the highlight/focus selection to highlight the correct TH element
|
@@ -672,7 +507,15 @@ function _updateFocusHighlightPosition2() {
|
|
672
507
|
focusHighlight.commit();
|
673
508
|
}
|
674
509
|
}
|
675
|
-
|
510
|
+
/**
|
511
|
+
* Allows to control to which column index the viewport will be scrolled. To ensure that the viewport
|
512
|
+
* is scrolled to the correct column for the nested header the most left and the most right visual column
|
513
|
+
* indexes are used.
|
514
|
+
*
|
515
|
+
* @param {number} visualColumn A visual column index to which the viewport will be scrolled.
|
516
|
+
* @returns {number}
|
517
|
+
*/
|
518
|
+
function _onBeforeViewportScrollHorizontally(visualColumn) {
|
676
519
|
const selection = this.hot.getSelectedRangeLast();
|
677
520
|
if (!selection) {
|
678
521
|
return visualColumn;
|
@@ -686,8 +529,8 @@ function _onBeforeViewportScrollHorizontally2(visualColumn) {
|
|
686
529
|
}
|
687
530
|
const firstColumn = this.hot.view.getFirstFullyVisibleColumn();
|
688
531
|
const lastColumn = this.hot.view.getLastFullyVisibleColumn();
|
689
|
-
const mostLeftColumnIndex = _classPrivateFieldGet(
|
690
|
-
const mostRightColumnIndex = _classPrivateFieldGet(
|
532
|
+
const mostLeftColumnIndex = _classPrivateFieldGet(_stateManager, this).findLeftMostColumnIndex(highlight.row, highlight.col);
|
533
|
+
const mostRightColumnIndex = _classPrivateFieldGet(_stateManager, this).findRightMostColumnIndex(highlight.row, highlight.col);
|
691
534
|
|
692
535
|
// do not scroll the viewport when the header is wider than the viewport
|
693
536
|
if (mostLeftColumnIndex < firstColumn && mostRightColumnIndex > lastColumn) {
|
@@ -695,8 +538,16 @@ function _onBeforeViewportScrollHorizontally2(visualColumn) {
|
|
695
538
|
}
|
696
539
|
return mostLeftColumnIndex < firstColumn ? mostLeftColumnIndex : mostRightColumnIndex;
|
697
540
|
}
|
698
|
-
|
699
|
-
|
541
|
+
/**
|
542
|
+
* Allows to control which header DOM element will be used to highlight.
|
543
|
+
*
|
544
|
+
* @param {number} visualColumn A visual column index of the highlighted row header.
|
545
|
+
* @param {number} headerLevel A row header level that is currently highlighted.
|
546
|
+
* @param {object} highlightMeta An object with meta data that describes the highlight state.
|
547
|
+
* @returns {number}
|
548
|
+
*/
|
549
|
+
function _onBeforeHighlightingColumnHeader(visualColumn, headerLevel, highlightMeta) {
|
550
|
+
const headerNodeData = _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(headerLevel, visualColumn);
|
700
551
|
if (!headerNodeData) {
|
701
552
|
return visualColumn;
|
702
553
|
}
|
@@ -708,7 +559,7 @@ function _onBeforeHighlightingColumnHeader2(visualColumn, headerLevel, highlight
|
|
708
559
|
const {
|
709
560
|
isRoot,
|
710
561
|
colspan
|
711
|
-
} = _classPrivateFieldGet(
|
562
|
+
} = _classPrivateFieldGet(_stateManager, this).getHeaderSettings(headerLevel, visualColumn);
|
712
563
|
if (selectionType === HEADER_TYPE) {
|
713
564
|
if (!isRoot) {
|
714
565
|
return headerNodeData.columnIndex;
|
@@ -721,7 +572,19 @@ function _onBeforeHighlightingColumnHeader2(visualColumn, headerLevel, highlight
|
|
721
572
|
}
|
722
573
|
return visualColumn;
|
723
574
|
}
|
724
|
-
|
575
|
+
/**
|
576
|
+
* Listens the `beforeCopy` hook that allows processing the copied column headers so that the
|
577
|
+
* merged column headers do not propagate the value for each column but only once at the beginning
|
578
|
+
* of the column.
|
579
|
+
*
|
580
|
+
* @private
|
581
|
+
* @param {Array[]} data An array of arrays which contains data to copied.
|
582
|
+
* @param {object[]} copyableRanges An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`)
|
583
|
+
* which will copied.
|
584
|
+
* @param {{ columnHeadersCount: number }} copiedHeadersCount An object with keys that holds information with
|
585
|
+
* the number of copied headers.
|
586
|
+
*/
|
587
|
+
function _onBeforeCopy(data, copyableRanges, _ref2) {
|
725
588
|
let {
|
726
589
|
columnHeadersCount
|
727
590
|
} = _ref2;
|
@@ -750,7 +613,7 @@ function _onBeforeCopy2(data, copyableRanges, _ref2) {
|
|
750
613
|
if (zeroBasedColumnIndex === 0) {
|
751
614
|
continue; // eslint-disable-line no-continue
|
752
615
|
}
|
753
|
-
const isRoot = (_classPrivateFieldGet4 = _classPrivateFieldGet(
|
616
|
+
const isRoot = (_classPrivateFieldGet4 = _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(row, column)) === null || _classPrivateFieldGet4 === void 0 ? void 0 : _classPrivateFieldGet4.isRoot;
|
754
617
|
if (isRoot === false) {
|
755
618
|
data[zeroBasedColumnHeaderLevel][zeroBasedColumnIndex] = '';
|
756
619
|
}
|
@@ -758,7 +621,16 @@ function _onBeforeCopy2(data, copyableRanges, _ref2) {
|
|
758
621
|
}
|
759
622
|
}
|
760
623
|
}
|
761
|
-
|
624
|
+
/**
|
625
|
+
* Allows blocking the column selection that is controlled by the core Selection module.
|
626
|
+
*
|
627
|
+
* @param {MouseEvent} event Mouse event.
|
628
|
+
* @param {CellCoords} coords Cell coords object containing the visual coordinates of the clicked cell.
|
629
|
+
* @param {CellCoords} TD The table cell or header element.
|
630
|
+
* @param {object} controller An object with properties `row`, `column` and `cell`. Each property contains
|
631
|
+
* a boolean value that allows or disallows changing the selection for that particular area.
|
632
|
+
*/
|
633
|
+
function _onBeforeOnCellMouseDown(event, coords, TD, controller) {
|
762
634
|
const headerNodeData = this._getHeaderTreeNodeDataByCoords(coords);
|
763
635
|
if (headerNodeData) {
|
764
636
|
// Block the Selection module in controlling how the columns are selected. Pass the
|
@@ -766,13 +638,19 @@ function _onBeforeOnCellMouseDown2(event, coords, TD, controller) {
|
|
766
638
|
controller.column = true;
|
767
639
|
}
|
768
640
|
}
|
769
|
-
|
641
|
+
/**
|
642
|
+
* Allows to control how the column selection based on the coordinates and the nested headers is made.
|
643
|
+
*
|
644
|
+
* @param {MouseEvent} event Mouse event.
|
645
|
+
* @param {CellCoords} coords Cell coords object containing the visual coordinates of the clicked cell.
|
646
|
+
*/
|
647
|
+
function _onAfterOnCellMouseDown(event, coords) {
|
770
648
|
const headerNodeData = this._getHeaderTreeNodeDataByCoords(coords);
|
771
649
|
if (!headerNodeData) {
|
772
650
|
return;
|
773
651
|
}
|
774
|
-
_classPrivateFieldSet(
|
775
|
-
_classPrivateFieldSet(
|
652
|
+
_classPrivateFieldSet(_focusInitialCoords, this, coords.clone());
|
653
|
+
_classPrivateFieldSet(_isColumnsSelectionInProgress, this, true);
|
776
654
|
const {
|
777
655
|
selection
|
778
656
|
} = this.hot;
|
@@ -803,7 +681,16 @@ function _onAfterOnCellMouseDown2(event, coords) {
|
|
803
681
|
// The plugin takes control of how the columns are selected.
|
804
682
|
selection.selectColumns(...columnsToSelect);
|
805
683
|
}
|
806
|
-
|
684
|
+
/**
|
685
|
+
* Makes the header-selection properly select the nested headers.
|
686
|
+
*
|
687
|
+
* @param {MouseEvent} event Mouse event.
|
688
|
+
* @param {CellCoords} coords Cell coords object containing the visual coordinates of the clicked cell.
|
689
|
+
* @param {HTMLElement} TD The cell element.
|
690
|
+
* @param {object} controller An object with properties `row`, `column` and `cell`. Each property contains
|
691
|
+
* a boolean value that allows or disallows changing the selection for that particular area.
|
692
|
+
*/
|
693
|
+
function _onBeforeOnCellMouseOver(event, coords, TD, controller) {
|
807
694
|
if (!this.hot.view.isMouseDown()) {
|
808
695
|
return;
|
809
696
|
}
|
@@ -837,14 +724,21 @@ function _onBeforeOnCellMouseOver2(event, coords, TD, controller) {
|
|
837
724
|
}
|
838
725
|
this.hot.selection.selectColumns(...columnsToSelect);
|
839
726
|
}
|
840
|
-
|
841
|
-
|
727
|
+
/**
|
728
|
+
* Switches internal flag about selection progress to `false`.
|
729
|
+
*/
|
730
|
+
function _onBeforeOnCellMouseUp() {
|
731
|
+
_classPrivateFieldSet(_isColumnsSelectionInProgress, this, false);
|
842
732
|
}
|
843
|
-
|
733
|
+
/**
|
734
|
+
* The hook checks and ensures that the focus position that depends on the selected columns
|
735
|
+
* range is always positioned within the range.
|
736
|
+
*/
|
737
|
+
function _onBeforeSelectionHighlightSet() {
|
844
738
|
const {
|
845
739
|
navigableHeaders
|
846
740
|
} = this.hot.getSettings();
|
847
|
-
if (!this.hot.view.isMouseDown() || !_classPrivateFieldGet(
|
741
|
+
if (!this.hot.view.isMouseDown() || !_classPrivateFieldGet(_isColumnsSelectionInProgress, this) || !navigableHeaders) {
|
848
742
|
return;
|
849
743
|
}
|
850
744
|
const selectedRange = this.hot.getSelectedRangeLast();
|
@@ -853,15 +747,20 @@ function _onBeforeSelectionHighlightSet2() {
|
|
853
747
|
const {
|
854
748
|
columnIndex,
|
855
749
|
origColspan
|
856
|
-
} = _classPrivateFieldGet(
|
857
|
-
selectedRange.setHighlight(_classPrivateFieldGet(
|
750
|
+
} = _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(_classPrivateFieldGet(_focusInitialCoords, this).row, _classPrivateFieldGet(_focusInitialCoords, this).col);
|
751
|
+
selectedRange.setHighlight(_classPrivateFieldGet(_focusInitialCoords, this));
|
858
752
|
if (origColspan > selectedRange.getWidth() || columnIndex < columnStart || columnIndex + origColspan - 1 > columnEnd) {
|
859
|
-
const headerLevel = _classPrivateFieldGet(
|
753
|
+
const headerLevel = _classPrivateFieldGet(_stateManager, this).findTopMostEntireHeaderLevel(clamp(columnStart, columnIndex, columnIndex + origColspan - 1), clamp(columnEnd, columnIndex, columnIndex + origColspan - 1));
|
860
754
|
selectedRange.highlight.row = headerLevel;
|
861
755
|
selectedRange.highlight.col = selectedRange.from.col;
|
862
756
|
}
|
863
757
|
}
|
864
|
-
|
758
|
+
/**
|
759
|
+
* `modifyTransformStart` hook is called every time the keyboard navigation is used.
|
760
|
+
*
|
761
|
+
* @param {object} delta The transformation delta.
|
762
|
+
*/
|
763
|
+
function _onModifyTransformStart(delta) {
|
865
764
|
const {
|
866
765
|
highlight
|
867
766
|
} = this.hot.getSelectedRangeLast();
|
@@ -870,8 +769,8 @@ function _onModifyTransformStart2(delta) {
|
|
870
769
|
if (!isNestedHeadersRange) {
|
871
770
|
return;
|
872
771
|
}
|
873
|
-
const visualColumnIndexStart = _classPrivateFieldGet(
|
874
|
-
const visualColumnIndexEnd = _classPrivateFieldGet(
|
772
|
+
const visualColumnIndexStart = _classPrivateFieldGet(_stateManager, this).findLeftMostColumnIndex(nextCoords.row, nextCoords.col);
|
773
|
+
const visualColumnIndexEnd = _classPrivateFieldGet(_stateManager, this).findRightMostColumnIndex(nextCoords.row, nextCoords.col);
|
875
774
|
if (delta.col < 0) {
|
876
775
|
const nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexStart - 1 : visualColumnIndexEnd;
|
877
776
|
const notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(nextColumn, -1);
|
@@ -894,7 +793,14 @@ function _onModifyTransformStart2(delta) {
|
|
894
793
|
}
|
895
794
|
}
|
896
795
|
}
|
897
|
-
|
796
|
+
/**
|
797
|
+
* The hook observes the column selection from the Selection API and modifies the column range to
|
798
|
+
* ensure that the whole nested column will be covered.
|
799
|
+
*
|
800
|
+
* @param {CellCoords} from The coords object where the selection starts.
|
801
|
+
* @param {CellCoords} to The coords object where the selection ends.
|
802
|
+
*/
|
803
|
+
function _onBeforeSelectColumns(from, to) {
|
898
804
|
const headerLevel = from.row;
|
899
805
|
const startNodeData = this._getHeaderTreeNodeDataByCoords({
|
900
806
|
row: headerLevel,
|
@@ -922,18 +828,28 @@ function _onBeforeSelectColumns2(from, to) {
|
|
922
828
|
}
|
923
829
|
}
|
924
830
|
}
|
925
|
-
|
831
|
+
/**
|
832
|
+
* `afterGetColumnHeader` hook callback - prepares the header structure.
|
833
|
+
*
|
834
|
+
* @param {Array} renderersArray Array of renderers.
|
835
|
+
*/
|
836
|
+
function _onAfterGetColumnHeaderRenderers(renderersArray) {
|
926
837
|
renderersArray.length = 0;
|
927
|
-
for (let headerLayer = 0; headerLayer < _classPrivateFieldGet(
|
838
|
+
for (let headerLayer = 0; headerLayer < _classPrivateFieldGet(_stateManager, this).getLayersCount(); headerLayer++) {
|
928
839
|
renderersArray.push(this.headerRendererFactory(headerLayer));
|
929
840
|
}
|
930
841
|
}
|
931
|
-
|
932
|
-
|
842
|
+
/**
|
843
|
+
* Make the renderer render the first nested column in its entirety.
|
844
|
+
*
|
845
|
+
* @param {object} calc Viewport column calculator.
|
846
|
+
*/
|
847
|
+
function _onAfterViewportColumnCalculatorOverride(calc) {
|
848
|
+
const headerLayersCount = _classPrivateFieldGet(_stateManager, this).getLayersCount();
|
933
849
|
let newStartColumn = calc.startColumn;
|
934
850
|
let nonRenderable = !!headerLayersCount;
|
935
851
|
for (let headerLayer = 0; headerLayer < headerLayersCount; headerLayer++) {
|
936
|
-
const startColumn = _classPrivateFieldGet(
|
852
|
+
const startColumn = _classPrivateFieldGet(_stateManager, this).findLeftMostColumnIndex(headerLayer, calc.startColumn);
|
937
853
|
const renderedStartColumn = this.hot.columnIndexMapper.getRenderableFromVisualIndex(startColumn);
|
938
854
|
|
939
855
|
// If any of the headers for that column index is rendered, all of them should be rendered properly, see
|
@@ -952,31 +868,67 @@ function _onAfterViewportColumnCalculatorOverride2(calc) {
|
|
952
868
|
|
953
869
|
// If no headers for the provided column index are renderable, start rendering from the beginning of the upmost
|
954
870
|
// header for that position.
|
955
|
-
calc.startColumn = nonRenderable ? _classPrivateFieldGet(
|
871
|
+
calc.startColumn = nonRenderable ? _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(0, newStartColumn).columnIndex : newStartColumn;
|
956
872
|
}
|
957
|
-
|
873
|
+
/**
|
874
|
+
* `modifyColWidth` hook callback - returns width from cache, when is greater than incoming from hook.
|
875
|
+
*
|
876
|
+
* @param {number} width Width from hook.
|
877
|
+
* @param {number} column Visual index of an column.
|
878
|
+
* @returns {number}
|
879
|
+
*/
|
880
|
+
function _onModifyColWidth(width, column) {
|
958
881
|
const cachedWidth = this.ghostTable.getWidth(column);
|
959
882
|
return width > cachedWidth ? width : cachedWidth;
|
960
883
|
}
|
961
|
-
|
884
|
+
/**
|
885
|
+
* Listens the `modifyColumnHeaderValue` hook that overwrites the column headers values based on
|
886
|
+
* the internal state and settings of the plugin.
|
887
|
+
*
|
888
|
+
* @param {string} value The column header value.
|
889
|
+
* @param {number} visualColumnIndex The visual column index.
|
890
|
+
* @param {number} headerLevel The index of header level. The header level accepts positive (0 to N)
|
891
|
+
* and negative (-1 to -N) values. For positive values, 0 points to the
|
892
|
+
* top most header, and for negative direction, -1 points to the most bottom
|
893
|
+
* header (the header closest to the cells).
|
894
|
+
* @returns {string} Returns the column header value to update.
|
895
|
+
*/
|
896
|
+
function _onModifyColumnHeaderValue(value, visualColumnIndex, headerLevel) {
|
962
897
|
var _classPrivateFieldGet5;
|
963
898
|
const {
|
964
899
|
label
|
965
|
-
} = (_classPrivateFieldGet5 = _classPrivateFieldGet(
|
900
|
+
} = (_classPrivateFieldGet5 = _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(headerLevel, visualColumnIndex)) !== null && _classPrivateFieldGet5 !== void 0 ? _classPrivateFieldGet5 : {
|
966
901
|
label: ''
|
967
902
|
};
|
968
903
|
return label;
|
969
904
|
}
|
970
|
-
|
905
|
+
/**
|
906
|
+
* `modifyFocusedElement` hook callback.
|
907
|
+
*
|
908
|
+
* @param {number} row Row index.
|
909
|
+
* @param {number} column Column index.
|
910
|
+
* @returns {HTMLTableCellElement} The `TH` element to be focused.
|
911
|
+
*/
|
912
|
+
function _onModifyFocusedElement(row, column) {
|
971
913
|
if (row < 0) {
|
972
|
-
return this.hot.getCell(row, _classPrivateFieldGet(
|
914
|
+
return this.hot.getCell(row, _classPrivateFieldGet(_stateManager, this).findLeftMostColumnIndex(row, column), true);
|
973
915
|
}
|
974
916
|
}
|
975
|
-
|
917
|
+
/**
|
918
|
+
* Updates the plugin state after HoT initialization.
|
919
|
+
*/
|
920
|
+
function _onInit() {
|
976
921
|
// @TODO: Workaround for broken plugin initialization abstraction.
|
977
922
|
this.updatePlugin();
|
978
923
|
}
|
979
|
-
|
924
|
+
/**
|
925
|
+
* Updates the plugin state after new dataset load.
|
926
|
+
*
|
927
|
+
* @param {Array[]} sourceData Array of arrays or array of objects containing data.
|
928
|
+
* @param {boolean} initialLoad Flag that determines whether the data has been loaded
|
929
|
+
* during the initialization.
|
930
|
+
*/
|
931
|
+
function _onAfterLoadData(sourceData, initialLoad) {
|
980
932
|
if (!initialLoad) {
|
981
933
|
this.updatePlugin();
|
982
934
|
}
|