import defaultValue from"../../Core/defaultValue.js";import defined from"../../Core/defined.js";import DeveloperError from"../../Core/DeveloperError.js";import EllipsoidTerrainProvider from"../../Core/EllipsoidTerrainProvider.js";import knockout from"../../ThirdParty/knockout.js";import createCommand from"../createCommand.js";function BaseLayerPickerViewModel(e){e=defaultValue(e,defaultValue.EMPTY_OBJECT);const r=e.globe,o=defaultValue(e.imageryProviderViewModels,[]),t=defaultValue(e.terrainProviderViewModels,[]);if(!defined(r))throw new DeveloperError("globe is required");this._globe=r,this.imageryProviderViewModels=o.slice(0),this.terrainProviderViewModels=t.slice(0),this.dropDownVisible=!1,knockout.track(this,["imageryProviderViewModels","terrainProviderViewModels","dropDownVisible"]);const i=knockout.getObservable(this,"imageryProviderViewModels"),n=knockout.pureComputed((function(){const e=i(),r={};let o;for(o=0;o=0;r--)i.addImageryProvider(o[r],0);this._currentImageryProviders=o.slice(0)}else if(this._currentImageryProviders=[o],n)i.addImageryProvider(o,0);else{const e=i.get(0);defined(e)&&i.remove(e),i.addImageryProvider(o,0)}}l(e),this.dropDownVisible=!1}}),this.selectedTerrain=void 0;const a=knockout.observable();knockout.defineProperty(this,"selectedTerrain",{get:function(){return a()},set:function(e){if(a()===e)return void(this.dropDownVisible=!1);let r;defined(e)&&(r=e.creationCommand()),this._globe.depthTestAgainstTerrain=!(r instanceof EllipsoidTerrainProvider),this._globe.terrainProvider=r,a(e),this.dropDownVisible=!1}});const c=this;this._toggleDropDown=createCommand((function(){c.dropDownVisible=!c.dropDownVisible})),this.selectedImagery=defaultValue(e.selectedImageryProviderViewModel,o[0]),this.selectedTerrain=defaultValue(e.selectedTerrainProviderViewModel,t[0])}Object.defineProperties(BaseLayerPickerViewModel.prototype,{toggleDropDown:{get:function(){return this._toggleDropDown}},globe:{get:function(){return this._globe}}});export default BaseLayerPickerViewModel;