handsontable 15.0.0 → 15.1.0-next-dfdf994-20250206

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.
Files changed (168) hide show
  1. package/3rdparty/walkontable/src/index.js +2 -0
  2. package/3rdparty/walkontable/src/index.mjs +2 -1
  3. package/3rdparty/walkontable/src/overlays.js +2 -39
  4. package/3rdparty/walkontable/src/overlays.mjs +2 -39
  5. package/3rdparty/walkontable/src/renderer/_base.js +3 -4
  6. package/3rdparty/walkontable/src/renderer/_base.mjs +2 -2
  7. package/3rdparty/walkontable/src/renderer/cells.js +7 -11
  8. package/3rdparty/walkontable/src/renderer/cells.mjs +6 -9
  9. package/3rdparty/walkontable/src/renderer/colGroup.js +6 -7
  10. package/3rdparty/walkontable/src/renderer/colGroup.mjs +5 -5
  11. package/3rdparty/walkontable/src/renderer/columnHeaders.js +4 -5
  12. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +3 -3
  13. package/3rdparty/walkontable/src/renderer/index.js +18 -19
  14. package/3rdparty/walkontable/src/renderer/index.mjs +6 -6
  15. package/3rdparty/walkontable/src/renderer/rowHeaders.js +6 -7
  16. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +5 -5
  17. package/3rdparty/walkontable/src/renderer/rows.js +23 -11
  18. package/3rdparty/walkontable/src/renderer/rows.mjs +23 -10
  19. package/3rdparty/walkontable/src/renderer/table.js +1 -1
  20. package/3rdparty/walkontable/src/renderer/table.mjs +1 -1
  21. package/3rdparty/walkontable/src/selection/border/border.js +10 -2
  22. package/3rdparty/walkontable/src/selection/border/border.mjs +10 -2
  23. package/3rdparty/walkontable/src/utils/nodesPool.js +21 -6
  24. package/3rdparty/walkontable/src/utils/nodesPool.mjs +21 -6
  25. package/3rdparty/walkontable/src/utils/orderView/index.js +4 -5
  26. package/3rdparty/walkontable/src/utils/orderView/index.mjs +2 -2
  27. package/3rdparty/walkontable/src/utils/orderView/sharedView.js +3 -4
  28. package/3rdparty/walkontable/src/utils/orderView/sharedView.mjs +2 -2
  29. package/3rdparty/walkontable/src/utils/orderView/view.js +60 -76
  30. package/3rdparty/walkontable/src/utils/orderView/view.mjs +59 -74
  31. package/3rdparty/walkontable/src/utils/orderView/viewDiffer/index.js +138 -0
  32. package/3rdparty/walkontable/src/utils/orderView/viewDiffer/index.mjs +135 -0
  33. package/3rdparty/walkontable/src/utils/orderView/viewDiffer/viewOrder.js +72 -0
  34. package/3rdparty/walkontable/src/utils/orderView/viewDiffer/viewOrder.mjs +68 -0
  35. package/3rdparty/walkontable/src/utils/orderView/viewSize.js +1 -1
  36. package/3rdparty/walkontable/src/utils/orderView/viewSize.mjs +1 -1
  37. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.js +4 -5
  38. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.mjs +3 -3
  39. package/CHANGELOG.md +54 -0
  40. package/README.md +3 -3
  41. package/base.js +2 -2
  42. package/base.mjs +2 -2
  43. package/cellTypes/dropdownType/dropdownType.js +4 -2
  44. package/cellTypes/dropdownType/dropdownType.mjs +4 -2
  45. package/core.js +39 -38
  46. package/core.mjs +36 -35
  47. package/dataMap/dataMap.js +8 -0
  48. package/dataMap/dataMap.mjs +8 -0
  49. package/dataMap/dataSource.js +4 -0
  50. package/dataMap/dataSource.mjs +4 -0
  51. package/dataMap/metaManager/lazyFactoryMap.js +8 -5
  52. package/dataMap/metaManager/lazyFactoryMap.mjs +8 -5
  53. package/dataMap/metaManager/metaSchema.js +24 -9
  54. package/dataMap/metaManager/metaSchema.mjs +24 -9
  55. package/dist/handsontable.css +6 -2
  56. package/dist/handsontable.full.css +6 -2
  57. package/dist/handsontable.full.js +8020 -6915
  58. package/dist/handsontable.full.min.css +3 -3
  59. package/dist/handsontable.full.min.js +530 -528
  60. package/dist/handsontable.js +3827 -2902
  61. package/dist/handsontable.min.css +3 -3
  62. package/dist/handsontable.min.js +35 -33
  63. package/editors/autocompleteEditor/autocompleteEditor.js +1 -3
  64. package/editors/autocompleteEditor/autocompleteEditor.mjs +1 -3
  65. package/editors/dateEditor/dateEditor.js +4 -0
  66. package/editors/dateEditor/dateEditor.mjs +4 -0
  67. package/editors/dropdownEditor/dropdownEditor.js +3 -16
  68. package/editors/dropdownEditor/dropdownEditor.mjs +3 -16
  69. package/editors/handsontableEditor/handsontableEditor.js +4 -4
  70. package/editors/handsontableEditor/handsontableEditor.mjs +4 -4
  71. package/focusManager.js +1 -1
  72. package/focusManager.mjs +1 -1
  73. package/helpers/dom/element.d.ts +0 -1
  74. package/helpers/mixed.js +2 -2
  75. package/helpers/mixed.mjs +2 -2
  76. package/helpers/object.js +4 -0
  77. package/helpers/object.mjs +4 -0
  78. package/package.json +2 -2
  79. package/plugins/base/base.js +0 -7
  80. package/plugins/base/base.mjs +0 -7
  81. package/plugins/comments/comments.js +12 -3
  82. package/plugins/comments/comments.mjs +12 -3
  83. package/plugins/contextMenu/contextMenu.js +2 -7
  84. package/plugins/contextMenu/contextMenu.mjs +2 -7
  85. package/plugins/contextMenu/menu/menu.js +2 -2
  86. package/plugins/contextMenu/menu/menu.mjs +2 -2
  87. package/plugins/contextMenu/predefinedItems/clearColumn.js +15 -4
  88. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +15 -4
  89. package/plugins/filters/conditionCollection.js +8 -7
  90. package/plugins/filters/conditionCollection.mjs +8 -7
  91. package/plugins/filters/filters.js +26 -16
  92. package/plugins/filters/filters.mjs +26 -16
  93. package/plugins/filters/utils.js +7 -24
  94. package/plugins/filters/utils.mjs +7 -24
  95. package/plugins/hiddenColumns/hiddenColumns.js +1 -3
  96. package/plugins/hiddenColumns/hiddenColumns.mjs +1 -3
  97. package/plugins/hiddenRows/hiddenRows.js +1 -3
  98. package/plugins/hiddenRows/hiddenRows.mjs +1 -3
  99. package/plugins/manualRowMove/manualRowMove.js +1 -1
  100. package/plugins/manualRowMove/manualRowMove.mjs +1 -1
  101. package/plugins/mergeCells/calculations/autofill.js +60 -44
  102. package/plugins/mergeCells/calculations/autofill.mjs +60 -44
  103. package/plugins/mergeCells/cellsCollection.js +25 -8
  104. package/plugins/mergeCells/cellsCollection.mjs +25 -8
  105. package/plugins/mergeCells/mergeCells.js +15 -16
  106. package/plugins/mergeCells/mergeCells.mjs +15 -16
  107. package/plugins/nestedHeaders/nestedHeaders.js +6 -1
  108. package/plugins/nestedHeaders/nestedHeaders.mjs +6 -1
  109. package/plugins/nestedHeaders/stateManager/index.js +1 -2
  110. package/plugins/nestedHeaders/stateManager/index.mjs +1 -2
  111. package/plugins/nestedHeaders/utils/ghostTable.js +4 -0
  112. package/plugins/nestedHeaders/utils/ghostTable.mjs +4 -0
  113. package/plugins/nestedRows/utils/rowMoveController.js +1 -6
  114. package/plugins/nestedRows/utils/rowMoveController.mjs +1 -6
  115. package/plugins/undoRedo/actions/_base.js +19 -0
  116. package/plugins/undoRedo/actions/_base.mjs +15 -0
  117. package/plugins/undoRedo/actions/cellAlignment.js +85 -0
  118. package/plugins/undoRedo/actions/cellAlignment.mjs +81 -0
  119. package/plugins/undoRedo/actions/columnMove.js +84 -0
  120. package/plugins/undoRedo/actions/columnMove.mjs +80 -0
  121. package/plugins/undoRedo/actions/columnSort.js +73 -0
  122. package/plugins/undoRedo/actions/columnSort.mjs +69 -0
  123. package/plugins/undoRedo/actions/createColumn.js +60 -0
  124. package/plugins/undoRedo/actions/createColumn.mjs +56 -0
  125. package/plugins/undoRedo/actions/createRow.js +65 -0
  126. package/plugins/undoRedo/actions/createRow.mjs +61 -0
  127. package/plugins/undoRedo/actions/dataChange.js +123 -0
  128. package/plugins/undoRedo/actions/dataChange.mjs +119 -0
  129. package/plugins/undoRedo/actions/filters.js +66 -0
  130. package/plugins/undoRedo/actions/filters.mjs +62 -0
  131. package/plugins/undoRedo/actions/index.js +27 -0
  132. package/plugins/undoRedo/actions/index.mjs +23 -0
  133. package/plugins/undoRedo/actions/mergeCells.js +63 -0
  134. package/plugins/undoRedo/actions/mergeCells.mjs +59 -0
  135. package/plugins/undoRedo/actions/removeColumn.js +176 -0
  136. package/plugins/undoRedo/actions/removeColumn.mjs +172 -0
  137. package/plugins/undoRedo/actions/removeRow.js +119 -0
  138. package/plugins/undoRedo/actions/removeRow.mjs +115 -0
  139. package/plugins/undoRedo/actions/rowMove.js +84 -0
  140. package/plugins/undoRedo/actions/rowMove.mjs +80 -0
  141. package/plugins/undoRedo/actions/unmergeCells.js +56 -0
  142. package/plugins/undoRedo/actions/unmergeCells.mjs +52 -0
  143. package/plugins/undoRedo/index.js +3 -4
  144. package/plugins/undoRedo/index.mjs +1 -2
  145. package/plugins/undoRedo/undoRedo.js +277 -879
  146. package/plugins/undoRedo/undoRedo.mjs +277 -880
  147. package/plugins/undoRedo/utils.js +37 -0
  148. package/plugins/undoRedo/utils.mjs +33 -0
  149. package/renderers/checkboxRenderer/checkboxRenderer.js +8 -1
  150. package/renderers/checkboxRenderer/checkboxRenderer.mjs +8 -1
  151. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +1 -0
  152. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +1 -0
  153. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +2 -1
  154. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +2 -1
  155. package/styles/handsontable.css +75 -103
  156. package/styles/handsontable.min.css +3 -3
  157. package/styles/ht-theme-horizon.css +2 -2
  158. package/styles/ht-theme-horizon.min.css +2 -2
  159. package/styles/ht-theme-main.css +2 -2
  160. package/styles/ht-theme-main.min.css +2 -2
  161. package/tableView.js +17 -1
  162. package/tableView.mjs +17 -1
  163. package/utils/autoResize.js +1 -1
  164. package/utils/autoResize.mjs +1 -1
  165. package/utils/parseTable.js +1 -1
  166. package/utils/parseTable.mjs +1 -1
  167. package/validators/dateValidator/dateValidator.js +1 -1
  168. package/validators/dateValidator/dateValidator.mjs +1 -1
@@ -27,6 +27,8 @@ exports.Renderer = Renderer;
27
27
  var _orderView = require("./utils/orderView");
28
28
  exports.OrderView = _orderView.OrderView;
29
29
  exports.SharedOrderView = _orderView.SharedOrderView;
30
+ var _nodesPool = require("./utils/nodesPool");
31
+ exports.NodesPool = _nodesPool.NodesPool;
30
32
  var _eventManager = require("../../../eventManager");
31
33
  exports.getListenersCounter = _eventManager.getListenersCounter;
32
34
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
@@ -5,5 +5,6 @@ import Walkontable from "./facade/core.mjs";
5
5
  import { Selection, ACTIVE_HEADER_TYPE, AREA_TYPE, FOCUS_TYPE, FILL_TYPE, HEADER_TYPE, ROW_TYPE, COLUMN_TYPE, CUSTOM_SELECTION_TYPE } from "./selection/index.mjs";
6
6
  import * as Renderer from "./renderer/index.mjs";
7
7
  import { OrderView, SharedOrderView } from "./utils/orderView/index.mjs";
8
+ import { NodesPool } from "./utils/nodesPool.mjs";
8
9
  import { getListenersCounter } from "../../../eventManager.mjs";
9
- export { DEFAULT_COLUMN_WIDTH, ViewportColumnsCalculator, ViewportRowsCalculator, CellCoords, CellRange, Walkontable as default, Walkontable as Core, Selection, ACTIVE_HEADER_TYPE as HIGHLIGHT_ACTIVE_HEADER_TYPE, AREA_TYPE as HIGHLIGHT_AREA_TYPE, FOCUS_TYPE as HIGHLIGHT_FOCUS_TYPE, FILL_TYPE as HIGHLIGHT_FILL_TYPE, HEADER_TYPE as HIGHLIGHT_HEADER_TYPE, ROW_TYPE as HIGHLIGHT_ROW_TYPE, COLUMN_TYPE as HIGHLIGHT_COLUMN_TYPE, CUSTOM_SELECTION_TYPE as HIGHLIGHT_CUSTOM_SELECTION_TYPE, Renderer, OrderView, SharedOrderView, getListenersCounter };
10
+ export { DEFAULT_COLUMN_WIDTH, ViewportColumnsCalculator, ViewportRowsCalculator, CellCoords, CellRange, Walkontable as default, Walkontable as Core, Selection, ACTIVE_HEADER_TYPE as HIGHLIGHT_ACTIVE_HEADER_TYPE, AREA_TYPE as HIGHLIGHT_AREA_TYPE, FOCUS_TYPE as HIGHLIGHT_FOCUS_TYPE, FILL_TYPE as HIGHLIGHT_FILL_TYPE, HEADER_TYPE as HIGHLIGHT_HEADER_TYPE, ROW_TYPE as HIGHLIGHT_ROW_TYPE, COLUMN_TYPE as HIGHLIGHT_COLUMN_TYPE, CUSTOM_SELECTION_TYPE as HIGHLIGHT_CUSTOM_SELECTION_TYPE, Renderer, NodesPool, OrderView, SharedOrderView, getListenersCounter };
@@ -320,13 +320,7 @@ class Overlays {
320
320
  }
321
321
  const overlays = [this.topOverlay, this.bottomOverlay, this.inlineStartOverlay, this.topInlineStartCornerOverlay, this.bottomInlineStartCornerOverlay];
322
322
  overlays.forEach(overlay => {
323
- if (overlay && overlay.needFullRender) {
324
- const {
325
- holder
326
- } = overlay.clone.wtTable; // todo rethink, maybe: overlay.getHolder()
327
-
328
- this.eventManager.addEventListener(holder, 'wheel', event => this.onCloneWheel(event, preventWheel), wheelEventOptions);
329
- }
323
+ this.eventManager.addEventListener(overlay.clone.wtTable.holder, 'wheel', event => this.onCloneWheel(event, preventWheel), wheelEventOptions);
330
324
  });
331
325
  let resizeTimeout;
332
326
  this.eventManager.addEventListener(rootWindow, 'resize', () => {
@@ -344,13 +338,6 @@ class Overlays {
344
338
  }
345
339
  }
346
340
 
347
- /**
348
- * Deregister all previously registered listeners.
349
- */
350
- deregisterListeners() {
351
- this.eventManager.clearEvents(true);
352
- }
353
-
354
341
  /**
355
342
  * Scroll listener.
356
343
  *
@@ -522,37 +509,13 @@ class Overlays {
522
509
  _classPrivateFieldSet(_hasRenderingStateChanged, this, false);
523
510
  }
524
511
 
525
- /**
526
- * Update the main scrollable elements for all the overlays.
527
- */
528
- updateMainScrollableElements() {
529
- this.deregisterListeners();
530
- this.inlineStartOverlay.updateMainScrollableElement();
531
- this.topOverlay.updateMainScrollableElement();
532
- if (this.bottomOverlay.needFullRender) {
533
- this.bottomOverlay.updateMainScrollableElement();
534
- }
535
- const {
536
- wtTable
537
- } = this;
538
- const {
539
- rootWindow
540
- } = this.domBindings;
541
- if (rootWindow.getComputedStyle(wtTable.wtRootElement.parentNode).getPropertyValue('overflow') === 'hidden') {
542
- this.scrollableElement = wtTable.holder;
543
- } else {
544
- this.scrollableElement = (0, _element.getScrollableElement)(wtTable.TABLE);
545
- }
546
- this.registerListeners();
547
- }
548
-
549
512
  /**
550
513
  *
551
514
  */
552
515
  destroy() {
553
516
  this.resizeObserver.disconnect();
554
517
  this.eventManager.destroy();
555
- // todo, probably all below `destory` calls has no sense. To analyze
518
+ // todo, probably all below `destroy` calls has no sense. To analyze
556
519
  this.topOverlay.destroy();
557
520
  if (this.bottomOverlay.clone) {
558
521
  this.bottomOverlay.destroy();
@@ -317,13 +317,7 @@ class Overlays {
317
317
  }
318
318
  const overlays = [this.topOverlay, this.bottomOverlay, this.inlineStartOverlay, this.topInlineStartCornerOverlay, this.bottomInlineStartCornerOverlay];
319
319
  overlays.forEach(overlay => {
320
- if (overlay && overlay.needFullRender) {
321
- const {
322
- holder
323
- } = overlay.clone.wtTable; // todo rethink, maybe: overlay.getHolder()
324
-
325
- this.eventManager.addEventListener(holder, 'wheel', event => this.onCloneWheel(event, preventWheel), wheelEventOptions);
326
- }
320
+ this.eventManager.addEventListener(overlay.clone.wtTable.holder, 'wheel', event => this.onCloneWheel(event, preventWheel), wheelEventOptions);
327
321
  });
328
322
  let resizeTimeout;
329
323
  this.eventManager.addEventListener(rootWindow, 'resize', () => {
@@ -341,13 +335,6 @@ class Overlays {
341
335
  }
342
336
  }
343
337
 
344
- /**
345
- * Deregister all previously registered listeners.
346
- */
347
- deregisterListeners() {
348
- this.eventManager.clearEvents(true);
349
- }
350
-
351
338
  /**
352
339
  * Scroll listener.
353
340
  *
@@ -519,37 +506,13 @@ class Overlays {
519
506
  _classPrivateFieldSet(_hasRenderingStateChanged, this, false);
520
507
  }
521
508
 
522
- /**
523
- * Update the main scrollable elements for all the overlays.
524
- */
525
- updateMainScrollableElements() {
526
- this.deregisterListeners();
527
- this.inlineStartOverlay.updateMainScrollableElement();
528
- this.topOverlay.updateMainScrollableElement();
529
- if (this.bottomOverlay.needFullRender) {
530
- this.bottomOverlay.updateMainScrollableElement();
531
- }
532
- const {
533
- wtTable
534
- } = this;
535
- const {
536
- rootWindow
537
- } = this.domBindings;
538
- if (rootWindow.getComputedStyle(wtTable.wtRootElement.parentNode).getPropertyValue('overflow') === 'hidden') {
539
- this.scrollableElement = wtTable.holder;
540
- } else {
541
- this.scrollableElement = getScrollableElement(wtTable.TABLE);
542
- }
543
- this.registerListeners();
544
- }
545
-
546
509
  /**
547
510
  *
548
511
  */
549
512
  destroy() {
550
513
  this.resizeObserver.disconnect();
551
514
  this.eventManager.destroy();
552
- // todo, probably all below `destory` calls has no sense. To analyze
515
+ // todo, probably all below `destroy` calls has no sense. To analyze
553
516
  this.topOverlay.destroy();
554
517
  if (this.bottomOverlay.clone) {
555
518
  this.bottomOverlay.destroy();
@@ -2,8 +2,7 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  require("core-js/modules/es.error.cause.js");
5
- var _nodesPool = _interopRequireDefault(require("./../utils/nodesPool"));
6
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
5
+ var _nodesPool = require("../utils/nodesPool");
7
6
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
8
7
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
9
8
  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); }
@@ -47,7 +46,7 @@ class BaseRenderer {
47
46
  * @type {number}
48
47
  */
49
48
  _defineProperty(this, "renderedNodes", 0);
50
- this.nodesPool = typeof nodeType === 'string' ? new _nodesPool.default(nodeType) : null;
49
+ this.nodesPool = typeof nodeType === 'string' ? new _nodesPool.NodesPool(nodeType) : null;
51
50
  this.nodeType = nodeType;
52
51
  this.rootNode = rootNode;
53
52
  }
@@ -74,4 +73,4 @@ class BaseRenderer {
74
73
  */
75
74
  render() {}
76
75
  }
77
- exports.default = BaseRenderer;
76
+ exports.BaseRenderer = BaseRenderer;
@@ -2,13 +2,13 @@ import "core-js/modules/es.error.cause.js";
2
2
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
3
3
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
4
4
  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); }
5
- import NodesPool from "./../utils/nodesPool.mjs";
5
+ import { NodesPool } from "../utils/nodesPool.mjs";
6
6
  /**
7
7
  * Base renderer class, abstract logic for specialized renderers.
8
8
  *
9
9
  * @class BaseRenderer
10
10
  */
11
- export default class BaseRenderer {
11
+ export class BaseRenderer {
12
12
  constructor(nodeType, rootNode) {
13
13
  /**
14
14
  * Factory for newly created DOM elements.
@@ -2,11 +2,10 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  require("core-js/modules/es.error.cause.js");
5
- var _element = require("./../../../../helpers/dom/element");
6
- var _orderView = require("./../utils/orderView");
7
- var _base = _interopRequireDefault(require("./_base"));
5
+ var _element = require("../../../../helpers/dom/element");
6
+ var _orderView = require("../utils/orderView");
7
+ var _base = require("./_base");
8
8
  var _a11y = require("../../../../helpers/a11y");
9
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
9
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
11
10
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
12
11
  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); }
@@ -23,7 +22,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
23
22
  *
24
23
  * @class {CellsRenderer}
25
24
  */
26
- class CellsRenderer extends _base.default {
25
+ class CellsRenderer extends _base.BaseRenderer {
27
26
  constructor() {
28
27
  super('TD');
29
28
  /**
@@ -73,14 +72,11 @@ class CellsRenderer extends _base.default {
73
72
  this.sourceRowIndex = sourceRowIndex;
74
73
  const orderView = this.obtainOrderView(TR);
75
74
  const rowHeadersView = rowHeaders.obtainOrderView(TR);
76
-
77
- // @TODO(perf-tip): For cells other than "visual 0" generating diff leads/commands can be skipped. New order view
78
- // should share state between next orderViews.
79
- orderView.prependView(rowHeadersView).setSize(columnsToRender).setOffset(this.table.renderedColumnToSource(0)).start();
75
+ orderView.prependView(rowHeadersView).setSize(columnsToRender).setOffset(0).start();
80
76
  for (let visibleColumnIndex = 0; visibleColumnIndex < columnsToRender; visibleColumnIndex++) {
81
77
  orderView.render();
82
- const TD = orderView.getCurrentNode();
83
78
  const sourceColumnIndex = this.table.renderedColumnToSource(visibleColumnIndex);
79
+ const TD = orderView.getCurrentNode();
84
80
  if (!(0, _element.hasClass)(TD, 'hide')) {
85
81
  // Workaround for hidden columns plugin
86
82
  TD.className = '';
@@ -102,4 +98,4 @@ class CellsRenderer extends _base.default {
102
98
  }
103
99
  }
104
100
  }
105
- exports.default = CellsRenderer;
101
+ exports.CellsRenderer = CellsRenderer;
@@ -2,9 +2,9 @@ import "core-js/modules/es.error.cause.js";
2
2
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
3
3
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
4
4
  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); }
5
- import { hasClass, removeAttribute, setAttribute } from "./../../../../helpers/dom/element.mjs";
6
- import { SharedOrderView } from "./../utils/orderView/index.mjs";
7
- import BaseRenderer from "./_base.mjs";
5
+ import { hasClass, removeAttribute, setAttribute } from "../../../../helpers/dom/element.mjs";
6
+ import { SharedOrderView } from "../utils/orderView/index.mjs";
7
+ import { BaseRenderer } from "./_base.mjs";
8
8
  import { A11Y_COLINDEX, A11Y_GRIDCELL, A11Y_TABINDEX } from "../../../../helpers/a11y.mjs";
9
9
  /**
10
10
  * Cell renderer responsible for managing (inserting, tracking, rendering) TD elements.
@@ -19,7 +19,7 @@ import { A11Y_COLINDEX, A11Y_GRIDCELL, A11Y_TABINDEX } from "../../../../helpers
19
19
  *
20
20
  * @class {CellsRenderer}
21
21
  */
22
- export default class CellsRenderer extends BaseRenderer {
22
+ export class CellsRenderer extends BaseRenderer {
23
23
  constructor() {
24
24
  super('TD');
25
25
  /**
@@ -69,14 +69,11 @@ export default class CellsRenderer extends BaseRenderer {
69
69
  this.sourceRowIndex = sourceRowIndex;
70
70
  const orderView = this.obtainOrderView(TR);
71
71
  const rowHeadersView = rowHeaders.obtainOrderView(TR);
72
-
73
- // @TODO(perf-tip): For cells other than "visual 0" generating diff leads/commands can be skipped. New order view
74
- // should share state between next orderViews.
75
- orderView.prependView(rowHeadersView).setSize(columnsToRender).setOffset(this.table.renderedColumnToSource(0)).start();
72
+ orderView.prependView(rowHeadersView).setSize(columnsToRender).setOffset(0).start();
76
73
  for (let visibleColumnIndex = 0; visibleColumnIndex < columnsToRender; visibleColumnIndex++) {
77
74
  orderView.render();
78
- const TD = orderView.getCurrentNode();
79
75
  const sourceColumnIndex = this.table.renderedColumnToSource(visibleColumnIndex);
76
+ const TD = orderView.getCurrentNode();
80
77
  if (!hasClass(TD, 'hide')) {
81
78
  // Workaround for hidden columns plugin
82
79
  TD.className = '';
@@ -1,11 +1,10 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- var _base = _interopRequireDefault(require("./_base"));
5
- var _console = require("./../../../../helpers/console");
6
- var _templateLiteralTag = require("./../../../../helpers/templateLiteralTag");
7
- var _element = require("./../../../../helpers/dom/element");
8
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
4
+ var _base = require("./_base");
5
+ var _console = require("../../../../helpers/console");
6
+ var _templateLiteralTag = require("../../../../helpers/templateLiteralTag");
7
+ var _element = require("../../../../helpers/dom/element");
9
8
  let performanceWarningAppeared = false;
10
9
 
11
10
  /**
@@ -20,7 +19,7 @@ let performanceWarningAppeared = false;
20
19
  *
21
20
  * @class {ColGroupRenderer}
22
21
  */
23
- class ColGroupRenderer extends _base.default {
22
+ class ColGroupRenderer extends _base.BaseRenderer {
24
23
  constructor(rootNode) {
25
24
  super(null, rootNode); // NodePool is not implemented for this renderer yet
26
25
  }
@@ -79,4 +78,4 @@ class ColGroupRenderer extends _base.default {
79
78
  }
80
79
  }
81
80
  }
82
- exports.default = ColGroupRenderer;
81
+ exports.ColGroupRenderer = ColGroupRenderer;
@@ -1,7 +1,7 @@
1
- import BaseRenderer from "./_base.mjs";
2
- import { warn } from "./../../../../helpers/console.mjs";
3
- import { toSingleLine } from "./../../../../helpers/templateLiteralTag.mjs";
4
- import { addClass } from "./../../../../helpers/dom/element.mjs";
1
+ import { BaseRenderer } from "./_base.mjs";
2
+ import { warn } from "../../../../helpers/console.mjs";
3
+ import { toSingleLine } from "../../../../helpers/templateLiteralTag.mjs";
4
+ import { addClass } from "../../../../helpers/dom/element.mjs";
5
5
  let performanceWarningAppeared = false;
6
6
 
7
7
  /**
@@ -16,7 +16,7 @@ let performanceWarningAppeared = false;
16
16
  *
17
17
  * @class {ColGroupRenderer}
18
18
  */
19
- export default class ColGroupRenderer extends BaseRenderer {
19
+ export class ColGroupRenderer extends BaseRenderer {
20
20
  constructor(rootNode) {
21
21
  super(null, rootNode); // NodePool is not implemented for this renderer yet
22
22
  }
@@ -1,10 +1,9 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- var _element = require("./../../../../helpers/dom/element");
5
- var _base = _interopRequireDefault(require("./_base"));
4
+ var _element = require("../../../../helpers/dom/element");
5
+ var _base = require("./_base");
6
6
  var _a11y = require("../../../../helpers/a11y");
7
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
8
7
  /**
9
8
  * Column headers renderer responsible for managing (inserting, tracking, rendering) TR and TH elements.
10
9
  *
@@ -17,7 +16,7 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
17
16
  *
18
17
  * @class {ColumnHeadersRenderer}
19
18
  */
20
- class ColumnHeadersRenderer extends _base.default {
19
+ class ColumnHeadersRenderer extends _base.BaseRenderer {
21
20
  constructor(rootNode) {
22
21
  super(null, rootNode); // NodePool is not implemented for this renderer yet
23
22
  }
@@ -103,4 +102,4 @@ class ColumnHeadersRenderer extends _base.default {
103
102
  }
104
103
  }
105
104
  }
106
- exports.default = ColumnHeadersRenderer;
105
+ exports.ColumnHeadersRenderer = ColumnHeadersRenderer;
@@ -1,5 +1,5 @@
1
- import { empty, setAttribute, removeAttribute } from "./../../../../helpers/dom/element.mjs";
2
- import BaseRenderer from "./_base.mjs";
1
+ import { empty, setAttribute, removeAttribute } from "../../../../helpers/dom/element.mjs";
2
+ import { BaseRenderer } from "./_base.mjs";
3
3
  import { A11Y_COLINDEX, A11Y_COLUMNHEADER, A11Y_ROW, A11Y_ROWGROUP, A11Y_ROWINDEX, A11Y_SCOPE_COL, A11Y_TABINDEX } from "../../../../helpers/a11y.mjs";
4
4
  /**
5
5
  * Column headers renderer responsible for managing (inserting, tracking, rendering) TR and TH elements.
@@ -13,7 +13,7 @@ import { A11Y_COLINDEX, A11Y_COLUMNHEADER, A11Y_ROW, A11Y_ROWGROUP, A11Y_ROWINDE
13
13
  *
14
14
  * @class {ColumnHeadersRenderer}
15
15
  */
16
- export default class ColumnHeadersRenderer extends BaseRenderer {
16
+ export class ColumnHeadersRenderer extends BaseRenderer {
17
17
  constructor(rootNode) {
18
18
  super(null, rootNode); // NodePool is not implemented for this renderer yet
19
19
  }
@@ -1,19 +1,18 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- var _rowHeaders = _interopRequireDefault(require("./rowHeaders"));
5
- exports.RowHeadersRenderer = _rowHeaders.default;
6
- var _columnHeaders = _interopRequireDefault(require("./columnHeaders"));
7
- exports.ColumnHeadersRenderer = _columnHeaders.default;
8
- var _colGroup = _interopRequireDefault(require("./colGroup"));
9
- exports.ColGroupRenderer = _colGroup.default;
10
- var _rows = _interopRequireDefault(require("./rows"));
11
- exports.RowsRenderer = _rows.default;
12
- var _cells = _interopRequireDefault(require("./cells"));
13
- exports.CellsRenderer = _cells.default;
14
- var _table = _interopRequireDefault(require("./table"));
15
- exports.TableRenderer = _table.default;
16
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
4
+ var _rowHeaders = require("./rowHeaders");
5
+ exports.RowHeadersRenderer = _rowHeaders.RowHeadersRenderer;
6
+ var _columnHeaders = require("./columnHeaders");
7
+ exports.ColumnHeadersRenderer = _columnHeaders.ColumnHeadersRenderer;
8
+ var _colGroup = require("./colGroup");
9
+ exports.ColGroupRenderer = _colGroup.ColGroupRenderer;
10
+ var _rows = require("./rows");
11
+ exports.RowsRenderer = _rows.RowsRenderer;
12
+ var _cells = require("./cells");
13
+ exports.CellsRenderer = _cells.CellsRenderer;
14
+ var _table = require("./table");
15
+ exports.TableRenderer = _table.TableRenderer;
17
16
  /**
18
17
  * Content renderer.
19
18
  *
@@ -36,16 +35,16 @@ class Renderer {
36
35
  *
37
36
  * @type {TableRenderer}
38
37
  */
39
- this.renderer = new _table.default(TABLE, {
38
+ this.renderer = new _table.TableRenderer(TABLE, {
40
39
  cellRenderer,
41
40
  stylesHandler
42
41
  });
43
42
  this.renderer.setRenderers({
44
- rowHeaders: new _rowHeaders.default(),
45
- columnHeaders: new _columnHeaders.default(THEAD),
46
- colGroup: new _colGroup.default(COLGROUP),
47
- rows: new _rows.default(TBODY),
48
- cells: new _cells.default()
43
+ rowHeaders: new _rowHeaders.RowHeadersRenderer(),
44
+ columnHeaders: new _columnHeaders.ColumnHeadersRenderer(THEAD),
45
+ colGroup: new _colGroup.ColGroupRenderer(COLGROUP),
46
+ rows: new _rows.RowsRenderer(TBODY),
47
+ cells: new _cells.CellsRenderer()
49
48
  });
50
49
  this.renderer.setAxisUtils(rowUtils, columnUtils);
51
50
  }
@@ -1,9 +1,9 @@
1
- import RowHeadersRenderer from "./rowHeaders.mjs";
2
- import ColumnHeadersRenderer from "./columnHeaders.mjs";
3
- import ColGroupRenderer from "./colGroup.mjs";
4
- import RowsRenderer from "./rows.mjs";
5
- import CellsRenderer from "./cells.mjs";
6
- import TableRenderer from "./table.mjs";
1
+ import { RowHeadersRenderer } from "./rowHeaders.mjs";
2
+ import { ColumnHeadersRenderer } from "./columnHeaders.mjs";
3
+ import { ColGroupRenderer } from "./colGroup.mjs";
4
+ import { RowsRenderer } from "./rows.mjs";
5
+ import { CellsRenderer } from "./cells.mjs";
6
+ import { TableRenderer } from "./table.mjs";
7
7
  /**
8
8
  * Content renderer.
9
9
  *
@@ -2,11 +2,10 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  require("core-js/modules/es.error.cause.js");
5
- var _orderView = require("./../utils/orderView");
6
- var _base = _interopRequireDefault(require("./_base"));
5
+ var _orderView = require("../utils/orderView");
6
+ var _base = require("./_base");
7
7
  var _element = require("../../../../helpers/dom/element");
8
8
  var _a11y = require("../../../../helpers/a11y");
9
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
9
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
11
10
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
12
11
  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); }
@@ -23,7 +22,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
23
22
  *
24
23
  * @class {CellsRenderer}
25
24
  */
26
- class RowHeadersRenderer extends _base.default {
25
+ class RowHeadersRenderer extends _base.BaseRenderer {
27
26
  constructor() {
28
27
  super('TH');
29
28
  /**
@@ -51,7 +50,7 @@ class RowHeadersRenderer extends _base.default {
51
50
  if (this.orderViews.has(rootNode)) {
52
51
  orderView = this.orderViews.get(rootNode);
53
52
  } else {
54
- orderView = new _orderView.SharedOrderView(rootNode, sourceColumnIndex => this.nodesPool.obtain(this.sourceRowIndex, sourceColumnIndex), this.nodeType);
53
+ orderView = new _orderView.SharedOrderView(rootNode, sourceColumnIndex => this.nodesPool.obtain(this.sourceRowIndex, sourceColumnIndex));
55
54
  this.orderViews.set(rootNode, orderView);
56
55
  }
57
56
  return orderView;
@@ -74,7 +73,7 @@ class RowHeadersRenderer extends _base.default {
74
73
  this.sourceRowIndex = sourceRowIndex;
75
74
  const orderView = this.obtainOrderView(TR);
76
75
  const cellsView = cells.obtainOrderView(TR);
77
- orderView.appendView(cellsView).setSize(rowHeadersCount).setOffset(this.table.renderedColumnToSource(0)).start();
76
+ orderView.appendView(cellsView).setSize(rowHeadersCount).setOffset(0).start();
78
77
  for (let visibleColumnIndex = 0; visibleColumnIndex < rowHeadersCount; visibleColumnIndex++) {
79
78
  orderView.render();
80
79
  const TH = orderView.getCurrentNode();
@@ -92,4 +91,4 @@ class RowHeadersRenderer extends _base.default {
92
91
  }
93
92
  }
94
93
  }
95
- exports.default = RowHeadersRenderer;
94
+ exports.RowHeadersRenderer = RowHeadersRenderer;
@@ -2,8 +2,8 @@ import "core-js/modules/es.error.cause.js";
2
2
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
3
3
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
4
4
  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); }
5
- import { SharedOrderView } from "./../utils/orderView/index.mjs";
6
- import BaseRenderer from "./_base.mjs";
5
+ import { SharedOrderView } from "../utils/orderView/index.mjs";
6
+ import { BaseRenderer } from "./_base.mjs";
7
7
  import { setAttribute, removeAttribute } from "../../../../helpers/dom/element.mjs";
8
8
  import { A11Y_COLINDEX, A11Y_ROWHEADER, A11Y_SCOPE_ROW, A11Y_TABINDEX } from "../../../../helpers/a11y.mjs";
9
9
  /**
@@ -19,7 +19,7 @@ import { A11Y_COLINDEX, A11Y_ROWHEADER, A11Y_SCOPE_ROW, A11Y_TABINDEX } from "..
19
19
  *
20
20
  * @class {CellsRenderer}
21
21
  */
22
- export default class RowHeadersRenderer extends BaseRenderer {
22
+ export class RowHeadersRenderer extends BaseRenderer {
23
23
  constructor() {
24
24
  super('TH');
25
25
  /**
@@ -47,7 +47,7 @@ export default class RowHeadersRenderer extends BaseRenderer {
47
47
  if (this.orderViews.has(rootNode)) {
48
48
  orderView = this.orderViews.get(rootNode);
49
49
  } else {
50
- orderView = new SharedOrderView(rootNode, sourceColumnIndex => this.nodesPool.obtain(this.sourceRowIndex, sourceColumnIndex), this.nodeType);
50
+ orderView = new SharedOrderView(rootNode, sourceColumnIndex => this.nodesPool.obtain(this.sourceRowIndex, sourceColumnIndex));
51
51
  this.orderViews.set(rootNode, orderView);
52
52
  }
53
53
  return orderView;
@@ -70,7 +70,7 @@ export default class RowHeadersRenderer extends BaseRenderer {
70
70
  this.sourceRowIndex = sourceRowIndex;
71
71
  const orderView = this.obtainOrderView(TR);
72
72
  const cellsView = cells.obtainOrderView(TR);
73
- orderView.appendView(cellsView).setSize(rowHeadersCount).setOffset(this.table.renderedColumnToSource(0)).start();
73
+ orderView.appendView(cellsView).setSize(rowHeadersCount).setOffset(0).start();
74
74
  for (let visibleColumnIndex = 0; visibleColumnIndex < rowHeadersCount; visibleColumnIndex++) {
75
75
  orderView.render();
76
76
  const TH = orderView.getCurrentNode();
@@ -2,13 +2,12 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  require("core-js/modules/es.error.cause.js");
5
- var _base = _interopRequireDefault(require("./_base"));
6
- var _console = require("./../../../../helpers/console");
7
- var _templateLiteralTag = require("./../../../../helpers/templateLiteralTag");
8
- var _orderView = require("./../utils/orderView");
5
+ var _base = require("./_base");
6
+ var _console = require("../../../../helpers/console");
7
+ var _templateLiteralTag = require("../../../../helpers/templateLiteralTag");
8
+ var _orderView = require("../utils/orderView");
9
9
  var _element = require("../../../../helpers/dom/element");
10
10
  var _a11y = require("../../../../helpers/a11y");
11
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
11
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
13
12
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
14
13
  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); }
@@ -30,7 +29,7 @@ let performanceWarningAppeared = false;
30
29
  *
31
30
  * @class {RowsRenderer}
32
31
  */
33
- class RowsRenderer extends _base.default {
32
+ class RowsRenderer extends _base.BaseRenderer {
34
33
  constructor(rootNode) {
35
34
  super('TR', rootNode);
36
35
  /**
@@ -39,7 +38,7 @@ class RowsRenderer extends _base.default {
39
38
  * @type {WeakMap}
40
39
  */
41
40
  _defineProperty(this, "orderView", void 0);
42
- this.orderView = new _orderView.OrderView(rootNode, sourceRowIndex => this.nodesPool.obtain(sourceRowIndex), this.nodeType);
41
+ this.orderView = new _orderView.OrderView(rootNode, sourceRowIndex => this.nodesPool.obtain(sourceRowIndex));
43
42
  }
44
43
 
45
44
  /**
@@ -52,6 +51,16 @@ class RowsRenderer extends _base.default {
52
51
  return this.orderView.getNode(visualIndex);
53
52
  }
54
53
 
54
+ /**
55
+ * Checks if the the row is marked as "stale" and has to be rerendered.
56
+ *
57
+ * @param {number} visualIndex Visual index of the rendered node (it always goeas from 0 to N).
58
+ * @returns {boolean}
59
+ */
60
+ hasStaleContent(visualIndex) {
61
+ return this.orderView.hasStaleContent(visualIndex);
62
+ }
63
+
55
64
  /**
56
65
  * Renders the cells.
57
66
  */
@@ -79,14 +88,17 @@ class RowsRenderer extends _base.default {
79
88
  // `aria-rowindex` is incremented by both tbody and thead rows.
80
89
  (0, _a11y.A11Y_ROWINDEX)(sourceRowIndex + ((_this$table$rowUtils$ = (_this$table$rowUtils = this.table.rowUtils) === null || _this$table$rowUtils === void 0 || (_this$table$rowUtils = _this$table$rowUtils.dataAccessObject) === null || _this$table$rowUtils === void 0 ? void 0 : _this$table$rowUtils.columnHeaders.length) !== null && _this$table$rowUtils$ !== void 0 ? _this$table$rowUtils$ : 0) + 1)]);
81
90
  }
82
- (0, _element.removeClass)(TR, [ROW_CLASSNAMES.rowEven, ROW_CLASSNAMES.rowOdd]);
83
91
  if ((sourceRowIndex + 1) % 2 === 0) {
84
- (0, _element.addClass)(TR, ROW_CLASSNAMES.rowEven);
85
- } else {
92
+ if (!(0, _element.hasClass)(TR, ROW_CLASSNAMES.rowEven)) {
93
+ (0, _element.removeClass)(TR, ROW_CLASSNAMES.rowOdd);
94
+ (0, _element.addClass)(TR, ROW_CLASSNAMES.rowEven);
95
+ }
96
+ } else if (!(0, _element.hasClass)(TR, ROW_CLASSNAMES.rowOdd)) {
97
+ (0, _element.removeClass)(TR, ROW_CLASSNAMES.rowEven);
86
98
  (0, _element.addClass)(TR, ROW_CLASSNAMES.rowOdd);
87
99
  }
88
100
  }
89
101
  this.orderView.end();
90
102
  }
91
103
  }
92
- exports.default = RowsRenderer;
104
+ exports.RowsRenderer = RowsRenderer;