(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-422e17ee"],{"7ad5":function(e,t,i){"use strict";i.d(t,"a",(function(){return l})),i.d(t,"b",(function(){return c}));var s=i("d047"),r=i("c6d7"),n=i("4377"),o=i("3886"),a=i("690a"),h=i("b7bd");function c(e){const t=new a["a"];return t.extensions.add("GL_OES_standard_derivatives"),t.attributes.add(h["a"].POSITION,"vec3"),t.attributes.add(h["a"].UV0,"vec2"),t.vertex.uniforms.add("proj","mat4").add("view","mat4"),t.varyings.add("vUV","vec2"),e.multipassTerrainEnabled&&t.varyings.add("depth","float"),t.vertex.code.add(o["a"]` void main(void) { vUV = uv0; ${e.multipassTerrainEnabled?"depth = (view * vec4(position, 1.0)).z;":""} gl_Position = proj * view * vec4(position, 1.0); } `),e.multipassTerrainEnabled&&(t.fragment.include(s["a"]),t.include(r["b"],e)),t.fragment.uniforms.add("size","vec2").add("color1","vec4").add("color2","vec4"),t.fragment.include(n["a"]),t.fragment.code.add(o["a"]` void main() { ${e.multipassTerrainEnabled?"terrainDepthTest(gl_FragCoord, depth);":""} vec2 uvScaled = vUV / (2.0 * size); vec2 uv = fract(uvScaled - 0.25); vec2 ab = clamp((abs(uv - 0.5) - 0.25) / fwidth(uvScaled), -0.5, 0.5); float fade = smoothstep(0.25, 0.5, max(fwidth(uvScaled.x), fwidth(uvScaled.y))); float t = mix(abs(ab.x + ab.y), 0.5, fade); gl_FragColor = mix(color2, color1, t); ${e.oitEnabled?"gl_FragColor = premultiplyAlpha(gl_FragColor);":""} } `),t}const l=Object.freeze({__proto__:null,build:c})},fbed:function(e,t,i){"use strict";i.r(t),i.d(t,"default",(function(){return Nt}));var s=i("a4ee"),r=i("fc29"),n=i("b2b2"),o=i("59b2"),a=i("b50f"),h=(i("c120"),i("cea0"),i("d386")),c=i("caf1e"),l=i("1bd2"),d=i("aa0f"),p=i("af40"),u=i("477c"),g=i("8188"),m=i("f694"),b=i("38a4"),_=i("f315"),f=i("9812"),O=i("3349"),j=i("02f1"),v=i("e431"),y=i("0b2d"),x=i("0fc4"),L=i("5996"),V=i("3a35"),w=i("f547"),E=i("ea51"),C=i("1219"),S=i("40b6"),P=i("680b");function M(e,t){const i=t.center;Object(v["y"])(i,0,0,0);for(let r=0;r{if(0===t[0]&&0===t[1]&&0===t[2])return!1;for(let i=0;i{Y(i.elevationProvider,e),Object(g["t"])(e,O[t],l),Object(g["t"])(e,j[t],c),b&&(Object(g["u"])(e,f[t]),Object(g["t"])(e,y[t],u),Object(v["t"])(y[t],y[t]))});const x=this._updatePathLengths(s);if(this.pathLength=this._length>1?Object(_["b"])(h.normalizeDistance(x),"meters"):null,b){const e=this._updateGeodesicPathLengths(s,l);this.geodesicPathLength=this._length>1?Object(_["b"])(e,"meters"):null}else this.geodesicPathLength=null;return this._updateCursorSegmentLength(e,t),this._updateMode(e,o),s?(this._updateArea(i,h,c,l,r),b&&this._updateGeodesicArea(i),!0):(this.area=null,this.geodesicArea=null,this.perimeterLength=null,this.triangleIndices=null,this.geodesicTriangleIndices=null,this.intersectingSegments.clear(),this.geodesicIntersectingSegments.clear(),!0)}getData(){return{positionsWorldCoords:this.positionsWorldCoords,positionsRenderCoords:this.positionsRenderCoords,positionsProjectedWorldCoords:this.positionsProjectedWorldCoords,positionsFittedRenderCoords:this.positionsFittedRenderCoords,positionsGeographic:this.positionsGeographic,positionsSpherical:this.positionsSpherical,positionsStereographic:this.positionsStereographic,pathSegmentLengths:this.pathSegmentLengths,geodesicPathSegmentLengths:this.geodesicPathSegmentLengths,perimeterSegmentLengths:this.perimeterSegmentLengths,intersectingSegments:this.intersectingSegments,geodesicIntersectingSegments:this.geodesicIntersectingSegments,triangleIndices:this.triangleIndices,geodesicTriangleIndices:this.geodesicTriangleIndices,areaCentroidWorldCoords:this.areaCentroidWorldCoords,areaCentroidRenderCoords:this.areaCentroidRenderCoords,geodesicAreaCentroidRenderCoords:this.geodesicAreaCentroidRenderCoords,fittingMode:this.fittingMode,area:this.area,geodesicArea:this.geodesicArea,pathLength:this.pathLength,geodesicPathLength:this.geodesicPathLength,perimeterLength:this.perimeterLength,cursorSegmentLength:this.cursorSegmentLength,geodesicCursorSegmentLength:this.geodesicCursorSegmentLength,unitNormalizer:this.unitNormalizer,actualMeasurementMode:this.actualMeasurementMode}}_resize(e){for(e2&&A(o,l),this.fittingMode=this._selectFittingMode(l,o,this._worldUp,r);let p=0;if("horizontal"===this.fittingMode){let e=-1/0;a.forEach((t,i)=>{const s=n.getAltitude(a[i]);s>e&&(e=s,p=i)})}const u=o[p];let m=l,b=this._worldTangent;"horizontal"===this.fittingMode?m=this._worldUp:"vertical"===this.fittingMode&&(m=this._tempVec3,b=this._worldUp,Object(P["g"])(l,this._worldUp,m)),Object(v["m"])(this._frame[2],m),Object(P["g"])(b,m,this._frame[0]),Object(v["i"])(this._frame[1],this._frame[0],this._frame[2]),Object(v["u"])(this._frame[1],this._frame[1]);const f=this._tempVec3,j=this._tempU,y=this._tempV;for(let _=0;_0?Object(_["b"])(t.normalizeDistance(this._updatePerimeterLengths()),"meters"):null,Object(F["a"])(c,this.areaCentroidRenderCoords),Object(g["y"])(this.areaCentroidRenderCoords,i,this.areaCentroidWorldCoords,s),this._updateIntersectingSegments(),this.area=0===this.intersectingSegments.size?Object(_["a"])(t.normalizeArea(this._computeArea()),"square-meters"):null}_updateGeodesicArea(e){const t=e.renderCoordsHelper,i=this.positionsSpherical,s=this.positionsStereographic,r=this._tempVec3,n=k(i,r);if(!n)return void(this.geodesicArea=null);const o=this._tempU,a=this._tempV;Object(P["n"])(r,o,a);for(let h=0;hMath.abs(T(e,t))).reduce((e,t)=>Math.max(e,t),0);M(t,this._tempSphere);const n=r/(2*this._tempSphere.radius),o=nMath.cos(Object(b["h"])(s.verticalAngleThreshold))?"horizontal":"vertical"),h}_updateCursorSegmentLength(e,t){const i=e.lastPoint;!e.isValidPolygon&&Object(n["k"])(i)&&Object(n["k"])(t)?(this.geodesicCursorSegmentLength=Object(_["b"])(R(i,t),"meters"),this.cursorSegmentLength=Object(_["b"])(this.unitNormalizer.normalizeDistance(D(i,t,this.unitNormalizer.spatialReference)),"meters")):(this.geodesicCursorSegmentLength=null,this.cursorSegmentLength=null)}_updateMode(e,t){if(t===d["a"].Auto){this.actualMeasurementMode="euclidean";let t=0;null!=this.geodesicPathLength&&(t+=this.geodesicPathLength.value),!e.isValidPolygon&&Object(n["k"])(this.geodesicCursorSegmentLength)&&(t+=this.geodesicCursorSegmentLength.value),t>$&&(this.actualMeasurementMode="geodesic")}else this.actualMeasurementMode=t===d["a"].Euclidean?"euclidean":"geodesic";null==this.geodesicPathLength&&(this.actualMeasurementMode="euclidean"),this._mode=t}}function X(e,t){const i=new Float64Array(e.length*t);for(let s=0;sthis._update()),Object(u["e"])(()=>this.analysisViewData.cursorPoint,()=>this._update(),u["c"]),Object(u["e"])(()=>this.analysisViewData.mode,()=>this._update(),u["c"])]),this._update()}destroy(){this._handles=Object(n["d"])(this._handles)}_update(e=!1){const t=this.analysisViewData,i={maxRelativeErrorCoplanar:.005,maxRelativeErrorAlmostCoplanar:.01,verticalAngleThreshold:80};if(this._measurementDataManager.update(t.path,t.cursorPoint,this.view,t.validMeasurement,i,t.mode,e)){const e=this._measurementDataManager.getData();this._set("measurementData",e),t.measurementData=e}}};Object(s["a"])([Object(o["b"])({constructOnly:!0})],Q.prototype,"view",void 0),Object(s["a"])([Object(o["b"])({constructOnly:!0})],Q.prototype,"analysis",void 0),Object(s["a"])([Object(o["b"])({readOnly:!0})],Q.prototype,"measurementData",void 0),Object(s["a"])([Object(o["b"])({constructOnly:!0})],Q.prototype,"analysisViewData",void 0),Q=Object(s["a"])([Object(h["a"])("esri.views.3d.analysis.AreaMeasurement.support.AreaMeasurementController")],Q);var K,ee=i("ce6d"),te=i("e92d"),ie=i("4ae5"),se=i("9180"),re=i("29a2"),ne=i("7577");!function(e){e[e.Z=0]="Z",e[e.M=1]="M"}(K||(K={}));class oe{constructor(e){this.spatialReference=e}createVector(){return this._tag(Object(j["b"])())}pointToVector(e){return this._tag(Object(j["f"])(e.x,e.y))}arrayToVector(e){return this._tag(Object(j["f"])(e[0],e[1]))}vectorToArray(e){return[e[0],e[1]]}pointToArray(e){return[e.x,e.y]}vectorToPoint(e,t=new ie["a"]){return t.x=e[0],t.y=e[1],t.z=void 0,t.m=void 0,t.spatialReference=this.spatialReference,t}arrayToPoint(e,t=new ie["a"]){return t.x=e[0],t.y=e[1],t.z=void 0,t.m=void 0,t.spatialReference=this.spatialReference,t}vectorToDehydratedPoint(e,t={x:void 0,y:void 0,z:void 0,m:void 0,hasZ:void 0,hasM:void 0,spatialReference:void 0,type:"point"}){return t.x=e[0],t.y=e[1],t.z=void 0,t.m=void 0,t.hasZ=!1,t.hasM=!1,t.spatialReference=this.spatialReference,t}lerp(e,t,i,s){return Object(O["o"])(s,e,t,i)}addDelta(e,t,i){e[0]+=t,e[1]+=i}distance(e,t){return Object(O["b"])(e,t)}getZ(e,t){return t}hasZ(){return!1}getM(e,t){return t}hasM(){return!1}clone(e){return this._tag(Object(j["e"])(e))}copy(e,t){return Object(O["c"])(t,e)}fromXYZ(e){return this._tag(Object(j["f"])(e[0],e[1]))}toXYZ(e,t=0){return Object(y["h"])(e[0],e[1],t)}_tag(e){return e}}class ae{constructor(e,t){this.valueType=e,this.spatialReference=t}createVector(){return this._tag(Object(y["f"])())}pointToVector(e){return this._tag(Object(y["h"])(e.x,e.y,this.valueType===K.Z?e.z:e.m))}arrayToVector(e){return this._tag(Object(y["h"])(e[0],e[1],e[2]||0))}vectorToArray(e){return[e[0],e[1],e[2]]}pointToArray(e){return this.valueType===K.Z?[e.x,e.y,e.z]:[e.x,e.y,e.m]}vectorToPoint(e,t=new ie["a"]){return t.x=e[0],t.y=e[1],t.z=this.valueType===K.Z?e[2]:void 0,t.m=this.valueType===K.M?e[2]:void 0,t.spatialReference=this.spatialReference,t}arrayToPoint(e,t=new ie["a"]){return t.x=e[0],t.y=e[1],t.z=this.valueType===K.Z?e[2]:void 0,t.m=this.valueType===K.M?e[2]:void 0,t.spatialReference=this.spatialReference,t}vectorToDehydratedPoint(e,t={x:void 0,y:void 0,z:void 0,m:void 0,hasZ:void 0,hasM:void 0,spatialReference:void 0,type:"point"}){const i=this.valueType===K.Z,s=this.valueType===K.M;return t.x=e[0],t.y=e[1],t.z=i?e[2]:void 0,t.m=s?e[2]:void 0,t.hasZ=i,t.hasM=s,t.spatialReference=this.spatialReference,t}lerp(e,t,i,s){return Object(v["k"])(s,e,t,i)}addDelta(e,t,i,s){e[0]+=t,e[1]+=i,this.valueType===K.Z&&(e[2]+=s)}distance(e,t){return this.valueType===K.Z?Object(v["o"])(e,t):Object(O["b"])(e,t)}getZ(e,t){return this.valueType===K.Z?e[2]:t}hasZ(){return this.valueType===K.Z}getM(e,t){return this.valueType===K.M?e[2]:t}hasM(){return this.valueType===K.M}clone(e){return this._tag(Object(y["g"])(e))}copy(e,t){return Object(v["m"])(t,e)}fromXYZ(e,t=0,i=0){return this._tag(Object(y["h"])(e[0],e[1],this.valueType===K.Z?e.length>2?e[2]:t:i))}toXYZ(e,t=0){return this._tag(Object(y["h"])(e[0],e[1],this.valueType===K.Z?e[2]:t))}_tag(e){return e}}class he{constructor(e){this.spatialReference=e}createVector(){return this._tag(Object(x["e"])())}pointToVector(e){return this._tag(Object(x["g"])(e.x,e.y,e.z,e.m))}arrayToVector(e){return this._tag(Object(x["g"])(e[0],e[1],e[2]||0,e[3]||0))}vectorToArray(e){return[e[0],e[1],e[2],e[3]]}pointToArray(e){return[e.x,e.y,e.z,e.m]}vectorToPoint(e,t=new ie["a"]){return t.x=e[0],t.y=e[1],t.z=e[2],t.m=e[3],t.spatialReference=this.spatialReference,t}arrayToPoint(e,t=new ie["a"]){return t.x=e[0],t.y=e[1],t.z=e[2],t.m=e[3],t.spatialReference=this.spatialReference,t}vectorToDehydratedPoint(e,t={x:void 0,y:void 0,z:void 0,m:void 0,hasZ:void 0,hasM:void 0,spatialReference:void 0,type:"point"}){return t.x=e[0],t.y=e[1],t.z=e[2],t.m=e[3],t.hasZ=!0,t.hasM=!0,t.spatialReference=this.spatialReference,t}lerp(e,t,i,s){return Object(ne["j"])(s,e,t,i)}addDelta(e,t,i,s){e[0]+=t,e[1]+=i,e[2]+=s}distance(e,t){return Object(v["o"])(e,t)}getZ(e){return e[2]}hasZ(){return!0}getM(e){return e[3]}hasM(){return!0}clone(e){return this._tag(Object(x["f"])(e))}copy(e,t){return Object(ne["c"])(t,e)}fromXYZ(e,t=0,i=0){return this._tag(Object(x["g"])(e[0],e[1],e.length>2?e[2]:t,i))}toXYZ(e){return Object(y["h"])(e[0],e[1],e[2])}_tag(e){return e}}function ce(e,t,i){return e&&t?new he(i):t?new ae(K.M,i):e?new ae(K.Z,i):new oe(i)}var le,de,pe=i("521c"),ue=i("7f83"),ge=i("3c9c");function me(e,t){if(!t.supported)return;let i=1/0,s=-1/0;const r=t.upperBoundX-t.lowerBoundX;e.forEach(e=>{let n=e.pos[0];for(;nt.upperBoundX;)n-=r;i=Math.min(i,n),s=Math.max(s,n),e.pos[0]=n});const n=s-i;r-n{e.pos[0]<0&&(e.pos[0]+=r)})}function be(e,t){const i=Object(ue["e"])(e);return t===ge["a"].Global&&i?{supported:!0,lowerBoundX:i.valid[0],upperBoundX:i.valid[1]}:{supported:!1,lowerBoundX:null,upperBoundX:null}}class _e{constructor(e){this.component=e,this.leftEdge=null,this.rightEdge=null,this.type="vertex",this.index=null}get pos(){return this._pos}set pos(e){this._pos=e,this.component.unnormalizeVertexPositions()}}class fe{constructor(e,t,i){this.component=e,this.leftVertex=t,this.rightVertex=i,this.type="edge",t.rightEdge=this,i.leftEdge=this}}class Oe{constructor(e,t){this.spatialReference=e,this.viewingMode=t,this.vertices=[],this.edges=[]}unnormalizeVertexPositions(){this.vertices.length<=1||me(this.vertices,be(this.spatialReference,this.viewingMode))}updateVertexIndex(e,t){if(0===this.vertices.length)return;const i=this.vertices[0];let s=null,r=e,n=t;do{s=r,s.index=n++,r=s.rightEdge?s.rightEdge.rightVertex:null}while(null!=r&&r!==i);s.leftEdge&&s!==this.vertices[this.vertices.length-1]&&this.swapVertices(this.vertices.indexOf(s),this.vertices.length-1)}getFirstVertex(){return 0===this.vertices.length?null:this.vertices[0]}getLastVertex(){return 0===this.vertices.length?null:this.vertices[this.vertices.length-1]}isClosed(){return this.vertices.length>2&&null!==this.vertices[0].leftEdge}swapVertices(e,t){const i=this.vertices[e];this.vertices[e]=this.vertices[t],this.vertices[t]=i}iterateVertices(e){if(0===this.vertices.length)return;const t=this.vertices[0];let i=t;do{e(i,i.index),i=Object(n["k"])(i.rightEdge)?i.rightEdge.rightVertex:null}while(i!==t&&null!=i)}}class je extends ee["a"]{constructor(e,t,i){super(),this.type=e,this.coordinateHelper=t,this.viewingMode=i,this._geometry=null,this.dirty=!0,this.components=[]}get geometry(){if(this.dirty){switch(this.type){case"point":this._geometry=this._toPoint();break;case"polyline":this._geometry=this._toPolyline();break;case"polygon":this._geometry=this._toPolygon()}this.dirty=!1}return this._geometry}get spatialReference(){return this.coordinateHelper.spatialReference}notifyChanges(e){this.dirty=!0,this.emit("change",e)}_toPoint(){return 0===this.components.length||0===this.components[0].vertices.length?null:this.coordinateHelper.vectorToPoint(this.components[0].vertices[0].pos)}_toPolyline(){const e=[],t=this.coordinateHelper.vectorToArray;return this.components.forEach((i,s)=>{const r=[];let n=i.vertices.find(e=>null==e.leftEdge);const o=n;do{r.push(t(n.pos)),n=n.rightEdge?n.rightEdge.rightVertex:null}while(n&&n!==o);e.push(r)}),new pe["a"]({paths:e,spatialReference:this.spatialReference,hasZ:this.coordinateHelper.hasZ(),hasM:this.coordinateHelper.hasM()})}_toPolygon(){const e=[],t=this.coordinateHelper.vectorToArray;return this.components.forEach((i,s)=>{const r=[],o=i.vertices[0];let a=o;const h=a;do{r.push(t(a.pos)),a=Object(n["k"])(a.rightEdge)?a.rightEdge.rightVertex:null}while(a&&a!==h);i.isClosed()&&r.push(t(o.pos)),e.push(r)}),new C["a"]({rings:e,spatialReference:this.spatialReference,hasZ:this.coordinateHelper.hasZ(),hasM:this.coordinateHelper.hasM()})}static fromGeometry(e,t){const i=e.spatialReference,s=ce(e.hasZ,e.hasM,i),r=new je(e.type,s,t);switch(e.type){case"polygon":{const n=e.rings;for(let e=0;e2&&Object(a["e"])(o[0],o[o.length-1]),l=c?o.length-1:o.length;for(let e=0;ethis.operation.apply(e)),this.editGeometry.components.forEach(e=>e.unnormalizeVertexPositions()),this.editGeometry.notifyChanges({operation:this.undone?"redo":"apply",updatedVertices:this.vertices})}undo(){this.vertices.forEach(e=>this.operation.undo(e)),this.editGeometry.notifyChanges({operation:"undo",updatedVertices:this.vertices}),this.undone=!0}canAccumulate(e){if(this.undone||e.vertices.length!==this.vertices.length)return!1;for(let t=0;tthis.operation.accumulate(t,e.operation)),this.operation.accumulateParams(e.operation),this.editGeometry.components.forEach(e=>e.unnormalizeVertexPositions()),this.editGeometry.notifyChanges({operation:"apply",updatedVertices:this.vertices}),!0)}}!function(e){e[e.CUMULATIVE=0]="CUMULATIVE",e[e.REPLACE=1]="REPLACE"}(de||(de={}));class xe{constructor(e,t,i=0){this.editGeometry=e,this.vertices=t,this.minNumberOfVertices=i,this.removedVertices=null}apply(){let e="redo";null==this.removedVertices?(this.removedVertices=[],this.vertices.forEach(e=>{const t=this._removeVertex(e);Object(n["k"])(t)&&this.removedVertices.push(t)}),e="apply"):this.removedVertices.forEach(e=>{this._removeVertex(e.removedVertex)}),this.editGeometry.notifyChanges({operation:e,removedVertices:this.vertices})}undo(){this.removedVertices.forEach(e=>{this._undoRemoveVertex(e)}),this.editGeometry.notifyChanges({operation:"undo",addedVertices:this.vertices})}accumulate(){return!1}_removeVertex(e){const t=e.component;if(t.vertices.length<=this.minNumberOfVertices)return null;const i={removedVertex:e,createdEdge:null},s=e.leftEdge,r=e.rightEdge;return t.vertices.splice(t.vertices.indexOf(e),1),s&&(t.edges.splice(t.edges.indexOf(s),1),s.leftVertex.rightEdge=null),r&&(t.edges.splice(t.edges.indexOf(r),1),r.rightVertex.leftEdge=null),0===e.index&&r&&this.vertices.length>0&&t.swapVertices(t.vertices.indexOf(r.rightVertex),0),s&&r&&(i.createdEdge=new fe(t,s.leftVertex,r.rightVertex),t.edges.push(i.createdEdge)),r&&t.updateVertexIndex(r.rightVertex,r.rightVertex.index-1),i}_undoRemoveVertex(e){const t=e.removedVertex,i=e.removedVertex.component,s=t.leftEdge,r=t.rightEdge;e.createdEdge&&i.edges.splice(i.edges.indexOf(e.createdEdge),1),i.vertices.push(t),s&&(i.edges.push(s),s.leftVertex.rightEdge=s),r&&(i.edges.push(r),r.rightVertex.leftEdge=r),i.updateVertexIndex(t,t.index)}}class Le{constructor(e,t,i){this.editGeometry=e,this.edge=t,this.t=i,this.createdVertex=null,this.left=null,this.right=null}apply(){let e="redo";const t=this.edge,i=t.component,s=t.leftVertex,r=t.rightVertex;i.edges.splice(i.edges.indexOf(t),1),Object(n["j"])(this.createdVertex)&&(e="apply",this.createdVertex=new _e(t.component)),i.vertices.push(this.createdVertex),this.createdVertex.pos=this.editGeometry.coordinateHelper.lerp(t.leftVertex.pos,t.rightVertex.pos,this.t,this.editGeometry.coordinateHelper.createVector()),Object(n["j"])(this.left)&&(this.left=new fe(i,s,this.createdVertex)),this.left.leftVertex.leftEdge?i.edges.push(this.left):i.edges.unshift(this.left),s.rightEdge=this.left,Object(n["j"])(this.right)&&(this.right=new fe(i,this.createdVertex,r)),i.edges.push(this.right),r.leftEdge=this.right,i.updateVertexIndex(this.createdVertex,s.index+1),this.editGeometry.notifyChanges({operation:e,addedVertices:[this.createdVertex]})}undo(){if(Object(n["j"])(this.createdVertex)||Object(n["j"])(this.left)||Object(n["j"])(this.right))return null;const e=this.edge,t=e.component,i=this.createdVertex.leftEdge,s=this.createdVertex.rightEdge,r=i.leftVertex,o=s.rightVertex;t.vertices.splice(t.vertices.indexOf(this.createdVertex),1),t.edges.splice(t.edges.indexOf(this.left),1),t.edges.splice(t.edges.indexOf(this.right),1),this.edge.leftVertex.leftEdge?t.edges.push(this.edge):t.edges.unshift(this.edge),r.rightEdge=e,o.leftEdge=e,t.updateVertexIndex(r,r.index),this.editGeometry.notifyChanges({operation:"undo",removedVertices:[this.createdVertex]})}accumulate(){return!1}}class Ve{constructor(e,t,i){this.editGeometry=e,this.vertex=t,this.pos=i}apply(){const e=Object(n["j"])(this.originalPosition);e&&(this.originalPosition=this.vertex.pos),this._apply(e?"apply":"redo")}undo(){this.vertex.pos=Object(n["t"])(this.originalPosition),this.editGeometry.notifyChanges({operation:"undo",updatedVertices:[this.vertex]})}accumulate(e){return e instanceof Ve&&e.vertex===this.vertex&&(this.pos=e.pos,this._apply("apply"),!0)}_apply(e){this.vertex.pos=this.pos,this.editGeometry.components.forEach(e=>e.unnormalizeVertexPositions()),this.editGeometry.notifyChanges({operation:e,updatedVertices:[this.vertex]})}}class we{constructor(e,t){this.editGeometry=e,this.component=t,this.createdEdge=null}apply(){let e="redo";if(Object(n["j"])(this.createdEdge)){e="apply";const t=this.component.getFirstVertex(),i=this.component.getLastVertex();if(this.component.isClosed()||this.component.vertices.length<3||Object(n["j"])(t)||Object(n["j"])(i))return;this.createdEdge=new fe(this.component,i,t)}this.createdEdge.leftVertex.rightEdge=this.createdEdge,this.createdEdge.rightVertex.leftEdge=this.createdEdge,this.component.edges.push(this.createdEdge),this.editGeometry.notifyChanges({operation:e})}undo(){Object(n["j"])(this.createdEdge)||(Object(a["j"])(this.component.edges,this.createdEdge),this.createdEdge.leftVertex.rightEdge=null,this.createdEdge.rightVertex.leftEdge=null,this.editGeometry.notifyChanges({operation:"undo"}))}accumulate(){return!1}}class Ee{constructor(e,t,i,s){this.helper=e,this.dx=t,this.dy=i,this.dz=s}_move(e,t,i,s){this.helper.addDelta(e.pos,t,i,s)}apply(e){this._move(e,this.dx,this.dy,this.dz)}undo(e){this._move(e,-this.dx,-this.dy,-this.dz)}canAccumulate(e){return e instanceof Ee}accumulate(e,t){this._move(e,t.dx,t.dy,t.dz)}accumulateParams(e){this.dx+=e.dx,this.dy+=e.dy,this.dz+=e.dz}}var Ce,Se=i("7289"),Pe=i("a1b1");function Me(e,t){return e[0]*t[1]-e[1]*t[0]}function Ae(e,t){const i=e.start,s=e.end,r=t.start,n=t.end,o=Object(O["f"])(De,s,i),a=Object(O["f"])(Re,n,r),h=Me(o,a);if(Math.abs(h)<=Te)return[];const c=Object(O["f"])(ze,i,r),l=Me(a,c)/h,d=Me(o,c)/h;if(l>=0){if(d>=0||t.type===Ce.LINE)return[Object(O["v"])(Ge,i,o,l)]}else if(e.type===Ce.LINE&&(d>=0||t.type===Ce.LINE))return[Object(O["v"])(Ge,i,o,l)];return[]}!function(e){e[e.RAY=0]="RAY",e[e.LINE=1]="LINE"}(Ce||(Ce={}));const Te=1e-6,De=Object(j["b"])(),Re=Object(j["b"])(),ze=Object(j["b"])(),Ge=Object(j["b"])();class Ie{constructor(e,t,i,s=0,r=Ne.IMMEDIATE){this.helper=e,this.planeType=t,this.edge=i,this.distance=s,this._plane=Object(Se["d"])(),this._offsetPlane=Object(Se["d"])(),this._minDistance=-1/0,this._maxDistance=1/0,r===Ne.IMMEDIATE&&this._initialize()}get plane(){return this._plane}get requiresSplitEdgeLeft(){return!this._left.isOriginalDirection}get requiresSplitEdgeRight(){return!this._right.isOriginalDirection}get edgeDirection(){return this._edgeDirection}_initialize(){this._initializeNeighbors(),this._initializePlane(),this._initializeDistanceConstraints()}_initializeNeighbors(){var e,t,i,s;const r=this._toXYZ(this.edge.leftVertex.pos),n=this._toXYZ(null==(e=this.edge.leftVertex.leftEdge)||null==(t=e.leftVertex)?void 0:t.pos),o=this._toXYZ(this.edge.rightVertex.pos),a=this._toXYZ(null==(i=this.edge.rightVertex.rightEdge)||null==(s=i.rightVertex)?void 0:s.pos);this._edgeDirection=Object(v["x"])(Object(y["f"])(),r,o),this._left=this._computeNeighbor(r,n,this._edgeDirection),this._right=this._computeNeighbor(o,a,this._edgeDirection)}_toXYZ(e){return Object(n["k"])(e)?this.helper.toXYZ(e):null}_computeNeighbor(e,t,i){if(Object(n["j"])(t))return{start:e,end:t,direction:Object(y["h"])(-i[1],i[0],0),isOriginalDirection:!0};const s=Object(v["x"])(Object(y["f"])(),e,t),r=!this._passesBisectingAngleThreshold(s,i);return{start:e,end:t,direction:r?this._bisectVectorsPerpendicular(i,s):s,isOriginalDirection:!r}}_passesBisectingAngleThreshold(e,t){const i=Math.abs(Object(Pe["a"])(t,e));return i>=ke&&i<=Math.PI-ke}_bisectVectorsPerpendicular(e,t){const i=Object(v["j"])(e,t)<0?e:Object(v["u"])(Object(y["f"])(),e),s=Math.abs(Object(v["j"])(i,t));if(!(s<.001||s>.999))return this._bisectDirection(i,t);const r=Object(v["i"])(Object(y["f"])(),i,[0,0,1]);return Object(v["t"])(r,r)}_bisectDirection(e,t){const i=Object(v["h"])(Object(y["f"])(),e,t);return Object(v["t"])(i,i)}_initializePlane(){const e=this._computeNormalDirection(this._left),t=this._computeNormalDirection(this._right);Object(v["j"])(e,t)<0&&Object(v["u"])(t,t),Object(Se["h"])(this._left.start,this._bisectDirection(e,t),this._plane)}_computeNormalDirection(e){const t=Object(v["i"])(Object(y["f"])(),e.direction,this._edgeDirection);Object(v["t"])(t,t);const i=Object(v["i"])(Object(y["f"])(),this._edgeDirection,t);return this.planeType===Ue.XY&&(i[2]=0),Object(v["t"])(i,i)}_initializeDistanceConstraints(){Object(n["k"])(this._left.end)&&!this.requiresSplitEdgeLeft&&this._updateDistanceConstraint(Object(Se["v"])(this._plane,this._left.end)),Object(n["k"])(this._right.end)&&!this.requiresSplitEdgeRight&&this._updateDistanceConstraint(Object(Se["v"])(this._plane,this._right.end)),this._updateIntersectDistanceConstraint(this._plane)}_updateDistanceConstraint(e){e<=0&&(this._minDistance=Math.max(this._minDistance,e)),e>=0&&(this._maxDistance=Math.min(this._maxDistance,e))}_updateIntersectDistanceConstraint(e){const t=Object(Se["r"])(e),i=this._edgeDirection,s=Object(v["h"])(Object(y["f"])(),this._left.start,this._left.direction),r=Object(v["h"])(Object(y["f"])(),this._right.start,this._right.direction),n=this._pointInBasis2D(Object(j["b"])(),t,i,this._left.start),o=this._pointInBasis2D(Object(j["b"])(),t,i,s),a=this._pointInBasis2D(Object(j["b"])(),t,i,this._right.start),h=this._pointInBasis2D(Object(j["b"])(),t,i,r),[c]=Ae({start:o,end:n,type:Ce.LINE},{start:h,end:a,type:Ce.LINE});if(!c)return;const l=Object(O["f"])(Object(j["b"])(),n,o);Object(O["i"])(l,l);const d=Object(O["f"])(Object(j["b"])(),c,o),p=Object(O["k"])(l,d),u=Object(v["h"])(Object(y["f"])(),s,Object(v["g"])(Object(y["f"])(),this._left.direction,-p)),g=Object(Se["v"])(e,u);this._updateDistanceConstraint(g)}_pointInBasis2D(e,t,i,s){return e[0]=Object(Pe["c"])(t,s),e[1]=Object(Pe["c"])(i,s),e}_offset(e,t){Number.isFinite(this._minDistance)&&(t=Math.max(this._minDistance,t)),Number.isFinite(this._maxDistance)&&(t=Math.min(this._maxDistance,t)),Object(Se["c"])(this._offsetPlane,this._plane),this._offsetPlane[3]-=t;const i=(e,t,i)=>Object(n["k"])(t)&&Object(Se["k"])(this._offsetPlane,e,Object(v["h"])(Object(y["f"])(),e,t),i),s=Object(y["f"])();(e===this.edge.leftVertex?i(this._left.start,this._left.direction,s):i(this._right.start,this._right.direction,s))&&this.helper.copy(this.helper.fromXYZ(s,void 0,this.helper.getM(e.pos)),e.pos)}signedDistanceToPoint(e){return Object(Se["v"])(this.plane,this.helper.toXYZ(this.helper.pointToVector(e)))}apply(e){this._offset(e,this.distance)}undo(e){this._offset(e,0)}canAccumulate(e){return e instanceof Ie&&this.edge.leftVertex.index===e.edge.leftVertex.index&&this.edge.rightVertex.index===e.edge.rightVertex.index&&this.edge.component===e.edge.component&&this._maybeEqualsVec3(this._left.direction,e._left.direction)&&this._maybeEqualsVec3(this._right.direction,e._right.direction)&&Object(v["E"])(Object(Se["r"])(this._plane),Object(Se["r"])(e._plane))}accumulate(e,t){const i=this._plane[3]-t._plane[3]+t.distance;this._offset(e,i)}accumulateParams(e){const t=e.distance-e._plane[3];this.distance=t+this._plane[3]}clone(){const e=new Ie(this.helper,this.planeType,this.edge,this.distance,Ne.DEFERRED);return Object(Se["c"])(e._plane,this._plane),Object(Se["c"])(e._offsetPlane,this._offsetPlane),e._maxDistance=this._maxDistance,e._minDistance=this._minDistance,e._left=this._cloneNeighbor(this._left),e._right=this._cloneNeighbor(this._right),e._edgeDirection=Object(v["m"])(Object(y["f"])(),this._edgeDirection),e}_maybeEqualsVec3(e,t){return Object(n["j"])(e)&&Object(n["j"])(t)||Object(n["k"])(e)&&Object(n["k"])(t)&&Object(v["E"])(e,t)}_cloneNeighbor({start:e,end:t,direction:i,isOriginalDirection:s}){return{start:Object(v["m"])(Object(y["f"])(),e),end:Object(n["k"])(t)?Object(v["m"])(Object(y["f"])(),t):null,direction:Object(v["m"])(Object(y["f"])(),i),isOriginalDirection:s}}}const ke=Object(b["h"])(15);var Ue,Ne;!function(e){e[e.XYZ=0]="XYZ",e[e.XY=1]="XY"}(Ue||(Ue={})),function(e){e[e.IMMEDIATE=0]="IMMEDIATE",e[e.DEFERRED=1]="DEFERRED"}(Ne||(Ne={}));class Ze{constructor(e,t,i=de.CUMULATIVE){this.origin=e,this.angle=t,this.accumulationType=i}_rotate(e,t){Object(O["r"])(e.pos,e.pos,this.origin,t)}apply(e){this._rotate(e,this.angle)}undo(e){this._rotate(e,-this.angle)}canAccumulate(e){return e instanceof Ze&&Object(a["e"])(this.origin,e.origin)}accumulate(e,t){const i=t.accumulationType===de.REPLACE;this._rotate(e,i?t.angle-this.angle:t.angle)}accumulateParams(e){const t=e.accumulationType===de.REPLACE;this.angle=t?e.angle:this.angle+e.angle}}class qe{constructor(e,t,i,s,r=de.CUMULATIVE){this.origin=e,this.axis1=t,this.factor1=i,this.factor2=s,this.accumulationType=r,this.axis2=Object(j["f"])(t[1],-t[0])}_scale(e,t,i){Object(O["q"])(e.pos,e.pos,this.origin,this.axis1,t),Object(O["q"])(e.pos,e.pos,this.origin,this.axis2,i)}apply(e){this._scale(e,this.factor1,this.factor2)}undo(e){this._scale(e,1/this.factor1,1/this.factor2)}canAccumulate(e){return e instanceof qe&&Object(a["e"])(this.origin,e.origin)&&Object(a["e"])(this.axis1,e.axis1)}accumulate(e,t){t.accumulationType===de.REPLACE?this._scale(e,t.factor1/this.factor1,t.factor2/this.factor2):this._scale(e,t.factor1,t.factor2)}accumulateParams(e){const t=e.accumulationType===de.REPLACE;this.factor1=t?e.factor1:this.factor1*e.factor1,this.factor2=t?e.factor2:this.factor2*e.factor2}}class We{constructor(){this.operations=[],this.closed=!1}close(){this.closed=!0}apply(){for(const e of this.operations)e.apply()}undo(){for(let e=this.operations.length-1;e>=0;e--)this.operations[e].undo()}accumulate(e){if(this.closed)return!1;const t=this.operations.length?this.operations[this.operations.length-1]:null;return t&&t.accumulate(e)||(this.operations.push(e),e.apply()),!0}}class Fe extends ee["a"]{constructor(e){super(),this.data=e,this.undoStack=[],this.redoStack=[],this.listener=this.data.on("change",e=>{e.addedVertices&&this.emit("vertex-add",{type:"vertex-add",vertices:e.addedVertices,operation:e.operation}),e.removedVertices&&this.emit("vertex-remove",{type:"vertex-remove",vertices:e.removedVertices,operation:e.operation}),e.updatedVertices&&this.emit("vertex-update",{type:"vertex-update",vertices:e.updatedVertices,operation:e.operation})})}destroy(){this.listener.remove()}splitEdge(e,t){return this._apply(new Le(this.data,e,t))}updateVertices(e,t,i=le.ACCUMULATE_STEPS){return this._apply(new ye(this.data,e,t),i)}moveVertices(e,t,i,s,r=le.ACCUMULATE_STEPS){return this.updateVertices(e,new Ee(this.data.coordinateHelper,t,i,s),r)}scaleVertices(e,t,i,s,r,n=le.ACCUMULATE_STEPS,o=de.CUMULATIVE){return this.updateVertices(e,new qe(t,i,s,r,o),n)}rotateVertices(e,t,i,s=le.ACCUMULATE_STEPS,r=de.CUMULATIVE){return this.updateVertices(e,new Ze(t,i,r),s)}removeVertices(e){return this._apply(new xe(this.data,e,this._minNumVerticesPerType))}appendVertex(e){return 0===this.data.components.length?null:this._apply(new ve(this.data,this.data.components[0],e))}setVertexPosition(e,t){return this._apply(new Ve(this.data,e,t))}offsetEdge(e,t,i,s=le.ACCUMULATE_STEPS){return this.updateVertices([t.leftVertex,t.rightVertex],new Ie(this.data.coordinateHelper,e,t,i),s)}closeComponent(e){return this.data.components.includes(e)?this._apply(new we(this.data,e)):null}canRemoveVertex(){return this.data.components[0].vertices.length>this._minNumVerticesPerType}createUndoGroup(){const e=new We;return this._apply(e),{remove:()=>e.close()}}undo(){if(this.undoStack.length>0){const e=this.undoStack.pop();return e.undo(),this.redoStack.push(e),e}return null}redo(){if(this.redoStack.length>0){const e=this.redoStack.pop();return e.apply(),this.undoStack.push(e),e}return null}get canUndo(){return this.undoStack.length>0}get canRedo(){return this.redoStack.length>0}get lastOperation(){return this.undoStack.length>0?this.undoStack[this.undoStack.length-1]:null}get _minNumVerticesPerType(){switch(this.data.type){case"point":return 1;case"polyline":return 2;case"polygon":return 3;default:return 0}}_apply(e,t=le.ACCUMULATE_STEPS){return t!==le.NEW_STEP&&!Object(n["j"])(this.lastOperation)&&this.lastOperation.accumulate(e)||(e.apply(),this.undoStack.push(e),this.redoStack=[]),e}static fromGeometry(e,t){return new Fe(je.fromGeometry(e,t))}}const He=te["a"].getLogger("esri.views.3d.analysis.AreaMeasurement.support.AreaMeasurement3DPathHelper");let Be=class extends ee["a"].EventedAccessor{constructor(e={}){super(e),this._handles=new p["a"],this._version=0,this._internalGeometryChange=!1,this._extent=Object(se["n"])()}destroy(){this._handles=Object(n["d"])(this._handles)}set areaMeasurement(e){this._set("areaMeasurement",e),Object(n["k"])(e)&&Object(n["k"])(this.view)&&this._initialize(e,this.view)}set view(e){this._set("view",e),Object(n["k"])(e)&&Object(n["k"])(this.areaMeasurement)&&this._initialize(this.areaMeasurement,e)}get initialized(){return Object(n["k"])(this.areaMeasurement)&&Object(n["k"])(this.view)}get version(){return this._version}get isValidPolygon(){return this.initialized&&this.editGeometry.components.length>0&&this.editGeometry.components[0].isClosed()}get extent(){if(this.initialized&&this.editGeometry.components.length>0&&this.editGeometry.components[0].vertices.length>0){const e=Object(se["n"])(this._extent);return this.forEachVertex(t=>{Object(se["q"])(e,t.pos)}),e}return null}get spatialReference(){return this.initialized?this.editGeometry.coordinateHelper.spatialReference:null}_initialize(e,t){this._handles.removeAll(),this._handles.add(Object(u["e"])(()=>e.geometry,()=>{this._updateEditGeometryFromModelGeometry(e,t)},u["d"])),this._makeDirty(!0)}_makeDirty(e=!1){this.notifyChange("isValidPolygon"),this.notifyChange("initialized"),this.notifyChange("extent"),e&&this.notifyChange("numVertices")}_updateEditGeometryFromModelGeometry(e,t){if(this._version++,this._internalGeometryChange)return;this._handles.remove("EditGeometry");let i=e.geometry;if(Object(n["k"])(i)){const s=Object(g["D"])(i,t.spatialReference);Object(n["j"])(s)&&Object(re["b"])(e,i.spatialReference,He),i=s}Object(n["k"])(i)?this._editGeometryOperations=Fe.fromGeometry(i,t.state.viewingMode):this._editGeometryOperations=new Fe(new je("polygon",ce(!0,!1,t.spatialReference),t.state.viewingMode)),this._makeDirty(!0),this.emit("change"),this._handles.add(this.editGeometry.on("change",t=>{this._makeDirty(null!=t.addedVertices||null!=t.removedVertices),this._internalGeometryChange=!0,e.geometry=this.numVertices>0?this.editGeometry.geometry:null,this._internalGeometryChange=!1}),"EditGeometry")}get editGeometry(){return this._editGeometryOperations.data}get vertices(){const e=[];return this.forEachVertex(t=>{e.push(t)}),e}get numVertices(){return this.initialized&&this.editGeometry.components.length>0?this.editGeometry.components[0].vertices.length:0}get lastPoint(){if(this.initialized&&this.editGeometry.components.length>0){const e=this.editGeometry.components[0].getLastVertex();if(Object(n["k"])(e))return this.editGeometry.coordinateHelper.vectorToPoint(e.pos)}return null}getVertex(e){if(!this.initialized||0===this.editGeometry.components.length||0===this.editGeometry.components[0].vertices.length)return null;const t=this.editGeometry.components[0].vertices[0];let i=t;do{if(i.index===e)return i;i=i.rightEdge.rightVertex}while(i!==t&&null!=i);return null}getVertexPositionAsPoint(e){return this.editGeometry.coordinateHelper.vectorToPoint(e.pos)}getVertexPositionAsPointFromIndex(e){return this.editGeometry.coordinateHelper.vectorToPoint(this.getVertex(e).pos)}forEachVertex(e){this.initialized&&this.editGeometry.components.length>0&&this.editGeometry.components[0].iterateVertices(e)}forEachVertexPosition(e){const t=this.editGeometry.coordinateHelper;this.forEachVertex((i,s)=>{t.vectorToPoint(i.pos,Xe),e(Xe,s)})}clear(){Object(n["k"])(this.areaMeasurement)&&(this.areaMeasurement.geometry=null)}add(e){if(!this.initialized)return null;if(0===this.editGeometry.components.length){const e=Object(n["t"])(this.view);this.editGeometry.components.push(new Oe(e.spatialReference,e.state.viewingMode))}const t=this._editGeometryOperations.appendVertex(this.editGeometry.coordinateHelper.pointToVector(e));return this.emit("change"),t}close(){if(!this.initialized||0===this.editGeometry.components.length)return null;const e=this._editGeometryOperations.closeComponent(this.editGeometry.components[0]);return this.emit("change"),e}ensureContains(e,t=""){let i=!1;if(this.editGeometry.components.forEach(t=>{t.iterateVertices(t=>{t===e&&(i=!0)})}),!i)throw new Error("vertex doesnt exist "+t);return i}setVertexPosition(e,t){if(!this.initialized)return null;const i=this._editGeometryOperations.setVertexPosition(e,this.editGeometry.coordinateHelper.pointToVector(t));return this.emit("change"),i}equals(e){if(this.numVertices!==e.numVertices)return!1;let t=!0;return this.forEachVertexPosition((i,s)=>{const r=e.getVertexPositionAsPointFromIndex(s);i.equals(r)||(t=!1)}),!!t}};Object(s["a"])([Object(o["b"])({value:null})],Be.prototype,"areaMeasurement",null),Object(s["a"])([Object(o["b"])({value:null})],Be.prototype,"view",null),Object(s["a"])([Object(o["b"])()],Be.prototype,"isValidPolygon",null),Object(s["a"])([Object(o["b"])()],Be.prototype,"extent",null),Object(s["a"])([Object(o["b"])()],Be.prototype,"spatialReference",null),Object(s["a"])([Object(o["b"])()],Be.prototype,"numVertices",null),Be=Object(s["a"])([Object(h["a"])("esri.views.3d.analysis.AreaMeasurement.support.AreaMeasurement3DPathHelper")],Be);const Xe=new ie["a"];i("1b8f");var Ye=i("7617"),$e=i("8048"),Je=i("d791"),Qe=i("afe1"),Ke=i("27ea"),et=i("94e6"),tt=i("5fae"),it=i("0278"),st=i("35b3"),rt=i("b7bd"),nt=i("a05b"),ot=i("b7c2"),at=i("d7f7"),ht=i("badc"),ct=i("8675"),lt=i("7c51"),dt=i("c6d7"),pt=i("8e97"),ut=i("c3a4"),gt=i("ca98"),mt=i("da35"),bt=i("fa1e"),_t=i("7438"),ft=i("c829"),Ot=i("7ad5"),jt=i("d17d"),vt=i("189c");class yt extends gt["a"]{initializeProgram(e){const t=yt.shader.get(),i=this.configuration,s=t.build({oitEnabled:i.transparencyPassType===ot["l"].Color,multipassTerrainEnabled:i.multipassTerrainEnabled,cullAboveGround:i.cullAboveGround});return new ft["a"](e.rctx,s,bt["a"])}bindPass(e,t){Object(pt["b"])(this.program,t.camera.projectionMatrix),this.program.setUniform2fv("size",e.size),this.program.setUniform4fv("color1",e.color1),this.program.setUniform4fv("color2",e.color2),t.multipassTerrainEnabled&&(this.program.setUniform2fv("nearFar",t.camera.nearFar),this.program.setUniform2fv("inverseViewport",t.inverseViewport),Object(dt["a"])(this.program,t))}bindDraw(e){Object(pt["c"])(this.program,e)}_setPipelineState(e){const t=this.configuration,i=e===ot["l"].NONE,s=e===ot["l"].FrontFace;return Object(vt["g"])({blending:t.transparent?i?Lt:Object(_t["f"])(e):null,depthTest:{func:Object(_t["g"])(e)},depthWrite:i?t.writeDepth&&vt["e"]:Object(_t["h"])(e),colorWrite:vt["d"],polygonOffset:i||s?t.polygonOffset&&xt:{factor:-1,units:-25}})}initializePipeline(){return this._setPipelineState(this.configuration.transparencyPassType)}}yt.shader=new ut["a"](Ot["a"],()=>i.e("chunk-2d0c53bb").then(i.bind(null,"3de9")));const xt={factor:0,units:-25},Lt=Object(vt["h"])(jt["b"].SRC_ALPHA,jt["b"].ONE,jt["b"].ONE_MINUS_SRC_ALPHA,jt["b"].ONE_MINUS_SRC_ALPHA);class Vt extends mt["a"]{constructor(){super(...arguments),this.transparent=!1,this.writeDepth=!0,this.polygonOffset=!1,this.transparencyPassType=ot["l"].NONE,this.multipassTerrainEnabled=!1,this.cullAboveGround=!1}}Object(s["a"])([Object(mt["b"])()],Vt.prototype,"transparent",void 0),Object(s["a"])([Object(mt["b"])()],Vt.prototype,"writeDepth",void 0),Object(s["a"])([Object(mt["b"])()],Vt.prototype,"polygonOffset",void 0),Object(s["a"])([Object(mt["b"])({count:ot["l"].COUNT})],Vt.prototype,"transparencyPassType",void 0),Object(s["a"])([Object(mt["b"])()],Vt.prototype,"multipassTerrainEnabled",void 0),Object(s["a"])([Object(mt["b"])()],Vt.prototype,"cullAboveGround",void 0);class wt extends st["b"]{constructor(e){super(e,Ct),this.techniqueConfig=new Vt}dispose(){}getPassParameters(){return this.parameters}getTechniqueConfig(e,t){return this.techniqueConfig.transparent=this.parameters.transparent,this.techniqueConfig.writeDepth=this.parameters.writeDepth,this.techniqueConfig.polygonOffset=this.parameters.polygonOffset,this.techniqueConfig.transparencyPassType=t?t.transparencyPassType:ot["l"].NONE,this.techniqueConfig.multipassTerrainEnabled=!!t&&t.multipassTerrainEnabled,this.techniqueConfig.cullAboveGround=!!t&&t.cullAboveGround,this.techniqueConfig}intersect(e,t,i,s,r,n,o){return Object(lt["i"])(e,t,s,r,n,void 0,o)}requiresSlot(e){let t=ht["a"].OPAQUE_MATERIAL;return this.parameters.transparent&&(t=this.parameters.writeDepth?ht["a"].TRANSPARENT_MATERIAL:ht["a"].TRANSPARENT_DEPTH_WRITE_DISABLED_MATERIAL),e===t||e===ht["a"].DRAPED_MATERIAL}createGLMaterial(e){return e.output===nt["a"].Color||e.output===nt["a"].Alpha?new Et(e):null}createBufferWriter(){return new ct["a"](ct["d"])}}class Et extends at["a"]{updateParameters(e){return this.ensureTechnique(yt,e)}beginSlot(e){return this.updateParameters(e)}bind(e,t){t.bindPass(this._material.getPassParameters(),e)}}const Ct={size:[1,1],color1:[.75,.75,.75,1],color2:[.5,.5,.5,1],transparent:!1,writeDepth:!0,polygonOffset:!1,...st["a"]};class St extends tt["a"]{constructor(e){super(e),this._checkerBoardMaterial=null,this._renderOccluded=st["c"].OccludeAndTransparent,this._geometry=null,this._size=[1,1],this._color1=Object(x["g"])(1,.5,0,.5),this._color2=Object(x["g"])(1,1,1,.5),this.applyProps(e)}get renderOccluded(){return this._renderOccluded}set renderOccluded(e){e!==this._renderOccluded&&(this._renderOccluded=e,this._updateMaterial())}get geometry(){return this._geometry}set geometry(e){this._geometry=e,this._geometryChanged()}get size(){return this._size}set size(e){this._size=e,this._updateMaterial()}get color1(){return this._color1}set color1(e){Object(ne["g"])(e,this._color1)||(Object(ne["c"])(this._color1,e),this._updateMaterial())}get color2(){return this._color2}set color2(e){Object(ne["g"])(e,this._color2)||(Object(ne["c"])(this._color2,e),this._updateMaterial())}_updateMaterial(){Object(n["k"])(this._checkerBoardMaterial)&&this._checkerBoardMaterial.setParameters({size:this._size,color1:this._color1,color2:this._color2,renderOccluded:this._renderOccluded})}createExternalResources(){this._checkerBoardMaterial=new wt({size:this._size,color1:this._color1,color2:this._color2,transparent:!0,writeDepth:!1,polygonOffset:!0,renderOccluded:st["c"].OccludeAndTransparent})}destroyExternalResources(){this._checkerBoardMaterial=null}forEachExternalMaterial(e){Object(n["k"])(this._checkerBoardMaterial)&&e(this._checkerBoardMaterial)}createGeometries(e){if(Object(n["j"])(this._geometry)||Object(n["j"])(this._checkerBoardMaterial))return;const t=Pt;Object(Je["a"])(t,this.transform);const i=this._geometry,s=[],r=Object(y["f"])();i.position.forEach(e=>{Object(v["l"])(r,e,t),s.push(r[0],r[1],r[2])});const o=[];i.uv.forEach(e=>{o.push(e[0],e[1])});const a=new it["a"]([[rt["a"].POSITION,{size:3,data:s,exclusive:!0}],[rt["a"].UV0,{size:2,data:o,exclusive:!0}]],[[rt["a"].POSITION,i.triangleIndices],[rt["a"].UV0,i.triangleIndices]]);e.addGeometry(a,this._checkerBoardMaterial)}_geometryChanged(){this.recreateGeometry()}}const Pt=Object(y["f"])();var Mt=i("5c1c"),At=i("3544"),Tt=i("2035"),Dt=i("6323");let Rt=class extends r["a"]{constructor(e){super(e),this._handles=new p["a"],this._params={...Gt},this._path=null,this._intersectedPath=null,this._perimeter=null,this._intersectedPerimeter=null,this._projectionLines=null,this._measurementArea=null,this._areaLabel=null,this._pathLengthLabel=null,this._cursorSegmentLengthLabel=null,this._perimeterLengthLabel=null,this._pathSegments=[],this._perimeterSegments=[],this._cursorSegment=null,this._origin=Object(y["f"])(),this._originTransform=Object(Qe["d"])(),this._cursorPositionRenderSpace=Object(y["f"])(),this.messages=null,this.viewData=It,this.areaLabel=null,this.perimeterLengthLabel=null,this.loadingMessages=!0}get visible(){return this.analysisViewData.visible}get testData(){return{labels:{area:this._areaLabel,pathLength:this._pathLengthLabel,cursorSegmentLength:this._cursorSegmentLengthLabel,perimeterLength:this._perimeterLengthLabel}}}initialize(){const e=this.view,t=this._params;this._path=new et["a"]({view:e,attached:!0,width:t.pathLineWidth,color:t.pathLineColor,polygonOffset:!0,renderOccluded:st["c"].OccludeAndTransparent}),this._intersectedPath=new et["a"]({view:e,attached:!0,width:t.pathLineWidth,color:t.intersectingLineColor,polygonOffset:!0,renderOccluded:st["c"].OccludeAndTransparent}),this._perimeter=new et["a"]({view:e,attached:!0,width:t.perimeterLineWidth,color:t.perimeterLineColor,polygonOffset:!0,renderOccluded:st["c"].OccludeAndTransparent}),this._intersectedPerimeter=new et["a"]({view:e,attached:!0,width:t.perimeterLineWidth,color:t.intersectingLineColor,polygonOffset:!0,renderOccluded:st["c"].OccludeAndTransparent}),this._projectionLines=new et["a"]({view:e,attached:!0,width:t.projectionLineWidth,color:t.projectionLineColor,stipplePattern:Object(At["a"])(t.projectionLineStippleSize),polygonOffset:!0,renderOccluded:st["c"].OccludeAndTransparent}),this._measurementArea=new St({view:e,attached:!0,color1:t.areaColor1,color2:t.areaColor2}),this._areaLabel=new Ke["a"]({view:this.view,attached:!0,fontSize:zt.Large}),this._pathLengthLabel=new Ke["a"]({view:e,attached:!0,fontSize:zt.Small}),this._cursorSegmentLengthLabel=new Ke["a"]({view:e,attached:!0,fontSize:zt.Small}),this._perimeterLengthLabel=new Ke["a"]({view:e,attached:!0,fontSize:zt.Small});const i=this.analysisViewData;this._handles.add([Object(u["e"])(()=>[i.mode,this.visible,i.unit,i.measurementData,i.cursorPoint],()=>this._update(),u["d"]),Object(u["e"])(()=>{var t;return null==(t=e.state)?void 0:t.camera},()=>this._updateLabels(),u["d"]),Object(Tt["c"])(async()=>this._updateMessageBundle())]),this._updateMessageBundle()}destroy(){this._measurementArea=Object(n["d"])(this._measurementArea),this._path=Object(n["d"])(this._path),this._intersectedPath=Object(n["d"])(this._intersectedPath),this._perimeter=Object(n["d"])(this._perimeter),this._intersectedPerimeter=Object(n["d"])(this._intersectedPerimeter),this._areaLabel=Object(n["d"])(this._areaLabel),this._pathLengthLabel=Object(n["d"])(this._pathLengthLabel),this._cursorSegmentLengthLabel=Object(n["d"])(this._cursorSegmentLengthLabel),this._perimeterLengthLabel=Object(n["d"])(this._perimeterLengthLabel),this._projectionLines=Object(n["d"])(this._projectionLines),this._handles=Object(n["d"])(this._handles),this.set("view",null)}_update(){if(this.destroyed||!this.view.ready||!this.view.renderCoordsHelper)return;const e=this.analysisViewData,t=e.measurementData;Object(n["j"])(t)||(this._updateViewData(t,e.path,e.cursorPoint),this._updateOrigin(),this._updatePathSegments(),this._updatePerimeterSegments(),this._updateArea(),this._updateProjectionLines(),this._updateLabels())}_updateViewData(e,t,i){const s=t.isValidPolygon,r="geodesic"===e.actualMeasurementMode,n=r?e.geodesicArea:e.area;let o=1;if(n){const t=this._toPreferredAreaUnit(n,this.analysisViewData.unit);o=Object(b["m"])(Math.sqrt(t.value)/Math.sqrt(300)),o*=Math.sqrt(Object($e["c"])(1,t.unit,"square-meters")),o/=e.unitNormalizer.normalizeDistance(1)}const a={validMeasurement:s,path:t,pathVersion:t.version,cursorPoint:i,measurementData:e,mode:e.actualMeasurementMode,positionsGeographic:e.positionsGeographic,positionsRenderCoords:e.positionsRenderCoords,positionsProjected:e.positionsProjectedWorldCoords,positionsFittedRenderCoords:e.positionsFittedRenderCoords,intersectingSegments:r?e.geodesicIntersectingSegments:e.intersectingSegments,triangleIndices:r?e.geodesicTriangleIndices:e.triangleIndices,fittingMode:e.fittingMode,areaCentroid:r?e.geodesicAreaCentroidRenderCoords:e.areaCentroidRenderCoords,pathLengthLabelSegmentIndex:s?0:t.numVertices-2,perimeterLengthLabelSegmentIndex:0,checkerSize:o};this._set("viewData",a)}_updateOrigin(){const e=this.viewData;Object(F["a"])(e.positionsRenderCoords,this._origin),Object(Je["g"])(this._originTransform,this._origin),this._measurementArea.transform=this._originTransform,this._projectionLines.transform=this._originTransform}_createSegments(e){const t=this.viewData,i=t.path,s=this.view.renderCoordsHelper.spatialReference,r=t.mode,n=[],o=[],a=[],h=t.validMeasurement?i.numVertices:i.numVertices-1;for(let c=0;c0&&r&&Object(n["k"])(o)&&a.toRenderCoords(o,this._cursorPositionRenderSpace)){const e=t.positionsRenderCoords[s.numVertices-1],r=this._cursorPositionRenderSpace;let n=null;switch(c){case"euclidean":n=new Mt["a"](e,r);break;case"geodesic":n=new Mt["b"](e,r,h)}i.nonIntersecting.push(n),this._cursorSegment=n}this._path.setGeometryFromSegments(i.nonIntersecting,this._origin),this._path.visible=e,this._intersectedPath.setGeometryFromSegments(i.intersecting,this._origin),this._intersectedPath.visible=e,this._pathSegments=i.all}_updatePerimeterSegments(){const e=this.visible&&"euclidean"===this.viewData.mode,t=this._createSegments("positionsFittedRenderCoords");this._perimeter.setGeometryFromSegments(t.nonIntersecting,this._origin),this._perimeter.visible=e,this._intersectedPerimeter.setGeometryFromSegments(t.intersecting,this._origin),this._intersectedPerimeter.visible=e,this._perimeterSegments=t.all}_updateArea(){const e=this.viewData;switch(e.mode){case"euclidean":this._updateAreaEuclidean(e);break;case"geodesic":this._updateAreaGeodesic()}}_updateAreaEuclidean(e){const t=this.visible;e.validMeasurement&&0===e.intersectingSegments.size&&e.triangleIndices?(this._measurementArea.geometry={uv:e.positionsProjected,position:e.positionsFittedRenderCoords,triangleIndices:e.triangleIndices},this._measurementArea.size=[e.checkerSize,e.checkerSize],this._measurementArea.visible=t):this._measurementArea.visible=!1}_updateAreaGeodesic(){this._measurementArea.visible=!1}_updateProjectionLines(){const e=this.viewData,t=this.visible,i=e.path,s=e.mode;if(i.numVertices>0&&e.validMeasurement&&"euclidean"===s){const s=[];for(let t=0;t=0&&e.pathLengthLabelSegmentIndex0&&o}else this._pathLengthLabel.visible=!1;const c="geodesic"===s?e.measurementData.geodesicCursorSegmentLength:e.measurementData.cursorSegmentLength;if(Object(n["k"])(c)){const e=this._formatLengthLabel(this.messages,c,this.analysisViewData.unit);this._cursorSegmentLengthLabel.distance=this._params.labelDistance,this._cursorSegmentLengthLabel.geometry=Object(n["k"])(this._cursorSegment)?{type:"segment",segment:this._cursorSegment,sampleLocation:"end"}:null,this._cursorSegmentLengthLabel.anchor="bottom",this._cursorSegmentLengthLabel.text=Object(n["t"])(e),this._cursorSegmentLengthLabel.visible=r&&0!==c.value&&o}else this._cursorSegmentLengthLabel.visible=!1;this._cursorSegmentLengthLabel.overlaps(this._pathLengthLabel)&&(this._cursorSegmentLengthLabel.visible=!1),this._pathLengthLabel.overlaps(this._areaLabel)&&(this._pathLengthLabel.visible=!1);const l="geodesic"===e.mode,d=l?i.geodesicPathLength:i.perimeterLength,p=this._formatLengthLabel(this.messages,d,this.analysisViewData.unit);if(this._set("perimeterLengthLabel",Object(n["t"])(p)),e.validMeasurement&&0===e.intersectingSegments.size){this._perimeterLengthLabel.distance=this._params.labelDistance,this._perimeterLengthLabel.anchor="top",this._perimeterLengthLabel.text=Object(n["t"])(p),this._perimeterLengthLabel.visible=!0;let t=!0;for(let i=0;i{this.messages=e,this.view&&this._update()}).finally(()=>{this.loadingMessages=!1})}};var zt;Object(s["a"])([Object(o["b"])()],Rt.prototype,"view",void 0),Object(s["a"])([Object(o["b"])()],Rt.prototype,"messages",void 0),Object(s["a"])([Object(o["b"])()],Rt.prototype,"analysis",void 0),Object(s["a"])([Object(o["b"])()],Rt.prototype,"viewData",void 0),Object(s["a"])([Object(o["b"])()],Rt.prototype,"analysisViewData",void 0),Object(s["a"])([Object(o["b"])({readOnly:!0})],Rt.prototype,"areaLabel",void 0),Object(s["a"])([Object(o["b"])({readOnly:!0})],Rt.prototype,"perimeterLengthLabel",void 0),Object(s["a"])([Object(o["b"])()],Rt.prototype,"loadingMessages",void 0),Object(s["a"])([Object(o["b"])()],Rt.prototype,"visible",null),Rt=Object(s["a"])([Object(h["a"])("esri.views.3d.analysis.AreaMeasurement.support.AreaMeasurementVisualization")],Rt),function(e){e[e.Small=12]="Small",e[e.Large=16]="Large"}(zt||(zt={}));const Gt={laserLineGlowColor:[1,.5,0],laserLineGlowWidth:8,laserLineGlowFalloff:8,laserLineInnerColor:[1,1,1],laserLineInnerWidth:1,laserLineGlobalAlpha:.75,laserLineEnabled:!0,handleColor:[1,.5,0],handleOpacity:.5,handleRadius:5,handleRadiusHovered:10,handleRadiusMouse:10,handleRadiusTouch:25,pathLineColor:[1,.5,0,1],pathLineWidth:3,intersectingLineColor:[1,.2,0,1],perimeterLineColor:[1,.5,0,1],perimeterLineWidth:2,projectionLineColor:[1,.5,0,1],projectionLineWidth:2,projectionLineStippleSize:5,areaColor1:[1,.5,0,.5],areaColor2:[1,1,1,.5],fillColor:[1,.5,0,.5],lineSubdivisions:64,labelDistance:25},It={validMeasurement:!1,path:null,pathVersion:-1,cursorPoint:null,measurementData:null,mode:null,positionsGeographic:null,positionsRenderCoords:null,positionsProjected:null,positionsFittedRenderCoords:null,intersectingSegments:null,triangleIndices:null,fittingMode:null,areaCentroid:null,pathLengthLabelSegmentIndex:null,perimeterLengthLabelSegmentIndex:null,checkerSize:null},kt=new Mt["a"](Object(y["f"])(),Object(y["f"])());let Ut=class extends(Object(l["a"])(r["a"])){constructor(e){super(e),this.type="area-measurement-view-3d",this.measurementData=null,this.lastDraggedVertex=null,this.cursorPoint=null,this.mode=d["a"].Auto}initialize(){this.path=new Be({view:this.view,areaMeasurement:this.analysis}),this.analysisVisualization=new Rt({view:this.view,analysis:this.analysis,analysisViewData:this}),this.analysisController=new Q({view:this.view,analysis:this.analysis,analysisViewData:this})}destroy(){this.analysisController=Object(n["d"])(this.analysisController),this.analysisVisualization=Object(n["d"])(this.analysisVisualization),this.path.destroy()}get updating(){var e;return!(null==(e=this.analysisVisualization)||!e.loadingMessages)}get result(){if(Object(n["j"])(this.measurementData))return{area:null,mode:null,perimeter:null};const e=this.measurementData;return"euclidean"===e.actualMeasurementMode?{area:e.area,perimeter:e.perimeterLength,mode:"euclidian"}:{area:e.geodesicArea,perimeter:e.pathLength,mode:"geodesic"}}get validMeasurement(){return this.path.isValidPolygon}get unit(){return Object(n["u"])(this.analysis.unit,this._defaultUnit)}get testData(){return{visualization:this.analysisVisualization,controller:this.analysisController}}};Object(s["a"])([Object(o["b"])()],Ut.prototype,"type",void 0),Object(s["a"])([Object(o["b"])()],Ut.prototype,"analysis",void 0),Object(s["a"])([Object(o["b"])()],Ut.prototype,"updating",null),Object(s["a"])([Object(o["b"])()],Ut.prototype,"analysisVisualization",void 0),Object(s["a"])([Object(o["b"])()],Ut.prototype,"analysisController",void 0),Object(s["a"])([Object(o["b"])()],Ut.prototype,"result",null),Object(s["a"])([Object(o["b"])()],Ut.prototype,"measurementData",void 0),Object(s["a"])([Object(o["b"])()],Ut.prototype,"validMeasurement",null),Object(s["a"])([Object(o["b"])()],Ut.prototype,"path",void 0),Object(s["a"])([Object(o["b"])()],Ut.prototype,"lastDraggedVertex",void 0),Object(s["a"])([Object(o["b"])()],Ut.prototype,"cursorPoint",void 0),Object(s["a"])([Object(o["b"])()],Ut.prototype,"mode",void 0),Object(s["a"])([Object(o["b"])()],Ut.prototype,"unit",null),Object(s["a"])([Object(o["b"])(c["a"])],Ut.prototype,"_defaultUnit",void 0),Ut=Object(s["a"])([Object(h["a"])("esri.views.3d.analysis.AreaMeasurementAnalysisView3D")],Ut);const Nt=Ut}}]); //# sourceMappingURL=chunk-422e17ee.408b4198.js.map