@revolist/revogrid 4.22.1 → 4.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{cell-renderer-BQdEGQXP.js → cell-renderer-DWJ9Px9f.js} +9 -3
- package/dist/cjs/{column.drag.plugin-RDjQhKCH.js → column.drag.plugin-CaEBDG-Q.js} +391 -256
- package/dist/cjs/{column.service-DXYMehqK.js → column.service-f612L4ql.js} +1 -1
- package/dist/cjs/{dimension.helpers-CiiNnlLa.js → dimension.helpers-B9HgANnM.js} +14 -145
- package/dist/cjs/{edit.utils-CecCfA4E.js → edit.utils-pKeiYFLJ.js} +1 -1
- package/dist/cjs/{header-cell-renderer-DGyBrK8I.js → header-cell-renderer-4yq9_WbM.js} +1 -1
- package/dist/cjs/index-DxaSE5uZ.js +136 -0
- package/dist/cjs/index.cjs.js +37 -32
- package/dist/cjs/revo-grid.cjs.entry.js +35 -15
- package/dist/cjs/revogr-attribution_7.cjs.entry.js +43 -25
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js +10 -8
- package/dist/cjs/revogr-data_4.cjs.entry.js +26 -17
- package/dist/cjs/revogr-filter-panel.cjs.entry.js +2 -1
- package/dist/cjs/{text-editor-DnLZW1a-.js → text-editor-B4W-m-r-.js} +3 -3
- package/dist/cjs/{throttle-CfgQFkfR.js → throttle-BCwEuJJq.js} +59 -24
- package/dist/cjs/viewport.helpers-BND76K2j.js +140 -0
- package/dist/cjs/{viewport.store-q6YdR9mg.js → viewport.store-BlKQ4x9H.js} +16 -16
- package/dist/collection/components/data/revogr-data.js +5 -3
- package/dist/collection/components/header/header-group-renderer.js +1 -1
- package/dist/collection/components/header/header-renderer.js +1 -1
- package/dist/collection/components/header/revogr-header-style.css +13 -3
- package/dist/collection/components/header/revogr-header.js +5 -2
- package/dist/collection/components/order/order-row.service.js +6 -5
- package/dist/collection/components/overlay/keyboard.service.js +23 -1
- package/dist/collection/components/overlay/selection.utils.js +8 -6
- package/dist/collection/components/revoGrid/revo-grid.js +6 -5
- package/dist/collection/components/revoGrid/viewport.service.js +2 -1
- package/dist/collection/components/scroll/revogr-viewport-scroll.js +10 -6
- package/dist/collection/components/scrollable/revogr-scroll-virtual.js +4 -10
- package/dist/collection/plugins/filter/filter.panel.js +2 -1
- package/dist/collection/plugins/filter/filter.plugin.js +11 -4
- package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +25 -1
- package/dist/collection/plugins/moveColumn/column.drag.plugin.js +4 -4
- package/dist/collection/plugins/sorting/sorting.func.js +173 -15
- package/dist/collection/plugins/sorting/sorting.plugin.js +167 -84
- package/dist/collection/plugins/sorting/sorting.sign.js +7 -1
- package/dist/collection/serve/controller.js +98 -37
- package/dist/collection/serve/data.js +273 -144
- package/dist/collection/services/dimension.provider.js +16 -1
- package/dist/collection/services/local.scroll.service.js +59 -24
- package/dist/collection/services/scroll.dimension.helpers.js +83 -0
- package/dist/collection/services/selection.store.connector.js +4 -1
- package/dist/collection/store/dimension/dimension.recalculate.plugin.js +22 -9
- package/dist/collection/store/dimension/dimension.store.js +4 -2
- package/dist/collection/store/vp/viewport.helpers.js +9 -0
- package/dist/collection/store/vp/viewport.store.js +5 -16
- package/dist/collection/utils/store.utils.js +3 -3
- package/dist/{revo-grid/cell-renderer-CALsEsnh.js → esm/cell-renderer-8UiGd-s7.js} +9 -3
- package/dist/esm/{column.drag.plugin-Dy5ztusn.js → column.drag.plugin-BsfhsfmB.js} +388 -255
- package/dist/esm/{column.service-CCvAi5l4.js → column.service-DbpulTog.js} +1 -1
- package/dist/{revo-grid/debounce-BfO9dz9v.js → esm/debounce-PCRWZliA.js} +1 -1
- package/dist/{revo-grid/dimension.helpers-DmIvjIa7.js → esm/dimension.helpers-CGKwSvw6.js} +7 -128
- package/dist/esm/{edit.utils-DYN6XZh8.js → edit.utils-Dnnbd0xG.js} +1 -1
- package/dist/{revo-grid/header-cell-renderer-DU8wKAbg.js → esm/header-cell-renderer-DGI2FAD8.js} +1 -1
- package/dist/esm/index-Db3qZoW5.js +127 -0
- package/dist/esm/index.js +11 -10
- package/dist/esm/revo-grid.entry.js +34 -14
- package/dist/esm/revogr-attribution_7.entry.js +42 -24
- package/dist/esm/revogr-clipboard_3.entry.js +11 -9
- package/dist/esm/revogr-data_4.entry.js +27 -18
- package/dist/esm/revogr-filter-panel.entry.js +3 -2
- package/dist/esm/{text-editor-DpCnd6Fq.js → text-editor-C3RUSwH5.js} +2 -2
- package/dist/esm/{throttle-ERvyruXb.js → throttle-CaUDyxyU.js} +60 -25
- package/dist/esm/viewport.helpers-CoCAvmZs.js +133 -0
- package/dist/{revo-grid/viewport.store-CFjDW-3l.js → esm/viewport.store-COAfzAyu.js} +15 -17
- package/dist/{esm/cell-renderer-CALsEsnh.js → revo-grid/cell-renderer-8UiGd-s7.js} +9 -3
- package/dist/revo-grid/{column.drag.plugin-Dy5ztusn.js → column.drag.plugin-BsfhsfmB.js} +388 -255
- package/dist/revo-grid/{column.service-CCvAi5l4.js → column.service-DbpulTog.js} +1 -1
- package/dist/{esm/debounce-BfO9dz9v.js → revo-grid/debounce-PCRWZliA.js} +1 -1
- package/dist/{esm/dimension.helpers-DmIvjIa7.js → revo-grid/dimension.helpers-CGKwSvw6.js} +7 -128
- package/dist/revo-grid/{edit.utils-DYN6XZh8.js → edit.utils-Dnnbd0xG.js} +1 -1
- package/dist/{esm/header-cell-renderer-DU8wKAbg.js → revo-grid/header-cell-renderer-DGI2FAD8.js} +1 -1
- package/dist/revo-grid/index-Db3qZoW5.js +127 -0
- package/dist/revo-grid/index.esm.js +11 -10
- package/dist/revo-grid/revo-grid.entry.js +34 -14
- package/dist/revo-grid/revogr-attribution_7.entry.js +42 -24
- package/dist/revo-grid/revogr-clipboard_3.entry.js +11 -9
- package/dist/revo-grid/revogr-data_4.entry.js +27 -18
- package/dist/revo-grid/revogr-filter-panel.entry.js +3 -2
- package/dist/revo-grid/{text-editor-DpCnd6Fq.js → text-editor-C3RUSwH5.js} +2 -2
- package/dist/revo-grid/{throttle-ERvyruXb.js → throttle-CaUDyxyU.js} +60 -25
- package/dist/revo-grid/viewport.helpers-CoCAvmZs.js +133 -0
- package/dist/{esm/viewport.store-CFjDW-3l.js → revo-grid/viewport.store-COAfzAyu.js} +15 -17
- package/dist/types/components/header/header-group-renderer.d.ts +1 -0
- package/dist/types/components/header/header-renderer.d.ts +1 -0
- package/dist/types/components/overlay/keyboard.service.d.ts +5 -0
- package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +8 -0
- package/dist/types/plugins/sorting/sorting.func.d.ts +25 -2
- package/dist/types/plugins/sorting/sorting.plugin.d.ts +84 -9
- package/dist/types/plugins/sorting/sorting.sign.d.ts +5 -1
- package/dist/types/plugins/sorting/sorting.types.d.ts +46 -1
- package/dist/types/services/local.scroll.service.d.ts +10 -2
- package/dist/types/services/scroll.dimension.helpers.d.ts +20 -0
- package/dist/types/store/vp/viewport.helpers.d.ts +2 -0
- package/dist/types/types/interfaces.d.ts +11 -0
- package/hydrate/index.js +649 -365
- package/hydrate/index.mjs +649 -365
- package/package.json +1 -1
- package/standalone/column.service.js +1 -1
- package/standalone/data.store.js +1 -1
- package/standalone/debounce.js +1 -1
- package/standalone/dimension.helpers.js +1 -1
- package/standalone/index.js +1 -1
- package/standalone/local.scroll.timer.js +1 -1
- package/standalone/revo-grid.js +1 -1
- package/standalone/revogr-data2.js +1 -1
- package/standalone/revogr-filter-panel.js +1 -1
- package/standalone/revogr-header2.js +1 -1
- package/standalone/revogr-order-editor2.js +1 -1
- package/standalone/revogr-overlay-selection2.js +1 -1
- package/standalone/revogr-row-headers.js +1 -1
- package/standalone/revogr-row-headers2.js +1 -1
- package/standalone/revogr-scroll-virtual2.js +1 -1
- package/standalone/revogr-viewport-scroll2.js +1 -1
- package/standalone/selection.utils.js +1 -1
- package/standalone/throttle.js +1 -1
- package/standalone/toNumber.js +1 -1
- package/dist/cjs/viewport.helpers-BAovztDd.js +0 -58
- package/dist/esm/viewport.helpers-VXhsJZtn.js +0 -52
- package/dist/revo-grid/viewport.helpers-VXhsJZtn.js +0 -52
|
@@ -4,14 +4,15 @@
|
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
6
|
var index = require('./index-Dq8Xzj5l.js');
|
|
7
|
-
var dimension_helpers = require('./dimension.helpers-
|
|
7
|
+
var dimension_helpers = require('./dimension.helpers-B9HgANnM.js');
|
|
8
8
|
var events = require('./events-DeLDyZlb.js');
|
|
9
|
-
var column_service = require('./column.service-
|
|
10
|
-
var edit_utils = require('./edit.utils-
|
|
9
|
+
var column_service = require('./column.service-f612L4ql.js');
|
|
10
|
+
var edit_utils = require('./edit.utils-pKeiYFLJ.js');
|
|
11
|
+
var index$1 = require('./index-DxaSE5uZ.js');
|
|
11
12
|
var debounce = require('./debounce-CcpHiH2p.js');
|
|
12
|
-
var viewport_store = require('./viewport.store-
|
|
13
|
-
var viewport_helpers = require('./viewport.helpers-
|
|
14
|
-
var throttle = require('./throttle-
|
|
13
|
+
var viewport_store = require('./viewport.store-BlKQ4x9H.js');
|
|
14
|
+
var viewport_helpers = require('./viewport.helpers-BND76K2j.js');
|
|
15
|
+
var throttle = require('./throttle-BCwEuJJq.js');
|
|
15
16
|
|
|
16
17
|
const Attribution = class {
|
|
17
18
|
constructor(hostRef) {
|
|
@@ -109,8 +110,8 @@ function getCurrentCell({ x, y }, { el, rows, cols }) {
|
|
|
109
110
|
cellX = width - 1;
|
|
110
111
|
}
|
|
111
112
|
// Get the row and column items based on the cell position
|
|
112
|
-
const rgRow = dimension_helpers.getItemByPosition(rows, cellY);
|
|
113
|
-
const rgCol = dimension_helpers.getItemByPosition(cols, cellX);
|
|
113
|
+
const rgRow = dimension_helpers.getItemByPosition(rows, cellY + (rows.renderOffset || 0));
|
|
114
|
+
const rgCol = dimension_helpers.getItemByPosition(cols, cellX + (cols.renderOffset || 0));
|
|
114
115
|
// Set the row and column index to 0 if they are before the first item
|
|
115
116
|
if (rgCol.itemIndex < 0) {
|
|
116
117
|
rgCol.itemIndex = 0;
|
|
@@ -180,10 +181,12 @@ function styleByCellProps(styles) {
|
|
|
180
181
|
};
|
|
181
182
|
}
|
|
182
183
|
function getCell({ x, y, x1, y1 }, dimensionRow, dimensionCol) {
|
|
183
|
-
const
|
|
184
|
-
const
|
|
185
|
-
const
|
|
186
|
-
const
|
|
184
|
+
const rowOffset = dimensionRow.renderOffset || 0;
|
|
185
|
+
const colOffset = dimensionCol.renderOffset || 0;
|
|
186
|
+
const top = dimension_helpers.getItemByIndex(dimensionRow, y).start - rowOffset;
|
|
187
|
+
const left = dimension_helpers.getItemByIndex(dimensionCol, x).start - colOffset;
|
|
188
|
+
const bottom = dimension_helpers.getItemByIndex(dimensionRow, y1).end - rowOffset;
|
|
189
|
+
const right = dimension_helpers.getItemByIndex(dimensionCol, x1).end - colOffset;
|
|
187
190
|
return {
|
|
188
191
|
left,
|
|
189
192
|
right,
|
|
@@ -281,9 +284,29 @@ class KeyboardService {
|
|
|
281
284
|
constructor(sv) {
|
|
282
285
|
this.sv = sv;
|
|
283
286
|
}
|
|
287
|
+
/**
|
|
288
|
+
* Appends printable key input that arrives after edit mode was requested
|
|
289
|
+
* but before the editor input has mounted or received focus.
|
|
290
|
+
*/
|
|
291
|
+
appendPendingEditValue(e) {
|
|
292
|
+
if (edit_utils.isShortcutModifier(e) ||
|
|
293
|
+
e.key.length !== 1 ||
|
|
294
|
+
(e.target instanceof HTMLElement && edit_utils.isEditInput(e.target))) {
|
|
295
|
+
return false;
|
|
296
|
+
}
|
|
297
|
+
const editCell = this.sv.selectionStore.get('edit');
|
|
298
|
+
if (typeof (editCell === null || editCell === void 0 ? void 0 : editCell.val) !== 'string') {
|
|
299
|
+
return false;
|
|
300
|
+
}
|
|
301
|
+
this.sv.selectionStore.set('edit', Object.assign(Object.assign({}, editCell), { val: `${editCell.val}${e.key}` }));
|
|
302
|
+
return true;
|
|
303
|
+
}
|
|
284
304
|
async keyDown(e, canRange, isEditMode, { range, focus }) {
|
|
285
305
|
// IF EDIT MODE
|
|
286
306
|
if (isEditMode) {
|
|
307
|
+
if (this.appendPendingEditValue(e)) {
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
287
310
|
switch (e.code) {
|
|
288
311
|
case dimension_helpers.codesLetter.ESCAPE:
|
|
289
312
|
this.sv.cancel();
|
|
@@ -362,7 +385,7 @@ class KeyboardService {
|
|
|
362
385
|
// this interval needed for several cases
|
|
363
386
|
// grid could be resized before next click
|
|
364
387
|
// at this case to avoid screen jump we use this interval
|
|
365
|
-
await
|
|
388
|
+
await index$1.timeout(dimension_helpers.RESIZE_INTERVAL + 30);
|
|
366
389
|
const range = this.sv.selectionStore.get('range');
|
|
367
390
|
const focus = this.sv.selectionStore.get('focus');
|
|
368
391
|
return this.keyPositionChange(data.changes, range, focus, data.isMulti);
|
|
@@ -377,7 +400,8 @@ class KeyboardService {
|
|
|
377
400
|
}
|
|
378
401
|
const eData = this.sv.getData();
|
|
379
402
|
if (isMulti) {
|
|
380
|
-
|
|
403
|
+
const isOutOfBounds = [data.start, data.end].some(cell => isAfterLast(cell, eData.lastCell) || isBeforeFirst(cell));
|
|
404
|
+
if (isOutOfBounds) {
|
|
381
405
|
return false;
|
|
382
406
|
}
|
|
383
407
|
const range = column_service.getRange(data.start, data.end);
|
|
@@ -1288,15 +1312,9 @@ const RevogrScrollVirtual = class {
|
|
|
1288
1312
|
*/
|
|
1289
1313
|
async changeScroll(e) {
|
|
1290
1314
|
if (e.delta) {
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
break;
|
|
1295
|
-
case 'rgRow':
|
|
1296
|
-
e.coordinate = this.element.scrollTop + e.delta;
|
|
1297
|
-
break;
|
|
1298
|
-
}
|
|
1299
|
-
this.setScroll(e);
|
|
1315
|
+
const scrollProperty = e.dimension === 'rgRow' ? 'scrollTop' : 'scrollLeft';
|
|
1316
|
+
const currentPhysicalCoordinate = this.element[scrollProperty];
|
|
1317
|
+
return this.localScrollService.setScrollByDelta(e, currentPhysicalCoordinate);
|
|
1300
1318
|
}
|
|
1301
1319
|
return e;
|
|
1302
1320
|
}
|
|
@@ -1317,7 +1335,7 @@ const RevogrScrollVirtual = class {
|
|
|
1317
1335
|
this.autohideScrollPlugin.clear();
|
|
1318
1336
|
}
|
|
1319
1337
|
componentWillLoad() {
|
|
1320
|
-
this.scrollSize =
|
|
1338
|
+
this.scrollSize = index$1.getScrollbarSize(document);
|
|
1321
1339
|
}
|
|
1322
1340
|
componentDidRender() {
|
|
1323
1341
|
let scrollSize = 0;
|
|
@@ -1359,7 +1377,7 @@ const RevogrScrollVirtual = class {
|
|
|
1359
1377
|
}
|
|
1360
1378
|
render() {
|
|
1361
1379
|
const size = throttle.getContentSize(this.realSize, this.dimension === 'rgRow' ? this.element.clientHeight : this.element.clientWidth, this.clientSize);
|
|
1362
|
-
return (index.h(index.Host, { key: '
|
|
1380
|
+
return (index.h(index.Host, { key: '7213817ef941eee4050b714266598ec0c2961ee9', onScroll: (e) => this.onScroll(e) }, index.h("div", { key: '501da49c63253ab943172494b9dbf5399be56cee', style: {
|
|
1363
1381
|
[this.dimension === 'rgRow' ? 'height' : 'width']: `${size}px`,
|
|
1364
1382
|
} })));
|
|
1365
1383
|
}
|
|
@@ -4,10 +4,11 @@
|
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
6
|
var index = require('./index-Dq8Xzj5l.js');
|
|
7
|
-
var dimension_helpers = require('./dimension.helpers-
|
|
8
|
-
var textEditor = require('./text-editor-
|
|
9
|
-
var edit_utils = require('./edit.utils-
|
|
7
|
+
var dimension_helpers = require('./dimension.helpers-B9HgANnM.js');
|
|
8
|
+
var textEditor = require('./text-editor-B4W-m-r-.js');
|
|
9
|
+
var edit_utils = require('./edit.utils-pKeiYFLJ.js');
|
|
10
10
|
var debounce = require('./debounce-CcpHiH2p.js');
|
|
11
|
+
require('./index-DxaSE5uZ.js');
|
|
11
12
|
|
|
12
13
|
const Clipboard = class {
|
|
13
14
|
constructor(hostRef) {
|
|
@@ -334,11 +335,12 @@ class RowOrderService {
|
|
|
334
335
|
getRow(y, { el, rows }) {
|
|
335
336
|
const { top } = el.getBoundingClientRect();
|
|
336
337
|
const topRelative = y - top;
|
|
337
|
-
const
|
|
338
|
+
const rowOffset = rows.renderOffset || 0;
|
|
339
|
+
const rgRow = dimension_helpers.getItemByPosition(rows, topRelative + rowOffset);
|
|
338
340
|
const absolutePosition = {
|
|
339
341
|
itemIndex: rgRow.itemIndex,
|
|
340
|
-
start: rgRow.start + top,
|
|
341
|
-
end: rgRow.end + top,
|
|
342
|
+
start: rgRow.start - rowOffset + top,
|
|
343
|
+
end: rgRow.end - rowOffset + top,
|
|
342
344
|
};
|
|
343
345
|
return absolutePosition;
|
|
344
346
|
}
|
|
@@ -347,8 +349,8 @@ class RowOrderService {
|
|
|
347
349
|
const { top, left } = el.getBoundingClientRect();
|
|
348
350
|
const topRelative = y - top;
|
|
349
351
|
const leftRelative = x - left;
|
|
350
|
-
const rgRow = dimension_helpers.getItemByPosition(rows, topRelative);
|
|
351
|
-
const rgCol = dimension_helpers.getItemByPosition(cols, leftRelative);
|
|
352
|
+
const rgRow = dimension_helpers.getItemByPosition(rows, topRelative + (rows.renderOffset || 0));
|
|
353
|
+
const rgCol = dimension_helpers.getItemByPosition(cols, leftRelative + (cols.renderOffset || 0));
|
|
352
354
|
return { x: rgCol.itemIndex, y: rgRow.itemIndex };
|
|
353
355
|
}
|
|
354
356
|
}
|
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
6
|
var index = require('./index-Dq8Xzj5l.js');
|
|
7
|
-
var column_service = require('./column.service-
|
|
8
|
-
var dimension_helpers = require('./dimension.helpers-
|
|
9
|
-
var cellRenderer = require('./cell-renderer-
|
|
7
|
+
var column_service = require('./column.service-f612L4ql.js');
|
|
8
|
+
var dimension_helpers = require('./dimension.helpers-B9HgANnM.js');
|
|
9
|
+
var cellRenderer = require('./cell-renderer-DWJ9Px9f.js');
|
|
10
10
|
var filter_button = require('./filter.button-w6LWnyhi.js');
|
|
11
|
-
var headerCellRenderer = require('./header-cell-renderer-
|
|
12
|
-
var throttle = require('./throttle-
|
|
13
|
-
var viewport_helpers = require('./viewport.helpers-
|
|
11
|
+
var headerCellRenderer = require('./header-cell-renderer-4yq9_WbM.js');
|
|
12
|
+
var throttle = require('./throttle-BCwEuJJq.js');
|
|
13
|
+
var viewport_helpers = require('./viewport.helpers-BND76K2j.js');
|
|
14
14
|
require('./debounce-CcpHiH2p.js');
|
|
15
15
|
|
|
16
16
|
/**
|
|
@@ -170,11 +170,13 @@ const RevogrData = class {
|
|
|
170
170
|
const depth = this.dataStore.get('groupingDepth');
|
|
171
171
|
const groupingCustomRenderer = this.dataStore.get('groupingCustomRenderer');
|
|
172
172
|
const groupDepth = this.columnService.hasGrouping ? depth : 0;
|
|
173
|
+
const rowRenderOffset = this.viewportRow.get('renderOffset') || 0;
|
|
174
|
+
const colRenderOffset = this.viewportCol.get('renderOffset') || 0;
|
|
173
175
|
for (let rgRow of rows) {
|
|
174
176
|
const dataItem = dimension_helpers.getSourceItem(this.dataStore, rgRow.itemIndex);
|
|
175
177
|
// #region Grouping
|
|
176
178
|
if (column_service.isGrouping(dataItem)) {
|
|
177
|
-
const gmodel = Object.assign(Object.assign({}, rgRow), { index: rgRow.itemIndex, model: dataItem, groupingCustomRenderer,
|
|
179
|
+
const gmodel = Object.assign(Object.assign({}, rgRow), { start: rgRow.start - rowRenderOffset, index: rgRow.itemIndex, model: dataItem, groupingCustomRenderer,
|
|
178
180
|
// Only show expand button if grouping is enabled and not in row headers
|
|
179
181
|
hasExpand: this.columnService.hasGrouping && this.colType !== 'rowHeaders', columnItems: cols, providers: this.providers });
|
|
180
182
|
rowsEls.push(index.h(cellRenderer.GroupingRowRenderer, Object.assign({}, gmodel)));
|
|
@@ -197,7 +199,7 @@ const RevogrData = class {
|
|
|
197
199
|
[dimension_helpers.DATA_ROW]: rowProps.itemIndex,
|
|
198
200
|
style: {
|
|
199
201
|
width: `${columnProps.size}px`,
|
|
200
|
-
transform: `translateX(${columnProps.start}px)`,
|
|
202
|
+
transform: `translateX(${columnProps.start - colRenderOffset}px)`,
|
|
201
203
|
height: rowProps.size ? `${rowProps.size}px` : undefined,
|
|
202
204
|
},
|
|
203
205
|
};
|
|
@@ -225,7 +227,7 @@ const RevogrData = class {
|
|
|
225
227
|
if (this.rowHighlightPlugin.isRowFocused(rgRow.itemIndex)) {
|
|
226
228
|
rowClass += ` ${dimension_helpers.ROW_FOCUSED_CLASS}`;
|
|
227
229
|
}
|
|
228
|
-
const row = (index.h(cellRenderer.RowRenderer, { index: rgRow.itemIndex, rowClass: rowClass, size: rgRow.size, start: rgRow.start, groupingLevel: groupDepth || undefined }, cells));
|
|
230
|
+
const row = (index.h(cellRenderer.RowRenderer, { index: rgRow.itemIndex, rowClass: rowClass, size: rgRow.size, start: rgRow.start - rowRenderOffset, groupingLevel: groupDepth || undefined }, cells));
|
|
229
231
|
this.beforerowrender.emit({
|
|
230
232
|
node: row,
|
|
231
233
|
item: rgRow,
|
|
@@ -280,7 +282,7 @@ const HeaderRenderer = (p) => {
|
|
|
280
282
|
class: cellClass,
|
|
281
283
|
style: {
|
|
282
284
|
width: `${p.column.size}px`,
|
|
283
|
-
transform: `translateX(${p.column.start}px)`,
|
|
285
|
+
transform: `translateX(${p.column.start - (p.renderOffset || 0)}px)`,
|
|
284
286
|
},
|
|
285
287
|
onResize: p.onResize,
|
|
286
288
|
onDblClick(originalEvent) {
|
|
@@ -325,7 +327,7 @@ const HeaderGroupRenderer = (p) => {
|
|
|
325
327
|
[dimension_helpers.HEADER_CLASS]: true,
|
|
326
328
|
},
|
|
327
329
|
style: {
|
|
328
|
-
transform: `translateX(${p.start}px)`,
|
|
330
|
+
transform: `translateX(${p.start - (p.renderOffset || 0)}px)`,
|
|
329
331
|
width: `${p.end - p.start}px`,
|
|
330
332
|
},
|
|
331
333
|
onResize: p.onResize,
|
|
@@ -333,7 +335,7 @@ const HeaderGroupRenderer = (p) => {
|
|
|
333
335
|
return (index.h(headerCellRenderer.HeaderCellRenderer, { data: Object.assign(Object.assign({}, p.group), { prop: '', providers: p.providers, index: p.start }), props: groupProps, additionalData: p.additionalData }));
|
|
334
336
|
};
|
|
335
337
|
|
|
336
|
-
const revogrHeaderStyleCss = () => `@charset "UTF-8";revogr-header{position:relative;z-index:5;display:block}revogr-header .header-rgRow{display:block;position:relative}revogr-header .header-rgRow.group{z-index:0}revogr-header .group-rgRow{position:relative;overflow:hidden}revogr-header .rgHeaderCell{position:absolute;box-sizing:border-box;height:100%;z-index:1;display:flex}revogr-header .rgHeaderCell.align-center{text-align:center}revogr-header .rgHeaderCell.align-left{text-align:left}revogr-header .rgHeaderCell.align-right{text-align:right}revogr-header .rgHeaderCell.sortable{cursor:pointer}revogr-header .rgHeaderCell i.asc:after,revogr-header .rgHeaderCell i.desc:after{font-size:13px}revogr-header .rgHeaderCell i.asc:after{content:"↑"}revogr-header .rgHeaderCell i.desc:after{content:"↓"}revogr-header .rgHeaderCell.active{z-index:10}revogr-header .rgHeaderCell.active .resizable{background-color:deepskyblue}revogr-header .rgHeaderCell .header-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-grow:1}revogr-header .rgHeaderCell .resizable{display:block;position:absolute;z-index:90;touch-action:none;user-select:none}revogr-header .rgHeaderCell .resizable:hover{background-color:deepskyblue}revogr-header .rgHeaderCell>.resizable-r{cursor:ew-resize;width:6px;right:0;top:0;height:100%}revogr-header .rgHeaderCell>.resizable-rb{cursor:se-resize;width:6px;height:6px;right:0;bottom:0}revogr-header .rgHeaderCell>.resizable-b{cursor:s-resize;height:6px;bottom:0;width:100%;left:0}revogr-header .rgHeaderCell>.resizable-lb{cursor:sw-resize;width:6px;height:6px;left:0;bottom:0}revogr-header .rgHeaderCell>.resizable-l{cursor:w-resize;width:6px;left:0;height:100%;top:0}revogr-header .rgHeaderCell>.resizable-lt{cursor:nw-resize;width:6px;height:6px;left:0;top:0}revogr-header .rgHeaderCell>.resizable-t{cursor:n-resize;height:6px;top:0;width:100%;left:0}revogr-header .rgHeaderCell>.resizable-rt{cursor:ne-resize;width:6px;height:6px;right:0;top:0}revogr-header .rv-filter{visibility:hidden}`;
|
|
338
|
+
const revogrHeaderStyleCss = () => `@charset "UTF-8";revogr-header{position:relative;z-index:5;display:block}revogr-header .header-rgRow{display:block;position:relative}revogr-header .header-rgRow.group{z-index:0}revogr-header .group-rgRow{position:relative;overflow:hidden}revogr-header .rgHeaderCell{position:absolute;box-sizing:border-box;height:100%;z-index:1;display:flex}revogr-header .rgHeaderCell.align-center{text-align:center}revogr-header .rgHeaderCell.align-left{text-align:left}revogr-header .rgHeaderCell.align-right{text-align:right}revogr-header .rgHeaderCell.sortable{cursor:pointer}revogr-header .rgHeaderCell .sort-indicator{display:inline-flex;align-items:flex-start;gap:1px}revogr-header .rgHeaderCell .sort-indicator i.asc:after,revogr-header .rgHeaderCell .sort-indicator i.desc:after{font-size:13px}revogr-header .rgHeaderCell .sort-indicator i.asc:after{content:"↑"}revogr-header .rgHeaderCell .sort-indicator i.desc:after{content:"↓"}revogr-header .rgHeaderCell .sort-indicator .sort-order-index{font-size:10px;line-height:1;top:0}revogr-header .rgHeaderCell.active{z-index:10}revogr-header .rgHeaderCell.active .resizable{background-color:deepskyblue}revogr-header .rgHeaderCell .header-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-grow:1}revogr-header .rgHeaderCell .resizable{display:block;position:absolute;z-index:90;touch-action:none;user-select:none}revogr-header .rgHeaderCell .resizable:hover{background-color:deepskyblue}revogr-header .rgHeaderCell>.resizable-r{cursor:ew-resize;width:6px;right:0;top:0;height:100%}revogr-header .rgHeaderCell>.resizable-rb{cursor:se-resize;width:6px;height:6px;right:0;bottom:0}revogr-header .rgHeaderCell>.resizable-b{cursor:s-resize;height:6px;bottom:0;width:100%;left:0}revogr-header .rgHeaderCell>.resizable-lb{cursor:sw-resize;width:6px;height:6px;left:0;bottom:0}revogr-header .rgHeaderCell>.resizable-l{cursor:w-resize;width:6px;left:0;height:100%;top:0}revogr-header .rgHeaderCell>.resizable-lt{cursor:nw-resize;width:6px;height:6px;left:0;top:0}revogr-header .rgHeaderCell>.resizable-t{cursor:n-resize;height:6px;top:0;width:100%;left:0}revogr-header .rgHeaderCell>.resizable-rt{cursor:ne-resize;width:6px;height:6px;right:0;top:0}revogr-header .rv-filter{visibility:hidden}`;
|
|
337
339
|
|
|
338
340
|
const RevogrHeaderComponent = class {
|
|
339
341
|
constructor(hostRef) {
|
|
@@ -389,6 +391,7 @@ const RevogrHeaderComponent = class {
|
|
|
389
391
|
}
|
|
390
392
|
renderHeaderColumns(cols, range) {
|
|
391
393
|
const columnsToRender = [];
|
|
394
|
+
const renderOffset = this.viewportCol.get('renderOffset') || 0;
|
|
392
395
|
for (let rgCol of cols) {
|
|
393
396
|
const colData = this.colData[rgCol.itemIndex];
|
|
394
397
|
const props = {
|
|
@@ -397,6 +400,7 @@ const RevogrHeaderComponent = class {
|
|
|
397
400
|
data: Object.assign(Object.assign({}, colData), { index: rgCol.itemIndex, providers: this.providers }),
|
|
398
401
|
canFilter: !!this.columnFilter,
|
|
399
402
|
canResize: this.canResize,
|
|
403
|
+
renderOffset,
|
|
400
404
|
active: this.resizeHandler,
|
|
401
405
|
additionalData: this.additionalData,
|
|
402
406
|
onResize: e => this.onResize(e, rgCol.itemIndex),
|
|
@@ -449,6 +453,7 @@ const RevogrHeaderComponent = class {
|
|
|
449
453
|
start: groupStart,
|
|
450
454
|
end: groupEnd,
|
|
451
455
|
group,
|
|
456
|
+
renderOffset: this.viewportCol.get('renderOffset') || 0,
|
|
452
457
|
active: this.resizeHandler,
|
|
453
458
|
canResize: this.canResize,
|
|
454
459
|
additionalData: this.additionalData,
|
|
@@ -603,7 +608,7 @@ const RevogrViewportScroll = class {
|
|
|
603
608
|
* @param e
|
|
604
609
|
*/
|
|
605
610
|
async changeScroll(e, silent = false) {
|
|
606
|
-
var _a, _b;
|
|
611
|
+
var _a, _b, _c, _d;
|
|
607
612
|
if (silent) {
|
|
608
613
|
if (e.coordinate && this.verticalScroll) {
|
|
609
614
|
switch (e.dimension) {
|
|
@@ -616,15 +621,16 @@ const RevogrViewportScroll = class {
|
|
|
616
621
|
return;
|
|
617
622
|
}
|
|
618
623
|
if (e.delta) {
|
|
624
|
+
let currentPhysicalCoordinate = 0;
|
|
619
625
|
switch (e.dimension) {
|
|
620
626
|
case 'rgCol':
|
|
621
|
-
|
|
627
|
+
currentPhysicalCoordinate = this.horizontalScroll.scrollLeft;
|
|
622
628
|
break;
|
|
623
629
|
case 'rgRow':
|
|
624
|
-
|
|
630
|
+
currentPhysicalCoordinate = (_b = (_a = this.verticalScroll) === null || _a === void 0 ? void 0 : _a.scrollTop) !== null && _b !== void 0 ? _b : 0;
|
|
625
631
|
break;
|
|
626
632
|
}
|
|
627
|
-
this.
|
|
633
|
+
return (_d = (_c = this.localScrollService) === null || _c === void 0 ? void 0 : _c.setScrollByDelta(e, currentPhysicalCoordinate)) !== null && _d !== void 0 ? _d : e;
|
|
628
634
|
}
|
|
629
635
|
return e;
|
|
630
636
|
}
|
|
@@ -776,7 +782,10 @@ const RevogrViewportScroll = class {
|
|
|
776
782
|
this.setScrollVisibility('rgCol', this.horizontalScroll.clientWidth, this.contentWidth);
|
|
777
783
|
}
|
|
778
784
|
render() {
|
|
779
|
-
|
|
785
|
+
var _a, _b, _c, _d;
|
|
786
|
+
const physicalContentHeight = throttle.getContentSize(this.contentHeight, (_b = (_a = this.verticalScroll) === null || _a === void 0 ? void 0 : _a.clientHeight) !== null && _b !== void 0 ? _b : 0);
|
|
787
|
+
const physicalContentWidth = throttle.getContentSize(this.contentWidth, (_d = (_c = this.horizontalScroll) === null || _c === void 0 ? void 0 : _c.clientWidth) !== null && _d !== void 0 ? _d : 0);
|
|
788
|
+
return (index.h(index.Host, { key: 'a0c47dede9d131dea8c8ca449e8a323f24d9b113', onWheel: this.horizontalMouseWheel, onScroll: (e) => this.applyScroll('rgCol', e) }, index.h("div", { key: '6c960e753ffe522ba4afb1c379264873b6c617f3', class: "inner-content-table", style: { width: `${physicalContentWidth}px` } }, index.h("div", { key: '1a6cbcbd3634e84756b54c8150aebd25c824e14a', class: "header-wrapper", ref: e => (this.header = e) }, index.h("slot", { key: 'e4202c687bc39b4f78f3ed9840e979b032f06af8', name: viewport_helpers.HEADER_SLOT })), index.h("div", { key: '651415b5b32e72735065b183317386a34042bb85', class: "vertical-inner", ref: el => (this.verticalScroll = el), onWheel: this.verticalMouseWheel, onScroll: (e) => this.applyScroll('rgRow', e) }, index.h("div", { key: 'e65623b78d80957d8676adb019618953ef267ec3', class: "content-wrapper", style: { height: `${physicalContentHeight}px` } }, index.h("slot", { key: '5af47b12ef1226587cf774233447b5252d65e836', name: viewport_helpers.CONTENT_SLOT }))), index.h("div", { key: 'cbc0fd64fbfb53d3b18e547bbe34e32b7bb9c043', class: "footer-wrapper", ref: e => (this.footer = e) }, index.h("slot", { key: 'a8e4bfaef400973121090bac3069eb85469a95f3', name: viewport_helpers.FOOTER_SLOT })))));
|
|
780
789
|
}
|
|
781
790
|
/**
|
|
782
791
|
* Extra layer for scroll event monitoring, where MouseWheel event is not passing
|
|
@@ -269,7 +269,8 @@ const FilterPanel = class {
|
|
|
269
269
|
const options = [];
|
|
270
270
|
const prop = this.changes.prop;
|
|
271
271
|
const hidden = new Set();
|
|
272
|
-
Object.
|
|
272
|
+
Object.keys(this.filterItems).forEach((prop) => {
|
|
273
|
+
const values = this.filterItems[prop];
|
|
273
274
|
values.forEach((filter) => {
|
|
274
275
|
if (filter.hidden) {
|
|
275
276
|
hidden.add(filter.type);
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
|
-
var edit_utils = require('./edit.utils-
|
|
7
|
-
var
|
|
6
|
+
var edit_utils = require('./edit.utils-pKeiYFLJ.js');
|
|
7
|
+
var index = require('./index-DxaSE5uZ.js');
|
|
8
8
|
|
|
9
9
|
class TextEditor {
|
|
10
10
|
constructor(data, saveCallback) {
|
|
@@ -20,7 +20,7 @@ class TextEditor {
|
|
|
20
20
|
async componentDidRender() {
|
|
21
21
|
var _a;
|
|
22
22
|
if (this.editInput) {
|
|
23
|
-
await
|
|
23
|
+
await index.timeout();
|
|
24
24
|
(_a = this.editInput) === null || _a === void 0 ? void 0 : _a.focus();
|
|
25
25
|
}
|
|
26
26
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var viewport_helpers = require('./viewport.helpers-BND76K2j.js');
|
|
7
7
|
var debounce = require('./debounce-CcpHiH2p.js');
|
|
8
8
|
|
|
9
9
|
const initialParams = {
|
|
@@ -18,10 +18,11 @@ const NO_COORDINATE = -1;
|
|
|
18
18
|
* return full size
|
|
19
19
|
*/
|
|
20
20
|
function getContentSize(contentSize, clientSize, virtualSize = 0) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
return viewport_helpers.getScrollDimension({
|
|
22
|
+
contentSize,
|
|
23
|
+
clientSize,
|
|
24
|
+
virtualSize,
|
|
25
|
+
}).physicalContentSize;
|
|
25
26
|
}
|
|
26
27
|
class LocalScrollService {
|
|
27
28
|
constructor(cfg) {
|
|
@@ -35,14 +36,20 @@ class LocalScrollService {
|
|
|
35
36
|
rgRow: NO_COORDINATE,
|
|
36
37
|
rgCol: NO_COORDINATE,
|
|
37
38
|
};
|
|
39
|
+
this.previousLogicalScroll = {
|
|
40
|
+
rgRow: 0,
|
|
41
|
+
rgCol: 0,
|
|
42
|
+
};
|
|
38
43
|
this.params = {
|
|
39
44
|
rgRow: Object.assign({}, initialParams),
|
|
40
45
|
rgCol: Object.assign({}, initialParams),
|
|
41
46
|
};
|
|
42
47
|
}
|
|
43
48
|
setParams(params, dimension) {
|
|
44
|
-
const
|
|
45
|
-
|
|
49
|
+
const scrollDimension = viewport_helpers.getScrollDimension(params);
|
|
50
|
+
const virtualContentSize = scrollDimension.physicalContentSize;
|
|
51
|
+
this.params[dimension] = Object.assign(Object.assign({}, params), { maxSize: virtualContentSize - params.clientSize, virtualContentSize,
|
|
52
|
+
scrollDimension });
|
|
46
53
|
}
|
|
47
54
|
// apply scroll values after scroll done
|
|
48
55
|
async setScroll(e) {
|
|
@@ -62,16 +69,27 @@ class LocalScrollService {
|
|
|
62
69
|
await frameAnimation;
|
|
63
70
|
const params = this.getParams(e.dimension);
|
|
64
71
|
e.coordinate = Math.ceil(e.coordinate);
|
|
65
|
-
this.
|
|
72
|
+
this.previousLogicalScroll[e.dimension] = this.wrapLogicalCoordinate(e.coordinate, params);
|
|
73
|
+
const physicalCoordinate = this.toPhysicalCoordinate(e.coordinate, params);
|
|
74
|
+
this.previousScroll[e.dimension] = this.wrapPhysicalCoordinate(physicalCoordinate, params);
|
|
66
75
|
this.preventArtificialScroll[e.dimension] = null;
|
|
67
|
-
this.cfg.applyScroll(Object.assign(Object.assign({}, e), { coordinate:
|
|
68
|
-
? this.convert(e.coordinate, params, false)
|
|
69
|
-
: e.coordinate }));
|
|
76
|
+
this.cfg.applyScroll(Object.assign(Object.assign({}, e), { coordinate: physicalCoordinate }));
|
|
70
77
|
}
|
|
71
78
|
catch (id) {
|
|
72
79
|
window.cancelAnimationFrame(id);
|
|
73
80
|
}
|
|
74
81
|
}
|
|
82
|
+
async setScrollByDelta(e, currentPhysicalCoordinate) {
|
|
83
|
+
var _a;
|
|
84
|
+
const params = this.getParams(e.dimension);
|
|
85
|
+
const baseCoordinate = this.previousScroll[e.dimension] === NO_COORDINATE
|
|
86
|
+
? this.toLogicalCoordinate(currentPhysicalCoordinate, params)
|
|
87
|
+
: this.previousLogicalScroll[e.dimension];
|
|
88
|
+
const coordinate = this.wrapLogicalCoordinate(baseCoordinate + ((_a = e.delta) !== null && _a !== void 0 ? _a : 0), params);
|
|
89
|
+
const nextEvent = Object.assign(Object.assign({}, e), { coordinate });
|
|
90
|
+
await this.setScroll(nextEvent);
|
|
91
|
+
return nextEvent;
|
|
92
|
+
}
|
|
75
93
|
/**
|
|
76
94
|
* On scroll event started
|
|
77
95
|
*/
|
|
@@ -84,21 +102,21 @@ class LocalScrollService {
|
|
|
84
102
|
return;
|
|
85
103
|
}
|
|
86
104
|
const param = this.getParams(dimension);
|
|
105
|
+
const logicalCoordinate = this.toLogicalScrollCoordinate(coordinate, dimension, param, delta);
|
|
87
106
|
// let component know about scroll event started
|
|
88
107
|
this.cfg.runScroll({
|
|
89
108
|
dimension: dimension,
|
|
90
|
-
coordinate:
|
|
91
|
-
? this.convert(coordinate, param)
|
|
92
|
-
: coordinate,
|
|
109
|
+
coordinate: logicalCoordinate,
|
|
93
110
|
delta,
|
|
94
111
|
outside,
|
|
95
112
|
});
|
|
113
|
+
this.previousLogicalScroll[dimension] = logicalCoordinate;
|
|
96
114
|
}
|
|
97
115
|
getParams(dimension) {
|
|
98
116
|
return this.params[dimension];
|
|
99
117
|
}
|
|
100
118
|
// check if scroll outside of region to avoid looping
|
|
101
|
-
|
|
119
|
+
wrapPhysicalCoordinate(c, param) {
|
|
102
120
|
if (c < 0) {
|
|
103
121
|
return NO_COORDINATE;
|
|
104
122
|
}
|
|
@@ -107,22 +125,39 @@ class LocalScrollService {
|
|
|
107
125
|
}
|
|
108
126
|
return c;
|
|
109
127
|
}
|
|
128
|
+
wrapLogicalCoordinate(c, param) {
|
|
129
|
+
var _a, _b;
|
|
130
|
+
if (c < 0) {
|
|
131
|
+
return 0;
|
|
132
|
+
}
|
|
133
|
+
return Math.min(c, (_b = (_a = param.scrollDimension) === null || _a === void 0 ? void 0 : _a.logicalScrollSize) !== null && _b !== void 0 ? _b : c);
|
|
134
|
+
}
|
|
110
135
|
// prevent already started scroll, performance optimization
|
|
111
136
|
cancelScroll(dimension) {
|
|
112
137
|
var _a, _b;
|
|
113
138
|
(_b = (_a = this.preventArtificialScroll)[dimension]) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
114
139
|
this.preventArtificialScroll[dimension] = null;
|
|
115
140
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
141
|
+
toLogicalScrollCoordinate(coordinate, dimension, param, delta) {
|
|
142
|
+
const scrollDimension = param.scrollDimension;
|
|
143
|
+
if (!scrollDimension) {
|
|
144
|
+
return coordinate;
|
|
145
|
+
}
|
|
146
|
+
if (typeof delta === 'number' && scrollDimension.isCompressed) {
|
|
147
|
+
const base = this.previousScroll[dimension] === NO_COORDINATE
|
|
148
|
+
? scrollDimension.toLogicalCoordinate(coordinate - delta)
|
|
149
|
+
: this.previousLogicalScroll[dimension];
|
|
150
|
+
return scrollDimension.toLogicalCoordinate(scrollDimension.toPhysicalCoordinate(base + delta));
|
|
124
151
|
}
|
|
125
|
-
return
|
|
152
|
+
return scrollDimension.toLogicalCoordinate(coordinate);
|
|
153
|
+
}
|
|
154
|
+
toPhysicalCoordinate(coordinate, param) {
|
|
155
|
+
var _a, _b;
|
|
156
|
+
return (_b = (_a = param.scrollDimension) === null || _a === void 0 ? void 0 : _a.toPhysicalCoordinate(coordinate)) !== null && _b !== void 0 ? _b : coordinate;
|
|
157
|
+
}
|
|
158
|
+
toLogicalCoordinate(coordinate, param) {
|
|
159
|
+
var _a, _b;
|
|
160
|
+
return (_b = (_a = param.scrollDimension) === null || _a === void 0 ? void 0 : _a.toLogicalCoordinate(coordinate)) !== null && _b !== void 0 ? _b : coordinate;
|
|
126
161
|
}
|
|
127
162
|
}
|
|
128
163
|
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Built by Revolist OU ❤️
|
|
3
|
+
*/
|
|
4
|
+
'use strict';
|
|
5
|
+
|
|
6
|
+
const FALLBACK_MAX_SCROLL_SIZE = 16000000;
|
|
7
|
+
const SCROLL_SIZE_GUARD = 1000000;
|
|
8
|
+
let detectedMaxScrollSize;
|
|
9
|
+
function getMaxScrollSize(doc = typeof document === 'undefined' ? undefined : document) {
|
|
10
|
+
if (typeof detectedMaxScrollSize === 'number') {
|
|
11
|
+
return detectedMaxScrollSize;
|
|
12
|
+
}
|
|
13
|
+
const body = doc === null || doc === void 0 ? void 0 : doc.body;
|
|
14
|
+
if (body) {
|
|
15
|
+
const ownerDocument = body.ownerDocument;
|
|
16
|
+
const element = ownerDocument.createElement('div');
|
|
17
|
+
element.style.cssText = [
|
|
18
|
+
'height:1px',
|
|
19
|
+
'left:-10000px',
|
|
20
|
+
'overflow:scroll',
|
|
21
|
+
'position:absolute',
|
|
22
|
+
'top:-10000px',
|
|
23
|
+
'visibility:hidden',
|
|
24
|
+
'width:1px',
|
|
25
|
+
].join(';');
|
|
26
|
+
const content = ownerDocument.createElement('div');
|
|
27
|
+
content.style.height = `${FALLBACK_MAX_SCROLL_SIZE * 4}px`;
|
|
28
|
+
element.appendChild(content);
|
|
29
|
+
body.appendChild(element);
|
|
30
|
+
detectedMaxScrollSize = Math.max(0, Math.min(element.scrollHeight, FALLBACK_MAX_SCROLL_SIZE * 4) - SCROLL_SIZE_GUARD);
|
|
31
|
+
element.remove();
|
|
32
|
+
if (detectedMaxScrollSize > SCROLL_SIZE_GUARD) {
|
|
33
|
+
return detectedMaxScrollSize;
|
|
34
|
+
}
|
|
35
|
+
detectedMaxScrollSize = FALLBACK_MAX_SCROLL_SIZE;
|
|
36
|
+
return detectedMaxScrollSize;
|
|
37
|
+
}
|
|
38
|
+
return FALLBACK_MAX_SCROLL_SIZE;
|
|
39
|
+
}
|
|
40
|
+
function getScrollDimension({ contentSize, clientSize, virtualSize = 0, maxScrollSize = getMaxScrollSize(), }) {
|
|
41
|
+
const safeContentSize = Math.max(0, maxScrollSize - SCROLL_SIZE_GUARD);
|
|
42
|
+
const size = Math.max(0, contentSize);
|
|
43
|
+
const client = Math.max(0, clientSize);
|
|
44
|
+
const viewport = Math.max(0, virtualSize || client);
|
|
45
|
+
const logicalScrollSize = Math.max(0, size - viewport);
|
|
46
|
+
const maxPhysicalScrollSize = Math.max(0, safeContentSize - client);
|
|
47
|
+
const physicalScrollSize = Math.min(logicalScrollSize, maxPhysicalScrollSize);
|
|
48
|
+
const physicalContentSize = client + physicalScrollSize;
|
|
49
|
+
const isCompressed = logicalScrollSize > physicalScrollSize && physicalScrollSize > 0;
|
|
50
|
+
const clampLogical = (coordinate) => Math.min(Math.max(0, coordinate || 0), logicalScrollSize);
|
|
51
|
+
const clampPhysical = (coordinate) => Math.min(Math.max(0, coordinate || 0), physicalScrollSize);
|
|
52
|
+
const toLogicalCoordinate = (coordinate) => {
|
|
53
|
+
if (!logicalScrollSize || !physicalScrollSize) {
|
|
54
|
+
return 0;
|
|
55
|
+
}
|
|
56
|
+
if (!isCompressed) {
|
|
57
|
+
return clampLogical(coordinate);
|
|
58
|
+
}
|
|
59
|
+
return clampLogical((clampPhysical(coordinate) / physicalScrollSize) * logicalScrollSize);
|
|
60
|
+
};
|
|
61
|
+
const toPhysicalCoordinate = (coordinate) => {
|
|
62
|
+
if (!logicalScrollSize || !physicalScrollSize) {
|
|
63
|
+
return 0;
|
|
64
|
+
}
|
|
65
|
+
if (!isCompressed) {
|
|
66
|
+
return clampPhysical(coordinate);
|
|
67
|
+
}
|
|
68
|
+
return clampPhysical((clampLogical(coordinate) / logicalScrollSize) * physicalScrollSize);
|
|
69
|
+
};
|
|
70
|
+
return {
|
|
71
|
+
contentSize: size,
|
|
72
|
+
clientSize: client,
|
|
73
|
+
viewportSize: viewport,
|
|
74
|
+
physicalContentSize,
|
|
75
|
+
logicalScrollSize,
|
|
76
|
+
physicalScrollSize,
|
|
77
|
+
isCompressed,
|
|
78
|
+
toLogicalCoordinate,
|
|
79
|
+
toPhysicalCoordinate,
|
|
80
|
+
getRenderOffset(coordinate) {
|
|
81
|
+
const logical = clampLogical(coordinate);
|
|
82
|
+
return logical - toPhysicalCoordinate(logical);
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Collects data for pinned columns in the required @ViewportProps format.
|
|
89
|
+
*/
|
|
90
|
+
/**
|
|
91
|
+
* Represents the slot names for the viewport slots.
|
|
92
|
+
*/
|
|
93
|
+
const HEADER_SLOT = 'header'; // Slot name for the header slot
|
|
94
|
+
const FOOTER_SLOT = 'footer'; // Slot name for the footer slot
|
|
95
|
+
const CONTENT_SLOT = 'content'; // Slot name for the content slot
|
|
96
|
+
const DATA_SLOT = 'data'; // Slot name for the data slot
|
|
97
|
+
/**
|
|
98
|
+
* Returns the last visible cell in the viewport for a given row type.
|
|
99
|
+
* Coordinates are not zero-based and are relative to the viewport.
|
|
100
|
+
* If needed to be zero-based they can be adjusted by subtracting 1.
|
|
101
|
+
*/
|
|
102
|
+
function getLastCell(data, rowType) {
|
|
103
|
+
// Get the last visible column count from the viewport column data.
|
|
104
|
+
const lastVisibleColumnCount = data.viewports[data.colType].store.get('realCount');
|
|
105
|
+
// Get the last visible row count for the given row type from the viewport column data.
|
|
106
|
+
const lastVisibleRowCount = data.viewports[rowType].store.get('realCount');
|
|
107
|
+
// Return the last visible cell with the last visible column count and row count.
|
|
108
|
+
return {
|
|
109
|
+
x: lastVisibleColumnCount,
|
|
110
|
+
y: lastVisibleRowCount,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
function viewportDataPartition(data, type, slot, fixed) {
|
|
114
|
+
return {
|
|
115
|
+
colData: data.colStore,
|
|
116
|
+
viewportCol: data.viewports[data.colType].store,
|
|
117
|
+
viewportRow: data.viewports[type].store,
|
|
118
|
+
/**
|
|
119
|
+
* lastCell is the last real coordinate + 1, saved to selection store
|
|
120
|
+
*/
|
|
121
|
+
lastCell: getLastCell(data, type),
|
|
122
|
+
slot,
|
|
123
|
+
type,
|
|
124
|
+
canDrag: !fixed,
|
|
125
|
+
position: data.position,
|
|
126
|
+
dataStore: data.rowStores[type].store,
|
|
127
|
+
dimensionCol: data.dimensions[data.colType].store,
|
|
128
|
+
dimensionRow: data.dimensions[type].store,
|
|
129
|
+
style: fixed
|
|
130
|
+
? { height: `${data.dimensions[type].store.get('realSize')}px` }
|
|
131
|
+
: undefined,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
exports.CONTENT_SLOT = CONTENT_SLOT;
|
|
136
|
+
exports.DATA_SLOT = DATA_SLOT;
|
|
137
|
+
exports.FOOTER_SLOT = FOOTER_SLOT;
|
|
138
|
+
exports.HEADER_SLOT = HEADER_SLOT;
|
|
139
|
+
exports.getScrollDimension = getScrollDimension;
|
|
140
|
+
exports.viewportDataPartition = viewportDataPartition;
|