@social-mail/social-mail-client 1.2.199 → 1.2.201

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.
@@ -934,7 +934,7 @@ and limitations under the License.
934
934
  flex: 1 1 100%;
935
935
  }
936
936
  }
937
- `.installGlobal("[data-check-box=check-box]")}}}));AmdLoader.instance.setup("@web-atoms/web-controls/dist/basic/styles/checkbox-style");System.register(["tslib","@web-atoms/core/dist/core/XNode","./styles/checkbox-style"],(function(_export,_context){"use strict";var __rest,XNode;function Checkbox(_a){var{checked,text}=_a,a=__rest(_a,["checked","text"]);return XNode.create("div",Object.assign({"data-check-box":"check-box"},a),XNode.create("label",null,XNode.create("input",{type:"checkbox",checked}),XNode.create("span",{text})))}_export("default",Checkbox);return{setters:[function(_tslib){__rest=_tslib.__rest},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_stylesCheckboxStyle){}],execute:function(){}}}));AmdLoader.instance.setup("@web-atoms/web-controls/dist/basic/Checkbox");System.register(["tslib","@web-atoms/web-controls/dist/mobile-app/MobileApp","../../../model/model","@web-atoms/core/dist/core/XNode","@web-atoms/web-controls/dist/basic/Form","../../controls/form/RequiredFormField","@web-atoms/web-controls/dist/basic/FormField","@web-atoms/web-controls/dist/basic/ComboBox","./services/MailboxService","@web-atoms/core/dist/core/InjectProperty","@web-atoms/core/dist/core/Bind","@web-atoms/core/dist/view-model/Action","../../SocialMailApp","@web-atoms/web-controls/dist/basic/AtomRepeater","../../controls/buttons/IconButton","@web-atoms/web-controls/dist/PageNavigator","../../../admin/pages/users/ChooseUserPage","@web-atoms/web-controls/dist/basic/Checkbox"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,PopupWindowPage,EmailAddress,Mailbox,UserMailbox,XNode,Form,TextFormField,FormField,ComboBox,MailboxService,InjectProperty,Bind,Action,SocialMailApp,AtomRepeater,AddIconTextButton,PageNavigator,ChooseUserPage,Checkbox,MailboxEditorPage;_export("default",void 0);return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsWebControlsDistMobileAppMobileApp){PopupWindowPage=_webAtomsWebControlsDistMobileAppMobileApp.PopupWindowPage},function(_modelModel){EmailAddress=_modelModel.EmailAddress;Mailbox=_modelModel.Mailbox;UserMailbox=_modelModel.UserMailbox},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_webAtomsWebControlsDistBasicForm){Form=_webAtomsWebControlsDistBasicForm.default},function(_controlsFormRequiredFormField){TextFormField=_controlsFormRequiredFormField.TextFormField},function(_webAtomsWebControlsDistBasicFormField){FormField=_webAtomsWebControlsDistBasicFormField.default},function(_webAtomsWebControlsDistBasicComboBox){ComboBox=_webAtomsWebControlsDistBasicComboBox.default},function(_servicesMailboxService){MailboxService=_servicesMailboxService.default},function(_webAtomsCoreDistCoreInjectProperty){InjectProperty=_webAtomsCoreDistCoreInjectProperty.default},function(_webAtomsCoreDistCoreBind){Bind=_webAtomsCoreDistCoreBind.default},function(_webAtomsCoreDistViewModelAction){Action=_webAtomsCoreDistViewModelAction.default},function(_SocialMailApp){SocialMailApp=_SocialMailApp.default},function(_webAtomsWebControlsDistBasicAtomRepeater){AtomRepeater=_webAtomsWebControlsDistBasicAtomRepeater.default},function(_controlsButtonsIconButton){AddIconTextButton=_controlsButtonsIconButton.AddIconTextButton},function(_webAtomsWebControlsDistPageNavigator){PageNavigator=_webAtomsWebControlsDistPageNavigator.default},function(_adminPagesUsersChooseUserPage){ChooseUserPage=_adminPagesUsersChooseUserPage.default},function(_webAtomsWebControlsDistBasicCheckbox){Checkbox=_webAtomsWebControlsDistBasicCheckbox.default}],execute:function(){_export("default",MailboxEditorPage=class MailboxEditorPage extends PopupWindowPage{init(){var _a,_b,_c,_d;var _e,_f;return __awaiter(this,void 0,void 0,(function*(){this.title="Add Hosted Mailbox";this.model=(_b=(_a=this.parameters)===null||_a===void 0?void 0:_a.model)!==null&&_b!==void 0?_b:Mailbox.create({emailAddress:EmailAddress.create({emailAddress:""}),maxStorage:1*1024*1024*1024,userMailboxes:[]});if(this.parameters.domainID){this.model.domainID=this.parameters.domainID}(_c=(_e=this.model).isChannel)!==null&&_c!==void 0?_c:_e.isChannel=false;(_d=(_f=this.model).isPrivateChannel)!==null&&_d!==void 0?_d:_f.isPrivateChannel=false;this.model.username="";const domains=yield this.mailboxService.domains(true);this.model.name=SocialMailApp.user.displayName;this.renderer=XNode.create("div",null,XNode.create(Form,{"data-submit-event":"save-mailbox"},XNode.create(TextFormField,{label:"Name",value:()=>this.model.name}),XNode.create(TextFormField,{label:"Email Prefix/Username",value:()=>this.model.username}),XNode.create(FormField,{label:"Domain"},XNode.create(ComboBox,{labelPath:item=>item===null||item===void 0?void 0:item.name,valuePath:item=>item===null||item===void 0?void 0:item.domainID,selectedItem:Bind.twoWaysImmediate((()=>this.model.domain)),value:Bind.twoWaysImmediate((()=>this.model.domainID)),items:domains})),XNode.create(FormField,{label:"Email Address"},XNode.create("span",{text:Bind.oneWay((()=>`${this.model.username}@${this.model.domain.domain.name}`))})),XNode.create(FormField,{label:"Create Channel"},XNode.create(Checkbox,{checked:Bind.twoWaysImmediate((()=>this.model.isChannel)),text:"Create a newsletter channel, which anyone with email can subscribe"})),XNode.create(FormField,{"style-display":Bind.oneWay((()=>this.model.isChannel)),label:"Private Channel"},XNode.create(Checkbox,{checked:Bind.twoWaysImmediate((()=>this.model.isPrivateChannel)),text:"Make this channel private, only users with invitation can subscribe"})),XNode.create(FormField,{label:"Add Users who can access this mailbox"},XNode.create("div",null,XNode.create(AtomRepeater,{items:this.model.userMailboxes,"data-layout":"list",itemRenderer:item=>XNode.create("div",null,XNode.create("span",{text:item.user.userName}))}),XNode.create(AddIconTextButton,{"data-click-event":"add-user",text:"User"}))),XNode.create("div",{"data-layout":"command-row"},XNode.create("button",{"data-type":"submit","data-layout":"accept-button",text:"Add"}))))}))}saveMailbox(){return __awaiter(this,void 0,void 0,(function*(){yield this.mailboxService.save(this.model);return this.model}))}addUser(){return __awaiter(this,void 0,void 0,(function*(){const user=yield PageNavigator.pushPageForResult(ChooseUserPage);this.model.userMailboxes.add(UserMailbox.create({user,userID:user.userID}))}))}});__decorate([InjectProperty,__metadata("design:type",MailboxService)],MailboxEditorPage.prototype,"mailboxService",void 0);__decorate([Action({onEvent:"save-mailbox",close:true}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],MailboxEditorPage.prototype,"saveMailbox",null);__decorate([Action({onEvent:"add-user"}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],MailboxEditorPage.prototype,"addUser",null)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/pages/mailboxes/MailboxEditorPage");System.register([],(function(_export,_context){"use strict";var k,m,b,kb,mb,gb,tb,pb,toCompactFixed,toKMBString,toFileSize,formatNumber;return{setters:[],execute:function(){k=1e3;m=k*k;b=m*k;kb=1024;mb=kb*kb;gb=mb*kb;tb=gb*kb;pb=tb*kb;_export("toCompactFixed",toCompactFixed=(n,decimals)=>{let text=n.toFixed(decimals);if(decimals>0){while(text.endsWith("0")){text=text.substring(0,text.length-1)}if(text.endsWith(".")){text=text.substring(0,text.length-1)}}return text});_export("toKMBString",toKMBString=(n,decimals=0,def="")=>{if(!n){return def+""}if(n>=b){return toCompactFixed(n/b,decimals)+"B"}if(n>=m){return toCompactFixed(n/m,decimals)+"M"}if(n>=k){return toCompactFixed(n/k,decimals)+"K"}return toCompactFixed(n,0)});_export("toFileSize",toFileSize=(n,decimals=0,def="")=>{n=Number(n);if(n===0){return"0 B"}if(!n){return def+""}if(n>=pb){return toCompactFixed(n/pb,decimals)+" PB"}if(n>=tb){return toCompactFixed(n/tb,decimals)+" TB"}if(n>=gb){return toCompactFixed(n/gb,decimals)+" GB"}if(n>=mb){return toCompactFixed(n/mb,decimals)+" MB"}if(n>=kb){return toCompactFixed(n/kb,decimals)+" KB"}return toCompactFixed(n,0)});_export("formatNumber",formatNumber=(n,{prefix="",suffix="",def="",numberToText=toKMBString}={})=>{if(!n){return def}const text=numberToText(n);return prefix+text+suffix})}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/NumberFormats");System.register(["@web-atoms/core/dist/core/EventScope"],(function(_export,_context){"use strict";var EventScope,CommonEvents;return{setters:[function(_webAtomsCoreDistCoreEventScope){EventScope=_webAtomsCoreDistCoreEventScope.default}],execute:function(){_export("CommonEvents",CommonEvents={onThreadMarkedAsRead:EventScope.create(),onThreadMarkedAsBlocked:EventScope.create(),onDraftDeleted:EventScope.create(),onFileDeleted:EventScope.create(),onEmailScheduled:EventScope.create(),onEmailUnscheduled:EventScope.create(),onEmailForward:EventScope.create(),onEmailForwardAsAttachment:EventScope.create()})}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/events/CommonEvents");System.register(["tslib","./http/JsonError"],(function(_export,_context){"use strict";var __awaiter,JsonError,FetchBuilder;function buildUrl(strings,...p){let r="";for(let index=0;index<strings.length;index++){const element=strings[index];r+=element;if(index<p.length){r+=encodeURIComponent(p[index])}}return r}_export({buildUrl,default:void 0});return{setters:[function(_tslib){__awaiter=_tslib.__awaiter},function(_httpJsonError){JsonError=_httpJsonError.default}],execute:function(){_export("default",FetchBuilder=class FetchBuilder{static get(url){return this.method(url,"GET")}static put(url){return this.method(url,"PUT")}static post(url){return this.method(url,"POST")}static delete(url){return this.method(url,"DELETE")}static method(url,method){return new FetchBuilder({url,method})}constructor(request){this.request=request}cancelToken(cancelToken){const ac=new AbortController;cancelToken.registerForCancel((()=>ac.abort()));return this.signal(ac.signal)}signal(signal){return this.append({signal})}form(name,value,fileName){var _a;if(value===void 0){return this}const body=(_a=this.request.body)!==null&&_a!==void 0?_a:new FormData;if(fileName){if(typeof value==="string"){throw new Error("value must be a blob with content type set correctly.")}body.append(name,value,fileName)}else{body.append(name,value)}return this.append({body})}jsonBody(body,encode=true){var _a;if(encode){body=JSON.stringify(body)}const headers=(_a=this.request.headers)!==null&&_a!==void 0?_a:{};headers["content-type"]="application/json";return this.append({body,headers})}header(name,value){var _a;const headers=(_a=this.request.headers)!==null&&_a!==void 0?_a:{};headers[name]=value;return this.append({headers})}path(name,value,encode=true){let url=this.request.url;if(encode){value=encodeURIComponent(value)}url=url.replace(name,value);return this.append({url})}query(name,value,encode=true){if(value===void 0){return this}let url=this.request.url;if(encode){value=encodeURIComponent(value)}name=encodeURIComponent(name);if(url.indexOf("?")===-1){url+=`?${name}=${value}`}else{url+=`&${name}=${value}`}return this.append({url})}responseAsText(ensureSuccess=true){return __awaiter(this,void 0,void 0,(function*(){const r=yield this.response();if(ensureSuccess){yield this.ensureSuccess(r)}return yield r.text()}))}responseAsBlob(ensureSuccess=true){return __awaiter(this,void 0,void 0,(function*(){const r=yield this.response();if(ensureSuccess){yield this.ensureSuccess(r)}return yield r.blob()}))}responseAsJson(ensureSuccess=true){return __awaiter(this,void 0,void 0,(function*(){const r=yield this.response();if(ensureSuccess){yield this.ensureSuccess(r)}return yield r.json()}))}response(){return fetch(this.request.url,this.request)}ensureSuccess(r){var _a,_b,_c,_d;return __awaiter(this,void 0,void 0,(function*(){if(r.status<=300){return}const type=r.headers.get("content-type");if(/\/json/i.test(type)){const json=yield r.json();throw new JsonError((_d=(_c=(_b=(_a=json.title)!==null&&_a!==void 0?_a:json.detail)!==null&&_b!==void 0?_b:json.message)!==null&&_c!==void 0?_c:json.exceptionMessage)!==null&&_d!==void 0?_d:"Json Server Error",json)}const text=yield r.text();throw new Error(`Failed for ${this.request.url}\n${text}`)}))}append(r){return new FetchBuilder(Object.assign(Object.assign({},this.request),r))}})}}}));AmdLoader.instance.setup("@web-atoms/core/dist/services/FetchBuilder");System.register(["tslib","@web-atoms/core/dist/di/DISingleton","@web-atoms/core/dist/di/Inject","../../../../services/EntityService","../../../../model/model","../../../../common/Sql","../../../../common/events/CommonEvents","@web-atoms/core/dist/services/FetchBuilder","../../../../common/apiPath"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,DISingleton,Inject,EntityService,AppFile,Mailbox,MailboxContact,UserPushSubscription,Sql,CommonEvents,FetchBuilder,apiPath,MailService;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;Mailbox=_modelModel.Mailbox;MailboxContact=_modelModel.MailboxContact;UserPushSubscription=_modelModel.UserPushSubscription},function(_commonSql){Sql=_commonSql.Sql},function(_commonEventsCommonEvents){CommonEvents=_commonEventsCommonEvents.CommonEvents},function(_webAtomsCoreDistServicesFetchBuilder){FetchBuilder=_webAtomsCoreDistServicesFetchBuilder.default},function(_commonApiPath){apiPath=_commonApiPath.apiPath}],execute:function(){MailService=class MailService{mailbox(mailboxID){return __awaiter(this,void 0,void 0,(function*(){const mb=yield this.entityService.query(Mailbox).where({mailboxID},(p=>x=>x.mailboxID===p.mailboxID)).include((x=>x.emailAddress)).firstOrDefault();const notify=yield this.entityService.query(UserPushSubscription).where({mailboxID},(p=>x=>x.mailboxID===p.mailboxID&&x.emailAddressID===null)).firstOrDefault();mb.notify=!!notify;return mb}))}list({search="",mailboxID,start=0,size=20,version=1,showBlocked=false,cancelToken}){return __awaiter(this,void 0,void 0,(function*(){let q=this.entityService.query(MailboxContact).where({mailboxID,showBlocked},(p=>x=>x.mailboxID===p.mailboxID&&x.blocked===p.showBlocked)).orderByDescending((x=>x.dateUpdated));if(search){const likeSearch=`%${search}%`;q=q.where({search,likeSearch},(p=>x=>x.emailAddress.emailAddress===p.search||Sql.text.iLike(x.lastEmail.textBody,p.likeSearch)||Sql.text.iLike(x.lastEmail.subject,p.likeSearch)||Sql.text.iLike(x.emailAddress.name,p.likeSearch)||Sql.text.iLike(x.lastEmail.senderName,p.likeSearch)))}return q.include((x=>[x.emailAddress,x.lastEmail])).toPagedList({start,size,cancelToken})}))}raw(email){return __awaiter(this,void 0,void 0,(function*(){const{mimeFileID,originalFileID}=email;if(mimeFileID){return FetchBuilder.get(apiPath(`/api/emails/logs/${mimeFileID}/${email.emailID}.eml`)).responseAsText()}const file=yield this.entityService.query(AppFile).where({originalFileID},(p=>x=>x.appFileID===p.originalFileID)).firstOrDefault();return FetchBuilder.get(file.url).responseAsText()}))}send(email){return __awaiter(this,void 0,void 0,(function*(){const{textBody}=email;if(textBody&&!email.subject){const lines=textBody.split("\n");for(const line of lines){if(!line.trim()){continue}email.subject||(email.subject=line.trim().substring(0,80));break}}for(const iterator of email.recipients){if(iterator.emailAddressText){iterator.emailAddressText=iterator.emailAddressText.trim()}}const cloner=this.entityService.cloner(email).include((x=>x.recipients)).include((x=>x.attachments)).copy;yield this.entityService.save(cloner);CommonEvents.onEmailScheduled.dispatchEvent(email)}))}deleteAttachment(file){return __awaiter(this,void 0,void 0,(function*(){const{appFileID}=file;yield this.entityService.save(AppFile.create({$deleted:true,appFileID}));CommonEvents.onFileDeleted.dispatchEvent(file)}))}};__decorate([Inject,__metadata("design:type",EntityService)],MailService.prototype,"entityService",void 0);MailService=__decorate([DISingleton()],MailService);_export("default",MailService)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/web/page/mails/service/MailService");System.register(["@web-atoms/core/dist/style/styled","../PageNavigator","./MobileApp","@web-atoms/core/dist/web/core/AtomUI","../basic/AtomRepeater"],(function(_export,_context){"use strict";var styled,PageNavigator,ContentPage,isMobileView,descendentElementIterator,AtomRepeater,MasterDetailPage,findItem;_export("default",void 0);return{setters:[function(_webAtomsCoreDistStyleStyled){styled=_webAtomsCoreDistStyleStyled.default},function(_PageNavigator){PageNavigator=_PageNavigator.default},function(_MobileApp){ContentPage=_MobileApp.ContentPage;isMobileView=_MobileApp.isMobileView},function(_webAtomsCoreDistWebCoreAtomUI){descendentElementIterator=_webAtomsCoreDistWebCoreAtomUI.descendentElementIterator},function(_basicAtomRepeater){AtomRepeater=_basicAtomRepeater.default}],execute:function(){styled.css`
937
+ `.installGlobal("[data-check-box=check-box]")}}}));AmdLoader.instance.setup("@web-atoms/web-controls/dist/basic/styles/checkbox-style");System.register(["tslib","@web-atoms/core/dist/core/XNode","./styles/checkbox-style"],(function(_export,_context){"use strict";var __rest,XNode;function Checkbox(_a){var{checked,text}=_a,a=__rest(_a,["checked","text"]);return XNode.create("div",Object.assign({"data-check-box":"check-box"},a),XNode.create("label",null,XNode.create("input",{type:"checkbox",checked}),XNode.create("span",{text})))}_export("default",Checkbox);return{setters:[function(_tslib){__rest=_tslib.__rest},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_stylesCheckboxStyle){}],execute:function(){}}}));AmdLoader.instance.setup("@web-atoms/web-controls/dist/basic/Checkbox");System.register(["tslib","@web-atoms/web-controls/dist/mobile-app/MobileApp","../../../model/model","@web-atoms/core/dist/core/XNode","@web-atoms/web-controls/dist/basic/Form","../../controls/form/RequiredFormField","@web-atoms/web-controls/dist/basic/FormField","@web-atoms/web-controls/dist/basic/ComboBox","./services/MailboxService","@web-atoms/core/dist/core/InjectProperty","@web-atoms/core/dist/core/Bind","@web-atoms/core/dist/view-model/Action","../../SocialMailApp","@web-atoms/web-controls/dist/basic/AtomRepeater","../../controls/buttons/IconButton","@web-atoms/web-controls/dist/PageNavigator","../../../admin/pages/users/ChooseUserPage","@web-atoms/web-controls/dist/basic/Checkbox"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,PopupWindowPage,EmailAddress,Mailbox,UserMailbox,XNode,Form,TextFormField,FormField,ComboBox,MailboxService,InjectProperty,Bind,Action,SocialMailApp,AtomRepeater,AddIconTextButton,PageNavigator,ChooseUserPage,Checkbox,MailboxEditorPage;_export("default",void 0);return{setters:[function(_tslib){__awaiter=_tslib.__awaiter;__decorate=_tslib.__decorate;__metadata=_tslib.__metadata},function(_webAtomsWebControlsDistMobileAppMobileApp){PopupWindowPage=_webAtomsWebControlsDistMobileAppMobileApp.PopupWindowPage},function(_modelModel){EmailAddress=_modelModel.EmailAddress;Mailbox=_modelModel.Mailbox;UserMailbox=_modelModel.UserMailbox},function(_webAtomsCoreDistCoreXNode){XNode=_webAtomsCoreDistCoreXNode.default},function(_webAtomsWebControlsDistBasicForm){Form=_webAtomsWebControlsDistBasicForm.default},function(_controlsFormRequiredFormField){TextFormField=_controlsFormRequiredFormField.TextFormField},function(_webAtomsWebControlsDistBasicFormField){FormField=_webAtomsWebControlsDistBasicFormField.default},function(_webAtomsWebControlsDistBasicComboBox){ComboBox=_webAtomsWebControlsDistBasicComboBox.default},function(_servicesMailboxService){MailboxService=_servicesMailboxService.default},function(_webAtomsCoreDistCoreInjectProperty){InjectProperty=_webAtomsCoreDistCoreInjectProperty.default},function(_webAtomsCoreDistCoreBind){Bind=_webAtomsCoreDistCoreBind.default},function(_webAtomsCoreDistViewModelAction){Action=_webAtomsCoreDistViewModelAction.default},function(_SocialMailApp){SocialMailApp=_SocialMailApp.default},function(_webAtomsWebControlsDistBasicAtomRepeater){AtomRepeater=_webAtomsWebControlsDistBasicAtomRepeater.default},function(_controlsButtonsIconButton){AddIconTextButton=_controlsButtonsIconButton.AddIconTextButton},function(_webAtomsWebControlsDistPageNavigator){PageNavigator=_webAtomsWebControlsDistPageNavigator.default},function(_adminPagesUsersChooseUserPage){ChooseUserPage=_adminPagesUsersChooseUserPage.default},function(_webAtomsWebControlsDistBasicCheckbox){Checkbox=_webAtomsWebControlsDistBasicCheckbox.default}],execute:function(){_export("default",MailboxEditorPage=class MailboxEditorPage extends PopupWindowPage{init(){var _a,_b,_c,_d;var _e,_f;return __awaiter(this,void 0,void 0,(function*(){this.title="Add Hosted Mailbox";this.model=(_b=(_a=this.parameters)===null||_a===void 0?void 0:_a.model)!==null&&_b!==void 0?_b:Mailbox.create({emailAddress:EmailAddress.create({emailAddress:""}),maxStorage:1*1024*1024*1024,userMailboxes:[]});if(this.parameters.domainID){this.model.domainID=this.parameters.domainID}(_c=(_e=this.model).isChannel)!==null&&_c!==void 0?_c:_e.isChannel=false;(_d=(_f=this.model).isPrivateChannel)!==null&&_d!==void 0?_d:_f.isPrivateChannel=false;this.model.username="";const domains=yield this.mailboxService.domains(true);this.model.name=SocialMailApp.user.displayName;this.renderer=XNode.create("div",null,XNode.create(Form,{"data-submit-event":"save-mailbox"},XNode.create(TextFormField,{label:"Name",value:()=>this.model.name}),XNode.create(TextFormField,{label:"Email Prefix/Username",value:()=>this.model.username}),XNode.create(FormField,{label:"Domain"},XNode.create(ComboBox,{labelPath:item=>item===null||item===void 0?void 0:item.name,valuePath:item=>item===null||item===void 0?void 0:item.domainID,selectedItem:Bind.twoWaysImmediate((()=>this.model.domain)),value:Bind.twoWaysImmediate((()=>this.model.domainID)),items:domains})),XNode.create(FormField,{label:"Email Address"},XNode.create("span",{text:Bind.oneWay((()=>`${this.model.username}@${this.model.domain.domain.name}`))})),XNode.create(FormField,{label:"Create Channel"},XNode.create(Checkbox,{checked:Bind.twoWaysImmediate((()=>this.model.isChannel)),text:"Create a newsletter channel, which anyone with email can subscribe"})),XNode.create(FormField,{"style-display":Bind.oneWay((()=>this.model.isChannel)),label:"Private Channel"},XNode.create(Checkbox,{checked:Bind.twoWaysImmediate((()=>this.model.isPrivateChannel)),text:"Make this channel private, only users with invitation can subscribe"})),XNode.create(FormField,{label:"Add Users who can access this mailbox"},XNode.create("div",null,XNode.create(AtomRepeater,{items:this.model.userMailboxes,"data-layout":"list",itemRenderer:item=>XNode.create("div",null,XNode.create("span",{text:item.user.userName}))}),XNode.create(AddIconTextButton,{"data-click-event":"add-user",text:"User"}))),XNode.create("div",{"data-layout":"command-row"},XNode.create("button",{"data-type":"submit","data-layout":"accept-button",text:"Add"}))))}))}saveMailbox(){return __awaiter(this,void 0,void 0,(function*(){yield this.mailboxService.save(this.model);return this.model}))}addUser(){return __awaiter(this,void 0,void 0,(function*(){const user=yield PageNavigator.pushPageForResult(ChooseUserPage);this.model.userMailboxes.add(UserMailbox.create({user,userID:user.userID}))}))}});__decorate([InjectProperty,__metadata("design:type",MailboxService)],MailboxEditorPage.prototype,"mailboxService",void 0);__decorate([Action({onEvent:"save-mailbox",close:true}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],MailboxEditorPage.prototype,"saveMailbox",null);__decorate([Action({onEvent:"add-user"}),__metadata("design:type",Function),__metadata("design:paramtypes",[]),__metadata("design:returntype",Promise)],MailboxEditorPage.prototype,"addUser",null)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/pages/mailboxes/MailboxEditorPage");System.register([],(function(_export,_context){"use strict";var k,m,b,kb,mb,gb,tb,pb,toCompactFixed,toKMBString,toFileSize,formatNumber;return{setters:[],execute:function(){k=1e3;m=k*k;b=m*k;kb=1024;mb=kb*kb;gb=mb*kb;tb=gb*kb;pb=tb*kb;_export("toCompactFixed",toCompactFixed=(n,decimals)=>{let text=n.toFixed(decimals);if(decimals>0){while(text.endsWith("0")){text=text.substring(0,text.length-1)}if(text.endsWith(".")){text=text.substring(0,text.length-1)}}return text});_export("toKMBString",toKMBString=(n,decimals=0,def="")=>{if(!n){return def+""}if(n>=b){return toCompactFixed(n/b,decimals)+"B"}if(n>=m){return toCompactFixed(n/m,decimals)+"M"}if(n>=k){return toCompactFixed(n/k,decimals)+"K"}return toCompactFixed(n,0)});_export("toFileSize",toFileSize=(n,decimals=0,def="")=>{n=Number(n);if(n===0){return"0 B"}if(!n){return def+""}if(n>=pb){return toCompactFixed(n/pb,decimals)+" PB"}if(n>=tb){return toCompactFixed(n/tb,decimals)+" TB"}if(n>=gb){return toCompactFixed(n/gb,decimals)+" GB"}if(n>=mb){return toCompactFixed(n/mb,decimals)+" MB"}if(n>=kb){return toCompactFixed(n/kb,decimals)+" KB"}return toCompactFixed(n,0)});_export("formatNumber",formatNumber=(n,{prefix="",suffix="",def="",numberToText=toKMBString}={})=>{if(!n){return def}const text=numberToText(n);return prefix+text+suffix})}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/NumberFormats");System.register(["@web-atoms/core/dist/core/EventScope"],(function(_export,_context){"use strict";var EventScope,CommonEvents;return{setters:[function(_webAtomsCoreDistCoreEventScope){EventScope=_webAtomsCoreDistCoreEventScope.default}],execute:function(){_export("CommonEvents",CommonEvents={onThreadMarkedAsRead:EventScope.create(),onThreadMarkedAsBlocked:EventScope.create(),onDraftDeleted:EventScope.create(),onFileDeleted:EventScope.create(),onEmailScheduled:EventScope.create(),onEmailUnscheduled:EventScope.create(),onEmailForward:EventScope.create(),onEmailForwardAsAttachment:EventScope.create()})}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/common/events/CommonEvents");System.register(["tslib","./http/JsonError"],(function(_export,_context){"use strict";var __awaiter,JsonError,FetchBuilder;function buildUrl(strings,...p){let r="";for(let index=0;index<strings.length;index++){const element=strings[index];r+=element;if(index<p.length){r+=encodeURIComponent(p[index])}}return r}_export({buildUrl,default:void 0});return{setters:[function(_tslib){__awaiter=_tslib.__awaiter},function(_httpJsonError){JsonError=_httpJsonError.default}],execute:function(){_export("default",FetchBuilder=class FetchBuilder{static get(url){return this.method(url,"GET")}static put(url){return this.method(url,"PUT")}static post(url){return this.method(url,"POST")}static delete(url){return this.method(url,"DELETE")}static method(url,method){return new FetchBuilder({url,method})}constructor(request){this.request=request}cancelToken(cancelToken){const ac=new AbortController;cancelToken.registerForCancel((()=>ac.abort()));return this.signal(ac.signal)}signal(signal){return this.append({signal})}form(name,value,fileName){var _a;if(value===void 0){return this}const body=(_a=this.request.body)!==null&&_a!==void 0?_a:new FormData;if(fileName){if(typeof value==="string"){throw new Error("value must be a blob with content type set correctly.")}body.append(name,value,fileName)}else{body.append(name,value)}return this.append({body})}jsonBody(body,encode=true){var _a;if(encode){body=JSON.stringify(body)}const headers=(_a=this.request.headers)!==null&&_a!==void 0?_a:{};headers["content-type"]="application/json";return this.append({body,headers})}header(name,value){var _a;const headers=(_a=this.request.headers)!==null&&_a!==void 0?_a:{};headers[name]=value;return this.append({headers})}path(name,value,encode=true){let url=this.request.url;if(encode){value=encodeURIComponent(value)}url=url.replace(name,value);return this.append({url})}query(name,value,encode=true){if(value===void 0){return this}let url=this.request.url;if(encode){value=encodeURIComponent(value)}name=encodeURIComponent(name);if(url.indexOf("?")===-1){url+=`?${name}=${value}`}else{url+=`&${name}=${value}`}return this.append({url})}responseAsText(ensureSuccess=true){return __awaiter(this,void 0,void 0,(function*(){const r=yield this.response();if(ensureSuccess){yield this.ensureSuccess(r)}return yield r.text()}))}responseAsBlob(ensureSuccess=true){return __awaiter(this,void 0,void 0,(function*(){const r=yield this.response();if(ensureSuccess){yield this.ensureSuccess(r)}return yield r.blob()}))}responseAsJson(ensureSuccess=true){return __awaiter(this,void 0,void 0,(function*(){const r=yield this.response();if(ensureSuccess){yield this.ensureSuccess(r)}return yield r.json()}))}response(){return fetch(this.request.url,this.request)}ensureSuccess(r){var _a,_b,_c,_d;return __awaiter(this,void 0,void 0,(function*(){if(r.status<=300){return}const type=r.headers.get("content-type");if(/\/json/i.test(type)){const json=yield r.json();throw new JsonError((_d=(_c=(_b=(_a=json.title)!==null&&_a!==void 0?_a:json.detail)!==null&&_b!==void 0?_b:json.message)!==null&&_c!==void 0?_c:json.exceptionMessage)!==null&&_d!==void 0?_d:"Json Server Error",json)}const text=yield r.text();throw new Error(`Failed for ${this.request.url}\n${text}`)}))}append(r){return new FetchBuilder(Object.assign(Object.assign({},this.request),r))}})}}}));AmdLoader.instance.setup("@web-atoms/core/dist/services/FetchBuilder");System.register(["tslib","@web-atoms/core/dist/di/DISingleton","@web-atoms/core/dist/di/Inject","../../../../services/EntityService","../../../../model/model","../../../../common/Sql","../../../../common/events/CommonEvents","@web-atoms/core/dist/services/FetchBuilder","../../../../common/apiPath"],(function(_export,_context){"use strict";var __awaiter,__decorate,__metadata,DISingleton,Inject,EntityService,AppFile,Mailbox,MailboxContact,UserPushSubscription,Sql,CommonEvents,FetchBuilder,apiPath,MailService;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;Mailbox=_modelModel.Mailbox;MailboxContact=_modelModel.MailboxContact;UserPushSubscription=_modelModel.UserPushSubscription},function(_commonSql){Sql=_commonSql.Sql},function(_commonEventsCommonEvents){CommonEvents=_commonEventsCommonEvents.CommonEvents},function(_webAtomsCoreDistServicesFetchBuilder){FetchBuilder=_webAtomsCoreDistServicesFetchBuilder.default},function(_commonApiPath){apiPath=_commonApiPath.apiPath}],execute:function(){MailService=class MailService{mailbox(mailboxID){return __awaiter(this,void 0,void 0,(function*(){const mb=yield this.entityService.query(Mailbox).where({mailboxID},(p=>x=>x.mailboxID===p.mailboxID)).include((x=>x.emailAddress)).firstOrDefault();const notify=yield this.entityService.query(UserPushSubscription).where({mailboxID},(p=>x=>x.mailboxID===p.mailboxID&&x.emailAddressID===null)).firstOrDefault();mb.notify=!!notify;return mb}))}list({search="",mailboxID,start=0,size=20,version=1,showBlocked=false,cancelToken}){return __awaiter(this,void 0,void 0,(function*(){let q=this.entityService.query(MailboxContact).where({mailboxID,showBlocked},(p=>x=>x.mailboxID===p.mailboxID&&x.blocked===p.showBlocked));if(search){const likeSearch=`${search}%`;q=q.where({search,likeSearch},(p=>x=>x.emailAddress.emailAddress===p.search||Sql.text.iLike(x.lastEmail.textBody,p.likeSearch)||Sql.text.iLike(x.lastEmail.subject,p.likeSearch)||Sql.text.iLike(x.emailAddress.name,p.likeSearch)||Sql.text.iLike(x.lastEmail.senderName,p.likeSearch)));q=q.orderByDescending({search,likeSearch},(p=>x=>x.emailAddress.emailAddress===p.search||Sql.text.iLike(x.emailAddress.name,p.likeSearch))).thenByDescending((x=>x.dateUpdated))}else{q=q.orderByDescending((x=>x.dateUpdated))}return q.include((x=>[x.emailAddress,x.lastEmail])).toPagedList({start,size,cancelToken})}))}raw(email){return __awaiter(this,void 0,void 0,(function*(){const{mimeFileID,originalFileID}=email;if(mimeFileID){return FetchBuilder.get(apiPath(`/api/emails/logs/${mimeFileID}/${email.emailID}.eml`)).responseAsText()}const file=yield this.entityService.query(AppFile).where({originalFileID},(p=>x=>x.appFileID===p.originalFileID)).firstOrDefault();return FetchBuilder.get(file.url).responseAsText()}))}send(email){return __awaiter(this,void 0,void 0,(function*(){const{textBody}=email;if(textBody&&!email.subject){const lines=textBody.split("\n");for(const line of lines){if(!line.trim()){continue}email.subject||(email.subject=line.trim().substring(0,80));break}}for(const iterator of email.recipients){if(iterator.emailAddressText){iterator.emailAddressText=iterator.emailAddressText.trim()}}const cloner=this.entityService.cloner(email).include((x=>x.recipients)).include((x=>x.attachments)).copy;yield this.entityService.save(cloner);CommonEvents.onEmailScheduled.dispatchEvent(email)}))}deleteAttachment(file){return __awaiter(this,void 0,void 0,(function*(){const{appFileID}=file;yield this.entityService.save(AppFile.create({$deleted:true,appFileID}));CommonEvents.onFileDeleted.dispatchEvent(file)}))}};__decorate([Inject,__metadata("design:type",EntityService)],MailService.prototype,"entityService",void 0);MailService=__decorate([DISingleton()],MailService);_export("default",MailService)}}}));AmdLoader.instance.setup("@social-mail/social-mail-client/dist/web/page/mails/service/MailService");System.register(["@web-atoms/core/dist/style/styled","../PageNavigator","./MobileApp","@web-atoms/core/dist/web/core/AtomUI","../basic/AtomRepeater"],(function(_export,_context){"use strict";var styled,PageNavigator,ContentPage,isMobileView,descendentElementIterator,AtomRepeater,MasterDetailPage,findItem;_export("default",void 0);return{setters:[function(_webAtomsCoreDistStyleStyled){styled=_webAtomsCoreDistStyleStyled.default},function(_PageNavigator){PageNavigator=_PageNavigator.default},function(_MobileApp){ContentPage=_MobileApp.ContentPage;isMobileView=_MobileApp.isMobileView},function(_webAtomsCoreDistWebCoreAtomUI){descendentElementIterator=_webAtomsCoreDistWebCoreAtomUI.descendentElementIterator},function(_basicAtomRepeater){AtomRepeater=_basicAtomRepeater.default}],execute:function(){styled.css`
938
938
  & > [data-page-element=content] {
939
939
  display: grid;
940
940
  & > * {
@@ -1726,7 +1726,7 @@ and limitations under the License.
1726
1726
 
1727
1727
  }
1728
1728
  }
1729
- `.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++},mailRead:(mailboxID,emailAddressID,emailID)=>{for(const iterator of this.mailsRepeater.items){if(iterator.emailID!==emailID){continue}iterator.timeRead=DateTime.now;this.mailsRepeater.refreshItem(iterator)}}}));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,_g,_h;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;const engagements=(_d=thread.email.engagements)!==null&&_d!==void 0?_d:[];const tags=((_e=thread.email.tags)!==null&&_e!==void 0?_e:"").split(",").filter((x=>x));let readStatus="";let readColor="";if(sent){const timeRead=thread.timeRead&&DateTime.from(thread.timeRead);if(timeRead){readStatus=`Read ${DateFormats.relative.short(timeRead)}`;readColor="green"}else if(item.status==="sent"){readStatus="Sent";readColor="yellow"}else if(item.status==="scheduled"){readStatus="In queue";readColor="lightblue"}else{readStatus="";readColor=""}}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:(_f=item.senderUser)===null||_f===void 0?void 0:_f.displayName,text:(_g=item.senderUser)===null||_g===void 0?void 0:_g.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)))),XNode.create("div",{class:"engagements"},readStatus&&XNode.create("i",{class:"fa-solid fa-circle-small","style-color":readColor,title:readStatus}),...engagements.map((x=>XNode.create("span",{"data-click-event":"view-engagements","data-cursor":"pointer",title:`View all ${x.engagement} ${x.count}`,text:`${x.engagement} ${x.count}`})))),((_h=item.attachments)===null||_h===void 0?void 0:_h.length)&&XNode.create("div",{class:"attachments","data-layout":"flex-wrap-padding"},...item.attachments.map(FilePreview)),XNode.create("div",{"data-layout":"row","data-margin-top":"default","data-margin-bottom":"default"},...tags.map((x=>XNode.create("span",{text:`#${x.startsWith("#")?x.substring(1):x}`})))),!sent&&XNode.create("div",{"data-layout":"row","data-margin-top":"default"},XNode.create("i",{"data-click-event":"react-email",class:"fa-light fa-face-smile-plus",title:"React"}),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",title:"Reply All"}),XNode.create("i",{"data-click-event":"forward-email",class:"fa-solid fa-share-all",title:"Forward"})),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)}))}forwardEmail(thread,ce){return __awaiter(this,void 0,void 0,(function*(){void InlinePopup.show(ce.target,XNode.create("div",{"data-click-event":"none","data-click-animate":"none"},XNode.create(MenuItem,{eventClick:()=>CommonEvents.onEmailForward.dispatchEvent(thread),label:"As Inline Message"}),XNode.create(MenuItem,{eventClick:()=>CommonEvents.onEmailForwardAsAttachment.dispatchEvent(thread),label:"As Attachment"})),{alignment:"above"})}))}mailOptions(thread,ce){var _a,_b;return __awaiter(this,void 0,void 0,(function*(){void InlinePopupControl.showPopup(ce.target,XNode.create("div",{"data-click-event":"none","data-click-animate":"none"},((_a=thread.email)===null||_a===void 0?void 0:_a.status)==="published"&&XNode.create(MenuItem,{icon:"fas fa-delete","data-click-event":"un-publish-mail"}),XNode.create(MenuItem,{eventClick:()=>PageNavigator.pushPage(MailDetailPage,thread.email),icon:"fas fa-eye",label:"Details"}),XNode.create(MenuItem,{href:apiPath(`/api/emails/logs/${thread.email.mimeFileID}/${thread.email.emailID}.eml`),icon:"fas fa-download",label:"Download"}),XNode.create(MenuItem,{"data-click-event":"open-logs",icon:"fa-regular fa-clock-rotate-left",label:"Logs"}),((_b=thread.email)===null||_b===void 0?void 0:_b.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})}))}reactEmail(thread,ce){var _a;var _b;return __awaiter(this,void 0,void 0,(function*(){const emoji=yield EmojiPicker.show({parameters:{thread,preview:XNode.create("div",Object.assign({},renderMail(thread)))}});const{email:{emailID,subject}}=thread;const now=DateTime.now;const{emailAddressID}=thread;const email=Email.create({parentID:emailID,subject:"Re: "+subject,textBody:emoji+"\n",htmlBody:`<div>${emoji}</div>`,engagement:emoji,senderID:this.parameters.mailboxID,headers:JSON.stringify({"x-engagement":emoji}),dateSent:now,dateReceived:now,dateCreated:now,received:false,status:"scheduled",recipients:[EmailRecipient.create({emailAddressID})]});yield this.resolve(EntityService).save(email);const engagements=(_a=(_b=thread.email).engagements)!==null&&_a!==void 0?_a:_b.engagements=[];let e=engagements.find((x=>x.engagement===emoji));if(!e){e=EmailEngagement.create({engagement:emoji,emailID,count:1});engagements.add(e)}else{e.count++}this.mailsRepeater.refreshItem(thread)}))}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)}))}viewEngagements(thread){return __awaiter(this,void 0,void 0,(function*(){PageNavigator.pushPage(EngagementDetails,thread)}))}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:"forward-email"}),__metadata("design:type",Function),__metadata("design:paramtypes",[Object,CustomEvent]),__metadata("design:returntype",Promise)],ConversationPage.prototype,"forwardEmail",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:"react-email"}),__metadata("design:type",Function),__metadata("design:paramtypes",[Object,CustomEvent]),__metadata("design:returntype",Promise)],ConversationPage.prototype,"reactEmail",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:"view-engagements"}),__metadata("design:type",Function),__metadata("design:paramtypes",[Object]),__metadata("design:returntype",Promise)],ConversationPage.prototype,"viewEngagements",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&&x.contentType!=="snapshot"));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,showSnapShot=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))}if(!showSnapShot){q=q.where((x=>x.contentType!=="snapshot"))}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,isDeleted: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`
1729
+ `.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++},mailRead:(mailboxID,emailAddressID,emailID)=>{for(const iterator of this.mailsRepeater.items){if(iterator.emailID!==emailID){continue}iterator.timeRead=DateTime.now;this.mailsRepeater.refreshItem(iterator)}}}));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,_g,_h;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;const engagements=(_d=thread.email.engagements)!==null&&_d!==void 0?_d:[];const tags=((_e=thread.email.tags)!==null&&_e!==void 0?_e:"").split(",").filter((x=>x));let readStatus="";let readColor="";if(sent){const timeRead=thread.timeRead&&DateTime.from(thread.timeRead);if(timeRead){readStatus=`Read ${DateFormats.relative.short(timeRead)}`;readColor="green"}else if(item.status==="sent"){readStatus="Sent";readColor="yellow"}else if(item.status==="scheduled"){readStatus="In queue";readColor="lightblue"}else{readStatus="";readColor=""}}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:(_f=item.senderUser)===null||_f===void 0?void 0:_f.displayName,text:(_g=item.senderUser)===null||_g===void 0?void 0:_g.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)))),XNode.create("div",{class:"engagements"},readStatus&&XNode.create("i",{class:"fa-solid fa-circle-small","style-color":readColor,title:readStatus}),...engagements.map((x=>XNode.create("span",{"data-click-event":"view-engagements","data-cursor":"pointer",title:`View all ${x.engagement} ${x.count}`,text:`${x.engagement} ${x.count}`})))),((_h=item.attachments)===null||_h===void 0?void 0:_h.length)&&XNode.create("div",{class:"attachments","data-layout":"flex-wrap-padding"},...item.attachments.map(FilePreview)),XNode.create("div",{"data-layout":"row","data-margin-top":"default","data-margin-bottom":"default"},...tags.map((x=>XNode.create("span",{text:`#${x.startsWith("#")?x.substring(1):x}`})))),!sent&&XNode.create("div",{"data-layout":"row","data-margin-top":"default"},XNode.create("i",{"data-click-event":"react-email",class:"fa-light fa-face-smile-plus",title:"React"}),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",title:"Reply All"}),XNode.create("i",{"data-click-event":"forward-email",class:"fa-solid fa-share-all",title:"Forward"})),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)}))}forwardEmail(thread,ce){return __awaiter(this,void 0,void 0,(function*(){void InlinePopup.show(ce.target,XNode.create("div",{"data-click-event":"none","data-click-animate":"none"},XNode.create(MenuItem,{eventClick:()=>CommonEvents.onEmailForward.dispatchEvent(thread),label:"As Inline Message"}),XNode.create(MenuItem,{eventClick:()=>CommonEvents.onEmailForwardAsAttachment.dispatchEvent(thread),label:"As Attachment"})),{alignment:"above"})}))}mailOptions(thread,ce){var _a,_b;return __awaiter(this,void 0,void 0,(function*(){void InlinePopupControl.showPopup(ce.target,XNode.create("div",{"data-click-event":"none","data-click-animate":"none"},((_a=thread.email)===null||_a===void 0?void 0:_a.status)==="published"&&XNode.create(MenuItem,{icon:"fas fa-delete","data-click-event":"un-publish-mail"}),XNode.create(MenuItem,{eventClick:()=>PageNavigator.pushPage(MailDetailPage,thread.email),icon:"fas fa-eye",label:"Details"}),XNode.create(MenuItem,{href:apiPath(`/api/emails/logs/${thread.email.mimeFileID}/${thread.email.emailID}.eml`),icon:"fas fa-download",label:"Download"}),XNode.create(MenuItem,{"data-click-event":"open-logs",icon:"fa-regular fa-clock-rotate-left",label:"Logs"}),((_b=thread.email)===null||_b===void 0?void 0:_b.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})}))}reactEmail(thread,ce){var _a;var _b;return __awaiter(this,void 0,void 0,(function*(){const emoji=yield EmojiPicker.show({parameters:{thread,preview:XNode.create("div",Object.assign({},renderMail(thread)))}});const{email:{emailID,subject}}=thread;const now=DateTime.now;const{emailAddressID}=thread;const email=Email.create({parentID:emailID,subject:"Re: "+subject,textBody:emoji+"\n",htmlBody:`<div>${emoji}</div>`,engagement:emoji,senderID:this.parameters.mailboxID,headers:JSON.stringify({"x-engagement":emoji}),dateSent:now,dateReceived:now,dateCreated:now,received:false,status:"scheduled",recipients:[EmailRecipient.create({emailAddressID})]});yield this.resolve(EntityService).save(email);const engagements=(_a=(_b=thread.email).engagements)!==null&&_a!==void 0?_a:_b.engagements=[];let e=engagements.find((x=>x.engagement===emoji));if(!e){e=EmailEngagement.create({engagement:emoji,emailID,count:1});engagements.add(e)}else{e.count++}this.mailsRepeater.refreshItem(thread)}))}replyEmail({email},ce){var _a,_b;return __awaiter(this,void 0,void 0,(function*(){const parse=JSON.parse(email.headers);const replyTo=(_a=parse===null||parse===void 0?void 0:parse.replyTo)===null||_a===void 0?void 0:_a[0];const emailAddressText=this.parameters.emailAddress.emailAddress.toLocaleLowerCase();const name=email.senderName;const parentID=(_b=email.parentID)!==null&&_b!==void 0?_b:email.emailID;const recipients=[EmailRecipient.create({name,replyTo,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)}))}viewEngagements(thread){return __awaiter(this,void 0,void 0,(function*(){PageNavigator.pushPage(EngagementDetails,thread)}))}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:"forward-email"}),__metadata("design:type",Function),__metadata("design:paramtypes",[Object,CustomEvent]),__metadata("design:returntype",Promise)],ConversationPage.prototype,"forwardEmail",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:"react-email"}),__metadata("design:type",Function),__metadata("design:paramtypes",[Object,CustomEvent]),__metadata("design:returntype",Promise)],ConversationPage.prototype,"reactEmail",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:"view-engagements"}),__metadata("design:type",Function),__metadata("design:paramtypes",[Object]),__metadata("design:returntype",Promise)],ConversationPage.prototype,"viewEngagements",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&&x.contentType!=="snapshot"));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,showSnapShot=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))}if(!showSnapShot){q=q.where((x=>x.contentType!=="snapshot"))}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,isDeleted: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`
1730
1730
 
1731
1731
  display: flex;
1732
1732
  flex-direction: column;