bbl-mapbox-react 0.0.15 → 0.0.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -48,13 +48,13 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
48
48
  ${a?`<div class="road-highlight-popup__title">${a}</div>`:``}
49
49
  <div class="road-highlight-popup__info">${h.join(``)}</div>
50
50
  </div>
51
- `;b.current||=new l.default.Popup({closeButton:!1,closeOnClick:!1,offset:15,className:`road-highlight-popup`}),b.current.setLngLat(r).setHTML(g).addTo(e),e.getCanvas().style.cursor=`pointer`}else b.current&&b.current.remove(),e.getCanvas().style.cursor=``},[e,f,S]);(0,c.useEffect)(()=>{if(!(!e||!g))return e.on(`mousemove`,C),()=>{e.off(`mousemove`,C),b.current&&b.current.remove(),e.getCanvas().style.cursor=``}},[e,g,C]);let w=(e,t)=>{h(n=>t?[...n,e]:n.filter(t=>t!==e))},T=e=>{h(e?E.map(e=>e.class):[])},D=f.length>0;return(0,p.jsxs)(`div`,{className:`mapbox-road-highlight-control ${o}`,style:s,children:[(0,p.jsxs)(`button`,{ref:y,className:`mapbox-control-btn mapbox-road-highlight-control__btn ${D?`mapbox-road-highlight-control__btn--active`:``}`,onClick:()=>d(!u),title:`路网高亮${f.length>0?` (已选 ${f.length})`:``}`,children:[(0,p.jsx)(`img`,{src:B,alt:`road`,className:`mapbox-road-highlight-control__btn-icon`}),(0,p.jsxs)(`span`,{children:[`路网`,f.length>0?` (${f.length})`:``]})]}),u&&(0,p.jsxs)(`div`,{ref:v,className:`mapbox-road-highlight-control__panel`,children:[(0,p.jsxs)(`div`,{className:`mapbox-road-highlight-control__panel-header`,children:[(0,p.jsx)(`span`,{className:`mapbox-road-highlight-control__panel-title`,children:`道路类型`}),(0,p.jsx)(m.Checkbox,{checked:f.length===E.length,indeterminate:f.length>0&&f.length<E.length,onChange:T,style:{"--color-text-1":`#fff`,"--color-border-2":`rgba(255, 255, 255, 0.3)`},children:(0,p.jsx)(`span`,{className:`mapbox-road-highlight-control__type-label`,children:`全选`})})]}),(0,p.jsx)(`div`,{className:`mapbox-road-highlight-control__scroll`,children:(0,p.jsx)(`div`,{className:`mapbox-road-highlight-control__type-list`,children:E.map(e=>(0,p.jsxs)(`div`,{className:`mapbox-road-highlight-control__type-item`,onClick:()=>w(e.class,!f.includes(e.class)),children:[(0,p.jsx)(m.Checkbox,{checked:f.includes(e.class),onChange:t=>w(e.class,t),onClick:e=>e.stopPropagation(),style:{"--color-text-1":`#fff`,"--color-border-2":`rgba(255, 255, 255, 0.3)`,marginRight:0,flexShrink:0}}),(0,p.jsx)(`span`,{className:`mapbox-road-highlight-control__color-indicator`,style:{backgroundColor:e.color}}),(0,p.jsx)(`span`,{className:`mapbox-road-highlight-control__type-label`,children:e.label})]},e.class))})}),(0,p.jsx)(`div`,{className:`mapbox-road-highlight-control__tip`,children:`💡 选中道路类型后立即显示高亮`}),!g&&(0,p.jsx)(`div`,{className:`mapbox-road-highlight-control__warning`,children:`⚠️ 正在初始化图层...`})]})]})}var De=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1773733446763'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='1802'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128'%20height='128'%3e%3cpath%20d='M110.34624%20352.01024a30.72%2030.72%200%201%200%2061.44%200v-38.46144h680.42752v38.5024a30.72%2030.72%200%200%200%2061.44%200V213.72928a30.72%2030.72%200%200%200-61.44%200v38.33856H171.78624v-38.33856a30.72%2030.72%200%200%200-61.44%200v138.28096z%20m34.816%20127.22176a34.816%2034.816%200%200%200-34.816%2034.816v312.60672c0%2019.2512%2015.5648%2034.816%2034.816%2034.816h733.5936c19.2512%200%2034.816-15.5648%2034.816-34.816V514.048a34.816%2034.816%200%200%200-34.816-34.816H145.2032z%20m26.624%20320.79872V540.672h680.3456v259.35872H171.8272z'%20fill='white'%20p-id='1804'%3e%3c/path%3e%3c/svg%3e`,Oe=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3crect%20x='192'%20y='192'%20width='640'%20height='640'%20rx='32'%20ry='32'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e`,ke=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3crect%20x='160'%20y='240'%20width='704'%20height='544'%20rx='32'%20ry='32'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e`,Ae=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3ccircle%20cx='512'%20cy='512'%20r='384'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e`,je=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3cpolygon%20points='512,128%20864,384%20736,800%20288,800%20160,384'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'%20stroke-linejoin='round'/%3e%3c/svg%3e`,Me=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3cpolyline%20points='160,768%20384,256%20640,576%20864,192'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'%20stroke-linejoin='round'%20stroke-linecap='round'/%3e%3c/svg%3e`,Ne=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1769394652565'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='6483'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128'%20height='128'%3e%3cpath%20d='M841.385637%20288.639098a36.479886%2036.479886%200%200%201%2072.74644%207.679976l6.613312%20629.544699A109.866323%20109.866323%200%200%201%20810.665733%201023.9968H222.507571a109.652991%20109.652991%200%200%201-109.012992-98.133027l-3.626656-629.544699a36.479886%2036.479886%200%200%201%2072.74644-7.679976L186.241018%20917.330467a36.479886%2036.479886%200%200%200%2036.266553%2032.639898H810.665733A36.479886%2036.479886%200%200%200%20847.99895%20917.330467z%20m-219.732646%20113.706311a36.479886%2036.479886%200%200%201%2036.693218%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.479886-36.479886z%20m-219.305982%200a36.479886%2036.479886%200%200%201%2036.479886%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.693218-36.479886z%20m-36.693218-255.9992h292.692418V91.519714a18.346609%2018.346609%200%200%200-18.346609-18.346609H384.0004a18.346609%2018.346609%200%200%200-18.346609%2018.346609z%20m-73.173105%200V73.173105A73.173105%2073.173105%200%200%201%20365.653791%200h292.692418a73.386437%2073.386437%200%200%201%2073.173105%2073.173105v73.173104h255.9992a36.693219%2036.693219%200%200%201%200%2073.173105H36.481486a36.693219%2036.693219%200%200%201%200-73.173105z'%20fill='%23EB6865'%20p-id='6484'%3e%3c/path%3e%3c/svg%3e`,Pe={square:`正方形`,rectangle:`矩形`,circle:`圆形`,polygon:`多边形`,polyline:`折线`},Fe=[{mode:`square`,icon:Oe,label:`正方形`},{mode:`rectangle`,icon:ke,label:`矩形`},{mode:`circle`,icon:Ae,label:`圆形`},{mode:`polygon`,icon:je,label:`多边形`},{mode:`polyline`,icon:Me,label:`折线`}];function Ie(e,t){let[n,r]=e,[i,a]=t,o=(a-r)*Math.PI/180,s=(i-n)*Math.PI/180,c=Math.sin(o/2)*Math.sin(o/2)+Math.cos(r*Math.PI/180)*Math.cos(a*Math.PI/180)*Math.sin(s/2)*Math.sin(s/2);return 6371e3*(2*Math.atan2(Math.sqrt(c),Math.sqrt(1-c)))}function H(e,t,n=64){let[r,i]=e,a=[],o=t/6371e3,s=i*Math.PI/180;for(let e=0;e<=n;e++){let t=e/n*2*Math.PI,c=o*Math.cos(t),l=o*Math.sin(t)/Math.cos(s);a.push([r+l*180/Math.PI,i+c*180/Math.PI])}return a}function Le(e,t){let[n,r]=e,i=t/2/6371e3,a=r*Math.PI/180,o=i*180/Math.PI,s=i*180/Math.PI/Math.cos(a);return[[n-s,r+o],[n+s,r+o],[n+s,r-o],[n-s,r-o],[n-s,r+o]]}function Re(e){if(e.type===`circle`)return A(Math.PI*e.radius*e.radius);if(e.type===`square`)return A(e.length*e.length);if(e.type===`rectangle`){let[[t,n],[r,i]]=e.bounds,a=[Math.min(t,r),Math.max(n,i)],o=[Math.max(t,r),Math.max(n,i)],s=[Math.max(t,r),Math.min(n,i)],c=O(a,o),l=O(o,s);return A(c*l)}if(e.type===`polygon`){let t=[...e.coordinates,e.coordinates[0]];return A(ee(t))}}function ze(e){if(e.type===`circle`)return j(e.radius);if(e.type===`square`)return j(e.length);if(e.type===`rectangle`){let[[t,n],[r,i]]=e.bounds,a=[Math.min(t,r),Math.max(n,i)],o=[Math.max(t,r),Math.max(n,i)],s=[Math.max(t,r),Math.min(n,i)],c=O(a,o),l=O(o,s);return j(2*(c+l))}if(e.type===`polygon`){let t=0,n=e.coordinates;for(let e=0;e<n.length;e++)t+=O(n[e],n[(e+1)%n.length]);return j(t)}if(e.type===`polyline`){let t=0;for(let n=0;n<e.coordinates.length-1;n++)t+=O(e.coordinates[n],e.coordinates[n+1]);return j(t)}}var U=`measure-`;function W(e,t){e.getSource(t)||e.addSource(t,{type:`geojson`,data:{type:`FeatureCollection`,features:[]}})}function G(e,t){let n=e.getSource(t);n&&n.setData({type:`FeatureCollection`,features:[]})}function Be(e){if(!e.getStyle().glyphs){let t=e.style,n=`/gis-fonts/{fontstack}/{range}.pbf`;t.glyphs=n,t.stylesheet&&(t.stylesheet.glyphs=n)}}function K(e){Be(e);for(let t of[`rect`,`circle`,`square`,`polygon`]){let n=`${U}${t}-preview-source`,r=`${U}${t}-preview-fill`,i=`${U}${t}-preview-line`,a=`${U}${t}-preview-measure-source`,o=`${U}${t}-preview-measure-label`;W(e,n),e.getLayer(r)||e.addLayer({id:r,type:`fill`,source:n,paint:{"fill-color":`#3388ff`,"fill-opacity":.1}}),e.getLayer(i)||e.addLayer({id:i,type:`line`,source:n,paint:{"line-color":`#3388ff`,"line-width":2,"line-dasharray":[4,4]}}),W(e,a),e.getLayer(o)||e.addLayer({id:o,type:`symbol`,source:a,filter:[`==`,`$type`,`Point`],layout:{"text-field":[`get`,`label`],"text-size":12,"text-font":[`Open Sans Bold`,`Arial Unicode MS Bold`],"text-allow-overlap":!0,"text-offset":[0,-.8]},paint:{"text-color":`#ffffff`,"text-halo-color":`rgba(0,0,0,0.8)`,"text-halo-width":1}})}let t=`${U}polyline-preview-source`,n=`${U}polyline-preview-line`,r=`${U}polyline-vertices-source`,i=`${U}polyline-vertices`,a=`${U}polyline-preview-measure-source`,o=`${U}polyline-preview-measure-label`;W(e,t),e.getLayer(n)||e.addLayer({id:n,type:`line`,source:t,paint:{"line-color":`#3388ff`,"line-width":2,"line-dasharray":[4,4]}}),W(e,r),e.getLayer(i)||e.addLayer({id:i,type:`circle`,source:r,paint:{"circle-radius":5,"circle-color":`#3388ff`,"circle-stroke-color":`#ffffff`,"circle-stroke-width":2}}),W(e,a),e.getLayer(o)||e.addLayer({id:o,type:`symbol`,source:a,filter:[`==`,`$type`,`Point`],layout:{"text-field":[`get`,`label`],"text-size":12,"text-font":[`Open Sans Bold`,`Arial Unicode MS Bold`],"text-allow-overlap":!0,"text-offset":[0,-.8]},paint:{"text-color":`#ffffff`,"text-halo-color":`rgba(0,0,0,0.8)`,"text-halo-width":1}});let s=`${U}polygon-vertices-source`,c=`${U}polygon-vertices`;W(e,s),e.getLayer(c)||e.addLayer({id:c,type:`circle`,source:s,paint:{"circle-radius":5,"circle-color":`#3388ff`,"circle-stroke-color":`#ffffff`,"circle-stroke-width":2}});let l=`${U}circle-radius-source`,u=`${U}circle-radius-line`;W(e,l),e.getLayer(u)||e.addLayer({id:u,type:`line`,source:l,paint:{"line-color":`#ffffff`,"line-width":1,"line-dasharray":[4,4]}})}function q(e){for(let t of[`rect-preview-source`,`rect-preview-measure-source`,`circle-preview-source`,`circle-preview-measure-source`,`circle-radius-source`,`square-preview-source`,`square-preview-measure-source`,`polygon-preview-source`,`polygon-preview-measure-source`,`polygon-vertices-source`,`polyline-preview-source`,`polyline-preview-measure-source`,`polyline-vertices-source`])G(e,`${U}${t}`)}function Ve({map:e,entityConfig:t,onEntityConfigChange:n,className:r=``,style:i}){let[a,o]=(0,c.useState)(!1),[s,l]=(0,c.useState)(null),[u,d]=(0,c.useState)({showArea:!0,showLength:!0,showRadius:!0}),f=t!==void 0,h=f?{showArea:t.showArea??!0,showLength:t.showLength??!0,showRadius:t.showRadius??!0}:u,[g,_]=(0,c.useState)([]),v=(0,c.useRef)(new Map),y=(0,c.useRef)(0),b=(0,c.useRef)(null),x=(0,c.useRef)(null),C=(0,c.useRef)(null),w=(0,c.useRef)(null),T=(0,c.useRef)(null),E=(0,c.useRef)([]),k=(0,c.useRef)([]),te=(0,c.useRef)(h);te.current=h;let ne=(0,c.useRef)(s);ne.current=s;let M=(0,c.useCallback)(()=>`measure-${++y.current}`,[]),re=(0,c.useRef)(!1),N=(0,c.useCallback)(()=>{!e||!e.isStyleLoaded()||(K(e),re.current=!0)},[e]);(0,c.useEffect)(()=>{if(!e)return;let t=()=>{K(e),re.current=!0};e.isStyleLoaded()?t():e.once(`load`,t);let n=()=>{re.current=!1};return e.on(`style.load`,n),()=>{e.off(`style.load`,n)}},[e]),(0,c.useEffect)(()=>{let e=e=>{b.current&&!b.current.contains(e.target)&&x.current&&!x.current.contains(e.target)&&o(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[]);let P=(0,c.useCallback)(t=>{if(!e)return;let n=S(t,te.current),r=null;if(n.type===`circle`?r=new de(e,n):n.type===`square`?r=new he(e,n):n.type===`rectangle`?r=new _e(e,n):n.type===`polygon`?r=new ce(e,n):n.type===`polyline`&&(r=new le(e,n)),r){v.current.set(n.id,r);let e={entity:n,shapeLabel:Pe[n.type]||n.type,area:Re(n),lengthOrRadius:ze(n)};_(t=>[...t,e])}},[e]),F=(0,c.useCallback)(e=>{let t=v.current.get(e);t&&(t.destroy(),v.current.delete(e)),_(t=>t.filter(t=>t.entity.id!==e))},[]),ie=(0,c.useCallback)(()=>{v.current.forEach(e=>e.destroy()),v.current.clear(),_([])},[]),I=(0,c.useCallback)(t=>{if(!e)return;let n=v.current.get(t);if(!n)return;let r=n.getBounds();e.fitBounds(r,{padding:80,maxZoom:18,duration:1e3})},[e]),ae=(0,c.useCallback)((e,t)=>{let r={...te.current,[e]:t};f?n?.({...r}):d(r),_(t=>t.map(t=>{let n={...t.entity};n[e]=void 0;let i=S(n,r),a=v.current.get(t.entity.id);return a&&a.update(i),{...t,entity:i}}))},[f,n]),oe=(0,c.useCallback)((t,n)=>{if(!e)return;let[r,i]=t,[a,o]=n,s=[[Math.min(r,a),Math.max(i,o)],[Math.max(r,a),Math.max(i,o)],[Math.max(r,a),Math.min(i,o)],[Math.min(r,a),Math.min(i,o)],[Math.min(r,a),Math.max(i,o)]],c=e.getSource(`${U}rect-preview-source`);c&&c.setData({type:`Feature`,geometry:{type:`Polygon`,coordinates:[s]},properties:{}});let l=e.getSource(`${U}rect-preview-measure-source`);if(l){let e=te.current,t=[],n=s[0],r=s[1],i=s[2];if(e?.showArea){let e=O(n,r),a=O(r,i);t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[(n[0]+i[0])/2,(n[1]+i[1])/2]},properties:{label:A(e*a)}})}e?.showLength&&(t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[(n[0]+r[0])/2,(n[1]+r[1])/2]},properties:{label:j(O(n,r))}}),t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[(r[0]+i[0])/2,(r[1]+i[1])/2]},properties:{label:j(O(r,i))}})),l.setData({type:`FeatureCollection`,features:t})}},[e]),se=(0,c.useCallback)((t,n)=>{if(!e)return;let r=Ie(t,n),i=H(t,r),a=e.getSource(`${U}circle-preview-source`);a&&a.setData({type:`Feature`,geometry:{type:`Polygon`,coordinates:[i]},properties:{}});let o=te.current,s=[],c=[];if(o?.showArea&&s.push({type:`Feature`,geometry:{type:`Point`,coordinates:t},properties:{label:A(Math.PI*r*r)}}),o?.showRadius){let e=D(t,r,90),n=[(t[0]+e[0])/2,(t[1]+e[1])/2];c.push({type:`Feature`,geometry:{type:`LineString`,coordinates:[t,e]},properties:{}}),s.push({type:`Feature`,geometry:{type:`Point`,coordinates:n},properties:{label:j(r)}})}let l=e.getSource(`${U}circle-preview-measure-source`);l&&l.setData({type:`FeatureCollection`,features:s});let u=e.getSource(`${U}circle-radius-source`);u&&u.setData({type:`FeatureCollection`,features:c})},[e]),ue=(0,c.useCallback)((t,n)=>{if(!e)return;let r=Ie(t,n)*2,i=Le(t,r),a=e.getSource(`${U}square-preview-source`);a&&a.setData({type:`Feature`,geometry:{type:`Polygon`,coordinates:[i]},properties:{}});let o=e.getSource(`${U}square-preview-measure-source`);if(o){let e=te.current,n=[];if(e?.showArea&&n.push({type:`Feature`,geometry:{type:`Point`,coordinates:t},properties:{label:A(r*r)}}),e?.showLength){let e=[(i[1][0]+i[2][0])/2,(i[1][1]+i[2][1])/2];n.push({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{label:j(r)}})}o.setData({type:`FeatureCollection`,features:n})}},[e]),L=(0,c.useCallback)((t,n)=>{if(!e)return;let r=[...t,n],i=e.getSource(`${U}polygon-preview-source`);i&&(r.length>=3?i.setData({type:`Feature`,geometry:{type:`Polygon`,coordinates:[[...r,r[0]]]},properties:{}}):r.length===2?i.setData({type:`Feature`,geometry:{type:`LineString`,coordinates:r},properties:{}}):i.setData({type:`FeatureCollection`,features:[]}));let a=e.getSource(`${U}polygon-vertices-source`);a&&a.setData({type:`FeatureCollection`,features:t.map(e=>({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{}}))});let o=e.getSource(`${U}polygon-preview-measure-source`);if(o){let e=te.current,t=[];if(e?.showArea&&r.length>=3){let e=ee([...r,r[0]]),n=0,i=0;for(let e of r)n+=e[0],i+=e[1];n/=r.length,i/=r.length,t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[n,i]},properties:{label:A(e)}})}if(e?.showLength&&r.length>=2){for(let e=0;e<r.length-1;e++){let n=r[e],i=r[e+1];t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[(n[0]+i[0])/2,(n[1]+i[1])/2]},properties:{label:j(O(n,i))}})}if(r.length>=3){let e=r[r.length-1],n=r[0];t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[(e[0]+n[0])/2,(e[1]+n[1])/2]},properties:{label:j(O(e,n))}})}}o.setData({type:`FeatureCollection`,features:t})}},[e]),fe=(0,c.useCallback)((t,n)=>{if(!e)return;let r=[...t,n],i=e.getSource(`${U}polyline-preview-source`);i&&(r.length>=2?i.setData({type:`Feature`,geometry:{type:`LineString`,coordinates:r},properties:{}}):i.setData({type:`FeatureCollection`,features:[]}));let a=e.getSource(`${U}polyline-vertices-source`);a&&a.setData({type:`FeatureCollection`,features:t.map(e=>({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{}}))});let o=e.getSource(`${U}polyline-preview-measure-source`);if(o){let e=te.current,t=[];if(e?.showLength&&r.length>=2)for(let e=0;e<r.length-1;e++){let n=r[e],i=r[e+1];t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[(n[0]+i[0])/2,(n[1]+i[1])/2]},properties:{label:j(O(n,i))}})}o.setData({type:`FeatureCollection`,features:t})}},[e]);(0,c.useEffect)(()=>{if(!e||!s)return;N(),e.getCanvas().style.cursor=`crosshair`;let t=t=>{let n=[t.lngLat.lng,t.lngLat.lat],r=ne.current;if(r===`rectangle`){let t=C.current;if(!t)C.current=n;else{let r={id:M(),type:`rectangle`,bounds:[t,n]};P(r),C.current=null,q(e),l(null)}}else if(r===`circle`){let t=w.current;if(!t)w.current={center:n};else{let r=Ie(t.center,n),i={id:M(),type:`circle`,center:t.center,radius:r};P(i),w.current=null,q(e),l(null)}}else if(r===`square`){let t=T.current;if(!t)T.current={center:n};else{let r=Ie(t.center,n)*2,i={id:M(),type:`square`,center:t.center,length:r};P(i),T.current=null,q(e),l(null)}}else if(r===`polygon`){let t=E.current;if(t.length>=3&&Ie(t[0],n)<20){let n={id:M(),type:`polygon`,coordinates:[...t]};P(n),E.current=[],q(e),l(null);return}E.current=[...t,n]}else r===`polyline`&&(k.current=[...k.current,n])},n=e=>{let t=[e.lngLat.lng,e.lngLat.lat],n=ne.current;if(n===`rectangle`&&C.current)oe(C.current,t);else if(n===`circle`&&w.current)se(w.current.center,t);else if(n===`square`&&T.current)ue(T.current.center,t);else if(n===`polygon`){let e=E.current;e.length>0&&L(e,t)}else if(n===`polyline`){let e=k.current;e.length>0&&fe(e,t)}},r=t=>{t.preventDefault();let n=ne.current;if(n===`polygon`){let t=E.current;if(t.length>=3){let n={id:M(),type:`polygon`,coordinates:[...t]};P(n),E.current=[],q(e),l(null)}else E.current=[],q(e)}else if(n===`polyline`){let t=k.current;if(t.length>=2){let n={id:M(),type:`polyline`,coordinates:[...t]};P(n),k.current=[],q(e),l(null)}else k.current=[],q(e)}},i=t=>{t.key===`Escape`&&(C.current=null,w.current=null,T.current=null,E.current=[],k.current=[],q(e),l(null))},a=t=>{t.preventDefault();let n=ne.current;if(n===`polygon`){let t=E.current;if(t.length>=3){let n={id:M(),type:`polygon`,coordinates:[...t]};P(n),E.current=[],q(e),l(null)}}else if(n===`polyline`){let t=k.current;if(t.length>=2){let n={id:M(),type:`polyline`,coordinates:[...t]};P(n),k.current=[],q(e),l(null)}}};return e.doubleClickZoom.disable(),e.on(`click`,t),e.on(`mousemove`,n),e.on(`contextmenu`,r),e.on(`dblclick`,a),document.addEventListener(`keydown`,i),()=>{e.off(`click`,t),e.off(`mousemove`,n),e.off(`contextmenu`,r),e.off(`dblclick`,a),document.removeEventListener(`keydown`,i),e.getCanvas().style.cursor=``,e.doubleClickZoom.enable(),q(e)}},[e,s,M,P,N,oe,se,ue,L,fe]),(0,c.useEffect)(()=>()=>{v.current.forEach(e=>e.destroy()),v.current.clear()},[]);let pe=(0,c.useCallback)(t=>{l(e=>e===t?null:t),C.current=null,w.current=null,T.current=null,E.current=[],k.current=[],e&&q(e)},[e]);return e?(0,p.jsxs)(`div`,{className:`mapbox-measure-control ${r}`,style:i,children:[(0,p.jsxs)(`button`,{ref:x,className:`mapbox-control-btn mapbox-measure-control__btn ${a?`mapbox-measure-control__btn--active`:``}`,onClick:()=>o(!a),title:`测量`,children:[(0,p.jsx)(`img`,{src:De,alt:`measure`,className:`mapbox-measure-control__btn-icon`}),(0,p.jsx)(`span`,{children:`测量`}),g.length>0&&(0,p.jsxs)(`span`,{children:[`(`,g.length,`)`]})]}),a&&(0,p.jsxs)(`div`,{ref:b,className:`mapbox-measure-control__panel`,children:[(0,p.jsx)(`div`,{className:`mapbox-measure-control__section-title`,children:`显示设置`}),(0,p.jsxs)(`div`,{className:`mapbox-measure-control__settings`,children:[(0,p.jsx)(m.Checkbox,{checked:h.showArea,onChange:e=>ae(`showArea`,e),children:`面积`}),(0,p.jsx)(m.Checkbox,{checked:h.showLength,onChange:e=>ae(`showLength`,e),children:`长度`}),(0,p.jsx)(m.Checkbox,{checked:h.showRadius,onChange:e=>ae(`showRadius`,e),children:`半径`})]}),(0,p.jsx)(`div`,{className:`mapbox-measure-control__section-title`,children:`绘制工具`}),(0,p.jsxs)(`div`,{className:`mapbox-measure-control__tools`,children:[Fe.map(e=>(0,p.jsx)(`button`,{className:`mapbox-measure-control__tool-btn ${s===e.mode?`mapbox-measure-control__tool-btn--active`:``}`,onClick:()=>pe(e.mode),title:e.label,children:(0,p.jsx)(`img`,{src:e.icon,alt:e.label})},e.mode)),g.length>0&&(0,p.jsx)(`button`,{className:`mapbox-measure-control__tool-btn mapbox-measure-control__tool-btn--danger`,onClick:ie,title:`清除全部`,children:(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1769394652565'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='6483'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128'%20height='128'%3e%3cpath%20d='M841.385637%20288.639098a36.479886%2036.479886%200%200%201%2072.74644%207.679976l6.613312%20629.544699A109.866323%20109.866323%200%200%201%20810.665733%201023.9968H222.507571a109.652991%20109.652991%200%200%201-109.012992-98.133027l-3.626656-629.544699a36.479886%2036.479886%200%200%201%2072.74644-7.679976L186.241018%20917.330467a36.479886%2036.479886%200%200%200%2036.266553%2032.639898H810.665733A36.479886%2036.479886%200%200%200%20847.99895%20917.330467z%20m-219.732646%20113.706311a36.479886%2036.479886%200%200%201%2036.693218%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.479886-36.479886z%20m-219.305982%200a36.479886%2036.479886%200%200%201%2036.479886%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.693218-36.479886z%20m-36.693218-255.9992h292.692418V91.519714a18.346609%2018.346609%200%200%200-18.346609-18.346609H384.0004a18.346609%2018.346609%200%200%200-18.346609%2018.346609z%20m-73.173105%200V73.173105A73.173105%2073.173105%200%200%201%20365.653791%200h292.692418a73.386437%2073.386437%200%200%201%2073.173105%2073.173105v73.173104h255.9992a36.693219%2036.693219%200%200%201%200%2073.173105H36.481486a36.693219%2036.693219%200%200%201%200-73.173105z'%20fill='%23EB6865'%20p-id='6484'%3e%3c/path%3e%3c/svg%3e`,alt:`clear`})})]}),g.length>0?(0,p.jsx)(`div`,{className:`mapbox-measure-control__list`,children:(0,p.jsxs)(`table`,{className:`mapbox-measure-control__table`,children:[(0,p.jsx)(`thead`,{children:(0,p.jsxs)(`tr`,{children:[(0,p.jsx)(`th`,{children:`类型`}),(0,p.jsx)(`th`,{children:`ID`}),(0,p.jsx)(`th`,{children:`面积`}),(0,p.jsx)(`th`,{children:`长度/半径`}),(0,p.jsx)(`th`,{})]})}),(0,p.jsx)(`tbody`,{children:g.map(e=>(0,p.jsxs)(`tr`,{className:`mapbox-measure-control__table-row`,onClick:()=>I(e.entity.id),children:[(0,p.jsx)(`td`,{children:e.shapeLabel}),(0,p.jsx)(`td`,{children:String(e.entity.id)}),(0,p.jsx)(`td`,{children:e.area??`-`}),(0,p.jsx)(`td`,{children:e.lengthOrRadius??`-`}),(0,p.jsx)(`td`,{children:(0,p.jsx)(`button`,{className:`mapbox-measure-control__delete-btn`,onClick:t=>{t.stopPropagation(),F(e.entity.id)},title:`删除`,children:(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1769394652565'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='6483'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128'%20height='128'%3e%3cpath%20d='M841.385637%20288.639098a36.479886%2036.479886%200%200%201%2072.74644%207.679976l6.613312%20629.544699A109.866323%20109.866323%200%200%201%20810.665733%201023.9968H222.507571a109.652991%20109.652991%200%200%201-109.012992-98.133027l-3.626656-629.544699a36.479886%2036.479886%200%200%201%2072.74644-7.679976L186.241018%20917.330467a36.479886%2036.479886%200%200%200%2036.266553%2032.639898H810.665733A36.479886%2036.479886%200%200%200%20847.99895%20917.330467z%20m-219.732646%20113.706311a36.479886%2036.479886%200%200%201%2036.693218%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.479886-36.479886z%20m-219.305982%200a36.479886%2036.479886%200%200%201%2036.479886%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.693218-36.479886z%20m-36.693218-255.9992h292.692418V91.519714a18.346609%2018.346609%200%200%200-18.346609-18.346609H384.0004a18.346609%2018.346609%200%200%200-18.346609%2018.346609z%20m-73.173105%200V73.173105A73.173105%2073.173105%200%200%201%20365.653791%200h292.692418a73.386437%2073.386437%200%200%201%2073.173105%2073.173105v73.173104h255.9992a36.693219%2036.693219%200%200%201%200%2073.173105H36.481486a36.693219%2036.693219%200%200%201%200-73.173105z'%20fill='%23EB6865'%20p-id='6484'%3e%3c/path%3e%3c/svg%3e`,alt:`delete`})})})]},String(e.entity.id)))})]})}):(0,p.jsx)(`div`,{className:`mapbox-measure-control__empty`,children:`选择工具后在地图上点击绘制`})]})]}):null}var He=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1773803353422'%20class='icon'%20viewBox='0%200%201028%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='6757'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128.5'%20height='128'%3e%3cpath%20d='M835.073959%20357.94044V345.56192a345.170251%20345.170251%200%201%200-686.690426%2049.672777A345.090902%20345.090902%200%200%200%20523.706588%20974.009826a345.090902%20345.090902%200%201%200%20311.049973-616.069386zM490.141757%2048.001359a297.877959%20297.877959%200%200%201%20297.560561%20297.560561c0%207.934948%200%2016.345994-1.031543%2025.074437A297.639911%20297.639911%200%200%201%20490.141757%20643.122482h-15.869897a289.943011%20289.943011%200%200%201-104.106522-24.757039A297.481212%20297.481212%200%200%201%20490.141757%2048.001359zM345.170251%20976.39031a297.560561%20297.560561%200%200%201-185.281043-530.371944c0%201.031543%200.714145%202.142436%201.031544%203.253328s1.50764%204.522921%202.301135%206.824056c1.269592%203.888125%202.697882%207.934948%204.126173%2011.743724%200.952194%202.301135%201.825038%204.60227%202.697882%206.903405%201.58699%203.808775%203.253329%207.934948%204.919668%2011.505675%200.952194%202.142436%201.904388%204.284872%202.935931%206.347958%201.983737%204.284872%204.126173%208.490395%206.268609%2012.695918l2.380485%204.60227c3.01528%205.633813%206.268609%2011.108928%209.601287%2016.504692%200.793495%201.428291%201.745689%202.777232%202.618533%204.126173%202.539183%204.046824%205.157716%207.934948%207.934948%2011.981772l4.205523%205.792512c2.380484%203.253329%204.760969%206.506658%207.220803%209.680637l4.840318%206.030561c2.459834%203.01528%204.999017%205.951211%207.538201%208.887142l5.157717%205.792512c2.777232%203.01528%205.633813%205.951211%208.569744%208.887142l4.840318%204.999018c4.205523%204.046824%208.411045%207.934948%2012.775267%2011.823073l3.09463%202.618533c4.205523%203.650076%208.490395%207.220803%2012.854616%2010.63283l5.713163%204.205523c3.332678%202.459834%206.586007%204.919668%209.998035%207.220803l6.506657%204.364222q4.999017%203.332678%209.998035%206.427308c2.221786%201.348941%204.443571%202.697882%206.744706%203.967474%203.570727%202.142436%207.300152%204.126173%2010.950229%206.10991l6.18926%203.253329%202.301135%201.269592v12.378519c0%207.379502%200%2014.759004%200.793494%2021.979807%200%202.459834%200.396747%204.840318%200.634796%207.220803%200%204.840318%200.793495%209.759986%201.428291%2014.600305%200%202.777232%200.872844%205.554464%201.269592%208.411045%200.714145%204.364222%201.428291%208.728443%202.221785%2013.013315%200.555446%202.935931%201.190242%205.871862%201.825038%208.728443%200.952194%204.205523%201.904388%207.934948%203.015281%2012.457869s1.50764%205.871862%202.380484%208.728443%202.380484%207.934948%203.729426%2012.140471c0.952194%202.856581%201.825038%205.633813%202.856581%208.490395%201.428291%204.046824%203.01528%207.934948%204.60227%2012.061121%201.110893%202.618533%202.142436%205.316415%203.253329%207.934948%201.825038%204.284872%203.729426%208.411045%205.713163%2012.537219%201.110893%202.301135%202.142436%204.681619%203.332678%206.903405%202.618533%205.316415%205.475114%2010.474132%208.411045%2015.869896%200.555446%201.110893%201.110893%202.221786%201.745689%203.332679%203.570727%206.10991%207.379502%2012.061121%2011.346976%2018.012332%201.269592%201.904388%202.697882%203.808775%204.046824%205.713163%202.777232%203.967474%205.475114%207.934948%208.411045%2011.664374%201.745689%202.301135%203.570727%204.443571%205.395765%206.744706s5.316415%206.586007%207.934948%209.839336%204.046824%204.60227%206.10991%206.824056%205.633813%206.030561%208.490395%209.045841l6.744706%206.586007c2.935931%202.856581%205.871862%205.633813%208.966492%207.934948s4.681619%204.205523%207.062104%206.268609%206.427308%205.316415%209.759986%207.934948%204.760969%203.888125%207.300152%205.713163l2.380485%201.904388A295.894222%20295.894222%200%200%201%20345.170251%20976.39031z%20m335.965711-11.981772a296.608368%20296.608368%200%200%201-146.479145-38.563848c-5.792512-3.332678-11.426326-6.744706-16.90144-10.315433-1.825038-1.190242-3.491377-2.539183-5.237066-3.729426-3.650076-2.459834-7.300152-4.999017-10.79153-7.934948-2.063087-1.50764-3.967474-3.173979-5.871862-4.760969-3.173979-2.459834-6.268609-4.919668-9.283889-7.934949s-3.967474-3.650076-5.951211-5.475114-5.633813-5.078367-7.934949-7.934948-3.808775-4.046824-5.792512-6.10991-5.078367-5.157716-7.458851-7.934949l-5.554464-6.506657c-1.825038-2.142436-4.60227-5.475114-6.824056-7.934949s-3.412028-4.681619-5.157716-7.062104-4.205523-5.633813-6.10991-8.490394-3.253329-4.999017-4.840319-7.458852-3.729426-5.792512-5.475114-8.807792-2.935931-5.157716-4.364222-7.934949-3.332678-6.030561-4.919668-9.045841-2.539183-5.395765-3.808775-7.934948-2.935931-6.18926-4.284872-9.363239-2.301135-5.554464-3.412028-8.411045-2.459834-6.268609-3.570726-9.521938-1.983737-5.792512-2.856582-8.649094-2.063087-6.506658-3.01528-9.759986-1.58699-5.951211-2.301135-8.887142-1.666339-6.586007-2.380485-9.918686S388.812467%20722.471965%20388.812467%20719.536034s-1.190242-6.665357-1.666339-9.998035-0.793495-6.18926-1.110893-9.28389-0.793495-6.824056-1.031543-10.236083%200-6.268609-0.555447-9.363239v-6.665357h0.396748l2.142436%200.634796c4.364222%201.428291%208.807793%202.697882%2013.251363%203.967474l4.840319%201.269592%2011.505675%202.697883%204.52292%201.031543c5.237066%201.031543%2010.474132%201.983737%2015.869897%202.856581h1.348941c4.840318%200.793495%209.759986%201.348941%2014.600305%201.904388l4.919668%200.476097q5.951211%200.634796%2011.902422%200.952194H490.855902a344.456106%20344.456106%200%200%200%20183.138607-52.529358c5.395765-3.412028%2010.71218-7.062104%2015.869896-10.71218%201.745689-1.190242%203.332678-2.539183%205.078367-3.729426%203.412028-2.539183%206.903405-5.157716%2010.236084-7.934948l5.713162-4.760969c3.01528-2.459834%206.030561-4.999017%208.966492-7.934949l5.633813-5.237066c2.856581-2.618533%205.554464-5.237066%207.934949-7.934948l5.475114-5.633813c2.618533-2.697882%205.237066-5.475114%207.934948-8.331696l5.078367-5.713163%207.458851-9.045841%204.522921-5.633813%207.934948-10.315433%203.570727-4.999017c3.173979-4.60227%206.268609-9.363239%209.20454-14.203558l1.031543-1.586989c3.332678-5.475114%206.506658-11.029578%209.601288-16.663392%200.634796-1.190242%201.190242-2.380484%201.745688-3.570727%202.301135-4.443571%204.60227-8.887142%206.665357-13.410062%200.872844-1.825038%201.666339-3.729426%202.539183-5.554464%201.745689-3.967474%203.491377-7.934948%205.078367-11.902422%200.793495-2.063087%201.58699-4.205523%202.459834-6.347959%201.428291-3.808775%202.856581-7.934948%204.126173-11.505675%200.793495-2.221786%201.50764-4.522921%202.221786-6.744706%201.190242-3.808775%202.380484-7.934948%203.491377-11.585025%200.634796-2.301135%201.269592-4.60227%201.825038-6.903405%201.031543-3.967474%201.904388-7.934948%202.777232-11.902422%200.555446-2.301135%201.031543-4.522921%201.50764-6.824056%200-1.031543%200.476097-2.142436%200.634796-3.173979a297.560561%20297.560561%200%200%201-148.304183%20555.446381z'%20fill='%23ffffff'%20p-id='6758'%3e%3c/path%3e%3c/svg%3e`,J={brightness:1,saturation:0,contrast:0,hueRotate:0},Y=[{key:`brightness`,label:`亮度`,min:0,max:1,step:.01},{key:`saturation`,label:`饱和度`,min:-1,max:1,step:.01},{key:`contrast`,label:`对比度`,min:-1,max:1,step:.01},{key:`hueRotate`,label:`色相`,min:0,max:360,step:1}];function Ue({map:e,value:t,onChange:n,rasterPaintLayerIds:r=[],className:i,style:a}){let[o,s]=(0,c.useState)(!1),[l,u]=(0,c.useState)({...J}),d=(0,c.useRef)(null),f=(0,c.useRef)(null),h=t!==void 0;(0,c.useEffect)(()=>{let e=e=>{d.current&&!d.current.contains(e.target)&&f.current&&!f.current.contains(e.target)&&s(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[]);let g=(0,c.useMemo)(()=>h?{brightness:t.brightness??J.brightness,saturation:t.saturation??J.saturation,contrast:t.contrast??J.contrast,hueRotate:t.hueRotate??J.hueRotate}:l,[h,t,l]),_=(0,c.useRef)(h);(0,c.useEffect)(()=>{h&&!_.current&&u({...g}),_.current=h},[h,g]);let v=(0,c.useCallback)(t=>{if(!(!e||r.length===0))for(let n of r)e.getLayer(n)&&(e.setPaintProperty(n,`raster-brightness-min`,0),e.setPaintProperty(n,`raster-brightness-max`,t.brightness),e.setPaintProperty(n,`raster-saturation`,t.saturation),e.setPaintProperty(n,`raster-contrast`,t.contrast),e.setPaintProperty(n,`raster-hue-rotate`,t.hueRotate))},[e,r]),y=(0,c.useCallback)((e,t)=>{if(h)n?.({...g,[e]:t});else{let n={...l,[e]:t};u(n),v(n)}},[h,n,g,l,v]),b=(0,c.useCallback)(()=>{h?n?.({...J}):(u({...J}),v({...J}))},[h,n,v]);(0,c.useEffect)(()=>{!h&&r.length>0&&v(l)},[r,h,v,l]);let x=(e,t)=>e===`hueRotate`?`${Math.round(t)}°`:t.toFixed(2);return(0,p.jsxs)(`div`,{className:`mapbox-raster-paint-control${i?` ${i}`:``}`,style:a,children:[(0,p.jsxs)(`button`,{ref:f,className:`mapbox-control-btn mapbox-raster-paint-control__btn${o?` mapbox-raster-paint-control__btn--active`:``}`,onClick:()=>s(!o),title:`栅格渲染调节`,children:[(0,p.jsx)(`img`,{className:`mapbox-control-btn__icon mapbox-raster-paint-control__btn-icon`,src:He,alt:`raster paint`}),(0,p.jsx)(`span`,{children:`渲染`})]}),o&&(0,p.jsxs)(`div`,{ref:d,className:`mapbox-raster-paint-control__panel`,children:[Y.map(({key:e,label:t,min:n,max:r,step:i})=>(0,p.jsxs)(`div`,{className:`mapbox-raster-paint-control__slider-row`,children:[(0,p.jsx)(`span`,{className:`mapbox-raster-paint-control__label`,children:t}),(0,p.jsx)(m.Slider,{className:`mapbox-raster-paint-control__slider`,min:n,max:r,step:i,value:g[e],onChange:t=>y(e,t),tooltipVisible:!1}),(0,p.jsx)(`span`,{className:`mapbox-raster-paint-control__value`,children:x(e,g[e])})]},e)),(0,p.jsx)(`button`,{className:`mapbox-raster-paint-control__reset`,onClick:b,children:`重置`})]})]})}var We=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1769397418113'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='10253'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128'%20height='128'%3e%3cpath%20d='M755.4048%20217.2928A348.3648%20348.3648%200%200%200%20512%20119.3472a348.3136%20348.3136%200%200%200-243.3536%2097.8944%20328.4992%20328.4992%200%200%200-100.864%20236.3392c0%2049.408%2011.7248%2095.744%2032%20137.728a378.0096%20378.0096%200%200%200%2091.136%20118.4256l203.5712%20179.456%2017.5104%2015.4624%2017.5104-15.4624%20203.4176-179.3536a378.6752%20378.6752%200%200%200%2091.2384-118.4768c20.2752-41.984%2032.0512-88.32%2032.0512-137.7792a328.448%20328.448%200%200%200-100.8128-236.288z%20m24.1152%20353.3824a329.216%20329.216%200%200%201-79.872%20103.0656l-188.0064%20164.6592-187.1872-164.7616a329.0624%20329.0624%200%200%201-79.7696-103.0144%20267.0592%20267.0592%200%200%201-27.136-117.0944c0-78.7968%2032.9728-150.1184%2086.272-201.728a298.3936%20298.3936%200%200%201%20208.2816-83.5584c81.3056%200%20154.9824%2031.9488%20208.2304%2083.6096a279.9104%20279.9104%200%200%201%2086.272%20201.728%20266.496%20266.496%200%200%201-27.0848%20117.0944z%20m-164.1472-212.1728l0.0512-0.0512a146.9952%20146.9952%200%200%200-104.2432-43.2128c-40.6528%200-77.568%2016.5376-104.2432%2043.2128l0.0512%200.0512a147.3536%20147.3536%200%200%200-0.0512%20208.6912%20147.0464%20147.0464%200%200%200%20208.4864%200%20147.5072%20147.5072%200%200%200-0.0512-208.6912z%20m-34.1504%20174.2336a97.536%2097.536%200%200%201-69.2736%2028.7232%2097.6384%2097.6384%200%200%201-69.3248-28.7232%2097.792%2097.792%200%200%201-0.1536-138.4448h0.1024a97.9456%2097.9456%200%200%201%20138.5984%200h0.1536c17.664%2017.6128%2028.5696%2042.1376%2028.5696%2069.2224a97.1776%2097.1776%200%200%201-28.672%2069.2224z'%20fill='%23ffffff'%20p-id='10254'%3e%3c/path%3e%3c/svg%3e`;const Ge=({markerTemplates:e,selectedTemplate:t,onTemplateSelect:n,drawMode:r,onDrawModeChange:i,showRectangleTool:a=!1,showCircleTool:o=!1,showPolygonTool:s=!1,showSquareTool:l=!1,showPolylineTool:u=!1})=>{let[d,f]=(0,c.useState)(!1),m=(0,c.useRef)(null);(0,c.useEffect)(()=>{let e=e=>{m.current&&!m.current.contains(e.target)&&f(!1)};if(d)return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[d]);let h=e=>{t?.id===e.id?(n(null),i(null)):(n(e),i(`marker`)),f(!1)},g=()=>{r===`rectangle`?i(null):(n(null),i(`rectangle`))},_=()=>{r===`circle`?i(null):(n(null),i(`circle`))},v=()=>{r===`polygon`?i(null):(n(null),i(`polygon`))},y=()=>{r===`square`?i(null):(n(null),i(`square`))},b=()=>{r===`polyline`?i(null):(n(null),i(`polyline`))},x=()=>{(r===`rectangle`||r===`circle`||r===`polygon`||r===`square`||r===`polyline`)&&i(null),f(!d)},S=e=>e.size?{width:e.size,height:e.size}:{width:e.width||32,height:e.height||32},C=d||t,w=r===`rectangle`,T=r===`circle`,E=r===`polygon`,D=r===`square`,O=r===`polyline`;return(0,p.jsxs)(`div`,{ref:m,className:`mapbox-edit-control`,children:[(0,p.jsxs)(`div`,{className:`mapbox-edit-control__btn-group`,children:[(0,p.jsxs)(`button`,{className:`mapbox-control-btn ${C?`mapbox-control-btn--active`:``}`,onClick:x,title:`Marker`,children:[t?(0,p.jsx)(`img`,{src:t.icon,alt:t.name,className:`mapbox-edit-control__btn-icon`}):(0,p.jsx)(`img`,{src:We,alt:`marker`,className:`mapbox-edit-control__btn-icon mapbox-edit-control__btn-icon--lg`}),(0,p.jsx)(`span`,{children:t?t.name:`Marker`})]}),l&&(0,p.jsxs)(`button`,{className:`mapbox-control-btn ${D?`mapbox-control-btn--active`:``}`,onClick:y,title:`绘制正方形`,children:[(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3crect%20x='192'%20y='192'%20width='640'%20height='640'%20rx='32'%20ry='32'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e`,alt:`square`,className:`mapbox-edit-control__btn-icon mapbox-edit-control__btn-icon--lg`}),(0,p.jsx)(`span`,{children:`正方形`})]}),a&&(0,p.jsxs)(`button`,{className:`mapbox-control-btn ${w?`mapbox-control-btn--active`:``}`,onClick:g,title:`绘制矩形`,children:[(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3crect%20x='160'%20y='240'%20width='704'%20height='544'%20rx='32'%20ry='32'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e`,alt:`rectangle`,className:`mapbox-edit-control__btn-icon mapbox-edit-control__btn-icon--lg`}),(0,p.jsx)(`span`,{children:`矩形`})]}),o&&(0,p.jsxs)(`button`,{className:`mapbox-control-btn ${T?`mapbox-control-btn--active`:``}`,onClick:_,title:`绘制圆形`,children:[(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3ccircle%20cx='512'%20cy='512'%20r='384'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e`,alt:`circle`,className:`mapbox-edit-control__btn-icon mapbox-edit-control__btn-icon--lg`}),(0,p.jsx)(`span`,{children:`圆形`})]}),s&&(0,p.jsxs)(`button`,{className:`mapbox-control-btn ${E?`mapbox-control-btn--active`:``}`,onClick:v,title:`绘制多边形`,children:[(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3cpolygon%20points='512,128%20864,384%20736,800%20288,800%20160,384'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'%20stroke-linejoin='round'/%3e%3c/svg%3e`,alt:`polygon`,className:`mapbox-edit-control__btn-icon mapbox-edit-control__btn-icon--lg`}),(0,p.jsx)(`span`,{children:`多边形`})]}),u&&(0,p.jsxs)(`button`,{className:`mapbox-control-btn ${O?`mapbox-control-btn--active`:``}`,onClick:b,title:`绘制折线`,children:[(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3cpolyline%20points='160,768%20384,256%20640,576%20864,192'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'%20stroke-linejoin='round'%20stroke-linecap='round'/%3e%3c/svg%3e`,alt:`polyline`,className:`mapbox-edit-control__btn-icon mapbox-edit-control__btn-icon--lg`}),(0,p.jsx)(`span`,{children:`折线`})]})]}),d&&(0,p.jsxs)(`div`,{className:`mapbox-edit-control__panel`,children:[(0,p.jsx)(`div`,{className:`mapbox-edit-control__panel-header`,children:`选择 Marker`}),(0,p.jsx)(`div`,{className:`mapbox-edit-control__template-list`,children:e.map(e=>{let n=S(e),r=t?.id===e.id;return(0,p.jsxs)(`div`,{className:`mapbox-edit-control__template-item ${r?`mapbox-edit-control__template-item--selected`:``}`,onClick:()=>h(e),title:e.name,children:[(0,p.jsx)(`img`,{src:e.icon,alt:e.name,className:`mapbox-edit-control__template-icon`,style:{width:Math.min(n.width,24),height:Math.min(n.height,24)}}),(0,p.jsx)(`span`,{className:`mapbox-edit-control__template-name`,children:e.name})]},e.id)})})]})]})},Ke=({menuState:e,onClose:t,portalContainer:n,menuRef:r})=>{let i=(0,c.useRef)(null);(0,c.useEffect)(()=>(r&&(r.current=i.current),()=>{r&&(r.current=null)}));let a=(0,c.useCallback)(e=>{i.current&&!i.current.contains(e.target)&&t()},[t]),o=(0,c.useCallback)(e=>{e.key===`Escape`&&t()},[t]);(0,c.useEffect)(()=>{let e=setTimeout(()=>{document.addEventListener(`click`,a,!0),document.addEventListener(`contextmenu`,a,!0)},0);return document.addEventListener(`keydown`,o),()=>{clearTimeout(e),document.removeEventListener(`click`,a,!0),document.removeEventListener(`contextmenu`,a,!0),document.removeEventListener(`keydown`,o)}},[a,o]);let s={...e.position};if(i.current){let e=i.current.getBoundingClientRect();s.x+e.width>window.innerWidth&&(s.x=window.innerWidth-e.width-10),s.y+e.height>window.innerHeight&&(s.y=window.innerHeight-e.height-10)}let l=(0,p.jsx)(`div`,{ref:i,className:`context-menu`,style:{position:`fixed`,left:`${s.x}px`,top:`${s.y}px`,pointerEvents:`all`},children:e.items.map(e=>(0,p.jsxs)(`div`,{className:`context-menu__item ${e.danger?`context-menu__item--danger`:``}`,onClick:()=>{e.onClick(),t()},children:[e.icon&&(0,p.jsx)(`span`,{className:`context-menu__item-icon`,children:e.icon}),(0,p.jsx)(`span`,{className:`context-menu__item-label`,children:e.label})]},e.key))});return(0,f.createPortal)(l,n)};function qe(e,t,n){return{content:e.content??n??null,trigger:e.trigger??t?.trigger??T.trigger,position:e.position??t?.position??T.position,offset:e.offset??t?.offset??T.offset,showCloseButton:e.showCloseButton??t?.showCloseButton??T.showCloseButton,animation:e.animation??t?.animation??T.animation,className:e.className??``,style:e.style??{},closeOnClickOutside:e.closeOnClickOutside??t?.closeOnClickOutside??T.closeOnClickOutside,closeOnEscape:e.closeOnEscape??t?.closeOnEscape??T.closeOnEscape,hoverDelay:e.hoverDelay??t?.hoverDelay??T.hoverDelay,maxWidth:e.maxWidth??t?.maxWidth??T.maxWidth,zIndex:e.zIndex??t?.zIndex??T.zIndex}}function Je(e,t,n,r,i){let a,o;if(e.type===`polygon`)o=e.center??X(e.coordinates);else if(e.type===`polyline`)o=e.center??Ye(e.coordinates);else if(e.type===`rectangle`)if(e.center)o=e.center;else{let[[t,n],[r,i]]=e.bounds;o=[(t+r)/2,(n+i)/2]}else o=e.center;let s=n.project(o);a={x:s.x,y:s.y};let c=Z(i,t);return Xe(a,t.position,t.offset,c)}function X(e){if(!e||e.length===0)return[0,0];let t=[...e];(e[0][0]!==e[e.length-1][0]||e[0][1]!==e[e.length-1][1])&&t.push(e[0]);let n=(0,u.polygon)([t]);return(0,u.centroid)(n).geometry.coordinates}function Ye(e){if(!e||e.length===0)return[0,0];let t=0,n=0;for(let r of e)t+=r[0],n+=r[1];return[t/e.length,n/e.length]}function Z(e,t){if(e){let t=e.getBoundingClientRect();return{width:t.width||320,height:t.height||200}}return{width:typeof t.maxWidth==`number`?t.maxWidth:320,height:200}}function Xe(e,t,n,r){let i={width:window.innerWidth,height:window.innerHeight},a=(()=>{switch(t){case`top`:return[`top`,`bottom`,`right`,`left`,`center`];case`bottom`:return[`bottom`,`top`,`right`,`left`,`center`];case`left`:return[`left`,`right`,`top`,`bottom`,`center`];case`right`:return[`right`,`left`,`top`,`bottom`,`center`];case`center`:default:return[`center`,`top`,`bottom`,`left`,`right`]}})(),o={top:()=>({x:e.x-r.width/2+n[0],y:e.y-r.height-20+n[1]}),bottom:()=>({x:e.x-r.width/2+n[0],y:e.y+20+n[1]}),left:()=>({x:e.x-r.width-20+n[0],y:e.y-r.height/2+n[1]}),right:()=>({x:e.x+20+n[0],y:e.y-r.height/2+n[1]}),center:()=>({x:e.x-r.width/2+n[0],y:e.y-r.height/2+n[1]})},s=e=>e.x>=10&&e.y>=10&&e.x+r.width+10<=i.width&&e.y+r.height+10<=i.height;for(let e of a){let t=o[e]();if(s(t))return{position:t,actualPosition:e}}let c=o[t]();return{position:Q(c,r),actualPosition:t}}function Q(e,t){let n={width:window.innerWidth,height:window.innerHeight},r={...e};return r.x+t.width+10>n.width&&(r.x=n.width-t.width-10),r.x<10&&(r.x=10),r.y+t.height+10>n.height&&(r.y=n.height-t.height-10),r.y<10&&(r.y=10),r}const Ze=(0,c.forwardRef)((e,t)=>{let{center:n=[116.4074,39.9042],zoom:r=12,pitch:i=0,bearing:a=0,style:o=`mapbox://styles/mapbox/dark-v11`,maxBounds:s,mode:u=`display`,editConfig:d={},pickerConfig:f={},onPick:m,interactive:h={},layers:g=[],rasterPaint:_,entities:v=[],selectedIds:y=[],entityConfig:b,nameConfig:x,selectNameConfig:C,areaConfig:w,circleConfig:T,lengthConfig:E,showCoordinates:k=!0,showScale:te=!0,showResetView:ne=!0,showRoadHighlight:M=!1,showMeasure:re=!1,showRasterPaint:N=!1,onRasterPaintChange:P,popupDefaults:F,renderPopup:I,onMapLoad:ue,onEntityClick:L,onPopupOpen:fe,onPopupClose:me,className:ge=``,containerStyle:ye}=e,xe=(0,c.useRef)(null),R=(0,c.useRef)(null),z=(0,c.useRef)(new Map),B=(0,c.useRef)(new Map),we=(0,c.useRef)(new Set),[V,Te]=(0,c.useState)(null),De=(0,c.useRef)(null),Oe=(0,c.useRef)(null),ke=(0,c.useRef)(null),[Ae,je]=(0,c.useState)(null),Me=(0,c.useRef)(null),Pe=(0,c.useRef)(null),[Fe,Ie]=(0,c.useState)(null),[H,Le]=(0,c.useState)(u),[Re,ze]=(0,c.useState)(null),U=(0,c.useRef)(null),[W,G]=(0,c.useState)(null),[Be,K]=(0,c.useState)(null),[q,He]=(0,c.useState)(null),J=(0,c.useRef)(!1),Y=(0,c.useRef)(null),We=(0,c.useRef)(null),X=(0,c.useRef)(null),Ye=(0,c.useRef)(null),Z=(0,c.useRef)(null),Xe=(0,c.useRef)([]),Q=(0,c.useRef)(null),Ze=(0,c.useRef)(null),Qe=(0,c.useRef)(null),$e=(0,c.useRef)([]),et=(0,c.useRef)(null);(0,c.useEffect)(()=>{Le(u)},[u]);let tt=(0,c.useCallback)(e=>{let t=z.current.get(e),n=B.current.get(e);if(t&&n){if(n.type===`radar`&&t instanceof ie){let r={...n,isAnimating:!0};B.current.set(e,r),t.startAnimation()}else if(n.type===`circle`&&t instanceof pe){let r={...n,isAnimating:!0};B.current.set(e,r),t.startAnimation()}}},[]),nt=(0,c.useCallback)(e=>{let t=z.current.get(e),n=B.current.get(e);if(t&&n){if(n.type===`radar`&&t instanceof ie){let r={...n,isAnimating:!1};B.current.set(e,r),t.stopAnimation()}else if(n.type===`circle`&&t instanceof pe){let r={...n,isAnimating:!1};B.current.set(e,r),t.stopAnimation()}}},[]),rt=(0,c.useCallback)(e=>{let t=B.current.get(e);t&&(t.type===`radar`||t.type===`circle`)&&(t.type,t.isAnimating?nt(e):tt(e))},[tt,nt]),it=(0,c.useCallback)(e=>{if(e===void 0){let e=!1;for(let[,t]of z.current)if(t instanceof se){let n=t.getShowTrajectory();if(n===`all`||typeof n==`number`&&n>0){e=!0;break}}let t=e?0:`all`;for(let[,e]of z.current)e instanceof se&&e.setShowTrajectory(t)}else{let t=new Set(e.map(String));for(let[e,n]of z.current)n instanceof se&&n.setShowTrajectory(t.has(String(e))?`all`:0)}},[]),at=(0,c.useCallback)((e,t,n)=>{let r=v.find(t=>String(t.id)===String(e));if(!r?.popup||!R.current)return;let i=r.popup.content??I?.(r);if(!i)return;let a=qe(r.popup,F,i),{position:o,actualPosition:s}=Je(r,a,R.current,n);Te({entityId:e,position:o,config:a,openedBy:t,actualPosition:s}),fe?.(e)},[v,F,I,fe]),ot=(0,c.useCallback)(e=>{V?.entityId===e&&(Te(null),me?.(e))},[V,me]),st=(0,c.useCallback)(()=>{Te(e=>(e&&me?.(e.entityId),null))},[me]),ct=(0,c.useCallback)(e=>V?.entityId===e,[V]),lt=(0,c.useCallback)((e,t,n)=>{let r=R.current;r&&r.flyTo({center:e,zoom:t??r.getZoom(),...n})},[]),ut=(0,c.useCallback)((e,t,n)=>{let r=R.current;if(!r||e.length===0)return;let i=[];for(let t of e){let e=z.current.get(t);e&&i.push(e.getBounds())}if(i.length===0)return;let a=1/0,o=-1/0,s=1/0,c=-1/0;for(let[[e,t],[n,r]]of i)a=Math.min(a,e),o=Math.max(o,n),s=Math.min(s,t),c=Math.max(c,r);let l=(a+o)/2,u=(s+c)/2,d=a===o&&s===c;if(i.length===1||d){let e={center:[l,u],zoom:t??r.getZoom()};n?.duration!==void 0&&(e.duration=n.duration),n?.pitch!==void 0&&(e.pitch=n.pitch),n?.bearing!==void 0&&(e.bearing=n.bearing),n?.essential!==void 0&&(e.essential=n.essential),r.flyTo(e);return}let f=[[a,s],[o,c]],p={padding:n?.padding??50,duration:n?.duration??1e3,bearing:n?.bearing??r.getBearing(),pitch:n?.pitch??r.getPitch()};t!==void 0&&(p.maxZoom=t),n?.essential!==void 0&&(p.essential=n.essential),r.fitBounds(f,p)},[]),dt=(0,c.useCallback)(e=>{let t=R.current;if(!t||!t.getContainer())return;let{showMarker:n=!0,markerColor:r=`#3388ff`}=f;if(!n){U.current&&=(U.current.remove(),null);return}if(U.current)U.current.setLngLat(e);else{let n=document.createElement(`div`);n.className=`mapbox-picker-marker`;let i=document.createElement(`div`);i.className=`marker-inner`,i.style.background=r,n.appendChild(i),U.current=new l.default.Marker({element:n,anchor:`bottom`}).setLngLat(e).addTo(t)}},[f]),ft=(0,c.useCallback)(()=>{U.current&&=(U.current.remove(),null)},[]),pt=(0,c.useCallback)(()=>`marker-${Date.now()}-${Math.random().toString(36).slice(2,11)}`,[]),mt=(0,c.useCallback)(e=>{let t=R.current;if(xe.current)if(et.current&&=(et.current.remove(),null),e&&t){t.getCanvas().style.cursor=`none`;let n=document.createElement(`div`);n.className=`mapbox-custom-cursor`;let r=e.size||e.width||32;n.style.cssText=`
51
+ `;b.current||=new l.default.Popup({closeButton:!1,closeOnClick:!1,offset:15,className:`road-highlight-popup`}),b.current.setLngLat(r).setHTML(g).addTo(e),e.getCanvas().style.cursor=`pointer`}else b.current&&b.current.remove(),e.getCanvas().style.cursor=``},[e,f,S]);(0,c.useEffect)(()=>{if(!(!e||!g))return e.on(`mousemove`,C),()=>{e.off(`mousemove`,C),b.current&&b.current.remove(),e.getCanvas().style.cursor=``}},[e,g,C]);let w=(e,t)=>{h(n=>t?[...n,e]:n.filter(t=>t!==e))},T=e=>{h(e?E.map(e=>e.class):[])},D=f.length>0;return(0,p.jsxs)(`div`,{className:`mapbox-road-highlight-control ${o}`,style:s,children:[(0,p.jsxs)(`button`,{ref:y,className:`mapbox-control-btn mapbox-road-highlight-control__btn ${D?`mapbox-road-highlight-control__btn--active`:``}`,onClick:()=>d(!u),title:`路网高亮${f.length>0?` (已选 ${f.length})`:``}`,children:[(0,p.jsx)(`img`,{src:B,alt:`road`,className:`mapbox-road-highlight-control__btn-icon`}),(0,p.jsxs)(`span`,{children:[`路网`,f.length>0?` (${f.length})`:``]})]}),u&&(0,p.jsxs)(`div`,{ref:v,className:`mapbox-road-highlight-control__panel`,children:[(0,p.jsxs)(`div`,{className:`mapbox-road-highlight-control__panel-header`,children:[(0,p.jsx)(`span`,{className:`mapbox-road-highlight-control__panel-title`,children:`道路类型`}),(0,p.jsx)(m.Checkbox,{checked:f.length===E.length,indeterminate:f.length>0&&f.length<E.length,onChange:T,style:{"--color-text-1":`#fff`,"--color-border-2":`rgba(255, 255, 255, 0.3)`},children:(0,p.jsx)(`span`,{className:`mapbox-road-highlight-control__type-label`,children:`全选`})})]}),(0,p.jsx)(`div`,{className:`mapbox-road-highlight-control__scroll`,children:(0,p.jsx)(`div`,{className:`mapbox-road-highlight-control__type-list`,children:E.map(e=>(0,p.jsxs)(`div`,{className:`mapbox-road-highlight-control__type-item`,onClick:()=>w(e.class,!f.includes(e.class)),children:[(0,p.jsx)(m.Checkbox,{checked:f.includes(e.class),onChange:t=>w(e.class,t),onClick:e=>e.stopPropagation(),style:{"--color-text-1":`#fff`,"--color-border-2":`rgba(255, 255, 255, 0.3)`,marginRight:0,flexShrink:0}}),(0,p.jsx)(`span`,{className:`mapbox-road-highlight-control__color-indicator`,style:{backgroundColor:e.color}}),(0,p.jsx)(`span`,{className:`mapbox-road-highlight-control__type-label`,children:e.label})]},e.class))})}),(0,p.jsx)(`div`,{className:`mapbox-road-highlight-control__tip`,children:`💡 选中道路类型后立即显示高亮`}),!g&&(0,p.jsx)(`div`,{className:`mapbox-road-highlight-control__warning`,children:`⚠️ 正在初始化图层...`})]})]})}var De=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1773733446763'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='1802'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128'%20height='128'%3e%3cpath%20d='M110.34624%20352.01024a30.72%2030.72%200%201%200%2061.44%200v-38.46144h680.42752v38.5024a30.72%2030.72%200%200%200%2061.44%200V213.72928a30.72%2030.72%200%200%200-61.44%200v38.33856H171.78624v-38.33856a30.72%2030.72%200%200%200-61.44%200v138.28096z%20m34.816%20127.22176a34.816%2034.816%200%200%200-34.816%2034.816v312.60672c0%2019.2512%2015.5648%2034.816%2034.816%2034.816h733.5936c19.2512%200%2034.816-15.5648%2034.816-34.816V514.048a34.816%2034.816%200%200%200-34.816-34.816H145.2032z%20m26.624%20320.79872V540.672h680.3456v259.35872H171.8272z'%20fill='white'%20p-id='1804'%3e%3c/path%3e%3c/svg%3e`,Oe=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3crect%20x='192'%20y='192'%20width='640'%20height='640'%20rx='32'%20ry='32'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e`,ke=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3crect%20x='160'%20y='240'%20width='704'%20height='544'%20rx='32'%20ry='32'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e`,Ae=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3ccircle%20cx='512'%20cy='512'%20r='384'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e`,je=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3cpolygon%20points='512,128%20864,384%20736,800%20288,800%20160,384'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'%20stroke-linejoin='round'/%3e%3c/svg%3e`,Me=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3cpolyline%20points='160,768%20384,256%20640,576%20864,192'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'%20stroke-linejoin='round'%20stroke-linecap='round'/%3e%3c/svg%3e`,Ne=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1769394652565'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='6483'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128'%20height='128'%3e%3cpath%20d='M841.385637%20288.639098a36.479886%2036.479886%200%200%201%2072.74644%207.679976l6.613312%20629.544699A109.866323%20109.866323%200%200%201%20810.665733%201023.9968H222.507571a109.652991%20109.652991%200%200%201-109.012992-98.133027l-3.626656-629.544699a36.479886%2036.479886%200%200%201%2072.74644-7.679976L186.241018%20917.330467a36.479886%2036.479886%200%200%200%2036.266553%2032.639898H810.665733A36.479886%2036.479886%200%200%200%20847.99895%20917.330467z%20m-219.732646%20113.706311a36.479886%2036.479886%200%200%201%2036.693218%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.479886-36.479886z%20m-219.305982%200a36.479886%2036.479886%200%200%201%2036.479886%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.693218-36.479886z%20m-36.693218-255.9992h292.692418V91.519714a18.346609%2018.346609%200%200%200-18.346609-18.346609H384.0004a18.346609%2018.346609%200%200%200-18.346609%2018.346609z%20m-73.173105%200V73.173105A73.173105%2073.173105%200%200%201%20365.653791%200h292.692418a73.386437%2073.386437%200%200%201%2073.173105%2073.173105v73.173104h255.9992a36.693219%2036.693219%200%200%201%200%2073.173105H36.481486a36.693219%2036.693219%200%200%201%200-73.173105z'%20fill='%23EB6865'%20p-id='6484'%3e%3c/path%3e%3c/svg%3e`,Pe={square:`正方形`,rectangle:`矩形`,circle:`圆形`,polygon:`多边形`,polyline:`折线`},Fe=[{mode:`square`,icon:Oe,label:`正方形`},{mode:`rectangle`,icon:ke,label:`矩形`},{mode:`circle`,icon:Ae,label:`圆形`},{mode:`polygon`,icon:je,label:`多边形`},{mode:`polyline`,icon:Me,label:`折线`}];function Ie(e,t){let[n,r]=e,[i,a]=t,o=(a-r)*Math.PI/180,s=(i-n)*Math.PI/180,c=Math.sin(o/2)*Math.sin(o/2)+Math.cos(r*Math.PI/180)*Math.cos(a*Math.PI/180)*Math.sin(s/2)*Math.sin(s/2);return 6371e3*(2*Math.atan2(Math.sqrt(c),Math.sqrt(1-c)))}function Le(e,t,n=64){let[r,i]=e,a=[],o=t/6371e3,s=i*Math.PI/180;for(let e=0;e<=n;e++){let t=e/n*2*Math.PI,c=o*Math.cos(t),l=o*Math.sin(t)/Math.cos(s);a.push([r+l*180/Math.PI,i+c*180/Math.PI])}return a}function Re(e,t){let[n,r]=e,i=t/2/6371e3,a=r*Math.PI/180,o=i*180/Math.PI,s=i*180/Math.PI/Math.cos(a);return[[n-s,r+o],[n+s,r+o],[n+s,r-o],[n-s,r-o],[n-s,r+o]]}function ze(e){if(e.type===`circle`)return A(Math.PI*e.radius*e.radius);if(e.type===`square`)return A(e.length*e.length);if(e.type===`rectangle`){let[[t,n],[r,i]]=e.bounds,a=[Math.min(t,r),Math.max(n,i)],o=[Math.max(t,r),Math.max(n,i)],s=[Math.max(t,r),Math.min(n,i)],c=O(a,o),l=O(o,s);return A(c*l)}if(e.type===`polygon`){let t=[...e.coordinates,e.coordinates[0]];return A(ee(t))}}function Be(e){if(e.type===`circle`)return j(e.radius);if(e.type===`square`)return j(e.length);if(e.type===`rectangle`){let[[t,n],[r,i]]=e.bounds,a=[Math.min(t,r),Math.max(n,i)],o=[Math.max(t,r),Math.max(n,i)],s=[Math.max(t,r),Math.min(n,i)],c=O(a,o),l=O(o,s);return j(2*(c+l))}if(e.type===`polygon`){let t=0,n=e.coordinates;for(let e=0;e<n.length;e++)t+=O(n[e],n[(e+1)%n.length]);return j(t)}if(e.type===`polyline`){let t=0;for(let n=0;n<e.coordinates.length-1;n++)t+=O(e.coordinates[n],e.coordinates[n+1]);return j(t)}}var H=`measure-`;function U(e,t){e.getSource(t)||e.addSource(t,{type:`geojson`,data:{type:`FeatureCollection`,features:[]}})}function W(e,t){let n=e.getSource(t);n&&n.setData({type:`FeatureCollection`,features:[]})}function Ve(e){if(!e.getStyle().glyphs){let t=e.style,n=`/gis-fonts/{fontstack}/{range}.pbf`;t.glyphs=n,t.stylesheet&&(t.stylesheet.glyphs=n)}}function G(e){Ve(e);for(let t of[`rect`,`circle`,`square`,`polygon`]){let n=`${H}${t}-preview-source`,r=`${H}${t}-preview-fill`,i=`${H}${t}-preview-line`,a=`${H}${t}-preview-measure-source`,o=`${H}${t}-preview-measure-label`;U(e,n),e.getLayer(r)||e.addLayer({id:r,type:`fill`,source:n,paint:{"fill-color":`#3388ff`,"fill-opacity":.1}}),e.getLayer(i)||e.addLayer({id:i,type:`line`,source:n,paint:{"line-color":`#3388ff`,"line-width":2,"line-dasharray":[4,4]}}),U(e,a),e.getLayer(o)||e.addLayer({id:o,type:`symbol`,source:a,filter:[`==`,`$type`,`Point`],layout:{"text-field":[`get`,`label`],"text-size":12,"text-font":[`Open Sans Bold`,`Arial Unicode MS Bold`],"text-allow-overlap":!0,"text-offset":[0,-.8]},paint:{"text-color":`#ffffff`,"text-halo-color":`rgba(0,0,0,0.8)`,"text-halo-width":1}})}let t=`${H}polyline-preview-source`,n=`${H}polyline-preview-line`,r=`${H}polyline-vertices-source`,i=`${H}polyline-vertices`,a=`${H}polyline-preview-measure-source`,o=`${H}polyline-preview-measure-label`;U(e,t),e.getLayer(n)||e.addLayer({id:n,type:`line`,source:t,paint:{"line-color":`#3388ff`,"line-width":2,"line-dasharray":[4,4]}}),U(e,r),e.getLayer(i)||e.addLayer({id:i,type:`circle`,source:r,paint:{"circle-radius":5,"circle-color":`#3388ff`,"circle-stroke-color":`#ffffff`,"circle-stroke-width":2}}),U(e,a),e.getLayer(o)||e.addLayer({id:o,type:`symbol`,source:a,filter:[`==`,`$type`,`Point`],layout:{"text-field":[`get`,`label`],"text-size":12,"text-font":[`Open Sans Bold`,`Arial Unicode MS Bold`],"text-allow-overlap":!0,"text-offset":[0,-.8]},paint:{"text-color":`#ffffff`,"text-halo-color":`rgba(0,0,0,0.8)`,"text-halo-width":1}});let s=`${H}polygon-vertices-source`,c=`${H}polygon-vertices`;U(e,s),e.getLayer(c)||e.addLayer({id:c,type:`circle`,source:s,paint:{"circle-radius":5,"circle-color":`#3388ff`,"circle-stroke-color":`#ffffff`,"circle-stroke-width":2}});let l=`${H}circle-radius-source`,u=`${H}circle-radius-line`;U(e,l),e.getLayer(u)||e.addLayer({id:u,type:`line`,source:l,paint:{"line-color":`#ffffff`,"line-width":1,"line-dasharray":[4,4]}})}function K(e){for(let t of[`rect-preview-source`,`rect-preview-measure-source`,`circle-preview-source`,`circle-preview-measure-source`,`circle-radius-source`,`square-preview-source`,`square-preview-measure-source`,`polygon-preview-source`,`polygon-preview-measure-source`,`polygon-vertices-source`,`polyline-preview-source`,`polyline-preview-measure-source`,`polyline-vertices-source`])W(e,`${H}${t}`)}function He({map:e,entityConfig:t,onEntityConfigChange:n,className:r=``,style:i}){let[a,o]=(0,c.useState)(!1),[s,l]=(0,c.useState)(null),[u,d]=(0,c.useState)({showArea:!0,showLength:!0,showRadius:!0}),f=t!==void 0,h=f?{showArea:t.showArea??!0,showLength:t.showLength??!0,showRadius:t.showRadius??!0}:u,[g,_]=(0,c.useState)([]),v=(0,c.useRef)(new Map),y=(0,c.useRef)(0),b=(0,c.useRef)(null),x=(0,c.useRef)(null),C=(0,c.useRef)(null),w=(0,c.useRef)(null),T=(0,c.useRef)(null),E=(0,c.useRef)([]),k=(0,c.useRef)([]),te=(0,c.useRef)(h);te.current=h;let ne=(0,c.useRef)(s);ne.current=s;let M=(0,c.useCallback)(()=>`measure-${++y.current}`,[]),re=(0,c.useRef)(!1),N=(0,c.useCallback)(()=>{!e||!e.isStyleLoaded()||(G(e),re.current=!0)},[e]);(0,c.useEffect)(()=>{if(!e)return;let t=()=>{G(e),re.current=!0};e.isStyleLoaded()?t():e.once(`load`,t);let n=()=>{re.current=!1};return e.on(`style.load`,n),()=>{e.off(`style.load`,n)}},[e]),(0,c.useEffect)(()=>{let e=e=>{b.current&&!b.current.contains(e.target)&&x.current&&!x.current.contains(e.target)&&o(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[]);let P=(0,c.useCallback)(t=>{if(!e)return;let n=S(t,te.current),r=null;if(n.type===`circle`?r=new de(e,n):n.type===`square`?r=new he(e,n):n.type===`rectangle`?r=new _e(e,n):n.type===`polygon`?r=new ce(e,n):n.type===`polyline`&&(r=new le(e,n)),r){v.current.set(n.id,r);let e={entity:n,shapeLabel:Pe[n.type]||n.type,area:ze(n),lengthOrRadius:Be(n)};_(t=>[...t,e])}},[e]),F=(0,c.useCallback)(e=>{let t=v.current.get(e);t&&(t.destroy(),v.current.delete(e)),_(t=>t.filter(t=>t.entity.id!==e))},[]),ie=(0,c.useCallback)(()=>{v.current.forEach(e=>e.destroy()),v.current.clear(),_([])},[]),I=(0,c.useCallback)(t=>{if(!e)return;let n=v.current.get(t);if(!n)return;let r=n.getBounds();e.fitBounds(r,{padding:80,maxZoom:18,duration:1e3})},[e]),ae=(0,c.useCallback)((e,t)=>{let r={...te.current,[e]:t};f?n?.({...r}):d(r),_(t=>t.map(t=>{let n={...t.entity};n[e]=void 0;let i=S(n,r),a=v.current.get(t.entity.id);return a&&a.update(i),{...t,entity:i}}))},[f,n]),oe=(0,c.useCallback)((t,n)=>{if(!e)return;let[r,i]=t,[a,o]=n,s=[[Math.min(r,a),Math.max(i,o)],[Math.max(r,a),Math.max(i,o)],[Math.max(r,a),Math.min(i,o)],[Math.min(r,a),Math.min(i,o)],[Math.min(r,a),Math.max(i,o)]],c=e.getSource(`${H}rect-preview-source`);c&&c.setData({type:`Feature`,geometry:{type:`Polygon`,coordinates:[s]},properties:{}});let l=e.getSource(`${H}rect-preview-measure-source`);if(l){let e=te.current,t=[],n=s[0],r=s[1],i=s[2];if(e?.showArea){let e=O(n,r),a=O(r,i);t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[(n[0]+i[0])/2,(n[1]+i[1])/2]},properties:{label:A(e*a)}})}e?.showLength&&(t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[(n[0]+r[0])/2,(n[1]+r[1])/2]},properties:{label:j(O(n,r))}}),t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[(r[0]+i[0])/2,(r[1]+i[1])/2]},properties:{label:j(O(r,i))}})),l.setData({type:`FeatureCollection`,features:t})}},[e]),se=(0,c.useCallback)((t,n)=>{if(!e)return;let r=Ie(t,n),i=Le(t,r),a=e.getSource(`${H}circle-preview-source`);a&&a.setData({type:`Feature`,geometry:{type:`Polygon`,coordinates:[i]},properties:{}});let o=te.current,s=[],c=[];if(o?.showArea&&s.push({type:`Feature`,geometry:{type:`Point`,coordinates:t},properties:{label:A(Math.PI*r*r)}}),o?.showRadius){let e=D(t,r,90),n=[(t[0]+e[0])/2,(t[1]+e[1])/2];c.push({type:`Feature`,geometry:{type:`LineString`,coordinates:[t,e]},properties:{}}),s.push({type:`Feature`,geometry:{type:`Point`,coordinates:n},properties:{label:j(r)}})}let l=e.getSource(`${H}circle-preview-measure-source`);l&&l.setData({type:`FeatureCollection`,features:s});let u=e.getSource(`${H}circle-radius-source`);u&&u.setData({type:`FeatureCollection`,features:c})},[e]),ue=(0,c.useCallback)((t,n)=>{if(!e)return;let r=Ie(t,n)*2,i=Re(t,r),a=e.getSource(`${H}square-preview-source`);a&&a.setData({type:`Feature`,geometry:{type:`Polygon`,coordinates:[i]},properties:{}});let o=e.getSource(`${H}square-preview-measure-source`);if(o){let e=te.current,n=[];if(e?.showArea&&n.push({type:`Feature`,geometry:{type:`Point`,coordinates:t},properties:{label:A(r*r)}}),e?.showLength){let e=[(i[1][0]+i[2][0])/2,(i[1][1]+i[2][1])/2];n.push({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{label:j(r)}})}o.setData({type:`FeatureCollection`,features:n})}},[e]),L=(0,c.useCallback)((t,n)=>{if(!e)return;let r=[...t,n],i=e.getSource(`${H}polygon-preview-source`);i&&(r.length>=3?i.setData({type:`Feature`,geometry:{type:`Polygon`,coordinates:[[...r,r[0]]]},properties:{}}):r.length===2?i.setData({type:`Feature`,geometry:{type:`LineString`,coordinates:r},properties:{}}):i.setData({type:`FeatureCollection`,features:[]}));let a=e.getSource(`${H}polygon-vertices-source`);a&&a.setData({type:`FeatureCollection`,features:t.map(e=>({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{}}))});let o=e.getSource(`${H}polygon-preview-measure-source`);if(o){let e=te.current,t=[];if(e?.showArea&&r.length>=3){let e=ee([...r,r[0]]),n=0,i=0;for(let e of r)n+=e[0],i+=e[1];n/=r.length,i/=r.length,t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[n,i]},properties:{label:A(e)}})}if(e?.showLength&&r.length>=2){for(let e=0;e<r.length-1;e++){let n=r[e],i=r[e+1];t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[(n[0]+i[0])/2,(n[1]+i[1])/2]},properties:{label:j(O(n,i))}})}if(r.length>=3){let e=r[r.length-1],n=r[0];t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[(e[0]+n[0])/2,(e[1]+n[1])/2]},properties:{label:j(O(e,n))}})}}o.setData({type:`FeatureCollection`,features:t})}},[e]),fe=(0,c.useCallback)((t,n)=>{if(!e)return;let r=[...t,n],i=e.getSource(`${H}polyline-preview-source`);i&&(r.length>=2?i.setData({type:`Feature`,geometry:{type:`LineString`,coordinates:r},properties:{}}):i.setData({type:`FeatureCollection`,features:[]}));let a=e.getSource(`${H}polyline-vertices-source`);a&&a.setData({type:`FeatureCollection`,features:t.map(e=>({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{}}))});let o=e.getSource(`${H}polyline-preview-measure-source`);if(o){let e=te.current,t=[];if(e?.showLength&&r.length>=2)for(let e=0;e<r.length-1;e++){let n=r[e],i=r[e+1];t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[(n[0]+i[0])/2,(n[1]+i[1])/2]},properties:{label:j(O(n,i))}})}o.setData({type:`FeatureCollection`,features:t})}},[e]);(0,c.useEffect)(()=>{if(!e||!s)return;N(),e.getCanvas().style.cursor=`crosshair`;let t=t=>{let n=[t.lngLat.lng,t.lngLat.lat],r=ne.current;if(r===`rectangle`){let t=C.current;if(!t)C.current=n;else{let r={id:M(),type:`rectangle`,bounds:[t,n]};P(r),C.current=null,K(e),l(null)}}else if(r===`circle`){let t=w.current;if(!t)w.current={center:n};else{let r=Ie(t.center,n),i={id:M(),type:`circle`,center:t.center,radius:r};P(i),w.current=null,K(e),l(null)}}else if(r===`square`){let t=T.current;if(!t)T.current={center:n};else{let r=Ie(t.center,n)*2,i={id:M(),type:`square`,center:t.center,length:r};P(i),T.current=null,K(e),l(null)}}else if(r===`polygon`){let t=E.current;if(t.length>=3&&Ie(t[0],n)<20){let n={id:M(),type:`polygon`,coordinates:[...t]};P(n),E.current=[],K(e),l(null);return}E.current=[...t,n]}else r===`polyline`&&(k.current=[...k.current,n])},n=e=>{let t=[e.lngLat.lng,e.lngLat.lat],n=ne.current;if(n===`rectangle`&&C.current)oe(C.current,t);else if(n===`circle`&&w.current)se(w.current.center,t);else if(n===`square`&&T.current)ue(T.current.center,t);else if(n===`polygon`){let e=E.current;e.length>0&&L(e,t)}else if(n===`polyline`){let e=k.current;e.length>0&&fe(e,t)}},r=t=>{t.preventDefault();let n=ne.current;if(n===`polygon`){let t=E.current;if(t.length>=3){let n={id:M(),type:`polygon`,coordinates:[...t]};P(n),E.current=[],K(e),l(null)}else E.current=[],K(e)}else if(n===`polyline`){let t=k.current;if(t.length>=2){let n={id:M(),type:`polyline`,coordinates:[...t]};P(n),k.current=[],K(e),l(null)}else k.current=[],K(e)}},i=t=>{t.key===`Escape`&&(C.current=null,w.current=null,T.current=null,E.current=[],k.current=[],K(e),l(null))},a=t=>{t.preventDefault();let n=ne.current;if(n===`polygon`){let t=E.current;if(t.length>=3){let n={id:M(),type:`polygon`,coordinates:[...t]};P(n),E.current=[],K(e),l(null)}}else if(n===`polyline`){let t=k.current;if(t.length>=2){let n={id:M(),type:`polyline`,coordinates:[...t]};P(n),k.current=[],K(e),l(null)}}};return e.doubleClickZoom.disable(),e.on(`click`,t),e.on(`mousemove`,n),e.on(`contextmenu`,r),e.on(`dblclick`,a),document.addEventListener(`keydown`,i),()=>{e.off(`click`,t),e.off(`mousemove`,n),e.off(`contextmenu`,r),e.off(`dblclick`,a),document.removeEventListener(`keydown`,i),e.getCanvas().style.cursor=``,e.doubleClickZoom.enable(),K(e)}},[e,s,M,P,N,oe,se,ue,L,fe]),(0,c.useEffect)(()=>()=>{v.current.forEach(e=>e.destroy()),v.current.clear()},[]);let pe=(0,c.useCallback)(t=>{l(e=>e===t?null:t),C.current=null,w.current=null,T.current=null,E.current=[],k.current=[],e&&K(e)},[e]);return e?(0,p.jsxs)(`div`,{className:`mapbox-measure-control ${r}`,style:i,children:[(0,p.jsxs)(`button`,{ref:x,className:`mapbox-control-btn mapbox-measure-control__btn ${a?`mapbox-measure-control__btn--active`:``}`,onClick:()=>o(!a),title:`测量`,children:[(0,p.jsx)(`img`,{src:De,alt:`measure`,className:`mapbox-measure-control__btn-icon`}),(0,p.jsx)(`span`,{children:`测量`}),g.length>0&&(0,p.jsxs)(`span`,{children:[`(`,g.length,`)`]})]}),a&&(0,p.jsxs)(`div`,{ref:b,className:`mapbox-measure-control__panel`,children:[(0,p.jsx)(`div`,{className:`mapbox-measure-control__section-title`,children:`显示设置`}),(0,p.jsxs)(`div`,{className:`mapbox-measure-control__settings`,children:[(0,p.jsx)(m.Checkbox,{checked:h.showArea,onChange:e=>ae(`showArea`,e),children:`面积`}),(0,p.jsx)(m.Checkbox,{checked:h.showLength,onChange:e=>ae(`showLength`,e),children:`长度`}),(0,p.jsx)(m.Checkbox,{checked:h.showRadius,onChange:e=>ae(`showRadius`,e),children:`半径`})]}),(0,p.jsx)(`div`,{className:`mapbox-measure-control__section-title`,children:`绘制工具`}),(0,p.jsxs)(`div`,{className:`mapbox-measure-control__tools`,children:[Fe.map(e=>(0,p.jsx)(`button`,{className:`mapbox-measure-control__tool-btn ${s===e.mode?`mapbox-measure-control__tool-btn--active`:``}`,onClick:()=>pe(e.mode),title:e.label,children:(0,p.jsx)(`img`,{src:e.icon,alt:e.label})},e.mode)),g.length>0&&(0,p.jsx)(`button`,{className:`mapbox-measure-control__tool-btn mapbox-measure-control__tool-btn--danger`,onClick:ie,title:`清除全部`,children:(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1769394652565'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='6483'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128'%20height='128'%3e%3cpath%20d='M841.385637%20288.639098a36.479886%2036.479886%200%200%201%2072.74644%207.679976l6.613312%20629.544699A109.866323%20109.866323%200%200%201%20810.665733%201023.9968H222.507571a109.652991%20109.652991%200%200%201-109.012992-98.133027l-3.626656-629.544699a36.479886%2036.479886%200%200%201%2072.74644-7.679976L186.241018%20917.330467a36.479886%2036.479886%200%200%200%2036.266553%2032.639898H810.665733A36.479886%2036.479886%200%200%200%20847.99895%20917.330467z%20m-219.732646%20113.706311a36.479886%2036.479886%200%200%201%2036.693218%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.479886-36.479886z%20m-219.305982%200a36.479886%2036.479886%200%200%201%2036.479886%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.693218-36.479886z%20m-36.693218-255.9992h292.692418V91.519714a18.346609%2018.346609%200%200%200-18.346609-18.346609H384.0004a18.346609%2018.346609%200%200%200-18.346609%2018.346609z%20m-73.173105%200V73.173105A73.173105%2073.173105%200%200%201%20365.653791%200h292.692418a73.386437%2073.386437%200%200%201%2073.173105%2073.173105v73.173104h255.9992a36.693219%2036.693219%200%200%201%200%2073.173105H36.481486a36.693219%2036.693219%200%200%201%200-73.173105z'%20fill='%23EB6865'%20p-id='6484'%3e%3c/path%3e%3c/svg%3e`,alt:`clear`})})]}),g.length>0?(0,p.jsx)(`div`,{className:`mapbox-measure-control__list`,children:(0,p.jsxs)(`table`,{className:`mapbox-measure-control__table`,children:[(0,p.jsx)(`thead`,{children:(0,p.jsxs)(`tr`,{children:[(0,p.jsx)(`th`,{children:`类型`}),(0,p.jsx)(`th`,{children:`ID`}),(0,p.jsx)(`th`,{children:`面积`}),(0,p.jsx)(`th`,{children:`长度/半径`}),(0,p.jsx)(`th`,{})]})}),(0,p.jsx)(`tbody`,{children:g.map(e=>(0,p.jsxs)(`tr`,{className:`mapbox-measure-control__table-row`,onClick:()=>I(e.entity.id),children:[(0,p.jsx)(`td`,{children:e.shapeLabel}),(0,p.jsx)(`td`,{children:String(e.entity.id)}),(0,p.jsx)(`td`,{children:e.area??`-`}),(0,p.jsx)(`td`,{children:e.lengthOrRadius??`-`}),(0,p.jsx)(`td`,{children:(0,p.jsx)(`button`,{className:`mapbox-measure-control__delete-btn`,onClick:t=>{t.stopPropagation(),F(e.entity.id)},title:`删除`,children:(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1769394652565'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='6483'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128'%20height='128'%3e%3cpath%20d='M841.385637%20288.639098a36.479886%2036.479886%200%200%201%2072.74644%207.679976l6.613312%20629.544699A109.866323%20109.866323%200%200%201%20810.665733%201023.9968H222.507571a109.652991%20109.652991%200%200%201-109.012992-98.133027l-3.626656-629.544699a36.479886%2036.479886%200%200%201%2072.74644-7.679976L186.241018%20917.330467a36.479886%2036.479886%200%200%200%2036.266553%2032.639898H810.665733A36.479886%2036.479886%200%200%200%20847.99895%20917.330467z%20m-219.732646%20113.706311a36.479886%2036.479886%200%200%201%2036.693218%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.479886-36.479886z%20m-219.305982%200a36.479886%2036.479886%200%200%201%2036.479886%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.693218-36.479886z%20m-36.693218-255.9992h292.692418V91.519714a18.346609%2018.346609%200%200%200-18.346609-18.346609H384.0004a18.346609%2018.346609%200%200%200-18.346609%2018.346609z%20m-73.173105%200V73.173105A73.173105%2073.173105%200%200%201%20365.653791%200h292.692418a73.386437%2073.386437%200%200%201%2073.173105%2073.173105v73.173104h255.9992a36.693219%2036.693219%200%200%201%200%2073.173105H36.481486a36.693219%2036.693219%200%200%201%200-73.173105z'%20fill='%23EB6865'%20p-id='6484'%3e%3c/path%3e%3c/svg%3e`,alt:`delete`})})})]},String(e.entity.id)))})]})}):(0,p.jsx)(`div`,{className:`mapbox-measure-control__empty`,children:`选择工具后在地图上点击绘制`})]})]}):null}var Ue=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1773803353422'%20class='icon'%20viewBox='0%200%201028%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='6757'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128.5'%20height='128'%3e%3cpath%20d='M835.073959%20357.94044V345.56192a345.170251%20345.170251%200%201%200-686.690426%2049.672777A345.090902%20345.090902%200%200%200%20523.706588%20974.009826a345.090902%20345.090902%200%201%200%20311.049973-616.069386zM490.141757%2048.001359a297.877959%20297.877959%200%200%201%20297.560561%20297.560561c0%207.934948%200%2016.345994-1.031543%2025.074437A297.639911%20297.639911%200%200%201%20490.141757%20643.122482h-15.869897a289.943011%20289.943011%200%200%201-104.106522-24.757039A297.481212%20297.481212%200%200%201%20490.141757%2048.001359zM345.170251%20976.39031a297.560561%20297.560561%200%200%201-185.281043-530.371944c0%201.031543%200.714145%202.142436%201.031544%203.253328s1.50764%204.522921%202.301135%206.824056c1.269592%203.888125%202.697882%207.934948%204.126173%2011.743724%200.952194%202.301135%201.825038%204.60227%202.697882%206.903405%201.58699%203.808775%203.253329%207.934948%204.919668%2011.505675%200.952194%202.142436%201.904388%204.284872%202.935931%206.347958%201.983737%204.284872%204.126173%208.490395%206.268609%2012.695918l2.380485%204.60227c3.01528%205.633813%206.268609%2011.108928%209.601287%2016.504692%200.793495%201.428291%201.745689%202.777232%202.618533%204.126173%202.539183%204.046824%205.157716%207.934948%207.934948%2011.981772l4.205523%205.792512c2.380484%203.253329%204.760969%206.506658%207.220803%209.680637l4.840318%206.030561c2.459834%203.01528%204.999017%205.951211%207.538201%208.887142l5.157717%205.792512c2.777232%203.01528%205.633813%205.951211%208.569744%208.887142l4.840318%204.999018c4.205523%204.046824%208.411045%207.934948%2012.775267%2011.823073l3.09463%202.618533c4.205523%203.650076%208.490395%207.220803%2012.854616%2010.63283l5.713163%204.205523c3.332678%202.459834%206.586007%204.919668%209.998035%207.220803l6.506657%204.364222q4.999017%203.332678%209.998035%206.427308c2.221786%201.348941%204.443571%202.697882%206.744706%203.967474%203.570727%202.142436%207.300152%204.126173%2010.950229%206.10991l6.18926%203.253329%202.301135%201.269592v12.378519c0%207.379502%200%2014.759004%200.793494%2021.979807%200%202.459834%200.396747%204.840318%200.634796%207.220803%200%204.840318%200.793495%209.759986%201.428291%2014.600305%200%202.777232%200.872844%205.554464%201.269592%208.411045%200.714145%204.364222%201.428291%208.728443%202.221785%2013.013315%200.555446%202.935931%201.190242%205.871862%201.825038%208.728443%200.952194%204.205523%201.904388%207.934948%203.015281%2012.457869s1.50764%205.871862%202.380484%208.728443%202.380484%207.934948%203.729426%2012.140471c0.952194%202.856581%201.825038%205.633813%202.856581%208.490395%201.428291%204.046824%203.01528%207.934948%204.60227%2012.061121%201.110893%202.618533%202.142436%205.316415%203.253329%207.934948%201.825038%204.284872%203.729426%208.411045%205.713163%2012.537219%201.110893%202.301135%202.142436%204.681619%203.332678%206.903405%202.618533%205.316415%205.475114%2010.474132%208.411045%2015.869896%200.555446%201.110893%201.110893%202.221786%201.745689%203.332679%203.570727%206.10991%207.379502%2012.061121%2011.346976%2018.012332%201.269592%201.904388%202.697882%203.808775%204.046824%205.713163%202.777232%203.967474%205.475114%207.934948%208.411045%2011.664374%201.745689%202.301135%203.570727%204.443571%205.395765%206.744706s5.316415%206.586007%207.934948%209.839336%204.046824%204.60227%206.10991%206.824056%205.633813%206.030561%208.490395%209.045841l6.744706%206.586007c2.935931%202.856581%205.871862%205.633813%208.966492%207.934948s4.681619%204.205523%207.062104%206.268609%206.427308%205.316415%209.759986%207.934948%204.760969%203.888125%207.300152%205.713163l2.380485%201.904388A295.894222%20295.894222%200%200%201%20345.170251%20976.39031z%20m335.965711-11.981772a296.608368%20296.608368%200%200%201-146.479145-38.563848c-5.792512-3.332678-11.426326-6.744706-16.90144-10.315433-1.825038-1.190242-3.491377-2.539183-5.237066-3.729426-3.650076-2.459834-7.300152-4.999017-10.79153-7.934948-2.063087-1.50764-3.967474-3.173979-5.871862-4.760969-3.173979-2.459834-6.268609-4.919668-9.283889-7.934949s-3.967474-3.650076-5.951211-5.475114-5.633813-5.078367-7.934949-7.934948-3.808775-4.046824-5.792512-6.10991-5.078367-5.157716-7.458851-7.934949l-5.554464-6.506657c-1.825038-2.142436-4.60227-5.475114-6.824056-7.934949s-3.412028-4.681619-5.157716-7.062104-4.205523-5.633813-6.10991-8.490394-3.253329-4.999017-4.840319-7.458852-3.729426-5.792512-5.475114-8.807792-2.935931-5.157716-4.364222-7.934949-3.332678-6.030561-4.919668-9.045841-2.539183-5.395765-3.808775-7.934948-2.935931-6.18926-4.284872-9.363239-2.301135-5.554464-3.412028-8.411045-2.459834-6.268609-3.570726-9.521938-1.983737-5.792512-2.856582-8.649094-2.063087-6.506658-3.01528-9.759986-1.58699-5.951211-2.301135-8.887142-1.666339-6.586007-2.380485-9.918686S388.812467%20722.471965%20388.812467%20719.536034s-1.190242-6.665357-1.666339-9.998035-0.793495-6.18926-1.110893-9.28389-0.793495-6.824056-1.031543-10.236083%200-6.268609-0.555447-9.363239v-6.665357h0.396748l2.142436%200.634796c4.364222%201.428291%208.807793%202.697882%2013.251363%203.967474l4.840319%201.269592%2011.505675%202.697883%204.52292%201.031543c5.237066%201.031543%2010.474132%201.983737%2015.869897%202.856581h1.348941c4.840318%200.793495%209.759986%201.348941%2014.600305%201.904388l4.919668%200.476097q5.951211%200.634796%2011.902422%200.952194H490.855902a344.456106%20344.456106%200%200%200%20183.138607-52.529358c5.395765-3.412028%2010.71218-7.062104%2015.869896-10.71218%201.745689-1.190242%203.332678-2.539183%205.078367-3.729426%203.412028-2.539183%206.903405-5.157716%2010.236084-7.934948l5.713162-4.760969c3.01528-2.459834%206.030561-4.999017%208.966492-7.934949l5.633813-5.237066c2.856581-2.618533%205.554464-5.237066%207.934949-7.934948l5.475114-5.633813c2.618533-2.697882%205.237066-5.475114%207.934948-8.331696l5.078367-5.713163%207.458851-9.045841%204.522921-5.633813%207.934948-10.315433%203.570727-4.999017c3.173979-4.60227%206.268609-9.363239%209.20454-14.203558l1.031543-1.586989c3.332678-5.475114%206.506658-11.029578%209.601288-16.663392%200.634796-1.190242%201.190242-2.380484%201.745688-3.570727%202.301135-4.443571%204.60227-8.887142%206.665357-13.410062%200.872844-1.825038%201.666339-3.729426%202.539183-5.554464%201.745689-3.967474%203.491377-7.934948%205.078367-11.902422%200.793495-2.063087%201.58699-4.205523%202.459834-6.347959%201.428291-3.808775%202.856581-7.934948%204.126173-11.505675%200.793495-2.221786%201.50764-4.522921%202.221786-6.744706%201.190242-3.808775%202.380484-7.934948%203.491377-11.585025%200.634796-2.301135%201.269592-4.60227%201.825038-6.903405%201.031543-3.967474%201.904388-7.934948%202.777232-11.902422%200.555446-2.301135%201.031543-4.522921%201.50764-6.824056%200-1.031543%200.476097-2.142436%200.634796-3.173979a297.560561%20297.560561%200%200%201-148.304183%20555.446381z'%20fill='%23ffffff'%20p-id='6758'%3e%3c/path%3e%3c/svg%3e`,q={brightness:1,saturation:0,contrast:0,hueRotate:0},J=[{key:`brightness`,label:`亮度`,min:0,max:1,step:.01},{key:`saturation`,label:`饱和度`,min:-1,max:1,step:.01},{key:`contrast`,label:`对比度`,min:-1,max:1,step:.01},{key:`hueRotate`,label:`色相`,min:0,max:360,step:1}];function We({map:e,value:t,onChange:n,rasterPaintLayerIds:r=[],className:i,style:a}){let[o,s]=(0,c.useState)(!1),[l,u]=(0,c.useState)({...q}),d=(0,c.useRef)(null),f=(0,c.useRef)(null),h=t!==void 0;(0,c.useEffect)(()=>{let e=e=>{d.current&&!d.current.contains(e.target)&&f.current&&!f.current.contains(e.target)&&s(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[]);let g=(0,c.useMemo)(()=>h?{brightness:t.brightness??q.brightness,saturation:t.saturation??q.saturation,contrast:t.contrast??q.contrast,hueRotate:t.hueRotate??q.hueRotate}:l,[h,t,l]),_=(0,c.useRef)(h);(0,c.useEffect)(()=>{h&&!_.current&&u({...g}),_.current=h},[h,g]);let v=(0,c.useCallback)(t=>{if(!(!e||r.length===0))for(let n of r)e.getLayer(n)&&(e.setPaintProperty(n,`raster-brightness-min`,0),e.setPaintProperty(n,`raster-brightness-max`,t.brightness),e.setPaintProperty(n,`raster-saturation`,t.saturation),e.setPaintProperty(n,`raster-contrast`,t.contrast),e.setPaintProperty(n,`raster-hue-rotate`,t.hueRotate))},[e,r]),y=(0,c.useCallback)((e,t)=>{if(h)n?.({...g,[e]:t});else{let n={...l,[e]:t};u(n),v(n)}},[h,n,g,l,v]),b=(0,c.useCallback)(()=>{h?n?.({...q}):(u({...q}),v({...q}))},[h,n,v]);(0,c.useEffect)(()=>{!h&&r.length>0&&v(l)},[r,h,v,l]);let x=(e,t)=>e===`hueRotate`?`${Math.round(t)}°`:t.toFixed(2);return(0,p.jsxs)(`div`,{className:`mapbox-raster-paint-control${i?` ${i}`:``}`,style:a,children:[(0,p.jsxs)(`button`,{ref:f,className:`mapbox-control-btn mapbox-raster-paint-control__btn${o?` mapbox-raster-paint-control__btn--active`:``}`,onClick:()=>s(!o),title:`栅格渲染调节`,children:[(0,p.jsx)(`img`,{className:`mapbox-control-btn__icon mapbox-raster-paint-control__btn-icon`,src:Ue,alt:`raster paint`}),(0,p.jsx)(`span`,{children:`渲染`})]}),o&&(0,p.jsxs)(`div`,{ref:d,className:`mapbox-raster-paint-control__panel`,children:[J.map(({key:e,label:t,min:n,max:r,step:i})=>(0,p.jsxs)(`div`,{className:`mapbox-raster-paint-control__slider-row`,children:[(0,p.jsx)(`span`,{className:`mapbox-raster-paint-control__label`,children:t}),(0,p.jsx)(m.Slider,{className:`mapbox-raster-paint-control__slider`,min:n,max:r,step:i,value:g[e],onChange:t=>y(e,t),tooltipVisible:!1}),(0,p.jsx)(`span`,{className:`mapbox-raster-paint-control__value`,children:x(e,g[e])})]},e)),(0,p.jsx)(`button`,{className:`mapbox-raster-paint-control__reset`,onClick:b,children:`重置`})]})]})}var Ge=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1769397418113'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='10253'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128'%20height='128'%3e%3cpath%20d='M755.4048%20217.2928A348.3648%20348.3648%200%200%200%20512%20119.3472a348.3136%20348.3136%200%200%200-243.3536%2097.8944%20328.4992%20328.4992%200%200%200-100.864%20236.3392c0%2049.408%2011.7248%2095.744%2032%20137.728a378.0096%20378.0096%200%200%200%2091.136%20118.4256l203.5712%20179.456%2017.5104%2015.4624%2017.5104-15.4624%20203.4176-179.3536a378.6752%20378.6752%200%200%200%2091.2384-118.4768c20.2752-41.984%2032.0512-88.32%2032.0512-137.7792a328.448%20328.448%200%200%200-100.8128-236.288z%20m24.1152%20353.3824a329.216%20329.216%200%200%201-79.872%20103.0656l-188.0064%20164.6592-187.1872-164.7616a329.0624%20329.0624%200%200%201-79.7696-103.0144%20267.0592%20267.0592%200%200%201-27.136-117.0944c0-78.7968%2032.9728-150.1184%2086.272-201.728a298.3936%20298.3936%200%200%201%20208.2816-83.5584c81.3056%200%20154.9824%2031.9488%20208.2304%2083.6096a279.9104%20279.9104%200%200%201%2086.272%20201.728%20266.496%20266.496%200%200%201-27.0848%20117.0944z%20m-164.1472-212.1728l0.0512-0.0512a146.9952%20146.9952%200%200%200-104.2432-43.2128c-40.6528%200-77.568%2016.5376-104.2432%2043.2128l0.0512%200.0512a147.3536%20147.3536%200%200%200-0.0512%20208.6912%20147.0464%20147.0464%200%200%200%20208.4864%200%20147.5072%20147.5072%200%200%200-0.0512-208.6912z%20m-34.1504%20174.2336a97.536%2097.536%200%200%201-69.2736%2028.7232%2097.6384%2097.6384%200%200%201-69.3248-28.7232%2097.792%2097.792%200%200%201-0.1536-138.4448h0.1024a97.9456%2097.9456%200%200%201%20138.5984%200h0.1536c17.664%2017.6128%2028.5696%2042.1376%2028.5696%2069.2224a97.1776%2097.1776%200%200%201-28.672%2069.2224z'%20fill='%23ffffff'%20p-id='10254'%3e%3c/path%3e%3c/svg%3e`;const Ke=({markerTemplates:e,selectedTemplate:t,onTemplateSelect:n,drawMode:r,onDrawModeChange:i,showRectangleTool:a=!1,showCircleTool:o=!1,showPolygonTool:s=!1,showSquareTool:l=!1,showPolylineTool:u=!1})=>{let[d,f]=(0,c.useState)(!1),m=(0,c.useRef)(null);(0,c.useEffect)(()=>{let e=e=>{m.current&&!m.current.contains(e.target)&&f(!1)};if(d)return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[d]);let h=e=>{t?.id===e.id?(n(null),i(null)):(n(e),i(`marker`)),f(!1)},g=()=>{r===`rectangle`?i(null):(n(null),i(`rectangle`))},_=()=>{r===`circle`?i(null):(n(null),i(`circle`))},v=()=>{r===`polygon`?i(null):(n(null),i(`polygon`))},y=()=>{r===`square`?i(null):(n(null),i(`square`))},b=()=>{r===`polyline`?i(null):(n(null),i(`polyline`))},x=()=>{(r===`rectangle`||r===`circle`||r===`polygon`||r===`square`||r===`polyline`)&&i(null),f(!d)},S=e=>e.size?{width:e.size,height:e.size}:{width:e.width||32,height:e.height||32},C=d||t,w=r===`rectangle`,T=r===`circle`,E=r===`polygon`,D=r===`square`,O=r===`polyline`;return(0,p.jsxs)(`div`,{ref:m,className:`mapbox-edit-control`,children:[(0,p.jsxs)(`div`,{className:`mapbox-edit-control__btn-group`,children:[(0,p.jsxs)(`button`,{className:`mapbox-control-btn ${C?`mapbox-control-btn--active`:``}`,onClick:x,title:`Marker`,children:[t?(0,p.jsx)(`img`,{src:t.icon,alt:t.name,className:`mapbox-edit-control__btn-icon`}):(0,p.jsx)(`img`,{src:Ge,alt:`marker`,className:`mapbox-edit-control__btn-icon mapbox-edit-control__btn-icon--lg`}),(0,p.jsx)(`span`,{children:t?t.name:`Marker`})]}),l&&(0,p.jsxs)(`button`,{className:`mapbox-control-btn ${D?`mapbox-control-btn--active`:``}`,onClick:y,title:`绘制正方形`,children:[(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3crect%20x='192'%20y='192'%20width='640'%20height='640'%20rx='32'%20ry='32'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e`,alt:`square`,className:`mapbox-edit-control__btn-icon mapbox-edit-control__btn-icon--lg`}),(0,p.jsx)(`span`,{children:`正方形`})]}),a&&(0,p.jsxs)(`button`,{className:`mapbox-control-btn ${w?`mapbox-control-btn--active`:``}`,onClick:g,title:`绘制矩形`,children:[(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3crect%20x='160'%20y='240'%20width='704'%20height='544'%20rx='32'%20ry='32'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e`,alt:`rectangle`,className:`mapbox-edit-control__btn-icon mapbox-edit-control__btn-icon--lg`}),(0,p.jsx)(`span`,{children:`矩形`})]}),o&&(0,p.jsxs)(`button`,{className:`mapbox-control-btn ${T?`mapbox-control-btn--active`:``}`,onClick:_,title:`绘制圆形`,children:[(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3ccircle%20cx='512'%20cy='512'%20r='384'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e`,alt:`circle`,className:`mapbox-edit-control__btn-icon mapbox-edit-control__btn-icon--lg`}),(0,p.jsx)(`span`,{children:`圆形`})]}),s&&(0,p.jsxs)(`button`,{className:`mapbox-control-btn ${E?`mapbox-control-btn--active`:``}`,onClick:v,title:`绘制多边形`,children:[(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3cpolygon%20points='512,128%20864,384%20736,800%20288,800%20160,384'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'%20stroke-linejoin='round'/%3e%3c/svg%3e`,alt:`polygon`,className:`mapbox-edit-control__btn-icon mapbox-edit-control__btn-icon--lg`}),(0,p.jsx)(`span`,{children:`多边形`})]}),u&&(0,p.jsxs)(`button`,{className:`mapbox-control-btn ${O?`mapbox-control-btn--active`:``}`,onClick:b,title:`绘制折线`,children:[(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3cpolyline%20points='160,768%20384,256%20640,576%20864,192'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'%20stroke-linejoin='round'%20stroke-linecap='round'/%3e%3c/svg%3e`,alt:`polyline`,className:`mapbox-edit-control__btn-icon mapbox-edit-control__btn-icon--lg`}),(0,p.jsx)(`span`,{children:`折线`})]})]}),d&&(0,p.jsxs)(`div`,{className:`mapbox-edit-control__panel`,children:[(0,p.jsx)(`div`,{className:`mapbox-edit-control__panel-header`,children:`选择 Marker`}),(0,p.jsx)(`div`,{className:`mapbox-edit-control__template-list`,children:e.map(e=>{let n=S(e),r=t?.id===e.id;return(0,p.jsxs)(`div`,{className:`mapbox-edit-control__template-item ${r?`mapbox-edit-control__template-item--selected`:``}`,onClick:()=>h(e),title:e.name,children:[(0,p.jsx)(`img`,{src:e.icon,alt:e.name,className:`mapbox-edit-control__template-icon`,style:{width:Math.min(n.width,24),height:Math.min(n.height,24)}}),(0,p.jsx)(`span`,{className:`mapbox-edit-control__template-name`,children:e.name})]},e.id)})})]})]})},qe=({menuState:e,onClose:t,portalContainer:n,menuRef:r})=>{let i=(0,c.useRef)(null);(0,c.useEffect)(()=>(r&&(r.current=i.current),()=>{r&&(r.current=null)}));let a=(0,c.useCallback)(e=>{i.current&&!i.current.contains(e.target)&&t()},[t]),o=(0,c.useCallback)(e=>{e.key===`Escape`&&t()},[t]);(0,c.useEffect)(()=>{let e=setTimeout(()=>{document.addEventListener(`click`,a,!0),document.addEventListener(`contextmenu`,a,!0)},0);return document.addEventListener(`keydown`,o),()=>{clearTimeout(e),document.removeEventListener(`click`,a,!0),document.removeEventListener(`contextmenu`,a,!0),document.removeEventListener(`keydown`,o)}},[a,o]);let s={...e.position};if(i.current){let e=i.current.getBoundingClientRect();s.x+e.width>window.innerWidth&&(s.x=window.innerWidth-e.width-10),s.y+e.height>window.innerHeight&&(s.y=window.innerHeight-e.height-10)}let l=(0,p.jsx)(`div`,{ref:i,className:`context-menu`,style:{position:`fixed`,left:`${s.x}px`,top:`${s.y}px`,pointerEvents:`all`},children:e.items.map(e=>(0,p.jsxs)(`div`,{className:`context-menu__item ${e.danger?`context-menu__item--danger`:``}`,onClick:()=>{e.onClick(),t()},children:[e.icon&&(0,p.jsx)(`span`,{className:`context-menu__item-icon`,children:e.icon}),(0,p.jsx)(`span`,{className:`context-menu__item-label`,children:e.label})]},e.key))});return(0,f.createPortal)(l,n)};function Je(e,t,n){return{content:e.content??n??null,trigger:e.trigger??t?.trigger??T.trigger,position:e.position??t?.position??T.position,offset:e.offset??t?.offset??T.offset,showCloseButton:e.showCloseButton??t?.showCloseButton??T.showCloseButton,animation:e.animation??t?.animation??T.animation,className:e.className??``,style:e.style??{},closeOnClickOutside:e.closeOnClickOutside??t?.closeOnClickOutside??T.closeOnClickOutside,closeOnEscape:e.closeOnEscape??t?.closeOnEscape??T.closeOnEscape,hoverDelay:e.hoverDelay??t?.hoverDelay??T.hoverDelay,maxWidth:e.maxWidth??t?.maxWidth??T.maxWidth,zIndex:e.zIndex??t?.zIndex??T.zIndex}}function Ye(e,t,n,r,i){let a,o;if(e.type===`polygon`)o=e.center??Y(e.coordinates);else if(e.type===`polyline`)o=e.center??Xe(e.coordinates);else if(e.type===`rectangle`)if(e.center)o=e.center;else{let[[t,n],[r,i]]=e.bounds;o=[(t+r)/2,(n+i)/2]}else o=e.center;let s=n.project(o);a={x:s.x,y:s.y};let c=X(i,t);return Ze(a,t.position,t.offset,c)}function Y(e){if(!e||e.length===0)return[0,0];let t=[...e];(e[0][0]!==e[e.length-1][0]||e[0][1]!==e[e.length-1][1])&&t.push(e[0]);let n=(0,u.polygon)([t]);return(0,u.centroid)(n).geometry.coordinates}function Xe(e){if(!e||e.length===0)return[0,0];let t=0,n=0;for(let r of e)t+=r[0],n+=r[1];return[t/e.length,n/e.length]}function X(e,t){if(e){let t=e.getBoundingClientRect();return{width:t.width||320,height:t.height||200}}return{width:typeof t.maxWidth==`number`?t.maxWidth:320,height:200}}function Ze(e,t,n,r){let i={width:window.innerWidth,height:window.innerHeight},a=(()=>{switch(t){case`top`:return[`top`,`bottom`,`right`,`left`,`center`];case`bottom`:return[`bottom`,`top`,`right`,`left`,`center`];case`left`:return[`left`,`right`,`top`,`bottom`,`center`];case`right`:return[`right`,`left`,`top`,`bottom`,`center`];case`center`:default:return[`center`,`top`,`bottom`,`left`,`right`]}})(),o={top:()=>({x:e.x-r.width/2+n[0],y:e.y-r.height-20+n[1]}),bottom:()=>({x:e.x-r.width/2+n[0],y:e.y+20+n[1]}),left:()=>({x:e.x-r.width-20+n[0],y:e.y-r.height/2+n[1]}),right:()=>({x:e.x+20+n[0],y:e.y-r.height/2+n[1]}),center:()=>({x:e.x-r.width/2+n[0],y:e.y-r.height/2+n[1]})},s=e=>e.x>=10&&e.y>=10&&e.x+r.width+10<=i.width&&e.y+r.height+10<=i.height;for(let e of a){let t=o[e]();if(s(t))return{position:t,actualPosition:e}}let c=o[t]();return{position:Z(c,r),actualPosition:t}}function Z(e,t){let n={width:window.innerWidth,height:window.innerHeight},r={...e};return r.x+t.width+10>n.width&&(r.x=n.width-t.width-10),r.x<10&&(r.x=10),r.y+t.height+10>n.height&&(r.y=n.height-t.height-10),r.y<10&&(r.y=10),r}const Qe=(0,c.forwardRef)((e,t)=>{let{center:n=[116.4074,39.9042],zoom:r=12,pitch:i=0,bearing:a=0,style:o=`mapbox://styles/mapbox/dark-v11`,maxBounds:s,mode:u=`display`,editConfig:d={},pickerConfig:f={},onPick:m,interactive:h={},layers:g=[],rasterPaint:_,entities:v=[],selectedIds:y=[],entityConfig:b,nameConfig:x,selectNameConfig:C,areaConfig:w,circleConfig:T,lengthConfig:E,showCoordinates:k=!0,showScale:te=!0,showResetView:ne=!0,showRoadHighlight:M=!1,showMeasure:re=!1,showRasterPaint:N=!1,onRasterPaintChange:P,popupDefaults:F,renderPopup:I,onMapLoad:ue,onEntityClick:L,onPopupOpen:fe,onPopupClose:me,className:ge=``,containerStyle:ye}=e,xe=(0,c.useRef)(null),R=(0,c.useRef)(null),z=(0,c.useRef)(new Map),B=(0,c.useRef)(new Map),we=(0,c.useRef)(new Set),[V,Te]=(0,c.useState)(null),De=(0,c.useRef)(null),Oe=(0,c.useRef)(null),ke=(0,c.useRef)(null),[Ae,je]=(0,c.useState)(null),Me=(0,c.useRef)(null),Pe=(0,c.useRef)(null),[Fe,Ie]=(0,c.useState)(null),[Le,Re]=(0,c.useState)(u),[ze,Be]=(0,c.useState)(null),H=(0,c.useRef)(null),[U,W]=(0,c.useState)(null),[Ve,G]=(0,c.useState)(null),[K,Ue]=(0,c.useState)(null),q=(0,c.useRef)(!1),J=(0,c.useRef)(null),Ge=(0,c.useRef)(null),Y=(0,c.useRef)(null),Xe=(0,c.useRef)(null),X=(0,c.useRef)(null),Ze=(0,c.useRef)([]),Z=(0,c.useRef)(null),Qe=(0,c.useRef)(null),$e=(0,c.useRef)(null),et=(0,c.useRef)([]),tt=(0,c.useRef)(null);(0,c.useEffect)(()=>{Re(u)},[u]);let nt=(0,c.useCallback)(e=>{let t=z.current.get(e),n=B.current.get(e);if(t&&n){if(n.type===`radar`&&t instanceof ie){let r={...n,isAnimating:!0};B.current.set(e,r),t.startAnimation()}else if(n.type===`circle`&&t instanceof pe){let r={...n,isAnimating:!0};B.current.set(e,r),t.startAnimation()}}},[]),rt=(0,c.useCallback)(e=>{let t=z.current.get(e),n=B.current.get(e);if(t&&n){if(n.type===`radar`&&t instanceof ie){let r={...n,isAnimating:!1};B.current.set(e,r),t.stopAnimation()}else if(n.type===`circle`&&t instanceof pe){let r={...n,isAnimating:!1};B.current.set(e,r),t.stopAnimation()}}},[]),it=(0,c.useCallback)(e=>{let t=B.current.get(e);t&&(t.type===`radar`||t.type===`circle`)&&(t.type,t.isAnimating?rt(e):nt(e))},[nt,rt]),at=(0,c.useCallback)(e=>{if(e===void 0){let e=!1;for(let[,t]of z.current)if(t instanceof se){let n=t.getShowTrajectory();if(n===`all`||typeof n==`number`&&n>0){e=!0;break}}let t=e?0:`all`;for(let[,e]of z.current)e instanceof se&&e.setShowTrajectory(t)}else{let t=new Set(e.map(String));for(let[e,n]of z.current)n instanceof se&&n.setShowTrajectory(t.has(String(e))?`all`:0)}},[]),ot=(0,c.useCallback)((e,t,n)=>{let r=v.find(t=>String(t.id)===String(e));if(!r?.popup||!R.current)return;let i=r.popup.content??I?.(r);if(!i)return;let a=Je(r.popup,F,i),{position:o,actualPosition:s}=Ye(r,a,R.current,n);Te({entityId:e,position:o,config:a,openedBy:t,actualPosition:s}),fe?.(e)},[v,F,I,fe]),st=(0,c.useCallback)(e=>{V?.entityId===e&&(Te(null),me?.(e))},[V,me]),ct=(0,c.useCallback)(()=>{Te(e=>(e&&me?.(e.entityId),null))},[me]),lt=(0,c.useCallback)(e=>V?.entityId===e,[V]),ut=(0,c.useCallback)((e,t,n)=>{let r=R.current;r&&r.flyTo({center:e,zoom:t??r.getZoom(),...n})},[]),dt=(0,c.useCallback)((e,t,n)=>{let r=R.current;if(!r||e.length===0)return;let i=[];for(let t of e){let e=z.current.get(t);e&&i.push(e.getBounds())}if(i.length===0)return;let a=1/0,o=-1/0,s=1/0,c=-1/0;for(let[[e,t],[n,r]]of i)a=Math.min(a,e),o=Math.max(o,n),s=Math.min(s,t),c=Math.max(c,r);let l=(a+o)/2,u=(s+c)/2,d=a===o&&s===c;if(i.length===1||d){let e={center:[l,u],zoom:t??r.getZoom()};n?.duration!==void 0&&(e.duration=n.duration),n?.pitch!==void 0&&(e.pitch=n.pitch),n?.bearing!==void 0&&(e.bearing=n.bearing),n?.essential!==void 0&&(e.essential=n.essential),r.flyTo(e);return}let f=[[a,s],[o,c]],p={padding:n?.padding??50,duration:n?.duration??1e3,bearing:n?.bearing??r.getBearing(),pitch:n?.pitch??r.getPitch()};t!==void 0&&(p.maxZoom=t),n?.essential!==void 0&&(p.essential=n.essential),r.fitBounds(f,p)},[]),ft=(0,c.useCallback)(e=>{let t=R.current;if(!t||!t.getContainer())return;let{showMarker:n=!0,markerColor:r=`#3388ff`}=f;if(!n){H.current&&=(H.current.remove(),null);return}if(H.current)H.current.setLngLat(e);else{let n=document.createElement(`div`);n.className=`mapbox-picker-marker`;let i=document.createElement(`div`);i.className=`marker-inner`,i.style.background=r,n.appendChild(i),H.current=new l.default.Marker({element:n,anchor:`bottom`}).setLngLat(e).addTo(t)}},[f]),pt=(0,c.useCallback)(()=>{H.current&&=(H.current.remove(),null)},[]),mt=(0,c.useCallback)(()=>`marker-${Date.now()}-${Math.random().toString(36).slice(2,11)}`,[]),ht=(0,c.useCallback)(e=>{let t=R.current;if(xe.current)if(tt.current&&=(tt.current.remove(),null),e&&t){t.getCanvas().style.cursor=`none`;let n=document.createElement(`div`);n.className=`mapbox-custom-cursor`;let r=e.size||e.width||32;n.style.cssText=`
52
52
  position: fixed;
53
53
  pointer-events: none;
54
54
  z-index: 9999;
55
55
  transform: translate(-50%, -50%);
56
56
  opacity: 0.8;
57
- `;let i=document.createElement(`img`);i.src=e.icon,i.style.width=`${r}px`,i.style.height=`${e.size||e.height||r}px`,i.style.objectFit=`contain`,n.appendChild(i),document.body.appendChild(n),et.current=n;let a=e=>{et.current&&(et.current.style.left=`${e.clientX}px`,et.current.style.top=`${e.clientY}px`)};document.addEventListener(`mousemove`,a),n.dataset.cleanup=`true`,n._cleanup=()=>{document.removeEventListener(`mousemove`,a)}}else t&&(t.getCanvas().style.cursor=``)},[]),$=(0,c.useCallback)(()=>{if(et.current){let e=et.current._cleanup;e&&e(),et.current.remove(),et.current=null}let e=R.current;e&&(e.getCanvas().style.cursor=``)},[]),ht=(0,c.useCallback)((e,t,n)=>{if(!e.getSource(t)){if(!e.getStyle().glyphs){let t=e.style,n=`/gis-fonts/{fontstack}/{range}.pbf`;t.glyphs=n,t.stylesheet&&(t.stylesheet.glyphs=n)}e.addSource(t,{type:`geojson`,data:{type:`FeatureCollection`,features:[]}}),e.addLayer({id:n,type:`symbol`,source:t,filter:[`==`,`$type`,`Point`],layout:{"text-field":[`get`,`label`],"text-size":12,"text-font":[`Open Sans Bold`,`Arial Unicode MS Bold`],"text-allow-overlap":!0,"text-rotation-alignment":`map`,"text-offset":[0,-.8]},paint:{"text-color":`#ffffff`,"text-halo-color":`rgba(0, 0, 0, 0.8)`,"text-halo-width":1}})}},[]),gt=(0,c.useCallback)(()=>{let e=R.current;e&&(e.getSource(`rect-preview-source`)||(e.addSource(`rect-preview-source`,{type:`geojson`,data:{type:`FeatureCollection`,features:[]}}),e.addLayer({id:`rect-preview-fill`,type:`fill`,source:`rect-preview-source`,paint:{"fill-color":`#3388ff`,"fill-opacity":.1}}),e.addLayer({id:`rect-preview-line`,type:`line`,source:`rect-preview-source`,paint:{"line-color":`#3388ff`,"line-width":2,"line-dasharray":[4,4]}}),ht(e,`rect-preview-measure-source`,`rect-preview-measure-label`)))},[ht]),_t=(0,c.useCallback)((e,t)=>{let n=R.current;if(!n)return;let r=n.getSource(`rect-preview-source`);if(!r)return;let[i,a]=e,[o,s]=t,c=[[Math.min(i,o),Math.max(a,s)],[Math.max(i,o),Math.max(a,s)],[Math.max(i,o),Math.min(a,s)],[Math.min(i,o),Math.min(a,s)],[Math.min(i,o),Math.max(a,s)]];r.setData({type:`Feature`,geometry:{type:`Polygon`,coordinates:[c]},properties:{}});let l=Y.current,u=l?.strokeColor??`#3388ff`,d=l?.strokeWidth??2,f=l?.fillColor??`#3388ff`,p=l?.fillOpacity??.1;n.getLayer(`rect-preview-line`)&&(n.setPaintProperty(`rect-preview-line`,`line-color`,u),n.setPaintProperty(`rect-preview-line`,`line-width`,d)),n.getLayer(`rect-preview-fill`)&&(n.setPaintProperty(`rect-preview-fill`,`fill-color`,f),n.setPaintProperty(`rect-preview-fill`,`fill-opacity`,p));let m=n.getSource(`rect-preview-measure-source`);if(m){let e=vn.current,t=[],n=c[0],r=c[1],i=c[2];if(e?.showArea){let e=[(n[0]+i[0])/2,(n[1]+i[1])/2],a=O(n,r),o=O(r,i);t.push({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{label:A(a*o)}})}if(e?.showLength){let e=[(n[0]+r[0])/2,(n[1]+r[1])/2];t.push({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{label:j(O(n,r))}});let a=[(r[0]+i[0])/2,(r[1]+i[1])/2];t.push({type:`Feature`,geometry:{type:`Point`,coordinates:a},properties:{label:j(O(r,i))}})}m.setData({type:`FeatureCollection`,features:t})}},[]),vt=(0,c.useCallback)(()=>{let e=R.current;if(!e)return;let t=e.getSource(`rect-preview-source`);t&&t.setData({type:`FeatureCollection`,features:[]});let n=e.getSource(`rect-preview-measure-source`);n&&n.setData({type:`FeatureCollection`,features:[]})},[]),yt=(0,c.useCallback)(()=>{He(null),vt()},[vt]),bt=(0,c.useCallback)(()=>{let e=R.current;e&&(e.getSource(`circle-preview-source`)||(e.addSource(`circle-preview-source`,{type:`geojson`,data:{type:`FeatureCollection`,features:[]}}),e.addLayer({id:`circle-preview-fill`,type:`fill`,source:`circle-preview-source`,paint:{"fill-color":`#3388ff`,"fill-opacity":.1}}),e.addLayer({id:`circle-preview-line`,type:`line`,source:`circle-preview-source`,paint:{"line-color":`#3388ff`,"line-width":2,"line-dasharray":[4,4]}}),ht(e,`circle-preview-measure-source`,`circle-preview-measure-label`),e.getSource(`circle-preview-radius-source`)||(e.addSource(`circle-preview-radius-source`,{type:`geojson`,data:{type:`FeatureCollection`,features:[]}}),e.addLayer({id:`circle-preview-radius-line`,type:`line`,source:`circle-preview-radius-source`,paint:{"line-color":`#ffffff`,"line-width":1,"line-opacity":1,"line-dasharray":[4,4]}}))))},[ht]),xt=(0,c.useCallback)((e,t,n=64)=>{let[r,i]=e,a=[],o=t/6371e3,s=i*Math.PI/180;for(let e=0;e<=n;e++){let t=e/n*2*Math.PI,c=o*Math.cos(t),l=o*Math.sin(t)/Math.cos(s),u=i+c*180/Math.PI,d=r+l*180/Math.PI;a.push([d,u])}return a},[]),St=(0,c.useCallback)((e,t)=>{let[n,r]=e,[i,a]=t,o=(a-r)*Math.PI/180,s=(i-n)*Math.PI/180,c=Math.sin(o/2)*Math.sin(o/2)+Math.cos(r*Math.PI/180)*Math.cos(a*Math.PI/180)*Math.sin(s/2)*Math.sin(s/2);return 6371e3*(2*Math.atan2(Math.sqrt(c),Math.sqrt(1-c)))},[]),Ct=(0,c.useCallback)((e,t)=>{let n=R.current;if(!n)return;let r=n.getSource(`circle-preview-source`);if(!r)return;let i=St(e,t),a=xt(e,i);r.setData({type:`Feature`,geometry:{type:`Polygon`,coordinates:[a]},properties:{}});let o=X.current,s=o?.strokeColor??`#3388ff`,c=o?.strokeWidth??2,l=o?.fillColor??`#3388ff`,u=o?.fillOpacity??.1;n.getLayer(`circle-preview-line`)&&(n.setPaintProperty(`circle-preview-line`,`line-color`,s),n.setPaintProperty(`circle-preview-line`,`line-width`,c)),n.getLayer(`circle-preview-fill`)&&(n.setPaintProperty(`circle-preview-fill`,`fill-color`,l),n.setPaintProperty(`circle-preview-fill`,`fill-opacity`,u));let d=vn.current,f=[],p=[];if(d?.showArea){let t=Math.PI*i*i;f.push({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{label:A(t)}})}if(d?.showRadius){let t=X.current?.radiusAngle??90,n=D(e,i,t),r=[(e[0]+n[0])/2,(e[1]+n[1])/2];p.push({type:`Feature`,geometry:{type:`LineString`,coordinates:[e,n]},properties:{}}),f.push({type:`Feature`,geometry:{type:`Point`,coordinates:r},properties:{label:j(i)}})}let m=n.getSource(`circle-preview-measure-source`);m&&m.setData({type:`FeatureCollection`,features:f});let h=n.getSource(`circle-preview-radius-source`);h&&h.setData({type:`FeatureCollection`,features:p})},[St,xt]),wt=(0,c.useCallback)(()=>{let e=R.current;if(!e)return;let t=e.getSource(`circle-preview-source`);t&&t.setData({type:`FeatureCollection`,features:[]});let n=e.getSource(`circle-preview-measure-source`);n&&n.setData({type:`FeatureCollection`,features:[]});let r=e.getSource(`circle-preview-radius-source`);r&&r.setData({type:`FeatureCollection`,features:[]})},[]),Tt=(0,c.useCallback)(()=>{Ye.current=null,wt()},[wt]),Et=(0,c.useCallback)(()=>{let e=R.current;e&&(e.getSource(`polygon-preview-source`)||(e.addSource(`polygon-preview-source`,{type:`geojson`,data:{type:`FeatureCollection`,features:[]}}),e.addLayer({id:`polygon-preview-fill`,type:`fill`,source:`polygon-preview-source`,paint:{"fill-color":`#3388ff`,"fill-opacity":.1}}),e.addLayer({id:`polygon-preview-line`,type:`line`,source:`polygon-preview-source`,paint:{"line-color":`#3388ff`,"line-width":2,"line-dasharray":[4,4]}}),e.addSource(`polygon-vertices-source`,{type:`geojson`,data:{type:`FeatureCollection`,features:[]}}),e.addLayer({id:`polygon-vertices`,type:`circle`,source:`polygon-vertices-source`,paint:{"circle-radius":5,"circle-color":`#3388ff`,"circle-stroke-color":`#ffffff`,"circle-stroke-width":2}}),ht(e,`polygon-preview-measure-source`,`polygon-preview-measure-label`)))},[ht]),Dt=(0,c.useCallback)((e,t)=>{let n=R.current;if(!n)return;let r=n.getSource(`polygon-preview-source`),i=n.getSource(`polygon-vertices-source`);if(!r||!i)return;let a=[...e,t];if(a.length>=3){let e=[...a,a[0]];r.setData({type:`Feature`,geometry:{type:`Polygon`,coordinates:[e]},properties:{}})}else a.length===2?r.setData({type:`Feature`,geometry:{type:`LineString`,coordinates:a},properties:{}}):r.setData({type:`FeatureCollection`,features:[]});i.setData({type:`FeatureCollection`,features:e.map(e=>({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{}}))});let o=Z.current,s=o?.strokeColor??`#3388ff`,c=o?.strokeWidth??2,l=o?.fillColor??`#3388ff`,u=o?.fillOpacity??.1;n.getLayer(`polygon-preview-line`)&&(n.setPaintProperty(`polygon-preview-line`,`line-color`,s),n.setPaintProperty(`polygon-preview-line`,`line-width`,c)),n.getLayer(`polygon-preview-fill`)&&(n.setPaintProperty(`polygon-preview-fill`,`fill-color`,l),n.setPaintProperty(`polygon-preview-fill`,`fill-opacity`,u)),n.getLayer(`polygon-vertices`)&&n.setPaintProperty(`polygon-vertices`,`circle-color`,s);let d=n.getSource(`polygon-preview-measure-source`);if(d){let e=vn.current,t=[];if(e?.showArea&&a.length>=3){let e=[...a,a[0]],n=ee(e),r=0,i=0;for(let e of a)r+=e[0],i+=e[1];r/=a.length,i/=a.length,t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[r,i]},properties:{label:A(n)}})}if(e?.showLength&&a.length>=2){for(let e=0;e<a.length-1;e++){let n=a[e],r=a[e+1],i=[(n[0]+r[0])/2,(n[1]+r[1])/2];t.push({type:`Feature`,geometry:{type:`Point`,coordinates:i},properties:{label:j(O(n,r))}})}if(a.length>=3){let e=a[a.length-1],n=a[0],r=[(e[0]+n[0])/2,(e[1]+n[1])/2];t.push({type:`Feature`,geometry:{type:`Point`,coordinates:r},properties:{label:j(O(e,n))}})}}d.setData({type:`FeatureCollection`,features:t})}},[]),Ot=(0,c.useCallback)(()=>{let e=R.current;if(!e)return;let t=e.getSource(`polygon-preview-source`);t&&t.setData({type:`FeatureCollection`,features:[]});let n=e.getSource(`polygon-vertices-source`);n&&n.setData({type:`FeatureCollection`,features:[]});let r=e.getSource(`polygon-preview-measure-source`);r&&r.setData({type:`FeatureCollection`,features:[]})},[]),kt=(0,c.useCallback)(()=>{Xe.current=[],Ot()},[Ot]),At=(0,c.useCallback)(()=>{let e=R.current;e&&(e.getSource(`square-preview-source`)||(e.addSource(`square-preview-source`,{type:`geojson`,data:{type:`FeatureCollection`,features:[]}}),e.addLayer({id:`square-preview-fill`,type:`fill`,source:`square-preview-source`,paint:{"fill-color":`#3388ff`,"fill-opacity":.1}}),e.addLayer({id:`square-preview-line`,type:`line`,source:`square-preview-source`,paint:{"line-color":`#3388ff`,"line-width":2,"line-dasharray":[4,4]}}),ht(e,`square-preview-measure-source`,`square-preview-measure-label`)))},[ht]),jt=(0,c.useCallback)((e,t)=>{let[n,r]=e,i=t/2/6371e3,a=r*Math.PI/180,o=i*180/Math.PI,s=i*180/Math.PI/Math.cos(a);return[[n-s,r+o],[n+s,r+o],[n+s,r-o],[n-s,r-o],[n-s,r+o]]},[]),Mt=(0,c.useCallback)((e,t)=>{let n=R.current;if(!n)return;let r=n.getSource(`square-preview-source`);if(!r)return;let i=St(e,t)*2,a=jt(e,i);r.setData({type:`Feature`,geometry:{type:`Polygon`,coordinates:[a]},properties:{}});let o=Q.current,s=o?.strokeColor??`#3388ff`,c=o?.strokeWidth??2,l=o?.fillColor??`#3388ff`,u=o?.fillOpacity??.1;n.getLayer(`square-preview-line`)&&(n.setPaintProperty(`square-preview-line`,`line-color`,s),n.setPaintProperty(`square-preview-line`,`line-width`,c)),n.getLayer(`square-preview-fill`)&&(n.setPaintProperty(`square-preview-fill`,`fill-color`,l),n.setPaintProperty(`square-preview-fill`,`fill-opacity`,u));let d=n.getSource(`square-preview-measure-source`);if(d){let t=vn.current,n=[];if(t?.showArea&&n.push({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{label:A(i*i)}}),t?.showLength){let e=[(a[1][0]+a[2][0])/2,(a[1][1]+a[2][1])/2];n.push({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{label:j(i)}})}d.setData({type:`FeatureCollection`,features:n})}},[St,jt]),Nt=(0,c.useCallback)(()=>{let e=R.current;if(!e)return;let t=e.getSource(`square-preview-source`);t&&t.setData({type:`FeatureCollection`,features:[]});let n=e.getSource(`square-preview-measure-source`);n&&n.setData({type:`FeatureCollection`,features:[]})},[]),Pt=(0,c.useCallback)(()=>{Ze.current=null,Nt()},[Nt]),Ft=(0,c.useCallback)(()=>{let e=R.current;e&&(e.getSource(`polyline-preview-source`)||(e.addSource(`polyline-preview-source`,{type:`geojson`,data:{type:`FeatureCollection`,features:[]}}),e.addLayer({id:`polyline-preview-line`,type:`line`,source:`polyline-preview-source`,paint:{"line-color":`#3388ff`,"line-width":2,"line-dasharray":[4,4]}}),e.addSource(`polyline-vertices-source`,{type:`geojson`,data:{type:`FeatureCollection`,features:[]}}),e.addLayer({id:`polyline-vertices`,type:`circle`,source:`polyline-vertices-source`,paint:{"circle-radius":5,"circle-color":`#3388ff`,"circle-stroke-color":`#ffffff`,"circle-stroke-width":2}}),ht(e,`polyline-preview-measure-source`,`polyline-preview-measure-label`)))},[ht]),It=(0,c.useCallback)((e,t)=>{let n=R.current;if(!n)return;let r=n.getSource(`polyline-preview-source`),i=n.getSource(`polyline-vertices-source`);if(!r||!i)return;let a=[...e,t];a.length>=2?r.setData({type:`Feature`,geometry:{type:`LineString`,coordinates:a},properties:{}}):r.setData({type:`FeatureCollection`,features:[]}),i.setData({type:`FeatureCollection`,features:e.map(e=>({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{}}))});let o=Qe.current,s=o?.strokeColor??`#3388ff`,c=o?.strokeWidth??2;n.getLayer(`polyline-preview-line`)&&(n.setPaintProperty(`polyline-preview-line`,`line-color`,s),n.setPaintProperty(`polyline-preview-line`,`line-width`,c)),n.getLayer(`polyline-vertices`)&&n.setPaintProperty(`polyline-vertices`,`circle-color`,s);let l=n.getSource(`polyline-preview-measure-source`);if(l){let e=vn.current,t=[];if(e?.showLength&&a.length>=2)for(let e=0;e<a.length-1;e++){let n=a[e],r=a[e+1],i=[(n[0]+r[0])/2,(n[1]+r[1])/2];t.push({type:`Feature`,geometry:{type:`Point`,coordinates:i},properties:{label:j(O(n,r))}})}l.setData({type:`FeatureCollection`,features:t})}},[]),Lt=(0,c.useCallback)(()=>{let e=R.current;if(!e)return;let t=e.getSource(`polyline-preview-source`);t&&t.setData({type:`FeatureCollection`,features:[]});let n=e.getSource(`polyline-vertices-source`);n&&n.setData({type:`FeatureCollection`,features:[]});let r=e.getSource(`polyline-preview-measure-source`);r&&r.setData({type:`FeatureCollection`,features:[]})},[]),Rt=(0,c.useCallback)(()=>{$e.current=[],Lt()},[Lt]),zt=(0,c.useCallback)(e=>{G(e),mt(e),e?(K(`marker`),yt(),Tt(),kt(),Pt(),Rt()):K(null)},[mt,yt,Tt,kt,Pt,Rt]),Bt=(0,c.useCallback)(e=>{if(K(e),e===`rectangle`){G(null),$(),Tt(),kt(),Pt(),Rt();let e=R.current;e&&(e.getCanvas().style.cursor=`crosshair`)}else if(e===`circle`){G(null),$(),yt(),kt(),Pt(),Rt();let e=R.current;e&&(e.getCanvas().style.cursor=`crosshair`)}else if(e===`polygon`){G(null),$(),yt(),Tt(),Pt(),Rt();let e=R.current;e&&(e.getCanvas().style.cursor=`crosshair`)}else if(e===`square`){G(null),$(),yt(),Tt(),kt(),Rt();let e=R.current;e&&(e.getCanvas().style.cursor=`crosshair`)}else if(e===`polyline`){G(null),$(),yt(),Tt(),kt(),Pt();let e=R.current;e&&(e.getCanvas().style.cursor=`crosshair`)}else e===`marker`?(yt(),Tt(),kt(),Pt(),Rt()):(G(null),$(),yt(),Tt(),kt(),Pt(),Rt())},[$,yt,Tt,kt,Pt,Rt]),Vt=(0,c.useCallback)(e=>{e!==`picker`&&(ft(),ze(null)),e!==`edit`&&(G(null),K(null),yt(),Rt(),$()),Le(e)},[ft,$,yt,Rt]),Ht=(0,c.useCallback)(()=>H,[H]),Ut=(0,c.useCallback)(()=>Re,[Re]),Wt=(0,c.useCallback)(()=>{ft(),ze(null)},[ft]);(0,c.useEffect)(()=>{if(!Fe||H!==`picker`)return;let e=f.value;if(e){let t=[e.lng,e.lat];ze(e),dt(t)}},[f.value,H,dt,Fe]);let Gt=e=>`mode`in e,Kt=(0,c.useCallback)(e=>{if(Le(`edit`),ft(),ze(null),J.current=!0,Gt(e)){if(e.mode===`marker`)e.markerStyle?(We.current=e.markerStyle,Y.current=null,X.current=null,Z.current=null,Q.current=null,Qe.current=null,G(null),K(`marker`),e.markerStyle.src&&e.markerStyle.width?mt({id:`custom`,name:e.markerStyle.name||`Marker`,icon:e.markerStyle.src,width:e.markerStyle.width}):$()):e.template&&(We.current=null,Y.current=null,X.current=null,Z.current=null,Q.current=null,Qe.current=null,G(e.template),K(`marker`),mt(e.template));else if(e.mode===`rectangle`){Y.current=e.rectangleStyle||null,We.current=null,X.current=null,Z.current=null,Q.current=null,Qe.current=null,G(null),K(`rectangle`),$();let t=R.current;t&&(t.getCanvas().style.cursor=`crosshair`)}else if(e.mode===`circle`){X.current=e.circleStyle||null,Y.current=null,We.current=null,Z.current=null,Q.current=null,Qe.current=null,G(null),K(`circle`),$();let t=R.current;t&&(t.getCanvas().style.cursor=`crosshair`)}else if(e.mode===`polygon`){Z.current=e.polygonStyle||null,Y.current=null,We.current=null,X.current=null,Q.current=null,Qe.current=null,G(null),K(`polygon`),$();let t=R.current;t&&(t.getCanvas().style.cursor=`crosshair`)}else if(e.mode===`square`){Q.current=e.squareStyle||null,Y.current=null,We.current=null,X.current=null,Z.current=null,Qe.current=null,G(null),K(`square`),$();let t=R.current;t&&(t.getCanvas().style.cursor=`crosshair`)}else if(e.mode===`polyline`){Qe.current=e.polylineStyle||null,Y.current=null,We.current=null,X.current=null,Z.current=null,Q.current=null,G(null),K(`polyline`),$();let t=R.current;t&&(t.getCanvas().style.cursor=`crosshair`)}}else G(e),K(`marker`),mt(e),Y.current=null,We.current=null,X.current=null,Z.current=null,Q.current=null,Qe.current=null},[ft,mt,$]);(0,c.useImperativeHandle)(t,()=>({startAnimation:tt,stopAnimation:nt,toggleAnimation:rt,getMap:()=>R.current,openPopup:e=>at(e,`programmatic`),closePopup:ot,closeAllPopups:st,isPopupOpen:ct,toggleUnitTrajectory:it,flyTo:lt,flyToEntities:ut,getMode:Ht,setMode:Vt,getPickedLocation:Ut,clearPickedLocation:Wt,startDrawing:Kt,getRenderer:e=>z.current.get(e)}),[tt,nt,rt,at,ot,st,ct,it,lt,ut,Ht,Vt,Ut,Wt,Kt]);let qt=(0,c.useCallback)(()=>{let e=R.current;if(!e)return;let t=new Set(v.map(e=>e.id)),n=new Set(z.current.keys());for(let e of n)t.has(e)||(z.current.get(e)?.destroy(),z.current.delete(e));let r=new Set(y.map(String));for(let t of v){let n=S(t,b),i=z.current.get(n.id);if(i)if(n.type===`radar`&&i instanceof ie)i.update(n);else if(n.type===`image`&&i instanceof ae)i.update(n);else if(n.type===`marker`&&i instanceof oe)i.update(n);else if(n.type===`unit`&&i instanceof se)i.update(n);else if(n.type===`polygon`&&i instanceof ce)i.update(n);else if(n.type===`circle`)if(n.fillType===`radial-gradient`)if(i instanceof pe)i.update(n);else{i.destroy();let t=new pe(e,n,x,C,w,T);z.current.set(n.id,t),t.setSelected(r.has(String(n.id)))}else if(i instanceof de)i.update(n);else{i.destroy();let t=new de(e,n,x,C,w,T);z.current.set(n.id,t),t.setSelected(r.has(String(n.id)))}else (n.type===`square`&&i instanceof he||n.type===`rectangle`&&i instanceof _e||n.type===`polyline`&&i instanceof le)&&i.update(n);else{let t=null;n.type===`radar`?t=new ie(e,n,x,C):n.type===`image`?t=new ae(e,n,x,C):n.type===`marker`?t=new oe(e,n,x,C):n.type===`unit`?t=new se(e,n,x,C):n.type===`polygon`?t=new ce(e,n,x,C,w,E):n.type===`circle`?t=n.fillType===`radial-gradient`?new pe(e,n,x,C,w,T):new de(e,n,x,C,w,T):n.type===`square`?t=new he(e,n,x,C,w,E):n.type===`rectangle`?t=new _e(e,n,x,C,w,E):n.type===`polyline`&&(t=new le(e,n,x,C,E)),t&&(z.current.set(n.id,t),t.setSelected(r.has(String(n.id))))}}},[v,y,b,x,C,w,T,E]),Jt=(0,c.useCallback)(()=>{for(let e of z.current.values())e.destroy();z.current.clear()},[]),Yt=(0,c.useCallback)(e=>{let t=e.getStyle();if(!t?.layers)return;let n=[`polygon-`,`polyline-`,`circle-`,`square-`,`rectangle-`,`radar-`,`image-`,`unit-`,`marker-`];for(let e of t.layers)if(n.some(t=>e.id.startsWith(t)))return e.id},[]),Xt=(0,c.useCallback)(e=>{let t=_,n={"raster-opacity":e.opacity??1},r=e.brightness??t?.brightness,i=e.saturation??t?.saturation,a=e.contrast??t?.contrast,o=e.hueRotate??t?.hueRotate;return r!==void 0&&(n[`raster-brightness-min`]=0,n[`raster-brightness-max`]=r),i!==void 0&&(n[`raster-saturation`]=i),a!==void 0&&(n[`raster-contrast`]=a),o!==void 0&&(n[`raster-hue-rotate`]=o),n},[_]),Zt=(0,c.useCallback)((e,t)=>{let n=`base-layer-source-${t.id}`,r=`base-layer-${t.id}`,i={type:`raster`,tiles:[t.url],tileSize:t.tileSize??256,minzoom:t.minzoom??0,maxzoom:t.maxzoom??22,scheme:t.scheme??`xyz`};t.bounds&&(i.bounds=t.bounds),t.attribution&&(i.attribution=t.attribution),e.addSource(n,i);let a=Yt(e);e.addLayer({id:r,type:`raster`,source:n,paint:Xt(t),layout:{visibility:t.visible===!1?`none`:`visible`}},a)},[Yt,Xt]),Qt=(0,c.useCallback)(async(e,t)=>{try{let n=await(await fetch(t.url)).json(),r=`base-layer-source-${t.id}`,i=`base-layer-${t.id}`;if(!we.current.has(t.id))return;let a=n.format===`pbf`||n.vector_layers,o=Yt(e);a?(e.addSource(r,{type:`vector`,tiles:n.tiles,minzoom:n.minzoom??0,maxzoom:n.maxzoom??22,bounds:n.bounds,attribution:n.attribution}),console.warn(`TileJSON "${t.id}" 是矢量瓦片,建议使用 type: 'style' 加载完整样式`)):(e.addSource(r,{type:`raster`,tiles:n.tiles,tileSize:t.tileSize??n.tileSize??256,minzoom:n.minzoom??0,maxzoom:n.maxzoom??22,bounds:n.bounds,attribution:n.attribution}),e.addLayer({id:i,type:`raster`,source:r,paint:Xt(t),layout:{visibility:t.visible===!1?`none`:`visible`}},o))}catch(e){console.error(`Failed to load TileJSON from ${t.url}:`,e)}},[Yt,Xt]),$t=(0,c.useCallback)(async(e,t)=>{try{let n=await(await fetch(t.url)).json();if(!we.current.has(t.id))return;if(n.sources)for(let[r,i]of Object.entries(n.sources)){let n=`base-layer-source-${t.id}-${r}`;e.getSource(n)||e.addSource(n,i)}let r=Yt(e);if(n.layers)for(let i of n.layers){let n=`base-layer-${t.id}-${i.id}`;if(e.getLayer(n))continue;let a={...i,id:n,source:i.source?`base-layer-source-${t.id}-${i.source}`:void 0};i.type===`raster`&&(a.paint={...a.paint,...Xt(t)}),t.visible===!1&&(a.layout={...a.layout,visibility:`none`}),e.addLayer(a,r)}if(n.glyphs&&!e.getStyle().glyphs){let t=e.style;t.glyphs=n.glyphs,t.stylesheet&&(t.stylesheet.glyphs=n.glyphs)}}catch(e){console.error(`Failed to load Style JSON from ${t.url}:`,e)}},[Yt,Xt]),en=(0,c.useCallback)((e,t)=>{let n=e.getStyle();if(!n)return;let r=`base-layer-${t}`,i=n.layers?.filter(e=>e.id.startsWith(r))??[];for(let t of i)e.getLayer(t.id)&&e.removeLayer(t.id);let a=`base-layer-source-${t}`,o=n.sources??{};for(let t of Object.keys(o))t.startsWith(a)&&e.getSource(t)&&e.removeSource(t)},[]),tn=(0,c.useCallback)(e=>{let t=R.current;if(!t)return;let n=new Set(e.map(e=>e.id)),r=we.current;for(let e of r)n.has(e)||(en(t,e),r.delete(e));for(let n of e)if(r.has(n.id)){let e=`base-layer-${n.id}`;if(t.getLayer(e)){let r=Xt(n);for(let[n,i]of Object.entries(r))t.setPaintProperty(e,n,i);t.setLayoutProperty(e,`visibility`,n.visible===!1?`none`:`visible`)}}else switch(r.add(n.id),n.type){case`raster`:Zt(t,n);break;case`tilejson`:Qt(t,n);break;case`style`:$t(t,n);break;default:{let e=n;e.url&&Zt(t,{...e,type:`raster`})}}},[Zt,Qt,$t,en,Xt]),nn=(0,c.useCallback)(e=>{let t=e;for(;t;){let e=t.getAttribute?.(`data-entity-id`);if(e)return e;t=t.parentElement}return null},[]),rn=(0,c.useCallback)(e=>{let t=[e.lngLat.lng,e.lngLat.lat],n={x:e.point.x,y:e.point.y},r=fn.current;if(r===`picker`){let e={lng:t[0],lat:t[1]};ze(e),dt(t),pn.current?.(e);return}if(r===`edit`){let e=hn.current;if(e===`rectangle`){let e=gn.current;if(!e)He(t);else{let n=Y.current,r=S({...n,id:n?.id??pt(),type:`rectangle`,bounds:[e,t]},b);vt();let i=R.current;if(i&&!z.current.has(r.id)){let e=new _e(i,r,x,C,w,E);z.current.set(r.id,e)}_n.current.onRectangleAdd?.(r),He(null),Y.current=null,J.current&&(J.current=!1,K(null),i&&(i.getCanvas().style.cursor=``))}return}if(e===`circle`){let e=Ye.current;if(!e)Ye.current={center:t};else{let n=St(e.center,t),r=X.current,i=S({...r,id:r?.id??pt(),type:`circle`,center:e.center,radius:n},b);wt();let a=R.current;if(a&&!z.current.has(i.id)){let e=new de(a,i,x,C,w,T);z.current.set(i.id,e)}_n.current.onCircleAdd?.(i),Ye.current=null,X.current=null,J.current&&(J.current=!1,K(null),a&&(a.getCanvas().style.cursor=``))}return}if(e===`polygon`){let e=Xe.current;if(e.length>=3){let n=e[0];if(St(n,t)<20){let t=Z.current,n=S({...t,id:t?.id??pt(),type:`polygon`,coordinates:[...e]},b);Ot();let r=R.current;if(r&&!z.current.has(n.id)){let e=new ce(r,n,x,C,w,E);z.current.set(n.id,e)}_n.current.onPolygonAdd?.(n),Xe.current=[],Z.current=null,J.current&&(J.current=!1,K(null),r&&(r.getCanvas().style.cursor=``));return}}Xe.current=[...e,t];return}if(e===`square`){let e=Ze.current;if(!e)Ze.current={center:t};else{let n=St(e.center,t)*2,r=Q.current,i=S({...r,id:r?.id??pt(),type:`square`,center:e.center,length:n},b);Nt();let a=R.current;if(a&&!z.current.has(i.id)){let e=new he(a,i,x,C,w,E);z.current.set(i.id,e)}_n.current.onSquareAdd?.(i),Ze.current=null,Q.current=null,J.current&&(J.current=!1,K(null),a&&(a.getCanvas().style.cursor=``))}return}if(e===`polyline`){$e.current=[...$e.current,t];return}let n=We.current;if(n&&n.src&&n.width){let e={...n,id:n.id??pt(),type:`marker`,center:t,src:n.src,width:n.width};_n.current.onMarkerAdd?.(e),G(null),K(null),$(),We.current=null,J.current=!1;return}let r=mn.current;if(r){let e={id:pt(),type:`marker`,name:r.name,center:t,src:r.icon,width:r.size||r.width||32};r.customData!==void 0&&(e.customData=r.customData),_n.current.onMarkerAdd?.(e),G(null),K(null),$(),J.current=!1;return}}let i=ln.current,a=un.current,o=dn.current,s=nn(e.originalEvent.target);if(s){let e=i.find(e=>String(e.id)===s);if(e){if(a?.(e),e.popup){let t=e.popup.content??I?.(e);t&&qe(e.popup,F,t).trigger===`click`&&o(s,`click`,n)}return}}for(let[t,r]of z.current){let s=r.getLabelLayerId();if(s&&R.current?.getLayer(s)&&R.current.queryRenderedFeatures(e.point,{layers:[s]}).length>0){let e=i.find(e=>e.id===t);if(e){if(a?.(e),e.popup){let r=e.popup.content??I?.(e);r&&qe(e.popup,F,r).trigger===`click`&&o(t,`click`,n)}return}}}for(let[e,r]of z.current)if(r.isPointInEntity(t)){let t=i.find(t=>t.id===e);if(t){if(a?.(t),t.popup){let r=t.popup.content??I?.(t);r&&qe(t.popup,F,r).trigger===`click`&&o(e,`click`,n)}return}}},[F,I,nn]),an=(0,c.useCallback)(e=>{let t=[e.lngLat.lng,e.lngLat.lat],n=hn.current,r=gn.current;n===`rectangle`&&r&&_t(r,t);let i=Ye.current;n===`circle`&&i&&Ct(i.center,t);let a=Xe.current;n===`polygon`&&a.length>0&&Dt(a,t);let o=Ze.current;n===`square`&&o&&Mt(o.center,t);let s=$e.current;n===`polyline`&&s.length>0&&It(s,t);let c=ln.current,l=dn.current;for(let[e,n]of z.current)if(n.isPointInEntity(t)){let t=c.find(t=>t.id===e);if(!t?.popup)continue;let n=t.popup.content??I?.(t);if(!n)continue;let r=qe(t.popup,F,n);if(r.trigger===`hover`){ke.current&&clearTimeout(ke.current),ke.current=window.setTimeout(()=>{l(e,`hover`)},r.hoverDelay);return}}if(ke.current&&=(clearTimeout(ke.current),null),V?.openedBy===`hover`){let e=z.current.get(V.entityId);e&&!e.isPointInEntity(t)&&ot(V.entityId)}},[F,I,V,ot,_t,Ct,Dt,Mt,It]),on=(0,c.useCallback)(e=>{if(e.preventDefault(),fn.current!==`edit`)return;if(mn.current){G(null),K(null),$();return}let t=hn.current;if(t===`rectangle`){if(gn.current)He(null),vt();else{K(null);let e=R.current;e&&(e.getCanvas().style.cursor=``)}return}if(t===`circle`){if(Ye.current)Ye.current=null,wt();else{K(null);let e=R.current;e&&(e.getCanvas().style.cursor=``)}return}if(t===`polygon`){let e=Xe.current;if(e.length>=3){let t=Z.current,n=S({...t,id:t?.id??pt(),type:`polygon`,coordinates:[...e]},b);Ot();let r=R.current;if(r&&!z.current.has(n.id)){let e=new ce(r,n,x,C,w,E);z.current.set(n.id,e)}_n.current.onPolygonAdd?.(n),Xe.current=[],Z.current=null,J.current&&(J.current=!1,K(null),r&&(r.getCanvas().style.cursor=``))}else if(e.length>0)Xe.current=[],Ot();else{K(null);let e=R.current;e&&(e.getCanvas().style.cursor=``)}return}if(t===`square`){if(Ze.current)Ze.current=null,Nt();else{K(null);let e=R.current;e&&(e.getCanvas().style.cursor=``)}return}if(t===`polyline`){let e=$e.current;if(e.length>=2){let t=Qe.current,n=S({...t,id:t?.id??pt(),type:`polyline`,coordinates:[...e]},b);Lt();let r=R.current;if(r&&!z.current.has(n.id)){let e=new le(r,n,x,C,E);z.current.set(n.id,e)}_n.current.onPolylineAdd?.(n),$e.current=[],Qe.current=null,J.current&&(J.current=!1,K(null),r&&(r.getCanvas().style.cursor=``))}else if(e.length>0)$e.current=[],Lt();else{K(null);let e=R.current;e&&(e.getCanvas().style.cursor=``)}return}let n=[e.lngLat.lng,e.lngLat.lat],r={x:e.point.x,y:e.point.y},i=ln.current,a=nn(e.originalEvent.target);if(a){let e=i.find(e=>String(e.id)===a);if(e){sn(e,r,n);return}}for(let[t,a]of z.current){let o=a.getLabelLayerId();if(o&&R.current?.getLayer(o)&&R.current.queryRenderedFeatures(e.point,{layers:[o]}).length>0){let e=i.find(e=>e.id===t);if(e){sn(e,r,n);return}}}for(let[e,t]of z.current)if(t.isPointInEntity(n)){let t=i.find(t=>t.id===e);if(t){sn(t,r,n);return}}},[nn,$,vt,wt,Ot,Nt,Lt]),sn=(0,c.useCallback)((e,t,n)=>{let r=xe.current?.getBoundingClientRect(),i=r?{x:t.x+r.left,y:t.y+r.top}:t;je({position:i,lngLat:n,items:[{key:`delete`,label:`删除`,icon:(0,p.jsx)(`img`,{src:Ne,alt:`delete`,style:{width:`18px`,flexShrink:0}}),danger:!0,onClick:()=>{_n.current.onEntityDelete?.(e)}}]})},[]),cn=(0,c.useCallback)(()=>{je(null)},[]);(0,c.useEffect)(()=>{let e=document.createElement(`div`);return e.id=`mapbox-popup-container-${Date.now()}`,e.style.cssText=`
57
+ `;let i=document.createElement(`img`);i.src=e.icon,i.style.width=`${r}px`,i.style.height=`${e.size||e.height||r}px`,i.style.objectFit=`contain`,n.appendChild(i),document.body.appendChild(n),tt.current=n;let a=e=>{tt.current&&(tt.current.style.left=`${e.clientX}px`,tt.current.style.top=`${e.clientY}px`)};document.addEventListener(`mousemove`,a),n.dataset.cleanup=`true`,n._cleanup=()=>{document.removeEventListener(`mousemove`,a)}}else t&&(t.getCanvas().style.cursor=``)},[]),Q=(0,c.useCallback)(()=>{if(tt.current){let e=tt.current._cleanup;e&&e(),tt.current.remove(),tt.current=null}let e=R.current;e&&(e.getCanvas().style.cursor=``)},[]),gt=(0,c.useCallback)((e,t,n)=>{if(!e.getSource(t)){if(!e.getStyle().glyphs){let t=e.style,n=`/gis-fonts/{fontstack}/{range}.pbf`;t.glyphs=n,t.stylesheet&&(t.stylesheet.glyphs=n)}e.addSource(t,{type:`geojson`,data:{type:`FeatureCollection`,features:[]}}),e.addLayer({id:n,type:`symbol`,source:t,filter:[`==`,`$type`,`Point`],layout:{"text-field":[`get`,`label`],"text-size":12,"text-font":[`Open Sans Bold`,`Arial Unicode MS Bold`],"text-allow-overlap":!0,"text-rotation-alignment":`map`,"text-offset":[0,-.8]},paint:{"text-color":`#ffffff`,"text-halo-color":`rgba(0, 0, 0, 0.8)`,"text-halo-width":1}})}},[]),_t=(0,c.useCallback)(()=>{let e=R.current;e&&(e.getSource(`rect-preview-source`)||(e.addSource(`rect-preview-source`,{type:`geojson`,data:{type:`FeatureCollection`,features:[]}}),e.addLayer({id:`rect-preview-fill`,type:`fill`,source:`rect-preview-source`,paint:{"fill-color":`#3388ff`,"fill-opacity":.1}}),e.addLayer({id:`rect-preview-line`,type:`line`,source:`rect-preview-source`,paint:{"line-color":`#3388ff`,"line-width":2,"line-dasharray":[4,4]}}),gt(e,`rect-preview-measure-source`,`rect-preview-measure-label`)))},[gt]),vt=(0,c.useCallback)((e,t)=>{let n=R.current;if(!n)return;let r=n.getSource(`rect-preview-source`);if(!r)return;let[i,a]=e,[o,s]=t,c=[[Math.min(i,o),Math.max(a,s)],[Math.max(i,o),Math.max(a,s)],[Math.max(i,o),Math.min(a,s)],[Math.min(i,o),Math.min(a,s)],[Math.min(i,o),Math.max(a,s)]];r.setData({type:`Feature`,geometry:{type:`Polygon`,coordinates:[c]},properties:{}});let l=J.current,u=l?.strokeColor??`#3388ff`,d=l?.strokeWidth??2,f=l?.fillColor??`#3388ff`,p=l?.fillOpacity??.1;n.getLayer(`rect-preview-line`)&&(n.setPaintProperty(`rect-preview-line`,`line-color`,u),n.setPaintProperty(`rect-preview-line`,`line-width`,d)),n.getLayer(`rect-preview-fill`)&&(n.setPaintProperty(`rect-preview-fill`,`fill-color`,f),n.setPaintProperty(`rect-preview-fill`,`fill-opacity`,p));let m=n.getSource(`rect-preview-measure-source`);if(m){let e=vn.current,t=[],n=c[0],r=c[1],i=c[2];if(e?.showArea){let e=[(n[0]+i[0])/2,(n[1]+i[1])/2],a=O(n,r),o=O(r,i);t.push({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{label:A(a*o)}})}if(e?.showLength){let e=[(n[0]+r[0])/2,(n[1]+r[1])/2];t.push({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{label:j(O(n,r))}});let a=[(r[0]+i[0])/2,(r[1]+i[1])/2];t.push({type:`Feature`,geometry:{type:`Point`,coordinates:a},properties:{label:j(O(r,i))}})}m.setData({type:`FeatureCollection`,features:t})}},[]),yt=(0,c.useCallback)(()=>{let e=R.current;if(!e)return;let t=e.getSource(`rect-preview-source`);t&&t.setData({type:`FeatureCollection`,features:[]});let n=e.getSource(`rect-preview-measure-source`);n&&n.setData({type:`FeatureCollection`,features:[]})},[]),$=(0,c.useCallback)(()=>{Ue(null),yt()},[yt]),bt=(0,c.useCallback)(()=>{let e=R.current;e&&(e.getSource(`circle-preview-source`)||(e.addSource(`circle-preview-source`,{type:`geojson`,data:{type:`FeatureCollection`,features:[]}}),e.addLayer({id:`circle-preview-fill`,type:`fill`,source:`circle-preview-source`,paint:{"fill-color":`#3388ff`,"fill-opacity":.1}}),e.addLayer({id:`circle-preview-line`,type:`line`,source:`circle-preview-source`,paint:{"line-color":`#3388ff`,"line-width":2,"line-dasharray":[4,4]}}),gt(e,`circle-preview-measure-source`,`circle-preview-measure-label`),e.getSource(`circle-preview-radius-source`)||(e.addSource(`circle-preview-radius-source`,{type:`geojson`,data:{type:`FeatureCollection`,features:[]}}),e.addLayer({id:`circle-preview-radius-line`,type:`line`,source:`circle-preview-radius-source`,paint:{"line-color":`#ffffff`,"line-width":1,"line-opacity":1,"line-dasharray":[4,4]}}))))},[gt]),xt=(0,c.useCallback)((e,t,n=64)=>{let[r,i]=e,a=[],o=t/6371e3,s=i*Math.PI/180;for(let e=0;e<=n;e++){let t=e/n*2*Math.PI,c=o*Math.cos(t),l=o*Math.sin(t)/Math.cos(s),u=i+c*180/Math.PI,d=r+l*180/Math.PI;a.push([d,u])}return a},[]),St=(0,c.useCallback)((e,t)=>{let[n,r]=e,[i,a]=t,o=(a-r)*Math.PI/180,s=(i-n)*Math.PI/180,c=Math.sin(o/2)*Math.sin(o/2)+Math.cos(r*Math.PI/180)*Math.cos(a*Math.PI/180)*Math.sin(s/2)*Math.sin(s/2);return 6371e3*(2*Math.atan2(Math.sqrt(c),Math.sqrt(1-c)))},[]),Ct=(0,c.useCallback)((e,t)=>{let n=R.current;if(!n)return;let r=n.getSource(`circle-preview-source`);if(!r)return;let i=St(e,t),a=xt(e,i);r.setData({type:`Feature`,geometry:{type:`Polygon`,coordinates:[a]},properties:{}});let o=Y.current,s=o?.strokeColor??`#3388ff`,c=o?.strokeWidth??2,l=o?.fillColor??`#3388ff`,u=o?.fillOpacity??.1;n.getLayer(`circle-preview-line`)&&(n.setPaintProperty(`circle-preview-line`,`line-color`,s),n.setPaintProperty(`circle-preview-line`,`line-width`,c)),n.getLayer(`circle-preview-fill`)&&(n.setPaintProperty(`circle-preview-fill`,`fill-color`,l),n.setPaintProperty(`circle-preview-fill`,`fill-opacity`,u));let d=vn.current,f=[],p=[];if(d?.showArea){let t=Math.PI*i*i;f.push({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{label:A(t)}})}if(d?.showRadius){let t=Y.current?.radiusAngle??90,n=D(e,i,t),r=[(e[0]+n[0])/2,(e[1]+n[1])/2];p.push({type:`Feature`,geometry:{type:`LineString`,coordinates:[e,n]},properties:{}}),f.push({type:`Feature`,geometry:{type:`Point`,coordinates:r},properties:{label:j(i)}})}let m=n.getSource(`circle-preview-measure-source`);m&&m.setData({type:`FeatureCollection`,features:f});let h=n.getSource(`circle-preview-radius-source`);h&&h.setData({type:`FeatureCollection`,features:p})},[St,xt]),wt=(0,c.useCallback)(()=>{let e=R.current;if(!e)return;let t=e.getSource(`circle-preview-source`);t&&t.setData({type:`FeatureCollection`,features:[]});let n=e.getSource(`circle-preview-measure-source`);n&&n.setData({type:`FeatureCollection`,features:[]});let r=e.getSource(`circle-preview-radius-source`);r&&r.setData({type:`FeatureCollection`,features:[]})},[]),Tt=(0,c.useCallback)(()=>{Xe.current=null,wt()},[wt]),Et=(0,c.useCallback)(()=>{let e=R.current;e&&(e.getSource(`polygon-preview-source`)||(e.addSource(`polygon-preview-source`,{type:`geojson`,data:{type:`FeatureCollection`,features:[]}}),e.addLayer({id:`polygon-preview-fill`,type:`fill`,source:`polygon-preview-source`,paint:{"fill-color":`#3388ff`,"fill-opacity":.1}}),e.addLayer({id:`polygon-preview-line`,type:`line`,source:`polygon-preview-source`,paint:{"line-color":`#3388ff`,"line-width":2,"line-dasharray":[4,4]}}),e.addSource(`polygon-vertices-source`,{type:`geojson`,data:{type:`FeatureCollection`,features:[]}}),e.addLayer({id:`polygon-vertices`,type:`circle`,source:`polygon-vertices-source`,paint:{"circle-radius":5,"circle-color":`#3388ff`,"circle-stroke-color":`#ffffff`,"circle-stroke-width":2}}),gt(e,`polygon-preview-measure-source`,`polygon-preview-measure-label`)))},[gt]),Dt=(0,c.useCallback)((e,t)=>{let n=R.current;if(!n)return;let r=n.getSource(`polygon-preview-source`),i=n.getSource(`polygon-vertices-source`);if(!r||!i)return;let a=[...e,t];if(a.length>=3){let e=[...a,a[0]];r.setData({type:`Feature`,geometry:{type:`Polygon`,coordinates:[e]},properties:{}})}else a.length===2?r.setData({type:`Feature`,geometry:{type:`LineString`,coordinates:a},properties:{}}):r.setData({type:`FeatureCollection`,features:[]});i.setData({type:`FeatureCollection`,features:e.map(e=>({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{}}))});let o=X.current,s=o?.strokeColor??`#3388ff`,c=o?.strokeWidth??2,l=o?.fillColor??`#3388ff`,u=o?.fillOpacity??.1;n.getLayer(`polygon-preview-line`)&&(n.setPaintProperty(`polygon-preview-line`,`line-color`,s),n.setPaintProperty(`polygon-preview-line`,`line-width`,c)),n.getLayer(`polygon-preview-fill`)&&(n.setPaintProperty(`polygon-preview-fill`,`fill-color`,l),n.setPaintProperty(`polygon-preview-fill`,`fill-opacity`,u)),n.getLayer(`polygon-vertices`)&&n.setPaintProperty(`polygon-vertices`,`circle-color`,s);let d=n.getSource(`polygon-preview-measure-source`);if(d){let e=vn.current,t=[];if(e?.showArea&&a.length>=3){let e=[...a,a[0]],n=ee(e),r=0,i=0;for(let e of a)r+=e[0],i+=e[1];r/=a.length,i/=a.length,t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[r,i]},properties:{label:A(n)}})}if(e?.showLength&&a.length>=2){for(let e=0;e<a.length-1;e++){let n=a[e],r=a[e+1],i=[(n[0]+r[0])/2,(n[1]+r[1])/2];t.push({type:`Feature`,geometry:{type:`Point`,coordinates:i},properties:{label:j(O(n,r))}})}if(a.length>=3){let e=a[a.length-1],n=a[0],r=[(e[0]+n[0])/2,(e[1]+n[1])/2];t.push({type:`Feature`,geometry:{type:`Point`,coordinates:r},properties:{label:j(O(e,n))}})}}d.setData({type:`FeatureCollection`,features:t})}},[]),Ot=(0,c.useCallback)(()=>{let e=R.current;if(!e)return;let t=e.getSource(`polygon-preview-source`);t&&t.setData({type:`FeatureCollection`,features:[]});let n=e.getSource(`polygon-vertices-source`);n&&n.setData({type:`FeatureCollection`,features:[]});let r=e.getSource(`polygon-preview-measure-source`);r&&r.setData({type:`FeatureCollection`,features:[]})},[]),kt=(0,c.useCallback)(()=>{Ze.current=[],Ot()},[Ot]),At=(0,c.useCallback)(()=>{let e=R.current;e&&(e.getSource(`square-preview-source`)||(e.addSource(`square-preview-source`,{type:`geojson`,data:{type:`FeatureCollection`,features:[]}}),e.addLayer({id:`square-preview-fill`,type:`fill`,source:`square-preview-source`,paint:{"fill-color":`#3388ff`,"fill-opacity":.1}}),e.addLayer({id:`square-preview-line`,type:`line`,source:`square-preview-source`,paint:{"line-color":`#3388ff`,"line-width":2,"line-dasharray":[4,4]}}),gt(e,`square-preview-measure-source`,`square-preview-measure-label`)))},[gt]),jt=(0,c.useCallback)((e,t)=>{let[n,r]=e,i=t/2/6371e3,a=r*Math.PI/180,o=i*180/Math.PI,s=i*180/Math.PI/Math.cos(a);return[[n-s,r+o],[n+s,r+o],[n+s,r-o],[n-s,r-o],[n-s,r+o]]},[]),Mt=(0,c.useCallback)((e,t)=>{let n=R.current;if(!n)return;let r=n.getSource(`square-preview-source`);if(!r)return;let i=St(e,t)*2,a=jt(e,i);r.setData({type:`Feature`,geometry:{type:`Polygon`,coordinates:[a]},properties:{}});let o=Z.current,s=o?.strokeColor??`#3388ff`,c=o?.strokeWidth??2,l=o?.fillColor??`#3388ff`,u=o?.fillOpacity??.1;n.getLayer(`square-preview-line`)&&(n.setPaintProperty(`square-preview-line`,`line-color`,s),n.setPaintProperty(`square-preview-line`,`line-width`,c)),n.getLayer(`square-preview-fill`)&&(n.setPaintProperty(`square-preview-fill`,`fill-color`,l),n.setPaintProperty(`square-preview-fill`,`fill-opacity`,u));let d=n.getSource(`square-preview-measure-source`);if(d){let t=vn.current,n=[];if(t?.showArea&&n.push({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{label:A(i*i)}}),t?.showLength){let e=[(a[1][0]+a[2][0])/2,(a[1][1]+a[2][1])/2];n.push({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{label:j(i)}})}d.setData({type:`FeatureCollection`,features:n})}},[St,jt]),Nt=(0,c.useCallback)(()=>{let e=R.current;if(!e)return;let t=e.getSource(`square-preview-source`);t&&t.setData({type:`FeatureCollection`,features:[]});let n=e.getSource(`square-preview-measure-source`);n&&n.setData({type:`FeatureCollection`,features:[]})},[]),Pt=(0,c.useCallback)(()=>{Qe.current=null,Nt()},[Nt]),Ft=(0,c.useCallback)(()=>{let e=R.current;e&&(e.getSource(`polyline-preview-source`)||(e.addSource(`polyline-preview-source`,{type:`geojson`,data:{type:`FeatureCollection`,features:[]}}),e.addLayer({id:`polyline-preview-line`,type:`line`,source:`polyline-preview-source`,paint:{"line-color":`#3388ff`,"line-width":2,"line-dasharray":[4,4]}}),e.addSource(`polyline-vertices-source`,{type:`geojson`,data:{type:`FeatureCollection`,features:[]}}),e.addLayer({id:`polyline-vertices`,type:`circle`,source:`polyline-vertices-source`,paint:{"circle-radius":5,"circle-color":`#3388ff`,"circle-stroke-color":`#ffffff`,"circle-stroke-width":2}}),gt(e,`polyline-preview-measure-source`,`polyline-preview-measure-label`)))},[gt]),It=(0,c.useCallback)((e,t)=>{let n=R.current;if(!n)return;let r=n.getSource(`polyline-preview-source`),i=n.getSource(`polyline-vertices-source`);if(!r||!i)return;let a=[...e,t];a.length>=2?r.setData({type:`Feature`,geometry:{type:`LineString`,coordinates:a},properties:{}}):r.setData({type:`FeatureCollection`,features:[]}),i.setData({type:`FeatureCollection`,features:e.map(e=>({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{}}))});let o=$e.current,s=o?.strokeColor??`#3388ff`,c=o?.strokeWidth??2;n.getLayer(`polyline-preview-line`)&&(n.setPaintProperty(`polyline-preview-line`,`line-color`,s),n.setPaintProperty(`polyline-preview-line`,`line-width`,c)),n.getLayer(`polyline-vertices`)&&n.setPaintProperty(`polyline-vertices`,`circle-color`,s);let l=n.getSource(`polyline-preview-measure-source`);if(l){let e=vn.current,t=[];if(e?.showLength&&a.length>=2)for(let e=0;e<a.length-1;e++){let n=a[e],r=a[e+1],i=[(n[0]+r[0])/2,(n[1]+r[1])/2];t.push({type:`Feature`,geometry:{type:`Point`,coordinates:i},properties:{label:j(O(n,r))}})}l.setData({type:`FeatureCollection`,features:t})}},[]),Lt=(0,c.useCallback)(()=>{let e=R.current;if(!e)return;let t=e.getSource(`polyline-preview-source`);t&&t.setData({type:`FeatureCollection`,features:[]});let n=e.getSource(`polyline-vertices-source`);n&&n.setData({type:`FeatureCollection`,features:[]});let r=e.getSource(`polyline-preview-measure-source`);r&&r.setData({type:`FeatureCollection`,features:[]})},[]),Rt=(0,c.useCallback)(()=>{et.current=[],Lt()},[Lt]),zt=(0,c.useCallback)(e=>{W(e),ht(e),e?(G(`marker`),$(),Tt(),kt(),Pt(),Rt()):G(null)},[ht,$,Tt,kt,Pt,Rt]),Bt=(0,c.useCallback)(e=>{if(G(e),e===`rectangle`){W(null),Q(),Tt(),kt(),Pt(),Rt();let e=R.current;e&&(e.getCanvas().style.cursor=`crosshair`)}else if(e===`circle`){W(null),Q(),$(),kt(),Pt(),Rt();let e=R.current;e&&(e.getCanvas().style.cursor=`crosshair`)}else if(e===`polygon`){W(null),Q(),$(),Tt(),Pt(),Rt();let e=R.current;e&&(e.getCanvas().style.cursor=`crosshair`)}else if(e===`square`){W(null),Q(),$(),Tt(),kt(),Rt();let e=R.current;e&&(e.getCanvas().style.cursor=`crosshair`)}else if(e===`polyline`){W(null),Q(),$(),Tt(),kt(),Pt();let e=R.current;e&&(e.getCanvas().style.cursor=`crosshair`)}else e===`marker`?($(),Tt(),kt(),Pt(),Rt()):(W(null),Q(),$(),Tt(),kt(),Pt(),Rt())},[Q,$,Tt,kt,Pt,Rt]),Vt=(0,c.useCallback)(e=>{e!==`picker`&&(pt(),Be(null)),e!==`edit`&&(W(null),G(null),$(),Rt(),Q()),Re(e)},[pt,Q,$,Rt]),Ht=(0,c.useCallback)(()=>Le,[Le]),Ut=(0,c.useCallback)(()=>ze,[ze]),Wt=(0,c.useCallback)(()=>{pt(),Be(null)},[pt]);(0,c.useEffect)(()=>{if(!Fe)return;let e=f.value;if(e&&isFinite(e.lng)&&isFinite(e.lat)){let t=[e.lng,e.lat];Be(e),ft(t)}},[f.value,ft,Fe]);let Gt=e=>`mode`in e,Kt=(0,c.useCallback)(e=>{if(Re(`edit`),pt(),Be(null),q.current=!0,Gt(e)){if(e.mode===`marker`)e.markerStyle?(Ge.current=e.markerStyle,J.current=null,Y.current=null,X.current=null,Z.current=null,$e.current=null,W(null),G(`marker`),e.markerStyle.src&&e.markerStyle.width?ht({id:`custom`,name:e.markerStyle.name||`Marker`,icon:e.markerStyle.src,width:e.markerStyle.width}):Q()):e.template&&(Ge.current=null,J.current=null,Y.current=null,X.current=null,Z.current=null,$e.current=null,W(e.template),G(`marker`),ht(e.template));else if(e.mode===`rectangle`){J.current=e.rectangleStyle||null,Ge.current=null,Y.current=null,X.current=null,Z.current=null,$e.current=null,W(null),G(`rectangle`),Q();let t=R.current;t&&(t.getCanvas().style.cursor=`crosshair`)}else if(e.mode===`circle`){Y.current=e.circleStyle||null,J.current=null,Ge.current=null,X.current=null,Z.current=null,$e.current=null,W(null),G(`circle`),Q();let t=R.current;t&&(t.getCanvas().style.cursor=`crosshair`)}else if(e.mode===`polygon`){X.current=e.polygonStyle||null,J.current=null,Ge.current=null,Y.current=null,Z.current=null,$e.current=null,W(null),G(`polygon`),Q();let t=R.current;t&&(t.getCanvas().style.cursor=`crosshair`)}else if(e.mode===`square`){Z.current=e.squareStyle||null,J.current=null,Ge.current=null,Y.current=null,X.current=null,$e.current=null,W(null),G(`square`),Q();let t=R.current;t&&(t.getCanvas().style.cursor=`crosshair`)}else if(e.mode===`polyline`){$e.current=e.polylineStyle||null,J.current=null,Ge.current=null,Y.current=null,X.current=null,Z.current=null,W(null),G(`polyline`),Q();let t=R.current;t&&(t.getCanvas().style.cursor=`crosshair`)}}else W(e),G(`marker`),ht(e),J.current=null,Ge.current=null,Y.current=null,X.current=null,Z.current=null,$e.current=null},[pt,ht,Q]);(0,c.useImperativeHandle)(t,()=>({startAnimation:nt,stopAnimation:rt,toggleAnimation:it,getMap:()=>R.current,openPopup:e=>ot(e,`programmatic`),closePopup:st,closeAllPopups:ct,isPopupOpen:lt,toggleUnitTrajectory:at,flyTo:ut,flyToEntities:dt,getMode:Ht,setMode:Vt,getPickedLocation:Ut,clearPickedLocation:Wt,startDrawing:Kt,getRenderer:e=>z.current.get(e)}),[nt,rt,it,ot,st,ct,lt,at,ut,dt,Ht,Vt,Ut,Wt,Kt]);let qt=(0,c.useCallback)(()=>{let e=R.current;if(!e)return;let t=new Set(v.map(e=>e.id)),n=new Set(z.current.keys());for(let e of n)t.has(e)||(z.current.get(e)?.destroy(),z.current.delete(e));let r=new Set(y.map(String));for(let t of v){let n=S(t,b),i=z.current.get(n.id);if(i)if(n.type===`radar`&&i instanceof ie)i.update(n);else if(n.type===`image`&&i instanceof ae)i.update(n);else if(n.type===`marker`&&i instanceof oe)i.update(n);else if(n.type===`unit`&&i instanceof se)i.update(n);else if(n.type===`polygon`&&i instanceof ce)i.update(n);else if(n.type===`circle`)if(n.fillType===`radial-gradient`)if(i instanceof pe)i.update(n);else{i.destroy();let t=new pe(e,n,x,C,w,T);z.current.set(n.id,t),t.setSelected(r.has(String(n.id)))}else if(i instanceof de)i.update(n);else{i.destroy();let t=new de(e,n,x,C,w,T);z.current.set(n.id,t),t.setSelected(r.has(String(n.id)))}else (n.type===`square`&&i instanceof he||n.type===`rectangle`&&i instanceof _e||n.type===`polyline`&&i instanceof le)&&i.update(n);else{let t=null;n.type===`radar`?t=new ie(e,n,x,C):n.type===`image`?t=new ae(e,n,x,C):n.type===`marker`?t=new oe(e,n,x,C):n.type===`unit`?t=new se(e,n,x,C):n.type===`polygon`?t=new ce(e,n,x,C,w,E):n.type===`circle`?t=n.fillType===`radial-gradient`?new pe(e,n,x,C,w,T):new de(e,n,x,C,w,T):n.type===`square`?t=new he(e,n,x,C,w,E):n.type===`rectangle`?t=new _e(e,n,x,C,w,E):n.type===`polyline`&&(t=new le(e,n,x,C,E)),t&&(z.current.set(n.id,t),t.setSelected(r.has(String(n.id))))}}},[v,y,b,x,C,w,T,E]),Jt=(0,c.useCallback)(()=>{for(let e of z.current.values())e.destroy();z.current.clear()},[]),Yt=(0,c.useCallback)(e=>{let t=e.getStyle();if(!t?.layers)return;let n=[`polygon-`,`polyline-`,`circle-`,`square-`,`rectangle-`,`radar-`,`image-`,`unit-`,`marker-`];for(let e of t.layers)if(n.some(t=>e.id.startsWith(t)))return e.id},[]),Xt=(0,c.useCallback)(e=>{let t=_,n={"raster-opacity":e.opacity??1},r=e.brightness??t?.brightness,i=e.saturation??t?.saturation,a=e.contrast??t?.contrast,o=e.hueRotate??t?.hueRotate;return r!==void 0&&(n[`raster-brightness-min`]=0,n[`raster-brightness-max`]=r),i!==void 0&&(n[`raster-saturation`]=i),a!==void 0&&(n[`raster-contrast`]=a),o!==void 0&&(n[`raster-hue-rotate`]=o),n},[_]),Zt=(0,c.useCallback)((e,t)=>{let n=`base-layer-source-${t.id}`,r=`base-layer-${t.id}`,i={type:`raster`,tiles:[t.url],tileSize:t.tileSize??256,minzoom:t.minzoom??0,maxzoom:t.maxzoom??22,scheme:t.scheme??`xyz`};t.bounds&&(i.bounds=t.bounds),t.attribution&&(i.attribution=t.attribution),e.addSource(n,i);let a=Yt(e);e.addLayer({id:r,type:`raster`,source:n,paint:Xt(t),layout:{visibility:t.visible===!1?`none`:`visible`}},a)},[Yt,Xt]),Qt=(0,c.useCallback)(async(e,t)=>{try{let n=await(await fetch(t.url)).json(),r=`base-layer-source-${t.id}`,i=`base-layer-${t.id}`;if(!we.current.has(t.id))return;let a=n.format===`pbf`||n.vector_layers,o=Yt(e);a?(e.addSource(r,{type:`vector`,tiles:n.tiles,minzoom:n.minzoom??0,maxzoom:n.maxzoom??22,bounds:n.bounds,attribution:n.attribution}),console.warn(`TileJSON "${t.id}" 是矢量瓦片,建议使用 type: 'style' 加载完整样式`)):(e.addSource(r,{type:`raster`,tiles:n.tiles,tileSize:t.tileSize??n.tileSize??256,minzoom:n.minzoom??0,maxzoom:n.maxzoom??22,bounds:n.bounds,attribution:n.attribution}),e.addLayer({id:i,type:`raster`,source:r,paint:Xt(t),layout:{visibility:t.visible===!1?`none`:`visible`}},o))}catch(e){console.error(`Failed to load TileJSON from ${t.url}:`,e)}},[Yt,Xt]),$t=(0,c.useCallback)(async(e,t)=>{try{let n=await(await fetch(t.url)).json();if(!we.current.has(t.id))return;if(n.sources)for(let[r,i]of Object.entries(n.sources)){let n=`base-layer-source-${t.id}-${r}`;e.getSource(n)||e.addSource(n,i)}let r=Yt(e);if(n.layers)for(let i of n.layers){let n=`base-layer-${t.id}-${i.id}`;if(e.getLayer(n))continue;let a={...i,id:n,source:i.source?`base-layer-source-${t.id}-${i.source}`:void 0};i.type===`raster`&&(a.paint={...a.paint,...Xt(t)}),t.visible===!1&&(a.layout={...a.layout,visibility:`none`}),e.addLayer(a,r)}if(n.glyphs&&!e.getStyle().glyphs){let t=e.style;t.glyphs=n.glyphs,t.stylesheet&&(t.stylesheet.glyphs=n.glyphs)}}catch(e){console.error(`Failed to load Style JSON from ${t.url}:`,e)}},[Yt,Xt]),en=(0,c.useCallback)((e,t)=>{let n=e.getStyle();if(!n)return;let r=`base-layer-${t}`,i=n.layers?.filter(e=>e.id.startsWith(r))??[];for(let t of i)e.getLayer(t.id)&&e.removeLayer(t.id);let a=`base-layer-source-${t}`,o=n.sources??{};for(let t of Object.keys(o))t.startsWith(a)&&e.getSource(t)&&e.removeSource(t)},[]),tn=(0,c.useCallback)(e=>{let t=R.current;if(!t)return;let n=new Set(e.map(e=>e.id)),r=we.current;for(let e of r)n.has(e)||(en(t,e),r.delete(e));for(let n of e)if(r.has(n.id)){let e=`base-layer-${n.id}`;if(t.getLayer(e)){let r=Xt(n);for(let[n,i]of Object.entries(r))t.setPaintProperty(e,n,i);t.setLayoutProperty(e,`visibility`,n.visible===!1?`none`:`visible`)}}else switch(r.add(n.id),n.type){case`raster`:Zt(t,n);break;case`tilejson`:Qt(t,n);break;case`style`:$t(t,n);break;default:{let e=n;e.url&&Zt(t,{...e,type:`raster`})}}},[Zt,Qt,$t,en,Xt]),nn=(0,c.useCallback)(e=>{let t=e;for(;t;){let e=t.getAttribute?.(`data-entity-id`);if(e)return e;t=t.parentElement}return null},[]),rn=(0,c.useCallback)(e=>{let t=[e.lngLat.lng,e.lngLat.lat],n={x:e.point.x,y:e.point.y},r=fn.current;if(r===`picker`){let e={lng:t[0],lat:t[1]};Be(e),ft(t),pn.current?.(e);return}if(r===`edit`){let e=hn.current;if(e===`rectangle`){let e=gn.current;if(!e)Ue(t);else{let n=J.current,r=S({...n,id:n?.id??mt(),type:`rectangle`,bounds:[e,t]},b);yt();let i=R.current;if(i&&!z.current.has(r.id)){let e=new _e(i,r,x,C,w,E);z.current.set(r.id,e)}_n.current.onRectangleAdd?.(r),Ue(null),J.current=null,q.current&&(q.current=!1,G(null),i&&(i.getCanvas().style.cursor=``))}return}if(e===`circle`){let e=Xe.current;if(!e)Xe.current={center:t};else{let n=St(e.center,t),r=Y.current,i=S({...r,id:r?.id??mt(),type:`circle`,center:e.center,radius:n},b);wt();let a=R.current;if(a&&!z.current.has(i.id)){let e=new de(a,i,x,C,w,T);z.current.set(i.id,e)}_n.current.onCircleAdd?.(i),Xe.current=null,Y.current=null,q.current&&(q.current=!1,G(null),a&&(a.getCanvas().style.cursor=``))}return}if(e===`polygon`){let e=Ze.current;if(e.length>=3){let n=e[0];if(St(n,t)<20){let t=X.current,n=S({...t,id:t?.id??mt(),type:`polygon`,coordinates:[...e]},b);Ot();let r=R.current;if(r&&!z.current.has(n.id)){let e=new ce(r,n,x,C,w,E);z.current.set(n.id,e)}_n.current.onPolygonAdd?.(n),Ze.current=[],X.current=null,q.current&&(q.current=!1,G(null),r&&(r.getCanvas().style.cursor=``));return}}Ze.current=[...e,t];return}if(e===`square`){let e=Qe.current;if(!e)Qe.current={center:t};else{let n=St(e.center,t)*2,r=Z.current,i=S({...r,id:r?.id??mt(),type:`square`,center:e.center,length:n},b);Nt();let a=R.current;if(a&&!z.current.has(i.id)){let e=new he(a,i,x,C,w,E);z.current.set(i.id,e)}_n.current.onSquareAdd?.(i),Qe.current=null,Z.current=null,q.current&&(q.current=!1,G(null),a&&(a.getCanvas().style.cursor=``))}return}if(e===`polyline`){et.current=[...et.current,t];return}let n=Ge.current;if(n&&n.src&&n.width){let e={...n,id:n.id??mt(),type:`marker`,center:t,src:n.src,width:n.width};_n.current.onMarkerAdd?.(e),W(null),G(null),Q(),Ge.current=null,q.current=!1;return}let r=mn.current;if(r){let e={id:mt(),type:`marker`,name:r.name,center:t,src:r.icon,width:r.size||r.width||32};r.customData!==void 0&&(e.customData=r.customData),_n.current.onMarkerAdd?.(e),W(null),G(null),Q(),q.current=!1;return}}let i=ln.current,a=un.current,o=dn.current,s=nn(e.originalEvent.target);if(s){let e=i.find(e=>String(e.id)===s);if(e){if(a?.(e),e.popup){let t=e.popup.content??I?.(e);t&&Je(e.popup,F,t).trigger===`click`&&o(s,`click`,n)}return}}for(let[t,r]of z.current){let s=r.getLabelLayerId();if(s&&R.current?.getLayer(s)&&R.current.queryRenderedFeatures(e.point,{layers:[s]}).length>0){let e=i.find(e=>e.id===t);if(e){if(a?.(e),e.popup){let r=e.popup.content??I?.(e);r&&Je(e.popup,F,r).trigger===`click`&&o(t,`click`,n)}return}}}for(let[e,r]of z.current)if(r.isPointInEntity(t)){let t=i.find(t=>t.id===e);if(t){if(a?.(t),t.popup){let r=t.popup.content??I?.(t);r&&Je(t.popup,F,r).trigger===`click`&&o(e,`click`,n)}return}}},[F,I,nn]),an=(0,c.useCallback)(e=>{let t=[e.lngLat.lng,e.lngLat.lat],n=hn.current,r=gn.current;n===`rectangle`&&r&&vt(r,t);let i=Xe.current;n===`circle`&&i&&Ct(i.center,t);let a=Ze.current;n===`polygon`&&a.length>0&&Dt(a,t);let o=Qe.current;n===`square`&&o&&Mt(o.center,t);let s=et.current;n===`polyline`&&s.length>0&&It(s,t);let c=ln.current,l=dn.current;for(let[e,n]of z.current)if(n.isPointInEntity(t)){let t=c.find(t=>t.id===e);if(!t?.popup)continue;let n=t.popup.content??I?.(t);if(!n)continue;let r=Je(t.popup,F,n);if(r.trigger===`hover`){ke.current&&clearTimeout(ke.current),ke.current=window.setTimeout(()=>{l(e,`hover`)},r.hoverDelay);return}}if(ke.current&&=(clearTimeout(ke.current),null),V?.openedBy===`hover`){let e=z.current.get(V.entityId);e&&!e.isPointInEntity(t)&&st(V.entityId)}},[F,I,V,st,vt,Ct,Dt,Mt,It]),on=(0,c.useCallback)(e=>{if(e.preventDefault(),fn.current!==`edit`)return;if(mn.current){W(null),G(null),Q();return}let t=hn.current;if(t===`rectangle`){if(gn.current)Ue(null),yt();else{G(null);let e=R.current;e&&(e.getCanvas().style.cursor=``)}return}if(t===`circle`){if(Xe.current)Xe.current=null,wt();else{G(null);let e=R.current;e&&(e.getCanvas().style.cursor=``)}return}if(t===`polygon`){let e=Ze.current;if(e.length>=3){let t=X.current,n=S({...t,id:t?.id??mt(),type:`polygon`,coordinates:[...e]},b);Ot();let r=R.current;if(r&&!z.current.has(n.id)){let e=new ce(r,n,x,C,w,E);z.current.set(n.id,e)}_n.current.onPolygonAdd?.(n),Ze.current=[],X.current=null,q.current&&(q.current=!1,G(null),r&&(r.getCanvas().style.cursor=``))}else if(e.length>0)Ze.current=[],Ot();else{G(null);let e=R.current;e&&(e.getCanvas().style.cursor=``)}return}if(t===`square`){if(Qe.current)Qe.current=null,Nt();else{G(null);let e=R.current;e&&(e.getCanvas().style.cursor=``)}return}if(t===`polyline`){let e=et.current;if(e.length>=2){let t=$e.current,n=S({...t,id:t?.id??mt(),type:`polyline`,coordinates:[...e]},b);Lt();let r=R.current;if(r&&!z.current.has(n.id)){let e=new le(r,n,x,C,E);z.current.set(n.id,e)}_n.current.onPolylineAdd?.(n),et.current=[],$e.current=null,q.current&&(q.current=!1,G(null),r&&(r.getCanvas().style.cursor=``))}else if(e.length>0)et.current=[],Lt();else{G(null);let e=R.current;e&&(e.getCanvas().style.cursor=``)}return}let n=[e.lngLat.lng,e.lngLat.lat],r={x:e.point.x,y:e.point.y},i=ln.current,a=nn(e.originalEvent.target);if(a){let e=i.find(e=>String(e.id)===a);if(e){sn(e,r,n);return}}for(let[t,a]of z.current){let o=a.getLabelLayerId();if(o&&R.current?.getLayer(o)&&R.current.queryRenderedFeatures(e.point,{layers:[o]}).length>0){let e=i.find(e=>e.id===t);if(e){sn(e,r,n);return}}}for(let[e,t]of z.current)if(t.isPointInEntity(n)){let t=i.find(t=>t.id===e);if(t){sn(t,r,n);return}}},[nn,Q,yt,wt,Ot,Nt,Lt]),sn=(0,c.useCallback)((e,t,n)=>{let r=xe.current?.getBoundingClientRect(),i=r?{x:t.x+r.left,y:t.y+r.top}:t;je({position:i,lngLat:n,items:[{key:`delete`,label:`删除`,icon:(0,p.jsx)(`img`,{src:Ne,alt:`delete`,style:{width:`18px`,flexShrink:0}}),danger:!0,onClick:()=>{_n.current.onEntityDelete?.(e)}}]})},[]),cn=(0,c.useCallback)(()=>{je(null)},[]);(0,c.useEffect)(()=>{let e=document.createElement(`div`);return e.id=`mapbox-popup-container-${Date.now()}`,e.style.cssText=`
58
58
  position: fixed;
59
59
  top: 0;
60
60
  left: 0;
@@ -70,4 +70,4 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
70
70
  pointer-events: none;
71
71
  height: 100%;
72
72
  z-index: ${(F?.zIndex??1e3)+100};
73
- `,document.body.appendChild(e),Me.current=e,()=>{document.body.contains(e)&&document.body.removeChild(e)}},[F?.zIndex]);let ln=(0,c.useRef)(v);ln.current=v;let un=(0,c.useRef)(L);un.current=L;let dn=(0,c.useRef)(at);dn.current=at;let fn=(0,c.useRef)(H);fn.current=H;let pn=(0,c.useRef)(m);pn.current=m;let mn=(0,c.useRef)(W);mn.current=W;let hn=(0,c.useRef)(Be);hn.current=Be;let gn=(0,c.useRef)(q);gn.current=q;let _n=(0,c.useRef)(d);_n.current=d;let vn=(0,c.useRef)(b);vn.current=b,(0,c.useEffect)(()=>{let e=e=>{if(e.key===`Escape`&&H===`edit`){if(W&&(G(null),K(null),$()),Be===`rectangle`)if(q)He(null),vt();else{K(null);let e=R.current;e&&(e.getCanvas().style.cursor=``)}if(Be===`circle`)if(Ye.current)Ye.current=null,wt();else{K(null);let e=R.current;e&&(e.getCanvas().style.cursor=``)}if(Be===`polygon`)if(Xe.current.length>0)Xe.current=[],Ot();else{K(null);let e=R.current;e&&(e.getCanvas().style.cursor=``)}if(Be===`square`)if(Ze.current)Ze.current=null,Nt();else{K(null);let e=R.current;e&&(e.getCanvas().style.cursor=``)}if(Be===`polyline`)if($e.current.length>0)$e.current=[],Lt();else{K(null);let e=R.current;e&&(e.getCanvas().style.cursor=``)}}};return document.addEventListener(`keydown`,e),()=>{document.removeEventListener(`keydown`,e)}},[H,W,Be,q,$,vt,wt,Ot,Nt,Lt]),(0,c.useEffect)(()=>{let e=R.current;if(!e||!V)return;let t=V.entityId,n=V.config,r=()=>{let r=ln.current.find(e=>e.id===t);if(!r){st();return}let{position:i}=Je(r,n,e,void 0,Oe.current);Oe.current&&(Oe.current.style.left=`${i.x}px`,Oe.current.style.top=`${i.y}px`)},i=setTimeout(()=>{r()},50);return e.on(`move`,r),e.on(`zoom`,r),e.on(`rotate`,r),e.on(`pitch`,r),()=>{clearTimeout(i),e.off(`move`,r),e.off(`zoom`,r),e.off(`rotate`,r),e.off(`pitch`,r)}},[V?.entityId,st]),(0,c.useEffect)(()=>{let e=R.current,t=xe.current;if(!e||!Ae||!t)return;let n=Ae.lngLat,r=()=>{let r=e.project(n),i=t.clientWidth,a=t.clientHeight;if(r.x<0||r.x>i||r.y<0||r.y>a){cn();return}let o=t.getBoundingClientRect(),s=r.x+o.left,c=r.y+o.top;Pe.current&&(Pe.current.style.left=`${s}px`,Pe.current.style.top=`${c}px`)};return e.on(`move`,r),e.on(`zoom`,r),e.on(`rotate`,r),e.on(`pitch`,r),()=>{e.off(`move`,r),e.off(`zoom`,r),e.off(`rotate`,r),e.off(`pitch`,r)}},[Ae?.lngLat,cn]),(0,c.useEffect)(()=>{if(!xe.current)return;let e={version:8,sources:{},layers:[]},{dragPan:t=!0,scrollZoom:c=!0,doubleClickZoom:u=!0,touchZoomRotate:d=!0,keyboard:f=!0,dragRotate:p=!0,pitchWithRotate:m=!0,touchPitch:_=!0,boxZoom:y=!0}=h,b=new l.default.Map({container:xe.current,style:o||e,center:n,zoom:r,pitch:i,bearing:a,maxBounds:s,dragPan:t,scrollZoom:c,doubleClickZoom:u,touchZoomRotate:d,keyboard:f,dragRotate:p,pitchWithRotate:m,touchPitch:_,boxZoom:y,transformRequest:(e,t)=>{if(t===`Glyphs`){let t=e.match(/\/fonts\/([^/]+)\/(\d+-\d+)\.pbf/);if(t){let e=decodeURIComponent(t[1]),n=t[2],r=e.split(`,`)[0].trim();return{url:`/gis-fonts/${encodeURIComponent(r)}/${n}.pbf`}}}return{url:e}}});return R.current=b,b.on(`load`,()=>{if(!b.getStyle().glyphs){let e=b.style,t=`/gis-fonts/{fontstack}/{range}.pbf`;e.glyphs=t,e.stylesheet&&(e.stylesheet.glyphs=t)}B.current.clear(),v.forEach(e=>{B.current.set(e.id,e)}),tn(g),qt(),gt(),bt(),Et(),At(),Ft(),Ie(b),ue?.(b)}),b.on(`click`,rn),b.on(`mousemove`,an),b.on(`contextmenu`,on),()=>{b.off(`click`,rn),b.off(`mousemove`,an),b.off(`contextmenu`,on),Jt(),ft(),$(),yt(),Rt(),b.remove(),R.current=null}},[]),(0,c.useEffect)(()=>{if(R.current){if(!R.current.isStyleLoaded()){R.current.once(`load`,()=>{B.current.clear(),v.forEach(e=>{B.current.set(e.id,e)}),qt()});return}B.current.clear(),v.forEach(e=>{B.current.set(e.id,e)}),qt()}},[v,qt]),(0,c.useEffect)(()=>{!R.current||!R.current.isStyleLoaded()||(Jt(),qt())},[x,C,w,T,E,Jt,qt]),(0,c.useEffect)(()=>{if(R.current){if(!R.current.isStyleLoaded()){R.current.once(`load`,()=>{tn(g)});return}tn(g)}},[g,tn]);let yn=(0,c.useRef)(void 0),bn=(0,c.useRef)(!0),xn=(0,c.useRef)(g);xn.current=g;let Sn=(0,c.useRef)(tn);Sn.current=tn;let Cn=(0,c.useRef)(Jt);Cn.current=Jt;let wn=(0,c.useRef)(qt);wn.current=qt;let Tn=(0,c.useRef)(gt);Tn.current=gt;let En=(0,c.useRef)(bt);En.current=bt;let Dn=(0,c.useRef)(Et);Dn.current=Et;let On=(0,c.useRef)(At);On.current=At;let kn=(0,c.useRef)(Ft);kn.current=Ft,(0,c.useEffect)(()=>{let e=R.current;if(!e)return;let t=o||{version:8,sources:{},layers:[]};if(bn.current){bn.current=!1,yn.current=o;return}yn.current!==o&&(yn.current=o,e.setStyle(t),e.once(`style.load`,()=>{if(!e.getStyle().glyphs){let t=e.style,n=`/gis-fonts/{fontstack}/{range}.pbf`;t.glyphs=n,t.stylesheet&&(t.stylesheet.glyphs=n)}we.current.clear(),Sn.current(xn.current),Cn.current(),wn.current(),Tn.current(),En.current(),Dn.current(),On.current(),kn.current()}))},[o]),(0,c.useEffect)(()=>{let e=new Set(y.map(String));for(let[t,n]of z.current)n.setSelected(e.has(String(t)))},[y]);let An=(0,c.useRef)({});(0,c.useEffect)(()=>{let e=R.current;if(!e)return;let t=An.current,o=n&&(t.center?.[0]!==n[0]||t.center?.[1]!==n[1]),s=t.zoom!==r,c=t.pitch!==i,l=t.bearing!==a;!o&&!s&&!c&&!l||(An.current={center:n,zoom:r,pitch:i,bearing:a},e.jumpTo({center:n,zoom:r,pitch:i,bearing:a}))},[n,r,i,a]);let jn=(()=>k===!1?null:k===!0?{enabled:!0}:k)(),Mn=(()=>te===!1?null:te===!0?{enabled:!0}:te)(),Nn=(()=>ne===!1?null:ne===!0?{enabled:!0}:ne)(),Pn=(()=>{if(M===!1)return null;let e,t;if(g&&g.length>0){let n=g.find(e=>e.hasRoadNetwork===!0)||g[0];if(n.type===`style`){let t=R.current?.getStyle();if(t?.sources){let r=`base-layer-source-${n.id}-`,i=Object.keys(t.sources).find(e=>e.startsWith(r));i&&(e=i)}}else e=`base-layer-source-${n.id}`;t=n.roadNetworkSourceLayer||`road`}return M===!0?{enabled:!0,source:e,sourceLayer:t}:{...M,source:M.source||e,sourceLayer:M.sourceLayer||t}})(),Fn=(()=>re?re===!0?{enabled:!0}:re:null)(),In=(()=>N?N===!0?{enabled:!0}:N:null)(),Ln=(0,c.useMemo)(()=>{let e=[];for(let t of g)if(t.applyRasterPaint)if(t.type===`style`){let n=R.current;if(n){let r=`base-layer-${t.id}-`,i=n.getStyle();if(i?.layers)for(let t of i.layers)t.id.startsWith(r)&&t.type===`raster`&&e.push(t.id)}}else e.push(`base-layer-${t.id}`);return e},[g,Fe]);return(0,p.jsxs)(`div`,{className:`comp-mapbox ${H===`picker`?`comp-mapbox--picker-mode`:``} ${ge}`,style:ye,children:[(0,p.jsx)(`div`,{ref:xe,className:`comp-mapbox__map`}),H===`picker`&&f.showCrosshair===!0&&(0,p.jsxs)(`div`,{className:`comp-mapbox__crosshair`,children:[(0,p.jsx)(`div`,{className:`comp-mapbox__crosshair-h`,style:f.crosshairColor?{backgroundColor:f.crosshairColor}:void 0}),(0,p.jsx)(`div`,{className:`comp-mapbox__crosshair-v`,style:f.crosshairColor?{backgroundColor:f.crosshairColor}:void 0})]}),H===`edit`&&d.showEditTools!==!1&&(d.markerTemplates&&d.markerTemplates.length>0||d.showRectangleTool||d.showCircleTool||d.showPolygonTool||d.showSquareTool||d.showPolylineTool)||Pn&&Pn.enabled!==!1?(0,p.jsxs)(`div`,{className:`comp-mapbox__edit-controls`,children:[H===`edit`&&d.showEditTools!==!1&&(d.markerTemplates&&d.markerTemplates.length>0||d.showRectangleTool||d.showCircleTool||d.showPolygonTool||d.showSquareTool||d.showPolylineTool)&&(0,p.jsx)(Ge,{markerTemplates:d.markerTemplates||[],selectedTemplate:W,onTemplateSelect:zt,drawMode:Be,onDrawModeChange:Bt,showRectangleTool:d.showRectangleTool,showCircleTool:d.showCircleTool,showPolygonTool:d.showPolygonTool,showSquareTool:d.showSquareTool,showPolylineTool:d.showPolylineTool}),Pn&&Pn.enabled!==!1&&(0,p.jsx)(Ee,{map:Fe,highlightWidth:Pn.highlightWidth,defaultRoadTypes:Pn.defaultRoadTypes,defaultMinWidth:Pn.defaultMinWidth,source:Pn.source,sourceLayer:Pn.sourceLayer,className:Pn.className,style:Pn.style})]}):null,(jn?.enabled!==!1||Mn?.enabled!==!1||Nn?.enabled!==!1||Fn&&Fn.enabled!==!1||In&&In.enabled!==!1)&&(0,p.jsxs)(`div`,{className:`comp-mapbox__controls`,children:[jn&&jn.enabled!==!1&&(0,p.jsx)(be,{map:Fe,precision:jn.precision,className:jn.className,style:jn.style}),Mn&&Mn.enabled!==!1&&(0,p.jsx)(Se,{map:Fe,maxWidth:Mn.maxWidth,unit:Mn.unit,className:Mn.className,style:Mn.style}),Fn&&Fn.enabled!==!1&&(0,p.jsx)(Ve,{map:Fe,entityConfig:b,className:Fn.className,style:Fn.style}),In&&In.enabled!==!1&&(0,p.jsx)(Ue,{map:Fe,value:_,onChange:P,rasterPaintLayerIds:Ln,className:In.className,style:In.style}),Nn&&Nn.enabled!==!1&&(0,p.jsx)(Ce,{map:Fe,initialCenter:n,initialZoom:r,initialPitch:i,initialBearing:a,duration:Nn.duration,className:Nn.className,style:Nn.style})]}),V&&De.current&&(0,p.jsx)(ve,{popupState:V,onClose:()=>ot(V.entityId),portalContainer:De.current,popupRef:Oe}),Ae&&Me.current&&(0,p.jsx)(Ke,{menuState:Ae,onClose:cn,portalContainer:Me.current,menuRef:Pe})]})});Ze.displayName=`Mapbox`,exports.BaseCanvasRenderer=P,exports.COLOR_SCHEMES=C,exports.CanvasCircleRenderer=pe,exports.CanvasImageRenderer=ae,exports.CanvasRadarRenderer=ie,exports.CircleRenderer=de,exports.ContextMenu=Ke,exports.CoordinateDisplay=be,exports.DEFAULT_NAME_CONFIG=h,exports.DEFAULT_SELECT_NAME_CONFIG=g,exports.EditControl=Ge,exports.EntityPopup=ve,exports.Mapbox=Ze,exports.MarkerRenderer=oe,exports.POPUP_DEFAULTS=T,exports.PolygonRenderer=ce,exports.PolylineRenderer=le,exports.RADAR_DEFAULTS=w,exports.ROAD_TYPE_OPTIONS=E,exports.RectangleRenderer=_e,exports.ResetViewControl=Ce,exports.RoadHighlightControl=Ee,exports.ScaleControl=Se,exports.SquareRenderer=he,exports.UnitRenderer=se,exports.bearing=k,exports.calculatePopupPosition=Je,exports.confidenceToOpacity=N,exports.destinationPoint=D,exports.distance=O,exports.mergePopupConfig=qe,exports.resolveNameConfig=x;
73
+ `,document.body.appendChild(e),Me.current=e,()=>{document.body.contains(e)&&document.body.removeChild(e)}},[F?.zIndex]);let ln=(0,c.useRef)(v);ln.current=v;let un=(0,c.useRef)(L);un.current=L;let dn=(0,c.useRef)(ot);dn.current=ot;let fn=(0,c.useRef)(Le);fn.current=Le;let pn=(0,c.useRef)(m);pn.current=m;let mn=(0,c.useRef)(U);mn.current=U;let hn=(0,c.useRef)(Ve);hn.current=Ve;let gn=(0,c.useRef)(K);gn.current=K;let _n=(0,c.useRef)(d);_n.current=d;let vn=(0,c.useRef)(b);vn.current=b,(0,c.useEffect)(()=>{let e=e=>{if(e.key===`Escape`&&Le===`edit`){if(U&&(W(null),G(null),Q()),Ve===`rectangle`)if(K)Ue(null),yt();else{G(null);let e=R.current;e&&(e.getCanvas().style.cursor=``)}if(Ve===`circle`)if(Xe.current)Xe.current=null,wt();else{G(null);let e=R.current;e&&(e.getCanvas().style.cursor=``)}if(Ve===`polygon`)if(Ze.current.length>0)Ze.current=[],Ot();else{G(null);let e=R.current;e&&(e.getCanvas().style.cursor=``)}if(Ve===`square`)if(Qe.current)Qe.current=null,Nt();else{G(null);let e=R.current;e&&(e.getCanvas().style.cursor=``)}if(Ve===`polyline`)if(et.current.length>0)et.current=[],Lt();else{G(null);let e=R.current;e&&(e.getCanvas().style.cursor=``)}}};return document.addEventListener(`keydown`,e),()=>{document.removeEventListener(`keydown`,e)}},[Le,U,Ve,K,Q,yt,wt,Ot,Nt,Lt]),(0,c.useEffect)(()=>{let e=R.current;if(!e||!V)return;let t=V.entityId,n=V.config,r=()=>{let r=ln.current.find(e=>e.id===t);if(!r){ct();return}let{position:i}=Ye(r,n,e,void 0,Oe.current);Oe.current&&(Oe.current.style.left=`${i.x}px`,Oe.current.style.top=`${i.y}px`)},i=setTimeout(()=>{r()},50);return e.on(`move`,r),e.on(`zoom`,r),e.on(`rotate`,r),e.on(`pitch`,r),()=>{clearTimeout(i),e.off(`move`,r),e.off(`zoom`,r),e.off(`rotate`,r),e.off(`pitch`,r)}},[V?.entityId,ct]),(0,c.useEffect)(()=>{let e=R.current,t=xe.current;if(!e||!Ae||!t)return;let n=Ae.lngLat,r=()=>{let r=e.project(n),i=t.clientWidth,a=t.clientHeight;if(r.x<0||r.x>i||r.y<0||r.y>a){cn();return}let o=t.getBoundingClientRect(),s=r.x+o.left,c=r.y+o.top;Pe.current&&(Pe.current.style.left=`${s}px`,Pe.current.style.top=`${c}px`)};return e.on(`move`,r),e.on(`zoom`,r),e.on(`rotate`,r),e.on(`pitch`,r),()=>{e.off(`move`,r),e.off(`zoom`,r),e.off(`rotate`,r),e.off(`pitch`,r)}},[Ae?.lngLat,cn]),(0,c.useEffect)(()=>{if(!xe.current)return;let e={version:8,sources:{},layers:[]},{dragPan:t=!0,scrollZoom:c=!0,doubleClickZoom:u=!0,touchZoomRotate:d=!0,keyboard:f=!0,dragRotate:p=!0,pitchWithRotate:m=!0,touchPitch:_=!0,boxZoom:y=!0}=h,b=new l.default.Map({container:xe.current,style:o||e,center:n,zoom:r,pitch:i,bearing:a,maxBounds:s,dragPan:t,scrollZoom:c,doubleClickZoom:u,touchZoomRotate:d,keyboard:f,dragRotate:p,pitchWithRotate:m,touchPitch:_,boxZoom:y,transformRequest:(e,t)=>{if(t===`Glyphs`){let t=e.match(/\/fonts\/([^/]+)\/(\d+-\d+)\.pbf/);if(t){let e=decodeURIComponent(t[1]),n=t[2],r=e.split(`,`)[0].trim();return{url:`/gis-fonts/${encodeURIComponent(r)}/${n}.pbf`}}}return{url:e}}});return R.current=b,b.on(`load`,()=>{if(!b.getStyle().glyphs){let e=b.style,t=`/gis-fonts/{fontstack}/{range}.pbf`;e.glyphs=t,e.stylesheet&&(e.stylesheet.glyphs=t)}B.current.clear(),v.forEach(e=>{B.current.set(e.id,e)}),tn(g),qt(),_t(),bt(),Et(),At(),Ft(),Ie(b),ue?.(b)}),b.on(`click`,rn),b.on(`mousemove`,an),b.on(`contextmenu`,on),()=>{b.off(`click`,rn),b.off(`mousemove`,an),b.off(`contextmenu`,on),Jt(),pt(),Q(),$(),Rt(),b.remove(),R.current=null}},[]),(0,c.useEffect)(()=>{if(R.current){if(!R.current.isStyleLoaded()){R.current.once(`load`,()=>{B.current.clear(),v.forEach(e=>{B.current.set(e.id,e)}),qt()});return}B.current.clear(),v.forEach(e=>{B.current.set(e.id,e)}),qt()}},[v,qt]),(0,c.useEffect)(()=>{!R.current||!R.current.isStyleLoaded()||(Jt(),qt())},[x,C,w,T,E,Jt,qt]),(0,c.useEffect)(()=>{if(R.current){if(!R.current.isStyleLoaded()){R.current.once(`load`,()=>{tn(g)});return}tn(g)}},[g,tn]);let yn=(0,c.useRef)(void 0),bn=(0,c.useRef)(!0),xn=(0,c.useRef)(g);xn.current=g;let Sn=(0,c.useRef)(tn);Sn.current=tn;let Cn=(0,c.useRef)(Jt);Cn.current=Jt;let wn=(0,c.useRef)(qt);wn.current=qt;let Tn=(0,c.useRef)(_t);Tn.current=_t;let En=(0,c.useRef)(bt);En.current=bt;let Dn=(0,c.useRef)(Et);Dn.current=Et;let On=(0,c.useRef)(At);On.current=At;let kn=(0,c.useRef)(Ft);kn.current=Ft,(0,c.useEffect)(()=>{let e=R.current;if(!e)return;let t=o||{version:8,sources:{},layers:[]};if(bn.current){bn.current=!1,yn.current=o;return}yn.current!==o&&(yn.current=o,e.setStyle(t),e.once(`style.load`,()=>{if(!e.getStyle().glyphs){let t=e.style,n=`/gis-fonts/{fontstack}/{range}.pbf`;t.glyphs=n,t.stylesheet&&(t.stylesheet.glyphs=n)}we.current.clear(),Sn.current(xn.current),Cn.current(),wn.current(),Tn.current(),En.current(),Dn.current(),On.current(),kn.current()}))},[o]),(0,c.useEffect)(()=>{let e=new Set(y.map(String));for(let[t,n]of z.current)n.setSelected(e.has(String(t)))},[y]);let An=(0,c.useRef)({});(0,c.useEffect)(()=>{let e=R.current;if(!e)return;let t=An.current,o=n&&(t.center?.[0]!==n[0]||t.center?.[1]!==n[1]),s=t.zoom!==r,c=t.pitch!==i,l=t.bearing!==a;!o&&!s&&!c&&!l||(An.current={center:n,zoom:r,pitch:i,bearing:a},e.jumpTo({center:n,zoom:r,pitch:i,bearing:a}))},[n,r,i,a]);let jn=(()=>k===!1?null:k===!0?{enabled:!0}:k)(),Mn=(()=>te===!1?null:te===!0?{enabled:!0}:te)(),Nn=(()=>ne===!1?null:ne===!0?{enabled:!0}:ne)(),Pn=(()=>{if(M===!1)return null;let e,t;if(g&&g.length>0){let n=g.find(e=>e.hasRoadNetwork===!0)||g[0];if(n.type===`style`){let t=R.current?.getStyle();if(t?.sources){let r=`base-layer-source-${n.id}-`,i=Object.keys(t.sources).find(e=>e.startsWith(r));i&&(e=i)}}else e=`base-layer-source-${n.id}`;t=n.roadNetworkSourceLayer||`road`}return M===!0?{enabled:!0,source:e,sourceLayer:t}:{...M,source:M.source||e,sourceLayer:M.sourceLayer||t}})(),Fn=(()=>re?re===!0?{enabled:!0}:re:null)(),In=(()=>N?N===!0?{enabled:!0}:N:null)(),Ln=(0,c.useMemo)(()=>{let e=[];for(let t of g)if(t.applyRasterPaint)if(t.type===`style`){let n=R.current;if(n){let r=`base-layer-${t.id}-`,i=n.getStyle();if(i?.layers)for(let t of i.layers)t.id.startsWith(r)&&t.type===`raster`&&e.push(t.id)}}else e.push(`base-layer-${t.id}`);return e},[g,Fe]);return(0,p.jsxs)(`div`,{className:`comp-mapbox ${Le===`picker`?`comp-mapbox--picker-mode`:``} ${ge}`,style:ye,children:[(0,p.jsx)(`div`,{ref:xe,className:`comp-mapbox__map`}),Le===`picker`&&f.showCrosshair===!0&&(0,p.jsxs)(`div`,{className:`comp-mapbox__crosshair`,children:[(0,p.jsx)(`div`,{className:`comp-mapbox__crosshair-h`,style:f.crosshairColor?{backgroundColor:f.crosshairColor}:void 0}),(0,p.jsx)(`div`,{className:`comp-mapbox__crosshair-v`,style:f.crosshairColor?{backgroundColor:f.crosshairColor}:void 0})]}),Le===`edit`&&d.showEditTools!==!1&&(d.markerTemplates&&d.markerTemplates.length>0||d.showRectangleTool||d.showCircleTool||d.showPolygonTool||d.showSquareTool||d.showPolylineTool)||Pn&&Pn.enabled!==!1?(0,p.jsxs)(`div`,{className:`comp-mapbox__edit-controls`,children:[Le===`edit`&&d.showEditTools!==!1&&(d.markerTemplates&&d.markerTemplates.length>0||d.showRectangleTool||d.showCircleTool||d.showPolygonTool||d.showSquareTool||d.showPolylineTool)&&(0,p.jsx)(Ke,{markerTemplates:d.markerTemplates||[],selectedTemplate:U,onTemplateSelect:zt,drawMode:Ve,onDrawModeChange:Bt,showRectangleTool:d.showRectangleTool,showCircleTool:d.showCircleTool,showPolygonTool:d.showPolygonTool,showSquareTool:d.showSquareTool,showPolylineTool:d.showPolylineTool}),Pn&&Pn.enabled!==!1&&(0,p.jsx)(Ee,{map:Fe,highlightWidth:Pn.highlightWidth,defaultRoadTypes:Pn.defaultRoadTypes,defaultMinWidth:Pn.defaultMinWidth,source:Pn.source,sourceLayer:Pn.sourceLayer,className:Pn.className,style:Pn.style})]}):null,(jn?.enabled!==!1||Mn?.enabled!==!1||Nn?.enabled!==!1||Fn&&Fn.enabled!==!1||In&&In.enabled!==!1)&&(0,p.jsxs)(`div`,{className:`comp-mapbox__controls`,children:[jn&&jn.enabled!==!1&&(0,p.jsx)(be,{map:Fe,precision:jn.precision,className:jn.className,style:jn.style}),Mn&&Mn.enabled!==!1&&(0,p.jsx)(Se,{map:Fe,maxWidth:Mn.maxWidth,unit:Mn.unit,className:Mn.className,style:Mn.style}),Fn&&Fn.enabled!==!1&&(0,p.jsx)(He,{map:Fe,entityConfig:b,className:Fn.className,style:Fn.style}),In&&In.enabled!==!1&&(0,p.jsx)(We,{map:Fe,value:_,onChange:P,rasterPaintLayerIds:Ln,className:In.className,style:In.style}),Nn&&Nn.enabled!==!1&&(0,p.jsx)(Ce,{map:Fe,initialCenter:n,initialZoom:r,initialPitch:i,initialBearing:a,duration:Nn.duration,className:Nn.className,style:Nn.style})]}),V&&De.current&&(0,p.jsx)(ve,{popupState:V,onClose:()=>st(V.entityId),portalContainer:De.current,popupRef:Oe}),Ae&&Me.current&&(0,p.jsx)(qe,{menuState:Ae,onClose:cn,portalContainer:Me.current,menuRef:Pe})]})});Qe.displayName=`Mapbox`,exports.BaseCanvasRenderer=P,exports.COLOR_SCHEMES=C,exports.CanvasCircleRenderer=pe,exports.CanvasImageRenderer=ae,exports.CanvasRadarRenderer=ie,exports.CircleRenderer=de,exports.ContextMenu=qe,exports.CoordinateDisplay=be,exports.DEFAULT_NAME_CONFIG=h,exports.DEFAULT_SELECT_NAME_CONFIG=g,exports.EditControl=Ke,exports.EntityPopup=ve,exports.Mapbox=Qe,exports.MarkerRenderer=oe,exports.POPUP_DEFAULTS=T,exports.PolygonRenderer=ce,exports.PolylineRenderer=le,exports.RADAR_DEFAULTS=w,exports.ROAD_TYPE_OPTIONS=E,exports.RectangleRenderer=_e,exports.ResetViewControl=Ce,exports.RoadHighlightControl=Ee,exports.ScaleControl=Se,exports.SquareRenderer=he,exports.UnitRenderer=se,exports.bearing=k,exports.calculatePopupPosition=Ye,exports.confidenceToOpacity=N,exports.destinationPoint=D,exports.distance=O,exports.mergePopupConfig=Je,exports.resolveNameConfig=x;
package/dist/index.mjs CHANGED
@@ -5362,15 +5362,14 @@ const Mapbox = forwardRef((e, c) => {
5362
5362
  St(), tt(null);
5363
5363
  }, [St]);
5364
5364
  useEffect(() => {
5365
- if (!Ze || R !== "picker") return;
5365
+ if (!Ze) return;
5366
5366
  let e = y.value;
5367
- if (e) {
5367
+ if (e && isFinite(e.lng) && isFinite(e.lat)) {
5368
5368
  let t = [e.lng, e.lat];
5369
5369
  tt(e), xt(t);
5370
5370
  }
5371
5371
  }, [
5372
5372
  y.value,
5373
- R,
5374
5373
  xt,
5375
5374
  Ze
5376
5375
  ]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bbl-mapbox-react",
3
- "version": "0.0.15",
3
+ "version": "0.0.16",
4
4
  "description": "React Mapbox 地图组件库,支持雷达、图像、标记、轨迹等多种 GIS 实体渲染",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",