UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

6 lines (5 loc) 4.14 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import{_ as e}from"../../../../chunks/tslib.es6.js";import{isSome as r}from"../../../../core/arrayUtils.js";import{destroyMaybe as t}from"../../../../core/maybe.js";import{property as a}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/has.js";import"../../../../core/Logger.js";import{subclass as o}from"../../../../core/accessorSupport/decorators/subclass.js";import s from"../../../Widget.js";import i from"./MeasuredContentGroup.js";import l from"./OverflowGroup.js";import n from"./ResponsiveToolbarManager.js";import{SplitButton as c}from"./SplitButton.js";import{loadCalciteComponents as d}from"../../../support/componentsUtils.js";import"../../../support/widgetUtils.js";import{tsx as p}from"../../../support/jsxFactory.js";const u="esri-responsive-toolbar",m={rulerBase:`${u}__ruler`,rulerBarHorizontal:`${u}__ruler--bar`,rulerBarVertical:`${u}__ruler--bar--vertical`,rulerPadVertical:`${u}__ruler--pad--vertical`,rulerPadHorizontal:`${u}__ruler--pad--horizontal`,bar:`${u}__bar`,barHorizontal:`${u}__bar--horizontal`,barVertical:`${u}__bar--vertical`,pad:`${u}__pad`,padVertical:`${u}__pad--vertical`,padHorizontal:`${u}__pad--horizontal`};let h=class extends s{constructor(e){super(e),this.scale="m",this.barStyle="floating",this._measurementManager=new n,this._managedWidgets=new Map}loadDependencies(){return d({"action-bar":()=>import("@esri/calcite-components/dist/components/calcite-action-bar")})}destroy(){this._measurementManager=t(this._measurementManager),this._managedWidgets.forEach((e=>e.destroy())),this._managedWidgets.clear()}set layout(e){const r=this._get("layout");this._set("layout",e),this._measurementManager&&(this._measurementManager.layout=e),r!==e&&this.scheduleRender()}get _barClasses(){const e="docked"===this.barStyle,r="vertical"===this.layout;return{[m.barHorizontal]:e&&!r,[m.barVertical]:e&&r,[m.bar]:e,[m.padHorizontal]:!e&&!r,[m.padVertical]:!e&&r,[m.pad]:!e}}render(){const{layout:e,scale:r,barStyle:t}=this,a={layout:e,scale:r,expandDisabled:!0,key:"measured-toolbar"},o="docked"===t?"vertical"===e?m.rulerBarVertical:m.rulerBarHorizontal:"horizontal"===e?m.rulerPadHorizontal:m.rulerPadVertical;return p("div",null,p("div",{afterCreate:e=>{this._measurementManager?.connect(e)},class:this.classes(m.rulerBase,o)}),p("calcite-action-bar",{...a,classes:this._barClasses,floating:"docked"!==t,overflowActionsDisabled:!0},this._renderChildren()))}_renderChildren(){if(!this.children)return;const e=this.children.filter((e=>void 0!==e.properties?.key&&"group-kind"in e.properties)),t=new Set,a=e.map((e=>{const r=e.properties,a=r.key;t.add(a);const o="docked"===this.barStyle?r.slot??void 0:void 0,s=r.priority??0,n=r["group-kind"]??"overflow-group",d=r["allow-collapse"]??!0,p=this._managedWidgets.get(a);if(p)return p.children=e.children,p.priority=s,"allowCollapse"in p&&(p.allowCollapse=d),p.slot=o,p.layout=this.layout,p.scale=this.scale,p.measurementManager=this._measurementManager,p;const u={scale:this.scale,priority:s,measurementManager:this._measurementManager,children:e.children,slot:o,layout:this.layout};switch(n){case"split-button":{const e=new c({...u,allowCollapse:d});return this._managedWidgets.set(a,e),e}case"overflow-group":{const e=new l({...u,allowCollapse:d});return this._managedWidgets.set(a,e),e}case"measured-content":{const e=new i({...u});return this._managedWidgets.set(a,e),e}}})).filter(r);return Array.from(this._managedWidgets.keys()).filter((e=>!t.has(e))).forEach((e=>{this._managedWidgets.get(e)?.destroy(),this._managedWidgets.delete(e)})),this._measurementManager?.allocate(),a.map((e=>e.render()))}};e([a()],h.prototype,"scale",void 0),e([a({value:"horizontal"})],h.prototype,"layout",null),e([a()],h.prototype,"barStyle",void 0),e([a()],h.prototype,"_measurementManager",void 0),e([a()],h.prototype,"_managedWidgets",void 0),e([a()],h.prototype,"_barClasses",null),h=e([o("esri.widgets.Sketch.support.ResponsiveToolbar.ResponsiveToolbar")],h);export{h as default};