handsontable 0.0.0-next-2becb78-20240313 → 0.0.0-next-bff5041-20240315
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.
Potentially problematic release.
This version of handsontable might be problematic. Click here for more details.
- package/3rdparty/walkontable/src/calculator/viewportColumns.js +12 -17
- package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +12 -17
- package/3rdparty/walkontable/src/calculator/viewportRows.js +10 -15
- package/3rdparty/walkontable/src/calculator/viewportRows.mjs +10 -15
- package/3rdparty/walkontable/src/cell/coords.js +12 -17
- package/3rdparty/walkontable/src/cell/coords.mjs +12 -17
- package/3rdparty/walkontable/src/cell/range.d.ts +0 -1
- package/3rdparty/walkontable/src/cell/range.js +23 -45
- package/3rdparty/walkontable/src/cell/range.mjs +23 -45
- package/3rdparty/walkontable/src/core/_base.js +1 -1
- package/3rdparty/walkontable/src/core/_base.mjs +1 -1
- package/3rdparty/walkontable/src/event.js +72 -104
- package/3rdparty/walkontable/src/event.mjs +72 -104
- package/3rdparty/walkontable/src/overlays.js +1 -1
- package/3rdparty/walkontable/src/overlays.mjs +1 -1
- package/3rdparty/walkontable/src/scroll.js +15 -17
- package/3rdparty/walkontable/src/scroll.mjs +15 -17
- 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/utils/columnStretching.js +27 -44
- package/3rdparty/walkontable/src/utils/columnStretching.mjs +27 -44
- package/3rdparty/walkontable/src/utils/orderView/view.js +1 -1
- package/3rdparty/walkontable/src/utils/orderView/view.mjs +1 -1
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/core/viewportScroll/index.js +1 -4
- package/core/viewportScroll/index.mjs +1 -4
- package/core.d.ts +3 -4
- package/core.js +22 -82
- package/core.mjs +22 -82
- package/dataMap/dataSource.js +1 -1
- package/dataMap/dataSource.mjs +1 -1
- package/dataMap/metaManager/metaLayers/cellMeta.js +1 -1
- package/dataMap/metaManager/metaLayers/cellMeta.mjs +1 -1
- package/dataMap/replaceData.js +1 -1
- package/dataMap/replaceData.mjs +1 -1
- package/dist/handsontable.css +2 -2
- package/dist/handsontable.full.css +2 -2
- package/dist/handsontable.full.js +7619 -10404
- package/dist/handsontable.full.min.css +2 -2
- package/dist/handsontable.full.min.js +277 -277
- package/dist/handsontable.js +5525 -7857
- package/dist/handsontable.min.css +2 -2
- package/dist/handsontable.min.js +33 -33
- 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 +21 -27
- package/editorManager.mjs +21 -27
- package/editors/autocompleteEditor/autocompleteEditor.js +6 -10
- package/editors/autocompleteEditor/autocompleteEditor.mjs +6 -10
- package/eventManager.js +1 -1
- package/eventManager.mjs +1 -1
- package/focusManager.js +58 -82
- package/focusManager.mjs +58 -82
- package/helpers/dom/element.js +1 -1
- package/helpers/dom/element.mjs +1 -1
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/helpers/object.js +2 -2
- package/helpers/object.mjs +2 -2
- package/index.d.ts +10 -0
- package/package.json +2 -1
- package/pluginHooks.d.ts +0 -4
- package/pluginHooks.js +2 -44
- package/pluginHooks.mjs +2 -44
- package/plugins/autoColumnSize/autoColumnSize.js +49 -65
- package/plugins/autoColumnSize/autoColumnSize.mjs +49 -65
- package/plugins/autoRowSize/autoRowSize.js +28 -34
- package/plugins/autoRowSize/autoRowSize.mjs +28 -34
- package/plugins/autofill/autofill.js +30 -38
- package/plugins/autofill/autofill.mjs +30 -38
- package/plugins/base/base.js +12 -17
- package/plugins/base/base.mjs +12 -17
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +5 -5
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +5 -5
- package/plugins/collapsibleColumns/collapsibleColumns.js +36 -54
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +36 -54
- package/plugins/columnSorting/columnSorting.js +40 -46
- package/plugins/columnSorting/columnSorting.mjs +40 -46
- package/plugins/columnSummary/columnSummary.js +22 -26
- package/plugins/columnSummary/columnSummary.mjs +22 -26
- package/plugins/comments/comments.js +116 -158
- package/plugins/comments/comments.mjs +116 -158
- package/plugins/contextMenu/contextMenu.js +20 -26
- package/plugins/contextMenu/contextMenu.mjs +20 -26
- package/plugins/contextMenu/itemsFactory.js +1 -1
- package/plugins/contextMenu/itemsFactory.mjs +1 -1
- package/plugins/contextMenu/menu/defaultShortcutsList.js +10 -26
- package/plugins/contextMenu/menu/defaultShortcutsList.mjs +10 -26
- package/plugins/contextMenu/menu/menu.js +13 -21
- package/plugins/contextMenu/menu/menu.mjs +13 -21
- package/plugins/contextMenu/menu/positioner.js +41 -58
- package/plugins/contextMenu/menu/positioner.mjs +41 -58
- package/plugins/copyPaste/copyPaste.js +113 -154
- package/plugins/copyPaste/copyPaste.mjs +113 -154
- package/plugins/copyPaste/copyableRanges.js +43 -66
- package/plugins/copyPaste/copyableRanges.mjs +43 -66
- package/plugins/customBorders/customBorders.js +11 -13
- package/plugins/customBorders/customBorders.mjs +11 -13
- package/plugins/dragToScroll/dragToScroll.js +6 -6
- package/plugins/dragToScroll/dragToScroll.mjs +6 -6
- package/plugins/dropdownMenu/dropdownMenu.js +78 -100
- package/plugins/dropdownMenu/dropdownMenu.mjs +78 -100
- package/plugins/exportFile/dataProvider.js +1 -1
- package/plugins/exportFile/dataProvider.mjs +1 -1
- package/plugins/filters/component/actionBar.js +9 -9
- package/plugins/filters/component/actionBar.mjs +8 -8
- package/plugins/filters/component/condition.js +13 -15
- package/plugins/filters/component/condition.mjs +13 -15
- package/plugins/filters/component/operators.js +6 -6
- package/plugins/filters/component/operators.mjs +6 -6
- package/plugins/filters/component/value.js +24 -28
- package/plugins/filters/component/value.mjs +24 -28
- package/plugins/filters/conditionUpdateObserver.js +22 -24
- package/plugins/filters/conditionUpdateObserver.mjs +22 -24
- package/plugins/filters/dataFilter.js +1 -1
- package/plugins/filters/dataFilter.mjs +1 -1
- package/plugins/filters/filters.js +81 -95
- package/plugins/filters/filters.mjs +81 -95
- 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 +85 -112
- 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 +50 -72
- package/plugins/filters/ui/select.mjs +49 -71
- package/plugins/formulas/formulas.js +268 -326
- package/plugins/formulas/formulas.mjs +269 -327
- 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/hiddenColumns.js +64 -83
- package/plugins/hiddenColumns/hiddenColumns.mjs +64 -83
- package/plugins/hiddenRows/hiddenRows.js +63 -82
- package/plugins/hiddenRows/hiddenRows.mjs +63 -82
- package/plugins/manualColumnFreeze/manualColumnFreeze.js +24 -32
- package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +25 -33
- package/plugins/manualColumnMove/manualColumnMove.js +126 -170
- package/plugins/manualColumnMove/manualColumnMove.mjs +126 -170
- package/plugins/manualColumnResize/manualColumnResize.js +169 -230
- package/plugins/manualColumnResize/manualColumnResize.mjs +169 -230
- package/plugins/manualRowMove/manualRowMove.js +99 -128
- package/plugins/manualRowMove/manualRowMove.mjs +99 -128
- package/plugins/manualRowResize/manualRowResize.js +150 -209
- package/plugins/manualRowResize/manualRowResize.mjs +150 -209
- package/plugins/mergeCells/calculations/selection.js +71 -2
- package/plugins/mergeCells/calculations/selection.mjs +71 -2
- package/plugins/mergeCells/cellsCollection.js +1 -117
- package/plugins/mergeCells/cellsCollection.mjs +1 -117
- package/plugins/mergeCells/contextMenuItem/toggleMerge.js +1 -11
- package/plugins/mergeCells/contextMenuItem/toggleMerge.mjs +1 -11
- package/plugins/mergeCells/mergeCells.js +353 -593
- package/plugins/mergeCells/mergeCells.mjs +353 -593
- package/plugins/multiColumnSorting/multiColumnSorting.js +0 -6
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +0 -6
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +1 -1
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +1 -1
- package/plugins/nestedHeaders/nestedHeaders.js +204 -254
- package/plugins/nestedHeaders/nestedHeaders.mjs +205 -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/nestedRows/data/dataManager.js +1 -1
- package/plugins/nestedRows/data/dataManager.mjs +1 -1
- package/plugins/nestedRows/nestedRows.js +138 -179
- package/plugins/nestedRows/nestedRows.mjs +139 -180
- package/plugins/nestedRows/ui/contextMenu.js +11 -15
- package/plugins/nestedRows/ui/contextMenu.mjs +10 -14
- package/plugins/nestedRows/utils/rowMoveController.js +1 -1
- package/plugins/nestedRows/utils/rowMoveController.mjs +1 -1
- package/plugins/persistentState/storage.js +2 -2
- package/plugins/persistentState/storage.mjs +2 -2
- package/plugins/search/search.js +7 -7
- package/plugins/search/search.mjs +7 -7
- package/plugins/touchScroll/touchScroll.js +15 -19
- package/plugins/touchScroll/touchScroll.mjs +16 -20
- package/plugins/trimRows/trimRows.js +6 -6
- package/plugins/trimRows/trimRows.mjs +6 -6
- package/renderers/checkboxRenderer/checkboxRenderer.js +5 -8
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +5 -8
- package/selection/highlight/highlight.js +14 -14
- package/selection/highlight/highlight.mjs +13 -13
- package/selection/highlight/visualSelection.js +2 -16
- package/selection/highlight/visualSelection.mjs +2 -16
- package/selection/selection.js +60 -255
- package/selection/selection.mjs +59 -254
- package/selection/transformation.js +101 -175
- package/selection/transformation.mjs +101 -175
- package/shortcutContexts/commands/editor/closeAndSave.js +2 -2
- package/shortcutContexts/commands/editor/closeAndSave.mjs +2 -2
- package/shortcutContexts/commands/editor/open.js +3 -18
- package/shortcutContexts/commands/editor/open.mjs +3 -18
- 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 +1 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +1 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +3 -9
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +3 -9
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +3 -10
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +3 -10
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +1 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +1 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +1 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +1 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +1 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +1 -3
- 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 +1 -6
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +1 -6
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +1 -6
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +1 -6
- package/shortcutContexts/grid.js +2 -2
- package/shortcutContexts/grid.mjs +2 -2
- package/shortcuts/context.js +1 -2
- package/shortcuts/context.mjs +1 -2
- package/tableView.js +52 -98
- package/tableView.mjs +52 -98
- 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/mapCollections/aggregatedCollection.js +1 -1
- package/translations/mapCollections/aggregatedCollection.mjs +1 -1
- package/translations/maps/indexMap.js +1 -1
- package/translations/maps/indexMap.mjs +1 -1
- package/utils/dataStructures/linkedList.js +1 -6
- package/utils/dataStructures/linkedList.mjs +1 -6
- package/utils/dataStructures/tree.js +1 -1
- package/utils/dataStructures/tree.mjs +1 -1
- package/utils/interval.js +26 -44
- package/utils/interval.mjs +26 -44
- package/core/viewportScroll/scrollStrategies/focusScroll.js +0 -15
- package/core/viewportScroll/scrollStrategies/focusScroll.mjs +0 -11
- package/plugins/mergeCells/focusOrder.js +0 -327
- package/plugins/mergeCells/focusOrder.mjs +0 -322
@@ -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
5
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(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,102 +150,101 @@ 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', () =>
|
363
|
-
this.addHook('afterSelectionFocusSet', () => _classPrivateMethodGet(this, _updateFocusHighlightPosition, _updateFocusHighlightPosition2).call(this));
|
196
|
+
this.addHook('afterSelection', () => _assertClassBrand(_NestedHeaders_brand, this, _updateFocusHighlightPosition).call(this));
|
364
197
|
this.addHook('beforeViewportScrollHorizontally', function () {
|
365
198
|
for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
|
366
199
|
args[_key8] = arguments[_key8];
|
367
200
|
}
|
368
|
-
return
|
201
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onBeforeViewportScrollHorizontally).call(_this, ...args);
|
369
202
|
});
|
370
|
-
this.addHook('afterGetColumnHeaderRenderers', array =>
|
203
|
+
this.addHook('afterGetColumnHeaderRenderers', array => _assertClassBrand(_NestedHeaders_brand, this, _onAfterGetColumnHeaderRenderers).call(this, array));
|
371
204
|
this.addHook('modifyColWidth', function () {
|
372
205
|
for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
|
373
206
|
args[_key9] = arguments[_key9];
|
374
207
|
}
|
375
|
-
return
|
208
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onModifyColWidth).call(_this, ...args);
|
376
209
|
});
|
377
210
|
this.addHook('modifyColumnHeaderValue', function () {
|
378
211
|
for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {
|
379
212
|
args[_key10] = arguments[_key10];
|
380
213
|
}
|
381
|
-
return
|
214
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onModifyColumnHeaderValue).call(_this, ...args);
|
382
215
|
});
|
383
216
|
this.addHook('beforeHighlightingColumnHeader', function () {
|
384
217
|
for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {
|
385
218
|
args[_key11] = arguments[_key11];
|
386
219
|
}
|
387
|
-
return
|
220
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onBeforeHighlightingColumnHeader).call(_this, ...args);
|
388
221
|
});
|
389
222
|
this.addHook('beforeCopy', function () {
|
390
223
|
for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
|
391
224
|
args[_key12] = arguments[_key12];
|
392
225
|
}
|
393
|
-
return
|
226
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onBeforeCopy).call(_this, ...args);
|
394
227
|
});
|
395
228
|
this.addHook('beforeSelectColumns', function () {
|
396
229
|
for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {
|
397
230
|
args[_key13] = arguments[_key13];
|
398
231
|
}
|
399
|
-
return
|
232
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onBeforeSelectColumns).call(_this, ...args);
|
400
233
|
});
|
401
234
|
this.addHook('afterViewportColumnCalculatorOverride', function () {
|
402
235
|
for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {
|
403
236
|
args[_key14] = arguments[_key14];
|
404
237
|
}
|
405
|
-
return
|
238
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onAfterViewportColumnCalculatorOverride).call(_this, ...args);
|
406
239
|
});
|
407
240
|
this.addHook('modifyFocusedElement', function () {
|
408
241
|
for (var _len15 = arguments.length, args = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {
|
409
242
|
args[_key15] = arguments[_key15];
|
410
243
|
}
|
411
|
-
return
|
244
|
+
return _assertClassBrand(_NestedHeaders_brand, _this, _onModifyFocusedElement).call(_this, ...args);
|
412
245
|
});
|
413
|
-
this.hot.columnIndexMapper.addLocalHook('cacheUpdated', () =>
|
414
|
-
this.hot.rowIndexMapper.addLocalHook('cacheUpdated', () =>
|
246
|
+
this.hot.columnIndexMapper.addLocalHook('cacheUpdated', () => _assertClassBrand(_NestedHeaders_brand, this, _updateFocusHighlightPosition).call(this));
|
247
|
+
this.hot.rowIndexMapper.addLocalHook('cacheUpdated', () => _assertClassBrand(_NestedHeaders_brand, this, _updateFocusHighlightPosition).call(this));
|
415
248
|
super.enablePlugin();
|
416
249
|
this.updatePlugin(); // @TODO: Workaround for broken plugin initialization abstraction.
|
417
250
|
}
|
@@ -430,9 +263,9 @@ export class NestedHeaders extends BasePlugin {
|
|
430
263
|
const {
|
431
264
|
nestedHeaders
|
432
265
|
} = this.hot.getSettings();
|
433
|
-
_classPrivateFieldGet(
|
266
|
+
_classPrivateFieldGet(_stateManager, this).setColumnsLimit(this.hot.countCols());
|
434
267
|
if (Array.isArray(nestedHeaders)) {
|
435
|
-
this.detectedOverlappedHeaders = _classPrivateFieldGet(
|
268
|
+
this.detectedOverlappedHeaders = _classPrivateFieldGet(_stateManager, this).setState(nestedHeaders);
|
436
269
|
}
|
437
270
|
if (this.detectedOverlappedHeaders) {
|
438
271
|
warn(toSingleLine`Your Nested Headers plugin setup contains overlapping headers. This kind of configuration\x20
|
@@ -444,11 +277,11 @@ export class NestedHeaders extends BasePlugin {
|
|
444
277
|
// as if all the columns are visible, needs to be modified to be in sync with a dataset.
|
445
278
|
this.hot.columnIndexMapper.hidingMapsCollection.getMergedValues().forEach((isColumnHidden, physicalColumnIndex) => {
|
446
279
|
const actionName = isColumnHidden === true ? 'hide-column' : 'show-column';
|
447
|
-
_classPrivateFieldGet(
|
280
|
+
_classPrivateFieldGet(_stateManager, this).triggerColumnModification(actionName, physicalColumnIndex);
|
448
281
|
});
|
449
282
|
}
|
450
|
-
if (!_classPrivateFieldGet(
|
451
|
-
_classPrivateFieldSet(
|
283
|
+
if (!_classPrivateFieldGet(_hidingIndexMapObserver, this) && this.enabled) {
|
284
|
+
_classPrivateFieldSet(_hidingIndexMapObserver, this, this.hot.columnIndexMapper.createChangesObserver('hiding').subscribe(changes => {
|
452
285
|
changes.forEach(_ref => {
|
453
286
|
let {
|
454
287
|
op,
|
@@ -457,7 +290,7 @@ export class NestedHeaders extends BasePlugin {
|
|
457
290
|
} = _ref;
|
458
291
|
if (op === 'replace') {
|
459
292
|
const actionName = newValue === true ? 'hide-column' : 'show-column';
|
460
|
-
_classPrivateFieldGet(
|
293
|
+
_classPrivateFieldGet(_stateManager, this).triggerColumnModification(actionName, columnIndex);
|
461
294
|
}
|
462
295
|
});
|
463
296
|
this.ghostTable.buildWidthsMap();
|
@@ -472,9 +305,9 @@ export class NestedHeaders extends BasePlugin {
|
|
472
305
|
*/
|
473
306
|
disablePlugin() {
|
474
307
|
this.clearColspans();
|
475
|
-
_classPrivateFieldGet(
|
476
|
-
_classPrivateFieldGet(
|
477
|
-
_classPrivateFieldSet(
|
308
|
+
_classPrivateFieldGet(_stateManager, this).clear();
|
309
|
+
_classPrivateFieldGet(_hidingIndexMapObserver, this).unsubscribe();
|
310
|
+
_classPrivateFieldSet(_hidingIndexMapObserver, this, null);
|
478
311
|
this.ghostTable.clear();
|
479
312
|
super.disablePlugin();
|
480
313
|
}
|
@@ -486,7 +319,7 @@ export class NestedHeaders extends BasePlugin {
|
|
486
319
|
* @returns {StateManager}
|
487
320
|
*/
|
488
321
|
getStateManager() {
|
489
|
-
return _classPrivateFieldGet(
|
322
|
+
return _classPrivateFieldGet(_stateManager, this);
|
490
323
|
}
|
491
324
|
|
492
325
|
/**
|
@@ -496,7 +329,7 @@ export class NestedHeaders extends BasePlugin {
|
|
496
329
|
* @returns {number}
|
497
330
|
*/
|
498
331
|
getLayersCount() {
|
499
|
-
return _classPrivateFieldGet(
|
332
|
+
return _classPrivateFieldGet(_stateManager, this).getLayersCount();
|
500
333
|
}
|
501
334
|
|
502
335
|
/**
|
@@ -510,7 +343,7 @@ export class NestedHeaders extends BasePlugin {
|
|
510
343
|
* @returns {object}
|
511
344
|
*/
|
512
345
|
getHeaderSettings(headerLevel, columnIndex) {
|
513
|
-
return _classPrivateFieldGet(
|
346
|
+
return _classPrivateFieldGet(_stateManager, this).getHeaderSettings(headerLevel, columnIndex);
|
514
347
|
}
|
515
348
|
|
516
349
|
/**
|
@@ -579,7 +412,7 @@ export class NestedHeaders extends BasePlugin {
|
|
579
412
|
colspan,
|
580
413
|
isHidden,
|
581
414
|
isPlaceholder
|
582
|
-
} = (_classPrivateFieldGet2 = _classPrivateFieldGet(
|
415
|
+
} = (_classPrivateFieldGet2 = _classPrivateFieldGet(_stateManager, this).getHeaderSettings(headerLevel, visualColumnIndex)) !== null && _classPrivateFieldGet2 !== void 0 ? _classPrivateFieldGet2 : {
|
583
416
|
label: ''
|
584
417
|
};
|
585
418
|
if (isPlaceholder || isHidden) {
|
@@ -620,7 +453,7 @@ export class NestedHeaders extends BasePlugin {
|
|
620
453
|
const {
|
621
454
|
isHidden,
|
622
455
|
isPlaceholder
|
623
|
-
} = (_classPrivateFieldGet3 = _classPrivateFieldGet(
|
456
|
+
} = (_classPrivateFieldGet3 = _classPrivateFieldGet(_stateManager, this).getHeaderSettings(headerLevel, visualColumnIndex)) !== null && _classPrivateFieldGet3 !== void 0 ? _classPrivateFieldGet3 : {};
|
624
457
|
if (isPlaceholder || isHidden) {
|
625
458
|
return '';
|
626
459
|
}
|
@@ -630,10 +463,10 @@ export class NestedHeaders extends BasePlugin {
|
|
630
463
|
* Destroys the plugin instance.
|
631
464
|
*/
|
632
465
|
destroy() {
|
633
|
-
_classPrivateFieldSet(
|
634
|
-
if (_classPrivateFieldGet(
|
635
|
-
_classPrivateFieldGet(
|
636
|
-
_classPrivateFieldSet(
|
466
|
+
_classPrivateFieldSet(_stateManager, this, null);
|
467
|
+
if (_classPrivateFieldGet(_hidingIndexMapObserver, this) !== null) {
|
468
|
+
_classPrivateFieldGet(_hidingIndexMapObserver, this).unsubscribe();
|
469
|
+
_classPrivateFieldSet(_hidingIndexMapObserver, this, null);
|
637
470
|
}
|
638
471
|
super.destroy();
|
639
472
|
}
|
@@ -649,10 +482,10 @@ export class NestedHeaders extends BasePlugin {
|
|
649
482
|
if (coords.row >= 0 || coords.col < 0) {
|
650
483
|
return;
|
651
484
|
}
|
652
|
-
return _classPrivateFieldGet(
|
485
|
+
return _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(coords.row, coords.col);
|
653
486
|
}
|
654
487
|
}
|
655
|
-
function
|
488
|
+
function _updateFocusHighlightPosition() {
|
656
489
|
var _this$hot;
|
657
490
|
const selection = (_this$hot = this.hot) === null || _this$hot === void 0 ? void 0 : _this$hot.getSelectedRangeLast();
|
658
491
|
if (!selection) {
|
@@ -663,7 +496,7 @@ function _updateFocusHighlightPosition2() {
|
|
663
496
|
} = selection;
|
664
497
|
const isNestedHeadersRange = highlight.isHeader() && highlight.col >= 0;
|
665
498
|
if (isNestedHeadersRange) {
|
666
|
-
const columnIndex = _classPrivateFieldGet(
|
499
|
+
const columnIndex = _classPrivateFieldGet(_stateManager, this).findLeftMostColumnIndex(highlight.row, highlight.col);
|
667
500
|
const focusHighlight = this.hot.selection.highlight.getFocus();
|
668
501
|
|
669
502
|
// Correct the highlight/focus selection to highlight the correct TH element
|
@@ -673,7 +506,15 @@ function _updateFocusHighlightPosition2() {
|
|
673
506
|
focusHighlight.commit();
|
674
507
|
}
|
675
508
|
}
|
676
|
-
|
509
|
+
/**
|
510
|
+
* Allows to control to which column index the viewport will be scrolled. To ensure that the viewport
|
511
|
+
* is scrolled to the correct column for the nested header the most left and the most right visual column
|
512
|
+
* indexes are used.
|
513
|
+
*
|
514
|
+
* @param {number} visualColumn A visual column index to which the viewport will be scrolled.
|
515
|
+
* @returns {number}
|
516
|
+
*/
|
517
|
+
function _onBeforeViewportScrollHorizontally(visualColumn) {
|
677
518
|
const selection = this.hot.getSelectedRangeLast();
|
678
519
|
if (!selection) {
|
679
520
|
return visualColumn;
|
@@ -687,8 +528,8 @@ function _onBeforeViewportScrollHorizontally2(visualColumn) {
|
|
687
528
|
}
|
688
529
|
const firstColumn = this.hot.view.getFirstFullyVisibleColumn();
|
689
530
|
const lastColumn = this.hot.view.getLastFullyVisibleColumn();
|
690
|
-
const mostLeftColumnIndex = _classPrivateFieldGet(
|
691
|
-
const mostRightColumnIndex = _classPrivateFieldGet(
|
531
|
+
const mostLeftColumnIndex = _classPrivateFieldGet(_stateManager, this).findLeftMostColumnIndex(highlight.row, highlight.col);
|
532
|
+
const mostRightColumnIndex = _classPrivateFieldGet(_stateManager, this).findRightMostColumnIndex(highlight.row, highlight.col);
|
692
533
|
|
693
534
|
// do not scroll the viewport when the header is wider than the viewport
|
694
535
|
if (mostLeftColumnIndex < firstColumn && mostRightColumnIndex > lastColumn) {
|
@@ -696,8 +537,16 @@ function _onBeforeViewportScrollHorizontally2(visualColumn) {
|
|
696
537
|
}
|
697
538
|
return mostLeftColumnIndex < firstColumn ? mostLeftColumnIndex : mostRightColumnIndex;
|
698
539
|
}
|
699
|
-
|
700
|
-
|
540
|
+
/**
|
541
|
+
* Allows to control which header DOM element will be used to highlight.
|
542
|
+
*
|
543
|
+
* @param {number} visualColumn A visual column index of the highlighted row header.
|
544
|
+
* @param {number} headerLevel A row header level that is currently highlighted.
|
545
|
+
* @param {object} highlightMeta An object with meta data that describes the highlight state.
|
546
|
+
* @returns {number}
|
547
|
+
*/
|
548
|
+
function _onBeforeHighlightingColumnHeader(visualColumn, headerLevel, highlightMeta) {
|
549
|
+
const headerNodeData = _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(headerLevel, visualColumn);
|
701
550
|
if (!headerNodeData) {
|
702
551
|
return visualColumn;
|
703
552
|
}
|
@@ -709,7 +558,7 @@ function _onBeforeHighlightingColumnHeader2(visualColumn, headerLevel, highlight
|
|
709
558
|
const {
|
710
559
|
isRoot,
|
711
560
|
colspan
|
712
|
-
} = _classPrivateFieldGet(
|
561
|
+
} = _classPrivateFieldGet(_stateManager, this).getHeaderSettings(headerLevel, visualColumn);
|
713
562
|
if (selectionType === HEADER_TYPE) {
|
714
563
|
if (!isRoot) {
|
715
564
|
return headerNodeData.columnIndex;
|
@@ -722,7 +571,19 @@ function _onBeforeHighlightingColumnHeader2(visualColumn, headerLevel, highlight
|
|
722
571
|
}
|
723
572
|
return visualColumn;
|
724
573
|
}
|
725
|
-
|
574
|
+
/**
|
575
|
+
* Listens the `beforeCopy` hook that allows processing the copied column headers so that the
|
576
|
+
* merged column headers do not propagate the value for each column but only once at the beginning
|
577
|
+
* of the column.
|
578
|
+
*
|
579
|
+
* @private
|
580
|
+
* @param {Array[]} data An array of arrays which contains data to copied.
|
581
|
+
* @param {object[]} copyableRanges An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`)
|
582
|
+
* which will copied.
|
583
|
+
* @param {{ columnHeadersCount: number }} copiedHeadersCount An object with keys that holds information with
|
584
|
+
* the number of copied headers.
|
585
|
+
*/
|
586
|
+
function _onBeforeCopy(data, copyableRanges, _ref2) {
|
726
587
|
let {
|
727
588
|
columnHeadersCount
|
728
589
|
} = _ref2;
|
@@ -751,7 +612,7 @@ function _onBeforeCopy2(data, copyableRanges, _ref2) {
|
|
751
612
|
if (zeroBasedColumnIndex === 0) {
|
752
613
|
continue; // eslint-disable-line no-continue
|
753
614
|
}
|
754
|
-
const isRoot = (_classPrivateFieldGet4 = _classPrivateFieldGet(
|
615
|
+
const isRoot = (_classPrivateFieldGet4 = _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(row, column)) === null || _classPrivateFieldGet4 === void 0 ? void 0 : _classPrivateFieldGet4.isRoot;
|
755
616
|
if (isRoot === false) {
|
756
617
|
data[zeroBasedColumnHeaderLevel][zeroBasedColumnIndex] = '';
|
757
618
|
}
|
@@ -759,7 +620,16 @@ function _onBeforeCopy2(data, copyableRanges, _ref2) {
|
|
759
620
|
}
|
760
621
|
}
|
761
622
|
}
|
762
|
-
|
623
|
+
/**
|
624
|
+
* Allows blocking the column selection that is controlled by the core Selection module.
|
625
|
+
*
|
626
|
+
* @param {MouseEvent} event Mouse event.
|
627
|
+
* @param {CellCoords} coords Cell coords object containing the visual coordinates of the clicked cell.
|
628
|
+
* @param {CellCoords} TD The table cell or header element.
|
629
|
+
* @param {object} controller An object with properties `row`, `column` and `cell`. Each property contains
|
630
|
+
* a boolean value that allows or disallows changing the selection for that particular area.
|
631
|
+
*/
|
632
|
+
function _onBeforeOnCellMouseDown(event, coords, TD, controller) {
|
763
633
|
const headerNodeData = this._getHeaderTreeNodeDataByCoords(coords);
|
764
634
|
if (headerNodeData) {
|
765
635
|
// Block the Selection module in controlling how the columns are selected. Pass the
|
@@ -767,13 +637,19 @@ function _onBeforeOnCellMouseDown2(event, coords, TD, controller) {
|
|
767
637
|
controller.column = true;
|
768
638
|
}
|
769
639
|
}
|
770
|
-
|
640
|
+
/**
|
641
|
+
* Allows to control how the column selection based on the coordinates and the nested headers is made.
|
642
|
+
*
|
643
|
+
* @param {MouseEvent} event Mouse event.
|
644
|
+
* @param {CellCoords} coords Cell coords object containing the visual coordinates of the clicked cell.
|
645
|
+
*/
|
646
|
+
function _onAfterOnCellMouseDown(event, coords) {
|
771
647
|
const headerNodeData = this._getHeaderTreeNodeDataByCoords(coords);
|
772
648
|
if (!headerNodeData) {
|
773
649
|
return;
|
774
650
|
}
|
775
|
-
_classPrivateFieldSet(
|
776
|
-
_classPrivateFieldSet(
|
651
|
+
_classPrivateFieldSet(_focusInitialCoords, this, coords.clone());
|
652
|
+
_classPrivateFieldSet(_isColumnsSelectionInProgress, this, true);
|
777
653
|
const {
|
778
654
|
selection
|
779
655
|
} = this.hot;
|
@@ -804,7 +680,16 @@ function _onAfterOnCellMouseDown2(event, coords) {
|
|
804
680
|
// The plugin takes control of how the columns are selected.
|
805
681
|
selection.selectColumns(...columnsToSelect);
|
806
682
|
}
|
807
|
-
|
683
|
+
/**
|
684
|
+
* Makes the header-selection properly select the nested headers.
|
685
|
+
*
|
686
|
+
* @param {MouseEvent} event Mouse event.
|
687
|
+
* @param {CellCoords} coords Cell coords object containing the visual coordinates of the clicked cell.
|
688
|
+
* @param {HTMLElement} TD The cell element.
|
689
|
+
* @param {object} controller An object with properties `row`, `column` and `cell`. Each property contains
|
690
|
+
* a boolean value that allows or disallows changing the selection for that particular area.
|
691
|
+
*/
|
692
|
+
function _onBeforeOnCellMouseOver(event, coords, TD, controller) {
|
808
693
|
if (!this.hot.view.isMouseDown()) {
|
809
694
|
return;
|
810
695
|
}
|
@@ -838,14 +723,21 @@ function _onBeforeOnCellMouseOver2(event, coords, TD, controller) {
|
|
838
723
|
}
|
839
724
|
this.hot.selection.selectColumns(...columnsToSelect);
|
840
725
|
}
|
841
|
-
|
842
|
-
|
726
|
+
/**
|
727
|
+
* Switches internal flag about selection progress to `false`.
|
728
|
+
*/
|
729
|
+
function _onBeforeOnCellMouseUp() {
|
730
|
+
_classPrivateFieldSet(_isColumnsSelectionInProgress, this, false);
|
843
731
|
}
|
844
|
-
|
732
|
+
/**
|
733
|
+
* The hook checks and ensures that the focus position that depends on the selected columns
|
734
|
+
* range is always positioned within the range.
|
735
|
+
*/
|
736
|
+
function _onBeforeSelectionHighlightSet() {
|
845
737
|
const {
|
846
738
|
navigableHeaders
|
847
739
|
} = this.hot.getSettings();
|
848
|
-
if (!this.hot.view.isMouseDown() || !_classPrivateFieldGet(
|
740
|
+
if (!this.hot.view.isMouseDown() || !_classPrivateFieldGet(_isColumnsSelectionInProgress, this) || !navigableHeaders) {
|
849
741
|
return;
|
850
742
|
}
|
851
743
|
const selectedRange = this.hot.getSelectedRangeLast();
|
@@ -854,15 +746,20 @@ function _onBeforeSelectionHighlightSet2() {
|
|
854
746
|
const {
|
855
747
|
columnIndex,
|
856
748
|
origColspan
|
857
|
-
} = _classPrivateFieldGet(
|
858
|
-
selectedRange.setHighlight(_classPrivateFieldGet(
|
749
|
+
} = _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(_classPrivateFieldGet(_focusInitialCoords, this).row, _classPrivateFieldGet(_focusInitialCoords, this).col);
|
750
|
+
selectedRange.setHighlight(_classPrivateFieldGet(_focusInitialCoords, this));
|
859
751
|
if (origColspan > selectedRange.getWidth() || columnIndex < columnStart || columnIndex + origColspan - 1 > columnEnd) {
|
860
|
-
const headerLevel = _classPrivateFieldGet(
|
752
|
+
const headerLevel = _classPrivateFieldGet(_stateManager, this).findTopMostEntireHeaderLevel(clamp(columnStart, columnIndex, columnIndex + origColspan - 1), clamp(columnEnd, columnIndex, columnIndex + origColspan - 1));
|
861
753
|
selectedRange.highlight.row = headerLevel;
|
862
754
|
selectedRange.highlight.col = selectedRange.from.col;
|
863
755
|
}
|
864
756
|
}
|
865
|
-
|
757
|
+
/**
|
758
|
+
* `modifyTransformStart` hook is called every time the keyboard navigation is used.
|
759
|
+
*
|
760
|
+
* @param {object} delta The transformation delta.
|
761
|
+
*/
|
762
|
+
function _onModifyTransformStart(delta) {
|
866
763
|
const {
|
867
764
|
highlight
|
868
765
|
} = this.hot.getSelectedRangeLast();
|
@@ -871,8 +768,8 @@ function _onModifyTransformStart2(delta) {
|
|
871
768
|
if (!isNestedHeadersRange) {
|
872
769
|
return;
|
873
770
|
}
|
874
|
-
const visualColumnIndexStart = _classPrivateFieldGet(
|
875
|
-
const visualColumnIndexEnd = _classPrivateFieldGet(
|
771
|
+
const visualColumnIndexStart = _classPrivateFieldGet(_stateManager, this).findLeftMostColumnIndex(nextCoords.row, nextCoords.col);
|
772
|
+
const visualColumnIndexEnd = _classPrivateFieldGet(_stateManager, this).findRightMostColumnIndex(nextCoords.row, nextCoords.col);
|
876
773
|
if (delta.col < 0) {
|
877
774
|
const nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexStart - 1 : visualColumnIndexEnd;
|
878
775
|
const notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(nextColumn, -1);
|
@@ -895,7 +792,14 @@ function _onModifyTransformStart2(delta) {
|
|
895
792
|
}
|
896
793
|
}
|
897
794
|
}
|
898
|
-
|
795
|
+
/**
|
796
|
+
* The hook observes the column selection from the Selection API and modifies the column range to
|
797
|
+
* ensure that the whole nested column will be covered.
|
798
|
+
*
|
799
|
+
* @param {CellCoords} from The coords object where the selection starts.
|
800
|
+
* @param {CellCoords} to The coords object where the selection ends.
|
801
|
+
*/
|
802
|
+
function _onBeforeSelectColumns(from, to) {
|
899
803
|
const headerLevel = from.row;
|
900
804
|
const startNodeData = this._getHeaderTreeNodeDataByCoords({
|
901
805
|
row: headerLevel,
|
@@ -923,18 +827,28 @@ function _onBeforeSelectColumns2(from, to) {
|
|
923
827
|
}
|
924
828
|
}
|
925
829
|
}
|
926
|
-
|
830
|
+
/**
|
831
|
+
* `afterGetColumnHeader` hook callback - prepares the header structure.
|
832
|
+
*
|
833
|
+
* @param {Array} renderersArray Array of renderers.
|
834
|
+
*/
|
835
|
+
function _onAfterGetColumnHeaderRenderers(renderersArray) {
|
927
836
|
renderersArray.length = 0;
|
928
|
-
for (let headerLayer = 0; headerLayer < _classPrivateFieldGet(
|
837
|
+
for (let headerLayer = 0; headerLayer < _classPrivateFieldGet(_stateManager, this).getLayersCount(); headerLayer++) {
|
929
838
|
renderersArray.push(this.headerRendererFactory(headerLayer));
|
930
839
|
}
|
931
840
|
}
|
932
|
-
|
933
|
-
|
841
|
+
/**
|
842
|
+
* Make the renderer render the first nested column in its entirety.
|
843
|
+
*
|
844
|
+
* @param {object} calc Viewport column calculator.
|
845
|
+
*/
|
846
|
+
function _onAfterViewportColumnCalculatorOverride(calc) {
|
847
|
+
const headerLayersCount = _classPrivateFieldGet(_stateManager, this).getLayersCount();
|
934
848
|
let newStartColumn = calc.startColumn;
|
935
849
|
let nonRenderable = !!headerLayersCount;
|
936
850
|
for (let headerLayer = 0; headerLayer < headerLayersCount; headerLayer++) {
|
937
|
-
const startColumn = _classPrivateFieldGet(
|
851
|
+
const startColumn = _classPrivateFieldGet(_stateManager, this).findLeftMostColumnIndex(headerLayer, calc.startColumn);
|
938
852
|
const renderedStartColumn = this.hot.columnIndexMapper.getRenderableFromVisualIndex(startColumn);
|
939
853
|
|
940
854
|
// If any of the headers for that column index is rendered, all of them should be rendered properly, see
|
@@ -953,31 +867,67 @@ function _onAfterViewportColumnCalculatorOverride2(calc) {
|
|
953
867
|
|
954
868
|
// If no headers for the provided column index are renderable, start rendering from the beginning of the upmost
|
955
869
|
// header for that position.
|
956
|
-
calc.startColumn = nonRenderable ? _classPrivateFieldGet(
|
870
|
+
calc.startColumn = nonRenderable ? _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(0, newStartColumn).columnIndex : newStartColumn;
|
957
871
|
}
|
958
|
-
|
872
|
+
/**
|
873
|
+
* `modifyColWidth` hook callback - returns width from cache, when is greater than incoming from hook.
|
874
|
+
*
|
875
|
+
* @param {number} width Width from hook.
|
876
|
+
* @param {number} column Visual index of an column.
|
877
|
+
* @returns {number}
|
878
|
+
*/
|
879
|
+
function _onModifyColWidth(width, column) {
|
959
880
|
const cachedWidth = this.ghostTable.getWidth(column);
|
960
881
|
return width > cachedWidth ? width : cachedWidth;
|
961
882
|
}
|
962
|
-
|
883
|
+
/**
|
884
|
+
* Listens the `modifyColumnHeaderValue` hook that overwrites the column headers values based on
|
885
|
+
* the internal state and settings of the plugin.
|
886
|
+
*
|
887
|
+
* @param {string} value The column header value.
|
888
|
+
* @param {number} visualColumnIndex The visual column index.
|
889
|
+
* @param {number} headerLevel The index of header level. The header level accepts positive (0 to N)
|
890
|
+
* and negative (-1 to -N) values. For positive values, 0 points to the
|
891
|
+
* top most header, and for negative direction, -1 points to the most bottom
|
892
|
+
* header (the header closest to the cells).
|
893
|
+
* @returns {string} Returns the column header value to update.
|
894
|
+
*/
|
895
|
+
function _onModifyColumnHeaderValue(value, visualColumnIndex, headerLevel) {
|
963
896
|
var _classPrivateFieldGet5;
|
964
897
|
const {
|
965
898
|
label
|
966
|
-
} = (_classPrivateFieldGet5 = _classPrivateFieldGet(
|
899
|
+
} = (_classPrivateFieldGet5 = _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(headerLevel, visualColumnIndex)) !== null && _classPrivateFieldGet5 !== void 0 ? _classPrivateFieldGet5 : {
|
967
900
|
label: ''
|
968
901
|
};
|
969
902
|
return label;
|
970
903
|
}
|
971
|
-
|
904
|
+
/**
|
905
|
+
* `modifyFocusedElement` hook callback.
|
906
|
+
*
|
907
|
+
* @param {number} row Row index.
|
908
|
+
* @param {number} column Column index.
|
909
|
+
* @returns {HTMLTableCellElement} The `TH` element to be focused.
|
910
|
+
*/
|
911
|
+
function _onModifyFocusedElement(row, column) {
|
972
912
|
if (row < 0) {
|
973
|
-
return this.hot.getCell(row, _classPrivateFieldGet(
|
913
|
+
return this.hot.getCell(row, _classPrivateFieldGet(_stateManager, this).findLeftMostColumnIndex(row, column), true);
|
974
914
|
}
|
975
915
|
}
|
976
|
-
|
916
|
+
/**
|
917
|
+
* Updates the plugin state after HoT initialization.
|
918
|
+
*/
|
919
|
+
function _onInit() {
|
977
920
|
// @TODO: Workaround for broken plugin initialization abstraction.
|
978
921
|
this.updatePlugin();
|
979
922
|
}
|
980
|
-
|
923
|
+
/**
|
924
|
+
* Updates the plugin state after new dataset load.
|
925
|
+
*
|
926
|
+
* @param {Array[]} sourceData Array of arrays or array of objects containing data.
|
927
|
+
* @param {boolean} initialLoad Flag that determines whether the data has been loaded
|
928
|
+
* during the initialization.
|
929
|
+
*/
|
930
|
+
function _onAfterLoadData(sourceData, initialLoad) {
|
981
931
|
if (!initialLoad) {
|
982
932
|
this.updatePlugin();
|
983
933
|
}
|