BasemapGallery.js 4.4 KB

12345
  1. /*
  2. All material copyright ESRI, All Rights Reserved, unless otherwise specified.
  3. See https://js.arcgis.com/4.24/esri/copyright.txt for details.
  4. */
  5. import{_ as e}from"../chunks/tslib.es6.js";import{getAssetUrl as s}from"../assets.js";import t from"../core/Handles.js";import{on as a,when as i,watch as r}from"../core/reactiveUtils.js";import{aliasOf as o}from"../core/accessorSupport/decorators/aliasOf.js";import"../core/arrayUtils.js";import"../core/has.js";import"../core/accessorSupport/ensureType.js";import{property as l}from"../core/accessorSupport/decorators/property.js";import{subclass as m}from"../core/accessorSupport/decorators/subclass.js";import d from"./Widget.js";import p from"./BasemapGallery/BasemapGalleryViewModel.js";import{Heading as n}from"./support/Heading.js";import{accessibleHandler as c}from"./support/decorators/accessibleHandler.js";import{messageBundle as g}from"./support/decorators/messageBundle.js";import{tsx as h}from"./support/jsxFactory.js";import"./support/widgetUtils.js";const u={base:"esri-basemap-gallery esri-widget esri-widget--panel-height-only",sourceLoading:"esri-basemap-gallery--source-loading",loader:"esri-basemap-gallery__loader",item:"esri-basemap-gallery__item",itemContainer:"esri-basemap-gallery__item-container",itemTitle:"esri-basemap-gallery__item-title",itemThumbnail:"esri-basemap-gallery__item-thumbnail",selectedItem:"esri-basemap-gallery__item--selected",itemError:"esri-basemap-gallery__item--error",emptyMessage:"esri-widget__content--empty",widgetIcon:"esri-icon-basemap",disabled:"esri-disabled",loaderAnimation:"esri-widget__loader-animation"};let y=class extends d{constructor(e,s){super(e,s),this._handles=new t,this.activeBasemap=null,this.disabled=!1,this.headingLevel=2,this.iconClass=u.widgetIcon,this.label=void 0,this.messages=null,this.source=null,this.view=null,this.viewModel=new p}initialize(){const e=this._handles;this.own([a((()=>this.viewModel.items),"change",(s=>{const t="basemap-gallery-item-changes",{added:a,moved:i}=s;e.remove(t),e.add([...a,...i].map((e=>r((()=>e.state),(()=>this.scheduleRender())))),t),this.scheduleRender()})),e,i((()=>this.source),(()=>this.viewModel.load()),{initial:!0,once:!0})])}destroy(){this._handles.destroy()}loadDependencies(){return import("@esri/calcite-components/dist/components/calcite-scrim.js")}render(){const e="loading"===this.get("source.state"),s=this.disabled||"disabled"===this.get("viewModel.state"),t=this.get("viewModel.items").toArray().map(this._renderBasemapGalleryItem,this),a={[u.sourceLoading]:e,[u.disabled]:s},i=e?h("div",{class:u.loader,key:"esri-basemap-gallery__loader"}):null,r=e?null:t.length>0?h("ul",{class:u.itemContainer,key:"esri-basemap-gallery__item-container",role:"menu"},t):h("div",{class:u.emptyMessage,key:"esri-basemap-gallery__empty-message"},h(n,{level:this.headingLevel},this.messages.noBasemaps));return h("div",{class:this.classes(u.base,a)},i,r)}_handleClick(e){const s=e.currentTarget["data-item"];"ready"===s.state&&(this.viewModel.activeBasemap=s.basemap)}_renderBasemapGalleryItem(e){const t=e.get("basemap.thumbnailUrl")||s("esri/themes/base/images/basemap-toggle-64.svg"),a=e.get("basemap.title"),i=e.get("basemap.portalItem.snippet"),r=e.get("error.message")||i||a,{viewModel:o}=this,l=!this.disabled&&"disabled"!==o.state&&"ready"===e.state?0:-1,m=o.basemapEquals(e.basemap,this.activeBasemap),d="loading"===o.state,p={[u.selectedItem]:m,[u.itemError]:"error"===e.state};return h("li",{"aria-selected":m.toString(),bind:this,class:this.classes(u.item,p),"data-item":e,onkeydown:this._handleClick,onclick:this._handleClick,role:"menuitem",tabIndex:l,title:r},h("img",{alt:"",class:u.itemThumbnail,src:t}),h("div",{class:u.itemTitle},a),"loading"===e.state||m&&d?h("calcite-scrim",null,h("span",{"aria-hidden":"true",role:"presentation",class:u.loaderAnimation})):null)}};e([o("viewModel.activeBasemap")],y.prototype,"activeBasemap",void 0),e([l()],y.prototype,"disabled",void 0),e([l()],y.prototype,"headingLevel",void 0),e([l()],y.prototype,"iconClass",void 0),e([l({aliasOf:{source:"messages.widgetLabel",overridable:!0}})],y.prototype,"label",void 0),e([l(),g("esri/widgets/BasemapGallery/t9n/BasemapGallery")],y.prototype,"messages",void 0),e([o("viewModel.source")],y.prototype,"source",void 0),e([o("viewModel.view")],y.prototype,"view",void 0),e([l()],y.prototype,"viewModel",void 0),e([c()],y.prototype,"_handleClick",null),y=e([m("esri.widgets.BasemapGallery")],y);const b=y;export{b as default};