LineOverlayItem.js 2.6 KB

12345
  1. /*
  2. All material copyright ESRI, All Rights Reserved, unless otherwise specified.
  3. See https://js.arcgis.com/4.25/esri/copyright.txt for details.
  4. */
  5. import{_ as t}from"../../chunks/tslib.es6.js";import e from"../../core/Accessor.js";import{property as s}from"../../core/accessorSupport/decorators/property.js";import"../../core/arrayUtils.js";import"../../core/accessorSupport/ensureType.js";import{subclass as i}from"../../core/accessorSupport/decorators/subclass.js";import"../../libs/maquette/projection.js";import{h as o}from"../../libs/maquette/h.js";import"../../libs/maquette/projector.js";let r=class extends e{constructor(t){super(t),this.startX=0,this.startY=0,this.endX=0,this.endY=0,this.width=1,this.color=[0,0,0,.5],this.visible=!0}get startPosition(){return[this.startX,this.startY]}set startPosition(t){this._set("startX",t[0]),this._set("startY",t[1])}get endPosition(){return[this.endX,this.endY]}set endPosition(t){this._set("endX",t[0]),this._set("endY",t[1])}get _strokeStyle(){const t=this.color;return`rgba(${t[0]}, ${t[1]}, ${t[2]}, ${t[3]})`}get _lineCap(){return"round"}render(){const{height:t,left:e,top:s,width:i,x1:r,x2:n,y1:a,y2:l}=this._calculateCoordinates(h),p=`stroke: ${this._strokeStyle}; stroke-width: ${this.width}; stroke-linecap: ${this._lineCap};`;return o("div",{classes:{"esri-line-overlay-item":!0},styles:{left:e+"px",top:s+"px",width:i+"px",height:t+"px",visibility:this.visible?"visible":"hidden"}},[o("svg",{width:i,height:t},[o("line",{x1:r,y1:a,x2:n,y2:l,style:p})])])}renderCanvas(t){if(!this.visible)return;t.strokeStyle=this._strokeStyle,t.lineWidth=this.width,t.lineCap=this._lineCap;const e=this._calculateCoordinates(h);t.beginPath(),t.moveTo(e.left+e.x1,e.top+e.y1),t.lineTo(e.left+e.x2,e.top+e.y2),t.stroke()}_calculateCoordinates(t){const e=Math.min(this.startX,this.endX),s=Math.max(this.startX,this.endX),i=Math.min(this.startY,this.endY),o=Math.max(this.startY,this.endY),r=this.width;return t.left=e-r,t.top=i-r,t.width=s-e+2*r,t.height=Math.max(20,o-i+2*r),t.x1=this.startX-e+r,t.y1=this.startY-i+r,t.x2=this.endX-e+r,t.y2=this.endY-i+r,t}};t([s()],r.prototype,"startX",void 0),t([s()],r.prototype,"startY",void 0),t([s()],r.prototype,"endX",void 0),t([s()],r.prototype,"endY",void 0),t([s()],r.prototype,"startPosition",null),t([s()],r.prototype,"endPosition",null),t([s()],r.prototype,"width",void 0),t([s()],r.prototype,"color",void 0),t([s()],r.prototype,"visible",void 0),t([s({readOnly:!0})],r.prototype,"_strokeStyle",null),r=t([i("esri.views.overlay.LineOverlayItem")],r);const h={left:0,top:0,width:0,height:0,x1:0,y1:0,x2:0,y2:0},n=r;export{n as default};