@revolist/revogrid 4.12.2 → 4.12.3

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.
Files changed (169) hide show
  1. package/dist/cjs/{app-globals-66b5e3d1.js → app-globals-f72a6199.js} +2 -2
  2. package/dist/cjs/{app-globals-66b5e3d1.js.map → app-globals-f72a6199.js.map} +1 -1
  3. package/dist/cjs/{column.drag.plugin-2c24c512.js → column.drag.plugin-c4e46169.js} +181 -187
  4. package/dist/cjs/column.drag.plugin-c4e46169.js.map +1 -0
  5. package/dist/cjs/{column.service-cb3d757e.js → column.service-4339fa5d.js} +73 -57
  6. package/dist/cjs/column.service-4339fa5d.js.map +1 -0
  7. package/dist/cjs/{dimension.helpers-4527475f.js → dimension.helpers-5b822a09.js} +3 -2
  8. package/dist/cjs/dimension.helpers-5b822a09.js.map +1 -0
  9. package/dist/cjs/{edit.utils-787a9e1d.js → edit.utils-32d4c9e4.js} +2 -2
  10. package/dist/cjs/{edit.utils-787a9e1d.js.map → edit.utils-32d4c9e4.js.map} +1 -1
  11. package/dist/cjs/{filter.button-48acc2db.js → filter.button-2708e602.js} +2 -2
  12. package/dist/cjs/{filter.button-48acc2db.js.map → filter.button-2708e602.js.map} +1 -1
  13. package/dist/cjs/{header-cell-renderer-9d81a1fe.js → header-cell-renderer-aa96a9bd.js} +3 -3
  14. package/dist/cjs/{header-cell-renderer-9d81a1fe.js.map → header-cell-renderer-aa96a9bd.js.map} +1 -1
  15. package/dist/cjs/{index-bdea2cb6.js → index-8006d065.js} +8 -1
  16. package/dist/cjs/index-8006d065.js.map +1 -0
  17. package/dist/cjs/index.cjs.js +15 -10
  18. package/dist/cjs/index.cjs.js.map +1 -1
  19. package/dist/cjs/{key.utils-fcd0dda2.js → key.utils-05f14738.js} +2 -2
  20. package/dist/cjs/{key.utils-fcd0dda2.js.map → key.utils-05f14738.js.map} +1 -1
  21. package/dist/cjs/loader.cjs.js +2 -2
  22. package/dist/cjs/revo-grid.cjs.entry.js +7 -7
  23. package/dist/cjs/revo-grid.cjs.js +2 -2
  24. package/dist/cjs/revogr-attribution_7.cjs.entry.js +7 -7
  25. package/dist/cjs/revogr-clipboard_3.cjs.entry.js +5 -5
  26. package/dist/cjs/revogr-data_4.cjs.entry.js +15 -51
  27. package/dist/cjs/revogr-data_4.cjs.entry.js.map +1 -1
  28. package/dist/cjs/revogr-filter-panel.cjs.entry.js +2 -2
  29. package/dist/cjs/sorting.sign-b22d3d68.js +72 -0
  30. package/dist/cjs/sorting.sign-b22d3d68.js.map +1 -0
  31. package/dist/cjs/{text-editor-9f64bd5e.js → text-editor-82f53111.js} +3 -3
  32. package/dist/cjs/{text-editor-9f64bd5e.js.map → text-editor-82f53111.js.map} +1 -1
  33. package/dist/cjs/{throttle-6a2a8510.js → throttle-08957661.js} +2 -2
  34. package/dist/cjs/{throttle-6a2a8510.js.map → throttle-08957661.js.map} +1 -1
  35. package/dist/cjs/{viewport.store-0c68c932.js → viewport.store-4dbfeaa3.js} +2 -2
  36. package/dist/cjs/{viewport.store-0c68c932.js.map → viewport.store-4dbfeaa3.js.map} +1 -1
  37. package/dist/collection/components/data/cell-renderer.js +1 -1
  38. package/dist/collection/components/data/cell-renderer.js.map +1 -1
  39. package/dist/collection/components/data/revogr-data.js +2 -1
  40. package/dist/collection/components/data/revogr-data.js.map +1 -1
  41. package/dist/collection/plugins/filter/filter.plugin.js +1 -5
  42. package/dist/collection/plugins/filter/filter.plugin.js.map +1 -1
  43. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +57 -57
  44. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js.map +1 -1
  45. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js +16 -6
  46. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js.map +1 -1
  47. package/dist/collection/plugins/groupingRow/grouping.row.types.js.map +1 -1
  48. package/dist/collection/plugins/groupingRow/grouping.service.js +70 -54
  49. package/dist/collection/plugins/groupingRow/grouping.service.js.map +1 -1
  50. package/dist/collection/plugins/index.js +0 -1
  51. package/dist/collection/plugins/index.js.map +1 -1
  52. package/dist/collection/serve/data.js +5 -0
  53. package/dist/collection/store/dataSource/trimmed.plugin.js +1 -0
  54. package/dist/collection/store/dataSource/trimmed.plugin.js.map +1 -1
  55. package/dist/collection/types/interfaces.js.map +1 -1
  56. package/dist/esm/{app-globals-60fd3b54.js → app-globals-6b929fd8.js} +2 -2
  57. package/dist/esm/{app-globals-60fd3b54.js.map → app-globals-6b929fd8.js.map} +1 -1
  58. package/dist/esm/{column.drag.plugin-6a84d7b0.js → column.drag.plugin-94964d01.js} +180 -188
  59. package/dist/esm/column.drag.plugin-94964d01.js.map +1 -0
  60. package/dist/esm/{column.service-ff8f75de.js → column.service-c0d404a6.js} +74 -58
  61. package/dist/esm/column.service-c0d404a6.js.map +1 -0
  62. package/dist/esm/{dimension.helpers-a4dd4f76.js → dimension.helpers-5567e424.js} +3 -2
  63. package/dist/esm/dimension.helpers-5567e424.js.map +1 -0
  64. package/dist/esm/{edit.utils-dd8b5cd7.js → edit.utils-b59306be.js} +2 -2
  65. package/dist/esm/{edit.utils-dd8b5cd7.js.map → edit.utils-b59306be.js.map} +1 -1
  66. package/dist/esm/{filter.button-d9b783c1.js → filter.button-84396156.js} +2 -2
  67. package/dist/esm/{filter.button-d9b783c1.js.map → filter.button-84396156.js.map} +1 -1
  68. package/dist/esm/{header-cell-renderer-4508273a.js → header-cell-renderer-0f5bd4a9.js} +3 -3
  69. package/dist/esm/{header-cell-renderer-4508273a.js.map → header-cell-renderer-0f5bd4a9.js.map} +1 -1
  70. package/dist/esm/{index-b5695870.js → index-f6fae858.js} +8 -2
  71. package/dist/esm/index-f6fae858.js.map +1 -0
  72. package/dist/esm/index.js +11 -11
  73. package/dist/esm/{key.utils-38b263fb.js → key.utils-3632161b.js} +2 -2
  74. package/dist/esm/{key.utils-38b263fb.js.map → key.utils-3632161b.js.map} +1 -1
  75. package/dist/esm/loader.js +3 -3
  76. package/dist/esm/revo-grid.entry.js +7 -7
  77. package/dist/esm/revo-grid.js +3 -3
  78. package/dist/esm/revogr-attribution_7.entry.js +7 -7
  79. package/dist/esm/revogr-clipboard_3.entry.js +5 -5
  80. package/dist/esm/revogr-data_4.entry.js +13 -49
  81. package/dist/esm/revogr-data_4.entry.js.map +1 -1
  82. package/dist/esm/revogr-filter-panel.entry.js +2 -2
  83. package/dist/esm/sorting.sign-a92ff239.js +65 -0
  84. package/dist/esm/sorting.sign-a92ff239.js.map +1 -0
  85. package/dist/esm/{text-editor-7fbbcea7.js → text-editor-e47e56c3.js} +3 -3
  86. package/dist/esm/{text-editor-7fbbcea7.js.map → text-editor-e47e56c3.js.map} +1 -1
  87. package/dist/esm/{throttle-61be638a.js → throttle-05489451.js} +2 -2
  88. package/dist/esm/{throttle-61be638a.js.map → throttle-05489451.js.map} +1 -1
  89. package/dist/esm/{viewport.store-e66c1a9b.js → viewport.store-c18a25a6.js} +2 -2
  90. package/dist/esm/{viewport.store-e66c1a9b.js.map → viewport.store-c18a25a6.js.map} +1 -1
  91. package/dist/revo-grid/app-globals-6b929fd8.js +5 -0
  92. package/dist/revo-grid/{column.drag.plugin-6a84d7b0.js → column.drag.plugin-94964d01.js} +2 -2
  93. package/dist/revo-grid/column.drag.plugin-94964d01.js.map +1 -0
  94. package/dist/revo-grid/column.service-c0d404a6.js +5 -0
  95. package/dist/revo-grid/column.service-c0d404a6.js.map +1 -0
  96. package/dist/revo-grid/{dimension.helpers-a4dd4f76.js → dimension.helpers-5567e424.js} +2 -2
  97. package/dist/revo-grid/{dimension.helpers-a4dd4f76.js.map → dimension.helpers-5567e424.js.map} +1 -1
  98. package/dist/revo-grid/edit.utils-b59306be.js +5 -0
  99. package/dist/revo-grid/{filter.button-d9b783c1.js → filter.button-84396156.js} +2 -2
  100. package/dist/revo-grid/{header-cell-renderer-4508273a.js → header-cell-renderer-0f5bd4a9.js} +2 -2
  101. package/dist/revo-grid/index-f6fae858.js +6 -0
  102. package/dist/revo-grid/index-f6fae858.js.map +1 -0
  103. package/dist/revo-grid/index.esm.js +1 -1
  104. package/dist/revo-grid/index.esm.js.map +1 -1
  105. package/dist/revo-grid/key.utils-3632161b.js +5 -0
  106. package/dist/revo-grid/revo-grid.entry.js +1 -1
  107. package/dist/revo-grid/revo-grid.esm.js +1 -1
  108. package/dist/revo-grid/revogr-attribution_7.entry.js +1 -1
  109. package/dist/revo-grid/revogr-clipboard_3.entry.js +1 -1
  110. package/dist/revo-grid/revogr-data_4.entry.js +1 -1
  111. package/dist/revo-grid/revogr-data_4.entry.js.map +1 -1
  112. package/dist/revo-grid/revogr-filter-panel.entry.js +1 -1
  113. package/dist/revo-grid/sorting.sign-a92ff239.js +5 -0
  114. package/dist/revo-grid/sorting.sign-a92ff239.js.map +1 -0
  115. package/dist/revo-grid/text-editor-e47e56c3.js +5 -0
  116. package/dist/revo-grid/{throttle-61be638a.js → throttle-05489451.js} +2 -2
  117. package/dist/revo-grid/{viewport.store-e66c1a9b.js → viewport.store-c18a25a6.js} +2 -2
  118. package/dist/types/plugins/filter/filter.plugin.d.ts +2 -1
  119. package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +7 -4
  120. package/dist/types/plugins/groupingRow/grouping.row.renderer.d.ts +6 -3
  121. package/dist/types/plugins/groupingRow/grouping.row.types.d.ts +6 -3
  122. package/dist/types/plugins/groupingRow/grouping.service.d.ts +0 -1
  123. package/dist/types/plugins/index.d.ts +0 -1
  124. package/dist/types/store/dataSource/trimmed.plugin.d.ts +3 -1
  125. package/dist/types/types/interfaces.d.ts +19 -0
  126. package/hydrate/index.js +186 -157
  127. package/hydrate/index.mjs +186 -157
  128. package/package.json +1 -1
  129. package/standalone/column.service.js +70 -54
  130. package/standalone/column.service.js.map +1 -1
  131. package/standalone/data.store.js +1 -0
  132. package/standalone/data.store.js.map +1 -1
  133. package/standalone/index.js +2 -1
  134. package/standalone/index.js.map +1 -1
  135. package/standalone/revo-grid.js +174 -182
  136. package/standalone/revo-grid.js.map +1 -1
  137. package/standalone/revogr-data2.js +18 -8
  138. package/standalone/revogr-data2.js.map +1 -1
  139. package/dist/cjs/column.drag.plugin-2c24c512.js.map +0 -1
  140. package/dist/cjs/column.service-cb3d757e.js.map +0 -1
  141. package/dist/cjs/dimension.helpers-4527475f.js.map +0 -1
  142. package/dist/cjs/index-bdea2cb6.js.map +0 -1
  143. package/dist/cjs/sorting.sign-83d75503.js +0 -15
  144. package/dist/cjs/sorting.sign-83d75503.js.map +0 -1
  145. package/dist/esm/column.drag.plugin-6a84d7b0.js.map +0 -1
  146. package/dist/esm/column.service-ff8f75de.js.map +0 -1
  147. package/dist/esm/dimension.helpers-a4dd4f76.js.map +0 -1
  148. package/dist/esm/index-b5695870.js.map +0 -1
  149. package/dist/esm/sorting.sign-e096163a.js +0 -13
  150. package/dist/esm/sorting.sign-e096163a.js.map +0 -1
  151. package/dist/revo-grid/app-globals-60fd3b54.js +0 -5
  152. package/dist/revo-grid/column.drag.plugin-6a84d7b0.js.map +0 -1
  153. package/dist/revo-grid/column.service-ff8f75de.js +0 -5
  154. package/dist/revo-grid/column.service-ff8f75de.js.map +0 -1
  155. package/dist/revo-grid/edit.utils-dd8b5cd7.js +0 -5
  156. package/dist/revo-grid/index-b5695870.js +0 -6
  157. package/dist/revo-grid/index-b5695870.js.map +0 -1
  158. package/dist/revo-grid/key.utils-38b263fb.js +0 -5
  159. package/dist/revo-grid/sorting.sign-e096163a.js +0 -5
  160. package/dist/revo-grid/sorting.sign-e096163a.js.map +0 -1
  161. package/dist/revo-grid/text-editor-7fbbcea7.js +0 -5
  162. /package/dist/revo-grid/{app-globals-60fd3b54.js.map → app-globals-6b929fd8.js.map} +0 -0
  163. /package/dist/revo-grid/{edit.utils-dd8b5cd7.js.map → edit.utils-b59306be.js.map} +0 -0
  164. /package/dist/revo-grid/{filter.button-d9b783c1.js.map → filter.button-84396156.js.map} +0 -0
  165. /package/dist/revo-grid/{header-cell-renderer-4508273a.js.map → header-cell-renderer-0f5bd4a9.js.map} +0 -0
  166. /package/dist/revo-grid/{key.utils-38b263fb.js.map → key.utils-3632161b.js.map} +0 -0
  167. /package/dist/revo-grid/{text-editor-7fbbcea7.js.map → text-editor-e47e56c3.js.map} +0 -0
  168. /package/dist/revo-grid/{throttle-61be638a.js.map → throttle-05489451.js.map} +0 -0
  169. /package/dist/revo-grid/{viewport.store-e66c1a9b.js.map → viewport.store-c18a25a6.js.map} +0 -0
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- require('./index-bdea2cb6.js');
6
+ require('./index-8006d065.js');
7
7
 
8
8
  const globalFn = () => { };
9
9
 
@@ -11,4 +11,4 @@ const globalScripts = globalFn;
11
11
 
12
12
  exports.globalScripts = globalScripts;
13
13
 
14
- //# sourceMappingURL=app-globals-66b5e3d1.js.map
14
+ //# sourceMappingURL=app-globals-f72a6199.js.map
@@ -1 +1 @@
1
- {"file":"app-globals-66b5e3d1.js","mappings":";;;;;;;;;AACY,MAAC,aAAa,GAAGA;;;;","names":["appGlobalScript"],"sources":["@stencil/core/internal/app-globals"],"sourcesContent":["import appGlobalScript from '/home/runner/work/revogrid/revogrid/src/global/global.ts';\nexport const globalScripts = appGlobalScript;\n"],"version":3}
1
+ {"file":"app-globals-f72a6199.js","mappings":";;;;;;;;;AACY,MAAC,aAAa,GAAGA;;;;","names":["appGlobalScript"],"sources":["@stencil/core/internal/app-globals"],"sourcesContent":["import appGlobalScript from '/home/runner/work/revogrid/revogrid/src/global/global.ts';\nexport const globalScripts = appGlobalScript;\n"],"version":3}
@@ -3,13 +3,13 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- const column_service = require('./column.service-cb3d757e.js');
7
- const dimension_helpers = require('./dimension.helpers-4527475f.js');
8
- const viewport_store = require('./viewport.store-0c68c932.js');
9
- const index = require('./index-bdea2cb6.js');
10
- const filter_button = require('./filter.button-48acc2db.js');
6
+ const column_service = require('./column.service-4339fa5d.js');
7
+ const dimension_helpers = require('./dimension.helpers-5b822a09.js');
8
+ const viewport_store = require('./viewport.store-4dbfeaa3.js');
9
+ const index = require('./index-8006d065.js');
10
+ const filter_button = require('./filter.button-2708e602.js');
11
11
  const debounce = require('./debounce-ec7a04b4.js');
12
- const headerCellRenderer = require('./header-cell-renderer-9d81a1fe.js');
12
+ const headerCellRenderer = require('./header-cell-renderer-aa96a9bd.js');
13
13
 
14
14
  /**
15
15
  * Plugin which recalculates realSize on changes of sizes, originItemSize and count
@@ -1414,11 +1414,7 @@ class FilterPlugin extends BasePlugin {
1414
1414
  if (defaultPrevented) {
1415
1415
  return;
1416
1416
  }
1417
- // check is trimmed event prevented
1418
- const isAddedEvent = await this.revogrid.addTrimmed(detail.itemsToFilter, FILTER_TRIMMED_TYPE);
1419
- if (isAddedEvent.defaultPrevented) {
1420
- return;
1421
- }
1417
+ this.providers.data.setTrimmed({ [FILTER_TRIMMED_TYPE]: detail.itemsToFilter });
1422
1418
  // applies the hasFilter to the columns to show filter icon
1423
1419
  this.providers.column.updateColumns(columnsToUpdate);
1424
1420
  this.emit('afterfilterapply', {
@@ -1544,125 +1540,6 @@ function allAndConditionsSatisfied(pendingResults) {
1544
1540
  return !pendingResults.includes(true);
1545
1541
  }
1546
1542
 
1547
- // provide collapse data
1548
- function doCollapse(pIndex, source) {
1549
- const model = source[pIndex];
1550
- const collapseValue = model[column_service.PSEUDO_GROUP_ITEM_VALUE];
1551
- const trimmed = {};
1552
- let i = pIndex + 1;
1553
- const total = source.length;
1554
- while (i < total) {
1555
- const currentModel = source[i];
1556
- if (column_service.isGrouping(currentModel)) {
1557
- const currentValue = currentModel[column_service.PSEUDO_GROUP_ITEM_VALUE];
1558
- if (!currentValue.length || !currentValue.startsWith(collapseValue + ',')) {
1559
- break;
1560
- }
1561
- currentModel[column_service.GROUP_EXPANDED] = false;
1562
- }
1563
- trimmed[i++] = true;
1564
- }
1565
- model[column_service.GROUP_EXPANDED] = false;
1566
- return { trimmed };
1567
- }
1568
- /**
1569
- *
1570
- * @param pIndex - physical index
1571
- * @param vIndex - virtual index, need to update item collection
1572
- * @param source - data source
1573
- * @param rowItemsIndexes - rgRow indexes
1574
- */
1575
- function doExpand(vIndex, source, rowItemsIndexes) {
1576
- const physicalIndex = rowItemsIndexes[vIndex];
1577
- const model = source[physicalIndex];
1578
- const currentGroup = column_service.getParsedGroup(model[column_service.PSEUDO_GROUP_ITEM_ID]);
1579
- const trimmed = {};
1580
- // no group found
1581
- if (!currentGroup) {
1582
- return { trimmed };
1583
- }
1584
- const groupItems = [];
1585
- model[column_service.GROUP_EXPANDED] = true;
1586
- let i = physicalIndex + 1;
1587
- const total = source.length;
1588
- let groupLevelOnly = 0;
1589
- // go through all rows
1590
- while (i < total) {
1591
- const currentModel = source[i];
1592
- const isGroup = column_service.isGrouping(currentModel);
1593
- // group found
1594
- if (isGroup) {
1595
- if (!column_service.isSameGroup(currentGroup, model, currentModel)) {
1596
- break;
1597
- }
1598
- else if (!groupLevelOnly) {
1599
- // if get group first it's group only level
1600
- groupLevelOnly = currentModel[column_service.GROUP_DEPTH];
1601
- }
1602
- }
1603
- // level 0 or same depth
1604
- if (!groupLevelOnly || (isGroup && groupLevelOnly === currentModel[column_service.GROUP_DEPTH])) {
1605
- trimmed[i] = false;
1606
- groupItems.push(i);
1607
- }
1608
- i++;
1609
- }
1610
- const result = {
1611
- trimmed,
1612
- };
1613
- if (groupItems.length) {
1614
- const items = [...rowItemsIndexes];
1615
- items.splice(vIndex + 1, 0, ...groupItems);
1616
- result.items = items;
1617
- }
1618
- return result;
1619
- }
1620
-
1621
- const TRIMMED_GROUPING = 'grouping';
1622
- /**
1623
- * Prepare trimming updated indexes for grouping
1624
- * @param initiallyTrimed
1625
- * @param firstLevelMap
1626
- * @param secondLevelMap
1627
- */
1628
- function processDoubleConversionTrimmed(initiallyTrimed, firstLevelMap, secondLevelMap) {
1629
- const trimemedOptionsToUpgrade = {};
1630
- /**
1631
- * go through all groups except grouping
1632
- */
1633
- for (let type in initiallyTrimed) {
1634
- if (type === TRIMMED_GROUPING) {
1635
- continue;
1636
- }
1637
- const items = initiallyTrimed[type];
1638
- const newItems = {};
1639
- for (let initialIndex in items) {
1640
- /**
1641
- * if item exists we find it in collection
1642
- * we support 2 level of conversions
1643
- */
1644
- let newConversionIndex = firstLevelMap[initialIndex];
1645
- if (secondLevelMap) {
1646
- newConversionIndex = secondLevelMap[newConversionIndex];
1647
- }
1648
- /**
1649
- * if item was trimmed previously
1650
- * trimming makes sense to apply
1651
- */
1652
- if (items[initialIndex]) {
1653
- newItems[newConversionIndex] = true;
1654
- /**
1655
- * If changes present apply changes to new source
1656
- */
1657
- if (newConversionIndex !== parseInt(initialIndex, 10)) {
1658
- trimemedOptionsToUpgrade[type] = newItems;
1659
- }
1660
- }
1661
- }
1662
- }
1663
- return trimemedOptionsToUpgrade;
1664
- }
1665
-
1666
1543
  /** `Object#toString` result references. */
1667
1544
  var stringTag = '[object String]';
1668
1545
 
@@ -2077,6 +1954,125 @@ class SortingPlugin extends BasePlugin {
2077
1954
  }
2078
1955
  }
2079
1956
 
1957
+ // provide collapse data
1958
+ function doCollapse(pIndex, source) {
1959
+ const model = source[pIndex];
1960
+ const collapseValue = model[column_service.PSEUDO_GROUP_ITEM_VALUE];
1961
+ const trimmed = {};
1962
+ let i = pIndex + 1;
1963
+ const total = source.length;
1964
+ while (i < total) {
1965
+ const currentModel = source[i];
1966
+ if (column_service.isGrouping(currentModel)) {
1967
+ const currentValue = currentModel[column_service.PSEUDO_GROUP_ITEM_VALUE];
1968
+ if (!currentValue.length || !currentValue.startsWith(collapseValue + ',')) {
1969
+ break;
1970
+ }
1971
+ currentModel[column_service.GROUP_EXPANDED] = false;
1972
+ }
1973
+ trimmed[i++] = true;
1974
+ }
1975
+ model[column_service.GROUP_EXPANDED] = false;
1976
+ return { trimmed };
1977
+ }
1978
+ /**
1979
+ *
1980
+ * @param pIndex - physical index
1981
+ * @param vIndex - virtual index, need to update item collection
1982
+ * @param source - data source
1983
+ * @param rowItemsIndexes - rgRow indexes
1984
+ */
1985
+ function doExpand(vIndex, source, rowItemsIndexes) {
1986
+ const physicalIndex = rowItemsIndexes[vIndex];
1987
+ const model = source[physicalIndex];
1988
+ const currentGroup = column_service.getParsedGroup(model[column_service.PSEUDO_GROUP_ITEM_ID]);
1989
+ const trimmed = {};
1990
+ // no group found
1991
+ if (!currentGroup) {
1992
+ return { trimmed };
1993
+ }
1994
+ const groupItems = [];
1995
+ model[column_service.GROUP_EXPANDED] = true;
1996
+ let i = physicalIndex + 1;
1997
+ const total = source.length;
1998
+ let groupLevelOnly = 0;
1999
+ // go through all rows
2000
+ while (i < total) {
2001
+ const currentModel = source[i];
2002
+ const isGroup = column_service.isGrouping(currentModel);
2003
+ // group found
2004
+ if (isGroup) {
2005
+ if (!column_service.isSameGroup(currentGroup, model, currentModel)) {
2006
+ break;
2007
+ }
2008
+ else if (!groupLevelOnly) {
2009
+ // if get group first it's group only level
2010
+ groupLevelOnly = currentModel[column_service.GROUP_DEPTH];
2011
+ }
2012
+ }
2013
+ // level 0 or same depth
2014
+ if (!groupLevelOnly || (isGroup && groupLevelOnly === currentModel[column_service.GROUP_DEPTH])) {
2015
+ trimmed[i] = false;
2016
+ groupItems.push(i);
2017
+ }
2018
+ i++;
2019
+ }
2020
+ const result = {
2021
+ trimmed,
2022
+ };
2023
+ if (groupItems.length) {
2024
+ const items = [...rowItemsIndexes];
2025
+ items.splice(vIndex + 1, 0, ...groupItems);
2026
+ result.items = items;
2027
+ }
2028
+ return result;
2029
+ }
2030
+
2031
+ const TRIMMED_GROUPING = 'grouping';
2032
+ /**
2033
+ * Prepare trimming updated indexes for grouping
2034
+ * @param initiallyTrimed
2035
+ * @param firstLevelMap
2036
+ * @param secondLevelMap
2037
+ */
2038
+ function processDoubleConversionTrimmed(initiallyTrimed, firstLevelMap, secondLevelMap) {
2039
+ const trimemedOptionsToUpgrade = {};
2040
+ /**
2041
+ * go through all groups except grouping
2042
+ */
2043
+ for (let type in initiallyTrimed) {
2044
+ if (type === TRIMMED_GROUPING) {
2045
+ continue;
2046
+ }
2047
+ const items = initiallyTrimed[type];
2048
+ const newItems = {};
2049
+ for (let initialIndex in items) {
2050
+ /**
2051
+ * if item exists we find it in collection
2052
+ * we support 2 level of conversions
2053
+ */
2054
+ let newConversionIndex = firstLevelMap[initialIndex];
2055
+ if (secondLevelMap) {
2056
+ newConversionIndex = secondLevelMap[newConversionIndex];
2057
+ }
2058
+ /**
2059
+ * if item was trimmed previously
2060
+ * trimming makes sense to apply
2061
+ */
2062
+ if (items[initialIndex]) {
2063
+ newItems[newConversionIndex] = true;
2064
+ /**
2065
+ * If changes present apply changes to new source
2066
+ */
2067
+ if (newConversionIndex !== parseInt(initialIndex, 10)) {
2068
+ trimemedOptionsToUpgrade[type] = newItems;
2069
+ }
2070
+ }
2071
+ }
2072
+ }
2073
+ return trimemedOptionsToUpgrade;
2074
+ }
2075
+
2080
2076
  class GroupingRowPlugin extends BasePlugin {
2081
2077
  getStore(type = column_service.GROUPING_ROW_TYPE) {
2082
2078
  return this.providers.data.stores[type].store;
@@ -2160,53 +2156,6 @@ class GroupingRowPlugin extends BasePlugin {
2160
2156
  const sortingPlugin = this.providers.plugins.getByClass(SortingPlugin);
2161
2157
  return !!(sortingPlugin === null || sortingPlugin === void 0 ? void 0 : sortingPlugin.sortingPromise);
2162
2158
  }
2163
- // subscribe to grid events to process them accordingly
2164
- subscribe() {
2165
- /** if grouping present and new data source arrived */
2166
- this.addEventListener('beforesourceset', ({ detail }) => {
2167
- var _a, _b, _c;
2168
- if (!(((_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.length) && ((_c = detail === null || detail === void 0 ? void 0 : detail.source) === null || _c === void 0 ? void 0 : _c.length))) {
2169
- return;
2170
- }
2171
- // if sorting is running don't apply grouping, wait for sorting, then it'll apply in @aftersortingapply
2172
- if (this.isSortingRunning()) {
2173
- return;
2174
- }
2175
- this.onDataSet(detail);
2176
- });
2177
- this.addEventListener('beforecolumnsset', ({ detail }) => {
2178
- this.setColumns(detail);
2179
- });
2180
- /**
2181
- * filter applied need to clear grouping and apply again
2182
- * based on new results can be new grouping
2183
- */
2184
- this.addEventListener('beforetrimmed', ({ detail: { trimmed, trimmedType } }) => this.beforeTrimmedApply(trimmed, trimmedType));
2185
- /**
2186
- * sorting applied need to clear grouping and apply again
2187
- * based on new results whole grouping order will changed
2188
- */
2189
- this.addEventListener('aftersortingapply', () => {
2190
- var _a, _b;
2191
- if (!((_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.length)) {
2192
- return;
2193
- }
2194
- this.doSourceUpdate(Object.assign({}, this.options));
2195
- });
2196
- /**
2197
- * Apply logic for focus inside of grouping
2198
- * We can't focus on grouping rows, navigation only inside of groups for now
2199
- */
2200
- this.addEventListener('beforecellfocus', e => this.onFocus(e));
2201
- /**
2202
- * Prevent rgRow drag outside the group
2203
- */
2204
- this.addEventListener('roworderchanged', e => this.onDrag(e));
2205
- /**
2206
- * When grouping expand icon was clicked
2207
- */
2208
- this.addEventListener('groupexpandclick', e => this.onExpand(e.detail));
2209
- }
2210
2159
  /**
2211
2160
  * Starts global source update with group clearing and applying new one
2212
2161
  * Initiated when need to reapply grouping
@@ -2223,11 +2172,11 @@ class GroupingRowPlugin extends BasePlugin {
2223
2172
  * Group again
2224
2173
  * @param oldNewIndexMap - provides us mapping with new indexes vs old indexes
2225
2174
  */
2226
- const { sourceWithGroups, depth, trimmed, oldNewIndexMap, childrenByGroup, } = column_service.gatherGrouping(source, ((_a = this.options) === null || _a === void 0 ? void 0 : _a.props) || [], expanded);
2175
+ const { sourceWithGroups, depth, trimmed, oldNewIndexMap, } = column_service.gatherGrouping(source, ((_a = this.options) === null || _a === void 0 ? void 0 : _a.props) || [], expanded);
2227
2176
  const customRenderer = options === null || options === void 0 ? void 0 : options.groupLabelTemplate;
2228
2177
  // setup source
2229
2178
  this.providers.data.setData(sourceWithGroups, column_service.GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, { depth, customRenderer }, true);
2230
- this.updateTrimmed(trimmed, childrenByGroup, oldNewIndexes !== null && oldNewIndexes !== void 0 ? oldNewIndexes : {}, oldNewIndexMap);
2179
+ this.updateTrimmed(trimmed, oldNewIndexes !== null && oldNewIndexes !== void 0 ? oldNewIndexes : {}, oldNewIndexMap);
2231
2180
  }
2232
2181
  /**
2233
2182
  * Apply grouping on data set
@@ -2243,13 +2192,13 @@ class GroupingRowPlugin extends BasePlugin {
2243
2192
  }
2244
2193
  const source = data.source.filter(s => !column_service.isGrouping(s));
2245
2194
  const options = Object.assign(Object.assign({}, (this.revogrid.grouping || {})), { prevExpanded: preservedExpanded });
2246
- const { sourceWithGroups, depth, trimmed, oldNewIndexMap, childrenByGroup, } = column_service.gatherGrouping(source, ((_b = this.options) === null || _b === void 0 ? void 0 : _b.props) || [], options);
2195
+ const { sourceWithGroups, depth, trimmed, oldNewIndexMap, } = column_service.gatherGrouping(source, ((_b = this.options) === null || _b === void 0 ? void 0 : _b.props) || [], options);
2247
2196
  data.source = sourceWithGroups;
2248
2197
  this.providers.data.setGrouping({ depth });
2249
- this.updateTrimmed(trimmed, childrenByGroup, oldNewIndexMap);
2198
+ this.updateTrimmed(trimmed, oldNewIndexMap);
2250
2199
  }
2251
2200
  /**
2252
- * Externam call to apply grouping. Called by revogrid when prop changed.
2201
+ * External call to apply grouping. Called by revogrid when prop changed.
2253
2202
  */
2254
2203
  setGrouping(options) {
2255
2204
  var _a, _b;
@@ -2261,12 +2210,12 @@ class GroupingRowPlugin extends BasePlugin {
2261
2210
  this.clearGrouping();
2262
2211
  return;
2263
2212
  }
2264
- // props exist and source inited
2213
+ // props exist and source initd
2265
2214
  const { source } = column_service.getSource(this.getStore().get('source'), this.getStore().get('proxyItems'));
2266
2215
  if (source.length) {
2267
2216
  this.doSourceUpdate(Object.assign({}, options));
2268
2217
  }
2269
- // props exist and columns inited
2218
+ // props exist and columns initd
2270
2219
  for (let t of columnTypes) {
2271
2220
  if (this.setColumnGrouping(this.providers.column.getColumns(t))) {
2272
2221
  this.providers.column.refreshByType(t);
@@ -2274,7 +2223,50 @@ class GroupingRowPlugin extends BasePlugin {
2274
2223
  }
2275
2224
  }
2276
2225
  // if has any grouping subscribe to events again
2277
- this.subscribe();
2226
+ /** if grouping present and new data source arrived */
2227
+ this.addEventListener('beforesourceset', ({ detail }) => {
2228
+ var _a, _b, _c;
2229
+ if (!(((_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.length) && ((_c = detail === null || detail === void 0 ? void 0 : detail.source) === null || _c === void 0 ? void 0 : _c.length))) {
2230
+ return;
2231
+ }
2232
+ // if sorting is running don't apply grouping, wait for sorting, then it'll apply in @aftersortingapply
2233
+ if (this.isSortingRunning()) {
2234
+ return;
2235
+ }
2236
+ this.onDataSet(detail);
2237
+ });
2238
+ this.addEventListener('beforecolumnsset', ({ detail }) => {
2239
+ this.setColumns(detail);
2240
+ });
2241
+ /**
2242
+ * filter applied need to clear grouping and apply again
2243
+ * based on new results can be new grouping
2244
+ */
2245
+ this.addEventListener('beforetrimmed', ({ detail: { trimmed, trimmedType } }) => this.beforeTrimmedApply(trimmed, trimmedType));
2246
+ /**
2247
+ * sorting applied need to clear grouping and apply again
2248
+ * based on new results whole grouping order will changed
2249
+ */
2250
+ this.addEventListener('aftersortingapply', () => {
2251
+ var _a, _b;
2252
+ if (!((_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.length)) {
2253
+ return;
2254
+ }
2255
+ this.doSourceUpdate(Object.assign({}, this.options));
2256
+ });
2257
+ /**
2258
+ * Apply logic for focus inside of grouping
2259
+ * We can't focus on grouping rows, navigation only inside of groups for now
2260
+ */
2261
+ this.addEventListener('beforecellfocus', e => this.onFocus(e));
2262
+ /**
2263
+ * Prevent rgRow drag outside the group
2264
+ */
2265
+ this.addEventListener('roworderchanged', e => this.onDrag(e));
2266
+ /**
2267
+ * When grouping expand icon was clicked
2268
+ */
2269
+ this.addEventListener('groupexpandclick', e => this.onExpand(e.detail));
2278
2270
  }
2279
2271
  // clear grouping
2280
2272
  clearGrouping() {
@@ -2298,7 +2290,7 @@ class GroupingRowPlugin extends BasePlugin {
2298
2290
  this.providers.data.setData(source, column_service.GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, undefined, true);
2299
2291
  this.updateTrimmed(undefined, undefined, oldNewIndexes);
2300
2292
  }
2301
- updateTrimmed(trimmedGroup = {}, _childrenByGroup = {}, firstLevelMap = {}, secondLevelMap) {
2293
+ updateTrimmed(trimmedGroup = {}, firstLevelMap = {}, secondLevelMap) {
2302
2294
  // map previously trimmed data
2303
2295
  const trimemedOptionsToUpgrade = processDoubleConversionTrimmed(this.getStore().get('trimmed'), firstLevelMap, secondLevelMap);
2304
2296
  for (let type in trimemedOptionsToUpgrade) {
@@ -2552,6 +2544,8 @@ exports.GroupingRowPlugin = GroupingRowPlugin;
2552
2544
  exports.SortingPlugin = SortingPlugin;
2553
2545
  exports.StretchColumn = StretchColumn;
2554
2546
  exports.columnTypes = columnTypes;
2547
+ exports.doCollapse = doCollapse;
2548
+ exports.doExpand = doExpand;
2555
2549
  exports.filterCoreFunctionsIndexedByType = filterCoreFunctionsIndexedByType;
2556
2550
  exports.filterNames = filterNames;
2557
2551
  exports.filterTypes = filterTypes;
@@ -2561,4 +2555,4 @@ exports.isRowType = isRowType;
2561
2555
  exports.isStretchPlugin = isStretchPlugin;
2562
2556
  exports.rowTypes = rowTypes;
2563
2557
 
2564
- //# sourceMappingURL=column.drag.plugin-2c24c512.js.map
2558
+ //# sourceMappingURL=column.drag.plugin-c4e46169.js.map