UNPKG

@arcgis/map-components

Version:
2 lines 5.8 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */ import b from"./UQDLYAO4.js";import a from"./HFRXDFTO.js";import"./PC4PAQXQ.js";import{O as f,R as v,U as w,a as m,b as y}from"./WUJCCZQC.js";import"./3TTFCHAA.js";export default $arcgis.t(([g,$,{property:o,subclass:E},{watch:V,on:D},{d:C},{a:L,b:S}])=>{var k=Object.defineProperty,N=Object.getOwnPropertyDescriptor,d=(e,t,i,r)=>{for(var s=r>1?void 0:r?N(t,i):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(s=(r?a(t,i,s):a(s))||s);return r&&s&&k(t,i,s),s},n=class extends ${constructor(e){super(e),this.id="root",this.children=new g,this.layers=new g,this.level=0,this.childIds=new Set,this.layerUniqueIds=new Set}initialize(){this.addHandles([this.layers.on("before-add",e=>{this.layerUniqueIds.has(e.item.uid)?e.preventDefault():this.layerUniqueIds.add(e.item.uid)}),this.layers.on("after-add",({item:e})=>{this.addHandles([V(()=>e.visible,()=>this.notifyChange("visible"),{initial:!0}),V(()=>e.title,()=>this.notifyChange("title"),{initial:!0})],e.uid)}),this.layers.on("before-remove",({item:e})=>{this.removeHandles(e.uid),this.notifyChange("title"),this.notifyChange("visible")}),this.children.on("before-add",e=>{this.childIds.has(e.item.id)?e.preventDefault():(e.item._set("parent",this),this.childIds.add(e.item.id))})])}destroy(){this.children.forEach(e=>e.destroy())}get hasChildren(){return this.children.length>0}get isDiscipline(){return this.level===1}get visible(){return O(this.layers,e=>e.visible)}get title(){return O(this.layers,e=>e.title)||this.layers.map(e=>e.title).join(", ")||null}toggleVisibility(e){let t=e===void 0?!this.visible:e;this.layers.forEach(i=>{i.visible=t}),t&&this.parent!=null&&this.parent.toggleVisibility(!0)}toggleAllSiblingsVisibility(e){let t=e===void 0?!this.visible:e;this.toggleVisibility(t),this.parent!=null&&(this.parent.toggleVisibility(t),this.parent.children.forEach(i=>i.toggleVisibility(t)))}};d([o({})],n.prototype,"id",2);d([o()],n.prototype,"parent",2);d([o({readOnly:!0})],n.prototype,"children",2);d([o({readOnly:!0})],n.prototype,"layers",2);d([o({})],n.prototype,"level",2);d([o({readOnly:!0})],n.prototype,"hasChildren",1);d([o({readOnly:!0})],n.prototype,"isDiscipline",1);d([o({readOnly:!0})],n.prototype,"visible",1);d([o({readOnly:!0})],n.prototype,"title",1);n=d([E("esri.widgets.BuildingExplorer.support.LayerTreeNode")],n);function O(e,t){let i=null;for(let r of e){let s=t(r);if(i!=null&&i!==s)return null;i=s}return i}var A=Object.defineProperty,I=Object.getOwnPropertyDescriptor,_=e=>{throw TypeError(e)},p=(e,t,i,r)=>{for(var s=r>1?void 0:r?I(t,i):t,l=e.length-1,a;l>=0;l--)(a=e[l])&&(s=(r?a(t,i,s):a(s))||s);return r&&s&&A(t,i,s),s},T=(e,t,i)=>t.has(e)||_("Cannot "+i),u=(e,t,i)=>(T(e,t,"read from private field"),i?i.call(e):t.get(e)),F=(e,t,i)=>t.has(e)?_("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,i),c,h=class extends ${constructor(e){super(e),this.root=new n,F(this,c,new g),this.state="disabled",this.loadLayers=L()}initialize(){this.addHandles(D(()=>this.layers,"change",()=>{this._onLayersChange()},{onListenerAdd:()=>{this._onLayersChange()},onListenerRemove:()=>{this._onLayersChange()}})),this._onLayersChange()}destroy(){this._set("state","disabled"),this.root.destroy()}get layers(){return u(this,c)}set layers(e){u(this,c).removeAll(),u(this,c).addMany(e)}updateLayerTree(){this.root.destroy(),this._set("root",new n);let e=new Map,t=this.layers.length>1?"modelName":"id";return this.layers.forEach(i=>{let r=S(i);this.addNodesForSublayers(r??i,this.root,e,t)}),this}addNodeForLayer(e,t,i,r){let s=String(e[r]).toLowerCase();if(s==null||e.isEmpty)return;let l=`${t.id}/${s}`,a=i.get(l);a||(a=new n({id:s,level:t.level+1}),i.set(l,a)),a.layers.push(e),t.children.push(a),this.addNodesForSublayers(e,a,i,r)}addNodesForSublayers(e,t,i,r){(e.type==="building-scene"||e.type==="building-group"&&!e.isEmpty)&&e.sublayers.forEach(s=>this.addNodeForLayer(s,t,i,r))}async _onLayersChange(){if(this._set("state","loading"),this.layers.length!==0)try{await this.loadLayers(this.layers),this.updateLayerTree(),this._set("state","ready")}catch(e){C(e)||this._set("state","failed")}}};c=new WeakMap;p([o()],h.prototype,"root",2);p([o()],h.prototype,"layers",1);p([o()],h.prototype,"state",2);h=p([E("esri.components.BuildingExplorer.BuildingDisciplinesViewModel")],h);var P=m`.label{--calcite-label-margin-bottom: 0}`,b=class extends f{constructor(){super(...arguments),this.#e=new h,this.toggleSiblingsVisibility=!1}static{this.properties={layers:0,messages:0,toggleSiblingsVisibility:5}}static{this.styles=P}#e;get layers(){return this.#e.layers.toArray()}set layers(t){this.#e.layers=new g(t)}render(){let t=this.messages,i=this.#e;return t==null?null:y`<calcite-tree lines selection-mode=none>${x({node:i.root,messages:t})}</calcite-tree>`}};function j(e){let t=e.node,i=t.visible===!0,r=t.visible===null,s=i?e.messages.hideSublayer:e.messages.showSublayer;return y`<calcite-tree-item><calcite-label class="label" layout=inline><calcite-checkbox .checked=${i} .indeterminate=${r} .label=${s} @click=${l=>{l.stopPropagation(),(l.metaKey||l.ctrlKey)&&e.toggleSiblingsVisibility&&(t.toggleVisibility(),t.toggleAllSiblingsVisibility())}} title=${s??v} @calciteCheckboxChange=${l=>{t.toggleVisibility(l.currentTarget.checked)}}></calcite-checkbox>${e.node.title}</calcite-label>${e.node.hasChildren?y`<calcite-tree lines selection-mode=none slot=children>${x({node:e.node,messages:e.messages})}</calcite-tree>`:null}</calcite-tree-item>`}function x(e){return e.node.children.toArray().reverse().map(t=>j({node:t,messages:e.messages,toggleSiblingsVisibility:e.toggleSiblingsVisibility}))}w("arcgis-building-discipline-tree",b);return b},"core/Collection","core/Accessor","core/accessorSupport/decorators","core/reactiveUtils",a,b)