1import{L as t}from"./chunk-BzSrTqFP.js";import{b as i,n as s,M as e,h as a}from"./chunk-BIodJjId.js";import{a as n}from"./chunk-Biqc47oa.js";import"./chunk-CHPXP26E.js";import"./chunk-BhLMWRjL.js";import"./chunk-D8A3YXSB.js";const o=t.Polygon.extend({async setGridPoints(t){this.routePoints=t,this.onChangeGrid&&(this.onChangeGrid(t),this._updatePath())},async setProps(t={}){const{mode:s,shouldDrawGrid:e,selectedGridPoint:a,angle:n,gridStep:o,onChange:h}=t;void 0!==s&&s!==this.mode&&s===i.DIRECT&&(this.routePoints=[],this.onChangeGrid?.([]));const r=!(this.mode===s&&this.shouldDrawGrid===e&&this.selectedGridPoint===a&&this._angle===n&&this.gridStep===o);return void 0!==e&&(this.shouldDrawGrid=e),void 0!==s&&(this.mode=s),this.selectedGridPoint=a??0,this.onChangeGrid=h?.bind(this)??this.onChangeGrid,this._angle=n??this._angle??0,this.gridStep=Math.max(1,o??this.gridStep??1),r&&this._updatePath(),this},async handleAddGridPoint(t){const s=a();if(s?.imageOverlay&&this.shouldDrawGrid&&this.mode===i.DIRECT){const i=s.imageOverlay.getValueAtLatLng(t.latlng);this.routePoints.push({index:e(`${i}-${t.latlng.lat}-${t.latlng.lng}`),x:t.latlng.lat,y:t.latlng.lng,value:i}),this.onChangeGrid?.(this.routePoints),this._updatePath()}else this._onClick&&this._onClick(t)},_createCanvas(t=100,i=100){const s=new OffscreenCanvas(t,i);return s.width=t,s.height=i,s},_initCanvas(){this._canvasGrid||(this._canvasGrid=this._createCanvas())},_updateGrid(){if(!this._map||!this?._map?.imageOverlay)return;const a=this._canvasGrid;if(!a.width)return;this.tmpCanvas||(this.tmpCanvas=this._createCanvas(100,100));const o=(t,i,e,a,n)=>0===n?{x:e,y:a}:{x:s(Math.cos(n)*(e-t)+Math.sin(n)*(a-i)+t,1),y:s(Math.cos(n)*(a-i)-Math.sin(n)*(e-t)+i,1)},h=this._map.latLngToLayerPoint(this.getBounds().getNorthWest()),r=this._map.latLngToLayerPoint(this.getBounds().getSouthEast()),l=this._map.distance(this._map.layerPointToLatLng(t.point(h.x,0)),this._map.layerPointToLatLng(t.point(r.x,0))),d=a.width/l,g=Math.max(a.width,a.height),c=this.gridStep*d;this.tmpCanvas.width=this.tmpCanvas.height=g;const m=a.getContext("2d",{willReadFrequently:!0}),y=this.tmpCanvas.getContext("2d",{willReadFrequently:!0});if(!this.shouldDrawGrid)return void m.clearRect(0,0,g,g);const p=this._map.latLngToLayerPoint(this.getBounds().getNorthWest()),u=n(this.getLatLngs(),this._map,p),_=10,P=g/2;if(this.mode===i.GRID){this.routePoints=[];for(let t=-c*_;t<=g+c*_;t+=c){const i=o(P,P,t,-c*_,this._angle);y.moveTo(i.x,i.y);const s=o(P,P,t,g+c*_,this._angle);y.lineTo(s.x,s.y)}for(let t=-c*_;t<g+c*_;t+=c){const i=o(P,P,-c*_,t,this._angle);y.moveTo(i.x,i.y);const s=o(P,P,g+c*_,t,this._angle);y.lineTo(s.x,s.y)}y.stroke(),y.beginPath(),y.fillStyle="red",y.strokeStyle="black",y.lineWidth=1;for(let i=-c*_;i<g+c*_;i+=c)for(let s=-c*_;s<g+c*_;s+=c){const n=o(P,P,i+.5*c,s+.5*c,this._angle),h=t.point(n.x+p.x,n.y+p.y),r=this._map.layerPointToLatLng(h);if(this._map.imageOverlay.hasDataAtLatLng(r)&&n.x>0&&n.y>0&&n.x<a.width&&n.y<a.height){const t=this._map.imageOverlay.getValueAtLatLng(r);y.moveTo(n.x+Math.min(5,c/5),n.y),y.arc(n.x,n.y,Math.min(5,c/5),0,2*Math.PI),this.routePoints.push({index:e(`${t}-${r.lat}-${r.lng}`),x:r.lat,y:r.lng,value:t})}}y.closePath(),y.fill(),y.stroke(),this.onChangeGrid?.(this.routePoints)}else y.beginPath(),this.routePoints.forEach(({x:i,y:s,index:e})=>{const a=this._map.latLngToLayerPoint(t.latLng(i,s));y.moveTo(a.x-p.x+Math.min(5,c/5),a.y-p.y),y.arc(a.x-p.x,a.y-p.y,Math.min(5,c/5),0,360),y.fillStyle=this.selectedGridPoint===e?"yellow":"red"}),y.closePath(),y.fill(),y.stroke();m.save(),m.beginPath();const v=i=>{const s=i?.[0];if(s&&void 0!==s.x){const s=t.LineUtil.simplify(i,18/this._map.getZoom());m.moveTo(s[0].x,s[0].y),s.slice(1).forEach(t=>m.lineTo(t.x,t.y)),m.lineTo(s[0].x,s[0].y)}else i.forEach(v)};v(u),m.closePath(),m.clip(),m.drawImage(this.tmpCanvas,0,0,g,g),m.restore()},async _updatePath(){if(!this._pxBounds||!this._renderer||!this?._map?.imageOverlay)return;await new Promise(requestAnimationFrame);const t=this._pxBounds,i=t.getSize(),s=this._renderer._ctx;s&&(s.save(),s.imageSmoothingEnabled=!1,this.shouldDrawGrid&&(this._canvasGrid.width=i.x,this._canvasGrid.height=i.y,this._updateGrid(),s.drawImage(this._canvasGrid,t.min.x,t.min.y,i.x,i.y)),s.restore(
1))},beforeAdd(i){this._map=i,this.routePoints=[],t.Polygon.prototype.beforeAdd.call(this,i)},onAdd(i){t.Polygon.prototype.onAdd.call(this,i),i.off("click",this.handleAddGridPoint,this),i.on("click",this.handleAddGridPoint,this)},onRemove(){this.setGridPoints([]),this.setProps(),this._map.off("click",this.handleAddGridPoint,this),t.Polygon.prototype.onRemove.call(this)},async initialize(s,e){return t.Polygon.prototype.initialize.call(this,s,{...e,interactive:!1,indexOverlayLayer:!0,stroke:!1,fill:!1}),this.mode=i.GRID,this._initCanvas(),this}});t.polygon.grid=(t=[],i={})=>new o(t,i);const h=t.polygon.grid;export{h as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.