@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
329 lines (278 loc) • 168 kB
JavaScript
"use strict";(self.webpackChunkRemoteClient=self.webpackChunkRemoteClient||[]).push([[9844],{5503:(e,t,r)=>{r.d(t,{A:()=>E});var n,i=r(90237),s=r(98291),o=r(65529),a=r(36563),l=r(4718),c=r(93687);!function(e){e[e.ADD=1]="ADD",e[e.REMOVE=2]="REMOVE",e[e.MOVE=4]="MOVE"}(n||(n={}));var u,d=r(11932),h=r(56507),f=r(62788),p=r(10107),m=r(7695),g=r(40608),y=r(95488),_=r(12195);class b{constructor(e,t,r,n,i){this.target=e,this.added=t,this.removed=r,this.start=n,this.deleteCount=i}}const v=new c.A(class{constructor(){this.target=null,this.cancellable=!1,this.defaultPrevented=!1,this.item=void 0,this.type=void 0}preventDefault(){this.cancellable&&(this.defaultPrevented=!0)}reset(e){this.defaultPrevented=!1,this.item=e}},void 0,(e=>{e.item=null,e.target=null,e.defaultPrevented=!1,e.cancellable=!1}));function x(e){e&&"object"==typeof e&&"destroy"in e&&"function"==typeof e.destroy&&e.destroy()}function w(e){return e?e instanceof M?e.toArray():e.length?Array.prototype.slice.apply(e):[]:[]}function C(e){if(e?.length)return e[0]}function A(e,t,r,n){const i=Math.min(e.length-r,t.length-n);let s=0;for(;s<i&&e[r+s]===t[n+s];)s++;return s}function S(e,t,r,n){t&&t.forEach(((t,i,s)=>{e.push(t),S(e,r.call(n,t,i,s),r,n)}))}const I=new Set,O=new Set,T=new Set,R=new Map;let P=0,M=class extends o.A.EventedAccessor{static{u=this}static{this.ofType=e=>{if(!e)return u;if(R.has(e))return R.get(e);let t=null;if("function"==typeof e)t=e.prototype.declaredClass;else if(e.base)t=e.base.prototype.declaredClass;else for(const r in e.typeMap){const n=e.typeMap[r].prototype.declaredClass;t?t+=` | ${n}`:t=n}let r=class extends u{};return(0,i._)([(0,m.u)({Type:e,ensureType:"function"==typeof e?(0,h.dp)(e):(0,h.aq)(e)})],r.prototype,"itemType",void 0),r=(0,i._)([(0,g.$)(`esri.core.Collection<${t}>`)],r),R.set(e,r),r}}static isCollection(e){return null!=e&&e instanceof u}constructor(e){super(e),this._chgListeners=[],this._notifications=null,this._updating=!1,this._timer=null,this._observable=new y.I,this.length=0,this._items=[],Object.defineProperty(this,"uid",{value:P++})}normalizeCtorArgs(e){return e?Array.isArray(e)||e instanceof u?{items:e}:e:{}}destroy(){this._removeAllRaw(),this._timer&&this._timer.remove(),this._emitter.destroy(),this._notifications=null}*[Symbol.iterator](){yield*this.items}get items(){return(0,f.gc)(this._observable),this._items}set items(e){this._emitBeforeChanges(n.ADD)||(this._splice(0,this.length,w(e)),this._emitAfterChanges(n.ADD))}hasEventListener(e){return!this.destroyed&&("change"===e?this._chgListeners.length>0:this._emitter.hasEventListener(e))}on(e,t){if(this.destroyed)return(0,a.hA)();if("change"===e){const e=this._chgListeners,r={removed:!1,callback:t};return e.push(r),this._notifications&&this._notifications.push({listeners:e.slice(),items:this._items.slice(),changes:[]}),(0,a.hA)((()=>{r.removed=!0,e.splice(e.indexOf(r),1)}))}return this._emitter.on(e,t)}once(e,t){const r="deref"in t?()=>t.deref():()=>t,n=this.on(e,(e=>{r()?.call(null,e),n.remove()}));return n}add(e,t){if((0,f.gc)(this._observable),this._emitBeforeChanges(n.ADD))return this;const r=this.getNextIndex(t??null);return this._splice(r,0,[e]),this._emitAfterChanges(n.ADD),this}addMany(e,t=this._items.length){if((0,f.gc)(this._observable),!e?.length)return this;if(this._emitBeforeChanges(n.ADD))return this;const r=this.getNextIndex(t);return this._splice(r,0,w(e)),this._emitAfterChanges(n.ADD),this}at(e){if((0,f.gc)(this._observable),(e=Math.trunc(e)||0)<0&&(e+=this.length),!(e<0||e>=this.length))return this._items[e]}removeAll(){if((0,f.gc)(this._observable),!this.length||this._emitBeforeChanges(n.REMOVE))return[];const e=this._removeAllRaw();return this._emitAfterChanges(n.REMOVE),e}_removeAllRaw(){return 0===this.length?[]:this._splice(0,this.length)||[]}clone(){return(0,f.gc)(this._observable),this._createNewInstance({items:this._items.map(l.o8)})}concat(...e){(0,f.gc)(this._observable);const t=e.map(w);return this._createNewInstance({items:this._items.concat(...t)})}drain(e,t){if((0,f.gc)(this._observable),!this.length||this._emitBeforeChanges(n.REMOVE))return;const r=this._splice(0,this.length),i=r.length;for(let n=0;n<i;n++)e.call(t,r[n],n,r);this._emitAfterChanges(n.REMOVE)}destroyAll(){this.drain(x)}destroyMany(e){const t=this.removeMany(e);return t.forEach(x),t}every(e,t){return(0,f.gc)(this._observable),this._items.every(e,t)}filter(e,t){(0,f.gc)(this._observable);const r=2===arguments.length?this._items.filter(e,t):this._items.filter(e);return this._createNewInstance({items:r})}find(e,t){return(0,f.gc)(this._observable),this._items.find(e,t)}findIndex(e,t){return(0,f.gc)(this._observable),this._items.findIndex(e,t)}flatten(e,t){(0,f.gc)(this._observable);const r=[];return S(r,this,e,t),new u(r)}forEach(e,t){return(0,f.gc)(this._observable),this._items.forEach(e,t)}getItemAt(e){return(0,f.gc)(this._observable),this._items[e]}getNextIndex(e){(0,f.gc)(this._observable);const t=this.length;return(e=e??t)<0?e=0:e>t&&(e=t),e}includes(e,t=0){return(0,f.gc)(this._observable),this._items.includes(e,t)}indexOf(e,t=0){return(0,f.gc)(this._observable),this._items.indexOf(e,t)}join(e=","){return(0,f.gc)(this._observable),this._items.join(e)}lastIndexOf(e,t=this.length-1){return(0,f.gc)(this._observable),this._items.lastIndexOf(e,t)}map(e,t){(0,f.gc)(this._observable);const r=this._items.map(e,t);return new u({items:r})}reorder(e,t=this.length-1){(0,f.gc)(this._observable);const r=this.indexOf(e);if(-1!==r){if(t<0?t=0:t>=this.length&&(t=this.length-1),r!==t){if(this._emitBeforeChanges(n.MOVE))return e;this._splice(r,1),this._splice(t,0,[e]),this._emitAfterChanges(n.MOVE)}return e}}pop(){if((0,f.gc)(this._observable),!this.length||this._emitBeforeChanges(n.REMOVE))return;const e=C(this._splice(this.length-1,1));return this._emitAfterChanges(n.REMOVE),e}push(...e){return(0,f.gc)(this._observable),this._emitBeforeChanges(n.ADD)||(this._splice(this.length,0,e),this._emitAfterChanges(n.ADD)),this.length}reduce(e,t){(0,f.gc)(this._observable);const r=this._items;return 2===arguments.length?r.reduce(e,t):r.reduce(e)}reduceRight(e,t){(0,f.gc)(this._observable);const r=this._items;return 2===arguments.length?r.reduceRight(e,t):r.reduceRight(e)}remove(e){return(0,f.gc)(this._observable),this.removeAt(this.indexOf(e))}removeAt(e){if((0,f.gc)(this._observable),e<0||e>=this.length||this._emitBeforeChanges(n.REMOVE))return;const t=C(this._splice(e,1));return this._emitAfterChanges(n.REMOVE),t}removeMany(e){if((0,f.gc)(this._observable),!e?.length||this._emitBeforeChanges(n.REMOVE))return[];const t=e instanceof u?e.toArray():e,r=this._items,i=[],s=t.length;for(let e=0;e<s;e++){const n=t[e],s=r.indexOf(n);if(s>-1){const n=1+A(t,r,e+1,s+1),o=this._splice(s,n);o&&o.length>0&&i.push.apply(i,o),e+=n-1}}return this._emitAfterChanges(n.REMOVE),i}reverse(){if((0,f.gc)(this._observable),this._emitBeforeChanges(n.MOVE))return this;const e=this._splice(0,this.length);return e&&(e.reverse(),this._splice(0,0,e)),this._emitAfterChanges(n.MOVE),this}shift(){if((0,f.gc)(this._observable),!this.length||this._emitBeforeChanges(n.REMOVE))return;const e=C(this._splice(0,1));return this._emitAfterChanges(n.REMOVE),e}slice(e=0,t=this.length){return(0,f.gc)(this._observable),this._createNewInstance({items:this._items.slice(e,t)})}some(e,t){return(0,f.gc)(this._observable),this._items.some(e,t)}sort(e){if((0,f.gc)(this._observable),!this.length||this._emitBeforeChanges(n.MOVE)||!this._requiresSort(e))return this;const t=this._splice(0,this.length);return arguments.length?t.sort(e):t.sort(),this._splice(0,0,t),this._emitAfterChanges(n.MOVE),this}_requiresSort(e=(e,t)=>e===t?0:e<t?-1:1){const t=this.length-1;for(let r=0;r<t;r++)if(e(this.items[r],this.items[r+1])>0)return!0;return!1}splice(e,t,...r){(0,f.gc)(this._observable),1===arguments.length&&(t=this.length),t??=0;const i=(t?n.REMOVE:0)|(r.length?n.ADD:0);if(this._emitBeforeChanges(i))return[];const s=this._splice(e,t,r)||[];return this._emitAfterChanges(i),s}toArray(){return(0,f.gc)(this._observable),this._items.slice()}toJSON(e){return(0,f.gc)(this._observable),this.toArray().map((t=>(0,_.W)(t)?t.toJSON(e):t))}toLocaleString(){return(0,f.gc)(this._observable),this._items.toLocaleString()}toString(){return(0,f.gc)(this._observable),this._items.toString()}unshift(...e){return(0,f.gc)(this._observable),!e.length||this._emitBeforeChanges(n.ADD)||(this._splice(0,0,e),this._emitAfterChanges(n.ADD)),this.length}_createNewInstance(e){return new this.constructor(e)}_splice(e,t,r){const n=this._items,i=this.itemType;let s,o;if(!this._notifications&&this.hasEventListener("change")&&(this._notifications=[{listeners:this._chgListeners.slice(),items:this._items.slice(),changes:[]}],this._timer&&this._timer.remove(),this._updating=!0,this._timer=(0,d._)((()=>this._dispatchChange()))),e<0&&(e+=this.length),t){if(o=n.splice(e,t),this.hasEventListener("before-remove")){const t=v.acquire();t.target=this,t.cancellable=!0;for(let r=0,i=o.length;r<i;r++)s=o[r],t.reset(s),this.emit("before-remove",t),t.defaultPrevented&&(o.splice(r,1),n.splice(e,0,s),e+=1,r-=1,i-=1);v.release(t)}if(this.length=this._items.length,this.hasEventListener("after-remove")){const e=v.acquire();e.target=this,e.cancellable=!1;const t=o.length;for(let r=0;r<t;r++)e.reset(o[r]),this.emit("after-remove",e);v.release(e)}}if(r?.length){if(i){const e=[];for(const t of r){const r=i.ensureType(t);null==r&&null!=t||e.push(r)}r=e}const t=this.hasEventListener("before-add"),s=this.hasEventListener("after-add"),o=e===this.length;if(t||s){const i=v.acquire();i.target=this,i.cancellable=!0;const a=v.acquire();a.target=this,a.cancellable=!1;for(const l of r)t?(i.reset(l),this.emit("before-add",i),i.defaultPrevented||(o?n.push(l):n.splice(e++,0,l),this._set("length",n.length),s&&(a.reset(l),this.emit("after-add",a)))):(o?n.push(l):n.splice(e++,0,l),this._set("length",n.length),a.reset(l),this.emit("after-add",a));v.release(a),v.release(i)}else{if(o)for(const e of r)n.push(e);else n.splice(e,0,...r);this._set("length",n.length)}}if((r?.length||o?.length)&&this._notifyChangeEvent(r,o),this.hasEventListener("after-splice")){const n=new b(this,r,o,e,t);this.emit("after-splice",n)}return o}_emitBeforeChanges(e){let t=!1;if(this.hasEventListener("before-changes")){const r=v.acquire();r.target=this,r.cancellable=!0,r.type=e,this.emit("before-changes",r),t=r.defaultPrevented,v.release(r)}return t}_emitAfterChanges(e){if(this.hasEventListener("after-changes")){const t=v.acquire();t.target=this,t.cancellable=!1,t.type=e,this.emit("after-changes",t),v.release(t)}this._observable.notify()}_notifyChangeEvent(e,t){this.hasEventListener("change")&&this._notifications&&this._notifications[this._notifications.length-1].changes.push({added:e,removed:t})}get updating(){return this._updating}_dispatchChange(){if(this._timer&&(this._timer.remove(),this._timer=null),this._updating=!1,!this._notifications)return;const e=this._notifications;this._notifications=null;for(const t of e){const e=t.changes;I.clear(),O.clear(),T.clear();for(const{added:t,removed:r}of e){if(t)if(0===T.size&&0===O.size)for(const e of t)I.add(e);else for(const e of t)O.has(e)?(T.add(e),O.delete(e)):T.has(e)||I.add(e);if(r)if(0===T.size&&0===I.size)for(const e of r)O.add(e);else for(const e of r)I.has(e)?I.delete(e):(T.delete(e),O.add(e))}const r=s.A.acquire();I.forEach((e=>{r.push(e)}));const n=s.A.acquire();O.forEach((e=>{n.push(e)}));const i=this._items,o=t.items,a=s.A.acquire();if(T.forEach((e=>{o.indexOf(e)!==i.indexOf(e)&&a.push(e)})),t.listeners&&(r.length||n.length||a.length)){const e={target:this,added:r,removed:n,moved:a},i=t.listeners.length;for(let r=0;r<i;r++){const n=t.listeners[r];n.removed||n.callback.call(this,e)}}s.A.release(r),s.A.release(n),s.A.release(a)}I.clear(),O.clear(),T.clear()}};(0,i._)([(0,p.MZ)()],M.prototype,"_updating",void 0),(0,i._)([(0,p.MZ)()],M.prototype,"length",void 0),(0,i._)([(0,p.MZ)()],M.prototype,"items",null),(0,i._)([(0,p.MZ)({readOnly:!0})],M.prototype,"updating",null),M=u=(0,i._)([(0,g.$)("esri.core.Collection")],M);const E=M},6797:(e,t,r)=>{r.d(t,{Mj:()=>h,Ui:()=>p,w2:()=>f});var n=r(69622),i=r(5503),s=r(88620);const o=new Set(["esri.Color","esri.portal.Portal","esri.symbols.support.Symbol3DAnchorPosition2D","esri.symbols.support.Symbol3DAnchorPosition3D"]);function a(e){return e instanceof n.A}function l(e){return e instanceof i.A?Object.keys(e.items):a(e)?(0,s.oY)(e).keys():e?Object.keys(e):[]}function c(e,t){return e instanceof i.A?e.items[t]:e[t]}function u(e){return e?e.declaredClass:null}function d(e,t){const r=e.diff;if(r&&"function"==typeof r)return r(e,t);const n=l(e),i=l(t);if(0===n.length&&0===i.length)return;if(!n.length||!i.length||function(e,t){return!(!Array.isArray(e)||!Array.isArray(t))&&e.length!==t.length}(e,t))return{type:"complete",oldValue:e,newValue:t};const s=i.filter((e=>!n.includes(e))),h=n.filter((e=>!i.includes(e))),f=n.filter((r=>i.includes(r)&&c(e,r)!==c(t,r))).concat(s,h).sort(),p=u(e);if(p&&o.has(p)&&f.length)return{type:"complete",oldValue:e,newValue:t};let m;const g=a(e)&&a(t);for(const n of f){const i=c(e,n),s=c(t,n);let o;if((g||"function"!=typeof i&&"function"!=typeof s)&&i!==s&&(null!=i||null!=s)){if(r&&r[n]&&"function"==typeof r[n])o=r[n]?.(i,s);else if(i instanceof Date&&s instanceof Date){if(i.getTime()===s.getTime())continue;o={type:"complete",oldValue:i,newValue:s}}else o="object"==typeof i&&"object"==typeof s&&u(i)===u(s)?d(i,s):{type:"complete",oldValue:i,newValue:s};null!=o&&(null!=m?m.diff[n]=o:m={type:"partial",diff:{[n]:o}})}}return m}function h(e,t){return function(e,t){if(null==e)return!1;const r=t.split(".");let n=e;for(const e of r){if("complete"===n.type)return!0;if("partial"!==n.type)return!1;{const t=n.diff[e];if(!t)return!1;n=t}}return!0}(e,t)}function f(e,t){if(!e)return!1;if("partial"===e.type){const r=Object.keys(e.diff);return 1===r.length&&r[0]===t}return!1}function p(e,t){if("function"!=typeof e&&"function"!=typeof t&&(null!=e||null!=t))return null==e||null==t||"object"==typeof e&&"object"==typeof t&&u(e)!==u(t)?{type:"complete",oldValue:e,newValue:t}:d(e,t)}},6867:(e,t,r)=>{r.d(t,{i:()=>d});var n=r(58083),i=r(9093),s=r(38954),o=r(51850),a=r(87317),l=r(91829),c=r(71351),u=r(29878);class d{get ray(){return this._ray}get distanceInRenderSpace(){return null==this.distance?null:((0,s.g)(f,this.ray.direction,this.distance),(0,s.l)(f))}withinDistance(e){return!!h(this)&&this.distanceInRenderSpace<=e}getIntersectionPoint(e){return!!h(this)&&((0,s.g)(f,this.ray.direction,this.distance),(0,s.f)(e,this.ray.origin,f),!0)}getTransformedNormal(e){return(0,s.c)(p,this.normal),p[3]=0,(0,a.t)(p,p,this.transformation),(0,s.c)(e,p),(0,s.n)(e,e)}constructor(e){this.intersector=u.d.OBJECT,this.normal=(0,o.vt)(),this.transformation=(0,i.vt)(),this._ray=(0,c.vt)(),this.init(e)}init(e){this.distance=this.target=this.drapedLayerOrder=this.renderPriority=null,this.intersector=u.d.OBJECT,(0,c.C)(e,this._ray)}set(e,t,r,a,l,c,u){this.intersector=e,this.distance=r,(0,s.c)(this.normal,a??o.Cb),(0,n.C)(this.transformation,l??i.zK),this.target=t,this.drapedLayerOrder=c,this.renderPriority=u}copy(e){(0,c.C)(e.ray,this._ray),this.intersector=e.intersector,this.distance=e.distance,this.target=e.target,this.drapedLayerOrder=e.drapedLayerOrder,this.renderPriority=e.renderPriority,(0,s.c)(this.normal,e.normal),(0,n.C)(this.transformation,e.transformation)}}function h(e){return null!=e?.distance}const f=(0,o.vt)(),p=(0,l.vt)()},7695:(e,t,r)=>{function n(e){return(t,r)=>{t[r]=e}}r.d(t,{u:()=>n})},10536:(e,t,r)=>{function n(e){const t={};for(const r in e){if("declaredClass"===r)continue;const i=e[r];if(null!=i&&"function"!=typeof i)if(Array.isArray(i)){t[r]=[];for(let e=0;e<i.length;e++)t[r][e]=n(i[e])}else"object"==typeof i?i.toJSON&&(t[r]=JSON.stringify(i)):t[r]=i}return t}r.d(t,{z:()=>n})},13259:(e,t,r)=>{r.d(t,{H:()=>k,b:()=>F,c:()=>L,f:()=>j});var n=r(37585),i=r(48163),s=r(91829),o=r(79258),a=r(49255),l=r(76591),c=r(36782),u=r(47522),d=r(40268),h=r(63578),f=r(13755),p=r(42593),m=r(42398),g=r(63365),y=r(26835),_=r(52587),b=r(20693),v=r(47286),x=r(14314),w=r(81961),C=r(71988),A=r(33094),S=r(20304),I=r(31821),O=r(12791),T=r(63761),R=r(59643),P=r(46540),M=r(14113),E=r(49788);function F(e){const t=new M.N5,{signedDistanceFieldEnabled:r,occlusionTestEnabled:i,horizonCullingEnabled:F,pixelSnappingEnabled:j,hasScreenSizePerspective:k,debugDrawLabelBorder:z,vvSize:U,vvColor:N,hasRotation:q,occludedFragmentFade:G,sampleSignedDistanceFieldTexelCenter:H}=e;t.include(d.Q,e),t.vertex.include(l.rA,e);const{occlusionPass:$,output:Z,oitPass:Y}=e;if($)return t.include(h.I,e),t;const{vertex:X,fragment:W}=t;t.include(_.Y6),t.include(m.A,e),t.include(c.g,e),i&&t.include(f.y),W.include(y.W),W.include(g.a),t.varyings.add("vcolor","vec4"),t.varyings.add("vtc","vec2"),t.varyings.add("vsize","vec2");const J=Z===a.V.Highlight,Q=J&&i;Q&&t.varyings.add("voccluded","float"),X.uniforms.add(new x.I("viewport",(e=>e.camera.fullViewport)),new v.G("screenOffset",((e,t)=>(0,n.hZ)(V,2*e.screenOffset[0]*t.camera.pixelRatio,2*e.screenOffset[1]*t.camera.pixelRatio))),new v.G("anchorPosition",(e=>L(e))),new C.E("materialColor",(e=>e.color)),new S.m("materialRotation",(e=>e.rotation)),new T.N("tex",(e=>e.texture))),(0,b.Nz)(X),r&&(X.uniforms.add(new C.E("outlineColor",(e=>e.outlineColor))),W.uniforms.add(new C.E("outlineColor",(e=>D(e)?e.outlineColor:s.uY)),new S.m("outlineSize",(e=>D(e)?e.outlineSize:0)))),F&&X.uniforms.add(new w.V("pointDistanceSphere",((e,t)=>{const r=t.camera.eye,n=e.origin;return(0,s.fA)(n[0]-r[0],n[1]-r[1],n[2]-r[2],o.$O.radius)}))),j&&X.include(u.K),k&&((0,_.pM)(X),(0,_.OH)(X)),z&&t.varyings.add("debugBorderCoords","vec4"),t.attributes.add(P.r.UVI,"vec2"),t.attributes.add(P.r.COLOR,"vec4"),t.attributes.add(P.r.SIZE,"vec2"),t.attributes.add(P.r.ROTATION,"float"),(U||N)&&t.attributes.add(P.r.FEATUREATTRIBUTE,"vec4"),X.code.add(F?I.H`bool behindHorizon(vec3 posModel) {
vec3 camToEarthCenter = pointDistanceSphere.xyz - localOrigin;
vec3 camToPos = pointDistanceSphere.xyz + posModel;
float earthRadius = pointDistanceSphere.w;
float a = dot(camToPos, camToPos);
float b = dot(camToPos, camToEarthCenter);
float c = dot(camToEarthCenter, camToEarthCenter) - earthRadius * earthRadius;
return b > 0.0 && b < a && b * b > a * c;
}`:I.H`bool behindHorizon(vec3 posModel) { return false; }`),X.main.add(I.H`
ProjectHUDAux projectAux;
vec4 posProj = projectPositionHUD(projectAux);
forwardObjectAndLayerIdColor();
if (rejectBySlice(projectAux.posModel)) {
// Project outside of clip plane
gl_Position = vec4(1e038, 1e038, 1e038, 1.0);
return;
}
if (behindHorizon(projectAux.posModel)) {
// Project outside of clip plane
gl_Position = vec4(1e038, 1e038, 1e038, 1.0);
return;
}
vec2 inputSize;
${(0,I.If)(k,I.H`
inputSize = screenSizePerspectiveScaleVec2(size, projectAux.absCosAngle, projectAux.distanceToCamera, screenSizePerspective);
vec2 screenOffsetScaled = screenSizePerspectiveScaleVec2(screenOffset, projectAux.absCosAngle, projectAux.distanceToCamera, screenSizePerspectiveAlignment);`,I.H`
inputSize = size;
vec2 screenOffsetScaled = screenOffset;`)}
${(0,I.If)(U,I.H`inputSize *= vvScale(featureAttribute).xx;`)}
vec2 combinedSize = inputSize * pixelRatio;
vec4 quadOffset = vec4(0.0);
${(0,I.If)(i,I.H`
bool visible = testHUDVisibility(posProj);
if (!visible) {
vtc = vec2(0.0);
${(0,I.If)(z,"debugBorderCoords = vec4(0.5, 0.5, 1.5 / combinedSize);")}
return;
}`)}
${(0,I.If)(Q,I.H`voccluded = visible ? 0.0 : 1.0;`)}
`);const K=I.H`
vec2 uvi1 = vec2(uvi.x < 0.0 ? 1.0 : 0.0, uvi.y < 0.0 ? 1.0 : 0.0);
vec2 uv = abs(uvi + uvi1);
vec2 texSize = vec2(textureSize(tex, 0));
uv.x = uv.x >= ${B} ? 1.0 : uv.x / texSize.x;
uv.y = uv.y >= ${B} ? 1.0 : uv.y / texSize.y;
quadOffset.xy = (uvi1 - anchorPosition) * 2.0 * combinedSize;
${(0,I.If)(q,I.H`
float angle = radians(materialRotation + rotation);
float cosAngle = cos(angle);
float sinAngle = sin(angle);
mat2 rotate = mat2(cosAngle, -sinAngle, sinAngle, cosAngle);
quadOffset.xy = rotate * quadOffset.xy;
`)}
quadOffset.xy = (quadOffset.xy + screenOffsetScaled) / viewport.zw * posProj.w;
`,ee=j?r?I.H`posProj = alignToPixelOrigin(posProj, viewport.zw) + quadOffset;`:I.H`posProj += quadOffset;
if (inputSize.x == size.x) {
posProj = alignToPixelOrigin(posProj, viewport.zw);
}`:I.H`posProj += quadOffset;`;X.main.add(I.H`
${K}
${N?"vcolor = interpolateVVColor(featureAttribute.y) * materialColor;":"vcolor = color / 255.0 * materialColor;"}
${(0,I.If)(Z===a.V.ObjectAndLayerIdColor,I.H`vcolor.a = 1.0;`)}
bool alphaDiscard = vcolor.a < ${I.H.float(E.Q)};
${(0,I.If)(r,`alphaDiscard = alphaDiscard && outlineColor.a < ${I.H.float(E.Q)};`)}
if (alphaDiscard) {
// "early discard" if both symbol color (= fill) and outline color (if applicable) are transparent
gl_Position = vec4(1e38, 1e38, 1e38, 1.0);
return;
} else {
${ee}
gl_Position = posProj;
}
vtc = uv;
${(0,I.If)(z,I.H`debugBorderCoords = vec4(uv01, 1.5 / combinedSize);`)}
vsize = inputSize;
`),W.uniforms.add(new T.N("tex",(e=>e.texture))),G&&!J&&W.uniforms.add(new O.x("depthMap",(e=>e.mainDepth)),new A.U("occludedOpacity",(e=>e.hudOccludedFragmentOpacity)));const te=z?I.H`(isBorder > 0.0 ? 0.0 : ${I.H.float(E.Q)})`:I.H.float(E.Q),re=I.H`
${(0,I.If)(z,I.H`float isBorder = float(any(lessThan(debugBorderCoords.xy, debugBorderCoords.zw)) || any(greaterThan(debugBorderCoords.xy, 1.0 - debugBorderCoords.zw)));`)}
vec2 samplePos = vtc;
${(0,I.If)(H,I.H`
float txSize = float(textureSize(tex, 0).x);
float texelSize = 1.0 / txSize;
// Calculate how much we have to add/subtract to/from each texel to reach the size of an onscreen pixel
vec2 scaleFactor = (vsize - txSize) * texelSize;
samplePos += (vec2(1.0, -1.0) * texelSize) * scaleFactor;`)}
${r?I.H`
vec4 fillPixelColor = vcolor;
// Get distance and map it into [-0.5, 0.5]
float d = rgbaTofloat(texture(tex, samplePos)) - 0.5;
// Distance in output units (i.e. pixels)
float dist = d * vsize.x;
// Create smooth transition from the icon into its outline
float fillAlphaFactor = clamp(0.5 - dist, 0.0, 1.0);
fillPixelColor.a *= fillAlphaFactor;
if (outlineSize > 0.25) {
vec4 outlinePixelColor = outlineColor;
float clampedOutlineSize = min(outlineSize, 0.5*vsize.x);
// Create smooth transition around outline
float outlineAlphaFactor = clamp(0.5 - (abs(dist) - 0.5*clampedOutlineSize), 0.0, 1.0);
outlinePixelColor.a *= outlineAlphaFactor;
if (
outlineAlphaFactor + fillAlphaFactor < ${te} ||
fillPixelColor.a + outlinePixelColor.a < ${I.H.float(E.Q)}
) {
discard;
}
// perform un-premultiplied over operator (see https://en.wikipedia.org/wiki/Alpha_compositing#Description)
float compositeAlpha = outlinePixelColor.a + fillPixelColor.a * (1.0 - outlinePixelColor.a);
vec3 compositeColor = vec3(outlinePixelColor) * outlinePixelColor.a +
vec3(fillPixelColor) * fillPixelColor.a * (1.0 - outlinePixelColor.a);
${(0,I.If)(!J,I.H`fragColor = vec4(compositeColor, compositeAlpha);`)}
} else {
if (fillAlphaFactor < ${te}) {
discard;
}
${(0,I.If)(!J,I.H`fragColor = premultiplyAlpha(fillPixelColor);`)}
}
// visualize SDF:
// fragColor = vec4(clamp(-dist/vsize.x*2.0, 0.0, 1.0), clamp(dist/vsize.x*2.0, 0.0, 1.0), 0.0, 1.0);
`:I.H`
vec4 texColor = texture(tex, samplePos, -0.5);
if (texColor.a < ${te}) {
discard;
}
${(0,I.If)(!J,I.H`fragColor = texColor * premultiplyAlpha(vcolor);`)}
`}
${(0,I.If)(G&&!J,I.H`
float zSample = texelFetch(depthMap, ivec2(gl_FragCoord.xy), 0).x;
if (zSample < gl_FragCoord.z) {
fragColor *= occludedOpacity;
}
`)}
${(0,I.If)(!J&&z,I.H`fragColor = mix(fragColor, vec4(1.0, 0.0, 1.0, 1.0), isBorder * 0.5);`)}
`;switch(Z){case a.V.Color:case a.V.ColorEmission:t.outputs.add("fragColor","vec4",0),Z===a.V.ColorEmission&&t.outputs.add("fragEmission","vec4",1),Y===R.Y.ColorAlpha&&t.outputs.add("fragAlpha","float",Z===a.V.ColorEmission?2:1),W.main.add(I.H`
${re}
${(0,I.If)(Y===R.Y.FrontFace,I.H`fragColor.rgb /= fragColor.a;`)}
${(0,I.If)(Z===a.V.ColorEmission,I.H`fragEmission = vec4(0.0);`)}
${(0,I.If)(Y===R.Y.ColorAlpha,I.H`fragAlpha = fragColor.a;`)}`);break;case a.V.ObjectAndLayerIdColor:W.main.add(I.H`
${re}
outputObjectAndLayerIdColor();`);break;case a.V.Highlight:t.include(p.Q,e),W.main.add(I.H`
${re}
outputHighlight(${(0,I.If)(Q,I.H`voccluded == 1.0`,I.H`false`)});`)}return t}function D(e){return e.outlineColor[3]>0&&e.outlineSize>0}function L(e){return e.textureIsSignedDistanceField?(t=e.anchorPosition,r=e.distanceFieldBoundingBox,i=V,(0,n.hZ)(i,t[0]*(r[2]-r[0])+r[0],t[1]*(r[3]-r[1])+r[1])):(0,n.C)(V,e.anchorPosition),V;var t,r,i}const V=(0,i.vt)(),j=32e3,B=I.H.float(j),k=Object.freeze(Object.defineProperty({__proto__:null,build:F,calculateAnchorPosition:L,fullUV:j},Symbol.toStringTag,{value:"Module"}))},13755:(e,t,r)=>{r.d(t,{y:()=>c});var n,i=r(47522);!function(e){e[e.Occluded=0]="Occluded",e[e.NotOccluded=1]="NotOccluded",e[e.Both=2]="Both",e[e.COUNT=3]="COUNT"}(n||(n={}));var s=r(14314),o=r(33094),a=r(31821),l=r(12791);function c(e){e.vertex.uniforms.add(new o.U("renderTransparentlyOccludedHUD",(e=>e.hudRenderStyle===n.Occluded?1:e.hudRenderStyle===n.NotOccluded?0:.75)),new s.I("viewport",(e=>e.camera.fullViewport)),new l.x("hudVisibilityTexture",(e=>e.hudVisibility?.getTexture()))),e.vertex.include(i.K),e.vertex.code.add(a.H`bool testHUDVisibility(vec4 posProj) {
vec4 posProjCenter = alignToPixelCenter(posProj, viewport.zw);
vec4 occlusionPixel = texture(hudVisibilityTexture, .5 + .5 * posProjCenter.xy / posProjCenter.w);
if (renderTransparentlyOccludedHUD > 0.5) {
return occlusionPixel.r * occlusionPixel.g > 0.0 && occlusionPixel.g * renderTransparentlyOccludedHUD < 1.0;
}
return occlusionPixel.r * occlusionPixel.g > 0.0 && occlusionPixel.g == 1.0;
}`)}},18251:(e,t,r)=>{r.d(t,{A:()=>u});var n=r(90237),i=r(69540),s=r(25482),o=r(10107),a=(r(44208),r(53966),r(87811),r(93223)),l=r(40608),c=r(51850);let u=class extends(i.A.ClonableMixin(s.A)){constructor(e){super(e),this.type="local",this.origin=(0,c.vt)()}};(0,n._)([(0,a.e)({local:"local"},{readOnly:!0})],u.prototype,"type",void 0),(0,n._)([(0,o.MZ)({type:[Number],nonNullable:!0,json:{write:!0}})],u.prototype,"origin",void 0),u=(0,n._)([(0,l.$)("esri.geometry.support.MeshLocalVertexSpace")],u)},20437:(e,t,r)=>{r.d(t,{A:()=>m});var n,i=r(90237),s=r(66552),o=r(25482),a=r(10107),l=r(56507),c=(r(44208),r(87811),r(93223)),u=r(36005),d=r(40608),h=r(80451),f=r(98453);const p=new s.J({binary:"binary",coordinate:"coordinate",countOrAmount:"count-or-amount",dateAndTime:"date-and-time",description:"description",locationOrPlaceName:"location-or-place-name",measurement:"measurement",nameOrTitle:"name-or-title",none:"none",orderedOrRanked:"ordered-or-ranked",percentageOrRatio:"percentage-or-ratio",typeOrCategory:"type-or-category",uniqueIdentifier:"unique-identifier"});let m=class extends o.A{static{n=this}constructor(e){super(e),this.alias=null,this.defaultValue=void 0,this.description=null,this.domain=null,this.editable=!0,this.length=void 0,this.name=null,this.nullable=!0,this.type=null,this.valueType=null,this.visible=!0}readDescription(e,{description:t}){let r=null;try{r=t?JSON.parse(t):null}catch(e){}return r?.value??null}readValueType(e,{description:t}){let r=null;try{r=t?JSON.parse(t):null}catch(e){}return r?p.fromJSON(r.fieldValueType):null}clone(){return new n({alias:this.alias,defaultValue:this.defaultValue,description:this.description,domain:this.domain?.clone()??null,editable:this.editable,length:this.length,name:this.name,nullable:this.nullable,type:this.type,valueType:this.valueType,visible:this.visible})}};(0,i._)([(0,a.MZ)({type:String,json:{write:!0}})],m.prototype,"alias",void 0),(0,i._)([(0,a.MZ)({type:[String,Number],json:{write:{allowNull:!0}}})],m.prototype,"defaultValue",void 0),(0,i._)([(0,a.MZ)()],m.prototype,"description",void 0),(0,i._)([(0,u.w)("description")],m.prototype,"readDescription",null),(0,i._)([(0,a.MZ)({types:h.gK,json:{read:{reader:h.rS},write:!0}})],m.prototype,"domain",void 0),(0,i._)([(0,a.MZ)({type:Boolean,json:{write:!0}})],m.prototype,"editable",void 0),(0,i._)([(0,a.MZ)({type:l.jz,json:{write:{overridePolicy:e=>({enabled:Number.isFinite(e)})}}})],m.prototype,"length",void 0),(0,i._)([(0,a.MZ)({type:String,json:{write:!0}})],m.prototype,"name",void 0),(0,i._)([(0,a.MZ)({type:Boolean,json:{write:!0}})],m.prototype,"nullable",void 0),(0,i._)([(0,c.e)(f.m)],m.prototype,"type",void 0),(0,i._)([(0,a.MZ)()],m.prototype,"valueType",void 0),(0,i._)([(0,u.w)("valueType",["description"])],m.prototype,"readValueType",null),(0,i._)([(0,a.MZ)({type:Boolean,json:{read:!1}})],m.prototype,"visible",void 0),m=n=(0,i._)([(0,d.$)("esri.layers.support.Field")],m)},26835:(e,t,r)=>{r.d(t,{W:()=>i});var n=r(31821);function i(e){e.code.add(n.H`const float MAX_RGBA_FLOAT =
255.0 / 256.0 +
255.0 / 256.0 / 256.0 +
255.0 / 256.0 / 256.0 / 256.0 +
255.0 / 256.0 / 256.0 / 256.0 / 256.0;
const vec4 FIXED_POINT_FACTORS = vec4(1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0);
vec4 float2rgba(const float value) {
float valueInValidDomain = clamp(value, 0.0, MAX_RGBA_FLOAT);
vec4 fixedPointU8 = floor(fract(valueInValidDomain * FIXED_POINT_FACTORS) * 256.0);
const float toU8AsFloat = 1.0 / 255.0;
return fixedPointU8 * toU8AsFloat;
}`),e.code.add(n.H`const vec4 RGBA_TO_FLOAT_FACTORS = vec4(
255.0 / (256.0),
255.0 / (256.0 * 256.0),
255.0 / (256.0 * 256.0 * 256.0),
255.0 / (256.0 * 256.0 * 256.0 * 256.0)
);
float rgbaTofloat(vec4 rgba) {
return dot(rgba, RGBA_TO_FLOAT_FACTORS);
}`),e.code.add(n.H`const vec4 uninterpolatedRGBAToFloatFactors = vec4(
1.0 / 256.0,
1.0 / 256.0 / 256.0,
1.0 / 256.0 / 256.0 / 256.0,
1.0 / 256.0 / 256.0 / 256.0 / 256.0
);
float uninterpolatedRGBAToFloat(vec4 rgba) {
return (dot(round(rgba * 255.0), uninterpolatedRGBAToFloatFactors) - 0.5) * 2.0;
}`)}},27615:(e,t,r)=>{r.d(t,{CK:()=>l,Hq:()=>a,MW:()=>c,TE:()=>u,yJ:()=>d});var n=r(38954),i=r(86738),s=r(95696),o=r(18251);function a(e){return null!=e.origin}function l(e){return a(e.vertexSpace)}function c(e,t){if(!a(e))return null;const[r,n,s]=e.origin;return new i.A({x:r,y:n,z:s,spatialReference:t})}function u(e,t){const{x:r,y:n,z:i,spatialReference:a}=e,l=[r,n,i??0];return"local"===(t?.vertexSpace??function(e){return e.isGeographic||e.isWebMercator?"local":"georeferenced"}(a))?new o.A({origin:l}):new s.A({origin:l})}function d(e,t){return e.type===t.type&&(e.origin===t.origin||null!=e.origin&&null!=t.origin&&(0,n.q)(e.origin,t.origin))}},27993:(e,t,r)=>{r.d(t,{F:()=>s}),r(98988);var n=r(16930),i=r(65806);function s(e,t,r,n,s){return!(null==t||null==n||e.length<2)&&(o.x=e[0],o.y=e[1],o.z=e[2],o.spatialReference=t,(0,i.g)(o,r,n,s))}const o={x:0,y:0,z:0,hasZ:!0,hasM:!1,spatialReference:n.A.WGS84,type:"point"}},29878:(e,t,r)=>{var n;r.d(t,{d:()=>n}),function(e){e[e.OBJECT=0]="OBJECT",e[e.HUD=1]="HUD",e[e.TERRAIN=2]="TERRAIN",e[e.OVERLAY=3]="OVERLAY",e[e.I3S=4]="I3S",e[e.PCL=5]="PCL",e[e.LOD=6]="LOD",e[e.VOXEL=7]="VOXEL",e[e.TILES3D=8]="TILES3D"}(n||(n={}))},31756:(e,t,r)=>{r.d(t,{j:()=>s});var n=r(83047),i=r(79258);const s={unknown:1,inches:(0,n.oU)(1,"meters","inches"),feet:(0,n.oU)(1,"meters","feet"),"us-feet":(0,n.oU)(1,"meters","us-feet"),yards:(0,n.oU)(1,"meters","yards"),miles:(0,n.oU)(1,"meters","miles"),"nautical-miles":(0,n.oU)(1,"meters","nautical-miles"),millimeters:(0,n.oU)(1,"meters","millimeters"),centimeters:(0,n.oU)(1,"meters","centimeters"),decimeters:(0,n.oU)(1,"meters","decimeters"),meters:(0,n.oU)(1,"meters","meters"),kilometers:(0,n.oU)(1,"meters","kilometers"),"decimal-degrees":1/(0,n.vl)(1,"meters",i.$O.radius)}},32587:(e,t,r)=>{r.d(t,{A:()=>s});var n=r(62788),i=r(95488);class s{constructor(e){this._observable=new i.I,this._map=new Map(e)}get size(){return(0,n.gc)(this._observable),this._map.size}clear(){this._map.size>0&&(this._map.clear(),this._observable.notify())}delete(e){const t=this._map.delete(e);return t&&this._observable.notify(),t}entries(){return(0,n.gc)(this._observable),this._map.entries()}forEach(e,t){(0,n.gc)(this._observable),this._map.forEach(((r,n)=>e.call(t,r,n,this)),t)}get(e){return(0,n.gc)(this._observable),this._map.get(e)}has(e){return(0,n.gc)(this._observable),this._map.has(e)}keys(){return(0,n.gc)(this._observable),this._map.keys()}set(e,t){return this._map.set(e,t),this._observable.notify(),this}values(){return(0,n.gc)(this._observable),this._map.values()}[Symbol.iterator](){return(0,n.gc)(this._observable),this._map[Symbol.iterator]()}[Symbol.dispose](){this._observable.destroy()}get[Symbol.toStringTag](){return this._map[Symbol.toStringTag]}}},36708:(e,t,r)=>{r.d(t,{C_:()=>h,OH:()=>m,Vh:()=>g,on:()=>d,pc:()=>y,wB:()=>l,z7:()=>c});var n=r(37955),i=r(36563),s=r(97768),o=r(74887),a=r(14012);function l(e,t,r={}){return u(e,t,r,f)}function c(e,t,r={}){return u(e,t,r,p)}function u(e,t,r={},n){let i=null;const o=r.once?(e,r)=>{n(e)&&((0,s.xt)(i),t(e,r))}:(e,r)=>{n(e)&&t(e,r)};if(i=(0,a.Cn)(e,o,r.sync,r.equals),r.initial){const t=e();o(t,t)}return i}function d(e,t,r,o={}){let a=null,c=null,u=null;function d(){a&&c&&(c.remove(),o.onListenerRemove?.(a),a=null,c=null)}function h(e){o.once&&o.once&&(0,s.xt)(u),r(e)}const f=l(e,((e,r)=>{d(),(0,n.wb)(e)&&(a=e,c=(0,n.on)(e,t,h),o.onListenerAdd?.(e))}),{sync:o.sync,initial:!0});return u=(0,i.hA)((()=>{f.remove(),d()})),u}function h(e,t){return function(e,t,r){if((0,o.G4)(r))return Promise.reject((0,o.NK)());const n=e();if(t?.(n))return Promise.resolve(n);let a=null;function l(){a=(0,s.xt)(a)}return new Promise(((n,s)=>{a=(0,i.vE)([(0,o.u7)(r,(()=>{l(),s((0,o.NK)())})),u(e,(e=>{l(),n(e)}),{sync:!1,once:!0},t??f)])}))}(e,p,t)}function f(e){return!0}function p(e){return!!e}r(80559);const m={sync:!0},g={initial:!0},y={sync:!0,initial:!0}},39357:(e,t,r)=>{r.d(t,{H:()=>l});var n,i=r(90237),s=r(25482),o=r(10107),a=(r(44208),r(53966),r(87811),r(40608));let l=n=class extends s.A{constructor(e){super(e),this.name=null,this.code=null}clone(){return new n({name:this.name,code:this.code})}};(0,i._)([(0,o.MZ)({type:String,json:{write:{isRequired:!0}}})],l.prototype,"name",void 0),(0,i._)([(0,o.MZ)({type:[String,Number],json:{write:{isRequired:!0}}})],l.prototype,"code",void 0),l=n=(0,i._)([(0,a.$)("esri.layers.support.CodedValue")],l)},40268:(e,t,r)=>{r.d(t,{Q:()=>h,R:()=>d});var n=r(35640),i=r(52587),s=r(20693),o=r(14314),a=r(33094),l=r(20304),c=r(31821),u=r(46540);const d=.5;function h(e,t){e.include(i.Y6),e.attributes.add(u.r.POSITION,"vec3"),e.attributes.add(u.r.NORMAL,"vec3"),e.attributes.add(u.r.CENTEROFFSETANDDISTANCE,"vec4");const r=e.vertex;(0,s.NB)(r,t),(0,s.yu)(r,t),r.uniforms.add(new o.I("viewport",(e=>e.camera.fullViewport)),new l.m("polygonOffset",(e=>e.shaderPolygonOffset)),new a.U("cameraGroundRelative",(e=>e.camera.aboveGround?1:-1))),t.hasVerticalOffset&&(0,n.V)(r),r.code.add(c.H`struct ProjectHUDAux {
vec3 posModel;
vec3 posView;
vec3 vnormal;
float distanceToCamera;
float absCosAngle;
};`),r.code.add(c.H`
float applyHUDViewDependentPolygonOffset(float pointGroundDistance, float absCosAngle, inout vec3 posView) {
float pointGroundSign = ${t.terrainDepthTest?c.H.float(0):c.H`sign(pointGroundDistance)`};
if (pointGroundSign == 0.0) {
pointGroundSign = cameraGroundRelative;
}
// cameraGroundRelative is -1 if camera is below ground, 1 if above ground
// groundRelative is 1 if both camera and symbol are on the same side of the ground, -1 otherwise
float groundRelative = cameraGroundRelative * pointGroundSign;
// view angle dependent part of polygon offset emulation: we take the absolute value because the sign that is
// dropped is instead introduced using the ground-relative position of the symbol and the camera
if (polygonOffset > .0) {
float cosAlpha = clamp(absCosAngle, 0.01, 1.0);
float tanAlpha = sqrt(1.0 - cosAlpha * cosAlpha) / cosAlpha;
float factor = (1.0 - tanAlpha / viewport[2]);
// same side of the terrain
if (groundRelative > 0.0) {
posView *= factor;
}
// opposite sides of the terrain
else {
posView /= factor;
}
}
return groundRelative;
}
`),t.draped&&!t.hasVerticalOffset||(0,s.S7)(r),t.draped||(r.uniforms.add(new a.U("perDistancePixelRatio",(e=>Math.tan(e.camera.fovY/2)/(e.camera.fullViewport[2]/2)))),r.code.add(c.H`
void applyHUDVerticalGroundOffset(vec3 normalModel, inout vec3 posModel, inout vec3 posView) {
float distanceToCamera = length(posView);
// Compute offset in world units for a half pixel shift
float pixelOffset = distanceToCamera * perDistancePixelRatio * ${c.H.float(d)};
// Apply offset along normal in the direction away from the ground surface
vec3 modelOffset = normalModel * cameraGroundRelative * pixelOffset;
// Apply the same offset also on the view space position
vec3 viewOffset = (viewNormal * vec4(modelOffset, 1.0)).xyz;
posModel += modelOffset;
posView += viewOffset;
}
`)),t.screenCenterOffsetUnitsEnabled&&(0,s.Nz)(r),t.hasScreenSizePerspective&&(0,i.OH)(r),r.code.add(c.H`
vec4 projectPositionHUD(out ProjectHUDAux aux) {
vec3 centerOffset = centerOffsetAndDistance.xyz;
float pointGroundDistance = centerOffsetAndDistance.w;
aux.posModel = position;
aux.posView = (view * vec4(aux.posModel, 1.0)).xyz;
aux.vnormal = normal;
${t.draped?"":"applyHUDVerticalGroundOffset(aux.vnormal, aux.posModel, aux.posView);"}
// Screen sized offset in world space, used for example for line callouts
// Note: keep this implementation in sync with the CPU implementation, see
// - MaterialUtil.verticalOffsetAtDistance
// - HUDMaterial.applyVerticalOffsetTransformation
aux.distanceToCamera = length(aux.posView);
vec3 viewDirObjSpace = normalize(cameraPosition - aux.posModel);
float cosAngle = dot(aux.vnormal, viewDirObjSpace);
aux.absCosAngle = abs(cosAngle);
${t.hasScreenSizePerspective&&(t.hasVerticalOffset||t.screenCenterOffsetUnitsEnabled)?"vec3 perspectiveFactor = screenSizePerspectiveScaleFactor(aux.absCosAngle, aux.distanceToCamera, screenSizePerspectiveAlignment);":""}
${t.hasVerticalOffset?t.hasScreenSizePerspective?"float verticalOffsetScreenHeight = applyScreenSizePerspectiveScaleFactorFloat(verticalOffset.x, perspectiveFactor);":"float verticalOffsetScreenHeight = verticalOffset.x;":""}
${t.hasVerticalOffset?c.H`
float worldOffset = clamp(verticalOffsetScreenHeight * verticalOffset.y * aux.distanceToCamera, verticalOffset.z, verticalOffset.w);
vec3 modelOffset = aux.vnormal * worldOffset;
aux.posModel += modelOffset;
vec3 viewOffset = (viewNormal * vec4(modelOffset, 1.0)).xyz;
aux.posView += viewOffset;
// Since we elevate the object, we need to take that into account
// in the distance to ground
pointGroundDistance += worldOffset;`:""}
float groundRelative = applyHUDViewDependentPolygonOffset(pointGroundDistance, aux.absCosAngle, aux.posView);
${t.screenCenterOffsetUnitsEnabled?"":c.H`
// Apply x/y in view space, but z in screen space (i.e. along posView direction)
aux.posView += vec3(centerOffset.x, centerOffset.y, 0.0);
// Same material all have same z != 0.0 condition so should not lead to
// branch fragmentation and will save a normalization if it's not needed
if (centerOffset.z != 0.0) {
aux.posView -= normalize(aux.posView) * centerOffset.z;
}
`}
vec4 posProj = proj * vec4(aux.posView, 1.0);
${t.screenCenterOffsetUnitsEnabled?t.hasScreenSizePerspective?"float centerOffsetY = applyScreenSizePerspectiveScaleFactorFloat(centerOffset.y, perspectiveFactor);":"float centerOffsetY = centerOffset.y;":""}
${t.screenCenterOffsetUnitsEnabled?"posProj.xy += vec2(centerOffset.x, centerOffsetY) * pixelRatio * 2.0 / viewport.zw * posProj.w;":""}
// constant part of polygon offset emulation
posProj.z -= groundRelative * polygonOffset * posProj.w;
return posProj;
}
`)}},40804:(e,t,r)=>{r.d(t,{U:()=>i});var n=r(34727);function i(e,t,r=0){const i=(0,n.qE)(e,0,a);for(let e=0;e<4;e++)t[r+e]=Math.floor(256*l(i*s[e]))}const s=[1,256,65536,16777216],o=[1/256,1/65536,1/16777216,1/4294967296],a=function(e,t=0){let r=0;for(let n=0;n<4;n++)r+=e[t+n]*o[n];return r}(new Uint8ClampedArray([255,255,255,255]));function l(e){return e-Math.floor(e)}},47522:(e,t,r)=>{r.d(t,{K:()=>s});var n=r(32976),i=r(31821);function s(e){e.uniforms.add(new n.o("alignPixelEnabled",(e=>e.alignPixelEnabled))),e.code.add(i.H`vec4 alignToPixelCenter(vec4 clipCoord, vec2 widthHeight) {
if (!alignPixelEnabled)
return clipCoord;
vec2 xy = vec2(0.500123) + 0.5 * clipCoord.xy / clipCoord.w;
vec2 pixelSz = vec2(1.0) / widthHeight;
vec2 ij = (floor(xy * widthHeight) + vec2(0.5)) * pixelSz;
vec2 result = (ij * 2.0 - vec2(1.0)) * clipCoord.w;
return vec4(result, clipCoord.zw);
}`),e.code.add(i.H`vec4 alignToPixelOrigin(vec4 clipCoord, vec2 widthHeight) {
if (!alignPixelEnabled)
return clipCoord;
vec2 xy = vec2(0.5) + 0.5 * clipCoord.xy / clipCoord.w;
vec2 pixelSz = vec2(1.0) / widthHeight;
vec2 ij = floor((xy + 0.5 * pixelSz) * widthHeight) * pixelSz;
vec2 result = (ij * 2.0 - vec2(1.0)) * clipCoord.w;
return vec4(result, clipCoord.zw);
}`)}},50498:(e,t,r)=>{r.d(t,{Ye:()=>d,gy:()=>u,yR:()=>h});var n=r(66552),i=r(5443),s=r(91075),o=r(48526),a=r(86738),l=r(39829),c=r(82799);const u=(0,n.O)()({esriGeometryPoint:"point",esriGeometryMultipoint:"multipoint",esriGeometryPolyline:"polyline",esriGeometryPolygon:"polygon"}),d=(0,n.O)()({esriGeometryPoint:"point",esriGeometryMultipoint:"multipoint",esriGeometryPolyline:"polyline",esriGeometryPolygon:"polygon",esriGeometryEnvelope:"extent",mesh:"mesh"}),h={base:s.A,key:"type",typeMap:{extent:i.A,multipoint:o.A,point:a.A,polyline:c.A,polygon:l.A}}},51624:(e,t,r)=>{r.d(t,{A:()=>d});var n,i,s=r(44208),o=r(69397),a=r(93687);(i=n||(n={}))[i.varint=0]="varint",i[i.fixed64=1]="fixed64",i[i.delimited=2]="delimited",i[i.fixed32=5]="fixed32",i[i.unknown=99]="unknown";const l=4294967296,c=new TextDecoder("utf-8"),u=(0,s.A)("safari")||(0,s.A)("ios")?6:(0,s.A)("ff")?12:32;class d{constructor(e,t,r=0,i=(e?e.byteLength:0)){this._tag=0,this._dataType=n.unknown,this._init(e,t,r,i)}_init(e,t,r,n){this._data=e,this._dataView=t,this._pos=r,this._end=n}get usedMemory(){return 64+(0,o.Qf)(this._data)}asUnsafe(){return this}clone(){return new d(this._data,this._dataView,this._pos,this._end)}pos(){return this._pos}move(e){this._pos=e}nextTag(e){for(;;){if(this._pos===this._end)return!1;const t=this._decodeVarint();if(this._tag=t>>3,this._dataType=7&t,!e||e===this._tag)break;this.skip()}return!0}next(){if(this._pos===this._end)return!1;const e=this._decodeVarint();return this._tag=e>>3,this._dataType=7&e,!0}empty(){return this._pos>=this._end}tag(){return this._tag}getInt32(){return this._decodeVarint()}getInt64(){return this._decodeVarint()}getUInt32(){let e=4294967295;if(e=(127&this._data[this._pos])>>>0,this._data[this._pos++]<128)return e;if(e=(e|(127&this._data[this._pos])<<7)>>>0,this._data[this._pos++]<128)return e;if(e=(e|(127&this._data[this._pos])<<14)>>>0,this._data[this._pos++]<128)return e;if(e=(e|(127&this._data[this._pos])<<21)>>>0,this._data[this._pos++]<128)return e;if(e=(e|(15&this._data[this._pos])<<28)>>>0,this._data[this._pos++]<128)return e;throw new Error("Varint overflow")}getUInt64(){return this._decodeVarint()}getSInt32(){const e=this.getUInt32();return e>>>1^-(1&e)}getSInt64(){return this._decodeSVarint()}getBool(){const e=0!==this._data[this._pos];return this._skip(1),e}getEnum(){return this._decodeVarint()}getFixed64(){const e=this._dataView,t=this._pos,r=e.getUint32(t,!0)+e.getUint32(t+4,!0)*l;return this._skip(8),r}getSFixed64(){const e=this._dataView,t=this._pos,r=e.getUint32(t,!0)+e.getInt32(t+4,!0)*l;return this._skip(8),r}getDouble(){const e=this._dataView.getFloat64(this._pos,!0);return this._skip(8),e}getFixed32(){const e=this._dataView.getUint32(this._pos,!0);return this._skip(4),e}getSFixed32(){const e=this._dataView.getInt32(this._pos,!0);return this._skip(4),e}getFloat(){const e=this._dataView.getFloat32(this._pos,!0);return this._skip(4),e}getString(){const e=this._getLength(),t=this._pos,r=this._toString(this._data,t,t+e);return this._skip(e),r}getBytes(){const e=this._getLength(),t=this._pos,r=this._toBytes(this._data,t,t+e);return this._skip(e),r}getLength(){return this._getLengthUnsafe()}processMessageWithArgs(e,t,r,n){const i=this.getMessage(),s=e(i,t,r,n);return i.release(),s}processMessage(e){const t=this.getMessage(),r=e(t);return t.release(),r}getMessage(){const e=this._getLength(),t=d.pool.acquire();return t._init(this._data,this._dataView,this._pos,this._pos+e),this._skip(e),t}release(){d.pool.release(this)}dataType(){return this._dataType}skip(){switch(this._dataType){case n.varint:this._decodeVarint();break;case n.fixed64:this._skip(8);break;case n.delimited:this._skip(this._getLength());break;case n.fixed32:this._skip(4);break;default:throw new Error("Invalid data type!")}}skipLen(e){this._skip(e)}_skip(e){if(this._pos+e>this._end)throw new Error("Attempt to skip past the end of buffer!");this._pos+=e}_decodeVarint(){const e=this._data;let t=this._pos,r=0,n=0;if(this._end-t>=10)do{if(n=e[t++],r|=127&n,!(128&n))break;if(n=e[t++],r|=(127&n)<<7,!(128&n))break;if(n=e[t++],r|=(127&n)<<14,!(128&n))break;if(n=e[t++],r|=(127&n)<<21,!(128&n))break;if(n=e[t++],r+=268435456*(127&n),!(128&n))break;if(n=e[t++],r+=34359738368*(127&n),!(128&n))break;if(n=e[t++],r+=4398046511104*(127&n),!(128&n))break;if(n=e[t++],r+=562949953421312*(127&n),!(128&n))break;if(n=e[t++],r+=72057594037927940*(127&n),!(128&n))break;if(n=e[t++],r+=0x8000000000000000*(127&n),!(128&n))break;throw new Error("Varint too long!")}while(0);else{let i=1;for(;t!==this._end&&(n=e[t],128&n);)++t,r+=(127&n)*i,i*=128;if(t===this._end)throw new Error("Varint overrun!");++t,r+=n*i}return this._pos=t,r}_decodeSVarint(){const e=this._data;let t,r=0,n=0;const i=1&e[this._pos];if(n=e[this._pos++],r|=127&n,!(128&n))return i?-(r+1)/2:r/2;if(n=e[this._pos++],r|=(127&n)<<7,!(128&n))return i?-(r+1)/2:r/2;if(n=e[this._pos++],r|=(127&n)<<14,!(128&n))return i?-(r+1)/2:r/2;if(n=e[this._pos++],r|=(127&n)<<21,!(128&n))return i?-(r+1)/2:r/2;if(n=e[this._pos++],r+=268435456*(127&n),!(128&n))return i?-(r+1)/2:r/2;if(n=e[this._pos++],r+=34359738368*(127&n),!(128&n))return i?-(r+1)/2:r/2;if(n=e[this._pos++],r+=4398046511104*(127&n),!(128&n))return i?-(r+1)/2:r/2;if(t=BigInt(r),n=e[this._pos++],t+=0x2000000000000n*BigInt(127&n),!(128&n))return Number(i?-(t+1n)/2n:t/2n);if(n=e[this._pos++],t+=0x100000000000000n*BigInt(127&n),!(128&n))return Number(i?-(t+1n)/2n:t/2n);if(n=e[this._pos++],t+=0x8000000000000000n*BigInt(127&n),!(128&n))return Number(i?-(t+1n)/2n:t/2n);throw new Error("Varint too long!")}_getLength(){if(this._dataType!==n.delimited)throw new Error("Not a delimited data type!");return this._decodeVarint()}_getLengthUnsafe(){return this.getUInt32()}_toString(e,t,r){if((r=Math.min(this._end,r))-t>u){const n=e.subarray(t,r);return c.decode(n)}let n="",i="";for(let s=t;s<r;++s){const t=e[s];128&t?i+="%"+t.toString(16):(n+=decodeURIComponent(i)+String.fromCharCode(t),i="")}return i.length&&(n+=decodeURIComponent(i)),n}_toBytes(e,t,r){return r=Math.min(this._end,r),new Uint8Array(e.buffer,t,r-t)}static{this.pool=new a.A(d,void 0,(e=>{e._data=null,e._dataView=null}))}}},52106:(e,t,r)=>{r.d(t,{A:()=>v});var n,i=r(90237),s=r(13874),o=r(69540),a=r(51447),l=r(25482),c=r(53966),u=r(36708),d=r(24326),h=r(10107),f=(r(44208),r(87811),r(40608)),p=r(12195),m=r(65864),g=r(50498),y=r(54339),_=r(33910);function b(e){if(null==e)return null;const t={};for(const r in e){const n=e[r];n&&(t[r]=n.toJSON())}return 0!==Object.keys(t).length?t:null}let v=class extends(o.A.ClonableMixin(l.A)){static{n=this}constructor(e){super(e),this.isAggregate=!1,this.layer=null,this.origin=null,this.sourceLayer=null,this._version=0,Object.defineProperty(this,"uid",{value:(0,d.c)(),configurable:!0}),Object.defineProperty(this,"_lastMeshTransform",{value:{},configurable:!0,writable:!0,enumerable:!1}),arguments.length>1&&(0,a.eF)(c.A.getLogger(this),"Graphic",{version:"4.30"})}initialize(){this._watchMeshGeometryChanges()}set aggregateGeometries(e){const t=this._get("aggregateGeometries");JSON.stringify(t)!==JSON.stringify(e)&&this._set("aggregateGeometries",e)}set attributes(e){const t=this._get("attributes");t!==e&&(this._set("attributes",e),this._notifyLayer("attributes",t,e))}set geometry(e){const t=this._get("geometry");t!==e&&(this._set("geometry",e),"mesh"!==e?.type&&this._notifyLayer("geometry",t,e))}set popupTemplate(e){const t=this._get("popupTemplate");t!==e&&(this._set("popupTemplate",e),this._notifyLayer("popupTemplate",t,e))}set symbol(e){const t=this._get("symbol");t!==e&&(this._set("symbol",e),this._notifyLayer("symbol",t,e))}get version(){return this._version}set visible(e){const t=this._get("visible");t!==e&&(this._set("visible",e),this._notifyLayer("visible",t,e))}cloneShallow(){return new n({aggregateGeometries:this.aggregateGeometries,att