@revolist/revogrid 4.21.4 → 4.21.6
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-BLcxDHzP.js → cell-renderer-DW8i7ULg.js} +2 -2
- package/dist/cjs/{column.drag.plugin-DfTAC5Qc.js → column.drag.plugin-BWX5_5iT.js} +107 -28
- package/dist/cjs/{column.service-BmT2HOnj.js → column.service-DvQDqxxx.js} +1 -1
- package/dist/cjs/{dimension.helpers-BOxHtX5T.js → dimension.helpers-CaIsYC99.js} +1 -1
- package/dist/cjs/{edit.utils-DnvQVP4H.js → edit.utils-CwMzSIVF.js} +1 -1
- package/dist/cjs/{header-cell-renderer-7DgGThjq.js → header-cell-renderer-B1dJwgTO.js} +1 -1
- package/dist/cjs/index.cjs.js +12 -8
- package/dist/cjs/revo-grid.cjs.entry.js +5 -5
- package/dist/cjs/revogr-attribution_7.cjs.entry.js +5 -5
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js +3 -3
- package/dist/cjs/revogr-data_4.cjs.entry.js +5 -5
- package/dist/cjs/{text-editor-B9ibcdrl.js → text-editor-BTnGaIl3.js} +2 -2
- package/dist/cjs/{throttle-DkuCcmB0.js → throttle-CI4MsAqs.js} +1 -1
- package/dist/cjs/{viewport.store-DG-4bWqg.js → viewport.store-Dcjud-a-.js} +1 -1
- package/dist/collection/plugins/column.auto-size.plugin.js +11 -2
- package/dist/collection/plugins/filter/filter.plugin.js +2 -1
- package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +21 -11
- package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js +81 -12
- package/dist/{revo-grid/cell-renderer-BNeaYjy6.js → esm/cell-renderer-CqVunVBY.js} +2 -2
- package/dist/esm/{column.drag.plugin-C9lvlTfl.js → column.drag.plugin-6YvuxWof.js} +108 -29
- package/dist/esm/{column.service-8pPNyrKn.js → column.service-Cdz3dYqZ.js} +1 -1
- package/dist/{revo-grid/dimension.helpers-B-5OBYes.js → esm/dimension.helpers-DzxqJQqN.js} +1 -1
- package/dist/esm/{edit.utils-CQjRmx5n.js → edit.utils-CzfeG98N.js} +1 -1
- package/dist/{revo-grid/header-cell-renderer-WkTbrmr7.js → esm/header-cell-renderer-DXhxZMly.js} +1 -1
- package/dist/esm/index.js +9 -9
- package/dist/esm/revo-grid.entry.js +5 -5
- package/dist/esm/revogr-attribution_7.entry.js +5 -5
- package/dist/esm/revogr-clipboard_3.entry.js +3 -3
- package/dist/esm/revogr-data_4.entry.js +5 -5
- package/dist/{revo-grid/text-editor-DZSx2pWr.js → esm/text-editor-C1ks5eQ4.js} +2 -2
- package/dist/esm/{throttle-CYM0qC3v.js → throttle-BEjFQa2l.js} +1 -1
- package/dist/{revo-grid/viewport.store-BGWR3XfI.js → esm/viewport.store-saAZJHRo.js} +1 -1
- package/dist/{esm/cell-renderer-BNeaYjy6.js → revo-grid/cell-renderer-CqVunVBY.js} +2 -2
- package/dist/revo-grid/{column.drag.plugin-C9lvlTfl.js → column.drag.plugin-6YvuxWof.js} +108 -29
- package/dist/revo-grid/{column.service-8pPNyrKn.js → column.service-Cdz3dYqZ.js} +1 -1
- package/dist/{esm/dimension.helpers-B-5OBYes.js → revo-grid/dimension.helpers-DzxqJQqN.js} +1 -1
- package/dist/revo-grid/{edit.utils-CQjRmx5n.js → edit.utils-CzfeG98N.js} +1 -1
- package/dist/{esm/header-cell-renderer-WkTbrmr7.js → revo-grid/header-cell-renderer-DXhxZMly.js} +1 -1
- package/dist/revo-grid/index.esm.js +9 -9
- package/dist/revo-grid/revo-grid.entry.js +5 -5
- package/dist/revo-grid/revogr-attribution_7.entry.js +5 -5
- package/dist/revo-grid/revogr-clipboard_3.entry.js +3 -3
- package/dist/revo-grid/revogr-data_4.entry.js +5 -5
- package/dist/{esm/text-editor-DZSx2pWr.js → revo-grid/text-editor-C1ks5eQ4.js} +2 -2
- package/dist/revo-grid/{throttle-CYM0qC3v.js → throttle-BEjFQa2l.js} +1 -1
- package/dist/{esm/viewport.store-BGWR3XfI.js → revo-grid/viewport.store-saAZJHRo.js} +1 -1
- package/dist/types/plugins/column.auto-size.plugin.d.ts +1 -1
- package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +1 -0
- package/dist/types/plugins/groupingRow/grouping.trimmed.service.d.ts +18 -0
- package/hydrate/index.js +104 -25
- package/hydrate/index.mjs +104 -25
- package/package.json +4 -3
- package/standalone/index.js +1 -1
- package/standalone/revo-grid.js +1 -1
package/hydrate/index.js
CHANGED
|
@@ -8543,7 +8543,7 @@ function setCacheAdd(value) {
|
|
|
8543
8543
|
* @name has
|
|
8544
8544
|
* @memberOf SetCache
|
|
8545
8545
|
* @param {*} value The value to search for.
|
|
8546
|
-
* @returns {
|
|
8546
|
+
* @returns {boolean} Returns `true` if `value` is found, else `false`.
|
|
8547
8547
|
*/
|
|
8548
8548
|
function setCacheHas(value) {
|
|
8549
8549
|
return this.__data__.has(value);
|
|
@@ -15009,6 +15009,15 @@ class BasePlugin {
|
|
|
15009
15009
|
* Add support for automatic column resize
|
|
15010
15010
|
*/
|
|
15011
15011
|
const LETTER_BLOCK_SIZE = 7;
|
|
15012
|
+
var ColumnAutoSizeMode;
|
|
15013
|
+
(function (ColumnAutoSizeMode) {
|
|
15014
|
+
// increases column width on header click according the largest text value
|
|
15015
|
+
ColumnAutoSizeMode["headerClickAutosize"] = "headerClickAutoSize";
|
|
15016
|
+
// increases column width on data set and text edit, decreases performance
|
|
15017
|
+
ColumnAutoSizeMode["autoSizeOnTextOverlap"] = "autoSizeOnTextOverlap";
|
|
15018
|
+
// increases and decreases column width based on all items sizes, worst for performance
|
|
15019
|
+
ColumnAutoSizeMode["autoSizeAll"] = "autoSizeAll";
|
|
15020
|
+
})(ColumnAutoSizeMode || (ColumnAutoSizeMode = {}));
|
|
15012
15021
|
class AutoSizeColumnPlugin extends BasePlugin {
|
|
15013
15022
|
constructor(revogrid, providers, config) {
|
|
15014
15023
|
super(revogrid, providers);
|
|
@@ -15032,13 +15041,13 @@ class AutoSizeColumnPlugin extends BasePlugin {
|
|
|
15032
15041
|
};
|
|
15033
15042
|
this.addEventListener('beforecolumnsset', beforecolumnsset);
|
|
15034
15043
|
switch (config === null || config === void 0 ? void 0 : config.mode) {
|
|
15035
|
-
case
|
|
15044
|
+
case ColumnAutoSizeMode.autoSizeOnTextOverlap:
|
|
15036
15045
|
this.addEventListener('aftersourceset', aftersourceset);
|
|
15037
15046
|
this.addEventListener('afteredit', ({ detail }) => {
|
|
15038
15047
|
this.afteredit(detail);
|
|
15039
15048
|
});
|
|
15040
15049
|
break;
|
|
15041
|
-
case
|
|
15050
|
+
case ColumnAutoSizeMode.autoSizeAll:
|
|
15042
15051
|
this.addEventListener('aftersourceset', aftersourceset);
|
|
15043
15052
|
this.addEventListener('afteredit', ({ detail }) => {
|
|
15044
15053
|
this.afterEditAll(detail);
|
|
@@ -15420,6 +15429,7 @@ class FilterPlugin extends BasePlugin {
|
|
|
15420
15429
|
if (Object.keys(this.multiFilterItems).length === 0) {
|
|
15421
15430
|
return;
|
|
15422
15431
|
}
|
|
15432
|
+
await timeout();
|
|
15423
15433
|
await this.runFiltering(this.multiFilterItems);
|
|
15424
15434
|
};
|
|
15425
15435
|
this.addEventListener('headerclick', e => this.headerclick(e));
|
|
@@ -16584,6 +16594,23 @@ function doExpand(vIndex, source, rowItemsIndexes) {
|
|
|
16584
16594
|
}
|
|
16585
16595
|
|
|
16586
16596
|
const TRIMMED_GROUPING = 'grouping';
|
|
16597
|
+
/**
|
|
16598
|
+
* Converts a trim row index through the index maps produced while regrouping.
|
|
16599
|
+
*
|
|
16600
|
+
* Group rows are synthetic, so they may not exist in the first map. When a
|
|
16601
|
+
* second map is available, fall back to the original index so trims created
|
|
16602
|
+
* against the grouped physical source can still be remapped. If neither path
|
|
16603
|
+
* resolves to a number, the caller drops the stale trim entry.
|
|
16604
|
+
*/
|
|
16605
|
+
function convertTrimmedIndex(initialIndex, firstLevelMap, secondLevelMap) {
|
|
16606
|
+
const sourceIndex = Number.parseInt(initialIndex, 10);
|
|
16607
|
+
const firstConversionIndex = firstLevelMap[sourceIndex];
|
|
16608
|
+
if (!secondLevelMap) {
|
|
16609
|
+
return firstConversionIndex;
|
|
16610
|
+
}
|
|
16611
|
+
const secondConversionKey = typeof firstConversionIndex === 'number' ? firstConversionIndex : sourceIndex;
|
|
16612
|
+
return secondLevelMap[secondConversionKey];
|
|
16613
|
+
}
|
|
16587
16614
|
/**
|
|
16588
16615
|
* Prepare trimming updated indexes for grouping
|
|
16589
16616
|
* @param initiallyTrimed
|
|
@@ -16602,31 +16629,73 @@ function processDoubleConversionTrimmed(initiallyTrimed, firstLevelMap, secondLe
|
|
|
16602
16629
|
const items = initiallyTrimed[type];
|
|
16603
16630
|
const newItems = {};
|
|
16604
16631
|
for (let initialIndex in items) {
|
|
16632
|
+
if (!items[initialIndex]) {
|
|
16633
|
+
continue;
|
|
16634
|
+
}
|
|
16605
16635
|
/**
|
|
16606
16636
|
* if item exists we find it in collection
|
|
16607
16637
|
* we support 2 level of conversions
|
|
16608
16638
|
*/
|
|
16609
|
-
|
|
16610
|
-
|
|
16611
|
-
|
|
16639
|
+
const newConversionIndex = convertTrimmedIndex(initialIndex, firstLevelMap, secondLevelMap);
|
|
16640
|
+
// Group rows do not exist in the ungrouped index map and must not leak into new trims.
|
|
16641
|
+
if (typeof newConversionIndex !== 'number') {
|
|
16642
|
+
continue;
|
|
16612
16643
|
}
|
|
16613
16644
|
/**
|
|
16614
16645
|
* if item was trimmed previously
|
|
16615
16646
|
* trimming makes sense to apply
|
|
16616
16647
|
*/
|
|
16617
|
-
|
|
16618
|
-
newItems[newConversionIndex] = true;
|
|
16619
|
-
/**
|
|
16620
|
-
* If changes present apply changes to new source
|
|
16621
|
-
*/
|
|
16622
|
-
if (newConversionIndex !== parseInt(initialIndex, 10)) {
|
|
16623
|
-
trimemedOptionsToUpgrade[type] = newItems;
|
|
16624
|
-
}
|
|
16625
|
-
}
|
|
16648
|
+
newItems[newConversionIndex] = true;
|
|
16626
16649
|
}
|
|
16650
|
+
trimemedOptionsToUpgrade[type] = newItems;
|
|
16627
16651
|
}
|
|
16628
16652
|
return trimemedOptionsToUpgrade;
|
|
16629
16653
|
}
|
|
16654
|
+
function hasVisibleGroupItems(source, trimmed, groupIndex) {
|
|
16655
|
+
var _a;
|
|
16656
|
+
const depth = (_a = source[groupIndex]) === null || _a === void 0 ? void 0 : _a[GROUP_DEPTH];
|
|
16657
|
+
if (depth == null) {
|
|
16658
|
+
return false;
|
|
16659
|
+
}
|
|
16660
|
+
// A group is visible when at least one descendant data row survives filtering.
|
|
16661
|
+
for (let i = groupIndex + 1; i < source.length; i++) {
|
|
16662
|
+
const model = source[i];
|
|
16663
|
+
if (isGrouping(model)) {
|
|
16664
|
+
if (model[GROUP_DEPTH] <= depth) {
|
|
16665
|
+
break;
|
|
16666
|
+
}
|
|
16667
|
+
continue;
|
|
16668
|
+
}
|
|
16669
|
+
if (!trimmed[i]) {
|
|
16670
|
+
return true;
|
|
16671
|
+
}
|
|
16672
|
+
}
|
|
16673
|
+
return false;
|
|
16674
|
+
}
|
|
16675
|
+
/**
|
|
16676
|
+
* Preserves data-row filter results and recalculates group-row visibility
|
|
16677
|
+
* from the filtered state of each group's descendant data rows.
|
|
16678
|
+
*
|
|
16679
|
+
* @param source - Grouped row source that contains group rows and data rows.
|
|
16680
|
+
* @param filterTrimmed - Current filter trim map keyed by physical row index.
|
|
16681
|
+
* @returns Filter trim map with empty group rows hidden and matching group rows visible.
|
|
16682
|
+
*/
|
|
16683
|
+
function filterOutEmptyGroupRows(source, filterTrimmed) {
|
|
16684
|
+
const trimmed = Object.assign({}, filterTrimmed);
|
|
16685
|
+
// Recalculate only group rows; data-row filter results are preserved as-is.
|
|
16686
|
+
source.forEach((model, index) => {
|
|
16687
|
+
if (!isGrouping(model)) {
|
|
16688
|
+
return;
|
|
16689
|
+
}
|
|
16690
|
+
if (hasVisibleGroupItems(source, trimmed, index)) {
|
|
16691
|
+
delete trimmed[index];
|
|
16692
|
+
}
|
|
16693
|
+
else {
|
|
16694
|
+
trimmed[index] = true;
|
|
16695
|
+
}
|
|
16696
|
+
});
|
|
16697
|
+
return trimmed;
|
|
16698
|
+
}
|
|
16630
16699
|
|
|
16631
16700
|
const PADDING_DEPTH = 10;
|
|
16632
16701
|
const RowRenderer = ({ rowClass, index, size, start, depth }, cells) => {
|
|
@@ -16736,16 +16805,18 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
16736
16805
|
}
|
|
16737
16806
|
}
|
|
16738
16807
|
beforeTrimmedApply(trimmed, type) {
|
|
16739
|
-
/**
|
|
16808
|
+
/** Filter trim must keep group headers in sync with their visible children. */
|
|
16740
16809
|
if (type === FILTER_TRIMMED_TYPE) {
|
|
16741
16810
|
const source = this.getStore().get('source');
|
|
16742
|
-
|
|
16743
|
-
|
|
16744
|
-
|
|
16745
|
-
}
|
|
16746
|
-
}
|
|
16811
|
+
const updatedTrimmed = filterOutEmptyGroupRows(source, trimmed);
|
|
16812
|
+
Object.keys(trimmed).forEach(index => delete trimmed[Number.parseInt(index, 10)]);
|
|
16813
|
+
Object.assign(trimmed, updatedTrimmed);
|
|
16747
16814
|
}
|
|
16748
16815
|
}
|
|
16816
|
+
beforeFilterTrimmed(trimmed) {
|
|
16817
|
+
const source = this.getStore().get('source');
|
|
16818
|
+
return filterOutEmptyGroupRows(source, trimmed);
|
|
16819
|
+
}
|
|
16749
16820
|
isSortingRunning() {
|
|
16750
16821
|
const sortingPlugin = this.providers.plugins.getByClass(SortingPlugin);
|
|
16751
16822
|
return !!(sortingPlugin === null || sortingPlugin === void 0 ? void 0 : sortingPlugin.sortingPromise);
|
|
@@ -16771,7 +16842,7 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
16771
16842
|
const customRenderer = options === null || options === void 0 ? void 0 : options.groupLabelTemplate;
|
|
16772
16843
|
// setup source
|
|
16773
16844
|
this.providers.data.setData(sourceWithGroups, GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, { depth, customRenderer }, true);
|
|
16774
|
-
this.updateTrimmed(trimmed, oldNewIndexes !== null && oldNewIndexes !== void 0 ? oldNewIndexes : {}, oldNewIndexMap);
|
|
16845
|
+
this.updateTrimmed(trimmed, oldNewIndexes !== null && oldNewIndexes !== void 0 ? oldNewIndexes : {}, oldNewIndexMap, sourceWithGroups);
|
|
16775
16846
|
}
|
|
16776
16847
|
/**
|
|
16777
16848
|
* Apply grouping on data set
|
|
@@ -16790,7 +16861,7 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
16790
16861
|
const { sourceWithGroups, depth, trimmed, oldNewIndexMap, } = gatherGrouping(source, ((_b = this.options) === null || _b === void 0 ? void 0 : _b.props) || [], options);
|
|
16791
16862
|
data.source = sourceWithGroups;
|
|
16792
16863
|
this.providers.data.setGrouping({ depth });
|
|
16793
|
-
this.updateTrimmed(trimmed, oldNewIndexMap);
|
|
16864
|
+
this.updateTrimmed(trimmed, oldNewIndexMap, undefined, sourceWithGroups);
|
|
16794
16865
|
}
|
|
16795
16866
|
/**
|
|
16796
16867
|
* External call to apply grouping. Called by revogrid when prop changed.
|
|
@@ -16839,6 +16910,10 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
16839
16910
|
* based on new results can be new grouping
|
|
16840
16911
|
*/
|
|
16841
16912
|
this.addEventListener('beforetrimmed', ({ detail: { trimmed, trimmedType } }) => this.beforeTrimmedApply(trimmed, trimmedType));
|
|
16913
|
+
/** Filter plugin owns data-row matching; grouping decides which headers remain visible. */
|
|
16914
|
+
this.addEventListener('beforefiltertrimmed', ({ detail }) => {
|
|
16915
|
+
detail.itemsToFilter = this.beforeFilterTrimmed(detail.itemsToFilter);
|
|
16916
|
+
});
|
|
16842
16917
|
/**
|
|
16843
16918
|
* sorting applied need to clear grouping and apply again
|
|
16844
16919
|
* based on new results whole grouping order will changed
|
|
@@ -16884,12 +16959,16 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
16884
16959
|
// clear rows
|
|
16885
16960
|
const { source, oldNewIndexes } = getSource(this.getStore().get('source'), this.getStore().get('proxyItems'), true);
|
|
16886
16961
|
this.providers.data.setData(source, GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, undefined, true);
|
|
16887
|
-
this.updateTrimmed(undefined, undefined, oldNewIndexes);
|
|
16962
|
+
this.updateTrimmed(undefined, undefined, oldNewIndexes, source);
|
|
16888
16963
|
}
|
|
16889
|
-
updateTrimmed(trimmedGroup = {}, firstLevelMap = {}, secondLevelMap) {
|
|
16964
|
+
updateTrimmed(trimmedGroup = {}, firstLevelMap = {}, secondLevelMap, source = this.getStore().get('source')) {
|
|
16890
16965
|
// map previously trimmed data
|
|
16891
16966
|
const trimemedOptionsToUpgrade = processDoubleConversionTrimmed(this.getStore().get('trimmed'), firstLevelMap, secondLevelMap);
|
|
16892
16967
|
for (let type in trimemedOptionsToUpgrade) {
|
|
16968
|
+
if (type === FILTER_TRIMMED_TYPE) {
|
|
16969
|
+
/** Regrouping changes physical indexes, so filter trim needs fresh group-header state. */
|
|
16970
|
+
trimemedOptionsToUpgrade[type] = filterOutEmptyGroupRows(source, trimemedOptionsToUpgrade[type]);
|
|
16971
|
+
}
|
|
16893
16972
|
this.revogrid.addTrimmed(trimemedOptionsToUpgrade[type], type);
|
|
16894
16973
|
}
|
|
16895
16974
|
// const emptyGroups = this.filterOutEmptyGroups(trimemedOptionsToUpgrade, childrenByGroup);
|
package/hydrate/index.mjs
CHANGED
|
@@ -8541,7 +8541,7 @@ function setCacheAdd(value) {
|
|
|
8541
8541
|
* @name has
|
|
8542
8542
|
* @memberOf SetCache
|
|
8543
8543
|
* @param {*} value The value to search for.
|
|
8544
|
-
* @returns {
|
|
8544
|
+
* @returns {boolean} Returns `true` if `value` is found, else `false`.
|
|
8545
8545
|
*/
|
|
8546
8546
|
function setCacheHas(value) {
|
|
8547
8547
|
return this.__data__.has(value);
|
|
@@ -15007,6 +15007,15 @@ class BasePlugin {
|
|
|
15007
15007
|
* Add support for automatic column resize
|
|
15008
15008
|
*/
|
|
15009
15009
|
const LETTER_BLOCK_SIZE = 7;
|
|
15010
|
+
var ColumnAutoSizeMode;
|
|
15011
|
+
(function (ColumnAutoSizeMode) {
|
|
15012
|
+
// increases column width on header click according the largest text value
|
|
15013
|
+
ColumnAutoSizeMode["headerClickAutosize"] = "headerClickAutoSize";
|
|
15014
|
+
// increases column width on data set and text edit, decreases performance
|
|
15015
|
+
ColumnAutoSizeMode["autoSizeOnTextOverlap"] = "autoSizeOnTextOverlap";
|
|
15016
|
+
// increases and decreases column width based on all items sizes, worst for performance
|
|
15017
|
+
ColumnAutoSizeMode["autoSizeAll"] = "autoSizeAll";
|
|
15018
|
+
})(ColumnAutoSizeMode || (ColumnAutoSizeMode = {}));
|
|
15010
15019
|
class AutoSizeColumnPlugin extends BasePlugin {
|
|
15011
15020
|
constructor(revogrid, providers, config) {
|
|
15012
15021
|
super(revogrid, providers);
|
|
@@ -15030,13 +15039,13 @@ class AutoSizeColumnPlugin extends BasePlugin {
|
|
|
15030
15039
|
};
|
|
15031
15040
|
this.addEventListener('beforecolumnsset', beforecolumnsset);
|
|
15032
15041
|
switch (config === null || config === void 0 ? void 0 : config.mode) {
|
|
15033
|
-
case
|
|
15042
|
+
case ColumnAutoSizeMode.autoSizeOnTextOverlap:
|
|
15034
15043
|
this.addEventListener('aftersourceset', aftersourceset);
|
|
15035
15044
|
this.addEventListener('afteredit', ({ detail }) => {
|
|
15036
15045
|
this.afteredit(detail);
|
|
15037
15046
|
});
|
|
15038
15047
|
break;
|
|
15039
|
-
case
|
|
15048
|
+
case ColumnAutoSizeMode.autoSizeAll:
|
|
15040
15049
|
this.addEventListener('aftersourceset', aftersourceset);
|
|
15041
15050
|
this.addEventListener('afteredit', ({ detail }) => {
|
|
15042
15051
|
this.afterEditAll(detail);
|
|
@@ -15418,6 +15427,7 @@ class FilterPlugin extends BasePlugin {
|
|
|
15418
15427
|
if (Object.keys(this.multiFilterItems).length === 0) {
|
|
15419
15428
|
return;
|
|
15420
15429
|
}
|
|
15430
|
+
await timeout();
|
|
15421
15431
|
await this.runFiltering(this.multiFilterItems);
|
|
15422
15432
|
};
|
|
15423
15433
|
this.addEventListener('headerclick', e => this.headerclick(e));
|
|
@@ -16582,6 +16592,23 @@ function doExpand(vIndex, source, rowItemsIndexes) {
|
|
|
16582
16592
|
}
|
|
16583
16593
|
|
|
16584
16594
|
const TRIMMED_GROUPING = 'grouping';
|
|
16595
|
+
/**
|
|
16596
|
+
* Converts a trim row index through the index maps produced while regrouping.
|
|
16597
|
+
*
|
|
16598
|
+
* Group rows are synthetic, so they may not exist in the first map. When a
|
|
16599
|
+
* second map is available, fall back to the original index so trims created
|
|
16600
|
+
* against the grouped physical source can still be remapped. If neither path
|
|
16601
|
+
* resolves to a number, the caller drops the stale trim entry.
|
|
16602
|
+
*/
|
|
16603
|
+
function convertTrimmedIndex(initialIndex, firstLevelMap, secondLevelMap) {
|
|
16604
|
+
const sourceIndex = Number.parseInt(initialIndex, 10);
|
|
16605
|
+
const firstConversionIndex = firstLevelMap[sourceIndex];
|
|
16606
|
+
if (!secondLevelMap) {
|
|
16607
|
+
return firstConversionIndex;
|
|
16608
|
+
}
|
|
16609
|
+
const secondConversionKey = typeof firstConversionIndex === 'number' ? firstConversionIndex : sourceIndex;
|
|
16610
|
+
return secondLevelMap[secondConversionKey];
|
|
16611
|
+
}
|
|
16585
16612
|
/**
|
|
16586
16613
|
* Prepare trimming updated indexes for grouping
|
|
16587
16614
|
* @param initiallyTrimed
|
|
@@ -16600,31 +16627,73 @@ function processDoubleConversionTrimmed(initiallyTrimed, firstLevelMap, secondLe
|
|
|
16600
16627
|
const items = initiallyTrimed[type];
|
|
16601
16628
|
const newItems = {};
|
|
16602
16629
|
for (let initialIndex in items) {
|
|
16630
|
+
if (!items[initialIndex]) {
|
|
16631
|
+
continue;
|
|
16632
|
+
}
|
|
16603
16633
|
/**
|
|
16604
16634
|
* if item exists we find it in collection
|
|
16605
16635
|
* we support 2 level of conversions
|
|
16606
16636
|
*/
|
|
16607
|
-
|
|
16608
|
-
|
|
16609
|
-
|
|
16637
|
+
const newConversionIndex = convertTrimmedIndex(initialIndex, firstLevelMap, secondLevelMap);
|
|
16638
|
+
// Group rows do not exist in the ungrouped index map and must not leak into new trims.
|
|
16639
|
+
if (typeof newConversionIndex !== 'number') {
|
|
16640
|
+
continue;
|
|
16610
16641
|
}
|
|
16611
16642
|
/**
|
|
16612
16643
|
* if item was trimmed previously
|
|
16613
16644
|
* trimming makes sense to apply
|
|
16614
16645
|
*/
|
|
16615
|
-
|
|
16616
|
-
newItems[newConversionIndex] = true;
|
|
16617
|
-
/**
|
|
16618
|
-
* If changes present apply changes to new source
|
|
16619
|
-
*/
|
|
16620
|
-
if (newConversionIndex !== parseInt(initialIndex, 10)) {
|
|
16621
|
-
trimemedOptionsToUpgrade[type] = newItems;
|
|
16622
|
-
}
|
|
16623
|
-
}
|
|
16646
|
+
newItems[newConversionIndex] = true;
|
|
16624
16647
|
}
|
|
16648
|
+
trimemedOptionsToUpgrade[type] = newItems;
|
|
16625
16649
|
}
|
|
16626
16650
|
return trimemedOptionsToUpgrade;
|
|
16627
16651
|
}
|
|
16652
|
+
function hasVisibleGroupItems(source, trimmed, groupIndex) {
|
|
16653
|
+
var _a;
|
|
16654
|
+
const depth = (_a = source[groupIndex]) === null || _a === void 0 ? void 0 : _a[GROUP_DEPTH];
|
|
16655
|
+
if (depth == null) {
|
|
16656
|
+
return false;
|
|
16657
|
+
}
|
|
16658
|
+
// A group is visible when at least one descendant data row survives filtering.
|
|
16659
|
+
for (let i = groupIndex + 1; i < source.length; i++) {
|
|
16660
|
+
const model = source[i];
|
|
16661
|
+
if (isGrouping(model)) {
|
|
16662
|
+
if (model[GROUP_DEPTH] <= depth) {
|
|
16663
|
+
break;
|
|
16664
|
+
}
|
|
16665
|
+
continue;
|
|
16666
|
+
}
|
|
16667
|
+
if (!trimmed[i]) {
|
|
16668
|
+
return true;
|
|
16669
|
+
}
|
|
16670
|
+
}
|
|
16671
|
+
return false;
|
|
16672
|
+
}
|
|
16673
|
+
/**
|
|
16674
|
+
* Preserves data-row filter results and recalculates group-row visibility
|
|
16675
|
+
* from the filtered state of each group's descendant data rows.
|
|
16676
|
+
*
|
|
16677
|
+
* @param source - Grouped row source that contains group rows and data rows.
|
|
16678
|
+
* @param filterTrimmed - Current filter trim map keyed by physical row index.
|
|
16679
|
+
* @returns Filter trim map with empty group rows hidden and matching group rows visible.
|
|
16680
|
+
*/
|
|
16681
|
+
function filterOutEmptyGroupRows(source, filterTrimmed) {
|
|
16682
|
+
const trimmed = Object.assign({}, filterTrimmed);
|
|
16683
|
+
// Recalculate only group rows; data-row filter results are preserved as-is.
|
|
16684
|
+
source.forEach((model, index) => {
|
|
16685
|
+
if (!isGrouping(model)) {
|
|
16686
|
+
return;
|
|
16687
|
+
}
|
|
16688
|
+
if (hasVisibleGroupItems(source, trimmed, index)) {
|
|
16689
|
+
delete trimmed[index];
|
|
16690
|
+
}
|
|
16691
|
+
else {
|
|
16692
|
+
trimmed[index] = true;
|
|
16693
|
+
}
|
|
16694
|
+
});
|
|
16695
|
+
return trimmed;
|
|
16696
|
+
}
|
|
16628
16697
|
|
|
16629
16698
|
const PADDING_DEPTH = 10;
|
|
16630
16699
|
const RowRenderer = ({ rowClass, index, size, start, depth }, cells) => {
|
|
@@ -16734,16 +16803,18 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
16734
16803
|
}
|
|
16735
16804
|
}
|
|
16736
16805
|
beforeTrimmedApply(trimmed, type) {
|
|
16737
|
-
/**
|
|
16806
|
+
/** Filter trim must keep group headers in sync with their visible children. */
|
|
16738
16807
|
if (type === FILTER_TRIMMED_TYPE) {
|
|
16739
16808
|
const source = this.getStore().get('source');
|
|
16740
|
-
|
|
16741
|
-
|
|
16742
|
-
|
|
16743
|
-
}
|
|
16744
|
-
}
|
|
16809
|
+
const updatedTrimmed = filterOutEmptyGroupRows(source, trimmed);
|
|
16810
|
+
Object.keys(trimmed).forEach(index => delete trimmed[Number.parseInt(index, 10)]);
|
|
16811
|
+
Object.assign(trimmed, updatedTrimmed);
|
|
16745
16812
|
}
|
|
16746
16813
|
}
|
|
16814
|
+
beforeFilterTrimmed(trimmed) {
|
|
16815
|
+
const source = this.getStore().get('source');
|
|
16816
|
+
return filterOutEmptyGroupRows(source, trimmed);
|
|
16817
|
+
}
|
|
16747
16818
|
isSortingRunning() {
|
|
16748
16819
|
const sortingPlugin = this.providers.plugins.getByClass(SortingPlugin);
|
|
16749
16820
|
return !!(sortingPlugin === null || sortingPlugin === void 0 ? void 0 : sortingPlugin.sortingPromise);
|
|
@@ -16769,7 +16840,7 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
16769
16840
|
const customRenderer = options === null || options === void 0 ? void 0 : options.groupLabelTemplate;
|
|
16770
16841
|
// setup source
|
|
16771
16842
|
this.providers.data.setData(sourceWithGroups, GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, { depth, customRenderer }, true);
|
|
16772
|
-
this.updateTrimmed(trimmed, oldNewIndexes !== null && oldNewIndexes !== void 0 ? oldNewIndexes : {}, oldNewIndexMap);
|
|
16843
|
+
this.updateTrimmed(trimmed, oldNewIndexes !== null && oldNewIndexes !== void 0 ? oldNewIndexes : {}, oldNewIndexMap, sourceWithGroups);
|
|
16773
16844
|
}
|
|
16774
16845
|
/**
|
|
16775
16846
|
* Apply grouping on data set
|
|
@@ -16788,7 +16859,7 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
16788
16859
|
const { sourceWithGroups, depth, trimmed, oldNewIndexMap, } = gatherGrouping(source, ((_b = this.options) === null || _b === void 0 ? void 0 : _b.props) || [], options);
|
|
16789
16860
|
data.source = sourceWithGroups;
|
|
16790
16861
|
this.providers.data.setGrouping({ depth });
|
|
16791
|
-
this.updateTrimmed(trimmed, oldNewIndexMap);
|
|
16862
|
+
this.updateTrimmed(trimmed, oldNewIndexMap, undefined, sourceWithGroups);
|
|
16792
16863
|
}
|
|
16793
16864
|
/**
|
|
16794
16865
|
* External call to apply grouping. Called by revogrid when prop changed.
|
|
@@ -16837,6 +16908,10 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
16837
16908
|
* based on new results can be new grouping
|
|
16838
16909
|
*/
|
|
16839
16910
|
this.addEventListener('beforetrimmed', ({ detail: { trimmed, trimmedType } }) => this.beforeTrimmedApply(trimmed, trimmedType));
|
|
16911
|
+
/** Filter plugin owns data-row matching; grouping decides which headers remain visible. */
|
|
16912
|
+
this.addEventListener('beforefiltertrimmed', ({ detail }) => {
|
|
16913
|
+
detail.itemsToFilter = this.beforeFilterTrimmed(detail.itemsToFilter);
|
|
16914
|
+
});
|
|
16840
16915
|
/**
|
|
16841
16916
|
* sorting applied need to clear grouping and apply again
|
|
16842
16917
|
* based on new results whole grouping order will changed
|
|
@@ -16882,12 +16957,16 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
16882
16957
|
// clear rows
|
|
16883
16958
|
const { source, oldNewIndexes } = getSource(this.getStore().get('source'), this.getStore().get('proxyItems'), true);
|
|
16884
16959
|
this.providers.data.setData(source, GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, undefined, true);
|
|
16885
|
-
this.updateTrimmed(undefined, undefined, oldNewIndexes);
|
|
16960
|
+
this.updateTrimmed(undefined, undefined, oldNewIndexes, source);
|
|
16886
16961
|
}
|
|
16887
|
-
updateTrimmed(trimmedGroup = {}, firstLevelMap = {}, secondLevelMap) {
|
|
16962
|
+
updateTrimmed(trimmedGroup = {}, firstLevelMap = {}, secondLevelMap, source = this.getStore().get('source')) {
|
|
16888
16963
|
// map previously trimmed data
|
|
16889
16964
|
const trimemedOptionsToUpgrade = processDoubleConversionTrimmed(this.getStore().get('trimmed'), firstLevelMap, secondLevelMap);
|
|
16890
16965
|
for (let type in trimemedOptionsToUpgrade) {
|
|
16966
|
+
if (type === FILTER_TRIMMED_TYPE) {
|
|
16967
|
+
/** Regrouping changes physical indexes, so filter trim needs fresh group-header state. */
|
|
16968
|
+
trimemedOptionsToUpgrade[type] = filterOutEmptyGroupRows(source, trimemedOptionsToUpgrade[type]);
|
|
16969
|
+
}
|
|
16891
16970
|
this.revogrid.addTrimmed(trimemedOptionsToUpgrade[type], type);
|
|
16892
16971
|
}
|
|
16893
16972
|
// const emptyGroups = this.filterOutEmptyGroups(trimemedOptionsToUpgrade, childrenByGroup);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@revolist/revogrid",
|
|
3
|
-
"version": "4.21.
|
|
3
|
+
"version": "4.21.6",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Virtual reactive data grid spreadsheet component - RevoGrid.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -100,6 +100,7 @@
|
|
|
100
100
|
"readme": "node ./scripts/generate_readme.mjs",
|
|
101
101
|
"test": "stencil test --spec",
|
|
102
102
|
"test:e2e": "playwright test",
|
|
103
|
+
"test:e2e:ui": "playwright test --ui",
|
|
103
104
|
"dev": "stencil build --dev --watch --serve",
|
|
104
105
|
"release": "npm run build && npm publish --public --tag pre-release && npm run package:update"
|
|
105
106
|
},
|
|
@@ -118,7 +119,7 @@
|
|
|
118
119
|
"@stencil/vue-output-target": "^0.8.9",
|
|
119
120
|
"@types/events": "^3.0.3",
|
|
120
121
|
"@types/jest": "^29.5.14",
|
|
121
|
-
"@types/lodash": "^4.17.
|
|
122
|
+
"@types/lodash": "^4.17.24",
|
|
122
123
|
"@types/node": "^20.14.2",
|
|
123
124
|
"@types/react": "^18.3.3",
|
|
124
125
|
"@types/react-dom": "^18.3.0",
|
|
@@ -129,7 +130,7 @@
|
|
|
129
130
|
"jest": "^29.7.0",
|
|
130
131
|
"jest-cli": "^29.7.0",
|
|
131
132
|
"json2md": "^2.0.1",
|
|
132
|
-
"lodash": "npm:lodash-es@4.
|
|
133
|
+
"lodash": "npm:lodash-es@4.18.1",
|
|
133
134
|
"minimist": "^1.2.8",
|
|
134
135
|
"path": "^0.12.7",
|
|
135
136
|
"prettier": "3.3.2",
|
package/standalone/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
|
-
import{setMode as _}from"@stencil/core/internal/client";export{getAssetPath,h,render,setAssetPath,setNonce,setPlatformOptions}from"@stencil/core/internal/client";import{g as O,B as L}from"./revo-grid.js";export{A as AutoSizeColumnPlugin,C as ColumnMovePlugin,D as DimensionStore,b as ExportCsv,E as ExportFilePlugin,c as FILTER_CONFIG_CHANGED_EVENT,F as FILTER_TRIMMED_TYPE,d as FILTE_PANEL,e as FilterPlugin,G as GroupingRowPlugin,RevoGrid,S as SelectionStore,n as SortingPlugin,a as StretchColumn,o as defaultCellCompare,defineCustomElement as defineCustomElementRevoGrid,p as descCellCompare,k as doCollapse,l as doExpand,f as filterCoreFunctionsIndexedByType,j as filterNames,h as filterTypes,r as getComparer,m as getLeftRelative,q as getNextOrder,i as isStretchPlugin,s as sortIndexByItems}from"./revo-grid.js";export{o as GROUPING_ROW_TYPE,j as GROUP_COLUMN_PROP,G as GROUP_DEPTH,h as GROUP_EXPANDED,l as GROUP_EXPAND_BTN,m as GROUP_EXPAND_EVENT,k as GROUP_ORIGINAL_INDEX,f as PSEUDO_GROUP_COLUMN,P as PSEUDO_GROUP_ITEM,d as PSEUDO_GROUP_ITEM_ID,e as PSEUDO_GROUP_ITEM_VALUE,c as columnTypes,a as cropCellToMax,H as gatherGroup,s as gatherGrouping,z as getCellData,B as getCellDataParsed,A as getCellRaw,I as getColumnByProp,D as getColumnSizes,C as getColumnType,F as getColumns,q as getExpanded,t as getGroupingName,x as getParsedGroup,g as getRange,p as getSource,E as isColGrouping,u as isGrouping,v as isGroupingColumn,b as isRangeSingleCell,i as isRowType,y as isSameGroup,w as measureEqualDepth,n as nextCell,r as rowTypes}from"./column.service.js";export{S as SortingSign,d as dispatch,a as dispatchByEvent}from"./revogr-header2.js";export{a as applyMixins,f as findPositionInArray,g as getScrollbarSize,m as mergeSortedArray,p as pushSorted,r as range,s as scaleValue,t as timeout}from"./index2.js";export{C as CellRenderer,G as GroupingRowRenderer,e as expandEvent,a as expandSvgIconVNode}from"./revogr-data2.js";export{T as TextEditor,k as isAll,c as isClear,h as isCopy,a as isCtrlKey,b as isCtrlMetaKey,g as isCut,l as isEditInput,m as isEditorCtrConstructible,f as isEnterKeyValue,i as isMetaKey,j as isPaste,d as isTab,e as isTabKeyValue}from"./revogr-edit2.js";export{RevogrAttribution,defineCustomElement as defineCustomElementRevogrAttribution}from"./revogr-attribution.js";export{RevogrClipboard,defineCustomElement as defineCustomElementRevogrClipboard}from"./revogr-clipboard.js";export{RevogrData,defineCustomElement as defineCustomElementRevogrData}from"./revogr-data.js";export{RevogrEdit,defineCustomElement as defineCustomElementRevogrEdit}from"./revogr-edit.js";export{RevogrExtra,defineCustomElement as defineCustomElementRevogrExtra}from"./revogr-extra.js";export{RevogrFilterPanel,defineCustomElement as defineCustomElementRevogrFilterPanel}from"./revogr-filter-panel.js";export{RevogrFocus,defineCustomElement as defineCustomElementRevogrFocus}from"./revogr-focus.js";export{RevogrHeader,defineCustomElement as defineCustomElementRevogrHeader}from"./revogr-header.js";export{RevogrOrderEditor,defineCustomElement as defineCustomElementRevogrOrderEditor}from"./revogr-order-editor.js";export{RevogrOverlaySelection,defineCustomElement as defineCustomElementRevogrOverlaySelection}from"./revogr-overlay-selection.js";export{RevogrRowHeaders,defineCustomElement as defineCustomElementRevogrRowHeaders}from"./revogr-row-headers.js";export{RevogrScrollVirtual,defineCustomElement as defineCustomElementRevogrScrollVirtual}from"./revogr-scroll-virtual.js";export{RevogrTempRange,defineCustomElement as defineCustomElementRevogrTempRange}from"./revogr-temp-range.js";export{RevogrViewportScroll,defineCustomElement as defineCustomElementRevogrViewportScroll}from"./revogr-viewport-scroll.js";export{VnodeHtml,defineCustomElement as defineCustomElementVnodeHtml}from"./vnode-html.js";export{D as DataStore,h as gatherTrimmedItems,g as getPhysical,b as getSourceItem,f as getSourceItemVirtualIndexByProp,c as getSourcePhysicalIndex,a as getVisibleSourceItem,p as proxyPlugin,e as setItems,d as setSourceByPhysicalIndex,s as setSourceByVirtualIndex,i as setStore,t as trimmedPlugin}from"./data.store.js";export{c as calculateDimensionData,a as getItemByIndex,g as getItemByPosition}from"./dimension.helpers.js";export{V as ViewportStore,a as addMissingItems,f as calculateRowHeaderSize,d as getFirstItem,b as getItems,e as getLastItem,g as getUpdatedItemsByPosition,i as isActiveRange,c as isActiveRangeOutsideLastItem,r as recombineByOffset,s as setItemSizes,u as updateMissingAndRange}from"./revogr-row-headers2.js";export{A as AND_OR_BUTTON,e as AndOrButton,a as FILTER_BUTTON_ACTIVE,F as FILTER_BUTTON_CLASS,b as FILTER_PROP,c as FilterButton,T as TRASH_BUTTON,d as TrashButton,i as isFilterBtn}from"./filter.button.js";export{C as CELL_CLASS,j as CELL_HANDLER_CLASS,D as DATA_COL,a as DATA_ROW,b as DISABLED_CLASS,h as DRAGGABLE_CLASS,k as DRAGG_TEXT,g as DRAG_ICON_CLASS,E as EDIT_INPUT_WR,F as FOCUS_CLASS,G as GRID_INTERNALS,f as HEADER_ACTUAL_ROW_CLASS,H as HEADER_CLASS,e as HEADER_ROW_CLASS,d as HEADER_SORTABLE_CLASS,M as MIN_COL_SIZE,i as MOBILE_CLASS,R as RESIZE_INTERVAL,l as ROW_FOCUSED_CLASS,c as ROW_HEADER_TYPE,S as SELECTION_BORDER_CLASS,T as TMP_SELECTION_BG_CLASS}from"./consts.js";export{c as codesLetter,k as keyValues}from"./platform.js";const N=function(){_((e=>{let r=e.theme||e.getAttribute("theme");"string"==typeof r&&(r=r.trim());const o=O(r);return o!==r&&e.setAttribute("theme",o),o}))}||(()=>{}),U=new Map([["contentsizechanged","contentsizechanged"],["beforeedit","beforeedit"],["beforerangeedit","beforerangeedit"],["afteredit","afteredit"],["beforeautofill","beforeautofill"],["beforerange","beforerange"],["afterfocus","afterfocus"],["roworderchanged","roworderchanged"],["beforesorting","beforesorting"],["beforesourcesortingapply","beforesourcesortingapply"],["beforesortingapply","beforesortingapply"],["rowdragstart","rowdragstart"],["headerclick","headerclick"],["beforecellfocus","beforecellfocus"],["beforefocuslost","beforefocuslost"],["beforesourceset","beforesourceset"],["beforeanysource","beforeanysource"],["aftersourceset","aftersourceset"],["afteranysource","afteranysource"],["beforecolumnsgather","beforecolumnsgather"],["beforecolumnsset","beforecolumnsset"],["beforecolumnapplied","beforecolumnapplied"],["aftercolumnsset","aftercolumnsset"],["beforefilterapply","beforefilterapply"],["beforefiltertrimmed","beforefiltertrimmed"],["beforetrimmed","beforetrimmed"],["aftertrimmed","aftertrimmed"],["viewportscroll","viewportscroll"],["beforeexport","beforeexport"],["beforeeditstart","beforeeditstart"],["aftercolumnresize","aftercolumnresize"],["beforerowdefinition","beforerowdefinition"],["filterconfigchanged","filterconfigchanged"],["sortingconfigchanged","sortingconfigchanged"],["rowheaderschanged","rowheaderschanged"],["beforegridrender","beforegridrender"],["aftergridrender","aftergridrender"],["aftergridinit","aftergridinit"],["additionaldatachanged","additionaldatachanged"],["afterthemechanged","afterthemechanged"],["created","created"],["beforepaste","beforepaste"],["beforepasteapply","beforepasteapply"],["pasteregion","pasteregion"],["afterpasteapply","afterpasteapply"],["beforecut","beforecut"],["clearregion","clearregion"],["beforecopy","beforecopy"],["beforecopyapply","beforecopyapply"],["copyregion","copyregion"],["beforerowrender","beforerowrender"],["afterrender","afterrender"],["beforecellrender","beforecellrender"],["beforedatarender","beforedatarender"],["dragstartcell","dragstartcell"],["celleditinit","celleditinit"],["closeedit","closeedit"],["filterChange","filterChange"],["resetChange","resetChange"],["beforefocusrender","beforefocusrender"],["beforescrollintoview","beforescrollintoview"],["afterfocus","afterfocus"],["beforeheaderclick","beforeheaderclick"],["headerresize","headerresize"],["beforeheaderresize","beforeheaderresize"],["headerdblclick","headerdblclick"],["beforeheaderrender","beforeheaderrender"],["beforegroupheaderrender","beforegroupheaderrender"],["afterheaderrender","afterheaderrender"],["rowdragstartinit","rowdragstartinit"],["rowdragendinit","rowdragendinit"],["rowdragmoveinit","rowdragmoveinit"],["rowdragmousemove","rowdragmousemove"],["rowdropinit","rowdropinit"],["roworderchange","roworderchange"],["beforecopyregion","beforecopyregion"],["beforepasteregion","beforepasteregion"],["celleditapply","celleditapply"],["beforecellfocusinit","beforecellfocusinit"],["beforenextvpfocus","beforenextvpfocus"],["setedit","setedit"],["beforeapplyrange","beforeapplyrange"],["beforesetrange","beforesetrange"],["setrange","setrange"],["beforeeditrender","beforeeditrender"],["selectall","selectall"],["canceledit","canceledit"],["settemprange","settemprange"],["beforesettemprange","beforesettemprange"],["applyfocus","applyfocus"],["focuscell","focuscell"],["beforerangedataapply","beforerangedataapply"],["selectionchangeinit","selectionchangeinit"],["beforerangecopyapply","beforerangecopyapply"],["rangeeditapply","rangeeditapply"],["clipboardrangecopy","clipboardrangecopy"],["clipboardrangepaste","clipboardrangepaste"],["beforekeydown","beforekeydown"],["beforekeyup","beforekeyup"],["beforecellsave","beforecellsave"],["celledit","celledit"],["scrollview","scrollview"],["ref","ref"],["scrollvirtual","scrollvirtual"],["scrollviewport","scrollviewport"],["resizeviewport","resizeviewport"],["scrollchange","scrollchange"],["scrollviewportsilent","scrollviewportsilent"],["html","html"]]);class W extends L{constructor(e,r){super(e,r),this.addEventListener("beforepasteapply",(e=>this.handleBeforePasteApply(e)))}handleBeforePasteApply(e){const r=this.providers.selection.focused;if(!r||null!=this.providers.selection.edit)return;const o=this.providers.data.stores.rgRow.store.get("items").length,t=r.y+e.detail.parsed.length;if(o<t){const e=Array.from({length:t-o},((e,r)=>({index:o+r,data:{}}))),r=this.emit("newRows",{newRows:e});if(r.defaultPrevented)return;const a=[...this.providers.data.stores.rgRow.store.get("source"),...r.detail.newRows.map((e=>e.data))];this.providers.data.setData(a)}}}N();export{W as AutoAddRowsPlugin,L as BasePlugin,U as REVOGRID_EVENTS}
|
|
4
|
+
import{setMode as _}from"@stencil/core/internal/client";export{getAssetPath,h,render,setAssetPath,setNonce,setPlatformOptions}from"@stencil/core/internal/client";import{g as O,B as L}from"./revo-grid.js";export{A as AutoSizeColumnPlugin,C as ColumnAutoSizeMode,m as ColumnMovePlugin,D as DimensionStore,b as ExportCsv,E as ExportFilePlugin,c as FILTER_CONFIG_CHANGED_EVENT,F as FILTER_TRIMMED_TYPE,d as FILTE_PANEL,e as FilterPlugin,G as GroupingRowPlugin,RevoGrid,S as SelectionStore,o as SortingPlugin,a as StretchColumn,p as defaultCellCompare,defineCustomElement as defineCustomElementRevoGrid,q as descCellCompare,k as doCollapse,l as doExpand,f as filterCoreFunctionsIndexedByType,j as filterNames,h as filterTypes,t as getComparer,n as getLeftRelative,r as getNextOrder,i as isStretchPlugin,s as sortIndexByItems}from"./revo-grid.js";export{o as GROUPING_ROW_TYPE,j as GROUP_COLUMN_PROP,G as GROUP_DEPTH,h as GROUP_EXPANDED,l as GROUP_EXPAND_BTN,m as GROUP_EXPAND_EVENT,k as GROUP_ORIGINAL_INDEX,f as PSEUDO_GROUP_COLUMN,P as PSEUDO_GROUP_ITEM,d as PSEUDO_GROUP_ITEM_ID,e as PSEUDO_GROUP_ITEM_VALUE,c as columnTypes,a as cropCellToMax,H as gatherGroup,s as gatherGrouping,z as getCellData,B as getCellDataParsed,A as getCellRaw,I as getColumnByProp,D as getColumnSizes,C as getColumnType,F as getColumns,q as getExpanded,t as getGroupingName,x as getParsedGroup,g as getRange,p as getSource,E as isColGrouping,u as isGrouping,v as isGroupingColumn,b as isRangeSingleCell,i as isRowType,y as isSameGroup,w as measureEqualDepth,n as nextCell,r as rowTypes}from"./column.service.js";export{S as SortingSign,d as dispatch,a as dispatchByEvent}from"./revogr-header2.js";export{a as applyMixins,f as findPositionInArray,g as getScrollbarSize,m as mergeSortedArray,p as pushSorted,r as range,s as scaleValue,t as timeout}from"./index2.js";export{C as CellRenderer,G as GroupingRowRenderer,e as expandEvent,a as expandSvgIconVNode}from"./revogr-data2.js";export{T as TextEditor,k as isAll,c as isClear,h as isCopy,a as isCtrlKey,b as isCtrlMetaKey,g as isCut,l as isEditInput,m as isEditorCtrConstructible,f as isEnterKeyValue,i as isMetaKey,j as isPaste,d as isTab,e as isTabKeyValue}from"./revogr-edit2.js";export{RevogrAttribution,defineCustomElement as defineCustomElementRevogrAttribution}from"./revogr-attribution.js";export{RevogrClipboard,defineCustomElement as defineCustomElementRevogrClipboard}from"./revogr-clipboard.js";export{RevogrData,defineCustomElement as defineCustomElementRevogrData}from"./revogr-data.js";export{RevogrEdit,defineCustomElement as defineCustomElementRevogrEdit}from"./revogr-edit.js";export{RevogrExtra,defineCustomElement as defineCustomElementRevogrExtra}from"./revogr-extra.js";export{RevogrFilterPanel,defineCustomElement as defineCustomElementRevogrFilterPanel}from"./revogr-filter-panel.js";export{RevogrFocus,defineCustomElement as defineCustomElementRevogrFocus}from"./revogr-focus.js";export{RevogrHeader,defineCustomElement as defineCustomElementRevogrHeader}from"./revogr-header.js";export{RevogrOrderEditor,defineCustomElement as defineCustomElementRevogrOrderEditor}from"./revogr-order-editor.js";export{RevogrOverlaySelection,defineCustomElement as defineCustomElementRevogrOverlaySelection}from"./revogr-overlay-selection.js";export{RevogrRowHeaders,defineCustomElement as defineCustomElementRevogrRowHeaders}from"./revogr-row-headers.js";export{RevogrScrollVirtual,defineCustomElement as defineCustomElementRevogrScrollVirtual}from"./revogr-scroll-virtual.js";export{RevogrTempRange,defineCustomElement as defineCustomElementRevogrTempRange}from"./revogr-temp-range.js";export{RevogrViewportScroll,defineCustomElement as defineCustomElementRevogrViewportScroll}from"./revogr-viewport-scroll.js";export{VnodeHtml,defineCustomElement as defineCustomElementVnodeHtml}from"./vnode-html.js";export{D as DataStore,h as gatherTrimmedItems,g as getPhysical,b as getSourceItem,f as getSourceItemVirtualIndexByProp,c as getSourcePhysicalIndex,a as getVisibleSourceItem,p as proxyPlugin,e as setItems,d as setSourceByPhysicalIndex,s as setSourceByVirtualIndex,i as setStore,t as trimmedPlugin}from"./data.store.js";export{c as calculateDimensionData,a as getItemByIndex,g as getItemByPosition}from"./dimension.helpers.js";export{V as ViewportStore,a as addMissingItems,f as calculateRowHeaderSize,d as getFirstItem,b as getItems,e as getLastItem,g as getUpdatedItemsByPosition,i as isActiveRange,c as isActiveRangeOutsideLastItem,r as recombineByOffset,s as setItemSizes,u as updateMissingAndRange}from"./revogr-row-headers2.js";export{A as AND_OR_BUTTON,e as AndOrButton,a as FILTER_BUTTON_ACTIVE,F as FILTER_BUTTON_CLASS,b as FILTER_PROP,c as FilterButton,T as TRASH_BUTTON,d as TrashButton,i as isFilterBtn}from"./filter.button.js";export{C as CELL_CLASS,j as CELL_HANDLER_CLASS,D as DATA_COL,a as DATA_ROW,b as DISABLED_CLASS,h as DRAGGABLE_CLASS,k as DRAGG_TEXT,g as DRAG_ICON_CLASS,E as EDIT_INPUT_WR,F as FOCUS_CLASS,G as GRID_INTERNALS,f as HEADER_ACTUAL_ROW_CLASS,H as HEADER_CLASS,e as HEADER_ROW_CLASS,d as HEADER_SORTABLE_CLASS,M as MIN_COL_SIZE,i as MOBILE_CLASS,R as RESIZE_INTERVAL,l as ROW_FOCUSED_CLASS,c as ROW_HEADER_TYPE,S as SELECTION_BORDER_CLASS,T as TMP_SELECTION_BG_CLASS}from"./consts.js";export{c as codesLetter,k as keyValues}from"./platform.js";const N=function(){_((e=>{let r=e.theme||e.getAttribute("theme");"string"==typeof r&&(r=r.trim());const o=O(r);return o!==r&&e.setAttribute("theme",o),o}))}||(()=>{}),U=new Map([["contentsizechanged","contentsizechanged"],["beforeedit","beforeedit"],["beforerangeedit","beforerangeedit"],["afteredit","afteredit"],["beforeautofill","beforeautofill"],["beforerange","beforerange"],["afterfocus","afterfocus"],["roworderchanged","roworderchanged"],["beforesorting","beforesorting"],["beforesourcesortingapply","beforesourcesortingapply"],["beforesortingapply","beforesortingapply"],["rowdragstart","rowdragstart"],["headerclick","headerclick"],["beforecellfocus","beforecellfocus"],["beforefocuslost","beforefocuslost"],["beforesourceset","beforesourceset"],["beforeanysource","beforeanysource"],["aftersourceset","aftersourceset"],["afteranysource","afteranysource"],["beforecolumnsgather","beforecolumnsgather"],["beforecolumnsset","beforecolumnsset"],["beforecolumnapplied","beforecolumnapplied"],["aftercolumnsset","aftercolumnsset"],["beforefilterapply","beforefilterapply"],["beforefiltertrimmed","beforefiltertrimmed"],["beforetrimmed","beforetrimmed"],["aftertrimmed","aftertrimmed"],["viewportscroll","viewportscroll"],["beforeexport","beforeexport"],["beforeeditstart","beforeeditstart"],["aftercolumnresize","aftercolumnresize"],["beforerowdefinition","beforerowdefinition"],["filterconfigchanged","filterconfigchanged"],["sortingconfigchanged","sortingconfigchanged"],["rowheaderschanged","rowheaderschanged"],["beforegridrender","beforegridrender"],["aftergridrender","aftergridrender"],["aftergridinit","aftergridinit"],["additionaldatachanged","additionaldatachanged"],["afterthemechanged","afterthemechanged"],["created","created"],["beforepaste","beforepaste"],["beforepasteapply","beforepasteapply"],["pasteregion","pasteregion"],["afterpasteapply","afterpasteapply"],["beforecut","beforecut"],["clearregion","clearregion"],["beforecopy","beforecopy"],["beforecopyapply","beforecopyapply"],["copyregion","copyregion"],["beforerowrender","beforerowrender"],["afterrender","afterrender"],["beforecellrender","beforecellrender"],["beforedatarender","beforedatarender"],["dragstartcell","dragstartcell"],["celleditinit","celleditinit"],["closeedit","closeedit"],["filterChange","filterChange"],["resetChange","resetChange"],["beforefocusrender","beforefocusrender"],["beforescrollintoview","beforescrollintoview"],["afterfocus","afterfocus"],["beforeheaderclick","beforeheaderclick"],["headerresize","headerresize"],["beforeheaderresize","beforeheaderresize"],["headerdblclick","headerdblclick"],["beforeheaderrender","beforeheaderrender"],["beforegroupheaderrender","beforegroupheaderrender"],["afterheaderrender","afterheaderrender"],["rowdragstartinit","rowdragstartinit"],["rowdragendinit","rowdragendinit"],["rowdragmoveinit","rowdragmoveinit"],["rowdragmousemove","rowdragmousemove"],["rowdropinit","rowdropinit"],["roworderchange","roworderchange"],["beforecopyregion","beforecopyregion"],["beforepasteregion","beforepasteregion"],["celleditapply","celleditapply"],["beforecellfocusinit","beforecellfocusinit"],["beforenextvpfocus","beforenextvpfocus"],["setedit","setedit"],["beforeapplyrange","beforeapplyrange"],["beforesetrange","beforesetrange"],["setrange","setrange"],["beforeeditrender","beforeeditrender"],["selectall","selectall"],["canceledit","canceledit"],["settemprange","settemprange"],["beforesettemprange","beforesettemprange"],["applyfocus","applyfocus"],["focuscell","focuscell"],["beforerangedataapply","beforerangedataapply"],["selectionchangeinit","selectionchangeinit"],["beforerangecopyapply","beforerangecopyapply"],["rangeeditapply","rangeeditapply"],["clipboardrangecopy","clipboardrangecopy"],["clipboardrangepaste","clipboardrangepaste"],["beforekeydown","beforekeydown"],["beforekeyup","beforekeyup"],["beforecellsave","beforecellsave"],["celledit","celledit"],["scrollview","scrollview"],["ref","ref"],["scrollvirtual","scrollvirtual"],["scrollviewport","scrollviewport"],["resizeviewport","resizeviewport"],["scrollchange","scrollchange"],["scrollviewportsilent","scrollviewportsilent"],["html","html"]]);class W extends L{constructor(e,r){super(e,r),this.addEventListener("beforepasteapply",(e=>this.handleBeforePasteApply(e)))}handleBeforePasteApply(e){const r=this.providers.selection.focused;if(!r||null!=this.providers.selection.edit)return;const o=this.providers.data.stores.rgRow.store.get("items").length,t=r.y+e.detail.parsed.length;if(o<t){const e=Array.from({length:t-o},((e,r)=>({index:o+r,data:{}}))),r=this.emit("newRows",{newRows:e});if(r.defaultPrevented)return;const a=[...this.providers.data.stores.rgRow.store.get("source"),...r.detail.newRows.map((e=>e.data))];this.providers.data.setData(a)}}}N();export{W as AutoAddRowsPlugin,L as BasePlugin,U as REVOGRID_EVENTS}
|