You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
19 lines
8.0 KiB
19 lines
8.0 KiB
// 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<b.length?d.tsx("div",{class:"esri-snapping-controls__nested-container"},b):null].filter(p.isSome); |
|
return 0===b.length?null:d.tsx("calcite-block",{class:"esri-snapping-controls__toggle-block",heading:a.header?this.label:"",key:"toggle-block",open:!0},b)}_renderEnabledToggle(){const {messages:a,viewModel:b}=this,{snappingOptions:c}=b;return d.tsx(n.LabeledSwitch,{checked:c.enabled,disabled:this._enabledToggleDisabled,key:`${this.id}__enabled-toggle`,label:a.enableSnapping,onChange:this._enableSnappingSwitchChange})}_renderSelfEnabledToggle(){const {messages:a,viewModel:b}=this,{snappingOptions:c}= |
|
b;return d.tsx(n.LabeledSwitch,{checked:c.enabled&&c.selfEnabled,disabled:this._secondaryElementsDisabled,key:`${this.id}__self-enabled-toggle`,label:a.geometryGuides,onChange:this._selfEnabledSwitchChange})}_renderFeatureEnabledToggle(){const {messages:a,viewModel:b}=this,{snappingOptions:c}=b;return d.tsx(n.LabeledSwitch,{checked:c.enabled&&c.featureEnabled,disabled:this._secondaryElementsDisabled,key:`${this.id}__feature-enabled-toggle`,label:a.featureToFeature,onChange:this._featureEnabledSwitchChange})}_renderLayerList(){if(!this.visibleElements.layerList)return null; |
|
const {messages:a,viewModel:b}=this;var c=({target:{value:h}})=>{this._layerListFilter=""===h?null:new RegExp(h,"i")};c=9<b.layerListViewModel.operationalItems.length?d.tsx("calcite-input",{class:"esri-snapping-controls__layer-list__filter",clearable:!0,placeholder:a?.searchLayers,onCalciteInputInput:c}):null;const f=this._secondaryElementsDisabled;return d.tsx("calcite-block",{class:"esri-snapping-controls__layer-list-block",collapsible:!0,disabled:this._secondaryElementsDisabled,heading:a.snappingLayers, |
|
key:"list-block",open:this.layerListOpen&&!f,onCalciteBlockToggle:h=>this.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)}); |