@gooddata/sdk-ui-pivot 11.2.0-alpha.1 → 11.2.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/esm/locales.d.ts.map +1 -1
  2. package/esm/locales.js +4 -0
  3. package/esm/locales.js.map +1 -1
  4. package/esm/next/components/Header/AttributeHeader.d.ts.map +1 -1
  5. package/esm/next/components/Header/AttributeHeader.js +7 -6
  6. package/esm/next/components/Header/AttributeHeader.js.map +1 -1
  7. package/esm/next/components/Header/EmptyMeasureGroupHeader.d.ts +1 -2
  8. package/esm/next/components/Header/EmptyMeasureGroupHeader.d.ts.map +1 -1
  9. package/esm/next/components/Header/EmptyMeasureGroupHeader.js +11 -4
  10. package/esm/next/components/Header/EmptyMeasureGroupHeader.js.map +1 -1
  11. package/esm/next/components/Header/HeaderCell/HeaderMenu.d.ts +3 -1
  12. package/esm/next/components/Header/HeaderCell/HeaderMenu.d.ts.map +1 -1
  13. package/esm/next/components/Header/HeaderCell/HeaderMenu.js +6 -3
  14. package/esm/next/components/Header/HeaderCell/HeaderMenu.js.map +1 -1
  15. package/esm/next/components/Header/HeaderCell/HeaderMenuComponents.d.ts +5 -4
  16. package/esm/next/components/Header/HeaderCell/HeaderMenuComponents.d.ts.map +1 -1
  17. package/esm/next/components/Header/HeaderCell/HeaderMenuComponents.js +31 -2
  18. package/esm/next/components/Header/HeaderCell/HeaderMenuComponents.js.map +1 -1
  19. package/esm/next/components/Header/MeasureGroupHeader.d.ts.map +1 -1
  20. package/esm/next/components/Header/MeasureGroupHeader.js +5 -3
  21. package/esm/next/components/Header/MeasureGroupHeader.js.map +1 -1
  22. package/esm/next/components/Header/MeasureHeader.d.ts.map +1 -1
  23. package/esm/next/components/Header/MeasureHeader.js +11 -6
  24. package/esm/next/components/Header/MeasureHeader.js.map +1 -1
  25. package/esm/next/components/Header/PivotGroupHeader.d.ts.map +1 -1
  26. package/esm/next/components/Header/PivotGroupHeader.js +23 -4
  27. package/esm/next/components/Header/PivotGroupHeader.js.map +1 -1
  28. package/esm/next/components/Header/SortIndicator.d.ts +14 -0
  29. package/esm/next/components/Header/SortIndicator.d.ts.map +1 -0
  30. package/esm/next/components/Header/SortIndicator.js +8 -0
  31. package/esm/next/components/Header/SortIndicator.js.map +1 -0
  32. package/esm/next/constants/agGridDefaultProps.d.ts.map +1 -1
  33. package/esm/next/constants/agGridDefaultProps.js +2 -0
  34. package/esm/next/constants/agGridDefaultProps.js.map +1 -1
  35. package/esm/next/features/aggregations/applyTotalsToExecutionDef.d.ts.map +1 -1
  36. package/esm/next/features/aggregations/applyTotalsToExecutionDef.js +3 -2
  37. package/esm/next/features/aggregations/applyTotalsToExecutionDef.js.map +1 -1
  38. package/esm/next/features/aggregations/ordering.d.ts +17 -0
  39. package/esm/next/features/aggregations/ordering.d.ts.map +1 -0
  40. package/esm/next/features/aggregations/ordering.js +21 -0
  41. package/esm/next/features/aggregations/ordering.js.map +1 -0
  42. package/esm/next/features/drilling/events.d.ts +9 -0
  43. package/esm/next/features/drilling/events.d.ts.map +1 -0
  44. package/esm/next/features/drilling/events.js +14 -0
  45. package/esm/next/features/drilling/events.js.map +1 -0
  46. package/esm/next/features/drilling/headerMapping.d.ts +2 -1
  47. package/esm/next/features/drilling/headerMapping.d.ts.map +1 -1
  48. package/esm/next/features/drilling/headerMapping.js +1 -1
  49. package/esm/next/features/drilling/headerMapping.js.map +1 -1
  50. package/esm/next/features/drilling/intersection.d.ts +7 -0
  51. package/esm/next/features/drilling/intersection.d.ts.map +1 -1
  52. package/esm/next/features/drilling/intersection.js +32 -2
  53. package/esm/next/features/drilling/intersection.js.map +1 -1
  54. package/esm/next/features/drilling/isDrillable.d.ts +10 -0
  55. package/esm/next/features/drilling/isDrillable.d.ts.map +1 -1
  56. package/esm/next/features/drilling/isDrillable.js +45 -1
  57. package/esm/next/features/drilling/isDrillable.js.map +1 -1
  58. package/esm/next/features/sorting/agGridSortingApi.d.ts.map +1 -1
  59. package/esm/next/features/sorting/agGridSortingApi.js +13 -4
  60. package/esm/next/features/sorting/agGridSortingApi.js.map +1 -1
  61. package/esm/next/features/sorting/applySortByToColDef.d.ts.map +1 -1
  62. package/esm/next/features/sorting/applySortByToColDef.js +1 -0
  63. package/esm/next/features/sorting/applySortByToColDef.js.map +1 -1
  64. package/esm/next/hooks/header/useHeaderDrilling.d.ts +18 -0
  65. package/esm/next/hooks/header/useHeaderDrilling.d.ts.map +1 -0
  66. package/esm/next/hooks/header/useHeaderDrilling.js +74 -0
  67. package/esm/next/hooks/header/useHeaderDrilling.js.map +1 -0
  68. package/esm/next/hooks/header/useHeaderGroupDrilling.d.ts +15 -0
  69. package/esm/next/hooks/header/useHeaderGroupDrilling.d.ts.map +1 -0
  70. package/esm/next/hooks/header/useHeaderGroupDrilling.js +65 -0
  71. package/esm/next/hooks/header/useHeaderGroupDrilling.js.map +1 -0
  72. package/esm/next/hooks/header/useHeaderMenu.d.ts +37 -0
  73. package/esm/next/hooks/header/useHeaderMenu.d.ts.map +1 -0
  74. package/esm/next/hooks/header/useHeaderMenu.js +65 -0
  75. package/esm/next/hooks/header/useHeaderMenu.js.map +1 -0
  76. package/esm/next/hooks/header/useHeaderMenuAggregations.d.ts +15 -0
  77. package/esm/next/hooks/header/useHeaderMenuAggregations.d.ts.map +1 -0
  78. package/esm/next/{components/Header/hooks/useHeaderMenuProps.js → hooks/header/useHeaderMenuAggregations.js} +7 -30
  79. package/esm/next/hooks/header/useHeaderMenuAggregations.js.map +1 -0
  80. package/esm/next/hooks/header/useHeaderMenuSorting.d.ts +13 -0
  81. package/esm/next/hooks/header/useHeaderMenuSorting.d.ts.map +1 -0
  82. package/esm/next/hooks/header/useHeaderMenuSorting.js +69 -0
  83. package/esm/next/hooks/header/useHeaderMenuSorting.js.map +1 -0
  84. package/esm/next/hooks/header/useHeaderMenuTextWrapping.d.ts +14 -0
  85. package/esm/next/hooks/header/useHeaderMenuTextWrapping.d.ts.map +1 -0
  86. package/esm/next/hooks/header/useHeaderMenuTextWrapping.js +43 -0
  87. package/esm/next/hooks/header/useHeaderMenuTextWrapping.js.map +1 -0
  88. package/esm/next/hooks/sorting/useSyncSort.d.ts.map +1 -1
  89. package/esm/next/hooks/sorting/useSyncSort.js +8 -2
  90. package/esm/next/hooks/sorting/useSyncSort.js.map +1 -1
  91. package/esm/next/hooks/textWrapping/useGetDefaultTextWrapping.d.ts +1 -1
  92. package/esm/next/hooks/textWrapping/useGetDefaultTextWrapping.d.ts.map +1 -1
  93. package/esm/next/hooks/textWrapping/useGetDefaultTextWrapping.js.map +1 -1
  94. package/esm/next/hooks/textWrapping/useUpdateTextWrapping.d.ts +1 -1
  95. package/esm/next/hooks/textWrapping/useUpdateTextWrapping.d.ts.map +1 -1
  96. package/esm/next/hooks/textWrapping/useUpdateTextWrapping.js.map +1 -1
  97. package/esm/next/hooks/totals/useUpdateTotals.d.ts.map +1 -1
  98. package/esm/next/hooks/totals/useUpdateTotals.js +7 -4
  99. package/esm/next/hooks/totals/useUpdateTotals.js.map +1 -1
  100. package/esm/next/hooks/useDrillingProps.d.ts.map +1 -1
  101. package/esm/next/hooks/useDrillingProps.js +2 -5
  102. package/esm/next/hooks/useDrillingProps.js.map +1 -1
  103. package/esm/next/types/agGrid.d.ts +8 -0
  104. package/esm/next/types/agGrid.d.ts.map +1 -1
  105. package/esm/next/types/agGrid.js +11 -1
  106. package/esm/next/types/agGrid.js.map +1 -1
  107. package/esm/next/types/menu.d.ts +12 -0
  108. package/esm/next/types/menu.d.ts.map +1 -1
  109. package/esm/next/types/menu.js +1 -0
  110. package/esm/next/types/menu.js.map +1 -1
  111. package/package.json +10 -10
  112. package/styles/css/main.css +19 -1
  113. package/styles/css/main.css.map +1 -1
  114. package/styles/css/pivotTableNext.css +19 -1
  115. package/styles/css/pivotTableNext.css.map +1 -1
  116. package/styles/scss/pivotTableNext.scss +22 -1
  117. package/esm/next/components/Header/hooks/useHeaderMenu.d.ts +0 -19
  118. package/esm/next/components/Header/hooks/useHeaderMenu.d.ts.map +0 -1
  119. package/esm/next/components/Header/hooks/useHeaderMenu.js +0 -24
  120. package/esm/next/components/Header/hooks/useHeaderMenu.js.map +0 -1
  121. package/esm/next/components/Header/hooks/useHeaderMenuProps.d.ts +0 -18
  122. package/esm/next/components/Header/hooks/useHeaderMenuProps.d.ts.map +0 -1
  123. package/esm/next/components/Header/hooks/useHeaderMenuProps.js.map +0 -1
  124. package/esm/next/components/Header/hooks/useHeaderSorting.d.ts +0 -16
  125. package/esm/next/components/Header/hooks/useHeaderSorting.d.ts.map +0 -1
  126. package/esm/next/components/Header/hooks/useHeaderSorting.js +0 -48
  127. package/esm/next/components/Header/hooks/useHeaderSorting.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"applyTotalsToExecutionDef.js","sourceRoot":"","sources":["../../../../src/next/features/aggregations/applyTotalsToExecutionDef.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAsB,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAGjF;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAClC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAmE,EAAE,EAAE,CAC/F,CAAC,mBAAmD,EAAkC,EAAE;IACpF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,cAAc,EAAE,UAAU,EAAE,aAAa,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC;IAChF,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,mBAAmB,CAAC,UAAU,CAAC;IAEzE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CACtC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,KAAK,KAAK,CAAC,mBAAmB,CAAC,CACpF,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CACzC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,KAAK,KAAK,CAAC,mBAAmB,CAAC,CACvF,CAAC;IAEF,OAAO;QACH,GAAG,mBAAmB;QACtB,UAAU,EAAE;YACR,oBAAoB,CAAC,SAAS,EAAE,aAAa,CAAC;YAC9C,oBAAoB,CAAC,YAAY,EAAE,gBAAgB,CAAC;SACvD;QACD,OAAO,EAAE;YACL,cAAc;YACd,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC;YACtC,eAAe,CAAC,aAAa,EAAE,YAAY,CAAC;SAC/C;KACJ,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"file":"applyTotalsToExecutionDef.js","sourceRoot":"","sources":["../../../../src/next/features/aggregations/applyTotalsToExecutionDef.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAsB,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE1E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAGjF;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAClC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAmE,EAAE,EAAE,CAC/F,CAAC,mBAAmD,EAAkC,EAAE;IACpF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,cAAc,EAAE,UAAU,EAAE,aAAa,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC;IAChF,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,mBAAmB,CAAC,UAAU,CAAC;IAEzE,MAAM,SAAS,GAAG,WAAW,CACzB,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CACpB,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,KAAK,KAAK,CAAC,mBAAmB,CAAC,CACpF,CACJ,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CACpB,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,KAAK,KAAK,CAAC,mBAAmB,CAAC,CACvF,CACJ,CAAC;IAEF,OAAO;QACH,GAAG,mBAAmB;QACtB,UAAU,EAAE;YACR,oBAAoB,CAAC,SAAS,EAAE,aAAa,CAAC;YAC9C,oBAAoB,CAAC,YAAY,EAAE,gBAAgB,CAAC;SACvD;QACD,OAAO,EAAE;YACL,cAAc;YACd,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC;YACtC,eAAe,CAAC,aAAa,EAAE,YAAY,CAAC;SAC/C;KACJ,CAAC;AACN,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { ITotal } from "@gooddata/sdk-model";
2
+ /**
3
+ * Orders totals according to the predefined total type order.
4
+ *
5
+ * This ensures that when column and row aggregations meet at intersections,
6
+ * they maintain consistent ordering so that the intersection is displayed correctly.
7
+ * The ordering follows the same pattern as the old pivot table implementation.
8
+ *
9
+ * Ordering may be used when creating totals inside the table
10
+ * or when totals are provided externally.
11
+ *
12
+ * @param totals - Array of totals to order
13
+ * @returns Ordered array of totals
14
+ * @internal
15
+ */
16
+ export declare function orderTotals(totals: ITotal[]): ITotal[];
17
+ //# sourceMappingURL=ordering.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ordering.d.ts","sourceRoot":"","sources":["../../../../src/next/features/aggregations/ordering.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAI7C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAItD"}
@@ -0,0 +1,21 @@
1
+ // (C) 2025 GoodData Corporation
2
+ import { sortBy } from "lodash-es";
3
+ import { DEFAULT_TOTAL_FUNCTIONS } from "../../constants/internal.js";
4
+ /**
5
+ * Orders totals according to the predefined total type order.
6
+ *
7
+ * This ensures that when column and row aggregations meet at intersections,
8
+ * they maintain consistent ordering so that the intersection is displayed correctly.
9
+ * The ordering follows the same pattern as the old pivot table implementation.
10
+ *
11
+ * Ordering may be used when creating totals inside the table
12
+ * or when totals are provided externally.
13
+ *
14
+ * @param totals - Array of totals to order
15
+ * @returns Ordered array of totals
16
+ * @internal
17
+ */
18
+ export function orderTotals(totals) {
19
+ return sortBy(totals, (total) => DEFAULT_TOTAL_FUNCTIONS.findIndex((rankedItem) => rankedItem === total.type));
20
+ }
21
+ //# sourceMappingURL=ordering.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ordering.js","sourceRoot":"","sources":["../../../../src/next/features/aggregations/ordering.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAInC,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,WAAW,CAAC,MAAgB;IACxC,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAC5B,uBAAuB,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,KAAK,KAAK,CAAC,IAAI,CAAC,CAC/E,CAAC;AACN,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { IDrillEvent } from "@gooddata/sdk-ui";
2
+ /**
3
+ * Creates a custom drill event for embedded scenarios
4
+ *
5
+ * @param drillEvent - The drill event to create
6
+ * @returns The custom drill event
7
+ */
8
+ export declare const createCustomDrillEvent: (drillEvent: IDrillEvent) => CustomEvent<IDrillEvent>;
9
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../src/next/features/drilling/events.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GAAI,YAAY,WAAW,6BAK7D,CAAC"}
@@ -0,0 +1,14 @@
1
+ // (C) 2025 GoodData Corporation
2
+ /**
3
+ * Creates a custom drill event for embedded scenarios
4
+ *
5
+ * @param drillEvent - The drill event to create
6
+ * @returns The custom drill event
7
+ */
8
+ export const createCustomDrillEvent = (drillEvent) => {
9
+ return new CustomEvent("drill", {
10
+ detail: drillEvent,
11
+ bubbles: true,
12
+ });
13
+ };
14
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../../src/next/features/drilling/events.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAIhC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,UAAuB,EAAE,EAAE;IAC9D,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE;QAC5B,MAAM,EAAE,UAAU;QAClB,OAAO,EAAE,IAAI;KAChB,CAAC,CAAC;AACP,CAAC,CAAC"}
@@ -1,4 +1,5 @@
1
- import { IMappingHeader, ITableColumnDefinition, ITableRowDefinition } from "@gooddata/sdk-ui";
1
+ import { IMappingHeader, ITableColumnDefinition, ITableDataHeaderScope, ITableRowDefinition } from "@gooddata/sdk-ui";
2
+ export declare function extractMappingHeadersUpToPosition(scopes: ITableDataHeaderScope[], position: number): IMappingHeader[];
2
3
  export declare function extractAllColumnMappingHeaders(columnDefinition: ITableColumnDefinition): IMappingHeader[];
3
4
  export declare function extractRowMappingHeadersAtPosition(rowDefinition: ITableRowDefinition, position: number): IMappingHeader[];
4
5
  export declare function extractRowMappingHeadersUpToPosition(rowDefinition: ITableRowDefinition, position: number): IMappingHeader[];
@@ -1 +1 @@
1
- {"version":3,"file":"headerMapping.d.ts","sourceRoot":"","sources":["../../../../src/next/features/drilling/headerMapping.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,cAAc,EACd,sBAAsB,EAEtB,mBAAmB,EACtB,MAAM,kBAAkB,CAAC;AA0D1B,wBAAgB,8BAA8B,CAAC,gBAAgB,EAAE,sBAAsB,GAAG,cAAc,EAAE,CAUzG;AAED,wBAAgB,kCAAkC,CAC9C,aAAa,EAAE,mBAAmB,EAClC,QAAQ,EAAE,MAAM,GACjB,cAAc,EAAE,CAMlB;AAED,wBAAgB,oCAAoC,CAChD,aAAa,EAAE,mBAAmB,EAClC,QAAQ,EAAE,MAAM,GACjB,cAAc,EAAE,CAMlB;AAED,wBAAgB,2BAA2B,CAAC,aAAa,EAAE,mBAAmB,GAAG,cAAc,EAAE,CAMhG;AAED,wBAAgB,kCAAkC,CAAC,aAAa,EAAE,mBAAmB,GAAG,cAAc,EAAE,CAQvG"}
1
+ {"version":3,"file":"headerMapping.d.ts","sourceRoot":"","sources":["../../../../src/next/features/drilling/headerMapping.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACtB,MAAM,kBAAkB,CAAC;AAE1B,wBAAgB,iCAAiC,CAC7C,MAAM,EAAE,qBAAqB,EAAE,EAC/B,QAAQ,EAAE,MAAM,GACjB,cAAc,EAAE,CAgBlB;AAqCD,wBAAgB,8BAA8B,CAAC,gBAAgB,EAAE,sBAAsB,GAAG,cAAc,EAAE,CAUzG;AAED,wBAAgB,kCAAkC,CAC9C,aAAa,EAAE,mBAAmB,EAClC,QAAQ,EAAE,MAAM,GACjB,cAAc,EAAE,CAMlB;AAED,wBAAgB,oCAAoC,CAChD,aAAa,EAAE,mBAAmB,EAClC,QAAQ,EAAE,MAAM,GACjB,cAAc,EAAE,CAMlB;AAED,wBAAgB,2BAA2B,CAAC,aAAa,EAAE,mBAAmB,GAAG,cAAc,EAAE,CAMhG;AAED,wBAAgB,kCAAkC,CAAC,aAAa,EAAE,mBAAmB,GAAG,cAAc,EAAE,CAQvG"}
@@ -1,6 +1,6 @@
1
1
  // (C) 2025 GoodData Corporation
2
2
  import { isMeasureDescriptor } from "@gooddata/sdk-model";
3
- function extractMappingHeadersUpToPosition(scopes, position) {
3
+ export function extractMappingHeadersUpToPosition(scopes, position) {
4
4
  return scopes.flatMap((scope, scopeIndex) => {
5
5
  if (scopeIndex > position) {
6
6
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"headerMapping.js","sourceRoot":"","sources":["../../../../src/next/features/drilling/headerMapping.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"headerMapping.js","sourceRoot":"","sources":["../../../../src/next/features/drilling/headerMapping.ts"],"names":[],"mappings":"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"}
@@ -9,4 +9,11 @@ import { AgGridRowData } from "../../types/internal.js";
9
9
  * @returns Array of drill intersection elements
10
10
  */
11
11
  export declare function createDrillIntersection(colDef: AgGridColumnDef, data: AgGridRowData): IDrillEventIntersectionElement[];
12
+ /**
13
+ * Creates drill intersection elements for a header cell
14
+ *
15
+ * @param colDef - The column definition from ag-grid
16
+ * @returns Array of drill intersection elements
17
+ */
18
+ export declare function createHeaderDrillIntersection(colDef: AgGridColumnDef): IDrillEventIntersectionElement[];
12
19
  //# sourceMappingURL=intersection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"intersection.d.ts","sourceRoot":"","sources":["../../../../src/next/features/drilling/intersection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAwC,MAAM,kBAAkB,CAAC;AAGxG,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AA6CxD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACnC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,aAAa,GACpB,8BAA8B,EAAE,CAIlC"}
1
+ {"version":3,"file":"intersection.d.ts","sourceRoot":"","sources":["../../../../src/next/features/drilling/intersection.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,8BAA8B,EAIjC,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EAAE,eAAe,EAAgD,MAAM,uBAAuB,CAAC;AACtG,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAuExD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACnC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,aAAa,GACpB,8BAA8B,EAAE,CAIlC;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,eAAe,GAAG,8BAA8B,EAAE,CAIvG"}
@@ -1,6 +1,7 @@
1
1
  // (C) 2025 GoodData Corporation
2
- import { getDrillIntersection } from "@gooddata/sdk-ui";
3
- import { extractAllColumnMappingHeaders, extractRowMappingHeadersUpToPosition } from "./headerMapping.js";
2
+ import { getDrillIntersection, isValueColumnDefinition, } from "@gooddata/sdk-ui";
3
+ import { extractAllColumnMappingHeaders, extractMappingHeadersUpToPosition, extractRowMappingHeadersUpToPosition, } from "./headerMapping.js";
4
+ import { isAgGridColumnGroupDef } from "../../types/agGrid.js";
4
5
  /**
5
6
  * Creates mapping headers for drill intersection for a cell
6
7
  *
@@ -29,6 +30,25 @@ function createCellMappingHeadersForIntersection(colDef, data) {
29
30
  }
30
31
  return mappingHeaders;
31
32
  }
33
+ /**
34
+ * Creates mapping headers for drill intersection for a header cell
35
+ *
36
+ * @param colDef - The column definition from ag-grid
37
+ * @returns Array of mapping headers
38
+ */
39
+ function createHeaderMappingHeadersForIntersection(colDef) {
40
+ const columnDefinition = colDef.context?.columnDefinition;
41
+ if (!columnDefinition || !isValueColumnDefinition(columnDefinition)) {
42
+ return [];
43
+ }
44
+ const columnScope = columnDefinition.columnScope;
45
+ // With header groups, we use depth to determine which attributes to use for intersection
46
+ // With regular columns, we use all column attributes
47
+ const position = isAgGridColumnGroupDef(colDef)
48
+ ? colDef.headerGroupComponentParams?.pivotGroupDepth
49
+ : columnScope.length - 1;
50
+ return extractMappingHeadersUpToPosition(columnDefinition.columnScope, position);
51
+ }
32
52
  /**
33
53
  * Creates drill intersection elements for a cell
34
54
  *
@@ -40,4 +60,14 @@ export function createDrillIntersection(colDef, data) {
40
60
  const mappingHeaders = createCellMappingHeadersForIntersection(colDef, data);
41
61
  return getDrillIntersection(mappingHeaders);
42
62
  }
63
+ /**
64
+ * Creates drill intersection elements for a header cell
65
+ *
66
+ * @param colDef - The column definition from ag-grid
67
+ * @returns Array of drill intersection elements
68
+ */
69
+ export function createHeaderDrillIntersection(colDef) {
70
+ const mappingHeaders = createHeaderMappingHeadersForIntersection(colDef);
71
+ return getDrillIntersection(mappingHeaders);
72
+ }
43
73
  //# sourceMappingURL=intersection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"intersection.js","sourceRoot":"","sources":["../../../../src/next/features/drilling/intersection.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAkD,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExG,OAAO,EAAE,8BAA8B,EAAE,oCAAoC,EAAE,MAAM,oBAAoB,CAAC;AAI1G;;;;;;GAMG;AACH,SAAS,uCAAuC,CAC5C,MAAuB,EACvB,IAAmB;IAEnB,MAAM,cAAc,GAAqB,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;IAE3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC;IAE9C,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAC5C,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAElD,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACrC,cAAc,CAAC,IAAI,CACf,GAAG,oCAAoC,CAAC,aAAa,EAAE,gBAAgB,CAAC,WAAW,CAAC,CACvF,CAAC;IACN,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC3B,cAAc,CAAC,IAAI,CACf,GAAG,oCAAoC,CAAC,aAAa,EAAE,gBAAgB,CAAC,WAAW,CAAC,CACvF,CAAC;QACF,cAAc,CAAC,IAAI,CAAC,GAAG,8BAA8B,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,cAAc,CAAC;AAC1B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACnC,MAAuB,EACvB,IAAmB;IAEnB,MAAM,cAAc,GAAG,uCAAuC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE7E,OAAO,oBAAoB,CAAC,cAAc,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"intersection.js","sourceRoot":"","sources":["../../../../src/next/features/drilling/intersection.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAGH,oBAAoB,EACpB,uBAAuB,GAC1B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACH,8BAA8B,EAC9B,iCAAiC,EACjC,oCAAoC,GACvC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAyC,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAGtG;;;;;;GAMG;AACH,SAAS,uCAAuC,CAC5C,MAAuB,EACvB,IAAmB;IAEnB,MAAM,cAAc,GAAqB,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;IAE3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC;IAE9C,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAC5C,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAElD,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACrC,cAAc,CAAC,IAAI,CACf,GAAG,oCAAoC,CAAC,aAAa,EAAE,gBAAgB,CAAC,WAAW,CAAC,CACvF,CAAC;IACN,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC3B,cAAc,CAAC,IAAI,CACf,GAAG,oCAAoC,CAAC,aAAa,EAAE,gBAAgB,CAAC,WAAW,CAAC,CACvF,CAAC;QACF,cAAc,CAAC,IAAI,CAAC,GAAG,8BAA8B,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,cAAc,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,SAAS,yCAAyC,CAC9C,MAA8C;IAE9C,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAE1D,IAAI,CAAC,gBAAgB,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClE,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW,CAAC;IAEjD,yFAAyF;IACzF,qDAAqD;IACrD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,CAAC;QAC3C,CAAC,CAAC,MAAM,CAAC,0BAA0B,EAAE,eAAe;QACpD,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IAE7B,OAAO,iCAAiC,CAAC,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACrF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACnC,MAAuB,EACvB,IAAmB;IAEnB,MAAM,cAAc,GAAG,uCAAuC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE7E,OAAO,oBAAoB,CAAC,cAAc,CAAC,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAAC,MAAuB;IACjE,MAAM,cAAc,GAAG,yCAAyC,CAAC,MAAM,CAAC,CAAC;IAEzE,OAAO,oBAAoB,CAAC,cAAc,CAAC,CAAC;AAChD,CAAC"}
@@ -12,4 +12,14 @@ import { AgGridRowData } from "../../types/internal.js";
12
12
  * @returns True if the cell is drillable, false otherwise
13
13
  */
14
14
  export declare function isCellDrillable(colDef: AgGridColumnDef, data: AgGridRowData, drillableItems: ExplicitDrill[], dataViewFacade?: DataViewFacade): boolean;
15
+ /**
16
+ * Checks if a header cell is drillable based on drillable items and column definition
17
+ *
18
+ * @param colDef - The column definition from ag-grid
19
+ * @param drillableItems - Array of drillable items to check against
20
+ * @param dataViewFacade - Current data view facade for context
21
+ * @param columnHeadersPosition - Position of column headers ("left" or "top")
22
+ * @returns True if the header cell is drillable, false otherwise
23
+ */
24
+ export declare function isHeaderCellDrillable(colDef: AgGridColumnDef, drillableItems: ExplicitDrill[], dataViewFacade?: DataViewFacade, columnHeadersPosition?: string): boolean;
15
25
  //# sourceMappingURL=isDrillable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"isDrillable.d.ts","sourceRoot":"","sources":["../../../../src/next/features/drilling/isDrillable.ts"],"names":[],"mappings":"AACA,OAAO,EACH,cAAc,EACd,aAAa,EAIhB,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAgDxD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC3B,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,aAAa,EACnB,cAAc,EAAE,aAAa,EAAE,EAC/B,cAAc,CAAC,EAAE,cAAc,GAChC,OAAO,CAYT"}
1
+ {"version":3,"file":"isDrillable.d.ts","sourceRoot":"","sources":["../../../../src/next/features/drilling/isDrillable.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,cAAc,EACd,aAAa,EAKhB,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EAAE,eAAe,EAAwB,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAgDxD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC3B,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,aAAa,EACnB,cAAc,EAAE,aAAa,EAAE,EAC/B,cAAc,CAAC,EAAE,cAAc,GAChC,OAAO,CAYT;AAkCD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACjC,MAAM,EAAE,eAAe,EACvB,cAAc,EAAE,aAAa,EAAE,EAC/B,cAAc,CAAC,EAAE,cAAc,EAC/B,qBAAqB,CAAC,EAAE,MAAM,GAC/B,OAAO,CAkBT"}
@@ -1,5 +1,5 @@
1
1
  // (C) 2025 GoodData Corporation
2
- import { convertDrillableItemsToPredicates, isSomeHeaderPredicateMatched, } from "@gooddata/sdk-ui";
2
+ import { convertDrillableItemsToPredicates, isSomeHeaderPredicateMatched, isValueColumnDefinition, } from "@gooddata/sdk-ui";
3
3
  import { extractAllColumnMappingHeaders, extractAllRowMeasureMappingHeaders, extractRowMappingHeadersAtPosition, } from "./headerMapping.js";
4
4
  /**
5
5
  * Extracts headers for drill intersection for a cell
@@ -53,4 +53,48 @@ export function isCellDrillable(colDef, data, drillableItems, dataViewFacade) {
53
53
  const drillablePredicates = convertDrillableItemsToPredicates(drillableItems);
54
54
  return mappingHeaders.some((header) => isSomeHeaderPredicateMatched(drillablePredicates, header, dataViewFacade));
55
55
  }
56
+ /**
57
+ * Extracts headers for drill intersection for a header cell
58
+ *
59
+ * @param colDef - The column definition from ag-grid
60
+ * @param isTransposed - Whether the table is transposed
61
+ * @param columnHeadersPosition - Position of column headers
62
+ * @returns Array of mapping headers
63
+ */
64
+ function getHeaderCellDrillHeaders(colDef, isTransposed, columnHeadersPosition) {
65
+ // Header drilling only works in transposed mode with headers on left
66
+ if (!isTransposed || columnHeadersPosition !== "left") {
67
+ return [];
68
+ }
69
+ const columnDefinition = colDef.context?.columnDefinition;
70
+ if (!columnDefinition) {
71
+ return [];
72
+ }
73
+ if (!isValueColumnDefinition(columnDefinition)) {
74
+ return [];
75
+ }
76
+ // For all valid header types, use the standard column mapping extraction
77
+ return extractAllColumnMappingHeaders(columnDefinition);
78
+ }
79
+ /**
80
+ * Checks if a header cell is drillable based on drillable items and column definition
81
+ *
82
+ * @param colDef - The column definition from ag-grid
83
+ * @param drillableItems - Array of drillable items to check against
84
+ * @param dataViewFacade - Current data view facade for context
85
+ * @param columnHeadersPosition - Position of column headers ("left" or "top")
86
+ * @returns True if the header cell is drillable, false otherwise
87
+ */
88
+ export function isHeaderCellDrillable(colDef, drillableItems, dataViewFacade, columnHeadersPosition) {
89
+ if (!dataViewFacade || !columnHeadersPosition) {
90
+ return false;
91
+ }
92
+ const isTransposed = dataViewFacade.data().asTable().isTransposed;
93
+ const mappingHeaders = getHeaderCellDrillHeaders(colDef, isTransposed, columnHeadersPosition);
94
+ if (mappingHeaders.length === 0) {
95
+ return false;
96
+ }
97
+ const drillablePredicates = convertDrillableItemsToPredicates(drillableItems);
98
+ return mappingHeaders.some((header) => isSomeHeaderPredicateMatched(drillablePredicates, header, dataViewFacade));
99
+ }
56
100
  //# sourceMappingURL=isDrillable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isDrillable.js","sourceRoot":"","sources":["../../../../src/next/features/drilling/isDrillable.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAIH,iCAAiC,EACjC,4BAA4B,GAC/B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACH,8BAA8B,EAC9B,kCAAkC,EAClC,kCAAkC,GACrC,MAAM,oBAAoB,CAAC;AAI5B;;;;;;;GAOG;AACH,SAAS,mBAAmB,CACxB,MAAuB,EACvB,IAAmB,EACnB,YAAqB;IAErB,MAAM,cAAc,GAAqB,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;IAE3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC;IAE9C,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAC5C,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAElD,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACrC,cAAc,CAAC,IAAI,CACf,GAAG,kCAAkC,CAAC,aAAa,EAAE,gBAAgB,CAAC,WAAW,CAAC,CACrF,CAAC;IACN,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC3B,IAAI,YAAY,EAAE,CAAC;YACf,cAAc,CAAC,IAAI,CAAC,GAAG,kCAAkC,CAAC,aAAa,CAAC,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACJ,cAAc,CAAC,IAAI,CAAC,GAAG,8BAA8B,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC7E,CAAC;IACL,CAAC;IAED,OAAO,cAAc,CAAC;AAC1B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAC3B,MAAuB,EACvB,IAAmB,EACnB,cAA+B,EAC/B,cAA+B;IAE/B,MAAM,YAAY,GAAG,cAAc,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC;IAC5E,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACvE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;QACjD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,mBAAmB,GAAG,iCAAiC,CAAC,cAAc,CAAC,CAAC;IAE9E,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,MAAsB,EAAE,EAAE,CAClD,4BAA4B,CAAC,mBAAmB,EAAE,MAAM,EAAE,cAAc,CAAC,CAC5E,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"isDrillable.js","sourceRoot":"","sources":["../../../../src/next/features/drilling/isDrillable.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"agGridSortingApi.d.ts","sourceRoot":"","sources":["../../../../src/next/features/sorting/agGridSortingApi.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,GAAG,aAAa,EAAE,CAQhE"}
1
+ {"version":3,"file":"agGridSortingApi.d.ts","sourceRoot":"","sources":["../../../../src/next/features/sorting/agGridSortingApi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,GAAG,aAAa,EAAE,CAmBhE"}
@@ -1,13 +1,22 @@
1
+ // (C) 2025 GoodData Corporation
1
2
  /**
2
3
  * Get the current sort model from the grid API
3
4
  *
4
5
  * @alpha
5
6
  */
6
7
  export function getSortModel(gridApi) {
7
- return gridApi
8
- .getColumnState()
9
- .filter((col) => col.sort !== null)
10
- .map((col) => ({
8
+ const sortedColumns = gridApi.getColumnState().filter((col) => col.sort !== null);
9
+ // Check if any column has sortIndex to preserve multi-sort order
10
+ const hasSortIndex = sortedColumns.some((col) => col.sortIndex !== null);
11
+ if (hasSortIndex) {
12
+ // Sort by sortIndex to preserve the order of multi-sort
13
+ sortedColumns.sort((a, b) => {
14
+ const aIndex = a.sortIndex ?? Number.MAX_SAFE_INTEGER;
15
+ const bIndex = b.sortIndex ?? Number.MAX_SAFE_INTEGER;
16
+ return aIndex - bIndex;
17
+ });
18
+ }
19
+ return sortedColumns.map((col) => ({
11
20
  colId: col.colId,
12
21
  sort: col.sort,
13
22
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"agGridSortingApi.js","sourceRoot":"","sources":["../../../../src/next/features/sorting/agGridSortingApi.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,OAAkB;IAC3C,OAAO,OAAO;SACT,cAAc,EAAE;SAChB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC;SAClC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACX,KAAK,EAAE,GAAG,CAAC,KAAM;QACjB,IAAI,EAAE,GAAG,CAAC,IAAK;KAClB,CAAC,CAAC,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"agGridSortingApi.js","sourceRoot":"","sources":["../../../../src/next/features/sorting/agGridSortingApi.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAMhC;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,OAAkB;IAC3C,MAAM,aAAa,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAElF,iEAAiE;IACjE,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;IAEzE,IAAI,YAAY,EAAE,CAAC;QACf,wDAAwD;QACxD,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACxB,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,gBAAgB,CAAC;YACtD,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,gBAAgB,CAAC;YACtD,OAAO,MAAM,GAAG,MAAM,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,GAAG,CAAC,KAAM;QACjB,IAAI,EAAE,GAAG,CAAC,IAAK;KAClB,CAAC,CAAC,CAAC;AACR,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"applySortByToColDef.d.ts","sourceRoot":"","sources":["../../../../src/next/features/sorting/applySortByToColDef.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAiB,MAAM,qBAAqB,CAAC;AAG/D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAC3B,QAAQ,SAAS,EAAE,MACnB,QAAQ,eAAe,KAAG,eAe1B,CAAC"}
1
+ {"version":3,"file":"applySortByToColDef.d.ts","sourceRoot":"","sources":["../../../../src/next/features/sorting/applySortByToColDef.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAiB,MAAM,qBAAqB,CAAC;AAG/D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAC3B,QAAQ,SAAS,EAAE,MACnB,QAAQ,eAAe,KAAG,eAgB1B,CAAC"}
@@ -18,6 +18,7 @@ export const applySortByToColDef = (sortBy) => (colDef) => {
18
18
  return {
19
19
  ...colDef,
20
20
  initialSort: sortDirection(sort),
21
+ initialSortIndex: sortBy.indexOf(sort),
21
22
  };
22
23
  };
23
24
  //# sourceMappingURL=applySortByToColDef.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"applySortByToColDef.js","sourceRoot":"","sources":["../../../../src/next/features/sorting/applySortByToColDef.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAa,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAG7E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAC5B,CAAC,MAAmB,EAAE,EAAE,CACxB,CAAC,MAAuB,EAAmB,EAAE;IACzC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,0BAA0B,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAEjF,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,OAAO;QACH,GAAG,MAAM;QACT,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC;KACnC,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"file":"applySortByToColDef.js","sourceRoot":"","sources":["../../../../src/next/features/sorting/applySortByToColDef.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAa,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAG7E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAC5B,CAAC,MAAmB,EAAE,EAAE,CACxB,CAAC,MAAuB,EAAmB,EAAE;IACzC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,0BAA0B,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAEjF,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,OAAO;QACH,GAAG,MAAM;QACT,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC;QAChC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;KACzC,CAAC;AACN,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { MouseEvent } from "react";
2
+ import { AgGridHeaderParams } from "../../types/agGrid.js";
3
+ /**
4
+ * Custom hook that provides header drilling functionality.
5
+ * Returns a click handler that can be used alongside sorting functionality.
6
+ *
7
+ * @param params - AgGrid header parameters
8
+ * @returns Object with header drilling functions
9
+ * @internal
10
+ */
11
+ export declare function useHeaderDrilling(params: AgGridHeaderParams | null): {
12
+ handleHeaderDrill: (event: MouseEvent) => boolean;
13
+ isDrillable: boolean;
14
+ } | {
15
+ handleHeaderDrill: () => void;
16
+ isDrillable: boolean;
17
+ };
18
+ //# sourceMappingURL=useHeaderDrilling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHeaderDrilling.d.ts","sourceRoot":"","sources":["../../../../src/next/hooks/header/useHeaderDrilling.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAwB,MAAM,OAAO,CAAC;AAczD,OAAO,EAAmB,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE5E;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;+BAqBnD,UAAU;;;;;EA+CzB"}
@@ -0,0 +1,74 @@
1
+ // (C) 2025 GoodData Corporation
2
+ import { useCallback, useMemo } from "react";
3
+ import { VisualizationTypes, isValueColumnDefinition, } from "@gooddata/sdk-ui";
4
+ import { useCurrentDataView } from "../../context/CurrentDataViewContext.js";
5
+ import { usePivotTableProps } from "../../context/PivotTablePropsContext.js";
6
+ import { createCustomDrillEvent } from "../../features/drilling/events.js";
7
+ import { createHeaderDrillIntersection } from "../../features/drilling/intersection.js";
8
+ import { isHeaderCellDrillable } from "../../features/drilling/isDrillable.js";
9
+ /**
10
+ * Custom hook that provides header drilling functionality.
11
+ * Returns a click handler that can be used alongside sorting functionality.
12
+ *
13
+ * @param params - AgGrid header parameters
14
+ * @returns Object with header drilling functions
15
+ * @internal
16
+ */
17
+ export function useHeaderDrilling(params) {
18
+ const { drillableItems, onDrill, config } = usePivotTableProps();
19
+ const { currentDataView } = useCurrentDataView();
20
+ /**
21
+ * Check if the header cell is drillable (memoized)
22
+ */
23
+ const isDrillable = useMemo(() => {
24
+ if (!drillableItems.length || !currentDataView || !params) {
25
+ return false;
26
+ }
27
+ const colDef = params.column.getColDef();
28
+ return isHeaderCellDrillable(colDef, drillableItems, currentDataView, config.columnHeadersPosition);
29
+ }, [drillableItems, currentDataView, params, config.columnHeadersPosition]);
30
+ /**
31
+ * Handle header click for drilling
32
+ * This function should be called after sorting logic to avoid interference
33
+ */
34
+ const handleHeaderDrill = useCallback((event) => {
35
+ if (!onDrill || !isDrillable || !currentDataView || !params) {
36
+ return false;
37
+ }
38
+ const colDef = params.column.getColDef();
39
+ const columnDefinition = colDef.context?.columnDefinition;
40
+ const rowIndex = isValueColumnDefinition(columnDefinition)
41
+ ? columnDefinition.columnScope.length - 1
42
+ : -1;
43
+ // Create drill context for header
44
+ const drillContext = {
45
+ type: VisualizationTypes.TABLE,
46
+ element: "cell",
47
+ columnIndex: colDef.context?.columnDefinition.columnIndex ?? 0,
48
+ rowIndex,
49
+ row: [], // No row data for header
50
+ intersection: createHeaderDrillIntersection(colDef),
51
+ };
52
+ // Create drill event
53
+ const drillEvent = {
54
+ dataView: currentDataView.dataView,
55
+ drillContext,
56
+ };
57
+ if (onDrill(drillEvent)) {
58
+ const customEvent = createCustomDrillEvent(drillEvent);
59
+ event.target?.dispatchEvent(customEvent);
60
+ return true;
61
+ }
62
+ return false;
63
+ }, [onDrill, isDrillable, params, currentDataView]);
64
+ return params
65
+ ? {
66
+ handleHeaderDrill,
67
+ isDrillable,
68
+ }
69
+ : {
70
+ handleHeaderDrill: () => { },
71
+ isDrillable: false,
72
+ };
73
+ }
74
+ //# sourceMappingURL=useHeaderDrilling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHeaderDrilling.js","sourceRoot":"","sources":["../../../../src/next/hooks/header/useHeaderDrilling.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { MouseEvent } from "react";
2
+ import { AgGridHeaderGroupParams } from "../../types/agGrid.js";
3
+ /**
4
+ * Custom hook that provides header drilling functionality for group headers.
5
+ * Returns a click handler that can be used for group header drilling.
6
+ *
7
+ * @param params - AgGrid header group parameters
8
+ * @returns Object with header drilling functions
9
+ * @internal
10
+ */
11
+ export declare function useHeaderGroupDrilling(params: AgGridHeaderGroupParams): {
12
+ handleHeaderDrill: (event: MouseEvent) => boolean;
13
+ isDrillable: boolean;
14
+ };
15
+ //# sourceMappingURL=useHeaderGroupDrilling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHeaderGroupDrilling.d.ts","sourceRoot":"","sources":["../../../../src/next/hooks/header/useHeaderGroupDrilling.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAwB,MAAM,OAAO,CAAC;AASzD,OAAO,EAAwB,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEtF;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,uBAAuB;+BAyBtD,UAAU;;EAuCzB"}
@@ -0,0 +1,65 @@
1
+ // (C) 2025 GoodData Corporation
2
+ import { useCallback, useMemo } from "react";
3
+ import { VisualizationTypes } from "@gooddata/sdk-ui";
4
+ import { useCurrentDataView } from "../../context/CurrentDataViewContext.js";
5
+ import { usePivotTableProps } from "../../context/PivotTablePropsContext.js";
6
+ import { createCustomDrillEvent } from "../../features/drilling/events.js";
7
+ import { createHeaderDrillIntersection } from "../../features/drilling/intersection.js";
8
+ import { isHeaderCellDrillable } from "../../features/drilling/isDrillable.js";
9
+ /**
10
+ * Custom hook that provides header drilling functionality for group headers.
11
+ * Returns a click handler that can be used for group header drilling.
12
+ *
13
+ * @param params - AgGrid header group parameters
14
+ * @returns Object with header drilling functions
15
+ * @internal
16
+ */
17
+ export function useHeaderGroupDrilling(params) {
18
+ const { drillableItems, onDrill, config } = usePivotTableProps();
19
+ const { currentDataView } = useCurrentDataView();
20
+ /**
21
+ * Check if the header group is drillable (memoized)
22
+ */
23
+ const isDrillable = useMemo(() => {
24
+ if (!drillableItems.length || !currentDataView) {
25
+ return false;
26
+ }
27
+ const colGroupDef = params.columnGroup.getColGroupDef();
28
+ return isHeaderCellDrillable(colGroupDef, drillableItems, currentDataView, config.columnHeadersPosition);
29
+ }, [drillableItems, currentDataView, params.columnGroup, config.columnHeadersPosition]);
30
+ /**
31
+ * Handle header group click for drilling
32
+ */
33
+ const handleHeaderDrill = useCallback((event) => {
34
+ if (!onDrill || !isDrillable || !currentDataView) {
35
+ return false;
36
+ }
37
+ const colGroupDef = params.columnGroup.getColGroupDef();
38
+ const rowIndex = colGroupDef.headerGroupComponentParams?.pivotGroupDepth ?? -1;
39
+ // Create drill context for header group
40
+ const drillContext = {
41
+ type: VisualizationTypes.TABLE,
42
+ element: "cell",
43
+ columnIndex: colGroupDef.context?.columnDefinition.columnIndex ?? 0,
44
+ rowIndex,
45
+ row: [], // No row data for header
46
+ intersection: createHeaderDrillIntersection(colGroupDef),
47
+ };
48
+ // Create drill event
49
+ const drillEvent = {
50
+ dataView: currentDataView.dataView,
51
+ drillContext,
52
+ };
53
+ if (onDrill(drillEvent)) {
54
+ const customEvent = createCustomDrillEvent(drillEvent);
55
+ event.target?.dispatchEvent(customEvent);
56
+ return true;
57
+ }
58
+ return false;
59
+ }, [onDrill, isDrillable, params.columnGroup, currentDataView]);
60
+ return {
61
+ handleHeaderDrill,
62
+ isDrillable,
63
+ };
64
+ }
65
+ //# sourceMappingURL=useHeaderGroupDrilling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHeaderGroupDrilling.js","sourceRoot":"","sources":["../../../../src/next/hooks/header/useHeaderGroupDrilling.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAc,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,EAAwC,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE5F,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,6BAA6B,EAAE,MAAM,yCAAyC,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAG/E;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAA+B;IAClE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC;IACjE,MAAM,EAAE,eAAe,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAEjD;;OAEG;IACH,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE;QAC7B,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC7C,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,cAAc,EAA0B,CAAC;QAChF,OAAO,qBAAqB,CACxB,WAAW,EACX,cAAc,EACd,eAAe,EACf,MAAM,CAAC,qBAAqB,CAC/B,CAAC;IACN,CAAC,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAExF;;OAEG;IACH,MAAM,iBAAiB,GAAG,WAAW,CACjC,CAAC,KAAiB,EAAE,EAAE;QAClB,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,IAAI,CAAC,eAAe,EAAE,CAAC;YAC/C,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,cAAc,EAA0B,CAAC;QAChF,MAAM,QAAQ,GAAG,WAAW,CAAC,0BAA0B,EAAE,eAAe,IAAI,CAAC,CAAC,CAAC;QAE/E,wCAAwC;QACxC,MAAM,YAAY,GAA4B;YAC1C,IAAI,EAAE,kBAAkB,CAAC,KAAK;YAC9B,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,WAAW,CAAC,OAAO,EAAE,gBAAgB,CAAC,WAAW,IAAI,CAAC;YACnE,QAAQ;YACR,GAAG,EAAE,EAAE,EAAE,yBAAyB;YAClC,YAAY,EAAE,6BAA6B,CAAC,WAAW,CAAC;SAC3D,CAAC;QAEF,qBAAqB;QACrB,MAAM,UAAU,GAAgB;YAC5B,QAAQ,EAAE,eAAe,CAAC,QAAQ;YAClC,YAAY;SACf,CAAC;QAEF,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACtB,MAAM,WAAW,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;YACvD,KAAK,CAAC,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC,EACD,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,eAAe,CAAC,CAC9D,CAAC;IAEF,OAAO;QACH,iBAAiB;QACjB,WAAW;KACd,CAAC;AACN,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { MouseEvent } from "react";
2
+ import { IAttributeDescriptor } from "@gooddata/sdk-model";
3
+ import { AgGridHeaderParams } from "../../types/agGrid.js";
4
+ /**
5
+ * Hook for header cell components that handles menu item filtering.
6
+ *
7
+ * @param allowAggregations - Whether aggregation menu items should be included
8
+ * @param allowTextWrapping - Whether text wrapping menu items should be included
9
+ * @param measureIdentifiers - Array of measure identifiers for the cell
10
+ * @param pivotAttributeDescriptors - Array of pivot attribute descriptors
11
+ * @param gridApi - Optional ag-grid API for checking current state
12
+ * @returns Filtered menu items and handlers based on permissions
13
+ */
14
+ export declare function useHeaderMenu(options: {
15
+ allowAggregations: boolean;
16
+ allowTextWrapping: boolean;
17
+ allowSorting: boolean;
18
+ allowDrilling: boolean;
19
+ }, additionalContext: {
20
+ measureIdentifiers: string[];
21
+ pivotAttributeDescriptors: IAttributeDescriptor[];
22
+ }, agGridHeaderParams: AgGridHeaderParams | null): {
23
+ handleHeaderClick: (event: MouseEvent<HTMLDivElement>) => void;
24
+ hasMenuItems: boolean;
25
+ handleHeaderDrill: ((event: MouseEvent) => boolean) | (() => void);
26
+ isDrillable: boolean;
27
+ sortingItems: import("../../types/menu.js").ISortingMenuItem[];
28
+ sortDirection: import("ag-grid-community").SortDirection | undefined;
29
+ sortIndex: number | undefined;
30
+ handleSortingItemClick: (item: import("../../types/menu.js").ISortingMenuItem) => void;
31
+ handleProgressSort: () => void;
32
+ textWrappingItems: import("../../types/menu.js").ITextWrappingMenuItem[];
33
+ handleTextWrappingItemClick: (item: import("../../types/menu.js").ITextWrappingMenuItem) => void;
34
+ aggregationsItems: import("../../types/menu.js").IAggregationsMenuItem[];
35
+ handleAggregationsItemClick: (item: import("../../types/menu.js").IAggregationsSubMenuItem) => void;
36
+ };
37
+ //# sourceMappingURL=useHeaderMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHeaderMenu.d.ts","sourceRoot":"","sources":["../../../../src/next/hooks/header/useHeaderMenu.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAM3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CACzB,OAAO,EAAE;IACL,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;CAC1B,EACD,iBAAiB,EAAE;IACf,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,yBAAyB,EAAE,oBAAoB,EAAE,CAAC;CACrD,EACD,kBAAkB,EAAE,kBAAkB,GAAG,IAAI;+BA2CX,UAAU,CAAC,cAAc,CAAC;;;;;;;;;;;;;EAuB/D"}