@pega/lists-core 10.0.0-build.4.8 → 10.0.0-build.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/lib/src/core/features/uIFeatures/beforeRender/adjustHeight.d.ts.map +1 -1
  2. package/lib/src/core/features/uIFeatures/beforeRender/adjustHeight.js +27 -5
  3. package/lib/src/core/features/uIFeatures/beforeRender/adjustHeight.js.map +1 -1
  4. package/lib/src/core/features/uIFeatures/beforeRender/grouping.d.ts.map +1 -1
  5. package/lib/src/core/features/uIFeatures/beforeRender/grouping.js +6 -1
  6. package/lib/src/core/features/uIFeatures/beforeRender/grouping.js.map +1 -1
  7. package/lib/src/core/features/uIFeatures/index.d.ts.map +1 -1
  8. package/lib/src/core/generators/ColumnGenerator.d.ts +0 -4
  9. package/lib/src/core/generators/ColumnGenerator.d.ts.map +1 -1
  10. package/lib/src/core/generators/ColumnGenerator.js +0 -12
  11. package/lib/src/core/generators/ColumnGenerator.js.map +1 -1
  12. package/lib/src/core/generators/ViewGenerator.d.ts +2 -0
  13. package/lib/src/core/generators/ViewGenerator.d.ts.map +1 -1
  14. package/lib/src/core/generators/ViewGenerator.js +14 -1
  15. package/lib/src/core/generators/ViewGenerator.js.map +1 -1
  16. package/lib/src/core/generators/ViewGenerator.types.d.ts +4 -0
  17. package/lib/src/core/generators/ViewGenerator.types.d.ts.map +1 -1
  18. package/lib/src/core/generators/ViewGenerator.types.js.map +1 -1
  19. package/lib/src/core/utils/util.d.ts.map +1 -1
  20. package/lib/src/core/utils/util.js +13 -2
  21. package/lib/src/core/utils/util.js.map +1 -1
  22. package/lib/types/Meta.types.d.ts +12 -2
  23. package/lib/types/Meta.types.d.ts.map +1 -1
  24. package/lib/types/Meta.types.js.map +1 -1
  25. package/lib/types.d.ts +2 -1
  26. package/lib/types.d.ts.map +1 -1
  27. package/lib/types.js.map +1 -1
  28. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"adjustHeight.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/adjustHeight.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAKrE,KAAK,iBAAiB,GAAG,IAAI,CAAC,wBAAwB,EAAE,SAAS,GAAG,UAAU,GAAG,gBAAgB,CAAC,CAAC;AAMnG;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,EAAE;IAC/D,YAAY,EAAE,iBAAiB;CAChC,QA6CA;AAwBD;;;;;;;;;;;;;GAaG;yBAEa,YAAY,UAAU,MAsB5B,cAAc,wBAAwB;AAtBhD,wBAgCE"}
1
+ {"version":3,"file":"adjustHeight.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/adjustHeight.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAKrE,KAAK,iBAAiB,GAAG,IAAI,CAAC,wBAAwB,EAAE,SAAS,GAAG,UAAU,GAAG,gBAAgB,CAAC,CAAC;AAMnG;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,EAAE;IAC/D,YAAY,EAAE,iBAAiB;CAChC,QAsDA;AAoCD;;;;;;;;;;;;;GAaG;yBAEa,YAAY,UAAU,MAsB5B,cAAc,wBAAwB;AAtBhD,wBAwCE"}
@@ -1,6 +1,7 @@
1
1
  import { UNMOUNT } from '../../../pubSub/events';
2
2
  import { actionForceUpdate } from '../../../actions/actions';
3
3
  import { withMemoization } from '../../../utils/util';
4
+ import { REPEATING_STRUCTURE_TEMPLATES } from '../../../../../types/Meta.types';
4
5
  const getVirtualizer = (view) => {
5
6
  return view.virtualizeElements?.rootVirtualiser;
6
7
  };
@@ -10,6 +11,15 @@ const getVirtualizer = (view) => {
10
11
  * @returns void
11
12
  */
12
13
  export function execute([{ getView, dispatch, browserContext }]) {
14
+ const { meta: { height: { minHeight, fitHeightToElement } = {}, template }, viewHeight } = getView();
15
+ // For Kanban
16
+ if (template === REPEATING_STRUCTURE_TEMPLATES.KANBAN) {
17
+ if (viewHeight !== undefined) {
18
+ getView().setProp('viewHeight', undefined);
19
+ dispatch(actionForceUpdate(false));
20
+ }
21
+ return;
22
+ }
13
23
  // Don't need to calculate height if numberOfRows is defined or view is in basicMode and virtualizer is used
14
24
  // because, virtualizer will set the height to auto which is a contradition
15
25
  const basicMode = getView().meta.basicMode;
@@ -18,7 +28,6 @@ export function execute([{ getView, dispatch, browserContext }]) {
18
28
  if (isNumberOfRowsDefined || (basicMode && isVirtualizerUsed)) {
19
29
  return;
20
30
  }
21
- const { meta: { height: { minHeight, fitHeightToElement } = {} } } = getView();
22
31
  if (!getView().getDomContainer() || !fitHeightToElement)
23
32
  return;
24
33
  let targetContainerElement;
@@ -55,9 +64,14 @@ export function execute([{ getView, dispatch, browserContext }]) {
55
64
  * @returns void
56
65
  */
57
66
  function attachResize([{ getView, browserContext }, resizeListener]) {
58
- const { meta: { height: { height, fitHeightToElement, autoSize = true } = {}, basicMode, numberOfRows } } = getView();
67
+ const { meta: { height: { height, fitHeightToElement, autoSize = true } = {}, basicMode, numberOfRows, template } } = getView();
59
68
  const isNumberOfRowsDefined = !!numberOfRows;
60
- if (!basicMode && !isNumberOfRowsDefined && !height && fitHeightToElement && autoSize) {
69
+ if (template !== REPEATING_STRUCTURE_TEMPLATES.KANBAN &&
70
+ !basicMode &&
71
+ !isNumberOfRowsDefined &&
72
+ !height &&
73
+ fitHeightToElement &&
74
+ autoSize) {
61
75
  browserContext.window.removeEventListener('resize', resizeListener);
62
76
  browserContext.window.addEventListener('resize', resizeListener);
63
77
  }
@@ -98,8 +112,16 @@ export default (rsInternal) => {
98
112
  const memoisedExecute = withMemoization(execute);
99
113
  const memoisedAttachResize = withMemoization(attachResize);
100
114
  return (featureProps) => {
101
- memoisedExecute([featureProps], [featureProps.getView().meta.numberOfRows, featureProps.getView().meta.height]);
102
- memoisedAttachResize([featureProps, resizeListener], [featureProps.getView().meta.numberOfRows, featureProps.getView().meta.height]);
115
+ memoisedExecute([featureProps], [
116
+ featureProps.getView().meta.template,
117
+ featureProps.getView().meta.numberOfRows,
118
+ featureProps.getView().meta.height
119
+ ]);
120
+ memoisedAttachResize([featureProps, resizeListener], [
121
+ featureProps.getView().meta.template,
122
+ featureProps.getView().meta.numberOfRows,
123
+ featureProps.getView().meta.height
124
+ ]);
103
125
  };
104
126
  };
105
127
  //# sourceMappingURL=adjustHeight.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adjustHeight.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/adjustHeight.ts"],"names":[],"mappings":"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","sourcesContent":["import { UNMOUNT } from '../../../pubSub/events';\nimport { actionForceUpdate } from '../../../actions/actions';\nimport { withMemoization } from '../../../utils/util';\nimport type RsInternal from '../../../RsInternal';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\nimport type View from '../../../generators/ViewGenerator';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { Meta } from '../../../../../types/Meta.types';\n\ntype AdjustHeightProps = Pick<BeforeRenderFeatureProps, 'getView' | 'dispatch' | 'browserContext'>;\n\nconst getVirtualizer = (view: View) => {\n return view.virtualizeElements?.rootVirtualiser;\n};\n\n/**\n * Calculates the {@link View.bodyHeight body height} of the view.\n * @param param.0 {@link BeforeRenderFeatureProps}.\n * @returns void\n */\nexport function execute([{ getView, dispatch, browserContext }]: [\n featureProps: AdjustHeightProps\n]) {\n // Don't need to calculate height if numberOfRows is defined or view is in basicMode and virtualizer is used\n // because, virtualizer will set the height to auto which is a contradition\n const basicMode = getView().meta.basicMode;\n const isVirtualizerUsed = !!getVirtualizer(getView());\n const isNumberOfRowsDefined = !!getView().meta.numberOfRows;\n if (isNumberOfRowsDefined || (basicMode && isVirtualizerUsed)) {\n return;\n }\n\n const {\n meta: { height: { minHeight, fitHeightToElement } = {} }\n } = getView();\n\n if (!getView().getDomContainer() || !fitHeightToElement) return;\n\n let targetContainerElement: HTMLElement | null;\n if (typeof fitHeightToElement === 'string') {\n targetContainerElement =\n fitHeightToElement === 'document'\n ? browserContext.document.body\n : browserContext.document.querySelector(fitHeightToElement);\n } else if (fitHeightToElement.nodeType === 1) {\n targetContainerElement = fitHeightToElement;\n } else {\n targetContainerElement = browserContext.document.body;\n }\n\n if (targetContainerElement) {\n const computedStyle = browserContext.window.getComputedStyle(targetContainerElement);\n const totalHeight = parseFloat(computedStyle.height);\n const paddingTop = parseFloat(computedStyle.paddingTop);\n const paddingBottom = parseFloat(computedStyle.paddingBottom);\n\n const targetHeight = totalHeight - paddingTop - paddingBottom;\n\n // tableHeight should not be less than minHeight if it's configured\n if (\n (typeof minHeight === 'number' && targetHeight && targetHeight > minHeight) ||\n (!minHeight && targetHeight)\n ) {\n getView().setProp('viewHeight', targetHeight);\n dispatch(actionForceUpdate(false));\n }\n }\n}\n\n/**\n * Toggles the `resize listener` on `window`\n * @param param.0 {@link BeforeRenderFeatureProps}.\n * @param param.1 Resize listener.\n * @returns void\n */\nfunction attachResize([{ getView, browserContext }, resizeListener]: [\n featureProps: AdjustHeightProps,\n resizeListener: () => void\n]) {\n const {\n meta: { height: { height, fitHeightToElement, autoSize = true } = {}, basicMode, numberOfRows }\n } = getView();\n const isNumberOfRowsDefined = !!numberOfRows;\n if (!basicMode && !isNumberOfRowsDefined && !height && fitHeightToElement && autoSize) {\n browserContext.window.removeEventListener('resize', resizeListener);\n browserContext.window.addEventListener('resize', resizeListener);\n } else {\n browserContext.window.removeEventListener('resize', resizeListener);\n }\n}\n\n/**\n * Calculates the {@link View.bodyHeight body height} of the view and toggles `resize listener` to the `window`.\n *\n * 1. The `body height` is calculated only on initial mount of the Repeating structures, if following properties are provided in {@link Meta}:\n * - {@link Meta.height}\n * - {@link Meta.numberOfRows}\n *\n * 2. The `resize listener` is attached/removed on initial mount of Repeating structures, after considering the values for following properties in {@link Meta}:\n * - {@link Meta.height}\n * - {@link Meta.numberOfRows}\n *\n * Additionally the `resize listener` will be removed on `UNMOUNT` event publish.\n *\n */\n// TODO: RsCore shouldn't be responsible for height calculations. We should move this feature to React layer.\nexport default (rsInternal: RsInternal) => {\n const { getView, getRsStateResolver, getPubSubUtils } = rsInternal;\n const { dispatch } = getRsStateResolver();\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n const resizeListener = () => {\n // prevent execution of previous setTimeout\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n // change width from the state object after 500 milliseconds\n timeoutId = setTimeout(\n () => execute([{ getView, dispatch, browserContext: rsInternal.getBrowserContext() }]),\n 500\n );\n };\n\n getPubSubUtils().subscribe(UNMOUNT, () => {\n rsInternal.getBrowserContext().window.removeEventListener('resize', resizeListener);\n });\n\n const memoisedExecute = withMemoization(execute);\n const memoisedAttachResize = withMemoization(attachResize);\n return (featureProps: BeforeRenderFeatureProps) => {\n memoisedExecute(\n [featureProps],\n [featureProps.getView().meta.numberOfRows, featureProps.getView().meta.height]\n );\n memoisedAttachResize(\n [featureProps, resizeListener],\n [featureProps.getView().meta.numberOfRows, featureProps.getView().meta.height]\n );\n };\n};\n"]}
1
+ {"version":3,"file":"adjustHeight.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/adjustHeight.ts"],"names":[],"mappings":"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","sourcesContent":["import { UNMOUNT } from '../../../pubSub/events';\nimport { actionForceUpdate } from '../../../actions/actions';\nimport { withMemoization } from '../../../utils/util';\nimport { REPEATING_STRUCTURE_TEMPLATES } from '../../../../../types/Meta.types';\nimport type RsInternal from '../../../RsInternal';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\nimport type View from '../../../generators/ViewGenerator';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { Meta } from '../../../../../types/Meta.types';\n\ntype AdjustHeightProps = Pick<BeforeRenderFeatureProps, 'getView' | 'dispatch' | 'browserContext'>;\n\nconst getVirtualizer = (view: View) => {\n return view.virtualizeElements?.rootVirtualiser;\n};\n\n/**\n * Calculates the {@link View.bodyHeight body height} of the view.\n * @param param.0 {@link BeforeRenderFeatureProps}.\n * @returns void\n */\nexport function execute([{ getView, dispatch, browserContext }]: [\n featureProps: AdjustHeightProps\n]) {\n const {\n meta: { height: { minHeight, fitHeightToElement } = {}, template },\n viewHeight\n } = getView();\n // For Kanban\n if (template === REPEATING_STRUCTURE_TEMPLATES.KANBAN) {\n if (viewHeight !== undefined) {\n getView().setProp('viewHeight', undefined);\n dispatch(actionForceUpdate(false));\n }\n return;\n }\n\n // Don't need to calculate height if numberOfRows is defined or view is in basicMode and virtualizer is used\n // because, virtualizer will set the height to auto which is a contradition\n const basicMode = getView().meta.basicMode;\n const isVirtualizerUsed = !!getVirtualizer(getView());\n const isNumberOfRowsDefined = !!getView().meta.numberOfRows;\n if (isNumberOfRowsDefined || (basicMode && isVirtualizerUsed)) {\n return;\n }\n\n if (!getView().getDomContainer() || !fitHeightToElement) return;\n\n let targetContainerElement: HTMLElement | null;\n if (typeof fitHeightToElement === 'string') {\n targetContainerElement =\n fitHeightToElement === 'document'\n ? browserContext.document.body\n : browserContext.document.querySelector(fitHeightToElement);\n } else if (fitHeightToElement.nodeType === 1) {\n targetContainerElement = fitHeightToElement;\n } else {\n targetContainerElement = browserContext.document.body;\n }\n\n if (targetContainerElement) {\n const computedStyle = browserContext.window.getComputedStyle(targetContainerElement);\n const totalHeight = parseFloat(computedStyle.height);\n const paddingTop = parseFloat(computedStyle.paddingTop);\n const paddingBottom = parseFloat(computedStyle.paddingBottom);\n\n const targetHeight = totalHeight - paddingTop - paddingBottom;\n\n // tableHeight should not be less than minHeight if it's configured\n if (\n (typeof minHeight === 'number' && targetHeight && targetHeight > minHeight) ||\n (!minHeight && targetHeight)\n ) {\n getView().setProp('viewHeight', targetHeight);\n dispatch(actionForceUpdate(false));\n }\n }\n}\n\n/**\n * Toggles the `resize listener` on `window`\n * @param param.0 {@link BeforeRenderFeatureProps}.\n * @param param.1 Resize listener.\n * @returns void\n */\nfunction attachResize([{ getView, browserContext }, resizeListener]: [\n featureProps: AdjustHeightProps,\n resizeListener: () => void\n]) {\n const {\n meta: {\n height: { height, fitHeightToElement, autoSize = true } = {},\n basicMode,\n numberOfRows,\n template\n }\n } = getView();\n const isNumberOfRowsDefined = !!numberOfRows;\n if (\n template !== REPEATING_STRUCTURE_TEMPLATES.KANBAN &&\n !basicMode &&\n !isNumberOfRowsDefined &&\n !height &&\n fitHeightToElement &&\n autoSize\n ) {\n browserContext.window.removeEventListener('resize', resizeListener);\n browserContext.window.addEventListener('resize', resizeListener);\n } else {\n browserContext.window.removeEventListener('resize', resizeListener);\n }\n}\n\n/**\n * Calculates the {@link View.bodyHeight body height} of the view and toggles `resize listener` to the `window`.\n *\n * 1. The `body height` is calculated only on initial mount of the Repeating structures, if following properties are provided in {@link Meta}:\n * - {@link Meta.height}\n * - {@link Meta.numberOfRows}\n *\n * 2. The `resize listener` is attached/removed on initial mount of Repeating structures, after considering the values for following properties in {@link Meta}:\n * - {@link Meta.height}\n * - {@link Meta.numberOfRows}\n *\n * Additionally the `resize listener` will be removed on `UNMOUNT` event publish.\n *\n */\n// TODO: RsCore shouldn't be responsible for height calculations. We should move this feature to React layer.\nexport default (rsInternal: RsInternal) => {\n const { getView, getRsStateResolver, getPubSubUtils } = rsInternal;\n const { dispatch } = getRsStateResolver();\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n const resizeListener = () => {\n // prevent execution of previous setTimeout\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n // change width from the state object after 500 milliseconds\n timeoutId = setTimeout(\n () => execute([{ getView, dispatch, browserContext: rsInternal.getBrowserContext() }]),\n 500\n );\n };\n\n getPubSubUtils().subscribe(UNMOUNT, () => {\n rsInternal.getBrowserContext().window.removeEventListener('resize', resizeListener);\n });\n\n const memoisedExecute = withMemoization(execute);\n const memoisedAttachResize = withMemoization(attachResize);\n return (featureProps: BeforeRenderFeatureProps) => {\n memoisedExecute(\n [featureProps],\n [\n featureProps.getView().meta.template,\n featureProps.getView().meta.numberOfRows,\n featureProps.getView().meta.height\n ]\n );\n memoisedAttachResize(\n [featureProps, resizeListener],\n [\n featureProps.getView().meta.template,\n featureProps.getView().meta.numberOfRows,\n featureProps.getView().meta.height\n ]\n );\n };\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"grouping.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/grouping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAc1D,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAErE,OAAO,KAAK,EAAS,WAAW,EAAsB,MAAM,kCAAkC,CAAC;AAQ/F,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAEV,WAAW,EACX,uBAAuB,EAGxB,MAAM,uCAAuC,CAAC;AAI/C,MAAM,WAAW,kBAAkB;IACjC,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;IAChD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,GAC5D,kBAAkB,GAAG;IACnB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B,CAAC;AAEJ,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,uBAAuB,EAAE,UAAU,CAAC,GACpF,kBAAkB,GAAG;IACnB,QAAQ,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;CAChD,CAAC;AAqRJ,iBAAS,YAAY,CACnB,KAAK,EAAE,YAAY,GAAG,wBAAwB,EAC9C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,YAAY,EAAE,WAAW,EAAE,QAK5B;AAED,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,EAC3C,WAAW,EAAE,YAAY,EACzB,YAAY,EAAE,WAAW,EAAE,QAe5B;AA6bD;;;;;;;;GAQG;yBACa,YAAY,UAAU,qBAaC,wBAAwB;AAb/D,wBAoEE"}
1
+ {"version":3,"file":"grouping.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/grouping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAc1D,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAErE,OAAO,KAAK,EAAS,WAAW,EAAsB,MAAM,kCAAkC,CAAC;AAQ/F,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAEV,WAAW,EACX,uBAAuB,EAGxB,MAAM,uCAAuC,CAAC;AAI/C,MAAM,WAAW,kBAAkB;IACjC,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;IAChD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,GAC5D,kBAAkB,GAAG;IACnB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B,CAAC;AAEJ,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,uBAAuB,EAAE,UAAU,CAAC,GACpF,kBAAkB,GAAG;IACnB,QAAQ,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;CAChD,CAAC;AAqRJ,iBAAS,YAAY,CACnB,KAAK,EAAE,YAAY,GAAG,wBAAwB,EAC9C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,YAAY,EAAE,WAAW,EAAE,QAK5B;AAED,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,EAC3C,WAAW,EAAE,YAAY,EACzB,YAAY,EAAE,WAAW,EAAE,QAe5B;AAkcD;;;;;;;;GAQG;yBACa,YAAY,UAAU,qBAaC,wBAAwB;AAb/D,wBAoEE"}
@@ -436,7 +436,12 @@ async function loadKanbanLaneInfo([featureProps]) {
436
436
  // Fetch and cache the complete default lane catalog.
437
437
  const laneField = laneGroup.columnId;
438
438
  const values = laneField
439
- ? (await getRsProps().apiContext.fetchUniqueColValues?.(deepCopy({ ...state, groups: undefined }), meta, laneField, getApiOptions(rsStore))) ?? []
439
+ ? (await getRsProps().apiContext.fetchUniqueColValues?.(deepCopy({
440
+ ...state,
441
+ filterExpression: undefined,
442
+ groups: undefined,
443
+ search: undefined
444
+ }), meta, laneField, getApiOptions(rsStore))) ?? []
440
445
  : [];
441
446
  rsStore.kanbanLaneInfo = {
442
447
  sourceKey,
@@ -1 +1 @@
1
- {"version":3,"file":"grouping.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/grouping.ts"],"names":[],"mappings":"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","sourcesContent":["import type { OmitStrict } from '@pega/cosmos-react-core';\n\nimport {\n getGroupKey,\n getGroupFromKey,\n isKanbanTemplate,\n withMemoization,\n compareArray,\n dateFunctionLabels,\n deepCopy,\n isEmpty\n} from '../../../utils/util';\nimport { actionGroupingExpandCollapseAll } from '../../../actions/actions';\nimport { AFTER_FETCH } from '../../../pubSub/events';\nimport type RsInternal from '../../../RsInternal';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\nimport type { MemoizedFunction } from '../../../utils/util.types';\nimport type { Group, GroupFilter, GroupToggle, State } from '../../../../../types/State.types';\nimport {\n REPEATING_STRUCTURE_TEMPLATES,\n type HierarchicalInfo,\n type Meta\n} from '../../../../../types/Meta.types';\nimport GroupGenerator from '../../../generators/GroupGenerator';\nimport type View from '../../../generators/ViewGenerator';\nimport type RsStore from '../../../RsStore';\nimport type {\n ApiOptions,\n GroupedInfo,\n HierarchicalGroupedInfo,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ApiContext\n} from '../../../../../types/ApiContext.types';\n\ntype KanbanLaneInfo = NonNullable<RsStore['kanbanLaneInfo']>;\n\nexport interface CommonGroupingInfo {\n /** Id of the field on which grouping is applied. */\n groupBy: string;\n /** Current group level, starts with 0 for 1st level of grouping. */\n level: number;\n /** Path of the grouped column value. */\n hierarchy: (string | number | boolean | Date)[];\n visibleRow?: boolean;\n showHierarchicalFooter?: boolean;\n groupFrom?: number;\n groupTo?: number;\n isHierarchical?: boolean;\n}\n\nexport type GroupingInfo = OmitStrict<GroupedInfo, 'children'> &\n CommonGroupingInfo & {\n children?: GroupingInfo[];\n };\n\nexport type HierarchicalGroupingInfo = OmitStrict<HierarchicalGroupedInfo, 'children'> &\n CommonGroupingInfo & {\n children?: HierarchicalGroupingInfo[];\n parentId?: string;\n targetId?: string;\n name?: null | string | number | boolean | Date;\n };\n\nfunction isNodeExpanded(\n groupToggle: GroupToggle | undefined,\n node: GroupingInfo | HierarchicalGroupingInfo,\n defaultState: boolean | undefined\n): boolean {\n /** Groups with count 0 should not be expandable. */\n if (node.count === 0) {\n return false;\n }\n\n const index = groupToggle?.[node.groupBy!]?.findIndex(gct => compareArray(gct, node.hierarchy!));\n const childToggleState = index! >= 0 ? !defaultState : !!defaultState;\n return childToggleState === true;\n}\n\nconst getLabel = (view: View, groupBy: string, getState: BeforeRenderFeatureProps['getState']) => {\n const { columnId, dateFunction } = getGroupFromKey(groupBy, getState().groups)!;\n let { label } = view.columns!.find(column => column.field.id.toString() === columnId.toString())!;\n if (dateFunction) {\n label += ` (${dateFunctionLabels[dateFunction]})`;\n }\n return label;\n};\n\n/**\n * Creates a cache key for the Kanban lane group.\n *\n * @param laneGroup - Level-0 group that defines the Kanban lanes.\n * @returns A key that identifies the current lane source.\n */\nfunction getKanbanLaneSourceKey(laneGroup: Group): string {\n return `${getGroupKey(laneGroup)}:${laneGroup.order}`;\n}\n\n/**\n * Builds the complete Kanban lane catalog from text custom grouping.\n *\n * Includes the aggregate ungrouped lane and applies the resolved lane order.\n *\n * @param laneGroup - Level-0 group that may define text custom lanes.\n * @param sourceKey - Cache key for the resulting lane catalog.\n * @returns The custom lane catalog, or `undefined` for non-text grouping.\n */\nfunction getKanbanLaneInfoFromCustomGrouping(\n laneGroup: Group,\n sourceKey: string\n): KanbanLaneInfo | undefined {\n const customGrouping = laneGroup.customFunction;\n // Kanban lanes only support text custom grouping (enforced during meta normalization).\n if (customGrouping?.type !== 'TEXT_GROUPING') return undefined;\n\n const names = customGrouping.groups.map(group => group.label);\n if (customGrouping.ungrouped.mode === 'aggregate') {\n names.push(customGrouping.ungrouped.label);\n }\n\n if (laneGroup.order === 'asc') {\n names.sort((first, second) => first.localeCompare(second));\n } else if (laneGroup.order === 'desc') {\n names.sort((first, second) => second.localeCompare(first));\n }\n\n return {\n sourceKey,\n lanes: names\n };\n}\n\nfunction getApiOptions(rsStore: RsStore): ApiOptions {\n return {\n ...(rsStore.refreshInProgress && {\n invalidateCache: true,\n invalidateCacheToken: rsStore.refreshToken\n })\n };\n}\n\n/**\n * Creates grouping information for a lane with no matching records.\n *\n * @param name - Lane name.\n * @returns Empty grouping information for the lane.\n */\nfunction createEmptyLaneGroup(name: GroupedInfo['name'], laneGroup: Group): GroupingInfo {\n return {\n name,\n count: 0,\n groupBy: getGroupKey(laneGroup),\n level: laneGroup.level,\n hierarchy: name === null ? [] : [name],\n data: {},\n additionalFieldsData: [],\n agg: {},\n children: []\n };\n}\n\n/**\n * Merges the current top-level lane groups with the complete lane catalog.\n *\n * @param groupingInfo - Grouping information returned for the current state.\n * @param laneInfo - Complete lane catalog.\n * @param laneGroup - The level-0 group that defines the Kanban lanes.\n * @returns Top-level lane groups in catalog order.\n */\nfunction mergeKanbanGroupingInfo(\n groupingInfo: GroupedInfo[],\n laneInfo: KanbanLaneInfo,\n laneGroup: Group\n): GroupedInfo[] {\n const laneKey = (value: GroupedInfo['name']) => (value instanceof Date ? value.getTime() : value);\n const groupsByLaneKey = new Map(groupingInfo.map(group => [laneKey(group.name), group]));\n\n return laneInfo.lanes.map(\n name => groupsByLaneKey.get(laneKey(name)) ?? createEmptyLaneGroup(name, laneGroup)\n );\n}\n\n/**\n * Processes grouping information for the active template.\n *\n * For Kanban, merges the grouped result with the matching cached lane catalog.\n * Returns the input unchanged when no matching Kanban lane catalog is available.\n *\n * @param groupingInfo - Grouping information returned for the current state.\n * @param meta - Metadata for the current view.\n * @param groups - Active grouping definitions.\n * @param rsStore - Repeating-structure store containing the lane catalog.\n * @returns Processed grouping information.\n */\nfunction processGroupingInfo(\n groupingInfo: GroupedInfo[],\n meta: Meta,\n groups: State['groups'],\n rsStore: RsStore\n): GroupedInfo[] {\n if (!isKanbanTemplate(meta) || !rsStore.kanbanLaneInfo) return groupingInfo;\n\n const laneGroup = groups?.[0];\n if (!laneGroup || rsStore.kanbanLaneInfo.sourceKey !== getKanbanLaneSourceKey(laneGroup)) {\n return groupingInfo;\n }\n\n return mergeKanbanGroupingInfo(groupingInfo, rsStore.kanbanLaneInfo, laneGroup);\n}\n\n// This function checks if hierarchy exists or not.\n// which will decide whether start and end Index would be there on the leaf node or on the hierarchical node.\nconst doesExistInViewInfo = (\n viewInfo: GroupFilter[],\n hierarchy: (string | number | boolean | Date)[] = [],\n isHierarchical = false\n) => {\n return viewInfo.some(v => {\n const filters = Object.values(v.filters);\n\n if (isHierarchical) {\n return filters.every(value => value === [...hierarchy].pop());\n }\n\n if (filters.length === hierarchy.length) {\n const tempHierarchy = [...hierarchy];\n // eslint-disable-next-line @typescript-eslint/require-array-sort-compare\n tempHierarchy.sort();\n // eslint-disable-next-line @typescript-eslint/require-array-sort-compare\n return filters.sort().every((value, index) => value === tempHierarchy[index]);\n }\n return false;\n });\n};\n\nconst prepareGroupHeaders = (\n props: [\n groupingInfo: RsStore['groupingInfo'],\n groupFilters: RsStore['groupFilters'],\n rsInternal: RsInternal,\n groupToggle?: State['groupToggle'],\n allGroupsExpanded?: boolean\n ]\n) => {\n const [groupingInfo = [], viewInfo = [], rsInternal, groupToggle = {}, allGroupsExpanded] = props;\n\n // If group and viewInfo are empty, prepare group header for top level leaf node.\n // This is for easing on UI , one contract whether grouping is in place/not.\n // TODO: support for enabling feature on view.\n const view = rsInternal.getView();\n const { getState } = rsInternal.getRsStateResolver();\n // Timeline view manages visual collapse independently; rows must always be\n // included in groupFilters so that rows.length stays accurate for infinite-scroll pagination.\n const isTimelineView = view.meta.template === REPEATING_STRUCTURE_TEMPLATES.TIMELINE;\n if (groupingInfo.length === 0) {\n // construct a view header object.\n\n const viewHeader = new GroupGenerator(\n {\n isVisible: false,\n isLeafNode: true,\n isExpanded: true,\n name: '',\n groupBy: '',\n level: 0,\n label: '',\n hierarchy: [],\n count: view.rows!.length\n },\n rsInternal\n );\n viewHeader.startIndex = 0;\n viewHeader.endIndex = view.rows ? view.rows.length : 0;\n view.setProp('groupHeaders', [viewHeader]);\n return;\n }\n // Creating flat objects from view group info using DFT.\n const result = [];\n let counter = 0;\n\n const stack = groupingInfo.map(v => ({ ...v }));\n let leafNodeCountInView = 0;\n let lastDataIndex = 0;\n while (stack.length) {\n const child = stack.shift();\n if (child) {\n const isExpanded = isNodeExpanded(groupToggle, child, allGroupsExpanded);\n const isSubGroupPresent = child.children && child.children.length;\n const label = child.isHierarchical ? '' : getLabel(view, child.groupBy!, getState);\n // construct a view header object.\n const viewHeader = new GroupGenerator(\n {\n isVisible: !!child.visibleRow,\n isLeafNode: !isSubGroupPresent,\n isExpanded,\n name: child.name!,\n groupBy: child.groupBy,\n level: child.level,\n label: label!,\n hierarchy: child.hierarchy,\n count: child.count,\n aggregation: child.agg,\n showHierarchicalFooter: child.showHierarchicalFooter,\n isHierarchical: child.isHierarchical,\n info: 'info' in child ? child.info : undefined,\n data: 'data' in child ? child.data : undefined,\n additionalFieldsData:\n 'additionalFieldsData' in child ? child.additionalFieldsData : undefined\n },\n rsInternal\n );\n // If the header node is a leaf node, then, add start index and endIndex to resolve data.\n if (\n (viewHeader.isLeafNode || viewHeader.isHierarchical) &&\n (viewHeader.isExpanded || isTimelineView) &&\n doesExistInViewInfo(viewInfo, viewHeader.hierarchy, viewHeader.isHierarchical)\n ) {\n const { groupFrom, groupTo } = viewInfo[leafNodeCountInView] || {};\n if (groupFrom >= 0 && groupTo >= 0) {\n viewHeader.startIndex = lastDataIndex;\n viewHeader.endIndex = viewHeader.startIndex + groupTo - groupFrom;\n lastDataIndex = viewHeader.endIndex;\n leafNodeCountInView += 1;\n }\n }\n // BUG-775861 - Adding index to visible groupHeaders so that this can be used to set the z-index for groupHeaders\n if (viewHeader.isVisible) {\n viewHeader.index = counter;\n counter += 1;\n }\n result.push(viewHeader);\n if ((isExpanded || (child.count > 0 && isTimelineView)) && isSubGroupPresent) {\n stack.unshift(...child.children!);\n }\n }\n }\n view.setProp('groupHeaders', result);\n};\n\nfunction includeGroup(\n group: GroupingInfo | HierarchicalGroupingInfo,\n groupFrom: number,\n groupTo: number,\n parentGroups: Record<string, any>,\n groupFilters: GroupFilter[]\n) {\n group.groupFrom = groupFrom;\n group.groupTo = groupTo;\n groupFilters.push({ groupFrom, groupTo, filters: parentGroups });\n}\n\ntype ParentGroups = Parameters<typeof includeGroup>[3];\n\nexport function includeAllLeafGroups(\n group: NonNullable<RsStore['groupingInfo']>,\n parentGroup: ParentGroups,\n groupFilters: GroupFilter[]\n) {\n group.forEach(groupInfo => {\n const parentGroups = { ...parentGroup };\n const currentGroup = groupInfo as GroupingInfo;\n if (currentGroup.groupBy) {\n parentGroups[currentGroup.groupBy] = currentGroup.name;\n }\n\n if (groupInfo.children?.length) {\n includeAllLeafGroups(groupInfo.children, parentGroups, groupFilters);\n } else if (groupInfo.count > 0) {\n includeGroup(groupInfo, 0, groupInfo.count, parentGroups, groupFilters);\n }\n });\n}\n\nfunction getRecordsCount(\n group: NonNullable<RsStore['groupingInfo']>,\n count: number,\n includedRowCount: number,\n parentGroup: Record<string, any>,\n from: number,\n to: number,\n groupFilters: GroupFilter[],\n groupToggle: GroupToggle | undefined,\n allGroupsExpanded: boolean | undefined,\n state: State,\n getView: BeforeRenderFeatureProps['getView']\n): [count: number, includedRowCount: number] {\n const { aggregationInfo } = state;\n // Timeline view manages visual collapse independently; rows must always be\n // included in groupFilters so that rows.length stays accurate for infinite-scroll pagination.\n const isTimelineView = getView().meta.template === REPEATING_STRUCTURE_TEMPLATES.TIMELINE;\n\n for (let i = 0; i < group.length; i += 1) {\n const parentGroups = { ...parentGroup };\n if (group[i].isHierarchical) {\n const currentGroup = group[i] as HierarchicalGroupingInfo;\n parentGroups[currentGroup.parentId!] = currentGroup.info![currentGroup.targetId!];\n } else {\n const currentGroup = group![i] as GroupingInfo;\n parentGroups[currentGroup.groupBy!] = currentGroup.name;\n }\n count += 1;\n // the group has subgroups and a group is expanded\n const isExpanded = isNodeExpanded(groupToggle, group[i], allGroupsExpanded);\n let includeThisGroup = false;\n if (count > from && count - 1 <= to) {\n includeThisGroup = true;\n includedRowCount += 1;\n }\n group[i].visibleRow = includeThisGroup;\n // Footer should be shown only if the node expands.\n // groupToggle will affect footer visibility so reset a footer flag.\n group[i].showHierarchicalFooter = false;\n\n if (group[i].children && (isExpanded || (group[i].count > 0 && isTimelineView))) {\n [count, includedRowCount] = getRecordsCount(\n group[i].children!,\n count,\n includedRowCount,\n parentGroups,\n from,\n to,\n groupFilters,\n groupToggle,\n allGroupsExpanded,\n state,\n getView\n );\n group[i].visibleRow =\n group[i].visibleRow ||\n !!group[i].children!.find(g => g.visibleRow && (g.isHierarchical || !g.children));\n } else if (!group[i].children && (isExpanded || (group[i].count > 0 && isTimelineView))) {\n // the group doesn't have subgroups and the group is expanded\n const innerCount = count + group[i].count;\n if (count <= to) {\n let groupFrom = 0;\n let groupTo = 0;\n if (innerCount >= from) {\n groupFrom = Math.max(from - count, 0);\n if (innerCount <= to + 1) {\n groupTo = group[i].count;\n } else {\n groupTo = groupFrom + (to + 1 - from - includedRowCount);\n }\n group[i].visibleRow = true;\n let updatedGroupFrom = groupFrom;\n // Sticky group header logic\n if (!includeThisGroup && groupTo > groupFrom + 2) {\n if (group[i].level! >= 1) {\n updatedGroupFrom = groupFrom + 2;\n } else {\n updatedGroupFrom = groupFrom + 1;\n }\n }\n includeGroup(group[i], updatedGroupFrom, groupTo, parentGroups, groupFilters);\n }\n includedRowCount += groupTo - groupFrom;\n }\n count = innerCount;\n }\n\n if (group[i].isHierarchical && aggregationInfo && aggregationInfo.length > 0 && isExpanded) {\n count += 1;\n group[i].showHierarchicalFooter = true;\n\n if (group[i].visibleRow && includedRowCount <= to) {\n includedRowCount += 1;\n }\n }\n }\n return [count, includedRowCount];\n}\n\nconst constructGroupingPagination = (\n groupingInfo: NonNullable<RsStore['groupingInfo']>,\n groupToggle: GroupToggle | undefined,\n paginationOptions:\n | NonNullable<State['paginationOptions']>[keyof NonNullable<State['paginationOptions']>]\n | undefined,\n allGroupsExpanded: boolean | undefined,\n state: State,\n getView: BeforeRenderFeatureProps['getView']\n) => {\n const groupFilters: GroupFilter[] = [];\n if (!paginationOptions) {\n includeAllLeafGroups(groupingInfo, {}, groupFilters);\n } else {\n getRecordsCount(\n groupingInfo,\n 0,\n 0,\n {},\n paginationOptions.startIndex,\n paginationOptions.endIndex,\n groupFilters,\n groupToggle,\n allGroupsExpanded,\n state,\n getView\n );\n }\n return groupFilters;\n};\n\n// This is basically used to update count on non-leaf node.\n// which is the sum of count of leaf node children in their hierarchy.\nfunction updateCountOnNonLeafNode(groupingInfo: GroupedInfo[]) {\n const updateCount = (child: GroupedInfo) => {\n if (child.count !== undefined) return child.count;\n child.count = child.children!.reduce((acc, c) => {\n acc += updateCount(c)!;\n return acc;\n }, 0);\n };\n groupingInfo.forEach(g => updateCount(g));\n}\n\nfunction updateGroupInfo(groupingInfo: GroupedInfo[], groups: Group[]): GroupingInfo[] {\n // iterate groupingInfo using BFS and update basic information.\n const queue = [...groupingInfo] as GroupingInfo[];\n while (queue.length) {\n const child = queue.pop();\n if (child) {\n if (!child.hierarchy) child.hierarchy = [child.name!];\n child.level = child.level || 0;\n const matchingGroup = groups.find(g => g.level === child.level);\n child.groupBy = getGroupKey(matchingGroup!);\n\n if (child.children) {\n // update level before pushing children to queue.\n child.children.forEach(c => {\n c.level = child.level + 1;\n c.hierarchy = [...child.hierarchy];\n c.hierarchy.push(c.name!);\n });\n queue.push(...child.children);\n }\n }\n }\n return groupingInfo as GroupingInfo[];\n}\n\nfunction updateCountFromGroupingInfo(\n getView: BeforeRenderFeatureProps['getView'],\n getRsStore: BeforeRenderFeatureProps['getRsStore']\n) {\n if (getView().countGeneratedInternally || isEmpty(getView().resultsCount)) {\n const countFromGroupingInfo = getRsStore().groupingInfo?.reduce(\n (acc, group) => (group.count ? acc + group.count : acc),\n 0\n );\n\n const countPayload = { count: countFromGroupingInfo, _countGeneratedInternally: true };\n getView().type.setRecordCount(countPayload);\n }\n}\n\nasync function onGroupsChange([{ getRsProps, getRsStore, getView, getState }]: [\n featureProps: BeforeRenderFeatureProps\n]) {\n const rsStore = getRsStore();\n const rsProps = getRsProps();\n const state = getState();\n const { groups } = state;\n const meta = getView().meta;\n\n if (groups && groups.length > 0 && meta.grouping) {\n try {\n const groupingInfo =\n (await rsProps.apiContext.fetchGroupedInfo?.(deepCopy(state), meta, {\n ...(getRsStore().refreshInProgress && {\n invalidateCache: true,\n invalidateCacheToken: getRsStore().refreshToken\n })\n })) || [];\n const processedGroupingInfo = processGroupingInfo(groupingInfo, meta, groups, rsStore);\n\n // Here update group info with basic properties like level, group by, expand state etc.\n // to make calculation easy.\n // TODO: FIXME - Check if count on non leaf node is required\n updateCountOnNonLeafNode(processedGroupingInfo);\n rsStore.groupingInfo = updateGroupInfo(processedGroupingInfo, groups);\n\n // FIXME: once infinite virtualizer supports the grouping, we need not compute the count from grouping\n // Prepare the count from the groups count until the actual count returns\n updateCountFromGroupingInfo(getView, getRsStore);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('API call failed', err);\n }\n } else rsStore.groupingInfo = [];\n\n getView().columns!.forEach(column => {\n const grouped = groups?.findIndex(group => group.columnId === column.field.id)! >= 0;\n column = column.setProp('grouped', grouped);\n });\n}\n\n/**\n * Loads the complete Kanban lane catalog before grouped data is processed.\n *\n * @param featureProps - Dependencies for the grouping feature.\n * @returns A promise that resolves after the lane information is stored.\n */\nasync function loadKanbanLaneInfo([featureProps]: [featureProps: BeforeRenderFeatureProps]) {\n const { getRsProps, getRsStore, getState, getView } = featureProps;\n const meta = getView().meta;\n if (!isKanbanTemplate(meta)) return;\n\n const state = getState();\n // Wait for state hydration to add the level-0 lane group.\n const groups = state.groups ?? [];\n const laneGroup = groups[0];\n if (!laneGroup) return;\n\n try {\n const rsStore = getRsStore();\n const sourceKey = getKanbanLaneSourceKey(laneGroup);\n const customLaneInfo = getKanbanLaneInfoFromCustomGrouping(laneGroup, sourceKey);\n\n // Custom text grouping defines the complete lanes within the grouping definition.\n if (customLaneInfo) {\n rsStore.kanbanLaneInfo = customLaneInfo;\n return;\n }\n\n // Reuse the catalog unless a force refresh needs the latest lane domain.\n if (rsStore.kanbanLaneInfo?.sourceKey === sourceKey && !rsStore.refreshInProgress) return;\n\n // Fetch and cache the complete default lane catalog.\n const laneField = laneGroup.columnId;\n const values = laneField\n ? (await getRsProps().apiContext.fetchUniqueColValues?.(\n deepCopy({ ...state, groups: undefined }),\n meta,\n laneField,\n getApiOptions(rsStore)\n )) ?? []\n : [];\n rsStore.kanbanLaneInfo = {\n sourceKey,\n lanes: values\n };\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('API call failed', err);\n }\n}\n\nfunction autoExpandGroups([{ dispatch, getState }]: [featureProps: BeforeRenderFeatureProps]) {\n const { allGroupsExpanded = true } = getState();\n dispatch(actionGroupingExpandCollapseAll(allGroupsExpanded));\n}\n\nfunction updateHierarchicalGroupInfo(\n groupingInfo: HierarchicalGroupedInfo[],\n hierarchicalGroup: HierarchicalInfo\n) {\n const queue = [...groupingInfo] as HierarchicalGroupingInfo[];\n\n while (queue.length) {\n const child = queue.pop();\n const node = child!.info;\n\n if (child) {\n child.level = child.level || 0;\n child.isHierarchical = true;\n child.parentId = hierarchicalGroup.parentId;\n child.targetId = hierarchicalGroup.targetId;\n child.groupBy = (hierarchicalGroup.sortById || hierarchicalGroup.targetId)!;\n\n if (node) {\n child.name = node[(hierarchicalGroup.sortById || hierarchicalGroup.targetId)!] as string;\n child.hierarchy = [node[hierarchicalGroup.targetId!] as string];\n }\n\n if (child.children) {\n // update level before pushing children to queue.\n child.children.forEach(c => {\n c.level = child.level! + 1;\n });\n queue.push(...child.children);\n }\n }\n }\n}\n\nasync function onHierarchicalGroupChange([{ getState, getRsProps, getRsStore, getView }]: [\n featureProps: BeforeRenderFeatureProps\n]) {\n const { hierarchicalGroup } = getState();\n const rsProps = getRsProps();\n const rsStore = getRsStore();\n if (hierarchicalGroup && hierarchicalGroup.parentId) {\n try {\n const groupingInfo =\n (await rsProps.apiContext.fetchHierarchicalGroupedInfo?.(\n deepCopy(getState()),\n getView().meta,\n {\n ...(getRsStore().refreshInProgress && {\n invalidateCache: true,\n invalidateCacheToken: getRsStore().refreshToken\n })\n }\n )) || [];\n\n getView().setProp('hierarchicalGroupEnabled', true);\n\n updateHierarchicalGroupInfo(groupingInfo, hierarchicalGroup);\n rsStore.groupingInfo = groupingInfo as HierarchicalGroupingInfo[];\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('API call failed', err);\n }\n } else {\n getView().setProp('hierarchicalGroupEnabled', false);\n }\n}\n\nconst getTotalItemCount = (\n getView: BeforeRenderFeatureProps['getView'],\n state: State,\n groupingInfo: NonNullable<RsStore['groupingInfo']>\n) => {\n // Calculate total group count and update instance.\n // and datanode count based on group expand state.\n let totalItemCount = 0;\n const stack = [...groupingInfo];\n const { groupToggle, allGroupsExpanded } = state;\n\n while (stack.length) {\n const child = stack.shift();\n // We are considering header count whether if it is of a hierarchical node or\n // a normal group node, and it has data associated with it in its hierarchy.\n if (child) {\n totalItemCount += 1;\n const isSubGroupPresent = child.children && child.children.length;\n const isExpanded = isNodeExpanded(groupToggle, child, allGroupsExpanded);\n if (isExpanded && isSubGroupPresent) {\n stack.unshift(...child.children!);\n } else if (isExpanded && !isSubGroupPresent) {\n totalItemCount += child.count;\n }\n\n if (child.showHierarchicalFooter) {\n totalItemCount += 1;\n }\n }\n }\n return totalItemCount;\n};\n\nconst updateGroupFilters = ([{ getState, getRsStore, getView }]: [\n featureProps: BeforeRenderFeatureProps\n]) => {\n const { paginationOptions, groupToggle, allGroupsExpanded } = getState();\n // Kanban does not have paginationOptions. It should build all the groupFilters.\n // For other templates, if paginationOptions is not present, then we should not build groupFilters.\n if (!paginationOptions && getView().meta.template !== REPEATING_STRUCTURE_TEMPLATES.KANBAN)\n return;\n const rsStore = getRsStore();\n const { groupingInfo } = rsStore;\n // group info is expected to be [] when there are no groups.\n if (groupingInfo) {\n if (!groupingInfo.length && rsStore.groupFilters && !rsStore.groupFilters.length) return;\n rsStore.groupFilters = constructGroupingPagination(\n groupingInfo,\n groupToggle,\n paginationOptions?.rootVirtualiser,\n allGroupsExpanded,\n getState(),\n getView\n );\n }\n};\n\nfunction postFetch(\n rsInternal: RsInternal,\n memoizedPrepareGroupHeaders: MemoizedFunction<\n [\n groupingInfo: RsStore['groupingInfo'],\n groupFilters: RsStore['groupFilters'],\n rsInternal: RsInternal,\n groupToggle?: State['groupToggle'],\n allGroupsExpanded?: State['allGroupsExpanded']\n ],\n ReturnType<typeof prepareGroupHeaders>\n >\n) {\n const { getRsStore, getView, getRsStateResolver } = rsInternal;\n const rsStore = getRsStore();\n const { getState } = getRsStateResolver();\n if (!rsStore.groupingInfo || !rsStore.groupingInfo.length) {\n // As we are giving ways to always use header, though grouping is not in place\n // update total item count given by API.\n getView().setProp('totalItemCount', getView().resultsCount);\n memoizedPrepareGroupHeaders([[], [], rsInternal], [getView().rows!.length]);\n } else {\n // As our group headers are representing data in UI, so\n // like data after every fetch group headers should also change so that\n // UI get to know about the latest group.\n getView().setProp(\n 'totalItemCount',\n getTotalItemCount(getView, getState(), rsStore.groupingInfo)\n );\n memoizedPrepareGroupHeaders([\n rsStore.groupingInfo,\n rsStore.groupFilters,\n rsInternal,\n getState().groupToggle,\n getState().allGroupsExpanded\n ]);\n }\n}\n\n// TODO: Need to make changes in grouping to support 0 based indexing inclusive start and end index.\n/**\n * Handles the grouping feature for repeating structures.\n *\n * This method performs the following tasks:\n * - Fetches the grouping information, either via {@link ApiContext.fetchGroupedInfo} or {@link ApiContext.fetchHierarchicalGroupedInfo}, and stores the result in {@link RsStore.groupingInfo}.\n * - Prepares group filters based on the grouping information, then sets these filters in {@link RsStore.groupFilters}.\n * - Manages the automatic expansion of groups.\n * - Prepares group headers from the fetched grouping information and sets them in {@link View.groupHeaders}.\n */\nexport default (rsInternal: RsInternal) => {\n const memoizedOnGroupsChange = withMemoization(onGroupsChange);\n const memoizedLoadKanbanLaneInfo = withMemoization(loadKanbanLaneInfo);\n const memorizeOnHierarchicalGroupChange = withMemoization(onHierarchicalGroupChange);\n const memoizedUpdateGroupFilters = withMemoization(updateGroupFilters);\n const memoizedAutoExpandGroups = withMemoization(autoExpandGroups);\n\n // Prepare a group header even though groups are not present to have one flow.\n // depend on after fetch event as it depends on data when no grouping is there.\n rsInternal\n .getPubSubUtils()\n .subscribe(AFTER_FETCH, () => postFetch(rsInternal, withMemoization(prepareGroupHeaders)));\n\n async function execute(featureProps: BeforeRenderFeatureProps) {\n const { getState, getRsStore } = featureProps;\n const state = getState();\n\n await memoizedLoadKanbanLaneInfo([featureProps], [state.groups, state.refresh]);\n\n // TOdo: Fixme ISSUE-76344... try to not rely on state.personalization?.active\n await memoizedOnGroupsChange(\n [featureProps],\n [\n state.groups,\n state.filterExpression,\n state.search?.query,\n state.personalization?.active,\n state.refresh,\n state.aggregationInfo,\n state.visibleColumns\n ]\n );\n\n memoizedAutoExpandGroups([featureProps], [state.personalization?.active]);\n\n await memorizeOnHierarchicalGroupChange(\n [featureProps],\n [\n state.hierarchicalGroup,\n state.filterExpression,\n state.search?.query,\n state.aggregationInfo,\n state.personalization?.active\n ]\n );\n // In the new grouping, update group info in state.\n // Action dispatched for group info will prepare group headers.\n // TODO: use this comparator for optimization but isVisible calculated prop on grouping info needs to be handled.ISSUE-80012\n // const comparator =(prev, next) => {\n // if (prev[1] !== next[1] || prev[3] !== next[3]) return false;\n // return compareArray(prev[2], next[2], ['children', 'count', 'name']);\n // };\n memoizedUpdateGroupFilters(\n [featureProps],\n [\n state.paginationOptions?.[Object.keys(state.paginationOptions || {})[0]],\n getRsStore().groupingInfo,\n state.groupToggle,\n state.allGroupsExpanded\n ]\n );\n }\n\n if (rsInternal.getView().meta.grouping || isKanbanTemplate(rsInternal.getView().meta)) {\n return execute;\n }\n\n return undefined;\n};\n"]}
1
+ {"version":3,"file":"grouping.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/grouping.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,QAAQ,EACR,OAAO,EACR,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAKrD,OAAO,EACL,6BAA6B,EAG9B,MAAM,iCAAiC,CAAC;AACzC,OAAO,cAAc,MAAM,oCAAoC,CAAC;AAwChE,SAAS,cAAc,CACrB,WAAoC,EACpC,IAA6C,EAC7C,YAAiC;IAEjC,oDAAoD;IACpD,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC,IAAI,CAAC,OAAQ,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,SAAU,CAAC,CAAC,CAAC;IACjG,MAAM,gBAAgB,GAAG,KAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IACtE,OAAO,gBAAgB,KAAK,IAAI,CAAC;AACnC,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAE,OAAe,EAAE,QAA8C,EAAE,EAAE;IAC/F,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAE,CAAC;IAChF,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,OAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAE,CAAC;IAClG,IAAI,YAAY,EAAE,CAAC;QACjB,KAAK,IAAI,KAAK,kBAAkB,CAAC,YAAY,CAAC,GAAG,CAAC;IACpD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,SAAgB;IAC9C,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;AACxD,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,mCAAmC,CAC1C,SAAgB,EAChB,SAAiB;IAEjB,MAAM,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC;IAChD,uFAAuF;IACvF,IAAI,cAAc,EAAE,IAAI,KAAK,eAAe;QAAE,OAAO,SAAS,CAAC;IAE/D,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9D,IAAI,cAAc,CAAC,SAAS,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,SAAS,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7D,CAAC;SAAM,IAAI,SAAS,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO;QACL,SAAS;QACT,KAAK,EAAE,KAAK;KACb,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,OAAgB;IACrC,OAAO;QACL,GAAG,CAAC,OAAO,CAAC,iBAAiB,IAAI;YAC/B,eAAe,EAAE,IAAI;YACrB,oBAAoB,EAAE,OAAO,CAAC,YAAY;SAC3C,CAAC;KACH,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,IAAyB,EAAE,SAAgB;IACvE,OAAO;QACL,IAAI;QACJ,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC;QAC/B,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,SAAS,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACtC,IAAI,EAAE,EAAE;QACR,oBAAoB,EAAE,EAAE;QACxB,GAAG,EAAE,EAAE;QACP,QAAQ,EAAE,EAAE;KACb,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,uBAAuB,CAC9B,YAA2B,EAC3B,QAAwB,EACxB,SAAgB;IAEhB,MAAM,OAAO,GAAG,CAAC,KAA0B,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAClG,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAEzF,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CACvB,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,CACpF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,mBAAmB,CAC1B,YAA2B,EAC3B,IAAU,EACV,MAAuB,EACvB,OAAgB;IAEhB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc;QAAE,OAAO,YAAY,CAAC;IAE5E,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC,SAAS,KAAK,sBAAsB,CAAC,SAAS,CAAC,EAAE,CAAC;QACzF,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,uBAAuB,CAAC,YAAY,EAAE,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;AAClF,CAAC;AAED,mDAAmD;AACnD,6GAA6G;AAC7G,MAAM,mBAAmB,GAAG,CAC1B,QAAuB,EACvB,YAAkD,EAAE,EACpD,cAAc,GAAG,KAAK,EACtB,EAAE;IACF,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;QACvB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAEzC,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,aAAa,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;YACrC,yEAAyE;YACzE,aAAa,CAAC,IAAI,EAAE,CAAC;YACrB,yEAAyE;YACzE,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QAChF,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAC1B,KAMC,EACD,EAAE;IACF,MAAM,CAAC,YAAY,GAAG,EAAE,EAAE,QAAQ,GAAG,EAAE,EAAE,UAAU,EAAE,WAAW,GAAG,EAAE,EAAE,iBAAiB,CAAC,GAAG,KAAK,CAAC;IAElG,iFAAiF;IACjF,4EAA4E;IAC5E,8CAA8C;IAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;IAClC,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,kBAAkB,EAAE,CAAC;IACrD,2EAA2E;IAC3E,8FAA8F;IAC9F,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,6BAA6B,CAAC,QAAQ,CAAC;IACrF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,kCAAkC;QAElC,MAAM,UAAU,GAAG,IAAI,cAAc,CACnC;YACE,SAAS,EAAE,KAAK;YAChB,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,EAAE;YACT,SAAS,EAAE,EAAE;YACb,KAAK,EAAE,IAAI,CAAC,IAAK,CAAC,MAAM;SACzB,EACD,UAAU,CACX,CAAC;QACF,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC;QAC1B,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IACD,wDAAwD;IACxD,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;YACzE,MAAM,iBAAiB,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YAClE,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,OAAQ,EAAE,QAAQ,CAAC,CAAC;YACnF,kCAAkC;YAClC,MAAM,UAAU,GAAG,IAAI,cAAc,CACnC;gBACE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU;gBAC7B,UAAU,EAAE,CAAC,iBAAiB;gBAC9B,UAAU;gBACV,IAAI,EAAE,KAAK,CAAC,IAAK;gBACjB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,KAAK,EAAE,KAAM;gBACb,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,WAAW,EAAE,KAAK,CAAC,GAAG;gBACtB,sBAAsB,EAAE,KAAK,CAAC,sBAAsB;gBACpD,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gBAC9C,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gBAC9C,oBAAoB,EAClB,sBAAsB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS;aAC3E,EACD,UAAU,CACX,CAAC;YACF,yFAAyF;YACzF,IACE,CAAC,UAAU,CAAC,UAAU,IAAI,UAAU,CAAC,cAAc,CAAC;gBACpD,CAAC,UAAU,CAAC,UAAU,IAAI,cAAc,CAAC;gBACzC,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,cAAc,CAAC,EAC9E,CAAC;gBACD,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;gBACnE,IAAI,SAAS,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;oBACnC,UAAU,CAAC,UAAU,GAAG,aAAa,CAAC;oBACtC,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;oBAClE,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC;oBACpC,mBAAmB,IAAI,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;YACD,iHAAiH;YACjH,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;gBACzB,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC;gBAC3B,OAAO,IAAI,CAAC,CAAC;YACf,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxB,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,cAAc,CAAC,CAAC,IAAI,iBAAiB,EAAE,CAAC;gBAC7E,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,QAAS,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,SAAS,YAAY,CACnB,KAA8C,EAC9C,SAAiB,EACjB,OAAe,EACf,YAAiC,EACjC,YAA2B;IAE3B,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;AACnE,CAAC;AAID,MAAM,UAAU,oBAAoB,CAClC,KAA2C,EAC3C,WAAyB,EACzB,YAA2B;IAE3B,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QACxB,MAAM,YAAY,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC;QACxC,MAAM,YAAY,GAAG,SAAyB,CAAC;QAC/C,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;YACzB,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC;QACzD,CAAC;QAED,IAAI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC/B,oBAAoB,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;QACvE,CAAC;aAAM,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YAC/B,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CACtB,KAA2C,EAC3C,KAAa,EACb,gBAAwB,EACxB,WAAgC,EAChC,IAAY,EACZ,EAAU,EACV,YAA2B,EAC3B,WAAoC,EACpC,iBAAsC,EACtC,KAAY,EACZ,OAA4C;IAE5C,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAClC,2EAA2E;IAC3E,8FAA8F;IAC9F,MAAM,cAAc,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,6BAA6B,CAAC,QAAQ,CAAC;IAE1F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC;QACxC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAA6B,CAAC;YAC1D,YAAY,CAAC,YAAY,CAAC,QAAS,CAAC,GAAG,YAAY,CAAC,IAAK,CAAC,YAAY,CAAC,QAAS,CAAC,CAAC;QACpF,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAAG,KAAM,CAAC,CAAC,CAAiB,CAAC;YAC/C,YAAY,CAAC,YAAY,CAAC,OAAQ,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC;QAC1D,CAAC;QACD,KAAK,IAAI,CAAC,CAAC;QACX,kDAAkD;QAClD,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAC5E,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YACpC,gBAAgB,GAAG,IAAI,CAAC;YACxB,gBAAgB,IAAI,CAAC,CAAC;QACxB,CAAC;QACD,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,gBAAgB,CAAC;QACvC,mDAAmD;QACnD,oEAAoE;QACpE,KAAK,CAAC,CAAC,CAAC,CAAC,sBAAsB,GAAG,KAAK,CAAC;QAExC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,cAAc,CAAC,CAAC,EAAE,CAAC;YAChF,CAAC,KAAK,EAAE,gBAAgB,CAAC,GAAG,eAAe,CACzC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAS,EAClB,KAAK,EACL,gBAAgB,EAChB,YAAY,EACZ,IAAI,EACJ,EAAE,EACF,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,KAAK,EACL,OAAO,CACR,CAAC;YACF,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU;gBACjB,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU;oBACnB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtF,CAAC;aAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,cAAc,CAAC,CAAC,EAAE,CAAC;YACxF,6DAA6D;YAC7D,MAAM,UAAU,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAC1C,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;gBAChB,IAAI,SAAS,GAAG,CAAC,CAAC;gBAClB,IAAI,OAAO,GAAG,CAAC,CAAC;gBAChB,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;oBACvB,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;oBACtC,IAAI,UAAU,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;wBACzB,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;oBAC3B,CAAC;yBAAM,CAAC;wBACN,OAAO,GAAG,SAAS,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,gBAAgB,CAAC,CAAC;oBAC3D,CAAC;oBACD,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;oBAC3B,IAAI,gBAAgB,GAAG,SAAS,CAAC;oBACjC,4BAA4B;oBAC5B,IAAI,CAAC,gBAAgB,IAAI,OAAO,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC;wBACjD,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAM,IAAI,CAAC,EAAE,CAAC;4BACzB,gBAAgB,GAAG,SAAS,GAAG,CAAC,CAAC;wBACnC,CAAC;6BAAM,CAAC;4BACN,gBAAgB,GAAG,SAAS,GAAG,CAAC,CAAC;wBACnC,CAAC;oBACH,CAAC;oBACD,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;gBAChF,CAAC;gBACD,gBAAgB,IAAI,OAAO,GAAG,SAAS,CAAC;YAC1C,CAAC;YACD,KAAK,GAAG,UAAU,CAAC;QACrB,CAAC;QAED,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,eAAe,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3F,KAAK,IAAI,CAAC,CAAC;YACX,KAAK,CAAC,CAAC,CAAC,CAAC,sBAAsB,GAAG,IAAI,CAAC;YAEvC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,gBAAgB,IAAI,EAAE,EAAE,CAAC;gBAClD,gBAAgB,IAAI,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,2BAA2B,GAAG,CAClC,YAAkD,EAClD,WAAoC,EACpC,iBAEa,EACb,iBAAsC,EACtC,KAAY,EACZ,OAA4C,EAC5C,EAAE;IACF,MAAM,YAAY,GAAkB,EAAE,CAAC;IACvC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,oBAAoB,CAAC,YAAY,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,eAAe,CACb,YAAY,EACZ,CAAC,EACD,CAAC,EACD,EAAE,EACF,iBAAiB,CAAC,UAAU,EAC5B,iBAAiB,CAAC,QAAQ,EAC1B,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,KAAK,EACL,OAAO,CACR,CAAC;IACJ,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEF,2DAA2D;AAC3D,sEAAsE;AACtE,SAAS,wBAAwB,CAAC,YAA2B;IAC3D,MAAM,WAAW,GAAG,CAAC,KAAkB,EAAE,EAAE;QACzC,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC,KAAK,CAAC;QAClD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,QAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YAC9C,GAAG,IAAI,WAAW,CAAC,CAAC,CAAE,CAAC;YACvB,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,CAAC,CAAC,CAAC;IACR,CAAC,CAAC;IACF,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,eAAe,CAAC,YAA2B,EAAE,MAAe;IACnE,+DAA+D;IAC/D,MAAM,KAAK,GAAG,CAAC,GAAG,YAAY,CAAmB,CAAC;IAClD,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QAC1B,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,CAAC,SAAS;gBAAE,KAAK,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,IAAK,CAAC,CAAC;YACtD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;YAC/B,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;YAChE,KAAK,CAAC,OAAO,GAAG,WAAW,CAAC,aAAc,CAAC,CAAC;YAE5C,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,iDAAiD;gBACjD,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACzB,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;oBAC1B,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;oBACnC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC;gBAC5B,CAAC,CAAC,CAAC;gBACH,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,YAA8B,CAAC;AACxC,CAAC;AAED,SAAS,2BAA2B,CAClC,OAA4C,EAC5C,UAAkD;IAElD,IAAI,OAAO,EAAE,CAAC,wBAAwB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;QAC1E,MAAM,qBAAqB,GAAG,UAAU,EAAE,CAAC,YAAY,EAAE,MAAM,CAC7D,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EACvD,CAAC,CACF,CAAC;QAEF,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,IAAI,EAAE,CAAC;QACvF,OAAO,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,CAE3E;IACC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC;IAE5B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjD,IAAI,CAAC;YACH,MAAM,YAAY,GAChB,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE;gBAClE,GAAG,CAAC,UAAU,EAAE,CAAC,iBAAiB,IAAI;oBACpC,eAAe,EAAE,IAAI;oBACrB,oBAAoB,EAAE,UAAU,EAAE,CAAC,YAAY;iBAChD,CAAC;aACH,CAAC,CAAC,IAAI,EAAE,CAAC;YACZ,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAEvF,uFAAuF;YACvF,4BAA4B;YAC5B,4DAA4D;YAC5D,wBAAwB,CAAC,qBAAqB,CAAC,CAAC;YAChD,OAAO,CAAC,YAAY,GAAG,eAAe,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;YAEtE,sGAAsG;YACtG,yEAAyE;YACzE,2BAA2B,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;;QAAM,OAAO,CAAC,YAAY,GAAG,EAAE,CAAC;IAEjC,OAAO,EAAE,CAAC,OAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAClC,MAAM,OAAO,GAAG,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAE,IAAI,CAAC,CAAC;QACrF,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,kBAAkB,CAAC,CAAC,YAAY,CAA2C;IACxF,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC;IACnE,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC;IAC5B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAAE,OAAO;IAEpC,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,0DAA0D;IAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,CAAC,SAAS;QAAE,OAAO;IAEvB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,cAAc,GAAG,mCAAmC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAEjF,kFAAkF;QAClF,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,cAAc,GAAG,cAAc,CAAC;YACxC,OAAO;QACT,CAAC;QAED,yEAAyE;QACzE,IAAI,OAAO,CAAC,cAAc,EAAE,SAAS,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,iBAAiB;YAAE,OAAO;QAE1F,qDAAqD;QACrD,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC;QACrC,MAAM,MAAM,GAAG,SAAS;YACtB,CAAC,CAAC,CAAC,MAAM,UAAU,EAAE,CAAC,UAAU,CAAC,oBAAoB,EAAE,CACnD,QAAQ,CAAC;gBACP,GAAG,KAAK;gBACR,gBAAgB,EAAE,SAAS;gBAC3B,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,SAAS;aAClB,CAAC,EACF,IAAI,EACJ,SAAS,EACT,aAAa,CAAC,OAAO,CAAC,CACvB,CAAC,IAAI,EAAE;YACV,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,CAAC,cAAc,GAAG;YACvB,SAAS;YACT,KAAK,EAAE,MAAM;SACd,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAA2C;IAC1F,MAAM,EAAE,iBAAiB,GAAG,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAC;IAChD,QAAQ,CAAC,+BAA+B,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,2BAA2B,CAClC,YAAuC,EACvC,iBAAmC;IAEnC,MAAM,KAAK,GAAG,CAAC,GAAG,YAAY,CAA+B,CAAC;IAE9D,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,KAAM,CAAC,IAAI,CAAC;QAEzB,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;YAC/B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;YAC5B,KAAK,CAAC,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAC;YAC5C,KAAK,CAAC,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAC;YAC5C,KAAK,CAAC,OAAO,GAAG,CAAC,iBAAiB,CAAC,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,CAAE,CAAC;YAE5E,IAAI,IAAI,EAAE,CAAC;gBACT,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,iBAAiB,CAAC,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,CAAE,CAAW,CAAC;gBACzF,KAAK,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAS,CAAW,CAAC,CAAC;YAClE,CAAC;YAED,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,iDAAiD;gBACjD,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACzB,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,KAAM,GAAG,CAAC,CAAC;gBAC7B,CAAC,CAAC,CAAC;gBACH,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,CAEtF;IACC,MAAM,EAAE,iBAAiB,EAAE,GAAG,QAAQ,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,QAAQ,EAAE,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,YAAY,GAChB,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,4BAA4B,EAAE,CACtD,QAAQ,CAAC,QAAQ,EAAE,CAAC,EACpB,OAAO,EAAE,CAAC,IAAI,EACd;gBACE,GAAG,CAAC,UAAU,EAAE,CAAC,iBAAiB,IAAI;oBACpC,eAAe,EAAE,IAAI;oBACrB,oBAAoB,EAAE,UAAU,EAAE,CAAC,YAAY;iBAChD,CAAC;aACH,CACF,CAAC,IAAI,EAAE,CAAC;YAEX,OAAO,EAAE,CAAC,OAAO,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;YAEpD,2BAA2B,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;YAC7D,OAAO,CAAC,YAAY,GAAG,YAA0C,CAAC;QACpE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,EAAE,CAAC,OAAO,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED,MAAM,iBAAiB,GAAG,CACxB,OAA4C,EAC5C,KAAY,EACZ,YAAkD,EAClD,EAAE;IACF,mDAAmD;IACnD,kDAAkD;IAClD,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,MAAM,KAAK,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;IAChC,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,KAAK,CAAC;IAEjD,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5B,6EAA6E;QAC7E,4EAA4E;QAC5E,IAAI,KAAK,EAAE,CAAC;YACV,cAAc,IAAI,CAAC,CAAC;YACpB,MAAM,iBAAiB,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YAClE,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;YACzE,IAAI,UAAU,IAAI,iBAAiB,EAAE,CAAC;gBACpC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,QAAS,CAAC,CAAC;YACpC,CAAC;iBAAM,IAAI,UAAU,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5C,cAAc,IAAI,KAAK,CAAC,KAAK,CAAC;YAChC,CAAC;YAED,IAAI,KAAK,CAAC,sBAAsB,EAAE,CAAC;gBACjC,cAAc,IAAI,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,CAE7D,EAAE,EAAE;IACH,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,QAAQ,EAAE,CAAC;IACzE,gFAAgF;IAChF,mGAAmG;IACnG,IAAI,CAAC,iBAAiB,IAAI,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,6BAA6B,CAAC,MAAM;QACxF,OAAO;IACT,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IACjC,4DAA4D;IAC5D,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM;YAAE,OAAO;QACzF,OAAO,CAAC,YAAY,GAAG,2BAA2B,CAChD,YAAY,EACZ,WAAW,EACX,iBAAiB,EAAE,eAAe,EAClC,iBAAiB,EACjB,QAAQ,EAAE,EACV,OAAO,CACR,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,SAAS,SAAS,CAChB,UAAsB,EACtB,2BASC;IAED,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,UAAU,CAAC;IAC/D,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,EAAE,QAAQ,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAC1C,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QAC1D,8EAA8E;QAC9E,wCAAwC;QACxC,OAAO,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC;QAC5D,2BAA2B,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9E,CAAC;SAAM,CAAC;QACN,uDAAuD;QACvD,uEAAuE;QACvE,yCAAyC;QACzC,OAAO,EAAE,CAAC,OAAO,CACf,gBAAgB,EAChB,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,YAAY,CAAC,CAC7D,CAAC;QACF,2BAA2B,CAAC;YAC1B,OAAO,CAAC,YAAY;YACpB,OAAO,CAAC,YAAY;YACpB,UAAU;YACV,QAAQ,EAAE,CAAC,WAAW;YACtB,QAAQ,EAAE,CAAC,iBAAiB;SAC7B,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,oGAAoG;AACpG;;;;;;;;GAQG;AACH,eAAe,CAAC,UAAsB,EAAE,EAAE;IACxC,MAAM,sBAAsB,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;IAC/D,MAAM,0BAA0B,GAAG,eAAe,CAAC,kBAAkB,CAAC,CAAC;IACvE,MAAM,iCAAiC,GAAG,eAAe,CAAC,yBAAyB,CAAC,CAAC;IACrF,MAAM,0BAA0B,GAAG,eAAe,CAAC,kBAAkB,CAAC,CAAC;IACvE,MAAM,wBAAwB,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAEnE,8EAA8E;IAC9E,+EAA+E;IAC/E,UAAU;SACP,cAAc,EAAE;SAChB,SAAS,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,eAAe,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAE7F,KAAK,UAAU,OAAO,CAAC,YAAsC;QAC3D,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,YAAY,CAAC;QAC9C,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QAEzB,MAAM,0BAA0B,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAEhF,8EAA8E;QAC9E,MAAM,sBAAsB,CAC1B,CAAC,YAAY,CAAC,EACd;YACE,KAAK,CAAC,MAAM;YACZ,KAAK,CAAC,gBAAgB;YACtB,KAAK,CAAC,MAAM,EAAE,KAAK;YACnB,KAAK,CAAC,eAAe,EAAE,MAAM;YAC7B,KAAK,CAAC,OAAO;YACb,KAAK,CAAC,eAAe;YACrB,KAAK,CAAC,cAAc;SACrB,CACF,CAAC;QAEF,wBAAwB,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;QAE1E,MAAM,iCAAiC,CACrC,CAAC,YAAY,CAAC,EACd;YACE,KAAK,CAAC,iBAAiB;YACvB,KAAK,CAAC,gBAAgB;YACtB,KAAK,CAAC,MAAM,EAAE,KAAK;YACnB,KAAK,CAAC,eAAe;YACrB,KAAK,CAAC,eAAe,EAAE,MAAM;SAC9B,CACF,CAAC;QACF,mDAAmD;QACnD,+DAA+D;QAC/D,4HAA4H;QAC5H,sCAAsC;QACtC,kEAAkE;QAClE,0EAA0E;QAC1E,KAAK;QACL,0BAA0B,CACxB,CAAC,YAAY,CAAC,EACd;YACE,KAAK,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,UAAU,EAAE,CAAC,YAAY;YACzB,KAAK,CAAC,WAAW;YACjB,KAAK,CAAC,iBAAiB;SACxB,CACF,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,gBAAgB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACtF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC","sourcesContent":["import type { OmitStrict } from '@pega/cosmos-react-core';\n\nimport {\n getGroupKey,\n getGroupFromKey,\n isKanbanTemplate,\n withMemoization,\n compareArray,\n dateFunctionLabels,\n deepCopy,\n isEmpty\n} from '../../../utils/util';\nimport { actionGroupingExpandCollapseAll } from '../../../actions/actions';\nimport { AFTER_FETCH } from '../../../pubSub/events';\nimport type RsInternal from '../../../RsInternal';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\nimport type { MemoizedFunction } from '../../../utils/util.types';\nimport type { Group, GroupFilter, GroupToggle, State } from '../../../../../types/State.types';\nimport {\n REPEATING_STRUCTURE_TEMPLATES,\n type HierarchicalInfo,\n type Meta\n} from '../../../../../types/Meta.types';\nimport GroupGenerator from '../../../generators/GroupGenerator';\nimport type View from '../../../generators/ViewGenerator';\nimport type RsStore from '../../../RsStore';\nimport type {\n ApiOptions,\n GroupedInfo,\n HierarchicalGroupedInfo,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ApiContext\n} from '../../../../../types/ApiContext.types';\n\ntype KanbanLaneInfo = NonNullable<RsStore['kanbanLaneInfo']>;\n\nexport interface CommonGroupingInfo {\n /** Id of the field on which grouping is applied. */\n groupBy: string;\n /** Current group level, starts with 0 for 1st level of grouping. */\n level: number;\n /** Path of the grouped column value. */\n hierarchy: (string | number | boolean | Date)[];\n visibleRow?: boolean;\n showHierarchicalFooter?: boolean;\n groupFrom?: number;\n groupTo?: number;\n isHierarchical?: boolean;\n}\n\nexport type GroupingInfo = OmitStrict<GroupedInfo, 'children'> &\n CommonGroupingInfo & {\n children?: GroupingInfo[];\n };\n\nexport type HierarchicalGroupingInfo = OmitStrict<HierarchicalGroupedInfo, 'children'> &\n CommonGroupingInfo & {\n children?: HierarchicalGroupingInfo[];\n parentId?: string;\n targetId?: string;\n name?: null | string | number | boolean | Date;\n };\n\nfunction isNodeExpanded(\n groupToggle: GroupToggle | undefined,\n node: GroupingInfo | HierarchicalGroupingInfo,\n defaultState: boolean | undefined\n): boolean {\n /** Groups with count 0 should not be expandable. */\n if (node.count === 0) {\n return false;\n }\n\n const index = groupToggle?.[node.groupBy!]?.findIndex(gct => compareArray(gct, node.hierarchy!));\n const childToggleState = index! >= 0 ? !defaultState : !!defaultState;\n return childToggleState === true;\n}\n\nconst getLabel = (view: View, groupBy: string, getState: BeforeRenderFeatureProps['getState']) => {\n const { columnId, dateFunction } = getGroupFromKey(groupBy, getState().groups)!;\n let { label } = view.columns!.find(column => column.field.id.toString() === columnId.toString())!;\n if (dateFunction) {\n label += ` (${dateFunctionLabels[dateFunction]})`;\n }\n return label;\n};\n\n/**\n * Creates a cache key for the Kanban lane group.\n *\n * @param laneGroup - Level-0 group that defines the Kanban lanes.\n * @returns A key that identifies the current lane source.\n */\nfunction getKanbanLaneSourceKey(laneGroup: Group): string {\n return `${getGroupKey(laneGroup)}:${laneGroup.order}`;\n}\n\n/**\n * Builds the complete Kanban lane catalog from text custom grouping.\n *\n * Includes the aggregate ungrouped lane and applies the resolved lane order.\n *\n * @param laneGroup - Level-0 group that may define text custom lanes.\n * @param sourceKey - Cache key for the resulting lane catalog.\n * @returns The custom lane catalog, or `undefined` for non-text grouping.\n */\nfunction getKanbanLaneInfoFromCustomGrouping(\n laneGroup: Group,\n sourceKey: string\n): KanbanLaneInfo | undefined {\n const customGrouping = laneGroup.customFunction;\n // Kanban lanes only support text custom grouping (enforced during meta normalization).\n if (customGrouping?.type !== 'TEXT_GROUPING') return undefined;\n\n const names = customGrouping.groups.map(group => group.label);\n if (customGrouping.ungrouped.mode === 'aggregate') {\n names.push(customGrouping.ungrouped.label);\n }\n\n if (laneGroup.order === 'asc') {\n names.sort((first, second) => first.localeCompare(second));\n } else if (laneGroup.order === 'desc') {\n names.sort((first, second) => second.localeCompare(first));\n }\n\n return {\n sourceKey,\n lanes: names\n };\n}\n\nfunction getApiOptions(rsStore: RsStore): ApiOptions {\n return {\n ...(rsStore.refreshInProgress && {\n invalidateCache: true,\n invalidateCacheToken: rsStore.refreshToken\n })\n };\n}\n\n/**\n * Creates grouping information for a lane with no matching records.\n *\n * @param name - Lane name.\n * @returns Empty grouping information for the lane.\n */\nfunction createEmptyLaneGroup(name: GroupedInfo['name'], laneGroup: Group): GroupingInfo {\n return {\n name,\n count: 0,\n groupBy: getGroupKey(laneGroup),\n level: laneGroup.level,\n hierarchy: name === null ? [] : [name],\n data: {},\n additionalFieldsData: [],\n agg: {},\n children: []\n };\n}\n\n/**\n * Merges the current top-level lane groups with the complete lane catalog.\n *\n * @param groupingInfo - Grouping information returned for the current state.\n * @param laneInfo - Complete lane catalog.\n * @param laneGroup - The level-0 group that defines the Kanban lanes.\n * @returns Top-level lane groups in catalog order.\n */\nfunction mergeKanbanGroupingInfo(\n groupingInfo: GroupedInfo[],\n laneInfo: KanbanLaneInfo,\n laneGroup: Group\n): GroupedInfo[] {\n const laneKey = (value: GroupedInfo['name']) => (value instanceof Date ? value.getTime() : value);\n const groupsByLaneKey = new Map(groupingInfo.map(group => [laneKey(group.name), group]));\n\n return laneInfo.lanes.map(\n name => groupsByLaneKey.get(laneKey(name)) ?? createEmptyLaneGroup(name, laneGroup)\n );\n}\n\n/**\n * Processes grouping information for the active template.\n *\n * For Kanban, merges the grouped result with the matching cached lane catalog.\n * Returns the input unchanged when no matching Kanban lane catalog is available.\n *\n * @param groupingInfo - Grouping information returned for the current state.\n * @param meta - Metadata for the current view.\n * @param groups - Active grouping definitions.\n * @param rsStore - Repeating-structure store containing the lane catalog.\n * @returns Processed grouping information.\n */\nfunction processGroupingInfo(\n groupingInfo: GroupedInfo[],\n meta: Meta,\n groups: State['groups'],\n rsStore: RsStore\n): GroupedInfo[] {\n if (!isKanbanTemplate(meta) || !rsStore.kanbanLaneInfo) return groupingInfo;\n\n const laneGroup = groups?.[0];\n if (!laneGroup || rsStore.kanbanLaneInfo.sourceKey !== getKanbanLaneSourceKey(laneGroup)) {\n return groupingInfo;\n }\n\n return mergeKanbanGroupingInfo(groupingInfo, rsStore.kanbanLaneInfo, laneGroup);\n}\n\n// This function checks if hierarchy exists or not.\n// which will decide whether start and end Index would be there on the leaf node or on the hierarchical node.\nconst doesExistInViewInfo = (\n viewInfo: GroupFilter[],\n hierarchy: (string | number | boolean | Date)[] = [],\n isHierarchical = false\n) => {\n return viewInfo.some(v => {\n const filters = Object.values(v.filters);\n\n if (isHierarchical) {\n return filters.every(value => value === [...hierarchy].pop());\n }\n\n if (filters.length === hierarchy.length) {\n const tempHierarchy = [...hierarchy];\n // eslint-disable-next-line @typescript-eslint/require-array-sort-compare\n tempHierarchy.sort();\n // eslint-disable-next-line @typescript-eslint/require-array-sort-compare\n return filters.sort().every((value, index) => value === tempHierarchy[index]);\n }\n return false;\n });\n};\n\nconst prepareGroupHeaders = (\n props: [\n groupingInfo: RsStore['groupingInfo'],\n groupFilters: RsStore['groupFilters'],\n rsInternal: RsInternal,\n groupToggle?: State['groupToggle'],\n allGroupsExpanded?: boolean\n ]\n) => {\n const [groupingInfo = [], viewInfo = [], rsInternal, groupToggle = {}, allGroupsExpanded] = props;\n\n // If group and viewInfo are empty, prepare group header for top level leaf node.\n // This is for easing on UI , one contract whether grouping is in place/not.\n // TODO: support for enabling feature on view.\n const view = rsInternal.getView();\n const { getState } = rsInternal.getRsStateResolver();\n // Timeline view manages visual collapse independently; rows must always be\n // included in groupFilters so that rows.length stays accurate for infinite-scroll pagination.\n const isTimelineView = view.meta.template === REPEATING_STRUCTURE_TEMPLATES.TIMELINE;\n if (groupingInfo.length === 0) {\n // construct a view header object.\n\n const viewHeader = new GroupGenerator(\n {\n isVisible: false,\n isLeafNode: true,\n isExpanded: true,\n name: '',\n groupBy: '',\n level: 0,\n label: '',\n hierarchy: [],\n count: view.rows!.length\n },\n rsInternal\n );\n viewHeader.startIndex = 0;\n viewHeader.endIndex = view.rows ? view.rows.length : 0;\n view.setProp('groupHeaders', [viewHeader]);\n return;\n }\n // Creating flat objects from view group info using DFT.\n const result = [];\n let counter = 0;\n\n const stack = groupingInfo.map(v => ({ ...v }));\n let leafNodeCountInView = 0;\n let lastDataIndex = 0;\n while (stack.length) {\n const child = stack.shift();\n if (child) {\n const isExpanded = isNodeExpanded(groupToggle, child, allGroupsExpanded);\n const isSubGroupPresent = child.children && child.children.length;\n const label = child.isHierarchical ? '' : getLabel(view, child.groupBy!, getState);\n // construct a view header object.\n const viewHeader = new GroupGenerator(\n {\n isVisible: !!child.visibleRow,\n isLeafNode: !isSubGroupPresent,\n isExpanded,\n name: child.name!,\n groupBy: child.groupBy,\n level: child.level,\n label: label!,\n hierarchy: child.hierarchy,\n count: child.count,\n aggregation: child.agg,\n showHierarchicalFooter: child.showHierarchicalFooter,\n isHierarchical: child.isHierarchical,\n info: 'info' in child ? child.info : undefined,\n data: 'data' in child ? child.data : undefined,\n additionalFieldsData:\n 'additionalFieldsData' in child ? child.additionalFieldsData : undefined\n },\n rsInternal\n );\n // If the header node is a leaf node, then, add start index and endIndex to resolve data.\n if (\n (viewHeader.isLeafNode || viewHeader.isHierarchical) &&\n (viewHeader.isExpanded || isTimelineView) &&\n doesExistInViewInfo(viewInfo, viewHeader.hierarchy, viewHeader.isHierarchical)\n ) {\n const { groupFrom, groupTo } = viewInfo[leafNodeCountInView] || {};\n if (groupFrom >= 0 && groupTo >= 0) {\n viewHeader.startIndex = lastDataIndex;\n viewHeader.endIndex = viewHeader.startIndex + groupTo - groupFrom;\n lastDataIndex = viewHeader.endIndex;\n leafNodeCountInView += 1;\n }\n }\n // BUG-775861 - Adding index to visible groupHeaders so that this can be used to set the z-index for groupHeaders\n if (viewHeader.isVisible) {\n viewHeader.index = counter;\n counter += 1;\n }\n result.push(viewHeader);\n if ((isExpanded || (child.count > 0 && isTimelineView)) && isSubGroupPresent) {\n stack.unshift(...child.children!);\n }\n }\n }\n view.setProp('groupHeaders', result);\n};\n\nfunction includeGroup(\n group: GroupingInfo | HierarchicalGroupingInfo,\n groupFrom: number,\n groupTo: number,\n parentGroups: Record<string, any>,\n groupFilters: GroupFilter[]\n) {\n group.groupFrom = groupFrom;\n group.groupTo = groupTo;\n groupFilters.push({ groupFrom, groupTo, filters: parentGroups });\n}\n\ntype ParentGroups = Parameters<typeof includeGroup>[3];\n\nexport function includeAllLeafGroups(\n group: NonNullable<RsStore['groupingInfo']>,\n parentGroup: ParentGroups,\n groupFilters: GroupFilter[]\n) {\n group.forEach(groupInfo => {\n const parentGroups = { ...parentGroup };\n const currentGroup = groupInfo as GroupingInfo;\n if (currentGroup.groupBy) {\n parentGroups[currentGroup.groupBy] = currentGroup.name;\n }\n\n if (groupInfo.children?.length) {\n includeAllLeafGroups(groupInfo.children, parentGroups, groupFilters);\n } else if (groupInfo.count > 0) {\n includeGroup(groupInfo, 0, groupInfo.count, parentGroups, groupFilters);\n }\n });\n}\n\nfunction getRecordsCount(\n group: NonNullable<RsStore['groupingInfo']>,\n count: number,\n includedRowCount: number,\n parentGroup: Record<string, any>,\n from: number,\n to: number,\n groupFilters: GroupFilter[],\n groupToggle: GroupToggle | undefined,\n allGroupsExpanded: boolean | undefined,\n state: State,\n getView: BeforeRenderFeatureProps['getView']\n): [count: number, includedRowCount: number] {\n const { aggregationInfo } = state;\n // Timeline view manages visual collapse independently; rows must always be\n // included in groupFilters so that rows.length stays accurate for infinite-scroll pagination.\n const isTimelineView = getView().meta.template === REPEATING_STRUCTURE_TEMPLATES.TIMELINE;\n\n for (let i = 0; i < group.length; i += 1) {\n const parentGroups = { ...parentGroup };\n if (group[i].isHierarchical) {\n const currentGroup = group[i] as HierarchicalGroupingInfo;\n parentGroups[currentGroup.parentId!] = currentGroup.info![currentGroup.targetId!];\n } else {\n const currentGroup = group![i] as GroupingInfo;\n parentGroups[currentGroup.groupBy!] = currentGroup.name;\n }\n count += 1;\n // the group has subgroups and a group is expanded\n const isExpanded = isNodeExpanded(groupToggle, group[i], allGroupsExpanded);\n let includeThisGroup = false;\n if (count > from && count - 1 <= to) {\n includeThisGroup = true;\n includedRowCount += 1;\n }\n group[i].visibleRow = includeThisGroup;\n // Footer should be shown only if the node expands.\n // groupToggle will affect footer visibility so reset a footer flag.\n group[i].showHierarchicalFooter = false;\n\n if (group[i].children && (isExpanded || (group[i].count > 0 && isTimelineView))) {\n [count, includedRowCount] = getRecordsCount(\n group[i].children!,\n count,\n includedRowCount,\n parentGroups,\n from,\n to,\n groupFilters,\n groupToggle,\n allGroupsExpanded,\n state,\n getView\n );\n group[i].visibleRow =\n group[i].visibleRow ||\n !!group[i].children!.find(g => g.visibleRow && (g.isHierarchical || !g.children));\n } else if (!group[i].children && (isExpanded || (group[i].count > 0 && isTimelineView))) {\n // the group doesn't have subgroups and the group is expanded\n const innerCount = count + group[i].count;\n if (count <= to) {\n let groupFrom = 0;\n let groupTo = 0;\n if (innerCount >= from) {\n groupFrom = Math.max(from - count, 0);\n if (innerCount <= to + 1) {\n groupTo = group[i].count;\n } else {\n groupTo = groupFrom + (to + 1 - from - includedRowCount);\n }\n group[i].visibleRow = true;\n let updatedGroupFrom = groupFrom;\n // Sticky group header logic\n if (!includeThisGroup && groupTo > groupFrom + 2) {\n if (group[i].level! >= 1) {\n updatedGroupFrom = groupFrom + 2;\n } else {\n updatedGroupFrom = groupFrom + 1;\n }\n }\n includeGroup(group[i], updatedGroupFrom, groupTo, parentGroups, groupFilters);\n }\n includedRowCount += groupTo - groupFrom;\n }\n count = innerCount;\n }\n\n if (group[i].isHierarchical && aggregationInfo && aggregationInfo.length > 0 && isExpanded) {\n count += 1;\n group[i].showHierarchicalFooter = true;\n\n if (group[i].visibleRow && includedRowCount <= to) {\n includedRowCount += 1;\n }\n }\n }\n return [count, includedRowCount];\n}\n\nconst constructGroupingPagination = (\n groupingInfo: NonNullable<RsStore['groupingInfo']>,\n groupToggle: GroupToggle | undefined,\n paginationOptions:\n | NonNullable<State['paginationOptions']>[keyof NonNullable<State['paginationOptions']>]\n | undefined,\n allGroupsExpanded: boolean | undefined,\n state: State,\n getView: BeforeRenderFeatureProps['getView']\n) => {\n const groupFilters: GroupFilter[] = [];\n if (!paginationOptions) {\n includeAllLeafGroups(groupingInfo, {}, groupFilters);\n } else {\n getRecordsCount(\n groupingInfo,\n 0,\n 0,\n {},\n paginationOptions.startIndex,\n paginationOptions.endIndex,\n groupFilters,\n groupToggle,\n allGroupsExpanded,\n state,\n getView\n );\n }\n return groupFilters;\n};\n\n// This is basically used to update count on non-leaf node.\n// which is the sum of count of leaf node children in their hierarchy.\nfunction updateCountOnNonLeafNode(groupingInfo: GroupedInfo[]) {\n const updateCount = (child: GroupedInfo) => {\n if (child.count !== undefined) return child.count;\n child.count = child.children!.reduce((acc, c) => {\n acc += updateCount(c)!;\n return acc;\n }, 0);\n };\n groupingInfo.forEach(g => updateCount(g));\n}\n\nfunction updateGroupInfo(groupingInfo: GroupedInfo[], groups: Group[]): GroupingInfo[] {\n // iterate groupingInfo using BFS and update basic information.\n const queue = [...groupingInfo] as GroupingInfo[];\n while (queue.length) {\n const child = queue.pop();\n if (child) {\n if (!child.hierarchy) child.hierarchy = [child.name!];\n child.level = child.level || 0;\n const matchingGroup = groups.find(g => g.level === child.level);\n child.groupBy = getGroupKey(matchingGroup!);\n\n if (child.children) {\n // update level before pushing children to queue.\n child.children.forEach(c => {\n c.level = child.level + 1;\n c.hierarchy = [...child.hierarchy];\n c.hierarchy.push(c.name!);\n });\n queue.push(...child.children);\n }\n }\n }\n return groupingInfo as GroupingInfo[];\n}\n\nfunction updateCountFromGroupingInfo(\n getView: BeforeRenderFeatureProps['getView'],\n getRsStore: BeforeRenderFeatureProps['getRsStore']\n) {\n if (getView().countGeneratedInternally || isEmpty(getView().resultsCount)) {\n const countFromGroupingInfo = getRsStore().groupingInfo?.reduce(\n (acc, group) => (group.count ? acc + group.count : acc),\n 0\n );\n\n const countPayload = { count: countFromGroupingInfo, _countGeneratedInternally: true };\n getView().type.setRecordCount(countPayload);\n }\n}\n\nasync function onGroupsChange([{ getRsProps, getRsStore, getView, getState }]: [\n featureProps: BeforeRenderFeatureProps\n]) {\n const rsStore = getRsStore();\n const rsProps = getRsProps();\n const state = getState();\n const { groups } = state;\n const meta = getView().meta;\n\n if (groups && groups.length > 0 && meta.grouping) {\n try {\n const groupingInfo =\n (await rsProps.apiContext.fetchGroupedInfo?.(deepCopy(state), meta, {\n ...(getRsStore().refreshInProgress && {\n invalidateCache: true,\n invalidateCacheToken: getRsStore().refreshToken\n })\n })) || [];\n const processedGroupingInfo = processGroupingInfo(groupingInfo, meta, groups, rsStore);\n\n // Here update group info with basic properties like level, group by, expand state etc.\n // to make calculation easy.\n // TODO: FIXME - Check if count on non leaf node is required\n updateCountOnNonLeafNode(processedGroupingInfo);\n rsStore.groupingInfo = updateGroupInfo(processedGroupingInfo, groups);\n\n // FIXME: once infinite virtualizer supports the grouping, we need not compute the count from grouping\n // Prepare the count from the groups count until the actual count returns\n updateCountFromGroupingInfo(getView, getRsStore);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('API call failed', err);\n }\n } else rsStore.groupingInfo = [];\n\n getView().columns!.forEach(column => {\n const grouped = groups?.findIndex(group => group.columnId === column.field.id)! >= 0;\n column = column.setProp('grouped', grouped);\n });\n}\n\n/**\n * Loads the complete Kanban lane catalog before grouped data is processed.\n *\n * @param featureProps - Dependencies for the grouping feature.\n * @returns A promise that resolves after the lane information is stored.\n */\nasync function loadKanbanLaneInfo([featureProps]: [featureProps: BeforeRenderFeatureProps]) {\n const { getRsProps, getRsStore, getState, getView } = featureProps;\n const meta = getView().meta;\n if (!isKanbanTemplate(meta)) return;\n\n const state = getState();\n // Wait for state hydration to add the level-0 lane group.\n const groups = state.groups ?? [];\n const laneGroup = groups[0];\n if (!laneGroup) return;\n\n try {\n const rsStore = getRsStore();\n const sourceKey = getKanbanLaneSourceKey(laneGroup);\n const customLaneInfo = getKanbanLaneInfoFromCustomGrouping(laneGroup, sourceKey);\n\n // Custom text grouping defines the complete lanes within the grouping definition.\n if (customLaneInfo) {\n rsStore.kanbanLaneInfo = customLaneInfo;\n return;\n }\n\n // Reuse the catalog unless a force refresh needs the latest lane domain.\n if (rsStore.kanbanLaneInfo?.sourceKey === sourceKey && !rsStore.refreshInProgress) return;\n\n // Fetch and cache the complete default lane catalog.\n const laneField = laneGroup.columnId;\n const values = laneField\n ? (await getRsProps().apiContext.fetchUniqueColValues?.(\n deepCopy({\n ...state,\n filterExpression: undefined,\n groups: undefined,\n search: undefined\n }),\n meta,\n laneField,\n getApiOptions(rsStore)\n )) ?? []\n : [];\n rsStore.kanbanLaneInfo = {\n sourceKey,\n lanes: values\n };\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('API call failed', err);\n }\n}\n\nfunction autoExpandGroups([{ dispatch, getState }]: [featureProps: BeforeRenderFeatureProps]) {\n const { allGroupsExpanded = true } = getState();\n dispatch(actionGroupingExpandCollapseAll(allGroupsExpanded));\n}\n\nfunction updateHierarchicalGroupInfo(\n groupingInfo: HierarchicalGroupedInfo[],\n hierarchicalGroup: HierarchicalInfo\n) {\n const queue = [...groupingInfo] as HierarchicalGroupingInfo[];\n\n while (queue.length) {\n const child = queue.pop();\n const node = child!.info;\n\n if (child) {\n child.level = child.level || 0;\n child.isHierarchical = true;\n child.parentId = hierarchicalGroup.parentId;\n child.targetId = hierarchicalGroup.targetId;\n child.groupBy = (hierarchicalGroup.sortById || hierarchicalGroup.targetId)!;\n\n if (node) {\n child.name = node[(hierarchicalGroup.sortById || hierarchicalGroup.targetId)!] as string;\n child.hierarchy = [node[hierarchicalGroup.targetId!] as string];\n }\n\n if (child.children) {\n // update level before pushing children to queue.\n child.children.forEach(c => {\n c.level = child.level! + 1;\n });\n queue.push(...child.children);\n }\n }\n }\n}\n\nasync function onHierarchicalGroupChange([{ getState, getRsProps, getRsStore, getView }]: [\n featureProps: BeforeRenderFeatureProps\n]) {\n const { hierarchicalGroup } = getState();\n const rsProps = getRsProps();\n const rsStore = getRsStore();\n if (hierarchicalGroup && hierarchicalGroup.parentId) {\n try {\n const groupingInfo =\n (await rsProps.apiContext.fetchHierarchicalGroupedInfo?.(\n deepCopy(getState()),\n getView().meta,\n {\n ...(getRsStore().refreshInProgress && {\n invalidateCache: true,\n invalidateCacheToken: getRsStore().refreshToken\n })\n }\n )) || [];\n\n getView().setProp('hierarchicalGroupEnabled', true);\n\n updateHierarchicalGroupInfo(groupingInfo, hierarchicalGroup);\n rsStore.groupingInfo = groupingInfo as HierarchicalGroupingInfo[];\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('API call failed', err);\n }\n } else {\n getView().setProp('hierarchicalGroupEnabled', false);\n }\n}\n\nconst getTotalItemCount = (\n getView: BeforeRenderFeatureProps['getView'],\n state: State,\n groupingInfo: NonNullable<RsStore['groupingInfo']>\n) => {\n // Calculate total group count and update instance.\n // and datanode count based on group expand state.\n let totalItemCount = 0;\n const stack = [...groupingInfo];\n const { groupToggle, allGroupsExpanded } = state;\n\n while (stack.length) {\n const child = stack.shift();\n // We are considering header count whether if it is of a hierarchical node or\n // a normal group node, and it has data associated with it in its hierarchy.\n if (child) {\n totalItemCount += 1;\n const isSubGroupPresent = child.children && child.children.length;\n const isExpanded = isNodeExpanded(groupToggle, child, allGroupsExpanded);\n if (isExpanded && isSubGroupPresent) {\n stack.unshift(...child.children!);\n } else if (isExpanded && !isSubGroupPresent) {\n totalItemCount += child.count;\n }\n\n if (child.showHierarchicalFooter) {\n totalItemCount += 1;\n }\n }\n }\n return totalItemCount;\n};\n\nconst updateGroupFilters = ([{ getState, getRsStore, getView }]: [\n featureProps: BeforeRenderFeatureProps\n]) => {\n const { paginationOptions, groupToggle, allGroupsExpanded } = getState();\n // Kanban does not have paginationOptions. It should build all the groupFilters.\n // For other templates, if paginationOptions is not present, then we should not build groupFilters.\n if (!paginationOptions && getView().meta.template !== REPEATING_STRUCTURE_TEMPLATES.KANBAN)\n return;\n const rsStore = getRsStore();\n const { groupingInfo } = rsStore;\n // group info is expected to be [] when there are no groups.\n if (groupingInfo) {\n if (!groupingInfo.length && rsStore.groupFilters && !rsStore.groupFilters.length) return;\n rsStore.groupFilters = constructGroupingPagination(\n groupingInfo,\n groupToggle,\n paginationOptions?.rootVirtualiser,\n allGroupsExpanded,\n getState(),\n getView\n );\n }\n};\n\nfunction postFetch(\n rsInternal: RsInternal,\n memoizedPrepareGroupHeaders: MemoizedFunction<\n [\n groupingInfo: RsStore['groupingInfo'],\n groupFilters: RsStore['groupFilters'],\n rsInternal: RsInternal,\n groupToggle?: State['groupToggle'],\n allGroupsExpanded?: State['allGroupsExpanded']\n ],\n ReturnType<typeof prepareGroupHeaders>\n >\n) {\n const { getRsStore, getView, getRsStateResolver } = rsInternal;\n const rsStore = getRsStore();\n const { getState } = getRsStateResolver();\n if (!rsStore.groupingInfo || !rsStore.groupingInfo.length) {\n // As we are giving ways to always use header, though grouping is not in place\n // update total item count given by API.\n getView().setProp('totalItemCount', getView().resultsCount);\n memoizedPrepareGroupHeaders([[], [], rsInternal], [getView().rows!.length]);\n } else {\n // As our group headers are representing data in UI, so\n // like data after every fetch group headers should also change so that\n // UI get to know about the latest group.\n getView().setProp(\n 'totalItemCount',\n getTotalItemCount(getView, getState(), rsStore.groupingInfo)\n );\n memoizedPrepareGroupHeaders([\n rsStore.groupingInfo,\n rsStore.groupFilters,\n rsInternal,\n getState().groupToggle,\n getState().allGroupsExpanded\n ]);\n }\n}\n\n// TODO: Need to make changes in grouping to support 0 based indexing inclusive start and end index.\n/**\n * Handles the grouping feature for repeating structures.\n *\n * This method performs the following tasks:\n * - Fetches the grouping information, either via {@link ApiContext.fetchGroupedInfo} or {@link ApiContext.fetchHierarchicalGroupedInfo}, and stores the result in {@link RsStore.groupingInfo}.\n * - Prepares group filters based on the grouping information, then sets these filters in {@link RsStore.groupFilters}.\n * - Manages the automatic expansion of groups.\n * - Prepares group headers from the fetched grouping information and sets them in {@link View.groupHeaders}.\n */\nexport default (rsInternal: RsInternal) => {\n const memoizedOnGroupsChange = withMemoization(onGroupsChange);\n const memoizedLoadKanbanLaneInfo = withMemoization(loadKanbanLaneInfo);\n const memorizeOnHierarchicalGroupChange = withMemoization(onHierarchicalGroupChange);\n const memoizedUpdateGroupFilters = withMemoization(updateGroupFilters);\n const memoizedAutoExpandGroups = withMemoization(autoExpandGroups);\n\n // Prepare a group header even though groups are not present to have one flow.\n // depend on after fetch event as it depends on data when no grouping is there.\n rsInternal\n .getPubSubUtils()\n .subscribe(AFTER_FETCH, () => postFetch(rsInternal, withMemoization(prepareGroupHeaders)));\n\n async function execute(featureProps: BeforeRenderFeatureProps) {\n const { getState, getRsStore } = featureProps;\n const state = getState();\n\n await memoizedLoadKanbanLaneInfo([featureProps], [state.groups, state.refresh]);\n\n // TOdo: Fixme ISSUE-76344... try to not rely on state.personalization?.active\n await memoizedOnGroupsChange(\n [featureProps],\n [\n state.groups,\n state.filterExpression,\n state.search?.query,\n state.personalization?.active,\n state.refresh,\n state.aggregationInfo,\n state.visibleColumns\n ]\n );\n\n memoizedAutoExpandGroups([featureProps], [state.personalization?.active]);\n\n await memorizeOnHierarchicalGroupChange(\n [featureProps],\n [\n state.hierarchicalGroup,\n state.filterExpression,\n state.search?.query,\n state.aggregationInfo,\n state.personalization?.active\n ]\n );\n // In the new grouping, update group info in state.\n // Action dispatched for group info will prepare group headers.\n // TODO: use this comparator for optimization but isVisible calculated prop on grouping info needs to be handled.ISSUE-80012\n // const comparator =(prev, next) => {\n // if (prev[1] !== next[1] || prev[3] !== next[3]) return false;\n // return compareArray(prev[2], next[2], ['children', 'count', 'name']);\n // };\n memoizedUpdateGroupFilters(\n [featureProps],\n [\n state.paginationOptions?.[Object.keys(state.paginationOptions || {})[0]],\n getRsStore().groupingInfo,\n state.groupToggle,\n state.allGroupsExpanded\n ]\n );\n }\n\n if (rsInternal.getView().meta.grouping || isKanbanTemplate(rsInternal.getView().meta)) {\n return execute;\n }\n\n return undefined;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/features/uIFeatures/index.ts"],"names":[],"mappings":"AAsCA,OAAO,WAAW,MAAM,4BAA4B,CAAC;;;4EAFnD,kEAAsC;6BApBnC,kEAAsC;6BAuE41G,kEAAsC;uBARv6G,kEAEM;;0BA3DwC,kEAChB;;uBAYF,kEACR;6BAmDwrC,kEAAsC;;4BAzDpsC,kEACpC;8BAwD4wM,kEAAsC;kCAzB9zM,kEAEH;6BAvCgC,kEAChB;2BAGgB,kEAC5B;2EAyDu0D,kEAAsC;yCA9Cn2D,kEAEG;+BA4Cq3L,kEAAsC;4BAnD34L,kEACd;kCAkD00U,kEAAsC;;6EAA1xM,kEAAsC;gCA7D9mI,kEACpB;kCAR2C,kEAC1C;4BAmEmF,kEAAsC;kCAlEjH,kEAAsC;sCAQ/B,kEAC7B;+BADwD,kEAC5B;0EAyDg1P,kEAAsC;wEAA78I,kEAAsC;4BAA13F,kEAAsC;6BA5E1lB,kEAC5B;sEAwBU,kEACd;2BAkDsF,kEAAsC;4BA7DnI,kEACpB;;uCA4D86B,kEAAsC;;;0BAAqtD,sDAA0B;iCAAmjB,sDAA0B;yCA3D1uG,sDAC5B;;;AAYb,wBA6CE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/features/uIFeatures/index.ts"],"names":[],"mappings":"AAsCA,OAAO,WAAW,MAAM,4BAA4B,CAAC;;;4EAFnD,kEAAsC;6BApBnC,kEAAsC;6BAuE41G,kEAAsC;uBARv6G,kEAEM;;0BA3DwC,kEAChB;;uBAYF,kEACR;6BAmDwrC,kEAAsC;;4BAzDpsC,kEACpC;8BAwD4wM,kEAAsC;kCAzB9zM,kEAEH;6BAvCgC,kEAChB;2BAGgB,kEAC5B;2EAyD0wE,kEAAsC;yCA9CtyE,kEAEG;+BA4Cq3L,kEAAsC;4BAnD34L,kEACd;kCAkD00U,kEAAsC;;6EAA1xM,kEAAsC;gCA7D9mI,kEACpB;kCAR2C,kEAC1C;4BAmEmF,kEAAsC;kCAlEjH,kEAAsC;sCAQ/B,kEAC7B;+BADwD,kEAC5B;0EAyDg1P,kEAAsC;wEAA78I,kEAAsC;4BAA13F,kEAAsC;6BA5E1lB,kEAC5B;sEAwBU,kEACd;2BAkDsF,kEAAsC;4BA7DnI,kEACpB;;uCA4D86B,kEAAsC;;;0BAAqtD,sDAA0B;iCAAmjB,sDAA0B;yCA3D1uG,sDAC5B;;;AAYb,wBA6CE"}
@@ -137,10 +137,6 @@ export default class Column {
137
137
  * Sets the showTooltip flag for the current column.
138
138
  */
139
139
  set showTooltip(showTooltip: boolean);
140
- /**
141
- * Retrieves the distinct values for this column using {@link ApiContext.fetchUniqueColValues fetchUniqueColValues}.
142
- */
143
- getUniqueValues(): Promise<(string | number | boolean | Date)[]>;
144
140
  /**
145
141
  * Returns the formatters available for the current column from
146
142
  * {@link RsProps.renderFormatterTypeMap renderFormatterTypeMap} based on its {@link FieldDef.type type}
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnGenerator.d.ts","sourceRoot":"","sources":["../../../../src/core/generators/ColumnGenerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ColumnGenerator.d.ts","sourceRoot":"","sources":["../../../../src/core/generators/ColumnGenerator.ts"],"names":[],"mappings":"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"}
@@ -179,7 +179,6 @@ export default class Column {
179
179
  /** IMP: For generator methods use traditional function syntax
180
180
  * rather than arrow function for memory efficiency
181
181
  * and bind 'this' to the methods which requires 'this' context. */
182
- this.getUniqueValues = this.getUniqueValues.bind(this);
183
182
  this.getRenderFormatters = this.getRenderFormatters.bind(this);
184
183
  this.getSortProperties = this.getSortProperties.bind(this);
185
184
  this.getFilterProperties = this.getFilterProperties.bind(this);
@@ -276,17 +275,6 @@ export default class Column {
276
275
  set showTooltip(showTooltip) {
277
276
  this.#showToolTip = showTooltip;
278
277
  }
279
- /**
280
- * Retrieves the distinct values for this column using {@link ApiContext.fetchUniqueColValues fetchUniqueColValues}.
281
- */
282
- async getUniqueValues() {
283
- return (this.#rsProps.apiContext.fetchUniqueColValues?.(this.parent.state, this.parent.meta, this.field.id, {
284
- ...(this.#rsStore.refreshInProgress && {
285
- invalidateCache: true,
286
- invalidateCacheToken: this.#rsStore.refreshToken
287
- })
288
- }) || Promise.resolve([]));
289
- }
290
278
  /**
291
279
  * Returns the formatters available for the current column from
292
280
  * {@link RsProps.renderFormatterTypeMap renderFormatterTypeMap} based on its {@link FieldDef.type type}