mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-02-17 07:33:57 +00:00
2 lines
102 KiB
JavaScript
2 lines
102 KiB
JavaScript
!function(){"use strict";function c(e){var t=this;"function"!=typeof e.then&&(angular.extend(this,e),_.forEach(this.identities,function(e){var t;e.fullName&&e.email?e.full=e.fullName+" <"+e.email+">":e.email?e.full="<"+e.email+">":e.full="",e.signature&&(t=angular.element("<div>"+e.signature+"</div>"),e.textSignature=_.map(t.contents(),"textContent").join(" ").trim())}),this.$mailboxes)&&c.$Mailbox.$unwrapCollection(this,c.$q.when({mailboxes:this.$mailboxes})).then(function(e){t.$mailboxes=e})}c.$factory=["$q","$timeout","$log","sgSettings","Resource","Preferences","Mailbox","Message",function(e,t,s,n,i,a,o,r){return angular.extend(c,{$q:e,$timeout:t,$log:s,$$resource:new i(n.activeUser("folderURL")+"Mail",n.activeUser()),$Preferences:a,$Mailbox:o,$Message:r}),c}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").factory("Account",c.$factory),c.$findAll=function(e){return e?c.$unwrapCollection(e):c.$accounts?c.$q.when(c.$accounts):c.$$resource.fetch("","mailAccounts").then(function(e){return c.$unwrapCollection(e)})},c.$unwrapCollection=function(e){var s=[];return angular.forEach(e,function(e,t){e.id=t,s[t]=new c(e)}),c.$accounts=s},c.refreshUnseenCount=function(e){var t,s=1===c.$Preferences.defaults.SOGoMailFetchAllUnseenCountFolders,n=c.$Preferences.defaults.SOGoRefreshViewCheck;if(s)t=[];else{if(!e)throw Error("SOGoMailFetchAllUnseenCountFolders is disabled and no folders list provided");t=e}_.forEach(c.$accounts,function(e){s?_.forEach(e.$$flattenMailboxes,function(e){t.push(e.id)}):(_.includes(t,e.id+"/folderINBOX")||t.push(e.id+"/folderINBOX"),_.forEach(e.$$flattenMailboxes,function(e){angular.isDefined(e.unseenCount)&&!_.includes(t,e.id)&&t.push(e.id)}))}),c.$$resource.post("","unseenCount",{mailboxes:t}).then(function(t){_.forEach(c.$accounts,function(e){_.forEach(e.$$flattenMailboxes,function(e){angular.isDefined(t[e.id])&&(e.unseenCount=t[e.id])})})}),n&&"manually"!=n&&(c.$refreshUnseenCount&&c.$timeout.cancel(c.$refreshUnseenCount),c.$refreshUnseenCount=c.$timeout(angular.bind(this,c.refreshUnseenCount,e),1e3*n.timeInterval()))},c.prototype.getLength=function(){return this.$expanded?this.$flattenMailboxes().length:0},c.prototype.getItemAtIndex=function(e){var t=this.$flattenMailboxes();return 0<=e&&e<t.length?t[e]:null},c.prototype.$getMailboxes=function(e){var a=this,t=e&&e.reload;return this.$mailboxes&&!t?c.$q.when(this.$mailboxes):(!t&&this.$futureMailboxesData||(this.$futureMailboxesData=c.$Mailbox.$find(this,e).then(function(e){function s(e){_.forEach(e,function(e){var t=_.find(n,["id",e.id]);t&&(e.unseenCount=t.unseenCount),e.children&&0<e.children.length&&s(e.children)})}var n=a.$flattenMailboxes({all:!0});a.$mailboxes=e,a.$expanded=!1;s(a.$mailboxes);function t(e){_.forEach(e,function(e){e.$expanded=0<=i.indexOf("/"+e.id),e.children&&0<e.children.length&&t(e.children)})}var i;if(c.$Preferences.settings.Mail.ExpandedFolders){if(angular.isString(c.$Preferences.settings.Mail.ExpandedFolders))try{i=angular.fromJson(c.$Preferences.settings.Mail.ExpandedFolders)}catch(e){c.$log.warn("Can't parse list of expanded folders. String was: "+c.$Preferences.settings.Mail.ExpandedFolders),i=[]}else i=c.$Preferences.settings.Mail.ExpandedFolders;a.$expanded=0<=i.indexOf("/"+a.id),0<i.length&&t(a.$mailboxes)}return c.$accounts&&(a.$expanded|=1==c.$accounts.length),a.$flattenMailboxes({reload:!0}),a.$mailboxes})),this.$futureMailboxesData)},c.prototype.$flattenMailboxes=function(t){function s(e){_.forEach(e,function(e){n.push(e),(t&&t.all||e.$expanded)&&e.children&&0<e.children.length&&s(e.children)})}var n=[],i=[];return!this.$$flattenMailboxes||t&&(t.reload||t.all)?(s(this.$mailboxes),t&&t.all||(this.$$flattenMailboxes=n,t&&t.saveState&&(_.forEach(c.$accounts,function(e){e.$expanded&&i.push("/"+e.id),_.reduce(e.$$flattenMailboxes,function(e,t){return t.$expanded&&e.push("/"+t.id),e},i)}),c.$$resource.post(null,"saveFoldersState",i)))):n=this.$$flattenMailboxes,n},c.prototype.$getMailboxByType=function(s){function n(e){var t=_.find(e,function(e){return e.type==s});return t||angular.forEach(e,function(e){!t&&e.children&&0<e.children.length&&(t=n(e.children))}),t}return n(this.$mailboxes)},c.prototype.$getMailboxByPath=function(s){function n(e){var t=_.find(e,function(e){return e.path==s});return t||angular.forEach(e,function(e){!t&&e.children&&0<e.children.length&&(t=n(e.children))}),t}var e;if(null==(e=n(this.$mailboxes)))throw Error("No mailbox found matching path "+s);return e},c.prototype.$newMailbox=function(e,t){var s=this;return c.$$resource.post(e.toString(),"createFolder",{name:t}).then(function(){s.$getMailboxes({reload:!0})})},c.prototype.getTextSignature=function(e){var t;return e.signature?(t=angular.element("<div>"+e.signature+"</div>"),e.textSignature=_.map(t.contents(),"textContent").join(" ").trim()):e.textSignature="",e.textSignature},c.prototype.$hasCertificate=function(){return this.security&&this.security.hasCertificate},c.prototype.$certificate=function(){var t=this;return this.$hasCertificate()?this.$$certificate?c.$q.when(this.$$certificate):c.$$resource.fetch(this.id.toString(),"certificate").then(function(e){return t.$$certificate=e}):c.$q.reject()},c.prototype.$removeCertificate=function(){var e=this;return c.$$resource.fetch(this.id.toString(),"removeCertificate").then(function(){e.security.hasCertificate=!1})},c.prototype.updateQuota=function(e){var t,s;e.maxQuota?(t=Math.round(1e4*e.usedSpace/e.maxQuota)/100,s=l("quotasFormat").formatted(t,Math.round(e.maxQuota/10.24)/100)):e.maxMessages&&(t=Math.round(1e4*e.messagesCount/e.maxMessages)/100,s=l("messageQuotasFormat").formatted(t,e.maxMessages)),this.$quota={percent:t,description:s}},c.prototype.$newMessage=function(n){var i=this;return c.$$resource.fetch(this.id.toString(),"compose").then(function(e){return c.$log.debug("New message (compose): "+JSON.stringify(e,void 0,2)),new c.$Message(e.accountId,i.$getMailboxByPath(e.mailboxPath),e)}).then(function(s){return c.$$resource.fetch(s.$absolutePath({asDraft:!0}),"edit").then(function(e){var t=c.$Preferences.defaults.AuxiliaryMailAccounts[i.id];return t.security&&(t.security.alwaysSign&&(e.sign=!0),t.security.alwaysEncrypt)&&(e.encrypt=!0),c.$log.debug("New message (edit): "+JSON.stringify(e,void 0,2)),angular.extend(s.editable,e),s.isNew=!0,n&&n.mailto&&(angular.isObject(n.mailto)?angular.extend(s.editable,n.mailto):s.$parseMailto(n.mailto)),s})})},c.prototype.$addDelegate=function(e){var t=this,s=c.$q.defer(),n={uid:e.uid};return!e.uid||-1<_.indexOf(_.map(this.delegates,"uid"),e.uid)?s.resolve():c.$$resource.fetch(this.id.toString(),"addDelegate",n).then(function(){t.delegates.push(e),s.resolve(t.users)},function(e,t){s.reject(l("An error occured, please try again."))}),s.promise},c.prototype.$removeDelegate=function(t){var s=this,e={uid:t};return c.$$resource.fetch(this.id.toString(),"removeDelegate",e).then(function(){var e=_.indexOf(_.map(s.delegates,"uid"),t);0<=e&&s.delegates.splice(e,1)})},c.prototype.$omit=function(t){var s={},n=[],i=[],a=!1;return angular.forEach(this,function(e,t){"constructor"!=t&&"identities"!=t&&"$"!=t[0]&&(s[t]=angular.copy(e))}),t&&(_.forEach(this.$mailboxes,function(e){i.push(e.$omit(t))}),s.$mailboxes=i),_.forEach(this.identities,function(e){e.isReadOnly&&!t||n.push(_.pick(e,["email","fullName","replyTo","signature","isDefault"])),e.isDefault&&(a=e)}),s.identities=n,a&&s.forceDefaultIdentity||delete s.forceDefaultIdentity,s}}(),function(){"use strict";function u(e,t){this.$account=e,"function"!=typeof t.then?(this.init(t),this.name&&!this.path&&(e=u.$$resource.create("createFolder",this.name),this.$unwrap(e))):this.$unwrap(t)}u.$factory=["$q","$timeout","$log","$rootScope","sgSettings","Resource","Message","Acl","Preferences","sgMailbox_PRELOAD","sgMailbox_BATCH_DELETE_LIMIT",function(e,t,s,n,i,a,o,r,l,c,d){return angular.extend(u,{$q:e,$timeout:t,$log:s,$rootScope:n,$$resource:new a(i.activeUser("folderURL")+"Mail",i.activeUser()),$Message:o,$$Acl:r,$Preferences:l,$query:{sort:"arrival",asc:0},selectedFolder:null,$refreshTimeout:null,$virtualMode:!1,$virtualPath:!1,$searchMode:!1,PRELOAD:c,BATCH_DELETE_LIMIT:d}),l.settings.Mail.SortingState&&(u.$query.sort=l.settings.Mail.SortingState[0],u.$query.asc=parseInt(l.settings.Mail.SortingState[1])),u}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").constant("sgMailbox_PRELOAD",{LOOKAHEAD:50,SIZE:100}).constant("sgMailbox_BATCH_DELETE_LIMIT",1e3).factory("Mailbox",u.$factory),u.$find=function(e,t){t=t&&t.all?this.$$resource.fetch(e.id.toString(),"viewAll"):this.$$resource.fetch(e.id.toString(),"view");return u.$unwrapCollection(e,t)},u.$unwrapCollection=function(n,e){function i(e,t){t.isSentFolder=t.isSentFolder||"sent"==t.type,t.isDraftsFolder=t.isDraftsFolder||"draft"==t.type;for(var s=0;s<t.children.length;s++)t.children[s].level=e,t.children[s]=new u(n,t.children[s]),t.children[s].isSentFolder=t.isSentFolder,t.children[s].isDraftsFolder=t.isDraftsFolder,i(e+1,t.children[s])}var s=[];return e.then(function(e){return u.$timeout(function(){return angular.forEach(e.mailboxes,function(e,t){e.level=0;e=new u(n,e);i(1,e),s.push(e)}),e.quotas&&n.updateQuota(e.quotas),s})})},u.$absolutePath=function(e,t){var s=[];return(s=t?_.map(t.split("/"),function(e){return"folder"+e.asCSSIdentifier()}):s).splice(0,0,e),s.join("/")},u.prototype.init=function(e){(angular.isUndefined(this.uidsMap)||e.headers)&&(this.$isLoading=!0,this.$messages=[],this.uidsMap={},this.$visibleMessages=this.$messages,this.$selectedMessages=[]),angular.isUndefined(this.$highlightWords)&&(this.$highlightWords=[]),angular.extend(this,e),this.path&&(this.id=this.$id(),this.$acl=new u.$$Acl("Mail/"+this.id),this.threaded)&&(this.$collapsedThreads=[],u.$Preferences.settings.Mail.threadsCollapsed)&&u.$Preferences.settings.Mail.threadsCollapsed["/"+this.id]&&(this.$collapsedThreads=u.$Preferences.settings.Mail.threadsCollapsed["/"+this.id]),this.$displayName=this.name,this.type&&(this.$isEditable=this.isEditable(),this.$isSpecial=!0,"inbox"==this.type?(this.$displayName=l("InboxFolderName"),this.$icon="inbox"):"draft"==this.type?(this.$displayName=l("DraftsFolderName"),this.$icon="drafts"):"sent"==this.type?(this.$displayName=l("SentFolderName"),this.$icon="send"):"trash"==this.type?(this.$displayName=l("TrashFolderName"),this.$icon="delete"):"junk"==this.type?(this.$displayName=l("JunkFolderName"),this.$icon="thumb_down"):"templates"==this.type?(this.$displayName=l("TemplatesFolderName"),this.$icon="mail_outline"):"additional"==this.type?this.$icon="folder":"shared"==this.type||"otherUsers"==this.type?this.$icon="folder_shared":"dropbox"==this.type?this.$icon="drive_folder_upload":(this.$isSpecial=!1,this.$icon="folder")),this.$isNoInferiors=this.isNoInferiors(),angular.isUndefined(this.$shadowData)&&(this.$shadowData=this.$omit())},u.prototype.selectFolder=function(){u.$virtualMode||(u.selectedFolder=this)},u.prototype.setSearchMode=function(e){u.$searchMode=e},u.prototype.getLength=function(){return this.$visibleMessages.length},u.prototype.getItemAtIndex=function(e){var t;return 0<=e&&e<this.$visibleMessages.length?(t=this.$visibleMessages[e],this.$lastVisibleIndex=Math.max(0,e-3),this.$loadMessage(t.uid),t):null},u.prototype.$id=function(){return u.$absolutePath(this.$account.id,this.path)},u.prototype.selectedMessages=function(e){return e&&e.updateCache&&(this.$selectedMessages=_.filter(this.$messages,function(e){return e.selected})),this.$selectedMessages},u.prototype.selectedCount=function(){return this.$selectedMessages.length},u.prototype.$unselectMessages=function(){_.forEach(this.$selectedMessages,function(e){e.selected=!1}),this.$selectedMessages=[]},u.prototype.isSelectedMessage=function(e){return this.$selectedMessage==e},u.prototype.selectedMessage=function(){var t=this;return _.find(this.$messages,function(e){return e.uid==t.$selectedMessage})},u.prototype.$selectedMessageIndex=function(){return this.uidsMap[this.$selectedMessage]},u.prototype.hasSelectedMessage=function(){return angular.isDefined(this.$selectedMessage)},u.prototype.$filter=function(e,t){var s=this,n="view",i={},e=(angular.isDefined(this.unseenCount)||(this.unseenCount=0),this.$isLoading=!0,u.$refreshTimeout&&u.$timeout.cancel(u.$refreshTimeout),e&&angular.extend(u.$query,e),t&&0<t.length&&(this.$highlightWords=[],t.forEach(e=>{"subject_or_from"!=e.searchBy&&"subject_or_to"!=e.searchBy&&"contains"!=e.searchBy&&"body"!=e.searchBy&&"from"!=e.searchBy&&"to"!=e.searchBy&&"subject"!=e.searchBy||e.searchInput.split(" ").forEach(e=>{e=e.trim().toLowerCase();this.$highlightWords.includes(e)||this.$highlightWords.push(e)})})),angular.extend(i,{sortingAttributes:u.$query}),angular.isDefined(t)?(i.filters=_.reject(angular.copy(t),function(e){return!e.searchInput||0===e.searchInput.length}),_.forEach(i.filters,function(e){var t=e.searchBy.match(/(\w+)_or_(\w+)/);t&&(i.sortingAttributes.match="OR",e.searchBy=t[1],(e=angular.copy(e)).searchBy=t[2],i.filters.push(e))})):e||this.$flaggedOnly||this.$unseenOnly||!this.$syncToken||(n="changes",i.syncToken=this.$syncToken),this.$unseenOnly&&(i.unseenOnly=1),this.$flaggedOnly&&(i.flaggedOnly=1),_.filter(_.keys(this.$filteredLabels),function(e){return!!s.$filteredLabels[e]})),t=(e.length&&(i.labels=e),u.$virtualMode||(e=u.$Preferences.defaults.SOGoRefreshViewCheck)&&"manually"!=e&&(t=angular.bind(this,u.prototype.$filter,null,t),u.$refreshTimeout=u.$timeout(t,1e3*e.timeInterval())),u.$$resource.post(this.id,n,i));return this.$unwrap(t)},u.prototype.$loadMessage=function(e){var t,s,n=this.uidsMap[e],i=this.$messages.length,a=!1;if(angular.isDefined(this.uidsMap[e])&&n<this.$messages.length&&(angular.isDefined(this.$messages[n].subject)&&(a=!0),t=Math.min(n+u.PRELOAD.LOOKAHEAD,i-1),angular.isDefined(this.$messages[t].subject)||angular.isDefined(this.$messages[t].loading)?(e=Math.max(n-u.PRELOAD.LOOKAHEAD,0),angular.isDefined(this.$messages[e].subject)||angular.isDefined(this.$messages[e].loading)||(t=n,n=Math.max(n-u.PRELOAD.SIZE,0))):t=Math.min(n+u.PRELOAD.SIZE,i-1),!angular.isDefined(this.$messages[n].subject)&&!angular.isDefined(this.$messages[n].loading)||!angular.isDefined(this.$messages[t].subject)&&!angular.isDefined(this.$messages[t].loading))){for(s=[];n<t&&n<i;n++)angular.isDefined(this.$messages[n].subject)||this.$messages[n].loading?t++:(s.push(this.$messages[n].uid),this.$messages[n].loading=!0);s.length&&(u.$log.debug("Loading UIDs "+s.join(" ")),e=u.$$resource.post(this.id,"headers",{uids:s}),this.$unwrapHeaders(e))}return a},u.prototype.isEditable=function(){return"folder"==this.type},u.prototype.isNoInferiors=function(){return 0<=this.flags.indexOf("noinferiors")},u.prototype.isNoSelect=function(){return 0<=this.flags.indexOf("noselect")},u.prototype.isWritable=function(){return this.flags.indexOf("noselect")<0||"dropbox"==this.type},u.prototype.getClassName=function(e){return!1},u.prototype.$rename=function(){var n,e,i,a,o=this;return this.name==this.$shadowData.name?u.$q.when():(e=(n=function(e,t){var s=null;return _.find(t,function(e){return e.path==o.path})?s=e:angular.forEach(t,function(e){!s&&e.children&&0<e.children.length&&(s=n(e,e.children))}),s})(null,this.$account.$mailboxes),i=null===e?this.$account.$mailboxes:e.children,a=_.indexOf(_.map(i,"id"),this.id),this.$save().then(function(e){function t(e){_.forEach(e.children,function(e){e.path=e.path.replace(n,o.path),e.id=e.$id(),t(e)})}var s=o.path,n=(o.init(e),i.splice(a,1),e=_.find(i,function(e){return"folder"==e.type&&0<e.name.localeCompare(o.name)}),a=e?_.indexOf(_.map(i,"id"),e.id):i.length,i.splice(a,0,o),new RegExp("^"+s));t(o)}))},u.prototype.$compact=function(){var t=this;return u.$$resource.post(this.id,"expunge").then(function(e){return e.quotas&&t.$account.updateQuota(e.quotas),!0})},u.prototype.$canFolderAs=function(){return"folder"==this.type},u.prototype.$setFolderAs=function(e){return u.$$resource.post(this.id,"setAs"+e+"Folder")},u.prototype.$empty=function(){var t=this,e="empty"+this.type[0].capitalize()+this.type.substring(1);return u.$$resource.post(this.id,e).then(function(e){t.$messages=t.$visibleMessages=[],t.uidsMap={},t.unseenCount=0,angular.isDefined(t.children)&&t.children.length&&t.$account.$getMailboxes({reload:!0}),e.quotas&&t.$account.updateQuota(e.quotas)})},u.prototype.$markAsRead=function(){var e=this;return u.$$resource.post(this.id,"markRead").then(function(){e.unseenCount=0,_.forEach(e.$messages,function(e){e.isread=!0})})},u.prototype.getLabels=function(e){var t=this;return!this.$labels||e&&e.reload?(angular.isUndefined(this.$filteredLabels)&&(this.$filteredLabels={}),u.$$resource.fetch(this.id,"labels").then(function(e){return t.$labels=e,t.$labels})):u.$q.when(this.$labels)},u.prototype.filteredByLabel=function(){return _.includes(this.$filteredLabels,1)},u.prototype.$flagMessages=function(e,t,s){t={msgUIDs:_.map(e,"uid"),flags:t,operation:s};return u.$$resource.post(this.id,"addOrRemoveLabel",t).then(function(){return e})},u.prototype.forwardMessages=function(e){var t=this,e=_.map(e,"uid");return u.$$resource.post(this.id,"forwardMessages",{uids:e}).then(function(e){return u.$log.debug("Forward selected messages: "+JSON.stringify(e,void 0,2)),new u.$Message(e.accountId,t.$account.$getMailboxByPath(e.mailboxPath),e)})},u.prototype.saveSelectedMessages=function(){var e=_.filter(this.$messages,function(e){return e.selected}),e=_.map(e,"uid");l("Saved Messages.zip");return u.$$resource.download(this.id,"saveMessages",{uids:e})},u.prototype.exportFolder=function(){var e={filename:this.name+".zip"};return u.$$resource.open(this.id,"exportFolder",null,e)},u.prototype.$delete=function(e){var t=this;return u.$$resource.post(this.id,"delete",e).then(function(){return t.$account.$getMailboxes({reload:!0}),!0})},u.prototype.$_deleteMessages=function(n){var i=this,a=this.$messages.length;return _.forEachRight(this.$messages,function(t,e){var s=_.findIndex(n,function(e){return t.uid==e});-1<s?(n.splice(s,1),delete i.uidsMap[t.uid],t.uid==i.$selectedMessage&&delete i.$selectedMessage,i.$messages.splice(e,1),e<a&&(a=e)):i.uidsMap[t.uid]-=n.length}),this.threaded&&this.updateVisibleMessages(),a},u.prototype.$deleteMessages=function(e,i){var a,o=this,r=u.BATCH_DELETE_LIMIT;return a=_.map(e,"uid"),function t(e,s){var n=a.slice(e,s),e={uids:n};return i&&angular.extend(e,i),u.$$resource.post(o.id,"batchDelete",e).then(function(e){return s<a.length?(o.$_deleteMessages(n),t(s,Math.min(s+r,a.length))):(e.quotas&&o.$account.updateQuota(e.quotas),angular.isDefined(e.unseenCount)&&(o.unseenCount=e.unseenCount),o.$_deleteMessages(n))})}(0,Math.min(r,a.length)).then(function(e){return o.$selectedMessages=[],e})},u.prototype.$markOrUnMarkMessagesAsJunk=function(e){var e=_.map(e,"uid"),t="junk"==this.type?"markMessagesAsNotJunk":"markMessagesAsJunk";return u.$$resource.post(this.id,t,{uids:e})},u.prototype.$copyMessages=function(e,t){var s=this,e=_.map(e,"uid");return u.$$resource.post(this.id,"copyMessages",{uids:e,folder:t}).then(function(e){e.quotas&&s.$account.updateQuota(e.quotas)})},u.prototype.$moveMessages=function(e,t){var s=this,n=_.map(e,"uid");return u.$$resource.post(this.id,"moveMessages",{uids:n,folder:t}).then(function(e){return angular.isDefined(e.unseenCount)&&(s.unseenCount=e.unseenCount),s.$selectedMessages=[],s.$_deleteMessages(n)})},u.prototype.$move=function(e){var t=this;return u.$$resource.post(this.id,"move",{parent:e}).finally(function(){return t.$account.$getMailboxes({reload:!0}),!0})},u.prototype.$save=function(){var t=this;return u.$$resource.save(this.id,this.$omit()).then(function(e){return t.$shadowData=t.$omit(),u.$log.debug(JSON.stringify(e,void 0,2)),e},function(e){return u.$log.error(JSON.stringify(e.data,void 0,2)),t.$reset(),e.data})},u.prototype.$newMailbox=function(e,t){return this.$account.$newMailbox(e,t)},u.prototype.$reset=function(e){var t,s=this;angular.forEach(this.$shadowData,function(e,t){delete s[t]}),t=Object.assign({},s.$account),angular.extend(this,this.$shadowData),this.$shadowData=this.$omit(),this.account=t,e&&e.unseenCount&&(this.unseenCount=e.unseenCount,delete e.unseenCount),e&&e.filter&&(this.$messages=[],this.$visibleMessages=[],delete this.$syncToken)},u.prototype.$omit=function(t){var e,s,n={};return angular.forEach(this,function(e,t){"constructor"!=t&&"children"!=t&&"headers"!=t&&"uids"!=t&&"uidsMap"!=t&&"$"!=t[0]&&(n[t]=e)}),t&&this.children&&(n.children=(e=this.children,s=[],_.forEach(e,function(e){s.push(e.$omit(t))}),s)),n},u.prototype.updateVisibleMessages=function(){var s=!1;this.threaded&&(this.$visibleMessages=_.filter(this.$messages,function(e,t){return e.first?s=e.collapsed:e.level<0&&(s=!1),e.first||!1===s}))},u.prototype.$unwrap=function(e){u.$rootScope.$broadcast("beforeListRefresh");var c=this,d=u.$q.defer();return this.$futureMailboxData=e,this.$futureMailboxData.then(function(r){var l=_.map(c.$selectedMessages,"uid");u.$timeout(function(){var a,e,s,t,n=!1;if((!r.uids||c.$topIndex>r.uids.length-1)&&(c.$topIndex=0),r.syncToken&&(c.$syncToken=r.syncToken),r.deleted&&(_.forEachRight(r.deleted,function(e,t){e=c.uidsMap[e.toString()];(e<0||!c.$messages[e])&&r.deleted.splice(t,1)}),r.deleted.length)&&c.$_deleteMessages(r.deleted),r.changed){var i,o=0;if(_.forEach(r.changed,function(e){angular.isUndefined(c.uidsMap[e.toString()])&&(c.uidsMap[e]=o,c.$messages.splice(o,0,{uid:e}),n=!0,o++)}),0<o)for(i=o;i<c.$messages.length;i++)t=c.$messages[i],c.uidsMap[t.uid]+=o}angular.isDefined(r.unseenCount)&&(c.unseenCount=r.unseenCount),r.uids&&(u.$log.debug("unwrapping "+r.uids.length+" messages"),n=!0,c.init(r),c.threaded&&(a=c.uids[0],c.uids.splice(0,1)),_.reduce(c.uids,function(e,t,s){var n;if(c.threaded)if(1===(n=_.zipObject(a,t)).first){for(var i=1;c.uids[s+i]&&0<=c.uids[s+i][1]&&1!==c.uids[s+i][2];)i++;n.count=i,n.collapsed=!1,0<=c.$collapsedThreads.indexOf(n.uid.toString())&&(n.collapsed=!0)}else!isNaN(n.level)&&0<=n.level&&(n.threadMember=!0);else n={uid:t};return c.uidsMap[n.uid]=s,n.selected=-1<l.indexOf(n.uid),e.push(n),e},c.$messages)),r.headers&&(s=_.invokeMap(r.headers.splice(0,1)[0],"toLowerCase"),e=r.headers,_.forEach(e,function(e){var e=_.zipObject(s,e),t=c.uidsMap[e.uid.toString()];c.$messages[t]instanceof u.$Message||(c.$messages[t]=new u.$Message(c.$account.id,c,c.$messages[t],!0)),c.$messages[t].init(e)})),n&&c.threaded&&c.updateVisibleMessages(),r.quotas&&c.$account.updateQuota(r.quotas),u.$log.debug("mailbox "+c.id+" ready"),c.$isLoading=!1,u.$rootScope.$broadcast("listRefreshed"),d.resolve(c.$messages)})},function(e){u.$log.error(e),angular.extend(c,e),c.isError=!0,c.$isLoading=!1,d.reject()}),d.promise},u.prototype.$unwrapHeaders=function(e){var n=this;e.then(function(e){u.$timeout(function(){var t,s;0<e.length&&(t=_.invokeMap(e[0],"toLowerCase"),e.splice(0,1),_.forEach(e,function(e){e=_.zipObject(t,e),s=n.uidsMap[e.uid.toString()],angular.isDefined(s)&&(n.$messages[s]instanceof u.$Message||(n.$messages[s]=new u.$Message(n.$account.id,n,n.$messages[s],!0)),n.$messages[s].init(e))}),n.threaded)&&n.updateVisibleMessages()})})},u.prototype.$updateSubscribe=function(){var e=this.subscribed?"subscribe":"unsubscribe";u.$$resource.post(this.id,e)},u.prototype.setHighlightWords=function(e){this.$highlightWords=e},u.prototype.getHighlightWords=function(){return this.$highlightWords},u.prototype.cleanMailbox=function(e){return 0<e.folders.length?u.$$resource.post(this.id.split("/")[0],"cleanMailbox",e):u.$$resource.post(this.id,"cleanMailbox",e)}}(),function(){"use strict";function r(e,t,s,n){this.accountId=e,this.$mailbox=t,this.$hasUnsafeContent=!1,this.$loadUnsafeContent=!1,this.editable={to:[],cc:[],bcc:[]},this.selected=!1,"function"!=typeof s.then?(!angular.isUndefined(n)&&n||this.init(s),this.uid=parseInt(s.uid),this.selected=!!s.selected,this.level=parseInt(s.level),this.first=1===parseInt(s.first),this.flags=[],this.first?(this.threadCount=parseInt(s.count),this.collapsed=!0===s.collapsed):!isNaN(this.level)&&0<=this.level&&(this.threadMember=!0)):this.$unwrap(s)}r.$factory=["$q","$timeout","$log","sgSettings","sgMessage_STATUS","Resource","Preferences",function(e,t,s,n,i,a,o){return angular.extend(r,{STATUS:i,$q:e,$timeout:t,$log:s,$$resource:new a(n.activeUser("folderURL")+"Mail",n.activeUser()),$Preferences:o,$avatar:angular.bind(o,o.avatar)}),o.defaults.SOGoMailLabelsColors?r.$tags=o.defaults.SOGoMailLabelsColors:r.$tags={},o.defaults.SOGoMailDisplayRemoteInlineImages&&"always"==o.defaults.SOGoMailDisplayRemoteInlineImages&&(r.$displayRemoteInlineImages=!0),r}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").constant("sgMessage_STATUS",{NOT_LOADED:0,DELAYED_LOADING:1,LOADING:2,LOADED:3,DELAYED_MS:300}).factory("Message",r.$factory),r.filterTags=function(e,s){var n=new RegExp(e,"i"),i=[];return _.forEach(_.keys(r.$tags),function(e){var t=r.$tags[e];-1==t[0].search(n)||_.includes(s,e)||i.push({name:e,description:t[0],color:t[1]})}),i},r.prototype.init=function(e){var s=this;angular.extend(this,e),this.$formatFullAddresses(),this.$loadUnsafeContent=!1,_.forEach(this.flags,function(e,t){"$"==e.charAt(0)&&s.flags.splice(t,1,"_"+e)}),this.isread=!angular.isDefined(this.isread)||!!this.isread},r.prototype.$absolutePath=function(e){var t=this,s=this.id;function n(){var e=_.map(t.$mailbox.path.split("/"),function(e){return"folder"+e.asCSSIdentifier()});return e.splice(0,0,t.accountId),e.join("/")}return(angular.isUndefined(this.id)||e&&e.nocache)&&(this.id=n()+"/"+this.uid,s=this.id),e&&e.asDraft&&this.draftId&&(s=n()+"/"+this.draftId),s=e&&e.withResourcePath?r.$$resource.path(s):s},r.prototype.$setUID=function(e){var t,s=this.uid||-1,n=this;s!=parseInt(e)&&(this.uid=parseInt(e),this.$absolutePath({nocache:!0}),-1<s?(s=s.toString(),angular.isDefined(this.$mailbox.uidsMap[s])&&(t=this.$mailbox.uidsMap[s],this.$mailbox.uidsMap[e]=t,delete this.$mailbox.uidsMap[s],this.$mailbox.$messages[t].uid=this.uid,_.forEach(["from","to","subject"],function(e){n.$mailbox.$messages[t][e]=n.editable[e]}))):this.$mailbox.constructor.selectedFolder&&"draft"==this.$mailbox.constructor.selectedFolder.type&&this.$mailbox.constructor.selectedFolder.$filter())},r.prototype.$formatFullAddresses=function(){var t=this,s=_.map(t.$mailbox.$account.identities,"email");_.forEach(["from","to","cc","bcc","reply-to"],function(e){_.forEach(t[e],function(e){e.name&&e.name!=e.email?(e.full=e.name+" <"+e.email+">",e.name.length<10?e.shortname=e.name:e.name.split(" ").length&&(e.shortname=_.first(_.last(e.name.split(/, */)).split(/ +/)).replace("'",""))):e.email&&(e.full="<"+e.email+">",e.shortname=e.email.split("@")[0]),e.image=r.$avatar(e.email,32),0<=_.indexOf(s,e.email)&&(e.shortname=l("me"))})})},r.prototype.$shortRecipients=function(s){var t=this,n=[],i=0,a=0;return _.forEach(["to","cc","bcc"],function(e){a+=t[e]?t[e].length:0,_.forEach(t[e],function(e,t){i<s&&n.push(e.shortname),i++})}),s<a&&n.push(l("and %{0} more...",a-s)),n.join(", ")},r.prototype.$shortAddress=function(e,t){var s,n="";return this[e]&&(angular.isString(this[e])?(n=(s=this[e].match(String.emailRE))?(n=this[e].substring(0,s.index)).replace(/^\"? *(.+?)\"? *$/,"$1"):n).length||(n=this[e]):0<this[e].length&&(n=t&&this[e][0].name&&this[e][0].email?this[e][0].name+" <"+this[e][0].email+">":this[e][0].name||this[e][0].email||"")),punycode.toUnicode(n)},r.prototype.allowReplyAll=function(){var n=_.map(this.$mailbox.$account.identities,"email"),e=_.reduce(["to","cc","bcc","reply-to"],_.bind(function(e,t){var s=0;return this[t]?(s=this[t].length,_.forEach(this[t],function(e){0<=_.indexOf(n,e.email)&&s--}),e+s):e},this),0);return!this.isDraft&&1<e},r.prototype.loadUnsafeContent=function(){this.$loadUnsafeContent=!0,delete this.$parts},r.prototype.$content=function(){this.to&&0<this.to.length&&this.to.forEach(function(e,t,s){e.email&&0<e.email.indexOf("@")&&(s[t].email=punycode.toUnicode(e.email))}),this.from&&0<this.from.indexOf("@")&&(this.from=punycode.toUnicode(this.from));var t=this,s=[],n=function(a){var e;a.msgclass="msg-attachment-other","UIxMailPartAlternativeViewer"==a.type?n(_.find(a.content,function(e){return a.preferredPart==e.contentType})):angular.isArray(a.content)?(("UIxMailPartSignedViewer"==a.type&&1===a["supports-smime"]||"UIxMailPartEncryptedViewer"==a.type&&(a.encrypted&&(t.encrypted={valid:a.decrypted},a.decrypted?t.encrypted.message=l("This message is encrypted"):t.encrypted.message=l("This message can't be decrypted. Please make sure you have uploaded your S/MIME certificate from the mail preferences module.")),a.opaqueSigned))&&(t.signed={valid:a.valid,certificate:a.certificates[a.certificates.length-1],message:a.message}),(e=_.find(a.content,function(e){return"UIxMailPartTnefViewer"==e.type&&0<e.content.length}))&&!_.find(a.content,function(e){return"UIxMailPartAlternativeViewer"==e.type})?n(e):_.forEach(a.content,function(e){n(e)})):(angular.isUndefined(a.safeContent)&&(a.safeContent=a.content,t.$hasUnsafeContent|=-1<a.safeContent.indexOf(" unsafe-")),"UIxMailPartHTMLViewer"==a.type?(a.html=!0,t.$loadUnsafeContent||r.$displayRemoteInlineImages?(angular.isUndefined(a.unsafeContent)&&(a.unsafeContent=document.createElement("div"),a.unsafeContent.innerHTML=a.safeContent,angular.forEach(["src","data","classid","background","style"],function(e){for(var t,s,n=a.unsafeContent.querySelectorAll("[unsafe-"+e+"]"),i=0;i<n.length;i++)s=(t=angular.element(n[i])).attr("unsafe-"+e),t.attr(e,s),t.removeAttr("unsafe-"+e)}),t.$hasUnsafeContent=!1),a.content=a.unsafeContent.innerHTML):a.content=a.safeContent,s.push(a)):"UIxMailPartICalViewer"==a.type||"UIxMailPartImageViewer"==a.type||"UIxMailPartLinkViewer"==a.type?("UIxMailPartImageViewer"==a.type?a.msgclass="msg-attachment-image":"UIxMailPartLinkViewer"==a.type&&(a.msgclass="msg-attachment-link"),a.compile=!0,Object.hasOwn(a,"shouldDisplayAttachment")&&1!=a.shouldDisplayAttachment||(r.$Preferences.defaults.SOGoMailDisplayAttachmentAbove?s.unshift(a):s.push(a))):(a.html=!0,a.content=a.safeContent,s.push(a)))};if(this.$parts)return this.$parts;if(this.parts&&n(this.parts),s&&this.$mailbox&&0<this.$mailbox.getHighlightWords().length)for(var e=0,e=0;e<s.length;e++)s[e]&&s[e].type&&("UIxMailPartHTMLViewer"==s[e].type||"UIxMailPartTextViewer"==s[e].type)&&(s[e].content=this.highlightSearchTerms(s[e].content,!1),this.subject=this.getHighlightSubject(),this.from=this.getHighlightFrom());return this.$parts=s},r.prototype.highlightSearchTerms=function(e,t){var s;return this.$mailbox.getHighlightWords()&&0<this.$mailbox.getHighlightWords().length&&e&&-1===e.indexOf("data-markjs")?((s=document.createElement("DIV")).innerHTML=t?e.encodeEntities():e,new Mark(s).mark(this.$mailbox.getHighlightWords()),e=s.innerHTML,s.remove()):t&&(e=e.encodeEntities()),e},r.prototype.getHighlightSubject=function(){return this.highlightSearchTerms(this.subject,!1)},r.prototype.getHighlightFrom=function(){for(var e=0,e=0;e<this.from.length;e++)this.from[e].fullHighlighted=this.highlightSearchTerms(this.from[e].full,!1),this.from[e].nameHighlighted=this.highlightSearchTerms(this.from[e].name,!1);return this.from},r.prototype.$editableContent=function(){var s=this;return r.$$resource.fetch(this.$absolutePath(),"edit").then(function(e){return angular.extend(s,e),r.$$resource.fetch(s.$absolutePath({asDraft:!0}),"edit").then(function(t){var e=_.find(s.$mailbox.$account.identities,function(e){return t.from&&-1!==t.from.toLowerCase().indexOf(e.email)}),e=(e&&(t.from=e.full),r.$Preferences.defaults.AuxiliaryMailAccounts[s.$mailbox.$account.id]);return e.security&&(e.security.alwaysSign&&(t.sign=!0),e.security.alwaysEncrypt)&&(t.encrypt=!0),r.$log.debug("editable = "+JSON.stringify(t,void 0,2)),angular.extend(s.editable,t),t.text})})},r.prototype.$plainContent=function(){return r.$$resource.fetch(this.$absolutePath(),"viewplain")},r.prototype.addTag=function(s){var n=this,i=s.replace(/^_\$/,"$");return this.$mailbox.getLabels().then(function(e){var t=!_.find(e,function(e){return e.imapName==i});return n.$addOrRemoveTag("add",s).then(function(){t&&n.$mailbox.getLabels({reload:!0})})})},r.prototype.removeTag=function(e){return this.$addOrRemoveTag("remove",e)},r.prototype.$addOrRemoveTag=function(e,t){e={operation:e,msgUIDs:[this.uid],flags:t.replace(/^_\$/,"$")};if(t)return r.$$resource.post(this.$mailbox.$id(),"addOrRemoveLabel",e)},r.prototype.toggleRead=function(){var e=this;return this.isread?r.$$resource.fetch(this.$absolutePath(),"markMessageUnread").then(function(){r.$timeout(function(){e.isread=!1,e.$mailbox.unseenCount++})}):r.$$resource.fetch(this.$absolutePath(),"markMessageRead").then(function(){r.$timeout(function(){e.isread=!0,e.$mailbox.unseenCount--})})},r.prototype.$imipAction=function(e,t,s){var n=this;r.$$resource.post([this.$absolutePath(),e].join("/"),t,s).then(function(e){r.$timeout(function(){n.$reload()})})},r.prototype.$sendMDN=function(){return this.shouldAskReceipt=0,r.$$resource.post(this.$absolutePath(),"sendMDN")},r.prototype.hasAttachments=function(e){var t=this;return!!_.find(e||this.parts.content,function(e){return angular.isArray(e.content)?t.hasAttachments(e.content):"UIxMailPartLinkViewer"==e.type||"UIxMailPartImageViewer"==e.type})},r.prototype.$deleteAttachment=function(t){var e={filename:t},s=this;return r.$$resource.fetch(this.$absolutePath({asDraft:!0}),"deleteAttachment",e).then(function(){r.$timeout(function(){s.editable.attachmentAttrs=_.filter(s.editable.attachmentAttrs,function(e){return e.filename!=t})})})},r.prototype.toggleFlag=function(){var t=this,e="markMessageFlagged";return this.isflagged&&(e="markMessageUnflagged"),r.$$resource.post(this.$absolutePath(),e).then(function(e){r.$timeout(function(){t.isflagged=!t.isflagged})})},r.prototype.toggleThread=function(){var e=this,t="markMessageCollapse";return this.collapsed&&(t="markMessageUncollapse"),this.collapsed=!this.collapsed,this.$mailbox.updateVisibleMessages(),r.$$resource.post(this.$absolutePath(),t).catch(function(){this.collapsed=!this.collapsed,e.$mailbox.updateVisibleMessages()})},r.prototype.$isLoading=function(){return this.$loaded==r.STATUS.LOADING},r.prototype.$reload=function(e){var t=this;return e&&e.useCache&&this.$futureMessageData?(this.isread||-1<r.$Preferences.defaults.SOGoMailAutoMarkAsReadDelay&&(t.$markAsReadPromise=r.$timeout(function(){r.$$resource.fetch(t.$absolutePath(),"markMessageRead").then(function(){t.isread=!0,t.$mailbox.unseenCount--})},1e3*r.$Preferences.defaults.SOGoMailAutoMarkAsReadDelay)),this):(e=e&&e.raw?r.$$resource.fetch(this.$absolutePath(e),"viewRaw"):r.$$resource.fetch(this.$absolutePath(e),"view"),this.$unwrap(e))},r.prototype.$parseMailto=function(s){var e,n={},i=/^mailto:([^\?]+)/.exec(s);i&&(e=_.map(decodeURIComponent(i[1]).split(","),function(e){return"<"+e.trim()+">"}),n={to:e}),_.forEach(["subject","body"],function(e){var t=new RegExp(e+"=([^&]+)");e="body"==e?"text":e,(i=t.exec(s))&&(n[e]=decodeURIComponent(i[1]))}),"html"==r.$Preferences.defaults.SOGoMailComposeMessageType&&n.text&&0<n.text.length&&(n.text=n.text.replace(/(\r\n|\n|\r)/g,"<br/>")),_.forEach(["cc","bcc"],function(e){var t=new RegExp(e+"=([^&]+)");(i=t.exec(s))&&(n[e]=_.map(decodeURIComponent(i[1]).split(","),function(e){return"<"+e.trim()+">"}))}),_.isEmpty(n)||angular.extend(this.editable,n)},r.prototype.$reply=function(){return this.$newDraft("reply")},r.prototype.$replyAll=function(){return this.$newDraft("replyall")},r.prototype.$forward=function(){return this.$newDraft("forward")},r.prototype.$compose=function(){return this.$newDraft("compose")},r.prototype.$newDraft=function(n){var i=this;return r.$$resource.fetch(this.$absolutePath(),n).then(function(e){var t,s;return r.$log.debug("New "+n+": "+JSON.stringify(e,void 0,2)),t=i.$mailbox.$account.$getMailboxByPath(e.mailboxPath),s=new r(e.accountId,t,e),r.$$resource.fetch(s.$absolutePath({asDraft:!0}),"edit").then(function(e){r.$log.debug("New "+n+": "+JSON.stringify(e,void 0,2)+" original UID: "+i.uid);var t=r.$Preferences.defaults.AuxiliaryMailAccounts[i.$mailbox.$account.id];return t.security&&(t.security.alwaysSign&&(e.sign=!0),t.security.alwaysEncrypt)&&(e.encrypt=!0),e.isHTML&&(t=(t=(t=(t=(t=(t=(t=e.text).replace(/<\/?html[^>]*>/g,"")).replace(/<\/?body[^>]*>/g,"")).replace(/<meta[^>]*>.*<\/meta>/g,"")).replace(/<link[^>]*>.*<\/link>/g,"")).replace(/<base[^>]*>.*<\/base>/g,"")).replace(/<title[^>]*>.*<\/title>/g,""),e.text=t),angular.extend(s.editable,e),s.origin={message:i,action:n},s})})},r.prototype.$save=function(){var t=this,e=this.$omit();return r.$log.debug("save = "+JSON.stringify(e,void 0,2)),r.$$resource.save(this.$absolutePath({asDraft:!0}),e).then(function(e){r.$log.debug("save = "+JSON.stringify(e,void 0,2)),t.$setUID(e.uid),t.$reload(),t.isNew=!1})},r.prototype.punycode=function(e){var t=/<(.*)>|^([\w\-\.@]+)$/gm.exec(e),s=e;return t&&0<t.length&&t[1]&&(s=t[1]),e.replace(s,punycode.toASCII(s))},r.prototype.$send=function(){var n=this,e=this.$omit();return r.$log.debug("send = "+JSON.stringify(e,void 0,2)),e.to&&0<e.to.length&&e.to.forEach(function(e,t,s){s[t]=n.punycode(e)}),e.bcc&&0<e.bcc.length&&e.bcc.forEach(function(e,t,s){s[t]=n.punycode(e)}),e.cc&&0<e.cc.length&&e.cc.forEach(function(e,t,s){s[t]=n.punycode(e)}),e.from=n.punycode(e.from),r.$$resource.post(this.$absolutePath({asDraft:!0}),"send",e).then(function(e){return"success"==e.status?(angular.isDefined(n.origin)&&(n.origin.action.startsWith("reply")?n.origin.message.isanswered=!0:"forward"==n.origin.action&&(n.origin.message.isforwarded=!0)),e):r.$q.reject(e.data)})},r.prototype.$unwrap=function(e){var t=this;return this.$loaded=r.STATUS.DELAYED_LOADING,r.$timeout(function(){t.$loaded!=r.STATUS.LOADED&&(t.$loaded=r.STATUS.LOADING)},r.STATUS.DELAYED_MS),this.$futureMessageData=e.then(function(e){return e.isRead?t.isread||(t.isread=!0,t.$mailbox.unseenCount--):-1<r.$Preferences.defaults.SOGoMailAutoMarkAsReadDelay&&(t.$markAsReadPromise=r.$timeout(function(){r.$$resource.fetch(t.$absolutePath(),"markMessageRead").then(function(){t.isread=!0,t.$mailbox.unseenCount--})},1e3*r.$Preferences.defaults.SOGoMailAutoMarkAsReadDelay)),r.$timeout(function(){return delete t.$parts,t.$loaded=r.STATUS.LOADED,t.init(e),t})}),this.$futureMessageData},r.prototype.$omit=function(e){var s={},n=e&&e.privateAttributes,e=n?this:this.editable;return angular.forEach(e,function(e,t){_.includes(["to","cc","bcc"],t)&&!n?s[t]=_.map(e,function(e){return e.toString()}):("constructor"!=t&&"$"!=t[0]||n)&&(s[t]=e)}),s},r.prototype.downloadArchive=function(){var e={uids:[this.uid]},t={filename:this.subject+".zip"};return r.$$resource.download(this.$mailbox.id,"saveMessages",e,t)},r.prototype.download=function(){var e={filename:this.subject+".eml",type:"message/rfc822"};return r.$$resource.download(this.$absolutePath(),"export",void 0,e)},r.prototype.downloadAttachmentsArchive=function(){var e={filename:l("attachments")+"-"+this.uid+".zip"};return r.$$resource.download(this.$absolutePath(),"archiveAttachments",null,e)}}(),function(){"use strict";function u(){this.show=!1,this.message=null,this.elements=[]}u.$factory=["$document","$timeout","$mdPanel","sgHotkeys",function(e,t,s,n){return angular.extend(u,{$document:e,$timeout:t,$mdPanel:s,sgHotkeys:n}),new u}],u.prototype.setMessage=function(e){this.message=e},u.prototype.registerImage=function(e){this.elements.push(e)},u.prototype.registerHotkeys=function(e){this.keys=[u.sgHotkeys.createHotkey({key:"left",description:l("View previous item"),callback:angular.bind(e,e.previousImage)}),u.sgHotkeys.createHotkey({key:"right",description:l("View next item"),callback:angular.bind(e,e.nextImage)})],_.forEach(this.keys,function(e){u.sgHotkeys.registerHotkey(e)})},u.prototype.showGallery=function(e,t){var s=this,n=u.$mdPanel,i=angular.element(this.message.$content()[t].content).find("img")[0].src,a=function(e,t){_.forEach(e,function(e){"UIxMailPartImageViewer"==e.type?t.push(e):"string"!=typeof e.content&&a(e.content,t)})},t=[],o=(a(this.message.$content(),t),_.findIndex(t,function(e){return 0<=i.indexOf(e.viewURL)})),r=(angular.element(u.$document[0].body).addClass("sg-image-gallery-backdrop"),n.newPanelPosition().absolute()),c=n.newPanelAnimation().openFrom(e.target).duration(100).withAnimation(n.animation.FADE),t={attachTo:angular.element(document.body),locals:{lastIndex:t.length-1,images:t,selectedIndex:o,selectedImage:t[o]},bindToController:!0,controller:d,controllerAs:"$panelCtrl",position:r,animation:c,targetEvent:e,fullscreen:!0,hasBackdrop:!0,template:['<sg-image-gallery layout="column">',' <div class="md-toolbar-tools" layout="row" layout-align="space-between center">',' <md-button class="md-icon-button"',' aria-label="'+l("Close")+'"',' ng-click="$panelCtrl.close()">'," <md-icon>arrow_back</md-icon>"," </md-button>",' <md-icon class="md-primary">image</md-icon>',' <div md-truncate class="md-flex" ng-bind="$panelCtrl.selectedImage.filename"></div>',' <md-button class="md-icon-button"',' aria-label="'+l("Save Attachment")+'"',' ng-href="{{$panelCtrl.selectedImage.downloadURL}}">'," <md-icon>file_download</md-icon>"," </md-button>"," </div>",' <div class="md-flex" layout="row" layout-align="space-between center">',' <md-button class="md-icon-button" ng-click="$panelCtrl.previousImage()"',' ng-disabled="$panelCtrl.selectedIndex == 0">'," <md-icon>navigate_before</md-icon>"," </md-button>",' <img class="sg-image" ng-src="{{$panelCtrl.selectedImage.viewURL}}">',' <md-button class="md-icon-button" ng-click="$panelCtrl.nextImage()"',' ng-disabled="$panelCtrl.selectedIndex == $panelCtrl.lastIndex">'," <md-icon>navigate_next</md-icon>"," </md-button>"," </div>",' <div class="sg-image-thumbnails">',' <div class="sg-image-thumbnail" ng-repeat="image in ::$panelCtrl.images">',' <img class="sg-hide" ng-src="{{::image.viewURL}}" ng-click="$panelCtrl.selectImage($index)">'," </div>"," </div>","</sg-image-gallery>"].join(""),trapFocus:!0,clickOutsideToClose:!0,escapeToClose:!0,focusOnOpen:!0,onOpenComplete:function(){s.show=!0,_.forEach(u.$document.find("sg-image-gallery")[0].getElementsByClassName("sg-image-thumbnail"),function(e){var t=e.children[0];angular.element(t).one("load",function(){t.naturalWidth<t.naturalHeight&&t.classList.add("portrait")}),u.$timeout(function(){t.classList.remove("sg-hide")},1e3)})},onDomRemoved:function(){angular.element(u.$document[0].body).removeClass("sg-image-gallery-backdrop"),s.show=!1,_.forEach(s.hotkeys,function(e){u.sgHotkeys.deregisterHotkey(e)})}};function d(e){(e.$ctrl=this).close=function(){e.close()},this.selectImage=function(e){this.selectedIndex=e,this.selectedImage=this.images[e]},this.nextImage=function(){this.selectedIndex!=this.lastIndex&&this.selectImage(this.selectedIndex+1)},this.previousImage=function(){0<this.selectedIndex&&this.selectImage(this.selectedIndex-1)}}n.open(t).then(function(e){s.registerHotkeys(e.$ctrl)}),d.$inject=["mdPanelRef"]},angular.module("SOGo.MailerUI").factory("ImageGallery",u.$factory)}(),function(){"use strict";function c(e){this.$account=e}c.$factory=["$q","$timeout","$log","$rootScope","sgSettings","Resource","Message","Mailbox","sgMailbox_PRELOAD",function(e,t,s,n,i,a,o,r,l){return angular.extend(c,{$q:e,$timeout:t,$log:s,$rootScope:n,$$resource:new a(i.activeUser("folderURL")+"Mail",i.activeUser()),$Message:r,selectedFolder:null,PRELOAD:l}),c}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").constant("sgMailbox_PRELOAD",{LOOKAHEAD:50,SIZE:100}).factory("VirtualMailbox",c.$factory),c.$absolutePath=function(e){return[e,"virtual"].join("/")},c.prototype.init=function(e){this.$isLoading=!1,this.$mailboxes=[],this.uidsMap={},angular.extend(this,e),this.id=this.$id()},c.prototype.setMailboxes=function(e){this.$mailboxes=e,_.forEach(this.$mailboxes,function(e){e.$messages=[],e.uidsMap={}})},c.prototype.startSearch=function(t,s){var n=this,i=c.$q.when();this.$isLoading=!0,_.forEach(this.$mailboxes,function(e){i=i.then(function(){if(n.$isLoading)return c.$log.debug("searching mailbox "+e.path),e.$filter({sort:"date",asc:!1,match:t},s)})}),i.finally(function(){n.$isLoading=!1})},c.prototype.stopSearch=function(){c.$log.debug("stopping search..."),this.$isLoading=!1},c.prototype.selectFolder=function(){},c.prototype.resetSelectedMessage=function(){_.forEach(this.$mailboxes,function(e){delete e.$selectedMessage})},c.prototype.hasSelectedMessage=function(){return angular.isDefined(_.find(this.$mailboxes,function(e){return angular.isDefined(e.$selectedMessage)}))},c.prototype.isSelectedMessage=function(t,s){return angular.isDefined(_.find(this.$mailboxes,function(e){return e.path==s&&e.$selectedMessage==t}))},c.prototype.getLength=function(){var t=0;return angular.isDefined(this.$mailboxes)&&_.forEach(this.$mailboxes,function(e){t+=e.$messages.length}),t},c.prototype.getItemAtIndex=function(e){var t,s,n,i,a;if(angular.isDefined(this.$mailboxes)&&0<=e)for(s=t=0;s<this.$mailboxes.length;s++)for(i=this.$mailboxes[s],n=0;n<i.$messages.length;t++,n++)if(t==e&&(a=i.$messages[n],i.$loadMessage(a.uid)))return a;return null},c.prototype.$id=function(){return c.$absolutePath(this.$account.id)},c.prototype.$selectedMessageIndex=function(){var t=0,e=_.find(this.$mailboxes,function(e){return!!angular.isDefined(e.$selectedMessage)||(t+=e.getLength(),!1)});return t+e.uidsMap[e.$selectedMessage]},c.prototype.selectedMessages=function(s){return _.filter(_.transform(this.$mailboxes,function(e,t){s&&s.updateCache&&(t.$selectedMessages=_.filter(t.$messages,function(e){return e.selected})),e[t.id]=t.$selectedMessages},{}),function(e){return 0<_.size(e)})},c.prototype.selectedCount=function(){return _.sum(_.invokeMap(this.$mailboxes,"selectedCount"))},c.prototype.$flagMessages=function(e,t,s){var n={flags:t,operation:s},i=[],a=[];return _.forEach(e,function(e,t){var s;0<e.length&&(s=_.map(e,"uid"),i.push(e),e=c.$$resource.post(t,"addOrRemoveLabel",_.assign(n,{msgUIDs:s})),a.push(e))}),c.$q.all(a).then(function(){return _.flatten(i)})},c.prototype.$deleteMessages=function(e){var t,s,n=this,i=[];return _.isArray(e)&&1===e.length&&e[0]&&e[0].mailbox&&!_.isArray(e[0].mailbox)?(t=e[0],(s=t.$mailbox).$deleteMessages([t]).then(function(e){var t=0;return _.find(n.$mailboxes,function(e){return e.id===s.id||(t+=e.getLength(),!1)}),t+e})):(_.forEach(e,function(e,t){0<e.length&&(e=e[0].$mailbox.$deleteMessages(e),i.push(e))}),c.$q.all(i))},c.prototype.$markOrUnMarkMessagesAsJunk=function(e){var s=[];return _.forEach(e,function(e,t){0<e.length&&(e=e[0].$mailbox.$markOrUnMarkMessagesAsJunk(e),s.push(e))}),c.$q.all(s)},c.prototype.$copyMessages=function(e,s){var n=[];return _.forEach(e,function(e,t){0<e.length&&(e=e[0].$mailbox.$copyMessages(e,s),n.push(e))}),c.$q.all(n)},c.prototype.$moveMessages=function(e,s){var n=[];return _.forEach(e,function(e,t){0<e.length&&(e=e[0].$mailbox.$moveMessages(e,s),n.push(e))}),c.$q.all(n)},c.prototype.$comact=function(){return!0},c.prototype.$reset=function(t){_.forEach(this.$mailboxes,function(e){e.$reset(t)})}}(),function(){"use strict";function e(i,n,e,a,o,r,c,s,d,u,h,g,m,f,t,p,$,b,y){var v,M=this,x=angular.element(i.document).find("title").attr("sg-default")||"SOGo",w=[],C=56;function S(e){return!!y.$virtualMode||M.selectedFolder.$compact()}function I(e){return n.mailbox?(0<arguments.length&&(n.mailbox.messageDialog=e),n.mailbox.messageDialog):null}function F(e,t){var s;null===I()&&(s=a.defer(),I(r.show({parent:angular.element(document.body),targetEvent:e,clickOutsideToClose:!1,escapeToClose:!1,templateUrl:"UIxMailEditor",controller:"MessageEditorController",controllerAs:"editor",onComplete:function(e,t){return s.resolve(t)},locals:{stateParent:n,stateAccount:M.account,stateMessage:t,onCompletePromise:function(){return s.promise}}}).catch(_.noop).finally(function(){I(null),M.closePopup()})))}function E(e){M.isLoadingMessage&&(M.nextAction={m:E,p:e});var t=M.selectedFolder.$selectedMessageIndex();return angular.isDefined(t)?(t--,0<M.selectedFolder.$topIndex&&A(t)):(t=M.selectedFolder.getLength()-1,M.selectedFolder.$topIndex=M.selectedFolder.getLength()),-1<t&&!M.isLoadingMessage&&M.selectMessage(M.selectedFolder.getItemAtIndex(t)),e.preventDefault(),t}function D(e){M.isLoadingMessage&&(M.nextAction={m:D,p:e});var t=M.selectedFolder.$selectedMessageIndex();return angular.isDefined(t)?(t++,M.selectedFolder.$topIndex<M.selectedFolder.getLength()&&A(t)):t=0,t<M.selectedFolder.getLength()&&!M.isLoadingMessage?M.selectMessage(M.selectedFolder.getItemAtIndex(t)):t=-1,e.preventDefault(),t}function A(e){var t=document.querySelector("[ui-view=mailbox] .md-virtual-repeat-scroller"),s=e*C;(s<t.scrollTop||s+C>t.scrollTop+t.clientHeight)&&document.querySelectorAll(".md-virtual-repeat-scroller")[1].scrollTo({top:C*e-(t.clientHeight-C)/2,behavior:"smooth"})}function P(e){var t;M.selectedFolder.hasSelectedMessage()&&0<=(t=E(e))&&M.toggleMessageSelection(e,M.selectedFolder.$messages[t])}function k(e){var t;M.selectedFolder.hasSelectedMessage()&&0<=(t=D(e))&&M.toggleMessageSelection(e,M.selectedFolder.$messages[t])}function T(){return y.$virtualMode?M.selectedFolder.$mailboxes:[M.selectedFolder]}function O(e,t){var s,n,i=t;M.mode.multiple=M.selectedFolder.selectedCount(),e&&(0<t&&(s=M.selectedFolder.$messages[--i]),t<M.selectedFolder.$messages.length&&(n=M.selectedFolder.$messages[t]),s?s.isread&&n&&!n.isread&&(i=t,s=n):n&&(i=t,s=n),s?(M.selectedFolder.$topIndex=i,o.go("mail.account.mailbox.message",{messageId:s.uid})):o.go("mail.account.mailbox"))}v={subject:"Subject",from:"From",date:"Date",size:"Size",arrival:"Order Received"},this.$onInit=function(){var t;i.$mailboxController=M,this.service=y,this.accounts=s,this.account=d,this.selectedFolder=u,this.messageDialog=null,this.mode={search:!1,multiple:0},this.allSelected=!1,this.isLoadingMessage=!1,this.nextAction=null,y.$virtualMode||this.selectedFolder.getLabels(),(t=w).push(h.createHotkey({key:l("hotkey_search"),description:l("Search"),callback:M.searchMode})),t.push(h.createHotkey({key:l("hotkey_compose"),description:l("Write a new message"),callback:function(e){null===M.messageDialog&&M.newMessage(e)}})),t.push(h.createHotkey({key:l("shift+j"),description:l("Mark the selected messages as junk"),callback:M.markOrUnMarkMessagesAsJunk})),t.push(h.createHotkey({key:"space",description:l("Toggle item"),callback:M.toggleMessageSelection})),t.push(h.createHotkey({key:"shift+space",description:l("Toggle range of items"),callback:M.toggleMessageSelection})),t.push(h.createHotkey({key:"up",description:l("View next item"),callback:E,preventInClass:["sg-mail-part"]})),t.push(h.createHotkey({key:"down",description:l("View previous item"),callback:D,preventInClass:["sg-mail-part"]})),t.push(h.createHotkey({key:"shift+up",description:l("Add next item to selection"),callback:P,preventInClass:["sg-mail-part"]})),t.push(h.createHotkey({key:"shift+down",description:l("Add previous item to selection"),callback:k,preventInClass:["sg-mail-part"]})),_.forEach(["backspace","delete"],function(e){t.push(h.createHotkey({key:e,description:l("Delete selected message or folder"),callback:M.confirmDeleteSelectedMessages}))}),_.forEach(t,function(e){h.registerHotkey(e)}),angular.element(i).on("beforeunload",S),n.$on("$destroy",function(){angular.element(i).off("beforeunload",S),_.forEach(w,function(e){h.deregisterHotkey(e)})}),n.$watch(function(){return M.selectedFolder.unseenCount},function(e){var t="";e&&(t+="("+e+") "),t+=M.selectedFolder.$displayName,i.document.title=t+=" | "+x})},this.centerIsClose=function(e){return this.selectedFolder.hasSelectedMessage()&&!!e},this.sort=function(e){if(!e)return v[M.service.$query.sort];M.selectedFolder.$filter({sort:e})},this.sortedBy=function(e){return y.$query.sort==e},this.ascending=function(){return y.$query.asc},this.refresh=function(){$.pollInbox(),this.selectedFolder.$filter()},this.searchMode=function(e){M.mode.search=!0,t("search"),e&&e.preventDefault()},this.cancelSearch=function(){M.account&&M.account.$getMailboxes().$$state.value.forEach(e=>{e.setHighlightWords([])}),M.mode.search=!1,M.selectedFolder.$filter(M.service.$query).then(function(){M.selectedFolder.$selectedMessage&&(M.selectedFolder.$topIndex=M.selectedFolder.uidsMap[M.selectedFolder.$selectedMessage])})},this.composeWindowEnabled=function(){return $.defaults.SOGoMailComposeWindowEnabled},this.openInPopup=function(e,t){var s=[f.baseURL(),"UIxMailPopupView#!/Mail",this.account.id],n=this.account.id+"/"+Math.random(0,1e3);e&&(s.push(g(g(e.$mailbox.path))),s.push(e.uid),n=e.$absolutePath()),t&&(n+="/"+t,s.push(t)),s=s.join("/"),i.open(s,n,["resizable=1","scrollbars=1","toolbar=0","location=0","directories=0","status=0","menubar=0","copyhistory=0"].join(","))},this.closePopup=function(){i.document.body.classList.contains("popup")&&i.close()},this._showMailEditorInPopup=function(e,t,s){return!(f.isPopup||"popup"!=$.defaults.SOGoMailComposeWindow&&!s||(this.openInPopup(e,t),0))},this.newMessage=function(t,e){this._showMailEditorInPopup(null,"new",e)||this.account.$newMessage().then(function(e){F(t,e)})},this.selectMessage=function(e){(y.$virtualMode?(M.isLoadingMessage=!0,o.go("mail.account.virtualMailbox.message",{mailboxId:g(g(e.$mailbox.path)),messageId:e.uid}).then(function(){}).catch(e=>{console.error(e)})):(M.isLoadingMessage=!0,o.go("mail.account.mailbox.message",{mailboxId:g(g(e.$mailbox.path)),messageId:e.uid}).then(function(){}).catch(e=>{console.error(e)}))).finally(()=>{M.isLoadingMessage=!1,M.nextAction&&(M.nextAction.m(M.nextAction.p),M.nextAction=null)})},this.toggleMessageSelection=function(e,t){var s,n,i,a=M.selectedFolder;if(!(t=t||a.selectedMessage()))return!0;if(t.selected=!t.selected,e.shiftKey&&0<a.selectedCount()){for(n=(s=a.uidsMap[t.uid])-2;0<=n&&!a.$messages[n].selected;)n--;if(n<0)for(n=s+2;n<a.getLength()&&!a.$messages[n].selected;)n++;if(0<=n&&n<a.getLength())for(i=Math.min(s,n);i<=Math.max(s,n);i++)a.$messages[i].selected=!0}a.selectedMessages({updateCache:!0}),M.mode.multiple=M.selectedFolder.selectedCount(),e.preventDefault(),e.stopPropagation()},this.confirmDeleteSelectedMessages=function(e){var s=M.selectedFolder.selectedMessages();null===M.messageDialog&&0<_.size(s)&&(M.messageDialog=p.confirm(l("Confirmation"),l("Are you sure you want to delete the selected messages?"),{ok:l("Delete")}).then(function(){var t=M.selectedFolder.hasSelectedMessage();M.selectedFolder.$deleteMessages(s).then(function(e){y.$virtualMode?t&&o.go("mail.account.virtualMailbox"):O(t,e)},function(e){M.messageDialog=p.confirm(l("Warning"),l("The messages could not be moved to the trash folder. Would you like to delete them immediately?"),{ok:l("Delete")}).then(function(){M.selectedFolder.$deleteMessages(s,{withoutTrash:!0}).then(function(e){y.$virtualMode?t&&o.go("mail.account.virtualMailbox"):O(t,e)}).finally(function(){M.messageDialog=null})})})}).finally(function(){M.messageDialog=null})),e.preventDefault()},this.markOrUnMarkMessagesAsJunk=function(){var t=M.selectedFolder.hasSelectedMessage(),s=M.selectedFolder.selectedMessages();0===_.size(s)&&t&&(s=[M.selectedFolder.selectedMessage()]),0<_.size(s)&&M.selectedFolder.$markOrUnMarkMessagesAsJunk(s).then(function(){var e="/"+M.account.id+"/folderINBOX";"junk"!=M.selectedFolder.type&&(e="/"+M.account.$getMailboxByType("junk").id),M.selectedFolder.$moveMessages(s,e).then(function(e){y.$virtualMode?t&&o.go("mail.account.virtualMailbox"):O(t,e)})})},this.copySelectedMessages=function(e){var t=M.selectedFolder.selectedMessages();0<_.size(t)&&M.selectedFolder.$copyMessages(t,"/"+e).then(function(){c.show(c.simple().textContent(l("%{0} message(s) copied",M.selectedFolder.selectedCount())).position(m.toastPosition).hideDelay(2e3))})},this.moveSelectedMessages=function(e,t){var s=M.selectedFolder.hasSelectedMessage(),n=M.selectedFolder.selectedMessages(),i=(t&&n.push(t),M.selectedFolder.selectedCount());0<_.size(n)&&M.selectedFolder.$moveMessages(n,"/"+e).then(function(e){c.show(c.simple().textContent(l("%{0} message(s) moved",i)).position(m.toastPosition).hideDelay(2e3)),y.$virtualMode?s&&o.go("mail.account.virtualMailbox"):O(s,e)})},this.selectAll=function(){var n=0;_.forEach(T(),function(e){var t=0,s=e.$messages.length;for(e.$selectedMessages=[];t<s;t++)e.$messages[t].selected=!M.allSelected,e.$messages[t].selected&&e.$selectedMessages.push(e.$messages[t]),n++}),M.allSelected=!M.allSelected,M.mode.multiple=n},this.unselectMessages=function(){_.forEach(T(),function(e){e.$selectedMessages=[],_.forEach(e.$messages,function(e){e.selected=!1})}),M.mode.multiple=0},this.markSelectedMessagesAsFlagged=function(){var e=M.selectedFolder.selectedMessages();0<_.size(e)&&M.selectedFolder.$flagMessages(e,"\\Flagged","add").then(function(e){_.forEach(e,function(e){e.isflagged=!0})})},this.markSelectedMessagesAsUnread=function(){var e=M.selectedFolder.selectedMessages();0<_.size(e)&&M.selectedFolder.$flagMessages(e,"seen","remove").then(function(e){_.forEach(e,function(e){e.isread&&e.$mailbox.unseenCount++,e.isread=!1})})},this.markSelectedMessagesAsRead=function(){var e=M.selectedFolder.selectedMessages();0<_.size(e)&&M.selectedFolder.$flagMessages(e,"seen","add").then(function(e){_.forEach(e,function(e){e.isread||e.$mailbox.unseenCount--,e.isread=!0})})},this.forwardSelectedMessages=function(t){var s=this,e=M.selectedFolder.selectedMessages();0<_.size(e)&&M.selectedFolder.forwardMessages(e).then(function(e){s._showMailEditorInPopup(e,"edit")||e.$editableContent().then(function(){F(t,e)})})}}function t(e){return e[0].controller.prototype.resetScroll=function(){"messagesList"==this.$element.parent().attr("id")?this.updateSize():this.scrollTo(0)},e}e.$inject=["$window","$scope","$timeout","$q","$state","$mdDialog","$mdToast","stateAccounts","stateAccount","stateMailbox","sgHotkeys","encodeUriFilter","sgConstant","sgSettings","sgFocus","Dialog","Preferences","Account","Mailbox"],angular.module("SOGo.MailerUI").controller("MailboxController",e),t.$inject=["$delegate"],angular.module("material.components.virtualRepeat").decorator("mdVirtualRepeatContainerDirective",t)}(),function(){"use strict";function e(e,s,d,t,n,i,a,o,r,u,h,g,c,m,f,p,$,b,y,v,M,x,w,C){var S,I,F=this,E=[];e.closeDialog=function(){u.hide()},this.$onInit=function(){var t;this.service=y,this.accounts=w,this.message=C,this.advancedSearchPanelVisible=!1,this.reset(),this.search={subfolders:1,match:"AND",params:[]},this.highlightWords=[],this.showSubscribedOnly=x.defaults.SOGoMailShowSubscribedFoldersOnly,b.refreshUnseenCount(i.unseenCountFolders),t=E,_.forEach(["backspace","delete"],function(e){t.push($.createHotkey({key:e,description:l("Delete selected message or folder"),callback:function(){y.selectedFolderController&&y.selectedFolder&&y.selectedFolder.$isEditable&&!y.selectedFolder.hasSelectedMessage()&&0===y.selectedFolder.$selectedCount()&&y.selectedFolderController.confirmDelete(y.selectedFolder)}})),t.push($.createHotkey({key:"shift+s",description:l("Advanced search"),callback:function(){F.showAdvancedSearch()}}))}),_.forEach(t,function(e){$.registerHotkey(e)}),e.$on("$destroy",function(){_.forEach(E,function(e){$.deregisterHotkey(e)})}),s.$on("showMailAdvancedSearchPanel",function(){F.showAdvancedSearch()}),s.$on("resetMailAdvancedSearchPanel",function(){F.reset()}),s.$on("showCleanMailboxPanel",function(e,t){F.showCleanMailboxPanel(t.folder,t.account)})},this.hideAdvancedSearch=function(e){F.service.$virtualPath=!1,F.service.$virtualMode=!1,S=F.accounts[0],I=F.searchPreviousMailbox,F.search.params=[],F.highlightWords=[],I&&I.path&&(I.setHighlightWords([]),I.$filter({sort:"date",asc:!1,match:"OR"}).then(function(){d.go("mail.account.mailbox",{accountId:S.id,mailboxId:m(I.path)}),F.$onInit()})),e.stopPropagation()},this.addHighlightWords=function(e){e.split(" ").forEach(e=>{e=e.trim().toLowerCase();this.highlightWords.includes(e)||this.highlightWords.push(e)})},this.reset=function(){this.highlightWords=[],this.searchForm={from:"",to:"",contains:"",notContains:"",subject:"",body:"",date:"anytime",dateStart:new Date,dateEnd:new Date,bcc:"",size:"",sizeOperator:">",sizeUnit:"mb",attachements:0,favorite:0,unseen:0,tags:{searchText:"",selected:""},flags:[]}},this.addSearchParameters=function(){if(this.search.params=[],this.highlightWords=[],this.searchForm.from&&0<this.searchForm.from.length&&(this.search.params.push(this.newSearchParam("from",this.searchForm.from)),this.addHighlightWords(this.searchForm.from)),this.searchForm.to&&0<this.searchForm.to.length&&this.search.params.push(this.newSearchParam("to",this.searchForm.to)),this.searchForm.bcc&&0<this.searchForm.bcc.length&&this.search.params.push(this.newSearchParam("bcc",this.searchForm.bcc)),this.searchForm.contains&&0<this.searchForm.contains.length&&(this.search.params.push(this.newSearchParam("contains",this.searchForm.contains)),this.addHighlightWords(this.searchForm.contains)),this.searchForm.doesnotcontains&&0<this.searchForm.doesnotcontains.length&&this.search.params.push(this.newSearchParam("not_contains",this.searchForm.doesnotcontains)),this.searchForm.subject&&0<this.searchForm.subject.length&&(this.search.params.push(this.newSearchParam("subject",this.searchForm.subject)),this.addHighlightWords(this.searchForm.subject)),this.searchForm.body&&0<this.searchForm.body.length&&(this.search.params.push(this.newSearchParam("body",this.searchForm.body)),this.addHighlightWords(this.searchForm.body)),this.searchForm.date&&0<this.searchForm.date.length){var e,t=null,s=new Date,n=new Date(s);switch(this.searchForm.date){case"anytime":break;case"last7days":n.setDate(n.getDate()-7),t=this.formatDate(n),this.search.params.push(this.newSearchParam("date",t,">="));break;case"last30days":n.setDate(n.getDate()-30),t=this.formatDate(n),this.search.params.push(this.newSearchParam("date",t,">="));break;case"last6month":n.setMonth(n.getMonth()-6),t=this.formatDate(n),this.search.params.push(this.newSearchParam("date",t,">="));break;case"before":t=this.formatDate(this.searchForm.dateStart),this.search.params.push(this.newSearchParam("date",t,"<"));break;case"after":t=this.formatDate(this.searchForm.dateStart),this.search.params.push(this.newSearchParam("date",t,">="));break;case"between":t=this.formatDate(this.searchForm.dateStart),e=this.formatDate(this.searchForm.dateEnd),this.search.params.push(this.newSearchDateBetweenParam(t,e))}}this.searchForm.size&&0<this.searchForm.size&&this.search.params.push(this.newSearchParam("size",this.searchForm.size.toString(),this.searchForm.sizeOperator)),this.searchForm.attachements&&this.search.params.push(this.newSearchParam("attachment","1","=")),this.searchForm.favorite&&this.search.params.push(this.newSearchParam("favorite","1","=")),this.searchForm.unseen&&this.search.params.push(this.newSearchParam("unseen","1","=")),this.searchForm.flags&&0<this.searchForm.flags.length&&this.search.params.push(this.newSearchFlagsParam()),this.toggleAdvancedSearch()},this.searchFieldChange=function(e){13==e.keyCode&&(this.addSearchParameters(),u.hide(),F.advancedSearchPanelVisible=!1)},this.toggleAdvancedSearch=function(){var e,t,s;y.selectedFolder.$isLoading?F.virtualMailbox.stopSearch():(t=[],s=function(e){_.forEach(e,function(e){e.isNoSelect()||t.push(e),e.children&&0<e.children.length&&s(e.children)})},F.virtualMailbox=new v(F.accounts[0]),y.$virtualMode||(F.searchPreviousMailbox=y.selectedFolder),y.selectedFolder=F.virtualMailbox,y.$virtualMode=!0,y.$virtualPath.length?((e=F.accounts[0].$getMailboxByPath(y.$virtualPath)).setHighlightWords(F.highlightWords),t.push(e),F.search.subfolders&&e.children.length&&s(e.children)):t=_.filter(F.accounts[0].$flattenMailboxes({all:!0}),function(e){return!e.isNoSelect()}),t.forEach(e=>{}),F.virtualMailbox.setMailboxes(t),F.virtualMailbox.startSearch(F.search.match,F.search.params),"mail.account.virtualMailbox"!=d.$current.name&&d.go("mail.account.virtualMailbox",{accountId:F.accounts[0].id}))},this.formatDate=function(e){return e.getFullYear()+"-"+(e.getMonth()+1).toString().padStart(2,"0")+"-"+e.getDate().toString().padStart(2,"0")},this.changeDate=function(){"between"==this.searchForm.date&&this.searchForm.dateStart>this.searchForm.dateEnd&&(this.searchForm.dateEnd=this.searchForm.dateStart)},this.newSearchParam=function(e,t,s=">"){if(t.length&&e.length){var n=0;switch(t.startsWith("!")&&(t=t.substring(n=1).trim()),e){case"size":return{searchBy:e,searchInput:t,negative:n,operator:s,sizeUnit:this.searchForm.sizeUnit};case"date":return{searchBy:e,searchInput:t,negative:n,operator:s};default:return{searchBy:e,searchInput:t,negative:n}}}},this.newSearchDateBetweenParam=function(e,t){return{searchBy:"date_between",searchInput:"*",dateFrom:e,dateTo:t,negative:0}},this.newSearchFlagsParam=function(){return{searchBy:"flags",searchInput:"*",flags:F.searchForm.flags,negative:0}},this.toggleAccountState=function(e){e.$expanded=!e.$expanded,this.debounceSaveState||(this.debounceSaveState=a.debounce(function(){e.$flattenMailboxes({reload:!0,saveState:!0})},1e3)),this.debounceSaveState()},this.subscribe=function(e){function t(e,t,s){var n=this;n.loading=!0,n.filter={name:""},n.account=new b({id:s.id,name:s.name}),n.close=function(){t.hide()},n.account.$getMailboxes({reload:!0,all:!0}).then(function(){n.loading=!1})}u.show({templateUrl:e.id+"/subscribe",controller:t,controllerAs:"subscriptions",clickOutsideToClose:!0,escapeToClose:!0,locals:{srcAccount:e}}).finally(function(){e.$getMailboxes({reload:!0})}),t.$inject=["$scope","$mdDialog","srcAccount"]},this.showAdvancedSearch=function(){F.advancedSearchPanelVisible||(F.advancedSearchPanelVisible=!0,y.selectedFolder.path&&(y.$virtualPath=y.selectedFolder.path),o(g["gt-md"])||r("left").close(),u.show({template:document.getElementById("advancedSearch").innerHTML,parent:angular.element(document.body),controller:function(){this.$onInit=function(){this.mainController=F,this.mailbox=y,this.message=C},this.closeDialog=function(){u.hide(),F.advancedSearchPanelVisible=!1},this.search=function(){this.mainController.addSearchParameters(),u.hide(),F.advancedSearchPanelVisible=!1}},controllerAs:"dialogCtrl",clickOutsideToClose:!1,escapeToClose:!1}))},this.newFolder=function(e){f.prompt(l("New Folder..."),l("Enter the new name of your folder")).then(function(s){e.$newMailbox(e.id,s).then(function(){},function(e,t){f.alert(l('An error occured while creating the mailbox "%{0}".',s),l(e.error))})})},this.showCleanMailboxPanel=function(s,c){o(g["gt-md"])||r("left").close(),u.show({template:document.getElementById("cleanMailbox").innerHTML,parent:angular.element(document.body),controller:function(){var r=this;this.$onInit=function(){this.mainController=F,this.folder=s,this.isMailbox=!s,this.name=s?s.$displayName:c.name,this.loading=!1,this.date=null,this.form={filterDuration:"3m",permanentlyDelete:!1,confirmDelete:!1,filterDurationDate:null};var e=new Date,t=new Date(e);t.setMonth(e.getMonth()-3),this.maxDate=t},r.closeDialog=function(){u.hide()},r.isLoading=function(){return this.loading},r.isWarningDisplayed=function(){return this.form&&this.form.permanentlyDelete},r.isApplyDisabled=function(){return!(!this.loading&&(!this.form.permanentlyDelete||this.form.permanentlyDelete&&this.form.confirmDelete)&&("custom"!=this.form.filterDuration||"custom"==this.form.filterDuration&&this.form.filterDurationDate))},r.apply=function(){var e,t=[];if(c){for(e=0;e<c.$mailboxes.length;e++)t.push(c.$mailboxes[e].id);this.folder=c.$mailboxes[0]}var s="",n=12,s=new Date;switch(this.form.filterDuration){case"3m":n=3,s.setMonth(s.getMonth()-n);break;case"6m":n=6,s.setMonth(s.getMonth()-n);break;case"9m":n=9,s.setMonth(s.getMonth()-n);break;case"1y":n=12,s.setMonth(s.getMonth()-n);break;case"custom":s=this.form.filterDurationDate}var i=s.getFullYear(),a=String(s.getMonth()+1).padStart(2,"0"),o=String(s.getDate()).padStart(2,"0");this.date=i+`-${a}-`+o,this.folder.cleanMailbox({applyToSubfolders:!(!this.form||!this.form.applyToSubfolders)&&this.form.applyToSubfolders,permanentlyDelete:!(!this.form||!this.form.permanentlyDelete)&&this.form.permanentlyDelete,date:this.date,folders:t}).then(function(e){r.loading=!0,y.selectedFolder.$filter({sort:"date",asc:!1,match:"OR"}).then(function(){d.go("mail.account.mailbox",{accountId:F.accounts[0].id,mailboxId:m(y.selectedFolder.path)}),r.loading=!1,u.hide(),h.show(h.simple().textContent(l("%{0} message(s) deleted",e.nbMessageDeleted)).position(g.toastPosition).hideDelay(2e3))})}).catch(function(){r.loading=!1,u.hide()})}},controllerAs:"dialogCtrl",clickOutsideToClose:!1,escapeToClose:!1})},this.delegate=function(e){function t(e,t,s,n){var i=this;i.users=n.delegates,i.account=n,i.userToAdd="",i.searchText="",i.userFilter=function(e){return s.$filter(e,n.delegates)},i.closeModal=function(){t.hide()},i.removeUser=function(e){n.$removeDelegate(e.uid).catch(function(e,t){f.alert(l("Warning"),l("An error occured, please try again."))})},i.addUser=function(e){e&&n.$addDelegate(e).then(function(){i.userToAdd="",i.searchText=""},function(e){f.alert(l("Warning"),e)})}}u.show({templateUrl:e.id+"/delegation",controller:t,controllerAs:"delegate",clickOutsideToClose:!0,escapeToClose:!0,locals:{User:M,account:e}}),t.$inject=["$scope","$mdDialog","User","account"]},this.isDroppableFolder=function(e,t){return t.id!=e.id&&t.isWritable()},this.dragSelectedMessages=function(e,t,s){var n,i,a,o,t="/"+t.id,r=e.selectedMessages();0===r.length&&(r=[e.selectedMessage()]),n=_.map(r,"uid"),i=e.$selectedMessage&&0<=n.indexOf(e.$selectedMessage),o="copy"==s?(a=e.$copyMessages(r,t),l("%{0} message(s) copied",r.length)):(a=e.$moveMessages(r,t),l("%{0} message(s) moved",r.length)),a.then(function(){i&&d.go("mail.account.mailbox"),h.show(h.simple().textContent(o).position(g.toastPosition).hideDelay(2e3))})}}e.$inject=["$scope","$rootScope","$state","$transitions","$timeout","$window","$mdUtil","$mdMedia","$mdSidenav","$mdDialog","$mdToast","sgConstant","sgFocus","encodeUriFilter","Dialog","sgSettings","sgHotkeys","Account","Mailbox","VirtualMailbox","User","Preferences","stateAccounts","Message"],angular.module("SOGo.MailerUI").controller("MailboxesController",e)}(),function(){"use strict";function e(n,i,a,c,d,o,r,u,s,h,g,m,f,p,$,b,t,y,v,M,x,e,w,C,S,I){var F=this,E=[];function D(e){return i.mailbox?(0<arguments.length&&(i.mailbox.messageDialog=e),i.mailbox.messageDialog):null}function A(e){return function(){if(null===D())return e.apply(F,arguments)}}function P(){var e,t={};return n.opener&&"$mailboxController"in n.opener&&"selectedFolder"in n.opener.$mailboxController&&n.opener.$mailboxController.selectedFolder.$id()==g.$id()&&(e=n.opener.$mailboxController,t.mailboxCtrl=e,"$messageController"in n.opener)&&n.opener.$messageController.message.uid==m.uid&&(e=n.opener.$messageController,t.messageCtrl=e),t}function k(e,t){var s;null===D()&&(s=a.defer(),D(o.show({parent:angular.element(document.body),targetEvent:e,clickOutsideToClose:!1,escapeToClose:!1,templateUrl:"UIxMailEditor",controller:"MessageEditorController",controllerAs:"editor",onComplete:function(e,t){return s.resolve(t)},locals:{stateParent:i,stateAccount:F.account,stateMessage:t,onCompletePromise:function(){return s.promise}}}).catch(_.noop).finally(function(){D(null),F.closePopup()})))}function T(s,n){F.message.$plainContent().then(function(e){var e={pid:M.$defaultCalendar(),type:n,summary:e.subject,comment:e.content},e=new x(e),t=[$.activeUser("folderURL"),"Calendar","UIx"+n.capitalize()+"EditorTemplate"].join("/");return o.show({parent:angular.element(document.body),targetEvent:s,clickOutsideToClose:!0,escapeToClose:!0,templateUrl:t,controller:"ComponentEditorController",controllerAs:"editor",locals:{stateComponent:e}})})}this.$onInit=function(){var t,e=!1;n.$messageController=F,b.setMessage(m),this.$state=c,this.accounts=s,this.account=h,this.mailbox=g,this.message=m,this.service=C,this.tags={searchText:"",selected:""},this.showFlags=m.flags&&0<m.flags.length,this.$alwaysShowDetailedRecipients=(!m.to||m.to.length<5)&&(!m.cc||m.cc.length<5),this.$showDetailedRecipients=this.$alwaysShowDetailedRecipients,this.showRawSource=!1,this.mailInDeletion=-1,(t=E).push(f.createHotkey({key:l("hotkey_reply"),description:l("Reply to the message"),callback:A(angular.bind(F,F.reply))})),t.push(f.createHotkey({key:l("hotkey_replyall"),description:l("Reply to sender and all recipients"),callback:A(angular.bind(F,F.replyAll))})),t.push(f.createHotkey({key:l("hotkey_forward"),description:l("Forward selected message"),callback:A(angular.bind(F,F.forward))})),t.push(f.createHotkey({key:l("hotkey_flag"),description:l("Flagged"),callback:A(angular.bind(m,m.toggleFlag))})),_.forEach(["backspace","delete"],function(e){t.push(f.createHotkey({key:e,callback:A(function(e){0===F.mailbox.selectedCount()&&F.message.uid!==F.mailInDeletion&&F.deleteMessage(),e.preventDefault()})}))}),_.forEach(t,function(e){f.registerHotkey(e)});try{e=n.opener&&"$mailboxController"in n.opener}catch(e){}e?(i.$watchCollection(function(){return F.message.flags},function(e,t){var s;(e||t)&&(s=P()).messageCtrl&&s.messageCtrl.service.$timeout(function(){s.messageCtrl.showFlags=!0,s.messageCtrl.message.flags=e})}),i.$watch(function(){return F.message.isflagged},function(e,t){var s=P();s.mailboxCtrl&&s.mailboxCtrl.service.$timeout(function(){_.find(s.mailboxCtrl.selectedFolder.$messages,{uid:F.message.uid}).isflagged=e})})):i.$watchCollection(function(){return F.message.flags},function(e,t){var s,n;(e||t)&&(s=e||[],e=t||[],_.forEach(s,function(e,t){angular.isObject(e)&&(s[t]=e.name)}),s.length>e.length?(n=_.difference(s,e),_.forEach(n,function(e){F.message.addTag(e)})):s.length<e.length&&(n=_.difference(e,s),_.forEach(n,function(e){F.message.removeTag(e)})))}),i.$on("$destroy",function(){_.forEach(E,function(e){f.deregisterHotkey(e)}),F.message.$markAsReadPromise&&F.service.$timeout.cancel(F.message.$markAsReadPromise),delete n.$messageController})},this.addFlags=function(e){e.stopPropagation(),e.preventDefault(),this.showFlags=!0,t("flags")},this.toggleDetailedRecipients=function(e){this.$showDetailedRecipients=!this.$showDetailedRecipients,e.stopPropagation(),e.preventDefault()},this.focusChip=function(e){for(var t=e.target;"MD-CHIP"!==t.tagName;)t=t.parentNode;t.classList.add("md-focused")},this.blurChip=function(e){for(var t=e.target;"MD-CHIP"!==t.tagName;)t=t.parentNode;t.classList.remove("md-focused"),e.relatedTarget&&"MD-CHIP-TEMPLATE"===e.relatedTarget.tagName&&F.panel.close()},this.selectRecipient=function(e,t){S.$findAll([]);var s=t.target,n=r.newPanelPosition().relativeTo(s).addPanelPosition(r.xPosition.ALIGN_START,r.yPosition.ALIGN_TOPS),i=r.newPanelAnimation().openFrom(s).duration(100).withAnimation(r.animation.FADE),e={attachTo:angular.element(document.body),locals:{recipient:e,addressbooks:S.$addressbooks,subscriptions:S.$subscriptions,newMessage:angular.bind(this,this.newMessage)},bindToController:!0,controller:a,controllerAs:"$menuCtrl",position:n,animation:i,targetEvent:t,templateUrl:"UIxMailViewRecipientMenu",trapFocus:!0,clickOutsideToClose:!0,escapeToClose:!0,focusOnOpen:!1};function a(n,e,i){this.onKeyDown=function(e){9===e.which&&n.close()},this.newCard=function(e,t){var s=new I({pid:t,c_cn:e.name,emails:[{value:e.email}]});s.$id().then(function(e){s.$save().then(function(){i.show(i.simple().textContent(l("Successfully created card")).position(u.toastPosition).hideDelay(2e3))})}),n.close()}}r.open(e).then(function(e){(F.panel=e).panelEl.one("click",function(){e.close()})}),a.$inject=["mdPanelRef","$state","$mdToast"],"A"===s.tagName&&(t.stopPropagation(),t.preventDefault())},this.filterMailtoLinks=function(e){var t;"A"==e.target.tagName&&"href"in e.target.attributes&&(t=e.target.attributes.href.value,/^mailto:([^\?]+)/.exec(t))&&(delete e.target.attributes.target,this.newMessage(e,t))},this.deleteMessage=function(){var s,n,i,a,o,e=P(),r=this.service.$timeout;function t(e){var t=e;if(n=null,angular.isDefined(i)){0<e&&(--t,a=s.getItemAtIndex(t)),e<s.getLength()&&(o=s.getItemAtIndex(e)),a?a.isread&&o&&!o.isread&&(t=e,a=o):o&&(t=e,a=o);try{a&&d(u["gt-md"])?(w.$virtualMode?i.go("mail.account.virtualMailbox.message",{mailboxId:p(a.$mailbox.path),messageId:a.uid}):i.go("mail.account.mailbox.message",{messageId:a.uid}),r(function(){t<s.$topIndex?s.$topIndex=t:t>s.$lastVisibleIndex&&(s.$topIndex=t-(s.$lastVisibleIndex-s.$topIndex))})):i.go("mail.account.mailbox").then(function(){n=null,delete s.$selectedMessage})}catch(e){}}F.closePopup()}i=e.messageCtrl?(s=e.mailboxCtrl.selectedFolder,n=e.messageCtrl.message,e.messageCtrl.$state):(s=g,n=m,c),w.$virtualMode&&(s=w.selectedFolder),F.mailInDeletion=n.uid,s.$deleteMessages([n]).then(t,function(e){D(y.confirm(l("Warning"),l("The message could not be moved to the trash folder. Would you like to delete it immediately?"),{ok:l("Delete")}).then(function(){s.$deleteMessages([n],{withoutTrash:!0}).then(t).finally(function(){D(null)})}).finally(function(){D(null)}))})},this._showMailEditorInPopup=function(e){return!$.isPopup&&"popup"==v.defaults.SOGoMailComposeWindow&&(this.openInPopup(e),!0)},this.close=function(){var e=w.$virtualMode?"mail.account.virtualMailbox":"mail.account.mailbox";c.go(e).then(function(){F.message=null,delete g.$selectedMessage})},this.reply=function(e){this._showMailEditorInPopup("reply")||k(e,this.message.$reply())},this.replyAll=function(e){this._showMailEditorInPopup("replyall")||k(e,this.message.$replyAll())},this.forward=function(e){this._showMailEditorInPopup("forward")||k(e,this.message.$forward())},this.edit=function(e){this._showMailEditorInPopup("edit")||this.message.$editableContent().then(function(){k(e,F.message)})},this.compose=function(e){this._showMailEditorInPopup("compose")||k(e,this.message.$compose())},this.openInPopup=function(e){var t=[$.baseURL(),"UIxMailPopupView#!/Mail",this.message.accountId,p(p(this.message.$mailbox.path)),this.message.uid].join("/"),s=this.message.$absolutePath();e&&(s+="/"+e,t+="/"+e),n.open(t,s,["width=680","height=520","resizable=1","scrollbars=1","toolbar=0","location=0","directories=0","status=0","menubar=0","copyhistory=0"].join(","))},this.closePopup=function(){n.document.body.classList.contains("popup")&&n.close()},this.newMessage=function(t,e){"A"===t.target.tagName&&(t.stopPropagation(),t.preventDefault()),this.account.$newMessage({mailto:e}).then(function(e){k(t,e)})},this.toggleRawSource=function(e){this.showRawSource||this.message.$rawSource?this.showRawSource=!this.showRawSource:C.$$resource.post(this.message.id,"viewsource").then(function(e){F.message.$rawSource=e,F.showRawSource=!0})},this.activateRawContent=function(e){this.openInPopup("viewRaw")},this.print=function(e){n.print()},this.convertToEvent=function(e){return T(e,"appointment")},this.convertToTask=function(e){return T(e,"task")}}e.$inject=["$window","$scope","$q","$state","$mdMedia","$mdDialog","$mdPanel","sgConstant","stateAccounts","stateAccount","stateMailbox","stateMessage","sgHotkeys","encodeUriFilter","sgSettings","ImageGallery","sgFocus","Dialog","Preferences","Calendar","Component","Account","Mailbox","Message","AddressBook","Card"],angular.module("SOGo.MailerUI").controller("MessageController",e)}(),function(){"use strict";function e(e,n,t,s,i,a,o,r,c,d,u,h,g,m,f,p,$,b,y){var v=this;function M(){var e,t={};try{n.opener&&"$mailboxController"in n.opener&&"selectedFolder"in n.opener.$mailboxController&&(n.opener.$mailboxController.selectedFolder.id==d.$mailbox.id?(t.draftMailboxCtrl=n.opener.$mailboxController,"$messageController"in n.opener&&n.opener.$messageController.message.uid==d.uid&&(t.draftMessageCtrl=n.opener.$messageController)):d.origin&&(e=d.origin.message,n.opener.$mailboxController.selectedFolder.$id()==e.$mailbox.$id())&&(t.originMailboxCtrl=n.opener.$mailboxController))}catch(e){}return t}function x(){v.uploader.url=v.message.$absolutePath({asDraft:!0,withResourcePath:!0})+"/save"}function w(){var e,t,s=v.message.editable.attachmentAttrs;if(s)for(e=0;e<s.length;e++)t={name:s[e].filename,type:s[e].mimetype,size:parseInt(s[e].size)},(t=new o.FileItem(v.uploader,t)).progress=100,t.isUploaded=!0,t.isSuccess=!0,t.inlineUrl=s[e].url,v.uploader.queue.push(t)}function C(){v.isFullscreen=!v.isFullscreen}this.$onInit=function(){e.isPopup=r.isPopup,this.account=c,this.autocomplete={to:{},cc:{},bcc:{}},this.autosave=null,this.isFullscreen=void 0!==screen.orientation&&screen.orientation&&"portrait-primary"==screen.orientation.type,this.hideBcc=0===d.editable.bcc.length,this.hideCc=0===d.editable.cc.length,this.identities=c.identities,this.fromIdentity=d.editable.from,this.identitySearchText="",this.message=d,this.recipientSeparatorKeys=y.defaults.emailSeparatorKeys,this.sendState=!1,this.toggleFullscreen=C,this.firstFocus=!0,this.editor=null,v.uploader=new o({url:v.message.$absolutePath({asDraft:!0,withResourcePath:!0})+"/save",autoUpload:!0,alias:"attachments",removeAfterUpload:!1,onSuccessItem:function(e,t,s,n){v.message.$setUID(t.uid),v.message.$reload(),e.inlineUrl=t.lastAttachmentAttrs[0].url,e.file.name=t.lastAttachmentAttrs[0].filename},onCancelItem:function(e,t,s,n){v.message.$deleteAttachment(e.file.name),this.removeFromQueue(e)},onErrorItem:function(e,t,s,n){a.show(a.simple().textContent(l('Error while uploading the file "%{0}":',e.file.name)+" "+(t.message?l(t.message):"")).position(m.toastPosition).action(l("OK")).hideDelay(!1)),this.removeFromQueue(e)}}),y.defaults.SOGoMailAutoSave&&(this.autosave=g(this.autosaveDrafts,1e3*y.defaults.SOGoMailAutoSave*60)),this.localeCode=y.defaults.LocaleCode,this.ckConfig={language:y.defaults.ckLocaleCode},this.composeType=y.defaults.SOGoMailComposeMessageType,this.signaturePlacement=y.defaults.SOGoMailSignaturePlacement,this.replyPlacement=y.defaults.SOGoMailReplyPlacement,this.message.origin&&"forward"==this.message.origin.action&&(this.replyPlacement="above"),e.$on("$destroy",function(){v.uploader.destroy()}),"reply"==t.actionName?d.$reply().then(function(e){v.message=e,v.fromIdentity=e.editable.from,v.hideCc=!e.editable.cc||0===e.editable.cc.length,v.hideBcc=!e.editable.bcc||0===e.editable.bcc.length,x()}):"replyall"==t.actionName?d.$replyAll().then(function(e){v.message=e,v.fromIdentity=e.editable.from,v.hideCc=!e.editable.cc||0===e.editable.cc.length,v.hideBcc=!e.editable.bcc||0===e.editable.bcc.length,x()}):"forward"==t.actionName?d.$forward().then(function(e){v.message=e,v.fromIdentity=e.editable.from,x(),w()}):"compose"==t.actionName?d.$compose().then(function(e){v.message=e,v.fromIdentity=e.editable.from,x(),w()}):angular.isDefined(d)&&(this.message=d,x(),w())},this.removeAttachment=function(e,t){var s=this,e=(e.isUploading?v.uploader.cancelItem(e):(v.message.$deleteAttachment(e.file.name).then(function(){s.save({toast:!1})}),e.remove()),n.document.getElementById(t));e&&angular.element(e).prop("value",null)},this.cancel=function(){this.autosave&&g.cancel(this.autosave),this.message.isNew&&this.message.attachmentAttrs&&this.message.$mailbox.$deleteMessages([this.message]),i.hide()},this.ignoreReturn=function(e){if(13==e.keyCode)return e.stopPropagation(),e.preventDefault(),!1;186==e.keyCode&&"ü"==e.key&&(e.stopPropagation(),e.preventDefault(),(e=n.document.getElementById(e.target.id)).value=e.value+"ü")},this.save=function(e){var t=M();this.message.$save().then(function(){v.message.$rawSource=null,t.draftMailboxCtrl&&t.draftMailboxCtrl.selectedFolder.$filter().then(function(){t.draftMessageCtrl&&t.draftMessageCtrl.$state.go("mail.account.mailbox.message",{messageId:v.message.uid,reload:!0})}),e&&!e.toast||a.show(a.simple().textContent(l("Your email has been saved")).position(m.toastPosition).hideDelay(3e3))})},this.send=function(){this.editor&&this.editor.component&&this.editor.component.onEditorChange(!0),this.sendState="sending",this.autosave&&g.cancel(this.autosave),this.message.$send().then(function(e){var t=M();v.sendState="sent",t.draftMailboxCtrl&&t.draftMailboxCtrl.selectedFolder.$filter().then(function(){t.draftMessageCtrl&&t.draftMessageCtrl.close()}),t.originMailboxCtrl&&t.originMailboxCtrl.selectedFolder.$filter(),a.show(a.simple().textContent(l("Your email has been sent")).position(m.toastPosition).hideDelay(3e3)),g(i.hide,1e3)},function(e){g(function(){v.sendState="error",v.errorMessage=e.data?e.data.message:e.statusText})})},this.contactFilter=function(e){return $.$filterAll(e,[],{priority:"gcs"}).then(function(e){var t=[];return _.forEach(_.invokeMap(e,"explode"),function(e){_.forEach(e,function(e){t.push(e)})}),_.uniqBy(t,function(e){return e.$$fullname+" "+e.$$email+" "+e.containername})})},this.addRecipient=function(e,t){var s,n,i,a,o=this.message.editable[t];if(angular.isString(e)){for(a="",i=0;i<e.length;i++)(9==e.charCodeAt(i)||32==e.charCodeAt(i)||44==e.charCodeAt(i)||59==e.charCodeAt(i))&&a.isValidEmail()&&o.indexOf(a)<0?(o.push(a),a=""):a+=e.charAt(i);return a&&o.indexOf(a)<0&&o.push(a),null}return e.$isList({expandable:!0})?angular.isDefined(e.refs)&&e.refs.length?_.forEach(e.refs,function(e){e.email.length&&o.indexOf(e.$shortFormat())<0&&o.push(e.$shortFormat())}):(n=b.$find(e.container,e.c_name)).$id().then(function(e){_.forEach(n.refs,function(e){e.email.length&&o.indexOf(e.$shortFormat())<0&&o.push(e.$shortFormat())})}):e.$isGroup({expandable:!0})?(s={toString:function(){return e.$shortFormat()},isExpandable:!0,members:[]},e.$members().then(function(e){s.members=e})):s=e.$shortFormat(),s||null},this.setFromIdentity=function(e){var t,s,n,i,a;if(e&&e.full)this.message.editable.from=e.full,e.replyTo&&(this.message.editable.replyTo=e.replyTo);else if(e&&e.length)return;i="html"==this.composeType?(t="<br />",s="<br ?/>( )?[ \n]?"," "):(s=t="\n"," "),n="above"==this.signaturePlacement?2:1,(v.isNew()&&1===y.defaults.SOGoMailUseSignatureOnNew||!v.isNew()&&1===y.defaults.SOGoMailUseSignatureOnForward&&v.message&&v.message.origin&&v.message.origin.action&&"forward"===v.message.origin.action||!v.isNew()&&1===y.defaults.SOGoMailUseSignatureOnReply&&v.message&&v.message.origin&&v.message.origin.action&&"reply"===v.message.origin.action)&&(a=e&&e.signature?t.repeat(n)+"--"+i+t+e.signature:"",!_.find(this.identities,function(e,t){if(e.signature)try{var s=new RegExp("(<p>)?(<br ?/?>( )?[ \\n]?)?-- <br ?/?>( )?[ \\n]?(</p>)?"+e.signature);if(0<=v.message.editable.text.search(s))return v.message.editable.text=v.message.editable.text.replace(s,a),!0}catch(e){return v.message.editable.text+=a,!0}return!1}))&&0<a.length&&(this.isNew()||"above"!=this.replyPlacement||"above"!=this.signaturePlacement?this.message.editable.text+=a:(i=this.message.editable.text.search(new RegExp(s+".+?:( ?"+s+"){"+n+'}(> |<blockquote type="cite")')),this.message.editable.text=0<=i?this.message.editable.text.slice(0,i)+a+this.message.editable.text.slice(i):a+this.message.editable.text))},this.identitySearch=function(e){var t=e||"";return _.filter(c.identities,function(e){return 0<=e.full.toLowerCase().indexOf(t.toLowerCase())})},this.expandGroup=function(e,t){var s,n=this.message.editable[t],i=n.indexOf(e);for(n.splice(i,1),s=0;s<e.members.length;s++){var a=e.members[s].$shortFormat();n.indexOf(a)<0&&n.splice(i+s,0,e.members[s].$shortFormat())}},this.autosaveDrafts=function(){v.message.$save(),y.defaults.SOGoMailAutoSave&&(v.autosave=g(v.autosaveDrafts,1e3*y.defaults.SOGoMailAutoSave*60))},this.isNew=function(){return void 0===this.message.origin},this.onTextFocus=function(e){var a=e.target;this.firstFocus&&(u().then(function(e){var t,s=angular.element(a).val(),n=/\n-- \n/.test(s),i=0;"above"==v.replyPlacement?(a.setCaretTo(0),e.find("md-dialog-content")[0].scrollTop=0):(n&&-1<(e=s.lastIndexOf("-- "))&&(i=s.length-e),e=s.length-i,t=i=e,-1<(s=s).indexOf("\r\n")&&(t-=(s=s.replace(/\r\n/g,"\n").slice(0,i).match(/\n/g))?s.length-1:0),e=t,n&&(e-=2),a.setCaretTo(e))}),this.firstFocus=!1)},this.onHTMLReady=function(e){this.isNew()||(this.editor=e,u().then(function(){e.focus()}))},this.onHTMLFocus=function(r){this.firstFocus&&(u().then(function(e){var t,s="above"==v.replyPlacement,n=r.getSelection(),i=n.getRanges(),a=r.document.getBody().getChildren();if(s)t=a.getItem(0);else for(t=a.getItem(a.count()-1);;){var o=t.getPrevious();if(null===o)break;if(/--(%20|%A0|%C2%A0)/.test(encodeURI(o.getText()))){t=o.getPrevious().getPrevious();break}t=o}n.selectElement(t),s&&n.scrollIntoView(),(i=n.getRanges())[0].collapse(!0),n.selectRanges(i),s||n.scrollIntoView()}),this.firstFocus=!1)}}function t(e,t){e.closeToast=function(){t.hide()}}e.$inject=["$scope","$window","$stateParams","$mdUtil","$mdDialog","$mdToast","FileUploader","stateParent","stateAccount","stateMessage","onCompletePromise","encodeUriFilter","$timeout","sgConstant","sgFocus","Dialog","AddressBook","Card","Preferences"],t.$inject=["$scope","$mdToast"],angular.module("SOGo.MailerUI").controller("SendMessageToastController",t).controller("MessageEditorController",e)}(),function(){function e(e,t,s,n,i,a,o,r){var l=[];this.$postLink=function(){this.quotaElement=_.find(e.find("div"),function(e){return e.classList.contains("sg-quota")})},this.addMailboxController=function(e){l.push(e)},this.selectFolder=function(e){o.selectedFolderController=e,null!==o.selectedFolder&&(e=_.find(l,function(e){return e.mailbox.id==o.selectedFolder.id}))&&e.unselectFolder(),n(a["gt-md"])||i("left").close()}}e.$inject=["$element","$transitions","$state","$mdMedia","$mdSidenav","sgConstant","Mailbox","encodeUriFilter"],angular.module("SOGo.MailerUI").controller("sgAccountController",e).directive("sgAccountSection",function(){return{restrict:"C",scope:{},controller:"sgAccountController"}})}(),function(){"use strict";function e(s,t){var n=this;s.delegateInvitation=!1,s.delegatedTo="",s.searchText="",s.userFilter=function(e){return t.$filter(e)},s.iCalendarAction=function(e){var t;"delegate"==e&&(t={receiveUpdates:!1,delegatedTo:s.delegatedTo.c_email}),s.viewer.message.$imipAction(n.pathToAttachment,e,t)}}e.$inject=["$scope","User"],angular.module("SOGo.MailerUI").controller("sgImipController",e).directive("sgImip",function(){return{restrict:"A",link:function(e,t,s,n){n.pathToAttachment=s.sgImipPath},controller:"sgImipController"}})}(),function(){function e(e,a,t,s,n,o,i,r,c,d,u,h,g,m,f){var p=this;this.$onInit=function(){this.$element=t,this.editMode=!1,this.accountController.addMailboxController(this)},this.$postLink=function(){this.selectableElement=t.find("div")[0],this.clickableElement=t.find("p")[0],this.inputContainer=t.find("md-input-container")[0],this.inputElement=t.find("input")[0],this.moreOptionsButton=_.last(t.find("md-icon")),null!==h.selectedFolder&&h.selectedFolder.id==this.mailbox.id&&this.accountController.selectFolder(this)},this.childLevel=function(){return"sg-child-level-"+this.mailbox.level},this.selectFolder=function(e){this.editMode||this.mailbox==h.selectedFolder||this.mailbox.isNoSelect()||(this.mailbox.setHighlightWords([]),h.selectedFolder&&(h.$virtualMode?(h.$virtualMode=!1,h.$virtualPath=!1,a.$broadcast("resetMailAdvancedSearchPanel"),h.selectedFolder.$mailboxes&&0<h.selectedFolder.$mailboxes.length&&h.selectedFolder.$reset({filter:!0,unseenCount:h.selectedFolder.$mailboxes[0].unseenCount})):h.selectedFolder.$reset({filter:!0,unseenCount:h.selectedFolder.unseenCount})),this.accountController.selectFolder(this),e&&(s.go("mail.account.mailbox",{accountId:this.mailbox.$account.id,mailboxId:g(g(this.mailbox.path))}),e.stopPropagation(),e.preventDefault()))},this.unselectFolder=function(){t[0].classList.remove("md-bg")},this.editFolder=function(e){e.stopPropagation(),e.preventDefault(),this.mailbox.$isEditable&&(this.editMode=!0,this.inputElement.value=this.mailbox.name,this.clickableElement.classList.add("ng-hide"),this.inputContainer.classList.remove("ng-hide"),e.srcEvent&&"touchend"==e.srcEvent.type?n(function(){p.inputElement.select(),p.inputElement.focus()},200):(this.inputElement.select(),this.inputElement.focus())),this.panel&&this.panel.close()},this.saveFolder=function(e){this.inputElement.disabled||(this.mailbox.name=this.inputElement.value,this.inputElement.disabled=!0,this.mailbox.$rename().then(function(e){p.editMode=!1,p.inputContainer.classList.add("ng-hide"),p.clickableElement.classList.remove("ng-hide")}).finally(function(){p.inputElement.disabled=!1}))},this.revertEditing=function(){this.editMode=!1,this.clickableElement.classList.remove("ng-hide"),this.inputContainer.classList.add("ng-hide"),this.inputElement.value=this.mailbox.name},this.confirmDelete=function(){u.confirm(l("Warning"),l("Do you really want to move this folder into the trash ?"),{ok:l("Delete")}).then(function(){p.mailbox.$delete().then(function(){s.go("mail.account.inbox")},function(e){u.confirm(l("Warning"),l("The mailbox could not be moved to the trash folder. Would you like to delete it immediately?"),{ok:l("Delete")}).then(function(){p.mailbox.$delete({withoutTrash:!0}).then(function(){s.go("mail.account.inbox")},function(e){u.alert(l('An error occured while deleting the mailbox "%{0}".',p.mailbox.name),l(e.error))})})})})},this.showMenu=function(e){var t=i.newPanelPosition().relativeTo(this.moreOptionsButton).addPanelPosition(i.xPosition.ALIGN_START,i.yPosition.ALIGN_TOPS),s=i.newPanelAnimation().openFrom(this.moreOptionsButton).duration(100).withAnimation(i.animation.FADE),t={attachTo:angular.element(document.body),locals:{itemCtrl:this,folder:this.mailbox,editFolder:angular.bind(this,this.editFolder),confirmDelete:angular.bind(this,this.confirmDelete)},bindToController:!0,controller:n,controllerAs:"$menuCtrl",position:t,animation:s,targetEvent:e,templateUrl:"UIxMailFolderMenu",trapFocus:!0,clickOutsideToClose:!0,escapeToClose:!0,focusOnOpen:!0};function n(t,e,s,n){var i=this;this.markFolderRead=function(){this.folder.$markAsRead()},this.newFolder=function(){u.prompt(l("New Folder..."),l("Enter the new name of your folder")).then(function(s){i.folder.$newMailbox(i.folder.id,s).then(function(){},function(e,t){u.alert(l('An error occured while creating the mailbox "%{0}".',s),l(e.error))})})},this.compactFolder=function(){this.folder.$compact().then(function(){o.show(o.simple().textContent(l("Folder compacted")).position(d.toastPosition).hideDelay(3e3))})},this.cleanMailbox=function(){r(d["gt-md"])||c("left").close(),a.$broadcast("showCleanMailboxPanel",{folder:this.folder,account:null})},this.emptyJunkFolder=function(){return this.emptyFolder(l("Junk folder emptied"))},this.emptyTrashFolder=function(){return this.emptyFolder(l("Trash emptied"))},this.emptyFolder=function(e){this.folder.$empty().then(function(){o.show(o.simple().textContent(e).position(d.toastPosition).hideDelay(3e3))})},this.showAdvancedSearch=function(){h.$virtualPath=this.folder.path,r(d["gt-md"])||c("left").close(),a.$broadcast("showMailAdvancedSearchPanel")},this.share=function(){var e=angular.bind(this.folder.constructor.$$resource,this.folder.constructor.$$resource.encodeURL);this.folder.$acl.$users().then(function(){s.show({templateUrl:e(i.folder.id).join("/")+"/UIxAclEditor",controller:"AclController",controllerAs:"acl",clickOutsideToClose:!0,escapeToClose:!0,locals:{usersWithACL:i.folder.$acl.users,User:n,folder:i.folder}})})},this.setFolderAs=function(e){this.folder.$setFolderAs(e).then(function(){i.folder.$account.$getMailboxes({reload:!0})})},this.isParentOf=function(n){var i=function(e){if(!(e.children&&0<e.children.length))return e.path==n;for(var t=0;t<e.children.length;t++){var s=e.children[t];if(s.children&&0<s.children.length){if(i(s))return!0}else if(s.path==n)return!0}};return i(this.folder)},this.moveFolder=function(e){this.folder.$move(e),t.close()}}i.open(t).then(function(e){(p.panel=e).panelEl.one("click",function(){e.close()})}),n.$inject=["mdPanelRef","$state","$mdDialog","User"]}}e.$inject=["$scope","$rootScope","$element","$state","$timeout","$mdToast","$mdPanel","$mdMedia","$mdSidenav","sgConstant","Dialog","Mailbox","encodeUriFilter","$window","Account"],angular.module("SOGo.MailerUI").controller("sgMailboxListItemController",e).directive("sgMailboxListItem",function(){return{restrict:"C",require:{accountController:"^^sgAccountSection"},scope:{},bindToController:{mailbox:"=sgMailbox"},template:[' <div class="sg-child-level-0"',' ng-class="$ctrl.childLevel()">',' <md-checkbox class="sg-folder"',' ng-class="$ctrl.mailbox.$icon"',' aria-label="'+l("Expanded")+'"',' ng-model="$ctrl.mailbox.$expanded"',' ng-disabled="$ctrl.mailbox.children.length == 0"',' ng-change="$ctrl.mailbox.$account.$flattenMailboxes({ reload: true, saveState: true })">'," </md-checkbox>"," </div>",' <p class="sg-item-name"',' ng-click="$ctrl.selectFolder($event)"',' ng-dblclick="$ctrl.editFolder($event)">'," <md-icon ng-class=\"{ 'sg-opacity-70': $ctrl.mailbox.isNoSelect() }\">{{$ctrl.mailbox.$icon}}</md-icon>",' <span ng-class="{ \'sg-font-medium\': $ctrl.mailbox.unseenCount }" ng-bind="$ctrl.mailbox.$displayName"></span>',' <span class="sg-counter-badge ng-hide"',' ng-show="$ctrl.mailbox.unseenCount"',' ng-bind="$ctrl.mailbox.unseenCount"></span>'," </p>",' <md-input-container class="md-flex ng-hide">',' <input class="sg-item-name" type="text"',' aria-label="'+l("Enter the new name of your folder")+'"',' ng-blur="$ctrl.saveFolder($event)"',' sg-enter="$ctrl.saveFolder($event)"',' sg-escape="$ctrl.revertEditing()" />'," </md-input-container>",' <md-icon class="md-menu md-secondary-container" ng-click="$ctrl.showMenu($event)" aria-label="'+l("Options")+'">more_vert</md-icon>'].join(""),controller:"sgMailboxListItemController",controllerAs:"$ctrl"}})}(),function(){function e(t,e,s,n){var i=this,a=0;this.$onInit=function(){var e=["uid","isread","isflagged","flags","loading"];"draft"!=(this.MailboxService=n).selectedFolder.type&&"templates"!=n.selectedFolder.type||e.push("subject"),t.$watch(function(){return i.message?[_.pick(i.message,e)]:null},function(e,t){i.message&&i.onUpdate()},!0)},this.onUpdate=function(){this.message.loading?e.addClass("sg-skeleton"):(e.removeClass("sg-skeleton"),this.message.isread?e.removeClass("unread"):e.addClass("unread"),n.selectedFolder.isSelectedMessage(this.message.uid,this.message.$mailbox.path)?e.addClass("md-default-theme md-accent md-bg md-hue-2"):e.removeClass("md-default-theme md-accent md-bg md-hue-2"))},this.setVisibility=function(e,t){t?e.classList.remove("ng-hide"):e.classList.add("ng-hide")},t.$on("listRefreshed",function(){s(function(){e.parent()[0]&&e.parent()[0].parentElement&&e.parent()[0].parentElement.parentElement&&(e.parent()[0].parentElement.parentElement.scrollTop=a)},0)}),t.$on("beforeListRefresh",function(){e.parent()[0]&&e.parent()[0].parentElement&&e.parent()[0].parentElement.parentElement&&(a=e.parent()[0].parentElement.parentElement.scrollTop)})}e.$inject=["$scope","$element","$timeout","Mailbox"],angular.module("SOGo.MailerUI").controller("sgMessageListItemController",e).directive("sgMessageListItem",function(){return{restrict:"C",scope:{},bindToController:{message:"=sgMessage"},controller:"sgMessageListItemController"}})}(),function(){function e(n,l,e,t,c,s,i,a,o,r){var d=this;this.$postLink=function(){var t,e,s,o,r;this.parentController=n.parentController,o=this.parentController.onUpdate,r=this.parentController.setVisibility,_.forEach(l.find("div"),function(e){e.classList.contains("sg-tile-content")?t=angular.element(e):e.classList.contains("sg-tile-icons")&&(s=angular.element(e))}),e=t.find("button")[0],this.threadButton=e,e=angular.element(e),this.threadIconElement=e.find("md-icon")[0],this.threadCountElement=e.find("span")[0],this.priorityIconElement=t.find("md-icon")[0],i.$virtualMode&&(this.mailboxNameElement=t.find("span")[0],this.mailboxNameElement.classList.remove("ng-hide")),this.senderElement=t.find("span")[1],_.forEach(t.find("div"),function(e){e.classList.contains("sg-tile-subject")?d.subjectElement=e:e.classList.contains("sg-tile-size")?d.sizeElement=e:e.classList.contains("sg-tile-date")&&(d.dateElement=e)}),_.forEach(s.find("md-icon"),function(e){"star"==e.textContent?d.flagIconElement=e:"reply"==e.textContent?d.answerIconElement=e:"forward"==e.textContent?d.forwardIconElement=e:"attach_file"==e.textContent&&(d.attachmentIconElement=e)}),this.parentController.onUpdate=function(){var e;if(d.message=d.parentController.message,!d.message.loading){var t=l[0].querySelector(".sg-category-dot-container"),s=angular.element(t),n=c.nodesToArray(t.querySelectorAll(".sg-category-dot"));for(_.forEach(n,function(e){t.removeChild(e)}),e=0;e<d.message.flags.length&&e<5;e++){var i,a=d.message.flags[e];d.service.$tags[a]&&((i=angular.element('<div class="sg-category-dot"></div>')).css("background-color",d.service.$tags[a][1]),s.append(i))}d.mailboxNameElement&&(d.mailboxNameElement.innerHTML=d.message.$mailbox.$displayName),d.defineSubjectAndSenderElements(),d.message.priority&&d.message.priority.level<3?(d.priorityIconElement.classList.remove("ng-hide"),d.message.priority.level<2?d.priorityIconElement.classList.add("md-warn"):d.priorityIconElement.classList.remove("md-warn")):d.priorityIconElement.classList.add("ng-hide"),d.message.first?(d.threadButton.classList.remove("ng-hide"),d.threadCountElement.innerHTML=d.message.threadCount,d.message.collapsed&&d.threadIconElement.classList.remove("md-rotate-180-ccw")):d.threadButton.classList.add("ng-hide"),d.sizeElement.innerHTML=d.message.size,d.dateElement.innerHTML=d.message.relativedate,r(d.flagIconElement,d.message.isflagged),r(d.answerIconElement,d.message.isanswered),r(d.forwardIconElement,d.message.isforwarded),r(d.attachmentIconElement,d.message.hasattachment)}angular.bind(d.parentController,o)()},this.service=a,this.MailboxService=i},this.defineSubjectAndSenderElements=function(){d&&d.message&&!d.message.loading&&(d.subjectElement.innerHTML=d.message.getHighlightSubject(),d.MailboxService.selectedFolder.isSentFolder||d.MailboxService.selectedFolder.isDraftsFolder?d.senderElement.innerHTML=d.message.highlightSearchTerms(d.message.$shortAddress("to",r.defaults.SOGoMailDisplayFullEmail),!0):d.senderElement.innerHTML=d.message.highlightSearchTerms(d.message.$shortAddress("from",r.defaults.SOGoMailDisplayFullEmail),!0))},this.$doCheck=function(){d.defineSubjectAndSenderElements()},this.toggleThread=function(){this.message.collapsed?this.threadIconElement.classList.add("md-rotate-180-ccw"):this.threadIconElement.classList.remove("md-rotate-180-ccw"),this.message.toggleThread()}}e.$inject=["$scope","$element","$parse","$state","$mdUtil","$mdToast","Mailbox","Message","encodeUriFilter","Preferences"],angular.module("SOGo.MailerUI").controller("sgMessageListItemMainController",e).directive("sgMessageListItemMain",function(){return{restrict:"C",require:"^^sgMessageListItem",scope:{},template:['<div class="sg-tile-content">',' <div class="sg-md-subhead">'," <div>",' <span class="sg-label-outline ng-hide">\x3c!-- mailbox --\x3e</span>',' <md-icon class="ng-hide">error</md-icon>'," <span>\x3c!-- sender or recipient --\x3e</span>"," </div>",' <div class="sg-tile-date">\x3c!-- date --\x3e</div>'," </div>",' <div class="sg-md-body">',' <div class="sg-category-dot-container">\x3c!-- categories --\x3e</div>',' <div class="sg-tile-subject">\x3c!-- subject --\x3e</div>',' <div class="sg-tile-size">\x3c!-- size --\x3e</div>',' <md-button class="sg-tile-btn md-secondary ng-hide" md-colors="::{ color: \'accent-600\'}" ng-click="$ctrl.toggleThread()">',' <md-icon class="md-rotate-180-ccw" md-colors="::{ color: \'accent-600\'}">expand_more</md-icon><span></span>'," </md-button>"," </div>","</div>",'<div class="sg-tile-icons">',' <md-icon class="ng-hide sg-icon-star">star</md-icon>',' <md-icon class="ng-hide">reply</md-icon>',' <md-icon class="ng-hide">forward</md-icon>',' <md-icon class="ng-hide">attach_file</md-icon>',"</div>",'<div class="sg-progress-linear-bottom">',' <md-progress-linear class="md-accent"',' md-mode="indeterminate"',' ng-disabled="!$ctrl.message.$isLoading()">\x3c!-- message loading progress --\x3e</md-progress-linear>',"</div>"].join(""),link:function(e,t,s,n){e.parentController=n},controller:"sgMessageListItemMainController",controllerAs:"$ctrl"}})}(),function(){"use strict";function e(e,t){var s=this;this.$postLink=function(){t.registerImage(e),e.on("click",this.showImage)},this.showImage=function(e){"IMG"==e.target.tagName&&t.showGallery(e,s.partIndex)}}e.$inject=["$element","ImageGallery"],angular.module("SOGo.MailerUI").directive("sgZoomableImage",function(){return{restrict:"A",bindToController:{partIndex:"=sgZoomableImage"},controller:e}})}();
|
|
//# sourceMappingURL=Mailer.services.js.map
|