@social-mail/social-mail-client 1.2.24 → 1.2.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/dist/admin/AdminAppIndex.pack.js +56 -9
  2. package/dist/admin/AdminAppIndex.pack.js.map +1 -1
  3. package/dist/admin/AdminAppIndex.pack.min.js +4 -8
  4. package/dist/admin/AdminAppIndex.pack.min.js.map +1 -1
  5. package/dist/common/controls/html/InlineHtmlEditorWithToolbar.d.ts +1 -0
  6. package/dist/common/controls/html/InlineHtmlEditorWithToolbar.d.ts.map +1 -1
  7. package/dist/common/controls/html/InlineHtmlEditorWithToolbar.js +34 -3
  8. package/dist/common/controls/html/InlineHtmlEditorWithToolbar.js.map +1 -1
  9. package/dist/tsconfig.tsbuildinfo +1 -1
  10. package/dist/web/AppIndex.pack.js +56 -9
  11. package/dist/web/AppIndex.pack.js.map +1 -1
  12. package/dist/web/AppIndex.pack.min.js +4 -8
  13. package/dist/web/AppIndex.pack.min.js.map +1 -1
  14. package/dist/web/page/mails/ComposeMailPage.d.ts.map +1 -1
  15. package/dist/web/page/mails/ComposeMailPage.js +1 -0
  16. package/dist/web/page/mails/ComposeMailPage.js.map +1 -1
  17. package/dist/web/page/mails/ConversationPage.d.ts.map +1 -1
  18. package/dist/web/page/mails/ConversationPage.js +21 -2
  19. package/dist/web/page/mails/ConversationPage.js.map +1 -1
  20. package/dist/web/page/mails/MailboxContacts.d.ts.map +1 -1
  21. package/dist/web/page/mails/MailboxContacts.js +0 -4
  22. package/dist/web/page/mails/MailboxContacts.js.map +1 -1
  23. package/package.json +1 -1
  24. package/src/common/controls/html/InlineHtmlEditorWithToolbar.tsx +27 -0
  25. package/src/web/page/mails/ComposeMailPage.tsx +1 -0
  26. package/src/web/page/mails/ConversationPage.tsx +21 -3
  27. package/src/web/page/mails/MailboxContacts.tsx +0 -4
@@ -1126,12 +1126,12 @@ and limitations under the License.
1126
1126
  width: 100%;
1127
1127
  }
1128
1128
 
1129
- `.installGlobal("[data-attachment-file]");LocalFileService=class LocalFileService extends TaskManager{constructor(){super();document.body.addEventListener("uploadRequested",(ce=>{const{target,detail:{files,extra,uploadEvent}}=ce;ce.preventDefault();this.app.runAsync((()=>__awaiter(this,void 0,void 0,(function*(){const detail=yield FileUploadWindow.showModal({parameters:{files,extra}});target.dispatchEvent(new CustomEvent(StringHelper.fromHyphenToCamel(uploadEvent),{detail,bubbles:true}))}))))}))}uploadWithProgress(files,extra){return __awaiter(this,void 0,void 0,(function*(){const detail=yield FileUploadWindow.showModal({parameters:{files,extra}});return detail.files}))}sha256(blob){return __awaiter(this,void 0,void 0,(function*(){const msgBuffer=yield blob.arrayBuffer();const hashBuffer=yield crypto.subtle.digest("SHA-256",msgBuffer);const hashArray=Array.from(new Uint8Array(hashBuffer));const hashHex=hashArray.map((b=>b.toString(16).padStart(2,"0"))).join("");return hashHex}))}uploadFile(file,extra,ct,progress){return __awaiter(this,void 0,void 0,(function*(){const sha256=yield this.sha256(file);if(typeof extra==="string"){extra=JSON.parse(extra)}if(extra.parentID){const existing=yield this.entityService.query(AppFile,"children",extra.parentID,file.name,sha256).firstOrDefault();if(existing){const{appFileID,url}=existing;return{appFileID,file,url}}}return new Promise(((resolve,reject)=>{const body=new FormData;body.append(file.name,file,file.name);body.append("sha256",sha256);const xhr=new XMLHttpRequest;const onError=()=>{reject(new Error(xhr.responseText||"Error"))};ct===null||ct===void 0?void 0:ct.registerForCancel((()=>xhr.abort()));xhr.upload.addEventListener("progress",(event=>{if(event.lengthComputable){progress===null||progress===void 0?void 0:progress(event.loaded/event.total)}}));xhr.upload.addEventListener("timeout",onError);xhr.upload.addEventListener("error",onError);xhr.upload.addEventListener("abort",onError);xhr.addEventListener("timeout",onError);xhr.addEventListener("abort",onError);xhr.addEventListener("error",onError);xhr.upload.addEventListener("progress",(event=>{if(event.lengthComputable){progress===null||progress===void 0?void 0:progress(event.loaded/event.total)}}));xhr.addEventListener("load",(()=>{if(xhr.status<=300){const r=Object.assign(Object.assign({},JSON.parse(xhr.responseText)),{file});resolve(r)}}));let postUrl="/api/upload";const s=new URLSearchParams;if(extra){for(const key in extra){if(Object.prototype.hasOwnProperty.call(extra,key)){const element=extra[key];if(element){s.append(key,element)}}}}if(file.webkitRelativePath){const folders=file.webkitRelativePath.split("/");folders.pop();if(folders.length){const folder=folders.join("/");s.append("folder",folder)}}postUrl+="?"+s.toString();xhr.open("POST",postUrl,true);xhr.send(body)}))}))}upload(files,extra,ct){const tasks=[];const upload={total:0,tasks,progress:0,error:""};for(const file of files){upload.total+=file.size;const uploadFile={name:file.name,error:"",progress:0};uploadFile.promise=this.run((()=>__awaiter(this,void 0,void 0,(function*(){var _a,_b;let lastError;for(let i=0;i<3;i++){try{uploadFile.progress=.01;const r=yield this.uploadFile(file,extra,ct,(n=>uploadFile.progress=n));upload.progress+=r.file.size;setTimeout((()=>tasks.remove(uploadFile)),500);upload.error="";lastError=null;return r}catch(error){lastError=`${(_a=file.webkitRelativePath)!==null&&_a!==void 0?_a:""}/${file.name} failed to upload.\n${(_b=error.stack)!==null&&_b!==void 0?_b:error}`;uploadFile.error=lastError}}if(lastError){upload.error+="\n"+lastError}}))));tasks.push(uploadFile)}return upload}};__decorate([Inject,__metadata("design:type",App)],LocalFileService.prototype,"app",void 0);__decorate([Inject,__metadata("design:type",EntityService)],LocalFileService.prototype,"entityService",void 0);LocalFileService=__decorate([DISingleton(),__metadata("design:paramtypes",[])],LocalFileService);_export("default",LocalFileService);FileUploadWindow=class FileUploadWindow extends PopupWindow{constructor(){super(...arguments);this.parameters={}}init(){return __awaiter(this,void 0,void 0,(function*(){this.title="Uploading...";this.closeWarning="Are you sure you want to cancel the upload?";this.bindEvent(window,"backButton",(e=>__awaiter(this,void 0,void 0,(function*(){var _a;e.preventDefault();(_a=e.stopImmediatePropagation)===null||_a===void 0?void 0:_a.call(e);e.stopPropagation();yield this.requestCancel()}))),null,{capture:true});const task=this.localFileService.upload(this.parameters.files,this.parameters.extra,this.cancelToken);this.files=task.tasks;this.footerRenderer=()=>XNode.create("div",{"data-layout":"command-row"},XNode.create("progress",{min:0,max:task.total,value:Bind.source(task,(x=>x.source.progress))}));this.render(XNode.create("div",{"data-overflow":"auto","style-max-height":"500px","style-max-width":"400px"},XNode.create(AtomRepeater,{"data-layout":"vertical-flex-stretch-items",items:this.files,itemRenderer:file=>XNode.create("div",{"data-attachment-file":"file"},XNode.create("div",{"data-element":"file-name",text:file.name}),XNode.create("progress",{"style-display":Bind.source(file,(x=>x.source.progress>0)),min:0,max:1,value:Bind.source(file,(x=>x.source.progress))}),XNode.create("div",{"data-element":"error","data-color":"red",text:Bind.source(file,(x=>x.source.error))}))})));try{const ct=new CancelToken;this.registerDisposable({dispose:()=>{ct.cancel()}});const tasks=this.files.map((x=>x.promise));const files=yield Promise.all(tasks);const extra=this.parameters.extra;this.close({files,extra})}catch(error){if(CancelToken.isCancelled(error)){this.cancel(error);return}yield PopupService.alert({message:error});this.cancel(error)}}))}};__decorate([InjectProperty,__metadata("design:type",LocalFileService)],FileUploadWindow.prototype,"localFileService",void 0)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/services/files/LocalFileService");System.register(["tslib","@web-atoms/core/dist/core/XNode","@web-atoms/web-controls/dist/html-editor/InlineHtmlEditor","@web-atoms/web-controls/dist/html-editor/commands/Toolbar","@web-atoms/web-controls/dist/html-editor/commands/Bold","@web-atoms/web-controls/dist/html-editor/commands/Italic","@web-atoms/web-controls/dist/html-editor/commands/Underline","@web-atoms/web-controls/dist/html-editor/commands/StrikeThrough","@web-atoms/web-controls/dist/html-editor/commands/Align","@web-atoms/web-controls/dist/html-editor/commands/HorizontalRule","@web-atoms/web-controls/dist/html-editor/commands/Separator","@web-atoms/web-controls/dist/html-editor/commands/Headings","@web-atoms/web-controls/dist/html-editor/commands/ChangeColor","@web-atoms/web-controls/dist/html-editor/commands/ChangeFont","@web-atoms/web-controls/dist/html-editor/commands/ChangeFontSize","@web-atoms/web-controls/dist/html-editor/commands/NumberedList","@web-atoms/web-controls/dist/html-editor/commands/UnorderedList","@web-atoms/web-controls/dist/html-editor/commands/IndentLess","@web-atoms/web-controls/dist/html-editor/commands/IndentMore","@web-atoms/web-controls/dist/html-editor/commands/AddLink","@web-atoms/web-controls/dist/html-editor/commands/Unlink","@web-atoms/web-controls/dist/html-editor/commands/RemoveFormat","@web-atoms/web-controls/dist/html-editor/commands/Source","@web-atoms/web-controls/dist/basic/UploadEvent","../../../services/files/LocalFileService","@web-atoms/core/dist/web/controls/AtomControl","@web-atoms/core/dist/core/InjectProperty","@web-atoms/core/dist/core/StringHelper","@web-atoms/core/dist/style/styled"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,XNode,InlineHtmlEditor,Toolbar,Bold,Italic,Underline,StrikeThrough,Align,HorizontalRule,Separator,Headings,ChangeColor,ChangeFont,ChangeFontSize,NumberedList,UnorderedList,IndentLess,IndentMore,AddLink,Unlink,RemoveFormat,Source,UploadEvent,LocalFileService,acceptDocumentAndMedia,AtomControl,InjectProperty,StringHelper,styled,MailHtmlEditor,link,onAttachImage,onAttachInlineImage,css;function AttachFile({accept=acceptDocumentAndMedia,maxSize=1024*1024*10,authorize=true,capture=null,ariaLabel="upload"}){return XNode.create("button",Object.assign({title:"Insert Image",class:"command"},UploadEvent.AttachUploadAction({accept,forceType:true,maxSize,authorize,capture,multiple:false,ariaLabel})),XNode.create("i",{class:"ri-attachment-2"}))}function AttachImage({accept="image/*",maxSize=1024*1024*5,authorize=true,inlineImage=false,capture=null,ariaLabel="upload"}){return XNode.create("button",Object.assign({title:"Insert Image",class:"command"},UploadEvent.AttachUploadAction({accept,forceType:true,maxSize,authorize,capture,upload:!inlineImage,multiple:false,ariaLabel,"event-files-available":inlineImage?onAttachInlineImage:onAttachImage})),XNode.create("i",{class:"ri-image-add-fill"}))}function InlineHtmlEditorWithToolbar(a){var _a;(_a=a.inlineImage)!==null&&_a!==void 0?_a:a.inlineImage=false;const toolbar=()=>XNode.create("div",null,XNode.create(Toolbar,null,XNode.create(Bold,null),XNode.create(Italic,null),XNode.create(Underline,null),XNode.create(StrikeThrough,null),XNode.create(Align,null),XNode.create(Separator,null),XNode.create(Headings,null),XNode.create(ChangeColor,null),XNode.create(HorizontalRule,null),XNode.create(Separator,null),XNode.create(ChangeFont,null),XNode.create(ChangeFontSize,null),XNode.create(Separator,null),XNode.create(NumberedList,null),XNode.create(UnorderedList,null),XNode.create(IndentLess,null),XNode.create(IndentMore,null),XNode.create(Separator,null)),XNode.create(Toolbar,null,XNode.create(AttachImage,{inlineImage:a.inlineImage}),XNode.create(AttachFile,null),XNode.create(Separator,null),XNode.create(AddLink,null),XNode.create(Unlink,null),XNode.create(RemoveFormat,null),XNode.create(Separator,null),XNode.create(Source,null)));return XNode.create(MailHtmlEditor,Object.assign({},a,{toolbar}))}_export({MailHtmlEditor:void 0,default:InlineHtmlEditorWithToolbar});return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_webAtomsWebControlsDistHtmlEditorInlineHtmlEditor){InlineHtmlEditor=_webAtomsWebControlsDistHtmlEditorInlineHtmlEditor.default},function(_webAtomsWebControlsDistHtmlEditorCommandsToolbar){Toolbar=_webAtomsWebControlsDistHtmlEditorCommandsToolbar.default},function(_webAtomsWebControlsDistHtmlEditorCommandsBold){Bold=_webAtomsWebControlsDistHtmlEditorCommandsBold.default},function(_webAtomsWebControlsDistHtmlEditorCommandsItalic){Italic=_webAtomsWebControlsDistHtmlEditorCommandsItalic.default},function(_webAtomsWebControlsDistHtmlEditorCommandsUnderline){Underline=_webAtomsWebControlsDistHtmlEditorCommandsUnderline.default},function(_webAtomsWebControlsDistHtmlEditorCommandsStrikeThrough){StrikeThrough=_webAtomsWebControlsDistHtmlEditorCommandsStrikeThrough.default},function(_webAtomsWebControlsDistHtmlEditorCommandsAlign){Align=_webAtomsWebControlsDistHtmlEditorCommandsAlign.default},function(_webAtomsWebControlsDistHtmlEditorCommandsHorizontalRule){HorizontalRule=_webAtomsWebControlsDistHtmlEditorCommandsHorizontalRule.default},function(_webAtomsWebControlsDistHtmlEditorCommandsSeparator){Separator=_webAtomsWebControlsDistHtmlEditorCommandsSeparator.default},function(_webAtomsWebControlsDistHtmlEditorCommandsHeadings){Headings=_webAtomsWebControlsDistHtmlEditorCommandsHeadings.default},function(_webAtomsWebControlsDistHtmlEditorCommandsChangeColor){ChangeColor=_webAtomsWebControlsDistHtmlEditorCommandsChangeColor.default},function(_webAtomsWebControlsDistHtmlEditorCommandsChangeFont){ChangeFont=_webAtomsWebControlsDistHtmlEditorCommandsChangeFont.default},function(_webAtomsWebControlsDistHtmlEditorCommandsChangeFontSize){ChangeFontSize=_webAtomsWebControlsDistHtmlEditorCommandsChangeFontSize.default},function(_webAtomsWebControlsDistHtmlEditorCommandsNumberedList){NumberedList=_webAtomsWebControlsDistHtmlEditorCommandsNumberedList.default},function(_webAtomsWebControlsDistHtmlEditorCommandsUnorderedList){UnorderedList=_webAtomsWebControlsDistHtmlEditorCommandsUnorderedList.default},function(_webAtomsWebControlsDistHtmlEditorCommandsIndentLess){IndentLess=_webAtomsWebControlsDistHtmlEditorCommandsIndentLess.default},function(_webAtomsWebControlsDistHtmlEditorCommandsIndentMore){IndentMore=_webAtomsWebControlsDistHtmlEditorCommandsIndentMore.default},function(_webAtomsWebControlsDistHtmlEditorCommandsAddLink){AddLink=_webAtomsWebControlsDistHtmlEditorCommandsAddLink.default},function(_webAtomsWebControlsDistHtmlEditorCommandsUnlink){Unlink=_webAtomsWebControlsDistHtmlEditorCommandsUnlink.default},function(_webAtomsWebControlsDistHtmlEditorCommandsRemoveFormat){RemoveFormat=_webAtomsWebControlsDistHtmlEditorCommandsRemoveFormat.default},function(_webAtomsWebControlsDistHtmlEditorCommandsSource){Source=_webAtomsWebControlsDistHtmlEditorCommandsSource.default},function(_webAtomsWebControlsDistBasicUploadEvent){UploadEvent=_webAtomsWebControlsDistBasicUploadEvent.default},function(_servicesFilesLocalFileService){LocalFileService=_servicesFilesLocalFileService.default;acceptDocumentAndMedia=_servicesFilesLocalFileService.acceptDocumentAndMedia},function(_webAtomsCoreDistWebControlsAtomControl){AtomControl=_webAtomsCoreDistWebControlsAtomControl.AtomControl},function(_webAtomsCoreDistCoreInjectProperty){InjectProperty=_webAtomsCoreDistCoreInjectProperty.default},function(_webAtomsCoreDistCoreStringHelper){StringHelper=_webAtomsCoreDistCoreStringHelper.StringHelper},function(_webAtomsCoreDistStyleStyled){styled=_webAtomsCoreDistStyleStyled.default}],execute:function(){link=document.createElement("link");link.href="https://cdn.jsdelivr.net/npm/remixicon@2.5.0/fonts/remixicon.css";link.rel="preload";link.as="style";link.onload=()=>{link.onload=null;link.rel="stylesheet"};document.head.appendChild(link);onAttachImage=ce=>__awaiter(void 0,void 0,void 0,(function*(){var _a,_b;const c=AtomControl.from(ce.target);if(!((_b=(_a=ce.detail)===null||_a===void 0?void 0:_a.files)===null||_b===void 0?void 0:_b.length)){return}const file=ce.detail.files[0];file.inline=true;c.executeCommand("insertHTML",void 0,`<div><img data-content="data-url" data-content-id=${file.appFileID} src="${file.url}" style='max-height: 700px;'/></div>`)}));onAttachInlineImage=ce=>__awaiter(void 0,void 0,void 0,(function*(){var _c,_d;const c=AtomControl.from(ce.target);if(!((_d=(_c=ce.detail)===null||_c===void 0?void 0:_c.files)===null||_d===void 0?void 0:_d.length)){return}const file=ce.detail.files[0];const reader=new FileReader;reader.onload=()=>{c.executeCommand("insertHTML",void 0,`<div><img\n data-content="data-url"\n src="${reader.result}" style='max-height: 700px;'/>\n </div>`)};reader.readAsDataURL(file)}));css=styled.css`
1129
+ `.installGlobal("[data-attachment-file]");LocalFileService=class LocalFileService extends TaskManager{constructor(){super();document.body.addEventListener("uploadRequested",(ce=>{const{target,detail:{files,extra,uploadEvent}}=ce;ce.preventDefault();this.app.runAsync((()=>__awaiter(this,void 0,void 0,(function*(){const detail=yield FileUploadWindow.showModal({parameters:{files,extra}});target.dispatchEvent(new CustomEvent(StringHelper.fromHyphenToCamel(uploadEvent),{detail,bubbles:true}))}))))}))}uploadWithProgress(files,extra){return __awaiter(this,void 0,void 0,(function*(){const detail=yield FileUploadWindow.showModal({parameters:{files,extra}});return detail.files}))}sha256(blob){return __awaiter(this,void 0,void 0,(function*(){const msgBuffer=yield blob.arrayBuffer();const hashBuffer=yield crypto.subtle.digest("SHA-256",msgBuffer);const hashArray=Array.from(new Uint8Array(hashBuffer));const hashHex=hashArray.map((b=>b.toString(16).padStart(2,"0"))).join("");return hashHex}))}uploadFile(file,extra,ct,progress){return __awaiter(this,void 0,void 0,(function*(){const sha256=yield this.sha256(file);if(typeof extra==="string"){extra=JSON.parse(extra)}if(extra.parentID){const existing=yield this.entityService.query(AppFile,"children",extra.parentID,file.name,sha256).firstOrDefault();if(existing){const{appFileID,url}=existing;return{appFileID,file,url}}}return new Promise(((resolve,reject)=>{const body=new FormData;body.append(file.name,file,file.name);body.append("sha256",sha256);const xhr=new XMLHttpRequest;const onError=()=>{reject(new Error(xhr.responseText||"Error"))};ct===null||ct===void 0?void 0:ct.registerForCancel((()=>xhr.abort()));xhr.upload.addEventListener("progress",(event=>{if(event.lengthComputable){progress===null||progress===void 0?void 0:progress(event.loaded/event.total)}}));xhr.upload.addEventListener("timeout",onError);xhr.upload.addEventListener("error",onError);xhr.upload.addEventListener("abort",onError);xhr.addEventListener("timeout",onError);xhr.addEventListener("abort",onError);xhr.addEventListener("error",onError);xhr.upload.addEventListener("progress",(event=>{if(event.lengthComputable){progress===null||progress===void 0?void 0:progress(event.loaded/event.total)}}));xhr.addEventListener("load",(()=>{if(xhr.status<=300){const r=Object.assign(Object.assign({},JSON.parse(xhr.responseText)),{file});resolve(r)}}));let postUrl="/api/upload";const s=new URLSearchParams;if(extra){for(const key in extra){if(Object.prototype.hasOwnProperty.call(extra,key)){const element=extra[key];if(element){s.append(key,element)}}}}if(file.webkitRelativePath){const folders=file.webkitRelativePath.split("/");folders.pop();if(folders.length){const folder=folders.join("/");s.append("folder",folder)}}postUrl+="?"+s.toString();xhr.open("POST",postUrl,true);xhr.send(body)}))}))}upload(files,extra,ct){const tasks=[];const upload={total:0,tasks,progress:0,error:""};for(const file of files){upload.total+=file.size;const uploadFile={name:file.name,error:"",progress:0};uploadFile.promise=this.run((()=>__awaiter(this,void 0,void 0,(function*(){var _a,_b;let lastError;for(let i=0;i<3;i++){try{uploadFile.progress=.01;const r=yield this.uploadFile(file,extra,ct,(n=>uploadFile.progress=n));upload.progress+=r.file.size;setTimeout((()=>tasks.remove(uploadFile)),500);upload.error="";lastError=null;return r}catch(error){lastError=`${(_a=file.webkitRelativePath)!==null&&_a!==void 0?_a:""}/${file.name} failed to upload.\n${(_b=error.stack)!==null&&_b!==void 0?_b:error}`;uploadFile.error=lastError}}if(lastError){upload.error+="\n"+lastError}}))));tasks.push(uploadFile)}return upload}};__decorate([Inject,__metadata("design:type",App)],LocalFileService.prototype,"app",void 0);__decorate([Inject,__metadata("design:type",EntityService)],LocalFileService.prototype,"entityService",void 0);LocalFileService=__decorate([DISingleton(),__metadata("design:paramtypes",[])],LocalFileService);_export("default",LocalFileService);FileUploadWindow=class FileUploadWindow extends PopupWindow{constructor(){super(...arguments);this.parameters={}}init(){return __awaiter(this,void 0,void 0,(function*(){this.title="Uploading...";this.closeWarning="Are you sure you want to cancel the upload?";this.bindEvent(window,"backButton",(e=>__awaiter(this,void 0,void 0,(function*(){var _a;e.preventDefault();(_a=e.stopImmediatePropagation)===null||_a===void 0?void 0:_a.call(e);e.stopPropagation();yield this.requestCancel()}))),null,{capture:true});const task=this.localFileService.upload(this.parameters.files,this.parameters.extra,this.cancelToken);this.files=task.tasks;this.footerRenderer=()=>XNode.create("div",{"data-layout":"command-row"},XNode.create("progress",{min:0,max:task.total,value:Bind.source(task,(x=>x.source.progress))}));this.render(XNode.create("div",{"data-overflow":"auto","style-max-height":"500px","style-max-width":"400px"},XNode.create(AtomRepeater,{"data-layout":"vertical-flex-stretch-items",items:this.files,itemRenderer:file=>XNode.create("div",{"data-attachment-file":"file"},XNode.create("div",{"data-element":"file-name",text:file.name}),XNode.create("progress",{"style-display":Bind.source(file,(x=>x.source.progress>0)),min:0,max:1,value:Bind.source(file,(x=>x.source.progress))}),XNode.create("div",{"data-element":"error","data-color":"red",text:Bind.source(file,(x=>x.source.error))}))})));try{const ct=new CancelToken;this.registerDisposable({dispose:()=>{ct.cancel()}});const tasks=this.files.map((x=>x.promise));const files=yield Promise.all(tasks);const extra=this.parameters.extra;this.close({files,extra})}catch(error){if(CancelToken.isCancelled(error)){this.cancel(error);return}yield PopupService.alert({message:error});this.cancel(error)}}))}};__decorate([InjectProperty,__metadata("design:type",LocalFileService)],FileUploadWindow.prototype,"localFileService",void 0)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/services/files/LocalFileService");System.register(["tslib","@web-atoms/core/dist/core/XNode","@web-atoms/web-controls/dist/html-editor/InlineHtmlEditor","@web-atoms/web-controls/dist/html-editor/commands/Toolbar","@web-atoms/web-controls/dist/html-editor/commands/Bold","@web-atoms/web-controls/dist/html-editor/commands/Italic","@web-atoms/web-controls/dist/html-editor/commands/Underline","@web-atoms/web-controls/dist/html-editor/commands/StrikeThrough","@web-atoms/web-controls/dist/html-editor/commands/Align","@web-atoms/web-controls/dist/html-editor/commands/HorizontalRule","@web-atoms/web-controls/dist/html-editor/commands/Separator","@web-atoms/web-controls/dist/html-editor/commands/Headings","@web-atoms/web-controls/dist/html-editor/commands/ChangeColor","@web-atoms/web-controls/dist/html-editor/commands/ChangeFont","@web-atoms/web-controls/dist/html-editor/commands/ChangeFontSize","@web-atoms/web-controls/dist/html-editor/commands/NumberedList","@web-atoms/web-controls/dist/html-editor/commands/UnorderedList","@web-atoms/web-controls/dist/html-editor/commands/IndentLess","@web-atoms/web-controls/dist/html-editor/commands/IndentMore","@web-atoms/web-controls/dist/html-editor/commands/AddLink","@web-atoms/web-controls/dist/html-editor/commands/Unlink","@web-atoms/web-controls/dist/html-editor/commands/RemoveFormat","@web-atoms/web-controls/dist/html-editor/commands/Source","@web-atoms/web-controls/dist/basic/UploadEvent","../../../services/files/LocalFileService","@web-atoms/core/dist/web/controls/AtomControl","@web-atoms/core/dist/core/InjectProperty","@web-atoms/core/dist/core/StringHelper","@web-atoms/core/dist/style/styled","@web-atoms/core/dist/web/core/AtomUI"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,XNode,InlineHtmlEditor,Toolbar,Bold,Italic,Underline,StrikeThrough,Align,HorizontalRule,Separator,Headings,ChangeColor,ChangeFont,ChangeFontSize,NumberedList,UnorderedList,IndentLess,IndentMore,AddLink,Unlink,RemoveFormat,Source,UploadEvent,LocalFileService,acceptDocumentAndMedia,AtomControl,InjectProperty,StringHelper,styled,descendentElementIterator,MailHtmlEditor,link,onAttachImage,onAttachInlineImage,css;function AttachFile({accept=acceptDocumentAndMedia,maxSize=1024*1024*10,authorize=true,capture=null,ariaLabel="upload"}){return XNode.create("button",Object.assign({title:"Insert Image",class:"command"},UploadEvent.AttachUploadAction({accept,forceType:true,maxSize,authorize,capture,multiple:false,ariaLabel})),XNode.create("i",{class:"ri-attachment-2"}))}function AttachImage({accept="image/*",maxSize=1024*1024*5,authorize=true,inlineImage=false,capture=null,ariaLabel="upload"}){return XNode.create("button",Object.assign({title:"Insert Image",class:"command"},UploadEvent.AttachUploadAction({accept,forceType:true,maxSize,authorize,capture,upload:!inlineImage,multiple:false,ariaLabel,"event-files-available":inlineImage?onAttachInlineImage:onAttachImage})),XNode.create("i",{class:"ri-image-add-fill"}))}function InlineHtmlEditorWithToolbar(a){var _a;(_a=a.inlineImage)!==null&&_a!==void 0?_a:a.inlineImage=false;const toolbar=()=>XNode.create("div",null,XNode.create(Toolbar,null,XNode.create(Bold,null),XNode.create(Italic,null),XNode.create(Underline,null),XNode.create(StrikeThrough,null),XNode.create(Align,null),XNode.create(Separator,null),XNode.create(Headings,null),XNode.create(ChangeColor,null),XNode.create(HorizontalRule,null),XNode.create(Separator,null),XNode.create(ChangeFont,null),XNode.create(ChangeFontSize,null),XNode.create(Separator,null),XNode.create(NumberedList,null),XNode.create(UnorderedList,null),XNode.create(IndentLess,null),XNode.create(IndentMore,null),XNode.create(Separator,null)),XNode.create(Toolbar,null,XNode.create(AttachImage,{inlineImage:a.inlineImage}),XNode.create(AttachFile,null),XNode.create(Separator,null),XNode.create(AddLink,null),XNode.create(Unlink,null),XNode.create(RemoveFormat,null),XNode.create(Separator,null),XNode.create(Source,null)));return XNode.create(MailHtmlEditor,Object.assign({},a,{toolbar}))}_export({MailHtmlEditor:void 0,default:InlineHtmlEditorWithToolbar});return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_webAtomsWebControlsDistHtmlEditorInlineHtmlEditor){InlineHtmlEditor=_webAtomsWebControlsDistHtmlEditorInlineHtmlEditor.default},function(_webAtomsWebControlsDistHtmlEditorCommandsToolbar){Toolbar=_webAtomsWebControlsDistHtmlEditorCommandsToolbar.default},function(_webAtomsWebControlsDistHtmlEditorCommandsBold){Bold=_webAtomsWebControlsDistHtmlEditorCommandsBold.default},function(_webAtomsWebControlsDistHtmlEditorCommandsItalic){Italic=_webAtomsWebControlsDistHtmlEditorCommandsItalic.default},function(_webAtomsWebControlsDistHtmlEditorCommandsUnderline){Underline=_webAtomsWebControlsDistHtmlEditorCommandsUnderline.default},function(_webAtomsWebControlsDistHtmlEditorCommandsStrikeThrough){StrikeThrough=_webAtomsWebControlsDistHtmlEditorCommandsStrikeThrough.default},function(_webAtomsWebControlsDistHtmlEditorCommandsAlign){Align=_webAtomsWebControlsDistHtmlEditorCommandsAlign.default},function(_webAtomsWebControlsDistHtmlEditorCommandsHorizontalRule){HorizontalRule=_webAtomsWebControlsDistHtmlEditorCommandsHorizontalRule.default},function(_webAtomsWebControlsDistHtmlEditorCommandsSeparator){Separator=_webAtomsWebControlsDistHtmlEditorCommandsSeparator.default},function(_webAtomsWebControlsDistHtmlEditorCommandsHeadings){Headings=_webAtomsWebControlsDistHtmlEditorCommandsHeadings.default},function(_webAtomsWebControlsDistHtmlEditorCommandsChangeColor){ChangeColor=_webAtomsWebControlsDistHtmlEditorCommandsChangeColor.default},function(_webAtomsWebControlsDistHtmlEditorCommandsChangeFont){ChangeFont=_webAtomsWebControlsDistHtmlEditorCommandsChangeFont.default},function(_webAtomsWebControlsDistHtmlEditorCommandsChangeFontSize){ChangeFontSize=_webAtomsWebControlsDistHtmlEditorCommandsChangeFontSize.default},function(_webAtomsWebControlsDistHtmlEditorCommandsNumberedList){NumberedList=_webAtomsWebControlsDistHtmlEditorCommandsNumberedList.default},function(_webAtomsWebControlsDistHtmlEditorCommandsUnorderedList){UnorderedList=_webAtomsWebControlsDistHtmlEditorCommandsUnorderedList.default},function(_webAtomsWebControlsDistHtmlEditorCommandsIndentLess){IndentLess=_webAtomsWebControlsDistHtmlEditorCommandsIndentLess.default},function(_webAtomsWebControlsDistHtmlEditorCommandsIndentMore){IndentMore=_webAtomsWebControlsDistHtmlEditorCommandsIndentMore.default},function(_webAtomsWebControlsDistHtmlEditorCommandsAddLink){AddLink=_webAtomsWebControlsDistHtmlEditorCommandsAddLink.default},function(_webAtomsWebControlsDistHtmlEditorCommandsUnlink){Unlink=_webAtomsWebControlsDistHtmlEditorCommandsUnlink.default},function(_webAtomsWebControlsDistHtmlEditorCommandsRemoveFormat){RemoveFormat=_webAtomsWebControlsDistHtmlEditorCommandsRemoveFormat.default},function(_webAtomsWebControlsDistHtmlEditorCommandsSource){Source=_webAtomsWebControlsDistHtmlEditorCommandsSource.default},function(_webAtomsWebControlsDistBasicUploadEvent){UploadEvent=_webAtomsWebControlsDistBasicUploadEvent.default},function(_servicesFilesLocalFileService){LocalFileService=_servicesFilesLocalFileService.default;acceptDocumentAndMedia=_servicesFilesLocalFileService.acceptDocumentAndMedia},function(_webAtomsCoreDistWebControlsAtomControl){AtomControl=_webAtomsCoreDistWebControlsAtomControl.AtomControl},function(_webAtomsCoreDistCoreInjectProperty){InjectProperty=_webAtomsCoreDistCoreInjectProperty.default},function(_webAtomsCoreDistCoreStringHelper){StringHelper=_webAtomsCoreDistCoreStringHelper.StringHelper},function(_webAtomsCoreDistStyleStyled){styled=_webAtomsCoreDistStyleStyled.default},function(_webAtomsCoreDistWebCoreAtomUI){descendentElementIterator=_webAtomsCoreDistWebCoreAtomUI.descendentElementIterator}],execute:function(){link=document.createElement("link");link.href="https://cdn.jsdelivr.net/npm/remixicon@2.5.0/fonts/remixicon.css";link.rel="preload";link.as="style";link.onload=()=>{link.onload=null;link.rel="stylesheet"};document.head.appendChild(link);onAttachImage=ce=>__awaiter(void 0,void 0,void 0,(function*(){var _a,_b;const c=AtomControl.from(ce.target);if(!((_b=(_a=ce.detail)===null||_a===void 0?void 0:_a.files)===null||_b===void 0?void 0:_b.length)){return}const file=ce.detail.files[0];file.inline=true;c.executeCommand("insertHTML",void 0,`<div><img data-content="data-url" data-content-id=${file.appFileID} src="${file.url}" style='max-height: 700px;'/></div>`)}));onAttachInlineImage=ce=>__awaiter(void 0,void 0,void 0,(function*(){var _c,_d;const c=AtomControl.from(ce.target);if(!((_d=(_c=ce.detail)===null||_c===void 0?void 0:_c.files)===null||_d===void 0?void 0:_d.length)){return}const file=ce.detail.files[0];const reader=new FileReader;reader.onload=()=>{c.executeCommand("insertHTML",void 0,`<div><img\n data-content="data-url"\n src="${reader.result}" style='max-height: 700px;'/>\n </div>`)};reader.readAsDataURL(file)}));css=styled.css`
1130
1130
  & > [data-element=editor] {
1131
1131
  background-color: white;
1132
1132
  color: black;
1133
1133
  }
1134
- `.installLocal();_export("MailHtmlEditor",MailHtmlEditor=class MailHtmlEditor extends InlineHtmlEditor{onPasteEvent(e){if(e.clipboardData.files.length){e.preventDefault();e.stopPropagation();this.app.runAsync((()=>__awaiter(this,void 0,void 0,(function*(){const files=yield this.localFileService.uploadWithProgress(Array.from(e.clipboardData.files));for(const file of files){this.executeCommand("insertHTML",void 0,`<div><img data-content="data-url" data-content-id=${file.appFileID} src="${file.url}" style='max-height: 700px;'/></div>`)}this.element.dispatchEvent(new CustomEvent("filesAvailable",{detail:{files,extra:"none"},bubbles:true}))}))));return}super.onPasteEvent(e)}preCreate(){super.preCreate();this.element.className=css;this.sanitizeHtml=node=>{const images=Array.from(node.querySelectorAll(`img[data-content-id]`));for(const image of images){image.setAttribute("src",`cid:${image.getAttribute("data-content-id")}`)}};this.bindEvent(this.element,"contentReady",(()=>this.updateTemplateContent()));this.bindEvent(this.element,"click",(e=>this.onClick(e)))}onClick(e){let target=e.target;let editorAction;while(target){editorAction||(editorAction=target.getAttribute("data-editor-action"));if(target.tagName==="A"){e.preventDefault();e.stopImmediatePropagation();break}target=target.parentElement}if(editorAction){e.target.dispatchEvent(new CustomEvent(StringHelper.fromHyphenToCamel(editorAction),{detail:editorAction,bubbles:true,cancelable:true}))}}updateTemplateContent(){}});__decorate([InjectProperty,__metadata("design:type",LocalFileService)],MailHtmlEditor.prototype,"localFileService",void 0)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/controls/html/InlineHtmlEditorWithToolbar");System.register(["@web-atoms/core/dist/style/styled"],(function(_export,_context){"use strict";var styled;return{setters:[function(_webAtomsCoreDistStyleStyled){styled=_webAtomsCoreDistStyleStyled.default}],execute:function(){styled.css`
1134
+ `.installLocal();_export("MailHtmlEditor",MailHtmlEditor=class MailHtmlEditor extends InlineHtmlEditor{constructor(){super(...arguments);this.autofocus=false}onPasteEvent(e){if(e.clipboardData.files.length){e.preventDefault();e.stopPropagation();this.app.runAsync((()=>__awaiter(this,void 0,void 0,(function*(){const files=yield this.localFileService.uploadWithProgress(Array.from(e.clipboardData.files));for(const file of files){this.executeCommand("insertHTML",void 0,`<div><img data-content="data-url" data-content-id=${file.appFileID} src="${file.url}" style='max-height: 700px;'/></div>`)}this.element.dispatchEvent(new CustomEvent("filesAvailable",{detail:{files,extra:"none"},bubbles:true}))}))));return}super.onPasteEvent(e)}preCreate(){super.preCreate();this.element.className=css;this.sanitizeHtml=node=>{const images=Array.from(node.querySelectorAll(`img[data-content-id]`));for(const image of images){image.setAttribute("src",`cid:${image.getAttribute("data-content-id")}`)}};this.bindEvent(this.element,"contentReady",(()=>this.updateTemplateContent()));this.bindEvent(this.element,"click",(e=>this.onClick(e)))}onClick(e){let target=e.target;let editorAction;while(target){editorAction||(editorAction=target.getAttribute("data-editor-action"));if(target.tagName==="A"){e.preventDefault();e.stopImmediatePropagation();break}target=target.parentElement}if(editorAction){e.target.dispatchEvent(new CustomEvent(StringHelper.fromHyphenToCamel(editorAction),{detail:editorAction,bubbles:true,cancelable:true}))}}updateTemplateContent(){var _a;if(!this.autofocus){return}for(const child of descendentElementIterator(this.editor)){let e=child;if(e.isContentEditable){while(((_a=e.children)===null||_a===void 0?void 0:_a.length)>0){e=e.children[0]}if(e.tagName==="BR"){e=e.parentElement}setTimeout((()=>{const s=window.getSelection();const r=document.createRange();r.setStart(e,1);r.setEnd(e,1);s.removeAllRanges();s.addRange(r)}),1e3);return}}}});__decorate([InjectProperty,__metadata("design:type",LocalFileService)],MailHtmlEditor.prototype,"localFileService",void 0)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/controls/html/InlineHtmlEditorWithToolbar");System.register(["@web-atoms/core/dist/style/styled"],(function(_export,_context){"use strict";var styled;return{setters:[function(_webAtomsCoreDistStyleStyled){styled=_webAtomsCoreDistStyleStyled.default}],execute:function(){styled.css`
1135
1135
  display: inline-grid;
1136
1136
  grid-template-rows: 1fr auto;
1137
1137
  grid-template-columns: 1fr 40px;
@@ -1319,7 +1319,7 @@ and limitations under the License.
1319
1319
  max-height: 20px;
1320
1320
  }
1321
1321
  }
1322
- `.installGlobal("[data-html-editor=email-editor]");_export("default",ComposeMailPage=class ComposeMailPage extends PopupWindowPage{init(){var _a,_b,_c;return __awaiter(this,void 0,void 0,(function*(){if(this.parameters.subject){this.title="Reply: "+this.parameters.subject}else{this.title="Compose New"}this.model=(_a=this.parameters.model)!==null&&_a!==void 0?_a:Email.create({subject:(_b=this.parameters.subject)!==null&&_b!==void 0?_b:"",textBody:"",htmlBody:`<div contentEditable="true"><p><br/><br/><br/><br/><br/></p></div>`,recipients:[],attachments:[]});if(this.parameters.social){const senderName=this.parameters.mailbox.emailAddress.name;const senderEmail=this.parameters.mailbox.emailAddress.emailAddress;this.model.htmlBody=DomToString(SocialTemplate.simple({senderEmail,senderName}))}if(this.parameters.emailAddress){this.model.recipients.add(EmailRecipient.create({emailAddressText:this.parameters.emailAddress,emailAddressID:(_c=this.parameters.emailAddressID)!==null&&_c!==void 0?_c:void 0}))}this.renderer=XNode.create("div",null,XNode.create(Form,null,XNode.create(HorizontalFormField,{label:"To:"},XNode.create(EmailRecipientChips,{items:this.model.recipients})),XNode.create(FormField,{label:""},XNode.create(TitleEditor,{placeholder:"Subject",capitalize:"words",value:Bind.twoWaysImmediate((()=>this.model.subject))})),XNode.create(InlineHtmlEditorWithToolbar,{"data-html-editor":"email-editor",presenter:Bind.presenter((c=>this.editor=c)),content:this.model.htmlBody,"style-min-height":"200px"}),XNode.create(AtomRepeater,{items:this.model.attachments,itemRenderer:item=>XNode.create("div",{"data-layout":"row"},XNode.create("span",{text:item.name}))}),XNode.create("div",{"data-layout":"sticky-command-row"},XNode.create("button",{"data-click-event":"send-email",text:"Send"}),XNode.create("button",{"data-click-event":"save-email",text:"Save"}))))}))}filesAvailable({files,extra}){var _a;var _b;return __awaiter(this,void 0,void 0,(function*(){(_a=(_b=this.model).attachments)!==null&&_a!==void 0?_a:_b.attachments=[];for(const iterator of files){this.model.attachments.add(AppFile.create({appFileID:iterator.appFileID,name:iterator.file.name,contentType:iterator.file.type,contentDisposition:iterator.inline?"inline":"attachment",contentID:iterator.inline?iterator.appFileID.toString():void 0}))}}))}sendEmail(){return __awaiter(this,void 0,void 0,(function*(){if(!this.model.recipients.length){throw new Error("No recipients specified")}if(!this.model.subject){throw new Error("No subject specified")}const{html,text}=this.editor.htmlTextContent;this.model.htmlBody=html;this.model.textBody=text;if(!this.model.textBody){throw new Error("Email is empty")}this.model.senderID=this.parameters.mailboxID;this.model.status="scheduled";this.model.dateSent=DateTime.now;yield this.mailService.send(this.model)}))}saveEmail(){return __awaiter(this,void 0,void 0,(function*(){yield this.mailService.send(this.model)}))}});__decorate([InjectProperty,__metadata("design:type",MailService)],ComposeMailPage.prototype,"mailService",void 0);__decorate([Action({onEvent:"files-available"}),__metadata("design:type",Function),__metadata("design:paramtypes",[Object]),__metadata("design:returntype",Promise)],ComposeMailPage.prototype,"filesAvailable",null);__decorate([Action({onEvent:"send-email",close:true}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],ComposeMailPage.prototype,"sendEmail",null);__decorate([Action({onEvent:"save-email",close:true}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],ComposeMailPage.prototype,"saveEmail",null)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/web/page/mails/ComposeMailPage");System.register(["tslib","@web-atoms/core/dist/core/AtomDisposableList","@web-atoms/core/dist/core/types","@web-atoms/core/dist/di/DISingleton"],(function(_export,_context){"use strict";var __awaiter,__decorate,AtomDisposableList,UMD,DISingleton,SocketNamespace,io,cache,of,MailboxSocket;return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate},function(_webAtomsCoreDistCoreAtomDisposableList){AtomDisposableList=_webAtomsCoreDistCoreAtomDisposableList.AtomDisposableList},function(_webAtomsCoreDistCoreTypes){UMD=_webAtomsCoreDistCoreTypes.UMD},function(_webAtomsCoreDistDiDISingleton){DISingleton=_webAtomsCoreDistDiDISingleton.default}],execute:function(){cache=new Map;of=name=>__awaiter(void 0,void 0,void 0,(function*(){io!==null&&io!==void 0?io:io=(yield UMD.import("https://cdn.jsdelivr.net/npm/socket.io-client@4.6.0/dist/socket.io.min.js")).io;const value=io(name,{transports:["websocket"]});yield new Promise(((resolve,reject)=>{value.on("connect",resolve)}));return value}));SocketNamespace=class SocketNamespace{static for(ns){let sn=cache.get(ns);if(!sn){sn=new SocketNamespace(ns);cache.set(ns,sn)}return sn}constructor(ns){this.ns=ns;this.rooms=new Map}connect(roomName,events){var _a;return __awaiter(this,void 0,void 0,(function*(){(_a=this.socket)!==null&&_a!==void 0?_a:this.socket=yield this.init();let room=this.rooms.get(roomName);if(!room){room=new Set;this.rooms.set(roomName,room);this.socket.emit("join",roomName)}const disposables=new AtomDisposableList;for(const key in events){if(Object.prototype.hasOwnProperty.call(events,key)){const element=events[key];const handler=(...a)=>{var _a;return(_a=element(...a))===null||_a===void 0?void 0:_a.catch(console.error)};room.add(handler);this.socket.on(key,handler);disposables.add((()=>{this.socket.off(key,handler);room.delete(handler)}))}}disposables.add((()=>this.clear(roomName)));return disposables}))}clear(roomName){const room=this.rooms.get(roomName);if(room.size===0){this.rooms.delete(roomName);this.socket.emit("leave",roomName)}}init(){const init=()=>__awaiter(this,void 0,void 0,(function*(){const ns=yield of("/"+this.ns);return ns}));const value=init();Object.defineProperty(this,"init",{value:()=>value});return value}};_export("MailboxSocket",MailboxSocket=class MailboxSocket{join(room,events){return __awaiter(this,void 0,void 0,(function*(){const disposables=new AtomDisposableList;const ns=SocketNamespace.for("mailbox");ns.connect(room,events).then((v=>disposables.add(v)),console.error);return disposables}))}});_export("MailboxSocket",MailboxSocket=__decorate([DISingleton()],MailboxSocket))}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/services/socket/sockets");System.register(["tslib","@web-atoms/core/dist/core/XNode","@web-atoms/core/dist/style/styled"],(function(_export,_context){"use strict";var __rest,XNode,styled,toggleDetails,setEventHandler;function LimitedText(_a,...nodes){var{text="",height=100}=_a,a=__rest(_a,["text","height"]);setEventHandler===null||setEventHandler===void 0?void 0:setEventHandler();const h=typeof height==="number"?`${height}px`:height;return XNode.create("div",Object.assign({"data-mode":"collapsed","data-max-height":h,"style-max-height":h,"data-limited-text":"limited-text"},a),text&&XNode.create("p",{text}),...nodes,XNode.create("div",{"style-top":h,"data-element":"more"},XNode.create("button",{class:"fa-solid fa-angles-up"})))}_export("default",LimitedText);return{setters:[function(_tslib){__rest=_tslib.__rest},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_webAtomsCoreDistStyleStyled){styled=_webAtomsCoreDistStyleStyled.default}],execute:function(){styled.css`
1322
+ `.installGlobal("[data-html-editor=email-editor]");_export("default",ComposeMailPage=class ComposeMailPage extends PopupWindowPage{init(){var _a,_b,_c;return __awaiter(this,void 0,void 0,(function*(){if(this.parameters.subject){this.title="Reply: "+this.parameters.subject}else{this.title="Compose New"}this.model=(_a=this.parameters.model)!==null&&_a!==void 0?_a:Email.create({subject:(_b=this.parameters.subject)!==null&&_b!==void 0?_b:"",textBody:"",htmlBody:`<div contentEditable="true"><p><br/><br/><br/><br/><br/></p></div>`,recipients:[],attachments:[]});if(this.parameters.social){const senderName=this.parameters.mailbox.emailAddress.name;const senderEmail=this.parameters.mailbox.emailAddress.emailAddress;this.model.htmlBody=DomToString(SocialTemplate.simple({senderEmail,senderName}))}if(this.parameters.emailAddress){this.model.recipients.add(EmailRecipient.create({emailAddressText:this.parameters.emailAddress,emailAddressID:(_c=this.parameters.emailAddressID)!==null&&_c!==void 0?_c:void 0}))}this.renderer=XNode.create("div",null,XNode.create(Form,null,XNode.create(HorizontalFormField,{label:"To:"},XNode.create(EmailRecipientChips,{items:this.model.recipients})),XNode.create(FormField,{label:""},XNode.create(TitleEditor,{placeholder:"Subject",capitalize:"words",value:Bind.twoWaysImmediate((()=>this.model.subject))})),XNode.create(InlineHtmlEditorWithToolbar,{autofocus:true,"data-html-editor":"email-editor",presenter:Bind.presenter((c=>this.editor=c)),content:this.model.htmlBody,"style-min-height":"200px"}),XNode.create(AtomRepeater,{items:this.model.attachments,itemRenderer:item=>XNode.create("div",{"data-layout":"row"},XNode.create("span",{text:item.name}))}),XNode.create("div",{"data-layout":"sticky-command-row"},XNode.create("button",{"data-click-event":"send-email",text:"Send"}),XNode.create("button",{"data-click-event":"save-email",text:"Save"}))))}))}filesAvailable({files,extra}){var _a;var _b;return __awaiter(this,void 0,void 0,(function*(){(_a=(_b=this.model).attachments)!==null&&_a!==void 0?_a:_b.attachments=[];for(const iterator of files){this.model.attachments.add(AppFile.create({appFileID:iterator.appFileID,name:iterator.file.name,contentType:iterator.file.type,contentDisposition:iterator.inline?"inline":"attachment",contentID:iterator.inline?iterator.appFileID.toString():void 0}))}}))}sendEmail(){return __awaiter(this,void 0,void 0,(function*(){if(!this.model.recipients.length){throw new Error("No recipients specified")}if(!this.model.subject){throw new Error("No subject specified")}const{html,text}=this.editor.htmlTextContent;this.model.htmlBody=html;this.model.textBody=text;if(!this.model.textBody){throw new Error("Email is empty")}this.model.senderID=this.parameters.mailboxID;this.model.status="scheduled";this.model.dateSent=DateTime.now;yield this.mailService.send(this.model)}))}saveEmail(){return __awaiter(this,void 0,void 0,(function*(){yield this.mailService.send(this.model)}))}});__decorate([InjectProperty,__metadata("design:type",MailService)],ComposeMailPage.prototype,"mailService",void 0);__decorate([Action({onEvent:"files-available"}),__metadata("design:type",Function),__metadata("design:paramtypes",[Object]),__metadata("design:returntype",Promise)],ComposeMailPage.prototype,"filesAvailable",null);__decorate([Action({onEvent:"send-email",close:true}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],ComposeMailPage.prototype,"sendEmail",null);__decorate([Action({onEvent:"save-email",close:true}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],ComposeMailPage.prototype,"saveEmail",null)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/web/page/mails/ComposeMailPage");System.register(["tslib","@web-atoms/core/dist/core/AtomDisposableList","@web-atoms/core/dist/core/types","@web-atoms/core/dist/di/DISingleton"],(function(_export,_context){"use strict";var __awaiter,__decorate,AtomDisposableList,UMD,DISingleton,SocketNamespace,io,cache,of,MailboxSocket;return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate},function(_webAtomsCoreDistCoreAtomDisposableList){AtomDisposableList=_webAtomsCoreDistCoreAtomDisposableList.AtomDisposableList},function(_webAtomsCoreDistCoreTypes){UMD=_webAtomsCoreDistCoreTypes.UMD},function(_webAtomsCoreDistDiDISingleton){DISingleton=_webAtomsCoreDistDiDISingleton.default}],execute:function(){cache=new Map;of=name=>__awaiter(void 0,void 0,void 0,(function*(){io!==null&&io!==void 0?io:io=(yield UMD.import("https://cdn.jsdelivr.net/npm/socket.io-client@4.6.0/dist/socket.io.min.js")).io;const value=io(name,{transports:["websocket"]});yield new Promise(((resolve,reject)=>{value.on("connect",resolve)}));return value}));SocketNamespace=class SocketNamespace{static for(ns){let sn=cache.get(ns);if(!sn){sn=new SocketNamespace(ns);cache.set(ns,sn)}return sn}constructor(ns){this.ns=ns;this.rooms=new Map}connect(roomName,events){var _a;return __awaiter(this,void 0,void 0,(function*(){(_a=this.socket)!==null&&_a!==void 0?_a:this.socket=yield this.init();let room=this.rooms.get(roomName);if(!room){room=new Set;this.rooms.set(roomName,room);this.socket.emit("join",roomName)}const disposables=new AtomDisposableList;for(const key in events){if(Object.prototype.hasOwnProperty.call(events,key)){const element=events[key];const handler=(...a)=>{var _a;return(_a=element(...a))===null||_a===void 0?void 0:_a.catch(console.error)};room.add(handler);this.socket.on(key,handler);disposables.add((()=>{this.socket.off(key,handler);room.delete(handler)}))}}disposables.add((()=>this.clear(roomName)));return disposables}))}clear(roomName){const room=this.rooms.get(roomName);if(room.size===0){this.rooms.delete(roomName);this.socket.emit("leave",roomName)}}init(){const init=()=>__awaiter(this,void 0,void 0,(function*(){const ns=yield of("/"+this.ns);return ns}));const value=init();Object.defineProperty(this,"init",{value:()=>value});return value}};_export("MailboxSocket",MailboxSocket=class MailboxSocket{join(room,events){return __awaiter(this,void 0,void 0,(function*(){const disposables=new AtomDisposableList;const ns=SocketNamespace.for("mailbox");ns.connect(room,events).then((v=>disposables.add(v)),console.error);return disposables}))}});_export("MailboxSocket",MailboxSocket=__decorate([DISingleton()],MailboxSocket))}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/services/socket/sockets");System.register(["tslib","@web-atoms/core/dist/core/XNode","@web-atoms/core/dist/style/styled"],(function(_export,_context){"use strict";var __rest,XNode,styled,toggleDetails,setEventHandler;function LimitedText(_a,...nodes){var{text="",height=100}=_a,a=__rest(_a,["text","height"]);setEventHandler===null||setEventHandler===void 0?void 0:setEventHandler();const h=typeof height==="number"?`${height}px`:height;return XNode.create("div",Object.assign({"data-mode":"collapsed","data-max-height":h,"style-max-height":h,"data-limited-text":"limited-text"},a),text&&XNode.create("p",{text}),...nodes,XNode.create("div",{"style-top":h,"data-element":"more"},XNode.create("button",{class:"fa-solid fa-angles-up"})))}_export("default",LimitedText);return{setters:[function(_tslib){__rest=_tslib.__rest},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_webAtomsCoreDistStyleStyled){styled=_webAtomsCoreDistStyleStyled.default}],execute:function(){styled.css`
1323
1323
  position: relative;
1324
1324
  overflow: hidden;
1325
1325
  contain: content;
@@ -1657,7 +1657,7 @@ and limitations under the License.
1657
1657
 
1658
1658
  }
1659
1659
  }
1660
- `.installLocal();id=1;fixLinks=()=>{const mID=`m_id_${id++}`;setTimeout((x=>{const m=document.getElementById(x);if(!m){return}m.querySelectorAll("a").forEach((a=>a.target="_blank"))}),100,mID);return mID};_export("default",ConversationPage=class ConversationPage extends ContentPage{constructor(){super(...arguments);this.mails=[];this.search="";this.version=1}init(){return __awaiter(this,void 0,void 0,(function*(){this.element.className=css;const mb=this.parameters;const name=mb.emailAddress.name;const emailAddress=mb.emailAddress.emailAddress;const title=`${name} <${emailAddress}>`;if(isMobileView){this.title=title;this.headerRenderer=()=>XNode.create("div",{"data-layout":"row"},XNode.create("input",{value:Bind.twoWaysImmediate((()=>this.search)),type:"search",placeholder:"Search"}))}else{this.titleRenderer=()=>XNode.create("div",{"data-layout":"row"},XNode.create("input",{value:Bind.twoWaysImmediate((()=>this.search)),type:"search",placeholder:"Search"}),XNode.create("span",{text:title}))}this.registerDisposable(yield this.resolve(MailboxSocket).join(mb.mailboxID.toString(),{newMail:()=>{this.version++}}));this.renderer=XNode.create("div",null,XNode.create(AtomRepeater,Object.assign({"data-layout":"vertical-flex",style:"flex-direction: column-reverse",presenter:Bind.presenter((c=>this.mailsRepeater=c)),items:this.mails},InfiniteRepeater.pagedItems((start=>(c,e,cancelToken)=>this.conversationService.list({start,size:10,search:this.search,mailboxID:mb.mailboxID,emailAddressID:mb.emailAddressID,version:this.version,cancelToken}))),{itemRenderer:thread=>{var _a,_b,_c,_d,_e,_f;const item=thread.email;const internalDate=(_b=(_a=item.dateSent)!==null&&_a!==void 0?_a:item.dateReceived)!==null&&_b!==void 0?_b:item.dateCreated;const sent=item.senderID===thread.mailboxID;const remaining=DateTime.from((_c=item.dateSent)!==null&&_c!==void 0?_c:DateTime.today).diff(DateTime.now);const isSending=thread.email.status==="scheduled"&&remaining.totalSeconds>3;if(remaining.totalSeconds>0){setTimeout((()=>this.mailsRepeater.refreshItem(thread)),2e3)}return XNode.create("div",{class:itemCss,"data-sent":sent},XNode.create("div",{"data-layout":"row"},XNode.create("div",{"data-flex":"stretch-full",text:item.subject}),item.received?XNode.create("div",null):item.userID!==SocialMailApp.user.userID&&XNode.create("div",{"style-max-width":"20ch",title:(_d=item.senderUser)===null||_d===void 0?void 0:_d.displayName,text:(_e=item.senderUser)===null||_e===void 0?void 0:_e.displayName}),XNode.create("div",{text:DateFormats.relative.short(internalDate),title:DateFormats.withWeekDayAndTime(internalDate)}),XNode.create("i",{"data-click-event":"mail-options",class:"fa-light fa-square-ellipsis-vertical",title:"Options"})),XNode.create(LimitedText,{height:"40vh"},XNode.create("div",Object.assign({class:"message"},renderMail(thread)))),((_f=item.attachments)===null||_f===void 0?void 0:_f.length)&&XNode.create("div",{class:"attachments","data-layout":"flex-wrap-padding"},...item.attachments.map(FilePreview)),thread.email.tags&&XNode.create("div",{"data-layout":"row"},...thread.email.tags.split(",").map((x=>XNode.create("span",{text:`#${x.startsWith("#")?x.substring(1):x}`})))),!sent&&XNode.create("div",{"data-layout":"row"},XNode.create("i",{"data-click-event":"reply-email",class:"fas fa-reply",title:"Reply"}),XNode.create("i",{"data-click-event":"reply-all-email",class:"fa-solid fa-reply-all"})),isSending&&XNode.create("div",{"data-layout":"command-row","style-padding-left":"20px"},XNode.create("span",{text:`Sending in (${Math.ceil(remaining.totalSeconds)} sec) `}),XNode.create("button",{"data-click-event":"stop-email","data-layout":"stop-icon-button","style-margin-left":"20px"},XNode.create("i",{class:"fas fa-stop"}),"Stop")))}})));this.actionRenderer=()=>XNode.create(PopupActionButton,{icon:"fas fa-bars"},XNode.create("div",{"data-layout":"vertical-flex","style-width":"200px"},this.parameters.blocked?XNode.create(MenuItem,{"data-click-event":"unblock-sender",icon:"fas fa-badge-check",label:"Unblock Sender"}):XNode.create(MenuItem,{"data-click-event":"block-sender",icon:"fas fa-ban",label:"Block Sender"})));this.footerRenderer=()=>XNode.create(MiniComposeBox,{mailboxContact:this.parameters})}))}onClick(a,e){var _a,_b,_c;return __awaiter(this,void 0,void 0,(function*(){const anchor=e.composed?e.composedPath().find((x=>x.tagName==="A")):AncestorEnumerator.find(e.target,(x=>x.tagName==="A"));if(!anchor){return}const href=anchor.getAttribute("href");if(!/^mailto\:/.test(href)){return}e.preventDefault();const url=new URL(href);const to=url.pathname;const subject=(_a=url.searchParams.get("subject"))!==null&&_a!==void 0?_a:"";const body=(_b=url.searchParams.get("body"))!==null&&_b!==void 0?_b:"";const inReplyTo=(_c=url.searchParams.get("inReplyTo"))!==null&&_c!==void 0?_c:"";const{item}=AtomRepeater.itemFromElement(e.target);const{email:{parentID,headerMessageID}}=item;const recipients=[EmailRecipient.create({emailAddressText:to})];const child=Email.create({senderID:this.parameters.mailboxID,subject,headers:JSON.stringify({inReplyTo}),parentID:inReplyTo===headerMessageID?parentID:null,received:false,recipients,htmlBody:`<div contentEditable="true">${body}</div>`});yield PageNavigator.pushPageForResult(ComposeMailPage,{mailboxID:child.senderID,mailbox:this.parameters.mailbox,model:child})}))}onEmailScheduled(email){if(email.senderID!==this.parameters.mailboxID){return}const{emailID}=email;const{emailAddressID,mailboxID}=this.parameters;this.mails.insert(0,MailboxContactEmail.create({emailID,emailAddressID,mailboxID,email}))}stopEmail(thread){return __awaiter(this,void 0,void 0,(function*(){yield this.conversationService.stopEmail(thread)}))}mailOptions(thread,ce){var _a;return __awaiter(this,void 0,void 0,(function*(){void InlinePopupControl.showPopup(ce.target,XNode.create("div",{"data-click-event":"none","data-click-animate":"none"},XNode.create(MenuItem,{eventClick:()=>PageNavigator.pushPage(MailDetailPage,thread.email),icon:"fas fa-eye",label:"Details"}),XNode.create(MenuItem,{href:`/api/files/download/${thread.email.originalFileID}`,icon:"fas fa-download",label:"Download"}),XNode.create(MenuItem,{"data-click-event":"open-logs",icon:"fa-regular fa-clock-rotate-left",label:"Logs"}),((_a=thread.email)===null||_a===void 0?void 0:_a.status)==="draft"&&XNode.create(MenuItem,{"data-click-event":"delete-draft",icon:"fa-regular fa-clock-rotate-left",label:"Delete Draft"})))}))}openLogs({emailID}){return __awaiter(this,void 0,void 0,(function*(){PageNavigator.pushPage(LogsPage,{emailID})}))}replyEmail({email},ce){var _a,_b,_c;return __awaiter(this,void 0,void 0,(function*(){const parse=JSON.parse(email.headers);const emailAddressText=((_b=(_a=parse===null||parse===void 0?void 0:parse.replyTo)===null||_a===void 0?void 0:_a[0])!==null&&_b!==void 0?_b:this.parameters.emailAddress.emailAddress).toLocaleLowerCase();const name=email.senderName;const parentID=(_c=email.parentID)!==null&&_c!==void 0?_c:email.emailID;const recipients=[EmailRecipient.create({name,emailAddressText})];if(/all/i.test(ce.type)){for(const{name:rName,emailAddress:{emailAddress}}of email.recipients){if(recipients.some((er=>er.emailAddress.emailAddress===emailAddress))){continue}recipients.push(EmailRecipient.create({name:rName,emailAddressText:emailAddress}))}}const subject=/^re\s?\:/i.test(email.subject)?email.subject:`Re: ${email.subject}`;const child=Email.create({senderID:this.parameters.mailboxID,subject,parentID,received:false,recipients,htmlBody:`<div contentEditable="true"><p><br/><br/><br/><br/><br/></p></div>`});yield PageNavigator.pushPageForResult(ComposeMailPage,{mailboxID:child.senderID,mailbox:this.parameters.mailbox,model:child})}))}blockSender(){return __awaiter(this,void 0,void 0,(function*(){yield this.conversationService.block(this.parameters)}))}unblockSender(){return __awaiter(this,void 0,void 0,(function*(){yield this.conversationService.block(this.parameters)}))}deleteDraft(mce){return __awaiter(this,void 0,void 0,(function*(){yield this.conversationService.delete(mce.email);this.mails.remove(mce)}))}});__decorate([InjectProperty,__metadata("design:type",ConversationService)],ConversationPage.prototype,"conversationService",void 0);__decorate([Action({onEvent:"click"}),__metadata("design:type",Function),__metadata("design:paramtypes",[Object,PointerEvent]),__metadata("design:returntype",Promise)],ConversationPage.prototype,"onClick",null);__decorate([Action({onEvent:CommonEvents.onEmailScheduled}),__metadata("design:type",Function),__metadata("design:paramtypes",[Object]),__metadata("design:returntype",void 0)],ConversationPage.prototype,"onEmailScheduled",null);__decorate([Action({onEvent:"stop-email"}),__metadata("design:type",Function),__metadata("design:paramtypes",[Object]),__metadata("design:returntype",Promise)],ConversationPage.prototype,"stopEmail",null);__decorate([Action({onEvent:"mail-options"}),__metadata("design:type",Function),__metadata("design:paramtypes",[Object,CustomEvent]),__metadata("design:returntype",Promise)],ConversationPage.prototype,"mailOptions",null);__decorate([Action({onEvent:"open-logs"}),__metadata("design:type",Function),__metadata("design:paramtypes",[Object]),__metadata("design:returntype",Promise)],ConversationPage.prototype,"openLogs",null);__decorate([Action({onEvent:["reply-email","reply-all-email"]}),__metadata("design:type",Function),__metadata("design:paramtypes",[Object,CustomEvent]),__metadata("design:returntype",Promise)],ConversationPage.prototype,"replyEmail",null);__decorate([Action({onEvent:"block-sender",confirm:"Are you sure you want to block this sender?"}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],ConversationPage.prototype,"blockSender",null);__decorate([Action({onEvent:"unblock-sender",confirm:"Are you sure you want to unblock this sender?"}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],ConversationPage.prototype,"unblockSender",null);__decorate([Action({onEvent:"delete-draft",confirm:"Are you sure you want to delete this draft?"}),__metadata("design:type",Function),__metadata("design:paramtypes",[Object]),__metadata("design:returntype",Promise)],ConversationPage.prototype,"deleteDraft",null)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/web/page/mails/ConversationPage");System.register(["tslib","@web-atoms/web-controls/dist/mobile-app/MobileApp","../../../common/pages/mailboxes/services/MailboxService","@web-atoms/core/dist/core/InjectProperty","@web-atoms/core/dist/core/XNode","@web-atoms/web-controls/dist/basic/AtomRepeater","../../../common/controls/repeater/InfiniteRepeater","../../../common/NumberFormats","../../commands/AppCommands","@web-atoms/core/dist/core/Bind"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,PopupWindowPage,MailboxService,InjectProperty,XNode,AtomRepeater,InfiniteRepeater,toFileSize,AppCommands,Bind,ChooseMailboxPage;_export("default",void 0);return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsWebControlsDistMobileAppMobileApp){PopupWindowPage=_webAtomsWebControlsDistMobileAppMobileApp.PopupWindowPage},function(_commonPagesMailboxesServicesMailboxService){MailboxService=_commonPagesMailboxesServicesMailboxService.default},function(_webAtomsCoreDistCoreInjectProperty){InjectProperty=_webAtomsCoreDistCoreInjectProperty.default},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_webAtomsWebControlsDistBasicAtomRepeater){AtomRepeater=_webAtomsWebControlsDistBasicAtomRepeater.default},function(_commonControlsRepeaterInfiniteRepeater){InfiniteRepeater=_commonControlsRepeaterInfiniteRepeater.default},function(_commonNumberFormats){toFileSize=_commonNumberFormats.toFileSize},function(_commandsAppCommands){AppCommands=_commandsAppCommands.default},function(_webAtomsCoreDistCoreBind){Bind=_webAtomsCoreDistCoreBind.default}],execute:function(){_export("default",ChooseMailboxPage=class ChooseMailboxPage extends PopupWindowPage{constructor(){super(...arguments);this.mailboxes=[];this.search=""}init(){return __awaiter(this,void 0,void 0,(function*(){this.title="Open Mailbox";this.headerRenderer=()=>XNode.create("div",{"data-layout":"header-row"},XNode.create("input",{type:"search",value:Bind.twoWaysImmediate((()=>this.search))}));this.renderer=XNode.create("div",null,XNode.create(AtomRepeater,Object.assign({"data-layout":"list",items:this.mailboxes},InfiniteRepeater.pagedItems((start=>(c,e,cancelToken)=>this.mailboxService.list({search:this.search,cancelToken,start}))),{itemRenderer:item=>XNode.create("div",null,XNode.create("a",{"data-click-event":"route",href:AppCommands.openMailbox.displayRoute({id:item.mailboxID}),text:item.emailAddress.emailAddress}),XNode.create("span",{text:toFileSize(item.storage)}))})))}))}});__decorate([InjectProperty,__metadata("design:type",MailboxService)],ChooseMailboxPage.prototype,"mailboxService",void 0)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/web/page/mails/ChooseMailboxPage");System.register(["tslib","@web-atoms/core/dist/di/DISingleton","@web-atoms/core/dist/di/Inject","../../../../services/EntityService","../../../../model/model","@web-atoms/date-time/dist/DateTime","../../../../common/Sql","../../../../common/SocialMailApp","../../../../services/files/LocalFileService"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,DISingleton,Inject,EntityService,AppFile,User,DateTime,Sql,SocialMailApp,LocalFileService,hideActivityIndicator,CloudFileService;return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsCoreDistDiDISingleton){DISingleton=_webAtomsCoreDistDiDISingleton.default},function(_webAtomsCoreDistDiInject){Inject=_webAtomsCoreDistDiInject.Inject},function(_servicesEntityService){EntityService=_servicesEntityService.default},function(_modelModel){AppFile=_modelModel.AppFile;User=_modelModel.User},function(_webAtomsDateTimeDistDateTime){DateTime=_webAtomsDateTimeDistDateTime.default},function(_commonSql){Sql=_commonSql.Sql},function(_commonSocialMailApp){SocialMailApp=_commonSocialMailApp.default},function(_servicesFilesLocalFileService){LocalFileService=_servicesFilesLocalFileService.default}],execute:function(){hideActivityIndicator=true;CloudFileService=class CloudFileService{top(site=false){return __awaiter(this,void 0,void 0,(function*(){const userID=SocialMailApp.user.userID;let q=this.entityService.query(AppFile).where((x=>x.isFolder===true&&x.parentID===null&&x.path!==null));q=site?q.where((x=>x.contentType==="application/site")):q.where((x=>x.contentType==="folder"));const top=yield q.orderByDescending({userID},(p=>x=>x.userPins.some((s=>p.userID===s.userID)))).thenByDescending((x=>x.dateUpdated)).include((x=>x.creator)).toPagedList({size:3,count:false});return top.items}))}drives({start=0,size=50,search="",version=1,cancelToken}){return __awaiter(this,void 0,void 0,(function*(){const userID=SocialMailApp.user.userID;let q=this.entityService.query(AppFile).where((x=>x.isFolder===true&&x.parentID===null&&x.path!==null));if(search){q=q.where({search},(p=>x=>Sql.text.includes(x.creator.userName,p.search)))}return q.include((x=>x.creator)).orderByDescending({userID},(p=>x=>x.userPins.some((s=>p.userID===s.userID)))).thenByDescending((x=>x.fileSize)).toPagedList({start,size,cancelToken})}))}allTemplates(){return __awaiter(this,void 0,void 0,(function*(){const children=yield this.entityService.query(AppFile).where((x=>x.templates.some((c=>true)))).toArray();const roots=children.map((x=>x.path+"%"));const all=yield this.entityService.query(AppFile).where({roots},(p=>x=>Sql.text.likeAny(x.path,p.roots))).toArray();return all.filter((x=>!x.parentID))}))}getFile(id,cancelToken=null){return __awaiter(this,void 0,void 0,(function*(){const folder=yield this.entityService.query(AppFile).where({id},(p=>x=>x.appFileID===p.id)).firstOrDefault({cancelToken});return folder}))}getFolder(id,cancelToken=null){return __awaiter(this,void 0,void 0,(function*(){const folder=yield this.entityService.query(AppFile).where({id},(p=>x=>x.appFileID===p.id)).include((x=>x.creator)).include((x=>x.children)).firstOrDefault({cancelToken});if(folder.children){folder.children.remove((x=>!x.isFolder))}else{folder.children=[]}return folder}))}root({id,templates=false,cancelToken=null}){return __awaiter(this,void 0,void 0,(function*(){if(templates){const children=yield this.entityService.query(AppFile).where((x=>x.templates.some((c=>true)))).toArray({cancelToken});const root=AppFile.create({name:"Templates",isFolder:true,appFileID:0,creator:User.create({}),children});return root}return yield this.entityService.query(AppFile).where({id},(p=>x=>x.appFileID===p.id&&x.isDeleted===false)).include((x=>x.creator)).include((x=>x.children)).firstOrDefault({cancelToken})}))}rootFolders(){return __awaiter(this,void 0,void 0,(function*(){return this.entityService.query(AppFile).where((x=>x.isFolder===true&&x.parentID===null&&x.path!==null)).include((x=>x.creator)).toArray()}))}createFolder({name,parentID}){return __awaiter(this,void 0,void 0,(function*(){const dateCreated=DateTime.now;const r=yield this.entityService.save(AppFile.create({name,parentID,isFolder:true,contentType:"folder",dateCreated,dateUpdated:dateCreated}));return this.entityService.query(AppFile).where({id:r.appFileID},(p=>x=>x.appFileID===p.id)).include((x=>x.creator)).firstOrDefault()}))}expand(folder,showDeleted=false){return __awaiter(this,void 0,void 0,(function*(){const parentID=folder.appFileID;const files=yield this.entityService.query(AppFile).where({parentID,showDeleted},(p=>x=>x.parentID===p.parentID&&x.isFolder===true&&x.isDeleted===p.showDeleted)).toArray({hideActivityIndicator});const{children}=folder;for(const iterator of files){if(children.some((c=>c.appFileID===iterator.appFileID))){continue}children.add(iterator)}}))}files({search="",accept="",folder,cancelToken,showDeleted=false,showFolder=true}){var _a,_b;return __awaiter(this,void 0,void 0,(function*(){const parentID=folder===null||folder===void 0?void 0:folder.appFileID;if(!parentID){return folder===null||folder===void 0?void 0:folder.children}let q=this.entityService.query(AppFile).where({parentID,showDeleted},(p=>x=>x.parentID===p.parentID&&x.isDeleted===p.showDeleted));if(search){if(!/\%/.test(search)){search=search+"%"}q=q.where({search},(p=>x=>Sql.text.like(x.name,p.search)))}if(accept){const contentTypes=accept.split(/\,/g).map((x=>x.replace("*","%").trim())).filter((x=>x));q=q.where({contentTypes},(p=>x=>x.isFolder||Sql.text.iLikeAny(x.contentType,p.contentTypes)))}if(!showFolder){q=q.where((x=>x.isFolder===false)).orderBy((x=>x.name))}else{q=q.orderByDescending((x=>x.isFolder)).thenBy((x=>x.name))}const files=yield q.toArray({cancelToken});const results=[];for(const iterator of files){if(!iterator.isFolder){if(accept&&iterator.parentID===folder.appFileID){const children=(_a=folder.children)!==null&&_a!==void 0?_a:folder.children=[];if(!children.some((f=>f.appFileID===iterator.appFileID))){children.add(iterator)}}results.push(iterator);continue}const fx=folder.children.find((f=>f.appFileID===iterator.appFileID));if(fx){results.push(fx);fx.fileSize=iterator.fileSize;continue}(_b=iterator.children)!==null&&_b!==void 0?_b:iterator.children=[];folder.children.add(iterator);results.push(iterator)}return results}))}children(parentID,name,sha256){return this.entityService.query(AppFile,"children",parentID,name,sha256)}saveFile(fm){return __awaiter(this,void 0,void 0,(function*(){const{appFileID,content,parentID,folder}=fm;return this.localFileService.uploadFile(content,{appFileID,parentID,folder})}))}save(file){return __awaiter(this,void 0,void 0,(function*(){const c=this.entityService.cloner(file);yield this.entityService.save(c.copy);return file}))}delete(files){return __awaiter(this,void 0,void 0,(function*(){files=files.map((({appFileID})=>AppFile.create({appFileID,$deleted:true})));yield this.entityService.save(files)}))}};__decorate([Inject,__metadata("design:type",EntityService)],CloudFileService.prototype,"entityService",void 0);__decorate([Inject,__metadata("design:type",LocalFileService)],CloudFileService.prototype,"localFileService",void 0);CloudFileService=__decorate([DISingleton()],CloudFileService);_export("default",CloudFileService)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/web/page/files/service/CloudFileService");System.register(["tslib","@web-atoms/core/dist/core/XNode","@web-atoms/core/dist/web/controls/AtomControl","@web-atoms/core/dist/core/BindableProperty","@web-atoms/core/dist/style/styled","@web-atoms/core/dist/web/core/AtomUI"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,XNode,AtomControl,BindableProperty,styled,AncestorEnumerator,TreeView,expandSymbol;function findTreeElement(element){if(element.matches("[data-layout=tree-view-item]")){return element}return AncestorEnumerator.findSelector(element,"[data-layout=tree-view-item]")}_export({findTreeElement,default:void 0});return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_webAtomsCoreDistWebControlsAtomControl){AtomControl=_webAtomsCoreDistWebControlsAtomControl.AtomControl},function(_webAtomsCoreDistCoreBindableProperty){BindableProperty=_webAtomsCoreDistCoreBindableProperty.BindableProperty},function(_webAtomsCoreDistStyleStyled){styled=_webAtomsCoreDistStyleStyled.default},function(_webAtomsCoreDistWebCoreAtomUI){AncestorEnumerator=_webAtomsCoreDistWebCoreAtomUI.AncestorEnumerator}],execute:function(){expandSymbol=Symbol("expand");styled.css`
1660
+ `.installLocal();id=1;fixLinks=()=>{const mID=`m_id_${id++}`;setTimeout((x=>{const m=document.getElementById(x);if(!m){return}m.querySelectorAll("a").forEach((a=>a.target="_blank"))}),100,mID);return mID};_export("default",ConversationPage=class ConversationPage extends ContentPage{constructor(){super(...arguments);this.mails=[];this.search="";this.version=1}init(){return __awaiter(this,void 0,void 0,(function*(){this.element.className=css;const mb=this.parameters;const name=mb.emailAddress.name;const emailAddress=mb.emailAddress.emailAddress;const title=`${name} <${emailAddress}>`;if(isMobileView){this.title=title;this.headerRenderer=()=>XNode.create("div",{"data-layout":"row"},XNode.create("input",{value:Bind.twoWaysImmediate((()=>this.search)),type:"search",placeholder:"Search"}))}else{this.titleRenderer=()=>XNode.create("div",{"data-layout":"row"},XNode.create("input",{value:Bind.twoWaysImmediate((()=>this.search)),type:"search",placeholder:"Search"}),XNode.create("span",{text:title}))}this.registerDisposable(yield this.resolve(MailboxSocket).join(mb.mailboxID.toString(),{newMail:()=>{this.version++}}));this.renderer=XNode.create("div",null,XNode.create(AtomRepeater,Object.assign({"data-layout":"vertical-flex",style:"flex-direction: column-reverse",presenter:Bind.presenter((c=>this.mailsRepeater=c)),items:this.mails},InfiniteRepeater.pagedItems((start=>(c,e,cancelToken)=>this.conversationService.list({start,size:10,search:this.search,mailboxID:mb.mailboxID,emailAddressID:mb.emailAddressID,version:this.version,cancelToken}))),{itemRenderer:thread=>{var _a,_b,_c,_d,_e,_f;const item=thread.email;const internalDate=(_b=(_a=item.dateSent)!==null&&_a!==void 0?_a:item.dateReceived)!==null&&_b!==void 0?_b:item.dateCreated;const sent=item.senderID===thread.mailboxID;const remaining=DateTime.from((_c=item.dateSent)!==null&&_c!==void 0?_c:DateTime.today).diff(DateTime.now);const isSending=thread.email.status==="scheduled"&&remaining.totalSeconds>3;if(remaining.totalSeconds>0){setTimeout((()=>this.mailsRepeater.refreshItem(thread)),2e3)}return XNode.create("div",{class:itemCss,"data-sent":sent},XNode.create("div",{"data-layout":"row"},XNode.create("div",{"data-flex":"stretch-full",text:item.subject}),item.received?XNode.create("div",null):item.userID!==SocialMailApp.user.userID&&XNode.create("div",{"style-max-width":"20ch",title:(_d=item.senderUser)===null||_d===void 0?void 0:_d.displayName,text:(_e=item.senderUser)===null||_e===void 0?void 0:_e.displayName}),XNode.create("div",{text:DateFormats.relative.short(internalDate),title:DateFormats.withWeekDayAndTime(internalDate)}),XNode.create("i",{"data-click-event":"mail-options",class:"fa-light fa-square-ellipsis-vertical",title:"Options"})),XNode.create(LimitedText,{height:"40vh"},XNode.create("div",Object.assign({class:"message"},renderMail(thread)))),((_f=item.attachments)===null||_f===void 0?void 0:_f.length)&&XNode.create("div",{class:"attachments","data-layout":"flex-wrap-padding"},...item.attachments.map(FilePreview)),thread.email.tags&&XNode.create("div",{"data-layout":"row"},...thread.email.tags.split(",").map((x=>XNode.create("span",{text:`#${x.startsWith("#")?x.substring(1):x}`})))),!sent&&XNode.create("div",{"data-layout":"row"},XNode.create("i",{"data-click-event":"reply-email",class:"fas fa-reply",title:"Reply"}),XNode.create("i",{"data-click-event":"reply-all-email",class:"fa-solid fa-reply-all"})),isSending&&XNode.create("div",{"data-layout":"command-row","style-padding-left":"20px"},XNode.create("span",{text:`Sending in (${Math.ceil(remaining.totalSeconds)} sec) `}),XNode.create("button",{"data-click-event":"stop-email","data-layout":"stop-icon-button","style-margin-left":"20px"},XNode.create("i",{class:"fas fa-stop"}),"Stop")))}})));this.actionRenderer=()=>XNode.create(PopupActionButton,{icon:"fas fa-bars"},XNode.create("div",{"data-layout":"vertical-flex","style-width":"200px"},this.parameters.blocked?XNode.create(MenuItem,{"data-click-event":"unblock-sender",icon:"fas fa-badge-check",label:"Unblock Sender"}):XNode.create(MenuItem,{"data-click-event":"block-sender",icon:"fas fa-ban",label:"Block Sender"})));this.footerRenderer=()=>XNode.create(MiniComposeBox,{mailboxContact:this.parameters})}))}onClick(a,e){var _a,_b,_c;return __awaiter(this,void 0,void 0,(function*(){const anchor=e.composed?e.composedPath().find((x=>x.tagName==="A")):AncestorEnumerator.find(e.target,(x=>x.tagName==="A"));if(!anchor){return}const href=anchor.getAttribute("href");if(!/^mailto\:/.test(href)){return}e.preventDefault();const url=new URL(href);const to=url.pathname;const subject=(_a=url.searchParams.get("subject"))!==null&&_a!==void 0?_a:"";const body=(_b=url.searchParams.get("body"))!==null&&_b!==void 0?_b:"";const inReplyTo=(_c=url.searchParams.get("inReplyTo"))!==null&&_c!==void 0?_c:"";const{item}=AtomRepeater.itemFromElement(e.target);const{email:{parentID,headerMessageID}}=item;const recipients=[EmailRecipient.create({emailAddressText:to})];const child=Email.create({senderID:this.parameters.mailboxID,subject,headers:JSON.stringify({inReplyTo}),parentID:inReplyTo===headerMessageID?parentID:null,received:false,recipients,htmlBody:`<div contentEditable="true">${body}</div>`});yield PageNavigator.pushPageForResult(ComposeMailPage,{mailboxID:child.senderID,mailbox:this.parameters.mailbox,model:child})}))}onEmailScheduled(email){if(email.senderID!==this.parameters.mailboxID){return}const{emailID}=email;const{emailAddressID,mailboxID}=this.parameters;this.mails.insert(0,MailboxContactEmail.create({emailID,emailAddressID,mailboxID,email}))}stopEmail(thread){return __awaiter(this,void 0,void 0,(function*(){yield this.conversationService.stopEmail(thread)}))}mailOptions(thread,ce){var _a;return __awaiter(this,void 0,void 0,(function*(){void InlinePopupControl.showPopup(ce.target,XNode.create("div",{"data-click-event":"none","data-click-animate":"none"},XNode.create(MenuItem,{eventClick:()=>PageNavigator.pushPage(MailDetailPage,thread.email),icon:"fas fa-eye",label:"Details"}),XNode.create(MenuItem,{href:`/api/files/download/${thread.email.originalFileID}`,icon:"fas fa-download",label:"Download"}),XNode.create(MenuItem,{"data-click-event":"open-logs",icon:"fa-regular fa-clock-rotate-left",label:"Logs"}),((_a=thread.email)===null||_a===void 0?void 0:_a.status)==="draft"&&XNode.create(MenuItem,{"data-click-event":"delete-draft",icon:"fa-regular fa-clock-rotate-left",label:"Delete Draft"})))}))}openLogs({emailID}){return __awaiter(this,void 0,void 0,(function*(){PageNavigator.pushPage(LogsPage,{emailID})}))}replyEmail({email},ce){var _a,_b,_c;return __awaiter(this,void 0,void 0,(function*(){const parse=JSON.parse(email.headers);const emailAddressText=((_b=(_a=parse===null||parse===void 0?void 0:parse.replyTo)===null||_a===void 0?void 0:_a[0])!==null&&_b!==void 0?_b:this.parameters.emailAddress.emailAddress).toLocaleLowerCase();const name=email.senderName;const parentID=(_c=email.parentID)!==null&&_c!==void 0?_c:email.emailID;const recipients=[EmailRecipient.create({name,emailAddressText})];if(/all/i.test(ce.type)){for(const{name:rName,emailAddressID,emailAddress:{emailAddress}}of email.recipients){if(recipients.some((er=>er.emailAddressText===emailAddress))){continue}if(this.parameters.mailboxID===emailAddressID){continue}recipients.push(EmailRecipient.create({name:rName,emailAddressText:emailAddress}))}}const subject=/^re\s?\:/i.test(email.subject)?email.subject:`Re: ${email.subject}`;const child=Email.create({senderID:this.parameters.mailboxID,subject,parentID,received:false,recipients,htmlBody:`<section>\n <section contentEditable="true">\n <p>\n <br/>\n <br/>\n </p>\n </section>\n <blockquote data-type="reply-to" style="margin-inline-start: 20px; margin-inline-end: 0; border-left: solid 1px lightgray; padding-left: 10px;">\n <details>\n <summary>From: ${email.senderName} ${`<${this.parameters.emailAddress.emailAddress}>`}<br/>Subject: ${email.subject} </summary>\n <div>\n ${email.htmlBody}\n </div>\n </details>\n </blockquote>\n </section>`});yield PageNavigator.pushPageForResult(ComposeMailPage,{mailboxID:child.senderID,mailbox:this.parameters.mailbox,model:child})}))}blockSender(){return __awaiter(this,void 0,void 0,(function*(){yield this.conversationService.block(this.parameters)}))}unblockSender(){return __awaiter(this,void 0,void 0,(function*(){yield this.conversationService.block(this.parameters)}))}deleteDraft(mce){return __awaiter(this,void 0,void 0,(function*(){yield this.conversationService.delete(mce.email);this.mails.remove(mce)}))}});__decorate([InjectProperty,__metadata("design:type",ConversationService)],ConversationPage.prototype,"conversationService",void 0);__decorate([Action({onEvent:"click"}),__metadata("design:type",Function),__metadata("design:paramtypes",[Object,PointerEvent]),__metadata("design:returntype",Promise)],ConversationPage.prototype,"onClick",null);__decorate([Action({onEvent:CommonEvents.onEmailScheduled}),__metadata("design:type",Function),__metadata("design:paramtypes",[Object]),__metadata("design:returntype",void 0)],ConversationPage.prototype,"onEmailScheduled",null);__decorate([Action({onEvent:"stop-email"}),__metadata("design:type",Function),__metadata("design:paramtypes",[Object]),__metadata("design:returntype",Promise)],ConversationPage.prototype,"stopEmail",null);__decorate([Action({onEvent:"mail-options"}),__metadata("design:type",Function),__metadata("design:paramtypes",[Object,CustomEvent]),__metadata("design:returntype",Promise)],ConversationPage.prototype,"mailOptions",null);__decorate([Action({onEvent:"open-logs"}),__metadata("design:type",Function),__metadata("design:paramtypes",[Object]),__metadata("design:returntype",Promise)],ConversationPage.prototype,"openLogs",null);__decorate([Action({onEvent:["reply-email","reply-all-email"]}),__metadata("design:type",Function),__metadata("design:paramtypes",[Object,CustomEvent]),__metadata("design:returntype",Promise)],ConversationPage.prototype,"replyEmail",null);__decorate([Action({onEvent:"block-sender",confirm:"Are you sure you want to block this sender?"}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],ConversationPage.prototype,"blockSender",null);__decorate([Action({onEvent:"unblock-sender",confirm:"Are you sure you want to unblock this sender?"}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],ConversationPage.prototype,"unblockSender",null);__decorate([Action({onEvent:"delete-draft",confirm:"Are you sure you want to delete this draft?"}),__metadata("design:type",Function),__metadata("design:paramtypes",[Object]),__metadata("design:returntype",Promise)],ConversationPage.prototype,"deleteDraft",null)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/web/page/mails/ConversationPage");System.register(["tslib","@web-atoms/web-controls/dist/mobile-app/MobileApp","../../../common/pages/mailboxes/services/MailboxService","@web-atoms/core/dist/core/InjectProperty","@web-atoms/core/dist/core/XNode","@web-atoms/web-controls/dist/basic/AtomRepeater","../../../common/controls/repeater/InfiniteRepeater","../../../common/NumberFormats","../../commands/AppCommands","@web-atoms/core/dist/core/Bind"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,PopupWindowPage,MailboxService,InjectProperty,XNode,AtomRepeater,InfiniteRepeater,toFileSize,AppCommands,Bind,ChooseMailboxPage;_export("default",void 0);return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsWebControlsDistMobileAppMobileApp){PopupWindowPage=_webAtomsWebControlsDistMobileAppMobileApp.PopupWindowPage},function(_commonPagesMailboxesServicesMailboxService){MailboxService=_commonPagesMailboxesServicesMailboxService.default},function(_webAtomsCoreDistCoreInjectProperty){InjectProperty=_webAtomsCoreDistCoreInjectProperty.default},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_webAtomsWebControlsDistBasicAtomRepeater){AtomRepeater=_webAtomsWebControlsDistBasicAtomRepeater.default},function(_commonControlsRepeaterInfiniteRepeater){InfiniteRepeater=_commonControlsRepeaterInfiniteRepeater.default},function(_commonNumberFormats){toFileSize=_commonNumberFormats.toFileSize},function(_commandsAppCommands){AppCommands=_commandsAppCommands.default},function(_webAtomsCoreDistCoreBind){Bind=_webAtomsCoreDistCoreBind.default}],execute:function(){_export("default",ChooseMailboxPage=class ChooseMailboxPage extends PopupWindowPage{constructor(){super(...arguments);this.mailboxes=[];this.search=""}init(){return __awaiter(this,void 0,void 0,(function*(){this.title="Open Mailbox";this.headerRenderer=()=>XNode.create("div",{"data-layout":"header-row"},XNode.create("input",{type:"search",value:Bind.twoWaysImmediate((()=>this.search))}));this.renderer=XNode.create("div",null,XNode.create(AtomRepeater,Object.assign({"data-layout":"list",items:this.mailboxes},InfiniteRepeater.pagedItems((start=>(c,e,cancelToken)=>this.mailboxService.list({search:this.search,cancelToken,start}))),{itemRenderer:item=>XNode.create("div",null,XNode.create("a",{"data-click-event":"route",href:AppCommands.openMailbox.displayRoute({id:item.mailboxID}),text:item.emailAddress.emailAddress}),XNode.create("span",{text:toFileSize(item.storage)}))})))}))}});__decorate([InjectProperty,__metadata("design:type",MailboxService)],ChooseMailboxPage.prototype,"mailboxService",void 0)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/web/page/mails/ChooseMailboxPage");System.register(["tslib","@web-atoms/core/dist/di/DISingleton","@web-atoms/core/dist/di/Inject","../../../../services/EntityService","../../../../model/model","@web-atoms/date-time/dist/DateTime","../../../../common/Sql","../../../../common/SocialMailApp","../../../../services/files/LocalFileService"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,DISingleton,Inject,EntityService,AppFile,User,DateTime,Sql,SocialMailApp,LocalFileService,hideActivityIndicator,CloudFileService;return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsCoreDistDiDISingleton){DISingleton=_webAtomsCoreDistDiDISingleton.default},function(_webAtomsCoreDistDiInject){Inject=_webAtomsCoreDistDiInject.Inject},function(_servicesEntityService){EntityService=_servicesEntityService.default},function(_modelModel){AppFile=_modelModel.AppFile;User=_modelModel.User},function(_webAtomsDateTimeDistDateTime){DateTime=_webAtomsDateTimeDistDateTime.default},function(_commonSql){Sql=_commonSql.Sql},function(_commonSocialMailApp){SocialMailApp=_commonSocialMailApp.default},function(_servicesFilesLocalFileService){LocalFileService=_servicesFilesLocalFileService.default}],execute:function(){hideActivityIndicator=true;CloudFileService=class CloudFileService{top(site=false){return __awaiter(this,void 0,void 0,(function*(){const userID=SocialMailApp.user.userID;let q=this.entityService.query(AppFile).where((x=>x.isFolder===true&&x.parentID===null&&x.path!==null));q=site?q.where((x=>x.contentType==="application/site")):q.where((x=>x.contentType==="folder"));const top=yield q.orderByDescending({userID},(p=>x=>x.userPins.some((s=>p.userID===s.userID)))).thenByDescending((x=>x.dateUpdated)).include((x=>x.creator)).toPagedList({size:3,count:false});return top.items}))}drives({start=0,size=50,search="",version=1,cancelToken}){return __awaiter(this,void 0,void 0,(function*(){const userID=SocialMailApp.user.userID;let q=this.entityService.query(AppFile).where((x=>x.isFolder===true&&x.parentID===null&&x.path!==null));if(search){q=q.where({search},(p=>x=>Sql.text.includes(x.creator.userName,p.search)))}return q.include((x=>x.creator)).orderByDescending({userID},(p=>x=>x.userPins.some((s=>p.userID===s.userID)))).thenByDescending((x=>x.fileSize)).toPagedList({start,size,cancelToken})}))}allTemplates(){return __awaiter(this,void 0,void 0,(function*(){const children=yield this.entityService.query(AppFile).where((x=>x.templates.some((c=>true)))).toArray();const roots=children.map((x=>x.path+"%"));const all=yield this.entityService.query(AppFile).where({roots},(p=>x=>Sql.text.likeAny(x.path,p.roots))).toArray();return all.filter((x=>!x.parentID))}))}getFile(id,cancelToken=null){return __awaiter(this,void 0,void 0,(function*(){const folder=yield this.entityService.query(AppFile).where({id},(p=>x=>x.appFileID===p.id)).firstOrDefault({cancelToken});return folder}))}getFolder(id,cancelToken=null){return __awaiter(this,void 0,void 0,(function*(){const folder=yield this.entityService.query(AppFile).where({id},(p=>x=>x.appFileID===p.id)).include((x=>x.creator)).include((x=>x.children)).firstOrDefault({cancelToken});if(folder.children){folder.children.remove((x=>!x.isFolder))}else{folder.children=[]}return folder}))}root({id,templates=false,cancelToken=null}){return __awaiter(this,void 0,void 0,(function*(){if(templates){const children=yield this.entityService.query(AppFile).where((x=>x.templates.some((c=>true)))).toArray({cancelToken});const root=AppFile.create({name:"Templates",isFolder:true,appFileID:0,creator:User.create({}),children});return root}return yield this.entityService.query(AppFile).where({id},(p=>x=>x.appFileID===p.id&&x.isDeleted===false)).include((x=>x.creator)).include((x=>x.children)).firstOrDefault({cancelToken})}))}rootFolders(){return __awaiter(this,void 0,void 0,(function*(){return this.entityService.query(AppFile).where((x=>x.isFolder===true&&x.parentID===null&&x.path!==null)).include((x=>x.creator)).toArray()}))}createFolder({name,parentID}){return __awaiter(this,void 0,void 0,(function*(){const dateCreated=DateTime.now;const r=yield this.entityService.save(AppFile.create({name,parentID,isFolder:true,contentType:"folder",dateCreated,dateUpdated:dateCreated}));return this.entityService.query(AppFile).where({id:r.appFileID},(p=>x=>x.appFileID===p.id)).include((x=>x.creator)).firstOrDefault()}))}expand(folder,showDeleted=false){return __awaiter(this,void 0,void 0,(function*(){const parentID=folder.appFileID;const files=yield this.entityService.query(AppFile).where({parentID,showDeleted},(p=>x=>x.parentID===p.parentID&&x.isFolder===true&&x.isDeleted===p.showDeleted)).toArray({hideActivityIndicator});const{children}=folder;for(const iterator of files){if(children.some((c=>c.appFileID===iterator.appFileID))){continue}children.add(iterator)}}))}files({search="",accept="",folder,cancelToken,showDeleted=false,showFolder=true}){var _a,_b;return __awaiter(this,void 0,void 0,(function*(){const parentID=folder===null||folder===void 0?void 0:folder.appFileID;if(!parentID){return folder===null||folder===void 0?void 0:folder.children}let q=this.entityService.query(AppFile).where({parentID,showDeleted},(p=>x=>x.parentID===p.parentID&&x.isDeleted===p.showDeleted));if(search){if(!/\%/.test(search)){search=search+"%"}q=q.where({search},(p=>x=>Sql.text.like(x.name,p.search)))}if(accept){const contentTypes=accept.split(/\,/g).map((x=>x.replace("*","%").trim())).filter((x=>x));q=q.where({contentTypes},(p=>x=>x.isFolder||Sql.text.iLikeAny(x.contentType,p.contentTypes)))}if(!showFolder){q=q.where((x=>x.isFolder===false)).orderBy((x=>x.name))}else{q=q.orderByDescending((x=>x.isFolder)).thenBy((x=>x.name))}const files=yield q.toArray({cancelToken});const results=[];for(const iterator of files){if(!iterator.isFolder){if(accept&&iterator.parentID===folder.appFileID){const children=(_a=folder.children)!==null&&_a!==void 0?_a:folder.children=[];if(!children.some((f=>f.appFileID===iterator.appFileID))){children.add(iterator)}}results.push(iterator);continue}const fx=folder.children.find((f=>f.appFileID===iterator.appFileID));if(fx){results.push(fx);fx.fileSize=iterator.fileSize;continue}(_b=iterator.children)!==null&&_b!==void 0?_b:iterator.children=[];folder.children.add(iterator);results.push(iterator)}return results}))}children(parentID,name,sha256){return this.entityService.query(AppFile,"children",parentID,name,sha256)}saveFile(fm){return __awaiter(this,void 0,void 0,(function*(){const{appFileID,content,parentID,folder}=fm;return this.localFileService.uploadFile(content,{appFileID,parentID,folder})}))}save(file){return __awaiter(this,void 0,void 0,(function*(){const c=this.entityService.cloner(file);yield this.entityService.save(c.copy);return file}))}delete(files){return __awaiter(this,void 0,void 0,(function*(){files=files.map((({appFileID})=>AppFile.create({appFileID,$deleted:true})));yield this.entityService.save(files)}))}};__decorate([Inject,__metadata("design:type",EntityService)],CloudFileService.prototype,"entityService",void 0);__decorate([Inject,__metadata("design:type",LocalFileService)],CloudFileService.prototype,"localFileService",void 0);CloudFileService=__decorate([DISingleton()],CloudFileService);_export("default",CloudFileService)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/web/page/files/service/CloudFileService");System.register(["tslib","@web-atoms/core/dist/core/XNode","@web-atoms/core/dist/web/controls/AtomControl","@web-atoms/core/dist/core/BindableProperty","@web-atoms/core/dist/style/styled","@web-atoms/core/dist/web/core/AtomUI"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,XNode,AtomControl,BindableProperty,styled,AncestorEnumerator,TreeView,expandSymbol;function findTreeElement(element){if(element.matches("[data-layout=tree-view-item]")){return element}return AncestorEnumerator.findSelector(element,"[data-layout=tree-view-item]")}_export({findTreeElement,default:void 0});return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_webAtomsCoreDistWebControlsAtomControl){AtomControl=_webAtomsCoreDistWebControlsAtomControl.AtomControl},function(_webAtomsCoreDistCoreBindableProperty){BindableProperty=_webAtomsCoreDistCoreBindableProperty.BindableProperty},function(_webAtomsCoreDistStyleStyled){styled=_webAtomsCoreDistStyleStyled.default},function(_webAtomsCoreDistWebCoreAtomUI){AncestorEnumerator=_webAtomsCoreDistWebCoreAtomUI.AncestorEnumerator}],execute:function(){expandSymbol=Symbol("expand");styled.css`
1661
1661
 
1662
1662
  display: flex;
1663
1663
  flex-direction: column;
@@ -1820,10 +1820,6 @@ and limitations under the License.
1820
1820
  }
1821
1821
  }
1822
1822
 
1823
- & [data-page-element=content] {
1824
- background-color: #80808030;
1825
- }
1826
-
1827
1823
  & .threads {
1828
1824
  display: flex;
1829
1825
  gap: 5px;