12345 |
- /*
- All material copyright ESRI, All Rights Reserved, unless otherwise specified.
- See https://js.arcgis.com/4.24/esri/copyright.txt for details.
- */
- import{_ as e}from"../chunks/tslib.es6.js";import"../intl.js";import{watch as t,initial as s}from"../core/reactiveUtils.js";import{aliasOf as i}from"../core/accessorSupport/decorators/aliasOf.js";import"../core/arrayUtils.js";import"../core/has.js";import{cast as n}from"../core/accessorSupport/decorators/cast.js";import{property as r}from"../core/accessorSupport/decorators/property.js";import{subclass as o}from"../core/accessorSupport/decorators/subclass.js";import l from"./Widget.js";import d from"./Feature/FeatureAttachments.js";import a from"./Feature/FeatureContent.js";import c from"./Feature/FeatureExpression.js";import u from"./Feature/FeatureFields.js";import p from"./Feature/FeatureMedia.js";import m from"./Feature/FeatureViewModel.js";import{FeatureContentMixin as h}from"./Feature/support/FeatureContentMixin.js";import{Heading as v}from"./support/Heading.js";import"./support/widgetUtils.js";import{messageBundle as f}from"./support/decorators/messageBundle.js";import{tsx as g}from"./support/jsxFactory.js";import{substitute as y}from"../intl/substitute.js";const _={iconText:"esri-icon-font-fallback-text",iconLoading:"esri-icon-loading-indicator esri-rotating",esriTable:"esri-widget__table",esriWidget:"esri-widget",base:"esri-feature",container:"esri-feature__size-container",title:"esri-feature__title",main:"esri-feature__main-container",btn:"esri-feature__button",icon:"esri-feature__icon",content:"esri-feature__content",contentElement:"esri-feature__content-element",text:"esri-feature__text",lastEditedInfo:"esri-feature__last-edited-info",fields:"esri-feature__fields",fieldHeader:"esri-feature__field-header",fieldData:"esri-feature__field-data",fieldDataDate:"esri-feature__field-data--date",loadingSpinnerContainer:"esri-feature__loading-container",spinner:"esri-feature__loading-spinner"},w={title:!0,content:!0,lastEditedInfo:!0};let M=class extends(h(l)){constructor(e,t){super(e,t),this._contentWidgets=[],this.graphic=null,this.defaultPopupTemplateEnabled=!1,this.headingLevel=2,this.label=void 0,this.messages=null,this.messagesCommon=null,this.messagesURIUtils=null,this.spatialReference=null,this.title=null,this.visibleElements={...w},this.map=null,this.view=null,this.viewModel=new m}initialize(){this.own(t((()=>this.viewModel?.contentViewModels),(()=>this._setupContentWidgets()),s))}loadDependencies(){return import("@esri/calcite-components/dist/components/calcite-notice.js")}destroy(){this._destroyContentWidgets()}castVisibleElements(e){return{...w,...e}}render(){const{state:e}=this.viewModel,t=g("div",{class:_.container,key:"container"},this.renderTitle(),"error"===e?this.renderError():"loading"===e?this.renderLoading():this.renderContentContainer());return g("div",{class:this.classes(_.base,_.esriWidget)},t)}setActiveMedia(e,t){this.viewModel.setActiveMedia(e,t)}nextMedia(e){this.viewModel.nextMedia(e)}previousMedia(e){this.viewModel.previousMedia(e)}renderError(){const{messagesCommon:e,messages:t,visibleElements:s}=this;return g("calcite-notice",{active:!0,color:"red",icon:"exclamation-mark-circle",scale:"s"},s.title?g("div",{key:"error-title",slot:"title"},e.errorMessage):null,g("div",{key:"error-message",slot:"message"},t.loadingError))}renderLoading(){return g("div",{key:"loading-container",class:_.loadingSpinnerContainer},g("span",{class:this.classes(_.iconLoading,_.spinner)}))}renderContentContainer(){const{visibleElements:e}=this;return e.content?g("div",{class:_.main},[this.renderContent(),this.renderLastEditInfo()]):null}renderTitle(){const{visibleElements:e,title:t}=this;return e.title?g(v,{level:this.headingLevel,class:_.title,innerHTML:t}):null}renderContent(){const e=this.viewModel.content,t="content";if(!e)return null;if(Array.isArray(e))return e.length?g("div",{key:`${t}-content-elements`},e.map(this.renderContentElement,this)):null;if("string"==typeof e){const e=this._contentWidgets[0];return!e||e.destroyed?null:g("div",{key:`${t}-content`},e.render())}return this.renderNodeContent(e)}renderContentElement(e,t){const{visibleElements:s}=this;if("boolean"!=typeof s.content&&!s.content[e.type])return null;switch(e.type){case"attachments":return this.renderAttachments(t);case"custom":return this.renderCustom(e,t);case"fields":return this.renderFields(t);case"media":return this.renderMedia(t);case"text":return this.renderText(e,t);case"expression":return this.renderExpression(t);default:return null}}renderAttachments(e){const t=this._contentWidgets[e];if(!t||t.destroyed)return null;const{state:s,attachmentInfos:i}=t.viewModel;return"loading"===s||i.length>0?g("div",{key:this._buildKey("attachments-element",e),class:this.classes(_.contentElement)},t.render()):null}renderExpression(e){const t=this._contentWidgets[e];return!t||t.destroyed?null:g("div",{key:this._buildKey("expression-element",e),class:_.contentElement},t.render())}renderCustom(e,t){const{creator:s}=e,i=this._contentWidgets[t];return!i||i.destroyed?null:s?g("div",{key:this._buildKey("custom-element",t),class:_.contentElement},i.render()):null}renderFields(e){const t=this._contentWidgets[e];return!t||t.destroyed?null:g("div",{key:this._buildKey("fields-element",e),class:_.contentElement},t.render())}renderMedia(e){const t=this._contentWidgets[e];return!t||t.destroyed?null:g("div",{key:this._buildKey("media-element",e),class:_.contentElement},t.render())}renderLastEditInfo(){const{visibleElements:e,messages:t}=this,{lastEditInfo:s}=this.viewModel;if(!s||!e.lastEditedInfo)return null;const{date:i,user:n}=s,r="edit"===s.type?n?t.lastEditedByUser:t.lastEdited:n?t.lastCreatedByUser:t.lastCreated,o=y(r,{date:i,user:n});return g("div",{key:"edit-info-element",class:this.classes(_.lastEditedInfo,_.contentElement)},o)}renderText(e,t){const s=e.text,i=this._contentWidgets[t];return!i||i.destroyed?null:s?g("div",{key:this._buildKey("text-element",t),class:this.classes(_.contentElement,_.text)},i.render()):null}_buildKey(e,...t){return`${e}__${this.get("viewModel.graphic.uid")||"0"}-${t.join("-")}`}_destroyContentWidget(e){e&&(e.viewModel=null,!e.destroyed&&e.destroy())}_destroyContentWidgets(){this._contentWidgets.forEach((e=>this._destroyContentWidget(e))),this._contentWidgets=[]}_setupContentWidgets(){this._destroyContentWidgets();const{headingLevel:e,visibleElements:t}=this,s=this.get("viewModel.content"),{contentViewModels:i}=this.viewModel;if(Array.isArray(s))s.forEach(((s,n)=>{"attachments"===s.type&&(this._contentWidgets[n]=new d({displayType:s.displayType,headingLevel:t.title?e+1:e,viewModel:i[n]})),"fields"===s.type&&(this._contentWidgets[n]=new u({viewModel:i[n]})),"media"===s.type&&(this._contentWidgets[n]=new p({viewModel:i[n]})),"text"===s.type&&(this._contentWidgets[n]=new a({viewModel:i[n]})),"custom"===s.type&&(this._contentWidgets[n]=new a({viewModel:i[n]})),"expression"===s.type&&(this._contentWidgets[n]=new c({viewModel:i[n]}))}),this);else{const e=i[0];e&&!e.destroyed&&(this._contentWidgets[0]=new a({viewModel:e}))}this.scheduleRender()}};e([i("viewModel.graphic")],M.prototype,"graphic",void 0),e([i("viewModel.defaultPopupTemplateEnabled")],M.prototype,"defaultPopupTemplateEnabled",void 0),e([r()],M.prototype,"headingLevel",void 0),e([r({aliasOf:{source:"messages.widgetLabel",overridable:!0}})],M.prototype,"label",void 0),e([r(),f("esri/widgets/Feature/t9n/Feature")],M.prototype,"messages",void 0),e([r(),f("esri/t9n/common")],M.prototype,"messagesCommon",void 0),e([r(),f("esri/widgets/support/t9n/uriUtils")],M.prototype,"messagesURIUtils",void 0),e([i("viewModel.spatialReference")],M.prototype,"spatialReference",void 0),e([i("viewModel.title")],M.prototype,"title",void 0),e([r()],M.prototype,"visibleElements",void 0),e([n("visibleElements")],M.prototype,"castVisibleElements",null),e([i("viewModel.map")],M.prototype,"map",void 0),e([i("viewModel.view")],M.prototype,"view",void 0),e([r({type:m})],M.prototype,"viewModel",void 0),M=e([o("esri.widgets.Feature")],M);const E=M;export{E as default};
|