@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 3.42 kB
JavaScript
import{_ as i}from"../../chunks/tslib.es6.js";import t from"../../core/Accessor.js";import e from"../../core/Collection.js";import{watch as s,initial as r,on as o}from"../../core/reactiveUtils.js";import{property as l}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import{subclass as n}from"../../core/accessorSupport/decorators/subclass.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 h=class extends t{constructor(i){super(i),this._leadingClips=new Map,this._trailingClips=new Map,this.direction="horizontal",this.leadingLayers=new e,this.max=100,this.min=0,this.precision=4,this.step=.5,this.stepMultiplier=10,this.trailingLayers=new e,this.view=null}initialize(){this.addHandles([s((()=>[this.view,this.view?.ready,this.position,this.direction]),(()=>this._clipLayers()),r),o((()=>this.leadingLayers),"change",(()=>this._clipLeadingLayers())),o((()=>this.trailingLayers),"change",(()=>this._clipTrailingLayers()))])}destroy(){this._removeExistingClips()}get position(){return 25}set position(i){const{precision:t,min:e,max:s}=this;this._set("position",p(Math.max(Math.min(i,s),e),t))}get state(){const{view:i}=this;return i&&i.ready?"ready":"disabled"}_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:s,type:r}=i,o="trailing"===r?e:"leading"===r?t:null,l=await this._getLayerView(s);if(!(l&&"clips"in l&&o&&l.hasOwnProperty("clips")))return;const n=o.get(l);n&&l.clips.remove(n);const a=this._getClipRect(r);a&&(o.set(l,a),l.clips.add(a))}_removeClips(i){const{_leadingClips:t,_trailingClips:e}=this,s="trailing"===i?e:"leading"===i?t:null;s&&(s.forEach(((i,t)=>{t&&t.hasOwnProperty("clips")&&t.clips.remove(i)})),s.clear())}_removeExistingClips(){this._removeClips("leading"),this._removeClips("trailing")}};i([l()],h.prototype,"direction",void 0),i([l({type:e,nonNullable:!0})],h.prototype,"leadingLayers",void 0),i([l({readOnly:!0})],h.prototype,"max",void 0),i([l({readOnly:!0})],h.prototype,"min",void 0),i([l()],h.prototype,"position",null),i([l()],h.prototype,"precision",void 0),i([l({readOnly:!0})],h.prototype,"state",null),i([l()],h.prototype,"step",void 0),i([l()],h.prototype,"stepMultiplier",void 0),i([l({type:e,nonNullable:!0})],h.prototype,"trailingLayers",void 0),i([l()],h.prototype,"view",void 0),h=i([n("esri.widgets.Swipe.SwipeViewModel")],h);const y=h;export{y as default};