@dynatrace/strato-geo 3.3.2 → 3.4.0

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.
@@ -3,7 +3,8 @@ import {
3
3
  _buildCategoricalItemsFromScale as buildCategoricalItemsFromScale,
4
4
  _ChartLegend as ChartLegend,
5
5
  _getLegendOrientation as getLegendOrientation,
6
- _useChartLayoutOrientation as useChartLayoutOrientation
6
+ _useChartLayoutOrientation as useChartLayoutOrientation,
7
+ _useChartLayoutLoading as useChartLayoutLoading
7
8
  } from "@dynatrace/strato-components/charts";
8
9
  import { useColorScale } from "../../hooks/use-color-scale.js";
9
10
  import { useTruncationMode } from "../../hooks/use-truncation-mode.js";
@@ -15,6 +16,7 @@ const CategoricalLegendRenderer = () => {
15
16
  const orientation = getLegendOrientation(layoutOrientation);
16
17
  const items = buildCategoricalItemsFromScale(scale);
17
18
  const truncationMode = useTruncationMode();
19
+ const isLoading = useChartLayoutLoading();
18
20
  const handleHover = (item) => {
19
21
  updateStateSelection({ highlightedSeries: item });
20
22
  };
@@ -28,7 +30,8 @@ const CategoricalLegendRenderer = () => {
28
30
  orientation,
29
31
  onClick: handleClick,
30
32
  onHover: handleHover,
31
- truncationMode
33
+ truncationMode,
34
+ interactionsDisabled: isLoading
32
35
  }
33
36
  );
34
37
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/map/components/legend/CategoricalLegendRenderer.tsx"],
4
- "sourcesContent": ["import type { ScaleOrdinal } from 'd3-scale';\n\nimport type { _LegendItem as LegendItem } from '@dynatrace/strato-components/charts';\nimport {\n _buildCategoricalItemsFromScale as buildCategoricalItemsFromScale,\n _ChartLegend as ChartLegend,\n _getLegendOrientation as getLegendOrientation,\n _useChartLayoutOrientation as useChartLayoutOrientation,\n} from '@dynatrace/strato-components/charts';\n\nimport { useColorScale } from '../../hooks/use-color-scale.js';\nimport { useTruncationMode } from '../../hooks/use-truncation-mode.js';\nimport { useSetStateSelection } from '../../store/store.js';\n\nexport const CategoricalLegendRenderer = () => {\n const { orientation: layoutOrientation } = useChartLayoutOrientation();\n const scale = useColorScale() as ScaleOrdinal<string, string>;\n const updateStateSelection = useSetStateSelection();\n const orientation = getLegendOrientation(layoutOrientation);\n const items = buildCategoricalItemsFromScale(scale);\n const truncationMode = useTruncationMode();\n\n const handleHover = (item?: LegendItem) => {\n updateStateSelection({ highlightedSeries: item });\n };\n\n function handleClick(items: LegendItem[]) {\n updateStateSelection({ visible: items });\n }\n\n return (\n <ChartLegend\n items={items}\n orientation={orientation}\n onClick={handleClick}\n onHover={handleHover}\n truncationMode={truncationMode}\n />\n );\n};\n"],
5
- "mappings": "AA+BI;AA5BJ;AAAA,EACE,mCAAmC;AAAA,EACnC,gBAAgB;AAAA,EAChB,yBAAyB;AAAA,EACzB,8BAA8B;AAAA,OACzB;AAEP,SAAS,qBAAqB;AAC9B,SAAS,yBAAyB;AAClC,SAAS,4BAA4B;AAE9B,MAAM,4BAA4B,MAAM;AAC7C,QAAM,EAAE,aAAa,kBAAkB,IAAI,0BAA0B;AACrE,QAAM,QAAQ,cAAc;AAC5B,QAAM,uBAAuB,qBAAqB;AAClD,QAAM,cAAc,qBAAqB,iBAAiB;AAC1D,QAAM,QAAQ,+BAA+B,KAAK;AAClD,QAAM,iBAAiB,kBAAkB;AAEzC,QAAM,cAAc,CAAC,SAAsB;AACzC,yBAAqB,EAAE,mBAAmB,KAAK,CAAC;AAAA,EAClD;AAEA,WAAS,YAAYA,QAAqB;AACxC,yBAAqB,EAAE,SAASA,OAAM,CAAC;AAAA,EACzC;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT,SAAS;AAAA,MACT;AAAA;AAAA,EACF;AAEJ;",
4
+ "sourcesContent": ["import type { ScaleOrdinal } from 'd3-scale';\n\nimport type { _LegendItem as LegendItem } from '@dynatrace/strato-components/charts';\nimport {\n _buildCategoricalItemsFromScale as buildCategoricalItemsFromScale,\n _ChartLegend as ChartLegend,\n _getLegendOrientation as getLegendOrientation,\n _useChartLayoutOrientation as useChartLayoutOrientation,\n _useChartLayoutLoading as useChartLayoutLoading,\n} from '@dynatrace/strato-components/charts';\n\nimport { useColorScale } from '../../hooks/use-color-scale.js';\nimport { useTruncationMode } from '../../hooks/use-truncation-mode.js';\nimport { useSetStateSelection } from '../../store/store.js';\n\nexport const CategoricalLegendRenderer = () => {\n const { orientation: layoutOrientation } = useChartLayoutOrientation();\n const scale = useColorScale() as ScaleOrdinal<string, string>;\n const updateStateSelection = useSetStateSelection();\n const orientation = getLegendOrientation(layoutOrientation);\n const items = buildCategoricalItemsFromScale(scale);\n const truncationMode = useTruncationMode();\n const isLoading = useChartLayoutLoading();\n\n const handleHover = (item?: LegendItem) => {\n updateStateSelection({ highlightedSeries: item });\n };\n\n function handleClick(items: LegendItem[]) {\n updateStateSelection({ visible: items });\n }\n\n return (\n <ChartLegend\n items={items}\n orientation={orientation}\n onClick={handleClick}\n onHover={handleHover}\n truncationMode={truncationMode}\n interactionsDisabled={isLoading}\n />\n );\n};\n"],
5
+ "mappings": "AAiCI;AA9BJ;AAAA,EACE,mCAAmC;AAAA,EACnC,gBAAgB;AAAA,EAChB,yBAAyB;AAAA,EACzB,8BAA8B;AAAA,EAC9B,0BAA0B;AAAA,OACrB;AAEP,SAAS,qBAAqB;AAC9B,SAAS,yBAAyB;AAClC,SAAS,4BAA4B;AAE9B,MAAM,4BAA4B,MAAM;AAC7C,QAAM,EAAE,aAAa,kBAAkB,IAAI,0BAA0B;AACrE,QAAM,QAAQ,cAAc;AAC5B,QAAM,uBAAuB,qBAAqB;AAClD,QAAM,cAAc,qBAAqB,iBAAiB;AAC1D,QAAM,QAAQ,+BAA+B,KAAK;AAClD,QAAM,iBAAiB,kBAAkB;AACzC,QAAM,YAAY,sBAAsB;AAExC,QAAM,cAAc,CAAC,SAAsB;AACzC,yBAAqB,EAAE,mBAAmB,KAAK,CAAC;AAAA,EAClD;AAEA,WAAS,YAAYA,QAAqB;AACxC,yBAAqB,EAAE,SAASA,OAAM,CAAC;AAAA,EACzC;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT,SAAS;AAAA,MACT;AAAA,MACA,sBAAsB;AAAA;AAAA,EACxB;AAEJ;",
6
6
  "names": ["items"]
7
7
  }
@@ -1,5 +1,9 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import { _ChartToolbarRenderer as ChartToolbarRenderer } from "@dynatrace/strato-components/charts";
2
+ import { useMap } from "@vis.gl/react-maplibre";
3
+ import {
4
+ _ChartToolbarRenderer as ChartToolbarRenderer,
5
+ _useOverlayTooltipReducer as useTooltipReducer
6
+ } from "@dynatrace/strato-components/charts";
3
7
  import { MapDownloadDataButton } from "./buttons/MapDownloadDataButton.js";
4
8
  import { MapResetButton } from "./buttons/MapResetButton.js";
5
9
  import { MapZoomInOutButtons } from "./buttons/MapZoomInOutButtons.js";
@@ -15,8 +19,10 @@ const defaultToolbarPlacement = "top-right";
15
19
  const MapToolbar = () => {
16
20
  const { toolbar: toolbarConfig, interactions: interactionsConfig } = useMapConfig();
17
21
  const data = useMapRawData();
22
+ const { current: map } = useMap();
18
23
  const { mouseInBounds } = useMapOverlayState();
19
24
  const setState = useSetState();
25
+ const dispatch = useTooltipReducer();
20
26
  const isZoomEnabled = toolbarConfig?.zoom?.enabled ?? interactionsConfig?.zoom?.enabled ?? false;
21
27
  const isZoomToFitEnabled = toolbarConfig?.zoom?.enabled ?? interactionsConfig?.zoomToFit?.enabled ?? false;
22
28
  const isDownloadDataEnabled = toolbarConfig?.downloadCSV?.enabled ?? false;
@@ -24,9 +30,19 @@ const MapToolbar = () => {
24
30
  const hasControls = hasZoomControls || isDownloadDataEnabled;
25
31
  const hasOnlyDownloadCSV = isDownloadDataEnabled && !hasZoomControls;
26
32
  const handleMouseEnter = () => {
33
+ dispatch({ type: "RESET_TOOLTIP" })();
34
+ if (map) {
35
+ map.queryRenderedFeatures().forEach((feature) => {
36
+ if (feature.id !== void 0 && feature.layer.source) {
37
+ map.setFeatureState(
38
+ { source: feature.layer.source, id: feature.id },
39
+ { active: false, isAnyActive: false }
40
+ );
41
+ }
42
+ });
43
+ }
27
44
  setState((prev) => ({
28
- ...prev,
29
- tooltip: { ...prev.tooltip, enabled: false }
45
+ ...prev
30
46
  }));
31
47
  };
32
48
  const handleMouseLeave = () => {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/map/components/toolbar/MapToolbar.tsx"],
4
- "sourcesContent": ["import { _ChartToolbarRenderer as ChartToolbarRenderer } from '@dynatrace/strato-components/charts';\n\nimport { MapDownloadDataButton } from './buttons/MapDownloadDataButton.js';\nimport { MapResetButton } from './buttons/MapResetButton.js';\nimport { MapZoomInOutButtons } from './buttons/MapZoomInOutButtons.js';\nimport { MapZoomToFitButton } from './buttons/MapZoomToFitButton.js';\nimport { initialA11yToolbarTabIndexContext } from './constants.js';\nimport { useMapConfig } from '../../hooks/use-map-config.js';\nimport { useMapRawData } from '../../hooks/use-map-raw-data.js';\nimport { MapInitialViewProvider } from '../../providers/map-initial-view.provider.js';\nimport { useMapOverlayState } from '../../store/selectors.js';\nimport { useSetState } from '../../store/store.js';\nimport { buildAndDownloadCsv } from '../../utils/build-and-download-csv.js';\n\nconst defaultToolbarPlacement = 'top-right';\n\nexport const MapToolbar = () => {\n const { toolbar: toolbarConfig, interactions: interactionsConfig } =\n useMapConfig();\n const data = useMapRawData();\n\n const { mouseInBounds } = useMapOverlayState();\n const setState = useSetState();\n const isZoomEnabled =\n toolbarConfig?.zoom?.enabled ?? interactionsConfig?.zoom?.enabled ?? false;\n const isZoomToFitEnabled =\n toolbarConfig?.zoom?.enabled ??\n interactionsConfig?.zoomToFit?.enabled ??\n false;\n const isDownloadDataEnabled = toolbarConfig?.downloadCSV?.enabled ?? false;\n\n const hasZoomControls = isZoomEnabled || isZoomToFitEnabled;\n const hasControls = hasZoomControls || isDownloadDataEnabled;\n const hasOnlyDownloadCSV = isDownloadDataEnabled && !hasZoomControls;\n\n const handleMouseEnter = () => {\n setState((prev) => ({\n ...prev,\n tooltip: { ...prev.tooltip, enabled: false },\n }));\n };\n\n const handleMouseLeave = () => {\n setState((prev) => ({\n ...prev,\n tooltip: { ...prev.tooltip, enabled: true },\n }));\n };\n\n const handleDownloadDataToolbar = () => {\n buildAndDownloadCsv(data);\n };\n\n return hasControls ? (\n <MapInitialViewProvider>\n <ChartToolbarRenderer\n visible={mouseInBounds}\n collapsed={toolbarConfig?.collapsed}\n draggable={toolbarConfig?.draggable}\n placement={toolbarConfig?.placement ?? defaultToolbarPlacement}\n handleDownloadDataToolbar={handleDownloadDataToolbar}\n isDownloadEnabled={!hasOnlyDownloadCSV && isDownloadDataEnabled}\n initialA11yState={initialA11yToolbarTabIndexContext}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n menuDisplayMode=\"never\"\n >\n {isZoomEnabled && <MapZoomInOutButtons />}\n {isZoomEnabled && <MapResetButton />}\n {isZoomToFitEnabled && <MapZoomToFitButton />}\n {isDownloadDataEnabled && <MapDownloadDataButton />}\n </ChartToolbarRenderer>\n </MapInitialViewProvider>\n ) : null;\n};\n\nMapToolbar['displayName'] = 'MapToolbar';\n"],
5
- "mappings": "AAuDM,SAYoB,KAZpB;AAvDN,SAAS,yBAAyB,4BAA4B;AAE9D,SAAS,6BAA6B;AACtC,SAAS,sBAAsB;AAC/B,SAAS,2BAA2B;AACpC,SAAS,0BAA0B;AACnC,SAAS,yCAAyC;AAClD,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAC9B,SAAS,8BAA8B;AACvC,SAAS,0BAA0B;AACnC,SAAS,mBAAmB;AAC5B,SAAS,2BAA2B;AAEpC,MAAM,0BAA0B;AAEzB,MAAM,aAAa,MAAM;AAC9B,QAAM,EAAE,SAAS,eAAe,cAAc,mBAAmB,IAC/D,aAAa;AACf,QAAM,OAAO,cAAc;AAE3B,QAAM,EAAE,cAAc,IAAI,mBAAmB;AAC7C,QAAM,WAAW,YAAY;AAC7B,QAAM,gBACJ,eAAe,MAAM,WAAW,oBAAoB,MAAM,WAAW;AACvE,QAAM,qBACJ,eAAe,MAAM,WACrB,oBAAoB,WAAW,WAC/B;AACF,QAAM,wBAAwB,eAAe,aAAa,WAAW;AAErE,QAAM,kBAAkB,iBAAiB;AACzC,QAAM,cAAc,mBAAmB;AACvC,QAAM,qBAAqB,yBAAyB,CAAC;AAErD,QAAM,mBAAmB,MAAM;AAC7B,aAAS,CAAC,UAAU;AAAA,MAClB,GAAG;AAAA,MACH,SAAS,EAAE,GAAG,KAAK,SAAS,SAAS,MAAM;AAAA,IAC7C,EAAE;AAAA,EACJ;AAEA,QAAM,mBAAmB,MAAM;AAC7B,aAAS,CAAC,UAAU;AAAA,MAClB,GAAG;AAAA,MACH,SAAS,EAAE,GAAG,KAAK,SAAS,SAAS,KAAK;AAAA,IAC5C,EAAE;AAAA,EACJ;AAEA,QAAM,4BAA4B,MAAM;AACtC,wBAAoB,IAAI;AAAA,EAC1B;AAEA,SAAO,cACL,oBAAC,0BACC;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,MACT,WAAW,eAAe;AAAA,MAC1B,WAAW,eAAe;AAAA,MAC1B,WAAW,eAAe,aAAa;AAAA,MACvC;AAAA,MACA,mBAAmB,CAAC,sBAAsB;AAAA,MAC1C,kBAAkB;AAAA,MAClB,cAAc;AAAA,MACd,cAAc;AAAA,MACd,iBAAgB;AAAA,MAEf;AAAA,yBAAiB,oBAAC,uBAAoB;AAAA,QACtC,iBAAiB,oBAAC,kBAAe;AAAA,QACjC,sBAAsB,oBAAC,sBAAmB;AAAA,QAC1C,yBAAyB,oBAAC,yBAAsB;AAAA;AAAA;AAAA,EACnD,GACF,IACE;AACN;AAEA,WAAW,aAAa,IAAI;",
4
+ "sourcesContent": ["import { useMap } from '@vis.gl/react-maplibre';\n\nimport {\n _ChartToolbarRenderer as ChartToolbarRenderer,\n _useOverlayTooltipReducer as useTooltipReducer,\n} from '@dynatrace/strato-components/charts';\n\nimport { MapDownloadDataButton } from './buttons/MapDownloadDataButton.js';\nimport { MapResetButton } from './buttons/MapResetButton.js';\nimport { MapZoomInOutButtons } from './buttons/MapZoomInOutButtons.js';\nimport { MapZoomToFitButton } from './buttons/MapZoomToFitButton.js';\nimport { initialA11yToolbarTabIndexContext } from './constants.js';\nimport { useMapConfig } from '../../hooks/use-map-config.js';\nimport { useMapRawData } from '../../hooks/use-map-raw-data.js';\nimport { MapInitialViewProvider } from '../../providers/map-initial-view.provider.js';\nimport { useMapOverlayState } from '../../store/selectors.js';\nimport { useSetState } from '../../store/store.js';\nimport { buildAndDownloadCsv } from '../../utils/build-and-download-csv.js';\n\nconst defaultToolbarPlacement = 'top-right';\n\nexport const MapToolbar = () => {\n const { toolbar: toolbarConfig, interactions: interactionsConfig } =\n useMapConfig();\n const data = useMapRawData();\n\n const { current: map } = useMap();\n const { mouseInBounds } = useMapOverlayState();\n const setState = useSetState();\n const dispatch = useTooltipReducer();\n const isZoomEnabled =\n toolbarConfig?.zoom?.enabled ?? interactionsConfig?.zoom?.enabled ?? false;\n const isZoomToFitEnabled =\n toolbarConfig?.zoom?.enabled ??\n interactionsConfig?.zoomToFit?.enabled ??\n false;\n const isDownloadDataEnabled = toolbarConfig?.downloadCSV?.enabled ?? false;\n\n const hasZoomControls = isZoomEnabled || isZoomToFitEnabled;\n const hasControls = hasZoomControls || isDownloadDataEnabled;\n const hasOnlyDownloadCSV = isDownloadDataEnabled && !hasZoomControls;\n\n const handleMouseEnter = () => {\n dispatch({ type: 'RESET_TOOLTIP' })();\n if (map) {\n map.queryRenderedFeatures().forEach((feature) => {\n if (feature.id !== undefined && feature.layer.source) {\n map.setFeatureState(\n { source: feature.layer.source, id: feature.id },\n { active: false, isAnyActive: false },\n );\n }\n });\n }\n setState((prev) => ({\n ...prev,\n }));\n };\n\n const handleMouseLeave = () => {\n setState((prev) => ({\n ...prev,\n tooltip: { ...prev.tooltip, enabled: true },\n }));\n };\n\n const handleDownloadDataToolbar = () => {\n buildAndDownloadCsv(data);\n };\n\n return hasControls ? (\n <MapInitialViewProvider>\n <ChartToolbarRenderer\n visible={mouseInBounds}\n collapsed={toolbarConfig?.collapsed}\n draggable={toolbarConfig?.draggable}\n placement={toolbarConfig?.placement ?? defaultToolbarPlacement}\n handleDownloadDataToolbar={handleDownloadDataToolbar}\n isDownloadEnabled={!hasOnlyDownloadCSV && isDownloadDataEnabled}\n initialA11yState={initialA11yToolbarTabIndexContext}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n menuDisplayMode=\"never\"\n >\n {isZoomEnabled && <MapZoomInOutButtons />}\n {isZoomEnabled && <MapResetButton />}\n {isZoomToFitEnabled && <MapZoomToFitButton />}\n {isDownloadDataEnabled && <MapDownloadDataButton />}\n </ChartToolbarRenderer>\n </MapInitialViewProvider>\n ) : null;\n};\n\nMapToolbar['displayName'] = 'MapToolbar';\n"],
5
+ "mappings": "AAwEM,SAYoB,KAZpB;AAxEN,SAAS,cAAc;AAEvB;AAAA,EACE,yBAAyB;AAAA,EACzB,6BAA6B;AAAA,OACxB;AAEP,SAAS,6BAA6B;AACtC,SAAS,sBAAsB;AAC/B,SAAS,2BAA2B;AACpC,SAAS,0BAA0B;AACnC,SAAS,yCAAyC;AAClD,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAC9B,SAAS,8BAA8B;AACvC,SAAS,0BAA0B;AACnC,SAAS,mBAAmB;AAC5B,SAAS,2BAA2B;AAEpC,MAAM,0BAA0B;AAEzB,MAAM,aAAa,MAAM;AAC9B,QAAM,EAAE,SAAS,eAAe,cAAc,mBAAmB,IAC/D,aAAa;AACf,QAAM,OAAO,cAAc;AAE3B,QAAM,EAAE,SAAS,IAAI,IAAI,OAAO;AAChC,QAAM,EAAE,cAAc,IAAI,mBAAmB;AAC7C,QAAM,WAAW,YAAY;AAC7B,QAAM,WAAW,kBAAkB;AACnC,QAAM,gBACJ,eAAe,MAAM,WAAW,oBAAoB,MAAM,WAAW;AACvE,QAAM,qBACJ,eAAe,MAAM,WACrB,oBAAoB,WAAW,WAC/B;AACF,QAAM,wBAAwB,eAAe,aAAa,WAAW;AAErE,QAAM,kBAAkB,iBAAiB;AACzC,QAAM,cAAc,mBAAmB;AACvC,QAAM,qBAAqB,yBAAyB,CAAC;AAErD,QAAM,mBAAmB,MAAM;AAC7B,aAAS,EAAE,MAAM,gBAAgB,CAAC,EAAE;AACpC,QAAI,KAAK;AACP,UAAI,sBAAsB,EAAE,QAAQ,CAAC,YAAY;AAC/C,YAAI,QAAQ,OAAO,UAAa,QAAQ,MAAM,QAAQ;AACpD,cAAI;AAAA,YACF,EAAE,QAAQ,QAAQ,MAAM,QAAQ,IAAI,QAAQ,GAAG;AAAA,YAC/C,EAAE,QAAQ,OAAO,aAAa,MAAM;AAAA,UACtC;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AACA,aAAS,CAAC,UAAU;AAAA,MAClB,GAAG;AAAA,IACL,EAAE;AAAA,EACJ;AAEA,QAAM,mBAAmB,MAAM;AAC7B,aAAS,CAAC,UAAU;AAAA,MAClB,GAAG;AAAA,MACH,SAAS,EAAE,GAAG,KAAK,SAAS,SAAS,KAAK;AAAA,IAC5C,EAAE;AAAA,EACJ;AAEA,QAAM,4BAA4B,MAAM;AACtC,wBAAoB,IAAI;AAAA,EAC1B;AAEA,SAAO,cACL,oBAAC,0BACC;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,MACT,WAAW,eAAe;AAAA,MAC1B,WAAW,eAAe;AAAA,MAC1B,WAAW,eAAe,aAAa;AAAA,MACvC;AAAA,MACA,mBAAmB,CAAC,sBAAsB;AAAA,MAC1C,kBAAkB;AAAA,MAClB,cAAc;AAAA,MACd,cAAc;AAAA,MACd,iBAAgB;AAAA,MAEf;AAAA,yBAAiB,oBAAC,uBAAoB;AAAA,QACtC,iBAAiB,oBAAC,kBAAe;AAAA,QACjC,sBAAsB,oBAAC,sBAAmB;AAAA,QAC1C,yBAAyB,oBAAC,yBAAsB;AAAA;AAAA;AAAA,EACnD,GACF,IACE;AACN;AAEA,WAAW,aAAa,IAAI;",
6
6
  "names": []
7
7
  }
@@ -33,6 +33,7 @@ const CategoricalLegendRenderer = () => {
33
33
  const orientation = (0, import_charts._getLegendOrientation)(layoutOrientation);
34
34
  const items = (0, import_charts._buildCategoricalItemsFromScale)(scale);
35
35
  const truncationMode = (0, import_use_truncation_mode.useTruncationMode)();
36
+ const isLoading = (0, import_charts._useChartLayoutLoading)();
36
37
  const handleHover = (item) => {
37
38
  updateStateSelection({ highlightedSeries: item });
38
39
  };
@@ -46,7 +47,8 @@ const CategoricalLegendRenderer = () => {
46
47
  orientation,
47
48
  onClick: handleClick,
48
49
  onHover: handleHover,
49
- truncationMode
50
+ truncationMode,
51
+ interactionsDisabled: isLoading
50
52
  }
51
53
  );
52
54
  };
@@ -22,6 +22,7 @@ __export(MapToolbar_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(MapToolbar_exports);
24
24
  var import_jsx_runtime = require("react/jsx-runtime");
25
+ var import_react_maplibre = require("@vis.gl/react-maplibre");
25
26
  var import_charts = require("@dynatrace/strato-components/charts");
26
27
  var import_MapDownloadDataButton = require("./buttons/MapDownloadDataButton.js");
27
28
  var import_MapResetButton = require("./buttons/MapResetButton.js");
@@ -38,8 +39,10 @@ const defaultToolbarPlacement = "top-right";
38
39
  const MapToolbar = () => {
39
40
  const { toolbar: toolbarConfig, interactions: interactionsConfig } = (0, import_use_map_config.useMapConfig)();
40
41
  const data = (0, import_use_map_raw_data.useMapRawData)();
42
+ const { current: map } = (0, import_react_maplibre.useMap)();
41
43
  const { mouseInBounds } = (0, import_selectors.useMapOverlayState)();
42
44
  const setState = (0, import_store.useSetState)();
45
+ const dispatch = (0, import_charts._useOverlayTooltipReducer)();
43
46
  const isZoomEnabled = toolbarConfig?.zoom?.enabled ?? interactionsConfig?.zoom?.enabled ?? false;
44
47
  const isZoomToFitEnabled = toolbarConfig?.zoom?.enabled ?? interactionsConfig?.zoomToFit?.enabled ?? false;
45
48
  const isDownloadDataEnabled = toolbarConfig?.downloadCSV?.enabled ?? false;
@@ -47,9 +50,19 @@ const MapToolbar = () => {
47
50
  const hasControls = hasZoomControls || isDownloadDataEnabled;
48
51
  const hasOnlyDownloadCSV = isDownloadDataEnabled && !hasZoomControls;
49
52
  const handleMouseEnter = () => {
53
+ dispatch({ type: "RESET_TOOLTIP" })();
54
+ if (map) {
55
+ map.queryRenderedFeatures().forEach((feature) => {
56
+ if (feature.id !== void 0 && feature.layer.source) {
57
+ map.setFeatureState(
58
+ { source: feature.layer.source, id: feature.id },
59
+ { active: false, isAnyActive: false }
60
+ );
61
+ }
62
+ });
63
+ }
50
64
  setState((prev) => ({
51
- ...prev,
52
- tooltip: { ...prev.tooltip, enabled: false }
65
+ ...prev
53
66
  }));
54
67
  };
55
68
  const handleMouseLeave = () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynatrace/strato-geo",
3
- "version": "3.3.2",
3
+ "version": "3.4.0",
4
4
  "private": false,
5
5
  "license": "Apache-2.0",
6
6
  "keywords": [
@@ -54,8 +54,8 @@
54
54
  "@dynatrace-sdk/client-classic-environment-v2": "^5.1.0",
55
55
  "@dynatrace-sdk/client-platform-management-service": "^1.7.0",
56
56
  "@dynatrace-sdk/units": "^1.5.0",
57
- "@dynatrace/strato-components": "^3.3.2",
58
- "@dynatrace/strato-design-tokens": "^1.3.1",
57
+ "@dynatrace/strato-components": "^3.4.0",
58
+ "@dynatrace/strato-design-tokens": "^1.4.0",
59
59
  "@dynatrace/strato-icons": "^2.2.0",
60
60
  "react": "^18.0.0",
61
61
  "react-dom": "^18.0.0",