@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
3 lines (2 loc) • 3.56 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */
import{__decorate as i}from"tslib";import t from"../../core/Accessor.js";import e from"../../core/Collection.js";import{watch as r,initial as s}from"../../core/reactiveUtils.js";import{property as l,subclass as n}from"../../core/accessorSupport/decorators.js";import{ensureClass as o}from"../../core/accessorSupport/ensureType.js";import a from"../../views/layers/support/ClipRect.js";function p(i,t){const e=10**t;return Math.round(i*e)/e}const c={left:0,right:0,top:0,bottom:0};let g=class extends t{constructor(i){super(i),this._leadingClips=new Map,this._trailingClips=new Map,this.direction="horizontal",this.max=100,this.min=0,this.precision=4,this.step=.5,this.stepMultiplier=10,this.view=null,this.leadingLayers=new e,this.trailingLayers=new e}initialize(){this.addHandles([r(()=>[this.view,this.view?.ready,this.position,this.direction],()=>this._clipLayers(),s),r(()=>this.leadingLayers.toArray(),()=>this._clipLeadingLayers(),s),r(()=>this.trailingLayers.toArray(),()=>this._clipTrailingLayers(),s)])}destroy(){this._removeExistingClips()}get leadingLayers(){return this._get("leadingLayers")}set leadingLayers(i){this._set("leadingLayers",o(e,i))}get position(){return 25}set position(i){const{precision:t,min:e,max:r}=this;this._set("position",p(Math.max(Math.min(i,r),e),t))}get state(){return this.view?.ready?"ready":"disabled"}get trailingLayers(){return this._get("trailingLayers")}set trailingLayers(i){this._set("trailingLayers",o(e,i))}_clipLayers(){this._clipLeadingLayers(),this._clipTrailingLayers()}_clipLeadingLayers(){this._removeClips("leading");const{leadingLayers:i}=this;i.forEach(i=>this._clipLayer({layer:i,type:"leading"}))}_clipTrailingLayers(){this._removeClips("trailing");const{trailingLayers:i}=this;i.forEach(i=>this._clipLayer({layer:i,type:"trailing"}))}async _getLayerView(i){const{view:t}=this;if(!i||!t)return null;const e=await t.whenLayerView(i);return"clips"in e?e:null}_getVerticalClipRect(i){const{position:t}=this;return"leading"===i?new a({...c,bottom:100-t+"%"}):"trailing"===i?new a({...c,top:`${t}%`}):null}_getHorizontalClipRect(i){const{position:t}=this;return"leading"===i?new a({...c,right:100-t+"%"}):"trailing"===i?new a({...c,left:`${t}%`}):null}_getClipRect(i){const{direction:t}=this;return"vertical"===t?this._getVerticalClipRect(i):"horizontal"===t?this._getHorizontalClipRect(i):null}async _clipLayer(i){const{_leadingClips:t,_trailingClips:e}=this,{layer:r,type:s}=i,l="trailing"===s?e:"leading"===s?t:null,n=await this._getLayerView(r);if(!(n&&"clips"in n&&l&&n.hasOwnProperty("clips")))return;const o=l.get(n);o&&n.clips.remove(o);const a=this._getClipRect(s);a&&(l.set(n,a),n.clips.add(a))}_removeClips(i){const{_leadingClips:t,_trailingClips:e}=this,r="trailing"===i?e:"leading"===i?t:null;r&&(r.forEach((i,t)=>{t&&t.hasOwnProperty("clips")&&t.clips.remove(i)}),r.clear())}_removeExistingClips(){this._removeClips("leading"),this._removeClips("trailing")}};i([l()],g.prototype,"direction",void 0),i([l({nonNullable:!0})],g.prototype,"leadingLayers",null),i([l({readOnly:!0})],g.prototype,"max",void 0),i([l({readOnly:!0})],g.prototype,"min",void 0),i([l()],g.prototype,"position",null),i([l()],g.prototype,"precision",void 0),i([l({readOnly:!0})],g.prototype,"state",null),i([l()],g.prototype,"step",void 0),i([l()],g.prototype,"stepMultiplier",void 0),i([l({nonNullable:!0})],g.prototype,"trailingLayers",null),i([l()],g.prototype,"view",void 0),g=i([n("esri.widgets.Swipe.SwipeViewModel")],g);const h=g;export{h as default};