@gooddata/sdk-ui-geo 11.25.0-alpha.0 → 11.25.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.
- package/esm/next/hooks/map/useApplyInitialViewport.d.ts +5 -5
- package/esm/next/hooks/map/useApplyInitialViewport.js +6 -6
- package/esm/next/hooks/map/useApplyInitialViewport.js.map +1 -1
- package/esm/next/hooks/map/useApplyViewportOnConfigChange.d.ts.map +1 -1
- package/esm/next/hooks/map/useApplyViewportOnConfigChange.js +7 -3
- package/esm/next/hooks/map/useApplyViewportOnConfigChange.js.map +1 -1
- package/esm/next/hooks/map/useMapResize.d.ts +2 -1
- package/esm/next/hooks/map/useMapResize.d.ts.map +1 -1
- package/esm/next/hooks/map/useMapResize.js +45 -6
- package/esm/next/hooks/map/useMapResize.js.map +1 -1
- package/esm/next/map/MapController.js +1 -1
- package/esm/next/map/MapController.js.map +1 -1
- package/esm/next/map/runtime/bounds.d.ts +12 -0
- package/esm/next/map/runtime/bounds.d.ts.map +1 -0
- package/esm/next/map/runtime/bounds.js +24 -0
- package/esm/next/map/runtime/bounds.js.map +1 -0
- package/esm/next/map/runtime/mapConfig.js +2 -2
- package/esm/next/map/runtime/mapConfig.js.map +1 -1
- package/esm/next/map/runtime/mapInitialization.d.ts.map +1 -1
- package/esm/next/map/runtime/mapInitialization.js +2 -4
- package/esm/next/map/runtime/mapInitialization.js.map +1 -1
- package/esm/next/map/viewport/responsiveViewport.d.ts +9 -0
- package/esm/next/map/viewport/responsiveViewport.d.ts.map +1 -0
- package/esm/next/map/viewport/responsiveViewport.js +129 -0
- package/esm/next/map/viewport/responsiveViewport.js.map +1 -0
- package/esm/next/map/viewport/viewportCalculation.d.ts.map +1 -1
- package/esm/next/map/viewport/viewportCalculation.js +2 -3
- package/esm/next/map/viewport/viewportCalculation.js.map +1 -1
- package/esm/next/map/viewport/viewportResolution.d.ts +6 -5
- package/esm/next/map/viewport/viewportResolution.d.ts.map +1 -1
- package/esm/next/map/viewport/viewportResolution.js +28 -19
- package/esm/next/map/viewport/viewportResolution.js.map +1 -1
- package/package.json +11 -11
|
@@ -2,14 +2,14 @@ import type { IMapFacade } from "../../layers/common/mapFacade.js";
|
|
|
2
2
|
import type { IGeoChartConfig } from "../../types/config/unified.js";
|
|
3
3
|
import type { IMapViewport } from "../../types/map/provider.js";
|
|
4
4
|
/**
|
|
5
|
-
* Applies
|
|
5
|
+
* Applies late data-derived viewport once, after map readiness.
|
|
6
6
|
*
|
|
7
7
|
* @remarks
|
|
8
|
-
* Map initialization captures
|
|
9
|
-
*
|
|
8
|
+
* Map initialization captures viewport only at creation time. In some flows (for example async boundary loading),
|
|
9
|
+
* data-derived bounds can arrive after the map instance already exists.
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
11
|
+
* Explicit viewports (`config.center` or non-`auto` area) are handled at map initialization time.
|
|
12
|
+
* This hook only handles `auto` mode when real data bounds become available later.
|
|
13
13
|
*
|
|
14
14
|
* @internal
|
|
15
15
|
*/
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
import { useEffect, useRef } from "react";
|
|
3
3
|
import { applyViewport } from "../../map/viewport/viewportCalculation.js";
|
|
4
4
|
/**
|
|
5
|
-
* Applies
|
|
5
|
+
* Applies late data-derived viewport once, after map readiness.
|
|
6
6
|
*
|
|
7
7
|
* @remarks
|
|
8
|
-
* Map initialization captures
|
|
9
|
-
*
|
|
8
|
+
* Map initialization captures viewport only at creation time. In some flows (for example async boundary loading),
|
|
9
|
+
* data-derived bounds can arrive after the map instance already exists.
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
11
|
+
* Explicit viewports (`config.center` or non-`auto` area) are handled at map initialization time.
|
|
12
|
+
* This hook only handles `auto` mode when real data bounds become available later.
|
|
13
13
|
*
|
|
14
14
|
* @internal
|
|
15
15
|
*/
|
|
@@ -29,7 +29,7 @@ export function useApplyInitialViewport(map, isMapReady, config, initialViewport
|
|
|
29
29
|
appliedForMapRef.current = map;
|
|
30
30
|
return;
|
|
31
31
|
}
|
|
32
|
-
if (!initialViewport) {
|
|
32
|
+
if (!initialViewport?.bounds) {
|
|
33
33
|
return;
|
|
34
34
|
}
|
|
35
35
|
applyViewport(map, initialViewport, false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useApplyInitialViewport.js","sourceRoot":"","sources":["../../../../src/next/hooks/map/useApplyInitialViewport.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAI1E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,uBAAuB,CACnC,GAAsB,EACtB,UAAmB,EACnB,MAAmC,EACnC,eAA6C,EACzC;IACJ,MAAM,gBAAgB,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAEzD,SAAS,CAAC,GAAG,EAAE,CAAC;QACZ,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO;QACX,CAAC;QAED,uCAAuC;QACvC,IAAI,gBAAgB,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;YACnC,OAAO;QACX,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC;QACpC,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC;QACxF,IAAI,mBAAmB,EAAE,CAAC;YACtB,gBAAgB,CAAC,OAAO,GAAG,GAAG,CAAC;YAC/B,OAAO;QACX,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"useApplyInitialViewport.js","sourceRoot":"","sources":["../../../../src/next/hooks/map/useApplyInitialViewport.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAI1E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,uBAAuB,CACnC,GAAsB,EACtB,UAAmB,EACnB,MAAmC,EACnC,eAA6C,EACzC;IACJ,MAAM,gBAAgB,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAEzD,SAAS,CAAC,GAAG,EAAE,CAAC;QACZ,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO;QACX,CAAC;QAED,uCAAuC;QACvC,IAAI,gBAAgB,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;YACnC,OAAO;QACX,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC;QACpC,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC;QACxF,IAAI,mBAAmB,EAAE,CAAC;YACtB,gBAAgB,CAAC,OAAO,GAAG,GAAG,CAAC;YAC/B,OAAO;QACX,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;YAC3B,OAAO;QACX,CAAC;QAED,aAAa,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;QAC3C,gBAAgB,CAAC,OAAO,GAAG,GAAG,CAAC;IAAA,CAClC,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;AAAA,CAClF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useApplyViewportOnConfigChange.d.ts","sourceRoot":"","sources":["../../../../src/next/hooks/map/useApplyViewportOnConfigChange.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"useApplyViewportOnConfigChange.d.ts","sourceRoot":"","sources":["../../../../src/next/hooks/map/useApplyViewportOnConfigChange.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAInE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAyBhE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,8BAA8B,CAC1C,GAAG,EAAE,UAAU,GAAG,IAAI,EACtB,UAAU,EAAE,OAAO,EACnB,MAAM,EAAE,eAAe,GAAG,SAAS,EACnC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,GAC3C,IAAI,CAqEN"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// (C) 2025-2026 GoodData Corporation
|
|
2
2
|
import { useEffect, useMemo, useRef } from "react";
|
|
3
|
+
import { resolveResponsiveViewport } from "../../map/viewport/responsiveViewport.js";
|
|
3
4
|
import { applyViewport } from "../../map/viewport/viewportCalculation.js";
|
|
4
5
|
import { computeViewportFromConfig, getViewportConfigKey } from "../../map/viewport/viewportResolution.js";
|
|
5
6
|
import { prefersReducedMotion } from "../../utils/prefersReducedMotion.js";
|
|
@@ -36,6 +37,7 @@ function isCenterAndZoomAlreadyApplied(map, viewport) {
|
|
|
36
37
|
*/
|
|
37
38
|
export function useApplyViewportOnConfigChange(map, isMapReady, config, dataViewport) {
|
|
38
39
|
const hasConfig = config !== undefined;
|
|
40
|
+
const enableGeoChartsViewportConfig = config?.enableGeoChartsViewportConfig;
|
|
39
41
|
const center = config?.center;
|
|
40
42
|
const zoom = config?.zoom;
|
|
41
43
|
const applyViewportNavigation = config?.applyViewportNavigation;
|
|
@@ -45,6 +47,7 @@ export function useApplyViewportOnConfigChange(map, isMapReady, config, dataView
|
|
|
45
47
|
return undefined;
|
|
46
48
|
}
|
|
47
49
|
return {
|
|
50
|
+
enableGeoChartsViewportConfig,
|
|
48
51
|
center,
|
|
49
52
|
zoom,
|
|
50
53
|
applyViewportNavigation,
|
|
@@ -52,7 +55,7 @@ export function useApplyViewportOnConfigChange(map, isMapReady, config, dataView
|
|
|
52
55
|
area,
|
|
53
56
|
},
|
|
54
57
|
};
|
|
55
|
-
}, [hasConfig, center, zoom, applyViewportNavigation, area]);
|
|
58
|
+
}, [hasConfig, enableGeoChartsViewportConfig, center, zoom, applyViewportNavigation, area]);
|
|
56
59
|
const configKey = useMemo(() => getViewportConfigKey(viewportConfig), [viewportConfig]);
|
|
57
60
|
const previousConfigKeyRef = useRef(null);
|
|
58
61
|
useEffect(() => {
|
|
@@ -77,12 +80,13 @@ export function useApplyViewportOnConfigChange(map, isMapReady, config, dataView
|
|
|
77
80
|
if (!viewportToApply) {
|
|
78
81
|
return;
|
|
79
82
|
}
|
|
83
|
+
const responsiveViewportToApply = resolveResponsiveViewport(map, viewportToApply, dataViewport, viewportConfig);
|
|
80
84
|
// Custom viewport persistence updates center/zoom from live map state.
|
|
81
85
|
// Re-applying an already-current camera with flyTo causes redundant animation.
|
|
82
|
-
if (isCenterAndZoomAlreadyApplied(map,
|
|
86
|
+
if (isCenterAndZoomAlreadyApplied(map, responsiveViewportToApply)) {
|
|
83
87
|
return;
|
|
84
88
|
}
|
|
85
|
-
applyViewport(map,
|
|
89
|
+
applyViewport(map, responsiveViewportToApply, !prefersReducedMotion());
|
|
86
90
|
}, [map, isMapReady, applyViewportNavigation, configKey, viewportConfig, dataViewport]);
|
|
87
91
|
}
|
|
88
92
|
//# sourceMappingURL=useApplyViewportOnConfigChange.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useApplyViewportOnConfigChange.js","sourceRoot":"","sources":["../../../../src/next/hooks/map/useApplyViewportOnConfigChange.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAGnD,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAG3G,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,MAAM,cAAc,GAAG,QAAQ,CAAC;AAChC,MAAM,YAAY,GAAG,MAAM,CAAC;AAE5B,SAAS,OAAO,CAAC,CAAS,EAAE,CAAS,EAAE,OAAe,EAAW;IAC7D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC;AAAA,CACrC;AAED,SAAS,6BAA6B,CAAC,GAAe,EAAE,QAA+B,EAAW;IAC9F,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAE9B,OAAO,CACH,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,cAAc,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,cAAc,CAAC;QAC3D,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAChD,CAAC;AAAA,CACL;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,8BAA8B,CAC1C,GAAsB,EACtB,UAAmB,EACnB,MAAmC,EACnC,YAA0C,EACtC;IACJ,MAAM,SAAS,GAAG,MAAM,KAAK,SAAS,CAAC;IACvC,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC;IAC9B,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,CAAC;IAC1B,MAAM,uBAAuB,GAAG,MAAM,EAAE,uBAAuB,CAAC;IAChE,MAAM,IAAI,GAAG,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC;IAEpC,MAAM,cAAc,GAAG,OAAO,CAA8B,GAAG,EAAE,CAAC;QAC9D,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,OAAO;YACH,MAAM;YACN,IAAI;YACJ,uBAAuB;YACvB,QAAQ,EAAE;gBACN,IAAI;aACP;SACJ,CAAC;IAAA,CACL,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"useApplyViewportOnConfigChange.js","sourceRoot":"","sources":["../../../../src/next/hooks/map/useApplyViewportOnConfigChange.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type ContentRect } from "react-measure";
|
|
2
2
|
import type { IMapFacade } from "../../layers/common/mapFacade.js";
|
|
3
|
+
import { type IGeoChartConfig } from "../../types/config/unified.js";
|
|
3
4
|
import { type IMapViewport } from "../../types/map/provider.js";
|
|
4
5
|
/**
|
|
5
6
|
* Handle map resize when container dimensions change
|
|
@@ -20,5 +21,5 @@ import { type IMapViewport } from "../../types/map/provider.js";
|
|
|
20
21
|
*
|
|
21
22
|
* @internal
|
|
22
23
|
*/
|
|
23
|
-
export declare function useMapResize(map: IMapFacade | null, isMapReady: boolean, chartContainerRect: ContentRect | null, viewport: Partial<IMapViewport> | null): void;
|
|
24
|
+
export declare function useMapResize(map: IMapFacade | null, isMapReady: boolean, chartContainerRect: ContentRect | null, viewport: Partial<IMapViewport> | null, dataViewport: Partial<IMapViewport> | null, config: IGeoChartConfig | undefined): void;
|
|
24
25
|
//# sourceMappingURL=useMapResize.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMapResize.d.ts","sourceRoot":"","sources":["../../../../src/next/hooks/map/useMapResize.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"useMapResize.d.ts","sourceRoot":"","sources":["../../../../src/next/hooks/map/useMapResize.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAGnE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAuBhE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CACxB,GAAG,EAAE,UAAU,GAAG,IAAI,EACtB,UAAU,EAAE,OAAO,EACnB,kBAAkB,EAAE,WAAW,GAAG,IAAI,EACtC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,EACtC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,EAC1C,MAAM,EAAE,eAAe,GAAG,SAAS,GACpC,IAAI,CA4CN"}
|
|
@@ -1,6 +1,23 @@
|
|
|
1
1
|
// (C) 2025-2026 GoodData Corporation
|
|
2
|
-
import { useEffect, useRef } from "react";
|
|
2
|
+
import { useEffect, useMemo, useRef } from "react";
|
|
3
|
+
import { resolveResponsiveViewport } from "../../map/viewport/responsiveViewport.js";
|
|
3
4
|
import { applyViewport } from "../../map/viewport/viewportCalculation.js";
|
|
5
|
+
function getViewportKey(viewport) {
|
|
6
|
+
if (viewport.bounds) {
|
|
7
|
+
const { southWest, northEast } = viewport.bounds;
|
|
8
|
+
return `bounds:${southWest.lng}:${southWest.lat}:${northEast.lng}:${northEast.lat}`;
|
|
9
|
+
}
|
|
10
|
+
if (viewport.center && viewport.zoom !== undefined) {
|
|
11
|
+
return `center:${viewport.center.lng}:${viewport.center.lat}:zoom:${viewport.zoom}`;
|
|
12
|
+
}
|
|
13
|
+
if (viewport.center) {
|
|
14
|
+
return `center:${viewport.center.lng}:${viewport.center.lat}`;
|
|
15
|
+
}
|
|
16
|
+
if (viewport.zoom !== undefined) {
|
|
17
|
+
return `zoom:${viewport.zoom}`;
|
|
18
|
+
}
|
|
19
|
+
return "empty";
|
|
20
|
+
}
|
|
4
21
|
/**
|
|
5
22
|
* Handle map resize when container dimensions change
|
|
6
23
|
*
|
|
@@ -20,21 +37,43 @@ import { applyViewport } from "../../map/viewport/viewportCalculation.js";
|
|
|
20
37
|
*
|
|
21
38
|
* @internal
|
|
22
39
|
*/
|
|
23
|
-
export function useMapResize(map, isMapReady, chartContainerRect, viewport) {
|
|
40
|
+
export function useMapResize(map, isMapReady, chartContainerRect, viewport, dataViewport, config) {
|
|
41
|
+
const area = config?.viewport?.area;
|
|
42
|
+
const viewportConfig = useMemo(() => {
|
|
43
|
+
if (area === undefined) {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
viewport: { area },
|
|
48
|
+
};
|
|
49
|
+
}, [area]);
|
|
24
50
|
const prevContainerRect = useRef(null);
|
|
51
|
+
const previousViewportKeyRef = useRef(null);
|
|
52
|
+
const previousMapRef = useRef(null);
|
|
25
53
|
useEffect(() => {
|
|
26
54
|
if (!map || !isMapReady || !chartContainerRect?.client || !viewport) {
|
|
27
55
|
return;
|
|
28
56
|
}
|
|
57
|
+
if (previousMapRef.current !== map) {
|
|
58
|
+
previousMapRef.current = map;
|
|
59
|
+
previousViewportKeyRef.current = null;
|
|
60
|
+
prevContainerRect.current = null;
|
|
61
|
+
}
|
|
29
62
|
const prev = prevContainerRect.current?.client;
|
|
30
63
|
const curr = chartContainerRect.client;
|
|
31
64
|
const { width, height } = curr;
|
|
32
65
|
const hasResized = !prev || prev.width !== width || prev.height !== height;
|
|
33
|
-
|
|
66
|
+
const viewportToApply = resolveResponsiveViewport(map, viewport, dataViewport, viewportConfig);
|
|
67
|
+
const viewportKey = getViewportKey(viewportToApply);
|
|
68
|
+
const hasViewportChanged = previousViewportKeyRef.current !== viewportKey;
|
|
69
|
+
if (hasResized || hasViewportChanged) {
|
|
34
70
|
prevContainerRect.current = chartContainerRect;
|
|
35
|
-
|
|
36
|
-
|
|
71
|
+
if (hasResized) {
|
|
72
|
+
map.resize();
|
|
73
|
+
}
|
|
74
|
+
applyViewport(map, viewportToApply, false);
|
|
75
|
+
previousViewportKeyRef.current = viewportKey;
|
|
37
76
|
}
|
|
38
|
-
}, [map, isMapReady, chartContainerRect, viewport]);
|
|
77
|
+
}, [map, isMapReady, chartContainerRect, viewport, dataViewport, viewportConfig]);
|
|
39
78
|
}
|
|
40
79
|
//# sourceMappingURL=useMapResize.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMapResize.js","sourceRoot":"","sources":["../../../../src/next/hooks/map/useMapResize.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useMapResize.js","sourceRoot":"","sources":["../../../../src/next/hooks/map/useMapResize.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,7 +29,7 @@ export function MapController({ mapContainerRef, legendPanelRef, chartContainerR
|
|
|
29
29
|
}
|
|
30
30
|
function MapLifecycleEffects({ chartContainerRect, initialViewport, dataViewport, config, layerExecutions, drillablePredicates, onCenterPositionChanged, onZoomChanged, onDrill, afterRender, }) {
|
|
31
31
|
const { map, isMapReady } = useMapRuntime();
|
|
32
|
-
useMapResize(map, isMapReady, chartContainerRect, initialViewport);
|
|
32
|
+
useMapResize(map, isMapReady, chartContainerRect, initialViewport, dataViewport, config);
|
|
33
33
|
useApplyInitialViewport(map, isMapReady, config, initialViewport);
|
|
34
34
|
useApplyViewportOnConfigChange(map, isMapReady, config, dataViewport);
|
|
35
35
|
useMapCallbacks(map, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapController.js","sourceRoot":"","sources":["../../../src/next/map/MapController.tsx"],"names":[],"mappings":";AAAA,qCAAqC;AAErC,OAAO,EAAqC,OAAO,EAAE,MAAM,OAAO,CAAC;AAKnE,OAAO,EAAiD,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE7F,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,EAAE,8BAA8B,EAAE,MAAM,gDAAgD,CAAC;AAChG,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAwB5D;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,EAC1B,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,aAAa,EACb,OAAO,EACP,WAAW,EACX,MAAM,EACN,OAAO,EACP,iBAAiB,EACjB,cAAc,GACG,EAAuB;IACxC,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,oBAAoB,CACrD,eAAe,EACf,MAAM,EACN,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,cAAc,CACjB,CAAC;IACF,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAE9C,MAAM,YAAY,GAAG,OAAO,CACxB,GAAG,EAAE,CAAC,CAAC;QACH,GAAG;QACH,OAAO;QACP,UAAU;QACV,cAAc;KACjB,CAAC,EACF,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,CAAC,CAC7C,CAAC;IAEF,OAAO,CACH,KAAC,kBAAkB,IAAC,KAAK,EAAE,YAAY,YACnC,KAAC,mBAAmB,IAChB,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,mBAAmB,EAAE,mBAAmB,EACxC,uBAAuB,EAAE,uBAAuB,EAChD,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,GAC1B,GACe,CACxB,CAAC;AAAA,CACL;AAED,SAAS,mBAAmB,CAAC,EACzB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,MAAM,EACN,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,aAAa,EACb,OAAO,EACP,WAAW,GAYd,EAAuB;IACpB,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE,CAAC;IAE5C,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,kBAAkB,EAAE,eAAe,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"MapController.js","sourceRoot":"","sources":["../../../src/next/map/MapController.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { LngLatBoundsLike } from "../../layers/common/mapFacade.js";
|
|
2
|
+
import type { IGeoLngLatBounds } from "../../types/common/coordinates.js";
|
|
3
|
+
/**
|
|
4
|
+
* Normalizes explicit dateline-crossing bounds to an increasing longitude interval.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* Bounds produced as min/max envelopes are preserved to avoid excluding intermediate longitudes.
|
|
8
|
+
*
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
export declare function normalizeBoundsForShortestPath(bounds: IGeoLngLatBounds): LngLatBoundsLike;
|
|
12
|
+
//# sourceMappingURL=bounds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bounds.d.ts","sourceRoot":"","sources":["../../../../src/next/map/runtime/bounds.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAE1E;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAgBzF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// (C) 2026 GoodData Corporation
|
|
2
|
+
/**
|
|
3
|
+
* Normalizes explicit dateline-crossing bounds to an increasing longitude interval.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Bounds produced as min/max envelopes are preserved to avoid excluding intermediate longitudes.
|
|
7
|
+
*
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
export function normalizeBoundsForShortestPath(bounds) {
|
|
11
|
+
const south = [bounds.southWest.lng, bounds.southWest.lat];
|
|
12
|
+
const north = [bounds.northEast.lng, bounds.northEast.lat];
|
|
13
|
+
const west = south[0];
|
|
14
|
+
let east = north[0];
|
|
15
|
+
// Normalize explicit dateline-crossing input (e.g. west=170, east=-170) to positive span.
|
|
16
|
+
if (east < west) {
|
|
17
|
+
east += 360;
|
|
18
|
+
}
|
|
19
|
+
return [
|
|
20
|
+
[west, south[1]],
|
|
21
|
+
[east, north[1]],
|
|
22
|
+
];
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=bounds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bounds.js","sourceRoot":"","sources":["../../../../src/next/map/runtime/bounds.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAKhC;;;;;;;GAOG;AACH,MAAM,UAAU,8BAA8B,CAAC,MAAwB,EAAoB;IACvF,MAAM,KAAK,GAAqB,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAqB,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAE7E,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAEpB,0FAA0F;IAC1F,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;QACd,IAAI,IAAI,GAAG,CAAC;IAChB,CAAC;IAED,OAAO;QACH,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;KACnB,CAAC;AAAA,CACL"}
|
|
@@ -87,8 +87,8 @@ export const DEFAULT_MAPLIBRE_OPTIONS = {
|
|
|
87
87
|
maxZoom: 8,
|
|
88
88
|
// If false, the map's pitch (tilt) control with "drag to rotate" interaction will be disabled.
|
|
89
89
|
pitchWithRotate: false,
|
|
90
|
-
//
|
|
91
|
-
renderWorldCopies:
|
|
90
|
+
// Disable duplicate world copies in the new geo runtime.
|
|
91
|
+
renderWorldCopies: false,
|
|
92
92
|
// If false, the "pinch to rotate and zoom" interaction is disabled
|
|
93
93
|
touchZoomRotate: false,
|
|
94
94
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapConfig.js","sourceRoot":"","sources":["../../../../src/next/map/runtime/mapConfig.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"mapConfig.js","sourceRoot":"","sources":["../../../../src/next/map/runtime/mapConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapInitialization.d.ts","sourceRoot":"","sources":["../../../../src/next/map/runtime/mapInitialization.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"mapInitialization.d.ts","sourceRoot":"","sources":["../../../../src/next/map/runtime/mapInitialization.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,OAAO,EAGH,KAAK,sBAAsB,EAE9B,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAGR,GAAG,IAAI,WAAW,EAElB,KAAK,EACR,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGhE;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC3B,GAAG,EAAE,WAAW,CAAC;IACjB,OAAO,EAAE,KAAK,CAAC;IAEf,UAAU,EAAE,cAAc,aAAa,CAAC,CAAC;CAC5C;AAED,UAAU,yBAA0B,SAAQ,WAAW;IACnD,UAAU,CAAC,EAAE,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAClD,eAAe,CAAC,EAAE,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;IAC5D,eAAe,CAAC,EAAE,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;CAC/D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,qBAAqB,CACvC,EACI,SAAS,EACT,MAAM,EACN,IAAI,EACJ,MAAM,EACN,WAAkB,EAClB,UAAU,EACV,eAAe,EACf,eAAe,EACf,UAAU,EACV,6BAAqC,EACrC,qBAA6B,EAC7B,mBAA0B,EAC1B,OAAO,EACP,KAAK,EACL,OAAO,EACV,EAAE,yBAAyB,EAC5B,MAAM,CAAC,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE,kBAAkB,GAC7B,OAAO,CAAC,cAAc,CAAC,CAgGzB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// (C) 2025-2026 GoodData Corporation
|
|
2
|
+
import { normalizeBoundsForShortestPath } from "./bounds.js";
|
|
2
3
|
import { DEFAULT_MAPLIBRE_OPTIONS, DEFAULT_TOOLTIP_OPTIONS, resolveMapInteractionOptions, } from "./mapConfig.js";
|
|
3
4
|
import { fetchMapStyle } from "../style/styleEndpoint.js";
|
|
4
5
|
/**
|
|
@@ -45,10 +46,7 @@ export async function initializeMapLibreMap({ container, center, zoom, bounds, i
|
|
|
45
46
|
mapOptions.maxZoom = maxZoom;
|
|
46
47
|
}
|
|
47
48
|
if (bounds) {
|
|
48
|
-
const lngLatBounds =
|
|
49
|
-
[bounds.southWest.lng, bounds.southWest.lat],
|
|
50
|
-
[bounds.northEast.lng, bounds.northEast.lat],
|
|
51
|
-
];
|
|
49
|
+
const lngLatBounds = normalizeBoundsForShortestPath(bounds);
|
|
52
50
|
mapOptions.bounds = lngLatBounds;
|
|
53
51
|
}
|
|
54
52
|
else if (center) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapInitialization.js","sourceRoot":"","sources":["../../../../src/next/map/runtime/mapInitialization.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAIrC,OAAO,EACH,wBAAwB,EACxB,uBAAuB,EAEvB,4BAA4B,GAC/B,MAAM,gBAAgB,CAAC;AAWxB,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAoB1D;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACvC,EACI,SAAS,EACT,MAAM,EACN,IAAI,EACJ,MAAM,EACN,WAAW,GAAG,IAAI,EAClB,UAAU,EACV,eAAe,EACf,eAAe,EACf,UAAU,EACV,6BAA6B,GAAG,KAAK,EACrC,qBAAqB,GAAG,KAAK,EAC7B,mBAAmB,GAAG,IAAI,EAC1B,OAAO,EACP,KAAK,EACL,OAAO,GACiB,EAC5B,MAAwB,EACxB,OAA4B,EACL;IACvB,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IAC/C,MAAM,kBAAkB,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAElG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;IACnG,CAAC;IAED,MAAM,kBAAkB,GAAG,4BAA4B,CAAC;QACpD,WAAW;QACX,UAAU;QACV,eAAe;QACf,eAAe;KAClB,CAAC,CAAC;IAEH,MAAM,UAAU,GAAe;QAC3B,GAAG,wBAAwB;QAC3B,GAAG,kBAAkB;QACrB,KAAK,EAAE,kBAAkB;QACzB,SAAS;QACT,GAAG,oBAAoB,CAAC,UAAU,EAAE,kBAAkB,CAAC;QACvD,mBAAmB;QACnB,qBAAqB;QACrB,GAAG,CAAC,mBAAmB,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvD,CAAC;IAEF,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,UAAU,CAAC,OAAO,CAAC;IAC9B,CAAC;SAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QACrC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;IACjC,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACT,MAAM,YAAY,GAAqB
|
|
1
|
+
{"version":3,"file":"mapInitialization.js","sourceRoot":"","sources":["../../../../src/next/map/runtime/mapInitialization.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { IMapFacade } from "../../layers/common/mapFacade.js";
|
|
2
|
+
import type { IGeoChartConfig } from "../../types/config/unified.js";
|
|
3
|
+
import type { IMapViewport } from "../../types/map/provider.js";
|
|
4
|
+
/**
|
|
5
|
+
* Keep preset viewport as the first priority.
|
|
6
|
+
* Recenter to data while keeping world zoom when the preset world camera cannot keep all loaded data visible.
|
|
7
|
+
*/
|
|
8
|
+
export declare function resolveResponsiveViewport(map: IMapFacade, preferredViewport: Partial<IMapViewport>, dataViewport: Partial<IMapViewport> | null, config: IGeoChartConfig | undefined): Partial<IMapViewport>;
|
|
9
|
+
//# sourceMappingURL=responsiveViewport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responsiveViewport.d.ts","sourceRoot":"","sources":["../../../../src/next/map/viewport/responsiveViewport.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,kCAAkC,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAyGhE;;;GAGG;AACH,wBAAgB,yBAAyB,CACrC,GAAG,EAAE,UAAU,EACf,iBAAiB,EAAE,OAAO,CAAC,YAAY,CAAC,EACxC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,EAC1C,MAAM,EAAE,eAAe,GAAG,SAAS,GACpC,OAAO,CAAC,YAAY,CAAC,CAgEvB"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
// (C) 2026 GoodData Corporation
|
|
2
|
+
import { normalizeBoundsForShortestPath } from "../runtime/bounds.js";
|
|
3
|
+
import { DEFAULT_BOUNDS_PADDING } from "../runtime/mapConfig.js";
|
|
4
|
+
const WORLD_LONGITUDE_SPAN = 360;
|
|
5
|
+
const WORLD_TILE_SIZE = 512;
|
|
6
|
+
const FLOATING_POINT_EPSILON = 0.000001;
|
|
7
|
+
const MAX_WEB_MERCATOR_LATITUDE = 85.051129;
|
|
8
|
+
function getLongitudeSpan(bounds) {
|
|
9
|
+
const west = bounds.southWest.lng;
|
|
10
|
+
const east = bounds.northEast.lng >= west ? bounds.northEast.lng : bounds.northEast.lng + WORLD_LONGITUDE_SPAN;
|
|
11
|
+
return east - west;
|
|
12
|
+
}
|
|
13
|
+
function getSingleWorldMinimumZoom(map) {
|
|
14
|
+
const canvas = map.getCanvas();
|
|
15
|
+
const canvasWidth = canvas.clientWidth || canvas.width;
|
|
16
|
+
if (canvasWidth <= 0) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
return Math.log2(canvasWidth / WORLD_TILE_SIZE);
|
|
20
|
+
}
|
|
21
|
+
function clampLatitude(latitude) {
|
|
22
|
+
return Math.max(-MAX_WEB_MERCATOR_LATITUDE, Math.min(MAX_WEB_MERCATOR_LATITUDE, latitude));
|
|
23
|
+
}
|
|
24
|
+
function latitudeToMercatorY(latitude) {
|
|
25
|
+
const latRad = (clampLatitude(latitude) * Math.PI) / 180;
|
|
26
|
+
return 0.5 - Math.log(Math.tan(Math.PI / 4 + latRad / 2)) / (2 * Math.PI);
|
|
27
|
+
}
|
|
28
|
+
function getLatitude(center) {
|
|
29
|
+
if (!center) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
if (Array.isArray(center)) {
|
|
33
|
+
return center.length >= 2 ? center[1] : null;
|
|
34
|
+
}
|
|
35
|
+
if ("lat" in center && typeof center.lat === "number") {
|
|
36
|
+
return center.lat;
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
function toViewportCenter(center) {
|
|
41
|
+
if (!center) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
if (Array.isArray(center)) {
|
|
45
|
+
const [lng, lat] = center;
|
|
46
|
+
if (typeof lng === "number" && typeof lat === "number") {
|
|
47
|
+
return { lng, lat };
|
|
48
|
+
}
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
if ("lng" in center &&
|
|
52
|
+
typeof center.lng === "number" &&
|
|
53
|
+
"lat" in center &&
|
|
54
|
+
typeof center.lat === "number") {
|
|
55
|
+
return { lng: center.lng, lat: center.lat };
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
function getDataVisibilityAspectRatioThreshold(centerLatitude, zoom, dataSouthLatitude, dataNorthLatitude, canvasWidth) {
|
|
60
|
+
if (canvasWidth <= 0) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
const worldSize = WORLD_TILE_SIZE * 2 ** zoom;
|
|
64
|
+
const centerY = latitudeToMercatorY(centerLatitude);
|
|
65
|
+
const dataSouthY = latitudeToMercatorY(dataSouthLatitude);
|
|
66
|
+
const dataNorthY = latitudeToMercatorY(dataNorthLatitude);
|
|
67
|
+
const requiredHalfSpan = Math.max(Math.abs(dataSouthY - centerY), Math.abs(dataNorthY - centerY));
|
|
68
|
+
if (requiredHalfSpan <= FLOATING_POINT_EPSILON) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
const requiredHeight = 2 * requiredHalfSpan * worldSize;
|
|
72
|
+
if (requiredHeight <= 0) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
return canvasWidth / requiredHeight;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Keep preset viewport as the first priority.
|
|
79
|
+
* Recenter to data while keeping world zoom when the preset world camera cannot keep all loaded data visible.
|
|
80
|
+
*/
|
|
81
|
+
export function resolveResponsiveViewport(map, preferredViewport, dataViewport, config) {
|
|
82
|
+
const isWorldPreset = config?.viewport?.area === "world";
|
|
83
|
+
if (!isWorldPreset || !preferredViewport.bounds || !dataViewport?.bounds) {
|
|
84
|
+
return preferredViewport;
|
|
85
|
+
}
|
|
86
|
+
const isFullWorldBounds = getLongitudeSpan(preferredViewport.bounds) + FLOATING_POINT_EPSILON >= WORLD_LONGITUDE_SPAN;
|
|
87
|
+
if (!isFullWorldBounds) {
|
|
88
|
+
return preferredViewport;
|
|
89
|
+
}
|
|
90
|
+
const normalizedWorldBounds = normalizeBoundsForShortestPath(preferredViewport.bounds);
|
|
91
|
+
const worldCamera = map.cameraForBounds(normalizedWorldBounds, { padding: DEFAULT_BOUNDS_PADDING });
|
|
92
|
+
const minimumWorldZoom = getSingleWorldMinimumZoom(map);
|
|
93
|
+
const canvas = map.getCanvas();
|
|
94
|
+
const worldCameraZoom = worldCamera?.zoom;
|
|
95
|
+
const worldCameraCenterLat = getLatitude(worldCamera?.center);
|
|
96
|
+
const isWorldZoomClamped = worldCameraZoom !== undefined &&
|
|
97
|
+
minimumWorldZoom !== null &&
|
|
98
|
+
worldCameraZoom + FLOATING_POINT_EPSILON < minimumWorldZoom;
|
|
99
|
+
if (!isWorldZoomClamped) {
|
|
100
|
+
return preferredViewport;
|
|
101
|
+
}
|
|
102
|
+
const effectiveWorldZoom = minimumWorldZoom;
|
|
103
|
+
const canvasWidth = canvas.clientWidth || canvas.width;
|
|
104
|
+
const canvasHeight = canvas.clientHeight || canvas.height;
|
|
105
|
+
const currentAspectRatio = canvasHeight > 0 ? canvasWidth / canvasHeight : null;
|
|
106
|
+
const dataSouth = dataViewport.bounds.southWest.lat;
|
|
107
|
+
const dataNorth = dataViewport.bounds.northEast.lat;
|
|
108
|
+
let dataVisibilityAspectRatioThreshold = null;
|
|
109
|
+
if (worldCameraCenterLat !== null) {
|
|
110
|
+
dataVisibilityAspectRatioThreshold = getDataVisibilityAspectRatioThreshold(worldCameraCenterLat, effectiveWorldZoom, dataSouth, dataNorth, canvasWidth);
|
|
111
|
+
}
|
|
112
|
+
const shouldRecenterToData = currentAspectRatio !== null &&
|
|
113
|
+
dataVisibilityAspectRatioThreshold !== null &&
|
|
114
|
+
currentAspectRatio - FLOATING_POINT_EPSILON > dataVisibilityAspectRatioThreshold;
|
|
115
|
+
if (!shouldRecenterToData) {
|
|
116
|
+
return preferredViewport;
|
|
117
|
+
}
|
|
118
|
+
const normalizedDataBounds = normalizeBoundsForShortestPath(dataViewport.bounds);
|
|
119
|
+
const dataCamera = map.cameraForBounds(normalizedDataBounds, { padding: DEFAULT_BOUNDS_PADDING });
|
|
120
|
+
const dataCenter = toViewportCenter(dataCamera?.center);
|
|
121
|
+
if (!dataCenter) {
|
|
122
|
+
return preferredViewport;
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
center: dataCenter,
|
|
126
|
+
zoom: effectiveWorldZoom,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=responsiveViewport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responsiveViewport.js","sourceRoot":"","sources":["../../../../src/next/map/viewport/responsiveViewport.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewportCalculation.d.ts","sourceRoot":"","sources":["../../../../src/next/map/viewport/viewportCalculation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAgC,MAAM,kCAAkC,CAAC;AACjG,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"viewportCalculation.d.ts","sourceRoot":"","sources":["../../../../src/next/map/viewport/viewportCalculation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAgC,MAAM,kCAAkC,CAAC;AACjG,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAKxF;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC1B,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACjD,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAiB9B;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAiB3G;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CACzB,GAAG,EAAE,UAAU,EACf,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,EAC/B,OAAO,GAAE,OAAc,GACxB,IAAI,CA0BN"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// (C) 2025-2026 GoodData Corporation
|
|
2
2
|
import { getViewportOptions } from "./viewportPresets.js";
|
|
3
3
|
import { isLngLatTupleBounds } from "../../utils/guards.js";
|
|
4
|
+
import { normalizeBoundsForShortestPath } from "../runtime/bounds.js";
|
|
4
5
|
import { DEFAULT_BOUNDS_PADDING } from "../runtime/mapConfig.js";
|
|
5
6
|
/**
|
|
6
7
|
* Convert GeoJSON bbox array to viewport bounds.
|
|
@@ -61,9 +62,7 @@ export function calculateViewport(locations, config) {
|
|
|
61
62
|
*/
|
|
62
63
|
export function applyViewport(map, viewport, animate = true) {
|
|
63
64
|
if (viewport.bounds) {
|
|
64
|
-
const
|
|
65
|
-
const northEast = [viewport.bounds.northEast.lng, viewport.bounds.northEast.lat];
|
|
66
|
-
const bounds = [southWest, northEast];
|
|
65
|
+
const bounds = normalizeBoundsForShortestPath(viewport.bounds);
|
|
67
66
|
const camera = map.cameraForBounds(bounds, { padding: DEFAULT_BOUNDS_PADDING });
|
|
68
67
|
if (camera?.center && camera.zoom !== undefined) {
|
|
69
68
|
if (animate) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewportCalculation.js","sourceRoot":"","sources":["../../../../src/next/map/viewport/viewportCalculation.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC1B,IAAgD,EACpB;IAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAE9C,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO;QACH,MAAM,EAAE;YACJ,SAAS,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;YACvC,SAAS,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;SAC1C;KACJ,CAAC;AAAA,CACL;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAuB,EAAE,MAAyB,EAAyB;IACzG,MAAM,OAAO,GAAG,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAEtD,IAAI,OAAO,CAAC,MAAM,IAAI,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QAChC,OAAO;YACH,MAAM,EAAE;gBACJ,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;gBACrC,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;aACxC;SACJ,CAAC;IACN,CAAC;IAED,OAAO;QACH,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;KACrB,CAAC;AAAA,CACL;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CACzB,GAAe,EACf,QAA+B,EAC/B,OAAO,GAAY,IAAI,EACnB;IACJ,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,
|
|
1
|
+
{"version":3,"file":"viewportCalculation.js","sourceRoot":"","sources":["../../../../src/next/map/viewport/viewportCalculation.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,11 +4,12 @@ import type { IMapViewport } from "../../types/map/provider.js";
|
|
|
4
4
|
* Resolves the map viewport from configuration, falling back to a data-derived viewport.
|
|
5
5
|
*
|
|
6
6
|
* Priority order (highest wins):
|
|
7
|
-
* 1.
|
|
8
|
-
* 2.
|
|
9
|
-
* 3. `config.
|
|
10
|
-
* 4. `
|
|
11
|
-
* 5.
|
|
7
|
+
* 1. Advanced viewport config: `config.viewport.area` (including `"auto"`) when explicitly set
|
|
8
|
+
* 2. AD-only legacy override: preset `config.viewport.area` (when `applyViewportNavigation === false`)
|
|
9
|
+
* 3. `config.center` + `config.zoom` (explicit center/zoom)
|
|
10
|
+
* 4. `config.viewport.area` (preset area like "continent_eu")
|
|
11
|
+
* 5. `dataViewport` (computed from layer data; used for `"auto"`)
|
|
12
|
+
* 6. Default fallback
|
|
12
13
|
*
|
|
13
14
|
* @remarks
|
|
14
15
|
* This function is intentionally pure and cycle-free so it can be reused both:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewportResolution.d.ts","sourceRoot":"","sources":["../../../../src/next/map/viewport/viewportResolution.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"viewportResolution.d.ts","sourceRoot":"","sources":["../../../../src/next/map/viewport/viewportResolution.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAsBhE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACrC,MAAM,EAAE,eAAe,GAAG,SAAS,EACnC,YAAY,GAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAW,GAClD,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CA0B9B;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,GAAG,MAAM,CAoBhF"}
|
|
@@ -1,15 +1,28 @@
|
|
|
1
1
|
// (C) 2025-2026 GoodData Corporation
|
|
2
2
|
import { isConcreteViewportPreset } from "../../types/config/viewport.js";
|
|
3
3
|
import { DEFAULT_CENTER, DEFAULT_ZOOM, VIEWPORTS } from "../runtime/mapConfig.js";
|
|
4
|
+
function resolveAreaViewport(area, dataViewport) {
|
|
5
|
+
if (isConcreteViewportPreset(area)) {
|
|
6
|
+
const [southWest, northEast] = VIEWPORTS[area];
|
|
7
|
+
return {
|
|
8
|
+
bounds: { southWest, northEast },
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
return (dataViewport ?? {
|
|
12
|
+
center: DEFAULT_CENTER,
|
|
13
|
+
zoom: DEFAULT_ZOOM,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
4
16
|
/**
|
|
5
17
|
* Resolves the map viewport from configuration, falling back to a data-derived viewport.
|
|
6
18
|
*
|
|
7
19
|
* Priority order (highest wins):
|
|
8
|
-
* 1.
|
|
9
|
-
* 2.
|
|
10
|
-
* 3. `config.
|
|
11
|
-
* 4. `
|
|
12
|
-
* 5.
|
|
20
|
+
* 1. Advanced viewport config: `config.viewport.area` (including `"auto"`) when explicitly set
|
|
21
|
+
* 2. AD-only legacy override: preset `config.viewport.area` (when `applyViewportNavigation === false`)
|
|
22
|
+
* 3. `config.center` + `config.zoom` (explicit center/zoom)
|
|
23
|
+
* 4. `config.viewport.area` (preset area like "continent_eu")
|
|
24
|
+
* 5. `dataViewport` (computed from layer data; used for `"auto"`)
|
|
25
|
+
* 6. Default fallback
|
|
13
26
|
*
|
|
14
27
|
* @remarks
|
|
15
28
|
* This function is intentionally pure and cycle-free so it can be reused both:
|
|
@@ -23,12 +36,13 @@ export function computeViewportFromConfig(config, dataViewport = null) {
|
|
|
23
36
|
return dataViewport;
|
|
24
37
|
}
|
|
25
38
|
const area = config.viewport?.area;
|
|
39
|
+
const shouldPreferConfiguredArea = (config.enableGeoChartsViewportConfig ?? false) && area !== undefined && area !== "custom";
|
|
40
|
+
if (shouldPreferConfiguredArea) {
|
|
41
|
+
return resolveAreaViewport(area, dataViewport);
|
|
42
|
+
}
|
|
26
43
|
// In AD runtime, preset changes must apply immediately even if stale center/zoom values are still present.
|
|
27
44
|
if (config.applyViewportNavigation === false && isConcreteViewportPreset(area)) {
|
|
28
|
-
|
|
29
|
-
return {
|
|
30
|
-
bounds: { southWest, northEast },
|
|
31
|
-
};
|
|
45
|
+
return resolveAreaViewport(area, dataViewport);
|
|
32
46
|
}
|
|
33
47
|
if (config.center) {
|
|
34
48
|
return {
|
|
@@ -36,16 +50,7 @@ export function computeViewportFromConfig(config, dataViewport = null) {
|
|
|
36
50
|
zoom: config.zoom ?? DEFAULT_ZOOM,
|
|
37
51
|
};
|
|
38
52
|
}
|
|
39
|
-
|
|
40
|
-
const [southWest, northEast] = VIEWPORTS[area];
|
|
41
|
-
return {
|
|
42
|
-
bounds: { southWest, northEast },
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
return (dataViewport ?? {
|
|
46
|
-
center: DEFAULT_CENTER,
|
|
47
|
-
zoom: DEFAULT_ZOOM,
|
|
48
|
-
});
|
|
53
|
+
return resolveAreaViewport(area, dataViewport);
|
|
49
54
|
}
|
|
50
55
|
/**
|
|
51
56
|
* Creates a stable key for viewport-relevant config so hooks can detect user changes.
|
|
@@ -59,6 +64,10 @@ export function computeViewportFromConfig(config, dataViewport = null) {
|
|
|
59
64
|
*/
|
|
60
65
|
export function getViewportConfigKey(config) {
|
|
61
66
|
const area = config?.viewport?.area;
|
|
67
|
+
const shouldPreferConfiguredArea = (config?.enableGeoChartsViewportConfig ?? false) && area !== undefined && area !== "custom";
|
|
68
|
+
if (shouldPreferConfiguredArea) {
|
|
69
|
+
return `area:${area}`;
|
|
70
|
+
}
|
|
62
71
|
// Keep key aligned with computeViewportFromConfig for AD-specific precedence.
|
|
63
72
|
if (config?.applyViewportNavigation === false && isConcreteViewportPreset(area)) {
|
|
64
73
|
return `area:${area}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewportResolution.js","sourceRoot":"","sources":["../../../../src/next/map/viewport/viewportResolution.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAGrC,OAAO,
|
|
1
|
+
{"version":3,"file":"viewportResolution.js","sourceRoot":"","sources":["../../../../src/next/map/viewport/viewportResolution.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAGrC,OAAO,EAA8B,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAEtG,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAElF,SAAS,mBAAmB,CACxB,IAAuC,EACvC,YAA0C,EACrB;IACrB,IAAI,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO;YACH,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE;SACnC,CAAC;IACN,CAAC;IAED,OAAO,CACH,YAAY,IAAI;QACZ,MAAM,EAAE,cAAc;QACtB,IAAI,EAAE,YAAY;KACrB,CACJ,CAAC;AAAA,CACL;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,yBAAyB,CACrC,MAAmC,EACnC,YAAY,GAAiC,IAAI,EACrB;IAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,YAAY,CAAC;IACxB,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC;IACnC,MAAM,0BAA0B,GAC5B,CAAC,MAAM,CAAC,6BAA6B,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ,CAAC;IAE/F,IAAI,0BAA0B,EAAE,CAAC;QAC7B,OAAO,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACnD,CAAC;IAED,2GAA2G;IAC3G,IAAI,MAAM,CAAC,uBAAuB,KAAK,KAAK,IAAI,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7E,OAAO,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO;YACH,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,YAAY;SACpC,CAAC;IACN,CAAC;IAED,OAAO,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AAAA,CAClD;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAmC,EAAU;IAC9E,MAAM,IAAI,GAAG,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC;IACpC,MAAM,0BAA0B,GAC5B,CAAC,MAAM,EAAE,6BAA6B,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ,CAAC;IAEhG,IAAI,0BAA0B,EAAE,CAAC;QAC7B,OAAO,QAAQ,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,8EAA8E;IAC9E,IAAI,MAAM,EAAE,uBAAuB,KAAK,KAAK,IAAI,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9E,OAAO,QAAQ,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,YAAY,CAAC;QACzC,OAAO,UAAU,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IACtE,CAAC;IAED,OAAO,QAAQ,IAAI,IAAI,MAAM,EAAE,CAAC;AAAA,CACnC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gooddata/sdk-ui-geo",
|
|
3
|
-
"version": "11.25.0-alpha.
|
|
3
|
+
"version": "11.25.0-alpha.1",
|
|
4
4
|
"description": "GoodData.UI SDK - Geo Charts",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "GoodData Corporation",
|
|
@@ -43,12 +43,12 @@
|
|
|
43
43
|
"ts-invariant": "0.10.3",
|
|
44
44
|
"tslib": "2.8.1",
|
|
45
45
|
"uuid": "11.1.0",
|
|
46
|
-
"@gooddata/sdk-
|
|
47
|
-
"@gooddata/sdk-
|
|
48
|
-
"@gooddata/sdk-ui
|
|
49
|
-
"@gooddata/sdk-ui-kit": "11.25.0-alpha.
|
|
50
|
-
"@gooddata/sdk-ui-
|
|
51
|
-
"@gooddata/sdk-
|
|
46
|
+
"@gooddata/sdk-backend-spi": "11.25.0-alpha.1",
|
|
47
|
+
"@gooddata/sdk-model": "11.25.0-alpha.1",
|
|
48
|
+
"@gooddata/sdk-ui": "11.25.0-alpha.1",
|
|
49
|
+
"@gooddata/sdk-ui-kit": "11.25.0-alpha.1",
|
|
50
|
+
"@gooddata/sdk-ui-theme-provider": "11.25.0-alpha.1",
|
|
51
|
+
"@gooddata/sdk-ui-vis-commons": "11.25.0-alpha.1"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@microsoft/api-documenter": "^7.17.0",
|
|
@@ -91,10 +91,10 @@
|
|
|
91
91
|
"typescript": "5.9.3",
|
|
92
92
|
"vitest": "4.0.8",
|
|
93
93
|
"vitest-dom": "0.1.1",
|
|
94
|
-
"@gooddata/eslint-config": "11.25.0-alpha.
|
|
95
|
-
"@gooddata/oxlint-config": "11.25.0-alpha.
|
|
96
|
-
"@gooddata/sdk-backend-mockingbird": "11.25.0-alpha.
|
|
97
|
-
"@gooddata/stylelint-config": "11.25.0-alpha.
|
|
94
|
+
"@gooddata/eslint-config": "11.25.0-alpha.1",
|
|
95
|
+
"@gooddata/oxlint-config": "11.25.0-alpha.1",
|
|
96
|
+
"@gooddata/sdk-backend-mockingbird": "11.25.0-alpha.1",
|
|
97
|
+
"@gooddata/stylelint-config": "11.25.0-alpha.1"
|
|
98
98
|
},
|
|
99
99
|
"peerDependencies": {
|
|
100
100
|
"react": "^18.0.0 || ^19.0.0",
|