@splunk/visualizations 28.6.0 → 28.7.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.
- package/Area.js +2 -2
- package/Bar.js +2 -2
- package/Bubble.js +2 -2
- package/CHANGELOG.external.md +19 -50
- package/ChoroplethSvg.js +2 -2
- package/Column.js +2 -2
- package/Ellipse.js +2 -2
- package/Events/PureEvents/FieldSummaryTooltip.d.ts +8 -31
- package/Events/PureEvents/FieldSummaryTooltip.d.ts.map +1 -1
- package/Events/PureEvents/PureEvents.d.ts.map +1 -1
- package/Events/PureEvents/TimeControlsPopover.d.ts +6 -25
- package/Events/PureEvents/TimeControlsPopover.d.ts.map +1 -1
- package/Events.js +27 -101
- package/Events.js.map +2 -2
- package/FillerGauge.js +2 -2
- package/Image.js +2 -2
- package/Line.js +2 -2
- package/LinkGraph.js +2 -2
- package/Map/Map.d.ts +1 -0
- package/Map/Map.d.ts.map +1 -1
- package/Map/PureMap/BubbleLayer.d.ts +22 -4
- package/Map/PureMap/BubbleLayer.d.ts.map +1 -1
- package/Map/PureMap/ChoroplethLayer.d.ts +9 -1
- package/Map/PureMap/ChoroplethLayer.d.ts.map +1 -1
- package/Map/PureMap/ClusterLayer.d.ts +3 -1
- package/Map/PureMap/ClusterLayer.d.ts.map +1 -1
- package/Map/PureMap/LocalChoroplethLayer.d.ts +1 -0
- package/Map/PureMap/LocalChoroplethLayer.d.ts.map +1 -1
- package/Map/PureMap/MapContext.d.ts +13 -0
- package/Map/PureMap/MapContext.d.ts.map +1 -0
- package/Map/PureMap/MarkerLayer.d.ts +19 -2
- package/Map/PureMap/MarkerLayer.d.ts.map +1 -1
- package/Map/PureMap/MarkerWrapper.d.ts +3 -2
- package/Map/PureMap/MarkerWrapper.d.ts.map +1 -1
- package/Map/PureMap/PureMap.d.ts +1 -0
- package/Map/PureMap/PureMap.d.ts.map +1 -1
- package/Map/PureMap/PureMapContainer.d.ts.map +1 -1
- package/Map/PureMap/Tooltip.d.ts +6 -1
- package/Map/PureMap/Tooltip.d.ts.map +1 -1
- package/Map/PureMap/keyboardConstants.d.ts +11 -0
- package/Map/PureMap/keyboardConstants.d.ts.map +1 -0
- package/Map/PureMap/useRovingTabindex.d.ts +18 -0
- package/Map/PureMap/useRovingTabindex.d.ts.map +1 -0
- package/Map.js +1317 -478
- package/Map.js.map +4 -4
- package/Markdown/Markdown.d.ts.map +1 -1
- package/Markdown.js +23 -6
- package/Markdown.js.map +2 -2
- package/MarkerGauge.js +2 -2
- package/NetworkGraph/NetworkGraph.d.ts +2 -5
- package/NetworkGraph/NetworkGraph.d.ts.map +1 -1
- package/NetworkGraph/PureNetworkGraph/PureNetworkGraph.d.ts.map +1 -1
- package/NetworkGraph/PureNetworkGraph/components/NetworkGraphSvg.d.ts +1 -0
- package/NetworkGraph/PureNetworkGraph/components/NetworkGraphSvg.d.ts.map +1 -1
- package/NetworkGraph/PureNetworkGraph/components/Node.d.ts +1 -0
- package/NetworkGraph/PureNetworkGraph/components/Node.d.ts.map +1 -1
- package/NetworkGraph/PureNetworkGraph/components/Tooltip.d.ts +1 -1
- package/NetworkGraph/PureNetworkGraph/components/Tooltip.d.ts.map +1 -1
- package/NetworkGraph/PureNetworkGraph/components/ZoomControls.d.ts +1 -0
- package/NetworkGraph/PureNetworkGraph/components/ZoomControls.d.ts.map +1 -1
- package/NetworkGraph/PureNetworkGraph/utils/networkGraphUtils.d.ts +23 -0
- package/NetworkGraph/PureNetworkGraph/utils/networkGraphUtils.d.ts.map +1 -1
- package/NetworkGraph.config.js +2 -0
- package/NetworkGraph.config.js.map +2 -2
- package/NetworkGraph.js +353 -40
- package/NetworkGraph.js.map +4 -4
- package/ParallelCoordinates.js +2 -2
- package/Pie.js +2 -2
- package/ProcessTree/ProcessTree.d.ts +3 -1
- package/ProcessTree/ProcessTree.d.ts.map +1 -1
- package/ProcessTree/PureProcessTree/PureProcessTree.d.ts +1 -0
- package/ProcessTree/PureProcessTree/PureProcessTree.d.ts.map +1 -1
- package/ProcessTree/PureProcessTree/components/ProcessTreeLeftPanel.d.ts +2 -0
- package/ProcessTree/PureProcessTree/components/ProcessTreeLeftPanel.d.ts.map +1 -1
- package/ProcessTree/PureProcessTree/components/ProcessTreeRightPanel.d.ts.map +1 -1
- package/ProcessTree/PureProcessTree/hooks/useProcessTreeGraphData.d.ts +3 -1
- package/ProcessTree/PureProcessTree/hooks/useProcessTreeGraphData.d.ts.map +1 -1
- package/ProcessTree/PureProcessTree/mockdata/data.d.ts.map +1 -1
- package/ProcessTree/PureProcessTree/utils/processTreeUtils.d.ts +3 -1
- package/ProcessTree/PureProcessTree/utils/processTreeUtils.d.ts.map +1 -1
- package/ProcessTree.js +101 -31
- package/ProcessTree.js.map +3 -3
- package/Punchcard.js +2 -2
- package/README.md +2 -0
- package/Rectangle.js +2 -2
- package/RichText.js +2 -2
- package/Sankey.js +2 -2
- package/Scatter.js +2 -2
- package/SingleValue.js +368 -471
- package/SingleValue.js.map +4 -4
- package/SingleValueIcon.js +2 -2
- package/SingleValueRadial.js +2 -2
- package/SparkLine/SparkLine.d.ts +57 -0
- package/SparkLine/SparkLine.d.ts.map +1 -0
- package/SparkLine/index.d.ts +1 -1
- package/SparkLine/index.d.ts.map +1 -1
- package/SparkLine.js +384 -485
- package/SparkLine.js.map +4 -4
- package/Table/PureTable.d.ts.map +1 -1
- package/Table/hooks.d.ts +1 -1
- package/Table/hooks.d.ts.map +1 -1
- package/Table.js +391 -493
- package/Table.js.map +4 -4
- package/Timeline.js +2 -2
- package/common/OptionsDoc.js.map +1 -1
- package/common/utils/mapUtils.js +512 -179
- package/common/utils/mapUtils.js.map +4 -4
- package/common/utils/shadowDomUtils.d.ts +2 -0
- package/common/utils/shadowDomUtils.d.ts.map +1 -0
- package/common/utils/shadowDomUtils.js +39 -0
- package/common/utils/shadowDomUtils.js.map +7 -0
- package/common/withDashboardViz.js +2 -2
- package/docs-llm/INDEX.md +118 -0
- package/docs-llm/area/examples-json.md +3854 -0
- package/docs-llm/area/examples-react.md +2816 -0
- package/docs-llm/area/options.md +97 -0
- package/docs-llm/area/overview.md +27 -0
- package/docs-llm/bar/examples-json.md +3380 -0
- package/docs-llm/bar/examples-react.md +2352 -0
- package/docs-llm/bar/options.md +89 -0
- package/docs-llm/bar/overview.md +25 -0
- package/docs-llm/bubble/examples-json.md +4082 -0
- package/docs-llm/bubble/examples-react.md +3977 -0
- package/docs-llm/bubble/options.md +62 -0
- package/docs-llm/bubble/overview.md +26 -0
- package/docs-llm/choropleth-svg/examples-json.md +397 -0
- package/docs-llm/choropleth-svg/examples-react.md +389 -0
- package/docs-llm/choropleth-svg/options.md +15 -0
- package/docs-llm/choropleth-svg/overview.md +23 -0
- package/docs-llm/column/examples-json.md +3898 -0
- package/docs-llm/column/examples-react.md +2653 -0
- package/docs-llm/column/options.md +94 -0
- package/docs-llm/column/overview.md +31 -0
- package/docs-llm/dsl/examples-json.md +43 -0
- package/docs-llm/dsl/examples-react.md +78 -0
- package/docs-llm/dsl/formatters/format-by-type-examples-json.md +58 -0
- package/docs-llm/dsl/formatters/format-by-type-examples-react.md +43 -0
- package/docs-llm/dsl/formatters/format-by-type.md +38 -0
- package/docs-llm/dsl/formatters/frame-examples-json.md +42 -0
- package/docs-llm/dsl/formatters/frame-examples-react.md +24 -0
- package/docs-llm/dsl/formatters/frame.md +6 -0
- package/docs-llm/dsl/formatters/gradient-examples-json.md +98 -0
- package/docs-llm/dsl/formatters/gradient-examples-react.md +44 -0
- package/docs-llm/dsl/formatters/gradient.md +23 -0
- package/docs-llm/dsl/formatters/lerp-examples-json.md +40 -0
- package/docs-llm/dsl/formatters/lerp-examples-react.md +28 -0
- package/docs-llm/dsl/formatters/lerp.md +19 -0
- package/docs-llm/dsl/formatters/match-value-examples-json.md +65 -0
- package/docs-llm/dsl/formatters/match-value-examples-react.md +37 -0
- package/docs-llm/dsl/formatters/match-value.md +13 -0
- package/docs-llm/dsl/formatters/max-contrast-examples-json.md +39 -0
- package/docs-llm/dsl/formatters/max-contrast-examples-react.md +27 -0
- package/docs-llm/dsl/formatters/max-contrast.md +9 -0
- package/docs-llm/dsl/formatters/multi-format-examples-json.md +67 -0
- package/docs-llm/dsl/formatters/multi-format-examples-react.md +49 -0
- package/docs-llm/dsl/formatters/multi-format.md +12 -0
- package/docs-llm/dsl/formatters/objects-examples-json.md +49 -0
- package/docs-llm/dsl/formatters/objects-examples-react.md +37 -0
- package/docs-llm/dsl/formatters/objects.md +3 -0
- package/docs-llm/dsl/formatters/pick-examples-json.md +59 -0
- package/docs-llm/dsl/formatters/pick-examples-react.md +30 -0
- package/docs-llm/dsl/formatters/pick.md +9 -0
- package/docs-llm/dsl/formatters/prefix-examples-json.md +29 -0
- package/docs-llm/dsl/formatters/prefix-examples-react.md +19 -0
- package/docs-llm/dsl/formatters/prefix.md +3 -0
- package/docs-llm/dsl/formatters/prepend-examples-json.md +51 -0
- package/docs-llm/dsl/formatters/prepend-examples-react.md +33 -0
- package/docs-llm/dsl/formatters/prepend.md +9 -0
- package/docs-llm/dsl/formatters/range-value-examples-json.md +48 -0
- package/docs-llm/dsl/formatters/range-value-examples-react.md +34 -0
- package/docs-llm/dsl/formatters/range-value.md +15 -0
- package/docs-llm/dsl/formatters/set-color-channel-examples-json.md +40 -0
- package/docs-llm/dsl/formatters/set-color-channel-examples-react.md +31 -0
- package/docs-llm/dsl/formatters/set-color-channel.md +9 -0
- package/docs-llm/dsl/formatters/suffix-examples-json.md +29 -0
- package/docs-llm/dsl/formatters/suffix-examples-react.md +19 -0
- package/docs-llm/dsl/formatters/suffix.md +3 -0
- package/docs-llm/dsl/formatters/type-examples-json.md +37 -0
- package/docs-llm/dsl/formatters/type-examples-react.md +20 -0
- package/docs-llm/dsl/formatters/type.md +3 -0
- package/docs-llm/dsl/overview.md +41 -0
- package/docs-llm/dsl/selectors/abs.md +7 -0
- package/docs-llm/dsl/selectors/ceil.md +7 -0
- package/docs-llm/dsl/selectors/data-frame-average-examples-json.md +41 -0
- package/docs-llm/dsl/selectors/data-frame-average-examples-react.md +36 -0
- package/docs-llm/dsl/selectors/data-frame-average.md +7 -0
- package/docs-llm/dsl/selectors/data-frame-count-examples-json.md +41 -0
- package/docs-llm/dsl/selectors/data-frame-count-examples-react.md +36 -0
- package/docs-llm/dsl/selectors/data-frame-count.md +7 -0
- package/docs-llm/dsl/selectors/data-frame-examples-json.md +830 -0
- package/docs-llm/dsl/selectors/data-frame-examples-react.md +929 -0
- package/docs-llm/dsl/selectors/data-frame-get-field-examples-json.md +89 -0
- package/docs-llm/dsl/selectors/data-frame-get-field-examples-react.md +124 -0
- package/docs-llm/dsl/selectors/data-frame-get-field.md +5 -0
- package/docs-llm/dsl/selectors/data-frame-get-raw-value.md +5 -0
- package/docs-llm/dsl/selectors/data-frame-get-type.md +5 -0
- package/docs-llm/dsl/selectors/data-frame-get-value.md +5 -0
- package/docs-llm/dsl/selectors/data-frame-max-examples-json.md +51 -0
- package/docs-llm/dsl/selectors/data-frame-max-examples-react.md +41 -0
- package/docs-llm/dsl/selectors/data-frame-max.md +7 -0
- package/docs-llm/dsl/selectors/data-frame-min-examples-json.md +51 -0
- package/docs-llm/dsl/selectors/data-frame-min-examples-react.md +41 -0
- package/docs-llm/dsl/selectors/data-frame-min.md +7 -0
- package/docs-llm/dsl/selectors/data-frame-percentile-examples-json.md +41 -0
- package/docs-llm/dsl/selectors/data-frame-percentile-examples-react.md +36 -0
- package/docs-llm/dsl/selectors/data-frame-percentile.md +8 -0
- package/docs-llm/dsl/selectors/data-frame-set-value.md +5 -0
- package/docs-llm/dsl/selectors/data-frame-sum-examples-json.md +51 -0
- package/docs-llm/dsl/selectors/data-frame-sum-examples-react.md +41 -0
- package/docs-llm/dsl/selectors/data-frame-sum.md +7 -0
- package/docs-llm/dsl/selectors/data-frame.md +4 -0
- package/docs-llm/dsl/selectors/data-point-get-field.md +5 -0
- package/docs-llm/dsl/selectors/data-point-get-raw-value.md +4 -0
- package/docs-llm/dsl/selectors/data-point-get-type.md +5 -0
- package/docs-llm/dsl/selectors/data-point-get-value.md +5 -0
- package/docs-llm/dsl/selectors/data-point-set-value.md +4 -0
- package/docs-llm/dsl/selectors/data-point.md +5 -0
- package/docs-llm/dsl/selectors/data-series-average.md +22 -0
- package/docs-llm/dsl/selectors/data-series-count.md +14 -0
- package/docs-llm/dsl/selectors/data-series-get-field.md +5 -0
- package/docs-llm/dsl/selectors/data-series-get-raw-value.md +4 -0
- package/docs-llm/dsl/selectors/data-series-get-type.md +5 -0
- package/docs-llm/dsl/selectors/data-series-get-value.md +4 -0
- package/docs-llm/dsl/selectors/data-series-max.md +5 -0
- package/docs-llm/dsl/selectors/data-series-min.md +5 -0
- package/docs-llm/dsl/selectors/data-series-percentile.md +17 -0
- package/docs-llm/dsl/selectors/data-series-set-value.md +4 -0
- package/docs-llm/dsl/selectors/data-series-sum.md +24 -0
- package/docs-llm/dsl/selectors/data-series.md +4 -0
- package/docs-llm/dsl/selectors/delta.md +7 -0
- package/docs-llm/dsl/selectors/divide.md +8 -0
- package/docs-llm/dsl/selectors/first-point.md +5 -0
- package/docs-llm/dsl/selectors/floor.md +7 -0
- package/docs-llm/dsl/selectors/frame-by-series-index-range-examples-json.md +89 -0
- package/docs-llm/dsl/selectors/frame-by-series-index-range-examples-react.md +88 -0
- package/docs-llm/dsl/selectors/frame-by-series-index-range.md +10 -0
- package/docs-llm/dsl/selectors/frame-by-series-indexes-examples-json.md +88 -0
- package/docs-llm/dsl/selectors/frame-by-series-indexes-examples-react.md +87 -0
- package/docs-llm/dsl/selectors/frame-by-series-indexes.md +9 -0
- package/docs-llm/dsl/selectors/frame-by-series-names-examples-json.md +89 -0
- package/docs-llm/dsl/selectors/frame-by-series-names-examples-react.md +88 -0
- package/docs-llm/dsl/selectors/frame-by-series-names-or-indexes-examples-json.md +89 -0
- package/docs-llm/dsl/selectors/frame-by-series-names-or-indexes-examples-react.md +88 -0
- package/docs-llm/dsl/selectors/frame-by-series-names-or-indexes.md +9 -0
- package/docs-llm/dsl/selectors/frame-by-series-names.md +9 -0
- package/docs-llm/dsl/selectors/frame-by-series-types-examples-json.md +89 -0
- package/docs-llm/dsl/selectors/frame-by-series-types-examples-react.md +88 -0
- package/docs-llm/dsl/selectors/frame-by-series-types.md +9 -0
- package/docs-llm/dsl/selectors/frame-without-internal-fields-examples-json.md +137 -0
- package/docs-llm/dsl/selectors/frame-without-internal-fields-examples-react.md +135 -0
- package/docs-llm/dsl/selectors/frame-without-internal-fields-except-examples-json.md +157 -0
- package/docs-llm/dsl/selectors/frame-without-internal-fields-except-examples-react.md +155 -0
- package/docs-llm/dsl/selectors/frame-without-internal-fields-except.md +21 -0
- package/docs-llm/dsl/selectors/frame-without-internal-fields.md +17 -0
- package/docs-llm/dsl/selectors/frame-without-series-names.md +8 -0
- package/docs-llm/dsl/selectors/last-point.md +5 -0
- package/docs-llm/dsl/selectors/minus.md +8 -0
- package/docs-llm/dsl/selectors/multiply.md +8 -0
- package/docs-llm/dsl/selectors/plus.md +8 -0
- package/docs-llm/dsl/selectors/point-by-index.md +6 -0
- package/docs-llm/dsl/selectors/points-by-indexes.md +6 -0
- package/docs-llm/dsl/selectors/round.md +7 -0
- package/docs-llm/dsl/selectors/series-by-index-examples-json.md +49 -0
- package/docs-llm/dsl/selectors/series-by-index-examples-react.md +39 -0
- package/docs-llm/dsl/selectors/series-by-index.md +8 -0
- package/docs-llm/dsl/selectors/series-by-name-examples-json.md +49 -0
- package/docs-llm/dsl/selectors/series-by-name-examples-react.md +39 -0
- package/docs-llm/dsl/selectors/series-by-name.md +8 -0
- package/docs-llm/dsl/selectors/series-by-prioritized-types-examples-json.md +47 -0
- package/docs-llm/dsl/selectors/series-by-prioritized-types-examples-react.md +39 -0
- package/docs-llm/dsl/selectors/series-by-prioritized-types.md +10 -0
- package/docs-llm/dsl/selectors/series-by-type-examples-json.md +49 -0
- package/docs-llm/dsl/selectors/series-by-type-examples-react.md +39 -0
- package/docs-llm/dsl/selectors/series-by-type.md +10 -0
- package/docs-llm/dsl/selectors/series-by-types.md +6 -0
- package/docs-llm/ellipse/examples-json.md +5 -0
- package/docs-llm/ellipse/examples-react.md +5 -0
- package/docs-llm/ellipse/options.md +16 -0
- package/docs-llm/ellipse/overview.md +5 -0
- package/docs-llm/events/examples-json.md +705 -0
- package/docs-llm/events/examples-react.md +536 -0
- package/docs-llm/events/options.md +18 -0
- package/docs-llm/events/overview.md +5 -0
- package/docs-llm/filler-gauge/examples-json.md +376 -0
- package/docs-llm/filler-gauge/examples-react.md +274 -0
- package/docs-llm/filler-gauge/options.md +26 -0
- package/docs-llm/filler-gauge/overview.md +5 -0
- package/docs-llm/image/examples-json.md +39 -0
- package/docs-llm/image/examples-react.md +65 -0
- package/docs-llm/image/options.md +13 -0
- package/docs-llm/image/overview.md +5 -0
- package/docs-llm/line/examples-json.md +3724 -0
- package/docs-llm/line/examples-react.md +2683 -0
- package/docs-llm/line/options.md +95 -0
- package/docs-llm/line/overview.md +29 -0
- package/docs-llm/link-graph/examples-json.md +5 -0
- package/docs-llm/link-graph/examples-react.md +5 -0
- package/docs-llm/link-graph/options.md +26 -0
- package/docs-llm/link-graph/overview.md +16 -0
- package/docs-llm/map/examples-json.md +13973 -0
- package/docs-llm/map/examples-react.md +6154 -0
- package/docs-llm/map/options.md +22 -0
- package/docs-llm/map/overview.md +32 -0
- package/docs-llm/markdown/examples-json.md +63 -0
- package/docs-llm/markdown/examples-react.md +98 -0
- package/docs-llm/markdown/options.md +17 -0
- package/docs-llm/markdown/overview.md +5 -0
- package/docs-llm/marker-gauge/examples-json.md +436 -0
- package/docs-llm/marker-gauge/examples-react.md +367 -0
- package/docs-llm/marker-gauge/options.md +26 -0
- package/docs-llm/marker-gauge/overview.md +5 -0
- package/docs-llm/network-graph/examples-json.md +8843 -0
- package/docs-llm/network-graph/examples-react.md +7339 -0
- package/docs-llm/network-graph/options.md +50 -0
- package/docs-llm/network-graph/overview.md +28 -0
- package/docs-llm/parallel-coordinates/examples-json.md +8376 -0
- package/docs-llm/parallel-coordinates/examples-react.md +2771 -0
- package/docs-llm/parallel-coordinates/options.md +14 -0
- package/docs-llm/parallel-coordinates/overview.md +22 -0
- package/docs-llm/pie/examples-json.md +851 -0
- package/docs-llm/pie/examples-react.md +606 -0
- package/docs-llm/pie/options.md +34 -0
- package/docs-llm/pie/overview.md +23 -0
- package/docs-llm/process-tree/options.md +32 -0
- package/docs-llm/punchcard/examples-json.md +6134 -0
- package/docs-llm/punchcard/examples-react.md +4562 -0
- package/docs-llm/punchcard/options.md +33 -0
- package/docs-llm/punchcard/overview.md +5 -0
- package/docs-llm/pure-rich-text/options.md +28 -0
- package/docs-llm/rectangle/examples-json.md +5 -0
- package/docs-llm/rectangle/examples-react.md +5 -0
- package/docs-llm/rectangle/options.md +19 -0
- package/docs-llm/rectangle/overview.md +5 -0
- package/docs-llm/rich-text/examples-json.md +96 -0
- package/docs-llm/rich-text/examples-react.md +119 -0
- package/docs-llm/rich-text/options.md +28 -0
- package/docs-llm/rich-text/overview.md +5 -0
- package/docs-llm/sankey/examples-json.md +844 -0
- package/docs-llm/sankey/examples-react.md +546 -0
- package/docs-llm/sankey/options.md +19 -0
- package/docs-llm/sankey/overview.md +24 -0
- package/docs-llm/scatter/examples-json.md +4012 -0
- package/docs-llm/scatter/examples-react.md +3914 -0
- package/docs-llm/scatter/options.md +68 -0
- package/docs-llm/scatter/overview.md +25 -0
- package/docs-llm/single-value/examples-json.md +2613 -0
- package/docs-llm/single-value/examples-react.md +2296 -0
- package/docs-llm/single-value/options.md +49 -0
- package/docs-llm/single-value/overview.md +23 -0
- package/docs-llm/single-value-icon/examples-json.md +1686 -0
- package/docs-llm/single-value-icon/examples-react.md +1573 -0
- package/docs-llm/single-value-icon/options.md +43 -0
- package/docs-llm/single-value-icon/overview.md +5 -0
- package/docs-llm/single-value-radial/examples-json.md +1178 -0
- package/docs-llm/single-value-radial/examples-react.md +1028 -0
- package/docs-llm/single-value-radial/options.md +41 -0
- package/docs-llm/single-value-radial/overview.md +5 -0
- package/docs-llm/table/examples-json.md +5 -0
- package/docs-llm/table/examples-react.md +5 -0
- package/docs-llm/table/options.md +25 -0
- package/docs-llm/table/overview.md +24 -0
- package/docs-llm/timeline/examples-json.md +5 -0
- package/docs-llm/timeline/examples-react.md +5 -0
- package/docs-llm/timeline/options.md +27 -0
- package/docs-llm/timeline/overview.md +24 -0
- package/package.json +28 -24
package/Map.js
CHANGED
|
@@ -193,104 +193,273 @@ var defaultImport11 = __toESM(require("@splunk/react-ui/Button"));
|
|
|
193
193
|
__reExport(Button_exports, require("@splunk/react-ui/Button"));
|
|
194
194
|
var Button_default = "default" in defaultImport11 ? defaultImport11.default : defaultImport11;
|
|
195
195
|
|
|
196
|
+
// esm-externals:@splunk/react-ui/Tooltip
|
|
197
|
+
var Tooltip_exports = {};
|
|
198
|
+
__export(Tooltip_exports, {
|
|
199
|
+
default: () => Tooltip_default
|
|
200
|
+
});
|
|
201
|
+
var defaultImport12 = __toESM(require("@splunk/react-ui/Tooltip"));
|
|
202
|
+
__reExport(Tooltip_exports, require("@splunk/react-ui/Tooltip"));
|
|
203
|
+
var Tooltip_default = "default" in defaultImport12 ? defaultImport12.default : defaultImport12;
|
|
204
|
+
|
|
196
205
|
// esm-externals:@splunk/visualization-context/MapContext
|
|
197
206
|
var MapContext_exports = {};
|
|
198
207
|
__export(MapContext_exports, {
|
|
199
208
|
default: () => MapContext_default
|
|
200
209
|
});
|
|
201
|
-
var
|
|
210
|
+
var defaultImport13 = __toESM(require("@splunk/visualization-context/MapContext"));
|
|
202
211
|
__reExport(MapContext_exports, require("@splunk/visualization-context/MapContext"));
|
|
203
|
-
var MapContext_default = "default" in
|
|
212
|
+
var MapContext_default = "default" in defaultImport13 ? defaultImport13.default : defaultImport13;
|
|
204
213
|
|
|
205
214
|
// esm-externals:@splunk/visualization-schemas
|
|
206
215
|
var visualization_schemas_exports = {};
|
|
207
216
|
__export(visualization_schemas_exports, {
|
|
208
217
|
default: () => visualization_schemas_default
|
|
209
218
|
});
|
|
210
|
-
var
|
|
219
|
+
var defaultImport14 = __toESM(require("@splunk/visualization-schemas"));
|
|
211
220
|
__reExport(visualization_schemas_exports, require("@splunk/visualization-schemas"));
|
|
212
|
-
var visualization_schemas_default = "default" in
|
|
221
|
+
var visualization_schemas_default = "default" in defaultImport14 ? defaultImport14.default : defaultImport14;
|
|
222
|
+
|
|
223
|
+
// src/common/utils/shadowDomUtils.ts
|
|
224
|
+
var getFloatingLayerStyleTarget = (anchor) => {
|
|
225
|
+
if (!anchor || typeof anchor.getRootNode !== "function") {
|
|
226
|
+
return void 0;
|
|
227
|
+
}
|
|
228
|
+
const rootNode = anchor.getRootNode();
|
|
229
|
+
if (typeof ShadowRoot !== "undefined" && rootNode instanceof ShadowRoot) {
|
|
230
|
+
return anchor.ownerDocument.head;
|
|
231
|
+
}
|
|
232
|
+
return void 0;
|
|
233
|
+
};
|
|
213
234
|
|
|
214
235
|
// esm-externals:@splunk/visualizations-shared/style
|
|
215
236
|
var style_exports = {};
|
|
216
237
|
__export(style_exports, {
|
|
217
238
|
default: () => style_default
|
|
218
239
|
});
|
|
219
|
-
var
|
|
240
|
+
var defaultImport15 = __toESM(require("@splunk/visualizations-shared/style"));
|
|
220
241
|
__reExport(style_exports, require("@splunk/visualizations-shared/style"));
|
|
221
|
-
var style_default = "default" in
|
|
242
|
+
var style_default = "default" in defaultImport15 ? defaultImport15.default : defaultImport15;
|
|
222
243
|
|
|
223
244
|
// esm-externals:maplibre-gl/dist/maplibre-gl.css
|
|
224
245
|
var maplibre_gl_exports2 = {};
|
|
225
246
|
__export(maplibre_gl_exports2, {
|
|
226
247
|
default: () => maplibre_gl_default2
|
|
227
248
|
});
|
|
228
|
-
var
|
|
249
|
+
var defaultImport16 = __toESM(require("maplibre-gl/dist/maplibre-gl.css"));
|
|
229
250
|
__reExport(maplibre_gl_exports2, require("maplibre-gl/dist/maplibre-gl.css"));
|
|
230
|
-
var maplibre_gl_default2 = "default" in
|
|
251
|
+
var maplibre_gl_default2 = "default" in defaultImport16 ? defaultImport16.default : defaultImport16;
|
|
231
252
|
|
|
232
253
|
// esm-externals:@splunk/visualizations-shared/iconUtils
|
|
233
254
|
var iconUtils_exports = {};
|
|
234
255
|
__export(iconUtils_exports, {
|
|
235
256
|
default: () => iconUtils_default
|
|
236
257
|
});
|
|
237
|
-
var
|
|
258
|
+
var defaultImport17 = __toESM(require("@splunk/visualizations-shared/iconUtils"));
|
|
238
259
|
__reExport(iconUtils_exports, require("@splunk/visualizations-shared/iconUtils"));
|
|
239
|
-
var iconUtils_default = "default" in
|
|
260
|
+
var iconUtils_default = "default" in defaultImport17 ? defaultImport17.default : defaultImport17;
|
|
240
261
|
|
|
241
262
|
// esm-externals:@splunk/visualizations-shared/RemoteIcon
|
|
242
263
|
var RemoteIcon_exports = {};
|
|
243
264
|
__export(RemoteIcon_exports, {
|
|
244
265
|
default: () => RemoteIcon_default
|
|
245
266
|
});
|
|
246
|
-
var
|
|
267
|
+
var defaultImport18 = __toESM(require("@splunk/visualizations-shared/RemoteIcon"));
|
|
247
268
|
__reExport(RemoteIcon_exports, require("@splunk/visualizations-shared/RemoteIcon"));
|
|
248
|
-
var RemoteIcon_default = "default" in
|
|
269
|
+
var RemoteIcon_default = "default" in defaultImport18 ? defaultImport18.default : defaultImport18;
|
|
249
270
|
|
|
250
271
|
// esm-externals:@splunk/visualization-context/FeatureFlagContext
|
|
251
272
|
var FeatureFlagContext_exports = {};
|
|
252
273
|
__export(FeatureFlagContext_exports, {
|
|
253
274
|
default: () => FeatureFlagContext_default
|
|
254
275
|
});
|
|
255
|
-
var
|
|
276
|
+
var defaultImport19 = __toESM(require("@splunk/visualization-context/FeatureFlagContext"));
|
|
256
277
|
__reExport(FeatureFlagContext_exports, require("@splunk/visualization-context/FeatureFlagContext"));
|
|
257
|
-
var FeatureFlagContext_default = "default" in
|
|
278
|
+
var FeatureFlagContext_default = "default" in defaultImport19 ? defaultImport19.default : defaultImport19;
|
|
279
|
+
|
|
280
|
+
// esm-externals:@splunk/ui-utils/format
|
|
281
|
+
var format_exports = {};
|
|
282
|
+
__export(format_exports, {
|
|
283
|
+
default: () => format_default
|
|
284
|
+
});
|
|
285
|
+
var defaultImport20 = __toESM(require("@splunk/ui-utils/format"));
|
|
286
|
+
__reExport(format_exports, require("@splunk/ui-utils/format"));
|
|
287
|
+
var format_default = "default" in defaultImport20 ? defaultImport20.default : defaultImport20;
|
|
288
|
+
|
|
289
|
+
// src/Map/PureMap/keyboardConstants.ts
|
|
290
|
+
var KEYBOARD_KEYS = {
|
|
291
|
+
ARROW_RIGHT: "ArrowRight",
|
|
292
|
+
ARROW_LEFT: "ArrowLeft",
|
|
293
|
+
ARROW_UP: "ArrowUp",
|
|
294
|
+
ARROW_DOWN: "ArrowDown",
|
|
295
|
+
HOME: "Home",
|
|
296
|
+
END: "End",
|
|
297
|
+
ENTER: "Enter",
|
|
298
|
+
SPACE: " "
|
|
299
|
+
};
|
|
300
|
+
|
|
301
|
+
// esm-externals:@splunk/react-ui/Popover
|
|
302
|
+
var Popover_exports = {};
|
|
303
|
+
__export(Popover_exports, {
|
|
304
|
+
default: () => Popover_default
|
|
305
|
+
});
|
|
306
|
+
var defaultImport21 = __toESM(require("@splunk/react-ui/Popover"));
|
|
307
|
+
__reExport(Popover_exports, require("@splunk/react-ui/Popover"));
|
|
308
|
+
var Popover_default = "default" in defaultImport21 ? defaultImport21.default : defaultImport21;
|
|
309
|
+
|
|
310
|
+
// esm-externals:@splunk/themes
|
|
311
|
+
var themes_exports = {};
|
|
312
|
+
__export(themes_exports, {
|
|
313
|
+
default: () => themes_default
|
|
314
|
+
});
|
|
315
|
+
var defaultImport22 = __toESM(require("@splunk/themes"));
|
|
316
|
+
__reExport(themes_exports, require("@splunk/themes"));
|
|
317
|
+
var themes_default = "default" in defaultImport22 ? defaultImport22.default : defaultImport22;
|
|
258
318
|
|
|
259
319
|
// esm-externals:@splunk/ui-utils/id
|
|
260
320
|
var id_exports = {};
|
|
261
321
|
__export(id_exports, {
|
|
262
322
|
default: () => id_default
|
|
263
323
|
});
|
|
264
|
-
var
|
|
324
|
+
var defaultImport23 = __toESM(require("@splunk/ui-utils/id"));
|
|
265
325
|
__reExport(id_exports, require("@splunk/ui-utils/id"));
|
|
266
|
-
var id_default = "default" in
|
|
326
|
+
var id_default = "default" in defaultImport23 ? defaultImport23.default : defaultImport23;
|
|
327
|
+
|
|
328
|
+
// src/Map/PureMap/Tooltip.tsx
|
|
329
|
+
var StyledPopover = styled_components_default(Popover_default)`
|
|
330
|
+
min-width: 250px;
|
|
331
|
+
max-width: 332px;
|
|
332
|
+
max-width: fit-content;
|
|
333
|
+
font-size: 12px;
|
|
334
|
+
`;
|
|
335
|
+
var StyledTable = styled_components_default.table`
|
|
336
|
+
margin: 2px 6px 2px 6px;
|
|
337
|
+
width: calc(100% - 12px);
|
|
338
|
+
`;
|
|
339
|
+
var StyledTitleColumn = styled_components_default.td`
|
|
340
|
+
opacity: 0.85;
|
|
341
|
+
word-break: break-all;
|
|
342
|
+
vertical-align: top;
|
|
343
|
+
`;
|
|
344
|
+
var StyledValueColumn = styled_components_default.td`
|
|
345
|
+
text-align: right;
|
|
346
|
+
word-break: break-all;
|
|
347
|
+
vertical-align: top;
|
|
348
|
+
`;
|
|
349
|
+
var StyledColorBlock = styled_components_default.div`
|
|
350
|
+
background-color: ${(props) => props.color};
|
|
351
|
+
display: inline-block;
|
|
352
|
+
margin-right: 4px;
|
|
353
|
+
border-radius: 2px;
|
|
354
|
+
width: 6px;
|
|
355
|
+
height: 11px;
|
|
356
|
+
transform: translateY(1px);
|
|
357
|
+
`;
|
|
358
|
+
var StyledIconWrapper = styled_components_default.span`
|
|
359
|
+
margin-left: 4px;
|
|
360
|
+
display: inline-block;
|
|
361
|
+
vertical-align: middle;
|
|
362
|
+
`;
|
|
363
|
+
var StyledTooltipHeader = styled_components_default.thead`
|
|
364
|
+
th {
|
|
365
|
+
height: 16px;
|
|
366
|
+
color: ${themes_exports.variables.contentColorActive};
|
|
367
|
+
padding: 0;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
span {
|
|
371
|
+
display: block;
|
|
372
|
+
white-space: nowrap;
|
|
373
|
+
overflow: hidden;
|
|
374
|
+
text-overflow: ellipsis;
|
|
375
|
+
width: 100%;
|
|
376
|
+
}
|
|
377
|
+
`;
|
|
378
|
+
var convertDegToDMS = (decimalDegree, type) => {
|
|
379
|
+
const truncate = (n) => n > 0 ? Math.floor(n) : Math.ceil(n);
|
|
380
|
+
const absoluteDegree = Math.abs(decimalDegree);
|
|
381
|
+
let degrees = truncate(absoluteDegree);
|
|
382
|
+
let minutes = truncate((absoluteDegree - degrees) * 60);
|
|
383
|
+
let seconds = Math.round((absoluteDegree - degrees - minutes / 60) * 3600);
|
|
384
|
+
if (seconds === 60) {
|
|
385
|
+
minutes += 1;
|
|
386
|
+
seconds = 0;
|
|
387
|
+
}
|
|
388
|
+
if (minutes === 60) {
|
|
389
|
+
degrees += 1;
|
|
390
|
+
minutes = 0;
|
|
391
|
+
}
|
|
392
|
+
let direction;
|
|
393
|
+
if (type === "longitude") {
|
|
394
|
+
direction = decimalDegree < 0 ? "W" : "E";
|
|
395
|
+
} else if (type === "latitude") {
|
|
396
|
+
direction = decimalDegree < 0 ? "S" : "N";
|
|
397
|
+
}
|
|
398
|
+
return `${degrees}\xB0 ${minutes}' ${seconds}" ${direction}`;
|
|
399
|
+
};
|
|
400
|
+
var Tooltip = ({
|
|
401
|
+
id,
|
|
402
|
+
open,
|
|
403
|
+
anchor,
|
|
404
|
+
latitude,
|
|
405
|
+
longitude,
|
|
406
|
+
areaId,
|
|
407
|
+
areaValue,
|
|
408
|
+
additionalFields = [],
|
|
409
|
+
showCoordinates = true,
|
|
410
|
+
tooltipHeader = null,
|
|
411
|
+
stylesManagedExternally = false,
|
|
412
|
+
onMouseEnter,
|
|
413
|
+
onMouseLeave
|
|
414
|
+
}) => {
|
|
415
|
+
const featureFlagContext = react_exports.useContext(FeatureFlagContext_default);
|
|
416
|
+
const isTooltipIconFlagEnabled = Boolean(featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableTooltipIcon);
|
|
417
|
+
const styleTarget = stylesManagedExternally ? void 0 : getFloatingLayerStyleTarget(anchor);
|
|
418
|
+
const popover = /* @__PURE__ */ react_exports.createElement(
|
|
419
|
+
StyledPopover,
|
|
420
|
+
{
|
|
421
|
+
id,
|
|
422
|
+
role: "tooltip",
|
|
423
|
+
open,
|
|
424
|
+
animation: false,
|
|
425
|
+
anchor,
|
|
426
|
+
"data-test": "map-marker-tooltip",
|
|
427
|
+
defaultPlacement: "above",
|
|
428
|
+
onMouseEnter,
|
|
429
|
+
onMouseLeave
|
|
430
|
+
},
|
|
431
|
+
/* @__PURE__ */ react_exports.createElement(StyledTable, null, tooltipHeader && /* @__PURE__ */ react_exports.createElement(StyledTooltipHeader, { "data-test": "tooltip-header" }, /* @__PURE__ */ react_exports.createElement("tr", null, /* @__PURE__ */ react_exports.createElement("th", { colSpan: 2 }, /* @__PURE__ */ react_exports.createElement("span", { "data-test": "tooltip-header-value" }, tooltipHeader)))), /* @__PURE__ */ react_exports.createElement("tbody", null, Boolean(areaId && areaValue) && /* @__PURE__ */ react_exports.createElement("tr", null, /* @__PURE__ */ react_exports.createElement(StyledTitleColumn, { "data-test": "area-id" }, areaId), /* @__PURE__ */ react_exports.createElement(StyledValueColumn, { "data-test": "area-value" }, areaValue)), Boolean(showCoordinates && latitude) && /* @__PURE__ */ react_exports.createElement("tr", null, /* @__PURE__ */ react_exports.createElement(StyledTitleColumn, null, (0, i18n_exports._)("Latitude")), /* @__PURE__ */ react_exports.createElement(StyledValueColumn, { "data-test": "latitude" }, convertDegToDMS(latitude, "latitude"))), Boolean(showCoordinates && longitude) && /* @__PURE__ */ react_exports.createElement("tr", null, /* @__PURE__ */ react_exports.createElement(StyledTitleColumn, null, (0, i18n_exports._)("Longitude")), /* @__PURE__ */ react_exports.createElement(StyledValueColumn, { "data-test": "longitude" }, convertDegToDMS(longitude, "longitude"))), additionalFields.filter(({ value }) => value && String(value) !== "0").map(({ name, value, color, icon }) => /* @__PURE__ */ react_exports.createElement("tr", { key: (0, id_exports.createDOMID)() }, /* @__PURE__ */ react_exports.createElement(StyledTitleColumn, { "data-test": "field-title" }, color ? /* @__PURE__ */ react_exports.createElement(StyledColorBlock, { "data-test": "field-color", color }) : null, /* @__PURE__ */ react_exports.createElement("span", null, name, isTooltipIconFlagEnabled && icon && ((0, iconUtils_exports.isRemoteIcon)(icon) || (0, iconUtils_exports.isDataURI)(icon)) ? /* @__PURE__ */ react_exports.createElement(StyledIconWrapper, { "data-test": "field-icon" }, /* @__PURE__ */ react_exports.createElement(RemoteIcon_default, { iconURL: icon, width: 16, height: 16 })) : null)), /* @__PURE__ */ react_exports.createElement(StyledValueColumn, { "data-test": "field-value" }, value)))))
|
|
432
|
+
);
|
|
433
|
+
return styleTarget ? /* @__PURE__ */ react_exports.createElement(styled_components_exports.StyleSheetManager, { target: styleTarget }, popover) : popover;
|
|
434
|
+
};
|
|
435
|
+
var Tooltip_default2 = Tooltip;
|
|
267
436
|
|
|
268
437
|
// esm-externals:d3-scale
|
|
269
438
|
var d3_scale_exports = {};
|
|
270
439
|
__export(d3_scale_exports, {
|
|
271
440
|
default: () => d3_scale_default
|
|
272
441
|
});
|
|
273
|
-
var
|
|
442
|
+
var defaultImport24 = __toESM(require("d3-scale"));
|
|
274
443
|
__reExport(d3_scale_exports, require("d3-scale"));
|
|
275
|
-
var d3_scale_default = "default" in
|
|
444
|
+
var d3_scale_default = "default" in defaultImport24 ? defaultImport24.default : defaultImport24;
|
|
276
445
|
|
|
277
446
|
// esm-externals:@splunk/visualization-color-palettes
|
|
278
447
|
var visualization_color_palettes_exports = {};
|
|
279
448
|
__export(visualization_color_palettes_exports, {
|
|
280
449
|
default: () => visualization_color_palettes_default
|
|
281
450
|
});
|
|
282
|
-
var
|
|
451
|
+
var defaultImport25 = __toESM(require("@splunk/visualization-color-palettes"));
|
|
283
452
|
__reExport(visualization_color_palettes_exports, require("@splunk/visualization-color-palettes"));
|
|
284
|
-
var visualization_color_palettes_default = "default" in
|
|
453
|
+
var visualization_color_palettes_default = "default" in defaultImport25 ? defaultImport25.default : defaultImport25;
|
|
285
454
|
|
|
286
455
|
// esm-externals:@splunk/visualization-encoding/utils/types
|
|
287
456
|
var types_exports = {};
|
|
288
457
|
__export(types_exports, {
|
|
289
458
|
default: () => types_default
|
|
290
459
|
});
|
|
291
|
-
var
|
|
460
|
+
var defaultImport26 = __toESM(require("@splunk/visualization-encoding/utils/types"));
|
|
292
461
|
__reExport(types_exports, require("@splunk/visualization-encoding/utils/types"));
|
|
293
|
-
var types_default = "default" in
|
|
462
|
+
var types_default = "default" in defaultImport26 ? defaultImport26.default : defaultImport26;
|
|
294
463
|
|
|
295
464
|
// src/Map/PureMap/MapUtils.ts
|
|
296
465
|
var MAX_LATITUDE = 90;
|
|
@@ -474,7 +643,7 @@ var transposeArray = (array2) => {
|
|
|
474
643
|
if (!(array2 == null ? void 0 : array2.length) || !((_a = array2[0]) == null ? void 0 : _a.length)) {
|
|
475
644
|
return [];
|
|
476
645
|
}
|
|
477
|
-
return array2[0].map((
|
|
646
|
+
return array2[0].map((_10, i) => array2.map((row) => row[i]));
|
|
478
647
|
};
|
|
479
648
|
var sanitizeValues = (values) => {
|
|
480
649
|
if (!values) {
|
|
@@ -652,122 +821,30 @@ var formatMetadata = (choroplethLayer, i) => {
|
|
|
652
821
|
}, base);
|
|
653
822
|
};
|
|
654
823
|
|
|
655
|
-
//
|
|
656
|
-
var
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
}
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
var Popover_default = "default" in defaultImport23 ? defaultImport23.default : defaultImport23;
|
|
663
|
-
|
|
664
|
-
// esm-externals:@splunk/themes
|
|
665
|
-
var themes_exports = {};
|
|
666
|
-
__export(themes_exports, {
|
|
667
|
-
default: () => themes_default
|
|
668
|
-
});
|
|
669
|
-
var defaultImport24 = __toESM(require("@splunk/themes"));
|
|
670
|
-
__reExport(themes_exports, require("@splunk/themes"));
|
|
671
|
-
var themes_default = "default" in defaultImport24 ? defaultImport24.default : defaultImport24;
|
|
672
|
-
|
|
673
|
-
// src/Map/PureMap/Tooltip.tsx
|
|
674
|
-
var StyledPopover = styled_components_default(Popover_default)`
|
|
675
|
-
min-width: 250px;
|
|
676
|
-
max-width: 332px;
|
|
677
|
-
max-width: fit-content;
|
|
678
|
-
font-size: 12px;
|
|
679
|
-
`;
|
|
680
|
-
var StyledTable = styled_components_default.table`
|
|
681
|
-
margin: 2px 6px 2px 6px;
|
|
682
|
-
width: calc(100% - 12px);
|
|
683
|
-
`;
|
|
684
|
-
var StyledTitleColumn = styled_components_default.td`
|
|
685
|
-
opacity: 0.85;
|
|
686
|
-
word-break: break-all;
|
|
687
|
-
vertical-align: top;
|
|
688
|
-
`;
|
|
689
|
-
var StyledValueColumn = styled_components_default.td`
|
|
690
|
-
text-align: right;
|
|
691
|
-
word-break: break-all;
|
|
692
|
-
vertical-align: top;
|
|
693
|
-
`;
|
|
694
|
-
var StyledColorBlock = styled_components_default.div`
|
|
695
|
-
background-color: ${(props) => props.color};
|
|
696
|
-
display: inline-block;
|
|
697
|
-
margin-right: 4px;
|
|
698
|
-
border-radius: 2px;
|
|
699
|
-
width: 6px;
|
|
700
|
-
height: 11px;
|
|
701
|
-
transform: translateY(1px);
|
|
702
|
-
`;
|
|
703
|
-
var StyledIconWrapper = styled_components_default.span`
|
|
704
|
-
margin-left: 4px;
|
|
705
|
-
display: inline-block;
|
|
706
|
-
vertical-align: middle;
|
|
707
|
-
`;
|
|
708
|
-
var StyledTooltipHeader = styled_components_default.thead`
|
|
709
|
-
th {
|
|
710
|
-
height: 16px;
|
|
711
|
-
color: ${themes_exports.variables.contentColorActive};
|
|
712
|
-
padding: 0;
|
|
713
|
-
}
|
|
714
|
-
|
|
715
|
-
span {
|
|
716
|
-
display: block;
|
|
717
|
-
white-space: nowrap;
|
|
718
|
-
overflow: hidden;
|
|
719
|
-
text-overflow: ellipsis;
|
|
720
|
-
width: 100%;
|
|
721
|
-
}
|
|
722
|
-
`;
|
|
723
|
-
var convertDegToDMS = (decimalDegree, type) => {
|
|
724
|
-
const truncate = (n) => n > 0 ? Math.floor(n) : Math.ceil(n);
|
|
725
|
-
const absoluteDegree = Math.abs(decimalDegree);
|
|
726
|
-
let degrees = truncate(absoluteDegree);
|
|
727
|
-
let minutes = truncate((absoluteDegree - degrees) * 60);
|
|
728
|
-
let seconds = Math.round((absoluteDegree - degrees - minutes / 60) * 3600);
|
|
729
|
-
if (seconds === 60) {
|
|
730
|
-
minutes += 1;
|
|
731
|
-
seconds = 0;
|
|
732
|
-
}
|
|
733
|
-
if (minutes === 60) {
|
|
734
|
-
degrees += 1;
|
|
735
|
-
minutes = 0;
|
|
736
|
-
}
|
|
737
|
-
let direction;
|
|
738
|
-
if (type === "longitude") {
|
|
739
|
-
direction = decimalDegree < 0 ? "W" : "E";
|
|
740
|
-
} else if (type === "latitude") {
|
|
741
|
-
direction = decimalDegree < 0 ? "S" : "N";
|
|
824
|
+
// src/Map/PureMap/MapContext.tsx
|
|
825
|
+
var MapContext = react_exports.createContext({
|
|
826
|
+
activeTooltipId: null,
|
|
827
|
+
setActiveTooltipId: () => {
|
|
828
|
+
},
|
|
829
|
+
activeChoroplethId: null,
|
|
830
|
+
setActiveChoroplethId: () => {
|
|
742
831
|
}
|
|
743
|
-
|
|
744
|
-
}
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
}) => {
|
|
756
|
-
const featureFlagContext = react_exports.useContext(FeatureFlagContext_default);
|
|
757
|
-
const isTooltipIconFlagEnabled = Boolean(featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableTooltipIcon);
|
|
758
|
-
return /* @__PURE__ */ react_exports.createElement(
|
|
759
|
-
StyledPopover,
|
|
760
|
-
{
|
|
761
|
-
open,
|
|
762
|
-
animation: false,
|
|
763
|
-
anchor,
|
|
764
|
-
"data-test": "map-marker-tooltip",
|
|
765
|
-
defaultPlacement: "above"
|
|
766
|
-
},
|
|
767
|
-
/* @__PURE__ */ react_exports.createElement(StyledTable, null, tooltipHeader && /* @__PURE__ */ react_exports.createElement(StyledTooltipHeader, { "data-test": "tooltip-header" }, /* @__PURE__ */ react_exports.createElement("tr", null, /* @__PURE__ */ react_exports.createElement("th", { colSpan: 2 }, /* @__PURE__ */ react_exports.createElement("span", { "data-test": "tooltip-header-value" }, tooltipHeader)))), /* @__PURE__ */ react_exports.createElement("tbody", null, Boolean(areaId && areaValue) && /* @__PURE__ */ react_exports.createElement("tr", null, /* @__PURE__ */ react_exports.createElement(StyledTitleColumn, { "data-test": "area-id" }, areaId), /* @__PURE__ */ react_exports.createElement(StyledValueColumn, { "data-test": "area-value" }, areaValue)), Boolean(showCoordinates && latitude) && /* @__PURE__ */ react_exports.createElement("tr", null, /* @__PURE__ */ react_exports.createElement(StyledTitleColumn, null, (0, i18n_exports._)("Latitude")), /* @__PURE__ */ react_exports.createElement(StyledValueColumn, { "data-test": "latitude" }, convertDegToDMS(latitude, "latitude"))), Boolean(showCoordinates && longitude) && /* @__PURE__ */ react_exports.createElement("tr", null, /* @__PURE__ */ react_exports.createElement(StyledTitleColumn, null, (0, i18n_exports._)("Longitude")), /* @__PURE__ */ react_exports.createElement(StyledValueColumn, { "data-test": "longitude" }, convertDegToDMS(longitude, "longitude"))), additionalFields.filter(({ value }) => value && String(value) !== "0").map(({ name, value, color, icon }) => /* @__PURE__ */ react_exports.createElement("tr", { key: (0, id_exports.createDOMID)() }, /* @__PURE__ */ react_exports.createElement(StyledTitleColumn, { "data-test": "field-title" }, color ? /* @__PURE__ */ react_exports.createElement(StyledColorBlock, { "data-test": "field-color", color }) : null, /* @__PURE__ */ react_exports.createElement("span", null, name, isTooltipIconFlagEnabled && icon && ((0, iconUtils_exports.isRemoteIcon)(icon) || (0, iconUtils_exports.isDataURI)(icon)) ? /* @__PURE__ */ react_exports.createElement(StyledIconWrapper, { "data-test": "field-icon" }, /* @__PURE__ */ react_exports.createElement(RemoteIcon_default, { iconURL: icon, width: 16, height: 16 })) : null)), /* @__PURE__ */ react_exports.createElement(StyledValueColumn, { "data-test": "field-value" }, value)))))
|
|
832
|
+
});
|
|
833
|
+
var MapProvider = ({ children }) => {
|
|
834
|
+
const [activeTooltipId, setActiveTooltipId] = react_exports.useState(null);
|
|
835
|
+
const [activeChoroplethId, setActiveChoroplethId] = react_exports.useState(null);
|
|
836
|
+
const value = react_exports.useMemo(
|
|
837
|
+
() => ({
|
|
838
|
+
activeTooltipId,
|
|
839
|
+
setActiveTooltipId,
|
|
840
|
+
activeChoroplethId,
|
|
841
|
+
setActiveChoroplethId
|
|
842
|
+
}),
|
|
843
|
+
[activeTooltipId, activeChoroplethId]
|
|
768
844
|
);
|
|
845
|
+
return /* @__PURE__ */ react_exports.createElement(MapContext.Provider, { value }, children);
|
|
769
846
|
};
|
|
770
|
-
var
|
|
847
|
+
var useMapContext = () => react_exports.useContext(MapContext);
|
|
771
848
|
|
|
772
849
|
// src/Map/PureMap/MarkerWrapper.tsx
|
|
773
850
|
var MarkerWrapper = (_a) => {
|
|
@@ -779,9 +856,10 @@ var MarkerWrapper = (_a) => {
|
|
|
779
856
|
additionalFields = [],
|
|
780
857
|
tooltipHeader = null,
|
|
781
858
|
map,
|
|
782
|
-
isChoroplethTooltipOpen,
|
|
783
859
|
children,
|
|
784
|
-
showCoordinates = true
|
|
860
|
+
showCoordinates = true,
|
|
861
|
+
stylesManagedExternally = false,
|
|
862
|
+
customMarkerId
|
|
785
863
|
} = _b, otherProps = __objRest(_b, [
|
|
786
864
|
"longitude",
|
|
787
865
|
"latitude",
|
|
@@ -790,19 +868,120 @@ var MarkerWrapper = (_a) => {
|
|
|
790
868
|
"additionalFields",
|
|
791
869
|
"tooltipHeader",
|
|
792
870
|
"map",
|
|
793
|
-
"isChoroplethTooltipOpen",
|
|
794
871
|
"children",
|
|
795
|
-
"showCoordinates"
|
|
872
|
+
"showCoordinates",
|
|
873
|
+
"stylesManagedExternally",
|
|
874
|
+
"customMarkerId"
|
|
796
875
|
]);
|
|
797
876
|
const container = react_exports.useRef();
|
|
798
877
|
const marker = react_exports.useRef();
|
|
799
878
|
const [isTooltipOpen, setTooltipOpenStatus] = react_exports.useState(false);
|
|
800
|
-
const
|
|
801
|
-
|
|
802
|
-
|
|
879
|
+
const [isFocused, setIsFocused] = react_exports.useState(false);
|
|
880
|
+
const [isHovered, setIsHovered] = react_exports.useState(false);
|
|
881
|
+
const [isPopoverHovered, setIsPopoverHovered] = react_exports.useState(false);
|
|
882
|
+
const tooltipId = react_exports.useMemo(() => (0, id_exports.createDOMID)(), []);
|
|
883
|
+
const pendingMoveEndHandler = react_exports.useRef(null);
|
|
884
|
+
const closeTimeoutRef = react_exports.useRef(null);
|
|
885
|
+
const generatedMarkerId = react_exports.useMemo(() => (0, id_exports.createDOMID)(), []);
|
|
886
|
+
const markerId = customMarkerId || generatedMarkerId;
|
|
887
|
+
const { activeTooltipId, setActiveTooltipId } = useMapContext();
|
|
888
|
+
const mapMoveHandlerRef = react_exports.useRef(null);
|
|
889
|
+
const openTooltip = react_exports.useCallback(() => {
|
|
890
|
+
setActiveTooltipId(markerId);
|
|
891
|
+
setTooltipOpenStatus(true);
|
|
892
|
+
}, [markerId, setActiveTooltipId]);
|
|
893
|
+
const cleanupPendingMoveEnd = react_exports.useCallback(() => {
|
|
894
|
+
if (pendingMoveEndHandler.current && map.current && typeof map.current.off === "function") {
|
|
895
|
+
map.current.off("moveend", pendingMoveEndHandler.current);
|
|
896
|
+
pendingMoveEndHandler.current = null;
|
|
897
|
+
}
|
|
898
|
+
}, [map]);
|
|
899
|
+
const cleanupMapMoveHandler = react_exports.useCallback(() => {
|
|
900
|
+
if (mapMoveHandlerRef.current && map.current && typeof map.current.off === "function") {
|
|
901
|
+
map.current.off("move", mapMoveHandlerRef.current);
|
|
902
|
+
mapMoveHandlerRef.current = null;
|
|
903
|
+
}
|
|
904
|
+
}, [map]);
|
|
905
|
+
const shouldCloseTooltip = react_exports.useCallback(
|
|
906
|
+
(focused, hovered, popoverHovered) => {
|
|
907
|
+
return !focused && !hovered && !popoverHovered;
|
|
908
|
+
},
|
|
909
|
+
[]
|
|
803
910
|
);
|
|
804
|
-
const
|
|
805
|
-
|
|
911
|
+
const cancelCloseTimeout = react_exports.useCallback(() => {
|
|
912
|
+
if (closeTimeoutRef.current) {
|
|
913
|
+
clearTimeout(closeTimeoutRef.current);
|
|
914
|
+
closeTimeoutRef.current = null;
|
|
915
|
+
}
|
|
916
|
+
}, []);
|
|
917
|
+
const closeTooltipIfShould = react_exports.useCallback(
|
|
918
|
+
(focused, hovered, popoverHovered) => {
|
|
919
|
+
cancelCloseTimeout();
|
|
920
|
+
if (shouldCloseTooltip(focused, hovered, popoverHovered)) {
|
|
921
|
+
closeTimeoutRef.current = setTimeout(() => {
|
|
922
|
+
setTooltipOpenStatus(false);
|
|
923
|
+
setActiveTooltipId((currentId) => currentId === markerId ? null : currentId);
|
|
924
|
+
closeTimeoutRef.current = null;
|
|
925
|
+
}, 100);
|
|
926
|
+
}
|
|
927
|
+
},
|
|
928
|
+
[shouldCloseTooltip, markerId, setActiveTooltipId, cancelCloseTimeout]
|
|
929
|
+
);
|
|
930
|
+
const handleMouseEnter = react_exports.useCallback(() => {
|
|
931
|
+
cancelCloseTimeout();
|
|
932
|
+
setIsHovered(true);
|
|
933
|
+
openTooltip();
|
|
934
|
+
}, [openTooltip, cancelCloseTimeout]);
|
|
935
|
+
const handleMouseLeave = react_exports.useCallback(() => {
|
|
936
|
+
setIsHovered(false);
|
|
937
|
+
closeTooltipIfShould(isFocused, false, isPopoverHovered);
|
|
938
|
+
}, [isFocused, isPopoverHovered, closeTooltipIfShould]);
|
|
939
|
+
const handlePopoverMouseEnter = react_exports.useCallback(() => {
|
|
940
|
+
cancelCloseTimeout();
|
|
941
|
+
setIsPopoverHovered(true);
|
|
942
|
+
}, [cancelCloseTimeout]);
|
|
943
|
+
const handlePopoverMouseLeave = react_exports.useCallback(() => {
|
|
944
|
+
setIsPopoverHovered(false);
|
|
945
|
+
closeTooltipIfShould(isFocused, isHovered, false);
|
|
946
|
+
}, [isFocused, isHovered, closeTooltipIfShould]);
|
|
947
|
+
const handleBlur = react_exports.useCallback(() => {
|
|
948
|
+
setIsFocused(false);
|
|
949
|
+
cleanupPendingMoveEnd();
|
|
950
|
+
closeTooltipIfShould(false, isHovered, isPopoverHovered);
|
|
951
|
+
}, [isHovered, isPopoverHovered, cleanupPendingMoveEnd, closeTooltipIfShould]);
|
|
952
|
+
const handleEscapeKey = react_exports.useCallback(
|
|
953
|
+
(e) => {
|
|
954
|
+
if (e.key === "Escape" && activeTooltipId === markerId) {
|
|
955
|
+
cancelCloseTimeout();
|
|
956
|
+
setIsFocused(false);
|
|
957
|
+
setIsHovered(false);
|
|
958
|
+
setIsPopoverHovered(false);
|
|
959
|
+
cleanupPendingMoveEnd();
|
|
960
|
+
setTooltipOpenStatus(false);
|
|
961
|
+
setActiveTooltipId(null);
|
|
962
|
+
}
|
|
963
|
+
},
|
|
964
|
+
[activeTooltipId, markerId, cleanupPendingMoveEnd, setActiveTooltipId, cancelCloseTimeout]
|
|
965
|
+
);
|
|
966
|
+
const handleFocus = react_exports.useCallback(() => {
|
|
967
|
+
cleanupPendingMoveEnd();
|
|
968
|
+
if (map.current && longitude !== void 0 && latitude !== void 0 && typeof map.current.once === "function") {
|
|
969
|
+
const bounds = map.current.getBounds();
|
|
970
|
+
if (!bounds.contains([longitude, latitude])) {
|
|
971
|
+
const moveEndHandler = () => {
|
|
972
|
+
pendingMoveEndHandler.current = null;
|
|
973
|
+
setIsFocused(true);
|
|
974
|
+
openTooltip();
|
|
975
|
+
};
|
|
976
|
+
pendingMoveEndHandler.current = moveEndHandler;
|
|
977
|
+
map.current.once("moveend", moveEndHandler);
|
|
978
|
+
map.current.panTo([longitude, latitude]);
|
|
979
|
+
return;
|
|
980
|
+
}
|
|
981
|
+
}
|
|
982
|
+
setIsFocused(true);
|
|
983
|
+
openTooltip();
|
|
984
|
+
}, [openTooltip, map, longitude, latitude, cleanupPendingMoveEnd]);
|
|
806
985
|
const cleanupMarker = react_exports.useCallback(() => {
|
|
807
986
|
if (marker.current) {
|
|
808
987
|
marker.current.remove();
|
|
@@ -823,40 +1002,231 @@ var MarkerWrapper = (_a) => {
|
|
|
823
1002
|
cleanupMarker();
|
|
824
1003
|
}
|
|
825
1004
|
}, [latitude, longitude, map]);
|
|
826
|
-
react_exports.useEffect(() =>
|
|
1005
|
+
react_exports.useEffect(() => {
|
|
1006
|
+
if (isTooltipOpen && activeTooltipId === markerId) {
|
|
1007
|
+
document.addEventListener("keydown", handleEscapeKey);
|
|
1008
|
+
return () => {
|
|
1009
|
+
document.removeEventListener("keydown", handleEscapeKey);
|
|
1010
|
+
};
|
|
1011
|
+
}
|
|
1012
|
+
return void 0;
|
|
1013
|
+
}, [isTooltipOpen, activeTooltipId, markerId, handleEscapeKey]);
|
|
1014
|
+
react_exports.useEffect(() => {
|
|
1015
|
+
if (isTooltipOpen && activeTooltipId !== markerId && activeTooltipId !== null) {
|
|
1016
|
+
setTooltipOpenStatus(false);
|
|
1017
|
+
}
|
|
1018
|
+
}, [activeTooltipId, markerId, isTooltipOpen]);
|
|
1019
|
+
react_exports.useEffect(() => {
|
|
1020
|
+
if (!isTooltipOpen && activeTooltipId === null && (isFocused || isHovered || isPopoverHovered)) {
|
|
1021
|
+
openTooltip();
|
|
1022
|
+
}
|
|
1023
|
+
}, [activeTooltipId, isTooltipOpen, isFocused, isHovered, isPopoverHovered, openTooltip]);
|
|
1024
|
+
react_exports.useEffect(() => {
|
|
1025
|
+
if (!customMarkerId) return;
|
|
1026
|
+
if (activeTooltipId === markerId) {
|
|
1027
|
+
setTooltipOpenStatus(true);
|
|
1028
|
+
} else {
|
|
1029
|
+
setTooltipOpenStatus(false);
|
|
1030
|
+
}
|
|
1031
|
+
}, [customMarkerId, activeTooltipId, markerId]);
|
|
1032
|
+
const [, forceUpdate] = react_exports.useReducer((x) => x + 1, 0);
|
|
1033
|
+
react_exports.useEffect(() => {
|
|
1034
|
+
if (!isTooltipOpen || !map.current || typeof map.current.on !== "function") {
|
|
1035
|
+
return void 0;
|
|
1036
|
+
}
|
|
1037
|
+
let rafId = null;
|
|
1038
|
+
const handleMapMove = () => {
|
|
1039
|
+
if (rafId === null) {
|
|
1040
|
+
rafId = requestAnimationFrame(() => {
|
|
1041
|
+
forceUpdate();
|
|
1042
|
+
rafId = null;
|
|
1043
|
+
});
|
|
1044
|
+
}
|
|
1045
|
+
};
|
|
1046
|
+
mapMoveHandlerRef.current = handleMapMove;
|
|
1047
|
+
map.current.on("move", handleMapMove);
|
|
1048
|
+
return () => {
|
|
1049
|
+
if (rafId !== null) {
|
|
1050
|
+
cancelAnimationFrame(rafId);
|
|
1051
|
+
}
|
|
1052
|
+
cleanupMapMoveHandler();
|
|
1053
|
+
};
|
|
1054
|
+
}, [isTooltipOpen, map, cleanupMapMoveHandler]);
|
|
1055
|
+
react_exports.useEffect(
|
|
1056
|
+
() => () => {
|
|
1057
|
+
cancelCloseTimeout();
|
|
1058
|
+
cleanupPendingMoveEnd();
|
|
1059
|
+
cleanupMapMoveHandler();
|
|
1060
|
+
cleanupMarker();
|
|
1061
|
+
},
|
|
1062
|
+
[cancelCloseTimeout, cleanupPendingMoveEnd, cleanupMapMoveHandler, cleanupMarker]
|
|
1063
|
+
);
|
|
827
1064
|
const filteredAdditionalFields = additionalFields.filter(({ value }) => value && String(value) !== "0");
|
|
828
|
-
const showTooltip = showCoordinates || filteredAdditionalFields.length || areaId && areaValue;
|
|
829
|
-
|
|
1065
|
+
const showTooltip = showCoordinates || filteredAdditionalFields.length || areaId && !Number.isNaN(areaValue);
|
|
1066
|
+
const isTooltipVisible = activeTooltipId === markerId && (isTooltipOpen || customMarkerId !== void 0);
|
|
1067
|
+
const childrenWithTooltipId = react_exports.useMemo(() => {
|
|
1068
|
+
if (!children) return null;
|
|
1069
|
+
if (!react_exports.isValidElement(children)) return children;
|
|
1070
|
+
return react_exports.cloneElement(children, {
|
|
1071
|
+
"aria-describedby": tooltipId
|
|
1072
|
+
});
|
|
1073
|
+
}, [children, tooltipId]);
|
|
1074
|
+
return /* @__PURE__ */ react_exports.createElement("div", null, /* @__PURE__ */ react_exports.createElement(
|
|
830
1075
|
"div",
|
|
831
1076
|
__spreadValues({
|
|
832
|
-
style: {
|
|
833
|
-
visibility: isChoroplethTooltip() ? "hidden" : "visible"
|
|
834
|
-
},
|
|
835
1077
|
ref: container,
|
|
836
1078
|
"data-test": "map-marker",
|
|
837
|
-
|
|
838
|
-
onMouseLeave:
|
|
839
|
-
onFocus:
|
|
840
|
-
onBlur:
|
|
1079
|
+
onMouseEnter: handleMouseEnter,
|
|
1080
|
+
onMouseLeave: handleMouseLeave,
|
|
1081
|
+
onFocus: handleFocus,
|
|
1082
|
+
onBlur: handleBlur
|
|
841
1083
|
}, otherProps),
|
|
842
|
-
|
|
1084
|
+
childrenWithTooltipId
|
|
843
1085
|
), /* @__PURE__ */ react_exports.createElement("div", null, showTooltip && /* @__PURE__ */ react_exports.createElement(
|
|
844
|
-
|
|
1086
|
+
Tooltip_default2,
|
|
845
1087
|
{
|
|
846
|
-
|
|
1088
|
+
id: tooltipId,
|
|
1089
|
+
open: isTooltipVisible,
|
|
847
1090
|
anchor: container.current,
|
|
848
|
-
latitude:
|
|
849
|
-
longitude:
|
|
1091
|
+
latitude: showCoordinates ? latitude : null,
|
|
1092
|
+
longitude: showCoordinates ? longitude : null,
|
|
850
1093
|
areaId,
|
|
851
1094
|
areaValue,
|
|
852
1095
|
additionalFields,
|
|
853
1096
|
showCoordinates,
|
|
854
|
-
tooltipHeader
|
|
1097
|
+
tooltipHeader,
|
|
1098
|
+
stylesManagedExternally,
|
|
1099
|
+
onMouseEnter: handlePopoverMouseEnter,
|
|
1100
|
+
onMouseLeave: handlePopoverMouseLeave
|
|
855
1101
|
}
|
|
856
1102
|
)));
|
|
857
1103
|
};
|
|
858
1104
|
var MarkerWrapper_default = MarkerWrapper;
|
|
859
1105
|
|
|
1106
|
+
// src/Map/PureMap/useRovingTabindex.ts
|
|
1107
|
+
var useRovingTabindex = (map) => {
|
|
1108
|
+
const elementRefsRef = react_exports.useRef(
|
|
1109
|
+
new globalThis.Map()
|
|
1110
|
+
);
|
|
1111
|
+
const focusedIndexRef = react_exports.useRef(0);
|
|
1112
|
+
const moveFocusOnElementRemove = react_exports.useCallback((removedElementIndex) => {
|
|
1113
|
+
const removedElement = elementRefsRef.current.get(removedElementIndex);
|
|
1114
|
+
const wasFocused = (removedElement == null ? void 0 : removedElement.getAttribute("tabindex")) === "0";
|
|
1115
|
+
elementRefsRef.current.delete(removedElementIndex);
|
|
1116
|
+
if (wasFocused) {
|
|
1117
|
+
let replacementIndex = null;
|
|
1118
|
+
const indices = Array.from(elementRefsRef.current.keys()).sort((a, b) => a - b);
|
|
1119
|
+
const nextIndex = indices.find((i) => i > removedElementIndex);
|
|
1120
|
+
if (nextIndex !== void 0) {
|
|
1121
|
+
replacementIndex = nextIndex;
|
|
1122
|
+
} else if (indices.length > 0) {
|
|
1123
|
+
replacementIndex = indices[indices.length - 1];
|
|
1124
|
+
}
|
|
1125
|
+
if (replacementIndex !== null) {
|
|
1126
|
+
focusedIndexRef.current = replacementIndex;
|
|
1127
|
+
const replacementElement = elementRefsRef.current.get(replacementIndex);
|
|
1128
|
+
if (replacementElement) {
|
|
1129
|
+
replacementElement.setAttribute("tabindex", "0");
|
|
1130
|
+
}
|
|
1131
|
+
} else {
|
|
1132
|
+
focusedIndexRef.current = 0;
|
|
1133
|
+
}
|
|
1134
|
+
}
|
|
1135
|
+
}, []);
|
|
1136
|
+
const setElementRef = react_exports.useCallback(
|
|
1137
|
+
(index, element) => {
|
|
1138
|
+
if (element) {
|
|
1139
|
+
const existingElement = elementRefsRef.current.get(index);
|
|
1140
|
+
const hadFocus = (existingElement == null ? void 0 : existingElement.getAttribute("tabindex")) === "0";
|
|
1141
|
+
elementRefsRef.current.set(index, element);
|
|
1142
|
+
if (hadFocus) {
|
|
1143
|
+
element.setAttribute("tabindex", "0");
|
|
1144
|
+
} else {
|
|
1145
|
+
element.setAttribute("tabindex", index === focusedIndexRef.current ? "0" : "-1");
|
|
1146
|
+
}
|
|
1147
|
+
} else {
|
|
1148
|
+
moveFocusOnElementRemove(index);
|
|
1149
|
+
}
|
|
1150
|
+
},
|
|
1151
|
+
[moveFocusOnElementRemove]
|
|
1152
|
+
);
|
|
1153
|
+
const resolveFocusedIndex = react_exports.useCallback(() => {
|
|
1154
|
+
let currentIndex = focusedIndexRef.current;
|
|
1155
|
+
if (!elementRefsRef.current.has(currentIndex)) {
|
|
1156
|
+
for (const [index, element] of elementRefsRef.current.entries()) {
|
|
1157
|
+
if (element.getAttribute("tabindex") === "0") {
|
|
1158
|
+
currentIndex = index;
|
|
1159
|
+
focusedIndexRef.current = index;
|
|
1160
|
+
break;
|
|
1161
|
+
}
|
|
1162
|
+
}
|
|
1163
|
+
}
|
|
1164
|
+
return currentIndex;
|
|
1165
|
+
}, []);
|
|
1166
|
+
const handleKeyDown = react_exports.useCallback(
|
|
1167
|
+
(e) => {
|
|
1168
|
+
const currentIndex = resolveFocusedIndex();
|
|
1169
|
+
const count = elementRefsRef.current.size;
|
|
1170
|
+
let newIndex;
|
|
1171
|
+
switch (e.key) {
|
|
1172
|
+
case KEYBOARD_KEYS.ARROW_RIGHT:
|
|
1173
|
+
case KEYBOARD_KEYS.ARROW_DOWN:
|
|
1174
|
+
e.preventDefault();
|
|
1175
|
+
newIndex = currentIndex === count - 1 ? 0 : currentIndex + 1;
|
|
1176
|
+
break;
|
|
1177
|
+
case KEYBOARD_KEYS.ARROW_LEFT:
|
|
1178
|
+
case KEYBOARD_KEYS.ARROW_UP:
|
|
1179
|
+
e.preventDefault();
|
|
1180
|
+
newIndex = currentIndex === 0 ? count - 1 : currentIndex - 1;
|
|
1181
|
+
break;
|
|
1182
|
+
case KEYBOARD_KEYS.HOME:
|
|
1183
|
+
e.preventDefault();
|
|
1184
|
+
newIndex = 0;
|
|
1185
|
+
break;
|
|
1186
|
+
case KEYBOARD_KEYS.END:
|
|
1187
|
+
e.preventDefault();
|
|
1188
|
+
newIndex = count - 1;
|
|
1189
|
+
break;
|
|
1190
|
+
default:
|
|
1191
|
+
return;
|
|
1192
|
+
}
|
|
1193
|
+
if (newIndex !== currentIndex) {
|
|
1194
|
+
focusedIndexRef.current = newIndex;
|
|
1195
|
+
const oldElement = elementRefsRef.current.get(currentIndex);
|
|
1196
|
+
const newElement = elementRefsRef.current.get(newIndex);
|
|
1197
|
+
if (oldElement) {
|
|
1198
|
+
oldElement.setAttribute("tabindex", "-1");
|
|
1199
|
+
}
|
|
1200
|
+
if (newElement) {
|
|
1201
|
+
newElement.setAttribute("tabindex", "0");
|
|
1202
|
+
requestAnimationFrame(() => {
|
|
1203
|
+
newElement.focus();
|
|
1204
|
+
});
|
|
1205
|
+
}
|
|
1206
|
+
}
|
|
1207
|
+
},
|
|
1208
|
+
[resolveFocusedIndex]
|
|
1209
|
+
);
|
|
1210
|
+
const handleFocus = react_exports.useCallback(() => {
|
|
1211
|
+
var _a;
|
|
1212
|
+
if ((_a = map.current) == null ? void 0 : _a.keyboard) {
|
|
1213
|
+
map.current.keyboard.disable();
|
|
1214
|
+
}
|
|
1215
|
+
}, [map]);
|
|
1216
|
+
const handleBlur = react_exports.useCallback(() => {
|
|
1217
|
+
var _a;
|
|
1218
|
+
if ((_a = map.current) == null ? void 0 : _a.keyboard) {
|
|
1219
|
+
map.current.keyboard.enable();
|
|
1220
|
+
}
|
|
1221
|
+
}, [map]);
|
|
1222
|
+
return {
|
|
1223
|
+
handleKeyDown,
|
|
1224
|
+
handleFocus,
|
|
1225
|
+
handleBlur,
|
|
1226
|
+
setElementRef
|
|
1227
|
+
};
|
|
1228
|
+
};
|
|
1229
|
+
|
|
860
1230
|
// src/Map/PureMap/BubbleLayer.tsx
|
|
861
1231
|
var GEO_BOUND_PREFIX = "_geo_bounds_";
|
|
862
1232
|
var GEO_LAT_AND_LONG_FIELD = ["_geo_long_field", "_geo_lat_field"];
|
|
@@ -869,21 +1239,51 @@ var PieSegment = react_exports.memo(
|
|
|
869
1239
|
color,
|
|
870
1240
|
themeColor,
|
|
871
1241
|
segmentMetadata,
|
|
872
|
-
handleBubbleClick
|
|
1242
|
+
handleBubbleClick,
|
|
1243
|
+
ariaLabel,
|
|
1244
|
+
"aria-describedby": ariaDescribedBy,
|
|
1245
|
+
onKeyDown,
|
|
1246
|
+
onFocus,
|
|
1247
|
+
onBlur,
|
|
1248
|
+
elementRef,
|
|
1249
|
+
hasEventHandlers
|
|
873
1250
|
}) => {
|
|
874
1251
|
const { name, value } = segmentMetadata != null ? segmentMetadata : {};
|
|
875
|
-
const
|
|
1252
|
+
const handleInteraction = react_exports.useCallback(
|
|
876
1253
|
(e) => {
|
|
1254
|
+
if ("key" in e && e.key !== KEYBOARD_KEYS.ENTER && e.key !== KEYBOARD_KEYS.SPACE) {
|
|
1255
|
+
return;
|
|
1256
|
+
}
|
|
1257
|
+
e.preventDefault();
|
|
877
1258
|
handleBubbleClick(e, name, value);
|
|
878
1259
|
},
|
|
879
1260
|
[name, value, handleBubbleClick]
|
|
880
1261
|
);
|
|
1262
|
+
const handleKeyDown = react_exports.useCallback(
|
|
1263
|
+
(e) => {
|
|
1264
|
+
if (hasEventHandlers && (e.key === KEYBOARD_KEYS.ENTER || e.key === KEYBOARD_KEYS.SPACE)) {
|
|
1265
|
+
handleInteraction(e);
|
|
1266
|
+
}
|
|
1267
|
+
if (onKeyDown) {
|
|
1268
|
+
onKeyDown(e);
|
|
1269
|
+
}
|
|
1270
|
+
},
|
|
1271
|
+
[hasEventHandlers, handleInteraction, onKeyDown]
|
|
1272
|
+
);
|
|
881
1273
|
if (end - start === 1) {
|
|
882
1274
|
return /* @__PURE__ */ react_exports.createElement(
|
|
883
1275
|
BubbleSegment,
|
|
884
1276
|
{
|
|
1277
|
+
$hasEventHandlers: hasEventHandlers,
|
|
1278
|
+
ref: elementRef,
|
|
885
1279
|
as: "circle",
|
|
886
|
-
|
|
1280
|
+
role: hasEventHandlers ? "button" : "graphics-symbol",
|
|
1281
|
+
"aria-label": ariaLabel,
|
|
1282
|
+
"aria-describedby": ariaDescribedBy,
|
|
1283
|
+
onClick: hasEventHandlers ? handleInteraction : void 0,
|
|
1284
|
+
onKeyDown: handleKeyDown,
|
|
1285
|
+
onFocus,
|
|
1286
|
+
onBlur,
|
|
887
1287
|
cx: radius,
|
|
888
1288
|
cy: radius,
|
|
889
1289
|
r: radius,
|
|
@@ -904,8 +1304,16 @@ var PieSegment = react_exports.memo(
|
|
|
904
1304
|
return /* @__PURE__ */ react_exports.createElement(
|
|
905
1305
|
BubbleSegment,
|
|
906
1306
|
{
|
|
1307
|
+
$hasEventHandlers: hasEventHandlers,
|
|
1308
|
+
ref: elementRef,
|
|
907
1309
|
as: "path",
|
|
908
|
-
|
|
1310
|
+
role: hasEventHandlers ? "button" : "graphics-symbol",
|
|
1311
|
+
"aria-label": ariaLabel,
|
|
1312
|
+
"aria-describedby": ariaDescribedBy,
|
|
1313
|
+
onClick: hasEventHandlers ? handleInteraction : void 0,
|
|
1314
|
+
onKeyDown: handleKeyDown,
|
|
1315
|
+
onFocus,
|
|
1316
|
+
onBlur,
|
|
909
1317
|
d: `M ${radius} ${radius} L ${radius + radius * x0} ${radius + radius * y0} A ${radius} ${radius} 0 ${arc} 1 ${radius + radius * x1} ${radius + radius * y1} L ${radius} ${radius} A 0 0 0 ${arc} 0 ${radius} ${radius}`,
|
|
910
1318
|
fill: color,
|
|
911
1319
|
fillOpacity: 0.8,
|
|
@@ -916,18 +1324,126 @@ var PieSegment = react_exports.memo(
|
|
|
916
1324
|
);
|
|
917
1325
|
}
|
|
918
1326
|
);
|
|
919
|
-
PieSegment.displayName = "MapBubblePieSegment";
|
|
920
|
-
var BubbleSegment = styled_components_default.path`
|
|
921
|
-
transition: 0.2s ease-in-out;
|
|
922
|
-
transition-property: fill, stroke;
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
}
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
1327
|
+
PieSegment.displayName = "MapBubblePieSegment";
|
|
1328
|
+
var BubbleSegment = styled_components_default.path`
|
|
1329
|
+
transition: 0.2s ease-in-out;
|
|
1330
|
+
transition-property: fill, stroke;
|
|
1331
|
+
${({ $hasEventHandlers }) => $hasEventHandlers && "cursor: pointer;"}
|
|
1332
|
+
|
|
1333
|
+
&:focus {
|
|
1334
|
+
outline: none;
|
|
1335
|
+
}
|
|
1336
|
+
`;
|
|
1337
|
+
var BUBBLE_SEGMENT_DIMMED_STYLES = {
|
|
1338
|
+
fill: "rgba(150, 150, 150, 0.3)",
|
|
1339
|
+
stroke: "rgba(200, 200, 200, 0.4)"
|
|
1340
|
+
};
|
|
1341
|
+
var BubbleSvg = react_exports.memo(
|
|
1342
|
+
({
|
|
1343
|
+
values,
|
|
1344
|
+
valueRange,
|
|
1345
|
+
tooltipHeader,
|
|
1346
|
+
latitude,
|
|
1347
|
+
longitude,
|
|
1348
|
+
icon,
|
|
1349
|
+
isPie,
|
|
1350
|
+
themeColor,
|
|
1351
|
+
segmentStartIndex,
|
|
1352
|
+
colors,
|
|
1353
|
+
bubbleSize,
|
|
1354
|
+
onClick,
|
|
1355
|
+
"aria-describedby": ariaDescribedBy,
|
|
1356
|
+
onKeyDown,
|
|
1357
|
+
onFocus,
|
|
1358
|
+
onBlur,
|
|
1359
|
+
setElementRef,
|
|
1360
|
+
hasEventHandlers
|
|
1361
|
+
}) => {
|
|
1362
|
+
const featureFlagContext = react_exports.useContext(FeatureFlagContext_default);
|
|
1363
|
+
const isBubbleMapIconFlagEnabled = Boolean(featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableBubbleMapIcon);
|
|
1364
|
+
const total = values.reduce((totalValue, v) => totalValue + v, 0);
|
|
1365
|
+
const radius = matchBubbleSize(valueRange, total);
|
|
1366
|
+
const getAriaLabel = react_exports.useCallback(
|
|
1367
|
+
(segmentName, segmentValue) => {
|
|
1368
|
+
let segmentLabel = (0, i18n_exports._)("Map marker");
|
|
1369
|
+
if (tooltipHeader) {
|
|
1370
|
+
segmentLabel = tooltipHeader;
|
|
1371
|
+
} else if (latitude !== void 0 && longitude !== void 0) {
|
|
1372
|
+
segmentLabel = (0, format_exports.sprintf)((0, i18n_exports._)("Location: %(lat)s, %(lng)s"), {
|
|
1373
|
+
lat: convertDegToDMS(latitude, "latitude"),
|
|
1374
|
+
lng: convertDegToDMS(longitude, "longitude")
|
|
1375
|
+
});
|
|
1376
|
+
}
|
|
1377
|
+
if (segmentName != null && segmentValue != null) {
|
|
1378
|
+
segmentLabel = (0, format_exports.sprintf)((0, i18n_exports._)("%(locationLabel)s, %(segmentName)s: %(segmentValue)s"), {
|
|
1379
|
+
locationLabel: segmentLabel,
|
|
1380
|
+
segmentName,
|
|
1381
|
+
segmentValue: segmentValue.toString()
|
|
1382
|
+
});
|
|
1383
|
+
}
|
|
1384
|
+
if (hasEventHandlers) {
|
|
1385
|
+
segmentLabel = (0, format_exports.sprintf)((0, i18n_exports._)("%(label)s, Click for drilldown"), { label: segmentLabel });
|
|
1386
|
+
}
|
|
1387
|
+
return segmentLabel;
|
|
1388
|
+
},
|
|
1389
|
+
[tooltipHeader, latitude, longitude, hasEventHandlers]
|
|
1390
|
+
);
|
|
1391
|
+
const offsets = [];
|
|
1392
|
+
let runningTotal = 0;
|
|
1393
|
+
values.forEach((count) => {
|
|
1394
|
+
offsets.push(runningTotal);
|
|
1395
|
+
runningTotal += count;
|
|
1396
|
+
});
|
|
1397
|
+
const width = radius * 2;
|
|
1398
|
+
const showIcon = isBubbleMapIconFlagEnabled && radius >= ICON_DISPLAY_CUTOFF && icon && ((0, iconUtils_exports.isRemoteIcon)(icon) || (0, iconUtils_exports.isDataURI)(icon));
|
|
1399
|
+
return /* @__PURE__ */ react_exports.createElement("svg", { width, height: width, viewBox: `-3 -3 ${width + 6} ${width + 6}` }, isPie && /* @__PURE__ */ react_exports.createElement(
|
|
1400
|
+
"circle",
|
|
1401
|
+
{
|
|
1402
|
+
cx: radius,
|
|
1403
|
+
cy: radius,
|
|
1404
|
+
r: radius,
|
|
1405
|
+
fill: "none",
|
|
1406
|
+
strokeWidth: 2,
|
|
1407
|
+
stroke: themeColor,
|
|
1408
|
+
strokeOpacity: 0.3
|
|
1409
|
+
}
|
|
1410
|
+
), values.map((v, i) => {
|
|
1411
|
+
var _a, _b;
|
|
1412
|
+
const globalIndex = segmentStartIndex + i;
|
|
1413
|
+
return /* @__PURE__ */ react_exports.createElement(
|
|
1414
|
+
PieSegment,
|
|
1415
|
+
{
|
|
1416
|
+
key: globalIndex,
|
|
1417
|
+
start: offsets[i] / total,
|
|
1418
|
+
end: (offsets[i] + v) / total,
|
|
1419
|
+
radius,
|
|
1420
|
+
color: colors[i],
|
|
1421
|
+
themeColor,
|
|
1422
|
+
segmentMetadata: bubbleSize[i],
|
|
1423
|
+
handleBubbleClick: onClick,
|
|
1424
|
+
ariaLabel: getAriaLabel((_a = bubbleSize[i]) == null ? void 0 : _a.name, (_b = bubbleSize[i]) == null ? void 0 : _b.value),
|
|
1425
|
+
"aria-describedby": ariaDescribedBy,
|
|
1426
|
+
onKeyDown,
|
|
1427
|
+
onFocus,
|
|
1428
|
+
onBlur,
|
|
1429
|
+
elementRef: setElementRef ? (element) => setElementRef(globalIndex, element) : void 0,
|
|
1430
|
+
hasEventHandlers
|
|
1431
|
+
}
|
|
1432
|
+
);
|
|
1433
|
+
}), showIcon && /* @__PURE__ */ react_exports.createElement(
|
|
1434
|
+
"foreignObject",
|
|
1435
|
+
{
|
|
1436
|
+
x: radius - radius * 0.8 / 2,
|
|
1437
|
+
y: radius - radius * 0.8 / 2,
|
|
1438
|
+
width: radius * 0.8,
|
|
1439
|
+
height: radius * 0.8,
|
|
1440
|
+
style: { pointerEvents: "none" },
|
|
1441
|
+
"data-test": "bubble-icon-wrapper"
|
|
1442
|
+
},
|
|
1443
|
+
/* @__PURE__ */ react_exports.createElement(RemoteIcon_default, { iconURL: icon, width: radius * 0.8, height: radius * 0.8 })
|
|
1444
|
+
));
|
|
1445
|
+
}
|
|
1446
|
+
);
|
|
931
1447
|
var Bubble = react_exports.memo(
|
|
932
1448
|
({
|
|
933
1449
|
originalValues,
|
|
@@ -943,10 +1459,15 @@ var Bubble = react_exports.memo(
|
|
|
943
1459
|
map,
|
|
944
1460
|
handleMapClick,
|
|
945
1461
|
icon,
|
|
946
|
-
showCoordinates
|
|
1462
|
+
showCoordinates,
|
|
1463
|
+
stylesManagedExternally,
|
|
1464
|
+
segmentStartIndex = 0,
|
|
1465
|
+
onKeyDown,
|
|
1466
|
+
onFocus,
|
|
1467
|
+
onBlur,
|
|
1468
|
+
setElementRef,
|
|
1469
|
+
hasEventHandlers
|
|
947
1470
|
}) => {
|
|
948
|
-
const featureFlagContext = react_exports.useContext(FeatureFlagContext_default);
|
|
949
|
-
const isBubbleMapIconFlagEnabled = Boolean(featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableBubbleMapIcon);
|
|
950
1471
|
const onBubbleClick = react_exports.useCallback(
|
|
951
1472
|
(e, name, value) => {
|
|
952
1473
|
handleMapClick(e, name, value);
|
|
@@ -956,58 +1477,9 @@ var Bubble = react_exports.memo(
|
|
|
956
1477
|
);
|
|
957
1478
|
const allZeros = originalValues.every((v) => v === 0);
|
|
958
1479
|
const values = originalValues.map((v) => v > 0 ? v : 0);
|
|
959
|
-
|
|
960
|
-
const radius = matchBubbleSize(valueRange, total);
|
|
961
|
-
const bubble = react_exports.useMemo(() => {
|
|
962
|
-
if (allZeros || !originalValues.length) return null;
|
|
963
|
-
const offsets = [];
|
|
964
|
-
let runningTotal = 0;
|
|
965
|
-
values.forEach((count) => {
|
|
966
|
-
offsets.push(runningTotal);
|
|
967
|
-
runningTotal += count;
|
|
968
|
-
});
|
|
969
|
-
const width = radius * 2;
|
|
970
|
-
return /* @__PURE__ */ react_exports.createElement("svg", { width, height: width, viewBox: `-3 -3 ${width + 6} ${width + 6}` }, isPie && /* @__PURE__ */ react_exports.createElement(
|
|
971
|
-
"circle",
|
|
972
|
-
{
|
|
973
|
-
cx: radius,
|
|
974
|
-
cy: radius,
|
|
975
|
-
r: radius,
|
|
976
|
-
fill: "none",
|
|
977
|
-
strokeWidth: 2,
|
|
978
|
-
stroke: themeColor,
|
|
979
|
-
strokeOpacity: 0.3
|
|
980
|
-
}
|
|
981
|
-
), values.map((v, i) => /* @__PURE__ */ react_exports.createElement(
|
|
982
|
-
PieSegment,
|
|
983
|
-
{
|
|
984
|
-
key: (0, id_exports.createDOMID)(),
|
|
985
|
-
start: offsets[i] / total,
|
|
986
|
-
end: (offsets[i] + v) / total,
|
|
987
|
-
radius,
|
|
988
|
-
color: colors[i],
|
|
989
|
-
themeColor,
|
|
990
|
-
segmentMetadata: bubbleSize[i],
|
|
991
|
-
handleBubbleClick: onBubbleClick
|
|
992
|
-
}
|
|
993
|
-
)));
|
|
994
|
-
}, [
|
|
995
|
-
bubbleSize,
|
|
996
|
-
colors,
|
|
997
|
-
isPie,
|
|
998
|
-
onBubbleClick,
|
|
999
|
-
originalValues,
|
|
1000
|
-
themeColor,
|
|
1001
|
-
allZeros,
|
|
1002
|
-
radius,
|
|
1003
|
-
total,
|
|
1004
|
-
values
|
|
1005
|
-
]);
|
|
1006
|
-
if (!bubble) {
|
|
1007
|
-
return null;
|
|
1008
|
-
}
|
|
1480
|
+
if (allZeros || !originalValues.length) return null;
|
|
1009
1481
|
return /* @__PURE__ */ react_exports.createElement(
|
|
1010
|
-
|
|
1482
|
+
MarkerWrapper_default,
|
|
1011
1483
|
{
|
|
1012
1484
|
longitude,
|
|
1013
1485
|
latitude,
|
|
@@ -1015,29 +1487,46 @@ var Bubble = react_exports.memo(
|
|
|
1015
1487
|
tooltipHeader,
|
|
1016
1488
|
map,
|
|
1017
1489
|
"data-test-type": "bubble",
|
|
1018
|
-
showCoordinates
|
|
1490
|
+
showCoordinates,
|
|
1491
|
+
stylesManagedExternally
|
|
1019
1492
|
},
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
"div",
|
|
1493
|
+
/* @__PURE__ */ react_exports.createElement(
|
|
1494
|
+
BubbleSvg,
|
|
1023
1495
|
{
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1496
|
+
values,
|
|
1497
|
+
valueRange,
|
|
1498
|
+
colors,
|
|
1499
|
+
bubbleSize,
|
|
1500
|
+
isPie,
|
|
1501
|
+
themeColor,
|
|
1502
|
+
segmentStartIndex,
|
|
1503
|
+
latitude,
|
|
1504
|
+
longitude,
|
|
1505
|
+
tooltipHeader,
|
|
1506
|
+
icon,
|
|
1507
|
+
onClick: onBubbleClick,
|
|
1508
|
+
onKeyDown,
|
|
1509
|
+
onFocus,
|
|
1510
|
+
onBlur,
|
|
1511
|
+
setElementRef,
|
|
1512
|
+
hasEventHandlers
|
|
1513
|
+
}
|
|
1034
1514
|
)
|
|
1035
1515
|
);
|
|
1036
1516
|
}
|
|
1037
1517
|
);
|
|
1038
1518
|
Bubble.displayName = "MapBubble";
|
|
1039
1519
|
var BubbleLayer = (props) => {
|
|
1040
|
-
const {
|
|
1520
|
+
const {
|
|
1521
|
+
bubbleLayer,
|
|
1522
|
+
themeColorScheme,
|
|
1523
|
+
map,
|
|
1524
|
+
zoom,
|
|
1525
|
+
onMapClick,
|
|
1526
|
+
showCoordinates,
|
|
1527
|
+
stylesManagedExternally = false,
|
|
1528
|
+
hasEventHandlers
|
|
1529
|
+
} = props;
|
|
1041
1530
|
bubbleLayer.seriesColors = bubbleLayer.seriesColors || DEFAULT_SERIES_COLORS;
|
|
1042
1531
|
bubbleLayer.bubbleSize = bubbleLayer.bubbleSize || [];
|
|
1043
1532
|
bubbleLayer.icon = bubbleLayer.icon || [];
|
|
@@ -1077,7 +1566,15 @@ var BubbleLayer = (props) => {
|
|
|
1077
1566
|
},
|
|
1078
1567
|
[dataToRender, onMapClick]
|
|
1079
1568
|
);
|
|
1569
|
+
const { handleKeyDown, handleFocus, handleBlur, setElementRef } = useRovingTabindex(map);
|
|
1570
|
+
let globalSegmentIndex = 0;
|
|
1080
1571
|
return /* @__PURE__ */ react_exports.createElement(react_exports.Fragment, null, dataToRender.map((datum, i) => {
|
|
1572
|
+
const allZeros = datum.data.values.every((v) => v === 0);
|
|
1573
|
+
const segmentStartIndex = globalSegmentIndex;
|
|
1574
|
+
const segmentCount = datum.data.values.length;
|
|
1575
|
+
if (!allZeros) {
|
|
1576
|
+
globalSegmentIndex += segmentCount;
|
|
1577
|
+
}
|
|
1081
1578
|
const colors = dynamicColors ? [
|
|
1082
1579
|
dataToRender.map(
|
|
1083
1580
|
(obj) => (0, colorUtils_exports.isColor)(dynamicColors[obj.idx]) ? dynamicColors[obj.idx] : DEFAULT_CLUSTER_COLOR
|
|
@@ -1115,7 +1612,14 @@ var BubbleLayer = (props) => {
|
|
|
1115
1612
|
map,
|
|
1116
1613
|
handleMapClick: (e, name, value) => handleMapClick(e, name, value, i),
|
|
1117
1614
|
icon: bubbleLayer.icon[datum.idx],
|
|
1118
|
-
showCoordinates
|
|
1615
|
+
showCoordinates,
|
|
1616
|
+
stylesManagedExternally,
|
|
1617
|
+
segmentStartIndex,
|
|
1618
|
+
onKeyDown: handleKeyDown,
|
|
1619
|
+
onFocus: handleFocus,
|
|
1620
|
+
onBlur: handleBlur,
|
|
1621
|
+
setElementRef,
|
|
1622
|
+
hasEventHandlers
|
|
1119
1623
|
}
|
|
1120
1624
|
);
|
|
1121
1625
|
}));
|
|
@@ -1138,37 +1642,6 @@ var PureMapContainer = styled_components_default.div.attrs({
|
|
|
1138
1642
|
z-index: 0;
|
|
1139
1643
|
}
|
|
1140
1644
|
|
|
1141
|
-
// overwrite maplibregl zoom control styles
|
|
1142
|
-
.maplibregl-ctrl-top-left {
|
|
1143
|
-
display: ${(props) => props.showZoomControls ? "block" : "none"};
|
|
1144
|
-
position: absolute;
|
|
1145
|
-
top: 12px;
|
|
1146
|
-
left: 16px;
|
|
1147
|
-
.maplibregl-ctrl-group {
|
|
1148
|
-
width: 40px !important;
|
|
1149
|
-
height: 87px !important;
|
|
1150
|
-
border-radius: 4px;
|
|
1151
|
-
margin: 8px 0px;
|
|
1152
|
-
background-color: ${(props) => props.controlBackgroundColor};
|
|
1153
|
-
box-shadow:
|
|
1154
|
-
0px 26px 103px rgba(0, 0, 0, 0.64),
|
|
1155
|
-
0px 11px 18px rgba(0, 0, 0, 0.32),
|
|
1156
|
-
0px 3px 6px rgba(0, 0, 0, 0.3);
|
|
1157
|
-
& button {
|
|
1158
|
-
width: 40px;
|
|
1159
|
-
height: 43px;
|
|
1160
|
-
border-top: 0;
|
|
1161
|
-
}
|
|
1162
|
-
.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon {
|
|
1163
|
-
background-image: url('data:image/svg+xml;charset=UTF-8,<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M9 1C9 0.447715 8.55229 0 8 0C7.44772 0 7 0.447715 7 1V7H1C0.447715 7 0 7.44772 0 8C0 8.55229 0.447715 9 1 9H7V15C7 15.5523 7.44772 16 8 16C8.55229 16 9 15.5523 9 15V9H15C15.5523 9 16 8.55229 16 8C16 7.44772 15.5523 7 15 7H9V1Z" fill="${(props) => props.controlIconColorEncoded.color}" fill-opacity="${(props) => props.controlIconColorEncoded.opacity}" /></svg>');
|
|
1164
|
-
}
|
|
1165
|
-
|
|
1166
|
-
.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon {
|
|
1167
|
-
background-image: url('data:image/svg+xml;charset=UTF-8,<svg width="14" height="3" viewBox="0 0 14 3" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M0 1.99707C0 1.44479 0.447715 0.99707 1 0.99707H13C13.5523 0.99707 14 1.44479 14 1.99707C14 2.54936 13.5523 2.99707 13 2.99707H1C0.447715 2.99707 0 2.54936 0 1.99707Z" fill="${(props) => props.controlIconColorEncoded.color}" fill-opacity="${(props) => props.controlIconColorEncoded.opacity}" /></svg>');
|
|
1168
|
-
}
|
|
1169
|
-
}
|
|
1170
|
-
}
|
|
1171
|
-
|
|
1172
1645
|
// overwrite maplibregl scale styles
|
|
1173
1646
|
.maplibregl-ctrl-bottom-left {
|
|
1174
1647
|
display: ${(props) => props.showScale ? "block" : "none"};
|
|
@@ -1201,7 +1674,8 @@ var PureMapContainer = styled_components_default.div.attrs({
|
|
|
1201
1674
|
}
|
|
1202
1675
|
}
|
|
1203
1676
|
|
|
1204
|
-
|
|
1677
|
+
/* When a segment is hovered/focused, dim other segments */
|
|
1678
|
+
:has(${BubbleSegment}:is(:focus-visible, :hover)) ${BubbleSegment}:not(:is(:focus-visible, :hover)) {
|
|
1205
1679
|
fill: ${BUBBLE_SEGMENT_DIMMED_STYLES.fill};
|
|
1206
1680
|
stroke: ${BUBBLE_SEGMENT_DIMMED_STYLES.stroke};
|
|
1207
1681
|
}
|
|
@@ -1209,29 +1683,92 @@ var PureMapContainer = styled_components_default.div.attrs({
|
|
|
1209
1683
|
var PureMapContainer_default = PureMapContainer;
|
|
1210
1684
|
|
|
1211
1685
|
// src/Map/PureMap/MarkerLayer.tsx
|
|
1686
|
+
var svgFocusStyle = styled_components_exports.css`
|
|
1687
|
+
&:focus {
|
|
1688
|
+
outline: none;
|
|
1689
|
+
filter: drop-shadow(2px 0px 1px ${themes_exports.variables.focusColor})
|
|
1690
|
+
drop-shadow(-2px 0px 1px ${themes_exports.variables.focusColor}) drop-shadow(0px 2px 1px ${themes_exports.variables.focusColor})
|
|
1691
|
+
drop-shadow(0px -2px 1px ${themes_exports.variables.focusColor});
|
|
1692
|
+
}
|
|
1693
|
+
`;
|
|
1694
|
+
var FocusableSvg = styled_components_default.svg`
|
|
1695
|
+
${({ $hasEventHandlers }) => $hasEventHandlers && "cursor: pointer;"}
|
|
1696
|
+
${svgFocusStyle}
|
|
1697
|
+
`;
|
|
1212
1698
|
var MarkerIcon = (_a) => {
|
|
1213
|
-
var _b = _a, {
|
|
1699
|
+
var _b = _a, {
|
|
1700
|
+
theme,
|
|
1701
|
+
color,
|
|
1702
|
+
ariaLabel,
|
|
1703
|
+
"aria-describedby": ariaDescribedby,
|
|
1704
|
+
onInteraction,
|
|
1705
|
+
onKeyDown: onKeyDownProp,
|
|
1706
|
+
onFocus,
|
|
1707
|
+
onBlur,
|
|
1708
|
+
elementRef,
|
|
1709
|
+
hasEventHandlers
|
|
1710
|
+
} = _b, otherProps = __objRest(_b, [
|
|
1711
|
+
"theme",
|
|
1712
|
+
"color",
|
|
1713
|
+
"ariaLabel",
|
|
1714
|
+
"aria-describedby",
|
|
1715
|
+
"onInteraction",
|
|
1716
|
+
"onKeyDown",
|
|
1717
|
+
"onFocus",
|
|
1718
|
+
"onBlur",
|
|
1719
|
+
"elementRef",
|
|
1720
|
+
"hasEventHandlers"
|
|
1721
|
+
]);
|
|
1214
1722
|
const strokeOpacity = theme === "light" ? 0.7 : 0.15;
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1723
|
+
const handleKeyDown = react_exports.useCallback(
|
|
1724
|
+
(e) => {
|
|
1725
|
+
if (hasEventHandlers && (e.key === KEYBOARD_KEYS.ENTER || e.key === KEYBOARD_KEYS.SPACE)) {
|
|
1726
|
+
e.preventDefault();
|
|
1727
|
+
onInteraction == null ? void 0 : onInteraction(e);
|
|
1728
|
+
}
|
|
1729
|
+
onKeyDownProp == null ? void 0 : onKeyDownProp(e);
|
|
1730
|
+
},
|
|
1731
|
+
[hasEventHandlers, onInteraction, onKeyDownProp]
|
|
1732
|
+
);
|
|
1733
|
+
return /* @__PURE__ */ react_exports.createElement(
|
|
1734
|
+
FocusableSvg,
|
|
1735
|
+
__spreadValues({
|
|
1736
|
+
$hasEventHandlers: hasEventHandlers,
|
|
1737
|
+
ref: elementRef,
|
|
1738
|
+
width: 22,
|
|
1739
|
+
height: 28,
|
|
1740
|
+
fill: "none",
|
|
1741
|
+
role: hasEventHandlers ? "button" : "graphics-symbol",
|
|
1742
|
+
"aria-label": ariaLabel,
|
|
1743
|
+
"aria-describedby": ariaDescribedby,
|
|
1744
|
+
onClick: hasEventHandlers ? onInteraction : void 0,
|
|
1745
|
+
onKeyDown: handleKeyDown,
|
|
1746
|
+
onFocus,
|
|
1747
|
+
onBlur
|
|
1748
|
+
}, otherProps),
|
|
1749
|
+
/* @__PURE__ */ react_exports.createElement(
|
|
1750
|
+
"path",
|
|
1751
|
+
{
|
|
1752
|
+
d: "M11 .5C5.201.5.5 5.201.5 11c0 3.136 1.376 5.952 3.555 7.875 2.839 2.506 4.144 4.58 4.893 6.02.183.35.334.665.469.946l.014.03c.136.285.263.548.387.766.235.412.571.863 1.182.863.61 0 .947-.45 1.182-.863.124-.218.25-.48.387-.765l.014-.03c.135-.282.286-.597.469-.947.75-1.44 2.054-3.514 4.893-6.02A10.476 10.476 0 0 0 21.5 11C21.5 5.201 16.799.5 11 .5Z",
|
|
1753
|
+
fill: color
|
|
1754
|
+
}
|
|
1755
|
+
),
|
|
1756
|
+
/* @__PURE__ */ react_exports.createElement(
|
|
1757
|
+
"path",
|
|
1758
|
+
{
|
|
1759
|
+
d: "M11 .5C5.201.5.5 5.201.5 11c0 3.136 1.376 5.952 3.555 7.875 2.839 2.506 4.144 4.58 4.893 6.02.183.35.334.665.469.946l.014.03c.136.285.263.548.387.766.235.412.571.863 1.182.863.61 0 .947-.45 1.182-.863.124-.218.25-.48.387-.765l.014-.03c.135-.282.286-.597.469-.947.75-1.44 2.054-3.514 4.893-6.02A10.476 10.476 0 0 0 21.5 11C21.5 5.201 16.799.5 11 .5Z",
|
|
1760
|
+
stroke: "#08090A"
|
|
1761
|
+
}
|
|
1762
|
+
),
|
|
1763
|
+
/* @__PURE__ */ react_exports.createElement(
|
|
1764
|
+
"path",
|
|
1765
|
+
{
|
|
1766
|
+
d: "M11 .5C5.201.5.5 5.201.5 11c0 3.136 1.376 5.952 3.555 7.875 2.839 2.506 4.144 4.58 4.893 6.02.183.35.334.665.469.946l.014.03c.136.285.263.548.387.766.235.412.571.863 1.182.863.61 0 .947-.45 1.182-.863.124-.218.25-.48.387-.765l.014-.03c.135-.282.286-.597.469-.947.75-1.44 2.054-3.514 4.893-6.02A10.476 10.476 0 0 0 21.5 11C21.5 5.201 16.799.5 11 .5Z",
|
|
1767
|
+
stroke: color,
|
|
1768
|
+
strokeOpacity
|
|
1769
|
+
}
|
|
1770
|
+
)
|
|
1771
|
+
);
|
|
1235
1772
|
};
|
|
1236
1773
|
var Marker2 = react_exports.memo(
|
|
1237
1774
|
({
|
|
@@ -1243,14 +1780,58 @@ var Marker2 = react_exports.memo(
|
|
|
1243
1780
|
additionalFields,
|
|
1244
1781
|
handleLayerClick,
|
|
1245
1782
|
showCoordinates,
|
|
1246
|
-
tooltipHeader
|
|
1783
|
+
tooltipHeader,
|
|
1784
|
+
stylesManagedExternally,
|
|
1785
|
+
onKeyDown,
|
|
1786
|
+
onFocus,
|
|
1787
|
+
onBlur,
|
|
1788
|
+
elementRef,
|
|
1789
|
+
hasEventHandlers
|
|
1247
1790
|
}) => {
|
|
1791
|
+
const ariaLabel = react_exports.useMemo(() => {
|
|
1792
|
+
let markerLabel = (0, i18n_exports._)("Map marker");
|
|
1793
|
+
if (tooltipHeader) {
|
|
1794
|
+
markerLabel = tooltipHeader;
|
|
1795
|
+
} else if (latitude !== void 0 && longitude !== void 0) {
|
|
1796
|
+
markerLabel = (0, format_exports.sprintf)((0, i18n_exports._)("Location: %(lat)s, %(lng)s"), {
|
|
1797
|
+
lat: convertDegToDMS(latitude, "latitude"),
|
|
1798
|
+
lng: convertDegToDMS(longitude, "longitude")
|
|
1799
|
+
});
|
|
1800
|
+
}
|
|
1801
|
+
if (hasEventHandlers) {
|
|
1802
|
+
markerLabel = (0, format_exports.sprintf)((0, i18n_exports._)("%(label)s, Click for drilldown"), { label: markerLabel });
|
|
1803
|
+
}
|
|
1804
|
+
return markerLabel;
|
|
1805
|
+
}, [tooltipHeader, latitude, longitude, hasEventHandlers]);
|
|
1248
1806
|
const icon = react_exports.useMemo(
|
|
1249
|
-
() => /* @__PURE__ */ react_exports.createElement(
|
|
1250
|
-
|
|
1807
|
+
() => /* @__PURE__ */ react_exports.createElement(
|
|
1808
|
+
MarkerIcon,
|
|
1809
|
+
{
|
|
1810
|
+
color,
|
|
1811
|
+
theme: themeColorScheme,
|
|
1812
|
+
ariaLabel,
|
|
1813
|
+
onInteraction: handleLayerClick,
|
|
1814
|
+
onKeyDown,
|
|
1815
|
+
onFocus,
|
|
1816
|
+
onBlur,
|
|
1817
|
+
elementRef,
|
|
1818
|
+
hasEventHandlers
|
|
1819
|
+
}
|
|
1820
|
+
),
|
|
1821
|
+
[
|
|
1822
|
+
color,
|
|
1823
|
+
handleLayerClick,
|
|
1824
|
+
themeColorScheme,
|
|
1825
|
+
ariaLabel,
|
|
1826
|
+
onKeyDown,
|
|
1827
|
+
onFocus,
|
|
1828
|
+
onBlur,
|
|
1829
|
+
elementRef,
|
|
1830
|
+
hasEventHandlers
|
|
1831
|
+
]
|
|
1251
1832
|
);
|
|
1252
1833
|
return /* @__PURE__ */ react_exports.createElement(
|
|
1253
|
-
|
|
1834
|
+
StyledMarkerWrapper,
|
|
1254
1835
|
{
|
|
1255
1836
|
latitude,
|
|
1256
1837
|
longitude,
|
|
@@ -1258,14 +1839,15 @@ var Marker2 = react_exports.memo(
|
|
|
1258
1839
|
additionalFields,
|
|
1259
1840
|
"data-test-type": "marker",
|
|
1260
1841
|
showCoordinates,
|
|
1261
|
-
tooltipHeader
|
|
1842
|
+
tooltipHeader,
|
|
1843
|
+
stylesManagedExternally
|
|
1262
1844
|
},
|
|
1263
1845
|
icon
|
|
1264
1846
|
);
|
|
1265
1847
|
}
|
|
1266
1848
|
);
|
|
1267
1849
|
Marker2.displayName = "MapMarker";
|
|
1268
|
-
var
|
|
1850
|
+
var StyledMarkerWrapper = styled_components_default(MarkerWrapper_default)`
|
|
1269
1851
|
width: 22px;
|
|
1270
1852
|
height: 28px;
|
|
1271
1853
|
cursor: pointer;
|
|
@@ -1313,12 +1895,21 @@ var generateMarkerWrapperProps = (markerLayer, showCoordinates, onMapClick = lod
|
|
|
1313
1895
|
return markerProps;
|
|
1314
1896
|
};
|
|
1315
1897
|
var MarkerLayer = (props) => {
|
|
1316
|
-
const {
|
|
1898
|
+
const {
|
|
1899
|
+
map,
|
|
1900
|
+
themeColorScheme,
|
|
1901
|
+
markerLayer,
|
|
1902
|
+
onMapClick,
|
|
1903
|
+
showCoordinates = true,
|
|
1904
|
+
stylesManagedExternally = false,
|
|
1905
|
+
hasEventHandlers
|
|
1906
|
+
} = props;
|
|
1317
1907
|
markerLayer.seriesColors = markerLayer.seriesColors || DEFAULT_SERIES_COLORS;
|
|
1318
1908
|
const markerPropsList = react_exports.useMemo(
|
|
1319
1909
|
() => generateMarkerWrapperProps(markerLayer, showCoordinates, onMapClick),
|
|
1320
1910
|
[markerLayer, onMapClick, showCoordinates]
|
|
1321
1911
|
);
|
|
1912
|
+
const { handleKeyDown, handleFocus, handleBlur, setElementRef } = useRovingTabindex(map);
|
|
1322
1913
|
return /* @__PURE__ */ react_exports.createElement(react_exports.Fragment, null, markerPropsList.map((markerProps, i) => /* @__PURE__ */ react_exports.createElement(
|
|
1323
1914
|
Marker2,
|
|
1324
1915
|
__spreadProps(__spreadValues({
|
|
@@ -1326,7 +1917,13 @@ var MarkerLayer = (props) => {
|
|
|
1326
1917
|
themeColorScheme,
|
|
1327
1918
|
map
|
|
1328
1919
|
}, markerProps), {
|
|
1329
|
-
showCoordinates
|
|
1920
|
+
showCoordinates,
|
|
1921
|
+
stylesManagedExternally,
|
|
1922
|
+
onKeyDown: handleKeyDown,
|
|
1923
|
+
onFocus: handleFocus,
|
|
1924
|
+
onBlur: handleBlur,
|
|
1925
|
+
elementRef: (element) => setElementRef(i, element),
|
|
1926
|
+
hasEventHandlers
|
|
1330
1927
|
})
|
|
1331
1928
|
)));
|
|
1332
1929
|
};
|
|
@@ -1339,24 +1936,28 @@ var ClusterLayer = ({
|
|
|
1339
1936
|
zoom,
|
|
1340
1937
|
map,
|
|
1341
1938
|
onMapClick,
|
|
1342
|
-
showCoordinates
|
|
1939
|
+
showCoordinates,
|
|
1940
|
+
stylesManagedExternally = false,
|
|
1941
|
+
hasEventHandlers
|
|
1343
1942
|
}) => {
|
|
1344
1943
|
var _a;
|
|
1345
1944
|
if (((_a = map == null ? void 0 : map.current) == null ? void 0 : _a.isStyleLoaded) && [clusterLayer.longitude, clusterLayer.latitude].every(Array.isArray)) {
|
|
1346
1945
|
if ((clusterLayer == null ? void 0 : clusterLayer.type) === visualization_schemas_exports.LAYER_TYPE.Marker && !("geobin" in clusterLayer)) {
|
|
1347
|
-
return /* @__PURE__ */ react_exports.createElement(
|
|
1946
|
+
return /* @__PURE__ */ react_exports.createElement(MapProvider, null, /* @__PURE__ */ react_exports.createElement(
|
|
1348
1947
|
MarkerLayer_default,
|
|
1349
1948
|
{
|
|
1350
1949
|
markerLayer: clusterLayer,
|
|
1351
1950
|
themeColorScheme,
|
|
1352
1951
|
map,
|
|
1353
1952
|
onMapClick,
|
|
1354
|
-
showCoordinates
|
|
1953
|
+
showCoordinates,
|
|
1954
|
+
stylesManagedExternally,
|
|
1955
|
+
hasEventHandlers
|
|
1355
1956
|
}
|
|
1356
|
-
);
|
|
1957
|
+
));
|
|
1357
1958
|
}
|
|
1358
1959
|
if ((clusterLayer == null ? void 0 : clusterLayer.type) === visualization_schemas_exports.LAYER_TYPE.Bubble && Array.isArray(clusterLayer.bubbleSize)) {
|
|
1359
|
-
return /* @__PURE__ */ react_exports.createElement(
|
|
1960
|
+
return /* @__PURE__ */ react_exports.createElement(MapProvider, null, /* @__PURE__ */ react_exports.createElement(
|
|
1360
1961
|
BubbleLayer_default,
|
|
1361
1962
|
{
|
|
1362
1963
|
bubbleLayer: clusterLayer,
|
|
@@ -1364,9 +1965,11 @@ var ClusterLayer = ({
|
|
|
1364
1965
|
map,
|
|
1365
1966
|
zoom,
|
|
1366
1967
|
onMapClick,
|
|
1367
|
-
showCoordinates
|
|
1968
|
+
showCoordinates,
|
|
1969
|
+
stylesManagedExternally,
|
|
1970
|
+
hasEventHandlers
|
|
1368
1971
|
}
|
|
1369
|
-
);
|
|
1972
|
+
));
|
|
1370
1973
|
}
|
|
1371
1974
|
}
|
|
1372
1975
|
return null;
|
|
@@ -1377,6 +1980,25 @@ var ClusterLayer_default = ClusterLayer;
|
|
|
1377
1980
|
var getShapeId = (id) => `shape-${id}`;
|
|
1378
1981
|
var getSourceId = (id) => `source-${id}`;
|
|
1379
1982
|
var getStrokeId = (id) => `stroke-${id}`;
|
|
1983
|
+
var getCentroid = (geom) => {
|
|
1984
|
+
if (!(geom == null ? void 0 : geom.coordinates)) {
|
|
1985
|
+
return null;
|
|
1986
|
+
}
|
|
1987
|
+
const flattenCoordinates = (coords) => {
|
|
1988
|
+
if (typeof coords[0] === "number") return [coords];
|
|
1989
|
+
return coords.flatMap(flattenCoordinates);
|
|
1990
|
+
};
|
|
1991
|
+
const allCoords = flattenCoordinates(geom.coordinates);
|
|
1992
|
+
if (allCoords.length === 0) {
|
|
1993
|
+
return null;
|
|
1994
|
+
}
|
|
1995
|
+
const lngs = allCoords.map((c) => c[0]);
|
|
1996
|
+
const lats = allCoords.map((c) => c[1]);
|
|
1997
|
+
return [lngs.reduce((a, b) => a + b, 0) / lngs.length, lats.reduce((a, b) => a + b, 0) / lats.length];
|
|
1998
|
+
};
|
|
1999
|
+
var FocusableShapeButton = styled_components_default.button`
|
|
2000
|
+
${themes_exports.mixins.screenReaderContent()};
|
|
2001
|
+
`;
|
|
1380
2002
|
var compareGeom = (prev, next) => {
|
|
1381
2003
|
if (prev !== null && next !== null) {
|
|
1382
2004
|
return prev.type === next.type && (0, lodash_exports.isEqual)(prev.coordinates, next.coordinates);
|
|
@@ -1384,7 +2006,7 @@ var compareGeom = (prev, next) => {
|
|
|
1384
2006
|
return prev === null && next === null;
|
|
1385
2007
|
};
|
|
1386
2008
|
var compareChoropleth = (prevProps, nextProps) => {
|
|
1387
|
-
return compareGeom(prevProps.geomData, nextProps.geomData) && prevProps.id === nextProps.id && prevProps.map === nextProps.map && prevProps.areaId === nextProps.areaId && prevProps.areaValue === nextProps.areaValue && prevProps.color === nextProps.color && prevProps.opacity === nextProps.opacity && prevProps.strokeColor === nextProps.strokeColor && prevProps.isThemeChanged === nextProps.isThemeChanged && (0, lodash_exports.isEqual)(prevProps.additionalFields, nextProps.additionalFields) && prevProps.tooltipHeader === nextProps.tooltipHeader && prevProps.handleMapClick
|
|
2009
|
+
return compareGeom(prevProps.geomData, nextProps.geomData) && prevProps.id === nextProps.id && prevProps.map === nextProps.map && prevProps.areaId === nextProps.areaId && prevProps.areaValue === nextProps.areaValue && prevProps.color === nextProps.color && prevProps.opacity === nextProps.opacity && prevProps.strokeColor === nextProps.strokeColor && prevProps.isThemeChanged === nextProps.isThemeChanged && (0, lodash_exports.isEqual)(prevProps.additionalFields, nextProps.additionalFields) && prevProps.tooltipHeader === nextProps.tooltipHeader && prevProps.handleMapClick === nextProps.handleMapClick && prevProps.hasEventHandlers === nextProps.hasEventHandlers;
|
|
1388
2010
|
};
|
|
1389
2011
|
var cleanupChoropleth = (shapeId, sourceId, strokeId, map) => {
|
|
1390
2012
|
var _a, _b, _c;
|
|
@@ -1421,26 +2043,40 @@ var Choropleth = react_exports.memo(
|
|
|
1421
2043
|
isThemeChanged,
|
|
1422
2044
|
additionalFields,
|
|
1423
2045
|
tooltipHeader,
|
|
1424
|
-
handleMapClick
|
|
2046
|
+
handleMapClick,
|
|
2047
|
+
stylesManagedExternally = false,
|
|
2048
|
+
onKeyDown,
|
|
2049
|
+
onFocus,
|
|
2050
|
+
onBlur,
|
|
2051
|
+
elementRef,
|
|
2052
|
+
hasEventHandlers
|
|
1425
2053
|
}) => {
|
|
1426
2054
|
const sourceId = getSourceId(id);
|
|
1427
2055
|
const shapeId = getShapeId(id);
|
|
1428
2056
|
const strokeId = getStrokeId(id);
|
|
1429
|
-
const formattedGeomData =
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
const
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
2057
|
+
const formattedGeomData = react_exports.useMemo(
|
|
2058
|
+
() => ({
|
|
2059
|
+
type: "Feature",
|
|
2060
|
+
geometry: geomData,
|
|
2061
|
+
properties: {}
|
|
2062
|
+
}),
|
|
2063
|
+
[geomData]
|
|
2064
|
+
);
|
|
2065
|
+
const [isFocused, setIsFocused] = react_exports.useState(false);
|
|
2066
|
+
const [isHovered, setIsHovered] = react_exports.useState(false);
|
|
2067
|
+
const [centroidLat, centroidLng] = react_exports.useMemo(() => {
|
|
2068
|
+
const centroid = getCentroid(geomData);
|
|
2069
|
+
if (!centroid) {
|
|
2070
|
+
return [null, null];
|
|
2071
|
+
}
|
|
2072
|
+
const [lng, lat] = centroid;
|
|
2073
|
+
return [lat, lng];
|
|
2074
|
+
}, [geomData]);
|
|
2075
|
+
const [mouseLat, setmouseLat] = react_exports.useState(centroidLat != null ? centroidLat : 0);
|
|
2076
|
+
const [mouseLng, setmouseLng] = react_exports.useState(centroidLng != null ? centroidLng : 0);
|
|
2077
|
+
const markerId = react_exports.useMemo(() => `choropleth-${shapeId}`, [shapeId]);
|
|
2078
|
+
const { activeChoroplethId, setActiveChoroplethId, setActiveTooltipId } = useMapContext();
|
|
2079
|
+
const updateLayers = react_exports.useCallback(() => {
|
|
1444
2080
|
cleanupChoropleth(shapeId, sourceId, strokeId, map);
|
|
1445
2081
|
map.current.addSource(sourceId, {
|
|
1446
2082
|
type: "geojson",
|
|
@@ -1468,41 +2104,142 @@ var Choropleth = react_exports.memo(
|
|
|
1468
2104
|
}
|
|
1469
2105
|
});
|
|
1470
2106
|
}
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
2107
|
+
}, [shapeId, sourceId, strokeId, map, formattedGeomData, color, opacity, strokeColor]);
|
|
2108
|
+
const registerEventHandlers = react_exports.useCallback(() => {
|
|
2109
|
+
var _a;
|
|
2110
|
+
const layer = (_a = map.current) == null ? void 0 : _a.getLayer(shapeId);
|
|
2111
|
+
if (!layer) return () => {
|
|
2112
|
+
};
|
|
2113
|
+
const handleMouseMove = (e) => {
|
|
2114
|
+
setmouseLat(e.lngLat.lat);
|
|
2115
|
+
setmouseLng(e.lngLat.lng);
|
|
2116
|
+
setIsHovered(true);
|
|
2117
|
+
setActiveTooltipId(markerId);
|
|
1476
2118
|
map.current.getCanvas().style.cursor = "pointer";
|
|
1477
|
-
}
|
|
1478
|
-
|
|
1479
|
-
|
|
2119
|
+
};
|
|
2120
|
+
const handleMouseLeave = () => {
|
|
2121
|
+
setIsHovered(false);
|
|
2122
|
+
setActiveTooltipId(null);
|
|
1480
2123
|
map.current.getCanvas().style.cursor = "";
|
|
1481
|
-
}
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
2124
|
+
};
|
|
2125
|
+
const handleClick2 = (e) => {
|
|
2126
|
+
if (hasEventHandlers) {
|
|
2127
|
+
handleMapClick == null ? void 0 : handleMapClick(e);
|
|
2128
|
+
}
|
|
2129
|
+
};
|
|
2130
|
+
map.current.on("mousemove", shapeId, handleMouseMove);
|
|
2131
|
+
map.current.on("mouseleave", shapeId, handleMouseLeave);
|
|
2132
|
+
map.current.on("click", shapeId, handleClick2);
|
|
2133
|
+
return () => {
|
|
2134
|
+
if (map.current) {
|
|
2135
|
+
map.current.off("mousemove", shapeId, handleMouseMove);
|
|
2136
|
+
map.current.off("mouseleave", shapeId, handleMouseLeave);
|
|
2137
|
+
map.current.off("click", shapeId, handleClick2);
|
|
2138
|
+
}
|
|
2139
|
+
};
|
|
2140
|
+
}, [shapeId, markerId, map, setActiveTooltipId, hasEventHandlers, handleMapClick]);
|
|
1486
2141
|
react_exports.useEffect(() => {
|
|
1487
|
-
|
|
1488
|
-
}, [
|
|
2142
|
+
updateLayers();
|
|
2143
|
+
}, [updateLayers]);
|
|
2144
|
+
react_exports.useEffect(() => {
|
|
2145
|
+
return registerEventHandlers();
|
|
2146
|
+
}, [registerEventHandlers]);
|
|
2147
|
+
react_exports.useEffect(() => {
|
|
2148
|
+
if (!map.current) return;
|
|
2149
|
+
const layer = map.current.getLayer(shapeId);
|
|
2150
|
+
if (!layer) return;
|
|
2151
|
+
if (activeChoroplethId === null || activeChoroplethId === shapeId) {
|
|
2152
|
+
map.current.setPaintProperty(shapeId, "fill-opacity", opacity);
|
|
2153
|
+
} else {
|
|
2154
|
+
map.current.setPaintProperty(shapeId, "fill-opacity", opacity * 0.3);
|
|
2155
|
+
}
|
|
2156
|
+
}, [activeChoroplethId, shapeId, opacity, map]);
|
|
1489
2157
|
react_exports.useEffect(() => () => cleanupChoropleth(shapeId, sourceId, strokeId, map), []);
|
|
1490
2158
|
if (isThemeChanged) {
|
|
1491
|
-
|
|
2159
|
+
updateLayers();
|
|
1492
2160
|
}
|
|
2161
|
+
const handleFocus = react_exports.useCallback(() => {
|
|
2162
|
+
if (onFocus) {
|
|
2163
|
+
onFocus();
|
|
2164
|
+
}
|
|
2165
|
+
setIsFocused(true);
|
|
2166
|
+
setmouseLat(centroidLat);
|
|
2167
|
+
setmouseLng(centroidLng);
|
|
2168
|
+
setActiveChoroplethId(shapeId);
|
|
2169
|
+
setActiveTooltipId(markerId);
|
|
2170
|
+
}, [centroidLat, centroidLng, shapeId, markerId, setActiveChoroplethId, setActiveTooltipId, onFocus]);
|
|
2171
|
+
const handleBlur = react_exports.useCallback(() => {
|
|
2172
|
+
setIsFocused(false);
|
|
2173
|
+
setActiveChoroplethId(null);
|
|
2174
|
+
setActiveTooltipId(null);
|
|
2175
|
+
onBlur == null ? void 0 : onBlur();
|
|
2176
|
+
}, [setActiveChoroplethId, setActiveTooltipId, onBlur]);
|
|
2177
|
+
const handleKeyDown = react_exports.useCallback(
|
|
2178
|
+
(e) => {
|
|
2179
|
+
var _a, _b;
|
|
2180
|
+
onKeyDown == null ? void 0 : onKeyDown(e);
|
|
2181
|
+
if (hasEventHandlers && (e.key === KEYBOARD_KEYS.ENTER || e.key === KEYBOARD_KEYS.SPACE)) {
|
|
2182
|
+
e.preventDefault();
|
|
2183
|
+
const mockEvent = {
|
|
2184
|
+
lngLat: {
|
|
2185
|
+
lng: (_a = mouseLng != null ? mouseLng : centroidLng) != null ? _a : 0,
|
|
2186
|
+
lat: (_b = mouseLat != null ? mouseLat : centroidLat) != null ? _b : 0
|
|
2187
|
+
},
|
|
2188
|
+
originalEvent: e
|
|
2189
|
+
};
|
|
2190
|
+
handleMapClick(mockEvent);
|
|
2191
|
+
}
|
|
2192
|
+
},
|
|
2193
|
+
[hasEventHandlers, handleMapClick, onKeyDown, centroidLat, centroidLng, mouseLat, mouseLng]
|
|
2194
|
+
);
|
|
2195
|
+
const tooltipPosition = react_exports.useMemo(() => {
|
|
2196
|
+
if (isFocused) return { lat: centroidLat, lng: centroidLng };
|
|
2197
|
+
if (!isHovered || !map.current) return { lat: mouseLat, lng: mouseLng };
|
|
2198
|
+
const mousePoint = map.current.project([mouseLng, mouseLat]);
|
|
2199
|
+
mousePoint.y -= 24;
|
|
2200
|
+
const offsetCoords = map.current.unproject(mousePoint);
|
|
2201
|
+
return { lat: offsetCoords.lat, lng: offsetCoords.lng };
|
|
2202
|
+
}, [isFocused, isHovered, mouseLat, mouseLng, centroidLat, centroidLng, map]);
|
|
2203
|
+
const hasCentroid = centroidLat !== null && centroidLng !== null;
|
|
2204
|
+
const ariaLabel = react_exports.useMemo(() => {
|
|
2205
|
+
const formattedAreaValue = typeof areaValue === "number" && !Number.isNaN(areaValue) ? areaValue.toString() : "N/A";
|
|
2206
|
+
let choroplethLabel = (0, format_exports.sprintf)((0, i18n_exports._)("%(areaId)s: %(areaValue)s"), {
|
|
2207
|
+
areaId: areaId.toString(),
|
|
2208
|
+
areaValue: formattedAreaValue
|
|
2209
|
+
});
|
|
2210
|
+
if (hasEventHandlers) {
|
|
2211
|
+
choroplethLabel = (0, format_exports.sprintf)((0, i18n_exports._)("%(label)s, Click for drilldown"), { label: choroplethLabel });
|
|
2212
|
+
}
|
|
2213
|
+
return choroplethLabel;
|
|
2214
|
+
}, [areaId, areaValue, hasEventHandlers]);
|
|
1493
2215
|
return /* @__PURE__ */ react_exports.createElement(
|
|
1494
2216
|
MarkerWrapper_default,
|
|
1495
2217
|
{
|
|
1496
|
-
isChoroplethTooltipOpen: isTooltipOpen,
|
|
1497
2218
|
additionalFields,
|
|
1498
2219
|
tooltipHeader,
|
|
1499
|
-
latitude:
|
|
1500
|
-
longitude:
|
|
2220
|
+
latitude: tooltipPosition.lat,
|
|
2221
|
+
longitude: tooltipPosition.lng,
|
|
1501
2222
|
map,
|
|
1502
2223
|
areaId,
|
|
1503
|
-
areaValue
|
|
2224
|
+
areaValue,
|
|
2225
|
+
stylesManagedExternally,
|
|
2226
|
+
customMarkerId: markerId,
|
|
2227
|
+
showCoordinates: false
|
|
1504
2228
|
},
|
|
1505
|
-
/* @__PURE__ */ react_exports.createElement(
|
|
2229
|
+
/* @__PURE__ */ react_exports.createElement(
|
|
2230
|
+
FocusableShapeButton,
|
|
2231
|
+
{
|
|
2232
|
+
"data-test": "choropleth-anchor",
|
|
2233
|
+
ref: elementRef,
|
|
2234
|
+
role: hasEventHandlers && hasCentroid ? "button" : "graphics-symbol",
|
|
2235
|
+
"aria-label": ariaLabel,
|
|
2236
|
+
"aria-hidden": !hasCentroid,
|
|
2237
|
+
onFocus: handleFocus,
|
|
2238
|
+
onBlur: handleBlur,
|
|
2239
|
+
onKeyDown: handleKeyDown,
|
|
2240
|
+
onClick: hasEventHandlers ? handleMapClick : void 0
|
|
2241
|
+
}
|
|
2242
|
+
)
|
|
1506
2243
|
);
|
|
1507
2244
|
},
|
|
1508
2245
|
compareChoropleth
|
|
@@ -1510,7 +2247,15 @@ var Choropleth = react_exports.memo(
|
|
|
1510
2247
|
Choropleth.displayName = "MapChoropleth";
|
|
1511
2248
|
var ChoroplethLayer = (props) => {
|
|
1512
2249
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
1513
|
-
const {
|
|
2250
|
+
const {
|
|
2251
|
+
map,
|
|
2252
|
+
choroplethLayer,
|
|
2253
|
+
isThemeChanged,
|
|
2254
|
+
setIsThemeChanged,
|
|
2255
|
+
onMapClick,
|
|
2256
|
+
stylesManagedExternally = false,
|
|
2257
|
+
hasEventHandlers
|
|
2258
|
+
} = props;
|
|
1514
2259
|
const cfgOpacity = Math.min(Math.max(choroplethLayer == null ? void 0 : choroplethLayer.choroplethOpacity, 0), 1);
|
|
1515
2260
|
const scaledOpacities = (_a = getScaledOpacities(choroplethLayer == null ? void 0 : choroplethLayer.dataColors, cfgOpacity)) != null ? _a : [];
|
|
1516
2261
|
const colors = (_b = choroplethLayer == null ? void 0 : choroplethLayer.dataColors) == null ? void 0 : _b.map((color) => (color == null ? void 0 : color.length) > 7 ? color.slice(0, 7) : color);
|
|
@@ -1520,6 +2265,7 @@ var ChoroplethLayer = (props) => {
|
|
|
1520
2265
|
(_f = (_e = choroplethLayer == null ? void 0 : choroplethLayer.geom) == null ? void 0 : _e.length) != null ? _f : 0,
|
|
1521
2266
|
(choroplethLayer == null ? void 0 : choroplethLayer.resultLimit) ? choroplethLayer.resultLimit : DEFAULT_RESULT_LIMIT
|
|
1522
2267
|
);
|
|
2268
|
+
const { handleKeyDown, handleFocus, handleBlur, setElementRef } = useRovingTabindex(map);
|
|
1523
2269
|
const areaIdSliced = (_h = (_g = choroplethLayer == null ? void 0 : choroplethLayer.areaIds) == null ? void 0 : _g.slice(0, limit)) != null ? _h : [];
|
|
1524
2270
|
const uniqueAreaIdSliced = (0, lodash_exports.uniq)(areaIdSliced).length !== areaIdSliced.length ? areaIdSliced.map((id, i) => `${id}${i}`) : areaIdSliced;
|
|
1525
2271
|
const additionalFields = (choroplethLayer == null ? void 0 : choroplethLayer.metadata) ? choroplethLayer.metadata.map((choroplethMetadata) => {
|
|
@@ -1560,7 +2306,13 @@ var ChoroplethLayer = (props) => {
|
|
|
1560
2306
|
areaValue,
|
|
1561
2307
|
additionalFields: additionalFields[i],
|
|
1562
2308
|
tooltipHeader: tooltipHeaderField == null ? void 0 : tooltipHeaderField[i],
|
|
1563
|
-
handleMapClick: (e) => handleMapClick(e, i)
|
|
2309
|
+
handleMapClick: (e) => handleMapClick(e, i),
|
|
2310
|
+
stylesManagedExternally,
|
|
2311
|
+
onKeyDown: handleKeyDown,
|
|
2312
|
+
onFocus: handleFocus,
|
|
2313
|
+
onBlur: handleBlur,
|
|
2314
|
+
elementRef: (element) => setElementRef(i, element),
|
|
2315
|
+
hasEventHandlers
|
|
1564
2316
|
}
|
|
1565
2317
|
);
|
|
1566
2318
|
}));
|
|
@@ -1572,32 +2324,41 @@ var Message_exports = {};
|
|
|
1572
2324
|
__export(Message_exports, {
|
|
1573
2325
|
default: () => Message_default
|
|
1574
2326
|
});
|
|
1575
|
-
var
|
|
2327
|
+
var defaultImport27 = __toESM(require("@splunk/visualizations-shared/Message"));
|
|
1576
2328
|
__reExport(Message_exports, require("@splunk/visualizations-shared/Message"));
|
|
1577
|
-
var Message_default = "default" in
|
|
2329
|
+
var Message_default = "default" in defaultImport27 ? defaultImport27.default : defaultImport27;
|
|
1578
2330
|
|
|
1579
2331
|
// esm-externals:@splunk/visualization-context/GeoRegistry
|
|
1580
2332
|
var GeoRegistry_exports = {};
|
|
1581
2333
|
__export(GeoRegistry_exports, {
|
|
1582
2334
|
default: () => GeoRegistry_default
|
|
1583
2335
|
});
|
|
1584
|
-
var
|
|
2336
|
+
var defaultImport28 = __toESM(require("@splunk/visualization-context/GeoRegistry"));
|
|
1585
2337
|
__reExport(GeoRegistry_exports, require("@splunk/visualization-context/GeoRegistry"));
|
|
1586
|
-
var GeoRegistry_default = "default" in
|
|
2338
|
+
var GeoRegistry_default = "default" in defaultImport28 ? defaultImport28.default : defaultImport28;
|
|
1587
2339
|
|
|
1588
2340
|
// esm-externals:@splunk/visualization-context/GeoJsonProvider
|
|
1589
2341
|
var GeoJsonProvider_exports = {};
|
|
1590
2342
|
__export(GeoJsonProvider_exports, {
|
|
1591
2343
|
default: () => GeoJsonProvider_default
|
|
1592
2344
|
});
|
|
1593
|
-
var
|
|
2345
|
+
var defaultImport29 = __toESM(require("@splunk/visualization-context/GeoJsonProvider"));
|
|
1594
2346
|
__reExport(GeoJsonProvider_exports, require("@splunk/visualization-context/GeoJsonProvider"));
|
|
1595
|
-
var GeoJsonProvider_default = "default" in
|
|
2347
|
+
var GeoJsonProvider_default = "default" in defaultImport29 ? defaultImport29.default : defaultImport29;
|
|
1596
2348
|
|
|
1597
2349
|
// src/Map/PureMap/LocalChoroplethLayer.tsx
|
|
1598
2350
|
var LocalChoroplethLayer = (props) => {
|
|
1599
2351
|
var _a, _b;
|
|
1600
|
-
const {
|
|
2352
|
+
const {
|
|
2353
|
+
width,
|
|
2354
|
+
height,
|
|
2355
|
+
map,
|
|
2356
|
+
choroplethLayer,
|
|
2357
|
+
isThemeChanged,
|
|
2358
|
+
setIsThemeChanged,
|
|
2359
|
+
onMapClick,
|
|
2360
|
+
hasEventHandlers
|
|
2361
|
+
} = props;
|
|
1601
2362
|
const cfgOpacity = Math.min(Math.max(choroplethLayer == null ? void 0 : choroplethLayer.choroplethOpacity, 0), 1);
|
|
1602
2363
|
const emptyFeature = {
|
|
1603
2364
|
type: "Feature",
|
|
@@ -1614,6 +2375,7 @@ var LocalChoroplethLayer = (props) => {
|
|
|
1614
2375
|
const [geoJsonError, setGeoJsonError] = react_exports.useState({
|
|
1615
2376
|
message: ""
|
|
1616
2377
|
});
|
|
2378
|
+
const { handleKeyDown, handleFocus, handleBlur, setElementRef } = useRovingTabindex(map);
|
|
1617
2379
|
react_exports.useEffect(() => {
|
|
1618
2380
|
let isMounted = true;
|
|
1619
2381
|
const geoRegistry = GeoRegistry_default.create();
|
|
@@ -1716,29 +2478,42 @@ var LocalChoroplethLayer = (props) => {
|
|
|
1716
2478
|
level: "error",
|
|
1717
2479
|
message: geoJsonError.message
|
|
1718
2480
|
}
|
|
1719
|
-
), validGeoJson &&
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
{
|
|
1726
|
-
|
|
1727
|
-
id: el.name,
|
|
1728
|
-
map,
|
|
1729
|
-
color: el.color,
|
|
1730
|
-
opacity: el.opacity,
|
|
1731
|
-
strokeColor: choroplethLayer.choroplethStrokeColor,
|
|
1732
|
-
areaId: el.name,
|
|
1733
|
-
areaValue: typeof el.areaValue === "number" ? el.areaValue : Number(el.areaValue),
|
|
1734
|
-
handleMapClick: (e) => handleMapClick(e, el.idx),
|
|
1735
|
-
isThemeChanged,
|
|
1736
|
-
geomData,
|
|
1737
|
-
additionalFields: additionalFields[el.idx],
|
|
1738
|
-
tooltipHeader: (_b2 = choroplethLayer.tooltipHeaderField) == null ? void 0 : _b2[el.idx]
|
|
2481
|
+
), validGeoJson && (() => {
|
|
2482
|
+
let renderIndex = 0;
|
|
2483
|
+
return updatedAllChoroplethData.map((el, i) => {
|
|
2484
|
+
var _a2, _b2;
|
|
2485
|
+
const geometry = (_a2 = geoJson.features[i]) == null ? void 0 : _a2.geometry;
|
|
2486
|
+
const geomData = geometry && (geometry.type === "MultiPolygon" || geometry.type === "Polygon") ? geometry : null;
|
|
2487
|
+
if (!geomData) {
|
|
2488
|
+
return null;
|
|
1739
2489
|
}
|
|
1740
|
-
|
|
1741
|
-
|
|
2490
|
+
const currentRenderIndex = renderIndex;
|
|
2491
|
+
renderIndex += 1;
|
|
2492
|
+
return /* @__PURE__ */ react_exports.createElement(
|
|
2493
|
+
Choropleth,
|
|
2494
|
+
{
|
|
2495
|
+
key: el.name,
|
|
2496
|
+
id: el.name,
|
|
2497
|
+
map,
|
|
2498
|
+
color: el.color,
|
|
2499
|
+
opacity: el.opacity,
|
|
2500
|
+
strokeColor: choroplethLayer.choroplethStrokeColor,
|
|
2501
|
+
areaId: el.name,
|
|
2502
|
+
areaValue: typeof el.areaValue === "number" ? el.areaValue : Number(el.areaValue),
|
|
2503
|
+
handleMapClick: (e) => handleMapClick(e, el.idx),
|
|
2504
|
+
isThemeChanged,
|
|
2505
|
+
geomData,
|
|
2506
|
+
additionalFields: additionalFields[el.idx],
|
|
2507
|
+
tooltipHeader: (_b2 = choroplethLayer.tooltipHeaderField) == null ? void 0 : _b2[el.idx],
|
|
2508
|
+
onKeyDown: handleKeyDown,
|
|
2509
|
+
onFocus: handleFocus,
|
|
2510
|
+
onBlur: handleBlur,
|
|
2511
|
+
elementRef: (element) => setElementRef(currentRenderIndex, element),
|
|
2512
|
+
hasEventHandlers
|
|
2513
|
+
}
|
|
2514
|
+
);
|
|
2515
|
+
});
|
|
2516
|
+
})());
|
|
1742
2517
|
};
|
|
1743
2518
|
var LocalChoroplethLayer_default = LocalChoroplethLayer;
|
|
1744
2519
|
|
|
@@ -1758,24 +2533,49 @@ var formatColor = (color) => {
|
|
|
1758
2533
|
opacity: chromaColor.alpha()
|
|
1759
2534
|
};
|
|
1760
2535
|
};
|
|
1761
|
-
var
|
|
1762
|
-
"data-test": "fit-to-data-button"
|
|
1763
|
-
})`
|
|
2536
|
+
var ControlButtonContainer = styled_components_default.div`
|
|
1764
2537
|
position: absolute;
|
|
1765
|
-
top: ${(props) => props.showZoomControls ? "115px" : "12px"};
|
|
1766
2538
|
left: 16px;
|
|
1767
2539
|
z-index: 3;
|
|
1768
|
-
width: 40px
|
|
1769
|
-
height: 40px;
|
|
2540
|
+
width: 40px;
|
|
1770
2541
|
border-radius: 4px;
|
|
1771
|
-
|
|
2542
|
+
background-color: ${(props) => props.controlBackgroundColor};
|
|
1772
2543
|
box-shadow:
|
|
1773
2544
|
0px 26px 103px rgba(0, 0, 0, 0.64),
|
|
1774
2545
|
0px 11px 18px rgba(0, 0, 0, 0.32),
|
|
1775
|
-
0px 3px 6px rgba(0, 0, 0, 0.3)
|
|
1776
|
-
|
|
2546
|
+
0px 3px 6px rgba(0, 0, 0, 0.3);
|
|
2547
|
+
`;
|
|
2548
|
+
var ZoomControlsContainer = styled_components_default(ControlButtonContainer)`
|
|
2549
|
+
top: 12px;
|
|
2550
|
+
display: flex;
|
|
2551
|
+
flex-direction: column;
|
|
2552
|
+
`;
|
|
2553
|
+
var FitToDataButtonContainer = styled_components_default(ControlButtonContainer)`
|
|
2554
|
+
top: ${(props) => props.showZoomControls ? "115px" : "12px"};
|
|
2555
|
+
`;
|
|
2556
|
+
var ControlButton = styled_components_default(Button_default)`
|
|
2557
|
+
width: 40px;
|
|
2558
|
+
height: 43px;
|
|
2559
|
+
border: none;
|
|
2560
|
+
background-color: ${(props) => props.controlBackgroundColor};
|
|
1777
2561
|
background-repeat: no-repeat;
|
|
1778
2562
|
background-position: center;
|
|
2563
|
+
`;
|
|
2564
|
+
var ZoomInButton = styled_components_default(ControlButton).attrs({
|
|
2565
|
+
"data-test": "zoom-in-button",
|
|
2566
|
+
"data-is-first": true
|
|
2567
|
+
})`
|
|
2568
|
+
background-image: url('data:image/svg+xml;charset=UTF-8,<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M9 1C9 0.447715 8.55229 0 8 0C7.44772 0 7 0.447715 7 1V7H1C0.447715 7 0 7.44772 0 8C0 8.55229 0.447715 9 1 9H7V15C7 15.5523 7.44772 16 8 16C8.55229 16 9 15.5523 9 15V9H15C15.5523 9 16 8.55229 16 8C16 7.44772 15.5523 7 15 7H9V1Z" fill="${(props) => props.controlIconColorEncoded.color}" fill-opacity="${(props) => props.controlIconColorEncoded.opacity}" /></svg>');
|
|
2569
|
+
`;
|
|
2570
|
+
var ZoomOutButton = styled_components_default(ControlButton).attrs({
|
|
2571
|
+
"data-test": "zoom-out-button"
|
|
2572
|
+
})`
|
|
2573
|
+
background-image: url('data:image/svg+xml;charset=UTF-8,<svg width="14" height="3" viewBox="0 0 14 3" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M0 1.99707C0 1.44479 0.447715 0.99707 1 0.99707H13C13.5523 0.99707 14 1.44479 14 1.99707C14 2.54936 13.5523 2.99707 13 2.99707H1C0.447715 2.99707 0 2.54936 0 1.99707Z" fill="${(props) => props.controlIconColorEncoded.color}" fill-opacity="${(props) => props.controlIconColorEncoded.opacity}" /></svg>');
|
|
2574
|
+
`;
|
|
2575
|
+
var StyledFitToDataButton = styled_components_default(ControlButton).attrs({
|
|
2576
|
+
"data-test": "fit-to-data-button"
|
|
2577
|
+
})`
|
|
2578
|
+
height: 40px;
|
|
1779
2579
|
background-image: url('data:image/svg+xml;charset=UTF-8,<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="9" stroke="${(props) => props.controlIconColorEncoded.color}" stroke-width="2" stroke-linecap="round"/><path d="M12 3.5V6.5M12 20.5V17.5M3.5 12H6.5M20.5 12H17.5" stroke="${(props) => props.controlIconColorEncoded.color}" stroke-width="2" stroke-linecap="round"/></svg>');
|
|
1780
2580
|
`;
|
|
1781
2581
|
PureMapContainer_default.displayName = "PureMapContainer";
|
|
@@ -1800,13 +2600,13 @@ var PureMap = (props) => {
|
|
|
1800
2600
|
onMapClick,
|
|
1801
2601
|
onOptionsChange,
|
|
1802
2602
|
title,
|
|
1803
|
-
showCoordinates
|
|
2603
|
+
showCoordinates,
|
|
2604
|
+
hasEventHandlers = false
|
|
1804
2605
|
} = props;
|
|
1805
2606
|
const { defaultTileConfig, customTileConfig } = (0, react_exports.useContext)(MapContext_default);
|
|
1806
2607
|
const basemapContainer = (0, react_exports.useRef)(null);
|
|
1807
2608
|
const map = (0, react_exports.useRef)(null);
|
|
1808
2609
|
const scaleControl = (0, react_exports.useRef)(null);
|
|
1809
|
-
const zoomControl = (0, react_exports.useRef)(null);
|
|
1810
2610
|
const fitToDataButtonClickedRef = (0, react_exports.useRef)(false);
|
|
1811
2611
|
const isUserInteractingRef = (0, react_exports.useRef)(false);
|
|
1812
2612
|
const [hasUserPanned, setHasUserPanned] = react_exports.useState(false);
|
|
@@ -1955,8 +2755,6 @@ var PureMap = (props) => {
|
|
|
1955
2755
|
setMapMinZoom(mapZoomLevel);
|
|
1956
2756
|
}
|
|
1957
2757
|
});
|
|
1958
|
-
zoomControl.current = new maplibre_gl_exports.NavigationControl({ showCompass: false });
|
|
1959
|
-
map.current.addControl(zoomControl.current, "top-left");
|
|
1960
2758
|
},
|
|
1961
2759
|
[lngLatCenter, zoomLevel, layers == null ? void 0 : layers.length]
|
|
1962
2760
|
);
|
|
@@ -2095,6 +2893,19 @@ var PureMap = (props) => {
|
|
|
2095
2893
|
}
|
|
2096
2894
|
onOptionsChangeProxy({ center: void 0, zoom: void 0 });
|
|
2097
2895
|
}, [onOptionsChangeProxy, fitMapToContent, center, zoom, lngLatCenter, zoomLevel]);
|
|
2896
|
+
const floatingLayerStyleTarget = getFloatingLayerStyleTarget(basemapContainer.current);
|
|
2897
|
+
const stylesManagedExternally = Boolean(floatingLayerStyleTarget);
|
|
2898
|
+
const wrapFloatingLayers = (children) => floatingLayerStyleTarget ? /* @__PURE__ */ react_exports.createElement(styled_components_exports.StyleSheetManager, { target: floatingLayerStyleTarget }, children) : children;
|
|
2899
|
+
const handleZoomIn = (0, react_exports.useCallback)(() => {
|
|
2900
|
+
if (map.current) {
|
|
2901
|
+
map.current.zoomIn();
|
|
2902
|
+
}
|
|
2903
|
+
}, []);
|
|
2904
|
+
const handleZoomOut = (0, react_exports.useCallback)(() => {
|
|
2905
|
+
if (map.current) {
|
|
2906
|
+
map.current.zoomOut();
|
|
2907
|
+
}
|
|
2908
|
+
}, []);
|
|
2098
2909
|
return /* @__PURE__ */ react_exports.createElement(
|
|
2099
2910
|
PureMapContainer_default,
|
|
2100
2911
|
{
|
|
@@ -2110,49 +2921,76 @@ var PureMap = (props) => {
|
|
|
2110
2921
|
showScale,
|
|
2111
2922
|
showZoomControls
|
|
2112
2923
|
},
|
|
2113
|
-
|
|
2114
|
-
|
|
2924
|
+
showZoomControls && /* @__PURE__ */ react_exports.createElement(ZoomControlsContainer, { controlBackgroundColor }, /* @__PURE__ */ react_exports.createElement(Tooltip_default, { content: (0, i18n_exports._)("Zoom in"), contentRelationship: "label" }, /* @__PURE__ */ react_exports.createElement(
|
|
2925
|
+
ZoomInButton,
|
|
2115
2926
|
{
|
|
2116
|
-
onClick:
|
|
2117
|
-
title: (0, i18n_exports._)("Fit to data"),
|
|
2927
|
+
onClick: handleZoomIn,
|
|
2118
2928
|
controlBackgroundColor,
|
|
2119
2929
|
controlForegroundColor,
|
|
2120
|
-
controlIconColorEncoded: formatColor(controlForegroundColor)
|
|
2121
|
-
showZoomControls
|
|
2930
|
+
controlIconColorEncoded: formatColor(controlForegroundColor)
|
|
2122
2931
|
}
|
|
2123
|
-
),
|
|
2124
|
-
|
|
2125
|
-
ClusterLayer_default,
|
|
2932
|
+
)), /* @__PURE__ */ react_exports.createElement(Tooltip_default, { content: (0, i18n_exports._)("Zoom out"), contentRelationship: "label" }, /* @__PURE__ */ react_exports.createElement(
|
|
2933
|
+
ZoomOutButton,
|
|
2126
2934
|
{
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
onMapClick,
|
|
2132
|
-
showCoordinates
|
|
2935
|
+
onClick: handleZoomOut,
|
|
2936
|
+
controlBackgroundColor,
|
|
2937
|
+
controlForegroundColor,
|
|
2938
|
+
controlIconColorEncoded: formatColor(controlForegroundColor)
|
|
2133
2939
|
}
|
|
2134
|
-
),
|
|
2135
|
-
|
|
2136
|
-
|
|
2940
|
+
))),
|
|
2941
|
+
showResetButton() && /* @__PURE__ */ react_exports.createElement(
|
|
2942
|
+
FitToDataButtonContainer,
|
|
2137
2943
|
{
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2944
|
+
controlBackgroundColor,
|
|
2945
|
+
showZoomControls
|
|
2946
|
+
},
|
|
2947
|
+
/* @__PURE__ */ react_exports.createElement(Tooltip_default, { content: (0, i18n_exports._)("Fit to data"), contentRelationship: "label" }, /* @__PURE__ */ react_exports.createElement(
|
|
2948
|
+
StyledFitToDataButton,
|
|
2949
|
+
{
|
|
2950
|
+
onClick: handleResetClick,
|
|
2951
|
+
controlBackgroundColor,
|
|
2952
|
+
controlForegroundColor,
|
|
2953
|
+
controlIconColorEncoded: formatColor(controlForegroundColor)
|
|
2954
|
+
}
|
|
2955
|
+
))
|
|
2146
2956
|
),
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
|
|
2957
|
+
wrapFloatingLayers(
|
|
2958
|
+
/* @__PURE__ */ react_exports.createElement(react_exports.Fragment, null, isMapLoaded && layer && (layer.type === visualization_schemas_exports.LAYER_TYPE.Bubble || layer.type === visualization_schemas_exports.LAYER_TYPE.Marker) && /* @__PURE__ */ react_exports.createElement(
|
|
2959
|
+
ClusterLayer_default,
|
|
2960
|
+
{
|
|
2961
|
+
clusterLayer: layer,
|
|
2962
|
+
themeColorScheme,
|
|
2963
|
+
map,
|
|
2964
|
+
zoom: currentZoomLevel,
|
|
2965
|
+
onMapClick,
|
|
2966
|
+
showCoordinates,
|
|
2967
|
+
stylesManagedExternally,
|
|
2968
|
+
hasEventHandlers
|
|
2969
|
+
}
|
|
2970
|
+
), isMapLoaded && layer && layer.type === visualization_schemas_exports.LAYER_TYPE.Choropleth && layer.source && /* @__PURE__ */ react_exports.createElement(MapProvider, null, /* @__PURE__ */ react_exports.createElement(
|
|
2971
|
+
LocalChoroplethLayer_default,
|
|
2972
|
+
{
|
|
2973
|
+
width,
|
|
2974
|
+
height,
|
|
2975
|
+
map,
|
|
2976
|
+
choroplethLayer: layer,
|
|
2977
|
+
isThemeChanged,
|
|
2978
|
+
setIsThemeChanged: setIsThemeChangedCallback,
|
|
2979
|
+
onMapClick,
|
|
2980
|
+
hasEventHandlers
|
|
2981
|
+
}
|
|
2982
|
+
)), isMapLoaded && layer && layer.type === visualization_schemas_exports.LAYER_TYPE.Choropleth && !layer.source && /* @__PURE__ */ react_exports.createElement(MapProvider, null, /* @__PURE__ */ react_exports.createElement(
|
|
2983
|
+
ChoroplethLayer_default,
|
|
2984
|
+
{
|
|
2985
|
+
map,
|
|
2986
|
+
choroplethLayer: layer,
|
|
2987
|
+
isThemeChanged,
|
|
2988
|
+
setIsThemeChanged: setIsThemeChangedCallback,
|
|
2989
|
+
onMapClick,
|
|
2990
|
+
stylesManagedExternally,
|
|
2991
|
+
hasEventHandlers
|
|
2992
|
+
}
|
|
2993
|
+
)))
|
|
2156
2994
|
)
|
|
2157
2995
|
);
|
|
2158
2996
|
};
|
|
@@ -2232,36 +3070,36 @@ var PresetPalettes_exports = {};
|
|
|
2232
3070
|
__export(PresetPalettes_exports, {
|
|
2233
3071
|
default: () => PresetPalettes_default
|
|
2234
3072
|
});
|
|
2235
|
-
var
|
|
3073
|
+
var defaultImport30 = __toESM(require("@splunk/visualization-color-palettes/editors/PresetPalettes"));
|
|
2236
3074
|
__reExport(PresetPalettes_exports, require("@splunk/visualization-color-palettes/editors/PresetPalettes"));
|
|
2237
|
-
var PresetPalettes_default = "default" in
|
|
3075
|
+
var PresetPalettes_default = "default" in defaultImport30 ? defaultImport30.default : defaultImport30;
|
|
2238
3076
|
|
|
2239
3077
|
// esm-externals:@splunk/visualization-icons
|
|
2240
3078
|
var visualization_icons_exports = {};
|
|
2241
3079
|
__export(visualization_icons_exports, {
|
|
2242
3080
|
default: () => visualization_icons_default
|
|
2243
3081
|
});
|
|
2244
|
-
var
|
|
3082
|
+
var defaultImport31 = __toESM(require("@splunk/visualization-icons"));
|
|
2245
3083
|
__reExport(visualization_icons_exports, require("@splunk/visualization-icons"));
|
|
2246
|
-
var visualization_icons_default = "default" in
|
|
3084
|
+
var visualization_icons_default = "default" in defaultImport31 ? defaultImport31.default : defaultImport31;
|
|
2247
3085
|
|
|
2248
3086
|
// esm-externals:@splunk/visualization-icons/placeholders
|
|
2249
3087
|
var placeholders_exports = {};
|
|
2250
3088
|
__export(placeholders_exports, {
|
|
2251
3089
|
default: () => placeholders_default
|
|
2252
3090
|
});
|
|
2253
|
-
var
|
|
3091
|
+
var defaultImport32 = __toESM(require("@splunk/visualization-icons/placeholders"));
|
|
2254
3092
|
__reExport(placeholders_exports, require("@splunk/visualization-icons/placeholders"));
|
|
2255
|
-
var placeholders_default = "default" in
|
|
3093
|
+
var placeholders_default = "default" in defaultImport32 ? defaultImport32.default : defaultImport32;
|
|
2256
3094
|
|
|
2257
3095
|
// esm-externals:@splunk/visualizations-shared/configUtils
|
|
2258
3096
|
var configUtils_exports = {};
|
|
2259
3097
|
__export(configUtils_exports, {
|
|
2260
3098
|
default: () => configUtils_default
|
|
2261
3099
|
});
|
|
2262
|
-
var
|
|
3100
|
+
var defaultImport33 = __toESM(require("@splunk/visualizations-shared/configUtils"));
|
|
2263
3101
|
__reExport(configUtils_exports, require("@splunk/visualizations-shared/configUtils"));
|
|
2264
|
-
var configUtils_default = "default" in
|
|
3102
|
+
var configUtils_default = "default" in defaultImport33 ? defaultImport33.default : defaultImport33;
|
|
2265
3103
|
|
|
2266
3104
|
// src/common/utils/configUtils.ts
|
|
2267
3105
|
function enhanceConfig(vizConfig) {
|
|
@@ -2295,18 +3133,18 @@ var pick_exports = {};
|
|
|
2295
3133
|
__export(pick_exports, {
|
|
2296
3134
|
default: () => pick_default
|
|
2297
3135
|
});
|
|
2298
|
-
var
|
|
3136
|
+
var defaultImport34 = __toESM(require("@splunk/themes/pick"));
|
|
2299
3137
|
__reExport(pick_exports, require("@splunk/themes/pick"));
|
|
2300
|
-
var pick_default = "default" in
|
|
3138
|
+
var pick_default = "default" in defaultImport34 ? defaultImport34.default : defaultImport34;
|
|
2301
3139
|
|
|
2302
3140
|
// esm-externals:@splunk/themes/variables
|
|
2303
3141
|
var variables_exports = {};
|
|
2304
3142
|
__export(variables_exports, {
|
|
2305
3143
|
default: () => variables_default
|
|
2306
3144
|
});
|
|
2307
|
-
var
|
|
3145
|
+
var defaultImport35 = __toESM(require("@splunk/themes/variables"));
|
|
2308
3146
|
__reExport(variables_exports, require("@splunk/themes/variables"));
|
|
2309
|
-
var variables_default = "default" in
|
|
3147
|
+
var variables_default = "default" in defaultImport35 ? defaultImport35.default : defaultImport35;
|
|
2310
3148
|
|
|
2311
3149
|
// src/common/ThemedDefaults.tsx
|
|
2312
3150
|
var defaultBackgroundColor = (props) => pick_default({
|
|
@@ -2821,54 +3659,54 @@ var getSettingsFromThemedProps_exports = {};
|
|
|
2821
3659
|
__export(getSettingsFromThemedProps_exports, {
|
|
2822
3660
|
default: () => getSettingsFromThemedProps_default
|
|
2823
3661
|
});
|
|
2824
|
-
var
|
|
3662
|
+
var defaultImport36 = __toESM(require("@splunk/themes/getSettingsFromThemedProps"));
|
|
2825
3663
|
__reExport(getSettingsFromThemedProps_exports, require("@splunk/themes/getSettingsFromThemedProps"));
|
|
2826
|
-
var getSettingsFromThemedProps_default = "default" in
|
|
3664
|
+
var getSettingsFromThemedProps_default = "default" in defaultImport36 ? defaultImport36.default : defaultImport36;
|
|
2827
3665
|
|
|
2828
3666
|
// esm-externals:@splunk/visualization-encoding/Options
|
|
2829
3667
|
var Options_exports = {};
|
|
2830
3668
|
__export(Options_exports, {
|
|
2831
3669
|
default: () => Options_default
|
|
2832
3670
|
});
|
|
2833
|
-
var
|
|
3671
|
+
var defaultImport37 = __toESM(require("@splunk/visualization-encoding/Options"));
|
|
2834
3672
|
__reExport(Options_exports, require("@splunk/visualization-encoding/Options"));
|
|
2835
|
-
var Options_default = "default" in
|
|
3673
|
+
var Options_default = "default" in defaultImport37 ? defaultImport37.default : defaultImport37;
|
|
2836
3674
|
|
|
2837
3675
|
// esm-externals:@splunk/visualizations-shared/SanitizeProps
|
|
2838
3676
|
var SanitizeProps_exports = {};
|
|
2839
3677
|
__export(SanitizeProps_exports, {
|
|
2840
3678
|
default: () => SanitizeProps_default
|
|
2841
3679
|
});
|
|
2842
|
-
var
|
|
3680
|
+
var defaultImport38 = __toESM(require("@splunk/visualizations-shared/SanitizeProps"));
|
|
2843
3681
|
__reExport(SanitizeProps_exports, require("@splunk/visualizations-shared/SanitizeProps"));
|
|
2844
|
-
var SanitizeProps_default = "default" in
|
|
3682
|
+
var SanitizeProps_default = "default" in defaultImport38 ? defaultImport38.default : defaultImport38;
|
|
2845
3683
|
|
|
2846
3684
|
// esm-externals:@splunk/visualization-context/TimezoneContext
|
|
2847
3685
|
var TimezoneContext_exports = {};
|
|
2848
3686
|
__export(TimezoneContext_exports, {
|
|
2849
3687
|
default: () => TimezoneContext_default
|
|
2850
3688
|
});
|
|
2851
|
-
var
|
|
3689
|
+
var defaultImport39 = __toESM(require("@splunk/visualization-context/TimezoneContext"));
|
|
2852
3690
|
__reExport(TimezoneContext_exports, require("@splunk/visualization-context/TimezoneContext"));
|
|
2853
|
-
var TimezoneContext_default = "default" in
|
|
3691
|
+
var TimezoneContext_default = "default" in defaultImport39 ? defaultImport39.default : defaultImport39;
|
|
2854
3692
|
|
|
2855
3693
|
// esm-externals:@splunk/moment
|
|
2856
3694
|
var moment_exports = {};
|
|
2857
3695
|
__export(moment_exports, {
|
|
2858
3696
|
default: () => moment_default
|
|
2859
3697
|
});
|
|
2860
|
-
var
|
|
3698
|
+
var defaultImport40 = __toESM(require("@splunk/moment"));
|
|
2861
3699
|
__reExport(moment_exports, require("@splunk/moment"));
|
|
2862
|
-
var moment_default = "default" in
|
|
3700
|
+
var moment_default = "default" in defaultImport40 ? defaultImport40.default : defaultImport40;
|
|
2863
3701
|
|
|
2864
3702
|
// esm-externals:@splunk/async-dynamic-options-evaluator
|
|
2865
3703
|
var async_dynamic_options_evaluator_exports = {};
|
|
2866
3704
|
__export(async_dynamic_options_evaluator_exports, {
|
|
2867
3705
|
default: () => async_dynamic_options_evaluator_default
|
|
2868
3706
|
});
|
|
2869
|
-
var
|
|
3707
|
+
var defaultImport41 = __toESM(require("@splunk/async-dynamic-options-evaluator"));
|
|
2870
3708
|
__reExport(async_dynamic_options_evaluator_exports, require("@splunk/async-dynamic-options-evaluator"));
|
|
2871
|
-
var async_dynamic_options_evaluator_default = "default" in
|
|
3709
|
+
var async_dynamic_options_evaluator_default = "default" in defaultImport41 ? defaultImport41.default : defaultImport41;
|
|
2872
3710
|
|
|
2873
3711
|
// src/common/interfaces/VizActionHandler.ts
|
|
2874
3712
|
var DefaultVizActionHandler = class {
|
|
@@ -3076,9 +3914,9 @@ var SizeAwareWrapper_exports = {};
|
|
|
3076
3914
|
__export(SizeAwareWrapper_exports, {
|
|
3077
3915
|
default: () => SizeAwareWrapper_default
|
|
3078
3916
|
});
|
|
3079
|
-
var
|
|
3917
|
+
var defaultImport42 = __toESM(require("@splunk/visualizations-shared/SizeAwareWrapper"));
|
|
3080
3918
|
__reExport(SizeAwareWrapper_exports, require("@splunk/visualizations-shared/SizeAwareWrapper"));
|
|
3081
|
-
var SizeAwareWrapper_default = "default" in
|
|
3919
|
+
var SizeAwareWrapper_default = "default" in defaultImport42 ? defaultImport42.default : defaultImport42;
|
|
3082
3920
|
|
|
3083
3921
|
// src/common/components/MissingPropsMessage.tsx
|
|
3084
3922
|
var isMissing = (v) => {
|
|
@@ -3133,7 +3971,7 @@ var Cover = styled_components_default.div`
|
|
|
3133
3971
|
bottom: 0;
|
|
3134
3972
|
`;
|
|
3135
3973
|
var Blocker = styled_components_default.div.attrs({
|
|
3136
|
-
"data-splunk-visualization-version": "28.
|
|
3974
|
+
"data-splunk-visualization-version": "28.7.0 - d7b18cab6"
|
|
3137
3975
|
})`
|
|
3138
3976
|
position: relative;
|
|
3139
3977
|
width: 100%;
|
|
@@ -3205,7 +4043,7 @@ var withFixedSizeContainer = (Viz) => {
|
|
|
3205
4043
|
FixSizeItem,
|
|
3206
4044
|
{
|
|
3207
4045
|
"data-test": "fix-size-item",
|
|
3208
|
-
"data-splunk-visualization-version": "28.
|
|
4046
|
+
"data-splunk-visualization-version": "28.7.0 - d7b18cab6",
|
|
3209
4047
|
width,
|
|
3210
4048
|
height,
|
|
3211
4049
|
backgroundColor
|
|
@@ -3296,9 +4134,9 @@ var numberUtils_exports = {};
|
|
|
3296
4134
|
__export(numberUtils_exports, {
|
|
3297
4135
|
default: () => numberUtils_default
|
|
3298
4136
|
});
|
|
3299
|
-
var
|
|
4137
|
+
var defaultImport43 = __toESM(require("@splunk/visualizations-shared/numberUtils"));
|
|
3300
4138
|
__reExport(numberUtils_exports, require("@splunk/visualizations-shared/numberUtils"));
|
|
3301
|
-
var numberUtils_default = "default" in
|
|
4139
|
+
var numberUtils_default = "default" in defaultImport43 ? defaultImport43.default : defaultImport43;
|
|
3302
4140
|
|
|
3303
4141
|
// src/common/utils/dataUtils.ts
|
|
3304
4142
|
var convertToArrOfObjects = (columns, fields) => {
|
|
@@ -3697,9 +4535,9 @@ var FeatureFlags_exports = {};
|
|
|
3697
4535
|
__export(FeatureFlags_exports, {
|
|
3698
4536
|
default: () => FeatureFlags_default
|
|
3699
4537
|
});
|
|
3700
|
-
var
|
|
4538
|
+
var defaultImport44 = __toESM(require("@splunk/visualization-context/FeatureFlags"));
|
|
3701
4539
|
__reExport(FeatureFlags_exports, require("@splunk/visualization-context/FeatureFlags"));
|
|
3702
|
-
var FeatureFlags_default = "default" in
|
|
4540
|
+
var FeatureFlags_default = "default" in defaultImport44 ? defaultImport44.default : defaultImport44;
|
|
3703
4541
|
|
|
3704
4542
|
// src/common/utils/featureFlagUtils.ts
|
|
3705
4543
|
var getFeatureFlag = (context, flagName) => {
|
|
@@ -3717,9 +4555,9 @@ var trellisUtils_exports = {};
|
|
|
3717
4555
|
__export(trellisUtils_exports, {
|
|
3718
4556
|
default: () => trellisUtils_default
|
|
3719
4557
|
});
|
|
3720
|
-
var
|
|
4558
|
+
var defaultImport45 = __toESM(require("@splunk/visualizations-shared/trellisUtils"));
|
|
3721
4559
|
__reExport(trellisUtils_exports, require("@splunk/visualizations-shared/trellisUtils"));
|
|
3722
|
-
var trellisUtils_default = "default" in
|
|
4560
|
+
var trellisUtils_default = "default" in defaultImport45 ? defaultImport45.default : defaultImport45;
|
|
3723
4561
|
|
|
3724
4562
|
// src/common/utils/trellisUtils.ts
|
|
3725
4563
|
var turnOffLegendDisplayWhenTrellisIsOn = (isTrellisOn, options) => {
|
|
@@ -3736,9 +4574,9 @@ var visualization_canvas_exports = {};
|
|
|
3736
4574
|
__export(visualization_canvas_exports, {
|
|
3737
4575
|
default: () => visualization_canvas_default
|
|
3738
4576
|
});
|
|
3739
|
-
var
|
|
4577
|
+
var defaultImport46 = __toESM(require("@splunk/visualization-canvas"));
|
|
3740
4578
|
__reExport(visualization_canvas_exports, require("@splunk/visualization-canvas"));
|
|
3741
|
-
var visualization_canvas_default = "default" in
|
|
4579
|
+
var visualization_canvas_default = "default" in defaultImport46 ? defaultImport46.default : defaultImport46;
|
|
3742
4580
|
|
|
3743
4581
|
// src/common/components/VizStyleWrapper.jsx
|
|
3744
4582
|
var VizStyleWrapper = styled_components_default.div.attrs(({ dataTestKey }) => ({
|
|
@@ -3760,27 +4598,27 @@ var Triangle_exports = {};
|
|
|
3760
4598
|
__export(Triangle_exports, {
|
|
3761
4599
|
default: () => Triangle_default
|
|
3762
4600
|
});
|
|
3763
|
-
var
|
|
4601
|
+
var defaultImport47 = __toESM(require("@splunk/react-icons/Triangle"));
|
|
3764
4602
|
__reExport(Triangle_exports, require("@splunk/react-icons/Triangle"));
|
|
3765
|
-
var Triangle_default = "default" in
|
|
4603
|
+
var Triangle_default = "default" in defaultImport47 ? defaultImport47.default : defaultImport47;
|
|
3766
4604
|
|
|
3767
4605
|
// esm-externals:@splunk/visualizations-shared/propUtils
|
|
3768
4606
|
var propUtils_exports = {};
|
|
3769
4607
|
__export(propUtils_exports, {
|
|
3770
4608
|
default: () => propUtils_default
|
|
3771
4609
|
});
|
|
3772
|
-
var
|
|
4610
|
+
var defaultImport48 = __toESM(require("@splunk/visualizations-shared/propUtils"));
|
|
3773
4611
|
__reExport(propUtils_exports, require("@splunk/visualizations-shared/propUtils"));
|
|
3774
|
-
var propUtils_default = "default" in
|
|
4612
|
+
var propUtils_default = "default" in defaultImport48 ? defaultImport48.default : defaultImport48;
|
|
3775
4613
|
|
|
3776
4614
|
// esm-externals:@splunk/visualizations-shared/simpleXMLOptions
|
|
3777
4615
|
var simpleXMLOptions_exports = {};
|
|
3778
4616
|
__export(simpleXMLOptions_exports, {
|
|
3779
4617
|
default: () => simpleXMLOptions_default
|
|
3780
4618
|
});
|
|
3781
|
-
var
|
|
4619
|
+
var defaultImport49 = __toESM(require("@splunk/visualizations-shared/simpleXMLOptions"));
|
|
3782
4620
|
__reExport(simpleXMLOptions_exports, require("@splunk/visualizations-shared/simpleXMLOptions"));
|
|
3783
|
-
var simpleXMLOptions_default = "default" in
|
|
4621
|
+
var simpleXMLOptions_default = "default" in defaultImport49 ? defaultImport49.default : defaultImport49;
|
|
3784
4622
|
|
|
3785
4623
|
// src/common/chartingUtils.ts
|
|
3786
4624
|
var DEFAULT_LINE_WIDTH = 2;
|
|
@@ -5118,9 +5956,9 @@ var dsl_exports = {};
|
|
|
5118
5956
|
__export(dsl_exports, {
|
|
5119
5957
|
default: () => dsl_default
|
|
5120
5958
|
});
|
|
5121
|
-
var
|
|
5959
|
+
var defaultImport50 = __toESM(require("@splunk/visualization-encoding/utils/dsl"));
|
|
5122
5960
|
__reExport(dsl_exports, require("@splunk/visualization-encoding/utils/dsl"));
|
|
5123
|
-
var dsl_default = "default" in
|
|
5961
|
+
var dsl_default = "default" in defaultImport50 ? defaultImport50.default : defaultImport50;
|
|
5124
5962
|
|
|
5125
5963
|
// src/common/utils/mapUtils.ts
|
|
5126
5964
|
var columnsNullToZeros = (config2, dataSources, options) => {
|
|
@@ -5196,7 +6034,7 @@ var formatLayer = (l, dataFields, dataSourceData, transformedData) => {
|
|
|
5196
6034
|
};
|
|
5197
6035
|
var computeVizProps = (props) => {
|
|
5198
6036
|
var _a, _b, _c;
|
|
5199
|
-
const { themeFunc, theme, layers, dataSources, onOptionsChange, title } = props;
|
|
6037
|
+
const { themeFunc, theme, layers, dataSources, onOptionsChange, title, hasEventHandlers } = props;
|
|
5200
6038
|
const themeColorVariables = ["controlBackgroundColor", "controlForegroundColor"];
|
|
5201
6039
|
const themeColors = {};
|
|
5202
6040
|
themeColorVariables.forEach((variable) => {
|
|
@@ -5213,7 +6051,8 @@ var computeVizProps = (props) => {
|
|
|
5213
6051
|
themeColorScheme
|
|
5214
6052
|
}), layers), {
|
|
5215
6053
|
onOptionsChange,
|
|
5216
|
-
title
|
|
6054
|
+
title,
|
|
6055
|
+
hasEventHandlers
|
|
5217
6056
|
});
|
|
5218
6057
|
};
|
|
5219
6058
|
var withTooltipFields = (Viz) => {
|