handsontable 14.5.0-next-ede811d-20240717 → 14.5.0-next-7541a88-20240725
Sign up to get free protection for your applications and to get access to all the features.
- package/3rdparty/walkontable/src/calculator/calculationType/fullyVisibleColumns.js +126 -0
- package/3rdparty/walkontable/src/calculator/calculationType/fullyVisibleColumns.mjs +122 -0
- package/3rdparty/walkontable/src/calculator/calculationType/fullyVisibleRows.js +119 -0
- package/3rdparty/walkontable/src/calculator/calculationType/fullyVisibleRows.mjs +115 -0
- package/3rdparty/walkontable/src/calculator/calculationType/partiallyVisibleColumns.js +125 -0
- package/3rdparty/walkontable/src/calculator/calculationType/partiallyVisibleColumns.mjs +121 -0
- package/3rdparty/walkontable/src/calculator/calculationType/partiallyVisibleRows.js +118 -0
- package/3rdparty/walkontable/src/calculator/calculationType/partiallyVisibleRows.mjs +114 -0
- package/3rdparty/walkontable/src/calculator/{renderAllColumns.js → calculationType/renderedAllColumns.js} +32 -9
- package/3rdparty/walkontable/src/calculator/{renderAllColumns.mjs → calculationType/renderedAllColumns.mjs} +31 -8
- package/3rdparty/walkontable/src/calculator/{renderAllRows.js → calculationType/renderedAllRows.js} +32 -9
- package/3rdparty/walkontable/src/calculator/{renderAllRows.mjs → calculationType/renderedAllRows.mjs} +31 -8
- package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.js +37 -0
- package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.mjs +33 -0
- package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.js +37 -0
- package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.mjs +33 -0
- package/3rdparty/walkontable/src/calculator/index.js +18 -17
- package/3rdparty/walkontable/src/calculator/index.mjs +11 -6
- package/3rdparty/walkontable/src/calculator/viewportBase.js +92 -0
- package/3rdparty/walkontable/src/calculator/viewportBase.mjs +88 -0
- package/3rdparty/walkontable/src/calculator/viewportColumns.js +51 -145
- package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +51 -145
- package/3rdparty/walkontable/src/calculator/viewportRows.js +59 -141
- package/3rdparty/walkontable/src/calculator/viewportRows.mjs +59 -141
- package/3rdparty/walkontable/src/index.js +2 -0
- package/3rdparty/walkontable/src/index.mjs +2 -2
- package/3rdparty/walkontable/src/table.js +5 -11
- package/3rdparty/walkontable/src/table.mjs +5 -11
- package/3rdparty/walkontable/src/utils/column.js +2 -1
- package/3rdparty/walkontable/src/utils/column.mjs +2 -1
- package/3rdparty/walkontable/src/utils/columnStretching.js +10 -19
- package/3rdparty/walkontable/src/utils/columnStretching.mjs +10 -19
- package/3rdparty/walkontable/src/viewport.js +35 -46
- package/3rdparty/walkontable/src/viewport.mjs +36 -47
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/core.js +1 -1
- package/core.mjs +2 -2
- package/dist/handsontable.css +2 -2
- package/dist/handsontable.full.css +2 -2
- package/dist/handsontable.full.js +2494 -1961
- package/dist/handsontable.full.min.css +2 -2
- package/dist/handsontable.full.min.js +148 -148
- package/dist/handsontable.js +2495 -1962
- package/dist/handsontable.min.css +2 -2
- package/dist/handsontable.min.js +32 -32
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/package.json +1 -1
- package/plugins/autoColumnSize/autoColumnSize.js +1 -1
- package/plugins/autoColumnSize/autoColumnSize.mjs +2 -2
- package/plugins/manualRowResize/manualRowResize.js +1 -1
- package/plugins/manualRowResize/manualRowResize.mjs +2 -2
- package/3rdparty/walkontable/src/calculator/constants.js +0 -26
- package/3rdparty/walkontable/src/calculator/constants.mjs +0 -23
@@ -0,0 +1,37 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
exports.__esModule = true;
|
4
|
+
var _partiallyVisibleRows = require("./partiallyVisibleRows");
|
5
|
+
/**
|
6
|
+
* @class RenderedRowsCalculationType
|
7
|
+
*/
|
8
|
+
class RenderedRowsCalculationType extends _partiallyVisibleRows.PartiallyVisibleRowsCalculationType {
|
9
|
+
/**
|
10
|
+
* Finalizes the calculation.
|
11
|
+
*
|
12
|
+
* @param {ViewportRowsCalculator} viewportCalculator The viewport calculator object.
|
13
|
+
*/
|
14
|
+
finalize(viewportCalculator) {
|
15
|
+
var _startPositions$this$;
|
16
|
+
super.finalize(viewportCalculator);
|
17
|
+
const {
|
18
|
+
overrideFn,
|
19
|
+
totalRows,
|
20
|
+
startPositions
|
21
|
+
} = viewportCalculator;
|
22
|
+
if (this.startRow !== null && typeof overrideFn === 'function') {
|
23
|
+
overrideFn(this);
|
24
|
+
}
|
25
|
+
if (this.startRow < 0) {
|
26
|
+
this.startRow = 0;
|
27
|
+
}
|
28
|
+
this.startPosition = (_startPositions$this$ = startPositions[this.startRow]) !== null && _startPositions$this$ !== void 0 ? _startPositions$this$ : null;
|
29
|
+
if (totalRows < this.endRow) {
|
30
|
+
this.endRow = totalRows - 1;
|
31
|
+
}
|
32
|
+
if (this.startRow !== null) {
|
33
|
+
this.count = this.endRow - this.startRow + 1;
|
34
|
+
}
|
35
|
+
}
|
36
|
+
}
|
37
|
+
exports.RenderedRowsCalculationType = RenderedRowsCalculationType;
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import { PartiallyVisibleRowsCalculationType } from "./partiallyVisibleRows.mjs";
|
2
|
+
/**
|
3
|
+
* @class RenderedRowsCalculationType
|
4
|
+
*/
|
5
|
+
export class RenderedRowsCalculationType extends PartiallyVisibleRowsCalculationType {
|
6
|
+
/**
|
7
|
+
* Finalizes the calculation.
|
8
|
+
*
|
9
|
+
* @param {ViewportRowsCalculator} viewportCalculator The viewport calculator object.
|
10
|
+
*/
|
11
|
+
finalize(viewportCalculator) {
|
12
|
+
var _startPositions$this$;
|
13
|
+
super.finalize(viewportCalculator);
|
14
|
+
const {
|
15
|
+
overrideFn,
|
16
|
+
totalRows,
|
17
|
+
startPositions
|
18
|
+
} = viewportCalculator;
|
19
|
+
if (this.startRow !== null && typeof overrideFn === 'function') {
|
20
|
+
overrideFn(this);
|
21
|
+
}
|
22
|
+
if (this.startRow < 0) {
|
23
|
+
this.startRow = 0;
|
24
|
+
}
|
25
|
+
this.startPosition = (_startPositions$this$ = startPositions[this.startRow]) !== null && _startPositions$this$ !== void 0 ? _startPositions$this$ : null;
|
26
|
+
if (totalRows < this.endRow) {
|
27
|
+
this.endRow = totalRows - 1;
|
28
|
+
}
|
29
|
+
if (this.startRow !== null) {
|
30
|
+
this.count = this.endRow - this.startRow + 1;
|
31
|
+
}
|
32
|
+
}
|
33
|
+
}
|
@@ -1,24 +1,25 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
3
|
exports.__esModule = true;
|
4
|
-
var
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
var
|
11
|
-
exports.
|
12
|
-
var
|
13
|
-
exports.
|
4
|
+
var _fullyVisibleColumns = require("./calculationType/fullyVisibleColumns");
|
5
|
+
exports.FullyVisibleColumnsCalculationType = _fullyVisibleColumns.FullyVisibleColumnsCalculationType;
|
6
|
+
var _fullyVisibleRows = require("./calculationType/fullyVisibleRows");
|
7
|
+
exports.FullyVisibleRowsCalculationType = _fullyVisibleRows.FullyVisibleRowsCalculationType;
|
8
|
+
var _partiallyVisibleColumns = require("./calculationType/partiallyVisibleColumns");
|
9
|
+
exports.PartiallyVisibleColumnsCalculationType = _partiallyVisibleColumns.PartiallyVisibleColumnsCalculationType;
|
10
|
+
var _partiallyVisibleRows = require("./calculationType/partiallyVisibleRows");
|
11
|
+
exports.PartiallyVisibleRowsCalculationType = _partiallyVisibleRows.PartiallyVisibleRowsCalculationType;
|
12
|
+
var _renderedAllColumns = require("./calculationType/renderedAllColumns");
|
13
|
+
exports.RenderedAllColumnsCalculationType = _renderedAllColumns.RenderedAllColumnsCalculationType;
|
14
|
+
var _renderedAllRows = require("./calculationType/renderedAllRows");
|
15
|
+
exports.RenderedAllRowsCalculationType = _renderedAllRows.RenderedAllRowsCalculationType;
|
16
|
+
var _renderedColumns = require("./calculationType/renderedColumns");
|
17
|
+
exports.RenderedColumnsCalculationType = _renderedColumns.RenderedColumnsCalculationType;
|
18
|
+
var _renderedRows = require("./calculationType/renderedRows");
|
19
|
+
exports.RenderedRowsCalculationType = _renderedRows.RenderedRowsCalculationType;
|
14
20
|
var _viewportColumns = require("./viewportColumns");
|
15
21
|
exports.ViewportColumnsCalculator = _viewportColumns.ViewportColumnsCalculator;
|
22
|
+
exports.DEFAULT_COLUMN_WIDTH = _viewportColumns.DEFAULT_WIDTH;
|
16
23
|
var _viewportRows = require("./viewportRows");
|
17
24
|
exports.ViewportRowsCalculator = _viewportRows.ViewportRowsCalculator;
|
18
|
-
|
19
|
-
Object.keys(_constants).forEach(function (key) {
|
20
|
-
if (key === "default" || key === "__esModule") return;
|
21
|
-
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
22
|
-
if (key in exports && exports[key] === _constants[key]) return;
|
23
|
-
exports[key] = _constants[key];
|
24
|
-
});
|
25
|
+
exports.DEFAULT_ROW_HEIGHT = _viewportRows.DEFAULT_HEIGHT;
|
@@ -1,6 +1,11 @@
|
|
1
|
-
import {
|
2
|
-
import {
|
3
|
-
import {
|
4
|
-
import {
|
5
|
-
|
6
|
-
|
1
|
+
import { FullyVisibleColumnsCalculationType } from "./calculationType/fullyVisibleColumns.mjs";
|
2
|
+
import { FullyVisibleRowsCalculationType } from "./calculationType/fullyVisibleRows.mjs";
|
3
|
+
import { PartiallyVisibleColumnsCalculationType } from "./calculationType/partiallyVisibleColumns.mjs";
|
4
|
+
import { PartiallyVisibleRowsCalculationType } from "./calculationType/partiallyVisibleRows.mjs";
|
5
|
+
import { RenderedAllColumnsCalculationType } from "./calculationType/renderedAllColumns.mjs";
|
6
|
+
import { RenderedAllRowsCalculationType } from "./calculationType/renderedAllRows.mjs";
|
7
|
+
import { RenderedColumnsCalculationType } from "./calculationType/renderedColumns.mjs";
|
8
|
+
import { RenderedRowsCalculationType } from "./calculationType/renderedRows.mjs";
|
9
|
+
import { ViewportColumnsCalculator, DEFAULT_WIDTH } from "./viewportColumns.mjs";
|
10
|
+
import { ViewportRowsCalculator, DEFAULT_HEIGHT } from "./viewportRows.mjs";
|
11
|
+
export { DEFAULT_HEIGHT as DEFAULT_ROW_HEIGHT, DEFAULT_WIDTH as DEFAULT_COLUMN_WIDTH, FullyVisibleColumnsCalculationType, FullyVisibleRowsCalculationType, PartiallyVisibleColumnsCalculationType, PartiallyVisibleRowsCalculationType, RenderedAllColumnsCalculationType, RenderedAllRowsCalculationType, RenderedColumnsCalculationType, RenderedRowsCalculationType, ViewportColumnsCalculator, ViewportRowsCalculator };
|
@@ -0,0 +1,92 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
exports.__esModule = true;
|
4
|
+
require("core-js/modules/es.error.cause.js");
|
5
|
+
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; }
|
6
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
7
|
+
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); }
|
8
|
+
/**
|
9
|
+
* @typedef {object} ColumnsCalculationType
|
10
|
+
* @property {number | null} startColumn The column index of the first column in the viewport.
|
11
|
+
* @property {number | null} endColumn The column index of the last column in the viewport.
|
12
|
+
* @property {number} count Total number of columns.
|
13
|
+
* @property {number | null} startPosition Position of the first fully column (in px).
|
14
|
+
* @property {boolean} isVisibleInTrimmingContainer Determines if the viewport is visible in the trimming container.
|
15
|
+
*/
|
16
|
+
/**
|
17
|
+
* @typedef {object} RowsCalculationType
|
18
|
+
* @property {number | null} startRow The row index of the first row in the viewport.
|
19
|
+
* @property {number | null} endRow The row index of the last row in the viewport.
|
20
|
+
* @property {number} count Total number of rows.
|
21
|
+
* @property {number | null} startPosition Position of the first fully row (in px).
|
22
|
+
* @property {boolean} isVisibleInTrimmingContainer Determines if the viewport is visible in the trimming container.
|
23
|
+
*/
|
24
|
+
/**
|
25
|
+
* @class ViewportBaseCalculator
|
26
|
+
*/
|
27
|
+
class ViewportBaseCalculator {
|
28
|
+
constructor(calculationTypes) {
|
29
|
+
/**
|
30
|
+
* The calculation types to be performed.
|
31
|
+
*
|
32
|
+
* @type {Array}
|
33
|
+
*/
|
34
|
+
_defineProperty(this, "calculationTypes", []);
|
35
|
+
/**
|
36
|
+
* The calculation results.
|
37
|
+
*
|
38
|
+
* @type {Map<string, ColumnsCalculationType | RowsCalculationType>}
|
39
|
+
*/
|
40
|
+
_defineProperty(this, "calculationResults", new Map());
|
41
|
+
this.calculationTypes = calculationTypes;
|
42
|
+
}
|
43
|
+
|
44
|
+
/**
|
45
|
+
* Initializes all calculators (triggers all calculators before calculating the rows/columns sizes).
|
46
|
+
*
|
47
|
+
* @param {*} context The context object (rows or columns viewport calculator).
|
48
|
+
*/
|
49
|
+
_initialize(context) {
|
50
|
+
this.calculationTypes.forEach(_ref => {
|
51
|
+
let [id, calculator] = _ref;
|
52
|
+
this.calculationResults.set(id, calculator);
|
53
|
+
calculator.initialize(context);
|
54
|
+
});
|
55
|
+
}
|
56
|
+
|
57
|
+
/**
|
58
|
+
* Processes the row/column at the given index.
|
59
|
+
*
|
60
|
+
* @param {number} index The index of the row/column.
|
61
|
+
* @param {*} context The context object (rows or columns viewport calculator).
|
62
|
+
*/
|
63
|
+
_process(index, context) {
|
64
|
+
this.calculationTypes.forEach(_ref2 => {
|
65
|
+
let [, calculator] = _ref2;
|
66
|
+
return calculator.process(index, context);
|
67
|
+
});
|
68
|
+
}
|
69
|
+
|
70
|
+
/**
|
71
|
+
* Finalizes all calculators (triggers all calculators after calculating the rows/columns sizes).
|
72
|
+
*
|
73
|
+
* @param {*} context The context object (rows or columns viewport calculator).
|
74
|
+
*/
|
75
|
+
_finalize(context) {
|
76
|
+
this.calculationTypes.forEach(_ref3 => {
|
77
|
+
let [, calculator] = _ref3;
|
78
|
+
return calculator.finalize(context);
|
79
|
+
});
|
80
|
+
}
|
81
|
+
|
82
|
+
/**
|
83
|
+
* Gets the results for the given calculator.
|
84
|
+
*
|
85
|
+
* @param {string} calculatorId The id of the calculator.
|
86
|
+
* @returns {ColumnsCalculationType | RowsCalculationType}
|
87
|
+
*/
|
88
|
+
getResultsFor(calculatorId) {
|
89
|
+
return this.calculationResults.get(calculatorId);
|
90
|
+
}
|
91
|
+
}
|
92
|
+
exports.ViewportBaseCalculator = ViewportBaseCalculator;
|
@@ -0,0 +1,88 @@
|
|
1
|
+
import "core-js/modules/es.error.cause.js";
|
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
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
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
|
+
/**
|
6
|
+
* @typedef {object} ColumnsCalculationType
|
7
|
+
* @property {number | null} startColumn The column index of the first column in the viewport.
|
8
|
+
* @property {number | null} endColumn The column index of the last column in the viewport.
|
9
|
+
* @property {number} count Total number of columns.
|
10
|
+
* @property {number | null} startPosition Position of the first fully column (in px).
|
11
|
+
* @property {boolean} isVisibleInTrimmingContainer Determines if the viewport is visible in the trimming container.
|
12
|
+
*/
|
13
|
+
/**
|
14
|
+
* @typedef {object} RowsCalculationType
|
15
|
+
* @property {number | null} startRow The row index of the first row in the viewport.
|
16
|
+
* @property {number | null} endRow The row index of the last row in the viewport.
|
17
|
+
* @property {number} count Total number of rows.
|
18
|
+
* @property {number | null} startPosition Position of the first fully row (in px).
|
19
|
+
* @property {boolean} isVisibleInTrimmingContainer Determines if the viewport is visible in the trimming container.
|
20
|
+
*/
|
21
|
+
/**
|
22
|
+
* @class ViewportBaseCalculator
|
23
|
+
*/
|
24
|
+
export class ViewportBaseCalculator {
|
25
|
+
constructor(calculationTypes) {
|
26
|
+
/**
|
27
|
+
* The calculation types to be performed.
|
28
|
+
*
|
29
|
+
* @type {Array}
|
30
|
+
*/
|
31
|
+
_defineProperty(this, "calculationTypes", []);
|
32
|
+
/**
|
33
|
+
* The calculation results.
|
34
|
+
*
|
35
|
+
* @type {Map<string, ColumnsCalculationType | RowsCalculationType>}
|
36
|
+
*/
|
37
|
+
_defineProperty(this, "calculationResults", new Map());
|
38
|
+
this.calculationTypes = calculationTypes;
|
39
|
+
}
|
40
|
+
|
41
|
+
/**
|
42
|
+
* Initializes all calculators (triggers all calculators before calculating the rows/columns sizes).
|
43
|
+
*
|
44
|
+
* @param {*} context The context object (rows or columns viewport calculator).
|
45
|
+
*/
|
46
|
+
_initialize(context) {
|
47
|
+
this.calculationTypes.forEach(_ref => {
|
48
|
+
let [id, calculator] = _ref;
|
49
|
+
this.calculationResults.set(id, calculator);
|
50
|
+
calculator.initialize(context);
|
51
|
+
});
|
52
|
+
}
|
53
|
+
|
54
|
+
/**
|
55
|
+
* Processes the row/column at the given index.
|
56
|
+
*
|
57
|
+
* @param {number} index The index of the row/column.
|
58
|
+
* @param {*} context The context object (rows or columns viewport calculator).
|
59
|
+
*/
|
60
|
+
_process(index, context) {
|
61
|
+
this.calculationTypes.forEach(_ref2 => {
|
62
|
+
let [, calculator] = _ref2;
|
63
|
+
return calculator.process(index, context);
|
64
|
+
});
|
65
|
+
}
|
66
|
+
|
67
|
+
/**
|
68
|
+
* Finalizes all calculators (triggers all calculators after calculating the rows/columns sizes).
|
69
|
+
*
|
70
|
+
* @param {*} context The context object (rows or columns viewport calculator).
|
71
|
+
*/
|
72
|
+
_finalize(context) {
|
73
|
+
this.calculationTypes.forEach(_ref3 => {
|
74
|
+
let [, calculator] = _ref3;
|
75
|
+
return calculator.finalize(context);
|
76
|
+
});
|
77
|
+
}
|
78
|
+
|
79
|
+
/**
|
80
|
+
* Gets the results for the given calculator.
|
81
|
+
*
|
82
|
+
* @param {string} calculatorId The id of the calculator.
|
83
|
+
* @returns {ColumnsCalculationType | RowsCalculationType}
|
84
|
+
*/
|
85
|
+
getResultsFor(calculatorId) {
|
86
|
+
return this.calculationResults.get(calculatorId);
|
87
|
+
}
|
88
|
+
}
|
@@ -2,89 +2,61 @@
|
|
2
2
|
|
3
3
|
exports.__esModule = true;
|
4
4
|
require("core-js/modules/es.error.cause.js");
|
5
|
-
require("core-js/modules/es.array.at.js");
|
6
5
|
require("core-js/modules/es.array.push.js");
|
7
|
-
var
|
8
|
-
function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
|
9
|
-
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
6
|
+
var _viewportBase = require("./viewportBase");
|
10
7
|
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
8
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
12
9
|
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); }
|
13
|
-
|
14
|
-
|
15
|
-
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"); }
|
10
|
+
const DEFAULT_WIDTH = exports.DEFAULT_WIDTH = 50;
|
11
|
+
|
16
12
|
/**
|
17
13
|
* @typedef {object} ViewportColumnsCalculatorOptions
|
14
|
+
* @property {Map<string, ViewportBaseCalculator>} calculationTypes The calculation types to be performed.
|
18
15
|
* @property {number} viewportWidth Width of the viewport.
|
19
16
|
* @property {number} scrollOffset Current horizontal scroll position of the viewport.
|
20
17
|
* @property {number} totalColumns Total number of columns.
|
21
18
|
* @property {Function} columnWidthFn Function that returns the width of the column at a given index (in px).
|
22
|
-
* @property {Function} overrideFn Function that
|
23
|
-
* MergeCells plugin).
|
24
|
-
* @property {string} calculationType String which describes types of calculation which will be performed.
|
19
|
+
* @property {Function} overrideFn Function that allows to adjust the `startRow` and `endRow` parameters.
|
25
20
|
* @property {string} inlineStartOffset Inline-start offset of the parent container.
|
26
|
-
* @property {string} stretchMode Stretch mode 'all' or 'last'.
|
27
|
-
* @property {Function} stretchingColumnWidthFn Function that returns the new width of the stretched column.
|
28
21
|
*/
|
29
22
|
/**
|
30
|
-
* Calculates indexes of columns to render OR columns that are visible.
|
31
|
-
* To redo the calculation, you need to create a new calculator.
|
23
|
+
* Calculates indexes of columns to render OR columns that are visible OR partially visible in the viewport.
|
32
24
|
*
|
33
25
|
* @class ViewportColumnsCalculator
|
34
26
|
*/
|
35
|
-
|
36
|
-
class ViewportColumnsCalculator {
|
37
|
-
/**
|
38
|
-
* Default column width.
|
39
|
-
*
|
40
|
-
* @type {number}
|
41
|
-
*/
|
42
|
-
static get DEFAULT_WIDTH() {
|
43
|
-
return 50;
|
44
|
-
}
|
45
|
-
|
46
|
-
/**
|
47
|
-
* Number of rendered/visible columns.
|
48
|
-
*
|
49
|
-
* @type {number}
|
50
|
-
*/
|
51
|
-
|
27
|
+
class ViewportColumnsCalculator extends _viewportBase.ViewportBaseCalculator {
|
52
28
|
/**
|
53
29
|
* @param {ViewportColumnsCalculatorOptions} options Object with all options specified for column viewport calculation.
|
54
30
|
*/
|
55
|
-
constructor(
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
_defineProperty(this, "
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
_defineProperty(this, "
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
* @type {ViewportColumnsCalculatorOptions}
|
85
|
-
*/
|
86
|
-
_classPrivateFieldInitSpec(this, _options, void 0);
|
87
|
-
_classPrivateFieldSet(_options, this, options);
|
31
|
+
constructor(_ref) {
|
32
|
+
let {
|
33
|
+
calculationTypes,
|
34
|
+
viewportWidth,
|
35
|
+
scrollOffset,
|
36
|
+
totalColumns,
|
37
|
+
columnWidthFn,
|
38
|
+
overrideFn,
|
39
|
+
inlineStartOffset
|
40
|
+
} = _ref;
|
41
|
+
super(calculationTypes);
|
42
|
+
_defineProperty(this, "viewportWidth", 0);
|
43
|
+
_defineProperty(this, "scrollOffset", 0);
|
44
|
+
_defineProperty(this, "zeroBasedScrollOffset", 0);
|
45
|
+
_defineProperty(this, "totalColumns", 0);
|
46
|
+
_defineProperty(this, "columnWidthFn", null);
|
47
|
+
_defineProperty(this, "columnWidth", 0);
|
48
|
+
_defineProperty(this, "overrideFn", null);
|
49
|
+
_defineProperty(this, "inlineStartOffset", 0);
|
50
|
+
_defineProperty(this, "totalCalculatedWidth", 0);
|
51
|
+
_defineProperty(this, "startPositions", []);
|
52
|
+
_defineProperty(this, "needReverse", true);
|
53
|
+
this.viewportWidth = viewportWidth;
|
54
|
+
this.scrollOffset = scrollOffset;
|
55
|
+
this.zeroBasedScrollOffset = Math.max(scrollOffset, 0);
|
56
|
+
this.totalColumns = totalColumns;
|
57
|
+
this.columnWidthFn = columnWidthFn;
|
58
|
+
this.overrideFn = overrideFn;
|
59
|
+
this.inlineStartOffset = inlineStartOffset;
|
88
60
|
this.calculate();
|
89
61
|
}
|
90
62
|
|
@@ -92,96 +64,30 @@ class ViewportColumnsCalculator {
|
|
92
64
|
* Calculates viewport.
|
93
65
|
*/
|
94
66
|
calculate() {
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
// +1 pixel for row header width compensation for horizontal scroll > 0
|
104
|
-
const compensatedViewportWidth = zeroBasedScrollOffset > 0 ? viewportWidth + 1 : viewportWidth;
|
105
|
-
let sum = 0;
|
106
|
-
let needReverse = true;
|
107
|
-
const startPositions = [];
|
108
|
-
let columnWidth;
|
109
|
-
let firstVisibleColumnWidth = 0;
|
110
|
-
let lastVisibleColumnWidth = 0;
|
111
|
-
for (let i = 0; i < totalColumns; i++) {
|
112
|
-
columnWidth = this._getColumnWidth(i);
|
113
|
-
if (sum <= zeroBasedScrollOffset && calculationType !== _constants.FULLY_VISIBLE_TYPE) {
|
114
|
-
this.startColumn = i;
|
115
|
-
firstVisibleColumnWidth = columnWidth;
|
116
|
-
}
|
117
|
-
if (sum >= zeroBasedScrollOffset && sum + (calculationType === _constants.FULLY_VISIBLE_TYPE ? columnWidth : 0) <= zeroBasedScrollOffset + compensatedViewportWidth) {
|
118
|
-
if (this.startColumn === null || this.startColumn === undefined) {
|
119
|
-
this.startColumn = i;
|
120
|
-
firstVisibleColumnWidth = columnWidth;
|
121
|
-
}
|
122
|
-
this.endColumn = i;
|
123
|
-
}
|
124
|
-
startPositions.push(sum);
|
125
|
-
sum += columnWidth;
|
126
|
-
lastVisibleColumnWidth = columnWidth;
|
127
|
-
if (calculationType !== _constants.FULLY_VISIBLE_TYPE) {
|
128
|
-
this.endColumn = i;
|
129
|
-
}
|
130
|
-
if (sum >= zeroBasedScrollOffset + viewportWidth) {
|
131
|
-
needReverse = false;
|
67
|
+
this._initialize(this);
|
68
|
+
for (let column = 0; column < this.totalColumns; column++) {
|
69
|
+
this.columnWidth = this.getColumnWidth(column);
|
70
|
+
this._process(column, this);
|
71
|
+
this.startPositions.push(this.totalCalculatedWidth);
|
72
|
+
this.totalCalculatedWidth += this.columnWidth;
|
73
|
+
if (this.totalCalculatedWidth >= this.zeroBasedScrollOffset + this.viewportWidth) {
|
74
|
+
this.needReverse = false;
|
132
75
|
break;
|
133
76
|
}
|
134
77
|
}
|
135
|
-
|
136
|
-
const inlineEndColumnOffset = calculationType === _constants.FULLY_VISIBLE_TYPE ? 0 : lastVisibleColumnWidth;
|
137
|
-
const inlineStartColumnOffset = calculationType === _constants.FULLY_VISIBLE_TYPE ? firstVisibleColumnWidth : 0;
|
138
|
-
if (
|
139
|
-
// the table is to the left of the viewport
|
140
|
-
mostRightScrollOffset < -1 * _classPrivateFieldGet(_options, this).inlineStartOffset || scrollOffset > startPositions.at(-1) + inlineEndColumnOffset ||
|
141
|
-
// the table is to the right of the viewport
|
142
|
-
-1 * _classPrivateFieldGet(_options, this).scrollOffset - _classPrivateFieldGet(_options, this).viewportWidth > -1 * inlineStartColumnOffset) {
|
143
|
-
this.isVisibleInTrimmingContainer = false;
|
144
|
-
} else {
|
145
|
-
this.isVisibleInTrimmingContainer = true;
|
146
|
-
}
|
147
|
-
if (this.endColumn === totalColumns - 1 && needReverse) {
|
148
|
-
this.startColumn = this.endColumn;
|
149
|
-
while (this.startColumn > 0) {
|
150
|
-
const viewportSum = startPositions[this.endColumn] + columnWidth - startPositions[this.startColumn - 1];
|
151
|
-
if (viewportSum <= viewportWidth || calculationType !== _constants.FULLY_VISIBLE_TYPE) {
|
152
|
-
this.startColumn -= 1;
|
153
|
-
}
|
154
|
-
if (viewportSum > viewportWidth) {
|
155
|
-
break;
|
156
|
-
}
|
157
|
-
}
|
158
|
-
}
|
159
|
-
if (calculationType === _constants.RENDER_TYPE && this.startColumn !== null && overrideFn) {
|
160
|
-
overrideFn(this);
|
161
|
-
}
|
162
|
-
this.startPosition = startPositions[this.startColumn];
|
163
|
-
if (this.startPosition === undefined) {
|
164
|
-
this.startPosition = null;
|
165
|
-
}
|
166
|
-
|
167
|
-
// If totalColumns exceeded its total columns size set endColumn to the latest item
|
168
|
-
if (totalColumns < this.endColumn) {
|
169
|
-
this.endColumn = totalColumns - 1;
|
170
|
-
}
|
171
|
-
if (this.startColumn !== null) {
|
172
|
-
this.count = this.endColumn - this.startColumn + 1;
|
173
|
-
}
|
78
|
+
this._finalize(this);
|
174
79
|
}
|
175
80
|
|
176
81
|
/**
|
177
|
-
*
|
82
|
+
* Gets the column width at the specified column index.
|
83
|
+
*
|
84
|
+
* @param {number} column Column index.
|
178
85
|
* @returns {number}
|
179
|
-
* @private
|
180
86
|
*/
|
181
|
-
|
182
|
-
|
87
|
+
getColumnWidth(column) {
|
88
|
+
const width = this.columnWidthFn(column);
|
183
89
|
if (isNaN(width)) {
|
184
|
-
|
90
|
+
return DEFAULT_WIDTH;
|
185
91
|
}
|
186
92
|
return width;
|
187
93
|
}
|