@gooddata/sdk-ui-charts 11.47.0-alpha.0 → 11.47.0-alpha.1

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 (62) hide show
  1. package/esm/charts/mekko/CoreMekko.d.ts +3 -0
  2. package/esm/charts/mekko/CoreMekko.d.ts.map +1 -0
  3. package/esm/charts/mekko/CoreMekko.js +7 -0
  4. package/esm/charts/mekko/Mekko.d.ts +51 -0
  5. package/esm/charts/mekko/Mekko.d.ts.map +1 -0
  6. package/esm/charts/mekko/Mekko.js +55 -0
  7. package/esm/highcharts/ChartTransformation.d.ts.map +1 -1
  8. package/esm/highcharts/ChartTransformation.js +13 -4
  9. package/esm/highcharts/adapter/Chart.d.ts +1 -0
  10. package/esm/highcharts/adapter/Chart.d.ts.map +1 -1
  11. package/esm/highcharts/adapter/Chart.js +1 -0
  12. package/esm/highcharts/adapter/chartPlugins.d.ts.map +1 -1
  13. package/esm/highcharts/adapter/chartPlugins.js +4 -1
  14. package/esm/highcharts/adapter/legendBuilder.d.ts.map +1 -1
  15. package/esm/highcharts/adapter/legendBuilder.js +1 -0
  16. package/esm/highcharts/adapter/plugins/pointShapeSymbols.d.ts +11 -0
  17. package/esm/highcharts/adapter/plugins/pointShapeSymbols.d.ts.map +1 -0
  18. package/esm/highcharts/adapter/plugins/pointShapeSymbols.js +20 -0
  19. package/esm/highcharts/chartTypes/_chartCreators/customConfiguration.d.ts.map +1 -1
  20. package/esm/highcharts/chartTypes/_chartCreators/customConfiguration.js +1 -0
  21. package/esm/highcharts/chartTypes/_chartCreators/customTooltip/identifierMapping.d.ts.map +1 -1
  22. package/esm/highcharts/chartTypes/_chartCreators/customTooltip/identifierMapping.js +4 -0
  23. package/esm/highcharts/chartTypes/_chartCreators/drilldownEventing.d.ts.map +1 -1
  24. package/esm/highcharts/chartTypes/_chartCreators/drilldownEventing.js +8 -1
  25. package/esm/highcharts/chartTypes/_chartCreators/getOptionalStackingConfiguration.d.ts +1 -1
  26. package/esm/highcharts/chartTypes/_chartCreators/getOptionalStackingConfiguration.d.ts.map +1 -1
  27. package/esm/highcharts/chartTypes/_chartCreators/getOptionalStackingConfiguration.js +8 -4
  28. package/esm/highcharts/chartTypes/_chartCreators/highChartsCreators.d.ts.map +1 -1
  29. package/esm/highcharts/chartTypes/_chartCreators/highChartsCreators.js +2 -0
  30. package/esm/highcharts/chartTypes/_chartOptions/chartCapabilities.d.ts +1 -1
  31. package/esm/highcharts/chartTypes/_chartOptions/chartCapabilities.d.ts.map +1 -1
  32. package/esm/highcharts/chartTypes/_chartOptions/chartCapabilities.js +1 -0
  33. package/esm/highcharts/chartTypes/_chartOptions/chartDistinctPointShapes.d.ts.map +1 -1
  34. package/esm/highcharts/chartTypes/_chartOptions/chartDistinctPointShapes.js +9 -0
  35. package/esm/highcharts/chartTypes/_chartOptions/chartLimits.d.ts +1 -2
  36. package/esm/highcharts/chartTypes/_chartOptions/chartLimits.d.ts.map +1 -1
  37. package/esm/highcharts/chartTypes/_chartOptions/chartLimits.js +4 -9
  38. package/esm/highcharts/chartTypes/_chartOptions/chartOptionsBuilder.d.ts.map +1 -1
  39. package/esm/highcharts/chartTypes/_chartOptions/chartOptionsBuilder.js +22 -4
  40. package/esm/highcharts/chartTypes/_chartOptions/chartSeries.d.ts.map +1 -1
  41. package/esm/highcharts/chartTypes/_chartOptions/chartSeries.js +5 -1
  42. package/esm/highcharts/chartTypes/_util/common.d.ts +12 -1
  43. package/esm/highcharts/chartTypes/_util/common.d.ts.map +1 -1
  44. package/esm/highcharts/chartTypes/_util/common.js +22 -0
  45. package/esm/highcharts/chartTypes/mekko/mekkoChartOptions.d.ts +18 -0
  46. package/esm/highcharts/chartTypes/mekko/mekkoChartOptions.d.ts.map +1 -0
  47. package/esm/highcharts/chartTypes/mekko/mekkoChartOptions.js +32 -0
  48. package/esm/highcharts/chartTypes/mekko/mekkoConfiguration.d.ts +4 -0
  49. package/esm/highcharts/chartTypes/mekko/mekkoConfiguration.d.ts.map +1 -0
  50. package/esm/highcharts/chartTypes/mekko/mekkoConfiguration.js +52 -0
  51. package/esm/highcharts/chartTypes/mekko/mekkoSeries.d.ts +7 -0
  52. package/esm/highcharts/chartTypes/mekko/mekkoSeries.d.ts.map +1 -0
  53. package/esm/highcharts/chartTypes/mekko/mekkoSeries.js +102 -0
  54. package/esm/highcharts/typings/unsafe.d.ts +2 -0
  55. package/esm/highcharts/typings/unsafe.d.ts.map +1 -1
  56. package/esm/index.d.ts +1 -0
  57. package/esm/index.d.ts.map +1 -1
  58. package/esm/index.js +1 -0
  59. package/esm/interfaces/chartConfig.d.ts +6 -4
  60. package/esm/interfaces/chartConfig.d.ts.map +1 -1
  61. package/esm/sdk-ui-charts.d.ts +57 -4
  62. package/package.json +13 -13
@@ -0,0 +1,3 @@
1
+ import { type ICoreChartProps } from "../../interfaces/chartProps.js";
2
+ export declare const CoreMekko: import("react").NamedExoticComponent<ICoreChartProps>;
3
+ //# sourceMappingURL=CoreMekko.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoreMekko.d.ts","sourceRoot":"","sources":["../../../src/charts/mekko/CoreMekko.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGtE,eAAO,MAAM,SAAS,uDAEpB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // (C) 2026 GoodData Corporation
3
+ import { memo } from "react";
4
+ import { BaseChart } from "../_base/BaseChart.js";
5
+ export const CoreMekko = memo(function CoreMekko(props) {
6
+ return _jsx(BaseChart, { type: "mekko", ...props });
7
+ });
@@ -0,0 +1,51 @@
1
+ import { type AttributeOrPlaceholder, type MeasureOrPlaceholder, type NullableFiltersOrPlaceholders, type SortsOrPlaceholders } from "@gooddata/sdk-ui";
2
+ import { type IBucketChartProps } from "../../interfaces/chartProps.js";
3
+ /**
4
+ * @beta
5
+ */
6
+ export interface IMekkoBucketProps {
7
+ /**
8
+ * Specify the measure that sets each column's width (proportional to its value).
9
+ */
10
+ widthMeasure?: MeasureOrPlaceholder;
11
+ /**
12
+ * Specify the measure that sets each column's height, read off the Y axis.
13
+ */
14
+ heightMeasure?: MeasureOrPlaceholder;
15
+ /**
16
+ * Specify the attribute used to create the columns (one column per attribute element).
17
+ */
18
+ viewBy?: AttributeOrPlaceholder;
19
+ /**
20
+ * Specify the attribute used to stack the columns into segments.
21
+ */
22
+ stackBy?: AttributeOrPlaceholder;
23
+ /**
24
+ * Specify filters to apply on the data to chart.
25
+ */
26
+ filters?: NullableFiltersOrPlaceholders;
27
+ /**
28
+ * Specify how to sort the data to chart.
29
+ */
30
+ sortBy?: SortsOrPlaceholders;
31
+ /**
32
+ * Resolution context for composed placeholders.
33
+ */
34
+ placeholdersResolutionContext?: any;
35
+ }
36
+ /**
37
+ * @beta
38
+ */
39
+ export interface IMekkoProps extends IBucketChartProps, IMekkoBucketProps {
40
+ }
41
+ /**
42
+ * Mekko (Marimekko) chart shows data as stacked columns whose widths are proportional to a measure.
43
+ *
44
+ * @remarks
45
+ * Each column's width is driven by the width measure, its height by the height measure, columns are
46
+ * created from the view-by attribute, and segments come from the stack-by attribute.
47
+ *
48
+ * @beta
49
+ */
50
+ export declare function Mekko(props: IMekkoProps): import("react/jsx-runtime").JSX.Element;
51
+ //# sourceMappingURL=Mekko.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mekko.d.ts","sourceRoot":"","sources":["../../../src/charts/mekko/Mekko.tsx"],"names":[],"mappings":"AASA,OAAO,EACH,KAAK,sBAAsB,EAE3B,KAAK,oBAAoB,EACzB,KAAK,6BAA6B,EAClC,KAAK,mBAAmB,EAE3B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AA4CxE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B;;OAEG;IACH,YAAY,CAAC,EAAE,oBAAoB,CAAC;IAEpC;;OAEG;IACH,aAAa,CAAC,EAAE,oBAAoB,CAAC;IAErC;;OAEG;IACH,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAEhC;;OAEG;IACH,OAAO,CAAC,EAAE,sBAAsB,CAAC;IAEjC;;OAEG;IACH,OAAO,CAAC,EAAE,6BAA6B,CAAC;IAExC;;OAEG;IACH,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAE7B;;OAEG;IACH,6BAA6B,CAAC,EAAE,GAAG,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,iBAAiB,EAAE,iBAAiB;CAAG;AAI5E;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,WAAW,2CAmBvC"}
@@ -0,0 +1,55 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // (C) 2026 GoodData Corporation
3
+ import { newBucket, } from "@gooddata/sdk-model";
4
+ import { BucketNames, useResolveValuesWithPlaceholders, } from "@gooddata/sdk-ui";
5
+ import { withChart } from "../_base/withChart.js";
6
+ import { stackedChartDimensions } from "../_commons/dimensions.js";
7
+ import { CoreMekko } from "./CoreMekko.js";
8
+ //
9
+ // Internals
10
+ //
11
+ const mekkoDefinition = {
12
+ chartName: "Mekko",
13
+ bucketPropsKeys: ["widthMeasure", "heightMeasure", "viewBy", "stackBy", "filters", "sortBy"],
14
+ bucketsFactory: (props) => {
15
+ // Bucket order defines the MeasureGroup order consumed by getMekkoSeries:
16
+ // MEASURES (width) -> index 0, SECONDARY_MEASURES (height) -> index 1.
17
+ return [
18
+ newBucket(BucketNames.MEASURES, props.widthMeasure),
19
+ newBucket(BucketNames.SECONDARY_MEASURES, props.heightMeasure),
20
+ newBucket(BucketNames.VIEW, props.viewBy),
21
+ newBucket(BucketNames.STACK, props.stackBy),
22
+ ];
23
+ },
24
+ executionFactory: (props, buckets) => {
25
+ const { backend, workspace, execConfig } = props;
26
+ const sortBy = props.sortBy ?? [];
27
+ return backend
28
+ .withTelemetry("Mekko", props)
29
+ .workspace(workspace)
30
+ .execution()
31
+ .forBuckets(buckets, props.filters)
32
+ .withSorting(...sortBy)
33
+ .withDimensions(stackedChartDimensions)
34
+ .withExecConfig(execConfig);
35
+ },
36
+ };
37
+ const WrappedMekko = withChart(mekkoDefinition)(CoreMekko);
38
+ /**
39
+ * Mekko (Marimekko) chart shows data as stacked columns whose widths are proportional to a measure.
40
+ *
41
+ * @remarks
42
+ * Each column's width is driven by the width measure, its height by the height measure, columns are
43
+ * created from the view-by attribute, and segments come from the stack-by attribute.
44
+ *
45
+ * @beta
46
+ */
47
+ export function Mekko(props) {
48
+ const [widthMeasure, heightMeasure, viewBy, stackBy, filters, sortBy] = useResolveValuesWithPlaceholders([props.widthMeasure, props.heightMeasure, props.viewBy, props.stackBy, props.filters, props.sortBy], props.placeholdersResolutionContext);
49
+ return (_jsx(WrappedMekko, { ...props, widthMeasure,
50
+ heightMeasure,
51
+ viewBy,
52
+ stackBy,
53
+ filters,
54
+ sortBy }));
55
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"ChartTransformation.d.ts","sourceRoot":"","sources":["../../src/highcharts/ChartTransformation.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAA2B,MAAM,OAAO,CAAC;AAQnE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EACH,KAAK,aAAa,EAClB,KAAK,iBAAiB,EAMzB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAuB,KAAK,iBAAiB,EAAoB,MAAM,8BAA8B,CAAC;AAE7G,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAIjE,OAAO,EAEH,KAAK,wBAAwB,EAGhC,MAAM,iCAAiC,CAAC;AAczC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,wBAAwB,GAAG,YAAY,CAM9E;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;IACrB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IAEf,QAAQ,EAAE,SAAS,CAAC;IAEpB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAE7B,WAAW,IAAI,IAAI,CAAC;IACpB,cAAc,CAAC,YAAY,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/D,gBAAgB,EAAE,CAAC,CAAC,YAAY,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IAEvD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,CAAC,GAAG,EAAE,wBAAwB,GAAG,YAAY,CAAC;IAEvD,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;CACxC;AAqJD,eAAO,MAAM,mBAAmB,iJAK9B,CAAC"}
1
+ {"version":3,"file":"ChartTransformation.d.ts","sourceRoot":"","sources":["../../src/highcharts/ChartTransformation.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAA2B,MAAM,OAAO,CAAC;AAQnE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EACH,KAAK,aAAa,EAClB,KAAK,iBAAiB,EAMzB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAuB,KAAK,iBAAiB,EAAoB,MAAM,8BAA8B,CAAC;AAE7G,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAIjE,OAAO,EAEH,KAAK,wBAAwB,EAGhC,MAAM,iCAAiC,CAAC;AAczC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,wBAAwB,GAAG,YAAY,CAM9E;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;IACrB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IAEf,QAAQ,EAAE,SAAS,CAAC;IAEpB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAE7B,WAAW,IAAI,IAAI,CAAC;IACpB,cAAc,CAAC,YAAY,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/D,gBAAgB,EAAE,CAAC,CAAC,YAAY,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IAEvD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,CAAC,GAAG,EAAE,wBAAwB,GAAG,YAAY,CAAC;IAEvD,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;CACxC;AA+JD,eAAO,MAAM,mBAAmB,iJAK9B,CAAC"}
@@ -55,10 +55,11 @@ function ChartTransformationImpl({ config, renderer = renderHighCharts, dataView
55
55
  onDataTooLarge(chartOptions, getDataTooLargeErrorMessage(config.limits, chartOptions));
56
56
  }
57
57
  else if (validationResult.hasNegativeValue) {
58
- // ignore hasNegativeValue if validation already fails on dataTooLarge
59
- // force onNegativeValues error handling only for pie chart.
60
- // hasNegativeValue can be true only for pie chart.
61
- invariant(onNegativeValues, '"onNegativeValues" callback required for pie chart transformation is missing.');
58
+ // ignore hasNegativeValue if validation already fails on dataTooLarge.
59
+ // hasNegativeValue is true for pie-family charts (any negative value) and for Mekko
60
+ // (negative Width). onNegativeValues is always supplied via withEntireDataView, so this
61
+ // invariant is a safety guard, not a pie-only constraint both route to the empty state.
62
+ invariant(onNegativeValues, '"onNegativeValues" callback required for negative-value error handling is missing.');
62
63
  onNegativeValues(chartOptions);
63
64
  }
64
65
  else {
@@ -68,6 +69,14 @@ function ChartTransformationImpl({ config, renderer = renderHighCharts, dataView
68
69
  propertiesMeta: {
69
70
  legend_enabled: legendOptions.toggleEnabled,
70
71
  isFilteringRecommended,
72
+ // Mekko: "Stack to 100%" was requested but downgraded to absolute stacking because the
73
+ // Height metric has negative values (percent of mixed-sign segments is undefined).
74
+ // Surfaced as an info note in AD; the property stays set so 100% re-enables once cleaned.
75
+ // No Stack-by means no percent stacking to downgrade (getStackingConfig only yields
76
+ // "percent" with a stack attribute), so the note must not show.
77
+ stackToPercentDisabledByNegativeValues: Boolean(config.stackMeasuresToPercent) &&
78
+ Boolean(chartOptions.hasStackByAttribute) &&
79
+ Boolean(chartOptions.stackToPercentBlockedByNegativeValues),
71
80
  },
72
81
  colors: {
73
82
  colorAssignments: chartOptions.colorAssignments,
@@ -9,6 +9,7 @@ import "highcharts/esm/modules/heatmap.js";
9
9
  import "highcharts/esm/modules/pattern-fill.js";
10
10
  import "highcharts/esm/modules/sankey.js";
11
11
  import "highcharts/esm/modules/dependency-wheel.js";
12
+ import "highcharts/esm/modules/variwide.js";
12
13
  import "highcharts/esm/modules/accessibility.js";
13
14
  /**
14
15
  * @internal
@@ -1 +1 @@
1
- {"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../../src/highcharts/adapter/Chart.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAWlC,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGtE,OAAO,mCAAmC,CAAC;AAC3C,OAAO,qCAAqC,CAAC;AAC7C,OAAO,mCAAmC,CAAC;AAC3C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,mCAAmC,CAAC;AAC3C,OAAO,wCAAwC,CAAC;AAChD,OAAO,kCAAkC,CAAC;AAC1C,OAAO,4CAA4C,CAAC;AACpD,OAAO,yCAAyC,CAAC;AAUjD;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,GAAG,CAAC;IACd,QAAQ,IAAI,IAAI,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,KAAM,SAAQ,SAAS,CAAC,WAAW,CAAC;IAC7C,OAAc,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,UAAU,CAAC,CAGpE;IAEF,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,QAAQ,CAAe;IAE/B,OAAO,CAAC,EAAE,CAAmC;IAE7C,OAAO,CAAC,cAAc,CAcpB;IAEc,iBAAiB,IAAI,IAAI,CAaxC;IAEe,qBAAqB,CAAC,SAAS,EAAE,WAAW,GAAG,OAAO,CAKrE;IAEe,kBAAkB,IAAI,IAAI,CAEzC;IAEe,oBAAoB,IAAI,IAAI,CAQ3C;IAEM,eAAe,IAAI,WAAW,CAEpC;IAEM,WAAW,6BAEhB;IAEK,QAAQ,IAAI,MAAM,CAMxB;IAEM,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAmBlD;IAEe,MAAM,4CAErB;CACJ"}
1
+ {"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../../src/highcharts/adapter/Chart.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAWlC,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGtE,OAAO,mCAAmC,CAAC;AAC3C,OAAO,qCAAqC,CAAC;AAC7C,OAAO,mCAAmC,CAAC;AAC3C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,mCAAmC,CAAC;AAC3C,OAAO,wCAAwC,CAAC;AAChD,OAAO,kCAAkC,CAAC;AAC1C,OAAO,4CAA4C,CAAC;AACpD,OAAO,oCAAoC,CAAC;AAC5C,OAAO,yCAAyC,CAAC;AAUjD;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,GAAG,CAAC;IACd,QAAQ,IAAI,IAAI,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,KAAM,SAAQ,SAAS,CAAC,WAAW,CAAC;IAC7C,OAAc,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,UAAU,CAAC,CAGpE;IAEF,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,QAAQ,CAAe;IAE/B,OAAO,CAAC,EAAE,CAAmC;IAE7C,OAAO,CAAC,cAAc,CAcpB;IAEc,iBAAiB,IAAI,IAAI,CAaxC;IAEe,qBAAqB,CAAC,SAAS,EAAE,WAAW,GAAG,OAAO,CAKrE;IAEe,kBAAkB,IAAI,IAAI,CAEzC;IAEe,oBAAoB,IAAI,IAAI,CAQ3C;IAEM,eAAe,IAAI,WAAW,CAEpC;IAEM,WAAW,6BAEhB;IAEK,QAAQ,IAAI,MAAM,CAMxB;IAEM,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAmBlD;IAEe,MAAM,4CAErB;CACJ"}
@@ -15,6 +15,7 @@ import "highcharts/esm/modules/heatmap.js";
15
15
  import "highcharts/esm/modules/pattern-fill.js";
16
16
  import "highcharts/esm/modules/sankey.js";
17
17
  import "highcharts/esm/modules/dependency-wheel.js";
18
+ import "highcharts/esm/modules/variwide.js";
18
19
  import "highcharts/esm/modules/accessibility.js";
19
20
  // NOTE: default initialization without accessible tooltip plugin.
20
21
  // The conditional init with the flag is done in ChartTransformation.
@@ -1 +1 @@
1
- {"version":3,"file":"chartPlugins.d.ts","sourceRoot":"","sources":["../../../src/highcharts/adapter/chartPlugins.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAelD,wBAAgB,gBAAgB,CAC5B,UAAU,EAAE,GAAG,EACf,4BAA4B,CAAC,EAAE,OAAO,EACtC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,IAAI,CAqBN"}
1
+ {"version":3,"file":"chartPlugins.d.ts","sourceRoot":"","sources":["../../../src/highcharts/adapter/chartPlugins.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAgBlD,wBAAgB,gBAAgB,CAC5B,UAAU,EAAE,GAAG,EACf,4BAA4B,CAAC,EAAE,OAAO,EACtC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,IAAI,CAuBN"}
@@ -1,4 +1,4 @@
1
- // (C) 2007-2025 GoodData Corporation
1
+ // (C) 2007-2026 GoodData Corporation
2
2
  import { groupedCategories } from "./plugins/3rdParty/grouped-categories.js";
3
3
  import { initAccessibleTooltipPluginOnce } from "./plugins/accessibleTooltip.js";
4
4
  import { adjustTickAmount } from "./plugins/adjustTickAmount.js";
@@ -7,6 +7,7 @@ import { extendDataLabelColors } from "./plugins/dataLabelsColors.js";
7
7
  import { groupCategoriesWrapper } from "./plugins/group-categories-wrapper.js";
8
8
  import { linearTickPositions } from "./plugins/linearTickPositions.js";
9
9
  import { applyPointHaloOptions } from "./plugins/pointHalo.js";
10
+ import { registerPointShapeSymbols } from "./plugins/pointShapeSymbols.js";
10
11
  import { renderBubbles } from "./plugins/renderBubbles.js";
11
12
  let basePluginsInitialized = false;
12
13
  let dataLabelColorsInitialized = false;
@@ -20,6 +21,8 @@ export function initChartPlugins(highcharts, enableAccessibleChartTooltip, theme
20
21
  adjustTickAmount(highcharts);
21
22
  // modify rendering bubbles in bubble chart after upgrade to Highcharts v7.1.1
22
23
  renderBubbles(highcharts);
24
+ // register custom point-shape marker symbols beyond the five Highcharts built-ins
25
+ registerPointShapeSymbols(highcharts);
23
26
  basePluginsInitialized = true;
24
27
  }
25
28
  if (enableAccessibleChartTooltip) {
@@ -1 +1 @@
1
- {"version":3,"file":"legendBuilder.d.ts","sourceRoot":"","sources":["../../../src/highcharts/adapter/legendBuilder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAEH,KAAK,cAAc,EAGnB,KAAK,qBAAqB,EAC7B,MAAM,8BAA8B,CAAC;AAgBtC,OAAO,EAAE,KAAK,aAAa,EAA0C,MAAM,sBAAsB,CAAC;AAgBlG,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,aAAa,GAAG,OAAO,CAkD1E;AAED,wBAAgB,cAAc,CAC1B,YAAY,EAAE,aAAa,EAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,IAAI,CAAC,EAAE,SAAS,GACjB,qBAAqB,EAAE,CAiGzB;AA+BD,wBAAgB,kBAAkB,CAC9B,YAAY,KAAU,EACtB,YAAY,EAAE,aAAa,EAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,IAAI,CAAC,EAAE,SAAS,GACjB,cAAc,CAkEhB"}
1
+ {"version":3,"file":"legendBuilder.d.ts","sourceRoot":"","sources":["../../../src/highcharts/adapter/legendBuilder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAEH,KAAK,cAAc,EAGnB,KAAK,qBAAqB,EAC7B,MAAM,8BAA8B,CAAC;AAgBtC,OAAO,EAAE,KAAK,aAAa,EAA0C,MAAM,sBAAsB,CAAC;AAgBlG,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,aAAa,GAAG,OAAO,CAkD1E;AAED,wBAAgB,cAAc,CAC1B,YAAY,EAAE,aAAa,EAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,IAAI,CAAC,EAAE,SAAS,GACjB,qBAAqB,EAAE,CAiGzB;AA+BD,wBAAgB,kBAAkB,CAC9B,YAAY,KAAU,EACtB,YAAY,EAAE,aAAa,EAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,IAAI,CAAC,EAAE,SAAS,GACjB,cAAc,CAmEhB"}
@@ -180,6 +180,7 @@ export function buildLegendOptions(legendConfig = {}, chartOptions, theme, intl)
180
180
  VisualizationTypes.PIE,
181
181
  VisualizationTypes.DONUT,
182
182
  VisualizationTypes.WATERFALL,
183
+ VisualizationTypes.MEKKO,
183
184
  ];
184
185
  const defaultHideLegendCharts = [
185
186
  VisualizationTypes.SANKEY,
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Registers the custom point-shape marker symbols (star, pentagon, cross, plus, hexagon, octagon,
3
+ * arrow and the extra triangle orientations) on the Highcharts SVG renderer.
4
+ *
5
+ * @remarks
6
+ * Highcharts only knows five built-in marker symbols; every other documented point shape would
7
+ * otherwise silently fall back to "circle". Each shape is drawn from the shared normalized polygon
8
+ * geometry so chart markers stay in sync with the legend icons.
9
+ */
10
+ export declare function registerPointShapeSymbols(Highcharts: any): void;
11
+ //# sourceMappingURL=pointShapeSymbols.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pointShapeSymbols.d.ts","sourceRoot":"","sources":["../../../../src/highcharts/adapter/plugins/pointShapeSymbols.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,GAAG,GAAG,IAAI,CAU/D"}
@@ -0,0 +1,20 @@
1
+ // (C) 2026 GoodData Corporation
2
+ import { CUSTOM_POINT_SHAPES, getPointShapeSvgPath } from "@gooddata/sdk-ui-vis-commons";
3
+ /**
4
+ * Registers the custom point-shape marker symbols (star, pentagon, cross, plus, hexagon, octagon,
5
+ * arrow and the extra triangle orientations) on the Highcharts SVG renderer.
6
+ *
7
+ * @remarks
8
+ * Highcharts only knows five built-in marker symbols; every other documented point shape would
9
+ * otherwise silently fall back to "circle". Each shape is drawn from the shared normalized polygon
10
+ * geometry so chart markers stay in sync with the legend icons.
11
+ */
12
+ export function registerPointShapeSymbols(Highcharts) {
13
+ const symbols = Highcharts?.SVGRenderer?.prototype?.symbols;
14
+ if (!symbols) {
15
+ return;
16
+ }
17
+ CUSTOM_POINT_SHAPES.forEach((shape) => {
18
+ symbols[shape] = (x, y, w, h) => getPointShapeSvgPath(shape, x, y, w, h);
19
+ });
20
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"customConfiguration.d.ts","sourceRoot":"","sources":["../../../../src/highcharts/chartTypes/_chartCreators/customConfiguration.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,OAAO,EAAE,KAAK,MAAM,EAA4B,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAkB,KAAK,YAAY,EAAsB,MAAM,kBAAkB,CAAC;AAGzF,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACzF,OAAO,EAEH,KAAK,iBAAiB,EAGzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEH,KAAK,aAAa,EAMlB,KAAK,mCAAmC,EAC3C,MAAM,yBAAyB,CAAC;AA0GjC,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,2BAA2B,KAAK,CAAC;AA+D9C,wBAAgB,mCAAmC,CAC/C,IAAI,EAAE,UAAU,CAAC,gCAAgC,EACjD,QAAQ,EAAE,GAAG,GACd,MAAM,CAkBR;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,gCAAgC,GAAG,MAAM,CAiB3F;AAyFD,wBAAgB,kCAAkC,CAC9C,IAAI,EAAE,UAAU,CAAC,OAAO,EACxB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,mCAAmC,GAC3C;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAmB1B;AA8CD,wBAAgB,4BAA4B,CACxC,IAAI,EAAE,UAAU,CAAC,OAAO,EACxB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,mCAAmC,GAC3C;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CA2B1B;AA6JD,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,CAarF;AAED,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,CAO3F;AAucD,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,GAAG,EAAE,GAAG,SAAS,GAAG,GAAG,CASvE;AAyND,wBAAgB,oBAAoB,CAChC,YAAY,EAAE,aAAa,EAC3B,aAAa,EAAE,MAAM,aAAa,EAClC,6BAA6B,EAAE,OAAO,GACvC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CActB;AA+DD,eAAO,MAAM,oBAAoB;;CAgBhC,CAAC;AAgVF,wBAAgB,0BAA0B,CACtC,YAAY,EAAE,aAAa,EAC3B,WAAW,CAAC,EAAE,YAAY,EAC1B,WAAW,CAAC,EAAE,YAAY,EAC1B,IAAI,CAAC,EAAE,SAAS,EAChB,KAAK,CAAC,EAAE,MAAM,GACf,iBAAiB,CA+BnB"}
1
+ {"version":3,"file":"customConfiguration.d.ts","sourceRoot":"","sources":["../../../../src/highcharts/chartTypes/_chartCreators/customConfiguration.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,OAAO,EAAE,KAAK,MAAM,EAA4B,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAkB,KAAK,YAAY,EAAsB,MAAM,kBAAkB,CAAC;AAGzF,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACzF,OAAO,EAEH,KAAK,iBAAiB,EAGzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEH,KAAK,aAAa,EAMlB,KAAK,mCAAmC,EAC3C,MAAM,yBAAyB,CAAC;AA0GjC,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,2BAA2B,KAAK,CAAC;AA+D9C,wBAAgB,mCAAmC,CAC/C,IAAI,EAAE,UAAU,CAAC,gCAAgC,EACjD,QAAQ,EAAE,GAAG,GACd,MAAM,CAkBR;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,gCAAgC,GAAG,MAAM,CAiB3F;AAyFD,wBAAgB,kCAAkC,CAC9C,IAAI,EAAE,UAAU,CAAC,OAAO,EACxB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,mCAAmC,GAC3C;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAmB1B;AA8CD,wBAAgB,4BAA4B,CACxC,IAAI,EAAE,UAAU,CAAC,OAAO,EACxB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,mCAAmC,GAC3C;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CA2B1B;AA6JD,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,CAarF;AAED,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,CAO3F;AAucD,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,GAAG,EAAE,GAAG,SAAS,GAAG,GAAG,CASvE;AA0ND,wBAAgB,oBAAoB,CAChC,YAAY,EAAE,aAAa,EAC3B,aAAa,EAAE,MAAM,aAAa,EAClC,6BAA6B,EAAE,OAAO,GACvC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CActB;AA+DD,eAAO,MAAM,oBAAoB;;CAgBhC,CAAC;AAgVF,wBAAgB,0BAA0B,CACtC,YAAY,EAAE,aAAa,EAC3B,WAAW,CAAC,EAAE,YAAY,EAC1B,WAAW,CAAC,EAAE,YAAY,EAC1B,IAAI,CAAC,EAAE,SAAS,EAChB,KAAK,CAAC,EAAE,MAAM,GACf,iBAAiB,CA+BnB"}
@@ -846,6 +846,7 @@ function getHoverStyles({ type }, config) {
846
846
  case VisualizationTypes.BAR:
847
847
  case VisualizationTypes.COLUMN:
848
848
  case VisualizationTypes.BULLET:
849
+ case VisualizationTypes.MEKKO:
849
850
  seriesMapFn = barSeriesMapFn;
850
851
  break;
851
852
  case VisualizationTypes.HEATMAP:
@@ -1 +1 @@
1
- {"version":3,"file":"identifierMapping.d.ts","sourceRoot":"","sources":["../../../../../src/highcharts/chartTypes/_chartCreators/customTooltip/identifierMapping.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,oBAAoB,EAA4C,MAAM,qBAAqB,CAAC;AAI1G;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,OAAO,GAAG,QAAQ,CAAC;AAErE,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,iBAAiB,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC7C;AAyBD;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAClC,UAAU,EAAE,oBAAoB,EAChC,SAAS,CAAC,EAAE,MAAM,GACnB,kBAAkB,CAiCpB"}
1
+ {"version":3,"file":"identifierMapping.d.ts","sourceRoot":"","sources":["../../../../../src/highcharts/chartTypes/_chartCreators/customTooltip/identifierMapping.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,oBAAoB,EAA4C,MAAM,qBAAqB,CAAC;AAI1G;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,OAAO,GAAG,QAAQ,CAAC;AAErE,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,iBAAiB,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC7C;AA6BD;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAClC,UAAU,EAAE,oBAAoB,EAChC,SAAS,CAAC,EAAE,MAAM,GACnB,kBAAkB,CAiCpB"}
@@ -19,6 +19,10 @@ function getMeasurePointField(chartType, bucketLocalId) {
19
19
  // primary (MEASURES) and comparative (TERTIARY_MEASURES) series
20
20
  // both use point.y.
21
21
  return bucketLocalId === BucketNames.SECONDARY_MEASURES ? "target" : "y";
22
+ case VisualizationTypes.MEKKO:
23
+ // Mekko (variwide): Width (MEASURES) is the column width on point.z,
24
+ // Height (SECONDARY_MEASURES) is on point.y.
25
+ return bucketLocalId === BucketNames.MEASURES ? "z" : "y";
22
26
  default:
23
27
  return "y";
24
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"drilldownEventing.d.ts","sourceRoot":"","sources":["../../../../src/highcharts/chartTypes/_chartCreators/drilldownEventing.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,YAAY,EAOjB,KAAK,OAAO,EAGf,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EAAE,KAAK,sBAAsB,EAA+B,MAAM,kCAAkC,CAAC;AAE5G,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAwBlF;AA0JD,wBAAgB,UAAU,CACtB,WAAW,EAAE,YAAY,EACzB,KAAK,EAAE,UAAU,CAAC,oBAAoB,EACtC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,GACrB,IAAI,CAEN;AAuCD,wBAAgB,cAAc,CAC1B,WAAW,EAAE,YAAY,EACzB,MAAM,EAAE,sBAAsB,EAAE,EAChC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,GACrB,IAAI,CAEN"}
1
+ {"version":3,"file":"drilldownEventing.d.ts","sourceRoot":"","sources":["../../../../src/highcharts/chartTypes/_chartCreators/drilldownEventing.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,YAAY,EAOjB,KAAK,OAAO,EAGf,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EAAE,KAAK,sBAAsB,EAA+B,MAAM,kCAAkC,CAAC;AAE5G,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAyBlF;AAgKD,wBAAgB,UAAU,CACtB,WAAW,EAAE,YAAY,EACzB,KAAK,EAAE,UAAU,CAAC,oBAAoB,EACtC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,GACrB,IAAI,CAEN;AAuCD,wBAAgB,cAAc,CAC1B,WAAW,EAAE,YAAY,EACzB,MAAM,EAAE,sBAAsB,EAAE,EAChC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,GACrB,IAAI,CAEN"}
@@ -14,6 +14,7 @@ export function getClickableElementNameByChartType(type) {
14
14
  case VisualizationTypes.COLUMN:
15
15
  case VisualizationTypes.BAR:
16
16
  case VisualizationTypes.WATERFALL:
17
+ case VisualizationTypes.MEKKO:
17
18
  return "bar";
18
19
  case VisualizationTypes.PIE:
19
20
  case VisualizationTypes.TREEMAP:
@@ -41,7 +42,13 @@ function fireEvent(onDrill, data, target) {
41
42
  }
42
43
  }
43
44
  const getElementChartType = (chartType, point) => {
44
- return point?.series?.type ?? chartType;
45
+ const seriesType = point?.series?.type;
46
+ // Mekko renders as a `variwide` series; map that series type back to the logical Mekko type so
47
+ // VisualizationType-based consumers (e.g. getClickableElementNameByChartType) recognize it.
48
+ if (seriesType === "variwide") {
49
+ return VisualizationTypes.MEKKO;
50
+ }
51
+ return seriesType ?? chartType;
45
52
  };
46
53
  const getDrillPointCustomProps = (point, chartType) => {
47
54
  if (isComboChart(chartType)) {
@@ -31,6 +31,6 @@ export declare function getShowInPercentConfiguration(chartOptions: IChartOption
31
31
  * Convert [0, 1] to [0, 100], it's needed by highchart
32
32
  * Only applied to primary Y axis
33
33
  */
34
- export declare function convertMinMaxFromPercentToNumber(_chartOptions: IChartOptions, config: HighchartsOptions, chartConfig: IChartConfig): HighchartsOptions;
34
+ export declare function convertMinMaxFromPercentToNumber(chartOptions: IChartOptions, config: HighchartsOptions, chartConfig: IChartConfig): HighchartsOptions;
35
35
  export declare function getOptionalStackingConfiguration(chartOptions: IChartOptions, config: HighchartsOptions, chartConfig?: IChartConfig, drillConfig?: IDrillConfig): HighchartsOptions;
36
36
  //# sourceMappingURL=getOptionalStackingConfiguration.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getOptionalStackingConfiguration.d.ts","sourceRoot":"","sources":["../../../../src/highcharts/chartTypes/_chartCreators/getOptionalStackingConfiguration.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEvE,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAqB,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAEH,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACpB,MAAM,yBAAyB,CAAC;AAiGjC;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CA8BlF;AA2BD,wBAAgB,qBAAqB,CACjC,YAAY,EAAE,aAAa,EAC3B,MAAM,EAAE,iBAAiB,EACzB,WAAW,EAAE,YAAY,GAC1B,YAAY,CA4Bd;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CACzC,YAAY,EAAE,aAAa,EAC3B,MAAM,EAAE,iBAAiB,EACzB,WAAW,EAAE,YAAY,GAC1B,oBAAoB,CAkBtB;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC3C,YAAY,EAAE,aAAa,EAC3B,MAAM,EAAE,iBAAiB,EACzB,WAAW,CAAC,EAAE,YAAY,GAC3B;IACC,KAAK,EAAE,YAAY,EAAE,CAAC;CACzB,CA4BA;AAED,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,YAAY,GAAG;IAC9D,KAAK,EAAE;QACH,WAAW,EAAE,YAAY,CAAC;KAC7B,EAAE,CAAC;CACP,CAEA;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CACzC,YAAY,2BAAoB,EAChC,WAAW,EAAE,YAAY,EACzB,OAAO,GAAE,iBAAsB,GAChC,iBAAiB,CAyBnB;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC5C,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,iBAAiB,EACzB,WAAW,EAAE,YAAY,GAC1B,iBAAiB,CAgCnB;AAED,wBAAgB,gCAAgC,CAC5C,YAAY,EAAE,aAAa,EAC3B,MAAM,EAAE,iBAAiB,EACzB,WAAW,GAAE,YAAiB,EAC9B,WAAW,CAAC,EAAE,YAAY,GAC3B,iBAAiB,CAanB"}
1
+ {"version":3,"file":"getOptionalStackingConfiguration.d.ts","sourceRoot":"","sources":["../../../../src/highcharts/chartTypes/_chartCreators/getOptionalStackingConfiguration.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEvE,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAqB,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAEH,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACpB,MAAM,yBAAyB,CAAC;AAiGjC;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CA8BlF;AA2BD,wBAAgB,qBAAqB,CACjC,YAAY,EAAE,aAAa,EAC3B,MAAM,EAAE,iBAAiB,EACzB,WAAW,EAAE,YAAY,GAC1B,YAAY,CA4Bd;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CACzC,YAAY,EAAE,aAAa,EAC3B,MAAM,EAAE,iBAAiB,EACzB,WAAW,EAAE,YAAY,GAC1B,oBAAoB,CAoBtB;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC3C,YAAY,EAAE,aAAa,EAC3B,MAAM,EAAE,iBAAiB,EACzB,WAAW,CAAC,EAAE,YAAY,GAC3B;IACC,KAAK,EAAE,YAAY,EAAE,CAAC;CACzB,CA4BA;AAED,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,YAAY,GAAG;IAC9D,KAAK,EAAE;QACH,WAAW,EAAE,YAAY,CAAC;KAC7B,EAAE,CAAC;CACP,CAEA;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CACzC,YAAY,2BAAoB,EAChC,WAAW,EAAE,YAAY,EACzB,OAAO,GAAE,iBAAsB,GAChC,iBAAiB,CA2BnB;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC5C,YAAY,EAAE,aAAa,EAC3B,MAAM,EAAE,iBAAiB,EACzB,WAAW,EAAE,YAAY,GAC1B,iBAAiB,CAkCnB;AAED,wBAAgB,gCAAgC,CAC5C,YAAY,EAAE,aAAa,EAC3B,MAAM,EAAE,iBAAiB,EACzB,WAAW,GAAE,YAAiB,EAC9B,WAAW,CAAC,EAAE,YAAY,GAC3B,iBAAiB,CAanB"}
@@ -147,7 +147,8 @@ export function getYAxisConfiguration(chartOptions, config, chartConfig) {
147
147
  */
148
148
  export function getStackMeasuresConfiguration(chartOptions, config, chartConfig) {
149
149
  const { stackMeasures = false, stackMeasuresToPercent = false } = chartConfig;
150
- const canStackInPercent = canComboChartBeStackedInPercent(chartOptions.data?.series ?? []);
150
+ const canStackInPercent = canComboChartBeStackedInPercent(chartOptions.data?.series ?? []) &&
151
+ !chartOptions.stackToPercentBlockedByNegativeValues;
151
152
  if (!stackMeasures && !stackMeasuresToPercent) {
152
153
  return {};
153
154
  }
@@ -189,7 +190,8 @@ export function setDrillConfigToXAxis(drillConfig) {
189
190
  */
190
191
  export function getShowInPercentConfiguration(chartOptions = {}, chartConfig, _config = {}) {
191
192
  const { stackMeasuresToPercent = false, primaryChartType } = chartConfig;
192
- const canStackInPercent = canComboChartBeStackedInPercent(chartOptions.data?.series);
193
+ const canStackInPercent = canComboChartBeStackedInPercent(chartOptions.data?.series) &&
194
+ !chartOptions.stackToPercentBlockedByNegativeValues;
193
195
  if (!canStackInPercent || !stackMeasuresToPercent || isLineChart(primaryChartType)) {
194
196
  return {};
195
197
  }
@@ -213,9 +215,11 @@ export function getShowInPercentConfiguration(chartOptions = {}, chartConfig, _c
213
215
  * Convert [0, 1] to [0, 100], it's needed by highchart
214
216
  * Only applied to primary Y axis
215
217
  */
216
- export function convertMinMaxFromPercentToNumber(_chartOptions, config, chartConfig) {
218
+ export function convertMinMaxFromPercentToNumber(chartOptions, config, chartConfig) {
217
219
  const { stackMeasuresToPercent = false } = chartConfig;
218
- if (!stackMeasuresToPercent) {
220
+ // When Mekko downgrades 100%→absolute (negative Height) the axis shows absolute values, so
221
+ // user min/max must not be rescaled — same guard as the sibling stacking-config functions.
222
+ if (!stackMeasuresToPercent || chartOptions?.stackToPercentBlockedByNegativeValues) {
219
223
  return {};
220
224
  }
221
225
  let yAxes;
@@ -1 +1 @@
1
- {"version":3,"file":"highChartsCreators.d.ts","sourceRoot":"","sources":["../../../../src/highcharts/chartTypes/_chartCreators/highChartsCreators.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,KAAK,YAAY,EAAoC,MAAM,kBAAkB,CAAC;AAEvF,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAC1F,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,yBAAyB,CAAC;AAyD/E,wBAAgB,oBAAoB,CAChC,YAAY,EAAE,aAAa,EAC3B,WAAW,EAAE,YAAY,EACzB,MAAM,CAAC,EAAE,YAAY,EACrB,UAAU,CAAC,EAAE,oBAAoB,EACjC,IAAI,CAAC,EAAE,SAAS,EAChB,KAAK,CAAC,EAAE,MAAM,GACf,iBAAiB,CAanB;AAED,wBAAgB,sBAAsB,CAClC,SAAS,EAAE,GAAG,EACd,MAAM,EAAE,YAAY,EACpB,qBAAqB,UAAQ,GAC9B,OAAO,CAgCT"}
1
+ {"version":3,"file":"highChartsCreators.d.ts","sourceRoot":"","sources":["../../../../src/highcharts/chartTypes/_chartCreators/highChartsCreators.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,KAAK,YAAY,EAAoC,MAAM,kBAAkB,CAAC;AAEvF,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAC1F,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,yBAAyB,CAAC;AA2D/E,wBAAgB,oBAAoB,CAChC,YAAY,EAAE,aAAa,EAC3B,WAAW,EAAE,YAAY,EACzB,MAAM,CAAC,EAAE,YAAY,EACrB,UAAU,CAAC,EAAE,oBAAoB,EACjC,IAAI,CAAC,EAAE,SAAS,EAChB,KAAK,CAAC,EAAE,MAAM,GACf,iBAAiB,CAanB;AAED,wBAAgB,sBAAsB,CAClC,SAAS,EAAE,GAAG,EACd,MAAM,EAAE,YAAY,EACpB,qBAAqB,UAAQ,GAC9B,OAAO,CAgCT"}
@@ -14,6 +14,7 @@ import { getDonutConfiguration } from "../donutChart/donutConfiguration.js";
14
14
  import { getFunnelConfiguration } from "../funnelChart/funnelConfiguration.js";
15
15
  import { getHeatmapConfiguration } from "../heatmap/heatmapConfiguration.js";
16
16
  import { getLineConfiguration } from "../lineChart/lineConfiguration.js";
17
+ import { getMekkoConfiguration } from "../mekko/mekkoConfiguration.js";
17
18
  import { getPieConfiguration } from "../pieChart/pieConfiguration.js";
18
19
  import { getPyramidConfiguration } from "../pyramidChart/pyramidConfiguration.js";
19
20
  import { getRadarConfiguration } from "../radarChart/radarConfiguration.js";
@@ -43,6 +44,7 @@ const chartConfigurationMap = {
43
44
  [VisualizationTypes.DEPENDENCY_WHEEL]: getDependencyWheelConfiguration,
44
45
  [VisualizationTypes.WATERFALL]: getWaterfallConfiguration,
45
46
  [VisualizationTypes.RADAR]: getRadarConfiguration,
47
+ [VisualizationTypes.MEKKO]: getMekkoConfiguration,
46
48
  };
47
49
  export function getHighchartsOptions(chartOptions, drillConfig, config, definition, intl, theme) {
48
50
  const getConfigurationByType = chartConfigurationMap[chartOptions.type];
@@ -1,6 +1,6 @@
1
1
  export declare const supportedDualAxesChartTypes: ("area" | "bar" | "bullet" | "column" | "combo" | "combo2" | "line" | "waterfall")[];
2
2
  export declare const supportedTooltipFollowPointerChartTypes: ("bar" | "bullet" | "column" | "combo" | "combo2" | "waterfall")[];
3
- export declare const supportedStackingAttributesChartTypes: ("area" | "bar" | "bullet" | "column" | "combo" | "combo2" | "waterfall")[];
3
+ export declare const supportedStackingAttributesChartTypes: ("area" | "bar" | "bullet" | "column" | "combo" | "combo2" | "mekko" | "waterfall")[];
4
4
  export declare const multiMeasuresAlternatingTypes: ("donut" | "funnel" | "pie" | "pyramid" | "treemap" | "waterfall")[];
5
5
  export declare const unsupportedNegativeValuesTypes: ("dependencywheel" | "donut" | "funnel" | "pie" | "pyramid" | "sankey" | "treemap")[];
6
6
  export declare const showingNameInLegendWhenViewByPresent: ("donut" | "funnel" | "pie" | "pyramid")[];
@@ -1 +1 @@
1
- {"version":3,"file":"chartCapabilities.d.ts","sourceRoot":"","sources":["../../../../src/highcharts/chartTypes/_chartOptions/chartCapabilities.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,2BAA2B,sFASvC,CAAC;AACF,eAAO,MAAM,uCAAuC,oEAOnD,CAAC;AACF,eAAO,MAAM,qCAAqC,6EAQjD,CAAC;AAEF,eAAO,MAAM,6BAA6B,sEAOzC,CAAC;AACF,eAAO,MAAM,8BAA8B,uFAQ1C,CAAC;AACF,eAAO,MAAM,oCAAoC,4CAKhD,CAAC;AACF,eAAO,MAAM,wBAAwB,sDAMpC,CAAC"}
1
+ {"version":3,"file":"chartCapabilities.d.ts","sourceRoot":"","sources":["../../../../src/highcharts/chartTypes/_chartOptions/chartCapabilities.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,2BAA2B,sFASvC,CAAC;AACF,eAAO,MAAM,uCAAuC,oEAOnD,CAAC;AACF,eAAO,MAAM,qCAAqC,uFASjD,CAAC;AAEF,eAAO,MAAM,6BAA6B,sEAOzC,CAAC;AACF,eAAO,MAAM,8BAA8B,uFAQ1C,CAAC;AACF,eAAO,MAAM,oCAAoC,4CAKhD,CAAC;AACF,eAAO,MAAM,wBAAwB,sDAMpC,CAAC"}
@@ -26,6 +26,7 @@ export const supportedStackingAttributesChartTypes = [
26
26
  VisualizationTypes.COMBO,
27
27
  VisualizationTypes.COMBO2,
28
28
  VisualizationTypes.WATERFALL,
29
+ VisualizationTypes.MEKKO,
29
30
  ];
30
31
  // types with only many measures or one measure and one attribute
31
32
  export const multiMeasuresAlternatingTypes = [
@@ -1 +1 @@
1
- {"version":3,"file":"chartDistinctPointShapes.d.ts","sourceRoot":"","sources":["../../../../src/highcharts/chartTypes/_chartOptions/chartDistinctPointShapes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EACH,KAAK,YAAY,EAGpB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AA2F3D;;GAEG;AACH,wBAAgB,gCAAgC,CAC5C,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,MAAM,EAAE,WAAW,EAAE,EACrB,WAAW,EAAE,YAAY,EACzB,YAAY,EAAE,uBAAuB,CAAC,oBAAoB,CAAC,iBAiB9D"}
1
+ {"version":3,"file":"chartDistinctPointShapes.d.ts","sourceRoot":"","sources":["../../../../src/highcharts/chartTypes/_chartOptions/chartDistinctPointShapes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EACH,KAAK,YAAY,EAGpB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAoG3D;;GAEG;AACH,wBAAgB,gCAAgC,CAC5C,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,MAAM,EAAE,WAAW,EAAE,EACrB,WAAW,EAAE,YAAY,EACzB,YAAY,EAAE,uBAAuB,CAAC,oBAAoB,CAAC,iBAiB9D"}
@@ -9,6 +9,15 @@ const POINT_SHAPES_CONFIGS = [
9
9
  { symbol: "triangle" },
10
10
  { symbol: "triangle-down" },
11
11
  { symbol: "diamond" },
12
+ { symbol: "star" },
13
+ { symbol: "cross" },
14
+ { symbol: "plus" },
15
+ { symbol: "pentagon" },
16
+ { symbol: "hexagon" },
17
+ { symbol: "octagon" },
18
+ { symbol: "arrow" },
19
+ { symbol: "triangle-left" },
20
+ { symbol: "triangle-right" },
12
21
  ];
13
22
  /**
14
23
  * Checks if the chart type supports distinct point shapes
@@ -1,10 +1,9 @@
1
1
  import { type IChartLimits } from "../../../interfaces/chartConfig.js";
2
- import { type IChartOptions, type ISeriesItem } from "../../typings/unsafe.js";
2
+ import { type IChartOptions } from "../../typings/unsafe.js";
3
3
  export interface IValidationResult {
4
4
  dataTooLarge: boolean;
5
5
  hasNegativeValue: boolean;
6
6
  }
7
- export declare function isNegativeValueIncluded(series: ISeriesItem[] | undefined): boolean;
8
7
  export declare function cannotShowNegativeValues(type: string | undefined): boolean;
9
8
  export declare function validateData(limits: IChartLimits | undefined, chartOptions: IChartOptions): IValidationResult;
10
9
  export declare function getIsFilteringRecommended(chartOptions: IChartOptions): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"chartLimits.d.ts","sourceRoot":"","sources":["../../../../src/highcharts/chartTypes/_chartOptions/chartLimits.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAuBvE,OAAO,EACH,KAAK,aAAa,EAGlB,KAAK,WAAW,EACnB,MAAM,yBAAyB,CAAC;AAMjC,MAAM,WAAW,iBAAiB;IAC9B,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,OAAO,CAAC;CAC7B;AAID,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,GAAG,OAAO,CAUlF;AAkHD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAE1E;AAkCD,wBAAgB,YAAY,CACxB,MAAM,EAAE,YAAY,GAAG,SAAS,EAChC,YAAY,EAAE,aAAa,GAC5B,iBAAiB,CAoBnB;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,aAAa,GAAG,OAAO,CAW9E;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,UA6D5F"}
1
+ {"version":3,"file":"chartLimits.d.ts","sourceRoot":"","sources":["../../../../src/highcharts/chartTypes/_chartOptions/chartLimits.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAuBvE,OAAO,EAAE,KAAK,aAAa,EAA4C,MAAM,yBAAyB,CAAC;AAYvG,MAAM,WAAW,iBAAiB;IAC9B,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,OAAO,CAAC;CAC7B;AAkHD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAE1E;AAkCD,wBAAgB,YAAY,CACxB,MAAM,EAAE,YAAY,GAAG,SAAS,EAChC,YAAY,EAAE,aAAa,GAC5B,iBAAiB,CAsBnB;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,aAAa,GAAG,OAAO,CAW9E;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,UA6D5F"}
@@ -2,15 +2,8 @@
2
2
  import { VisualizationTypes } from "@gooddata/sdk-ui";
3
3
  import { COLUMN_BAR_TOTAL_DATA_POINTS_LIMIT, DEFAULT_CATEGORIES_LIMIT, DEFAULT_DATA_POINTS_LIMIT, DEFAULT_SERIES_LIMIT, HEATMAP_DATA_POINTS_LIMIT, PIE_CHART_LIMIT, SANKEY_CHART_DATA_POINT_LIMIT, SANKEY_CHART_NODE_LIMIT, SOFT_COLUMN_BAR_TOTAL_DATA_POINTS_LIMIT, SOFT_DEFAULT_CATEGORIES_LIMIT, SOFT_DEFAULT_DATA_POINTS_LIMIT, SOFT_DEFAULT_SERIES_LIMIT, SOFT_PIE_CHART_LIMIT, SOFT_SANKEY_CHART_DATA_POINT_LIMIT, SOFT_SANKEY_CHART_NODE_LIMIT, SOFT_STACKED_COLUMN_BAR_SERIES_LIMIT, SOFT_WATERFALL_CHART_DATA_POINT_LIMIT, STACKED_COLUMN_BAR_SERIES_LIMIT, WATERFALL_CHART_DATA_POINT_LIMIT, } from "../../constants/limits.js";
4
4
  import { isDataOfReasonableSize } from "../_chartCreators/highChartsCreators.js";
5
- import { isOneOfTypes, isTreemap } from "../_util/common.js";
5
+ import { isMekko, isNegativeValueIncluded, isNegativeWidthIncluded, isOneOfTypes, isTreemap, } from "../_util/common.js";
6
6
  import { unsupportedNegativeValuesTypes } from "./chartCapabilities.js";
7
- const isNegativeNumber = (n) => typeof n === "number" && n < 0;
8
- export function isNegativeValueIncluded(series) {
9
- if (!series) {
10
- return false;
11
- }
12
- return series.some((seriesItem) => (seriesItem.data || []).some(({ y, value, weight }) => isNegativeNumber(y) || isNegativeNumber(value) || isNegativeNumber(weight)));
13
- }
14
7
  function getChartLimits(type, chartOptions) {
15
8
  const isStacked = !!chartOptions?.stacking;
16
9
  switch (type) {
@@ -159,7 +152,9 @@ export function validateData(limits, chartOptions) {
159
152
  const totalDataTooLarge = !limits && exceedsColumnBarTotalDataPoints(type, dataToValidate, COLUMN_BAR_TOTAL_DATA_POINTS_LIMIT);
160
153
  return {
161
154
  dataTooLarge: totalDataTooLarge || !isDataOfReasonableSize(dataToValidate, finalLimits, isViewByTwoAttributes),
162
- hasNegativeValue: cannotShowNegativeValues(type) && isNegativeValueIncluded(chartOptions.data?.series),
155
+ hasNegativeValue: (cannotShowNegativeValues(type) && isNegativeValueIncluded(chartOptions.data?.series)) ||
156
+ // Mekko: a negative Width (point `z`) yields a column with negative width — unrenderable.
157
+ (isMekko(type) && isNegativeWidthIncluded(chartOptions.data?.series)),
163
158
  };
164
159
  }
165
160
  export function getIsFilteringRecommended(chartOptions) {
@@ -1 +1 @@
1
- {"version":3,"file":"chartOptionsBuilder.d.ts","sourceRoot":"","sources":["../../../../src/highcharts/chartTypes/_chartOptions/chartOptionsBuilder.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAyD,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACzG,OAAO,EAEH,cAAc,EACd,KAAK,gBAAgB,EAGxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,8BAA8B,CAAC;AAE3F,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oCAAoC,CAAC;AASvE,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,KAAK,mCAAmC,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAEH,KAAK,aAAa,EAClB,KAAK,WAAW,EAEnB,MAAM,yBAAyB,CAAC;AA6IjC,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,wBAAgB,qBAAqB,CACjC,MAAM,2BAAoB,EAC1B,aAAa,EAAE,cAAc,GAC9B,2BAA2B,EAAE,CAoC/B;AAED,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,cAAc,GAAG,iBAAiB,CAuBjF;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,cAAc,GAAG,iBAAiB,CA4C1E;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,cAAc,GAAG,iBAAiB,CAmB9E;AAED,KAAK,iBAAiB,GAAG;IACrB,eAAe,CAAC,EAAE,mCAAmC,GAAG,IAAI,CAAC;IAC7D,qBAAqB,CAAC,EAAE,mCAAmC,GAAG,IAAI,CAAC;IACnE,gBAAgB,CAAC,EAAE,mCAAmC,GAAG,IAAI,CAAC;IAC9D,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACnC,CAAC;AA8EF,wBAAgB,eAAe,CAC3B,QAAQ,EAAE,SAAS,EACnB,WAAW,EAAE,YAAY,EACzB,cAAc,EAAE,gBAAgB,EAAE,EAClC,gBAAgB,EAAE,MAAM,EACxB,KAAK,CAAC,EAAE,MAAM,EACd,gBAAgB,CAAC,EAAE,MAAM,EACzB,YAAY,CAAC,EAAE,MAAM,EACrB,cAAc,CAAC,EAAE,MAAM,GACxB,aAAa,CA4bf"}
1
+ {"version":3,"file":"chartOptionsBuilder.d.ts","sourceRoot":"","sources":["../../../../src/highcharts/chartTypes/_chartOptions/chartOptionsBuilder.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAyD,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACzG,OAAO,EAEH,cAAc,EACd,KAAK,gBAAgB,EAGxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,8BAA8B,CAAC;AAE3F,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oCAAoC,CAAC;AASvE,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,KAAK,mCAAmC,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAEH,KAAK,aAAa,EAClB,KAAK,WAAW,EAEnB,MAAM,yBAAyB,CAAC;AAuJjC,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,wBAAgB,qBAAqB,CACjC,MAAM,2BAAoB,EAC1B,aAAa,EAAE,cAAc,GAC9B,2BAA2B,EAAE,CAoC/B;AAED,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,cAAc,GAAG,iBAAiB,CAuBjF;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,cAAc,GAAG,iBAAiB,CA4C1E;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,cAAc,GAAG,iBAAiB,CAmB9E;AAED,KAAK,iBAAiB,GAAG;IACrB,eAAe,CAAC,EAAE,mCAAmC,GAAG,IAAI,CAAC;IAC7D,qBAAqB,CAAC,EAAE,mCAAmC,GAAG,IAAI,CAAC;IACnE,gBAAgB,CAAC,EAAE,mCAAmC,GAAG,IAAI,CAAC;IAC9D,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACnC,CAAC;AA8EF,wBAAgB,eAAe,CAC3B,QAAQ,EAAE,SAAS,EACnB,WAAW,EAAE,YAAY,EACzB,cAAc,EAAE,gBAAgB,EAAE,EAClC,gBAAgB,EAAE,MAAM,EACxB,KAAK,CAAC,EAAE,MAAM,EACd,gBAAgB,CAAC,EAAE,MAAM,EACzB,YAAY,CAAC,EAAE,MAAM,EACrB,cAAc,CAAC,EAAE,MAAM,GACxB,aAAa,CAycf"}
@@ -6,9 +6,10 @@ import { valueWithEmptyHandling } from "@gooddata/sdk-ui-vis-commons";
6
6
  import { ViewByAttributesLimit } from "../../../interfaces/limits.js";
7
7
  import { PARENT_ATTRIBUTE_INDEX, PRIMARY_ATTRIBUTE_INDEX, STACK_BY_DIMENSION_INDEX, VIEW_BY_DIMENSION_INDEX, } from "../../constants/dimensions.js";
8
8
  import { getChartProperties } from "../_chartCreators/helpers.js";
9
- import { isAreaChart, isBubbleChart, isChartSupported, isComboChart, isHeatmap, isOneOfTypes, isPyramid, isSankeyOrDependencyWheel, isScatterPlot, isTreemap, isWaterfall, stringifyChartTypes, unwrap, } from "../_util/common.js";
9
+ import { isAreaChart, isBubbleChart, isChartSupported, isComboChart, isHeatmap, isMekko, isOneOfTypes, isPyramid, isSankeyOrDependencyWheel, isScatterPlot, isTreemap, isWaterfall, stringifyChartTypes, unwrap, } from "../_util/common.js";
10
10
  import { findAttributeInDimension, findMeasureGroupInDimensions } from "../_util/executionResultHelper.js";
11
11
  import { canComboChartBeStackedInPercent, getComboChartSeries, getComboChartStackingConfig, } from "../comboChart/comboChartOptions.js";
12
+ import { dropZeroWidthMekkoColumns, isMekkoPercentBlockedByNegatives } from "../mekko/mekkoChartOptions.js";
12
13
  import { buildWaterfallChartSeries, getColorAssignment, getWaterfallChartCategories, } from "../waterfallChart/waterfallChartOptions.js";
13
14
  import { assignYAxes, getXAxes, getYAxes } from "./chartAxes.js";
14
15
  import { multiMeasuresAlternatingTypes, showingNameInLegendWhenViewByPresent, unsupportedStackingTypes, } from "./chartCapabilities.js";
@@ -64,6 +65,13 @@ function getCategories(type, measureGroup, viewByAttribute, stackByAttribute, em
64
65
  function getStackingConfig(stackByAttribute, options) {
65
66
  const { type, stackMeasures, stackMeasuresToPercent } = options;
66
67
  const stackingValue = stackMeasuresToPercent ? "percent" : "normal";
68
+ // Mekko has a single Height measure, so it stacks ONLY by the Stack-by attribute. Without a
69
+ // stack attribute there is nothing to stack: applying stack-measures / stack-to-100% to the
70
+ // single series would collapse every column to uniform full height. Guard before the generic
71
+ // stackMeasures/stackMeasuresToPercent branch below (which a stale property would otherwise hit).
72
+ if (isMekko(type)) {
73
+ return stackByAttribute ? stackingValue : null;
74
+ }
67
75
  const supportsStacking = !isOneOfTypes(type, unsupportedStackingTypes);
68
76
  /**
69
77
  * we should enable stacking for one of the following cases :
@@ -484,9 +492,19 @@ export function getChartOptions(dataView, chartConfig, drillableItems, emptyHead
484
492
  const tooltipFactory = getTooltipFactory(isViewByTwoAttributes, viewByAttribute, viewByParentAttribute, stackByAttribute, measure, emptyHeaderTitle, config, isDualAxis);
485
493
  // apply distinct point shapes configuration if enabled
486
494
  const finalSeries = setupDistinctPointShapesToSeries(type, series, config, measureGroup);
495
+ // Mekko: drop zero-width columns (Width/point.z of 0) from series + categories in lockstep.
496
+ const { series: outSeries, categories: outCategories } = isMekko(type)
497
+ ? dropZeroWidthMekkoColumns(finalSeries, categories)
498
+ : { series: finalSeries, categories };
499
+ // Mekko: fall back to absolute stacking for negative Height. The stackMeasuresToPercent property
500
+ // is preserved so 100% re-enables once the data is cleaned. Computed once here and exposed on the
501
+ // returned options for downstream consumers (stacking config, ChartTransformation).
502
+ const stackToPercentBlockedByNegativeValues = isMekkoPercentBlockedByNegatives(type, outSeries);
503
+ const effectiveStacking = stacking === "percent" && stackToPercentBlockedByNegativeValues ? "normal" : stacking;
487
504
  return {
488
505
  type,
489
- stacking,
506
+ stacking: effectiveStacking,
507
+ stackToPercentBlockedByNegativeValues,
490
508
  hasStackByAttribute: Boolean(stackByAttribute),
491
509
  hasViewByAttribute: Boolean(viewByAttribute),
492
510
  legendLayout: config.legendLayout || "horizontal",
@@ -494,8 +512,8 @@ export function getChartOptions(dataView, chartConfig, drillableItems, emptyHead
494
512
  xAxes,
495
513
  yAxes,
496
514
  data: {
497
- series: finalSeries,
498
- categories,
515
+ series: outSeries,
516
+ categories: outCategories,
499
517
  },
500
518
  actions: {
501
519
  tooltip: tooltipFactory,
@@ -1 +1 @@
1
- {"version":3,"file":"chartSeries.d.ts","sourceRoot":"","sources":["../../../../src/highcharts/chartTypes/_chartOptions/chartSeries.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,uBAAuB,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAE,KAAK,cAAc,EAAiC,MAAM,kBAAkB,CAAC;AACtF,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,cAAc,EAEtB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,KAAK,mCAAmC,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,KAAK,UAAU,EAA0B,MAAM,yBAAyB,CAAC;AA0BlF,wBAAgB,iBAAiB,CAC7B,UAAU,EAAE,SAAS,EAAE,EACvB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,uBAAuB,CAAC,oBAAoB,CAAC,EAC3D,eAAe,EAAE,mCAAmC,GAAG,SAAS,GAAG,IAAI,EACvE,gBAAgB,EAAE,mCAAmC,GAAG,SAAS,GAAG,IAAI,EACxE,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,aAAa,EAAE,cAAc,EAC7B,gBAAgB,EAAE,MAAM,EACxB,SAAS,EAAE,gBAAgB,GAAG,SAAS,EACvC,KAAK,EAAE,MAAM,GAAG,SAAS,GAC1B,UAAU,EAAE,CAkFd;AAkFD,wBAAgB,SAAS,CACrB,EAAE,EAAE,cAAc,EAClB,YAAY,EAAE,uBAAuB,CAAC,oBAAoB,CAAC,EAC3D,eAAe,EAAE,mCAAmC,GAAG,SAAS,GAAG,IAAI,EACvE,qBAAqB,EAAE,mCAAmC,GAAG,SAAS,GAAG,IAAI,EAC7E,gBAAgB,EAAE,mCAAmC,GAAG,SAAS,GAAG,IAAI,EACxE,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,aAAa,EAAE,cAAc,EAC7B,gBAAgB,EAAE,MAAM,EACxB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,SAAS,EAAE,gBAAgB,GAAG,SAAS,EACvC,WAAW,CAAC,EAAE,YAAY,GAC3B,GAAG,CAyDL"}
1
+ {"version":3,"file":"chartSeries.d.ts","sourceRoot":"","sources":["../../../../src/highcharts/chartTypes/_chartOptions/chartSeries.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,uBAAuB,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAE,KAAK,cAAc,EAAiC,MAAM,kBAAkB,CAAC;AACtF,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,cAAc,EAEtB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,KAAK,mCAAmC,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,KAAK,UAAU,EAA0B,MAAM,yBAAyB,CAAC;AA4BlF,wBAAgB,iBAAiB,CAC7B,UAAU,EAAE,SAAS,EAAE,EACvB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,uBAAuB,CAAC,oBAAoB,CAAC,EAC3D,eAAe,EAAE,mCAAmC,GAAG,SAAS,GAAG,IAAI,EACvE,gBAAgB,EAAE,mCAAmC,GAAG,SAAS,GAAG,IAAI,EACxE,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,aAAa,EAAE,cAAc,EAC7B,gBAAgB,EAAE,MAAM,EACxB,SAAS,EAAE,gBAAgB,GAAG,SAAS,EACvC,KAAK,EAAE,MAAM,GAAG,SAAS,GAC1B,UAAU,EAAE,CAkFd;AAkFD,wBAAgB,SAAS,CACrB,EAAE,EAAE,cAAc,EAClB,YAAY,EAAE,uBAAuB,CAAC,oBAAoB,CAAC,EAC3D,eAAe,EAAE,mCAAmC,GAAG,SAAS,GAAG,IAAI,EACvE,qBAAqB,EAAE,mCAAmC,GAAG,SAAS,GAAG,IAAI,EAC7E,gBAAgB,EAAE,mCAAmC,GAAG,SAAS,GAAG,IAAI,EACxE,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,aAAa,EAAE,cAAc,EAC7B,gBAAgB,EAAE,MAAM,EACxB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,SAAS,EAAE,gBAAgB,GAAG,SAAS,EACvC,WAAW,CAAC,EAAE,YAAY,GAC3B,GAAG,CAoEL"}