@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
1 lines • 13.9 kB
JavaScript
"use strict";(self.webpackChunkRemoteClient=self.webpackChunkRemoteClient||[]).push([[9187],{79187(i,t,s){s.r(t),s.d(t,{Envelope2D:()=>x});var m=s(55537),h=s(83661);class x{static construct(i,t,s,m){return new x(i,t,s,m)}constructor(i,t,s,m){this.m_EnvelopeType=2,void 0===i?(this.xmin=Number.NaN,this.ymin=Number.NaN,this.xmax=Number.NaN,this.ymax=Number.NaN):"number"==typeof i?(this.xmin=i,this.ymin=t,this.xmax=s,this.ymax=m):(this.xmin=i.xmin,this.ymin=i.ymin,this.xmax=i.xmax,this.ymax=i.ymax),this.normalize()}static constructEmpty(){return new x(Number.NaN,Number.NaN,Number.NaN,Number.NaN)}clone(){return new x(this)}assign(i){return this.xmin=i.xmin,this.xmax=i.xmax,this.ymin=i.ymin,this.ymax=i.ymax,this}width(){return this.xmax-this.xmin}height(){return this.ymax-this.ymin}maxDimension(){return Math.max(this.width(),this.height())}minDimension(){return Math.min(this.width(),this.height())}sqrDiagonal(){const i=this.width(),t=this.height();return i*i+t*t}diagonal(){return Math.sqrt(this.sqrDiagonal())}getCenterX(){return.5*(this.xmin+this.xmax)}getCenterY(){return.5*(this.ymin+this.ymax)}getCenter(){return h.P.construct(this.getCenterX(),this.getCenterY())}queryCenter(i){i.x=.5*(this.xmin+this.xmax),i.y=.5*(this.ymin+this.ymax)}setEmpty(){this.xmin=Number.NaN,this.ymin=Number.NaN,this.xmax=Number.NaN,this.ymax=Number.NaN}setInfinite(){this.xmin=Number.NEGATIVE_INFINITY,this.xmax=Number.POSITIVE_INFINITY,this.ymin=Number.NEGATIVE_INFINITY,this.ymax=Number.POSITIVE_INFINITY}isDegenerate(i){return!this.isEmpty()&&(this.width()<=i||this.height()<=i)}isZero(){return!(this.isEmpty()||this.width()&&this.height())}isEmpty(){return Number.isNaN(this.xmin)||Number.isNaN(this.ymin)||Number.isNaN(this.xmax)||Number.isNaN(this.ymax)}mergeNeCoords(i,t){this.xmin>i?this.xmin=i:this.xmax<i&&(this.xmax=i),this.ymin>t?this.ymin=t:this.ymax<t&&(this.ymax=t)}mergeNe(i){this.mergeNeCoords(i.x,i.y)}mergeCoords(i,t){this.isEmpty()?(this.xmin=i,this.ymin=t,this.xmax=i,this.ymax=t):(this.xmin>i?this.xmin=i:this.xmax<i&&(this.xmax=i),this.ymin>t?this.ymin=t:this.ymax<t&&(this.ymax=t))}merge(i){this.mergeCoords(i.x,i.y)}mergeEnvelope2D(i){i.isEmpty()||(this.mergeCoords(i.xmin,i.ymin),this.mergeNeCoords(i.xmax,i.ymax))}mergePoints(i,t){for(let s=0;s<t;){if(!this.isEmpty()){for(let m=s;m<t;m++)this.mergeNe(i[m]);break}this.setCoords(i[s]),s++}}mergePointsInterleaved(i,t,s){for(let m=2*t,h=m+2*s;m<h;m+=2)this.mergeCoords(i.read(m),i.read(m+1))}inflateCoords(i,t){this.isEmpty()||(this.xmin-=i,this.xmax+=i,this.ymin-=t,this.ymax+=t,(this.xmin>this.xmax||this.ymin>this.ymax)&&this.setEmpty())}getInflatedCoords(i,t){const s=this.clone();return s.inflateCoords(i,t),s}inflate(i){this.inflateCoords(i,i)}getInflated(i){const t=this.clone();return t.inflateCoords(i,i),t}zoom(i,t){this.isEmpty()||this.setCoords({center:this.getCenter(),width:i*this.width(),height:t*this.height()})}scale(i){i<0&&this.setEmpty(),this.xmin*=i,this.xmax*=i,this.ymin*=i,this.ymax*=i}equals(i,t){return!(!this.isEmpty()||!i.isEmpty())||(t?Math.abs(this.xmin-i.xmin)<=t&&Math.abs(this.ymin-i.ymin)<=t&&Math.abs(this.xmax-i.xmax)<=t&&Math.abs(this.ymax-i.ymax)<=t:this.xmin===i.xmin&&this.ymin===i.ymin&&this.xmax===i.xmax&&this.ymax===i.ymax)}setCoords(i){void 0!==i.xmin?(this.xmin=i.xmin,this.xmax=i.xmax,this.ymin=i.ymin,this.ymax=i.ymax):void 0!==i.x?(this.xmin=i.x,this.xmax=i.x,this.ymin=i.y,this.ymax=i.y):void 0!==i.pt1?(this.xmin=i.pt1.x,this.ymin=i.pt1.y,this.xmax=i.pt2.x,this.ymax=i.pt2.y,this.normalize()):void 0!==i.env2D?(this.xmin=i.env2D.xmin,this.xmax=i.env2D.xmax,this.ymin=i.env2D.ymin,this.ymax=i.env2D.ymax,this.normalize()):void 0!==i.pt?(this.xmin=i.pt.x,this.xmax=i.pt.x,this.ymin=i.pt.y,this.ymax=i.pt.y):void 0!==i.center?(this.xmin=i.center.x-.5*i.width,this.xmax=this.xmin+i.width,this.ymin=i.center.y-.5*i.height,this.ymax=this.ymin+i.height,this.normalize()):(0,m.t)("unrecognized input type for setCoords"),this.normalize()}queryIntervalX(i){this.isEmpty()?i.setEmpty():i.setCoords(this.xmin,this.xmax)}queryIntervalY(i){this.isEmpty()?i.setEmpty():i.setCoords(this.ymin,this.ymax)}setFromPoints(i,t){if(0===t)return void this.setEmpty();if(Array.isArray(i)){const s=i;this.setCoords(s[0]);for(let i=1;i<t;){if(!this.isEmpty()){for(let m=i;m<t;m++)this.mergeNe(s[m]);return}this.setCoords(s[i]),i++}return}const s=i;this.setCoords({x:s[0],y:s[1]});for(let i=1,m=2*t;i<m;i+=2){if(!this.isEmpty()){for(let m=i,h=2*t;m<h;m+=2)this.mergeNeCoords(s[m],s[m+1]);return}this.setCoords({x:s[i],y:s[i+1]}),i+=2}}normalize(){let i=!1;this.xmin<=this.xmax||([this.xmin,this.xmax]=[this.xmax,this.xmin],i=!0),this.ymin<=this.ymax||([this.ymin,this.ymax]=[this.ymax,this.ymin],i=!0),!i||this.xmin<=this.xmax&&this.ymin<=this.ymax||this.setEmpty()}isValid(){return this.isEmpty()||this.xmin<=this.xmax&&this.ymin<=this.ymax}getLowerLeft(){return new h.P(this.xmin,this.ymin)}getLowerRight(){return new h.P(this.xmax,this.ymin)}getUpperLeft(){return new h.P(this.xmin,this.ymax)}getUpperRight(){return new h.P(this.xmax,this.ymax)}move(i,t){this.isEmpty()||(this.xmin+=i,this.ymin+=t,this.xmax+=i,this.ymax+=t)}centerAtCoords(i,t){this.move(i-this.getCenterX(),t-this.getCenterY())}centerAt(i){this.centerAtCoords(i.x,i.y)}containsCoords(i,t){return i>=this.xmin&&i<=this.xmax&&t>=this.ymin&&t<=this.ymax}contains(i){return this.containsCoords(i.x,i.y)}containsEnvelope(i){return i.xmin>=this.xmin&&i.xmax<=this.xmax&&i.ymin>=this.ymin&&i.ymax<=this.ymax}containsExclusiveCoords(i,t){return i>this.xmin&&i<this.xmax&&t>this.ymin&&t<this.ymax}containsExclusive(i){return this.containsExclusiveCoords(i.x,i.y)}containsExclusiveEnvelope(i){return i.xmin>this.xmin&&i.xmax<this.xmax&&i.ymin>this.ymin&&i.ymax<this.ymax}isIntersecting(i){return(this.xmin<=i.xmin?this.xmax>=i.xmin:i.xmax>=this.xmin)&&(this.ymin<=i.ymin?this.ymax>=i.ymin:i.ymax>=this.ymin)}isIntersectingNe(i){return(this.xmin<=i.xmin?this.xmax>=i.xmin:i.xmax>=this.xmin)&&(this.ymin<=i.ymin?this.ymax>=i.ymin:i.ymax>=this.ymin)}intersect(i){if(this.isEmpty())return!1;if(i.isEmpty())return this.setEmpty(),!1;i.xmin>this.xmin&&(this.xmin=i.xmin),i.xmax<this.xmax&&(this.xmax=i.xmax),i.ymin>this.ymin&&(this.ymin=i.ymin),i.ymax<this.ymax&&(this.ymax=i.ymax);const t=this.xmin<=this.xmax&&this.ymin<=this.ymax;return t||this.setEmpty(),t}queryCorner(i){switch(3&i){case 0:return new h.P(this.xmin,this.ymin);case 1:return new h.P(this.xmin,this.ymax);case 2:return new h.P(this.xmax,this.ymax);default:return new h.P(this.xmax,this.ymin)}}queryCorners(i){i[0].setCoords(this.xmin,this.ymin),i[1].setCoords(this.xmin,this.ymax),i[2].setCoords(this.xmax,this.ymax),i[3].setCoords(this.xmax,this.ymin)}queryCornersReversed(i){i[0].setCoords(this.xmin,this.ymin),i[1].setCoords(this.xmax,this.ymin),i[2].setCoords(this.xmax,this.ymax),i[3].setCoords(this.xmin,this.ymax)}reaspect(i,t){if(this.isEmpty())return;const s=i/t,m=.5*this.width(),h=.5*this.height()*s;if(m<=h){const i=this.getCenterX();this.xmin=i-h,this.xmax=i+h}else{const i=m/s,t=this.getCenterY();this.ymin=t-i,this.ymax=t+i}this.normalize()}getArea(){return this.isEmpty()?0:this.width()*this.height()}getLength(){return this.isEmpty()?0:2*(this.width()+this.height())}clipCode(i){return(i.x<this.xmin?1:0)|(i.x>this.xmax?1:0)<<1|(i.y<this.ymin?1:0)<<2|(i.y>this.ymax?1:0)<<3}clipLine(i,t){let s=this.clipCode(i),m=this.clipCode(t);if(s&m)return 0;if(!(s|m))return 4;const h=(s?1:0)|(m?2:0);do{const h=t.x-i.x,n=t.y-i.y;if(Math.abs(h)>Math.abs(n)?s&x.XMASK?(s&x.XLESSXMIN?(i.y+=n*(this.xmin-i.x)/h,i.x=this.xmin):(i.y+=n*(this.xmax-i.x)/h,i.x=this.xmax),s=this.clipCode(i)):m&x.XMASK?(m&x.XLESSXMIN?(t.y+=n*(this.xmin-t.x)/h,t.x=this.xmin):(t.y+=n*(this.xmax-t.x)/h,t.x=this.xmax),m=this.clipCode(t)):s?(s&x.YLESSYMIN?(i.x+=h*(this.ymin-i.y)/n,i.y=this.ymin):(i.x+=h*(this.ymax-i.y)/n,i.y=this.ymax),s=this.clipCode(i)):(m&x.YLESSYMIN?(t.x+=h*(this.ymin-t.y)/n,t.y=this.ymin):(t.x+=h*(this.ymax-t.y)/n,t.y=this.ymax),m=this.clipCode(t)):s&x.YMASK?(s&x.YLESSYMIN?(i.x+=h*(this.ymin-i.y)/n,i.y=this.ymin):(i.x+=h*(this.ymax-i.y)/n,i.y=this.ymax),s=this.clipCode(i)):m&x.YMASK?(m&x.YLESSYMIN?(t.x+=h*(this.ymin-t.y)/n,t.y=this.ymin):(t.x+=h*(this.ymax-t.y)/n,t.y=this.ymax),m=this.clipCode(t)):s?(s&x.XLESSXMIN?(i.y+=n*(this.xmin-i.x)/h,i.x=this.xmin):(i.y+=n*(this.xmax-i.x)/h,i.x=this.xmax),s=this.clipCode(i)):(m&x.XLESSXMIN?(t.y+=n*(this.xmin-t.x)/h,t.x=this.xmin):(t.y+=n*(this.xmax-t.x)/h,t.x=this.xmax),m=this.clipCode(t)),s&m)return 0}while(s|m);return h}distanceFromEnvelope(i){return Math.sqrt(this.sqrDistanceEnvelope(i,null,null))}distance(i){return Math.sqrt(this.sqrDistance(i))}sqrDistanceEnvelope(i,t,s){if(!t&&!s){if(this.isEmpty()||i.isEmpty())return Number.NaN;let t,s=0,m=0;return t=this.xmin-i.xmax,t>s&&(s=t),t=this.ymin-i.ymax,t>m&&(m=t),t=i.xmin-this.xmax,t>s&&(s=t),t=i.ymin-this.ymax,t>m&&(m=t),s*s+m*m}if(this.isEmpty()||i.isEmpty())return t&&t.setNAN(),s&&s.setNAN(),Number.NaN;let m,h=0,x=0;const n=Math.max(this.xmin,i.xmin),e=Math.max(this.ymin,i.ymin);return t&&t.setCoords(n,e),s&&s.setCoords(n,e),m=this.xmin-i.xmax,m>h&&(h=m,t&&(t.x=this.xmin),s&&(s.x=i.xmax)),m=this.ymin-i.ymax,m>x&&(x=m,t&&(t.y=this.ymin),s&&(s.y=i.ymax)),m=i.xmin-this.xmax,m>h&&(h=m,t&&(t.x=this.xmax),s&&(s.x=i.xmin)),m=i.ymin-this.ymax,m>x&&(x=m,t&&(t.y=this.ymax),s&&(s.y=i.ymin)),h*h+x*x}sqrDistance(i,t){if(void 0===t){if(this.isEmpty()||i.isNAN())return Number.NaN;let t,s=0,m=0;return t=this.xmin-i.x,t>s&&(s=t),t=this.ymin-i.y,t>m&&(m=t),t=i.x-this.xmax,t>s&&(s=t),t=i.y-this.ymax,t>m&&(m=t),s*s+m*m}if(this.isEmpty()||i.isNAN())return t.setNAN(),Number.NaN;t.assign(i);let s,m=0,h=0;return s=this.xmin-i.x,s>m&&(m=s,t.x=this.xmin),s=this.ymin-i.y,s>h&&(h=s,t.y=this.ymin),s=i.x-this.xmax,s>m&&(m=s,t.x=this.xmax),s=i.y-this.ymax,s>h&&(h=s,t.y=this.ymax),m*m+h*h}sqrMaxMinDistanceEnvelope(i){if(this.isEmpty()||i.isEmpty())return Number.NaN;let t=Number.MAX_VALUE;{const s=h.P.sqrDistanceCoords(this.xmin,this.ymin,i.xmax,i.ymin),m=h.P.sqrDistanceCoords(this.xmin,this.ymin,i.xmax,i.ymax),x=h.P.sqrDistanceCoords(this.xmin,this.ymax,i.xmax,i.ymin),n=h.P.sqrDistanceCoords(this.xmin,this.ymax,i.xmax,i.ymax),e=Math.max(s,m),a=Math.max(x,n),r=Math.max(e,a);t=Math.min(r,t)}{const s=h.P.sqrDistanceCoords(this.xmin,this.ymin,i.xmin,i.ymax),m=h.P.sqrDistanceCoords(this.xmin,this.ymin,i.xmax,i.ymax),x=h.P.sqrDistanceCoords(this.xmax,this.ymin,i.xmin,i.ymax),n=h.P.sqrDistanceCoords(this.xmax,this.ymin,i.xmax,i.ymax),e=Math.max(s,m),a=Math.max(x,n),r=Math.max(e,a);t=Math.min(r,t)}{const s=h.P.sqrDistanceCoords(this.xmax,this.ymin,i.xmin,i.ymin),m=h.P.sqrDistanceCoords(this.xmax,this.ymin,i.xmin,i.ymax),x=h.P.sqrDistanceCoords(this.xmax,this.ymax,i.xmin,i.ymin),n=h.P.sqrDistanceCoords(this.xmax,this.ymax,i.xmin,i.ymax),e=Math.max(s,m),a=Math.max(x,n),r=Math.max(e,a);t=Math.min(r,t)}{const s=h.P.sqrDistanceCoords(this.xmin,this.ymax,i.xmin,i.ymin),m=h.P.sqrDistanceCoords(this.xmin,this.ymax,i.xmax,i.ymin),x=h.P.sqrDistanceCoords(this.xmax,this.ymax,i.xmin,i.ymin),n=h.P.sqrDistanceCoords(this.xmax,this.ymax,i.xmax,i.ymin),e=Math.max(s,m),a=Math.max(x,n),r=Math.max(e,a);t=Math.min(r,t)}return t}sqrMaxDistanceEnvelope(i){if(this.isEmpty()||i.isEmpty())return Number.NaN;let t=0;const s=(0,h.m)(h.P,4);this.queryCorners(s);const m=(0,h.m)(h.P,4);i.queryCorners(m);for(let i=0;i<4;i++)for(let x=0;x<4;x++){const n=h.P.sqrDistance(s[i],m[x]);n>t&&(t=n)}return t}sqrMaxMinDistance(i){const t=h.P.sqrDistance(i,this.getLowerLeft()),s=h.P.sqrDistance(i,this.getUpperLeft()),m=h.P.sqrDistance(i,this.getLowerRight()),x=h.P.sqrDistance(i,this.getUpperRight());let n,e=Math.max(t,s);return n=Math.max(t,m),e>n&&(e=n),n=Math.max(s,x),e>n&&(e=n),n=Math.max(m,x),e>n&&(e=n),e}sqrMinDistance(i){return this.contains(i)?0:this.sqrDistance(i)}sqrMaxDistance(i){let t=h.P.sqrDistance(i,this.getLowerLeft());return t=Math.max(h.P.sqrDistance(i,this.getUpperLeft()),t),t=Math.max(h.P.sqrDistance(i,this.getUpperRight()),t),t=Math.max(h.P.sqrDistance(i,this.getLowerRight()),t),t}snapToBoundary(i){if(i.isNAN())return!1;if(this.isEmpty())return i.setNAN(),!0;let t=!0;if(i.x<this.xmin?i.x=this.xmin:i.x>this.xmax?i.x=this.xmax:t=!1,i.y<this.ymin?i.y=this.ymin:i.y>this.ymax?i.y=this.ymax:t=!1,t)return!0;if(i.x===this.xmin||i.x===this.xmax||i.y===this.ymin||i.y===this.ymax)return!1;const s=this.xmax-i.x,m=i.x-this.xmin,h=this.ymax-i.y,x=i.y-this.ymin;return Math.max(s,m)>Math.max(h,x)?i.y=x<h?this.ymin:this.ymax:i.x=m<s?this.xmin:this.xmax,!0}snapClip(i){const t=(0,h.s)(i.x,this.xmin,this.xmax),s=(0,h.s)(i.y,this.ymin,this.ymax);return h.P.construct(t,s)}boundaryDistance(i){if(this.isEmpty()||i.isNAN())return Number.NaN;if(i.x===this.xmin)return i.y-this.ymin;const t=this.ymax-this.ymin,s=this.xmax-this.xmin;if(i.y===this.ymax)return t+i.x-this.xmin;if(i.x===this.xmax)return t+s+this.ymax-i.y;if(i.y===this.ymin)return 2*t+s+this.xmax-i.x;const m=new h.P;return m.setCoordsPoint2D(i),this.snapToBoundary(m),this.boundaryDistance(m)}envelopeSide(i){if(this.isEmpty())return-1;let t=this.boundaryDistance(i);const s=this.ymax-this.ymin,m=this.xmax-this.xmin;return t<s?0:(t-=s)<m?1:t-m<s?2:3}querySide(i,t){switch(i){case 0:t.constructFromCoords(this.xmin,this.ymin,this.xmin,this.ymax);break;case 1:t.constructFromCoords(this.xmin,this.ymax,this.xmax,this.ymax);break;case 2:t.constructFromCoords(this.xmax,this.ymax,this.xmax,this.ymin);break;case 3:t.constructFromCoords(this.xmax,this.ymin,this.xmin,this.ymin);break;default:(0,m.a)("query_side")}return t}isPointOnBoundary(i,t){return Math.abs(i.x-this.xmin)<=t||Math.abs(i.x-this.xmax)<=t||Math.abs(i.y-this.ymin)<=t||Math.abs(i.y-this.ymax)<=t}calculateToleranceFromEnvelope(){return this.isEmpty()?(0,h.g)():(Math.abs(this.xmin)+Math.abs(this.xmax)+Math.abs(this.ymin)+Math.abs(this.ymax)+1)*(0,h.g)()}toString(){return`[${this.xmin}, ${this.ymin}, ${this.xmax}, ${this.ymax}]`}}x.XLESSXMIN=1,x.YLESSYMIN=4,x.XMASK=3,x.YMASK=12}}]);