@defra/interactive-map 0.0.22-alpha → 0.0.23-alpha
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/dist/css/index.css +1 -1
- package/dist/esm/im-core.js +1 -1
- package/dist/esm/im-shell.js +1 -1
- package/dist/umd/im-core.js +1 -1
- package/dist/umd/index.js +1 -1
- package/docs/api/button-definition.md +39 -0
- package/docs/api/context.md +4 -4
- package/docs/api/map-style-config.md +11 -2
- package/docs/api/marker-config.md +38 -7
- package/docs/api/panel-definition.md +7 -3
- package/docs/api/symbol-config.md +10 -26
- package/docs/api/symbol-registry.md +28 -13
- package/docs/api.md +24 -2
- package/docs/assets/css/{docusaurus.css → docusaurus.scss} +18 -12
- package/docs/assets/images/toggle-marker-label.jpg +0 -0
- package/docs/examples/index.mdx +12 -0
- package/docs/examples/toggle-marker-label.mdx +89 -0
- package/docs/plugins/interact.md +4 -11
- package/docusaurus.config.cjs +2 -1
- package/package.json +8 -8
- package/plugins/beta/datasets/dist/adapters/maplibre/esm/im-datasets-ml-adapter.js +1 -1
- package/plugins/beta/datasets/dist/css/index.css +2 -2
- package/plugins/beta/datasets/dist/esm/im-datasets-plugin.js +1 -1
- package/plugins/beta/datasets/dist/umd/maplibre/im-datasets-maplibre-adapter.js +1 -1
- package/plugins/beta/datasets/dist/umd/maplibre/im-datasets-plugin.js +1 -1
- package/plugins/beta/datasets/dist/umd/maplibre/index.js +1 -1
- package/plugins/beta/datasets/src/adapters/maplibre/layerBuilders.js +5 -5
- package/plugins/beta/datasets/src/adapters/maplibre/maplibreLayerAdapter.js +24 -29
- package/plugins/beta/datasets/src/adapters/maplibre/patternImages.js +2 -2
- package/plugins/beta/datasets/src/adapters/maplibre/symbolImages.js +3 -3
- package/plugins/beta/datasets/src/components/KeySvg.jsx +2 -2
- package/plugins/beta/datasets/src/components/KeySvgPattern.jsx +1 -2
- package/plugins/beta/datasets/src/components/svgProperties.js +2 -2
- package/plugins/beta/datasets/src/panels/Key.module.scss +2 -2
- package/plugins/beta/draw-es/dist/esm/im-draw-es-plugin.js +1 -1
- package/plugins/beta/draw-ml/dist/esm/im-draw-ml-plugin.js +1 -1
- package/plugins/beta/draw-ml/dist/umd/im-draw-ml-plugin.js +1 -1
- package/plugins/beta/map-styles/dist/esm/im-map-styles-plugin.js +1 -1
- package/plugins/beta/map-styles/dist/umd/im-map-styles-plugin.js +1 -1
- package/plugins/beta/map-styles/dist/umd/index.js +1 -1
- package/plugins/beta/use-location/dist/esm/im-use-location-plugin.js +1 -1
- package/plugins/beta/use-location/dist/umd/im-use-location-plugin.js +1 -1
- package/plugins/beta/use-location/src/manifest.js +1 -0
- package/plugins/interact/dist/esm/im-interact-plugin.js +1 -1
- package/plugins/interact/dist/umd/im-interact-plugin.js +1 -1
- package/plugins/interact/dist/umd/index.js +1 -1
- package/plugins/interact/src/InteractInit.jsx +23 -55
- package/plugins/interact/src/InteractInit.test.js +58 -80
- package/plugins/interact/src/defaults.js +1 -3
- package/plugins/interact/src/hooks/useAttachEvents.js +46 -0
- package/plugins/interact/src/hooks/useAttachEvents.test.js +65 -0
- package/plugins/interact/src/hooks/useCrossHairVisibility.js +47 -0
- package/plugins/interact/src/hooks/useCrossHairVisibility.test.js +54 -0
- package/plugins/interact/src/hooks/useHighlightSync.js +30 -8
- package/plugins/interact/src/hooks/useHighlightSync.test.js +127 -80
- package/plugins/interact/src/hooks/useInteractionHandlers.js +18 -17
- package/plugins/interact/src/hooks/useInteractionHandlers.test.js +22 -61
- package/plugins/interact/src/hooks/useMapItemList.js +187 -0
- package/plugins/interact/src/hooks/useMapItemList.test.js +584 -0
- package/plugins/interact/src/index.js +0 -2
- package/plugins/interact/src/index.test.js +0 -2
- package/plugins/interact/src/manifest.js +37 -6
- package/plugins/interact/src/reducer.js +8 -4
- package/plugins/interact/src/reducer.test.js +18 -3
- package/plugins/interact/src/utils/buildStylesMap.js +21 -10
- package/plugins/interact/src/utils/buildStylesMap.test.js +29 -29
- package/plugins/interact/src/utils/spatial.js +0 -15
- package/plugins/interact/src/utils/spatial.test.js +1 -13
- package/plugins/search/dist/css/index.css +1 -1
- package/plugins/search/dist/esm/im-search-plugin.js +1 -1
- package/plugins/search/dist/umd/im-search-plugin.js +1 -1
- package/plugins/search/src/components/CloseButton/CloseButton.module.scss +2 -0
- package/plugins/search/src/components/OpenButton/OpenButton.jsx +1 -1
- package/plugins/search/src/components/OpenButton/OpenButton.module.scss +3 -0
- package/plugins/search/src/search.scss +1 -0
- package/providers/beta/esri/dist/esm/im-esri-provider.js +1 -1
- package/providers/beta/esri/src/esriProvider.js +4 -0
- package/providers/maplibre/dist/esm/im-maplibre-provider.js +1 -1
- package/providers/maplibre/dist/esm/index.js +1 -1
- package/providers/maplibre/dist/umd/im-maplibre-provider.js +1 -1
- package/providers/maplibre/dist/umd/index.js +1 -1
- package/providers/maplibre/src/index.js +1 -1
- package/providers/maplibre/src/index.test.js +9 -14
- package/providers/maplibre/src/mapEvents.js +11 -5
- package/providers/maplibre/src/mapEvents.test.js +14 -3
- package/providers/maplibre/src/maplibreProvider.js +18 -11
- package/providers/maplibre/src/maplibreProvider.test.js +43 -36
- package/providers/maplibre/src/utils/highlightFeatures.js +102 -57
- package/providers/maplibre/src/utils/highlightFeatures.test.js +162 -51
- package/providers/maplibre/src/utils/maplibreFixes.js +10 -0
- package/providers/maplibre/src/utils/maplibreFixes.test.js +31 -0
- package/providers/maplibre/src/utils/patternImages.js +10 -12
- package/providers/maplibre/src/utils/patternImages.test.js +145 -167
- package/providers/maplibre/src/utils/rasteriseToImageData.js +1 -4
- package/providers/maplibre/src/utils/rasteriseToImageData.test.js +23 -24
- package/providers/maplibre/src/utils/symbolImages.js +23 -86
- package/providers/maplibre/src/utils/symbolImages.test.js +60 -105
- package/src/App/components/Actions/Actions.module.scss +1 -0
- package/src/App/components/Actions/Actions.test.jsx +17 -4
- package/src/App/components/Hints/Hints.jsx +52 -0
- package/src/App/components/Hints/Hints.module.scss +37 -0
- package/src/App/components/Hints/Hints.test.jsx +104 -0
- package/src/App/components/KeyboardHelp/KeyboardHelp.jsx +57 -19
- package/src/App/components/KeyboardHelp/KeyboardHelp.module.scss +10 -0
- package/src/App/components/KeyboardHelp/KeyboardHelp.test.jsx +140 -31
- package/src/App/components/Markers/LabelMarker.jsx +14 -0
- package/src/App/components/Markers/LabelMarker.test.jsx +36 -0
- package/src/App/components/Markers/Markers.jsx +44 -75
- package/src/App/components/Markers/Markers.module.scss +58 -0
- package/src/App/components/Markers/Markers.test.jsx +90 -113
- package/src/App/components/Markers/SymbolLabelMarker.jsx +43 -0
- package/src/App/components/Markers/SymbolLabelMarker.test.jsx +56 -0
- package/src/App/components/Markers/SymbolMarker.jsx +31 -0
- package/src/App/components/Markers/SymbolMarker.test.jsx +72 -0
- package/src/App/components/Panel/Panel.jsx +1 -1
- package/src/App/components/Panel/Panel.module.scss +1 -0
- package/src/App/components/PopupMenu/PopupMenu.test.jsx +117 -1
- package/src/App/components/PopupMenu/usePopupMenu.js +132 -85
- package/src/App/components/Tabs/Tabs.jsx +68 -0
- package/src/App/components/Tabs/Tabs.module.scss +57 -0
- package/src/App/components/Tabs/Tabs.test.jsx +121 -0
- package/src/App/components/Tooltip/Tooltip.module.scss +1 -1
- package/src/App/components/Viewport/Features.jsx +35 -0
- package/src/App/components/Viewport/Features.module.scss +31 -0
- package/src/App/components/Viewport/Features.test.jsx +124 -0
- package/src/App/components/Viewport/MapStatus.jsx +0 -4
- package/src/App/components/Viewport/Viewport.jsx +35 -29
- package/src/App/components/Viewport/Viewport.module.scss +7 -21
- package/src/App/components/Viewport/Viewport.test.jsx +108 -65
- package/src/App/controls/keyboardActions.js +9 -3
- package/src/App/controls/keyboardActions.test.js +122 -87
- package/src/App/controls/keyboardShortcuts.js +1 -14
- package/src/App/hooks/useFeatureFocus.js +199 -0
- package/src/App/hooks/useFeatureFocus.test.js +635 -0
- package/src/App/hooks/useFeatureItems.js +30 -0
- package/src/App/hooks/useFeatureItems.test.js +97 -0
- package/src/App/hooks/useFocusVisible.js +4 -7
- package/src/App/hooks/useFocusVisible.test.js +6 -6
- package/src/App/hooks/useKeyboardHint.js +9 -34
- package/src/App/hooks/useKeyboardHint.test.js +34 -84
- package/src/App/hooks/useKeyboardShortcuts.js +8 -5
- package/src/App/hooks/useKeyboardShortcuts.test.js +16 -12
- package/src/App/hooks/useLayoutMeasurements.js +10 -4
- package/src/App/hooks/useLayoutMeasurements.test.js +30 -0
- package/src/App/hooks/useMarkerCursor.js +33 -0
- package/src/App/hooks/useMarkerCursor.test.js +87 -0
- package/src/App/hooks/useMarkersAPI.js +32 -9
- package/src/App/hooks/useMarkersAPI.test.js +162 -94
- package/src/App/layout/Layout.jsx +2 -0
- package/src/App/layout/Layout.test.jsx +3 -0
- package/src/App/registry/keyboardShortcutRegistry.js +3 -2
- package/src/App/registry/keyboardShortcutRegistry.test.js +6 -8
- package/src/App/renderer/mapButtons.js +5 -1
- package/src/App/renderer/mapButtons.test.js +37 -1
- package/src/App/store/ServiceProvider.jsx +4 -1
- package/src/App/store/ServiceProvider.test.jsx +11 -0
- package/src/App/store/appActionsMap.js +5 -1
- package/src/App/store/appActionsMap.test.js +13 -0
- package/src/App/store/appReducer.js +1 -0
- package/src/App/store/mapActionsMap.js +2 -1
- package/src/InteractiveMap/InteractiveMap.js +12 -0
- package/src/InteractiveMap/InteractiveMap.test.js +2 -0
- package/src/config/appConfig.js +3 -1
- package/src/config/appConfig.test.js +4 -0
- package/src/config/defaults.js +1 -1
- package/src/config/events.js +8 -0
- package/src/config/mapTheme.js +8 -4
- package/src/config/symbolConfig.js +23 -16
- package/src/scss/main.scss +3 -0
- package/src/scss/tools/_border-focus.scss +0 -1
- package/src/services/eventBus.js +15 -0
- package/src/services/eventBus.test.js +11 -0
- package/src/services/hints.js +47 -0
- package/src/services/hints.test.js +110 -0
- package/src/services/patternRegistry.js +69 -1
- package/src/services/patternRegistry.test.js +112 -1
- package/src/services/reverseGeocode.js +4 -0
- package/src/services/reverseGeocode.test.js +11 -1
- package/src/services/symbolRegistry.js +152 -17
- package/src/services/symbolRegistry.test.js +141 -31
- package/src/types.js +71 -14
- package/src/utils/constrainKeyboardFocus.js +5 -5
- package/src/utils/detectInterfaceType.js +27 -5
- package/src/utils/detectInterfaceType.test.js +29 -3
- package/src/utils/patternUtils.js +4 -67
- package/src/utils/patternUtils.test.js +1 -123
- package/src/utils/symbolUtils.js +11 -13
- package/src/utils/symbolUtils.test.js +18 -26
- package/plugins/interact/dist/css/index.css +0 -1
- package/plugins/interact/src/interact.scss +0 -24
package/docs/api.md
CHANGED
|
@@ -343,8 +343,6 @@ App-wide defaults for symbol and marker appearance.
|
|
|
343
343
|
| `symbol` | `'pin'` |
|
|
344
344
|
| `backgroundColor` | `'#ca3535'` |
|
|
345
345
|
| `foregroundColor` | `'#ffffff'` |
|
|
346
|
-
| `haloWidth` | `'1'` |
|
|
347
|
-
| `selectedWidth` | `'6'` |
|
|
348
346
|
|
|
349
347
|
```js
|
|
350
348
|
new InteractiveMap('map', {
|
|
@@ -564,6 +562,30 @@ interactiveMap.addMarker('home', [-0.1276, 51.5074], { backgroundColor: '#1d70b8
|
|
|
564
562
|
|
|
565
563
|
---
|
|
566
564
|
|
|
565
|
+
### `updateMarker(id, options)`
|
|
566
|
+
|
|
567
|
+
Update an existing marker's properties. Wont do anything if the marker id is not found.
|
|
568
|
+
|
|
569
|
+
Merges the provided options into the existing marker — unspecified properties are preserved. Pass `coords` inside `options` to move the marker to new coordinates.
|
|
570
|
+
|
|
571
|
+
| Parameter | Type | Description |
|
|
572
|
+
|-----------|------|-------------|
|
|
573
|
+
| `id` | `string` | Marker identifier to update |
|
|
574
|
+
| `options` | `MarkerOptions & { coords?: [number, number] }` | Properties to merge into the marker |
|
|
575
|
+
|
|
576
|
+
```js
|
|
577
|
+
// Show the label bubble on an existing marker
|
|
578
|
+
interactiveMap.updateMarker('home', { showLabel: true })
|
|
579
|
+
|
|
580
|
+
// Move the marker to new coordinates
|
|
581
|
+
interactiveMap.updateMarker('home', { coords: [-0.1276, 51.5074] })
|
|
582
|
+
|
|
583
|
+
// Change colour and move simultaneously
|
|
584
|
+
interactiveMap.updateMarker('home', { coords: [-0.1276, 51.5074], backgroundColor: '#d4351c' })
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
---
|
|
588
|
+
|
|
567
589
|
### `removeMarker(id)`
|
|
568
590
|
|
|
569
591
|
Remove a marker from the map.
|
|
@@ -9,6 +9,10 @@
|
|
|
9
9
|
background-color: #f4f8fb;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
+
.govuk-template__body.app-homepage #main-content {
|
|
13
|
+
background-color: #ffffff;
|
|
14
|
+
}
|
|
15
|
+
|
|
12
16
|
.app-section--features {
|
|
13
17
|
background-color: #f4f8fb;
|
|
14
18
|
border-bottom: 1px solid #8eb8dc;
|
|
@@ -26,6 +30,19 @@
|
|
|
26
30
|
}
|
|
27
31
|
}
|
|
28
32
|
|
|
33
|
+
/* Override prose-scope heading sizes to match pre-theme-downgrade for homepage sections. */
|
|
34
|
+
@import 'govuk-frontend/dist/govuk/base';
|
|
35
|
+
|
|
36
|
+
.govuk-template .app-prose-scope .app-section h2 {
|
|
37
|
+
@include govuk-font($size: 36, $weight: bold);
|
|
38
|
+
@include govuk-responsive-margin(6, 'bottom');
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.govuk-template .app-prose-scope .app-section h3 {
|
|
42
|
+
@include govuk-font($size: 24, $weight: bold);
|
|
43
|
+
@include govuk-responsive-margin(4, 'bottom');
|
|
44
|
+
}
|
|
45
|
+
|
|
29
46
|
/* Hero image */
|
|
30
47
|
.govuk-template--rebranded .app-masthead .govuk-grid-row {
|
|
31
48
|
@media (min-width: 48.125em) {
|
|
@@ -35,7 +52,7 @@
|
|
|
35
52
|
|
|
36
53
|
.govuk-template--rebranded .app-masthead .govuk-grid-column-one-third-from-desktop {
|
|
37
54
|
@media (min-width: 48.125em) {
|
|
38
|
-
background-image: url('/images/hero.png');
|
|
55
|
+
background-image: url('https://defra.github.io/interactive-map/images/hero.png');
|
|
39
56
|
background-repeat: no-repeat;
|
|
40
57
|
background-position: center bottom;
|
|
41
58
|
background-size: 220px;
|
|
@@ -103,17 +120,6 @@
|
|
|
103
120
|
inset: 0;
|
|
104
121
|
}
|
|
105
122
|
|
|
106
|
-
/* Fix sticky footer: the theme gives flex: 1 0 auto to any govuk-width-container
|
|
107
|
-
that is a direct child of govuk-template__body-inner, but the phase banner div
|
|
108
|
-
also matches that selector and grows incorrectly on short pages. Move the
|
|
109
|
-
flex-grow to <main> instead so only the content area stretches. */
|
|
110
|
-
.govuk-template--rebranded .govuk-template__body-inner > .govuk-width-container {
|
|
111
|
-
flex: none;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
.govuk-template--rebranded .govuk-main-wrapper {
|
|
115
|
-
flex: 1 0 auto;
|
|
116
|
-
}
|
|
117
123
|
|
|
118
124
|
/* GOV.UK tabs — enhanced styles for all devices; React manages active state.
|
|
119
125
|
Extra specificity via .app-prose-scope required to override the theme. */
|
|
Binary file
|
package/docs/examples/index.mdx
CHANGED
|
@@ -2,11 +2,13 @@ import useBaseUrl from '@docusaurus/useBaseUrl'
|
|
|
2
2
|
import basicMapImg from '../assets/images/basic-map.jpg'
|
|
3
3
|
import buttonFirstImg from '../assets/images/button-first.jpg'
|
|
4
4
|
import markerPanelImg from '../assets/images/marker-panel.jpg'
|
|
5
|
+
import toggleMarkerLabelImg from '../assets/images/toggle-marker-label.jpg'
|
|
5
6
|
|
|
6
7
|
export function ExampleCards() {
|
|
7
8
|
const basicHref = useBaseUrl('/examples/basic-map')
|
|
8
9
|
const buttonHref = useBaseUrl('/examples/button-map')
|
|
9
10
|
const interactHref = useBaseUrl('/examples/add-marker-with-panel')
|
|
11
|
+
const toggleMarkerLabelHref = useBaseUrl('/examples/toggle-marker-label')
|
|
10
12
|
|
|
11
13
|
return (
|
|
12
14
|
<div className='govuk-grid-row'>
|
|
@@ -40,6 +42,16 @@ export function ExampleCards() {
|
|
|
40
42
|
</div>
|
|
41
43
|
</div>
|
|
42
44
|
</div>
|
|
45
|
+
<div className='govuk-grid-column-one-half'>
|
|
46
|
+
<div className='app-example-card'>
|
|
47
|
+
<img src={toggleMarkerLabelImg} alt='' />
|
|
48
|
+
<div className='app-example-card__body'>
|
|
49
|
+
<h2 className='govuk-heading-m'>
|
|
50
|
+
<a href={toggleMarkerLabelHref}>Toggle marker label on click</a>
|
|
51
|
+
</h2>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
43
55
|
</div>
|
|
44
56
|
)
|
|
45
57
|
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import DemoMapToggleMarkerLabel from '../../demo/DemoMapToggleMarkerLabel.js'
|
|
2
|
+
import CodeTabs from '../../demo/js/codeTabs.js'
|
|
3
|
+
|
|
4
|
+
# Toggle marker label on click
|
|
5
|
+
|
|
6
|
+
Add a marker with a hidden label, then use the interact plugin to show the label when the marker is selected and hide it when the user clicks elsewhere.
|
|
7
|
+
|
|
8
|
+
<DemoMapToggleMarkerLabel />
|
|
9
|
+
|
|
10
|
+
<CodeTabs tabs={[
|
|
11
|
+
{
|
|
12
|
+
label: 'ESM',
|
|
13
|
+
language: 'js',
|
|
14
|
+
code: `
|
|
15
|
+
import InteractiveMap from '@defra/interactive-map'
|
|
16
|
+
import maplibreProvider from '@defra/interactive-map/providers/maplibre'
|
|
17
|
+
import createInteractPlugin from '@defra/interactive-map/plugins/interact'
|
|
18
|
+
|
|
19
|
+
const interactPlugin = createInteractPlugin({
|
|
20
|
+
deselectOnClickOutside: true
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
const map = new InteractiveMap('my-map', {
|
|
24
|
+
behaviour: 'inline',
|
|
25
|
+
mapProvider: maplibreProvider(),
|
|
26
|
+
mapStyle: {
|
|
27
|
+
url: 'https://your-tile-url/style.json',
|
|
28
|
+
attribution: 'Your tile attribution'
|
|
29
|
+
},
|
|
30
|
+
center: [-2.96, 54.43],
|
|
31
|
+
zoom: 15,
|
|
32
|
+
containerHeight: '500px',
|
|
33
|
+
plugins: [interactPlugin]
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
map.on('map:ready', () => {
|
|
37
|
+
map.addMarker('my-marker', [-2.96, 54.43], {
|
|
38
|
+
label: 'My location',
|
|
39
|
+
showLabel: false
|
|
40
|
+
})
|
|
41
|
+
interactPlugin.enable()
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
map.on('interact:selectionchange', ({ selectedMarkers }) => {
|
|
45
|
+
map.updateMarker('my-marker', { showLabel: selectedMarkers.includes('my-marker') })
|
|
46
|
+
})
|
|
47
|
+
`
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
label: 'UMD',
|
|
51
|
+
language: 'html',
|
|
52
|
+
code: `
|
|
53
|
+
<script src="/your-assets-path/interactive-map/index.js"></script>
|
|
54
|
+
<script src="/your-assets-path/maplibre-provider/index.js"></script>
|
|
55
|
+
<script src="/your-assets-path/interact-plugin/index.js"></script>
|
|
56
|
+
|
|
57
|
+
<script>
|
|
58
|
+
const interactPlugin = defra.interactPlugin({
|
|
59
|
+
deselectOnClickOutside: true
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
const map = new defra.InteractiveMap('my-map', {
|
|
63
|
+
behaviour: 'inline',
|
|
64
|
+
mapProvider: defra.maplibreProvider(),
|
|
65
|
+
mapStyle: {
|
|
66
|
+
url: 'https://your-tile-url/style.json',
|
|
67
|
+
attribution: 'Your tile attribution'
|
|
68
|
+
},
|
|
69
|
+
center: [-2.96, 54.43],
|
|
70
|
+
zoom: 15,
|
|
71
|
+
containerHeight: '500px',
|
|
72
|
+
plugins: [interactPlugin]
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
map.on('map:ready', () => {
|
|
76
|
+
map.addMarker('my-marker', [-2.96, 54.43], {
|
|
77
|
+
label: 'My location',
|
|
78
|
+
showLabel: false
|
|
79
|
+
})
|
|
80
|
+
interactPlugin.enable()
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
map.on('interact:selectionchange', ({ selectedMarkers }) => {
|
|
84
|
+
map.updateMarker('my-marker', { showLabel: selectedMarkers.includes('my-marker') })
|
|
85
|
+
})
|
|
86
|
+
</script>
|
|
87
|
+
`
|
|
88
|
+
}
|
|
89
|
+
]} />
|
package/docs/plugins/interact.md
CHANGED
|
@@ -85,9 +85,11 @@ layers: [
|
|
|
85
85
|
|----------|------|-------------|
|
|
86
86
|
| `layerId` | `string` | **Required.** The map layer identifier to enable selection on |
|
|
87
87
|
| `idProperty` | `string` | Property name used as the feature's unique identifier. If omitted, features are matched by index |
|
|
88
|
+
| `labelProperty` | `string` | Property name used as the feature's display label in the keyboard-accessible listbox. **Required for features to appear in keyboard navigation** |
|
|
88
89
|
| `selectedStroke` | `string` | Overrides the selection stroke colour for this layer. Defaults to `MapStyleConfig.selectedColor` |
|
|
89
90
|
| `selectedFill` | `string` | Overrides the selection fill colour for this layer. Defaults to `transparent` |
|
|
90
91
|
| `selectedStrokeWidth` | `number` | Overrides the selection stroke width for this layer. Defaults to `3` |
|
|
92
|
+
| `activeStroke` | `string` | Overrides the keyboard cursor ring colour for this layer. Defaults to `MapStyleConfig.activeColor` |
|
|
91
93
|
|
|
92
94
|
#### Finding layer IDs
|
|
93
95
|
|
|
@@ -109,14 +111,6 @@ When `true`, clicking additional features adds them to the selection rather than
|
|
|
109
111
|
|
|
110
112
|
---
|
|
111
113
|
|
|
112
|
-
### `contiguous`
|
|
113
|
-
**Type:** `boolean`
|
|
114
|
-
**Default:** `false`
|
|
115
|
-
|
|
116
|
-
When `true`, only features that touch or overlap the existing selection can be added. Uses spatial intersection to determine contiguity. Works with polygons, lines, and points.
|
|
117
|
-
|
|
118
|
-
---
|
|
119
|
-
|
|
120
114
|
### `deselectOnClickOutside`
|
|
121
115
|
**Type:** `boolean`
|
|
122
116
|
**Default:** `false`
|
|
@@ -207,7 +201,7 @@ interactPlugin.disable()
|
|
|
207
201
|
|
|
208
202
|
### `clear()`
|
|
209
203
|
|
|
210
|
-
Clear all selected features and markers
|
|
204
|
+
Clear all selected features and markers.
|
|
211
205
|
|
|
212
206
|
```js
|
|
213
207
|
interactPlugin.clear()
|
|
@@ -350,8 +344,7 @@ Emitted whenever the selected features or selected markers change.
|
|
|
350
344
|
],
|
|
351
345
|
selectedMarkers: ['...'], // array of selected marker IDs
|
|
352
346
|
selectionBounds: [west, south, east, north] | null,
|
|
353
|
-
|
|
354
|
-
canSplit: boolean // true when exactly one Polygon or MultiPolygon is selected
|
|
347
|
+
contiguous: boolean // true when 2+ features are selected and all form a single contiguous group
|
|
355
348
|
}
|
|
356
349
|
```
|
|
357
350
|
|
package/docusaurus.config.cjs
CHANGED
|
@@ -45,7 +45,7 @@ const config = {
|
|
|
45
45
|
return {
|
|
46
46
|
name: 'custom-css',
|
|
47
47
|
getClientModules() {
|
|
48
|
-
return [require.resolve('./docs/assets/css/docusaurus.
|
|
48
|
+
return [require.resolve('./docs/assets/css/docusaurus.scss')];
|
|
49
49
|
},
|
|
50
50
|
};
|
|
51
51
|
},
|
|
@@ -92,6 +92,7 @@ const config = {
|
|
|
92
92
|
{ text: 'Basic map', href: '/examples/basic-map' },
|
|
93
93
|
{ text: 'Button-triggered map', href: '/examples/button-map' },
|
|
94
94
|
{ text: 'Add a marker with a panel', href: '/examples/add-marker-with-panel' },
|
|
95
|
+
{ text: 'Toggle marker label on click', href: '/examples/toggle-marker-label' },
|
|
95
96
|
],
|
|
96
97
|
},
|
|
97
98
|
{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@defra/interactive-map",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.23-alpha",
|
|
4
4
|
"description": "An accessible map component",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -129,11 +129,13 @@
|
|
|
129
129
|
"@babel/plugin-transform-runtime": "^7.29.0",
|
|
130
130
|
"@babel/preset-env": "^7.28.0",
|
|
131
131
|
"@babel/preset-react": "^7.27.1",
|
|
132
|
-
"@defra/docusaurus-theme-govuk": "^0.0.
|
|
133
|
-
"@docusaurus/core": "^3.
|
|
134
|
-
"@docusaurus/module-type-aliases": "^3.
|
|
135
|
-
"@docusaurus/plugin-content-docs": "^3.
|
|
136
|
-
"@docusaurus/
|
|
132
|
+
"@defra/docusaurus-theme-govuk": "^0.0.22-alpha",
|
|
133
|
+
"@docusaurus/core": "^3.10.1",
|
|
134
|
+
"@docusaurus/module-type-aliases": "^3.10.1",
|
|
135
|
+
"@docusaurus/plugin-content-docs": "^3.10.1",
|
|
136
|
+
"@docusaurus/theme-common": "^3.10.1",
|
|
137
|
+
"@docusaurus/tsconfig": "^3.10.1",
|
|
138
|
+
"@easyops-cn/docusaurus-search-local": "^0.55.1",
|
|
137
139
|
"@esri/arcgis-rest-request": "^4.7.3",
|
|
138
140
|
"@mapbox/mapbox-gl-draw": "^1.5.0",
|
|
139
141
|
"@mdx-js/react": "^3.1.1",
|
|
@@ -206,8 +208,6 @@
|
|
|
206
208
|
},
|
|
207
209
|
"dependencies": {
|
|
208
210
|
"@babel/runtime": "^7.28.6",
|
|
209
|
-
"@docusaurus/theme-common": "^3.9.2",
|
|
210
|
-
"@easyops-cn/docusaurus-search-local": "^0.55.0",
|
|
211
211
|
"@turf/area": "^7.2.0",
|
|
212
212
|
"@turf/bbox": "^7.3.4",
|
|
213
213
|
"@turf/bearing": "^7.3.3",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useContext as e,createContext as r}from"preact/compat";import{jsx as t,jsxs as i}from"preact/jsx-runtime";import o from"@babel/runtime/helpers/asyncToGenerator";import a from"@babel/runtime/helpers/defineProperty";var l=(e,r,t,i,o)=>{if(e.getLayer(r)){var a=((e,r,t)=>{if(!t||0===t.length)return e;var i=["!",["in",r?["to-string",["get",r]]:["to-string",["id"]],["literal",t.map(String)]]];return e?["all",e,i]:i})(t,i,o);e.setFilter(r,a)}},s=(e,r)=>{if(!e)return null;if("string"==typeof e)return e.trim();if("object"==typeof e){if(r&&e[r])return e[r];var t=Object.values(e)[0];return null!=t?t:null}return null},n=e=>!(!e.fillPattern&&!e.fillPatternSvgContent),y=function(e,r,t){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,o=((e,r)=>{return e.fillPatternSvgContent?e.fillPatternSvgContent:e.fillPattern&&null!==(t=null==r||null===(i=r.get(e.fillPattern))||void 0===i?void 0:i.svgContent)&&void 0!==t?t:null;var t,i})(e,t);if(!o)return null;var a=s(e.fillPatternForegroundColor,r)||"black",l=s(e.fillPatternBackgroundColor,r)||"transparent",n=Math.max(2,i);return"pattern-".concat((e=>{var r=0;for(var t of e)r=(r<<5)-r+t.codePointAt(0),r&=r;return Math.abs(r).toString(36)})(o+a+l),"-").concat(n,"x")},d=e=>"string"==typeof e.geojson&&!!e.idProperty&&"function"==typeof e.transformRequest,m=e=>{var r=0;for(var t of e)r=Math.trunc((r<<5)-r+t.codePointAt(0));return Math.abs(r).toString(36)},p=e=>{if(e.tiles){var r=Array.isArray(e.tiles)?e.tiles.join(","):e.tiles;return"tiles-".concat(m(r))}return e.geojson?d(e)?"geojson-dynamic-".concat(e.id):"string"==typeof e.geojson?"geojson-".concat(m(e.geojson)):"geojson-".concat(e.id):"source-".concat(e.id)},c=e=>{if((e=>!!e.symbol)(e))return{fillLayerId:null,strokeLayerId:null,symbolLayerId:e.id};var r=!!e.fill&&"transparent"!==e.fill||n(e),t=!!e.stroke,i=r?e.id:null,o=null;return t&&(o=r?"".concat(e.id,"-stroke"):e.id),{fillLayerId:i,strokeLayerId:o,symbolLayerId:null}},u=(e,r)=>({fillLayerId:"".concat(e,"-").concat(r),strokeLayerId:"".concat(e,"-").concat(r,"-stroke"),symbolLayerId:"".concat(e,"-").concat(r,"-symbol")}),f=e=>{var r;if(null!==(r=e.sublayers)&&void 0!==r&&r.length)return e.sublayers.flatMap(r=>{var{fillLayerId:t,strokeLayerId:i,symbolLayerId:o}=u(e.id,r.id);return[i,t,o]});var{fillLayerId:t,strokeLayerId:i,symbolLayerId:o}=c(e);return[i,t,o].filter(Boolean)},v=["stroke","fill","fillPattern","fillPatternSvgContent","symbol","symbolSvgContent"];function b(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);r&&(i=i.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,i)}return t}var g=(e,r)=>{return"symbolDescription"in r?r.symbolDescription:(t=r,v.some(e=>e in t)?void 0:e.symbolDescription);var t},h=(e,r)=>{var t,i,o,l,s,n,y,d,m,p,c,u,f,v,h,_,P,L=r.style||{},S=(_=e.filter,P=r.filter,_&&P?["all",_,P]:P||_||null);return function(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?b(Object(t),!0).forEach(function(r){a(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):b(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}({id:r.id,label:r.label,stroke:null!==(t=L.stroke)&&void 0!==t?t:e.stroke,strokeWidth:null!==(i=L.strokeWidth)&&void 0!==i?i:e.strokeWidth,strokeDashArray:null!==(o=L.strokeDashArray)&&void 0!==o?o:e.strokeDashArray,opacity:null!==(l=L.opacity)&&void 0!==l?l:e.opacity,keySymbolShape:null!==(s=L.keySymbolShape)&&void 0!==s?s:e.keySymbolShape,symbolDescription:g(e,L),showInKey:null!==(n=r.showInKey)&&void 0!==n?n:e.showInKey,showInMenu:null!==(y=r.showInMenu)&&void 0!==y&&y,filter:S,minZoom:e.minZoom,maxZoom:e.maxZoom,symbol:null!==(d=L.symbol)&&void 0!==d?d:e.symbol,symbolSvgContent:null!==(m=L.symbolSvgContent)&&void 0!==m?m:e.symbolSvgContent,symbolViewBox:null!==(p=L.symbolViewBox)&&void 0!==p?p:e.symbolViewBox,symbolAnchor:null!==(c=L.symbolAnchor)&&void 0!==c?c:e.symbolAnchor,symbolBackgroundColor:null!==(u=L.symbolBackgroundColor)&&void 0!==u?u:e.symbolBackgroundColor,symbolForegroundColor:null!==(f=L.symbolForegroundColor)&&void 0!==f?f:e.symbolForegroundColor,symbolHaloWidth:null!==(v=L.symbolHaloWidth)&&void 0!==v?v:e.symbolHaloWidth,symbolGraphic:null!==(h=L.symbolGraphic)&&void 0!==h?h:e.symbolGraphic},((e,r)=>{var t,i;return r.fillPattern||r.fillPatternSvgContent?{fillPattern:r.fillPattern,fillPatternSvgContent:r.fillPatternSvgContent,fillPatternForegroundColor:null!==(t=r.fillPatternForegroundColor)&&void 0!==t?t:e.fillPatternForegroundColor,fillPatternBackgroundColor:null!==(i=r.fillPatternBackgroundColor)&&void 0!==i?i:e.fillPatternBackgroundColor}:"fill"in r?{fill:r.fill}:{fill:e.fill,fillPattern:e.fillPattern,fillPatternSvgContent:e.fillPatternSvgContent,fillPatternForegroundColor:e.fillPatternForegroundColor,fillPatternBackgroundColor:e.fillPatternBackgroundColor}})(e,L))},_=(e,r)=>e.flatMap(e=>{var r,t=n(e)?[e]:[];return null!==(r=e.sublayers)&&void 0!==r&&r.length&&e.sublayers.forEach(r=>{var i=h(e,r);n(i)&&t.push(i)}),t}),P=new Set(["symbolBackgroundColor","symbolForegroundColor","symbolHaloWidth","symbolGraphic"]),L=e=>!(!e.symbol&&!e.symbolSvgContent),S=(e,r)=>e.symbolSvgContent?{svg:e.symbolSvgContent}:e.symbol?r.get(e.symbol):void 0,I=e=>{var[r,t]=e,i=(e=>e<=.25?"left":e>=.75?"right":"")(r),o=(e=>e<=.25?"top":e>=.75?"bottom":"")(t);return o+(i&&o?"-":"")+i||"center"},O=function(e,r,t){var i=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:2,a=S(e,t);if(!a)return null;var l=(e=>{if(!L(e))return{};var r={};return P.forEach(t=>{if(null!=e[t]){var i=t.charAt(6).toLowerCase()+t.slice(7);r[i]=e[t]}}),r})(e),s=i?t.resolveSelected(a,l,r):t.resolve(a,l,r);return"symbol-".concat(i?"sel-":"").concat((e=>{var r=0;for(var t of e)r=Math.trunc((r<<5)-r+t.codePointAt(0));return Math.abs(r).toString(36)})(s),"-").concat(o,"x")},R=e=>e.flatMap(e=>{var r,t=L(e)?[e]:[];return null!==(r=e.sublayers)&&void 0!==r&&r.length&&e.sublayers.forEach(r=>{var i=h(e,r);L(i)&&t.push(i)}),t});function j(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);r&&(i=i.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,i)}return t}function k(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?j(Object(t),!0).forEach(function(r){a(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):j(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}var w=(e,r,t,i,o,a,l)=>{var{mapStyleId:d,patternRegistry:m,pixelRatio:p=1}=l;if(t&&!e.getLayer(t)&&(r.fill||n(r))){var c=n(r)?y(r,d,m,p):null,u=c?{"fill-pattern":c,"fill-opacity":r.opacity||1}:{"fill-color":s(r.fill,d),"fill-opacity":r.opacity||1};e.addLayer(k({id:t,type:"fill",source:i,"source-layer":o,minzoom:r.minZoom,maxzoom:r.maxZoom,layout:{visibility:a},paint:u},r.filter?{filter:r.filter}:{}))}},C=(e,r,t,i,o,a,l)=>{t&&r.stroke&&!e.getLayer(t)&&e.addLayer(k({id:t,type:"line",source:i,"source-layer":o,minzoom:r.minZoom,maxzoom:r.maxZoom,layout:{visibility:a},paint:k({"line-color":s(r.stroke,l),"line-width":r.strokeWidth||1,"line-opacity":r.opacity||1},r.strokeDashArray?{"line-dasharray":r.strokeDashArray}:{})},r.filter?{filter:r.filter}:{}))},x=(e,r,t,i,o,a,l)=>{var{mapStyle:s,symbolRegistry:n,pixelRatio:y}=l;if(t&&!e.getLayer(t)){var d=S(r,n);if(d){var m=O(r,s,n,!1,y);if(m){var p=((e,r)=>{var t;return e.symbolAnchor?e.symbolAnchor:null!==(t=null==r?void 0:r.anchor)&&void 0!==t?t:[.5,.5]})(r,d);e.addLayer(k({id:t,type:"symbol",source:i,"source-layer":o,minzoom:r.minZoom,maxzoom:r.maxZoom,layout:{visibility:a,"icon-image":m,"icon-anchor":I(p),"icon-allow-overlap":!0}},r.filter?{filter:r.filter}:{}))}}}},D=(e,r,t,i,o,a)=>{var l,{mapStyle:s,symbolRegistry:n,patternRegistry:y,pixelRatio:d}=a,m=s.id,p=h(r,t),{fillLayerId:c,strokeLayerId:f,symbolLayerId:v}=u(r.id,t.id),b="hidden"===r.visibility,g="hidden"===(null===(l=r.sublayerVisibility)||void 0===l?void 0:l[t.id]),_=b||g?"none":"visible";L(p)&&n?x(e,p,v,i,o,_,{mapStyle:s,symbolRegistry:n,pixelRatio:d}):(w(e,p,c,i,o,_,{mapStyleId:m,patternRegistry:y,pixelRatio:d}),C(e,p,f,i,o,_,m))},E=(e,r,t,i,o,a)=>{var l,s,n=t.id,y=p(r);((e,r,t)=>{if(!e.getSource(t))if(r.tiles)e.addSource(t,{type:"vector",tiles:r.tiles,minzoom:r.minZoom||0,maxzoom:r.maxZoom||22});else if(r.geojson){var i=d(r)?{type:"FeatureCollection",features:[]}:r.geojson;e.addSource(t,{type:"geojson",data:i,generateId:!0})}})(e,r,y);var m=null!==(l=r.tiles)&&void 0!==l&&l.length?r.sourceLayer:void 0;if(null!==(s=r.sublayers)&&void 0!==s&&s.length)return r.sublayers.forEach(l=>{D(e,r,l,y,m,{mapStyle:t,symbolRegistry:i,patternRegistry:o,pixelRatio:a})}),y;var{fillLayerId:u,strokeLayerId:f,symbolLayerId:v}=c(r),b="hidden"===r.visibility?"none":"visible";return L(r)&&i?(x(e,r,v,y,m,b,{mapStyle:t,symbolRegistry:i,pixelRatio:a}),y):(w(e,r,u,y,m,b,{mapStyleId:n,patternRegistry:o,pixelRatio:a}),C(e,r,f,y,m,b,n),y)};new Set;function F(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);r&&(i=i.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,i)}return t}function M(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?F(Object(t),!0).forEach(function(r){a(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):F(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}var A={slot:"middle",open:!1,dismissible:!0,modal:!0};M({},A),M(M({},A),{},{width:"500px"}),M(M({},A),{},{width:"500px"});var B={small:1,medium:1.5,large:2};class Z{constructor(e,r,t){this._mapProvider=e,this._map=e.map,this._symbolRegistry=r,this._patternRegistry=t,this._datasetSourceMap=new Map,this._symbolLayerIds=new Set}init(e,r){var t=this;return o(function*(){var i=r.id,o=t._pixelRatio;yield Promise.all([t._mapProvider.registerPatterns(_(e,t._patternRegistry),i,t._patternRegistry),t._mapProvider.registerSymbols(R(e),r,t._symbolRegistry)]),t._symbolLayerIds.clear(),e.forEach(e=>t._addLayers(e,r,o)),yield new Promise(e=>t._map.once("idle",e))})()}destroy(e){var r=new Set;e.forEach(e=>{var t=p(e);this._getLayersUsingSource(t).forEach(e=>{this._map.getLayer(e)&&this._map.removeLayer(e)}),!r.has(t)&&this._map.getSource(t)&&(this._map.removeSource(t),r.add(t))}),this._datasetSourceMap.clear()}onStyleChange(e,r,t,i){var a=this;return o(function*(){yield new Promise(e=>a._map.once("idle",e));var o=r.id,l=a._pixelRatio;yield Promise.all([a._mapProvider.registerPatterns(_(e,a._patternRegistry),o,a._patternRegistry),a._mapProvider.registerSymbols(R(e),r,a._symbolRegistry)]),a._symbolLayerIds.clear(),e.forEach(e=>a._addLayers(e,r,l)),i.forEach(e=>e.reapply()),Object.entries(t).forEach(r=>{var[t,{idProperty:i,ids:o}]=r,l=e.find(e=>e.id===t);l&&a._applyFeatureFilter(l,i,o)})})()}onSizeChange(e,r){var t=this;return o(function*(){var i=t._pixelRatio;yield Promise.all([t._mapProvider.registerSymbols(R(e),r,t._symbolRegistry),t._mapProvider.registerPatterns(_(e,t._patternRegistry),r.id,t._patternRegistry)]),e.forEach(e=>{var o;if(f(e).forEach(o=>{if(t._symbolLayerIds.has(o)&&t._map.getLayer(o)){var a=O(e,r,t._symbolRegistry,!1,i);a&&t._map.setLayoutProperty(o,"icon-image",a)}}),n(e)){var{fillLayerId:a}=c(e);if(t._map.getLayer(a)){var l=y(e,r.id,t._patternRegistry,i);l&&t._map.setPaintProperty(a,"fill-pattern",l)}}null===(o=e.sublayers)||void 0===o||o.forEach(o=>{var a=h(e,o),{symbolLayerId:l,fillLayerId:s}=u(e.id,o.id);if(t._map.getLayer(l)){var d=O(a,r,t._symbolRegistry,!1,i);d&&t._map.setLayoutProperty(l,"icon-image",d)}if(n(a)&&t._map.getLayer(s)){var m=y(a,r.id,t._patternRegistry,i);m&&t._map.setPaintProperty(s,"fill-pattern",m)}})})})()}addDataset(e,r){this._addLayers(e,r,this._pixelRatio)}removeDataset(e,r){var t=p(e);f(e).forEach(e=>{this._map.getLayer(e)&&this._map.removeLayer(e),this._symbolLayerIds.delete(e)}),!r.some(r=>r.id!==e.id&&p(r)===t)&&this._map.getSource(t)&&this._map.removeSource(t),this._datasetSourceMap.delete(e.id)}showDataset(e){this._setDatasetVisibility(e,"visible")}hideDataset(e){this._setDatasetVisibility(e,"none")}showSublayer(e,r){var{fillLayerId:t,strokeLayerId:i,symbolLayerId:o}=u(e,r);[t,i,o].forEach(e=>{this._map.getLayer(e)&&this._map.setLayoutProperty(e,"visibility","visible")})}hideSublayer(e,r){var{fillLayerId:t,strokeLayerId:i,symbolLayerId:o}=u(e,r);[t,i,o].forEach(e=>{this._map.getLayer(e)&&this._map.setLayoutProperty(e,"visibility","none")})}showFeatures(e,r,t){this._applyFeatureFilter(e,r,t)}hideFeatures(e,r,t){this._applyFeatureFilter(e,r,t)}setStyle(e,r){var t=this;return o(function*(){var i=r.id,o=t._pixelRatio;f(e).forEach(e=>{t._map.getLayer(e)&&t._map.removeLayer(e),t._symbolLayerIds.delete(e)}),yield Promise.all([t._mapProvider.registerPatterns(_([e],t._patternRegistry),i,t._patternRegistry),t._mapProvider.registerSymbols(R([e]),r,t._symbolRegistry)]),t._addLayers(e,r,o)})()}setSublayerStyle(e,r,t){var i=this;return o(function*(){var o,a,l=t.id,s=i._pixelRatio,{fillLayerId:n,strokeLayerId:y,symbolLayerId:d}=u(e.id,r);[n,y,d].forEach(e=>{i._map.getLayer(e)&&i._map.removeLayer(e),i._symbolLayerIds.delete(e)});var m=null===(o=e.sublayers)||void 0===o?void 0:o.find(e=>e.id===r);if(m){yield Promise.all([i._mapProvider.registerPatterns(_([e],i._patternRegistry),l,i._patternRegistry),i._mapProvider.registerSymbols(R([e]),t,i._symbolRegistry)]);var p=i._datasetSourceMap.get(e.id),c=null!==(a=e.tiles)&&void 0!==a&&a.length?e.sourceLayer:void 0;D(i._map,e,m,p,c,{mapStyle:t,symbolRegistry:i._symbolRegistry,patternRegistry:i._patternRegistry,pixelRatio:s}),i._maintainSymbolOrdering(e)}})()}setOpacity(e,r){var t=this._map.getStyle();null!=t&&t.layers&&t.layers.filter(r=>r.id===e||r.id.startsWith("".concat(e,"-"))).forEach(e=>this._setPaintOpacity(e.id,r))}setSublayerOpacity(e,r,t){var{fillLayerId:i,strokeLayerId:o}=u(e,r);this._setPaintOpacity(i,t),this._setPaintOpacity(o,t)}setData(e,r){var t=this._datasetSourceMap.get(e);if(t){var i=this._map.getSource(t);i&&"function"==typeof i.setData&&i.setData(r)}}get _pixelRatio(){return this._mapProvider.map.getPixelRatio()*(B[this._mapProvider.mapSize]||1)}_addLayers(e,r,t){var i=E(this._map,e,r,this._symbolRegistry,this._patternRegistry,t);this._datasetSourceMap.set(e.id,i),this._maintainSymbolOrdering(e)}_getFirstSymbolLayerId(){var e,r=this._map.getStyle();if(null==r||!r.layers)return null;var t=r.layers.find(e=>this._symbolLayerIds.has(e.id));return null!==(e=null==t?void 0:t.id)&&void 0!==e?e:null}_maintainSymbolOrdering(e){var r=f(e).filter(e=>e&&this._map.getLayer(e));r.forEach(e=>{var r;"symbol"===(null===(r=this._map.getLayer(e))||void 0===r?void 0:r.type)?this._symbolLayerIds.add(e):this._symbolLayerIds.delete(e)});var t=this._getFirstSymbolLayerId();t&&r.forEach(e=>{this._symbolLayerIds.has(e)||this._map.moveLayer(e,t)})}_setDatasetVisibility(e,r){var t=this._map.getStyle();null!=t&&t.layers&&t.layers.filter(r=>r.id===e||r.id.startsWith("".concat(e,"-"))).forEach(e=>this._map.setLayoutProperty(e.id,"visibility",r))}_applyFeatureFilter(e,r,t){var i;if(null!==(i=e.sublayers)&&void 0!==i&&i.length)e.sublayers.forEach(i=>{var{fillLayerId:o,strokeLayerId:a}=u(e.id,i.id),s=e.filter&&i.filter?["all",e.filter,i.filter]:i.filter||e.filter||null;l(this._map,o,s,r,t),l(this._map,a,s,r,t)});else{var{fillLayerId:o,strokeLayerId:a,symbolLayerId:s}=c(e),n=e.filter||null;[o,a,s].filter(Boolean).forEach(e=>{l(this._map,e,n,r,t)})}}_setPaintOpacity(e,r){var t=this._map.getLayer(e);if(t){var i={line:"line-opacity",symbol:"icon-opacity"}[t.type]||"fill-opacity";this._map.setPaintProperty(e,i,r)}}_getLayersUsingSource(e){var r=this._map.getStyle();return null!=r&&r.layers?r.layers.filter(r=>r.source===e).map(e=>e.id):[]}}export{Z as default};
|
|
1
|
+
import e from"@babel/runtime/helpers/asyncToGenerator";import t from"@babel/runtime/helpers/defineProperty";var r=(e,t,r,a,i)=>{if(e.getLayer(t)){var o=((e,t,r)=>{if(!r||0===r.length)return e;var a=["!",["in",t?["to-string",["get",t]]:["to-string",["id"]],["literal",r.map(String)]]];return e?["all",e,a]:a})(r,a,i);e.setFilter(t,o)}},a=e=>!(!e.fillPattern&&!e.fillPatternSvgContent),i=e=>"string"==typeof e.geojson&&!!e.idProperty&&"function"==typeof e.transformRequest,o=e=>{var t=0;for(var r of e)t=Math.trunc((t<<5)-t+r.codePointAt(0));return Math.abs(t).toString(36)},l=e=>{if(e.tiles){var t=Array.isArray(e.tiles)?e.tiles.join(","):e.tiles;return"tiles-".concat(o(t))}return e.geojson?i(e)?"geojson-dynamic-".concat(e.id):"string"==typeof e.geojson?"geojson-".concat(o(e.geojson)):"geojson-".concat(e.id):"source-".concat(e.id)},s=e=>{if((e=>!!e.symbol)(e))return{fillLayerId:null,strokeLayerId:null,symbolLayerId:e.id};var t=!!e.fill&&"transparent"!==e.fill||a(e),r=!!e.stroke,i=t?e.id:null,o=null;return r&&(o=t?"".concat(e.id,"-stroke"):e.id),{fillLayerId:i,strokeLayerId:o,symbolLayerId:null}},n=(e,t)=>({fillLayerId:"".concat(e,"-").concat(t),strokeLayerId:"".concat(e,"-").concat(t,"-stroke"),symbolLayerId:"".concat(e,"-").concat(t,"-symbol")}),y=e=>{var t;if(null!==(t=e.sublayers)&&void 0!==t&&t.length)return e.sublayers.flatMap(t=>{var{fillLayerId:r,strokeLayerId:a,symbolLayerId:i}=n(e.id,t.id);return[a,r,i]});var{fillLayerId:r,strokeLayerId:a,symbolLayerId:i}=s(e);return[a,r,i].filter(Boolean)},d=(e,t)=>{if(!e)return null;if("string"==typeof e)return e.trim();if("object"==typeof e){if(t&&e[t])return e[t];var r=Object.values(e)[0];return null!=r?r:null}return null},m=["stroke","fill","fillPattern","fillPatternSvgContent","symbol","symbolSvgContent"];function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}var u=(e,t)=>{return"symbolDescription"in t?t.symbolDescription:(r=t,m.some(e=>e in r)?void 0:e.symbolDescription);var r},c=(e,r)=>{var a,i,o,l,s,n,y,d,m,c,f,b,v,g,h,_,L,P=r.style||{},S=(_=e.filter,L=r.filter,_&&L?["all",_,L]:L||_||null);return function(e){for(var r=1;r<arguments.length;r++){var a=null!=arguments[r]?arguments[r]:{};r%2?p(Object(a),!0).forEach(function(r){t(e,r,a[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):p(Object(a)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))})}return e}({id:r.id,label:r.label,stroke:null!==(a=P.stroke)&&void 0!==a?a:e.stroke,strokeWidth:null!==(i=P.strokeWidth)&&void 0!==i?i:e.strokeWidth,strokeDashArray:null!==(o=P.strokeDashArray)&&void 0!==o?o:e.strokeDashArray,opacity:null!==(l=P.opacity)&&void 0!==l?l:e.opacity,keySymbolShape:null!==(s=P.keySymbolShape)&&void 0!==s?s:e.keySymbolShape,symbolDescription:u(e,P),showInKey:null!==(n=r.showInKey)&&void 0!==n?n:e.showInKey,showInMenu:null!==(y=r.showInMenu)&&void 0!==y&&y,filter:S,minZoom:e.minZoom,maxZoom:e.maxZoom,symbol:null!==(d=P.symbol)&&void 0!==d?d:e.symbol,symbolSvgContent:null!==(m=P.symbolSvgContent)&&void 0!==m?m:e.symbolSvgContent,symbolViewBox:null!==(c=P.symbolViewBox)&&void 0!==c?c:e.symbolViewBox,symbolAnchor:null!==(f=P.symbolAnchor)&&void 0!==f?f:e.symbolAnchor,symbolBackgroundColor:null!==(b=P.symbolBackgroundColor)&&void 0!==b?b:e.symbolBackgroundColor,symbolForegroundColor:null!==(v=P.symbolForegroundColor)&&void 0!==v?v:e.symbolForegroundColor,symbolHaloWidth:null!==(g=P.symbolHaloWidth)&&void 0!==g?g:e.symbolHaloWidth,symbolGraphic:null!==(h=P.symbolGraphic)&&void 0!==h?h:e.symbolGraphic},((e,t)=>{var r,a;return t.fillPattern||t.fillPatternSvgContent?{fillPattern:t.fillPattern,fillPatternSvgContent:t.fillPatternSvgContent,fillPatternForegroundColor:null!==(r=t.fillPatternForegroundColor)&&void 0!==r?r:e.fillPatternForegroundColor,fillPatternBackgroundColor:null!==(a=t.fillPatternBackgroundColor)&&void 0!==a?a:e.fillPatternBackgroundColor}:"fill"in t?{fill:t.fill}:{fill:e.fill,fillPattern:e.fillPattern,fillPatternSvgContent:e.fillPatternSvgContent,fillPatternForegroundColor:e.fillPatternForegroundColor,fillPatternBackgroundColor:e.fillPatternBackgroundColor}})(e,P))},f=(e,t)=>e.flatMap(e=>{var t,r=a(e)?[e]:[];return null!==(t=e.sublayers)&&void 0!==t&&t.length&&e.sublayers.forEach(t=>{var i=c(e,t);a(i)&&r.push(i)}),r}),b=e=>!(!e.symbol&&!e.symbolSvgContent),v=e=>{var[t,r]=e,a=(e=>e<=.25?"left":e>=.75?"right":"")(t),i=(e=>e<=.25?"top":e>=.75?"bottom":"")(r);return i+(a&&i?"-":"")+a||"center"},g=e=>e.flatMap(e=>{var t,r=b(e)?[e]:[];return null!==(t=e.sublayers)&&void 0!==t&&t.length&&e.sublayers.forEach(t=>{var a=c(e,t);b(a)&&r.push(a)}),r});function h(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function _(e){for(var r=1;r<arguments.length;r++){var a=null!=arguments[r]?arguments[r]:{};r%2?h(Object(a),!0).forEach(function(r){t(e,r,a[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):h(Object(a)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))})}return e}var L=(e,t,r,i,o,l,s)=>{var{mapStyleId:n,patternRegistry:y,pixelRatio:m=1}=s;if(r&&!e.getLayer(r)&&(t.fill||a(t))){var p=a(t)?y.getPatternImageId(t,n,m):null,u=p?{"fill-pattern":p,"fill-opacity":t.opacity||1}:{"fill-color":d(t.fill,n),"fill-opacity":t.opacity||1};e.addLayer(_({id:r,type:"fill",source:i,"source-layer":o,minzoom:t.minZoom,maxzoom:t.maxZoom,layout:{visibility:l},paint:u},t.filter?{filter:t.filter}:{}))}},P=(e,t,r,a,i,o,l)=>{r&&t.stroke&&!e.getLayer(r)&&e.addLayer(_({id:r,type:"line",source:a,"source-layer":i,minzoom:t.minZoom,maxzoom:t.maxZoom,layout:{visibility:o},paint:_({"line-color":d(t.stroke,l),"line-width":t.strokeWidth||1,"line-opacity":t.opacity||1},t.strokeDashArray?{"line-dasharray":t.strokeDashArray}:{})},t.filter?{filter:t.filter}:{}))},S=(e,t,r,a,i,o,l)=>{var{mapStyle:s,symbolRegistry:n,pixelRatio:y}=l;if(r&&!e.getLayer(r)){var d=n.getSymbolDef(t);if(d){var m=n.getSymbolImageId(t,s,!1,y);if(m){var p=((e,t)=>{var r;return e.symbolAnchor?e.symbolAnchor:null!==(r=null==t?void 0:t.anchor)&&void 0!==r?r:[.5,.5]})(t,d);e.addLayer(_({id:r,type:"symbol",source:a,"source-layer":i,minzoom:t.minZoom,maxzoom:t.maxZoom,layout:{visibility:o,"icon-image":m,"icon-anchor":v(p),"icon-allow-overlap":!0}},t.filter?{filter:t.filter}:{}))}}}},I=(e,t,r,a,i,o)=>{var l,{mapStyle:s,symbolRegistry:y,patternRegistry:d,pixelRatio:m}=o,p=s.id,u=c(t,r),{fillLayerId:f,strokeLayerId:v,symbolLayerId:g}=n(t.id,r.id),h="hidden"===t.visibility,_="hidden"===(null===(l=t.sublayerVisibility)||void 0===l?void 0:l[r.id]),I=h||_?"none":"visible";b(u)&&y?S(e,u,g,a,i,I,{mapStyle:s,symbolRegistry:y,pixelRatio:m}):(L(e,u,f,a,i,I,{mapStyleId:p,patternRegistry:d,pixelRatio:m}),P(e,u,v,a,i,I,p))},R=(e,t,r,a,o,n)=>{var y,d,m=r.id,p=l(t);((e,t,r)=>{if(!e.getSource(r))if(t.tiles)e.addSource(r,{type:"vector",tiles:t.tiles,minzoom:t.minZoom||0,maxzoom:t.maxZoom||22});else if(t.geojson){var a=i(t)?{type:"FeatureCollection",features:[]}:t.geojson;e.addSource(r,{type:"geojson",data:a,generateId:!0})}})(e,t,p);var u=null!==(y=t.tiles)&&void 0!==y&&y.length?t.sourceLayer:void 0;if(null!==(d=t.sublayers)&&void 0!==d&&d.length)return t.sublayers.forEach(i=>{I(e,t,i,p,u,{mapStyle:r,symbolRegistry:a,patternRegistry:o,pixelRatio:n})}),p;var{fillLayerId:c,strokeLayerId:f,symbolLayerId:v}=s(t),g="hidden"===t.visibility?"none":"visible";return b(t)&&a?(S(e,t,v,p,u,g,{mapStyle:r,symbolRegistry:a,pixelRatio:n}),p):(L(e,t,c,p,u,g,{mapStyleId:m,patternRegistry:o,pixelRatio:n}),P(e,t,f,p,u,g,m),p)};class O{constructor(e,t,r){this._mapProvider=e,this._map=e.map,this._symbolRegistry=t,this._patternRegistry=r,this._datasetSourceMap=new Map,this._symbolLayerIds=new Set}init(t,r){var a=this;return e(function*(){var e=r.id;yield Promise.all([a._mapProvider.addPatternsToMap(f(t,a._patternRegistry),e,a._patternRegistry),a._mapProvider.addSymbolsToMap(g(t),r,a._symbolRegistry)]),a._symbolLayerIds.clear(),t.forEach(e=>a._addLayers(e,r)),yield new Promise(e=>a._map.once("idle",e))})()}destroy(e){var t=new Set;e.forEach(e=>{var r=l(e);this._getLayersUsingSource(r).forEach(e=>{this._map.getLayer(e)&&this._map.removeLayer(e)}),!t.has(r)&&this._map.getSource(r)&&(this._map.removeSource(r),t.add(r))}),this._datasetSourceMap.clear()}onStyleChange(t,r,a,i){var o=this;return e(function*(){yield new Promise(e=>o._map.once("idle",e));var e=r.id;yield Promise.all([o._mapProvider.addPatternsToMap(f(t,o._patternRegistry),e,o._patternRegistry),o._mapProvider.addSymbolsToMap(g(t),r,o._symbolRegistry)]),o._symbolLayerIds.clear(),t.forEach(e=>o._addLayers(e,r)),i.forEach(e=>e.reapply()),Object.entries(a).forEach(e=>{var[r,{idProperty:a,ids:i}]=e,l=t.find(e=>e.id===r);l&&o._applyFeatureFilter(l,a,i)})})()}onSizeChange(t,r){var i=this;return e(function*(){yield Promise.all([i._mapProvider.addSymbolsToMap(g(t),r,i._symbolRegistry),i._mapProvider.addPatternsToMap(f(t,i._patternRegistry),r.id,i._patternRegistry)]),t.forEach(e=>{var t;if(y(e).forEach(t=>{if(i._symbolLayerIds.has(t)&&i._map.getLayer(t)){var a=i._symbolRegistry.getSymbolImageId(e,r,!1,i._pixelRatio);a&&i._map.setLayoutProperty(t,"icon-image",a)}}),a(e)){var{fillLayerId:o}=s(e);if(i._map.getLayer(o)){var l=i._patternRegistry.getPatternImageId(e,r.id,i._pixelRatio);l&&i._map.setPaintProperty(o,"fill-pattern",l)}}null===(t=e.sublayers)||void 0===t||t.forEach(t=>{var o=c(e,t),{symbolLayerId:l,fillLayerId:s}=n(e.id,t.id);if(i._map.getLayer(l)){var y=i._symbolRegistry.getSymbolImageId(o,r,!1,i._pixelRatio);y&&i._map.setLayoutProperty(l,"icon-image",y)}if(a(o)&&i._map.getLayer(s)){var d=i._patternRegistry.getPatternImageId(o,r.id,i._pixelRatio);d&&i._map.setPaintProperty(s,"fill-pattern",d)}})})})()}addDataset(e,t){this._addLayers(e,t)}removeDataset(e,t){var r=l(e);y(e).forEach(e=>{this._map.getLayer(e)&&this._map.removeLayer(e),this._symbolLayerIds.delete(e)}),!t.some(t=>t.id!==e.id&&l(t)===r)&&this._map.getSource(r)&&this._map.removeSource(r),this._datasetSourceMap.delete(e.id)}showDataset(e){this._setDatasetVisibility(e,"visible")}hideDataset(e){this._setDatasetVisibility(e,"none")}showSublayer(e,t){var{fillLayerId:r,strokeLayerId:a,symbolLayerId:i}=n(e,t);[r,a,i].forEach(e=>{this._map.getLayer(e)&&this._map.setLayoutProperty(e,"visibility","visible")})}hideSublayer(e,t){var{fillLayerId:r,strokeLayerId:a,symbolLayerId:i}=n(e,t);[r,a,i].forEach(e=>{this._map.getLayer(e)&&this._map.setLayoutProperty(e,"visibility","none")})}showFeatures(e,t,r){this._applyFeatureFilter(e,t,r)}hideFeatures(e,t,r){this._applyFeatureFilter(e,t,r)}setStyle(t,r){var a=this;return e(function*(){var e=r.id;y(t).forEach(e=>{a._map.getLayer(e)&&a._map.removeLayer(e),a._symbolLayerIds.delete(e)}),yield Promise.all([a._mapProvider.addPatternsToMap(f([t],a._patternRegistry),e,a._patternRegistry),a._mapProvider.addSymbolsToMap(g([t]),r,a._symbolRegistry)]),a._addLayers(t,r)})()}setSublayerStyle(t,r,a){var i=this;return e(function*(){var e,o,l=a.id,s=i._pixelRatio,{fillLayerId:y,strokeLayerId:d,symbolLayerId:m}=n(t.id,r);[y,d,m].forEach(e=>{i._map.getLayer(e)&&i._map.removeLayer(e),i._symbolLayerIds.delete(e)});var p=null===(e=t.sublayers)||void 0===e?void 0:e.find(e=>e.id===r);if(p){yield Promise.all([i._mapProvider.addPatternsToMap(f([t],i._patternRegistry),l,i._patternRegistry),i._mapProvider.addSymbolsToMap(g([t]),a,i._symbolRegistry)]);var u=i._datasetSourceMap.get(t.id),c=null!==(o=t.tiles)&&void 0!==o&&o.length?t.sourceLayer:void 0;I(i._map,t,p,u,c,{mapStyle:a,symbolRegistry:i._symbolRegistry,patternRegistry:i._patternRegistry,pixelRatio:s}),i._maintainSymbolOrdering(t)}})()}setOpacity(e,t){var r=this._map.getStyle();null!=r&&r.layers&&r.layers.filter(t=>t.id===e||t.id.startsWith("".concat(e,"-"))).forEach(e=>this._setPaintOpacity(e.id,t))}setSublayerOpacity(e,t,r){var{fillLayerId:a,strokeLayerId:i}=n(e,t);this._setPaintOpacity(a,r),this._setPaintOpacity(i,r)}setData(e,t){var r=this._datasetSourceMap.get(e);if(r){var a=this._map.getSource(r);a&&"function"==typeof a.setData&&a.setData(t)}}get _pixelRatio(){return this._mapProvider.map.getPixelRatio()}_addLayers(e,t){var r=R(this._map,e,t,this._symbolRegistry,this._patternRegistry,this._pixelRatio);this._datasetSourceMap.set(e.id,r),this._maintainSymbolOrdering(e)}_getFirstSymbolLayerId(){var e,t=this._map.getStyle();if(null==t||!t.layers)return null;var r=t.layers.find(e=>this._symbolLayerIds.has(e.id));return null!==(e=null==r?void 0:r.id)&&void 0!==e?e:null}_maintainSymbolOrdering(e){var t=y(e).filter(e=>e&&this._map.getLayer(e));t.forEach(e=>{var t;"symbol"===(null===(t=this._map.getLayer(e))||void 0===t?void 0:t.type)?this._symbolLayerIds.add(e):this._symbolLayerIds.delete(e)});var r=this._getFirstSymbolLayerId();r&&t.forEach(e=>{this._symbolLayerIds.has(e)||this._map.moveLayer(e,r)})}_setDatasetVisibility(e,t){var r=this._map.getStyle();null!=r&&r.layers&&r.layers.filter(t=>t.id===e||t.id.startsWith("".concat(e,"-"))).forEach(e=>this._map.setLayoutProperty(e.id,"visibility",t))}_applyFeatureFilter(e,t,a){var i;if(null!==(i=e.sublayers)&&void 0!==i&&i.length)e.sublayers.forEach(i=>{var{fillLayerId:o,strokeLayerId:l}=n(e.id,i.id),s=e.filter&&i.filter?["all",e.filter,i.filter]:i.filter||e.filter||null;r(this._map,o,s,t,a),r(this._map,l,s,t,a)});else{var{fillLayerId:o,strokeLayerId:l,symbolLayerId:y}=s(e),d=e.filter||null;[o,l,y].filter(Boolean).forEach(e=>{r(this._map,e,d,t,a)})}}_setPaintOpacity(e,t){var r=this._map.getLayer(e);if(r){var a={line:"line-opacity",symbol:"icon-opacity"}[r.type]||"fill-opacity";this._map.setPaintProperty(e,a,t)}}_getLayersUsingSource(e){var t=this._map.getStyle();return null!=t&&t.layers?t.layers.filter(t=>t.source===e).map(e=>e.id):[]}}export{O as default};
|
|
@@ -54,11 +54,11 @@
|
|
|
54
54
|
.am-c-datasets-key-symbol {
|
|
55
55
|
position: relative;
|
|
56
56
|
flex-shrink: 0;
|
|
57
|
-
margin: 0 13px 0
|
|
57
|
+
margin: 0 13px 0 3px;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
.am-c-datasets-key-symbol--point {
|
|
61
|
-
margin: -
|
|
61
|
+
margin: -12px 1px -12px -9px;
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
.im-c-datasets-layers--has-groups > *:not(:first-child) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useRef as e,useEffect as t}from"preact/compat";import{jsx as r,jsxs as a}from"preact/jsx-runtime";import o from"@babel/runtime/helpers/defineProperty";import l from"@babel/runtime/helpers/asyncToGenerator";function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function n(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var s={minZoom:6,maxZoom:24,showInKey:!1,showInMenu:!1,visibility:"visible",style:{stroke:"#d4351c",strokeWidth:2,fill:"transparent",symbolDescription:"red outline"}},d=["stroke","strokeWidth","strokeDashArray","fill","fillPattern","fillPatternSvgContent","fillPatternForegroundColor","fillPatternBackgroundColor","opacity","symbolDescription","keySymbolShape","symbol","symbolSvgContent","symbolViewBox","symbolAnchor","symbolBackgroundColor","symbolForegroundColor","symbolHaloWidth","symbolGraphic"],u=["stroke","fill","fillPattern","fillPatternSvgContent","symbol","symbolSvgContent"],c=e=>u.some(t=>t in e),p=(e,t)=>{var r=e.style||{},a=n(n({},t.style),r);!("symbolDescription"in r)&&c(r)&&delete a.symbolDescription;var o=n({},e);delete o.style,d.forEach(e=>delete o[e]);var l=n({},t);return delete l.style,n(n(n({},l),o),a)};function y(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function b(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?y(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):y(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function v(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function f(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?v(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):v(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var m=e=>{var t;if(null===(t=e.sublayers)||void 0===t||!t.length)return e;var r={};return e.sublayers.forEach(e=>{r[e.id]="visible"}),f(f({},e),{},{sublayerVisibility:r})},h={BUILD_KEY_GROUPS:e=>{var t=e.datasets||[],r=new Set,a=[],o=!1;return t.forEach(e=>{var l;if(e.showInKey&&"hidden"!==e.visibility)if(null!==(l=e.sublayers)&&void 0!==l&&l.length){var{sublayerVisibility:i=[]}=e;Object.values(i).some(e=>"hidden"!==e)&&(o=!0,a.push({type:"sublayers",dataset:e}))}else{if(e.groupLabel){if(r.has(e.groupLabel))return;return r.add(e.groupLabel),o=!0,void a.push({type:"group",groupLabel:e.groupLabel,datasets:t.filter(t=>{var r;return!(null!==(r=t.sublayers)&&void 0!==r&&r.length)&&t.groupLabel===e.groupLabel})})}a.push({type:"flat",dataset:e})}}),b(b({},e),{},{key:{items:a,hasGroups:o}})},SET_DATASETS:(e,t)=>{var{datasets:r,datasetDefaults:a}=t;return f(f({},e),{},{datasets:r.map(e=>m(p(e,a)))})},ADD_DATASET:(e,t)=>{var{dataset:r,datasetDefaults:a}=t;return f(f({},e),{},{datasets:[...e.datasets||[],m(p(r,a))]})},REMOVE_DATASET:(e,t)=>{var r,{id:a}=t;return f(f({},e),{},{datasets:(null===(r=e.datasets)||void 0===r?void 0:r.filter(e=>e.id!==a))||[]})},SET_DATASET_VISIBILITY:(e,t)=>{var r,{id:a,visibility:o}=t;return f(f({},e),{},{datasets:null===(r=e.datasets)||void 0===r?void 0:r.map(e=>e.id===a?f(f({},e),{},{visibility:o}):e)})},SET_GLOBAL_VISIBILITY:(e,t)=>{var r,{visibility:a}=t;return f(f({},e),{},{datasets:null===(r=e.datasets)||void 0===r?void 0:r.map(e=>f(f({},e),{},{visibility:a}))})},SET_SUBLAYER_VISIBILITY:(e,t)=>{var r,{datasetId:a,sublayerId:o,visibility:l}=t;return f(f({},e),{},{datasets:null===(r=e.datasets)||void 0===r?void 0:r.map(e=>e.id!==a?e:f(f({},e),{},{sublayerVisibility:f(f({},e.sublayerVisibility),{},{[o]:l})}))})},SET_DATASET_STYLE:(e,t)=>{var r,{datasetId:a,styleChanges:o}=t;return f(f({},e),{},{datasets:null===(r=e.datasets)||void 0===r?void 0:r.map(e=>e.id===a?f(f({},e),o):e)})},SET_SUBLAYER_STYLE:(e,t)=>{var r,{datasetId:a,sublayerId:o,styleChanges:l}=t;return f(f({},e),{},{datasets:null===(r=e.datasets)||void 0===r?void 0:r.map(e=>{var t;return e.id!==a?e:f(f({},e),{},{sublayers:null===(t=e.sublayers)||void 0===t?void 0:t.map(e=>e.id===o?f(f({},e),{},{style:f(f({},e.style),l)}):e)})})})},SET_OPACITY:(e,t)=>{var r,{datasetId:a,opacity:o}=t;return f(f({},e),{},{datasets:null===(r=e.datasets)||void 0===r?void 0:r.map(e=>e.id===a?f(f({},e),{},{opacity:o}):e)})},SET_GLOBAL_OPACITY:(e,t)=>{var r,{opacity:a}=t;return f(f({},e),{},{datasets:null===(r=e.datasets)||void 0===r?void 0:r.map(e=>f(f({},e),{},{opacity:a}))})},SET_SUBLAYER_OPACITY:(e,t)=>{var r,{datasetId:a,sublayerId:o,opacity:l}=t;return f(f({},e),{},{datasets:null===(r=e.datasets)||void 0===r?void 0:r.map(e=>{var t;return e.id!==a?e:f(f({},e),{},{sublayers:null===(t=e.sublayers)||void 0===t?void 0:t.map(e=>e.id===o?f(f({},e),{},{style:f(f({},e.style),{},{opacity:l})}):e)})})})},HIDE_FEATURES:(e,t)=>{var{layerId:r,idProperty:a,featureIds:o}=t,l=e.hiddenFeatures[r],i=(null==l?void 0:l.ids)||[],n=[...new Set([...i,...o])];return f(f({},e),{},{hiddenFeatures:f(f({},e.hiddenFeatures),{},{[r]:{idProperty:a,ids:n}})})},SHOW_FEATURES:(e,t)=>{var{layerId:r,featureIds:a}=t,o=e.hiddenFeatures[r];if(!o)return e;var l=o.ids.filter(e=>!a.includes(e));if(0===l.length){var i=f({},e.hiddenFeatures);return delete i[r],f(f({},e),{},{hiddenFeatures:i})}return f(f({},e),{},{hiddenFeatures:f(f({},e.hiddenFeatures),{},{[r]:f(f({},o),{},{ids:l})})})},SET_LAYER_ADAPTER:(e,t)=>f(f({},e),{},{layerAdapter:t})},g={APP_ADD_MARKER:"app:addmarker",APP_REMOVE_MARKER:"app:removemarker",APP_SET_MODE:"app:setmode",APP_REVERT_MODE:"app:revertmode",APP_ADD_BUTTON:"app:addbutton",APP_TOGGLE_BUTTON_STATE:"app:togglebuttonstate",APP_ADD_PANEL:"app:addpanel",APP_REMOVE_PANEL:"app:removepanel",APP_SHOW_PANEL:"app:showpanel",APP_HIDE_PANEL:"app:hidepanel",APP_ADD_CONTROL:"app:addcontrol",APP_READY:"app:ready",APP_OPENED:"app:opened",APP_CLOSED:"app:closed",APP_PANEL_OPENED:"app:panelopened",APP_PANEL_CLOSED:"app:panelclosed",MAP_SET_STYLE:"map:setstyle",MAP_SET_SIZE:"map:setsize",MAP_SET_PIXEL_RATIO:"map:setpixelratio",MAP_FIT_TO_BOUNDS:"map:fittobounds",MAP_SET_VIEW:"map:setview",MAP_INIT_MAP_STYLES:"map:initmapstyles",MAP_STYLE_CHANGE:"map:stylechange",MAP_LOADED:"map:loaded",MAP_READY:"map:ready",MAP_SIZE_CHANGE:"map:sizechange",MAP_FIRST_IDLE:"map:firstidle",MAP_MOVE_START:"map:movestart",MAP_MOVE:"map:move",MAP_MOVE_END:"map:moveend",MAP_STATE_UPDATED:"map:stateupdated",MAP_DATA_CHANGE:"map:datachange",MAP_RENDER:"map:render",MAP_CLICK:"map:click",MAP_DESTROY:"map:destroy"},O=function(){var e=l(function*(e,t,r,a){var o=r(e,t),l="string"==typeof o?{url:o}:o,{url:i,headers:n={}}=l,s=yield fetch(i,{headers:n,signal:a});if(!s.ok)throw new Error("Failed to fetch GeoJSON: ".concat(s.status," ").concat(s.statusText));var d=yield s.json();if("FeatureCollection"===d.type)return d;if("Feature"===d.type)return{type:"FeatureCollection",features:[d]};if(Array.isArray(d))return{type:"FeatureCollection",features:d};throw new Error("Invalid GeoJSON response")});return function(t,r,a,o){return e.apply(this,arguments)}}(),P=(e,t)=>!(!e||!t)&&!(e[2]<t[0]||e[0]>t[2]||e[3]<t[1]||e[1]>t[3]),S=e=>{var t=1/0,r=1/0,a=-1/0,o=-1/0,l=(e,i)=>{var n;0===i?(n=e,t=Math.min(t,n[0]),r=Math.min(r,n[1]),a=Math.max(a,n[0]),o=Math.max(o,n[1])):e.forEach(e=>l(e,i-1))};switch(e.type){case"Point":l(e.coordinates,0);break;case"LineString":case"MultiPoint":l(e.coordinates,1);break;case"Polygon":case"MultiLineString":l(e.coordinates,2);break;case"MultiPolygon":l(e.coordinates,3);break;case"GeometryCollection":e.geometries.forEach(e=>{var l=S(e);t=Math.min(t,l[0]),r=Math.min(r,l[1]),a=Math.max(a,l[2]),o=Math.max(o,l[3])});break;default:throw new Error("Unsupported geometry type: ".concat(e.type))}return[t,r,a,o]},_=e=>{var t,r,a,o,{dataset:i,map:n,onUpdate:s}=e,{geojson:d,idProperty:u,transformRequest:c,maxFeatures:p,minZoom:y=0}=i,b=new Map,v=null,f=null,m=()=>({type:"FeatureCollection",features:Array.from(b.values()).map(e=>e.feature)}),h=function(){var e=l(function*(){var e=n.getZoom();if(!(e<y)){var t=(e=>{var t=e.getBounds();return[t.getWest(),t.getSouth(),t.getEast(),t.getNorth()]})(n);if(!(v&&(r=v,a=t,r&&a&&a[0]>=r[0]&&a[1]>=r[1]&&a[2]<=r[2]&&a[3]<=r[3]))){var r,a,o,l;f&&f.abort(),f=new AbortController;try{var h={bbox:t,zoom:e,dataset:i},g=yield O(d,h,c,f.signal),_=Date.now();g.features.forEach(e=>{var t=(e=>{var t,r;return u&&null!==(t=null===(r=e.properties)||void 0===r?void 0:r[u])&&void 0!==t?t:e.id})(e);null!=t?b.set(t,{feature:e,bbox:S(e.geometry),lastSeenAt:_}):console.warn("Feature missing ID, skipping:",e)}),l=t,v=(o=v)?[Math.min(o[0],l[0]),Math.min(o[1],l[1]),Math.max(o[2],l[2]),Math.max(o[3],l[3])]:[...l];var E=b.size;(e=>{if(p&&!(b.size<=1.2*p)){var t=p,r=[],a=[];for(var[o,l]of b)P(l.bbox,e)?r.push(o):a.push({id:o,lastSeenAt:l.lastSeenAt});a.sort((e,t)=>e.lastSeenAt-t.lastSeenAt);for(var i=b.size-t,n=0;n<i&&n<a.length;n++)b.delete(a[n].id);if(b.size>t)for(var s=b.size-t,d=r.map(e=>({id:e,lastSeenAt:b.get(e).lastSeenAt})).sort((e,t)=>e.lastSeenAt-t.lastSeenAt),u=0;u<s&&u<d.length;u++)b.delete(d[u].id)}})(t),b.size<E&&(v=t),s(i.id,m())}catch(e){if("AbortError"===e.name)return;console.error("Failed to fetch dynamic GeoJSON for ".concat(i.id,":"),e)}}}});return function(){return e.apply(this,arguments)}}(),g=(t=h,r=200,(o=function(){for(var e=arguments.length,o=new Array(e),l=0;l<e;l++)o[l]=arguments[l];clearTimeout(a),a=setTimeout(()=>t(...o),r)}).cancel=()=>{clearTimeout(a),a=null},o),_=()=>{g()};return n.on("moveend",_),h(),{destroy(){n.off("moveend",_),g.cancel(),f&&f.abort()},clear(){b.clear(),v=null,s(i.id,{type:"FeatureCollection",features:[]})},refresh(){b.clear(),v=null,h()},getFeatureCount:()=>b.size,reapply(){b.size>0&&s(i.id,m())}}},E=e=>{var{adapter:t,pluginConfig:r,pluginStateRef:a,mapStyle:o,mapProvider:l,events:i,eventBus:n}=e,{datasets:d}=r,u=new Map,c=()=>a.current.datasets||d,y=d.map(e=>p(e,s));t.init(y,o).then(()=>{y.forEach(e=>{if((e=>"string"==typeof e.geojson&&!!e.idProperty&&"function"==typeof e.transformRequest)(e)){var r=_({dataset:e,map:l.map,onUpdate:(e,r)=>t.setData(e,r)});u.set(e.id,r)}}),n.emit("datasets:ready")});var b=o,v=e=>{b=e,t.onStyleChange(c(),e,a.current.hiddenFeatures||{},u)},f=()=>{t.onSizeChange(c(),b)};return n.on(i.MAP_SET_STYLE,v),n.on(i.MAP_SIZE_CHANGE,f),{remove(){n.off(i.MAP_SET_STYLE,v),n.off(i.MAP_SIZE_CHANGE,f),u.forEach(e=>e.destroy()),u.clear(),t.destroy(c())},refreshDataset(e){var t;null===(t=u.get(e))||void 0===t||t.refresh()},clearDatasetCache(e){var t;null===(t=u.get(e))||void 0===t||t.clear()},getFeatureCount(e){var t,r;return null!==(t=null===(r=u.get(e))||void 0===r?void 0:r.getFeatureCount())&&void 0!==t?t:null}}};var A=function(e,t){var r,a,{pluginState:o}=e,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{datasetId:i,sublayerId:n}=l;if(n){var s,d=t?"visible":"hidden";return null===(s=o.layerAdapter)||void 0===s||s[t?"showSublayer":"hideSublayer"](i,n),void o.dispatch({type:"SET_SUBLAYER_VISIBILITY",payload:{datasetId:i,sublayerId:n,visibility:d}})}if(i){if(null===(a=o.layerAdapter)||void 0===a||a[t?"showDataset":"hideDataset"](i),o.dispatch({type:"SET_DATASET_VISIBILITY",payload:{id:i,visibility:t?"visible":"hidden"}}),t){var u,c=null===(u=o.datasets)||void 0===u?void 0:u.find(e=>e.id===i);Object.entries((null==c?void 0:c.sublayerVisibility)||{}).forEach(e=>{var t,[r,a]=e;"hidden"===a&&(null===(t=o.layerAdapter)||void 0===t||t.hideSublayer(i,r))})}}else o.dispatch({type:"SET_GLOBAL_VISIBILITY",payload:{visibility:t?"visible":"hidden"}}),null===(r=o.datasets)||void 0===r||r.forEach(e=>{var r;null===(r=o.layerAdapter)||void 0===r||r[t?"showDataset":"hideDataset"](e.id),t&&Object.entries(e.sublayerVisibility||{}).forEach(t=>{var r,[a,l]=t;"hidden"===l&&(null===(r=o.layerAdapter)||void 0===r||r.hideSublayer(e.id,a))})})},j="im-c-datasets-layers__item-label govuk-label govuk-checkboxes__label",w=e=>{var t;return null===(t=e.sublayers)||void 0===t?void 0:t.some(e=>e.showInMenu)},k=(e,t)=>{if(!e)return null;if("string"==typeof e)return e.trim();if("object"==typeof e){if(t&&e[t])return e[t];var r=Object.values(e)[0];return null!=r?r:null}return null};function D(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}var I=(e,t)=>"symbolDescription"in t?t.symbolDescription:c(t)?void 0:e.symbolDescription,T=(e,t)=>{var r,a,l,i,n,s,d,u,c,p,y,b,v,f,m,h,g,O=t.style||{},P=(h=e.filter,g=t.filter,h&&g?["all",h,g]:g||h||null);return function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?D(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):D(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({id:t.id,label:t.label,stroke:null!==(r=O.stroke)&&void 0!==r?r:e.stroke,strokeWidth:null!==(a=O.strokeWidth)&&void 0!==a?a:e.strokeWidth,strokeDashArray:null!==(l=O.strokeDashArray)&&void 0!==l?l:e.strokeDashArray,opacity:null!==(i=O.opacity)&&void 0!==i?i:e.opacity,keySymbolShape:null!==(n=O.keySymbolShape)&&void 0!==n?n:e.keySymbolShape,symbolDescription:I(e,O),showInKey:null!==(s=t.showInKey)&&void 0!==s?s:e.showInKey,showInMenu:null!==(d=t.showInMenu)&&void 0!==d&&d,filter:P,minZoom:e.minZoom,maxZoom:e.maxZoom,symbol:null!==(u=O.symbol)&&void 0!==u?u:e.symbol,symbolSvgContent:null!==(c=O.symbolSvgContent)&&void 0!==c?c:e.symbolSvgContent,symbolViewBox:null!==(p=O.symbolViewBox)&&void 0!==p?p:e.symbolViewBox,symbolAnchor:null!==(y=O.symbolAnchor)&&void 0!==y?y:e.symbolAnchor,symbolBackgroundColor:null!==(b=O.symbolBackgroundColor)&&void 0!==b?b:e.symbolBackgroundColor,symbolForegroundColor:null!==(v=O.symbolForegroundColor)&&void 0!==v?v:e.symbolForegroundColor,symbolHaloWidth:null!==(f=O.symbolHaloWidth)&&void 0!==f?f:e.symbolHaloWidth,symbolGraphic:null!==(m=O.symbolGraphic)&&void 0!==m?m:e.symbolGraphic},((e,t)=>{var r,a;return t.fillPattern||t.fillPatternSvgContent?{fillPattern:t.fillPattern,fillPatternSvgContent:t.fillPatternSvgContent,fillPatternForegroundColor:null!==(r=t.fillPatternForegroundColor)&&void 0!==r?r:e.fillPatternForegroundColor,fillPatternBackgroundColor:null!==(a=t.fillPatternBackgroundColor)&&void 0!==a?a:e.fillPatternBackgroundColor}:"fill"in t?{fill:t.fill}:{fill:e.fill,fillPattern:e.fillPattern,fillPatternSvgContent:e.fillPatternSvgContent,fillPatternForegroundColor:e.fillPatternForegroundColor,fillPatternBackgroundColor:e.fillPatternBackgroundColor}})(e,O))},C=e=>{var{text:t}=e;return r("div",{className:"im-c-datasets-key",children:r("p",{className:"im-c-datasets-key__empty-message",children:t})})},L=new Set(["symbolBackgroundColor","symbolForegroundColor","symbolHaloWidth","symbolGraphic"]),M=e=>!(!e.symbol&&!e.symbolSvgContent),x=(e,t,r)=>e.replace(/\{\{foregroundColor\}\}/g,t||"black").replace(/\{\{backgroundColor\}\}/g,r);function N(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function R(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?N(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):N(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var F=20,B={xmlns:"http://www.w3.org/2000/svg",width:F,height:F,viewBox:"0 0 ".concat(F," ").concat(F),className:"am-c-datasets-key-symbol","aria-hidden":"true",focusable:"false"},Y=R(R({},B),{},{width:38,height:38,className:"am-c-datasets-key-symbol am-c-datasets-key-symbol--point"});function V(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function W(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?V(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):V(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var G=e=>{var{patternRegistry:t,mapStyle:o}=e,l=((e,t,r)=>{var a=((e,t)=>{return e.fillPatternSvgContent?e.fillPatternSvgContent:e.fillPattern&&null!==(r=null==t||null===(a=t.get(e.fillPattern))||void 0===a?void 0:a.svgContent)&&void 0!==r?r:null;var r,a})(e,r);if(!a)return null;var o=k(e.fillPatternForegroundColor,t)||"black",l=k(e.fillPatternBackgroundColor,t)||"transparent",i=k(e.stroke,t)||o;return{border:x('<path d="M19 2.862v14.275c0 1.028-.835 1.862-1.862 1.862H2.863c-1.028 0-1.862-.835-1.862-1.862V2.862C1.001 1.834 1.836 1 2.863 1h14.275C18.166 1 19 1.835 19 2.862z" fill="{{backgroundColor}}" stroke="{{foregroundColor}}" stroke-width="2"/>',i,l),content:x(a,o,l)}})(e,o.id,t);return a("svg",W(W({},B),{},{children:[r("g",{dangerouslySetInnerHTML:{__html:l.border}}),r("g",{transform:"translate(".concat(2,", ").concat(2,")"),dangerouslySetInnerHTML:{__html:l.content}})]}))};function U(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function H(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?U(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):U(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var K=e=>{var t,{symbolRegistry:a,mapStyle:o,symbolDef:l}=e,i=null!==(t=null==o?void 0:o.appColorScheme)&&void 0!==t?t:"light",n=H(H({},o),{},{mapColorScheme:i}),s=a.resolve(l,(e=>{if(!M(e))return{};var t={};return L.forEach(r=>{if(null!=e[r]){var a=r.charAt(6).toLowerCase()+r.slice(7);t[a]=e[r]}}),t})(e),n),d=((e,t)=>{var r;return e.symbolViewBox?e.symbolViewBox:null!==(r=null==t?void 0:t.viewBox)&&void 0!==r?r:"0 0 38 38"})(e,l);return r("svg",H(H({},Y),{},{viewBox:d,children:r("g",{dangerouslySetInnerHTML:{__html:s}})}))};function z(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function Z(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?z(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):z(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var J=e=>{var{mapStyle:t}=e;return r("svg",Z(Z({},B),{},{children:r("line",{x1:e.strokeWidth/2,y1:10,x2:F-e.strokeWidth/2,y2:10,stroke:k(e.stroke,t.id),strokeWidth:e.strokeWidth,strokeLinecap:"round"})}))};function q(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function X(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?q(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):q(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var Q=e=>{var{mapStyle:t}=e;return r("svg",X(X({},B),{},{children:r("rect",{x:e.strokeWidth/2,y:e.strokeWidth/2,width:F-e.strokeWidth,height:F-e.strokeWidth,rx:e.strokeWidth,ry:e.strokeWidth,fill:k(e.fill,t.id),stroke:k(e.stroke,t.id),strokeWidth:e.strokeWidth,strokeLinejoin:"round"})}))};function $(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function ee(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?$(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):$(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var te=e=>{var t,{symbolRegistry:a}=e,o=M(e)&&((e,t)=>e.symbolSvgContent?{svg:e.symbolSvgContent}:e.symbol?t.get(e.symbol):void 0)(e,a);return o?r(K,ee(ee({},e),{},{symbolDef:o})):(t=e).fillPattern||t.fillPatternSvgContent?r(G,ee({},e)):"line"===e.keySymbolShape?r(J,ee({},e)):r(Q,ee({},e))};function re(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function ae(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?re(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):re(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function oe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function le(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?oe(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):oe(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function ie(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function ne(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ie(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ie(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var se="[interactive-map]",de=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return console.warn(se,...t)},ue={InitComponent:function(r){var a,{pluginConfig:o,pluginState:i,appState:n,mapState:d,mapProvider:u,services:c}=r,{dispatch:p}=i,{eventBus:y,symbolRegistry:b,patternRegistry:v}=c,f=!(null===(a=u.map)||void 0===a||!a.getStyle()),m=e(i);m.current=i;var h=e(null);return t(()=>{var e,t,r,a,c=null===(e=null===(t=o.includeModes)||void 0===t?void 0:t.includes(n.mode))||void 0===e||e,O=null!==(r=null===(a=o.excludeModes)||void 0===a?void 0:a.includes(n.mode))&&void 0!==r&&r;if(f&&c&&!O&&!h.current){i.datasets||p({type:"SET_DATASETS",payload:{datasets:o.datasets,datasetDefaults:s}});var P=function(){var e=l(function*(){if(!o.layerAdapter)throw new Error("datasets plugin: no layerAdapter provided. Import and pass maplibreLayerAdapter or a custom adapter.");var{default:e}=yield o.layerAdapter.load(),t=new e(u,b,v);p({type:"SET_LAYER_ADAPTER",payload:t}),h.current=E({adapter:t,pluginConfig:o,pluginStateRef:m,mapStyle:d.mapStyle,mapProvider:u,events:g,eventBus:y})});return function(){return e.apply(this,arguments)}}();P()}},[f,n.mode]),t(()=>{p({type:"BUILD_KEY_GROUPS",payload:null})},[i.datasets]),t(()=>()=>{h.current&&(h.current.remove(),h.current=null),p({type:"SET_LAYER_ADAPTER",payload:null})},[]),null},reducer:{initialState:{datasets:null,key:{items:[],hasGroups:!1},hiddenFeatures:{},layerAdapter:null},actions:h},panels:[{id:"datasetsLayers",label:"Layers",mobile:{slot:"drawer",modal:!0,dismissible:!0},tablet:{slot:"left-top",dismissible:!0,exclusive:!0,width:"260px"},desktop:{slot:"left-top",modal:!1,dismissible:!0,exclusive:!0,width:"280px"},render:e=>{var t,o,l,{pluginState:i}=e,n=e=>{var{value:t,checked:r}=e.target;A({pluginState:i},r,{datasetId:t})},s=e=>{var{checked:t}=e.target,r=e.target.dataset.datasetId,a=e.target.dataset.sublayerId;A({pluginState:i},t,{datasetId:r,sublayerId:a})},d=e=>{var t="im-c-datasets-layers__item govuk-checkboxes govuk-checkboxes--small".concat("hidden"===e.visibility?"":" im-c-datasets-layers__item--checked");return r("div",{className:t,"data-module":"govuk-checkboxes",children:a("div",{className:"govuk-checkboxes__item",children:[r("input",{className:"govuk-checkboxes__input",id:e.id,name:"layers",type:"checkbox",value:e.id,checked:"hidden"!==e.visibility,onChange:n}),r("label",{className:j,htmlFor:e.id,children:e.label})]})},e.id)},u=(i.datasets||[]).filter(e=>e.showInMenu||w(e)),c=(t=u,o=new Set,l=[],t.forEach(e=>{if(w(e))l.push({type:"sublayers",dataset:e});else{if(e.groupLabel){if(o.has(e.groupLabel))return;return o.add(e.groupLabel),void l.push({type:"group",groupLabel:e.groupLabel,datasets:t.filter(t=>!w(t)&&t.groupLabel===e.groupLabel)})}l.push({type:"flat",dataset:e})}}),l),p=c.some(e=>"sublayers"===e.type||"group"===e.type),y="im-c-datasets-layers".concat(p?" im-c-datasets-layers--has-groups":"");return r("div",{className:y,children:c.map(e=>{if("sublayers"===e.type){var{dataset:t}=e,o=t.sublayers.filter(e=>e.showInMenu).some(e=>{var r;return"hidden"!==(null===(r=t.sublayerVisibility)||void 0===r?void 0:r[e.id])}),l="govuk-form-group im-c-datasets-layers-group".concat(o?" im-c-datasets-layers-group--items-checked":"");return r("div",{className:l,children:a("fieldset",{className:"im-c-datasets-layers-group__fieldset",children:[r("legend",{className:"im-c-datasets-layers-group__legend",children:t.label}),t.sublayers.filter(e=>e.showInMenu).map(e=>{var o,l="hidden"!==(null===(o=t.sublayerVisibility)||void 0===o?void 0:o[e.id]),i="".concat(t.id,"-").concat(e.id),n="im-c-datasets-layers__item govuk-checkboxes govuk-checkboxes--small".concat(l?" im-c-datasets-layers__item--checked":"");return r("div",{className:n,"data-module":"govuk-checkboxes",children:a("div",{className:"govuk-checkboxes__item",children:[r("input",{className:"govuk-checkboxes__input",id:i,type:"checkbox",checked:l,"data-dataset-id":t.id,"data-sublayer-id":e.id,onChange:s}),r("label",{className:j,htmlFor:i,children:e.label})]})},e.id)})]})},t.id)}if("group"===e.type){var i=e.datasets.some(e=>"hidden"!==e.visibility),n="govuk-form-group im-c-datasets-layers-group".concat(i?" im-c-datasets-layers-group--items-checked":"");return r("div",{className:n,children:a("fieldset",{className:"im-c-datasets-layers-group__fieldset",children:[r("legend",{className:"im-c-datasets-layers-group__legend",children:e.groupLabel}),e.datasets.map(e=>d(e))]})},e.groupLabel)}return d(e.dataset)})})}},{id:"datasetsKey",label:"Key",mobile:{slot:"drawer",modal:!0},tablet:{slot:"left-top",width:"260px"},desktop:{slot:"left-top",width:"280px"},render:e=>{var t,{pluginConfig:o,mapState:l,pluginState:i,services:n}=e;if(null==i||null===(t=i.key)||void 0===t||null===(t=t.items)||void 0===t||!t.length)return r(C,{text:o.noKeyItemText});var{mapStyle:s}=l,{symbolRegistry:d,patternRegistry:u}=n,c=(e,t)=>a("dl",{className:"im-c-datasets-key__item",children:[r("dt",{className:"im-c-datasets-key__item-symbol",children:r(te,ae(ae({},t),{},{symbolRegistry:d,patternRegistry:u,mapStyle:s}))}),a("dd",{className:"im-c-datasets-key__item-label",children:[t.label,t.symbolDescription&&a("span",{className:"govuk-visually-hidden",children:["(",k(t.symbolDescription,s.id),")"]})]})]},e),{items:p,hasGroups:y}=i.key,b="im-c-datasets-key".concat(y?" im-c-datasets-key--has-groups":"");return r("div",{className:b,children:p.map(e=>{if("sublayers"===e.type){var t="key-heading-".concat(e.dataset.id);return a("section",{className:"im-c-datasets-key__group","aria-labelledby":t,children:[r("h3",{id:t,className:"im-c-datasets-key__group-heading",children:e.dataset.label}),e.dataset.sublayers.filter(t=>{var r;return"hidden"!==(null===(r=e.dataset.sublayerVisibility)||void 0===r?void 0:r[t.id])}).map(t=>c("".concat(e.dataset.id,"-").concat(t.id),T(e.dataset,t)))]},e.dataset.id)}if("group"===e.type){var o="key-heading-".concat(e.groupLabel.toLowerCase().replaceAll(/\s+/g,"-"));return a("section",{className:"im-c-datasets-key__group","aria-labelledby":o,children:[r("h3",{id:o,className:"im-c-datasets-key__group-heading",children:e.groupLabel}),e.datasets.map(e=>c(e.id,e))]},e.groupLabel)}return c(e.dataset.id,e.dataset)})})}}],buttons:[{id:"datasetsLayers",label:"Layers",panelId:"datasetsLayers",iconId:"layers",excludeWhen:e=>{var{pluginConfig:t}=e;return!t.datasets.some(e=>{var t;return e.showInMenu||(null===(t=e.sublayers)||void 0===t?void 0:t.some(e=>e.showInMenu))})},mobile:{slot:"top-left",showLabel:!0},tablet:{slot:"top-left",showLabel:!0},desktop:{slot:"top-left",showLabel:!0}},{id:"datasetsKey",label:"Key",panelId:"datasetsKey",iconId:"key",excludeWhen:e=>{var{pluginConfig:t}=e;return!t.datasets.some(e=>e.showInKey)},mobile:{slot:"top-left",showLabel:!1},tablet:{slot:"top-left",showLabel:!0},desktop:{slot:"top-left",showLabel:!0}}],icons:[{id:"layers",svgContent:'<path d="M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z"></path><path d="M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12"></path><path d="M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17"></path>'},{id:"key",svgContent:'<path d="M3 5h.01"/><path d="M3 12h.01"/><path d="M3 19h.01"/><path d="M8 5h13"/><path d="M8 12h13"/><path d="M8 19h13"/>'}],api:{addDataset:(e,t)=>{var r,{pluginState:a,mapState:o}=e;null===(r=a.layerAdapter)||void 0===r||r.addDataset(le(le({},s),t),o.mapStyle),a.dispatch({type:"ADD_DATASET",payload:{dataset:t,datasetDefaults:s}})},removeDataset:(e,t)=>{var r,a,{pluginState:o}=e,l=null===(r=o.datasets)||void 0===r?void 0:r.find(e=>e.id===t);l&&(null===(a=o.layerAdapter)||void 0===a||a.removeDataset(l,o.datasets),o.dispatch({type:"REMOVE_DATASET",payload:{id:t}}))},setDatasetVisibility:A,setFeatureVisibility:function(e,t,r){var a,{pluginState:o}=e,{datasetId:l,idProperty:i=null}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=null===(a=o.datasets)||void 0===a?void 0:a.find(e=>e.id===l);if(n)if(t){var s,d=o.hiddenFeatures[l];if(!d)return;var u=d.ids.filter(e=>!r.includes(e));o.dispatch({type:"SHOW_FEATURES",payload:{layerId:l,featureIds:r}}),null===(s=o.layerAdapter)||void 0===s||s.showFeatures(n,i,u)}else{var c,p=o.hiddenFeatures[l],y=(null==p?void 0:p.ids)||[],b=[...new Set([...y,...r])];o.dispatch({type:"HIDE_FEATURES",payload:{layerId:l,idProperty:i,featureIds:r}}),null===(c=o.layerAdapter)||void 0===c||c.hideFeatures(n,i,b)}},setStyle:function(e,t){var r,a,{pluginState:o,mapState:l}=e,{datasetId:i,sublayerId:n}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s=null===(r=o.datasets)||void 0===r?void 0:r.find(e=>e.id===i);if(s)if(n){var d,u;o.dispatch({type:"SET_SUBLAYER_STYLE",payload:{datasetId:i,sublayerId:n,styleChanges:t}});var c=ne(ne({},s),{},{sublayers:null===(d=s.sublayers)||void 0===d?void 0:d.map(e=>e.id===n?ne(ne({},e),{},{style:ne(ne({},e.style),t)}):e)});null===(u=o.layerAdapter)||void 0===u||u.setSublayerStyle(c,n,l.mapStyle)}else{o.dispatch({type:"SET_DATASET_STYLE",payload:{datasetId:i,styleChanges:t}});var p=ne(ne({},s),t);null===(a=o.layerAdapter)||void 0===a||a.setStyle(p,l.mapStyle)}},getStyle:function(e){var t,r,{pluginState:a}=e,{datasetId:o,sublayerId:l}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=null===(t=a.datasets)||void 0===t?void 0:t.find(e=>e.id===o);if(!i)return null;if(l){var n,s,d=null===(n=i.sublayers)||void 0===n?void 0:n.find(e=>e.id===l);return null!==(s=null==d?void 0:d.style)&&void 0!==s?s:null}return null!==(r=i.style)&&void 0!==r?r:null},setOpacity:(e,t,r)=>{var a,{pluginState:o}=e,{datasetId:l,sublayerId:i}=r||{};if(i){var n,s;if(!(null===(n=o.datasets)||void 0===n?void 0:n.find(e=>e.id===l)))return;return o.dispatch({type:"SET_SUBLAYER_OPACITY",payload:{datasetId:l,sublayerId:i,opacity:t}}),void(null===(s=o.layerAdapter)||void 0===s||s.setSublayerOpacity(l,i,t))}if(l){var d,u;if(!(null===(d=o.datasets)||void 0===d?void 0:d.find(e=>e.id===l)))return;return o.dispatch({type:"SET_OPACITY",payload:{datasetId:l,opacity:t}}),void(null===(u=o.layerAdapter)||void 0===u||u.setOpacity(l,t))}o.dispatch({type:"SET_GLOBAL_OPACITY",payload:{opacity:t}}),null===(a=o.datasets)||void 0===a||a.forEach(e=>{var r;null===(r=o.layerAdapter)||void 0===r||r.setOpacity(e.id,t)})},getOpacity:(e,t)=>{var r,a,{pluginState:o}=e,{datasetId:l,sublayerId:i}=t||{};if(i){var n,s,d,u,c=null===(n=o.datasets)||void 0===n?void 0:n.find(e=>e.id===l),p=null==c||null===(s=c.sublayers)||void 0===s?void 0:s.find(e=>e.id===i);return null!==(d=null==p||null===(u=p.style)||void 0===u?void 0:u.opacity)&&void 0!==d?d:null}if(l){var y,b,v=null===(y=o.datasets)||void 0===y?void 0:y.find(e=>e.id===l);return null!==(b=null==v?void 0:v.opacity)&&void 0!==b?b:null}return null!==(r=null===(a=o.datasets)||void 0===a||null===(a=a[0])||void 0===a?void 0:a.opacity)&&void 0!==r?r:null},setData:(e,t,r)=>{var a,o,{pluginState:l}=e,{datasetId:i}=r,n=null===(a=l.datasets)||void 0===a?void 0:a.find(e=>e.id===i);null!=n&&n.tiles?de('setData called on vector tile dataset "'.concat(i,'" — has no effect')):null===(o=l.layerAdapter)||void 0===o||o.setData(i,t)}}};export{ue as manifest};
|
|
1
|
+
import{useRef as e,useEffect as t}from"preact/compat";import{jsx as r,jsxs as a}from"preact/jsx-runtime";import o from"@babel/runtime/helpers/defineProperty";import l from"@babel/runtime/helpers/asyncToGenerator";function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function n(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var s={minZoom:6,maxZoom:24,showInKey:!1,showInMenu:!1,visibility:"visible",style:{stroke:"#d4351c",strokeWidth:2,fill:"transparent",symbolDescription:"red outline"}},d=["stroke","strokeWidth","strokeDashArray","fill","fillPattern","fillPatternSvgContent","fillPatternForegroundColor","fillPatternBackgroundColor","opacity","symbolDescription","keySymbolShape","symbol","symbolSvgContent","symbolViewBox","symbolAnchor","symbolBackgroundColor","symbolForegroundColor","symbolHaloWidth","symbolGraphic"],u=["stroke","fill","fillPattern","fillPatternSvgContent","symbol","symbolSvgContent"],c=e=>u.some(t=>t in e),p=(e,t)=>{var r=e.style||{},a=n(n({},t.style),r);!("symbolDescription"in r)&&c(r)&&delete a.symbolDescription;var o=n({},e);delete o.style,d.forEach(e=>delete o[e]);var l=n({},t);return delete l.style,n(n(n({},l),o),a)};function y(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function b(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?y(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):y(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function v(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function f(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?v(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):v(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var m=e=>{var t;if(null===(t=e.sublayers)||void 0===t||!t.length)return e;var r={};return e.sublayers.forEach(e=>{r[e.id]="visible"}),f(f({},e),{},{sublayerVisibility:r})},h={BUILD_KEY_GROUPS:e=>{var t=e.datasets||[],r=new Set,a=[],o=!1;return t.forEach(e=>{var l;if(e.showInKey&&"hidden"!==e.visibility)if(null!==(l=e.sublayers)&&void 0!==l&&l.length){var{sublayerVisibility:i=[]}=e;Object.values(i).some(e=>"hidden"!==e)&&(o=!0,a.push({type:"sublayers",dataset:e}))}else{if(e.groupLabel){if(r.has(e.groupLabel))return;return r.add(e.groupLabel),o=!0,void a.push({type:"group",groupLabel:e.groupLabel,datasets:t.filter(t=>{var r;return!(null!==(r=t.sublayers)&&void 0!==r&&r.length)&&t.groupLabel===e.groupLabel})})}a.push({type:"flat",dataset:e})}}),b(b({},e),{},{key:{items:a,hasGroups:o}})},SET_DATASETS:(e,t)=>{var{datasets:r,datasetDefaults:a}=t;return f(f({},e),{},{datasets:r.map(e=>m(p(e,a)))})},ADD_DATASET:(e,t)=>{var{dataset:r,datasetDefaults:a}=t;return f(f({},e),{},{datasets:[...e.datasets||[],m(p(r,a))]})},REMOVE_DATASET:(e,t)=>{var r,{id:a}=t;return f(f({},e),{},{datasets:(null===(r=e.datasets)||void 0===r?void 0:r.filter(e=>e.id!==a))||[]})},SET_DATASET_VISIBILITY:(e,t)=>{var r,{id:a,visibility:o}=t;return f(f({},e),{},{datasets:null===(r=e.datasets)||void 0===r?void 0:r.map(e=>e.id===a?f(f({},e),{},{visibility:o}):e)})},SET_GLOBAL_VISIBILITY:(e,t)=>{var r,{visibility:a}=t;return f(f({},e),{},{datasets:null===(r=e.datasets)||void 0===r?void 0:r.map(e=>f(f({},e),{},{visibility:a}))})},SET_SUBLAYER_VISIBILITY:(e,t)=>{var r,{datasetId:a,sublayerId:o,visibility:l}=t;return f(f({},e),{},{datasets:null===(r=e.datasets)||void 0===r?void 0:r.map(e=>e.id!==a?e:f(f({},e),{},{sublayerVisibility:f(f({},e.sublayerVisibility),{},{[o]:l})}))})},SET_DATASET_STYLE:(e,t)=>{var r,{datasetId:a,styleChanges:o}=t;return f(f({},e),{},{datasets:null===(r=e.datasets)||void 0===r?void 0:r.map(e=>e.id===a?f(f({},e),o):e)})},SET_SUBLAYER_STYLE:(e,t)=>{var r,{datasetId:a,sublayerId:o,styleChanges:l}=t;return f(f({},e),{},{datasets:null===(r=e.datasets)||void 0===r?void 0:r.map(e=>{var t;return e.id!==a?e:f(f({},e),{},{sublayers:null===(t=e.sublayers)||void 0===t?void 0:t.map(e=>e.id===o?f(f({},e),{},{style:f(f({},e.style),l)}):e)})})})},SET_OPACITY:(e,t)=>{var r,{datasetId:a,opacity:o}=t;return f(f({},e),{},{datasets:null===(r=e.datasets)||void 0===r?void 0:r.map(e=>e.id===a?f(f({},e),{},{opacity:o}):e)})},SET_GLOBAL_OPACITY:(e,t)=>{var r,{opacity:a}=t;return f(f({},e),{},{datasets:null===(r=e.datasets)||void 0===r?void 0:r.map(e=>f(f({},e),{},{opacity:a}))})},SET_SUBLAYER_OPACITY:(e,t)=>{var r,{datasetId:a,sublayerId:o,opacity:l}=t;return f(f({},e),{},{datasets:null===(r=e.datasets)||void 0===r?void 0:r.map(e=>{var t;return e.id!==a?e:f(f({},e),{},{sublayers:null===(t=e.sublayers)||void 0===t?void 0:t.map(e=>e.id===o?f(f({},e),{},{style:f(f({},e.style),{},{opacity:l})}):e)})})})},HIDE_FEATURES:(e,t)=>{var{layerId:r,idProperty:a,featureIds:o}=t,l=e.hiddenFeatures[r],i=(null==l?void 0:l.ids)||[],n=[...new Set([...i,...o])];return f(f({},e),{},{hiddenFeatures:f(f({},e.hiddenFeatures),{},{[r]:{idProperty:a,ids:n}})})},SHOW_FEATURES:(e,t)=>{var{layerId:r,featureIds:a}=t,o=e.hiddenFeatures[r];if(!o)return e;var l=o.ids.filter(e=>!a.includes(e));if(0===l.length){var i=f({},e.hiddenFeatures);return delete i[r],f(f({},e),{},{hiddenFeatures:i})}return f(f({},e),{},{hiddenFeatures:f(f({},e.hiddenFeatures),{},{[r]:f(f({},o),{},{ids:l})})})},SET_LAYER_ADAPTER:(e,t)=>f(f({},e),{},{layerAdapter:t})},g={APP_ADD_MARKER:"app:addmarker",APP_UPDATE_MARKER:"app:updatemarker",APP_REMOVE_MARKER:"app:removemarker",APP_SET_MODE:"app:setmode",APP_REVERT_MODE:"app:revertmode",APP_ADD_BUTTON:"app:addbutton",APP_TOGGLE_BUTTON_STATE:"app:togglebuttonstate",APP_ADD_PANEL:"app:addpanel",APP_REMOVE_PANEL:"app:removepanel",APP_SHOW_PANEL:"app:showpanel",APP_HIDE_PANEL:"app:hidepanel",APP_ADD_CONTROL:"app:addcontrol",APP_READY:"app:ready",APP_OPENED:"app:opened",APP_CLOSED:"app:closed",APP_PANEL_OPENED:"app:panelopened",APP_PANEL_CLOSED:"app:panelclosed",MAP_SET_STYLE:"map:setstyle",MAP_SET_SIZE:"map:setsize",MAP_SET_FEATURES:"map:setfeatures",MAP_SET_ACTIVE_FEATURE:"map:setactivefeature",MAP_SELECT_FEATURE:"map:selectfeature",MAP_SET_PIXEL_RATIO:"map:setpixelratio",MAP_FIT_TO_BOUNDS:"map:fittobounds",MAP_SET_VIEW:"map:setview",MAP_INIT_MAP_STYLES:"map:initmapstyles",MAP_STYLE_CHANGE:"map:stylechange",MAP_LOADED:"map:loaded",MAP_READY:"map:ready",MAP_SIZE_CHANGE:"map:sizechange",MAP_FIRST_IDLE:"map:firstidle",MAP_MOVE_START:"map:movestart",MAP_MOVE:"map:move",MAP_MOVE_END:"map:moveend",MAP_STATE_UPDATED:"map:stateupdated",MAP_DATA_CHANGE:"map:datachange",MAP_RENDER:"map:render",MAP_CLICK:"map:click",MAP_DESTROY:"map:destroy"},O=function(){var e=l(function*(e,t,r,a){var o=r(e,t),l="string"==typeof o?{url:o}:o,{url:i,headers:n={}}=l,s=yield fetch(i,{headers:n,signal:a});if(!s.ok)throw new Error("Failed to fetch GeoJSON: ".concat(s.status," ").concat(s.statusText));var d=yield s.json();if("FeatureCollection"===d.type)return d;if("Feature"===d.type)return{type:"FeatureCollection",features:[d]};if(Array.isArray(d))return{type:"FeatureCollection",features:d};throw new Error("Invalid GeoJSON response")});return function(t,r,a,o){return e.apply(this,arguments)}}(),P=(e,t)=>!(!e||!t)&&!(e[2]<t[0]||e[0]>t[2]||e[3]<t[1]||e[1]>t[3]),S=e=>{var t=1/0,r=1/0,a=-1/0,o=-1/0,l=(e,i)=>{var n;0===i?(n=e,t=Math.min(t,n[0]),r=Math.min(r,n[1]),a=Math.max(a,n[0]),o=Math.max(o,n[1])):e.forEach(e=>l(e,i-1))};switch(e.type){case"Point":l(e.coordinates,0);break;case"LineString":case"MultiPoint":l(e.coordinates,1);break;case"Polygon":case"MultiLineString":l(e.coordinates,2);break;case"MultiPolygon":l(e.coordinates,3);break;case"GeometryCollection":e.geometries.forEach(e=>{var l=S(e);t=Math.min(t,l[0]),r=Math.min(r,l[1]),a=Math.max(a,l[2]),o=Math.max(o,l[3])});break;default:throw new Error("Unsupported geometry type: ".concat(e.type))}return[t,r,a,o]},E=e=>{var t,r,a,o,{dataset:i,map:n,onUpdate:s}=e,{geojson:d,idProperty:u,transformRequest:c,maxFeatures:p,minZoom:y=0}=i,b=new Map,v=null,f=null,m=()=>({type:"FeatureCollection",features:Array.from(b.values()).map(e=>e.feature)}),h=function(){var e=l(function*(){var e=n.getZoom();if(!(e<y)){var t=(e=>{var t=e.getBounds();return[t.getWest(),t.getSouth(),t.getEast(),t.getNorth()]})(n);if(!(v&&(r=v,a=t,r&&a&&a[0]>=r[0]&&a[1]>=r[1]&&a[2]<=r[2]&&a[3]<=r[3]))){var r,a,o,l;f&&f.abort(),f=new AbortController;try{var h={bbox:t,zoom:e,dataset:i},g=yield O(d,h,c,f.signal),E=Date.now();g.features.forEach(e=>{var t=(e=>{var t,r;return u&&null!==(t=null===(r=e.properties)||void 0===r?void 0:r[u])&&void 0!==t?t:e.id})(e);null!=t?b.set(t,{feature:e,bbox:S(e.geometry),lastSeenAt:E}):console.warn("Feature missing ID, skipping:",e)}),l=t,v=(o=v)?[Math.min(o[0],l[0]),Math.min(o[1],l[1]),Math.max(o[2],l[2]),Math.max(o[3],l[3])]:[...l];var _=b.size;(e=>{if(p&&!(b.size<=1.2*p)){var t=p,r=[],a=[];for(var[o,l]of b)P(l.bbox,e)?r.push(o):a.push({id:o,lastSeenAt:l.lastSeenAt});a.sort((e,t)=>e.lastSeenAt-t.lastSeenAt);for(var i=b.size-t,n=0;n<i&&n<a.length;n++)b.delete(a[n].id);if(b.size>t)for(var s=b.size-t,d=r.map(e=>({id:e,lastSeenAt:b.get(e).lastSeenAt})).sort((e,t)=>e.lastSeenAt-t.lastSeenAt),u=0;u<s&&u<d.length;u++)b.delete(d[u].id)}})(t),b.size<_&&(v=t),s(i.id,m())}catch(e){if("AbortError"===e.name)return;console.error("Failed to fetch dynamic GeoJSON for ".concat(i.id,":"),e)}}}});return function(){return e.apply(this,arguments)}}(),g=(t=h,r=200,(o=function(){for(var e=arguments.length,o=new Array(e),l=0;l<e;l++)o[l]=arguments[l];clearTimeout(a),a=setTimeout(()=>t(...o),r)}).cancel=()=>{clearTimeout(a),a=null},o),E=()=>{g()};return n.on("moveend",E),h(),{destroy(){n.off("moveend",E),g.cancel(),f&&f.abort()},clear(){b.clear(),v=null,s(i.id,{type:"FeatureCollection",features:[]})},refresh(){b.clear(),v=null,h()},getFeatureCount:()=>b.size,reapply(){b.size>0&&s(i.id,m())}}},_=e=>{var{adapter:t,pluginConfig:r,pluginStateRef:a,mapStyle:o,mapProvider:l,events:i,eventBus:n}=e,{datasets:d}=r,u=new Map,c=()=>a.current.datasets||d,y=d.map(e=>p(e,s));t.init(y,o).then(()=>{y.forEach(e=>{if((e=>"string"==typeof e.geojson&&!!e.idProperty&&"function"==typeof e.transformRequest)(e)){var r=E({dataset:e,map:l.map,onUpdate:(e,r)=>t.setData(e,r)});u.set(e.id,r)}}),n.emit("datasets:ready")});var b=o,v=e=>{b=e,t.onStyleChange(c(),e,a.current.hiddenFeatures||{},u)},f=()=>{t.onSizeChange(c(),b)};return n.on(i.MAP_SET_STYLE,v),n.on(i.MAP_SIZE_CHANGE,f),{remove(){n.off(i.MAP_SET_STYLE,v),n.off(i.MAP_SIZE_CHANGE,f),u.forEach(e=>e.destroy()),u.clear(),t.destroy(c())},refreshDataset(e){var t;null===(t=u.get(e))||void 0===t||t.refresh()},clearDatasetCache(e){var t;null===(t=u.get(e))||void 0===t||t.clear()},getFeatureCount(e){var t,r;return null!==(t=null===(r=u.get(e))||void 0===r?void 0:r.getFeatureCount())&&void 0!==t?t:null}}};var A=function(e,t){var r,a,{pluginState:o}=e,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{datasetId:i,sublayerId:n}=l;if(n){var s,d=t?"visible":"hidden";return null===(s=o.layerAdapter)||void 0===s||s[t?"showSublayer":"hideSublayer"](i,n),void o.dispatch({type:"SET_SUBLAYER_VISIBILITY",payload:{datasetId:i,sublayerId:n,visibility:d}})}if(i){if(null===(a=o.layerAdapter)||void 0===a||a[t?"showDataset":"hideDataset"](i),o.dispatch({type:"SET_DATASET_VISIBILITY",payload:{id:i,visibility:t?"visible":"hidden"}}),t){var u,c=null===(u=o.datasets)||void 0===u?void 0:u.find(e=>e.id===i);Object.entries((null==c?void 0:c.sublayerVisibility)||{}).forEach(e=>{var t,[r,a]=e;"hidden"===a&&(null===(t=o.layerAdapter)||void 0===t||t.hideSublayer(i,r))})}}else o.dispatch({type:"SET_GLOBAL_VISIBILITY",payload:{visibility:t?"visible":"hidden"}}),null===(r=o.datasets)||void 0===r||r.forEach(e=>{var r;null===(r=o.layerAdapter)||void 0===r||r[t?"showDataset":"hideDataset"](e.id),t&&Object.entries(e.sublayerVisibility||{}).forEach(t=>{var r,[a,l]=t;"hidden"===l&&(null===(r=o.layerAdapter)||void 0===r||r.hideSublayer(e.id,a))})})},j="im-c-datasets-layers__item-label govuk-label govuk-checkboxes__label",w=e=>{var t;return null===(t=e.sublayers)||void 0===t?void 0:t.some(e=>e.showInMenu)},D=(e,t)=>{if(!e)return null;if("string"==typeof e)return e.trim();if("object"==typeof e){if(t&&e[t])return e[t];var r=Object.values(e)[0];return null!=r?r:null}return null};function k(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}var I=(e,t)=>"symbolDescription"in t?t.symbolDescription:c(t)?void 0:e.symbolDescription,T=(e,t)=>{var r,a,l,i,n,s,d,u,c,p,y,b,v,f,m,h,g,O=t.style||{},P=(h=e.filter,g=t.filter,h&&g?["all",h,g]:g||h||null);return function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?k(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):k(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({id:t.id,label:t.label,stroke:null!==(r=O.stroke)&&void 0!==r?r:e.stroke,strokeWidth:null!==(a=O.strokeWidth)&&void 0!==a?a:e.strokeWidth,strokeDashArray:null!==(l=O.strokeDashArray)&&void 0!==l?l:e.strokeDashArray,opacity:null!==(i=O.opacity)&&void 0!==i?i:e.opacity,keySymbolShape:null!==(n=O.keySymbolShape)&&void 0!==n?n:e.keySymbolShape,symbolDescription:I(e,O),showInKey:null!==(s=t.showInKey)&&void 0!==s?s:e.showInKey,showInMenu:null!==(d=t.showInMenu)&&void 0!==d&&d,filter:P,minZoom:e.minZoom,maxZoom:e.maxZoom,symbol:null!==(u=O.symbol)&&void 0!==u?u:e.symbol,symbolSvgContent:null!==(c=O.symbolSvgContent)&&void 0!==c?c:e.symbolSvgContent,symbolViewBox:null!==(p=O.symbolViewBox)&&void 0!==p?p:e.symbolViewBox,symbolAnchor:null!==(y=O.symbolAnchor)&&void 0!==y?y:e.symbolAnchor,symbolBackgroundColor:null!==(b=O.symbolBackgroundColor)&&void 0!==b?b:e.symbolBackgroundColor,symbolForegroundColor:null!==(v=O.symbolForegroundColor)&&void 0!==v?v:e.symbolForegroundColor,symbolHaloWidth:null!==(f=O.symbolHaloWidth)&&void 0!==f?f:e.symbolHaloWidth,symbolGraphic:null!==(m=O.symbolGraphic)&&void 0!==m?m:e.symbolGraphic},((e,t)=>{var r,a;return t.fillPattern||t.fillPatternSvgContent?{fillPattern:t.fillPattern,fillPatternSvgContent:t.fillPatternSvgContent,fillPatternForegroundColor:null!==(r=t.fillPatternForegroundColor)&&void 0!==r?r:e.fillPatternForegroundColor,fillPatternBackgroundColor:null!==(a=t.fillPatternBackgroundColor)&&void 0!==a?a:e.fillPatternBackgroundColor}:"fill"in t?{fill:t.fill}:{fill:e.fill,fillPattern:e.fillPattern,fillPatternSvgContent:e.fillPatternSvgContent,fillPatternForegroundColor:e.fillPatternForegroundColor,fillPatternBackgroundColor:e.fillPatternBackgroundColor}})(e,O))},L=e=>{var{text:t}=e;return r("div",{className:"im-c-datasets-key",children:r("p",{className:"im-c-datasets-key__empty-message",children:t})})},C=new Set(["symbolBackgroundColor","symbolForegroundColor","symbolHaloWidth","symbolGraphic"]),M=e=>!(!e.symbol&&!e.symbolSvgContent);function x(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function R(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?x(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):x(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var N=20,F={xmlns:"http://www.w3.org/2000/svg",width:N,height:N,viewBox:"0 0 ".concat(N," ").concat(N),className:"am-c-datasets-key-symbol","aria-hidden":"true",focusable:"false"},B=R(R({},F),{},{width:44,height:44,className:"am-c-datasets-key-symbol am-c-datasets-key-symbol--point"});function Y(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function V(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Y(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Y(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var W=e=>{var{patternRegistry:t,mapStyle:o}=e,l=t.getKeyPatternPaths(e,o.id);return a("svg",V(V({},F),{},{children:[r("g",{dangerouslySetInnerHTML:{__html:l.border}}),r("g",{transform:"translate(".concat(2,", ").concat(2,")"),dangerouslySetInnerHTML:{__html:l.content}})]}))};function G(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function U(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?G(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):G(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var H=e=>{var t,{symbolRegistry:a,mapStyle:o,symbolDef:l}=e,i=null!==(t=null==o?void 0:o.appColorScheme)&&void 0!==t?t:"light",n=U(U({},o),{},{mapColorScheme:i}),s=a.resolve(l,(e=>{if(!M(e))return{};var t={};return C.forEach(r=>{if(null!=e[r]){var a=r.charAt(6).toLowerCase()+r.slice(7);t[a]=e[r]}}),t})(e),n),d=((e,t)=>{var r;return e.symbolViewBox?e.symbolViewBox:null!==(r=null==t?void 0:t.viewBox)&&void 0!==r?r:"0 0 38 38"})(e,l);return r("svg",U(U({},B),{},{viewBox:d,children:r("g",{dangerouslySetInnerHTML:{__html:s}})}))};function K(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function z(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?K(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):K(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var Z=e=>{var{mapStyle:t}=e;return r("svg",z(z({},F),{},{children:r("line",{x1:e.strokeWidth/2,y1:10,x2:N-e.strokeWidth/2,y2:10,stroke:D(e.stroke,t.id),strokeWidth:e.strokeWidth,strokeLinecap:"round"})}))};function J(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function q(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?J(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):J(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var X=e=>{var{mapStyle:t}=e;return r("svg",q(q({},F),{},{children:r("rect",{x:e.strokeWidth/2,y:e.strokeWidth/2,width:N-e.strokeWidth,height:N-e.strokeWidth,rx:e.strokeWidth,ry:e.strokeWidth,fill:D(e.fill,t.id),stroke:D(e.stroke,t.id),strokeWidth:e.strokeWidth,strokeLinejoin:"round"})}))};function Q(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function $(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Q(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Q(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var ee=e=>{var t,{symbolRegistry:a}=e,o=M(e)&&a.getSymbolDef(e);return o?r(H,$($({},e),{},{symbolDef:o})):(t=e).fillPattern||t.fillPatternSvgContent?r(W,$({},e)):"line"===e.keySymbolShape?r(Z,$({},e)):r(X,$({},e))};function te(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function re(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?te(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):te(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function ae(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function oe(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ae(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ae(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function le(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function ie(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?le(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):le(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var ne="[interactive-map]",se=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return console.warn(ne,...t)},de={InitComponent:function(r){var a,{pluginConfig:o,pluginState:i,appState:n,mapState:d,mapProvider:u,services:c}=r,{dispatch:p}=i,{eventBus:y,symbolRegistry:b,patternRegistry:v}=c,f=!(null===(a=u.map)||void 0===a||!a.getStyle()),m=e(i);m.current=i;var h=e(null);return t(()=>{var e,t,r,a,c=null===(e=null===(t=o.includeModes)||void 0===t?void 0:t.includes(n.mode))||void 0===e||e,O=null!==(r=null===(a=o.excludeModes)||void 0===a?void 0:a.includes(n.mode))&&void 0!==r&&r;if(f&&c&&!O&&!h.current){i.datasets||p({type:"SET_DATASETS",payload:{datasets:o.datasets,datasetDefaults:s}});var P=function(){var e=l(function*(){if(!o.layerAdapter)throw new Error("datasets plugin: no layerAdapter provided. Import and pass maplibreLayerAdapter or a custom adapter.");var{default:e}=yield o.layerAdapter.load(),t=new e(u,b,v);p({type:"SET_LAYER_ADAPTER",payload:t}),h.current=_({adapter:t,pluginConfig:o,pluginStateRef:m,mapStyle:d.mapStyle,mapProvider:u,events:g,eventBus:y})});return function(){return e.apply(this,arguments)}}();P()}},[f,n.mode]),t(()=>{p({type:"BUILD_KEY_GROUPS",payload:null})},[i.datasets]),t(()=>()=>{h.current&&(h.current.remove(),h.current=null),p({type:"SET_LAYER_ADAPTER",payload:null})},[]),null},reducer:{initialState:{datasets:null,key:{items:[],hasGroups:!1},hiddenFeatures:{},layerAdapter:null},actions:h},panels:[{id:"datasetsLayers",label:"Layers",mobile:{slot:"drawer",modal:!0,dismissible:!0},tablet:{slot:"left-top",dismissible:!0,exclusive:!0,width:"260px"},desktop:{slot:"left-top",modal:!1,dismissible:!0,exclusive:!0,width:"280px"},render:e=>{var t,o,l,{pluginState:i}=e,n=e=>{var{value:t,checked:r}=e.target;A({pluginState:i},r,{datasetId:t})},s=e=>{var{checked:t}=e.target,r=e.target.dataset.datasetId,a=e.target.dataset.sublayerId;A({pluginState:i},t,{datasetId:r,sublayerId:a})},d=e=>{var t="im-c-datasets-layers__item govuk-checkboxes govuk-checkboxes--small".concat("hidden"===e.visibility?"":" im-c-datasets-layers__item--checked");return r("div",{className:t,"data-module":"govuk-checkboxes",children:a("div",{className:"govuk-checkboxes__item",children:[r("input",{className:"govuk-checkboxes__input",id:e.id,name:"layers",type:"checkbox",value:e.id,checked:"hidden"!==e.visibility,onChange:n}),r("label",{className:j,htmlFor:e.id,children:e.label})]})},e.id)},u=(i.datasets||[]).filter(e=>e.showInMenu||w(e)),c=(t=u,o=new Set,l=[],t.forEach(e=>{if(w(e))l.push({type:"sublayers",dataset:e});else{if(e.groupLabel){if(o.has(e.groupLabel))return;return o.add(e.groupLabel),void l.push({type:"group",groupLabel:e.groupLabel,datasets:t.filter(t=>!w(t)&&t.groupLabel===e.groupLabel)})}l.push({type:"flat",dataset:e})}}),l),p=c.some(e=>"sublayers"===e.type||"group"===e.type),y="im-c-datasets-layers".concat(p?" im-c-datasets-layers--has-groups":"");return r("div",{className:y,children:c.map(e=>{if("sublayers"===e.type){var{dataset:t}=e,o=t.sublayers.filter(e=>e.showInMenu).some(e=>{var r;return"hidden"!==(null===(r=t.sublayerVisibility)||void 0===r?void 0:r[e.id])}),l="govuk-form-group im-c-datasets-layers-group".concat(o?" im-c-datasets-layers-group--items-checked":"");return r("div",{className:l,children:a("fieldset",{className:"im-c-datasets-layers-group__fieldset",children:[r("legend",{className:"im-c-datasets-layers-group__legend",children:t.label}),t.sublayers.filter(e=>e.showInMenu).map(e=>{var o,l="hidden"!==(null===(o=t.sublayerVisibility)||void 0===o?void 0:o[e.id]),i="".concat(t.id,"-").concat(e.id),n="im-c-datasets-layers__item govuk-checkboxes govuk-checkboxes--small".concat(l?" im-c-datasets-layers__item--checked":"");return r("div",{className:n,"data-module":"govuk-checkboxes",children:a("div",{className:"govuk-checkboxes__item",children:[r("input",{className:"govuk-checkboxes__input",id:i,type:"checkbox",checked:l,"data-dataset-id":t.id,"data-sublayer-id":e.id,onChange:s}),r("label",{className:j,htmlFor:i,children:e.label})]})},e.id)})]})},t.id)}if("group"===e.type){var i=e.datasets.some(e=>"hidden"!==e.visibility),n="govuk-form-group im-c-datasets-layers-group".concat(i?" im-c-datasets-layers-group--items-checked":"");return r("div",{className:n,children:a("fieldset",{className:"im-c-datasets-layers-group__fieldset",children:[r("legend",{className:"im-c-datasets-layers-group__legend",children:e.groupLabel}),e.datasets.map(e=>d(e))]})},e.groupLabel)}return d(e.dataset)})})}},{id:"datasetsKey",label:"Key",mobile:{slot:"drawer",modal:!0},tablet:{slot:"left-top",width:"260px"},desktop:{slot:"left-top",width:"280px"},render:e=>{var t,{pluginConfig:o,mapState:l,pluginState:i,services:n}=e;if(null==i||null===(t=i.key)||void 0===t||null===(t=t.items)||void 0===t||!t.length)return r(L,{text:o.noKeyItemText});var{mapStyle:s}=l,{symbolRegistry:d,patternRegistry:u}=n,c=(e,t)=>a("dl",{className:"im-c-datasets-key__item",children:[r("dt",{className:"im-c-datasets-key__item-symbol",children:r(ee,re(re({},t),{},{symbolRegistry:d,patternRegistry:u,mapStyle:s}))}),a("dd",{className:"im-c-datasets-key__item-label",children:[t.label,t.symbolDescription&&a("span",{className:"govuk-visually-hidden",children:["(",D(t.symbolDescription,s.id),")"]})]})]},e),{items:p,hasGroups:y}=i.key,b="im-c-datasets-key".concat(y?" im-c-datasets-key--has-groups":"");return r("div",{className:b,children:p.map(e=>{if("sublayers"===e.type){var t="key-heading-".concat(e.dataset.id);return a("section",{className:"im-c-datasets-key__group","aria-labelledby":t,children:[r("h3",{id:t,className:"im-c-datasets-key__group-heading",children:e.dataset.label}),e.dataset.sublayers.filter(t=>{var r;return"hidden"!==(null===(r=e.dataset.sublayerVisibility)||void 0===r?void 0:r[t.id])}).map(t=>c("".concat(e.dataset.id,"-").concat(t.id),T(e.dataset,t)))]},e.dataset.id)}if("group"===e.type){var o="key-heading-".concat(e.groupLabel.toLowerCase().replaceAll(/\s+/g,"-"));return a("section",{className:"im-c-datasets-key__group","aria-labelledby":o,children:[r("h3",{id:o,className:"im-c-datasets-key__group-heading",children:e.groupLabel}),e.datasets.map(e=>c(e.id,e))]},e.groupLabel)}return c(e.dataset.id,e.dataset)})})}}],buttons:[{id:"datasetsLayers",label:"Layers",panelId:"datasetsLayers",iconId:"layers",excludeWhen:e=>{var{pluginConfig:t}=e;return!t.datasets.some(e=>{var t;return e.showInMenu||(null===(t=e.sublayers)||void 0===t?void 0:t.some(e=>e.showInMenu))})},mobile:{slot:"top-left",showLabel:!0},tablet:{slot:"top-left",showLabel:!0},desktop:{slot:"top-left",showLabel:!0}},{id:"datasetsKey",label:"Key",panelId:"datasetsKey",iconId:"key",excludeWhen:e=>{var{pluginConfig:t}=e;return!t.datasets.some(e=>e.showInKey)},mobile:{slot:"top-left",showLabel:!1},tablet:{slot:"top-left",showLabel:!0},desktop:{slot:"top-left",showLabel:!0}}],icons:[{id:"layers",svgContent:'<path d="M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z"></path><path d="M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12"></path><path d="M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17"></path>'},{id:"key",svgContent:'<path d="M3 5h.01"/><path d="M3 12h.01"/><path d="M3 19h.01"/><path d="M8 5h13"/><path d="M8 12h13"/><path d="M8 19h13"/>'}],api:{addDataset:(e,t)=>{var r,{pluginState:a,mapState:o}=e;null===(r=a.layerAdapter)||void 0===r||r.addDataset(oe(oe({},s),t),o.mapStyle),a.dispatch({type:"ADD_DATASET",payload:{dataset:t,datasetDefaults:s}})},removeDataset:(e,t)=>{var r,a,{pluginState:o}=e,l=null===(r=o.datasets)||void 0===r?void 0:r.find(e=>e.id===t);l&&(null===(a=o.layerAdapter)||void 0===a||a.removeDataset(l,o.datasets),o.dispatch({type:"REMOVE_DATASET",payload:{id:t}}))},setDatasetVisibility:A,setFeatureVisibility:function(e,t,r){var a,{pluginState:o}=e,{datasetId:l,idProperty:i=null}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=null===(a=o.datasets)||void 0===a?void 0:a.find(e=>e.id===l);if(n)if(t){var s,d=o.hiddenFeatures[l];if(!d)return;var u=d.ids.filter(e=>!r.includes(e));o.dispatch({type:"SHOW_FEATURES",payload:{layerId:l,featureIds:r}}),null===(s=o.layerAdapter)||void 0===s||s.showFeatures(n,i,u)}else{var c,p=o.hiddenFeatures[l],y=(null==p?void 0:p.ids)||[],b=[...new Set([...y,...r])];o.dispatch({type:"HIDE_FEATURES",payload:{layerId:l,idProperty:i,featureIds:r}}),null===(c=o.layerAdapter)||void 0===c||c.hideFeatures(n,i,b)}},setStyle:function(e,t){var r,a,{pluginState:o,mapState:l}=e,{datasetId:i,sublayerId:n}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s=null===(r=o.datasets)||void 0===r?void 0:r.find(e=>e.id===i);if(s)if(n){var d,u;o.dispatch({type:"SET_SUBLAYER_STYLE",payload:{datasetId:i,sublayerId:n,styleChanges:t}});var c=ie(ie({},s),{},{sublayers:null===(d=s.sublayers)||void 0===d?void 0:d.map(e=>e.id===n?ie(ie({},e),{},{style:ie(ie({},e.style),t)}):e)});null===(u=o.layerAdapter)||void 0===u||u.setSublayerStyle(c,n,l.mapStyle)}else{o.dispatch({type:"SET_DATASET_STYLE",payload:{datasetId:i,styleChanges:t}});var p=ie(ie({},s),t);null===(a=o.layerAdapter)||void 0===a||a.setStyle(p,l.mapStyle)}},getStyle:function(e){var t,r,{pluginState:a}=e,{datasetId:o,sublayerId:l}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=null===(t=a.datasets)||void 0===t?void 0:t.find(e=>e.id===o);if(!i)return null;if(l){var n,s,d=null===(n=i.sublayers)||void 0===n?void 0:n.find(e=>e.id===l);return null!==(s=null==d?void 0:d.style)&&void 0!==s?s:null}return null!==(r=i.style)&&void 0!==r?r:null},setOpacity:(e,t,r)=>{var a,{pluginState:o}=e,{datasetId:l,sublayerId:i}=r||{};if(i){var n,s;if(!(null===(n=o.datasets)||void 0===n?void 0:n.find(e=>e.id===l)))return;return o.dispatch({type:"SET_SUBLAYER_OPACITY",payload:{datasetId:l,sublayerId:i,opacity:t}}),void(null===(s=o.layerAdapter)||void 0===s||s.setSublayerOpacity(l,i,t))}if(l){var d,u;if(!(null===(d=o.datasets)||void 0===d?void 0:d.find(e=>e.id===l)))return;return o.dispatch({type:"SET_OPACITY",payload:{datasetId:l,opacity:t}}),void(null===(u=o.layerAdapter)||void 0===u||u.setOpacity(l,t))}o.dispatch({type:"SET_GLOBAL_OPACITY",payload:{opacity:t}}),null===(a=o.datasets)||void 0===a||a.forEach(e=>{var r;null===(r=o.layerAdapter)||void 0===r||r.setOpacity(e.id,t)})},getOpacity:(e,t)=>{var r,a,{pluginState:o}=e,{datasetId:l,sublayerId:i}=t||{};if(i){var n,s,d,u,c=null===(n=o.datasets)||void 0===n?void 0:n.find(e=>e.id===l),p=null==c||null===(s=c.sublayers)||void 0===s?void 0:s.find(e=>e.id===i);return null!==(d=null==p||null===(u=p.style)||void 0===u?void 0:u.opacity)&&void 0!==d?d:null}if(l){var y,b,v=null===(y=o.datasets)||void 0===y?void 0:y.find(e=>e.id===l);return null!==(b=null==v?void 0:v.opacity)&&void 0!==b?b:null}return null!==(r=null===(a=o.datasets)||void 0===a||null===(a=a[0])||void 0===a?void 0:a.opacity)&&void 0!==r?r:null},setData:(e,t,r)=>{var a,o,{pluginState:l}=e,{datasetId:i}=r,n=null===(a=l.datasets)||void 0===a?void 0:a.find(e=>e.id===i);null!=n&&n.tiles?se('setData called on vector tile dataset "'.concat(i,'" — has no effect')):null===(o=l.layerAdapter)||void 0===o||o.setData(i,t)}}};export{de as manifest};
|