@defra/interactive-map 0.0.18-alpha → 0.0.19-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/assets/css/docusaurus.css +58 -34
- 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/panel-definition.md +16 -0
- package/docs/api.md +28 -4
- package/docs/assets/basic-map.jpg +0 -0
- package/docs/assets/button-first.jpg +0 -0
- package/docs/assets/maker-panel.jpg +0 -0
- package/docs/examples/add-marker-with-panel.mdx +59 -0
- package/docs/examples/basic-map.mdx +24 -0
- package/docs/examples/button-map.mdx +24 -0
- package/docs/examples/index.mdx +49 -0
- package/docs/index.mdx +1 -1
- package/docs/plugins/interact.md +32 -1
- package/docs/plugins.md +1 -1
- package/docusaurus.config.cjs +9 -1
- package/package.json +1 -1
- package/plugins/beta/datasets/dist/esm/im-datasets-plugin.js +1 -1
- package/plugins/beta/datasets/dist/umd/im-datasets-plugin.js +1 -1
- package/plugins/beta/draw-es/dist/esm/im-draw-es-plugin.js +1 -1
- package/plugins/beta/draw-ml/dist/css/index.css +2 -19
- 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/scale-bar/dist/css/index.css +1 -1
- package/plugins/beta/scale-bar/src/scaleBar.scss +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 +5 -3
- package/plugins/interact/src/api/clear.js +1 -1
- package/plugins/interact/src/api/selectMarker.js +14 -0
- package/plugins/interact/src/api/selectMarker.test.js +25 -0
- package/plugins/interact/src/api/unselectMarker.js +14 -0
- package/plugins/interact/src/api/unselectMarker.test.js +14 -0
- package/plugins/interact/src/events.js +18 -30
- package/plugins/interact/src/events.test.js +113 -108
- package/plugins/interact/src/manifest.js +10 -2
- package/plugins/interact/src/reducer.js +36 -1
- package/plugins/interact/src/reducer.test.js +40 -1
- package/plugins/interact/src/utils/interactionModes.js +12 -0
- package/src/App/components/Panel/Panel.jsx +6 -6
- package/src/App/components/Panel/Panel.test.jsx +37 -0
- package/src/App/components/Viewport/Viewport.jsx +5 -15
- package/src/App/components/Viewport/Viewport.module.scss +2 -0
- package/src/App/components/Viewport/Viewport.test.jsx +16 -33
- package/src/App/hooks/useInterfaceAPI.js +7 -7
- package/src/App/hooks/useInterfaceAPI.test.js +15 -9
- package/src/App/hooks/useLayoutMeasurements.js +64 -72
- package/src/App/layout/Layout.jsx +1 -1
- package/src/App/layout/layout.module.scss +1 -8
- package/src/App/renderer/HtmlElementHost.jsx +10 -5
- package/src/App/renderer/mapPanels.js +2 -1
- package/src/App/store/appActionsMap.js +4 -4
- package/src/App/store/appActionsMap.test.js +10 -0
- package/src/InteractiveMap/InteractiveMap.js +59 -11
- package/src/InteractiveMap/InteractiveMap.test.js +126 -4
- package/src/InteractiveMap/domStateManager.js +18 -6
- package/src/InteractiveMap/domStateManager.test.js +21 -0
- package/src/InteractiveMap/historyManager.js +28 -16
- package/src/InteractiveMap/historyManager.test.js +17 -0
- package/src/config/appConfig.js +2 -1
- package/src/config/appConfig.test.js +3 -13
- package/src/config/defaults.js +2 -1
- package/src/config/events.js +20 -21
- package/src/services/closeApp.js +1 -10
- package/src/services/closeApp.test.js +3 -43
- package/src/types.js +6 -1
- package/src/utils/mapStateSync.js +48 -10
- package/src/utils/mapStateSync.test.js +29 -9
- package/docs/examples.mdx +0 -70
|
@@ -1 +1 @@
|
|
|
1
|
-
.im-c-scale-bar{position:relative;margin-left:auto;text-align:right;padding-bottom:5px;color:var(--map-overlay-foreground-color);user-select:none;height:25px;width:100px}.im-c-scale-bar__label{text-shadow:-1px -1px 0 var(--map-overlay-halo-color),1px -1px 0 var(--map-overlay-halo-color),-1px 1px 0 var(--map-overlay-halo-color),1px 1px 0 var(--map-overlay-halo-color)}.im-c-scale-bar::after{content:"";position:absolute;bottom:0;left:0;height:4px;width:100%;background-color:var(--map-overlay-foreground-color);box-shadow:-1px -1px 0 var(--map-overlay-halo-color),1px -1px 0 var(--map-overlay-halo-color),-1px 1px 0 var(--map-overlay-halo-color),1px 1px 0 var(--map-overlay-halo-color)}@media(forced-colors: active){.im-c-scale-bar::after{background-color:Canvas}}
|
|
1
|
+
.im-c-scale-bar{position:relative;margin-left:auto;margin-bottom:1px;text-align:right;padding-bottom:5px;color:var(--map-overlay-foreground-color);user-select:none;height:25px;width:100px}.im-c-scale-bar__label{text-shadow:-1px -1px 0 var(--map-overlay-halo-color),1px -1px 0 var(--map-overlay-halo-color),-1px 1px 0 var(--map-overlay-halo-color),1px 1px 0 var(--map-overlay-halo-color)}.im-c-scale-bar::after{content:"";position:absolute;bottom:0;left:0;height:4px;width:100%;background-color:var(--map-overlay-foreground-color);box-shadow:-1px -1px 0 var(--map-overlay-halo-color),1px -1px 0 var(--map-overlay-halo-color),-1px 1px 0 var(--map-overlay-halo-color),1px 1px 0 var(--map-overlay-halo-color)}@media(forced-colors: active){.im-c-scale-bar::after{background-color:Canvas}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useContext as e,createContext as t,useCallback as r,useRef as n,useEffect as o,useMemo as i}from"preact/compat";import{jsx as a,jsxs as s}from"preact/jsx-runtime";import l from"@babel/runtime/helpers/defineProperty";var c={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_VISIBLE:"app:visible",APP_HIDDEN:"app:hidden",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_EXIT:"map:exit",MAP_DESTROY:"map:destroy"};function u(e,t,r={}){const n={type:"Feature"};return(0===r.id||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=t||{},n.geometry=e,n}function p(e,t,r={}){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!g(e[0])||!g(e[1]))throw new Error("coordinates must contain numbers");return u({type:"Point",coordinates:e},t,r)}function d(e,t,r={}){if(e.length<2)throw new Error("coordinates must be an array of two or more positions");return u({type:"LineString",coordinates:e},t,r)}function f(e,t={}){const r={type:"FeatureCollection"};return t.id&&(r.id=t.id),t.bbox&&(r.bbox=t.bbox),r.features=e,r}function y(e,t,r={}){return u({type:"MultiLineString",coordinates:e},t,r)}function g(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}const h=11102230246251565e-32,v=134217729,E=(3+8*h)*h;function m(e,t,r,n,o){let i,a,s,l,c=t[0],u=n[0],p=0,d=0;u>c==u>-c?(i=c,c=t[++p]):(i=u,u=n[++d]);let f=0;if(p<e&&d<r)for(u>c==u>-c?(a=c+i,s=i-(a-c),c=t[++p]):(a=u+i,s=i-(a-u),u=n[++d]),i=a,0!==s&&(o[f++]=s);p<e&&d<r;)u>c==u>-c?(a=i+c,l=a-i,s=i-(a-l)+(c-l),c=t[++p]):(a=i+u,l=a-i,s=i-(a-l)+(u-l),u=n[++d]),i=a,0!==s&&(o[f++]=s);for(;p<e;)a=i+c,l=a-i,s=i-(a-l)+(c-l),c=t[++p],i=a,0!==s&&(o[f++]=s);for(;d<r;)a=i+u,l=a-i,s=i-(a-l)+(u-l),u=n[++d],i=a,0!==s&&(o[f++]=s);return 0===i&&0!==f||(o[f++]=i),f}function P(e){return new Float64Array(e)}const S=P(4),b=P(8),w=P(12),A=P(16),O=P(4);function _(e,t,r,n,o,i){const a=(t-i)*(r-o),s=(e-o)*(n-i),l=a-s,c=Math.abs(a+s);return Math.abs(l)>=33306690738754716e-32*c?l:-function(e,t,r,n,o,i,a){let s,l,c,u,p,d,f,y,g,h,P,_,M,k,L,D,T,I;const F=e-o,C=r-o,j=t-i,R=n-i;k=F*R,d=v*F,f=d-(d-F),y=F-f,d=v*R,g=d-(d-R),h=R-g,L=y*h-(k-f*g-y*g-f*h),D=j*C,d=v*j,f=d-(d-j),y=j-f,d=v*C,g=d-(d-C),h=C-g,T=y*h-(D-f*g-y*g-f*h),P=L-T,p=L-P,S[0]=L-(P+p)+(p-T),_=k+P,p=_-k,M=k-(_-p)+(P-p),P=M-D,p=M-P,S[1]=M-(P+p)+(p-D),I=_+P,p=I-_,S[2]=_-(I-p)+(P-p),S[3]=I;let x=function(e,t){let r=t[0];for(let n=1;n<e;n++)r+=t[n];return r}(4,S),B=22204460492503146e-32*a;if(x>=B||-x>=B)return x;if(p=e-F,s=e-(F+p)+(p-o),p=r-C,c=r-(C+p)+(p-o),p=t-j,l=t-(j+p)+(p-i),p=n-R,u=n-(R+p)+(p-i),0===s&&0===l&&0===c&&0===u)return x;if(B=11093356479670487e-47*a+E*Math.abs(x),x+=F*u+R*s-(j*c+C*l),x>=B||-x>=B)return x;k=s*R,d=v*s,f=d-(d-s),y=s-f,d=v*R,g=d-(d-R),h=R-g,L=y*h-(k-f*g-y*g-f*h),D=l*C,d=v*l,f=d-(d-l),y=l-f,d=v*C,g=d-(d-C),h=C-g,T=y*h-(D-f*g-y*g-f*h),P=L-T,p=L-P,O[0]=L-(P+p)+(p-T),_=k+P,p=_-k,M=k-(_-p)+(P-p),P=M-D,p=M-P,O[1]=M-(P+p)+(p-D),I=_+P,p=I-_,O[2]=_-(I-p)+(P-p),O[3]=I;const N=m(4,S,4,O,b);k=F*u,d=v*F,f=d-(d-F),y=F-f,d=v*u,g=d-(d-u),h=u-g,L=y*h-(k-f*g-y*g-f*h),D=j*c,d=v*j,f=d-(d-j),y=j-f,d=v*c,g=d-(d-c),h=c-g,T=y*h-(D-f*g-y*g-f*h),P=L-T,p=L-P,O[0]=L-(P+p)+(p-T),_=k+P,p=_-k,M=k-(_-p)+(P-p),P=M-D,p=M-P,O[1]=M-(P+p)+(p-D),I=_+P,p=I-_,O[2]=_-(I-p)+(P-p),O[3]=I;const G=m(N,b,4,O,w);k=s*u,d=v*s,f=d-(d-s),y=s-f,d=v*u,g=d-(d-u),h=u-g,L=y*h-(k-f*g-y*g-f*h),D=l*c,d=v*l,f=d-(d-l),y=l-f,d=v*c,g=d-(d-c),h=c-g,T=y*h-(D-f*g-y*g-f*h),P=L-T,p=L-P,O[0]=L-(P+p)+(p-T),_=k+P,p=_-k,M=k-(_-p)+(P-p),P=M-D,p=M-P,O[1]=M-(P+p)+(p-D),I=_+P,p=I-_,O[2]=_-(I-p)+(P-p),O[3]=I;const U=m(G,w,4,O,A);return A[U-1]}(e,t,r,n,o,i,c)}function M(e,t){var r,n,o,i,a,s,l,c,u,p=0,d=e[0],f=e[1],y=t.length;for(r=0;r<y;r++){n=0;var g=t[r],h=g.length-1;if((c=g[0])[0]!==g[h][0]&&c[1]!==g[h][1])throw new Error("First and last coordinates in a ring must be the same");for(i=c[0]-d,a=c[1]-f;n<h;n++){if(s=(u=g[n+1])[0]-d,l=u[1]-f,0===a&&0===l){if(s<=0&&i>=0||i<=0&&s>=0)return 0}else if(l>=0&&a<=0||l<=0&&a>=0){if(0===(o=_(i,s,a,l,0,0)))return 0;(o>0&&l>0&&a<=0||o<0&&l<=0&&a>0)&&p++}c=u,a=l,i=s}}return p%2!=0}function k(e){return"Feature"===e.type?e.geometry:e}function L(e,t,r={}){if(!e)throw new Error("point is required");if(!t)throw new Error("polygon is required");const n=function(e){if(!e)throw new Error("coord is required");if(!Array.isArray(e)){if("Feature"===e.type&&null!==e.geometry&&"Point"===e.geometry.type)return[...e.geometry.coordinates];if("Point"===e.type)return[...e.coordinates]}if(Array.isArray(e)&&e.length>=2&&!Array.isArray(e[0])&&!Array.isArray(e[1]))return[...e];throw new Error("coord must be GeoJSON Point or an Array of numbers")}(e),o=k(t),i=o.type,a=t.bbox;let s=o.coordinates;if(a&&!1===function(e,t){return t[0]<=e[0]&&t[1]<=e[1]&&t[2]>=e[0]&&t[3]>=e[1]}(n,a))return!1;"Polygon"===i&&(s=[s]);let l=!1;for(var c=0;c<s.length;++c){const e=M(n,s[c]);if(0===e)return!r.ignoreBoundary;e&&(l=!0)}return l}class D{constructor(e=[],t=T){if(this.data=e,this.length=this.data.length,this.compare=t,this.length>0)for(let e=(this.length>>1)-1;e>=0;e--)this._down(e)}push(e){this.data.push(e),this.length++,this._up(this.length-1)}pop(){if(0===this.length)return;const e=this.data[0],t=this.data.pop();return this.length--,this.length>0&&(this.data[0]=t,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:t,compare:r}=this,n=t[e];for(;e>0;){const o=e-1>>1,i=t[o];if(r(n,i)>=0)break;t[e]=i,e=o}t[e]=n}_down(e){const{data:t,compare:r}=this,n=this.length>>1,o=t[e];for(;e<n;){let n=1+(e<<1),i=t[n];const a=n+1;if(a<this.length&&r(t[a],i)<0&&(n=a,i=t[a]),r(i,o)>=0)break;t[e]=i,e=n}t[e]=o}}function T(e,t){return e<t?-1:e>t?1:0}function I(e,t){return e.p.x>t.p.x?1:e.p.x<t.p.x?-1:e.p.y!==t.p.y?e.p.y>t.p.y?1:-1:1}function F(e,t){return e.rightSweepEvent.p.x>t.rightSweepEvent.p.x?1:e.rightSweepEvent.p.x<t.rightSweepEvent.p.x?-1:e.rightSweepEvent.p.y!==t.rightSweepEvent.p.y?e.rightSweepEvent.p.y<t.rightSweepEvent.p.y?1:-1:1}class C{constructor(e,t,r,n){this.p={x:e[0],y:e[1]},this.featureId=t,this.ringId=r,this.eventId=n,this.otherEvent=null,this.isLeftEndpoint=null}isSamePoint(e){return this.p.x===e.p.x&&this.p.y===e.p.y}}let j=0,R=0,x=0;function B(e,t){const r="Feature"===e.type?e.geometry:e;let n=r.coordinates;"Polygon"!==r.type&&"MultiLineString"!==r.type||(n=[n]),"LineString"===r.type&&(n=[[n]]);for(let e=0;e<n.length;e++)for(let r=0;r<n[e].length;r++){let o=n[e][r][0],i=null;R+=1;for(let a=0;a<n[e][r].length-1;a++){i=n[e][r][a+1];const s=new C(o,j,R,x),l=new C(i,j,R,x+1);s.otherEvent=l,l.otherEvent=s,I(s,l)>0?(l.isLeftEndpoint=!0,s.isLeftEndpoint=!1):(s.isLeftEndpoint=!0,l.isLeftEndpoint=!1),t.push(s),t.push(l),o=i,x+=1}}j+=1}class N{constructor(e){this.leftSweepEvent=e,this.rightSweepEvent=e.otherEvent}}function G(e,t){if(null===e||null===t)return!1;if(e.leftSweepEvent.ringId===t.leftSweepEvent.ringId&&(e.rightSweepEvent.isSamePoint(t.leftSweepEvent)||e.rightSweepEvent.isSamePoint(t.leftSweepEvent)||e.rightSweepEvent.isSamePoint(t.rightSweepEvent)||e.leftSweepEvent.isSamePoint(t.leftSweepEvent)||e.leftSweepEvent.isSamePoint(t.rightSweepEvent)))return!1;const r=e.leftSweepEvent.p.x,n=e.leftSweepEvent.p.y,o=e.rightSweepEvent.p.x,i=e.rightSweepEvent.p.y,a=t.leftSweepEvent.p.x,s=t.leftSweepEvent.p.y,l=t.rightSweepEvent.p.x,c=t.rightSweepEvent.p.y,u=(c-s)*(o-r)-(l-a)*(i-n),p=(l-a)*(n-s)-(c-s)*(r-a),d=(o-r)*(n-s)-(i-n)*(r-a);if(0===u)return!1;const f=p/u,y=d/u;if(f>=0&&f<=1&&y>=0&&y<=1){return[r+f*(o-r),n+f*(i-n)]}return!1}var U=function(e,t){const r=new D([],I);return function(e,t){if("FeatureCollection"===e.type){const r=e.features;for(let e=0;e<r.length;e++)B(r[e],t)}else B(e,t)}(e,r),function(e,t){t=t||!1;const r=[],n=new D([],F);for(;e.length;){const o=e.pop();if(o.isLeftEndpoint){const e=new N(o);for(let i=0;i<n.data.length;i++){const a=n.data[i];if(t&&a.leftSweepEvent.featureId===o.featureId)continue;const s=G(e,a);!1!==s&&r.push(s)}n.push(e)}else!1===o.isLeftEndpoint&&n.pop()}return r}(r,t)};function H(e,t,r={}){const{removeDuplicates:n=!0,ignoreSelfIntersections:o=!0}=r;let i=[];"FeatureCollection"===e.type?i=i.concat(e.features):"Feature"===e.type?i.push(e):"LineString"!==e.type&&"Polygon"!==e.type&&"MultiLineString"!==e.type&&"MultiPolygon"!==e.type||i.push(u(e)),"FeatureCollection"===t.type?i=i.concat(t.features):"Feature"===t.type?i.push(t):"LineString"!==t.type&&"Polygon"!==t.type&&"MultiLineString"!==t.type&&"MultiPolygon"!==t.type||i.push(u(t));const a=U(f(i),o);let s=[];if(n){const e={};a.forEach(t=>{const r=t.join(",");e[r]||(e[r]=!0,s.push(t))})}else s=a;return f(s.map(e=>p(e)))}function V(e,t){!function(e,t){var r,n,o,i,a,s,l,c,u,p,d=0,f="FeatureCollection"===e.type,y="Feature"===e.type,g=f?e.features.length:1;for(r=0;r<g;r++){for(s=f?e.features[r].geometry:y?e.geometry:e,c=f?e.features[r].properties:y?e.properties:{},u=f?e.features[r].bbox:y?e.bbox:void 0,p=f?e.features[r].id:y?e.id:void 0,a=(l=!!s&&"GeometryCollection"===s.type)?s.geometries.length:1,o=0;o<a;o++)if(null!==(i=l?s.geometries[o]:s))switch(i.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":if(!1===t(i,d,c,u,p))return!1;break;case"GeometryCollection":for(n=0;n<i.geometries.length;n++)if(!1===t(i.geometries[n],d,c,u,p))return!1;break;default:throw new Error("Unknown Geometry Type")}else if(!1===t(null,d,c,u,p))return!1;d++}}(e,function(e,r,n,o,i){var a,s=null===e?null:e.type;switch(s){case null:case"Point":case"LineString":case"Polygon":return!1!==t(u(e,n,{bbox:o,id:i}),r,0)&&void 0}switch(s){case"MultiPoint":a="Point";break;case"MultiLineString":a="LineString";break;case"MultiPolygon":a="Polygon"}for(var l=0;l<e.coordinates.length;l++){var c=e.coordinates[l];if(!1===t(u({type:a,coordinates:c},n),r,l))return!1}})}function W(e,t={}){const r=k(e);switch(t.properties||"Feature"!==e.type||(t.properties=e.properties),r.type){case"Polygon":return function(e,t={}){const r=k(e),n=r.coordinates,o=t.properties?t.properties:"Feature"===e.type?e.properties:{};return q(n,o)}(r,t);case"MultiPolygon":return function(e,t={}){const r=k(e),n=r.coordinates,o=t.properties?t.properties:"Feature"===e.type?e.properties:{},i=[];return n.forEach(e=>{i.push(q(e,o))}),f(i)}(r,t);default:throw new Error("invalid poly")}}function q(e,t){return e.length>1?y(e,t):d(e[0],t)}function K(e,t){for(let r=0;r<e.coordinates.length-1;r++)if(z(e.coordinates[r],e.coordinates[r+1],t.coordinates))return!0;return!1}function Y(e,t,r){for(const r of t.coordinates)if(L(r,e))return!0;return H(t,W(e),{ignoreSelfIntersections:r}).features.length>0}function z(e,t,r){const n=r[0]-e[0],o=r[1]-e[1],i=t[0]-e[0],a=t[1]-e[1];return 0===n*a-o*i&&(Math.abs(i)>=Math.abs(a)?i>0?e[0]<=r[0]&&r[0]<=t[0]:t[0]<=r[0]&&r[0]<=e[0]:a>0?e[1]<=r[1]&&r[1]<=t[1]:t[1]<=r[1]&&r[1]<=e[1])}var J=function(e,t,{ignoreSelfIntersections:r=!0}={ignoreSelfIntersections:!0}){let n=!0;return V(e,e=>{V(t,t=>{if(!1===n)return!1;n=function(e,t,r){switch(e.type){case"Point":switch(t.type){case"Point":return n=e.coordinates,o=t.coordinates,!(n[0]===o[0]&&n[1]===o[1]);case"LineString":return!K(t,e);case"Polygon":return!L(e,t)}break;case"LineString":switch(t.type){case"Point":return!K(e,t);case"LineString":return!function(e,t,r){const n=H(e,t,{ignoreSelfIntersections:r});if(n.features.length>0)return!0;return!1}(e,t,r);case"Polygon":return!Y(t,e,r)}break;case"Polygon":switch(t.type){case"Point":return!L(t,e);case"LineString":return!Y(e,t,r);case"Polygon":return!function(e,t,r){for(const r of e.coordinates[0])if(L(r,t))return!0;for(const r of t.coordinates[0])if(L(r,e))return!0;const n=H(W(e),W(t),{ignoreSelfIntersections:r});if(n.features.length>0)return!0;return!1}(t,e,r)}}var n,o;return!1}(e.geometry,t.geometry,r)})}),n};function X(e){var t=e.geometry||e;switch(t.type){case"Polygon":return function(e,t,r={}){for(const t of e){if(t.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(t[t.length-1].length!==t[0].length)throw new Error("First and last Position are not equivalent.");for(let e=0;e<t[t.length-1].length;e++)if(t[t.length-1][e]!==t[0][e])throw new Error("First and last Position are not equivalent.")}return u({type:"Polygon",coordinates:e},t,r)}(t.coordinates);case"MultiPolygon":return function(e,t,r={}){return u({type:"MultiPolygon",coordinates:e},t,r)}(t.coordinates);case"LineString":return d(t.coordinates);case"MultiLineString":return y(t.coordinates);case"Point":return p(t.coordinates);case"MultiPoint":return function(e,t,r={}){return u({type:"MultiPoint",coordinates:e},t,r)}(t.coordinates);default:throw new Error("Unsupported geometry type: ".concat(t.type))}}function Z(e,t){return t.some(t=>!J(X(t),X(e)))}function Q(e){var t;if(1!==e.length)return!1;var r=null===(t=e[0].geometry)||void 0===t?void 0:t.type;return"Polygon"===r||"MultiPolygon"===r}function $(e){if(e.length<2)return!1;if(e.some(e=>{var t;return!(null!==(t=e.geometry)&&void 0!==t&&t.type)}))return!1;for(var t=new Set([0]),r=!0;r;){r=!1;for(var n=1;n<e.length;n++)if(!t.has(n)){var o=[...t].map(t=>e[t]);Z(e[n],o)&&(t.add(n),r=!0)}}return t.size===e.length}var ee=e=>{var t,r=null===(t=e.geometry)||void 0===t?void 0:t.type;return"Point"===r||"MultiPoint"===r};new Set;function te(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}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){l(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}var ne={slot:"middle",open:!1,dismissible:!0,modal:!0};re({},ne),re(re({},ne),{},{width:"500px"}),re(re({},ne),{},{width:"500px"});var oe={small:1,medium:1.5,large:2},ie=e=>{var t,{mapState:i,pluginState:a,services:s,mapProvider:l}=e,{markers:c,mapSize:u}=i,{dispatch:p,layers:d,interactionModes:f,multiSelect:y,contiguous:g,marker:h,tolerance:v,selectedFeatures:E,selectedMarkers:m,selectionBounds:P,deselectOnClickOutside:S}=a,{eventBus:b}=s,w=(e=>{var t={};for(var r of e)t[r.layerId]=r;return t})(d),A=null!==(t=oe[u])&&void 0!==t?t:1,O=r(e=>{var t,r,{feature:n,config:o}=e;c.remove("location");var i=g&&Z(n,E),a=null!==(t=null===(r=n.properties)||void 0===r?void 0:r[o.idProperty])&&void 0!==t?t:n.id;null!=a&&p({type:"TOGGLE_SELECTED_FEATURES",payload:{featureId:a,multiSelect:y,layerId:o.layerId,idProperty:o.idProperty,properties:n.properties,geometry:n.geometry,replaceAll:g&&!i}})},[c,g,E,p,y]),_=r(e=>{var{coords:t}=e,r=f.includes("placeMarker");(r||S)&&(p({type:"CLEAR_SELECTED_FEATURES"}),r&&(c.add("location",t,h),b.emit("interact:markerchange",{coords:t})))},[f,p,c,h,b,S]),M=r(e=>{var{point:t,coords:r}=e;if(f.includes("selectMarker")){var n=((e,t,r)=>{for(var n of e.items){var o,i=null===(o=e.markerRefs)||void 0===o?void 0:o.get(n.id);if(i){var a=i.parentElement,s=a?a.getBoundingClientRect():{left:0,top:0},{left:l,top:c,right:u,bottom:p}=i.getBoundingClientRect(),d=t.x*r,f=t.y*r;if(d>=l-s.left&&d<=u-s.left&&f>=c-s.top&&f<=p-s.top)return n.id}}return null})(c,t,A);if(n)return void p({type:"TOGGLE_SELECTED_MARKERS",payload:{markerId:n,multiSelect:y}})}if(f.includes("selectFeature")&&d.length>0){var o=((e,t,r)=>{try{return(null==e?void 0:e.getFeaturesAtPoint(t,r))||[]}catch(e){return console.warn("Feature query failed:",e),[]}})(l,t,{radius:v});null!=a&&a.debug&&console.log("--- Features at ".concat(r," ---"),o);var i=((e,t)=>{var r=e.filter(e=>{var r;return t[null===(r=e.layer)||void 0===r?void 0:r.id]}),n=r.find(ee);if(n)return{feature:n,config:t[n.layer.id]};var o=r[0];return o?{feature:o,config:t[o.layer.id]}:null})(o,w);if(i)return void O(i)}_({coords:r})},[l,d,f,y,p,c,w,null==a?void 0:a.debug,v,O,_,A]);return((e,t,r,i)=>{var a=n(null);o(()=>{if(!(t.length>0)||i){var n=a.current;(null===n||0===n.features.length&&0===n.markers.length)&&0===t.length&&0===r.length||(e.emit("interact:selectionchange",{selectedFeatures:t,selectedMarkers:r,selectionBounds:i,canMerge:$(t),canSplit:Q(t)}),a.current={features:t,markers:r})}},[t,r,i])})(b,E,m,P),{handleInteraction:M}},ae=(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},se=e=>{var{mapProvider:t,mapStyle:r,pluginState:n,selectedFeatures:a,dispatch:s,events:l,eventBus:c}=e,{layers:u}=n,p=i(()=>r?((e,t)=>{var r={};if(!t)return r;var n="dark"===t.mapColorScheme?"#ffffff":"#0b0c0c";return e.forEach(e=>{var o=e.selectedStroke||t.selectedColor||n,i=e.selectedFill||"transparent",a=e.selectedStrokeWidth||3;r[e.layerId]={stroke:ae(o,t.id),fill:ae(i,t.id),strokeWidth:a}}),r})(u,r):null,[u,r]),d=()=>{var e,r=null===(e=t.updateHighlightedFeatures)||void 0===e?void 0:e.call(t,a,p);s({type:"UPDATE_SELECTED_BOUNDS",payload:r})};o(()=>{if(t&&a&&p)return d(),c.on(l.MAP_DATA_CHANGE,d),()=>{c.off(l.MAP_DATA_CHANGE,d)}},[a,t,p])};function le(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ce(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){l(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}function ue(e){var{getAppState:t,mapState:r,getPluginState:n,buttonConfig:o,events:i,eventBus:a,handleInteraction:s,clickReadyRef:l,closeApp:c}=e,{selectDone:u,selectAtTarget:p,selectCancel:d}=o,{viewportRef:f}=t().layoutRefs,y=!1,g=e=>{y="Enter"===e.key&&f.current===e.target},h=e=>{"Enter"===e.key&&y&&(e.preventDefault(),E())},v=e=>{l.current&&s(e)},E=()=>s(r.crossHair.getDetail()),m=((e,t)=>(r,n)=>{var o=t();e.markers.remove("location"),o.dispatch({type:"TOGGLE_SELECTED_FEATURES",payload:ce({multiSelect:o.multiSelect,addToExisting:n},r)})})(r,n),P=e=>m(e,!0),S=e=>m(e,!1);return document.addEventListener("keydown",g),document.addEventListener("keyup",h),a.on(i.MAP_CLICK,v),a.on("interact:selectFeature",P),a.on("interact:unselectFeature",S),p.onClick=E,u.onClick=()=>{var e,o=n(),i=r.markers.getMarker("location"),{coords:s}=i||{},{selectionBounds:l,selectedFeatures:u,selectedMarkers:p}=o;t().disabledButtons.has("selectDone")||(a.emit("interact:done",((e,t,r,n)=>ce(ce(ce(ce({},e&&{coords:e}),!e&&t&&{selectedFeatures:t}),!e&&(null==r?void 0:r.length)&&{selectedMarkers:r}),!e&&n&&{selectionBounds:n}))(s,u,p,l)),(null===(e=o.closeOnAction)||void 0===e||e)&&c())},d.onClick=()=>{var e;a.emit("interact:cancel"),(null===(e=n().closeOnAction)||void 0===e||e)&&c()},()=>{u.onClick=null,p.onClick=null,d.onClick=null,document.removeEventListener("keydown",g),document.removeEventListener("keyup",h),a.off(i.MAP_CLICK,v),a.off("interact:selectFeature",P),a.off("interact:unselectFeature",S)}}function pe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function de(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?pe(Object(r),!0).forEach(function(t){l(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):pe(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var fe={ENABLE:(e,t)=>de(de(de({},e),t),{},{enabled:!0}),DISABLE:e=>de(de({},e),{},{enabled:!1,selectedFeatures:[],selectedMarkers:[],selectionBounds:null}),TOGGLE_SELECTED_FEATURES:(e,t)=>{var{featureId:r,multiSelect:n,layerId:o,idProperty:i,addToExisting:a=!0,replaceAll:s=!1,properties:l,geometry:c}=t,u=Array.isArray(e.selectedFeatures)?e.selectedFeatures:[],p=u.findIndex(e=>e.featureId===r&&e.layerId===o);if(!1===a){var d=u.filter((e,t)=>t!==p);return de(de({},e),{},{selectedFeatures:d,selectionBounds:null})}var f,y={featureId:r,layerId:o,idProperty:i,properties:l,geometry:c};if(n&&!s){var g=[...u];-1===p?g.push(y):g.splice(p,1),f=g}else{f=-1!==p&&1===u.length?[]:[y]}return de(de({},e),{},{selectedFeatures:f,selectedMarkers:n&&!s?e.selectedMarkers:[],selectionBounds:null})},TOGGLE_SELECTED_MARKERS:(e,t)=>{var{markerId:r,multiSelect:n}=t,o=e.selectedMarkers,i=o.includes(r);if(n){var a=i?o.filter(e=>e!==r):[...o,r];return de(de({},e),{},{selectedMarkers:a})}return de(de({},e),{},{selectedFeatures:[],selectionBounds:null,selectedMarkers:i&&1===o.length?[]:[r]})},UPDATE_SELECTED_BOUNDS:(e,t)=>JSON.stringify(t)===JSON.stringify(e.selectionBounds)?e:de(de({},e),{},{selectionBounds:t}),CLEAR_SELECTED_FEATURES:e=>de(de({},e),{},{selectedFeatures:[],selectedMarkers:[],selectionBounds:null})},ye={tolerance:10,interactionModes:["selectMarker"],multiSelect:!1,contiguous:!1,deselectOnClickOutside:!1,marker:{},selectedStrokeWidth:3};function ge(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function he(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ge(Object(r),!0).forEach(function(t){l(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ge(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var ve={InitComponent:e=>{var{appState:t,mapState:r,services:i,buttonConfig:a,mapProvider:s,pluginState:l}=e,{interfaceType:u}=t,{dispatch:p,enabled:d,selectedFeatures:f,selectionBounds:y,interactionModes:g,layers:h}=l,{eventBus:v,closeApp:E}=i,{crossHair:m,mapStyle:P}=r,S=["touch","keyboard"].includes(u),{handleInteraction:b}=ie({mapState:r,pluginState:l,services:i,mapProvider:s}),w=n(b);w.current=b;var A=n(l);A.current=l;var O=n(t);O.current=t;var _=n(!1);return o(()=>{_.current=!1;var e=setTimeout(()=>{_.current=!0},0);return()=>clearTimeout(e)},[l.enabled]),se({mapProvider:s,mapStyle:P,pluginState:l,selectedFeatures:f,dispatch:p,events:c,eventBus:v}),o(()=>{v.emit("interact:active",{active:d,interactionModes:g})},[d,g]),((e,t,r,n)=>{o(()=>{var o,i=t&&(null==r?void 0:r.includes("selectFeature"))?n.map(e=>e.layerId):[];return null===(o=e.setHoverCursor)||void 0===o||o.call(e,i),()=>{var t;return null===(t=e.setHoverCursor)||void 0===t?void 0:t.call(e,[])}},[t,r,n])})(s,d,g,h),o(()=>{d&&S?m.fixAtCenter():m.hide()},[d,u]),o(()=>{if(l.enabled)return ue({getAppState:()=>O.current,mapState:r,getPluginState:()=>A.current,buttonConfig:a,events:c,eventBus:v,handleInteraction:e=>w.current(e),clickReadyRef:_,closeApp:E})},[l.enabled,a,v,E]),null},reducer:{initialState:{enabled:!1,layers:[],marker:null,interactionModes:null,multiSelect:!1,contiguous:!1,deselectOnClickOutside:!1,selectedFeatures:[],selectedMarkers:[],selectionBounds:null,closeOnAction:!0},actions:fe},buttons:[{id:"selectCancel",label:"Back",variant:"tertiary",hiddenWhen:e=>{var{appConfig:t,appState:r,pluginState:n}=e;return!n.enabled||!(["hybrid","buttonFirst"].includes(t.behaviour)&&r.isFullscreen)},mobile:{slot:"actions",showLabel:!0},tablet:{slot:"actions",showLabel:!0},desktop:{slot:"actions",showLabel:!0}},{id:"selectAtTarget",label:"Select",variant:"primary",hiddenWhen:e=>{var{appState:t,pluginState:r}=e;return!r.enabled||"touch"!==t.interfaceType},mobile:{slot:"actions"},tablet:{slot:"actions"},desktop:{slot:"actions"}},{id:"selectDone",label:"Continue",variant:"primary",excludeWhen:e=>{var{appState:t,pluginState:r}=e;return!r.enabled||!t.isFullscreen},enableWhen:e=>{var{mapState:t,pluginState:r}=e;return!!t.markers.items.some(e=>"location"===e.id)||!!r.selectionBounds},mobile:{slot:"actions",showLabel:!0},tablet:{slot:"actions",showLabel:!0},desktop:{slot:"actions",showLabel:!0}}],keyboardShortcuts:[{id:"selectOrMark",group:"Select",title:"Select feature",command:"<kbd>Enter</kbd></dd>"}],icons:[{id:"select",svgContent:'<path d="M22 14a8 8 0 0 1-8 8"/><path d="M18 11v-1a2 2 0 0 0-2-2a2 2 0 0 0-2 2"/><path d="M14 10V9a2 2 0 0 0-2-2a2 2 0 0 0-2 2v1"/><path d="M10 9.5V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v10"/><path d="M18 11a2 2 0 1 1 4 0v3a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15"/>'}],api:{enable:(e,t)=>{var{pluginState:r,pluginConfig:n}=e;r.dispatch({type:"ENABLE",payload:he(he(he({},ye),n),t)})},disable:e=>{var{pluginState:t}=e;t.dispatch({type:"DISABLE"})},clear:e=>{var{pluginState:t,mapState:r}=e;t.dispatch({type:"CLEAR_SELECTED_FEATURES"}),r.markers.remove("location")},selectFeature:(e,t)=>{var{services:r}=e,{featureId:n,layerId:o,idProperty:i}=t;r.eventBus.emit("interact:selectFeature",{featureId:n,layerId:o,idProperty:i})},unselectFeature:(e,t)=>{var{services:r}=e,{featureId:n,layerId:o,idProperty:i}=t;r.eventBus.emit("interact:unselectFeature",{featureId:n,layerId:o,idProperty:i})}}};export{ve as manifest};
|
|
1
|
+
import{useContext as e,createContext as t,useCallback as r,useRef as n,useEffect as o,useMemo as i}from"preact/compat";import{jsx as a,jsxs as s}from"preact/jsx-runtime";import l from"@babel/runtime/helpers/defineProperty";var c={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"};function u(e,t,r={}){const n={type:"Feature"};return(0===r.id||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=t||{},n.geometry=e,n}function p(e,t,r={}){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!g(e[0])||!g(e[1]))throw new Error("coordinates must contain numbers");return u({type:"Point",coordinates:e},t,r)}function d(e,t,r={}){if(e.length<2)throw new Error("coordinates must be an array of two or more positions");return u({type:"LineString",coordinates:e},t,r)}function f(e,t={}){const r={type:"FeatureCollection"};return t.id&&(r.id=t.id),t.bbox&&(r.bbox=t.bbox),r.features=e,r}function y(e,t,r={}){return u({type:"MultiLineString",coordinates:e},t,r)}function g(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}const h=11102230246251565e-32,v=134217729,E=(3+8*h)*h;function m(e,t,r,n,o){let i,a,s,l,c=t[0],u=n[0],p=0,d=0;u>c==u>-c?(i=c,c=t[++p]):(i=u,u=n[++d]);let f=0;if(p<e&&d<r)for(u>c==u>-c?(a=c+i,s=i-(a-c),c=t[++p]):(a=u+i,s=i-(a-u),u=n[++d]),i=a,0!==s&&(o[f++]=s);p<e&&d<r;)u>c==u>-c?(a=i+c,l=a-i,s=i-(a-l)+(c-l),c=t[++p]):(a=i+u,l=a-i,s=i-(a-l)+(u-l),u=n[++d]),i=a,0!==s&&(o[f++]=s);for(;p<e;)a=i+c,l=a-i,s=i-(a-l)+(c-l),c=t[++p],i=a,0!==s&&(o[f++]=s);for(;d<r;)a=i+u,l=a-i,s=i-(a-l)+(u-l),u=n[++d],i=a,0!==s&&(o[f++]=s);return 0===i&&0!==f||(o[f++]=i),f}function S(e){return new Float64Array(e)}const P=S(4),b=S(8),w=S(12),A=S(16),O=S(4);function M(e,t,r,n,o,i){const a=(t-i)*(r-o),s=(e-o)*(n-i),l=a-s,c=Math.abs(a+s);return Math.abs(l)>=33306690738754716e-32*c?l:-function(e,t,r,n,o,i,a){let s,l,c,u,p,d,f,y,g,h,S,M,_,k,L,D,T,C;const F=e-o,I=r-o,j=t-i,R=n-i;k=F*R,d=v*F,f=d-(d-F),y=F-f,d=v*R,g=d-(d-R),h=R-g,L=y*h-(k-f*g-y*g-f*h),D=j*I,d=v*j,f=d-(d-j),y=j-f,d=v*I,g=d-(d-I),h=I-g,T=y*h-(D-f*g-y*g-f*h),S=L-T,p=L-S,P[0]=L-(S+p)+(p-T),M=k+S,p=M-k,_=k-(M-p)+(S-p),S=_-D,p=_-S,P[1]=_-(S+p)+(p-D),C=M+S,p=C-M,P[2]=M-(C-p)+(S-p),P[3]=C;let B=function(e,t){let r=t[0];for(let n=1;n<e;n++)r+=t[n];return r}(4,P),x=22204460492503146e-32*a;if(B>=x||-B>=x)return B;if(p=e-F,s=e-(F+p)+(p-o),p=r-I,c=r-(I+p)+(p-o),p=t-j,l=t-(j+p)+(p-i),p=n-R,u=n-(R+p)+(p-i),0===s&&0===l&&0===c&&0===u)return B;if(x=11093356479670487e-47*a+E*Math.abs(B),B+=F*u+R*s-(j*c+I*l),B>=x||-B>=x)return B;k=s*R,d=v*s,f=d-(d-s),y=s-f,d=v*R,g=d-(d-R),h=R-g,L=y*h-(k-f*g-y*g-f*h),D=l*I,d=v*l,f=d-(d-l),y=l-f,d=v*I,g=d-(d-I),h=I-g,T=y*h-(D-f*g-y*g-f*h),S=L-T,p=L-S,O[0]=L-(S+p)+(p-T),M=k+S,p=M-k,_=k-(M-p)+(S-p),S=_-D,p=_-S,O[1]=_-(S+p)+(p-D),C=M+S,p=C-M,O[2]=M-(C-p)+(S-p),O[3]=C;const N=m(4,P,4,O,b);k=F*u,d=v*F,f=d-(d-F),y=F-f,d=v*u,g=d-(d-u),h=u-g,L=y*h-(k-f*g-y*g-f*h),D=j*c,d=v*j,f=d-(d-j),y=j-f,d=v*c,g=d-(d-c),h=c-g,T=y*h-(D-f*g-y*g-f*h),S=L-T,p=L-S,O[0]=L-(S+p)+(p-T),M=k+S,p=M-k,_=k-(M-p)+(S-p),S=_-D,p=_-S,O[1]=_-(S+p)+(p-D),C=M+S,p=C-M,O[2]=M-(C-p)+(S-p),O[3]=C;const G=m(N,b,4,O,w);k=s*u,d=v*s,f=d-(d-s),y=s-f,d=v*u,g=d-(d-u),h=u-g,L=y*h-(k-f*g-y*g-f*h),D=l*c,d=v*l,f=d-(d-l),y=l-f,d=v*c,g=d-(d-c),h=c-g,T=y*h-(D-f*g-y*g-f*h),S=L-T,p=L-S,O[0]=L-(S+p)+(p-T),M=k+S,p=M-k,_=k-(M-p)+(S-p),S=_-D,p=_-S,O[1]=_-(S+p)+(p-D),C=M+S,p=C-M,O[2]=M-(C-p)+(S-p),O[3]=C;const U=m(G,w,4,O,A);return A[U-1]}(e,t,r,n,o,i,c)}function _(e,t){var r,n,o,i,a,s,l,c,u,p=0,d=e[0],f=e[1],y=t.length;for(r=0;r<y;r++){n=0;var g=t[r],h=g.length-1;if((c=g[0])[0]!==g[h][0]&&c[1]!==g[h][1])throw new Error("First and last coordinates in a ring must be the same");for(i=c[0]-d,a=c[1]-f;n<h;n++){if(s=(u=g[n+1])[0]-d,l=u[1]-f,0===a&&0===l){if(s<=0&&i>=0||i<=0&&s>=0)return 0}else if(l>=0&&a<=0||l<=0&&a>=0){if(0===(o=M(i,s,a,l,0,0)))return 0;(o>0&&l>0&&a<=0||o<0&&l<=0&&a>0)&&p++}c=u,a=l,i=s}}return p%2!=0}function k(e){return"Feature"===e.type?e.geometry:e}function L(e,t,r={}){if(!e)throw new Error("point is required");if(!t)throw new Error("polygon is required");const n=function(e){if(!e)throw new Error("coord is required");if(!Array.isArray(e)){if("Feature"===e.type&&null!==e.geometry&&"Point"===e.geometry.type)return[...e.geometry.coordinates];if("Point"===e.type)return[...e.coordinates]}if(Array.isArray(e)&&e.length>=2&&!Array.isArray(e[0])&&!Array.isArray(e[1]))return[...e];throw new Error("coord must be GeoJSON Point or an Array of numbers")}(e),o=k(t),i=o.type,a=t.bbox;let s=o.coordinates;if(a&&!1===function(e,t){return t[0]<=e[0]&&t[1]<=e[1]&&t[2]>=e[0]&&t[3]>=e[1]}(n,a))return!1;"Polygon"===i&&(s=[s]);let l=!1;for(var c=0;c<s.length;++c){const e=_(n,s[c]);if(0===e)return!r.ignoreBoundary;e&&(l=!0)}return l}class D{constructor(e=[],t=T){if(this.data=e,this.length=this.data.length,this.compare=t,this.length>0)for(let e=(this.length>>1)-1;e>=0;e--)this._down(e)}push(e){this.data.push(e),this.length++,this._up(this.length-1)}pop(){if(0===this.length)return;const e=this.data[0],t=this.data.pop();return this.length--,this.length>0&&(this.data[0]=t,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:t,compare:r}=this,n=t[e];for(;e>0;){const o=e-1>>1,i=t[o];if(r(n,i)>=0)break;t[e]=i,e=o}t[e]=n}_down(e){const{data:t,compare:r}=this,n=this.length>>1,o=t[e];for(;e<n;){let n=1+(e<<1),i=t[n];const a=n+1;if(a<this.length&&r(t[a],i)<0&&(n=a,i=t[a]),r(i,o)>=0)break;t[e]=i,e=n}t[e]=o}}function T(e,t){return e<t?-1:e>t?1:0}function C(e,t){return e.p.x>t.p.x?1:e.p.x<t.p.x?-1:e.p.y!==t.p.y?e.p.y>t.p.y?1:-1:1}function F(e,t){return e.rightSweepEvent.p.x>t.rightSweepEvent.p.x?1:e.rightSweepEvent.p.x<t.rightSweepEvent.p.x?-1:e.rightSweepEvent.p.y!==t.rightSweepEvent.p.y?e.rightSweepEvent.p.y<t.rightSweepEvent.p.y?1:-1:1}class I{constructor(e,t,r,n){this.p={x:e[0],y:e[1]},this.featureId=t,this.ringId=r,this.eventId=n,this.otherEvent=null,this.isLeftEndpoint=null}isSamePoint(e){return this.p.x===e.p.x&&this.p.y===e.p.y}}let j=0,R=0,B=0;function x(e,t){const r="Feature"===e.type?e.geometry:e;let n=r.coordinates;"Polygon"!==r.type&&"MultiLineString"!==r.type||(n=[n]),"LineString"===r.type&&(n=[[n]]);for(let e=0;e<n.length;e++)for(let r=0;r<n[e].length;r++){let o=n[e][r][0],i=null;R+=1;for(let a=0;a<n[e][r].length-1;a++){i=n[e][r][a+1];const s=new I(o,j,R,B),l=new I(i,j,R,B+1);s.otherEvent=l,l.otherEvent=s,C(s,l)>0?(l.isLeftEndpoint=!0,s.isLeftEndpoint=!1):(s.isLeftEndpoint=!0,l.isLeftEndpoint=!1),t.push(s),t.push(l),o=i,B+=1}}j+=1}class N{constructor(e){this.leftSweepEvent=e,this.rightSweepEvent=e.otherEvent}}function G(e,t){if(null===e||null===t)return!1;if(e.leftSweepEvent.ringId===t.leftSweepEvent.ringId&&(e.rightSweepEvent.isSamePoint(t.leftSweepEvent)||e.rightSweepEvent.isSamePoint(t.leftSweepEvent)||e.rightSweepEvent.isSamePoint(t.rightSweepEvent)||e.leftSweepEvent.isSamePoint(t.leftSweepEvent)||e.leftSweepEvent.isSamePoint(t.rightSweepEvent)))return!1;const r=e.leftSweepEvent.p.x,n=e.leftSweepEvent.p.y,o=e.rightSweepEvent.p.x,i=e.rightSweepEvent.p.y,a=t.leftSweepEvent.p.x,s=t.leftSweepEvent.p.y,l=t.rightSweepEvent.p.x,c=t.rightSweepEvent.p.y,u=(c-s)*(o-r)-(l-a)*(i-n),p=(l-a)*(n-s)-(c-s)*(r-a),d=(o-r)*(n-s)-(i-n)*(r-a);if(0===u)return!1;const f=p/u,y=d/u;if(f>=0&&f<=1&&y>=0&&y<=1){return[r+f*(o-r),n+f*(i-n)]}return!1}var U=function(e,t){const r=new D([],C);return function(e,t){if("FeatureCollection"===e.type){const r=e.features;for(let e=0;e<r.length;e++)x(r[e],t)}else x(e,t)}(e,r),function(e,t){t=t||!1;const r=[],n=new D([],F);for(;e.length;){const o=e.pop();if(o.isLeftEndpoint){const e=new N(o);for(let i=0;i<n.data.length;i++){const a=n.data[i];if(t&&a.leftSweepEvent.featureId===o.featureId)continue;const s=G(e,a);!1!==s&&r.push(s)}n.push(e)}else!1===o.isLeftEndpoint&&n.pop()}return r}(r,t)};function K(e,t,r={}){const{removeDuplicates:n=!0,ignoreSelfIntersections:o=!0}=r;let i=[];"FeatureCollection"===e.type?i=i.concat(e.features):"Feature"===e.type?i.push(e):"LineString"!==e.type&&"Polygon"!==e.type&&"MultiLineString"!==e.type&&"MultiPolygon"!==e.type||i.push(u(e)),"FeatureCollection"===t.type?i=i.concat(t.features):"Feature"===t.type?i.push(t):"LineString"!==t.type&&"Polygon"!==t.type&&"MultiLineString"!==t.type&&"MultiPolygon"!==t.type||i.push(u(t));const a=U(f(i),o);let s=[];if(n){const e={};a.forEach(t=>{const r=t.join(",");e[r]||(e[r]=!0,s.push(t))})}else s=a;return f(s.map(e=>p(e)))}function H(e,t){!function(e,t){var r,n,o,i,a,s,l,c,u,p,d=0,f="FeatureCollection"===e.type,y="Feature"===e.type,g=f?e.features.length:1;for(r=0;r<g;r++){for(s=f?e.features[r].geometry:y?e.geometry:e,c=f?e.features[r].properties:y?e.properties:{},u=f?e.features[r].bbox:y?e.bbox:void 0,p=f?e.features[r].id:y?e.id:void 0,a=(l=!!s&&"GeometryCollection"===s.type)?s.geometries.length:1,o=0;o<a;o++)if(null!==(i=l?s.geometries[o]:s))switch(i.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":if(!1===t(i,d,c,u,p))return!1;break;case"GeometryCollection":for(n=0;n<i.geometries.length;n++)if(!1===t(i.geometries[n],d,c,u,p))return!1;break;default:throw new Error("Unknown Geometry Type")}else if(!1===t(null,d,c,u,p))return!1;d++}}(e,function(e,r,n,o,i){var a,s=null===e?null:e.type;switch(s){case null:case"Point":case"LineString":case"Polygon":return!1!==t(u(e,n,{bbox:o,id:i}),r,0)&&void 0}switch(s){case"MultiPoint":a="Point";break;case"MultiLineString":a="LineString";break;case"MultiPolygon":a="Polygon"}for(var l=0;l<e.coordinates.length;l++){var c=e.coordinates[l];if(!1===t(u({type:a,coordinates:c},n),r,l))return!1}})}function V(e,t={}){const r=k(e);switch(t.properties||"Feature"!==e.type||(t.properties=e.properties),r.type){case"Polygon":return function(e,t={}){const r=k(e),n=r.coordinates,o=t.properties?t.properties:"Feature"===e.type?e.properties:{};return W(n,o)}(r,t);case"MultiPolygon":return function(e,t={}){const r=k(e),n=r.coordinates,o=t.properties?t.properties:"Feature"===e.type?e.properties:{},i=[];return n.forEach(e=>{i.push(W(e,o))}),f(i)}(r,t);default:throw new Error("invalid poly")}}function W(e,t){return e.length>1?y(e,t):d(e[0],t)}function q(e,t){for(let r=0;r<e.coordinates.length-1;r++)if(z(e.coordinates[r],e.coordinates[r+1],t.coordinates))return!0;return!1}function Y(e,t,r){for(const r of t.coordinates)if(L(r,e))return!0;return K(t,V(e),{ignoreSelfIntersections:r}).features.length>0}function z(e,t,r){const n=r[0]-e[0],o=r[1]-e[1],i=t[0]-e[0],a=t[1]-e[1];return 0===n*a-o*i&&(Math.abs(i)>=Math.abs(a)?i>0?e[0]<=r[0]&&r[0]<=t[0]:t[0]<=r[0]&&r[0]<=e[0]:a>0?e[1]<=r[1]&&r[1]<=t[1]:t[1]<=r[1]&&r[1]<=e[1])}var J=function(e,t,{ignoreSelfIntersections:r=!0}={ignoreSelfIntersections:!0}){let n=!0;return H(e,e=>{H(t,t=>{if(!1===n)return!1;n=function(e,t,r){switch(e.type){case"Point":switch(t.type){case"Point":return n=e.coordinates,o=t.coordinates,!(n[0]===o[0]&&n[1]===o[1]);case"LineString":return!q(t,e);case"Polygon":return!L(e,t)}break;case"LineString":switch(t.type){case"Point":return!q(e,t);case"LineString":return!function(e,t,r){const n=K(e,t,{ignoreSelfIntersections:r});if(n.features.length>0)return!0;return!1}(e,t,r);case"Polygon":return!Y(t,e,r)}break;case"Polygon":switch(t.type){case"Point":return!L(t,e);case"LineString":return!Y(e,t,r);case"Polygon":return!function(e,t,r){for(const r of e.coordinates[0])if(L(r,t))return!0;for(const r of t.coordinates[0])if(L(r,e))return!0;const n=K(V(e),V(t),{ignoreSelfIntersections:r});if(n.features.length>0)return!0;return!1}(t,e,r)}}var n,o;return!1}(e.geometry,t.geometry,r)})}),n};function Z(e){var t=e.geometry||e;switch(t.type){case"Polygon":return function(e,t,r={}){for(const t of e){if(t.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(t[t.length-1].length!==t[0].length)throw new Error("First and last Position are not equivalent.");for(let e=0;e<t[t.length-1].length;e++)if(t[t.length-1][e]!==t[0][e])throw new Error("First and last Position are not equivalent.")}return u({type:"Polygon",coordinates:e},t,r)}(t.coordinates);case"MultiPolygon":return function(e,t,r={}){return u({type:"MultiPolygon",coordinates:e},t,r)}(t.coordinates);case"LineString":return d(t.coordinates);case"MultiLineString":return y(t.coordinates);case"Point":return p(t.coordinates);case"MultiPoint":return function(e,t,r={}){return u({type:"MultiPoint",coordinates:e},t,r)}(t.coordinates);default:throw new Error("Unsupported geometry type: ".concat(t.type))}}function X(e,t){return t.some(t=>!J(Z(t),Z(e)))}function Q(e){var t;if(1!==e.length)return!1;var r=null===(t=e[0].geometry)||void 0===t?void 0:t.type;return"Polygon"===r||"MultiPolygon"===r}function $(e){if(e.length<2)return!1;if(e.some(e=>{var t;return!(null!==(t=e.geometry)&&void 0!==t&&t.type)}))return!1;for(var t=new Set([0]),r=!0;r;){r=!1;for(var n=1;n<e.length;n++)if(!t.has(n)){var o=[...t].map(t=>e[t]);X(e[n],o)&&(t.add(n),r=!0)}}return t.size===e.length}var ee=e=>{var t,r=null===(t=e.geometry)||void 0===t?void 0:t.type;return"Point"===r||"MultiPoint"===r};new Set;function te(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}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){l(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}var ne={slot:"middle",open:!1,dismissible:!0,modal:!0};re({},ne),re(re({},ne),{},{width:"500px"}),re(re({},ne),{},{width:"500px"});var oe={small:1,medium:1.5,large:2},ie=e=>{var t,{mapState:i,pluginState:a,services:s,mapProvider:l}=e,{markers:c,mapSize:u}=i,{dispatch:p,layers:d,interactionModes:f,multiSelect:y,contiguous:g,marker:h,tolerance:v,selectedFeatures:E,selectedMarkers:m,selectionBounds:S,deselectOnClickOutside:P}=a,{eventBus:b}=s,w=(e=>{var t={};for(var r of e)t[r.layerId]=r;return t})(d),A=null!==(t=oe[u])&&void 0!==t?t:1,O=r(e=>{var t,r,{feature:n,config:o}=e;c.remove("location");var i=g&&X(n,E),a=null!==(t=null===(r=n.properties)||void 0===r?void 0:r[o.idProperty])&&void 0!==t?t:n.id;null!=a&&p({type:"TOGGLE_SELECTED_FEATURES",payload:{featureId:a,multiSelect:y,layerId:o.layerId,idProperty:o.idProperty,properties:n.properties,geometry:n.geometry,replaceAll:g&&!i}})},[c,g,E,p,y]),M=r(e=>{var{coords:t}=e,r=f.includes("placeMarker");(r||P)&&(p({type:"CLEAR_SELECTED_FEATURES"}),r&&(c.add("location",t,h),b.emit("interact:markerchange",{coords:t})))},[f,p,c,h,b,P]),_=r(e=>{var{point:t,coords:r}=e;if(f.includes("selectMarker")){var n=((e,t,r)=>{for(var n of e.items){var o,i=null===(o=e.markerRefs)||void 0===o?void 0:o.get(n.id);if(i){var a=i.parentElement,s=a?a.getBoundingClientRect():{left:0,top:0},{left:l,top:c,right:u,bottom:p}=i.getBoundingClientRect(),d=t.x*r,f=t.y*r;if(d>=l-s.left&&d<=u-s.left&&f>=c-s.top&&f<=p-s.top)return n.id}}return null})(c,t,A);if(n)return void p({type:"TOGGLE_SELECTED_MARKERS",payload:{markerId:n,multiSelect:y}})}if(f.includes("selectFeature")&&d.length>0){var o=((e,t,r)=>{try{return(null==e?void 0:e.getFeaturesAtPoint(t,r))||[]}catch(e){return console.warn("Feature query failed:",e),[]}})(l,t,{radius:v});null!=a&&a.debug&&console.log("--- Features at ".concat(r," ---"),o);var i=((e,t)=>{var r=e.filter(e=>{var r;return t[null===(r=e.layer)||void 0===r?void 0:r.id]}),n=r.find(ee);if(n)return{feature:n,config:t[n.layer.id]};var o=r[0];return o?{feature:o,config:t[o.layer.id]}:null})(o,w);if(i)return void O(i)}M({coords:r})},[l,d,f,y,p,c,w,null==a?void 0:a.debug,v,O,M,A]);return((e,t,r,i)=>{var a=n(null);o(()=>{if(!(t.length>0)||i){var n=a.current;(null===n||0===n.features.length&&0===n.markers.length)&&0===t.length&&0===r.length||(e.emit("interact:selectionchange",{selectedFeatures:t,selectedMarkers:r,selectionBounds:i,canMerge:$(t),canSplit:Q(t)}),a.current={features:t,markers:r})}},[t,r,i])})(b,E,m,S),{handleInteraction:_}},ae=(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},se=e=>{var{mapProvider:t,mapStyle:r,pluginState:n,selectedFeatures:a,dispatch:s,events:l,eventBus:c}=e,{layers:u}=n,p=i(()=>r?((e,t)=>{var r={};if(!t)return r;var n="dark"===t.mapColorScheme?"#ffffff":"#0b0c0c";return e.forEach(e=>{var o=e.selectedStroke||t.selectedColor||n,i=e.selectedFill||"transparent",a=e.selectedStrokeWidth||3;r[e.layerId]={stroke:ae(o,t.id),fill:ae(i,t.id),strokeWidth:a}}),r})(u,r):null,[u,r]),d=()=>{var e,r=null===(e=t.updateHighlightedFeatures)||void 0===e?void 0:e.call(t,a,p);s({type:"UPDATE_SELECTED_BOUNDS",payload:r})};o(()=>{if(t&&a&&p)return d(),c.on(l.MAP_DATA_CHANGE,d),()=>{c.off(l.MAP_DATA_CHANGE,d)}},[a,t,p])};function le(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ce(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){l(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}function ue(e){var t,r,n,{getAppState:o,mapState:i,getPluginState:a,buttonConfig:s,events:l,eventBus:c,handleInteraction:u,clickReadyRef:p,closeApp:d}=e,{selectDone:f,selectAtTarget:y,selectCancel:g}=s,h=()=>u(i.crossHair.getDetail()),v=e=>{p.current&&u(e)},{handleKeydown:E,handleKeyup:m}=(t=o().layoutRefs.viewportRef,r=h,n=!1,{handleKeydown:e=>{n="Enter"===e.key&&t.current===e.target},handleKeyup:e=>{"Enter"===e.key&&n&&(e.preventDefault(),r())}}),S=((e,t)=>(r,n)=>{var o=t();e.markers.remove("location"),o.dispatch({type:"TOGGLE_SELECTED_FEATURES",payload:ce({multiSelect:o.multiSelect,addToExisting:n},r)})})(i,a),P=e=>S(e,!0),b=e=>S(e,!1);return document.addEventListener("keydown",E),document.addEventListener("keyup",m),c.on(l.MAP_CLICK,v),c.on("interact:selectFeature",P),c.on("interact:unselectFeature",b),y.onClick=h,f.onClick=()=>{var e,t=a(),r=i.markers.getMarker("location"),{coords:n}=r||{},{selectionBounds:s,selectedFeatures:l,selectedMarkers:u}=t;o().disabledButtons.has("selectDone")||(c.emit("interact:done",((e,t,r,n)=>ce(ce(ce(ce({},e&&{coords:e}),!e&&t&&{selectedFeatures:t}),!e&&(null==r?void 0:r.length)&&{selectedMarkers:r}),!e&&n&&{selectionBounds:n}))(n,l,u,s)),(null===(e=t.closeOnAction)||void 0===e||e)&&d())},g.onClick=()=>{var e;c.emit("interact:cancel"),(null===(e=a().closeOnAction)||void 0===e||e)&&d()},()=>{f.onClick=null,y.onClick=null,g.onClick=null,document.removeEventListener("keydown",E),document.removeEventListener("keyup",m),c.off(l.MAP_CLICK,v),c.off("interact:selectFeature",P),c.off("interact:unselectFeature",b)}}var pe=e=>1===(null==e?void 0:e.length)&&e.includes("selectMarker");function de(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function fe(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?de(Object(r),!0).forEach(function(t){l(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):de(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var ye={ENABLE:(e,t)=>fe(fe(fe({},e),t),{},{enabled:!0}),DISABLE:e=>fe(fe({},e),{},{enabled:!1,selectedFeatures:[],selectedMarkers:[],selectionBounds:null}),TOGGLE_SELECTED_FEATURES:(e,t)=>{var{featureId:r,multiSelect:n,layerId:o,idProperty:i,addToExisting:a=!0,replaceAll:s=!1,properties:l,geometry:c}=t,u=Array.isArray(e.selectedFeatures)?e.selectedFeatures:[],p=u.findIndex(e=>e.featureId===r&&e.layerId===o);if(!1===a){var d=u.filter((e,t)=>t!==p);return fe(fe({},e),{},{selectedFeatures:d,selectionBounds:null})}var f,y={featureId:r,layerId:o,idProperty:i,properties:l,geometry:c};if(n&&!s){var g=[...u];-1===p?g.push(y):g.splice(p,1),f=g}else{f=-1!==p&&1===u.length?[]:[y]}return fe(fe({},e),{},{selectedFeatures:f,selectedMarkers:n&&!s?e.selectedMarkers:[],selectionBounds:null})},TOGGLE_SELECTED_MARKERS:(e,t)=>{var{markerId:r,multiSelect:n}=t,o=e.selectedMarkers,i=o.includes(r);if(n){var a=i?o.filter(e=>e!==r):[...o,r];return fe(fe({},e),{},{selectedMarkers:a})}return fe(fe({},e),{},{selectedFeatures:[],selectionBounds:null,selectedMarkers:i&&1===o.length?[]:[r]})},UPDATE_SELECTED_BOUNDS:(e,t)=>JSON.stringify(t)===JSON.stringify(e.selectionBounds)?e:fe(fe({},e),{},{selectionBounds:t}),CLEAR_SELECTED_FEATURES:e=>fe(fe({},e),{},{selectedFeatures:[],selectedMarkers:[],selectionBounds:null}),SELECT_MARKER:(e,t)=>{var{markerId:r,multiSelect:n}=t,o=e.selectedMarkers;if(o.includes(r))return e;var i=n?[...o,r]:[r];return fe(fe({},e),{},{selectedFeatures:n?e.selectedFeatures:[],selectionBounds:null,selectedMarkers:i})},UNSELECT_MARKER:(e,t)=>{var{markerId:r}=t,n=e.selectedMarkers;return n.includes(r)?fe(fe({},e),{},{selectedMarkers:n.filter(e=>e!==r)}):e}},ge={tolerance:10,interactionModes:["selectMarker"],multiSelect:!1,contiguous:!1,deselectOnClickOutside:!1,marker:{},selectedStrokeWidth:3};function he(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ve(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?he(Object(r),!0).forEach(function(t){l(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):he(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var Ee={InitComponent:e=>{var{appState:t,mapState:r,services:i,buttonConfig:a,mapProvider:s,pluginState:l}=e,{interfaceType:u}=t,{dispatch:p,enabled:d,selectedFeatures:f,selectionBounds:y,interactionModes:g,layers:h}=l,{eventBus:v,closeApp:E}=i,{crossHair:m,mapStyle:S}=r,P=["touch","keyboard"].includes(u),b=pe(g),{handleInteraction:w}=ie({mapState:r,pluginState:l,services:i,mapProvider:s}),A=n(w);A.current=w;var O=n(l);O.current=l;var M=n(t);M.current=t;var _=n(!1);return o(()=>{_.current=!1;var e=setTimeout(()=>{_.current=!0},0);return()=>clearTimeout(e)},[l.enabled]),se({mapProvider:s,mapStyle:S,pluginState:l,selectedFeatures:f,dispatch:p,events:c,eventBus:v}),o(()=>{v.emit("interact:active",{active:d,interactionModes:g})},[d,g]),((e,t,r,n)=>{o(()=>{var o,i=t&&(null==r?void 0:r.includes("selectFeature"))?n.map(e=>e.layerId):[];return null===(o=e.setHoverCursor)||void 0===o||o.call(e,i),()=>{var t;return null===(t=e.setHoverCursor)||void 0===t?void 0:t.call(e,[])}},[t,r,n])})(s,d,g,h),o(()=>{!d||!P||"touch"===u&&b?m.hide():m.fixAtCenter()},[d,u,g]),o(()=>{if(l.enabled)return ue({getAppState:()=>M.current,mapState:r,getPluginState:()=>O.current,buttonConfig:a,events:c,eventBus:v,handleInteraction:e=>A.current(e),clickReadyRef:_,closeApp:E})},[l.enabled,a,v,E]),null},reducer:{initialState:{enabled:!1,layers:[],marker:null,interactionModes:null,multiSelect:!1,contiguous:!1,deselectOnClickOutside:!1,selectedFeatures:[],selectedMarkers:[],selectionBounds:null,closeOnAction:!0},actions:ye},buttons:[{id:"selectCancel",label:"Back",variant:"tertiary",hiddenWhen:e=>{var{appConfig:t,appState:r,pluginState:n}=e;return!n.enabled||!(["hybrid","buttonFirst"].includes(t.behaviour)&&r.isFullscreen)},mobile:{slot:"actions",showLabel:!0},tablet:{slot:"actions",showLabel:!0},desktop:{slot:"actions",showLabel:!0}},{id:"selectAtTarget",label:"Select",variant:"primary",hiddenWhen:e=>{var{appState:t,pluginState:r}=e;return!r.enabled||"touch"!==t.interfaceType||pe(r.interactionModes)},mobile:{slot:"actions"},tablet:{slot:"actions"},desktop:{slot:"actions"}},{id:"selectDone",label:"Continue",variant:"primary",excludeWhen:e=>{var{appState:t,pluginState:r}=e;return!r.enabled||!t.isFullscreen},enableWhen:e=>{var{mapState:t,pluginState:r}=e;return!!t.markers.items.some(e=>"location"===e.id)||!!r.selectionBounds},mobile:{slot:"actions",showLabel:!0},tablet:{slot:"actions",showLabel:!0},desktop:{slot:"actions",showLabel:!0}}],keyboardShortcuts:[{id:"selectOrMark",group:"Select",title:"Select feature",command:"<kbd>Enter</kbd></dd>"}],icons:[{id:"select",svgContent:'<path d="M22 14a8 8 0 0 1-8 8"/><path d="M18 11v-1a2 2 0 0 0-2-2a2 2 0 0 0-2 2"/><path d="M14 10V9a2 2 0 0 0-2-2a2 2 0 0 0-2 2v1"/><path d="M10 9.5V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v10"/><path d="M18 11a2 2 0 1 1 4 0v3a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15"/>'}],api:{enable:(e,t)=>{var{pluginState:r,pluginConfig:n}=e;r.dispatch({type:"ENABLE",payload:ve(ve(ve({},ge),n),t)})},disable:e=>{var{pluginState:t}=e;t.dispatch({type:"DISABLE"})},clear:e=>{var{pluginState:t,mapState:r}=e;t.dispatch({type:"CLEAR_SELECTED_FEATURES"}),r.markers.remove("location")},selectFeature:(e,t)=>{var{services:r}=e,{featureId:n,layerId:o,idProperty:i}=t;r.eventBus.emit("interact:selectFeature",{featureId:n,layerId:o,idProperty:i})},unselectFeature:(e,t)=>{var{services:r}=e,{featureId:n,layerId:o,idProperty:i}=t;r.eventBus.emit("interact:unselectFeature",{featureId:n,layerId:o,idProperty:i})},selectMarker:(e,t)=>{var{pluginState:r}=e;r.dispatch({type:"SELECT_MARKER",payload:{markerId:t,multiSelect:r.multiSelect}})},unselectMarker:(e,t)=>{var{pluginState:r}=e;r.dispatch({type:"UNSELECT_MARKER",payload:{markerId:t}})}}};export{Ee as manifest};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(this.webpackChunkdefra_DefraMap=this.webpackChunkdefra_DefraMap||[]).push([[936],{960(e,t,r){r.r(t),r.d(t,{manifest:()=>we});var n=r(738),o={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_VISIBLE:"app:visible",APP_HIDDEN:"app:hidden",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_EXIT:"map:exit",MAP_DESTROY:"map:destroy"};function i(e,t,r={}){const n={type:"Feature"};return(0===r.id||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=t||{},n.geometry=e,n}function a(e,t,r={}){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!s(e[0])||!s(e[1]))throw new Error("coordinates must contain numbers");return i({type:"Point",coordinates:e},t,r)}function u(e,t,r={}){if(e.length<2)throw new Error("coordinates must be an array of two or more positions");return i({type:"LineString",coordinates:e},t,r)}function l(e,t={}){const r={type:"FeatureCollection"};return t.id&&(r.id=t.id),t.bbox&&(r.bbox=t.bbox),r.features=e,r}function c(e,t,r={}){return i({type:"MultiLineString",coordinates:e},t,r)}function s(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}Math.PI;const f=11102230246251565e-32,p=134217729,d=(3+8*f)*f;function y(e,t,r,n,o){let i,a,u,l,c=t[0],s=n[0],f=0,p=0;s>c==s>-c?(i=c,c=t[++f]):(i=s,s=n[++p]);let d=0;if(f<e&&p<r)for(s>c==s>-c?(a=c+i,u=i-(a-c),c=t[++f]):(a=s+i,u=i-(a-s),s=n[++p]),i=a,0!==u&&(o[d++]=u);f<e&&p<r;)s>c==s>-c?(a=i+c,l=a-i,u=i-(a-l)+(c-l),c=t[++f]):(a=i+s,l=a-i,u=i-(a-l)+(s-l),s=n[++p]),i=a,0!==u&&(o[d++]=u);for(;f<e;)a=i+c,l=a-i,u=i-(a-l)+(c-l),c=t[++f],i=a,0!==u&&(o[d++]=u);for(;p<r;)a=i+s,l=a-i,u=i-(a-l)+(s-l),s=n[++p],i=a,0!==u&&(o[d++]=u);return 0===i&&0!==d||(o[d++]=i),d}function m(e){return new Float64Array(e)}const v=m(4),g=m(8),h=m(12),b=m(16),S=m(4);function E(e,t,r,n,o,i){const a=(t-i)*(r-o),u=(e-o)*(n-i),l=a-u,c=Math.abs(a+u);return Math.abs(l)>=33306690738754716e-32*c?l:-function(e,t,r,n,o,i,a){let u,l,c,s,f,m,E,P,w,A,O,_,M,k,L,I,T,D;const C=e-o,j=r-o,F=t-i,R=n-i;k=C*R,m=p*C,E=m-(m-C),P=C-E,m=p*R,w=m-(m-R),A=R-w,L=P*A-(k-E*w-P*w-E*A),I=F*j,m=p*F,E=m-(m-F),P=F-E,m=p*j,w=m-(m-j),A=j-w,T=P*A-(I-E*w-P*w-E*A),O=L-T,f=L-O,v[0]=L-(O+f)+(f-T),_=k+O,f=_-k,M=k-(_-f)+(O-f),O=M-I,f=M-O,v[1]=M-(O+f)+(f-I),D=_+O,f=D-_,v[2]=_-(D-f)+(O-f),v[3]=D;let B=function(e,t){let r=t[0];for(let e=1;e<4;e++)r+=t[e];return r}(0,v),x=22204460492503146e-32*a;if(B>=x||-B>=x)return B;if(f=e-C,u=e-(C+f)+(f-o),f=r-j,c=r-(j+f)+(f-o),f=t-F,l=t-(F+f)+(f-i),f=n-R,s=n-(R+f)+(f-i),0===u&&0===l&&0===c&&0===s)return B;if(x=11093356479670487e-47*a+d*Math.abs(B),B+=C*s+R*u-(F*c+j*l),B>=x||-B>=x)return B;k=u*R,m=p*u,E=m-(m-u),P=u-E,m=p*R,w=m-(m-R),A=R-w,L=P*A-(k-E*w-P*w-E*A),I=l*j,m=p*l,E=m-(m-l),P=l-E,m=p*j,w=m-(m-j),A=j-w,T=P*A-(I-E*w-P*w-E*A),O=L-T,f=L-O,S[0]=L-(O+f)+(f-T),_=k+O,f=_-k,M=k-(_-f)+(O-f),O=M-I,f=M-O,S[1]=M-(O+f)+(f-I),D=_+O,f=D-_,S[2]=_-(D-f)+(O-f),S[3]=D;const N=y(4,v,4,S,g);k=C*s,m=p*C,E=m-(m-C),P=C-E,m=p*s,w=m-(m-s),A=s-w,L=P*A-(k-E*w-P*w-E*A),I=F*c,m=p*F,E=m-(m-F),P=F-E,m=p*c,w=m-(m-c),A=c-w,T=P*A-(I-E*w-P*w-E*A),O=L-T,f=L-O,S[0]=L-(O+f)+(f-T),_=k+O,f=_-k,M=k-(_-f)+(O-f),O=M-I,f=M-O,S[1]=M-(O+f)+(f-I),D=_+O,f=D-_,S[2]=_-(D-f)+(O-f),S[3]=D;const G=y(N,g,4,S,h);k=u*s,m=p*u,E=m-(m-u),P=u-E,m=p*s,w=m-(m-s),A=s-w,L=P*A-(k-E*w-P*w-E*A),I=l*c,m=p*l,E=m-(m-l),P=l-E,m=p*c,w=m-(m-c),A=c-w,T=P*A-(I-E*w-P*w-E*A),O=L-T,f=L-O,S[0]=L-(O+f)+(f-T),_=k+O,f=_-k,M=k-(_-f)+(O-f),O=M-I,f=M-O,S[1]=M-(O+f)+(f-I),D=_+O,f=D-_,S[2]=_-(D-f)+(O-f),S[3]=D;const U=y(G,h,4,S,b);return b[U-1]}(e,t,r,n,o,i,c)}function P(e,t){var r,n,o,i,a,u,l,c,s,f=0,p=e[0],d=e[1],y=t.length;for(r=0;r<y;r++){n=0;var m=t[r],v=m.length-1;if((c=m[0])[0]!==m[v][0]&&c[1]!==m[v][1])throw new Error("First and last coordinates in a ring must be the same");for(i=c[0]-p,a=c[1]-d;n<v;n++){if(u=(s=m[n+1])[0]-p,l=s[1]-d,0===a&&0===l){if(u<=0&&i>=0||i<=0&&u>=0)return 0}else if(l>=0&&a<=0||l<=0&&a>=0){if(0===(o=E(i,u,a,l,0,0)))return 0;(o>0&&l>0&&a<=0||o<0&&l<=0&&a>0)&&f++}c=s,a=l,i=u}}return f%2!=0}function w(e){return"Feature"===e.type?e.geometry:e}function A(e,t,r={}){if(!e)throw new Error("point is required");if(!t)throw new Error("polygon is required");const n=function(e){if(!e)throw new Error("coord is required");if(!Array.isArray(e)){if("Feature"===e.type&&null!==e.geometry&&"Point"===e.geometry.type)return[...e.geometry.coordinates];if("Point"===e.type)return[...e.coordinates]}if(Array.isArray(e)&&e.length>=2&&!Array.isArray(e[0])&&!Array.isArray(e[1]))return[...e];throw new Error("coord must be GeoJSON Point or an Array of numbers")}(e),o=w(t),i=o.type,a=t.bbox;let u=o.coordinates;if(a&&!1===function(e,t){return t[0]<=e[0]&&t[1]<=e[1]&&t[2]>=e[0]&&t[3]>=e[1]}(n,a))return!1;"Polygon"===i&&(u=[u]);let l=!1;for(var c=0;c<u.length;++c){const e=P(n,u[c]);if(0===e)return!r.ignoreBoundary;e&&(l=!0)}return l}m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(8),m(8),m(8),m(4),m(8),m(8),m(8),m(12),m(192),m(192),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(8),m(8),m(8),m(8),m(8),m(8),m(8),m(8),m(8),m(4),m(4),m(4),m(8),m(16),m(16),m(16),m(32),m(32),m(48),m(64),m(1152),m(1152),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(24),m(24),m(24),m(24),m(24),m(24),m(24),m(24),m(24),m(24),m(1152),m(1152),m(1152),m(1152),m(1152),m(2304),m(2304),m(3456),m(5760),m(8),m(8),m(8),m(16),m(24),m(48),m(48),m(96),m(192),m(384),m(384),m(384),m(768),m(96),m(96),m(96),m(1152);class O{constructor(e=[],t=_){if(this.data=e,this.length=this.data.length,this.compare=t,this.length>0)for(let e=(this.length>>1)-1;e>=0;e--)this._down(e)}push(e){this.data.push(e),this.length++,this._up(this.length-1)}pop(){if(0===this.length)return;const e=this.data[0],t=this.data.pop();return this.length--,this.length>0&&(this.data[0]=t,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:t,compare:r}=this,n=t[e];for(;e>0;){const o=e-1>>1,i=t[o];if(r(n,i)>=0)break;t[e]=i,e=o}t[e]=n}_down(e){const{data:t,compare:r}=this,n=this.length>>1,o=t[e];for(;e<n;){let n=1+(e<<1),i=t[n];const a=n+1;if(a<this.length&&r(t[a],i)<0&&(n=a,i=t[a]),r(i,o)>=0)break;t[e]=i,e=n}t[e]=o}}function _(e,t){return e<t?-1:e>t?1:0}function M(e,t){return e.p.x>t.p.x?1:e.p.x<t.p.x?-1:e.p.y!==t.p.y?e.p.y>t.p.y?1:-1:1}function k(e,t){return e.rightSweepEvent.p.x>t.rightSweepEvent.p.x?1:e.rightSweepEvent.p.x<t.rightSweepEvent.p.x?-1:e.rightSweepEvent.p.y!==t.rightSweepEvent.p.y?e.rightSweepEvent.p.y<t.rightSweepEvent.p.y?1:-1:1}class L{constructor(e,t,r,n){this.p={x:e[0],y:e[1]},this.featureId=t,this.ringId=r,this.eventId=n,this.otherEvent=null,this.isLeftEndpoint=null}isSamePoint(e){return this.p.x===e.p.x&&this.p.y===e.p.y}}let I=0,T=0,D=0;function C(e,t){const r="Feature"===e.type?e.geometry:e;let n=r.coordinates;"Polygon"!==r.type&&"MultiLineString"!==r.type||(n=[n]),"LineString"===r.type&&(n=[[n]]);for(let e=0;e<n.length;e++)for(let r=0;r<n[e].length;r++){let o=n[e][r][0],i=null;T+=1;for(let a=0;a<n[e][r].length-1;a++){i=n[e][r][a+1];const u=new L(o,I,T,D),l=new L(i,I,T,D+1);u.otherEvent=l,l.otherEvent=u,M(u,l)>0?(l.isLeftEndpoint=!0,u.isLeftEndpoint=!1):(u.isLeftEndpoint=!0,l.isLeftEndpoint=!1),t.push(u),t.push(l),o=i,D+=1}}I+=1}class j{constructor(e){this.leftSweepEvent=e,this.rightSweepEvent=e.otherEvent}}function F(e,t){if(null===e||null===t)return!1;if(e.leftSweepEvent.ringId===t.leftSweepEvent.ringId&&(e.rightSweepEvent.isSamePoint(t.leftSweepEvent)||e.rightSweepEvent.isSamePoint(t.leftSweepEvent)||e.rightSweepEvent.isSamePoint(t.rightSweepEvent)||e.leftSweepEvent.isSamePoint(t.leftSweepEvent)||e.leftSweepEvent.isSamePoint(t.rightSweepEvent)))return!1;const r=e.leftSweepEvent.p.x,n=e.leftSweepEvent.p.y,o=e.rightSweepEvent.p.x,i=e.rightSweepEvent.p.y,a=t.leftSweepEvent.p.x,u=t.leftSweepEvent.p.y,l=t.rightSweepEvent.p.x,c=t.rightSweepEvent.p.y,s=(c-u)*(o-r)-(l-a)*(i-n);if(0===s)return!1;const f=((l-a)*(n-u)-(c-u)*(r-a))/s,p=((o-r)*(n-u)-(i-n)*(r-a))/s;return f>=0&&f<=1&&p>=0&&p<=1&&[r+f*(o-r),n+f*(i-n)]}function R(e,t,r={}){const{removeDuplicates:n=!0,ignoreSelfIntersections:o=!0}=r;let u=[];"FeatureCollection"===e.type?u=u.concat(e.features):"Feature"===e.type?u.push(e):"LineString"!==e.type&&"Polygon"!==e.type&&"MultiLineString"!==e.type&&"MultiPolygon"!==e.type||u.push(i(e)),"FeatureCollection"===t.type?u=u.concat(t.features):"Feature"===t.type?u.push(t):"LineString"!==t.type&&"Polygon"!==t.type&&"MultiLineString"!==t.type&&"MultiPolygon"!==t.type||u.push(i(t));const c=function(e,t){const r=new O([],M);return function(e,t){if("FeatureCollection"===e.type){const r=e.features;for(let e=0;e<r.length;e++)C(r[e],t)}else C(e,t)}(e,r),function(e,t){t=t||!1;const r=[],n=new O([],k);for(;e.length;){const o=e.pop();if(o.isLeftEndpoint){const e=new j(o);for(let i=0;i<n.data.length;i++){const a=n.data[i];if(t&&a.leftSweepEvent.featureId===o.featureId)continue;const u=F(e,a);!1!==u&&r.push(u)}n.push(e)}else!1===o.isLeftEndpoint&&n.pop()}return r}(r,t)}(l(u),o);let s=[];if(n){const e={};c.forEach(t=>{const r=t.join(",");e[r]||(e[r]=!0,s.push(t))})}else s=c;return l(s.map(e=>a(e)))}function B(e,t){!function(e,t){var r,n,o,i,a,u,l,c,s,f,p=0,d="FeatureCollection"===e.type,y="Feature"===e.type,m=d?e.features.length:1;for(r=0;r<m;r++){for(u=d?e.features[r].geometry:y?e.geometry:e,c=d?e.features[r].properties:y?e.properties:{},s=d?e.features[r].bbox:y?e.bbox:void 0,f=d?e.features[r].id:y?e.id:void 0,a=(l=!!u&&"GeometryCollection"===u.type)?u.geometries.length:1,o=0;o<a;o++)if(null!==(i=l?u.geometries[o]:u))switch(i.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":if(!1===t(i,p,c,s,f))return!1;break;case"GeometryCollection":for(n=0;n<i.geometries.length;n++)if(!1===t(i.geometries[n],p,c,s,f))return!1;break;default:throw new Error("Unknown Geometry Type")}else if(!1===t(null,p,c,s,f))return!1;p++}}(e,function(e,r,n,o,a){var u,l=null===e?null:e.type;switch(l){case null:case"Point":case"LineString":case"Polygon":return!1!==t(i(e,n,{bbox:o,id:a}),r,0)&&void 0}switch(l){case"MultiPoint":u="Point";break;case"MultiLineString":u="LineString";break;case"MultiPolygon":u="Polygon"}for(var c=0;c<e.coordinates.length;c++){var s=e.coordinates[c];if(!1===t(i({type:u,coordinates:s},n),r,c))return!1}})}function x(e,t={}){const r=w(e);switch(t.properties||"Feature"!==e.type||(t.properties=e.properties),r.type){case"Polygon":return function(e,t={}){return N(w(e).coordinates,t.properties?t.properties:"Feature"===e.type?e.properties:{})}(r,t);case"MultiPolygon":return function(e,t={}){const r=w(e).coordinates,n=t.properties?t.properties:"Feature"===e.type?e.properties:{},o=[];return r.forEach(e=>{o.push(N(e,n))}),l(o)}(r,t);default:throw new Error("invalid poly")}}function N(e,t){return e.length>1?c(e,t):u(e[0],t)}function G(e,t){for(let r=0;r<e.coordinates.length-1;r++)if(H(e.coordinates[r],e.coordinates[r+1],t.coordinates))return!0;return!1}function U(e,t,r){for(const r of t.coordinates)if(A(r,e))return!0;return R(t,x(e),{ignoreSelfIntersections:r}).features.length>0}function H(e,t,r){const n=r[0]-e[0],o=r[1]-e[1],i=t[0]-e[0],a=t[1]-e[1];return 0===n*a-o*i&&(Math.abs(i)>=Math.abs(a)?i>0?e[0]<=r[0]&&r[0]<=t[0]:t[0]<=r[0]&&r[0]<=e[0]:a>0?e[1]<=r[1]&&r[1]<=t[1]:t[1]<=r[1]&&r[1]<=e[1])}function V(e){return function(e){if(Array.isArray(e))return W(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return W(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?W(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function W(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function q(e){var t=e.geometry||e;switch(t.type){case"Polygon":return function(e,t,r={}){for(const t of e){if(t.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(t[t.length-1].length!==t[0].length)throw new Error("First and last Position are not equivalent.");for(let e=0;e<t[t.length-1].length;e++)if(t[t.length-1][e]!==t[0][e])throw new Error("First and last Position are not equivalent.")}return i({type:"Polygon",coordinates:e},t,r)}(t.coordinates);case"MultiPolygon":return function(e,t,r={}){return i({type:"MultiPolygon",coordinates:e},t,r)}(t.coordinates);case"LineString":return u(t.coordinates);case"MultiLineString":return c(t.coordinates);case"Point":return a(t.coordinates);case"MultiPoint":return function(e,t,r={}){return i({type:"MultiPoint",coordinates:e},t,r)}(t.coordinates);default:throw new Error("Unsupported geometry type: ".concat(t.type))}}function K(e,t){return t.some(function(t){return!function(e,t,{ignoreSelfIntersections:r=!0}={ignoreSelfIntersections:!0}){let n=!0;return B(e,e=>{B(t,t=>{if(!1===n)return!1;n=function(e,t,r){switch(e.type){case"Point":switch(t.type){case"Point":return n=e.coordinates,o=t.coordinates,!(n[0]===o[0]&&n[1]===o[1]);case"LineString":return!G(t,e);case"Polygon":return!A(e,t)}break;case"LineString":switch(t.type){case"Point":return!G(e,t);case"LineString":return!function(e,t,r){return R(e,t,{ignoreSelfIntersections:r}).features.length>0}(e,t,r);case"Polygon":return!U(t,e,r)}break;case"Polygon":switch(t.type){case"Point":return!A(t,e);case"LineString":return!U(e,t,r);case"Polygon":return!function(e,t,r){for(const r of e.coordinates[0])if(A(r,t))return!0;for(const r of t.coordinates[0])if(A(r,e))return!0;return R(x(e),x(t),{ignoreSelfIntersections:r}).features.length>0}(t,e,r)}}var n,o;return!1}(e.geometry,t.geometry,r)})}),n}(q(t),q(e))})}function Y(e){var t;if(1!==e.length)return!1;var r=null===(t=e[0].geometry)||void 0===t?void 0:t.type;return"Polygon"===r||"MultiPolygon"===r}function z(e){if(e.length<2)return!1;if(e.some(function(e){var t;return!(null!==(t=e.geometry)&&void 0!==t&&t.type)}))return!1;for(var t=new Set([0]),r=!0;r;){r=!1;for(var n=1;n<e.length;n++)if(!t.has(n)){var o=V(t).map(function(t){return e[t]});K(e[n],o)&&(t.add(n),r=!0)}}return t.size===e.length}function $(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var J=function(e){var t,r=null===(t=e.geometry)||void 0===t?void 0:t.type;return"Point"===r||"MultiPoint"===r};new Set,new Set,r(287);function X(e){return X="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},X(e)}function Z(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Q(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){ee(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}function ee(e,t,r){return(t=function(e){var t=function(e){if("object"!=X(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=X(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==X(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var te={slot:"middle",open:!1,dismissible:!0,modal:!0},re=(Q({},te),Q(Q({},te),{},{width:"500px"}),Q(Q({},te),{},{width:"500px"}),{small:1,medium:1.5,large:2});function ne(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var oe=function(e){var t,r=e.mapState,o=e.pluginState,i=e.services,a=e.mapProvider,u=r.markers,l=r.mapSize,c=o.dispatch,s=o.layers,f=o.interactionModes,p=o.multiSelect,d=o.contiguous,y=o.marker,m=o.tolerance,v=o.selectedFeatures,g=o.selectedMarkers,h=o.selectionBounds,b=o.deselectOnClickOutside,S=i.eventBus,E=function(e){var t,r={},n=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return $(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?$(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}(e);try{for(n.s();!(t=n.n()).done;){var o=t.value;r[o.layerId]=o}}catch(e){n.e(e)}finally{n.f()}return r}(s),P=null!==(t=re[l])&&void 0!==t?t:1,w=(0,n.useCallback)(function(e){var t,r,n=e.feature,o=e.config;u.remove("location");var i=d&&K(n,v),a=null!==(t=null===(r=n.properties)||void 0===r?void 0:r[o.idProperty])&&void 0!==t?t:n.id;null!=a&&c({type:"TOGGLE_SELECTED_FEATURES",payload:{featureId:a,multiSelect:p,layerId:o.layerId,idProperty:o.idProperty,properties:n.properties,geometry:n.geometry,replaceAll:d&&!i}})},[u,d,v,c,p]),A=(0,n.useCallback)(function(e){var t=e.coords,r=f.includes("placeMarker");(r||b)&&(c({type:"CLEAR_SELECTED_FEATURES"}),r&&(u.add("location",t,y),S.emit("interact:markerchange",{coords:t})))},[f,c,u,y,S,b]),O=(0,n.useCallback)(function(e){var t=e.point,r=e.coords;if(f.includes("selectMarker")){var n=function(e,t,r){var n,o=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return ne(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?ne(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}(e.items);try{for(o.s();!(n=o.n()).done;){var i,a=n.value,u=null===(i=e.markerRefs)||void 0===i?void 0:i.get(a.id);if(u){var l=u.parentElement,c=l?l.getBoundingClientRect():{left:0,top:0},s=u.getBoundingClientRect(),f=s.left,p=s.top,d=s.right,y=s.bottom,m=t.x*r,v=t.y*r;if(m>=f-c.left&&m<=d-c.left&&v>=p-c.top&&v<=y-c.top)return a.id}}}catch(e){o.e(e)}finally{o.f()}return null}(u,t,P);if(n)return void c({type:"TOGGLE_SELECTED_MARKERS",payload:{markerId:n,multiSelect:p}})}if(f.includes("selectFeature")&&s.length>0){var i=function(e,t,r){try{return(null==e?void 0:e.getFeaturesAtPoint(t,r))||[]}catch(e){return console.warn("Feature query failed:",e),[]}}(a,t,{radius:m});null!=o&&o.debug&&console.log("--- Features at ".concat(r," ---"),i);var l=function(e,t){var r=e.filter(function(e){var r;return t[null===(r=e.layer)||void 0===r?void 0:r.id]}),n=r.find(J);if(n)return{feature:n,config:t[n.layer.id]};var o=r[0];return o?{feature:o,config:t[o.layer.id]}:null}(i,E);if(l)return void w(l)}A({coords:r})},[a,s,f,p,c,u,E,null==o?void 0:o.debug,m,w,A,P]);return function(e,t,r,o){var i=(0,n.useRef)(null);(0,n.useEffect)(function(){if(!(t.length>0)||o){var n=i.current;(null===n||0===n.features.length&&0===n.markers.length)&&0===t.length&&0===r.length||(e.emit("interact:selectionchange",{selectedFeatures:t,selectedMarkers:r,selectionBounds:o,canMerge:z(t),canSplit:Y(t)}),i.current={features:t,markers:r})}},[t,r,o])}(S,v,g,h),{handleInteraction:O}};function ie(e){return ie="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ie(e)}var ae=function(e,t){if(!e)return null;if("string"==typeof e)return e.trim();if("object"===ie(e)){if(t&&e[t])return e[t];var r=Object.values(e)[0];return null!=r?r:null}return null};function ue(e){return ue="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ue(e)}function le(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ce(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){se(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}function se(e,t,r){return(t=function(e){var t=function(e){if("object"!=ue(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=ue(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ue(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function fe(e){return fe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},fe(e)}function pe(e){return function(e){if(Array.isArray(e))return de(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return de(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?de(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function de(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function ye(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function me(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ye(Object(r),!0).forEach(function(t){ve(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ye(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function ve(e,t,r){return(t=function(e){var t=function(e){if("object"!=fe(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=fe(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==fe(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ge={ENABLE:function(e,t){return me(me(me({},e),t),{},{enabled:!0})},DISABLE:function(e){return me(me({},e),{},{enabled:!1,selectedFeatures:[],selectedMarkers:[],selectionBounds:null})},TOGGLE_SELECTED_FEATURES:function(e,t){var r=t.featureId,n=t.multiSelect,o=t.layerId,i=t.idProperty,a=t.addToExisting,u=void 0===a||a,l=t.replaceAll,c=void 0!==l&&l,s=t.properties,f=t.geometry,p=Array.isArray(e.selectedFeatures)?e.selectedFeatures:[],d=p.findIndex(function(e){return e.featureId===r&&e.layerId===o});if(!1===u){var y=p.filter(function(e,t){return t!==d});return me(me({},e),{},{selectedFeatures:y,selectionBounds:null})}var m,v={featureId:r,layerId:o,idProperty:i,properties:s,geometry:f};if(n&&!c){var g=pe(p);-1===d?g.push(v):g.splice(d,1),m=g}else m=-1!==d&&1===p.length?[]:[v];return me(me({},e),{},{selectedFeatures:m,selectedMarkers:n&&!c?e.selectedMarkers:[],selectionBounds:null})},TOGGLE_SELECTED_MARKERS:function(e,t){var r=t.markerId,n=t.multiSelect,o=e.selectedMarkers,i=o.includes(r);if(n){var a=i?o.filter(function(e){return e!==r}):[].concat(pe(o),[r]);return me(me({},e),{},{selectedMarkers:a})}return me(me({},e),{},{selectedFeatures:[],selectionBounds:null,selectedMarkers:i&&1===o.length?[]:[r]})},UPDATE_SELECTED_BOUNDS:function(e,t){return JSON.stringify(t)===JSON.stringify(e.selectionBounds)?e:me(me({},e),{},{selectionBounds:t})},CLEAR_SELECTED_FEATURES:function(e){return me(me({},e),{},{selectedFeatures:[],selectedMarkers:[],selectionBounds:null})}},he={tolerance:10,interactionModes:["selectMarker"],multiSelect:!1,contiguous:!1,deselectOnClickOutside:!1,marker:{},selectedStrokeWidth:3};function be(e){return be="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},be(e)}function Se(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Ee(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Se(Object(r),!0).forEach(function(t){Pe(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Se(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function Pe(e,t,r){return(t=function(e){var t=function(e){if("object"!=be(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=be(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==be(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var we={InitComponent:function(e){var t=e.appState,r=e.mapState,i=e.services,a=e.buttonConfig,u=e.mapProvider,l=e.pluginState,c=t.interfaceType,s=l.dispatch,f=l.enabled,p=l.selectedFeatures,d=l.selectionBounds,y=l.interactionModes,m=l.layers,v=i.eventBus,g=i.closeApp,h=r.crossHair,b=r.mapStyle,S=["touch","keyboard"].includes(c),E=oe({appState:t,mapState:r,pluginState:l,services:i,mapProvider:u}).handleInteraction,P=(0,n.useRef)(E);P.current=E;var w=(0,n.useRef)(l);w.current=l;var A=(0,n.useRef)(t);A.current=t;var O=(0,n.useRef)(!1);return(0,n.useEffect)(function(){O.current=!1;var e=setTimeout(function(){O.current=!0},0);return function(){return clearTimeout(e)}},[l.enabled]),function(e){var t=e.mapProvider,r=e.mapStyle,o=e.pluginState,i=e.selectedFeatures,a=e.dispatch,u=e.events,l=e.eventBus,c=o.layers,s=(0,n.useMemo)(function(){return r?function(e,t){var r={};if(!t)return r;var n="dark"===t.mapColorScheme?"#ffffff":"#0b0c0c";return e.forEach(function(e){var o=e.selectedStroke||t.selectedColor||n,i=e.selectedFill||"transparent",a=e.selectedStrokeWidth||3;r[e.layerId]={stroke:ae(o,t.id),fill:ae(i,t.id),strokeWidth:a}}),r}(c,r):null},[c,r]),f=function(){var e,r=null===(e=t.updateHighlightedFeatures)||void 0===e?void 0:e.call(t,i,s);a({type:"UPDATE_SELECTED_BOUNDS",payload:r})};(0,n.useEffect)(function(){if(t&&i&&s)return f(),l.on(u.MAP_DATA_CHANGE,f),function(){l.off(u.MAP_DATA_CHANGE,f)}},[i,t,s])}({mapProvider:u,mapStyle:b,pluginState:l,selectedFeatures:p,selectionBounds:d,dispatch:s,events:o,eventBus:v}),(0,n.useEffect)(function(){v.emit("interact:active",{active:f,interactionModes:y})},[f,y]),function(e,t,r,o){(0,n.useEffect)(function(){var n,i=t&&(null==r?void 0:r.includes("selectFeature"))?o.map(function(e){return e.layerId}):[];return null===(n=e.setHoverCursor)||void 0===n||n.call(e,i),function(){var t;return null===(t=e.setHoverCursor)||void 0===t?void 0:t.call(e,[])}},[t,r,o])}(u,f,y,m),(0,n.useEffect)(function(){f&&S?h.fixAtCenter():h.hide()},[f,c]),(0,n.useEffect)(function(){if(l.enabled)return function(e){var t=e.getAppState,r=e.mapState,n=e.getPluginState,o=e.buttonConfig,i=e.events,a=e.eventBus,u=e.handleInteraction,l=e.clickReadyRef,c=e.closeApp,s=o.selectDone,f=o.selectAtTarget,p=o.selectCancel,d=t().layoutRefs.viewportRef,y=!1,m=function(e){y="Enter"===e.key&&d.current===e.target},v=function(e){"Enter"===e.key&&y&&(e.preventDefault(),h())},g=function(e){l.current&&u(e)},h=function(){return u(r.crossHair.getDetail())},b=function(e,t){return function(r,n){var o=t();e.markers.remove("location"),o.dispatch({type:"TOGGLE_SELECTED_FEATURES",payload:ce({multiSelect:o.multiSelect,addToExisting:n},r)})}}(r,n),S=function(e){return b(e,!0)},E=function(e){return b(e,!1)};return document.addEventListener("keydown",m),document.addEventListener("keyup",v),a.on(i.MAP_CLICK,g),a.on("interact:selectFeature",S),a.on("interact:unselectFeature",E),f.onClick=h,s.onClick=function(){var e,o=n(),i=(r.markers.getMarker("location")||{}).coords,u=o.selectionBounds,l=o.selectedFeatures,s=o.selectedMarkers;t().disabledButtons.has("selectDone")||(a.emit("interact:done",function(e,t,r,n){return ce(ce(ce(ce({},e&&{coords:e}),!e&&t&&{selectedFeatures:t}),!e&&(null==r?void 0:r.length)&&{selectedMarkers:r}),!e&&n&&{selectionBounds:n})}(i,l,s,u)),(null===(e=o.closeOnAction)||void 0===e||e)&&c())},p.onClick=function(){var e;a.emit("interact:cancel"),(null===(e=n().closeOnAction)||void 0===e||e)&&c()},function(){s.onClick=null,f.onClick=null,p.onClick=null,document.removeEventListener("keydown",m),document.removeEventListener("keyup",v),a.off(i.MAP_CLICK,g),a.off("interact:selectFeature",S),a.off("interact:unselectFeature",E)}}({getAppState:function(){return A.current},mapState:r,getPluginState:function(){return w.current},buttonConfig:a,events:o,eventBus:v,handleInteraction:function(e){return P.current(e)},clickReadyRef:O,closeApp:g})},[l.enabled,a,v,g]),null},reducer:{initialState:{enabled:!1,layers:[],marker:null,interactionModes:null,multiSelect:!1,contiguous:!1,deselectOnClickOutside:!1,selectedFeatures:[],selectedMarkers:[],selectionBounds:null,closeOnAction:!0},actions:ge},buttons:[{id:"selectCancel",label:"Back",variant:"tertiary",hiddenWhen:function(e){var t=e.appConfig,r=e.appState;return!e.pluginState.enabled||!(["hybrid","buttonFirst"].includes(t.behaviour)&&r.isFullscreen)},mobile:{slot:"actions",showLabel:!0},tablet:{slot:"actions",showLabel:!0},desktop:{slot:"actions",showLabel:!0}},{id:"selectAtTarget",label:"Select",variant:"primary",hiddenWhen:function(e){var t=e.appState;return!e.pluginState.enabled||"touch"!==t.interfaceType},mobile:{slot:"actions"},tablet:{slot:"actions"},desktop:{slot:"actions"}},{id:"selectDone",label:"Continue",variant:"primary",excludeWhen:function(e){var t=e.appState;return!e.pluginState.enabled||!t.isFullscreen},enableWhen:function(e){var t=e.mapState,r=e.pluginState;return!!t.markers.items.some(function(e){return"location"===e.id})||!!r.selectionBounds},mobile:{slot:"actions",showLabel:!0},tablet:{slot:"actions",showLabel:!0},desktop:{slot:"actions",showLabel:!0}}],keyboardShortcuts:[{id:"selectOrMark",group:"Select",title:"Select feature",command:"<kbd>Enter</kbd></dd>"}],icons:[{id:"select",svgContent:'<path d="M22 14a8 8 0 0 1-8 8"/><path d="M18 11v-1a2 2 0 0 0-2-2a2 2 0 0 0-2 2"/><path d="M14 10V9a2 2 0 0 0-2-2a2 2 0 0 0-2 2v1"/><path d="M10 9.5V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v10"/><path d="M18 11a2 2 0 1 1 4 0v3a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15"/>'}],api:{enable:function(e,t){var r=e.pluginState,n=e.pluginConfig;r.dispatch({type:"ENABLE",payload:Ee(Ee(Ee({},he),n),t)})},disable:function(e){e.pluginState.dispatch({type:"DISABLE"})},clear:function(e){var t=e.pluginState,r=e.mapState;t.dispatch({type:"CLEAR_SELECTED_FEATURES"}),r.markers.remove("location")},selectFeature:function(e,t){var r=e.services,n=t.featureId,o=t.layerId,i=t.idProperty;r.eventBus.emit("interact:selectFeature",{featureId:n,layerId:o,idProperty:i})},unselectFeature:function(e,t){var r=e.services,n=t.featureId,o=t.layerId,i=t.idProperty;r.eventBus.emit("interact:unselectFeature",{featureId:n,layerId:o,idProperty:i})}}}}}]);
|
|
1
|
+
"use strict";(this.webpackChunkdefra_DefraMap=this.webpackChunkdefra_DefraMap||[]).push([[936],{456(e,t,r){r.r(t),r.d(t,{manifest:()=>Ae});var n=r(738),o={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"};function i(e,t,r={}){const n={type:"Feature"};return(0===r.id||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=t||{},n.geometry=e,n}function a(e,t,r={}){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!s(e[0])||!s(e[1]))throw new Error("coordinates must contain numbers");return i({type:"Point",coordinates:e},t,r)}function u(e,t,r={}){if(e.length<2)throw new Error("coordinates must be an array of two or more positions");return i({type:"LineString",coordinates:e},t,r)}function l(e,t={}){const r={type:"FeatureCollection"};return t.id&&(r.id=t.id),t.bbox&&(r.bbox=t.bbox),r.features=e,r}function c(e,t,r={}){return i({type:"MultiLineString",coordinates:e},t,r)}function s(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}Math.PI;const f=11102230246251565e-32,p=134217729,d=(3+8*f)*f;function y(e,t,r,n,o){let i,a,u,l,c=t[0],s=n[0],f=0,p=0;s>c==s>-c?(i=c,c=t[++f]):(i=s,s=n[++p]);let d=0;if(f<e&&p<r)for(s>c==s>-c?(a=c+i,u=i-(a-c),c=t[++f]):(a=s+i,u=i-(a-s),s=n[++p]),i=a,0!==u&&(o[d++]=u);f<e&&p<r;)s>c==s>-c?(a=i+c,l=a-i,u=i-(a-l)+(c-l),c=t[++f]):(a=i+s,l=a-i,u=i-(a-l)+(s-l),s=n[++p]),i=a,0!==u&&(o[d++]=u);for(;f<e;)a=i+c,l=a-i,u=i-(a-l)+(c-l),c=t[++f],i=a,0!==u&&(o[d++]=u);for(;p<r;)a=i+s,l=a-i,u=i-(a-l)+(s-l),s=n[++p],i=a,0!==u&&(o[d++]=u);return 0===i&&0!==d||(o[d++]=i),d}function m(e){return new Float64Array(e)}const v=m(4),g=m(8),h=m(12),b=m(16),S=m(4);function E(e,t,r,n,o,i){const a=(t-i)*(r-o),u=(e-o)*(n-i),l=a-u,c=Math.abs(a+u);return Math.abs(l)>=33306690738754716e-32*c?l:-function(e,t,r,n,o,i,a){let u,l,c,s,f,m,E,P,w,A,O,M,_,k,L,T,I,C;const D=e-o,j=r-o,F=t-i,R=n-i;k=D*R,m=p*D,E=m-(m-D),P=D-E,m=p*R,w=m-(m-R),A=R-w,L=P*A-(k-E*w-P*w-E*A),T=F*j,m=p*F,E=m-(m-F),P=F-E,m=p*j,w=m-(m-j),A=j-w,I=P*A-(T-E*w-P*w-E*A),O=L-I,f=L-O,v[0]=L-(O+f)+(f-I),M=k+O,f=M-k,_=k-(M-f)+(O-f),O=_-T,f=_-O,v[1]=_-(O+f)+(f-T),C=M+O,f=C-M,v[2]=M-(C-f)+(O-f),v[3]=C;let B=function(e,t){let r=t[0];for(let e=1;e<4;e++)r+=t[e];return r}(0,v),x=22204460492503146e-32*a;if(B>=x||-B>=x)return B;if(f=e-D,u=e-(D+f)+(f-o),f=r-j,c=r-(j+f)+(f-o),f=t-F,l=t-(F+f)+(f-i),f=n-R,s=n-(R+f)+(f-i),0===u&&0===l&&0===c&&0===s)return B;if(x=11093356479670487e-47*a+d*Math.abs(B),B+=D*s+R*u-(F*c+j*l),B>=x||-B>=x)return B;k=u*R,m=p*u,E=m-(m-u),P=u-E,m=p*R,w=m-(m-R),A=R-w,L=P*A-(k-E*w-P*w-E*A),T=l*j,m=p*l,E=m-(m-l),P=l-E,m=p*j,w=m-(m-j),A=j-w,I=P*A-(T-E*w-P*w-E*A),O=L-I,f=L-O,S[0]=L-(O+f)+(f-I),M=k+O,f=M-k,_=k-(M-f)+(O-f),O=_-T,f=_-O,S[1]=_-(O+f)+(f-T),C=M+O,f=C-M,S[2]=M-(C-f)+(O-f),S[3]=C;const N=y(4,v,4,S,g);k=D*s,m=p*D,E=m-(m-D),P=D-E,m=p*s,w=m-(m-s),A=s-w,L=P*A-(k-E*w-P*w-E*A),T=F*c,m=p*F,E=m-(m-F),P=F-E,m=p*c,w=m-(m-c),A=c-w,I=P*A-(T-E*w-P*w-E*A),O=L-I,f=L-O,S[0]=L-(O+f)+(f-I),M=k+O,f=M-k,_=k-(M-f)+(O-f),O=_-T,f=_-O,S[1]=_-(O+f)+(f-T),C=M+O,f=C-M,S[2]=M-(C-f)+(O-f),S[3]=C;const U=y(N,g,4,S,h);k=u*s,m=p*u,E=m-(m-u),P=u-E,m=p*s,w=m-(m-s),A=s-w,L=P*A-(k-E*w-P*w-E*A),T=l*c,m=p*l,E=m-(m-l),P=l-E,m=p*c,w=m-(m-c),A=c-w,I=P*A-(T-E*w-P*w-E*A),O=L-I,f=L-O,S[0]=L-(O+f)+(f-I),M=k+O,f=M-k,_=k-(M-f)+(O-f),O=_-T,f=_-O,S[1]=_-(O+f)+(f-T),C=M+O,f=C-M,S[2]=M-(C-f)+(O-f),S[3]=C;const G=y(U,h,4,S,b);return b[G-1]}(e,t,r,n,o,i,c)}function P(e,t){var r,n,o,i,a,u,l,c,s,f=0,p=e[0],d=e[1],y=t.length;for(r=0;r<y;r++){n=0;var m=t[r],v=m.length-1;if((c=m[0])[0]!==m[v][0]&&c[1]!==m[v][1])throw new Error("First and last coordinates in a ring must be the same");for(i=c[0]-p,a=c[1]-d;n<v;n++){if(u=(s=m[n+1])[0]-p,l=s[1]-d,0===a&&0===l){if(u<=0&&i>=0||i<=0&&u>=0)return 0}else if(l>=0&&a<=0||l<=0&&a>=0){if(0===(o=E(i,u,a,l,0,0)))return 0;(o>0&&l>0&&a<=0||o<0&&l<=0&&a>0)&&f++}c=s,a=l,i=u}}return f%2!=0}function w(e){return"Feature"===e.type?e.geometry:e}function A(e,t,r={}){if(!e)throw new Error("point is required");if(!t)throw new Error("polygon is required");const n=function(e){if(!e)throw new Error("coord is required");if(!Array.isArray(e)){if("Feature"===e.type&&null!==e.geometry&&"Point"===e.geometry.type)return[...e.geometry.coordinates];if("Point"===e.type)return[...e.coordinates]}if(Array.isArray(e)&&e.length>=2&&!Array.isArray(e[0])&&!Array.isArray(e[1]))return[...e];throw new Error("coord must be GeoJSON Point or an Array of numbers")}(e),o=w(t),i=o.type,a=t.bbox;let u=o.coordinates;if(a&&!1===function(e,t){return t[0]<=e[0]&&t[1]<=e[1]&&t[2]>=e[0]&&t[3]>=e[1]}(n,a))return!1;"Polygon"===i&&(u=[u]);let l=!1;for(var c=0;c<u.length;++c){const e=P(n,u[c]);if(0===e)return!r.ignoreBoundary;e&&(l=!0)}return l}m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(8),m(8),m(8),m(4),m(8),m(8),m(8),m(12),m(192),m(192),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(8),m(8),m(8),m(8),m(8),m(8),m(8),m(8),m(8),m(4),m(4),m(4),m(8),m(16),m(16),m(16),m(32),m(32),m(48),m(64),m(1152),m(1152),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(4),m(24),m(24),m(24),m(24),m(24),m(24),m(24),m(24),m(24),m(24),m(1152),m(1152),m(1152),m(1152),m(1152),m(2304),m(2304),m(3456),m(5760),m(8),m(8),m(8),m(16),m(24),m(48),m(48),m(96),m(192),m(384),m(384),m(384),m(768),m(96),m(96),m(96),m(1152);class O{constructor(e=[],t=M){if(this.data=e,this.length=this.data.length,this.compare=t,this.length>0)for(let e=(this.length>>1)-1;e>=0;e--)this._down(e)}push(e){this.data.push(e),this.length++,this._up(this.length-1)}pop(){if(0===this.length)return;const e=this.data[0],t=this.data.pop();return this.length--,this.length>0&&(this.data[0]=t,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:t,compare:r}=this,n=t[e];for(;e>0;){const o=e-1>>1,i=t[o];if(r(n,i)>=0)break;t[e]=i,e=o}t[e]=n}_down(e){const{data:t,compare:r}=this,n=this.length>>1,o=t[e];for(;e<n;){let n=1+(e<<1),i=t[n];const a=n+1;if(a<this.length&&r(t[a],i)<0&&(n=a,i=t[a]),r(i,o)>=0)break;t[e]=i,e=n}t[e]=o}}function M(e,t){return e<t?-1:e>t?1:0}function _(e,t){return e.p.x>t.p.x?1:e.p.x<t.p.x?-1:e.p.y!==t.p.y?e.p.y>t.p.y?1:-1:1}function k(e,t){return e.rightSweepEvent.p.x>t.rightSweepEvent.p.x?1:e.rightSweepEvent.p.x<t.rightSweepEvent.p.x?-1:e.rightSweepEvent.p.y!==t.rightSweepEvent.p.y?e.rightSweepEvent.p.y<t.rightSweepEvent.p.y?1:-1:1}class L{constructor(e,t,r,n){this.p={x:e[0],y:e[1]},this.featureId=t,this.ringId=r,this.eventId=n,this.otherEvent=null,this.isLeftEndpoint=null}isSamePoint(e){return this.p.x===e.p.x&&this.p.y===e.p.y}}let T=0,I=0,C=0;function D(e,t){const r="Feature"===e.type?e.geometry:e;let n=r.coordinates;"Polygon"!==r.type&&"MultiLineString"!==r.type||(n=[n]),"LineString"===r.type&&(n=[[n]]);for(let e=0;e<n.length;e++)for(let r=0;r<n[e].length;r++){let o=n[e][r][0],i=null;I+=1;for(let a=0;a<n[e][r].length-1;a++){i=n[e][r][a+1];const u=new L(o,T,I,C),l=new L(i,T,I,C+1);u.otherEvent=l,l.otherEvent=u,_(u,l)>0?(l.isLeftEndpoint=!0,u.isLeftEndpoint=!1):(u.isLeftEndpoint=!0,l.isLeftEndpoint=!1),t.push(u),t.push(l),o=i,C+=1}}T+=1}class j{constructor(e){this.leftSweepEvent=e,this.rightSweepEvent=e.otherEvent}}function F(e,t){if(null===e||null===t)return!1;if(e.leftSweepEvent.ringId===t.leftSweepEvent.ringId&&(e.rightSweepEvent.isSamePoint(t.leftSweepEvent)||e.rightSweepEvent.isSamePoint(t.leftSweepEvent)||e.rightSweepEvent.isSamePoint(t.rightSweepEvent)||e.leftSweepEvent.isSamePoint(t.leftSweepEvent)||e.leftSweepEvent.isSamePoint(t.rightSweepEvent)))return!1;const r=e.leftSweepEvent.p.x,n=e.leftSweepEvent.p.y,o=e.rightSweepEvent.p.x,i=e.rightSweepEvent.p.y,a=t.leftSweepEvent.p.x,u=t.leftSweepEvent.p.y,l=t.rightSweepEvent.p.x,c=t.rightSweepEvent.p.y,s=(c-u)*(o-r)-(l-a)*(i-n);if(0===s)return!1;const f=((l-a)*(n-u)-(c-u)*(r-a))/s,p=((o-r)*(n-u)-(i-n)*(r-a))/s;return f>=0&&f<=1&&p>=0&&p<=1&&[r+f*(o-r),n+f*(i-n)]}function R(e,t,r={}){const{removeDuplicates:n=!0,ignoreSelfIntersections:o=!0}=r;let u=[];"FeatureCollection"===e.type?u=u.concat(e.features):"Feature"===e.type?u.push(e):"LineString"!==e.type&&"Polygon"!==e.type&&"MultiLineString"!==e.type&&"MultiPolygon"!==e.type||u.push(i(e)),"FeatureCollection"===t.type?u=u.concat(t.features):"Feature"===t.type?u.push(t):"LineString"!==t.type&&"Polygon"!==t.type&&"MultiLineString"!==t.type&&"MultiPolygon"!==t.type||u.push(i(t));const c=function(e,t){const r=new O([],_);return function(e,t){if("FeatureCollection"===e.type){const r=e.features;for(let e=0;e<r.length;e++)D(r[e],t)}else D(e,t)}(e,r),function(e,t){t=t||!1;const r=[],n=new O([],k);for(;e.length;){const o=e.pop();if(o.isLeftEndpoint){const e=new j(o);for(let i=0;i<n.data.length;i++){const a=n.data[i];if(t&&a.leftSweepEvent.featureId===o.featureId)continue;const u=F(e,a);!1!==u&&r.push(u)}n.push(e)}else!1===o.isLeftEndpoint&&n.pop()}return r}(r,t)}(l(u),o);let s=[];if(n){const e={};c.forEach(t=>{const r=t.join(",");e[r]||(e[r]=!0,s.push(t))})}else s=c;return l(s.map(e=>a(e)))}function B(e,t){!function(e,t){var r,n,o,i,a,u,l,c,s,f,p=0,d="FeatureCollection"===e.type,y="Feature"===e.type,m=d?e.features.length:1;for(r=0;r<m;r++){for(u=d?e.features[r].geometry:y?e.geometry:e,c=d?e.features[r].properties:y?e.properties:{},s=d?e.features[r].bbox:y?e.bbox:void 0,f=d?e.features[r].id:y?e.id:void 0,a=(l=!!u&&"GeometryCollection"===u.type)?u.geometries.length:1,o=0;o<a;o++)if(null!==(i=l?u.geometries[o]:u))switch(i.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":if(!1===t(i,p,c,s,f))return!1;break;case"GeometryCollection":for(n=0;n<i.geometries.length;n++)if(!1===t(i.geometries[n],p,c,s,f))return!1;break;default:throw new Error("Unknown Geometry Type")}else if(!1===t(null,p,c,s,f))return!1;p++}}(e,function(e,r,n,o,a){var u,l=null===e?null:e.type;switch(l){case null:case"Point":case"LineString":case"Polygon":return!1!==t(i(e,n,{bbox:o,id:a}),r,0)&&void 0}switch(l){case"MultiPoint":u="Point";break;case"MultiLineString":u="LineString";break;case"MultiPolygon":u="Polygon"}for(var c=0;c<e.coordinates.length;c++){var s=e.coordinates[c];if(!1===t(i({type:u,coordinates:s},n),r,c))return!1}})}function x(e,t={}){const r=w(e);switch(t.properties||"Feature"!==e.type||(t.properties=e.properties),r.type){case"Polygon":return function(e,t={}){return N(w(e).coordinates,t.properties?t.properties:"Feature"===e.type?e.properties:{})}(r,t);case"MultiPolygon":return function(e,t={}){const r=w(e).coordinates,n=t.properties?t.properties:"Feature"===e.type?e.properties:{},o=[];return r.forEach(e=>{o.push(N(e,n))}),l(o)}(r,t);default:throw new Error("invalid poly")}}function N(e,t){return e.length>1?c(e,t):u(e[0],t)}function U(e,t){for(let r=0;r<e.coordinates.length-1;r++)if(K(e.coordinates[r],e.coordinates[r+1],t.coordinates))return!0;return!1}function G(e,t,r){for(const r of t.coordinates)if(A(r,e))return!0;return R(t,x(e),{ignoreSelfIntersections:r}).features.length>0}function K(e,t,r){const n=r[0]-e[0],o=r[1]-e[1],i=t[0]-e[0],a=t[1]-e[1];return 0===n*a-o*i&&(Math.abs(i)>=Math.abs(a)?i>0?e[0]<=r[0]&&r[0]<=t[0]:t[0]<=r[0]&&r[0]<=e[0]:a>0?e[1]<=r[1]&&r[1]<=t[1]:t[1]<=r[1]&&r[1]<=e[1])}function H(e){return function(e){if(Array.isArray(e))return V(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return V(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?V(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function V(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function W(e){var t=e.geometry||e;switch(t.type){case"Polygon":return function(e,t,r={}){for(const t of e){if(t.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(t[t.length-1].length!==t[0].length)throw new Error("First and last Position are not equivalent.");for(let e=0;e<t[t.length-1].length;e++)if(t[t.length-1][e]!==t[0][e])throw new Error("First and last Position are not equivalent.")}return i({type:"Polygon",coordinates:e},t,r)}(t.coordinates);case"MultiPolygon":return function(e,t,r={}){return i({type:"MultiPolygon",coordinates:e},t,r)}(t.coordinates);case"LineString":return u(t.coordinates);case"MultiLineString":return c(t.coordinates);case"Point":return a(t.coordinates);case"MultiPoint":return function(e,t,r={}){return i({type:"MultiPoint",coordinates:e},t,r)}(t.coordinates);default:throw new Error("Unsupported geometry type: ".concat(t.type))}}function q(e,t){return t.some(function(t){return!function(e,t,{ignoreSelfIntersections:r=!0}={ignoreSelfIntersections:!0}){let n=!0;return B(e,e=>{B(t,t=>{if(!1===n)return!1;n=function(e,t,r){switch(e.type){case"Point":switch(t.type){case"Point":return n=e.coordinates,o=t.coordinates,!(n[0]===o[0]&&n[1]===o[1]);case"LineString":return!U(t,e);case"Polygon":return!A(e,t)}break;case"LineString":switch(t.type){case"Point":return!U(e,t);case"LineString":return!function(e,t,r){return R(e,t,{ignoreSelfIntersections:r}).features.length>0}(e,t,r);case"Polygon":return!G(t,e,r)}break;case"Polygon":switch(t.type){case"Point":return!A(t,e);case"LineString":return!G(e,t,r);case"Polygon":return!function(e,t,r){for(const r of e.coordinates[0])if(A(r,t))return!0;for(const r of t.coordinates[0])if(A(r,e))return!0;return R(x(e),x(t),{ignoreSelfIntersections:r}).features.length>0}(t,e,r)}}var n,o;return!1}(e.geometry,t.geometry,r)})}),n}(W(t),W(e))})}function Y(e){var t;if(1!==e.length)return!1;var r=null===(t=e[0].geometry)||void 0===t?void 0:t.type;return"Polygon"===r||"MultiPolygon"===r}function z(e){if(e.length<2)return!1;if(e.some(function(e){var t;return!(null!==(t=e.geometry)&&void 0!==t&&t.type)}))return!1;for(var t=new Set([0]),r=!0;r;){r=!1;for(var n=1;n<e.length;n++)if(!t.has(n)){var o=H(t).map(function(t){return e[t]});q(e[n],o)&&(t.add(n),r=!0)}}return t.size===e.length}function $(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var J=function(e){var t,r=null===(t=e.geometry)||void 0===t?void 0:t.type;return"Point"===r||"MultiPoint"===r};new Set,new Set,r(287);function Z(e){return Z="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Z(e)}function X(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Q(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){ee(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}function ee(e,t,r){return(t=function(e){var t=function(e){if("object"!=Z(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=Z(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Z(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var te={slot:"middle",open:!1,dismissible:!0,modal:!0},re=(Q({},te),Q(Q({},te),{},{width:"500px"}),Q(Q({},te),{},{width:"500px"}),{small:1,medium:1.5,large:2});function ne(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var oe=function(e){var t,r=e.mapState,o=e.pluginState,i=e.services,a=e.mapProvider,u=r.markers,l=r.mapSize,c=o.dispatch,s=o.layers,f=o.interactionModes,p=o.multiSelect,d=o.contiguous,y=o.marker,m=o.tolerance,v=o.selectedFeatures,g=o.selectedMarkers,h=o.selectionBounds,b=o.deselectOnClickOutside,S=i.eventBus,E=function(e){var t,r={},n=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return $(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?$(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}(e);try{for(n.s();!(t=n.n()).done;){var o=t.value;r[o.layerId]=o}}catch(e){n.e(e)}finally{n.f()}return r}(s),P=null!==(t=re[l])&&void 0!==t?t:1,w=(0,n.useCallback)(function(e){var t,r,n=e.feature,o=e.config;u.remove("location");var i=d&&q(n,v),a=null!==(t=null===(r=n.properties)||void 0===r?void 0:r[o.idProperty])&&void 0!==t?t:n.id;null!=a&&c({type:"TOGGLE_SELECTED_FEATURES",payload:{featureId:a,multiSelect:p,layerId:o.layerId,idProperty:o.idProperty,properties:n.properties,geometry:n.geometry,replaceAll:d&&!i}})},[u,d,v,c,p]),A=(0,n.useCallback)(function(e){var t=e.coords,r=f.includes("placeMarker");(r||b)&&(c({type:"CLEAR_SELECTED_FEATURES"}),r&&(u.add("location",t,y),S.emit("interact:markerchange",{coords:t})))},[f,c,u,y,S,b]),O=(0,n.useCallback)(function(e){var t=e.point,r=e.coords;if(f.includes("selectMarker")){var n=function(e,t,r){var n,o=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return ne(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?ne(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}(e.items);try{for(o.s();!(n=o.n()).done;){var i,a=n.value,u=null===(i=e.markerRefs)||void 0===i?void 0:i.get(a.id);if(u){var l=u.parentElement,c=l?l.getBoundingClientRect():{left:0,top:0},s=u.getBoundingClientRect(),f=s.left,p=s.top,d=s.right,y=s.bottom,m=t.x*r,v=t.y*r;if(m>=f-c.left&&m<=d-c.left&&v>=p-c.top&&v<=y-c.top)return a.id}}}catch(e){o.e(e)}finally{o.f()}return null}(u,t,P);if(n)return void c({type:"TOGGLE_SELECTED_MARKERS",payload:{markerId:n,multiSelect:p}})}if(f.includes("selectFeature")&&s.length>0){var i=function(e,t,r){try{return(null==e?void 0:e.getFeaturesAtPoint(t,r))||[]}catch(e){return console.warn("Feature query failed:",e),[]}}(a,t,{radius:m});null!=o&&o.debug&&console.log("--- Features at ".concat(r," ---"),i);var l=function(e,t){var r=e.filter(function(e){var r;return t[null===(r=e.layer)||void 0===r?void 0:r.id]}),n=r.find(J);if(n)return{feature:n,config:t[n.layer.id]};var o=r[0];return o?{feature:o,config:t[o.layer.id]}:null}(i,E);if(l)return void w(l)}A({coords:r})},[a,s,f,p,c,u,E,null==o?void 0:o.debug,m,w,A,P]);return function(e,t,r,o){var i=(0,n.useRef)(null);(0,n.useEffect)(function(){if(!(t.length>0)||o){var n=i.current;(null===n||0===n.features.length&&0===n.markers.length)&&0===t.length&&0===r.length||(e.emit("interact:selectionchange",{selectedFeatures:t,selectedMarkers:r,selectionBounds:o,canMerge:z(t),canSplit:Y(t)}),i.current={features:t,markers:r})}},[t,r,o])}(S,v,g,h),{handleInteraction:O}};function ie(e){return ie="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ie(e)}var ae=function(e,t){if(!e)return null;if("string"==typeof e)return e.trim();if("object"===ie(e)){if(t&&e[t])return e[t];var r=Object.values(e)[0];return null!=r?r:null}return null};function ue(e){return ue="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ue(e)}function le(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ce(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){se(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}function se(e,t,r){return(t=function(e){var t=function(e){if("object"!=ue(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=ue(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ue(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var fe=function(e){return 1===(null==e?void 0:e.length)&&e.includes("selectMarker")};function pe(e){return pe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},pe(e)}function de(e){return function(e){if(Array.isArray(e))return ye(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return ye(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?ye(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ye(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function me(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ve(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?me(Object(r),!0).forEach(function(t){ge(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):me(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function ge(e,t,r){return(t=function(e){var t=function(e){if("object"!=pe(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=pe(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==pe(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var he={ENABLE:function(e,t){return ve(ve(ve({},e),t),{},{enabled:!0})},DISABLE:function(e){return ve(ve({},e),{},{enabled:!1,selectedFeatures:[],selectedMarkers:[],selectionBounds:null})},TOGGLE_SELECTED_FEATURES:function(e,t){var r=t.featureId,n=t.multiSelect,o=t.layerId,i=t.idProperty,a=t.addToExisting,u=void 0===a||a,l=t.replaceAll,c=void 0!==l&&l,s=t.properties,f=t.geometry,p=Array.isArray(e.selectedFeatures)?e.selectedFeatures:[],d=p.findIndex(function(e){return e.featureId===r&&e.layerId===o});if(!1===u){var y=p.filter(function(e,t){return t!==d});return ve(ve({},e),{},{selectedFeatures:y,selectionBounds:null})}var m,v={featureId:r,layerId:o,idProperty:i,properties:s,geometry:f};if(n&&!c){var g=de(p);-1===d?g.push(v):g.splice(d,1),m=g}else m=-1!==d&&1===p.length?[]:[v];return ve(ve({},e),{},{selectedFeatures:m,selectedMarkers:n&&!c?e.selectedMarkers:[],selectionBounds:null})},TOGGLE_SELECTED_MARKERS:function(e,t){var r=t.markerId,n=t.multiSelect,o=e.selectedMarkers,i=o.includes(r);if(n){var a=i?o.filter(function(e){return e!==r}):[].concat(de(o),[r]);return ve(ve({},e),{},{selectedMarkers:a})}return ve(ve({},e),{},{selectedFeatures:[],selectionBounds:null,selectedMarkers:i&&1===o.length?[]:[r]})},UPDATE_SELECTED_BOUNDS:function(e,t){return JSON.stringify(t)===JSON.stringify(e.selectionBounds)?e:ve(ve({},e),{},{selectionBounds:t})},CLEAR_SELECTED_FEATURES:function(e){return ve(ve({},e),{},{selectedFeatures:[],selectedMarkers:[],selectionBounds:null})},SELECT_MARKER:function(e,t){var r=t.markerId,n=t.multiSelect,o=e.selectedMarkers;if(o.includes(r))return e;var i=n?[].concat(de(o),[r]):[r];return ve(ve({},e),{},{selectedFeatures:n?e.selectedFeatures:[],selectionBounds:null,selectedMarkers:i})},UNSELECT_MARKER:function(e,t){var r=t.markerId,n=e.selectedMarkers;return n.includes(r)?ve(ve({},e),{},{selectedMarkers:n.filter(function(e){return e!==r})}):e}},be={tolerance:10,interactionModes:["selectMarker"],multiSelect:!1,contiguous:!1,deselectOnClickOutside:!1,marker:{},selectedStrokeWidth:3};function Se(e){return Se="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Se(e)}function Ee(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Pe(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Ee(Object(r),!0).forEach(function(t){we(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ee(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function we(e,t,r){return(t=function(e){var t=function(e){if("object"!=Se(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=Se(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Se(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Ae={InitComponent:function(e){var t=e.appState,r=e.mapState,i=e.services,a=e.buttonConfig,u=e.mapProvider,l=e.pluginState,c=t.interfaceType,s=l.dispatch,f=l.enabled,p=l.selectedFeatures,d=l.selectionBounds,y=l.interactionModes,m=l.layers,v=i.eventBus,g=i.closeApp,h=r.crossHair,b=r.mapStyle,S=["touch","keyboard"].includes(c),E=fe(y),P=oe({appState:t,mapState:r,pluginState:l,services:i,mapProvider:u}).handleInteraction,w=(0,n.useRef)(P);w.current=P;var A=(0,n.useRef)(l);A.current=l;var O=(0,n.useRef)(t);O.current=t;var M=(0,n.useRef)(!1);return(0,n.useEffect)(function(){M.current=!1;var e=setTimeout(function(){M.current=!0},0);return function(){return clearTimeout(e)}},[l.enabled]),function(e){var t=e.mapProvider,r=e.mapStyle,o=e.pluginState,i=e.selectedFeatures,a=e.dispatch,u=e.events,l=e.eventBus,c=o.layers,s=(0,n.useMemo)(function(){return r?function(e,t){var r={};if(!t)return r;var n="dark"===t.mapColorScheme?"#ffffff":"#0b0c0c";return e.forEach(function(e){var o=e.selectedStroke||t.selectedColor||n,i=e.selectedFill||"transparent",a=e.selectedStrokeWidth||3;r[e.layerId]={stroke:ae(o,t.id),fill:ae(i,t.id),strokeWidth:a}}),r}(c,r):null},[c,r]),f=function(){var e,r=null===(e=t.updateHighlightedFeatures)||void 0===e?void 0:e.call(t,i,s);a({type:"UPDATE_SELECTED_BOUNDS",payload:r})};(0,n.useEffect)(function(){if(t&&i&&s)return f(),l.on(u.MAP_DATA_CHANGE,f),function(){l.off(u.MAP_DATA_CHANGE,f)}},[i,t,s])}({mapProvider:u,mapStyle:b,pluginState:l,selectedFeatures:p,selectionBounds:d,dispatch:s,events:o,eventBus:v}),(0,n.useEffect)(function(){v.emit("interact:active",{active:f,interactionModes:y})},[f,y]),function(e,t,r,o){(0,n.useEffect)(function(){var n,i=t&&(null==r?void 0:r.includes("selectFeature"))?o.map(function(e){return e.layerId}):[];return null===(n=e.setHoverCursor)||void 0===n||n.call(e,i),function(){var t;return null===(t=e.setHoverCursor)||void 0===t?void 0:t.call(e,[])}},[t,r,o])}(u,f,y,m),(0,n.useEffect)(function(){!f||!S||"touch"===c&&E?h.hide():h.fixAtCenter()},[f,c,y]),(0,n.useEffect)(function(){if(l.enabled)return function(e){var t,r,n,o=e.getAppState,i=e.mapState,a=e.getPluginState,u=e.buttonConfig,l=e.events,c=e.eventBus,s=e.handleInteraction,f=e.clickReadyRef,p=e.closeApp,d=u.selectDone,y=u.selectAtTarget,m=u.selectCancel,v=function(){return s(i.crossHair.getDetail())},g=function(e){f.current&&s(e)},h=(t=o().layoutRefs.viewportRef,r=v,n=!1,{handleKeydown:function(e){n="Enter"===e.key&&t.current===e.target},handleKeyup:function(e){"Enter"===e.key&&n&&(e.preventDefault(),r())}}),b=h.handleKeydown,S=h.handleKeyup,E=function(e,t){return function(r,n){var o=t();e.markers.remove("location"),o.dispatch({type:"TOGGLE_SELECTED_FEATURES",payload:ce({multiSelect:o.multiSelect,addToExisting:n},r)})}}(i,a),P=function(e){return E(e,!0)},w=function(e){return E(e,!1)};return document.addEventListener("keydown",b),document.addEventListener("keyup",S),c.on(l.MAP_CLICK,g),c.on("interact:selectFeature",P),c.on("interact:unselectFeature",w),y.onClick=v,d.onClick=function(){var e,t=a(),r=(i.markers.getMarker("location")||{}).coords,n=t.selectionBounds,u=t.selectedFeatures,l=t.selectedMarkers;o().disabledButtons.has("selectDone")||(c.emit("interact:done",function(e,t,r,n){return ce(ce(ce(ce({},e&&{coords:e}),!e&&t&&{selectedFeatures:t}),!e&&(null==r?void 0:r.length)&&{selectedMarkers:r}),!e&&n&&{selectionBounds:n})}(r,u,l,n)),(null===(e=t.closeOnAction)||void 0===e||e)&&p())},m.onClick=function(){var e;c.emit("interact:cancel"),(null===(e=a().closeOnAction)||void 0===e||e)&&p()},function(){d.onClick=null,y.onClick=null,m.onClick=null,document.removeEventListener("keydown",b),document.removeEventListener("keyup",S),c.off(l.MAP_CLICK,g),c.off("interact:selectFeature",P),c.off("interact:unselectFeature",w)}}({getAppState:function(){return O.current},mapState:r,getPluginState:function(){return A.current},buttonConfig:a,events:o,eventBus:v,handleInteraction:function(e){return w.current(e)},clickReadyRef:M,closeApp:g})},[l.enabled,a,v,g]),null},reducer:{initialState:{enabled:!1,layers:[],marker:null,interactionModes:null,multiSelect:!1,contiguous:!1,deselectOnClickOutside:!1,selectedFeatures:[],selectedMarkers:[],selectionBounds:null,closeOnAction:!0},actions:he},buttons:[{id:"selectCancel",label:"Back",variant:"tertiary",hiddenWhen:function(e){var t=e.appConfig,r=e.appState;return!e.pluginState.enabled||!(["hybrid","buttonFirst"].includes(t.behaviour)&&r.isFullscreen)},mobile:{slot:"actions",showLabel:!0},tablet:{slot:"actions",showLabel:!0},desktop:{slot:"actions",showLabel:!0}},{id:"selectAtTarget",label:"Select",variant:"primary",hiddenWhen:function(e){var t=e.appState,r=e.pluginState;return!r.enabled||"touch"!==t.interfaceType||fe(r.interactionModes)},mobile:{slot:"actions"},tablet:{slot:"actions"},desktop:{slot:"actions"}},{id:"selectDone",label:"Continue",variant:"primary",excludeWhen:function(e){var t=e.appState;return!e.pluginState.enabled||!t.isFullscreen},enableWhen:function(e){var t=e.mapState,r=e.pluginState;return!!t.markers.items.some(function(e){return"location"===e.id})||!!r.selectionBounds},mobile:{slot:"actions",showLabel:!0},tablet:{slot:"actions",showLabel:!0},desktop:{slot:"actions",showLabel:!0}}],keyboardShortcuts:[{id:"selectOrMark",group:"Select",title:"Select feature",command:"<kbd>Enter</kbd></dd>"}],icons:[{id:"select",svgContent:'<path d="M22 14a8 8 0 0 1-8 8"/><path d="M18 11v-1a2 2 0 0 0-2-2a2 2 0 0 0-2 2"/><path d="M14 10V9a2 2 0 0 0-2-2a2 2 0 0 0-2 2v1"/><path d="M10 9.5V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v10"/><path d="M18 11a2 2 0 1 1 4 0v3a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15"/>'}],api:{enable:function(e,t){var r=e.pluginState,n=e.pluginConfig;r.dispatch({type:"ENABLE",payload:Pe(Pe(Pe({},be),n),t)})},disable:function(e){e.pluginState.dispatch({type:"DISABLE"})},clear:function(e){var t=e.pluginState,r=e.mapState;t.dispatch({type:"CLEAR_SELECTED_FEATURES"}),r.markers.remove("location")},selectFeature:function(e,t){var r=e.services,n=t.featureId,o=t.layerId,i=t.idProperty;r.eventBus.emit("interact:selectFeature",{featureId:n,layerId:o,idProperty:i})},unselectFeature:function(e,t){var r=e.services,n=t.featureId,o=t.layerId,i=t.idProperty;r.eventBus.emit("interact:unselectFeature",{featureId:n,layerId:o,idProperty:i})},selectMarker:function(e,t){var r=e.pluginState;r.dispatch({type:"SELECT_MARKER",payload:{markerId:t,multiSelect:r.multiSelect}})},unselectMarker:function(e,t){e.pluginState.dispatch({type:"UNSELECT_MARKER",payload:{markerId:t}})}}}}}]);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! For license information please see index.js.LICENSE.txt */
|
|
2
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("defra",[],t):"object"==typeof exports?exports.defra=t():(e.defra=e.defra||{},e.defra.interactPlugin=t())}(this,()=>(()=>{"use strict";var e,t,r={738(e){e.exports=preactCompat},287(e){e.exports=preactJsxRuntime}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={exports:{}};return r[e](i,i.exports,o),i.exports}o.m=r,o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce((t,r)=>(o.f[r](e,t),t),[])),o.u=e=>"im-interact-plugin.js",o.miniCssF=e=>{},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="defra.interactPlugin:",o.l=(r,n,i,a)=>{if(e[r])e[r].push(n);else{var c,u;if(void 0!==i)for(var f=document.getElementsByTagName("script"),p=0;p<f.length;p++){var l=f[p];if(l.getAttribute("src")==r||l.getAttribute("data-webpack")==t+i){c=l;break}}c||(u=!0,(c=document.createElement("script")).charset="utf-8",o.nc&&c.setAttribute("nonce",o.nc),c.setAttribute("data-webpack",t+i),c.src=r),e[r]=[n];var s=(t,n)=>{c.onerror=c.onload=null,clearTimeout(b);var o=e[r];if(delete e[r],c.parentNode&&c.parentNode.removeChild(c),o&&o.forEach(e=>e(n)),t)return t(n)},b=setTimeout(s.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=s.bind(null,c.onerror),c.onload=s.bind(null,c.onload),u&&document.head.appendChild(c)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;o.g.importScripts&&(e=o.g.location+"");var t=o.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=r[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=e})(),(()=>{var e={57:0};o.f.j=(t,r)=>{var n=o.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var i=new Promise((r,o)=>n=e[t]=[r,o]);r.push(n[2]=i);var a=o.p+o.u(t),c=new Error;o.l(a,r=>{if(o.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var i=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;c.message="Loading chunk "+t+" failed.\n("+i+": "+a+")",c.name="ChunkLoadError",c.type=i,c.request=a,n[1](c)}},"chunk-"+t,t)}};var t=(t,r)=>{var n,i,[a,c,u]=r,f=0;if(a.some(t=>0!==e[t])){for(n in c)o.o(c,n)&&(o.m[n]=c[n]);u&&u(o)}for(t&&t(r);f<a.length;f++)i=a[f],o.o(e,i)&&e[i]&&e[i][0](),e[i]=0},r=this.webpackChunkdefra_DefraMap=this.webpackChunkdefra_DefraMap||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})();var i={};function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function c(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function i(r,n,o,i){var c=n&&n.prototype instanceof f?n:f,p=Object.create(c.prototype);return u(p,"_invoke",function(r,n,o){var i,c,u,f=0,p=o||[],l=!1,s={p:0,n:0,v:e,a:b,f:b.bind(e,4),d:function(t,r){return i=t,c=0,u=e,s.n=r,a}};function b(r,n){for(c=r,u=n,t=0;!l&&f&&!o&&t<p.length;t++){var o,i=p[t],b=s.p,d=i[2];r>3?(o=d===n)&&(u=i[(c=i[4])?5:(c=3,3)],i[4]=i[5]=e):i[0]<=b&&((o=r<2&&b<i[1])?(c=0,s.v=n,s.n=i[1]):b<d&&(o=r<3||i[0]>n||n>d)&&(i[4]=r,i[5]=n,s.n=d,c=0))}if(o||r>1)return a;throw l=!0,n}return function(o,p,d){if(f>1)throw TypeError("Generator is already running");for(l&&1===p&&b(p,d),c=p,u=d;(t=c<2?e:u)||!l;){i||(c?c<3?(c>1&&(s.n=-1),b(c,u)):s.n=u:s.v=u);try{if(f=2,i){if(c||(o="next"),t=i[o]){if(!(t=t.call(i,u)))throw TypeError("iterator result is not an object");if(!t.done)return t;u=t.value,c<2&&(c=0)}else 1===c&&(t=i.return)&&t.call(i),c<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),c=1);i=e}else if((t=(l=s.n<0)?u:r.call(n,s))!==a)break}catch(t){i=e,c=1,u=t}finally{f=1}}return{value:t,done:l}}}(r,o,i),!0),p}var a={};function f(){}function p(){}function l(){}t=Object.getPrototypeOf;var s=[][n]?t(t([][n]())):(u(t={},n,function(){return this}),t),b=l.prototype=f.prototype=Object.create(s);function d(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,u(e,o,"GeneratorFunction")),e.prototype=Object.create(b),e}return p.prototype=l,u(b,"constructor",l),u(l,"constructor",p),p.displayName="GeneratorFunction",u(l,o,"GeneratorFunction"),u(b),u(b,o,"Generator"),u(b,n,function(){return this}),u(b,"toString",function(){return"[object Generator]"}),(c=function(){return{w:i,m:d}})()}function u(e,t,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}u=function(e,t,r,n){function i(t,r){u(e,t,function(e){return this._invoke(t,r,e)})}t?o?o(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(i("next",0),i("throw",1),i("return",2))},u(e,t,r,n)}function f(e,t,r,n,o,i,a){try{var c=e[i](a),u=c.value}catch(e){return void r(e)}c.done?t(u):Promise.resolve(u).then(n,o)}function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?p(Object(r),!0).forEach(function(t){s(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):p(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function s(e,t,r){return(t=function(e){var t=function(e){if("object"!=a(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=a(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==a(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function b(){var e,t;return l(l({},arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),{},{id:"interact",load:(e=c().m(function e(){var t;return c().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,o.e(936).then(o.bind(o,
|
|
2
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("defra",[],t):"object"==typeof exports?exports.defra=t():(e.defra=e.defra||{},e.defra.interactPlugin=t())}(this,()=>(()=>{"use strict";var e,t,r={738(e){e.exports=preactCompat},287(e){e.exports=preactJsxRuntime}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={exports:{}};return r[e](i,i.exports,o),i.exports}o.m=r,o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce((t,r)=>(o.f[r](e,t),t),[])),o.u=e=>"im-interact-plugin.js",o.miniCssF=e=>{},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="defra.interactPlugin:",o.l=(r,n,i,a)=>{if(e[r])e[r].push(n);else{var c,u;if(void 0!==i)for(var f=document.getElementsByTagName("script"),p=0;p<f.length;p++){var l=f[p];if(l.getAttribute("src")==r||l.getAttribute("data-webpack")==t+i){c=l;break}}c||(u=!0,(c=document.createElement("script")).charset="utf-8",o.nc&&c.setAttribute("nonce",o.nc),c.setAttribute("data-webpack",t+i),c.src=r),e[r]=[n];var s=(t,n)=>{c.onerror=c.onload=null,clearTimeout(b);var o=e[r];if(delete e[r],c.parentNode&&c.parentNode.removeChild(c),o&&o.forEach(e=>e(n)),t)return t(n)},b=setTimeout(s.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=s.bind(null,c.onerror),c.onload=s.bind(null,c.onload),u&&document.head.appendChild(c)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;o.g.importScripts&&(e=o.g.location+"");var t=o.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=r[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=e})(),(()=>{var e={57:0};o.f.j=(t,r)=>{var n=o.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var i=new Promise((r,o)=>n=e[t]=[r,o]);r.push(n[2]=i);var a=o.p+o.u(t),c=new Error;o.l(a,r=>{if(o.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var i=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;c.message="Loading chunk "+t+" failed.\n("+i+": "+a+")",c.name="ChunkLoadError",c.type=i,c.request=a,n[1](c)}},"chunk-"+t,t)}};var t=(t,r)=>{var n,i,[a,c,u]=r,f=0;if(a.some(t=>0!==e[t])){for(n in c)o.o(c,n)&&(o.m[n]=c[n]);u&&u(o)}for(t&&t(r);f<a.length;f++)i=a[f],o.o(e,i)&&e[i]&&e[i][0](),e[i]=0},r=this.webpackChunkdefra_DefraMap=this.webpackChunkdefra_DefraMap||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})();var i={};function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function c(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function i(r,n,o,i){var c=n&&n.prototype instanceof f?n:f,p=Object.create(c.prototype);return u(p,"_invoke",function(r,n,o){var i,c,u,f=0,p=o||[],l=!1,s={p:0,n:0,v:e,a:b,f:b.bind(e,4),d:function(t,r){return i=t,c=0,u=e,s.n=r,a}};function b(r,n){for(c=r,u=n,t=0;!l&&f&&!o&&t<p.length;t++){var o,i=p[t],b=s.p,d=i[2];r>3?(o=d===n)&&(u=i[(c=i[4])?5:(c=3,3)],i[4]=i[5]=e):i[0]<=b&&((o=r<2&&b<i[1])?(c=0,s.v=n,s.n=i[1]):b<d&&(o=r<3||i[0]>n||n>d)&&(i[4]=r,i[5]=n,s.n=d,c=0))}if(o||r>1)return a;throw l=!0,n}return function(o,p,d){if(f>1)throw TypeError("Generator is already running");for(l&&1===p&&b(p,d),c=p,u=d;(t=c<2?e:u)||!l;){i||(c?c<3?(c>1&&(s.n=-1),b(c,u)):s.n=u:s.v=u);try{if(f=2,i){if(c||(o="next"),t=i[o]){if(!(t=t.call(i,u)))throw TypeError("iterator result is not an object");if(!t.done)return t;u=t.value,c<2&&(c=0)}else 1===c&&(t=i.return)&&t.call(i),c<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),c=1);i=e}else if((t=(l=s.n<0)?u:r.call(n,s))!==a)break}catch(t){i=e,c=1,u=t}finally{f=1}}return{value:t,done:l}}}(r,o,i),!0),p}var a={};function f(){}function p(){}function l(){}t=Object.getPrototypeOf;var s=[][n]?t(t([][n]())):(u(t={},n,function(){return this}),t),b=l.prototype=f.prototype=Object.create(s);function d(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,u(e,o,"GeneratorFunction")),e.prototype=Object.create(b),e}return p.prototype=l,u(b,"constructor",l),u(l,"constructor",p),p.displayName="GeneratorFunction",u(l,o,"GeneratorFunction"),u(b),u(b,o,"Generator"),u(b,n,function(){return this}),u(b,"toString",function(){return"[object Generator]"}),(c=function(){return{w:i,m:d}})()}function u(e,t,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}u=function(e,t,r,n){function i(t,r){u(e,t,function(e){return this._invoke(t,r,e)})}t?o?o(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(i("next",0),i("throw",1),i("return",2))},u(e,t,r,n)}function f(e,t,r,n,o,i,a){try{var c=e[i](a),u=c.value}catch(e){return void r(e)}c.done?t(u):Promise.resolve(u).then(n,o)}function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?p(Object(r),!0).forEach(function(t){s(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):p(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function s(e,t,r){return(t=function(e){var t=function(e){if("object"!=a(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=a(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==a(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function b(){var e,t;return l(l({},arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),{},{id:"interact",load:(e=c().m(function e(){var t;return c().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,o.e(936).then(o.bind(o,456));case 1:return t=e.v.manifest,e.a(2,t)}},e)}),t=function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){f(i,n,o,a,c,"next",e)}function c(e){f(i,n,o,a,c,"throw",e)}a(void 0)})},function(){return t.apply(this,arguments)})})}return o.d(i,{default:()=>b}),i.default})());
|
|
@@ -4,6 +4,7 @@ import { useInteractionHandlers } from './hooks/useInteractionHandlers.js'
|
|
|
4
4
|
import { useHighlightSync } from './hooks/useHighlightSync.js'
|
|
5
5
|
import { useHoverCursor } from './hooks/useHoverCursor.js'
|
|
6
6
|
import { attachEvents } from './events.js'
|
|
7
|
+
import { isSelectMarkerOnly } from './utils/interactionModes.js'
|
|
7
8
|
|
|
8
9
|
export const InteractInit = ({
|
|
9
10
|
appState,
|
|
@@ -19,6 +20,7 @@ export const InteractInit = ({
|
|
|
19
20
|
const { crossHair, mapStyle } = mapState
|
|
20
21
|
|
|
21
22
|
const isTouchOrKeyboard = ['touch', 'keyboard'].includes(interfaceType)
|
|
23
|
+
const selectMarkerOnly = isSelectMarkerOnly(interactionModes)
|
|
22
24
|
|
|
23
25
|
// Core interaction logic (click > select/marker)
|
|
24
26
|
const { handleInteraction } = useInteractionHandlers({
|
|
@@ -71,12 +73,12 @@ export const InteractInit = ({
|
|
|
71
73
|
|
|
72
74
|
// Toggle target marker visibility
|
|
73
75
|
useEffect(() => {
|
|
74
|
-
if (enabled && isTouchOrKeyboard) {
|
|
76
|
+
if (enabled && isTouchOrKeyboard && !(interfaceType === 'touch' && selectMarkerOnly)) {
|
|
75
77
|
crossHair.fixAtCenter()
|
|
76
78
|
} else {
|
|
77
79
|
crossHair.hide()
|
|
78
80
|
}
|
|
79
|
-
}, [enabled, interfaceType])
|
|
81
|
+
}, [enabled, interfaceType, interactionModes])
|
|
80
82
|
|
|
81
83
|
useEffect(() => {
|
|
82
84
|
if (!pluginState.enabled) {
|
|
@@ -90,7 +92,7 @@ export const InteractInit = ({
|
|
|
90
92
|
buttonConfig,
|
|
91
93
|
events: EVENTS,
|
|
92
94
|
eventBus,
|
|
93
|
-
handleInteraction: (
|
|
95
|
+
handleInteraction: (event) => handleInteractionRef.current(event),
|
|
94
96
|
clickReadyRef,
|
|
95
97
|
closeApp
|
|
96
98
|
})
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Programmatically select a marker. Dispatches directly to the reducer so it
|
|
3
|
+
* works immediately without waiting for React to re-render after `enable()`.
|
|
4
|
+
*
|
|
5
|
+
* @param {Object} params
|
|
6
|
+
* @param {{ dispatch: Function, multiSelect: boolean }} params.pluginState
|
|
7
|
+
* @param {string} markerId - The ID of the marker to select
|
|
8
|
+
*/
|
|
9
|
+
export const selectMarker = ({ pluginState }, markerId) => {
|
|
10
|
+
pluginState.dispatch({
|
|
11
|
+
type: 'SELECT_MARKER',
|
|
12
|
+
payload: { markerId, multiSelect: pluginState.multiSelect }
|
|
13
|
+
})
|
|
14
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { selectMarker } from './selectMarker.js'
|
|
2
|
+
|
|
3
|
+
describe('selectMarker', () => {
|
|
4
|
+
it('dispatches SELECT_MARKER with markerId and multiSelect from pluginState', () => {
|
|
5
|
+
const dispatch = jest.fn()
|
|
6
|
+
|
|
7
|
+
selectMarker({ pluginState: { dispatch, multiSelect: false } }, 'm1')
|
|
8
|
+
|
|
9
|
+
expect(dispatch).toHaveBeenCalledWith({
|
|
10
|
+
type: 'SELECT_MARKER',
|
|
11
|
+
payload: { markerId: 'm1', multiSelect: false }
|
|
12
|
+
})
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
it('passes multiSelect: true when pluginState.multiSelect is true', () => {
|
|
16
|
+
const dispatch = jest.fn()
|
|
17
|
+
|
|
18
|
+
selectMarker({ pluginState: { dispatch, multiSelect: true } }, 'm1')
|
|
19
|
+
|
|
20
|
+
expect(dispatch).toHaveBeenCalledWith({
|
|
21
|
+
type: 'SELECT_MARKER',
|
|
22
|
+
payload: { markerId: 'm1', multiSelect: true }
|
|
23
|
+
})
|
|
24
|
+
})
|
|
25
|
+
})
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Programmatically unselect a marker. Dispatches directly to the reducer so it
|
|
3
|
+
* works immediately without waiting for React to re-render after `enable()`.
|
|
4
|
+
*
|
|
5
|
+
* @param {Object} params
|
|
6
|
+
* @param {{ dispatch: Function }} params.pluginState
|
|
7
|
+
* @param {string} markerId - The ID of the marker to unselect
|
|
8
|
+
*/
|
|
9
|
+
export const unselectMarker = ({ pluginState }, markerId) => {
|
|
10
|
+
pluginState.dispatch({
|
|
11
|
+
type: 'UNSELECT_MARKER',
|
|
12
|
+
payload: { markerId }
|
|
13
|
+
})
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { unselectMarker } from './unselectMarker.js'
|
|
2
|
+
|
|
3
|
+
describe('unselectMarker', () => {
|
|
4
|
+
it('dispatches UNSELECT_MARKER with markerId', () => {
|
|
5
|
+
const dispatch = jest.fn()
|
|
6
|
+
|
|
7
|
+
unselectMarker({ pluginState: { dispatch } }, 'm1')
|
|
8
|
+
|
|
9
|
+
expect(dispatch).toHaveBeenCalledWith({
|
|
10
|
+
type: 'UNSELECT_MARKER',
|
|
11
|
+
payload: { markerId: 'm1' }
|
|
12
|
+
})
|
|
13
|
+
})
|
|
14
|
+
})
|
|
@@ -19,6 +19,18 @@ const createFeatureHandler = (mapState, getPluginState) => (args, addToExisting)
|
|
|
19
19
|
})
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
const createKeyboardHandlers = (viewportRef, onSelectAtTarget) => {
|
|
23
|
+
let enterOnViewport = false
|
|
24
|
+
const handleKeydown = (event) => { enterOnViewport = event.key === 'Enter' && viewportRef.current === event.target }
|
|
25
|
+
const handleKeyup = (event) => {
|
|
26
|
+
if (event.key === 'Enter' && enterOnViewport) {
|
|
27
|
+
event.preventDefault()
|
|
28
|
+
onSelectAtTarget()
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return { handleKeydown, handleKeyup }
|
|
32
|
+
}
|
|
33
|
+
|
|
22
34
|
export function attachEvents ({
|
|
23
35
|
getAppState,
|
|
24
36
|
mapState,
|
|
@@ -31,55 +43,31 @@ export function attachEvents ({
|
|
|
31
43
|
closeApp
|
|
32
44
|
}) {
|
|
33
45
|
const { selectDone, selectAtTarget, selectCancel } = buttonConfig
|
|
34
|
-
const { viewportRef } = getAppState().layoutRefs
|
|
35
|
-
|
|
36
|
-
// Keyboard Logic
|
|
37
|
-
let enterOnViewport = false
|
|
38
|
-
const handleKeydown = (e) => { enterOnViewport = e.key === 'Enter' && viewportRef.current === e.target }
|
|
39
|
-
const handleKeyup = (e) => {
|
|
40
|
-
if (e.key === 'Enter' && enterOnViewport) {
|
|
41
|
-
e.preventDefault()
|
|
42
|
-
handleSelectAtTarget()
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
46
|
|
|
46
|
-
// Interaction Handlers
|
|
47
|
-
const handleMapClick = (e) => {
|
|
48
|
-
if (clickReadyRef.current) {
|
|
49
|
-
handleInteraction(e)
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
47
|
const handleSelectAtTarget = () => handleInteraction(mapState.crossHair.getDetail())
|
|
48
|
+
const handleMapClick = (mapEvent) => { if (clickReadyRef.current) { handleInteraction(mapEvent) } }
|
|
49
|
+
|
|
50
|
+
const { handleKeydown, handleKeyup } = createKeyboardHandlers(getAppState().layoutRefs.viewportRef, handleSelectAtTarget)
|
|
53
51
|
|
|
54
52
|
const handleSelectDone = () => {
|
|
55
53
|
const pluginState = getPluginState()
|
|
56
54
|
const marker = mapState.markers.getMarker('location')
|
|
57
55
|
const { coords } = marker || {}
|
|
58
56
|
const { selectionBounds, selectedFeatures, selectedMarkers } = pluginState
|
|
59
|
-
|
|
60
|
-
if (getAppState().disabledButtons.has('selectDone')) {
|
|
61
|
-
return
|
|
62
|
-
}
|
|
63
|
-
|
|
57
|
+
if (getAppState().disabledButtons.has('selectDone')) { return }
|
|
64
58
|
eventBus.emit('interact:done', buildDonePayload(coords, selectedFeatures, selectedMarkers, selectionBounds))
|
|
65
|
-
|
|
66
|
-
if (pluginState.closeOnAction ?? true) {
|
|
67
|
-
closeApp()
|
|
68
|
-
}
|
|
59
|
+
if (pluginState.closeOnAction ?? true) { closeApp() }
|
|
69
60
|
}
|
|
70
61
|
|
|
71
62
|
const handleSelectCancel = () => {
|
|
72
63
|
eventBus.emit('interact:cancel')
|
|
73
|
-
if (getPluginState().closeOnAction ?? true) {
|
|
74
|
-
closeApp()
|
|
75
|
-
}
|
|
64
|
+
if (getPluginState().closeOnAction ?? true) { closeApp() }
|
|
76
65
|
}
|
|
77
66
|
|
|
78
67
|
const toggleFeature = createFeatureHandler(mapState, getPluginState)
|
|
79
68
|
const handleSelect = (args) => toggleFeature(args, true)
|
|
80
69
|
const handleUnselect = (args) => toggleFeature(args, false)
|
|
81
70
|
|
|
82
|
-
// Attach Listeners
|
|
83
71
|
document.addEventListener('keydown', handleKeydown)
|
|
84
72
|
document.addEventListener('keyup', handleKeyup)
|
|
85
73
|
eventBus.on(events.MAP_CLICK, handleMapClick)
|