@geoimpact/sep-map-sdk 1.0.30 → 1.0.31

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.
@@ -34,7 +34,7 @@ return F.jsxs("div",{className:`sep-layer-control sep-layer-control--${t}`,child
34
34
  /* @__PURE__ */F.jsx("span",{className:"sep-layer-control__item-name",children:n(e.name)||e.name}),e.description&&/* @__PURE__ */F.jsx("span",{className:"sep-layer-control__item-desc",children:n(e.description)||e.description})]})]},e.id))}),"overlay"===a&&/* @__PURE__ */F.jsxs("div",{className:"sep-layer-control__list",children:[p.map(e=>/* @__PURE__ */F.jsxs("label",{className:"sep-layer-control__item "+(h[e.id]?"active":""),children:[
35
35
  /* @__PURE__ */F.jsx("input",{type:"checkbox",checked:h[e.id]??!1,onChange:()=>d(e.id)}),
36
36
  /* @__PURE__ */F.jsxs("span",{className:"sep-layer-control__item-content",children:[
37
- /* @__PURE__ */F.jsx("span",{className:"sep-layer-control__item-name",children:n(e.name)||e.name}),e.description&&/* @__PURE__ */F.jsx("span",{className:"sep-layer-control__item-desc",children:n(e.description)||e.description})]})]},e.id)),0===p.length&&/* @__PURE__ */F.jsx("div",{className:"sep-layer-control__empty",children:n("layers.noOverlays")})]})]})]})]})});function ui({perimeterService:e,addressService:t,onPerimeterClick:i,onAddressClick:n,onMapReady:r,enableAddressClick:o=!1,enablePerimeterClick:a=!0,paused:s=!1}){const l=k.useRef(i),c=k.useRef(n),u=k.useRef(e),h=k.useRef(t),d=k.useRef(r),p=k.useRef(s);k.useEffect(()=>{l.current=i},[i]),k.useEffect(()=>{c.current=n},[n]),k.useEffect(()=>{u.current=e},[e]),k.useEffect(()=>{h.current=t},[t]),k.useEffect(()=>{d.current=r},[r]),k.useEffect(()=>{p.current=s},[s]);const f=function(e){const t=ai();return k.useEffect(function(){return t.on(e),function(){t.off(e)}},[t,e]),t}({click:async e=>{if(p.current)return;const{lat:t,lng:i}=e.latlng;if(o&&h.current&&c.current)try{const e=await h.current.getByCoordinates(t,i);if(e)return void c.current(e)}catch(n){}if(a&&l.current)try{const e=await u.current.getClosest(t,i,.1);e&&l.current(e)}catch(n){}}});return k.useEffect(()=>{d.current?.(f)},[f]),null}const hi=/* @__PURE__ */new WeakMap;function di(e){if(e&&"object"==typeof e)return hi.get(e)?.layerManager}function pi({layers:e}){const t=ai(),{setLayerManager:i}=Tt(),n=k.useRef(!1),{initialize:r}=e;return k.useEffect(()=>{n.current||(n.current=!0,r(t))},[t,r]),k.useEffect(()=>{e.layerManager&&(i(e.layerManager),function(e,t){const i=hi.get(e)||{};hi.set(e,{...i,layerManager:t})}(t,e.layerManager))},[e.layerManager,i,t]),null}function fi(){const e=ai(),{setMap:t}=St();return k.useEffect(()=>(t(e),()=>{t(null)}),[e,t]),null}function mi({attribution:e}){const t=ai();return k.useEffect(()=>{if(!t.attributionControl)return;const i=t.attributionControl,n=i._update;i._update=function(){if(!this._map)return;const e=[];for(const i in this._attributions)this._attributions[i]&&e.push(i);const t=this.options.prefix;this._container.innerHTML=(t?t+" | ":"")+e.join(" | ")},i._update();if(e)if("string"==typeof e)t.attributionControl.setPrefix(""),t.attributionControl.setPosition("bottomleft"),t.attributionControl.addAttribution(e);else{const i=e.position||"bottomleft",n=void 0===e.prefix?"":e.prefix;t.attributionControl.setPosition(i),!1===n?t.attributionControl.setPrefix(""):t.attributionControl.setPrefix(n),t.attributionControl.addAttribution(e.text)}else t.attributionControl.setPrefix(""),t.attributionControl.setPosition("bottomleft"),t.attributionControl.addAttribution('<a href="https://www.swissenergyplanning.ch/impressum" target="_blank">Impressum</a> | <a href="https://www.swissenergyplanning.ch/" target="_blank">©SEP</a> by <a href="https://geoimpact.ch/" target="_blank">geoimpact</a>');return()=>{i._update=n,i._map&&i._update()}},[t,e]),null}function gi({interactionConfig:e}){const t=ai(),{t:i}=Tt(),n=k.useRef(null),[r,o]=k.useState(null),a=k.useMemo(()=>({...It,...e}),[e]),s=k.useMemo(()=>{const e=function(){if("undefined"==typeof navigator)return!1;const e=navigator.userAgentData,t=e?.platform||navigator.platform||"";return/mac|iphone|ipad|ipod/i.test(t)}();switch(a.zoomModifierKey){case"ctrl":return i("mapInteraction.modifiers.ctrl");case"meta":return i("mapInteraction.modifiers.cmd");default:return i(e?"mapInteraction.modifiers.cmd":"mapInteraction.modifiers.ctrl")}},[a.zoomModifierKey,i]),l=k.useMemo(()=>"scroll"===r?i("mapInteraction.holdModifierToZoom",{modifier:s}):"touch"===r?i("mapInteraction.useTwoFingersToMove"):"",[r,s,i]);return k.useEffect(()=>{const e=()=>{t.dragging.enable(),t.touchZoom.enable()},i=()=>{t.dragging.disable(),t.touchZoom.disable()},r=()=>{null!==n.current&&(window.clearTimeout(n.current),n.current=null)},s=e=>{o(e),r(),n.current=window.setTimeout(()=>{o(null),n.current=null},a.scrollZoomHintDelayMs)},l=t.getContainer(),c=e=>{if(!a.cooperativeScrollZoom)return;if(!(e=>{switch(a.zoomModifierKey){case"ctrl":return e.ctrlKey;case"meta":return e.metaKey;default:return e.ctrlKey||e.metaKey}})(e))return void(a.showScrollZoomHint&&s("scroll"));e.preventDefault(),r(),o(null);const i=l.getBoundingClientRect(),n=z.point(e.clientX-i.left,e.clientY-i.top),c=t.containerPointToLatLng(n),u=e.deltaY<0?1:-1,h=Math.max(t.getMinZoom(),Math.min(t.getMaxZoom(),t.getZoom()+u));h!==t.getZoom()&&t.setZoomAround(c,h)},u=t=>{if("cooperative"===a.touchMode){if(t.touches.length>=2)return e(),r(),void o(null);i(),a.showTouchHint&&s("touch")}},h=t=>{if("cooperative"===a.touchMode)return t.touches.length>=2?(e(),r(),void o(null)):void i()},d=t=>{"cooperative"===a.touchMode&&(t.touches.length,e())};return a.cooperativeScrollZoom?(t.scrollWheelZoom.disable(),l.addEventListener("wheel",c,{passive:!1})):t.scrollWheelZoom.enable(),"cooperative"===a.touchMode?(l.addEventListener("touchstart",u,{passive:!0}),l.addEventListener("touchmove",h,{passive:!0}),l.addEventListener("touchend",d,{passive:!0}),l.addEventListener("touchcancel",d,{passive:!0})):e(),()=>{r(),o(null),l.removeEventListener("wheel",c),l.removeEventListener("touchstart",u),l.removeEventListener("touchmove",h),l.removeEventListener("touchend",d),l.removeEventListener("touchcancel",d),t.scrollWheelZoom.enable(),e()}},[t,a,s,i]),/* @__PURE__ */F.jsx("div",{className:"sep-map-view__interaction-hint"+(r?" sep-map-view__interaction-hint--visible":""),"aria-live":"polite","aria-hidden":!r||void 0,children:l})}const _i=k.memo(function({onReady:e,onPerimeterClick:t,onAddressClick:i,layersConfig:n,showLayerControl:r=!0,layerControlPosition:o,interactionConfig:a,children:s}){const{config:l,services:c,clickEventsPaused:u}=Tt(),h=o||l.ui?.layerControlPosition||"top-right",d=function(e={}){const{config:t,onLayerChange:i,theme:n="light"}=e,r=k.useRef(null),[o,a]=k.useState(null),[s,l]=k.useState(null),[c,u]=k.useState({}),h=k.useMemo(()=>(t?.availableBaseLayers||["swisstopo-satellite","swisstopo-color","swisstopo-grey","osm-standard"]).map(e=>"string"==typeof e?Qt[e]:{id:e.id,name:e.name,config:e}).filter(Boolean),[t?.availableBaseLayers]),d=k.useMemo(()=>(t?.availableOverlays||["swisstopo-cadastral","swisstopo-streets","swisstopo-addresses","swisstopo-vector"]).map(e=>"string"==typeof e?Qt[e]:{id:e.id,name:e.name,config:e}).filter(Boolean),[t?.availableOverlays]),p=k.useCallback(e=>{const i=new ti(t);i.updateTheme(n),i.initialize(e),r.current=i,a(i);const o=i.getBaseLayerId();l(o);const s={};d.forEach(e=>{s[e.id]=i.isLayerVisible(e.id)}),u(s)},[t,d,n]),f=k.useCallback(e=>{if(!r.current)return;r.current.setBaseLayer(e);const t="string"==typeof e?e:e.id;l(t),i?.(t,!0)},[i]),m=k.useCallback(e=>{if(!r.current)return;const t=!c[e];r.current.getLayerConfig(e)||r.current.addLayer(e,"overlaysPane"),r.current.setLayerVisibility(e,t),u(i=>({...i,[e]:t})),i?.(e,t)},[c,i]),g=k.useCallback((e,t)=>{r.current&&(r.current.getLayerConfig(e)||r.current.addLayer(e,"overlaysPane"),r.current.setLayerVisibility(e,t),u(i=>({...i,[e]:t})),i?.(e,t))},[i]),_=k.useCallback(e=>{r.current&&(r.current.addLayer(e),"overlay"===e.category&&u(t=>({...t,[e.id]:!1!==e.visible})))},[]),y=k.useCallback(e=>{r.current&&(r.current.removeLayer(e),u(t=>{const i={...t};return delete i[e],i}))},[]),v=k.useCallback((e,t)=>{r.current&&r.current.setLayerOpacity(e,t)},[]);return k.useEffect(()=>()=>{r.current?.destroy(),r.current=null},[]),{layerManager:o,initialize:p,baseLayerId:s,setBaseLayer:f,availableBaseLayers:h,overlayStates:c,toggleOverlay:m,setOverlayVisibility:g,availableOverlays:d,addCustomLayer:_,removeLayer:y,setOpacity:v}}({config:n,theme:l.ui?.theme||"light",onLayerChange:(e,t)=>{}}),p=l.map||{};/* @__PURE__ */
37
+ /* @__PURE__ */F.jsx("span",{className:"sep-layer-control__item-name",children:n(e.name)||e.name}),e.description&&/* @__PURE__ */F.jsx("span",{className:"sep-layer-control__item-desc",children:n(e.description)||e.description})]})]},e.id)),0===p.length&&/* @__PURE__ */F.jsx("div",{className:"sep-layer-control__empty",children:n("layers.noOverlays")})]})]})]})]})});function ui({perimeterService:e,addressService:t,onPerimeterClick:i,onAddressClick:n,onMapReady:r,enableAddressClick:o=!1,enablePerimeterClick:a=!0,paused:s=!1}){const l=k.useRef(i),c=k.useRef(n),u=k.useRef(e),h=k.useRef(t),d=k.useRef(r),p=k.useRef(s);k.useEffect(()=>{l.current=i},[i]),k.useEffect(()=>{c.current=n},[n]),k.useEffect(()=>{u.current=e},[e]),k.useEffect(()=>{h.current=t},[t]),k.useEffect(()=>{d.current=r},[r]),k.useEffect(()=>{p.current=s},[s]);const f=function(e){const t=ai();return k.useEffect(function(){return t.on(e),function(){t.off(e)}},[t,e]),t}({click:async e=>{if(p.current)return;const{lat:t,lng:i}=e.latlng;if(o&&h.current&&c.current)try{const e=await h.current.getByCoordinates(t,i);if(e)return void c.current(e)}catch(n){}if(a&&l.current)try{const e=await u.current.getClosest(t,i,.1);e&&l.current(e)}catch(n){}}});return k.useEffect(()=>{d.current?.(f)},[f]),null}const hi=/* @__PURE__ */new WeakMap;function di(e){if(e&&"object"==typeof e)return hi.get(e)?.layerManager}function pi({layers:e}){const t=ai(),{setLayerManager:i}=Tt(),n=k.useRef(!1),{initialize:r}=e;return k.useEffect(()=>{n.current||(n.current=!0,r(t))},[t,r]),k.useEffect(()=>{e.layerManager&&(i(e.layerManager),function(e,t){const i=hi.get(e)||{};hi.set(e,{...i,layerManager:t})}(t,e.layerManager))},[e.layerManager,i,t]),null}function fi(){const e=ai(),{setMap:t}=St();return k.useEffect(()=>(t(e),()=>{t(null)}),[e,t]),null}function mi({attribution:e}){const t=ai();return k.useEffect(()=>{if(!t.attributionControl)return;const i=t.attributionControl,n=i._update;i._update=function(){if(!this._map)return;const e=[];for(const i in this._attributions)this._attributions[i]&&e.push(i);const t=this.options.prefix;this._container.innerHTML=(t?t+" | ":"")+e.join(" | ")},i._update();if(e)if("string"==typeof e)t.attributionControl.setPrefix(""),t.attributionControl.setPosition("bottomleft"),t.attributionControl.addAttribution(e);else{const i=e.position||"bottomleft",n=void 0===e.prefix?"":e.prefix;t.attributionControl.setPosition(i),!1===n?t.attributionControl.setPrefix(""):t.attributionControl.setPrefix(n),t.attributionControl.addAttribution(e.text)}else t.attributionControl.setPrefix(""),t.attributionControl.setPosition("bottomleft"),t.attributionControl.addAttribution('<a href="https://www.swissenergyplanning.ch/impressum" target="_blank">Impressum</a> | <a href="https://www.swissenergyplanning.ch/" target="_blank">©SEP</a> by <a href="https://geoimpact.ch/" target="_blank">geoimpact</a>');return()=>{i._update=n,i._map&&i._update()}},[t,e]),null}function gi({interactionConfig:e}){const t=ai(),{t:i}=Tt(),n=k.useRef(null),[r,o]=k.useState(null),a=k.useMemo(()=>({...It,...e}),[e]),s=k.useMemo(()=>{const e=function(){if("undefined"==typeof navigator)return!1;const e=navigator.userAgentData,t=e?.platform||navigator.platform||"";return/mac|iphone|ipad|ipod/i.test(t)}();switch(a.zoomModifierKey){case"ctrl":return i("mapInteraction.modifiers.ctrl");case"meta":return i("mapInteraction.modifiers.cmd");default:return i(e?"mapInteraction.modifiers.cmd":"mapInteraction.modifiers.ctrl")}},[a.zoomModifierKey,i]),l=k.useMemo(()=>"scroll"===r?i("mapInteraction.holdModifierToZoom",{modifier:s}):"touch"===r?i("mapInteraction.useTwoFingersToMove"):"",[r,s,i]);return k.useEffect(()=>{const e=()=>{t.dragging.enable(),t.touchZoom.enable()},i=()=>{t.dragging.disable(),t.touchZoom.disable()},r=()=>{null!==n.current&&(window.clearTimeout(n.current),n.current=null)},s=e=>{o(e),r(),n.current=window.setTimeout(()=>{o(null),n.current=null},a.scrollZoomHintDelayMs)},l=t.getContainer(),c=e=>{if(!a.cooperativeScrollZoom)return;if(!(e=>{switch(a.zoomModifierKey){case"ctrl":return e.ctrlKey;case"meta":return e.metaKey;default:return e.ctrlKey||e.metaKey}})(e))return void(a.showScrollZoomHint&&s("scroll"));e.preventDefault(),r(),o(null);const i=l.getBoundingClientRect(),n=z.point(e.clientX-i.left,e.clientY-i.top),c=t.containerPointToLatLng(n),u=e.deltaY<0?1:-1,h=Math.max(t.getMinZoom(),Math.min(t.getMaxZoom(),t.getZoom()+u));h!==t.getZoom()&&t.setZoomAround(c,h)},u=t=>{if("cooperative"===a.touchMode)return t.touches.length>=2?(e(),r(),void o(null)):void i()},h=t=>{if("cooperative"===a.touchMode){if(t.touches.length>=2)return e(),r(),void o(null);i(),a.showTouchHint&&s("touch")}},d=()=>{"cooperative"===a.touchMode&&e()};a.cooperativeScrollZoom?(t.scrollWheelZoom.disable(),l.addEventListener("wheel",c,{passive:!1})):t.scrollWheelZoom.enable();let p=null;return"cooperative"===a.touchMode?(p=l.style.touchAction,l.style.touchAction="pan-x pan-y",l.addEventListener("touchstart",u,{passive:!0,capture:!0}),l.addEventListener("touchmove",h,{passive:!0,capture:!0}),l.addEventListener("touchend",d,{passive:!0,capture:!0}),l.addEventListener("touchcancel",d,{passive:!0,capture:!0})):e(),()=>{r(),o(null),l.removeEventListener("wheel",c),l.removeEventListener("touchstart",u,{capture:!0}),l.removeEventListener("touchmove",h,{capture:!0}),l.removeEventListener("touchend",d,{capture:!0}),l.removeEventListener("touchcancel",d,{capture:!0}),null!==p&&(l.style.touchAction=p),t.scrollWheelZoom.enable(),e()}},[t,a,s,i]),/* @__PURE__ */F.jsx("div",{className:"sep-map-view__interaction-hint"+(r?" sep-map-view__interaction-hint--visible":""),"aria-live":"polite","aria-hidden":!r||void 0,children:l})}const _i=k.memo(function({onReady:e,onPerimeterClick:t,onAddressClick:i,layersConfig:n,showLayerControl:r=!0,layerControlPosition:o,interactionConfig:a,children:s}){const{config:l,services:c,clickEventsPaused:u}=Tt(),h=o||l.ui?.layerControlPosition||"top-right",d=function(e={}){const{config:t,onLayerChange:i,theme:n="light"}=e,r=k.useRef(null),[o,a]=k.useState(null),[s,l]=k.useState(null),[c,u]=k.useState({}),h=k.useMemo(()=>(t?.availableBaseLayers||["swisstopo-satellite","swisstopo-color","swisstopo-grey","osm-standard"]).map(e=>"string"==typeof e?Qt[e]:{id:e.id,name:e.name,config:e}).filter(Boolean),[t?.availableBaseLayers]),d=k.useMemo(()=>(t?.availableOverlays||["swisstopo-cadastral","swisstopo-streets","swisstopo-addresses","swisstopo-vector"]).map(e=>"string"==typeof e?Qt[e]:{id:e.id,name:e.name,config:e}).filter(Boolean),[t?.availableOverlays]),p=k.useCallback(e=>{const i=new ti(t);i.updateTheme(n),i.initialize(e),r.current=i,a(i);const o=i.getBaseLayerId();l(o);const s={};d.forEach(e=>{s[e.id]=i.isLayerVisible(e.id)}),u(s)},[t,d,n]),f=k.useCallback(e=>{if(!r.current)return;r.current.setBaseLayer(e);const t="string"==typeof e?e:e.id;l(t),i?.(t,!0)},[i]),m=k.useCallback(e=>{if(!r.current)return;const t=!c[e];r.current.getLayerConfig(e)||r.current.addLayer(e,"overlaysPane"),r.current.setLayerVisibility(e,t),u(i=>({...i,[e]:t})),i?.(e,t)},[c,i]),g=k.useCallback((e,t)=>{r.current&&(r.current.getLayerConfig(e)||r.current.addLayer(e,"overlaysPane"),r.current.setLayerVisibility(e,t),u(i=>({...i,[e]:t})),i?.(e,t))},[i]),_=k.useCallback(e=>{r.current&&(r.current.addLayer(e),"overlay"===e.category&&u(t=>({...t,[e.id]:!1!==e.visible})))},[]),y=k.useCallback(e=>{r.current&&(r.current.removeLayer(e),u(t=>{const i={...t};return delete i[e],i}))},[]),v=k.useCallback((e,t)=>{r.current&&r.current.setLayerOpacity(e,t)},[]);return k.useEffect(()=>()=>{r.current?.destroy(),r.current=null},[]),{layerManager:o,initialize:p,baseLayerId:s,setBaseLayer:f,availableBaseLayers:h,overlayStates:c,toggleOverlay:m,setOverlayVisibility:g,availableOverlays:d,addCustomLayer:_,removeLayer:y,setOpacity:v}}({config:n,theme:l.ui?.theme||"light",onLayerChange:(e,t)=>{}}),p=l.map||{};/* @__PURE__ */
38
38
  return F.jsxs("div",{className:"sep-map-view",children:[
39
39
  /* @__PURE__ */F.jsxs(li,{center:p.center||[46.8,8.2],zoom:p.zoom||8,minZoom:p.minZoom||7,maxZoom:p.maxZoom||21,maxBounds:p.maxBounds||[[45.817995,5.95608],[47.808455,10.49203]],zoomControl:!1,doubleClickZoom:!1,attributionControl:!0,className:"sep-map-view__container",children:[
40
40
  /* @__PURE__ */F.jsx(fi,{}),