import defined from"../../Core/defined.js";import destroyObject from"../../Core/destroyObject.js";import DeveloperError from"../../Core/DeveloperError.js";import FeatureDetection from"../../Core/FeatureDetection.js";import knockout from"../../ThirdParty/knockout.js";import getElement from"../getElement.js";import BaseLayerPickerViewModel from"./BaseLayerPickerViewModel.js";function BaseLayerPicker(e,t){if(!defined(e))throw new DeveloperError("container is required.");e=getElement(e);const i=new BaseLayerPickerViewModel(t),a=document.createElement("button");a.type="button",a.className="cesium-button cesium-toolbar-button",a.setAttribute("data-bind","attr: { title: buttonTooltip },click: toggleDropDown"),e.appendChild(a);const r=document.createElement("img");r.setAttribute("draggable","false"),r.className="cesium-baseLayerPicker-selected",r.setAttribute("data-bind","attr: { src: buttonImageUrl }, visible: !!buttonImageUrl"),a.appendChild(r);const n=document.createElement("div");n.className="cesium-baseLayerPicker-dropDown",n.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-dropDown-visible" : dropDownVisible }'),e.appendChild(n);const s=document.createElement("div");s.className="cesium-baseLayerPicker-sectionTitle",s.setAttribute("data-bind","visible: imageryProviderViewModels.length > 0"),s.innerHTML="Imagery",n.appendChild(s);const o=document.createElement("div");o.className="cesium-baseLayerPicker-section",o.setAttribute("data-bind","foreach: _imageryProviders"),n.appendChild(o);const c=document.createElement("div");c.className="cesium-baseLayerPicker-category",o.appendChild(c);const d=document.createElement("div");d.className="cesium-baseLayerPicker-categoryTitle",d.setAttribute("data-bind","text: name"),c.appendChild(d);const m=document.createElement("div");m.className="cesium-baseLayerPicker-choices",m.setAttribute("data-bind","foreach: providers"),c.appendChild(m);const l=document.createElement("div");l.className="cesium-baseLayerPicker-item",l.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-selectedItem" : $data === $parents[1].selectedImagery },attr: { title: tooltip },visible: creationCommand.canExecute,click: function($data) { $parents[1].selectedImagery = $data; }'),m.appendChild(l);const u=document.createElement("img");u.className="cesium-baseLayerPicker-itemIcon",u.setAttribute("data-bind","attr: { src: iconUrl }"),u.setAttribute("draggable","false"),l.appendChild(u);const p=document.createElement("div");p.className="cesium-baseLayerPicker-itemLabel",p.setAttribute("data-bind","text: name"),l.appendChild(p);const b=document.createElement("div");b.className="cesium-baseLayerPicker-sectionTitle",b.setAttribute("data-bind","visible: terrainProviderViewModels.length > 0"),b.innerHTML="Terrain",n.appendChild(b);const h=document.createElement("div");h.className="cesium-baseLayerPicker-section",h.setAttribute("data-bind","foreach: _terrainProviders"),n.appendChild(h);const y=document.createElement("div");y.className="cesium-baseLayerPicker-category",h.appendChild(y);const v=document.createElement("div");v.className="cesium-baseLayerPicker-categoryTitle",v.setAttribute("data-bind","text: name"),y.appendChild(v);const k=document.createElement("div");k.className="cesium-baseLayerPicker-choices",k.setAttribute("data-bind","foreach: providers"),y.appendChild(k);const P=document.createElement("div");P.className="cesium-baseLayerPicker-item",P.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-selectedItem" : $data === $parents[1].selectedTerrain },attr: { title: tooltip },visible: creationCommand.canExecute,click: function($data) { $parents[1].selectedTerrain = $data; }'),k.appendChild(P);const L=document.createElement("img");L.className="cesium-baseLayerPicker-itemIcon",L.setAttribute("data-bind","attr: { src: iconUrl }"),L.setAttribute("draggable","false"),P.appendChild(L);const E=document.createElement("div");E.className="cesium-baseLayerPicker-itemLabel",E.setAttribute("data-bind","text: name"),P.appendChild(E),knockout.applyBindings(i,a),knockout.applyBindings(i,n),this._viewModel=i,this._container=e,this._element=a,this._dropPanel=n,this._closeDropDown=function(e){a.contains(e.target)||n.contains(e.target)||(i.dropDownVisible=!1)},FeatureDetection.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(BaseLayerPicker.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}}),BaseLayerPicker.prototype.isDestroyed=function(){return!1},BaseLayerPicker.prototype.destroy=function(){return FeatureDetection.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),knockout.cleanNode(this._element),knockout.cleanNode(this._dropPanel),this._container.removeChild(this._element),this._container.removeChild(this._dropPanel),destroyObject(this)};export default BaseLayerPicker;