@revolist/revogrid 4.9.41 → 4.10.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/{column.drag.plugin-fcd892ec.js → column.drag.plugin-7098477f.js} +117 -46
- package/dist/cjs/column.drag.plugin-7098477f.js.map +1 -0
- package/dist/cjs/{column.service-26c61ed6.js → column.service-f1d5d924.js} +5 -10
- package/dist/cjs/column.service-f1d5d924.js.map +1 -0
- package/dist/cjs/{edit.utils-179c0800.js → edit.utils-75fa1cab.js} +2 -2
- package/dist/cjs/{edit.utils-179c0800.js.map → edit.utils-75fa1cab.js.map} +1 -1
- package/dist/cjs/{header-cell-renderer-d879d95e.js → header-cell-renderer-aaaad4c8.js} +2 -2
- package/dist/cjs/{header-cell-renderer-d879d95e.js.map → header-cell-renderer-aaaad4c8.js.map} +1 -1
- package/dist/cjs/{index-3ab26ab9.js → index-aecb871a.js} +3 -6
- package/dist/cjs/index-aecb871a.js.map +1 -0
- package/dist/cjs/index.cjs.js +8 -7
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/{key.utils-f49d7bee.js → key.utils-8f1105f3.js} +2 -2
- package/dist/cjs/{key.utils-f49d7bee.js.map → key.utils-8f1105f3.js.map} +1 -1
- package/dist/cjs/revo-grid.cjs.entry.js +26 -35
- package/dist/cjs/revo-grid.cjs.entry.js.map +1 -1
- package/dist/cjs/revogr-attribution_7.cjs.entry.js +6 -6
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js +4 -4
- package/dist/cjs/revogr-data_4.cjs.entry.js +36 -13
- package/dist/cjs/revogr-data_4.cjs.entry.js.map +1 -1
- package/dist/cjs/{row-header-utils-c37f76e4.js → row-header-utils-208e4026.js} +3 -3
- package/dist/cjs/{row-header-utils-c37f76e4.js.map → row-header-utils-208e4026.js.map} +1 -1
- package/dist/cjs/{text-editor-b756d6b3.js → text-editor-b64a080e.js} +3 -3
- package/dist/cjs/{text-editor-b756d6b3.js.map → text-editor-b64a080e.js.map} +1 -1
- package/dist/cjs/{throttle-a57f51f9.js → throttle-3b362440.js} +2 -2
- package/dist/cjs/{throttle-a57f51f9.js.map → throttle-3b362440.js.map} +1 -1
- package/dist/collection/components/data/revogr-data.js +28 -3
- package/dist/collection/components/data/revogr-data.js.map +1 -1
- package/dist/collection/components/revoGrid/revo-grid.js +7 -4
- package/dist/collection/components/revoGrid/revo-grid.js.map +1 -1
- package/dist/collection/components/scroll/revogr-viewport-scroll.js +26 -8
- package/dist/collection/components/scroll/revogr-viewport-scroll.js.map +1 -1
- package/dist/collection/plugins/filter/filter.plugin.js +3 -0
- package/dist/collection/plugins/filter/filter.plugin.js.map +1 -1
- package/dist/collection/plugins/sorting/sorting.plugin.js +7 -4
- package/dist/collection/plugins/sorting/sorting.plugin.js.map +1 -1
- package/dist/collection/services/dimension.provider.js +7 -22
- package/dist/collection/services/dimension.provider.js.map +1 -1
- package/dist/collection/store/dataSource/trimmed.plugin.js +3 -8
- package/dist/collection/store/dataSource/trimmed.plugin.js.map +1 -1
- package/dist/collection/store/dimension/dimension.helpers.js +2 -5
- package/dist/collection/store/dimension/dimension.helpers.js.map +1 -1
- package/dist/collection/store/dimension/dimension.recalculate.plugin.js +35 -0
- package/dist/collection/store/dimension/dimension.recalculate.plugin.js.map +1 -0
- package/dist/collection/store/dimension/dimension.store.js +46 -66
- package/dist/collection/store/dimension/dimension.store.js.map +1 -1
- package/dist/collection/store/dimension/dimension.trim.plugin.js +61 -0
- package/dist/collection/store/dimension/dimension.trim.plugin.js.map +1 -0
- package/dist/collection/types/events.js +1 -0
- package/dist/collection/types/events.js.map +1 -1
- package/dist/collection/types/interfaces.js.map +1 -1
- package/dist/esm/{column.drag.plugin-3cc77986.js → column.drag.plugin-813698d2.js} +117 -46
- package/dist/esm/column.drag.plugin-813698d2.js.map +1 -0
- package/dist/esm/{column.service-751345b2.js → column.service-aa142672.js} +5 -10
- package/dist/esm/column.service-aa142672.js.map +1 -0
- package/dist/esm/{edit.utils-6fc686b9.js → edit.utils-cd6a3224.js} +2 -2
- package/dist/esm/{edit.utils-6fc686b9.js.map → edit.utils-cd6a3224.js.map} +1 -1
- package/dist/esm/{header-cell-renderer-32d2ed96.js → header-cell-renderer-5939221a.js} +2 -2
- package/dist/esm/{header-cell-renderer-32d2ed96.js.map → header-cell-renderer-5939221a.js.map} +1 -1
- package/dist/esm/{index-1dcad6ef.js → index-dbd1c020.js} +3 -6
- package/dist/esm/index-dbd1c020.js.map +1 -0
- package/dist/esm/index.js +8 -7
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/{key.utils-17273f42.js → key.utils-5ff2ec82.js} +2 -2
- package/dist/esm/{key.utils-17273f42.js.map → key.utils-5ff2ec82.js.map} +1 -1
- package/dist/esm/revo-grid.entry.js +26 -35
- package/dist/esm/revo-grid.entry.js.map +1 -1
- package/dist/esm/revogr-attribution_7.entry.js +6 -6
- package/dist/esm/revogr-clipboard_3.entry.js +4 -4
- package/dist/esm/revogr-data_4.entry.js +36 -13
- package/dist/esm/revogr-data_4.entry.js.map +1 -1
- package/dist/esm/{row-header-utils-3dfbb81f.js → row-header-utils-5511678e.js} +3 -3
- package/dist/esm/{row-header-utils-3dfbb81f.js.map → row-header-utils-5511678e.js.map} +1 -1
- package/dist/esm/{text-editor-901c3eb8.js → text-editor-81767dcb.js} +3 -3
- package/dist/esm/{text-editor-901c3eb8.js.map → text-editor-81767dcb.js.map} +1 -1
- package/dist/esm/{throttle-138d69c3.js → throttle-4eff5b3c.js} +2 -2
- package/dist/esm/{throttle-138d69c3.js.map → throttle-4eff5b3c.js.map} +1 -1
- package/dist/revo-grid/column.drag.plugin-813698d2.js +5 -0
- package/dist/revo-grid/column.drag.plugin-813698d2.js.map +1 -0
- package/dist/revo-grid/{column.service-751345b2.js → column.service-aa142672.js} +2 -2
- package/dist/revo-grid/{column.service-751345b2.js.map → column.service-aa142672.js.map} +1 -1
- package/dist/revo-grid/{edit.utils-6fc686b9.js → edit.utils-cd6a3224.js} +2 -2
- package/dist/revo-grid/{header-cell-renderer-32d2ed96.js → header-cell-renderer-5939221a.js} +2 -2
- package/dist/revo-grid/index-dbd1c020.js +5 -0
- package/dist/revo-grid/index-dbd1c020.js.map +1 -0
- package/dist/revo-grid/index.esm.js +1 -1
- package/dist/revo-grid/index.esm.js.map +1 -1
- package/dist/revo-grid/{key.utils-17273f42.js → key.utils-5ff2ec82.js} +2 -2
- package/dist/revo-grid/revo-grid.entry.js +1 -1
- package/dist/revo-grid/revo-grid.entry.js.map +1 -1
- package/dist/revo-grid/revogr-attribution_7.entry.js +1 -1
- package/dist/revo-grid/revogr-clipboard_3.entry.js +1 -1
- package/dist/revo-grid/revogr-data_4.entry.js +1 -1
- package/dist/revo-grid/revogr-data_4.entry.js.map +1 -1
- package/dist/revo-grid/{row-header-utils-3dfbb81f.js → row-header-utils-5511678e.js} +2 -2
- package/dist/revo-grid/{text-editor-901c3eb8.js → text-editor-81767dcb.js} +2 -2
- package/dist/revo-grid/{throttle-138d69c3.js → throttle-4eff5b3c.js} +2 -2
- package/dist/types/components/data/revogr-data.d.ts +6 -2
- package/dist/types/components/revoGrid/revo-grid.d.ts +1 -1
- package/dist/types/components/scroll/revogr-viewport-scroll.d.ts +1 -1
- package/dist/types/components.d.ts +7 -2
- package/dist/types/services/dimension.provider.d.ts +1 -1
- package/dist/types/store/dimension/dimension.helpers.d.ts +0 -3
- package/dist/types/store/dimension/dimension.recalculate.plugin.d.ts +9 -0
- package/dist/types/store/dimension/dimension.store.d.ts +2 -1
- package/dist/types/store/dimension/dimension.trim.plugin.d.ts +13 -0
- package/dist/types/types/events.d.ts +1 -1
- package/dist/types/types/interfaces.d.ts +6 -1
- package/hydrate/index.js +170 -93
- package/hydrate/index.mjs +170 -93
- package/package.json +1 -1
- package/standalone/data.store.js +3 -8
- package/standalone/data.store.js.map +1 -1
- package/standalone/dimension.helpers.js +2 -5
- package/standalone/dimension.helpers.js.map +1 -1
- package/standalone/index.js +1 -0
- package/standalone/index.js.map +1 -1
- package/standalone/revo-grid.js +133 -71
- package/standalone/revo-grid.js.map +1 -1
- package/standalone/revogr-data2.js +6 -1
- package/standalone/revogr-data2.js.map +1 -1
- package/standalone/revogr-viewport-scroll2.js +26 -8
- package/standalone/revogr-viewport-scroll2.js.map +1 -1
- package/dist/cjs/column.drag.plugin-fcd892ec.js.map +0 -1
- package/dist/cjs/column.service-26c61ed6.js.map +0 -1
- package/dist/cjs/index-3ab26ab9.js.map +0 -1
- package/dist/esm/column.drag.plugin-3cc77986.js.map +0 -1
- package/dist/esm/column.service-751345b2.js.map +0 -1
- package/dist/esm/index-1dcad6ef.js.map +0 -1
- package/dist/revo-grid/column.drag.plugin-3cc77986.js +0 -5
- package/dist/revo-grid/column.drag.plugin-3cc77986.js.map +0 -1
- package/dist/revo-grid/index-1dcad6ef.js +0 -5
- package/dist/revo-grid/index-1dcad6ef.js.map +0 -1
- /package/dist/revo-grid/{edit.utils-6fc686b9.js.map → edit.utils-cd6a3224.js.map} +0 -0
- /package/dist/revo-grid/{header-cell-renderer-32d2ed96.js.map → header-cell-renderer-5939221a.js.map} +0 -0
- /package/dist/revo-grid/{key.utils-17273f42.js.map → key.utils-5ff2ec82.js.map} +0 -0
- /package/dist/revo-grid/{row-header-utils-3dfbb81f.js.map → row-header-utils-5511678e.js.map} +0 -0
- /package/dist/revo-grid/{text-editor-901c3eb8.js.map → text-editor-81767dcb.js.map} +0 -0
- /package/dist/revo-grid/{throttle-138d69c3.js.map → throttle-4eff5b3c.js.map} +0 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DimensionSettingsState } from "../../types/index";
|
|
2
|
+
import { Observable, PluginSubscribe } from '../../utils';
|
|
3
|
+
/**
|
|
4
|
+
* Plugin for trimming
|
|
5
|
+
*
|
|
6
|
+
* 1.a. Retrieves the previous sizes value. Saves the resulting trimmed data as a new sizes value.
|
|
7
|
+
* 1.b. Stores a reference to the trimmed data to prevent further changes.
|
|
8
|
+
* 2. Removes multiple and shifts the data based on the trimmed value.
|
|
9
|
+
*/
|
|
10
|
+
export declare const trimmedPlugin: (storeService: {
|
|
11
|
+
store: Observable<DimensionSettingsState>;
|
|
12
|
+
setSizes: (k: DimensionSettingsState["sizes"]) => void;
|
|
13
|
+
}) => PluginSubscribe<DimensionSettingsState>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export type RevogridEvents = 'contentsizechanged' | 'beforeedit' | 'beforerangeedit' | 'afteredit' | 'beforeautofill' | 'beforerange' | 'afterfocus' | 'roworderchanged' | 'beforesortingapply' | 'beforesorting' | 'rowdragstart' | 'headerclick' | 'beforecellfocus' | 'beforefocuslost' | 'beforesourceset' | 'beforeanysource' | 'aftersourceset' | 'afteranysource' | 'beforecolumnsset' | 'beforecolumnapplied' | 'aftercolumnsset' | 'beforefilterapply' | 'beforefiltertrimmed' | 'beforetrimmed' | 'aftertrimmed' | 'viewportscroll' | 'beforeexport' | 'beforeeditstart' | 'aftercolumnresize' | 'beforerowdefinition' | 'filterconfigchanged' | 'rowheaderschanged' | 'beforegridrender' | 'aftergridrender' | 'aftergridinit' | 'additionaldatachanged' | 'afterthemechanged' | 'beforepaste' | 'beforepasteapply' | 'pasteregion' | 'afterpasteapply' | 'beforecut' | 'clearregion' | 'beforecopy' | 'beforecopyapply' | 'copyregion' | 'beforerowrender' | 'afterrender' | 'beforecellrender' | 'dragstartcell' | 'celledit' | 'closeedit' | 'filterChange' | 'resetChange' | 'beforefocusrender' | 'beforescrollintoview' | 'afterfocus' | 'beforeheaderclick' | 'headerresize' | 'beforeheaderresize' | 'headerdblclick' | 'beforeheaderrender' | 'afterheaderrender' | 'rowdragstartinit' | 'rowdragendinit' | 'rowdragmoveinit' | 'rowdragmousemove' | 'rowdropinit' | 'roworderchange' | 'beforecopyregion' | 'beforepasteregion' | 'celleditapply' | 'beforecellfocusinit' | 'beforenextvpfocus' | 'setedit' | 'beforeapplyrange' | 'beforesetrange' | 'beforeeditrender' | 'setrange' | 'selectall' | 'canceledit' | 'settemprange' | 'beforesettemprange' | 'applyfocus' | 'focuscell' | 'beforerangedataapply' | 'selectionchangeinit' | 'beforerangecopyapply' | 'rangeeditapply' | 'clipboardrangecopy' | 'clipboardrangepaste' | 'beforekeydown' | 'beforekeyup' | 'beforecellsave' | 'scrollview' | 'ref' | 'scrollvirtual' | 'scrollviewport' | 'resizeviewport' | 'scrollchange' | 'scrollviewportsilent' | 'html';
|
|
1
|
+
export type RevogridEvents = 'contentsizechanged' | 'beforeedit' | 'beforerangeedit' | 'afteredit' | 'beforeautofill' | 'beforerange' | 'afterfocus' | 'roworderchanged' | 'beforesortingapply' | 'beforesorting' | 'rowdragstart' | 'headerclick' | 'beforecellfocus' | 'beforefocuslost' | 'beforesourceset' | 'beforeanysource' | 'aftersourceset' | 'afteranysource' | 'beforecolumnsset' | 'beforecolumnapplied' | 'aftercolumnsset' | 'beforefilterapply' | 'beforefiltertrimmed' | 'beforetrimmed' | 'aftertrimmed' | 'viewportscroll' | 'beforeexport' | 'beforeeditstart' | 'aftercolumnresize' | 'beforerowdefinition' | 'filterconfigchanged' | 'rowheaderschanged' | 'beforegridrender' | 'aftergridrender' | 'aftergridinit' | 'additionaldatachanged' | 'afterthemechanged' | 'beforepaste' | 'beforepasteapply' | 'pasteregion' | 'afterpasteapply' | 'beforecut' | 'clearregion' | 'beforecopy' | 'beforecopyapply' | 'copyregion' | 'beforerowrender' | 'afterrender' | 'beforecellrender' | 'beforedatarender' | 'dragstartcell' | 'celledit' | 'closeedit' | 'filterChange' | 'resetChange' | 'beforefocusrender' | 'beforescrollintoview' | 'afterfocus' | 'beforeheaderclick' | 'headerresize' | 'beforeheaderresize' | 'headerdblclick' | 'beforeheaderrender' | 'afterheaderrender' | 'rowdragstartinit' | 'rowdragendinit' | 'rowdragmoveinit' | 'rowdragmousemove' | 'rowdropinit' | 'roworderchange' | 'beforecopyregion' | 'beforepasteregion' | 'celleditapply' | 'beforecellfocusinit' | 'beforenextvpfocus' | 'setedit' | 'beforeapplyrange' | 'beforesetrange' | 'beforeeditrender' | 'setrange' | 'selectall' | 'canceledit' | 'settemprange' | 'beforesettemprange' | 'applyfocus' | 'focuscell' | 'beforerangedataapply' | 'selectionchangeinit' | 'beforerangecopyapply' | 'rangeeditapply' | 'clipboardrangecopy' | 'clipboardrangepaste' | 'beforekeydown' | 'beforekeyup' | 'beforecellsave' | 'scrollview' | 'ref' | 'scrollvirtual' | 'scrollviewport' | 'resizeviewport' | 'scrollchange' | 'scrollviewportsilent' | 'html';
|
|
2
2
|
export declare const REVOGRID_EVENTS: Map<RevogridEvents, RevogridEvents>;
|
|
@@ -527,9 +527,14 @@ export interface DimensionCalc {
|
|
|
527
527
|
* Object containing information about trimmed data.
|
|
528
528
|
* Used for hiding entities from visible data source.
|
|
529
529
|
*/
|
|
530
|
-
trimmed:
|
|
530
|
+
trimmed: {
|
|
531
|
+
[index: number]: number;
|
|
532
|
+
} | null;
|
|
531
533
|
/**
|
|
532
534
|
* Object containing size for each visible item.
|
|
535
|
+
* provider stores only changed sizes, not all of them
|
|
536
|
+
* same as indexes but for sizes and positions
|
|
537
|
+
* virtual item index to size
|
|
533
538
|
*/
|
|
534
539
|
sizes: ViewSettingSizeProp;
|
|
535
540
|
}
|
package/hydrate/index.js
CHANGED
|
@@ -6314,18 +6314,13 @@ const createStore = (defaultState, shouldUpdate) => {
|
|
|
6314
6314
|
const trimmedPlugin$1 = (store) => ({
|
|
6315
6315
|
set(k, newVal) {
|
|
6316
6316
|
switch (k) {
|
|
6317
|
-
case 'trimmed':
|
|
6317
|
+
case 'trimmed': {
|
|
6318
6318
|
const proxy = store.get('proxyItems');
|
|
6319
6319
|
const trimmed = gatherTrimmedItems(newVal);
|
|
6320
|
-
const newItems = proxy.
|
|
6321
|
-
// check if present in new trimmed remove from items (filter)
|
|
6322
|
-
if (!trimmed[v]) {
|
|
6323
|
-
result.push(v);
|
|
6324
|
-
}
|
|
6325
|
-
return result;
|
|
6326
|
-
}, []);
|
|
6320
|
+
const newItems = proxy.filter(v => !trimmed[v]);
|
|
6327
6321
|
store.set('items', newItems);
|
|
6328
6322
|
break;
|
|
6323
|
+
}
|
|
6329
6324
|
}
|
|
6330
6325
|
},
|
|
6331
6326
|
});
|
|
@@ -6801,10 +6796,8 @@ function calculateDimensionData(originItemSize, newSizes = {}) {
|
|
|
6801
6796
|
const positionIndexes = [];
|
|
6802
6797
|
const positionIndexToItem = {};
|
|
6803
6798
|
const indexToItem = {};
|
|
6804
|
-
// combine all new sizes
|
|
6805
|
-
const sizes = Object.assign({}, newSizes);
|
|
6806
6799
|
// prepare order sorted new sizes and calculate changed real size
|
|
6807
|
-
const newIndexes = Object.keys(
|
|
6800
|
+
const newIndexes = Object.keys(newSizes).map(Number).sort((a, b) => a - b);
|
|
6808
6801
|
// fill new coordinates based on what is changed
|
|
6809
6802
|
newIndexes.reduce((previous, itemIndex, i) => {
|
|
6810
6803
|
const newItem = {
|
|
@@ -6820,7 +6813,7 @@ function calculateDimensionData(originItemSize, newSizes = {}) {
|
|
|
6820
6813
|
else {
|
|
6821
6814
|
newItem.start = itemIndex * originItemSize;
|
|
6822
6815
|
}
|
|
6823
|
-
newItem.end = newItem.start +
|
|
6816
|
+
newItem.end = newItem.start + newSizes[itemIndex];
|
|
6824
6817
|
positionIndexes.push(newItem.start);
|
|
6825
6818
|
indexToItem[itemIndex] = positionIndexToItem[i] = newItem;
|
|
6826
6819
|
return newItem;
|
|
@@ -6830,7 +6823,6 @@ function calculateDimensionData(originItemSize, newSizes = {}) {
|
|
|
6830
6823
|
positionIndexes: [...positionIndexes],
|
|
6831
6824
|
positionIndexToItem: Object.assign({}, positionIndexToItem),
|
|
6832
6825
|
indexToItem,
|
|
6833
|
-
sizes,
|
|
6834
6826
|
};
|
|
6835
6827
|
}
|
|
6836
6828
|
/**
|
|
@@ -6891,37 +6883,6 @@ function getItemByIndex(dimension, index) {
|
|
|
6891
6883
|
return item;
|
|
6892
6884
|
}
|
|
6893
6885
|
|
|
6894
|
-
/**
|
|
6895
|
-
* Storing pre-calculated
|
|
6896
|
-
* Dimension information and sizes
|
|
6897
|
-
*/
|
|
6898
|
-
const trimmedPlugin = (store) => {
|
|
6899
|
-
let trimmedSize = {};
|
|
6900
|
-
const setTrimmed = (sizes, trimmed) => {
|
|
6901
|
-
const newSize = Object.assign({}, sizes);
|
|
6902
|
-
trimmedSize = {};
|
|
6903
|
-
for (const [index, v] of Object.entries(trimmed)) {
|
|
6904
|
-
const i = index;
|
|
6905
|
-
if (v && newSize[i]) {
|
|
6906
|
-
trimmedSize[i] = newSize[i];
|
|
6907
|
-
delete newSize[i];
|
|
6908
|
-
}
|
|
6909
|
-
}
|
|
6910
|
-
store.setDimensionSize(newSize);
|
|
6911
|
-
};
|
|
6912
|
-
return {
|
|
6913
|
-
set(key, val) {
|
|
6914
|
-
switch (key) {
|
|
6915
|
-
case 'trimmed':
|
|
6916
|
-
const trim = val;
|
|
6917
|
-
const sizes = store.store.get('sizes');
|
|
6918
|
-
// recover trimmed, apply new trim
|
|
6919
|
-
setTrimmed(Object.assign(Object.assign({}, sizes), trimmedSize), trim);
|
|
6920
|
-
break;
|
|
6921
|
-
}
|
|
6922
|
-
},
|
|
6923
|
-
};
|
|
6924
|
-
};
|
|
6925
6886
|
/**
|
|
6926
6887
|
* Plugin which recalculates realSize on changes of sizes, originItemSize and count
|
|
6927
6888
|
*/
|
|
@@ -6937,7 +6898,7 @@ const recalculateRealSizePlugin = (storeService) => {
|
|
|
6937
6898
|
switch (k) {
|
|
6938
6899
|
case 'count':
|
|
6939
6900
|
case 'sizes':
|
|
6940
|
-
case 'originItemSize':
|
|
6901
|
+
case 'originItemSize': {
|
|
6941
6902
|
// recalculate realSize
|
|
6942
6903
|
let realSize = 0;
|
|
6943
6904
|
const count = storeService.store.get('count');
|
|
@@ -6948,19 +6909,81 @@ const recalculateRealSizePlugin = (storeService) => {
|
|
|
6948
6909
|
}
|
|
6949
6910
|
storeService.setStore({ realSize });
|
|
6950
6911
|
break;
|
|
6912
|
+
}
|
|
6951
6913
|
}
|
|
6952
6914
|
},
|
|
6953
6915
|
};
|
|
6954
6916
|
};
|
|
6917
|
+
|
|
6918
|
+
/**
|
|
6919
|
+
* Plugin for trimming
|
|
6920
|
+
*
|
|
6921
|
+
* 1.a. Retrieves the previous sizes value. Saves the resulting trimmed data as a new sizes value.
|
|
6922
|
+
* 1.b. Stores a reference to the trimmed data to prevent further changes.
|
|
6923
|
+
* 2. Removes multiple and shifts the data based on the trimmed value.
|
|
6924
|
+
*/
|
|
6925
|
+
const trimmedPlugin = (storeService) => {
|
|
6926
|
+
let trimmingObject = null;
|
|
6927
|
+
let trimmedPreviousSizes = null;
|
|
6928
|
+
return {
|
|
6929
|
+
set(key, val) {
|
|
6930
|
+
switch (key) {
|
|
6931
|
+
case 'sizes': {
|
|
6932
|
+
// prevent changes after trimming
|
|
6933
|
+
if (trimmingObject && trimmingObject === val) {
|
|
6934
|
+
trimmingObject = null;
|
|
6935
|
+
return;
|
|
6936
|
+
}
|
|
6937
|
+
trimmedPreviousSizes = null;
|
|
6938
|
+
break;
|
|
6939
|
+
}
|
|
6940
|
+
case 'trimmed': {
|
|
6941
|
+
const trim = val;
|
|
6942
|
+
if (!trimmedPreviousSizes) {
|
|
6943
|
+
trimmedPreviousSizes = storeService.store.get('sizes');
|
|
6944
|
+
}
|
|
6945
|
+
trimmingObject = removeMultipleAndShift(trimmedPreviousSizes, trim || {});
|
|
6946
|
+
// save a reference to the trimmed object to prevent changes after trimming
|
|
6947
|
+
storeService.setSizes(trimmingObject);
|
|
6948
|
+
break;
|
|
6949
|
+
}
|
|
6950
|
+
}
|
|
6951
|
+
},
|
|
6952
|
+
};
|
|
6953
|
+
};
|
|
6954
|
+
function removeMultipleAndShift(items, toRemove) {
|
|
6955
|
+
const newItems = {};
|
|
6956
|
+
const sortedIndexes = Object.keys(items || {})
|
|
6957
|
+
.map(Number)
|
|
6958
|
+
.sort((a, b) => a - b);
|
|
6959
|
+
const lastIndex = sortedIndexes[sortedIndexes.length - 1];
|
|
6960
|
+
let shift = 0;
|
|
6961
|
+
for (let i = 0; i <= lastIndex; i++) {
|
|
6962
|
+
if (toRemove[i] !== undefined) {
|
|
6963
|
+
shift++;
|
|
6964
|
+
// skip already removed
|
|
6965
|
+
if (items[i] !== undefined) {
|
|
6966
|
+
continue;
|
|
6967
|
+
}
|
|
6968
|
+
}
|
|
6969
|
+
if (items[i] !== undefined) {
|
|
6970
|
+
newItems[i - shift] = items[i];
|
|
6971
|
+
}
|
|
6972
|
+
}
|
|
6973
|
+
return newItems;
|
|
6974
|
+
}
|
|
6975
|
+
|
|
6976
|
+
/**
|
|
6977
|
+
* Storing pre-calculated
|
|
6978
|
+
* Dimension information and sizes
|
|
6979
|
+
*/
|
|
6955
6980
|
function initialBase() {
|
|
6956
6981
|
return {
|
|
6957
6982
|
indexes: [],
|
|
6958
6983
|
count: 0,
|
|
6959
|
-
//
|
|
6960
|
-
trimmed:
|
|
6961
|
-
//
|
|
6962
|
-
// same as indexes but for sizes and positions
|
|
6963
|
-
// item index to size
|
|
6984
|
+
// hidden items
|
|
6985
|
+
trimmed: null,
|
|
6986
|
+
// virtual item index to size
|
|
6964
6987
|
sizes: {},
|
|
6965
6988
|
// order in indexes[] to coordinate
|
|
6966
6989
|
positionIndexToItem: {},
|
|
@@ -6980,8 +7003,14 @@ class DimensionStore {
|
|
|
6980
7003
|
constructor(type) {
|
|
6981
7004
|
this.type = type;
|
|
6982
7005
|
this.store = createStore(initialState$1());
|
|
6983
|
-
this.store.use(trimmedPlugin(
|
|
6984
|
-
|
|
7006
|
+
this.store.use(trimmedPlugin({
|
|
7007
|
+
store: this.store,
|
|
7008
|
+
setSizes: this.setDimensionSize.bind(this),
|
|
7009
|
+
}));
|
|
7010
|
+
this.store.use(recalculateRealSizePlugin({
|
|
7011
|
+
store: this.store,
|
|
7012
|
+
setStore: this.setStore.bind(this),
|
|
7013
|
+
}));
|
|
6985
7014
|
}
|
|
6986
7015
|
getCurrentState() {
|
|
6987
7016
|
const state = initialState$1();
|
|
@@ -7006,9 +7035,40 @@ class DimensionStore {
|
|
|
7006
7035
|
* Generates new indexes based on sizes
|
|
7007
7036
|
* @param sizes - sizes to set
|
|
7008
7037
|
*/
|
|
7009
|
-
setDimensionSize(sizes) {
|
|
7038
|
+
setDimensionSize(sizes = {}) {
|
|
7010
7039
|
const dimensionData = calculateDimensionData(this.store.get('originItemSize'), sizes);
|
|
7011
|
-
setStore(this.store, dimensionData);
|
|
7040
|
+
setStore(this.store, Object.assign(Object.assign({}, dimensionData), { sizes }));
|
|
7041
|
+
}
|
|
7042
|
+
updateSizesPositionByIndexes(newItemsOrder, prevItemsOrder = []) {
|
|
7043
|
+
// Move custom sizes to new order
|
|
7044
|
+
const customSizes = Object.assign({}, this.store.get('sizes'));
|
|
7045
|
+
if (!Object.keys(customSizes).length) {
|
|
7046
|
+
return;
|
|
7047
|
+
}
|
|
7048
|
+
// Step 1: Create a map of original indices, but allow duplicates by storing arrays of indices
|
|
7049
|
+
const originalIndices = {};
|
|
7050
|
+
prevItemsOrder.forEach((physIndex, virtIndex) => {
|
|
7051
|
+
if (!originalIndices[physIndex]) {
|
|
7052
|
+
originalIndices[physIndex] = [];
|
|
7053
|
+
}
|
|
7054
|
+
originalIndices[physIndex].push(virtIndex); // Store all indices for each value
|
|
7055
|
+
});
|
|
7056
|
+
// Step 2: Create new sizes based on new item order
|
|
7057
|
+
const newSizes = {};
|
|
7058
|
+
newItemsOrder.forEach((physIndex, virtIndex) => {
|
|
7059
|
+
const indices = originalIndices[physIndex]; // Get all original indices for this value
|
|
7060
|
+
if (indices && indices.length > 0) {
|
|
7061
|
+
const originalIndex = indices.shift(); // Get the first available original index
|
|
7062
|
+
if (originalIndex !== undefined && originalIndex !== virtIndex && customSizes[originalIndex]) {
|
|
7063
|
+
newSizes[virtIndex] = customSizes[originalIndex];
|
|
7064
|
+
delete customSizes[originalIndex];
|
|
7065
|
+
}
|
|
7066
|
+
}
|
|
7067
|
+
});
|
|
7068
|
+
// Step 3: Set new sizes if there are changes
|
|
7069
|
+
if (Object.keys(newSizes).length) {
|
|
7070
|
+
this.setDimensionSize(Object.assign(Object.assign({}, customSizes), newSizes));
|
|
7071
|
+
}
|
|
7012
7072
|
}
|
|
7013
7073
|
}
|
|
7014
7074
|
|
|
@@ -10476,11 +10536,13 @@ class DimensionProvider {
|
|
|
10476
10536
|
* @param columns - new columns data
|
|
10477
10537
|
* @param disableVirtualX - disable virtual data for X axis
|
|
10478
10538
|
*/
|
|
10479
|
-
applyNewColumns(columns, disableVirtualX) {
|
|
10539
|
+
applyNewColumns(columns, disableVirtualX, keepOld = false) {
|
|
10480
10540
|
// Apply new columns to dimension provider
|
|
10481
10541
|
for (let type of columnTypes) {
|
|
10482
|
-
|
|
10483
|
-
|
|
10542
|
+
if (!keepOld) {
|
|
10543
|
+
// Clear existing data in the dimension provider
|
|
10544
|
+
this.stores[type].drop();
|
|
10545
|
+
}
|
|
10484
10546
|
// Get the new columns for the current type
|
|
10485
10547
|
const items = columns[type];
|
|
10486
10548
|
// Determine if virtual data should be disabled for the current type
|
|
@@ -10551,25 +10613,8 @@ class DimensionProvider {
|
|
|
10551
10613
|
}
|
|
10552
10614
|
updateSizesPositionByNewDataIndexes(type, newItemsOrder, prevItemsOrder = []) {
|
|
10553
10615
|
// Move custom sizes to new order
|
|
10554
|
-
|
|
10555
|
-
|
|
10556
|
-
if (Object.keys(customSizes).length) {
|
|
10557
|
-
const originalIndices = new Map();
|
|
10558
|
-
prevItemsOrder.forEach((value, index) => {
|
|
10559
|
-
originalIndices.set(value, index);
|
|
10560
|
-
});
|
|
10561
|
-
const newSizes = {};
|
|
10562
|
-
newItemsOrder.forEach((value, newIndex) => {
|
|
10563
|
-
const originalIndex = originalIndices.get(value);
|
|
10564
|
-
if (originalIndex !== newIndex && customSizes[originalIndex]) {
|
|
10565
|
-
newSizes[newIndex] = customSizes[originalIndex];
|
|
10566
|
-
delete customSizes[originalIndex];
|
|
10567
|
-
}
|
|
10568
|
-
});
|
|
10569
|
-
if (Object.keys(newSizes).length) {
|
|
10570
|
-
this.setCustomSizes(type, Object.assign(Object.assign({}, customSizes), newSizes));
|
|
10571
|
-
}
|
|
10572
|
-
}
|
|
10616
|
+
this.stores[type].updateSizesPositionByIndexes(newItemsOrder, prevItemsOrder);
|
|
10617
|
+
this.updateViewport(type, true);
|
|
10573
10618
|
}
|
|
10574
10619
|
}
|
|
10575
10620
|
|
|
@@ -11146,6 +11191,9 @@ class FilterPlugin extends BasePlugin {
|
|
|
11146
11191
|
}
|
|
11147
11192
|
});
|
|
11148
11193
|
}
|
|
11194
|
+
if (Object.keys(this.multiFilterItems).length === 0) {
|
|
11195
|
+
return;
|
|
11196
|
+
}
|
|
11149
11197
|
await this.runFiltering(this.multiFilterItems);
|
|
11150
11198
|
};
|
|
11151
11199
|
this.addEventListener('headerclick', (e) => this.headerclick(e));
|
|
@@ -11684,9 +11732,8 @@ class SortingPlugin extends BasePlugin {
|
|
|
11684
11732
|
if (beforeApplyEvent.defaultPrevented) {
|
|
11685
11733
|
return;
|
|
11686
11734
|
}
|
|
11687
|
-
|
|
11688
|
-
|
|
11689
|
-
if (additive && this.sorting) {
|
|
11735
|
+
const cmp = this.getComparer(beforeApplyEvent.detail.column, beforeApplyEvent.detail.order);
|
|
11736
|
+
if (beforeApplyEvent.detail.additive && this.sorting) {
|
|
11690
11737
|
const sorting = {};
|
|
11691
11738
|
const sortingFunc = {};
|
|
11692
11739
|
this.sorting = Object.assign(Object.assign({}, this.sorting), sorting);
|
|
@@ -11750,11 +11797,15 @@ class SortingPlugin extends BasePlugin {
|
|
|
11750
11797
|
// row indexes
|
|
11751
11798
|
const proxyItems = storeService.store.get('proxyItems');
|
|
11752
11799
|
const newItemsOrder = this.sortIndexByItems([...proxyItems], source, sortingFunc);
|
|
11753
|
-
|
|
11800
|
+
// take row indexes before trim applied and proxy items
|
|
11801
|
+
const prevItems = storeService.store.get('items');
|
|
11754
11802
|
storeService.setData({
|
|
11755
11803
|
proxyItems: newItemsOrder,
|
|
11756
11804
|
source: [...source],
|
|
11757
11805
|
});
|
|
11806
|
+
// take currently visible row indexes
|
|
11807
|
+
const newItems = storeService.store.get('items');
|
|
11808
|
+
this.providers.dimension.updateSizesPositionByNewDataIndexes(type, newItems, prevItems);
|
|
11758
11809
|
}
|
|
11759
11810
|
}
|
|
11760
11811
|
this.emit('aftersortingapply');
|
|
@@ -14128,7 +14179,7 @@ class RevoGridComponent {
|
|
|
14128
14179
|
// Column format change will trigger column structure update
|
|
14129
14180
|
this.columnChanged(this.columns);
|
|
14130
14181
|
}
|
|
14131
|
-
columnChanged(newVal = []) {
|
|
14182
|
+
columnChanged(newVal = [], _prevVal = undefined, __watchName = 'columns', init = false) {
|
|
14132
14183
|
if (!this.dimensionProvider || !this.columnProvider) {
|
|
14133
14184
|
return;
|
|
14134
14185
|
}
|
|
@@ -14137,7 +14188,7 @@ class RevoGridComponent {
|
|
|
14137
14188
|
if (beforeSetEvent.defaultPrevented) {
|
|
14138
14189
|
return;
|
|
14139
14190
|
}
|
|
14140
|
-
this.dimensionProvider.applyNewColumns(beforeSetEvent.detail.columns, this.disableVirtualX);
|
|
14191
|
+
this.dimensionProvider.applyNewColumns(beforeSetEvent.detail.columns, this.disableVirtualX, init);
|
|
14141
14192
|
const beforeApplyEvent = this.beforecolumnapplied.emit(columnGather);
|
|
14142
14193
|
if (beforeApplyEvent.defaultPrevented) {
|
|
14143
14194
|
return;
|
|
@@ -14426,7 +14477,7 @@ class RevoGridComponent {
|
|
|
14426
14477
|
// set data
|
|
14427
14478
|
this.applyStretch(this.stretch);
|
|
14428
14479
|
this.themeChanged(this.theme, undefined, undefined, true);
|
|
14429
|
-
this.columnChanged(this.columns);
|
|
14480
|
+
this.columnChanged(this.columns, undefined, undefined, true);
|
|
14430
14481
|
this.dataSourceChanged(this.source, undefined, 'source');
|
|
14431
14482
|
this.dataSourceChanged(this.pinnedTopSource, undefined, 'pinnedTopSource');
|
|
14432
14483
|
this.dataSourceChanged(this.pinnedBottomSource, undefined, 'pinnedBottomSource');
|
|
@@ -14434,7 +14485,10 @@ class RevoGridComponent {
|
|
|
14434
14485
|
this.trimmedRowsChanged(this.trimmedRows);
|
|
14435
14486
|
}
|
|
14436
14487
|
this.rowDefChanged(this.rowDefinitions);
|
|
14437
|
-
|
|
14488
|
+
// init grouping
|
|
14489
|
+
if (this.grouping && Object.keys(this.grouping).length > 0) {
|
|
14490
|
+
this.groupingChanged(this.grouping);
|
|
14491
|
+
}
|
|
14438
14492
|
// init scrolling service
|
|
14439
14493
|
this.scrollingService = new GridScrollingService((e) => {
|
|
14440
14494
|
var _a;
|
|
@@ -14807,6 +14861,7 @@ class RevogrData {
|
|
|
14807
14861
|
this.beforerowrender = createEvent(this, "beforerowrender", 7);
|
|
14808
14862
|
this.afterrender = createEvent(this, "afterrender", 7);
|
|
14809
14863
|
this.beforeCellRender = createEvent(this, "beforecellrender", 7);
|
|
14864
|
+
this.beforeDataRender = createEvent(this, "beforedatarender", 7);
|
|
14810
14865
|
this.dragStartCell = createEvent(this, "dragstartcell", 7);
|
|
14811
14866
|
/**
|
|
14812
14867
|
* Rendered rows - virtual index vs vnode
|
|
@@ -14872,7 +14927,11 @@ class RevogrData {
|
|
|
14872
14927
|
(_b = this.rangeUnsubscribe) === null || _b === void 0 ? void 0 : _b.call(this);
|
|
14873
14928
|
}
|
|
14874
14929
|
async componentWillRender() {
|
|
14875
|
-
|
|
14930
|
+
this.beforeDataRender.emit({
|
|
14931
|
+
rowType: this.type,
|
|
14932
|
+
colType: this.colType,
|
|
14933
|
+
});
|
|
14934
|
+
return Promise.all(this.jobsBeforeRender.map(p => typeof p === 'function' ? p() : p));
|
|
14876
14935
|
}
|
|
14877
14936
|
componentDidRender() {
|
|
14878
14937
|
this.afterrender.emit({ type: this.type });
|
|
@@ -16215,7 +16274,8 @@ class RevogrViewportScroll {
|
|
|
16215
16274
|
this.scrollchange.emit({ type, hasScroll });
|
|
16216
16275
|
}
|
|
16217
16276
|
disconnectedCallback() {
|
|
16218
|
-
|
|
16277
|
+
var _a;
|
|
16278
|
+
(_a = this.resizeService) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
16219
16279
|
}
|
|
16220
16280
|
async componentDidRender() {
|
|
16221
16281
|
var _a, _b, _c, _d;
|
|
@@ -16243,7 +16303,7 @@ class RevogrViewportScroll {
|
|
|
16243
16303
|
this.setScrollVisibility('rgCol', this.horizontalScroll.clientWidth, this.contentWidth);
|
|
16244
16304
|
}
|
|
16245
16305
|
render() {
|
|
16246
|
-
return (hAsync(Host, { key: '
|
|
16306
|
+
return (hAsync(Host, { key: '2bd41b077bb8baff6405cf6d071b48f22928879c', onWheel: this.horizontalMouseWheel, onScroll: (e) => this.applyScroll('rgCol', e) }, hAsync("div", { key: '84367a3fc244706e2d027f8c9e59ea3a6f8fc984', class: "inner-content-table", style: { width: `${this.contentWidth}px` } }, hAsync("div", { key: 'cbb8a1fa15139f07f9061f81e79218d00c14b8e6', class: "header-wrapper", ref: e => (this.header = e) }, hAsync("slot", { key: '521618b45cf787bcc160532d01e9e1fcdd06823b', name: HEADER_SLOT })), hAsync("div", { key: '2b381270fe97e949fb876603be364cc647ebc2d5', class: "vertical-inner", ref: el => (this.verticalScroll = el), onWheel: this.verticalMouseWheel, onScroll: (e) => this.applyScroll('rgRow', e) }, hAsync("div", { key: 'a0a13d79b5d329132421571fdf2ab7b2e36e440e', class: "content-wrapper", style: { height: `${this.contentHeight}px` } }, hAsync("slot", { key: '10279a0876aa194959da09309f914e6ce39b94fd', name: CONTENT_SLOT }))), hAsync("div", { key: '619446ea77a713a8e157ff0f1a9afd0e5dfa356f', class: "footer-wrapper", ref: e => (this.footer = e) }, hAsync("slot", { key: '43966ad2fde89f09c606173abf837672d8d4f822', name: FOOTER_SLOT })))));
|
|
16247
16307
|
}
|
|
16248
16308
|
/**
|
|
16249
16309
|
* Extra layer for scroll event monitoring, where MouseWheel event is not passing
|
|
@@ -16286,11 +16346,18 @@ class RevogrViewportScroll {
|
|
|
16286
16346
|
* @param e
|
|
16287
16347
|
*/
|
|
16288
16348
|
onVerticalMouseWheel(type, delta, e) {
|
|
16289
|
-
var _a, _b, _c, _d;
|
|
16290
|
-
(_a =
|
|
16291
|
-
const
|
|
16349
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
16350
|
+
const scrollTop = (_b = (_a = this.verticalScroll) === null || _a === void 0 ? void 0 : _a.scrollTop) !== null && _b !== void 0 ? _b : 0;
|
|
16351
|
+
const clientHeight = (_d = (_c = this.verticalScroll) === null || _c === void 0 ? void 0 : _c.clientHeight) !== null && _d !== void 0 ? _d : 0;
|
|
16352
|
+
const scrollHeight = (_f = (_e = this.verticalScroll) === null || _e === void 0 ? void 0 : _e.scrollHeight) !== null && _f !== void 0 ? _f : 0;
|
|
16353
|
+
// Detect if the user has reached the bottom
|
|
16354
|
+
const atBottom = (scrollTop + clientHeight >= scrollHeight) && e.deltaY > 0;
|
|
16355
|
+
const atTop = scrollTop === 0 && e.deltaY < 0;
|
|
16356
|
+
if (!atBottom && !atTop) {
|
|
16357
|
+
(_g = e.preventDefault) === null || _g === void 0 ? void 0 : _g.call(e);
|
|
16358
|
+
}
|
|
16292
16359
|
const pos = scrollTop + e[delta];
|
|
16293
|
-
(
|
|
16360
|
+
(_h = this.localScrollService) === null || _h === void 0 ? void 0 : _h.scroll(pos, type, undefined, e[delta]);
|
|
16294
16361
|
this.localScrollTimer.latestScrollUpdate(type);
|
|
16295
16362
|
}
|
|
16296
16363
|
/**
|
|
@@ -16301,8 +16368,18 @@ class RevogrViewportScroll {
|
|
|
16301
16368
|
*/
|
|
16302
16369
|
onHorizontalMouseWheel(type, delta, e) {
|
|
16303
16370
|
var _a, _b;
|
|
16304
|
-
(
|
|
16305
|
-
|
|
16371
|
+
if (!e.deltaX) {
|
|
16372
|
+
return;
|
|
16373
|
+
}
|
|
16374
|
+
const { scrollLeft, scrollWidth, clientWidth } = this.horizontalScroll;
|
|
16375
|
+
// Detect if the user has reached the right end
|
|
16376
|
+
const atRight = (scrollLeft + clientWidth >= scrollWidth) && e.deltaX > 0;
|
|
16377
|
+
// Detect if the user has reached the left end
|
|
16378
|
+
const atLeft = scrollLeft === 0 && e.deltaX < 0;
|
|
16379
|
+
if (!atRight && !atLeft) {
|
|
16380
|
+
(_a = e.preventDefault) === null || _a === void 0 ? void 0 : _a.call(e);
|
|
16381
|
+
}
|
|
16382
|
+
const pos = scrollLeft + e[delta];
|
|
16306
16383
|
(_b = this.localScrollService) === null || _b === void 0 ? void 0 : _b.scroll(pos, type, undefined, e[delta]);
|
|
16307
16384
|
this.localScrollTimer.latestScrollUpdate(type);
|
|
16308
16385
|
}
|