@firestitch/app-message 9.0.1 → 9.0.5

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.
@@ -1 +1 @@
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/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-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/components/queue/queue.component.ts","ng://@firestitch/app-message/app/modules/message-queues/components/queues/queues.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/components/recipient/recipient.component.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/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","EmailMessageFormats","name","value","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","EmailMessageQueueFormat","MessageQueueType","MessageQueueState","MessagesComponent","list","config","_destroy$","Subject","filters","ItemType","Keyword","fetch","query","loadMessages","map","paging","afterClosed","takeUntil","updateData","row","ngOnDestroy","next","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","MessageQueueStates","Sent","PartiallySent","Sending","Queued","Canceled","InvalidRecipients","Failed","QueueComponent","emailMessageQueueFormat","messageQueueStates","resendMessageQueue","forwardMessageQueue","loadMessageQueue","messageQueue","emailMessageQueue","format","doc","DOMParser","parseFromString","querySelectorAll","el","setAttribute","documentElement","innerHTML","e","anchorme","smsMessageQueue","messageQueueRecipients","reduce","accum","messageQueueRecipient","recipient","state","_setLogsConfig","_setAttachmentsConfig","options","attributes","openMessage","resend","confirm","logList","reload","forward","Email","logConfig","loadMore","queryParam","loadLogs","attachmentConfig","loadMessageQueueAttachments","prettyFilesize","_prettyFilesize","filesize","downloadMessageQueueAttachment","rowActions","click","messageAttachment","bytes","Math","floor","log","pow","toFixed","charAt","QueuesComponent","Select","values","DateRange","sort","direction","messageQueueAttachmentCounts","emailMessageQueues","emailMessageQueueBodies","smsMessageQueues","loadMessageQueues","cancelMessageQueues","selection","selectAll","actions","actionSelected","action","push","SelectionActionType","Action","items","LinkifyPipe","transform","Pipe","TruncatePipe","limit","completeWords","ellipsis","substr","lastIndexOf","RecipientComponent","icon","S","tooltip","E","F","Input","FsAppMessageQueuesModule","MatIconModule","FsDateModule","FsPromptInputModule","TemplateComponent","_dialogRef","htmlEditorconfig","language","insertSpaces","tabSize","cssEditorconfig","saveMessageTemplate","submitter","close","loadMessageTemplate","MatDialogRef","TemplatesComponent","status","deleteMessageTemplate","remove","menu","FsAppMessageTemplatesModule","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 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 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\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((response) => {\n if (response) {\n this.list.updateData(\n response,\n (row: any) => {\n return row.id === response.id;\n });\n }\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","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 } 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';\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\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.messageQueue.id)\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 });\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 _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 { Component, Inject, 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 { QueueComponent } from '../queue';\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';\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 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 ) { }\n\n public ngOnInit() {\n\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 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 if (this._config.loadMessages) {\n this.config.filters.push({\n name: 'message_id',\n type: ItemType.Select,\n label: 'Message Type',\n values: (query) => {\n return this._config.loadMessages(query)\n .pipe(\n map((items: any) => {\n return items.map((item) => ({ name: item.name, value: item.id }));\n })\n )\n }\n });\n }\n }\n\n public open(messageQueue) {\n const dialogRef = this._dialog.open(QueueComponent, {\n data: {\n messageQueue: messageQueue,\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 { 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 {\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 { 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\nimport { FsAppMessagesModule } from '../messages/messages.module';\nimport { QueuesComponent } from './components/queues/queues.component';\nimport { QueueComponent } from './components/queue/queue.component';\nimport { LinkifyPipe } from './pipes/linkify.pipe';\nimport { TruncatePipe } from './pipes/truncate.pipe';\nimport { RecipientComponent } from './components';\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 ],\n declarations: [\n QueuesComponent,\n QueueComponent,\n LinkifyPipe,\n TruncatePipe,\n RecipientComponent,\n ],\n exports: [\n QueuesComponent,\n QueueComponent,\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 { 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
+ {"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/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-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/components/queue/queue.component.ts","ng://@firestitch/app-message/app/modules/message-queues/components/queues/queues.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/components/recipient/recipient.component.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/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","EmailMessageQueueFormat","MessageQueueType","MessageQueueState","MessagesComponent","list","config","_destroy$","Subject","filters","ItemType","Keyword","fetch","query","loadMessages","map","paging","afterClosed","takeUntil","updateData","row","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","MessageQueueStates","Sent","PartiallySent","Sending","Queued","Canceled","InvalidRecipients","Failed","QueueComponent","messageQueueRecipients","emailMessageQueueFormat","messageQueueStates","resendMessageQueue","forwardMessageQueue","loadMessageQueue","messageQueue","emailMessageQueue","format","doc","DOMParser","parseFromString","querySelectorAll","el","setAttribute","documentElement","innerHTML","anchorme","smsMessageQueue","reduce","accum","messageQueueRecipient","recipient","state","_setLogsConfig","_setAttachmentsConfig","options","attributes","openMessage","resend","confirm","logList","reload","forward","Email","logConfig","loadMore","queryParam","loadLogs","attachmentConfig","loadMessageQueueAttachments","prettyFilesize","_prettyFilesize","filesize","downloadMessageQueueAttachment","rowActions","click","messageAttachment","bytes","Math","floor","log","pow","toFixed","charAt","QueuesComponent","Select","values","DateRange","sort","direction","messageQueueAttachmentCounts","emailMessageQueues","emailMessageQueueBodies","smsMessageQueues","loadMessageQueues","cancelMessageQueues","selection","selectAll","actions","actionSelected","action","SelectionActionType","Action","limit","__spread","Input","LinkifyPipe","transform","Pipe","TruncatePipe","completeWords","ellipsis","substr","lastIndexOf","RecipientComponent","icon","S","tooltip","E","F","FsAppMessageQueuesModule","MatIconModule","FsDateModule","FsPromptInputModule","TemplateComponent","_dialogRef","htmlEditorconfig","language","insertSpaces","tabSize","cssEditorconfig","saveMessageTemplate","submitter","close","loadMessageTemplate","MatDialogRef","TemplatesComponent","status","deleteMessageTemplate","remove","menu","FsAppMessageTemplatesModule","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 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 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\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((response) => {\n if (response) {\n this.list.updateData(\n response,\n (row: any) => {\n return row.id === response.id;\n });\n }\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","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 } 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';\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\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.messageQueue.id)\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 });\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 _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 { 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 { QueueComponent } from '../queue';\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';\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 ) { }\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._dialog.open(QueueComponent, {\n data: {\n messageQueue: messageQueue,\n },\n width: '85%'\n })\n .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 { 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 {\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 { 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\nimport { FsAppMessagesModule } from '../messages/messages.module';\nimport { QueuesComponent } from './components/queues/queues.component';\nimport { QueueComponent } from './components/queue/queue.component';\nimport { LinkifyPipe } from './pipes/linkify.pipe';\nimport { TruncatePipe } from './pipes/truncate.pipe';\nimport { RecipientComponent } from './components';\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 ],\n declarations: [\n QueuesComponent,\n QueueComponent,\n LinkifyPipe,\n TruncatePipe,\n RecipientComponent,\n ],\n exports: [\n QueuesComponent,\n QueueComponent,\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 { 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"]}
@@ -20,6 +20,7 @@ let QueueComponent = class QueueComponent {
20
20
  this._prompt = _prompt;
21
21
  this._dialog = _dialog;
22
22
  this._data = _data;
23
+ this.messageQueueRecipients = {};
23
24
  this.emailMessageQueueFormat = EmailMessageQueueFormat;
24
25
  this._destroy$ = new Subject();
25
26
  }
@@ -183,4 +184,4 @@ QueueComponent = __decorate([
183
184
  MatDialog, Object])
184
185
  ], QueueComponent);
185
186
  export { QueueComponent };
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvYXBwLW1lc3NhZ2UvIiwic291cmNlcyI6WyJhcHAvbW9kdWxlcy9tZXNzYWdlLXF1ZXVlcy9jb21wb25lbnRzL3F1ZXVlL3F1ZXVlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFBVSxNQUFNLEVBQWEsU0FBUyxHQUNoRCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLFFBQVEsTUFBTSxVQUFVLENBQUM7QUFFaEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBU3ZFLElBQWEsY0FBYyxHQUEzQixNQUFhLGNBQWM7SUFpQnpCLFlBQ3lDLE9BQTJCLEVBQzFELFFBQW1CLEVBQ25CLE9BQWlCLEVBQ2pCLE9BQWtCLEVBQ08s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QUFDLEdBQUcsR0FBRyxDQUFDO0lBQ2pGLENBQUM7Q0FDRixDQUFBOzs0Q0F2S0ksTUFBTSxTQUFDLHFCQUFxQjtZQUNYLFNBQVM7WUFDVixRQUFRO1lBQ1IsU0FBUzs0Q0FDekIsTUFBTSxTQUFDLGVBQWU7O0FBbkJ6QjtJQURDLFNBQVMsQ0FBQyxTQUFTLENBQUM7OEJBQ0wsZUFBZTsrQ0FBQztBQUhyQixjQUFjO0lBSjFCLFNBQVMsQ0FBQztRQUNULHVwUEFBcUM7O0tBRXRDLENBQUM7SUFtQkcsV0FBQSxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQTtJQUk3QixXQUFBLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQTs2Q0FITixTQUFTO1FBQ1YsUUFBUTtRQUNSLFNBQVM7R0FyQmpCLGNBQWMsQ0F5TDFCO1NBekxZLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgRnNNZXNzYWdlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbWVzc2FnZSc7XG5pbXBvcnQgeyBGc1Byb21wdCB9IGZyb20gJ0BmaXJlc3RpdGNoL3Byb21wdCc7XG5pbXBvcnQgeyBGc0xpc3RDb21wb25lbnQsIEZzTGlzdENvbmZpZyB9IGZyb20gJ0BmaXJlc3RpdGNoL2xpc3QnO1xuXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCBhbmNob3JtZSBmcm9tICdhbmNob3JtZSc7XG5cbmltcG9ydCB7IEVtYWlsTWVzc2FnZVF1ZXVlRm9ybWF0IH0gZnJvbSAnLi4vLi4vZW51bXMnO1xuaW1wb3J0IHsgTWVzc2FnZVF1ZXVlU3RhdGVzIH0gZnJvbSAnLi4vLi4vY29uc3RzJztcbmltcG9ydCB7IGluZGV4TmFtZVZhbHVlIH0gZnJvbSAnLi4vLi4vLi4vLi4vaGVscGVycyc7XG5pbXBvcnQgeyBNZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kdWxlcy9tZXNzYWdlcy9jb21wb25lbnRzJztcbmltcG9ydCB7IE1lc3NhZ2VRdWV1ZVR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBGU19BUFBfTUVTU0FHRV9DT05GSUcgfSBmcm9tICcuLi8uLi8uLi9hcHAtbWVzc2FnZS9pbmplY3RvcnMnO1xuaW1wb3J0IHsgRnNBcHBNZXNzYWdlQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vYXBwLW1lc3NhZ2UvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBSZXNlbmRNZXNzYWdlUXVldWUsIEZvcndhcmRNZXNzYWdlUXVldWUsIExvYWRNZXNzYWdlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLW1lc3NhZ2UvdHlwZXMnO1xuXG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vcXVldWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9xdWV1ZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBRdWV1ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBAVmlld0NoaWxkKCdsb2dMaXN0JylcbiAgcHVibGljIGxvZ0xpc3Q6IEZzTGlzdENvbXBvbmVudDtcblxuICBwdWJsaWMgbWVzc2FnZVF1ZXVlO1xuICBwdWJsaWMgbG9hZE1lc3NhZ2U6IExvYWRNZXNzYWdlO1xuICBwdWJsaWMgcmVzZW5kTWVzc2FnZVF1ZXVlOiBSZXNlbmRNZXNzYWdlUXVldWU7XG4gIHB1YmxpYyBmb3J3YXJkTWVzc2FnZVF1ZXVlOiBGb3J3YXJkTWVzc2FnZVF1ZXVlO1xuICBwdWJsaWMgbWVzc2FnZVF1ZXVlUmVjaXBpZW50cztcbiAgcHVibGljIGVtYWlsTWVzc2FnZVF1ZXVlRm9ybWF0ID0gRW1haWxNZXNzYWdlUXVldWVGb3JtYXQ7XG4gIHB1YmxpYyBtZXNzYWdlUXVldWVTdGF0ZXM7XG4gIHB1YmxpYyBsb2dDb25maWc6IEZzTGlzdENvbmZpZztcbiAgcHVibGljIGF0dGFjaG1lbnRDb25maWc6IEZzTGlzdENvbmZpZztcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChGU19BUFBfTUVTU0FHRV9DT05GSUcpIHByaXZhdGUgX2NvbmZpZzogRnNBcHBNZXNzYWdlQ29uZmlnLFxuICAgIHByaXZhdGUgX21lc3NhZ2U6IEZzTWVzc2FnZSxcbiAgICBwcml2YXRlIF9wcm9tcHQ6IEZzUHJvbXB0LFxuICAgIHByaXZhdGUgX2RpYWxvZzogTWF0RGlhbG9nLFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwcml2YXRlIF9kYXRhLFxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm1lc3NhZ2VRdWV1ZVN0YXRlcyA9IGluZGV4TmFtZVZhbHVlKE1lc3NhZ2VRdWV1ZVN0YXRlcyk7XG4gICAgdGhpcy5yZXNlbmRNZXNzYWdlUXVldWUgPSB0aGlzLl9jb25maWcucmVzZW5kTWVzc2FnZVF1ZXVlO1xuICAgIHRoaXMuZm9yd2FyZE1lc3NhZ2VRdWV1ZSA9IHRoaXMuX2NvbmZpZy5mb3J3YXJkTWVzc2FnZVF1ZXVlO1xuICAgIFxuICAgIHRoaXMuX2NvbmZpZy5sb2FkTWVzc2FnZVF1ZXVlKHRoaXMuX2RhdGEubWVzc2FnZVF1ZXVlLmlkKVxuICAgIC5zdWJzY3JpYmUoKG1lc3NhZ2VRdWV1ZSkgPT4ge1xuICAgICAgdGhpcy5tZXNzYWdlUXVldWUgPSBtZXNzYWdlUXVldWU7XG5cbiAgICAgIGlmICh0aGlzLm1lc3NhZ2VRdWV1ZS5lbWFpbE1lc3NhZ2VRdWV1ZSkge1xuICAgICAgICBsZXQgYm9keSA9IHRoaXMubWVzc2FnZVF1ZXVlLmVtYWlsTWVzc2FnZVF1ZXVlLmJvZHk7XG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2VRdWV1ZS5lbWFpbE1lc3NhZ2VRdWV1ZS5mb3JtYXQgPT09IEVtYWlsTWVzc2FnZVF1ZXVlRm9ybWF0LkhUTUwpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZG9jID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhib2R5LCAndGV4dC9odG1sJyk7XG5cbiAgICAgICAgICAgIGRvYy5xdWVyeVNlbGVjdG9yQWxsKCdhJykuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCd0YXJnZXQnLCAnX2JsYW5rJyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgYm9keSA9IGRvYy5kb2N1bWVudEVsZW1lbnQuaW5uZXJIVE1MO1xuXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBib2R5ID0gdGhpcy5hbmNob3JtZShib2R5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubWVzc2FnZVF1ZXVlLmVtYWlsTWVzc2FnZVF1ZXVlLmJvZHkgPSBib2R5O1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5tZXNzYWdlUXVldWUuc21zTWVzc2FnZVF1ZXVlKSB7XG4gICAgICAgIHRoaXMubWVzc2FnZVF1ZXVlLnNtc01lc3NhZ2VRdWV1ZS5ib2R5ID0gdGhpcy5hbmNob3JtZSh0aGlzLm1lc3NhZ2VRdWV1ZS5zbXNNZXNzYWdlUXVldWUuYm9keSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubWVzc2FnZVF1ZXVlUmVjaXBpZW50cyA9IHRoaXMubWVzc2FnZVF1ZXVlLm1lc3NhZ2VRdWV1ZVJlY2lwaWVudHNcbiAgICAgICAgLnJlZHVjZSgoYWNjdW0sIG1lc3NhZ2VRdWV1ZVJlY2lwaWVudCkgPT4ge1xuICAgICAgICAgIGFjY3VtW21lc3NhZ2VRdWV1ZVJlY2lwaWVudC5yZWNpcGllbnRdID0gbWVzc2FnZVF1ZXVlUmVjaXBpZW50LnN0YXRlO1xuXG4gICAgICAgICAgcmV0dXJuIGFjY3VtO1xuICAgICAgICB9LCB7fSk7XG5cbiAgICAgIHRoaXMuX3NldExvZ3NDb25maWcobWVzc2FnZVF1ZXVlKTtcbiAgICAgIHRoaXMuX3NldEF0dGFjaG1lbnRzQ29uZmlnKG1lc3NhZ2VRdWV1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYW5jaG9ybWUoaHRtbCkge1xuICAgIHJldHVybiBhbmNob3JtZShodG1sLCB7XG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIGF0dHJpYnV0ZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAndGFyZ2V0JyxcbiAgICAgICAgICAgIHZhbHVlOiAnX2JsYW5rJ1xuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9wZW5NZXNzYWdlKG1lc3NhZ2UpIHtcbiAgICB0aGlzLl9kaWFsb2cub3BlbihNZXNzYWdlQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICB9LFxuICAgICAgd2lkdGg6ICc4NSUnXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVzZW5kKCkge1xuICAgIHRoaXMuX3Byb21wdC5jb25maXJtKHtcbiAgICAgIHRpdGxlOiAnQ29uZmlybScsXG4gICAgICB0ZW1wbGF0ZTogJ0FyZSB5b3Ugc3VyZSB5b3Ugd291bGQgbGlrZSB0byByZXNlbmQgdGhpcyBtZXNzYWdlPydcbiAgICB9KS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZXNlbmRNZXNzYWdlUXVldWUodGhpcy5tZXNzYWdlUXVldWUpXG4gICAgICAuc3Vic2NyaWJlKG1lc3NhZ2VRdWV1ZSA9PiB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5tZXNzYWdlUXVldWUsIG1lc3NhZ2VRdWV1ZSk7XG4gICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnU3VjY2Vzc2Z1bGx5IHJlc2VudCcpO1xuXG4gICAgICAgIGlmICh0aGlzLmxvZ0xpc3QpIHtcbiAgICAgICAgICB0aGlzLmxvZ0xpc3QucmVsb2FkKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGZvcndhcmQoKSB7XG4gICAgY29uc3QgdHlwZU5hbWUgPSB0aGlzLm1lc3NhZ2VRdWV1ZS50eXBlID09PSBNZXNzYWdlUXVldWVUeXBlLkVtYWlsID8gJ2FuIGVtYWlsJyA6ICdhIHBob25lIG51bWJlcic7XG5cbiAgICB0aGlzLl9wcm9tcHQuaW5wdXQoe1xuICAgICAgbGFiZWw6IGBQbGVhc2UgZW50ZXIgJHt0eXBlTmFtZX0gdG8gZm9yd2FyZCB0b2AsXG4gICAgICB0aXRsZTogJ0ZvcndhcmQgTWVzc2FnZScsXG4gICAgICBjb21taXRMYWJlbDogJ0ZvcndhcmQnLFxuICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICB9KS5zdWJzY3JpYmUoKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICB0aGlzLmZvcndhcmRNZXNzYWdlUXVldWUodGhpcy5tZXNzYWdlUXVldWUsIHZhbHVlKVxuICAgICAgICAuc3Vic2NyaWJlKG1lc3NhZ2VRdWV1ZSA9PiB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlUXVldWUgPSB7XG4gICAgICAgICAgICAuLi50aGlzLm1lc3NhZ2VRdWV1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2VRdWV1ZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnU3VjY2Vzc2Z1bGx5IGZvcndhcmRlZCcpO1xuXG4gICAgICAgICAgaWYgKHRoaXMubG9nTGlzdCkge1xuICAgICAgICAgICAgdGhpcy5sb2dMaXN0LnJlbG9hZCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRMb2dzQ29uZmlnKG1lc3NhZ2VRdWV1ZSkge1xuICAgIHRoaXMubG9nQ29uZmlnID0ge1xuICAgICAgbG9hZE1vcmU6IHRydWUsXG4gICAgICBxdWVyeVBhcmFtOiBmYWxzZSxcbiAgICAgIGZldGNoOiBxdWVyeSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25maWcubG9hZExvZ3MobWVzc2FnZVF1ZXVlLCBxdWVyeSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0QXR0YWNobWVudHNDb25maWcobWVzc2FnZVF1ZXVlKSB7XG4gICAgdGhpcy5hdHRhY2htZW50Q29uZmlnID0ge1xuICAgICAgcXVlcnlQYXJhbTogZmFsc2UsXG4gICAgICBmZXRjaDogcXVlcnkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnLmxvYWRNZXNzYWdlUXVldWVBdHRhY2htZW50cyhtZXNzYWdlUXVldWUsIHF1ZXJ5KVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKHJlc3BvbnNlID0+ICh7XG4gICAgICAgICAgICAgIGRhdGE6IHJlc3BvbnNlLmRhdGEubWFwKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICB2YWx1ZS5wcmV0dHlGaWxlc2l6ZSA9IHRoaXMuX3ByZXR0eUZpbGVzaXplKHZhbHVlLmZpbGVzaXplKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICAgIH0pLCBwYWdpbmc6IHJlc3BvbnNlLnBhZ2luZ1xuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuX2NvbmZpZy5kb3dubG9hZE1lc3NhZ2VRdWV1ZUF0dGFjaG1lbnQpIHtcbiAgICAgIHRoaXMuYXR0YWNobWVudENvbmZpZy5yb3dBY3Rpb25zID0gW1xuICAgICAgICB7XG4gICAgICAgICAgY2xpY2s6IChtZXNzYWdlQXR0YWNobWVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY29uZmlnLmRvd25sb2FkTWVzc2FnZVF1ZXVlQXR0YWNobWVudChtZXNzYWdlQXR0YWNobWVudCwgdGhpcy5tZXNzYWdlUXVldWUpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgbGFiZWw6ICdEb3dubG9hZCcsXG4gICAgICAgIH1cbiAgICAgIF07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcHJldHR5RmlsZXNpemUoYnl0ZXMpIHtcbiAgICBpZiAoYnl0ZXMgPT09IDApIHsgcmV0dXJuICcwLjAwIEInOyB9XG4gICAgY29uc3QgZSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coMTAyNCkpO1xuICAgIHJldHVybiAoYnl0ZXMgLyBNYXRoLnBvdygxMDI0LCBlKSkudG9GaXhlZCgyKSArICcgJyArICcgS01HVFAnLmNoYXJBdChlKSArICdCJztcbiAgfVxufVxuIl19
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvYXBwLW1lc3NhZ2UvIiwic291cmNlcyI6WyJhcHAvbW9kdWxlcy9tZXNzYWdlLXF1ZXVlcy9jb21wb25lbnRzL3F1ZXVlL3F1ZXVlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFBVSxNQUFNLEVBQWEsU0FBUyxHQUNoRCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLFFBQVEsTUFBTSxVQUFVLENBQUM7QUFFaEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBU3ZFLElBQWEsY0FBYyxHQUEzQixNQUFhLGNBQWM7SUFpQnpCLFlBQ3lDLE9BQTJCLEVBQzFELFFBQW1CLEVBQ25CLE9BQWlCLEVBQ2pCLE9BQWtCLEVBQ08s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RyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNqRixDQUFDO0NBQ0YsQ0FBQTs7NENBdktJLE1BQU0sU0FBQyxxQkFBcUI7WUFDWCxTQUFTO1lBQ1YsUUFBUTtZQUNSLFNBQVM7NENBQ3pCLE1BQU0sU0FBQyxlQUFlOztBQW5CekI7SUFEQyxTQUFTLENBQUMsU0FBUyxDQUFDOzhCQUNMLGVBQWU7K0NBQUM7QUFIckIsY0FBYztJQUoxQixTQUFTLENBQUM7UUFDVCx1cFBBQXFDOztLQUV0QyxDQUFDO0lBbUJHLFdBQUEsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUE7SUFJN0IsV0FBQSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7NkNBSE4sU0FBUztRQUNWLFFBQVE7UUFDUixTQUFTO0dBckJqQixjQUFjLENBeUwxQjtTQXpMWSxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LCBPbkluaXQsIEluamVjdCwgT25EZXN0cm95LCBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEZzTWVzc2FnZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xuaW1wb3J0IHsgRnNQcm9tcHQgfSBmcm9tICdAZmlyZXN0aXRjaC9wcm9tcHQnO1xuaW1wb3J0IHsgRnNMaXN0Q29tcG9uZW50LCBGc0xpc3RDb25maWcgfSBmcm9tICdAZmlyZXN0aXRjaC9saXN0JztcblxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgYW5jaG9ybWUgZnJvbSAnYW5jaG9ybWUnO1xuXG5pbXBvcnQgeyBFbWFpbE1lc3NhZ2VRdWV1ZUZvcm1hdCB9IGZyb20gJy4uLy4uL2VudW1zJztcbmltcG9ydCB7IE1lc3NhZ2VRdWV1ZVN0YXRlcyB9IGZyb20gJy4uLy4uL2NvbnN0cyc7XG5pbXBvcnQgeyBpbmRleE5hbWVWYWx1ZSB9IGZyb20gJy4uLy4uLy4uLy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgTWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZHVsZXMvbWVzc2FnZXMvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBNZXNzYWdlUXVldWVUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xuaW1wb3J0IHsgRlNfQVBQX01FU1NBR0VfQ09ORklHIH0gZnJvbSAnLi4vLi4vLi4vYXBwLW1lc3NhZ2UvaW5qZWN0b3JzJztcbmltcG9ydCB7IEZzQXBwTWVzc2FnZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2FwcC1tZXNzYWdlL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUmVzZW5kTWVzc2FnZVF1ZXVlLCBGb3J3YXJkTWVzc2FnZVF1ZXVlLCBMb2FkTWVzc2FnZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1tZXNzYWdlL3R5cGVzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL3F1ZXVlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcXVldWUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUXVldWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQFZpZXdDaGlsZCgnbG9nTGlzdCcpXG4gIHB1YmxpYyBsb2dMaXN0OiBGc0xpc3RDb21wb25lbnQ7XG5cbiAgcHVibGljIG1lc3NhZ2VRdWV1ZTtcbiAgcHVibGljIGxvYWRNZXNzYWdlOiBMb2FkTWVzc2FnZTtcbiAgcHVibGljIHJlc2VuZE1lc3NhZ2VRdWV1ZTogUmVzZW5kTWVzc2FnZVF1ZXVlO1xuICBwdWJsaWMgZm9yd2FyZE1lc3NhZ2VRdWV1ZTogRm9yd2FyZE1lc3NhZ2VRdWV1ZTtcbiAgcHVibGljIG1lc3NhZ2VRdWV1ZVJlY2lwaWVudHMgPSB7fTtcbiAgcHVibGljIGVtYWlsTWVzc2FnZVF1ZXVlRm9ybWF0ID0gRW1haWxNZXNzYWdlUXVldWVGb3JtYXQ7XG4gIHB1YmxpYyBtZXNzYWdlUXVldWVTdGF0ZXM7XG4gIHB1YmxpYyBsb2dDb25maWc6IEZzTGlzdENvbmZpZztcbiAgcHVibGljIGF0dGFjaG1lbnRDb25maWc6IEZzTGlzdENvbmZpZztcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChGU19BUFBfTUVTU0FHRV9DT05GSUcpIHByaXZhdGUgX2NvbmZpZzogRnNBcHBNZXNzYWdlQ29uZmlnLFxuICAgIHByaXZhdGUgX21lc3NhZ2U6IEZzTWVzc2FnZSxcbiAgICBwcml2YXRlIF9wcm9tcHQ6IEZzUHJvbXB0LFxuICAgIHByaXZhdGUgX2RpYWxvZzogTWF0RGlhbG9nLFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwcml2YXRlIF9kYXRhLFxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm1lc3NhZ2VRdWV1ZVN0YXRlcyA9IGluZGV4TmFtZVZhbHVlKE1lc3NhZ2VRdWV1ZVN0YXRlcyk7XG4gICAgdGhpcy5yZXNlbmRNZXNzYWdlUXVldWUgPSB0aGlzLl9jb25maWcucmVzZW5kTWVzc2FnZVF1ZXVlO1xuICAgIHRoaXMuZm9yd2FyZE1lc3NhZ2VRdWV1ZSA9IHRoaXMuX2NvbmZpZy5mb3J3YXJkTWVzc2FnZVF1ZXVlO1xuXG4gICAgdGhpcy5fY29uZmlnLmxvYWRNZXNzYWdlUXVldWUodGhpcy5fZGF0YS5tZXNzYWdlUXVldWUuaWQpXG4gICAgLnN1YnNjcmliZSgobWVzc2FnZVF1ZXVlKSA9PiB7XG4gICAgICB0aGlzLm1lc3NhZ2VRdWV1ZSA9IG1lc3NhZ2VRdWV1ZTtcblxuICAgICAgaWYgKHRoaXMubWVzc2FnZVF1ZXVlLmVtYWlsTWVzc2FnZVF1ZXVlKSB7XG4gICAgICAgIGxldCBib2R5ID0gdGhpcy5tZXNzYWdlUXVldWUuZW1haWxNZXNzYWdlUXVldWUuYm9keTtcbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZVF1ZXVlLmVtYWlsTWVzc2FnZVF1ZXVlLmZvcm1hdCA9PT0gRW1haWxNZXNzYWdlUXVldWVGb3JtYXQuSFRNTCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBkb2MgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGJvZHksICd0ZXh0L2h0bWwnKTtcblxuICAgICAgICAgICAgZG9jLnF1ZXJ5U2VsZWN0b3JBbGwoJ2EnKS5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3RhcmdldCcsICdfYmxhbmsnKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBib2R5ID0gZG9jLmRvY3VtZW50RWxlbWVudC5pbm5lckhUTUw7XG5cbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJvZHkgPSB0aGlzLmFuY2hvcm1lKGJvZHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5tZXNzYWdlUXVldWUuZW1haWxNZXNzYWdlUXVldWUuYm9keSA9IGJvZHk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm1lc3NhZ2VRdWV1ZS5zbXNNZXNzYWdlUXVldWUpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlUXVldWUuc21zTWVzc2FnZVF1ZXVlLmJvZHkgPSB0aGlzLmFuY2hvcm1lKHRoaXMubWVzc2FnZVF1ZXVlLnNtc01lc3NhZ2VRdWV1ZS5ib2R5KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5tZXNzYWdlUXVldWVSZWNpcGllbnRzID0gdGhpcy5tZXNzYWdlUXVldWUubWVzc2FnZVF1ZXVlUmVjaXBpZW50c1xuICAgICAgICAucmVkdWNlKChhY2N1bSwgbWVzc2FnZVF1ZXVlUmVjaXBpZW50KSA9PiB7XG4gICAgICAgICAgYWNjdW1bbWVzc2FnZVF1ZXVlUmVjaXBpZW50LnJlY2lwaWVudF0gPSBtZXNzYWdlUXVldWVSZWNpcGllbnQuc3RhdGU7XG5cbiAgICAgICAgICByZXR1cm4gYWNjdW07XG4gICAgICAgIH0sIHt9KTtcblxuICAgICAgdGhpcy5fc2V0TG9nc0NvbmZpZyhtZXNzYWdlUXVldWUpO1xuICAgICAgdGhpcy5fc2V0QXR0YWNobWVudHNDb25maWcobWVzc2FnZVF1ZXVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhbmNob3JtZShodG1sKSB7XG4gICAgcmV0dXJuIGFuY2hvcm1lKGh0bWwsIHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgYXR0cmlidXRlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICd0YXJnZXQnLFxuICAgICAgICAgICAgdmFsdWU6ICdfYmxhbmsnXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb3Blbk1lc3NhZ2UobWVzc2FnZSkge1xuICAgIHRoaXMuX2RpYWxvZy5vcGVuKE1lc3NhZ2VDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIH0sXG4gICAgICB3aWR0aDogJzg1JSdcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZXNlbmQoKSB7XG4gICAgdGhpcy5fcHJvbXB0LmNvbmZpcm0oe1xuICAgICAgdGl0bGU6ICdDb25maXJtJyxcbiAgICAgIHRlbXBsYXRlOiAnQXJlIHlvdSBzdXJlIHlvdSB3b3VsZCBsaWtlIHRvIHJlc2VuZCB0aGlzIG1lc3NhZ2U/J1xuICAgIH0pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlc2VuZE1lc3NhZ2VRdWV1ZSh0aGlzLm1lc3NhZ2VRdWV1ZSlcbiAgICAgIC5zdWJzY3JpYmUobWVzc2FnZVF1ZXVlID0+IHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm1lc3NhZ2VRdWV1ZSwgbWVzc2FnZVF1ZXVlKTtcbiAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdTdWNjZXNzZnVsbHkgcmVzZW50Jyk7XG5cbiAgICAgICAgaWYgKHRoaXMubG9nTGlzdCkge1xuICAgICAgICAgIHRoaXMubG9nTGlzdC5yZWxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZm9yd2FyZCgpIHtcbiAgICBjb25zdCB0eXBlTmFtZSA9IHRoaXMubWVzc2FnZVF1ZXVlLnR5cGUgPT09IE1lc3NhZ2VRdWV1ZVR5cGUuRW1haWwgPyAnYW4gZW1haWwnIDogJ2EgcGhvbmUgbnVtYmVyJztcblxuICAgIHRoaXMuX3Byb21wdC5pbnB1dCh7XG4gICAgICBsYWJlbDogYFBsZWFzZSBlbnRlciAke3R5cGVOYW1lfSB0byBmb3J3YXJkIHRvYCxcbiAgICAgIHRpdGxlOiAnRm9yd2FyZCBNZXNzYWdlJyxcbiAgICAgIGNvbW1pdExhYmVsOiAnRm9yd2FyZCcsXG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH0pLnN1YnNjcmliZSgodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuZm9yd2FyZE1lc3NhZ2VRdWV1ZSh0aGlzLm1lc3NhZ2VRdWV1ZSwgdmFsdWUpXG4gICAgICAgIC5zdWJzY3JpYmUobWVzc2FnZVF1ZXVlID0+IHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VRdWV1ZSA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMubWVzc2FnZVF1ZXVlLFxuICAgICAgICAgICAgbWVzc2FnZVF1ZXVlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdTdWNjZXNzZnVsbHkgZm9yd2FyZGVkJyk7XG5cbiAgICAgICAgICBpZiAodGhpcy5sb2dMaXN0KSB7XG4gICAgICAgICAgICB0aGlzLmxvZ0xpc3QucmVsb2FkKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldExvZ3NDb25maWcobWVzc2FnZVF1ZXVlKSB7XG4gICAgdGhpcy5sb2dDb25maWcgPSB7XG4gICAgICBsb2FkTW9yZTogdHJ1ZSxcbiAgICAgIHF1ZXJ5UGFyYW06IGZhbHNlLFxuICAgICAgZmV0Y2g6IHF1ZXJ5ID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5sb2FkTG9ncyhtZXNzYWdlUXVldWUsIHF1ZXJ5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXRBdHRhY2htZW50c0NvbmZpZyhtZXNzYWdlUXVldWUpIHtcbiAgICB0aGlzLmF0dGFjaG1lbnRDb25maWcgPSB7XG4gICAgICBxdWVyeVBhcmFtOiBmYWxzZSxcbiAgICAgIGZldGNoOiBxdWVyeSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25maWcubG9hZE1lc3NhZ2VRdWV1ZUF0dGFjaG1lbnRzKG1lc3NhZ2VRdWV1ZSwgcXVlcnkpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAocmVzcG9uc2UgPT4gKHtcbiAgICAgICAgICAgICAgZGF0YTogcmVzcG9uc2UuZGF0YS5tYXAodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgIHZhbHVlLnByZXR0eUZpbGVzaXplID0gdGhpcy5fcHJldHR5RmlsZXNpemUodmFsdWUuZmlsZXNpemUpO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgICAgfSksIHBhZ2luZzogcmVzcG9uc2UucGFnaW5nXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgICApO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLmRvd25sb2FkTWVzc2FnZVF1ZXVlQXR0YWNobWVudCkge1xuICAgICAgdGhpcy5hdHRhY2htZW50Q29uZmlnLnJvd0FjdGlvbnMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBjbGljazogKG1lc3NhZ2VBdHRhY2htZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jb25maWcuZG93bmxvYWRNZXNzYWdlUXVldWVBdHRhY2htZW50KG1lc3NhZ2VBdHRhY2htZW50LCB0aGlzLm1lc3NhZ2VRdWV1ZSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBsYWJlbDogJ0Rvd25sb2FkJyxcbiAgICAgICAgfVxuICAgICAgXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9wcmV0dHlGaWxlc2l6ZShieXRlcykge1xuICAgIGlmIChieXRlcyA9PT0gMCkgeyByZXR1cm4gJzAuMDAgQic7IH1cbiAgICBjb25zdCBlID0gTWF0aC5mbG9vcihNYXRoLmxvZyhieXRlcykgLyBNYXRoLmxvZygxMDI0KSk7XG4gICAgcmV0dXJuIChieXRlcyAvIE1hdGgucG93KDEwMjQsIGUpKS50b0ZpeGVkKDIpICsgJyAnICsgJyBLTUdUUCcuY2hhckF0KGUpICsgJ0InO1xuICB9XG59XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { __decorate, __metadata, __param } from "tslib";
2
- import { Component, Inject, ViewChild } from '@angular/core';
2
+ import { Component, Inject, Input, ViewChild } from '@angular/core';
3
3
  import { MatDialog } from '@angular/material/dialog';
4
4
  import { takeUntil, map, switchMap, tap } from 'rxjs/operators';
5
5
  import { Subject, of } from 'rxjs';
@@ -16,6 +16,7 @@ let QueuesComponent = class QueuesComponent {
16
16
  this._config = _config;
17
17
  this._dialog = _dialog;
18
18
  this.list = null;
19
+ this.query = {};
19
20
  this.config = null;
20
21
  this.messageQueueStates = {};
21
22
  this.MessageQueueState = MessageQueueState;
@@ -46,7 +47,7 @@ let QueuesComponent = class QueuesComponent {
46
47
  ],
47
48
  sort: { value: 'created_date', direction: 'desc' },
48
49
  fetch: query => {
49
- query = Object.assign(Object.assign({}, query), { messageQueueAttachmentCounts: true, emailMessageQueues: true, emailMessageQueueBodies: false, smsMessageQueues: true });
50
+ query = Object.assign(Object.assign(Object.assign({}, query), this.query), { messageQueueAttachmentCounts: true, emailMessageQueues: true, emailMessageQueueBodies: false, smsMessageQueues: true });
50
51
  return this._config.loadMessageQueues(query)
51
52
  .pipe(map(response => ({ data: response.data
52
53
  .map((messageQueue) => {
@@ -84,28 +85,30 @@ let QueuesComponent = class QueuesComponent {
84
85
  label: 'Cancel Queued',
85
86
  });
86
87
  }
87
- if (this._config.loadMessages) {
88
- this.config.filters.push({
89
- name: 'message_id',
90
- type: ItemType.Select,
91
- label: 'Message Type',
92
- values: (query) => {
93
- return this._config.loadMessages(query)
94
- .pipe(map((items) => {
95
- return items.map((item) => ({ name: item.name, value: item.id }));
96
- }));
97
- }
98
- });
99
- }
88
+ this.config.filters.push({
89
+ name: 'message_id',
90
+ type: ItemType.Select,
91
+ label: 'Message Type',
92
+ values: (query) => {
93
+ query = Object.assign(Object.assign({}, query), { limit: 50 });
94
+ return this._config.loadMessages(query)
95
+ .pipe(map((response) => {
96
+ return [
97
+ { value: null, name: 'All', },
98
+ ...response.data.map((item) => ({ name: item.name, value: item.id })),
99
+ ];
100
+ }));
101
+ }
102
+ });
100
103
  }
101
104
  open(messageQueue) {
102
- const dialogRef = this._dialog.open(QueueComponent, {
105
+ this._dialog.open(QueueComponent, {
103
106
  data: {
104
107
  messageQueue: messageQueue,
105
108
  },
106
109
  width: '85%'
107
- });
108
- dialogRef.afterClosed()
110
+ })
111
+ .afterClosed()
109
112
  .pipe(takeUntil(this._destroy$))
110
113
  .subscribe(() => {
111
114
  this.list.reload();
@@ -124,6 +127,10 @@ __decorate([
124
127
  ViewChild(FsListComponent, { static: true }),
125
128
  __metadata("design:type", FsListComponent)
126
129
  ], QueuesComponent.prototype, "list", void 0);
130
+ __decorate([
131
+ Input(),
132
+ __metadata("design:type", Object)
133
+ ], QueuesComponent.prototype, "query", void 0);
127
134
  QueuesComponent = __decorate([
128
135
  Component({
129
136
  selector: 'fs-app-message-queues',
@@ -134,4 +141,4 @@ QueuesComponent = __decorate([
134
141
  __metadata("design:paramtypes", [Object, MatDialog])
135
142
  ], QueuesComponent);
136
143
  export { QueuesComponent };
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmaXJlc3RpdGNoL2FwcC1tZXNzYWdlLyIsInNvdXJjZXMiOlsiYXBwL21vZHVsZXMvbWVzc2FnZS1xdWV1ZXMvY29tcG9uZW50cy9xdWV1ZXMvcXVldWVzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRW5DLE9BQU8sRUFBd0IsZUFBZSxFQUFnQixNQUFNLGtCQUFrQixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFTdkUsSUFBYSxlQUFlLEdBQTVCLE1BQWEsZUFBZTtJQVcxQixZQUN5QyxPQUEyQixFQUMxRCxPQUFrQjtRQURhLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBQzFELFlBQU8sR0FBUCxPQUFPLENBQVc7UUFWckIsU0FBSSxHQUFvQixJ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LFNBQVMsQ0FBQyxXQUFXLEVBQUU7YUFDcEIsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzFCO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQztDQUNGLENBQUE7OzRDQWhJSSxNQUFNLFNBQUMscUJBQXFCO1lBQ1osU0FBUzs7QUFWNUI7SUFEQyxTQUFTLENBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDOzhCQUNoQyxlQUFlOzZDQUFRO0FBSHpCLGVBQWU7SUFMM0IsU0FBUyxDQUFDO1FBQ1QsUUFBUSxFQUFFLHVCQUF1QjtRQUVqQyxnM0ZBQXNDOztLQUN2QyxDQUFDO0lBYUcsV0FBQSxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQTs2Q0FDYixTQUFTO0dBYmpCLGVBQWUsQ0E0STNCO1NBNUlZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyB0YWtlVW50aWwsIG1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdWJqZWN0LCBvZiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGc0xpc3RBY3Rpb25TZWxlY3RlZCwgRnNMaXN0Q29tcG9uZW50LCBGc0xpc3RDb25maWcgfSBmcm9tICdAZmlyZXN0aXRjaC9saXN0JztcbmltcG9ydCB7IEl0ZW1UeXBlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZmlsdGVyJztcbmltcG9ydCB7IFNlbGVjdGlvbkFjdGlvblR5cGUgfSBmcm9tICdAZmlyZXN0aXRjaC9zZWxlY3Rpb24nO1xuXG5pbXBvcnQgeyBRdWV1ZUNvbXBvbmVudCB9IGZyb20gJy4uL3F1ZXVlJztcbmltcG9ydCB7IE1lc3NhZ2VRdWV1ZVN0YXRlcyB9IGZyb20gJy4uLy4uL2NvbnN0cyc7XG5pbXBvcnQgeyBpbmRleE5hbWVWYWx1ZSB9IGZyb20gJy4uLy4uLy4uLy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgTWVzc2FnZVF1ZXVlU3RhdGUgfSBmcm9tICcuLi8uLi9lbnVtcy9tZXNzYWdlLXF1ZXVlLXN0YXRlLmVudW0nO1xuaW1wb3J0IHsgRlNfQVBQX01FU1NBR0VfQ09ORklHIH0gZnJvbSAnLi4vLi4vLi4vYXBwLW1lc3NhZ2UvaW5qZWN0b3JzJztcbmltcG9ydCB7IEZzQXBwTWVzc2FnZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2FwcC1tZXNzYWdlL2ludGVyZmFjZXMnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLWFwcC1tZXNzYWdlLXF1ZXVlcycsXG4gIHN0eWxlVXJsczogWycuL3F1ZXVlcy5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vcXVldWVzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBRdWV1ZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQFZpZXdDaGlsZChGc0xpc3RDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHB1YmxpYyBsaXN0OiBGc0xpc3RDb21wb25lbnQgPSBudWxsO1xuXG4gIHB1YmxpYyBjb25maWc6IEZzTGlzdENvbmZpZyA9IG51bGw7XG4gIHB1YmxpYyBtZXNzYWdlUXVldWVTdGF0ZXMgPSB7fTtcbiAgcHVibGljIE1lc3NhZ2VRdWV1ZVN0YXRlID0gTWVzc2FnZVF1ZXVlU3RhdGU7XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRlNfQVBQX01FU1NBR0VfQ09ORklHKSBwcml2YXRlIF9jb25maWc6IEZzQXBwTWVzc2FnZUNvbmZpZywgICAgXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXG4gICkgeyB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuXG4gICAgdGhpcy5tZXNzYWdlUXVldWVTdGF0ZXMgPSBpbmRleE5hbWVWYWx1ZShNZXNzYWdlUXVldWVTdGF0ZXMpO1xuXG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICBmaWx0ZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAna2V5d29yZCcsXG4gICAgICAgICAgdHlwZTogSXRlbVR5cGUuS2V5d29yZCxcbiAgICAgICAgICBsYWJlbDogJ1NlYXJjaCdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdzdGF0ZScsXG4gICAgICAgICAgdHlwZTogSXRlbVR5cGUuU2VsZWN0LFxuICAgICAgICAgIGxhYmVsOiAnU3RhdHVzJyxcbiAgICAgICAgICB2YWx1ZXM6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBNZXNzYWdlUXVldWVTdGF0ZXM7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2RhdGUnLFxuICAgICAgICAgIHR5cGU6IEl0ZW1UeXBlLkRhdGVSYW5nZSxcbiAgICAgICAgICBsYWJlbDogWydGcm9tIERhdGUnLCAnVG8gRGF0ZSddLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHNvcnQ6IHsgdmFsdWU6ICdjcmVhdGVkX2RhdGUnLCBkaXJlY3Rpb246ICdkZXNjJyB9LFxuICAgICAgZmV0Y2g6IHF1ZXJ5ID0+IHtcbiAgICAgICAgcXVlcnkgPSB7XG4gICAgICAgICAgLi4ucXVlcnksXG4gICAgICAgICAgbWVzc2FnZVF1ZXVlQXR0YWNobWVudENvdW50czogdHJ1ZSxcbiAgICAgICAgICBlbWFpbE1lc3NhZ2VRdWV1ZXM6IHRydWUsXG4gICAgICAgICAgZW1haWxNZXNzYWdlUXVldWVCb2RpZXM6IGZhbHNlLFxuICAgICAgICAgIHNtc01lc3NhZ2VRdWV1ZXM6IHRydWUsXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5sb2FkTWVzc2FnZVF1ZXVlcyhxdWVyeSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcChyZXNwb25zZSA9PiAoeyBkYXRhOiByZXNwb25zZS5kYXRhXG4gICAgICAgICAgICAgIC5tYXAoKG1lc3NhZ2VRdWV1ZSkgPT4geyAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIC4uLm1lc3NhZ2VRdWV1ZSxcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2VRdWV1ZVJlY2lwaWVudHM6IG1lc3NhZ2VRdWV1ZS5tZXNzYWdlUXVldWVSZWNpcGllbnRzXG4gICAgICAgICAgICAgICAgICAucmVkdWNlKChhY2N1bSwgbWVzc2FnZVF1ZXVlUmVjaXBpZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGFjY3VtW21lc3NhZ2VRdWV1ZVJlY2lwaWVudC5yZWNpcGllbnRdID0gbWVzc2FnZVF1ZXVlUmVjaXBpZW50LnN0YXRlO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2N1bTtcbiAgICAgICAgICAgICAgICAgIH0sIHt9KSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9KSwgcGFnaW5nOiByZXNwb25zZS5wYWdpbmcgfSkpXG4gICAgICAgICAgKVxuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBpZiBhbnkgYnVsayBhY3Rpb25zIGFkZCB0aGUgc2VsZWN0aW9uIG9iamVjdCB0byBjb25maWcuXG4gICAgaWYgKHRoaXMuX2NvbmZpZy5jYW5jZWxNZXNzYWdlUXVldWVzKSB7XG4gICAgICB0aGlzLmNvbmZpZy5zZWxlY3Rpb24gPSB7XG4gICAgICAgIHNlbGVjdEFsbDogZmFsc2UsXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgXSxcbiAgICAgICAgYWN0aW9uU2VsZWN0ZWQ6IChhY3Rpb246IEZzTGlzdEFjdGlvblNlbGVjdGVkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG9mKHRydWUpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aW9uLmFjdGlvbi5uYW1lID09PSAnY2FuY2VsJykge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5jYW5jZWxNZXNzYWdlUXVldWVzKGFjdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3QucmVsb2FkKCk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBhZGQgZWFjaCBpbmRpdmlkdWFsIGJ1bGsgYWN0aW9uIHRvIHNlbGVjdCBhY3Rpb25zXG4gICAgaWYgKHRoaXMuX2NvbmZpZy5jYW5jZWxNZXNzYWdlUXVldWVzKSB7XG4gICAgICB0aGlzLmNvbmZpZy5zZWxlY3Rpb24uYWN0aW9ucy5wdXNoKHtcbiAgICAgICAgdHlwZTogU2VsZWN0aW9uQWN0aW9uVHlwZS5BY3Rpb24sXG4gICAgICAgIG5hbWU6ICdjYW5jZWwnLFxuICAgICAgICBsYWJlbDogJ0NhbmNlbCBRdWV1ZWQnLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2NvbmZpZy5sb2FkTWVzc2FnZXMpIHtcbiAgICAgIHRoaXMuY29uZmlnLmZpbHRlcnMucHVzaCh7XG4gICAgICAgIG5hbWU6ICdtZXNzYWdlX2lkJyxcbiAgICAgICAgdHlwZTogSXRlbVR5cGUuU2VsZWN0LFxuICAgICAgICBsYWJlbDogJ01lc3NhZ2UgVHlwZScsXG4gICAgICAgIHZhbHVlczogKHF1ZXJ5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5sb2FkTWVzc2FnZXMocXVlcnkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgbWFwKChpdGVtczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1zLm1hcCgoaXRlbSkgPT4gKHsgbmFtZTogaXRlbS5uYW1lLCB2YWx1ZTogaXRlbS5pZCB9KSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvcGVuKG1lc3NhZ2VRdWV1ZSkge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuX2RpYWxvZy5vcGVuKFF1ZXVlQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIG1lc3NhZ2VRdWV1ZTogbWVzc2FnZVF1ZXVlLFxuICAgICAgfSxcbiAgICAgIHdpZHRoOiAnODUlJ1xuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmaXJlc3RpdGNoL2FwcC1tZXNzYWdlLyIsInNvdXJjZXMiOlsiYXBwL21vZHVsZXMvbWVzc2FnZS1xdWV1ZXMvY29tcG9uZW50cy9xdWV1ZXMvcXVldWVzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVuQyxPQUFPLEVBQXdCLGVBQWUsRUFBZ0IsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBU3ZFLElBQWEsZUFBZSxHQUE1QixNQUFhLGVBQWU7SUFhMUIsWUFDeUMsT0FBMkIsRUFDMUQsT0FBa0I7UUFEYSxZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMxRCxZQUFPLEdBQVAsT0FBTyxDQUFXO1FBWnJCLFNB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QUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNoQyxJQUFJLEVBQUU7Z0JBQ0osWUFBWSxFQUFFLFlBQVk7YUFDM0I7WUFDRCxLQUFLLEVBQUUsS0FBSztTQUNiLENBQUM7YUFDQyxXQUFXLEVBQUU7YUFDYixJQUFJLENBQ0gsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUI7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0NBQ0YsQ0FBQTs7NENBcklJLE1BQU0sU0FBQyxxQkFBcUI7WUFDWixTQUFTOztBQVo1QjtJQURDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7OEJBQ2hDLGVBQWU7NkNBQVE7QUFFM0I7SUFBUixLQUFLLEVBQUU7OzhDQUFtQjtBQUxoQixlQUFlO0lBTDNCLFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSx1QkFBdUI7UUFFakMsZzNGQUFzQzs7S0FDdkMsQ0FBQztJQWVHLFdBQUEsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUE7NkNBQ2IsU0FBUztHQWZqQixlQUFlLENBbUozQjtTQW5KWSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IHRha2VVbnRpbCwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YmplY3QsIG9mIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZzTGlzdEFjdGlvblNlbGVjdGVkLCBGc0xpc3RDb21wb25lbnQsIEZzTGlzdENvbmZpZyB9IGZyb20gJ0BmaXJlc3RpdGNoL2xpc3QnO1xuaW1wb3J0IHsgSXRlbVR5cGUgfSBmcm9tICdAZmlyZXN0aXRjaC9maWx0ZXInO1xuaW1wb3J0IHsgU2VsZWN0aW9uQWN0aW9uVHlwZSB9IGZyb20gJ0BmaXJlc3RpdGNoL3NlbGVjdGlvbic7XG5cbmltcG9ydCB7IFF1ZXVlQ29tcG9uZW50IH0gZnJvbSAnLi4vcXVldWUnO1xuaW1wb3J0IHsgTWVzc2FnZVF1ZXVlU3RhdGVzIH0gZnJvbSAnLi4vLi4vY29uc3RzJztcbmltcG9ydCB7IGluZGV4TmFtZVZhbHVlIH0gZnJvbSAnLi4vLi4vLi4vLi4vaGVscGVycyc7XG5pbXBvcnQgeyBNZXNzYWdlUXVldWVTdGF0ZSB9IGZyb20gJy4uLy4uL2VudW1zL21lc3NhZ2UtcXVldWUtc3RhdGUuZW51bSc7XG5pbXBvcnQgeyBGU19BUFBfTUVTU0FHRV9DT05GSUcgfSBmcm9tICcuLi8uLi8uLi9hcHAtbWVzc2FnZS9pbmplY3RvcnMnO1xuaW1wb3J0IHsgRnNBcHBNZXNzYWdlQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vYXBwLW1lc3NhZ2UvaW50ZXJmYWNlcyc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtYXBwLW1lc3NhZ2UtcXVldWVzJyxcbiAgc3R5bGVVcmxzOiBbJy4vcXVldWVzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWV1ZXMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXVlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBAVmlld0NoaWxkKEZzTGlzdENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIGxpc3Q6IEZzTGlzdENvbXBvbmVudCA9IG51bGw7XG5cbiAgQElucHV0KCkgcHVibGljIHF1ZXJ5ID0ge307XG5cbiAgcHVibGljIGNvbmZpZzogRnNMaXN0Q29uZmlnID0gbnVsbDtcbiAgcHVibGljIG1lc3NhZ2VRdWV1ZVN0YXRlcyA9IHt9O1xuICBwdWJsaWMgTWVzc2FnZVF1ZXVlU3RhdGUgPSBNZXNzYWdlUXVldWVTdGF0ZTtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChGU19BUFBfTUVTU0FHRV9DT05GSUcpIHByaXZhdGUgX2NvbmZpZzogRnNBcHBNZXNzYWdlQ29uZmlnLCAgICBcbiAgICBwcml2YXRlIF9kaWFsb2c6IE1hdERpYWxvZyxcbiAgKSB7IH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5tZXNzYWdlUXVldWVTdGF0ZXMgPSBpbmRleE5hbWVWYWx1ZShNZXNzYWdlUXVldWVTdGF0ZXMpO1xuXG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICBmaWx0ZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAna2V5d29yZCcsXG4gICAgICAgICAgdHlwZTogSXRlbVR5cGUuS2V5d29yZCxcbiAgICAgICAgICBsYWJlbDogJ1NlYXJjaCdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdzdGF0ZScsXG4gICAgICAgICAgdHlwZTogSXRlbVR5cGUuU2VsZWN0LFxuICAgICAgICAgIGxhYmVsOiAnU3RhdHVzJyxcbiAgICAgICAgICB2YWx1ZXM6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBNZXNzYWdlUXVldWVTdGF0ZXM7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2RhdGUnLFxuICAgICAgICAgIHR5cGU6IEl0ZW1UeXBlLkRhdGVSYW5nZSxcbiAgICAgICAgICBsYWJlbDogWydGcm9tIERhdGUnLCAnVG8gRGF0ZSddLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHNvcnQ6IHsgdmFsdWU6ICdjcmVhdGVkX2RhdGUnLCBkaXJlY3Rpb246ICdkZXNjJyB9LFxuICAgICAgZmV0Y2g6IHF1ZXJ5ID0+IHtcbiAgICAgICAgcXVlcnkgPSB7XG4gICAgICAgICAgLi4ucXVlcnksXG4gICAgICAgICAgLi4udGhpcy5xdWVyeSxcbiAgICAgICAgICBtZXNzYWdlUXVldWVBdHRhY2htZW50Q291bnRzOiB0cnVlLFxuICAgICAgICAgIGVtYWlsTWVzc2FnZVF1ZXVlczogdHJ1ZSxcbiAgICAgICAgICBlbWFpbE1lc3NhZ2VRdWV1ZUJvZGllczogZmFsc2UsXG4gICAgICAgICAgc21zTWVzc2FnZVF1ZXVlczogdHJ1ZSxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnLmxvYWRNZXNzYWdlUXVldWVzKHF1ZXJ5KVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKHJlc3BvbnNlID0+ICh7IGRhdGE6IHJlc3BvbnNlLmRhdGFcbiAgICAgICAgICAgICAgLm1hcCgobWVzc2FnZVF1ZXVlKSA9PiB7ICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgLi4ubWVzc2FnZVF1ZXVlLFxuICAgICAgICAgICAgICAgICAgbWVzc2FnZVF1ZXVlUmVjaXBpZW50czogbWVzc2FnZVF1ZXVlLm1lc3NhZ2VRdWV1ZVJlY2lwaWVudHNcbiAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGFjY3VtLCBtZXNzYWdlUXVldWVSZWNpcGllbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYWNjdW1bbWVzc2FnZVF1ZXVlUmVjaXBpZW50LnJlY2lwaWVudF0gPSBtZXNzYWdlUXVldWVSZWNpcGllbnQuc3RhdGU7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjY3VtO1xuICAgICAgICAgICAgICAgICAgfSwge30pLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH0pLCBwYWdpbmc6IHJlc3BvbnNlLnBhZ2luZyB9KSlcbiAgICAgICAgICApXG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIGlmIGFueSBidWxrIGFjdGlvbnMgYWRkIHRoZSBzZWxlY3Rpb24gb2JqZWN0IHRvIGNvbmZpZy5cbiAgICBpZiAodGhpcy5fY29uZmlnLmNhbmNlbE1lc3NhZ2VRdWV1ZXMpIHtcbiAgICAgIHRoaXMuY29uZmlnLnNlbGVjdGlvbiA9IHtcbiAgICAgICAgc2VsZWN0QWxsOiBmYWxzZSxcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICBdLFxuICAgICAgICBhY3Rpb25TZWxlY3RlZDogKGFjdGlvbjogRnNMaXN0QWN0aW9uU2VsZWN0ZWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gb2YodHJ1ZSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhY3Rpb24uYWN0aW9uLm5hbWUgPT09ICdjYW5jZWwnKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnLmNhbmNlbE1lc3NhZ2VRdWV1ZXMoYWN0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIGFkZCBlYWNoIGluZGl2aWR1YWwgYnVsayBhY3Rpb24gdG8gc2VsZWN0IGFjdGlvbnNcbiAgICBpZiAodGhpcy5fY29uZmlnLmNhbmNlbE1lc3NhZ2VRdWV1ZXMpIHtcbiAgICAgIHRoaXMuY29uZmlnLnNlbGVjdGlvbi5hY3Rpb25zLnB1c2goe1xuICAgICAgICB0eXBlOiBTZWxlY3Rpb25BY3Rpb25UeXBlLkFjdGlvbixcbiAgICAgICAgbmFtZTogJ2NhbmNlbCcsXG4gICAgICAgIGxhYmVsOiAnQ2FuY2VsIFF1ZXVlZCcsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmZpZy5maWx0ZXJzLnB1c2goe1xuICAgICAgbmFtZTogJ21lc3NhZ2VfaWQnLFxuICAgICAgdHlwZTogSXRlbVR5cGUuU2VsZWN0LFxuICAgICAgbGFiZWw6ICdNZXNzYWdlIFR5cGUnLFxuICAgICAgdmFsdWVzOiAocXVlcnkpID0+IHtcbiAgICAgICAgcXVlcnkgPSB7IFxuICAgICAgICAgIC4uLnF1ZXJ5LFxuICAgICAgICAgIGxpbWl0OiA1MCxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnLmxvYWRNZXNzYWdlcyhxdWVyeSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICB7IHZhbHVlOiBudWxsLCBuYW1lOiAnQWxsJywgfSxcbiAgICAgICAgICAgICAgICAuLi5yZXNwb25zZS5kYXRhLm1hcCgoaXRlbSkgPT4gKHsgbmFtZTogaXRlbS5uYW1lLCB2YWx1ZTogaXRlbS5pZCB9KSksXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuKG1lc3NhZ2VRdWV1ZSkge1xuICAgIHRoaXMuX2RpYWxvZy5vcGVuKFF1ZXVlQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIG1lc3NhZ2VRdWV1ZTogbWVzc2FnZVF1ZXVlLFxuICAgICAgfSxcbiAgICAgIHdpZHRoOiAnODUlJ1xuICAgIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmxpc3QucmVsb2FkKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19