@revolist/revogrid 4.12.2 → 4.12.4

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 (176) 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-f196a293.js} +181 -187
  4. package/dist/cjs/column.drag.plugin-f196a293.js.map +1 -0
  5. package/dist/cjs/{column.service-cb3d757e.js → column.service-b59380a3.js} +78 -58
  6. package/dist/cjs/column.service-b59380a3.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-a66fe375.js} +3 -3
  14. package/dist/cjs/{header-cell-renderer-9d81a1fe.js.map → header-cell-renderer-a66fe375.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 +26 -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-a1e9d97a.js +72 -0
  30. package/dist/cjs/sorting.sign-a1e9d97a.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 +58 -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/collection/utils/column.utils.js +1 -1
  57. package/dist/collection/utils/column.utils.js.map +1 -1
  58. package/dist/esm/{app-globals-60fd3b54.js → app-globals-6b929fd8.js} +2 -2
  59. package/dist/esm/{app-globals-60fd3b54.js.map → app-globals-6b929fd8.js.map} +1 -1
  60. package/dist/esm/{column.drag.plugin-6a84d7b0.js → column.drag.plugin-caf3ce50.js} +180 -188
  61. package/dist/esm/column.drag.plugin-caf3ce50.js.map +1 -0
  62. package/dist/esm/{column.service-ff8f75de.js → column.service-f39c0a1d.js} +76 -59
  63. package/dist/esm/column.service-f39c0a1d.js.map +1 -0
  64. package/dist/esm/{dimension.helpers-a4dd4f76.js → dimension.helpers-5567e424.js} +3 -2
  65. package/dist/esm/dimension.helpers-5567e424.js.map +1 -0
  66. package/dist/esm/{edit.utils-dd8b5cd7.js → edit.utils-b59306be.js} +2 -2
  67. package/dist/esm/{edit.utils-dd8b5cd7.js.map → edit.utils-b59306be.js.map} +1 -1
  68. package/dist/esm/{filter.button-d9b783c1.js → filter.button-84396156.js} +2 -2
  69. package/dist/esm/{filter.button-d9b783c1.js.map → filter.button-84396156.js.map} +1 -1
  70. package/dist/esm/{header-cell-renderer-4508273a.js → header-cell-renderer-31f53644.js} +3 -3
  71. package/dist/esm/{header-cell-renderer-4508273a.js.map → header-cell-renderer-31f53644.js.map} +1 -1
  72. package/dist/esm/{index-b5695870.js → index-f6fae858.js} +8 -2
  73. package/dist/esm/index-f6fae858.js.map +1 -0
  74. package/dist/esm/index.js +11 -11
  75. package/dist/esm/{key.utils-38b263fb.js → key.utils-3632161b.js} +2 -2
  76. package/dist/esm/{key.utils-38b263fb.js.map → key.utils-3632161b.js.map} +1 -1
  77. package/dist/esm/loader.js +3 -3
  78. package/dist/esm/revo-grid.entry.js +7 -7
  79. package/dist/esm/revo-grid.js +3 -3
  80. package/dist/esm/revogr-attribution_7.entry.js +7 -7
  81. package/dist/esm/revogr-clipboard_3.entry.js +5 -5
  82. package/dist/esm/revogr-data_4.entry.js +13 -49
  83. package/dist/esm/revogr-data_4.entry.js.map +1 -1
  84. package/dist/esm/revogr-filter-panel.entry.js +2 -2
  85. package/dist/esm/sorting.sign-c02e3b12.js +65 -0
  86. package/dist/esm/sorting.sign-c02e3b12.js.map +1 -0
  87. package/dist/esm/{text-editor-7fbbcea7.js → text-editor-e47e56c3.js} +3 -3
  88. package/dist/esm/{text-editor-7fbbcea7.js.map → text-editor-e47e56c3.js.map} +1 -1
  89. package/dist/esm/{throttle-61be638a.js → throttle-05489451.js} +2 -2
  90. package/dist/esm/{throttle-61be638a.js.map → throttle-05489451.js.map} +1 -1
  91. package/dist/esm/{viewport.store-e66c1a9b.js → viewport.store-c18a25a6.js} +2 -2
  92. package/dist/esm/{viewport.store-e66c1a9b.js.map → viewport.store-c18a25a6.js.map} +1 -1
  93. package/dist/revo-grid/app-globals-6b929fd8.js +5 -0
  94. package/dist/revo-grid/column.drag.plugin-caf3ce50.js +5 -0
  95. package/dist/revo-grid/column.drag.plugin-caf3ce50.js.map +1 -0
  96. package/dist/revo-grid/column.service-f39c0a1d.js +5 -0
  97. package/dist/revo-grid/column.service-f39c0a1d.js.map +1 -0
  98. package/dist/revo-grid/{dimension.helpers-a4dd4f76.js → dimension.helpers-5567e424.js} +2 -2
  99. package/dist/revo-grid/{dimension.helpers-a4dd4f76.js.map → dimension.helpers-5567e424.js.map} +1 -1
  100. package/dist/revo-grid/edit.utils-b59306be.js +5 -0
  101. package/dist/revo-grid/{filter.button-d9b783c1.js → filter.button-84396156.js} +2 -2
  102. package/dist/revo-grid/{header-cell-renderer-4508273a.js → header-cell-renderer-31f53644.js} +2 -2
  103. package/dist/revo-grid/index-f6fae858.js +6 -0
  104. package/dist/revo-grid/index-f6fae858.js.map +1 -0
  105. package/dist/revo-grid/index.esm.js +1 -1
  106. package/dist/revo-grid/index.esm.js.map +1 -1
  107. package/dist/revo-grid/key.utils-3632161b.js +5 -0
  108. package/dist/revo-grid/revo-grid.entry.js +1 -1
  109. package/dist/revo-grid/revo-grid.entry.js.map +1 -1
  110. package/dist/revo-grid/revo-grid.esm.js +1 -1
  111. package/dist/revo-grid/revogr-attribution_7.entry.js +1 -1
  112. package/dist/revo-grid/revogr-clipboard_3.entry.js +1 -1
  113. package/dist/revo-grid/revogr-data_4.entry.js +1 -1
  114. package/dist/revo-grid/revogr-data_4.entry.js.map +1 -1
  115. package/dist/revo-grid/revogr-filter-panel.entry.js +1 -1
  116. package/dist/revo-grid/sorting.sign-c02e3b12.js +5 -0
  117. package/dist/revo-grid/sorting.sign-c02e3b12.js.map +1 -0
  118. package/dist/revo-grid/text-editor-e47e56c3.js +5 -0
  119. package/dist/revo-grid/{throttle-61be638a.js → throttle-05489451.js} +2 -2
  120. package/dist/revo-grid/{viewport.store-e66c1a9b.js → viewport.store-c18a25a6.js} +2 -2
  121. package/dist/types/plugins/filter/filter.plugin.d.ts +2 -1
  122. package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +8 -4
  123. package/dist/types/plugins/groupingRow/grouping.row.renderer.d.ts +6 -3
  124. package/dist/types/plugins/groupingRow/grouping.row.types.d.ts +6 -3
  125. package/dist/types/plugins/groupingRow/grouping.service.d.ts +0 -1
  126. package/dist/types/plugins/index.d.ts +0 -1
  127. package/dist/types/store/dataSource/trimmed.plugin.d.ts +3 -1
  128. package/dist/types/types/interfaces.d.ts +19 -0
  129. package/dist/types/utils/column.utils.d.ts +1 -1
  130. package/hydrate/index.js +187 -158
  131. package/hydrate/index.mjs +187 -158
  132. package/package.json +1 -1
  133. package/standalone/column.service.js +73 -56
  134. package/standalone/column.service.js.map +1 -1
  135. package/standalone/data.store.js +1 -0
  136. package/standalone/data.store.js.map +1 -1
  137. package/standalone/index.js +3 -2
  138. package/standalone/index.js.map +1 -1
  139. package/standalone/revo-grid.js +174 -182
  140. package/standalone/revo-grid.js.map +1 -1
  141. package/standalone/revogr-data2.js +19 -9
  142. package/standalone/revogr-data2.js.map +1 -1
  143. package/standalone/revogr-header2.js +1 -1
  144. package/standalone/revogr-overlay-selection2.js +1 -1
  145. package/dist/cjs/column.drag.plugin-2c24c512.js.map +0 -1
  146. package/dist/cjs/column.service-cb3d757e.js.map +0 -1
  147. package/dist/cjs/dimension.helpers-4527475f.js.map +0 -1
  148. package/dist/cjs/index-bdea2cb6.js.map +0 -1
  149. package/dist/cjs/sorting.sign-83d75503.js +0 -15
  150. package/dist/cjs/sorting.sign-83d75503.js.map +0 -1
  151. package/dist/esm/column.drag.plugin-6a84d7b0.js.map +0 -1
  152. package/dist/esm/column.service-ff8f75de.js.map +0 -1
  153. package/dist/esm/dimension.helpers-a4dd4f76.js.map +0 -1
  154. package/dist/esm/index-b5695870.js.map +0 -1
  155. package/dist/esm/sorting.sign-e096163a.js +0 -13
  156. package/dist/esm/sorting.sign-e096163a.js.map +0 -1
  157. package/dist/revo-grid/app-globals-60fd3b54.js +0 -5
  158. package/dist/revo-grid/column.drag.plugin-6a84d7b0.js +0 -5
  159. package/dist/revo-grid/column.drag.plugin-6a84d7b0.js.map +0 -1
  160. package/dist/revo-grid/column.service-ff8f75de.js +0 -5
  161. package/dist/revo-grid/column.service-ff8f75de.js.map +0 -1
  162. package/dist/revo-grid/edit.utils-dd8b5cd7.js +0 -5
  163. package/dist/revo-grid/index-b5695870.js +0 -6
  164. package/dist/revo-grid/index-b5695870.js.map +0 -1
  165. package/dist/revo-grid/key.utils-38b263fb.js +0 -5
  166. package/dist/revo-grid/sorting.sign-e096163a.js +0 -5
  167. package/dist/revo-grid/sorting.sign-e096163a.js.map +0 -1
  168. package/dist/revo-grid/text-editor-7fbbcea7.js +0 -5
  169. /package/dist/revo-grid/{app-globals-60fd3b54.js.map → app-globals-6b929fd8.js.map} +0 -0
  170. /package/dist/revo-grid/{edit.utils-dd8b5cd7.js.map → edit.utils-b59306be.js.map} +0 -0
  171. /package/dist/revo-grid/{filter.button-d9b783c1.js.map → filter.button-84396156.js.map} +0 -0
  172. /package/dist/revo-grid/{header-cell-renderer-4508273a.js.map → header-cell-renderer-31f53644.js.map} +0 -0
  173. /package/dist/revo-grid/{key.utils-38b263fb.js.map → key.utils-3632161b.js.map} +0 -0
  174. /package/dist/revo-grid/{text-editor-7fbbcea7.js.map → text-editor-e47e56c3.js.map} +0 -0
  175. /package/dist/revo-grid/{throttle-61be638a.js.map → throttle-05489451.js.map} +0 -0
  176. /package/dist/revo-grid/{viewport.store-e66c1a9b.js.map → viewport.store-c18a25a6.js.map} +0 -0
@@ -2,6 +2,7 @@ import { type VNode } from '../../stencil-public-runtime';
2
2
  import type { ColumnProp, ColumnRegular, DataType, PluginProviders } from "../../types/index";
3
3
  import { BasePlugin } from '../base.plugin';
4
4
  import type { ColumnFilterConfig, FilterCollectionItem, LogicFunction, MultiFilterItem, ShowData } from './filter.types';
5
+ import { TrimmedEntity } from "../../store/index";
5
6
  export * from './filter.types';
6
7
  export * from './filter.indexed';
7
8
  export * from './filter.button';
@@ -67,6 +68,6 @@ export declare class FilterPlugin extends BasePlugin {
67
68
  /**
68
69
  * Get trimmed rows based on filter
69
70
  */
70
- getRowFilter(rows: DataType[], filterItems: MultiFilterItem, columnByProp: Record<string, ColumnRegular>): Record<number, boolean>;
71
+ getRowFilter(rows: DataType[], filterItems: MultiFilterItem, columnByProp: Record<string, ColumnRegular>): TrimmedEntity;
71
72
  private shouldTrimRow;
72
73
  }
@@ -1,8 +1,13 @@
1
1
  import { type DSourceState } from "../../store/index";
2
- import { BasePlugin } from '../base.plugin';
3
- import type { GroupingOptions, OnExpandEvent } from './grouping.row.types';
4
2
  import type { DataType, DimensionRows, PluginProviders } from "../../types/index";
3
+ import { BasePlugin } from '../base.plugin';
5
4
  import type { Observable } from '../../utils';
5
+ import type { GroupingOptions, OnExpandEvent } from './grouping.row.types';
6
+ export * from './grouping.const';
7
+ export * from './grouping.row.expand.service';
8
+ export * from './grouping.row.types';
9
+ export * from './grouping.service';
10
+ export * from './grouping.row.renderer';
6
11
  declare global {
7
12
  interface HTMLRevoGridElementEventMap {
8
13
  groupexpandclick: OnExpandEvent;
@@ -21,7 +26,6 @@ export declare class GroupingRowPlugin extends BasePlugin {
21
26
  private onDrag;
22
27
  private beforeTrimmedApply;
23
28
  private isSortingRunning;
24
- private subscribe;
25
29
  /**
26
30
  * Starts global source update with group clearing and applying new one
27
31
  * Initiated when need to reapply grouping
@@ -34,7 +38,7 @@ export declare class GroupingRowPlugin extends BasePlugin {
34
38
  */
35
39
  private onDataSet;
36
40
  /**
37
- * Externam call to apply grouping. Called by revogrid when prop changed.
41
+ * External call to apply grouping. Called by revogrid when prop changed.
38
42
  */
39
43
  setGrouping(options: GroupingOptions): void;
40
44
  clearGrouping(): void;
@@ -1,11 +1,14 @@
1
1
  import { RowProps } from '../../components/data/row-renderer';
2
2
  import { GroupLabelTemplateFunc } from './grouping.row.types';
3
- import { DataType, PositionItem } from "../../types/index";
3
+ import { DataType, PositionItem, Providers } from "../../types/index";
4
4
  interface GroupRowPros extends RowProps {
5
5
  model: DataType;
6
6
  hasExpand: boolean;
7
+ providers: Providers;
7
8
  groupingCustomRenderer?: GroupLabelTemplateFunc | null;
8
9
  }
9
- type Props = GroupRowPros & PositionItem;
10
- declare const GroupingRowRenderer: (props: Props) => any;
10
+ export type RowGroupingProps = GroupRowPros & PositionItem;
11
+ export declare function expandEvent(e: MouseEvent, model: DataType, virtualIndex: number): void;
12
+ export declare const GroupingRowRenderer: (props: RowGroupingProps) => any;
13
+ export declare const expandSvgIconVNode: (expanded?: boolean) => any;
11
14
  export default GroupingRowRenderer;
@@ -1,12 +1,14 @@
1
1
  import type { VNode } from '../../stencil-public-runtime';
2
- import type { HyperFunc, ColumnProp, DimensionRows, DataType } from "../../types/index";
3
- export type GroupLabelTemplateFunc = (createElement: HyperFunc<VNode>, props: {
2
+ import type { HyperFunc, ColumnProp, DimensionRows, DataType, Providers } from "../../types/index";
3
+ interface GroupTemplateProp {
4
4
  name: string;
5
5
  itemIndex: number;
6
6
  expanded: boolean;
7
7
  depth: number;
8
+ providers: Providers;
8
9
  model?: DataType;
9
- }) => any;
10
+ }
11
+ export type GroupLabelTemplateFunc = (createElement: HyperFunc<VNode>, props: GroupTemplateProp, ...args: any[]) => any;
10
12
  export type GroupingOptions = {
11
13
  /**
12
14
  * Column props to which grouping will be applied
@@ -59,3 +61,4 @@ export type ExpandedOptions = {
59
61
  */
60
62
  groupLabelTemplate?: GroupLabelTemplateFunc;
61
63
  };
64
+ export {};
@@ -14,7 +14,6 @@ export declare function gatherGrouping(array: DataType[], columnProps: ColumnPro
14
14
  depth: number;
15
15
  trimmed: Record<number, boolean>;
16
16
  oldNewIndexMap: Record<number, number>;
17
- childrenByGroup: Record<string, number[]>;
18
17
  };
19
18
  export declare function getGroupingName(rgRow?: DataType): any;
20
19
  type GroupingItem = {
@@ -7,7 +7,6 @@ export * from './filter/filter.plugin';
7
7
  export * from './groupingColumn/columnGroupsRenderer';
8
8
  export * from './groupingColumn/headerGroupRenderer';
9
9
  export * from './groupingRow/grouping.row.plugin';
10
- export * from './groupingRow/grouping.service';
11
10
  export * from './moveColumn/column.drag.plugin';
12
11
  export * from './sorting/sorting.plugin';
13
12
  export * from './sorting/sorting.sign';
@@ -1,6 +1,8 @@
1
1
  import { Observable, PluginSubscribe } from '../../utils';
2
2
  import { DSourceState, GDataType } from './data.store';
3
- export type TrimmedEntity = Record<number, boolean>;
3
+ export type TrimmedEntity = {
4
+ [physicalIndexInSource: number]: boolean;
5
+ };
4
6
  export type Trimmed = Record<string, TrimmedEntity>;
5
7
  /**
6
8
  * Hide items from main collection
@@ -491,12 +491,31 @@ export interface VirtualPositionItem extends PositionItem {
491
491
  size: number;
492
492
  }
493
493
  export type DataSourceState<T extends DataType | ColumnRegular, ST extends DimensionRows | DimensionCols> = {
494
+ /**
495
+ * List of indices for visible items in the grid
496
+ */
494
497
  items: number[];
498
+ /**
499
+ * List of indices for visible items in the grid, even if they are trimmed
500
+ * Update this collection if you want to change items order
501
+ */
495
502
  proxyItems: number[];
503
+ /**
504
+ * Actual data array
505
+ */
496
506
  source: T[];
507
+ /**
508
+ * Grouping information
509
+ */
497
510
  groupingDepth: number;
498
511
  groups: Record<any, any>;
512
+ /**
513
+ * Dimension type, can be rows or columns depending on context
514
+ */
499
515
  type: ST;
516
+ /**
517
+ * Info for trimming or filtering the data, to hide entities from visible data source
518
+ */
500
519
  trimmed: Record<any, any>;
501
520
  };
502
521
  export interface PositionItem {
@@ -6,7 +6,7 @@ export interface ColumnGroup extends StoreGroup {
6
6
  }
7
7
  export type ColumnGroupingCollection = Record<DimensionCols, ColumnGroup[]>;
8
8
  export declare function getCellData(val?: any): any;
9
- export declare function getCellRaw(model: DataType, column?: ColumnRegular): any;
9
+ export declare function getCellRaw(model?: DataType, column?: ColumnRegular): any;
10
10
  export declare function getCellDataParsed(model: DataType, column: ColumnRegular): any;
11
11
  /**
12
12
  * Column collection definition.
package/hydrate/index.js CHANGED
@@ -2589,6 +2589,12 @@ var registerHost = (elm, cmpMeta) => {
2589
2589
  elm["s-rc"] = [];
2590
2590
  return hostRefs.set(elm, hostRef);
2591
2591
  };
2592
+ var Build = {
2593
+ isDev: false,
2594
+ isBrowser: false,
2595
+ isServer: true,
2596
+ isTesting: false
2597
+ };
2592
2598
  var styles = /* @__PURE__ */ new Map();
2593
2599
 
2594
2600
 
@@ -6640,6 +6646,7 @@ const trimmedPlugin$1 = (store) => ({
6640
6646
  // full sorted items list
6641
6647
  const proxy = store.get('proxyItems');
6642
6648
  const trimmed = gatherTrimmedItems(newVal);
6649
+ // filter our physical indexes which are not trimmed
6643
6650
  const newItems = proxy.filter(v => !trimmed[v]);
6644
6651
  // set trimmed items in store
6645
6652
  store.set('items', newItems);
@@ -6860,7 +6867,7 @@ function getCellData(val) {
6860
6867
  }
6861
6868
  return val;
6862
6869
  }
6863
- function getCellRaw(model, column) {
6870
+ function getCellRaw(model = {}, column) {
6864
6871
  if (!column) {
6865
6872
  return;
6866
6873
  }
@@ -8791,13 +8798,70 @@ function getSource(source, items, withoutGrouping = false) {
8791
8798
  function getExpanded(model = {}) {
8792
8799
  return model[GROUP_EXPANDED];
8793
8800
  }
8801
+ function flattenGroupMaps({ groupedValues, parentIds, isExpanded, itemIndex, expandedAll, prevExpanded, columnProps, }) {
8802
+ const depth = parentIds.length;
8803
+ const sourceWithGroups = [];
8804
+ // collapse all groups in the beginning
8805
+ let trimmed = {};
8806
+ // index mapping
8807
+ let oldNewIndexMap = {};
8808
+ groupedValues.forEach((innerGroupedValues, groupId) => {
8809
+ const levelIds = [...parentIds, groupId];
8810
+ const mergedIds = levelIds.join(',');
8811
+ const isGroupExpanded = isExpanded && (!!expandedAll || !!prevExpanded[mergedIds]);
8812
+ sourceWithGroups.push({
8813
+ [PSEUDO_GROUP_ITEM]: groupId,
8814
+ [GROUP_DEPTH]: depth,
8815
+ [PSEUDO_GROUP_ITEM_ID]: JSON.stringify(levelIds),
8816
+ [PSEUDO_GROUP_ITEM_VALUE]: mergedIds,
8817
+ [GROUP_EXPANDED]: isGroupExpanded,
8818
+ [GROUP_COLUMN_PROP]: columnProps[depth],
8819
+ [columnProps[depth]]: groupId,
8820
+ });
8821
+ itemIndex += 1;
8822
+ if (!isGroupExpanded && depth) {
8823
+ trimmed[itemIndex] = true;
8824
+ }
8825
+ if (Array.isArray(innerGroupedValues)) {
8826
+ innerGroupedValues.forEach(value => {
8827
+ itemIndex += 1;
8828
+ if (!isGroupExpanded) {
8829
+ trimmed[itemIndex] = true;
8830
+ }
8831
+ oldNewIndexMap[value[GROUP_ORIGINAL_INDEX]] = itemIndex;
8832
+ });
8833
+ sourceWithGroups.push(...innerGroupedValues);
8834
+ }
8835
+ else {
8836
+ const children = flattenGroupMaps({
8837
+ groupedValues: innerGroupedValues,
8838
+ parentIds: levelIds,
8839
+ isExpanded: isGroupExpanded,
8840
+ itemIndex,
8841
+ expandedAll,
8842
+ prevExpanded,
8843
+ columnProps,
8844
+ });
8845
+ sourceWithGroups.push(...children.source);
8846
+ trimmed = Object.assign(Object.assign({}, children.trimmed), trimmed);
8847
+ oldNewIndexMap = Object.assign(Object.assign({}, children.oldNewIndexMap), oldNewIndexMap);
8848
+ itemIndex = children.itemIndex;
8849
+ }
8850
+ });
8851
+ return {
8852
+ source: sourceWithGroups,
8853
+ oldNewIndexMap,
8854
+ trimmed,
8855
+ itemIndex,
8856
+ };
8857
+ }
8794
8858
  /**
8795
8859
  * Gather data for grouping
8796
8860
  * @param array - flat data array
8797
8861
  * @param columnProps - ids of groups
8798
8862
  * @param expanded - potentially expanded items if present
8799
8863
  */
8800
- function gatherGrouping(array, columnProps, { prevExpanded, expandedAll, getGroupValue = getGroupValueDefault, }) {
8864
+ function gatherGrouping(array, columnProps, { prevExpanded = {}, expandedAll = false, getGroupValue = getGroupValueDefault, }) {
8801
8865
  const groupedItems = new Map();
8802
8866
  array.forEach((item, originalIndex) => {
8803
8867
  const groupLevelValues = columnProps.map(groupId => getGroupValue(item, groupId));
@@ -8810,72 +8874,31 @@ function gatherGrouping(array, columnProps, { prevExpanded, expandedAll, getGrou
8810
8874
  currentGroupLevel = currentGroupLevel.get(value);
8811
8875
  });
8812
8876
  if (!currentGroupLevel.has(lastLevelValue)) {
8813
- currentGroupLevel.set(lastLevelValue, []);
8877
+ const groupItems = [];
8878
+ currentGroupLevel.set(lastLevelValue, groupItems);
8814
8879
  }
8815
8880
  const lastLevelItems = currentGroupLevel.get(lastLevelValue);
8816
8881
  lastLevelItems.push(Object.assign(Object.assign({}, item), { [GROUP_ORIGINAL_INDEX]: originalIndex }));
8817
8882
  });
8818
- let itemIndex = -1;
8819
8883
  const groupingDepth = columnProps.length;
8820
- // collapse all groups in the beginning
8821
- const trimmed = {};
8822
- // index mapping
8823
- const oldNewIndexMap = {};
8824
- // check if group header exists
8825
- const pseudoGroupTest = {};
8826
- const sourceWithGroups = [];
8827
- function flattenGroupMaps(groupedValues, parentIds, isExpanded) {
8828
- const depth = parentIds.length;
8829
- groupedValues.forEach((innerGroupedValues, groupId) => {
8830
- const levelIds = [...parentIds, groupId];
8831
- const mergedIds = levelIds.join(',');
8832
- const isGroupExpanded = isExpanded && (!!expandedAll || !!(prevExpanded === null || prevExpanded === void 0 ? void 0 : prevExpanded[mergedIds]));
8833
- sourceWithGroups.push({
8834
- [PSEUDO_GROUP_ITEM]: groupId,
8835
- [GROUP_DEPTH]: depth,
8836
- [PSEUDO_GROUP_ITEM_ID]: JSON.stringify(levelIds),
8837
- [PSEUDO_GROUP_ITEM_VALUE]: mergedIds,
8838
- [GROUP_EXPANDED]: isGroupExpanded,
8839
- [GROUP_COLUMN_PROP]: columnProps[depth],
8840
- [columnProps[depth]]: groupId,
8841
- });
8842
- itemIndex += 1;
8843
- if (!isGroupExpanded && depth) {
8844
- trimmed[itemIndex] = true;
8845
- }
8846
- if (Array.isArray(innerGroupedValues)) {
8847
- innerGroupedValues.forEach(value => {
8848
- itemIndex += 1;
8849
- if (!isGroupExpanded) {
8850
- trimmed[itemIndex] = true;
8851
- }
8852
- oldNewIndexMap[value[GROUP_ORIGINAL_INDEX]] = itemIndex;
8853
- const pseudoGroupTestIds = levelIds.map((_value, index) => levelIds.slice(0, index + 1).join(','));
8854
- pseudoGroupTestIds.forEach(pseudoGroupTestId => {
8855
- if (!pseudoGroupTest[pseudoGroupTestId]) {
8856
- pseudoGroupTest[pseudoGroupTestId] = [];
8857
- }
8858
- pseudoGroupTest[pseudoGroupTestId].push(itemIndex);
8859
- });
8860
- });
8861
- sourceWithGroups.push(...innerGroupedValues);
8862
- }
8863
- else {
8864
- flattenGroupMaps(innerGroupedValues, levelIds, isGroupExpanded);
8865
- }
8866
- });
8867
- }
8868
- flattenGroupMaps(groupedItems, [], true);
8884
+ const { source: sourceWithGroups, trimmed, oldNewIndexMap } = flattenGroupMaps({
8885
+ groupedValues: groupedItems,
8886
+ parentIds: [],
8887
+ isExpanded: true,
8888
+ itemIndex: -1,
8889
+ expandedAll,
8890
+ prevExpanded,
8891
+ columnProps
8892
+ });
8869
8893
  return {
8870
8894
  sourceWithGroups, // updates source mirror
8871
8895
  depth: groupingDepth, // largest depth for grouping
8872
8896
  trimmed, // used for expand/collapse grouping values
8873
8897
  oldNewIndexMap, // used for mapping old values to new
8874
- childrenByGroup: pseudoGroupTest, // used to get child items in group
8875
8898
  };
8876
8899
  }
8877
8900
  function getGroupingName(rgRow) {
8878
- return rgRow && rgRow[PSEUDO_GROUP_ITEM];
8901
+ return rgRow === null || rgRow === void 0 ? void 0 : rgRow[PSEUDO_GROUP_ITEM];
8879
8902
  }
8880
8903
  function isGrouping(rgRow) {
8881
8904
  return typeof (rgRow === null || rgRow === void 0 ? void 0 : rgRow[PSEUDO_GROUP_ITEM]) !== 'undefined';
@@ -11740,11 +11763,7 @@ class FilterPlugin extends BasePlugin {
11740
11763
  if (defaultPrevented) {
11741
11764
  return;
11742
11765
  }
11743
- // check is trimmed event prevented
11744
- const isAddedEvent = await this.revogrid.addTrimmed(detail.itemsToFilter, FILTER_TRIMMED_TYPE);
11745
- if (isAddedEvent.defaultPrevented) {
11746
- return;
11747
- }
11766
+ this.providers.data.setTrimmed({ [FILTER_TRIMMED_TYPE]: detail.itemsToFilter });
11748
11767
  // applies the hasFilter to the columns to show filter icon
11749
11768
  this.providers.column.updateColumns(columnsToUpdate);
11750
11769
  this.emit('afterfilterapply', {
@@ -12756,6 +12775,56 @@ function processDoubleConversionTrimmed(initiallyTrimed, firstLevelMap, secondLe
12756
12775
  return trimemedOptionsToUpgrade;
12757
12776
  }
12758
12777
 
12778
+ const PADDING_DEPTH = 10;
12779
+ const RowRenderer = ({ rowClass, index, size, start, depth }, cells) => {
12780
+ const props = Object.assign({ [DATA_ROW]: index });
12781
+ return (hAsync("div", Object.assign({}, props, { class: `rgRow ${rowClass || ''}`, style: {
12782
+ height: `${size}px`,
12783
+ transform: `translateY(${start}px)`,
12784
+ paddingLeft: depth ? `${PADDING_DEPTH * depth}px` : undefined,
12785
+ } }), cells));
12786
+ };
12787
+
12788
+ function expandEvent(e, model, virtualIndex) {
12789
+ var _a;
12790
+ const event = new CustomEvent('groupexpandclick', {
12791
+ detail: {
12792
+ model,
12793
+ virtualIndex,
12794
+ },
12795
+ cancelable: true,
12796
+ bubbles: true,
12797
+ });
12798
+ (_a = e.target) === null || _a === void 0 ? void 0 : _a.dispatchEvent(event);
12799
+ }
12800
+ const GroupingRowRenderer = (props) => {
12801
+ const { model, itemIndex, hasExpand, groupingCustomRenderer, providers } = props;
12802
+ const name = model[PSEUDO_GROUP_ITEM];
12803
+ const expanded = model[GROUP_EXPANDED];
12804
+ const depth = parseInt(model[GROUP_DEPTH], 10) || 0;
12805
+ if (!hasExpand) {
12806
+ return hAsync(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }));
12807
+ }
12808
+ if (groupingCustomRenderer) {
12809
+ return (hAsync(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }),
12810
+ hAsync("div", { onClick: e => expandEvent(e, model, itemIndex) }, groupingCustomRenderer(hAsync, {
12811
+ name,
12812
+ model,
12813
+ itemIndex,
12814
+ expanded,
12815
+ depth,
12816
+ providers,
12817
+ }))));
12818
+ }
12819
+ return (hAsync(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }),
12820
+ hAsync("button", { class: { [GROUP_EXPAND_BTN]: true }, onClick: e => expandEvent(e, model, itemIndex) }, expandSvgIconVNode(expanded)),
12821
+ name));
12822
+ };
12823
+ const expandSvgIconVNode = (expanded = false) => {
12824
+ return (hAsync("svg", { "aria-hidden": "true", style: { transform: `rotate(${!expanded ? -90 : 0}deg)` }, focusable: "false", viewBox: "0 0 448 512" },
12825
+ hAsync("path", { fill: "currentColor", d: "M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z" })));
12826
+ };
12827
+
12759
12828
  class GroupingRowPlugin extends BasePlugin {
12760
12829
  getStore(type = GROUPING_ROW_TYPE) {
12761
12830
  return this.providers.data.stores[type].store;
@@ -12839,53 +12908,6 @@ class GroupingRowPlugin extends BasePlugin {
12839
12908
  const sortingPlugin = this.providers.plugins.getByClass(SortingPlugin);
12840
12909
  return !!(sortingPlugin === null || sortingPlugin === void 0 ? void 0 : sortingPlugin.sortingPromise);
12841
12910
  }
12842
- // subscribe to grid events to process them accordingly
12843
- subscribe() {
12844
- /** if grouping present and new data source arrived */
12845
- this.addEventListener('beforesourceset', ({ detail }) => {
12846
- var _a, _b, _c;
12847
- 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))) {
12848
- return;
12849
- }
12850
- // if sorting is running don't apply grouping, wait for sorting, then it'll apply in @aftersortingapply
12851
- if (this.isSortingRunning()) {
12852
- return;
12853
- }
12854
- this.onDataSet(detail);
12855
- });
12856
- this.addEventListener('beforecolumnsset', ({ detail }) => {
12857
- this.setColumns(detail);
12858
- });
12859
- /**
12860
- * filter applied need to clear grouping and apply again
12861
- * based on new results can be new grouping
12862
- */
12863
- this.addEventListener('beforetrimmed', ({ detail: { trimmed, trimmedType } }) => this.beforeTrimmedApply(trimmed, trimmedType));
12864
- /**
12865
- * sorting applied need to clear grouping and apply again
12866
- * based on new results whole grouping order will changed
12867
- */
12868
- this.addEventListener('aftersortingapply', () => {
12869
- var _a, _b;
12870
- if (!((_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.length)) {
12871
- return;
12872
- }
12873
- this.doSourceUpdate(Object.assign({}, this.options));
12874
- });
12875
- /**
12876
- * Apply logic for focus inside of grouping
12877
- * We can't focus on grouping rows, navigation only inside of groups for now
12878
- */
12879
- this.addEventListener('beforecellfocus', e => this.onFocus(e));
12880
- /**
12881
- * Prevent rgRow drag outside the group
12882
- */
12883
- this.addEventListener('roworderchanged', e => this.onDrag(e));
12884
- /**
12885
- * When grouping expand icon was clicked
12886
- */
12887
- this.addEventListener('groupexpandclick', e => this.onExpand(e.detail));
12888
- }
12889
12911
  /**
12890
12912
  * Starts global source update with group clearing and applying new one
12891
12913
  * Initiated when need to reapply grouping
@@ -12902,11 +12924,11 @@ class GroupingRowPlugin extends BasePlugin {
12902
12924
  * Group again
12903
12925
  * @param oldNewIndexMap - provides us mapping with new indexes vs old indexes
12904
12926
  */
12905
- const { sourceWithGroups, depth, trimmed, oldNewIndexMap, childrenByGroup, } = gatherGrouping(source, ((_a = this.options) === null || _a === void 0 ? void 0 : _a.props) || [], expanded);
12927
+ const { sourceWithGroups, depth, trimmed, oldNewIndexMap, } = gatherGrouping(source, ((_a = this.options) === null || _a === void 0 ? void 0 : _a.props) || [], expanded);
12906
12928
  const customRenderer = options === null || options === void 0 ? void 0 : options.groupLabelTemplate;
12907
12929
  // setup source
12908
12930
  this.providers.data.setData(sourceWithGroups, GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, { depth, customRenderer }, true);
12909
- this.updateTrimmed(trimmed, childrenByGroup, oldNewIndexes !== null && oldNewIndexes !== void 0 ? oldNewIndexes : {}, oldNewIndexMap);
12931
+ this.updateTrimmed(trimmed, oldNewIndexes !== null && oldNewIndexes !== void 0 ? oldNewIndexes : {}, oldNewIndexMap);
12910
12932
  }
12911
12933
  /**
12912
12934
  * Apply grouping on data set
@@ -12922,13 +12944,13 @@ class GroupingRowPlugin extends BasePlugin {
12922
12944
  }
12923
12945
  const source = data.source.filter(s => !isGrouping(s));
12924
12946
  const options = Object.assign(Object.assign({}, (this.revogrid.grouping || {})), { prevExpanded: preservedExpanded });
12925
- const { sourceWithGroups, depth, trimmed, oldNewIndexMap, childrenByGroup, } = gatherGrouping(source, ((_b = this.options) === null || _b === void 0 ? void 0 : _b.props) || [], options);
12947
+ const { sourceWithGroups, depth, trimmed, oldNewIndexMap, } = gatherGrouping(source, ((_b = this.options) === null || _b === void 0 ? void 0 : _b.props) || [], options);
12926
12948
  data.source = sourceWithGroups;
12927
12949
  this.providers.data.setGrouping({ depth });
12928
- this.updateTrimmed(trimmed, childrenByGroup, oldNewIndexMap);
12950
+ this.updateTrimmed(trimmed, oldNewIndexMap);
12929
12951
  }
12930
12952
  /**
12931
- * Externam call to apply grouping. Called by revogrid when prop changed.
12953
+ * External call to apply grouping. Called by revogrid when prop changed.
12932
12954
  */
12933
12955
  setGrouping(options) {
12934
12956
  var _a, _b;
@@ -12940,12 +12962,12 @@ class GroupingRowPlugin extends BasePlugin {
12940
12962
  this.clearGrouping();
12941
12963
  return;
12942
12964
  }
12943
- // props exist and source inited
12965
+ // props exist and source initd
12944
12966
  const { source } = getSource(this.getStore().get('source'), this.getStore().get('proxyItems'));
12945
12967
  if (source.length) {
12946
12968
  this.doSourceUpdate(Object.assign({}, options));
12947
12969
  }
12948
- // props exist and columns inited
12970
+ // props exist and columns initd
12949
12971
  for (let t of columnTypes) {
12950
12972
  if (this.setColumnGrouping(this.providers.column.getColumns(t))) {
12951
12973
  this.providers.column.refreshByType(t);
@@ -12953,7 +12975,50 @@ class GroupingRowPlugin extends BasePlugin {
12953
12975
  }
12954
12976
  }
12955
12977
  // if has any grouping subscribe to events again
12956
- this.subscribe();
12978
+ /** if grouping present and new data source arrived */
12979
+ this.addEventListener('beforesourceset', ({ detail }) => {
12980
+ var _a, _b, _c;
12981
+ 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))) {
12982
+ return;
12983
+ }
12984
+ // if sorting is running don't apply grouping, wait for sorting, then it'll apply in @aftersortingapply
12985
+ if (this.isSortingRunning()) {
12986
+ return;
12987
+ }
12988
+ this.onDataSet(detail);
12989
+ });
12990
+ this.addEventListener('beforecolumnsset', ({ detail }) => {
12991
+ this.setColumns(detail);
12992
+ });
12993
+ /**
12994
+ * filter applied need to clear grouping and apply again
12995
+ * based on new results can be new grouping
12996
+ */
12997
+ this.addEventListener('beforetrimmed', ({ detail: { trimmed, trimmedType } }) => this.beforeTrimmedApply(trimmed, trimmedType));
12998
+ /**
12999
+ * sorting applied need to clear grouping and apply again
13000
+ * based on new results whole grouping order will changed
13001
+ */
13002
+ this.addEventListener('aftersortingapply', () => {
13003
+ var _a, _b;
13004
+ if (!((_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.length)) {
13005
+ return;
13006
+ }
13007
+ this.doSourceUpdate(Object.assign({}, this.options));
13008
+ });
13009
+ /**
13010
+ * Apply logic for focus inside of grouping
13011
+ * We can't focus on grouping rows, navigation only inside of groups for now
13012
+ */
13013
+ this.addEventListener('beforecellfocus', e => this.onFocus(e));
13014
+ /**
13015
+ * Prevent rgRow drag outside the group
13016
+ */
13017
+ this.addEventListener('roworderchanged', e => this.onDrag(e));
13018
+ /**
13019
+ * When grouping expand icon was clicked
13020
+ */
13021
+ this.addEventListener('groupexpandclick', e => this.onExpand(e.detail));
12957
13022
  }
12958
13023
  // clear grouping
12959
13024
  clearGrouping() {
@@ -12977,7 +13042,7 @@ class GroupingRowPlugin extends BasePlugin {
12977
13042
  this.providers.data.setData(source, GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, undefined, true);
12978
13043
  this.updateTrimmed(undefined, undefined, oldNewIndexes);
12979
13044
  }
12980
- updateTrimmed(trimmedGroup = {}, _childrenByGroup = {}, firstLevelMap = {}, secondLevelMap) {
13045
+ updateTrimmed(trimmedGroup = {}, firstLevelMap = {}, secondLevelMap) {
12981
13046
  // map previously trimmed data
12982
13047
  const trimemedOptionsToUpgrade = processDoubleConversionTrimmed(this.getStore().get('trimmed'), firstLevelMap, secondLevelMap);
12983
13048
  for (let type in trimemedOptionsToUpgrade) {
@@ -15261,47 +15326,6 @@ class RevoGridExtra {
15261
15326
  }; }
15262
15327
  }
15263
15328
 
15264
- const PADDING_DEPTH = 10;
15265
- const RowRenderer = ({ rowClass, index, size, start, depth }, cells) => {
15266
- const props = Object.assign({ [DATA_ROW]: index });
15267
- return (hAsync("div", Object.assign({}, props, { class: `rgRow ${rowClass || ''}`, style: {
15268
- height: `${size}px`,
15269
- transform: `translateY(${start}px)`,
15270
- paddingLeft: depth ? `${PADDING_DEPTH * depth}px` : undefined,
15271
- } }), cells));
15272
- };
15273
-
15274
- function expandEvent(e, model, virtualIndex) {
15275
- var _a;
15276
- const event = new CustomEvent('groupexpandclick', {
15277
- detail: {
15278
- model,
15279
- virtualIndex,
15280
- },
15281
- cancelable: true,
15282
- bubbles: true,
15283
- });
15284
- (_a = e.target) === null || _a === void 0 ? void 0 : _a.dispatchEvent(event);
15285
- }
15286
- const GroupingRowRenderer = (props) => {
15287
- const { model, itemIndex, hasExpand, groupingCustomRenderer } = props;
15288
- const name = model[PSEUDO_GROUP_ITEM];
15289
- const expanded = model[GROUP_EXPANDED];
15290
- const depth = parseInt(model[GROUP_DEPTH], 10) || 0;
15291
- if (!hasExpand) {
15292
- return hAsync(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }));
15293
- }
15294
- if (groupingCustomRenderer) {
15295
- return (hAsync(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }),
15296
- hAsync("div", { onClick: e => expandEvent(e, model, itemIndex) }, groupingCustomRenderer(hAsync, { name, model, itemIndex, expanded, depth }))));
15297
- }
15298
- return (hAsync(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }),
15299
- hAsync("button", { class: { [GROUP_EXPAND_BTN]: true }, onClick: e => expandEvent(e, model, itemIndex) },
15300
- hAsync("svg", { "aria-hidden": "true", style: { transform: `rotate(${!expanded ? -90 : 0}deg)` }, focusable: "false", viewBox: "0 0 448 512" },
15301
- hAsync("path", { fill: "currentColor", d: "M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z" }))),
15302
- name));
15303
- };
15304
-
15305
15329
  /**
15306
15330
  * Class is responsible for highlighting rows in a table.
15307
15331
  */
@@ -15376,6 +15400,10 @@ function renderCell(v) {
15376
15400
  // #region Regular cell
15377
15401
  else {
15378
15402
  if (!v.schemaModel.column) {
15403
+ // something is wrong with data
15404
+ if (Build === null || Build === void 0 ? void 0 : Build.isDev) {
15405
+ console.error('Investigate column problem.', v.schemaModel);
15406
+ }
15379
15407
  return '';
15380
15408
  }
15381
15409
  // Row drag
@@ -15509,7 +15537,8 @@ class RevogrData {
15509
15537
  const dataItem = getSourceItem(this.dataStore, rgRow.itemIndex);
15510
15538
  // #region Grouping
15511
15539
  if (isGrouping(dataItem)) {
15512
- rowsEls.push(hAsync(GroupingRowRenderer, Object.assign({}, rgRow, { index: rgRow.itemIndex, model: dataItem, groupingCustomRenderer: groupingCustomRenderer, hasExpand: this.columnService.hasGrouping })));
15540
+ const gmodel = Object.assign(Object.assign({}, rgRow), { index: rgRow.itemIndex, model: dataItem, groupingCustomRenderer, hasExpand: this.columnService.hasGrouping, providers: this.providers });
15541
+ rowsEls.push(hAsync(GroupingRowRenderer, Object.assign({}, gmodel)));
15513
15542
  continue;
15514
15543
  }
15515
15544
  // #endregion