@pega/lists-core 10.0.0-build.4.2 → 10.0.0-build.4.21

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 (78) hide show
  1. package/lib/src/core/RsStore.d.ts +10 -0
  2. package/lib/src/core/RsStore.d.ts.map +1 -1
  3. package/lib/src/core/RsStore.js +2 -0
  4. package/lib/src/core/RsStore.js.map +1 -1
  5. package/lib/src/core/StateResolver.js +1 -1
  6. package/lib/src/core/StateResolver.js.map +1 -1
  7. package/lib/src/core/actions/actions.d.ts +1 -1
  8. package/lib/src/core/actions/actions.d.ts.map +1 -1
  9. package/lib/src/core/actions/actions.js +3 -3
  10. package/lib/src/core/actions/actions.js.map +1 -1
  11. package/lib/src/core/actions/actions.types.d.ts +1 -1
  12. package/lib/src/core/actions/actions.types.d.ts.map +1 -1
  13. package/lib/src/core/constants.d.ts +1 -0
  14. package/lib/src/core/constants.d.ts.map +1 -1
  15. package/lib/src/core/constants.js +1 -0
  16. package/lib/src/core/constants.js.map +1 -1
  17. package/lib/src/core/features/uIFeatures/afterRender/animation.d.ts +1 -1
  18. package/lib/src/core/features/uIFeatures/afterRender/animation.js +2 -2
  19. package/lib/src/core/features/uIFeatures/afterRender/animation.js.map +1 -1
  20. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.d.ts +2 -2
  21. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.d.ts.map +1 -1
  22. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.js +5 -5
  23. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.js.map +1 -1
  24. package/lib/src/core/features/uIFeatures/afterRender/customizeParentContainer/index.d.ts +1 -1
  25. package/lib/src/core/features/uIFeatures/afterRender/customizeParentContainer/index.js +1 -1
  26. package/lib/src/core/features/uIFeatures/afterRender/customizeParentContainer/index.js.map +1 -1
  27. package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.js +2 -2
  28. package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.js.map +1 -1
  29. package/lib/src/core/features/uIFeatures/beforeRender/customColumn.d.ts.map +1 -1
  30. package/lib/src/core/features/uIFeatures/beforeRender/customColumn.js +2 -1
  31. package/lib/src/core/features/uIFeatures/beforeRender/customColumn.js.map +1 -1
  32. package/lib/src/core/features/uIFeatures/beforeRender/grouping.d.ts +5 -0
  33. package/lib/src/core/features/uIFeatures/beforeRender/grouping.d.ts.map +1 -1
  34. package/lib/src/core/features/uIFeatures/beforeRender/grouping.js +195 -23
  35. package/lib/src/core/features/uIFeatures/beforeRender/grouping.js.map +1 -1
  36. package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.d.ts.map +1 -1
  37. package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.js +9 -2
  38. package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.js.map +1 -1
  39. package/lib/src/core/features/uIFeatures/beforeRender/stateSanitization.d.ts.map +1 -1
  40. package/lib/src/core/features/uIFeatures/beforeRender/stateSanitization.js +21 -15
  41. package/lib/src/core/features/uIFeatures/beforeRender/stateSanitization.js.map +1 -1
  42. package/lib/src/core/features/uIFeatures/index.d.ts.map +1 -1
  43. package/lib/src/core/generators/ViewGenerator.d.ts.map +1 -1
  44. package/lib/src/core/generators/ViewGenerator.js +4 -3
  45. package/lib/src/core/generators/ViewGenerator.js.map +1 -1
  46. package/lib/src/core/generators/ViewGenerator.types.d.ts +2 -0
  47. package/lib/src/core/generators/ViewGenerator.types.d.ts.map +1 -1
  48. package/lib/src/core/generators/ViewGenerator.types.js.map +1 -1
  49. package/lib/src/core/reducers/error.d.ts.map +1 -1
  50. package/lib/src/core/reducers/index.d.ts.map +1 -1
  51. package/lib/src/core/reducers/personalizationDirtyReducer.d.ts.map +1 -1
  52. package/lib/src/core/reducers/personalizationDirtyReducer.js +18 -3
  53. package/lib/src/core/reducers/personalizationDirtyReducer.js.map +1 -1
  54. package/lib/src/core/reducers/personalizationReducer.d.ts +1 -1
  55. package/lib/src/core/reducers/visibility.d.ts.map +1 -1
  56. package/lib/src/core/reducers/visibility.js +5 -3
  57. package/lib/src/core/reducers/visibility.js.map +1 -1
  58. package/lib/src/core/utils/util.d.ts +22 -5
  59. package/lib/src/core/utils/util.d.ts.map +1 -1
  60. package/lib/src/core/utils/util.js +75 -18
  61. package/lib/src/core/utils/util.js.map +1 -1
  62. package/lib/types/ApiContext.types.d.ts +8 -4
  63. package/lib/types/ApiContext.types.d.ts.map +1 -1
  64. package/lib/types/ApiContext.types.js +2 -1
  65. package/lib/types/ApiContext.types.js.map +1 -1
  66. package/lib/types/Meta.types.d.ts +123 -64
  67. package/lib/types/Meta.types.d.ts.map +1 -1
  68. package/lib/types/Meta.types.js +2 -1
  69. package/lib/types/Meta.types.js.map +1 -1
  70. package/lib/types/RsCoreBootArgs.types.d.ts +1 -1
  71. package/lib/types/RsCoreBootArgs.types.js.map +1 -1
  72. package/lib/types/State.types.d.ts +2 -1
  73. package/lib/types/State.types.d.ts.map +1 -1
  74. package/lib/types/State.types.js.map +1 -1
  75. package/lib/types.d.ts +2 -1
  76. package/lib/types.d.ts.map +1 -1
  77. package/lib/types.js.map +1 -1
  78. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"animation.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/afterRender/animation.ts"],"names":[],"mappings":"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","sourcesContent":["import { isInstance } from '@pega/cosmos-react-core';\n\nimport type { State } from '../../../../../types/State.types';\nimport { withMemoization } from '../../../utils/util';\nimport type { FeatureProps } from '../../featureFactory';\n// Used in JsDoc.\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type RsStore from '../../../RsStore';\n\n/**\n * Triggers animation on a {@link domNode} in X and Y direction by {@link deltaX} and {@link deltaY} respectively.\n * @param domNode - Dom node on which animation should be triggered.\n * @param deltaX - Range of movement on X axis.\n * @param deltaY - Range of movement on Y axis\n * @returns void\n */\nfunction animate(domNode: HTMLElement, deltaX = 150, deltaY = 150) {\n if (!domNode) return;\n if (deltaY || deltaX) {\n requestAnimationFrame(() => {\n // Ensure that it inverts immediately\n domNode.style.transition = 'transform 0s';\n // Before the DOM paints, Invert it to its old\n domNode.style.transform = `translate3d(${deltaX}px, ${deltaY}px, 0)`;\n\n requestAnimationFrame(() => {\n domNode.style.removeProperty('transform');\n domNode.style.removeProperty('transition');\n });\n });\n }\n}\n\n/**\n * Triggers column animation.\n * @param featureProps - A tuple containing an object of feature props.\n * @returns void\n */\nconst rowAnimation = ([{ getState, getView, getRsStore }]: [featureProps: FeatureProps]) => {\n const { featuresToAvoid } = getState();\n const rsStore = getRsStore();\n let avoidRowAnimation = false;\n if (featuresToAvoid?.includes('rowAnimation')) {\n avoidRowAnimation = true;\n }\n // Row animation\n if (!avoidRowAnimation && rsStore.oldBoundingBox?.size) {\n const pNode = getView().getDomContainer();\n const rowContainer = pNode?.querySelector('.row-container'); // row container should wrap all the rows.\n\n // Calculate the bounding box\n const newBoundingBox = new Map();\n rowContainer?.childNodes.forEach(n => {\n if (\n n.nodeType === Node.ELEMENT_NODE &&\n isInstance(n, Element) &&\n n.hasAttribute?.('data-key')\n )\n newBoundingBox.set(n.getAttribute('data-key'), n.getBoundingClientRect());\n });\n\n for (const [key, value] of newBoundingBox) {\n const rowNode = rowContainer?.querySelector<HTMLElement>(`[data-key='${CSS.escape(key)}']`);\n if (rsStore.oldBoundingBox.has(key)) {\n // Those elements that were in the dom earlier as well\n const deltaY = rsStore.oldBoundingBox.get(key)!.top - value.top;\n const deltaX = rsStore.oldBoundingBox.get(key)!.left - value.left;\n animate(rowNode!, deltaX, deltaY);\n } else {\n // Those elements that came in now\n animate(rowNode!, 0);\n }\n }\n rsStore.oldBoundingBox = null;\n }\n};\n\n/**\n * Evaluates if column animation needs to be skipped based on {@link State.featuresToAvoid}\n * @param featuresToAvoid\n * @returns boolean - true if columnAnimation should be skipped otherwise false.\n */\nfunction avoidColumnAnimation(featuresToAvoid: State['featuresToAvoid']) {\n return featuresToAvoid?.includes('columnAnimation');\n}\n/**\n * Triggers column animation.\n * @param featureProps - A tuple containing an object of feature props.\n * @returns void\n */\nconst columnAnimation = ([{ getState, getView, getRsStore }]: [featureProps: FeatureProps]) => {\n const { featuresToAvoid } = getState();\n const rsStore = getRsStore();\n\n if (rsStore.skipColumnAnimationOnNextRun) {\n rsStore.skipColumnAnimationOnNextRun = false;\n return;\n }\n\n // Column animation\n if (!avoidColumnAnimation(featuresToAvoid) && rsStore.oldColumnBoundingBox?.size) {\n const pNode = getView().getDomContainer();\n\n // Calculate the bounding box\n const newColBoundingBox = new Map<string, DOMRect>();\n if (getView().getItemElement()) {\n getView()\n .getItemElement()!\n .childNodes.forEach(cell => {\n if (\n cell.nodeType === Node.ELEMENT_NODE &&\n isInstance(cell, Element) &&\n cell.hasAttribute?.('data-col-id')\n ) {\n newColBoundingBox.set(cell.getAttribute('data-col-id')!, cell.getBoundingClientRect());\n }\n });\n }\n const visibleColumns = getView().getVisibleColumns();\n rsStore.oldColumnBoundingBox.forEach((value, key) => {\n if (newColBoundingBox.has(key)) {\n const deltaX = value.left - newColBoundingBox.get(key)!.left;\n const domNodes = pNode?.querySelectorAll<HTMLElement>(`[data-col-id='${key}']`);\n if (deltaX) {\n // FIXME: skipping animation on the last column because in case a record is added like in embedded tables, a vertical scrollbar appears momentarily which shifts the last column to left and this triggers unnecessary animation on last column.\n const currentColumn = visibleColumns.find(col => col.field.id === key);\n if (currentColumn?.isLastColumn) {\n return;\n }\n domNodes?.forEach(domNode => {\n animate(domNode, deltaX, 0);\n });\n }\n }\n });\n rsStore.oldColumnBoundingBox = null;\n }\n};\n\n/**\n * Handles animations for rows and columns\n * The animations are triggered based on changes to specific state properties:\n *\n * ### Row Animation Triggers\n * - {@link State.filterExpression}\n * - search text\n * - {@link State.sortingOrder}\n * - {@link State.groups}\n * - {@link State.refresh}\n * - {@link State.selectedHeightOption}\n *\n * ### Column Animation Triggers\n * - {@link State.freezeColumns}\n * - {@link State.colOrder}\n * - {@link State.hiddenColumns}\n * - {@link State.columnWidths}\n * - {@link State.refresh}\n * - {@link RsStore.skipColumnAnimationOnNextRun}\n */\nexport default () => {\n const memoizedRowAnimation = withMemoization(rowAnimation);\n const memoizedColumnAnimation = withMemoization(columnAnimation);\n\n return function execute(featureProps: FeatureProps) {\n const state = featureProps.getState();\n memoizedRowAnimation(\n [featureProps],\n [\n state.filterExpression,\n // @ts-expect-error Property 'searchText' does not exist on type 'State' but exists on view.state\n state.searchText,\n state.sortingOrder,\n state.groups,\n state.refresh,\n state.selectedHeightOption\n ]\n );\n memoizedColumnAnimation(\n [featureProps],\n [\n state.freezeColumns,\n state.colOrder,\n state.hiddenColumns,\n state.columnWidths,\n state.refresh,\n featureProps.getRsStore().skipColumnAnimationOnNextRun\n ]\n );\n };\n};\n"]}
1
+ {"version":3,"file":"animation.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/afterRender/animation.ts"],"names":[],"mappings":"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","sourcesContent":["import { isInstance } from '@pega/cosmos-react-core';\n\nimport type { State } from '../../../../../types/State.types';\nimport { withMemoization } from '../../../utils/util';\nimport type { FeatureProps } from '../../featureFactory';\n// Used in JsDoc.\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type RsStore from '../../../RsStore';\n\n/**\n * Triggers animation on a {@link domNode} in X and Y direction by {@link deltaX} and {@link deltaY} respectively.\n * @param domNode - Dom node on which animation should be triggered.\n * @param deltaX - Range of movement on X axis.\n * @param deltaY - Range of movement on Y axis\n * @returns void\n */\nfunction animate(domNode: HTMLElement, deltaX = 150, deltaY = 150) {\n if (!domNode) return;\n if (deltaY || deltaX) {\n requestAnimationFrame(() => {\n // Ensure that it inverts immediately\n domNode.style.transition = 'transform 0s';\n // Before the DOM paints, Invert it to its old\n domNode.style.transform = `translate3d(${deltaX}px, ${deltaY}px, 0)`;\n\n requestAnimationFrame(() => {\n domNode.style.removeProperty('transform');\n domNode.style.removeProperty('transition');\n });\n });\n }\n}\n\n/**\n * Triggers column animation.\n * @param featureProps - A tuple containing an object of feature props.\n * @returns void\n */\nconst rowAnimation = ([{ getState, getView, getRsStore }]: [featureProps: FeatureProps]) => {\n const { featuresToAvoid } = getState();\n const rsStore = getRsStore();\n let avoidRowAnimation = false;\n if (featuresToAvoid?.includes('rowAnimation')) {\n avoidRowAnimation = true;\n }\n // Row animation\n if (!avoidRowAnimation && rsStore.oldBoundingBox?.size) {\n const pNode = getView().getDomContainer();\n const rowContainer = pNode?.querySelector('.row-container'); // row container should wrap all the rows.\n\n // Calculate the bounding box\n const newBoundingBox = new Map();\n rowContainer?.childNodes.forEach(n => {\n if (\n n.nodeType === Node.ELEMENT_NODE &&\n isInstance(n, Element) &&\n n.hasAttribute?.('data-key')\n )\n newBoundingBox.set(n.getAttribute('data-key'), n.getBoundingClientRect());\n });\n\n for (const [key, value] of newBoundingBox) {\n const rowNode = rowContainer?.querySelector<HTMLElement>(`[data-key='${CSS.escape(key)}']`);\n if (rsStore.oldBoundingBox.has(key)) {\n // Those elements that were in the dom earlier as well\n const deltaY = rsStore.oldBoundingBox.get(key)!.top - value.top;\n const deltaX = rsStore.oldBoundingBox.get(key)!.left - value.left;\n animate(rowNode!, deltaX, deltaY);\n } else {\n // Those elements that came in now\n animate(rowNode!, 0);\n }\n }\n rsStore.oldBoundingBox = null;\n }\n};\n\n/**\n * Evaluates if column animation needs to be skipped based on {@link State.featuresToAvoid}\n * @param featuresToAvoid\n * @returns boolean - true if columnAnimation should be skipped otherwise false.\n */\nfunction avoidColumnAnimation(featuresToAvoid: State['featuresToAvoid']) {\n return featuresToAvoid?.includes('columnAnimation');\n}\n/**\n * Triggers column animation.\n * @param featureProps - A tuple containing an object of feature props.\n * @returns void\n */\nconst columnAnimation = ([{ getState, getView, getRsStore }]: [featureProps: FeatureProps]) => {\n const { featuresToAvoid } = getState();\n const rsStore = getRsStore();\n\n if (rsStore.skipColumnAnimationOnNextRun) {\n rsStore.skipColumnAnimationOnNextRun = false;\n return;\n }\n\n // Column animation\n if (!avoidColumnAnimation(featuresToAvoid) && rsStore.oldColumnBoundingBox?.size) {\n const pNode = getView().getDomContainer();\n\n // Calculate the bounding box\n const newColBoundingBox = new Map<string, DOMRect>();\n if (getView().getItemElement()) {\n getView()\n .getItemElement()!\n .childNodes.forEach(cell => {\n if (\n cell.nodeType === Node.ELEMENT_NODE &&\n isInstance(cell, Element) &&\n cell.hasAttribute?.('data-col-id')\n ) {\n newColBoundingBox.set(cell.getAttribute('data-col-id')!, cell.getBoundingClientRect());\n }\n });\n }\n const visibleColumns = getView().getVisibleColumns();\n rsStore.oldColumnBoundingBox.forEach((value, key) => {\n if (newColBoundingBox.has(key)) {\n const deltaX = value.left - newColBoundingBox.get(key)!.left;\n const domNodes = pNode?.querySelectorAll<HTMLElement>(`[data-col-id='${key}']`);\n if (deltaX) {\n // FIXME: skipping animation on the last column because in case a record is added like in embedded tables, a vertical scrollbar appears momentarily which shifts the last column to left and this triggers unnecessary animation on last column.\n const currentColumn = visibleColumns.find(col => col.field.id === key);\n if (currentColumn?.isLastColumn) {\n return;\n }\n domNodes?.forEach(domNode => {\n animate(domNode, deltaX, 0);\n });\n }\n }\n });\n rsStore.oldColumnBoundingBox = null;\n }\n};\n\n/**\n * Handles animations for rows and columns\n * The animations are triggered based on changes to specific state properties:\n *\n * ### Row Animation Triggers\n * - {@link State.filterExpression}\n * - search text\n * - {@link State.sortingOrder}\n * - {@link State.groups}\n * - {@link State.refresh}\n * - {@link State.selectedHeightOption}\n *\n * ### Column Animation Triggers\n * - {@link State.freezeColumns}\n * - {@link State.colOrder}\n * - {@link State.visibleColumns}\n * - {@link State.columnWidths}\n * - {@link State.refresh}\n * - {@link RsStore.skipColumnAnimationOnNextRun}\n */\nexport default () => {\n const memoizedRowAnimation = withMemoization(rowAnimation);\n const memoizedColumnAnimation = withMemoization(columnAnimation);\n\n return function execute(featureProps: FeatureProps) {\n const state = featureProps.getState();\n memoizedRowAnimation(\n [featureProps],\n [\n state.filterExpression,\n // @ts-expect-error Property 'searchText' does not exist on type 'State' but exists on view.state\n state.searchText,\n state.sortingOrder,\n state.groups,\n state.refresh,\n state.selectedHeightOption\n ]\n );\n memoizedColumnAnimation(\n [featureProps],\n [\n state.freezeColumns,\n state.colOrder,\n state.visibleColumns,\n state.columnWidths,\n state.refresh,\n featureProps.getRsStore().skipColumnAnimationOnNextRun\n ]\n );\n };\n};\n"]}
@@ -16,14 +16,14 @@ export declare function runColumnSizing([{ getView, getRsStore, dispatch }]: [
16
16
  * - {@link View.rows}
17
17
  * - {@link RsStore.autosizeTriggered}
18
18
  * - {@link State.refresh}
19
- * - {@link State.hiddenColumns}
19
+ * - {@link State.visibleColumns}
20
20
  * - {@link State.forceUpdateFeatures.forceCalculateAutoWidth}
21
21
  * 2. **Resetting Autosize Status**:
22
22
  *
23
23
  * This action is triggered when any of the following properties change:
24
24
  * - {@link State.personalization.active}
25
25
  * - {@link State.refresh}
26
- * - {@link State.hiddenColumns}
26
+ * - {@link State.visibleColumns}
27
27
  * - {@link State.customFields}
28
28
  *
29
29
  * 3. **Executing Autosize on First Visual Column**:
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/features/uIFeatures/afterRender/columnSizing/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAU1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAyE5D;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE;IACnE,YAAY,EAAE,UAAU,CAAC,YAAY,EAAE,kBAAkB,GAAG,YAAY,GAAG,gBAAgB,CAAC;CAC7F,QAgCA;AAWD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;+BAQuB,cAAc,YAAY;AAPpD,wBAmGE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/features/uIFeatures/afterRender/columnSizing/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAU1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAyE5D;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE;IACnE,YAAY,EAAE,UAAU,CAAC,YAAY,EAAE,kBAAkB,GAAG,YAAY,GAAG,gBAAgB,CAAC;CAC7F,QAgCA;AAWD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;+BAQuB,cAAc,YAAY;AAPpD,wBAsGE"}
@@ -106,14 +106,14 @@ function resetAutosizeStatus([{ getRsStore }]) {
106
106
  * - {@link View.rows}
107
107
  * - {@link RsStore.autosizeTriggered}
108
108
  * - {@link State.refresh}
109
- * - {@link State.hiddenColumns}
109
+ * - {@link State.visibleColumns}
110
110
  * - {@link State.forceUpdateFeatures.forceCalculateAutoWidth}
111
111
  * 2. **Resetting Autosize Status**:
112
112
  *
113
113
  * This action is triggered when any of the following properties change:
114
114
  * - {@link State.personalization.active}
115
115
  * - {@link State.refresh}
116
- * - {@link State.hiddenColumns}
116
+ * - {@link State.visibleColumns}
117
117
  * - {@link State.customFields}
118
118
  *
119
119
  * 3. **Executing Autosize on First Visual Column**:
@@ -143,7 +143,7 @@ export default () => {
143
143
  }
144
144
  const state = featureProps.getState();
145
145
  // AutoSize by default
146
- memoizedResetAutosizeStatus([featureProps], [state.personalization?.active, state.refresh, state.hiddenColumns, state.customFields]);
146
+ memoizedResetAutosizeStatus([featureProps], [state.personalization?.active, state.refresh, state.visibleColumns, state.customFields]);
147
147
  /**
148
148
  * If one of the table's ancestors is in a hidden state, the autosize calculations will not
149
149
  * function correctly since the domContainer's offsetWidth will be 0. A single ResizeObserver
@@ -178,7 +178,7 @@ export default () => {
178
178
  currentState.visibleColumns,
179
179
  currentState.forceUpdateFeatures?.forceCalculateAutoWidth
180
180
  ]);
181
- memoizedAutosizeFirstVisualColumn([featureProps], [currentState.groups, currentState.responsive?.sm]);
181
+ memoizedAutosizeFirstVisualColumn([featureProps], [currentState.groups, currentState.responsive?.sm, currentState.colOrder?.[0]]);
182
182
  memoizedAutosizeOotbActionColumns([featureProps], [currentState.selectedHeightOption]);
183
183
  domContainerResizeObserver?.unobserve(entry.target);
184
184
  domContainerResizeObserver = null;
@@ -200,7 +200,7 @@ export default () => {
200
200
  state.visibleColumns,
201
201
  state.forceUpdateFeatures?.forceCalculateAutoWidth
202
202
  ]);
203
- memoizedAutosizeFirstVisualColumn([featureProps], [state.groups, state.responsive?.sm]);
203
+ memoizedAutosizeFirstVisualColumn([featureProps], [state.groups, state.responsive?.sm, state.colOrder?.[0]]);
204
204
  memoizedAutosizeOotbActionColumns([featureProps], [state.selectedHeightOption]);
205
205
  };
206
206
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/core/features/uIFeatures/afterRender/columnSizing/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { OmitStrict } from '@pega/cosmos-react-core';\n\nimport {\n actionColumnResize,\n actionColumnsAutoSize,\n actionColumnAutoSize,\n actionForceUpdate\n} from '../../../../actions/actions';\nimport { TEMPLATES } from '../../../../constants';\nimport { OOTB_COLUMNS, withMemoization } from '../../../../utils/util';\nimport type { FeatureProps } from '../../../featureFactory';\nimport type View from '../../../../generators/ViewGenerator';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { State } from '../../../../../../types/State.types';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type RsStore from '../../../../RsStore';\n\nimport { autoSizeOfColumns } from './autoSize';\n\n/*\n * If columnWidths are undefined, there is no active personalization invloved in the current view\n * So triggering auto column sizing, which depends on column content.\n * in case of nested groupings, skipping group headers from being counted as a row\n */\n/**\n * Checks if {@link View.domContainer dom container} has any rows with visible cells.\n * @param columns\n * @param domContainer\n * @returns true if dom container has any rows available, otherwise false.\n */\nconst checkDomContainerHasAnyRows = (\n columns: NonNullable<View['columns']>,\n domContainer: View['domContainer']\n) => {\n for (const column of columns) {\n if (!column.hidden) {\n const cells = domContainer\n ? domContainer.querySelectorAll(`[data-col-id=\"${column.field.id}\"]`)\n : [];\n if (cells.length > 1) {\n return true;\n }\n }\n }\n return false;\n};\n\n/**\n * Checks if any data rows are available in dom container. It does not includes grouped rows.\n * @returns true if data rows are available, otherwise false.\n */\nconst checkDomContainerHasDataRows = (domContainer: View['domContainer']) => {\n return !!(domContainer && domContainer.querySelectorAll('.row[aria-rowindex]').length);\n};\n\n/**\n * Autosizes the first visual column to account for the expand/collapse button\n * introduced by grouping.\n */\n\nfunction autoSizeFirstVisualColumn([featureProps]: [featureProps: FeatureProps]) {\n const { getView, dispatch } = featureProps;\n const { columns = [], getDomContainer } = getView();\n const firstVisualCol = columns.find(c => c.isFirstVisualColumn);\n const domContainer = getDomContainer();\n if (firstVisualCol && domContainer) {\n dispatch(actionColumnAutoSize(firstVisualCol, domContainer, true));\n }\n}\n\n/**\n * Runs autosizing on out-of-the-box (OOTB) action columns in the view.\n */\nconst autosizeOotbActionColumns = ([featureProps]: [featureProps: FeatureProps]) => {\n const { getView, dispatch } = featureProps;\n const { columns = [], getDomContainer } = getView();\n const ootbColumns = columns?.filter(col => OOTB_COLUMNS.includes(col.field.id));\n const domContainer = getDomContainer();\n if (ootbColumns.length && domContainer) {\n dispatch(actionColumnsAutoSize(ootbColumns, domContainer, true));\n }\n};\n\n/**\n * Executes the autosizing feature on all the columns. It dispatches an action that updates {@link State.columnWidths} slice with the calculated widths for all the columns.\n * @param param featureProps\n */\nexport function runColumnSizing([{ getView, getRsStore, dispatch }]: [\n featureProps: OmitStrict<FeatureProps, 'getOriginalState' | 'getRsProps' | 'browserContext'>\n]) {\n const { columns = [], getDomContainer } = getView();\n\n const rsStore = getRsStore();\n const domContainer = getDomContainer();\n const runColumnSizingOnRowsAvailable =\n !rsStore.columnSizingTriggerdOnRowsAvailable && checkDomContainerHasDataRows(domContainer);\n\n // if there is no group/data row to size in DOM, don't run column sizing\n if (\n !checkDomContainerHasAnyRows(columns, domContainer) ||\n (rsStore.autosizeTriggered && !runColumnSizingOnRowsAvailable)\n ) {\n // if in current render cycle the rows were not painted, check for autosizing in next cycle\n if (!rsStore.autosizeTriggered) {\n dispatch(actionForceUpdate(false, { forceCalculateAutoWidth: true }));\n }\n return;\n }\n\n rsStore.autosizeTriggered = true;\n // skipping column animation on next run if column size changed after personalization change or delete\n rsStore.skipColumnAnimationOnNextRun = true;\n\n if (runColumnSizingOnRowsAvailable) {\n // Fresh column sizing will run only once for a view when the rows are loaded for the first time in DOM\n rsStore.columnSizingTriggerdOnRowsAvailable = true;\n dispatch(actionColumnsAutoSize(columns, domContainer!, true));\n } else {\n // Incremental column sizing on show/hide of columns or table refresh or on view change with grouping applied\n dispatch(actionColumnResize(autoSizeOfColumns(columns, domContainer!)));\n }\n}\n\n/**\n * It resets the {@link RsStore.autosizeTriggered autosize status} on RsStore.\n * @param param featureProps\n */\nfunction resetAutosizeStatus([{ getRsStore }]: [featureProps: FeatureProps]) {\n // This parent flag checks if any type of sizing is triggered on the table including table header/groups/rows.\n getRsStore().autosizeTriggered = false;\n}\n\n/**\n * Manages the autosizing feature of columns in the view. This includes the following actions:\n * 1. **Executing Autosize for All Columns**:\n *\n * This action is triggered when any of the following properties change:\n * - {@link State.personalization.active}\n * - {@link View.rows}\n * - {@link RsStore.autosizeTriggered}\n * - {@link State.refresh}\n * - {@link State.hiddenColumns}\n * - {@link State.forceUpdateFeatures.forceCalculateAutoWidth}\n * 2. **Resetting Autosize Status**:\n *\n * This action is triggered when any of the following properties change:\n * - {@link State.personalization.active}\n * - {@link State.refresh}\n * - {@link State.hiddenColumns}\n * - {@link State.customFields}\n *\n * 3. **Executing Autosize on First Visual Column**:\n *\n * This action is triggered when any of the following properties change:\n * - {@link State.groups}\n * - {@link State.responsive.sm}\n */\nexport default () => {\n const memoizedRunColumnSizing = withMemoization(runColumnSizing);\n const memoizedResetAutosizeStatus = withMemoization(resetAutosizeStatus);\n const memoizedAutosizeFirstVisualColumn = withMemoization(autoSizeFirstVisualColumn);\n const memoizedAutosizeOotbActionColumns = withMemoization(autosizeOotbActionColumns);\n let domContainerResizeObserver: ResizeObserver | null = null;\n let observedDomContainer: Element | null = null;\n return function execute(featureProps: FeatureProps) {\n /**\n * Column sizing is Table-only. When template switches away from Table, clear any pending observer.\n * This prevents an observer created in a previous hidden-Table render from firing late and\n * triggering sizing work against the current non-Table template\n */\n if (featureProps.getView().template !== TEMPLATES.TABLE) {\n domContainerResizeObserver?.disconnect();\n domContainerResizeObserver = null;\n observedDomContainer = null;\n return;\n }\n const state = featureProps.getState();\n // AutoSize by default\n memoizedResetAutosizeStatus(\n [featureProps],\n [state.personalization?.active, state.refresh, state.hiddenColumns, state.customFields]\n );\n\n /**\n * If one of the table's ancestors is in a hidden state, the autosize calculations will not\n * function correctly since the domContainer's offsetWidth will be 0. A single ResizeObserver\n * is attached here (once per hidden period) and fires all sizing functions as soon as the\n * container gains width.\n *\n * The memoized versions are called intentionally so their dependency arrays are initialized\n * with the current state values. If the raw functions were called instead, the memoized\n * wrappers would still have no recorded deps and would re-run on the very next `execute`\n * cycle, causing each sizing function to fire twice.\n *\n * Any function that performs sizing calculations should be called within this observer callback.\n */\n const domContainer = featureProps.getView().getDomContainer();\n if (domContainer && domContainer.offsetWidth === 0) {\n if (domContainerResizeObserver && observedDomContainer !== domContainer) {\n // The DOM container was replaced while the observer was still pending (e.g. component remount).\n domContainerResizeObserver.disconnect();\n domContainerResizeObserver = null;\n observedDomContainer = null;\n }\n\n if (!domContainerResizeObserver) {\n domContainerResizeObserver = new ResizeObserver(entries => {\n for (const entry of entries) {\n if (entry.contentRect.width > 0) {\n const currentState = featureProps.getState();\n memoizedRunColumnSizing(\n [featureProps],\n [\n currentState.personalization?.active,\n featureProps.getView().rows,\n featureProps.getRsStore().autosizeTriggered,\n currentState.refresh,\n currentState.visibleColumns,\n currentState.forceUpdateFeatures?.forceCalculateAutoWidth\n ]\n );\n memoizedAutosizeFirstVisualColumn(\n [featureProps],\n [currentState.groups, currentState.responsive?.sm]\n );\n memoizedAutosizeOotbActionColumns(\n [featureProps],\n [currentState.selectedHeightOption]\n );\n domContainerResizeObserver?.unobserve(entry.target);\n domContainerResizeObserver = null;\n observedDomContainer = null;\n }\n }\n });\n domContainerResizeObserver.observe(domContainer);\n observedDomContainer = domContainer;\n }\n return;\n }\n\n // These are still needed as the Resize observer will work only once but we need to run sizing on user operations as well\n memoizedRunColumnSizing(\n [featureProps],\n [\n state.personalization?.active,\n featureProps.getView().rows,\n featureProps.getRsStore().autosizeTriggered,\n state.refresh,\n state.visibleColumns,\n state.forceUpdateFeatures?.forceCalculateAutoWidth\n ]\n );\n memoizedAutosizeFirstVisualColumn([featureProps], [state.groups, state.responsive?.sm]);\n memoizedAutosizeOotbActionColumns([featureProps], [state.selectedHeightOption]);\n };\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/core/features/uIFeatures/afterRender/columnSizing/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;GAIG;AACH;;;;;GAKG;AACH,MAAM,2BAA2B,GAAG,CAClC,OAAqC,EACrC,YAAkC,EAClC,EAAE;IACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,KAAK,GAAG,YAAY;gBACxB,CAAC,CAAC,YAAY,CAAC,gBAAgB,CAAC,iBAAiB,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;gBACrE,CAAC,CAAC,EAAE,CAAC;YACP,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,4BAA4B,GAAG,CAAC,YAAkC,EAAE,EAAE;IAC1E,OAAO,CAAC,CAAC,CAAC,YAAY,IAAI,YAAY,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AACzF,CAAC,CAAC;AAEF;;;GAGG;AAEH,SAAS,yBAAyB,CAAC,CAAC,YAAY,CAA+B;IAC7E,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC;IAC3C,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,eAAe,EAAE,GAAG,OAAO,EAAE,CAAC;IACpD,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,IAAI,cAAc,IAAI,YAAY,EAAE,CAAC;QACnC,QAAQ,CAAC,oBAAoB,CAAC,cAAc,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,yBAAyB,GAAG,CAAC,CAAC,YAAY,CAA+B,EAAE,EAAE;IACjF,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC;IAC3C,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,eAAe,EAAE,GAAG,OAAO,EAAE,CAAC;IACpD,MAAM,WAAW,GAAG,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAChF,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,IAAI,WAAW,CAAC,MAAM,IAAI,YAAY,EAAE,CAAC;QACvC,QAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;IACnE,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAEjE;IACC,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,eAAe,EAAE,GAAG,OAAO,EAAE,CAAC;IAEpD,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,8BAA8B,GAClC,CAAC,OAAO,CAAC,mCAAmC,IAAI,4BAA4B,CAAC,YAAY,CAAC,CAAC;IAE7F,wEAAwE;IACxE,IACE,CAAC,2BAA2B,CAAC,OAAO,EAAE,YAAY,CAAC;QACnD,CAAC,OAAO,CAAC,iBAAiB,IAAI,CAAC,8BAA8B,CAAC,EAC9D,CAAC;QACD,2FAA2F;QAC3F,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC/B,QAAQ,CAAC,iBAAiB,CAAC,KAAK,EAAE,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACxE,CAAC;QACD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IACjC,sGAAsG;IACtG,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC;IAE5C,IAAI,8BAA8B,EAAE,CAAC;QACnC,uGAAuG;QACvG,OAAO,CAAC,mCAAmC,GAAG,IAAI,CAAC;QACnD,QAAQ,CAAC,qBAAqB,CAAC,OAAO,EAAE,YAAa,EAAE,IAAI,CAAC,CAAC,CAAC;IAChE,CAAC;SAAM,CAAC;QACN,6GAA6G;QAC7G,QAAQ,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,OAAO,EAAE,YAAa,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,CAAC,EAAE,UAAU,EAAE,CAA+B;IACzE,8GAA8G;IAC9G,UAAU,EAAE,CAAC,iBAAiB,GAAG,KAAK,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAe,GAAG,EAAE;IAClB,MAAM,uBAAuB,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;IACjE,MAAM,2BAA2B,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC;IACzE,MAAM,iCAAiC,GAAG,eAAe,CAAC,yBAAyB,CAAC,CAAC;IACrF,MAAM,iCAAiC,GAAG,eAAe,CAAC,yBAAyB,CAAC,CAAC;IACrF,IAAI,0BAA0B,GAA0B,IAAI,CAAC;IAC7D,IAAI,oBAAoB,GAAmB,IAAI,CAAC;IAChD,OAAO,SAAS,OAAO,CAAC,YAA0B;QAChD;;;;WAIG;QACH,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;YACxD,0BAA0B,EAAE,UAAU,EAAE,CAAC;YACzC,0BAA0B,GAAG,IAAI,CAAC;YAClC,oBAAoB,GAAG,IAAI,CAAC;YAC5B,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QACtC,sBAAsB;QACtB,2BAA2B,CACzB,CAAC,YAAY,CAAC,EACd,CAAC,KAAK,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,YAAY,CAAC,CACzF,CAAC;QAEF;;;;;;;;;;;;WAYG;QACH,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,eAAe,EAAE,CAAC;QAC9D,IAAI,YAAY,IAAI,YAAY,CAAC,WAAW,KAAK,CAAC,EAAE,CAAC;YACnD,IAAI,0BAA0B,IAAI,oBAAoB,KAAK,YAAY,EAAE,CAAC;gBACxE,gGAAgG;gBAChG,0BAA0B,CAAC,UAAU,EAAE,CAAC;gBACxC,0BAA0B,GAAG,IAAI,CAAC;gBAClC,oBAAoB,GAAG,IAAI,CAAC;YAC9B,CAAC;YAED,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAChC,0BAA0B,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE;oBACxD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;wBAC5B,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;4BAChC,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;4BAC7C,uBAAuB,CACrB,CAAC,YAAY,CAAC,EACd;gCACE,YAAY,CAAC,eAAe,EAAE,MAAM;gCACpC,YAAY,CAAC,OAAO,EAAE,CAAC,IAAI;gCAC3B,YAAY,CAAC,UAAU,EAAE,CAAC,iBAAiB;gCAC3C,YAAY,CAAC,OAAO;gCACpB,YAAY,CAAC,cAAc;gCAC3B,YAAY,CAAC,mBAAmB,EAAE,uBAAuB;6BAC1D,CACF,CAAC;4BACF,iCAAiC,CAC/B,CAAC,YAAY,CAAC,EACd,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,UAAU,EAAE,EAAE,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAC/E,CAAC;4BACF,iCAAiC,CAC/B,CAAC,YAAY,CAAC,EACd,CAAC,YAAY,CAAC,oBAAoB,CAAC,CACpC,CAAC;4BACF,0BAA0B,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;4BACpD,0BAA0B,GAAG,IAAI,CAAC;4BAClC,oBAAoB,GAAG,IAAI,CAAC;wBAC9B,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,0BAA0B,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBACjD,oBAAoB,GAAG,YAAY,CAAC;YACtC,CAAC;YACD,OAAO;QACT,CAAC;QAED,yHAAyH;QACzH,uBAAuB,CACrB,CAAC,YAAY,CAAC,EACd;YACE,KAAK,CAAC,eAAe,EAAE,MAAM;YAC7B,YAAY,CAAC,OAAO,EAAE,CAAC,IAAI;YAC3B,YAAY,CAAC,UAAU,EAAE,CAAC,iBAAiB;YAC3C,KAAK,CAAC,OAAO;YACb,KAAK,CAAC,cAAc;YACpB,KAAK,CAAC,mBAAmB,EAAE,uBAAuB;SACnD,CACF,CAAC;QACF,iCAAiC,CAC/B,CAAC,YAAY,CAAC,EACd,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAC1D,CAAC;QACF,iCAAiC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAClF,CAAC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import type { OmitStrict } from '@pega/cosmos-react-core';\n\nimport {\n actionColumnResize,\n actionColumnsAutoSize,\n actionColumnAutoSize,\n actionForceUpdate\n} from '../../../../actions/actions';\nimport { TEMPLATES } from '../../../../constants';\nimport { OOTB_COLUMNS, withMemoization } from '../../../../utils/util';\nimport type { FeatureProps } from '../../../featureFactory';\nimport type View from '../../../../generators/ViewGenerator';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { State } from '../../../../../../types/State.types';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type RsStore from '../../../../RsStore';\n\nimport { autoSizeOfColumns } from './autoSize';\n\n/*\n * If columnWidths are undefined, there is no active personalization invloved in the current view\n * So triggering auto column sizing, which depends on column content.\n * in case of nested groupings, skipping group headers from being counted as a row\n */\n/**\n * Checks if {@link View.domContainer dom container} has any rows with visible cells.\n * @param columns\n * @param domContainer\n * @returns true if dom container has any rows available, otherwise false.\n */\nconst checkDomContainerHasAnyRows = (\n columns: NonNullable<View['columns']>,\n domContainer: View['domContainer']\n) => {\n for (const column of columns) {\n if (!column.hidden) {\n const cells = domContainer\n ? domContainer.querySelectorAll(`[data-col-id=\"${column.field.id}\"]`)\n : [];\n if (cells.length > 1) {\n return true;\n }\n }\n }\n return false;\n};\n\n/**\n * Checks if any data rows are available in dom container. It does not includes grouped rows.\n * @returns true if data rows are available, otherwise false.\n */\nconst checkDomContainerHasDataRows = (domContainer: View['domContainer']) => {\n return !!(domContainer && domContainer.querySelectorAll('.row[aria-rowindex]').length);\n};\n\n/**\n * Autosizes the first visual column to account for the expand/collapse button\n * introduced by grouping.\n */\n\nfunction autoSizeFirstVisualColumn([featureProps]: [featureProps: FeatureProps]) {\n const { getView, dispatch } = featureProps;\n const { columns = [], getDomContainer } = getView();\n const firstVisualCol = columns.find(c => c.isFirstVisualColumn);\n const domContainer = getDomContainer();\n if (firstVisualCol && domContainer) {\n dispatch(actionColumnAutoSize(firstVisualCol, domContainer, true));\n }\n}\n\n/**\n * Runs autosizing on out-of-the-box (OOTB) action columns in the view.\n */\nconst autosizeOotbActionColumns = ([featureProps]: [featureProps: FeatureProps]) => {\n const { getView, dispatch } = featureProps;\n const { columns = [], getDomContainer } = getView();\n const ootbColumns = columns?.filter(col => OOTB_COLUMNS.includes(col.field.id));\n const domContainer = getDomContainer();\n if (ootbColumns.length && domContainer) {\n dispatch(actionColumnsAutoSize(ootbColumns, domContainer, true));\n }\n};\n\n/**\n * Executes the autosizing feature on all the columns. It dispatches an action that updates {@link State.columnWidths} slice with the calculated widths for all the columns.\n * @param param featureProps\n */\nexport function runColumnSizing([{ getView, getRsStore, dispatch }]: [\n featureProps: OmitStrict<FeatureProps, 'getOriginalState' | 'getRsProps' | 'browserContext'>\n]) {\n const { columns = [], getDomContainer } = getView();\n\n const rsStore = getRsStore();\n const domContainer = getDomContainer();\n const runColumnSizingOnRowsAvailable =\n !rsStore.columnSizingTriggerdOnRowsAvailable && checkDomContainerHasDataRows(domContainer);\n\n // if there is no group/data row to size in DOM, don't run column sizing\n if (\n !checkDomContainerHasAnyRows(columns, domContainer) ||\n (rsStore.autosizeTriggered && !runColumnSizingOnRowsAvailable)\n ) {\n // if in current render cycle the rows were not painted, check for autosizing in next cycle\n if (!rsStore.autosizeTriggered) {\n dispatch(actionForceUpdate(false, { forceCalculateAutoWidth: true }));\n }\n return;\n }\n\n rsStore.autosizeTriggered = true;\n // skipping column animation on next run if column size changed after personalization change or delete\n rsStore.skipColumnAnimationOnNextRun = true;\n\n if (runColumnSizingOnRowsAvailable) {\n // Fresh column sizing will run only once for a view when the rows are loaded for the first time in DOM\n rsStore.columnSizingTriggerdOnRowsAvailable = true;\n dispatch(actionColumnsAutoSize(columns, domContainer!, true));\n } else {\n // Incremental column sizing on show/hide of columns or table refresh or on view change with grouping applied\n dispatch(actionColumnResize(autoSizeOfColumns(columns, domContainer!)));\n }\n}\n\n/**\n * It resets the {@link RsStore.autosizeTriggered autosize status} on RsStore.\n * @param param featureProps\n */\nfunction resetAutosizeStatus([{ getRsStore }]: [featureProps: FeatureProps]) {\n // This parent flag checks if any type of sizing is triggered on the table including table header/groups/rows.\n getRsStore().autosizeTriggered = false;\n}\n\n/**\n * Manages the autosizing feature of columns in the view. This includes the following actions:\n * 1. **Executing Autosize for All Columns**:\n *\n * This action is triggered when any of the following properties change:\n * - {@link State.personalization.active}\n * - {@link View.rows}\n * - {@link RsStore.autosizeTriggered}\n * - {@link State.refresh}\n * - {@link State.visibleColumns}\n * - {@link State.forceUpdateFeatures.forceCalculateAutoWidth}\n * 2. **Resetting Autosize Status**:\n *\n * This action is triggered when any of the following properties change:\n * - {@link State.personalization.active}\n * - {@link State.refresh}\n * - {@link State.visibleColumns}\n * - {@link State.customFields}\n *\n * 3. **Executing Autosize on First Visual Column**:\n *\n * This action is triggered when any of the following properties change:\n * - {@link State.groups}\n * - {@link State.responsive.sm}\n */\nexport default () => {\n const memoizedRunColumnSizing = withMemoization(runColumnSizing);\n const memoizedResetAutosizeStatus = withMemoization(resetAutosizeStatus);\n const memoizedAutosizeFirstVisualColumn = withMemoization(autoSizeFirstVisualColumn);\n const memoizedAutosizeOotbActionColumns = withMemoization(autosizeOotbActionColumns);\n let domContainerResizeObserver: ResizeObserver | null = null;\n let observedDomContainer: Element | null = null;\n return function execute(featureProps: FeatureProps) {\n /**\n * Column sizing is Table-only. When template switches away from Table, clear any pending observer.\n * This prevents an observer created in a previous hidden-Table render from firing late and\n * triggering sizing work against the current non-Table template\n */\n if (featureProps.getView().template !== TEMPLATES.TABLE) {\n domContainerResizeObserver?.disconnect();\n domContainerResizeObserver = null;\n observedDomContainer = null;\n return;\n }\n const state = featureProps.getState();\n // AutoSize by default\n memoizedResetAutosizeStatus(\n [featureProps],\n [state.personalization?.active, state.refresh, state.visibleColumns, state.customFields]\n );\n\n /**\n * If one of the table's ancestors is in a hidden state, the autosize calculations will not\n * function correctly since the domContainer's offsetWidth will be 0. A single ResizeObserver\n * is attached here (once per hidden period) and fires all sizing functions as soon as the\n * container gains width.\n *\n * The memoized versions are called intentionally so their dependency arrays are initialized\n * with the current state values. If the raw functions were called instead, the memoized\n * wrappers would still have no recorded deps and would re-run on the very next `execute`\n * cycle, causing each sizing function to fire twice.\n *\n * Any function that performs sizing calculations should be called within this observer callback.\n */\n const domContainer = featureProps.getView().getDomContainer();\n if (domContainer && domContainer.offsetWidth === 0) {\n if (domContainerResizeObserver && observedDomContainer !== domContainer) {\n // The DOM container was replaced while the observer was still pending (e.g. component remount).\n domContainerResizeObserver.disconnect();\n domContainerResizeObserver = null;\n observedDomContainer = null;\n }\n\n if (!domContainerResizeObserver) {\n domContainerResizeObserver = new ResizeObserver(entries => {\n for (const entry of entries) {\n if (entry.contentRect.width > 0) {\n const currentState = featureProps.getState();\n memoizedRunColumnSizing(\n [featureProps],\n [\n currentState.personalization?.active,\n featureProps.getView().rows,\n featureProps.getRsStore().autosizeTriggered,\n currentState.refresh,\n currentState.visibleColumns,\n currentState.forceUpdateFeatures?.forceCalculateAutoWidth\n ]\n );\n memoizedAutosizeFirstVisualColumn(\n [featureProps],\n [currentState.groups, currentState.responsive?.sm, currentState.colOrder?.[0]]\n );\n memoizedAutosizeOotbActionColumns(\n [featureProps],\n [currentState.selectedHeightOption]\n );\n domContainerResizeObserver?.unobserve(entry.target);\n domContainerResizeObserver = null;\n observedDomContainer = null;\n }\n }\n });\n domContainerResizeObserver.observe(domContainer);\n observedDomContainer = domContainer;\n }\n return;\n }\n\n // These are still needed as the Resize observer will work only once but we need to run sizing on user operations as well\n memoizedRunColumnSizing(\n [featureProps],\n [\n state.personalization?.active,\n featureProps.getView().rows,\n featureProps.getRsStore().autosizeTriggered,\n state.refresh,\n state.visibleColumns,\n state.forceUpdateFeatures?.forceCalculateAutoWidth\n ]\n );\n memoizedAutosizeFirstVisualColumn(\n [featureProps],\n [state.groups, state.responsive?.sm, state.colOrder?.[0]]\n );\n memoizedAutosizeOotbActionColumns([featureProps], [state.selectedHeightOption]);\n };\n};\n"]}
@@ -8,7 +8,7 @@ export declare const customizePContainer: ([{ getView }]: [featureProps: Feature
8
8
  * Customizes the behavior of the scrollable of virtualizer i.e. {@link RootVirtualizer.getParentContainer parentContainer}.
9
9
  *
10
10
  * This customization includes toggling the CSS class `pContainerScroll` on the `parentContainer`. The `pContainerScroll` class is toggled based on changes to specific state properties, including:
11
- * - {@link State.hiddenColumns}
11
+ * - {@link State.visibleColumns}
12
12
  * - {@link State.columnWidths}
13
13
  */
14
14
  declare const _default: () => (featureProps: FeatureProps) => void;
@@ -19,7 +19,7 @@ export const customizePContainer = ([{ getView }]) => {
19
19
  * Customizes the behavior of the scrollable of virtualizer i.e. {@link RootVirtualizer.getParentContainer parentContainer}.
20
20
  *
21
21
  * This customization includes toggling the CSS class `pContainerScroll` on the `parentContainer`. The `pContainerScroll` class is toggled based on changes to specific state properties, including:
22
- * - {@link State.hiddenColumns}
22
+ * - {@link State.visibleColumns}
23
23
  * - {@link State.columnWidths}
24
24
  */
25
25
  export default () => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/core/features/uIFeatures/afterRender/customizeParentContainer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQzD;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,CAA+B,EAAE,EAAE;IACjF,MAAM,eAAe,GAAG,OAAO,EAAE,CAAC,kBAAkB,CAAC,eAAe,EAAE,kBAAkB,EAAE,CAAC;IAE3F,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC;QAChE,IAAI,WAAW,GAAG,WAAW,EAAE,CAAC;YAC9B,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,eAAe,GAAG,EAAE;IAClB,MAAM,2BAA2B,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC;IAEzE,OAAO,SAAS,OAAO,CAAC,YAA0B;QAChD,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QACjE,2BAA2B,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { withMemoization } from '../../../../utils/util';\nimport type { FeatureProps } from '../../../featureFactory';\n// Used in JsDoc.\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { RootVirtualizer } from '../../../../generators/ViewGenerator.types';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { State } from '../../../../../../types/State.types';\n\n/** Toggles CSS class `pContainerScroll` on {@link RootVirtualizer.getParentContainer parentContainer} (scrollable element of the virtualizer) by comparing scrollWidth and clientWidth of parentContainer.\n * @param featureProps - A tuple containing an object of feature props.\n * @returns void\n */\nexport const customizePContainer = ([{ getView }]: [featureProps: FeatureProps]) => {\n const parentContainer = getView().virtualizeElements.rootVirtualiser?.getParentContainer();\n\n if (parentContainer) {\n const { scrollWidth, clientWidth, classList } = parentContainer;\n if (scrollWidth > clientWidth) {\n classList.add('pContainerScroll');\n } else {\n classList.remove('pContainerScroll');\n }\n }\n};\n\n/**\n * Customizes the behavior of the scrollable of virtualizer i.e. {@link RootVirtualizer.getParentContainer parentContainer}.\n *\n * This customization includes toggling the CSS class `pContainerScroll` on the `parentContainer`. The `pContainerScroll` class is toggled based on changes to specific state properties, including:\n * - {@link State.hiddenColumns}\n * - {@link State.columnWidths}\n */\nexport default () => {\n const memoisedCustomizePContainer = withMemoization(customizePContainer);\n\n return function execute(featureProps: FeatureProps) {\n const { visibleColumns, columnWidths } = featureProps.getState();\n memoisedCustomizePContainer([featureProps], [visibleColumns, columnWidths]);\n };\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/core/features/uIFeatures/afterRender/customizeParentContainer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQzD;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,CAA+B,EAAE,EAAE;IACjF,MAAM,eAAe,GAAG,OAAO,EAAE,CAAC,kBAAkB,CAAC,eAAe,EAAE,kBAAkB,EAAE,CAAC;IAE3F,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC;QAChE,IAAI,WAAW,GAAG,WAAW,EAAE,CAAC;YAC9B,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,eAAe,GAAG,EAAE;IAClB,MAAM,2BAA2B,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC;IAEzE,OAAO,SAAS,OAAO,CAAC,YAA0B;QAChD,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QACjE,2BAA2B,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { withMemoization } from '../../../../utils/util';\nimport type { FeatureProps } from '../../../featureFactory';\n// Used in JsDoc.\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { RootVirtualizer } from '../../../../generators/ViewGenerator.types';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { State } from '../../../../../../types/State.types';\n\n/** Toggles CSS class `pContainerScroll` on {@link RootVirtualizer.getParentContainer parentContainer} (scrollable element of the virtualizer) by comparing scrollWidth and clientWidth of parentContainer.\n * @param featureProps - A tuple containing an object of feature props.\n * @returns void\n */\nexport const customizePContainer = ([{ getView }]: [featureProps: FeatureProps]) => {\n const parentContainer = getView().virtualizeElements.rootVirtualiser?.getParentContainer();\n\n if (parentContainer) {\n const { scrollWidth, clientWidth, classList } = parentContainer;\n if (scrollWidth > clientWidth) {\n classList.add('pContainerScroll');\n } else {\n classList.remove('pContainerScroll');\n }\n }\n};\n\n/**\n * Customizes the behavior of the scrollable of virtualizer i.e. {@link RootVirtualizer.getParentContainer parentContainer}.\n *\n * This customization includes toggling the CSS class `pContainerScroll` on the `parentContainer`. The `pContainerScroll` class is toggled based on changes to specific state properties, including:\n * - {@link State.visibleColumns}\n * - {@link State.columnWidths}\n */\nexport default () => {\n const memoisedCustomizePContainer = withMemoization(customizePContainer);\n\n return function execute(featureProps: FeatureProps) {\n const { visibleColumns, columnWidths } = featureProps.getState();\n memoisedCustomizePContainer([featureProps], [visibleColumns, columnWidths]);\n };\n};\n"]}
@@ -29,7 +29,7 @@ export const getNextFrozenColumns = (columnId, freezeColumns = []) => {
29
29
  return nextFrozenColumns;
30
30
  };
31
31
  export const columnResizerProps = ([{ getState, getView, dispatch, browserContext }]) => {
32
- const { freezeColumns, hiddenColumns, columnWidths = {} } = getState();
32
+ const { freezeColumns, visibleColumns, columnWidths = {} } = getState();
33
33
  let column;
34
34
  let startPosition = 0;
35
35
  let resized = false;
@@ -50,7 +50,7 @@ export const columnResizerProps = ([{ getState, getView, dispatch, browserContex
50
50
  */
51
51
  const updateLefts = () => {
52
52
  nextFrozenColumns.forEach(colId => {
53
- const left = calculateFieldLeft(colId, getView().columns, freezeColumns, hiddenColumns, column ? { ...columnWidths, [column.field.id]: updatedWidth } : columnWidths // injecting the resized width to current column
53
+ const left = calculateFieldLeft(colId, getView().columns, freezeColumns, visibleColumns, column ? { ...columnWidths, [column.field.id]: updatedWidth } : columnWidths // injecting the resized width to current column
54
54
  );
55
55
  const nextFrozenColumn = getView().columns?.find(c => `${c.field.id}` === colId);
56
56
  setColumnStyle(getView().getDomContainer(), 'left', nextFrozenColumn.field.idHash, left);
@@ -1 +1 @@
1
- {"version":3,"file":"resize.js","sourceRoot":"","sources":["../../../../../../../src/core/features/uIFeatures/beforeRender/columnSizing/resize.ts"],"names":[],"mappings":"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","sourcesContent":["import { isInstance } from '@pega/cosmos-react-core';\n\nimport type { State } from '../../../../../../types/State.types';\nimport { actionColumnResize, actionColumnAutoSize } from '../../../../actions/actions';\nimport type Column from '../../../../generators/ColumnGenerator';\nimport type View from '../../../../generators/ViewGenerator';\nimport { withMemoization } from '../../../../utils/util';\nimport type { BeforeRenderFeatureProps } from '../../../featureFactory';\nimport { calculateFieldLeft } from '../freeze';\n\nexport const COLUMN_RESIZING_CLASS = 'column-resizing';\n\nexport function setColumnStyle(\n domContainer: View['domContainer'],\n style: string,\n columnId: number,\n value: number\n) {\n domContainer?.style?.setProperty(`--col-${style}-${columnId}`, `${value}px`);\n}\n\nconst getResizedColumnWidth = (\n column: Column,\n distanceDragged: number,\n currentCell: HTMLElement | null\n): number => {\n const renderedWidth = currentCell?.offsetWidth;\n // Use measured width when available; otherwise use configured/stored width.\n const measuredWidth = renderedWidth && renderedWidth > 0 ? renderedWidth : undefined;\n const currentWidth =\n measuredWidth ?? column.currentWidth ?? column.field.width ?? column.field.minWidth ?? 0;\n\n let width = currentWidth + distanceDragged;\n // TODO: confirm with designers if we want to limit the column sizing within the maxWidth(if defined on fieldDef). Currently only minWidth is getting honored.\n if (width < (column.field.minWidth ?? 0)) {\n width = column.field.minWidth ?? 0;\n }\n return width;\n};\n\nexport const getNextFrozenColumns = (\n columnId: string,\n freezeColumns: State['freezeColumns'] = []\n) => {\n const nextFrozenColumns = [];\n const freezeColIndex = freezeColumns.indexOf(columnId); // If current column freezed\n if (freezeColIndex > -1) {\n for (let i = freezeColIndex + 1; i < freezeColumns.length; i += 1) {\n nextFrozenColumns.push(freezeColumns[i]);\n }\n }\n return nextFrozenColumns;\n};\n\nexport const columnResizerProps = ([{ getState, getView, dispatch, browserContext }]: [\n BeforeRenderFeatureProps\n]) => {\n const { freezeColumns, hiddenColumns, columnWidths = {} } = getState();\n let column: Column | undefined;\n let startPosition = 0;\n let resized = false;\n let updatedWidth = 0;\n let currentCell: HTMLElement | null = null;\n let currentCellOccupiedWidthBeforeResize = 0;\n let nextFrozenColumns: string[] = [];\n const resizeDocument: Document = browserContext.document;\n\n const updateWidth = (distance: number) => {\n if (!column) return;\n updatedWidth = getResizedColumnWidth(\n { ...column, currentWidth: column.currentWidth } as Column,\n distance,\n currentCell\n );\n column = column.setProp('currentWidth', updatedWidth);\n setColumnStyle(getView().getDomContainer(), 'width', column.field.idHash!, updatedWidth);\n };\n\n /**\n * Update left positions to frozen columns or right of this column.\n */\n const updateLefts = () => {\n nextFrozenColumns.forEach(colId => {\n const left = calculateFieldLeft(\n colId,\n getView().columns,\n freezeColumns,\n hiddenColumns,\n column ? { ...columnWidths, [column.field.id]: updatedWidth } : columnWidths // injecting the resized width to current column\n );\n const nextFrozenColumn = getView().columns?.find(c => `${c.field.id}` === colId);\n setColumnStyle(getView().getDomContainer(), 'left', nextFrozenColumn!.field.idHash!, left);\n });\n };\n\n const resizeHandler = (e: MouseEvent) => {\n if (!currentCell || !column) return;\n e.preventDefault();\n\n const distance = e.clientX - startPosition;\n const parentContainer = getView().getVirtualizeElement('rootVirtualiser')?.getParentContainer();\n const clientWidth = parentContainer?.clientWidth ?? 0;\n const scrollWidth = parentContainer?.scrollWidth ?? 0;\n\n // Prevent reducing size for fillAvailableSpace column if the size reduction will introduce empty space in the table.\n const preventSizeReductionForFillAvailableSpaceColumn =\n column.field.fillAvailableSpace &&\n distance <= 0 &&\n currentCellOccupiedWidthBeforeResize <= (currentCell.offsetWidth ?? 0) &&\n clientWidth === scrollWidth;\n\n if (preventSizeReductionForFillAvailableSpaceColumn) {\n return;\n }\n\n if (distance !== 0) {\n updateWidth(distance);\n updateLefts();\n resized = true;\n }\n startPosition = e.clientX;\n };\n\n const resizeEndHandler = (e: MouseEvent) => {\n e.preventDefault();\n if (!currentCell || !column) return;\n\n resizeDocument.removeEventListener('mousemove', resizeHandler);\n resizeDocument.removeEventListener('mouseup', resizeEndHandler);\n if (resized) {\n dispatch(actionColumnResize({ [column.field.id]: updatedWidth }));\n resized = false;\n }\n currentCell.style.pointerEvents = 'auto';\n currentCell.classList.toggle(COLUMN_RESIZING_CLASS);\n getView().getDomContainer()?.classList.toggle(COLUMN_RESIZING_CLASS);\n // Reset the temporary body cursor override when resize interaction ends.\n resizeDocument.body?.style.setProperty('cursor', '');\n };\n\n const onMouseDown = (e: MouseEvent) => {\n if (!isInstance(e.target, HTMLElement)) return;\n\n e.preventDefault();\n e.stopPropagation();\n\n const domContainer = getView().getDomContainer();\n if (!domContainer) return;\n\n resizeDocument.addEventListener('mousemove', resizeHandler);\n resizeDocument.addEventListener('mouseup', resizeEndHandler);\n\n currentCell = e.target.closest('.cell');\n if (!currentCell) return;\n currentCell.style.pointerEvents = 'none';\n\n column = getView().columns?.find(c => `${c.field.id}` === currentCell?.dataset.colId);\n\n if (!column) return;\n\n startPosition = e.clientX;\n currentCellOccupiedWidthBeforeResize = currentCell.offsetWidth ?? 0;\n\n if (e.detail >= 2 && column.field.resize) {\n dispatch(actionColumnAutoSize(column, domContainer, true));\n }\n\n currentCell.classList.toggle(COLUMN_RESIZING_CLASS);\n domContainer.classList.toggle(COLUMN_RESIZING_CLASS);\n // Keep resize cursor visible even when pointer moves outside the handle.\n resizeDocument.body?.style.setProperty('cursor', 'col-resize');\n // TODO: getState().freezeColumns should\n // give latest state after the action triggered from current feature only on above lines. Check this.\n nextFrozenColumns = getNextFrozenColumns(currentCell.dataset.colId!, getState().freezeColumns);\n };\n\n return { onMouseDown };\n};\n\nexport default () => {\n const memoizedColumnResize = withMemoization(columnResizerProps);\n\n return function execute(featureProps: BeforeRenderFeatureProps) {\n const { freezeColumns, visibleColumns, columnWidths } = featureProps.getState();\n featureProps\n .getRsStore()\n .setColumnResizerProps(\n memoizedColumnResize([featureProps], [freezeColumns, visibleColumns, columnWidths])\n );\n };\n};\n"]}
1
+ {"version":3,"file":"resize.js","sourceRoot":"","sources":["../../../../../../../src/core/features/uIFeatures/beforeRender/columnSizing/resize.ts"],"names":[],"mappings":"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","sourcesContent":["import { isInstance } from '@pega/cosmos-react-core';\n\nimport type { State } from '../../../../../../types/State.types';\nimport { actionColumnResize, actionColumnAutoSize } from '../../../../actions/actions';\nimport type Column from '../../../../generators/ColumnGenerator';\nimport type View from '../../../../generators/ViewGenerator';\nimport { withMemoization } from '../../../../utils/util';\nimport type { BeforeRenderFeatureProps } from '../../../featureFactory';\nimport { calculateFieldLeft } from '../freeze';\n\nexport const COLUMN_RESIZING_CLASS = 'column-resizing';\n\nexport function setColumnStyle(\n domContainer: View['domContainer'],\n style: string,\n columnId: number,\n value: number\n) {\n domContainer?.style?.setProperty(`--col-${style}-${columnId}`, `${value}px`);\n}\n\nconst getResizedColumnWidth = (\n column: Column,\n distanceDragged: number,\n currentCell: HTMLElement | null\n): number => {\n const renderedWidth = currentCell?.offsetWidth;\n // Use measured width when available; otherwise use configured/stored width.\n const measuredWidth = renderedWidth && renderedWidth > 0 ? renderedWidth : undefined;\n const currentWidth =\n measuredWidth ?? column.currentWidth ?? column.field.width ?? column.field.minWidth ?? 0;\n\n let width = currentWidth + distanceDragged;\n // TODO: confirm with designers if we want to limit the column sizing within the maxWidth(if defined on fieldDef). Currently only minWidth is getting honored.\n if (width < (column.field.minWidth ?? 0)) {\n width = column.field.minWidth ?? 0;\n }\n return width;\n};\n\nexport const getNextFrozenColumns = (\n columnId: string,\n freezeColumns: State['freezeColumns'] = []\n) => {\n const nextFrozenColumns = [];\n const freezeColIndex = freezeColumns.indexOf(columnId); // If current column freezed\n if (freezeColIndex > -1) {\n for (let i = freezeColIndex + 1; i < freezeColumns.length; i += 1) {\n nextFrozenColumns.push(freezeColumns[i]);\n }\n }\n return nextFrozenColumns;\n};\n\nexport const columnResizerProps = ([{ getState, getView, dispatch, browserContext }]: [\n BeforeRenderFeatureProps\n]) => {\n const { freezeColumns, visibleColumns, columnWidths = {} } = getState();\n let column: Column | undefined;\n let startPosition = 0;\n let resized = false;\n let updatedWidth = 0;\n let currentCell: HTMLElement | null = null;\n let currentCellOccupiedWidthBeforeResize = 0;\n let nextFrozenColumns: string[] = [];\n const resizeDocument: Document = browserContext.document;\n\n const updateWidth = (distance: number) => {\n if (!column) return;\n updatedWidth = getResizedColumnWidth(\n { ...column, currentWidth: column.currentWidth } as Column,\n distance,\n currentCell\n );\n column = column.setProp('currentWidth', updatedWidth);\n setColumnStyle(getView().getDomContainer(), 'width', column.field.idHash!, updatedWidth);\n };\n\n /**\n * Update left positions to frozen columns or right of this column.\n */\n const updateLefts = () => {\n nextFrozenColumns.forEach(colId => {\n const left = calculateFieldLeft(\n colId,\n getView().columns,\n freezeColumns,\n visibleColumns,\n column ? { ...columnWidths, [column.field.id]: updatedWidth } : columnWidths // injecting the resized width to current column\n );\n const nextFrozenColumn = getView().columns?.find(c => `${c.field.id}` === colId);\n setColumnStyle(getView().getDomContainer(), 'left', nextFrozenColumn!.field.idHash!, left);\n });\n };\n\n const resizeHandler = (e: MouseEvent) => {\n if (!currentCell || !column) return;\n e.preventDefault();\n\n const distance = e.clientX - startPosition;\n const parentContainer = getView().getVirtualizeElement('rootVirtualiser')?.getParentContainer();\n const clientWidth = parentContainer?.clientWidth ?? 0;\n const scrollWidth = parentContainer?.scrollWidth ?? 0;\n\n // Prevent reducing size for fillAvailableSpace column if the size reduction will introduce empty space in the table.\n const preventSizeReductionForFillAvailableSpaceColumn =\n column.field.fillAvailableSpace &&\n distance <= 0 &&\n currentCellOccupiedWidthBeforeResize <= (currentCell.offsetWidth ?? 0) &&\n clientWidth === scrollWidth;\n\n if (preventSizeReductionForFillAvailableSpaceColumn) {\n return;\n }\n\n if (distance !== 0) {\n updateWidth(distance);\n updateLefts();\n resized = true;\n }\n startPosition = e.clientX;\n };\n\n const resizeEndHandler = (e: MouseEvent) => {\n e.preventDefault();\n if (!currentCell || !column) return;\n\n resizeDocument.removeEventListener('mousemove', resizeHandler);\n resizeDocument.removeEventListener('mouseup', resizeEndHandler);\n if (resized) {\n dispatch(actionColumnResize({ [column.field.id]: updatedWidth }));\n resized = false;\n }\n currentCell.style.pointerEvents = 'auto';\n currentCell.classList.toggle(COLUMN_RESIZING_CLASS);\n getView().getDomContainer()?.classList.toggle(COLUMN_RESIZING_CLASS);\n // Reset the temporary body cursor override when resize interaction ends.\n resizeDocument.body?.style.setProperty('cursor', '');\n };\n\n const onMouseDown = (e: MouseEvent) => {\n if (!isInstance(e.target, HTMLElement)) return;\n\n e.preventDefault();\n e.stopPropagation();\n\n const domContainer = getView().getDomContainer();\n if (!domContainer) return;\n\n resizeDocument.addEventListener('mousemove', resizeHandler);\n resizeDocument.addEventListener('mouseup', resizeEndHandler);\n\n currentCell = e.target.closest('.cell');\n if (!currentCell) return;\n currentCell.style.pointerEvents = 'none';\n\n column = getView().columns?.find(c => `${c.field.id}` === currentCell?.dataset.colId);\n\n if (!column) return;\n\n startPosition = e.clientX;\n currentCellOccupiedWidthBeforeResize = currentCell.offsetWidth ?? 0;\n\n if (e.detail >= 2 && column.field.resize) {\n dispatch(actionColumnAutoSize(column, domContainer, true));\n }\n\n currentCell.classList.toggle(COLUMN_RESIZING_CLASS);\n domContainer.classList.toggle(COLUMN_RESIZING_CLASS);\n // Keep resize cursor visible even when pointer moves outside the handle.\n resizeDocument.body?.style.setProperty('cursor', 'col-resize');\n // TODO: getState().freezeColumns should\n // give latest state after the action triggered from current feature only on above lines. Check this.\n nextFrozenColumns = getNextFrozenColumns(currentCell.dataset.colId!, getState().freezeColumns);\n };\n\n return { onMouseDown };\n};\n\nexport default () => {\n const memoizedColumnResize = withMemoization(columnResizerProps);\n\n return function execute(featureProps: BeforeRenderFeatureProps) {\n const { freezeColumns, visibleColumns, columnWidths } = featureProps.getState();\n featureProps\n .getRsStore()\n .setColumnResizerProps(\n memoizedColumnResize([featureProps], [freezeColumns, visibleColumns, columnWidths])\n );\n };\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"customColumn.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/customColumn.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AA4FrE;;;;GAIG;+BAIuB,cAAc,wBAAwB;AAHhE,wBAUE"}
1
+ {"version":3,"file":"customColumn.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/customColumn.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AA6FrE;;;;GAIG;+BAIuB,cAAc,wBAAwB;AAHhE,wBAUE"}
@@ -23,7 +23,8 @@ const addColumn = (getView, getRsStore, customField) => {
23
23
  cellRenderer: getView().meta.customFieldRenderer || 'customCellRenderer',
24
24
  headerCellRenderer: getView().meta.customHeaderRenderer || 'headerCellRenderer'
25
25
  };
26
- const { idHash, width, ...restOfFieldDef } = primaryFieldDef; /* BUG-680257: Do not copy idHash from primaryFieldDef. It is generated in view.addColumn */
26
+ // customGrouping not applicable for custom type fieldDef.
27
+ const { idHash, width, customGrouping, ...restOfFieldDef } = primaryFieldDef; /* BUG-680257: Do not copy idHash from primaryFieldDef. It is generated in view.addColumn */
27
28
  const field = {
28
29
  ...restOfFieldDef,
29
30
  grouping: false,
@@ -1 +1 @@
1
- {"version":3,"file":"customColumn.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/customColumn.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldDef } from '../../../../../types/Meta.types';\nimport {\n actionColumnDragDrop,\n actionColumnToggle,\n actionUpdateColumnOrder,\n addColumnIntoVisibility\n} from '../../../actions/actions';\nimport type { MergeColumnsPayload } from '../../../actions/actions.types';\nimport type Column from '../../../generators/ColumnGenerator';\nimport { withMemoization } from '../../../utils/util';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport type View from '../../../generators/ViewGenerator';\nimport type { CustomField, State } from '../../../../../types/State.types';\n/* eslint-enable @typescript-eslint/no-unused-vars */\n\nfunction isMergeColumnsPayload(payload: unknown): payload is MergeColumnsPayload {\n return typeof payload === 'object' && payload !== null && 'uniqueID' in payload;\n}\n\nconst deleteStaleColumns = (\n getView: BeforeRenderFeatureProps['getView'],\n customFields: CustomField[]\n): void => {\n // deleted custom column from state should also be removed from meta if any.\n getView()\n .columns?.filter(c => c.isCustomColumn)\n .forEach(({ field: { id } }) => {\n const isStaleColumn = customFields.every(customField => customField.id !== id);\n if (isStaleColumn) getView().removeColumn(id);\n });\n};\n\nconst addColumn = (\n getView: BeforeRenderFeatureProps['getView'],\n getRsStore: BeforeRenderFeatureProps['getRsStore'],\n customField: CustomField\n): [Column, FieldDef] => {\n const primaryFieldDef = getRsStore().getFieldDefById(customField.primaryColumnId);\n const column = {\n isCustomColumn: true,\n formatterAllowed: false,\n label: customField.label,\n cellRenderer: getView().meta.customFieldRenderer || 'customCellRenderer',\n headerCellRenderer: getView().meta.customHeaderRenderer || 'headerCellRenderer'\n };\n const { idHash, width, ...restOfFieldDef } =\n primaryFieldDef!; /* BUG-680257: Do not copy idHash from primaryFieldDef. It is generated in view.addColumn */\n const field: FieldDef = {\n ...restOfFieldDef,\n grouping: false,\n filter: false,\n resize: true,\n sort: false,\n aggregation: false,\n id: customField.id,\n label: customField.label,\n category: [],\n type: 'custom'\n };\n\n /*\n Updating the fieldDef within the meta mutatively.\n This will ensure that the fieldDef is added in all places where the meta is referenced(view.meta, rsStore.meta).\n */\n getView().meta.fieldDefs.push(field);\n const customColumn = getView().addColumn(field, column);\n\n getRsStore().fieldDefsMap.set(customField.id, field);\n return [customColumn, primaryFieldDef!];\n};\n\nconst updateCustomColumns = ([\n { getView, getRsStore, getState, queuedActions: actions, dispatch }\n]: [featureProps: BeforeRenderFeatureProps]): void => {\n const state = getState();\n const customFields = state?.customFields || [];\n deleteStaleColumns(getView, customFields);\n\n customFields.forEach(customField => {\n // if column already exist in meta, skip it otherwise add a new\n const column = getView().columns?.find(c => c.isCustomColumn && customField.id === c.field.id);\n if (!column) {\n const [customColumn, primaryFieldDef] = addColumn(getView, getRsStore, customField);\n if (!state?.colOrder?.includes(customColumn.field.id)) {\n dispatch(actionUpdateColumnOrder([customColumn.field.id]));\n dispatch(actionColumnDragDrop(customColumn.field.id, primaryFieldDef.id));\n }\n }\n });\n\n // Add newly created customColumn into visibleColumns\n const action = actions[0];\n if ('payload' in action && isMergeColumnsPayload(action.payload)) {\n dispatch(addColumnIntoVisibility(action.payload.uniqueID));\n }\n\n if ('payload' in action && isMergeColumnsPayload(action.payload) && action.payload.hideColumns) {\n dispatch(actionColumnToggle(action.payload.hideColumns));\n }\n};\n\n/**\n * Adds the custom column in current set of{@link View.columns columns} and updates the {@link State.colOrder}, {@link State.visibleColumns} with {@link State.customFields customFields} information when following properties are changed:\n * - {@link State.customFields}\n * - `active` in {@link State.personalization}\n */\nexport default () => {\n const memoizedUpdateCustomColumns = withMemoization(updateCustomColumns);\n\n return function execute(featureProps: BeforeRenderFeatureProps) {\n const state = featureProps.getState();\n memoizedUpdateCustomColumns(\n [featureProps],\n [state.customFields, state?.personalization?.active]\n );\n };\n};\n"]}
1
+ {"version":3,"file":"customColumn.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/customColumn.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldDef } from '../../../../../types/Meta.types';\nimport {\n actionColumnDragDrop,\n actionColumnToggle,\n actionUpdateColumnOrder,\n addColumnIntoVisibility\n} from '../../../actions/actions';\nimport type { MergeColumnsPayload } from '../../../actions/actions.types';\nimport type Column from '../../../generators/ColumnGenerator';\nimport { withMemoization } from '../../../utils/util';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport type View from '../../../generators/ViewGenerator';\nimport type { CustomField, State } from '../../../../../types/State.types';\n/* eslint-enable @typescript-eslint/no-unused-vars */\n\nfunction isMergeColumnsPayload(payload: unknown): payload is MergeColumnsPayload {\n return typeof payload === 'object' && payload !== null && 'uniqueID' in payload;\n}\n\nconst deleteStaleColumns = (\n getView: BeforeRenderFeatureProps['getView'],\n customFields: CustomField[]\n): void => {\n // deleted custom column from state should also be removed from meta if any.\n getView()\n .columns?.filter(c => c.isCustomColumn)\n .forEach(({ field: { id } }) => {\n const isStaleColumn = customFields.every(customField => customField.id !== id);\n if (isStaleColumn) getView().removeColumn(id);\n });\n};\n\nconst addColumn = (\n getView: BeforeRenderFeatureProps['getView'],\n getRsStore: BeforeRenderFeatureProps['getRsStore'],\n customField: CustomField\n): [Column, FieldDef] => {\n const primaryFieldDef = getRsStore().getFieldDefById(customField.primaryColumnId);\n const column = {\n isCustomColumn: true,\n formatterAllowed: false,\n label: customField.label,\n cellRenderer: getView().meta.customFieldRenderer || 'customCellRenderer',\n headerCellRenderer: getView().meta.customHeaderRenderer || 'headerCellRenderer'\n };\n // customGrouping not applicable for custom type fieldDef.\n const { idHash, width, customGrouping, ...restOfFieldDef } =\n primaryFieldDef!; /* BUG-680257: Do not copy idHash from primaryFieldDef. It is generated in view.addColumn */\n const field: FieldDef = {\n ...restOfFieldDef,\n grouping: false,\n filter: false,\n resize: true,\n sort: false,\n aggregation: false,\n id: customField.id,\n label: customField.label,\n category: [],\n type: 'custom'\n };\n\n /*\n Updating the fieldDef within the meta mutatively.\n This will ensure that the fieldDef is added in all places where the meta is referenced(view.meta, rsStore.meta).\n */\n getView().meta.fieldDefs.push(field);\n const customColumn = getView().addColumn(field, column);\n\n getRsStore().fieldDefsMap.set(customField.id, field);\n return [customColumn, primaryFieldDef!];\n};\n\nconst updateCustomColumns = ([\n { getView, getRsStore, getState, queuedActions: actions, dispatch }\n]: [featureProps: BeforeRenderFeatureProps]): void => {\n const state = getState();\n const customFields = state?.customFields || [];\n deleteStaleColumns(getView, customFields);\n\n customFields.forEach(customField => {\n // if column already exist in meta, skip it otherwise add a new\n const column = getView().columns?.find(c => c.isCustomColumn && customField.id === c.field.id);\n if (!column) {\n const [customColumn, primaryFieldDef] = addColumn(getView, getRsStore, customField);\n if (!state?.colOrder?.includes(customColumn.field.id)) {\n dispatch(actionUpdateColumnOrder([customColumn.field.id]));\n dispatch(actionColumnDragDrop(customColumn.field.id, primaryFieldDef.id));\n }\n }\n });\n\n // Add newly created customColumn into visibleColumns\n const action = actions[0];\n if ('payload' in action && isMergeColumnsPayload(action.payload)) {\n dispatch(addColumnIntoVisibility(action.payload.uniqueID));\n }\n\n if ('payload' in action && isMergeColumnsPayload(action.payload) && action.payload.hideColumns) {\n dispatch(actionColumnToggle(action.payload.hideColumns));\n }\n};\n\n/**\n * Adds the custom column in current set of{@link View.columns columns} and updates the {@link State.colOrder}, {@link State.visibleColumns} with {@link State.customFields customFields} information when following properties are changed:\n * - {@link State.customFields}\n * - `active` in {@link State.personalization}\n */\nexport default () => {\n const memoizedUpdateCustomColumns = withMemoization(updateCustomColumns);\n\n return function execute(featureProps: BeforeRenderFeatureProps) {\n const state = featureProps.getState();\n memoizedUpdateCustomColumns(\n [featureProps],\n [state.customFields, state?.personalization?.active]\n );\n };\n};\n"]}
@@ -1,6 +1,8 @@
1
1
  import type { OmitStrict } from '@pega/cosmos-react-core';
2
2
  import type RsInternal from '../../../RsInternal';
3
3
  import type { BeforeRenderFeatureProps } from '../../featureFactory';
4
+ import type { GroupFilter } from '../../../../../types/State.types';
5
+ import type RsStore from '../../../RsStore';
4
6
  import type { GroupedInfo, HierarchicalGroupedInfo } from '../../../../../types/ApiContext.types';
5
7
  export interface CommonGroupingInfo {
6
8
  /** Id of the field on which grouping is applied. */
@@ -24,6 +26,9 @@ export type HierarchicalGroupingInfo = OmitStrict<HierarchicalGroupedInfo, 'chil
24
26
  targetId?: string;
25
27
  name?: null | string | number | boolean | Date;
26
28
  };
29
+ declare function includeGroup(group: GroupingInfo | HierarchicalGroupingInfo, groupFrom: number, groupTo: number, parentGroups: Record<string, any>, groupFilters: GroupFilter[]): void;
30
+ type ParentGroups = Parameters<typeof includeGroup>[3];
31
+ export declare function includeAllLeafGroups(group: NonNullable<RsStore['groupingInfo']>, parentGroup: ParentGroups, groupFilters: GroupFilter[]): void;
27
32
  /**
28
33
  * Handles the grouping feature for repeating structures.
29
34
  *
@@ -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;AAa1D,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAQrE,OAAO,KAAK,EACV,WAAW,EACX,uBAAuB,EAGxB,MAAM,uCAAuC,CAAC;AAE/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;AAoiBJ;;;;;;;;GAQG;yBACa,YAAY,UAAU,qBAYC,wBAAwB;AAZ/D,wBAqEE"}
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"}