@gooddata/sdk-ui-pivot 10.40.0-alpha.1 → 10.40.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/next/PivotTableNextPluggable.js +2 -1
- package/esm/next/PivotTableNextPluggable.js.map +1 -1
- package/esm/next/components/Header/AttributeHeader.d.ts +7 -0
- package/esm/next/components/Header/AttributeHeader.d.ts.map +1 -0
- package/esm/next/components/Header/AttributeHeader.js +14 -0
- package/esm/next/components/Header/AttributeHeader.js.map +1 -0
- package/esm/next/components/Header/HeaderCell/HeaderCell.d.ts +17 -0
- package/esm/next/components/Header/HeaderCell/HeaderCell.d.ts.map +1 -0
- package/esm/next/components/Header/HeaderCell/HeaderCell.js +24 -0
- package/esm/next/components/Header/HeaderCell/HeaderCell.js.map +1 -0
- package/esm/next/components/Header/HeaderCell/HeaderMenu.d.ts +12 -0
- package/esm/next/components/Header/HeaderCell/HeaderMenu.d.ts.map +1 -0
- package/esm/next/components/Header/{HeaderMenu.js → HeaderCell/HeaderMenu.js} +15 -9
- package/esm/next/components/Header/HeaderCell/HeaderMenu.js.map +1 -0
- package/esm/next/components/Header/HeaderCell/HeaderMenuComponents.d.ts +22 -0
- package/esm/next/components/Header/HeaderCell/HeaderMenuComponents.d.ts.map +1 -0
- package/esm/next/components/Header/{HeaderMenuComponents.js → HeaderCell/HeaderMenuComponents.js} +61 -8
- package/esm/next/components/Header/HeaderCell/HeaderMenuComponents.js.map +1 -0
- package/esm/next/components/Header/MeasureGroupHeader.d.ts +9 -0
- package/esm/next/components/Header/MeasureGroupHeader.d.ts.map +1 -0
- package/esm/next/components/Header/MeasureGroupHeader.js +24 -0
- package/esm/next/components/Header/MeasureGroupHeader.js.map +1 -0
- package/esm/next/components/Header/MeasureHeader.d.ts +7 -0
- package/esm/next/components/Header/MeasureHeader.d.ts.map +1 -0
- package/esm/next/components/Header/MeasureHeader.js +21 -0
- package/esm/next/components/Header/MeasureHeader.js.map +1 -0
- package/esm/next/components/Header/{PivotGroupHeaderCell.d.ts → PivotGroupHeader.d.ts} +3 -3
- package/esm/next/components/Header/PivotGroupHeader.d.ts.map +1 -0
- package/esm/next/components/Header/PivotGroupHeader.js +22 -0
- package/esm/next/components/Header/PivotGroupHeader.js.map +1 -0
- package/esm/next/components/Header/hooks/useHeaderMenu.d.ts +19 -0
- package/esm/next/components/Header/hooks/useHeaderMenu.d.ts.map +1 -0
- package/esm/next/components/Header/hooks/useHeaderMenu.js +24 -0
- package/esm/next/components/Header/hooks/useHeaderMenu.js.map +1 -0
- package/esm/next/components/Header/hooks/useHeaderMenuProps.d.ts +18 -0
- package/esm/next/components/Header/hooks/useHeaderMenuProps.d.ts.map +1 -0
- package/esm/next/components/Header/hooks/useHeaderMenuProps.js +85 -0
- package/esm/next/components/Header/hooks/useHeaderMenuProps.js.map +1 -0
- package/esm/next/components/Header/{utils.d.ts → utils/common.d.ts} +1 -1
- package/esm/next/components/Header/utils/common.d.ts.map +1 -0
- package/esm/next/components/Header/{utils.js → utils/common.js} +1 -1
- package/esm/next/components/Header/utils/common.js.map +1 -0
- package/esm/next/components/Header/{constructAggregationsMenuItems.d.ts → utils/constructAggregationsMenuItems.d.ts} +1 -1
- package/esm/next/components/Header/utils/constructAggregationsMenuItems.d.ts.map +1 -0
- package/esm/next/components/Header/{constructAggregationsMenuItems.js → utils/constructAggregationsMenuItems.js} +5 -3
- package/esm/next/components/Header/utils/constructAggregationsMenuItems.js.map +1 -0
- package/esm/next/components/Header/utils/constructTextWrappingMenuItems.d.ts +4 -0
- package/esm/next/components/Header/utils/constructTextWrappingMenuItems.d.ts.map +1 -0
- package/esm/next/components/Header/utils/constructTextWrappingMenuItems.js +17 -0
- package/esm/next/components/Header/utils/constructTextWrappingMenuItems.js.map +1 -0
- package/esm/next/constants/internal.d.ts +1 -1
- package/esm/next/constants/internal.js +1 -1
- package/esm/next/features/columns/attributeColDef.d.ts.map +1 -1
- package/esm/next/features/columns/attributeColDef.js +4 -0
- package/esm/next/features/columns/attributeColDef.js.map +1 -1
- package/esm/next/features/columns/measureColDef.d.ts.map +1 -1
- package/esm/next/features/columns/measureColDef.js +1 -2
- package/esm/next/features/columns/measureColDef.js.map +1 -1
- package/esm/next/features/pivoting/columnDefsToPivotGroups.d.ts.map +1 -1
- package/esm/next/features/pivoting/columnDefsToPivotGroups.js +1 -2
- package/esm/next/features/pivoting/columnDefsToPivotGroups.js.map +1 -1
- package/esm/next/features/transposition/attributeHeaderColDef.d.ts.map +1 -1
- package/esm/next/features/transposition/attributeHeaderColDef.js +3 -0
- package/esm/next/features/transposition/attributeHeaderColDef.js.map +1 -1
- package/esm/next/features/transposition/measureGroupHeaderColDef.d.ts.map +1 -1
- package/esm/next/features/transposition/measureGroupHeaderColDef.js +1 -2
- package/esm/next/features/transposition/measureGroupHeaderColDef.js.map +1 -1
- package/esm/next/hooks/textWrapping/useGetDefaultTextWrapping.d.ts +9 -0
- package/esm/next/hooks/textWrapping/useGetDefaultTextWrapping.d.ts.map +1 -0
- package/esm/next/hooks/textWrapping/useGetDefaultTextWrapping.js +20 -0
- package/esm/next/hooks/textWrapping/useGetDefaultTextWrapping.js.map +1 -0
- package/esm/next/hooks/textWrapping/useUpdateDefaultTextWrapping.d.ts +9 -0
- package/esm/next/hooks/textWrapping/useUpdateDefaultTextWrapping.d.ts.map +1 -0
- package/esm/next/hooks/textWrapping/useUpdateDefaultTextWrapping.js +24 -0
- package/esm/next/hooks/textWrapping/useUpdateDefaultTextWrapping.js.map +1 -0
- package/esm/next/hooks/textWrapping/useUpdateTextWrapping.d.ts +24 -0
- package/esm/next/hooks/textWrapping/useUpdateTextWrapping.d.ts.map +1 -0
- package/esm/next/hooks/textWrapping/useUpdateTextWrapping.js +64 -0
- package/esm/next/hooks/textWrapping/useUpdateTextWrapping.js.map +1 -0
- package/esm/next/hooks/totals/useUpdateTotals.d.ts +11 -0
- package/esm/next/hooks/totals/useUpdateTotals.d.ts.map +1 -0
- package/esm/next/hooks/totals/useUpdateTotals.js +47 -0
- package/esm/next/hooks/totals/useUpdateTotals.js.map +1 -0
- package/esm/next/hooks/useAgGridReactProps.d.ts.map +1 -1
- package/esm/next/hooks/useAgGridReactProps.js +4 -1
- package/esm/next/hooks/useAgGridReactProps.js.map +1 -1
- package/esm/next/hooks/useHeaderComponents.d.ts +8 -0
- package/esm/next/hooks/useHeaderComponents.d.ts.map +1 -0
- package/esm/next/hooks/useHeaderComponents.js +26 -0
- package/esm/next/hooks/useHeaderComponents.js.map +1 -0
- package/esm/next/hooks/useTextWrappingProps.js +2 -2
- package/esm/next/hooks/useTextWrappingProps.js.map +1 -1
- package/esm/next/index.d.ts +1 -0
- package/esm/next/index.d.ts.map +1 -1
- package/esm/next/index.js.map +1 -1
- package/esm/next/types/menu.d.ts +18 -6
- package/esm/next/types/menu.d.ts.map +1 -1
- package/package.json +10 -10
- package/styles/css/main.css +17 -5
- package/styles/css/main.css.map +1 -1
- package/styles/css/pivotTableNext.css +17 -5
- package/styles/css/pivotTableNext.css.map +1 -1
- package/styles/scss/pivotTableNext.scss +24 -5
- package/esm/next/components/Header/HeaderCellWithMenu.d.ts +0 -13
- package/esm/next/components/Header/HeaderCellWithMenu.d.ts.map +0 -1
- package/esm/next/components/Header/HeaderCellWithMenu.js +0 -14
- package/esm/next/components/Header/HeaderCellWithMenu.js.map +0 -1
- package/esm/next/components/Header/HeaderMenu.d.ts +0 -10
- package/esm/next/components/Header/HeaderMenu.d.ts.map +0 -1
- package/esm/next/components/Header/HeaderMenu.js.map +0 -1
- package/esm/next/components/Header/HeaderMenuComponents.d.ts +0 -15
- package/esm/next/components/Header/HeaderMenuComponents.d.ts.map +0 -1
- package/esm/next/components/Header/HeaderMenuComponents.js.map +0 -1
- package/esm/next/components/Header/MeasureGroupHeaderCell.d.ts +0 -9
- package/esm/next/components/Header/MeasureGroupHeaderCell.d.ts.map +0 -1
- package/esm/next/components/Header/MeasureGroupHeaderCell.js +0 -25
- package/esm/next/components/Header/MeasureGroupHeaderCell.js.map +0 -1
- package/esm/next/components/Header/MeasureHeaderCell.d.ts +0 -7
- package/esm/next/components/Header/MeasureHeaderCell.d.ts.map +0 -1
- package/esm/next/components/Header/MeasureHeaderCell.js +0 -22
- package/esm/next/components/Header/MeasureHeaderCell.js.map +0 -1
- package/esm/next/components/Header/PivotGroupHeaderCell.d.ts.map +0 -1
- package/esm/next/components/Header/PivotGroupHeaderCell.js +0 -24
- package/esm/next/components/Header/PivotGroupHeaderCell.js.map +0 -1
- package/esm/next/components/Header/constructAggregationsMenuItems.d.ts.map +0 -1
- package/esm/next/components/Header/constructAggregationsMenuItems.js.map +0 -1
- package/esm/next/components/Header/useHeaderMenu.d.ts +0 -8
- package/esm/next/components/Header/useHeaderMenu.d.ts.map +0 -1
- package/esm/next/components/Header/useHeaderMenu.js +0 -95
- package/esm/next/components/Header/useHeaderMenu.js.map +0 -1
- package/esm/next/components/Header/utils.d.ts.map +0 -1
- package/esm/next/components/Header/utils.js.map +0 -1
|
@@ -24,7 +24,7 @@ export const CorePivotTableNext = React.memo(PivotTableNextImplementation, (prev
|
|
|
24
24
|
return !(executionChanged || deepEqualPropsChanged);
|
|
25
25
|
});
|
|
26
26
|
/**
|
|
27
|
-
* Exclude columnWidths from config to avoid unnecessary re-executions.
|
|
27
|
+
* Exclude columnWidths, textWrapping from config to avoid unnecessary re-executions.
|
|
28
28
|
*/
|
|
29
29
|
function sanitizeConfigForUpdate(config) {
|
|
30
30
|
if (!config) {
|
|
@@ -32,6 +32,7 @@ function sanitizeConfigForUpdate(config) {
|
|
|
32
32
|
}
|
|
33
33
|
const clonedConfig = cloneDeep(config);
|
|
34
34
|
delete clonedConfig.columnSizing?.columnWidths;
|
|
35
|
+
delete clonedConfig.textWrapping;
|
|
35
36
|
return clonedConfig;
|
|
36
37
|
}
|
|
37
38
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PivotTableNextPluggable.js","sourceRoot":"","sources":["../../src/next/PivotTableNextPluggable.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,OAAO,MAAM,mBAAmB,CAAC;AACxC,OAAO,SAAS,MAAM,qBAAqB,CAAC;AAE5C,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAGnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE;IAChG,MAAM,gBAAgB,GAClB,8BAA8B,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;QACjE,8BAA8B,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IAEtE,MAAM,qBAAqB,GAAG;QAC1B,CAAC,uBAAuB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,uBAAuB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACtF,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;QAClC,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC;QACxC,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC;QAChC,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;QACtC,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;QACtC,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC;QACpC,CAAC,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,cAAc,CAAC;KACvD,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAE/C,OAAO,CAAC,CAAC,gBAAgB,IAAI,qBAAqB,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEH;;GAEG;AACH,SAAS,uBAAuB,CAAC,MAAwC;IACrE,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACvC,OAAO,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC;IAC/C,OAAO,YAAY,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,SAAS,8BAA8B,CAAC,SAA6B;IACjE,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC;AACnC,CAAC"}
|
|
1
|
+
{"version":3,"file":"PivotTableNextPluggable.js","sourceRoot":"","sources":["../../src/next/PivotTableNextPluggable.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,OAAO,MAAM,mBAAmB,CAAC;AACxC,OAAO,SAAS,MAAM,qBAAqB,CAAC;AAE5C,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAGnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE;IAChG,MAAM,gBAAgB,GAClB,8BAA8B,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;QACjE,8BAA8B,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IAEtE,MAAM,qBAAqB,GAAG;QAC1B,CAAC,uBAAuB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,uBAAuB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACtF,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;QAClC,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC;QACxC,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC;QAChC,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;QACtC,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;QACtC,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC;QACpC,CAAC,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,cAAc,CAAC;KACvD,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAE/C,OAAO,CAAC,CAAC,gBAAgB,IAAI,qBAAqB,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEH;;GAEG;AACH,SAAS,uBAAuB,CAAC,MAAwC;IACrE,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACvC,OAAO,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC;IAC/C,OAAO,YAAY,CAAC,YAAY,CAAC;IACjC,OAAO,YAAY,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,SAAS,8BAA8B,CAAC,SAA6B;IACjE,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { AgGridHeaderParams } from "../../types/agGrid.js";
|
|
3
|
+
/**
|
|
4
|
+
* Renderer for attribute header.
|
|
5
|
+
*/
|
|
6
|
+
export declare function AttributeHeader(params: AgGridHeaderParams): React.JSX.Element;
|
|
7
|
+
//# sourceMappingURL=AttributeHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AttributeHeader.d.ts","sourceRoot":"","sources":["../../../../src/next/components/Header/AttributeHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAI3D;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,kBAAkB,qBAiBzD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// (C) 2025 GoodData Corporation
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { HeaderCell } from "./HeaderCell/HeaderCell.js";
|
|
4
|
+
import { useHeaderMenu } from "./hooks/useHeaderMenu.js";
|
|
5
|
+
/**
|
|
6
|
+
* Renderer for attribute header.
|
|
7
|
+
*/
|
|
8
|
+
export function AttributeHeader(params) {
|
|
9
|
+
const allowAggregations = false;
|
|
10
|
+
const allowTextWrapping = true;
|
|
11
|
+
const { aggregationsItems, textWrappingItems, handleAggregationsItemClick, handleTextWrappingItemClick } = useHeaderMenu(allowAggregations, allowTextWrapping, [], [], params.api);
|
|
12
|
+
return (React.createElement(HeaderCell, { displayName: params.displayName, aggregationsItems: aggregationsItems, textWrappingItems: textWrappingItems, onAggregationsItemClick: handleAggregationsItemClick, onTextWrappingItemClick: handleTextWrappingItemClick, gridApi: params.api }));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=AttributeHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AttributeHeader.js","sourceRoot":"","sources":["../../../../src/next/components/Header/AttributeHeader.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAA0B;IACtD,MAAM,iBAAiB,GAAG,KAAK,CAAC;IAChC,MAAM,iBAAiB,GAAG,IAAI,CAAC;IAE/B,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,GACpG,aAAa,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAE5E,OAAO,CACH,oBAAC,UAAU,IACP,WAAW,EAAE,MAAM,CAAC,WAAW,EAC/B,iBAAiB,EAAE,iBAAiB,EACpC,iBAAiB,EAAE,iBAAiB,EACpC,uBAAuB,EAAE,2BAA2B,EACpD,uBAAuB,EAAE,2BAA2B,EACpD,OAAO,EAAE,MAAM,CAAC,GAAG,GACrB,CACL,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { IAggregationsSubMenuItem, IAggregationsMenuItem, ITextWrappingMenuItem } from "../../../types/menu.js";
|
|
3
|
+
import { AgGridApi } from "../../../types/agGrid.js";
|
|
4
|
+
interface IHeaderCellWithMenuProps {
|
|
5
|
+
displayName: React.ReactNode;
|
|
6
|
+
aggregationsItems: IAggregationsMenuItem[];
|
|
7
|
+
textWrappingItems: ITextWrappingMenuItem[];
|
|
8
|
+
onAggregationsItemClick: (item: IAggregationsSubMenuItem) => void;
|
|
9
|
+
onTextWrappingItemClick: (item: ITextWrappingMenuItem) => void;
|
|
10
|
+
gridApi?: AgGridApi;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Reusable wrapper component for header cells.
|
|
14
|
+
*/
|
|
15
|
+
export declare function HeaderCell({ displayName, aggregationsItems, textWrappingItems, onAggregationsItemClick, onTextWrappingItemClick, gridApi, }: IHeaderCellWithMenuProps): string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | null | undefined;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=HeaderCell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeaderCell.d.ts","sourceRoot":"","sources":["../../../../../src/next/components/Header/HeaderCell/HeaderCell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,OAAO,EACH,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACxB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAGrD,UAAU,wBAAwB;IAC9B,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;IAC3C,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;IAC3C,uBAAuB,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,IAAI,CAAC;IAClE,uBAAuB,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC/D,OAAO,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EACvB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,OAAO,GACV,EAAE,wBAAwB,gGA0B1B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// (C) 2025 GoodData Corporation
|
|
2
|
+
import React, { useState } from "react";
|
|
3
|
+
import { HeaderMenu } from "./HeaderMenu.js";
|
|
4
|
+
import { e } from "../../../features/styling/bem.js";
|
|
5
|
+
import { usePivotTableProps } from "../../../context/PivotTablePropsContext.js";
|
|
6
|
+
import { useGetDefaultTextWrapping } from "../../../hooks/textWrapping/useGetDefaultTextWrapping.js";
|
|
7
|
+
/**
|
|
8
|
+
* Reusable wrapper component for header cells.
|
|
9
|
+
*/
|
|
10
|
+
export function HeaderCell({ displayName, aggregationsItems, textWrappingItems, onAggregationsItemClick, onTextWrappingItemClick, gridApi, }) {
|
|
11
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
12
|
+
const { config } = usePivotTableProps();
|
|
13
|
+
const getCurrentTextWrapping = useGetDefaultTextWrapping();
|
|
14
|
+
const currentTextWrapping = getCurrentTextWrapping(gridApi, config.textWrapping);
|
|
15
|
+
// Enable ellipsis text truncation when the header text is not text wrapping
|
|
16
|
+
const useTruncating = !currentTextWrapping.wrapHeaderText;
|
|
17
|
+
if (!aggregationsItems.length && !textWrappingItems.length) {
|
|
18
|
+
return displayName;
|
|
19
|
+
}
|
|
20
|
+
return (React.createElement("div", { className: e("header-cell-menu", { "is-open": isOpen, truncated: useTruncating }) },
|
|
21
|
+
React.createElement(HeaderMenu, { aggregationsItems: aggregationsItems, textWrappingItems: textWrappingItems, onAggregationsItemClick: onAggregationsItemClick, onTextWrappingItemClick: onTextWrappingItemClick, isMenuOpened: isOpen, onMenuOpenedChange: (opened) => setIsOpen(opened) }),
|
|
22
|
+
React.createElement("span", null, displayName)));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=HeaderCell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeaderCell.js","sourceRoot":"","sources":["../../../../../src/next/components/Header/HeaderCell/HeaderCell.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,CAAC,EAAE,MAAM,kCAAkC,CAAC;AAMrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAEhF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0DAA0D,CAAC;AAWrG;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,EACvB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,OAAO,GACgB;IACvB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,EAAE,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC;IACxC,MAAM,sBAAsB,GAAG,yBAAyB,EAAE,CAAC;IAC3D,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IAEjF,4EAA4E;IAC5E,MAAM,aAAa,GAAG,CAAC,mBAAmB,CAAC,cAAc,CAAC;IAE1D,IAAI,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;QACzD,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,OAAO,CACH,6BAAK,SAAS,EAAE,CAAC,CAAC,kBAAkB,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;QAClF,oBAAC,UAAU,IACP,iBAAiB,EAAE,iBAAiB,EACpC,iBAAiB,EAAE,iBAAiB,EACpC,uBAAuB,EAAE,uBAAuB,EAChD,uBAAuB,EAAE,uBAAuB,EAChD,YAAY,EAAE,MAAM,EACpB,kBAAkB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GACnD;QACF,kCAAO,WAAW,CAAQ,CACxB,CACT,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { IAggregationsSubMenuItem, IAggregationsMenuItem, ITextWrappingMenuItem } from "../../../types/menu.js";
|
|
3
|
+
export interface IHeaderMenuProps {
|
|
4
|
+
aggregationsItems: IAggregationsMenuItem[];
|
|
5
|
+
textWrappingItems: ITextWrappingMenuItem[];
|
|
6
|
+
onAggregationsItemClick: (item: IAggregationsSubMenuItem) => void;
|
|
7
|
+
onTextWrappingItemClick: (item: ITextWrappingMenuItem) => void;
|
|
8
|
+
isMenuOpened: boolean;
|
|
9
|
+
onMenuOpenedChange: (opened: boolean) => void;
|
|
10
|
+
}
|
|
11
|
+
export declare function HeaderMenu(props: IHeaderMenuProps): React.JSX.Element;
|
|
12
|
+
//# sourceMappingURL=HeaderMenu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeaderMenu.d.ts","sourceRoot":"","sources":["../../../../../src/next/components/Header/HeaderCell/HeaderMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EACH,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACxB,MAAM,wBAAwB,CAAC;AAIhC,MAAM,WAAW,gBAAgB;IAC7B,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;IAC3C,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;IAC3C,uBAAuB,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,IAAI,CAAC;IAClE,uBAAuB,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC/D,YAAY,EAAE,OAAO,CAAC;IACtB,kBAAkB,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CACjD;AAoBD,wBAAgB,UAAU,CAAC,KAAK,EAAE,gBAAgB,qBAgEjD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// (C) 2025 GoodData Corporation
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { UiIcon, UiMenu, Dropdown } from "@gooddata/sdk-ui-kit";
|
|
4
|
-
import { e } from "
|
|
4
|
+
import { e } from "../../../features/styling/bem.js";
|
|
5
5
|
import { buildUiMenuItems, SmallInteractiveItem } from "./HeaderMenuComponents.js";
|
|
6
6
|
function MenuToggler({ onClick }) {
|
|
7
7
|
const handleClick = (event) => {
|
|
@@ -12,21 +12,27 @@ function MenuToggler({ onClick }) {
|
|
|
12
12
|
React.createElement(UiIcon, { type: "ellipsisVertical", ariaHidden: true })));
|
|
13
13
|
}
|
|
14
14
|
export function HeaderMenu(props) {
|
|
15
|
-
const {
|
|
16
|
-
const uiMenuItems = React.useMemo(() => buildUiMenuItems(
|
|
15
|
+
const { aggregationsItems, textWrappingItems, onAggregationsItemClick, onTextWrappingItemClick, isMenuOpened, onMenuOpenedChange, } = props;
|
|
16
|
+
const uiMenuItems = React.useMemo(() => buildUiMenuItems(aggregationsItems, textWrappingItems), [aggregationsItems, textWrappingItems]);
|
|
17
17
|
const handleSelect = React.useCallback((item) => {
|
|
18
|
-
if (item.type
|
|
19
|
-
|
|
20
|
-
onMenuOpenedChange(false);
|
|
18
|
+
if (item.type !== "interactive") {
|
|
19
|
+
return;
|
|
21
20
|
}
|
|
22
|
-
|
|
21
|
+
if (item.data && item.data.type === "aggregation") {
|
|
22
|
+
onAggregationsItemClick(item.data);
|
|
23
|
+
}
|
|
24
|
+
else if (item.data && item.data.type === "textWrapping") {
|
|
25
|
+
onTextWrappingItemClick(item.data);
|
|
26
|
+
}
|
|
27
|
+
onMenuOpenedChange(false);
|
|
28
|
+
}, [onAggregationsItemClick, onTextWrappingItemClick, onMenuOpenedChange]);
|
|
23
29
|
const handleToggle = React.useCallback((desired) => {
|
|
24
30
|
const opened = typeof desired === "boolean" ? desired : !isMenuOpened;
|
|
25
31
|
onMenuOpenedChange(opened);
|
|
26
32
|
}, [isMenuOpened, onMenuOpenedChange]);
|
|
27
|
-
return (React.createElement(Dropdown, { isOpen: isMenuOpened, onToggle: handleToggle, closeOnEscape: true, closeOnOutsideClick: true, accessibilityConfig: { triggerRole: "button", popupRole: "dialog" }, renderButton: ({ toggleDropdown }) => React.createElement(MenuToggler, { onClick:
|
|
33
|
+
return (React.createElement(Dropdown, { isOpen: isMenuOpened, onToggle: handleToggle, closeOnEscape: true, closeOnOutsideClick: true, accessibilityConfig: { triggerRole: "button", popupRole: "dialog" }, renderButton: ({ toggleDropdown }) => React.createElement(MenuToggler, { onClick: toggleDropdown }), renderBody: ({ closeDropdown, ariaAttributes }) => (React.createElement(UiMenu, { items: uiMenuItems, onSelect: handleSelect, onClose: closeDropdown, shouldCloseOnSelect: false, containerBottomPadding: "small", ariaAttributes: {
|
|
28
34
|
id: ariaAttributes.id,
|
|
29
35
|
"aria-labelledby": ariaAttributes["aria-labelledby"],
|
|
30
|
-
},
|
|
36
|
+
}, InteractiveItem: SmallInteractiveItem })) }));
|
|
31
37
|
}
|
|
32
38
|
//# sourceMappingURL=HeaderMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeaderMenu.js","sourceRoot":"","sources":["../../../../../src/next/components/Header/HeaderCell/HeaderMenu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { IUiMenuInteractiveItemProps, IUiMenuItem } from "@gooddata/sdk-ui-kit";
|
|
3
|
+
import { TotalType } from "@gooddata/sdk-model";
|
|
4
|
+
import { IAggregationsMenuItem, IAggregationsSubMenuItem, ITextWrappingMenuItem } from "../../../types/menu.js";
|
|
5
|
+
/**
|
|
6
|
+
* Mapping of total types to their display titles.
|
|
7
|
+
*/
|
|
8
|
+
export declare const TOTAL_TYPE_TITLES: Record<TotalType, string>;
|
|
9
|
+
export type AggregationsMenuItemData = {
|
|
10
|
+
static: React.ReactNode;
|
|
11
|
+
interactive: IAggregationsSubMenuItem | ITextWrappingMenuItem | null;
|
|
12
|
+
};
|
|
13
|
+
export declare const SmallInteractiveItem: React.FC<IUiMenuInteractiveItemProps<AggregationsMenuItemData>>;
|
|
14
|
+
/**
|
|
15
|
+
* Builds complete UI menu items by combining aggregation and text wrapping items.
|
|
16
|
+
*
|
|
17
|
+
* @param aggregationsItems - The aggregation menu items
|
|
18
|
+
* @param textWrappingItems - The text wrapping menu items
|
|
19
|
+
* @returns Complete array of UI menu items
|
|
20
|
+
*/
|
|
21
|
+
export declare function buildUiMenuItems(aggregationsItems: IAggregationsMenuItem[], textWrappingItems: ITextWrappingMenuItem[]): Array<IUiMenuItem<AggregationsMenuItemData>>;
|
|
22
|
+
//# sourceMappingURL=HeaderMenuComponents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeaderMenuComponents.d.ts","sourceRoot":"","sources":["../../../../../src/next/components/Header/HeaderCell/HeaderMenuComponents.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAGH,2BAA2B,EAC3B,WAAW,EAEd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EACH,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACxB,MAAM,wBAAwB,CAAC;AAGhC;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAOvD,CAAC;AA0CF,MAAM,MAAM,wBAAwB,GAAG;IACnC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,EAAE,wBAAwB,GAAG,qBAAqB,GAAG,IAAI,CAAC;CACxE,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAAC,wBAAwB,CAAC,CAEV,CAAC;AAwHxF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC5B,iBAAiB,EAAE,qBAAqB,EAAE,EAC1C,iBAAiB,EAAE,qBAAqB,EAAE,GAC3C,KAAK,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC,CAK9C"}
|
package/esm/next/components/Header/{HeaderMenuComponents.js → HeaderCell/HeaderMenuComponents.js}
RENAMED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { DefaultUiMenuInteractiveItem, Icon, separatorStaticItem, } from "@gooddata/sdk-ui-kit";
|
|
4
4
|
import { useTheme } from "@gooddata/sdk-ui-theme-provider";
|
|
5
|
-
import { e } from "
|
|
5
|
+
import { e } from "../../../features/styling/bem.js";
|
|
6
6
|
/**
|
|
7
7
|
* Mapping of total types to their display titles.
|
|
8
8
|
*/
|
|
@@ -32,14 +32,27 @@ function SubMenuSectionHeader({ variant }) {
|
|
|
32
32
|
React.createElement("span", null, variant === "rows" ? "Rows" : "Columns")));
|
|
33
33
|
}
|
|
34
34
|
export const SmallInteractiveItem = (props) => React.createElement(DefaultUiMenuInteractiveItem, { ...props, size: "small" });
|
|
35
|
-
|
|
35
|
+
/**
|
|
36
|
+
* Builds UI menu items for aggregation functionality.
|
|
37
|
+
*
|
|
38
|
+
* @param aggregationsItems - The aggregation menu items to build from
|
|
39
|
+
* @returns Array of UI menu items for aggregations
|
|
40
|
+
*/
|
|
41
|
+
function buildUiAggregationMenuItems(aggregationsItems) {
|
|
36
42
|
const uiItems = [];
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
items.forEach((item) => {
|
|
40
|
-
const isAnyItemActive = [...item.rows, ...item.columns].some((i) => i.isActive);
|
|
43
|
+
let hasAnyAggregationItem = false;
|
|
44
|
+
aggregationsItems.forEach((item) => {
|
|
41
45
|
const hasRows = item.rows.length > 0;
|
|
42
46
|
const hasColumns = item.columns.length > 0;
|
|
47
|
+
const hasAny = hasRows || hasColumns;
|
|
48
|
+
if (!hasAny) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (!hasAnyAggregationItem) {
|
|
52
|
+
uiItems.push({ type: "static", id: "aggregations-header", data: React.createElement(TopMenuHeader, null) });
|
|
53
|
+
hasAnyAggregationItem = true;
|
|
54
|
+
}
|
|
55
|
+
const isAnyItemActive = [...item.rows, ...item.columns].some((i) => i.isActive);
|
|
43
56
|
const subItems = [];
|
|
44
57
|
if (hasRows) {
|
|
45
58
|
subItems.push({
|
|
@@ -50,7 +63,7 @@ export function buildUiMenuItems(items) {
|
|
|
50
63
|
item.rows.forEach((rowItem) => {
|
|
51
64
|
subItems.push({
|
|
52
65
|
type: "interactive",
|
|
53
|
-
id: rowItem.
|
|
66
|
+
id: rowItem.id,
|
|
54
67
|
stringTitle: rowItem.title,
|
|
55
68
|
isSelected: rowItem.isActive,
|
|
56
69
|
data: rowItem,
|
|
@@ -70,7 +83,7 @@ export function buildUiMenuItems(items) {
|
|
|
70
83
|
item.columns.forEach((colItem) => {
|
|
71
84
|
subItems.push({
|
|
72
85
|
type: "interactive",
|
|
73
|
-
id: colItem.
|
|
86
|
+
id: colItem.id,
|
|
74
87
|
stringTitle: colItem.title,
|
|
75
88
|
isSelected: colItem.isActive,
|
|
76
89
|
data: colItem,
|
|
@@ -88,4 +101,44 @@ export function buildUiMenuItems(items) {
|
|
|
88
101
|
});
|
|
89
102
|
return uiItems;
|
|
90
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Builds UI menu items for text wrapping functionality.
|
|
106
|
+
*
|
|
107
|
+
* @param textWrappingItems - The text wrapping menu items to build from
|
|
108
|
+
* @returns Array of UI menu items for text wrapping
|
|
109
|
+
*/
|
|
110
|
+
function buildUiTextWrappingMenuItems(textWrappingItems) {
|
|
111
|
+
const uiItems = [];
|
|
112
|
+
if (textWrappingItems.length > 0) {
|
|
113
|
+
uiItems.push({
|
|
114
|
+
type: "static",
|
|
115
|
+
id: "text-wrapping-header",
|
|
116
|
+
data: (React.createElement("div", { className: e("header-cell-menu-section-header") },
|
|
117
|
+
React.createElement("span", null, "Wrap text"))),
|
|
118
|
+
});
|
|
119
|
+
textWrappingItems.forEach((wrapItem) => {
|
|
120
|
+
uiItems.push({
|
|
121
|
+
type: "interactive",
|
|
122
|
+
id: wrapItem.id,
|
|
123
|
+
stringTitle: wrapItem.title,
|
|
124
|
+
isSelected: wrapItem.isActive,
|
|
125
|
+
data: wrapItem,
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
return uiItems;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Builds complete UI menu items by combining aggregation and text wrapping items.
|
|
133
|
+
*
|
|
134
|
+
* @param aggregationsItems - The aggregation menu items
|
|
135
|
+
* @param textWrappingItems - The text wrapping menu items
|
|
136
|
+
* @returns Complete array of UI menu items
|
|
137
|
+
*/
|
|
138
|
+
export function buildUiMenuItems(aggregationsItems, textWrappingItems) {
|
|
139
|
+
return [
|
|
140
|
+
...buildUiAggregationMenuItems(aggregationsItems),
|
|
141
|
+
...buildUiTextWrappingMenuItems(textWrappingItems),
|
|
142
|
+
];
|
|
143
|
+
}
|
|
91
144
|
//# sourceMappingURL=HeaderMenuComponents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeaderMenuComponents.js","sourceRoot":"","sources":["../../../../../src/next/components/Header/HeaderCell/HeaderMenuComponents.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { AgGridCellRendererParams } from "../../types/agGrid.js";
|
|
3
|
+
/**
|
|
4
|
+
* Renderer for measure group header.
|
|
5
|
+
*
|
|
6
|
+
* This is a special case when measures are in row (transposition).
|
|
7
|
+
*/
|
|
8
|
+
export declare const MeasureGroupHeader: (params: AgGridCellRendererParams) => React.JSX.Element;
|
|
9
|
+
//# sourceMappingURL=MeasureGroupHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MeasureGroupHeader.d.ts","sourceRoot":"","sources":["../../../../src/next/components/Header/MeasureGroupHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,wBAAwB,EAAmB,MAAM,uBAAuB,CAAC;AAUlF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,QAAQ,wBAAwB,sBA+BlE,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// (C) 2025 GoodData Corporation
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { HeaderCell } from "./HeaderCell/HeaderCell.js";
|
|
4
|
+
import { getColumnMeasureIdentifier, getPivotAttributeDescriptorsForMeasureGroup, getRowScope, isAggregableRowDefinition, } from "./utils/common.js";
|
|
5
|
+
import { useHeaderMenu } from "./hooks/useHeaderMenu.js";
|
|
6
|
+
/**
|
|
7
|
+
* Renderer for measure group header.
|
|
8
|
+
*
|
|
9
|
+
* This is a special case when measures are in row (transposition).
|
|
10
|
+
*/
|
|
11
|
+
export const MeasureGroupHeader = (params) => {
|
|
12
|
+
const colDef = params.colDef;
|
|
13
|
+
const cellData = params.data?.cellDataByColId[colDef.colId];
|
|
14
|
+
const columnDefinition = cellData?.columnDefinition;
|
|
15
|
+
const rowDefinition = cellData?.rowDefinition;
|
|
16
|
+
const pivotAttributeDescriptors = getPivotAttributeDescriptorsForMeasureGroup(columnDefinition);
|
|
17
|
+
const rowScope = getRowScope(rowDefinition);
|
|
18
|
+
const measureIdentifier = getColumnMeasureIdentifier(rowScope);
|
|
19
|
+
const allowAggregations = isAggregableRowDefinition(rowDefinition);
|
|
20
|
+
const allowTextWrapping = false; // due to measures in rows
|
|
21
|
+
const { aggregationsItems, textWrappingItems, handleAggregationsItemClick, handleTextWrappingItemClick } = useHeaderMenu(allowAggregations, allowTextWrapping, measureIdentifier ? [measureIdentifier] : [], pivotAttributeDescriptors, params.api);
|
|
22
|
+
return (React.createElement(HeaderCell, { displayName: params.value, aggregationsItems: aggregationsItems, textWrappingItems: textWrappingItems, onAggregationsItemClick: handleAggregationsItemClick, onTextWrappingItemClick: handleTextWrappingItemClick }));
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=MeasureGroupHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MeasureGroupHeader.js","sourceRoot":"","sources":["../../../../src/next/components/Header/MeasureGroupHeader.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EACH,0BAA0B,EAC1B,2CAA2C,EAC3C,WAAW,EACX,yBAAyB,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAgC,EAAE,EAAE;IACnE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAyB,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,KAAM,CAAC,CAAC;IAC7D,MAAM,gBAAgB,GAAG,QAAQ,EAAE,gBAAgB,CAAC;IACpD,MAAM,aAAa,GAAG,QAAQ,EAAE,aAAa,CAAC;IAE9C,MAAM,yBAAyB,GAAG,2CAA2C,CAAC,gBAAgB,CAAC,CAAC;IAChG,MAAM,QAAQ,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;IAC5C,MAAM,iBAAiB,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IAE/D,MAAM,iBAAiB,GAAG,yBAAyB,CAAC,aAAa,CAAC,CAAC;IACnE,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,0BAA0B;IAE3D,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,GACpG,aAAa,CACT,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,EAC5C,yBAAyB,EACzB,MAAM,CAAC,GAAG,CACb,CAAC;IAEN,OAAO,CACH,oBAAC,UAAU,IACP,WAAW,EAAE,MAAM,CAAC,KAAK,EACzB,iBAAiB,EAAE,iBAAiB,EACpC,iBAAiB,EAAE,iBAAiB,EACpC,uBAAuB,EAAE,2BAA2B,EACpD,uBAAuB,EAAE,2BAA2B,GACtD,CACL,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MeasureHeader.d.ts","sourceRoot":"","sources":["../../../../src/next/components/Header/MeasureHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAmB,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAU5E;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,kBAAkB,qBA8BvD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// (C) 2025 GoodData Corporation
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { HeaderCell } from "./HeaderCell/HeaderCell.js";
|
|
4
|
+
import { useHeaderMenu } from "./hooks/useHeaderMenu.js";
|
|
5
|
+
import { getColumnScope, getColumnMeasureIdentifier, getPivotAttributeDescriptors, isAggregableColumnDefinition, } from "./utils/common.js";
|
|
6
|
+
import { useIsTransposed } from "../../hooks/shared/useIsTransposed.js";
|
|
7
|
+
/**
|
|
8
|
+
* Renderer for measure header.
|
|
9
|
+
*/
|
|
10
|
+
export function MeasureHeader(params) {
|
|
11
|
+
const isTransposed = useIsTransposed();
|
|
12
|
+
const colDef = params.column.getColDef();
|
|
13
|
+
const columnScope = getColumnScope(colDef.context.columnDefinition);
|
|
14
|
+
const pivotAttributeDescriptors = getPivotAttributeDescriptors(columnScope);
|
|
15
|
+
const measureIdentifier = getColumnMeasureIdentifier(columnScope);
|
|
16
|
+
const allowAggregations = isAggregableColumnDefinition(colDef.context.columnDefinition) && !isTransposed;
|
|
17
|
+
const allowTextWrapping = true;
|
|
18
|
+
const { aggregationsItems, textWrappingItems, handleAggregationsItemClick, handleTextWrappingItemClick } = useHeaderMenu(allowAggregations, allowTextWrapping, measureIdentifier ? [measureIdentifier] : [], pivotAttributeDescriptors, params.api);
|
|
19
|
+
return (React.createElement(HeaderCell, { displayName: params.displayName, aggregationsItems: aggregationsItems, textWrappingItems: textWrappingItems, onAggregationsItemClick: handleAggregationsItemClick, onTextWrappingItemClick: handleTextWrappingItemClick, gridApi: params.api }));
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=MeasureHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MeasureHeader.js","sourceRoot":"","sources":["../../../../src/next/components/Header/MeasureHeader.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACH,cAAc,EACd,0BAA0B,EAC1B,4BAA4B,EAC5B,4BAA4B,GAC/B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAA0B;IACpD,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAqB,CAAC;IAE5D,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACpE,MAAM,yBAAyB,GAAG,4BAA4B,CAAC,WAAW,CAAC,CAAC;IAC5E,MAAM,iBAAiB,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAC;IAElE,MAAM,iBAAiB,GAAG,4BAA4B,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC;IACzG,MAAM,iBAAiB,GAAG,IAAI,CAAC;IAE/B,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,GACpG,aAAa,CACT,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,EAC5C,yBAAyB,EACzB,MAAM,CAAC,GAAG,CACb,CAAC;IAEN,OAAO,CACH,oBAAC,UAAU,IACP,WAAW,EAAE,MAAM,CAAC,WAAW,EAC/B,iBAAiB,EAAE,iBAAiB,EACpC,iBAAiB,EAAE,iBAAiB,EACpC,uBAAuB,EAAE,2BAA2B,EACpD,uBAAuB,EAAE,2BAA2B,EACpD,OAAO,EAAE,MAAM,CAAC,GAAG,GACrB,CACL,CAAC;AACN,CAAC"}
|
|
@@ -5,8 +5,8 @@ interface IHeaderGroupCellProps extends AgGridHeaderGroupParams {
|
|
|
5
5
|
pivotGroupDepth?: number;
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
8
|
+
* Renderer for pivot group header.
|
|
9
9
|
*/
|
|
10
|
-
export declare function
|
|
10
|
+
export declare function PivotGroupHeader(params: IHeaderGroupCellProps): React.JSX.Element;
|
|
11
11
|
export {};
|
|
12
|
-
//# sourceMappingURL=
|
|
12
|
+
//# sourceMappingURL=PivotGroupHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PivotGroupHeader.d.ts","sourceRoot":"","sources":["../../../../src/next/components/Header/PivotGroupHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAwB,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAUtF,UAAU,qBAAsB,SAAQ,uBAAuB;IAC3D,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,qBA+B7D"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// (C) 2025 GoodData Corporation
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { getColumnScope, getPivotAttributeDescriptors, isAggregableColumnDefinition, } from "./utils/common.js";
|
|
4
|
+
import { useHeaderMenu } from "./hooks/useHeaderMenu.js";
|
|
5
|
+
import { HeaderCell } from "./HeaderCell/HeaderCell.js";
|
|
6
|
+
import { useIsTransposed } from "../../hooks/shared/useIsTransposed.js";
|
|
7
|
+
/**
|
|
8
|
+
* Renderer for pivot group header.
|
|
9
|
+
*/
|
|
10
|
+
export function PivotGroupHeader(params) {
|
|
11
|
+
const isTransposed = useIsTransposed();
|
|
12
|
+
const colGroupDef = params.columnGroup.getColGroupDef();
|
|
13
|
+
const columnScope = getColumnScope(colGroupDef.context.columnDefinition);
|
|
14
|
+
const pivotAttributeDescriptors = getPivotAttributeDescriptors(columnScope);
|
|
15
|
+
const allowAggregations = params.pivotGroupDepth !== 0 && // Not description level of the pivoting group
|
|
16
|
+
isAggregableColumnDefinition(colGroupDef.context.columnDefinition) &&
|
|
17
|
+
!isTransposed;
|
|
18
|
+
const allowTextWrapping = true;
|
|
19
|
+
const { aggregationsItems, textWrappingItems, handleAggregationsItemClick, handleTextWrappingItemClick } = useHeaderMenu(allowAggregations, allowTextWrapping, params.measureIdentifiers, pivotAttributeDescriptors, params.api);
|
|
20
|
+
return (React.createElement(HeaderCell, { displayName: params.displayName, aggregationsItems: aggregationsItems, textWrappingItems: textWrappingItems, onAggregationsItemClick: handleAggregationsItemClick, onTextWrappingItemClick: handleTextWrappingItemClick }));
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=PivotGroupHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PivotGroupHeader.js","sourceRoot":"","sources":["../../../../src/next/components/Header/PivotGroupHeader.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EACH,cAAc,EACd,4BAA4B,EAC5B,4BAA4B,GAC/B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAOxE;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAA6B;IAC1D,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,cAAc,EAA0B,CAAC;IAEhF,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACzE,MAAM,yBAAyB,GAAG,4BAA4B,CAAC,WAAW,CAAC,CAAC;IAE5E,MAAM,iBAAiB,GACnB,MAAM,CAAC,eAAe,KAAK,CAAC,IAAI,8CAA8C;QAC9E,4BAA4B,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAClE,CAAC,YAAY,CAAC;IAClB,MAAM,iBAAiB,GAAG,IAAI,CAAC;IAE/B,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,GACpG,aAAa,CACT,iBAAiB,EACjB,iBAAiB,EACjB,MAAM,CAAC,kBAAkB,EACzB,yBAAyB,EACzB,MAAM,CAAC,GAAG,CACb,CAAC;IAEN,OAAO,CACH,oBAAC,UAAU,IACP,WAAW,EAAE,MAAM,CAAC,WAAW,EAC/B,iBAAiB,EAAE,iBAAiB,EACpC,iBAAiB,EAAE,iBAAiB,EACpC,uBAAuB,EAAE,2BAA2B,EACpD,uBAAuB,EAAE,2BAA2B,GACtD,CACL,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { IAttributeDescriptor } from "@gooddata/sdk-model";
|
|
2
|
+
import { AgGridApi } from "../../../types/agGrid.js";
|
|
3
|
+
/**
|
|
4
|
+
* Hook for header cell components that handles menu item filtering.
|
|
5
|
+
*
|
|
6
|
+
* @param allowAggregations - Whether aggregation menu items should be included
|
|
7
|
+
* @param allowTextWrapping - Whether text wrapping menu items should be included
|
|
8
|
+
* @param measureIdentifiers - Array of measure identifiers for the cell
|
|
9
|
+
* @param pivotAttributeDescriptors - Array of pivot attribute descriptors
|
|
10
|
+
* @param gridApi - Optional ag-grid API for checking current state
|
|
11
|
+
* @returns Filtered menu items and handlers based on permissions
|
|
12
|
+
*/
|
|
13
|
+
export declare function useHeaderMenu(allowAggregations: boolean, allowTextWrapping: boolean, measureIdentifiers?: string[], pivotAttributeDescriptors?: IAttributeDescriptor[], gridApi?: AgGridApi): {
|
|
14
|
+
aggregationsItems: import("../../../types/menu.js").IAggregationsMenuItem[];
|
|
15
|
+
textWrappingItems: import("../../../types/menu.js").ITextWrappingMenuItem[];
|
|
16
|
+
handleAggregationsItemClick: (item: import("../../../types/menu.js").IAggregationsSubMenuItem) => void;
|
|
17
|
+
handleTextWrappingItemClick: (item: import("../../../types/menu.js").ITextWrappingMenuItem) => void;
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=useHeaderMenu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHeaderMenu.d.ts","sourceRoot":"","sources":["../../../../../src/next/components/Header/hooks/useHeaderMenu.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CACzB,iBAAiB,EAAE,OAAO,EAC1B,iBAAiB,EAAE,OAAO,EAC1B,kBAAkB,GAAE,MAAM,EAAO,EACjC,yBAAyB,GAAE,oBAAoB,EAAO,EACtD,OAAO,CAAC,EAAE,SAAS;;;;;EActB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// (C) 2025 GoodData Corporation
|
|
2
|
+
import { useHeaderMenuProps } from "./useHeaderMenuProps.js";
|
|
3
|
+
/**
|
|
4
|
+
* Hook for header cell components that handles menu item filtering.
|
|
5
|
+
*
|
|
6
|
+
* @param allowAggregations - Whether aggregation menu items should be included
|
|
7
|
+
* @param allowTextWrapping - Whether text wrapping menu items should be included
|
|
8
|
+
* @param measureIdentifiers - Array of measure identifiers for the cell
|
|
9
|
+
* @param pivotAttributeDescriptors - Array of pivot attribute descriptors
|
|
10
|
+
* @param gridApi - Optional ag-grid API for checking current state
|
|
11
|
+
* @returns Filtered menu items and handlers based on permissions
|
|
12
|
+
*/
|
|
13
|
+
export function useHeaderMenu(allowAggregations, allowTextWrapping, measureIdentifiers = [], pivotAttributeDescriptors = [], gridApi) {
|
|
14
|
+
const { aggregationsItems, textWrappingItems, handleAggregationsItemClick, handleTextWrappingItemClick } = useHeaderMenuProps(measureIdentifiers, pivotAttributeDescriptors, gridApi);
|
|
15
|
+
const sanitizedAggregationsItems = allowAggregations ? aggregationsItems : [];
|
|
16
|
+
const sanitizedTextWrappingItems = allowTextWrapping ? textWrappingItems : [];
|
|
17
|
+
return {
|
|
18
|
+
aggregationsItems: sanitizedAggregationsItems,
|
|
19
|
+
textWrappingItems: sanitizedTextWrappingItems,
|
|
20
|
+
handleAggregationsItemClick,
|
|
21
|
+
handleTextWrappingItemClick,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=useHeaderMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHeaderMenu.js","sourceRoot":"","sources":["../../../../../src/next/components/Header/hooks/useHeaderMenu.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAGhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CACzB,iBAA0B,EAC1B,iBAA0B,EAC1B,qBAA+B,EAAE,EACjC,4BAAoD,EAAE,EACtD,OAAmB;IAEnB,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,GACpG,kBAAkB,CAAC,kBAAkB,EAAE,yBAAyB,EAAE,OAAO,CAAC,CAAC;IAE/E,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;IAE9E,OAAO;QACH,iBAAiB,EAAE,0BAA0B;QAC7C,iBAAiB,EAAE,0BAA0B;QAC7C,2BAA2B;QAC3B,2BAA2B;KAC9B,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { IAttributeDescriptor } from "@gooddata/sdk-model";
|
|
2
|
+
import { IAggregationsSubMenuItem, ITextWrappingMenuItem } from "../../../types/menu.js";
|
|
3
|
+
import { AgGridApi } from "../../../types/agGrid.js";
|
|
4
|
+
/**
|
|
5
|
+
* Hook for header cell components that handles menu items and callbacks.
|
|
6
|
+
*
|
|
7
|
+
* @param measureIdentifiers - Array of measure identifiers for the cell
|
|
8
|
+
* @param pivotAttributeDescriptors - Array of pivot attribute descriptors
|
|
9
|
+
* @param gridApi - Optional ag-grid API for checking current text wrapping state
|
|
10
|
+
* @returns Menu items and callbacks
|
|
11
|
+
*/
|
|
12
|
+
export declare const useHeaderMenuProps: (measureIdentifiers: string[], pivotAttributeDescriptors: IAttributeDescriptor[], gridApi?: AgGridApi) => {
|
|
13
|
+
aggregationsItems: import("../../../types/menu.js").IAggregationsMenuItem[];
|
|
14
|
+
handleAggregationsItemClick: (item: IAggregationsSubMenuItem) => void;
|
|
15
|
+
textWrappingItems: ITextWrappingMenuItem[];
|
|
16
|
+
handleTextWrappingItemClick: (item: ITextWrappingMenuItem) => void;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=useHeaderMenuProps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHeaderMenuProps.d.ts","sourceRoot":"","sources":["../../../../../src/next/components/Header/hooks/useHeaderMenuProps.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAyC,MAAM,qBAAqB,CAAC;AAKlG,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAMzF,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAC3B,oBAAoB,MAAM,EAAE,EAC5B,2BAA2B,oBAAoB,EAAE,EACjD,UAAU,SAAS;;wCA6BwB,wBAAwB;;wCASxB,qBAAqB;CAwBnE,CAAC"}
|