handsontable 0.0.0-next-a34a8db-20241121 → 0.0.0-next-a148bc1-20241121

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of handsontable might be problematic. Click here for more details.

Files changed (47) 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/renderer/_base.js +3 -4
  4. package/3rdparty/walkontable/src/renderer/_base.mjs +2 -2
  5. package/3rdparty/walkontable/src/renderer/cells.js +11 -10
  6. package/3rdparty/walkontable/src/renderer/cells.mjs +10 -8
  7. package/3rdparty/walkontable/src/renderer/colGroup.js +6 -7
  8. package/3rdparty/walkontable/src/renderer/colGroup.mjs +5 -5
  9. package/3rdparty/walkontable/src/renderer/columnHeaders.js +4 -5
  10. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +3 -3
  11. package/3rdparty/walkontable/src/renderer/index.js +18 -19
  12. package/3rdparty/walkontable/src/renderer/index.mjs +6 -6
  13. package/3rdparty/walkontable/src/renderer/rowHeaders.js +5 -6
  14. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +4 -4
  15. package/3rdparty/walkontable/src/renderer/rows.js +23 -11
  16. package/3rdparty/walkontable/src/renderer/rows.mjs +23 -10
  17. package/3rdparty/walkontable/src/renderer/table.js +1 -1
  18. package/3rdparty/walkontable/src/renderer/table.mjs +1 -1
  19. package/3rdparty/walkontable/src/utils/nodesPool.js +22 -5
  20. package/3rdparty/walkontable/src/utils/nodesPool.mjs +22 -5
  21. package/3rdparty/walkontable/src/utils/orderView/index.js +4 -5
  22. package/3rdparty/walkontable/src/utils/orderView/index.mjs +2 -2
  23. package/3rdparty/walkontable/src/utils/orderView/sharedView.js +3 -4
  24. package/3rdparty/walkontable/src/utils/orderView/sharedView.mjs +2 -2
  25. package/3rdparty/walkontable/src/utils/orderView/view.js +79 -76
  26. package/3rdparty/walkontable/src/utils/orderView/view.mjs +78 -74
  27. package/3rdparty/walkontable/src/utils/orderView/viewDiffer/index.js +138 -0
  28. package/3rdparty/walkontable/src/utils/orderView/viewDiffer/index.mjs +135 -0
  29. package/3rdparty/walkontable/src/utils/orderView/viewDiffer/viewOrder.js +72 -0
  30. package/3rdparty/walkontable/src/utils/orderView/viewDiffer/viewOrder.mjs +68 -0
  31. package/3rdparty/walkontable/src/utils/orderView/viewSize.js +1 -1
  32. package/3rdparty/walkontable/src/utils/orderView/viewSize.mjs +1 -1
  33. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.js +4 -5
  34. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.mjs +3 -3
  35. package/base.js +2 -2
  36. package/base.mjs +2 -2
  37. package/dist/handsontable.css +2 -2
  38. package/dist/handsontable.full.css +2 -2
  39. package/dist/handsontable.full.js +1963 -1710
  40. package/dist/handsontable.full.min.css +2 -2
  41. package/dist/handsontable.full.min.js +6 -6
  42. package/dist/handsontable.js +1965 -1712
  43. package/dist/handsontable.min.css +2 -2
  44. package/dist/handsontable.min.js +6 -6
  45. package/helpers/mixed.js +1 -1
  46. package/helpers/mixed.mjs +1 -1
  47. package/package.json +1 -1
@@ -28,6 +28,8 @@ exports.Renderer = Renderer;
28
28
  var _orderView = require("./utils/orderView");
29
29
  exports.OrderView = _orderView.OrderView;
30
30
  exports.SharedOrderView = _orderView.SharedOrderView;
31
+ var _nodesPool = require("./utils/nodesPool");
32
+ exports.NodesPool = _nodesPool.NodesPool;
31
33
  var _eventManager = require("../../../eventManager");
32
34
  exports.getListenersCounter = _eventManager.getListenersCounter;
33
35
  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_ROW_HEIGHT, 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_ROW_HEIGHT, 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 };
@@ -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,16 @@ 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
75
  orderView.prependView(rowHeadersView).setSize(columnsToRender).setOffset(this.table.renderedColumnToSource(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
+
80
+ // if (!orderView.hasStaleContent(sourceColumnIndex)) {
81
+ // continue;
82
+ // }
83
+
84
+ const TD = orderView.getCurrentNode();
84
85
  if (!(0, _element.hasClass)(TD, 'hide')) {
85
86
  // Workaround for hidden columns plugin
86
87
  TD.className = '';
@@ -102,4 +103,4 @@ class CellsRenderer extends _base.default {
102
103
  }
103
104
  }
104
105
  }
105
- exports.default = CellsRenderer;
106
+ 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,16 @@ 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
72
  orderView.prependView(rowHeadersView).setSize(columnsToRender).setOffset(this.table.renderedColumnToSource(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
+
77
+ // if (!orderView.hasStaleContent(sourceColumnIndex)) {
78
+ // continue;
79
+ // }
80
+
81
+ const TD = orderView.getCurrentNode();
80
82
  if (!hasClass(TD, 'hide')) {
81
83
  // Workaround for hidden columns plugin
82
84
  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
  *
@@ -35,15 +34,15 @@ class Renderer {
35
34
  *
36
35
  * @type {TableRenderer}
37
36
  */
38
- this.renderer = new _table.default(TABLE, {
37
+ this.renderer = new _table.TableRenderer(TABLE, {
39
38
  cellRenderer
40
39
  });
41
40
  this.renderer.setRenderers({
42
- rowHeaders: new _rowHeaders.default(),
43
- columnHeaders: new _columnHeaders.default(THEAD),
44
- colGroup: new _colGroup.default(COLGROUP),
45
- rows: new _rows.default(TBODY),
46
- cells: new _cells.default()
41
+ rowHeaders: new _rowHeaders.RowHeadersRenderer(),
42
+ columnHeaders: new _columnHeaders.ColumnHeadersRenderer(THEAD),
43
+ colGroup: new _colGroup.ColGroupRenderer(COLGROUP),
44
+ rows: new _rows.RowsRenderer(TBODY),
45
+ cells: new _cells.CellsRenderer()
47
46
  });
48
47
  this.renderer.setAxisUtils(rowUtils, columnUtils);
49
48
  }
@@ -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;
@@ -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;
@@ -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;
@@ -2,11 +2,11 @@ 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 BaseRenderer from "./_base.mjs";
6
- import { warn } from "./../../../../helpers/console.mjs";
7
- import { toSingleLine } from "./../../../../helpers/templateLiteralTag.mjs";
8
- import { OrderView } from "./../utils/orderView/index.mjs";
9
- import { addClass, removeClass, setAttribute } from "../../../../helpers/dom/element.mjs";
5
+ import { BaseRenderer } from "./_base.mjs";
6
+ import { warn } from "../../../../helpers/console.mjs";
7
+ import { toSingleLine } from "../../../../helpers/templateLiteralTag.mjs";
8
+ import { OrderView } from "../utils/orderView/index.mjs";
9
+ import { addClass, hasClass, removeClass, setAttribute } from "../../../../helpers/dom/element.mjs";
10
10
  import { A11Y_ROW, A11Y_ROWGROUP, A11Y_ROWINDEX } from "../../../../helpers/a11y.mjs";
11
11
  const ROW_CLASSNAMES = {
12
12
  rowEven: 'ht__row_even',
@@ -26,7 +26,7 @@ let performanceWarningAppeared = false;
26
26
  *
27
27
  * @class {RowsRenderer}
28
28
  */
29
- export default class RowsRenderer extends BaseRenderer {
29
+ export class RowsRenderer extends BaseRenderer {
30
30
  constructor(rootNode) {
31
31
  super('TR', rootNode);
32
32
  /**
@@ -35,7 +35,7 @@ export default class RowsRenderer extends BaseRenderer {
35
35
  * @type {WeakMap}
36
36
  */
37
37
  _defineProperty(this, "orderView", void 0);
38
- this.orderView = new OrderView(rootNode, sourceRowIndex => this.nodesPool.obtain(sourceRowIndex), this.nodeType);
38
+ this.orderView = new OrderView(rootNode, sourceRowIndex => this.nodesPool.obtain(sourceRowIndex));
39
39
  }
40
40
 
41
41
  /**
@@ -48,6 +48,16 @@ export default class RowsRenderer extends BaseRenderer {
48
48
  return this.orderView.getNode(visualIndex);
49
49
  }
50
50
 
51
+ /**
52
+ * Checks if the the row is marked as "stale" and has to be rerendered.
53
+ *
54
+ * @param {number} visualIndex Visual index of the rendered node (it always goeas from 0 to N).
55
+ * @returns {boolean}
56
+ */
57
+ hasStaleContent(visualIndex) {
58
+ return this.orderView.hasStaleContent(visualIndex);
59
+ }
60
+
51
61
  /**
52
62
  * Renders the cells.
53
63
  */
@@ -75,10 +85,13 @@ export default class RowsRenderer extends BaseRenderer {
75
85
  // `aria-rowindex` is incremented by both tbody and thead rows.
76
86
  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)]);
77
87
  }
78
- removeClass(TR, [ROW_CLASSNAMES.rowEven, ROW_CLASSNAMES.rowOdd]);
79
88
  if ((sourceRowIndex + 1) % 2 === 0) {
80
- addClass(TR, ROW_CLASSNAMES.rowEven);
81
- } else {
89
+ if (!hasClass(TR, ROW_CLASSNAMES.rowEven)) {
90
+ removeClass(TR, ROW_CLASSNAMES.rowOdd);
91
+ addClass(TR, ROW_CLASSNAMES.rowEven);
92
+ }
93
+ } else if (!hasClass(TR, ROW_CLASSNAMES.rowOdd)) {
94
+ removeClass(TR, ROW_CLASSNAMES.rowEven);
82
95
  addClass(TR, ROW_CLASSNAMES.rowOdd);
83
96
  }
84
97
  }
@@ -326,4 +326,4 @@ class TableRenderer {
326
326
  }
327
327
  }
328
328
  }
329
- exports.default = TableRenderer;
329
+ exports.TableRenderer = TableRenderer;
@@ -46,7 +46,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
46
46
  *
47
47
  * @class {RowsRenderer}
48
48
  */
49
- export default class TableRenderer {
49
+ export class TableRenderer {
50
50
  constructor(rootNode) {
51
51
  let {
52
52
  cellRenderer
@@ -13,18 +13,24 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
13
13
  class NodesPool {
14
14
  constructor(nodeType) {
15
15
  /**
16
- * Node type to generate (ew 'th', 'td').
16
+ * Node type to generate (e.g. 'TH', 'TD').
17
17
  *
18
18
  * @type {string}
19
19
  */
20
20
  _defineProperty(this, "nodeType", void 0);
21
+ /**
22
+ * The holder for all created DOM nodes (THs, TDs).
23
+ *
24
+ * @type {Map<string, HTMLElement>}
25
+ */
26
+ _defineProperty(this, "pool", new Map());
21
27
  this.nodeType = nodeType.toUpperCase();
22
28
  }
23
29
 
24
30
  /**
25
31
  * Set document owner for this instance.
26
32
  *
27
- * @param {HTMLDocument} rootDocument The document window owner.
33
+ * @param {Document} rootDocument The document window owner.
28
34
  */
29
35
  setRootDocument(rootDocument) {
30
36
  this.rootDocument = rootDocument;
@@ -33,10 +39,21 @@ class NodesPool {
33
39
  /**
34
40
  * Obtains an element. The returned elements in the feature can be cached.
35
41
  *
42
+ * @param {number} rowIndex The row index.
43
+ * @param {number} [columnIndex] The column index.
36
44
  * @returns {HTMLElement}
37
45
  */
38
- obtain() {
39
- return this.rootDocument.createElement(this.nodeType);
46
+ obtain(rowIndex, columnIndex) {
47
+ const hasColumnIndex = typeof columnIndex === 'number';
48
+ const key = hasColumnIndex ? `${rowIndex}x${columnIndex}` : rowIndex.toString();
49
+ if (this.pool.has(key)) {
50
+ return this.pool.get(key);
51
+ }
52
+ const node = this.rootDocument.createElement(this.nodeType);
53
+
54
+ // node.dataset.id = key; // Uncomment for debug purposes
55
+ this.pool.set(key, node);
56
+ return node;
40
57
  }
41
58
  }
42
- exports.default = NodesPool;
59
+ exports.NodesPool = NodesPool;