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.
31 lines
14 KiB
31 lines
14 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/Error ../core/reactiveUtils ../core/unitFormatUtils ../core/accessorSupport/decorators/property ../core/accessorSupport/decorators/cast ../core/RandomLCG ../core/has ../core/accessorSupport/decorators/subclass ./Widget ./Attachments/AttachmentsViewModel ./Attachments/support/attachmentUtils ../chunks/componentsUtils ./support/globalCss ./support/legacyIcon ./support/widgetUtils ./support/decorators/messageBundle ./support/jsxFactory".split(" "),function(G, |
|
l,z,y,H,m,I,f,M,J,K,D,A,L,e,v,t,E,c){const F={addButton:!0,addSubmitButton:!0,cancelAddButton:!0,cancelUpdateButton:!0,deleteButton:!0,errorMessage:!0,progressBar:!0,updateButton:!0},B=window.CSS;f=class extends K{constructor(a,b){super(a,b);this.displayType="auto";this.selectedFile=this.messagesUnits=this.messages=null;this.submitting=!1;this.viewModel=null;this.visibleElements={...F};this._supportsImageOrientation=B&&B.supports&&B.supports("image-orientation","from-image");this._updateAttachmentForm= |
|
this._addAttachmentForm=null}normalizeCtorArgs(a){a?.viewModel||(a={viewModel:new D,...a});return a}initialize(){this.addHandles([y.on(()=>this.viewModel?.attachmentInfos,"change",()=>this.scheduleRender()),y.on(()=>this.viewModel?.fileInfos,"change",()=>this.scheduleRender()),y.watch(()=>this.viewModel?.mode,()=>this._modeChanged(),y.initial)])}loadDependencies(){return L.loadCalciteComponents({icon:()=>new Promise((a,b)=>G(["../chunks/calcite-icon"],a,b))})}get capabilities(){return this.viewModel.capabilities}set capabilities(a){this.viewModel.capabilities= |
|
a}get effectiveDisplayType(){const {displayType:a}=this;return a&&"auto"!==a?a:this.viewModel.supportsResizeAttachments?"preview":"list"}get graphic(){return this.viewModel.graphic}set graphic(a){this.viewModel.graphic=a}get icon(){return"attachment"}set icon(a){this._overrideIfSome("icon",a)}get label(){return this.messages?.widgetLabel??""}set label(a){this._overrideIfSome("label",a)}castVisibleElements(a){return{...F,...a}}addAttachment(){const {_addAttachmentForm:a,viewModel:b}=this;this._set("submitting", |
|
!0);this._set("error",null);return b.addAttachment(a).then(d=>{this._set("submitting",!1);this._set("error",null);b.mode="view";return d}).catch(d=>{this._set("submitting",!1);this._set("error",new z("attachments:add-attachment",this.messages.addErrorMessage,d));throw d;})}deleteAttachment(a){const {viewModel:b}=this;this._set("submitting",!0);this._set("error",null);return b.deleteAttachment(a).then(d=>{this._set("submitting",!1);this._set("error",null);b.mode="view";return d}).catch(d=>{this._set("submitting", |
|
!1);this._set("error",new z("attachments:delete-attachment",this.messages.deleteErrorMessage,d));throw d;})}updateAttachment(){const {viewModel:a}=this,{_updateAttachmentForm:b}=this;this._set("submitting",!0);this._set("error",null);return a.updateAttachment(b).then(d=>{this._set("submitting",!1);this._set("error",null);a.mode="view";return d}).catch(d=>{this._set("submitting",!1);this._set("error",new z("attachments:update-attachment",this.messages.updateErrorMessage,d));throw d;})}addFile(){const a= |
|
this.viewModel.addFile(this.selectedFile,this._addAttachmentForm);this.viewModel.mode="view";return a}updateFile(){const {viewModel:a}=this,b=a.updateFile(this.selectedFile,this._updateAttachmentForm,a.activeFileInfo);a.mode="view";return b}deleteFile(a){a=this.viewModel.deleteFile(a||this.viewModel.activeFileInfo?.file);this.viewModel.mode="view";return a}render(){const {submitting:a,viewModel:b}=this,{state:d}=b;return c.tsx("div",{class:this.classes("esri-attachments",e.globalCss.widget)},a?this._renderProgressBar(): |
|
null,"loading"===d?this._renderLoading():this._renderAttachments(),this._renderErrorMessage())}_renderErrorMessage(){const {error:a,visibleElements:b}=this;return a&&b.errorMessage?c.tsx("div",{class:"esri-attachments__error-message",key:"error-message"},a.message):null}_renderAttachments(){const {activeFileInfo:a,mode:b,activeAttachmentInfo:d}=this.viewModel;return"add"===b?this._renderAddForm():"edit"===b?this._renderDetailsForm(d||a):this._renderAttachmentContainer()}_renderLoading(){return c.tsx("div", |
|
{class:"esri-attachments__loader-container",key:"loader"},c.tsx("div",{class:"esri-attachments__loader"}))}_renderProgressBar(){return this.visibleElements.progressBar?c.tsx("div",{class:"esri-attachments__progress-bar",key:"progress-bar"}):null}_renderAddForm(){const {submitting:a,selectedFile:b}=this;var d=a||!b,g=this.visibleElements.cancelAddButton?c.tsx("button",{bind:this,class:this.classes(e.globalCss.button,e.globalCss.buttonTertiary,e.globalCss.buttonSmall,e.globalCss.buttonHalf,a&&e.globalCss.buttonDisabled), |
|
disabled:a,onclick:this._cancelForm,type:"button"},this.messages.cancel):null;d=this.visibleElements.addSubmitButton?c.tsx("button",{class:this.classes(e.globalCss.button,e.globalCss.buttonSecondary,e.globalCss.buttonSmall,e.globalCss.buttonHalf,{[e.globalCss.buttonDisabled]:d}),disabled:d,type:"submit"},this.messages.add):null;const h=b?c.tsx("span",{class:"esri-attachments__file-name",key:"file-name"},b.name):null;g=c.tsx("form",{afterCreate:t.storeNode,afterRemoved:t.discardNode,bind:this,"data-node-ref":"_addAttachmentForm", |
|
onsubmit:this._submitAddAttachment},c.tsx("fieldset",{class:"esri-attachments__file-fieldset"},h,c.tsx("label",{class:this.classes("esri-attachments__file-label",e.globalCss.button,e.globalCss.buttonSecondary)},b?this.messages.changeFile:this.messages.selectFile,c.tsx("input",{bind:this,class:"esri-attachments__file-input",name:"attachment",onchange:this._handleFileInputChange,type:"file"}))),d,g);return c.tsx("div",{class:"esri-attachments__form-node",key:"add-form-container"},g)}_renderDetailsForm(a){const {visibleElements:b, |
|
viewModel:d,selectedFile:g,submitting:h}=this;var {capabilities:k}=d,n=h||!g;let q;if(g){var r=g.type;q=g.name;var p=g.size}else if(a&&"file"in a)r=a.file.type,q=a.file.name,p=a.file.size;else if(a&&"contentType"in a){r=a.contentType;q=a.name;p=a.size;var u=a.url}var w=k.editing&&k.operations?.delete&&b.deleteButton?c.tsx("button",{bind:this,class:this.classes(e.globalCss.button,e.globalCss.buttonSmall,e.globalCss.buttonTertiary,"esri-attachments__delete-button",{[e.globalCss.buttonDisabled]:h}), |
|
disabled:h,key:"delete-button",onclick:C=>this._submitDeleteAttachment(C,a),type:"button"},this.messages.delete):void 0;n=k.editing&&k.operations?.update&&b.updateButton?c.tsx("button",{class:this.classes(e.globalCss.button,e.globalCss.buttonSmall,e.globalCss.buttonThird,{[e.globalCss.buttonDisabled]:n}),disabled:n,key:"update-button",type:"submit"},this.messages.update):void 0;const x=this.visibleElements.cancelUpdateButton?c.tsx("button",{bind:this,class:this.classes(e.globalCss.button,e.globalCss.buttonSmall, |
|
e.globalCss.buttonTertiary,e.globalCss.buttonThird,{[e.globalCss.buttonDisabled]:h}),disabled:h,key:"cancel-button",onclick:this._cancelForm,type:"button"},this.messages.cancel):void 0;k=k.editing&&k.operations?.update?c.tsx("fieldset",{class:"esri-attachments__file-fieldset",key:"file"},c.tsx("span",{class:"esri-attachments__file-name",key:"file-name"},q),c.tsx("label",{class:this.classes("esri-attachments__file-label",e.globalCss.button,e.globalCss.buttonSecondary)},this.messages.changeFile,c.tsx("input", |
|
{bind:this,class:"esri-attachments__file-input",name:"attachment",onchange:this._handleFileInputChange,type:"file"}))):void 0;p=c.tsx("fieldset",{class:"esri-attachments__metadata-fieldset",key:"size"},c.tsx("label",null,H.formatFileSize(this.messagesUnits,p??0)));r=c.tsx("fieldset",{class:"esri-attachments__metadata-fieldset",key:"content-type"},c.tsx("label",null,r));u=null!=u?c.tsx("a",{class:"esri-attachments__item-link",href:u,rel:"noreferrer",target:"_blank"},this._renderImageMask(a,400),c.tsx("div", |
|
{class:"esri-attachments__item-link-overlay"},c.tsx("span",{class:"esri-attachments__item-link-overlay-icon"},c.tsx("calcite-icon",{icon:"launch"})))):this._renderImageMask(a,400);w=c.tsx("form",{afterCreate:t.storeNode,afterRemoved:t.discardNode,bind:this,"data-node-ref":"_updateAttachmentForm",onsubmit:C=>this._submitUpdateAttachment(C,a)},c.tsx("div",{class:"esri-attachments__metadata"},p,r),k,c.tsx("div",{class:"esri-attachments__actions"},w,x,n));return c.tsx("div",{class:"esri-attachments__form-node", |
|
key:"edit-form-container"},u,w)}_renderImageMask(a,b){return a?"file"in a?this._renderGenericImageMask(a.file.name,a.file.type):this._renderImageMaskForAttachment(a,b):null}_renderGenericImageMask(a,b){var {supportsResizeAttachments:d}=this.viewModel;b=A.getIconPath(b);d={["esri-attachments__image--resizable"]:d};return c.tsx("div",{class:this.classes("esri-attachments__item-mask--icon","esri-attachments__item-mask"),key:b},c.tsx("img",{alt:a,class:this.classes(d,"esri-attachments__image"),src:b, |
|
title:a}))}_renderImageMaskForAttachment(a,b){var {supportsResizeAttachments:d}=this.viewModel;if(!a)return null;const {contentType:g,name:h,url:k}=a;if(!d||!A.isSupportedImage(g))return this._renderGenericImageMask(h,g);a=(a=this._getCSSTransform(a))?{transform:a,"image-orientation":"none"}:{};b=`${k}${k?.includes("?")?"\x26":"?"}w=${b}`;d={["esri-attachments__image--resizable"]:d};return c.tsx("div",{class:this.classes("esri-attachments__item-mask"),key:b},c.tsx("img",{alt:h,class:this.classes(d, |
|
"esri-attachments__image"),src:b,styles:a,title:h}))}_renderFile(a){const {file:b}=a;return c.tsx("li",{class:"esri-attachments__item",key:b},c.tsx("button",{"aria-label":this.messages.attachmentDetails,bind:this,class:"esri-attachments__item-button",key:"details-button",onclick:()=>this._startEditFile(a),title:this.messages.attachmentDetails,type:"button"},this._renderImageMask(a),c.tsx("label",{class:"esri-attachments__label"},c.tsx("span",{class:"esri-attachments__filename"},b.name||this.messages.noTitle), |
|
c.tsx("span",{"aria-hidden":"true",class:this.classes("esri-attachments__item-chevron-icon",t.isRTL(this.container)?v.legacyIcon.left:v.legacyIcon.right)}))))}_renderAttachmentInfo({attachmentInfo:a,displayType:b}){const {viewModel:d,effectiveDisplayType:g}=this,{capabilities:h,supportsResizeAttachments:k}=d,{contentType:n,name:q,url:r}=a;b=this._renderImageMask(a,"list"===b?48:400);var p=h.editing?c.tsx("span",{"aria-hidden":"true",class:this.classes("esri-attachments__item-chevron-icon",t.isRTL(this.container)? |
|
v.legacyIcon.left:v.legacyIcon.right)}):null;p="preview"===g&&k&&A.isSupportedImage(n)?null:c.tsx("label",{class:"esri-attachments__label"},c.tsx("span",{class:"esri-attachments__filename"},q||this.messages.noTitle),p);b=[b,p];b=h.editing?c.tsx("button",{"aria-label":this.messages.attachmentDetails,bind:this,class:"esri-attachments__item-button","data-attachment-info-id":a.id,key:"details-button",onclick:()=>this._startEditAttachment(a),title:this.messages.attachmentDetails,type:"button"},b):c.tsx("a", |
|
{class:"esri-attachments__item-button",href:r??void 0,key:"details-link",rel:"noreferrer",target:"_blank"},b);return c.tsx("li",{class:"esri-attachments__item",key:a},b)}_renderAttachmentContainer(){const {effectiveDisplayType:a,viewModel:b,visibleElements:d}=this,{attachmentInfos:g,capabilities:h,fileInfos:k}=b;var n=!!g?.length;const q=!!k?.length,r={["esri-attachments__container--list"]:"preview"!==a,["esri-attachments__container--preview"]:"preview"===a},p=h.editing&&h.operations?.add&&d.addButton? |
|
c.tsx("button",{bind:this,class:this.classes(e.globalCss.button,e.globalCss.buttonTertiary,"esri-attachments__add-attachment-button"),onclick:()=>this._startAddAttachment(),type:"button"},c.tsx("span",{"aria-hidden":"true",class:this.classes("esri-attachments__item-add-icon",v.legacyIcon.plus)}),this.messages.add):void 0,u=n?c.tsx("ul",{class:"esri-attachments__items",key:"attachments-list"},g.toArray().map(x=>this._renderAttachmentInfo({attachmentInfo:x,displayType:a}))):void 0,w=q?c.tsx("ul",{class:"esri-attachments__items", |
|
key:"file-list"},k.toArray().map(x=>this._renderFile(x))):void 0;n=q||n?void 0:c.tsx("div",{class:e.globalCss.empty},this.messages.noAttachments);return c.tsx("div",{class:this.classes("esri-attachments__container",r),key:"attachments-container"},u,w,n,p)}_modeChanged(){this._set("error",null);this._set("selectedFile",null)}_handleFileInputChange(a){a=a.target.files?.item(0);this._set("selectedFile",a)}_submitDeleteAttachment(a,b){a.preventDefault();b&&("file"in b?this.deleteFile(b.file):b&&this.deleteAttachment(b))}_submitAddAttachment(a){a.preventDefault(); |
|
this.viewModel.filesEnabled?this.addFile():this.addAttachment()}_submitUpdateAttachment(a,b){a.preventDefault();b&&"file"in b?this.updateFile():this.updateAttachment()}_startEditAttachment(a){const {viewModel:b}=this;b.activeFileInfo=null;b.activeAttachmentInfo=a;b.mode="edit"}_startEditFile(a){const {viewModel:b}=this;b.activeAttachmentInfo=null;b.activeFileInfo=a;b.mode="edit"}_startAddAttachment(){this.viewModel.mode="add"}_cancelForm(a){a.preventDefault();this.viewModel.mode="view"}_getCSSTransform(a){({orientationInfo:a}= |
|
a);return!this._supportsImageOrientation&&a?[a.rotation?`rotate(${a.rotation}deg)`:"",a.mirrored?"scaleX(-1)":""].join(" "):""}};l.__decorate([m.property()],f.prototype,"capabilities",null);l.__decorate([m.property()],f.prototype,"displayType",void 0);l.__decorate([m.property({readOnly:!0})],f.prototype,"effectiveDisplayType",null);l.__decorate([m.property()],f.prototype,"graphic",null);l.__decorate([m.property()],f.prototype,"icon",null);l.__decorate([m.property()],f.prototype,"label",null);l.__decorate([m.property(), |
|
E.messageBundle("esri/widgets/Attachments/t9n/Attachments")],f.prototype,"messages",void 0);l.__decorate([m.property(),E.messageBundle("esri/core/t9n/Units")],f.prototype,"messagesUnits",void 0);l.__decorate([m.property({readOnly:!0})],f.prototype,"selectedFile",void 0);l.__decorate([m.property({readOnly:!0})],f.prototype,"submitting",void 0);l.__decorate([m.property({readOnly:!0})],f.prototype,"error",void 0);l.__decorate([m.property({type:D})],f.prototype,"viewModel",void 0);l.__decorate([m.property()], |
|
f.prototype,"visibleElements",void 0);l.__decorate([I.cast("visibleElements")],f.prototype,"castVisibleElements",null);return f=l.__decorate([J.subclass("esri.widgets.Attachments")],f)}); |