@firestitch/app-message 9.2.0 → 12.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/app/helpers/index-name-value.d.ts +1 -1
  2. package/app/helpers/index.d.ts +1 -1
  3. package/app/modules/app-message/app-message.module.d.ts +8 -4
  4. package/app/modules/app-message/injectors/app-message-config.injector.d.ts +3 -3
  5. package/app/modules/app-message/injectors/index.d.ts +1 -1
  6. package/app/modules/app-message/interfaces/app-message-config.d.ts +26 -26
  7. package/app/modules/app-message/interfaces/index.d.ts +1 -1
  8. package/app/modules/app-message/types/index.d.ts +1 -1
  9. package/app/modules/app-message/types/types.type.d.ts +40 -40
  10. package/app/modules/message-preview/components/index.d.ts +1 -1
  11. package/app/modules/message-preview/components/preview/index.d.ts +1 -1
  12. package/app/modules/message-preview/components/preview/preview.component.d.ts +11 -8
  13. package/app/modules/message-preview/message-preview.module.d.ts +11 -2
  14. package/app/modules/message-queues/components/queue/queue.component.d.ts +43 -40
  15. package/app/modules/message-queues/components/queues/queues.component.d.ts +24 -21
  16. package/app/modules/message-queues/components/recipient/recipient.component.d.ts +10 -7
  17. package/app/modules/message-queues/consts/index.d.ts +1 -1
  18. package/app/modules/message-queues/consts/message-queue-event-type.const.d.ts +5 -5
  19. package/app/modules/message-queues/consts/message-queue-states.const.d.ts +5 -5
  20. package/app/modules/message-queues/enums/email-message-queue-format.enum.d.ts +5 -5
  21. package/app/modules/message-queues/enums/index.d.ts +3 -3
  22. package/app/modules/message-queues/enums/message-queue-event-type.enum.d.ts +4 -4
  23. package/app/modules/message-queues/enums/message-queue-state.enum.d.ts +9 -9
  24. package/app/modules/message-queues/enums/message-queue-type.enum.d.ts +4 -4
  25. package/app/modules/message-queues/message-queues.module.d.ts +29 -2
  26. package/app/modules/message-queues/pipes/linkify.pipe.d.ts +7 -4
  27. package/app/modules/message-queues/pipes/truncate.pipe.d.ts +7 -4
  28. package/app/modules/message-queues/services/message-queue.service.d.ts +12 -9
  29. package/app/modules/message-templates/components/index.d.ts +2 -0
  30. package/app/modules/message-templates/components/template/index.d.ts +1 -1
  31. package/app/modules/message-templates/components/template/template.component.d.ts +23 -20
  32. package/app/modules/message-templates/components/templates/index.d.ts +1 -0
  33. package/app/modules/message-templates/components/templates/templates.component.d.ts +19 -16
  34. package/app/modules/message-templates/message-templates.module.d.ts +25 -2
  35. package/app/modules/messages/components/index.d.ts +2 -2
  36. package/app/modules/messages/components/message/index.d.ts +1 -1
  37. package/app/modules/messages/components/message/message.component.d.ts +32 -29
  38. package/app/modules/messages/components/messages/index.d.ts +1 -1
  39. package/app/modules/messages/components/messages/messages.component.d.ts +19 -16
  40. package/app/modules/messages/consts/email-message-formats.const.d.ts +5 -5
  41. package/app/modules/messages/consts/index.d.ts +1 -1
  42. package/app/modules/messages/enums/email-message-format.enum.d.ts +5 -5
  43. package/app/modules/messages/enums/index.d.ts +1 -1
  44. package/app/modules/messages/messages.module.d.ts +28 -2
  45. package/app/modules/webhooks/components/webhooks/webhooks.component.d.ts +15 -12
  46. package/app/modules/webhooks/webhooks.module.d.ts +9 -2
  47. package/bundles/firestitch-app-message.umd.js +1567 -1260
  48. package/bundles/firestitch-app-message.umd.js.map +1 -1
  49. package/esm2015/app/helpers/index-name-value.js +8 -8
  50. package/esm2015/app/helpers/index.js +2 -2
  51. package/esm2015/app/modules/app-message/app-message.module.js +17 -15
  52. package/esm2015/app/modules/app-message/injectors/app-message-config.injector.js +4 -4
  53. package/esm2015/app/modules/app-message/injectors/index.js +2 -2
  54. package/esm2015/app/modules/app-message/interfaces/app-message-config.js +2 -1
  55. package/esm2015/app/modules/app-message/interfaces/index.js +2 -1
  56. package/esm2015/app/modules/app-message/types/index.js +2 -1
  57. package/esm2015/app/modules/app-message/types/types.type.js +2 -1
  58. package/esm2015/app/modules/message-preview/components/index.js +2 -2
  59. package/esm2015/app/modules/message-preview/components/preview/index.js +2 -2
  60. package/esm2015/app/modules/message-preview/components/preview/preview.component.js +29 -25
  61. package/esm2015/app/modules/message-preview/message-preview.module.js +38 -27
  62. package/esm2015/app/modules/message-queues/components/queue/queue.component.js +209 -200
  63. package/esm2015/app/modules/message-queues/components/queues/queues.component.js +145 -141
  64. package/esm2015/app/modules/message-queues/components/recipient/recipient.component.js +30 -29
  65. package/esm2015/app/modules/message-queues/consts/index.js +2 -2
  66. package/esm2015/app/modules/message-queues/consts/message-queue-event-type.const.js +6 -6
  67. package/esm2015/app/modules/message-queues/consts/message-queue-states.const.js +11 -11
  68. package/esm2015/app/modules/message-queues/enums/email-message-queue-format.enum.js +7 -7
  69. package/esm2015/app/modules/message-queues/enums/index.js +4 -4
  70. package/esm2015/app/modules/message-queues/enums/message-queue-event-type.enum.js +6 -6
  71. package/esm2015/app/modules/message-queues/enums/message-queue-state.enum.js +11 -11
  72. package/esm2015/app/modules/message-queues/enums/message-queue-type.enum.js +6 -6
  73. package/esm2015/app/modules/message-queues/message-queues.module.js +120 -70
  74. package/esm2015/app/modules/message-queues/pipes/linkify.pipe.js +22 -20
  75. package/esm2015/app/modules/message-queues/pipes/truncate.pipe.js +22 -20
  76. package/esm2015/app/modules/message-queues/services/message-queue.service.js +29 -31
  77. package/esm2015/app/modules/message-templates/components/index.js +3 -0
  78. package/esm2015/app/modules/message-templates/components/template/index.js +2 -2
  79. package/esm2015/app/modules/message-templates/components/template/template.component.js +84 -75
  80. package/esm2015/app/modules/message-templates/components/templates/index.js +2 -0
  81. package/esm2015/app/modules/message-templates/components/templates/templates.component.js +91 -91
  82. package/esm2015/app/modules/message-templates/message-templates.module.js +98 -57
  83. package/esm2015/app/modules/messages/components/index.js +3 -3
  84. package/esm2015/app/modules/messages/components/message/index.js +2 -2
  85. package/esm2015/app/modules/messages/components/message/message.component.js +136 -125
  86. package/esm2015/app/modules/messages/components/messages/index.js +2 -2
  87. package/esm2015/app/modules/messages/components/messages/messages.component.js +74 -74
  88. package/esm2015/app/modules/messages/consts/email-message-formats.const.js +7 -7
  89. package/esm2015/app/modules/messages/consts/index.js +2 -2
  90. package/esm2015/app/modules/messages/enums/email-message-format.enum.js +7 -7
  91. package/esm2015/app/modules/messages/enums/index.js +2 -2
  92. package/esm2015/app/modules/messages/messages.module.js +111 -64
  93. package/esm2015/app/modules/webhooks/components/webhooks/webhooks.component.js +64 -63
  94. package/esm2015/app/modules/webhooks/webhooks.module.js +30 -23
  95. package/esm2015/firestitch-app-message.js +5 -13
  96. package/esm2015/public_api.js +18 -16
  97. package/fesm2015/firestitch-app-message.js +1166 -998
  98. package/fesm2015/firestitch-app-message.js.map +1 -1
  99. package/firestitch-app-message.d.ts +5 -12
  100. package/package.json +5 -8
  101. package/public_api.d.ts +15 -13
  102. package/bundles/firestitch-app-message.umd.min.js +0 -2
  103. package/bundles/firestitch-app-message.umd.min.js.map +0 -1
  104. package/esm5/app/helpers/index-name-value.js +0 -8
  105. package/esm5/app/helpers/index.js +0 -2
  106. package/esm5/app/modules/app-message/app-message.module.js +0 -19
  107. package/esm5/app/modules/app-message/injectors/app-message-config.injector.js +0 -4
  108. package/esm5/app/modules/app-message/injectors/index.js +0 -2
  109. package/esm5/app/modules/app-message/interfaces/app-message-config.js +0 -1
  110. package/esm5/app/modules/app-message/interfaces/index.js +0 -1
  111. package/esm5/app/modules/app-message/types/index.js +0 -1
  112. package/esm5/app/modules/app-message/types/types.type.js +0 -1
  113. package/esm5/app/modules/message-preview/components/index.js +0 -2
  114. package/esm5/app/modules/message-preview/components/preview/index.js +0 -2
  115. package/esm5/app/modules/message-preview/components/preview/preview.component.js +0 -26
  116. package/esm5/app/modules/message-preview/message-preview.module.js +0 -30
  117. package/esm5/app/modules/message-queues/components/queue/queue.component.js +0 -207
  118. package/esm5/app/modules/message-queues/components/queues/queues.component.js +0 -143
  119. package/esm5/app/modules/message-queues/components/recipient/recipient.component.js +0 -32
  120. package/esm5/app/modules/message-queues/consts/index.js +0 -2
  121. package/esm5/app/modules/message-queues/consts/message-queue-event-type.const.js +0 -6
  122. package/esm5/app/modules/message-queues/consts/message-queue-states.const.js +0 -11
  123. package/esm5/app/modules/message-queues/enums/email-message-queue-format.enum.js +0 -7
  124. package/esm5/app/modules/message-queues/enums/index.js +0 -4
  125. package/esm5/app/modules/message-queues/enums/message-queue-event-type.enum.js +0 -6
  126. package/esm5/app/modules/message-queues/enums/message-queue-state.enum.js +0 -11
  127. package/esm5/app/modules/message-queues/enums/message-queue-type.enum.js +0 -6
  128. package/esm5/app/modules/message-queues/message-queues.module.js +0 -73
  129. package/esm5/app/modules/message-queues/pipes/linkify.pipe.js +0 -23
  130. package/esm5/app/modules/message-queues/pipes/truncate.pipe.js +0 -26
  131. package/esm5/app/modules/message-queues/services/message-queue.service.js +0 -33
  132. package/esm5/app/modules/message-templates/components/template/index.js +0 -2
  133. package/esm5/app/modules/message-templates/components/template/template.component.js +0 -78
  134. package/esm5/app/modules/message-templates/components/templates/templates.component.js +0 -94
  135. package/esm5/app/modules/message-templates/message-templates.module.js +0 -60
  136. package/esm5/app/modules/messages/components/index.js +0 -3
  137. package/esm5/app/modules/messages/components/message/index.js +0 -2
  138. package/esm5/app/modules/messages/components/message/message.component.js +0 -130
  139. package/esm5/app/modules/messages/components/messages/index.js +0 -2
  140. package/esm5/app/modules/messages/components/messages/messages.component.js +0 -77
  141. package/esm5/app/modules/messages/consts/email-message-formats.const.js +0 -7
  142. package/esm5/app/modules/messages/consts/index.js +0 -2
  143. package/esm5/app/modules/messages/enums/email-message-format.enum.js +0 -7
  144. package/esm5/app/modules/messages/enums/index.js +0 -2
  145. package/esm5/app/modules/messages/messages.module.js +0 -67
  146. package/esm5/app/modules/webhooks/components/webhooks/webhooks.component.js +0 -65
  147. package/esm5/app/modules/webhooks/webhooks.module.js +0 -26
  148. package/esm5/firestitch-app-message.js +0 -13
  149. package/esm5/public_api.js +0 -16
  150. package/fesm5/firestitch-app-message.js +0 -1127
  151. package/fesm5/firestitch-app-message.js.map +0 -1
  152. package/firestitch-app-message.metadata.json +0 -1
@@ -1,2 +0,0 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/common"),require("@angular/router"),require("@angular/flex-layout"),require("@angular/material/button"),require("@angular/material/core"),require("@angular/material/dialog"),require("@angular/material/form-field"),require("@angular/material/input"),require("@angular/material/select"),require("@angular/material/tabs"),require("@angular/material/checkbox"),require("@angular/material/tooltip"),require("@firestitch/label"),require("@firestitch/dialog"),require("@firestitch/list"),require("@firestitch/skeleton"),require("@angular/forms"),require("@firestitch/form"),require("@firestitch/text-editor"),require("@firestitch/editor"),require("rxjs/operators"),require("rxjs"),require("@firestitch/filter"),require("@firestitch/message"),require("@firestitch/prompt"),require("@firestitch/iframe"),require("@angular/material/icon"),require("@firestitch/date"),require("@firestitch/selection"),require("anchorme")):"function"==typeof define&&define.amd?define("@firestitch/app-message",["exports","@angular/core","@angular/common","@angular/router","@angular/flex-layout","@angular/material/button","@angular/material/core","@angular/material/dialog","@angular/material/form-field","@angular/material/input","@angular/material/select","@angular/material/tabs","@angular/material/checkbox","@angular/material/tooltip","@firestitch/label","@firestitch/dialog","@firestitch/list","@firestitch/skeleton","@angular/forms","@firestitch/form","@firestitch/text-editor","@firestitch/editor","rxjs/operators","rxjs","@firestitch/filter","@firestitch/message","@firestitch/prompt","@firestitch/iframe","@angular/material/icon","@firestitch/date","@firestitch/selection","anchorme"],t):t(((e=e||self).firestitch=e.firestitch||{},e.firestitch["app-message"]={}),e.ng.core,e.ng.common,e.ng.router,e.ng.flexLayout,e.ng.material.button,e.ng.material.core,e.ng.material.dialog,e.ng.material.formField,e.ng.material.input,e.ng.material.select,e.ng.material.tabs,e.ng.material.checkbox,e.ng.material.tooltip,e.label,e.dialog$1,e.list,e.skeleton,e.ng.forms,e.form,e.textEditor,e.editor,e.rxjs.operators,e.rxjs,e.filter,e.message,e.prompt,e.iframe,e.ng.material.icon,e.date,e.selection,e.anchorme)}(this,(function(e,t,n,a,s,i,o,l,r,m,u,g,c,f,p,d,b,M,h,y,v,Q,w,F,_,T,I,x,C,S,D,j){"use strict";j=j&&Object.prototype.hasOwnProperty.call(j,"default")?j.default:j;var L,k=function(){return(k=Object.assign||function(e){for(var t,n=1,a=arguments.length;n<a;n++)for(var s in t=arguments[n])Object.prototype.hasOwnProperty.call(t,s)&&(e[s]=t[s]);return e}).apply(this,arguments)};function R(e,t,n,a){var s,i=arguments.length,o=i<3?t:null===a?a=Object.getOwnPropertyDescriptor(t,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,n,a);else for(var l=e.length-1;l>=0;l--)(s=e[l])&&(o=(i<3?s(o):i>3?s(t,n,o):s(t,n))||o);return i>3&&o&&Object.defineProperty(t,n,o),o}function A(e,t){return function(n,a){t(n,a,e)}}function E(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function O(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var a,s,i=n.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(a=i.next()).done;)o.push(a.value)}catch(e){s={error:e}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(s)throw s.error}}return o}!function(e){e.Text="T",e.HTML="H",e.RichText="R"}(L||(L={}));var q=[{name:"Text",value:L.Text},{name:"HTML",value:L.HTML},{name:"Rich Text",value:L.RichText}],P=function(){function e(e){this._data=e,this.html=e.html,this.styles=e.styles}return e.prototype.ngOnInit=function(){},e.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[l.MAT_DIALOG_DATA]}]}]},e=R([t.Component({template:'<fs-dialog>\n <div mat-dialog-title>Preview</div>\n <mat-dialog-content>\n <fs-iframe\n [html]="html"\n [styles]="styles">\n </fs-iframe>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button mat-button [mat-dialog-close]="null" color="primary" type="button">Done</button>\n </mat-dialog-actions>\n</fs-dialog>\n',styles:[""]}),A(0,t.Inject(l.MAT_DIALOG_DATA)),E("design:paramtypes",[Object])],e)}(),N=(new t.InjectionToken("fs-app-message-root-config"),new t.InjectionToken("fs-app-message-config")),z=function(){function e(e,t,n,a,s,i){var o=this;this._config=e,this._data=t,this._prompt=n,this._message=a,this._dialog=s,this._cdRef=i,this.messageTemplates=[],this.emailMessageFormats=q,this.emailMessageFormat=L,this.save=function(){return o._config.saveMessage(o.message).pipe(w.tap((function(){o._message.success("Saved Changes")})))}}return e.prototype.ngOnInit=function(){var e=this;this._config.loadMessage(this._data.message).subscribe((function(t){e.message=t,e.message.emailMessage&&void 0===e.message.emailMessage.customize&&(e.message.emailMessage.customize=!0),e.message.smsMessage&&void 0===e.message.smsMessage.customize&&(e.message.smsMessage.customize=!0),e._cdRef.markForCheck()})),this._config.loadMessageTemplates().subscribe((function(t){e.messageTemplates=t.data,e._cdRef.markForCheck()}))},e.prototype.tabChange=function(e){switch(e.tab.textLabel){case"SMS Message":this.tab="sms";break;case"Email Message":this.tab="email";break;default:this.tab=null}},e.prototype.openPreview=function(){var e=this,t=this.message.emailMessage.body,n=this.message.emailMessage.styles;if(this.message.emailMessage.messageTemplateId){var a=this.messageTemplates.find((function(t){return e.message.emailMessage.messageTemplateId===t.id}));a&&(t=a.content.replace("{$content}",t),n=a.styles.concat(n))}this._dialog.open(P,{data:{styles:n,html:t},width:"95%"})},e.prototype.sendTest=function(e){var t=this;F.of(!0).pipe(w.switchMap((function(){return"email"===e?t._config.getTestEmail():F.of("")})),w.switchMap((function(n){var a="email"===e?"an email":"phone number";return t._prompt.input({label:"Please enter "+a+" to send test to",title:"Send Test",commitLabel:"Send",default:n,required:!0})}))).subscribe((function(n){t._config.testMessage(t.message,n,e).subscribe((function(){t._message.success("Test Sent")}))}))},e.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[N]}]},{type:void 0,decorators:[{type:t.Inject,args:[l.MAT_DIALOG_DATA]}]},{type:I.FsPrompt},{type:T.FsMessage},{type:l.MatDialog},{type:t.ChangeDetectorRef}]},e=R([t.Component({template:'<form\n fsForm\n [submit]="save"\n #form="ngForm"\n *fsSkeleton="message"\n [dirtyConfirmTabs]="false">\n <fs-dialog *ngIf="message">\n <div mat-dialog-title>Edit Message</div>\n <mat-dialog-content>\n\n <mat-tab-group (selectedTabChange)="tabChange($event)">\n <mat-tab label="General">\n <ng-template matTabContent>\n <div fxLayout="column">\n <mat-form-field>\n <input\n matInput\n placeholder="Name"\n [(ngModel)]="message.name"\n name="Name"\n required>\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n placeholder="Description"\n [(ngModel)]="message.description"\n name="description">\n </mat-form-field>\n\n <div\n fxLayout="row"\n fxLayoutGap="10px"\n fxLayout.xs="column"\n fxLayout.sm="column">\n <mat-form-field fxFlex>\n <input\n matInput\n placeholder="From Email"\n [(ngModel)]="message.emailMessage.fromEmail"\n name="from_email">\n </mat-form-field>\n <mat-form-field fxFlex>\n <input\n matInput\n placeholder="From Name"\n [(ngModel)]="message.emailMessage.fromName"\n name="from_name">\n </mat-form-field>\n <mat-form-field fxFlex>\n <input\n matInput\n placeholder="Reply To"\n [(ngModel)]="message.emailMessage.replyTo"\n name="reply_to">\n </mat-form-field>\n </div>\n\n <div\n fxLayout="row"\n fxLayoutGap="10px"\n fxLayout.xs="column"\n fxLayout.sm="column">\n <mat-form-field fxFlex>\n <input\n matInput\n placeholder="To"\n [(ngModel)]="message.emailMessage.toRecipients"\n name="to">\n </mat-form-field>\n <mat-form-field fxFlex>\n <input\n matInput\n placeholder="CC"\n [(ngModel)]="message.emailMessage.ccRecipients"\n name="cc">\n </mat-form-field>\n <mat-form-field fxFlex>\n <input\n matInput\n placeholder="BCC"\n [(ngModel)]="message.emailMessage.bccRecipients"\n name="bcc">\n </mat-form-field>\n </div>\n </div>\n </ng-template>\n </mat-tab>\n <mat-tab label="Email Message" *ngIf="message.emailMessage">\n <ng-template matTabContent>\n <div fxLayout="column">\n <div fxLayout="row" fxLayoutGap="10px">\n <mat-form-field>\n <mat-select\n required\n placeholder="Customize Message"\n [(ngModel)]="message.emailMessage.customize"\n name="customizeEmail">\n <mat-option [value]="true">Yes</mat-option>\n <mat-option [value]="false">No</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field>\n <mat-select\n required\n placeholder="Format"\n [(ngModel)]="message.emailMessage.format"\n name="format">\n <mat-option *ngFor="let item of emailMessageFormats" [value]="item.value">\n {{item.name}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field>\n <mat-select\n placeholder="Template"\n [(ngModel)]="message.emailMessage.messageTemplateId"\n name="template">\n <mat-option [value]="null">None</mat-option>\n <mat-option *ngFor="let item of messageTemplates" [value]="item.id">\n {{item.name}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <ng-container *ngIf="message.emailMessage.customize">\n <mat-form-field fxFlex>\n <input\n matInput\n placeholder="Subject"\n [(ngModel)]="message.emailMessage.subject"\n name="name"\n required>\n </mat-form-field>\n\n <div [@.disabled]="true">\n <mat-tab-group [dynamicHeight]="false">\n <mat-tab label="Content">\n <ng-template matTabContent>\n <fs-text-editor\n *ngIf="message.emailMessage.format===emailMessageFormat.HTML"\n [(ngModel)]="message.emailMessage.body"\n name="body"\n [config]="{ language: \'html \'}">\n </fs-text-editor>\n\n <fs-editor-rich-text\n *ngIf="message.emailMessage.format===emailMessageFormat.RichText"\n [(ngModel)]="message.emailMessage.body"\n name="body">\n </fs-editor-rich-text>\n\n <fs-text-editor\n *ngIf="message.emailMessage.format===emailMessageFormat.Text"\n [(ngModel)]="message.emailMessage.body"\n name="emailMessageBody"\n [config]="{ language: \'text\' }">\n </fs-text-editor>\n </ng-template>\n </mat-tab>\n <mat-tab\n *ngIf="message.emailMessage.format===emailMessageFormat.HTML"\n label="Styles">\n <ng-template matTabContent>\n <fs-text-editor\n [(ngModel)]="message.emailMessage.styles"\n name="styles"\n [config]="{ language: \'scss\' }">\n </fs-text-editor>\n </ng-template>\n </mat-tab>\n </mat-tab-group>\n </div>\n\n </ng-container>\n\n <ng-container *ngIf="!message.emailMessage.customize">\n <fs-label-field>\n <fs-label>Subject</fs-label>\n {{message.defaultEmailSubject}}\n </fs-label-field>\n <div>\n <fs-label-field>\n <fs-label>Content</fs-label>\n <div\n class="email-body-html-default"\n *ngIf="message.emailMessage.format===emailMessageFormat.HTML">\n {{message.defaultEmailBody}}\n </div>\n <div\n *ngIf="message.emailMessage.format===emailMessageFormat.RichText"\n fsEditorRenderer\n name="defaultEmailBody"\n [ngModel]="message.defaultEmailBody">\n </div>\n <div\n class="email-body-text-default"\n *ngIf="message.emailMessage.format===emailMessageFormat.Text">\n {{message.defaultEmailBody}}\n </div>\n </fs-label-field>\n </div>\n </ng-container>\n </div>\n </ng-template>\n </mat-tab>\n\n <mat-tab label="SMS Message" *ngIf="message.smsMessage">\n <ng-template matTabContent>\n <mat-form-field>\n <mat-select\n required\n placeholder="Customize Message"\n [(ngModel)]="message.smsMessage.customize"\n name="customizeSms">\n <mat-option [value]="true">Yes</mat-option>\n <mat-option [value]="false">No</mat-option>\n </mat-select>\n </mat-form-field>\n <div\n *ngIf="message.smsMessage.customize"\n [@.disabled]="true">\n <mat-tab-group [dynamicHeight]="false">\n <mat-tab label="Content">\n <ng-template matTabContent>\n <fs-text-editor\n [(ngModel)]="message.smsMessage.message"\n name="smsMessageMessage"\n [config]="{ language: \'text \'}">\n </fs-text-editor>\n </ng-template>\n </mat-tab>\n </mat-tab-group>\n </div>\n <fs-label-field *ngIf="!message.smsMessage.customize">\n <fs-label>Message</fs-label>\n {{message.defaultSmsMessage}}\n </fs-label-field>\n </ng-template>\n </mat-tab>\n\n <mat-tab label="Variables" *ngIf="message.variables">\n <ng-template matTabContent>\n <div *ngFor="let variable of message.variables" class="variable">\n {{variable.name}}\n </div>\n </ng-template>\n </mat-tab>\n\n <mat-tab label="Defaults">\n <ng-template matTabContent>\n <ng-container *ngIf="message.emailMessage">\n <h2 *ngIf="message.emailMessage && message.smsMessage">Email</h2>\n <fs-label-field>\n <fs-label>Subject</fs-label>\n <div class="content">{{message.defaultEmailSubject}}</div>\n </fs-label-field>\n <fs-label-field>\n <fs-label>Content</fs-label>\n <div class="content">{{message.defaultEmailBody}}</div>\n </fs-label-field>\n </ng-container>\n <ng-container *ngIf="message.smsMessage">\n <h2 *ngIf="message.emailMessage && message.smsMessage">SMS</h2>\n <fs-label-field>\n <fs-label>Content</fs-label>\n <div class="content">{{message.defaultSmsMessage}}</div>\n </fs-label-field>\n </ng-container>\n </ng-template>\n </mat-tab>\n </mat-tab-group>\n\n </mat-dialog-content>\n <mat-dialog-actions>\n <button mat-button color="primary">Save</button>\n <button\n *ngIf="tab===\'email\' && message.emailMessage.format===emailMessageFormat.HTML"\n mat-button\n type="button"\n (click)="openPreview()"\n type="button">\n Preview\n </button>\n <button\n *ngIf="tab===\'email\'"\n mat-button\n type="button"\n (click)="sendTest(\'email\')"\n type="button">\n Send Test Email\n </button>\n <button\n *ngIf="tab===\'sms\'"\n mat-button\n type="button"\n (click)="sendTest(\'sms\')"\n type="button">\n Send Test SMS\n </button>\n <button mat-button [mat-dialog-close]="null" type="button">Cancel</button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n',changeDetection:t.ChangeDetectionStrategy.OnPush,styles:["fs-label-field .content{white-space:pre-wrap}:host ::ng-deep .mat-tab-body,:host ::ng-deep .mat-tab-body-content{overflow:visible}:host ::ng-deep .sms-message{width:100%}:host ::ng-deep .email-body-html-default,:host ::ng-deep .email-body-text-default{white-space:pre-line}.email-body-text{width:100%}.variable{margin-bottom:4px}"]}),A(0,t.Inject(N)),A(1,t.Inject(l.MAT_DIALOG_DATA)),E("design:paramtypes",[Object,Object,I.FsPrompt,T.FsMessage,l.MatDialog,t.ChangeDetectorRef])],e)}();function $(e){var t={};return e.forEach((function(e){t[e.value]=e.name})),t}var H,B=function(){function e(e,t){this._config=e,this._dialog=t,this.list=null,this.config=null,this.emailMessageFormats={},this._destroy$=new F.Subject}return e.prototype.ngOnInit=function(){var e=this;this.emailMessageFormats=$(q),this.config={filters:[{name:"keyword",type:_.ItemType.Keyword,label:"Search"}],fetch:function(t){return e._config.loadMessages(t).pipe(w.map((function(e){return{data:e.data,paging:e.paging}})))}}},e.prototype.open=function(e){var t=this;this._dialog.open(z,{data:{message:e},width:"85%"}).afterClosed().pipe(w.takeUntil(this._destroy$)).subscribe((function(){t.list.reload()}))},e.prototype.ngOnDestroy=function(){this._destroy$.next(),this._destroy$.complete()},e.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[N]}]},{type:l.MatDialog}]},R([t.ViewChild(b.FsListComponent,{static:!0}),E("design:type",b.FsListComponent)],e.prototype,"list",void 0),e=R([t.Component({selector:"fs-app-messages",template:'<fs-list [config]="config">\n <fs-list-column title="Name" name="name" sortable="true">\n <ng-template fs-list-cell let-row="row">\n <a (click)="open(row)">{{row.name}}</a>\n </ng-template>\n </fs-list-column>\n <fs-list-column title="Email Format">\n <ng-template fs-list-cell let-row="row">\n {{emailMessageFormats[row.emailMessage.format]}}\n </ng-template>\n </fs-list-column>\n</fs-list>\n'}),A(0,t.Inject(N)),E("design:paramtypes",[Object,l.MatDialog])],e)}(),G=function(){function e(){}return e=R([t.NgModule({imports:[l.MatDialogModule,i.MatButtonModule,d.FsDialogModule,x.FsIFrameModule],declarations:[P],exports:[P]})],e)}(),U=function(){function e(){}return e=R([t.NgModule({imports:[a.RouterModule,n.CommonModule,h.FormsModule,l.MatDialogModule,i.MatButtonModule,g.MatTabsModule,r.MatFormFieldModule,m.MatInputModule,o.MatOptionModule,u.MatSelectModule,f.MatTooltipModule,c.MatCheckboxModule,d.FsDialogModule,b.FsListModule,p.FsLabelModule,s.FlexLayoutModule,M.FsSkeletonModule,y.FsFormModule,v.FsTextEditorModule,Q.FsEditorRichTextModule,G],declarations:[B,z],exports:[B,z]})],e)}();!function(e){e.Sent="S",e.PartiallySent="P",e.Sending="E",e.Queued="Q",e.Canceled="C",e.InvalidRecipients="I",e.Failed="F"}(H||(H={}));var V,W,K,Y=[{name:"Sent",value:H.Sent},{name:"Partially Sent",value:H.PartiallySent},{name:"Sending",value:H.Sending},{name:"Queued",value:H.Queued},{name:"Canceled",value:H.Canceled},{name:"Invalid Recipients",value:H.InvalidRecipients},{name:"Failed",value:H.Failed}];!function(e){e.Text="T",e.HTML="H",e.RichText="R"}(V||(V={})),function(e){e.Sms="S",e.Email="E"}(W||(W={})),function(e){e.Click="click",e.Open="open"}(K||(K={}));var J=[{name:"Open",value:K.Open},{name:"Click",value:K.Click}],X=function(){function e(e,t,n,a,s){this._config=e,this._message=t,this._prompt=n,this._dialog=a,this._data=s,this.messageQueueRecipients={},this.emailMessageQueueFormat=V,this.MessageQueueEventTypes=$(J),this.MessageQueueEventType=K,this._destroy$=new F.Subject}return e.prototype.ngOnInit=function(){var e=this;this.messageQueueStates=$(Y),this.resendMessageQueue=this._config.resendMessageQueue,this.forwardMessageQueue=this._config.forwardMessageQueue,this._config.loadMessageQueue(this._data.messageQueueId).subscribe((function(t){if(e.messageQueue=t,e.messageQueue.emailMessageQueue){var n=e.messageQueue.emailMessageQueue.body;if(e.messageQueue.emailMessageQueue.format===V.HTML)try{var a=(new DOMParser).parseFromString(n,"text/html");a.querySelectorAll("a").forEach((function(e){e.setAttribute("target","_blank")})),n=a.documentElement.innerHTML}catch(e){}else n=e.anchorMe(n);e.messageQueue.emailMessageQueue.body=n}e.messageQueue.smsMessageQueue&&(e.messageQueue.smsMessageQueue.body=e.anchorMe(e.messageQueue.smsMessageQueue.body)),e.messageQueueRecipients=e.messageQueue.messageQueueRecipients.reduce((function(e,t){return e[t.recipient]=t.state,e}),{}),e._setLogsConfig(t),e._setAttachmentsConfig(t),e._setEventsConfig(t)}))},e.prototype.anchorMe=function(e){return j(e,{options:{attributes:[{name:"target",value:"_blank"}]}})},e.prototype.openMessage=function(e){this._dialog.open(z,{data:{message:e},width:"85%"})},e.prototype.resend=function(){var e=this;this._prompt.confirm({title:"Confirm",template:"Are you sure you would like to resend this message?"}).subscribe((function(){e.resendMessageQueue(e.messageQueue).subscribe((function(t){Object.assign(e.messageQueue,t),e._message.success("Successfully resent"),e.logList&&e.logList.reload()}))}))},e.prototype.forward=function(){var e=this,t=this.messageQueue.type===W.Email?"an email":"a phone number";this._prompt.input({label:"Please enter "+t+" to forward to",title:"Forward Message",commitLabel:"Forward",required:!0}).subscribe((function(t){t&&e.forwardMessageQueue(e.messageQueue,t).subscribe((function(t){e.messageQueue=k(k({},e.messageQueue),{messageQueue:t}),e._message.success("Successfully forwarded"),e.logList&&e.logList.reload()}))}))},e.prototype.ngOnDestroy=function(){this._destroy$.next(),this._destroy$.complete()},e.prototype._setLogsConfig=function(e){var t=this;this.logConfig={loadMore:!0,queryParam:!1,fetch:function(n){return t._config.loadLogs(e,n)}}},e.prototype._setEventsConfig=function(e){var t=this;this.eventConfig={loadMore:!0,queryParam:!1,fetch:function(n){return t._config.loadMessageQueueEvents(e,n)}}},e.prototype._setAttachmentsConfig=function(e){var t=this;this.attachmentConfig={queryParam:!1,fetch:function(n){return t._config.loadMessageQueueAttachments(e,n).pipe(w.map((function(e){return{data:e.data.map((function(e){return e.prettyFilesize=t._prettyFilesize(e.filesize),e})),paging:e.paging}})))}},this._config.downloadMessageQueueAttachment&&(this.attachmentConfig.rowActions=[{click:function(e){t._config.downloadMessageQueueAttachment(e,t.messageQueue)},label:"Download"}])},e.prototype._prettyFilesize=function(e){if(0===e)return"0.00 B";var t=Math.floor(Math.log(e)/Math.log(1024));return(e/Math.pow(1024,t)).toFixed(2)+" "+" KMGTP".charAt(t)+"B"},e.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[N]}]},{type:T.FsMessage},{type:I.FsPrompt},{type:l.MatDialog},{type:void 0,decorators:[{type:t.Inject,args:[l.MAT_DIALOG_DATA]}]}]},R([t.ViewChild("logList"),E("design:type",b.FsListComponent)],e.prototype,"logList",void 0),e=R([t.Component({template:'<fs-dialog *fsSkeleton="messageQueue">\n <div mat-dialog-title>Message Queue</div>\n <mat-dialog-content>\n <mat-tab-group>\n <mat-tab label="Overview">\n <ng-template matTabContent>\n <div fxLayout="row wrap" fxLayoutGap="25px">\n <ng-container *ngIf="messageQueue.emailMessageQueue">\n <fs-label-field>\n <fs-label>\n To Recipients\n </fs-label>\n <app-recipient \n *ngFor="let recipient of messageQueue.emailMessageQueue.toRecipients"\n [state]="messageQueueRecipients[recipient]"\n [name]="recipient">\n </app-recipient>\n </fs-label-field>\n\n <fs-label-field *ngIf="messageQueue.emailMessageQueue.ccRecipients.length">\n <fs-label>\n CC\n </fs-label>\n <app-recipient \n *ngFor="let recipient of messageQueue.emailMessageQueue.ccRecipients"\n [state]="messageQueueRecipients[recipient]"\n [name]="recipient">\n </app-recipient> \n </fs-label-field>\n\n <fs-label-field *ngIf="messageQueue.emailMessageQueue.bccRecipients.length">\n <fs-label>\n BCC\n </fs-label>\n <app-recipient \n *ngFor="let recipient of messageQueue.emailMessageQueue.bccRecipients"\n [state]="messageQueueRecipients[recipient]"\n [name]="recipient">\n </app-recipient> \n </fs-label-field>\n\n <fs-label-field *ngIf="messageQueue.emailMessageQueue.fromName || messageQueue.emailMessageQueue.fromEmail">\n <fs-label>\n From\n </fs-label>\n <ng-container *ngIf="messageQueue.emailMessageQueue.fromName === messageQueue.emailMessageQueue.fromEmail; else fromEmailName">\n {{messageQueue.emailMessageQueue.fromName}}\n </ng-container>\n\n <ng-template #fromEmailName>\n {{messageQueue.emailMessageQueue.fromName}}\n <ng-container *ngIf="messageQueue.emailMessageQueue.fromEmail">\n ({{messageQueue.emailMessageQueue.fromEmail}})\n </ng-container>\n </ng-template>\n </fs-label-field>\n\n <fs-label-field *ngIf="messageQueue.emailMessageQueue.replyEmail && messageQueue.emailMessageQueue.replyEmail.length">\n <fs-label>\n Reply To\n </fs-label>\n {{messageQueue.emailMessageQueue.replyEmail.join(\', \')}}\n </fs-label-field>\n </ng-container>\n\n <ng-container *ngIf="messageQueue.smsMessageQueue">\n <fs-label-field>\n <fs-label>\n To Number\n </fs-label>\n <app-recipient \n [state]="messageQueue.state"\n [name]="messageQueue.smsMessageQueue.toNumber">\n </app-recipient> \n </fs-label-field>\n\n <fs-label-field *ngIf="messageQueue.smsMessageQueue.fromNumber">\n <fs-label>\n From Number\n </fs-label>\n {{messageQueue.smsMessageQueue.fromNumber}}\n </fs-label-field>\n </ng-container>\n \n <fs-label-field>\n <fs-label>\n Date\n </fs-label>\n {{messageQueue.scheduledDate | fsDateFormat: \'full-date-time\'}}\n </fs-label-field>\n\n <fs-label-field>\n <fs-label>\n Status\n </fs-label>\n {{messageQueueStates[messageQueue.state]}}\n </fs-label-field>\n\n <fs-label-field *ngIf="messageQueue.message">\n <fs-label>\n Message Type\n </fs-label>\n <a\n (click)="openMessage(messageQueue.message)"\n *ngIf="loadMessage; else elseMessage">\n {{messageQueue.message.name}}\n </a>\n <ng-template #elseMessage>\n {{messageQueue.message.name}}\n </ng-template>\n </fs-label-field>\n </div>\n\n <ng-container *ngIf="messageQueue.emailMessageQueue">\n <fs-label-field class="subject">\n <fs-label>\n Subject\n </fs-label>\n {{messageQueue.emailMessageQueue.subject}}\n </fs-label-field>\n\n <fs-label-field class="body">\n <fs-label>\n Body\n </fs-label>\n <div\n *ngIf="messageQueue.emailMessageQueue.format===emailMessageQueueFormat.Text"\n class="format-text"\n [innerHTML]="messageQueue.emailMessageQueue.body">\n </div>\n <fs-iframe\n *ngIf="messageQueue.emailMessageQueue.format===emailMessageQueueFormat.HTML || messageQueue.emailMessageQueue.format===emailMessageQueueFormat.RichText"\n [html]="messageQueue.emailMessageQueue.body">\n </fs-iframe>\n </fs-label-field>\n </ng-container>\n\n <ng-container *ngIf="messageQueue.smsMessageQueue">\n <fs-label-field>\n <fs-label>\n Message\n </fs-label>\n <div\n class="format-text"\n [innerHTML]="messageQueue.smsMessageQueue.body">\n </div>\n </fs-label-field>\n </ng-container>\n\n </ng-template>\n </mat-tab>\n <mat-tab label="Logs">\n <ng-template matTabContent>\n <fs-list [config]="logConfig" #logList>\n <fs-list-column title="Message">\n <ng-template fs-list-cell let-row="row">\n {{row.message}}\n </ng-template>\n </fs-list-column>\n <fs-list-column title="Date">\n <ng-template fs-list-cell let-row="row">\n <fs-date-ago [date]="row.createdDate"></fs-date-ago>\n </ng-template>\n </fs-list-column>\n </fs-list>\n </ng-template>\n </mat-tab>\n <mat-tab label="Attachments">\n <ng-template matTabContent>\n <fs-list [config]="attachmentConfig">\n <fs-list-column title="File Name">\n <ng-template fs-list-cell let-row="row">\n {{row.filename}}\n </ng-template>\n </fs-list-column>\n <fs-list-column title="File Size">\n <ng-template fs-list-cell let-row="row">\n {{row.prettyFilesize}}\n </ng-template>\n </fs-list-column>\n </fs-list>\n </ng-template>\n </mat-tab>\n <mat-tab label="Events">\n <ng-template matTabContent>\n <fs-list [config]="eventConfig">\n <fs-list-column title="Event">\n <ng-template fs-list-cell let-row="row">\n {{MessageQueueEventTypes[row.type]}}\n <div class="small" *ngIf="row.type === MessageQueueEventType.Click">\n {{row.meta?.url}}\n </div>\n </ng-template>\n </fs-list-column>\n <fs-list-column title="Date">\n <ng-template fs-list-cell let-row="row">\n {{row.createDate | fsDateFormat: \'date-time-yearless\'}}\n </ng-template>\n </fs-list-column>\n </fs-list>\n </ng-template>\n </mat-tab>\n </mat-tab-group>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n [mat-dialog-close]="null"\n color="primary">\n Done\n </button>\n <button\n mat-button\n *ngIf="resendMessageQueue"\n type="button"\n (click)="resend()"\n type="button">\n Resend\n </button>\n <button\n mat-button\n *ngIf="forwardMessageQueue"\n type="button"\n (click)="forward()"\n type="button">\n Forward\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n',styles:[".body,.subject{display:block;margin-top:15px}.body .format-text{white-space:pre-wrap}.body .body-frame{border:0}.body ::ng-deep .field-label{margin-bottom:10px}app-recipient{display:block}[hidden]{display:none!important}"]}),A(0,t.Inject(N)),A(4,t.Inject(l.MAT_DIALOG_DATA)),E("design:paramtypes",[Object,T.FsMessage,I.FsPrompt,l.MatDialog,Object])],e)}(),Z=function(){function e(e){this._dialog=e,this._destroy$=new F.Subject}return e.prototype.openMessageQueue=function(e,t){return void 0===t&&(t={}),this._dialog.open(X,k(k({},t),{data:{messageQueueId:e},width:t.width||"85%"})).afterClosed().pipe(w.takeUntil(this._destroy$))},e.prototype.ngOnDestroy=function(){this._destroy$.next(),this._destroy$.complete()},e.ctorParameters=function(){return[{type:l.MatDialog}]},e=R([t.Injectable(),E("design:paramtypes",[l.MatDialog])],e)}(),ee=function(){function e(e,t,n){this._config=e,this._dialog=t,this._messageQueueService=n,this.list=null,this.query={},this.config=null,this.messageQueueStates={},this.MessageQueueState=H,this._destroy$=new F.Subject}return e.prototype.ngOnInit=function(){var e=this;this.messageQueueStates=$(Y),this.config={filters:[{name:"keyword",type:_.ItemType.Keyword,label:"Search"},{name:"state",type:_.ItemType.Select,label:"Status",values:function(){return Y}},{name:"date",type:_.ItemType.DateRange,label:["From Date","To Date"]}],sort:{value:"created_date",direction:"desc"},fetch:function(t){return t=k(k(k({},t),e.query),{messageQueueAttachmentCounts:!0,emailMessageQueues:!0,emailMessageQueueBodies:!1,smsMessageQueues:!0}),e._config.loadMessageQueues(t).pipe(w.map((function(e){return{data:e.data.map((function(e){return k(k({},e),{messageQueueRecipients:e.messageQueueRecipients.reduce((function(e,t){return e[t.recipient]=t.state,e}),{})})})),paging:e.paging}})))}},this._config.cancelMessageQueues&&(this.config.selection={selectAll:!1,actions:[],actionSelected:function(t){return F.of(!0).pipe(w.switchMap((function(){return"cancel"===t.action.name?e._config.cancelMessageQueues(t):F.of(!0)})),w.tap((function(){e.list.reload()})))}}),this._config.cancelMessageQueues&&this.config.selection.actions.push({type:D.SelectionActionType.Action,name:"cancel",label:"Cancel Queued"}),this.config.filters.push({name:"message_id",type:_.ItemType.Select,label:"Message Type",values:function(t){return t=k(k({},t),{limit:50}),e._config.loadMessages(t).pipe(w.map((function(e){return function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(O(arguments[t]));return e}([{value:null,name:"All"}],e.data.map((function(e){return{name:e.name,value:e.id}})))})))}})},e.prototype.open=function(e){var t=this;this._messageQueueService.openMessageQueue(e.id).pipe(w.takeUntil(this._destroy$)).subscribe((function(){t.list.reload()}))},e.prototype.ngOnDestroy=function(){this._destroy$.next(),this._destroy$.complete()},e.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[N]}]},{type:l.MatDialog},{type:Z}]},R([t.ViewChild(b.FsListComponent,{static:!0}),E("design:type",b.FsListComponent)],e.prototype,"list",void 0),R([t.Input(),E("design:type",Object)],e.prototype,"query",void 0),e=R([t.Component({selector:"fs-app-message-queues",template:'<fs-list [config]="config" #list>\n <fs-list-column title="Message" name="subject" sortable="true">\n <ng-template fs-list-cell let-row="row">\n <ng-container *ngIf="row.emailMessageQueue">\n <div fxLayout="row" fxLayoutAlign="start center">\n <a (click)="open(row)">{{row.emailMessageQueue.subject|truncate:100}}</a>\n <mat-icon *ngIf="row.messageQueueAttachmentCount" [matTooltip]="row.messageQueueAttachmentCount + \' Attachment(s)\'">attach_file</mat-icon>\n </div>\n </ng-container>\n <ng-container *ngIf="row.smsMessageQueue">\n <a (click)="open(row)">{{row.smsMessageQueue.body|truncate:100}}</a>\n </ng-container>\n </ng-template>\n </fs-list-column>\n <fs-list-column title="Recipients" class="col-recipients">\n <ng-template fs-list-cell let-row="row">\n <ng-container *ngIf="row.emailMessageQueue">\n <ng-container *ngIf="row.emailMessageQueue.toRecipients.length; else unspecified">\n <div class="small" *ngFor="let recipient of row.emailMessageQueue.toRecipients">\n <app-recipient \n [state]="row.messageQueueRecipients[recipient] || row.state"\n [name]="recipient">\n </app-recipient>\n </div>\n </ng-container>\n <div class="small" *ngFor="let recipient of row.emailMessageQueue.ccRecipients">\n <app-recipient \n [state]="row.messageQueueRecipients[recipient] || row.state"\n [name]="recipient">\n </app-recipient>\n </div>\n <div class="small" *ngFor="let recipient of row.emailMessageQueue.bccRecipients">\n <app-recipient \n [state]="row.messageQueueRecipients[recipient] || row.state"\n [name]="recipient">\n </app-recipient>\n </div>\n </ng-container>\n <ng-container *ngIf="row.smsMessageQueue">\n <ng-container *ngIf="row.smsMessageQueue.toNumber; else unspecified">\n <app-recipient \n class="small"\n [state]="row.state"\n [name]="row.smsMessageQueue.toNumber">\n </app-recipient>\n </ng-container>\n </ng-container>\n </ng-template>\n </fs-list-column> \n <fs-list-column title="Status" class="col-state">\n <ng-template fs-list-cell let-row="row">\n <span [class]="\'state-\' + row.state">{{messageQueueStates[row.state]}}</span>\n </ng-template>\n </fs-list-column> \n <fs-list-column title="Date" name="created_date" sortable="true">\n <ng-template fs-list-cell let-row="row">\n {{ row.createdDate | fsDateFormat: \'date-time-yeardiff\' }}\n </ng-template>\n </fs-list-column>\n</fs-list>\n\n<ng-template #unspecified>\n <app-recipient \n class="small"\n [state]="MessageQueueState.Failed"\n name="Unspecified">\n </app-recipient>\n</ng-template>',styles:[':host ::ng-deep .col-recipients small+small:before{content:", "}:host ::ng-deep .col-state .state-F,:host ::ng-deep .col-state .state-P{color:#d8524e}']}),A(0,t.Inject(N)),E("design:paramtypes",[Object,l.MatDialog,Z])],e)}(),te=function(){function e(){}return e.prototype.ngOnInit=function(){this.icon={S:{name:"check_circle",tooltip:"Sent"},E:{name:"offline_bolt",tooltip:"Sending"},F:{name:"info",tooltip:"Failed"}}[this.state]},R([t.Input(),E("design:type",Object)],e.prototype,"name",void 0),R([t.Input(),E("design:type",Object)],e.prototype,"state",void 0),e=R([t.Component({selector:"app-recipient",template:'<span class="recipient">\n <span class="name">{{name}}</span>\n <mat-icon *ngIf="icon" [class]="\'state-\' + state" [matTooltip]="icon.tooltip">{{icon.name}}</mat-icon>\n</span>',styles:["mat-icon{font-size:14px;width:14px;height:14px;line-height:normal;margin-left:2px}mat-icon.state-S{color:#5fa099}mat-icon.state-E{color:#fbbc04}mat-icon.state-F{color:#d8524e}.recipient{display:inline-flex;align-items:center}"]})],e)}(),ne=function(){function e(){}return e.prototype.transform=function(e){return j(e,{attributes:[{name:"target",value:"_blank"}]})},e=R([t.Pipe({name:"linkify"})],e)}(),ae=function(){function e(){}return e.prototype.transform=function(e,t,n,a){return void 0===t&&(t=25),void 0===n&&(n=!1),void 0===a&&(a="..."),e.length<t?""+e.substr(0,t):(n&&(t=e.substr(0,t).lastIndexOf(" ")),""+e.substr(0,t)+a)},e=R([t.Pipe({name:"truncate"})],e)}(),se=function(){function e(){}return e=R([t.NgModule({imports:[a.RouterModule,h.FormsModule,n.CommonModule,s.FlexLayoutModule,f.MatTooltipModule,l.MatDialogModule,i.MatButtonModule,C.MatIconModule,g.MatTabsModule,b.FsListModule,d.FsDialogModule,p.FsLabelModule,S.FsDateModule,M.FsSkeletonModule,U,y.FsFormModule,I.FsPromptInputModule,x.FsIFrameModule],declarations:[ee,X,ne,ae,te],exports:[ee,X],providers:[Z]})],e)}(),ie=function(){function e(e,t,n,a,s){var i=this;this._data=e,this._config=t,this._dialogRef=n,this._message=a,this._dialog=s,this.htmlEditorconfig={language:"html",insertSpaces:!0,tabSize:2},this.cssEditorconfig={language:"scss",insertSpaces:!0,tabSize:2},this.save=function(e){return i._config.saveMessageTemplate(i.messageTemplate).pipe(w.tap((function(t){i._message.success("Saved Changes"),"save-close"===e.submitter&&i._dialogRef.close(t)})))}}return e.prototype.ngOnInit=function(){var e=this;this._data.messageTemplate.id?this._config.loadMessageTemplate(this._data.messageTemplate).subscribe((function(t){e.messageTemplate=t})):this.messageTemplate={}},e.prototype.openPreview=function(){this._dialog.open(P,{data:{styles:this.messageTemplate.styles,html:this.messageTemplate.content},width:"95%"})},e.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[l.MAT_DIALOG_DATA]}]},{type:void 0,decorators:[{type:t.Inject,args:[N]}]},{type:l.MatDialogRef},{type:T.FsMessage},{type:l.MatDialog}]},e=R([t.Component({template:'<form\n fsForm\n [submit]="save"\n #form="ngForm"\n *fsSkeleton="messageTemplate"\n [dirtyConfirmTabs]="false">\n <fs-dialog *ngIf="messageTemplate">\n <div mat-dialog-title>Message Template</div>\n <mat-dialog-content>\n <mat-form-field class="name">\n <input\n matInput\n placeholder="Name"\n [(ngModel)]="messageTemplate.name"\n name="name"\n >\n </mat-form-field>\n <div [@.disabled]="true">\n <mat-tab-group\n mat-align-tabs="start"\n [dynamicHeight]="false">\n <mat-tab label="Content">\n <ng-template matTabContent>\n <div class="content">\n <fs-label-field>\n <fs-text-editor\n [(ngModel)]="messageTemplate.content"\n name="body"\n [config]="htmlEditorconfig">\n </fs-text-editor>\n <fs-label-message>\n &#123;$content&#125; will be replaced with the message content.\n </fs-label-message>\n </fs-label-field>\n </div>\n </ng-template>\n </mat-tab>\n <mat-tab label="Styles">\n <ng-template matTabContent>\n <div class="styles">\n <fs-text-editor\n [(ngModel)]="messageTemplate.styles"\n name="styles"\n [config]="cssEditorconfig">\n </fs-text-editor>\n </div>\n </ng-template>\n </mat-tab>\n </mat-tab-group>\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button mat-button color="primary" name="close">Save</button>\n <button mat-button name="save-close">Save & Close</button>\n <button mat-button (click)="openPreview()" type="button">Preview</button>\n <button mat-button [mat-dialog-close]="null" type="button">Cancel</button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n',styles:[".name{width:100%}:host ::ng-deep .mat-tab-body,:host ::ng-deep .mat-tab-body-content{overflow:visible}"]}),A(0,t.Inject(l.MAT_DIALOG_DATA)),A(1,t.Inject(N)),E("design:paramtypes",[Object,Object,l.MatDialogRef,T.FsMessage,l.MatDialog])],e)}(),oe=function(){function e(e,t){this._config=e,this._dialog=t,this.list=null,this.config=null,this.messageQueueStates=[],this._destroy$=new F.Subject}return e.prototype.ngOnInit=function(){var e=this;this.config={actions:[{label:"Create",click:function(){e.open({})}}],status:!1,fetch:function(t){return e._config.loadMessageTemplates(t)}},this._config.deleteMessageTemplate&&(this.config.rowActions=[{click:function(t){return e._config.deleteMessageTemplate(t)},remove:{title:"Confirm",template:"Are you sure you would like to delete this template?"},menu:!0,label:"Delete"}])},e.prototype.open=function(e){var t=this;this._dialog.open(ie,{data:{messageTemplate:e},width:"85%"}).afterClosed().pipe(w.takeUntil(this._destroy$)).subscribe((function(e){e&&(t.list.updateData(e,(function(t){return t.id===e.id}))||t.list.reload())}))},e.prototype.ngOnDestroy=function(){this._destroy$.next(),this._destroy$.complete()},e.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[N]}]},{type:l.MatDialog}]},R([t.ViewChild(b.FsListComponent,{static:!0}),E("design:type",b.FsListComponent)],e.prototype,"list",void 0),e=R([t.Component({selector:"fs-app-message-templates",template:'<fs-list [config]="config">\n <fs-list-column title="Name">\n <ng-template fs-list-cell let-row="row">\n <a (click)="open(row)">{{row.name}}</a>\n </ng-template>\n </fs-list-column>\n</fs-list>'}),A(0,t.Inject(N)),E("design:paramtypes",[Object,l.MatDialog])],e)}(),le=function(){function e(){}return e=R([t.NgModule({imports:[a.RouterModule,n.CommonModule,h.FormsModule,f.MatTooltipModule,l.MatDialogModule,i.MatButtonModule,g.MatTabsModule,r.MatFormFieldModule,r.MatFormFieldModule,m.MatInputModule,b.FsListModule,d.FsDialogModule,p.FsLabelModule,s.FlexLayoutModule,M.FsSkeletonModule,y.FsFormModule,v.FsTextEditorModule,G],declarations:[oe,ie],exports:[oe,ie]})],e)}(),re=function(){function e(e,t){this._config=e,this._message=t}return e.prototype.ngOnInit=function(){var e=this;this.listConfig={paging:!1,actions:[{click:function(){e._config.createWebhook().subscribe((function(){e._message.success("Created webhook"),e.list.reload()}))},label:"Create"}],rowActions:[{click:function(t){e._config.deleteWebhook(t).subscribe((function(){e._message.success("Deleted webhook"),e.list.reload()}))},label:"Delete"}],fetch:function(){return e._config.loadWebhooks().pipe(w.map((function(e){return{data:e}})))}}},e.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[N]}]},{type:T.FsMessage}]},R([t.ViewChild(b.FsListComponent),E("design:type",b.FsListComponent)],e.prototype,"list",void 0),e=R([t.Component({selector:"fs-app-message-webhooks",template:'<fs-list [config]="listConfig">\r\n <fs-list-column title="URL">\r\n <ng-template fs-list-cell let-row="row">\r\n {{row.url}}\r\n </ng-template>\r\n </fs-list-column>\r\n <fs-list-column title="Created">\r\n <ng-template fs-list-cell let-row="row">\r\n {{row.createDate | fsDate}}\r\n </ng-template>\r\n </fs-list-column>\r\n</fs-list>'}),A(0,t.Inject(N)),E("design:paramtypes",[Object,T.FsMessage])],e)}(),me=function(){function e(){}return e=R([t.NgModule({imports:[b.FsListModule,S.FsDateModule],declarations:[re],exports:[re]})],e)}(),ue=function(){function e(){}var n;return n=e,e.forRoot=function(){return{ngModule:n}},e=n=R([t.NgModule({})],e)}();e.FS_APP_MESSAGE_CONFIG=N,e.FsAppMessageModule=ue,e.FsAppMessageQueuesModule=se,e.FsAppMessageTemplatesModule=le,e.FsAppMessageWebhooksModule=me,e.FsAppMessagesModule=U,e.FsMessageQueueService=Z,e.MessageComponent=z,e.MessagesComponent=B,e.QueueComponent=X,e.QueuesComponent=ee,e.TemplatesComponent=oe,e.ɵa=G,e.ɵb=P,e.ɵc=N,e.ɵd=ne,e.ɵe=ae,e.ɵf=te,e.ɵg=ie,e.ɵh=re,Object.defineProperty(e,"__esModule",{value:!0})}));
2
- //# sourceMappingURL=firestitch-app-message.umd.min.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","ng://@firestitch/app-message/app/modules/messages/enums/email-message-format.enum.ts","ng://@firestitch/app-message/app/modules/messages/consts/email-message-formats.const.ts","ng://@firestitch/app-message/app/modules/message-preview/components/preview/preview.component.ts","ng://@firestitch/app-message/app/modules/app-message/injectors/app-message-config.injector.ts","ng://@firestitch/app-message/app/modules/messages/components/message/message.component.ts","ng://@firestitch/app-message/app/helpers/index-name-value.ts","ng://@firestitch/app-message/app/modules/message-queues/enums/message-queue-state.enum.ts","ng://@firestitch/app-message/app/modules/messages/components/messages/messages.component.ts","ng://@firestitch/app-message/app/modules/message-preview/message-preview.module.ts","ng://@firestitch/app-message/app/modules/messages/messages.module.ts","ng://@firestitch/app-message/app/modules/message-queues/consts/message-queue-states.const.ts","ng://@firestitch/app-message/app/modules/message-queues/enums/email-message-queue-format.enum.ts","ng://@firestitch/app-message/app/modules/message-queues/enums/message-queue-type.enum.ts","ng://@firestitch/app-message/app/modules/message-queues/enums/message-queue-event-type.enum.ts","ng://@firestitch/app-message/app/modules/message-queues/consts/message-queue-event-type.const.ts","ng://@firestitch/app-message/app/modules/message-queues/components/queue/queue.component.ts","ng://@firestitch/app-message/app/modules/message-queues/services/message-queue.service.ts","ng://@firestitch/app-message/app/modules/message-queues/components/queues/queues.component.ts","ng://@firestitch/app-message/app/modules/message-queues/components/recipient/recipient.component.ts","ng://@firestitch/app-message/app/modules/message-queues/pipes/linkify.pipe.ts","ng://@firestitch/app-message/app/modules/message-queues/pipes/truncate.pipe.ts","ng://@firestitch/app-message/app/modules/message-queues/message-queues.module.ts","ng://@firestitch/app-message/app/modules/message-templates/components/template/template.component.ts","ng://@firestitch/app-message/app/modules/message-templates/components/templates/templates.component.ts","ng://@firestitch/app-message/app/modules/message-templates/message-templates.module.ts","ng://@firestitch/app-message/app/modules/webhooks/components/webhooks/webhooks.component.ts","ng://@firestitch/app-message/app/modules/webhooks/webhooks.module.ts","ng://@firestitch/app-message/app/modules/app-message/app-message.module.ts"],"names":["EmailMessageFormat","__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__decorate","decorators","target","key","desc","d","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","__read","o","m","Symbol","iterator","e","ar","next","done","push","value","error","EmailMessageFormats","name","Text","HTML","RichText","PreviewComponent","_data","html","styles","ngOnInit","Inject","args","MAT_DIALOG_DATA","Component","template","FS_APP_MESSAGE_CONFIG","InjectionToken","MessageComponent","_config","_prompt","_message","_dialog","_cdRef","_this","messageTemplates","emailMessageFormats","emailMessageFormat","save","saveMessage","message","pipe","tap","success","loadMessage","subscribe","response","emailMessage","undefined","customize","smsMessage","markForCheck","loadMessageTemplates","data","tabChange","event","tab","textLabel","openPreview","body","messageTemplateId","messageTemplate","find","item","id","content","replace","concat","open","width","sendTest","type","of","switchMap","getTestEmail","default_","typeName","input","label","title","commitLabel","default","required","testMessage","FsPrompt","FsMessage","MatDialog","ChangeDetectorRef","changeDetection","ChangeDetectionStrategy","OnPush","indexNameValue","arry","obj","forEach","MessageQueueState","MessagesComponent","list","config","_destroy$","Subject","filters","ItemType","Keyword","fetch","query","loadMessages","map","paging","afterClosed","takeUntil","reload","ngOnDestroy","complete","ViewChild","FsListComponent","static","selector","FsAppMessagePreviewModule","NgModule","imports","MatDialogModule","MatButtonModule","FsDialogModule","FsIFrameModule","declarations","exports","FsAppMessagesModule","RouterModule","CommonModule","FormsModule","MatTabsModule","MatFormFieldModule","MatInputModule","MatOptionModule","MatSelectModule","MatTooltipModule","MatCheckboxModule","FsListModule","FsLabelModule","FlexLayoutModule","FsSkeletonModule","FsFormModule","FsTextEditorModule","FsEditorRichTextModule","EmailMessageQueueFormat","MessageQueueType","MessageQueueEventType","MessageQueueStates","Sent","PartiallySent","Sending","Queued","Canceled","InvalidRecipients","Failed","MessageQueueEventTypes","Open","Click","QueueComponent","messageQueueRecipients","emailMessageQueueFormat","messageQueueStates","resendMessageQueue","forwardMessageQueue","loadMessageQueue","messageQueueId","messageQueue","emailMessageQueue","format","doc","DOMParser","parseFromString","querySelectorAll","el","setAttribute","documentElement","innerHTML","anchorMe","smsMessageQueue","reduce","accum","messageQueueRecipient","recipient","state","_setLogsConfig","_setAttachmentsConfig","_setEventsConfig","anchorme","options","attributes","openMessage","resend","confirm","logList","forward","Email","logConfig","loadMore","queryParam","loadLogs","eventConfig","loadMessageQueueEvents","attachmentConfig","loadMessageQueueAttachments","prettyFilesize","_prettyFilesize","filesize","downloadMessageQueueAttachment","rowActions","click","messageAttachment","bytes","Math","floor","log","pow","toFixed","charAt","FsMessageQueueService","openMessageQueue","Injectable","QueuesComponent","_messageQueueService","Select","values","DateRange","sort","direction","messageQueueAttachmentCounts","emailMessageQueues","emailMessageQueueBodies","smsMessageQueues","loadMessageQueues","cancelMessageQueues","selection","selectAll","actions","actionSelected","action","SelectionActionType","Action","limit","__spread","Input","RecipientComponent","icon","S","tooltip","E","F","LinkifyPipe","transform","Pipe","TruncatePipe","completeWords","ellipsis","substr","lastIndexOf","FsAppMessageQueuesModule","MatIconModule","FsDateModule","FsPromptInputModule","providers","TemplateComponent","_dialogRef","htmlEditorconfig","language","insertSpaces","tabSize","cssEditorconfig","saveMessageTemplate","submitter","close","loadMessageTemplate","MatDialogRef","TemplatesComponent","status","deleteMessageTemplate","remove","menu","updateData","row","FsAppMessageTemplatesModule","WebhooksComponent","listConfig","createWebhook","webhook","deleteWebhook","loadWebhooks","webhooks","FsAppMessageWebhooksModule","FsAppMessageModule","forRoot","ngModule","FsAppMessageModule_1"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export enum EmailMessageFormat {\n Text = 'T',\n HTML = 'H',\n RichText = 'R'\n}\n","\nimport { EmailMessageFormat } from '../enums';\n\nexport const EmailMessageFormats = [\n { name: 'Text', value: EmailMessageFormat.Text },\n { name: 'HTML', value: EmailMessageFormat.HTML },\n { name: 'Rich Text', value: EmailMessageFormat.RichText }\n];\n","import { Component, OnInit, Inject } from '@angular/core';\n\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n\n@Component({\n templateUrl: './preview.component.html',\n styleUrls: ['./preview.component.scss']\n})\nexport class PreviewComponent implements OnInit {\n\n public html;\n public styles;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data,\n ) {\n this.html = _data.html;\n this.styles = _data.styles;\n }\n\n public ngOnInit() {\n\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FS_APP_MESSAGE_ROOT_CONFIG = new InjectionToken<any[]>('fs-app-message-root-config');\nexport const FS_APP_MESSAGE_CONFIG = new InjectionToken<any[]>('fs-app-message-config');\n","import { Component, OnInit, Inject, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\n\nimport { MatTabChangeEvent } from '@angular/material/tabs';\nimport { MatDialog, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsPrompt } from '@firestitch/prompt';\n\nimport { switchMap, tap } from 'rxjs/operators';\n\nimport { EmailMessageFormats } from '../../consts';\nimport { EmailMessageFormat } from '../../enums';\nimport { PreviewComponent } from '../../../../modules/message-preview/components';\nimport { FS_APP_MESSAGE_CONFIG } from '../../../app-message/injectors';\nimport { FsAppMessageConfig } from '../../../app-message/interfaces';\nimport { of } from 'rxjs';\n\n\n@Component({\n templateUrl: './message.component.html',\n styleUrls: ['./message.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MessageComponent implements OnInit {\n\n public message;\n public tab;\n public messageTemplates = [];\n public emailMessageFormats = EmailMessageFormats;\n public emailMessageFormat = EmailMessageFormat;\n\n public constructor(\n @Inject(FS_APP_MESSAGE_CONFIG) private _config: FsAppMessageConfig,\n @Inject(MAT_DIALOG_DATA) private _data,\n private _prompt: FsPrompt,\n private _message: FsMessage,\n private _dialog: MatDialog,\n private _cdRef: ChangeDetectorRef,\n ) {\n }\n\n public ngOnInit() {\n this._config.loadMessage(this._data.message)\n .subscribe((response) => {\n this.message = response;\n\n if (this.message.emailMessage && this.message.emailMessage.customize === undefined) {\n this.message.emailMessage.customize = true;\n }\n if (this.message.smsMessage && this.message.smsMessage.customize === undefined) {\n this.message.smsMessage.customize = true;\n }\n\n this._cdRef.markForCheck();\n });\n\n this._config.loadMessageTemplates()\n .subscribe((data) => {\n this.messageTemplates = data.data;\n this._cdRef.markForCheck();\n });\n }\n\n public tabChange(event: MatTabChangeEvent) {\n switch (event.tab.textLabel) {\n case 'SMS Message':\n this.tab = 'sms';\n break;\n case 'Email Message':\n this.tab = 'email';\n break;\n default:\n this.tab = null;\n }\n }\n\n public save = () => {\n return this._config.saveMessage(this.message)\n .pipe(\n tap(() => {\n this._message.success('Saved Changes');\n })\n );\n }\n\n public openPreview(): void {\n let html = this.message.emailMessage.body;\n let styles = this.message.emailMessage.styles;\n\n if (this.message.emailMessage.messageTemplateId) {\n const messageTemplate = this.messageTemplates\n .find((item) => {\n return this.message.emailMessage.messageTemplateId === item.id;\n });\n\n if (messageTemplate) {\n html = messageTemplate.content.replace('{$content}', html);\n styles = messageTemplate.styles.concat(styles);\n }\n }\n\n this._dialog.open(PreviewComponent, {\n data: {\n styles,\n html,\n },\n width: '95%'\n });\n }\n\n public sendTest(type) {\n of(true)\n .pipe(\n switchMap(() => {\n return type === 'email' ? this._config.getTestEmail() : of('');\n }),\n switchMap((default_) => { \n const typeName = type === 'email' ? 'an email' : 'phone number';\n \n return this._prompt.input({\n label: `Please enter ${typeName} to send test to`,\n title: 'Send Test',\n commitLabel: 'Send',\n default: default_,\n required: true\n })\n })\n )\n .subscribe((value: string) => {\n this._config.testMessage(this.message, value, type)\n .subscribe(() => {\n this._message.success('Test Sent');\n });\n });\n }\n}\n","\nexport function indexNameValue(arry) {\n const obj = {};\n arry.forEach(item => {\n obj[item.value] = item.name;\n });\n\n return obj;\n}\n","export enum MessageQueueState {\n Sent = 'S',\n PartiallySent = 'P',\n Sending = 'E',\n Queued = 'Q',\n Canceled = 'C',\n InvalidRecipients = 'I',\n Failed = 'F'\n}","import { Component, Inject, OnDestroy, OnInit, ViewChild } from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { takeUntil, map } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\nimport { ItemType } from '@firestitch/filter';\n\nimport { MessageComponent } from '../message';\nimport { EmailMessageFormats } from '../../consts';\nimport { indexNameValue } from '../../../../helpers';\nimport { FS_APP_MESSAGE_CONFIG } from '../../../app-message/injectors';\nimport { FsAppMessageConfig } from '../../../app-message/interfaces';\n\n@Component({\n selector: 'fs-app-messages',\n templateUrl: './messages.component.html'\n})\nexport class MessagesComponent implements OnInit, OnDestroy {\n\n @ViewChild(FsListComponent, { static: true })\n public list: FsListComponent = null;\n\n public config: FsListConfig = null;\n public emailMessageFormats = {};\n\n private _destroy$ = new Subject();\n\n constructor(\n @Inject(FS_APP_MESSAGE_CONFIG) private _config: FsAppMessageConfig,\n private _dialog: MatDialog,\n ) { }\n\n public ngOnInit(): void {\n this.emailMessageFormats = indexNameValue(EmailMessageFormats);\n\n this.config = {\n filters: [\n {\n name: 'keyword',\n type: ItemType.Keyword,\n label: 'Search'\n }\n ],\n fetch: query => {\n return this._config.loadMessages(query)\n .pipe(\n map(response => {\n return ({ data: response.data, paging: response.paging })\n })\n );\n }\n }\n }\n\n public open(message) {\n const dialogRef = this._dialog.open(MessageComponent, {\n data: {\n message: message,\n },\n width: '85%'\n });\n\n dialogRef.afterClosed()\n .pipe(\n takeUntil(this._destroy$)\n )\n .subscribe(() => {\n this.list.reload();\n })\n }\n\n public ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\n\nimport { FsIFrameModule } from '@firestitch/iframe';\nimport { FsDialogModule } from '@firestitch/dialog';\n\nimport { PreviewComponent } from './components/preview';\n\n\n@NgModule({\n imports: [\n MatDialogModule,\n MatButtonModule,\n\n FsDialogModule,\n FsIFrameModule,\n ],\n declarations: [\n PreviewComponent,\n ],\n exports: [\n PreviewComponent,\n ]\n})\nexport class FsAppMessagePreviewModule {\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { FlexLayoutModule } from '@angular/flex-layout';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsListModule } from '@firestitch/list';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FormsModule } from '@angular/forms';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\nimport { FsEditorRichTextModule } from '@firestitch/editor';\n\nimport { MessagesComponent } from './components/messages/messages.component';\nimport { MessageComponent } from './components/message/message.component';\nimport { FsAppMessagePreviewModule } from '../message-preview/message-preview.module';\n\n@NgModule({\n imports: [\n RouterModule,\n CommonModule,\n FormsModule,\n\n MatDialogModule,\n MatButtonModule,\n MatTabsModule,\n MatFormFieldModule,\n MatInputModule,\n MatOptionModule,\n MatSelectModule,\n MatTooltipModule,\n MatCheckboxModule,\n\n FsDialogModule,\n FsListModule,\n FsLabelModule,\n FlexLayoutModule,\n FsSkeletonModule,\n FsFormModule,\n FsTextEditorModule,\n FsEditorRichTextModule,\n\n FsAppMessagePreviewModule,\n ],\n declarations: [\n MessagesComponent,\n MessageComponent,\n ],\n exports: [\n MessagesComponent,\n MessageComponent,\n ],\n})\nexport class FsAppMessagesModule {}\n","import { MessageQueueState } from '../enums/message-queue-state.enum';\n\n\nexport const MessageQueueStates = [\n { name: 'Sent', value: MessageQueueState.Sent },\n { name: 'Partially Sent', value: MessageQueueState.PartiallySent },\n { name: 'Sending', value: MessageQueueState.Sending },\n { name: 'Queued', value: MessageQueueState.Queued },\n { name: 'Canceled', value: MessageQueueState.Canceled },\n { name: 'Invalid Recipients', value: MessageQueueState.InvalidRecipients },\n { name: 'Failed', value: MessageQueueState.Failed }\n];\n","export enum EmailMessageQueueFormat {\n Text = 'T',\n HTML = 'H',\n RichText = 'R'\n}\n","export enum MessageQueueType {\n Sms = 'S',\n Email = 'E'\n}\n","export enum MessageQueueEventType {\n Click = 'click',\n Open = 'open',\n}\n","import { MessageQueueEventType } from \"../enums\";\n\n\nexport const MessageQueueEventTypes = [\n { name: 'Open', value: MessageQueueEventType.Open },\n { name: 'Click', value: MessageQueueEventType.Click },\n];\n","import {\n Component, OnInit, Inject, OnDestroy, ViewChild,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsPrompt } from '@firestitch/prompt';\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\n\nimport { map } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport anchorme from 'anchorme';\n\nimport { EmailMessageQueueFormat, MessageQueueEventType } from '../../enums';\nimport { MessageQueueStates } from '../../consts';\nimport { indexNameValue } from '../../../../helpers';\nimport { MessageComponent } from '../../../../modules/messages/components';\nimport { MessageQueueType } from '../../enums';\nimport { FS_APP_MESSAGE_CONFIG } from '../../../app-message/injectors';\nimport { FsAppMessageConfig } from '../../../app-message/interfaces';\nimport { ResendMessageQueue, ForwardMessageQueue, LoadMessage } from '../../../app-message/types';\nimport { MessageQueueEventTypes } from '../../consts/message-queue-event-type.const';\n\n\n@Component({\n templateUrl: './queue.component.html',\n styleUrls: ['./queue.component.scss'],\n})\nexport class QueueComponent implements OnInit, OnDestroy {\n\n @ViewChild('logList')\n public logList: FsListComponent;\n\n public messageQueue;\n public loadMessage: LoadMessage;\n public resendMessageQueue: ResendMessageQueue;\n public forwardMessageQueue: ForwardMessageQueue;\n public messageQueueRecipients = {};\n public emailMessageQueueFormat = EmailMessageQueueFormat;\n public messageQueueStates;\n public logConfig: FsListConfig;\n public attachmentConfig: FsListConfig;\n public eventConfig: FsListConfig;\n public MessageQueueEventTypes = indexNameValue(MessageQueueEventTypes);\n public MessageQueueEventType = MessageQueueEventType;\n\n private _destroy$ = new Subject();\n\n constructor(\n @Inject(FS_APP_MESSAGE_CONFIG) private _config: FsAppMessageConfig,\n private _message: FsMessage,\n private _prompt: FsPrompt,\n private _dialog: MatDialog,\n @Inject(MAT_DIALOG_DATA) private _data,\n ) {\n }\n\n public ngOnInit() {\n this.messageQueueStates = indexNameValue(MessageQueueStates);\n this.resendMessageQueue = this._config.resendMessageQueue;\n this.forwardMessageQueue = this._config.forwardMessageQueue;\n\n this._config.loadMessageQueue(this._data.messageQueueId)\n .subscribe((messageQueue) => {\n this.messageQueue = messageQueue;\n\n if (this.messageQueue.emailMessageQueue) {\n let body = this.messageQueue.emailMessageQueue.body;\n if (this.messageQueue.emailMessageQueue.format === EmailMessageQueueFormat.HTML) {\n try {\n const doc = new DOMParser().parseFromString(body, 'text/html');\n\n doc.querySelectorAll('a').forEach((el) => {\n el.setAttribute('target', '_blank');\n });\n\n body = doc.documentElement.innerHTML;\n\n } catch (e) {\n }\n } else {\n body = this.anchorMe(body);\n }\n\n this.messageQueue.emailMessageQueue.body = body;\n }\n\n if (this.messageQueue.smsMessageQueue) {\n this.messageQueue.smsMessageQueue.body = this.anchorMe(this.messageQueue.smsMessageQueue.body);\n }\n\n this.messageQueueRecipients = this.messageQueue.messageQueueRecipients\n .reduce((accum, messageQueueRecipient) => {\n accum[messageQueueRecipient.recipient] = messageQueueRecipient.state;\n\n return accum;\n }, {});\n\n this._setLogsConfig(messageQueue);\n this._setAttachmentsConfig(messageQueue);\n this._setEventsConfig(messageQueue);\n });\n }\n\n public anchorMe(html) {\n return anchorme(html, {\n options: {\n attributes: [\n {\n name: 'target',\n value: '_blank'\n },\n ],\n },\n });\n }\n\n public openMessage(message) {\n this._dialog.open(MessageComponent, {\n data: {\n message: message,\n },\n width: '85%'\n });\n }\n\n public resend() {\n this._prompt.confirm({\n title: 'Confirm',\n template: 'Are you sure you would like to resend this message?'\n }).subscribe(() => {\n this.resendMessageQueue(this.messageQueue)\n .subscribe(messageQueue => {\n Object.assign(this.messageQueue, messageQueue);\n this._message.success('Successfully resent');\n\n if (this.logList) {\n this.logList.reload();\n }\n });\n });\n }\n\n public forward() {\n const typeName = this.messageQueue.type === MessageQueueType.Email ? 'an email' : 'a phone number';\n\n this._prompt.input({\n label: `Please enter ${typeName} to forward to`,\n title: 'Forward Message',\n commitLabel: 'Forward',\n required: true\n }).subscribe((value: string) => {\n if (value) {\n this.forwardMessageQueue(this.messageQueue, value)\n .subscribe(messageQueue => {\n this.messageQueue = {\n ...this.messageQueue,\n messageQueue,\n };\n this._message.success('Successfully forwarded');\n\n if (this.logList) {\n this.logList.reload();\n }\n });\n }\n });\n }\n\n public ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n private _setLogsConfig(messageQueue) {\n this.logConfig = {\n loadMore: true,\n queryParam: false,\n fetch: query => {\n return this._config.loadLogs(messageQueue, query);\n }\n }\n }\n\n private _setEventsConfig(messageQueue) {\n this.eventConfig = {\n loadMore: true,\n queryParam: false,\n fetch: (query) => {\n return this._config.loadMessageQueueEvents(messageQueue, query);\n }\n }\n }\n\n private _setAttachmentsConfig(messageQueue) {\n this.attachmentConfig = {\n queryParam: false,\n fetch: query => {\n return this._config.loadMessageQueueAttachments(messageQueue, query)\n .pipe(\n map(response => ({\n data: response.data.map(value => {\n value.prettyFilesize = this._prettyFilesize(value.filesize);\n return value;\n }), paging: response.paging\n }))\n );\n }\n };\n\n if (this._config.downloadMessageQueueAttachment) {\n this.attachmentConfig.rowActions = [\n {\n click: (messageAttachment) => {\n this._config.downloadMessageQueueAttachment(messageAttachment, this.messageQueue);\n },\n label: 'Download',\n }\n ];\n }\n }\n\n private _prettyFilesize(bytes) {\n if (bytes === 0) { return '0.00 B'; }\n const e = Math.floor(Math.log(bytes) / Math.log(1024));\n return (bytes / Math.pow(1024, e)).toFixed(2) + ' ' + ' KMGTP'.charAt(e) + 'B';\n }\n}\n","import { Injectable, OnDestroy } from \"@angular/core\";\n\nimport { MatDialog } from \"@angular/material/dialog\";\n\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\nimport { QueueComponent } from \"../components/queue/queue.component\";\n\n\n@Injectable()\nexport class FsMessageQueueService implements OnDestroy {\n\n private _destroy$ = new Subject();\n \n public constructor(\n private _dialog: MatDialog,\n ) {}\n \n public openMessageQueue(messageQueueId: number, options: any = {}) { \n return this._dialog.open(QueueComponent, {\n ...options,\n data: {\n messageQueueId,\n },\n width: options.width || '85%',\n }).afterClosed()\n .pipe(\n takeUntil(this._destroy$)\n );\n }\n \n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n}\n","import { Component, Inject, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { takeUntil, map, switchMap, tap } from 'rxjs/operators';\nimport { Subject, of } from 'rxjs';\n\nimport { FsListActionSelected, FsListComponent, FsListConfig } from '@firestitch/list';\nimport { ItemType } from '@firestitch/filter';\nimport { SelectionActionType } from '@firestitch/selection';\n\nimport { MessageQueueStates } from '../../consts';\nimport { indexNameValue } from '../../../../helpers';\nimport { MessageQueueState } from '../../enums/message-queue-state.enum';\nimport { FS_APP_MESSAGE_CONFIG } from '../../../app-message/injectors';\nimport { FsAppMessageConfig } from '../../../app-message/interfaces';\nimport { FsMessageQueueService } from '../../services/message-queue.service';\n\n\n@Component({\n selector: 'fs-app-message-queues',\n styleUrls: ['./queues.component.scss'],\n templateUrl: './queues.component.html'\n})\nexport class QueuesComponent implements OnInit, OnDestroy {\n\n @ViewChild(FsListComponent, { static: true })\n public list: FsListComponent = null;\n\n @Input() public query = {};\n\n public config: FsListConfig = null;\n public messageQueueStates = {};\n public MessageQueueState = MessageQueueState;\n\n private _destroy$ = new Subject();\n\n constructor(\n @Inject(FS_APP_MESSAGE_CONFIG) private _config: FsAppMessageConfig, \n private _dialog: MatDialog,\n private _messageQueueService: FsMessageQueueService,\n ) { }\n\n public ngOnInit() {\n this.messageQueueStates = indexNameValue(MessageQueueStates);\n\n this.config = {\n filters: [\n {\n name: 'keyword',\n type: ItemType.Keyword,\n label: 'Search'\n },\n {\n name: 'state',\n type: ItemType.Select,\n label: 'Status',\n values: () => {\n return MessageQueueStates;\n }\n },\n {\n name: 'date',\n type: ItemType.DateRange,\n label: ['From Date', 'To Date'],\n },\n ],\n sort: { value: 'created_date', direction: 'desc' },\n fetch: query => {\n query = {\n ...query,\n ...this.query,\n messageQueueAttachmentCounts: true,\n emailMessageQueues: true,\n emailMessageQueueBodies: false,\n smsMessageQueues: true,\n };\n\n return this._config.loadMessageQueues(query)\n .pipe(\n map(response => ({ data: response.data\n .map((messageQueue) => { \n return {\n ...messageQueue,\n messageQueueRecipients: messageQueue.messageQueueRecipients\n .reduce((accum, messageQueueRecipient) => {\n accum[messageQueueRecipient.recipient] = messageQueueRecipient.state;\n\n return accum;\n }, {}),\n };\n }), paging: response.paging }))\n )\n }\n };\n\n // if any bulk actions add the selection object to config.\n if (this._config.cancelMessageQueues) {\n this.config.selection = {\n selectAll: false,\n actions: [\n ],\n actionSelected: (action: FsListActionSelected) => {\n return of(true)\n .pipe(\n switchMap(() => {\n if (action.action.name === 'cancel') {\n return this._config.cancelMessageQueues(action);\n }\n\n return of(true);\n }),\n tap(() => {\n this.list.reload();\n }),\n );\n }\n };\n }\n\n // add each individual bulk action to select actions\n if (this._config.cancelMessageQueues) {\n this.config.selection.actions.push({\n type: SelectionActionType.Action,\n name: 'cancel',\n label: 'Cancel Queued',\n });\n }\n\n this.config.filters.push({\n name: 'message_id',\n type: ItemType.Select,\n label: 'Message Type',\n values: (query) => {\n query = { \n ...query,\n limit: 50,\n };\n\n return this._config.loadMessages(query)\n .pipe(\n map((response) => {\n return [\n { value: null, name: 'All', },\n ...response.data.map((item) => ({ name: item.name, value: item.id })),\n ];\n })\n )\n }\n });\n }\n\n public open(messageQueue) {\n this._messageQueueService.openMessageQueue(messageQueue.id)\n .pipe(\n takeUntil(this._destroy$)\n )\n .subscribe(() => {\n this.list.reload();\n });\n }\n\n public ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n}\n","import {\n Component, Input, OnInit,\n} from '@angular/core';\n\n\n\n@Component({\n selector: 'app-recipient',\n templateUrl: './recipient.component.html',\n styleUrls: ['./recipient.component.scss'],\n})\nexport class RecipientComponent implements OnInit {\n \n @Input() name;\n @Input() state;\n \n public icon;\n\n public ngOnInit(): void {\n \n const icons = {\n 'S': { name: 'check_circle', tooltip: 'Sent' },\n 'E': { name: 'offline_bolt', tooltip: 'Sending' },\n 'F': { name: 'info', tooltip: 'Failed' },\n }\n\n this.icon = icons[this.state];\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport anchorme from 'anchorme';\n\n\n@Pipe({name: 'linkify'})\nexport class LinkifyPipe implements PipeTransform {\n transform(value: string): string {\n return anchorme(value, {\n attributes: [\n {\n name: 'target',\n value: '_blank'\n },\n ]\n });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'truncate'\n})\nexport class TruncatePipe implements PipeTransform {\ntransform(value: string, limit = 25, completeWords = false, ellipsis = '...') {\n\n if (value.length < limit) {\n return `${value.substr(0, limit)}`;\n }\n\n if (completeWords) {\n limit = value.substr(0, limit).lastIndexOf(' ');\n }\n return `${value.substr(0, limit)}${ellipsis}`;\n}\n}\n","import { FlexLayoutModule } from '@angular/flex-layout';\nimport { RouterModule } from '@angular/router';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsDateModule } from '@firestitch/date';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsIFrameModule } from '@firestitch/iframe';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsPromptInputModule } from '@firestitch/prompt';\n// import { FsDeviceModule } from '@firestitch/device';\n// import { FsIpModule } from '@firestitch/ip';\n\nimport { FsAppMessagesModule } from '../messages/messages.module';\nimport { QueuesComponent } from './components/queues/queues.component';\nimport { QueueComponent } from './components/queue/queue.component';\nimport { RecipientComponent } from './components/recipient/recipient.component';\nimport { LinkifyPipe } from './pipes/linkify.pipe';\nimport { TruncatePipe } from './pipes/truncate.pipe';\nimport { FsMessageQueueService } from './services/message-queue.service';\n\n\n@NgModule({\n imports: [\n RouterModule,\n FormsModule,\n CommonModule,\n\n FlexLayoutModule,\n\n MatTooltipModule,\n MatDialogModule,\n MatButtonModule,\n MatIconModule,\n MatTabsModule,\n\n FsListModule,\n FsDialogModule,\n FsLabelModule,\n FsDateModule,\n FsSkeletonModule,\n FsAppMessagesModule,\n FsFormModule,\n FsPromptInputModule,\n FsIFrameModule,\n //FsDeviceModule,\n //FsIpModule,\n ],\n declarations: [\n QueuesComponent,\n QueueComponent,\n LinkifyPipe,\n TruncatePipe,\n RecipientComponent,\n ],\n exports: [\n QueuesComponent,\n QueueComponent,\n ],\n providers: [\n FsMessageQueueService\n ]\n})\nexport class FsAppMessageQueuesModule {}\n","import { Component, OnInit, Inject } from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialogRef, MatDialog } from '@angular/material/dialog';\n\nimport { tap } from 'rxjs/operators';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsTextEditorConfig } from '@firestitch/text-editor';\nimport { SubmitEvent } from '@firestitch/form';\n\nimport { PreviewComponent } from '../../../../modules/message-preview/components';\nimport { FS_APP_MESSAGE_CONFIG } from '../../../app-message/injectors';\nimport { FsAppMessageConfig } from '../../../app-message/interfaces';\n\n\n@Component({\n templateUrl: './template.component.html',\n styleUrls: ['./template.component.scss']\n})\nexport class TemplateComponent implements OnInit {\n\n public messageTemplate;\n public htmlEditorconfig: FsTextEditorConfig = {\n language: 'html',\n insertSpaces: true,\n tabSize: 2,\n };\n\n public cssEditorconfig: FsTextEditorConfig = {\n language: 'scss',\n insertSpaces: true,\n tabSize: 2,\n };\n\n public constructor(\n @Inject(MAT_DIALOG_DATA) private _data,\n @Inject(FS_APP_MESSAGE_CONFIG) private _config: FsAppMessageConfig,\n private _dialogRef: MatDialogRef<TemplateComponent>,\n private _message: FsMessage,\n private _dialog: MatDialog,\n ) {\n }\n\n public ngOnInit(): void {\n if (this._data.messageTemplate.id) {\n this._config.loadMessageTemplate(this._data.messageTemplate)\n .subscribe(messageTemplate => {\n this.messageTemplate = messageTemplate;\n });\n } else {\n this.messageTemplate = {};\n }\n }\n\n public openPreview() {\n this._dialog.open(PreviewComponent, {\n data: {\n styles: this.messageTemplate.styles,\n html: this.messageTemplate.content,\n },\n width: '95%'\n });\n }\n\n public save = (event: SubmitEvent) => {\n return this._config.saveMessageTemplate(this.messageTemplate)\n .pipe(\n tap(messageTemplate => {\n this._message.success('Saved Changes');\n if (event.submitter === 'save-close') {\n this._dialogRef.close(messageTemplate);\n }\n })\n );\n }\n}\n","import { Component, OnDestroy, OnInit, ViewChild, Inject } from '@angular/core';\n\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\n\nimport { MatDialog } from '@angular/material/dialog';\nimport { TemplateComponent } from '../template';\nimport { FS_APP_MESSAGE_CONFIG } from '../../../app-message/injectors';\nimport { FsAppMessageConfig } from '../../../app-message/interfaces';\n\n\n@Component({\n selector: 'fs-app-message-templates',\n templateUrl: './templates.component.html'\n})\nexport class TemplatesComponent implements OnInit, OnDestroy {\n\n @ViewChild(FsListComponent, { static: true }) \n public list: FsListComponent = null;\n\n public config: FsListConfig = null;\n public messageQueueStates = [];\n\n private _destroy$ = new Subject();\n\n constructor(\n @Inject(FS_APP_MESSAGE_CONFIG) private _config: FsAppMessageConfig,\n private _dialog: MatDialog\n ) { }\n\n public ngOnInit(): void {\n this.config = {\n actions: [\n {\n label: 'Create',\n click: () => {\n this.open({});\n }\n }\n ],\n status: false,\n fetch: query => {\n return this._config.loadMessageTemplates(query);\n }\n }\n\n if (this._config.deleteMessageTemplate) {\n this.config.rowActions = [\n {\n click: data => {\n return this._config.deleteMessageTemplate(data);\n },\n remove: {\n title: 'Confirm',\n template: 'Are you sure you would like to delete this template?',\n },\n menu: true,\n label: 'Delete'\n }\n ];\n }\n }\n\n public open(messageTemplate) {\n const dialogRef = this._dialog.open(TemplateComponent, {\n data: {\n messageTemplate: messageTemplate,\n },\n width: '85%'\n });\n\n dialogRef.afterClosed()\n .pipe(\n takeUntil(this._destroy$)\n )\n .subscribe((response) => {\n if (response) {\n const update = this.list.updateData(\n response,\n (row: any) => {\n return row.id === response.id;\n });\n\n if (!update) {\n this.list.reload();\n }\n }\n })\n }\n\n public ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { RouterModule } from '@angular/router';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\n\nimport { TemplatesComponent } from './components/templates/templates.component';\nimport { TemplateComponent } from './components/template/template.component';\n\nimport { FsAppMessagePreviewModule } from '../message-preview/message-preview.module';\n\n\n@NgModule({\n imports: [\n RouterModule,\n CommonModule,\n FormsModule,\n\n MatTooltipModule,\n MatDialogModule,\n MatButtonModule,\n MatTabsModule,\n MatFormFieldModule,\n MatFormFieldModule,\n MatInputModule,\n\n FsListModule,\n FsDialogModule,\n FsLabelModule,\n FlexLayoutModule,\n FsSkeletonModule,\n FsFormModule,\n FsTextEditorModule,\n\n FsAppMessagePreviewModule,\n ],\n declarations: [\n TemplatesComponent,\n TemplateComponent,\n ],\n exports: [\n TemplatesComponent,\n TemplateComponent,\n ],\n})\nexport class FsAppMessageTemplatesModule {\n}\n","import { Component, Inject, OnInit, ViewChild } from '@angular/core';\r\n\r\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\r\nimport { FsMessage } from '@firestitch/message';\r\n\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { FS_APP_MESSAGE_CONFIG } from '../../../app-message/injectors';\r\nimport { FsAppMessageConfig } from '../../../app-message/interfaces';\r\n\r\n\r\n@Component({\r\n selector: 'fs-app-message-webhooks',\r\n templateUrl: './webhooks.component.html',\r\n})\r\nexport class WebhooksComponent implements OnInit {\r\n\r\n @ViewChild(FsListComponent)\r\n public list: FsListComponent;\r\n\r\n public listConfig: FsListConfig;\r\n\r\n constructor(\r\n @Inject(FS_APP_MESSAGE_CONFIG) private _config: FsAppMessageConfig,\r\n private _message: FsMessage,\r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n this.listConfig = {\r\n paging: false,\r\n actions: [\r\n {\r\n click: () => {\r\n this._config.createWebhook()\r\n .subscribe(() => {\r\n this._message.success('Created webhook');\r\n this.list.reload();\r\n });\r\n },\r\n label: 'Create',\r\n },\r\n ],\r\n rowActions: [\r\n {\r\n click: (webhook) => {\r\n this._config.deleteWebhook(webhook)\r\n .subscribe(() => {\r\n this._message.success('Deleted webhook');\r\n this.list.reload();\r\n });\r\n },\r\n label: 'Delete',\r\n },\r\n ],\r\n fetch: () => {\r\n return this._config.loadWebhooks()\r\n .pipe(\r\n map((webhooks) => ({ data: webhooks })),\r\n );\r\n },\r\n };\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { FsDateModule } from '@firestitch/date';\n\nimport { FsListModule } from '@firestitch/list';\n\nimport { WebhooksComponent } from './components/webhooks/webhooks.component';\n\n@NgModule({\n imports: [\n FsListModule,\n\n FsDateModule,\n ],\n declarations: [\n WebhooksComponent,\n ],\n exports: [\n WebhooksComponent,\n ],\n})\nexport class FsAppMessageWebhooksModule {}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\n\n\n@NgModule({\n})\nexport class FsAppMessageModule {\n static forRoot(): ModuleWithProviders<FsAppMessageModule> {\n return {\n ngModule: FsAppMessageModule,\n };\n }\n}\n"]}
@@ -1,8 +0,0 @@
1
- export function indexNameValue(arry) {
2
- var obj = {};
3
- arry.forEach(function (item) {
4
- obj[item.value] = item.name;
5
- });
6
- return obj;
7
- }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtbmFtZS12YWx1ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmaXJlc3RpdGNoL2FwcC1tZXNzYWdlLyIsInNvdXJjZXMiOlsiYXBwL2hlbHBlcnMvaW5kZXgtbmFtZS12YWx1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxNQUFNLFVBQVUsY0FBYyxDQUFDLElBQUk7SUFDakMsSUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFBLElBQUk7UUFDZixHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmV4cG9ydCBmdW5jdGlvbiBpbmRleE5hbWVWYWx1ZShhcnJ5KSB7XG4gIGNvbnN0IG9iaiA9IHt9O1xuICBhcnJ5LmZvckVhY2goaXRlbSA9PiB7XG4gICAgb2JqW2l0ZW0udmFsdWVdID0gaXRlbS5uYW1lO1xuICB9KTtcblxuICByZXR1cm4gb2JqO1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export * from './index-name-value';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmlyZXN0aXRjaC9hcHAtbWVzc2FnZS8iLCJzb3VyY2VzIjpbImFwcC9oZWxwZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2luZGV4LW5hbWUtdmFsdWUnOyJdfQ==
@@ -1,19 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { NgModule } from '@angular/core';
3
- var FsAppMessageModule = /** @class */ (function () {
4
- function FsAppMessageModule() {
5
- }
6
- FsAppMessageModule_1 = FsAppMessageModule;
7
- FsAppMessageModule.forRoot = function () {
8
- return {
9
- ngModule: FsAppMessageModule_1,
10
- };
11
- };
12
- var FsAppMessageModule_1;
13
- FsAppMessageModule = FsAppMessageModule_1 = __decorate([
14
- NgModule({})
15
- ], FsAppMessageModule);
16
- return FsAppMessageModule;
17
- }());
18
- export { FsAppMessageModule };
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLW1lc3NhZ2UubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvYXBwLW1lc3NhZ2UvIiwic291cmNlcyI6WyJhcHAvbW9kdWxlcy9hcHAtbWVzc2FnZS9hcHAtbWVzc2FnZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBSzlEO0lBQUE7SUFNQSxDQUFDOzJCQU5ZLGtCQUFrQjtJQUN0QiwwQkFBTyxHQUFkO1FBQ0UsT0FBTztZQUNMLFFBQVEsRUFBRSxvQkFBa0I7U0FDN0IsQ0FBQztJQUNKLENBQUM7O0lBTFUsa0JBQWtCO1FBRjlCLFFBQVEsQ0FBQyxFQUNULENBQUM7T0FDVyxrQkFBa0IsQ0FNOUI7SUFBRCx5QkFBQztDQUFBLEFBTkQsSUFNQztTQU5ZLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cblxuQE5nTW9kdWxlKHtcbn0pXG5leHBvcnQgY2xhc3MgRnNBcHBNZXNzYWdlTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxGc0FwcE1lc3NhZ2VNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEZzQXBwTWVzc2FnZU1vZHVsZSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -1,4 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- export var FS_APP_MESSAGE_ROOT_CONFIG = new InjectionToken('fs-app-message-root-config');
3
- export var FS_APP_MESSAGE_CONFIG = new InjectionToken('fs-app-message-config');
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLW1lc3NhZ2UtY29uZmlnLmluamVjdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvYXBwLW1lc3NhZ2UvIiwic291cmNlcyI6WyJhcHAvbW9kdWxlcy9hcHAtbWVzc2FnZS9pbmplY3RvcnMvYXBwLW1lc3NhZ2UtY29uZmlnLmluamVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLElBQU0sMEJBQTBCLEdBQUcsSUFBSSxjQUFjLENBQVEsNEJBQTRCLENBQUMsQ0FBQztBQUNsRyxNQUFNLENBQUMsSUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBUSx1QkFBdUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IEZTX0FQUF9NRVNTQUdFX1JPT1RfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPGFueVtdPignZnMtYXBwLW1lc3NhZ2Utcm9vdC1jb25maWcnKTtcbmV4cG9ydCBjb25zdCBGU19BUFBfTUVTU0FHRV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55W10+KCdmcy1hcHAtbWVzc2FnZS1jb25maWcnKTtcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export * from './app-message-config.injector';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmlyZXN0aXRjaC9hcHAtbWVzc2FnZS8iLCJzb3VyY2VzIjpbImFwcC9tb2R1bGVzL2FwcC1tZXNzYWdlL2luamVjdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hcHAtbWVzc2FnZS1jb25maWcuaW5qZWN0b3InO1xuIl19
@@ -1 +0,0 @@
1
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLW1lc3NhZ2UtY29uZmlnLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvYXBwLW1lc3NhZ2UvIiwic291cmNlcyI6WyJhcHAvbW9kdWxlcy9hcHAtbWVzc2FnZS9pbnRlcmZhY2VzL2FwcC1tZXNzYWdlLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRnNMaXN0QWN0aW9uU2VsZWN0ZWQgfSBmcm9tIFwiQGZpcmVzdGl0Y2gvbGlzdFwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge1xuICBEZWxldGVNZXNzYWdlVGVtcGxhdGUsXG4gIERvd25sb2FkTWVzc2FnZVF1ZXVlQXR0YWNobWVudCwgRm9yd2FyZE1lc3NhZ2VRdWV1ZSwgTG9hZE1lc3NhZ2VRdWV1ZUF0dGFjaG1lbnRzLCBMb2FkTG9ncywgTG9hZE1lc3NhZ2UsIFxuICBMb2FkTWVzc2FnZVF1ZXVlLCBMb2FkTWVzc2FnZVF1ZXVlcywgTG9hZE1lc3NhZ2VzLCBMb2FkTWVzc2FnZVRlbXBsYXRlLCBMb2FkTWVzc2FnZVRlbXBsYXRlcywgXG4gIFJlc2VuZE1lc3NhZ2VRdWV1ZSwgU2F2ZU1lc3NhZ2UsIFxuICBTYXZlTWVzc2FnZVRlbXBsYXRlLCBUZXN0TWVzc2FnZSwgRGVsZXRlV2ViaG9vaywgQ3JlYXRlV2ViaG9vaywgTG9hZFdlYmhvb2tzLCBMb2FkTWVzc2FnZVF1ZXVlRXZlbnRzIFxufSBmcm9tIFwiLi4vdHlwZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBGc0FwcE1lc3NhZ2VDb25maWcge1xuICBsb2FkTWVzc2FnZXM6IExvYWRNZXNzYWdlcztcbiAgbG9hZE1lc3NhZ2VRdWV1ZXM6IExvYWRNZXNzYWdlUXVldWVzO1xuICBsb2FkTWVzc2FnZVF1ZXVlOiBMb2FkTWVzc2FnZVF1ZXVlO1xuICBsb2FkTWVzc2FnZVF1ZXVlRXZlbnRzOiBMb2FkTWVzc2FnZVF1ZXVlRXZlbnRzO1xuICBsb2FkTG9nczogTG9hZExvZ3M7XG4gIGxvYWRNZXNzYWdlUXVldWVBdHRhY2htZW50czogTG9hZE1lc3NhZ2VRdWV1ZUF0dGFjaG1lbnRzO1xuICBkb3dubG9hZE1lc3NhZ2VRdWV1ZUF0dGFjaG1lbnQ6IERvd25sb2FkTWVzc2FnZVF1ZXVlQXR0YWNobWVudDtcbiAgcmVzZW5kTWVzc2FnZVF1ZXVlOiBSZXNlbmRNZXNzYWdlUXVldWU7XG4gIGZvcndhcmRNZXNzYWdlUXVldWU6IEZvcndhcmRNZXNzYWdlUXVldWU7XG4gIGxvYWRNZXNzYWdlOiBMb2FkTWVzc2FnZTtcbiAgc2F2ZU1lc3NhZ2U6IFNhdmVNZXNzYWdlO1xuICB0ZXN0TWVzc2FnZTogVGVzdE1lc3NhZ2U7XG4gIGxvYWRNZXNzYWdlVGVtcGxhdGVzOiBMb2FkTWVzc2FnZVRlbXBsYXRlcztcbiAgbG9hZE1lc3NhZ2VUZW1wbGF0ZTogTG9hZE1lc3NhZ2VUZW1wbGF0ZTtcbiAgc2F2ZU1lc3NhZ2VUZW1wbGF0ZTogU2F2ZU1lc3NhZ2VUZW1wbGF0ZTtcbiAgZGVsZXRlTWVzc2FnZVRlbXBsYXRlOiBEZWxldGVNZXNzYWdlVGVtcGxhdGU7XG4gIGNhbmNlbE1lc3NhZ2VRdWV1ZXM6IChldmVudDogRnNMaXN0QWN0aW9uU2VsZWN0ZWQpID0+IE9ic2VydmFibGU8YW55PjtcbiAgZ2V0VGVzdEVtYWlsOiAoKSA9PiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGRlbGV0ZVdlYmhvb2s6IERlbGV0ZVdlYmhvb2s7XG4gIGNyZWF0ZVdlYmhvb2s6IENyZWF0ZVdlYmhvb2s7XG4gIGxvYWRXZWJob29rczogTG9hZFdlYmhvb2tzO1xufVxuIl19
@@ -1 +0,0 @@
1
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmlyZXN0aXRjaC9hcHAtbWVzc2FnZS8iLCJzb3VyY2VzIjpbImFwcC9tb2R1bGVzL2FwcC1tZXNzYWdlL2ludGVyZmFjZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXBwLW1lc3NhZ2UtY29uZmlnJztcbiJdfQ==
@@ -1 +0,0 @@
1
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmlyZXN0aXRjaC9hcHAtbWVzc2FnZS8iLCJzb3VyY2VzIjpbImFwcC9tb2R1bGVzL2FwcC1tZXNzYWdlL3R5cGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3R5cGVzLnR5cGUnO1xuXG4iXX0=
@@ -1 +0,0 @@
1
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMudHlwZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmaXJlc3RpdGNoL2FwcC1tZXNzYWdlLyIsInNvdXJjZXMiOlsiYXBwL21vZHVsZXMvYXBwLW1lc3NhZ2UvdHlwZXMvdHlwZXMudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgdHlwZSBUZXN0TWVzc2FnZSA9IChtZXNzYWdlOiBhbnksIHJlY2lwaWVudDogc3RyaW5nLCB0eXBlOiAnc21zJyB8ICdlbWFpbCcpID0+IE9ic2VydmFibGU8YW55PjtcbmV4cG9ydCB0eXBlIExvYWRNZXNzYWdlID0gKG1lc3NhZ2U6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xuZXhwb3J0IHR5cGUgTG9hZE1lc3NhZ2VzID0gKHF1ZXJ5OiBhbnkpID0+IE9ic2VydmFibGU8eyBkYXRhOiBhbnlbXSwgcGFnaW5nOiBhbnkgfT47XG5leHBvcnQgdHlwZSBTYXZlTWVzc2FnZSA9IChtZXNzYWdlOiBhbnkpID0+IE9ic2VydmFibGU8YW55PjtcbmV4cG9ydCB0eXBlIExvYWRUZW1wbGF0ZXMgPSAoKSA9PiBPYnNlcnZhYmxlPGFueVtdPjtcbmV4cG9ydCB0eXBlIFRlc3RFbWFpbCA9ICgpID0+IHN0cmluZztcbmV4cG9ydCB0eXBlIExvYWRNZXNzYWdlUXVldWVzID0gKHF1ZXJ5OiBhbnkpID0+IE9ic2VydmFibGU8eyBkYXRhOiBhbnlbXSwgcGFnaW5nOiBhbnkgfT47XG5leHBvcnQgdHlwZSBMb2FkTWVzc2FnZVF1ZXVlRXZlbnRzID0gKG1lc3NhZ2VRdWV1ZTogYW55LCBxdWVyeTogYW55KSA9PiBPYnNlcnZhYmxlPHsgZGF0YTogYW55W10sIHBhZ2luZzogYW55IH0+O1xuZXhwb3J0IHR5cGUgTG9hZE1lc3NhZ2VRdWV1ZSA9IChtZXNzYWdlUXVldWU6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xuZXhwb3J0IHR5cGUgTG9hZExvZ3MgPSAobWVzc2FnZVF1ZXVlOiBhbnksIHF1ZXJ5OiBhbnkpID0+IE9ic2VydmFibGU8eyBkYXRhOiBhbnlbXSwgcGFnaW5nOiBhbnkgfT47XG5leHBvcnQgdHlwZSBMb2FkTWVzc2FnZVF1ZXVlQXR0YWNobWVudHMgPSAobWVzc2FnZVF1ZXVlOiBhbnksIHF1ZXJ5OiBhbnkpID0+IE9ic2VydmFibGU8eyBkYXRhOiBhbnlbXSwgcGFnaW5nOiBhbnkgfT47XG5leHBvcnQgdHlwZSBEb3dubG9hZE1lc3NhZ2VRdWV1ZUF0dGFjaG1lbnQgPSAobWVzc2FnZVF1ZXVlQXR0YWNobWVudDogYW55LCBtZXNzYWdlUXVldWU6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xuZXhwb3J0IHR5cGUgUmVzZW5kTWVzc2FnZVF1ZXVlID0gKG1lc3NhZ2VRdWV1ZTogYW55KSA9PiBPYnNlcnZhYmxlPGFueT47XG5leHBvcnQgdHlwZSBGb3J3YXJkTWVzc2FnZVF1ZXVlID0gKG1lc3NhZ2VRdWV1ZTogbnVtYmVyLCBlbWFpbDogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPGFueT47XG5leHBvcnQgdHlwZSBMb2FkTWVzc2FnZVRlbXBsYXRlcyA9IChxdWVyeT86IGFueSkgPT4gT2JzZXJ2YWJsZTx7IGRhdGE6IGFueVtdLCBwYWdpbmc6IGFueSB9PjtcbmV4cG9ydCB0eXBlIExvYWRNZXNzYWdlVGVtcGxhdGUgPSAobWVzc2FnZVRlbXBsYXRlOiBhbnkpID0+IE9ic2VydmFibGU8YW55W10+O1xuZXhwb3J0IHR5cGUgU2F2ZU1lc3NhZ2VUZW1wbGF0ZSA9IChtZXNzYWdlVGVtcGxhdGU6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xuZXhwb3J0IHR5cGUgRGVsZXRlTWVzc2FnZVRlbXBsYXRlID0gKG1lc3NhZ2VUZW1wbGF0ZTogYW55KSA9PiBPYnNlcnZhYmxlPGFueT47XG5leHBvcnQgdHlwZSBEZWxldGVXZWJob29rID0gKHdlYmhvb2s6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xuZXhwb3J0IHR5cGUgQ3JlYXRlV2ViaG9vayA9ICgpID0+IE9ic2VydmFibGU8YW55PjtcbmV4cG9ydCB0eXBlIExvYWRXZWJob29rcyA9ICgpID0+IE9ic2VydmFibGU8YW55PjtcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export * from './preview';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmlyZXN0aXRjaC9hcHAtbWVzc2FnZS8iLCJzb3VyY2VzIjpbImFwcC9tb2R1bGVzL21lc3NhZ2UtcHJldmlldy9jb21wb25lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wcmV2aWV3JztcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export * from './preview.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmlyZXN0aXRjaC9hcHAtbWVzc2FnZS8iLCJzb3VyY2VzIjpbImFwcC9tb2R1bGVzL21lc3NhZ2UtcHJldmlldy9jb21wb25lbnRzL3ByZXZpZXcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcHJldmlldy5jb21wb25lbnQnO1xuIl19
@@ -1,26 +0,0 @@
1
- import { __decorate, __metadata, __param } from "tslib";
2
- import { Component, Inject } from '@angular/core';
3
- import { MAT_DIALOG_DATA } from '@angular/material/dialog';
4
- var PreviewComponent = /** @class */ (function () {
5
- function PreviewComponent(_data) {
6
- this._data = _data;
7
- this.html = _data.html;
8
- this.styles = _data.styles;
9
- }
10
- PreviewComponent.prototype.ngOnInit = function () {
11
- };
12
- PreviewComponent.ctorParameters = function () { return [
13
- { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
14
- ]; };
15
- PreviewComponent = __decorate([
16
- Component({
17
- template: "<fs-dialog>\n <div mat-dialog-title>Preview</div>\n <mat-dialog-content>\n <fs-iframe\n [html]=\"html\"\n [styles]=\"styles\">\n </fs-iframe>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button mat-button [mat-dialog-close]=\"null\" color=\"primary\" type=\"button\">Done</button>\n </mat-dialog-actions>\n</fs-dialog>\n",
18
- styles: [""]
19
- }),
20
- __param(0, Inject(MAT_DIALOG_DATA)),
21
- __metadata("design:paramtypes", [Object])
22
- ], PreviewComponent);
23
- return PreviewComponent;
24
- }());
25
- export { PreviewComponent };
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmlyZXN0aXRjaC9hcHAtbWVzc2FnZS8iLCJzb3VyY2VzIjpbImFwcC9tb2R1bGVzL21lc3NhZ2UtcHJldmlldy9jb21wb25lbnRzL3ByZXZpZXcvcHJldmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQU8zRDtJQUtFLDBCQUNtQyxLQUFLO1FBQUwsVUFBSyxHQUFMLEtBQUssQ0FBQTtRQUV0QyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQzdCLENBQUM7SUFFTSxtQ0FBUSxHQUFmO0lBRUEsQ0FBQzs7Z0RBUkUsTUFBTSxTQUFDLGVBQWU7O0lBTmQsZ0JBQWdCO1FBSjVCLFNBQVMsQ0FBQztZQUNULHlXQUF1Qzs7U0FFeEMsQ0FBQztRQU9HLFdBQUEsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFBOztPQU5mLGdCQUFnQixDQWU1QjtJQUFELHVCQUFDO0NBQUEsQUFmRCxJQWVDO1NBZlksZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vcHJldmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ByZXZpZXcuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcmV2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgaHRtbDtcbiAgcHVibGljIHN0eWxlcztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHJpdmF0ZSBfZGF0YSxcbiAgKSB7XG4gICAgdGhpcy5odG1sID0gX2RhdGEuaHRtbDtcbiAgICB0aGlzLnN0eWxlcyA9IF9kYXRhLnN0eWxlcztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcblxuICB9XG59XG4iXX0=
@@ -1,30 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { NgModule } from '@angular/core';
3
- import { MatButtonModule } from '@angular/material/button';
4
- import { MatDialogModule } from '@angular/material/dialog';
5
- import { FsIFrameModule } from '@firestitch/iframe';
6
- import { FsDialogModule } from '@firestitch/dialog';
7
- import { PreviewComponent } from './components/preview';
8
- var FsAppMessagePreviewModule = /** @class */ (function () {
9
- function FsAppMessagePreviewModule() {
10
- }
11
- FsAppMessagePreviewModule = __decorate([
12
- NgModule({
13
- imports: [
14
- MatDialogModule,
15
- MatButtonModule,
16
- FsDialogModule,
17
- FsIFrameModule,
18
- ],
19
- declarations: [
20
- PreviewComponent,
21
- ],
22
- exports: [
23
- PreviewComponent,
24
- ]
25
- })
26
- ], FsAppMessagePreviewModule);
27
- return FsAppMessagePreviewModule;
28
- }());
29
- export { FsAppMessagePreviewModule };
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1wcmV2aWV3Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmaXJlc3RpdGNoL2FwcC1tZXNzYWdlLyIsInNvdXJjZXMiOlsiYXBwL21vZHVsZXMvbWVzc2FnZS1wcmV2aWV3L21lc3NhZ2UtcHJldmlldy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBa0J4RDtJQUFBO0lBQ0EsQ0FBQztJQURZLHlCQUF5QjtRQWZyQyxRQUFRLENBQUM7WUFDUixPQUFPLEVBQUU7Z0JBQ1AsZUFBZTtnQkFDZixlQUFlO2dCQUVmLGNBQWM7Z0JBQ2QsY0FBYzthQUNmO1lBQ0QsWUFBWSxFQUFFO2dCQUNaLGdCQUFnQjthQUNqQjtZQUNELE9BQU8sRUFBRTtnQkFDUCxnQkFBZ0I7YUFDakI7U0FDRixDQUFDO09BQ1cseUJBQXlCLENBQ3JDO0lBQUQsZ0NBQUM7Q0FBQSxBQURELElBQ0M7U0FEWSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgRnNJRnJhbWVNb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9pZnJhbWUnO1xuaW1wb3J0IHsgRnNEaWFsb2dNb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3ByZXZpZXcnO1xuXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBNYXREaWFsb2dNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuXG4gICAgRnNEaWFsb2dNb2R1bGUsXG4gICAgRnNJRnJhbWVNb2R1bGUsXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFByZXZpZXdDb21wb25lbnQsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBQcmV2aWV3Q29tcG9uZW50LFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZzQXBwTWVzc2FnZVByZXZpZXdNb2R1bGUge1xufVxuIl19