@gooddata/sdk-ui-ext 11.58.0-alpha.2 → 11.58.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.
package/NOTICE CHANGED
@@ -7,9 +7,9 @@
7
7
 
8
8
  The following 3rd-party software packages may be used by or distributed with gooddata-ui-sdk. Any information relevant to third-party vendors listed below are collected using common, reasonable means.
9
9
 
10
- Date generated: 2026-9-18
10
+ Date generated: 2026-9-21
11
11
 
12
- Revision ID: bfb2e581b6e1acf58a2f5502e648b8864dae2b2f
12
+ Revision ID: d287888cbc82806bcb9866c66ecff9b2ff92c32b
13
13
 
14
14
  ================================================================================
15
15
  ================================================================================
@@ -13663,7 +13663,7 @@ MIT
13663
13663
 
13664
13664
  Authors: 1075746765@qq.com, afc163@gmail.com, scdzwyxst@gmail.com, smith3816@gmail.com, wasd2144@hotmail.com
13665
13665
  Package Manager: NPM
13666
- Project URL: https://www.npmjs.com/package/@rc-component/resize-observer
13666
+ Project URL: https://react-component.github.io/resize-observer
13667
13667
  Package Download URL: https://registry.npmjs.org/@rc-component/resize-observer/-/resize-observer-1.1.2.tgz
13668
13668
  Dependency Path: @rc-component/picker > @rc-component/overflow > @rc-component/resize-observer > @rc-component/picker > @rc-component/resize-observer > @rc-component/picker > @rc-component/trigger > @rc-component/resize-observer
13669
13669
  File Path(s): common/config/subspaces/sdk/pnpm-lock.yaml
@@ -21127,7 +21127,7 @@ MIT
21127
21127
 
21128
21128
  Authors: ljharb@gmail.com
21129
21129
  Package Manager: NPM
21130
- Project URL: https://www.npmjs.com/package/call-bind-apply-helpers
21130
+ Project URL: https://github.com/ljharb/call-bind-apply-helpers#readme
21131
21131
  Package Download URL: https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz
21132
21132
  Dependency Path: @formatjs/cli-lib > @formatjs/ts-transformer > json-stable-stringify > call-bind > set-function-length > get-intrinsic > call-bind-apply-helpers > @formatjs/cli-lib > @types/json-stable-stringify > json-stable-stringify > call-bind > set-function-length > get-intrinsic > call-bind-apply-helpers > @formatjs/cli-lib > json-stable-stringify > call-bind > set-function-length > get-intrinsic > call-bind-apply-helpers > axios > form-data > es-set-tostringtag > get-intrinsic > call-bind-apply-helpers > json-stable-stringify > call-bind > call-bind-apply-helpers > json-stable-stringify > call-bind > get-intrinsic > call-bind-apply-helpers > json-stable-stringify > call-bind > get-intrinsic > get-proto > dunder-proto > call-bind-apply-helpers > json-stable-stringify > call-bind > set-function-length > get-intrinsic > call-bind-apply-helpers > json-stable-stringify > call-bound > call-bind-apply-helpers > json-stable-stringify > call-bound > get-intrinsic > call-bind-apply-helpers
21133
21133
  File Path(s): common/config/subspaces/sdk/pnpm-lock.yaml
@@ -30212,7 +30212,7 @@ MIT
30212
30212
 
30213
30213
  Authors: ljharb@gmail.com
30214
30214
  Package Manager: NPM
30215
- Project URL: https://www.npmjs.com/package/gopd
30215
+ Project URL: https://github.com/ljharb/gopd#readme
30216
30216
  Package Download URL: https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz
30217
30217
  Dependency Path: @formatjs/cli-lib > @formatjs/ts-transformer > @types/json-stable-stringify > json-stable-stringify > call-bind > set-function-length > gopd > @formatjs/cli-lib > @formatjs/ts-transformer > json-stable-stringify > call-bind > set-function-length > gopd > @formatjs/cli-lib > @types/json-stable-stringify > json-stable-stringify > call-bind > set-function-length > gopd > @formatjs/cli-lib > json-stable-stringify > call-bind > set-function-length > gopd > axios > form-data > es-set-tostringtag > get-intrinsic > gopd > json-stable-stringify > call-bind > get-intrinsic > get-proto > dunder-proto > gopd > json-stable-stringify > call-bind > get-intrinsic > gopd > json-stable-stringify > call-bind > set-function-length > define-data-property > gopd > json-stable-stringify > call-bind > set-function-length > gopd > json-stable-stringify > call-bound > get-intrinsic > gopd
30218
30218
  File Path(s): common/config/subspaces/sdk/pnpm-lock.yaml
@@ -38217,7 +38217,7 @@ MIT
38217
38217
 
38218
38218
  Authors: tituswormer@gmail.com
38219
38219
  Package Manager: NPM
38220
- Project URL: https://www.npmjs.com/package/mathml-tag-names
38220
+ Project URL: https://github.com/wooorm/mathml-tag-names#readme
38221
38221
  Package Download URL: https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz
38222
38222
  Dependency Path: stylelint > mathml-tag-names > stylelint-config-standard > stylelint > mathml-tag-names > stylelint-config-standard > stylelint-config-recommended > stylelint > mathml-tag-names > stylelint-order > stylelint > mathml-tag-names > stylelint-plugin-defensive-css > stylelint > mathml-tag-names > stylelint-scss > stylelint > mathml-tag-names
38223
38223
  File Path(s): common/config/subspaces/sdk/pnpm-lock.yaml
@@ -43603,7 +43603,7 @@ MIT
43603
43603
 
43604
43604
  Authors: daniel@touchlay.com, npm@joshuakgoldberg.com
43605
43605
  Package Manager: NPM
43606
- Project URL: https://www.npmjs.com/package/node-emoji
43606
+ Project URL: https://github.com/omnidan/node-emoji#readme
43607
43607
  Package Download URL: https://registry.npmjs.org/node-emoji/-/node-emoji-2.2.0.tgz
43608
43608
  Dependency Path: remark-emoji > node-emoji
43609
43609
  File Path(s): common/config/subspaces/sdk/pnpm-lock.yaml
@@ -64914,4 +64914,4 @@ File Path(s): common/config/subspaces/sdk/pnpm-lock.yaml
64914
64914
  --------------------------------------------------------------------------------
64915
64915
  --------------------------------------------------------------------------------
64916
64916
 
64917
- Report Generated by FOSSA on 2026-9-18
64917
+ Report Generated by FOSSA on 2026-9-21
package/esm/index.d.ts CHANGED
@@ -87,4 +87,6 @@ export { accessListToSummary, draftToSummary, type ObjectShareLevel, summaryOthe
87
87
  export { isPermissionsNotAvailable } from "./share/accessErrors.js";
88
88
  export { type IObjectAccessLevel, type IUseObjectAccessLevelOptions, useObjectAccessLevel, } from "./share/useObjectAccessLevel.js";
89
89
  export type { IObjectAccessSummary, IObjectShareLabel } from "./share/types.js";
90
+ export { type ILayerTableConversionOptions, type ILayerTableDefinition, canConvertToTable, convertInsightToLayerTables, convertInsightToTableDefinition, supportsShowAsTable, } from "./insightToTable/insightToTable.js";
91
+ export { getGeoTableDisplayFormRefs } from "./insightToTable/geoDefaultDisplayFormRefs.js";
90
92
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,YAAY,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EACH,sCAAsC,EACtC,yCAAyC,EACzC,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EAErB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,gCAAgC,EAChC,oCAAoC,EACpC,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,6BAA6B,EAClC,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,4BAA4B,EAC5B,KAAK,UAAU,EACf,uBAAuB,EACvB,gCAAgC,EAChC,KAAK,+BAA+B,EACpC,kCAAkC,EAClC,sCAAsC,EACtC,+CAA+C,EAC/C,mDAAmD,EACnD,iCAAiC,EACjC,+BAA+B,EAC/B,qBAAqB,EACrB,iCAAiC,EACjC,qBAAqB,EACrB,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,8BAA8B,EACjC,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,sBAAsB,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAC;AACjG,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAC/F,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EACH,2BAA2B,EAC3B,KAAK,iCAAiC,EACtC,KAAK,uCAAuC,GAC/C,MAAM,kGAAkG,CAAC;AAC1G,OAAO,EAAE,sBAAsB,EAAE,MAAM,6FAA6F,CAAC;AACrI,OAAO,EACH,eAAe,EACf,OAAO,EACP,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,WAAW,GACnB,MAAM,iGAAiG,CAAC;AACzG,YAAY,EACR,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,6BAA6B,EAC7B,mBAAmB,EACnB,0BAA0B,GAC7B,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACR,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,6BAA6B,EAC7B,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,qBAAqB,EACrB,8BAA8B,EAC9B,+BAA+B,EAC/B,6BAA6B,EAC7B,2BAA2B,EAC3B,iBAAiB,EACjB,eAAe,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAC9F,OAAO,EACH,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,WAAW,GACd,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACH,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,EAClC,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,+BAA+B,EACpC,KAAK,wBAAwB,EAC7B,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,UAAU,EACV,gBAAgB,EAChB,gCAAgC,EAChC,+BAA+B,EAC/B,sCAAsC,EACtC,gCAAgC,EAChC,oCAAoC,EACpC,4BAA4B,EAC5B,iCAAiC,EACjC,kCAAkC,EAClC,sCAAsC,EACtC,+CAA+C,EAC/C,mDAAmD,EACnD,yCAAyC,EACzC,uBAAuB,EACvB,kBAAkB,EAClB,UAAU,EACV,iBAAiB,EACjB,8BAA8B,EAC9B,iCAAiC,GACpC,CAAC;AAGF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,SAAS,GAAG,sBAAsB,CAM3G;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAC1C,OAAO,EAAE,QAAQ,EACjB,UAAU,EAAE,WAAW,EACvB,eAAe,EAAE,oBAAoB,EACrC,0BAA0B,EAAE,OAAO,EACnC,QAAQ,EAAE,SAAS,GACpB,QAAQ,CAaV;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACvC,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,CAAC,EAAE,SAAS,GACrB,kBAAkB,CAMpB;AAED,YAAY,EACR,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,kBAAkB,EAClB,oBAAoB,EACpB,SAAS,GACZ,MAAM,8DAA8D,CAAC;AACtE,OAAO,EACH,cAAc,EACd,KAAK,oBAAoB,GAC5B,MAAM,uEAAuE,CAAC;AAC/E,OAAO,EACH,mBAAmB,EACnB,KAAK,yBAAyB,GACjC,MAAM,4EAA4E,CAAC;AACpF,OAAO,EACH,qBAAqB,EACrB,KAAK,2BAA2B,GACnC,MAAM,8EAA8E,CAAC;AACtF,OAAO,EACH,gBAAgB,EAChB,KAAK,sBAAsB,GAC9B,MAAM,yEAAyE,CAAC;AACjF,OAAO,EACH,iBAAiB,EACjB,KAAK,uBAAuB,GAC/B,MAAM,0EAA0E,CAAC;AAClF,OAAO,EACH,qBAAqB,EACrB,KAAK,2BAA2B,GACnC,MAAM,8EAA8E,CAAC;AACtF,OAAO,EACH,sBAAsB,EACtB,KAAK,4BAA4B,GACpC,MAAM,+EAA+E,CAAC;AACvF,OAAO,EACH,sBAAsB,EACtB,KAAK,4BAA4B,GACpC,MAAM,+EAA+E,CAAC;AACvF,OAAO,EACH,uBAAuB,EACvB,KAAK,6BAA6B,GACrC,MAAM,gFAAgF,CAAC;AACxF,OAAO,EACH,0BAA0B,EAC1B,KAAK,gCAAgC,GACxC,MAAM,mFAAmF,CAAC;AAC3F,OAAO,EACH,0BAA0B,EAC1B,KAAK,gCAAgC,GACxC,MAAM,mFAAmF,CAAC;AAC3F,YAAY,EACR,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACtB,MAAM,yEAAyE,CAAC;AAEjF,OAAO,EACH,8BAA8B,EAC9B,KAAK,oCAAoC,GAC5C,MAAM,uGAAuG,CAAC;AAC/G,OAAO,EACH,6BAA6B,EAC7B,KAAK,6BAA6B,EAClC,KAAK,mCAAmC,GAC3C,MAAM,sGAAsG,CAAC;AAC9G,OAAO,EACH,wBAAwB,EACxB,KAAK,8BAA8B,GACtC,MAAM,iGAAiG,CAAC;AAEzG,OAAO,EACH,2BAA2B,EAC3B,qCAAqC,EACrC,qCAAqC,EACrC,6CAA6C,GAChD,MAAM,yDAAyD,CAAC;AACjE,OAAO,EAAE,iCAAiC,EAAE,MAAM,oEAAoE,CAAC;AAEvH,OAAO,EACH,kBAAkB,EAClB,KAAK,wBAAwB,EAC7B,KAAK,wCAAwC,GAChD,MAAM,+DAA+D,CAAC;AACvE,OAAO,EACH,yBAAyB,EACzB,KAAK,iCAAiC,GACzC,MAAM,sEAAsE,CAAC;AAC9E,OAAO,EACH,+BAA+B,EAC/B,KAAK,uCAAuC,GAC/C,MAAM,4EAA4E,CAAC;AACpF,OAAO,EACH,+BAA+B,EAC/B,KAAK,uCAAuC,GAC/C,MAAM,4EAA4E,CAAC;AACpF,OAAO,EACH,wBAAwB,EACxB,KAAK,gCAAgC,GACxC,MAAM,oEAAoE,CAAC;AAC5E,OAAO,EACH,kCAAkC,EAClC,KAAK,0CAA0C,GAClD,MAAM,8EAA8E,CAAC;AACtF,OAAO,EACH,kCAAkC,EAClC,KAAK,0CAA0C,GAClD,MAAM,8EAA8E,CAAC;AACtF,OAAO,EACH,mBAAmB,EACnB,KAAK,2BAA2B,GACnC,MAAM,0DAA0D,CAAC;AAClE,OAAO,EACH,+BAA+B,EAC/B,KAAK,uCAAuC,GAC/C,MAAM,+DAA+D,CAAC;AACvE,YAAY,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAE7E;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,QAEzC;AAED,OAAO,EACH,mBAAmB,EACnB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,GAChC,MAAM,0DAA0D,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,KAAK,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC/F,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,YAAY,EAER,WAAW,EACX,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,SAAS,EACT,0BAA0B,GAC7B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EACH,mBAAmB,EACnB,cAAc,EACd,KAAK,gBAAgB,EACrB,wBAAwB,EACxB,mBAAmB,GACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EACH,KAAK,kBAAkB,EACvB,KAAK,4BAA4B,EACjC,oBAAoB,GACvB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEhF,OAAO,EACH,KAAK,4BAA4B,EACjC,KAAK,qBAAqB,EAC1B,iBAAiB,EACjB,2BAA2B,EAC3B,+BAA+B,EAC/B,mBAAmB,GACtB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,+CAA+C,CAAC"}
package/esm/index.js CHANGED
@@ -79,3 +79,5 @@ export { useCopyObjectPermissions } from "./share/useCopyObjectPermissions.js";
79
79
  export { accessListToSummary, draftToSummary, summaryOtherGranteeCount, summaryToShareLevel, } from "./share/accessSummary.js";
80
80
  export { isPermissionsNotAvailable } from "./share/accessErrors.js";
81
81
  export { useObjectAccessLevel, } from "./share/useObjectAccessLevel.js";
82
+ export { canConvertToTable, convertInsightToLayerTables, convertInsightToTableDefinition, supportsShowAsTable, } from "./insightToTable/insightToTable.js";
83
+ export { getGeoTableDisplayFormRefs } from "./insightToTable/geoDefaultDisplayFormRefs.js";
@@ -0,0 +1,10 @@
1
+ import { type IAttributeWithReferences } from "@gooddata/sdk-backend-spi";
2
+ import { type GeoLayerType, type IBucket, type ICatalogAttribute, type IInsight, type ISettings, type ObjRef } from "@gooddata/sdk-model";
3
+ /**
4
+ * The display form each geo attribute is read through when the insight states none of its own.
5
+ *
6
+ * @internal
7
+ */
8
+ export declare function getGeoTableDisplayFormRefs(insight: IInsight, settings: ISettings | undefined, catalogAttributes: ICatalogAttribute[], preloadedAttributesWithReferences?: IAttributeWithReferences[]): Map<string, ObjRef> | undefined;
9
+ export declare function resolveGeoDefaultDisplayFormRefs(layerType: GeoLayerType, buckets: IBucket[], catalogAttributes: ICatalogAttribute[], preloadedAttributesWithReferences?: IAttributeWithReferences[]): Map<string, ObjRef> | undefined;
10
+ //# sourceMappingURL=geoDefaultDisplayFormRefs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geoDefaultDisplayFormRefs.d.ts","sourceRoot":"","sources":["../../src/insightToTable/geoDefaultDisplayFormRefs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EACH,KAAK,YAAY,EAEjB,KAAK,OAAO,EACZ,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,MAAM,EAQd,MAAM,qBAAqB,CAAC;AAO7B;;;;GAIG;AACH,wBAAgB,0BAA0B,CACtC,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,SAAS,GAAG,SAAS,EAC/B,iBAAiB,EAAE,iBAAiB,EAAE,EACtC,iCAAiC,CAAC,EAAE,wBAAwB,EAAE,GAC/D,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAiBjC;AAED,wBAAgB,gCAAgC,CAC5C,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,OAAO,EAAE,EAClB,iBAAiB,EAAE,iBAAiB,EAAE,EACtC,iCAAiC,CAAC,EAAE,wBAAwB,EAAE,GAC/D,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAmBjC"}
@@ -0,0 +1,33 @@
1
+ // (C) 2025-2026 GoodData Corporation
2
+ import { GeoLayerTypes, attributeDisplayFormRef, bucketAttribute, bucketsFind, geoLayerTypeFromVisualizationType, insightBuckets, insightVisualizationType, serializeObjRef, } from "@gooddata/sdk-model";
3
+ import { BucketNames, isGeoVisualizationUsingNewEngine, resolveDefaultDisplayFormRefForDisplayForm, } from "@gooddata/sdk-ui";
4
+ /**
5
+ * The display form each geo attribute is read through when the insight states none of its own.
6
+ *
7
+ * @internal
8
+ */
9
+ export function getGeoTableDisplayFormRefs(insight, settings, catalogAttributes, preloadedAttributesWithReferences) {
10
+ const type = insightVisualizationType(insight);
11
+ if (!isGeoVisualizationUsingNewEngine(type, settings)) {
12
+ return undefined;
13
+ }
14
+ const layerType = geoLayerTypeFromVisualizationType(type);
15
+ if (!layerType) {
16
+ return undefined;
17
+ }
18
+ return resolveGeoDefaultDisplayFormRefs(layerType, insightBuckets(insight), catalogAttributes, preloadedAttributesWithReferences);
19
+ }
20
+ export function resolveGeoDefaultDisplayFormRefs(layerType, buckets, catalogAttributes, preloadedAttributesWithReferences) {
21
+ const bucketName = layerType === GeoLayerTypes.AREA ? BucketNames.AREA : BucketNames.LOCATION;
22
+ const geoBucket = bucketsFind(buckets, bucketName);
23
+ const geoAttribute = geoBucket ? bucketAttribute(geoBucket) : undefined;
24
+ if (!geoAttribute) {
25
+ return undefined;
26
+ }
27
+ const geoDisplayFormRef = attributeDisplayFormRef(geoAttribute);
28
+ const defaultDisplayFormRef = resolveDefaultDisplayFormRefForDisplayForm(geoDisplayFormRef, catalogAttributes, preloadedAttributesWithReferences);
29
+ if (!defaultDisplayFormRef) {
30
+ return undefined;
31
+ }
32
+ return new Map([[serializeObjRef(geoDisplayFormRef), defaultDisplayFormRef]]);
33
+ }
@@ -0,0 +1,75 @@
1
+ import { type IAttributeWithReferences } from "@gooddata/sdk-backend-spi";
2
+ import { type ICatalogAttribute, type IInsight, type ISettings } from "@gooddata/sdk-model";
3
+ import { type GeoTableConversionOptions } from "@gooddata/sdk-ui";
4
+ /**
5
+ * Determines if a visualization type supports the "Show as Table" UI button.
6
+ * This controls whether users can manually toggle table view in the UI.
7
+ *
8
+ * @param insightType - The visualization type to check
9
+ * @returns true if the visualization supports the Show as Table UI feature
10
+ * @internal
11
+ */
12
+ export declare function supportsShowAsTable(insightType?: string): boolean;
13
+ /**
14
+ * Determines if a visualization type can be converted to table format.
15
+ * This is used for accessibility and export purposes, separate from UI controls.
16
+ *
17
+ * @param insightType - The visualization type to check
18
+ * @returns true if the visualization can be converted to table format
19
+ * @internal
20
+ */
21
+ export declare function canConvertToTable(insightType?: string): boolean;
22
+ /**
23
+ * Defines a single layer's table conversion result for multi-layer geo charts.
24
+ *
25
+ * @alpha
26
+ */
27
+ export interface ILayerTableDefinition {
28
+ /** Stable id — "root" for root layer, layer.id for additional layers */
29
+ layerId: string;
30
+ /** Human-readable name for the tab label */
31
+ layerName: string;
32
+ /** Normalized layer type */
33
+ layerType: string;
34
+ /** Converted table insight for this layer */
35
+ tableInsight: IInsight;
36
+ }
37
+ /**
38
+ * Options steering how a multi-layer geo insight is turned into per-layer tables.
39
+ *
40
+ * @internal
41
+ */
42
+ export interface ILayerTableConversionOptions {
43
+ settings?: ISettings;
44
+ catalogAttributes?: ICatalogAttribute[];
45
+ preloadedAttributesWithReferences?: IAttributeWithReferences[];
46
+ }
47
+ /**
48
+ * Converts a multi-layer geo insight into per-layer table definitions.
49
+ *
50
+ * Returns `undefined` when the insight is not a new-geo type (flags off, non-geo, etc.).
51
+ * Returns an array of {@link ILayerTableDefinition} with root layer first, then
52
+ * additional layers in their original order.
53
+ *
54
+ * @internal
55
+ */
56
+ export declare function convertGeoInsightToLayerTables(insight: IInsight, options: ILayerTableConversionOptions): ILayerTableDefinition[] | undefined;
57
+ /**
58
+ * Converts an insight to layered table definitions.
59
+ *
60
+ * @remarks
61
+ * Currently supports geo insights only and is gated by `enableGeoChartA11yImprovements`.
62
+ *
63
+ * @internal
64
+ */
65
+ export declare function convertInsightToLayerTables(insight: IInsight, options: ILayerTableConversionOptions): ILayerTableDefinition[] | undefined;
66
+ /**
67
+ * Converts any insight (except of type "table", "repeater", or "xirr") to a table insight definition.
68
+ * For table, repeater, or xirr insights, returns the original insight.
69
+ *
70
+ * @param insight - The input insight to convert.
71
+ * @returns IInsight with table visualization or the original insight if conversion is not supported.
72
+ * @internal
73
+ */
74
+ export declare function convertInsightToTableDefinition(insight: IInsight, options?: GeoTableConversionOptions): IInsight;
75
+ //# sourceMappingURL=insightToTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insightToTable.d.ts","sourceRoot":"","sources":["../../src/insightToTable/insightToTable.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAQH,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EAEb,KAAK,SAAS,EAyBjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEH,KAAK,yBAAyB,EAIjC,MAAM,kBAAkB,CAAC;AAI1B;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAOjE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAE/D;AAsYD;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IAClC,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,YAAY,EAAE,QAAQ,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,WAAW,4BAA4B;IACzC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACxC,iCAAiC,CAAC,EAAE,wBAAwB,EAAE,CAAC;CAClE;AAED;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAC1C,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,4BAA4B,GACtC,qBAAqB,EAAE,GAAG,SAAS,CAsDrC;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACvC,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,4BAA4B,GACtC,qBAAqB,EAAE,GAAG,SAAS,CAErC;AAED;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC3C,OAAO,EAAE,QAAQ,EACjB,OAAO,GAAE,yBAA8B,GACxC,QAAQ,CA+HV"}
@@ -0,0 +1,482 @@
1
+ // (C) 2025-2026 GoodData Corporation
2
+ import { GeoLayerTypes, areObjRefsEqual, attributeAlias, attributeDisplayFormRef, attributeLocalId, bucketAttribute, bucketMeasure, bucketsFind, geoLayerTypeFromVisualizationType, idRef, insightBuckets, insightLayers, insightMeasures, insightProperties, insightSorts, insightVisualizationType, isGeoLayerType, isPoPMeasure, isPreviousPeriodMeasure, isUriRef, newAttribute, newVirtualArithmeticMeasure, serializeObjRef, uriRef, } from "@gooddata/sdk-model";
3
+ import { BucketNames, VisualizationTypes, convertGeoInsightToTableDefinition as convertGeoInsightToTableDefinitionShared, isGeoVisualizationUsingNewEngine, } from "@gooddata/sdk-ui";
4
+ import { resolveGeoDefaultDisplayFormRefs } from "./geoDefaultDisplayFormRefs.js";
5
+ /**
6
+ * Determines if a visualization type supports the "Show as Table" UI button.
7
+ * This controls whether users can manually toggle table view in the UI.
8
+ *
9
+ * @param insightType - The visualization type to check
10
+ * @returns true if the visualization supports the Show as Table UI feature
11
+ * @internal
12
+ */
13
+ export function supportsShowAsTable(insightType) {
14
+ return (insightType !== "table" &&
15
+ insightType !== "repeater" &&
16
+ insightType !== "headline" &&
17
+ insightType !== "xirr");
18
+ }
19
+ /**
20
+ * Determines if a visualization type can be converted to table format.
21
+ * This is used for accessibility and export purposes, separate from UI controls.
22
+ *
23
+ * @param insightType - The visualization type to check
24
+ * @returns true if the visualization can be converted to table format
25
+ * @internal
26
+ */
27
+ export function canConvertToTable(insightType) {
28
+ return insightType !== "table" && insightType !== "repeater" && insightType !== "xirr";
29
+ }
30
+ /**
31
+ * Default format strings for comparison calculations
32
+ * These match the defaults from sdk-ui-charts/headlineHelper.ts CALCULATION_VALUES_DEFAULT
33
+ *
34
+ * @remarks
35
+ * - CHANGE: Percentage change between primary and secondary
36
+ * - RATIO: Ratio of primary to secondary as percentage
37
+ * - DIFFERENCE: Absolute difference (null means inherit from primary measure)
38
+ * - CHANGE_DIFFERENCE: Both percentage and absolute (sub-value uses null to inherit)
39
+ */
40
+ const COMPARISON_FORMATS = {
41
+ change: "#,##0%",
42
+ ratio: "#,##0%",
43
+ difference: null, // null means inherit format from primary measure
44
+ change_difference: {
45
+ main: "#,##0%",
46
+ sub: null, // Absolute difference (inherit)
47
+ },
48
+ };
49
+ /**
50
+ * Extracts comparison configuration from insight properties
51
+ */
52
+ function getComparisonConfig(insight) {
53
+ const properties = insightProperties(insight);
54
+ return properties["controls"]?.comparison;
55
+ }
56
+ /**
57
+ * Checks if a headline insight has comparison enabled and exactly one secondary measure
58
+ * Matches the logic from HeadlineProviderFactory.isComparisonType in sdk-ui-charts
59
+ *
60
+ * @param insight - The insight to check
61
+ * @returns true if the insight is a headline with comparison enabled
62
+ *
63
+ * @remarks
64
+ * A headline qualifies for comparison if:
65
+ * 1. It's a "headline" visualization type
66
+ * 2. It has both a primary and secondary measure
67
+ * 3. Comparison is enabled in config (defaults to true)
68
+ *
69
+ */
70
+ function isHeadlineWithComparison(insight) {
71
+ const type = insightVisualizationType(insight);
72
+ if (type !== "headline") {
73
+ return false;
74
+ }
75
+ const buckets = insightBuckets(insight);
76
+ const primaryBucket = bucketsFind(buckets, BucketNames.MEASURES);
77
+ const secondaryBucket = bucketsFind(buckets, BucketNames.SECONDARY_MEASURES);
78
+ const primaryMeasure = primaryBucket && bucketMeasure(primaryBucket);
79
+ const secondaryMeasure = secondaryBucket && bucketMeasure(secondaryBucket);
80
+ if (!primaryMeasure || !secondaryMeasure) {
81
+ return false;
82
+ }
83
+ const comparison = getComparisonConfig(insight);
84
+ return comparison?.enabled ?? true;
85
+ }
86
+ /**
87
+ * Determines the calculation type for headline comparison
88
+ * Matches the logic from ComparisonProvider in sdk-ui-charts
89
+ *
90
+ * @param secondaryMeasure - The secondary measure to compare against
91
+ * @param comparison - Optional comparison configuration from insight properties
92
+ * @returns The calculation type to use
93
+ *
94
+ * @remarks
95
+ * Default logic (when no calculationType is configured):
96
+ * - If secondary measure is derived (PoP, Previous Period) → use "change" (percentage change)
97
+ * - If secondary measure is regular → use "ratio" (proportion)
98
+ *
99
+ */
100
+ function getCalculationType(secondaryMeasure, comparison) {
101
+ if (comparison?.calculationType) {
102
+ return comparison.calculationType;
103
+ }
104
+ if (isPoPMeasure(secondaryMeasure) || isPreviousPeriodMeasure(secondaryMeasure)) {
105
+ return "change";
106
+ }
107
+ return "ratio";
108
+ }
109
+ /**
110
+ * Creates virtual arithmetic measures for headline comparison
111
+ * Replicates the logic from ComparisonProvider in sdk-ui-charts
112
+ *
113
+ * @param primaryMeasure - The primary measure
114
+ * @param secondaryMeasure - The secondary measure to compare against
115
+ * @param calculationType - The type of calculation to perform
116
+ * @returns Array of virtual arithmetic measures (1 or 2 depending on calculation type)
117
+ *
118
+ * @remarks
119
+ * Virtual arithmetic measures are calculated by the backend:
120
+ * - "change": ((primary - secondary) / secondary) * 100
121
+ * - "ratio": (primary / secondary)
122
+ * - "difference": (primary - secondary)
123
+ * - "change_difference": Both change AND difference as separate measures
124
+ *
125
+ * The backend performs all calculations; we just create the measure definitions.
126
+ * Format strings are applied so values display correctly (e.g., "25%" instead of "0.25").
127
+ *
128
+ * @see {@link sdk-backend-tiger/MeasureConverter.ts#convertArithmeticMeasureDefinition}
129
+ */
130
+ function createHeadlineComparisonMeasures(primaryMeasure, secondaryMeasure, calculationType) {
131
+ const createVirtualArithmeticMeasure = (operator, format, shouldCombineLocalIdAndOperator) => {
132
+ return newVirtualArithmeticMeasure([primaryMeasure, secondaryMeasure], operator, (builder) => {
133
+ if (shouldCombineLocalIdAndOperator) {
134
+ builder.combineLocalIdWithOperator();
135
+ }
136
+ // Apply format: null means inherit from primary measure, string means use explicit format
137
+ if (format !== null) {
138
+ builder.format(format);
139
+ }
140
+ return builder;
141
+ });
142
+ };
143
+ switch (calculationType) {
144
+ case "difference":
145
+ return [createVirtualArithmeticMeasure("difference", COMPARISON_FORMATS.difference)];
146
+ case "ratio":
147
+ return [createVirtualArithmeticMeasure("ratio", COMPARISON_FORMATS.ratio)];
148
+ case "change":
149
+ return [createVirtualArithmeticMeasure("change", COMPARISON_FORMATS.change)];
150
+ case "change_difference":
151
+ return [
152
+ createVirtualArithmeticMeasure("change", COMPARISON_FORMATS.change_difference.main, true),
153
+ createVirtualArithmeticMeasure("difference", COMPARISON_FORMATS.change_difference.sub, true),
154
+ ];
155
+ default:
156
+ return [];
157
+ }
158
+ }
159
+ /**
160
+ * Transforms a geo bucket attribute to use tooltipText display form (legacy pushpin only).
161
+ *
162
+ * @remarks
163
+ * This is used only when legacy pushpin behavior is active (new geo flags disabled).
164
+ */
165
+ function transformGeoBucketAttributeUsingTooltipText(bucket, insight, uniqueLocalIdSuffix) {
166
+ if (!bucket) {
167
+ return undefined;
168
+ }
169
+ const geoAttr = bucketAttribute(bucket);
170
+ if (!geoAttr) {
171
+ return undefined;
172
+ }
173
+ const properties = insightProperties(insight);
174
+ const tooltipTextId = properties?.["controls"]?.["tooltipText"];
175
+ if (!tooltipTextId) {
176
+ return geoAttr;
177
+ }
178
+ const ref = isUriRef(attributeDisplayFormRef(geoAttr))
179
+ ? uriRef(tooltipTextId)
180
+ : idRef(tooltipTextId, "displayForm");
181
+ // Generate a unique localId to avoid conflicts with existing attributes
182
+ const uniqueLocalId = `${attributeLocalId(geoAttr)}_${uniqueLocalIdSuffix}`;
183
+ const alias = attributeAlias(geoAttr);
184
+ return newAttribute(ref, (m) => {
185
+ m.localId(uniqueLocalId);
186
+ if (alias) {
187
+ m.alias(alias);
188
+ }
189
+ return m;
190
+ });
191
+ }
192
+ /**
193
+ * Transforms a geo bucket attribute to use the default display form.
194
+ *
195
+ * @remarks
196
+ * Used for new GeoChartNext variants when feature flags are enabled.
197
+ */
198
+ function transformGeoBucketAttributeUsingDefaultDisplayForm(bucket, defaultDisplayFormRefs, uniqueLocalIdSuffix) {
199
+ if (!bucket) {
200
+ return undefined;
201
+ }
202
+ const geoAttr = bucketAttribute(bucket);
203
+ if (!geoAttr) {
204
+ return undefined;
205
+ }
206
+ const geoDisplayFormRef = attributeDisplayFormRef(geoAttr);
207
+ const defaultDisplayFormRef = defaultDisplayFormRefs?.get(serializeObjRef(geoDisplayFormRef));
208
+ if (!defaultDisplayFormRef || areObjRefsEqual(defaultDisplayFormRef, geoDisplayFormRef)) {
209
+ return geoAttr;
210
+ }
211
+ const uniqueLocalId = `${attributeLocalId(geoAttr)}_${uniqueLocalIdSuffix}`;
212
+ const alias = attributeAlias(geoAttr);
213
+ return newAttribute(defaultDisplayFormRef, (m) => {
214
+ m.localId(uniqueLocalId);
215
+ if (alias) {
216
+ m.alias(alias);
217
+ }
218
+ return m;
219
+ });
220
+ }
221
+ function transformGeoLocationAttribute(locationBucket, insight) {
222
+ return transformGeoBucketAttributeUsingTooltipText(locationBucket, insight, "table_name");
223
+ }
224
+ function resolveGeoPrimaryAttribute(options, insight, buckets, layerType) {
225
+ if (layerType) {
226
+ return resolveGeoPrimaryAttributeByLayerType(layerType, buckets, options.defaultDisplayFormRefs);
227
+ }
228
+ const type = insightVisualizationType(insight);
229
+ const isLegacyGeoPushpin = type === VisualizationTypes.PUSHPIN && !options.settings?.enableNewGeoPushpin;
230
+ const isNewGeoVisualization = isGeoVisualizationUsingNewEngine(type, options.settings);
231
+ if (isLegacyGeoPushpin) {
232
+ return transformGeoLocationAttribute(bucketsFind(buckets, BucketNames.LOCATION), insight);
233
+ }
234
+ if (isNewGeoVisualization) {
235
+ const rootLayerType = geoLayerTypeFromVisualizationType(type);
236
+ if (rootLayerType) {
237
+ return resolveGeoPrimaryAttributeByLayerType(rootLayerType, buckets, options.defaultDisplayFormRefs);
238
+ }
239
+ }
240
+ return undefined;
241
+ }
242
+ function getGeoTableAttributesWithSegmentAndPrimary(buckets, primaryAttribute) {
243
+ const segmentBucket = bucketsFind(buckets, BucketNames.SEGMENT);
244
+ const rowAttributes = [];
245
+ const segmentAttr = segmentBucket ? bucketAttribute(segmentBucket) : undefined;
246
+ if (segmentAttr) {
247
+ rowAttributes.push(segmentAttr);
248
+ }
249
+ if (primaryAttribute) {
250
+ rowAttributes.push(primaryAttribute);
251
+ }
252
+ return { rowAttributes, columnAttributes: [] };
253
+ }
254
+ function getGeoTableAttributes(insight, buckets, options, layerType) {
255
+ const type = insightVisualizationType(insight);
256
+ const isLegacyGeoPushpin = type === VisualizationTypes.PUSHPIN && !options.settings?.enableNewGeoPushpin;
257
+ const isNewGeoVisualization = isGeoVisualizationUsingNewEngine(type, options.settings);
258
+ if (!layerType && !isLegacyGeoPushpin && !isNewGeoVisualization) {
259
+ return null;
260
+ }
261
+ const primaryAttribute = resolveGeoPrimaryAttribute(options, insight, buckets, layerType);
262
+ return getGeoTableAttributesWithSegmentAndPrimary(buckets, primaryAttribute);
263
+ }
264
+ function resolveGeoPrimaryAttributeByLayerType(layerType, buckets, defaultDisplayFormRefs) {
265
+ const bucketName = layerType === GeoLayerTypes.AREA ? BucketNames.AREA : BucketNames.LOCATION;
266
+ return transformGeoBucketAttributeUsingDefaultDisplayForm(bucketsFind(buckets, bucketName), defaultDisplayFormRefs, "table_default_label");
267
+ }
268
+ function buildTableInsightFromBuckets(insight, buckets, layerType, defaultDisplayFormRefs) {
269
+ const measureBucketIdentifiers = new Set([
270
+ BucketNames.MEASURES,
271
+ BucketNames.SIZE,
272
+ BucketNames.COLOR,
273
+ BucketNames.SECONDARY_MEASURES,
274
+ ]);
275
+ const measures = buckets
276
+ .filter((b) => measureBucketIdentifiers.has(b.localIdentifier ?? ""))
277
+ .flatMap((b) => b.items);
278
+ const { rowAttributes, columnAttributes } = getGeoTableAttributes(insight, buckets, { defaultDisplayFormRefs }, layerType) ?? { rowAttributes: [], columnAttributes: [] };
279
+ const tableBuckets = [
280
+ { localIdentifier: BucketNames.MEASURES, items: measures },
281
+ { localIdentifier: BucketNames.ATTRIBUTE, items: rowAttributes },
282
+ { localIdentifier: BucketNames.COLUMNS, items: columnAttributes },
283
+ ];
284
+ const onlyMeasures = !rowAttributes.length && !columnAttributes.length;
285
+ const propertiesProp = onlyMeasures
286
+ ? { properties: { controls: { measureGroupDimension: "rows" } } }
287
+ : {};
288
+ const tableInsight = {
289
+ ...insight,
290
+ insight: {
291
+ ...insight.insight,
292
+ visualizationUrl: "local:table",
293
+ buckets: tableBuckets,
294
+ ...propertiesProp,
295
+ },
296
+ };
297
+ return {
298
+ ...tableInsight,
299
+ insight: {
300
+ ...tableInsight.insight,
301
+ // Keep only sorts that reference attributes/measures present in this layer table.
302
+ sorts: insightSorts(tableInsight),
303
+ },
304
+ };
305
+ }
306
+ /**
307
+ * Converts a multi-layer geo insight into per-layer table definitions.
308
+ *
309
+ * Returns `undefined` when the insight is not a new-geo type (flags off, non-geo, etc.).
310
+ * Returns an array of {@link ILayerTableDefinition} with root layer first, then
311
+ * additional layers in their original order.
312
+ *
313
+ * @internal
314
+ */
315
+ export function convertGeoInsightToLayerTables(insight, options) {
316
+ if (!options.settings?.["enableGeoChartA11yImprovements"]) {
317
+ return undefined;
318
+ }
319
+ const type = insightVisualizationType(insight);
320
+ if (!isGeoVisualizationUsingNewEngine(type, options.settings)) {
321
+ return undefined;
322
+ }
323
+ const rootLayerType = geoLayerTypeFromVisualizationType(type);
324
+ if (!rootLayerType) {
325
+ return undefined;
326
+ }
327
+ const rootBuckets = insightBuckets(insight);
328
+ const rootDisplayFormRefs = resolveGeoDefaultDisplayFormRefs(rootLayerType, rootBuckets, options.catalogAttributes ?? [], options.preloadedAttributesWithReferences);
329
+ const rootTable = buildTableInsightFromBuckets(insight, rootBuckets, rootLayerType, rootDisplayFormRefs);
330
+ const rootDef = {
331
+ layerId: "root",
332
+ layerName: insight.insight.title,
333
+ layerType: rootLayerType,
334
+ tableInsight: rootTable,
335
+ };
336
+ const layers = insightLayers(insight);
337
+ const layerDefs = layers.flatMap((layer) => {
338
+ if (!isGeoLayerType(layer.type)) {
339
+ return [];
340
+ }
341
+ const layerType = layer.type;
342
+ const displayFormRefs = resolveGeoDefaultDisplayFormRefs(layerType, layer.buckets, options.catalogAttributes ?? [], options.preloadedAttributesWithReferences);
343
+ const tableInsight = buildTableInsightFromBuckets(insight, layer.buckets, layerType, displayFormRefs);
344
+ return [
345
+ {
346
+ layerId: layer.id,
347
+ layerName: layer.name ?? layer.id,
348
+ layerType,
349
+ tableInsight,
350
+ },
351
+ ];
352
+ });
353
+ return [rootDef, ...layerDefs];
354
+ }
355
+ /**
356
+ * Converts an insight to layered table definitions.
357
+ *
358
+ * @remarks
359
+ * Currently supports geo insights only and is gated by `enableGeoChartA11yImprovements`.
360
+ *
361
+ * @internal
362
+ */
363
+ export function convertInsightToLayerTables(insight, options) {
364
+ return convertGeoInsightToLayerTables(insight, options);
365
+ }
366
+ /**
367
+ * Converts any insight (except of type "table", "repeater", or "xirr") to a table insight definition.
368
+ * For table, repeater, or xirr insights, returns the original insight.
369
+ *
370
+ * @param insight - The input insight to convert.
371
+ * @returns IInsight with table visualization or the original insight if conversion is not supported.
372
+ * @internal
373
+ */
374
+ export function convertInsightToTableDefinition(insight, options = {}) {
375
+ const type = insightVisualizationType(insight);
376
+ if (!canConvertToTable(type)) {
377
+ return insight;
378
+ }
379
+ const geoTableInsight = convertGeoInsightToTableDefinitionShared(insight, options);
380
+ if (geoTableInsight) {
381
+ return geoTableInsight;
382
+ }
383
+ // Use sdk-model utils to extract all measures and attributes
384
+ // and build table buckets according to PluggablePivotTable conventions
385
+ // - 'measures' bucket: all measures
386
+ // - 'attributes' bucket: all attributes
387
+ // - 'columns' bucket: empty (can be customized if needed)
388
+ // This is a safe default for generic conversion
389
+ // If more advanced splitting is needed (e.g. from view/stack by), logic can be extended
390
+ //
391
+ // Note: IBucket type is imported from sdk-model
392
+ //
393
+ // The output insight will have only these three buckets
394
+ // Import bucket utilities for splitting attributes
395
+ // PluggablePivotTable convention: row attributes come from the first attribute bucket (view by, trend by, etc),
396
+ // column attributes come from the second attribute bucket (columns, stack by, etc)
397
+ // Measures always from 'measures' bucket
398
+ // See getRowAttributes and getColumnAttributes in PluggablePivotTable
399
+ const buckets = insightBuckets(insight);
400
+ const baseMeasures = insightMeasures(insight);
401
+ // Handle headline comparison: add virtual arithmetic measures for change/difference/ratio
402
+ const comparisonMeasures = [];
403
+ if (isHeadlineWithComparison(insight)) {
404
+ const primaryBucket = bucketsFind(buckets, BucketNames.MEASURES);
405
+ const secondaryBucket = bucketsFind(buckets, BucketNames.SECONDARY_MEASURES);
406
+ const primaryMeasure = primaryBucket && bucketMeasure(primaryBucket);
407
+ const secondaryMeasure = secondaryBucket && bucketMeasure(secondaryBucket);
408
+ if (primaryMeasure && secondaryMeasure) {
409
+ const comparison = getComparisonConfig(insight);
410
+ const calculationType = getCalculationType(secondaryMeasure, comparison);
411
+ comparisonMeasures.push(...createHeadlineComparisonMeasures(primaryMeasure, secondaryMeasure, calculationType));
412
+ }
413
+ }
414
+ const measures = [...baseMeasures, ...comparisonMeasures];
415
+ /**
416
+ * Keep conversion logic aligned with `PluggablePivotTable`:
417
+ * - row attributes: see `getRowAttributes` in `sdk-ui-ext`
418
+ * - column attributes: see `getColumnAttributes` in `sdk-ui-ext`
419
+ *
420
+ * Note: using `BucketNames.*` avoids fragile magic strings.
421
+ */
422
+ const rowBucketIdentifiers = [
423
+ BucketNames.ATTRIBUTE,
424
+ BucketNames.ATTRIBUTES,
425
+ BucketNames.ATTRIBUTE_FROM,
426
+ BucketNames.ATTRIBUTE_TO,
427
+ BucketNames.VIEW,
428
+ BucketNames.TREND,
429
+ BucketNames.LOCATION,
430
+ BucketNames.AREA,
431
+ ];
432
+ const columnBucketIdentifiers = [BucketNames.COLUMNS, BucketNames.STACK, BucketNames.SEGMENT];
433
+ const isRowBucket = (bucket) => rowBucketIdentifiers.includes(bucket.localIdentifier ?? "");
434
+ const isColumnBucket = (bucket) => columnBucketIdentifiers.includes(bucket.localIdentifier ?? "");
435
+ let rowAttributes;
436
+ let columnAttributes;
437
+ const geoAttributes = getGeoTableAttributes(insight, buckets, options);
438
+ if (geoAttributes) {
439
+ rowAttributes = geoAttributes.rowAttributes;
440
+ columnAttributes = geoAttributes.columnAttributes;
441
+ }
442
+ else {
443
+ const rowBuckets = buckets.filter(isRowBucket);
444
+ const columnBuckets = buckets.filter(isColumnBucket);
445
+ rowAttributes = rowBuckets.map((bucket) => bucket.items).flat();
446
+ columnAttributes = columnBuckets.map((bucket) => bucket.items).flat();
447
+ }
448
+ const tableBuckets = [
449
+ {
450
+ localIdentifier: BucketNames.MEASURES,
451
+ items: measures,
452
+ },
453
+ {
454
+ localIdentifier: BucketNames.ATTRIBUTE,
455
+ items: rowAttributes,
456
+ },
457
+ {
458
+ localIdentifier: BucketNames.COLUMNS,
459
+ items: columnAttributes,
460
+ },
461
+ ];
462
+ const onlyMeasures = !rowAttributes.length && !columnAttributes.length;
463
+ const propertiesProp = onlyMeasures
464
+ ? {
465
+ properties: {
466
+ controls: {
467
+ measureGroupDimension: "rows",
468
+ },
469
+ },
470
+ }
471
+ : {};
472
+ const tableInsight = {
473
+ ...insight,
474
+ insight: {
475
+ ...insight.insight,
476
+ visualizationUrl: "local:table",
477
+ buckets: tableBuckets,
478
+ ...propertiesProp,
479
+ },
480
+ };
481
+ return tableInsight;
482
+ }
@@ -22,12 +22,15 @@ import { Dispatch } from 'react';
22
22
  import { EmbedType } from '@gooddata/sdk-ui-kit';
23
23
  import { ExplicitDrill } from '@gooddata/sdk-ui';
24
24
  import { GeneralAccessValue } from '@gooddata/sdk-ui-kit';
25
+ import { GeoTableConversionOptions } from '@gooddata/sdk-ui';
25
26
  import { GoodDataSdkError } from '@gooddata/sdk-ui';
26
27
  import { IAlertComparisonOperator } from '@gooddata/sdk-model';
27
28
  import { IAlertRelativeArithmeticOperator } from '@gooddata/sdk-model';
28
29
  import { IAlertRelativeOperator } from '@gooddata/sdk-model';
29
30
  import { IAnalyticalBackend } from '@gooddata/sdk-backend-spi';
31
+ import { IAttributeWithReferences } from '@gooddata/sdk-backend-spi';
30
32
  import { IAutomationMetadataObject } from '@gooddata/sdk-model';
33
+ import { ICatalogAttribute } from '@gooddata/sdk-model';
31
34
  import { ICatalogAttributeHierarchy } from '@gooddata/sdk-model';
32
35
  import { IChartConfig } from '@gooddata/sdk-ui-charts';
33
36
  import { IColorPalette } from '@gooddata/sdk-model';
@@ -238,6 +241,16 @@ export declare type AutomationsScope = "workspace" | "organization";
238
241
  */
239
242
  export declare type AutomationsType = Extract<AutomationType, "alert" | "schedule">;
240
243
 
244
+ /**
245
+ * Determines if a visualization type can be converted to table format.
246
+ * This is used for accessibility and export purposes, separate from UI controls.
247
+ *
248
+ * @param insightType - The visualization type to check
249
+ * @returns true if the visualization can be converted to table format
250
+ * @internal
251
+ */
252
+ export declare function canConvertToTable(insightType?: string): boolean;
253
+
241
254
  export { ChartInlineVisualizationType }
242
255
 
243
256
  /**
@@ -296,6 +309,26 @@ export declare type ConditionalFormattingDialogSubmitIntent = {
296
309
  rule: IConditionalFormattingRule;
297
310
  };
298
311
 
312
+ /**
313
+ * Converts an insight to layered table definitions.
314
+ *
315
+ * @remarks
316
+ * Currently supports geo insights only and is gated by `enableGeoChartA11yImprovements`.
317
+ *
318
+ * @internal
319
+ */
320
+ export declare function convertInsightToLayerTables(insight: IInsight, options: ILayerTableConversionOptions): ILayerTableDefinition[] | undefined;
321
+
322
+ /**
323
+ * Converts any insight (except of type "table", "repeater", or "xirr") to a table insight definition.
324
+ * For table, repeater, or xirr insights, returns the original insight.
325
+ *
326
+ * @param insight - The input insight to convert.
327
+ * @returns IInsight with table visualization or the original insight if conversion is not supported.
328
+ * @internal
329
+ */
330
+ export declare function convertInsightToTableDefinition(insight: IInsight, options?: GeoTableConversionOptions): IInsight;
331
+
299
332
  /**
300
333
  * @internal
301
334
  */
@@ -464,6 +497,13 @@ export declare const getComparisonOperatorTitle: (operator: IAlertComparisonOper
464
497
  */
465
498
  export declare function getEffectiveConditionalFormatting(insight: IInsightDefinition, settings: ISettings | undefined, configOverride?: IConditionalFormatting): IConditionalFormatting | undefined;
466
499
 
500
+ /**
501
+ * The display form each geo attribute is read through when the insight states none of its own.
502
+ *
503
+ * @internal
504
+ */
505
+ export declare function getGeoTableDisplayFormRefs(insight: IInsight, settings: ISettings | undefined, catalogAttributes: ICatalogAttribute[], preloadedAttributesWithReferences?: IAttributeWithReferences[]): Map<string, ObjRef> | undefined;
506
+
467
507
  /**
468
508
  * @internal
469
509
  */
@@ -1081,6 +1121,33 @@ export declare interface IInsightViewProps extends Partial<IVisualizationCallbac
1081
1121
  TitleComponent?: ComponentType<IInsightTitleProps>;
1082
1122
  }
1083
1123
 
1124
+ /**
1125
+ * Options steering how a multi-layer geo insight is turned into per-layer tables.
1126
+ *
1127
+ * @internal
1128
+ */
1129
+ export declare interface ILayerTableConversionOptions {
1130
+ settings?: ISettings;
1131
+ catalogAttributes?: ICatalogAttribute[];
1132
+ preloadedAttributesWithReferences?: IAttributeWithReferences[];
1133
+ }
1134
+
1135
+ /**
1136
+ * Defines a single layer's table conversion result for multi-layer geo charts.
1137
+ *
1138
+ * @alpha
1139
+ */
1140
+ export declare interface ILayerTableDefinition {
1141
+ /** Stable id — "root" for root layer, layer.id for additional layers */
1142
+ layerId: string;
1143
+ /** Human-readable name for the tab label */
1144
+ layerName: string;
1145
+ /** Normalized layer type */
1146
+ layerType: string;
1147
+ /** Converted table insight for this layer */
1148
+ tableInsight: IInsight;
1149
+ }
1150
+
1084
1151
  /**
1085
1152
  * Layout descriptor.
1086
1153
  * Provides parameters of used layout.
@@ -2265,6 +2332,16 @@ export declare function summaryOtherGranteeCount(summary: IObjectAccessSummary):
2265
2332
  */
2266
2333
  export declare function summaryToShareLevel(summary: IObjectAccessSummary): ObjectShareLevel;
2267
2334
 
2335
+ /**
2336
+ * Determines if a visualization type supports the "Show as Table" UI button.
2337
+ * This controls whether users can manually toggle table view in the UI.
2338
+ *
2339
+ * @param insightType - The visualization type to check
2340
+ * @returns true if the visualization supports the Show as Table UI feature
2341
+ * @internal
2342
+ */
2343
+ export declare function supportsShowAsTable(insightType?: string): boolean;
2344
+
2268
2345
  /**
2269
2346
  * @internal
2270
2347
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-ui-ext",
3
- "version": "11.58.0-alpha.2",
3
+ "version": "11.58.0-alpha.3",
4
4
  "description": "GoodData.UI SDK - Extensions",
5
5
  "license": "LicenseRef-LICENSE",
6
6
  "author": "GoodData Corporation",
@@ -63,20 +63,20 @@
63
63
  "ts-invariant": "0.10.3",
64
64
  "tslib": "2.8.1",
65
65
  "uuid": "11.1.1",
66
- "@gooddata/sdk-backend-base": "11.58.0-alpha.2",
67
- "@gooddata/sdk-backend-spi": "11.58.0-alpha.2",
68
- "@gooddata/sdk-embedding": "11.58.0-alpha.2",
69
- "@gooddata/sdk-ui": "11.58.0-alpha.2",
70
- "@gooddata/sdk-model": "11.58.0-alpha.2",
71
- "@gooddata/sdk-ui-filters": "11.58.0-alpha.2",
72
- "@gooddata/sdk-ui-charts": "11.58.0-alpha.2",
73
- "@gooddata/sdk-ui-kit": "11.58.0-alpha.2",
74
- "@gooddata/sdk-ui-pivot": "11.58.0-alpha.2",
75
- "@gooddata/sdk-ui-geo": "11.58.0-alpha.2",
76
- "@gooddata/sdk-ui-semantic-search": "11.58.0-alpha.2",
77
- "@gooddata/sdk-ui-theme-provider": "11.58.0-alpha.2",
78
- "@gooddata/sdk-ui-vis-commons": "11.58.0-alpha.2",
79
- "@gooddata/util": "11.58.0-alpha.2"
66
+ "@gooddata/sdk-backend-base": "11.58.0-alpha.3",
67
+ "@gooddata/sdk-backend-spi": "11.58.0-alpha.3",
68
+ "@gooddata/sdk-ui": "11.58.0-alpha.3",
69
+ "@gooddata/sdk-model": "11.58.0-alpha.3",
70
+ "@gooddata/sdk-embedding": "11.58.0-alpha.3",
71
+ "@gooddata/sdk-ui-charts": "11.58.0-alpha.3",
72
+ "@gooddata/sdk-ui-filters": "11.58.0-alpha.3",
73
+ "@gooddata/sdk-ui-kit": "11.58.0-alpha.3",
74
+ "@gooddata/sdk-ui-pivot": "11.58.0-alpha.3",
75
+ "@gooddata/sdk-ui-geo": "11.58.0-alpha.3",
76
+ "@gooddata/sdk-ui-semantic-search": "11.58.0-alpha.3",
77
+ "@gooddata/sdk-ui-theme-provider": "11.58.0-alpha.3",
78
+ "@gooddata/sdk-ui-vis-commons": "11.58.0-alpha.3",
79
+ "@gooddata/util": "11.58.0-alpha.3"
80
80
  },
81
81
  "devDependencies": {
82
82
  "@microsoft/api-documenter": "7.30.10",
@@ -120,12 +120,12 @@
120
120
  "typescript": "7.0.2",
121
121
  "vitest": "4.1.11",
122
122
  "vitest-dom": "0.1.1",
123
- "@gooddata/i18n-toolkit": "11.58.0-alpha.2",
124
- "@gooddata/eslint-config": "11.58.0-alpha.2",
125
- "@gooddata/oxlint-config": "11.58.0-alpha.2",
126
- "@gooddata/sdk-backend-mockingbird": "11.58.0-alpha.2",
127
- "@gooddata/reference-workspace": "11.58.0-alpha.2",
128
- "@gooddata/stylelint-config": "11.58.0-alpha.2"
123
+ "@gooddata/eslint-config": "11.58.0-alpha.3",
124
+ "@gooddata/i18n-toolkit": "11.58.0-alpha.3",
125
+ "@gooddata/oxlint-config": "11.58.0-alpha.3",
126
+ "@gooddata/reference-workspace": "11.58.0-alpha.3",
127
+ "@gooddata/sdk-backend-mockingbird": "11.58.0-alpha.3",
128
+ "@gooddata/stylelint-config": "11.58.0-alpha.3"
129
129
  },
130
130
  "peerDependencies": {
131
131
  "react": "^18.0.0 || ^19.0.0",