// All material copyright Esri, All Rights Reserved, unless otherwise specified. // See https://js.arcgis.com/4.30/esri/copyright.txt for details. //>>built define("require ../../chunks/tslib.es6 ../../core/arrayUtils ../../core/maybe ../../core/uid ../../core/accessorSupport/decorators/property ../../core/has ../../core/Logger ../../core/accessorSupport/decorators/subclass ../Widget ../../chunks/componentsUtils ./globalCss ./LabeledSwitch ./widgetUtils ./decorators/messageBundle ./jsxFactory ./SnappingControls/SnappingControlsViewModel ./SnappingControls/snappingLayerListUtils ./SnappingControls/VisibleElements".split(" "),function(m,g,p,r,v,k,e,E,w, x,y,z,n,F,A,d,B,q,t){e=class extends x{constructor(a,b){super(a,b);this._layerListFilter=this._defaultViewModel=null;this.layerListOpen=!0;this.messages=null;this.visibleElements=new t;this._enableSnappingSwitchChange=l=>{this.snappingOptions.enabled=l};this._featureEnabledSwitchChange=l=>{this.snappingOptions.featureEnabled=l};this._selfEnabledSwitchChange=l=>{this.snappingOptions.selfEnabled=l};this._onToggleLayersButtonClick=l=>{this.viewModel.toggleSnappingForAllLayers(!this.viewModel.allLayersEnabled); requestAnimationFrame(()=>l.target.setFocus())};const {snappingOptions:c,view:f,viewModel:h}=a;this.viewModel=h??(this._defaultViewModel=new B({snappingOptions:c,view:f}))}normalizeCtorArgs(a){const {snappingOptions:b,view:c,viewModel:f,...h}=a;return h}destroy(){this.viewModel!==this._defaultViewModel&&(this._defaultViewModel=r.destroyMaybe(this._defaultViewModel))}loadDependencies(){return Promise.all([y.loadCalciteComponents({block:()=>new Promise((a,b)=>m(["../../chunks/calcite-block"],a,b)), button:()=>new Promise((a,b)=>m(["../../chunks/calcite-button"],a,b)),input:()=>new Promise((a,b)=>m(["../../chunks/calcite-input"],a,b)),list:()=>new Promise((a,b)=>m(["../../chunks/calcite-list"],a,b)),"list-item":()=>new Promise((a,b)=>m(["../../chunks/calcite-list-item"],a,b)),checkbox:()=>new Promise((a,b)=>m(["../../chunks/calcite-checkbox"],a,b))}),n.loadLabeledSwitchComponents()])}get icon(){return"snap-to-point"}set icon(a){this._overrideIfSome("icon",a)}get label(){return this.messages?.widgetLabel?? ""}set label(a){this._overrideIfSome("label",a)}get snappingOptions(){return this.viewModel.snappingOptions}set snappingOptions(a){this.viewModel.snappingOptions=a}get view(){return this.viewModel.view}set view(a){this.viewModel.view=a}set viewModel(a){if(a!==this._get("viewModel")){if(null==this._defaultViewModel||this._defaultViewModel!==a)this._defaultViewModel=r.destroyMaybe(this._defaultViewModel);this._set("viewModel",a)}}render(){const {label:a}=this;return d.tsx("div",{"aria-label":a,class:this.classes("esri-snapping-controls", z.globalCss.widget)},d.tsx("div",{class:"esri-snapping-controls__container"},this._renderContent()))}_renderContent(){return[this._renderToggles(),this._renderLayerList()]}_renderToggles(){const {visibleElements:a}=this;var b=[a.selfEnabledToggle?this._renderSelfEnabledToggle():null,a.featureEnabledToggle?this._renderFeatureEnabledToggle():null].filter(p.isSome);b=[a.enabledToggle?this._renderEnabledToggle():null,0{this._layerListFilter=""===h?null:new RegExp(h,"i")};c=9this.layerListOpen=h.target.open},c,this._renderToggleLayersButton(),d.tsx("calcite-list",{class:"esri-snapping-controls__layer-list",selectionMode:"none"},this._renderLayerListItemCollection(b.layerListViewModel.operationalItems)))}_renderLayerListItemCollection(a){const b=this._layerListFilter;return a.map(c=>{switch(b?q.itemTitleMatchesFilter(c,b):null){case "children":const f=c.children.filter(h=>!1!==q.itemTitleMatchesFilter(h, b));return this._renderLayerListItemGroup(c,f);case "self":case null:return this._renderLayerListItemOrGroup(c);case !1:return"self"===q.itemTitleMatchesFilter(c.parent,b)?this._renderLayerListItemOrGroup(c):null}}).toArray().filter(p.isSome)}_renderToggleLayersButton(){if(!this.visibleElements.layerListToggleLayersButton)return null;const {viewModel:{allLayersEnabled:a},messages:b}=this,c=a?b.disableAllLayers:b.enableAllLayers;return d.tsx("calcite-button",{appearance:"transparent",class:"esri-snapping-controls__layer-list__button", label:c,name:"layer-toggle",onclick:this._onToggleLayersButtonClick},c)}_renderLayerListItemOrGroup(a){if(a.children.length)return this._renderLayerListItemGroup(a);const {messages:{untitledLayer:b}}=this,c=()=>{this.viewModel.toggleSnappingForLayers([a.layer.id],"enabled"!==a.enabled)};return d.tsx("calcite-list-item",{class:"esri-snapping-controls__layer-list__item",key:`${this.id}-list-item-${a.uid}`,label:a.title||b,onCalciteListItemSelect:f=>{f.stopPropagation();c()}},d.tsx("calcite-checkbox", {checked:"enabled"===a.enabled,slot:"actions-start",onCalciteCheckboxChange:c}))}_renderLayerListItemGroup(a,b){const {children:c,title:f}=a,h=f||this.messages.untitledLayer,l=f&&""!==f?f:v.generateUID(),C=b??c,u=()=>{this.viewModel.toggleSnappingForLayers(a.childLayerIds,"enabled"!==a.enabled)};return d.tsx("calcite-list-item",{class:"esri-snapping-controls__layer-list__group",key:l,label:h,open:!!b?.length,onCalciteListItemSelect:D=>{D.stopPropagation();u()}},d.tsx("calcite-checkbox",{checked:"enabled"=== a.enabled,indeterminate:"indeterminate"===a.enabled,slot:"actions-start",onCalciteCheckboxChange:u}),d.tsx("calcite-list",null,this._renderLayerListItemCollection(C)))}get _enabledToggleDisabled(){const a=this.snappingOptions;return a.enabledToggled||a.forceDisabled}get _secondaryElementsDisabled(){return this._enabledToggleDisabled||!this.snappingOptions.enabled}};g.__decorate([k.property()],e.prototype,"_defaultViewModel",void 0);g.__decorate([k.property()],e.prototype,"_layerListFilter",void 0); g.__decorate([k.property()],e.prototype,"label",null);g.__decorate([k.property({type:Boolean,nonNullable:!0})],e.prototype,"layerListOpen",void 0);g.__decorate([k.property(),A.messageBundle("esri/widgets/support/SnappingControls/t9n/SnappingControls")],e.prototype,"messages",void 0);g.__decorate([k.property()],e.prototype,"snappingOptions",null);g.__decorate([k.property()],e.prototype,"view",null);g.__decorate([k.property()],e.prototype,"viewModel",null);g.__decorate([k.property({type:t,nonNullable:!0})], e.prototype,"visibleElements",void 0);g.__decorate([k.property()],e.prototype,"_enabledToggleDisabled",null);g.__decorate([k.property()],e.prototype,"_secondaryElementsDisabled",null);return e=g.__decorate([w.subclass("esri.widgets.support.SnappingControls")],e)});